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+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL3JlbW90ZV9jb250cm9sbGVycy54bWwgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svdjRsL3JlbW90ZV9jb250cm9sbGVycy54bWwKaW5kZXggM2MzYjY2Ny4uMTYwZTQ2NCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3Y0bC9yZW1vdGVfY29udHJvbGxlcnMueG1sCisrKyBiL0RvY3VtZW50YXRpb24vRG9jQm9vay92NGwvcmVtb3RlX2NvbnRyb2xsZXJzLnhtbApAQCAtMTMzLDcgKzEzMyw3IEBACiA8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX0xFRlQ8L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PkxlZnQga2V5PC9lbnRyeT48ZW50cnk+TEVGVDwvZW50cnk+PC9yb3c+CiA8cm93PjxlbnRyeT48Y29uc3RhbnQ+S0VZX1JJR0hUPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5SaWdodCBrZXk8L2VudHJ5PjxlbnRyeT5SSUdIVDwvZW50cnk+PC9yb3c+CiAKLTxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5NaXNjZWxhbmVvdXMga2V5czwvZW1waGFzaXM+PC9lbnRyeT48L3Jvdz4KKzxyb3c+PGVudHJ5PjxlbXBoYXNpcyByb2xlPSJib2xkIj5NaXNjZWxsYW5lb3VzIGtleXM8L2VtcGhhc2lzPjwvZW50cnk+PC9yb3c+CiAKIDxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRE9UPC9jb25zdGFudD48L2VudHJ5PjxlbnRyeT5SZXR1cm4gYSBkb3Q8L2VudHJ5PjxlbnRyeT4uPC9lbnRyeT48L3Jvdz4KIDxyb3c+PGVudHJ5Pjxjb25zdGFudD5LRVlfRk48L2NvbnN0YW50PjwvZW50cnk+PGVudHJ5PlNlbGVjdCBhIGZ1bmN0aW9uPC9lbnRyeT48ZW50cnk+RlVOQ1RJT048L2VudHJ5Pjwvcm93PgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIudG1wbCBiL0RvY3VtZW50YXRpb24vRG9jQm9vay93cml0aW5nLWFuLWFsc2EtZHJpdmVyLnRtcGwKaW5kZXggMGJhMTQ5ZC4uNThjZWQyMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL3dyaXRpbmctYW4tYWxzYS1kcml2ZXIudG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svd3JpdGluZy1hbi1hbHNhLWRyaXZlci50bXBsCkBAIC00Nzg0LDcgKzQ3ODQsNyBAQAogICAgICAgICBGTSByZWdpc3RlcnMgY2FuIGJlIGRpcmVjdGx5IGFjY2Vzc2VkIHRocm91Z2ggdGhlIGRpcmVjdC1GTSBBUEksCiAgICAgICBkZWZpbmVkIGluIDxmaWxlbmFtZT4mbHQ7c291bmQvYXNvdW5kX2ZtLmgmZ3Q7PC9maWxlbmFtZT4uIEluCiAgICAgICBBTFNBIG5hdGl2ZSBtb2RlLCBGTSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIHRocm91Z2gKLSAgICAgIHRoZSBIYXJkd2FyZS1EZXBlbmRhbnQgRGV2aWNlIGRpcmVjdC1GTSBleHRlbnNpb24gQVBJLCB3aGVyZWFzIGluCisgICAgICB0aGUgSGFyZHdhcmUtRGVwZW5kZW50IERldmljZSBkaXJlY3QtRk0gZXh0ZW5zaW9uIEFQSSwgd2hlcmVhcyBpbgogICAgICAgT1NTIGNvbXBhdGlibGUgbW9kZSwgRk0gcmVnaXN0ZXJzIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHRoZSBPU1MKICAgICAgIGRpcmVjdC1GTSBjb21wYXRpYmxlIEFQSSBpbiA8ZmlsZW5hbWU+L2Rldi9kbWZtWDwvZmlsZW5hbWU+IGRldmljZS4gCiAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1BDSS9NU0ktSE9XVE8udHh0IGIvRG9jdW1lbnRhdGlvbi9QQ0kvTVNJLUhPV1RPLnR4dAppbmRleCBkY2Y3YWNjLi4zZjVlMGIwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1BDSS9NU0ktSE9XVE8udHh0CisrKyBiL0RvY3VtZW50YXRpb24vUENJL01TSS1IT1dUTy50eHQKQEAgLTI1Myw4ICsyNTMsOCBAQAogbXVzdCBiZSBhIHBvd2VyIG9mIHR3bykuICBJbiBhZGRpdGlvbiwgdGhlIE1TSSBpbnRlcnJ1cHQgdmVjdG9ycyBtdXN0CiBiZSBhbGxvY2F0ZWQgY29uc2VjdXRpdmVseSwgc28gdGhlIHN5c3RlbSBtYXkgbm90IGJlIGFibGUgdG8gYWxsb2NhdGUKIGFzIG1hbnkgdmVjdG9ycyBmb3IgTVNJIGFzIGl0IGNvdWxkIGZvciBNU0ktWC4gIE9uIHNvbWUgcGxhdGZvcm1zLCBNU0kKLWludGVycnVwdHMgbXVzdCBhbGwgYmUgdGFyZ2V0dGVkIGF0IHRoZSBzYW1lIHNldCBvZiBDUFVzIHdoZXJlYXMgTVNJLVgKLWludGVycnVwdHMgY2FuIGFsbCBiZSB0YXJnZXR0ZWQgYXQgZGlmZmVyZW50IENQVXMuCitpbnRlcnJ1cHRzIG11c3QgYWxsIGJlIHRhcmdldGVkIGF0IHRoZSBzYW1lIHNldCBvZiBDUFVzIHdoZXJlYXMgTVNJLVgKK2ludGVycnVwdHMgY2FuIGFsbCBiZSB0YXJnZXRlZCBhdCBkaWZmZXJlbnQgQ1BVcy4KIAogNC41LjIgU3BpbmxvY2tzCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU2VjdXJpdHlCdWdzIGIvRG9jdW1lbnRhdGlvbi9TZWN1cml0eUJ1Z3MKaW5kZXggMjZjM2IzNi4uYTY2MGQ0OSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9TZWN1cml0eUJ1Z3MKKysrIGIvRG9jdW1lbnRhdGlvbi9TZWN1cml0eUJ1Z3MKQEAgLTI4LDcgKzI4LDcgQEAKIEEgZGlzY2xvc3VyZSBkYXRlIGlzIG5lZ290aWF0ZWQgYnkgdGhlIHNlY3VyaXR5IHRlYW0gd29ya2luZyB3aXRoIHRoZQogYnVnIHN1Ym1pdHRlciBhcyB3ZWxsIGFzIHZlbmRvcnMuICBIb3dldmVyLCB0aGUga2VybmVsIHNlY3VyaXR5IHRlYW0KIGhvbGRzIHRoZSBmaW5hbCBzYXkgd2hlbiBzZXR0aW5nIGEgZGlzY2xvc3VyZSBkYXRlLiAgVGhlIHRpbWVmcmFtZSBmb3IKLWRpc2Nsb3N1cmUgaXMgZnJvbSBpbW1lZGlhdGUgKGVzcC4gaWYgaXQncyBhbHJlYWR5IHB1YmxpY2FsbHkga25vd24pCitkaXNjbG9zdXJlIGlzIGZyb20gaW1tZWRpYXRlIChlc3AuIGlmIGl0J3MgYWxyZWFkeSBwdWJsaWNseSBrbm93bikKIHRvIGEgZmV3IHdlZWtzLiAgQXMgYSBiYXNpYyBkZWZhdWx0IHBvbGljeSwgd2UgZXhwZWN0IHJlcG9ydCBkYXRlIHRvCiBkaXNjbG9zdXJlIGRhdGUgdG8gYmUgb24gdGhlIG9yZGVyIG9mIDcgZGF5cy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycyBiL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ0RyaXZlcnMKaW5kZXggMzhkMmFhYi4uMzE5YmFhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nRHJpdmVycworKysgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdEcml2ZXJzCkBAIC0xMDEsNyArMTAxLDcgQEAKIAkJY29tcGxldGUgb3ZlcnZpZXcgb2YgdGhlIHBvd2VyIG1hbmFnZW1lbnQgaXNzdWVzIHJlbGF0ZWQgdG8KIAkJZHJpdmVycyBzZWUgRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dCAuCiAKLUNvbnRyb2w6CUluIGdlbmVyYWwgaWYgdGhlcmUgaXMgYWN0aXZlIG1haW50YWluYW5jZSBvZiBhIGRyaXZlciBieQorQ29udHJvbDoJSW4gZ2VuZXJhbCBpZiB0aGVyZSBpcyBhY3RpdmUgbWFpbnRlbmFuY2Ugb2YgYSBkcml2ZXIgYnkKIAkJdGhlIGF1dGhvciB0aGVuIHBhdGNoZXMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZW0gdW5sZXNzCiAJCXRoZXkgYXJlIHRvdGFsbHkgb2J2aW91cyBhbmQgd2l0aG91dCBuZWVkIG9mIGNoZWNraW5nLgogCQlJZiB5b3Ugd2FudCB0byBiZSB0aGUgY29udGFjdCBhbmQgdXBkYXRlIHBvaW50IGZvciB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMgYi9Eb2N1bWVudGF0aW9uL1N1Ym1pdHRpbmdQYXRjaGVzCmluZGV4IDY4OWUyMzcuLmU0MzljZDAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vU3VibWl0dGluZ1BhdGNoZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9TdWJtaXR0aW5nUGF0Y2hlcwpAQCAtNzI5LDcgKzcyOSw3IEBACiAgIDxodHRwOi8vbGttbC5vcmcvbGttbC8yMDA1LzQvNy8xODM+CiAKIEFuZGkgS2xlZW4sICJPbiBzdWJtaXR0aW5nIGtlcm5lbCBwYXRjaGVzIgotICBTb21lIHN0cmF0ZWdpZXMgdG8gZ2V0IGRpZmZpY3VsdCBvciBjb250cm92ZXJzYWwgY2hhbmdlcyBpbi4KKyAgU29tZSBzdHJhdGVnaWVzIHRvIGdldCBkaWZmaWN1bHQgb3IgY29udHJvdmVyc2lhbCBjaGFuZ2VzIGluLgogICBodHRwOi8vaGFsb2JhdGVzLmRlL29uLXN1Ym1pdHRpbmctcGF0Y2hlcy5wZGYKIAogLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYXJtL0lYUDR4eCBiL0RvY3VtZW50YXRpb24vYXJtL0lYUDR4eAppbmRleCAxMzNjNWZhLi43YjkzNTFmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2FybS9JWFA0eHgKKysrIGIvRG9jdW1lbnRhdGlvbi9hcm0vSVhQNHh4CkBAIC0zNiw3ICszNiw3IEBACiAtIFRpbWVycyAod2F0Y2hkb2csIE9TKQogCiBUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgdGhlIGNoaXBzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IExpbnV4IGFuZAotcmVxdWlyZSB0aGUgdXNlIG9mIEludGVsJ3MgcHJvcGlldGFyeSBDU1Igc29mdGFyZToKK3JlcXVpcmUgdGhlIHVzZSBvZiBJbnRlbCdzIHByb3ByaWV0YXJ5IENTUiBzb2Z0YXJlOgogCiAtIFVTQiBkZXZpY2UgaW50ZXJmYWNlCiAtIE5ldHdvcmsgaW50ZXJmYWNlcyAoSFNTLCBVdG9waWEsIE5QRXMsIGV0YykKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogICAgaHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vZGVzaWduL25ldHdvcmsvcHJvZHVjdHMvbnBmYW1pbHkvaXhwNDI1Lmh0bSAgICAKIAotRE8gTk9UIFBPU1QgUVVFU1RJT05TIFRPIFRIRSBMSU5VWCBNQUlMSU5HIExJU1RTIFJFR0FSRElORyBUSEUgUFJPUElFVEFSWQorRE8gTk9UIFBPU1QgUVVFU1RJT05TIFRPIFRIRSBMSU5VWCBNQUlMSU5HIExJU1RTIFJFR0FSRElORyBUSEUgUFJPUFJJRVRBUlkKIFNPRlRXQVJFLgogCiBUaGVyZSBhcmUgc2V2ZXJhbCB3ZWJzaXRlcyB0aGF0IHByb3ZpZGUgZGlyZWN0aW9ucy9wb2ludGVycyBvbiB1c2luZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1N1c3BlbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy1TM0MyNFhYL1N1c3BlbmQudHh0CmluZGV4IDdlZGQwZTIuLjFjYTYzYjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmctUzNDMjRYWC9TdXNwZW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nLVMzQzI0WFgvU3VzcGVuZC50eHQKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgIEFsbG93cyB0aGUgZW50aXJlIG1lbW9yeSB0byBiZSBjaGVja3N1bW1lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZQogICAgIHN1c3BlbmQgdG8gc2VlIGlmIHRoZXJlIGhhcyBiZWVuIGFueSBjb3JydXB0aW9uIG9mIHRoZSBjb250ZW50cy4KIAotICAgIE5vdGUsIHRoZSB0aW1lIHRvIGNhbGN1bGF0ZSB0aGUgQ1JDIGlzIGRlcGVuZGFudCBvbiB0aGUgQ1BVIHNwZWVkCisgICAgTm90ZSwgdGhlIHRpbWUgdG8gY2FsY3VsYXRlIHRoZSBDUkMgaXMgZGVwZW5kZW50IG9uIHRoZSBDUFUgc3BlZWQKICAgICBhbmQgdGhlIHNpemUgb2YgbWVtb3J5LiBGb3IgYW4gNjRNYnl0ZSBSQU0gYXJlYSBvbiBhbiAyMDBNSHoKICAgICBTM0MyNDEwLCB0aGlzIGNhbiB0YWtlIGFwcHJveGltYXRlbHkgNCBzZWNvbmRzIHRvIGNvbXBsZXRlLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nL0dQSU8udHh0IGIvRG9jdW1lbnRhdGlvbi9hcm0vU2Ftc3VuZy9HUElPLnR4dAppbmRleCAwNTg1MGM2Li41MTNmMjU2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2FybS9TYW1zdW5nL0dQSU8udHh0CisrKyBiL0RvY3VtZW50YXRpb24vYXJtL1NhbXN1bmcvR1BJTy50eHQKQEAgLTUsNyArNSw3IEBACiAtLS0tLS0tLS0tLS0KIAogVGhpcyBvdXRsaW5lcyB0aGUgU2Ftc3VuZyBHUElPIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgYXJjaGl0ZWN0dXJlCi1zcGVjZmljIGNhbGxzIHByb3ZpZGVkIGFsb25naXNkZSB0aGUgZHJpdmVycy9ncGlvIGNvcmUuCitzcGVjaWZpYyBjYWxscyBwcm92aWRlZCBhbG9uZ2lzZGUgdGhlIGRyaXZlcnMvZ3BpbyBjb3JlLgogCiAKIFMzQzI0WFggKExlZ2FjeSkKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dCBiL0RvY3VtZW50YXRpb24vYmxvY2svYmlvZG9jLnR4dAppbmRleCAyYTdiMzhjLi5jNmQ4NGNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2Jsb2NrL2Jpb2RvYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9ibG9jay9iaW9kb2MudHh0CkBAIC00OTcsNyArNDk3LDcgQEAKIGVudHJpZXMgd2l0aCB0aGVpciBjb3JyZXNwb25kaW5nIGRtYSBhZGRyZXNzIG1hcHBpbmdzIGZpbGxlZCBpbiBhdCB0aGUKIGFwcHJvcHJpYXRlIHRpbWUuIEFzIGFuIG9wdGltaXphdGlvbiwgY29udGlndW91cyBwaHlzaWNhbCBwYWdlcyBjYW4gYmUKIGNvdmVyZWQgYnkgYSBzaW5nbGUgZW50cnkgd2hlcmUgPHBhZ2U+IHJlZmVycyB0byB0aGUgZmlyc3QgcGFnZSBhbmQgPGxlbj4KLWNvdmVycyB0aGUgcmFuZ2Ugb2YgcGFnZXMgKHVwdG8gMTYgY29udGlndW91cyBwYWdlcyBjb3VsZCBiZSBjb3ZlcmVkIHRoaXMKK2NvdmVycyB0aGUgcmFuZ2Ugb2YgcGFnZXMgKHVwIHRvIDE2IGNvbnRpZ3VvdXMgcGFnZXMgY291bGQgYmUgY292ZXJlZCB0aGlzCiB3YXkpLiBUaGVyZSBpcyBhIGhlbHBlciByb3V0aW5lIChibGtfcnFfbWFwX3NnKSB3aGljaCBkcml2ZXJzIGNhbiB1c2UgdG8gYnVpbGQKIHRoZSBzZyBsaXN0LgogCkBAIC01NjUsNyArNTY1LDcgQEAKIAkuCiAJaW50IHRhZzsJLyogY29tbWFuZCB0YWcgYXNzb2NpYXRlZCB3aXRoIHJlcXVlc3QgKi8KIAl2b2lkICpzcGVjaWFsOyAgLyogc2FtZSBhcyBiZWZvcmUgKi8KLQljaGFyICpidWZmZXI7ICAgLyogdmFsaWQgb25seSBmb3IgbG93IG1lbW9yeSBidWZmZXJzIHVwdG8KKwljaGFyICpidWZmZXI7ICAgLyogdmFsaWQgb25seSBmb3IgbG93IG1lbW9yeSBidWZmZXJzIHVwIHRvCiAJCQkgY3VycmVudF9ucl9zZWN0b3JzICovCiAJLgogCS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY3B1LWhvdHBsdWcudHh0IGIvRG9jdW1lbnRhdGlvbi9jcHUtaG90cGx1Zy50eHQKaW5kZXggNDVkNWEyMS4uYTIwYmZkNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9jcHUtaG90cGx1Zy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9jcHUtaG90cGx1Zy50eHQKQEAgLTE5Niw3ICsxOTYsNyBAQAogCSNUbyBkaXNwbGF5IHRoZSBjdXJyZW50IGNwdSBzdGF0ZS4KIAkjY2F0IC9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdVgvb25saW5lCiAKLVE6IFdoeSBjYW50IGkgcmVtb3ZlIENQVTAgb24gc29tZSBzeXN0ZW1zPworUTogV2h5IGNhbid0IGkgcmVtb3ZlIENQVTAgb24gc29tZSBzeXN0ZW1zPwogQTogU29tZSBhcmNoaXRlY3R1cmVzIG1heSBoYXZlIHNvbWUgc3BlY2lhbCBkZXBlbmRlbmN5IG9uIGEgY2VydGFpbiBDUFUuCiAKIEZvciBlLmcgaW4gSUE2NCBwbGF0Zm9ybXMgd2UgaGF2ZSBhYmlsaXR5IHRvIHNlbnQgcGxhdGZvcm0gaW50ZXJydXB0cyB0byB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGVsbF9yYnUudHh0IGIvRG9jdW1lbnRhdGlvbi9kZWxsX3JidS50eHQKaW5kZXggMTUxNzQ5OC4uZDI2MmUyMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZWxsX3JidS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9kZWxsX3JidS50eHQKQEAgLTYyLDcgKzYyLDcgQEAKIGZpbGUuCiBUaGlzIGZpbGUgaXMgdGhlbiBjb3BpZWQgdG8gL3N5cy9jbGFzcy9maXJtd2FyZS9kZWxsX3JidS9kYXRhLgogT25jZSB0aGlzIGZpbGUgZ2V0cyB0byB0aGUgZHJpdmVyLCB0aGUgZHJpdmVyIGV4dHJhY3RzIHBhY2tldF9zaXplIGRhdGEgZnJvbQotdGhlIGZpbGUgYW5kIHNwcmVhZHMgaXQgYWNjcm9zcyB0aGUgcGh5c2ljYWwgbWVtb3J5IGluIGNvbnRpZ3VvdXMgcGFja2V0X3NpemVkCit0aGUgZmlsZSBhbmQgc3ByZWFkcyBpdCBhY3Jvc3MgdGhlIHBoeXNpY2FsIG1lbW9yeSBpbiBjb250aWd1b3VzIHBhY2tldF9zaXplZAogc3BhY2UuCiBUaGlzIG1ldGhvZCBtYWtlcyBzdXJlIHRoYXQgYWxsIHRoZSBwYWNrZXRzIGdldCB0byB0aGUgZHJpdmVyIGluIGEgc2luZ2xlIG9wZXJhdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2UtbWFwcGVyL2RtLXNlcnZpY2UtdGltZS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tc2VydmljZS10aW1lLnR4dAppbmRleCA3ZDAwNjY4Li5mYjFkNGEwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tc2VydmljZS10aW1lLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZS1tYXBwZXIvZG0tc2VydmljZS10aW1lLnR4dApAQCAtMzcsNyArMzcsNyBAQAogPT09PT09PT09CiAKIGRtLXNlcnZpY2UtdGltZSBhZGRzIHRoZSBJL08gc2l6ZSB0byAnaW4tZmxpZ2h0LXNpemUnIHdoZW4gdGhlIEkvTyBpcwotZGlzcGF0Y2hlZCBhbmQgc3Vic3RyYWN0cyB3aGVuIGNvbXBsZXRlZC4KK2Rpc3BhdGNoZWQgYW5kIHN1YnRyYWN0cyB3aGVuIGNvbXBsZXRlZC4KIEJhc2ljYWxseSwgZG0tc2VydmljZS10aW1lIHNlbGVjdHMgYSBwYXRoIGhhdmluZyBtaW5pbXVtIHNlcnZpY2UgdGltZQogd2hpY2ggaXMgY2FsY3VsYXRlZCBieToKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ZiL3NtNTAxZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2ZiL3NtNTAxZmIudHh0CmluZGV4IDdkMzE5ZmIuLjlkOWYwMDkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9mYi9zbTUwMWZiLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZmIvc201MDFmYi50eHQKQEAgLTE4LDkgKzE4LDkgQEAKIC0gZWRpZCA6IHZlcmJhdGltIEVESUQgZGF0YSBibG9jayBkZXNjcmliaW5nIGF0dGFjaGVkIGRpc3BsYXkuCiAgIERhdGEgZnJvbSB0aGUgZGV0YWlsZWQgdGltaW5nIGRlc2NyaXB0b3Igd2lsbCBiZSB1c2VkIHRvCiAgIHByb2dyYW0gdGhlIGRpc3BsYXkgY29udHJvbGxlci4KLS0gbGl0dGxlLWVuZGlhbjogYXZhaWxpYWJsZSBvbiBiaWcgZW5kaWFuIHN5c3RlbXMsIHRvCistIGxpdHRsZS1lbmRpYW46IGF2YWlsYWJsZSBvbiBiaWcgZW5kaWFuIHN5c3RlbXMsIHRvCiAgIHNldCBkaWZmZXJlbnQgZm9yZWlnbiBlbmRpYW4uCi0tIGJpZy1lbmRpYW46IGF2YWlsaWFibGUgb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zLCB0bworLSBiaWctZW5kaWFuOiBhdmFpbGFibGUgb24gbGl0dGxlIGVuZGlhbiBzeXN0ZW1zLCB0bwogICBzZXQgZGlmZmVyZW50IGZvcmVpZ24gZW5kaWFuLgogCiBFeGFtcGxlIGZvciBNUEM1MjAwOgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc2wtdXBtLW5hbmQudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL210ZC9mc2wtdXBtLW5hbmQudHh0CmluZGV4IGE0OGIyY2EuLjAwZjFmNTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9tdGQvZnNsLXVwbS1uYW5kLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbXRkL2ZzbC11cG0tbmFuZC50eHQKQEAgLTE1LDcgKzE1LDcgQEAKIC0gZ3Bpb3MgOiBtYXkgc3BlY2lmeSBvcHRpb25hbCBHUElPcyBjb25uZWN0ZWQgdG8gdGhlIFJlYWR5LU5vdC1CdXN5IHBpbnMKIAkoUi9CIykuIEZvciBtdWx0aS1jaGlwIGRldmljZXMsICJuIiBHUElPIGRlZmluaXRpb25zIGFyZSByZXF1aXJlZAogCWFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNoaXBzLgotLSBjaGlwLWRlbGF5IDogY2hpcCBkZXBlbmRlbnQgZGVsYXkgZm9yIHRyYW5zZmVyaW5nIGRhdGEgZnJvbSBhcnJheSB0bworLSBjaGlwLWRlbGF5IDogY2hpcCBkZXBlbmRlbnQgZGVsYXkgZm9yIHRyYW5zZmVycmluZyBkYXRhIGZyb20gYXJyYXkgdG8KIAlyZWFkIHJlZ2lzdGVycyAodFIpLiBSZXF1aXJlZCBpZiBwcm9wZXJ0eSAiZ3Bpb3MiIGlzIG5vdCB1c2VkCiAJKFIvQiMgcGlucyBub3QgY29ubmVjdGVkKS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL25ldC9jYW4vc2phMTAwMC50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9zamExMDAwLnR4dAppbmRleCBkNmQyMDlkLi5jMmRiY2VjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9zamExMDAwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvbmV0L2Nhbi9zamExMDAwLnR4dApAQCAtMzksNyArMzksNyBAQAogCiAtIG54cCxuby1jb21wYXJhdG9yLWJ5cGFzcyA6IEFsbG93cyB0byBkaXNhYmxlIHRoZSBDQU4gaW5wdXQgY29tcGVyYXRvci4KIAotRm9yIGZ1dGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIGhhdmUgYSBsb29rIHRvIHRoZSBTSkExMDAwIGRhdGEgc2hlZXQuCitGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIGhhdmUgYSBsb29rIHRvIHRoZSBTSkExMDAwIGRhdGEgc2hlZXQuCiAKIEV4YW1wbGVzOgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBpYy50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvcG93ZXJwYy9mc2wvbXBpYy50eHQKaW5kZXggOGFhMTBmNC4uNGY2MTQ1OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL3Bvd2VycGMvZnNsL21waWMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9wb3dlcnBjL2ZzbC9tcGljLnR4dApAQCAtMTk5LDcgKzE5OSw3IEBACiAKIEVYQU1QTEUgNQogCS8qCi0JICogRGVmaW5pdGlvbiBvZiBhbiBlcnJvciBpbnRlcnJ1cHQgKGludGVydXB0IHR5cGUgMSkuCisJICogRGVmaW5pdGlvbiBvZiBhbiBlcnJvciBpbnRlcnJ1cHQgKGludGVycnVwdCB0eXBlIDEpLgogCSAqIFNvQyBpbnRlcnJ1cHQgbnVtYmVyIGlzIDE2IGFuZCB0aGUgc3BlY2lmaWMgZXJyb3IKICAgICAgICAgICogaW50ZXJydXB0IGJpdCBpbiB0aGUgZXJyb3IgaW50ZXJydXB0IHN1bW1hcnkgcmVnaXN0ZXIKIAkgKiBpcyAyMy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHZiL1JFQURNRS5kdmItdXNiIGIvRG9jdW1lbnRhdGlvbi9kdmIvUkVBRE1FLmR2Yi11c2IKaW5kZXggYzgyMzhlNC4uYzRkOTYzYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9kdmIvUkVBRE1FLmR2Yi11c2IKKysrIGIvRG9jdW1lbnRhdGlvbi9kdmIvUkVBRE1FLmR2Yi11c2IKQEAgLTEzOCw3ICsxMzgsNyBAQAogaW4gdGhlIGRldmljZSkuCiAKIElmIHlvdSB3YW50IHRvIGVuYWJsZSBkZWJ1ZyBvdXRwdXQsIHlvdSBoYXZlIHRvIGxvYWQgdGhlIGRyaXZlciBtYW51YWxseSBhbmQKLWZyb20gd2l0aGluZyB0aGUgZHZiLWtlcm5lbCBjdnMgcmVwb3NpdG9yeS4KK2Zyb20gd2l0aGluIHRoZSBkdmIta2VybmVsIGN2cyByZXBvc2l0b3J5LgogCiBmaXJzdCBoYXZlIGEgbG9vaywgd2hpY2ggZGVidWcgbGV2ZWwgYXJlIGF2YWlsYWJsZToKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kdmIvY2kudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvY2kudHh0CmluZGV4IDRhMGMyYjUuLjZjM2JkYTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZHZiL2NpLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2R2Yi9jaS50eHQKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogKiBDSSBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZAogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLVRoZSBDSSBtb2R1bGUgc3VwcG9ydCBpcyBsYXJnZWx5IGRlcGVuZGFudCB1cG9uIHRoZSBmaXJtd2FyZSBvbiB0aGUgY2FyZHMKK1RoZSBDSSBtb2R1bGUgc3VwcG9ydCBpcyBsYXJnZWx5IGRlcGVuZGVudCB1cG9uIHRoZSBmaXJtd2FyZSBvbiB0aGUgY2FyZHMKIFNvbWUgY2FyZHMgZG8gc3VwcG9ydCBhbG1vc3QgYWxsIG9mIHRoZSBhdmFpbGFibGUgQ0kgbW9kdWxlcy4gVGhlcmUgaXMKIG5vdGhpbmcgbXVjaCB0aGF0IGNhbiBiZSBkb25lIGluIG9yZGVyIHRvIG1ha2UgYWRkaXRpb25hbCBDSSBtb2R1bGVzCiB3b3JraW5nIHdpdGggdGhlc2UgY2FyZHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2R2Yi9mYXEudHh0IGIvRG9jdW1lbnRhdGlvbi9kdmIvZmFxLnR4dAppbmRleCAxMjE4MzJlLi45N2IxMzczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2R2Yi9mYXEudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZHZiL2ZhcS50eHQKQEAgLTEwNiw3ICsxMDYsNyBAQAogNS4gVGhlIGR2Yl9uZXQgZGV2aWNlIGRvZXNuJ3QgZ2l2ZSBtZSBhbnkgcGFja2V0cyBhdCBhbGwKIAogCVJ1biB0Y3BkdW1wIG9uIHRoZSBkdmIwXzAgaW50ZXJmYWNlLiBUaGlzIHNldHMgdGhlIGludGVyZmFjZQotCWludG8gcHJvbWlzY291cyBtb2RlIHNvIGl0IGFjY2VwdHMgYW55IHBhY2tldHMgZnJvbSB0aGUgUElECisJaW50byBwcm9taXNjdW91cyBtb2RlIHNvIGl0IGFjY2VwdHMgYW55IHBhY2tldHMgZnJvbSB0aGUgUElECiAJeW91IGhhdmUgY29uZmlndXJlZCB3aXRoIHRoZSBkdmJuZXQgdXRpbGl0eS4gQ2hlY2sgaWYgdGhlcmUKIAlhcmUgYW55IHBhY2tldHMgd2l0aCB0aGUgSVAgYWRkciBhbmQgTUFDIGFkZHIgeW91IGhhdmUKIAljb25maWd1cmVkIHdpdGggaWZjb25maWcuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2VkYWMudHh0IGIvRG9jdW1lbnRhdGlvbi9lZGFjLnR4dAppbmRleCBjY2MwN2MyLi4yNDk4MjJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2VkYWMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZWRhYy50eHQKQEAgLTc0MSw3ICs3NDEsNyBAQAogICAgQXMgRURBQyBBUEkgbWFwcyB0aGUgbWluaW11bSB1bml0eSBpcyBjc3Jvd3MsIHRoZSBkcml2ZXIgc2VxdWVuY2lhbGx5CiAgICBtYXBzIGNoYW5uZWwvZGltbSBpbnRvIGRpZmZlcmVudCBjc3Jvd3MuCiAKLSAgIEZvciBleGFtcGxlLCBzdXBvc2luZyB0aGUgZm9sbG93aW5nIGxheW91dDoKKyAgIEZvciBleGFtcGxlLCBzdXBwb3NpbmcgdGhlIGZvbGxvd2luZyBsYXlvdXQ6CiAJQ2gwIHBoeSByZDAsIHdyMCAoMHgwNjNmNDAzMSk6IDIgcmFua3MsIFVESU1NcwogCSAgZGltbSAwIDEwMjQgTWIgb2Zmc2V0OiAwLCBiYW5rOiA4LCByYW5rOiAxLCByb3c6IDB4NDAwMCwgY29sOiAweDQwMAogCSAgZGltbSAxIDEwMjQgTWIgb2Zmc2V0OiA0LCBiYW5rOiA4LCByYW5rOiAxLCByb3c6IDB4NDAwMCwgY29sOiAweDQwMApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9laXNhLnR4dCBiL0RvY3VtZW50YXRpb24vZWlzYS50eHQKaW5kZXggZjI5N2ZjMS4uMzhjZjBjNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9laXNhLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2Vpc2EudHh0CkBAIC04NCw3ICs4NCw3IEBACiAKIGlkX3RhYmxlCTogYW4gYXJyYXkgb2YgTlVMTCB0ZXJtaW5hdGVkIEVJU0EgaWQgc3RyaW5ncywKIAkJICBmb2xsb3dlZCBieSBhbiBlbXB0eSBzdHJpbmcuIEVhY2ggc3RyaW5nIGNhbgotCQkgIG9wdGlvbmFsbHkgYmUgcGFpcmVkIHdpdGggYSBkcml2ZXItZGVwZW5kYW50IHZhbHVlCisJCSAgb3B0aW9uYWxseSBiZSBwYWlyZWQgd2l0aCBhIGRyaXZlci1kZXBlbmRlbnQgdmFsdWUKIAkJICAoZHJpdmVyX2RhdGEpLgogCiBkcml2ZXIJCTogYSBnZW5lcmljIGRyaXZlciwgc3VjaCBhcyBkZXNjcmliZWQgaW4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmIvdmlhZmIudHh0IGIvRG9jdW1lbnRhdGlvbi9mYi92aWFmYi50eHQKaW5kZXggMWEyZThhYS4uNDQ0ZTM0YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9mYi92aWFmYi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9mYi92aWFmYi50eHQKQEAgLTIwNCw3ICsyMDQsNyBAQAogCiAgICAgc3VwcG9ydGVkX291dHB1dF9kZXZpY2VzCiAKLSAgICAgICAgVGhpcyByZWFkLW9ubHkgZmlsZSBjb250YWlucyBhIGZ1bGwgJywnIHNlcGVyYXRlZCBsaXN0IGNvbnRhaW5pbmcgYWxsCisgICAgICAgIFRoaXMgcmVhZC1vbmx5IGZpbGUgY29udGFpbnMgYSBmdWxsICcsJyBzZXBhcmF0ZWQgbGlzdCBjb250YWluaW5nIGFsbAogICAgICAgICBvdXRwdXQgZGV2aWNlcyB0aGF0IGNvdWxkIGJlIGF2YWlsYWJsZSBvbiB5b3VyIHBsYXRmb3JtLiBJdCBpcyBsaWtlbHkKICAgICAgICAgdGhhdCBub3QgYWxsIG9mIHRob3NlIGhhdmUgYSBjb25uZWN0b3Igb24geW91ciBoYXJkd2FyZSBidXQgaXQgc2hvdWxkCiAgICAgICAgIHByb3ZpZGUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIGZpZ3VyZSBvdXQgd2hpY2ggb2YgdGhvc2UgbmFtZXMgbWF0Y2gKQEAgLTIyNSw3ICsyMjUsNyBAQAogICAgICAgICBUaGlzIGNhbiBoYXBwZW4gZm9yIGV4YW1wbGUgaWYgb25seSBvbmUgKHRoZSBvdGhlcikgaWdhIGlzIHVzZWQuCiAgICAgICAgIFdyaXRpbmcgdG8gdGhlc2UgZmlsZXMgYWxsb3dzIGFkanVzdGluZyB0aGUgb3V0cHV0IGRldmljZXMgZHVyaW5nCiAgICAgICAgIHJ1bnRpbWUuIE9uZSBjYW4gYWRkIG5ldyBkZXZpY2VzLCByZW1vdmUgZXhpc3Rpbmcgb25lcyBvciBzd2l0Y2gKLSAgICAgICAgYmV0d2VlbiBpZ2FzLiBFc3NlbnRpYWxseSB5b3UgY2FuIHdyaXRlIGEgJywnIHNlcGVyYXRlZCBsaXN0IG9mIGRldmljZQorICAgICAgICBiZXR3ZWVuIGlnYXMuIEVzc2VudGlhbGx5IHlvdSBjYW4gd3JpdGUgYSAnLCcgc2VwYXJhdGVkIGxpc3Qgb2YgZGV2aWNlCiAgICAgICAgIG5hbWVzIChvciBhIHNpbmdsZSBvbmUpIGluIHRoZSBzYW1lIGZvcm1hdCBhcyB0aGUgb3V0cHV0IHRvIHRob3NlCiAgICAgICAgIGZpbGVzLiBZb3UgY2FuIGFkZCBhICcrJyBvciAnLScgYXMgYSBwcmVmaXggYWxsb3dpbmcgc2ltcGxlIGFkZGl0aW9uCiAgICAgICAgIGFuZCByZW1vdmFsIG9mIGRldmljZXMuIFNvIGEgcHJlZml4ICcrJyBhZGRzIHRoZSBkZXZpY2VzIGZyb20geW91ciBsaXN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2F1dG9mczQtbW91bnQtY29udHJvbC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2F1dG9mczQtbW91bnQtY29udHJvbC50eHQKaW5kZXggNTE5ODZiZi4uNGM5NTkzNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9hdXRvZnM0LW1vdW50LWNvbnRyb2wudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvYXV0b2ZzNC1tb3VudC1jb250cm9sLnR4dApAQCAtMzA5LDcgKzMwOSw3IEBACiBBVVRPRlNfREVWX0lPQ1RMX1RJTUVPVVRfQ01ECiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLVNldCB0aGUgZXhwaXJlIHRpbWVvdXQgZm9yIG1vdW50cyB3aXRoaW5nIGFuIGF1dG9mcyBtb3VudCBwb2ludC4KK1NldCB0aGUgZXhwaXJlIHRpbWVvdXQgZm9yIG1vdW50cyB3aXRoaW4gYW4gYXV0b2ZzIG1vdW50IHBvaW50LgogCiBUaGUgY2FsbCByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBzdHJ1Y3QgYXV0b2ZzX2Rldl9pb2N0bCB3aXRoIHRoZQogaW9jdGxmZCBmaWVsZCBzZXQgdG8gdGhlIGRlc2NyaXB0b3Igb2J0YWluZWQgZnJvbSB0aGUgb3BlbiBjYWxsLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jYWNoaW5nL25ldGZzLWFwaS50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvbmV0ZnMtYXBpLnR4dAppbmRleCAxOTAyYzU3Li5hMTY3YWI4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvbmV0ZnMtYXBpLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NhY2hpbmcvbmV0ZnMtYXBpLnR4dApAQCAtOTUsNyArOTUsNyBAQAogdGhlIHRyZWUuICBUaGUgbmV0ZnMgY2FuIGV2ZW4gbWl4IGluZGljZXMgYW5kIGRhdGEgZmlsZXMgYXQgdGhlIHNhbWUgbGV2ZWwsIGJ1dAogaXQncyBub3QgcmVjb21tZW5kZWQuCiAKLUVhY2ggaW5kZXggZW50cnkgY29uc2lzdHMgb2YgYSBrZXkgb2YgaW5kZXRlcm1pbmF0ZSBsZW5ndGggcGx1cyBzb21lIGF1eGlsbGlhcnkKK0VhY2ggaW5kZXggZW50cnkgY29uc2lzdHMgb2YgYSBrZXkgb2YgaW5kZXRlcm1pbmF0ZSBsZW5ndGggcGx1cyBzb21lIGF1eGlsaWFyeQogZGF0YSwgYWxzbyBvZiBpbmRldGVybWluYXRlIGxlbmd0aC4KIAogVGhlcmUgYXJlIHNvbWUgbGltaXRzIG9uIGluZGljZXM6CkBAIC0yMDMsMjMgKzIwMywyMyBAQAogCiAgICAgIElmIHRoZSBmdW5jdGlvbiBpcyBhYnNlbnQsIGEgZmlsZSBzaXplIG9mIDAgaXMgYXNzdW1lZC4KIAotICg2KSBBIGZ1bmN0aW9uIHRvIHJldHJpZXZlIGF1eGlsbGlhcnkgZGF0YSBmcm9tIHRoZSBuZXRmcyBbb3B0aW9uYWxdLgorICg2KSBBIGZ1bmN0aW9uIHRvIHJldHJpZXZlIGF1eGlsaWFyeSBkYXRhIGZyb20gdGhlIG5ldGZzIFtvcHRpb25hbF0uCiAKICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSBuZXRmcyBkYXRhIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUKLSAgICAgY29va2llIGFjcXVpc2l0aW9uIGZ1bmN0aW9uIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgYXV4aWxsaWFyeSBkYXRhIHRoYXQKLSAgICAgaXQgbWF5IHByb3ZpZGUuICBJdCBzaG91bGQgd3JpdGUgdGhlIGF1eGlsbGlhcnkgZGF0YSBpbnRvIHRoZSBnaXZlbiBidWZmZXIKKyAgICAgY29va2llIGFjcXVpc2l0aW9uIGZ1bmN0aW9uIGFuZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgYXV4aWxpYXJ5IGRhdGEgdGhhdAorICAgICBpdCBtYXkgcHJvdmlkZS4gIEl0IHNob3VsZCB3cml0ZSB0aGUgYXV4aWxpYXJ5IGRhdGEgaW50byB0aGUgZ2l2ZW4gYnVmZmVyCiAgICAgIGFuZCByZXR1cm4gdGhlIHF1YW50aXR5IGl0IHdyb3RlLgogCi0gICAgIElmIHRoaXMgZnVuY3Rpb24gaXMgYWJzZW50LCB0aGUgYXV4aWxsaWFyeSBkYXRhIGxlbmd0aCB3aWxsIGJlIHNldCB0byAwLgorICAgICBJZiB0aGlzIGZ1bmN0aW9uIGlzIGFic2VudCwgdGhlIGF1eGlsaWFyeSBkYXRhIGxlbmd0aCB3aWxsIGJlIHNldCB0byAwLgogCi0gICAgIFRoZSBsZW5ndGggb2YgdGhlIGF1eGlsbGlhcnkgZGF0YSBidWZmZXIgbWF5IGJlIGRlcGVuZGVudCBvbiB0aGUga2V5CisgICAgIFRoZSBsZW5ndGggb2YgdGhlIGF1eGlsaWFyeSBkYXRhIGJ1ZmZlciBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBrZXkKICAgICAgbGVuZ3RoLiAgQSBuZXRmcyBtdXN0bid0IHJlbHkgb24gYmVpbmcgYWJsZSB0byBwcm92aWRlIG1vcmUgdGhhbiA0MDAgYnl0ZXMKICAgICAgZm9yIGJvdGguCiAKLSAoNykgQSBmdW5jdGlvbiB0byBjaGVjayB0aGUgYXV4aWxsaWFyeSBkYXRhIFtvcHRpb25hbF0uCisgKDcpIEEgZnVuY3Rpb24gdG8gY2hlY2sgdGhlIGF1eGlsaWFyeSBkYXRhIFtvcHRpb25hbF0uCiAKICAgICAgVGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB0byBjaGVjayB0aGF0IGEgbWF0Y2ggZm91bmQgaW4gdGhlIGNhY2hlIGZvcgotICAgICB0aGlzIG9iamVjdCBpcyB2YWxpZC4gIEZvciBpbnN0YW5jZSB3aXRoIEFGUyBpdCBjb3VsZCBjaGVjayB0aGUgYXV4aWxsaWFyeQorICAgICB0aGlzIG9iamVjdCBpcyB2YWxpZC4gIEZvciBpbnN0YW5jZSB3aXRoIEFGUyBpdCBjb3VsZCBjaGVjayB0aGUgYXV4aWxpYXJ5CiAgICAgIGRhdGEgYWdhaW5zdCB0aGUgZGF0YSB2ZXJzaW9uIG51bWJlciByZXR1cm5lZCBieSB0aGUgc2VydmVyIHRvIGRldGVybWluZQogICAgICB3aGV0aGVyIHRoZSBpbmRleCBlbnRyeSBpbiBhIGNhY2hlIGlzIHN0aWxsIHZhbGlkLgogCkBAIC0yMzIsNyArMjMyLDcgQEAKIAkoKikgRlNDQUNIRV9DSEVDS0FVWF9ORUVEU19VUERBVEUJLSB0aGUgZW50cnkgcmVxdWlyZXMgdXBkYXRlCiAJKCopIEZTQ0FDSEVfQ0hFQ0tBVVhfT0JTT0xFVEUJCS0gdGhlIGVudHJ5IHNob3VsZCBiZSBkZWxldGVkCiAKLSAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSB1c2VkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBhdXhpbGxpYXJ5IGRhdGEgaW4KKyAgICAgVGhpcyBmdW5jdGlvbiBjYW4gYWxzbyBiZSB1c2VkIHRvIGV4dHJhY3QgZGF0YSBmcm9tIHRoZSBhdXhpbGlhcnkgZGF0YSBpbgogICAgICB0aGUgY2FjaGUgYW5kIGNvcHkgaXQgaW50byB0aGUgbmV0ZnMncyBzdHJ1Y3R1cmVzLgogCiAgKDgpIEEgcGFpciBvZiBmdW5jdGlvbnMgdG8gbWFuYWdlIGNvbnRleHRzIGZvciB0aGUgY29tcGxldGlvbiBjYWxsYmFjawpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9jb25maWdmcy9jb25maWdmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzL2NvbmZpZ2ZzLnR4dAppbmRleCBmYWJjYjBlLi5kZDU3YmI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzL2NvbmZpZ2ZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2NvbmZpZ2ZzL2NvbmZpZ2ZzLnR4dApAQCAtNDA5LDcgKzQwOSw3IEBACiBybWRpcigyKS4gIFRoZXkgYWxzbyBhcmUgbm90IGNvbnNpZGVyZWQgd2hlbiBybWRpcigyKSBvbiB0aGUgcGFyZW50CiBncm91cCBpcyBjaGVja2luZyBmb3IgY2hpbGRyZW4uCiAKLVtEZXBlbmRhbnQgU3Vic3lzdGVtc10KK1tEZXBlbmRlbnQgU3Vic3lzdGVtc10KIAogU29tZXRpbWVzIG90aGVyIGRyaXZlcnMgZGVwZW5kIG9uIHBhcnRpY3VsYXIgY29uZmlnZnMgaXRlbXMuICBGb3IKIGV4YW1wbGUsIG9jZnMyIG1vdW50cyBkZXBlbmQgb24gYSBoZWFydGJlYXQgcmVnaW9uIGl0ZW0uICBJZiB0aGF0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9leHQ0LnR4dAppbmRleCA2YjA1MDQ2Li5jNzllYzU4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2V4dDQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZXh0NC50eHQKQEAgLTk3LDcgKzk3LDcgQEAKICogSW5vZGUgYWxsb2NhdGlvbiB1c2luZyBsYXJnZSB2aXJ0dWFsIGJsb2NrIGdyb3VwcyB2aWEgZmxleF9iZwogKiBkZWxheWVkIGFsbG9jYXRpb24KICogbGFyZ2UgYmxvY2sgKHVwIHRvIHBhZ2VzaXplKSBzdXBwb3J0Ci0qIGVmZmljZW50IG5ldyBvcmRlcmVkIG1vZGUgaW4gSkJEMiBhbmQgZXh0NChhdm9pZCB1c2luZyBidWZmZXIgaGVhZCB0byBmb3JjZQorKiBlZmZpY2llbnQgbmV3IG9yZGVyZWQgbW9kZSBpbiBKQkQyIGFuZCBleHQ0KGF2b2lkIHVzaW5nIGJ1ZmZlciBoZWFkIHRvIGZvcmNlCiAgIHRoZSBvcmRlcmluZykKIAogWzFdIEZpbGVzeXN0ZW1zIHdpdGggYSBibG9jayBzaXplIG9mIDFrIG1heSBzZWUgYSBsaW1pdCBpbXBvc2VkIGJ5IHRoZQpAQCAtMTA2LDcgKzEwNiw3IEBACiAyLjIgQ2FuZGlkYXRlIGZlYXR1cmVzIGZvciBmdXR1cmUgaW5jbHVzaW9uCiAKICogT25saW5lIGRlZnJhZyAocGF0Y2hlcyBhdmFpbGFibGUgYnV0IG5vdCB3ZWxsIHRlc3RlZCkKLSogcmVkdWNlZCBta2UyZnMgdGltZSB2aWEgbGF6eSBpdGFibGUgaW5pdGlhbGl6YXRpb24gaW4gY29uanVjdGlvbiB3aXRoCisqIHJlZHVjZWQgbWtlMmZzIHRpbWUgdmlhIGxhenkgaXRhYmxlIGluaXRpYWxpemF0aW9uIGluIGNvbmp1bmN0aW9uIHdpdGgKICAgdGhlIHVuaW5pdF9iZyBmZWF0dXJlIChjYXBhYmlsaXR5IHRvIGRvIHRoaXMgaXMgYXZhaWxhYmxlIGluIGUyZnNwcm9ncwogICBidXQgYSBrZXJuZWwgdGhyZWFkIHRvIGRvIGxhenkgemVyb2luZyBvZiB1bnVzZWQgaW5vZGUgdGFibGUgYmxvY2tzCiAgIGFmdGVyIGZpbGVzeXN0ZW0gaXMgZmlyc3QgbW91bnRlZCBpcyByZXF1aXJlZCBmb3Igc2FmZXR5KQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLXVldmVudHMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLXVldmVudHMudHh0CmluZGV4IGZkOTY2ZGMuLmQ4MTg4OTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi11ZXZlbnRzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczItdWV2ZW50cy50eHQKQEAgLTYyLDcgKzYyLDcgQEAKIAogVGhlIFJFTU9WRSB1ZXZlbnQgaXMgZ2VuZXJhdGVkIGF0IHRoZSBlbmQgb2YgYW4gdW5zdWNjZXNzZnVsIG1vdW50CiBvciBhdCB0aGUgZW5kIG9mIGEgdW1vdW50IG9mIHRoZSBmaWxlc3lzdGVtLiBBbGwgUkVNT1ZFIHVldmVudHMgd2lsbAotaGF2ZSBiZWVuIHByZWNlZWRlZCBieSBhdCBsZWFzdCBhbiBBREQgdWV2ZW50IGZvciB0aGUgc2FtZSBmaWxleXN0ZW0sCitoYXZlIGJlZW4gcHJlY2VkZWQgYnkgYXQgbGVhc3QgYW4gQUREIHVldmVudCBmb3IgdGhlIHNhbWUgZmlsZXlzdGVtLAogYW5kIHVubGlrZSB0aGUgb3RoZXIgdWV2ZW50cyBpcyBnZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSB0aGUga2VybmVsJ3MKIGtvYmplY3Qgc3Vic3lzdGVtLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczIudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9nZnMyLnR4dAppbmRleCAwYjU5YzAyLi40Y2RhOTI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL2dmczIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvZ2ZzMi50eHQKQEAgLTExLDcgKzExLDcgQEAKIGZlYXR1cmVzIG9mIEdGUyBpcyBwZXJmZWN0IGNvbnNpc3RlbmN5IC0tIGNoYW5nZXMgbWFkZSB0byB0aGUgZmlsZSBzeXN0ZW0KIG9uIG9uZSBtYWNoaW5lIHNob3cgdXAgaW1tZWRpYXRlbHkgb24gYWxsIG90aGVyIG1hY2hpbmVzIGluIHRoZSBjbHVzdGVyLgogCi1HRlMgdXNlcyBpbnRlcmNoYW5nYWJsZSBpbnRlci1ub2RlIGxvY2tpbmcgbWVjaGFuaXNtcywgdGhlIGN1cnJlbnRseQorR0ZTIHVzZXMgaW50ZXJjaGFuZ2VhYmxlIGludGVyLW5vZGUgbG9ja2luZyBtZWNoYW5pc21zLCB0aGUgY3VycmVudGx5CiBzdXBwb3J0ZWQgbWVjaGFuaXNtcyBhcmU6CiAKICAgbG9ja19ub2xvY2sgLS0gYWxsb3dzIGdmcyB0byBiZSB1c2VkIGFzIGEgbG9jYWwgZmlsZSBzeXN0ZW0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbnRmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL250ZnMudHh0CmluZGV4IDkzM2JjNjYuLjc5MWFmOGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvbnRmcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9udGZzLnR4dApAQCAtMzUwLDcgKzM1MCw3IEBACiBhbHJlYWR5IGluIHN5bmMgd2hpY2ggd2lsbCBiZSB0aGUgY2FzZSBvbiBhIGNsZWFuIHNodXRkb3duIG9mIFdpbmRvd3MuICBJZiB0aGUKIG1pcnJvcnMgYXJlIG5vdCBjbGVhbiwgeW91IGNhbiBzcGVjaWZ5IHRoZSAic3luYyIgb3B0aW9uIGluc3RlYWQgb2YgIm5vc3luYyIKIGFuZCB0aGUgRGV2aWNlLU1hcHBlciBkcml2ZXIgd2lsbCB0aGVuIGNvcHkgdGhlIGVudGlyZXR5IG9mIHRoZSAiU291cmNlIERldmljZSIKLXRvIHRoZSAiVGFyZ2V0IERldmljZSIgb3IgaWYgeW91IHNwZWNpZmllZCBtdWx0aXBsZWQgdGFyZ2V0IGRldmljZXMgdG8gYWxsIG9mCit0byB0aGUgIlRhcmdldCBEZXZpY2UiIG9yIGlmIHlvdSBzcGVjaWZpZWQgbXVsdGlwbGUgdGFyZ2V0IGRldmljZXMgdG8gYWxsIG9mCiB0aGVtLgogCiBPbmNlIHlvdSBoYXZlIHlvdXIgdGFibGUsIHNhdmUgaXQgaW4gYSBmaWxlIHNvbWV3aGVyZSAoZS5nLiAvZXRjL250ZnN2b2x1bWUxKSwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvb2NmczIudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vY2ZzMi50eHQKaW5kZXggNTM5M2U2Ni4uOWVkOTIwYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vY2ZzMi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9vY2ZzMi50eHQKQEAgLTgwLDcgKzgwLDcgQEAKIG5vdXNlcl94YXR0cgkJRGlzYWJsZXMgRXh0ZW5kZWQgVXNlciBBdHRyaWJ1dGVzLgogYWNsCQkJRW5hYmxlcyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBzdXBwb3J0Lgogbm9hY2wJCSgqKQlEaXNhYmxlcyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBzdXBwb3J0LgotcmVzdl9sZXZlbD0yCSgqKQlTZXQgaG93IGFncmVzc2l2ZSBhbGxvY2F0aW9uIHJlc2VydmF0aW9ucyB3aWxsIGJlLgorcmVzdl9sZXZlbD0yCSgqKQlTZXQgaG93IGFnZ3Jlc3NpdmUgYWxsb2NhdGlvbiByZXNlcnZhdGlvbnMgd2lsbCBiZS4KIAkJCVZhbGlkIHZhbHVlcyBhcmUgYmV0d2VlbiAwIChyZXNlcnZhdGlvbnMgb2ZmKSB0byA4CiAJCQkobWF4aW11bSBzcGFjZSBmb3IgcmVzZXJ2YXRpb25zKS4KIGRpcl9yZXN2X2xldmVsPQkoKikJQnkgZGVmYXVsdCwgZGlyZWN0b3J5IHJlc2VydmF0aW9ucyB3aWxsIHNjYWxlIHdpdGggZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wYXRoLWxvb2t1cC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BhdGgtbG9va3VwLnR4dAppbmRleCBlYjU5YzhiLi4zNTcxNjY3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BhdGgtbG9va3VwLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BhdGgtbG9va3VwLnR4dApAQCAtNDIsNyArNDIsNyBAQAogQSBuYW1lIHN0cmluZyBzcGVjaWZpZXMgYSBzdGFydCAocm9vdCBkaXJlY3RvcnksIGN3ZCwgZmQtcmVsYXRpdmUpIGFuZCBhCiBzZXF1ZW5jZSBvZiBlbGVtZW50cyAoZGlyZWN0b3J5IGVudHJ5IG5hbWVzKSwgd2hpY2ggdG9nZXRoZXIgcmVmZXIgdG8gYSBwYXRoIGluCiB0aGUgbmFtZXNwYWNlLiBBIHBhdGggaXMgcmVwcmVzZW50ZWQgYXMgYSAoZGVudHJ5LCB2ZnNtb3VudCkgdHVwbGUuIFRoZSBuYW1lCi1lbGVtZW50cyBhcmUgc3ViLXN0cmluZ3MsIHNlcGVyYXRlZCBieSAnLycuCitlbGVtZW50cyBhcmUgc3ViLXN0cmluZ3MsIHNlcGFyYXRlZCBieSAnLycuCiAKIE5hbWUgbG9va3VwcyB3aWxsIHdhbnQgdG8gZmluZCBhIHBhcnRpY3VsYXIgcGF0aCB0aGF0IGEgbmFtZSBzdHJpbmcgcmVmZXJzIHRvCiAodXN1YWxseSB0aGUgZmluYWwgZWxlbWVudCwgb3IgcGFyZW50IG9mIGZpbmFsIGVsZW1lbnQpLiBUaGlzIGlzIGRvbmUgYnkgdGFraW5nCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogV2hhdCB0aGlzIHNob3dzIGlzIHRoYXQgZmFpbGVkIHJjdS13YWxrIGxvb2t1cHMsIGllLiBvbmVzIHRoYXQgYXJlIHJlc3RhcnRlZAogZW50aXJlbHkgd2l0aCByZWYtd2FsaywgYXJlIHF1aXRlIHJhcmUuIEV2ZW4gdGhlICJ2ZnN0ZXN0IiBjYXNlIHdoaWNoCi1zcGVjaWZpY2FsbHkgaGFzIGNvbmN1cnJlbnQgcmVuYW1lcy9ta2Rpci9ybWRpci8gY3JlYXQvdW5saW5rL2V0YyB0byBleGNlcmNpc2UKK3NwZWNpZmljYWxseSBoYXMgY29uY3VycmVudCByZW5hbWVzL21rZGlyL3JtZGlyLyBjcmVhdC91bmxpbmsvZXRjIHRvIGV4ZXJjaXNlCiBzdWNoIHJhY2VzIGlzIG5vdCBzaG93aW5nIGEgaHVnZSBhbW91bnQgb2YgcmVzdGFydHMuCiAKIERyb3BwaW5nIGZyb20gcmN1LXdhbGsgdG8gcmVmLXdhbGsgbWVhbiB0aGF0IHdlIGhhdmUgZW5jb3VudGVyZWQgYSBkZW50cnkgd2hlcmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvbmV0d29ya19wcm90b2NvbC50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3BvaG1lbGZzL25ldHdvcmtfcHJvdG9jb2wudHh0CmluZGV4IDQwZWE2YzIuLjY1ZTAzZGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcG9obWVsZnMvbmV0d29ya19wcm90b2NvbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wb2htZWxmcy9uZXR3b3JrX3Byb3RvY29sLnR4dApAQCAtMjAsNyArMjAsNyBAQAogc28gb25lIGNhbiBleHRlbmQgcHJvdG9jb2wgYXMgbmVlZGVkIHdpdGhvdXQgYnJlYWtpbmcgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBsb25nCiBhcyBvbGQgY29tbWFuZHMgYXJlIHN1cHBvcnRlZC4gQWxsIHN0cmluZyBsZW5ndGhzIGluY2x1ZGUgdGFpbCAwIGJ5dGUuCiAKLUFsbCBjb21tYW5zIGFyZSB0cmFuc2ZlcmVkIG92ZXIgdGhlIG5ldHdvcmsgaW4gYmlnLWVuZGlhbi4gQ1BVIGVuZGlhbmVzcyBpcyB1c2VkIGF0IHRoZSBlbmQgcGVlcnMuCitBbGwgY29tbWFuZHMgYXJlIHRyYW5zZmVycmVkIG92ZXIgdGhlIG5ldHdvcmsgaW4gYmlnLWVuZGlhbi4gQ1BVIGVuZGlhbmVzcyBpcyB1c2VkIGF0IHRoZSBlbmQgcGVlcnMuCiAKIEBjbWQgLSBjb21tYW5kIG51bWJlciwgd2hpY2ggc3BlY2lmaWVzIGNvbW1hbmQgdG8gYmUgcHJvY2Vzc2VkLiBGb2xsb3dpbmcKIAljb21tYW5kcyBhcmUgdXNlZCBjdXJyZW50bHk6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9wcm9jLnR4dAppbmRleCAyM2NhZTY1Li5iMGI4MTRkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Byb2MudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvcHJvYy50eHQKQEAgLTU0Myw3ICs1NDMsNyBAQAogICB0aGVpciBzdGF0aXN0aWNzIGFyZSB1c2VkIGJ5IGtlcm5lbCBkZXZlbG9wZXJzIGFuZCBpbnRlcmVzdGVkIHVzZXJzIHRvCiAgIGRldGVybWluZSB0aGUgb2NjdXJyZW5jZSBvZiBpbnRlcnJ1cHRzIG9mIHRoZSBnaXZlbiB0eXBlLgogCi1UaGUgYWJvdmUgSVJRIHZlY3RvcnMgYXJlIGRpc3BsYXllZCBvbmx5IHdoZW4gcmVsZXZlbnQuICBGb3IgZXhhbXBsZSwKK1RoZSBhYm92ZSBJUlEgdmVjdG9ycyBhcmUgZGlzcGxheWVkIG9ubHkgd2hlbiByZWxldmFudC4gIEZvciBleGFtcGxlLAogdGhlIHRocmVzaG9sZCB2ZWN0b3IgZG9lcyBub3QgZXhpc3Qgb24geDg2XzY0IHBsYXRmb3Jtcy4gIE90aGVycyBhcmUKIHN1cHByZXNzZWQgd2hlbiB0aGUgc3lzdGVtIGlzIGEgdW5pcHJvY2Vzc29yLiAgQXMgb2YgdGhpcyB3cml0aW5nLCBvbmx5CiBpMzg2IGFuZCB4ODZfNjQgcGxhdGZvcm1zIHN1cHBvcnQgdGhlIG5ldyBJUlEgdmVjdG9yIGRpc3BsYXlzLgpAQCAtMTIwMiw3ICsxMjAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgVyA9IGNhbiBkbyB3cml0ZSBvcGVyYXRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgIFUgPSBjYW4gZG8gdW5ibGFuawogICBmbGFncyAgICAgICAgICAgICAgICBFID0gaXQgaXMgZW5hYmxlZAotICAgICAgICAgICAgICAgICAgICAgICBDID0gaXQgaXMgcHJlZmVyZWQgY29uc29sZQorICAgICAgICAgICAgICAgICAgICAgICBDID0gaXQgaXMgcHJlZmVycmVkIGNvbnNvbGUKICAgICAgICAgICAgICAgICAgICAgICAgQiA9IGl0IGlzIHByaW1hcnkgYm9vdCBjb25zb2xlCiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBpdCBpcyB1c2VkIGZvciBwcmludGsgYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBpdCBpcyBub3QgYSBUVFkgYnV0IGEgQnJhaWxsZSBkZXZpY2UKQEAgLTEzMzEsNyArMTMzMSw3IEBACiBEb2N1bWVudGF0aW9uL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQuCiAKIENhdmVhdDogd2hlbiBhIHBhcmVudCB0YXNrIGlzIHNlbGVjdGVkLCB0aGUgb29tIGtpbGxlciB3aWxsIHNhY3JpZmljZSBhbnkgZmlyc3QKLWdlbmVyYXRpb24gY2hpbGRyZW4gd2l0aCBzZXBlcmF0ZSBhZGRyZXNzIHNwYWNlcyBpbnN0ZWFkLCBpZiBwb3NzaWJsZS4gIFRoaXMKK2dlbmVyYXRpb24gY2hpbGRyZW4gd2l0aCBzZXBhcmF0ZSBhZGRyZXNzIHNwYWNlcyBpbnN0ZWFkLCBpZiBwb3NzaWJsZS4gIFRoaXMKIGF2b2lkcyBzZXJ2ZXJzIGFuZCBpbXBvcnRhbnQgc3lzdGVtIGRhZW1vbnMgZnJvbSBiZWluZyBraWxsZWQgYW5kIGxvc2VzIHRoZQogbWluaW1hbCBhbW91bnQgb2Ygd29yay4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zcXVhc2hmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NxdWFzaGZzLnR4dAppbmRleCAyZDc4ZjE5Li5kNGQ0MTQ2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NxdWFzaGZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3NxdWFzaGZzLnR4dApAQCAtMjE5LDcgKzIxOSw3IEBACiByZWZlcmVuY2UgdG8gd2hlcmUgdGhlIGFjdHVhbCB2YWx1ZSBpcyBzdG9yZWQpLiAgVGhpcyBhbGxvd3MgbGFyZ2UgdmFsdWVzCiB0byBiZSBzdG9yZWQgb3V0IG9mIGxpbmUgaW1wcm92aW5nIHNjYW5uaW5nIGFuZCBsb29rdXAgcGVyZm9ybWFuY2UgYW5kIGl0CiBhbHNvIGFsbG93cyB2YWx1ZXMgdG8gYmUgZGUtZHVwbGljYXRlZCwgdGhlIHZhbHVlIGJlaW5nIHN0b3JlZCBvbmNlLCBhbmQKLWFsbCBvdGhlciBvY2N1cmVuY2VzIGhvbGRpbmcgYW4gb3V0IG9mIGxpbmUgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUuCithbGwgb3RoZXIgb2NjdXJyZW5jZXMgaG9sZGluZyBhbiBvdXQgb2YgbGluZSByZWZlcmVuY2UgdG8gdGhhdCB2YWx1ZS4KIAogVGhlIHhhdHRyIGxpc3RzIGFyZSBwYWNrZWQgaW50byBjb21wcmVzc2VkIDhLIG1ldGFkYXRhIGJsb2Nrcy4KIFRvIHJlZHVjZSBvdmVyaGVhZCBpbiBpbm9kZXMsIHJhdGhlciB0aGFuIHN0b3JpbmcgdGhlIG9uLWRpc2sKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvc3lzZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKaW5kZXggZjgwNmU1MC4uNTk3ZjcyOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy9zeXNmcy50eHQKQEAgLTYyLDcgKzYyLDcgQEAKIAogTWl4aW5nIHR5cGVzLCBleHByZXNzaW5nIG11bHRpcGxlIGxpbmVzIG9mIGRhdGEsIGFuZCBkb2luZyBmYW5jeQogZm9ybWF0dGluZyBvZiBkYXRhIGlzIGhlYXZpbHkgZnJvd25lZCB1cG9uLiBEb2luZyB0aGVzZSB0aGluZ3MgbWF5IGdldAoteW91IHB1YmxpY2FsbHkgaHVtaWxpYXRlZCBhbmQgeW91ciBjb2RlIHJld3JpdHRlbiB3aXRob3V0IG5vdGljZS4gCit5b3UgcHVibGljbHkgaHVtaWxpYXRlZCBhbmQgeW91ciBjb2RlIHJld3JpdHRlbiB3aXRob3V0IG5vdGljZS4gCiAKIAogQW4gYXR0cmlidXRlIGRlZmluaXRpb24gaXMgc2ltcGx5OgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0IGIvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy92ZnMudHh0CmluZGV4IDgwODE1ZWQuLjIxYTdkYzQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZmlsZXN5c3RlbXMvdmZzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3Zmcy50eHQKQEAgLTk3LDcgKzk3LDcgQEAKIFRoZSBwYXNzZWQgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZGVzY3JpYmVzIHlvdXIgZmlsZXN5c3RlbS4gV2hlbiBhCiByZXF1ZXN0IGlzIG1hZGUgdG8gbW91bnQgYSBmaWxlc3lzdGVtIG9udG8gYSBkaXJlY3RvcnkgaW4geW91ciBuYW1lc3BhY2UsCiB0aGUgVkZTIHdpbGwgY2FsbCB0aGUgYXBwcm9wcmlhdGUgbW91bnQoKSBtZXRob2QgZm9yIHRoZSBzcGVjaWZpYwotZmlsZXN5c3RlbS4gIE5ldyB2ZnNtb3VudCByZWZlcmluZyB0byB0aGUgdHJlZSByZXR1cm5lZCBieSAtPm1vdW50KCkKK2ZpbGVzeXN0ZW0uICBOZXcgdmZzbW91bnQgcmVmZXJyaW5nIHRvIHRoZSB0cmVlIHJldHVybmVkIGJ5IC0+bW91bnQoKQogd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgbW91bnRwb2ludCwgc28gdGhhdCB3aGVuIHBhdGhuYW1lIHJlc29sdXRpb24KIHJlYWNoZXMgdGhlIG1vdW50cG9pbnQgaXQgd2lsbCBqdW1wIGludG8gdGhlIHJvb3Qgb2YgdGhhdCB2ZnNtb3VudC4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9maWxlc3lzdGVtcy94ZnMtZGVsYXllZC1sb2dnaW5nLWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dAppbmRleCA1MjgyZTNlLi4yY2UzNjQzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1kZWxheWVkLWxvZ2dpbmctZGVzaWduLnR4dApAQCAtNDIsNyArNDIsNyBAQAogVGhpcyByZWxvZ2dpbmcgdGVjaG5pcXVlIGFsc28gYWxsb3dzIG9iamVjdHMgdG8gYmUgbW92ZWQgZm9yd2FyZCBpbiB0aGUgbG9nIHNvCiB0aGF0IGFuIG9iamVjdCBiZWluZyByZWxvZ2dlZCBkb2VzIG5vdCBwcmV2ZW50IHRoZSB0YWlsIG9mIHRoZSBsb2cgZnJvbSBldmVyCiBtb3ZpbmcgZm9yd2FyZC4gIFRoaXMgY2FuIGJlIHNlZW4gaW4gdGhlIHRhYmxlIGFib3ZlIGJ5IHRoZSBjaGFuZ2luZwotKGluY3JlYXNpbmcpIExTTiBvZiBlYWNoIHN1YnNxdWVudCB0cmFuc2FjdGlvbiAtIHRoZSBMU04gaXMgZWZmZWN0aXZlbHkgYQorKGluY3JlYXNpbmcpIExTTiBvZiBlYWNoIHN1YnNlcXVlbnQgdHJhbnNhY3Rpb24gLSB0aGUgTFNOIGlzIGVmZmVjdGl2ZWx5IGEKIGRpcmVjdCBlbmNvZGluZyBvZiB0aGUgbG9jYXRpb24gaW4gdGhlIGxvZyBvZiB0aGUgdHJhbnNhY3Rpb24uCiAKIFRoaXMgcmVsb2dnaW5nIGlzIGFsc28gdXNlZCB0byBpbXBsZW1lbnQgbG9uZy1ydW5uaW5nLCBtdWx0aXBsZS1jb21taXQKQEAgLTMzOCw3ICszMzgsNyBAQAogaW50byB0aGUgbmV3IENJTCwgdGhlbiBjaGVja3BvaW50IHRyYW5zYWN0aW9uIGNvbW1pdCBjb2RlIGNhbm5vdCB1c2UgbG9nIGl0ZW1zCiB0byBzdG9yZSB0aGUgbGlzdCBvZiBsb2cgdmVjdG9ycyB0aGF0IG5lZWQgdG8gYmUgd3JpdHRlbiBpbnRvIHRoZSB0cmFuc2FjdGlvbi4KIEhlbmNlIGxvZyB2ZWN0b3JzIG5lZWQgdG8gYmUgYWJsZSB0byBiZSBjaGFpbmVkIHRvZ2V0aGVyIHRvIGFsbG93IHRoZW0gdG8gYmUKLWRldGF0Y2hlZCBmcm9tIHRoZSBsb2cgaXRlbXMuIFRoYXQgaXMsIHdoZW4gdGhlIENJTCBpcyBmbHVzaGVkIHRoZSBtZW1vcnkKK2RldGFjaGVkIGZyb20gdGhlIGxvZyBpdGVtcy4gVGhhdCBpcywgd2hlbiB0aGUgQ0lMIGlzIGZsdXNoZWQgdGhlIG1lbW9yeQogYnVmZmVyIGFuZCBsb2cgdmVjdG9yIGF0dGFjaGVkIHRvIGVhY2ggbG9nIGl0ZW0gbmVlZHMgdG8gYmUgYXR0YWNoZWQgdG8gdGhlCiBjaGVja3BvaW50IGNvbnRleHQgc28gdGhhdCB0aGUgbG9nIGl0ZW0gY2FuIGJlIHJlbGVhc2VkLiBJbiBkaWFncmFtbWF0aWMgZm9ybSwKIHRoZSBDSUwgd291bGQgbG9vayBsaWtlIHRoaXMgYmVmb3JlIHRoZSBmbHVzaDoKQEAgLTU3Nyw3ICs1NzcsNyBAQAogcGVuZGluZyB0cmFuc2FjdGlvbnMuIFRodXMgdGhlIHBpbm5pbmcgYW5kIHVucGlubmluZyBvZiBhIGxvZyBpdGVtIGlzIHN5bW1ldHJpYwogYXMgdGhlcmUgaXMgYSAxOjEgcmVsYXRpb25zaGlwIHdpdGggdHJhbnNhY3Rpb24gY29tbWl0IGFuZCBsb2cgaXRlbSBjb21wbGV0aW9uLgogCi1Gb3IgZGVsYXllZCBsb2dnaW5nLCBob3dldmVyLCB3ZSBoYXZlIGFuIGFzc3ltZXRyaWMgdHJhbnNhY3Rpb24gY29tbWl0IHRvCitGb3IgZGVsYXllZCBsb2dnaW5nLCBob3dldmVyLCB3ZSBoYXZlIGFuIGFzeW1tZXRyaWMgdHJhbnNhY3Rpb24gY29tbWl0IHRvCiBjb21wbGV0aW9uIHJlbGF0aW9uc2hpcC4gRXZlcnkgdGltZSBhbiBvYmplY3QgaXMgcmVsb2dnZWQgaW4gdGhlIENJTCBpdCBnb2VzCiB0aHJvdWdoIHRoZSBjb21taXQgcHJvY2VzcyB3aXRob3V0IGEgY29ycmVzcG9uZGluZyBjb21wbGV0aW9uIGJlaW5nIHJlZ2lzdGVyZWQuCiBUaGF0IGlzLCB3ZSBub3cgaGF2ZSBhIG1hbnktdG8tb25lIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQKQEAgLTc4MCw3ICs3ODAsNyBAQAogRnJvbSB0aGlzLCBpdCBjYW4gYmUgc2VlbiB0aGF0IHRoZSBvbmx5IGxpZmUgY3ljbGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvCiBsb2dnaW5nIG1ldGhvZHMgYXJlIGluIHRoZSBtaWRkbGUgb2YgdGhlIGxpZmUgY3ljbGUgLSB0aGV5IHN0aWxsIGhhdmUgdGhlIHNhbWUKIGJlZ2lubmluZyBhbmQgZW5kIGFuZCBleGVjdXRpb24gY29uc3RyYWludHMuIFRoZSBvbmx5IGRpZmZlcmVuY2VzIGFyZSBpbiB0aGUKLWNvbW1pdGluZyBvZiB0aGUgbG9nIGl0ZW1zIHRvIHRoZSBsb2cgaXRzZWxmIGFuZCB0aGUgY29tcGxldGlvbiBwcm9jZXNzaW5nLgorY29tbWl0dGluZyBvZiB0aGUgbG9nIGl0ZW1zIHRvIHRoZSBsb2cgaXRzZWxmIGFuZCB0aGUgY29tcGxldGlvbiBwcm9jZXNzaW5nLgogSGVuY2UgZGVsYXllZCBsb2dnaW5nIHNob3VsZCBub3QgaW50cm9kdWNlIGFueSBjb25zdHJhaW50cyBvbiBsb2cgaXRlbQogYmVoYXZpb3VyLCBhbGxvY2F0aW9uIG9yIGZyZWVpbmcgdGhhdCBkb24ndCBhbHJlYWR5IGV4aXN0LgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydSBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CmluZGV4IDVlYjNiOWQuLjkxNWYzMjAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CisrKyBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1CkBAIC03OCw3ICs3OCw3IEBACiAKIFRoZSBmaXJzdCBhbmQgc2Vjb25kIHJldmlzaW9uIG9mIHRoZSB1R3VydSBjaGlwIGluIHJlYWxpdHkgaXMgYSBXaW5ib25kCiBXODNMOTUwRCBpbiBkaXNndWlzZSAoZGVzcGl0ZSBBYml0IGNsYWltaW5nIGl0IGlzICJhIG5ldyBtaWNyb3Byb2Nlc3NvcgotZGVzaWduZWQgYnkgdGhlIEFCSVQgRW5naW5lZXJzIikuIFVuZm9ydHVuYXRseSB0aGlzIGRvZXNuJ3QgaGVscCBzaW5jZSB0aGUKK2Rlc2lnbmVkIGJ5IHRoZSBBQklUIEVuZ2luZWVycyIpLiBVbmZvcnR1bmF0ZWx5IHRoaXMgZG9lc24ndCBoZWxwIHNpbmNlIHRoZQogVzgzTDk1MEQgaXMgYSBnZW5lcmljIG1pY3JvY29udHJvbGxlciB3aXRoIGEgY3VzdG9tIEFiaXQgYXBwbGljYXRpb24gcnVubmluZwogb24gaXQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1LWRhdGFzaGVldCBiL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1LWRhdGFzaGVldAppbmRleCBkOTI1MWVmLi44ZDJiZThhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydS1kYXRhc2hlZXQKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUtZGF0YXNoZWV0CkBAIC01LDkgKzUsOSBAQAogZGF0YXNoZWV0IGZyb20gQWJpdC4gVGhlIGRhdGEgSSBoYXZlIGdvdCBvbiB1R3VydSBoYXZlIEkgYXNzZW1ibGVkIHRocm91Z2gKIG15IHdlYWsga25vd2xlZGdlIGluICJiYWNrd2FyZHMgZW5naW5lZXJpbmciLgogQW5kIGp1c3QgZm9yIHRoZSByZWNvcmQsIHlvdSBtYXkgaGF2ZSBub3RpY2VkIHVHdXJ1IGlzbid0IGEgY2hpcCBkZXZlbG9wZWQgYnkKLUFiaXQsIGFzIHRoZXkgY2xhaW0gaXQgdG8gYmUuIEl0J3MgcmVhbHkganVzdCBhbiBtaWNyb3Byb2Nlc3NvciAodUMpIGNyZWF0ZWQgYnkKK0FiaXQsIGFzIHRoZXkgY2xhaW0gaXQgdG8gYmUuIEl0J3MgcmVhbGx5IGp1c3QgYW4gbWljcm9wcm9jZXNzb3IgKHVDKSBjcmVhdGVkIGJ5CiBXaW5ib25kIChXODNMOTUwRCkuIEFuZCBubywgcmVhZGluZyB0aGUgbWFudWFsIGZvciB0aGlzIHNwZWNpZmljIHVDIG9yCi1tYWlsaW5nICBXaW5kYm9uZCBmb3IgaGVscCB3b24ndCBnaXZlIGFueSB1c2VmdWxsIGRhdGEgYWJvdXQgdUd1cnUsIGFzIGl0IGlzCittYWlsaW5nICBXaW5kYm9uZCBmb3IgaGVscCB3b24ndCBnaXZlIGFueSB1c2VmdWwgZGF0YSBhYm91dCB1R3VydSwgYXMgaXQgaXMKIHRoZSBwcm9ncmFtIGluc2lkZSB0aGUgdUMgdGhhdCBpcyByZXNwb25kaW5nIHRvIGNhbGxzLgogCiBPbGxlIFNhbmRiZXJnIDxvbGxlYnVsbEBnbWFpbC5jb20+LCAyMDA1LTA1LTI1CkBAIC00MSw3ICs0MSw3IEBACiAKIEFmdGVyIHdpZGVyIHRlc3Rpbmcgb2YgdGhlIExpbnV4IGtlcm5lbCBkcml2ZXIgc29tZSB2YXJpYW50cyBvZiB0aGUgdUd1cnUgaGF2ZQogdHVybmVkIHVwIHdoaWNoIHdpbGwgaG9sZCAweDAwIGluc3RlYWQgb2YgMHhBQyBhdCB0aGUgQ01EIHBvcnQsIHRodXMgd2UgYWxzbwotaGF2ZSB0byB0ZXN0IENNRCBmb3IgdHdvIGRpZmZlcmVudCB2YWx1ZXMuIE9uIHRoZXNlIHVHdXJ1J3MgREFUQSB3aWxsIGluaXRhbGx5CitoYXZlIHRvIHRlc3QgQ01EIGZvciB0d28gZGlmZmVyZW50IHZhbHVlcy4gT24gdGhlc2UgdUd1cnUncyBEQVRBIHdpbGwgaW5pdGlhbGx5CiBob2xkIDB4MDkgYW5kIHdpbGwgb25seSBob2xkIDB4MDggYWZ0ZXIgcmVhZGluZyBDTUQgZmlyc3QsIHNvIENNRCBtdXN0IGJlIHJlYWQKIGZpcnN0IQogCkBAIC0zMDgsNSArMzA4LDUgQEAKIHJlc3VsdGVkIGluIGEgX3Blcm1hbmVudF8gcmVwcm9ncmFtbWluZyBvZiB0aGUgdm9sdGFnZXMsIGx1Y2tpbHkgSSBoYWQgdGhlCiBzZW5zb3JzIHBhcnQgY29uZmlndXJlZCBzbyB0aGF0IGl0IHdvdWxkIHNodXRkb3duIG15IHN5c3RlbSBvbiBhbnkgb3V0IG9mIHNwZWMKIHZvbHRhZ2VzIHdoaWNoIHByb3ByYWJseSBzYWZlZCBteSBjb21wdXRlciAoYWZ0ZXIgYSByZWJvb3QgSSBtYW5hZ2VkIHRvCi1pbW1lZGlhdGx5IGVudGVyIHRoZSBiaW9zIGFuZCByZWxvYWQgdGhlIGRlZmF1bHRzKS4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0CitpbW1lZGlhdGVseSBlbnRlciB0aGUgYmlvcyBhbmQgcmVsb2FkIHRoZSBkZWZhdWx0cykuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdAogdGhlIHJlYWQvd3JpdGUgY3ljbGUgZm9yIHRoZSBub24gc2Vuc29yIHBhcnQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHNlbnNvciBwYXJ0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUzIGIvRG9jdW1lbnRhdGlvbi9od21vbi9hYml0dWd1cnUzCmluZGV4IGZhNTk4YWEuLmE2Y2NmZTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vYWJpdHVndXJ1MworKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL2FiaXR1Z3VydTMKQEAgLTQ3LDcgKzQ3LDcgQEAKIHRoZSBBYml0IHVHdXJ1IGNoaXAsIGZvdW5kIG9uIHJlY2VudCBBYml0IHVHdXJ1IGZlYXR1cmluZyBtb3RoZXJib2FyZHMuCiAKIFRoZSAzcmQgcmV2aXNpb24gb2YgdGhlIHVHdXJ1IGNoaXAgaW4gcmVhbGl0eSBpcyBhIFdpbmJvbmQgVzgzTDk1MUcuCi1VbmZvcnR1bmF0bHkgdGhpcyBkb2Vzbid0IGhlbHAgc2luY2UgdGhlIFc4M0w5NTFHIGlzIGEgZ2VuZXJpYyBtaWNyb2NvbnRyb2xsZXIKK1VuZm9ydHVuYXRlbHkgdGhpcyBkb2Vzbid0IGhlbHAgc2luY2UgdGhlIFc4M0w5NTFHIGlzIGEgZ2VuZXJpYyBtaWNyb2NvbnRyb2xsZXIKIHdpdGggYSBjdXN0b20gQWJpdCBhcHBsaWNhdGlvbiBydW5uaW5nIG9uIGl0LgogCiBEZXNwaXRlIEFiaXQgbm90IHJlbGVhc2luZyBhbnkgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB1R3VydSByZXZpc2lvbiAzLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cyBiL0RvY3VtZW50YXRpb24vaHdtb24vcG1idXMKaW5kZXggZjJkNDJlOC4uZGM0OTMzZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi9wbWJ1cworKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3BtYnVzCkBAIC0xNTAsMTEgKzE1MCwxMSBAQAogYXR0cmlidXRlcyBhcmUgcmVhZC1vbmx5LgogCiBpblhfaW5wdXQJCU1lYXN1cmVkIHZvbHRhZ2UuIEZyb20gUkVBRF9WSU4gb3IgUkVBRF9WT1VUIHJlZ2lzdGVyLgotaW5YX21pbgkJCU1pbnVtdW0gVm9sdGFnZS4KK2luWF9taW4JCQlNaW5pbXVtIFZvbHRhZ2UuCiAJCQlGcm9tIFZJTl9VVl9XQVJOX0xJTUlUIG9yIFZPVVRfVVZfV0FSTl9MSU1JVCByZWdpc3Rlci4KIGluWF9tYXgJCQlNYXhpbXVtIHZvbHRhZ2UuCiAJCQlGcm9tIFZJTl9PVl9XQVJOX0xJTUlUIG9yIFZPVVRfT1ZfV0FSTl9MSU1JVCByZWdpc3Rlci4KLWluWF9sY3JpdAkJQ3JpdGljYWwgbWludW11bSBWb2x0YWdlLgoraW5YX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIFZvbHRhZ2UuCiAJCQlGcm9tIFZJTl9VVl9GQVVMVF9MSU1JVCBvciBWT1VUX1VWX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgogaW5YX2NyaXQJCUNyaXRpY2FsIG1heGltdW0gdm9sdGFnZS4KIAkJCUZyb20gVklOX09WX0ZBVUxUX0xJTUlUIG9yIFZPVVRfT1ZfRkFVTFRfTElNSVQgcmVnaXN0ZXIuCkBAIC0xNjksNyArMTY5LDcgQEAKIGN1cnJYX2lucHV0CQlNZWFzdXJlZCBjdXJyZW50LiBGcm9tIFJFQURfSUlOIG9yIFJFQURfSU9VVCByZWdpc3Rlci4KIGN1cnJYX21heAkJTWF4aW11bSBjdXJyZW50LgogCQkJRnJvbSBJSU5fT0NfV0FSTl9MSU1JVCBvciBJT1VUX09DX1dBUk5fTElNSVQgcmVnaXN0ZXIuCi1jdXJyWF9sY3JpdAkJQ3JpdGljYWwgbWludW11bSBvdXRwdXQgY3VycmVudC4KK2N1cnJYX2xjcml0CQlDcml0aWNhbCBtaW5pbXVtIG91dHB1dCBjdXJyZW50LgogCQkJRnJvbSBJT1VUX1VDX0ZBVUxUX0xJTUlUIHJlZ2lzdGVyLgogY3VyclhfY3JpdAkJQ3JpdGljYWwgbWF4aW11bSBjdXJyZW50LgogCQkJRnJvbSBJSU5fT0NfRkFVTFRfTElNSVQgb3IgSU9VVF9PQ19GQVVMVF9MSU1JVCByZWdpc3Rlci4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaHdtb24vc3lzZnMtaW50ZXJmYWNlIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKaW5kZXggODNhNjk4Ny4uOGY2M2MyNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKKysrIGIvRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UKQEAgLTU3OSw3ICs1NzksNyBAQAogZmFuWzEtKl1fZmF1bHQKIHRlbXBbMS0qXV9mYXVsdAogCQlJbnB1dCBmYXVsdCBjb25kaXRpb24KLQkJMDogbm8gZmF1bHQgb2NjdXJlZAorCQkwOiBubyBmYXVsdCBvY2N1cnJlZAogCQkxOiBmYXVsdCBjb25kaXRpb24KIAkJUk8KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3ODFkCmluZGV4IGVjYmMxZTQuLjEyOWIwYTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzgxZAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc4MWQKQEAgLTQwMyw3ICs0MDMsNyBAQAogCiAweDgwIC0gc2VlbXMgdG8gdHVybiBmYW5zIG9mZiBhZnRlciBzb21lIHRpbWUoMS0yIG1pbnV0ZXMpLi4uIG1pZ2h0IGJlCiBzb21lIGZvcm0gb2YgYXV0by1mYW4tY29udHJvbCBiYXNlZCBvbiB0ZW1wPyBobW0gKFFmYW4/IHRoaXMgbW9ibyBpcyBhbgotb2xkIEFTVVMsIGl0IGlzbid0IG1hcmtldGVkIGFzIFFmYW4uIE1heWJlIHNvbWUgYmV0YSBwcmUtYXR0ZW1wIGF0IFFmYW4KK29sZCBBU1VTLCBpdCBpc24ndCBtYXJrZXRlZCBhcyBRZmFuLiBNYXliZSBzb21lIGJldGEgcHJlLWF0dGVtcHQgYXQgUWZhbgogdGhhdCB3YXMgZHJvcHBlZCBhdCB0aGUgQklPUykKIDB4ODEgLSBvZmYKIDB4ODIgLSBzbGlnaHRseSAib24tbmVyIiB0aGFuIG9mZiwgYnV0IG15IGZhbnMgZG8gbm90IGdldCB0byBtb3ZlLiBJIGNhbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkIGIvRG9jdW1lbnRhdGlvbi9od21vbi93ODM3OTFkCmluZGV4IDU2NjNlNDkuLjkwMzg3YzMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaHdtb24vdzgzNzkxZAorKysgYi9Eb2N1bWVudGF0aW9uL2h3bW9uL3c4Mzc5MWQKQEAgLTkzLDcgKzkzLDcgQEAKIG1ldGhvZCBvZiBhIHNpbmdsZSBzeXNmcyBiZWVwX21hc2sgZmlsZSB0byBhIG5ld2VyIG1ldGhvZCB1c2luZyBtdWx0aXBsZQogKl9iZWVwIGZpbGVzIGFzIGRlc2NyaWJlZCBpbiAuLi4vRG9jdW1lbnRhdGlvbi9od21vbi9zeXNmcy1pbnRlcmZhY2UuCiAKLUEgc2ltaWxhciBjaGFuZ2UgaGFzIG9jY3VyZWQgZm9yIHRoZSBiaXRtYXAgY29ycmVzcG9uZGluZyB0byB0aGUgYWxhcm1zLiBUaGUKK0Egc2ltaWxhciBjaGFuZ2UgaGFzIG9jY3VycmVkIGZvciB0aGUgYml0bWFwIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFsYXJtcy4gVGhlCiBvcmlnaW5hbCBsZWdhY3kgbWV0aG9kIHVzZWQgYSBzaW5nbGUgc3lzZnMgYWxhcm1zIGZpbGUgY29udGFpbmluZyBhIGJpdG1hcAogb2YgdHJpZ2dlcmVkIGFsYXJtcy4gVGhlIG5ld2VyIG1ldGhvZCB1c2VzIG11bHRpcGxlIHN5c2ZzICpfYWxhcm0gZmlsZXMKIChhZ2FpbiBmb2xsb3dpbmcgdGhlIHBhdHRlcm4gZGVzY3JpYmVkIGluIHN5c2ZzLWludGVyZmFjZSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBhcnBvcnQtbGlnaHQgYi9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXBhcnBvcnQtbGlnaHQKaW5kZXggYmRjOWNiYi4uYzIyZWUwNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy1wYXJwb3J0LWxpZ2h0CisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtcGFycG9ydC1saWdodApAQCAtNCw3ICs0LDcgQEAKIAogVGhpcyBkcml2ZXIgaXMgYSBsaWdodCB2ZXJzaW9uIG9mIGkyYy1wYXJwb3J0LiBJdCBkb2Vzbid0IGRlcGVuZCAgICAgICAgCiBvbiB0aGUgcGFycG9ydCBkcml2ZXIsIGFuZCB1c2VzIGRpcmVjdCBJL08gYWNjZXNzIGluc3RlYWQuIFRoaXMgbWlnaHQgYmUKLXByZWZlcmVkIG9uIGVtYmVkZGVkIHN5c3RlbXMgd2hlcmUgd2FzdGluZyBtZW1vcnkgZm9yIHRoZSBjbGVhbiBidXQgaGVhdnkKK3ByZWZlcnJlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zIHdoZXJlIHdhc3RpbmcgbWVtb3J5IGZvciB0aGUgY2xlYW4gYnV0IGhlYXZ5CiBwYXJwb3J0IGhhbmRsaW5nIGlzIG5vdCBhbiBvcHRpb24uIFRoZSBkcmF3YmFjayBpcyBhIHJlZHVjZWQgcG9ydGFiaWxpdHkKIGFuZCB0aGUgaW1wb3NzaWJpbGl0eSB0byBkYWlzeS1jaGFpbiBvdGhlciBwYXJhbGxlbCBwb3J0IGRldmljZXMuICAgICAgICAgICAgICAgICAKICAgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXNpczk2eCBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CmluZGV4IDcwZTZhMGMuLjBiOTc5ZjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtc2lzOTZ4CkBAIC0zNSw3ICszNSw3IEBACiAKIChrZXJuZWwgdmVyc2lvbnMgbGF0ZXIgdGhhbiAyLjQuMTggbWF5IGZpbGwgaW4gdGhlICJVbmtub3duInMpCiAKLUlmIHlvdSBjYW50IHNlZSBpdCBwbGVhc2UgbG9vayBvbiBxdWlya19zaXNfOTZ4X3NtYnVzCitJZiB5b3UgY2FuJ3Qgc2VlIGl0IHBsZWFzZSBsb29rIG9uIHF1aXJrX3Npc185Nnhfc21idXMKIChkcml2ZXJzL3BjaS9xdWlya3MuYykgKGFsc28gaWYgc291dGhicmlkZ2UgZGV0ZWN0aW9uIGZhaWxzKQogCiBJIHN1c3BlY3QgdGhhdCB0aGlzIGRyaXZlciBjb3VsZCBiZSBtYWRlIHRvIHdvcmsgZm9yIHRoZSBmb2xsb3dpbmcgU2lTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXRhb3MtZXZtIGIvRG9jdW1lbnRhdGlvbi9pMmMvYnVzc2VzL2kyYy10YW9zLWV2bQppbmRleCA5MTQ2ZTMzLi42M2Y2MmJjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kyYy9idXNzZXMvaTJjLXRhb3MtZXZtCisrKyBiL0RvY3VtZW50YXRpb24vaTJjL2J1c3Nlcy9pMmMtdGFvcy1ldm0KQEAgLTEzLDcgKzEzLDcgQEAKIAogKiBUQU9TIFRTTDI1NTAgRVZNCiAKLUZvciBhZGR0aW9uYWwgaW5mb3JtYXRpb24gb24gVEFPUyBwcm9kdWN0cywgcGxlYXNlIHNlZQorRm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gVEFPUyBwcm9kdWN0cywgcGxlYXNlIHNlZQogICBodHRwOi8vd3d3LnRhb3NpbmMuY29tLwogCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaTJvL1JFQURNRSBiL0RvY3VtZW50YXRpb24vaTJvL1JFQURNRQppbmRleCAwZWJmNThjLi5lZTkxZTI2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2kyby9SRUFETUUKKysrIGIvRG9jdW1lbnRhdGlvbi9pMm8vUkVBRE1FCkBAIC01Myw3ICs1Myw3IEBACiBCb3hIaWxsIENvcnBvcmF0aW9uCiAJTG9hbiBvZiBpbml0aWFsIEZpYnJlQ2hhbm5lbCBkaXNrIGFycmF5IHVzZWQgZm9yIGRldmVsb3BtZW50IHdvcmsuCiAKLUV1cm9wZWFuIENvbWlzc2lvbgorRXVyb3BlYW4gQ29tbWlzc2lvbgogCUZ1bmRpbmcgdGhlIHdvcmsgZG9uZSBieSB0aGUgVW5pdmVyc2l0eSBvZiBIZWxzaW5raQogCiBTeXNLb25uZWN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmctdGVzdC5jIGIvRG9jdW1lbnRhdGlvbi9pYTY0L2FsaWFzaW5nLXRlc3QuYwppbmRleCAzZGZiNzZjLi41Y2FhMmFmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lhNjQvYWxpYXNpbmctdGVzdC5jCisrKyBiL0RvY3VtZW50YXRpb24vaWE2NC9hbGlhc2luZy10ZXN0LmMKQEAgLTE3Nyw3ICsxNzcsNyBAQAogCiAJCQkvKgogCQkJICogSXQncyBPSyBpZiB0aGUgUk9NIGlzIHVucmVhZGFibGUuICBNYXliZSB0aGVyZQotCQkJICogaXMgbm8gUk9NLCBvciBzb21lIG90aGVyIGVycm9yIG9jdXJyZWQuICBUaGUKKwkJCSAqIGlzIG5vIFJPTSwgb3Igc29tZSBvdGhlciBlcnJvciBvY2N1cnJlZC4gIFRoZQogCQkJICogaW1wb3J0YW50IHRoaW5nIGlzIHRoYXQgbm8gTUNBIGhhcHBlbmVkLgogCQkJICovCiAJCQlpZiAocmMgPiAwKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1wYXJwb3J0LnR4dCBiL0RvY3VtZW50YXRpb24vaW5wdXQvam95c3RpY2stcGFycG9ydC50eHQKaW5kZXggMWM4NTZmMy4uNTY4NzBjNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9qb3lzdGljay1wYXJwb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L2pveXN0aWNrLXBhcnBvcnQudHh0CkBAIC0yNzIsNyArMjcyLDcgQEAKIAogICBBbHNvLCB0aGUgY29ubmVjdGlvbiBpcyBhIGJpdCBtb3JlIGNvbXBsZXguIFlvdSdsbCBuZWVkIGEgYnVuY2ggb2YgZGlvZGVzLAogYW5kIG9uZSBwdWxsdXAgcmVzaXN0b3IuIEZpcnN0LCB5b3UgY29ubmVjdCB0aGUgRGlyZWN0aW9ucyBhbmQgdGhlIGJ1dHRvbgotdGhlIHNhbWUgYXMgZm9yIGRiOSwgaG93ZXZlciB3aXRoIHRoZSBkaW9kZXMgaW5iZXR3ZWVuLgordGhlIHNhbWUgYXMgZm9yIGRiOSwgaG93ZXZlciB3aXRoIHRoZSBkaW9kZXMgYmV0d2Vlbi4KIAogCSAgICBEaW9kZXMKIChwaW4gMikgLS0tLS18PHwtLS0tPiBVcApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9pbnB1dC9yb3RhcnktZW5jb2Rlci50eHQgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dAppbmRleCA4YjQxMjlkLi45NDNlOGY2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2lucHV0L3JvdGFyeS1lbmNvZGVyLnR4dApAQCAtNDYsNyArNDYsNyBAQAogCiBkKSBGYWxsaW5nIGVkZ2Ugb24gY2hhbm5lbCBCLCBjaGFubmVsIEEgaW4gbG93IHN0YXRlCiAJUGFya2luZyBwb3NpdGlvbi4gSWYgdGhlIGVuY29kZXIgZW50ZXJzIHRoaXMgc3RhdGUsIGEgZnVsbCB0cmFuc2l0aW9uCi0Jc2hvdWxkIGhhdmUgaGFwcGVuZCwgdW5sZXNzIGl0IGZsaXBwZWQgYmFjayBvbiBoYWxmIHRoZSB3YXkuIFRoZQorCXNob3VsZCBoYXZlIGhhcHBlbmVkLCB1bmxlc3MgaXQgZmxpcHBlZCBiYWNrIG9uIGhhbGYgdGhlIHdheS4gVGhlCiAJJ2FybWVkJyBzdGF0ZSB0ZWxscyB1cyBhYm91dCB0aGF0LgogCiAyLiBQbGF0Zm9ybSByZXF1aXJlbWVudHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaW5wdXQvd2Fsa2VyYTA3MDEudHh0IGIvRG9jdW1lbnRhdGlvbi9pbnB1dC93YWxrZXJhMDcwMS50eHQKaW5kZXggOGY0Mjg5ZS4uNTYxMzg1ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pbnB1dC93YWxrZXJhMDcwMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pbnB1dC93YWxrZXJhMDcwMS50eHQKQEAgLTc3LDcgKzc3LDcgQEAKIAogMjQgYmluK29jdCB2YWx1ZXMgKyAxIGJpbiB2YWx1ZSA9IDI0KjQrMSBiaXRzICA9IDk3IGJpdHMKIAotKFdhcm5pbmcsIHB1bHNlcyBvbiBBQ0sgYXIgaW52ZXJ0ZWQgYnkgdHJhbnNpc3RvciwgaXJxIGlzIHJpc2VkIHVwIG9uIHN5bmMKKyhXYXJuaW5nLCBwdWxzZXMgb24gQUNLIGFyZSBpbnZlcnRlZCBieSB0cmFuc2lzdG9yLCBpcnEgaXMgcmFpc2VkIHVwIG9uIHN5bmMKIHRvIGJpbiBjaGFuZ2Ugb3Igb2N0YWwgdmFsdWUgdG8gYmluIGNoYW5nZSkuCiAKIEJpbmFyeSBkYXRhIHJlcHJlc2VudGF0aW9uczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vaXJxZmxhZ3MtdHJhY2luZy50eHQgYi9Eb2N1bWVudGF0aW9uL2lycWZsYWdzLXRyYWNpbmcudHh0CmluZGV4IDZhNDQ0ODcuLjY3YWE3MWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaXJxZmxhZ3MtdHJhY2luZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9pcnFmbGFncy10cmFjaW5nLnR4dApAQCAtNTMsNSArNTMsNSBAQAogdHVybiBpdHNlbGYgb2ZmLiBJLmUuIHRoZSBsb2NrIHZhbGlkYXRvciB3aWxsIHN0aWxsIGJlIHJlbGlhYmxlLiBUaGVyZQogc2hvdWxkIGJlIG5vIGNyYXNoZXMgZHVlIHRvIGlycS10cmFjaW5nIGJ1Z3MuIChleGNlcHQgaWYgdGhlIGFzc2VtYmx5CiBjaGFuZ2VzIGJyZWFrIG90aGVyIGNvZGUgYnkgbW9kaWZ5aW5nIGNvbmRpdGlvbnMgb3IgcmVnaXN0ZXJzIHRoYXQKLXNob3VsZG50IGJlKQorc2hvdWxkbid0IGJlKQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFLkNBUEkgYi9Eb2N1bWVudGF0aW9uL2lzZG4vSU5URVJGQUNFLkNBUEkKaW5kZXggMzA5ZWI1ZS4uMTY4OGI1YSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9pc2RuL0lOVEVSRkFDRS5DQVBJCisrKyBiL0RvY3VtZW50YXRpb24vaXNkbi9JTlRFUkZBQ0UuQ0FQSQpAQCAtMjQwLDcgKzI0MCw3IEBACiBtZXNzYWdlcyBiZXR3ZWVuIHRoZWlyIHRyYW5zcG9ydCBlbmNvZGluZyBkZXNjcmliZWQgaW4gdGhlIENBUEkgMi4wIHN0YW5kYXJkCiBhbmQgdGhlaXIgX2Ntc2cgc3RydWN0dXJlIHJlcHJlc2VudGF0aW9uLiBOb3RlIHRoYXQgY2FwaV9jbXNnMm1lc3NhZ2UoKSBkb2VzCiBub3Qga25vdyBvciBjaGVjayB0aGUgc2l6ZSBvZiBpdHMgZGVzdGluYXRpb24gYnVmZmVyLiBUaGUgY2FsbGVyIG11c3QgbWFrZQotc3VyZSBpdCBpcyBiaWcgZW5vdWdoIHRvIGFjY29tb2RhdGUgdGhlIHJlc3VsdGluZyBDQVBJIG1lc3NhZ2UuCitzdXJlIGl0IGlzIGJpZyBlbm91Z2ggdG8gYWNjb21tb2RhdGUgdGhlIHJlc3VsdGluZyBDQVBJIG1lc3NhZ2UuCiAKIAogNS4gTG93ZXIgTGF5ZXIgSW50ZXJmYWNlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2J1aWxkLnR4dCBiL0RvY3VtZW50YXRpb24va2J1aWxkL2tidWlsZC50eHQKaW5kZXggZjE0MzFkMC4uN2MyYTg5YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rYnVpbGQva2J1aWxkLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2tidWlsZC9rYnVpbGQudHh0CkBAIC0yNiwxMSArMjYsMTEgQEAKIAogQUZMQUdTX01PRFVMRQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFkZHRpb25hbCBtb2R1bGUgc3BlY2lmaWMgb3B0aW9ucyB0byB1c2UgZm9yICQoQVMpLgorQWRkaXRpb25hbCBtb2R1bGUgc3BlY2lmaWMgb3B0aW9ucyB0byB1c2UgZm9yICQoQVMpLgogCiBBRkxBR1NfS0VSTkVMCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQWRkdGlvbmFsIG9wdGlvbnMgZm9yICQoQVMpIHdoZW4gdXNlZCBmb3IgYXNzZW1ibGVyCitBZGRpdGlvbmFsIG9wdGlvbnMgZm9yICQoQVMpIHdoZW4gdXNlZCBmb3IgYXNzZW1ibGVyCiBjb2RlIGZvciBjb2RlIHRoYXQgaXMgY29tcGlsZWQgYXMgYnVpbHQtaW4uCiAKIEtDRkxBR1MKQEAgLTM5LDEyICszOSwxMiBAQAogCiBDRkxBR1NfS0VSTkVMCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQWRkdGlvbmFsIG9wdGlvbnMgZm9yICQoQ0MpIHdoZW4gdXNlZCB0byBjb21waWxlCitBZGRpdGlvbmFsIG9wdGlvbnMgZm9yICQoQ0MpIHdoZW4gdXNlZCB0byBjb21waWxlCiBjb2RlIHRoYXQgaXMgY29tcGlsZWQgYXMgYnVpbHQtaW4uCiAKIENGTEFHU19NT0RVTEUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BZGR0aW9uYWwgbW9kdWxlIHNwZWNpZmljIG9wdGlvbnMgdG8gdXNlIGZvciAkKENDKS4KK0FkZGl0aW9uYWwgbW9kdWxlIHNwZWNpZmljIG9wdGlvbnMgdG8gdXNlIGZvciAkKENDKS4KIAogTERGTEFHU19NT0RVTEUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2tlcm5lbC1wYXJhbWV0ZXJzLnR4dCBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CmluZGV4IGQyYjUxNTAuLmNjODVhOTIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24va2VybmVsLXBhcmFtZXRlcnMudHh0CkBAIC02OTksNyArNjk5LDcgQEAKIAlla2dkYm9jPQlbWDg2LEtHREJdIEFsbG93IGVhcmx5IGtlcm5lbCBjb25zb2xlIGRlYnVnZ2luZwogCQkJZWtnZGJvYz1rYmQKIAotCQkJVGhpcyBpcyBkZXNnaW5lZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGgKKwkJCVRoaXMgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoCiAJCQl0aGUgYm9vdCBhcmd1bWVudDogZWFybHlwcmludGs9dmdhCiAKIAllZGQ9CQlbRUREXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9rdm0vbW11LnR4dCBiL0RvY3VtZW50YXRpb24va3ZtL21tdS50eHQKaW5kZXggMTQyY2M1MS4uZjQ2YWE1OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rdm0vbW11LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2t2bS9tbXUudHh0CkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgICAgICAgICBhbmQgZnJhbWVidWZmZXItYmFzZWQgZGlzcGxheXMKIC0gZm9vdHByaW50OiAgIGtlZXAgdGhlIGFtb3VudCBvZiBwaW5uZWQga2VybmVsIG1lbW9yeSBsb3cgKG1vc3QgbWVtb3J5CiAgICAgICAgICAgICAgICBzaG91bGQgYmUgc2hyaW5rYWJsZSkKLS0gcmVsaWFibGl0eTogIGF2b2lkIG11bHRpcGFnZSBvciBHRlBfQVRPTUlDIGFsbG9jYXRpb25zCistIHJlbGlhYmlsaXR5OiAgYXZvaWQgbXVsdGlwYWdlIG9yIEdGUF9BVE9NSUMgYWxsb2NhdGlvbnMKIAogQWNyb255bXMKID09PT09PT09CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2t2bS9wcGMtcHYudHh0IGIvRG9jdW1lbnRhdGlvbi9rdm0vcHBjLXB2LnR4dAppbmRleCBhN2YyMjQ0Li4zYWI5NjljIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2t2bS9wcGMtcHYudHh0CisrKyBiL0RvY3VtZW50YXRpb24va3ZtL3BwYy1wdi50eHQKQEAgLTEzNiw3ICsxMzYsNyBAQAogPT09PT09PT09PT09PT09PT09PT0KIAogVGhlICJsZCIgYW5kICJzdGQiIGluc3RydWN0aW9ucyBhcmUgdHJhbnNvcm1lZCB0byAibHd6IiBhbmQgInN0dyIgaW5zdHJ1Y3Rpb25zCi1yZXNwZWN0aXZlbHkgb24gMzIgYml0IHN5c3RlbXMgd2l0aCBhbiBhZGRlZCBvZmZzZXQgb2YgNCB0byBhY2NvbW9kYXRlIGZvciBiaWcKK3Jlc3BlY3RpdmVseSBvbiAzMiBiaXQgc3lzdGVtcyB3aXRoIGFuIGFkZGVkIG9mZnNldCBvZiA0IHRvIGFjY29tbW9kYXRlIGZvciBiaWcKIGVuZGlhbm5lc3MuCiAKIFRoZSBmb2xsb3dpbmcgaXMgYSBsaXN0IG9mIG1hcHBpbmcgdGhlIExpbnV4IGtlcm5lbCBwZXJmb3JtcyB3aGVuIHJ1bm5pbmcgYXMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24va3ZtL3RpbWVrZWVwaW5nLnR4dCBiL0RvY3VtZW50YXRpb24va3ZtL3RpbWVrZWVwaW5nLnR4dAppbmRleCAwYzUwMzNhLi5kZjg5NDYzNyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9rdm0vdGltZWtlZXBpbmcudHh0CisrKyBiL0RvY3VtZW50YXRpb24va3ZtL3RpbWVrZWVwaW5nLnR4dApAQCAtODEsNyArODEsNyBAQAogIHdoZW4gdGhlIGdhdGUgaXMgaGlnaCAoYWx3YXlzIHRydWUgZm9yIHRpbWVycyAwIGFuZCAxKS4gIFdoZW4gdGhlIGNvdW50CiAgcmVhY2hlcyB6ZXJvLCB0aGUgb3V0cHV0IGdvZXMgaGlnaC4KIAotTW9kZSAxOiBUcmlnZ2VyZWQgT25lLXNob3QuICBUaGUgb3V0cHV0IGlzIGludGlhbGx5IHNldCBoaWdoLiAgV2hlbiB0aGUgZ2F0ZQorTW9kZSAxOiBUcmlnZ2VyZWQgT25lLXNob3QuICBUaGUgb3V0cHV0IGlzIGluaXRpYWxseSBzZXQgaGlnaC4gIFdoZW4gdGhlIGdhdGUKICBsaW5lIGlzIHNldCBoaWdoLCBhIGNvdW50ZG93biBpcyBpbml0aWF0ZWQgKHdoaWNoIGRvZXMgbm90IHN0b3AgaWYgdGhlIGdhdGUgaXMKICBsb3dlcmVkKSwgZHVyaW5nIHdoaWNoIHRoZSBvdXRwdXQgaXMgc2V0IGxvdy4gIFdoZW4gdGhlIGNvdW50IHJlYWNoZXMgemVybywKICB0aGUgb3V0cHV0IGdvZXMgaGlnaC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVkaWEtZnJhbWV3b3JrLnR4dCBiL0RvY3VtZW50YXRpb24vbWVkaWEtZnJhbWV3b3JrLnR4dAppbmRleCBmZDQ4YWRkLi43NmEyMDg3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21lZGlhLWZyYW1ld29yay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9tZWRpYS1mcmFtZXdvcmsudHh0CkBAIC0xOTQsNyArMTk0LDcgQEAKIAogTGlua3MgYXJlIHJlcHJlc2VudGVkIGJ5IGEgc3RydWN0IG1lZGlhX2xpbmsgaW5zdGFuY2UsIGRlZmluZWQgaW4KIGluY2x1ZGUvbWVkaWEvbWVkaWEtZW50aXR5LmguIEVhY2ggZW50aXR5IHN0b3JlcyBhbGwgbGlua3Mgb3JpZ2luYXRpbmcgYXQgb3IKLXRhcmdldHRpbmcgYW55IG9mIGl0cyBwYWRzIGluIGEgbGlua3MgYXJyYXkuIEEgZ2l2ZW4gbGluayBpcyB0aHVzIHN0b3JlZAordGFyZ2V0aW5nIGFueSBvZiBpdHMgcGFkcyBpbiBhIGxpbmtzIGFycmF5LiBBIGdpdmVuIGxpbmsgaXMgdGh1cyBzdG9yZWQKIHR3aWNlLCBvbmNlIGluIHRoZSBzb3VyY2UgZW50aXR5IGFuZCBvbmNlIGluIHRoZSB0YXJnZXQgZW50aXR5LiBUaGUgYXJyYXkgaXMKIHByZS1hbGxvY2F0ZWQgYW5kIGdyb3dzIGR5bmFtaWNhbGx5IGFzIG5lZWRlZC4KIApAQCAtMzQ4LDYgKzM0OCw2IEBACiB3aXRoIHRoZSBNRURJQV9MTktfRkxfRFlOQU1JQyBmbGFnLgogCiBJZiBvdGhlciBvcGVyYXRpb25zIG5lZWQgdG8gYmUgZGlzYWxsb3dlZCBvbiBzdHJlYW1pbmcgZW50aXRpZXMgKHN1Y2ggYXMKLWNoYW5naW5nIGVudGl0aWVzIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycykgZHJpdmVycyBjYW4gZXhwbGljdGx5IGNoZWNrIHRoZQorY2hhbmdpbmcgZW50aXRpZXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzKSBkcml2ZXJzIGNhbiBleHBsaWNpdGx5IGNoZWNrIHRoZQogbWVkaWFfZW50aXR5IHN0cmVhbV9jb3VudCBmaWVsZCB0byBmaW5kIG91dCBpZiBhbiBlbnRpdHkgaXMgc3RyZWFtaW5nLiBUaGlzCiBvcGVyYXRpb24gbXVzdCBiZSBkb25lIHdpdGggdGhlIG1lZGlhX2RldmljZSBncmFwaF9tdXRleCBoZWxkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FIGIvRG9jdW1lbnRhdGlvbi9taXBzL0FVMXh4eF9JREUuUkVBRE1FCmluZGV4IDhhY2UzNWUuLmNjODg3ZWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWlwcy9BVTF4eHhfSURFLlJFQURNRQorKysgYi9Eb2N1bWVudGF0aW9uL21pcHMvQVUxeHh4X0lERS5SRUFETUUKQEAgLTM5LDEzICszOSwxMyBAQAogICAgICAgSW50ZXJmYWNlIGFuZCBMaW51eCBEZXZpY2UgRHJpdmVyIiBBcHBsaWNhdGlvbiBOb3RlLgogCiAKLUZJTEVTLCBDT05GSUdTIEFORCBDT01QQVRBQklMSVRZCitGSUxFUywgQ09ORklHUyBBTkQgQ09NUEFUSUJJTElUWQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogVHdvIGZpbGVzIGFyZSBpbnRyb2R1Y2VkOgogCiAgIGEpICdhcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1hdTF4MDAvYXUxeHh4X2lkZS5oJwotICAgICBjb250YWluZXMgOiBzdHJ1Y3QgX2F1aWRlX2h3aWYKKyAgICAgY29udGFpbnMgOiBzdHJ1Y3QgX2F1aWRlX2h3aWYKICAgICAgICAgICAgICAgICAgdGltaW5nIHBhcmFtZXRlcnMgZm9yIFBJTyBtb2RlIDAvMS8yLzMvNAogICAgICAgICAgICAgICAgICB0aW1pbmcgcGFyYW1ldGVycyBmb3IgTVdETUEgMC8xLzIKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaWNzOTMyczQwMSBiL0RvY3VtZW50YXRpb24vbWlzYy1kZXZpY2VzL2ljczkzMnM0MDEKaW5kZXggMDdhNzM5Zi4uYmRhYzY3ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9taXNjLWRldmljZXMvaWNzOTMyczQwMQorKysgYi9Eb2N1bWVudGF0aW9uL21pc2MtZGV2aWNlcy9pY3M5MzJzNDAxCkBAIC01LDcgKzUsNyBAQAogICAqIElEVCBJQ1M5MzJTNDAxCiAgICAgUHJlZml4OiAnaWNzOTMyczQwMScKICAgICBBZGRyZXNzZXMgc2Nhbm5lZDogSTJDIDB4NjkKLSAgICBEYXRhc2hlZXQ6IFB1YmxpY2FsbHkgYXZhaWxhYmxlIGF0IHRoZSBJRFQgd2Vic2l0ZQorICAgIERhdGFzaGVldDogUHVibGljbHkgYXZhaWxhYmxlIGF0IHRoZSBJRFQgd2Vic2l0ZQogCiBBdXRob3I6IERhcnJpY2sgSi4gV29uZwogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvM2MzNTkudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nLzNjMzU5LnR4dAppbmRleCA0YWY4MDcxLi5kYWRmZTgxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvM2MzNTkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy8zYzM1OS50eHQKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogVmFyaWFibGUgTVRVIHNpemU6CiAKLVRoZSBkcml2ZXIgY2FuIGhhbmRsZSBhIE1UVSBzaXplIHVwdG8gZWl0aGVyIDQ1MDAgb3IgMTgwMDAgZGVwZW5kaW5nIHVwb24gCitUaGUgZHJpdmVyIGNhbiBoYW5kbGUgYSBNVFUgc2l6ZSB1cCB0byBlaXRoZXIgNDUwMCBvciAxODAwMCBkZXBlbmRpbmcgdXBvbiAKIHJpbmcgc3BlZWQuICBUaGUgZHJpdmVyIGFsc28gY2hhbmdlcyB0aGUgc2l6ZSBvZiB0aGUgcmVjZWl2ZSBidWZmZXJzIGFzIHBhcnQKIG9mIHRoZSBtdHUgcmUtc2l6aW5nLCBzbyBpZiB5b3Ugc2V0IG10dSA9IDE4MDAwLCB5b3Ugd2lsbCBuZWVkIHRvIGJlIGFibGUKIHRvIGFsbG9jYXRlIDE2ICogKHNrX2J1ZmYgd2l0aCAxODAwMCBidWZmZXIgc2l6ZSkgY2FsbCBpdCAxODUwMCBieXRlcyBwZXIgcmluZyAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjIwMCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9SRUFETUUuaXB3MjIwMAppbmRleCA2MTZhOGU1Li5iNzY1OGJlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvUkVBRE1FLmlwdzIyMDAKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL1JFQURNRS5pcHcyMjAwCkBAIC0yNTYsNyArMjU2LDcgQEAKIAogV2hlcmUgJFZBTFVFIHdvdWxkIGJlIGEgbnVtYmVyIGluIHRoZSBjYXNlIG9mIHRoaXMgc3lzZnMgZW50cnkuICBUaGUgCiBpbnB1dCB0byBzeXNmcyBmaWxlcyBkb2VzIG5vdCBoYXZlIHRvIGJlIGEgbnVtYmVyLiAgRm9yIGV4YW1wbGUsIHRoZSAKLWZpcm13YXJlIGxvYWRlciB1c2VkIGJ5IGhvdHBsdWcgdXRpbGl6ZXMgc3lzZnMgZW50cmllcyBmb3IgdHJhbnNmZXJpbmcgCitmaXJtd2FyZSBsb2FkZXIgdXNlZCBieSBob3RwbHVnIHV0aWxpemVzIHN5c2ZzIGVudHJpZXMgZm9yIHRyYW5zZmVycmluZyAKIHRoZSBmaXJtd2FyZSBpbWFnZSBmcm9tIHVzZXIgc3BhY2UgaW50byB0aGUgZHJpdmVyLgogCiBUaGUgSW50ZWwoUikgUFJPL1dpcmVsZXNzIDI5MTVBQkcgRHJpdmVyIGZvciBMaW51eCBleHBvc2VzIHN5c2ZzIGVudHJpZXMgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQKaW5kZXggYjM2ZTc0MS4uZTI3MjAyYmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9ib25kaW5nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvYm9uZGluZy50eHQKQEAgLTM2OCw3ICszNjgsNyBAQAogCQlncmF0dWl0b3VzIEFSUCBpcyBsb3N0LCBjb21tdW5pY2F0aW9uIG1heSBiZQogCQlkaXNydXB0ZWQuCiAKLQkJV2hlbiB0aGlzIHBvbGljeSBpcyB1c2VkIGluIGNvbmp1Y3Rpb24gd2l0aCB0aGUgbWlpCisJCVdoZW4gdGhpcyBwb2xpY3kgaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBtaWkKIAkJbW9uaXRvciwgZGV2aWNlcyB3aGljaCBhc3NlcnQgbGluayB1cCBwcmlvciB0byBiZWluZwogCQlhYmxlIHRvIGFjdHVhbGx5IHRyYW5zbWl0IGFuZCByZWNlaXZlIGFyZSBwYXJ0aWN1bGFybHkKIAkJc3VzY2VwdGlibGUgdG8gbG9zcyBvZiB0aGUgZ3JhdHVpdG91cyBBUlAsIGFuZCBhbgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvTGludXgtQ0FJRi50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9MaW51eC1DQUlGLnR4dAppbmRleCA3ZmU3YTlhLi5lNTJmZDYyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9MaW51eC1DQUlGLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9MaW51eC1DQUlGLnR4dApAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAtIENGTVVYIENBSUYgTXV4IGxheWVyLiBIYW5kbGVzIG11bHRpcGxleGluZyBiZXR3ZWVuIG11bHRpcGxlCiAJcGh5c2ljYWwgYmVhcmVycyBhbmQgbXVsdGlwbGUgY2hhbm5lbHMgc3VjaCBhcyBWRUksIERhdGFncmFtLCBldGMuCiAJVGhlIE1VWCBrZWVwcyB0cmFjayBvZiB0aGUgZXhpc3RpbmcgQ0FJRiBDaGFubmVscyBhbmQKLQlQaHlzaWNhbCBJbnN0YW5jZXMgYW5kIHNlbGVjdHMgdGhlIGFwcm9wcmlhdGUgaW5zdGFuY2UgYmFzZWQKKwlQaHlzaWNhbCBJbnN0YW5jZXMgYW5kIHNlbGVjdHMgdGhlIGFwcHJvcHJpYXRlIGluc3RhbmNlIGJhc2VkCiAJb24gQ2hhbm5lbC1JZCBhbmQgUGh5c2ljYWwtSUQuCiAKICAgICAgIC0gQ0ZGUk1MIENBSUYgRnJhbWluZyBsYXllci4gSGFuZGxlcyBGcmFtaW5nIGkuZS4gRnJhbWUgbGVuZ3RoCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9zcGlfcG9ydGluZy50eHQgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FpZi9zcGlfcG9ydGluZy50eHQKaW5kZXggMGNiOGNiOS4uOWVmZDA2OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2NhaWYvc3BpX3BvcnRpbmcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYWlmL3NwaV9wb3J0aW5nLnR4dApAQCAtMTUwLDcgKzE1MCw3IEBACiB2b2lkIHNzcGlfc2lnX3hmZXIoYm9vbCB4ZmVyLCBzdHJ1Y3QgY2ZzcGlfZGV2ICpkZXYpCiB7CiAJLyogSWYgeGZlciBpcyB0cnVlIHRoZW4geW91IHNob3VsZCBhc3NlcnQgdGhlIFNQSV9JTlQgdG8gaW5kaWNhdGUgdG8KLQkgKiB0aGUgbWFzdGVyIHRoYXQgeW91IGFyZSByZWFkeSB0byByZWNpZXZlIHRoZSBkYXRhIGZyb20gdGhlIG1hc3RlcgorCSAqIHRoZSBtYXN0ZXIgdGhhdCB5b3UgYXJlIHJlYWR5IHRvIHJlY2VpdmUgdGhlIGRhdGEgZnJvbSB0aGUgbWFzdGVyCiAJICogU1BJLiBJZiB4ZmVyIGlzIGZhbHNlIHRoZW4geW91IHNob3VsZCBkZS1hc3NlcnQgU1BJX0lOVCB0byBpbmRpY2F0ZQogCSAqIHRoYXQgdGhlIHRyYW5zZmVyIGlzIGRvbmUuCiAJICovCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvY2FuLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CmluZGV4IDViMDRiNjcuLjU2Y2EzYjcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9jYW4udHh0CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgdGhlIHVzZXIgYXBwbGljYXRpb24gdXNpbmcgdGhlIGNvbW1vbiBDQU4gZmlsdGVyIG1lY2hhbmlzbXMuIEluc2lkZQogICB0aGlzIGZpbHRlciBkZWZpbml0aW9uIHRoZSAoaW50ZXJlc3RlZCkgdHlwZSBvZiBlcnJvcnMgbWF5IGJlCiAgIHNlbGVjdGVkLiBUaGUgcmVjZXB0aW9uIG9mIGVycm9yIGZyYW1lcyBpcyBkaXNhYmxlZCBieSBkZWZhdWx0LgotICBUaGUgZm9ybWF0IG9mIHRoZSBDQU4gZXJyb3IgZnJhbWUgaXMgYnJpZWZseSBkZWNyaWJlZCBpbiB0aGUgTGludXgKKyAgVGhlIGZvcm1hdCBvZiB0aGUgQ0FOIGVycm9yIGZyYW1lIGlzIGJyaWVmbHkgZGVzY3JpYmVkIGluIHRoZSBMaW51eAogICBoZWFkZXIgZmlsZSAiaW5jbHVkZS9saW51eC9jYW4vZXJyb3IuaCIuCiAKIDQuIEhvdyB0byB1c2UgU29ja2V0IENBTgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2llZWU4MDIxNTQudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL2llZWU4MDIxNTQudHh0CmluZGV4IDIzYzk5NWUuLmY0MWVhMjQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9pZWVlODAyMTU0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvaWVlZTgwMjE1NC50eHQKQEAgLTksNyArOSw3IEBACiBvZiBJRUVFIDgwMi4xNS40IC8gWmlnQmVlIC8gNkxvV1BBTiBwcm90b2NvbHMuIElFRUUgODAyLjE1LjQgaXMgYSBzdGFjawogb2YgcHJvdG9jb2xzIGZvciBvcmdhbml6aW5nIExvdy1SYXRlIFdpcmVsZXNzIFBlcnNvbmFsIEFyZWEgTmV0d29ya3MuCiAKLUN1cnJlbnRseSBvbmx5IElFRUUgODAyLjE1LjQgbGF5ZXIgaXMgaW1wbGVtZW50ZWQuIFdlIGhhdmUgY2hvb3NlbgorQ3VycmVudGx5IG9ubHkgSUVFRSA4MDIuMTUuNCBsYXllciBpcyBpbXBsZW1lbnRlZC4gV2UgaGF2ZSBjaG9zZW4KIHRvIHVzZSBwbGFpbiBCZXJrZWxleSBzb2NrZXQgQVBJLCB0aGUgZ2VuZXJpYyBMaW51eCBuZXR3b3JraW5nIHN0YWNrCiB0byB0cmFuc2ZlciBJRUVFIDgwMi4xNS40IG1lc3NhZ2VzIGFuZCBhIHNwZWNpYWwgcHJvdG9jb2wgb3ZlciBnZW5ldGxpbmsKIGZvciBjb25maWd1cmF0aW9uL21hbmFnZW1lbnQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vbHltcGljLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9vbHltcGljLnR4dAppbmRleCBjNjVhOTQwLi5iOTViNWJmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvb2x5bXBpYy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL29seW1waWMudHh0CkBAIC02NSw3ICs2NSw3IEBACiAKIFZhcmlhYmxlIE1UVSBzaXplOgogCi1UaGUgZHJpdmVyIGNhbiBoYW5kbGUgYSBNVFUgc2l6ZSB1cHRvIGVpdGhlciA0NTAwIG9yIDE4MDAwIGRlcGVuZGluZyB1cG9uIAorVGhlIGRyaXZlciBjYW4gaGFuZGxlIGEgTVRVIHNpemUgdXAgdG8gZWl0aGVyIDQ1MDAgb3IgMTgwMDAgZGVwZW5kaW5nIHVwb24gCiByaW5nIHNwZWVkLiAgVGhlIGRyaXZlciBhbHNvIGNoYW5nZXMgdGhlIHNpemUgb2YgdGhlIHJlY2VpdmUgYnVmZmVycyBhcyBwYXJ0CiBvZiB0aGUgbXR1IHJlLXNpemluZywgc28gaWYgeW91IHNldCBtdHUgPSAxODAwMCwgeW91IHdpbGwgbmVlZCB0byBiZSBhYmxlCiB0byBhbGxvY2F0ZSAxNiAqIChza19idWZmIHdpdGggMTgwMDAgYnVmZmVyIHNpemUpIGNhbGwgaXQgMTg1MDAgYnl0ZXMgcGVyIHJpbmcgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGFja2V0X21tYXAudHh0IGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3BhY2tldF9tbWFwLnR4dAppbmRleCAwNzM4OTRkLi40YWNlYTY2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvcGFja2V0X21tYXAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9wYWNrZXRfbW1hcC50eHQKQEAgLTIyMyw3ICsyMjMsNyBAQAogCiBBIGZyYW1lIGNhbiBiZSBvZiBhbnkgc2l6ZSB3aXRoIHRoZSBvbmx5IGNvbmRpdGlvbiBpdCBjYW4gZml0IGluIGEgYmxvY2suIEEgYmxvY2sKIGNhbiBvbmx5IGhvbGQgYW4gaW50ZWdlciBudW1iZXIgb2YgZnJhbWVzLCBvciBpbiBvdGhlciB3b3JkcywgYSBmcmFtZSBjYW5ub3QgCi1iZSBzcGF3bmVkIGFjY3Jvc3MgdHdvIGJsb2Nrcywgc28gdGhlcmUgYXJlIHNvbWUgZGV0YWlscyB5b3UgaGF2ZSB0byB0YWtlIGludG8gCitiZSBzcGF3bmVkIGFjcm9zcyB0d28gYmxvY2tzLCBzbyB0aGVyZSBhcmUgc29tZSBkZXRhaWxzIHlvdSBoYXZlIHRvIHRha2UgaW50byAKIGFjY291bnQgd2hlbiBjaG9vc2luZyB0aGUgZnJhbWVfc2l6ZS4gU2VlICJNYXBwaW5nIGFuZCB1c2Ugb2YgdGhlIGNpcmN1bGFyIAogYnVmZmVyIChyaW5nKSIuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zMmlvLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy9zMmlvLnR4dAppbmRleCA5ZDRlMGY0Li40YmUwYzAzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvczJpby50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3MyaW8udHh0CkBAIC0zNyw3ICszNyw3IEBACiBUaGUgY29ycmVzcG9uZGluZyBhZGFwdGVyJ3MgTEVEIHdpbGwgYmxpbmsgbXVsdGlwbGUgdGltZXMuCiAKIDMuCUZlYXR1cmVzIHN1cHBvcnRlZDoKLWEuIEp1bWJvIGZyYW1lcy4gWGZyYW1lIEkvSUkgc3VwcG9ydHMgTVRVIHVwdG8gOTYwMCBieXRlcywKK2EuIEp1bWJvIGZyYW1lcy4gWGZyYW1lIEkvSUkgc3VwcG9ydHMgTVRVIHVwIHRvIDk2MDAgYnl0ZXMsCiBtb2RpZmlhYmxlIHVzaW5nIGlmY29uZmlnIGNvbW1hbmQuCiAKIGIuIE9mZmxvYWRzLiBTdXBwb3J0cyBjaGVja3N1bSBvZmZsb2FkKFRDUC9VRFAvSVApIG9uIHRyYW5zbWl0CkBAIC00OSw3ICs0OSw3IEBACiBJQk0geFNlcmllcykuCiAKIGQuIE1TSS9NU0ktWC4gQ2FuIGJlIGVuYWJsZWQgb24gcGxhdGZvcm1zIHdoaWNoIHN1cHBvcnQgdGhpcyBmZWF0dXJlCi0oSUE2NCwgWGVvbikgcmVzdWx0aW5nIGluIG5vdGljZWFibGUgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQodXB0byA3JQorKElBNjQsIFhlb24pIHJlc3VsdGluZyBpbiBub3RpY2VhYmxlIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50KHVwIHRvIDclCiBvbiBjZXJ0YWluIHBsYXRmb3JtcykuCiAKIGUuIFN0YXRpc3RpY3MuIENvbXByZWhlbnNpdmUgTUFDLWxldmVsIGFuZCBzb2Z0d2FyZSBzdGF0aXN0aWNzIGRpc3BsYXllZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RjLWFjdGlvbnMtZW52LXJ1bGVzLnR4dCBiL0RvY3VtZW50YXRpb24vbmV0d29ya2luZy90Yy1hY3Rpb25zLWVudi1ydWxlcy50eHQKaW5kZXggZGNhZGY2Zi4uNzBkNmNmNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3RjLWFjdGlvbnMtZW52LXJ1bGVzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvdGMtYWN0aW9ucy1lbnYtcnVsZXMudHh0CkBAIC0xLDUgKzEsNSBAQAogCi1UaGUgImVudmlyb21lbnRhbCIgcnVsZXMgZm9yIGF1dGhvcnMgb2YgYW55IG5ldyB0YyBhY3Rpb25zIGFyZToKK1RoZSAiZW52aXJvbm1lbnRhbCIgcnVsZXMgZm9yIGF1dGhvcnMgb2YgYW55IG5ldyB0YyBhY3Rpb25zIGFyZToKIAogMSkgSWYgeW91IHN0ZWFsZXRoIG9yIGJvcnJvd2V0aCBhbnkgcGFja2V0IHRob3Ugc2hhbHQgYmUgYnJhbmNoaW5nCiBmcm9tIHRoZSByaWdodGVvdXMgcGF0aCBhbmQgdGhvdSBzaGFsdCBjbG9uZXRoLgpAQCAtMjAsNyArMjAsNyBAQAogMykgRHJvcHBpbmcgcGFja2V0cyB5b3UgZG9uJ3Qgb3duIGlzIGEgbm8tbm8uIFlvdSBzaW1wbHkgcmV0dXJuCiBUQ19BQ1RfU0hPVCB0byB0aGUgY2FsbGVyIGFuZCB0aGV5IHdpbGwgZHJvcCBpdC4KIAotVGhlICJlbnZpcm9tZW50YWwiIHJ1bGVzIGZvciBjYWxsZXJzIG9mIGFjdGlvbnMgKHFkaXNjcyBldGMpIGFyZToKK1RoZSAiZW52aXJvbm1lbnRhbCIgcnVsZXMgZm9yIGNhbGxlcnMgb2YgYWN0aW9ucyAocWRpc2NzIGV0YykgYXJlOgogCiAqKSBUaG91IGFydCByZXNwb25zaWJsZSBmb3IgZnJlZWluZyBhbnl0aGluZyByZXR1cm5lZCBhcyBiZWluZwogVENfQUNUX1NIT1QvU1RPTEVOL1FVRVVFRC4gSWYgbm9uZSBvZiBUQ19BQ1RfU0hPVC9TVE9MRU4vUVVFVUVEIGlzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlci9kZXZpY2VzLnR4dAppbmRleCBmMDIzYmE2Li4xOTcxYmNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL2RldmljZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvZGV2aWNlcy50eHQKQEAgLTM2Nyw3ICszNjcsNyBAQAogc3VzcGVuZCBtZXRob2RzIHdlcmUgY2FsbGVkLCBmb3IgZXhhbXBsZSBieSBjb21wbGV0ZSByZWluaXRpYWxpemF0aW9uLgogVGhpcyBtYXkgYmUgdGhlIGhhcmRlc3QgcGFydCwgYW5kIHRoZSBvbmUgbW9zdCBwcm90ZWN0ZWQgYnkgTkRBJ2QgZG9jdW1lbnRzCiBhbmQgY2hpcCBlcnJhdGEuICBJdCdzIHNpbXBsZXN0IGlmIHRoZSBoYXJkd2FyZSBzdGF0ZSBoYXNuJ3QgY2hhbmdlZCBzaW5jZQotdGhlIHN1c3BlbmQgd2FzIGNhcnJpZWQgb3V0LCBidXQgdGhhdCBjYW4ndCBiZSBndWFyYW50ZWVkIChpbiBmYWN0LCBpdCB1c3VzYWxseQordGhlIHN1c3BlbmQgd2FzIGNhcnJpZWQgb3V0LCBidXQgdGhhdCBjYW4ndCBiZSBndWFyYW50ZWVkIChpbiBmYWN0LCBpdCB1c3VhbGx5CiBpcyBub3QgdGhlIGNhc2UpLgogCiBEcml2ZXJzIG11c3QgYWxzbyBiZSBwcmVwYXJlZCB0byBub3RpY2UgdGhhdCB0aGUgZGV2aWNlIGhhcyBiZWVuIHJlbW92ZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvbm90aWZpZXJzLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvbm90aWZpZXJzLnR4dAppbmRleCBhZTFiN2VjLi5jZjk4MDcwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL25vdGlmaWVycy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9ub3RpZmllcnMudHh0CkBAIC0yNCw3ICsyNCw3IEBACiAJCQliZSBmcm96ZW4gaW1tZWRpYXRlbHkuCiAKIFBNX1BPU1RfSElCRVJOQVRJT04JVGhlIHN5c3RlbSBtZW1vcnkgc3RhdGUgaGFzIGJlZW4gcmVzdG9yZWQgZnJvbSBhCi0JCQloaWJlcm5hdGlvbiBpbWFnZSBvciBhbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUKKwkJCWhpYmVybmF0aW9uIGltYWdlIG9yIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyB0aGUKIAkJCWhpYmVybmF0aW9uLiAgRGV2aWNlIGRyaXZlcnMnIC5yZXN1bWUoKSBjYWxsYmFja3MgaGF2ZQogCQkJYmVlbiBleGVjdXRlZCBhbmQgdGFza3MgaGF2ZSBiZWVuIHRoYXdlZC4KIApAQCAtMzgsNyArMzgsNyBAQAogCiBQTV9TVVNQRU5EX1BSRVBBUkUJVGhlIHN5c3RlbSBpcyBwcmVwYXJpbmcgZm9yIGEgc3VzcGVuZC4KIAotUE1fUE9TVF9TVVNQRU5ECQlUaGUgc3lzdGVtIGhhcyBqdXN0IHJlc3VtZWQgb3IgYW4gZXJyb3Igb2NjdXJlZCBkdXJpbmcKK1BNX1BPU1RfU1VTUEVORAkJVGhlIHN5c3RlbSBoYXMganVzdCByZXN1bWVkIG9yIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZwogCQkJdGhlIHN1c3BlbmQuCURldmljZSBkcml2ZXJzJyAucmVzdW1lKCkgY2FsbGJhY2tzIGhhdmUKIAkJCWJlZW4gZXhlY3V0ZWQgYW5kIHRhc2tzIGhhdmUgYmVlbiB0aGF3ZWQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvb3BwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvb3BwLnR4dAppbmRleCBjZDQ0NTU4Li41YWU3MGExMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9wb3dlci9vcHAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcG93ZXIvb3BwLnR4dApAQCAtMTc4LDcgKzE3OCw3IEBACiAJCWlmICghSVNfRVJSKG9wcCkpCiAJCQlzb2Nfc3dpdGNoX3RvX2ZyZXFfdm9sdGFnZShmcmVxKTsKIAkJZWxzZQotCQkJLyogZG8gc29tZXRoaW5nIHdoZW4gd2UgY2FudCBzYXRpc2Z5IHRoZSByZXEgKi8KKwkJCS8qIGRvIHNvbWV0aGluZyB3aGVuIHdlIGNhbid0IHNhdGlzZnkgdGhlIHJlcSAqLwogCQkvKiBkbyBvdGhlciBzdHVmZiAqLwogCSB9CiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvc3dzdXNwLnR4dAppbmRleCBlYTcxODg5Li5hYzE5MGNmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3N3c3VzcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci9zd3N1c3AudHh0CkBAIC0xOTIsNyArMTkyLDcgQEAKIGRpc3RpbmN0aW9ucyBiZXR3ZWVuIFNVU1BFTkQgYW5kIEZSRUVaRS4KIAogQTogRG9pbmcgU1VTUEVORCB3aGVuIHlvdSBhcmUgYXNrZWQgdG8gZG8gRlJFRVpFIGlzIGFsd2F5cyBjb3JyZWN0LAotYnV0IGl0IG1heSBiZSB1bm5lY2Nlc3NhcmlseSBzbG93LiBJZiB5b3Ugd2FudCB5b3VyIGRyaXZlciB0byBzdGF5IHNpbXBsZSwKK2J1dCBpdCBtYXkgYmUgdW5uZWNlc3NhcmlseSBzbG93LiBJZiB5b3Ugd2FudCB5b3VyIGRyaXZlciB0byBzdGF5IHNpbXBsZSwKIHNsb3duZXNzIG1heSBub3QgbWF0dGVyIHRvIHlvdS4gSXQgY2FuIGFsd2F5cyBiZSBmaXhlZCBsYXRlci4KIAogRm9yIGRldmljZXMgbGlrZSBkaXNrIGl0IGRvZXMgbWF0dGVyLCB5b3UgZG8gbm90IHdhbnQgdG8gc3BpbmRvd24gZm9yCkBAIC0yMzcsNyArMjM3LDcgQEAKIAogICAgICAgcnVubmluZyBzeXN0ZW0sIHVzZXIgYXNrcyBmb3Igc3VzcGVuZC10by1kaXNrCiAKLSAgICAgIHVzZXIgcHJvY2Vzc2VzIGFyZSBzdG9wcGVkIChpbiBjb21tb24gY2FzZSB0aGVyZSBhcmUgbm9uZSwgYnV0IHdpdGggcmVzdW1lLWZyb20taW5pdHJkLCBub29uZSBrbm93cykKKyAgICAgIHVzZXIgcHJvY2Vzc2VzIGFyZSBzdG9wcGVkIChpbiBjb21tb24gY2FzZSB0aGVyZSBhcmUgbm9uZSwgYnV0IHdpdGggcmVzdW1lLWZyb20taW5pdHJkLCBubyBvbmUga25vd3MpCiAKICAgICAgIHJlYWQgaW1hZ2UgZnJvbSBkaXNrCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dCBiL0RvY3VtZW50YXRpb24vcG93ZXIvdXNlcmxhbmQtc3dzdXNwLnR4dAppbmRleCA4MTY4MGY5Li4xMTAxYmVlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Bvd2VyL3VzZXJsYW5kLXN3c3VzcC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wb3dlci91c2VybGFuZC1zd3N1c3AudHh0CkBAIC05OCw3ICs5OCw3IEBACiBUaGUgZGV2aWNlJ3MgcmVhZCgpIG9wZXJhdGlvbiBjYW4gYmUgdXNlZCB0byB0cmFuc2ZlciB0aGUgc25hcHNob3QgaW1hZ2UgZnJvbQogdGhlIGtlcm5lbC4gIEl0IGhhcyB0aGUgZm9sbG93aW5nIGxpbWl0YXRpb25zOgogLSB5b3UgY2Fubm90IHJlYWQoKSBtb3JlIHRoYW4gb25lIHZpcnR1YWwgbWVtb3J5IHBhZ2UgYXQgYSB0aW1lCi0tIHJlYWQoKXMgYWNjcm9zcyBwYWdlIGJvdW5kYXJpZXMgYXJlIGltcG9zc2libGUgKGllLiBpZiB5cHUgcmVhZCgpIDEvMiBvZgorLSByZWFkKClzIGFjcm9zcyBwYWdlIGJvdW5kYXJpZXMgYXJlIGltcG9zc2libGUgKGllLiBpZiB5cHUgcmVhZCgpIDEvMiBvZgogCWEgcGFnZSBpbiB0aGUgcHJldmlvdXMgY2FsbCwgeW91IHdpbGwgb25seSBiZSBhYmxlIHRvIHJlYWQoKQogCV9hdF8gX21vc3RfIDEvMiBvZiB0aGUgcGFnZSBpbiB0aGUgbmV4dCBjYWxsKQogCkBAIC0xMzcsNyArMTM3LDcgQEAKIG1lYW5zLCBzdWNoIGFzIGNoZWNrc3VtcywgdG8gZW5zdXJlIHRoZSBpbnRlZ3JpdHkgb2YgdGhlIHNuYXBzaG90IGltYWdlLgogCiBUaGUgc3VzcGVuZGluZyBhbmQgcmVzdW1pbmcgdXRpbGl0aWVzIE1VU1QgbG9jayB0aGVtc2VsdmVzIGluIG1lbW9yeSwKLXByZWZlcnJhYmx5IHVzaW5nIG1sb2NrYWxsKCksIGJlZm9yZSBjYWxsaW5nIFNOQVBTSE9UX0ZSRUVaRS4KK3ByZWZlcmFibHkgdXNpbmcgbWxvY2thbGwoKSwgYmVmb3JlIGNhbGxpbmcgU05BUFNIT1RfRlJFRVpFLgogCiBUaGUgc3VzcGVuZGluZyB1dGlsaXR5IE1VU1QgY2hlY2sgdGhlIHZhbHVlIHN0b3JlZCBieSBTTkFQU0hPVF9DUkVBVEVfSU1BR0UKIGluIHRoZSBtZW1vcnkgbG9jYXRpb24gcG9pbnRlZCB0byBieSB0aGUgbGFzdCBhcmd1bWVudCBvZiBpb2N0bCgpIGFuZCBwcm9jZWVkCkBAIC0xNDcsNyArMTQ3LDcgQEAKIAkoYSkJVGhlIHN1c3BlbmRpbmcgdXRpbGl0eSBNVVNUIE5PVCBjbG9zZSB0aGUgc25hcHNob3QgZGV2aWNlCiAJCV91bmxlc3NfIHRoZSB3aG9sZSBzdXNwZW5kIHByb2NlZHVyZSBpcyB0byBiZSBjYW5jZWxsZWQsIGluCiAJCXdoaWNoIGNhc2UsIGlmIHRoZSBzbmFwc2hvdCBpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLCB0aGUKLQkJc3VzcGVuZGluZyB1dGlsaXR5IFNIT1VMRCBkZXN0cm95IGl0LCBwcmVmZXJyYWJseSBieSB6YXBwaW5nCisJCXN1c3BlbmRpbmcgdXRpbGl0eSBTSE9VTEQgZGVzdHJveSBpdCwgcHJlZmVyYWJseSBieSB6YXBwaW5nCiAJCWl0cyBoZWFkZXIuICBJZiB0aGUgc3VzcGVuZCBpcyBub3QgdG8gYmUgY2FuY2VsbGVkLCB0aGUKIAkJc3lzdGVtIE1VU1QgYmUgcG93ZXJlZCBvZmYgb3IgcmVib290ZWQgYWZ0ZXIgdGhlIHNuYXBzaG90CiAJCWltYWdlIGhhcyBiZWVuIHNhdmVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2h2Y3MudHh0IGIvRG9jdW1lbnRhdGlvbi9wb3dlcnBjL2h2Y3MudHh0CmluZGV4IDZkOGJlMzQuLmE3MzBjYTUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcG93ZXJwYy9odmNzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Bvd2VycGMvaHZjcy50eHQKQEAgLTUyOCw3ICs1MjgsNyBAQAogb3JkZXIgdGhhbiBob3cgdGhleSB3b3VsZCBiZSBleHBvc2VkIG9uIG1vZHVsZSBsb2FkLiAgUmVib290aW5nIG9yCiByZWxvYWRpbmcgdGhlIG1vZHVsZSBhZnRlciBkeW5hbWljIGFkZGl0aW9uIG1heSByZXN1bHQgaW4gdGhlIC9kZXYvaHZjcyoKIGFuZCB2dHktc2VydmVyIGNvdXBsaW5nIGNoYW5naW5nIGlmIGEgdnR5LXNlcnZlciBhZGFwdGVyIHdhcyBhZGRlZCBpbiBhCi1zbG90IGluYmV0d2VlbiB0d28gb3RoZXIgdnR5LXNlcnZlciBhZGFwdGVycy4gIFJlZmVyIHRvIHRoZSBzZWN0aW9uIGFib3ZlCitzbG90IGJldHdlZW4gdHdvIG90aGVyIHZ0eS1zZXJ2ZXIgYWRhcHRlcnMuICBSZWZlciB0byB0aGUgc2VjdGlvbiBhYm92ZQogb24gaG93IHRvIGRldGVybWluZSB3aGljaCB2dHktc2VydmVyIGdvZXMgd2l0aCB3aGljaCAvZGV2L2h2Y3MqIG5vZGUuCiBIaW50OyBsb29rIGF0IHRoZSBzeXNmcyAiaW5kZXgiIGF0dHJpYnV0ZSBmb3IgdGhlIHZ0eS1zZXJ2ZXIuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubHBmYyBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubHBmYwppbmRleCA1ZTgzNzY5Li5jNTZlYzk5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLmxwZmMKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5scGZjCkBAIC0zNTIsNyArMzUyLDcgQEAKIAkgIGxwZmNfc2NzaXBvcnQuYwogCSogSW4gcmVtb3RlIHBvcnQgY2hhbmdlczogbm8gbG9uZ2VyIG51bGxpbmcgdGFyZ2V0LT5wbm9kZSB3aGVuCiAJICByZW1vdmluZyBmcm9tIG1hcHBlZCBsaXN0LiBQbm9kZSBnZXQgbnVsbGVkIHdoZW4gdGhlIG5vZGUgaXMKLQkgIGZyZWVkIChhZnRlciBub2RldiB0bW8pLiBUaGlzIGJ1ZyB3YXMgY2F1c2luZyBpL28gcmVjaWV2ZWQgaW4KKwkgIGZyZWVkIChhZnRlciBub2RldiB0bW8pLiBUaGlzIGJ1ZyB3YXMgY2F1c2luZyBpL28gcmVjZWl2ZWQgaW4KIAkgIHRoZSBzbWFsbCB3aW5kb3cgd2hpbGUgdGhlIGRldmljZSB3YXMgYmxvY2tlZCB0byBiZSBlcnJvcmVkIHcvCiAJICBkaWRfbm9fY29ubmVjdC4gV2l0aCB0aGUgZml4LCBpdCByZXR1cm5zIGhvc3RfYnVzeQogCSAgKHBlciB0aGUgcHJlLXJlbW90ZSBwb3J0IGNoYW5nZXMpLgpAQCAtNTMwLDcgKzUzMCw3IEBACiAJICBjb2hlcmVudCBtYXBwaW5ncy4gIE5vdGU6IFRoZXJlIGFyZSBtb3JlIGNvbnNpc3RlbnQgbWFwcGluZ3MKIAkgIHRoYXQgYXJlIHVzaW5nIHBjaV9kbWFfc3luYyBjYWxscy4gUHJvYmFibHkgdGhlc2Ugc2hvdWxkIGJlCiAJICByZW1vdmVkIGFzIHdlbGwuCi0JKiBNb2RpZmllZCBscGZjX2ZyZWVfc2NzaV9idWYgdG8gYWNjb21vZGF0ZSBhbGwgdGhyZWUgc2NzaV9idWYKKwkqIE1vZGlmaWVkIGxwZmNfZnJlZV9zY3NpX2J1ZiB0byBhY2NvbW1vZGF0ZSBhbGwgdGhyZWUgc2NzaV9idWYKIAkgIGZyZWUgdHlwZXMgdG8gYWxsZXZpYXRlIG1pc2NlbGxhbmVvdXMgcGFuaWNzIHdpdGggY2FibGUgcHVsbAogCSAgdGVzdGluZy4KIAkqIFNldCBob3RwbHVnIHRvIGRlZmF1bHQgMCBhbmQgbHBmY190YXJnZXRfcmVtb3ZlIHRvIG5vdCByZW1vdmUKQEAgLTU4Myw3ICs1ODMsNyBAQAogCSAgaW5jbHVkZWQgbW9yZSB0aGFuIG9uY2UuCiAJKiBSZXBsYWNlZCAic2V0X2N1cnJlbnRfc3RhdGUoVEFTS19VTklOVEVSUlVQVElCTEUpOwogCSAgc2NoZWR1bGVfdGltZW91dCh0aW1lb3V0KSIgd2l0aCAibXNsZWVwKHRpbWVvdXQpIi4KLQkqIEZpeG5vZGUgd2FzIGxvb3Npbmcgc3RhcmdldCB3aGVuIHJlZGlzY292ZXJlZC4gV2Ugc2F3IG1lc3NhZ2VzCisJKiBGaXhub2RlIHdhcyBsb3Npbmcgc3RhcmdldCB3aGVuIHJlZGlzY292ZXJlZC4gV2Ugc2F3IG1lc3NhZ2VzCiAJICBsaWtlOiBscGZjIDAwMDA6MDQ6MDIuMDogMDowMjYzIENhbm5vdCBibG9jayBzY3NpIHRhcmdldCBhcyBhCiAJICByZXN1bHQuICBNb3ZlZCBzdGFyZ2V0IGZpZWxkIGludG8gc3RydWN0IGxwZmNfdGFyZ2V0IHdoaWNoIGlzCiAJICByZWZlcmVuY2VkIGZyb20gdGhlIG5vZGUuCkBAIC02MDQsNyArNjA0LDcgQEAKIAkqIE1ha2UgMyBmdW5jdGlvbnMgc3RhdGljOiBscGZjX2dldF9oYmFfc3ltX25vZGVfbmFtZSwKIAkgIGxwZmNfaW50cl9wcmVwIGFuZCBscGZjX3NldHVwX3NsaW1fYWNjZXNzLiAgTW92ZSBscGZjX2ludHJfcHJlcAogCSAgYW5kIGxwZmNfc2V0dXBfc2xpbV9hY2Nlc3Mgc28gdGhleSdyZSBkZWZpbmVkIGJlZm9yZSBiZWluZyB1c2VkLgotCSogUmVtb3ZlIGFuIHVuZWNlc3NhcnkgbGlzdF9kZWwoKSBpbiBscGZjX2hiYWRpc2MuYy4KKwkqIFJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBsaXN0X2RlbCgpIGluIGxwZmNfaGJhZGlzYy5jLgogCSogU2V0IG5scF9zdGF0ZSBiZWZvcmUgY2FsbGluZyBscGZjX25scF9saXN0KCkgc2luY2UgdGhpcyB3aWxsCiAJICBwb3RlbnRpYWxseSBjYWxsIGZjX3RhcmdldF91bmJsb2NrIHdoaWNoIG1heSBjYXVzZSBhIHJhY2UgaW4KIAkgIHF1ZXVlY29tbWFuZCBieSByZWxlYXNpbmcgaG9zdF9sb2NrLgpAQCAtNzUzLDcgKzc1Myw3IEBACiAJKiBDaGFuZ2VkIHZlcnNpb24gbnVtYmVyIHRvIDguMC4xMgogCSogUmVtb3ZlZCB1c2VkICNkZWZpbmVzOiBERUZBVUxUX1BDSV9MQVRFTkNZX0NMT0NLUyBhbmQKIAkgIFBDSV9MQVRFTkNZX1ZBTFVFIGZyb20gbHBmY19ody5oLgotCSogQ2hhbmdlcyB0byBhY2NvbW9kYXRlIHJuaWQuCisJKiBDaGFuZ2VzIHRvIGFjY29tbW9kYXRlIHJuaWQuCiAJKiBGaXggUlNDTiBoYW5kbGluZyBzbyBSU0NOIE5TIHF1ZXJpZXMgb25seSBlZmZlY3QgTlBvcnRzIGZvdW5kIGluCiAJICBSU0NOIGRhdGEuCiAJKiBJZiB3ZSByY3YgYSBwbG9naSBvbiBhIE5Qb3J0IHF1ZXVlZCB1cCBmb3IgZGlzY292ZXJ5LCBjbGVhciB0aGUKQEAgLTgxMyw3ICs4MTMsNyBAQAogCSAgY291bnRlciBpbnN0ZWFkLCBicmRfbm8gaXNuJ3QgcmV1c2VkIGFueW1vcmUuICBBbHNvIHNvbWUgdGlueQogCSAgd2hpdGVzcGFjZSBjbGVhbnVwcyBpbiBzdXJyb3VuZGluZyBjb2RlLgogCSogUmVvcmRlciBmdW5jdGlvbnMgaW4gbHBmY19lbHMuYyB0byByZW1vdmUgbmVlZCBmb3IgcHJvdG90eXBlcy4KLQkqIFJlbW92ZWQgdW5zZWQgcHJvdG90eXBlcyBmcm9tIGxwZmNfY3J0bi5oIC0KKwkqIFJlbW92ZWQgdW51c2VkIHByb3RvdHlwZXMgZnJvbSBscGZjX2NydG4uaCAtCiAJICBscGZjX2lwX3RpbWVvdXRfaGFuZGxlciwgbHBmY19yZWFkX3BjaSBhbmQgbHBmY19yZXZva2UuCiAJKiBSZW1vdmVkIHNvbWUgdW51c2VkIHByb3RvdHlwZXMgZnJvbSBscGZjX2NydG4uaCAtCiAJICBscGZjX3Njc2lfaGJhX3Jlc2V0LCBscGZjX3Njc2lfaXNzdWVfaW5xc24sCkBAIC04NjMsNyArODYzLDcgQEAKIAkqIE1pbmltYWwgc3VwcG9ydCBmb3IgU0NTSSBmbGF0IHNwYWNlIGFkZHJlc3Npbmcvdm9sdW1lIHNldAogCSAgYWRkcmVzc2luZy4gIFVzZSAxNiBiaXRzIG9mIExVTiBhZGRyZXNzIHNvIHRoYXQgZmxhdAogCSAgYWRkcmVzc2luZy9WU0Egd2lsbCB3b3JrLgotCSogQ2hhbmdlZCAyIG9jY3VyZW5jZXMgb2YgaWYoIDEgIT0gZih4KSkgdG8gaWYoZih4KSAhPSAxKQorCSogQ2hhbmdlZCAyIG9jY3VycmVuY2VzIG9mIGlmKCAxICE9IGYoeCkpIHRvIGlmKGYoeCkgIT0gMSkKIAkqIERyb3AgaW5jbHVkZSBvZiBscGZjX2NmZ3Bhcm0uaC4KIAkqIFJlZHVjZSBzdGFjayB1c2FnZSBvZiBscGZjX2ZkbWlfY21kIGluIGxwZmNfY3QuYy4KIAkqIEFkZCBtaW5pbXVtIHJhbmdlIGNoZWNraW5nIHByb3BlcnR5IHRvIC9zeXMgd3JpdGUvc3RvcmUKQEAgLTE0NDksNyArMTQ0OSw3IEBACiAJKiBSZW1vdmVkIGxwZmNfZWxzX2Noa19sYXR0IGZyb20gdGhlIGxwZmNfY29uZmlnX3Bvc3QgZnVuY3Rpb24uCiAJICBscGZjX2Vsc19jaGtfbGF0dCB3aWxsIGVuYWJsZSB0aGUgbGluayBldmVudCBpbnRlcnJ1cHRzIHdoZW4KIAkgIGZsb2dpIGlzIHBlbmRpbmcgd2hpY2ggY2F1c2VzIHR3byBkaXNjb3Zlcnkgc3RhdGUgbWFjaGluZXMKLQkgIHJ1bm5pbmcgcGFyYWxsZWx5LgorCSAgcnVubmluZyBwYXJhbGxlbGx5LgogCSogQWRkIHBjaV9kaXNhYmxlX2RldmljZSB0byB1bmxvYWQgcGF0aC4KIAkqIE1vdmUgbHBmY19zbGVlcF9ldmVudCBmcm9tIGxwZmNfZmNwLmMgdG8gbHBmY191dGlsX2lvY3RsLmMKIAkqIENhbGwgZG1hX21hcF9zaW5nbGUoKSAmIHBjaV9tYXBfc2luZ2xlKCkgZGlyZWN0bHkgaW5zdGVhZCBvZiB2aWEKQEAgLTE1OTAsNyArMTU5MCw3IEBACiAJICBFTFhfV1JJVEVfSFMgRUxYX1dSSVRFX0hBIEVMWF9XUklURV9DQSBFTFhfUkVBRF9IQwogCSAgRUxYX1JFQURfSFMgRUxYX1JFQURfSEEgRUxYX1JFQURfQ0EgRUxYX1JFQURfTUIgRUxYX1JFU0VUCiAJICBFTFhfUkVBRF9IQkEgRUxYX0lOU1RBTkNFIEVMWF9MSVAuICBBbHNvIGludHJvZHVjZWQKLQkgIGF0dHJpYnV0ZSAic2V0IiB0byBiZSB1c2VkIGluIGNvbmp1Y3Rpb24gd2l0aCB0aGUgYWJvdmUKKwkgIGF0dHJpYnV0ZSAic2V0IiB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIGFib3ZlCiAJICBhdHRyaWJ1dGVzLgogCSogUmVtb3ZlZCBETElOSywgZW5xdWUgYW5kIGRlcXVlIGRlY2xhcmF0aW9ucyBub3cgdGhhdCBjbG9jawogCSAgZG9lc24ndCB1c2UgdGhlbSBhbnltb3JlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkIGIvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5tZWdhcmFpZAppbmRleCA1ZTA3ZDMyLi5kMjA1MmZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm1lZ2FyYWlkCisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubWVnYXJhaWQKQEAgLTE2OCw3ICsxNjgsNyBAQAogCiAxLglTb3J0ZWQgb3V0IFBDSSBJRHMgdG8gcmVtb3ZlIG1lZ2FyYWlkIHN1cHBvcnQgb3ZlcmxhcHMuCiAJQmFzZWQgb24gdGhlIHBhdGNoIGZyb20gRGFuaWVsLCBzb3J0ZWQgb3V0IFBDSSBJRHMgYWxvbmcgd2l0aAotCWNoYXJhY3RvciBub2RlIG5hbWUgY2hhbmdlIGZyb20gJ21lZ2FkZXYnIHRvICdtZWdhZGV2X2xlZ2FjeScgdG8gYXZvaWQKKwljaGFyYWN0ZXIgbm9kZSBuYW1lIGNoYW5nZSBmcm9tICdtZWdhZGV2JyB0byAnbWVnYWRldl9sZWdhY3knIHRvIGF2b2lkCiAJY29uZmxpY3QuCiAJLS0tCiAJSG9wZWZ1bGx5IHdlJ2xsIGJlIGdldHRpbmcgdGhlIGJ1aWxkIHJlc3RyaWN0aW9uIHphcHBlZCBtdWNoIHNvb25lciwgCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eCBiL0RvY3VtZW50YXRpb24vc2NzaS9DaGFuZ2VMb2cubmNyNTNjOHh4CmluZGV4IDhiMjc4YzEuLjkyODhlM2Q4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLm5jcjUzYzh4eApAQCAtMjAwLDcgKzIwMCw3IEBACiAJICBCeSBkZWZhdWx0IHRoZSBkcml2ZXIgdXNlcyBib3RoIElSUUZfU0hBUkVEIGFuZCBJUlFGX0RJU0FCTEVELgogCSAgT3B0aW9uICduY3I1M2M4eHg9aXJxbToweDIwJyBtYXkgYmUgdXNlZCB3aGVuIGFuIElSUSBpcyBzaGFyZWQgYnkgCiAJICBhIDUzQzhYWCBhZGFwdGVyIGFuZCBhIG5ldHdvcmsgYm9hcmQuCi0JLSBUaW55IG1pc3BlbGxpbmcgZml4ZWQgKEFCT1JUIGluc3RlYWQgb2YgQUJSVCkuIFdhcyBmb3J0dW5hdGVseSAKKwktIFRpbnkgbWlzc3BlbGxpbmcgZml4ZWQgKEFCT1JUIGluc3RlYWQgb2YgQUJSVCkuIFdhcyBmb3J0dW5hdGVseSAKIAkgIGhhcm1sZXNzLgogCS0gTmVnb3RpYXRlIFNZTkMgZGF0YSB0cmFuc2ZlcnMgd2l0aCBDQ1MgZGV2aWNlcy4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL0NoYW5nZUxvZy5zeW01M2M4eHggYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eAppbmRleCAwMmZmYmMxLi5jMTkzMzcwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvQ2hhbmdlTG9nLnN5bTUzYzh4eApAQCAtNDU3LDcgKzQ1Nyw3IEBACiBTYXQgRGVjIDE5ICAyMTowMCAxOTk4IEdlcmFyZCBSb3VkaWVyIChncm91ZGllckBjbHViLWludGVybmV0LmZyKQogCSogdmVyc2lvbiBzeW01M2M4eHgtMS4wCiAJLSBEZWZpbmUgc29tZSBuZXcgSU8gcmVnaXN0ZXJzIGZvciB0aGUgODk2IChpc3RhdDEsIG1ib3gwLCBtYm94MSkKLQktIFJldmFtcCBzbGlnaGx5IHRoZSBTeW1iaW9zIE5WUkFNIGxheS1vdXQgYmFzZWQgb24gdGhlIGV4Y2VycHQgb2YgCisJLSBSZXZhbXAgc2xpZ2h0bHkgdGhlIFN5bWJpb3MgTlZSQU0gbGF5LW91dCBiYXNlZCBvbiB0aGUgZXhjZXJwdCBvZiAKIAkgIHRoZSBoZWFkZXIgZmlsZSBJIHJlY2VpdmVkIGZyb20gU3ltYmlvcy4KIAktIENoZWNrIHRoZSBQQ0kgYnVzIG51bWJlciBmb3IgdGhlIGJvb3Qgb3JkZXIgKFVzaW5nIGEgZmFzdCAKIAkgIFBDSSBjb250cm9sbGVyIGJlaGluZyBhIFBDSS1QQ0kgYnJpZGdlIHNlZW1zIHN1Yi1vcHRpbWFsKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9haGExNTJ4LnR4dCBiL0RvY3VtZW50YXRpb24vc2NzaS9haGExNTJ4LnR4dAppbmRleCAyOWNlNmQ4Li45NDg0ODczIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvYWhhMTUyeC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FoYTE1MngudHh0CkBAIC0xMjQsNyArMTI0LDcgQEAKIHRoZSByaWdodCBnZW9tZXRyeSB0byBiZSBhYmxlIHRvIGludGVycHJldCBpdC4KIAogTW9yZW92ZXIgdGhlcmUgYXJlIGNlcnRhaW4gbGltaXRhdGlvbnMgdG8gdGhlIEMvSC9TIGFkZHJlc3Npbmcgc2NoZW1lLAotbmFtZWx5IHRoZSBhZGRyZXNzIHNwYWNlIGlzIGxpbWl0ZWQgdG8gdXB0byAyNTUgaGVhZHMsIHVwdG8gNjMgc2VjdG9ycworbmFtZWx5IHRoZSBhZGRyZXNzIHNwYWNlIGlzIGxpbWl0ZWQgdG8gdXAgdG8gMjU1IGhlYWRzLCB1cCB0byA2MyBzZWN0b3JzCiBhbmQgYSBtYXhpbXVtIG9mIDEwMjMgY3lsaW5kZXJzLgogCiBUaGUgQUhBLTE1MjIgQklPUyBjYWxjdWxhdGVzIHRoZSBnZW9tZXRyeSBieSBmaXhpbmcgdGhlIG51bWJlciBvZiBoZWFkcwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzc5eHgudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL2FpYzc5eHgudHh0CmluZGV4IDE2ZTA1NGMuLjY0YWM3MDkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9haWM3OXh4LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvYWljNzl4eC50eHQKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICAgICAgICBPcHRpb246IHRhZ19pbmZvOnt7dmFsdWVbLHZhbHVlLi4uXX1bLHt2YWx1ZVssdmFsdWUuLi5dfS4uLl19CiAgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IHRoZSBwZXItdGFyZ2V0IHRhZ2dlZCBxdWV1ZSBkZXB0aCBvbiBhCiAgICAgICAgICAgICAgICAgICAgICAgcGVyIGNvbnRyb2xsZXIgYmFzaXMuICBCb3RoIGNvbnRyb2xsZXJzIGFuZCB0YXJnZXRzCi0gICAgICAgICAgICAgICAgICAgICAgbWF5IGJlIG9tbWl0dGVkIGluZGljYXRpbmcgdGhhdCB0aGV5IHNob3VsZCByZXRhaW4KKyAgICAgICAgICAgICAgICAgICAgICBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQgdGhleSBzaG91bGQgcmV0YWluCiAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgdGFnIGRlcHRoLgogICAgICAgICAgICAgRXhhbXBsZXM6IHRhZ19pbmZvOnt7MTYsMzIsMzIsNjQsOCw4LCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMn0KICAgICAgICAgICAgICAgICAgICAgICAgIE9uIENvbnRyb2xsZXIgMApAQCAtMjkxLDcgKzI5MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJkX3N0cm1fYml0bWFzayBpcyBhIDE2IGJpdCBoZXggdmFsdWUgaW4gd2hpY2gKICAgICAgICAgICAgICAgICAgICAgICBlYWNoIGJpdCByZXByZXNlbnRzIGEgdGFyZ2V0LiAgU2V0dGluZyB0aGUgdGFyZ2V0J3MKICAgICAgICAgICAgICAgICAgICAgICBiaXQgdG8gJzEnIGVuYWJsZXMgcmVhZCBzdHJlYW1pbmcgZm9yIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuICBDb250cm9sbGVycyBtYXkgYmUgb21taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LiAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogcmRfc3RybTp7MHgwMDQxfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwCkBAIC0zMTMsNyArMzEzLDcgQEAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgIE9wdGlvbjogZHY6IHt2YWx1ZVssdmFsdWUuLi5dfQogICAgICAgICAgIERlZmluaXRpb246IFNldCBEb21haW4gVmFsaWRhdGlvbiBQb2xpY3kgb24gYSBwZXItY29udHJvbGxlciBiYXNpcy4KLSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogZHY6ey0xLDAsLDEsMSwwfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIGxlYXZlIERWIGF0IGl0cyBkZWZhdWx0IHNldHRpbmcuCkBAIC0zNDAsNyArMzQwLDcgQEAKICAgICAgICAgICAgICAgT3B0aW9uOiBwcmVjb21wOiB7dmFsdWVbLHZhbHVlLi4uXX0KICAgICAgICAgICBEZWZpbml0aW9uOiBTZXQgSU8gQ2VsbCBwcmVjb21wZW5zYXRpb24gdmFsdWUgb24gYSBwZXItY29udHJvbGxlcgogICAgICAgICAgICAgICAgICAgICAgIGJhc2lzLgotICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbW1pdHRlZCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21pdHRlZCBpbmRpY2F0aW5nIHRoYXQKICAgICAgICAgICAgICAgICAgICAgICB0aGV5IHNob3VsZCByZXRhaW4gdGhlIGRlZmF1bHQgcHJlY29tcGVuc2F0aW9uIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogcHJlY29tcDp7MHgxfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIHNldCBwcmVjb21wZW5zYXRpb24gdG8gMS4KQEAgLTM1Myw3ICszNTMsNyBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgT3B0aW9uOiBzbGV3cmF0ZToge3ZhbHVlWyx2YWx1ZS4uLl19CiAgICAgICAgICAgRGVmaW5pdGlvbjogU2V0IElPIENlbGwgc2xldyByYXRlIG9uIGEgcGVyLWNvbnRyb2xsZXIgYmFzaXMuCi0gICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9tbWl0dGVkIGluZGljYXRpbmcgdGhhdAorICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2xsZXJzIG1heSBiZSBvbWl0dGVkIGluZGljYXRpbmcgdGhhdAogICAgICAgICAgICAgICAgICAgICAgIHRoZXkgc2hvdWxkIHJldGFpbiB0aGUgZGVmYXVsdCBzbGV3IHJhdGUgc2V0dGluZy4KICAgICAgICAgICAgICBFeGFtcGxlOiBzbGV3cmF0ZTp7MHgxfQogICAgICAgICAgICAgICAgICAgICAgICAgT24gQ29udHJvbGxlciAwIHNldCBzbGV3IHJhdGUgdG8gMS4KQEAgLTM2Niw3ICszNjYsNyBAQAogICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgICAgT3B0aW9uOiBhbXBsaXR1ZGU6IHt2YWx1ZVssdmFsdWUuLi5dfQogICAgICAgICAgIERlZmluaXRpb246IFNldCBJTyBDZWxsIHNpZ25hbCBhbXBsaXR1ZGUgb24gYSBwZXItY29udHJvbGxlciBiYXNpcy4KLSAgICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVycyBtYXkgYmUgb21taXR0ZWQgaW5kaWNhdGluZyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgQ29udHJvbGxlcnMgbWF5IGJlIG9taXR0ZWQgaW5kaWNhdGluZyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgdGhleSBzaG91bGQgcmV0YWluIHRoZSBkZWZhdWx0IHJlYWQgc3RyZWFtaW5nIHNldHRpbmcuCiAgICAgICAgICAgICAgRXhhbXBsZTogYW1wbGl0dWRlOnsweDF9CiAgICAgICAgICAgICAgICAgICAgICAgICBPbiBDb250cm9sbGVyIDAgc2V0IGFtcGxpdHVkZSB0byAxLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zY3NpL2libW1jYS50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvaWJtbWNhLnR4dAppbmRleCA0NWQ2MWFkLi5hYzQxYTlmIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Njc2kvaWJtbWNhLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3Njc2kvaWJtbWNhLnR4dApAQCAtMzAzLDcgKzMwMyw3IEBACiAgICAoc2NiKSBhbmQgY2FsbHMgYSBsb2NhbCBmdW5jdGlvbiBpc3N1ZV9jbWQoKSwgd2hpY2ggd3JpdGVzIGEgc2NiIAogICAgY29tbWFuZCBpbnRvIHN1YnN5c3RlbSBJL08gcG9ydHMuIE9uY2UgdGhlIHNjYiBjb21tYW5kIGlzIGNhcnJpZWQgb3V0LCAKICAgIHRoZSBpbnRlcnJ1cHRfaGFuZGxlcigpIGlzIGludm9rZWQuIElmIGEgZGV2aWNlIGlzIGRldGVybWluZWQgdG8gYmUgCi0gICBleGlzdGFudCBhbmQgaXQgaGFzIG5vdCBhc3NpZ25lZCBhbnkgbGRuLCBpdCBnZXRzIG9uZSBkeW5hbWljYWxseS4KKyAgIGV4aXN0ZW50IGFuZCBpdCBoYXMgbm90IGFzc2lnbmVkIGFueSBsZG4sIGl0IGdldHMgb25lIGR5bmFtaWNhbGx5LgogICAgRm9yIHRoaXMsIHRoZSB3aG9sZSBzdHVmZiBpcyBkb25lIGluIGlibW1jYV9xdWV1ZWNvbW1hbmQoKS4KIAogICAgMi42IEFib3J0ICYgUmVzZXQgQ29tbWFuZHMKQEAgLTc0MSw3ICs3NDEsNyBAQAogICAgICAgc29tZSBlcnJvciBhcHBlYXJlZCwgZWxzZSBpdCBpcyB1bmRlZmluZWQuIE5vdywgdGhpcyBpcyBmaXhlZC4gQmVmb3JlCiAgICAgICBhbnkgU0NCIGNvbW1hbmQgZ2V0cyBxdWV1ZWQsIHRoZSB0c2IuZGV2X3N0YXR1cyBpcyBzZXQgdG8gMCwgc28gdGhlIAogICAgICAgY21kLT5yZXN1bHQgd29uJ3Qgc2NyZXcgdXAgTGludXggaGlnaGVyIGxldmVsIGRyaXZlcnMuCi0gICAyKSBUaGUgcmVzZXQtZnVuY3Rpb24gaGFzIHNsaWdodGx5IGltcHJvdmVkLiBUaGlzIGlzIHN0aWxsIHBsYW5lZCBmb3IgCisgICAyKSBUaGUgcmVzZXQtZnVuY3Rpb24gaGFzIHNsaWdodGx5IGltcHJvdmVkLiBUaGlzIGlzIHN0aWxsIHBsYW5uZWQgZm9yIAogICAgICAgYWJvcnQuIER1cmluZyB0aGUgYWJvcnQgYW5kIHRoZSByZXNldCBmdW5jdGlvbiwgbm8gaW50ZXJydXB0cyBhcmUgCiAgICAgICBhbGxvd2VkLiBUaGlzIGlzIGhvd2V2ZXIgcXVpdGUgaGFyZCB0byBjb3BlIHdpdGgsIHNvIHRoZSBJTlQtc3RhdHVzCiAgICAgICByZWdpc3RlciBpcyByZWFkLiBXaGVuIHRoZSBpbnRlcnJ1cHQgZ2V0cyBxdWV1ZWQsIG9uZSBjYW4gZmluZCBpdHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpLWNoYW5nZXIudHh0IGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKaW5kZXggMDMyMzk5Yi4uYWRlMDQ2ZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2ktY2hhbmdlci50eHQKQEAgLTEwMiw3ICsxMDIsNyBAQAogCiBJZiB5b3UgaW5zbW9kIHRoZSBkcml2ZXIgd2l0aCAiaW5zbW9kIGRlYnVnPTEiLCBpdCB3aWxsIGJlIHZlcmJvc2UgYW5kCiBwcmludHMgYSBsb3Qgb2Ygc3R1ZmYgdG8gdGhlIHN5c2xvZy4gIENvbXBpbGluZyB0aGUga2VybmVsIHdpdGgKLUNPTkZJR19TQ1NJX0NPTlNUQU5UUz15IGltcHJvdmVzIHRoZSBxdWFsaXR5IG9mIHRoZSBlcnJvciBtZXNzYWdlcyBhbG90CitDT05GSUdfU0NTSV9DT05TVEFOVFM9eSBpbXByb3ZlcyB0aGUgcXVhbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZXMgYSBsb3QKIGJlY2F1c2UgdGhlIGtlcm5lbCB3aWxsIHRyYW5zbGF0ZSB0aGUgZXJyb3IgY29kZXMgaW50byBodW1hbi1yZWFkYWJsZQogc3RyaW5ncyB0aGVuLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9laC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9laC50eHQKaW5kZXggN2FjYmViYi4uNmZmMTZiNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZWgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2VoLnR4dApAQCAtMjkwLDcgKzI5MCw3IEBACiAJU0NTSSB0cmFuc3BvcnRzL0xMRERzIGF1dG9tYXRpY2FsbHkgYWNxdWlyZSBzZW5zZSBkYXRhIG9uCiAJY29tbWFuZCBmYWlsdXJlcyAoYXV0b3NlbnNlKS4gIEF1dG9zZW5zZSBpcyByZWNvbW1lbmRlZCBmb3IKIAlwZXJmb3JtYW5jZSByZWFzb25zIGFuZCBhcyBzZW5zZSBpbmZvcm1hdGlvbiBjb3VsZCBnZXQgb3V0IG9mCi0Jc3luYyBpbmJldHdlZW4gb2NjdXJyZW5jZSBvZiBDSEVDSyBDT05ESVRJT04gYW5kIHRoaXMgYWN0aW9uLgorCXN5bmMgYmV0d2VlbiBvY2N1cnJlbmNlIG9mIENIRUNLIENPTkRJVElPTiBhbmQgdGhpcyBhY3Rpb24uCiAKIAlOb3RlIHRoYXQgaWYgYXV0b3NlbnNlIGlzIG5vdCBzdXBwb3J0ZWQsIHNjbWQtPnNlbnNlX2J1ZmZlcgogCWNvbnRhaW5zIGludmFsaWQgc2Vuc2UgZGF0YSB3aGVuIGVycm9yLWNvbXBsZXRpbmcgdGhlIHNjbWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL3Njc2kvc2NzaV9mY190cmFuc3BvcnQudHh0CmluZGV4IGUwMDE5MmQuLmY3OTI4MmYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2NzaS9zY3NpX2ZjX3RyYW5zcG9ydC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zY3NpL3Njc2lfZmNfdHJhbnNwb3J0LnR4dApAQCAtMjkxLDcgKzI5MSw3IEBACiBWcG9ydCBzdXBwb3J0IGJ5IExMREQ6CiAKICAgVGhlIExMREQgaW5kaWNhdGVzIHN1cHBvcnQgZm9yIHZwb3J0cyBieSBzdXBwbHlpbmcgYSB2cG9ydF9jcmVhdGUoKQotICBmdW5jdGlvbiBpbiB0aGUgdHJhbnNwb3J0IHRlbXBsYXRlLiAgVGhlIHByZXNlbnNlIG9mIHRoaXMgZnVuY3Rpb24gd2lsbAorICBmdW5jdGlvbiBpbiB0aGUgdHJhbnNwb3J0IHRlbXBsYXRlLiAgVGhlIHByZXNlbmNlIG9mIHRoaXMgZnVuY3Rpb24gd2lsbAogICBjYXVzZSB0aGUgY3JlYXRpb24gb2YgdGhlIG5ldyBhdHRyaWJ1dGVzIG9uIHRoZSBmY19ob3N0LiAgQXMgcGFydCBvZgogICB0aGUgcGh5c2ljYWwgcG9ydCBjb21wbGV0aW5nIGl0cyBpbml0aWFsaXphdGlvbiByZWxhdGl2ZSB0byB0aGUKICAgdHJhbnNwb3J0LCBpdCBzaG91bGQgc2V0IHRoZSBtYXhfbnBpdl92cG9ydHMgYXR0cmlidXRlIHRvIGluZGljYXRlIHRoZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbW94YS1zbWFydGlvIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbW94YS1zbWFydGlvCmluZGV4IGQxMDQ0MzkuLjVkMmEzM2IgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc2VyaWFsL21veGEtc21hcnRpbworKysgYi9Eb2N1bWVudGF0aW9uL3NlcmlhbC9tb3hhLXNtYXJ0aW8KQEAgLTQ3Myw3ICs0NzMsNyBAQAogICAgc3BkX25vcm1hbAkgIFVzZSAgMzguNGtiICB3aGVuICB0aGUgYXBwbGljYXRpb24gcmVxdWVzdHMgMzguNGtiLgogICAgc3BkX2N1c3QJICBVc2UgIHRoZSBjdXN0b20gZGl2aXNvciB0byBzZXQgdGhlIHNwZWVkIHdoZW4gIHRoZQogCQkgIGFwcGxpY2F0aW9uIHJlcXVlc3RzIDM4LjRrYi4KLSAgIGRpdmlzb3IJICBUaGlzIG9wdGlvbiBzZXQgdGhlIGN1c3RvbSBkaXZpc29uLgorICAgZGl2aXNvcgkgIFRoaXMgb3B0aW9uIHNldCB0aGUgY3VzdG9tIGRpdmlzaW9uLgogICAgYmF1ZF9iYXNlCSAgVGhpcyBvcHRpb24gc2V0IHRoZSBiYXNlIGJhdWQgcmF0ZS4KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc2VyaWFsL25fZ3NtLnR4dCBiL0RvY3VtZW50YXRpb24vc2VyaWFsL25fZ3NtLnR4dAppbmRleCAzOTdmNDFhLi5hNWQ5MTEyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NlcmlhbC9uX2dzbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zZXJpYWwvbl9nc20udHh0CkBAIC0zNCw3ICszNCw3IEBACiAJLyogY29uZmlndXJlIHRoZSBzZXJpYWwgcG9ydCA6IHNwZWVkLCBmbG93IGNvbnRyb2wgLi4uICovCiAKIAkvKiBzZW5kIHRoZSBBVCBjb21tYW5kcyB0byBzd2l0Y2ggdGhlIG1vZGVtIHRvIENNVVggbW9kZQotCSAgIGFuZCBjaGVjayB0aGF0IGl0J3Mgc3VjY2VzZnVsIChzaG91bGQgcmV0dXJuIE9LKSAqLworCSAgIGFuZCBjaGVjayB0aGF0IGl0J3Mgc3VjY2Vzc2Z1bCAoc2hvdWxkIHJldHVybiBPSykgKi8KIAl3cml0ZShmZCwgIkFUK0NNVVg9MFxyIiwgMTApOwogCiAJLyogZXhwZXJpZW5jZSBzaG93ZWQgdGhhdCBzb21lIG1vZGVtcyBuZWVkIHNvbWUgdGltZSBiZWZvcmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvYWxzYS9BTFNBLUNvbmZpZ3VyYXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKaW5kZXggMTgxYmE1Yi4uOTgyMmFmYiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9hbHNhL0FMU0EtQ29uZmlndXJhdGlvbi50eHQKQEAgLTMyMiw3ICszMjIsNyBAQAogICAgICJwb3J0IiBuZWVkcyB0byBtYXRjaCB0aGUgQkFTRSBBRERSRVNTIGp1bXBlciBvbiB0aGUgY2FyZCAoMHgyMjAgb3IgMHgyNDApCiAgICAgb3IgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2FyZCdzIEVFUFJPTSBmb3IgY2FyZHMgdGhhdCBoYXZlIGFuIEVFUFJPTSBhbmQKICAgICB0aGVpciAiQ09ORklHIE1PREUiIGp1bXBlciBzZXQgdG8gIkVFUFJPTSBTRVRUSU5HIi4gVGhlIG90aGVyIHZhbHVlcyBjYW4KLSAgICBiZSBjaG9vc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCisgICAgYmUgY2hvc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCiAKICAgICBJZiBkbWEyIGlzIHNwZWNpZmllZCBhbmQgZGlmZmVyZW50IGZyb20gZG1hMSwgdGhlIGNhcmQgd2lsbCBvcGVyYXRlIGluCiAgICAgZnVsbC1kdXBsZXggbW9kZS4gV2hlbiBkbWExPTMsIG9ubHkgZG1hMj0wIGlzIHZhbGlkIGFuZCB0aGUgb25seSB3YXkgdG8KQEAgLTM1Niw3ICszNTYsNyBAQAogICAgICJwb3J0IiBuZWVkcyB0byBtYXRjaCB0aGUgQkFTRSBBRERSRVNTIGp1bXBlciBvbiB0aGUgY2FyZCAoMHgyMjAgb3IgMHgyNDApCiAgICAgb3IgdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2FyZCdzIEVFUFJPTSBmb3IgY2FyZHMgdGhhdCBoYXZlIGFuIEVFUFJPTSBhbmQKICAgICB0aGVpciAiQ09ORklHIE1PREUiIGp1bXBlciBzZXQgdG8gIkVFUFJPTSBTRVRUSU5HIi4gVGhlIG90aGVyIHZhbHVlcyBjYW4KLSAgICBiZSBjaG9vc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCisgICAgYmUgY2hvc2VuIGZyZWVseSBmcm9tIHRoZSBvcHRpb25zIGVudW1lcmF0ZWQgYWJvdmUuCiAKICAgICBJZiBkbWEyIGlzIHNwZWNpZmllZCBhbmQgZGlmZmVyZW50IGZyb20gZG1hMSwgdGhlIGNhcmQgd2lsbCBvcGVyYXRlIGluCiAgICAgZnVsbC1kdXBsZXggbW9kZS4gV2hlbiBkbWExPTMsIG9ubHkgZG1hMj0wIGlzIHZhbGlkIGFuZCB0aGUgb25seSB3YXkgdG8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5PU1MgYi9Eb2N1bWVudGF0aW9uL3NvdW5kL29zcy9SRUFETUUuT1NTCmluZGV4IGM2MTVkZWIuLjRiZTI1OTQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vc291bmQvb3NzL1JFQURNRS5PU1MKKysrIGIvRG9jdW1lbnRhdGlvbi9zb3VuZC9vc3MvUkVBRE1FLk9TUwpAQCAtMTM1Miw3ICsxMzUyLDcgQEAKIFRoZSBQQ00yMCBjb250YWlucyBhIHJhZGlvIHR1bmVyLCB3aGljaCBpcyBhbHNvIGNvbnRyb2xsZWQgYnkKIEFDSS4gVGhpcyByYWRpbyB0dW5lciBpcyBzdXBwb3J0ZWQgYnkgdGhlIEFDSSBkcml2ZXIgdG9nZXRoZXIgd2l0aCB0aGUKIG1pcm9wY20yMC5vIG1vZHVsZS4gQWxzbyB0aGUgNy1iYW5kIGVxdWFsaXplciBpcyBpbnRlZ3JhdGVkCi0obGltaXRlZCBieSB0aGUgT1NTLWRlc2lnbikuIERldmVsb3BlbWVudCBoYXMgc3RhcnRlZCBhbmQgbWF5YmUKKyhsaW1pdGVkIGJ5IHRoZSBPU1MtZGVzaWduKS4gRGV2ZWxvcG1lbnQgaGFzIHN0YXJ0ZWQgYW5kIG1heWJlCiBmaW5pc2hlZCBmb3IgdGhlIFJEUyBkZWNvZGVyIG9uIHRoaXMgY2FyZCwgdG9vLiBZb3Ugd2lsbCBiZSBhYmxlIHRvCiByZWFkIFJhZGlvVGV4dCwgdGhlIFByb2dyYW1tZSBTZXJ2aWNlIG5hbWUsIFByb2dyYW1tZSBUWXBlIGFuZAogb3RoZXJzLiBFdmVuIHRoZSB2NGwgcmFkaW8gbW9kdWxlIGJlbmVmaXRzIGZyb20gaXQgd2l0aCBhIHJlZmluZWQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vc3BpL3B4YTJ4eCBiL0RvY3VtZW50YXRpb24vc3BpL3B4YTJ4eAppbmRleCA2OGE0ZmUzLi40OTNkYWRhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NwaS9weGEyeHgKKysrIGIvRG9jdW1lbnRhdGlvbi9zcGkvcHhhMnh4CkBAIC0xNDMsNyArMTQzLDcgQEAKIE5PVEU6IHRoZSBTUEkgZHJpdmVyIGNhbm5vdCBjb250cm9sIHRoZSBjaGlwIHNlbGVjdCBpZiBTU1BGUk0gaXMgdXNlZCwgc28gdGhlCiBjaGlwc2VsZWN0IGlzIGRyb3BwZWQgYWZ0ZXIgZWFjaCBzcGlfdHJhbnNmZXIuICBNb3N0IGRldmljZXMgbmVlZCBjaGlwIHNlbGVjdAogYXNzZXJ0ZWQgYXJvdW5kIHRoZSBjb21wbGV0ZSBtZXNzYWdlLiAgVXNlIFNTUEZSTSBhcyBhIEdQSU8gKHRocm91Z2ggY3NfY29udHJvbCkKLXRvIGFjY29tb2RhdGUgdGhlc2UgY2hpcHMuCit0byBhY2NvbW1vZGF0ZSB0aGVzZSBjaGlwcy4KIAogCiBOU1NQIFNMQVZFIFNBTVBMRQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9zcGkvc3BpLWxtNzBsbHAgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscAppbmRleCAzNGE5Y2ZkLi40NjNmNmQwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscAorKysgYi9Eb2N1bWVudGF0aW9uL3NwaS9zcGktbG03MGxscApAQCAtNDYsNyArNDYsNyBAQAogCiBOb3RlIHRoYXQgc2luY2UgdGhlIExNNzAgdXNlcyBhICIzLXdpcmUiIHZhcmlhbnQgb2YgU1BJLCB0aGUgU0kvU08gcGluCiBpcyBjb25uZWN0ZWQgdG8gYm90aCBwaW4gRDcgKGFzIE1hc3RlciBPdXQpIGFuZCBTZWxlY3QgKGFzIE1hc3RlciBJbikKLXVzaW5nIGFuIGFycmFuZ21lbnQgdGhhdCBsZXRzIGVpdGhlciB0aGUgcGFycG9ydCBvciB0aGUgTE03MCBwdWxsIHRoZQordXNpbmcgYW4gYXJyYW5nZW1lbnQgdGhhdCBsZXRzIGVpdGhlciB0aGUgcGFycG9ydCBvciB0aGUgTE03MCBwdWxsIHRoZQogcGluIGxvdy4gIFRoaXMgY2FuJ3QgYmUgc2hhcmVkIHdpdGggdHJ1ZSBTUEkgZGV2aWNlcywgYnV0IG90aGVyIDMtd2lyZQogZGV2aWNlcyBtaWdodCBzaGFyZSB0aGUgc2FtZSBTSS9TTyBwaW4uCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVsZXBob255L2l4ai50eHQgYi9Eb2N1bWVudGF0aW9uL3RlbGVwaG9ueS9peGoudHh0CmluZGV4IDRmYjMxNGQuLmRiOTRmYjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVsZXBob255L2l4ai50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWxlcGhvbnkvaXhqLnR4dApAQCAtNTEsNyArNTEsNyBAQAogU3BlY2lmaWNhbGx5LCB2ZXJ5IG9sZCBJbnRlcm5ldCBQaG9uZUpBQ0sgY2FyZHMgaGF2ZSBub24tc3RhbmRhcmQKIEcuNzIzLjEgY29kZWNzIChkdWUgdG8gdGhlIGVhcmx5IG5hdHVyZSBvZiB0aGUgRFNQcyBpbiB0aG9zZSBkYXlzKS4KIFRoZSBhdXRvLWNvbnZlcnNpb24gY29kZSB0byBicmluZyB0aG9zZSBjYXJkcyBpbnRvIGNvbXBsaWFuY2Ugd2l0aAotdG9kYXlzIHN0YW5kYXJkcyBpcyBhdmFpbGFibGUgYXMgYSBiaW5hcnkgb25seSBtb2R1bGUgdG8gdGhvc2UgcGVvcGxlCit0b2RheSdzIHN0YW5kYXJkcyBpcyBhdmFpbGFibGUgYXMgYSBiaW5hcnkgb25seSBtb2R1bGUgdG8gdGhvc2UgcGVvcGxlCiBuZWVkaW5nIGl0LiAgSWYgeW91IGJvdWdodCB5b3VyIGNhcmQgYWZ0ZXIgMTk5NyBvciBzbywgeW91IGFyZSBPSyAtCiBpdCdzIG9ubHkgdGhlIHZlcnkgb2xkIGNhcmRzIHRoYXQgYXJlIGFmZmVjdGVkLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RyYWNlL3JpbmctYnVmZmVyLWRlc2lnbi50eHQgYi9Eb2N1bWVudGF0aW9uL3RyYWNlL3JpbmctYnVmZmVyLWRlc2lnbi50eHQKaW5kZXggZDI5OWZmMy4uN2QzNTBiNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90cmFjZS9yaW5nLWJ1ZmZlci1kZXNpZ24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdHJhY2UvcmluZy1idWZmZXItZGVzaWduLnR4dApAQCAtMjM3LDcgKzIzNyw3IEBACiAgICAgICB8d3JpdHRlbiAgfAogICAgICAgKy0tLS0tLS0tLSsKICAgICAgIHx3cml0dGVuICB8Ci0gICAgICArLS0tLS0tLS0tKyAgPC0tLSBuZXh0IHBvc2l0b24gZm9yIHdyaXRlIChjdXJyZW50IGNvbW1pdCkKKyAgICAgICstLS0tLS0tLS0rICA8LS0tIG5leHQgcG9zaXRpb24gZm9yIHdyaXRlIChjdXJyZW50IGNvbW1pdCkKICAgICAgIHwgZW1wdHkgICB8CiAgICAgICArLS0tLS0tLS0tKwogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5wdnJ1c2IyIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9SRUFETUUucHZydXNiMgppbmRleCBhNzQ3MjAwLi4yMTM3YjU4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L1JFQURNRS5wdnJ1c2IyCisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvUkVBRE1FLnB2cnVzYjIKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgIHRvIHByb3ZpZGUgYSBzdHJlYW1pbmcgQVBJIHVzYWJsZSBieSBhIHJlYWQoKSBzeXN0ZW0gY2FsbCBzdHlsZSBvZgogICAgIEkvTy4gIFJpZ2h0IG5vdyB0aGlzIGlzIHRoZSBvbmx5IGxheWVyIG9uIHRvcCBvZiBwdnJ1c2IyLWlvLltjaF0sCiAgICAgaG93ZXZlciB0aGUgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgaGVyZSB3YXMgaW50ZW5kZWQgdG8gYWxsb3cgZm9yCi0gICAgb3RoZXIgc3R5bGVzIG9mIEkvTyB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIGFkZGl0b25hbCBtb2R1bGVzLCBsaWtlCisgICAgb3RoZXIgc3R5bGVzIG9mIEkvTyB0byBiZSBpbXBsZW1lbnRlZCB3aXRoIGFkZGl0aW9uYWwgbW9kdWxlcywgbGlrZQogICAgIG1tYXAoKSdlZCBidWZmZXJzIG9yIHNvbWV0aGluZyBldmVuIG1vcmUgZXhvdGljLgogCiAgIHB2cnVzYjItbWFpbi5jIC0gVGhpcyBpcyB0aGUgdG9wIGxldmVsIG9mIHRoZSBkcml2ZXIuICBNb2R1bGUgbGV2ZWwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvUkVBRE1FCmluZGV4IDNhMzY3Y2QuLjdjYmY0ZmIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRQpAQCAtNzAsNyArNzAsNyBAQAogaW5zdGVhZCBvZiBtYWlsaW5nIG1lIGRpcmVjdGx5LiAgVGhlIGNoYW5jZSB0aGF0IHNvbWVvbmUgd2l0aCB0aGUKIHNhbWUgY2FyZCBsaXN0ZW5zIHRoZXJlIGlzIG11Y2ggaGlnaGVyLi4uCiAKLUZvciBwcm9ibGVtcyB3aXRoIHNvdW5kOiAgVGhlcmUgYXJlIGFsb3Qgb2YgZGlmZmVyZW50IHN5c3RlbXMgdXNlZAorRm9yIHByb2JsZW1zIHdpdGggc291bmQ6ICBUaGVyZSBhcmUgYSBsb3Qgb2YgZGlmZmVyZW50IHN5c3RlbXMgdXNlZAogZm9yIFRWIHNvdW5kIGFsbCBvdmVyIHRoZSB3b3JsZC4gIEFuZCB0aGVyZSBhcmUgYWxzbyBkaWZmZXJlbnQgY2hpcHMKIHdoaWNoIGRlY29kZSB0aGUgYXVkaW8gc2lnbmFsLiAgUmVwb3J0cyBhYm91dCBzb3VuZCBwcm9ibGVtcyAoInN0ZXJlbwogZG9lcydudCB3b3JrIikgYXJlIHByZXR0eSB1c2VsZXNzIHVubGVzcyB5b3UgaW5jbHVkZSBzb21lIGRldGFpbHMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9SRUFETUUuZnJlZXplIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKaW5kZXggNDI1OWRjYy4uNWVkZGZhMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1JFQURNRS5mcmVlemUKQEAgLTMzLDcgKzMzLDcgQEAKIAogSSd2ZSBzZWVuIHJlcG9ydHMgdGhhdCBidHR2IDAuNy54IGNyYXNoZXMgd2hlcmVhcyAwLjgueCB3b3JrcyByb2NrIHNvbGlkCiBmb3Igc29tZSBwZW9wbGUuICBUaHVzIHByb2JhYmx5IGEgc21hbGwgYnVnbGV0IGxlZnQgc29tZXdoZXJlIGluIGJ0dHYKLTAuNy54LiAgSSBoYXZlIG5vIGlkZWEgd2hlcmUgZXhhY3RseSwgaXQgd29ya3Mgc3RhYmxlIGZvciBtZSBhbmQgYWxvdCBvZgorMC43LnguICBJIGhhdmUgbm8gaWRlYSB3aGVyZSBleGFjdGx5LCBpdCB3b3JrcyBzdGFibGUgZm9yIG1lIGFuZCBhIGxvdCBvZgogb3RoZXIgcGVvcGxlLiAgQnV0IGluIGNhc2UgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgMC43LnggdmVyc2lvbnMgeW91CiBjYW4gZ2l2ZSAwLjgueCBhIHRyeSAuLi4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NvdW5kLUZBUSBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvYnR0di9Tb3VuZC1GQVEKaW5kZXggYmM1ZTQxZC4uMzk1ZjZjNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9idHR2L1NvdW5kLUZBUQorKysgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L2J0dHYvU291bmQtRkFRCkBAIC0yLDcgKzIsNyBAQAogYnR0diBhbmQgc291bmQgbWluaSBob3d0bwogPT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGVyZSBhcmUgYWxvdCBvZiBkaWZmZXJlbnQgYnQ4NDgvODQ5Lzg3OC84NzkgYmFzZWQgYm9hcmRzIGF2YWlsYWJsZS4KK1RoZXJlIGFyZSBhIGxvdCBvZiBkaWZmZXJlbnQgYnQ4NDgvODQ5Lzg3OC84NzkgYmFzZWQgYm9hcmRzIGF2YWlsYWJsZS4KIE1ha2luZyB2aWRlbyB3b3JrIG9mdGVuIGlzIG5vdCBhIGJpZyBkZWFsLCBiZWNhdXNlIHRoaXMgaXMgaGFuZGxlZAogY29tcGxldGVseSBieSB0aGUgYnQ4eHggY2hpcCwgd2hpY2ggaXMgY29tbW9uIG9uIGFsbCBib2FyZHMuICBCdXQKIHNvdW5kIGlzIGhhbmRsZWQgaW4gc2xpZ2h0bHkgZGlmZmVyZW50IHdheXMgb24gZWFjaCBib2FyZC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcHhhX2NhbWVyYS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3B4YV9jYW1lcmEudHh0CmluZGV4IDRmNmQwY2EuLjUxZWQxNTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvcHhhX2NhbWVyYS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi92aWRlbzRsaW51eC9weGFfY2FtZXJhLnR4dApAQCAtODQsMTIgKzg0LDEyIEBACiAgICAgICAgdHJhbnNmZXIgaXMgbm90IHN0YXJ0ZWQuIE9uICJFbmQgT2YgRnJhbWUiIGludGVycnVwdCwgdGhlIGlycSBoYW5kbGVyCiAgICAgICAgc3RhcnRzIHRoZSBETUEgY2hhaW4uCiAgICAgIC0gY2FwdHVyZSBvZiBvbmUgdmlkZW9idWZmZXIKLSAgICAgICBUaGUgRE1BIGNoYWluIHN0YXJ0cyB0cmFuc2ZlcmluZyBkYXRhIGludG8gdmlkZW9idWZmZXIgUkFNIHBhZ2VzLgotICAgICAgIFdoZW4gYWxsIHBhZ2VzIGFyZSB0cmFuc2ZlcmVkLCB0aGUgRE1BIGlycSBpcyByYWlzZWQgb24gIkVORElOVFIiIHN0YXR1cworICAgICAgIFRoZSBETUEgY2hhaW4gc3RhcnRzIHRyYW5zZmVycmluZyBkYXRhIGludG8gdmlkZW9idWZmZXIgUkFNIHBhZ2VzLgorICAgICAgIFdoZW4gYWxsIHBhZ2VzIGFyZSB0cmFuc2ZlcnJlZCwgdGhlIERNQSBpcnEgaXMgcmFpc2VkIG9uICJFTkRJTlRSIiBzdGF0dXMKICAgICAgLSBmaW5pc2hpbmcgb25lIHZpZGVvYnVmZmVyCiAgICAgICAgVGhlIERNQSBpcnEgaGFuZGxlciBtYXJrcyB0aGUgdmlkZW9idWZmZXIgYXMgImRvbmUiLCBhbmQgcmVtb3ZlcyBpdCBmcm9tCiAgICAgICAgdGhlIGFjdGl2ZSBydW5uaW5nIHF1ZXVlCi0gICAgICAgTWVhbndoaWxlLCB0aGUgbmV4dCB2aWRlb2J1ZmZlciAoaWYgdGhlcmUgaXMgb25lKSwgaXMgdHJhbnNmZXJlZCBieSBETUEKKyAgICAgICBNZWFud2hpbGUsIHRoZSBuZXh0IHZpZGVvYnVmZmVyIChpZiB0aGVyZSBpcyBvbmUpLCBpcyB0cmFuc2ZlcnJlZCBieSBETUEKICAgICAgLSBmaW5pc2hpbmcgdGhlIGxhc3QgdmlkZW9idWZmZXIKICAgICAgICBPbiB0aGUgRE1BIGlycSBvZiB0aGUgbGFzdCB2aWRlb2J1ZmZlciwgdGhlIFFDSSBpcyBzdG9wcGVkLgogCkBAIC0xMDEsNyArMTAxLDcgQEAKIAogICAgICBUaGlzIHN0cnVjdHVyZSBpcyBwb2ludGVkIGJ5IGRtYS0+c2dfY3B1LgogICAgICBUaGUgZGVzY3JpcHRvcnMgYXJlIHVzZWQgYXMgZm9sbG93cyA6Ci0gICAgICAtIGRlc2Mtc2dbaV06IGktdGggZGVzY3JpcHRvciwgdHJhbnNmZXJpbmcgdGhlIGktdGggc2cKKyAgICAgIC0gZGVzYy1zZ1tpXTogaS10aCBkZXNjcmlwdG9yLCB0cmFuc2ZlcnJpbmcgdGhlIGktdGggc2cKICAgICAgICAgZWxlbWVudCB0byB0aGUgdmlkZW8gYnVmZmVyIHNjYXR0ZXIgZ2F0aGVyCiAgICAgICAtIGZpbmlzaGVyOiBoYXMgZGRhZHI9REFERFJfU1RPUCwgZGNtZD1FTkRJUlFFTgogICAgICAgLSBsaW5rZXI6IGhhcyBkZGFkcj0gZGVzYy1zZ1swXSBvZiBuZXh0IHZpZGVvIGJ1ZmZlciwgZGNtZD0wCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZpZGVvNGxpbnV4L3Y0bDItZnJhbWV3b3JrLnR4dCBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CmluZGV4IDNiMTU2MDguLmNmMjFmN2EgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdmlkZW80bGludXgvdjRsMi1mcmFtZXdvcmsudHh0CkBAIC0zNDMsNyArMzQzLDcgQEAKIAllcnIgPSB2NGwyX2RldmljZV9jYWxsX3VudGlsX2Vycih2NGwyX2RldiwgMCwgY29yZSwgZ19jaGlwX2lkZW50LCAmY2hpcCk7CiAKIEFueSBlcnJvciBleGNlcHQgLUVOT0lPQ1RMQ01EIHdpbGwgZXhpdCB0aGUgbG9vcCB3aXRoIHRoYXQgZXJyb3IuIElmIG5vCi1lcnJvcnMgKGV4Y2VwdCAtRU5PSU9DVExDTUQpIG9jY3VyZWQsIHRoZW4gMCBpcyByZXR1cm5lZC4KK2Vycm9ycyAoZXhjZXB0IC1FTk9JT0NUTENNRCkgb2NjdXJyZWQsIHRoZW4gMCBpcyByZXR1cm5lZC4KIAogVGhlIHNlY29uZCBhcmd1bWVudCB0byBib3RoIGNhbGxzIGlzIGEgZ3JvdXAgSUQuIElmIDAsIHRoZW4gYWxsIHN1YmRldnMgYXJlCiBjYWxsZWQuIElmIG5vbi16ZXJvLCB0aGVuIG9ubHkgdGhvc2Ugd2hvc2UgZ3JvdXAgSUQgbWF0Y2ggdGhhdCB2YWx1ZSB3aWxsCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL2FjdGl2ZV9tbS50eHQgYi9Eb2N1bWVudGF0aW9uL3ZtL2FjdGl2ZV9tbS50eHQKaW5kZXggNGVlMWY2NC4uZGJmNDU4MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92bS9hY3RpdmVfbW0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdm0vYWN0aXZlX21tLnR4dApAQCAtNzQsNyArNzQsNyBAQAogYW5kIHRoaW5ncyBsaWtlIHRoYXQpLgogCiBBbnl3YXksIEkgcHV0IGEgcHJlLXBhdGNoLTIuMy4xMy0xIG9uIGZ0cC5rZXJuZWwub3JnIGp1c3QgYSBtb21lbnQgYWdvLAotYmVjYXVzZSBpdCBzbGlnaHRseSBjaGFuZ2VzIHRoZSBpbnRlcmZhY2VzIHRvIGFjY29tb2RhdGUgdGhlIGFscGhhICh3aG8KK2JlY2F1c2UgaXQgc2xpZ2h0bHkgY2hhbmdlcyB0aGUgaW50ZXJmYWNlcyB0byBhY2NvbW1vZGF0ZSB0aGUgYWxwaGEgKHdobwogd291bGQgaGF2ZSB0aG91Z2h0IGl0LCBidXQgdGhlIGFscGhhIGFjdHVhbGx5IGVuZHMgdXAgaGF2aW5nIG9uZSBvZiB0aGUKIHVnbGllc3QgY29udGV4dCBzd2l0Y2ggY29kZXMgLSB1bmxpa2UgdGhlIG90aGVyIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhlIE1NCiBhbmQgcmVnaXN0ZXIgc3RhdGUgaXMgc2VwYXJhdGUsIHRoZSBhbHBoYSBQQUxjb2RlIGpvaW5zIHRoZSB0d28sIGFuZCB5b3UKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdm0vaHVnZXRsYnBhZ2UudHh0IGIvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKaW5kZXggNDU3NjM0Yy4uZjg1NTFiMyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi92bS9odWdldGxicGFnZS50eHQKQEAgLTcyLDcgKzcyLDcgQEAKIGFsbG9jYXRpbmcgaHVnZSBwYWdlcyBhcyBtZW1vcnkgaGFzIG5vdCB5ZXQgYmVjb21lIGZyYWdtZW50ZWQuCiAKIFNvbWUgcGxhdGZvcm1zIHN1cHBvcnQgbXVsdGlwbGUgaHVnZSBwYWdlIHNpemVzLiAgVG8gYWxsb2NhdGUgaHVnZSBwYWdlcwotb2YgYSBzcGVjaWZpYyBzaXplLCBvbmUgbXVzdCBwcmVjZWVkIHRoZSBodWdlIHBhZ2VzIGJvb3QgY29tbWFuZCBwYXJhbWV0ZXJzCitvZiBhIHNwZWNpZmljIHNpemUsIG9uZSBtdXN0IHByZWNlZGUgdGhlIGh1Z2UgcGFnZXMgYm9vdCBjb21tYW5kIHBhcmFtZXRlcnMKIHdpdGggYSBodWdlIHBhZ2Ugc2l6ZSBzZWxlY3Rpb24gcGFyYW1ldGVyICJodWdlcGFnZXN6PTxzaXplPiIuICA8c2l6ZT4gbXVzdAogYmUgc3BlY2lmaWVkIGluIGJ5dGVzIHdpdGggb3B0aW9uYWwgc2NhbGUgc3VmZml4IFtrS21NZ0ddLiAgVGhlIGRlZmF1bHQgaHVnZQogcGFnZSBzaXplIG1heSBiZSBzZWxlY3RlZCB3aXRoIHRoZSAiZGVmYXVsdF9odWdlcGFnZXN6PTxzaXplPiIgYm9vdCBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ZtL292ZXJjb21taXQtYWNjb3VudGluZyBiL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCmluZGV4IDIxYzdiMWYuLjcwNmQ3ZWQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCisrKyBiL0RvY3VtZW50YXRpb24vdm0vb3ZlcmNvbW1pdC1hY2NvdW50aW5nCkBAIC00LDcgKzQsNyBAQAogCQlhZGRyZXNzIHNwYWNlIGFyZSByZWZ1c2VkLiBVc2VkIGZvciBhIHR5cGljYWwgc3lzdGVtLiBJdAogCQllbnN1cmVzIGEgc2VyaW91c2x5IHdpbGQgYWxsb2NhdGlvbiBmYWlscyB3aGlsZSBhbGxvd2luZwogCQlvdmVyY29tbWl0IHRvIHJlZHVjZSBzd2FwIHVzYWdlLiAgcm9vdCBpcyBhbGxvd2VkIHRvIAotCQlhbGxvY2F0ZSBzbGlnaGx5IG1vcmUgbWVtb3J5IGluIHRoaXMgbW9kZS4gVGhpcyBpcyB0aGUgCisJCWFsbG9jYXRlIHNsaWdodGx5IG1vcmUgbWVtb3J5IGluIHRoaXMgbW9kZS4gVGhpcyBpcyB0aGUgCiAJCWRlZmF1bHQuCiAKIDEJLQlBbHdheXMgb3ZlcmNvbW1pdC4gQXBwcm9wcmlhdGUgZm9yIHNvbWUgc2NpZW50aWZpYwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyNDIzIGIvRG9jdW1lbnRhdGlvbi93MS9zbGF2ZXMvdzFfZHMyNDIzCmluZGV4IDkwYTY1ZDIuLjNmOThiNTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdzEvc2xhdmVzL3cxX2RzMjQyMworKysgYi9Eb2N1bWVudGF0aW9uL3cxL3NsYXZlcy93MV9kczI0MjMKQEAgLTIxLDggKzIxLDggQEAKIAogRWFjaCBsaW5lcyB3aWxsIGNvbnRhaW4gdGhlIHZhbHVlcyBvZiA0MiBieXRlcyByZWFkIGZyb20gdGhlIGNvdW50ZXIgYW5kCiBtZW1vcnkgcGFnZSBhbG9uZyB0aGUgY3JjPVlFUyBvciBOTyBmb3IgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSByZWFkIG9wZXJhdGlvbgotd2FzIHN1Y2Nlc3NmdWxsIGFuZCBDUkMgbWF0Y2hlZC4KLUlmIHRoZSBvcGVyYXRpb24gd2FzIHN1Y2Nlc3NmdWxsLCB0aGVyZSBpcyBhbHNvIGluIHRoZSBlbmQgb2YgZWFjaCBsaW5lCit3YXMgc3VjY2Vzc2Z1bCBhbmQgQ1JDIG1hdGNoZWQuCitJZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLCB0aGVyZSBpcyBhbHNvIGluIHRoZSBlbmQgb2YgZWFjaCBsaW5lCiBhIGNvdW50ZXIgdmFsdWUgZXhwcmVzc2VkIGFzIGFuIGludGVnZXIgYWZ0ZXIgYz0KIAogTWVhbmluZyBvZiA0MiBieXRlcyByZXByZXNlbnRlZCBpcyBmb2xsb3dpbmc6CkBAIC0zNCw3ICszNCw3IEBACiAgLSBjcmM9WUVTL05PIGluZGljYXRpbmcgd2hldGhlciByZWFkIHdhcyBvayBhbmQgY3JjIG1hdGNoZWQKICAtIGM9PGludD4gY3VycmVudCBjb3VudGVyIHZhbHVlCiAKLWV4YW1wbGUgZnJvbSB0aGUgc3VjY2Vzc2Z1bGwgcmVhZDoKK2V4YW1wbGUgZnJvbSB0aGUgc3VjY2Vzc2Z1bCByZWFkOgogMDAgMDIgMDAgMDAgMDAgMDAgMDAgMDAgMDAgNmQgMzggMDAgZmYgZmYgMDAgMDAgZmUgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgMDAgMDAgZmYgZmYgY3JjPVlFUyBjPTIKIDAwIDAyIDAwIDAwIDAwIDAwIDAwIDAwIDAwIGUwIDFmIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIDAwIDAwIGZmIGZmIGNyYz1ZRVMgYz0yCiAwMCAyOSBjNiA1ZCAxOCAwMCAwMCAwMCAwMCAwNCAzNyAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiAwMCAwMCBmZiBmZiBjcmM9WUVTIGM9NDA4Nzk4NzYxCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3cxL3cxLm5ldGxpbmsgYi9Eb2N1bWVudGF0aW9uL3cxL3cxLm5ldGxpbmsKaW5kZXggODA0NDQ1Zi4uZjU5YTMxOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi93MS93MS5uZXRsaW5rCisrKyBiL0RvY3VtZW50YXRpb24vdzEvdzEubmV0bGluawpAQCAtODEsNyArODEsNyBAQAogZm9ybWF0OgogCiAJY25fbXNnIChDTl9XMV9JRFguQ05fVzFfVkFMIGFzIGlkLCBsZW4gaXMgZXF1YWwgdG8gc2l6ZW9mKHN0cnVjdAotCXcxX25ldGxpbmtfbXNnKSBwbHVzIG51bWJlciBvZiBtYXN0ZXJzIG11bHRpcGxlZCBieSA0KQorCXcxX25ldGxpbmtfbXNnKSBwbHVzIG51bWJlciBvZiBtYXN0ZXJzIG11bHRpcGxpZWQgYnkgNCkKIAl3MV9uZXRsaW5rX21zZyAodHlwZTogVzFfTElTVF9NQVNURVJTLCBsZW4gaXMgZXF1YWwgdG8KIAkJbnVtYmVyIG9mIG1hc3RlcnMgbXVsdGlwbGllZCBieSA0ICh1MzIgc2l6ZSkpCiAJaWQwIC4uLiBpZE4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vd2F0Y2hkb2cvaHB3ZHQudHh0IGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKaW5kZXggOWMyNGQ1Zi4uOTQ4ODA3OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi93YXRjaGRvZy9ocHdkdC50eHQKQEAgLTgsNyArOCw3IEBACiAgVGhlIEhQIGlMTzIgTk1JIFdhdGNoZG9nIGRyaXZlciBpcyBhIGtlcm5lbCBtb2R1bGUgdGhhdCBwcm92aWRlcyBiYXNpYwogIHdhdGNoZG9nIGZ1bmN0aW9uYWxpdHkgYW5kIHRoZSBhZGRlZCBiZW5lZml0IG9mIE5NSSBzb3VyY2luZy4gQm90aCB0aGUKICB3YXRjaGRvZyBmdW5jdGlvbmFsaXR5IGFuZCB0aGUgTk1JIHNvdXJjaW5nIGNhcGFiaWxpdHkgbmVlZCB0byBiZSBlbmFibGVkCi0gYnkgdGhlIHVzZXIuIFJlbWVtYmVyIHRoYXQgdGhlIHR3byBtb2RlcyBhcmUgbm90IGRlcGVuZGFudCBvbiBvbmUgYW5vdGhlci4KKyBieSB0aGUgdXNlci4gUmVtZW1iZXIgdGhhdCB0aGUgdHdvIG1vZGVzIGFyZSBub3QgZGVwZW5kZW50IG9uIG9uZSBhbm90aGVyLgogIEEgdXNlciBjYW4gaGF2ZSB0aGUgTk1JIHNvdXJjaW5nIHdpdGhvdXQgdGhlIHdhdGNoZG9nIHRpbWVyIGFuZCB2aWNlLXZlcnNhLgogCiAgV2F0Y2hkb2cgZnVuY3Rpb25hbGl0eSBpcyBlbmFibGVkIGxpa2UgYW55IG90aGVyIGNvbW1vbiB3YXRjaGRvZyBkcml2ZXIuIFRoYXQKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vZWxmLmggYi9hcmNoL2FscGhhL2luY2x1ZGUvYXNtL2VsZi5oCmluZGV4IDliYWFlOGEuLmRhNTQ0OWUgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvaW5jbHVkZS9hc20vZWxmLmgKKysrIGIvYXJjaC9hbHBoYS9pbmNsdWRlL2FzbS9lbGYuaApAQCAtMTAxLDcgKzEwMSw3IEBACiAKICNkZWZpbmUgRUxGX1BMQVRfSU5JVChfciwgbG9hZF9hZGRyKQlfci0+cjAgPSAwCiAKLS8qIFRoZSByZWdpc3RlcnMgYXJlIGxheWVkIG91dCBpbiBwdF9yZWdzIGZvciBQQUwgYW5kIHN5c2NhbGwKKy8qIFRoZSByZWdpc3RlcnMgYXJlIGxhaWQgb3V0IGluIHB0X3JlZ3MgZm9yIFBBTCBhbmQgc3lzY2FsbAogICAgY29udmVuaWVuY2UuICBSZS1vcmRlciB0aGVtIGZvciB0aGUgbGluZWFyIGVsZl9ncmVnc2V0X3QuICAqLwogCiBzdHJ1Y3QgcHRfcmVnczsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL2NvcmVfbGNhLmMgYi9hcmNoL2FscGhhL2tlcm5lbC9jb3JlX2xjYS5jCmluZGV4IDQ4NDNmNmUuLmNiMjgwMWMgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEva2VybmVsL2NvcmVfbGNhLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvY29yZV9sY2EuYwpAQCAtMTMzLDcgKzEzMyw3IEBACiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFncyk7CiAKLQkvKiBSZXNldCBzdGF0dXMgcmVnaXN0ZXIgdG8gYXZvaWQgbG9vc2luZyBlcnJvcnMuICAqLworCS8qIFJlc2V0IHN0YXR1cyByZWdpc3RlciB0byBhdm9pZCBsb3NpbmcgZXJyb3JzLiAgKi8KIAlzdGF0MCA9ICoodnVscClMQ0FfSU9DX1NUQVQwOwogCSoodnVscClMQ0FfSU9DX1NUQVQwID0gc3RhdDA7CiAJbWIoKTsKQEAgLTE3MCw3ICsxNzAsNyBAQAogCiAJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOwkvKiBhdm9pZCBnZXR0aW5nIGhpdCBieSBtYWNoaW5lIGNoZWNrICovCiAKLQkvKiBSZXNldCBzdGF0dXMgcmVnaXN0ZXIgdG8gYXZvaWQgbG9vc2luZyBlcnJvcnMuICAqLworCS8qIFJlc2V0IHN0YXR1cyByZWdpc3RlciB0byBhdm9pZCBsb3NpbmcgZXJyb3JzLiAgKi8KIAlzdGF0MCA9ICoodnVscClMQ0FfSU9DX1NUQVQwOwogCSoodnVscClMQ0FfSU9DX1NUQVQwID0gc3RhdDA7CiAJbWIoKTsKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEva2VybmVsL2Vycl9tYXJ2ZWwuYyBiL2FyY2gvYWxwaGEva2VybmVsL2Vycl9tYXJ2ZWwuYwppbmRleCA2NDhhZTg4Li5hZTU0YWQ5IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2tlcm5lbC9lcnJfbWFydmVsLmMKKysrIGIvYXJjaC9hbHBoYS9rZXJuZWwvZXJyX21hcnZlbC5jCkBAIC0xMDI3LDcgKzEwMjcsNyBAQAogCSAqIG5vcm1hbCBvcGVyYXRpb24sIGRpc21pc3MgdGhlbS4KIAkgKgogCSAqIERpc21pc3MgaWY6Ci0JICoJQ19TVEFUCQk9IDB4MTQgCQkoRXJyb3IgUmVwb25zZSkKKwkgKglDX1NUQVQJCT0gMHgxNCAJCShFcnJvciBSZXNwb25zZSkKIAkgKglDX1NUUzwzPgk9IDAgICAgCQkoQ19BRERSIHZhbGlkKQogCSAqCUNfQUREUjw0Mj4JPSAxICAgIAkJKEkvTykKIAkgKglDX0FERFI8MzE6MjI+CT0gMTExMTEweHhiCShQQ0kgQ29uZmlnIHNwYWNlKQpkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9saWIvZXY2Ny1zdHJyY2hyLlMgYi9hcmNoL2FscGhhL2xpYi9ldjY3LXN0cnJjaHIuUwppbmRleCAzZmQ4YmY0Li5kZDBkOGM2IDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2xpYi9ldjY3LXN0cnJjaHIuUworKysgYi9hcmNoL2FscGhhL2xpYi9ldjY3LXN0cnJjaHIuUwpAQCAtODIsNyArODIsNyBAQAogJGVvczoKIAluZWdxCXQxLCB0NAkJIyBFIDogaXNvbGF0ZSBmaXJzdCBudWxsIGJ5dGUgbWF0Y2gKIAlhbmQJdDEsIHQ0LCB0NAkjIEUgOgotCXN1YnEJdDQsIDEsIHQ1CSMgRSA6IGJ1aWxkIGEgbWFzayBvZiB0aGUgYnl0ZXMgdXB0by4uLgorCXN1YnEJdDQsIDEsIHQ1CSMgRSA6IGJ1aWxkIGEgbWFzayBvZiB0aGUgYnl0ZXMgdXAgdG8uLi4KIAlvcgl0NCwgdDUsIHQ0CSMgRSA6IC4uLiBhbmQgaW5jbHVkaW5nIHRoZSBudWxsCiAKIAlhbmQJdDMsIHQ0LCB0MwkjIEUgOiBtYXNrIG91dCBjaGFyIG1hdGNoZXMgYWZ0ZXIgbnVsbApkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9saWIvZmxzLmMgYi9hcmNoL2FscGhhL2xpYi9mbHMuYwppbmRleCAzMmFmYWEzLi5kZGQwNDhjIDEwMDY0NAotLS0gYS9hcmNoL2FscGhhL2xpYi9mbHMuYworKysgYi9hcmNoL2FscGhhL2xpYi9mbHMuYwpAQCAtNiw3ICs2LDcgQEAKICNpbmNsdWRlIDxsaW51eC9iaXRvcHMuaD4KIAogLyogVGhpcyBpcyBmbHMoeCktMSwgZXhjZXB0IHplcm8gaXMgaGVsZCB0byB6ZXJvLiAgVGhpcyBhbGxvd3MgbW9zdAotICAgZWZmaWNlbnQgaW5wdXQgaW50byBleHRibCwgcGx1cyBpdCBhbGxvd3MgZWFzeSBoYW5kbGluZyBvZiBmbHMoMCk9MC4gICovCisgICBlZmZpY2llbnQgaW5wdXQgaW50byBleHRibCwgcGx1cyBpdCBhbGxvd3MgZWFzeSBoYW5kbGluZyBvZiBmbHMoMCk9MC4gICovCiAKIGNvbnN0IHVuc2lnbmVkIGNoYXIgX19mbHNtMV90YWJbMjU2XSA9IAogewpkaWZmIC0tZ2l0IGEvYXJjaC9hbHBoYS9saWIvc3RycmNoci5TIGIvYXJjaC9hbHBoYS9saWIvc3RycmNoci5TCmluZGV4IDgyY2ZkMGEuLjE5NzBkYzAgMTAwNjQ0Ci0tLSBhL2FyY2gvYWxwaGEvbGliL3N0cnJjaHIuUworKysgYi9hcmNoL2FscGhhL2xpYi9zdHJyY2hyLlMKQEAgLTU0LDcgKzU0LDcgQEAKICRlb3M6CiAJbmVncQl0MSwgdDQJCSMgZTAgICAgOiBpc29sYXRlIGZpcnN0IG51bGwgYnl0ZSBtYXRjaAogCWFuZAl0MSwgdDQsIHQ0CSMgZTEgICAgOgotCXN1YnEJdDQsIDEsIHQ1CSMgZTAgICAgOiBidWlsZCBhIG1hc2sgb2YgdGhlIGJ5dGVzIHVwdG8uLi4KKwlzdWJxCXQ0LCAxLCB0NQkjIGUwICAgIDogYnVpbGQgYSBtYXNrIG9mIHRoZSBieXRlcyB1cCB0by4uLgogCW9yCXQ0LCB0NSwgdDQJIyBlMSAgICA6IC4uLiBhbmQgaW5jbHVkaW5nIHRoZSBudWxsCiAKIAlhbmQJdDMsIHQ0LCB0MwkjIGUwICAgIDogbWFzayBvdXQgY2hhciBtYXRjaGVzIGFmdGVyIG51bGwKZGlmZiAtLWdpdCBhL2FyY2gvYWxwaGEvb3Byb2ZpbGUvb3BfbW9kZWxfZXY2Ny5jIGIvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9tb2RlbF9ldjY3LmMKaW5kZXggNzAzMDIwOC4uNWI5ZDE3OCAxMDA2NDQKLS0tIGEvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9tb2RlbF9ldjY3LmMKKysrIGIvYXJjaC9hbHBoYS9vcHJvZmlsZS9vcF9tb2RlbF9ldjY3LmMKQEAgLTE5Miw3ICsxOTIsNyBAQAogCQljYXNlIFRSQVBfSU5WQUxJRDE6CiAJCWNhc2UgVFJBUF9JTlZBTElEMjoKIAkJY2FzZSBUUkFQX0lOVkFMSUQzOgotCQkJLyogUGlwZWxpbmUgcmVkaXJlY3Rpb24gb2N1cnJlZC4gUE1QQyBwb2ludHMKKwkJCS8qIFBpcGVsaW5lIHJlZGlyZWN0aW9uIG9jY3VycmVkLiBQTVBDIHBvaW50cwogCQkJICAgdG8gUEFMY29kZS4gUmVjb2duaXplIElUQiBtaXNzIGJ5IFBBTGNvZGUKIAkJCSAgIG9mZnNldCBhZGRyZXNzLCBhbmQgZ2V0IGFjdHVhbCBQQyBmcm9tCiAJCQkgICBFWENfQUREUi4gICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnIGIvYXJjaC9hcm0vS2NvbmZpZwppbmRleCA1YjlmNzhiLi5mZGM5ZDRkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9LY29uZmlnCisrKyBiL2FyY2gvYXJtL0tjb25maWcKQEAgLTY5NCw3ICs2OTQsNyBAQAogCSAgdGhlIFNhbXN1bmcgU01ESzI0MTAgZGV2ZWxvcG1lbnQgYm9hcmQgKGFuZCBkZXJpdmF0aXZlcykuCiAKIAkgIE5vdGUsIHRoZSBTM0MyNDE2IGFuZCB0aGUgUzNDMjQ1MCBhcmUgc28gY2xvc2UgdGhhdCB0aGV5IGV2ZW4gc2hhcmUKLQkgIHRoZSBzYW1lIFNvQyBJRCBjb2RlLiBUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gc2VwZXJhdGUgbWFjaGluZQorCSAgdGhlIHNhbWUgU29DIElEIGNvZGUuIFRoaXMgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBzZXBhcmF0ZSBtYWNoaW5lCiAJICBkaXJlY3RvcnkgKG5vIGFyY2gvYXJtL21hY2gtczNjMjQ1MCkgYXMgdGhlIFMzQzI0MTYgd2FzIGZpcnN0LgogCiBjb25maWcgQVJDSF9TM0M2NFhYCmRpZmYgLS1naXQgYS9hcmNoL2FybS9LY29uZmlnLW5vbW11IGIvYXJjaC9hcm0vS2NvbmZpZy1ub21tdQppbmRleCA5MDFlNmRmLi4yY2VmOGUxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9LY29uZmlnLW5vbW11CisrKyBiL2FyY2gvYXJtL0tjb25maWctbm9tbXUKQEAgLTM0LDcgKzM0LDcgQEAKIAkgIHVzZWQgaW5zdGVhZCBvZiB0aGUgYXV0by1wcm9iaW5nIHdoaWNoIHV0aWxpemVzIHRoZSByZWdpc3Rlci4KIAogY29uZmlnIFJFTUFQX1ZFQ1RPUlNfVE9fUkFNCi0JYm9vbCAnSW5zdGFsbCB2ZWN0b3JzIHRvIHRoZSBiZWdpbmluZyBvZiBSQU0nIGlmIERSQU1fQkFTRQorCWJvb2wgJ0luc3RhbGwgdmVjdG9ycyB0byB0aGUgYmVnaW5uaW5nIG9mIFJBTScgaWYgRFJBTV9CQVNFCiAJZGVwZW5kcyBvbiBEUkFNX0JBU0UKIAloZWxwCiAJICBUaGUga2VybmVsIG5lZWRzIHRvIGNoYW5nZSB0aGUgaGFyZHdhcmUgZXhjZXB0aW9uIHZlY3RvcnMuCmRpZmYgLS1naXQgYS9hcmNoL2FybS9jb21tb24vcGwzMzAuYyBiL2FyY2gvYXJtL2NvbW1vbi9wbDMzMC5jCmluZGV4IDhmMGY4NmQuLjk3OTEyZmEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2NvbW1vbi9wbDMzMC5jCisrKyBiL2FyY2gvYXJtL2NvbW1vbi9wbDMzMC5jCkBAIC0xMDQ1LDcgKzEwNDUsNyBAQAogCXVuc2lnbmVkIGxjbnQwLCBsY250MSwgbGptcDAsIGxqbXAxOwogCXN0cnVjdCBfYXJnX0xQRU5EIGxwZW5kOwogCi0JLyogTWF4IGl0ZXJhdGlvbnMgcG9zc2liaWxlIGluIERNQUxQIGlzIDI1NiAqLworCS8qIE1heCBpdGVyYXRpb25zIHBvc3NpYmxlIGluIERNQUxQIGlzIDI1NiAqLwogCWlmICgqYnVyc3RzID49IDI1NioyNTYpIHsKIAkJbGNudDEgPSAyNTY7CiAJCWxjbnQwID0gMjU2OwpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAKIAl9CiAKIAlmb3IgKGV2ID0gMDsgZXYgPCBwaS0+cGNmZy5udW1fZXZlbnRzOyBldisrKSB7Ci0JCWlmICh2YWwgJiAoMSA8PCBldikpIHsgLyogRXZlbnQgb2NjdXJlZCAqLworCQlpZiAodmFsICYgKDEgPDwgZXYpKSB7IC8qIEV2ZW50IG9jY3VycmVkICovCiAJCQlzdHJ1Y3QgcGwzMzBfdGhyZWFkICp0aHJkOwogCQkJdTMyIGludGVuID0gcmVhZGwocmVncyArIElOVEVOKTsKIAkJCWludCBhY3RpdmU7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9mcHN0YXRlLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9mcHN0YXRlLmgKaW5kZXggZWU1ZTAzZS4uM2FkNGMxMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vZnBzdGF0ZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2Zwc3RhdGUuaApAQCAtMTgsNyArMTgsNyBAQAogICogVkZQIHN0b3JhZ2UgYXJlYSBoYXM6CiAgKiAgLSBGUEVYQywgRlBTQ1IsIEZQSU5TVCBhbmQgRlBJTlNUMi4KICAqICAtIDE2IG9yIDMyIGRvdWJsZSBwcmVjaXNpb24gZGF0YSByZWdpc3RlcnMKLSAqICAtIGFuIGltcGxlbWVudGF0aW9uLWRlcGVuZGFudCB3b3JkIG9mIHN0YXRlIGZvciBGTERNWC9GU1RNWCAocHJlLUFSTXY2KQorICogIC0gYW4gaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IHdvcmQgb2Ygc3RhdGUgZm9yIEZMRE1YL0ZTVE1YIChwcmUtQVJNdjYpCiAgKiAKICAqICBGUEVYQyB3aWxsIGFsd2F5cyBiZSBub24temVybyBvbmNlIHRoZSBWRlAgaGFzIGJlZW4gdXNlZCBpbiB0aGlzIHByb2Nlc3MuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsdWUtY2FjaGUuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsdWUtY2FjaGUuaAppbmRleCBjN2FmYmM1Li43ZTMwODc0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbHVlLWNhY2hlLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vZ2x1ZS1jYWNoZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoX0NBQ0hFKSAmJiAhZGVmaW5lZChNVUxUSV9DQUNIRSkKLSNlcnJvciBVbmtub3duIGNhY2hlIG1haW50YWluZW5jZSBtb2RlbAorI2Vycm9yIFVua25vd24gY2FjaGUgbWFpbnRlbmFuY2UgbW9kZWwKICNlbmRpZgogCiAjaWZuZGVmIE1VTFRJX0NBQ0hFCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbHVlLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9nbHVlLmgKaW5kZXggMGVjMzVkMS4uZmJmNzFkNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vZ2x1ZS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2dsdWUuaApAQCAtMTAsOCArMTAsOCBAQAogICoKICAqICBUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIGdsdWUgdG8gc3RpY2sgdGhlIHByb2Nlc3Nvci1zcGVjaWZpYyBiaXRzCiAgKiAgaW50byB0aGUga2VybmVsIGluIGFuIGVmZmljaWVudCBtYW5uZXIuICBUaGUgaWRlYSBpcyB0byB1c2UgYnJhbmNoZXMKLSAqICB3aGVuIHdlJ3JlIG9ubHkgdGFyZ2V0dGluZyBvbmUgY2xhc3Mgb2YgVExCLCBvciBpbmRpcmVjdCBjYWxscwotICogIHdoZW4gd2UncmUgdGFyZ2V0dGluZyBtdWx0aXBsZSBjbGFzc2VzIG9mIFRMQnMuCisgKiAgd2hlbiB3ZSdyZSBvbmx5IHRhcmdldGluZyBvbmUgY2xhc3Mgb2YgVExCLCBvciBpbmRpcmVjdCBjYWxscworICogIHdoZW4gd2UncmUgdGFyZ2V0aW5nIG11bHRpcGxlIGNsYXNzZXMgb2YgVExCcy4KICAqLwogI2lmZGVmIF9fS0VSTkVMX18KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vaGFyZHdhcmUvcGwwODAuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2hhcmR3YXJlL3BsMDgwLmgKaW5kZXggZjM1Yjg2ZS4uZTRhMDRlNCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vaGFyZHdhcmUvcGwwODAuaAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9oYXJkd2FyZS9wbDA4MC5oCkBAIC0xNiw3ICsxNiw3IEBACiAgKiBtYWtlIGl0IG5vdCBlbnRpZXJseSBjb21wYXRpYmxlIHdpdGggdGhlIFBMMDgwIHNwZWNpZmljYXRpb24gZnJvbQogICogQVJNLiBXaGVuIGluIGRvdWJ0LCBjaGVjayB0aGUgU2Ftc3VuZyBkb2N1bWVudGF0aW9uIGZpcnN0LgogICoKLSAqIFRoZSBTYW1zdW5nIGRlZmluZXMgYXJlIFBMMDgwUywgYW5kIGFkZCBhbiBleHRyYSBjb250cm9sbCByZWdpc3RlciwKKyAqIFRoZSBTYW1zdW5nIGRlZmluZXMgYXJlIFBMMDgwUywgYW5kIGFkZCBhbiBleHRyYSBjb250cm9sIHJlZ2lzdGVyLAogICogdGhlIGFiaWxpdHkgdG8gbW92ZSBtb3JlIHRoYW4gMl4xMSBjb3VudHMgb2YgZGF0YSBhbmQgc29tZSBleHRyYQogICogT25lTkFORCBmZWF0dXJlcy4KICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9zeXN0ZW0uaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3N5c3RlbS5oCmluZGV4IDlhODc4MjMuLjg4NWJlMDkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3N5c3RlbS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3N5c3RlbS5oCkBAIC0yNDksNyArMjQ5LDcgQEAKICAqIGNhY2hlIHRvdGFsbHkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIGNhY2hlIGJlY29tZXMgaW5jb25zaXN0ZW50LCBhbmQsCiAgKiBzaW5jZSB3ZSB1c2Ugbm9ybWFsIGxvYWRzL3N0b3JlcyBhcyB3ZWxsLCB0aGlzIGlzIHJlYWxseSBiYWQuCiAgKiBUeXBpY2FsbHksIHRoaXMgY2F1c2VzIG9vcHNlbiBpbiBmaWxwX2Nsb3NlLCBidXQgY291bGQgaGF2ZSBvdGhlciwKLSAqIG1vcmUgZGlzYXN0ZXJvdXMgZWZmZWN0cy4gIFRoZXJlIGFyZSB0d28gd29yay1hcm91bmRzOgorICogbW9yZSBkaXNhc3Ryb3VzIGVmZmVjdHMuICBUaGVyZSBhcmUgdHdvIHdvcmstYXJvdW5kczoKICAqICAxLiBEaXNhYmxlIGludGVycnVwdHMgYW5kIGVtdWxhdGUgdGhlIGF0b21pYyBzd2FwCiAgKiAgMi4gQ2xlYW4gdGhlIGNhY2hlLCBwZXJmb3JtIGF0b21pYyBzd2FwLCBmbHVzaCB0aGUgY2FjaGUKICAqCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS91Y29udGV4dC5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vdWNvbnRleHQuaAppbmRleCA0N2YwMjNhLi4xNDc0OWFlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS91Y29udGV4dC5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL3Vjb250ZXh0LmgKQEAgLTQ3LDcgKzQ3LDcgQEAKICNlbmRpZgogCiAjaWZkZWYgQ09ORklHX0lXTU1YVAotLyogaXdtbXh0X2FyZWEgaXMgMHg5OCBieXRlcyBsb25nLCBwcmVjZWVkZWQgYnkgOCBieXRlcyBvZiBzaWduYXR1cmUgKi8KKy8qIGl3bW14dF9hcmVhIGlzIDB4OTggYnl0ZXMgbG9uZywgcHJlY2VkZWQgYnkgOCBieXRlcyBvZiBzaWduYXR1cmUgKi8KICNkZWZpbmUgSVdNTVhUX01BR0lDCQkweDEyZWY4NDJhCiAjZGVmaW5lIElXTU1YVF9TVE9SQUdFX1NJWkUJKElXTU1YVF9TSVpFICsgOCkKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL3N3cF9lbXVsYXRlLmMgYi9hcmNoL2FybS9rZXJuZWwvc3dwX2VtdWxhdGUuYwppbmRleCA3YTU3NjA5Mi4uNDBlZTdlNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL3N3cF9lbXVsYXRlLmMKKysrIGIvYXJjaC9hcm0va2VybmVsL3N3cF9lbXVsYXRlLmMKQEAgLTE1OCw3ICsxNTgsNyBAQAogCiAJaWYgKHJlcyA9PSAwKSB7CiAJCS8qCi0JCSAqIEJhcnJpZXIgYWxzbyByZXF1aXJlZCBiZXR3ZWVuIGFxdWlyaW5nIGEgbG9jayBmb3IgYQorCQkgKiBCYXJyaWVyIGFsc28gcmVxdWlyZWQgYmV0d2VlbiBhY3F1aXJpbmcgYSBsb2NrIGZvciBhCiAJCSAqIHByb3RlY3RlZCByZXNvdXJjZSBhbmQgYWNjZXNzaW5nIHRoZSByZXNvdXJjZS4gSW5zZXJ0ZWQgZm9yCiAJCSAqIHNhbWUgcmVhc29uIGFzIGFib3ZlLgogCQkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9ib2FyZC1jYXJtZXZhLmMgYi9hcmNoL2FybS9tYWNoLWF0OTEvYm9hcmQtY2FybWV2YS5jCmluZGV4IDJlNzRhMTkuLjI5NWUxZTcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYXQ5MS9ib2FyZC1jYXJtZXZhLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2JvYXJkLWNhcm1ldmEuYwpAQCAtNzYsNyArNzYsNyBAQAogCS5wdWxsdXBfcGluCT0gQVQ5MV9QSU5fUEQ5LAogfTsKIAotLyogRklYTUU6IHVzZXIgZGVwZW5kYW50ICovCisvKiBGSVhNRTogdXNlciBkZXBlbmRlbnQgKi8KIC8vIHN0YXRpYyBzdHJ1Y3QgYXQ5MV9jZl9kYXRhIF9faW5pdGRhdGEgY2FybWV2YV9jZl9kYXRhID0gewogLy8JLmRldF9waW4JPSBBVDkxX1BJTl9QQjAsCiAvLwkucnN0X3Bpbgk9IEFUOTFfUElOX1BDNSwKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9pbmNsdWRlL21hY2gvYXQ5MV9tY2kuaCBiL2FyY2gvYXJtL21hY2gtYXQ5MS9pbmNsdWRlL21hY2gvYXQ5MV9tY2kuaAppbmRleCAyN2FjNmY1Li4wMjE4MmMxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWF0OTEvaW5jbHVkZS9tYWNoL2F0OTFfbWNpLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9hdDkxX21jaS5oCkBAIC0xMDIsNyArMTAyLDcgQEAKICNkZWZpbmUJCUFUOTFfTUNJX1JESVJFCQkoMSA8PCAxNykJLyogUmVzcG9uc2UgRGlyZWN0aW9uIEVycm9yICovCiAjZGVmaW5lCQlBVDkxX01DSV9SQ1JDRQkJKDEgPDwgMTgpCS8qIFJlc3BvbnNlIENSQyBFcnJvciAqLwogI2RlZmluZQkJQVQ5MV9NQ0lfUkVOREUJCSgxIDw8IDE5KQkvKiBSZXNwb25zZSBFbmQgQml0IEVycm9yICovCi0jZGVmaW5lCQlBVDkxX01DSV9SVE9FCQkoMSA8PCAyMCkJLyogUmVwb25zZSBUaW1lLW91dCBFcnJvciAqLworI2RlZmluZQkJQVQ5MV9NQ0lfUlRPRQkJKDEgPDwgMjApCS8qIFJlc3BvbnNlIFRpbWUtb3V0IEVycm9yICovCiAjZGVmaW5lCQlBVDkxX01DSV9EQ1JDRQkJKDEgPDwgMjEpCS8qIERhdGEgQ1JDIEVycm9yICovCiAjZGVmaW5lCQlBVDkxX01DSV9EVE9FCQkoMSA8PCAyMikJLyogRGF0YSBUaW1lLW91dCBFcnJvciAqLwogI2RlZmluZQkJQVQ5MV9NQ0lfT1ZSRQkJKDEgPDwgMzApCS8qIE92ZXJydW4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9pbmNsdWRlL21hY2gvZ3Bpby5oIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9ncGlvLmgKaW5kZXggZGRlYjY0NS4uMDU2ZGM2NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9ncGlvLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1hdDkxL2luY2x1ZGUvbWFjaC9ncGlvLmgKQEAgLTIwOCw3ICsyMDgsNyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0vKiB3cmFwcGVycyBmb3IgIm5ldyBzdHlsZSIgR1BJTyBjYWxscy4gdGhlIG9sZCBBVDkxLXNwZWNmaWMgb25lcyBzaG91bGQKKy8qIHdyYXBwZXJzIGZvciAibmV3IHN0eWxlIiBHUElPIGNhbGxzLiB0aGUgb2xkIEFUOTEtc3BlY2lmaWMgb25lcyBzaG91bGQKICAqIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZCAoYWxvbmcgd2l0aCB0aGlzIGVycm5vLmggaW5jbHVzaW9uKSwgYW5kIHRoZQogICogZ3BpbyByZXF1ZXN0L2ZyZWUgY2FsbHMgc2hvdWxkIHByb2JhYmx5IGJlIGltcGxlbWVudGVkLgogICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvY3NwL2RtYWMvZG1hY0h3X2V4dHJhLmMgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvY3NwL2RtYWMvZG1hY0h3X2V4dHJhLmMKaW5kZXggNzdmODRiNC4uYTFmMzI4MyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2NzcC9kbWFjL2RtYWNId19leHRyYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9jc3AvZG1hYy9kbWFjSHdfZXh0cmEuYwpAQCAtNTUxLDcgKzU1MSw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyoqCi0qICBAYnJpZWYgICBDaGVjayB0aGUgZXhpc3RhbmNlIG9mIHBlbmRpbmcgZGVzY3JpcHRvcgorKiAgQGJyaWVmICAgQ2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBwZW5kaW5nIGRlc2NyaXB0b3IKICoKICogIFRoaXMgZnVuY3Rpb24gY29uZmlybWVzIGlmIHRoZXJlIGlzIGFueSBwZW5kaW5nIGRlc2NyaXB0b3IgaW4gdGhlIGNoYWluCiAqICB0byBwcm9ncmFtIHRoZSBjaGFubmVsCkBAIC03NzUsNyArNzc1LDcgQEAKIC8qKgogKiAgQGJyaWVmICAgUmVhZCBkYXRhIERNQWVkIHRvIG1lbW9yeQogKgotKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcmluZyBmcm9tOgorKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcnJpbmcgZnJvbToKICogICAgICAgICAgLSBNZW1vcnkgdG8gbWVtb3J5CiAqICAgICAgICAgIC0gUGVyaXBoZXJhbCB0byBtZW1vcnkKICoKQEAgLTk0MSw3ICs5NDEsNyBAQAogLyoqCiAqICBAYnJpZWYgICBTZXRzIGNoYW5uZWwgc3BlY2lmaWMgdXNlciBkYXRhCiAqCi0qICBUaGlzIGZ1bmN0aW9uIGFzc29jaWF0ZXMgdXNlciBkYXRhIHRvIGEgc3BlY2lmIERNQSBjaGFubmVsCisqICBUaGlzIGZ1bmN0aW9uIGFzc29jaWF0ZXMgdXNlciBkYXRhIHRvIGEgc3BlY2lmaWMgRE1BIGNoYW5uZWwKICoKICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9kbWEuYyBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9kbWEuYwppbmRleCA4ZDFiYWYzLi5kODdhZDMwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvZG1hLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2RtYS5jCkBAIC02MjksNyArNjI5LDcgQEAKICogICBDb25maWd1cmVzIGEgRE1BIGNoYW5uZWwuCiAqCiAqICAgQHJldHVybgotKiAgICAgICA+PSAwICAgIC0gSW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWxsLgorKiAgICAgICA+PSAwICAgIC0gSW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwuCiAqCiAqICAgICAgIC1FQlVTWSAgLSBEZXZpY2UgaXMgY3VycmVudGx5IGJlaW5nIHVzZWQuCiAqICAgICAgIC1FTk9ERVYgLSBEZXZpY2UgaGFuZGVkIGluIGlzIGludmFsaWQuCkBAIC02NzMsNyArNjczLDcgQEAKIC8qKgogKiAgIEluaXRpYWxpemVzIGFsbCBvZiB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgRE1BLgogKiAgIEByZXR1cm4KLSogICAgICAgPj0gMCAgICAtIEluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsbC4KKyogICAgICAgPj0gMCAgICAtIEluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLgogKgogKiAgICAgICAtRUJVU1kgIC0gRGV2aWNlIGlzIGN1cnJlbnRseSBiZWluZyB1c2VkLgogKiAgICAgICAtRU5PREVWIC0gRGV2aWNlIGhhbmRlZCBpbiBpcyBpbnZhbGlkLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvY3NwL2RtYWNIdy5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvY3NwL2RtYWNIdy5oCmluZGV4IDZjOGRhMmIuLmU2YTFkYzQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL2NzcC9kbWFjSHcuaAorKysgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9jc3AvZG1hY0h3LmgKQEAgLTM2Miw3ICszNjIsNyBAQAogLyoqCiAqICBAYnJpZWYgICBSZWFkIGRhdGEgRE1BIHRyYW5zZmVycmVkIHRvIG1lbW9yeQogKgotKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcmluZyBmcm9tOgorKiAgVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgZGF0YSB0aGF0IGhhcyBiZWVuIERNQWVkIHRvIG1lbW9yeSB3aGlsZSB0cmFuc2ZlcnJpbmcgZnJvbToKICogICAgICAgICAgLSBNZW1vcnkgdG8gbWVtb3J5CiAqICAgICAgICAgIC0gUGVyaXBoZXJhbCB0byBtZW1vcnkKICoKQEAgLTQ0Niw3ICs0NDYsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgotKiAgQGJyaWVmICAgQ2hlY2sgdGhlIGV4aXN0YW5jZSBvZiBwZW5kaW5nIGRlc2NyaXB0b3IKKyogIEBicmllZiAgIENoZWNrIHRoZSBleGlzdGVuY2Ugb2YgcGVuZGluZyBkZXNjcmlwdG9yCiAqCiAqICBUaGlzIGZ1bmN0aW9uIGNvbmZpcm1lcyBpZiB0aGVyZSBpcyBhbnkgcGVuZGluZyBkZXNjcmlwdG9yIGluIHRoZSBjaGFpbgogKiAgdG8gcHJvZ3JhbSB0aGUgY2hhbm5lbApAQCAtNTQyLDcgKzU0Miw3IEBACiAvKioKICogIEBicmllZiAgIFNldHMgY2hhbm5lbCBzcGVjaWZpYyB1c2VyIGRhdGEKICoKLSogIFRoaXMgZnVuY3Rpb24gYXNzb2NpYXRlcyB1c2VyIGRhdGEgdG8gYSBzcGVjaWYgRE1BIGNoYW5uZWwKKyogIFRoaXMgZnVuY3Rpb24gYXNzb2NpYXRlcyB1c2VyIGRhdGEgdG8gYSBzcGVjaWZpYyBETUEgY2hhbm5lbAogKgogKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvY2hpcGNId19kZWYuaCBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvY3NwL2NoaXBjSHdfZGVmLmgKaW5kZXggNzBlYWVhOC4uMTYxOTczMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvY2hpcGNId19kZWYuaAorKysgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9jaGlwY0h3X2RlZi5oCkBAIC0xODAsNyArMTgwLDcgQEAKIAogI2RlZmluZSBjaGlwY0h3X1hUQUxfRlJFUV9IeiAgICAgICAgICAgICAgICAgICAgMjUwMDAwMDAJLyogUmVmZXJlbmNlIGNsb2NrIGZyZXF1ZW5jeSBpbiBIeiAqLwogCi0vKiBQcm9ncmFtYWJsZSBwaW4gZGVmaW5lcyAqLworLyogUHJvZ3JhbW1hYmxlIHBpbiBkZWZpbmVzICovCiAjZGVmaW5lIGNoaXBjSHdfUElOX0dQSU8obikgICAgICAgICAgICAgICAgICAgICAoKCgobikgPj0gMCkgJiYgKChuKSA8IChjaGlwY0h3X0dQSU9fQ09VTlQpKSkgPyAobikgOiAweEZGRkZGRkZGKQogCQkJCQkJCQkJICAgICAvKiBHUElPIHBpbiAwIC0gNjAgKi8KICNkZWZpbmUgY2hpcGNId19QSU5fVUFSVFRYRCAgICAgICAgICAgICAgICAgICAgIChjaGlwY0h3X0dQSU9fQ09VTlQgKyAwKQkvKiBVQVJUIFRyYW5zbWl0ICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9jaGlwY0h3X2lubGluZS5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvY2hpcGNId19pbmxpbmUuaAppbmRleCBjNzg4MzNhLi4wMzIzOGMyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9jaGlwY0h3X2lubGluZS5oCisrKyBiL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvY3NwL2NoaXBjSHdfaW5saW5lLmgKQEAgLTgzMiw3ICs4MzIsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qKgotKiAgQGJyaWVmICAgTG93ZXIgbGF5ZXIgZnVudGlvbiB0byBlbmFibGUvZGlzYWJsZSBhIGNsb2NrIG9mIGEgY2VydGFpbiBkZXZpY2UKKyogIEBicmllZiAgIExvd2VyIGxheWVyIGZ1bmN0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGEgY2xvY2sgb2YgYSBjZXJ0YWluIGRldmljZQogKgogKiAgVGhpcyBmdW5jdGlvbiBlbmFibGVzL2Rpc2FibGVzIGEgY29yZSBjbG9jawogKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvaW50Y0h3X3JlZy5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9jc3AvaW50Y0h3X3JlZy5oCmluZGV4IGUwMWZjNDYuLjBhZWI2YTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvY3NwL2ludGNId19yZWcuaAorKysgYi9hcmNoL2FybS9tYWNoLWJjbXJpbmcvaW5jbHVkZS9tYWNoL2NzcC9pbnRjSHdfcmVnLmgKQEAgLTEwOSw5ICsxMDksOSBAQAogI2RlZmluZSBJTlRDSFdfSU5UQzBfRE1BMEMwICAgICAgICAgICAgICAgKDE8PElOVENIV19JTlRDMF9ETUEwQzBfQklUTlVNKQogCiAvKiBJTlRDMSAtIGludGVycnVwdCBjb250cm9sbGVyIDEgKi8KLSNkZWZpbmUgSU5UQ0hXX0lOVEMxX0REUlZQTVBfQklUTlVNICAgICAgIDI3CS8qIEREUiBhbmQgVlBNIFBMTCBjbG9jayBwaGFzZSByZWxhdGlvbnNoaXAgaW50ZXJ1cHQgKE5vdCBmb3IgQTApICovCisjZGVmaW5lIElOVENIV19JTlRDMV9ERFJWUE1QX0JJVE5VTSAgICAgICAyNwkvKiBERFIgYW5kIFZQTSBQTEwgY2xvY2sgcGhhc2UgcmVsYXRpb25zaGlwIGludGVycnVwdCAoTm90IGZvciBBMCkgKi8KICNkZWZpbmUgSU5UQ0hXX0lOVEMxX0REUlZQTVRfQklUTlVNICAgICAgIDI2CS8qIEREUiBhbmQgVlBNIEhXIHBoYXNlIGFsaWduIHRpbWVvdXQgaW50ZXJydXB0IChOb3QgZm9yIEEwKSAqLwotI2RlZmluZSBJTlRDSFdfSU5UQzFfRERSUF9CSVROVU0gICAgICAgICAgMjYJLyogRERSIGFuZCBQTEwgY2xvY2sgcGhhc2UgcmVsYXRpb25zaGlwIGludGVydXB0IChGb3IgQTAgb25seSkpICovCisjZGVmaW5lIElOVENIV19JTlRDMV9ERFJQX0JJVE5VTSAgICAgICAgICAyNgkvKiBERFIgYW5kIFBMTCBjbG9jayBwaGFzZSByZWxhdGlvbnNoaXAgaW50ZXJydXB0IChGb3IgQTAgb25seSkpICovCiAjZGVmaW5lIElOVENIV19JTlRDMV9SVEMyX0JJVE5VTSAgICAgICAgICAyNQkvKiBSZWFsIHRpbWUgY2xvY2sgdGFtcGVyIGludGVycnVwdCAqLwogI2RlZmluZSBJTlRDSFdfSU5UQzFfVkRFQ19CSVROVU0gICAgICAgICAgMjQJLyogSGFudHJvIFZpZGVvIERlY29kZXIgaW50ZXJydXB0ICovCiAvKiBCaXRzIDEzLTIzIGFyZSBub24tc2VjdXJlIHZlcnNpb25zIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNlY3VyZSBiaXRzIGluIFNJTlRDIGJpdHMgMC0xMC4gKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYmNtcmluZy9pbmNsdWRlL21hY2gvcmVnX3VtaS5oIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9yZWdfdW1pLmgKaW5kZXggMDZhMzU1NC4uMDk5Mjg0MiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9yZWdfdW1pLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1iY21yaW5nL2luY2x1ZGUvbWFjaC9yZWdfdW1pLmgKQEAgLTg4LDcgKzg4LDcgQEAKIC8qIFJFR19VTUlfRkxBU0gwLzEvMl9UQ1IsIFJFR19VTUlfU1JBTTAvMV9UQ1IgYml0cyAqLwogLyogRW5hYmxlIHdhaXQgcGluIGR1cmluZyBidXJzdCB3cml0ZSBvciByZWFkICovCiAjZGVmaW5lIFJFR19VTUlfVENSX1dBSVRFTiAgICAgICAgICAgICAgMHg4MDAwMDAwMAotLyogRW5hYmxlIG1lbSBjdHJsciB0byB3b3JrIGl3dGggZXh0IG1lbSBvZiBsb3dlciBmcmVxIHRoYW4gQUhCIGNsayAqLworLyogRW5hYmxlIG1lbSBjdHJsciB0byB3b3JrIHdpdGggZXh0IG1lbSBvZiBsb3dlciBmcmVxIHRoYW4gQUhCIGNsayAqLwogI2RlZmluZSBSRUdfVU1JX1RDUl9MT1dGUkVRICAgICAgICAgICAgIDB4NDAwMDAwMDAKIC8qIDE9c3luY2ggd3JpdGUsIDA9YXN5bmMgd3JpdGUgKi8KICNkZWZpbmUgUkVHX1VNSV9UQ1JfTUVNVFlQRV9TWU5DV1JJVEUgICAweDIwMDAwMDAwCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvYm9hcmQtbmV1cm9zLW9zZDIuYyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1uZXVyb3Mtb3NkMi5jCmluZGV4IDZjMzg5ZmYuLjNlN2JlMmQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1uZXVyb3Mtb3NkMi5jCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9ib2FyZC1uZXVyb3Mtb3NkMi5jCkBAIC0xMSw3ICsxMSw3IEBACiAgKiBETTY0NFgtRVZNIGJvYXJkLiBJdCBoYXM6CiAgKiAJRE02NDQ2TTAyIG1vZHVsZSB3aXRoIDI1Nk1CIE5BTkQsIDI1Nk1CIFJBTSwgVExWMzIwQUlDMzIgQUlDLAogICogCVVTQiwgRXRoZXJuZXQsIFNEL01NQywgVUFSVCwgVEhTODIwMCwgVFZQNzAwMCBmb3IgdmlkZW8uCi0gKiAJQWRkaXRpb25hbHkgcmVhbHRpbWUgY2xvY2ssIElSIHJlbW90ZSBjb250cm9sIHJlY2VpdmVyLAorICogCUFkZGl0aW9uYWxseSByZWFsdGltZSBjbG9jaywgSVIgcmVtb3RlIGNvbnRyb2wgcmVjZWl2ZXIsCiAgKiAJSVIgQmxhc3RlciBiYXNlZCBvbiBNU1A0MzAgKGZpcm13YXJlIGFsdGhvdWdoIGlzIGRpZmZlcmVudAogICogCWZyb20gdXNlZCBpbiBETTY0NFgtRVZNKSwgaW50ZXJuYWwgQVRBLTYgMy414oCdIEhERCBkcml2ZQogICogCXdpdGggUEFUQSBpbnRlcmZhY2UsIHR3byBtdXhlZCByZWQtZ3JlZW4gbGVkcy4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9jcHVmcmVxLmMgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvY3B1ZnJlcS5jCmluZGV4IDRhNjhjMmIuLjBhOTViZTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9jcHVmcmVxLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2NwdWZyZXEuYwpAQCAtMTY3LDcgKzE2Nyw3IEBACiAJLyoKIAkgKiBUaW1lIG1lYXN1cmVtZW50IGFjcm9zcyB0aGUgdGFyZ2V0KCkgZnVuY3Rpb24geWllbGRzIH4xNTAwLTE4MDB1cwogCSAqIHRpbWUgdGFrZW4gd2l0aCBubyBkcml2ZXJzIG9uIG5vdGlmaWNhdGlvbiBsaXN0LgotCSAqIFNldHRpbmcgdGhlIGxhdGVuY3kgdG8gMjAwMCB1cyB0byBhY2NvbW9kYXRlIGFkZGl0aW9uIG9mIGRyaXZlcnMKKwkgKiBTZXR0aW5nIHRoZSBsYXRlbmN5IHRvIDIwMDAgdXMgdG8gYWNjb21tb2RhdGUgYWRkaXRpb24gb2YgZHJpdmVycwogCSAqIHRvIHByZS9wb3N0IGNoYW5nZSBub3RpZmljYXRpb24gbGlzdC4KIAkgKi8KIAlwb2xpY3ktPmNwdWluZm8udHJhbnNpdGlvbl9sYXRlbmN5ID0gMjAwMCAqIDEwMDA7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvZGE4NTAuYyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kYTg1MC5jCmluZGV4IDY4ZmU0YzIuLmI5NWI5MTkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kYTg1MC5jCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kYTg1MC5jCkBAIC0xMTIzLDcgKzExMjMsNyBAQAogCSAqIFRoaXMgaGVscHMga2VlcGluZyB0aGUgcGVyaXBoZXJhbHMgb24gdGhpcyBkb21haW4gaW5zdWxhdGVkCiAJICogZnJvbSBDUFUgZnJlcXVlbmN5IGNoYW5nZXMgY2F1c2VkIGJ5IERWRlMuIFRoZSBmaXJtd2FyZSBzZXRzCiAJICogYm90aCBQTEwwIGFuZCBQTEwxIHRvIHRoZSBzYW1lIGZyZXF1ZW5jeSBzbywgdGhlcmUgc2hvdWxkIG5vdAotCSAqIGJlIGFueSBub3RpY2libGUgY2hhbmdlIGV2ZW4gaW4gbm9uLURWRlMgdXNlIGNhc2VzLgorCSAqIGJlIGFueSBub3RpY2VhYmxlIGNoYW5nZSBldmVuIGluIG5vbi1EVkZTIHVzZSBjYXNlcy4KIAkgKi8KIAlkYTg1MF9zZXRfYXN5bmMzX3NyYygxKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RtMzU1LmMgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG0zNTUuYwppbmRleCA3NjM2NGQxLi5mNjgwMTIyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG0zNTUuYworKysgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG0zNTUuYwpAQCAtMzE0LDcgKzMxNCw3IEBACiAJLm5hbWUgPSAidGltZXIyIiwKIAkucGFyZW50ID0gJnBsbDFfYXV4X2NsaywKIAkubHBzYyA9IERBVklOQ0lfTFBTQ19USU1FUjIsCi0JLnVzZWNvdW50ID0gMSwgICAgICAgICAgICAgIC8qIFJFVklTSVQ6IHdoeSBjYW50JyB0aGlzIGJlIGRpc2FibGVkPyAqLworCS51c2Vjb3VudCA9IDEsICAgICAgICAgICAgICAvKiBSRVZJU0lUOiB3aHkgY2FuJ3QnIHRoaXMgYmUgZGlzYWJsZWQ/ICovCiB9OwogCiBzdGF0aWMgc3RydWN0IGNsayB0aW1lcjNfY2xrID0gewpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RtNjQ0eC5jIGIvYXJjaC9hcm0vbWFjaC1kYXZpbmNpL2RtNjQ0eC5jCmluZGV4IDlhMjM3NmIuLjVmOGE2NTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9kbTY0NHguYworKysgYi9hcmNoL2FybS9tYWNoLWRhdmluY2kvZG02NDR4LmMKQEAgLTI3NCw3ICsyNzQsNyBAQAogCS5uYW1lID0gInRpbWVyMiIsCiAJLnBhcmVudCA9ICZwbGwxX2F1eF9jbGssCiAJLmxwc2MgPSBEQVZJTkNJX0xQU0NfVElNRVIyLAotCS51c2Vjb3VudCA9IDEsICAgICAgICAgICAgICAvKiBSRVZJU0lUOiB3aHkgY2FudCcgdGhpcyBiZSBkaXNhYmxlZD8gKi8KKwkudXNlY291bnQgPSAxLCAgICAgICAgICAgICAgLyogUkVWSVNJVDogd2h5IGNhbid0JyB0aGlzIGJlIGRpc2FibGVkPyAqLwogfTsKIAogc3RhdGljIHN0cnVjdCBjbGtfbG9va3VwIGRtNjQ0eF9jbGtzW10gPSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWRhdmluY2kvaW5jbHVkZS9tYWNoL2NwdXR5cGUuaCBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9pbmNsdWRlL21hY2gvY3B1dHlwZS5oCmluZGV4IGNlYTZiODkuLjk1N2ZiODcgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9pbmNsdWRlL21hY2gvY3B1dHlwZS5oCisrKyBiL2FyY2gvYXJtL21hY2gtZGF2aW5jaS9pbmNsdWRlL21hY2gvY3B1dHlwZS5oCkBAIC00LDcgKzQsNyBAQAogICogQXV0aG9yOiBLZXZpbiBIaWxtYW4sIERlZXAgUm9vdCBTeXN0ZW1zLCBMTEMKICAqCiAgKiBEZWZpbmVzIHRoZSBjcHVfaXNfKigpIG1hY3JvcyBmb3IgcnVudGltZSBkZXRlY3Rpb24gb2YgRGFWaW5jaQotICogZGV2aWNlIHR5cGUuICBJbiBhZGR0aW9uLCBpZiBzdXBwb3J0IGZvciBhIGdpdmVuIGRldmljZSBpcyBub3QKKyAqIGRldmljZSB0eXBlLiAgSW4gYWRkaXRpb24sIGlmIHN1cHBvcnQgZm9yIGEgZ2l2ZW4gZGV2aWNlIGlzIG5vdAogICogY29tcGlsZWQgaW4gdG8gdGhlIGtlcm5lbCwgdGhlIG1hY3JvcyByZXR1cm4gMCBzbyB0aGF0CiAgKiByZXN1bHRpbmcgY29kZSBjYW4gYmUgb3B0aW1pemVkIG91dC4KICAqCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLWVwOTN4eC9ncGlvLmMgYi9hcmNoL2FybS9tYWNoLWVwOTN4eC9ncGlvLmMKaW5kZXggMTgwYjhhOS4uYTVhOWZmNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1lcDkzeHgvZ3Bpby5jCisrKyBiL2FyY2gvYXJtL21hY2gtZXA5M3h4L2dwaW8uYwpAQCAtMTAxLDcgKzEwMSw3IEBACiBzdGF0aWMgdm9pZCBlcDkzeHhfZ3Bpb19mX2lycV9oYW5kbGVyKHVuc2lnbmVkIGludCBpcnEsIHN0cnVjdCBpcnFfZGVzYyAqZGVzYykKIHsKIAkvKgotCSAqIG1hcCBkaXNjb250aWd1b3VzIGh3IGlycSByYW5nZSB0byBjb250aW5vdXMgc3cgaXJxIHJhbmdlOgorCSAqIG1hcCBkaXNjb250aWd1b3VzIGh3IGlycSByYW5nZSB0byBjb250aW51b3VzIHN3IGlycSByYW5nZToKIAkgKgogCSAqICBJUlFfRVA5M1hYX0dQSU97MC4uN31NVVggLT4gZ3Bpb190b19pcnEoRVA5M1hYX0dQSU9fTElORV9GKHswLi43fSkKIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9pbmNsdWRlL21hY2gvZ3Bpby5oIGIvYXJjaC9hcm0vbWFjaC1leHlub3M0L2luY2x1ZGUvbWFjaC9ncGlvLmgKaW5kZXggOTM5NzI4Yi4uYmU5MjY2YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L2luY2x1ZGUvbWFjaC9ncGlvLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1leHlub3M0L2luY2x1ZGUvbWFjaC9ncGlvLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNkZWZpbmUgZ3Bpb19jYW5zbGVlcAlfX2dwaW9fY2Fuc2xlZXAKICNkZWZpbmUgZ3Bpb190b19pcnEJX19ncGlvX3RvX2lycQogCi0vKiBQcmFjdGljYWxseSwgR1BJTyBiYW5rcyB1cHRvIEdQWiBhcmUgdGhlIGNvbmZpZ3VyYWJsZSBncGlvIGJhbmtzICovCisvKiBQcmFjdGljYWxseSwgR1BJTyBiYW5rcyB1cCB0byBHUFogYXJlIHRoZSBjb25maWd1cmFibGUgZ3BpbyBiYW5rcyAqLwogCiAvKiBHUElPIGJhbmsgc2l6ZXMgKi8KICNkZWZpbmUgRVhZTk9TNF9HUElPX0EwX05SCSg4KQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L21jdC5jIGIvYXJjaC9hcm0vbWFjaC1leHlub3M0L21jdC5jCmluZGV4IGFmODJhOGYuLjE0YWMxMGIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9tY3QuYworKysgYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvbWN0LmMKQEAgLTI3Niw3ICsyNzYsNyBAQAogCS8qIHVwZGF0ZSBpbnRlcnJ1cHQgY291bnQgYnVmZmVyICovCiAJZXh5bm9zNF9tY3Rfd3JpdGUodG1wLCBtZXZ0LT5iYXNlICsgTUNUX0xfSUNOVEJfT0ZGU0VUKTsKIAotCS8qIGVuYWJsZSBNQ1QgdGljayBpbnRlcnVwdCAqLworCS8qIGVuYWJsZSBNQ1QgdGljayBpbnRlcnJ1cHQgKi8KIAlleHlub3M0X21jdF93cml0ZSgweDEsIG1ldnQtPmJhc2UgKyBNQ1RfTF9JTlRfRU5CX09GRlNFVCk7CiAKIAl0bXAgPSBfX3Jhd19yZWFkbChtZXZ0LT5iYXNlICsgTUNUX0xfVENPTl9PRkZTRVQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L3NldHVwLXNkaGNpLWdwaW8uYyBiL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9zZXR1cC1zZGhjaS1ncGlvLmMKaW5kZXggMWIzZDNhMmQuLmU4ZDA4YmYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtZXh5bm9zNC9zZXR1cC1zZGhjaS1ncGlvLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1leHlub3M0L3NldHVwLXNkaGNpLWdwaW8uYwpAQCAtMzgsMTQgKzM4LDE0IEBACiAJc3dpdGNoICh3aWR0aCkgewogCWNhc2UgODoKIAkJZm9yIChncGlvID0gRVhZTk9TNF9HUEsxKDMpOyBncGlvIDw9IEVYWU5PUzRfR1BLMSg2KTsgZ3BpbysrKSB7Ci0JCQkvKiBEYXRhIHBpbiBHUEsxWzM6Nl0gdG8gc3BlY2lhbC1mdW50aW9uIDMgKi8KKwkJCS8qIERhdGEgcGluIEdQSzFbMzo2XSB0byBzcGVjaWFsLWZ1bmN0aW9uIDMgKi8KIAkJCXMzY19ncGlvX2NmZ3BpbihncGlvLCBTM0NfR1BJT19TRk4oMykpOwogCQkJczNjX2dwaW9fc2V0cHVsbChncGlvLCBTM0NfR1BJT19QVUxMX1VQKTsKIAkJCXM1cF9ncGlvX3NldF9kcnZzdHIoZ3BpbywgUzVQX0dQSU9fRFJWU1RSX0xWNCk7CiAJCX0KIAljYXNlIDQ6CiAJCWZvciAoZ3BpbyA9IEVYWU5PUzRfR1BLMCgzKTsgZ3BpbyA8PSBFWFlOT1M0X0dQSzAoNik7IGdwaW8rKykgewotCQkJLyogRGF0YSBwaW4gR1BLMFszOjZdIHRvIHNwZWNpYWwtZnVudGlvbiAyICovCisJCQkvKiBEYXRhIHBpbiBHUEswWzM6Nl0gdG8gc3BlY2lhbC1mdW5jdGlvbiAyICovCiAJCQlzM2NfZ3Bpb19jZmdwaW4oZ3BpbywgUzNDX0dQSU9fU0ZOKDIpKTsKIAkJCXMzY19ncGlvX3NldHB1bGwoZ3BpbywgUzNDX0dQSU9fUFVMTF9VUCk7CiAJCQlzNXBfZ3Bpb19zZXRfZHJ2c3RyKGdwaW8sIFM1UF9HUElPX0RSVlNUUl9MVjQpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1leHlub3M0L3NldHVwLXNkaGNpLmMgYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvc2V0dXAtc2RoY2kuYwppbmRleCA4NWY5NDMzLi4xZTgzZjhjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWV4eW5vczQvc2V0dXAtc2RoY2kuYworKysgYi9hcmNoL2FybS9tYWNoLWV4eW5vczQvc2V0dXAtc2RoY2kuYwpAQCAtMzUsNyArMzUsNyBAQAogewogCXUzMiBjdHJsMiwgY3RybDM7CiAKLQkvKiBkb24ndCBuZWVkIHRvIGFsdGVyIGFueXRoaW5nIGFjb3JkaW5nIHRvIGNhcmQtdHlwZSAqLworCS8qIGRvbid0IG5lZWQgdG8gYWx0ZXIgYW55dGhpbmcgYWNjb3JkaW5nIHRvIGNhcmQtdHlwZSAqLwogCiAJY3RybDIgPSByZWFkbChyICsgUzNDX1NESENJX0NPTlRST0wyKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3BjaS5jIGIvYXJjaC9hcm0vbWFjaC1pb3AxM3h4L3BjaS5jCmluZGV4IDc3M2VhMGMuLmJhM2RhZTMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtaW9wMTN4eC9wY2kuYworKysgYi9hcmNoL2FybS9tYWNoLWlvcDEzeHgvcGNpLmMKQEAgLTIyNSw3ICsyMjUsNyBAQAogLyogVGhpcyByb3V0aW5lIGNoZWNrcyB0aGUgc3RhdHVzIG9mIHRoZSBsYXN0IGNvbmZpZ3VyYXRpb24gY3ljbGUuICBJZiBhbiBlcnJvcgogICogd2FzIGRldGVjdGVkIGl0IHJldHVybnMgPjAsIGVsc2UgaXQgcmV0dXJucyBhIDAuICBUaGUgZXJyb3JzIGJlaW5nIGNoZWNrZWQKICAqIGFyZSBwYXJpdHksIG1hc3RlciBhYm9ydCwgdGFyZ2V0IGFib3J0IChtYXN0ZXIgYW5kIHRhcmdldCkuICBUaGVzZSB0eXBlcyBvZgotICogZXJyb3JzIG9jY3VyZSBkdXJpbmcgYSBjb25maWcgY3ljbGUgd2hlcmUgdGhlcmUgaXMgbm8gZGV2aWNlLCBsaWtlIGR1cmluZworICogZXJyb3JzIG9jY3VyIGR1cmluZyBhIGNvbmZpZyBjeWNsZSB3aGVyZSB0aGVyZSBpcyBubyBkZXZpY2UsIGxpa2UgZHVyaW5nCiAgKiB0aGUgZGlzY292ZXJ5IHN0YWdlLgogICovCiBzdGF0aWMgaW50IGlvcDEzeHhfYXR1eF9wY2lfc3RhdHVzKGludCBjbGVhcikKQEAgLTMzMiw3ICszMzIsNyBAQAogLyogVGhpcyByb3V0aW5lIGNoZWNrcyB0aGUgc3RhdHVzIG9mIHRoZSBsYXN0IGNvbmZpZ3VyYXRpb24gY3ljbGUuICBJZiBhbiBlcnJvcgogICogd2FzIGRldGVjdGVkIGl0IHJldHVybnMgPjAsIGVsc2UgaXQgcmV0dXJucyBhIDAuICBUaGUgZXJyb3JzIGJlaW5nIGNoZWNrZWQKICAqIGFyZSBwYXJpdHksIG1hc3RlciBhYm9ydCwgdGFyZ2V0IGFib3J0IChtYXN0ZXIgYW5kIHRhcmdldCkuICBUaGVzZSB0eXBlcyBvZgotICogZXJyb3JzIG9jY3VyZSBkdXJpbmcgYSBjb25maWcgY3ljbGUgd2hlcmUgdGhlcmUgaXMgbm8gZGV2aWNlLCBsaWtlIGR1cmluZworICogZXJyb3JzIG9jY3VyIGR1cmluZyBhIGNvbmZpZyBjeWNsZSB3aGVyZSB0aGVyZSBpcyBubyBkZXZpY2UsIGxpa2UgZHVyaW5nCiAgKiB0aGUgZGlzY292ZXJ5IHN0YWdlLgogICovCiBzdGF0aWMgaW50IGlvcDEzeHhfYXR1ZV9wY2lfc3RhdHVzKGludCBjbGVhcikKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gta2lya3dvb2QvdHN4MXgtY29tbW9uLmMgYi9hcmNoL2FybS9tYWNoLWtpcmt3b29kL3RzeDF4LWNvbW1vbi5jCmluZGV4IGY3ODExNjQuLjI0Mjk0YjIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gta2lya3dvb2QvdHN4MXgtY29tbW9uLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1raXJrd29vZC90c3gxeC1jb21tb24uYwpAQCAtMTUsNyArMTUsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogMTYgTWlCIE5PUiBmbGFzaC4gVGhlIHN0cnVjdCBtdGRfcGFydGl0aW9uIGlzIG5vdCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUKLSAqICAgICBwYXJ0aXRpb25zIG9uIHRoZSBkZXZpY2UgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgY29tcGF0YWJpbGl0eSB3aXRoCisgKiAgICAgcGFydGl0aW9ucyBvbiB0aGUgZGV2aWNlIGJlY2F1c2Ugd2Ugd2FudCB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aAogICogICAgIHRoZSBRTkFQIGZpcm13YXJlLgogICogTGF5b3V0IGFzIHVzZWQgYnkgUU5BUDoKICAqICAweDAwMDAwMDAwLTB4MDAwODAwMDAgOiAiVS1Cb290IgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1scGMzMnh4L3BtLmMgYi9hcmNoL2FybS9tYWNoLWxwYzMyeHgvcG0uYwppbmRleCBlNzZkNDFiLi5iOWM4MDU5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLWxwYzMyeHgvcG0uYworKysgYi9hcmNoL2FybS9tYWNoLWxwYzMyeHgvcG0uYwpAQCAtNDEsNyArNDEsNyBAQAogICogRFJBTSBjbG9ja2luZyBhbmQgcmVmcmVzaCBhcmUgc2xpZ2h0bHkgZGlmZmVyZW50IGZvciBzeXN0ZW1zIHdpdGggRERSCiAgKiBEUkFNIG9yIHJlZ3VsYXIgU0RSQU0gZGV2aWNlcy4gSWYgU0RSQU0gaXMgdXNlZCBpbiB0aGUgc3lzdGVtLCB0aGUKICAqIFNEUkFNIHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBpbiBkaXJlY3QtcnVuIG1vZGUuIEluIEREUiBiYXNlZCBzeXN0ZW1zLAotICogYSB0cmFuc2lzdGlvbiB0byBkaXJlY3QtcnVuIG1vZGUgd2lsbCBzdG9wIGFsbCBERFIgYWNjZXNzZXMgKG5vIGNsb2NrcykuCisgKiBhIHRyYW5zaXRpb24gdG8gZGlyZWN0LXJ1biBtb2RlIHdpbGwgc3RvcCBhbGwgRERSIGFjY2Vzc2VzIChubyBjbG9ja3MpLgogICogQmVjYXVzZSBvZiB0aGlzLCB0aGUgY29kZSB0byBzd2l0Y2ggcG93ZXIgbW9kZXMgYW5kIHRoZSBjb2RlIHRvIGVudGVyCiAgKiBhbmQgZXhpdCBEUkFNIHNlbGYtcmVmcmVzaCBtb2RlcyBtdXN0IG5vdCBiZSBleGVjdXRlZCBpbiBEUkFNLiBBIHNtYWxsCiAgKiBzZWN0aW9uIG9mIElSQU0gaXMgdXNlZCBpbnN0ZWFkIGZvciB0aGlzLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1tbXAvdGltZS5jIGIvYXJjaC9hcm0vbWFjaC1tbXAvdGltZS5jCmluZGV4IGFlYjlhZTIuLjk5ODMzYjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtbW1wL3RpbWUuYworKysgYi9hcmNoL2FybS9tYWNoLW1tcC90aW1lLmMKQEAgLTksNyArOSw3IEBACiAgKiAgIDIwMDgtMDQtMTE6IEphc29uIENoYWdhcyA8SmFzb24uY2hhZ2FzQG1hcnZlbGwuY29tPgogICogICAyMDA4LTEwLTA4OiBCaW4gWWFuZyA8YmluLnlhbmdAbWFydmVsbC5jb20+CiAgKgotICogVGhlIHRpbWVycyBtb2R1bGUgYWN0dWFsbHkgaW5jbHVkZXMgdGhyZWUgdGltZXJzLCBlYWNoIHRpbWVyIHdpdGggdXB0bworICogVGhlIHRpbWVycyBtb2R1bGUgYWN0dWFsbHkgaW5jbHVkZXMgdGhyZWUgdGltZXJzLCBlYWNoIHRpbWVyIHdpdGggdXAgdG8KICAqIHRocmVlIG1hdGNoIGNvbXBhcmF0b3JzLiBUaW1lciAjMCBpcyB1c2VkIGhlcmUgaW4gZnJlZS1ydW5uaW5nIG1vZGUgYXMKICAqIHRoZSBjbG9jayBzb3VyY2UsIGFuZCBtYXRjaCBjb21wYXJhdG9yICMxIHVzZWQgYXMgY2xvY2sgZXZlbnQgZGV2aWNlLgogICoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbXNtL2FjcHVjbG9jay1hcm0xMS5jIGIvYXJjaC9hcm0vbWFjaC1tc20vYWNwdWNsb2NrLWFybTExLmMKaW5kZXggN2ZmYmQ5OC4uODA1ZDRlZSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1tc20vYWNwdWNsb2NrLWFybTExLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1tc20vYWNwdWNsb2NrLWFybTExLmMKQEAgLTM0Myw3ICszNDMsNyBAQAogCQl9CiAJfQogCi0JLyogU2V0IHdhaXQgc3RhdGVzIGZvciBDUFUgaW5iZXR3ZWVuIGZyZXF1ZW5jeSBjaGFuZ2VzICovCisJLyogU2V0IHdhaXQgc3RhdGVzIGZvciBDUFUgYmV0d2VlbiBmcmVxdWVuY3kgY2hhbmdlcyAqLwogCXJlZ19jbGtjdGwgPSByZWFkbChBMTFTX0NMS19DTlRMX0FERFIpOwogCXJlZ19jbGtjdGwgfD0gKDEwMCA8PCAxNik7IC8qIHNldCBXVF9TVF9DTlQgKi8KIAl3cml0ZWwocmVnX2Nsa2N0bCwgQTExU19DTEtfQ05UTF9BRERSKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtbXNtL3NjbS5jIGIvYXJjaC9hcm0vbWFjaC1tc20vc2NtLmMKaW5kZXggY2ZhODA4ZC4uMjMyZjk3YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1tc20vc2NtLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1tc20vc2NtLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICAqIEBpZDogY29tbWFuZCB0byBiZSBleGVjdXRlZAogICogQGJ1ZjogYnVmZmVyIHJldHVybmVkIGZyb20gc2NtX2dldF9jb21tYW5kX2J1ZmZlcigpCiAgKgotICogQW4gU0NNIGNvbW1hbmQgaXMgbGF5ZWQgb3V0IGluIG1lbW9yeSBhcyBmb2xsb3dzOgorICogQW4gU0NNIGNvbW1hbmQgaXMgbGFpZCBvdXQgaW4gbWVtb3J5IGFzIGZvbGxvd3M6CiAgKgogICoJLS0tLS0tLS0tLS0tLS0tLS0tLSA8LS0tIHN0cnVjdCBzY21fY29tbWFuZAogICoJfCBjb21tYW5kIGhlYWRlciAgfApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9hbXMtZGVsdGEtZmlxLWhhbmRsZXIuUyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYW1zLWRlbHRhLWZpcS1oYW5kbGVyLlMKaW5kZXggOTI3ZDVhMS4uYzFjNWZiNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9hbXMtZGVsdGEtZmlxLWhhbmRsZXIuUworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2Ftcy1kZWx0YS1maXEtaGFuZGxlci5TCkBAIC03OSw3ICs3OSw3IEBACiAKIAogLyoKLSAqIFJlZ2lzdGVyIHVzZWFnZQorICogUmVnaXN0ZXIgdXNhZ2UKICAqIHI4ICAtIHRlbXBvcmFyeQogICogcjkgIC0gdGhlIGRyaXZlciBidWZmZXIKICAqIHIxMCAtIHRlbXBvcmFyeQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1zeDEuYyBiL2FyY2gvYXJtL21hY2gtb21hcDEvYm9hcmQtc3gxLmMKaW5kZXggZDQxZmUyZC4uMGFkNzgxZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9ib2FyZC1zeDEuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAxL2JvYXJkLXN4MS5jCkBAIC0zOTksNyArMzk5LDcgQEAKIAlzeDFfbW1jX2luaXQoKTsKIAogCS8qIHR1cm4gb24gVVNCIHBvd2VyICovCi0JLyogc3gxX3NldHVzYnBvd2VyKDEpOyBjYW50IGRvIGl0IGhlcmUgYmVjYXVzZSBpMmMgaXMgbm90IHJlYWR5ICovCisJLyogc3gxX3NldHVzYnBvd2VyKDEpOyBjYW4ndCBkbyBpdCBoZXJlIGJlY2F1c2UgaTJjIGlzIG5vdCByZWFkeSAqLwogCWdwaW9fcmVxdWVzdCgxLCAiQV9JUkRBX09GRiIpOwogCWdwaW9fcmVxdWVzdCgxMSwgIkFfU1dJVENIIik7CiAJZ3Bpb19yZXF1ZXN0KDE1LCAiQV9VU0JfT04iKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvZGV2aWNlcy5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9kZXZpY2VzLmMKaW5kZXggYjBmNGMyMy4uMzZmMjZjMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMS9kZXZpY2VzLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9kZXZpY2VzLmMKQEAgLTI4MSw3ICsyODEsNyBAQAogICogQ2xhaW1pbmcgR1BJT3MsIGFuZCBzZXR0aW5nIHRoZWlyIGRpcmVjdGlvbiBhbmQgaW5pdGlhbCB2YWx1ZXMsIGlzIHRoZQogICogcmVzcG9uc2liaWxpdHkgb2YgdGhlIGRldmljZSBkcml2ZXJzLiAgU28gaXMgcmVzcG9uZGluZyB0byBwcm9iZSgpLgogICoKLSAqIEJvYXJkLXNwZWNpZmljIGtub3dsZWdlIGxpa2UgY3JlYXRpbmcgZGV2aWNlcyBvciBwaW4gc2V0dXAgaXMgdG8gYmUKKyAqIEJvYXJkLXNwZWNpZmljIGtub3dsZWRnZSBsaWtlIGNyZWF0aW5nIGRldmljZXMgb3IgcGluIHNldHVwIGlzIHRvIGJlCiAgKiBrZXB0IG91dCBvZiBkcml2ZXJzIGFzIG11Y2ggYXMgcG9zc2libGUuICBJbiBwYXJ0aWN1bGFyLCBwaW4gc2V0dXAKICAqIG1heSBiZSBoYW5kbGVkIGJ5IHRoZSBib290IGxvYWRlciwgYW5kIGRyaXZlcnMgc2hvdWxkIGV4cGVjdCBpdCB3aWxsCiAgKiBub3JtYWxseSBoYXZlIGJlZW4gZG9uZSBieSB0aGUgdGltZSB0aGV5J3JlIHByb2JlZC4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDEvaW5jbHVkZS9tYWNoL2Ftcy1kZWx0YS1maXEuaCBiL2FyY2gvYXJtL21hY2gtb21hcDEvaW5jbHVkZS9tYWNoL2Ftcy1kZWx0YS1maXEuaAppbmRleCA3YTJkZjI5Li4yM2VlZDAwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAxL2luY2x1ZGUvbWFjaC9hbXMtZGVsdGEtZmlxLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMS9pbmNsdWRlL21hY2gvYW1zLWRlbHRhLWZpcS5oCkBAIC0zMSw3ICszMSw3IEBACiAjZW5kaWYKIAogLyoKLSAqIFRoZXNlIGFyZSB0aGUgb2Zmc2V0cyBmcm9tIHRoZSBiZWdpbmluZyBvZiB0aGUgZmlxX2J1ZmZlci4gVGhleSBhcmUgcHV0IGhlcmUKKyAqIFRoZXNlIGFyZSB0aGUgb2Zmc2V0cyBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpcV9idWZmZXIuIFRoZXkgYXJlIHB1dCBoZXJlCiAgKiBzaW5jZSB0aGUgYnVmZmVyIGFuZCBoZWFkZXIgbmVlZCB0byBiZSBhY2Nlc3NlZCBieSBkcml2ZXJzIHNlcnZpY2luZyBkZXZpY2VzCiAgKiB3aGljaCBnZW5lcmF0ZSBHUElPIGludGVycnVwdHMgLSBlLmcuIGtleWJvYXJkLCBtb2RlbSwgaG9vayBzd2l0Y2guCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtaWdlcDAwMjAuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtaWdlcDAwMjAuYwppbmRleCA1ZjhhMmZkLi4zNGNmOTgyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLWlnZXAwMDIwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1pZ2VwMDAyMC5jCkBAIC02OTYsNyArNjk2LDcgQEAKIAlpZ2VwMl9pbml0X3Ntc2M5MTF4KCk7CiAKIAkvKgotCSAqIFdMQU4tQlQgY29tYm8gbW9kdWxlIGZyb20gTXVSYXRhIHdpY2ggaGFzIGEgTWFydmVsbCBXTEFOCisJICogV0xBTi1CVCBjb21ibyBtb2R1bGUgZnJvbSBNdVJhdGEgd2hpY2ggaGFzIGEgTWFydmVsbCBXTEFOCiAJICogKDg4Vzg2ODYpICsgQ1NSIEJsdWV0b290aCBjaGlwc2V0LiBVc2VzIFNESU8gaW50ZXJmYWNlLgogCSAqLwogCWlnZXAyX3dsYW5fYnRfaW5pdCgpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1pZ2VwMDAzMC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9ib2FyZC1pZ2VwMDAzMC5jCmluZGV4IGIxMGRiMGUuLjJjZjg2YzMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvYm9hcmQtaWdlcDAwMzAuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2JvYXJkLWlnZXAwMDMwLmMKQEAgLTQ0MCw3ICs0NDAsNyBAQAogCWlnZXAzX2xlZHNfaW5pdCgpOwogCiAJLyoKLQkgKiBXTEFOLUJUIGNvbWJvIG1vZHVsZSBmcm9tIE11UmF0YSB3aWNoIGhhcyBhIE1hcnZlbGwgV0xBTgorCSAqIFdMQU4tQlQgY29tYm8gbW9kdWxlIGZyb20gTXVSYXRhIHdoaWNoIGhhcyBhIE1hcnZlbGwgV0xBTgogCSAqICg4OFc4Njg2KSArIENTUiBCbHVldG9vdGggY2hpcHNldC4gVXNlcyBTRElPIGludGVyZmFjZS4KIAkgKi8KIAlpZ2VwM193aWZpX2J0X2luaXQoKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2tkb21haW4uYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2tkb21haW4uYwppbmRleCBhYjg3ODU0Li42Y2I2YzAzIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrZG9tYWluLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9ja2RvbWFpbi5jCkBAIC0yNTgsNyArMjU4LDcgQEAKICAqIGNsa2RtX2luaXQgLSBzZXQgdXAgdGhlIGNsb2NrZG9tYWluIGxheWVyCiAgKiBAY2xrZG1zOiBvcHRpb25hbCBwb2ludGVyIHRvIGFuIGFycmF5IG9mIGNsb2NrZG9tYWlucyB0byByZWdpc3RlcgogICogQGluaXRfYXV0b2RlcHM6IG9wdGlvbmFsIHBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgYXV0b2RlcHMgdG8gcmVnaXN0ZXIKLSAqIEBjdXN0b21fZnVuY3M6IGZ1bmMgcG9pbnRlcnMgZm9yIGFyY2ggc3BlY2ZpYyBpbXBsZW1lbnRhdGlvbnMKKyAqIEBjdXN0b21fZnVuY3M6IGZ1bmMgcG9pbnRlcnMgZm9yIGFyY2ggc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zCiAgKgogICogU2V0IHVwIGludGVybmFsIHN0YXRlLiAgSWYgYSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIGNsb2NrZG9tYWlucwogICogQGNsa2RtcyB3YXMgc3VwcGxpZWQsIGxvb3AgdGhyb3VnaCB0aGUgbGlzdCBvZiBjbG9ja2RvbWFpbnMsCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrZG9tYWluLmggYi9hcmNoL2FybS9tYWNoLW9tYXAyL2Nsb2NrZG9tYWluLmgKaW5kZXggODViM2RjZS4uNTgyMzU4NCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jbG9ja2RvbWFpbi5oCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvY2xvY2tkb21haW4uaApAQCAtMTI1LDcgKzEyNSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBjbGtkbV9vcHMgLSBBcmNoIHNwZWNmaWMgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zCisgKiBzdHJ1Y3QgY2xrZG1fb3BzIC0gQXJjaCBzcGVjaWZpYyBmdW5jdGlvbiBpbXBsZW1lbnRhdGlvbnMKICAqIEBjbGtkbV9hZGRfd2tkZXA6IEFkZCBhIHdha2V1cCBkZXBlbmRlbmN5IGJldHdlZW4gY2xrIGRvbWFpbnMKICAqIEBjbGtkbV9kZWxfd2tkZXA6IERlbGV0ZSBhIHdha2V1cCBkZXBlbmRlbmN5IGJldHdlZW4gY2xrIGRvbWFpbnMKICAqIEBjbGtkbV9yZWFkX3drZGVwOiBSZWFkIHdha2V1cCBkZXBlbmRlbmN5IHN0YXRlIGJldHdlZW4gY2xrIGRvbWFpbnMKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvY3B1aWRsZTM0eHguYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvY3B1aWRsZTM0eHguYwppbmRleCBhNDRjNTIzLi4xYzI0MGVmIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2NwdWlkbGUzNHh4LmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9jcHVpZGxlMzR4eC5jCkBAIC0yOTcsOCArMjk3LDggQEAKIAogLyoqCiAgKiBvbWFwM19jcHVpZGxlX3VwZGF0ZV9zdGF0ZXMoKSAtIFVwZGF0ZSB0aGUgY3B1aWRsZSBzdGF0ZXMKLSAqIEBtcHVfZGVlcGVzdF9zdGF0ZToJRW5hYmxlIHN0YXRlcyB1cHRvIGFuZCBpbmNsdWRpbmcgdGhpcyBmb3IgbXB1IGRvbWFpbgotICogQGNvcmVfZGVlcGVzdF9zdGF0ZToJRW5hYmxlIHN0YXRlcyB1cHRvIGFuZCBpbmNsdWRpbmcgdGhpcyBmb3IgY29yZSBkb21haW4KKyAqIEBtcHVfZGVlcGVzdF9zdGF0ZToJRW5hYmxlIHN0YXRlcyB1cCB0byBhbmQgaW5jbHVkaW5nIHRoaXMgZm9yIG1wdSBkb21haW4KKyAqIEBjb3JlX2RlZXBlc3Rfc3RhdGU6CUVuYWJsZSBzdGF0ZXMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGlzIGZvciBjb3JlIGRvbWFpbgogICoKICAqIFRoaXMgZ29lcyB0aHJvdWdoIHRoZSBsaXN0IG9mIHN0YXRlcyBhdmFpbGFibGUgYW5kIGVuYWJsZXMgYW5kIGRpc2FibGVzIHRoZQogICogdmFsaWRpdHkgb2YgQyBzdGF0ZXMgYmFzZWQgb24gZGVlcGVzdCBzdGF0ZSB0aGF0IGNhbiBiZSBhY2hpZXZlZCBmb3IgdGhlCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL2RldmljZXMuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jCmluZGV4IDg0ZDFiNzMuLjdiODU1ODUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZGV2aWNlcy5jCkBAIC0yNTMsNyArMjUzLDcgQEAKIAkJCUFSUkFZX1NJWkUob21hcF9rZXlib2FyZF9sYXRlbmN5KSwgMCk7CiAKIAlpZiAoSVNfRVJSKG9kKSkgewotCQlXQVJOKDEsICJDYW50IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCisJCVdBUk4oMSwgIkNhbid0IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCiAJCQkJCQluYW1lLCBvaC0+bmFtZSk7CiAJCXJldHVybiBQVFJfRVJSKG9kKTsKIAl9CkBAIC0zNzMsNyArMzczLDcgQEAKIAlvZCA9IG9tYXBfZGV2aWNlX2J1aWxkKG5hbWUsIHNwaV9udW0sIG9oLCBwZGF0YSwKIAkJCQlzaXplb2YoKnBkYXRhKSwJb21hcF9tY3NwaV9sYXRlbmN5LAogCQkJCUFSUkFZX1NJWkUob21hcF9tY3NwaV9sYXRlbmN5KSwgMCk7Ci0JV0FSTihJU19FUlIob2QpLCAiQ2FudCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXNcbiIsCisJV0FSTihJU19FUlIob2QpLCAiQ2FuJ3QgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzXG4iLAogCQkJCW5hbWUsIG9oLT5uYW1lKTsKIAlrZnJlZShwZGF0YSk7CiAJcmV0dXJuIDA7CkBAIC03MjUsNyArNzI1LDcgQEAKIAlvZCA9IG9tYXBfZGV2aWNlX2J1aWxkKGRldl9uYW1lLCBpZCwgb2gsIE5VTEwsIDAsCiAJCQkJb21hcF93ZHRfbGF0ZW5jeSwKIAkJCQlBUlJBWV9TSVpFKG9tYXBfd2R0X2xhdGVuY3kpLCAwKTsKLQlXQVJOKElTX0VSUihvZCksICJDYW50IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCisJV0FSTihJU19FUlIob2QpLCAiQ2FuJ3QgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwKIAkJCQlkZXZfbmFtZSwgb2gtPm5hbWUpOwogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9kbWEuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvZG1hLmMKaW5kZXggMzQ5MjJiMi4uYzlmZjBlNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9kbWEuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL2RtYS5jCkBAIC0yNjIsNyArMjYyLDcgQEAKIAkJCW9tYXAyX2RtYV9sYXRlbmN5LCBBUlJBWV9TSVpFKG9tYXAyX2RtYV9sYXRlbmN5KSwgMCk7CiAJa2ZyZWUocCk7CiAJaWYgKElTX0VSUihvZCkpIHsKLQkJcHJfZXJyKCIlczogQ2FudCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXMuXG4iLAorCQlwcl9lcnIoIiVzOiBDYW4ndCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXMuXG4iLAogCQkJX19mdW5jX18sIG5hbWUsIG9oLT5uYW1lKTsKIAkJcmV0dXJuIFBUUl9FUlIob2QpOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9ncGlvLmMKaW5kZXggNDEzZGUxOC4uOTUyOTg0MiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9ncGlvLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9ncGlvLmMKQEAgLTgyLDcgKzgyLDcgQEAKIAlrZnJlZShwZGF0YSk7CiAKIAlpZiAoSVNfRVJSKG9kKSkgewotCQlXQVJOKDEsICJDYW50IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCisJCVdBUk4oMSwgIkNhbid0IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsCiAJCQkJCW5hbWUsIG9oLT5uYW1lKTsKIAkJcmV0dXJuIFBUUl9FUlIob2QpOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvaHNtbWMuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvaHNtbWMuYwppbmRleCAxMzdlMWE1Li5iMmYzMGJlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL2hzbW1jLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9oc21tYy5jCkBAIC00NjUsNyArNDY1LDcgQEAKIAlvZCA9IG9tYXBfZGV2aWNlX2J1aWxkKG5hbWUsIGN0cmxfbnIgLSAxLCBvaCwgbW1jX2RhdGEsCiAJCXNpemVvZihzdHJ1Y3Qgb21hcF9tbWNfcGxhdGZvcm1fZGF0YSksIG9obCwgb2hsX2NudCwgZmFsc2UpOwogCWlmIChJU19FUlIob2QpKSB7Ci0JCVdBUk4oMSwgIkNhbnQgYnVpbGQgb21hcF9kZXZpY2UgZm9yICVzOiVzLlxuIiwgbmFtZSwgb2gtPm5hbWUpOworCQlXQVJOKDEsICJDYW4ndCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXMuXG4iLCBuYW1lLCBvaC0+bmFtZSk7CiAJCWtmcmVlKG1tY19kYXRhLT5zbG90c1swXS5uYW1lKTsKIAkJZ290byBkb25lOwogCX0KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvbWNic3AuYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvbWNic3AuYwppbmRleCA1NjViOTA2Li40YTZlZjZhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL21jYnNwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9tY2JzcC5jCkBAIC0xNDksNyArMTQ5LDcgQEAKIAkJCQlBUlJBWV9TSVpFKG9tYXAyX21jYnNwX2xhdGVuY3kpLCBmYWxzZSk7CiAJa2ZyZWUocGRhdGEpOwogCWlmIChJU19FUlIob2QpKSAgewotCQlwcl9lcnIoIiVzOiBDYW50IGJ1aWxkIG9tYXBfZGV2aWNlIGZvciAlczolcy5cbiIsIF9fZnVuY19fLAorCQlwcl9lcnIoIiVzOiBDYW4ndCBidWlsZCBvbWFwX2RldmljZSBmb3IgJXM6JXMuXG4iLCBfX2Z1bmNfXywKIAkJCQkJbmFtZSwgb2gtPm5hbWUpOwogCQlyZXR1cm4gUFRSX0VSUihvZCk7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXguYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4LmMKaW5kZXggYmIwNDNjYi4uYTRhYjFlMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9tdXguYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL211eC5jCkBAIC01MTgsNyArNTE4LDcgQEAKIAkJCXNlcV9wcmludGYocywgIi8qICVzICovXG4iLCBtLT5tdXhuYW1lc1ttb2RlXSk7CiAKIAkJLyoKLQkJICogWFhYOiBNaWdodCBiZSByZXZpc2l0ZWQgdG8gc3VwcG9ydCBkaWZmZXJlbmNlcyBhY2Nyb3NzCisJCSAqIFhYWDogTWlnaHQgYmUgcmV2aXNpdGVkIHRvIHN1cHBvcnQgZGlmZmVyZW5jZXMgYWNyb3NzCiAJCSAqIHNhbWUgT01BUCBnZW5lcmF0aW9uLgogCQkgKi8KIAkJc2VxX3ByaW50ZihzLCAiT01BUCVkX01VWCglcywgIiwgb21hcF9nZW4sIG0wX2RlZik7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL211eDI0MzAuaCBiL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4MjQzMC5oCmluZGV4IGFkYmVhMGQuLjlmZDkzMTQgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4MjQzMC5oCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvbXV4MjQzMC5oCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBhYnNvbHV0ZSBhZGRyZXNzZXMuICBUaGUgbmFtZSBpbiB0aGUgbWFjcm8gaXMgdGhlIG1vZGUtMCBuYW1lIG9mCiAgKiB0aGUgcGluLiAgTk9URTogVGhlc2UgcmVnaXN0ZXJzIGFyZSA4LWJpdHMgd2lkZS4KICAqCi0gKiBOb3RlIHRoYXQgdGhlc2UgZGVmaW5lcyB1c2UgU0RNTUMgaW5zdGVhZCBvZiBNTUMgZm9yIGNvbXBhYmlsaXR5CisgKiBOb3RlIHRoYXQgdGhlc2UgZGVmaW5lcyB1c2UgU0RNTUMgaW5zdGVhZCBvZiBNTUMgZm9yIGNvbXBhdGliaWxpdHkKICAqIHdpdGggc2lnbmFsIG5hbWVzIHVzZWQgaW4gMzYzMC4KICAqLwogI2RlZmluZSBPTUFQMjQzMF9DT05UUk9MX1BBRENPTkZfR1BNQ19DTEtfT0ZGU0VUCQkweDAwMApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kXzI0MzBfZGF0YS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX2h3bW9kXzI0MzBfZGF0YS5jCmluZGV4IGE4NjBmYjUuLmU2ZTM4MTAgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9od21vZF8yNDMwX2RhdGEuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfaHdtb2RfMjQzMF9kYXRhLmMKQEAgLTE1NTksNyArMTU1OSw3IEBACiAJCQkgKiBJMkNIUyBJUCdzIGRvIG5vdCBmb2xsb3cgdGhlIHVzdWFsIHBhdHRlcm4uCiAJCQkgKiBwcmNtX3JlZ19pZCBhbG9uZSBjYW5ub3QgYmUgdXNlZCB0byBwcm9ncmFtCiAJCQkgKiB0aGUgaWNsayBhbmQgZmNsay4gTmVlZHMgdG8gYmUgaGFuZGxlZCB1c2luZwotCQkJICogYWRkaXRvbmFsIGZsYWdzIHdoZW4gY2xrIGhhbmRsaW5nIGlzIG1vdmVkCisJCQkgKiBhZGRpdGlvbmFsIGZsYWdzIHdoZW4gY2xrIGhhbmRsaW5nIGlzIG1vdmVkCiAJCQkgKiB0byBod21vZCBmcmFtZXdvcmsuCiAJCQkgKi8KIAkJCS5tb2R1bGVfb2ZmcyA9IENPUkVfTU9ELApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX3BoeV9pbnRlcm5hbC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX3BoeV9pbnRlcm5hbC5jCmluZGV4IGUyZTYwNWYuLjA1ZjZhYmMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF9waHlfaW50ZXJuYWwuYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfcGh5X2ludGVybmFsLmMKQEAgLTExMiwxMiArMTEyLDEyIEBACiAJCWVsc2UKIAkJCS8qCiAJCQkgKiBFbmFibGUgVkJVUyBWYWxpZCwgQVZhbGlkIGFuZCBJRERJRwotCQkJICogaGlnaCBpbXBlZGVuY2UKKwkJCSAqIGhpZ2ggaW1wZWRhbmNlCiAJCQkgKi8KIAkJCV9fcmF3X3dyaXRlbChJRERJRyB8IEFWQUxJRCB8IFZCVVNWQUxJRCwKIAkJCQkJCWN0cmxfYmFzZSArIFVTQk9UR0hTX0NPTlRST0wpOwogCX0gZWxzZSB7Ci0JCS8qIEVuYWJsZSBzZXNzaW9uIEVORCBhbmQgSURJRyB0byBoaWdoIGltcGVkZW5jZS4gKi8KKwkJLyogRW5hYmxlIHNlc3Npb24gRU5EIGFuZCBJRElHIHRvIGhpZ2ggaW1wZWRhbmNlLiAqLwogCQlfX3Jhd193cml0ZWwoU0VTU0VORCB8IElERElHLCBjdHJsX2Jhc2UgKwogCQkJCQlVU0JPVEdIU19DT05UUk9MKTsKIAl9CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfdHdsLmMgYi9hcmNoL2FybS9tYWNoLW9tYXAyL29tYXBfdHdsLmMKaW5kZXggMGE4ZTc0ZS4uMDdkNjE0MCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9vbWFwX3R3bC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvb21hcF90d2wuYwpAQCAtMzA4LDcgKzMwOCw3IEBACiAgKiBTdHJhdGVneSBTb2Z0d2FyZSBTY2FsaW5nIE1vZGUgKEVOQUJMRV9WTU9ERT0wKSwgZm9yIHNldHRpbmcgdGhlIHZvbHRhZ2VzLAogICogaW4gdGhvc2Ugc2NlbmFyaW9zIHRoaXMgYml0IGlzIHRvIGJlIGNsZWFyZWQgKGVuYWJsZSA9IGZhbHNlKS4KICAqCi0gKiBSZXR1cm5zIDAgb24gc3VjZXNzLCBlcnJvciBpcyByZXR1cm5lZCBpZiBJMkMgcmVhZC93cml0ZSBmYWlscy4KKyAqIFJldHVybnMgMCBvbiBzdWNjZXNzLCBlcnJvciBpcyByZXR1cm5lZCBpZiBJMkMgcmVhZC93cml0ZSBmYWlscy4KICAqLwogaW50IF9faW5pdCBvbWFwM190d2xfc2V0X3NyX2JpdChib29sIGVuYWJsZSkKIHsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW4uYyBiL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW4uYwppbmRleCA0OWM2NTEzLi45YWYwODQ3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbi5jCkBAIC0xOTYsNyArMTk2LDcgQEAKIC8qKgogICogcHdyZG1faW5pdCAtIHNldCB1cCB0aGUgcG93ZXJkb21haW4gbGF5ZXIKICAqIEBwd3JkbV9saXN0OiBhcnJheSBvZiBzdHJ1Y3QgcG93ZXJkb21haW4gcG9pbnRlcnMgdG8gcmVnaXN0ZXIKLSAqIEBjdXN0b21fZnVuY3M6IGZ1bmMgcG9pbnRlcnMgZm9yIGFyY2ggc3BlY2ZpYyBpbXBsZW1lbnRhdGlvbnMKKyAqIEBjdXN0b21fZnVuY3M6IGZ1bmMgcG9pbnRlcnMgZm9yIGFyY2ggc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zCiAgKgogICogTG9vcCB0aHJvdWdoIHRoZSBhcnJheSBvZiBwb3dlcmRvbWFpbnMgQHB3cmRtX2xpc3QsIHJlZ2lzdGVyaW5nIGFsbAogICogdGhhdCBhcmUgYXZhaWxhYmxlIG9uIHRoZSBjdXJyZW50IENQVS4gSWYgcHdyZG1fbGlzdCBpcyBzdXBwbGllZApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbi5oIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbi5oCmluZGV4IDAyN2Y0MGIuLmQyM2Q5NzkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW4uaAorKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluLmgKQEAgLTEyMSw3ICsxMjEsNyBAQAogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgcHdyZG1fb3BzIC0gQXJjaCBzcGVjZmljIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9ucworICogc3RydWN0IHB3cmRtX29wcyAtIEFyY2ggc3BlY2lmaWMgZnVuY3Rpb24gaW1wbGVtZW50YXRpb25zCiAgKiBAcHdyZG1fc2V0X25leHRfcHdyc3Q6IFNldCB0aGUgdGFyZ2V0IHBvd2VyIHN0YXRlIGZvciBhIHBkCiAgKiBAcHdyZG1fcmVhZF9uZXh0X3B3cnN0OiBSZWFkIHRoZSB0YXJnZXQgcG93ZXIgc3RhdGUgc2V0IGZvciBhIHBkCiAgKiBAcHdyZG1fcmVhZF9wd3JzdDogUmVhZCB0aGUgY3VycmVudCBwb3dlciBzdGF0ZSBvZiBhIHBkCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluczN4eHhfZGF0YS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9wb3dlcmRvbWFpbnMzeHh4X2RhdGEuYwppbmRleCA5YzljMTEzLi40NjlhOTIwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9tYXAyL3Bvd2VyZG9tYWluczN4eHhfZGF0YS5jCisrKyBiL2FyY2gvYXJtL21hY2gtb21hcDIvcG93ZXJkb21haW5zM3h4eF9kYXRhLmMKQEAgLTcyLDcgKzcyLDcgQEAKIAogLyoKICAqIFRoZSBVU0JUTEwgU2F2ZS1hbmQtUmVzdG9yZSBtZWNoYW5pc20gaXMgYnJva2VuIG9uCi0gKiAzNDMwcyB1cHRvIEVTMy4wIGFuZCAzNjMwRVMxLjAuIEhlbmNlIHRoaXMgZmVhdHVyZQorICogMzQzMHMgdXAgdG8gRVMzLjAgYW5kIDM2MzBFUzEuMC4gSGVuY2UgdGhpcyBmZWF0dXJlCiAgKiBuZWVkcyB0byBiZSBkaXNhYmxlZCBvbiB0aGVzZSBjaGlwcy4KICAqIFJlZmVyOiAzNDMwIGVycmF0YSBJRCBpNDU5IGFuZCAzNjMwIGVycmF0YSBJRCBpNTc5CiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vbWFwMi9zbWFydHJlZmxleC5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi9zbWFydHJlZmxleC5jCmluZGV4IDhmNjc0YzkuLjEzZTI0ZjkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb21hcDIvc21hcnRyZWZsZXguYworKysgYi9hcmNoL2FybS9tYWNoLW9tYXAyL3NtYXJ0cmVmbGV4LmMKQEAgLTI0Nyw3ICsyNDcsNyBAQAogICogZHJpdmVyIHJlZ2lzdGVyIGFuZCBzciBkZXZpY2UgaW50aWFsaXp0aW9uIEFQSSdzLiBPbmx5IG9uZSBjYWxsCiAgKiB3aWxsIHVsdGltYXRlbHkgc3VjY2VlZC4KICAqCi0gKiBDdXJyZW5seSB0aGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBpbnRlcnJydXB0IGhhbmRsZXIgZm9yIGEgcGFydGljdWxhciBTUgorICogQ3VycmVudGx5IHRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGludGVycnJ1cHQgaGFuZGxlciBmb3IgYSBwYXJ0aWN1bGFyIFNSCiAgKiBpZiBzbWFydHJlZmxleCBjbGFzcyBkcml2ZXIgaXMgYWxyZWFkeSByZWdpc3RlcmVkIGFuZCBoYXMKICAqIHJlcXVlc3RlZCBmb3IgaW50ZXJydXB0cyBhbmQgdGhlIFNSIGludGVycnVwdCBsaW5lIGluIHByZXNlbnQuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb21hcDIvdm9sdGFnZS5jIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi92b2x0YWdlLmMKaW5kZXggYzZmYWNmNy4uNmZiNTIwOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vbWFwMi92b2x0YWdlLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vbWFwMi92b2x0YWdlLmMKQEAgLTg1MSw3ICs4NTEsNyBAQAogICogQHZvbHRkbToJcG9pbnRlciB0byB0aGUgVkREIHdob3NlIHZvbHRhZ2UgaXMgdG8gYmUgcmVzZXQuCiAgKgogICogVGhpcyBBUEkgZmluZHMgb3V0IHRoZSBjb3JyZWN0IHZvbHRhZ2UgdGhlIHZvbHRhZ2UgZG9tYWluIGlzIHN1cHBvc2VkCi0gKiB0byBiZSBhdCBhbmQgcmVzZXRzIHRoZSB2b2x0YWdlIHRvIHRoYXQgbGV2ZWwuIFNob3VsZCBiZSB1c2VkIGV4cGVjaWFsbHkKKyAqIHRvIGJlIGF0IGFuZCByZXNldHMgdGhlIHZvbHRhZ2UgdG8gdGhhdCBsZXZlbC4gU2hvdWxkIGJlIHVzZWQgZXNwZWNpYWxseQogICogd2hpbGUgZGlzYWJsaW5nIGFueSB2b2x0YWdlIGNvbXBlbnNhdGlvbiBtb2R1bGVzLgogICovCiB2b2lkIG9tYXBfdm9sdGFnZV9yZXNldChzdHJ1Y3Qgdm9sdGFnZWRvbWFpbiAqdm9sdGRtKQpAQCAtOTEyLDcgKzkxMiw3IEBACiAgKiBUaGlzIEFQSSBzZWFyY2hlcyBvbmx5IHRocm91Z2ggdGhlIG5vbi1jb21wZW5zYXRlZCB2b2x0YWdlcyBpbnQgdGhlCiAgKiB2b2x0YWdlIHRhYmxlLgogICogUmV0dXJucyBwb2ludGVyIHRvIHRoZSB2b2x0YWdlIHRhYmxlIGVudHJ5IGNvcnJlc3BvbmRpbmcgdG8gdm9sdCBvbgotICogc3VjZXNzLiBSZXR1cm5zIC1FTk9EQVRBIGlmIG5vIHZvbHRhZ2UgdGFibGUgZXhpc2l0cyBmb3IgdGhlIHBhc3NlZCB2b2x0YWdlCisgKiBzdWNjZXNzLiBSZXR1cm5zIC1FTk9EQVRBIGlmIG5vIHZvbHRhZ2UgdGFibGUgZXhpc2l0cyBmb3IgdGhlIHBhc3NlZCB2b2x0YWdlCiAgKiBkb21haW4gb3IgaWYgdGhlcmUgaXMgbm8gbWF0Y2hpbmcgZW50cnkuCiAgKi8KIHN0cnVjdCBvbWFwX3ZvbHRfZGF0YSAqb21hcF92b2x0YWdlX2dldF92b2x0ZGF0YShzdHJ1Y3Qgdm9sdGFnZWRvbWFpbiAqdm9sdGRtLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L2FkZHItbWFwLmMgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYWRkci1tYXAuYwppbmRleCAxYTVkNmEwLi41Y2VhZmRjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYWRkci1tYXAuYworKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvYWRkci1tYXAuYwpAQCAtMTksNyArMTksNyBAQAogI2luY2x1ZGUgImNvbW1vbi5oIgogCiAvKgotICogVGhlIE9yaW9uIGhhcyBmdWxseSBwcm9ncmFtYWJsZSBhZGRyZXNzIG1hcC4gVGhlcmUncyBhIHNlcGFyYXRlIGFkZHJlc3MKKyAqIFRoZSBPcmlvbiBoYXMgZnVsbHkgcHJvZ3JhbW1hYmxlIGFkZHJlc3MgbWFwLiBUaGVyZSdzIGEgc2VwYXJhdGUgYWRkcmVzcwogICogbWFwIGZvciBlYWNoIG9mIHRoZSBkZXZpY2UgX21hc3Rlcl8gaW50ZXJmYWNlcywgZS5nLiBDUFUsIFBDSSwgUENJZSwgVVNCLAogICogR2lnYWJpdCBFdGhlcm5ldCwgRE1BL1hPUiBlbmdpbmVzLCBldGMuIEVhY2ggaW50ZXJmYWNlIGhhcyBpdHMgb3duCiAgKiBhZGRyZXNzIGRlY29kZSB3aW5kb3dzIHRoYXQgYWxsb3cgaXQgdG8gYWNjZXNzIGFueSBvZiB0aGUgT3Jpb24gcmVzb3VyY2VzLgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L25ldDJiaWctc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC9uZXQyYmlnLXNldHVwLmMKaW5kZXggNDI5ZWNhZi4uYTU5MzBmOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L25ldDJiaWctc2V0dXAuYworKysgYi9hcmNoL2FybS9tYWNoLW9yaW9uNXgvbmV0MmJpZy1zZXR1cC5jCkBAIC0xOTAsNyArMTkwLDcgQEAKICAqIFRoZSBwb3dlciBmcm9udCBMRURzIChibHVlIGFuZCByZWQpIGFuZCBTQVRBIHJlZCBMRURzIGFyZSBjb250cm9sbGVkIHZpYSBhCiAgKiBzaW5nbGUgR1BJTyBsaW5lIGFuZCBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBsZWRzLWdwaW8gZHJpdmVyLgogICoKLSAqIFRoZSBTQVRBIGJsdWUgTEVEcyBoYXZlIHNvbWUgaGFyZHdhcmUgYmxpbmsgY2FwYWJpbGl0aWVzIHdoaWNoIGFyZSBkZXRhaWxsZWQKKyAqIFRoZSBTQVRBIGJsdWUgTEVEcyBoYXZlIHNvbWUgaGFyZHdhcmUgYmxpbmsgY2FwYWJpbGl0aWVzIHdoaWNoIGFyZSBkZXRhaWxlZAogICogaW4gdGhlIGZvbGxvd2luZyBhcnJheToKICAqCiAgKiBTQVRBeCBibHVlIExFRCB8IFNBVEF4IGFjdGl2aXR5IHwgTEVEIHN0YXRlCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLW9yaW9uNXgvdHMyMDktc2V0dXAuYyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czIwOS1zZXR1cC5jCmluZGV4IGYwZjQzZTEuLmU2ZDY0NDkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czIwOS1zZXR1cC5jCisrKyBiL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czIwOS1zZXR1cC5jCkBAIC0zNiw3ICszNiw3IEBACiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiA4TWlCIE5PUiBmbGFzaC4gVGhlIHN0cnVjdCBtdGRfcGFydGl0aW9uIGlzIG5vdCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUKLSAqICAgICBwYXJ0aXRpb25zIG9uIHRoZSBkZXZpY2UgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgY29tcGF0YWJpbGl0eSB3aXRoCisgKiAgICAgcGFydGl0aW9ucyBvbiB0aGUgZGV2aWNlIGJlY2F1c2Ugd2Ugd2FudCB0byBrZWVwIGNvbXBhdGliaWxpdHkgd2l0aAogICogICAgIGV4aXN0aW5nIFFOQVAgZmlybXdhcmUuCiAgKgogICogTGF5b3V0IGFzIHVzZWQgYnkgUU5BUDoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtb3Jpb241eC90czQwOS1zZXR1cC5jIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMKaW5kZXggOTJmMzkzZi4uOWVhYzgxOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMKKysrIGIvYXJjaC9hcm0vbWFjaC1vcmlvbjV4L3RzNDA5LXNldHVwLmMKQEAgLTU2LDcgKzU2LDcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIDhNaUIgTk9SIGZsYXNoLiBUaGUgc3RydWN0IG10ZF9wYXJ0aXRpb24gaXMgbm90IGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZQotICogICAgIHBhcnRpdGlvbnMgb24gdGhlIGRldmljZSBiZWNhdXNlIHdlIHdhbnQgdG8ga2VlcCBjb21wYXRhYmlsaXR5IHdpdGgKKyAqICAgICBwYXJ0aXRpb25zIG9uIHRoZSBkZXZpY2UgYmVjYXVzZSB3ZSB3YW50IHRvIGtlZXAgY29tcGF0aWJpbGl0eSB3aXRoCiAgKiAgICAgZXhpc3RpbmcgUU5BUCBmaXJtd2FyZS4KICAqCiAgKiBMYXlvdXQgYXMgdXNlZCBieSBRTkFQOgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvaW5jbHVkZS9tYWNoL3B4YTN4eC1yZWdzLmggYi9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvcHhhM3h4LXJlZ3MuaAppbmRleCBlNGZiNDY2Li4yMDdlY2I0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvcHhhM3h4LXJlZ3MuaAorKysgYi9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvcHhhM3h4LXJlZ3MuaApAQCAtMzgsNyArMzgsNyBAQAogI2RlZmluZSBQQ01EKHgpCQlfX1JFRygweDQwRjUwMTEwICsgKCh4KSA8PCAyKSkKIAogLyoKLSAqIFNsYXZlIFBvd2VyIE1hbmFnbWVudCBVbml0CisgKiBTbGF2ZSBQb3dlciBNYW5hZ2VtZW50IFVuaXQKICAqLwogI2RlZmluZSBBU0NSCQlfX1JFRygweDQwZjQwMDAwKQkvKiBBcHBsaWNhdGlvbiBTdWJzeXN0ZW0gUG93ZXIgU3RhdHVzL0NvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgQVJTUgkJX19SRUcoMHg0MGY0MDAwNCkJLyogQXBwbGljYXRpb24gU3Vic3lzdGVtIFJlc2V0IFN0YXR1cyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1weGEvaW5jbHVkZS9tYWNoL3pldXMuaCBiL2FyY2gvYXJtL21hY2gtcHhhL2luY2x1ZGUvbWFjaC96ZXVzLmgKaW5kZXggZmFhNDA4YS4uMDY0MWYzMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvaW5jbHVkZS9tYWNoL3pldXMuaAorKysgYi9hcmNoL2FybS9tYWNoLXB4YS9pbmNsdWRlL21hY2gvemV1cy5oCkBAIC02NCw3ICs2NCw3IEBACiAKIC8qCiAgKiBDUExEIHJlZ2lzdGVyczoKLSAqIE9ubHkgNCByZWdpc3RlcnMsIGJ1dCBzcHJlYWRlZCBvdmVyIGEgMzJNQiBhZGRyZXNzIHNwYWNlLgorICogT25seSA0IHJlZ2lzdGVycywgYnV0IHNwcmVhZCBvdmVyIGEgMzJNQiBhZGRyZXNzIHNwYWNlLgogICogQmUgZ2VudGxlLCBhbmQgcmVtYXAgdGhhdCBvdmVyIDMya0IuLi4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXB4YS9taW9hNzAxLmMgYi9hcmNoL2FybS9tYWNoLXB4YS9taW9hNzAxLmMKaW5kZXggZGQxM2JiNi4uMjM5MjVkYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1weGEvbWlvYTcwMS5jCisrKyBiL2FyY2gvYXJtL21hY2gtcHhhL21pb2E3MDEuYwpAQCAtNDU4LDcgKzQ1OCw3IEBACiAvKgogICogU3VzcGVuZC9SZXN1bWUgYm9vdHN0cmFwIG1hbmFnZW1lbnQKICAqCi0gKiBNSU8gQTcwMSByZWJvb3Qgc2VxdWVuY2UgaXMgaGlnaGx5IFJPTSBkZXBlbmRhbnQuIEZyb20gdGhlIG9uZSBkaXNzYXNzZW1ibGVkLAorICogTUlPIEE3MDEgcmVib290IHNlcXVlbmNlIGlzIGhpZ2hseSBST00gZGVwZW5kZW50LiBGcm9tIHRoZSBvbmUgZGlzc2Fzc2VtYmxlZCwKICAqIHRoaXMgc2VxdWVuY2UgaXMgYXMgZm9sbG93cyA6CiAgKiAgIC0gZGlzYWJsZXMgaW50ZXJydXB0cwogICogICAtIGluaXRpYWxpemUgU0RSQU0gKHNlbGYgcmVmcmVzaCBSQU0gaW50byBhY3RpdmUgUkFNKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2luY2x1ZGUvbWFjaC9kbWEuaCBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvZG1hLmgKaW5kZXggY2Y2ODEzNi4uYjJiMmE1YiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2luY2x1ZGUvbWFjaC9kbWEuaAorKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0MTAvaW5jbHVkZS9tYWNoL2RtYS5oCkBAIC0xOSw3ICsxOSw3IEBACiAjZGVmaW5lIE1BWF9ETUFfVFJBTlNGRVJfU0laRSAgIDB4MTAwMDAwIC8qIERhdGEgVW5pdCBpcyBoYWxmIHdvcmQgICovCiAKIC8qIFdlIHVzZSBgdmlydHVhbGAgZG1hIGNoYW5uZWxzIHRvIGhpZGUgdGhlIGZhY3Qgd2UgaGF2ZSBvbmx5IGEgbGltaXRlZAotICogbnVtYmVyIG9mIERNQSBjaGFubmVscywgYW5kIG5vdCBvZiBhbGwgb2YgdGhlbSAoZGVwZW5kYW50IG9uIHRoZSBkZXZpY2UpCisgKiBudW1iZXIgb2YgRE1BIGNoYW5uZWxzLCBhbmQgbm90IG9mIGFsbCBvZiB0aGVtIChkZXBlbmRlbnQgb24gdGhlIGRldmljZSkKICAqIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgRE1BIHNvdXJjZS4gV2UgdGhlcmVmb3JlIGxldCB0aGUgRE1BIGNvcmUgaGFuZGxlCiAgKiB0aGUgYWxsb2NhdGlvbiBvZiBoYXJkd2FyZSBjaGFubmVscyB0byBjbGllbnRzLgogKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvcmVncy1tZW0uaCBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9pbmNsdWRlL21hY2gvcmVncy1tZW0uaAppbmRleCA3ZjdjNTI5Li45ODhhNjg2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvaW5jbHVkZS9tYWNoL3JlZ3MtbWVtLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zM2MyNDEwL2luY2x1ZGUvbWFjaC9yZWdzLW1lbS5oCkBAIC0xMDEsNyArMTAxLDcgQEAKICNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1BNQzE2CQkoMHgwMykKIAogLyogYmFuayBjb25maWd1cmF0aW9ucyBmb3IgYmFua3MgMC4uNywgbm90ZSBiYW5rcwotICogNiBhbmQgNyBoYXZlIGRpZmZlcm50IGNvbmZpZ3VyYXRpb25zIGRlcGVuZGluZyBvbgorICogNiBhbmQgNyBoYXZlIGRpZmZlcmVudCBjb25maWd1cmF0aW9ucyBkZXBlbmRpbmcgb24KICAqIHRoZSBtZW1vcnkgdHlwZSBiaXRzICovCiAKICNkZWZpbmUgUzNDMjQxMF9CQU5LQ09OX1RhY3AyCQkoMHgwIDw8IDIpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzI0MTAvbWFjaC1uMzAuYyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLW4zMC5jCmluZGV4IDY2ZjQ0NDQuLjA3OWRjYWEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLW4zMC5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjMjQxMC9tYWNoLW4zMC5jCkBAIC0yNTIsNyArMjUyLDcgQEAKIAkuZGVmX3RyaWdnZXIJPSAiIiwKIH07CiAKLS8qIFRoaXMgaXMgdGhlIGJsdWUgTEVEIG9uIHRoZSBkZXZpY2UuIE9yaWdpbmFseSB1c2VkIHRvIGluZGljYXRlIEdQUyBhY3Rpdml0eQorLyogVGhpcyBpcyB0aGUgYmx1ZSBMRUQgb24gdGhlIGRldmljZS4gT3JpZ2luYWxseSB1c2VkIHRvIGluZGljYXRlIEdQUyBhY3Rpdml0eQogICogYnkgZmxhc2hpbmcuICovCiBzdGF0aWMgc3RydWN0IHMzYzI0eHhfbGVkX3BsYXRkYXRhIG4zNV9ibHVlX2xlZF9wZGF0YSA9IHsKIAkubmFtZQkJPSAiYmx1ZV9sZWQiLApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zM2MyNDQwL21hY2gtbWluaTI0NDAuYyBiL2FyY2gvYXJtL21hY2gtczNjMjQ0MC9tYWNoLW1pbmkyNDQwLmMKaW5kZXggZGZlZGM5Yy4uZGQzMTIwZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2MyNDQwL21hY2gtbWluaTI0NDAuYworKysgYi9hcmNoL2FybS9tYWNoLXMzYzI0NDAvbWFjaC1taW5pMjQ0MC5jCkBAIC0xNTUsNyArMTU1LDcgQEAKIAkgKiB0aGUgc2FtZSB0aW1pbmdzLCBob3dldmVyLCBhbnl0aGluZyBzbWFsbGVyIHRoYW4gMTAyNHg3NjgKIAkgKiB3aWxsIG9ubHkgYmUgZGlzcGxheWVkIGluIHRoZSB0b3AgbGVmdCBjb3JuZXIgb2YgYSAxMDI0eDc2OAogCSAqIFhHQSBvdXRwdXQgdW5sZXNzIHlvdSBhZGQgb3B0aW9uYWwgZGlwIHN3aXRjaGVzIHRvIHRoZSBzaGllbGQuCi0JICogVGhlcmVmb3JlIHRpbWluZ3MgZm9yIG90aGVyIHJlc29sdXRpb25zIGhhdmUgYmVlbiBvbW1pdGVkIGhlcmUuCisJICogVGhlcmVmb3JlIHRpbWluZ3MgZm9yIG90aGVyIHJlc29sdXRpb25zIGhhdmUgYmVlbiBvbWl0dGVkIGhlcmUuCiAJICovCiAJWzJdID0gewogCQlfTENEX0RFQ0xBUkUoCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXMzYzY0eHgvZG1hLmMgYi9hcmNoL2FybS9tYWNoLXMzYzY0eHgvZG1hLmMKaW5kZXggYzM1NTg1Yy4uYjE5NzE3MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zM2M2NHh4L2RtYS5jCisrKyBiL2FyY2gvYXJtL21hY2gtczNjNjR4eC9kbWEuYwpAQCAtMzE1LDcgKzMxNSw3IEBACiAJY2FzZSBTM0MyNDEwX0RNQU9QX0ZMVVNIOgogCQlyZXR1cm4gczNjNjR4eF9kbWFfZmx1c2goY2hhbik7CiAKLQkvKiBiZWxpdmUgUEFVU0UvUkVTVU1FIGFyZSBuby1vcHMgKi8KKwkvKiBiZWxpZXZlIFBBVVNFL1JFU1VNRSBhcmUgbm8tb3BzICovCiAJY2FzZSBTM0MyNDEwX0RNQU9QX1BBVVNFOgogCWNhc2UgUzNDMjQxMF9ETUFPUF9SRVNVTUU6CiAJY2FzZSBTM0MyNDEwX0RNQU9QX1NUQVJURUQ6CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXM1cGMxMDAvaW5jbHVkZS9tYWNoL3JlZ3MtZmIuaCBiL2FyY2gvYXJtL21hY2gtczVwYzEwMC9pbmNsdWRlL21hY2gvcmVncy1mYi5oCmluZGV4IDRiZTRjYzlhLi4wN2FhNGQ2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXM1cGMxMDAvaW5jbHVkZS9tYWNoL3JlZ3MtZmIuaAorKysgYi9hcmNoL2FybS9tYWNoLXM1cGMxMDAvaW5jbHVkZS9tYWNoL3JlZ3MtZmIuaApAQCAtMjksNyArMjksNyBAQAogI2RlZmluZSBXUEFMQ09OX0gJCQkJCSgweDE5YykKICNkZWZpbmUgV1BBTENPTl9MCQkJCQkoMHgxYTApCiAKLS8qIFBhbGxldGUgY29udHJvIGZvciBXUEFMMCBhbmQgV1BBTDEgaXMgdGhlIHNhbWUgYXMgaW4gUzNDNjR4eCwgYnV0CisvKiBQYWxldHRlIGNvbnRyb2wgZm9yIFdQQUwwIGFuZCBXUEFMMSBpcyB0aGUgc2FtZSBhcyBpbiBTM0M2NHh4LCBidXQKICAqIGRpZmZlcmVudCBmb3IgV1BBTDItNAogICovCiAvKiBJbiBXUEFMQ09OX0wgKGFrYSBXUEFMQ09OKSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zNXBjMTAwL3NldHVwLXNkaGNpLmMgYi9hcmNoL2FybS9tYWNoLXM1cGMxMDAvc2V0dXAtc2RoY2kuYwppbmRleCBmMTY5NDZlLi5iZTI1ODc5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXM1cGMxMDAvc2V0dXAtc2RoY2kuYworKysgYi9hcmNoL2FybS9tYWNoLXM1cGMxMDAvc2V0dXAtc2RoY2kuYwpAQCAtNDAsNyArNDAsNyBAQAogewogCXUzMiBjdHJsMiwgY3RybDM7CiAKLQkvKiBkb24ndCBuZWVkIHRvIGFsdGVyIGFueXRoaW5nIGFjb3JkaW5nIHRvIGNhcmQtdHlwZSAqLworCS8qIGRvbid0IG5lZWQgdG8gYWx0ZXIgYW55dGhpbmcgYWNjb3JkaW5nIHRvIGNhcmQtdHlwZSAqLwogCiAJd3JpdGVsKFMzQzY0WFhfU0RIQ0lfQ09OVFJPTDRfRFJJVkVfOW1BLCByICsgUzNDNjRYWF9TREhDSV9DT05UUk9MNCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtczVwdjIxMC9pbmNsdWRlL21hY2gvZ3Bpby5oIGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9ncGlvLmgKaW5kZXggMWY0YjU5NS4uYTVhMWUzMyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9ncGlvLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL2luY2x1ZGUvbWFjaC9ncGlvLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNkZWZpbmUgZ3Bpb19jYW5zbGVlcAlfX2dwaW9fY2Fuc2xlZXAKICNkZWZpbmUgZ3Bpb190b19pcnEJX19ncGlvX3RvX2lycQogCi0vKiBQcmFjdGljYWxseSwgR1BJTyBiYW5rcyB1cHRvIE1QMDMgYXJlIHRoZSBjb25maWd1cmFibGUgZ3BpbyBiYW5rcyAqLworLyogUHJhY3RpY2FsbHksIEdQSU8gYmFua3MgdXAgdG8gTVAwMyBhcmUgdGhlIGNvbmZpZ3VyYWJsZSBncGlvIGJhbmtzICovCiAKIC8qIEdQSU8gYmFuayBzaXplcyAqLwogI2RlZmluZSBTNVBWMjEwX0dQSU9fQTBfTlIJKDgpCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXM1cHYyMTAvc2V0dXAtc2RoY2ktZ3Bpby5jIGIvYXJjaC9hcm0vbWFjaC1zNXB2MjEwL3NldHVwLXNkaGNpLWdwaW8uYwppbmRleCA3NDY3NzdkLi4zZTNhYzA1IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXM1cHYyMTAvc2V0dXAtc2RoY2ktZ3Bpby5jCisrKyBiL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS1ncGlvLmMKQEAgLTMyLDEwICszMiwxMCBAQAogCiAJc3dpdGNoICh3aWR0aCkgewogCWNhc2UgODoKLQkJLyogR1BHMVszOjZdIHNwZWNpYWwtZnVudGlvbiAzICovCisJCS8qIEdQRzFbMzo2XSBzcGVjaWFsLWZ1bmN0aW9uIDMgKi8KIAkJczNjX2dwaW9fY2ZncmFuZ2Vfbm9wdWxsKFM1UFYyMTBfR1BHMSgzKSwgNCwgUzNDX0dQSU9fU0ZOKDMpKTsKIAljYXNlIDQ6Ci0JCS8qIEdQRzBbMzo2XSBzcGVjaWFsLWZ1bnRpb24gMiAqLworCQkvKiBHUEcwWzM6Nl0gc3BlY2lhbC1mdW5jdGlvbiAyICovCiAJCXMzY19ncGlvX2NmZ3JhbmdlX25vcHVsbChTNVBWMjEwX0dQRzAoMyksIDQsIFMzQ19HUElPX1NGTigyKSk7CiAJZGVmYXVsdDoKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXM1cHYyMTAvc2V0dXAtc2RoY2kuYyBiL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS5jCmluZGV4IGMzMmUyMDIuLmE4M2I2YzkgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS5jCisrKyBiL2FyY2gvYXJtL21hY2gtczVwdjIxMC9zZXR1cC1zZGhjaS5jCkBAIC0zOCw3ICszOCw3IEBACiB7CiAJdTMyIGN0cmwyLCBjdHJsMzsKIAotCS8qIGRvbid0IG5lZWQgdG8gYWx0ZXIgYW55dGhpbmcgYWNvcmRpbmcgdG8gY2FyZC10eXBlICovCisJLyogZG9uJ3QgbmVlZCB0byBhbHRlciBhbnl0aGluZyBhY2NvcmRpbmcgdG8gY2FyZC10eXBlICovCiAKIAl3cml0ZWwoUzNDNjRYWF9TREhDSV9DT05UUk9MNF9EUklWRV85bUEsIHIgKyBTM0M2NFhYX1NESENJX0NPTlRST0w0KTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvTWFrZWZpbGUgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9NYWtlZmlsZQppbmRleCBlNjk3NjkxLi40MTI1MmQyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9NYWtlZmlsZQpAQCAtNTAsNyArNTAsNyBAQAogIyBMRURzIHN1cHBvcnQKIG9iai0kKENPTkZJR19MRURTKSArPSAkKGxlZC15KQogCi0jIE1pc2NlbGFuZW91cyBmdW5jdGlvbnMKKyMgTWlzY2VsbGFuZW91cyBmdW5jdGlvbnMKIG9iai0kKENPTkZJR19QTSkJCQkrPSBwbS5vIHNsZWVwLm8KIG9iai0kKENPTkZJR19TQTExMDBfU1NQKQkJKz0gc3NwLm8KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbWFjaC1zYTExMDAvY3B1LXNhMTEwMC5jIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvY3B1LXNhMTEwMC5jCmluZGV4IDA3ZDRlOGIuLmFhYThhY2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2NwdS1zYTExMDAuYworKysgYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9jcHUtc2ExMTAwLmMKQEAgLTY4LDcgKzY4LDcgQEAKICAqIGNsb2NrIGNoYW5nZSBpbiBST00gYW5kIGp1bXAgdG8gdGhhdCBjb2RlIGZyb20gdGhlIGtlcm5lbC4gVGhlIG1haW4KICAqIGRpc2FkdmFudGFnZSBpcyB0aGF0IHRoZSBST00gaGFzIHRvIGJlIG1vZGlmaWVkLCB3aGljaCBpcyBub3QKICAqIHBvc3NpYmxlIG9uIGFsbCBTQS0xMTAwIHBsYXRmb3Jtcy4gQW5vdGhlciBkaXNhZHZhbnRhZ2UgaXMgdGhhdAotICoganVtcGluZyB0byBST00gbWFrZXMgY2xvY2sgc3dpdGNoaW5nIHVuZWNlc3NhcnkgY29tcGxpY2F0ZWQuCisgKiBqdW1waW5nIHRvIFJPTSBtYWtlcyBjbG9jayBzd2l0Y2hpbmcgdW5uZWNlc3NhcnkgY29tcGxpY2F0ZWQuCiAgKgogICogVGhlIGlkZWEgYmVoaW5kIHRoaXMgZHJpdmVyIGlzIHRoYXQgdGhlIG1lbW9yeSBjb25maWd1cmF0aW9uIGNhbiBiZQogICogY2hhbmdlZCB3aGlsZSBydW5uaW5nIGZyb20gRFJBTSAoZXZlbiB3aXRoIGludGVycnVwdHMgdHVybmVkIG9uISkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2luY2x1ZGUvbWFjaC9TQS0xMTAwLmggYi9hcmNoL2FybS9tYWNoLXNhMTEwMC9pbmNsdWRlL21hY2gvU0EtMTEwMC5oCmluZGV4IDRmN2VhMDEuLmJhZTgyOTYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtc2ExMTAwL2luY2x1ZGUvbWFjaC9TQS0xMTAwLmgKKysrIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvaW5jbHVkZS9tYWNoL1NBLTExMDAuaApAQCAtMTc5NCw3ICsxNzk0LDcgQEAKICAgICAgICAgICAgICAgICAJKEREQVJfRGV2UmQgKyBEREFSX0Jyc3Q0ICsgRERBUl8xNkJpdERldiArIFwKICAgICAgICAgICAgICAgICAJIEREQVJfU2VyNFNTUFJjICsgRERBUl9EZXZBZGQgKF9fUFJFRyhTZXI0U1NEUikpKQogCi0jZGVmaW5lIERDU1JfUlVOCTB4MDAwMDAwMDEJLyogRE1BIFJVTmluZyAgICAgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBEQ1NSX1JVTgkweDAwMDAwMDAxCS8qIERNQSBydW5uaW5nICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgRENTUl9JRSAJMHgwMDAwMDAwMgkvKiBETUEgSW50ZXJydXB0IEVuYWJsZSAgICAgICAgICAgICovCiAjZGVmaW5lIERDU1JfRVJST1IJMHgwMDAwMDAwNAkvKiBETUEgRVJST1IgICAgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIERDU1JfRE9ORUEJMHgwMDAwMDAwOAkvKiBET05FIERNQSB0cmFuc2ZlciBidWZmZXIgQSAgICAgICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9qb3JuYWRhNzIwX3NzcC5jIGIvYXJjaC9hcm0vbWFjaC1zYTExMDAvam9ybmFkYTcyMF9zc3AuYwppbmRleCA5ZDQ5MGM2Li5mNTBiMDBiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXNhMTEwMC9qb3JuYWRhNzIwX3NzcC5jCisrKyBiL2FyY2gvYXJtL21hY2gtc2ExMTAwL2pvcm5hZGE3MjBfc3NwLmMKQEAgLTI5LDcgKzI5LDcgQEAKIC8qKgogICogam9ybmFkYV9zc3BfcmV2ZXJzZSAtIHJldmVyc2VzIGlucHV0IGJ5dGUKICAqCi0gKiB3ZSBuZWVkIHRvIHJldmVyc2UgYWxsIGRhdGEgd2UgcmVjaWV2ZSBmcm9tIHRoZSBtY3UgZHVlIHRvIGl0cyBwaHlzaWNhbCBsb2NhdGlvbgorICogd2UgbmVlZCB0byByZXZlcnNlIGFsbCBkYXRhIHdlIHJlY2VpdmUgZnJvbSB0aGUgbWN1IGR1ZSB0byBpdHMgcGh5c2ljYWwgbG9jYXRpb24KICAqIHJldHVybnMgOiAwMTExMDExMSAtPiAxMTEwMTExMAogICovCiB1OCBpbmxpbmUgam9ybmFkYV9zc3BfcmV2ZXJzZSh1OCBieXRlKQpAQCAtMTc5LDcgKzE3OSw3IEBACiAKIHN0YXRpYyBpbnQgam9ybmFkYV9zc3BfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKmRldikKIHsKLQkvKiBOb3RlIHRoYXQgdGhpcyBkb2VzbnQgYWN0dWFsbHkgcmVtb3ZlIHRoZSBkcml2ZXIsIHNpbmNlIHRoZXJlcyBub3RoaW5nIHRvIHJlbW92ZQorCS8qIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgcmVtb3ZlIHRoZSBkcml2ZXIsIHNpbmNlIHRoZXJlcyBub3RoaW5nIHRvIHJlbW92ZQogCSAqIEl0IGp1c3QgbWFrZXMgc3VyZSBldmVyeXRoaW5nIGlzIHR1cm5lZCBvZmYgKi8KIAlHUFNSID0gR1BJT19HUElPMjU7CiAJc3NwX2V4aXQoKTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdGVncmEvZG1hLmMgYi9hcmNoL2FybS9tYWNoLXRlZ3JhL2RtYS5jCmluZGV4IGU5NDVhZTIuLmY0ZWY1ZWIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21hY2gtdGVncmEvZG1hLmMKKysrIGIvYXJjaC9hcm0vbWFjaC10ZWdyYS9kbWEuYwpAQCAtMjIzLDcgKzIyMyw3IEBACiAJICogIC0gQ2hhbmdlIHRoZSBzb3VyY2Ugc2VsZWN0b3IgdG8gaW52YWxpZCB0byBzdG9wIHRoZSBETUEgZnJvbQogCSAqICAgIEZJRk8gdG8gbWVtb3J5LgogCSAqICAtIFJlYWQgdGhlIHN0YXR1cyByZWdpc3RlciB0byBrbm93IHRoZSBudW1iZXIgb2YgcGVuZGluZwotCSAqICAgIGJ5dGVzIHRvIGJlIHRyYW5zZmVyZWQuCisJICogICAgYnl0ZXMgdG8gYmUgdHJhbnNmZXJyZWQuCiAJICogIC0gRmluYWxseSBzdG9wIG9yIHByb2dyYW0gdGhlIERNQSB0byB0aGUgbmV4dCBidWZmZXIgaW4gdGhlCiAJICogICAgbGlzdC4KIAkgKi8KQEAgLTI0NCw3ICsyNDQsNyBAQAogCWlmIChzdGF0dXMgJiBTVEFfQlVTWSkKIAkJcmVxLT5ieXRlc190cmFuc2ZlcnJlZCAtPSB0b190cmFuc2ZlcjsKIAotCS8qIEluIGNvbnRpbm91cyB0cmFuc2ZlciBtb2RlLCBETUEgb25seSB0cmFja3MgdGhlIGNvdW50IG9mIHRoZQorCS8qIEluIGNvbnRpbnVvdXMgdHJhbnNmZXIgbW9kZSwgRE1BIG9ubHkgdHJhY2tzIHRoZSBjb3VudCBvZiB0aGUKIAkgKiBoYWxmIERNQSBidWZmZXIuIFNvLCBpZiB0aGUgRE1BIGFscmVhZHkgZmluaXNoZWQgaGFsZiB0aGUgRE1BCiAJICogdGhlbiBhZGQgdGhlIGhhbGYgYnVmZmVyIHRvIHRoZSBjb21wbGV0ZWQgY291bnQuCiAJICoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdGVncmEvaW5jbHVkZS9tYWNoL2RtYS5oIGIvYXJjaC9hcm0vbWFjaC10ZWdyYS9pbmNsdWRlL21hY2gvZG1hLmgKaW5kZXggMzkwMTFiZC4uZDAxMzJlOCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC10ZWdyYS9pbmNsdWRlL21hY2gvZG1hLmgKKysrIGIvYXJjaC9hcm0vbWFjaC10ZWdyYS9pbmNsdWRlL21hY2gvZG1hLmgKQEAgLTkyLDExICs5MiwxMSBAQAogCS8qICBUaGlzIGlzIGEgY2FsbGVkIGZyb20gdGhlIERNQSBJU1IgY29udGV4dCB3aGVuIHRoZSBETUEgaXMgc3RpbGwgaW4KIAkgKiAgcHJvZ3Jlc3MgYW5kIGlzIGFjdGl2ZWx5IGZpbGxpbmcgc2FtZSBidWZmZXIuCiAJICoKLQkgKiAgSW4gY2FzZSBvZiBjb250aW5vdXMgbW9kZSByZWNlaXZlLCB0aGlzIHRocmVzaG9sZCBpcyAxLzIgdGhlIGJ1ZmZlcgorCSAqICBJbiBjYXNlIG9mIGNvbnRpbnVvdXMgbW9kZSByZWNlaXZlLCB0aGlzIHRocmVzaG9sZCBpcyAxLzIgdGhlIGJ1ZmZlcgogCSAqICBzaXplLiBJbiBvdGhlciBjYXNlcywgdGhpcyB3aWxsIG5vdCBldmVuIGJlIGNhbGxlZCBhcyB0aGVyZSBpcyBubwogCSAqICBoYXJkd2FyZSBzdXBwb3J0IGZvciBpdC4KIAkgKgotCSAqIEluIHRoZSBjYXNlIG9mIGNvbnRpbm91cyBtb2RlIHJlY2VpdmUsIGlmIHRoZXJlIGlzIG5leHQgcmVxIGFscmVhZHkKKwkgKiBJbiB0aGUgY2FzZSBvZiBjb250aW51b3VzIG1vZGUgcmVjZWl2ZSwgaWYgdGhlcmUgaXMgbmV4dCByZXEgYWxyZWFkeQogCSAqIHF1ZXVlZCwgRE1BIHByb2dyYW1zIHRoZSBIVyB0byB1c2UgdGhhdCByZXEgd2hlbiB0aGlzIHJlcSBpcwogCSAqIGNvbXBsZXRlZC4gSWYgdGhlcmUgaXMgbm8gIm5leHQgcmVxIiBxdWV1ZWQsIHRoZW4gRE1BIElTUiBkb2Vzbid0IGRvCiAJICogYW55dGhpbmcgYmVmb3JlIGNhbGxpbmcgdGhpcyBjYWxsYmFjay4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtdTMwMC9jbG9jay5jIGIvYXJjaC9hcm0vbWFjaC11MzAwL2Nsb2NrLmMKaW5kZXggZmFiY2M0OS4uNTUzNWRkMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbWFjaC11MzAwL2Nsb2NrLmMKKysrIGIvYXJjaC9hcm0vbWFjaC11MzAwL2Nsb2NrLmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCXZhbCA9IHJlYWR3KFUzMDBfU1lTQ09OX1ZCQVNFICsgVTMwMF9TWVNDT05fQ0NSKTsKIAl2YWwgJj0gflUzMDBfU1lTQ09OX0NDUl9JMlMwX1VTRV9WQ1hPOwogCXdyaXRldyh2YWwsIFUzMDBfU1lTQ09OX1ZCQVNFICsgVTMwMF9TWVNDT05fQ0NSKTsKLQkvKiBEZWFjdGl2YXRlIFZDWE8gaWYgbm9vbmUgZWxzZSBpcyB1c2luZyBWQ1hPICovCisJLyogRGVhY3RpdmF0ZSBWQ1hPIGlmIG5vIG9uZSBlbHNlIGlzIHVzaW5nIFZDWE8gKi8KIAlpZiAoISh2YWwgJiBVMzAwX1NZU0NPTl9DQ1JfSTJTMV9VU0VfVkNYTykpCiAJCXZhbCAmPSB+VTMwMF9TWVNDT05fQ0NSX1RVUk5fVkNYT19PTjsKIAl3cml0ZXcodmFsLCBVMzAwX1NZU0NPTl9WQkFTRSArIFUzMDBfU1lTQ09OX0NDUik7CkBAIC0yODMsNyArMjgzLDcgQEAKIAl2YWwgPSByZWFkdyhVMzAwX1NZU0NPTl9WQkFTRSArIFUzMDBfU1lTQ09OX0NDUik7CiAJdmFsICY9IH5VMzAwX1NZU0NPTl9DQ1JfSTJTMV9VU0VfVkNYTzsKIAl3cml0ZXcodmFsLCBVMzAwX1NZU0NPTl9WQkFTRSArIFUzMDBfU1lTQ09OX0NDUik7Ci0JLyogRGVhY3RpdmF0ZSBWQ1hPIGlmIG5vb25lIGVsc2UgaXMgdXNpbmcgVkNYTyAqLworCS8qIERlYWN0aXZhdGUgVkNYTyBpZiBubyBvbmUgZWxzZSBpcyB1c2luZyBWQ1hPICovCiAJaWYgKCEodmFsICYgVTMwMF9TWVNDT05fQ0NSX0kyUzBfVVNFX1ZDWE8pKQogCQl2YWwgJj0gflUzMDBfU1lTQ09OX0NDUl9UVVJOX1ZDWE9fT047CiAJd3JpdGV3KHZhbCwgVTMwMF9TWVNDT05fVkJBU0UgKyBVMzAwX1NZU0NPTl9DQ1IpOwpAQCAtNjQ5LDcgKzY0OSw3IEBACiAgKi8KIGxvbmcgY2xrX3JvdW5kX3JhdGUoc3RydWN0IGNsayAqY2xrLCB1bnNpZ25lZCBsb25nIHJhdGUpCiB7Ci0JLyogVE9ETzogZ2V0IGFwcm9wcmlhdGUgc3dpdGNoZXMgZm9yIEVNSUZDTEssIEFIQkNMSyBhbmQgTUNMSyAqLworCS8qIFRPRE86IGdldCBhcHByb3ByaWF0ZSBzd2l0Y2hlcyBmb3IgRU1JRkNMSywgQUhCQ0xLIGFuZCBNQ0xLICovCiAJLyogRWxzZSBkZWZhdWx0IHRvIGZpeGVkIHZhbHVlICovCiAKIAlpZiAoY2xrLT5yb3VuZF9yYXRlKSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXV4NTAwL2JvYXJkLW1vcDUwMC5jIGIvYXJjaC9hcm0vbWFjaC11eDUwMC9ib2FyZC1tb3A1MDAuYwppbmRleCBkYzg3NDZkLi5hZjkxMzc0IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXV4NTAwL2JvYXJkLW1vcDUwMC5jCisrKyBiL2FyY2gvYXJtL21hY2gtdXg1MDAvYm9hcmQtbW9wNTAwLmMKQEAgLTUyLDcgKzUyLDcgQEAKIAkgKiBvbiB2YWx1ZSBwcmVzZW50IGluIEdwaW9TZWwxIHRvIEdwaW9TZWw2IGFuZCBBbHRlcm5hdEZ1bmN0aW9uCiAJICogcmVnaXN0ZXIuIFRoaXMgaXMgdGhlIGFycmF5IG9mIDcgY29uZmlndXJhdGlvbiBzZXR0aW5ncy4KIAkgKiBPbmUgaGFzIHRvIGNvbXBpbGUgdGltZSBkZWNpZGUgdGhlc2Ugc2V0dGluZ3MuIEJlbG93IGlzIHRoZQotCSAqIGV4cGxhaW5hdGlvbiBvZiB0aGVzZSBzZXR0aW5nCisJICogZXhwbGFuYXRpb24gb2YgdGhlc2Ugc2V0dGluZwogCSAqIEdwaW9TZWwxID0gMHgwMCA9PiBQaW5zIEdQSU8xIHRvIEdQSU84IGFyZSBub3QgdXNlZCBhcyBHUElPCiAJICogR3Bpb1NlbDIgPSAweDFFID0+IFBpbnMgR1BJTzEwIHRvIEdQSU8xMyBhcmUgY29uZmlndXJlZCBhcyBHUElPCiAJICogR3Bpb1NlbDMgPSAweDgwID0+IFBpbiBHUElPMjQgaXMgY29uZmlndXJlZCBhcyBHUElPCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tYWNoLXV4NTAwL2luY2x1ZGUvbWFjaC9kYjg1MDAtcmVncy5oIGIvYXJjaC9hcm0vbWFjaC11eDUwMC9pbmNsdWRlL21hY2gvZGI4NTAwLXJlZ3MuaAppbmRleCAwZmVmYjM0Li4xNjY0N2IyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tYWNoLXV4NTAwL2luY2x1ZGUvbWFjaC9kYjg1MDAtcmVncy5oCisrKyBiL2FyY2gvYXJtL21hY2gtdXg1MDAvaW5jbHVkZS9tYWNoL2RiODUwMC1yZWdzLmgKQEAgLTU4LDcgKzU4LDcgQEAKICNkZWZpbmUgVTg1MDBfR1BJTzJfQkFTRQkoVTg1MDBfUEVSMl9CQVNFICsgMHhFMDAwKQogI2RlZmluZSBVODUwMF9HUElPM19CQVNFCShVODUwMF9QRVI1X0JBU0UgKyAweDFFMDAwKQogCi0vKiBwZXI3IGJhc2UgYWRkcmVzc2VzcyAqLworLyogcGVyNyBiYXNlIGFkZHJlc3NlcyAqLwogI2RlZmluZSBVODUwMF9DUl9CQVNFX0VECShVODUwMF9QRVI3X0JBU0VfRUQgKyAweDgwMDApCiAjZGVmaW5lIFU4NTAwX01UVTBfQkFTRV9FRAkoVTg1MDBfUEVSN19CQVNFX0VEICsgMHhhMDAwKQogI2RlZmluZSBVODUwMF9NVFUxX0JBU0VfRUQJKFU4NTAwX1BFUjdfQkFTRV9FRCArIDB4YjAwMCkKQEAgLTY4LDcgKzY4LDcgQEAKICNkZWZpbmUgVTg1MDBfVUFSVDBfQkFTRQkoVTg1MDBfUEVSMV9CQVNFICsgMHgwMDAwKQogI2RlZmluZSBVODUwMF9VQVJUMV9CQVNFCShVODUwMF9QRVIxX0JBU0UgKyAweDEwMDApCiAKLS8qIHBlcjYgYmFzZSBhZGRyZXNzZXNzICovCisvKiBwZXI2IGJhc2UgYWRkcmVzc2VzICovCiAjZGVmaW5lIFU4NTAwX1JOR19CQVNFCQkoVTg1MDBfUEVSNl9CQVNFICsgMHgwMDAwKQogI2RlZmluZSBVODUwMF9QS0FfQkFTRQkJKFU4NTAwX1BFUjZfQkFTRSArIDB4MTAwMCkKICNkZWZpbmUgVTg1MDBfUEtBTV9CQVNFCQkoVTg1MDBfUEVSNl9CQVNFICsgMHgyMDAwKQpAQCAtNzksMTEgKzc5LDExIEBACiAjZGVmaW5lIFU4NTAwX0NSWVBUTzFfQkFTRQkoVTg1MDBfUEVSNl9CQVNFICsgMHhiMDAwKQogI2RlZmluZSBVODUwMF9DTEtSU1Q2X0JBU0UJKFU4NTAwX1BFUjZfQkFTRSArIDB4ZjAwMCkKIAotLyogcGVyNSBiYXNlIGFkZHJlc3Nlc3MgKi8KKy8qIHBlcjUgYmFzZSBhZGRyZXNzZXMgKi8KICNkZWZpbmUgVTg1MDBfVVNCT1RHX0JBU0UJKFU4NTAwX1BFUjVfQkFTRSArIDB4MDAwMDApCiAjZGVmaW5lIFU4NTAwX0NMS1JTVDVfQkFTRQkoVTg1MDBfUEVSNV9CQVNFICsgMHgxZjAwMCkKIAotLyogcGVyNCBiYXNlIGFkZHJlc3Nlc3MgKi8KKy8qIHBlcjQgYmFzZSBhZGRyZXNzZXMgKi8KICNkZWZpbmUgVTg1MDBfQkFDS1VQUkFNMF9CQVNFCShVODUwMF9QRVI0X0JBU0UgKyAweDAwMDAwKQogI2RlZmluZSBVODUwMF9CQUNLVVBSQU0xX0JBU0UJKFU4NTAwX1BFUjRfQkFTRSArIDB4MDEwMDApCiAjZGVmaW5lIFU4NTAwX1JUVDBfQkFTRQkJKFU4NTAwX1BFUjRfQkFTRSArIDB4MDIwMDApCkBAIC0xMDYsNyArMTA2LDcgQEAKICNkZWZpbmUgVTg1MDBfU0RJNV9CQVNFCQkoVTg1MDBfUEVSM19CQVNFICsgMHg4MDAwKQogI2RlZmluZSBVODUwMF9DTEtSU1QzX0JBU0UJKFU4NTAwX1BFUjNfQkFTRSArIDB4ZjAwMCkKIAotLyogcGVyMiBiYXNlIGFkZHJlc3Nlc3MgKi8KKy8qIHBlcjIgYmFzZSBhZGRyZXNzZXMgKi8KICNkZWZpbmUgVTg1MDBfSTJDM19CQVNFCQkoVTg1MDBfUEVSMl9CQVNFICsgMHgwMDAwKQogI2RlZmluZSBVODUwMF9TUEkyX0JBU0UJCShVODUwMF9QRVIyX0JBU0UgKyAweDEwMDApCiAjZGVmaW5lIFU4NTAwX1NQSTFfQkFTRQkJKFU4NTAwX1BFUjJfQkFTRSArIDB4MjAwMCkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2NhY2hlLXY0d2IuUyBiL2FyY2gvYXJtL21tL2NhY2hlLXY0d2IuUwppbmRleCBkMzY0NGRiLi5mNDBjNjk2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9jYWNoZS12NHdiLlMKKysrIGIvYXJjaC9hcm0vbW0vY2FjaGUtdjR3Yi5TCkBAIC0zMiw3ICszMiw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqCiAgKiAgU2l6ZSAgQ2xlYW4gKHRpY2tzKSBEaXJ0eSAodGlja3MpCiAgKiAgIDQwOTYgICAyMSAgMjAgIDIxICAgIDUzICA1NSAgNTQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL2NhY2hlLXY0d3QuUyBiL2FyY2gvYXJtL21tL2NhY2hlLXY0d3QuUwppbmRleCA0OWMyYjY2Li5hN2IyNzZkIDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9jYWNoZS12NHd0LlMKKysrIGIvYXJjaC9hcm0vbW0vY2FjaGUtdjR3dC5TCkBAIC0zNCw3ICszNCw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqCiAgKiAqKiogVGhpcyBuZWVkcyBiZW5jaG1hcmtpbmcKICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vY2FjaGUtdjcuUyBiL2FyY2gvYXJtL21tL2NhY2hlLXY3LlMKaW5kZXggNjEzNmU2OC4uZGMxOGQ4MSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vY2FjaGUtdjcuUworKysgYi9hcmNoL2FybS9tbS9jYWNoZS12Ny5TCkBAIC05Niw3ICs5Niw3IEBACiAgKglGbHVzaCB0aGUgZW50aXJlIGNhY2hlIHN5c3RlbS4KICAqICBUaGUgZGF0YSBjYWNoZSBmbHVzaCBpcyBub3cgYWNoaWV2ZWQgdXNpbmcgYXRvbWljIGNsZWFuIC8gaW52YWxpZGF0ZXMKICAqICB3b3JraW5nIG91dHdhcmRzIGZyb20gTDEgY2FjaGUuIFRoaXMgaXMgZG9uZSB1c2luZyBTZXQvV2F5IGJhc2VkIGNhY2hlCi0gKiAgbWFpbnRhaW5hbmNlIGluc3RydWN0aW9ucy4KKyAqICBtYWludGVuYW5jZSBpbnN0cnVjdGlvbnMuCiAgKiAgVGhlIGluc3RydWN0aW9uIGNhY2hlIGNhbiBzdGlsbCBiZSBpbnZhbGlkYXRlZCBiYWNrIHRvIHRoZSBwb2ludCBvZgogICogIHVuaWZpY2F0aW9uIGluIGEgc2luZ2xlIGluc3RydWN0aW9uLgogICoKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMC5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwLlMKaW5kZXggMjI2ZTNkOC4uNmM0ZTdmZCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwLlMKQEAgLTY0LDcgKzY0LDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICovCiAjZGVmaW5lIENBQ0hFX0RMSU1JVAkzMjc2OAogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjBlLlMgYi9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjBlLlMKaW5kZXggODZkOWMyYy4uNGNlOTQ3YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIwZS5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMGUuUwpAQCAtNjQsNyArNjQsNyBAQAogLyoKICAqIFRoaXMgaXMgdGhlIHNpemUgYXQgd2hpY2ggaXQgYmVjb21lcyBtb3JlIGVmZmljaWVudCB0bwogICogY2xlYW4gdGhlIHdob2xlIGNhY2hlLCByYXRoZXIgdGhhbiB1c2luZyB0aGUgaW5kaXZpZHVhbAotICogY2FjaGUgbGluZSBtYWludGFpbmVuY2UgaW5zdHJ1Y3Rpb25zLgorICogY2FjaGUgbGluZSBtYWludGVuYW5jZSBpbnN0cnVjdGlvbnMuCiAgKi8KICNkZWZpbmUgQ0FDSEVfRExJTUlUCTMyNzY4CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyMi5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIyLlMKaW5kZXggODNkM2RkMy4uYzg4ODRjNSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIyLlMKKysrIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm0xMDIyLlMKQEAgLTUzLDcgKzUzLDcgQEAKIC8qCiAgKiBUaGlzIGlzIHRoZSBzaXplIGF0IHdoaWNoIGl0IGJlY29tZXMgbW9yZSBlZmZpY2llbnQgdG8KICAqIGNsZWFuIHRoZSB3aG9sZSBjYWNoZSwgcmF0aGVyIHRoYW4gdXNpbmcgdGhlIGluZGl2aWR1YWwKLSAqIGNhY2hlIGxpbmUgbWFpbnRhaW5lbmNlIGluc3RydWN0aW9ucy4KKyAqIGNhY2hlIGxpbmUgbWFpbnRlbmFuY2UgaW5zdHJ1Y3Rpb25zLgogICovCiAjZGVmaW5lIENBQ0hFX0RMSU1JVAkzMjc2OAogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTEwMjYuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyNi5TCmluZGV4IDY4NjA0M2UuLjQxMzY4NDYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyNi5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtMTAyNi5TCkBAIC01Myw3ICs1Myw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqLwogI2RlZmluZSBDQUNIRV9ETElNSVQJMzI3NjgKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm03MjAuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtNzIwLlMKaW5kZXggNjY1MjY2ZC4uN2EwNmU1OSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm03MjAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTcyMC5TCkBAIC02Myw3ICs2Myw3IEBACiAvKgogICogRnVuY3Rpb246IGFybTcyMF9wcm9jX2RvX2lkbGUodm9pZCkKICAqIFBhcmFtcyAgOiByMCA9IHVudXNlZAotICogUHVycG9zZSA6IHB1dCB0aGUgcHJvY2Vzc2VyIGluIHByb3BlciBpZGxlIG1vZGUKKyAqIFB1cnBvc2UgOiBwdXQgdGhlIHByb2Nlc3NvciBpbiBwcm9wZXIgaWRsZSBtb2RlCiAgKi8KIEVOVFJZKGNwdV9hcm03MjBfZG9faWRsZSkKIAkJbW92CXBjLCBscgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjAuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIwLlMKaW5kZXggMjE5OTgwZS4uYjQ2ZWIyMSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjAuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTkyMC5TCkBAIC01Myw3ICs1Myw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqLwogI2RlZmluZSBDQUNIRV9ETElNSVQJNjU1MzYKIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjIuUyBiL2FyY2gvYXJtL21tL3Byb2MtYXJtOTIyLlMKaW5kZXggMzYxNTRiMS4uOTViYTFmYyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjIuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTkyMi5TCkBAIC01NCw3ICs1NCw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuICAoSSB0aGluayB0aGlzIHNob3VsZAorICogY2FjaGUgbGluZSBtYWludGVuYW5jZSBpbnN0cnVjdGlvbnMuICAoSSB0aGluayB0aGlzIHNob3VsZAogICogYmUgMzI3NjgpLgogICovCiAjZGVmaW5lIENBQ0hFX0RMSU1JVAk4MTkyCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLWFybTkyNS5TIGIvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjUuUwppbmRleCA4OWM1ZTAwMC4uNTQxZTQ3NyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vbW0vcHJvYy1hcm05MjUuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLWFybTkyNS5TCkBAIC03Nyw3ICs3Nyw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgc2l6ZSBhdCB3aGljaCBpdCBiZWNvbWVzIG1vcmUgZWZmaWNpZW50IHRvCiAgKiBjbGVhbiB0aGUgd2hvbGUgY2FjaGUsIHJhdGhlciB0aGFuIHVzaW5nIHRoZSBpbmRpdmlkdWFsCi0gKiBjYWNoZSBsaW5lIG1haW50YWluZW5jZSBpbnN0cnVjdGlvbnMuCisgKiBjYWNoZSBsaW5lIG1haW50ZW5hbmNlIGluc3RydWN0aW9ucy4KICAqLwogI2RlZmluZSBDQUNIRV9ETElNSVQJODE5MgogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9tbS9wcm9jLW1hY3Jvcy5TIGIvYXJjaC9hcm0vbW0vcHJvYy1tYWNyb3MuUwppbmRleCBlMzJmYTQ5Li4zNDI2MWY5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9tbS9wcm9jLW1hY3Jvcy5TCisrKyBiL2FyY2gvYXJtL21tL3Byb2MtbWFjcm9zLlMKQEAgLTg1LDcgKzg1LDcgQEAKIAogLyoKICAqIFNhbml0eSBjaGVjayB0aGUgUFRFIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjb2RlIGJlbG93IC0gd2hpY2ggbWFrZXMKLSAqIGNlcnRhaW4gYXNzdW1wdGlvbnMgYWJvdXQgaG93IHRoZXNlIGJpdHMgYXJlIGxheWVkIG91dC4KKyAqIGNlcnRhaW4gYXNzdW1wdGlvbnMgYWJvdXQgaG93IHRoZXNlIGJpdHMgYXJlIGxhaWQgb3V0LgogICovCiAjaWZkZWYgQ09ORklHX01NVQogI2lmIExfUFRFX1NIQVJFRCAhPSBQVEVfRVhUX1NIQVJFRApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy12Ni5TIGIvYXJjaC9hcm0vbW0vcHJvYy12Ni5TCmluZGV4IDgzMmI2YmQuLmJmYTBjOWYgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MtdjYuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLXY2LlMKQEAgLTEzMiw3ICsxMzIsNyBAQAogCW1yYwlwMTUsIDAsIHI2LCBjMywgYzAsIDAJQCBEb21haW4gSUQKIAltcmMJcDE1LCAwLCByNywgYzIsIGMwLCAwCUAgVHJhbnNsYXRpb24gdGFibGUgYmFzZSAwCiAJbXJjCXAxNSwgMCwgcjgsIGMyLCBjMCwgMQlAIFRyYW5zbGF0aW9uIHRhYmxlIGJhc2UgMQotCW1yYwlwMTUsIDAsIHI5LCBjMSwgYzAsIDEJQCBhdXhpbGxhcnkgY29udHJvbCByZWdpc3RlcgorCW1yYwlwMTUsIDAsIHI5LCBjMSwgYzAsIDEJQCBhdXhpbGlhcnkgY29udHJvbCByZWdpc3RlcgogCW1yYwlwMTUsIDAsIHIxMCwgYzEsIGMwLCAyCUAgY28tcHJvY2Vzc29yIGFjY2VzcyBjb250cm9sCiAJbXJjCXAxNSwgMCwgcjExLCBjMSwgYzAsIDAJQCBjb250cm9sIHJlZ2lzdGVyCiAJc3RtaWEJcjAsIHtyNCAtIHIxMX0KQEAgLTE1MSw3ICsxNTEsNyBAQAogCW1jcglwMTUsIDAsIHI2LCBjMywgYzAsIDAJQCBEb21haW4gSUQKIAltY3IJcDE1LCAwLCByNywgYzIsIGMwLCAwCUAgVHJhbnNsYXRpb24gdGFibGUgYmFzZSAwCiAJbWNyCXAxNSwgMCwgcjgsIGMyLCBjMCwgMQlAIFRyYW5zbGF0aW9uIHRhYmxlIGJhc2UgMQotCW1jcglwMTUsIDAsIHI5LCBjMSwgYzAsIDEJQCBhdXhpbGxhcnkgY29udHJvbCByZWdpc3RlcgorCW1jcglwMTUsIDAsIHI5LCBjMSwgYzAsIDEJQCBhdXhpbGlhcnkgY29udHJvbCByZWdpc3RlcgogCW1jcglwMTUsIDAsIHIxMCwgYzEsIGMwLCAyCUAgY28tcHJvY2Vzc29yIGFjY2VzcyBjb250cm9sCiAJbWNyCXAxNSwgMCwgaXAsIGMyLCBjMCwgMglAIFRUQiBjb250cm9sIHJlZ2lzdGVyCiAJbWNyCXAxNSwgMCwgaXAsIGM3LCBjNSwgNAlAIElTQgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbW0vcHJvYy12Ny5TIGIvYXJjaC9hcm0vbW0vcHJvYy12Ny5TCmluZGV4IDI2MmZhODguLmMzNTYxOGUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL21tL3Byb2MtdjcuUworKysgYi9hcmNoL2FybS9tbS9wcm9jLXY3LlMKQEAgLTIzNyw3ICsyMzcsNyBAQAogCW1jcglwMTUsIDAsIHI3LCBjMiwgYzAsIDAJQCBUVEIgMAogCW1jcglwMTUsIDAsIHI4LCBjMiwgYzAsIDEJQCBUVEIgMQogCW1jcglwMTUsIDAsIGlwLCBjMiwgYzAsIDIJQCBUVEIgY29udHJvbCByZWdpc3RlcgotCW1jcglwMTUsIDAsIHIxMCwgYzEsIGMwLCAxCUAgQXV4aWxsYXJ5IGNvbnRyb2wgcmVnaXN0ZXIKKwltY3IJcDE1LCAwLCByMTAsIGMxLCBjMCwgMQlAIEF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyCiAJbWNyCXAxNSwgMCwgcjExLCBjMSwgYzAsIDIJQCBDby1wcm9jZXNzb3IgYWNjZXNzIGNvbnRyb2wKIAlsZHIJcjQsID1QUlJSCQlAIFBSUlIKIAlsZHIJcjUsID1OTVJSCQlAIE5NUlIKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtbXhjL2NwdWZyZXEuYyBiL2FyY2gvYXJtL3BsYXQtbXhjL2NwdWZyZXEuYwppbmRleCBjZTgxNDgxLi40MjY4YTJiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW14Yy9jcHVmcmVxLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1teGMvY3B1ZnJlcS5jCkBAIC0xMyw3ICsxMyw3IEBACiAKIC8qCiAgKiBBIGRyaXZlciBmb3IgdGhlIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yIGkuTVhDIENQVWZyZXEgbW9kdWxlLgotICogVGhlIENQVUZSRVEgZHJpdmVyIGlzIGZvciBjb250cm9saW5nIENQVSBmcmVxdWVuY3kuIEl0IGFsbG93cyB5b3UgdG8gY2hhbmdlCisgKiBUaGUgQ1BVRlJFUSBkcml2ZXIgaXMgZm9yIGNvbnRyb2xsaW5nIENQVSBmcmVxdWVuY3kuIEl0IGFsbG93cyB5b3UgdG8gY2hhbmdlCiAgKiB0aGUgQ1BVIGNsb2NrIHNwZWVkIG9uIHRoZSBmbHkuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1teGMvaW5jbHVkZS9tYWNoL2VudHJ5LW1hY3JvLlMgYi9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvZW50cnktbWFjcm8uUwppbmRleCBiZDliYjk3Li4yZTQ5ZTcxIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvZW50cnktbWFjcm8uUworKysgYi9hcmNoL2FybS9wbGF0LW14Yy9pbmNsdWRlL21hY2gvZW50cnktbWFjcm8uUwpAQCAtMzMsOSArMzMsOSBAQAogCS5tYWNybyAgYXJjaF9yZXRfdG9fdXNlciwgdG1wMSwgdG1wMgogCS5lbmRtCiAKLQlAIHRoaXMgbWFjcm8gY2hlY2tzIHdoaWNoIGludGVycnVwdCBvY2N1cmVkCisJQCB0aGlzIG1hY3JvIGNoZWNrcyB3aGljaCBpbnRlcnJ1cHQgb2NjdXJyZWQKIAlAIGFuZCByZXR1cm5zIGl0cyBudW1iZXIgaW4gaXJxbnIKLQlAIGFuZCByZXR1cm5zIGlmIGFuIGludGVycnVwdCBvY2N1cmVkIGluIGlycXN0YXQKKwlAIGFuZCByZXR1cm5zIGlmIGFuIGludGVycnVwdCBvY2N1cnJlZCBpbiBpcnFzdGF0CiAJLm1hY3JvCWdldF9pcnFucl9hbmRfYmFzZSwgaXJxbnIsIGlycXN0YXQsIGJhc2UsIHRtcAogI2lmbmRlZiBDT05GSUdfTVhDX1RaSUMKIAlAIExvYWQgb2Zmc2V0ICYgcHJpb3JpdHkgb2YgdGhlIGhpZ2hlc3QgcHJpb3JpdHkKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtbXhjL2luY2x1ZGUvbWFjaC9teGNfbmFuZC5oIGIvYXJjaC9hcm0vcGxhdC1teGMvaW5jbHVkZS9tYWNoL214Y19uYW5kLmgKaW5kZXggMDRjMGQwNi4uNmJiOTZlZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1teGMvaW5jbHVkZS9tYWNoL214Y19uYW5kLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1teGMvaW5jbHVkZS9tYWNoL214Y19uYW5kLmgKQEAgLTI0LDcgKzI0LDcgQEAKIAogc3RydWN0IG14Y19uYW5kX3BsYXRmb3JtX2RhdGEgewogCXVuc2lnbmVkIGludCB3aWR0aDsJLyogZGF0YSBidXMgd2lkdGggaW4gYnl0ZXMgKi8KLQl1bnNpZ25lZCBpbnQgaHdfZWNjOjE7CS8qIDAgaWYgc3VwcmVzcyBoYXJkd2FyZSBFQ0MgKi8KKwl1bnNpZ25lZCBpbnQgaHdfZWNjOjE7CS8qIDAgaWYgc3VwcHJlc3MgaGFyZHdhcmUgRUNDICovCiAJdW5zaWduZWQgaW50IGZsYXNoX2JidDoxOyAvKiBzZXQgdG8gMSB0byB1c2UgYSBmbGFzaCBiYXNlZCBiYnQgKi8KIAlzdHJ1Y3QgbXRkX3BhcnRpdGlvbiAqcGFydHM7CS8qIHBhcnRpdGlvbiB0YWJsZSAqLwogCWludCBucl9wYXJ0czsJCQkvKiBzaXplIG9mIHBhcnRzICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvZGV2aWNlcy5jIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RldmljZXMuYwppbmRleCA3ZDlmODE1Li5lYTI4Zjk4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvZGV2aWNlcy5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kZXZpY2VzLmMKQEAgLTI4MCw3ICsyODAsNyBAQAogICogQ2xhaW1pbmcgR1BJT3MsIGFuZCBzZXR0aW5nIHRoZWlyIGRpcmVjdGlvbiBhbmQgaW5pdGlhbCB2YWx1ZXMsIGlzIHRoZQogICogcmVzcG9uc2liaWxpdHkgb2YgdGhlIGRldmljZSBkcml2ZXJzLiAgU28gaXMgcmVzcG9uZGluZyB0byBwcm9iZSgpLgogICoKLSAqIEJvYXJkLXNwZWNpZmljIGtub3dsZWdlIGxpa2UgY3JlYXRpbmcgZGV2aWNlcyBvciBwaW4gc2V0dXAgaXMgdG8gYmUKKyAqIEJvYXJkLXNwZWNpZmljIGtub3dsZWRnZSBsaWtlIGNyZWF0aW5nIGRldmljZXMgb3IgcGluIHNldHVwIGlzIHRvIGJlCiAgKiBrZXB0IG91dCBvZiBkcml2ZXJzIGFzIG11Y2ggYXMgcG9zc2libGUuICBJbiBwYXJ0aWN1bGFyLCBwaW4gc2V0dXAKICAqIG1heSBiZSBoYW5kbGVkIGJ5IHRoZSBib290IGxvYWRlciwgYW5kIGRyaXZlcnMgc2hvdWxkIGV4cGVjdCBpdCB3aWxsCiAgKiBub3JtYWxseSBoYXZlIGJlZW4gZG9uZSBieSB0aGUgdGltZSB0aGV5J3JlIHByb2JlZC4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9kbWEuYwppbmRleCAyZWMzYjVkLi5jMjIyMTdjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LW9tYXAvZG1hLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2RtYS5jCkBAIC0xMDE5LDcgKzEwMTksNyBAQAogICogSWYgdGhlIGNoYW5uZWwgaXMgcnVubmluZyB0aGUgY2FsbGVyIG11c3QgZGlzYWJsZSBpbnRlcnJ1cHRzIHByaW9yIGNhbGxpbmcKICAqIHRoaXMgZnVuY3Rpb24gYW5kIHByb2Nlc3MgdGhlIHJldHVybmVkIHZhbHVlIGJlZm9yZSByZS1lbmFibGluZyBpbnRlcnJ1cHQgdG8KICAqIHByZXZlbnQgcmFjZXMgd2l0aCB0aGUgaW50ZXJydXB0IGhhbmRsZXIuIE5vdGUgdGhhdCBpbiBjb250aW51b3VzIG1vZGUgdGhlcmUKLSAqIGlzIGEgY2hhbmNlIGZvciBDU1NBX0wgcmVnaXN0ZXIgb3ZlcmZsb3cgaW5iZXR3ZWVuIHRoZSB0d28gcmVhZHMgcmVzdWx0aW5nCisgKiBpcyBhIGNoYW5jZSBmb3IgQ1NTQV9MIHJlZ2lzdGVyIG92ZXJmbG93IGJldHdlZW4gdGhlIHR3byByZWFkcyByZXN1bHRpbmcKICAqIGluIGluY29ycmVjdCByZXR1cm4gdmFsdWUuCiAgKi8KIGRtYV9hZGRyX3Qgb21hcF9nZXRfZG1hX3NyY19wb3MoaW50IGxjaCkKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAgKiBJZiB0aGUgY2hhbm5lbCBpcyBydW5uaW5nIHRoZSBjYWxsZXIgbXVzdCBkaXNhYmxlIGludGVycnVwdHMgcHJpb3IgY2FsbGluZwogICogdGhpcyBmdW5jdGlvbiBhbmQgcHJvY2VzcyB0aGUgcmV0dXJuZWQgdmFsdWUgYmVmb3JlIHJlLWVuYWJsaW5nIGludGVycnVwdCB0bwogICogcHJldmVudCByYWNlcyB3aXRoIHRoZSBpbnRlcnJ1cHQgaGFuZGxlci4gTm90ZSB0aGF0IGluIGNvbnRpbnVvdXMgbW9kZSB0aGVyZQotICogaXMgYSBjaGFuY2UgZm9yIENEU0FfTCByZWdpc3RlciBvdmVyZmxvdyBpbmJldHdlZW4gdGhlIHR3byByZWFkcyByZXN1bHRpbmcKKyAqIGlzIGEgY2hhbmNlIGZvciBDRFNBX0wgcmVnaXN0ZXIgb3ZlcmZsb3cgYmV0d2VlbiB0aGUgdHdvIHJlYWRzIHJlc3VsdGluZwogICogaW4gaW5jb3JyZWN0IHJldHVybiB2YWx1ZS4KICAqLwogZG1hX2FkZHJfdCBvbWFwX2dldF9kbWFfZHN0X3BvcyhpbnQgbGNoKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncGlvLmggYi9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9wbGF0L2dwaW8uaAppbmRleCBkNmY5ZmEwZi4uY2FjMmU4YSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncGlvLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncGlvLmgKQEAgLTkzLDcgKzkzLDcgQEAKIC8qIFdyYXBwZXJzIGZvciAibmV3IHN0eWxlIiBHUElPIGNhbGxzLCB1c2luZyB0aGUgbmV3IGluZnJhc3RydWN0dXJlCiAgKiB3aGljaCBsZXRzIHVzIHBsdWcgaW4gRlBHQSwgSTJDLCBhbmQgb3RoZXIgaW1wbGVtZW50YXRpb25zLgogICogKgotICogVGhlIG9yaWdpbmFsIE9NQVAtc3BlY2ZpYyBjYWxscyBzaG91bGQgZXZlbnR1YWxseSBiZSByZW1vdmVkLgorICogVGhlIG9yaWdpbmFsIE9NQVAtc3BlY2lmaWMgY2FsbHMgc2hvdWxkIGV2ZW50dWFsbHkgYmUgcmVtb3ZlZC4KICAqLwogCiAjaW5jbHVkZSA8bGludXgvZXJybm8uaD4KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtb21hcC9pbmNsdWRlL3BsYXQvZ3BtYy5oIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncG1jLmgKaW5kZXggMTJiMzE2MS4uMTUyNzkyOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncG1jLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvcGxhdC9ncG1jLmgKQEAgLTkwLDcgKzkwLDcgQEAKIAkJLyogMS1iaXQgZWNjOiBzdG9yZWQgYXQgZW5kIG9mIHNwYXJlIGFyZWEgKi8KIAlPTUFQX0VDQ19IQU1NSU5HX0NPREVfREVGQVVMVCA9IDAsIC8qIERlZmF1bHQsIHMvdyBtZXRob2QgKi8KIAlPTUFQX0VDQ19IQU1NSU5HX0NPREVfSFcsIC8qIGdwbWMgdG8gZGV0ZWN0IHRoZSBlcnJvciAqLwotCQkvKiAxLWJpdCBlY2M6IHN0b3JlZCBhdCBiZWdpbmluZyBvZiBzcGFyZSBhcmVhIGFzIHJvbWNvZGUgKi8KKwkJLyogMS1iaXQgZWNjOiBzdG9yZWQgYXQgYmVnaW5uaW5nIG9mIHNwYXJlIGFyZWEgYXMgcm9tY29kZSAqLwogCU9NQVBfRUNDX0hBTU1JTkdfQ09ERV9IV19ST01DT0RFLCAvKiBncG1jIG1ldGhvZCAmIHJvbWNvZGUgbGF5b3V0ICovCiB9OwogCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LW9tYXAvbWNic3AuYyBiL2FyY2gvYXJtL3BsYXQtb21hcC9tY2JzcC5jCmluZGV4IGQ1OThkOWYuLjU1ODdhY2YgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtb21hcC9tY2JzcC5jCisrKyBiL2FyY2gvYXJtL3BsYXQtb21hcC9tY2JzcC5jCkBAIC0xMTAzLDcgKzExMDMsNyBAQAogCQkvKiByZXNlbmQgKi8KIAkJcmV0dXJuIC0xOwogCX0gZWxzZSB7Ci0JCS8qIHdhaXQgZm9yIHJlY2lldmUgY29uZmlybWF0aW9uICovCisJCS8qIHdhaXQgZm9yIHJlY2VpdmUgY29uZmlybWF0aW9uICovCiAJCWludCBhdHRlbXBzID0gMDsKIAkJd2hpbGUgKCEoTUNCU1BfUkVBRChtY2JzcCwgU1BDUjEpICYgUlJEWSkpIHsKIAkJCWlmIChhdHRlbXBzKysgPiAxMDAwKSB7CmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvbWZwLmggYi9hcmNoL2FybS9wbGF0LXB4YS9pbmNsdWRlL3BsYXQvbWZwLmgKaW5kZXggNzVmNjU2NC4uODllNjhlMCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1weGEvaW5jbHVkZS9wbGF0L21mcC5oCisrKyBiL2FyY2gvYXJtL3BsYXQtcHhhL2luY2x1ZGUvcGxhdC9tZnAuaApAQCAtNDM0LDcgKzQzNCw3IEBACiAgKgogICogbWZwX2luaXRfYWRkcigpIC0gYWNjZXB0cyBhIHRhYmxlIG9mICJtZnBfYWRkcl9tYXAiIHN0cnVjdHVyZSwgd2hpY2gKICAqIHJlcHJlc2VudHMgYSByYW5nZSBvZiBNRlAgcGlucyBmcm9tICJzdGFydCIgdG8gImVuZCIsIHdpdGggdGhlIG9mZnNldAotICogYmVnaW5pbmcgYXQgIm9mZnNldCIsIHRvIGRlZmluZSBhIHNpbmdsZSBwaW4sIGxldCAiZW5kIiA9IC0xLgorICogYmVnaW5uaW5nIGF0ICJvZmZzZXQiLCB0byBkZWZpbmUgYSBzaW5nbGUgcGluLCBsZXQgImVuZCIgPSAtMS4KICAqCiAgKiB1c2UKICAqCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXMzYzI0eHgvTWFrZWZpbGUgYi9hcmNoL2FybS9wbGF0LXMzYzI0eHgvTWFrZWZpbGUKaW5kZXggYzIwNjRjMy4uMDI5MWJkNiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9NYWtlZmlsZQpAQCAtMjMsNyArMjMsNyBAQAogb2JqLSQoQ09ORklHX0NQVV9GUkVRX1MzQzI0WFgpCSs9IGNwdS1mcmVxLm8KIG9iai0kKENPTkZJR19DUFVfRlJFUV9TM0MyNFhYX0RFQlVHRlMpICs9IGNwdS1mcmVxLWRlYnVnZnMubwogCi0jIEFyY2hpdGVjdHVyZSBkZXBlbmRhbnQgYnVpbGRzCisjIEFyY2hpdGVjdHVyZSBkZXBlbmRlbnQgYnVpbGRzCiAKIG9iai0kKENPTkZJR19QTV9TSU1URUMpCQkrPSBwbS1zaW10ZWMubwogb2JqLSQoQ09ORklHX1BNKQkJKz0gcG0ubwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L2NwdS1mcmVxLmMgYi9hcmNoL2FybS9wbGF0LXMzYzI0eHgvY3B1LWZyZXEuYwppbmRleCBlZWE3NWZmLi5iM2QzZDAyIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXMzYzI0eHgvY3B1LWZyZXEuYworKysgYi9hcmNoL2FybS9wbGF0LXMzYzI0eHgvY3B1LWZyZXEuYwpAQCAtNDU1LDcgKzQ1NSw3IEBACiAKIAkvKiB3aGlsc3Qgd2Ugd2lsbCBiZSBjYWxsZWQgbGF0ZXIgb24sIHdlIHRyeSBhbmQgcmUtc2V0IHRoZQogCSAqIGNwdSBmcmVxdWVuY2llcyBhcyBzb29uIGFzIHBvc3NpYmxlIHNvIHRoYXQgd2UgZG8gbm90IGVuZAotCSAqIHVwIHJlc3VtaW5nIGRldmljZXMgYW5kIHRoZW4gaW1tZWRpYXRsZXkgaGF2aW5nIHRvIHJlLXNldAorCSAqIHVwIHJlc3VtaW5nIGRldmljZXMgYW5kIHRoZW4gaW1tZWRpYXRlbHkgaGF2aW5nIHRvIHJlLXNldAogCSAqIGEgbnVtYmVyIG9mIHNldHRpbmdzIG9uY2UgdGhlc2UgZGV2aWNlcyBoYXZlIHJlc3RhcnRlZC4KIAkgKgogCSAqIGFzIGEgbm90ZSwgaXQgaXMgZXhwZWN0ZWQgZGV2aWNlcyBhcmUgbm90IHVzZWQgdW50aWwgdGhleQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L2RtYS5jIGIvYXJjaC9hcm0vcGxhdC1zM2MyNHh4L2RtYS5jCmluZGV4IDZhZDI3NGUuLjI3ZWE4NTIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtczNjMjR4eC9kbWEuYworKysgYi9hcmNoL2FybS9wbGF0LXMzYzI0eHgvZG1hLmMKQEAgLTU1Nyw3ICs1NTcsNyBAQAogCQlicmVhazsKIAogCWNhc2UgUzNDMjQxMF9ETUFMT0FEXzFMT0FERURfMVJVTk5JTkc6Ci0JCS8qIEkgYmVsaXZlIGluIHRoaXMgY2FzZSB3ZSBkbyBub3QgaGF2ZSBhbnl0aGluZyB0byBkbworCQkvKiBJIGJlbGlldmUgaW4gdGhpcyBjYXNlIHdlIGRvIG5vdCBoYXZlIGFueXRoaW5nIHRvIGRvCiAJCSAqIHVudGlsIHRoZSBuZXh0IGJ1ZmZlciBjb21lcyBhbG9uZywgYW5kIHdlIHR1cm4gb2ZmIHRoZQogCQkgKiByZWxvYWQgKi8KIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zNXAvaXJxLWdwaW9pbnQuYyBiL2FyY2gvYXJtL3BsYXQtczVwL2lycS1ncGlvaW50LmMKaW5kZXggNDZkZDA3OC4uY2Q2ZDY3YyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zNXAvaXJxLWdwaW9pbnQuYworKysgYi9hcmNoL2FybS9wbGF0LXM1cC9pcnEtZ3Bpb2ludC5jCkBAIC0yMDgsNyArMjA4LDcgQEAKIAl9CiAKIAkvKgotCSAqIGNoYWluZWQgR1BJTyBpcnEgaGFzIGJlZW4gc3VjZXNzZnVsbHkgcmVnaXN0ZXJlZCwgYWxsb2NhdGUgbmV3IGdwaW8KKwkgKiBjaGFpbmVkIEdQSU8gaXJxIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSByZWdpc3RlcmVkLCBhbGxvY2F0ZSBuZXcgZ3BpbwogCSAqIGludCBncm91cCBhbmQgYXNzaWduIGlycSBudWJtZXJzCiAJICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvY2xvY2suaCBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvY2xvY2suaAppbmRleCA5YTgyYjg4Li45ODNjNTc4IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2Nsb2NrLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9jbG9jay5oCkBAIC0yMSw3ICsyMSw3IEBACiAgKiBAc2V0X3BhcmVudDogc2V0IHRoZSBjbG9jaydzIHBhcmVudCwgc2VlIGNsa19zZXRfcGFyZW50KCkuCiAgKgogICogR3JvdXAgdGhlIGNvbW1vbiBjbG9jayBpbXBsZW1lbnRhdGlvbnMgdG9nZXRoZXIgc28gdGhhdCB3ZQotICogZG9uJ3QgaGF2ZSB0byBrZWVwIHNldHRpbmcgdGhlIHNhbWUgZmllbHMgYWdhaW4uIFdlIGxlYXZlCisgKiBkb24ndCBoYXZlIHRvIGtlZXAgc2V0dGluZyB0aGUgc2FtZSBmaWVsZHMgYWdhaW4uIFdlIGxlYXZlCiAgKiBlbmFibGUgaW4gc3RydWN0IGNsay4KICAqCiAgKiBBZGRpbmcgYW4gZXh0cmEgbGF5ZXIgb2YgaW5kaXJlY3Rpb24gaW50byB0aGUgcHJvY2VzcyBzaG91bGQKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jZmctaGVscGVycy5oIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNmZy1oZWxwZXJzLmgKaW5kZXggNTYwM2RiMC4uM2FkODM4NiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNmZy1oZWxwZXJzLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNmZy1oZWxwZXJzLmgKQEAgLTExNCw3ICsxMTQsNyBAQAogICogb2YgY29udHJvbCBwZXIgR1BJTywgZ2VuZXJhbGx5IGluIHRoZSBmb3JtIG9mOgogICoJMDAwMCA9IElucHV0CiAgKgkwMDAxID0gT3V0cHV0Ci0gKglvdGhlcnMgPSBTcGVjaWFsIGZ1bmN0aW9ucyAoZGVwZW5kYW50IG9uIGJhbmspCisgKglvdGhlcnMgPSBTcGVjaWFsIGZ1bmN0aW9ucyAoZGVwZW5kZW50IG9uIGJhbmspCiAgKgogICogTm90ZSwgc2luY2UgdGhlIGNvZGUgdG8gZGVhbCB3aXRoIHRoZSBjYXNlIHdoZXJlIHRoZXJlIGFyZSB0d28gY29udHJvbAogICogcmVnaXN0ZXJzIGluc3RlYWQgb2Ygb25lLCB3ZSBkbyBub3QgaGF2ZSBhIHNlcGFyYXRlIHNldCBvZiBmdW5jdGlvbnMgZm9yCmRpZmYgLS1naXQgYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLmggYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY2ZnLmgKaW5kZXggNWUwNGZhNi4uMTc2MmRjYiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNmZy5oCisrKyBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jZmcuaApAQCAtMTI1LDcgKzEyNSw3IEBACiAgKgogICogVGhlc2UgdmFsdWVzIGNvbnRyb2wgdGhlIHN0YXRlIG9mIHRoZSB3ZWFrIHB1bGwte3VwLGRvd259IHJlc2lzdG9ycwogICogYXZhaWxhYmxlIG9uIG1vc3QgcGlucyBvbiB0aGUgUzNDIHNlcmllcy4gTm90IGFsbCBjaGlwcyBzdXBwb3J0IGJvdGgKLSAqIHVwIG9yIGRvd24gc2V0dGluZ3MsIGFuZCBpdCBtYXkgYmUgZGVwZW5kYW50IG9uIHRoZSBjaGlwIHRoYXQgaXMgYmVpbmcKKyAqIHVwIG9yIGRvd24gc2V0dGluZ3MsIGFuZCBpdCBtYXkgYmUgZGVwZW5kZW50IG9uIHRoZSBjaGlwIHRoYXQgaXMgYmVpbmcKICAqIHVzZWQgdG8gd2hldGhlciB0aGUgcGFydGljdWxhciBtb2RlIGlzIGF2YWlsYWJsZS4KICAqLwogI2RlZmluZSBTM0NfR1BJT19QVUxMX05PTkUJKChfX2ZvcmNlIHMzY19ncGlvX3B1bGxfdCkweDAwKQpAQCAtMTM4LDcgKzEzOCw3IEBACiAgKiBAcHVsbDogVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBwdWxsIHJlc2lzdG9yLgogICoKICAqIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHB1bGwte3VwLGRvd259IHJlc2lzdG9yIGZvciB0aGUKLSAqIHNwZWNpZmllZCBwaW4uIEl0IHdpbGwgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bGwsIG9yIGEgbmVnYXRpdmUgZXJyb3IKKyAqIHNwZWNpZmllZCBwaW4uIEl0IHdpbGwgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgb3IgYSBuZWdhdGl2ZSBlcnJvcgogICogY29kZSBpZiB0aGUgcGluIGNhbm5vdCBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgcHVsbCBzZXR0aW5nLgogICoKICAqIEBwdWxsIGlzIG9uZSBvZiBTM0NfR1BJT19QVUxMX05PTkUsIFMzQ19HUElPX1BVTExfRE9XTiBvciBTM0NfR1BJT19QVUxMX1VQLgpAQCAtMjAyLDcgKzIwMiw3IEBACiAgKiBAZHJ2c3RyOiBUaGUgbmV3IHZhbHVlIG9mIHRoZSBkcml2ZXIgc3RyZW5ndGgKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIGRyaXZlciBzdHJlbmd0aCB2YWx1ZSBmb3IgdGhlIHNwZWNpZmllZCBwaW4uCi0gKiBJdCB3aWxsIHJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgdGhlIHBpbgorICogSXQgd2lsbCByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgdGhlIHBpbgogICogY2Fubm90IHN1cHBvcnQgdGhlIHJlcXVlc3RlZCBzZXR0aW5nLgogKi8KIGV4dGVybiBpbnQgczVwX2dwaW9fc2V0X2RydnN0cih1bnNpZ25lZCBpbnQgcGluLCBzNXBfZ3Bpb19kcnZzdHJfdCBkcnZzdHIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNvcmUuaCBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvZ3Bpby1jb3JlLmgKaW5kZXggZGFjMzVkMC4uOGNhZDRjZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9ncGlvLWNvcmUuaAorKysgYi9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L2dwaW8tY29yZS5oCkBAIC0xMDgsNyArMTA4LDcgQEAKICAqIG9mIGNvbnRyb2wgcGVyIEdQSU8sIGdlbmVyYWxseSBpbiB0aGUgZm9ybSBvZjoKICAqIDAwMDAgPSBJbnB1dAogICogMDAwMSA9IE91dHB1dAotICogb3RoZXJzID0gU3BlY2lhbCBmdW5jdGlvbnMgKGRlcGVuZGFudCBvbiBiYW5rKQorICogb3RoZXJzID0gU3BlY2lhbCBmdW5jdGlvbnMgKGRlcGVuZGVudCBvbiBiYW5rKQogICoKICAqIE5vdGUsIHNpbmNlIHRoZSBjb2RlIHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVyZSB0aGVyZSBhcmUgdHdvIGNvbnRyb2wKICAqIHJlZ2lzdGVycyBpbnN0ZWFkIG9mIG9uZSwgd2UgZG8gbm90IGhhdmUgYSBzZXBhcmF0ZSBzZXQgb2YgZnVuY3Rpb24KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvc2RoY2kuaCBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9pbmNsdWRlL3BsYXQvc2RoY2kuaAppbmRleCBiMGJkZjE2Li4wNThlMDk2IDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvaW5jbHVkZS9wbGF0L3NkaGNpLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL2luY2x1ZGUvcGxhdC9zZGhjaS5oCkBAIC01Nyw3ICs1Nyw3IEBACiAgKiBAY2ZnX2dwaW86IENvbmZpZ3VyZSB0aGUgR1BJTyBmb3IgYSBzcGVjaWZpYyBjYXJkIGJpdC13aWR0aAogICogQGNmZ19jYXJkOiBDb25maWd1cmUgdGhlIGludGVyZmFjZSBmb3IgYSBzcGVjaWZpYyBjYXJkIGFuZCBzcGVlZC4gVGhpcwogICogICAgICAgICAgICBpcyBuZWNlc3NhcnkgdGhlIGNvbnRyb2xsZXJzIGFuZC9vciBHUElPIGJsb2NrcyByZXF1aXJlIHRoZQotICoJICAgICAgY2hhbmdpbmcgb2YgZHJpdmVyLXN0cmVuZ3RoIGFuZCBvdGhlciBjb250cm9scyBkZXBlbmRhbnQgb24KKyAqCSAgICAgIGNoYW5naW5nIG9mIGRyaXZlci1zdHJlbmd0aCBhbmQgb3RoZXIgY29udHJvbHMgZGVwZW5kZW50IG9uCiAgKgkgICAgICB0aGUgY2FyZCBhbmQgc3BlZWQgb2Ygb3BlcmF0aW9uLgogICoKICAqIEluaXRpYWxpc2F0aW9uIGRhdGEgc3BlY2lmaWMgdG8gZWl0aGVyIHRoZSBtYWNoaW5lIG9yIHRoZSBwbGF0Zm9ybQpAQCAtMTA4LDcgKzEwOCw3IEBACiBleHRlcm4gc3RydWN0IHMzY19zZGhjaV9wbGF0ZGF0YSBzM2NfaHNtbWMyX2RlZl9wbGF0ZGF0YTsKIGV4dGVybiBzdHJ1Y3QgczNjX3NkaGNpX3BsYXRkYXRhIHMzY19oc21tYzNfZGVmX3BsYXRkYXRhOwogCi0vKiBIZWxwZXIgZnVuY3Rpb24gYXZhaWxhYmxpdHkgKi8KKy8qIEhlbHBlciBmdW5jdGlvbiBhdmFpbGFiaWxpdHkgKi8KIAogZXh0ZXJuIHZvaWQgczNjMjQxNl9zZXR1cF9zZGhjaTBfY2ZnX2dwaW8oc3RydWN0IHBsYXRmb3JtX2RldmljZSAqLCBpbnQgdyk7CiBleHRlcm4gdm9pZCBzM2MyNDE2X3NldHVwX3NkaGNpMV9jZmdfZ3BpbyhzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICosIGludCB3KTsKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9zM2MtcGwzMzAuYyBiL2FyY2gvYXJtL3BsYXQtc2Ftc3VuZy9zM2MtcGwzMzAuYwppbmRleCBiNGZmOGQ3Li5mODU2MzhjIDEwMDY0NAotLS0gYS9hcmNoL2FybS9wbGF0LXNhbXN1bmcvczNjLXBsMzMwLmMKKysrIGIvYXJjaC9hcm0vcGxhdC1zYW1zdW5nL3MzYy1wbDMzMC5jCkBAIC02OCw3ICs2OCw3IEBACiAgKiBAcmVxOiBUd28gcmVxdWVzdHMgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgUEwzMzAgZW5naW5lLgogICogQGNhbGxiYWNrX2ZuOiBDYWxsYmFjayBmdW5jdGlvbiB0byB0aGUgY2xpZW50LgogICogQHJxY2ZnOiBDaGFubmVsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB4ZmVycy4KLSAqIEB4ZmVyX2hlYWQ6IFBvaW50ZXIgdG8gdGhlIHhmZXIgdG8gYmUgbmV4dCBleGNlY3V0ZWQuCisgKiBAeGZlcl9oZWFkOiBQb2ludGVyIHRvIHRoZSB4ZmVyIHRvIGJlIG5leHQgZXhlY3V0ZWQuCiAgKiBAZG1hYzogUG9pbnRlciB0byB0aGUgRE1BQyB0aGF0IG1hbmFnZXMgdGhpcyBjaGFubmVsLCBOVUxMIGlmIHRoZQogICogCWNoYW5uZWwgaXMgYXZhaWxhYmxlIHRvIGJlIGFjcXVpcmVkLgogICogQGNsaWVudDogQ2xpZW50IG9mIHRoaXMgY2hhbm5lbC4gTlVMTCBpZiB0aGUKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL3BsYXQtc3BlYXIvaW5jbHVkZS9wbGF0L2Nsb2NrLmggYi9hcmNoL2FybS9wbGF0LXNwZWFyL2luY2x1ZGUvcGxhdC9jbG9jay5oCmluZGV4IDJhZTY2MDYuLmZjYzBkMGEgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL3BsYXQtc3BlYXIvaW5jbHVkZS9wbGF0L2Nsb2NrLmgKKysrIGIvYXJjaC9hcm0vcGxhdC1zcGVhci9pbmNsdWRlL3BsYXQvY2xvY2suaApAQCAtODksNyArODksNyBAQAogICogQHNpYmxpbmc6IG5vZGUgZm9yIGxpc3Qgb2YgY2xvY2tzIGhhdmluZyBzYW1lIHBhcmVudHMKICAqIEBwcml2YXRlX2RhdGE6IGNsb2NrIHNwZWNpZmljIHByaXZhdGUgZGF0YQogICogQG5vZGU6IGxpc3QgdG8gbWFpbnRhaW4gY2xvY2tzIGxpbmVhcmx5Ci0gKiBAY2w6IGNsb2NrbG9vayB1cCBhc3NvaWNhdGVkIHdpdGggdGhpcyBjbG9jaworICogQGNsOiBjbG9ja2xvb2sgdXAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2xvY2sKICAqIEBkZW50OiBvYmplY3QgZm9yIGRlYnVnZnMKICAqLwogc3RydWN0IGNsayB7CmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL0tjb25maWcuZGVidWcgYi9hcmNoL2JsYWNrZmluL0tjb25maWcuZGVidWcKaW5kZXggYWNiODM3OS4uMjY0MTczMSAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9LY29uZmlnLmRlYnVnCisrKyBiL2FyY2gvYmxhY2tmaW4vS2NvbmZpZy5kZWJ1ZwpAQCAtNTksNyArNTksNyBAQAogICAgICAgICAgIGJlIHJlcG9ydGVkIG11bHRpcGxlIGN5Y2xlcyBhZnRlciB0aGUgZXJyb3IgaGFwcGVucy4gVGhpcyBkZWxheQogCSAgY2FuIGNhdXNlIHRoZSB3cm9uZyBhcHBsaWNhdGlvbiwgb3IgZXZlbiB0aGUga2VybmVsIHRvIHJlY2VpdmUgYQogCSAgc2lnbmFsIHRvIGJlIGtpbGxlZC4gSWYgeW91IGFyZSBnZXR0aW5nIEhXIGVycm9ycyBpbiB5b3VyIHN5c3RlbSwKLQkgIHRyeSB0dXJuaW5nIHRoaXMgb24gdG8gZW5zdXJlIHRoZXkgYXJlIGF0IGxlYXN0IGNvbW1pbmcgZnJvbSB0aGUKKwkgIHRyeSB0dXJuaW5nIHRoaXMgb24gdG8gZW5zdXJlIHRoZXkgYXJlIGF0IGxlYXN0IGNvbWluZyBmcm9tIHRoZQogCSAgcHJvcGVyIHRocmVhZC4KIAogCSAgT24gcHJvZHVjdGlvbiBzeXN0ZW1zLCBpdCBpcyBzYWZlIChhbmQgYSBzbWFsbCBvcHRpbWl6YXRpb24pIHRvIHNheSBOLgpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS90cmFwcy5oIGIvYXJjaC9ibGFja2Zpbi9pbmNsdWRlL2FzbS90cmFwcy5oCmluZGV4IDlmZTBkYTYuLjcwYzRlNTEgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vaW5jbHVkZS9hc20vdHJhcHMuaAorKysgYi9hcmNoL2JsYWNrZmluL2luY2x1ZGUvYXNtL3RyYXBzLmgKQEAgLTU3LDcgKzU3LDcgQEAKICNkZWZpbmUgSFdDX3gzKGxldmVsKSBcCiAJIkV4dGVybmFsIE1lbW9yeSBBZGRyZXNzaW5nIEVycm9yXG4iCiAjZGVmaW5lIEVYQ18weDA0KGxldmVsKSBcCi0JIlVuaW1wbG1lbnRlZCBleGNlcHRpb24gb2NjdXJlZFxuIiBcCisJIlVuaW1wbG1lbnRlZCBleGNlcHRpb24gb2NjdXJyZWRcbiIgXAogCWxldmVsICIgLSBNYXliZSB5b3UgZm9yZ290IHRvIGluc3RhbGwgYSBjdXN0b20gZXhjZXB0aW9uIGhhbmRsZXI/XG4iCiAjZGVmaW5lIEhXQ194MTIobGV2ZWwpIFwKIAkiUGVyZm9ybWFuY2UgTW9uaXRvciBPdmVyZmxvd1xuIgpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9rZXJuZWwva2dkYi5jIGIvYXJjaC9ibGFja2Zpbi9rZXJuZWwva2dkYi5jCmluZGV4IGI4Y2ZlMzQuLjliODBiMTUgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4va2VybmVsL2tnZGIuYworKysgYi9hcmNoL2JsYWNrZmluL2tlcm5lbC9rZ2RiLmMKQEAgLTE4MSw3ICsxODEsNyBAQAogCQlyZXR1cm4gLUVOT1NQQzsKIAl9CiAKLQkvKiBCZWNhc3VlIGhhcmR3YXJlIGRhdGEgd2F0Y2hwb2ludCBpbXBlbGVtZW50ZWQgaW4gY3VycmVudAorCS8qIEJlY2F1c2UgaGFyZHdhcmUgZGF0YSB3YXRjaHBvaW50IGltcGVsZW1lbnRlZCBpbiBjdXJyZW50CiAJICogQmxhY2tmaW4gY2FuIG5vdCB0cmlnZ2VyIGFuIGV4Y2VwdGlvbiBldmVudCBhcyB0aGUgaGFyZHdhcmUKIAkgKiBpbnN0cmN0aW9uIHdhdGNocG9pbnQgZG9lcywgd2UgaWduYW9yZSBhbGwgZGF0YSB3YXRjaCBwb2ludCBoZXJlLgogCSAqIFRoZXkgY2FuIGJlIHR1cm5lZCBvbiBlYXNpbHkgYWZ0ZXIgZnV0dXJlIGJsYWNrZmluIGRlc2lnbgpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvYmxhY2tmaW4va2VybmVsL3RyYXBzLmMKaW5kZXggNTljMWRmNy4uNjU1ZjI1ZCAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9rZXJuZWwvdHJhcHMuYworKysgYi9hcmNoL2JsYWNrZmluL2tlcm5lbC90cmFwcy5jCkBAIC05OCw3ICs5OCw3IEBACiAJLyogc2VuZCB0aGUgYXBwcm9wcmlhdGUgc2lnbmFsIHRvIHRoZSB1c2VyIHByb2dyYW0gKi8KIAlzd2l0Y2ggKHRyYXBucikgewogCi0JLyogVGhpcyB0YWJsZSB3b3JrcyBpbiBjb25qdWN0aW9uIHdpdGggdGhlIG9uZSBpbiAuL21hY2gtY29tbW9uL2VudHJ5LlMKKwkvKiBUaGlzIHRhYmxlIHdvcmtzIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIG9uZSBpbiAuL21hY2gtY29tbW9uL2VudHJ5LlMKIAkgKiBTb21lIGV4Y2VwdGlvbnMgYXJlIGhhbmRsZWQgdGhlcmUgKGluIGFzc2VtYmx5LCBpbiBleGNlcHRpb24gc3BhY2UpCiAJICogU29tZSBhcmUgaGFuZGxlZCBoZXJlLCAoaW4gQywgaW4gaW50ZXJydXB0IHNwYWNlKQogCSAqIFNvbWUsIGxpa2UgQ1BMQiwgYXJlIGhhbmRsZWQgaW4gYm90aCwgd2hlcmUgdGhlIG5vcm1hbCBwYXRoIGlzCmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2xpYi9pbnMuUyBiL2FyY2gvYmxhY2tmaW4vbGliL2lucy5TCmluZGV4IDNlZGJkOGQuLjc5Y2FjY2UgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vbGliL2lucy5TCisrKyBiL2FyY2gvYmxhY2tmaW4vbGliL2lucy5TCkBAIC02Nyw3ICs2Nyw3IEBACiAgKiAgLSBETUEgdmVyc2lvbiwgd2hpY2ggZG8gbm90IHN1ZmZlciBmcm9tIHRoaXMgaXNzdWUuIERNQSB2ZXJzaW9ucyBoYXZlCiAgKiAgICAgIGRpZmZlcmVudCBuYW1lIChwcmVmaXhlZCBieSBkbWFfICksIGFuZCBhcmUgbG9jYXRlZCBpbgogICogICAgICAuLi9rZXJuZWwvYmZpbl9kbWFfNXh4LmMKLSAqIFVzaW5nIHRoZSBkbWEgcmVsYXRlZCBmdW5jdGlvbnMgYXJlIHJlY29tbWVuZGVkIGZvciB0cmFuc2ZlcmluZyBsYXJnZQorICogVXNpbmcgdGhlIGRtYSByZWxhdGVkIGZ1bmN0aW9ucyBhcmUgcmVjb21tZW5kZWQgZm9yIHRyYW5zZmVycmluZyBsYXJnZQogICogYnVmZmVycyBpbi9vdXQgb2YgRklGT3MuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9saWIvbWVtbW92ZS5TIGIvYXJjaC9ibGFja2Zpbi9saWIvbWVtbW92ZS5TCmluZGV4IDgwYzI0MGEuLjRlY2E1NjYgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vbGliL21lbW1vdmUuUworKysgYi9hcmNoL2JsYWNrZmluL2xpYi9tZW1tb3ZlLlMKQEAgLTYwLDcgKzYwLDcgQEAKIAlbUDArK10gPSBSMTsKIAogCUNDID0gUDIgPT0gMDsgICAgICAgICAgICAgLyogYW55IHJlbWFpbmluZyBieXRlcz8gKi8KLQlQMyA9IEkwOyAgICAgICAgICAgICAgICAgIC8qIEFtbWVuZCBQMyB0byB1cGRhdGVkIHB0ci4gKi8KKwlQMyA9IEkwOyAgICAgICAgICAgICAgICAgIC8qIEFtZW5kIFAzIHRvIHVwZGF0ZWQgcHRyLiAqLwogCUlGICFDQyBKVU1QIC5MYnl0ZXM7CiAJUDMgPSBJMTsKIAlSVFM7CmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL21hY2gtYmY1MzcvYm9hcmRzL3N0YW1wLmMgYi9hcmNoL2JsYWNrZmluL21hY2gtYmY1MzcvYm9hcmRzL3N0YW1wLmMKaW5kZXggMmM2OTc4NS4uM2ZhMzM1NCAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9tYWNoLWJmNTM3L2JvYXJkcy9zdGFtcC5jCisrKyBiL2FyY2gvYmxhY2tmaW4vbWFjaC1iZjUzNy9ib2FyZHMvc3RhbXAuYwpAQCAtMjUzMCw3ICsyNTMwLDcgQEAKIHN0YXRpYyBzdHJ1Y3QgcGF0YV9wbGF0Zm9ybV9pbmZvIGJmaW5fcGF0YV9wbGF0Zm9ybV9kYXRhID0gewogCS5pb3BvcnRfc2hpZnQgPSAwLAogfTsKLS8qIENvbXBhY3RGbGFzaCBTdG9yYWdlIENhcmQgTWVtb3J5IE1hcHBlZCBBZHJlc3NpbmcKKy8qIENvbXBhY3RGbGFzaCBTdG9yYWdlIENhcmQgTWVtb3J5IE1hcHBlZCBBZGRyZXNzaW5nCiAgKiAvUkVHID0gQTExID0gMQogICovCiBzdGF0aWMgc3RydWN0IHJlc291cmNlIGJmaW5fcGF0YV9yZXNvdXJjZXNbXSA9IHsKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vbWFjaC1jb21tb24vZW50cnkuUyBiL2FyY2gvYmxhY2tmaW4vbWFjaC1jb21tb24vZW50cnkuUwppbmRleCA0NmFiNDU3Li5mOTY5MzNmIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL21hY2gtY29tbW9uL2VudHJ5LlMKKysrIGIvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9lbnRyeS5TCkBAIC0yNjgsNyArMjY4LDcgQEAKIAkvKiBUbyBnZXQgaGVyZSwgd2UganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIGNoYW5nZSBhIENQTEIKIAkgKiBzbywgaGFuZGxlIHRoaW5ncyBpbiB0cmFwX2MgKEMgY29kZSksIGJ5IGxvd2VyaW5nIHRvCiAJICogSVJRNSwganVzdCBsaWtlIHdlIG5vcm1hbGx5IGRvLiBTaW5jZSB0aGlzIGlzIG5vdCBhCi0JICogIm5vcm1hbCIgcmV0dXJuIHBhdGgsIHdlIGhhdmUgYSBkbyBhbG90IG9mIHN0dWZmIHRvCisJICogIm5vcm1hbCIgcmV0dXJuIHBhdGgsIHdlIGhhdmUgYSBkbyBhIGxvdCBvZiBzdHVmZiB0bwogCSAqIHRoZSBzdGFjayB0byBnZXQgcmVhZHkgc28sIHdlIGNhbiBmYWxsIHRocm91Z2ggLSB3ZQogCSAqIG5lZWQgdG8gbWFrZSBhIENQTEIgZXhjZXB0aW9uIGxvb2sgbGlrZSBhIG5vcm1hbCBleGNlcHRpb24KIAkgKi8KQEAgLTgxNyw3ICs4MTcsNyBAQAogCXJldHMgPSBbc3ArK107CiAKIAkvKgotCSAqIFdoZW4gd2UgY29tZSBvdXQgb2YgcmVzdW1lLCByMCBjYXJyaWVzICJvbGQiIHRhc2ssIGJlY3Vhc2Ugd2UgYXJlCisJICogV2hlbiB3ZSBjb21lIG91dCBvZiByZXN1bWUsIHIwIGNhcnJpZXMgIm9sZCIgdGFzaywgYmVjYXVzZSB3ZSBhcmUKIAkgKiBpbiAibmV3IiB0YXNrLgogCSAqLwogCXJ0czsKZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vbWFjaC1jb21tb24vaGVhZC5TIGIvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9oZWFkLlMKaW5kZXggNTgxZTJiMC4uNzZkZTU3MiAxMDA2NDQKLS0tIGEvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9oZWFkLlMKKysrIGIvYXJjaC9ibGFja2Zpbi9tYWNoLWNvbW1vbi9oZWFkLlMKQEAgLTE3NCw3ICsxNzQsNyBAQAogCXNwLmwgPSBsbyhLRVJORUxfQ0xPQ0tfU1RBQ0spOwogCXNwLmggPSBoaShLRVJORUxfQ0xPQ0tfU1RBQ0spOwogCWNhbGwgX2luaXRfY2xvY2tzOwotCXNwID0gdXNwOwkvKiB1c3AgaGFzbnQgYmVlbiB0b3VjaGVkLCBzbyByZXN0b3JlIGZyb20gdGhlcmUgKi8KKwlzcCA9IHVzcDsJLyogdXNwIGhhc24ndCBiZWVuIHRvdWNoZWQsIHNvIHJlc3RvcmUgZnJvbSB0aGVyZSAqLwogI2VuZGlmCiAKIAkvKiBUaGlzIHNlY3Rpb24ga2VlcHMgdGhlIHByb2Nlc3NvciBpbiBzdXBlcnZpc29yIG1vZGUKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9SRUFETUUubW0gYi9hcmNoL2NyaXMvYXJjaC12MTAvUkVBRE1FLm1tCmluZGV4IDUxN2QxZjAuLjY3NzMxZDcgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9SRUFETUUubW0KKysrIGIvYXJjaC9jcmlzL2FyY2gtdjEwL1JFQURNRS5tbQpAQCAtMzgsNyArMzgsNyBAQAogbWFwIGR1cmluZyBrZXJuZWwtbW9kZSwgc28gdGhhdCB0aGUga2VybmVsIGVhc2lseSBjYW4gYWNjZXNzIHRoZSBjb3JyZXNwb25kaW5nCiB1c2VyLW1vZGUgcHJvY2VzcycgZGF0YS4KIAotQXMgYSBjb21wYXJpc2lvbiwgdGhlIExpbnV4L2kzODYgMi4wIHB1dHMgdGhlIGtlcm5lbCBhbmQgcGh5c2ljYWwgUkFNIGF0CitBcyBhIGNvbXBhcmlzb24sIHRoZSBMaW51eC9pMzg2IDIuMCBwdXRzIHRoZSBrZXJuZWwgYW5kIHBoeXNpY2FsIFJBTSBhdAogYWRkcmVzcyAwLCBvdmVybGFwcGluZyB3aXRoIHRoZSB1c2VyLW1vZGUgdmlydHVhbCBzcGFjZSwgc28gdGhhdCBkZXNjcmlwdG9yCiByZWdpc3RlcnMgYXJlIG5lZWRlZCBmb3IgZWFjaCBtZW1vcnkgYWNjZXNzIHRvIHNwZWNpZnkgd2hpY2ggTU1VIHNwYWNlIHRvCiBtYXAgdGhyb3VnaC4gVGhhdCBjaGFuZ2VkIGluIDIuMiwgcHV0dGluZyB0aGUga2VybmVsL3BoeXNpY2FsIFJBTSBhdCAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYxMC9kcml2ZXJzL3N5bmNfc2VyaWFsLmMgYi9hcmNoL2NyaXMvYXJjaC12MTAvZHJpdmVycy9zeW5jX3NlcmlhbC5jCmluZGV4IDM5OWRjMWUuLjg1MDI2NTM3IDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MTAvZHJpdmVycy9zeW5jX3NlcmlhbC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYxMC9kcml2ZXJzL3N5bmNfc2VyaWFsLmMKQEAgLTMxLDcgKzMxLDcgQEAKICNpbmNsdWRlIDxhc20vc3luY19zZXJpYWwuaD4KICNpbmNsdWRlIDxhcmNoL2lvX2ludGVyZmFjZV9tdXguaD4KIAotLyogVGhlIHJlY2VpdmVyIGlzIGEgYml0IHRyaWNreSBiZWFjdXNlIG9mIHRoZSBjb250aW51b3VzIHN0cmVhbSBvZiBkYXRhLiovCisvKiBUaGUgcmVjZWl2ZXIgaXMgYSBiaXQgdHJpY2t5IGJlY2F1c2Ugb2YgdGhlIGNvbnRpbnVvdXMgc3RyZWFtIG9mIGRhdGEuKi8KIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogLyogVGhyZWUgRE1BIGRlc2NyaXB0b3JzIGFyZSBsaW5rZWQgdG9nZXRoZXIuIEVhY2ggRE1BIGRlc2NyaXB0b3IgaXMgICAgICovCiAvKiByZXNwb25zaWJsZSBmb3IgcG9ydC0+YnVmY2h1bmsgb2YgYSBjb21tb24gYnVmZmVyLiAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL2F4aXNmbGFzaG1hcC5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvYXhpc2ZsYXNobWFwLmMKaW5kZXggM2Q3NTEyNS4uN2IxNTVmOCAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvYXhpc2ZsYXNobWFwLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvYXhpc2ZsYXNobWFwLmMKQEAgLTIxNSw3ICsyMTUsNyBAQAogfTsKICNlbmRpZgogCi0vKiBBdXhpbGxpYXJ5IHBhcnRpdGlvbiBpZiB3ZSBmaW5kIGFub3RoZXIgZmxhc2ggKi8KKy8qIEF1eGlsaWFyeSBwYXJ0aXRpb24gaWYgd2UgZmluZCBhbm90aGVyIGZsYXNoICovCiBzdGF0aWMgc3RydWN0IG10ZF9wYXJ0aXRpb24gYXV4X3BhcnRpdGlvbiA9IHsKIAkubmFtZSA9ICJhdXgiLAogCS5zaXplID0gMCwKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL21hY2gtYTMvbmFuZGZsYXNoLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9tYWNoLWEzL25hbmRmbGFzaC5jCmluZGV4IDI1ZDZmMmIuLmY1OGYyYzEgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL21hY2gtYTMvbmFuZGZsYXNoLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvbWFjaC1hMy9uYW5kZmxhc2guYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAJLyogRW5hYmxlIHRoZSBmb2xsb3dpbmcgZm9yIGEgZmxhc2ggYmFzZWQgYmFkIGJsb2NrIHRhYmxlICovCiAJLyogdGhpcy0+b3B0aW9ucyA9IE5BTkRfVVNFX0ZMQVNIX0JCVDsgKi8KIAotCS8qIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZSAqLworCS8qIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZSAqLwogCWlmIChuYW5kX3NjYW4oY3Jpc3YzMl9tdGQsIDEpKSB7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBvdXRfbXRkOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvbWFjaC1mcy9uYW5kZmxhc2guYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL21hY2gtZnMvbmFuZGZsYXNoLmMKaW5kZXggYzVhMGY1NC4uZDViMGNjOSAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvbWFjaC1mcy9uYW5kZmxhc2guYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9tYWNoLWZzL25hbmRmbGFzaC5jCkBAIC0xNTYsNyArMTU2LDcgQEAKIAkvKiBFbmFibGUgdGhlIGZvbGxvd2luZyBmb3IgYSBmbGFzaCBiYXNlZCBiYWQgYmxvY2sgdGFibGUgKi8KIAkvKiB0aGlzLT5vcHRpb25zID0gTkFORF9VU0VfRkxBU0hfQkJUOyAqLwogCi0JLyogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCiAJaWYgKG5hbmRfc2NhbihjcmlzdjMyX210ZCwgMSkpIHsKIAkJZXJyID0gLUVOWElPOwogCQlnb3RvIG91dF9pb3I7CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9zeW5jX3NlcmlhbC5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2RyaXZlcnMvc3luY19zZXJpYWwuYwppbmRleCBjODYzN2E5Li5hNmExODBiIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIvZHJpdmVycy9zeW5jX3NlcmlhbC5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9kcml2ZXJzL3N5bmNfc2VyaWFsLmMKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlIDxhc20vc3luY19zZXJpYWwuaD4KIAogCi0vKiBUaGUgcmVjZWl2ZXIgaXMgYSBiaXQgdHJpY2t5IGJlYWN1c2Ugb2YgdGhlIGNvbnRpbnVvdXMgc3RyZWFtIG9mIGRhdGEuKi8KKy8qIFRoZSByZWNlaXZlciBpcyBhIGJpdCB0cmlja3kgYmVjYXVzZSBvZiB0aGUgY29udGludW91cyBzdHJlYW0gb2YgZGF0YS4qLwogLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAvKiBUaHJlZSBETUEgZGVzY3JpcHRvcnMgYXJlIGxpbmtlZCB0b2dldGhlci4gRWFjaCBETUEgZGVzY3JpcHRvciBpcyAgICAgKi8KIC8qIHJlc3BvbnNpYmxlIGZvciBwb3J0LT5idWZjaHVuayBvZiBhIGNvbW1vbiBidWZmZXIuICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9lbnRyeS5TIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9lbnRyeS5TCmluZGV4IDBlY2I1MGIuLjNhYmYxMmMgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2VudHJ5LlMKQEAgLTE4Miw3ICsxODIsNyBAQAogCW1vdmUuZAkkcjAsIFskc3BdCiAKIAk7OyBUaGUgcmVnaXN0ZXJzIGNhcnJ5aW5nIHBhcmFtZXRlcnMgKFIxMC1SMTMpIGFyZSBpbnRhY3QuIFRoZSBvcHRpb25hbAotCTs7IGZpZnRoIGFuZCBzaXh0aCBwYXJhbWV0ZXJzIGlzIGluIE1PRiBhbmQgU1JQIHJlc3BlY3Rpdmx5LiBQdXQgdGhlbQorCTs7IGZpZnRoIGFuZCBzaXh0aCBwYXJhbWV0ZXJzIGlzIGluIE1PRiBhbmQgU1JQIHJlc3BlY3RpdmVseS4gUHV0IHRoZW0KIAk7OyBiYWNrIG9uIHRoZSBzdGFjay4KIAlzdWJxCTQsICRzcAogCW1vdmUJJHNycCwgWyRzcF0KZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvaXJxLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2lycS5jCmluZGV4IDgwMjMxNzYuLjY4YTFhNTkgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9pcnEuYwpAQCAtMzc0LDcgKzM3NCw3IEBACiAJaXJxX2VudGVyKCk7CiAKIAlmb3IgKGkgPSAwOyBpIDwgTkJSX1JFR1M7IGkrKykgewotCQkvKiBHZXQgd2hpY2ggSVJRcyB0aGF0IGhhcHBlbmQuICovCisJCS8qIEdldCB3aGljaCBJUlFzIHRoYXQgaGFwcGVuZWQuICovCiAJCW1hc2tlZFtpXSA9IFJFR19SRF9JTlRfVkVDVChpbnRyX3ZlY3QsIGlycV9yZWdzW2NwdV0sCiAJCQlyX21hc2tlZF92ZWN0LCBpKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9rZ2RiLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2tnZGIuYwppbmRleCA2YjY1MzMyLi5jMDM0M2MzIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2tnZGIuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL2tnZGIuYwpAQCAtOTI1LDcgKzkyNSw3IEBACiAKIAkJCQkJaWYgKHJlZy5lZGEgPj0gYnBfZF9yZWdzW2JwICogMl0gJiYKIAkJCQkJICAgIHJlZy5lZGEgPD0gYnBfZF9yZWdzW2JwICogMiArIDFdKSB7Ci0JCQkJCQkvKiBFREEgd2l0aGluZyByYW5nZSBmb3IgdGhpcyBCUDsgaXQgbXVzdCBiZSB0aGUgb25lCisJCQkJCQkvKiBFREEgd2l0aGluIHJhbmdlIGZvciB0aGlzIEJQOyBpdCBtdXN0IGJlIHRoZSBvbmUKIAkJCQkJCSAgIHdlJ3JlIGxvb2tpbmcgZm9yLiAqLwogCQkJCQkJc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSByZWcuZWRhOwogCQkJCQkJYnJlYWs7CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3Byb2Nlc3MuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvcHJvY2Vzcy5jCmluZGV4IDU2MmY4NDcuLjA1NzBlOGMgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvcHJvY2Vzcy5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvcHJvY2Vzcy5jCkBAIC0xNDksNyArMTQ5LDcgQEAKICAgICAgICAgY2hpbGRyZWdzLT5yMTAgPSAwOwkvKiBDaGlsZCByZXR1cm5zIDAgYWZ0ZXIgYSBmb3JrL2Nsb25lLiAqLwogCiAJLyogU2V0IGEgbmV3IFRMUyA/Ci0JICogVGhlIFRMUyBpcyBpbiAkbW9mIGJlYWN1c2UgaXQgaXMgdGhlIDV0aCBhcmd1bWVudCB0byBzeXNfY2xvbmUuCisJICogVGhlIFRMUyBpcyBpbiAkbW9mIGJlY2F1c2UgaXQgaXMgdGhlIDV0aCBhcmd1bWVudCB0byBzeXNfY2xvbmUuCiAJICovCiAJaWYgKHAtPm1tICYmIChjbG9uZV9mbGFncyAmIENMT05FX1NFVFRMUykpIHsKIAkJdGFza190aHJlYWRfaW5mbyhwKS0+dGxzID0gcmVncy0+bW9mOwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9rZXJuZWwvc2lnbmFsLmMKaW5kZXggYjNhMDVhZS4uY2U0YWIxYSAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL2tlcm5lbC9zaWduYWwuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIva2VybmVsL3NpZ25hbC5jCkBAIC02MTAsNyArNjEwLDcgQEAKIAkJdXNlcl9yZWdzKHRpKS0+c3BjID0gMDsKIAl9CiAJLyogRklYTUU6IEZpbHRlciBvdXQgZmFsc2UgaC93IGJyZWFrcG9pbnQgaGl0cyAoaS5lLiBFREEKLQkgICBub3Qgd2l0aGluZyBhbnkgY29uZmlndXJlZCBoL3cgYnJlYWtwb2ludCByYW5nZSkuIFN5bmNocm9uaXplIHdpdGgKKwkgICBub3Qgd2l0aGluIGFueSBjb25maWd1cmVkIGgvdyBicmVha3BvaW50IHJhbmdlKS4gU3luY2hyb25pemUgd2l0aAogCSAgIHdoYXQgYWxyZWFkeSBleGlzdHMgZm9yIGtlcm5lbCBkZWJ1Z2dpbmcuICAqLwogCWlmICgoKHVzZXJfcmVncyh0aSktPmV4cyAmIDB4ZmYwMCkgPj4gOCkgPT0gQlJFQUtfOF9JTlRSX1ZFQ1QpIHsKIAkJLyogQnJlYWsgODogc3VidHJhY3QgMiBmcm9tIEVSUCB1bmxlc3MgaW4gYSBkZWxheSBzbG90LiAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2FyY2gtdjMyL21hY2gtYTMvYXJiaXRlci5jIGIvYXJjaC9jcmlzL2FyY2gtdjMyL21hY2gtYTMvYXJiaXRlci5jCmluZGV4IDhiOTI0ZGIuLjE1ZjVjOWQgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9hcmNoLXYzMi9tYWNoLWEzL2FyYml0ZXIuYworKysgYi9hcmNoL2NyaXMvYXJjaC12MzIvbWFjaC1hMy9hcmJpdGVyLmMKQEAgLTU2OCw3ICs1NjgsNyBAQAogCVJFR19XUihtYXJiX2Zvb19icCwgd2F0Y2gtPmluc3RhbmNlLCByd19hY2ssIGFjayk7CiAJUkVHX1dSKG1hcmJfZm9vLCByZWdpX21hcmJfZm9vLCByd19hY2tfaW50ciwgYWNrX2ludHIpOwogCi0JcHJpbnRrKEtFUk5fREVCVUcgIklSUSBvY2N1cmVkIGF0ICVYXG4iLCAodW5zaWduZWQpZ2V0X2lycV9yZWdzKCkpOworCXByaW50ayhLRVJOX0RFQlVHICJJUlEgb2NjdXJyZWQgYXQgJVhcbiIsICh1bnNpZ25lZClnZXRfaXJxX3JlZ3MoKSk7CiAKIAlpZiAod2F0Y2gtPmNiKQogCQl3YXRjaC0+Y2IoKTsKQEAgLTYyNCw3ICs2MjQsNyBAQAogCVJFR19XUihtYXJiX2Jhcl9icCwgd2F0Y2gtPmluc3RhbmNlLCByd19hY2ssIGFjayk7CiAJUkVHX1dSKG1hcmJfYmFyLCByZWdpX21hcmJfYmFyLCByd19hY2tfaW50ciwgYWNrX2ludHIpOwogCi0JcHJpbnRrKEtFUk5fREVCVUcgIklSUSBvY2N1cmVkIGF0ICVYXG4iLCAodW5zaWduZWQpZ2V0X2lycV9yZWdzKCktPmVycCk7CisJcHJpbnRrKEtFUk5fREVCVUcgIklSUSBvY2N1cnJlZCBhdCAlWFxuIiwgKHVuc2lnbmVkKWdldF9pcnFfcmVncygpLT5lcnApOwogCiAJaWYgKHdhdGNoLT5jYikKIAkJd2F0Y2gtPmNiKCk7CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYXJjaC12MzIvbWFjaC1mcy9hcmJpdGVyLmMgYi9hcmNoL2NyaXMvYXJjaC12MzIvbWFjaC1mcy9hcmJpdGVyLmMKaW5kZXggODJlZjI5My4uM2Y4ZWJiNSAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2FyY2gtdjMyL21hY2gtZnMvYXJiaXRlci5jCisrKyBiL2FyY2gvY3Jpcy9hcmNoLXYzMi9tYWNoLWZzL2FyYml0ZXIuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiAJUkVHX1dSKG1hcmJfYnAsIHdhdGNoLT5pbnN0YW5jZSwgcndfYWNrLCBhY2spOwogCVJFR19XUihtYXJiLCByZWdpX21hcmIsIHJ3X2Fja19pbnRyLCBhY2tfaW50cik7CiAKLQlwcmludGsoS0VSTl9JTkZPICJJUlEgb2NjdXJlZCBhdCAlbFhcbiIsIGdldF9pcnFfcmVncygpLT5lcnApOworCXByaW50ayhLRVJOX0lORk8gIklSUSBvY2N1cnJlZCBhdCAlbFhcbiIsIGdldF9pcnFfcmVncygpLT5lcnApOwogCiAJaWYgKHdhdGNoLT5jYikKIAkJd2F0Y2gtPmNiKCk7CmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvYm9vdC9yZXNjdWUvaGVhZF92MTAuUyBiL2FyY2gvY3Jpcy9ib290L3Jlc2N1ZS9oZWFkX3YxMC5TCmluZGV4IDJmYWZlMjQuLmFmNTVkZjAgMTAwNjQ0Ci0tLSBhL2FyY2gvY3Jpcy9ib290L3Jlc2N1ZS9oZWFkX3YxMC5TCisrKyBiL2FyY2gvY3Jpcy9ib290L3Jlc2N1ZS9oZWFkX3YxMC5TCkBAIC03LDcgKzcsNyBAQAogICogZm9yIGVhY2ggcGFydGl0aW9uIHRoYXQgdGhpcyBjb2RlIHNob3VsZCBjaGVjay4KICAqCiAgKiBJZiBhbnkgb2YgdGhlIGNoZWNrc3VtcyBmYWlsLCB3ZSBhc3N1bWUgdGhlIGZsYXNoIGlzIHNvCi0gKiBjb3JydXB0IHRoYXQgd2UgY2FudCB1c2UgaXQgdG8gYm9vdCBpbnRvIHRoZSBmdHAgZmxhc2gKKyAqIGNvcnJ1cHQgdGhhdCB3ZSBjYW4ndCB1c2UgaXQgdG8gYm9vdCBpbnRvIHRoZSBmdHAgZmxhc2gKICAqIGxvYWRlciwgYW5kIGluc3RlYWQgd2UgaW5pdGlhbGl6ZSB0aGUgc2VyaWFsIHBvcnQgdG8KICAqIHJlY2VpdmUgYSBmbGFzaC1sb2FkZXIgYW5kIG5ldyBmbGFzaCBpbWFnZS4gd2UgZG9udCBpbmNsdWRlCiAgKiBhbnkgZmxhc2ggY29kZSBoZXJlLCBidXQganVzdCBhY2NlcHQgYSBjZXJ0YWluIGFtb3VudCBvZgpkaWZmIC0tZ2l0IGEvYXJjaC9jcmlzL2luY2x1ZGUvYXJjaC12MzIvYXJjaC9od3JlZ3MvTWFrZWZpbGUgYi9hcmNoL2NyaXMvaW5jbHVkZS9hcmNoLXYzMi9hcmNoL2h3cmVncy9NYWtlZmlsZQppbmRleCBmOWEwNWQyLi5iOGIzZjhkIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvaW5jbHVkZS9hcmNoLXYzMi9hcmNoL2h3cmVncy9NYWtlZmlsZQorKysgYi9hcmNoL2NyaXMvaW5jbHVkZS9hcmNoLXYzMi9hcmNoL2h3cmVncy9NYWtlZmlsZQpAQCAtMSw2ICsxLDYgQEAKICMgTWFrZWZpbGUgdG8gZ2VuZXJhdGUgb3IgY29weSB0aGUgbGF0ZXN0IHJlZ2lzdGVyIGRlZmluaXRpb25zCiAjIGFuZCByZWxhdGVkIGRhdGFzdHJ1Y3R1cmVzIGFuZCBoZWxwZXJtYWNyb3MuCi0jIFRoZSBvZmZpY2FsIHBsYWNlIGZvciB0aGVzZSBmaWxlcyBpcyBhdDoKKyMgVGhlIG9mZmljaWFsIHBsYWNlIGZvciB0aGVzZSBmaWxlcyBpcyBhdDoKIFJFTEVBU0UgPz0gcjFfYWxmYTUKIE9GRklDSUFMX0lOQ0RJUiA9IC9uL2FzaWMvcHJvamVjdHMvZ3Vpbm5lc3MvcmVsZWFzZXMvJChSRUxFQVNFKS9kZXNpZ24vdG9wL3N3L2luY2x1ZGUvCiAKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9pbmNsdWRlL2FyY2gtdjMyL2FyY2gvaHdyZWdzL2lvcC9NYWtlZmlsZSBiL2FyY2gvY3Jpcy9pbmNsdWRlL2FyY2gtdjMyL2FyY2gvaHdyZWdzL2lvcC9NYWtlZmlsZQppbmRleCBhOTAwNTZhLi4wNzQ3YTIyIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvaW5jbHVkZS9hcmNoLXYzMi9hcmNoL2h3cmVncy9pb3AvTWFrZWZpbGUKKysrIGIvYXJjaC9jcmlzL2luY2x1ZGUvYXJjaC12MzIvYXJjaC9od3JlZ3MvaW9wL01ha2VmaWxlCkBAIC0xLDcgKzEsNyBAQAogIyAkSWQ6IE1ha2VmaWxlLHYgMS4zIDIwMDQvMDEvMDcgMjA6MzQ6NTUgam9oYW5hIEV4cCAkCiAjIE1ha2VmaWxlIHRvIGdlbmVyYXRlIG9yIGNvcHkgdGhlIGxhdGVzdCByZWdpc3RlciBkZWZpbml0aW9ucwogIyBhbmQgcmVsYXRlZCBkYXRhc3RydWN0dXJlcyBhbmQgaGVscGVybWFjcm9zLgotIyBUaGUgb2ZmaWNhbCBwbGFjZSBmb3IgdGhlc2UgZmlsZXMgaXMgcHJvYmFibHkgYXQ6CisjIFRoZSBvZmZpY2lhbCBwbGFjZSBmb3IgdGhlc2UgZmlsZXMgaXMgcHJvYmFibHkgYXQ6CiBSRUxFQVNFID89IHIxX2FsZmE1CiBJT1BPRkZJQ0lBTF9JTkNESVIgPSAvbi9hc2ljL3Byb2plY3RzL2d1aW5uZXNzL3JlbGVhc2VzLyQoUkVMRUFTRSkvZGVzaWduL3RvcC9zdy9pbmNsdWRlLwogCmRpZmYgLS1naXQgYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vcGd0YWJsZS5oIGIvYXJjaC9jcmlzL2luY2x1ZGUvYXNtL3BndGFibGUuaAppbmRleCA5ZWFhZTIxLi43ZGY0MzAxIDEwMDY0NAotLS0gYS9hcmNoL2NyaXMvaW5jbHVkZS9hc20vcGd0YWJsZS5oCisrKyBiL2FyY2gvY3Jpcy9pbmNsdWRlL2FzbS9wZ3RhYmxlLmgKQEAgLTk3LDcgKzk3LDcgQEAKICNkZWZpbmUgcHRlX2NsZWFyKG1tLGFkZHIseHApCWRvIHsgcHRlX3ZhbCgqKHhwKSkgPSAwOyB9IHdoaWxlICgwKQogCiAjZGVmaW5lIHBtZF9ub25lKHgpICAgICAoIXBtZF92YWwoeCkpCi0vKiBieSByZW1vdmluZyB0aGUgX1BBR0VfS0VSTkVMIGJpdCBmcm9tIHRoZSBjb21wYXJpc2lvbiwgdGhlIHNhbWUgcG1kX2JhZAorLyogYnkgcmVtb3ZpbmcgdGhlIF9QQUdFX0tFUk5FTCBiaXQgZnJvbSB0aGUgY29tcGFyaXNvbiwgdGhlIHNhbWUgcG1kX2JhZAogICogd29ya3MgZm9yIGJvdGggX1BBR0VfVEFCTEUgYW5kIF9LRVJOUEdfVEFCTEUgcG1kIGVudHJpZXMuCiAgKi8KICNkZWZpbmUJcG1kX2JhZCh4KQkoKHBtZF92YWwoeCkgJiAoflBBR0VfTUFTSyAmIH5fUEFHRV9LRVJORUwpKSAhPSBfUEFHRV9UQUJMRSkKZGlmZiAtLWdpdCBhL2FyY2gvY3Jpcy9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvY3Jpcy9rZXJuZWwvdHJhcHMuYwppbmRleCA1NDFlZmJmMC4uOGRhNTNmMyAxMDA2NDQKLS0tIGEvYXJjaC9jcmlzL2tlcm5lbC90cmFwcy5jCisrKyBiL2FyY2gvY3Jpcy9rZXJuZWwvdHJhcHMuYwpAQCAtMTgzLDcgKzE4Myw3IEBACiAKIC8qCiAgKiBUaGlzIGdldHMgY2FsbGVkIGZyb20gZW50cnkuUyB3aGVuIHRoZSB3YXRjaGRvZyBoYXMgYml0dGVuLiBTaG93IHNvbWV0aGluZwotICogc2ltaWxpYXIgdG8gYW4gT29wcyBkdW1wLCBhbmQgaWYgdGhlIGtlcm5lbCBpcyBjb25maWd1cmVkIHRvIGJlIGEgbmljZQorICogc2ltaWxhciB0byBhbiBPb3BzIGR1bXAsIGFuZCBpZiB0aGUga2VybmVsIGlzIGNvbmZpZ3VyZWQgdG8gYmUgYSBuaWNlCiAgKiBkb2dneSwgdGhlbiBoYWx0IGluc3RlYWQgb2YgcmVib290LgogICovCiB2b2lkCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9pbmNsdWRlL2FzbS9wY2kuaCBiL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3BjaS5oCmluZGV4IDBkNTk5NzkuLmVmMDNiYWYgMTAwNjQ0Ci0tLSBhL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3BjaS5oCisrKyBiL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3BjaS5oCkBAIC01NCw3ICs1NCw3IEBACiAjZW5kaWYKIAogLyoKLSAqCVRoZXNlIGFyZSBwcmV0dHkgbXVjaCBhcmJpdGFyeSB3aXRoIHRoZSBDb01FTSBpbXBsZW1lbnRhdGlvbi4KKyAqCVRoZXNlIGFyZSBwcmV0dHkgbXVjaCBhcmJpdHJhcnkgd2l0aCB0aGUgQ29NRU0gaW1wbGVtZW50YXRpb24uCiAgKglXZSBoYXZlIHRoZSB3aG9sZSBhZGRyZXNzIHNwYWNlIHRvIG91cnNlbHZlcy4KICAqLwogI2RlZmluZSBQQ0lCSU9TX01JTl9JTwkJMHgxMDAKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3Nwci1yZWdzLmggYi9hcmNoL2Zydi9pbmNsdWRlL2FzbS9zcHItcmVncy5oCmluZGV4IDAxZTZhZjUuLmQzODgzMDIxIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRlL2FzbS9zcHItcmVncy5oCisrKyBiL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3Nwci1yZWdzLmgKQEAgLTI3NCw3ICsyNzQsNyBAQAogI2RlZmluZSBNU1IwX1JECQkJMHhjMDAwMDAwMAkvKiByb3VuZGluZyBtb2RlICovCiAjZGVmaW5lIE1TUjBfUkRfTkVBUkVTVAkJMHgwMDAwMDAwMAkvKiAtIG5lYXJlc3QgKi8KICNkZWZpbmUgTVNSMF9SRF9aRVJPCQkweDQwMDAwMDAwCS8qIC0gemVybyAqLwotI2RlZmluZSBNU1IwX1JEX1BPU19JTkYJCTB4ODAwMDAwMDAJLyogLSBwb3N0aXZlIGluZmluaXR5ICovCisjZGVmaW5lIE1TUjBfUkRfUE9TX0lORgkJMHg4MDAwMDAwMAkvKiAtIHBvc2l0aXZlIGluZmluaXR5ICovCiAjZGVmaW5lIE1TUjBfUkRfTkVHX0lORgkJMHhjMDAwMDAwMAkvKiAtIG5lZ2F0aXZlIGluZmluaXR5ICovCiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL2Zydi9pbmNsdWRlL2FzbS92aXJ0Y29udmVydC5oIGIvYXJjaC9mcnYvaW5jbHVkZS9hc20vdmlydGNvbnZlcnQuaAppbmRleCA1OTc4OGZhLi5iMjZkNzBhIDEwMDY0NAotLS0gYS9hcmNoL2Zydi9pbmNsdWRlL2FzbS92aXJ0Y29udmVydC5oCisrKyBiL2FyY2gvZnJ2L2luY2x1ZGUvYXNtL3ZpcnRjb252ZXJ0LmgKQEAgLTEsNCArMSw0IEBACi0vKiB2aXJ0Y29udmVydC5oOiB2aXJ0dWFsL3BoeXNpY2FsL3BhZ2UgYWRkcmVzcyBjb252ZXJ0aW9uCisvKiB2aXJ0Y29udmVydC5oOiB2aXJ0dWFsL3BoeXNpY2FsL3BhZ2UgYWRkcmVzcyBjb252ZXJzaW9uCiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA0IFJlZCBIYXQsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KICAqIFdyaXR0ZW4gYnkgRGF2aWQgSG93ZWxscyAoZGhvd2VsbHNAcmVkaGF0LmNvbSkKZGlmZiAtLWdpdCBhL2FyY2gvZnJ2L2tlcm5lbC9lbnRyeS10YWJsZS5TIGIvYXJjaC9mcnYva2VybmVsL2VudHJ5LXRhYmxlLlMKaW5kZXggYmYzNWYzMy4uMDZjNWFlMSAxMDA2NDQKLS0tIGEvYXJjaC9mcnYva2VybmVsL2VudHJ5LXRhYmxlLlMKKysrIGIvYXJjaC9mcnYva2VybmVsL2VudHJ5LXRhYmxlLlMKQEAgLTg2LDcgKzg2LDcgQEAKIAkuZ2xvYmwJCV9fYnJlYWtfa2VybmVsdHJhcF9maXh1cF90YWJsZQogX19icmVha19rZXJuZWx0cmFwX2ZpeHVwX3RhYmxlOgogCi0JIyBoYW5kbGVyIGRlY2xhcmF0aW9uIGZvciBhIHNvZndhcmUgb3IgcHJvZ3JhbSBpbnRlcnJ1cHQKKwkjIGhhbmRsZXIgZGVjbGFyYXRpb24gZm9yIGEgc29mdHdhcmUgb3IgcHJvZ3JhbSBpbnRlcnJ1cHQKIC5tYWNybyBWRUNUT1JfU09GVFBST0cgdGJyX3R0LCB2ZWMKIAkuc2VjdGlvbiAudHJhcC51c2VyCiAJLm9yZwkJXHRicl90dApAQCAtMTQ1LDcgKzE0NSw3IEBACiAJLmxvbmcJCVx2ZWMKIC5lbmRtCiAKLQkjIGhhbmRsZXIgZGVjbGFyYXRpb24gZm9yIGFuIE1NVSBvbmx5IHNvZndhcmUgb3IgcHJvZ3JhbSBpbnRlcnJ1cHQKKwkjIGhhbmRsZXIgZGVjbGFyYXRpb24gZm9yIGFuIE1NVSBvbmx5IHNvZnR3YXJlIG9yIHByb2dyYW0gaW50ZXJydXB0CiAubWFjcm8gVkVDVE9SX1NQX01NVSB0YnJfdHQsIHZlYwogI2lmZGVmIENPTkZJR19NTVUKICAJVkVDVE9SX1NPRlRQUk9HCVx0YnJfdHQsIFx2ZWMKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9LY29uZmlnIGIvYXJjaC9pYTY0L0tjb25maWcKaW5kZXggYzRlYTA5Mi4uZTVjYzU2YSAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L0tjb25maWcKKysrIGIvYXJjaC9pYTY0L0tjb25maWcKQEAgLTQxNCwxMSArNDE0LDExIEBACiAJc3VwcG9ydC4gCiAKIGNvbmZpZyBGT1JDRV9DUEVJX1JFVEFSR0VUCi0JYm9vbCAiRm9yY2UgYXNzdW1wdGlvbiB0aGF0IENQRUkgY2FuIGJlIHJlLXRhcmdldHRlZCIKKwlib29sICJGb3JjZSBhc3N1bXB0aW9uIHRoYXQgQ1BFSSBjYW4gYmUgcmUtdGFyZ2V0ZWQiCiAJZGVwZW5kcyBvbiBQRVJNSVRfQlNQX1JFTU9WRQogCWRlZmF1bHQgbgogCS0tLWhlbHAtLS0KLQlTYXkgWSBpZiB5b3UgbmVlZCB0byBmb3JjZSB0aGUgYXNzdW1wdGlvbiB0aGF0IENQRUkgY2FuIGJlIHJlLXRhcmdldHRlZCB0bworCVNheSBZIGlmIHlvdSBuZWVkIHRvIGZvcmNlIHRoZSBhc3N1bXB0aW9uIHRoYXQgQ1BFSSBjYW4gYmUgcmUtdGFyZ2V0ZWQgdG8KIAlhbnkgY3B1IGluIHRoZSBzeXN0ZW0uIFRoaXMgaGludCBpcyBhdmFpbGFibGUgdmlhIEFDUEkgMy4wIHNwZWNpZmljYXRpb25zLgogCVRpZ2VyNCBzeXN0ZW1zIGFyZSBjYXBhYmxlIG9mIHJlLWRpcmVjdGluZyBDUEVJIHRvIGFueSBDUFUgb3RoZXIgdGhhbiBCU1AuCiAJVGhpcyBvcHRpb24gaXQgdXNlZnVsIHRvIGVuYWJsZSB0aGlzIGZlYXR1cmUgb24gb2xkZXIgQklPUydzIGFzIHdlbGwuCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGFsLmggYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGFsLmgKaW5kZXggNmEyOTI1MC4uMmU2OTI4NCAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3BhbC5oCisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9wYWwuaApAQCAtMTY2OSw3ICsxNjY5LDcgQEAKIH0gcGFsX3ZwX2luZm9fdV90OwogCiAvKgotICogUmV0dXJucyBpbmZvbWF0aW9uIGFib3V0IHZpcnR1YWwgcHJvY2Vzc29yIGZlYXR1cmVzCisgKiBSZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHZpcnR1YWwgcHJvY2Vzc29yIGZlYXR1cmVzCiAgKi8KIHN0YXRpYyBpbmxpbmUgczY0CiBpYTY0X3BhbF92cF9pbmZvICh1NjQgZmVhdHVyZV9zZXQsIHU2NCB2cF9idWZmZXIsIHU2NCAqdnBfaW5mbywgdTY0ICp2bW1faWQpCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vcGVyZm1vbl9kZWZhdWx0X3NtcGwuaCBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9wZXJmbW9uX2RlZmF1bHRfc21wbC5oCmluZGV4IDc0NzI0YjIuLmEyZDU2MGMgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9wZXJmbW9uX2RlZmF1bHRfc21wbC5oCisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9wZXJmbW9uX2RlZmF1bHRfc21wbC5oCkBAIC02Nyw4ICs2Nyw4IEBACiAgICAgICAgIHVuc2lnbmVkIGxvbmcgICBpcDsgICAgICAgICAgICAgICAgICAgICAvKiB3aGVyZSBkaWQgdGhlIG92ZXJmbG93IGludGVycnVwdCBoYXBwZW5lZCAgKi8KICAgICAgICAgdW5zaWduZWQgbG9uZyAgIHRzdGFtcDsgICAgICAgICAgICAgICAgIC8qIGFyLml0YyB3aGVuIGVudGVyaW5nIHBlcmZtb24gaW50ci4gaGFuZGxlciAqLwogCi0gICAgICAgIHVuc2lnbmVkIHNob3J0ICBjcHU7ICAgICAgICAgICAgICAgICAgICAvKiBjcHUgb24gd2hpY2ggdGhlIG92ZXJmbG93IG9jY3VyZWQgKi8KLSAgICAgICAgdW5zaWduZWQgc2hvcnQgIHNldDsgICAgICAgICAgICAgICAgICAgIC8qIGV2ZW50IHNldCBhY3RpdmUgd2hlbiBvdmVyZmxvdyBvY3VycmVkICAgKi8KKyAgICAgICAgdW5zaWduZWQgc2hvcnQgIGNwdTsgICAgICAgICAgICAgICAgICAgIC8qIGNwdSBvbiB3aGljaCB0aGUgb3ZlcmZsb3cgb2NjdXJyZWQgKi8KKyAgICAgICAgdW5zaWduZWQgc2hvcnQgIHNldDsgICAgICAgICAgICAgICAgICAgIC8qIGV2ZW50IHNldCBhY3RpdmUgd2hlbiBvdmVyZmxvdyBvY2N1cnJlZCAgICovCiAgICAgICAgIGludCAgICAJCXRnaWQ7ICAgICAgICAgICAgICAJLyogdGhyZWFkIGdyb3VwIGlkIChmb3IgTlBUTCwgdGhpcyBpcyBnZXRwaWQoKSkgKi8KIH0gcGZtX2RlZmF1bHRfc21wbF9lbnRyeV90OwogCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vYnRlLmggYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vYnRlLmgKaW5kZXggOTY3OThkMi4uY2M2YzRkYiAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL2J0ZS5oCisrKyBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9idGUuaApAQCAtMjE2LDcgKzIxNiw3IEBACiAJYnRlX2NvcHkoMCwgZGVzdCwgbGVuLCAoKG1vZGUpIHwgQlRFX1pFUk9fRklMTCksIG5vdGlmaWNhdGlvbikKIAogLyoKLSAqIFRoZSBmb2xsb3dpbmcgaXMgdGhlIHByZWZlcmVkIHdheSBvZiBjYWxsaW5nIGJ0ZV91bmFsaWduZWRfY29weQorICogVGhlIGZvbGxvd2luZyBpcyB0aGUgcHJlZmVycmVkIHdheSBvZiBjYWxsaW5nIGJ0ZV91bmFsaWduZWRfY29weQogICogSWYgdGhlIGNvcHkgaXMgZnVsbHkgY2FjaGUgbGluZSBhbGlnbmVkLCB0aGVuIGJ0ZV9jb3B5IGlzCiAgKiB1c2VkIGluc3RlYWQuICBTaW5jZSBidGVfY29weSBpcyBpbmxpbmVkLCB0aGlzIHNhdmVzIGEgY2FsbAogICogc3RhY2suICBOT1RFOiBidGVfY29weSBpcyBjYWxsZWQgc3luY2hyb25vdXNseSBhbmQgZG9lcyBibG9jawpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL3NodWJfbW1yLmggYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vc2h1Yl9tbXIuaAppbmRleCA3ZGUxZDFkLi5hODRkODcwIDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vc2h1Yl9tbXIuaAorKysgYi9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vc2h1Yl9tbXIuaApAQCAtNDU5LDcgKzQ1OSw3IEBACiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogLyogU29tZSBNTVJzIGFyZSBmdW5jdGlvbmFsbHkgaWRlbnRpY2FsIChvciBjbG9zZSBlbm91Z2gpIG9uIGJvdGggU0hVQjEgKi8KIC8qIGFuZCBTSFVCMiB0aGF0IGl0IG1ha2VzIHNlbnNlIHRvIGRlZmluZSBhIGdlYmVyaWMgbmFtZSBmb3IgdGhlIE1NUi4gICovCi0vKiBJdCBpcyBhY2NlcHRpYmxlIHRvIHVzZSAoZm9yIGV4YW1wbGUpIFNIX0lQSV9JTlQgdG8gcmVmZXJlbmNlIHRoZSAgICAqLworLyogSXQgaXMgYWNjZXB0YWJsZSB0byB1c2UgKGZvciBleGFtcGxlKSBTSF9JUElfSU5UIHRvIHJlZmVyZW5jZSB0aGUgICAgKi8KIC8qIHRoZSBJUEkgTU1SLiBUaGUgdmFsdWUgb2YgU0hfSVBJX0lOVCBpcyBkZXRlcm1pbmVkIGF0IHJ1bnRpbWUgYmFzZWQgICovCiAvKiBvbiB0aGUgdHlwZSBvZiB0aGUgU0hVQi4gRG8gbm90IHVzZSB0aGVzZSAjZGVmaW5lcyBpbiBwZXJmb3JtYW5jZSAgICAqLwogLyogY3JpdGljYWwgY29kZSAgb3IgbG9vcHMgLSB0aGVyZSBpcyBhIHNtYWxsIHBlcmZvcm1hbmNlIHBlbmFsdHkuICAgICAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9zaHViaW8uaCBiL2FyY2gvaWE2NC9pbmNsdWRlL2FzbS9zbi9zaHViaW8uaAppbmRleCA2MDUyNDIyLi5lY2I4YTQ5IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQvaW5jbHVkZS9hc20vc24vc2h1YmlvLmgKKysrIGIvYXJjaC9pYTY0L2luY2x1ZGUvYXNtL3NuL3NodWJpby5oCkBAIC0xMzgzLDcgKzEzODMsNyBAQAogICogcmVzcG9uc2UgaXMgY2FwdHVyZSBpbiBJWFNNIGFuZCBJWFNTLCBhbmQgSVhTU1tWQUxJRF0gaXMgc2V0LiBUaGUgICAgKgogICogZXJyYW50IGhlYWRlciBpcyB0aGVyZWJ5IGNhcHR1cmVkLCBhbmQgbm8gZnVydGhlciBzcHVyaW91cyByZWFkICAgICAgKgogICogcmVzcG9uZXMgYXJlIGNhcHR1cmVkIHVudGlsIElYU1NbVkFMSURdIGlzIGNsZWFyZWQgYnkgc2V0dGluZyB0aGUgICAgKgotICogYXBwcm9wcmlhdGUgYml0IGluIElFQ0xSLkV2ZXJ5dGltZSBhIHNwdXJpb3VzIHJlYWQgcmVzcG9uc2UgaXMgICAgICAgKgorICogYXBwcm9wcmlhdGUgYml0IGluIElFQ0xSLiBFdmVyeSB0aW1lIGEgc3B1cmlvdXMgcmVhZCByZXNwb25zZSBpcyAgICAgKgogICogZGV0ZWN0ZWQsIHRoZSBTUFVSX1JEIGJpdCBvZiB0aGUgUFJCIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGluY29taW5nICAgKgogICogbWVzc2FnZSdzIFNJRE4gZmllbGQgaXMgc2V0LiBUaGlzIGFsd2F5cyBoYXBwZW5zLCByZWdhcmxlc3Mgb2YgICAgICAgKgogICogd2hldGhlciBhIGhlYWRlciBpcyBjYXB0dXJlZC4gVGhlIHByb2dyYW1tZXIgc2hvdWxkIGNoZWNrICAgICAgICAgICAgKgpAQCAtMjczOCw3ICsyNzM4LDcgQEAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCQkJCQkJCQkJKgogICogVGhlIGZvbGxvd2luZyBkZWZpbmVzIHdoaWNoIHdlcmUgbm90IGZvcm1lZCBpbnRvIHN0cnVjdHVyZXMgYXJlCSoKLSAqIHByb2JhYmx5IGluZGVudGljYWwgdG8gYW5vdGhlciByZWdpc3RlciwgYW5kIHRoZSBuYW1lIG9mIHRoZQkJKgorICogcHJvYmFibHkgaWRlbnRpY2FsIHRvIGFub3RoZXIgcmVnaXN0ZXIsIGFuZCB0aGUgbmFtZSBvZiB0aGUJCSoKICAqIHJlZ2lzdGVyIGlzIHByb3ZpZGVkIGFnYWluc3QgZWFjaCBvZiB0aGVzZSByZWdpc3RlcnMuIFRoaXMJCSoKICAqIGluZm9ybWF0aW9uIG5lZWRzIHRvIGJlIGNoZWNrZWQgY2FyZWZ1bGx5CQkJCSoKICAqCQkJCQkJCQkJKgpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9jeWNsb25lLmMgYi9hcmNoL2lhNjQva2VybmVsL2N5Y2xvbmUuYwppbmRleCBkNTJmMWY3Li4xYjgxMWM2IDEwMDY0NAotLS0gYS9hcmNoL2lhNjQva2VybmVsL2N5Y2xvbmUuYworKysgYi9hcmNoL2lhNjQva2VybmVsL2N5Y2xvbmUuYwpAQCAtMzEsNyArMzEsNyBAQAogICAgICAgICAucmF0aW5nICAgICAgICAgPSAzMDAsCiAgICAgICAgIC5yZWFkICAgICAgICAgICA9IHJlYWRfY3ljbG9uZSwKICAgICAgICAgLm1hc2sgICAgICAgICAgID0gKDFMTCA8PCA0MCkgLSAxLAotICAgICAgICAubXVsdCAgICAgICAgICAgPSAwLCAvKnRvIGJlIGNhbHVjbGF0ZWQqLworICAgICAgICAubXVsdCAgICAgICAgICAgPSAwLCAvKnRvIGJlIGNhbGN1bGF0ZWQqLwogICAgICAgICAuc2hpZnQgICAgICAgICAgPSAxNiwKICAgICAgICAgLmZsYWdzICAgICAgICAgID0gQ0xPQ0tfU09VUkNFX0lTX0NPTlRJTlVPVVMsCiB9OwpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC9wZXJmbW9uX2RlZmF1bHRfc21wbC5jIGIvYXJjaC9pYTY0L2tlcm5lbC9wZXJmbW9uX2RlZmF1bHRfc21wbC5jCmluZGV4IDVmNjM3YmIuLjMwYzY0NGUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvcGVyZm1vbl9kZWZhdWx0X3NtcGwuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3BlcmZtb25fZGVmYXVsdF9zbXBsLmMKQEAgLTE1MCw3ICsxNTAsNyBAQAogCSAqIGN1cnJlbnQgPSB0YXNrIHJ1bm5pbmcgYXQgdGhlIHRpbWUgb2YgdGhlIG92ZXJmbG93LgogCSAqCiAJICogcGVyLXRhc2sgbW9kZToKLQkgKiAJLSB0aGlzIGlzIHVzdXNhbGx5IHRoZSB0YXNrIGJlaW5nIG1vbml0b3JlZC4KKwkgKiAJLSB0aGlzIGlzIHVzdWFsbHkgdGhlIHRhc2sgYmVpbmcgbW9uaXRvcmVkLgogCSAqIAkgIFVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgaXQgbWlnaHQgYmUgYSBkaWZmZXJlbnQgdGFzawogCSAqCiAJICogc3lzdGVtLXdpZGU6CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva2VybmVsL3NtcGJvb3QuYyBiL2FyY2gvaWE2NC9rZXJuZWwvc21wYm9vdC5jCmluZGV4IDQ0ZjExZWUuLjE0ZWM2NDEgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvc21wYm9vdC5jCisrKyBiL2FyY2gvaWE2NC9rZXJuZWwvc21wYm9vdC5jCkBAIC03MDMsNyArNzAzLDcgQEAKIAkJCQlkYXRhLT5jaGlwLT5pcnFfZGlzYWJsZShkYXRhKTsKIAkJCQlkYXRhLT5jaGlwLT5pcnFfc2V0X2FmZmluaXR5KGRhdGEsIG1hc2ssIGZhbHNlKTsKIAkJCQlkYXRhLT5jaGlwLT5pcnFfZW5hYmxlKGRhdGEpOwotCQkJCXByaW50ayAoIlJlLXRhcmdldHRpbmcgQ1BFSSB0byBjcHUgJWRcbiIsIG5ld19jcGVpX2NwdSk7CisJCQkJcHJpbnRrICgiUmUtdGFyZ2V0aW5nIENQRUkgdG8gY3B1ICVkXG4iLCBuZXdfY3BlaV9jcHUpOwogCQkJfQogCQl9CiAJCWlmICghZGF0YSkgewpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L2tlcm5lbC90b3BvbG9neS5jIGIvYXJjaC9pYTY0L2tlcm5lbC90b3BvbG9neS5jCmluZGV4IDBiYWExYmIuLjBlMGUwY2MgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rZXJuZWwvdG9wb2xvZ3kuYworKysgYi9hcmNoL2lhNjQva2VybmVsL3RvcG9sb2d5LmMKQEAgLTQzLDcgKzQzLDcgQEAKIHsKICNpZmRlZiBDT05GSUdfQUNQSQogCS8qCi0JICogSWYgQ1BFSSBjYW4gYmUgcmUtdGFyZ2V0dGVkIG9yIGlmIHRoaXMgaXMgbm90CisJICogSWYgQ1BFSSBjYW4gYmUgcmUtdGFyZ2V0ZWQgb3IgaWYgdGhpcyBpcyBub3QKIAkgKiBDUEVJIHRhcmdldCwgdGhlbiBpdCBpcyBob3RwbHVnZ2FibGUKIAkgKi8KIAlpZiAoY2FuX2NwZWlfcmV0YXJnZXQoKSB8fCAhaXNfY3B1X2NwZWlfdGFyZ2V0KG51bSkpCmRpZmYgLS1naXQgYS9hcmNoL2lhNjQva3ZtL3Byb2Nlc3MuYyBiL2FyY2gvaWE2NC9rdm0vcHJvY2Vzcy5jCmluZGV4IGJiODYyZmIuLmIwMzk4NzQgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9rdm0vcHJvY2Vzcy5jCisrKyBiL2FyY2gvaWE2NC9rdm0vcHJvY2Vzcy5jCkBAIC05ODcsNyArOTg3LDcgQEAKIAogc3RhdGljIHZvaWQga3ZtX2RvX3Jlc3VtZV9vcChzdHJ1Y3Qga3ZtX3ZjcHUgKnZjcHUpCiB7Ci0Jdm1tX3Nhbml0eV9jaGVjayh2Y3B1KTsgLypHdWFyYW50ZWUgdmNwdSBydW5pbmcgb24gaGVhbHRoeSB2bW0hKi8KKwl2bW1fc2FuaXR5X2NoZWNrKHZjcHUpOyAvKkd1YXJhbnRlZSB2Y3B1IHJ1bm5pbmcgb24gaGVhbHRoeSB2bW0hKi8KIAogCWlmICh0ZXN0X2FuZF9jbGVhcl9iaXQoS1ZNX1JFUV9SRVNVTUUsICZ2Y3B1LT5yZXF1ZXN0cykpIHsKIAkJdmNwdV9kb19yZXN1bWUodmNwdSk7CmRpZmYgLS1naXQgYS9hcmNoL2lhNjQvbGliL2RvX2NzdW0uUyBiL2FyY2gvaWE2NC9saWIvZG9fY3N1bS5TCmluZGV4IDZiZWMyZmMuLjFhNDMxYTUgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9saWIvZG9fY3N1bS5TCisrKyBiL2FyY2gvaWE2NC9saWIvZG9fY3N1bS5TCkBAIC0yMDEsNyArMjAxLDcgQEAKIAk7OwogKHA2KQlhZGRzIHJlc3VsdDFbMF09MSxyZXN1bHQxWzBdCiAocDkpCWJyLmNvbmQuc3B0ayAuZG9fY3N1bV9leGl0CS8vIGlmIChjb3VudCA9PSAxKSBleGl0Ci0JLy8gRmFsbCB0aHJvdWdoIHRvIGNhbHVjdWxhdGUgdGhlIGNoZWNrc3VtLCBmZWVkaW5nIHJlc3VsdDFbMF0gYXMKKwkvLyBGYWxsIHRocm91Z2ggdG8gY2FsY3VsYXRlIHRoZSBjaGVja3N1bSwgZmVlZGluZyByZXN1bHQxWzBdIGFzCiAJLy8gdGhlIGluaXRpYWwgdmFsdWUgaW4gcmVzdWx0MVswXS4KIAkvLwogCS8vIENhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gbG9hZGluZyB0d28gOC1ieXRlIHdvcmRzIHBlciBsb29wLgpkaWZmIC0tZ2l0IGEvYXJjaC9pYTY0L3NuL2tlcm5lbC9pcnEuYyBiL2FyY2gvaWE2NC9zbi9rZXJuZWwvaXJxLmMKaW5kZXggMTM5YzAxOC4uODFhMWY0ZSAxMDA2NDQKLS0tIGEvYXJjaC9pYTY0L3NuL2tlcm5lbC9pcnEuYworKysgYi9hcmNoL2lhNjQvc24va2VybmVsL2lycS5jCkBAIC0yMjcsNyArMjI3LDcgQEAKIHsKICAgICAgICAgLyoKICAgICAgICAgICogT24gc3lzdGVtcyB3aGljaCBzdXBwb3J0IENQVSBkaXNhYmxpbmcgKFNIdWIyKSwgYWxsIGVycm9yIGludGVycnVwdHMKLSAgICAgICAgICogYXJlIHRhcmdldHRlZCBhdCB0aGUgYm9vdCBDUFUuCisgICAgICAgICAqIGFyZSB0YXJnZXRlZCBhdCB0aGUgYm9vdCBDUFUuCiAgICAgICAgICAqLwogICAgICAgICBpZiAoaXNfc2h1YjIoKSAmJiBzbl9wcm9tX2ZlYXR1cmVfYXZhaWxhYmxlKFBSRl9DUFVfRElTQUJMRV9TVVBQT1JUKSkKICAgICAgICAgICAgICAgICBzZXRfaXJxX2FmZmluaXR5X2luZm8oaXJxLCBjcHVfcGh5c2ljYWxfaWQoMCksIDApOwpAQCAtNDM1LDcgKzQzNSw3IEBACiAJLyoKIAkgKiBCcmlkZ2UgdHlwZXMgYXR0YWNoZWQgdG8gVElPIChhbnl0aGluZyBidXQgUElDKSBkbyBub3QgbmVlZCB0aGlzIFdBUgogCSAqIHNpbmNlIHRoZXkgZG8gbm90IHRhcmdldCBTaHViIElJIGludGVycnVwdCByZWdpc3RlcnMuICBJZiB0aGF0Ci0JICogZXZlciBjaGFuZ2VzLCB0aGlzIGNoZWNrIG5lZWRzIHRvIGFjY29tb2RhdGUuCisJICogZXZlciBjaGFuZ2VzLCB0aGlzIGNoZWNrIG5lZWRzIHRvIGFjY29tbW9kYXRlLgogCSAqLwogCWlmIChzbl9pcnFfaW5mby0+aXJxX2JyaWRnZV90eXBlICE9IFBDSUlPX0FTSUNfVFlQRV9QSUMpCiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2FyY2gvaWE2NC9zbi9wY2kvcGNpYnIvcGNpYnJfZG1hLmMgYi9hcmNoL2lhNjQvc24vcGNpL3BjaWJyL3BjaWJyX2RtYS5jCmluZGV4IGM2NTlhZDUuLjMzZGVmNjYgMTAwNjQ0Ci0tLSBhL2FyY2gvaWE2NC9zbi9wY2kvcGNpYnIvcGNpYnJfZG1hLmMKKysrIGIvYXJjaC9pYTY0L3NuL3BjaS9wY2lici9wY2licl9kbWEuYwpAQCAtMjI3LDcgKzIyNyw3IEBACiAgKiBhZnRlciBkb2luZyB0aGUgcmVhZC4gIEZvciBQSUMgdGhpcyByb3V0aW5lIHRoZW4gZm9yY2VzIGEgZmFrZSBpbnRlcnJ1cHQKICAqIG9uIGFub3RoZXIgbGluZSwgd2hpY2ggaXMgbG9naWNhbGx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgc2xvdCB0aGF0IHRoZSBQSU8KICAqIGlzIGFkZHJlc3NlZCB0by4gIEl0IHRoZW4gc3BpbnMgd2hpbGUgd2F0Y2hpbmcgdGhlIG1lbW9yeSBsb2NhdGlvbiB0aGF0Ci0gKiB0aGUgaW50ZXJydXB0IGlzIHRhcmdldHRlZCB0by4gIFdoZW4gdGhlIGludGVycnVwdCByZXNwb25zZSBhcnJpdmVzLCB3ZSAKKyAqIHRoZSBpbnRlcnJ1cHQgaXMgdGFyZ2V0ZWQgdG8uICBXaGVuIHRoZSBpbnRlcnJ1cHQgcmVzcG9uc2UgYXJyaXZlcywgd2UgCiAgKiBhcmUgc3VyZSB0aGF0IHRoZSBETUEgaGFzIGxhbmRlZCBpbiBtZW1vcnkgYW5kIGl0IGlzIHNhZmUgZm9yIHRoZSBkcml2ZXIKICAqIHRvIHByb2NlZWQuCUZvciBUSU9DUCB1c2UgdGhlIERldmljZSh4KSBXcml0ZSBSZXF1ZXN0IEJ1ZmZlciBGbHVzaCAKICAqIEJyaWRnZSByZWdpc3RlciBzaW5jZSBpdCBlbnN1cmVzIHRoZSBkYXRhIGhhcyBlbnRlcmVkIHRoZSBjb2hlcmVuY2UgZG9tYWluLApkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL20zMjEwNHV0L20zMjEwNHV0X3BsZC5oIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL20zMjEwNHV0L20zMjEwNHV0X3BsZC5oCmluZGV4IDJkYzg5ZDYuLjFmZWFlOTcgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9tMzIxMDR1dC9tMzIxMDR1dF9wbGQuaAorKysgYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vbTMyMTA0dXQvbTMyMTA0dXRfcGxkLmgKQEAgLTQsNyArNCw3IEBACiAvKgogICogaW5jbHVkZS9hc20tbTMyci9tMzIxMDR1dC9tMzIxMDR1dF9wbGQuaAogICoKLSAqIERlZmluaXRpb25zIGZvciBQcm9ncmFtYWJsZSBMb2dpYyBEZXZpY2UoUExEKSBvbiBNMzIxMDRVVCBib2FyZC4KKyAqIERlZmluaXRpb25zIGZvciBQcm9ncmFtbWFibGUgTG9naWMgRGV2aWNlKFBMRCkgb24gTTMyMTA0VVQgYm9hcmQuCiAgKiBCYXNlZCBvbiBtMzI3MDB1dF9wbGQuaAogICoKICAqIENvcHlyaWdodCAoYykgMjAwMglUYWtlbyBUYWthaGFzaGkKZGlmZiAtLWdpdCBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9tMzI3MDB1dC9tMzI3MDB1dF9wbGQuaCBiL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9tMzI3MDB1dC9tMzI3MDB1dF9wbGQuaAppbmRleCA1NzYyM2JlLi4zNTI5NDY3IDEwMDY0NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vbTMyNzAwdXQvbTMyNzAwdXRfcGxkLmgKKysrIGIvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL20zMjcwMHV0L20zMjcwMHV0X3BsZC5oCkBAIC00LDcgKzQsNyBAQAogLyoKICAqIGluY2x1ZGUvYXNtLW0zMnIvbTMyNzAwdXQvbTMyNzAwdXRfcGxkLmgKICAqCi0gKiBEZWZpbml0aW9ucyBmb3IgUHJvZ3JhbWFibGUgTG9naWMgRGV2aWNlKFBMRCkgb24gTTMyNzAwVVQgYm9hcmQuCisgKiBEZWZpbml0aW9ucyBmb3IgUHJvZ3JhbW1hYmxlIExvZ2ljIERldmljZShQTEQpIG9uIE0zMjcwMFVUIGJvYXJkLgogICoKICAqIENvcHlyaWdodCAoYykgMjAwMglUYWtlbyBUYWthaGFzaGkKICAqCmRpZmYgLS1naXQgYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vb3BzcHV0L29wc3B1dF9wbGQuaCBiL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9vcHNwdXQvb3BzcHV0X3BsZC5oCmluZGV4IDNmMTFlYTEuLjY5MDE0MDEgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9vcHNwdXQvb3BzcHV0X3BsZC5oCisrKyBiL2FyY2gvbTMyci9pbmNsdWRlL2FzbS9vcHNwdXQvb3BzcHV0X3BsZC5oCkBAIC00LDcgKzQsNyBAQAogLyoKICAqIGluY2x1ZGUvYXNtLW0zMnIvb3BzcHV0L29wc3B1dF9wbGQuaAogICoKLSAqIERlZmluaXRpb25zIGZvciBQcm9ncmFtYWJsZSBMb2dpYyBEZXZpY2UoUExEKSBvbiBPUFNQVVQgYm9hcmQuCisgKiBEZWZpbml0aW9ucyBmb3IgUHJvZ3JhbW1hYmxlIExvZ2ljIERldmljZShQTEQpIG9uIE9QU1BVVCBib2FyZC4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDIJVGFrZW8gVGFrYWhhc2hpCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9tMzJyL2luY2x1ZGUvYXNtL3BndGFibGUtMmxldmVsLmggYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwuaAppbmRleCBiY2EzNDc1Li45Y2RhZjczIDEwMDY0NAotLS0gYS9hcmNoL20zMnIvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwuaAorKysgYi9hcmNoL20zMnIvaW5jbHVkZS9hc20vcGd0YWJsZS0ybGV2ZWwuaApAQCAtNDQsNyArNDQsNyBAQAogI2RlZmluZSBzZXRfcHRlX2F0KG1tLGFkZHIscHRlcCxwdGV2YWwpIHNldF9wdGUocHRlcCxwdGV2YWwpCiAKIC8qCi0gKiAocG1kcyBhcmUgZm9sZGVkIGludG8gcGdkcyBzbyB0aGlzIGRvZXNudCBnZXQgYWN0dWFsbHkgY2FsbGVkLAorICogKHBtZHMgYXJlIGZvbGRlZCBpbnRvIHBnZHMgc28gdGhpcyBkb2Vzbid0IGdldCBhY3R1YWxseSBjYWxsZWQsCiAgKiBidXQgdGhlIGRlZmluZSBpcyBuZWVkZWQgZm9yIGEgZ2VuZXJpYyBpbmxpbmUgZnVuY3Rpb24uKQogICovCiAjZGVmaW5lIHNldF9wbWQocG1kcHRyLCBwbWR2YWwpICgqKHBtZHB0cikgPSBwbWR2YWwpCmRpZmYgLS1naXQgYS9hcmNoL20zMnIvbW0vZmF1bHQuYyBiL2FyY2gvbTMyci9tbS9mYXVsdC5jCmluZGV4IGI4ZWMwMDIuLjJjOWFlYjQgMTAwNjQ0Ci0tLSBhL2FyY2gvbTMyci9tbS9mYXVsdC5jCisrKyBiL2FyY2gvbTMyci9tbS9mYXVsdC5jCkBAIC0xMjAsNyArMTIwLDcgQEAKIAogCS8qIFdoZW4gcnVubmluZyBpbiB0aGUga2VybmVsIHdlIGV4cGVjdCBmYXVsdHMgdG8gb2NjdXIgb25seSB0bwogCSAqIGFkZHJlc3NlcyBpbiB1c2VyIHNwYWNlLiAgQWxsIG90aGVyIGZhdWx0cyByZXByZXNlbnQgZXJyb3JzIGluIHRoZQotCSAqIGtlcm5lbCBhbmQgc2hvdWxkIGdlbmVyYXRlIGFuIE9PUFMuICBVbmZvcnR1bmF0bHksIGluIHRoZSBjYXNlIG9mIGFuCisJICoga2VybmVsIGFuZCBzaG91bGQgZ2VuZXJhdGUgYW4gT09QUy4gIFVuZm9ydHVuYXRlbHksIGluIHRoZSBjYXNlIG9mIGFuCiAJICogZXJyb25lb3VzIGZhdWx0IG9jY3VycmluZyBpbiBhIGNvZGUgcGF0aCB3aGljaCBhbHJlYWR5IGhvbGRzIG1tYXBfc2VtCiAJICogd2Ugd2lsbCBkZWFkbG9jayBhdHRlbXB0aW5nIHRvIHZhbGlkYXRlIHRoZSBmYXVsdCBhZ2FpbnN0IHRoZQogCSAqIGFkZHJlc3Mgc3BhY2UuICBMdWNraWx5IHRoZSBrZXJuZWwgb25seSB2YWxpZGx5IHJlZmVyZW5jZXMgdXNlcgpAQCAtMTI4LDcgKzEyOCw3IEBACiAJICogZXhjZXB0aW9ucyB0YWJsZS4KIAkgKgogCSAqIEFzIHRoZSB2YXN0IG1ham9yaXR5IG9mIGZhdWx0cyB3aWxsIGJlIHZhbGlkIHdlIHdpbGwgb25seSBwZXJmb3JtCi0JICogdGhlIHNvdXJjZSByZWZlcmVuY2UgY2hlY2sgd2hlbiB0aGVyZSBpcyBhIHBvc3NpYmlsdHkgb2YgYSBkZWFkbG9jay4KKwkgKiB0aGUgc291cmNlIHJlZmVyZW5jZSBjaGVjayB3aGVuIHRoZXJlIGlzIGEgcG9zc2liaWxpdHkgb2YgYSBkZWFkbG9jay4KIAkgKiBBdHRlbXB0IHRvIGxvY2sgdGhlIGFkZHJlc3Mgc3BhY2UsIGlmIHdlIGNhbm5vdCB3ZSB0aGVuIHZhbGlkYXRlIHRoZQogCSAqIHNvdXJjZS4gIElmIHRoaXMgaXMgaW52YWxpZCB3ZSBjYW4gc2tpcCB0aGUgYWRkcmVzcyBzcGFjZSBjaGVjaywKIAkgKiB0aHVzIGF2b2lkaW5nIHRoZSBkZWFkbG9jay4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9hdGFyaS9hdGFrZXliLmMgYi9hcmNoL202OGsvYXRhcmkvYXRha2V5Yi5jCmluZGV4IDU4OTA4OTcuLmI5OTU1MTMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9hdGFyaS9hdGFrZXliLmMKKysrIGIvYXJjaC9tNjhrL2F0YXJpL2F0YWtleWIuYwpAQCAtMTMwLDcgKzEzMCw3IEBACiAgKiBpdCdzIHJlYWxseSBoYXJkIHRvIGRlY2lkZSB3aGV0aGVyIHRoZXkncmUgbW91c2Ugb3Iga2V5Ym9hcmQgYnl0ZXMuIFNpbmNlCiAgKiBvdmVycnVucyB1c3VhbGx5IG9jY3VyIHdoZW4gbW92aW5nIHRoZSBBdGFyaSBtb3VzZSByYXBpZGx5LCB0aGV5J3JlIHNlZW4gYXMKICAqIG1vdXNlIGJ5dGVzIGhlcmUuIElmIHRoaXMgaXMgd3JvbmcsIG9ubHkgYSBtYWtlIGNvZGUgb2YgdGhlIGtleWJvYXJkIGdldHMKLSAqIGxvc3QsIHdoaWNoIGlzbid0IHRvbyBiYWQuIExvb3NpbmcgYSBicmVhayBjb2RlIHdvdWxkIGJlIGRpc2FzdHJvdXMsCisgKiBsb3N0LCB3aGljaCBpc24ndCB0b28gYmFkLiBMb3NpbmcgYSBicmVhayBjb2RlIHdvdWxkIGJlIGRpc2FzdHJvdXMsCiAgKiBiZWNhdXNlIHRoZW4gdGhlIGtleWJvYXJkIHJlcGVhdCBzdHJpa2VzLi4uCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2Zwc3AwNDAvYmluZGVjLlMgYi9hcmNoL202OGsvZnBzcDA0MC9iaW5kZWMuUwppbmRleCA3MmYxMTU5Li5mMmU3OTUyIDEwMDY0NAotLS0gYS9hcmNoL202OGsvZnBzcDA0MC9iaW5kZWMuUworKysgYi9hcmNoL202OGsvZnBzcDA0MC9iaW5kZWMuUwpAQCAtNjA5LDcgKzYwOSw3IEBACiB8ICAgICAgQTYuICBUaGlzIHRlc3Qgb2NjdXJzIG9ubHkgb24gdGhlIGZpcnN0IHBhc3MuICBJZiB0aGUKIHwgICAgICByZXN1bHQgaXMgZXhhY3RseSAxMF5MRU4sIGRlY3JlbWVudCBJTE9HIGFuZCBkaXZpZGUKIHwgICAgICB0aGUgbWFudGlzc2EgYnkgMTAuICBUaGUgY2FsY3VsYXRpb24gb2YgMTBeTEVOIGNhbm5vdAotfCAgICAgIGJlIGluZXhhY3QsIHNpbmNlIGFsbCBwb3dlcnMgb2YgdGVuIHVwdG8gMTBeMjcgYXJlIGV4YWN0Cit8ICAgICAgYmUgaW5leGFjdCwgc2luY2UgYWxsIHBvd2VycyBvZiB0ZW4gdXAgdG8gMTBeMjcgYXJlIGV4YWN0CiB8ICAgICAgaW4gZXh0ZW5kZWQgcHJlY2lzaW9uLCBzbyB0aGUgdXNlIG9mIGEgcHJldmlvdXMgcG93ZXItb2YtdGVuCiB8ICAgICAgdGFibGUgd2lsbCBpbnRyb2R1Y2Ugbm8gZXJyb3IuCiB8CmRpZmYgLS1naXQgYS9hcmNoL202OGsvaWZwc3AwNjAvc3JjL2Zwc3AuUyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBzcC5TCmluZGV4IDI2ZTg1ZTIuLjc4Y2I2MGYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBzcC5TCisrKyBiL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvZnBzcC5TCkBAIC0xMTgxMyw3ICsxMTgxMyw3IEBACiAJYm5lLmIJCWZtdWxfdW5mbF9lbmFfc2QJIyBubywgc2dsIG9yIGRibAogCiAjIGlmIHRoZSBybmQgbW9kZSBpcyBhbnl0aGluZyBidXQgUlosIHRoZW4gd2UgaGF2ZSB0byByZS1kbyB0aGUgYWJvdmUKLSMgbXVsdGlwbGljYXRpb24gYmVjdWFzZSB3ZSB1c2VkIFJaIGZvciBhbGwuCisjIG11bHRpcGxpY2F0aW9uIGJlY2F1c2Ugd2UgdXNlZCBSWiBmb3IgYWxsLgogCWZtb3YubAkJTF9TQ1IzKCVhNiksJWZwY3IJIyBzZXQgRlBDUgogCiBmbXVsX3VuZmxfZW5hX2NvbnQ6CkBAIC0xODA5NSw3ICsxODA5NSw3IEBACiAKIAlydHMKIAotIyBhZGRyZXNpbmcgbW9kZSBpcyBwb3N0LWluY3JlbWVudC4gd3JpdGUgdGhlIHJlc3VsdCBieXRlLiBpZiB0aGUgd3JpdGUKKyMgYWRkcmVzc2luZyBtb2RlIGlzIHBvc3QtaW5jcmVtZW50LiB3cml0ZSB0aGUgcmVzdWx0IGJ5dGUuIGlmIHRoZSB3cml0ZQogIyBmYWlscyB0aGVuIGRvbid0IHVwZGF0ZSB0aGUgYWRkcmVzcyByZWdpc3Rlci4gaWYgd3JpdGUgcGFzc2VzIHRoZW4KICMgY2FsbCBpbmNfYXJlZygpIHRvIHVwZGF0ZSB0aGUgYWRkcmVzcyByZWdpc3Rlci4KIGZzY2NfbWVtX2luYzoKQEAgLTIwODc2LDcgKzIwODc2LDcgQEAKIAlzd2FwCQklZDAJCQkjIGQwIG5vdyBpbiB1cHBlciB3b3JkCiAJbHNsLmwJCSYweDQsJWQwCQkjIGQwIGluIHByb3BlciBwbGFjZSBmb3IgZGJsIHByZWMgZXhwCiAJdHN0LmIJCUZURU1QX0VYKCVhMCkJCSMgdGVzdCBzaWduCi0JYnBsLmIJCWRzdF9nZXRfZG1hbgkJIyBpZiBwb3N0aXZlLCBnbyBwcm9jZXNzIG1hbnRpc3NhCisJYnBsLmIJCWRzdF9nZXRfZG1hbgkJIyBpZiBwb3NpdGl2ZSwgZ28gcHJvY2VzcyBtYW50aXNzYQogCWJzZXQJCSYweDFmLCVkMAkJIyBpZiBuZWdhdGl2ZSwgc2V0IHNpZ24KIGRzdF9nZXRfZG1hbjoKIAltb3YubAkJRlRFTVBfSEkoJWEwKSwlZDEJIyBnZXQgbXMgbWFudGlzc2EKQEAgLTIyOTQzLDcgKzIyOTQzLDcgQEAKICMJRlBfU1JDKGE2KSA9IHBhY2tlZCBvcGVyYW5kIG5vdyBhcyBhIGJpbmFyeSBGUCBudW1iZXIJCSMKICMJCQkJCQkJCQkjCiAjIEFMR09SSVRITSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgkjCi0jCUdldCB0aGUgY29ycmVjdCA8ZWE+IHdoaWhjIGlzIHRoZSB2YWx1ZSBvbiB0aGUgZXhjZXB0aW9uIHN0YWNrCSMKKyMJR2V0IHRoZSBjb3JyZWN0IDxlYT4gd2hpY2ggaXMgdGhlIHZhbHVlIG9uIHRoZSBleGNlcHRpb24gc3RhY2sJIwogIyBmcmFtZSB3LyBtYXliZSBhIGNvcnJlY3Rpb24gZmFjdG9yIGlmIHRoZSA8ZWE+IGlzIC0oYW4pIG9yIChhbikrLgkjCiAjIFRoZW4sIGZldGNoIHRoZSBvcGVyYW5kIGZyb20gbWVtb3J5LiBJZiB0aGUgZmV0Y2ggZmFpbHMsIGV4aXQJCSMKICMgdGhyb3VnaCBmYWNjX2luX3goKS4JCQkJCQkJIwpAQCAtMjQwOTYsNyArMjQwOTYsNyBAQAogIyAgICAgIEE2LiAgVGhpcyB0ZXN0IG9jY3VycyBvbmx5IG9uIHRoZSBmaXJzdCBwYXNzLiAgSWYgdGhlCiAjICAgICAgcmVzdWx0IGlzIGV4YWN0bHkgMTBeTEVOLCBkZWNyZW1lbnQgSUxPRyBhbmQgZGl2aWRlCiAjICAgICAgdGhlIG1hbnRpc3NhIGJ5IDEwLiAgVGhlIGNhbGN1bGF0aW9uIG9mIDEwXkxFTiBjYW5ub3QKLSMgICAgICBiZSBpbmV4YWN0LCBzaW5jZSBhbGwgcG93ZXJzIG9mIHRlbiB1cHRvIDEwXjI3IGFyZSBleGFjdAorIyAgICAgIGJlIGluZXhhY3QsIHNpbmNlIGFsbCBwb3dlcnMgb2YgdGVuIHVwIHRvIDEwXjI3IGFyZSBleGFjdAogIyAgICAgIGluIGV4dGVuZGVkIHByZWNpc2lvbiwgc28gdGhlIHVzZSBvZiBhIHByZXZpb3VzIHBvd2VyLW9mLXRlbgogIyAgICAgIHRhYmxlIHdpbGwgaW50cm9kdWNlIG5vIGVycm9yLgogIwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9wZnBzcC5TIGIvYXJjaC9tNjhrL2lmcHNwMDYwL3NyYy9wZnBzcC5TCmluZGV4IGU3MWJhMGEuLjRhZWRlZjkgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pZnBzcDA2MC9zcmMvcGZwc3AuUworKysgYi9hcmNoL202OGsvaWZwc3AwNjAvc3JjL3BmcHNwLlMKQEAgLTc3NzcsNyArNzc3Nyw3IEBACiAJc3dhcAkJJWQwCQkJIyBkMCBub3cgaW4gdXBwZXIgd29yZAogCWxzbC5sCQkmMHg0LCVkMAkJIyBkMCBpbiBwcm9wZXIgcGxhY2UgZm9yIGRibCBwcmVjIGV4cAogCXRzdC5iCQlGVEVNUF9FWCglYTApCQkjIHRlc3Qgc2lnbgotCWJwbC5iCQlkc3RfZ2V0X2RtYW4JCSMgaWYgcG9zdGl2ZSwgZ28gcHJvY2VzcyBtYW50aXNzYQorCWJwbC5iCQlkc3RfZ2V0X2RtYW4JCSMgaWYgcG9zaXRpdmUsIGdvIHByb2Nlc3MgbWFudGlzc2EKIAlic2V0CQkmMHgxZiwlZDAJCSMgaWYgbmVnYXRpdmUsIHNldCBzaWduCiBkc3RfZ2V0X2RtYW46CiAJbW92LmwJCUZURU1QX0hJKCVhMCksJWQxCSMgZ2V0IG1zIG1hbnRpc3NhCkBAIC04MjQ0LDcgKzgyNDQsNyBAQAogCWJuZS5iCQlmbXVsX3VuZmxfZW5hX3NkCSMgbm8sIHNnbCBvciBkYmwKIAogIyBpZiB0aGUgcm5kIG1vZGUgaXMgYW55dGhpbmcgYnV0IFJaLCB0aGVuIHdlIGhhdmUgdG8gcmUtZG8gdGhlIGFib3ZlCi0jIG11bHRpcGxpY2F0aW9uIGJlY3Vhc2Ugd2UgdXNlZCBSWiBmb3IgYWxsLgorIyBtdWx0aXBsaWNhdGlvbiBiZWNhdXNlIHdlIHVzZWQgUlogZm9yIGFsbC4KIAlmbW92LmwJCUxfU0NSMyglYTYpLCVmcGNyCSMgc2V0IEZQQ1IKIAogZm11bF91bmZsX2VuYV9jb250OgpAQCAtMTI5MDMsNyArMTI5MDMsNyBAQAogIwlGUF9TUkMoYTYpID0gcGFja2VkIG9wZXJhbmQgbm93IGFzIGEgYmluYXJ5IEZQIG51bWJlcgkJIwogIwkJCQkJCQkJCSMKICMgQUxHT1JJVEhNICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCSMKLSMJR2V0IHRoZSBjb3JyZWN0IDxlYT4gd2hpaGMgaXMgdGhlIHZhbHVlIG9uIHRoZSBleGNlcHRpb24gc3RhY2sJIworIwlHZXQgdGhlIGNvcnJlY3QgPGVhPiB3aGljaCBpcyB0aGUgdmFsdWUgb24gdGhlIGV4Y2VwdGlvbiBzdGFjawkjCiAjIGZyYW1lIHcvIG1heWJlIGEgY29ycmVjdGlvbiBmYWN0b3IgaWYgdGhlIDxlYT4gaXMgLShhbikgb3IgKGFuKSsuCSMKICMgVGhlbiwgZmV0Y2ggdGhlIG9wZXJhbmQgZnJvbSBtZW1vcnkuIElmIHRoZSBmZXRjaCBmYWlscywgZXhpdAkJIwogIyB0aHJvdWdoIGZhY2NfaW5feCgpLgkJCQkJCQkjCkBAIC0xNDA1Niw3ICsxNDA1Niw3IEBACiAjICAgICAgQTYuICBUaGlzIHRlc3Qgb2NjdXJzIG9ubHkgb24gdGhlIGZpcnN0IHBhc3MuICBJZiB0aGUKICMgICAgICByZXN1bHQgaXMgZXhhY3RseSAxMF5MRU4sIGRlY3JlbWVudCBJTE9HIGFuZCBkaXZpZGUKICMgICAgICB0aGUgbWFudGlzc2EgYnkgMTAuICBUaGUgY2FsY3VsYXRpb24gb2YgMTBeTEVOIGNhbm5vdAotIyAgICAgIGJlIGluZXhhY3QsIHNpbmNlIGFsbCBwb3dlcnMgb2YgdGVuIHVwdG8gMTBeMjcgYXJlIGV4YWN0CisjICAgICAgYmUgaW5leGFjdCwgc2luY2UgYWxsIHBvd2VycyBvZiB0ZW4gdXAgdG8gMTBeMjcgYXJlIGV4YWN0CiAjICAgICAgaW4gZXh0ZW5kZWQgcHJlY2lzaW9uLCBzbyB0aGUgdXNlIG9mIGEgcHJldmlvdXMgcG93ZXItb2YtdGVuCiAjICAgICAgdGFibGUgd2lsbCBpbnRyb2R1Y2Ugbm8gZXJyb3IuCiAjCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vYXRhcmlpbnRzLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vYXRhcmlpbnRzLmgKaW5kZXggZjU5Nzg5Mi4uNjU2YmJiZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2F0YXJpaW50cy5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9hdGFyaWludHMuaApAQCAtMTQ2LDcgKzE0Niw3IEBACiAKIC8qCiAgKiB7ZW4sZGlzfWFibGVfaXJxIGhhdmUgdGhlIHVzdWFsIHNlbWFudGljcyBvZiB0ZW1wb3JhcnkgYmxvY2tpbmcgdGhlCi0gKiBpbnRlcnJ1cHQsIGJ1dCBub3QgbG9vc2luZyByZXF1ZXN0cyB0aGF0IGhhcHBlbiBiZXR3ZWVuIGRpc2FibGluZyBhbmQKKyAqIGludGVycnVwdCwgYnV0IG5vdCBsb3NpbmcgcmVxdWVzdHMgdGhhdCBoYXBwZW4gYmV0d2VlbiBkaXNhYmxpbmcgYW5kCiAgKiBlbmFibGluZy4gVGhpcyBpcyBkb25lIHdpdGggdGhlIE1GUCBtYXNrIHJlZ2lzdGVycy4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vYm9vdHN0ZC5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2Jvb3RzdGQuaAppbmRleCBiZGMxYTRhLi5lNTE4ZjVhIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vYm9vdHN0ZC5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9ib290c3RkLmgKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgX19CTl9mbGFzaF93cml0ZV9yYW5nZQkJMjAKIAogLyogQ2FsbGluZyBjb252ZW50aW9ucyBjb21wYXRpYmxlIHRvICh1QylsaW51eC82OGsKLSAqIFdlIHVzZSBzaW1taWxhciBtYWNyb3MgdG8gY2FsbCBpbnRvIHRoZSBib290bG9hZGVyIGFzIGZvciB1Q2xpbnV4CisgKiBXZSB1c2Ugc2ltaWxhciBtYWNyb3MgdG8gY2FsbCBpbnRvIHRoZSBib290bG9hZGVyIGFzIGZvciB1Q2xpbnV4CiAgKi8KIAogI2RlZmluZSBfX2JzY19yZXR1cm4odHlwZSwgcmVzKSBcCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vY29tbXByb2MuaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9jb21tcHJvYy5oCmluZGV4IGVkZjVlYjYuLmE3Mzk5ODUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9jb21tcHJvYy5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9jb21tcHJvYy5oCkBAIC04OCw3ICs4OCw3IEBACiAKIAogLyogcnggYmQgc3RhdHVzL2NvbnRyb2wgYml0cyAqLwotI2RlZmluZSBCRF9TQ19FTVBUWQkoKHVzaG9ydCkweDgwMDApCS8qIFJlY2lldmUgaXMgZW1wdHkgKi8KKyNkZWZpbmUgQkRfU0NfRU1QVFkJKCh1c2hvcnQpMHg4MDAwKQkvKiBSZWNlaXZlIGlzIGVtcHR5ICovCiAjZGVmaW5lIEJEX1NDX1dSQVAJKCh1c2hvcnQpMHgyMDAwKQkvKiBMYXN0IGJ1ZmZlciBkZXNjcmlwdG9yIGluIHRhYmxlICovCiAjZGVmaW5lIEJEX1NDX0lOVFJQVAkoKHVzaG9ydCkweDEwMDApCS8qIEludGVycnVwdCBvbiBjaGFuZ2UgKi8KICNkZWZpbmUgQkRfU0NfTEFTVAkoKHVzaG9ydCkweDA4MDApCS8qIExhc3QgYnVmZmVyIGluIGZyYW1lIE9SIGNvbnRyb2wgY2hhciAqLwpAQCAtOTYsNyArOTYsNyBAQAogI2RlZmluZSBCRF9TQ19GSVJTVAkoKHVzaG9ydCkweDA0MDApCS8qIDFzdCBidWZmZXIgaW4gYW4gSERMQyBmcmFtZSAqLwogI2RlZmluZSBCRF9TQ19BRERSCSgodXNob3J0KTB4MDQwMCkJLyogMXN0IGJ5dGUgaXMgYSBtdWx0aWRyb3AgYWRkcmVzcyAqLwogCi0jZGVmaW5lIEJEX1NDX0NNCSgodXNob3J0KTB4MDIwMCkJLyogQ29udGlub3VzIG1vZGUgKi8KKyNkZWZpbmUgQkRfU0NfQ00JKCh1c2hvcnQpMHgwMjAwKQkvKiBDb250aW51b3VzIG1vZGUgKi8KICNkZWZpbmUgQkRfU0NfSUQJKCh1c2hvcnQpMHgwMTAwKQkvKiBSZWNlaXZlZCB0b28gbWFueSBpZGxlcyAqLwogCiAjZGVmaW5lIEJEX1NDX0FNCSgodXNob3J0KTB4MDA4MCkJLyogTXVsdGlkcm9wIGFkZHJlc3MgbWF0Y2ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9kZWxheV9uby5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2RlbGF5X25vLmgKaW5kZXggNTVjYmQ2Mi4uYzNhMGVkYyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2RlbGF5X25vLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2RlbGF5X25vLmgKQEAgLTE2LDcgKzE2LDcgQEAKIAkgKiBsb25nIHdvcmQgYWxpZ25tZW50IHdoaWNoIGlzIHRoZSBmYXN0ZXIgdmVyc2lvbi4KIAkgKiBUaGUgMHg0YThlIGlzIG9mIGNvdXJzZSBhICd0c3RsICVmcCcgaW5zdHJ1Y3Rpb24uICBUaGlzIGlzIGJldHRlcgogCSAqIHRoYW4gdXNpbmcgYSBOT1AgKDB4NGU3MSkgaW5zdHJ1Y3Rpb24gYmVjYXVzZSBpdCBleGVjdXRlcyBpbiBvbmUKLQkgKiBjeWNsZSBub3QgdGhyZWUgYW5kIGRvZXNuJ3QgYWxsb3cgZm9yIGFuIGFyYml0YXJ5IGRlbGF5IHdhaXRpbmcKKwkgKiBjeWNsZSBub3QgdGhyZWUgYW5kIGRvZXNuJ3QgYWxsb3cgZm9yIGFuIGFyYml0cmFyeSBkZWxheSB3YWl0aW5nCiAJICogZm9yIGJ1cyBjeWNsZXMgdG8gZmluaXNoLiAgQWxzbyBmcC9hNiBpc24ndCBsaWtlbHkgdG8gY2F1c2UgYQogCSAqIHN0YWxsIHdhaXRpbmcgZm9yIHRoZSByZWdpc3RlciB0byBiZWNvbWUgdmFsaWQgaWYgc3VjaCBpcyBhZGRlZAogCSAqIHRvIHRoZSBjb2xkZmlyZSBhdCBzb21lIHN0YWdlLgpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2dwaW8uaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9ncGlvLmgKaW5kZXggYzY0YzdiNy4uYjIwNDY4MyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL2dwaW8uaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vZ3Bpby5oCkBAIC0zMSw3ICszMSw3IEBACiAgKiBHUElPcyBpbiBhIHNpbmdsZSBjb250cm9sIGFyZWEsIG90aGVycyBoYXZlIHNvbWUgR1BJT3MgaW1wbGVtZW50ZWQgaW4KICAqIGRpZmZlcmVudCBtb2R1bGVzLgogICoKLSAqIFRoaXMgaW1wbGVtZW50YXRpb24gYXR0ZW1wdHMgYWNjb21vZGF0ZSB0aGUgZGlmZmVyZW5jZXMgd2hpbGUgcHJlc2VudGluZworICogVGhpcyBpbXBsZW1lbnRhdGlvbiBhdHRlbXB0cyBhY2NvbW1vZGF0ZSB0aGUgZGlmZmVyZW5jZXMgd2hpbGUgcHJlc2VudGluZwogICogYSBnZW5lcmljIGludGVyZmFjZSB0aGF0IHdpbGwgb3B0aW1pemUgdG8gYXMgZmV3IGluc3RydWN0aW9ucyBhcyBwb3NzaWJsZS4KICAqLwogI2lmIGRlZmluZWQoQ09ORklHX001MjA2KSB8fCBkZWZpbmVkKENPTkZJR19NNTIwNmUpIHx8IFwKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIweHNpbS5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201MjB4c2ltLmgKaW5kZXggNTVkNWE0YzUuLmI2YmYyYzUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIweHNpbS5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIweHNpbS5oCkBAIC0xNTcsNyArMTU3LDcgQEAKICNkZWZpbmUJTUNGRkVDX1NJWkUJCTB4ODAwCQkvKiBSZWdpc3RlciBzZXQgc2l6ZSAqLwogCiAvKgotICogIFJlc2V0IENvbnRyb2xsIFVuaXQuCisgKiAgUmVzZXQgQ29udHJvbCBVbml0LgogICovCiAjZGVmaW5lCU1DRl9SQ1IJCQkweEZDMEEwMDAwCiAjZGVmaW5lCU1DRl9SU1IJCQkweEZDMEEwMDAxCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyM3hzaW0uaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIzeHNpbS5oCmluZGV4IDg5OTZkZjYuLjYyMzU5MjEgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIzeHNpbS5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTIzeHNpbS5oCkBAIC00OCw3ICs0OCw3IEBACiAjZGVmaW5lCU1DRlNJTV9ETVIxCQkoTUNGX0lQU0JBUiArIDB4NTQpCS8qIEFkZHJlc3MgbWFzayAxICovCiAKIC8qCi0gKiAgUmVzZXQgQ29udHJvbGwgVW5pdCAocmVsYXRpdmUgdG8gSVBTQkFSKS4KKyAqICBSZXNldCBDb250cm9sIFVuaXQgKHJlbGF0aXZlIHRvIElQU0JBUikuCiAgKi8KICNkZWZpbmUJTUNGX1JDUgkJCTB4MTEwMDAwCiAjZGVmaW5lCU1DRl9SU1IJCQkweDExMDAwMQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL201Mjd4c2ltLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyN3hzaW0uaAppbmRleCA3NDg1NWE2Li43NTg4MTBlIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyN3hzaW0uaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUyN3hzaW0uaApAQCAtMjgzLDcgKzI4Myw3IEBACiAjZW5kaWYKIAogLyoKLSAqICBSZXNldCBDb250cm9sbCBVbml0IChyZWxhdGl2ZSB0byBJUFNCQVIpLgorICogIFJlc2V0IENvbnRyb2wgVW5pdCAocmVsYXRpdmUgdG8gSVBTQkFSKS4KICAqLwogI2RlZmluZQlNQ0ZfUkNSCQkJMHgxMTAwMDAKICNkZWZpbmUJTUNGX1JTUgkJCTB4MTEwMDAxCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTUzMDdzaW0uaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTMwN3NpbS5oCmluZGV4IDRjOTRjMDEuLjhmODYwOWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTMwN3NpbS5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTMwN3NpbS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjZGVmaW5lCU1DRlNJTV9TV1NSCQkweDAzCQkvKiBTVyBXYXRjaGRvZyBzZXJ2aWNlIChyL3cpICovCiAjZGVmaW5lCU1DRlNJTV9QQVIJCTB4MDQJCS8qIFBpbiBBc3NpZ25tZW50IHJlZyAoci93KSAqLwogI2RlZmluZQlNQ0ZTSU1fSVJRUEFSCQkweDA2CQkvKiBJbnRlcnJ1cHQgQXNzaWdubWVudCByZWcgKHIvdykgKi8KLSNkZWZpbmUJTUNGU0lNX1BMTENSCQkweDA4CQkvKiBQTEwgQ29udHJvbGwgUmVnKi8KKyNkZWZpbmUJTUNGU0lNX1BMTENSCQkweDA4CQkvKiBQTEwgQ29udHJvbCBSZWcqLwogI2RlZmluZQlNQ0ZTSU1fTVBBUksJCTB4MEMJCS8qIEJVUyBNYXN0ZXIgQ29udHJvbCBSZWcqLwogI2RlZmluZQlNQ0ZTSU1fSVBSCQkweDQwCQkvKiBJbnRlcnJ1cHQgUGVuZCByZWcgKHIvdykgKi8KICNkZWZpbmUJTUNGU0lNX0lNUgkJMHg0NAkJLyogSW50ZXJydXB0IE1hc2sgcmVnIChyL3cpICovCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTU0MDdzaW0uaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTQwN3NpbS5oCmluZGV4IDc2MmM1OGMuLjUxZTAwYjAgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTQwN3NpbS5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNTQwN3NpbS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjZGVmaW5lCU1DRlNJTV9TV1NSCQkweDAzCQkvKiBTVyBXYXRjaGRvZyBzZXJ2aWNlIChyL3cpICovCiAjZGVmaW5lCU1DRlNJTV9QQVIJCTB4MDQJCS8qIFBpbiBBc3NpZ25tZW50IHJlZyAoci93KSAqLwogI2RlZmluZQlNQ0ZTSU1fSVJRUEFSCQkweDA2CQkvKiBJbnRlcnJ1cHQgQXNzaWdubWVudCByZWcgKHIvdykgKi8KLSNkZWZpbmUJTUNGU0lNX1BMTENSCQkweDA4CQkvKiBQTEwgQ29udHJvbGwgUmVnKi8KKyNkZWZpbmUJTUNGU0lNX1BMTENSCQkweDA4CQkvKiBQTEwgQ29udHJvbCBSZWcqLwogI2RlZmluZQlNQ0ZTSU1fTVBBUksJCTB4MEMJCS8qIEJVUyBNYXN0ZXIgQ29udHJvbCBSZWcqLwogI2RlZmluZQlNQ0ZTSU1fSVBSCQkweDQwCQkvKiBJbnRlcnJ1cHQgUGVuZCByZWcgKHIvdykgKi8KICNkZWZpbmUJTUNGU0lNX0lNUgkJMHg0NAkJLyogSW50ZXJydXB0IE1hc2sgcmVnIChyL3cpICovCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbTY4MzYwX3F1aWNjLmggYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbTY4MzYwX3F1aWNjLmgKaW5kZXggNmQ0MGY0ZC4uNTk0MTRjYyAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL202ODM2MF9xdWljYy5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tNjgzNjBfcXVpY2MuaApAQCAtMzIsNyArMzIsNyBAQAogICAgIC8qIEJBU0UgKyAweDAwMDogdXNlciBkYXRhIG1lbW9yeSAqLwogICAgIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgICAgICB1ZGF0YV9iZF91Y29kZVsweDQwMF07IC8qdXNlciBkYXRhIGJkJ3MgVWNvZGUqLwogICAgIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgICAgICB1ZGF0YV9iZFsweDIwMF07ICAgICAgIC8qdXNlciBkYXRhIFVjb2RlICAgICAqLwotICAgIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgICAgICB1Y29kZV9leHRbMHgxMDBdOyAgICAgIC8qVWNvZGUgRXh0ZW50aW9uIHJhbSAqLworICAgIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgICAgICB1Y29kZV9leHRbMHgxMDBdOyAgICAgIC8qVWNvZGUgRXh0ZW5zaW9uIHJhbSAqLwogICAgIHZvbGF0aWxlIHVuc2lnbmVkIGNoYXIgICAgICBSRVNFUlZFRDFbMHg1MDBdOyAgICAgIC8qIFJlc2VydmVkIGFyZWEgICAgICAqLwogfTsKICNlbHNlCmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjX29zcy5oIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY19vc3MuaAppbmRleCA3MjIxZjcyLi4zY2YyYjZlIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjX29zcy5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNfb3NzLmgKQEAgLTYxLDcgKzYxLDcgQEAKIC8qCiAgKiBPU1MgSW50ZXJydXB0IGxldmVscyBmb3IgdmFyaW91cyBzdWItc3lzdGVtcwogICoKLSAqIFRoaXMgbWFwcGluZyBpcyBsYXllZCBvdXQgd2l0aCB0d28gdGhpbmdzIGluIG1pbmQ6IGZpcnN0LCB3ZSB0cnkgdG8ga2VlcAorICogVGhpcyBtYXBwaW5nIGlzIGxhaWQgb3V0IHdpdGggdHdvIHRoaW5ncyBpbiBtaW5kOiBmaXJzdCwgd2UgdHJ5IHRvIGtlZXAKICAqIHRoaW5ncyBvbiB0aGVpciBvd24gbGV2ZWxzIHRvIGF2b2lkIGhhdmluZyB0byBkbyBkb3VibGUtZGlzcGF0Y2hlcy4gU2Vjb25kLAogICogdGhlIGxldmVscyBtYXRjaCBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRoZSBhbHRlcm5hdGUgSVJRIG1hcHBpbmcgbW9kZSAoYWthCiAgKiAiQS9VWCBtb2RlIikgYXZhaWxhYmxlIG9uIHNvbWUgVklBIG1hY2hpbmVzLgpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY192aWEuaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNfdmlhLmgKaW5kZXggMzlhZmI0My4uYTU5NjY1ZSAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY192aWEuaAorKysgYi9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjX3ZpYS5oCkBAIC0yMDQsNyArMjA0LDcgQEAKICNkZWZpbmUgdlQyQ0wJMHgxMDAwICAvKiBbVklBIG9ubHldIFRpbWVyIHR3byBjb3VudGVyIGxvdy4gKi8KICNkZWZpbmUgdlQyQ0gJMHgxMjAwICAvKiBbVklBIG9ubHldIFRpbWVyIHR3byBjb3VudGVyIGhpZ2guICovCiAjZGVmaW5lIHZTUgkweDE0MDAgIC8qIFtWSUEgb25seV0gU2hpZnQgcmVnaXN0ZXIuICovCi0jZGVmaW5lIHZBQ1IJMHgxNjAwICAvKiBbVklBIG9ubHldIEF1eGlsYXJ5IGNvbnRyb2wgcmVnaXN0ZXIuICovCisjZGVmaW5lIHZBQ1IJMHgxNjAwICAvKiBbVklBIG9ubHldIEF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyLiAqLwogI2RlZmluZSB2UENSCTB4MTgwMCAgLyogW1ZJQSBvbmx5XSBQZXJpcGhlcmFsIGNvbnRyb2wgcmVnaXN0ZXIuICovCiAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgICAgICAgIENIUlAgc2V6IG5ldmVyIGV2ZXIgdG8gKndyaXRlKiB0aGlzLgogCQkJICogICAgICAgICAgICBNYWMgZmFtaWx5IHNheXMgbmV2ZXIgdG8gKmNoYW5nZSogdGhpcy4KZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNpbnRvc2guaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tYWNpbnRvc2guaAppbmRleCA1MGRiMzU5Li5jMmExYzVlIDEwMDY0NAotLS0gYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbWFjaW50b3NoLmgKKysrIGIvYXJjaC9tNjhrL2luY2x1ZGUvYXNtL21hY2ludG9zaC5oCkBAIC0xNCw3ICsxNCw3IEBACiBleHRlcm4gaW50IG1hY19pcnFfcGVuZGluZyh1bnNpZ25lZCBpbnQpOwogCiAvKgotICoJRmxvcHB5IGRyaXZlciBtYWdpYyBob29rIC0gcHJvYmFibHkgc2hvdWxkbnQgYmUgaGVyZQorICoJRmxvcHB5IGRyaXZlciBtYWdpYyBob29rIC0gcHJvYmFibHkgc2hvdWxkbid0IGJlIGhlcmUKICAqLwogCiBleHRlcm4gdm9pZCB2aWExX3NldF9oZWFkKGludCk7CmRpZmYgLS1naXQgYS9hcmNoL202OGsvaW5jbHVkZS9hc20vbWNmdGltZXIuaCBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tY2Z0aW1lci5oCmluZGV4IDkyYjI3NmYuLjM1MWMyNzIgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tY2Z0aW1lci5oCisrKyBiL2FyY2gvbTY4ay9pbmNsdWRlL2FzbS9tY2Z0aW1lci5oCkBAIC0yNyw3ICsyNyw3IEBACiAKIC8qCiAgKglCaXQgZGVmaW5pdGlvbnMgZm9yIHRoZSBUaW1lciBNb2RlIFJlZ2lzdGVyIChUTVIpLgotICoJUmVnaXN0ZXIgYml0IGZsYWdzIGFyZSBjb21tb24gYWNjcm9zcyBDb2xkRmlyZXMuCisgKglSZWdpc3RlciBiaXQgZmxhZ3MgYXJlIGNvbW1vbiBhY3Jvc3MgQ29sZEZpcmVzLgogICovCiAjZGVmaW5lCU1DRlRJTUVSX1RNUl9QUkVNQVNLCTB4ZmYwMAkJLyogUHJlc2NhbGFyIG1hc2sgKi8KICNkZWZpbmUJTUNGVElNRVJfVE1SX0RJU0NFCTB4MDAwMAkJLyogRGlzYWJsZSBjYXB0dXJlICovCmRpZmYgLS1naXQgYS9hcmNoL202OGsva2VybmVsL2hlYWQuUyBiL2FyY2gvbTY4ay9rZXJuZWwvaGVhZC5TCmluZGV4IGVmNTQxMjguLjI3NjIyYjMgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvbTY4ay9rZXJuZWwvaGVhZC5TCkBAIC0xMzQsNyArMTM0LDcgQEAKICAqCVRoYW5rcyB0byBhIHNtYWxsIGhlbHBpbmcgcm91dGluZSBlbmFibGluZyB0aGUgbW11IGdvdCBxdWl0ZSBzaW1wbGUKICAqIGFuZCB0aGVyZSBpcyBvbmx5IG9uZSB3YXkgbGVmdC4gbW11X2VuZ2FnZSBtYWtlcyBhIGNvbXBsZXRlIGEgbmV3IG1hcHBpbmcKICAqIHRoYXQgb25seSBpbmNsdWRlcyB0aGUgYWJzb2x1dGUgbmVjZXNzYXJ5IHRvIGJlIGFibGUgdG8ganVtcCB0byB0aGUgZmluYWwKLSAqIHBvc3Rpb24gYW5kIHRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIG1hcHBpbmcuCisgKiBwb3NpdGlvbiBhbmQgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgbWFwcGluZy4KICAqIEFzIHRoaXMgY29kZSBkb2Vzbid0IG5lZWQgYSB0cmFuc3BhcmVudCB0cmFuc2xhdGlvbiByZWdpc3RlciBhbnltb3JlIHRoaXMKICAqIG1lYW5zIGFsbCByZWdpc3RlcnMgYXJlIGZyZWUgdG8gYmUgdXNlZCBieSBtYWNoaW5lcyB0aGF0IG5lZWRzIHRoZW0gZm9yCiAgKiBvdGhlciBwdXJwb3Nlcy4KQEAgLTk2OSw3ICs5NjksNyBAQAogCWlzX25vdF8wNDBfb3JfMDYwKDFmKQogCiAJLyoKLQkgKiAwNDA6IE1hcCB0aGUgMTZNZWcgcmFuZ2UgcGh5c2ljYWwgMHgwIHVwdG8gbG9naWNhbCAweDgwMDAuMDAwMAorCSAqIDA0MDogTWFwIHRoZSAxNk1lZyByYW5nZSBwaHlzaWNhbCAweDAgdXAgdG8gbG9naWNhbCAweDgwMDAuMDAwMAogCSAqLwogCW1tdV9tYXAJCSMweDgwMDAwMDAwLCMwLCMweDAxMDAwMDAwLCNfUEFHRV9OT0NBQ0hFX1MKIAkvKgpAQCAtOTgyLDcgKzk4Miw3IEBACiAKIDE6CiAJLyoKLQkgKiAwMzA6CU1hcCB0aGUgMzJNZWcgcmFuZ2UgcGh5c2ljYWwgMHgwIHVwdG8gbG9naWNhbCAweDgwMDAuMDAwMAorCSAqIDAzMDoJTWFwIHRoZSAzMk1lZyByYW5nZSBwaHlzaWNhbCAweDAgdXAgdG8gbG9naWNhbCAweDgwMDAuMDAwMAogCSAqLwogCW1tdV9tYXAJCSMweDgwMDAwMDAwLCMwLCMweDAyMDAwMDAwLCNfUEFHRV9OT0NBQ0hFMDMwCiAJbW11X21hcF90dAkjMSwjMHg0MDAwMDAwMCwjMHgyMDAwMDAwMCwjX1BBR0VfTk9DQUNIRTAzMApAQCAtMTA3NCw3ICsxMDc0LDcgQEAKIAlpc18wNDAoMWYpCiAKIAkvKgotCSAqIDAzMDogTWFwIHRoZSAzMk1lZyByYW5nZSBwaHlzaWNhbCAweDAgdXB0byBsb2dpY2FsIDB4ZjAwMC4wMDAwCisJICogMDMwOiBNYXAgdGhlIDMyTWVnIHJhbmdlIHBoeXNpY2FsIDB4MCB1cCB0byBsb2dpY2FsIDB4ZjAwMC4wMDAwCiAJICovCiAJbW11X21hcAkjMHhmMDAwMDAwMCwjMCwjMHgwMjAwMDAwMCwjX1BBR0VfTk9DQUNIRTAzMAogCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCiAxOgogCS8qCi0JICogMDQwOiBNYXAgdGhlIDE2TWVnIHJhbmdlIHBoeXNpY2FsIDB4MCB1cHRvIGxvZ2ljYWwgMHhmMDAwLjAwMDAKKwkgKiAwNDA6IE1hcCB0aGUgMTZNZWcgcmFuZ2UgcGh5c2ljYWwgMHgwIHVwIHRvIGxvZ2ljYWwgMHhmMDAwLjAwMDAKIAkgKi8KIAltbXVfbWFwICMweGYwMDAwMDAwLCMwLCMweDAxMDAwMDAwLCNfUEFHRV9OT0NBQ0hFX1MKIApAQCAtMzA3OCw3ICszMDc4LDcgQEAKIAkvKgogCSAqIElmIHRoZSBsb2FkZXIgZ2F2ZSB1cyBhIGJvYXJkIHR5cGUgdGhlbiB3ZSBjYW4gdXNlIHRoYXQgdG8KIAkgKiBzZWxlY3QgYW4gYXBwcm9wcmlhdGUgb3V0cHV0IHJvdXRpbmU7IG90aGVyd2lzZSB3ZSBqdXN0IHVzZQotCSAqIHRoZSBCdWcgY29kZS4gIElmIHdlIGhhZXYgdG8gdXNlIHRoZSBCdWcgdGhhdCBtZWFucyB0aGUgQnVnCisJICogdGhlIEJ1ZyBjb2RlLiAgSWYgd2UgaGF2ZSB0byB1c2UgdGhlIEJ1ZyB0aGF0IG1lYW5zIHRoZSBCdWcKIAkgKiB3b3Jrc3BhY2UgaGFzIHRvIGJlIHZhbGlkLCB3aGljaCBtZWFucyB0aGUgQnVnIGhhcyB0byB1c2UKIAkgKiB0aGUgU1JBTSwgd2hpY2ggaXMgbm9uLXN0YW5kYXJkLgogCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2tlcm5lbC92bWxpbnV4Lmxkc19uby5TIGIvYXJjaC9tNjhrL2tlcm5lbC92bWxpbnV4Lmxkc19uby5TCmluZGV4IDQ3ZTE1ZWIuLmY0ZDcxNWNkIDEwMDY0NAotLS0gYS9hcmNoL202OGsva2VybmVsL3ZtbGludXgubGRzX25vLlMKKysrIGIvYXJjaC9tNjhrL2tlcm5lbC92bWxpbnV4Lmxkc19uby5TCkBAIC0zLDcgKzMsNyBAQAogICoKICAqCShDKSBDb3B5cmlnaHQgMjAwMi0yMDA2LCBHcmVnIFVuZ2VyZXIgPGdlcmdAc25hcGdlYXIuY29tPgogICoKLSAqCVRoaXMgbGlua2VyIHNjcmlwdCBpcyBlcXVpcGVkIHRvIGJ1aWxkIGVpdGhlciBST00gbG9hZGVkIG9yIFJBTQorICoJVGhpcyBsaW5rZXIgc2NyaXB0IGlzIGVxdWlwcGVkIHRvIGJ1aWxkIGVpdGhlciBST00gbG9hZGVkIG9yIFJBTQogICoJcnVuIGtlcm5lbHMuCiAgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyM3gvY29uZmlnLmMgYi9hcmNoL202OGsvcGxhdGZvcm0vNTIzeC9jb25maWcuYwppbmRleCA0MThhNzZmLi43MWY0NDM2IDEwMDY0NAotLS0gYS9hcmNoL202OGsvcGxhdGZvcm0vNTIzeC9jb25maWcuYworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vNTIzeC9jb25maWcuYwpAQCAtMyw3ICszLDcgQEAKIC8qCiAgKglsaW51eC9hcmNoL202OGtub21tdS9wbGF0Zm9ybS81MjN4L2NvbmZpZy5jCiAgKgotICoJU3ViLWFyY2hpdGN0dXJlIGRlcGVuZGFudCBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgRnJlZXNjYWxlCisgKglTdWItYXJjaGl0Y3R1cmUgZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZSBGcmVlc2NhbGUKICAqCTUyM3ggQ1BVcy4KICAqCiAgKglDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSwgR3JlZyBVbmdlcmVyIChnZXJnQHNuYXBnZWFyLmNvbSkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS81MjcyL2ludGMuYyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS81MjcyL2ludGMuYwppbmRleCA0M2U2ZTk2Li43ZTcxNWRmIDEwMDY0NAotLS0gYS9hcmNoL202OGsvcGxhdGZvcm0vNTI3Mi9pbnRjLmMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtLzUyNzIvaW50Yy5jCkBAIC0zMyw3ICszMyw3IEBACiAgKgogICogTm90ZSB0aGF0IHRoZSBleHRlcm5hbCBpbnRlcnJ1cHRzIGFyZSBlZGdlIHRyaWdnZXJlZCAodW5saWtlIHRoZQogICogaW50ZXJuYWwgaW50ZXJydXB0IHNvdXJjZXMgd2hpY2ggYXJlIGxldmVsIHRyaWdnZXJlZCkuIFdoaWNoIG1lYW5zCi0gKiB0aGV5IGFsc28gbmVlZCBhY2tub3dsZWRnZWluZyB2aWEgYWNrbm93bGVkZ2UgYml0cy4KKyAqIHRoZXkgYWxzbyBuZWVkIGFja25vd2xlZGdpbmcgdmlhIGFja25vd2xlZGdlIGJpdHMuCiAgKi8KIHN0cnVjdCBpcnFtYXAgewogCXVuc2lnbmVkIGNoYXIJaWNyOwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyN3gvY29uZmlnLmMgYi9hcmNoL202OGsvcGxhdGZvcm0vNTI3eC9jb25maWcuYwppbmRleCBmYTM1OTU5Li4zZWJjNzY5IDEwMDY0NAotLS0gYS9hcmNoL202OGsvcGxhdGZvcm0vNTI3eC9jb25maWcuYworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vNTI3eC9jb25maWcuYwpAQCAtMyw3ICszLDcgQEAKIC8qCiAgKglsaW51eC9hcmNoL202OGtub21tdS9wbGF0Zm9ybS81Mjd4L2NvbmZpZy5jCiAgKgotICoJU3ViLWFyY2hpdGN0dXJlIGRlcGVuZGFudCBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgRnJlZXNjYWxlCisgKglTdWItYXJjaGl0Y3R1cmUgZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZSBGcmVlc2NhbGUKICAqCTUyNzAvNTI3MSBDUFVzLgogICoKICAqCUNvcHlyaWdodCAoQykgMTk5OS0yMDA0LCBHcmVnIFVuZ2VyZXIgKGdlcmdAc25hcGdlYXIuY29tKQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtLzUyOHgvY29uZmlnLmMgYi9hcmNoL202OGsvcGxhdGZvcm0vNTI4eC9jb25maWcuYwppbmRleCBhYzM5ZmM2Li43YWJlNzdhIDEwMDY0NAotLS0gYS9hcmNoL202OGsvcGxhdGZvcm0vNTI4eC9jb25maWcuYworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vNTI4eC9jb25maWcuYwpAQCAtMyw3ICszLDcgQEAKIC8qCiAgKglsaW51eC9hcmNoL202OGtub21tdS9wbGF0Zm9ybS81Mjh4L2NvbmZpZy5jCiAgKgotICoJU3ViLWFyY2hpdGN0dXJlIGRlcGVuZGFudCBpbml0aWFsaXphdGlvbiBjb2RlIGZvciB0aGUgRnJlZXNjYWxlCisgKglTdWItYXJjaGl0Y3R1cmUgZGVwZW5kZW50IGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZSBGcmVlc2NhbGUKICAqCTUyODAsIDUyODEgYW5kIDUyODIgQ1BVcy4KICAqCiAgKglDb3B5cmlnaHQgKEMpIDE5OTktMjAwMywgR3JlZyBVbmdlcmVyIChnZXJnQHNuYXBnZWFyLmNvbSkKZGlmZiAtLWdpdCBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9jYWNoZS5jIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2NhY2hlLmMKaW5kZXggMjM1ZDNjNC4uNzFiZWVhZiAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2NhY2hlLmMKKysrIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2NhY2hlLmMKQEAgLTEsNyArMSw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgotICoJY2FjaGUuYyAtLSBnZW5lcmFsIENvbGRGaXJlIENhY2hlIG1haW50YWluZW5jZSBjb2RlCisgKgljYWNoZS5jIC0tIGdlbmVyYWwgQ29sZEZpcmUgQ2FjaGUgbWFpbnRlbmFuY2UgY29kZQogICoKICAqCUNvcHlyaWdodCAoQykgMjAxMCwgR3JlZyBVbmdlcmVyIChnZXJnQHNuYXBnZWFyLmNvbSkKICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2VudHJ5LlMgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvZW50cnkuUwppbmRleCA1ODM3Y2YwLi5lYWI2M2YwIDEwMDY0NAotLS0gYS9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvZW50cnkuUworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvZW50cnkuUwpAQCAtMTYzLDcgKzE2Myw3IEBACiAKIC8qCiAgKiBUaGlzIGlzIHRoZSBnZW5lcmljIGludGVycnVwdCBoYW5kbGVyIChmb3IgYWxsIGhhcmR3YXJlIGludGVycnVwdAotICogc291cmNlcykuIENhbGxzIHVwdG8gaGlnaCBsZXZlbCBjb2RlIHRvIGRvIGFsbCB0aGUgd29yay4KKyAqIHNvdXJjZXMpLiBDYWxscyB1cCB0byBoaWdoIGxldmVsIGNvZGUgdG8gZG8gYWxsIHRoZSB3b3JrLgogICovCiBFTlRSWShpbnRoYW5kbGVyKQogCVNBVkVfQUxMCmRpZmYgLS1naXQgYS9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvaGVhZC5TIGIvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2hlYWQuUwppbmRleCAxMjliZmY0OS4uNmFlOTFhNCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2hlYWQuUworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvaGVhZC5TCkBAIC0yMCw3ICsyMCw3IEBACiAKIC8qCiAgKglJZiB3ZSBkb24ndCBoYXZlIGEgZml4ZWQgbWVtb3J5IHNpemUsIHRoZW4gbGV0cyBidWlsZCBpbiBjb2RlCi0gKgl0byBhdXRvIGRldGVjdCB0aGUgRFJBTSBzaXplLiBPYnZpb3VzbHkgdGhpcyBpcyB0aGUgcHJlZmVyZWQKKyAqCXRvIGF1dG8gZGV0ZWN0IHRoZSBEUkFNIHNpemUuIE9idmlvdXNseSB0aGlzIGlzIHRoZSBwcmVmZXJyZWQKICAqCW1ldGhvZCwgYW5kIHNob3VsZCB3b3JrIGZvciBtb3N0IGJvYXJkcy4gSXQgd29uJ3Qgd29yayBmb3IgdGhvc2UKICAqCXRoYXQgZG8gbm90IGhhdmUgdGhlaXIgUkFNIHN0YXJ0aW5nIGF0IGFkZHJlc3MgMCwgYW5kIGl0IG9ubHkKICAqCXdvcmtzIG9uIFNEUkFNIChub3QgYm9hcmRzIGZpdHRlZCB3aXRoIFNSQU0pLgpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2ludGMuYyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9pbnRjLmMKaW5kZXggYzI4YTZlZC4uMGJiYjQxNCAxMDA2NDQKLS0tIGEvYXJjaC9tNjhrL3BsYXRmb3JtL2NvbGRmaXJlL2ludGMuYworKysgYi9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvaW50Yy5jCkBAIC0zNyw3ICszNyw3IEBACiAvKgogICogSW4gdGhlIGVhcmx5IHZlcnNpb24gMiBjb3JlIENvbGRGaXJlIHBhcnRzIHRoZSBJTVIgcmVnaXN0ZXIgd2FzIDE2IGJpdHMKICAqIGluIHNpemUuIFZlcnNpb24gMyAoYW5kIGxhdGVyIHZlcnNpb24gMikgY29yZSBwYXJ0cyBoYXZlIGEgMzIgYml0Ci0gKiBzaXplZCBJTVIgcmVnaXN0ZXIuIFByb3ZpZGUgc29tZSBzaXplIGluZGVwZW5kYW50IG1ldGhvZHMgdG8gYWNjZXNzIHRoZQorICogc2l6ZWQgSU1SIHJlZ2lzdGVyLiBQcm92aWRlIHNvbWUgc2l6ZSBpbmRlcGVuZGVudCBtZXRob2RzIHRvIGFjY2VzcyB0aGUKICAqIElNUiByZWdpc3Rlci4KICAqLwogI2lmZGVmIE1DRlNJTV9JTVJfSVNfMTZCSVRTCmRpZmYgLS1naXQgYS9hcmNoL202OGsvcGxhdGZvcm0vY29sZGZpcmUvc2x0aW1lcnMuYyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9zbHRpbWVycy5jCmluZGV4IDBhMWI5MzcuLjZhODVkYWYgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9zbHRpbWVycy5jCisrKyBiL2FyY2gvbTY4ay9wbGF0Zm9ybS9jb2xkZmlyZS9zbHRpbWVycy5jCkBAIC0xMDYsNyArMTA2LDcgQEAKIAljeWNsZXMgPSBtY2ZzbHRfY250OwogCWxvY2FsX2lycV9yZXN0b3JlKGZsYWdzKTsKIAotCS8qIHN1YnN0cmFjdCBiZWNhdXNlIHNsaWNlIHRpbWVycyBjb3VudCBkb3duICovCisJLyogc3VidHJhY3QgYmVjYXVzZSBzbGljZSB0aW1lcnMgY291bnQgZG93biAqLwogCXJldHVybiBjeWNsZXMgLSBzY250OwogfQogCmRpZmYgLS1naXQgYS9hcmNoL202OGsvcTQwL1JFQURNRSBiL2FyY2gvbTY4ay9xNDAvUkVBRE1FCmluZGV4IGY4NzdiNzIuLmIyNmQ1ZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9xNDAvUkVBRE1FCisrKyBiL2FyY2gvbTY4ay9xNDAvUkVBRE1FCkBAIC04OSw3ICs4OSw3IEBACiBvciBmcm9tIHNvbWUgSVNBIGRldmljZXMsIEVJUlFfUkVHIGNhbiBkaXN0aW5ndWlzaCB1cCB0byA4IElTQSBJUlFzLgogCiBUaGUgUTQwIGN1c3RvbSBjaGlwIGlzIHByb2dyYW1tYWJsZSB0byBwcm92aWRlIDIgcGVyaW9kaWMgdGltZXJzOgotCS0gNTAgb3IgMjAwIEh6IC0gbGV2ZWwgMiwgISFUSElTIENBTlQgQkUgRElTQUJMRUQhIQorCS0gNTAgb3IgMjAwIEh6IC0gbGV2ZWwgMiwgISFUSElTIENBTidUIEJFIERJU0FCTEVEISEKIAktIDEwIG9yIDIwIEtIeiAtIGxldmVsIDQsIHVzZWQgZm9yIGRtYS1zb3VuZAogCiBMaW51eCB1c2VzIHRoZSAyMDAgSHogaW50ZXJydXB0IGZvciB0aW1lciBhbmQgYmVlcCBieSBkZWZhdWx0LgpkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2JsYXplL01ha2VmaWxlIGIvYXJjaC9taWNyb2JsYXplL01ha2VmaWxlCmluZGV4IDZmNDMyZTYuLmIyM2M0MGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9NYWtlZmlsZQorKysgYi9hcmNoL21pY3JvYmxhemUvTWFrZWZpbGUKQEAgLTE4LDcgKzE4LDcgQEAKICMgcmF0aGVyIHRoYW4gYm9vbHMgeS9uCiAKICMgV29yayBvdXQgSFcgbXVsdGlwbGVyIHN1cHBvcnQuIFRoaXMgaXMgdHJpY2t5LgotIyAxLiBTcGFydGFuMiBoYXMgbm8gSFcgbXVsdGlwbGVycy4KKyMgMS4gU3BhcnRhbjIgaGFzIG5vIEhXIG11bHRpcGxpZXJzLgogIyAyLiBNaWNyb0JsYXplIHYzLnggYWx3YXlzIHVzZXMgdGhlbSwgZXhjZXB0IGluIFNwYXJ0YW4gMgogIyAzLiBBbGwgb3RoZXIgRlBHYS9DUFUgdmVyIGNvbWJvcywgd2UgY2FuIHRydXN0IHRoZSBDT05GSUdfIHNldHRpbmdzCiBpZmVxICgsJChmaW5kc3RyaW5nIHNwYXJ0YW4yLCQoQ09ORklHX1hJTElOWF9NSUNST0JMQVpFMF9GQU1JTFkpKSkKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9pby5oIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2lvLmgKaW5kZXggZWFlMzIyMi4uOGNkYWMxNCAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2lvLmgKKysrIGIvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL2lvLmgKQEAgLTcwLDcgKzcwLDcgQEAKIAogLyoKICAqIHJlYWQgKHJlYWRiLCByZWFkdywgcmVhZGwsIHJlYWRxKSBhbmQgd3JpdGUgKHdyaXRlYiwgd3JpdGV3LAotICogd3JpdGVsLCB3cml0ZXEpIGFjY2Vzc29ycyBhcmUgZm9yIFBDSSBhbmQgdGh1cyBsaXR0ZWwgZW5kaWFuLgorICogd3JpdGVsLCB3cml0ZXEpIGFjY2Vzc29ycyBhcmUgZm9yIFBDSSBhbmQgdGh1cyBsaXR0bGUgZW5kaWFuLgogICogTGludXggMi40IGZvciBNaWNyb2JsYXplIGhhZCB0aGlzIHdyb25nLgogICovCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGNoYXIgcmVhZGIoY29uc3Qgdm9sYXRpbGUgdm9pZCBfX2lvbWVtICphZGRyKQpkaWZmIC0tZ2l0IGEvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaCBiL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKaW5kZXggMTA3MTc2Ni4uNzQ2ZGY5MSAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaAorKysgYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCkBAIC03Niw3ICs3Niw3IEBACiAJICogVXNlZCBmb3IgdmFyaWFudHMgb2YgUENJIGluZGlyZWN0IGhhbmRsaW5nIGFuZCBwb3NzaWJsZSBxdWlya3M6CiAJICogIFNFVF9DRkdfVFlQRSAtIHVzZWQgb24gNHh4IG9yIGFueSBQSEIgdGhhdCBkb2VzIGV4cGxpY2l0IHR5cGUwLzEKIAkgKiAgRVhUX1JFRyAtIHByb3ZpZGVzIGFjY2VzcyB0byBQQ0ktZSBleHRlbmRlZCByZWdpc3RlcnMKLQkgKiAgU1VSUFJFU1NfUFJJTUFSWV9CVVMgLSB3ZSBzdXJwcmVzcyB0aGUgc2V0dGluZyBvZiBQQ0lfUFJJTUFSWV9CVVMKKwkgKiAgU1VSUFJFU1NfUFJJTUFSWV9CVVMgLSB3ZSBzdXBwcmVzcyB0aGUgc2V0dGluZyBvZiBQQ0lfUFJJTUFSWV9CVVMKIAkgKiAgIG9uIEZyZWVzY2FsZSBQQ0ktZSBjb250cm9sbGVycyBzaW5jZSB0aGV5IHVzZWQgdGhlIFBDSV9QUklNQVJZX0JVUwogCSAqICAgdG8gZGV0ZXJtaW5lIHdoaWNoIGJ1cyBudW1iZXIgdG8gbWF0Y2ggb24gd2hlbiBnZW5lcmF0aW5nIHR5cGUwCiAJICogICBjb25maWcgY3ljbGVzCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcGNpLmggYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcGNpLmgKaW5kZXggMjIzMmZmOTQuLmJhNjVjZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9pbmNsdWRlL2FzbS9wY2kuaAorKysgYi9hcmNoL21pY3JvYmxhemUvaW5jbHVkZS9hc20vcGNpLmgKQEAgLTE1OCw3ICsxNTgsNyBAQAogZXh0ZXJuIHZvaWQgcGNpYmlvc19zZXR1cF9idXNfZGV2aWNlcyhzdHJ1Y3QgcGNpX2J1cyAqYnVzKTsKIGV4dGVybiB2b2lkIHBjaWJpb3Nfc2V0dXBfYnVzX3NlbGYoc3RydWN0IHBjaV9idXMgKmJ1cyk7CiAKLS8qIFRoaXMgcGFydCBvZiBjb2RlIHdhcyBvcmlnaW5hbHkgaW4geGlsaW54LXBjaS5oICovCisvKiBUaGlzIHBhcnQgb2YgY29kZSB3YXMgb3JpZ2luYWxseSBpbiB4aWxpbngtcGNpLmggKi8KICNpZmRlZiBDT05GSUdfUENJX1hJTElOWAogZXh0ZXJuIHZvaWQgX19pbml0IHhpbGlueF9wY2lfaW5pdCh2b2lkKTsKICNlbHNlCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxhemUva2VybmVsL2NwdS9jYWNoZS5jIGIvYXJjaC9taWNyb2JsYXplL2tlcm5lbC9jcHUvY2FjaGUuYwppbmRleCBjZjBhZmQ5Li40YjdkOGEzIDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUva2VybmVsL2NwdS9jYWNoZS5jCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9rZXJuZWwvY3B1L2NhY2hlLmMKQEAgLTEyOSw3ICsxMjksNyBAQAogICogdG8gdXNlIGZvciBzaW1wbGUgd2RjIG9yIHdpYy4KICAqCiAgKiBzdGFydCBhZGRyZXNzIGlzIGNhY2hlIGFsaWduZWQKLSAqIGVuZCBhZGRyZXNzIGlzIG5vdCBhbGlnbmVkLCBpZiBlbmQgaXMgYWxpZ25lZCB0aGVuIEkgaGF2ZSB0byBzdWJzdHJhY3QKKyAqIGVuZCBhZGRyZXNzIGlzIG5vdCBhbGlnbmVkLCBpZiBlbmQgaXMgYWxpZ25lZCB0aGVuIEkgaGF2ZSB0byBzdWJ0cmFjdAogICogY2FjaGVsaW5lIGxlbmd0aCBiZWNhdXNlIEkgY2FuJ3QgZmx1c2gvaW52YWxpZGF0ZSB0aGUgbmV4dCBjYWNoZWxpbmUuCiAgKiBJZiBpcyBub3QsIEkgYWxpZ24gaXQgYmVjYXVzZSBJIHdpbGwgZmx1c2gvaW52YWxpZGF0ZSB3aG9sZSBsaW5lLgogICovCmRpZmYgLS1naXQgYS9hcmNoL21pY3JvYmxhemUvbGliL21lbWNweS5jIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1jcHkuYwppbmRleCBjYzQ5NWQ3Li41Mjc0NmU3IDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvbGliL21lbWNweS5jCisrKyBiL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtY3B5LmMKQEAgLTYzLDggKzYzLDggQEAKIAlpZiAobGlrZWx5KGMgPj0gNCkpIHsKIAkJdW5zaWduZWQgIHZhbHVlLCBidWZfaG9sZDsKIAotCQkvKiBBbGlnbiB0aGUgZHN0aW5hdGlvbiB0byBhIHdvcmQgYm91bmRyeS4gKi8KLQkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGFudCBtYW5uZXIuICovCisJCS8qIEFsaWduIHRoZSBkZXN0aW5hdGlvbiB0byBhIHdvcmQgYm91bmRhcnkuICovCisJCS8qIFRoaXMgaXMgZG9uZSBpbiBhbiBlbmRpYW4gaW5kZXBlbmRlbnQgbWFubmVyLiAqLwogCQlzd2l0Y2ggKCh1bnNpZ25lZCBsb25nKWRzdCAmIDMpIHsKIAkJY2FzZSAxOgogCQkJKmRzdCsrID0gKnNyYysrOwpAQCAtODAsNyArODAsNyBAQAogCQlpX2RzdCA9ICh2b2lkICopZHN0OwogCiAJCS8qIENob29zZSBhIGNvcHkgc2NoZW1lIGJhc2VkIG9uIHRoZSBzb3VyY2UgKi8KLQkJLyogYWxpZ25tZW50IHJlbGF0aXZlIHRvIGRzdGluYXRpb24uICovCisJCS8qIGFsaWdubWVudCByZWxhdGl2ZSB0byBkZXN0aW5hdGlvbi4gKi8KIAkJc3dpdGNoICgodW5zaWduZWQgbG9uZylzcmMgJiAzKSB7CiAJCWNhc2UgMHgwOgkvKiBCb3RoIGJ5dGUgb2Zmc2V0cyBhcmUgYWxpZ25lZCAqLwogCQkJaV9zcmMgID0gKGNvbnN0IHZvaWQgKilzcmM7CkBAIC0xNzMsNyArMTczLDcgQEAKIAl9CiAKIAkvKiBGaW5pc2ggb2ZmIGFueSByZW1haW5pbmcgYnl0ZXMgKi8KLQkvKiBzaW1wbGUgZmFzdCBjb3B5LCAuLi4gdW5sZXNzIGEgY2FjaGUgYm91bmRyeSBpcyBjcm9zc2VkICovCisJLyogc2ltcGxlIGZhc3QgY29weSwgLi4uIHVubGVzcyBhIGNhY2hlIGJvdW5kYXJ5IGlzIGNyb3NzZWQgKi8KIAlzd2l0Y2ggKGMpIHsKIAljYXNlIDM6CiAJCSpkc3QrKyA9ICpzcmMrKzsKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtbW92ZS5jIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1tb3ZlLmMKaW5kZXggODEwZmQ2OC4uMjE0NmMzNyAxMDA2NDQKLS0tIGEvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1tb3ZlLmMKKysrIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1tb3ZlLmMKQEAgLTgzLDggKzgzLDggQEAKIAlpZiAoYyA+PSA0KSB7CiAJCXVuc2lnbmVkICB2YWx1ZSwgYnVmX2hvbGQ7CiAKLQkJLyogQWxpZ24gdGhlIGRlc3RpbmF0aW9uIHRvIGEgd29yZCBib3VuZHJ5LiAqLwotCQkvKiBUaGlzIGlzIGRvbmUgaW4gYW4gZW5kaWFuIGluZGVwZW5kYW50IG1hbm5lci4gKi8KKwkJLyogQWxpZ24gdGhlIGRlc3RpbmF0aW9uIHRvIGEgd29yZCBib3VuZGFyeS4gKi8KKwkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGVudCBtYW5uZXIuICovCiAKIAkJc3dpdGNoICgodW5zaWduZWQgbG9uZylkc3QgJiAzKSB7CiAJCWNhc2UgMzoKQEAgLTE5Myw3ICsxOTMsNyBAQAogCQlkc3QgPSAodm9pZCAqKWlfZHN0OwogCX0KIAotCS8qIHNpbXBsZSBmYXN0IGNvcHksIC4uLiB1bmxlc3MgYSBjYWNoZSBib3VuZHJ5IGlzIGNyb3NzZWQgKi8KKwkvKiBzaW1wbGUgZmFzdCBjb3B5LCAuLi4gdW5sZXNzIGEgY2FjaGUgYm91bmRhcnkgaXMgY3Jvc3NlZCAqLwogCS8qIEZpbmlzaCBvZmYgYW55IHJlbWFpbmluZyBieXRlcyAqLwogCXN3aXRjaCAoYykgewogCWNhc2UgNDoKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtc2V0LmMgYi9hcmNoL21pY3JvYmxhemUvbGliL21lbXNldC5jCmluZGV4IDgzNDU2NWQuLmRkZjY3OTMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9saWIvbWVtc2V0LmMKKysrIGIvYXJjaC9taWNyb2JsYXplL2xpYi9tZW1zZXQuYwpAQCAtNjQsNyArNjQsNyBAQAogCiAJaWYgKGxpa2VseShuID49IDQpKSB7CiAJCS8qIEFsaWduIHRoZSBkZXN0aW5hdGlvbiB0byBhIHdvcmQgYm91bmRhcnkgKi8KLQkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGFudCBtYW5uZXIgKi8KKwkJLyogVGhpcyBpcyBkb25lIGluIGFuIGVuZGlhbiBpbmRlcGVuZGVudCBtYW5uZXIgKi8KIAkJc3dpdGNoICgodW5zaWduZWQpIHNyYyAmIDMpIHsKIAkJY2FzZSAxOgogCQkJKnNyYysrID0gYzsKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9wY2kvaW5kaXJlY3RfcGNpLmMgYi9hcmNoL21pY3JvYmxhemUvcGNpL2luZGlyZWN0X3BjaS5jCmluZGV4IDI1ZjE4ZjAuLjQxOTZlYjYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWljcm9ibGF6ZS9wY2kvaW5kaXJlY3RfcGNpLmMKKysrIGIvYXJjaC9taWNyb2JsYXplL3BjaS9pbmRpcmVjdF9wY2kuYwpAQCAtMTA4LDcgKzEwOCw3IEBACiAJCW91dF9sZTMyKGhvc2UtPmNmZ19hZGRyLCAoMHg4MDAwMDAwMCB8IChidXNfbm8gPDwgMTYpIHwKIAkJCSAoZGV2Zm4gPDwgOCkgfCByZWcgfCBjZmdfdHlwZSkpOwogCi0JLyogc3VycHJlc3Mgc2V0dGluZyBvZiBQQ0lfUFJJTUFSWV9CVVMgKi8KKwkvKiBzdXBwcmVzcyBzZXR0aW5nIG9mIFBDSV9QUklNQVJZX0JVUyAqLwogCWlmIChob3NlLT5pbmRpcmVjdF90eXBlICYgSU5ESVJFQ1RfVFlQRV9TVVJQUkVTU19QUklNQVJZX0JVUykKIAkJaWYgKChvZmZzZXQgPT0gUENJX1BSSU1BUllfQlVTKSAmJgogCQkJKGJ1cy0+bnVtYmVyID09IGhvc2UtPmZpcnN0X2J1c25vKSkKZGlmZiAtLWdpdCBhL2FyY2gvbWljcm9ibGF6ZS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcuYXV0byBiL2FyY2gvbWljcm9ibGF6ZS9wbGF0Zm9ybS9nZW5lcmljL0tjb25maWcuYXV0bwppbmRleCA1ZDg2ZmMxLi4yNWE2ZjAxIDEwMDY0NAotLS0gYS9hcmNoL21pY3JvYmxhemUvcGxhdGZvcm0vZ2VuZXJpYy9LY29uZmlnLmF1dG8KKysrIGIvYXJjaC9taWNyb2JsYXplL3BsYXRmb3JtL2dlbmVyaWMvS2NvbmZpZy5hdXRvCkBAIC0yOSw3ICsyOSw3IEBACiAJICBCQVNFIEFkZHJlc3MgZm9yIGtlcm5lbAogCiBjb25maWcgWElMSU5YX01JQ1JPQkxBWkUwX0ZBTUlMWQotCXN0cmluZyAiVGFyZ2V0dGVkIEZQR0EgZmFtaWx5IgorCXN0cmluZyAiVGFyZ2V0ZWQgRlBHQSBmYW1pbHkiCiAJZGVmYXVsdCAidmlydGV4NSIKIAogY29uZmlnIFhJTElOWF9NSUNST0JMQVpFMF9VU0VfTVNSX0lOU1RSCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvS2NvbmZpZyBiL2FyY2gvbWlwcy9LY29uZmlnCmluZGV4IDgzYWE1ZmIuLjhlMjU2Y2MgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9LY29uZmlnCisrKyBiL2FyY2gvbWlwcy9LY29uZmlnCkBAIC0xMTM1LDcgKzExMzUsNyBAQAogCSAgVGhlIExvb25nc29uIDJFIHByb2Nlc3NvciBpbXBsZW1lbnRzIHRoZSBNSVBTIElJSSBpbnN0cnVjdGlvbiBzZXQKIAkgIHdpdGggbWFueSBleHRlbnNpb25zLgogCi0JICBJdCBoYXMgYW4gaW50ZXJuYWwgRlBHQSBub3J0aGJyaWRnZSwgd2hpY2ggaXMgY29tcGF0aWFibGUgdG8KKwkgIEl0IGhhcyBhbiBpbnRlcm5hbCBGUEdBIG5vcnRoYnJpZGdlLCB3aGljaCBpcyBjb21wYXRpYmxlIHRvCiAJICBib25pdG82NC4KIAogY29uZmlnIENQVV9MT09OR1NPTjJGCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvTWFrZWZpbGUgYi9hcmNoL21pcHMvTWFrZWZpbGUKaW5kZXggYWMxZDViNi4uNTNlMzUxNCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL01ha2VmaWxlCisrKyBiL2FyY2gvbWlwcy9NYWtlZmlsZQpAQCAtMTAxLDcgKzEwMSw3IEBACiAjIGNhcmVmdWxseSBhdm9pZCB0byBhZGQgaXQgcmVkdW5kYW50bHkgYmVjYXVzZSBnY2MgMy4zLzMuNCBjb21wbGFpbnMKICMgd2hlbiBmZWQgdGhlIHRvb2xjaGFpbiBkZWZhdWx0IQogIwotIyBDZXJ0YWluIGdjYyB2ZXJzaW9ucyB1cHRvIGdjYyA0LjEuMSAocHJvYmFibHkgNC4yLXN1YnZlcnNpb24gYXMgb2YKKyMgQ2VydGFpbiBnY2MgdmVyc2lvbnMgdXAgdG8gZ2NjIDQuMS4xIChwcm9iYWJseSA0LjItc3VidmVyc2lvbiBhcyBvZgogIyAyMDA2LTEwLTEwIGRvbid0IHByb3Blcmx5IGNoYW5nZSB0aGUgcHJlZGVmaW5lZCBzeW1ib2xzIGlmIC1FQiAvIC1FTAogIyBhcmUgdXNlZCwgc28gd2Uga2x1ZGdlIHRoYXQgaGVyZS4gIEEgYnVnIGhhcyBiZWVuIGZpbGVkIGF0CiAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9Mjk0MTMuCkBAIC0zMTQsNSArMzE0LDUgQEAKIAllY2hvICcgIHZtbGludXouYmluICAgICAgICAgIC0gUmF3IGJpbmFyeSB6Ym9vdCBpbWFnZScKIAllY2hvICcgIHZtbGludXouc3JlYyAgICAgICAgIC0gU1JFQyB6Ym9vdCBpbWFnZScKIAllY2hvCi0JZWNobyAnICBUaGVzZSB3aWxsIGJlIGRlZmF1bHQgYXMgYXByb3ByaWF0ZSBmb3IgYSBjb25maWd1cmVkIHBsYXRmb3JtLicKKwllY2hvICcgIFRoZXNlIHdpbGwgYmUgZGVmYXVsdCBhcyBhcHByb3ByaWF0ZSBmb3IgYSBjb25maWd1cmVkIHBsYXRmb3JtLicKIGVuZGVmCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvYWxjaGVteS9jb21tb24vY2xvY2tzLmMgYi9hcmNoL21pcHMvYWxjaGVteS9jb21tb24vY2xvY2tzLmMKaW5kZXggYWYwZmU0MS4uZjM4Mjk4YSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2FsY2hlbXkvY29tbW9uL2Nsb2Nrcy5jCisrKyBiL2FyY2gvbWlwcy9hbGNoZW15L2NvbW1vbi9jbG9ja3MuYwpAQCAtNzUsNyArNzUsNyBAQAogICogY291bnRlciwgaWYgaXQgZXhpc3RzLiAgSWYgd2UgZG9uJ3QgaGF2ZSBhbiBhY2N1cmF0ZSBwcm9jZXNzb3IKICAqIHNwZWVkLCBhbGwgb2YgdGhlIHBlcmlwaGVyYWxzIHRoYXQgZGVyaXZlIHRoZWlyIGNsb2NrcyBiYXNlZCBvbgogICogdGhpcyBhZHZlcnRpc2VkIHNwZWVkIHdpbGwgaW50cm9kdWNlIGVycm9yIGFuZCBzb21ldGltZXMgbm90IHdvcmsKLSAqIHByb3Blcmx5LiAgVGhpcyBmdW5jdGlvbiBpcyBmdXRoZXIgY29udm9sdXRlZCB0byBzdGlsbCBhbGxvdyBjb25maWd1cmF0aW9ucworICogcHJvcGVybHkuICBUaGlzIGZ1bmN0aW9uIGlzIGZ1cnRoZXIgY29udm9sdXRlZCB0byBzdGlsbCBhbGxvdyBjb25maWd1cmF0aW9ucwogICogdG8gZG8gdGhhdCBpbiBjYXNlIHRoZXkgaGF2ZSByZWFsbHksIHJlYWxseSBvbGQgc2lsaWNvbiB3aXRoIGEKICAqIHdyaXRlLW9ubHkgUExMIHJlZ2lzdGVyLgkJCS0tIERhbgogICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvb2N0ZW9uLW1vZGVsLmMgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9leGVjdXRpdmUvb2N0ZW9uLW1vZGVsLmMKaW5kZXggOWFmYzM3OS4uYzhkMzU2OCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vZXhlY3V0aXZlL29jdGVvbi1tb2RlbC5jCisrKyBiL2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL2V4ZWN1dGl2ZS9vY3Rlb24tbW9kZWwuYwpAQCAtNzUsNyArNzUsNyBAQAogCiAJbnVtX2NvcmVzID0gY3ZteF9vY3Rlb25fbnVtX2NvcmVzKCk7CiAKLQkvKiBNYWtlIHN1cmUgdGhlIG5vbiBleGlzdGFudCBkZXZpY2VzIGxvb2sgZGlzYWJsZWQgKi8KKwkvKiBNYWtlIHN1cmUgdGhlIG5vbiBleGlzdGVudCBkZXZpY2VzIGxvb2sgZGlzYWJsZWQgKi8KIAlzd2l0Y2ggKChjaGlwX2lkID4+IDgpICYgMHhmZikgewogCWNhc2UgNjoJCS8qIENONTBYWCAqLwogCWNhc2UgMjoJCS8qIENOMzBYWCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vb2N0ZW9uLXBsYXRmb3JtLmMgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9vY3Rlb24tcGxhdGZvcm0uYwppbmRleCBjZWNhZjYyLi5jZDYxZDcyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9vY3Rlb24tcGxhdGZvcm0uYworKysgYi9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9vY3Rlb24tcGxhdGZvcm0uYwpAQCAtNzUsNyArNzUsNyBAQAogCQkgKiB6ZXJvLgogCQkgKi8KIAotCQkvKiBBc3VtZSB0aGF0IENTMSBpbW1lZGlhdGVseSBmb2xsb3dzLiAqLworCQkvKiBBc3N1bWUgdGhhdCBDUzEgaW1tZWRpYXRlbHkgZm9sbG93cy4gKi8KIAkJbWlvX2Jvb3RfcmVnX2NmZy51NjQgPQogCQkJY3ZteF9yZWFkX2NzcihDVk1YX01JT19CT09UX1JFR19DRkdYKGkgKyAxKSk7CiAJCXJlZ2lvbl9iYXNlID0gbWlvX2Jvb3RfcmVnX2NmZy5zLmJhc2UgPDwgMTY7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9zZXR1cC5jIGIvYXJjaC9taXBzL2Nhdml1bS1vY3Rlb24vc2V0dXAuYwppbmRleCA4YjEzOWJmLi4wNzA3ZmFlIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvY2F2aXVtLW9jdGVvbi9zZXR1cC5jCisrKyBiL2FyY2gvbWlwcy9jYXZpdW0tb2N0ZW9uL3NldHVwLmMKQEAgLTY2Miw3ICs2NjIsNyBAQAogCSAqIHNvbWUgbWVtb3J5IHZlY3RvcnMuIFdoZW4gU1BBUlNFTUVNIGlzIGluIHVzZSwgaXQgZG9lc24ndAogCSAqIHZlcmlmeSB0aGF0IHRoZSBzaXplIGlzIGJpZyBlbm91Z2ggZm9yIHRoZSBmaW5hbAogCSAqIHZlY3RvcnMuIE1ha2luZyB0aGUgc21hbGxlc3QgY2h1Y2sgNE1CIHNlZW1zIHRvIGJlIGVub3VnaAotCSAqIHRvIGNvbnNpc3RhbnRseSB3b3JrLgorCSAqIHRvIGNvbnNpc3RlbnRseSB3b3JrLgogCSAqLwogCW1lbV9hbGxvY19zaXplID0gNCA8PCAyMDsKIAlpZiAobWVtX2FsbG9jX3NpemUgPiBNQVhfTUVNT1JZKQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2Z3L2FyYy9wcm9tbGliLmMgYi9hcmNoL21pcHMvZncvYXJjL3Byb21saWIuYwppbmRleCBjNTA4YzAwLi5iN2Y5ZGQzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvZncvYXJjL3Byb21saWIuYworKysgYi9hcmNoL21pcHMvZncvYXJjL3Byb21saWIuYwpAQCAtNCw3ICs0LDcgQEAKICAqIGZvciBtb3JlIGRldGFpbHMuCiAgKgogICogQ29weXJpZ2h0IChDKSAxOTk2IERhdmlkIFMuIE1pbGxlciAoZG1Ac2dpLmNvbSkKLSAqIENvbXBhYmlsaXR5IHdpdGggYm9hcmQgY2FjaGVzLCBVbGYgQ2FybHNzb24KKyAqIENvbXBhdGliaWxpdHkgd2l0aCBib2FyZCBjYWNoZXMsIFVsZiBDYXJsc3NvbgogICovCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8YXNtL3NnaWFsaWIuaD4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9kZWMvcHJvbS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2RlYy9wcm9tLmgKaW5kZXggYjljODIwMy4uYzBlYWQ2MyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2RlYy9wcm9tLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2RlYy9wcm9tLmgKQEAgLTEwOCw3ICsxMDgsNyBAQAogCiAvKgogICogT24gTUlQUzY0IHdlIGhhdmUgdG8gY2FsbCBQUk9NIGZ1bmN0aW9ucyB2aWEgYSBoZWxwZXIKLSAqIGRpc3BhdGNoZXIgdG8gYWNjb21vZGF0ZSBBQkkgaW5jb21wYXRpYmlsaXRpZXMuCisgKiBkaXNwYXRjaGVyIHRvIGFjY29tbW9kYXRlIEFCSSBpbmNvbXBhdGliaWxpdGllcy4KICAqLwogI2RlZmluZSBfX0RFQ19QUk9NX08zMihmdW4sIGFyZykgZnVuIGFyZyBfX2FzbV9fKCNmdW4pOyBcCiAJCQkJIF9fYXNtX18oI2Z1biAiID0gY2FsbF9vMzIiKQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2Zsb3BweS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2Zsb3BweS5oCmluZGV4IDk5MmQyMzIuLmM1YzdjMGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9mbG9wcHkuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vZmxvcHB5LmgKQEAgLTI0LDcgKzI0LDcgQEAKICAqIEFuZCBvbiBNaXBzJ3MgdGhlIENNT1MgaW5mbyBmYWlscyBhbHNvIC4uLgogICoKICAqIEZJWE1FOiBUaGlzIGluZm9ybWF0aW9uIHNob3VsZCBjb21lIGZyb20gdGhlIEFSQyBjb25maWd1cmF0aW9uIHRyZWUKLSAqICAgICAgICBvciB3aGVyZWV2ZXIgYSBwYXJ0aWN1bGFyIG1hY2hpbmUgaGFzIHN0b3JlZCB0aGlzIC4uLgorICogICAgICAgIG9yIHdoZXJldmVyIGEgcGFydGljdWxhciBtYWNoaW5lIGhhcyBzdG9yZWQgdGhpcyAuLi4KICAqLwogI2RlZmluZSBGTE9QUFkwX1RZUEUgCQlmZF9kcml2ZV90eXBlKDApCiAjZGVmaW5lIEZMT1BQWTFfVFlQRQkJZmRfZHJpdmVfdHlwZSgxKQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2h3X2lycS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2h3X2lycS5oCmluZGV4IGFjYTA1YTQuLjc3YWRkYTIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9od19pcnEuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vaHdfaXJxLmgKQEAgLTEzLDcgKzEzLDcgQEAKIGV4dGVybiBhdG9taWNfdCBpcnFfZXJyX2NvdW50OwogCiAvKgotICogaW50ZXJydXB0LXJldHJpZ2dlcjogTk9QIGZvciBub3cuIFRoaXMgbWF5IG5vdCBiZSBhcHJvcHJpYXRlIGZvciBhbGwKKyAqIGludGVycnVwdC1yZXRyaWdnZXI6IE5PUCBmb3Igbm93LiBUaGlzIG1heSBub3QgYmUgYXBwcm9wcmlhdGUgZm9yIGFsbAogICogbWFjaGluZXMsIHdlJ2xsIHNlZSAuLi4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vaW8uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9pby5oCmluZGV4IDViMDE3ZjIuLmIwNGU0ZGUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9pby5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9pby5oCkBAIC0yNDIsNyArMjQyLDcgQEAKICAqIFRoaXMgdmVyc2lvbiBvZiBpb3JlbWFwIGVuc3VyZXMgdGhhdCB0aGUgbWVtb3J5IGlzIG1hcmtlZCB1bmNhY2hhYmxlCiAgKiBvbiB0aGUgQ1BVIGFzIHdlbGwgYXMgaG9ub3VyaW5nIGV4aXN0aW5nIGNhY2hpbmcgcnVsZXMgZnJvbSB0aGluZ3MgbGlrZQogICogdGhlIFBDSSBidXMuIE5vdGUgdGhhdCB0aGVyZSBhcmUgb3RoZXIgY2FjaGVzIGFuZCBidWZmZXJzIG9uIG1hbnkKLSAqIGJ1c3Nlcy4gSW4gcGF0aWN1bGFyIGRyaXZlciBhdXRob3JzIHNob3VsZCByZWFkIHVwIG9uIFBDSSB3cml0ZXMKKyAqIGJ1c3Nlcy4gSW4gcGFydGljdWxhciBkcml2ZXIgYXV0aG9ycyBzaG91bGQgcmVhZCB1cCBvbiBQQ0kgd3JpdGVzCiAgKgogICogSXQncyB1c2VmdWwgaWYgc29tZSBjb250cm9sIHJlZ2lzdGVycyBhcmUgaW4gc3VjaCBhbiBhcmVhIGFuZAogICogd3JpdGUgY29tYmluaW5nIG9yIHJlYWQgY2FjaGluZyBpcyBub3QgZGVzaXJhYmxlOgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL2lycWZsYWdzLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vaXJxZmxhZ3MuaAppbmRleCA5ZWYzYjBkLi4zMDljYmNkIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vaXJxZmxhZ3MuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vaXJxZmxhZ3MuaApAQCAtMTc0LDcgKzE3NCw3IEBACiAJIm10YzAJXFxmbGFncywgJDIsIDEJCQkJCQlcbiIKICNlbGlmIGRlZmluZWQoQ09ORklHX0NQVV9NSVBTUjIpICYmIGRlZmluZWQoQ09ORklHX0lSUV9DUFUpCiAJLyoKLQkgKiBTbG93LCBidXQgZG9lc24ndCBzdWZmZXIgZnJvbSBhIHJlbGF0aXZseSB1bmxpa2VseSByYWNlCisJICogU2xvdywgYnV0IGRvZXNuJ3Qgc3VmZmVyIGZyb20gYSByZWxhdGl2ZWx5IHVubGlrZWx5IHJhY2UKIAkgKiBjb25kaXRpb24gd2UncmUgaGF2aW5nIHNpbmNlIGRheXMgMS4KIAkgKi8KIAkiCWJlcXoJXFxmbGFncywgMWYJCQkJCVxuIgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY205NjN4eF90YWcuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWJjbTYzeHgvYmNtOTYzeHhfdGFnLmgKaW5kZXggNTMyNTA4NC4uMzI5NzhkMyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtYmNtNjN4eC9iY205NjN4eF90YWcuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1iY202M3h4L2JjbTk2M3h4X3RhZy5oCkBAIC00LDcgKzQsNyBAQAogI2RlZmluZSBUQUdWRVJfTEVOCQk0CS8qIExlbmd0aCBvZiBUYWcgVmVyc2lvbiAqLwogI2RlZmluZSBUQUdMQVlPVVRfTEVOCQk0CS8qIExlbmd0aCBvZiBGbGFzaExheW91dFZlciAqLwogI2RlZmluZSBTSUcxX0xFTgkJMjAJLyogQ29tcGFueSBTaWduYXR1cmUgMSBMZW5ndGggKi8KLSNkZWZpbmUgU0lHMl9MRU4JCTE0CS8qIENvbXBhbnkgU2lnbmF0dXJlIDIgTGVuZ2h0ICovCisjZGVmaW5lIFNJRzJfTEVOCQkxNAkvKiBDb21wYW55IFNpZ25hdHVyZSAyIExlbmd0aCAqLwogI2RlZmluZSBCT0FSRElEX0xFTgkJMTYJLyogTGVuZ3RoIG9mIEJvYXJkSWQgKi8KICNkZWZpbmUgRU5ESUFORkxBR19MRU4JCTIJLyogRW5kaWFuIEZsYWcgTGVuZ3RoICovCiAjZGVmaW5lIENISVBJRF9MRU4JCTYJLyogQ2hpcCBJZCBMZW5ndGggKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWlwMzIvbWMxNDY4MThydGMuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWlwMzIvbWMxNDY4MThydGMuaAppbmRleCBjMjhiYThkLi42YjZiYWI0IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1pcDMyL21jMTQ2ODE4cnRjLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtaXAzMi9tYzE0NjgxOHJ0Yy5oCkBAIC0yNiw3ICsyNiw3IEBACiB9CiAKIC8qCi0gKiBGSVhNRTogRG8gaXQgcmlnaHQuIEZvciBub3cganVzdCBhc3N1bWUgdGhhdCBub29uZSBsaXZlcyBpbiAyMHRoIGNlbnR1cnkKKyAqIEZJWE1FOiBEbyBpdCByaWdodC4gRm9yIG5vdyBqdXN0IGFzc3VtZSB0aGF0IG5vIG9uZSBsaXZlcyBpbiAyMHRoIGNlbnR1cnkKICAqIGFuZCBubyBPMiB1c2VyIGluIDIydGggY2VudHVyeSA7LSkKICAqLwogI2RlZmluZSBtYzE0NjgxOF9kZWNvZGVfeWVhcih5ZWFyKSAoKHllYXIpICsgMjAwMCkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWxvb25nc29uL2NzNTUzNi9jczU1MzYuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLWxvb25nc29uL2NzNTUzNi9jczU1MzYuaAppbmRleCAwMjFmNzdjLi4yYThlMmJiIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1sb29uZ3Nvbi9jczU1MzYvY3M1NTM2LmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtbG9vbmdzb24vY3M1NTM2L2NzNTUzNi5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIFRoZSBoZWFkZXIgZmlsZSBvZiBjczU1MzYgc291cnRoIGJyaWRnZS4KKyAqIFRoZSBoZWFkZXIgZmlsZSBvZiBjczU1MzYgc291dGggYnJpZGdlLgogICoKICAqIENvcHlyaWdodCAoQykgMjAwNyBMZW1vdGUsIEluYy4KICAqIEF1dGhvciA6IGpsbGl1IDxsaXVqbEBsZW1vdGUuY29tPgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTAwMC5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTAwMC5oCmluZGV4IDZkMWZmOTAuLjY1MDU5MjUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjEwMDAuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxMDAwLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQWxjaGVteSBTZW1pIFBiMTAwMCBSZWZlcnJlbmNlIEJvYXJkCisgKiBBbGNoZW15IFNlbWkgUGIxMDAwIFJlZmVyZW5jZSBCb2FyZAogICoKICAqIENvcHlyaWdodCAyMDAxLCAyMDA4IE1vbnRhVmlzdGEgU29mdHdhcmUgSW5jLgogICogQXV0aG9yOiBNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuIDxzb3VyY2VAbXZpc3RhLmNvbT4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjEyMDAuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjEyMDAuaAppbmRleCA5NjJlYjU1Li5mY2U0MzMyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxMjAwLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTIwMC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIEFNRCBBbGNoZW15IFBiMTIwMCBSZWZlcnJlbmNlIEJvYXJkCisgKiBBTUQgQWxjaGVteSBQYjEyMDAgUmVmZXJlbmNlIEJvYXJkCiAgKiBCb2FyZCBSZWdpc3RlcnMgZGVmaW5lcy4KICAqCiAgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjE1NTAuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBiMXgwMC9wYjE1NTAuaAppbmRleCBmYzRkNzY2Li5mODM1Yzg4IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wYjF4MDAvcGIxNTUwLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21hY2gtcGIxeDAwL3BiMTU1MC5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIEFNRCBBbGNoZW15IFNlbWkgUEIxNTUwIFJlZmVycmVuY2UgQm9hcmQKKyAqIEFNRCBBbGNoZW15IFNlbWkgUEIxNTUwIFJlZmVyZW5jZSBCb2FyZAogICogQm9hcmQgUmVnaXN0ZXJzIGRlZmluZXMuCiAgKgogICogQ29weXJpZ2h0IDIwMDQgRW1iZWRkZWQgRWRnZSBMTEMuCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWFjaC1wb3dlcnR2L2RtYS1jb2hlcmVuY2UuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBvd2VydHYvZG1hLWNvaGVyZW5jZS5oCmluZGV4IGY3NjAyOWMuLmE4ZTcyY2YgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBvd2VydHYvZG1hLWNvaGVyZW5jZS5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9tYWNoLXBvd2VydHYvZG1hLWNvaGVyZW5jZS5oCkBAIC00OCw3ICs0OCw3IEBACiAJCQkJLyogY2hlY2sgZm9yIGEgdmFsaWQgcGFnZSAqLwogCQkJCWlmIChwdGVfcHJlc2VudChwdGUpKSB7CiAJCQkJCS8qIGdldCB0aGUgcGh5c2ljYWwgYWRkcmVzcyB0aGUgcGFnZSBpcwotCQkJCQkgKiByZWZlcmluZyB0byAqLworCQkJCQkgKiByZWZlcnJpbmcgdG8gKi8KIAkJCQkJcGh5c19hZGRyID0gKHVuc2lnbmVkIGxvbmcpCiAJCQkJCQlwYWdlX3RvX3BoeXMocHRlX3BhZ2UocHRlKSk7CiAJCQkJCS8qIGFkZCB0aGUgb2Zmc2V0IHdpdGhpbiB0aGUgcGFnZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL21pcHNyZWdzLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWlwc3JlZ3MuaAppbmRleCA0ZDk4NzA5Li42YTZmOGE4IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWlwc3JlZ3MuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vbWlwc3JlZ3MuaApAQCAtOTIyLDcgKzkyMiw3IEBACiAjZGVmaW5lIHdyaXRlX2MwX2NvbmZpZzcodmFsKQlfX3dyaXRlXzMyYml0X2MwX3JlZ2lzdGVyKCQxNiwgNywgdmFsKQogCiAvKgotICogVGhlIFdhdGNoTG8gcmVnaXN0ZXIuICBUaGVyZSBtYXkgYmUgdXB0byA4IG9mIHRoZW0uCisgKiBUaGUgV2F0Y2hMbyByZWdpc3Rlci4gIFRoZXJlIG1heSBiZSB1cCB0byA4IG9mIHRoZW0uCiAgKi8KICNkZWZpbmUgcmVhZF9jMF93YXRjaGxvMCgpCV9fcmVhZF91bG9uZ19jMF9yZWdpc3RlcigkMTgsIDApCiAjZGVmaW5lIHJlYWRfYzBfd2F0Y2hsbzEoKQlfX3JlYWRfdWxvbmdfYzBfcmVnaXN0ZXIoJDE4LCAxKQpAQCAtOTQyLDcgKzk0Miw3IEBACiAjZGVmaW5lIHdyaXRlX2MwX3dhdGNobG83KHZhbCkJX193cml0ZV91bG9uZ19jMF9yZWdpc3RlcigkMTgsIDcsIHZhbCkKIAogLyoKLSAqIFRoZSBXYXRjaEhpIHJlZ2lzdGVyLiAgVGhlcmUgbWF5IGJlIHVwdG8gOCBvZiB0aGVtLgorICogVGhlIFdhdGNoSGkgcmVnaXN0ZXIuICBUaGVyZSBtYXkgYmUgdXAgdG8gOCBvZiB0aGVtLgogICovCiAjZGVmaW5lIHJlYWRfYzBfd2F0Y2hoaTAoKQlfX3JlYWRfMzJiaXRfYzBfcmVnaXN0ZXIoJDE5LCAwKQogI2RlZmluZSByZWFkX2MwX3dhdGNoaGkxKCkJX19yZWFkXzMyYml0X2MwX3JlZ2lzdGVyKCQxOSwgMSkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290aW5mby5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWJvb3RpbmZvLmgKaW5kZXggZjNjMjNhNC4uNGU0YzNhOCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWJvb3RpbmZvLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWJvb3RpbmZvLmgKQEAgLTIwMCw3ICsyMDAsNyBAQAogCUNWTVhfQ0hJUF9UWVBFX01BWCwKIH07CiAKLS8qIENvbXBhdGFiaWxpdHkgYWxpYXMgZm9yIE5BQzM4IG5hbWUgY2hhbmdlLCBwbGFubmVkIHRvIGJlIHJlbW92ZWQKKy8qIENvbXBhdGliaWxpdHkgYWxpYXMgZm9yIE5BQzM4IG5hbWUgY2hhbmdlLCBwbGFubmVkIHRvIGJlIHJlbW92ZWQKICAqIGZyb20gU0RLIDEuNyAqLwogI2RlZmluZSBDVk1YX0JPQVJEX1RZUEVfTkFPMzgJQ1ZNWF9CT0FSRF9UWVBFX05BQzM4CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290bWVtLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtYm9vdG1lbS5oCmluZGV4IDhlNzA4YmQuLjg3Nzg0NWIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1ib290bWVtLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWJvb3RtZW0uaApAQCAtNjcsNyArNjcsNyBAQAogCiAvKgogICogU3RydWN0dXJlIGZvciBuYW1lZCBtZW1vcnkgYmxvY2tzLiAgTnVtYmVyIG9mIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQotICogY2FuIGJlIGNoYW5nZWQgd2l0aG91dCBhZmZlY3RpbmcgY29tcGF0aWJsaXR5LCBidXQgbmFtZSBsZW5ndGgKKyAqIGNhbiBiZSBjaGFuZ2VkIHdpdGhvdXQgYWZmZWN0aW5nIGNvbXBhdGliaWxpdHksIGJ1dCBuYW1lIGxlbmd0aAogICogY2hhbmdlcyByZXF1aXJlIGEgYnVtcCBpbiB0aGUgYm9vdG1lbSBkZXNjcmlwdG9yIHZlcnNpb24gTm90ZTogVGhpcwogICogc3RydWN0dXJlIG11c3QgYmUgbmF0dXJhbGx5IDY0IGJpdCBhbGlnbmVkLCBhcyBhIHNpbmdsZSBtZW1vcnkKICAqIGltYWdlIHdpbGwgYmUgdXNlZCBieSBib3RoIDMyIGFuZCA2NCBiaXQgcHJvZ3JhbXMuCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtbDJjLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXgtbDJjLmgKaW5kZXggMGIzMmM1Yi4uMmM4ZmY5ZSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL29jdGVvbi9jdm14LWwyYy5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC1sMmMuaApAQCAtMTU3LDcgKzE1Nyw3IEBACiAKIC8qKgogICogQ29uZmlndXJlIG9uZSBvZiB0aGUgZm91ciBMMiBDYWNoZSBwZXJmb3JtYW5jZSBjb3VudGVycyB0byBjYXB0dXJlIGV2ZW50Ci0gKiBvY2N1cmVuY2VzLgorICogb2NjdXJyZW5jZXMuCiAgKgogICogQGNvdW50ZXI6ICAgICAgICBUaGUgY291bnRlciB0byBjb25maWd1cmUuIFJhbmdlIDAuLjMuCiAgKiBAZXZlbnQ6ICAgICAgICAgIFRoZSB0eXBlIG9mIEwyIENhY2hlIGV2ZW50IG9jY3VycmVuY2UgdG8gY291bnQuCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vb2N0ZW9uL2N2bXguaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC5oCmluZGV4IDlkOTM4MWUuLjdlMTI4NjcgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9vY3Rlb24vY3ZteC5oCkBAIC0xNTEsNyArMTUxLDcgQEAKICNlbmRpZgogCiAvKioKLSAqIENvbnZlcnQgYSBtZW1vcnkgcG9pbnRlciAodm9pZCopIGludG8gYSBoYXJkd2FyZSBjb21wYXRhYmxlCisgKiBDb252ZXJ0IGEgbWVtb3J5IHBvaW50ZXIgKHZvaWQqKSBpbnRvIGEgaGFyZHdhcmUgY29tcGF0aWJsZQogICogbWVtb3J5IGFkZHJlc3MgKHVpbnQ2NF90KS4gT2N0ZW9uIGhhcmR3YXJlIHdpZGdldHMgZG9uJ3QKICAqIHVuZGVyc3RhbmQgbG9naWNhbCBhZGRyZXNzZXMuCiAgKgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BhY2Nlc3MuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wYWNjZXNzLmgKaW5kZXggYzIzOTRmOC4uOWNlNWExZSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BhY2Nlc3MuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vcGFjY2Vzcy5oCkBAIC03LDcgKzcsNyBAQAogICogQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAwIFNpbGljb24gR3JhcGhpY3MsIEluYy4KICAqCiAgKiBQcm90ZWN0ZWQgbWVtb3J5IGFjY2Vzcy4gIFVzZWQgZm9yIGV2ZXJ5dGhpbmcgdGhhdCBtaWdodCB0YWtlIHJldmVuZ2UKLSAqIGJ5IHNlbmRpbmcgYSBEQkUgZXJyb3IgbGlrZSBhY2Nlc3NpbmcgcG9zc2libHkgbm9uLWV4aXN0YW50IG1lbW9yeSBvcgorICogYnkgc2VuZGluZyBhIERCRSBlcnJvciBsaWtlIGFjY2Vzc2luZyBwb3NzaWJseSBub24tZXhpc3RlbnQgbWVtb3J5IG9yCiAgKiBkZXZpY2VzLgogICovCiAjaWZuZGVmIF9BU01fUEFDQ0VTU19ICmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vcGNpL2JyaWRnZS5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BjaS9icmlkZ2UuaAppbmRleCBmMWY1MDhlLi5iZTQ0ZmIwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vcGNpL2JyaWRnZS5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wY2kvYnJpZGdlLmgKQEAgLTI2Miw3ICsyNjIsNyBAQAogfSBicmlkZ2VfdDsKIAogLyoKLSAqIEZpZWxkIGZvcm1hdHMgZm9yIEVycm9yIENvbW1hbmQgV29yZCBhbmQgQXV4aWxsYXJ5IEVycm9yIENvbW1hbmQgV29yZAorICogRmllbGQgZm9ybWF0cyBmb3IgRXJyb3IgQ29tbWFuZCBXb3JkIGFuZCBBdXhpbGlhcnkgRXJyb3IgQ29tbWFuZCBXb3JkCiAgKiBvZiBicmlkZ2UuCiAgKi8KIHR5cGVkZWYgc3RydWN0IGJyaWRnZV9lcnJfY21kd29yZF9zIHsKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3JlZ29wcy5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BtYy1zaWVycmEvbXNwNzF4eC9tc3BfcmVnb3BzLmgKaW5kZXggNjBhNWEzOC4uN2Q0MTQ3NCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BtYy1zaWVycmEvbXNwNzF4eC9tc3BfcmVnb3BzLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3BtYy1zaWVycmEvbXNwNzF4eC9tc3BfcmVnb3BzLmgKQEAgLTIwNSw3ICsyMDUsNyBAQAogICogICBjdXN0b21fcmVhZF9yZWczMihhZGRyZXNzLCB0bXApOwk8LS0gUmVhZHMgdGhlIGFkZHJlc3MgYW5kIHB1dCB0aGUgdmFsdWUKICAqCQkJCQkJaW4gdGhlICd0bXAnIHZhcmlhYmxlIGdpdmVuCiAgKgotICoJRnJvbSBoZXJlIG9uIG91dCwgeW91IGFyZSAoYmFzaWNseSkgYXRvbWljLCBzbyBkb24ndCBkbyBhbnl0aGluZyB0b28KKyAqCUZyb20gaGVyZSBvbiBvdXQsIHlvdSBhcmUgKGJhc2ljYWxseSkgYXRvbWljLCBzbyBkb24ndCBkbyBhbnl0aGluZyB0b28KICAqCWZhbmN5IQogICoJQWxzbywgdGhpcyBjb2RlIG1heSBsb29wIGlmIHRoZSBlbmQgb2YgdGhpcyBibG9jayBmYWlscyB0byB3cml0ZQogICoJZXZlcnl0aGluZyBiYWNrIHNhZmVseSBkdWUgZG8gdGhlIG90aGVyIENQVSwgc28gZG8gTk9UIGRvIGFueXRoaW5nCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKaW5kZXggZWFkNjkyOC4uYzEwNGYxMCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaApAQCAtMzM3LDcgKzMzNyw3IEBACiAvKgogICogUmV0dXJuX2FkZHJlc3MgaXMgYSByZXBsYWNlbWVudCBmb3IgX19idWlsdGluX3JldHVybl9hZGRyZXNzKGNvdW50KQogICogd2hpY2ggb24gY2VydGFpbiBhcmNoaXRlY3R1cmVzIGNhbm5vdCByZWFzb25hYmx5IGJlIGltcGxlbWVudGVkIGluIEdDQwotICogKE1JUFMsIEFscGhhKSBvciBpcyB1bnVzZWFibGUgd2l0aCAtZm9taXQtZnJhbWUtcG9pbnRlciAoaTM4NikuCisgKiAoTUlQUywgQWxwaGEpIG9yIGlzIHVudXNhYmxlIHdpdGggLWZvbWl0LWZyYW1lLXBvaW50ZXIgKGkzODYpLgogICogTm90ZSB0aGF0IF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyh4Pj0xKSBpcyBmb3JiaWRkZW4gYmVjYXVzZSBHQ0MKICAqIGFib3J0cyBjb21waWxhdGlvbiBvbiBzb21lIENQVXMuICBJdCdzIHNpbXBseSBub3QgcG9zc2libGUgdG8gdW53aW5kCiAgKiBzb21lIENQVSdzIHN0YWNrZnJhbWVzLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NnaS9pb2MuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zZ2kvaW9jLmgKaW5kZXggNTdhOTcxOS4uMzgwMzQ3YiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NnaS9pb2MuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2dpL2lvYy5oCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8YXNtL3NnaS9waTEuaD4KIAogLyoKLSAqIEFsbCByZWdpc3RlcnMgYXJlIDgtYml0IHdpZGUgYWxsaWduZWQgb24gMzItYml0IGJvdW5kYXJ5LiBCYWQgdGhpbmdzCisgKiBBbGwgcmVnaXN0ZXJzIGFyZSA4LWJpdCB3aWRlIGFsaWduZWQgb24gMzItYml0IGJvdW5kYXJ5LiBCYWQgdGhpbmdzCiAgKiBoYXBwZW4gaWYgeW91IHRyeSB3b3JkIGFjY2VzcyB0aGVtLiBZb3UgaGF2ZSBiZWVuIHdhcm5lZC4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lieXRlL3NiMTI1MF9tYWMuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zaWJ5dGUvc2IxMjUwX21hYy5oCmluZGV4IDU5MWI5MDYuLjc3Zjc4NzIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zaWJ5dGUvc2IxMjUwX21hYy5oCisrKyBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zaWJ5dGUvc2IxMjUwX21hYy5oCkBAIC01MjAsNyArNTIwLDcgQEAKICNkZWZpbmUgR19NQUNfUlhfRU9QX0NPVU5URVIoeCkgICAgIF9TQl9HRVRWQUxVRSh4LCBTX01BQ19SWF9FT1BfQ09VTlRFUiwgTV9NQUNfUlhfRU9QX0NPVU5URVIpCiAKIC8qCi0gKiBNQUMgUmVjaWV2ZSBBZGRyZXNzIEZpbHRlciBFeGFjdCBNYXRjaCBSZWdpc3RlcnMgKFRhYmxlIDktMjEpCisgKiBNQUMgUmVjZWl2ZSBBZGRyZXNzIEZpbHRlciBFeGFjdCBNYXRjaCBSZWdpc3RlcnMgKFRhYmxlIDktMjEpCiAgKiBSZWdpc3RlcnM6IE1BQ19BRERSMF8wIHRocm91Z2ggTUFDX0FERFI3XzAKICAqIFJlZ2lzdGVyczogTUFDX0FERFIwXzEgdGhyb3VnaCBNQUNfQUREUjdfMQogICogUmVnaXN0ZXJzOiBNQUNfQUREUjBfMiB0aHJvdWdoIE1BQ19BRERSN18yCkBAIC01MzgsNyArNTM4LDcgQEAKIC8qIE5vIGJpdGZpZWxkcyAqLwogCiAvKgotICogTUFDIFJlY2lldmUgQWRkcmVzcyBGaWx0ZXIgSGFzaCBNYXRjaCBSZWdpc3RlcnMgKFRhYmxlIDktMjIpCisgKiBNQUMgUmVjZWl2ZSBBZGRyZXNzIEZpbHRlciBIYXNoIE1hdGNoIFJlZ2lzdGVycyAoVGFibGUgOS0yMikKICAqIFJlZ2lzdGVyczogTUFDX0hBU0gwXzAgdGhyb3VnaCBNQUNfSEFTSDdfMAogICogUmVnaXN0ZXJzOiBNQUNfSEFTSDBfMSB0aHJvdWdoIE1BQ19IQVNIN18xCiAgKiBSZWdpc3RlcnM6IE1BQ19IQVNIMF8yIHRocm91Z2ggTUFDX0hBU0g3XzIKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zaWdpbmZvLmggYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc2lnaW5mby5oCmluZGV4IDFjYTY0YjQuLjIwZWJlYjggMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zaWdpbmZvLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NpZ2luZm8uaApAQCAtMTAxLDcgKzEwMSw3IEBACiAKIC8qCiAgKiBzaV9jb2RlIHZhbHVlcwotICogQWdhaW4gdGhlc2UgaGF2ZSBiZWVuIGNob29zZW4gdG8gYmUgSVJJWCBjb21wYXRpYmxlLgorICogQWdhaW4gdGhlc2UgaGF2ZSBiZWVuIGNob3NlbiB0byBiZSBJUklYIGNvbXBhdGlibGUuCiAgKi8KICN1bmRlZiBTSV9BU1lOQ0lPCiAjdW5kZWYgU0lfVElNRVIKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9rbGNvbmZpZy5oIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL2tsY29uZmlnLmgKaW5kZXggMDllNTkwZC4uZmUwMjkwMCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL2tsY29uZmlnLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL2tsY29uZmlnLmgKQEAgLTc4LDcgKzc4LDcgQEAKICAqLwogI2RlZmluZSBNQVhfU0xPVFNfUEVSX05PREUJKDEgKyAyICsgNiArIDIpCiAKLS8qIFhYWCBpZiBlYWNoIG5vZGUgaXMgZ3VyYW50ZWVkIHRvIGhhdmUgc29tZSBtZW1vcnkgKi8KKy8qIFhYWCBpZiBlYWNoIG5vZGUgaXMgZ3VhcmFudGVlZCB0byBoYXZlIHNvbWUgbWVtb3J5ICovCiAKICNkZWZpbmUgTUFYX1BDSV9ERVZTCQk4CiAKQEAgLTUzOSw3ICs1MzksNyBAQAogI2RlZmluZSBLTFNUUlVDVF9JT0MzX1RUWSAJMjQKIAogLyogRWFybHkgQWNjZXNzIElPIHByb21zIGFyZSBjb21wYXRpYmxlCi0gICBvbmx5IHdpdGggS0xTVFJVQ1QgdmFsdWVzIHVwdG8gMjQuICovCisgICBvbmx5IHdpdGggS0xTVFJVQ1QgdmFsdWVzIHVwIHRvIDI0LiAqLwogCiAjZGVmaW5lIEtMU1RSVUNUX0ZJQkVSQ0hBTk5FTCAJMjUKICNkZWZpbmUgS0xTVFJVQ1RfTU9EX1NFUklBTF9OVU0gMjYKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9zbjAvaHViaW8uaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zbi9zbjAvaHViaW8uaAppbmRleCAzMWM3NmMwLi40NjI4NmQ4IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vc24vc24wL2h1YmlvLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3NuL3NuMC9odWJpby5oCkBAIC02MjIsNyArNjIyLDcgQEAKICAqLwogI2RlZmluZQlJSU9fSUNSQl9QUk9DMAkJMAkvKiBTb3VyY2Ugb2YgcmVxdWVzdCBpcyBQcm9jIDAgKi8KICNkZWZpbmUJSUlPX0lDUkJfUFJPQzEJCTEJLyogU291cmNlIG9mIHJlcXVlc3QgaXMgUHJvYyAxICovCi0jZGVmaW5lCUlJT19JQ1JCX0dCX1JFUQkJMgkvKiBTb3VyY2UgaXMgR3VyYW50ZWVkIEJXIHJlcXVlc3QgKi8KKyNkZWZpbmUJSUlPX0lDUkJfR0JfUkVRCQkyCS8qIFNvdXJjZSBpcyBHdWFyYW50ZWVkIEJXIHJlcXVlc3QgKi8KICNkZWZpbmUJSUlPX0lDUkJfSU9fUkVRCQkzCS8qIFNvdXJjZSBpcyBOb3JtYWwgSU8gcmVxdWVzdAkqLwogCiAvKgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3N0YWNrZnJhbWUuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS9zdGFja2ZyYW1lLmgKaW5kZXggNTg3MzBjNS4uYjRiYTI0NCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3N0YWNrZnJhbWUuaAorKysgYi9hcmNoL21pcHMvaW5jbHVkZS9hc20vc3RhY2tmcmFtZS5oCkBAIC0zNDYsNyArMzQ2LDcgQEAKIAkJICogd2UgY2FuJ3QgZGlzcGF0Y2ggaXQgZGlyZWN0bHkgd2l0aG91dCB0cmFzaGluZwogCQkgKiBzb21lIHJlZ2lzdGVycywgc28gd2UnbGwgdHJ5IHRvIGRldGVjdCB0aGlzIHVubGlrZWx5CiAJCSAqIGNhc2UgYW5kIHByb2dyYW0gYSBzb2Z0d2FyZSBpbnRlcnJ1cHQgaW4gdGhlIFZQRSwKLQkJICogYXMgd291bGQgYmUgZG9uZSBmb3IgYSBjcm9zcy1WUEUgSVBJLiAgVG8gYWNjb21vZGF0ZQorCQkgKiBhcyB3b3VsZCBiZSBkb25lIGZvciBhIGNyb3NzLVZQRSBJUEkuICBUbyBhY2NvbW1vZGF0ZQogCQkgKiB0aGUgaGFuZGxpbmcgb2YgdGhhdCBjYXNlLCB3ZSdyZSBkb2luZyBhIERWUEUgaW5zdGVhZAogCQkgKiBvZiBqdXN0IGEgRE1UIGhlcmUgdG8gcHJvdGVjdCBhZ2FpbnN0IG90aGVyIHRocmVhZHMuCiAJCSAqIFRoaXMgaXMgYSBsb3Qgb2YgY3J1ZnQgdG8gY292ZXIgYSB0aW55IHdpbmRvdy4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS93YXIuaCBiL2FyY2gvbWlwcy9pbmNsdWRlL2FzbS93YXIuaAppbmRleCAyMjM2MWQ1Li5mYTEzM2MxIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvaW5jbHVkZS9hc20vd2FyLmgKKysrIGIvYXJjaC9taXBzL2luY2x1ZGUvYXNtL3dhci5oCkBAIC0yMjcsNyArMjI3LDcgQEAKICNlbmRpZgogCiAvKgotICogT24gdGhlIFIxMDAwMCB1cHRvIHZlcnNpb24gMi42IChub3Qgc3VyZSBhYm91dCAyLjcpIHRoZXJlIGlzIGEgYnVnIHRoYXQKKyAqIE9uIHRoZSBSMTAwMDAgdXAgdG8gdmVyc2lvbiAyLjYgKG5vdCBzdXJlIGFib3V0IDIuNykgdGhlcmUgaXMgYSBidWcgdGhhdAogICogbWF5IGNhdXNlIGxsIC8gc2MgYW5kIGxsZCAvIHNjZCBzZXF1ZW5jZXMgdG8gZXhlY3V0ZSBub24tYXRvbWljYWxseS4KICAqLwogI2lmbmRlZiBSMTAwMDBfTExTQ19XQVIKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9qejQ3NDAvYm9hcmQtcWlfbGI2MC5jIGIvYXJjaC9taXBzL2p6NDc0MC9ib2FyZC1xaV9sYjYwLmMKaW5kZXggYmMxOGRhYS4uYzNiMDRiZSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2p6NDc0MC9ib2FyZC1xaV9sYjYwLmMKKysrIGIvYXJjaC9taXBzL2p6NDc0MC9ib2FyZC1xaV9sYjYwLmMKQEAgLTY1LDcgKzY1LDcgQEAKIH07CiAKIC8qIEVhcmx5IHByb3RvdHlwZXMgb2YgdGhlIFFJIExCNjAgaGFkIG9ubHkgMUdCIG9mIE5BTkQuCi0gKiBJbiBvcmRlciB0byBzdXBwb3J0IHRoZXNlIGRldmljZXMgYXN3ZWxsIHRoZSBwYXJ0aXRpb24gYW5kIGVjYyBsYXlvdXQgaXMKKyAqIEluIG9yZGVyIHRvIHN1cHBvcnQgdGhlc2UgZGV2aWNlcyBhcyB3ZWxsIHRoZSBwYXJ0aXRpb24gYW5kIGVjYyBsYXlvdXQgaXMKICAqIGluaXRpYWxpemVkIGRlcGVuZGluZyBvbiB0aGUgTkFORCBzaXplICovCiBzdGF0aWMgc3RydWN0IG10ZF9wYXJ0aXRpb24gcWlfbGI2MF9wYXJ0aXRpb25zXzFnYltdID0gewogCXsKQEAgLTQzOSw3ICs0MzksNyBAQAogc3RhdGljIHZvaWQgX19pbml0IGJvYXJkX2dwaW9fc2V0dXAodm9pZCkKIHsKIAkvKiBXZSBvbmx5IG5lZWQgdG8gZW5hYmxlL2Rpc2FibGUgcHVsbHVwIGhlcmUgZm9yIHBpbnMgdXNlZCBpbiBnZW5lcmljCi0JICogZHJpdmVycy4gRXZlcnl0aGluZyBlbHNlIGlzIGRvbmUgYnkgdGhlIGRyaXZlcnMgdGhlbXNlbGZzLiAqLworCSAqIGRyaXZlcnMuIEV2ZXJ5dGhpbmcgZWxzZSBpcyBkb25lIGJ5IHRoZSBkcml2ZXJzIHRoZW1zZWx2ZXMuICovCiAJanpfZ3Bpb19kaXNhYmxlX3B1bGx1cChRSV9MQjYwX0dQSU9fU0RfVkNDX0VOX04pOwogCWp6X2dwaW9fZGlzYWJsZV9wdWxsdXAoUUlfTEI2MF9HUElPX1NEX0NEKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvY3B1LWJ1Z3M2NC5jIGIvYXJjaC9taXBzL2tlcm5lbC9jcHUtYnVnczY0LmMKaW5kZXggYjhiYjhiYS4uZjMwNWNhMSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9jcHUtYnVnczY0LmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC9jcHUtYnVnczY0LmMKQEAgLTczLDcgKzczLDcgQEAKIAkJOiAiMCIgKDUpLCAiMSIgKDgpLCAiMiIgKDUpKTsKIAlhbGlnbl9tb2QoYWxpZ24sIG1vZCk7CiAJLyoKLQkgKiBUaGUgdHJhaWxpbmcgbm9wIGlzIG5lZWRlZCB0byBmdWxsZmlsbCB0aGUgdHdvLWluc3RydWN0aW9uCisJICogVGhlIHRyYWlsaW5nIG5vcCBpcyBuZWVkZWQgdG8gZnVsZmlsbCB0aGUgdHdvLWluc3RydWN0aW9uCiAJICogcmVxdWlyZW1lbnQgYmV0d2VlbiByZWFkaW5nIGhpL2xvIGFuZCBzdGFyaW5nIGEgbXVsdC9kaXYuCiAJICogTGVhdmluZyBpdCBvdXQgbWF5IGNhdXNlIGdhcyBpbnNlcnQgYSBub3AgaXRzZWxmIGJyZWFraW5nCiAJICogdGhlIGRlc2lyZWQgYWxpZ25tZW50IG9mIHRoZSBuZXh0IGNodW5rLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9wZXJmX2V2ZW50X21pcHN4eC5jIGIvYXJjaC9taXBzL2tlcm5lbC9wZXJmX2V2ZW50X21pcHN4eC5jCmluZGV4IGQ5YTdkYjcuLjc1MjY2ZmYgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvcGVyZl9ldmVudF9taXBzeHguYworKysgYi9hcmNoL21pcHMva2VybmVsL3BlcmZfZXZlbnRfbWlwc3h4LmMKQEAgLTcyMSw3ICs3MjEsNyBAQAogCiAvKgogICogTUlQUyBwZXJmb3JtYW5jZSBjb3VudGVycyBjYW4gYmUgcGVyLVRDLiBUaGUgY29udHJvbCByZWdpc3RlcnMgY2FuCi0gKiBub3QgYmUgZGlyZWN0bHkgYWNjZXNzZWQgYWNjcm9zcyBDUFVzLiBIZW5jZSBpZiB3ZSB3YW50IHRvIGRvIGdsb2JhbAorICogbm90IGJlIGRpcmVjdGx5IGFjY2Vzc2VkIGFjcm9zcyBDUFVzLiBIZW5jZSBpZiB3ZSB3YW50IHRvIGRvIGdsb2JhbAogICogY29udHJvbCwgd2UgbmVlZCBjcm9zcyBDUFUgY2FsbHMuIG9uX2VhY2hfY3B1KCkgY2FuIGhlbHAgdXMsIGJ1dCB3ZQogICogY2FuIG5vdCBtYWtlIHN1cmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBpbnRlcnJ1cHRzIGVuYWJsZWQuIFNvCiAgKiBoZXJlIHdlIHBhdXNlIGxvY2FsIGNvdW50ZXJzIGFuZCB0aGVuIGdyYWIgYSByd2xvY2sgYW5kIGxlYXZlIHRoZQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9wcm9jZXNzLmMgYi9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYwppbmRleCBhZTE2N2RmLi5kMjExMmQzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYworKysgYi9hcmNoL21pcHMva2VybmVsL3Byb2Nlc3MuYwpAQCAtNDEwLDcgKzQxMCw3IEBACiAJaWYgKCFrYWxsc3ltc19sb29rdXBfc2l6ZV9vZmZzZXQocGMsICZzaXplLCAmb2ZzKSkKIAkJcmV0dXJuIDA7CiAJLyoKLQkgKiBSZXR1cm4gcmEgaWYgYW4gZXhjZXB0aW9uIG9jY3VyZWQgYXQgdGhlIGZpcnN0IGluc3RydWN0aW9uCisJICogUmV0dXJuIHJhIGlmIGFuIGV4Y2VwdGlvbiBvY2N1cnJlZCBhdCB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24KIAkgKi8KIAlpZiAodW5saWtlbHkob2ZzID09IDApKSB7CiAJCXBjID0gKnJhOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2tlcm5lbC9zbXAtbXQuYyBiL2FyY2gvbWlwcy9rZXJuZWwvc21wLW10LmMKaW5kZXggYzBlODE0MS4uMWVjNTZlNiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC9zbXAtbXQuYworKysgYi9hcmNoL21pcHMva2VybmVsL3NtcC1tdC5jCkBAIC0xMjAsNyArMTIwLDcgQEAKIAogCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsKIAotCXZwZmxhZ3MgPSBkdnBlKCk7CS8qIGNhbnQgYWNjZXNzIHRoZSBvdGhlciBDUFUncyByZWdpc3RlcnMgd2hpbHN0IE1WUEUgZW5hYmxlZCAqLworCXZwZmxhZ3MgPSBkdnBlKCk7CS8qIGNhbid0IGFjY2VzcyB0aGUgb3RoZXIgQ1BVJ3MgcmVnaXN0ZXJzIHdoaWxzdCBNVlBFIGVuYWJsZWQgKi8KIAogCXN3aXRjaCAoYWN0aW9uKSB7CiAJY2FzZSBTTVBfQ0FMTF9GVU5DVElPTjoKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvdGltZS5jIGIvYXJjaC9taXBzL2tlcm5lbC90aW1lLmMKaW5kZXggZmI3NDk3NC4uMTA4M2FkNCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2tlcm5lbC90aW1lLmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC90aW1lLmMKQEAgLTEwMiw3ICsxMDIsNyBAQAogCWNhc2UgQ1BVX1I0NDAwU0M6CiAJY2FzZSBDUFVfUjQ0MDBNQzoKIAkJLyoKLQkJICogVGhlIHB1Ymxpc2hlZCBlcnJhdGEgZm9yIHRoZSBSNDQwMCB1cHRvIDMuMCBzYXkgdGhlIENQVQorCQkgKiBUaGUgcHVibGlzaGVkIGVycmF0YSBmb3IgdGhlIFI0NDAwIHVwIHRvIDMuMCBzYXkgdGhlIENQVQogCQkgKiBoYXMgdGhlIG1mYzAgZnJvbSBjb3VudCBidWcuCiAJCSAqLwogCQlpZiAoKGN1cnJlbnRfY3B1X2RhdGEucHJvY2Vzc29yX2lkICYgMHhmZikgPD0gMHgzMCkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9rZXJuZWwvdnBlLmMgYi9hcmNoL21pcHMva2VybmVsL3ZwZS5jCmluZGV4IGFiNTJiN2MuLmRiYjZiNDAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9rZXJuZWwvdnBlLmMKKysrIGIvYXJjaC9taXBzL2tlcm5lbC92cGUuYwpAQCAtMTksNyArMTksNyBAQAogICogVlBFIHN1cHBvcnQgbW9kdWxlCiAgKgogICogUHJvdmlkZXMgc3VwcG9ydCBmb3IgbG9hZGluZyBhIE1JUFMgU1AgcHJvZ3JhbSBvbiBWUEUxLgotICogVGhlIFNQIGVudmlyb21lbnQgaXMgcmF0aGVyIHNpbXBsZSwgbm8gdGxiJ3MuICBJdCBuZWVkcyB0byBiZSByZWxvY2F0YWJsZQorICogVGhlIFNQIGVudmlyb25tZW50IGlzIHJhdGhlciBzaW1wbGUsIG5vIHRsYidzLiAgSXQgbmVlZHMgdG8gYmUgcmVsb2NhdGFibGUKICAqIChvciBwYXJ0aWFsbHkgbGlua2VkKS4gWW91IHNob3VsZCBpbml0aWFsaXNlIHlvdXIgc3RhY2sgaW4gdGhlIHN0YXJ0dXAKICAqIGNvZGUuIFRoaXMgbG9hZGVyIGxvb2tzIGZvciB0aGUgc3ltYm9sIF9fc3RhcnQgYW5kIHNldHMgdXAKICAqIGV4ZWN1dGlvbiB0byByZXN1bWUgZnJvbSB0aGVyZS4gVGhlIE1JUFMgU0RFIGtpdCBjb250YWlucyBzdWl0YWJsZSBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9saWIvc3Rybmxlbl91c2VyLlMgYi9hcmNoL21pcHMvbGliL3N0cm5sZW5fdXNlci5TCmluZGV4IGM3NjhlMzAwLi42NDQ1NzE2IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbGliL3N0cm5sZW5fdXNlci5TCisrKyBiL2FyY2gvbWlwcy9saWIvc3Rybmxlbl91c2VyLlMKQEAgLTE3LDcgKzE3LDcgQEAKIAkucHJldmlvdXMKIAogLyoKLSAqIFJldHVybiB0aGUgc2l6ZSBvZiBhIHN0cmluZyBpbmNsdWRpbmcgdGhlIGVuZGluZyBOVUwgY2hhcmFjdGVyIHVwdG8gYQorICogUmV0dXJuIHRoZSBzaXplIG9mIGEgc3RyaW5nIGluY2x1ZGluZyB0aGUgZW5kaW5nIE5VTCBjaGFyYWN0ZXIgdXAgdG8gYQogICogbWF4aW11bSBvZiBhMSBvciAwIGluIGNhc2Ugb2YgZXJyb3IuCiAgKgogICogTm90ZTogZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgd2UgZGVsaWJlcmF0ZWx5IGFjY2VwdCB0aGF0IGEgdXNlciBtYXkKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tYXRoLWVtdS9kcF9mc3AuYyBiL2FyY2gvbWlwcy9tYXRoLWVtdS9kcF9mc3AuYwppbmRleCAxZGZiZDkyLi5kYWVkNjgzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbWF0aC1lbXUvZHBfZnNwLmMKKysrIGIvYXJjaC9taXBzL21hdGgtZW11L2RwX2ZzcC5jCkBAIC02Miw3ICs2Miw3IEBACiAJCWJyZWFrOwogCX0KIAotCS8qIENBTlQgcG9zc2libHkgb3ZlcmZsb3csdW5kZXJmbG93LCBvciBuZWVkIHJvdW5kaW5nCisJLyogQ0FOJ1QgcG9zc2libHkgb3ZlcmZsb3csdW5kZXJmbG93LCBvciBuZWVkIHJvdW5kaW5nCiAJICovCiAKIAkvKiBkcm9wIHRoZSBoaWRkZW4gYml0ICovCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbWF0aC1lbXUvZHBfbXVsLmMgYi9hcmNoL21pcHMvbWF0aC1lbXUvZHBfbXVsLmMKaW5kZXggYWE1NjZlNy4uMDkxNzVmNCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21hdGgtZW11L2RwX211bC5jCisrKyBiL2FyY2gvbWlwcy9tYXRoLWVtdS9kcF9tdWwuYwpAQCAtMTA0LDcgKzEwNCw3IEBACiAJY2FzZSBDTFBBSVIoSUVFRTc1NF9DTEFTU19OT1JNLCBJRUVFNzU0X0NMQVNTX05PUk0pOgogCQlicmVhazsKIAl9Ci0JLyogcm0gPSB4bSAqIHltLCByZSA9IHhlK3llIGJhc2ljbHkgKi8KKwkvKiBybSA9IHhtICogeW0sIHJlID0geGUreWUgYmFzaWNhbGx5ICovCiAJYXNzZXJ0KHhtICYgRFBfSElEREVOX0JJVCk7CiAJYXNzZXJ0KHltICYgRFBfSElEREVOX0JJVCk7CiAJewpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21hdGgtZW11L2RzZW11bC5jIGIvYXJjaC9taXBzL21hdGgtZW11L2RzZW11bC5jCmluZGV4IDM2ZDk3NWEuLjNjNGE4YzUgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tYXRoLWVtdS9kc2VtdWwuYworKysgYi9hcmNoL21pcHMvbWF0aC1lbXUvZHNlbXVsLmMKQEAgLTMyLDcgKzMyLDcgQEAKICAqIG5vdCBjaGFuZ2UgY3AwX2VwYyBkdWUgdG8gdGhlIGluc3RydWN0aW9uCiAgKgogICogQWNjb3JkaW5nIHRvIHRoZSBzcGVjOgotICogMSkgaXQgc2hvdWxkbnQgYmUgYSBicmFuY2ggOi0pCisgKiAxKSBpdCBzaG91bGRuJ3QgYmUgYSBicmFuY2ggOi0pCiAgKiAyKSBpdCBjYW4gYmUgYSBDT1AgaW5zdHJ1Y3Rpb24gOi0oCiAgKiAzKSBpZiB3ZSBhcmUgdHJpbmcgdG8gcnVuIGEgcHJvdGVjdGVkIG1lbW9yeSBzcGFjZSB3ZSBtdXN0IHRha2UKICAqICAgIHNwZWNpYWwgY2FyZSBvbiBtZW1vcnkgYWNjZXNzIGluc3RydWN0aW9ucyA6LSgKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tYXRoLWVtdS9zcF9tdWwuYyBiL2FyY2gvbWlwcy9tYXRoLWVtdS9zcF9tdWwuYwppbmRleCBjMDZiYjQwMi4uMjcyMmEyNSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL21hdGgtZW11L3NwX211bC5jCisrKyBiL2FyY2gvbWlwcy9tYXRoLWVtdS9zcF9tdWwuYwpAQCAtMTA0LDcgKzEwNCw3IEBACiAJY2FzZSBDTFBBSVIoSUVFRTc1NF9DTEFTU19OT1JNLCBJRUVFNzU0X0NMQVNTX05PUk0pOgogCQlicmVhazsKIAl9Ci0JLyogcm0gPSB4bSAqIHltLCByZSA9IHhlK3llIGJhc2ljbHkgKi8KKwkvKiBybSA9IHhtICogeW0sIHJlID0geGUreWUgYmFzaWNhbGx5ICovCiAJYXNzZXJ0KHhtICYgU1BfSElEREVOX0JJVCk7CiAJYXNzZXJ0KHltICYgU1BfSElEREVOX0JJVCk7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9tbS9jZXgtc2IxLlMgYi9hcmNoL21pcHMvbW0vY2V4LXNiMS5TCmluZGV4IDJkMDgyNjguLjg5YzQxMmIgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9tbS9jZXgtc2IxLlMKKysrIGIvYXJjaC9taXBzL21tL2NleC1zYjEuUwpAQCAtNzksNyArNzksNyBAQAogcmVjb3ZlcmVkX2RjYWNoZToKIAkvKgogCSAqIFVubG9jayBDYWNoZUVyci1EICh3aGljaCBpbiB0dXJuIHVubG9ja3MgQ2FjaGVFcnItRFBBKS4KLQkgKiBPdWdodCB0byBsb2cgdGhlIG9jY3VyZW5jZSBvZiB0aGlzIHJlY292ZXJlZCBkY2FjaGUgZXJyb3IuCisJICogT3VnaHQgdG8gbG9nIHRoZSBvY2N1cnJlbmNlIG9mIHRoaXMgcmVjb3ZlcmVkIGRjYWNoZSBlcnJvci4KIAkgKi8KIAliCXJlY292ZXJlZAogCSBtdGMwCSQwLEMwX0NFUlJfRApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL21tL3RsYmV4LmMgYi9hcmNoL21pcHMvbW0vdGxiZXguYwppbmRleCAwNGY5ZTE3Li41ZWYyOTRmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbW0vdGxiZXguYworKysgYi9hcmNoL21pcHMvbW0vdGxiZXguYwpAQCAtMzUyLDcgKzM1Miw3IEBACiAKIC8qCiAgKiBXcml0ZSByYW5kb20gb3IgaW5kZXhlZCBUTEIgZW50cnksIGFuZCBjYXJlIGFib3V0IHRoZSBoYXphcmRzIGZyb20KLSAqIHRoZSBwcmVjZWVkaW5nIG10YzAgYW5kIGZvciB0aGUgZm9sbG93aW5nIGVyZXQuCisgKiB0aGUgcHJlY2VkaW5nIG10YzAgYW5kIGZvciB0aGUgZm9sbG93aW5nIGVyZXQuCiAgKi8KIGVudW0gdGxiX3dyaXRlX2VudHJ5IHsgdGxiX3JhbmRvbSwgdGxiX2luZGV4ZWQgfTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL210aS1tYWx0YS9tYWx0YS1zbXRjLmMgYi9hcmNoL21pcHMvbXRpLW1hbHRhL21hbHRhLXNtdGMuYwppbmRleCBlNjc4OTE1Li40OWEzOGIwIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvbXRpLW1hbHRhL21hbHRhLXNtdGMuYworKysgYi9hcmNoL21pcHMvbXRpLW1hbHRhL21hbHRhLXNtdGMuYwpAQCAtMTMwLDcgKzEzMCw3IEBACiAJICogY2xlYXJlZCBpbiB0aGUgYWZmaW5pdHkgbWFzaywgdGhlcmUgd2lsbCBuZXZlciBiZSBhbnkKIAkgKiBpbnRlcnJ1cHQgZm9yd2FyZGluZy4gIEJ1dCBhcyBzb29uIGFzIGEgcHJvZ3JhbSBvciBvcGVyYXRvcgogCSAqIHNldHMgYWZmaW5pdHkgZm9yIG9uZSBvZiB0aGUgcmVsYXRlZCBJUlFzLCB3ZSBuZWVkIHRvIG1ha2UKLQkgKiBzdXJlIHRoYXQgd2UgZG9uJ3QgZXZlciB0cnkgdG8gZm9yd2FyZCBhY3Jvc3MgdGhlIFZQRSBib3VuZHJ5LAorCSAqIHN1cmUgdGhhdCB3ZSBkb24ndCBldmVyIHRyeSB0byBmb3J3YXJkIGFjcm9zcyB0aGUgVlBFIGJvdW5kYXJ5LAogCSAqIGF0IGxlYXN0IG5vdCB1bnRpbCB3ZSBlbmdpbmVlciBhIHN5c3RlbSB3aGVyZSB0aGUgaW50ZXJydXB0CiAJICogX2FjaygpIG9yIF9lbmQoKSBmdW5jdGlvbiBjYW4gc29tZWhvdyBrbm93IHRoYXQgaXQgY29ycmVzcG9uZHMKIAkgKiB0byBhbiBpbnRlcnJ1cHQgdGFrZW4gb24gYW5vdGhlciBWUEUsIGFuZCBwZXJmb3JtIHRoZSBhcHByb3ByaWF0ZQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BjaS9vcHMtcG1jbXNwLmMgYi9hcmNoL21pcHMvcGNpL29wcy1wbWNtc3AuYwppbmRleCA2ODc5OGY4Li44ZmJmYmYyIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvcGNpL29wcy1wbWNtc3AuYworKysgYi9hcmNoL21pcHMvcGNpL29wcy1wbWNtc3AuYwpAQCAtMzQ0LDcgKzM0NCw3IEBACiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBDSV9BQ0NFU1NfV1JJVEUgYW5kIFBDSV9BQ0NFU1NfUkVBRC4KICAqCiAgKiAgICAgICAgICAgICAgIGJ1cyAgICAgICAgICAtIHBvaW50ZXIgdG8gdGhlIGJ1cyBudW1iZXIgb2YgdGhlIGRldmljZSB0bwotICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0YXJnZXR0ZWQgZm9yIHRoZSBjb25maWd1cmF0aW9uIGN5Y2xlLgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0YXJnZXRlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gY3ljbGUuCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBvbmx5IGVsZW1lbnQgb2YgdGhlIHBjaV9idXMgc3RydWN0dXJlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQgaXMgYnVzLT5udW1iZXIuIFRoaXMgYXJndW1lbnQgZGV0ZXJtaW5lcwogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUgY29uZmlndXJhdGlvbiBhY2Nlc3Mgd2lsbCBiZSBUeXBlIDAgb3IKQEAgLTM1NCw3ICszNTQsNyBAQAogICoKICAqICAgICAgICAgICAgICAgZGV2Zm4gICAgICAgIC0gdGhpcyBpcyBhbiA4LWJpdCBmaWVsZC4gVGhlIGxvd2VyIHRocmVlIGJpdHMKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSB0aGUgZnVuY3Rpb24gbnVtYmVyIG9mIHRoZSBkZXZpY2UgdG8KLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdGFyZ2V0dGVkIGZvciB0aGUgY29uZmlndXJhdGlvbiBjeWNsZSwgd2l0aAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSB0YXJnZXRlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gY3ljbGUsIHdpdGgKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsIHRocmVlLWJpdCBjb21iaW5hdGlvbnMgYmVpbmcgbGVnYWwuIFRoZQogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cHBlciBmaXZlIGJpdHMgc3BlY2lmeSB0aGUgZGV2aWNlIG51bWJlciwKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBsZWdhbCB2YWx1ZXMgYmVpbmcgMTAgdG8gMzEuCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwLmMgYi9hcmNoL21pcHMvcGNpL3BjaS1iY20xNDgwLmMKaW5kZXggNmY1ZTI0Yy4uYWY4YzMxOSAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9wY2ktYmNtMTQ4MC5jCisrKyBiL2FyY2gvbWlwcy9wY2kvcGNpLWJjbTE0ODAuYwpAQCAtMjEwLDcgKzIxMCw3IEBACiAJUENJQklPU19NSU5fSU8gPSAweDAwMDA4MDAwVUw7CiAJUENJQklPU19NSU5fTUVNID0gMHgwMTAwMDAwMFVMOwogCi0JLyogU2V0IEkvTyByZXNvdXJjZSBsaW1pdHMuIC0gdW5saW1pdGVkIGZvciBub3cgdG8gYWNjb21vZGF0ZSBIVCAqLworCS8qIFNldCBJL08gcmVzb3VyY2UgbGltaXRzLiAtIHVubGltaXRlZCBmb3Igbm93IHRvIGFjY29tbW9kYXRlIEhUICovCiAJaW9wb3J0X3Jlc291cmNlLmVuZCA9IDB4ZmZmZmZmZmZVTDsKIAlpb21lbV9yZXNvdXJjZS5lbmQgPSAweGZmZmZmZmZmVUw7CiAKZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wY2kvcGNpLW9jdGVvbi5jIGIvYXJjaC9taXBzL3BjaS9wY2ktb2N0ZW9uLmMKaW5kZXggMmQ3NGZjOS4uZWQxYzU0MiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BjaS9wY2ktb2N0ZW9uLmMKKysrIGIvYXJjaC9taXBzL3BjaS9wY2ktb2N0ZW9uLmMKQEAgLTQ0MSw3ICs0NDEsNyBAQAogCiAJLyoKIAkgKiBURE9NQyBtdXN0IGJlIHNldCB0byBvbmUgaW4gUENJIG1vZGUuIFRET01DIHNob3VsZCBiZSBzZXQgdG8gNAotCSAqIGluIFBDSS1YIG1vZGUgdG8gYWxsb3cgZm91ciBvdXN0YW5kaW5nIHNwbGl0cy4gT3RoZXJ3aXNlLAorCSAqIGluIFBDSS1YIG1vZGUgdG8gYWxsb3cgZm91ciBvdXRzdGFuZGluZyBzcGxpdHMuIE90aGVyd2lzZSwKIAkgKiBzaG91bGQgbm90IGNoYW5nZSBmcm9tIGl0cyByZXNldCB2YWx1ZS4gRG9uJ3Qgd3JpdGUgUENJX0NGRzE5CiAJICogaW4gUENJIG1vZGUgKDB4ODIwMDAwMDEgcmVzZXQgdmFsdWUpLCB3cml0ZSBpdCB0byAweDgyMDAwMDA0CiAJICogYWZ0ZXIgUENJLVggbW9kZSBpcyBrbm93bi4gTVJCQ0ksTURXRSxNRFJFIC0+IG11c3QgYmUgemVyby4KQEAgLTUxNSw3ICs1MTUsNyBAQAogI2VuZGlmCS8qIFVTRV9PQ1RFT05fSU5URVJOQUxfQVJCSVRFUiAqLwogCiAJLyoKLQkgKiBQcmVmZXJyYWJseSB3cml0dGVuIHRvIDEgdG8gc2V0IE1MVEQuIFtSRFNBVEksVFJUQUUsCisJICogUHJlZmVyYWJseSB3cml0dGVuIHRvIDEgdG8gc2V0IE1MVEQuIFtSRFNBVEksVFJUQUUsCiAJICogVFdUQUUsVE1BRSxEUFBNUiAtPiBtdXN0IGJlIHplcm8uIFRJTFQgLT4gbXVzdCBub3QgYmUgc2V0IHRvCiAJICogMS4uNy4KIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvbWlwcy9wY2kvcGNpLmMgYi9hcmNoL21pcHMvcGNpL3BjaS5jCmluZGV4IDM4YmMyODAuLjMzYmJhN2IgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wY2kvcGNpLmMKKysrIGIvYXJjaC9taXBzL3BjaS9wY2kuYwpAQCAtMTI1LDcgKzEyNSw3IEBACiAJaG9zZV90YWlsID0gJmhvc2UtPm5leHQ7CiAKIAkvKgotCSAqIERvIG5vdCBwYW5pYyBoZXJlIGJ1dCBsYXRlciAtIHRoaXMgbWlnaHQgaGFwZW4gYmVmb3JlIGNvbnNvbGUgaW5pdC4KKwkgKiBEbyBub3QgcGFuaWMgaGVyZSBidXQgbGF0ZXIgLSB0aGlzIG1pZ2h0IGhhcHBlbiBiZWZvcmUgY29uc29sZSBpbml0LgogCSAqLwogCWlmICghaG9zZS0+aW9fbWFwX2Jhc2UpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3BtYy1zaWVycmEvbXNwNzF4eC9tc3Bfc2V0dXAuYyBiL2FyY2gvbWlwcy9wbWMtc2llcnJhL21zcDcxeHgvbXNwX3NldHVwLmMKaW5kZXggZmIzN2ExMC4uMjQxM2VhNiAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL3BtYy1zaWVycmEvbXNwNzF4eC9tc3Bfc2V0dXAuYworKysgYi9hcmNoL21pcHMvcG1jLXNpZXJyYS9tc3A3MXh4L21zcF9zZXR1cC5jCkBAIC0yMzksNyArMjM5LDcgQEAKICNpZmRlZiBDT05GSUdfUE1DVFdJTEVECiAJLyoKIAkgKiBTZXR1cCBMRUQgc3RhdGVzIGJlZm9yZSB0aGUgc3Vic3lzX2luaXRjYWxsIGxvYWRzIG90aGVyCi0JICogZGVwZW5kYW50IGRyaXZlcnMvbW9kdWxlcy4KKwkgKiBkZXBlbmRlbnQgZHJpdmVycy9tb2R1bGVzLgogCSAqLwogCXBtY3R3aWxlZF9zZXR1cCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL21pcHMvcG54ODMzeC9jb21tb24vcGxhdGZvcm0uYyBiL2FyY2gvbWlwcy9wbng4MzN4L2NvbW1vbi9wbGF0Zm9ybS5jCmluZGV4IGNlNDVkZjEuLjg3MTY3ZGMgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9wbng4MzN4L2NvbW1vbi9wbGF0Zm9ybS5jCisrKyBiL2FyY2gvbWlwcy9wbng4MzN4L2NvbW1vbi9wbGF0Zm9ybS5jCkBAIC0xNjUsNyArMTY1LDcgQEAKIAl7CiAJCS5iYXNlID0gUE5YODMzWF9JMkMwX1BPUlRTX1NUQVJULAogCQkuaXJxID0gLTEsIC8qIHNob3VsZCBiZSBQTlg4MzNYX1BJQ19JMkMwX0lOVCBidXQgcG9sbGluZyBpcyBmYXN0ZXIgKi8KLQkJLmNsb2NrID0gNiwJLyogMCA9PSA0MDAga0h6LCA0ID09IDEwMCBrSHooTWF4aW11bSBIRE1JKSwgNiA9IDUwa0h6KFByZWZlcmVkIEhEQ1ApICovCisJCS5jbG9jayA9IDYsCS8qIDAgPT0gNDAwIGtIeiwgNCA9PSAxMDAga0h6KE1heGltdW0gSERNSSksIDYgPSA1MGtIeihQcmVmZXJyZWQgSERDUCkgKi8KIAkJLmJ1c19hZGRyID0gMCwJLyogbm8gc2xhdmUgc3VwcG9ydCAqLwogCX0sCiAJewpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3NnaS1pcDI3L0tjb25maWcgYi9hcmNoL21pcHMvc2dpLWlwMjcvS2NvbmZpZwppbmRleCA1ZTk2MGFlLi5iYzVlOTc2IDEwMDY0NAotLS0gYS9hcmNoL21pcHMvc2dpLWlwMjcvS2NvbmZpZworKysgYi9hcmNoL21pcHMvc2dpLWlwMjcvS2NvbmZpZwpAQCAtMSw3ICsxLDcgQEAKICNjb25maWcgU0dJX1NOMF9YWEwKICMJYm9vbCAiSVAyNyBYWEwiCiAjCWRlcGVuZHMgb24gU0dJX0lQMjcKLSMJICBUaGlzIG9wdGlvbnMgYWRkcyBzdXBwb3J0IGZvciB1c2Vyc3BhY2UgcHJvY2Vzc2VzIHVwdG8gMTZUQiBzaXplLgorIwkgIFRoaXMgb3B0aW9ucyBhZGRzIHN1cHBvcnQgZm9yIHVzZXJzcGFjZSBwcm9jZXNzZXMgdXAgdG8gMTZUQiBzaXplLgogIwkgIE5vcm1hbGx5IHRoZSBsaW1pdCBpcyBqdXN0IC41VEIuCiAKIGNob2ljZQpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3NnaS1pcDI3L1RPRE8gYi9hcmNoL21pcHMvc2dpLWlwMjcvVE9ETwppbmRleCAxOWYxNTEyLi4xNjA4NTdmIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvc2dpLWlwMjcvVE9ETworKysgYi9hcmNoL21pcHMvc2dpLWlwMjcvVE9ETwpAQCAtMTMsNyArMTMsNyBAQAogOS4gc3RhcnRfdGhyZWFkIG11c3QgdHVybiBvZmYgVVg2NCAuLi4gYW5kIGRlZmluZSB0bGJfcmVmaWxsX2RlYnVnLgogMTAuIE5lZWQgYSBiYWQgcG1kIHRhYmxlLCBiYWQgcHRlIHRhYmxlLiBfX2JhZF9wbWRfdGFibGUvX19iYWRfcGFnZXRhYmxlCiBkb2VzIG5vdCBhZ3JlZSB3aXRoIHBnZF9iYWQvcG1kX2JhZC4KLTExLiBBbGwgaW50cnMgKGlwMjdfZG9faXJxIGhhbmRsZXJzKSBhcmUgdGFyZ2V0dGVkIGF0IGNwdSBBIG9uIHRoZSBub2RlLgorMTEuIEFsbCBpbnRycyAoaXAyN19kb19pcnEgaGFuZGxlcnMpIGFyZSB0YXJnZXRlZCBhdCBjcHUgQSBvbiB0aGUgbm9kZS4KIFRoaXMgbWlnaHQgbmVlZCB0byBjaGFuZ2UgbGF0ZXIuIE9ubHkgdGhlIHRpbWVyIGludHIgaXMgc2V0IHVwIHRvIGJlCiByZWNlaXZlZCBvbiBib3RoIENwdSBBIGFuZCBCLiAoaXAyN19kb19pcnEoKS9icmlkZ2Vfc3RhcnR1cCgpKQogMTMuIENhY2hlIGZsdXNoaW5nIChzcGVjaWFsbHkgdGhlIFNNUCB2ZXJzaW9uKSBoYXMgdG8gYmUgaW52ZXN0aWdhdGVkLgpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaW5pdC5jIGIvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaW5pdC5jCmluZGV4IDUxZDNhNGYuLjkyM2MwODAgMTAwNjQ0Ci0tLSBhL2FyY2gvbWlwcy9zZ2ktaXAyNy9pcDI3LWluaXQuYworKysgYi9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy1pbml0LmMKQEAgLTkzLDcgKzkzLDcgQEAKIAogCS8qCiAJICogU29tZSBpbnRlcnJ1cHRzIGFyZSByZXNlcnZlZCBieSBoYXJkd2FyZSBvciBieSBzb2Z0d2FyZSBjb252ZW50aW9uLgotCSAqIE1hcmsgdGhlc2UgYXMgcmVzZXJ2ZWQgcmlnaHQgYXdheSBzbyB0aGV5IHdvbid0IGJlIHVzZWQgYWNjaWRlbnRseQorCSAqIE1hcmsgdGhlc2UgYXMgcmVzZXJ2ZWQgcmlnaHQgYXdheSBzbyB0aGV5IHdvbid0IGJlIHVzZWQgYWNjaWRlbnRhbGx5CiAJICogbGF0ZXIuCiAJICovCiAJZm9yIChpID0gMDsgaSA8PSBCQVNFX1BDSV9JUlE7IGkrKykgewpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL3NnaS1pcDI3L2lwMjctaXJxLmMgYi9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy1pcnEuYwppbmRleCAxMTQ4ODcxLi4wYTA0NjAzIDEwMDY0NAotLS0gYS9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy1pcnEuYworKysgYi9hcmNoL21pcHMvc2dpLWlwMjcvaXAyNy1pcnEuYwpAQCAtNDEsNyArNDEsNyBAQAogICogTGludXggaGFzIGEgY29udHJvbGxlci1pbmRlcGVuZGVudCB4ODYgaW50ZXJydXB0IGFyY2hpdGVjdHVyZS4KICAqIGV2ZXJ5IGNvbnRyb2xsZXIgaGFzIGEgJ2NvbnRyb2xsZXItdGVtcGxhdGUnLCB0aGF0IGlzIHVzZWQKICAqIGJ5IHRoZSBtYWluIGNvZGUgdG8gZG8gdGhlIHJpZ2h0IHRoaW5nLiBFYWNoIGRyaXZlci12aXNpYmxlCi0gKiBpbnRlcnJ1cHQgc291cmNlIGlzIHRyYW5zcGFyZW50bHkgd2lyZWQgdG8gdGhlIGFwcm9wcmlhdGUKKyAqIGludGVycnVwdCBzb3VyY2UgaXMgdHJhbnNwYXJlbnRseSB3aXJlZCB0byB0aGUgYXBwcm9wcmlhdGUKICAqIGNvbnRyb2xsZXIuIFRodXMgZHJpdmVycyBuZWVkIG5vdCBiZSBhd2FyZSBvZiB0aGUKICAqIGludGVycnVwdC1jb250cm9sbGVyLgogICoKZGlmZiAtLWdpdCBhL2FyY2gvbW4xMDMwMC9pbmNsdWRlL2FzbS9jcHUtcmVncy5oIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL2NwdS1yZWdzLmgKaW5kZXggOTBlZDRhMy4uYzU0ZWZmYSAxMDA2NDQKLS0tIGEvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL2NwdS1yZWdzLmgKKysrIGIvYXJjaC9tbjEwMzAwL2luY2x1ZGUvYXNtL2NwdS1yZWdzLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKICNkZWZpbmUgRVBTV19JTV82CQkweDAwMDAwNjAwCS8qIGludGVycnVwdCBtb2RlIDYgKi8KICNkZWZpbmUgRVBTV19JTV83CQkweDAwMDAwNzAwCS8qIGludGVycnVwdCBtb2RlIDcgKi8KICNkZWZpbmUgRVBTV19JRQkJCTB4MDAwMDA4MDAJLyogaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSBFUFNXX1MJCQkweDAwMDAzMDAwCS8qIHNvZnR3YXJlIGF1eGlsbGlhcnkgYml0cyAqLworI2RlZmluZSBFUFNXX1MJCQkweDAwMDAzMDAwCS8qIHNvZnR3YXJlIGF1eGlsaWFyeSBiaXRzICovCiAjZGVmaW5lIEVQU1dfVAkJCTB4MDAwMDgwMDAJLyogdHJhY2UgZW5hYmxlICovCiAjZGVmaW5lIEVQU1dfblNMCQkweDAwMDEwMDAwCS8qIG5vdCBzdXBlcnZpc29yIGxldmVsICovCiAjZGVmaW5lIEVQU1dfTk1JRAkJMHgwMDAyMDAwMAkvKiBub25tYXNrYWJsZSBpbnRlcnJ1cHQgZGlzYWJsZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZWlzYV9lZXByb20uaCBiL2FyY2gvcGFyaXNjL2luY2x1ZGUvYXNtL2Vpc2FfZWVwcm9tLmgKaW5kZXggOWM5ZGE5OC4uOGNlOGI4NSAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvaW5jbHVkZS9hc20vZWlzYV9lZXByb20uaAorKysgYi9hcmNoL3BhcmlzYy9pbmNsdWRlL2FzbS9laXNhX2VlcHJvbS5oCkBAIC0yNyw3ICsyNyw3IEBACiAJdV9pbnQ4X3QgIHZlcl9tYWo7CiAJdV9pbnQ4X3QgIHZlcl9taW47CiAJdV9pbnQ4X3QgIG51bV9zbG90czsgICAgICAgIC8qIG51bWJlciBvZiBFSVNBIHNsb3RzIGluIHN5c3RlbSAqLwotCXVfaW50MTZfdCBjc3VtOyAgICAgICAgICAgICAvKiBjaGVja3N1bSwgSSBkb24ndCBrbm93IGhvdyB0byBjYWx1bGF0ZSB0aGlzICovCisJdV9pbnQxNl90IGNzdW07ICAgICAgICAgICAgIC8qIGNoZWNrc3VtLCBJIGRvbid0IGtub3cgaG93IHRvIGNhbGN1bGF0ZSB0aGlzICovCiAJdV9pbnQ4X3QgIHBhZFsxMF07CiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL2VudHJ5LlMgYi9hcmNoL3BhcmlzYy9rZXJuZWwvZW50cnkuUwppbmRleCBlNTQ3NzA5Li5lYWQ4ZDJhIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvZW50cnkuUworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvZW50cnkuUwpAQCAtMTg3LDggKzE4Nyw4IEBACiAKIAkvKiBSZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgdGxiIG1pc3MgaGFuZGxlciBtYWNyb3MgKi8KIAotCXZhICA9IHI4CS8qIHZpcnR1YWwgYWRkcmVzcyBmb3Igd2hpY2ggdGhlIHRyYXAgb2NjdXJlZCAqLwotCXNwYyA9IHIyNAkvKiBzcGFjZSBmb3Igd2hpY2ggdGhlIHRyYXAgb2NjdXJlZCAqLworCXZhICA9IHI4CS8qIHZpcnR1YWwgYWRkcmVzcyBmb3Igd2hpY2ggdGhlIHRyYXAgb2NjdXJyZWQgKi8KKwlzcGMgPSByMjQJLyogc3BhY2UgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VycmVkICovCiAKICNpZm5kZWYgQ09ORklHXzY0QklUCiAKQEAgLTg4Miw3ICs4ODIsNyBAQAogCSAqICh3ZSBkb24ndCBzdG9yZSB0aGVtIGluIHRoZSBzaWdjb250ZXh0KSwgc28gc2V0IHRoZW0KIAkgKiB0byAicHJvcGVyIiB2YWx1ZXMgbm93IChvdGhlcndpc2Ugd2UnbGwgd2luZCB1cCByZXN0b3JpbmcKIAkgKiB3aGF0ZXZlciB3YXMgbGFzdCBzdG9yZWQgaW4gdGhlIHRhc2sgc3RydWN0dXJlLCB3aGljaCBtaWdodAotCSAqIGJlIGluY29uc2lzdGVudCBpZiBhbiBpbnRlcnJ1cHQgb2NjdXJlZCB3aGlsZSBvbiB0aGUgZ2F0ZXdheQorCSAqIGJlIGluY29uc2lzdGVudCBpZiBhbiBpbnRlcnJ1cHQgb2NjdXJyZWQgd2hpbGUgb24gdGhlIGdhdGV3YXkKIAkgKiBwYWdlKS4gTm90ZSB0aGF0IHdlIG1heSBiZSAidHJhc2hpbmciIHZhbHVlcyB0aGUgdXNlciBwdXQgaW4KIAkgKiB0aGVtLCBidXQgd2UgZG9uJ3Qgc3VwcG9ydCB0aGUgdXNlciBjaGFuZ2luZyB0aGVtLgogCSAqLwpAQCAtMTE1NiwxMSArMTE1NiwxMSBAQAogCSAqLwogCiAJdDAgPSByMQkJLyogdGVtcG9yYXJ5IHJlZ2lzdGVyIDAgKi8KLQl2YSA9IHI4CQkvKiB2aXJ0dWFsIGFkZHJlc3MgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VyZWQgKi8KKwl2YSA9IHI4CQkvKiB2aXJ0dWFsIGFkZHJlc3MgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VycmVkICovCiAJdDEgPSByOQkJLyogdGVtcG9yYXJ5IHJlZ2lzdGVyIDEgKi8KIAlwdGUgID0gcjE2CS8qIHB0ZS9waHlzIHBhZ2UgIyAqLwogCXByb3QgPSByMTcJLyogcHJvdCBiaXRzICovCi0Jc3BjICA9IHIyNAkvKiBzcGFjZSBmb3Igd2hpY2ggdGhlIHRyYXAgb2NjdXJlZCAqLworCXNwYyAgPSByMjQJLyogc3BhY2UgZm9yIHdoaWNoIHRoZSB0cmFwIG9jY3VycmVkICovCiAJcHRwID0gcjI1CS8qIHBhZ2UgZGlyZWN0b3J5L3BhZ2UgdGFibGUgcG9pbnRlciAqLwogCiAjaWZkZWYgQ09ORklHXzY0QklUCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9rZXJuZWwvaGVhZC5TIGIvYXJjaC9wYXJpc2Mva2VybmVsL2hlYWQuUwppbmRleCA0ZGJkZjBlLi4xNDVjNWU0IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9oZWFkLlMKQEAgLTEzMSw3ICsxMzEsNyBAQAogCWxkbyAgICAgICAgICAgICBUSFJFQURfU1pfQUxHTiglcjYpLCVzcAogCiAjaWZkZWYgQ09ORklHX1NNUAotCS8qIFNldCB0aGUgc21wIHJlbmRldm91cyBhZGRyZXNzIGludG8gcGFnZSB6ZXJvLgorCS8qIFNldCB0aGUgc21wIHJlbmRlenZvdXMgYWRkcmVzcyBpbnRvIHBhZ2UgemVyby4KIAkqKiBJdCB3b3VsZCBiZSBzYWZlciB0byBkbyB0aGlzIGluIGluaXRfc21wX2NvbmZpZygpIGJ1dAogCSoqIGl0J3MganVzdCB3YXkgZWFzaWVyIHRvIGRlYWwgd2l0aCBoZXJlIGJlY2F1c2UKIAkqKiBvZiA2NC1iaXQgZnVuY3Rpb24gcHRycyBhbmQgdGhlIGFkZHJlc3MgaXMgbG9jYWwgdG8gdGhpcyBmaWxlLgpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL2ludmVudG9yeS5jIGIvYXJjaC9wYXJpc2Mva2VybmVsL2ludmVudG9yeS5jCmluZGV4IGQyMjhkODIuLjA4MzI0YWEgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL2tlcm5lbC9pbnZlbnRvcnkuYworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvaW52ZW50b3J5LmMKQEAgLTkzLDcgKzkzLDcgQEAKIAljYXNlIDB4NjoJCS8qIDcwNSwgNzEwICovCiAJY2FzZSAweDc6CQkvKiA3MTUsIDcyNSAqLwogCWNhc2UgMHg4OgkJLyogNzQ1LCA3NDcsIDc0MiAqLwotCWNhc2UgMHhBOgkJLyogNzEyIGFuZCBzaW1pbGlhciAqLworCWNhc2UgMHhBOgkJLyogNzEyIGFuZCBzaW1pbGFyICovCiAJY2FzZSAweEM6CQkvKiA3MTUvNjQsIGF0IGxlYXN0ICovCiAKIAkJcGRjX3R5cGUgPSBQRENfVFlQRV9TTkFLRTsKZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zaWduYWwuYwppbmRleCA2MDlhMzMxLi4xMmMxZWQzIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvc2lnbmFsLmMKKysrIGIvYXJjaC9wYXJpc2Mva2VybmVsL3NpZ25hbC5jCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJREJHKDEsInNldHVwX3J0X2ZyYW1lOiBmcmFtZS0+dWMgPSAweCVwXG4iLCAmZnJhbWUtPnVjKTsKIAkJREJHKDEsInNldHVwX3J0X2ZyYW1lOiBmcmFtZS0+dWMudWNfbWNvbnRleHQgPSAweCVwXG4iLCAmZnJhbWUtPnVjLnVjX21jb250ZXh0KTsKIAkJZXJyIHw9IHNldHVwX3NpZ2NvbnRleHQoJmZyYW1lLT51Yy51Y19tY29udGV4dCwgcmVncywgaW5fc3lzY2FsbCk7Ci0JCS8qIEZJWE1FOiBTaG91bGQgcHJvYmFibHkgYmUgY29udmVydGVkIGFzd2VsbCBmb3IgdGhlIGNvbXBhdCBjYXNlICovCisJCS8qIEZJWE1FOiBTaG91bGQgcHJvYmFibHkgYmUgY29udmVydGVkIGFzIHdlbGwgZm9yIHRoZSBjb21wYXQgY2FzZSAqLwogCQllcnIgfD0gX19jb3B5X3RvX3VzZXIoJmZyYW1lLT51Yy51Y19zaWdtYXNrLCBzZXQsIHNpemVvZigqc2V0KSk7CiAJfQogCQpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGwuUyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsLlMKaW5kZXggNjhlNzVjZS4uODJhNTJiMiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGwuUworKysgYi9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbC5TCkBAIC02MDUsNyArNjA1LDcgQEAKIAljb3B5CSVyMCwgJXIyMQogCiAzOgkJCi0JLyogRXJyb3Igb2NjdXJlZCBvbiBsb2FkIG9yIHN0b3JlICovCisJLyogRXJyb3Igb2NjdXJyZWQgb24gbG9hZCBvciBzdG9yZSAqLwogCS8qIEZyZWUgbG9jayAqLwogCXN0dwklcjIwLCAwKCVzcjIsJXIyMCkKICNpZiBFTkFCTEVfTFdTX0RFQlVHCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbF90YWJsZS5TIGIvYXJjaC9wYXJpc2Mva2VybmVsL3N5c2NhbGxfdGFibGUuUwppbmRleCA3NDg2N2RmLi40YmU4NWVlIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9rZXJuZWwvc3lzY2FsbF90YWJsZS5TCisrKyBiL2FyY2gvcGFyaXNjL2tlcm5lbC9zeXNjYWxsX3RhYmxlLlMKQEAgLTM0LDcgKzM0LDcgQEAKIC8qIFVzZSBFTlRSWV9TQU1FIGZvciAzMi1iaXQgc3lzY2FsbHMgd2hpY2ggYXJlIHRoZSBzYW1lIG9uIHdpZGUgYW5kCiAgKiBuYXJyb3cgcGFsaW51eC4gIFVzZSBFTlRSWV9ESUZGIGZvciB0aG9zZSB3aGVyZSBhIDMyLWJpdCBzcGVjaWZpYwogICogaW1wbGVtZW50YXRpb24gaXMgcmVxdWlyZWQgb24gd2lkZSBwYWxpbnV4LiAgVXNlIEVOVFJZX0NPTVAgd2hlcmUKLSAqIHRoZSBjb21wYXRhYmlsaXR5IGxheWVyIGhhcyBhIHVzZWZ1bCAzMi1iaXQgaW1wbGVtZW50YXRpb24uCisgKiB0aGUgY29tcGF0aWJpbGl0eSBsYXllciBoYXMgYSB1c2VmdWwgMzItYml0IGltcGxlbWVudGF0aW9uLgogICovCiAjZGVmaW5lIEVOVFJZX1NBTUUoX25hbWVfKSAuZHdvcmQgc3lzXyMjX25hbWVfCiAjZGVmaW5lIEVOVFJZX0RJRkYoX25hbWVfKSAuZHdvcmQgc3lzMzJfIyNfbmFtZV8KZGlmZiAtLWdpdCBhL2FyY2gvcGFyaXNjL21hdGgtZW11L2RmYWRkLmMgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9kZmFkZC5jCmluZGV4IGUxNDdkN2QuLmQzN2UyZDIgMTAwNjQ0Ci0tLSBhL2FyY2gvcGFyaXNjL21hdGgtZW11L2RmYWRkLmMKKysrIGIvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZGZhZGQuYwpAQCAtMzAzLDcgKzMwMyw3IEBACiAJaWYoRGJsX2lzemVyb19oaWRkZW4ocmVzdWx0cDEpKQogCSAgICB7CiAJICAgIC8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JICAgIC8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlIHJlc3VsdAorCSAgICAvKiBBIHN0cmFpZ2h0IGZvcndhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUgcmVzdWx0CiAJICAgICAqIGFuZCBleHRlbnNpb24gbGVmdCB1bnRpbCB0aGUgaGlkZGVuIGJpdCBiZWNvbWVzIG9uZS4gIE5vdAogCSAgICAgKiBhbGwgb2YgdGhlIGV4dGVuc2lvbiBiaXRzIG5lZWQgcGFydGljaXBhdGUgaW4gdGhlIHNoaWZ0LgogCSAgICAgKiBPbmx5IHRoZSB0d28gbW9zdCBzaWduaWZpY2FudCBiaXRzIChyb3VuZCBhbmQgZ3VhcmQpIGFyZQpkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZGZzdWIuYyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L2Rmc3ViLmMKaW5kZXggODdlYmM2MC4uMmU4YjVhNyAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZGZzdWIuYworKysgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9kZnN1Yi5jCkBAIC0zMDYsNyArMzA2LDcgQEAKIAlpZihEYmxfaXN6ZXJvX2hpZGRlbihyZXN1bHRwMSkpCiAJICAgIHsKIAkgICAgLyogSGFuZGxlIG5vcm1hbGl6YXRpb24gKi8KLQkgICAgLyogQSBzdHJhaWdodCBmb3dhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUgcmVzdWx0CisJICAgIC8qIEEgc3RyYWlnaHQgZm9yd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZSByZXN1bHQKIAkgICAgICogYW5kIGV4dGVuc2lvbiBsZWZ0IHVudGlsIHRoZSBoaWRkZW4gYml0IGJlY29tZXMgb25lLiAgTm90CiAJICAgICAqIGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGJpdHMgbmVlZCBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2hpZnQuCiAJICAgICAqIE9ubHkgdGhlIHR3byBtb3N0IHNpZ25pZmljYW50IGJpdHMgKHJvdW5kIGFuZCBndWFyZCkgYXJlCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9tYXRoLWVtdS9mbXB5ZmFkZC5jIGIvYXJjaC9wYXJpc2MvbWF0aC1lbXUvZm1weWZhZGQuYwppbmRleCA1ZGQ3ZjkzLi5iMDY3YzQ1IDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9tYXRoLWVtdS9mbXB5ZmFkZC5jCisrKyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L2ZtcHlmYWRkLmMKQEAgLTUzMSw3ICs1MzEsNyBAQAogCQlzaWduX3NhdmUgPSBEYmxfc2lnbmV4dGVuZGVkc2lnbihyZXN1bHRwMSk7CiAJCWlmIChEYmxfaXN6ZXJvX2hpZGRlbihyZXN1bHRwMSkpIHsKIAkJCS8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JCS8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlCisJCS8qIEEgc3RyYWlnaHRmb3J3YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlCiAJCSAqIHJlc3VsdCBhbmQgZXh0ZW5zaW9uIGxlZnQgdW50aWwgdGhlIGhpZGRlbiBiaXQKIAkJICogYmVjb21lcyBvbmUuICBOb3QgYWxsIG9mIHRoZSBleHRlbnNpb24gYml0cyBuZWVkCiAJCSAqIHBhcnRpY2lwYXRlIGluIHRoZSBzaGlmdC4gIE9ubHkgdGhlIHR3byBtb3N0IApAQCAtMTE5MSw3ICsxMTkxLDcgQEAKIAkJc2lnbl9zYXZlID0gRGJsX3NpZ25leHRlbmRlZHNpZ24ocmVzdWx0cDEpOwogCQlpZiAoRGJsX2lzemVyb19oaWRkZW4ocmVzdWx0cDEpKSB7CiAJCQkvKiBIYW5kbGUgbm9ybWFsaXphdGlvbiAqLwotCQkvKiBBIHN0cmFpZ2h0IGZvd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZQorCQkvKiBBIHN0cmFpZ2h0Zm9yd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZQogCQkgKiByZXN1bHQgYW5kIGV4dGVuc2lvbiBsZWZ0IHVudGlsIHRoZSBoaWRkZW4gYml0CiAJCSAqIGJlY29tZXMgb25lLiAgTm90IGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGJpdHMgbmVlZAogCQkgKiBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2hpZnQuICBPbmx5IHRoZSB0d28gbW9zdCAKQEAgLTE4NDEsNyArMTg0MSw3IEBACiAJCXNpZ25fc2F2ZSA9IFNnbF9zaWduZXh0ZW5kZWRzaWduKHJlc3VsdHAxKTsKIAkJaWYgKFNnbF9pc3plcm9faGlkZGVuKHJlc3VsdHAxKSkgewogCQkJLyogSGFuZGxlIG5vcm1hbGl6YXRpb24gKi8KLQkJLyogQSBzdHJhaWdodCBmb3dhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUKKwkJLyogQSBzdHJhaWdodGZvcndhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUKIAkJICogcmVzdWx0IGFuZCBleHRlbnNpb24gbGVmdCB1bnRpbCB0aGUgaGlkZGVuIGJpdAogCQkgKiBiZWNvbWVzIG9uZS4gIE5vdCBhbGwgb2YgdGhlIGV4dGVuc2lvbiBiaXRzIG5lZWQKIAkJICogcGFydGljaXBhdGUgaW4gdGhlIHNoaWZ0LiAgT25seSB0aGUgdHdvIG1vc3QgCkBAIC0yNDgzLDcgKzI0ODMsNyBAQAogCQlzaWduX3NhdmUgPSBTZ2xfc2lnbmV4dGVuZGVkc2lnbihyZXN1bHRwMSk7CiAJCWlmIChTZ2xfaXN6ZXJvX2hpZGRlbihyZXN1bHRwMSkpIHsKIAkJCS8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JCS8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlCisJCS8qIEEgc3RyYWlnaHRmb3J3YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlCiAJCSAqIHJlc3VsdCBhbmQgZXh0ZW5zaW9uIGxlZnQgdW50aWwgdGhlIGhpZGRlbiBiaXQKIAkJICogYmVjb21lcyBvbmUuICBOb3QgYWxsIG9mIHRoZSBleHRlbnNpb24gYml0cyBuZWVkCiAJCSAqIHBhcnRpY2lwYXRlIGluIHRoZSBzaGlmdC4gIE9ubHkgdGhlIHR3byBtb3N0IApkaWZmIC0tZ2l0IGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvc2ZhZGQuYyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L3NmYWRkLmMKaW5kZXggMDA4ZDcyMS4uZjgwMmNkNiAxMDA2NDQKLS0tIGEvYXJjaC9wYXJpc2MvbWF0aC1lbXUvc2ZhZGQuYworKysgYi9hcmNoL3BhcmlzYy9tYXRoLWVtdS9zZmFkZC5jCkBAIC0yOTgsNyArMjk4LDcgQEAKIAlpZihTZ2xfaXN6ZXJvX2hpZGRlbihyZXN1bHQpKQogCSAgICB7CiAJICAgIC8qIEhhbmRsZSBub3JtYWxpemF0aW9uICovCi0JICAgIC8qIEEgc3RyYWlnaHQgZm93YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlIHJlc3VsdAorCSAgICAvKiBBIHN0cmFpZ2h0Zm9yd2FyZCBhbGdvcml0aG0gd291bGQgbm93IHNoaWZ0IHRoZSByZXN1bHQKIAkgICAgICogYW5kIGV4dGVuc2lvbiBsZWZ0IHVudGlsIHRoZSBoaWRkZW4gYml0IGJlY29tZXMgb25lLiAgTm90CiAJICAgICAqIGFsbCBvZiB0aGUgZXh0ZW5zaW9uIGJpdHMgbmVlZCBwYXJ0aWNpcGF0ZSBpbiB0aGUgc2hpZnQuCiAJICAgICAqIE9ubHkgdGhlIHR3byBtb3N0IHNpZ25pZmljYW50IGJpdHMgKHJvdW5kIGFuZCBndWFyZCkgYXJlCmRpZmYgLS1naXQgYS9hcmNoL3BhcmlzYy9tYXRoLWVtdS9zZnN1Yi5jIGIvYXJjaC9wYXJpc2MvbWF0aC1lbXUvc2ZzdWIuYwppbmRleCAyNGVlZjYxLi41ZjkwZDBmIDEwMDY0NAotLS0gYS9hcmNoL3BhcmlzYy9tYXRoLWVtdS9zZnN1Yi5jCisrKyBiL2FyY2gvcGFyaXNjL21hdGgtZW11L3Nmc3ViLmMKQEAgLTMwMSw3ICszMDEsNyBAQAogCWlmKFNnbF9pc3plcm9faGlkZGVuKHJlc3VsdCkpCiAJICAgIHsKIAkgICAgLyogSGFuZGxlIG5vcm1hbGl6YXRpb24gKi8KLQkgICAgLyogQSBzdHJhaWdodCBmb3dhcmQgYWxnb3JpdGhtIHdvdWxkIG5vdyBzaGlmdCB0aGUgcmVzdWx0CisJICAgIC8qIEEgc3RyYWlnaHRmb3J3YXJkIGFsZ29yaXRobSB3b3VsZCBub3cgc2hpZnQgdGhlIHJlc3VsdAogCSAgICAgKiBhbmQgZXh0ZW5zaW9uIGxlZnQgdW50aWwgdGhlIGhpZGRlbiBiaXQgYmVjb21lcyBvbmUuICBOb3QKIAkgICAgICogYWxsIG9mIHRoZSBleHRlbnNpb24gYml0cyBuZWVkIHBhcnRpY2lwYXRlIGluIHRoZSBzaGlmdC4KIAkgICAgICogT25seSB0aGUgdHdvIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyAocm91bmQgYW5kIGd1YXJkKSBhcmUKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9iaXRvcHMuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9iaXRvcHMuaAppbmRleCAyZTU2MTg3Li5mMThjNmQ5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vYml0b3BzLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2JpdG9wcy5oCkBAIC0yMDksOCArMjA5LDggQEAKIAkJcmV0dXJuIEJJVFNfUEVSX0xPTkc7CiAKIAkvKgotCSAqIENhbGN1bGF0ZSB0aGUgYml0IHBvc2l0aW9uIG9mIHRoZSBsZWFzdCBzaWduZmljYW50ICcxJyBiaXQgaW4geAotCSAqIChzaW5jZSB4IGhhcyBiZWVuIGNoYW5nZWQgdGhpcyB3aWxsIGFjdHVhbGx5IGJlIHRoZSBsZWFzdCBzaWduZmljYW50CisJICogQ2FsY3VsYXRlIHRoZSBiaXQgcG9zaXRpb24gb2YgdGhlIGxlYXN0IHNpZ25pZmljYW50ICcxJyBiaXQgaW4geAorCSAqIChzaW5jZSB4IGhhcyBiZWVuIGNoYW5nZWQgdGhpcyB3aWxsIGFjdHVhbGx5IGJlIHRoZSBsZWFzdCBzaWduaWZpY2FudAogCSAqICcwJyBiaXQgaW4gKiB0aGUgb3JpZ2luYWwgeCkuICBOb3RlOiAoeCAmIC14KSBnaXZlcyB1cyBhIG1hc2sgdGhhdAogCSAqIGlzIHRoZSBsZWFzdCBzaWduaWZpY2FudCAqIChSSUdIVC1tb3N0KSAxLWJpdCBvZiB0aGUgdmFsdWUgaW4geC4KIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jb21wYXQuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jb21wYXQuaAppbmRleCAyMjk2MTEyLi45MTAxMGU4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY29tcGF0LmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NvbXBhdC5oCkBAIC0xNDAsNyArMTQwLDcgQEAKIAl1bnNpZ25lZCBsb25nIHVzcCA9IHJlZ3MtPmdwclsxXTsKIAogCS8qCi0JICogV2UgY2FudCBhY2Nlc3MgYmVsb3cgdGhlIHN0YWNrIHBvaW50ZXIgaW4gdGhlIDMyYml0IEFCSSBhbmQKKwkgKiBXZSBjYW4ndCBhY2Nlc3MgYmVsb3cgdGhlIHN0YWNrIHBvaW50ZXIgaW4gdGhlIDMyYml0IEFCSSBhbmQKIAkgKiBjYW4gYWNjZXNzIDI4OCBieXRlcyBpbiB0aGUgNjRiaXQgQUJJCiAJICovCiAJaWYgKCFpc18zMmJpdF90YXNrKCkpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3BtLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3BtLmgKaW5kZXggZTUwMzIzZi4uNDM5OGE2YyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9jcG0uaApAQCAtOTgsNyArOTgsNyBAQAogI2RlZmluZSBCRF9TQ19JTlRSUFQJKDB4MTAwMCkJLyogSW50ZXJydXB0IG9uIGNoYW5nZSAqLwogI2RlZmluZSBCRF9TQ19MQVNUCSgweDA4MDApCS8qIExhc3QgYnVmZmVyIGluIGZyYW1lICovCiAjZGVmaW5lIEJEX1NDX1RDCSgweDA0MDApCS8qIFRyYW5zbWl0IENSQyAqLwotI2RlZmluZSBCRF9TQ19DTQkoMHgwMjAwKQkvKiBDb250aW5vdXMgbW9kZSAqLworI2RlZmluZSBCRF9TQ19DTQkoMHgwMjAwKQkvKiBDb250aW51b3VzIG1vZGUgKi8KICNkZWZpbmUgQkRfU0NfSUQJKDB4MDEwMCkJLyogUmVjJ2QgdG9vIG1hbnkgaWRsZXMgKi8KICNkZWZpbmUgQkRfU0NfUAkJKDB4MDEwMCkJLyogeG10IHByZWFtYmxlICovCiAjZGVmaW5lIEJEX1NDX0JSCSgweDAwMjApCS8qIEJyZWFrIHJlY2VpdmVkICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3BtMS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbTEuaAppbmRleCBiZDA3NjUwZC4uOGVlNDIxMSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2NwbTEuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vY3BtMS5oCkBAIC00LDcgKzQsNyBAQAogICoKICAqIFRoaXMgZmlsZSBjb250YWlucyBzdHJ1Y3R1cmVzIGFuZCBpbmZvcm1hdGlvbiBmb3IgdGhlIGNvbW11bmljYXRpb24KICAqIHByb2Nlc3NvciBjaGFubmVscy4gIFNvbWUgQ1BNIGNvbnRyb2wgYW5kIHN0YXR1cyBpcyBhdmFpbGFibGUKLSAqIHRocm91Z2h0IHRoZSBNUEM4eHggaW50ZXJuYWwgbWVtb3J5IG1hcC4gIFNlZSBpbW1hcC5oIGZvciBkZXRhaWxzLgorICogdGhyb3VnaCB0aGUgTVBDOHh4IGludGVybmFsIG1lbW9yeSBtYXAuICBTZWUgaW1tYXAuaCBmb3IgZGV0YWlscy4KICAqIFRoaXMgZmlsZSBvbmx5IGNvbnRhaW5zIHdoYXQgSSBuZWVkIGZvciB0aGUgbW9tZW50LCBub3QgdGhlIHRvdGFsCiAgKiBDUE0gY2FwYWJpbGl0aWVzLiAgSSAob3Igc29tZW9uZSBlbHNlKSB3aWxsIGFkZCBkZWZpbml0aW9ucyBhcyB0aGV5CiAgKiBhcmUgbmVlZGVkLiAgLS0gRGFuCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHZjYWxsLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaHZjYWxsLmgKaW5kZXggZWMwODlhYy4uOGVkZWM3MSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2h2Y2FsbC5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9odmNhbGwuaApAQCAtMTIyLDcgKzEyMiw3IEBACiAjZGVmaW5lIEhfREFCUlhfS0VSTkVMCQkoMVVMPDwoNjMtNjIpKQogI2RlZmluZSBIX0RBQlJYX1VTRVIJCSgxVUw8PCg2My02MykpCiAKLS8qIEVhY2ggY29udHJvbCBibG9jayBoYXMgdG8gYmUgb24gYSA0SyBib25kYXJ5ICovCisvKiBFYWNoIGNvbnRyb2wgYmxvY2sgaGFzIHRvIGJlIG9uIGEgNEsgYm91bmRhcnkgKi8KICNkZWZpbmUgSF9DQl9BTElHTk1FTlQgICAgICAgICAgNDA5NgogCiAvKiBwU2VyaWVzIGh5cGVydmlzb3Igb3Bjb2RlcyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2twcm9iZXMuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9rcHJvYmVzLmgKaW5kZXggZDBlNzcwMS4uYmUwMTcxYSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2twcm9iZXMuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20va3Byb2Jlcy5oCkBAIC01MCw3ICs1MCw3IEBACiAgKiBIYW5kbGUgY2FzZXMgd2hlcmU6CiAgKiAJCS0gVXNlciBwYXNzZXMgYSA8LnN5bWJvbD4gb3IgPG1vZHVsZTouc3ltYm9sPgogICogCQktIFVzZXIgcGFzc2VzIGEgPHN5bWJvbD4gb3IgPG1vZHVsZTpzeW1ib2w+Ci0gKiAJCS0gVXNlciBwYXNzZXMgYSBub24tZXhpc3RhbnQgc3ltYm9sLCBrYWxsc3ltc19sb29rdXBfbmFtZQorICogCQktIFVzZXIgcGFzc2VzIGEgbm9uLWV4aXN0ZW50IHN5bWJvbCwga2FsbHN5bXNfbG9va3VwX25hbWUKICAqIAkJICByZXR1cm5zIDAuIERvbid0IGRlcmVmIHRoZSBOVUxMIHBvaW50ZXIgaW4gdGhhdCBjYXNlCiAgKi8KICNkZWZpbmUga3Byb2JlX2xvb2t1cF9uYW1lKG5hbWUsIGFkZHIpCQkJCQlcCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbHBwYWNhLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vbHBwYWNhLmgKaW5kZXggMjZiOGM4MC4uYTA3N2FkYyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2xwcGFjYS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9scHBhY2EuaApAQCAtMTA1LDcgKzEwNSw3IEBACiAJLy8gcHJvY2Vzc2luZyBvZiBleHRlcm5hbCBpbnRlcnJ1cHRzLiAgTm90ZSB0aGF0IFBMSUMgd2lsbCBzdG9yZSB0aGUKIAkvLyBYSVJSIGRpcmVjdGx5IGludG8gdGhlIHhYaXJyVmFsdWUgZmllbGQgc28gdGhhdCBhbm90aGVyIFhJUlIgd2lsbAogCS8vIG5vdCBiZSBwcmVzZW50ZWQgdW50aWwgdGhpcyBvbmUgY2xlYXJzLiAgVGhlIGxheW91dCBvZiB0aGUgbG93Ci0JLy8gNC1ieXRlcyBvZiB0aGlzIER3b3JkIGlzIHVwdG8gU0xJQyAtIFBMSUMganVzdCBjaGVja3Mgd2hldGhlciB0aGUKKwkvLyA0LWJ5dGVzIG9mIHRoaXMgRHdvcmQgaXMgdXAgdG8gU0xJQyAtIFBMSUMganVzdCBjaGVja3Mgd2hldGhlciB0aGUKIAkvLyBlbnRpcmUgRHdvcmQgaXMgemVybyBvciBub3QuICBBIG5vbi16ZXJvIHZhbHVlIGluIHRoZSBsb3cgb3JkZXIKIAkvLyAyLWJ5dGVzIHdpbGwgcmVzdWx0IGluIFNMSUMgYmVpbmcgZ3JhbnRlZCB0aGUgaGlnaGVzdCB0aHJlYWQKIAkvLyBwcmlvcml0eSB1cG9uIHJldHVybi4gIEEgMCB3aWxsIHJldHVybiB0byBTTElDIGFzIG1lZGl1bSBwcmlvcml0eS4KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlXzY0LmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFnZV82NC5oCmluZGV4IDkzMmY4OGQuLjgxMmIyY2QgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYWdlXzY0LmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BhZ2VfNjQuaApAQCAtMTY5LDcgKzE2OSw3IEBACiAvKgogICogVGhpcyBpcyB0aGUgZGVmYXVsdCBpZiBhIHByb2dyYW0gZG9lc24ndCBoYXZlIGEgUFRfR05VX1NUQUNLCiAgKiBwcm9ncmFtIGhlYWRlciBlbnRyeS4gVGhlIFBQQzY0IEVMRiBBQkkgaGFzIGEgbm9uIGV4ZWN1dGFibGUgc3RhY2sKLSAqIHN0YWNrIGJ5IGRlZmF1bHQsIHNvIGluIHRoZSBhYnNlbnNlIG9mIGEgUFRfR05VX1NUQUNLIHByb2dyYW0gaGVhZGVyCisgKiBzdGFjayBieSBkZWZhdWx0LCBzbyBpbiB0aGUgYWJzZW5jZSBvZiBhIFBUX0dOVV9TVEFDSyBwcm9ncmFtIGhlYWRlcgogICogd2UgdHVybiBleGVjdXRlIHBlcm1pc3Npb24gb2ZmLgogICovCiAjZGVmaW5lIFZNX1NUQUNLX0RFRkFVTFRfRkxBR1MzMgkoVk1fUkVBRCB8IFZNX1dSSVRFIHwgVk1fRVhFQyB8IFwKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYXNlbWlfZG1hLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGFzZW1pX2RtYS5oCmluZGV4IDE5ZmQ3OTMuLmVhZmE1YTUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wYXNlbWlfZG1hLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Bhc2VtaV9kbWEuaApAQCAtNTIyLDcgKzUyMiw3IEBACiBleHRlcm4gdm9pZCBwYXNlbWlfZG1hX2ZyZWVfYnVmKHN0cnVjdCBwYXNlbWlfZG1hY2hhbiAqY2hhbiwgaW50IHNpemUsCiAJCQkJZG1hX2FkZHJfdCAqaGFuZGxlKTsKIAotLyogUm91dGluZXMgdG8gYWxsb2NhdGUgZmxhZ3MgKGV2ZW50cykgZm9yIGNoYW5uZWwgc3luY3Jvbml6YXRpb24gKi8KKy8qIFJvdXRpbmVzIHRvIGFsbG9jYXRlIGZsYWdzIChldmVudHMpIGZvciBjaGFubmVsIHN5bmNocm9uaXphdGlvbiAqLwogZXh0ZXJuIGludCAgcGFzZW1pX2RtYV9hbGxvY19mbGFnKHZvaWQpOwogZXh0ZXJuIHZvaWQgcGFzZW1pX2RtYV9mcmVlX2ZsYWcoaW50IGZsYWcpOwogZXh0ZXJuIHZvaWQgcGFzZW1pX2RtYV9zZXRfZmxhZyhpbnQgZmxhZyk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaAppbmRleCA1ZTE1NmUwLi5iOTBkYmY4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJyaWRnZS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wY2ktYnJpZGdlLmgKQEAgLTEwNiw3ICsxMDYsNyBAQAogCSAqIFVzZWQgZm9yIHZhcmlhbnRzIG9mIFBDSSBpbmRpcmVjdCBoYW5kbGluZyBhbmQgcG9zc2libGUgcXVpcmtzOgogCSAqICBTRVRfQ0ZHX1RZUEUgLSB1c2VkIG9uIDR4eCBvciBhbnkgUEhCIHRoYXQgZG9lcyBleHBsaWNpdCB0eXBlMC8xCiAJICogIEVYVF9SRUcgLSBwcm92aWRlcyBhY2Nlc3MgdG8gUENJLWUgZXh0ZW5kZWQgcmVnaXN0ZXJzCi0JICogIFNVUlBSRVNTX1BSSU1BUllfQlVTIC0gd2Ugc3VycHJlc3MgdGhlIHNldHRpbmcgb2YgUENJX1BSSU1BUllfQlVTCisJICogIFNVUlBSRVNTX1BSSU1BUllfQlVTIC0gd2Ugc3VwcHJlc3MgdGhlIHNldHRpbmcgb2YgUENJX1BSSU1BUllfQlVTCiAJICogICBvbiBGcmVlc2NhbGUgUENJLWUgY29udHJvbGxlcnMgc2luY2UgdGhleSB1c2VkIHRoZSBQQ0lfUFJJTUFSWV9CVVMKIAkgKiAgIHRvIGRldGVybWluZSB3aGljaCBidXMgbnVtYmVyIHRvIG1hdGNoIG9uIHdoZW4gZ2VuZXJhdGluZyB0eXBlMAogCSAqICAgY29uZmlnIGN5Y2xlcwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYWNfZmVhdHVyZS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYWNfZmVhdHVyZS5oCmluZGV4IDAwZWVkYzUuLjEwOTAyYzkzNyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BtYWNfZmVhdHVyZS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wbWFjX2ZlYXR1cmUuaApAQCAtNTMsOCArNTMsOCBAQAogCiAvKiBIZXJlIGlzIHRoZSBpbmZhbW91cyBzZXJpZSBvZiBPSGFyZSBiYXNlZCBtYWNoaW5lcwogICovCi0jZGVmaW5lIFBNQUNfVFlQRV9DT01FVAkJCTB4MjAJLyogQmVsZWl2ZWQgdG8gYmUgUG93ZXJCb29rIDI0MDAgKi8KLSNkZWZpbmUgUE1BQ19UWVBFX0hPT1BFUgkJMHgyMQkvKiBCZWxlaXZlZCB0byBiZSBQb3dlckJvb2sgMzQwMCAqLworI2RlZmluZSBQTUFDX1RZUEVfQ09NRVQJCQkweDIwCS8qIEJlbGlldmVkIHRvIGJlIFBvd2VyQm9vayAyNDAwICovCisjZGVmaW5lIFBNQUNfVFlQRV9IT09QRVIJCTB4MjEJLyogQmVsaWV2ZWQgdG8gYmUgUG93ZXJCb29rIDM0MDAgKi8KICNkZWZpbmUgUE1BQ19UWVBFX0tBTkdBCQkJMHgyMgkvKiBQb3dlckJvb2sgMzUwMCAoZmlyc3QgRzMpICovCiAjZGVmaW5lIFBNQUNfVFlQRV9BTENIRU1ZCQkweDIzCS8qIEFsY2hlbXkgbW90aGVyYm9hcmQgYmFzZSAqLwogI2RlZmluZSBQTUFDX1RZUEVfR0FaRUxMRQkJMHgyNAkvKiBTcGFydGFjdXMsIHNvbWUgNXh4eC82eHh4ICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLWNvbW1vbi5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3B0ZS1jb21tb24uaAppbmRleCA3NmJiMTk1Li44MTFmMDRhIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHRlLWNvbW1vbi5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wdGUtY29tbW9uLmgKQEAgLTg2LDcgKzg2LDcgQEAKICNkZWZpbmUgUFRFX1JQTl9NQVNLCSh+KCgxVUw8PFBURV9SUE5fU0hJRlQpLTEpKQogI2VuZGlmCiAKLS8qIF9QQUdFX0NIR19NQVNLIG1hc2tzIG9mIGJpdHMgdGhhdCBhcmUgdG8gYmUgcHJlc2VydmVkIGFjY3Jvc3MKKy8qIF9QQUdFX0NIR19NQVNLIG1hc2tzIG9mIGJpdHMgdGhhdCBhcmUgdG8gYmUgcHJlc2VydmVkIGFjcm9zcwogICogcGdwcm90IGNoYW5nZXMKICAqLwogI2RlZmluZSBfUEFHRV9DSEdfTUFTSwkoUFRFX1JQTl9NQVNLIHwgX1BBR0VfSFBURUZMQUdTIHwgX1BBR0VfRElSVFkgfCBcCkBAIC0xNzQsNyArMTc0LDcgQEAKIC8qCiAgKiBEb24ndCBqdXN0IGNoZWNrIGZvciBhbnkgbm9uIHplcm8gYml0cyBpbiBfX1BBR0VfVVNFUiwgc2luY2UgZm9yIGJvb2szZQogICogYW5kIFBURV82NEJJVCwgUEFHRV9LRVJORUxfWCBjb250YWlucyBfUEFHRV9CQVBfU1Igd2hpY2ggaXMgYWxzbyBpbgotICogX1BBR0VfVVNFUi4gIE5lZWQgdG8gZXhwbGljdGx5IG1hdGNoIF9QQUdFX0JBUF9VUiBiaXQgaW4gdGhhdCBjYXNlIHRvby4KKyAqIF9QQUdFX1VTRVIuICBOZWVkIHRvIGV4cGxpY2l0bHkgbWF0Y2ggX1BBR0VfQkFQX1VSIGJpdCBpbiB0aGF0IGNhc2UgdG9vLgogICovCiAjZGVmaW5lIHB0ZV91c2VyKHZhbCkJCSgodmFsICYgX1BBR0VfVVNFUikgPT0gX1BBR0VfVVNFUikKIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3JlZ19ib29rZS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3JlZ19ib29rZS5oCmluZGV4IDNiMWE5YjcuLmIzMTY3OTQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9yZWdfYm9va2UuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcmVnX2Jvb2tlLmgKQEAgLTIsNyArMiw3IEBACiAgKiBDb250YWlucyByZWdpc3RlciBkZWZpbml0aW9ucyBjb21tb24gdG8gdGhlIEJvb2sgRSBQb3dlclBDCiAgKiBzcGVjaWZpY2F0aW9uLiAgTm90aWNlIHRoYXQgd2hpbGUgdGhlIElCTS00MHggc2VyaWVzIG9mIENQVXMKICAqIGFyZSBub3QgdHJ1ZSBCb29rIEUgUG93ZXJQQ3MsIHRoZXkgYm9ycm93ZWQgYSBudW1iZXIgb2YgZmVhdHVyZXMKLSAqIGJlZm9yZSBCb29rIEUgd2FzIGZpbmFsaXplZCwgYW5kIGFyZSBpbmNsdWRlZCBoZXJlIGFzIHdlbGwuICBVbmZvcnR1bmF0bHksCisgKiBiZWZvcmUgQm9vayBFIHdhcyBmaW5hbGl6ZWQsIGFuZCBhcmUgaW5jbHVkZWQgaGVyZSBhcyB3ZWxsLiAgVW5mb3J0dW5hdGVseSwKICAqIHRoZXkgc29tZXRpbWVzIHVzZWQgZGlmZmVyZW50IGxvY2F0aW9ucyB0aGFuIHRydWUgQm9vayBFIENQVXMgZGlkLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcHVfcHJpdjEuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9zcHVfcHJpdjEuaAppbmRleCAyNTAyMGEzLi5kOGY1YzYwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vc3B1X3ByaXYxLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3NwdV9wcml2MS5oCkBAIC0yMjMsNyArMjIzLDcgQEAKIH0KIAogLyoKLSAqIFRoZSBkZWNsYXJhdGlvbnMgZm9sb3dpbmcgYXJlIHB1dCBoZXJlIGZvciBjb252ZW5pZW5jZQorICogVGhlIGRlY2xhcmF0aW9ucyBmb2xsb3dpbmcgYXJlIHB1dCBoZXJlIGZvciBjb252ZW5pZW5jZQogICogYW5kIG9ubHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBieSB0aGUgcGxhdGZvcm0gc2V0dXAgY29kZS4KICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdW5pbm9ydGguaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91bmlub3J0aC5oCmluZGV4IGY3Mzc3MzIuLmFlOWM4OTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91bmlub3J0aC5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS91bmlub3J0aC5oCkBAIC02MCw3ICs2MCw3IEBACiAgKgogICogT2J2aW91c2x5LCB0aGUgR0FSVCBpcyBub3QgY2FjaGUgY29oZXJlbnQgYW5kIHNvIGFueSBjaGFuZ2UgdG8gaXQKICAqIG11c3QgYmUgZmx1c2hlZCB0byBtZW1vcnkgKG9yIG1heWJlIGp1c3QgbWFrZSB0aGUgR0FSVCBzcGFjZSBub24KLSAqIGNhY2hhYmxlKS4gQUdQIG1lbW9yeSBpdHNlbGYgZG9lbnMndCBzZWVtIHRvIGJlIGNhY2hlIGNvaGVyZW50IG5laXRoZXIuCisgKiBjYWNoYWJsZSkuIEFHUCBtZW1vcnkgaXRzZWxmIGRvZXMndCBzZWVtIHRvIGJlIGNhY2hlIGNvaGVyZW50IG5laXRoZXIuCiAgKgogICogSW4gb3JkZXIgdG8gaW52YWxpZGF0ZSB0aGUgR0FSVCAod2hpY2ggaXMgcHJvYmFibHkgbmVjZXNzYXJ5IHRvIGludmFsCiAgKiB0aGUgYnJpZGdlIGludGVybmFsIFRMQnMpLCB0aGUgZm9sbG93aW5nIHNlcXVlbmNlIGhhcyB0byBiZSB3cml0dGVuLApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc29fZGF0YXBhZ2UuaCBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS92ZHNvX2RhdGFwYWdlLmgKaW5kZXggMjVlMzkyMi4uYjczYTgxOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Zkc29fZGF0YXBhZ2UuaAorKysgYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vdmRzb19kYXRhcGFnZS5oCkBAIC01Nyw3ICs1Nyw3IEBACiAJfSB2ZXJzaW9uOwogCiAJLyogTm90ZSBhYm91dCB0aGUgcGxhdGZvcm0gZmxhZ3M6IGl0IG5vdyBvbmx5IGNvbnRhaW5zIHRoZSBscGFyCi0JICogYml0LiBUaGUgYWN0dWFsIHBsYXRmb3JtIG51bWJlciBpcyBkZWFkIGFuZCBidXJyaWVkCisJICogYml0LiBUaGUgYWN0dWFsIHBsYXRmb3JtIG51bWJlciBpcyBkZWFkIGFuZCBidXJpZWQKIAkgKi8KIAlfX3UzMiBwbGF0Zm9ybTsJCQkvKiBQbGF0Zm9ybSBmbGFncwkJMHgxOCAqLwogCV9fdTMyIHByb2Nlc3NvcjsJCS8qIFByb2Nlc3NvciB0eXBlCQkweDFDICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2J0ZXh0LmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2J0ZXh0LmMKaW5kZXggNjI1OTQyYS4uNjBiM2UzNyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9idGV4dC5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvYnRleHQuYwpAQCAtOTksNyArOTksNyBAQAogCiAvKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIGVuYWJsZSB0aGUgZWFybHkgYm9vdCB0ZXh0IHdoZW4gZG9pbmcKICAqIE9GIGJvb3Rpbmcgb3Igd2l0aGluIGJvb3R4IGluaXQuIEl0IG11c3QgYmUgZm9sbG93ZWQgYnkgYSBidGV4dF91bm1hcCgpCi0gKiBjYWxsIGJlZm9yZSB0aGUgbG9naWNhbCBhZGRyZXNzIGJlY29tZXMgdW51c2VhYmxlCisgKiBjYWxsIGJlZm9yZSB0aGUgbG9naWNhbCBhZGRyZXNzIGJlY29tZXMgdW51c2FibGUKICAqLwogdm9pZCBfX2luaXQgYnRleHRfc2V0dXBfZGlzcGxheShpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBkZXB0aCwgaW50IHBpdGNoLAogCQkJCXVuc2lnbmVkIGxvbmcgYWRkcmVzcykKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvZXhjZXB0aW9ucy02NGUuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvZXhjZXB0aW9ucy02NGUuUwppbmRleCA1YzQzMDYzLi45NjUxYWNjIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2V4Y2VwdGlvbnMtNjRlLlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0ZS5TCkBAIC0zNzksNyArMzc5LDcgQEAKIAltZnNwcglyMTMsU1BSTl9TUFJHX1BBQ0EJLyogZ2V0IG91ciBQQUNBICovCiAJYglzeXN0ZW1fY2FsbF9jb21tb24KIAotLyogQXV4aWxsYXJ5IFByb2Nlc3NvciBVbmF2YWlsYWJsZSBJbnRlcnJ1cHQgKi8KKy8qIEF1eGlsaWFyeSBQcm9jZXNzb3IgVW5hdmFpbGFibGUgSW50ZXJydXB0ICovCiAJU1RBUlRfRVhDRVBUSU9OKGFwX3VuYXZhaWxhYmxlKTsKIAlOT1JNQUxfRVhDRVBUSU9OX1BST0xPRygweGYyMCwgUFJPTE9HX0FERElUSU9OX05PTkUpCiAJRVhDRVBUSU9OX0NPTU1PTigweGYyMCwgUEFDQV9FWEdFTiwgSU5UU19LRUVQKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0cy5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9leGNlcHRpb25zLTY0cy5TCmluZGV4IGM1MzJjYjIuLmFlYjczOWUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvZXhjZXB0aW9ucy02NHMuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2V4Y2VwdGlvbnMtNjRzLlMKQEAgLTUsNyArNSw3IEBACiAgKiBoYW5kbGluZyBhbmQgb3RoZXIgZml4ZWQgb2Zmc2V0IHNwZWNpZmljIHRoaW5ncy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgbWVhbnQgdG8gYmUgI2luY2x1ZGVkIGZyb20gaGVhZF82NC5TIGR1ZSB0bwotICogcG9zaXRpb24gZGVwZW5kYW50IGFzc2VtYmx5LgorICogcG9zaXRpb24gZGVwZW5kZW50IGFzc2VtYmx5LgogICoKICAqIE1vc3Qgb2YgdGhpcyBvcmlnaW5hdGVzIGZyb20gaGVhZF82NC5TIGFuZCB0aHVzIGhhcyB0aGUgc2FtZQogICogY29weXJpZ2h0IGhpc3RvcnkuCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNDB4LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNDB4LlMKaW5kZXggOWRkMjFhOC4uYTkxNjI2ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzQweC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF80MHguUwpAQCAtNzY2LDcgKzc2Niw3IEBACiAJICogbWlzcyBnZXQgdG8gdGhpcyBwb2ludCB0byBsb2FkIHRoZSBUTEIuCiAJICogCXIxMCAtIFRMQl9UQUcgdmFsdWUKIAkgKiAJcjExIC0gTGludXggUFRFCi0JICoJcjEyLCByOSAtIGF2aWxhYmxlIHRvIHVzZQorCSAqCXIxMiwgcjkgLSBhdmFpbGFibGUgdG8gdXNlCiAJICoJUElEIC0gbG9hZGVkIHdpdGggcHJvcGVyIHZhbHVlIHdoZW4gd2UgZ2V0IGhlcmUKIAkgKglVcG9uIGV4aXQsIHdlIHJlbG9hZCBldmVyeXRoaW5nIGFuZCBSRkkuCiAJICogQWN0dWFsbHksIGl0IHdpbGwgZml0IG5vdywgYnV0IG9oIHdlbGwuLi4uLmEgY29tbW9uIHBsYWNlCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNDR4LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfNDR4LlMKaW5kZXggY2JiMzQzNi4uNWUxMmI3NCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzQ0eC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF80NHguUwpAQCAtMTc4LDcgKzE3OCw3IEBACiAJTk9STUFMX0VYQ0VQVElPTl9QUk9MT0cKIAlFWENfWEZFUl9FRV9MSVRFKDB4MGMwMCwgRG9TeXNjYWxsKQogCi0JLyogQXV4aWxsYXJ5IFByb2Nlc3NvciBVbmF2YWlsYWJsZSBJbnRlcnJ1cHQgKi8KKwkvKiBBdXhpbGlhcnkgUHJvY2Vzc29yIFVuYXZhaWxhYmxlIEludGVycnVwdCAqLwogCUVYQ0VQVElPTigweDIwMjAsIEF1eGlsbGFyeVByb2Nlc3NvclVuYXZhaWxhYmxlLCB1bmtub3duX2V4Y2VwdGlvbiwgRVhDX1hGRVJfRUUpCiAKIAkvKiBEZWNyZW1lbnRlciBJbnRlcnJ1cHQgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF82NC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzY0LlMKaW5kZXggMjcxMTQwYi4uM2EzMTlmOSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzY0LlMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkXzY0LlMKQEAgLTQwLDcgKzQwLDcgQEAKICNpbmNsdWRlIDxhc20va3ZtX2Jvb2szc19hc20uaD4KICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CiAKLS8qIFRoZSBwaHlzaWNhbCBtZW1vcnkgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgc2Vjb25kYXJ5IHByb2Nlc3NvcgorLyogVGhlIHBoeXNpY2FsIG1lbW9yeSBpcyBsYWlkIG91dCBzdWNoIHRoYXQgdGhlIHNlY29uZGFyeSBwcm9jZXNzb3IKICAqIHNwaW4gY29kZSBzaXRzIGF0IDB4MDAwMC4uLjB4MDBmZi4gT24gc2VydmVyLCB0aGUgdmVjdG9ycyBmb2xsb3cKICAqIHVzaW5nIHRoZSBsYXlvdXQgZGVzY3JpYmVkIGluIGV4Y2VwdGlvbnMtNjRzLlMKICAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkX2ZzbF9ib29rZS5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9oZWFkX2ZzbF9ib29rZS5TCmluZGV4IDNlMDI3MTAuLjVlY2Y1NGMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvaGVhZF9mc2xfYm9va2UuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2hlYWRfZnNsX2Jvb2tlLlMKQEAgLTMyNiw3ICszMjYsNyBAQAogCU5PUk1BTF9FWENFUFRJT05fUFJPTE9HCiAJRVhDX1hGRVJfRUVfTElURSgweDBjMDAsIERvU3lzY2FsbCkKIAotCS8qIEF1eGlsbGFyeSBQcm9jZXNzb3IgVW5hdmFpbGFibGUgSW50ZXJydXB0ICovCisJLyogQXV4aWxpYXJ5IFByb2Nlc3NvciBVbmF2YWlsYWJsZSBJbnRlcnJ1cHQgKi8KIAlFWENFUFRJT04oMHgyOTAwLCBBdXhpbGxhcnlQcm9jZXNzb3JVbmF2YWlsYWJsZSwgdW5rbm93bl9leGNlcHRpb24sIEVYQ19YRkVSX0VFKQogCiAJLyogRGVjcmVtZW50ZXIgSW50ZXJydXB0ICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL2wyY3JfNnh4LlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2wyY3JfNnh4LlMKaW5kZXggMmEyZjNjMy4uOTdlYzg1NSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9sMmNyXzZ4eC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvbDJjcl82eHguUwpAQCAtMTUxLDcgKzE1MSw3IEBACiAJIC8qKioqIE1pZ2h0IGJlIGEgZ29vZCBpZGVhIHRvIHNldCBMMkRPIGhlcmUgLSB0byBwcmV2ZW50IGluc3RydWN0aW9ucwogCSAgICAgICBmcm9tIGdldHRpbmcgaW50byB0aGUgY2FjaGUuICBCdXQgc2luY2Ugd2UgaW52YWxpZGF0ZQogCSAgICAgICB0aGUgbmV4dCB0aW1lIHdlIGVuYWJsZSB0aGUgY2FjaGUgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyLgotCSAgICAgICBEb24ndCBkbyB0aGlzIHVubGVzcyB5b3UgYWNjb21vZGF0ZSBhbGwgcHJvY2Vzc29yIHZhcmlhdGlvbnMuCisJICAgICAgIERvbid0IGRvIHRoaXMgdW5sZXNzIHlvdSBhY2NvbW1vZGF0ZSBhbGwgcHJvY2Vzc29yIHZhcmlhdGlvbnMuCiAJICAgICAgIFRoZSBiaXQgbW92ZWQgb24gdGhlIDc0NTAuLi4uLgogCSAgKioqKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9scGFyY2ZnLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL2xwYXJjZmcuYwppbmRleCAxNjQ2ODM2Li4zMDFkYjY1IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL2xwYXJjZmcuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL2xwYXJjZmcuYwpAQCAtMjYyLDcgKzI2Miw3IEBACiAJc2VxX3ByaW50ZihtLCAic3lzdGVtX2FjdGl2ZV9wcm9jZXNzb3JzPSVkXG4iLAogCSAgICAgICAgICAgcHBwX2RhdGEuYWN0aXZlX3N5c3RlbV9wcm9jcyk7CiAKLQkvKiBwb29sIHJlbGF0ZWQgZW50cmllcyBhcmUgYXByb3ByaWF0ZSBmb3Igc2hhcmVkIGNvbmZpZ3MgKi8KKwkvKiBwb29sIHJlbGF0ZWQgZW50cmllcyBhcmUgYXBwcm9wcmlhdGUgZm9yIHNoYXJlZCBjb25maWdzICovCiAJaWYgKGxwcGFjYV9vZigwKS5zaGFyZWRfcHJvYykgewogCQl1bnNpZ25lZCBsb25nIHBvb2xfaWRsZV90aW1lLCBwb29sX3Byb2NzOwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3BlcmZfZXZlbnQuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGVyZl9ldmVudC5jCmluZGV4IDk3ZTBhZTQuLmM0MDYzYjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGVyZl9ldmVudC5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcGVyZl9ldmVudC5jCkBAIC03NTksNyArNzU5LDcgQEAKIAogCS8qCiAJICogSWYgZ3JvdXAgZXZlbnRzIHNjaGVkdWxpbmcgdHJhbnNhY3Rpb24gd2FzIHN0YXJ0ZWQsCi0JICogc2tpcCB0aGUgc2NoZWR1bGFiaWxpdHkgdGVzdCBoZXJlLCBpdCB3aWxsIGJlIHBlZm9ybWVkCisJICogc2tpcCB0aGUgc2NoZWR1bGFiaWxpdHkgdGVzdCBoZXJlLCBpdCB3aWxsIGJlIHBlcmZvcm1lZAogCSAqIGF0IGNvbW1pdCB0aW1lKC0+Y29tbWl0X3R4bikgYXMgYSB3aG9sZQogCSAqLwogCWlmIChjcHVody0+Z3JvdXBfZmxhZyAmIFBFUkZfRVZFTlRfVFhOKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcGNfc2F2ZV9yZWdzLlMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BwY19zYXZlX3JlZ3MuUwppbmRleCBlODNiYTNmLi4xYjE3ODdkIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3BwY19zYXZlX3JlZ3MuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3BwY19zYXZlX3JlZ3MuUwpAQCAtMTUsNyArMTUsNyBAQAogCiAvKgogICogR3JhYiB0aGUgcmVnaXN0ZXIgdmFsdWVzIGFzIHRoZXkgYXJlIG5vdy4KLSAqIFRoaXMgd29uJ3QgZG8gYSBwYXJ0aWN1bGFyaWx5IGdvb2Qgam9iIGJlY2F1c2Ugd2UgcmVhbGx5CisgKiBUaGlzIHdvbid0IGRvIGEgcGFydGljdWxhcmx5IGdvb2Qgam9iIGJlY2F1c2Ugd2UgcmVhbGx5CiAgKiB3YW50IG91ciBjYWxsZXIncyBjYWxsZXIncyByZWdpc3RlcnMsIGFuZCBvdXIgY2FsbGVyIGhhcwogICogYWxyZWFkeSBleGVjdXRlZCBpdHMgcHJvbG9ndWUuCiAgKiBUb0RvOiBXZSBjb3VsZCByZWFjaCBiYWNrIGludG8gdGhlIGNhbGxlcidzIHNhdmUgYXJlYSB0byBkbwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wcm9tLmMgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYwppbmRleCAwNWI3MTM5Li5lNzRmYTEyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Byb20uYwpAQCAtNjgzLDcgKzY4Myw3IEBACiAjZW5kaWYKIAogI2lmZGVmIENPTkZJR19QSFlQX0RVTVAKLQkvKiBzY2FuIHRyZWUgdG8gc2VlIGlmIGR1bXAgb2NjdXJlZCBkdXJpbmcgbGFzdCBib290ICovCisJLyogc2NhbiB0cmVlIHRvIHNlZSBpZiBkdW1wIG9jY3VycmVkIGR1cmluZyBsYXN0IGJvb3QgKi8KIAlvZl9zY2FuX2ZsYXRfZHQoZWFybHlfaW5pdF9kdF9zY2FuX3BoeXBfZHVtcCwgTlVMTCk7CiAjZW5kaWYKIApAQCAtNzM5LDcgKzczOSw3IEBACiAKIAlEQkcoIlNjYW5uaW5nIENQVXMgLi4uXG4iKTsKIAotCS8qIFJldHJlaXZlIENQVSByZWxhdGVkIGluZm9ybWF0aW9ucyBmcm9tIHRoZSBmbGF0IHRyZWUKKwkvKiBSZXRyaWV2ZSBDUFUgcmVsYXRlZCBpbmZvcm1hdGlvbnMgZnJvbSB0aGUgZmxhdCB0cmVlCiAJICogKGFsdGl2ZWMgc3VwcG9ydCwgYm9vdCBDUFUgSUQsIC4uLikKIAkgKi8KIAlvZl9zY2FuX2ZsYXRfZHQoZWFybHlfaW5pdF9kdF9zY2FuX2NwdXMsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcHRyYWNlLmMKaW5kZXggODk1YjA4Mi4uNTU2MTNlMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC9wdHJhY2UuYworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3B0cmFjZS5jCkBAIC00NjMsNyArNDYzLDcgQEAKICNpZmRlZiBDT05GSUdfVlNYCiAvKgogICogQ3VycmVudGx5IHRvIHNldCBhbmQgYW5kIGdldCBhbGwgdGhlIHZzeCBzdGF0ZSwgeW91IG5lZWQgdG8gY2FsbAotICogdGhlIGZwIGFuZCBWTVggY2FsbHMgYXN3ZWxsLiAgVGhpcyBvbmx5IGdldC9zZXRzIHRoZSBsb3dlciAzMgorICogdGhlIGZwIGFuZCBWTVggY2FsbHMgYXMgd2VsbC4gIFRoaXMgb25seSBnZXQvc2V0cyB0aGUgbG93ZXIgMzIKICAqIDEyOGJpdCBWU1ggcmVnaXN0ZXJzLgogICovCiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhc2QuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvcnRhc2QuYwppbmRleCA3OTgwZWMwLi42N2Y2YzNiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3J0YXNkLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9ydGFzZC5jCkBAIC00NjUsNyArNDY1LDcgQEAKIAlwcl9kZWJ1ZygicnRhc2Q6IHdpbGwgc2xlZXAgZm9yICVkIG1pbGxpc2Vjb25kc1xuIiwKIAkJICgzMDAwMCAvIHJ0YXNfZXZlbnRfc2Nhbl9yYXRlKSk7CiAKLQkvKiBSZXRyZWl2ZSBlcnJvcnMgZnJvbSBudnJhbSBpZiBhbnkgKi8KKwkvKiBSZXRyaWV2ZSBlcnJvcnMgZnJvbSBudnJhbSBpZiBhbnkgKi8KIAlyZXRyZWl2ZV9udnJhbV9lcnJvcl9sb2coKTsKIAogCXNjaGVkdWxlX2RlbGF5ZWRfd29ya19vbihjcHVtYXNrX2ZpcnN0KGNwdV9vbmxpbmVfbWFzayksCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3N3c3VzcF8zMi5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC9zd3N1c3BfMzIuUwppbmRleCBiMDc1NGUyLi5iYTRkZWUzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3N3c3VzcF8zMi5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvc3dzdXNwXzMyLlMKQEAgLTE0Myw3ICsxNDMsNyBAQAogCiAJLyogRGlzYWJsZSBNU1I6RFIgdG8gbWFrZSBzdXJlIHdlIGRvbid0IHRha2UgYSBUTEIgb3IKIAkgKiBoYXNoIG1pc3MgZHVyaW5nIHRoZSBjb3B5LCBhcyBvdXIgaGFzaCB0YWJsZSB3aWxsCi0JICogZm9yIGEgd2hpbGUgYmUgdW51c2VhYmxlLiBGb3IgLnRleHQsIHdlIGFzc3VtZSB3ZSBhcmUKKwkgKiBmb3IgYSB3aGlsZSBiZSB1bnVzYWJsZS4gRm9yIC50ZXh0LCB3ZSBhc3N1bWUgd2UgYXJlCiAJICogY292ZXJlZCBieSBhIEJBVC4gVGhpcyB3b3JrcyBvbmx5IGZvciBub24tRzUgYXQgdGhpcwogCSAqIHBvaW50LiBHNSB3aWxsIG5lZWQgYSBiZXR0ZXIgYXBwcm9hY2gsIHBvc3NpYmx5IHVzaW5nCiAJICogYSBzbWFsbCB0ZW1wb3JhcnkgaGFzaCB0YWJsZSBmaWxsZWQgd2l0aCBsYXJnZSBtYXBwaW5ncywKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdHJhcHMuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdHJhcHMuYwppbmRleCBiZDc0ZmFjLi41ZGRiODAxIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3RyYXBzLmMKKysrIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC90cmFwcy5jCkBAIC05NTksNyArOTU5LDcgQEAKIAkgKiBFU1JfRFNUICghPykgb3IgMC4gIEluIHRoZSBwcm9jZXNzIG9mIGNoYXNpbmcgdGhpcyB3aXRoIHRoZQogCSAqIGhhcmR3YXJlIHBlb3BsZSAtIG5vdCBzdXJlIGlmIGl0IGNhbiBoYXBwZW4gb24gYW55IGlsbGVnYWwKIAkgKiBpbnN0cnVjdGlvbiBvciBvbmx5IG9uIEZQIGluc3RydWN0aW9ucywgd2hldGhlciB0aGVyZSBpcyBhCi0JICogcGF0dGVybiB0byBvY2N1cmVuY2VzIGV0Yy4gLWRnaWJzb24gMzEvTWFyLzIwMDMgKi8KKwkgKiBwYXR0ZXJuIHRvIG9jY3VycmVuY2VzIGV0Yy4gLWRnaWJzb24gMzEvTWFyLzIwMDMgKi8KIAlzd2l0Y2ggKGRvX21hdGhlbXUocmVncykpIHsKIAljYXNlIDA6CiAJCWVtdWxhdGVfc2luZ2xlX3N0ZXAocmVncyk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3VkYmdfMTY1NTAuYyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdWRiZ18xNjU1MC5jCmluZGV4IGI0YjE2N2IuLmJhYTMzYTcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9rZXJuZWwvdWRiZ18xNjU1MC5jCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdWRiZ18xNjU1MC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIHVkYmcgZm9yIE5TMTY1NTAgY29tcGF0YWJsZSBzZXJpYWwgcG9ydHMKKyAqIHVkYmcgZm9yIE5TMTY1NTAgY29tcGF0aWJsZSBzZXJpYWwgcG9ydHMKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDEtMjAwNSBQUEMgNjQgVGVhbSwgSUJNIENvcnAKICAqCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc28zMi9zaWd0cmFtcC5TIGIvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvMzIvc2lndHJhbXAuUwppbmRleCA2OGQ0OWRkLi5jZjBjOWM5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc28zMi9zaWd0cmFtcC5TCisrKyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzMyL3NpZ3RyYW1wLlMKQEAgLTE5LDcgKzE5LDcgQEAKIAogLyogVGhlIG5vcCBoZXJlIGlzIGEgaGFjay4gIFRoZSBkd2FyZjIgdW53aW5kIHJvdXRpbmVzIHN1YnRyYWN0IDEgZnJvbQogICAgdGhlIHJldHVybiBhZGRyZXNzIHRvIGdldCBhbiBhZGRyZXNzIGluIHRoZSBtaWRkbGUgb2YgdGhlIHByZXN1bWVkCi0gICBjYWxsIGluc3RydWN0aW9uLiAgU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGNhbGwgaGVyZSwgd2UgYXJ0aWZpY2FsbHkKKyAgIGNhbGwgaW5zdHJ1Y3Rpb24uICBTaW5jZSB3ZSBkb24ndCBoYXZlIGEgY2FsbCBoZXJlLCB3ZSBhcnRpZmljaWFsbHkKICAgIGV4dGVuZCB0aGUgcmFuZ2UgY292ZXJlZCBieSB0aGUgdW53aW5kIGluZm8gYnkgYWRkaW5nIGEgbm9wIGJlZm9yZQogICAgdGhlIHJlYWwgc3RhcnQuICAqLwogCW5vcApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvNjQvc2lndHJhbXAuUyBiL2FyY2gvcG93ZXJwYy9rZXJuZWwvdmRzbzY0L3NpZ3RyYW1wLlMKaW5kZXggNTllYjU5Yi4uNDVlYTI4MSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2tlcm5lbC92ZHNvNjQvc2lndHJhbXAuUworKysgYi9hcmNoL3Bvd2VycGMva2VybmVsL3Zkc282NC9zaWd0cmFtcC5TCkBAIC0yMCw3ICsyMCw3IEBACiAKIC8qIFRoZSBub3AgaGVyZSBpcyBhIGhhY2suICBUaGUgZHdhcmYyIHVud2luZCByb3V0aW5lcyBzdWJ0cmFjdCAxIGZyb20KICAgIHRoZSByZXR1cm4gYWRkcmVzcyB0byBnZXQgYW4gYWRkcmVzcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBwcmVzdW1lZAotICAgY2FsbCBpbnN0cnVjdGlvbi4gIFNpbmNlIHdlIGRvbid0IGhhdmUgYSBjYWxsIGhlcmUsIHdlIGFydGlmaWNhbGx5CisgICBjYWxsIGluc3RydWN0aW9uLiAgU2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGNhbGwgaGVyZSwgd2UgYXJ0aWZpY2lhbGx5CiAgICBleHRlbmQgdGhlIHJhbmdlIGNvdmVyZWQgYnkgdGhlIHVud2luZCBpbmZvIGJ5IHBhZGRpbmcgYmVmb3JlIHRoZQogICAgcmVhbCBzdGFydC4gICovCiAJbm9wCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vaGFzaF9sb3dfNjQuUyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd182NC5TCmluZGV4IDMwNzlmNmIuLjViN2RkNGUgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd182NC5TCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9oYXNoX2xvd182NC5TCkBAIC0xOTIsOCArMTkyLDggQEAKIAlybGRpY3IJcjMscjAsMyw2My0zCQkvKiByMyA9IChoYXNoICYgbWFzaykgPDwgMyAqLwogCiAJLyogQ2FsbCBwcGNfbWQuaHB0ZV9pbnNlcnQgKi8KLQlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJlaXZlIG5ldyBwcCBiaXRzICovCi0JbXIJcjQscjI5CQkJLyogUmV0cmVpdmUgdmEgKi8KKwlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJpZXZlIG5ldyBwcCBiaXRzICovCisJbXIJcjQscjI5CQkJLyogUmV0cmlldmUgdmEgKi8KIAlsaQlyNywwCQkJLyogIWJvbHRlZCwgIXNlY29uZGFyeSAqLwogCWxpCXI4LE1NVV9QQUdFXzRLCQkvKiBwYWdlIHNpemUgKi8KIAlsZAlyOSxTVEtfUEFSTShyOSkocjEpCS8qIHNlZ21lbnQgc2l6ZSAqLwpAQCAtMjE1LDggKzIxNSw4IEBACiAJcmxkaWNyCXIzLHIwLDMsNjMtMwkvKiByMCA9ICh+aGFzaCAmIG1hc2spIDw8IDMgKi8KIAkKIAkvKiBDYWxsIHBwY19tZC5ocHRlX2luc2VydCAqLwotCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmVpdmUgbmV3IHBwIGJpdHMgKi8KLQltcglyNCxyMjkJCQkvKiBSZXRyZWl2ZSB2YSAqLworCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmlldmUgbmV3IHBwIGJpdHMgKi8KKwltcglyNCxyMjkJCQkvKiBSZXRyaWV2ZSB2YSAqLwogCWxpCXI3LEhQVEVfVl9TRUNPTkRBUlkJLyogIWJvbHRlZCwgc2Vjb25kYXJ5ICovCiAJbGkJcjgsTU1VX1BBR0VfNEsJCS8qIHBhZ2Ugc2l6ZSAqLwogCWxkCXI5LFNUS19QQVJNKHI5KShyMSkJLyogc2VnbWVudCBzaXplICovCkBAIC00OTUsOCArNDk1LDggQEAKIAlybGRpY3IJcjMscjAsMyw2My0zCQkvKiByMCA9IChoYXNoICYgbWFzaykgPDwgMyAqLwogCiAJLyogQ2FsbCBwcGNfbWQuaHB0ZV9pbnNlcnQgKi8KLQlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJlaXZlIG5ldyBwcCBiaXRzICovCi0JbXIJcjQscjI5CQkJLyogUmV0cmVpdmUgdmEgKi8KKwlsZAlyNixTVEtfUEFSTShyNCkocjEpCS8qIFJldHJpZXZlIG5ldyBwcCBiaXRzICovCisJbXIJcjQscjI5CQkJLyogUmV0cmlldmUgdmEgKi8KIAlsaQlyNywwCQkJLyogIWJvbHRlZCwgIXNlY29uZGFyeSAqLwogCWxpCXI4LE1NVV9QQUdFXzRLCQkvKiBwYWdlIHNpemUgKi8KIAlsZAlyOSxTVEtfUEFSTShyOSkocjEpCS8qIHNlZ21lbnQgc2l6ZSAqLwpAQCAtNTIyLDggKzUyMiw4IEBACiAJcmxkaWNyCXIzLHIwLDMsNjMtMwkJLyogcjAgPSAofmhhc2ggJiBtYXNrKSA8PCAzICovCiAKIAkvKiBDYWxsIHBwY19tZC5ocHRlX2luc2VydCAqLwotCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmVpdmUgbmV3IHBwIGJpdHMgKi8KLQltcglyNCxyMjkJCQkvKiBSZXRyZWl2ZSB2YSAqLworCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmlldmUgbmV3IHBwIGJpdHMgKi8KKwltcglyNCxyMjkJCQkvKiBSZXRyaWV2ZSB2YSAqLwogCWxpCXI3LEhQVEVfVl9TRUNPTkRBUlkJLyogIWJvbHRlZCwgc2Vjb25kYXJ5ICovCiAJbGkJcjgsTU1VX1BBR0VfNEsJCS8qIHBhZ2Ugc2l6ZSAqLwogCWxkCXI5LFNUS19QQVJNKHI5KShyMSkJLyogc2VnbWVudCBzaXplICovCkBAIC04MTMsOCArODEzLDggQEAKIAlybGRpY3IJcjMscjAsMyw2My0zCS8qIHIwID0gKGhhc2ggJiBtYXNrKSA8PCAzICovCiAKIAkvKiBDYWxsIHBwY19tZC5ocHRlX2luc2VydCAqLwotCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmVpdmUgbmV3IHBwIGJpdHMgKi8KLQltcglyNCxyMjkJCQkvKiBSZXRyZWl2ZSB2YSAqLworCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmlldmUgbmV3IHBwIGJpdHMgKi8KKwltcglyNCxyMjkJCQkvKiBSZXRyaWV2ZSB2YSAqLwogCWxpCXI3LDAJCQkvKiAhYm9sdGVkLCAhc2Vjb25kYXJ5ICovCiAJbGkJcjgsTU1VX1BBR0VfNjRLCiAJbGQJcjksU1RLX1BBUk0ocjkpKHIxKQkvKiBzZWdtZW50IHNpemUgKi8KQEAgLTgzNiw4ICs4MzYsOCBAQAogCXJsZGljcglyMyxyMCwzLDYzLTMJLyogcjAgPSAofmhhc2ggJiBtYXNrKSA8PCAzICovCiAKIAkvKiBDYWxsIHBwY19tZC5ocHRlX2luc2VydCAqLwotCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmVpdmUgbmV3IHBwIGJpdHMgKi8KLQltcglyNCxyMjkJCQkvKiBSZXRyZWl2ZSB2YSAqLworCWxkCXI2LFNUS19QQVJNKHI0KShyMSkJLyogUmV0cmlldmUgbmV3IHBwIGJpdHMgKi8KKwltcglyNCxyMjkJCQkvKiBSZXRyaWV2ZSB2YSAqLwogCWxpCXI3LEhQVEVfVl9TRUNPTkRBUlkJLyogIWJvbHRlZCwgc2Vjb25kYXJ5ICovCiAJbGkJcjgsTU1VX1BBR0VfNjRLCiAJbGQJcjksU1RLX1BBUk0ocjkpKHIxKQkvKiBzZWdtZW50IHNpemUgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMgYi9hcmNoL3Bvd2VycGMvbW0vaGFzaF91dGlsc182NC5jCmluZGV4IGE1OTkxZmEuLjU4YTAyMmQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9oYXNoX3V0aWxzXzY0LmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL2hhc2hfdXRpbHNfNjQuYwpAQCAtNzUzLDcgKzc1Myw3IEBACiAJCW10c3ByKFNQUk5fU0RSMSwgX1NEUjEpOwogCiAJLyogSW5pdGlhbGl6ZSBTVEFCL1NMQi4gV2UgdXNlIGEgdmlydHVhbCBhZGRyZXNzIGFzIGl0IHdvcmtzCi0JICogaW4gcmVhbCBtb2RlIG9uIHBTZXJpZXMgYW5kIHdlIHdhbnQgYSB2aXJ1dGFsIGFkZHJlc3Mgb24KKwkgKiBpbiByZWFsIG1vZGUgb24gcFNlcmllcyBhbmQgd2Ugd2FudCBhIHZpcnR1YWwgYWRkcmVzcyBvbgogCSAqIGlTZXJpZXMgYW55d2F5CiAJICovCiAJaWYgKGNwdV9oYXNfZmVhdHVyZShDUFVfRlRSX1NMQikpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vbWVtLmMgYi9hcmNoL3Bvd2VycGMvbW0vbWVtLmMKaW5kZXggYTY2NDk5Ni4uNTdlNTQ1YiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL21tL21lbS5jCisrKyBiL2FyY2gvcG93ZXJwYy9tbS9tZW0uYwpAQCAtNDI0LDcgKzQyNCw3IEBACiAJY2xlYXJfcGFnZShwYWdlKTsKIAogCS8qCi0JICogV2Ugc2hvdWxkbnQgaGF2ZSB0byBkbyB0aGlzLCBidXQgc29tZSB2ZXJzaW9ucyBvZiBnbGliYworCSAqIFdlIHNob3VsZG4ndCBoYXZlIHRvIGRvIHRoaXMsIGJ1dCBzb21lIHZlcnNpb25zIG9mIGdsaWJjCiAJICogcmVxdWlyZSBpdCAobGQuc28gYXNzdW1lcyB6ZXJvIGZpbGxlZCBwYWdlcyBhcmUgaWNhY2hlIGNsZWFuKQogCSAqIC0gQW50b24KIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMgYi9hcmNoL3Bvd2VycGMvbW0vbnVtYS5jCmluZGV4IDBkYzk1YzAuLjVlYzFkYWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS9udW1hLmMKKysrIGIvYXJjaC9wb3dlcnBjL21tL251bWEuYwpAQCAtNDQwLDExICs0NDAsMTEgQEAKIH0KIAogLyoKLSAqIFJldHJlaXZlIGFuZCB2YWxpZGF0ZSB0aGUgaWJtLGR5bmFtaWMtbWVtb3J5IHByb3BlcnR5IG9mIHRoZSBkZXZpY2UgdHJlZS4KKyAqIFJldHJpZXZlIGFuZCB2YWxpZGF0ZSB0aGUgaWJtLGR5bmFtaWMtbWVtb3J5IHByb3BlcnR5IG9mIHRoZSBkZXZpY2UgdHJlZS4KICAqCiAgKiBUaGUgbGF5b3V0IG9mIHRoZSBpYm0sZHluYW1pYy1tZW1vcnkgcHJvcGVydHkgaXMgYSBudW1iZXIgTiBvZiBtZW1ibG9jawogICogbGlzdCBlbnRyaWVzIGZvbGxvd2VkIGJ5IE4gbWVtYmxvY2sgbGlzdCBlbnRyaWVzLiAgRWFjaCBtZW1ibG9jayBsaXN0IGVudHJ5Ci0gKiBjb250YWlucyBpbmZvcm1hdGlvbiBhcyBsYXllZCBvdXQgaW4gdGhlIG9mX2RyY29uZl9jZWxsIHN0cnVjdCBhYm92ZS4KKyAqIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFzIGxhaWQgb3V0IGluIHRoZSBvZl9kcmNvbmZfY2VsbCBzdHJ1Y3QgYWJvdmUuCiAgKi8KIHN0YXRpYyBpbnQgb2ZfZ2V0X2RyY29uZl9tZW1vcnkoc3RydWN0IGRldmljZV9ub2RlICptZW1vcnksIGNvbnN0IHUzMiAqKmRtKQogewpAQCAtNDY4LDcgKzQ2OCw3IEBACiB9CiAKIC8qCi0gKiBSZXRyZWl2ZSBhbmQgdmFsaWRhdGUgdGhlIGlibSxsbWItc2l6ZSBwcm9wZXJ0eSBmb3IgZHJjb25mIG1lbW9yeQorICogUmV0cmlldmUgYW5kIHZhbGlkYXRlIHRoZSBpYm0sbG1iLXNpemUgcHJvcGVydHkgZm9yIGRyY29uZiBtZW1vcnkKICAqIGZyb20gdGhlIGRldmljZSB0cmVlLgogICovCiBzdGF0aWMgdTY0IG9mX2dldF9sbWJfc2l6ZShzdHJ1Y3QgZGV2aWNlX25vZGUgKm1lbW9yeSkKQEAgLTQ5MCw3ICs0OTAsNyBAQAogfTsKIAogLyoKLSAqIFJldHJlaXZlIGFuZCB2YWxpZGF0ZSB0aGUgbGlzdCBvZiBhc3NvY2lhdGl2aXR5IGFycmF5cyBmb3IgZHJjb25mCisgKiBSZXRyaWV2ZSBhbmQgdmFsaWRhdGUgdGhlIGxpc3Qgb2YgYXNzb2NpYXRpdml0eSBhcnJheXMgZm9yIGRyY29uZgogICogbWVtb3J5IGZyb20gdGhlIGlibSxhc3NvY2lhdGl2aXR5LWxvb2t1cC1hcnJheXMgcHJvcGVydHkgb2YgdGhlCiAgKiBkZXZpY2UgdHJlZS4uCiAgKgpAQCAtNjA0LDcgKzYwNCw3IEBACiAgKiBSZXR1cm5zIHRoZSBzaXplIHRoZSByZWdpb24gc2hvdWxkIGhhdmUgdG8gZW5mb3JjZSB0aGUgbWVtb3J5IGxpbWl0LgogICogVGhpcyB3aWxsIGVpdGhlciBiZSB0aGUgb3JpZ2luYWwgdmFsdWUgb2Ygc2l6ZSwgYSB0cnVuY2F0ZWQgdmFsdWUsCiAgKiBvciB6ZXJvLiBJZiB0aGUgcmV0dXJuZWQgdmFsdWUgb2Ygc2l6ZSBpcyAwIHRoZSByZWdpb24gc2hvdWxkIGJlCi0gKiBkaXNjYXJkZWQgYXMgaXQgbGllcyB3aG9seSBhYm92ZSB0aGUgbWVtb3J5IGxpbWl0LgorICogZGlzY2FyZGVkIGFzIGl0IGxpZXMgd2hvbGx5IGFib3ZlIHRoZSBtZW1vcnkgbGltaXQuCiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9faW5pdCBudW1hX2VuZm9yY2VfbWVtb3J5X2xpbWl0KHVuc2lnbmVkIGxvbmcgc3RhcnQsCiAJCQkJCQkgICAgICB1bnNpZ25lZCBsb25nIHNpemUpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbW0vdGxiX2xvd182NGUuUyBiL2FyY2gvcG93ZXJwYy9tbS90bGJfbG93XzY0ZS5TCmluZGV4IDIyMjgxNTEuLmFmMDg5MjIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9tbS90bGJfbG93XzY0ZS5TCisrKyBiL2FyY2gvcG93ZXJwYy9tbS90bGJfbG93XzY0ZS5TCkBAIC0xOTIsNyArMTkyLDcgQEAKIAlvcglyMTAscjE1LHIxNAogCiBCRUdJTl9NTVVfRlRSX1NFQ1RJT04KLQkvKiBTZXQgdGhlIFRMQiByZXNlcnZhdGlvbiBhbmQgc2VhY2ggZm9yIGV4aXN0aW5nIGVudHJ5LiBUaGVuIGxvYWQKKwkvKiBTZXQgdGhlIFRMQiByZXNlcnZhdGlvbiBhbmQgc2VhcmNoIGZvciBleGlzdGluZyBlbnRyeS4gVGhlbiBsb2FkCiAJICogdGhlIGVudHJ5LgogCSAqLwogCVBQQ19UTEJTUlhfRE9UKDAscjE2KQpAQCAtNDI1LDcgKzQyNSw3IEBACiAKIHZpcnRfcGFnZV90YWJsZV90bGJfbWlzc19mYXVsdDoKIAkvKiBJZiB3ZSBmYXVsdCBoZXJlLCB0aGluZ3MgYXJlIGEgbGl0dGxlIGJpdCB0cmlja3kuIFdlIG5lZWQgdG8gY2FsbAotCSAqIGVpdGhlciBkYXRhIG9yIGluc3RydWN0aW9uIHN0b3JlIGZhdWx0LCBhbmQgd2UgbmVlZCB0byByZXRyZWl2ZQorCSAqIGVpdGhlciBkYXRhIG9yIGluc3RydWN0aW9uIHN0b3JlIGZhdWx0LCBhbmQgd2UgbmVlZCB0byByZXRyaWV2ZQogCSAqIHRoZSBvcmlnaW5hbCBmYXVsdCBhZGRyZXNzIGFuZCBFU1IgKGZvciBkYXRhKS4KIAkgKgogCSAqIFRoZSB0aGluZyBpcywgd2Uga25vdyB0aGF0IGluIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCB0aGlzIGlzCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfY2VsbC5jIGIvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX2NlbGwuYwppbmRleCBjNGQyYjcxLi5jYjUxNWNmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfY2VsbC5jCisrKyBiL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9vcF9tb2RlbF9jZWxsLmMKQEAgLTY3LDcgKzY3LDcgQEAKIAogI2RlZmluZSBNQVhfU1BVX0NPVU5UIDB4RkZGRkZGCS8qIG1heGltdW0gMjQgYml0IExGU1IgdmFsdWUgKi8KIAotLyogTWludW11bSBIVyBpbnRlcnZhbCB0aW1lciBzZXR0aW5nIHRvIHNlbmQgdmFsdWUgdG8gdHJhY2UgYnVmZmVyIGlzIDEwIGN5Y2xlLgorLyogTWluaW11bSBIVyBpbnRlcnZhbCB0aW1lciBzZXR0aW5nIHRvIHNlbmQgdmFsdWUgdG8gdHJhY2UgYnVmZmVyIGlzIDEwIGN5Y2xlLgogICogVG8gY29uZmlndXJlIGNvdW50ZXIgdG8gc2VuZCB2YWx1ZSBldmVyeSBOIGN5Y2xlcyBzZXQgY291bnRlciB0bwogICogMl4zMiAtIDEgLSBOLgogICovCkBAIC0xNDcwLDcgKzE0NzAsNyBAQAogICogdHJhY2UgYnVmZmVyIGF0IHRoZSBtYXhpbXVtIHJhdGUgcG9zc2libGUuICBUaGUgdHJhY2UgYnVmZmVyIGlzIGNvbmZpZ3VyZWQKICAqIHRvIHN0b3JlIHRoZSBQQ3MsIHdyYXBwaW5nIHdoZW4gaXQgaXMgZnVsbC4gIFRoZSBwZXJmb3JtYW5jZSBjb3VudGVyIGlzCiAgKiBpbml0aWFsaXplZCB0byB0aGUgbWF4IGhhcmR3YXJlIGNvdW50IG1pbnVzIHRoZSBudW1iZXIgb2YgZXZlbnRzLCBOLCBiZXR3ZWVuCi0gKiBzYW1wbGVzLiAgT25jZSB0aGUgTiBldmVudHMgaGF2ZSBvY2N1cmVkLCBhIEhXIGNvdW50ZXIgb3ZlcmZsb3cgb2NjdXJzCisgKiBzYW1wbGVzLiAgT25jZSB0aGUgTiBldmVudHMgaGF2ZSBvY2N1cnJlZCwgYSBIVyBjb3VudGVyIG92ZXJmbG93IG9jY3VycwogICogY2F1c2luZyB0aGUgZ2VuZXJhdGlvbiBvZiBhIEhXIGNvdW50ZXIgaW50ZXJydXB0IHdoaWNoIGFsc28gc3RvcHMgdGhlCiAgKiB3cml0aW5nIG9mIHRoZSBTUFUgUEMgdmFsdWVzIHRvIHRoZSB0cmFjZSBidWZmZXIuICBIZW5jZSB0aGUgbGFzdCBQQwogICogd3JpdHRlbiB0byB0aGUgdHJhY2UgYnVmZmVyIGlzIHRoZSBTUFUgUEMgdGhhdCB3ZSB3YW50LiAgVW5mb3J0dW5hdGVseSwKQEAgLTE2NTYsNyArMTY1Niw3IEBACiAJCSAqIFRoZSBjb3VudGVycyB3ZXJlIGZyb3plbiBieSB0aGUgaW50ZXJydXB0LgogCQkgKiBSZWVuYWJsZSB0aGUgaW50ZXJydXB0IGFuZCByZXN0YXJ0IHRoZSBjb3VudGVycy4KIAkJICogSWYgdGhlcmUgd2FzIGEgcmFjZSBiZXR3ZWVuIHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhbmQKLQkJICogdGhlIHZpcnR1YWwgY291bnRlciByb3V0aW5lLgkgVGhlIHZpcnV0YWwgY291bnRlcgorCQkgKiB0aGUgdmlydHVhbCBjb3VudGVyIHJvdXRpbmUuCSBUaGUgdmlydHVhbCBjb3VudGVyCiAJCSAqIHJvdXRpbmUgbWF5IGhhdmUgY2xlYXJlZCB0aGUgaW50ZXJydXB0cy4gIEhlbmNlIG11c3QKIAkJICogdXNlIHRoZSB2aXJ0X2NudHJfaW50ZXJfbWFzayB0byByZS1lbmFibGUgdGhlIGludGVycnVwdHMuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX3Bvd2VyNC5jIGIvYXJjaC9wb3dlcnBjL29wcm9maWxlL29wX21vZGVsX3Bvd2VyNC5jCmluZGV4IDgwNzc0MDkuLjhlZTUxYTIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9vcHJvZmlsZS9vcF9tb2RlbF9wb3dlcjQuYworKysgYi9hcmNoL3Bvd2VycGMvb3Byb2ZpbGUvb3BfbW9kZWxfcG93ZXI0LmMKQEAgLTIwNyw3ICsyMDcsNyBAQAogCXVuc2lnbmVkIGxvbmcgbW1jcmE7CiAJdW5zaWduZWQgbG9uZyBzbG90OwogCi0JLyogQ2FudCBkbyBtdWNoIGFib3V0IGl0ICovCisJLyogQ2FuJ3QgZG8gbXVjaCBhYm91dCBpdCAqLwogCWlmICghY3VyX2NwdV9zcGVjLT5vcHJvZmlsZV9tbWNyYV9zaWh2KQogCQlyZXR1cm4gcGM7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4X2xwYmZpZm8uYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvNTJ4eC9tcGM1Mnh4X2xwYmZpZm8uYwppbmRleCA2Mzg1ZDg4Li45OTQwY2U4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9scGJmaWZvLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfbHBiZmlmby5jCkBAIC01Nyw3ICs1Nyw3IEBACiBzdGF0aWMgc3RydWN0IG1wYzUyeHhfbHBiZmlmbyBscGJmaWZvOwogCiAvKioKLSAqIG1wYzUyeHhfbHBiZmlmb19raWNrIC0gVHJpZ2dlciB0aGUgbmV4dCBibG9jayBvZiBkYXRhIHRvIGJlIHRyYW5zZmVyZWQKKyAqIG1wYzUyeHhfbHBiZmlmb19raWNrIC0gVHJpZ2dlciB0aGUgbmV4dCBibG9jayBvZiBkYXRhIHRvIGJlIHRyYW5zZmVycmVkCiAgKi8KIHN0YXRpYyB2b2lkIG1wYzUyeHhfbHBiZmlmb19raWNrKHN0cnVjdCBtcGM1Mnh4X2xwYmZpZm9fcmVxdWVzdCAqcmVxKQogewpAQCAtMTc5LDcgKzE3OSw3IEBACiAgKgogICogT24gdHJhbnNtaXQsIHRoZSBkbWEgY29tcGxldGlvbiBpcnEgdHJpZ2dlcnMgYmVmb3JlIHRoZSBmaWZvIGNvbXBsZXRpb24KICAqIHRyaWdnZXJzLiAgSGFuZGxlIHRoZSBkbWEgY29tcGxldGlvbiBoZXJlIGluc3RlYWQgb2YgdGhlIExQQiBGSUZPIEJlc3Rjb21tCi0gKiB0YXNrIGNvbXBsZXRpb24gaXJxIGJlY3Vhc2UgZXZlcnl0aW5nIGlzIG5vdCByZWFsbHkgZG9uZSB1bnRpbCB0aGUgTFBCIEZJRk8KKyAqIHRhc2sgY29tcGxldGlvbiBpcnEgYmVjYXVzZSBldmVyeXRoaW5nIGlzIG5vdCByZWFsbHkgZG9uZSB1bnRpbCB0aGUgTFBCIEZJRk8KICAqIGNvbXBsZXRpb24gaXJxIHRyaWdnZXJzLgogICoKICAqIEluIG90aGVyIHdvcmRzOgpAQCAtMTk1LDcgKzE5NSw3IEBACiAgKiBFeGl0IGNvbmRpdGlvbnM6CiAgKiAxKSBUcmFuc2ZlciBhYm9ydGVkCiAgKiAyKSBGSUZPIGNvbXBsZXRlIHdpdGhvdXQgRE1BOyBtb3JlIGRhdGEgdG8gZG8KLSAqIDMpIEZJRk8gY29tcGxldGUgd2l0aG91dCBETUE7IGFsbCBkYXRhIHRyYW5zZmVyZWQKKyAqIDMpIEZJRk8gY29tcGxldGUgd2l0aG91dCBETUE7IGFsbCBkYXRhIHRyYW5zZmVycmVkCiAgKiA0KSBGSUZPIGNvbXBsZXRlIHVzaW5nIERNQQogICoKICAqIENvbmRpdGlvbiAxIGNhbiBvY2N1ciByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IERNQSBpcyB1c2VkLgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy81Mnh4L21wYzUyeHhfcGljLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9waWMuYwppbmRleCAzZGRlYTk2Li4xZGQxNTQwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9waWMuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zLzUyeHgvbXBjNTJ4eF9waWMuYwpAQCAtNTEyLDcgKzUxMiw3IEBACiAvKioKICAqIG1wYzUyeHhfZ2V0X2lycSAtIEdldCBwZW5kaW5nIGludGVycnVwdCBudW1iZXIgaG9vayBmdW5jdGlvbgogICoKLSAqIENhbGxlZCBieSB0aGUgaW50ZXJ1cHQgaGFuZGxlciB0byBkZXRlcm1pbmUgd2hhdCBJUlEgaGFuZGxlciBuZWVkcyB0byBiZQorICogQ2FsbGVkIGJ5IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciB0byBkZXRlcm1pbmUgd2hhdCBJUlEgaGFuZGxlciBuZWVkcyB0byBiZQogICogZXhlY3V0ZWQuCiAgKgogICogU3RhdHVzIG9mIHBlbmRpbmcgaW50ZXJydXB0cyBpcyBkZXRlcm1pbmVkIGJ5IHJlYWRpbmcgdGhlIGVuY29kZWQgc3RhdHVzCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvbHNjc2FfYWxsb2MuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9sc2NzYV9hbGxvYy5jCmluZGV4IDNiODk0ZjUuLjE0NzA2OTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9sc2NzYV9hbGxvYy5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9sc2NzYV9hbGxvYy5jCkBAIC05MCw3ICs5MCw3IEBACiAJICovCiAJZm9yIChpID0gMDsgaSA8IFNQVV9MU0NTQV9OVU1fQklHX1BBR0VTOyBpKyspIHsKIAkJLyogWFhYIFRoaXMgaXMgbGlrZWx5IHRvIGZhaWwsIHdlIHNob3VsZCB1c2UgYSBzcGVjaWFsIHBvb2wKLQkJICogICAgIHNpbWlsaWFyIHRvIHdoYXQgaHVnZXRsYmZzIGRvZXMuCisJCSAqICAgICBzaW1pbGFyIHRvIHdoYXQgaHVnZXRsYmZzIGRvZXMuCiAJCSAqLwogCQljc2EtPmxzY3NhX3BhZ2VzW2ldID0gYWxsb2NfcGFnZXMoR0ZQX0tFUk5FTCwKIAkJCQkJCSAgU1BVXzY0S19QQUdFX09SREVSKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zY2hlZC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NjaGVkLmMKaW5kZXggMGIwNDY2Mi4uNjUyMDM4NSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NjaGVkLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9jZWxsL3NwdWZzL3NjaGVkLmMKQEAgLTg0Niw3ICs4NDYsNyBAQAogCQlzdHJ1Y3QgbGlzdF9oZWFkICpycSA9ICZzcHVfcHJpby0+cnVucVtiZXN0XTsKIAogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGN0eCwgcnEsIHJxKSB7Ci0JCQkvKiBYWFgoaGNoKTogY2hlY2sgZm9yIGFmZmluaXR5IGhlcmUgYXN3ZWxsICovCisJCQkvKiBYWFgoaGNoKTogY2hlY2sgZm9yIGFmZmluaXR5IGhlcmUgYXMgd2VsbCAqLwogCQkJaWYgKF9fbm9kZV9hbGxvd2VkKGN0eCwgbm9kZSkpIHsKIAkJCQlfX3NwdV9kZWxfZnJvbV9ycShjdHgpOwogCQkJCWdvdG8gZm91bmQ7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2NlbGwvc3B1ZnMvc3B1X3Jlc3RvcmUuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zcHVfcmVzdG9yZS5jCmluZGV4IDIxYTljOTUuLjcyYzkwNWYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zcHVfcmVzdG9yZS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvY2VsbC9zcHVmcy9zcHVfcmVzdG9yZS5jCkBAIC0yODQsNyArMjg0LDcgQEAKIAkJZXhpdF9pbnN0cnNbM10gPSBCUl9JTlNUUjsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJLyogU1BVX1N0YXR1c1tSXT0xLiBObyBhZGRpdG9uYWwgaW5zdHJ1Y3Rpb25zLiAqLworCQkvKiBTUFVfU3RhdHVzW1JdPTEuIE5vIGFkZGl0aW9uYWwgaW5zdHJ1Y3Rpb25zLiAqLwogCQlicmVhazsKIAl9CiAJc3B1X3N5bmMoKTsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy9tZi5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL21mLmMKaW5kZXggYjVlMDI2Yi4uNjJkYWJlMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL21mLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL21mLmMKQEAgLTUxLDcgKzUxLDcgQEAKIHN0YXRpYyBpbnQgbWZfaW5pdGlhbGl6ZWQ7CiAKIC8qCi0gKiBUaGlzIGlzIHRoZSBzdHJ1Y3R1cmUgbGF5b3V0IGZvciB0aGUgTWFjaGluZSBGYWNpbGl0ZXMgTFBBUiBldmVudAorICogVGhpcyBpcyB0aGUgc3RydWN0dXJlIGxheW91dCBmb3IgdGhlIE1hY2hpbmUgRmFjaWxpdGllcyBMUEFSIGV2ZW50CiAgKiBmbG93cy4KICAqLwogc3RydWN0IHZzcF9jbWRfZGF0YSB7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvdmlvcGF0aC5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9pc2VyaWVzL3Zpb3BhdGguYwppbmRleCBiNWYwNWQ5Li4yMzc2MDY5IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL2lzZXJpZXMvdmlvcGF0aC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvaXNlcmllcy92aW9wYXRoLmMKQEAgLTM5Niw3ICszOTYsNyBAQAogCQkJdmlvcGF0aFN0YXR1c1tyZW1vdGVMcF0ubVRhcmdldEluc3QpKSB7CiAJCQlwcmludGsoVklPUEFUSF9LRVJOX1dBUk4KIAkJCSAgICAgICAibWVzc2FnZSBmcm9tIGludmFsaWQgcGFydGl0aW9uLiAiCi0JCQkgICAgICAgImludCBtc2cgcmN2ZCwgc291cmNlIGluc3QgKCVkKSBkb2VzbnQgbWF0Y2ggKCVkKVxuIiwKKwkJCSAgICAgICAiaW50IG1zZyByY3ZkLCBzb3VyY2UgaW5zdCAoJWQpIGRvZXNuJ3QgbWF0Y2ggKCVkKVxuIiwKIAkJCSAgICAgICB2aW9wYXRoU3RhdHVzW3JlbW90ZUxwXS5tVGFyZ2V0SW5zdCwKIAkJCSAgICAgICBldmVudC0+eFNvdXJjZUluc3RhbmNlSWQpOwogCQkJcmV0dXJuOwpAQCAtNDA3LDcgKzQwNyw3IEBACiAJCQl2aW9wYXRoU3RhdHVzW3JlbW90ZUxwXS5tU291cmNlSW5zdCkpIHsKIAkJCXByaW50ayhWSU9QQVRIX0tFUk5fV0FSTgogCQkJICAgICAgICJtZXNzYWdlIGZyb20gaW52YWxpZCBwYXJ0aXRpb24uICIKLQkJCSAgICAgICAiaW50IG1zZyByY3ZkLCB0YXJnZXQgaW5zdCAoJWQpIGRvZXNudCBtYXRjaCAoJWQpXG4iLAorCQkJICAgICAgICJpbnQgbXNnIHJjdmQsIHRhcmdldCBpbnN0ICglZCkgZG9lc24ndCBtYXRjaCAoJWQpXG4iLAogCQkJICAgICAgIHZpb3BhdGhTdGF0dXNbcmVtb3RlTHBdLm1Tb3VyY2VJbnN0LAogCQkJICAgICAgIGV2ZW50LT54VGFyZ2V0SW5zdGFuY2VJZCk7CiAJCQlyZXR1cm47CkBAIC00MTgsNyArNDE4LDcgQEAKIAkJICAgIHZpb3BhdGhTdGF0dXNbcmVtb3RlTHBdLm1Tb3VyY2VJbnN0KSB7CiAJCQlwcmludGsoVklPUEFUSF9LRVJOX1dBUk4KIAkJCSAgICAgICAibWVzc2FnZSBmcm9tIGludmFsaWQgcGFydGl0aW9uLiAiCi0JCQkgICAgICAgImFjayBtc2cgcmN2ZCwgc291cmNlIGluc3QgKCVkKSBkb2VzbnQgbWF0Y2ggKCVkKVxuIiwKKwkJCSAgICAgICAiYWNrIG1zZyByY3ZkLCBzb3VyY2UgaW5zdCAoJWQpIGRvZXNuJ3QgbWF0Y2ggKCVkKVxuIiwKIAkJCSAgICAgICB2aW9wYXRoU3RhdHVzW3JlbW90ZUxwXS5tU291cmNlSW5zdCwKIAkJCSAgICAgICBldmVudC0+eFNvdXJjZUluc3RhbmNlSWQpOwogCQkJcmV0dXJuOwpAQCAtNDI4LDcgKzQyOCw3IEBACiAJCSAgICB2aW9wYXRoU3RhdHVzW3JlbW90ZUxwXS5tVGFyZ2V0SW5zdCkgewogCQkJcHJpbnRrKFZJT1BBVEhfS0VSTl9XQVJOCiAJCQkgICAgICAgIm1lc3NhZ2UgZnJvbSBpbnZhbGlkIHBhcnRpdGlvbi4gIgotCQkJICAgICAgICJ2aW9wYXRoOiBhY2sgbXNnIHJjdmQsIHRhcmdldCBpbnN0ICglZCkgZG9lc250IG1hdGNoICglZClcbiIsCisJCQkgICAgICAgInZpb3BhdGg6IGFjayBtc2cgcmN2ZCwgdGFyZ2V0IGluc3QgKCVkKSBkb2Vzbid0IG1hdGNoICglZClcbiIsCiAJCQkgICAgICAgdmlvcGF0aFN0YXR1c1tyZW1vdGVMcF0ubVRhcmdldEluc3QsCiAJCQkgICAgICAgZXZlbnQtPnhUYXJnZXRJbnN0YW5jZUlkKTsKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2RtYV9saWIuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcGFzZW1pL2RtYV9saWIuYwppbmRleCAwOTY5NWFlLi4zMjFhOWIzIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bhc2VtaS9kbWFfbGliLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wYXNlbWkvZG1hX2xpYi5jCkBAIC0zNzksOSArMzc5LDkgQEAKIH0KIEVYUE9SVF9TWU1CT0wocGFzZW1pX2RtYV9mcmVlX2J1Zik7CiAKLS8qIHBhc2VtaV9kbWFfYWxsb2NfZmxhZyAtIEFsbG9jYXRlIGEgZmxhZyAoZXZlbnQpIGZvciBjaGFubmVsIHN5bmNyb25pemF0aW9uCisvKiBwYXNlbWlfZG1hX2FsbG9jX2ZsYWcgLSBBbGxvY2F0ZSBhIGZsYWcgKGV2ZW50KSBmb3IgY2hhbm5lbCBzeW5jaHJvbml6YXRpb24KICAqCi0gKiBBbGxvY2F0ZXMgYSBmbGFnIGZvciB1c2Ugd2l0aCBjaGFubmVsIHN5bmNyb25pemF0aW9uIChldmVudCBkZXNjcmlwdG9ycykuCisgKiBBbGxvY2F0ZXMgYSBmbGFnIGZvciB1c2Ugd2l0aCBjaGFubmVsIHN5bmNocm9uaXphdGlvbiAoZXZlbnQgZGVzY3JpcHRvcnMpLgogICogUmV0dXJucyBhbGxvY2F0ZWQgZmxhZyAoMC02MyksIDwgMCBvbiBlcnJvci4KICAqLwogaW50IHBhc2VtaV9kbWFfYWxsb2NfZmxhZyh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9NYWtlZmlsZSBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvTWFrZWZpbGUKaW5kZXggNTBmMTY5My4uZWE0N2RmNiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9NYWtlZmlsZQorKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL01ha2VmaWxlCkBAIC0xMSw3ICsxMSw3IEBACiBvYmotJChDT05GSUdfUE1BQ19CQUNLTElHSFQpCSs9IGJhY2tsaWdodC5vCiBvYmotJChDT05GSUdfQ1BVX0ZSRVFfUE1BQykJKz0gY3B1ZnJlcV8zMi5vCiBvYmotJChDT05GSUdfQ1BVX0ZSRVFfUE1BQzY0KQkrPSBjcHVmcmVxXzY0Lm8KLSMgQ09ORklHX05WUkFNIGlzIGFuIGFyY2guIGluZGVwZW5kYW50IHRyaXN0YXRlIHN5bWJvbCwgZm9yIHBtYWMzMiB3ZSByZWFsbHkKKyMgQ09ORklHX05WUkFNIGlzIGFuIGFyY2guIGluZGVwZW5kZW50IHRyaXN0YXRlIHN5bWJvbCwgZm9yIHBtYWMzMiB3ZSByZWFsbHkKICMgbmVlZCB0aGlzIHRvIGJlIGEgYm9vbC4gIENoZWF0IGhlcmUgYW5kIHByZXRlbmQgQ09ORklHX05WUkFNPW0gaXMgcmVhbGx5CiAjIENPTkZJR19OVlJBTT15CiBvYmotJChDT05GSUdfTlZSQU06bT15KQkJKz0gbnZyYW0ubwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9sb3dfaTJjLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL2xvd19pMmMuYwppbmRleCA0ODA1NjdlLi5lOWM4YTYwIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL2xvd19pMmMuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL2xvd19pMmMuYwpAQCAtOTA0LDcgKzkwNCw3IEBACiAJcHJpbnRrKEtFUk5fSU5GTyAiU01VIGkyYyAlc1xuIiwgY29udHJvbGxlci0+ZnVsbF9uYW1lKTsKIAogCS8qIExvb2sgZm9yIGNoaWxkcywgbm90ZSB0aGF0IHRoZXkgbWlnaHQgbm90IGJlIG9mIHRoZSByaWdodAotCSAqIHR5cGUgYXMgb2xkZXIgZGV2aWNlIHRyZWVzIG1peCBpMmMgYnVzc2VzIGFuZCBvdGhlciB0aGlnbnMKKwkgKiB0eXBlIGFzIG9sZGVyIGRldmljZSB0cmVlcyBtaXggaTJjIGJ1c3NlcyBhbmQgb3RoZXIgdGhpbmdzCiAJICogYXQgdGhlIHNhbWUgbGV2ZWwKIAkgKi8KIAlmb3IgKGJ1c25vZGUgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wY2kuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcG93ZXJtYWMvcGNpLmMKaW5kZXggYWI2ODk4OS4uZjMzZTA4ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wb3dlcm1hYy9wY2kuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3Bvd2VybWFjL3BjaS5jCkBAIC0yOTksNyArMjk5LDcgQEAKICAqIFRoaXMgZnVuY3Rpb24gZGVhbHMgd2l0aCBzb21lICJzcGVjaWFsIGNhc2VzIiBkZXZpY2VzLgogICoKICAqICAwIC0+IE5vIHNwZWNpYWwgY2FzZQotICogIDEgLT4gU2tpcCB0aGUgZGV2aWNlIGJ1dCBhY3QgYXMgaWYgdGhlIGFjY2VzcyB3YXMgc3VjY2Vzc2Z1bGwKKyAqICAxIC0+IFNraXAgdGhlIGRldmljZSBidXQgYWN0IGFzIGlmIHRoZSBhY2Nlc3Mgd2FzIHN1Y2Nlc3NmdWwKICAqICAgICAgIChyZXR1cm4gMHhmZidzIG9uIHJlYWRzLCBldmVudHVhbGx5LCBjYWNoZSBjb25maWcgc3BhY2UKICAqICAgICAgIGFjY2Vzc2VzIGluIGEgbGF0ZXIgdmVyc2lvbikKICAqIC0xIC0+IEhpZGUgdGhlIGRldmljZSAodW5zdWNjZXNzZnVsIGFjY2VzcykKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9kbHBhci5jIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2RscGFyLmMKaW5kZXggYjc0YTkyMy4uNTdjZWI5MiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2RscGFyLmMKKysrIGIvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2RscGFyLmMKQEAgLTc0LDcgKzc0LDcgQEAKIAkJcmV0dXJuIE5VTEw7CiAKIAkvKiBUaGUgY29uZmlndXJlIGNvbm5lY3RvciByZXBvcnRlZCBuYW1lIGRvZXMgbm90IGNvbnRhaW4gYQotCSAqIHByZWNlZWRpbmcgJy8nLCBzbyB3ZSBhbGxvY2F0ZSBhIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8KKwkgKiBwcmVjZWRpbmcgJy8nLCBzbyB3ZSBhbGxvY2F0ZSBhIGJ1ZmZlciBsYXJnZSBlbm91Z2ggdG8KIAkgKiBwcmVwZW5kIHRoaXMgdG8gdGhlIGZ1bGxfbmFtZS4KIAkgKi8KIAluYW1lID0gKGNoYXIgKiljY3dhICsgY2N3YS0+bmFtZV9vZmZzZXQ7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoLmMgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvZWVoLmMKaW5kZXggM2NjNGQxMC4uODk2NDkxNyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL2VlaC5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9lZWguYwpAQCAtNjUsNyArNjUsNyBAQAogICogIHdpdGggRUVILgogICoKICAqICBJZGVhbGx5LCBhIFBDSSBkZXZpY2UgZHJpdmVyLCB3aGVuIHN1c3BlY3RpbmcgdGhhdCBhbiBpc29sYXRpb24KLSAqICBldmVudCBoYXMgb2NjdXJlZCAoZS5nLiBieSByZWFkaW5nIDB4ZmYncyksIHdpbGwgdGhlbiBhc2sgRUVICisgKiAgZXZlbnQgaGFzIG9jY3VycmVkIChlLmcuIGJ5IHJlYWRpbmcgMHhmZidzKSwgd2lsbCB0aGVuIGFzayBFRUgKICAqICB3aGV0aGVyIHRoaXMgaXMgdGhlIGNhc2UsIGFuZCB0aGVuIHRha2UgYXBwcm9wcmlhdGUgc3RlcHMgdG8KICAqICByZXNldCB0aGUgUENJIHNsb3QsIHRoZSBQQ0kgZGV2aWNlLCBhbmQgdGhlbiByZXN1bWUgb3BlcmF0aW9ucy4KICAqICBIb3dldmVyLCB1bnRpbCB0aGF0IGRheSwgIHRoZSBjaGVja2luZyBpcyBkb25lIGhlcmUsIHdpdGggdGhlCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaG90cGx1Zy1jcHUuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLWNwdS5jCmluZGV4IGZkNTBjY2QuLmVmOGM0NTQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLWNwdS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9ob3RwbHVnLWNwdS5jCkBAIC0yMTYsNyArMjE2LDcgQEAKIAkJICAgICAgIGNwdSwgcGNwdSwgY3B1X3N0YXR1cyk7CiAJfQogCi0JLyogSXNvbGF0aW9uIGFuZCBkZWFsbG9jYXRpb24gYXJlIGRlZmluYXRseSBkb25lIGJ5CisJLyogSXNvbGF0aW9uIGFuZCBkZWFsbG9jYXRpb24gYXJlIGRlZmluaXRlbHkgZG9uZSBieQogCSAqIGRyc2xvdF9jaHJwX2NwdS4gIElmIHRoZXkgd2VyZSBub3QgdGhleSB3b3VsZCBiZQogCSAqIGRvbmUgaGVyZS4gIENoYW5nZSBpc29sYXRlIHN0YXRlIHRvIElzb2xhdGUgYW5kCiAJICogY2hhbmdlIGFsbG9jYXRpb24tc3RhdGUgdG8gVW51c2FibGUuCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMvaW9tbXUuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jCmluZGV4IDE1NGM0NjQuLjZkNTQxMmEgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jCisrKyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy9pb21tdS5jCkBAIC0yNzIsNyArMjcyLDcgQEAKIAlyZXR1cm4gdGNlX3JldDsKIH0KIAotLyogdGhpcyBpcyBjb21wYXRhYmxlIHdpdGggY2VsbHMgZm9yIHRoZSBkZXZpY2UgdHJlZSBwcm9wZXJ0eSAqLworLyogdGhpcyBpcyBjb21wYXRpYmxlIHdpdGggY2VsbHMgZm9yIHRoZSBkZXZpY2UgdHJlZSBwcm9wZXJ0eSAqLwogc3RydWN0IGR5bmFtaWNfZG1hX3dpbmRvd19wcm9wIHsKIAlfX2JlMzIJbGlvYm47CQkvKiB0Y2UgdGFibGUgbnVtYmVyICovCiAJX19iZTY0CWRtYV9iYXNlOwkvKiBhZGRyZXNzIGhpLGxvICovCkBAIC05NzYsNyArOTc2LDcgQEAKIAlwcl9kZWJ1ZygicGNpX2RtYV9kZXZfc2V0dXBfcFNlcmllc0xQOiAlc1xuIiwgcGNpX25hbWUoZGV2KSk7CiAKIAkvKiBkZXYgc2V0dXAgZm9yIExQQVIgaXMgYSBsaXR0bGUgdHJpY2t5LCBzaW5jZSB0aGUgZGV2aWNlIHRyZWUgbWlnaHQKLQkgKiBjb250YWluIHRoZSBkbWEtd2luZG93IHByb3BlcnRpZXMgcGVyLWRldmljZSBhbmQgbm90IG5lY2Nlc2FyaWx5CisJICogY29udGFpbiB0aGUgZG1hLXdpbmRvdyBwcm9wZXJ0aWVzIHBlci1kZXZpY2UgYW5kIG5vdCBuZWNlc3NhcmlseQogCSAqIGZvciB0aGUgYnVzLiBTbyB3ZSBuZWVkIHRvIHNlYXJjaCB1cHdhcmRzIGluIHRoZSB0cmVlIHVudGlsIHdlCiAJICogZWl0aGVyIGhpdCBhIGRtYS13aW5kb3cgcHJvcGVydHksIE9SIGZpbmQgYSBwYXJlbnQgd2l0aCBhIHRhYmxlCiAJICogYWxyZWFkeSBhbGxvY2F0ZWQuCkBAIC0xMDMzLDcgKzEwMzMsNyBAQAogCiAJCS8qCiAJCSAqIHRoZSBkZXZpY2UgdHJlZSBtaWdodCBjb250YWluIHRoZSBkbWEtd2luZG93IHByb3BlcnRpZXMKLQkJICogcGVyLWRldmljZSBhbmQgbm90IG5lY2Nlc2FyaWx5IGZvciB0aGUgYnVzLiBTbyB3ZSBuZWVkIHRvCisJCSAqIHBlci1kZXZpY2UgYW5kIG5vdCBuZWNlc3NhcmlseSBmb3IgdGhlIGJ1cy4gU28gd2UgbmVlZCB0bwogCQkgKiBzZWFyY2ggdXB3YXJkcyBpbiB0aGUgdHJlZSB1bnRpbCB3ZSBlaXRoZXIgaGl0IGEgZG1hLXdpbmRvdwogCQkgKiBwcm9wZXJ0eSwgT1IgZmluZCBhIHBhcmVudCB3aXRoIGEgdGFibGUgYWxyZWFkeSBhbGxvY2F0ZWQuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3hpY3MuYyBiL2FyY2gvcG93ZXJwYy9wbGF0Zm9ybXMvcHNlcmllcy94aWNzLmMKaW5kZXggZWM4ZmUyMi4uZDY5MDEzMyAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9wc2VyaWVzL3hpY3MuYworKysgYi9hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL3BzZXJpZXMveGljcy5jCkBAIC04OTcsNyArODk3LDcgQEAKIAkJaW50IHN0YXR1czsKIAkJdW5zaWduZWQgbG9uZyBmbGFnczsKIAotCQkvKiBXZSBjYW50IHNldCBhZmZpbml0eSBvbiBJU0EgaW50ZXJydXB0cyAqLworCQkvKiBXZSBjYW4ndCBzZXQgYWZmaW5pdHkgb24gSVNBIGludGVycnVwdHMgKi8KIAkJaWYgKHZpcnEgPCBOVU1fSVNBX0lOVEVSUlVQVFMpCiAJCQljb250aW51ZTsKIAkJaWYgKGlycV9tYXBbdmlycV0uaG9zdCAhPSB4aWNzX2hvc3QpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvYXhvbnJhbS5jCmluZGV4IDI3NDAyYzdkLi4xNjM2ZGQ4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYworKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L2F4b25yYW0uYwpAQCAtOTUsNyArOTUsNyBAQAogCiAJQlVHX09OKCFiYW5rKTsKIAotCWRldl9lcnIoJmRldmljZS0+ZGV2LCAiQ29ycmVjdGFibGUgbWVtb3J5IGVycm9yIG9jY3VyZWRcbiIpOworCWRldl9lcnIoJmRldmljZS0+ZGV2LCAiQ29ycmVjdGFibGUgbWVtb3J5IGVycm9yIG9jY3VycmVkXG4iKTsKIAliYW5rLT5lY2NfY291bnRlcisrOwogCXJldHVybiBJUlFfSEFORExFRDsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW0uaCBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW0uaAppbmRleCAyM2E5NWY4Li5hMGUyZTZiIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2Jlc3Rjb21tL2Jlc3Rjb21tLmgKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbS5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBzdHJ1Y3QgYmNvbV9iZCAtIFN0cnVjdHVyZSBkZXNjcmliaW5nIGEgZ2VuZXJpYyBCZXN0Q29tbSBidWZmZXIgZGVzY3JpcHRvcgogICogQHN0YXR1czogVGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoaXMgYnVmZmVyLiBFeGFjdCBtZWFuaW5nIGRlcGVuZHMgb24gdGhlCiAgKiAgICAgICAgICB0YXNrIHR5cGUKLSAqIEBkYXRhOiBBbiBhcnJheSBvZiB1MzIgZXh0cmEgZGF0YS4gIFNpemUgb2YgYXJyYXkgaXMgdGFzayBkZXBlbmRhbnQuCisgKiBAZGF0YTogQW4gYXJyYXkgb2YgdTMyIGV4dHJhIGRhdGEuICBTaXplIG9mIGFycmF5IGlzIHRhc2sgZGVwZW5kZW50LgogICoKICAqIE5vdGU6IERvbid0IGRlcmVmZXJlbmNlIGEgYmNvbV9iZCBwb2ludGVyIGFzIGFuIGFycmF5LiAgVGhlIHNpemUgb2YgdGhlCiAgKiAgICAgICBiY29tX2JkIGlzIHZhcmlhYmxlLiAgVXNlIGJjb21fZ2V0X2JkKCkgaW5zdGVhZC4KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvYmVzdGNvbW0vYmVzdGNvbW1fcHJpdi5oIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbV9wcml2LmgKaW5kZXggZWIwZDFjOC4uM2I1MmYzZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbV9wcml2LmgKKysrIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9iZXN0Y29tbS9iZXN0Y29tbV9wcml2LmgKQEAgLTk3LDcgKzk3LDcgQEAKIAl1OAlyZXNlcnZlZFs4XTsKIH07CiAKLS8qIERlc2NyaXB0b3JzIHN0dWN0dXJlICYgY28gKi8KKy8qIERlc2NyaXB0b3JzIHN0cnVjdHVyZSAmIGNvICovCiAjZGVmaW5lIEJDT01fREVTQ19OT1AJCTB4MDAwMDAxZjgKICNkZWZpbmUgQkNPTV9MQ0RfTUFTSwkJMHg4MDAwMDAwMAogI2RlZmluZSBCQ09NX0RSRF9FWFRFTkRFRAkweDQwMDAwMDAwCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2NwbTEuYyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvY3BtMS5jCmluZGV4IDhiNWFiYTIuLmUwYmM5NDQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9zeXNkZXYvY3BtMS5jCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvY3BtMS5jCkBAIC0yMjMsNyArMjIzLDcgQEAKIAogCS8qIFNldCBTRE1BIEJ1cyBSZXF1ZXN0IHByaW9yaXR5IDUuCiAJICogT24gODYwVCwgdGhpcyBhbHNvIGVuYWJsZXMgRkVDIHByaW9yaXR5IDYuICBJIGFtIG5vdCBzdXJlCi0JICogdGhpcyBpcyB3aGF0IHdlIHJlYWx5IHdhbnQgZm9yIHNvbWUgYXBwbGljYXRpb25zLCBidXQgdGhlCisJICogdGhpcyBpcyB3aGF0IHdlIHJlYWxseSB3YW50IGZvciBzb21lIGFwcGxpY2F0aW9ucywgYnV0IHRoZQogCSAqIG1hbnVhbCByZWNvbW1lbmRzIGl0LgogCSAqIEJpdCAyNSwgRkFNIGNhbiBhbHNvIGJlIHNldCB0byB1c2UgRkVDIGFnZ3Jlc3NpdmUgbW9kZSAoODYwVCkuCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2luZGlyZWN0X3BjaS5jIGIvYXJjaC9wb3dlcnBjL3N5c2Rldi9pbmRpcmVjdF9wY2kuYwppbmRleCA3ZWQ4MDk2Li44MmZkYWQ4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L2luZGlyZWN0X3BjaS5jCisrKyBiL2FyY2gvcG93ZXJwYy9zeXNkZXYvaW5kaXJlY3RfcGNpLmMKQEAgLTExNyw3ICsxMTcsNyBAQAogCQlvdXRfbGUzMihob3NlLT5jZmdfYWRkciwgKDB4ODAwMDAwMDAgfCAoYnVzX25vIDw8IDE2KSB8CiAJCQkgKGRldmZuIDw8IDgpIHwgcmVnIHwgY2ZnX3R5cGUpKTsKIAotCS8qIHN1cnByZXNzIHNldHRpbmcgb2YgUENJX1BSSU1BUllfQlVTICovCisJLyogc3VwcHJlc3Mgc2V0dGluZyBvZiBQQ0lfUFJJTUFSWV9CVVMgKi8KIAlpZiAoaG9zZS0+aW5kaXJlY3RfdHlwZSAmIFBQQ19JTkRJUkVDVF9UWVBFX1NVUlBSRVNTX1BSSU1BUllfQlVTKQogCQlpZiAoKG9mZnNldCA9PSBQQ0lfUFJJTUFSWV9CVVMpICYmCiAJCQkoYnVzLT5udW1iZXIgPT0gaG9zZS0+Zmlyc3RfYnVzbm8pKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9wcGM0eHhfcGNpLmggYi9hcmNoL3Bvd2VycGMvc3lzZGV2L3BwYzR4eF9wY2kuaAppbmRleCA1NmQ5ZTVkLi5jMzlhMTM0IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvc3lzZGV2L3BwYzR4eF9wY2kuaAorKysgYi9hcmNoL3Bvd2VycGMvc3lzZGV2L3BwYzR4eF9wY2kuaApAQCAtMzI0LDcgKzMyNCw3IEBACiAjZGVmaW5lIFBFU0RSMF80NjBFWF9JSFMyCQkweDAzNkQKIAogLyoKLSAqIDQ2MFNYIGFkZHRpb25hbCBEQ1JzCisgKiA0NjBTWCBhZGRpdGlvbmFsIERDUnMKICAqLwogI2RlZmluZSBQRVNEUm5fNDYwU1hfUkNFSQkJMHgwMgogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXRvbWljLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vYXRvbWljLmgKaW5kZXggNWM1YmExMC4uZDlkYjEzOCAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2luY2x1ZGUvYXNtL2F0b21pYy5oCisrKyBiL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9hdG9taWMuaApAQCAtOSw3ICs5LDcgQEAKICAqCiAgKiBBdG9taWMgb3BlcmF0aW9ucyB0aGF0IEMgY2FuJ3QgZ3VhcmFudGVlIHVzLgogICogVXNlZnVsIGZvciByZXNvdXJjZSBjb3VudGluZyBldGMuCi0gKiBzMzkwIHVzZXMgJ0NvbXBhcmUgQW5kIFN3YXAnIGZvciBhdG9taWNpdHkgaW4gU01QIGVudmlyb21lbnQuCisgKiBzMzkwIHVzZXMgJ0NvbXBhcmUgQW5kIFN3YXAnIGZvciBhdG9taWNpdHkgaW4gU01QIGVudmlyb25tZW50LgogICoKICAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvaW5jbHVkZS9hc20vY2lvLmggYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vY2lvLmgKaW5kZXggZTM0MzQ3ZC4uZmM1MGEzMzQgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9pbmNsdWRlL2FzbS9jaW8uaAorKysgYi9hcmNoL3MzOTAvaW5jbHVkZS9hc20vY2lvLmgKQEAgLTE4Myw3ICsxODMsNyBAQAogICogVGhlIGlyYiB0aGF0IGlzIGhhbmRlZCB0byB0aGUgZGV2aWNlIGRyaXZlciB3aGVuIGFuIGludGVycnVwdCBvY2N1cnMuIEZvcgogICogc29saWNpdGVkIGludGVycnVwdHMsIHRoZSBjb21tb24gSS9PIGxheWVyIGFscmVhZHkgcGVyZm9ybXMgY2hlY2tzIHdoZXRoZXIKICAqIGEgZmllbGQgaXMgdmFsaWQ7IGEgZmllbGQgbm90IGJlaW5nIHZhbGlkIGlzIGFsd2F5cyBwYXNzZWQgYXMgJTAuCi0gKiBJZiBhIHVuaXQgY2hlY2sgb2NjdXJlZCwgQGVjdyBtYXkgY29udGFpbiBzZW5zZSBkYXRhOyB0aGlzIGlzIHJldHJpZXZlZAorICogSWYgYSB1bml0IGNoZWNrIG9jY3VycmVkLCBAZWN3IG1heSBjb250YWluIHNlbnNlIGRhdGE7IHRoaXMgaXMgcmV0cmlldmVkCiAgKiBieSB0aGUgY29tbW9uIEkvTyBsYXllciBpdHNlbGYgaWYgdGhlIGRldmljZSBkb2Vzbid0IHN1cHBvcnQgY29uY3VycmVudAogICogc2Vuc2UgKHNvIHRoYXQgdGhlIGRldmljZSBkcml2ZXIgbmV2ZXIgbmVlZHMgdG8gcGVyZm9ybSBiYXNpYyBzZW5lIGl0c2VsZikuCiAgKiBGb3IgdW5zb2xpY2l0ZWQgaW50ZXJydXB0cywgdGhlIGlyYiBpcyBwYXNzZWQgYXMtaXMgKGV4cGVjdCBmb3Igc2Vuc2UgZGF0YSwKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvcmVpcGw2NC5TIGIvYXJjaC9zMzkwL2tlcm5lbC9yZWlwbDY0LlMKaW5kZXggNWU3M2RlZS4uOWVhYmJjOSAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2tlcm5lbC9yZWlwbDY0LlMKKysrIGIvYXJjaC9zMzkwL2tlcm5lbC9yZWlwbDY0LlMKQEAgLTc4LDcgKzc4LDcgQEAKICAqIGluIHRoZSBFU0EgcHN3LgogICogQml0IDMxIG9mIHRoZSBhZGRyZXNzZXMgaGFzIHRvIGJlIDAgZm9yIHRoZQogICogMzFiaXQgbHBzd2UgaW5zdHJ1Y3Rpb24gYSBmYWN0IHRoZXkgYXBwZWFyIHRvIGhhdmUKLSAqIG9tbWl0ZWQgZnJvbSB0aGUgcG9wLgorICogb21pdHRlZCBmcm9tIHRoZSBwb3AuCiAgKi8KIC5MbmV3cHN3OgkucXVhZAkweDAwMDAwMDAwODAwMDAwMDAKIAkJLnF1YWQJLkxwZzEKZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvczM5MC9rZXJuZWwvc2V0dXAuYwppbmRleCBlZDE4M2MyLi5mNTQzNGQxIDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3NldHVwLmMKKysrIGIvYXJjaC9zMzkwL2tlcm5lbC9zZXR1cC5jCkBAIC03MDgsNyArNzA4LDcgQEAKIAkgKiBhbmQgMVVMTDw8MCBhcyBiaXQgNjMuIEJpdHMgMC0zMSBjb250YWluIHRoZSBzYW1lIGluZm9ybWF0aW9uCiAJICogYXMgc3RvcmVkIGJ5IHN0ZmwsIGJpdHMgMzIteHh4IGNvbnRhaW4gYWRkaXRpb25hbCBmYWNpbGl0aWVzLgogCSAqIEhvdyBtYW55IGZhY2lsaXR5IHdvcmRzIGFyZSBzdG9yZWQgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mCi0JICogZG91Ymxld29yZHMgcGFzc2VkIHRvIHRoZSBpbnN0cnVjdGlvbi4gVGhlIGFkZGl0aW9uYWwgZmFjaWxpdGVzCisJICogZG91Ymxld29yZHMgcGFzc2VkIHRvIHRoZSBpbnN0cnVjdGlvbi4gVGhlIGFkZGl0aW9uYWwgZmFjaWxpdGllcwogCSAqIGFyZToKIAkgKiAgIEJpdCA0MjogZGVjaW1hbCBmbG9hdGluZyBwb2ludCBmYWNpbGl0eSBpcyBpbnN0YWxsZWQKIAkgKiAgIEJpdCA0NDogcGVyZm9ybSBmbG9hdGluZyBwb2ludCBvcGVyYXRpb24gZmFjaWxpdHkgaXMgaW5zdGFsbGVkCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva2VybmVsL3RpbWUuYyBiL2FyY2gvczM5MC9rZXJuZWwvdGltZS5jCmluZGV4IDllN2IwMzkuLjg3YmU2NTUgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rZXJuZWwvdGltZS5jCisrKyBiL2FyY2gvczM5MC9rZXJuZWwvdGltZS5jCkBAIC03MjQsNyArNzI0LDcgQEAKIH0KIAogLyoKLSAqIFN5bmMgdGhlIFRPRCBjbG9jayB1c2luZyB0aGUgcG9ydCByZWZlcmVkIHRvIGJ5IGFpYnAuIFRoaXMgcG9ydAorICogU3luYyB0aGUgVE9EIGNsb2NrIHVzaW5nIHRoZSBwb3J0IHJlZmVycmVkIHRvIGJ5IGFpYnAuIFRoaXMgcG9ydAogICogaGFzIHRvIGJlIGVuYWJsZWQgYW5kIHRoZSBvdGhlciBwb3J0IGhhcyB0byBiZSBkaXNhYmxlZC4gVGhlCiAgKiBsYXN0IGVhY3IgdXBkYXRlIGhhcyB0byBiZSBtb3JlIHRoYW4gMS42IHNlY29uZHMgaW4gdGhlIHBhc3QuCiAgKi8KQEAgLTEwMTIsNyArMTAxMiw3IEBACiAJCWVhY3IgPSBldHJfaGFuZGxlX3VwZGF0ZSgmYWliLCBlYWNyKTsKIAogCS8qCi0JICogU2VsZWN0IHBvcnRzIHRvIGVuYWJsZS4gVGhlIHByZWZlcmVkIHN5bmNocm9uaXphdGlvbiBtb2RlIGlzIFBQUy4KKwkgKiBTZWxlY3QgcG9ydHMgdG8gZW5hYmxlLiBUaGUgcHJlZmVycmVkIHN5bmNocm9uaXphdGlvbiBtb2RlIGlzIFBQUy4KIAkgKiBJZiBhIHBvcnQgY2FuIGJlIGVuYWJsZWQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB0aGluZ3M6CiAJICogMSkgVGhlIHBvcnQgbmVlZHMgdG8gYmUgb25saW5lIGFuZCB1cHRvZGF0ZS4gQSBwb3J0IGlzIG5vdAogCSAqICAgIGRpc2FibGVkIGp1c3QgYmVjYXVzZSBpdCBpcyBub3QgdXB0b2RhdGUsIGJ1dCBpdCBpcyBvbmx5CkBAIC0xMDkxLDcgKzEwOTEsNyBAQAogCS8qCiAJICogVXBkYXRlIGVhY3IgYW5kIHRyeSB0byBzeW5jaHJvbml6ZSB0aGUgY2xvY2suIElmIHRoZSB1cGRhdGUKIAkgKiBvZiBlYWNyIGNhdXNlZCBhIHN0ZXBwaW5nIHBvcnQgc3dpdGNoIChvciBpZiB3ZSBoYXZlIHRvCi0JICogYXNzdW1lIHRoYXQgYSBzdGVwcGluZyBwb3J0IHN3aXRjaCBoYXMgb2NjdXJlZCkgb3IgdGhlCisJICogYXNzdW1lIHRoYXQgYSBzdGVwcGluZyBwb3J0IHN3aXRjaCBoYXMgb2NjdXJyZWQpIG9yIHRoZQogCSAqIGNsb2NrIHN5bmNpbmcgZmFpbGVkLCByZXNldCB0aGUgc3luYyBjaGVjayBjb250cm9sIGJpdAogCSAqIGFuZCBzZXQgdXAgYSB0aW1lciB0byB0cnkgYWdhaW4gYWZ0ZXIgMC41IHNlY29uZHMKIAkgKi8KZGlmZiAtLWdpdCBhL2FyY2gvczM5MC9rZXJuZWwvdnRpbWUuYyBiL2FyY2gvczM5MC9rZXJuZWwvdnRpbWUuYwppbmRleCAxY2NkZjRkLi41ZThlYWQ0IDEwMDY0NAotLS0gYS9hcmNoL3MzOTAva2VybmVsL3Z0aW1lLmMKKysrIGIvYXJjaC9zMzkwL2tlcm5lbC92dGltZS5jCkBAIC00NCw3ICs0NCw3IEBACiAJX191NjQgdGltZXI7CiAKIAlhc20gdm9sYXRpbGUgKCIgIFNUUFQgJTBcbiIgIC8qIFN0b3JlIGN1cnJlbnQgY3B1IHRpbWVyIHZhbHVlICovCi0JCSAgICAgICIgIFNQVCAlMSIgICAgIC8qIFNldCBuZXcgdmFsdWUgaW1tZWRpYXRseSBhZnRlcndhcmRzICovCisJCSAgICAgICIgIFNQVCAlMSIgICAgIC8qIFNldCBuZXcgdmFsdWUgaW1tZWRpYXRlbHkgYWZ0ZXJ3YXJkcyAqLwogCQkgICAgICA6ICI9bSIgKHRpbWVyKSA6ICJtIiAoZXhwaXJlcykgKTsKIAlTMzkwX2xvd2NvcmUuc3lzdGVtX3RpbWVyICs9IFMzOTBfbG93Y29yZS5sYXN0X3VwZGF0ZV90aW1lciAtIHRpbWVyOwogCVMzOTBfbG93Y29yZS5sYXN0X3VwZGF0ZV90aW1lciA9IGV4cGlyZXM7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMgYi9hcmNoL3MzOTAva3ZtL2t2bS1zMzkwLmMKaW5kZXggYmFkZTUzMy4uMzBjYTg1YyAxMDA2NDQKLS0tIGEvYXJjaC9zMzkwL2t2bS9rdm0tczM5MC5jCisrKyBiL2FyY2gvczM5MC9rdm0va3ZtLXMzOTAuYwpAQCAtNzIxLDcgKzcyMSw3IEBACiAKIAkvKgogCSAqIGd1ZXN0cyBjYW4gYXNrIGZvciB1cCB0byAyNTUrMSBkb3VibGUgd29yZHMsIHdlIG5lZWQgYSBmdWxsIHBhZ2UKLQkgKiB0byBob2xkIHRoZSBtYXhpbXVtIGFtb3VudCBvZiBmYWNpbGl0ZXMuIE9uIHRoZSBvdGhlciBoYW5kLCB3ZQorCSAqIHRvIGhvbGQgdGhlIG1heGltdW0gYW1vdW50IG9mIGZhY2lsaXRpZXMuIE9uIHRoZSBvdGhlciBoYW5kLCB3ZQogCSAqIG9ubHkgc2V0IGZhY2lsaXRpZXMgdGhhdCBhcmUga25vd24gdG8gd29yayBpbiBLVk0uCiAJICovCiAJZmFjaWxpdGllcyA9ICh1bnNpZ25lZCBsb25nIGxvbmcgKikgZ2V0X3plcm9lZF9wYWdlKEdGUF9LRVJORUx8R0ZQX0RNQSk7CmRpZmYgLS1naXQgYS9hcmNoL3MzOTAva3ZtL3ByaXYuYyBiL2FyY2gvczM5MC9rdm0vcHJpdi5jCmluZGV4IDkxOTRhNGIuLjczYzQ3YmQgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9rdm0vcHJpdi5jCisrKyBiL2FyY2gvczM5MC9rdm0vcHJpdi5jCkBAIC0zMTEsNyArMzExLDcgQEAKIAogCS8qCiAJICogYSBsb3Qgb2YgQjIgaW5zdHJ1Y3Rpb25zIGFyZSBwcml2aWxlZGdlZC4gV2UgZmlyc3QgY2hlY2sgZm9yCi0JICogdGhlIHByaXZpbGVkZ2VzIG9uZXMsIHRoYXQgd2UgY2FuIGhhbmRsZSBpbiB0aGUga2VybmVsLiBJZiB0aGUKKwkgKiB0aGUgcHJpdmlsZWdlZCBvbmVzLCB0aGF0IHdlIGNhbiBoYW5kbGUgaW4gdGhlIGtlcm5lbC4gSWYgdGhlCiAJICoga2VybmVsIGNhbiBoYW5kbGUgdGhpcyBpbnN0cnVjdGlvbiwgd2UgY2hlY2sgZm9yIHRoZSBwcm9ibGVtCiAJICogc3RhdGUgYml0IGFuZCAoYSkgaGFuZGxlIHRoZSBpbnN0cnVjdGlvbiBvciAoYikgc2VuZCBhIGNvZGUgMgogCSAqIHByb2dyYW0gY2hlY2suCmRpZmYgLS1naXQgYS9hcmNoL3MzOTAvbW0vZmF1bHQuYyBiL2FyY2gvczM5MC9tbS9mYXVsdC5jCmluZGV4IDJjNTc4MDYuLjkyMTdlMzMgMTAwNjQ0Ci0tLSBhL2FyY2gvczM5MC9tbS9mYXVsdC5jCisrKyBiL2FyY2gvczM5MC9tbS9mYXVsdC5jCkBAIC0zOTIsNyArMzkyLDcgQEAKIHsKIAlpbnQgZmF1bHQ7CiAKLQkvKiBQcm90ZWN0aW9uIGV4Y2VwdGlvbiBpcyBzdXByZXNzaW5nLCBkZWNyZW1lbnQgcHN3IGFkZHJlc3MuICovCisJLyogUHJvdGVjdGlvbiBleGNlcHRpb24gaXMgc3VwcHJlc3NpbmcsIGRlY3JlbWVudCBwc3cgYWRkcmVzcy4gKi8KIAlyZWdzLT5wc3cuYWRkciAtPSAocGdtX2ludF9jb2RlID4+IDE2KTsKIAkvKgogCSAqIENoZWNrIGZvciBsb3ctYWRkcmVzcyBwcm90ZWN0aW9uLiAgVGhpcyBuZWVkcyB0byBiZSB0cmVhdGVkCmRpZmYgLS1naXQgYS9hcmNoL3Njb3JlL01ha2VmaWxlIGIvYXJjaC9zY29yZS9NYWtlZmlsZQppbmRleCBkNzdkYzYzLi45NzRhZWZlIDEwMDY0NAotLS0gYS9hcmNoL3Njb3JlL01ha2VmaWxlCisrKyBiL2FyY2gvc2NvcmUvTWFrZWZpbGUKQEAgLTQwLDUgKzQwLDUgQEAKIGRlZmluZSBhcmNoaGVscAogCWVjaG8gJyAgdm1saW51eC5iaW4gICAgICAgICAgLSBSYXcgYmluYXJ5IGJvb3QgaW1hZ2UnCiAJZWNobwotCWVjaG8gJyAgVGhlc2Ugd2lsbCBiZSBkZWZhdWx0IGFzIGFwcm9wcmlhdGUgZm9yIGEgY29uZmlndXJlZCBwbGF0Zm9ybS4nCisJZWNobyAnICBUaGVzZSB3aWxsIGJlIGRlZmF1bHQgYXMgYXBwcm9wcmlhdGUgZm9yIGEgY29uZmlndXJlZCBwbGF0Zm9ybS4nCiBlbmRlZgpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9LY29uZmlnLmRlYnVnIGIvYXJjaC9zaC9LY29uZmlnLmRlYnVnCmluZGV4IDEyZmVjNzIuLjE1NTNkNTYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvS2NvbmZpZy5kZWJ1ZworKysgYi9hcmNoL3NoL0tjb25maWcuZGVidWcKQEAgLTgyLDcgKzgyLDcgQEAKIAloZWxwCiAJICBJZiBydW5uaW5nIGluIHBhaW5mdWxseSBzbG93IGVudmlyb25tZW50cywgc3VjaCBhcyBhbiBSVEwKIAkgIHNpbXVsYXRpb24gb3IgZnJvbSByZW1vdGUgbWVtb3J5IHZpYSBTSGRlYnVnLCB3aGVyZSB0aGUgbWVtb3J5Ci0JICBjYW4gYWxyZWFkeSBiZSBnYXVyYW50ZWVkIHRvIGJlciB6ZXJvZWQgb24gYm9vdCwgc2F5IFkuCisJICBjYW4gYWxyZWFkeSBiZSBndWFyYW50ZWVkIHRvIGJlciB6ZXJvZWQgb24gYm9vdCwgc2F5IFkuCiAKIAkgIEZvciBhbGwgb3RoZXIgY2FzZXMsIHNheSBOLiBJZiB0aGlzIG9wdGlvbiBzZWVtcyBwZXJwbGV4aW5nLCBvcgogCSAgeW91IGFyZW4ndCBzdXJlLCBzYXkgTi4KZGlmZiAtLWdpdCBhL2FyY2gvc2gvYm9hcmRzL21hY2gtZHJlYW1jYXN0L2lycS5jIGIvYXJjaC9zaC9ib2FyZHMvbWFjaC1kcmVhbWNhc3QvaXJxLmMKaW5kZXggNzhjZjJhYi4uZjYzZDMyMyAxMDA2NDQKLS0tIGEvYXJjaC9zaC9ib2FyZHMvbWFjaC1kcmVhbWNhc3QvaXJxLmMKKysrIGIvYXJjaC9zaC9ib2FyZHMvbWFjaC1kcmVhbWNhc3QvaXJxLmMKQEAgLTUxLDcgKzUxLDcgQEAKICAqLwogI2RlZmluZSBMRVZFTChldmVudCkgKCgoZXZlbnQpIC0gSFdfRVZFTlRfSVJRX0JBU0UpIC8gMzIpCiAKLS8qIFJldHVybiB0aGUgaGFyZHdhcmUgZXZlbnQncyBiaXQgcG9zaXRvbiB3aXRoaW4gdGhlIEVNUi9FU1IgKi8KKy8qIFJldHVybiB0aGUgaGFyZHdhcmUgZXZlbnQncyBiaXQgcG9zaXRpb24gd2l0aGluIHRoZSBFTVIvRVNSICovCiAjZGVmaW5lIEVWRU5UX0JJVChldmVudCkgKCgoZXZlbnQpIC0gSFdfRVZFTlRfSVJRX0JBU0UpICYgMzEpCiAKIC8qCmRpZmYgLS1naXQgYS9hcmNoL3NoL2JvYXJkcy9tYWNoLWVjb3ZlYzI0L3NldHVwLmMgYi9hcmNoL3NoL2JvYXJkcy9tYWNoLWVjb3ZlYzI0L3NldHVwLmMKaW5kZXggZmQ0ZmYyNS4uMzBhZTJlNCAxMDA2NDQKLS0tIGEvYXJjaC9zaC9ib2FyZHMvbWFjaC1lY292ZWMyNC9zZXR1cC5jCisrKyBiL2FyY2gvc2gvYm9hcmRzL21hY2gtZWNvdmVjMjQvc2V0dXAuYwpAQCAtOTM2LDcgKzkzNiw3IEBACiAJCXJldHVybjsKIAl9CiAKLQkvKiByZWFkIE1BQyBhZGRyZXNzIGZyb21lIEVFUFJPTSAqLworCS8qIHJlYWQgTUFDIGFkZHJlc3MgZnJvbSBFRVBST00gKi8KIAlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKHBkLT5tYWNfYWRkcik7IGkrKykgewogCQlwZC0+bWFjX2FkZHJbaV0gPSBtYWNfcmVhZChhLCAweDEwICsgaSk7CiAJCW1zbGVlcCgxMCk7CmRpZmYgLS1naXQgYS9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaS1zaDc3NTEuaCBiL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLXNoNzc1MS5oCmluZGV4IDQ5ODNhNGQuLjVlZGUzOGMgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLXNoNzc1MS5oCisrKyBiL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLXNoNzc1MS5oCkBAIC02MSw3ICs2MSw3IEBACiAgICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0JJU1Q3ICAgICAgMHg4MDAwMDAwMCAgLyogQmlzdCBTdXBwb3J0ZWQgKi8KICAgI2RlZmluZSBTSDc3NTFfUENJQ09ORjNfQklTVDYgICAgICAweDQwMDAwMDAwICAvKiBCaXN0IEV4ZWN1dGluZyAqLwogICAjZGVmaW5lIFNINzc1MV9QQ0lDT05GM19CSVNUM18wICAgIDB4MEYwMDAwMDAgIC8qIEJpc3QgUGFzc2VkICovCi0gICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0hENyAgICAgICAgMHgwMDgwMDAwMCAgLyogU2luZ2xlIEZ1bnRpb24gZGV2aWNlICovCisgICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0hENyAgICAgICAgMHgwMDgwMDAwMCAgLyogU2luZ2xlIEZ1bmN0aW9uIGRldmljZSAqLwogICAjZGVmaW5lIFNINzc1MV9QQ0lDT05GM19IRDZfMCAgICAgIDB4MDA3RjAwMDAgIC8qIENvbmZpZ3VyYXRpb24gTGF5b3V0ICovCiAgICNkZWZpbmUgU0g3NzUxX1BDSUNPTkYzX0xBVCAgICAgICAgMHgwMDAwRkYwMCAgLyogTGF0ZW5jeSBUaW1lciAqLwogICAjZGVmaW5lIFNINzc1MV9QQ0lDT05GM19DTFMgICAgICAgIDB4MDAwMDAwRkYgIC8qIENhY2hlIExpbmUgU2l6ZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2kuYyBiL2FyY2gvc2gvZHJpdmVycy9wY2kvcGNpLmMKaW5kZXggYTA5Yzc3ZC4uMTk0MjMxYyAxMDA2NDQKLS0tIGEvYXJjaC9zaC9kcml2ZXJzL3BjaS9wY2kuYworKysgYi9hcmNoL3NoL2RyaXZlcnMvcGNpL3BjaS5jCkBAIC04NCw3ICs4NCw3IEBACiAJaG9zZV90YWlsID0gJmhvc2UtPm5leHQ7CiAKIAkvKgotCSAqIERvIG5vdCBwYW5pYyBoZXJlIGJ1dCBsYXRlciAtIHRoaXMgbWlnaHQgaGFwZW4gYmVmb3JlIGNvbnNvbGUgaW5pdC4KKwkgKiBEbyBub3QgcGFuaWMgaGVyZSBidXQgbGF0ZXIgLSB0aGlzIG1pZ2h0IGhhcHBlbiBiZWZvcmUgY29uc29sZSBpbml0LgogCSAqLwogCWlmICghaG9zZS0+aW9fbWFwX2Jhc2UpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL2FzbS9wYWdlLmggYi9hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaAppbmRleCBjNGUwYjNkLi44MjJkNjA4IDEwMDY0NAotLS0gYS9hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaAorKysgYi9hcmNoL3NoL2luY2x1ZGUvYXNtL3BhZ2UuaApAQCAtMTg2LDcgKzE4Niw3IEBACiAvKgogICogV2hpbGUgQllURVNfUEVSX1dPUkQgPT0gNCBvbiB0aGUgY3VycmVudCBzaDY0IEFCSSwgR0NDIHdpbGwgc3RpbGwKICAqIGhhcHBpbHkgZ2VuZXJhdGUge2xkL3N0fS5xIHBhaXJzLCByZXF1aXJpbmcgdXMgdG8gaGF2ZSA4LWJ5dGUKLSAqIGFsaWdubWVudCB0byBhdm9pZCB0cmFwcy4gVGhlIGttYWxsb2MgYWxpZ25tZW50IGlzIGdhdXJhbnRlZWQgYnkKKyAqIGFsaWdubWVudCB0byBhdm9pZCB0cmFwcy4gVGhlIGttYWxsb2MgYWxpZ25tZW50IGlzIGd1YXJhbnRlZWQgYnkKICAqIHZpcnR1ZSBvZiBMMV9DQUNIRV9CWVRFUywgcmVxdWlyaW5nIHRoaXMgdG8gb25seSBiZSBzcGVjaWFsIGNhc2VkCiAgKiBmb3Igc2xhYiBjYWNoZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2FyY2gvc2gvaW5jbHVkZS9hc20vcGd0YWJsZV8zMi5oIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgKaW5kZXggYjc5OWZlNy4uMGJjZTNkOCAxMDA2NDQKLS0tIGEvYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgKKysrIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS9wZ3RhYmxlXzMyLmgKQEAgLTE2Nyw3ICsxNjcsNyBAQAogI2VuZGlmCiAKIC8qCi0gKiBNYXNrIG9mIGJpdHMgdGhhdCBhcmUgdG8gYmUgcHJlc2VydmVkIGFjY3Jvc3MgcGdwcm90IGNoYW5nZXMuCisgKiBNYXNrIG9mIGJpdHMgdGhhdCBhcmUgdG8gYmUgcHJlc2VydmVkIGFjcm9zcyBwZ3Byb3QgY2hhbmdlcy4KICAqLwogI2RlZmluZSBfUEFHRV9DSEdfTUFTSyBcCiAJKFBURV9NQVNLIHwgX1BBR0VfQUNDRVNTRUQgfCBfUEFHRV9DQUNIQUJMRSB8IFwKZGlmZiAtLWdpdCBhL2FyY2gvc2gvaW5jbHVkZS9hc20vdW5hbGlnbmVkLXNoNGEuaCBiL2FyY2gvc2gvaW5jbHVkZS9hc20vdW5hbGlnbmVkLXNoNGEuaAppbmRleCBjNDhhOWMzLi45NWFkYzUwIDEwMDY0NAotLS0gYS9hcmNoL3NoL2luY2x1ZGUvYXNtL3VuYWxpZ25lZC1zaDRhLmgKKysrIGIvYXJjaC9zaC9pbmNsdWRlL2FzbS91bmFsaWduZWQtc2g0YS5oCkBAIC05LDcgKzksNyBAQAogICogc3RydWN0LgogICoKICAqIFRoZSBzYW1lIG5vdGUgYXMgd2l0aCB0aGUgbW92bGkubC9tb3Zjby5sIHBhaXIgYXBwbGllcyBoZXJlLCBhcyBsb25nCi0gKiBhcyB0aGUgbG9hZCBpcyBnYXVyYW50ZWVkIHRvIGJlIGlubGluZWQsIG5vdGhpbmcgZWxzZSB3aWxsIGhvb2sgaW4gdG8KKyAqIGFzIHRoZSBsb2FkIGlzIGd1YXJhbnRlZWQgdG8gYmUgaW5saW5lZCwgbm90aGluZyBlbHNlIHdpbGwgaG9vayBpbiB0bwogICogcjAgYW5kIHdlIGdldCB0aGUgcmV0dXJuIHZhbHVlIGZvciBmcmVlLgogICoKICAqIE5PVEU6IER1ZSB0byB0aGUgZmFjdCB3ZSByZXF1aXJlIHIwIGVuY29kaW5nLCBjYXJlIHNob3VsZCBiZSB0YWtlbiB0bwpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvaGlnaGxhbmRlci5oIGIvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvaGlnaGxhbmRlci5oCmluZGV4IDVkOWQ0ZDUuLjZjZTk0NGUgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvaW5jbHVkZS9tYWNoLWNvbW1vbi9tYWNoL2hpZ2hsYW5kZXIuaAorKysgYi9hcmNoL3NoL2luY2x1ZGUvbWFjaC1jb21tb24vbWFjaC9oaWdobGFuZGVyLmgKQEAgLTI0LDcgKzI0LDcgQEAKICNkZWZpbmUgUEFfT0JMRUQgICAgICAgIChQQV9CQ1IrMHgwMDFjKSAvKiBPbiBCb2FyZCBMRUQgY29udHJvbCAqLwogI2RlZmluZSBQQV9PQlNXICAgICAgICAgKFBBX0JDUisweDAwMWUpIC8qIE9uIEJvYXJkIFN3aXRjaCBjb250cm9sICovCiAjZGVmaW5lIFBBX0FVRElPU0VMICAgICAoUEFfQkNSKzB4MDAyMCkgLyogU291bmQgSW50ZXJmYWNlIFNlbGVjdCBjb250cm9sICovCi0jZGVmaW5lIFBBX0VYVFBMUiAgICAgICAoUEFfQkNSKzB4MDAxZSkgLyogRXh0ZW50aW9uIFBpbiBQb2xhcml0eSBjb250cm9sICovCisjZGVmaW5lIFBBX0VYVFBMUiAgICAgICAoUEFfQkNSKzB4MDAxZSkgLyogRXh0ZW5zaW9uIFBpbiBQb2xhcml0eSBjb250cm9sICovCiAjZGVmaW5lIFBBX1RQQ1RMICAgICAgICAoUEFfQkNSKzB4MDEwMCkgLyogVG91Y2ggUGFuZWwgQWNjZXNzIGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfVFBEQ0tDVEwgICAgIChQQV9CQ1IrMHgwMTAyKSAvKiBUb3VjaCBQYW5lbCBBY2Nlc3MgZGF0YSBjb250cm9sICovCiAjZGVmaW5lIFBBX1RQQ1RMQ0xSICAgICAoUEFfQkNSKzB4MDEwNCkgLyogVG91Y2ggUGFuZWwgQWNjZXNzIGNvbnRyb2wgKi8KQEAgLTg5LDcgKzg5LDcgQEAKICNkZWZpbmUgUEFfT0JMRUQJKFBBX0JDUisweDAwMTgpCS8qIE9uIEJvYXJkIExFRCBjb250cm9sICovCiAjZGVmaW5lIFBBX09CU1cJCShQQV9CQ1IrMHgwMDFhKQkvKiBPbiBCb2FyZCBTd2l0Y2ggY29udHJvbCAqLwogI2RlZmluZSBQQV9BVURJT1NFTAkoUEFfQkNSKzB4MDAxYykJLyogU291bmQgSW50ZXJmYWNlIFNlbGVjdCBjb250cm9sICovCi0jZGVmaW5lIFBBX0VYVFBMUgkoUEFfQkNSKzB4MDAxZSkJLyogRXh0ZW50aW9uIFBpbiBQb2xhcml0eSBjb250cm9sICovCisjZGVmaW5lIFBBX0VYVFBMUgkoUEFfQkNSKzB4MDAxZSkJLyogRXh0ZW5zaW9uIFBpbiBQb2xhcml0eSBjb250cm9sICovCiAjZGVmaW5lIFBBX1RQQ1RMCShQQV9CQ1IrMHgwMTAwKQkvKiBUb3VjaCBQYW5lbCBBY2Nlc3MgY29udHJvbCAqLwogI2RlZmluZSBQQV9UUERDS0NUTAkoUEFfQkNSKzB4MDEwMikJLyogVG91Y2ggUGFuZWwgQWNjZXNzIGRhdGEgY29udHJvbCAqLwogI2RlZmluZSBQQV9UUENUTENMUgkoUEFfQkNSKzB4MDEwNCkJLyogVG91Y2ggUGFuZWwgQWNjZXNzIGNvbnRyb2wgKi8KZGlmZiAtLWdpdCBhL2FyY2gvc2gvaW5jbHVkZS9tYWNoLWNvbW1vbi9tYWNoL3IyZC5oIGIvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvcjJkLmgKaW5kZXggMGE4MDAxNS4uZTA0Zjc1ZSAxMDA2NDQKLS0tIGEvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvcjJkLmgKKysrIGIvYXJjaC9zaC9pbmNsdWRlL21hY2gtY29tbW9uL21hY2gvcjJkLmgKQEAgLTE4LDE4ICsxOCwxOCBAQAogI2RlZmluZSBQQV9ESVNQQ1RMCTB4YTQwMDAwMDgJLyogRGlzcGxheSBUaW1pbmcgY29udHJvbCAqLwogI2RlZmluZSBQQV9TRE1QT1cJMHhhNDAwMDAwYQkvKiBTRCBQb3dlciBjb250cm9sICovCiAjZGVmaW5lIFBBX1JUQ0NFCTB4YTQwMDAwMGMJLyogUlRDKDk3MDEpIEVuYWJsZSBjb250cm9sICovCi0jZGVmaW5lIFBBX1BDSUNECTB4YTQwMDAwMGUJLyogUENJIEV4dGVudGlvbiBkZXRlY3QgY29udHJvbCAqLworI2RlZmluZSBQQV9QQ0lDRAkweGE0MDAwMDBlCS8qIFBDSSBFeHRlbnNpb24gZGV0ZWN0IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfVk9ZQUdFUlJUUwkweGE0MDAwMDIwCS8qIFZPWUFHRVIgUmVzZXQgY29udHJvbCAqLwogCiAjZGVmaW5lIFBBX1IyRDFfQVhSU1QJCTB4YTQwMDAwMjIJLyogQVhfTEFOIFJlc2V0IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfUjJEMV9DRlJTVAkJMHhhNDAwMDAyNAkvKiBDRiBSZXNldCBjb250cm9sICovCiAjZGVmaW5lIFBBX1IyRDFfQURNUlRTCQkweGE0MDAwMDI2CS8qIFNEIFJlc2V0IGNvbnRyb2wgKi8KLSNkZWZpbmUgUEFfUjJEMV9FWFRSU1QJCTB4YTQwMDAwMjgJLyogRXh0ZW50aW9uIFJlc2V0IGNvbnRyb2wgKi8KKyNkZWZpbmUgUEFfUjJEMV9FWFRSU1QJCTB4YTQwMDAwMjgJLyogRXh0ZW5zaW9uIFJlc2V0IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfUjJEMV9DRkNESU5UQ0xSCTB4YTQwMDAwMmEJLyogQ0YgSW5zZXJ0IEludGVycnVwdCBjbGVhciAqLwogCiAjZGVmaW5lIFBBX1IyRFBMVVNfQ0ZSU1QJMHhhNDAwMDAyMgkvKiBDRiBSZXNldCBjb250cm9sICovCiAjZGVmaW5lIFBBX1IyRFBMVVNfQURNUlRTCTB4YTQwMDAwMjQJLyogU0QgUmVzZXQgY29udHJvbCAqLwotI2RlZmluZSBQQV9SMkRQTFVTX0VYVFJTVAkweGE0MDAwMDI2CS8qIEV4dGVudGlvbiBSZXNldCBjb250cm9sICovCisjZGVmaW5lIFBBX1IyRFBMVVNfRVhUUlNUCTB4YTQwMDAwMjYJLyogRXh0ZW5zaW9uIFJlc2V0IGNvbnRyb2wgKi8KICNkZWZpbmUgUEFfUjJEUExVU19DRkNESU5UQ0xSCTB4YTQwMDAwMjgJLyogQ0YgSW5zZXJ0IEludGVycnVwdCBjbGVhciAqLwogI2RlZmluZSBQQV9SMkRQTFVTX0tFWUNUTENMUgkweGE0MDAwMDJhCS8qIEtleSBJbnRlcnJ1cHQgY2xlYXIgKi8KIApkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvY3B1L2Nsb2NrLWNwZy5jIGIvYXJjaC9zaC9rZXJuZWwvY3B1L2Nsb2NrLWNwZy5jCmluZGV4IGRkMGUwZjIuLjhmNjNhMjYgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gva2VybmVsL2NwdS9jbG9jay1jcGcuYworKysgYi9hcmNoL3NoL2tlcm5lbC9jcHUvY2xvY2stY3BnLmMKQEAgLTY3LDcgKzY3LDcgQEAKIH0KIAogLyoKLSAqIFBsYWNlaG9sZGVyIGZvciBjb21wYXRhYmlsaXR5LCB1bnRpbCB0aGUgbGF6eSBDUFVzIGRvIHRoaXMKKyAqIFBsYWNlaG9sZGVyIGZvciBjb21wYXRpYmlsaXR5LCB1bnRpbCB0aGUgbGF6eSBDUFVzIGRvIHRoaXMKICAqIG9uIHRoZWlyIG93bi4KICAqLwogaW50IF9faW5pdCBfX3dlYWsgYXJjaF9jbGtfaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvY3B1L3NoNGEvc2V0dXAtc2g3Nzg2LmMgYi9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0YS9zZXR1cC1zaDc3ODYuYwppbmRleCAxNjU2YjhjLi5iZWJhMzJiIDEwMDY0NAotLS0gYS9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0YS9zZXR1cC1zaDc3ODYuYworKysgYi9hcmNoL3NoL2tlcm5lbC9jcHUvc2g0YS9zZXR1cC1zaDc3ODYuYwpAQCAtNjQ4LDcgKzY0OCw3IEBACiAJICogVGhlIGZvbGxvd2luZyBzZXR0aW5ncyBhcmUgbmVjZXNzYXJ5CiAJICogZm9yIHVzaW5nIHRoZSBVU0IgbW9kdWxlcy4KIAkgKgotCSAqIHNlZSAiVVNCIEluaXRhbCBTZXR0aW5ncyIgZm9yIGRldGFpbAorCSAqIHNlZSAiVVNCIEluaXRpYWwgU2V0dGluZ3MiIGZvciBkZXRhaWwKIAkgKi8KIAlfX3Jhd193cml0ZWwoVVNCSU5JVFZBTDEsIFVTQklOSVRSRUcxKTsKIAlfX3Jhd193cml0ZWwoVVNCSU5JVFZBTDIsIFVTQklOSVRSRUcyKTsKZGlmZiAtLWdpdCBhL2FyY2gvc2gva2VybmVsL2lycS5jIGIvYXJjaC9zaC9rZXJuZWwvaXJxLmMKaW5kZXggNjRlYTBiMS4uOTE5NzExMCAxMDA2NDQKLS0tIGEvYXJjaC9zaC9rZXJuZWwvaXJxLmMKKysrIGIvYXJjaC9zaC9rZXJuZWwvaXJxLmMKQEAgLTE4Myw3ICsxODMsNyBAQAogCQkpOwogCiAJCS8qCi0JCSAqIFNob3VsZG50IGhhcHBlbiwgd2UgcmV0dXJuZWQgYWJvdmUgaWYgaW5faW50ZXJydXB0KCk6CisJCSAqIFNob3VsZG4ndCBoYXBwZW4sIHdlIHJldHVybmVkIGFib3ZlIGlmIGluX2ludGVycnVwdCgpOgogCQkgKi8KIAkJV0FSTl9PTl9PTkNFKHNvZnRpcnFfY291bnQoKSk7CiAJfQpkaWZmIC0tZ2l0IGEvYXJjaC9zaC9rZXJuZWwvc2V0dXAuYyBiL2FyY2gvc2gva2VybmVsL3NldHVwLmMKaW5kZXggNGYyNjcxNi4uNThiZmY0NSAxMDA2NDQKLS0tIGEvYXJjaC9zaC9rZXJuZWwvc2V0dXAuYworKysgYi9hcmNoL3NoL2tlcm5lbC9zZXR1cC5jCkBAIC0xNTAsNyArMTUwLDcgQEAKIAl9CiAKIAkvKgotCSAqIElmIHdlIGdvdCB0aGlzIGZhciBpbnNwaXRlIG9mIHRoZSBib290IGxvYWRlcidzIGJlc3QgZWZmb3J0cworCSAqIElmIHdlIGdvdCB0aGlzIGZhciBpbiBzcGl0ZSBvZiB0aGUgYm9vdCBsb2FkZXIncyBiZXN0IGVmZm9ydHMKIAkgKiB0byB0aGUgY29udHJhcnksIGFzc3VtZSB3ZSBhY3R1YWxseSBoYXZlIGEgdmFsaWQgaW5pdHJkIGFuZAogCSAqIGZpeCB1cCB0aGUgcm9vdCBkZXYuCiAJICovCmRpZmYgLS1naXQgYS9hcmNoL3NoL2xpYjY0L2NvcHlfdXNlcl9tZW1jcHkuUyBiL2FyY2gvc2gvbGliNjQvY29weV91c2VyX21lbWNweS5TCmluZGV4IDJhNjI4MTYuLjQ5YWVhYmUgMTAwNjQ0Ci0tLSBhL2FyY2gvc2gvbGliNjQvY29weV91c2VyX21lbWNweS5TCisrKyBiL2FyY2gvc2gvbGliNjQvY29weV91c2VyX21lbWNweS5TCkBAIC0yNyw3ICsyNyw3IEBACiAhIDIuOiBXaGVuIHRoZXJlIGFyZSB0d28gb3IgdGhyZWUgYnl0ZXMgaW4gdGhlIGxhc3Qgd29yZCBvZiBhbiAxMS1vci1tb3JlCiAhICAgICBieXRlcyBtZW1vcnkgY2h1bmsgdG8gYiBjb3BpZWQsIHRoZSByZXN0IG9mIHRoZSB3b3JkIGNhbiBiZSByZWFkCiAhICAgICB3aXRob3V0IHNpZGUgZWZmZWN0cy4KLSEgICAgIFRoaXMgY291bGQgYmUgZWFzaWx5IGNoYW5nZWQgYnkgaW5jcmVhc2luZyB0aGUgbWludW11bSBzaXplIG9mCishICAgICBUaGlzIGNvdWxkIGJlIGVhc2lseSBjaGFuZ2VkIGJ5IGluY3JlYXNpbmcgdGhlIG1pbmltdW0gc2l6ZSBvZgogISAgICAgYSBmYXN0IG1lbWNweSBhbmQgdGhlIGFtb3VudCBzdWJ0cmFjdGVkIGZyb20gcjcgYmVmb3JlIExfMmxfbG9vcCBiZSAyLAogISAgICAgaG93ZXZlciwgdGhpcyB3b3VsZCBjb3N0IGEgZmV3IGV4dHJhIGN5bGVzIG9uIGF2ZXJhZ2UuCiAhICAgICBGb3IgU0htZWRpYSwgdGhlIGFzc3VtcHRpb24gaXMgdGhhdCBhbnkgcXVhZHdvcmQgY2FuIGJlIHJlYWQgaW4gaXRzCmRpZmYgLS1naXQgYS9hcmNoL3NoL2xpYjY0L21lbWNweS5TIGIvYXJjaC9zaC9saWI2NC9tZW1jcHkuUwppbmRleCBkZDMwMGMzLi41ZDY4MmUwIDEwMDY0NAotLS0gYS9hcmNoL3NoL2xpYjY0L21lbWNweS5TCisrKyBiL2FyY2gvc2gvbGliNjQvbWVtY3B5LlMKQEAgLTI5LDcgKzI5LDcgQEAKICEgMi46IFdoZW4gdGhlcmUgYXJlIHR3byBvciB0aHJlZSBieXRlcyBpbiB0aGUgbGFzdCB3b3JkIG9mIGFuIDExLW9yLW1vcmUKICEgICAgIGJ5dGVzIG1lbW9yeSBjaHVuayB0byBiIGNvcGllZCwgdGhlIHJlc3Qgb2YgdGhlIHdvcmQgY2FuIGJlIHJlYWQKICEgICAgIHdpdGhvdXQgc2lkZSBlZmZlY3RzLgotISAgICAgVGhpcyBjb3VsZCBiZSBlYXNpbHkgY2hhbmdlZCBieSBpbmNyZWFzaW5nIHRoZSBtaW51bXVtIHNpemUgb2YKKyEgICAgIFRoaXMgY291bGQgYmUgZWFzaWx5IGNoYW5nZWQgYnkgaW5jcmVhc2luZyB0aGUgbWluaW11bSBzaXplIG9mCiAhICAgICBhIGZhc3QgbWVtY3B5IGFuZCB0aGUgYW1vdW50IHN1YnRyYWN0ZWQgZnJvbSByNyBiZWZvcmUgTF8ybF9sb29wIGJlIDIsCiAhICAgICBob3dldmVyLCB0aGlzIHdvdWxkIGNvc3QgYSBmZXcgZXh0cmEgY3lsZXMgb24gYXZlcmFnZS4KICEgICAgIEZvciBTSG1lZGlhLCB0aGUgYXNzdW1wdGlvbiBpcyB0aGF0IGFueSBxdWFkd29yZCBjYW4gYmUgcmVhZCBpbiBpdHMKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vaHlwZXJ2aXNvci5oIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9oeXBlcnZpc29yLmgKaW5kZXggYmFmZTVhNi4uNzU2ODY0MCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9oeXBlcnZpc29yLmgKKysrIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9oeXBlcnZpc29yLmgKQEAgLTY1NCw3ICs2NTQsNyBAQAogICogQVJHMzoJbW11IGNvbnRleHQKICAqIEFSRzQ6CWZsYWdzIChIVl9NTVVfe0lNTVUsRE1NVX0pCiAgKiBSRVQwOglzdGF0dXMKLSAqIEVSUk9SUzoJRUlOVkFMCQkJSW52YWxpZCB2aXJ1dGFsIGFkZHJlc3MsIGNvbnRleHQsIG9yCisgKiBFUlJPUlM6CUVJTlZBTAkJCUludmFsaWQgdmlydHVhbCBhZGRyZXNzLCBjb250ZXh0LCBvcgogICoJCQkJCWZsYWdzIHZhbHVlCiAgKgkJRU5PVFNVUFBPUlRFRAkJQVJHMCBvciBBUkcxIGlzIG5vbi16ZXJvCiAgKgpAQCAtNzIxLDcgKzcyMSw3IEBACiAgKiBBUkcyOglUVEUKICAqIEFSRzM6CWZsYWdzIChIVl9NTVVfe0lNTVUsRE1NVX0pCiAgKiBSRVQwOglzdGF0dXMKLSAqIEVSUk9SUzoJRUlOVkFMCQkJSW52YWxpZCB2aXJ1dGFsIGFkZHJlc3Mgb3IgZmxhZ3MgdmFsdWUKKyAqIEVSUk9SUzoJRUlOVkFMCQkJSW52YWxpZCB2aXJ0dWFsIGFkZHJlc3Mgb3IgZmxhZ3MgdmFsdWUKICAqCQlFQkFEUEdTWgkJSW52YWxpZCBwYWdlIHNpemUgdmFsdWUKICAqCQlFTk9SQUREUgkJSW52YWxpZCByZWFsIGFkZHJlc3MgaW4gVFRFCiAgKgkJRVRPT01BTlkJCVRvbyBtYW55IG1hcHBpbmdzIChtYXggb2YgOCByZWFjaGVkKQpAQCAtODAwLDcgKzgwMCw3IEBACiAgKiBBUkcxOglyZXNlcnZlZCwgbXVzdCBiZSB6ZXJvCiAgKiBBUkcyOglmbGFncyAoSFZfTU1VX3tJTU1VLERNTVV9KQogICogUkVUMDoJc3RhdHVzCi0gKiBFUlJPUlM6CUVJTlZBTAkJCUludmFsaWQgdmlydXRhbCBhZGRyZXNzIG9yIGZsYWdzIHZhbHVlCisgKiBFUlJPUlM6CUVJTlZBTAkJCUludmFsaWQgdmlydHVhbCBhZGRyZXNzIG9yIGZsYWdzIHZhbHVlCiAgKgkJRU5PTUFQCQkJU3BlY2lmaWVkIG1hcHBpbmcgd2FzIG5vdCBmb3VuZAogICoKICAqIERlbWFwcyBhbnkgcGVybWFuZW50IHBhZ2UgbWFwcGluZyAoZXN0YWJsaXNoZWQgdmlhCkBAIC0xMjA1LDcgKzEyMDUsNyBAQAogICogc3RydWN0dXJlIGNvbnRlbnRzLiAgQXR0ZW1wdHMgdG8gZG8gc28gd2lsbCByZXN1bHQgaW4gdW5kZWZpbmVkCiAgKiBiZWhhdmlvciBmb3IgdGhlIGd1ZXN0LgogICoKLSAqIEVhY2ggdHJhcCB0cmFjZSBidWZmZXIgZW50cnkgaXMgbGF5ZWQgb3V0IGFzIGZvbGxvd3M6CisgKiBFYWNoIHRyYXAgdHJhY2UgYnVmZmVyIGVudHJ5IGlzIGxhaWQgb3V0IGFzIGZvbGxvd3M6CiAgKi8KICNpZm5kZWYgX19BU1NFTUJMWV9fCiBzdHJ1Y3QgaHZfdHJhcF90cmFjZV9lbnRyeSB7CkBAIC0xMzAwLDcgKzEzMDAsNyBAQAogICogc3RhdGUgaW4gUkVUMS4gIEZ1dHVyZSBzeXN0ZW1zIG1heSBkZWZpbmUgdmFyaW91cyBmbGFncyBmb3IgdGhlCiAgKiBlbmFibGUgYXJndW1lbnQgKEFSRzApLCBmb3IgdGhlIG1vbWVudCBhIGd1ZXN0IHNob3VsZCBwYXNzCiAgKiAiKHVpbnQ2NF90KSAtMSIgdG8gZW5hYmxlLCBhbmQgIih1aW50NjRfdCkgMCIgdG8gZGlzYWJsZSBhbGwKLSAqIHRyYWNpbmcgLSB3aGljaCB3aWxsIGVuc3VyZSBmdXR1cmUgY29tcGF0YWJpbGl0eS4KKyAqIHRyYWNpbmcgLSB3aGljaCB3aWxsIGVuc3VyZSBmdXR1cmUgY29tcGF0aWJpbGl0eS4KICAqLwogI2RlZmluZSBIVl9GQVNUX1RUUkFDRV9FTkFCTEUJCTB4OTIKIApAQCAtMTg4MCw3ICsxODgwLDcgQEAKICAqIHBjaV9kZXZpY2UsIGF0IHBjaV9jb25maWdfb2Zmc2V0IGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZGV2aWNlJ3MKICAqIGNvbmZpZ3VyYXRpb24gc3BhY2UuICBJZiB0aGVyZSB3YXMgbm8gZXJyb3IsIFJFVDEgaXMgc2V0IHRvIHplcm8gYW5kCiAgKiBSRVQyIGlzIHNldCB0byB0aGUgZGF0YSByZWFkLiAgSW5zaWduaWZpY2FudCBiaXRzIGluIFJFVDIgYXJlIG5vdAotICogZ3VhcmVudGVlZCB0byBoYXZlIGFueSBzcGVjaWZpYyB2YWx1ZSBhbmQgdGhlcmVmb3JlIG11c3QgYmUgaWdub3JlZC4KKyAqIGd1YXJhbnRlZWQgdG8gaGF2ZSBhbnkgc3BlY2lmaWMgdmFsdWUgYW5kIHRoZXJlZm9yZSBtdXN0IGJlIGlnbm9yZWQuCiAgKgogICogVGhlIGRhdGEgcmV0dXJuZWQgaW4gUkVUMiBpcyBzaXplIGJhc2VkIGJ5dGUgc3dhcHBlZC4KICAqCkBAIC0xOTQxLDkgKzE5NDEsOSBAQAogICogYW5kIHJldHVybiB0aGUgYWN0dWFsIGRhdGEgcmVhZCBpbiBSRVQyLiAgVGhlIGRhdGEgcmV0dXJuZWQgaXMgc2l6ZSBiYXNlZAogICogYnl0ZSBzd2FwcGVkLgogICoKLSAqIE5vbi1zaWduaWZpY2FudCBiaXRzIGluIFJFVDIgYXJlIG5vdCBndWFyZW50ZWVkIHRvIGhhdmUgYW55IHNwZWNpZmljIHZhbHVlCisgKiBOb24tc2lnbmlmaWNhbnQgYml0cyBpbiBSRVQyIGFyZSBub3QgZ3VhcmFudGVlZCB0byBoYXZlIGFueSBzcGVjaWZpYyB2YWx1ZQogICogYW5kIHRoZXJlZm9yZSBtdXN0IGJlIGlnbm9yZWQuICBJZiBSRVQxIGlzIHJldHVybmVkIGFzIG5vbi16ZXJvLCB0aGUgZGF0YQotICogdmFsdWUgaXMgbm90IGd1YXJlbnRlZWQgdG8gaGF2ZSBhbnkgc3BlY2lmaWMgdmFsdWUgYW5kIHNob3VsZCBiZSBpZ25vcmVkLgorICogdmFsdWUgaXMgbm90IGd1YXJhbnRlZWQgdG8gaGF2ZSBhbnkgc3BlY2lmaWMgdmFsdWUgYW5kIHNob3VsZCBiZSBpZ25vcmVkLgogICoKICAqIFRoZSBjYWxsZXIgbXVzdCBoYXZlIHBlcm1pc3Npb24gdG8gcmVhZCBmcm9tIHRoZSBnaXZlbiBkZXZoYW5kbGUsIHJlYWwKICAqIGFkZHJlc3MsIHdoaWNoIG11c3QgYmUgYW4gSU8gYWRkcmVzcy4gIFRoZSBhcmd1bWVudCByZWFsIGFkZHJlc3MgbXVzdCBiZSBhCkBAIC0yNDU2LDkgKzI0NTYsOSBAQAogICoKICAqIEFzIHJlY2VpdmUgcXVldWUgY29uZmlndXJhdGlvbiBjYXVzZXMgYSByZXNldCBvZiB0aGUgcXVldWUncyBoZWFkIGFuZAogICogdGFpbCBwb2ludGVycyB0aGVyZSBpcyBubyB3YXkgZm9yIGEgZ3VlcyB0byBkZXRlcm1pbmUgaG93IG1hbnkgZW50cmllcwotICogaGF2ZSBiZWVuIHJlY2VpdmVkIGJldHdlZW4gYSBwcmVjZWVkaW5nIGxkY19nZXRfcnhfc3RhdGUoKSBBUEkgY2FsbAorICogaGF2ZSBiZWVuIHJlY2VpdmVkIGJldHdlZW4gYSBwcmVjZWRpbmcgbGRjX2dldF9yeF9zdGF0ZSgpIEFQSSBjYWxsCiAgKiBhbmQgdGhlIGNvbXBsZXRpb24gb2YgdGhlIGNvbmZpZ3VyYXRpb24gb3BlcmF0aW9uLiAgSXQgc2hvdWxkIGJlIG5vdGVkCi0gKiB0aGF0IGRhdGFncmFtIGRlbGl2ZXJ5IGlzIG5vdCBndWFyZW50ZWVkIHZpYSBkb21haW4gY2hhbm5lbHMgYW55d2F5LAorICogdGhhdCBkYXRhZ3JhbSBkZWxpdmVyeSBpcyBub3QgZ3VhcmFudGVlZCB2aWEgZG9tYWluIGNoYW5uZWxzIGFueXdheSwKICAqIGFuZCB0aGVyZWZvcmUgYW55IGhpZ2hlciBwcm90b2NvbCBzaG91bGQgYmUgcmVzaWxpZW50IHRvIGRhdGFncmFtCiAgKiBsb3NzIGlmIG5lY2Vzc2FyeS4gIEhvd2V2ZXIsIHRvIG92ZXJjb21lIHRoaXMgc3BlY2lmaWMgcmFjZSBwb3RlbnRpYWwKICAqIGl0IGlzIHJlY29tbWVuZGVkLCBmb3IgZXhhbXBsZSwgdGhhdCBhIGhpZ2hlciBsZXZlbCBwcm90b2NvbCBiZSBlbXBsb3llZApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9uczg3MzAzLmggYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL25zODczMDMuaAppbmRleCA2ODZkZWZlLi5hZjc1NTQ4IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL25zODczMDMuaAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL25zODczMDMuaApAQCAtMzcsNyArMzcsNyBAQAogLyogUG93ZXIgYW5kIFRlc3QgUmVnaXN0ZXIgKFBUUikgYml0cyAqLwogI2RlZmluZSBQVFJfTFBUQl9JUlE3CTB4MDgKICNkZWZpbmUgUFRSX0xFVkVMX0lSUQkweDgwCS8qIFdoZW4gbm90IEVDUC9FUFA6IFVzZSBsZXZlbCBJUlEgICAgICAgICAgICovCi0jZGVmaW5lIFBUUl9MUFRfUkVHX0RJUgkweDgwCS8qIFdoZW4gRUNQL0VQUDogTFBUIENUUiBjb250cm9sbHMgZGlyZWN0aW9uICovCisjZGVmaW5lIFBUUl9MUFRfUkVHX0RJUgkweDgwCS8qIFdoZW4gRUNQL0VQUDogTFBUIENUUiBjb250cm9scyBkaXJlY3Rpb24gKi8KIAkJCQkvKiAgICAgICAgICAgICAgIG9mIHRoZSBwYXJhbGxlbCBwb3J0CSAgICAgKi8KIAogLyogRnVuY3Rpb24gQ29udHJvbCBSZWdpc3RlciAoRkNSKSBiaXRzICovCmRpZmYgLS1naXQgYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3Bjci5oIGIvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wY3IuaAppbmRleCA4NDNlNGZhLi4yODhkN2JlIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3Bjci5oCisrKyBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vcGNyLmgKQEAgLTMxLDcgKzMxLDcgQEAKIAogLyogSW4gb3JkZXIgdG8gY29tbW9uaXplIGFzIG11Y2ggb2YgdGhlIGltcGxlbWVudGF0aW9uIGFzCiAgKiBwb3NzaWJsZSwgd2UgdXNlIFBJQ0ggYXMgb3VyIGNvdW50ZXIuICBNb3N0bHkgdGhpcyBpcwotICogdG8gYWNjb21vZGF0ZSBOaWFnYXJhLTEgd2hpY2ggY2FuIG9ubHkgY291bnQgaW5zbiBjeWNsZXMKKyAqIHRvIGFjY29tbW9kYXRlIE5pYWdhcmEtMSB3aGljaCBjYW4gb25seSBjb3VudCBpbnNuIGN5Y2xlcwogICogaW4gUElDSC4KICAqLwogc3RhdGljIGlubGluZSB1NjQgcGljbF92YWx1ZSh1bnNpZ25lZCBpbnQgbm1pX2h6KQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wdHJhY2UuaCBiL2FyY2gvc3BhcmMvaW5jbHVkZS9hc20vcHRyYWNlLmgKaW5kZXggMzBiMGI3OS4uYzdhZDNmZSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9pbmNsdWRlL2FzbS9wdHJhY2UuaAorKysgYi9hcmNoL3NwYXJjL2luY2x1ZGUvYXNtL3B0cmFjZS5oCkBAIC0zMyw3ICszMyw3IEBACiAJICogdGhpbmdzIGxpa2UgImluIGEgc3lzdGVtIGNhbGwiIGV0Yy4gZm9yIGFuIGFyYml0cmF5CiAJICogcHJvY2Vzcy4KIAkgKgotCSAqIFRoZSBQVF9SRUdTX01BR0lDIGlzIGNob29zZW4gc3VjaCB0aGF0IGl0IGNhbiBiZQorCSAqIFRoZSBQVF9SRUdTX01BR0lDIGlzIGNob3NlbiBzdWNoIHRoYXQgaXQgY2FuIGJlCiAJICogbG9hZGVkIGNvbXBsZXRlbHkgdXNpbmcganVzdCBhIHNldGhpIGluc3RydWN0aW9uLgogCSAqLwogCXVuc2lnbmVkIGludCBtYWdpYzsKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL2VudHJ5LlMgYi9hcmNoL3NwYXJjL2tlcm5lbC9lbnRyeS5TCmluZGV4IDkwNmVlM2UuLjZkYTc4NGEgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL2VudHJ5LlMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvZW50cnkuUwpAQCAtODAxLDcgKzgwMSw3IEBACiAJLmdsb2JsCXZhY19od2ZsdXNoX3BhdGNoMV9vbiwgdmFjX2h3Zmx1c2hfcGF0Y2gyX29uCiAKIC8qCi0gKiBVZ2x5LCBidXQgd2UgY2FudCB1c2UgaGFyZHdhcmUgZmx1c2hpbmcgb24gdGhlIHN1bjQgYW5kIHdlJ2QgcmVxdWlyZQorICogVWdseSwgYnV0IHdlIGNhbid0IHVzZSBoYXJkd2FyZSBmbHVzaGluZyBvbiB0aGUgc3VuNCBhbmQgd2UnZCByZXF1aXJlCiAgKiB0d28gaW5zdHJ1Y3Rpb25zIChBbnRvbikKICAqLwogdmFjX2h3Zmx1c2hfcGF0Y2gxX29uOgkJYWRkY2MJJWw3LCAtUEFHRV9TSVpFLCAlbDcKQEAgLTg1MSw3ICs4NTEsNyBAQAogCSBzZXRoaQklaGkofigoMSA8PCBTVU40Q19SRUFMX1BHRElSX1NISUZUKSAtIDEpKSwgJWw0CiAKIAkvKiBJZiB0aGUga2VybmVsIHJlZmVyZW5jZXMgYSBidW0ga2VybmVsIHBvaW50ZXIsIG9yIGEgcHRlIHdoaWNoCi0JICogcG9pbnRzIHRvIGEgbm9uIGV4aXN0YW50IHBhZ2UgaW4gcmFtLCB3ZSB3aWxsIHJ1biB0aGlzIGNvZGUKKwkgKiBwb2ludHMgdG8gYSBub24gZXhpc3RlbnQgcGFnZSBpbiByYW0sIHdlIHdpbGwgcnVuIHRoaXMgY29kZQogCSAqIF9mb3JldmVyXyBhbmQgbG9jayB1cCB0aGUgbWFjaGluZSEhISEhIFNvIHdlIG11c3QgY2hlY2sgZm9yCiAJICogdGhpcyBjb25kaXRpb24sIHRoZSBBQ19TWU5DX0VSUiBiaXRzIGFyZSB3aGF0IHdlIG11c3QgZXhhbWluZS4KIAkgKiBBbHNvIGEgcGFyaXR5IGVycm9yIHdvdWxkIG1ha2UgdGhpcyBoYXBwZW4gYXMgd2VsbC4gIFNvIHdlIGp1c3QKZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL2hlYWRfNjQuUyBiL2FyY2gvc3BhcmMva2VybmVsL2hlYWRfNjQuUwppbmRleCBmOGYyMTA1Li5hYTU5NGM3IDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9oZWFkXzY0LlMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvaGVhZF82NC5TCkBAIC04NSw3ICs4NSw3IEBACiBzcGFyYzY0X2Jvb3Q6CiAJbW92CSVvNCwgJWw3CiAKLQkvKiBXZSBuZWVkIHRvIHJlbWFwIHRoZSBrZXJuZWwuICBVc2UgcG9zaXRpb24gaW5kZXBlbmRhbnQKKwkvKiBXZSBuZWVkIHRvIHJlbWFwIHRoZSBrZXJuZWwuICBVc2UgcG9zaXRpb24gaW5kZXBlbmRlbnQKIAkgKiBjb2RlIHRvIHJlbWFwIHVzIHRvIEtFUk5CQVNFLgogCSAqCiAJICogU0lMTyBjYW4gaW52b2tlIHVzIHdpdGggMzItYml0IGFkZHJlc3MgbWFza2luZyBlbmFibGVkLApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvaW5pdF90YXNrLmMgYi9hcmNoL3NwYXJjL2tlcm5lbC9pbml0X3Rhc2suYwppbmRleCA1ZmUzZDY1Li4zNWYxNDFhIDEwMDY0NAotLS0gYS9hcmNoL3NwYXJjL2tlcm5lbC9pbml0X3Rhc2suYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9pbml0X3Rhc2suYwpAQCAtMTUsNyArMTUsNyBAQAogCiAvKiAudGV4dCBzZWN0aW9uIGluIGhlYWQuUyBpcyBhbGlnbmVkIGF0IDhrIGJvdW5kYXJ5IGFuZCB0aGlzIGdldHMgbGlua2VkCiAgKiByaWdodCBhZnRlciB0aGF0IHNvIHRoYXQgdGhlIGluaXRfdGhyZWFkX3VuaW9uIGlzIGFsaWduZWQgcHJvcGVybHkgYXMgd2VsbC4KLSAqIElmIHRoaXMgaXMgbm90IGFsaWduZWQgb24gYSA4ayBib3VuZHJ5LCB0aGVuIHlvdSBzaG91bGQgY2hhbmdlIGNvZGUKKyAqIElmIHRoaXMgaXMgbm90IGFsaWduZWQgb24gYSA4ayBib3VuZGFyeSwgdGhlbiB5b3Ugc2hvdWxkIGNoYW5nZSBjb2RlCiAgKiBpbiBldHJhcC5TIHdoaWNoIGFzc3VtZXMgaXQuCiAgKi8KIHVuaW9uIHRocmVhZF91bmlvbiBpbml0X3RocmVhZF91bmlvbiBfX2luaXRfdGFza19kYXRhID0KZGlmZiAtLWdpdCBhL2FyY2gvc3BhcmMva2VybmVsL29mX2RldmljZV82NC5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvb2ZfZGV2aWNlXzY0LmMKaW5kZXggNjNjZDRlNS4uNWMxNDk2OCAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9rZXJuZWwvb2ZfZGV2aWNlXzY0LmMKKysrIGIvYXJjaC9zcGFyYy9rZXJuZWwvb2ZfZGV2aWNlXzY0LmMKQEAgLTQ1OSw3ICs0NTksNyBAQAogCQkgKgogCQkgKiBIYW5kbGUgdGhpcyBieSBkZWNpZGluZyB0aGF0LCBpZiB3ZSBkaWRuJ3QgZ2V0IGEKIAkJICogbWF0Y2ggaW4gdGhlIHBhcmVudCdzICdpbnRlcnJ1cHQtbWFwJywgYW5kIHRoZQotCQkgKiBwYXJlbnQgaXMgYW4gSVJRIHRyYW5zbGF0ZXIsIHRoZW4gdXNlIHRoZSBwYXJlbnQgYXMKKwkJICogcGFyZW50IGlzIGFuIElSUSB0cmFuc2xhdG9yLCB0aGVuIHVzZSB0aGUgcGFyZW50IGFzCiAJCSAqIG91ciBJUlEgY29udHJvbGxlci4KIAkJICovCiAJCWlmIChwcC0+aXJxX3RyYW5zKQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9rZXJuZWwvcGVyZl9ldmVudC5jIGIvYXJjaC9zcGFyYy9rZXJuZWwvcGVyZl9ldmVudC5jCmluZGV4IDc2MDU3ODYuLmVlODQyNmUgMTAwNjQ0Ci0tLSBhL2FyY2gvc3BhcmMva2VybmVsL3BlcmZfZXZlbnQuYworKysgYi9hcmNoL3NwYXJjL2tlcm5lbC9wZXJmX2V2ZW50LmMKQEAgLTEwMjcsNyArMTAyNyw3IEBACiAKIAkvKgogCSAqIElmIGdyb3VwIGV2ZW50cyBzY2hlZHVsaW5nIHRyYW5zYWN0aW9uIHdhcyBzdGFydGVkLAotCSAqIHNraXAgdGhlIHNjaGVkdWxhYmlsaXR5IHRlc3QgaGVyZSwgaXQgd2lsbCBiZSBwZWZvcm1lZAorCSAqIHNraXAgdGhlIHNjaGVkdWxhYmlsaXR5IHRlc3QgaGVyZSwgaXQgd2lsbCBiZSBwZXJmb3JtZWQKIAkgKiBhdCBjb21taXQgdGltZSgtPmNvbW1pdF90eG4pIGFzIGEgd2hvbGUKIAkgKi8KIAlpZiAoY3B1Yy0+Z3JvdXBfZmxhZyAmIFBFUkZfRVZFTlRfVFhOKQpkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9tYXRoLWVtdS9NYWtlZmlsZSBiL2FyY2gvc3BhcmMvbWF0aC1lbXUvTWFrZWZpbGUKaW5kZXggYjkwODVlYy4uODI1ZGJlZSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9tYXRoLWVtdS9NYWtlZmlsZQorKysgYi9hcmNoL3NwYXJjL21hdGgtZW11L01ha2VmaWxlCkBAIC0yLDcgKzIsNyBAQAogIyBNYWtlZmlsZSBmb3IgdGhlIEZQVSBpbnN0cnVjdGlvbiBlbXVsYXRpb24uCiAjCiAKLSMgc3VwcmVzcyBhbGwgd2FybmluZ3MgLSBhcyBtYXRoLmMgcHJvZHVjZXMgYSBsb3QhCisjIHN1cHByZXNzIGFsbCB3YXJuaW5ncyAtIGFzIG1hdGguYyBwcm9kdWNlcyBhIGxvdCEKIGNjZmxhZ3MteSA6PSAtdwogCiBvYmoteSAgICA6PSBtYXRoXyQoQklUUykubwpkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL0tjb25maWcgYi9hcmNoL3RpbGUvS2NvbmZpZwppbmRleCA2ZTJjZGQ1Li5lMzJiMGMyIDEwMDY0NAotLS0gYS9hcmNoL3RpbGUvS2NvbmZpZworKysgYi9hcmNoL3RpbGUvS2NvbmZpZwpAQCAtNTEsNyArNTEsNyBAQAogY29uZmlnIEdFTkVSSUNfQ0xPQ0tFVkVOVFMKIAlkZWZfYm9vbCB5CiAKLSMgRklYTUU6IHRpbGVneCBjYW4gaW1wbGVtZW50IGEgbW9yZSBlZmZpY2VudCByd3NlbS4KKyMgRklYTUU6IHRpbGVneCBjYW4gaW1wbGVtZW50IGEgbW9yZSBlZmZpY2llbnQgcndzZW0uCiBjb25maWcgUldTRU1fR0VORVJJQ19TUElOTE9DSwogCWRlZl9ib29sIHkKIApkaWZmIC0tZ2l0IGEvYXJjaC90aWxlL2luY2x1ZGUvaHYvZHJ2X3hnYmVfaW50Zi5oIGIvYXJjaC90aWxlL2luY2x1ZGUvaHYvZHJ2X3hnYmVfaW50Zi5oCmluZGV4IDE0NmU0N2QuLmYxMzE4OGEgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9pbmNsdWRlL2h2L2Rydl94Z2JlX2ludGYuaAorKysgYi9hcmNoL3RpbGUvaW5jbHVkZS9odi9kcnZfeGdiZV9pbnRmLmgKQEAgLTMxOSw3ICszMTksNyBAQAogICogICAgICAgICBpcyBhbiBlcnJvciBjb2RlLCBvciB6ZXJvIGlmIG5vIGVycm9yLiAgVGhlIHZhbDAgbWVtYmVyIGlzIHRoZQogICogICAgICAgICB1cGRhdGVkIHZhbHVlIG9mIHNlcW5vOyBpdCBoYXMgYmVlbiBpbmNyZW1lbnRlZCBieSAxIGZvciBlYWNoCiAgKiAgICAgICAgIHBhY2tldCBzZW50LiAgVGhhdCBpbmNyZW1lbnQgbWF5IGJlIGxlc3MgdGhhbiBuZW50cmllcyBpZiBhbgotICogICAgICAgICBlcnJvciBvY2N1cmVkLCBvciBpZiBzb21lIG9mIHRoZSBlbnRyaWVzIGluIHRoZSB2ZWN0b3IgY29udGFpbgorICogICAgICAgICBlcnJvciBvY2N1cnJlZCwgb3IgaWYgc29tZSBvZiB0aGUgZW50cmllcyBpbiB0aGUgdmVjdG9yIGNvbnRhaW4KICAqICAgICAgICAgaGFuZGxlcyBlcXVhbCB0byBORVRJT19QS1RfSEFORExFX05PTkUuICBUaGUgdmFsMSBtZW1iZXIgaXMgdGhlCiAgKiAgICAgICAgIHVwZGF0ZWQgdmFsdWUgb2YgbmVudHJpZXM7IGl0IGhhcyBiZWVuIGRlY3JlbWVudGVkIGJ5IDEgZm9yIGVhY2gKICAqICAgICAgICAgdmVjdG9yIGVudHJ5IHByb2Nlc3NlZC4gIEFnYWluLCB0aGF0IGRlY3JlbWVudCBtYXkgYmUgbGVzcyB0aGFuCmRpZmYgLS1naXQgYS9hcmNoL3RpbGUvaW5jbHVkZS9odi9oeXBlcnZpc29yLmggYi9hcmNoL3RpbGUvaW5jbHVkZS9odi9oeXBlcnZpc29yLmgKaW5kZXggMWI4YmYwMy4uZWU0MWJjYSAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL2luY2x1ZGUvaHYvaHlwZXJ2aXNvci5oCisrKyBiL2FyY2gvdGlsZS9pbmNsdWRlL2h2L2h5cGVydmlzb3IuaApAQCAtMTM0MCw3ICsxMzQwLDcgQEAKICAqICB0aGlzIG9wZXJhdGlvbi4gIElmIGFueSBwZXJtYW5lbnQgZGVsaXZlcnkgZXJyb3JzIHdlcmUgZW5jb3VudGVyZWQsCiAgKiAgdGhlIHJvdXRpbmUgcmV0dXJucyBIVl9FUkVDSVAuICBJbiB0aGUgZXZlbnQgb2YgcGVybWFuZW50IGRlbGl2ZXJ5CiAgKiAgZXJyb3JzLCBpdCBtYXkgYmUgdGhlIGNhc2UgdGhhdCBkZWxpdmVyeSB3YXMgbm90IGF0dGVtcHRlZCB0byBhbGwKLSAqICByZWNpcGllbnRzOyBpZiBhbnkgbWVzc2FnZXMgd2VyZSBzdWNjZXNmdWxseSBkZWxpdmVyZWQsIGhvd2V2ZXIsCisgKiAgcmVjaXBpZW50czsgaWYgYW55IG1lc3NhZ2VzIHdlcmUgc3VjY2Vzc2Z1bGx5IGRlbGl2ZXJlZCwgaG93ZXZlciwKICAqICByZWNpcGllbnRzJyBzdGF0ZSB2YWx1ZXMgd2lsbCBiZSB1cGRhdGVkIGFwcHJvcHJpYXRlbHkuCiAgKgogICogIEl0IGlzIGV4cGxpY2l0bHkgbGVnYWwgdG8gc3BlY2lmeSBhIHJlY2lwaWVudCBzdHJ1Y3R1cmUgd2hvc2Ugc3RhdGUKQEAgLTEzNTksNyArMTM1OSw3IEBACiAgKiAgbmV2ZXIgY2FsbCBodl9yZWNlaXZlX21lc3NhZ2UsIG9yIGNvdWxkIHJlZ2lzdGVyIGEgZGlmZmVyZW50IHN0YXRlCiAgKiAgYnVmZmVyLCBsb3NpbmcgdGhlIG1lc3NhZ2UuCiAgKgotICogIFNwZWNpZml5aW5nIHRoZSBzYW1lIHJlY2lwaWVudCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgcmVjaXBpZW50IGxpc3QKKyAqICBTcGVjaWZ5aW5nIHRoZSBzYW1lIHJlY2lwaWVudCBtb3JlIHRoYW4gb25jZSBpbiB0aGUgcmVjaXBpZW50IGxpc3QKICAqICBpcyBhbiBlcnJvciwgd2hpY2ggd2lsbCBub3QgcmVzdWx0IGluIGFuIGVycm9yIHJldHVybiBidXQgd2hpY2ggbWF5CiAgKiAgb3IgbWF5IG5vdCByZXN1bHQgaW4gbW9yZSB0aGFuIG9uZSBtZXNzYWdlIGJlaW5nIGRlbGl2ZXJlZCB0byB0aGUKICAqICByZWNpcGllbnQgdGlsZS4KZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9rZXJuZWwvcGNpLmMgYi9hcmNoL3RpbGUva2VybmVsL3BjaS5jCmluZGV4IGExZWUyNWIuLmVhMzhmMGMgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9rZXJuZWwvcGNpLmMKKysrIGIvYXJjaC90aWxlL2tlcm5lbC9wY2kuYwpAQCAtMzYsNyArMzYsNyBAQAogICogSW5pdGlhbGl6YXRpb24gZmxvdyBhbmQgcHJvY2VzcwogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKLSAqIFRoaXMgZmlsZXMgY29udGFpbmVzIHRoZSByb3V0aW5lcyB0byBzZWFyY2ggZm9yIFBDSSBidXNlcywKKyAqIFRoaXMgZmlsZXMgY29udGFpbnMgdGhlIHJvdXRpbmVzIHRvIHNlYXJjaCBmb3IgUENJIGJ1c2VzLAogICogZW51bWVyYXRlIHRoZSBidXNlcywgYW5kIGNvbmZpZ3VyZSBhbnkgYXR0YWNoZWQgZGV2aWNlcy4KICAqCiAgKiBUaGVyZSBhcmUgdHdvIGVudHJ5IHBvaW50cyBoZXJlOgpAQCAtNTE5LDcgKzUxOSw3IEBACiAKIAogLyoKLSAqIFNlZSB0aWxlX2NmZ19yZWFkKCkgZm9yIHJlbGV2ZW50IGNvbW1lbnRzLgorICogU2VlIHRpbGVfY2ZnX3JlYWQoKSBmb3IgcmVsZXZhbnQgY29tbWVudHMuCiAgKiBOb3RlIHRoYXQgInZhbCIgaXMgdGhlIHZhbHVlIHRvIHdyaXRlLCBub3QgYSBwb2ludGVyIHRvIHRoYXQgdmFsdWUuCiAgKi8KIHN0YXRpYyBpbnQgX19kZXZpbml0IHRpbGVfY2ZnX3dyaXRlKHN0cnVjdCBwY2lfYnVzICpidXMsCmRpZmYgLS1naXQgYS9hcmNoL3RpbGUvbW0vZmF1bHQuYyBiL2FyY2gvdGlsZS9tbS9mYXVsdC5jCmluZGV4IDc1OGY1OTcuLjUxZjg2NjMgMTAwNjQ0Ci0tLSBhL2FyY2gvdGlsZS9tbS9mYXVsdC5jCisrKyBiL2FyY2gvdGlsZS9tbS9mYXVsdC5jCkBAIC0yOTAsNyArMjkwLDcgQEAKIAkvKgogCSAqIEVhcmx5IG9uLCB3ZSBuZWVkIHRvIGNoZWNrIGZvciBtaWdyYXRpbmcgUFRFIGVudHJpZXM7CiAJICogc2VlIGhvbWVjYWNoZS5jLiAgSWYgd2UgZmluZCBhIG1pZ3JhdGluZyBQVEUsIHdlIHdhaXQgdW50aWwKLQkgKiB0aGUgYmFja2luZyBwYWdlIGNsYWltcyB0byBiZSBkb25lIG1pZ3JhdGluZywgdGhlbiB3ZSBwcm9jZWRlLgorCSAqIHRoZSBiYWNraW5nIHBhZ2UgY2xhaW1zIHRvIGJlIGRvbmUgbWlncmF0aW5nLCB0aGVuIHdlIHByb2NlZWQuCiAJICogRm9yIGtlcm5lbCBQVEVzLCB3ZSByZXdyaXRlIHRoZSBQVEUgYW5kIHJldHVybiBhbmQgcmV0cnkuCiAJICogT3RoZXJ3aXNlLCB3ZSB0cmVhdCB0aGUgZmF1bHQgbGlrZSBhIG5vcm1hbCAibm8gUFRFIiBmYXVsdCwKIAkgKiByYXRoZXIgdGhhbiB0cnlpbmcgdG8gcGF0Y2ggdXAgdGhlIGV4aXN0aW5nIFBURS4KZGlmZiAtLWdpdCBhL2FyY2gvdGlsZS9tbS9odWdldGxicGFnZS5jIGIvYXJjaC90aWxlL21tL2h1Z2V0bGJwYWdlLmMKaW5kZXggMjAxYTU4Mi4uNDJjZmNiYSAxMDA2NDQKLS0tIGEvYXJjaC90aWxlL21tL2h1Z2V0bGJwYWdlLmMKKysrIGIvYXJjaC90aWxlL21tL2h1Z2V0bGJwYWdlLmMKQEAgLTIxOSw3ICsyMTksNyBAQAogCWlmIChtbS0+ZnJlZV9hcmVhX2NhY2hlIDwgbGVuKQogCQlnb3RvIGZhaWw7CiAKLQkvKiBlaXRoZXIgbm8gYWRkcmVzcyByZXF1ZXN0ZWQgb3IgY2FudCBmaXQgaW4gcmVxdWVzdGVkIGFkZHJlc3MgaG9sZSAqLworCS8qIGVpdGhlciBubyBhZGRyZXNzIHJlcXVlc3RlZCBvciBjYW4ndCBmaXQgaW4gcmVxdWVzdGVkIGFkZHJlc3MgaG9sZSAqLwogCWFkZHIgPSAobW0tPmZyZWVfYXJlYV9jYWNoZSAtIGxlbikgJiBodWdlX3BhZ2VfbWFzayhoKTsKIAlkbyB7CiAJCS8qCmRpZmYgLS1naXQgYS9hcmNoL3VtL0tjb25maWcubmV0IGIvYXJjaC91bS9LY29uZmlnLm5ldAppbmRleCA5ZTlhNGFhLi4zMTYwYjFhIDEwMDY0NAotLS0gYS9hcmNoL3VtL0tjb25maWcubmV0CisrKyBiL2FyY2gvdW0vS2NvbmZpZy5uZXQKQEAgLTE4Niw3ICsxODYsNyBAQAogICAgICAgICBvdGhlciB0cmFuc3BvcnRzLCBTTGlSUCB3b3JrcyB3aXRob3V0IHRoZSBuZWVkIG9mIHJvb3QgbGV2ZWwKICAgICAgICAgcHJpdmxlZ2VzLCBzZXR1aWQgYmluYXJpZXMsIG9yIFNMSVAgZGV2aWNlcyBvbiB0aGUgaG9zdC4gIFRoaXMKICAgICAgICAgYWxzbyBtZWFucyBub3QgZXZlcnkgdHlwZSBvZiBjb25uZWN0aW9uIGlzIHBvc3NpYmxlLCBidXQgbW9zdAotICAgICAgICBzaXR1YXRpb25zIGNhbiBiZSBhY2NvbW9kYXRlZCB3aXRoIGNhcmVmdWxseSBjcmFmdGVkIHNsaXJwCisgICAgICAgIHNpdHVhdGlvbnMgY2FuIGJlIGFjY29tbW9kYXRlZCB3aXRoIGNhcmVmdWxseSBjcmFmdGVkIHNsaXJwCiAgICAgICAgIGNvbW1hbmRzIHRoYXQgY2FuIGJlIHBhc3NlZCBhbG9uZyBhcyBwYXJ0IG9mIHRoZSBuZXR3b3JrIGRldmljZSdzCiAgICAgICAgIHNldHVwIHN0cmluZy4gIFRoZSBlZmZlY3Qgb2YgdGhpcyB0cmFuc3BvcnQgb24gdGhlIFVNTCBpcyBzaW1pbGFyCiAgICAgICAgIHRoYXQgb2YgYSBob3N0IGJlaGluZCBhIGZpcmV3YWxsIHRoYXQgbWFzcXVlcmFkZXMgYWxsIG5ldHdvcmsKZGlmZiAtLWdpdCBhL2FyY2gvdW5pY29yZTMyL2luY2x1ZGUvbWFjaC9yZWdzLXVtYWwuaCBiL2FyY2gvdW5pY29yZTMyL2luY2x1ZGUvbWFjaC9yZWdzLXVtYWwuaAppbmRleCA4ODViYjYyLi5hYTIyZGY3IDEwMDY0NAotLS0gYS9hcmNoL3VuaWNvcmUzMi9pbmNsdWRlL21hY2gvcmVncy11bWFsLmgKKysrIGIvYXJjaC91bmljb3JlMzIvaW5jbHVkZS9tYWNoL3JlZ3MtdW1hbC5oCkBAIC01Miw3ICs1Miw3IEBACiAgKi8KICNkZWZpbmUgVU1BTF9NSUlTVEFUVVMJCShQS1VOSVRZX1VNQUxfQkFTRSArIDB4MDAzMCkKIC8qCi0gKiBNSUkgTWFuYWdtZW50IEluZGljYXRvciBVTUFMX01JSUlEQ1QKKyAqIE1JSSBNYW5hZ2VtZW50IEluZGljYXRvciBVTUFMX01JSUlEQ1QKICAqLwogI2RlZmluZSBVTUFMX01JSUlEQ1QJCShQS1VOSVRZX1VNQUxfQkFTRSArIDB4MDAzNCkKIC8qCkBAIC05MSw3ICs5MSw3IEBACiAjZGVmaW5lIFVNQUxfRklGT1JBTTYJCShQS1VOSVRZX1VNQUxfQkFTRSArIDB4MDA3OCkKICNkZWZpbmUgVU1BTF9GSUZPUkFNNwkJKFBLVU5JVFlfVU1BTF9CQVNFICsgMHgwMDdjKQogCi0vKiBNQUhCRSBNT0RVRUwgT0YgVU1BTCAqLworLyogTUFIQkUgTU9EVUxFIE9GIFVNQUwgKi8KIC8qIFVNQUwncyBNQUhCRSBtb2R1bGUgaW50ZXJmYWNlcyB0byB0aGUgaG9zdCBzeXN0ZW0gdGhyb3VnaCAzMi1iaXQgQUhCIE1hc3RlcgogICogYW5kIFNsYXZlIHBvcnRzLlJlZ2lzdGVycyB3aXRoaW4gdGhlIE0tQUhCRSBwcm92aWRlIENvbnRyb2wgYW5kIFN0YXR1cwogICogaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGVzZSB0cmFuc2ZlcnMuCmRpZmYgLS1naXQgYS9hcmNoL3VuaWNvcmUzMi9rZXJuZWwvaGVhZC5TIGIvYXJjaC91bmljb3JlMzIva2VybmVsL2hlYWQuUwppbmRleCA5MjI1NWYzLi44Y2FmMzIyIDEwMDY0NAotLS0gYS9hcmNoL3VuaWNvcmUzMi9rZXJuZWwvaGVhZC5TCisrKyBiL2FyY2gvdW5pY29yZTMyL2tlcm5lbC9oZWFkLlMKQEAgLTE2NCw3ICsxNjQsNyBAQAogRU5EUFJPQyhzdGV4dCkKIAogLyoKLSAqIEVuYWJsZSB0aGUgTU1VLiAgVGhpcyBjb21wbGV0ZWx5IGNoYW5nZXMgdGhlIHN0dWN0dXJlIG9mIHRoZSB2aXNpYmxlCisgKiBFbmFibGUgdGhlIE1NVS4gIFRoaXMgY29tcGxldGVseSBjaGFuZ2VzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHZpc2libGUKICAqIG1lbW9yeSBzcGFjZS4gIFlvdSB3aWxsIG5vdCBiZSBhYmxlIHRvIHRyYWNlIGV4ZWN1dGlvbiB0aHJvdWdoIHRoaXMuCiAgKgogICogIHIwICA9IGNwIzAgY29udHJvbCByZWdpc3RlcgpkaWZmIC0tZ2l0IGEvYXJjaC94dGVuc2EvaW5jbHVkZS9hc20vZG1hLmggYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9kbWEuaAppbmRleCAxMzdjYTM5Li5iYjA5OWEzIDEwMDY0NAotLS0gYS9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9kbWEuaAorKysgYi9hcmNoL3h0ZW5zYS9pbmNsdWRlL2FzbS9kbWEuaApAQCAtMzcsNyArMzcsNyBAQAogICoJdGhlIHNpemUgb2YgdGhlIHN0YXRpY2FsbHkgbWFwcGVkIGtlcm5lbCBzZWdtZW50CiAgKgkoWENIQUxfS1NFR197Q0FDSEVELEJZUEFTU31fU0laRSksIGllLiAxMjggTUIuCiAgKgotICogTk9URTogV2hlbiB0aGUgZW50aXJlIEtTRUcgYXJlYSBpcyBETUEgY2FwYWJsZSwgd2Ugc3Vic3RyYWN0CisgKiBOT1RFOiBXaGVuIHRoZSBlbnRpcmUgS1NFRyBhcmVhIGlzIERNQSBjYXBhYmxlLCB3ZSBzdWJ0cmFjdAogICoJb25lIGZyb20gdGhlIG1heCBhZGRyZXNzIHNvIHRoYXQgdGhlIHZpcnRfdG9fcGh5cygpIG1hY3JvCiAgKgl3b3JrcyBjb3JyZWN0bHkgb24gdGhlIGFkZHJlc3MgKG90aGVyd2lzZSB0aGUgYWRkcmVzcwogICoJZW50ZXJzIGFub3RoZXIgYXJlYSwgYW5kIHZpcnRfdG9fcGh5cygpIG1heSBub3QgcmV0dXJuCmRpZmYgLS1naXQgYS9hcmNoL3h0ZW5zYS9rZXJuZWwvZW50cnkuUyBiL2FyY2gveHRlbnNhL2tlcm5lbC9lbnRyeS5TCmluZGV4IDVmZDAxZjYuLjYyMjNmMzMgMTAwNjQ0Ci0tLSBhL2FyY2gveHRlbnNhL2tlcm5lbC9lbnRyeS5TCisrKyBiL2FyY2gveHRlbnNhL2tlcm5lbC9lbnRyeS5TCkBAIC0xMDI2LDcgKzEwMjYsNyBAQAogICogVFJZCSBhZGRzIGFuIGVudHJ5IHRvIHRoZSBfX2V4X3RhYmxlIGZpeHVwIHRhYmxlIGZvciB0aGUgaW1tZWRpYXRlbHkKICAqCSBmb2xsb3dpbmcgaW5zdHJ1Y3Rpb24uCiAgKgotICogQ0FUQ0ggY2F0Y2hlcyBhbnkgZXhjZXB0aW9uIHRoYXQgb2NjdXJyZWQgYXQgb25lIG9mIHRoZSBwcmVjZWVkaW5nIFRSWQorICogQ0FUQ0ggY2F0Y2hlcyBhbnkgZXhjZXB0aW9uIHRoYXQgb2NjdXJyZWQgYXQgb25lIG9mIHRoZSBwcmVjZWRpbmcgVFJZCiAgKiAgICAgICBzdGF0ZW1lbnRzIGFuZCBjb250aW51ZXMgZnJvbSB0aGVyZQogICoKICAqIFVzYWdlIFRSWQlsMzJpCWEwLCBhMSwgMApkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNncm91cC5jIGIvYmxvY2svYmxrLWNncm91cC5jCmluZGV4IDJiZWY1NzAuLmYwNjA1YWIgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay1jZ3JvdXAuYworKysgYi9ibG9jay9ibGstY2dyb3VwLmMKQEAgLTg2OCw3ICs4NjgsNyBAQAogfQogCiAvKgotICogU29tZSBydWxlcy92YWx1ZXMgaW4gYmxrZyBoYXZlIGNoYW5nZWQuIFByb3BvZ2F0ZSB0aG9zZSB0byByZXNwZWN0aXZlCisgKiBTb21lIHJ1bGVzL3ZhbHVlcyBpbiBibGtnIGhhdmUgY2hhbmdlZC4gUHJvcGFnYXRlIHRob3NlIHRvIHJlc3BlY3RpdmUKICAqIHBvbGljaWVzLgogICovCiBzdGF0aWMgdm9pZCBibGtpb191cGRhdGVfYmxrZ19wb2xpY3koc3RydWN0IGJsa2lvX2Nncm91cCAqYmxrY2csCkBAIC05MDMsNyArOTAzLDcgQEAKIH0KIAogLyoKLSAqIEEgcG9saWN5IG5vZGUgcnVsZSBoYXMgYmVlbiB1cGRhdGVkLiBQcm9wb2dhdGUgdGhpcyB1cGRhdGUgdG8gYWxsIHRoZQorICogQSBwb2xpY3kgbm9kZSBydWxlIGhhcyBiZWVuIHVwZGF0ZWQuIFByb3BhZ2F0ZSB0aGlzIHVwZGF0ZSB0byBhbGwgdGhlCiAgKiBibG9jayBncm91cHMgd2hpY2ggbWlnaHQgYmUgYWZmZWN0ZWQgYnkgdGhpcyB1cGRhdGUuCiAgKi8KIHN0YXRpYyB2b2lkIGJsa2lvX3VwZGF0ZV9wb2xpY3lfbm9kZV9ibGtnKHN0cnVjdCBibGtpb19jZ3JvdXAgKmJsa2NnLApkaWZmIC0tZ2l0IGEvYmxvY2svYmxrLWNvcmUuYyBiL2Jsb2NrL2Jsay1jb3JlLmMKaW5kZXggNzI1MDkxZC4uOTBmMjJjYyAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLWNvcmUuYworKysgYi9ibG9jay9ibGstY29yZS5jCkBAIC0xMTg0LDcgKzExODQsNyBAQAogCiAvKgogICogQXR0ZW1wdHMgdG8gbWVyZ2Ugd2l0aCB0aGUgcGx1Z2dlZCBsaXN0IGluIHRoZSBjdXJyZW50IHByb2Nlc3MuIFJldHVybnMKLSAqIHRydWUgaWYgbWVyZ2Ugd2FzIHN1Y2Nlc2Z1bCwgb3RoZXJ3aXNlIGZhbHNlLgorICogdHJ1ZSBpZiBtZXJnZSB3YXMgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGZhbHNlLgogICovCiBzdGF0aWMgYm9vbCBhdHRlbXB0X3BsdWdfbWVyZ2Uoc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCByZXF1ZXN0X3F1ZXVlICpxLAogCQkJICAgICAgIHN0cnVjdCBiaW8gKmJpbykKZGlmZiAtLWdpdCBhL2Jsb2NrL2Jsay10aHJvdHRsZS5jIGIvYmxvY2svYmxrLXRocm90dGxlLmMKaW5kZXggNmM5OGNmZS4uMDQ3NWEyMiAxMDA2NDQKLS0tIGEvYmxvY2svYmxrLXRocm90dGxlLmMKKysrIGIvYmxvY2svYmxrLXRocm90dGxlLmMKQEAgLTkxNiw3ICs5MTYsNyBAQAogLyoKICAqIEZvciBhbGwgdXBkYXRlIGZ1bmN0aW9ucywga2V5IHNob3VsZCBiZSBhIHZhbGlkIHBvaW50ZXIgYmVjYXVzZSB0aGVzZQogICogdXBkYXRlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHVuZGVyIGJsa2NnX2xvY2ssIHRoYXQgbWVhbnMsIGJsa2cgaXMKLSAqIHZhbGlkIGFuZCBpbiB0dXJuIGtleSBpcyB2YWxpZC4gcXVldWUgZXhpdCBwYXRoIGNhbiBub3QgcmFjZSBiZWN1YXNlCisgKiB2YWxpZCBhbmQgaW4gdHVybiBrZXkgaXMgdmFsaWQuIHF1ZXVlIGV4aXQgcGF0aCBjYW4gbm90IHJhY2UgYmVjYXVzZQogICogb2YgYmxrY2dfbG9jawogICoKICAqIENhbiBub3QgdGFrZSBxdWV1ZSBsb2NrIGluIHVwZGF0ZSBmdW5jdGlvbnMgYXMgcXVldWUgbG9jayB1bmRlciBibGtjZ19sb2NrCmRpZmYgLS1naXQgYS9ibG9jay9ibGsuaCBiL2Jsb2NrL2Jsay5oCmluZGV4IGM4ZGIzNzEuLjYxMjYzNDYgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2Jsay5oCisrKyBiL2Jsb2NrL2Jsay5oCkBAIC0zMiw3ICszMiw3IEBACiAKIC8qCiAgKiBFSCB0aW1lciBhbmQgSU8gY29tcGxldGlvbiB3aWxsIGJvdGggYXR0ZW1wdCB0byAnZ3JhYicgdGhlIHJlcXVlc3QsIG1ha2UKLSAqIHN1cmUgdGhhdCBvbmx5IG9uZSBvZiB0aGVtIHN1Y2VlZHMKKyAqIHN1cmUgdGhhdCBvbmx5IG9uZSBvZiB0aGVtIHN1Y2NlZWRzCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IGJsa19tYXJrX3JxX2NvbXBsZXRlKHN0cnVjdCByZXF1ZXN0ICpycSkKIHsKZGlmZiAtLWdpdCBhL2Jsb2NrL2NmcS1pb3NjaGVkLmMgYi9ibG9jay9jZnEtaW9zY2hlZC5jCmluZGV4IDc3ODUxNjkuLjNiZTg4MWUgMTAwNjQ0Ci0tLSBhL2Jsb2NrL2NmcS1pb3NjaGVkLmMKKysrIGIvYmxvY2svY2ZxLWlvc2NoZWQuYwpAQCAtODg4LDcgKzg4OCw3IEBACiAJLyoKIAkgKiBDdXJyZW50bHkgcHV0IHRoZSBncm91cCBhdCB0aGUgZW5kLiBMYXRlciBpbXBsZW1lbnQgc29tZXRoaW5nCiAJICogc28gdGhhdCBncm91cHMgZ2V0IGxlc3NlciB2dGltZSBiYXNlZCBvbiB0aGVpciB3ZWlnaHRzLCBzbyB0aGF0Ci0JICogaWYgZ3JvdXAgZG9lcyBub3QgbG9vc2UgYWxsIGlmIGl0IHdhcyBub3QgY29udGlub3VzbHkgYmFja2xvZ2dlZC4KKwkgKiBpZiBncm91cCBkb2VzIG5vdCBsb29zZSBhbGwgaWYgaXQgd2FzIG5vdCBjb250aW51b3VzbHkgYmFja2xvZ2dlZC4KIAkgKi8KIAluID0gcmJfbGFzdCgmc3QtPnJiKTsKIAlpZiAobikgewpkaWZmIC0tZ2l0IGEvYmxvY2svZ2VuaGQuYyBiL2Jsb2NrL2dlbmhkLmMKaW5kZXggYzkxYTJkYS4uYjM2NGJkMCAxMDA2NDQKLS0tIGEvYmxvY2svZ2VuaGQuYworKysgYi9ibG9jay9nZW5oZC5jCkBAIC03MzksNyArNzM5LDcgQEAKIAogCQkvKgogCQkgKiBEb24ndCBzaG93IGVtcHR5IGRldmljZXMgb3IgdGhpbmdzIHRoYXQgaGF2ZSBiZWVuCi0JCSAqIHN1cnByZXNzZWQKKwkJICogc3VwcHJlc3NlZAogCQkgKi8KIAkJaWYgKGdldF9jYXBhY2l0eShkaXNrKSA9PSAwIHx8CiAJCSAgICAoZGlzay0+ZmxhZ3MgJiBHRU5IRF9GTF9TVVBQUkVTU19QQVJUSVRJT05fSU5GTykpCmRpZmYgLS1naXQgYS9jcnlwdG8vYW5zaV9jcHJuZy5jIGIvY3J5cHRvL2Fuc2lfY3BybmcuYwppbmRleCAyYmMzMzIxLi5mZmEwMjQ1IDEwMDY0NAotLS0gYS9jcnlwdG8vYW5zaV9jcHJuZy5jCisrKyBiL2NyeXB0by9hbnNpX2Nwcm5nLmMKQEAgLTgzLDcgKzgzLDcgQEAKIH0KIC8qCiAgKiBSZXR1cm5zIERFRkFVTFRfQkxLX1NaIGJ5dGVzIG9mIHJhbmRvbSBkYXRhIHBlciBjYWxsCi0gKiByZXR1cm5zIDAgaWYgZ2VuZXJhdGlvbiBzdWNjZWRlZCwgPDAgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcKKyAqIHJldHVybnMgMCBpZiBnZW5lcmF0aW9uIHN1Y2NlZWRlZCwgPDAgaWYgc29tZXRoaW5nIHdlbnQgd3JvbmcKICAqLwogc3RhdGljIGludCBfZ2V0X21vcmVfcHJuZ19ieXRlcyhzdHJ1Y3QgcHJuZ19jb250ZXh0ICpjdHgsIGludCBjb250X3Rlc3QpCiB7CmRpZmYgLS1naXQgYS9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfeG9yLmMgYi9jcnlwdG8vYXN5bmNfdHgvYXN5bmNfeG9yLmMKaW5kZXggMDc5YWU4Yy4uYmMyODMzNyAxMDA2NDQKLS0tIGEvY3J5cHRvL2FzeW5jX3R4L2FzeW5jX3hvci5jCisrKyBiL2NyeXB0by9hc3luY190eC9hc3luY194b3IuYwpAQCAtOTQsNyArOTQsNyBAQAogCQlpZiAodW5saWtlbHkoIXR4KSkKIAkJCWFzeW5jX3R4X3F1aWVzY2UoJnN1Ym1pdC0+ZGVwZW5kX3R4KTsKIAotCQkvKiBzcGluIHdhaXQgZm9yIHRoZSBwcmVjZWVkaW5nIHRyYW5zYWN0aW9ucyB0byBjb21wbGV0ZSAqLworCQkvKiBzcGluIHdhaXQgZm9yIHRoZSBwcmVjZWRpbmcgdHJhbnNhY3Rpb25zIHRvIGNvbXBsZXRlICovCiAJCXdoaWxlICh1bmxpa2VseSghdHgpKSB7CiAJCQlkbWFfYXN5bmNfaXNzdWVfcGVuZGluZyhjaGFuKTsKIAkJCXR4ID0gZG1hLT5kZXZpY2VfcHJlcF9kbWFfeG9yKGNoYW4sIGRtYV9kZXN0LApkaWZmIC0tZ2l0IGEvY3J5cHRvL2dmMTI4bXVsLmMgYi9jcnlwdG8vZ2YxMjhtdWwuYwppbmRleCBhOTBkMjYwLi5kZjM1ZTRjIDEwMDY0NAotLS0gYS9jcnlwdG8vZ2YxMjhtdWwuYworKysgYi9jcnlwdG8vZ2YxMjhtdWwuYwpAQCAtODksNyArODksNyBAQAogfQogCiAvKglHaXZlbiB0aGUgdmFsdWUgaSBpbiAwLi4yNTUgYXMgdGhlIGJ5dGUgb3ZlcmZsb3cgd2hlbiBhIGZpZWxkIGVsZW1lbnQKLSAgICBpbiBHSEFTSCBpcyBtdWx0aXBsZWQgYnkgeF44LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZXMgdGhhdAorICAgIGluIEdIQVNIIGlzIG11bHRpcGxpZWQgYnkgeF44LCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIHRoZSB2YWx1ZXMgdGhhdAogICAgIGFyZSBnZW5lcmF0ZWQgaW4gdGhlIGxvIDE2LWJpdCB3b3JkIG9mIHRoZSBmaWVsZCB2YWx1ZSBieSBhcHBseWluZyB0aGUKICAgICBtb2R1bGFyIHBvbHlub21pYWwuIFRoZSB2YWx1ZXMgbG9fYnl0ZSBhbmQgaGlfYnl0ZSBhcmUgcmV0dXJuZWQgdmlhIHRoZQogICAgIG1hY3JvIHhwX2Z1bihsb19ieXRlLCBoaV9ieXRlKSBzbyB0aGF0IHRoZSB2YWx1ZXMgY2FuIGJlIGFzc2VtYmxlZCBpbnRvCmRpZmYgLS1naXQgYS9jcnlwdG8vdm1hYy5jIGIvY3J5cHRvL3ZtYWMuYwppbmRleCAwOTk5Mjc0Li5mMzVmZjhhIDEwMDY0NAotLS0gYS9jcnlwdG8vdm1hYy5jCisrKyBiL2NyeXB0by92bWFjLmMKQEAgLTk1LDcgKzk1LDcgQEAKIAogLyoKICAqIEZvciBoaWdoZXN0IHBlcmZvcm1hbmNlIHRoZSBMMSBOSCBhbmQgTDIgcG9seW5vbWlhbCBoYXNoZXMgc2hvdWxkIGJlCi0gKiBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygb25lJ3MgdGFyZ2V0IGFyY2hpdGVjaHR1cmUuCisgKiBjYXJlZnVsbHkgaW1wbGVtZW50ZWQgdG8gdGFrZSBhZHZhbnRhZ2Ugb2Ygb25lJ3MgdGFyZ2V0IGFyY2hpdGVjdHVyZS4KICAqIEhlcmUgdGhlc2UgdHdvIGhhc2ggZnVuY3Rpb25zIGFyZSBkZWZpbmVkIG11bHRpcGxlIHRpbWU7IG9uY2UgZm9yCiAgKiA2NC1iaXQgYXJjaGl0ZWN0dXJlcywgb25jZSBmb3IgMzItYml0IFNTRTIgYXJjaGl0ZWN0dXJlcywgYW5kIG9uY2UKICAqIGZvciB0aGUgcmVzdCAoMzItYml0KSBhcmNoaXRlY3R1cmVzLgpkaWZmIC0tZ2l0IGEvY3J5cHRvL3h0cy5jIGIvY3J5cHRvL3h0cy5jCmluZGV4IDU1NWVjYWEuLjg1MTcwNTQgMTAwNjQ0Ci0tLSBhL2NyeXB0by94dHMuYworKysgYi9jcnlwdG8veHRzLmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JLyogd2UgbmVlZCB0d28gY2lwaGVyIGluc3RhbmNlczogb25lIHRvIGNvbXB1dGUgdGhlIGluaXRhbCAndHdlYWsnCisJLyogd2UgbmVlZCB0d28gY2lwaGVyIGluc3RhbmNlczogb25lIHRvIGNvbXB1dGUgdGhlIGluaXRpYWwgJ3R3ZWFrJwogCSAqIGJ5IGVuY3J5cHRpbmcgdGhlIElWICh1c3VhbGx5IHRoZSAncGxhaW4nIGl2KSBhbmQgdGhlIG90aGVyCiAJICogb25lIHRvIGVuY3J5cHQgYW5kIGRlY3J5cHQgdGhlIGRhdGEgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jIGIvZHJpdmVycy9hY3BpL2FwZWkvZ2hlcy5jCmluZGV4IGQxZDQ4NGQuLmY3MDNiMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9hcGVpL2doZXMuYworKysgYi9kcml2ZXJzL2FjcGkvYXBlaS9naGVzLmMKQEAgLTI0MSw3ICsyNDEsNyBAQAogCWNhc2UgQ1BFUl9TRVZfRkFUQUw6CiAJCXJldHVybiBHSEVTX1NFVl9QQU5JQzsKIAlkZWZhdWx0OgotCQkvKiBVbmtvd24sIGdvIHBhbmljICovCisJCS8qIFVua25vd24sIGdvIHBhbmljICovCiAJCXJldHVybiBHSEVTX1NFVl9QQU5JQzsKIAl9CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvcHJvY2Vzc29yX3Rocm90dGxpbmcuYyBiL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfdGhyb3R0bGluZy5jCmluZGV4IGZhODRlOTcuLmFkMzUwMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfdGhyb3R0bGluZy5jCisrKyBiL2RyaXZlcnMvYWNwaS9wcm9jZXNzb3JfdGhyb3R0bGluZy5jCkBAIC0xMTY0LDcgKzExNjQsNyBAQAogCQkJICovCiAJCQlpZiAoIW1hdGNoX3ByLT5mbGFncy50aHJvdHRsaW5nKSB7CiAJCQkJQUNQSV9ERUJVR19QUklOVCgoQUNQSV9EQl9JTkZPLAotCQkJCQkiVGhyb3R0bGluZyBDb250cm9sbCBpcyB1bnN1cHBvcnRlZCAiCisJCQkJCSJUaHJvdHRsaW5nIENvbnRyb2wgaXMgdW5zdXBwb3J0ZWQgIgogCQkJCQkib24gQ1BVICVkXG4iLCBpKSk7CiAJCQkJY29udGludWU7CiAJCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FjcGkvdmlkZW8uYyBiL2RyaXZlcnMvYWNwaS92aWRlby5jCmluZGV4IDMxZTllMTAuLmVjNTc0ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYWNwaS92aWRlby5jCisrKyBiL2RyaXZlcnMvYWNwaS92aWRlby5jCkBAIC0xMzU0LDcgKzEzNTQsNyBAQAogCQlzdGF0dXMgPSBhY3BpX3ZpZGVvX2J1c19nZXRfb25lX2RldmljZShkZXYsIHZpZGVvKTsKIAkJaWYgKEFDUElfRkFJTFVSRShzdGF0dXMpKSB7CiAJCQlwcmludGsoS0VSTl9XQVJOSU5HIFBSRUZJWAotCQkJCQkiQ2FudCBhdHRhY2ggZGV2aWNlXG4iKTsKKwkJCQkJIkNhbid0IGF0dGFjaCBkZXZpY2VcbiIpOwogCQkJY29udGludWU7CiAJCX0KIAl9CkBAIC0xMzczLDcgKzEzNzMsNyBAQAogCQkJCQkgICAgYWNwaV92aWRlb19kZXZpY2Vfbm90aWZ5KTsKIAlpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORyBQUkVGSVgKLQkJICAgICAgICJDYW50IHJlbW92ZSB2aWRlbyBub3RpZnkgaGFuZGxlclxuIik7CisJCSAgICAgICAiQ2FuJ3QgcmVtb3ZlIHZpZGVvIG5vdGlmeSBoYW5kbGVyXG4iKTsKIAl9CiAJaWYgKGRldmljZS0+YmFja2xpZ2h0KSB7CiAJCWJhY2tsaWdodF9kZXZpY2VfdW5yZWdpc3RlcihkZXZpY2UtPmJhY2tsaWdodCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2FtYmEvYnVzLmMgYi9kcml2ZXJzL2FtYmEvYnVzLmMKaW5kZXggNmQyYmIyNS4uODIxMDQwNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hbWJhL2J1cy5jCisrKyBiL2RyaXZlcnMvYW1iYS9idXMuYwpAQCAtNzYwLDcgKzc2MCw3IEBACiB9CiAKIC8qKgotICoJYW1iYV9yZWxlYXNlX3JlZ2lvbnMgLSByZWxlYXNlIG1lbSByZWdpb25zIGFzc29pY2F0ZWQgd2l0aCBkZXZpY2UKKyAqCWFtYmFfcmVsZWFzZV9yZWdpb25zIC0gcmVsZWFzZSBtZW0gcmVnaW9ucyBhc3NvY2lhdGVkIHdpdGggZGV2aWNlCiAgKglAZGV2OiBhbWJhX2RldmljZSBzdHJ1Y3R1cmUgZm9yIGRldmljZQogICoKICAqCVJlbGVhc2UgcmVnaW9ucyBjbGFpbWVkIGJ5IGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGFtYmFfcmVxdWVzdF9yZWdpb25zLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvYWhjaS5jIGIvZHJpdmVycy9hdGEvYWhjaS5jCmluZGV4IGU2MmY2OTMuLjM5ZDgyOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2FoY2kuYworKysgYi9kcml2ZXJzL2F0YS9haGNpLmMKQEAgLTkyNiw3ICs5MjYsNyBAQAogCQkvKgogCQkgKiBBY2VyIGVNYWNoaW5lcyBHNzI1IGhhcyB0aGUgc2FtZSBwcm9ibGVtLiAgQklPUwogCQkgKiBWMS4wMyBpcyBrbm93biB0byBiZSBicm9rZW4uICBWMy4wNCBpcyBrbm93biB0bwotCQkgKiB3b3JrLiAgSW5iZXR3ZWVuLCB0aGVyZSBhcmUgVjEuMDYsIFYyLjA2IGFuZCBWMy4wMworCQkgKiB3b3JrLiAgQmV0d2VlbiwgdGhlcmUgYXJlIFYxLjA2LCBWMi4wNiBhbmQgVjMuMDMKIAkJICogdGhhdCB3ZSBkb24ndCBoYXZlIG11Y2ggaWRlYSBhYm91dC4gIEZvciBub3csCiAJCSAqIGJsYWNrbGlzdCBhbnl0aGluZyBvbGRlciB0aGFuIFYzLjA0LgogCQkgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvYWhjaS5oIGIvZHJpdmVycy9hdGEvYWhjaS5oCmluZGV4IGNjYWYwODEuLjM5ODY1MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2FoY2kuaAorKysgYi9kcml2ZXJzL2F0YS9haGNpLmgKQEAgLTIyNSw3ICsyMjUsNyBAQAogCS8qIGVtX2N0bCBiaXRzICovCiAJRU1fQ1RMX1JTVAkJPSAoMSA8PCA5KSwgLyogUmVzZXQgKi8KIAlFTV9DVExfVE0JCT0gKDEgPDwgOCksIC8qIFRyYW5zbWl0IE1lc3NhZ2UgKi8KLQlFTV9DVExfTVIJCT0gKDEgPDwgMCksIC8qIE1lc3NhZ2UgUmVjaWV2ZWQgKi8KKwlFTV9DVExfTVIJCT0gKDEgPDwgMCksIC8qIE1lc3NhZ2UgUmVjZWl2ZWQgKi8KIAlFTV9DVExfQUxIRAkJPSAoMSA8PCAyNiksIC8qIEFjdGl2aXR5IExFRCAqLwogCUVNX0NUTF9YTVQJCT0gKDEgPDwgMjUpLCAvKiBUcmFuc21pdCBPbmx5ICovCiAJRU1fQ1RMX1NNQgkJPSAoMSA8PCAyNCksIC8qIFNpbmdsZSBNZXNzYWdlIEJ1ZmZlciAqLwpAQCAtMjgxLDcgKzI4MSw3IEBACiB9OwogCiBzdHJ1Y3QgYWhjaV9ob3N0X3ByaXYgewotCXZvaWQgX19pb21lbSAqCQltbWlvOwkJLyogYnVzLWluZGVwZW5kYW50IG1lbSBtYXAgKi8KKwl2b2lkIF9faW9tZW0gKgkJbW1pbzsJCS8qIGJ1cy1pbmRlcGVuZGVudCBtZW0gbWFwICovCiAJdW5zaWduZWQgaW50CQlmbGFnczsJCS8qIEFIQ0lfSEZMQUdfKiAqLwogCXUzMgkJCWNhcDsJCS8qIGNhcCB0byB1c2UgKi8KIAl1MzIJCQljYXAyOwkJLyogY2FwMiB0byB1c2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL2F0YV9waWl4LmMgYi9kcml2ZXJzL2F0YS9hdGFfcGlpeC5jCmluZGV4IGNkZWM0YWIuLjBiYzNmZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2F0YV9waWl4LmMKKysrIGIvZHJpdmVycy9hdGEvYXRhX3BpaXguYwpAQCAtMzgsMTYgKzM4LDE2IEBACiAgKiAgSGFyZHdhcmUgZG9jdW1lbnRhdGlvbiBhdmFpbGFibGUgYXQgaHR0cDovL2RldmVsb3Blci5pbnRlbC5jb20vCiAgKgogICogRG9jdW1lbnRhdGlvbgotICoJUHVibGljYWxseSBhdmFpbGFibGUgZnJvbSBJbnRlbCB3ZWIgc2l0ZS4gRXJyYXRhIGRvY3VtZW50YXRpb24KLSAqIGlzIGFsc28gcHVibGljYWxseSBhdmFpbGFibGUuIEFzIGFuIGFpZGUgdG8gYW55b25lIGhhY2tpbmcgb24gdGhpcworICoJUHVibGljbHkgYXZhaWxhYmxlIGZyb20gSW50ZWwgd2ViIHNpdGUuIEVycmF0YSBkb2N1bWVudGF0aW9uCisgKiBpcyBhbHNvIHB1YmxpY2x5IGF2YWlsYWJsZS4gQXMgYW4gYWlkZSB0byBhbnlvbmUgaGFja2luZyBvbiB0aGlzCiAgKiBkcml2ZXIgdGhlIGxpc3Qgb2YgZXJyYXRhIHRoYXQgYXJlIHJlbGV2YW50IGlzIGJlbG93LCBnb2luZyBiYWNrIHRvCiAgKiBQSUlYNC4gT2xkZXIgZGV2aWNlIGRvY3VtZW50YXRpb24gaXMgbm93IGEgYml0IHRyaWNreSB0byBmaW5kLgogICoKICAqIFRoZSBjaGlwc2V0cyBhbGwgZm9sbG93IHZlcnkgbXVjaCB0aGUgc2FtZSBkZXNpZ24uIFRoZSBvcmlnaW5hbCBUcml0b24KLSAqIHNlcmllcyBjaGlwc2V0cyBkbyBfbm90XyBzdXBwb3J0IGluZGVwZW5kYW50IGRldmljZSB0aW1pbmdzLCBidXQgdGhpcworICogc2VyaWVzIGNoaXBzZXRzIGRvIF9ub3RfIHN1cHBvcnQgaW5kZXBlbmRlbnQgZGV2aWNlIHRpbWluZ3MsIGJ1dCB0aGlzCiAgKiBpcyBmaXhlZCBpbiBUcml0b24gSUkuIFdpdGggdGhlIG9kZCBtb2JpbGUgZXhjZXB0aW9uIHRoZSBjaGlwcyB0aGVuCiAgKiBjaGFuZ2UgbGl0dGxlIGV4Y2VwdCBpbiBnYWluaW5nIG1vcmUgbW9kZXMgdW50aWwgU0FUQSBhcnJpdmVzLiBUaGlzCi0gKiBkcml2ZXIgc3VwcG9ydHMgb25seSB0aGUgY2hpcHMgd2l0aCBpbmRlcGVuZGFudCB0aW1pbmcgKHRoYXQgaXMgdGhvc2UKKyAqIGRyaXZlciBzdXBwb3J0cyBvbmx5IHRoZSBjaGlwcyB3aXRoIGluZGVwZW5kZW50IHRpbWluZyAodGhhdCBpcyB0aG9zZQogICogd2l0aCBTSVRSRSBhbmQgdGhlIDB4NDQgdGltaW5nIHJlZ2lzdGVyKS4gU2VlIHBhdGFfb2xkcGlpeCBhbmQgcGF0YV9tcGlpeAogICogZm9yIHRoZSBlYXJseSBjaGlwIGRyaXZlcnMuCiAgKgpAQCAtMTIyLDcgKzEyMiw3IEBACiAJUDIJCQk9IDIsICAvKiBwb3J0IDIgKi8KIAlQMwkJCT0gMywgIC8qIHBvcnQgMyAqLwogCUlERQkJCT0gLTEsIC8qIElERSAqLwotCU5BCQkJPSAtMiwgLyogbm90IGF2YWxpYWJsZSAqLworCU5BCQkJPSAtMiwgLyogbm90IGF2YWlsYWJsZSAqLwogCVJWCQkJPSAtMywgLyogcmVzZXJ2ZWQgKi8KIAogCVBJSVhfQUhDSV9ERVZJQ0UJPSA2LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1jb3JlLmMKaW5kZXggYjkxZTE5Yy4uNDIzYzBhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLWNvcmUuYworKysgYi9kcml2ZXJzL2F0YS9saWJhdGEtY29yZS5jCkBAIC01MzQwLDcgKzUzNDAsNyBAQAogICoKICAqCVJlc3VtZSBAaG9zdC4gIEFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIGJ5IEVILiAgVGhpcwogICoJZnVuY3Rpb24gcmVxdWVzdHMgRUggdG8gcGVyZm9ybSBQTSBvcGVyYXRpb25zIGFuZCByZXR1cm5zLgotICoJTm90ZSB0aGF0IGFsbCByZXN1bWUgb3BlcmF0aW9ucyBhcmUgcGVyZm9ybWVkIHBhcmFsbGVseS4KKyAqCU5vdGUgdGhhdCBhbGwgcmVzdW1lIG9wZXJhdGlvbnMgYXJlIHBlcmZvcm1lZCBwYXJhbGxlbGx5LgogICoKICAqCUxPQ0tJTkc6CiAgKglLZXJuZWwgdGhyZWFkIGNvbnRleHQgKG1heSBzbGVlcCkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtZWguYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jCmluZGV4IGRmM2YzMTQuLjg4Y2QyMmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1laC5jCkBAIC03NzEsNyArNzcxLDcgQEAKIAkJLyogcHJvY2VzcyBwb3J0IHN1c3BlbmQgcmVxdWVzdCAqLwogCQlhdGFfZWhfaGFuZGxlX3BvcnRfc3VzcGVuZChhcCk7CiAKLQkJLyogRXhjZXB0aW9uIG1pZ2h0IGhhdmUgaGFwcGVuZCBhZnRlciAtPmVycm9yX2hhbmRsZXIKKwkJLyogRXhjZXB0aW9uIG1pZ2h0IGhhdmUgaGFwcGVuZWQgYWZ0ZXIgLT5lcnJvcl9oYW5kbGVyCiAJCSAqIHJlY292ZXJlZCB0aGUgcG9ydCBidXQgYmVmb3JlIHRoaXMgcG9pbnQuICBSZXBlYXQKIAkJICogRUggaW4gc3VjaCBjYXNlLgogCQkgKi8KQEAgLTE3NDIsNyArMTc0Miw3IEBACiAgKgogICoJQW5hbHl6ZSB0YXNrZmlsZSBvZiBAcWMgYW5kIGZ1cnRoZXIgZGV0ZXJtaW5lIGNhdXNlIG9mCiAgKglmYWlsdXJlLiAgVGhpcyBmdW5jdGlvbiBhbHNvIHJlcXVlc3RzIEFUQVBJIHNlbnNlIGRhdGEgaWYKLSAqCWF2YWxpYWJsZS4KKyAqCWF2YWlsYWJsZS4KICAqCiAgKglMT0NLSU5HOgogICoJS2VybmVsIHRocmVhZCBjb250ZXh0IChtYXkgc2xlZXApLgpAQCAtMTg5Myw3ICsxODkzLDcgQEAKICAqCSAgIG9jY3VycmVkIGR1cmluZyBsYXN0IDUgbWlucywgTkNRX09GRi4KICAqCiAgKgkzLiBJZiBtb3JlIHRoYW4gOCBBVEFfQlVTLCBUT1VUX0hTTSBvciBVTktfREVWIGVycm9ycwotICoJICAgb2N1cnJlZCBkdXJpbmcgbGFzdCA1IG1pbnMsIEZBTExCQUNLX1RPX1BJTworICoJICAgb2NjdXJyZWQgZHVyaW5nIGxhc3QgNSBtaW5zLCBGQUxMQkFDS19UT19QSU8KICAqCiAgKgk0LiBJZiBtb3JlIHRoYW4gMyBUT1VUX0hTTSBvciBVTktfREVWIGVycm9ycyBvY2N1cnJlZAogICoJICAgZHVyaW5nIGxhc3QgMTAgbWlucywgTkNRX09GRi4KQEAgLTI1NzcsNyArMjU3Nyw3IEBACiAJaWYgKGxpbmstPmZsYWdzICYgQVRBX0xGTEFHX05PX1NSU1QpCiAJCXNvZnRyZXNldCA9IE5VTEw7CiAKLQkvKiBtYWtlIHN1cmUgZWFjaCByZXNldCBhdHRlbXAgaXMgYXQgbGVhc3QgQ09PTF9ET1dOIGFwYXJ0ICovCisJLyogbWFrZSBzdXJlIGVhY2ggcmVzZXQgYXR0ZW1wdCBpcyBhdCBsZWFzdCBDT09MX0RPV04gYXBhcnQgKi8KIAlpZiAoZWhjLT5pLmZsYWdzICYgQVRBX0VISV9ESURfUkVTRVQpIHsKIAkJbm93ID0gamlmZmllczsKIAkJV0FSTl9PTih0aW1lX2FmdGVyKGVoYy0+bGFzdF9yZXNldCwgbm93KSk7CkBAIC0yNzM2LDcgKzI3MzYsNyBAQAogCQkJaWYgKCFyZXNldCkgewogCQkJCWF0YV9saW5rX3ByaW50ayhsaW5rLCBLRVJOX0VSUiwKIAkJCQkJCSJmb2xsb3ctdXAgc29mdHJlc2V0IHJlcXVpcmVkICIKLQkJCQkJCSJidXQgbm8gc29mdHJlc2V0IGF2YWxpYWJsZVxuIik7CisJCQkJCQkiYnV0IG5vIHNvZnRyZXNldCBhdmFpbGFibGVcbiIpOwogCQkJCWZhaWxlZF9saW5rID0gbGluazsKIAkJCQlyYyA9IC1FSU5WQUw7CiAJCQkJZ290byBmYWlsOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMKaW5kZXggYTgzNDE5OS4uZTJmNTdlOWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL2xpYmF0YS1zY3NpLmMKKysrIGIvZHJpdmVycy9hdGEvbGliYXRhLXNjc2kuYwpAQCAtOTk5LDcgKzk5OSw3IEBACiAgKglAcWM6IENvbW1hbmQgdGhhdCB3ZSBhcmUgZXJyb3Jpbmcgb3V0CiAgKgogICoJR2VuZXJhdGUgc2Vuc2UgYmxvY2sgZm9yIGEgZmFpbGVkIEFUQSBjb21tYW5kIEBxYy4gIERlc2NyaXB0b3IKLSAqCWZvcm1hdCBpcyB1c2VkIHRvIGFjY29tb2RhdGUgTEJBNDggYmxvY2sgYWRkcmVzcy4KKyAqCWZvcm1hdCBpcyB1c2VkIHRvIGFjY29tbW9kYXRlIExCQTQ4IGJsb2NrIGFkZHJlc3MuCiAgKgogICoJTE9DS0lORzoKICAqCU5vbmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9saWJhdGEtc2ZmLmMgYi9kcml2ZXJzL2F0YS9saWJhdGEtc2ZmLmMKaW5kZXggY2Y3YWNiYy4uZjgzODBjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvbGliYXRhLXNmZi5jCisrKyBiL2RyaXZlcnMvYXRhL2xpYmF0YS1zZmYuYwpAQCAtMjgzOSw3ICsyODM5LDcgQEAKIAkJYm1kbWFfc3RvcHBlZCA9IHRydWU7CiAKIAkJaWYgKHVubGlrZWx5KGhvc3Rfc3RhdCAmIEFUQV9ETUFfRVJSKSkgewotCQkJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCisJCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVycmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCiAJCQlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hPU1RfQlVTOwogCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKIAkJfQpAQCAtMzAzMiw3ICszMDMyLDcgQEAKIAkgKiBPciBtYXliZSBJJ20ganVzdCBiZWluZyBwYXJhbm9pZC4KIAkgKgogCSAqIEZJWE1FOiBUaGUgcG9zdGluZyBvZiB0aGlzIHdyaXRlIG1lYW5zIEkvTyBzdGFydHMgYXJlCi0JICogdW5uZWNjZXNzYXJpbHkgZGVsYXllZCBmb3IgTU1JTworCSAqIHVubmVjZXNzYXJpbHkgZGVsYXllZCBmb3IgTU1JTwogCSAqLwogfQogRVhQT1JUX1NZTUJPTF9HUEwoYXRhX2JtZG1hX3N0YXJ0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfYW1kLmMgYi9kcml2ZXJzL2F0YS9wYXRhX2FtZC5jCmluZGV4IDYyMGEwN2MuLmIwOTc1YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfYW1kLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9hbWQuYwpAQCAtMTEsNyArMTEsNyBAQAogICoJUG93ZXIgbWFuYWdlbWVudCBvbiBwb3J0cwogICoKICAqCi0gKiAgRG9jdW1lbnRhdGlvbiBwdWJsaWNhbGx5IGF2YWlsYWJsZS4KKyAqICBEb2N1bWVudGF0aW9uIHB1YmxpY2x5IGF2YWlsYWJsZS4KICAqLwogCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2FyYXNhbl9jZi5jIGIvZHJpdmVycy9hdGEvcGF0YV9hcmFzYW5fY2YuYwppbmRleCA2NWNlZTc0Li43MTliYjczIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX2FyYXNhbl9jZi5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfYXJhc2FuX2NmLmMKQEAgLTM4NSw3ICszODUsNyBAQAogCQlyZXR1cm4gLUVUSU1FRE9VVDsKIAl9CiAKLQkvKiBDaGVjayBpZiBQSU8gRXJyb3IgaW50ZXJydXB0IGhhcyBvY2N1cmVkICovCisJLyogQ2hlY2sgaWYgUElPIEVycm9yIGludGVycnVwdCBoYXMgb2NjdXJyZWQgKi8KIAlpZiAoYWNkZXYtPmRtYV9zdGF0dXMgJiBBVEFfRE1BX0VSUikKIAkJcmV0dXJuIC1FQUdBSU47CiAKQEAgLTQ1MCw3ICs0NTAsNyBAQAogCS8qCiAJICogRm9yIGVhY2ggc2c6CiAJICogTUFYX1hGRVJfQ09VTlQgZGF0YSB3aWxsIGJlIHRyYW5zZmVycmVkIGJlZm9yZSB3ZSBnZXQgdHJhbnNmZXIKLQkgKiBjb21wbGV0ZSBpbnRlcnJ1cHQuIEluYmV0d2VlbiBhZnRlciBGSUZPX1NJWkUgZGF0YQorCSAqIGNvbXBsZXRlIGludGVycnVwdC4gQmV0d2VlbiBhZnRlciBGSUZPX1NJWkUgZGF0YQogCSAqIGJ1ZmZlciBhdmFpbGFibGUgaW50ZXJydXB0IHdpbGwgYmUgZ2VuZXJhdGVkLiBBdCB0aGlzIHRpbWUgd2Ugd2lsbAogCSAqIGZpbGwgRklGTyBhZ2FpbjogbWF4IEZJRk9fU0laRSBkYXRhLgogCSAqLwpAQCAtNDYzLDcgKzQ2Myw3IEBACiAJCQkJYWNkZXYtPnZiYXNlICsgWEZFUl9DVFIpOwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZhY2Rldi0+aG9zdC0+bG9jaywgZmxhZ3MpOwogCi0JCS8qIGNvbnRpbnVlIGRtYSB4ZmVycyB1bnRpbGwgY3VycmVudCBzZyBpcyBjb21wbGV0ZWQgKi8KKwkJLyogY29udGludWUgZG1hIHhmZXJzIHVudGlsIGN1cnJlbnQgc2cgaXMgY29tcGxldGVkICovCiAJCXdoaWxlICh4ZmVyX2NudCkgewogCQkJLyogd2FpdCBmb3IgcmVhZCB0byBjb21wbGV0ZSAqLwogCQkJaWYgKCF3cml0ZSkgewpAQCAtNTYzLDcgKzU2Myw3IEBACiAKIGNoYW5fcmVxdWVzdF9mYWlsOgogCXNwaW5fbG9ja19pcnFzYXZlKCZhY2Rldi0+aG9zdC0+bG9jaywgZmxhZ3MpOwotCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLworCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJyaW5nIGRhdGEgdG8vZnJvbSBtZW1vcnkgKi8KIAlxYy0+ZXJyX21hc2sgfD0gQUNfRVJSX0hPU1RfQlVTOwogCXFjLT5hcC0+aHNtX3Rhc2tfc3RhdGUgPSBIU01fU1RfRVJSOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX2JmNTR4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX2JmNTR4LmMKaW5kZXggZTBiNThiOC4uZWE2NDk2NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9iZjU0eC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfYmY1NHguYwpAQCAtMTM0Miw3ICsxMzQyLDcgQEAKIAkJCWFwLT5vcHMtPmJtZG1hX3N0b3AocWMpOwogCiAJCQlpZiAodW5saWtlbHkoaG9zdF9zdGF0ICYgQVRBX0RNQV9FUlIpKSB7Ci0JCQkJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCisJCQkJLyogZXJyb3Igd2hlbiB0cmFuc2ZlcnJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLwogCQkJCXFjLT5lcnJfbWFzayB8PSBBQ19FUlJfSE9TVF9CVVM7CiAJCQkJYXAtPmhzbV90YXNrX3N0YXRlID0gSFNNX1NUX0VSUjsKIAkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTIwLmMgYi9kcml2ZXJzL2F0YS9wYXRhX2NzNTUyMC5jCmluZGV4IDAzMDk1MmYuLmUzMjU0ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfY3M1NTIwLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9jczU1MjAuYwpAQCAtMjksNyArMjksNyBAQAogICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogICoKICAqIERvY3VtZW50YXRpb246Ci0gKglOb3QgcHVibGljYWxseSBhdmFpbGFibGUuCisgKglOb3QgcHVibGljbHkgYXZhaWxhYmxlLgogICovCiAjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CiAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMgYi9kcml2ZXJzL2F0YS9wYXRhX21waWl4LmMKaW5kZXggYjIxZjAwMi4uZDhkOWM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9tcGlpeC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfbXBpaXguYwpAQCAtMTUsNyArMTUsNyBAQAogICogd2l0aCBQQ0kgSURFIGFuZCBhbHNvIHRoYXQgd2UgZG8gbm90IGRpc2FibGUgdGhlIGRldmljZSB3aGVuIG91ciBkcml2ZXIgaXMKICAqIHVubG9hZGVkIChhcyBpdCBoYXMgbWFueSBvdGhlciBmdW5jdGlvbnMpLgogICoKLSAqIFRoZSBkcml2ZXIgY29uY2lvdXNseSBrZWVwcyB0aGlzIGxvZ2ljIGludGVybmFsbHkgdG8gYXZvaWQgcHVzaGluZyBxdWlya3kKKyAqIFRoZSBkcml2ZXIgY29uc2Npb3VzbHkga2VlcHMgdGhpcyBsb2dpYyBpbnRlcm5hbGx5IHRvIGF2b2lkIHB1c2hpbmcgcXVpcmt5CiAgKiBQQVRBIGhpc3RvcnkgaW50byB0aGUgY2xlYW4gbGliYXRhIGxheWVyLgogICoKICAqIFRoaW5rcGFkIHNwZWNpZmljIG5vdGU6IElmIHlvdSBib290IGFuIE1QSUlYIHVzaW5nIGEgdGhpbmtwYWQgd2l0aCBhIFBDTUNJQQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvcGF0YV9yejEwMDAuYyBiL2RyaXZlcnMvYXRhL3BhdGFfcnoxMDAwLmMKaW5kZXggNGE0NTRhOC4uNGQwNDQ3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV9yejEwMDAuYworKysgYi9kcml2ZXJzL2F0YS9wYXRhX3J6MTAwMC5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIAlpZiAocmMpCiAJCXJldHVybiByYzsKIAotCS8qIElmIHRoaXMgZmFpbHMgb24gcmVzdW1lICh3aGljaCBpcyBhICJjYW50IGhhcHBlbiIgY2FzZSksIHdlCisJLyogSWYgdGhpcyBmYWlscyBvbiByZXN1bWUgKHdoaWNoIGlzIGEgImNhbid0IGhhcHBlbiIgY2FzZSksIHdlCiAJICAgbXVzdCBzdG9wIGFzIGFueSBwcm9ncmVzcyByaXNrcyBkYXRhIGxvc3MgKi8KIAlpZiAocnoxMDAwX2ZpZm9fZGlzYWJsZShwZGV2KSkKIAkJcGFuaWMoInJ6MTAwMCBmaWZvIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jIGIvZHJpdmVycy9hdGEvcGF0YV9zaWw2ODAuYwppbmRleCAwMGVlZmJkLi4xMTg3ODdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9wYXRhX3NpbDY4MC5jCisrKyBiL2RyaXZlcnMvYXRhL3BhdGFfc2lsNjgwLmMKQEAgLTExLDcgKzExLDcgQEAKICAqCiAgKiAgTWF5IGJlIGNvcGllZCBvciBtb2RpZmllZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiAgKgotICogIERvY3VtZW50YXRpb24gcHVibGljYWxseSBhdmFpbGFibGUuCisgKiAgRG9jdW1lbnRhdGlvbiBwdWJsaWNseSBhdmFpbGFibGUuCiAgKgogICoJSWYgeW91IGhhdmUgc3RyYW5nZSBwcm9ibGVtcyB3aXRoIG5WaWRpYSBjaGlwc2V0IHN5c3RlbXMgcGxlYXNlCiAgKglzZWUgdGhlIFNJIHN1cHBvcnQgZG9jdW1lbnRhdGlvbiBhbmQgdXBkYXRlIHlvdXIgc3lzdGVtIEJJT1MKQEAgLTQzLDcgKzQzLDcgQEAKICAqCiAgKglUdXJuIGEgY29uZmlnIHJlZ2lzdGVyIG9mZnNldCBpbnRvIHRoZSByaWdodCBhZGRyZXNzIGluIGVpdGhlcgogICoJUENJIHNwYWNlIG9yIE1NSU8gc3BhY2UgdG8gYWNjZXNzIHRoZSBjb250cm9sIHJlZ2lzdGVyIGluIHF1ZXN0aW9uCi0gKglUaGFua2Z1bGx5IHRoaXMgaXMgYSBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiBzbyBpc250IHBlcmZvcm1hbmNlCisgKglUaGFua2Z1bGx5IHRoaXMgaXMgYSBjb25maWd1cmF0aW9uIG9wZXJhdGlvbiBzbyBpc24ndCBwZXJmb3JtYW5jZQogICoJY3JpdGljaWFsLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfc2lzLmMgYi9kcml2ZXJzL2F0YS9wYXRhX3Npcy5jCmluZGV4IGMwNGFiYzMuLmJlMDhmZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3BhdGFfc2lzLmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV9zaXMuYwpAQCAtMzMxLDcgKzMzMSw3IEBACiAKIAlpZiAoYWRldi0+ZG1hX21vZGUgPCBYRkVSX1VETUFfMCkgewogCQkvKiBiaXRzIDMtMCBob2xkIHJlY292ZXJ5IHRpbWluZyBiaXRzIDgtMTAgYWN0aXZlIHRpbWluZyBhbmQKLQkJICAgdGhlIGhpZ2hlciBiaXRzIGFyZSBkZXBlbmRhbnQgb24gdGhlIGRldmljZSAqLworCQkgICB0aGUgaGlnaGVyIGJpdHMgYXJlIGRlcGVuZGVudCBvbiB0aGUgZGV2aWNlICovCiAJCXRpbWluZyAmPSB+MHg4NzBGOwogCQl0aW1pbmcgfD0gbXdkbWFfYml0c1tzcGVlZF07CiAJfSBlbHNlIHsKQEAgLTM3MSw3ICszNzEsNyBAQAogCiAJaWYgKGFkZXYtPmRtYV9tb2RlIDwgWEZFUl9VRE1BXzApIHsKIAkJLyogYml0cyAzLTAgaG9sZCByZWNvdmVyeSB0aW1pbmcgYml0cyA4LTEwIGFjdGl2ZSB0aW1pbmcgYW5kCi0JCSAgIHRoZSBoaWdoZXIgYml0cyBhcmUgZGVwZW5kYW50IG9uIHRoZSBkZXZpY2UsIGJpdCAxNSB1ZG1hICovCisJCSAgIHRoZSBoaWdoZXIgYml0cyBhcmUgZGVwZW5kZW50IG9uIHRoZSBkZXZpY2UsIGJpdCAxNSB1ZG1hICovCiAJCXRpbWluZyAmPSB+MHg4NzBGOwogCQl0aW1pbmcgfD0gbXdkbWFfYml0c1tzcGVlZF07CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3BhdGFfdHJpZmxleC5jIGIvZHJpdmVycy9hdGEvcGF0YV90cmlmbGV4LmMKaW5kZXggMGQxZjg5ZS4uMDNiNmQ2OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdGEvcGF0YV90cmlmbGV4LmMKKysrIGIvZHJpdmVycy9hdGEvcGF0YV90cmlmbGV4LmMKQEAgLTMwLDcgKzMwLDcgQEAKICAqIExvb3NlbHkgYmFzZWQgb24gdGhlIHBpaXggJiBzdndrcyBkcml2ZXJzLgogICoKICAqIERvY3VtZW50YXRpb246Ci0gKglOb3QgcHVibGljYWxseSBhdmFpbGFibGUuCisgKglOb3QgcHVibGljbHkgYXZhaWxhYmxlLgogICovCiAKICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3NhdGFfZnNsLmMgYi9kcml2ZXJzL2F0YS9zYXRhX2ZzbC5jCmluZGV4IDBmOTFlNTguLjM1YTcxZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfZnNsLmMKKysrIGIvZHJpdmVycy9hdGEvc2F0YV9mc2wuYwpAQCAtNDIsNyArNDIsNyBAQAogCiAJLyoKIAkgKiBTQVRBLUZTTCBob3N0IGNvbnRyb2xsZXIgc3VwcG9ydHMgYSBtYXguIG9mICgxNSsxKSBkaXJlY3QgUFJERXMsIGFuZAotCSAqIGNoYWluZWQgaW5kaXJlY3QgUFJERXMgdXB0byBhIG1heCBjb3VudCBvZiA2My4KKwkgKiBjaGFpbmVkIGluZGlyZWN0IFBSREVzIHVwIHRvIGEgbWF4IGNvdW50IG9mIDYzLgogCSAqIFdlIGFyZSBhbGxvY2F0aW5nIGFuIGFycmF5IG9mIDYzIFBSREVzIGNvbnRpZ3VvdXNseSwgYnV0IFBSREUjMTUgd2lsbAogCSAqIGJlIHNldHVwIGFzIGFuIGluZGlyZWN0IGRlc2NyaXB0b3IsIHBvaW50aW5nIHRvIGl0J3MgbmV4dAogCSAqIChjb250aWd1b3VzKSBQUkRFLiBUaG91Z2ggY2hhaW5lZCBpbmRpcmVjdCBQUkRFIGFycmF5cyBhcmUKQEAgLTkwNyw3ICs5MDcsNyBAQAogCWF0YV9tc2xlZXAoYXAsIDEpOwogCiAJLyoKLQkgKiBTQVRBIGRldmljZSBlbnRlcnMgcmVzZXQgc3RhdGUgYWZ0ZXIgcmVjZXZpbmcgYSBDb250cm9sIHJlZ2lzdGVyCisJICogU0FUQSBkZXZpY2UgZW50ZXJzIHJlc2V0IHN0YXRlIGFmdGVyIHJlY2VpdmluZyBhIENvbnRyb2wgcmVnaXN0ZXIKIAkgKiBGSVMgd2l0aCBTUlNUIGJpdCBhc3NlcnRlZCBhbmQgaXQgYXdhaXRzIGFub3RoZXIgSDJEIENvbnRyb2wgcmVnLgogCSAqIEZJUyB3aXRoIFNSU1QgYml0IGNsZWFyZWQsIHRoZW4gdGhlIGRldmljZSBkb2VzIGludGVybmFsIGRpYWdzICYKIAkgKiBpbml0aWFsaXphdGlvbiwgZm9sbG93ZWQgYnkgaW5kaWNhdGluZyBpdCdzIGluaXRpYWxpemF0aW9uIHN0YXR1cwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdGEvc2F0YV9tdi5jIGIvZHJpdmVycy9hdGEvc2F0YV9tdi5jCmluZGV4IGNkNDA2NTEuLmI1MmMwNTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfbXYuYworKysgYi9kcml2ZXJzL2F0YS9zYXRhX212LmMKQEAgLTEzNTIsNyArMTM1Miw3IEBACiAJCQkvKgogCQkJICogV29ya2Fyb3VuZCBmb3IgODhTWDYweDEgRkVyIFNBVEEjMjY6CiAJCQkgKgotCQkJICogQ09NUkVTRVRzIGhhdmUgdG8gdGFrZSBjYXJlIG5vdCB0byBhY2NpZGVudGx5CisJCQkgKiBDT01SRVNFVHMgaGF2ZSB0byB0YWtlIGNhcmUgbm90IHRvIGFjY2lkZW50YWxseQogCQkJICogcHV0IHRoZSBkcml2ZSB0byBzbGVlcCB3aGVuIHdyaXRpbmcgU0NSX0NPTlRST0wuCiAJCQkgKiBTZXR0aW5nIGJpdHMgMTIuLjE1IHByZXZlbnRzIHRoaXMgcHJvYmxlbS4KIAkJCSAqCkBAIC0yMDQ0LDcgKzIwNDQsNyBAQAogCiAJY3cgPSAmcHAtPmNycWJbaW5faW5kZXhdLmF0YV9jbWRbMF07CiAKLQkvKiBTYWRseSwgdGhlIENSUUIgY2Fubm90IGFjY29tb2RhdGUgYWxsIHJlZ2lzdGVycy0tdGhlcmUgYXJlCisJLyogU2FkbHksIHRoZSBDUlFCIGNhbm5vdCBhY2NvbW1vZGF0ZSBhbGwgcmVnaXN0ZXJzLS10aGVyZSBhcmUKIAkgKiBvbmx5IDExIGJ5dGVzLi4uc28gd2UgbXVzdCBwaWNrIGFuZCBjaG9vc2UgcmVxdWlyZWQKIAkgKiByZWdpc3RlcnMgYmFzZWQgb24gdGhlIGNvbW1hbmQuICBTbywgd2UgZHJvcCBmZWF0dXJlIGFuZAogCSAqIGhvYl9mZWF0dXJlIGZvciBbUlddIERNQSBjb21tYW5kcywgYnV0IHRoZXkgYXJlIG5lZWRlZCBmb3IKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3NhdGFfbnYuYyBiL2RyaXZlcnMvYXRhL3NhdGFfbnYuYwppbmRleCA0MjM0NGUzLi5mMTczZWYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0YS9zYXRhX252LmMKKysrIGIvZHJpdmVycy9hdGEvc2F0YV9udi5jCkBAIC0yMTIxLDcgKzIxMjEsNyBAQAogCiAJaG9zdF9zdGF0ID0gYXAtPm9wcy0+Ym1kbWFfc3RhdHVzKGFwKTsKIAlpZiAodW5saWtlbHkoaG9zdF9zdGF0ICYgQVRBX0RNQV9FUlIpKSB7Ci0JCS8qIGVycm9yIHdoZW4gdHJhbnNmZXJpbmcgZGF0YSB0by9mcm9tIG1lbW9yeSAqLworCQkvKiBlcnJvciB3aGVuIHRyYW5zZmVycmluZyBkYXRhIHRvL2Zyb20gbWVtb3J5ICovCiAJCWF0YV9laGlfY2xlYXJfZGVzYyhlaGkpOwogCQlhdGFfZWhpX3B1c2hfZGVzYyhlaGksICJCTURNQSBzdGF0IDB4JXgiLCBob3N0X3N0YXQpOwogCQllaGktPmVycl9tYXNrIHw9IEFDX0VSUl9IT1NUX0JVUzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRhL3NhdGFfdmlhLmMgYi9kcml2ZXJzL2F0YS9zYXRhX3ZpYS5jCmluZGV4IDIxMjQyYzUuLjU0NDM0ZGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRhL3NhdGFfdmlhLmMKKysrIGIvZHJpdmVycy9hdGEvc2F0YV92aWEuYwpAQCAtNTgyLDcgKzU4Miw3IEBACiAJICogV2hlbiBob3N0IGlzc3VlcyBIT0xELCBkZXZpY2UgbWF5IHNlbmQgdXAgdG8gMjBEVyBvZiBkYXRhCiAJICogYmVmb3JlIGFja25vd2xlZGdpbmcgaXQgd2l0aCBIT0xEQSBhbmQgdGhlIGhvc3Qgc2hvdWxkIGJlCiAJICogYWJsZSB0byBidWZmZXIgdGhlbSBpbiBGSUZPLiAgVW5mb3J0dW5hdGVseSwgc29tZSBXRCBkcml2ZXMKLQkgKiBzZW5kIHVwdG8gNDBEVyBiZWZvcmUgYWNrbm93bGVkZ2luZyBIT0xEIGFuZCwgaW4gdGhlCisJICogc2VuZCB1cCB0byA0MERXIGJlZm9yZSBhY2tub3dsZWRnaW5nIEhPTEQgYW5kLCBpbiB0aGUKIAkgKiBkZWZhdWx0IGNvbmZpZ3VyYXRpb24sIHRoaXMgZW5kcyB1cCBvdmVyZmxvd2luZyB2dDY0MjEncwogCSAqIEZJRk8sIG1ha2luZyB0aGUgY29udHJvbGxlciBhYm9ydCB0aGUgdHJhbnNhY3Rpb24gd2l0aAogCSAqIFJfRVJSLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vYW1iYXNzYWRvci5jIGIvZHJpdmVycy9hdG0vYW1iYXNzYWRvci5jCmluZGV4IDlmNDdlODYuLmE1ZmNiMWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2FtYmFzc2Fkb3IuYworKysgYi9kcml2ZXJzL2F0bS9hbWJhc3NhZG9yLmMKQEAgLTQ5Nyw3ICs0OTcsNyBAQAogCSAgLy8gVkMgbGF5ZXIgc3RhdHMKIAkgIGF0b21pY19pbmMoJmF0bV92Y2MtPnN0YXRzLT5yeCk7CiAJICBfX25ldF90aW1lc3RhbXAoc2tiKTsKLQkgIC8vIGVuZCBvZiBvdXIgcmVzcG9uc2FiaWxpdHkKKwkgIC8vIGVuZCBvZiBvdXIgcmVzcG9uc2liaWxpdHkKIAkgIGF0bV92Y2MtPnB1c2ggKGF0bV92Y2MsIHNrYik7CiAJICByZXR1cm47CiAJICAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2ZpcmVzdHJlYW0uYyBiL2RyaXZlcnMvYXRtL2ZpcmVzdHJlYW0uYwppbmRleCAwNDk2NTBkLi5lZjdhNjU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9maXJlc3RyZWFtLmMKKysrIGIvZHJpdmVycy9hdG0vZmlyZXN0cmVhbS5jCkBAIC0xNzgyLDcgKzE3ODIsNyBAQAogCQl3cml0ZV9mcyAoZGV2LCBSQVMwLCBSQVMwX0RDRF9YSExUIAogCQkJICB8ICgoKDEgPDwgRlMxNTVfVlBJX0JJVFMpIC0gMSkgKiBSQVMwX1ZQU0VMKQogCQkJICB8ICgoKDEgPDwgRlMxNTVfVkNJX0JJVFMpIC0gMSkgKiBSQVMwX1ZDU0VMKSk7Ci0JCS8qIFdlIGNhbiBjaG9zZSB0aGUgc3BsaXQgYXJiaXRhcmlseS4gV2UgbWlnaHQgYmUgYWJsZSB0byAKKwkJLyogV2UgY2FuIGNob3NlIHRoZSBzcGxpdCBhcmJpdHJhcmlseS4gV2UgbWlnaHQgYmUgYWJsZSB0byAKIAkJICAgc3VwcG9ydCBtb3JlLiBXaGF0ZXZlci4gVGhpcyBzaG91bGQgZG8gZm9yIG5vdy4gKi8KIAkJZGV2LT5hdG1fZGV2LT5jaV9yYW5nZS52cGlfYml0cyA9IEZTMTU1X1ZQSV9CSVRTOwogCQlkZXYtPmF0bV9kZXYtPmNpX3JhbmdlLnZjaV9iaXRzID0gRlMxNTVfVkNJX0JJVFM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2F0bS9mb3JlMjAwZS5oIGIvZHJpdmVycy9hdG0vZm9yZTIwMGUuaAppbmRleCA3Zjk3YzA5Li5iYTM0YTAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9mb3JlMjAwZS5oCisrKyBiL2RyaXZlcnMvYXRtL2ZvcmUyMDBlLmgKQEAgLTI2Myw3ICsyNjMsNyBAQAogfSBvcGNvZGVfdDsKIAogCi0vKiB2aXJ0dWFsIHBhdGggLyB2aXJ0dWFsIGNoYW5uZWwgaWRlbnRpZmVycyAqLworLyogdmlydHVhbCBwYXRoIC8gdmlydHVhbCBjaGFubmVsIGlkZW50aWZpZXJzICovCiAKIHR5cGVkZWYgc3RydWN0IHZwdmMgewogICAgIEJJVEZJRUxEMygKQEAgLTkyNiw3ICs5MjYsNyBAQAogCiAjZGVmaW5lIFBDQTIwMEVfUENJX0xBVEVOQ1kgICAgICAweDQwICAgIC8qIG1heGltdW0gc2xhdmUgbGF0ZW50eSAgICAgICAgICAgICovCiAjZGVmaW5lIFBDQTIwMEVfUENJX01BU1RFUl9DVFJMICAweDQxICAgIC8qIG1hc3RlciBjb250cm9sICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIFBDQTIwMEVfUENJX1RIUkVTSE9MRCAgICAweDQyICAgIC8qIGJ1cnN0IC8gY29udGlub3VzIHJlcSB0aHJlc2hvbGQgICovCisjZGVmaW5lIFBDQTIwMEVfUENJX1RIUkVTSE9MRCAgICAweDQyICAgIC8qIGJ1cnN0IC8gY29udGludW91cyByZXEgdGhyZXNob2xkICAqLwogCiAvKiBQQkkgbWFzdGVyIGNvbnRyb2wgcmVnaXN0ZXIgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vaG9yaXpvbi5jIGIvZHJpdmVycy9hdG0vaG9yaXpvbi5jCmluZGV4IDI0NzYxZTEuLmQ1OGUzZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2hvcml6b24uYworKysgYi9kcml2ZXJzL2F0bS9ob3Jpem9uLmMKQEAgLTE2OSwxMyArMTY5LDEzIEBACiAgIFJlYWwgVGltZSAoY2R2IGFuZCBtYXggQ0RUIGdpdmVuKQogICAKICAgQ0JSKHBjcikgICAgICAgICAgICAgcGNyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlCi0gIHJ0VkJSKHBjcixzY3IsbWJzKSAgIHNjciBiYW5kd2lkdGggYWx3YXlzIGF2YWlsYWJsZSwgdXB0byBwY3IgYXQgbWJzIHRvbworICBydFZCUihwY3Isc2NyLG1icykgICBzY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUsIHVwIHRvIHBjciBhdCBtYnMgdG9vCiAgIAogICBOb24gUmVhbCBUaW1lCiAgIAotICBucnRWQlIocGNyLHNjcixtYnMpICBzY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUsIHVwdG8gcGNyIGF0IG1icyB0b28KKyAgbnJ0VkJSKHBjcixzY3IsbWJzKSAgc2NyIGJhbmR3aWR0aCBhbHdheXMgYXZhaWxhYmxlLCB1cCB0byBwY3IgYXQgbWJzIHRvbwogICBVQlIoKQotICBBQlIobWNyLHBjcikgICAgICAgICBtY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUsIHVwdG8gcGNyIChkZXBlbmRpbmcpIHRvbworICBBQlIobWNyLHBjcikgICAgICAgICBtY3IgYmFuZHdpZHRoIGFsd2F5cyBhdmFpbGFibGUsIHVwIHRvIHBjciAoZGVwZW5kaW5nKSB0b28KICAgCiAgIG1icyBpcyBtYXggYnVyc3Qgc2l6ZSAoYnVja2V0KQogICBwY3IgYW5kIHNjciBoYXZlIGFzc29jaWF0ZWQgY2R2dCB2YWx1ZXMKQEAgLTk0NCw3ICs5NDQsNyBAQAogLy8gdG8gYmUgZml4ZWQgc29vbiwgc28gZG8gbm90IGRlZmluZSBUQUlMUkVDVVNSSU9OV09SS1MgdW5sZXNzIHlvdQogLy8gYXJlIHN1cmUgaXQgZG9lcyBhcyB5b3UgbWF5IG90aGVyd2lzZSBvdmVyZmxvdyB0aGUga2VybmVsIHN0YWNrLgogCi0vLyBnaXZpbmcgdGhpcyBmbiBhIHJldHVybiB2YWx1ZSB3b3VsZCBoZWxwIEdDQywgYWxsZWRnZWRseQorLy8gZ2l2aW5nIHRoaXMgZm4gYSByZXR1cm4gdmFsdWUgd291bGQgaGVscCBHQ0MsIGFsbGVnZWRseQogCiBzdGF0aWMgdm9pZCByeF9zY2hlZHVsZSAoaHJ6X2RldiAqIGRldiwgaW50IGlycSkgewogICB1bnNpZ25lZCBpbnQgcnhfYnl0ZXM7CkBAIC0xMDM2LDcgKzEwMzYsNyBAQAogCSAgLy8gVkMgbGF5ZXIgc3RhdHMKIAkgIGF0b21pY19pbmMoJnZjYy0+c3RhdHMtPnJ4KTsKIAkgIF9fbmV0X3RpbWVzdGFtcChza2IpOwotCSAgLy8gZW5kIG9mIG91ciByZXNwb25zYWJpbGl0eQorCSAgLy8gZW5kIG9mIG91ciByZXNwb25zaWJpbGl0eQogCSAgdmNjLT5wdXNoICh2Y2MsIHNrYik7CiAJfQogICAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vaWR0NzcyNTIuYyBiL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmMKaW5kZXggYmZiN2ZlZS4uMDQ4Zjk5ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vaWR0NzcyNTIuYworKysgYi9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5jCkBAIC0zNDk1LDcgKzM0OTUsNyBAQAogCQlyZXR1cm4gLTE7CiAJfQogCWlmIChkZXYtPnBoeS0+aW9jdGwgPT0gTlVMTCkgewotCQlwcmludGsoIiVzOiBMVCBoYWQgbm8gSU9DVEwgZnVudGlvbiBkZWZpbmVkLlxuIiwgY2FyZC0+bmFtZSk7CisJCXByaW50aygiJXM6IExUIGhhZCBubyBJT0NUTCBmdW5jdGlvbiBkZWZpbmVkLlxuIiwgY2FyZC0+bmFtZSk7CiAJCWRlaW5pdF9jYXJkKGNhcmQpOwogCQlyZXR1cm4gLTE7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vaWR0NzcyNTIuaCBiL2RyaXZlcnMvYXRtL2lkdDc3MjUyLmgKaW5kZXggZjUzYTQzYS4uM2E4MmNjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9hdG0vaWR0NzcyNTIuaAorKysgYi9kcml2ZXJzL2F0bS9pZHQ3NzI1Mi5oCkBAIC03NjYsNyArNzY2LDcgQEAKICNkZWZpbmUgU0FSX1JDVEVfQlVGRlNUQVRfTUFTSyAweDAwMDAzMDAwICAvKiBidWZmZXIgc3RhdHVzICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgU0FSX1JDVEVfRUZDSSAgICAgICAgICAweDAwMDAwODAwICAvKiBFRkNJIENvbmdlc3Rpb24gZmxhZyAgICAgICAgICAgKi8KICNkZWZpbmUgU0FSX1JDVEVfQ0xQICAgICAgICAgICAweDAwMDAwNDAwICAvKiBDZWxsIExvc3MgUHJpb3JpdHkgZmxhZyAgICAgICAgKi8KLSNkZWZpbmUgU0FSX1JDVEVfQ1JDICAgICAgICAgICAweDAwMDAwMjAwICAvKiBSZWNpZXZlZCBDUkMgRXJyb3IgICAgICAgICAgICAgKi8KKyNkZWZpbmUgU0FSX1JDVEVfQ1JDICAgICAgICAgICAweDAwMDAwMjAwICAvKiBSZWNlaXZlZCBDUkMgRXJyb3IgICAgICAgICAgICAgKi8KICNkZWZpbmUgU0FSX1JDVEVfQ0VMTENOVF9NQVNLICAweDAwMDAwMUZGICAvKiBjZWxsIENvdW50ICAgICAgICAgICAgICAgICAgICAgKi8KIAogI2RlZmluZSBTQVJfUkNURV9BQUwwICAgICAgICAgIDB4MDAwMDAwMDAgIC8qIEFBTCB0eXBlcyBmb3IgQUxMIGZpZWxkICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9hdG0vaXBoYXNlLmMgYi9kcml2ZXJzL2F0bS9pcGhhc2UuYwppbmRleCBkODBkNTFiLi4xYzY3NGE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2F0bS9pcGhhc2UuYworKysgYi9kcml2ZXJzL2F0bS9pcGhhc2UuYwpAQCAtMTAyNSw3ICsxMDI1LDcgQEAKIH0gCiAgIAogICAKLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gUmVjaWV2aW5nIHNpZGUgc3R1ZmYgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAgCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFJlY2VpdmluZyBzaWRlIHN0dWZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gIAogIAogc3RhdGljIHZvaWQgcnhfZXhjcF9yY3ZkKHN0cnVjdCBhdG1fZGV2ICpkZXYpICAKIHsgIApAQCAtMTE5NSw3ICsxMTk1LDcgQEAKICAgaWYgKHN0YXR1cyAmIFJYX1BLVF9SQ1ZEKSAgCiAgIHsgIAogCS8qIGRvIHNvbWV0aGluZyAqLyAgCi0JLyogQmFzaWNhbGx5IHJlY3ZkIGFuIGludGVycnVwdCBmb3IgcmVjZXZpbmcgYSBwYWNrZXQuICAKKwkvKiBCYXNpY2FsbHkgcmVjdmQgYW4gaW50ZXJydXB0IGZvciByZWNlaXZpbmcgYSBwYWNrZXQuICAKIAlBIGRlc2NyaXB0b3Igd291bGQgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gdGhlIHBhY2tldCBjb21wbGV0ZSAgIAogCXF1ZXVlLiBHZXQgYWxsIHRoZSBkZXNjcmlwdG9ycyBhbmQgc2V0IHVwIGRtYSB0byBtb3ZlIHRoZSAgIAogCXBhY2tldHMgdGlsbCB0aGUgcGFja2V0IGNvbXBsZXRlIHF1ZXVlIGlzIGVtcHR5Li4gIApAQCAtMTg1NSw3ICsxODU1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7IAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodmNjLT5xb3MudHh0cC5tYXhfcGNyID4gaWFkZXYtPkxpbmVSYXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgSUZfQ0JSKHByaW50aygiUENSIGlzIG5vdCBhdmFpbGJsZVxuIik7KQorICAgICAgICAgICAgICAgICAgIElGX0NCUihwcmludGsoIlBDUiBpcyBub3QgYXZhaWxhYmxlXG4iKTspCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2Yy0+dHlwZSA9IENCUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXRtL2xhbmFpLmMgYi9kcml2ZXJzL2F0bS9sYW5haS5jCmluZGV4IDUyODgwYzguLjRlOGJhNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXRtL2xhbmFpLmMKKysrIGIvZHJpdmVycy9hdG0vbGFuYWkuYwpAQCAtMTI1NSw3ICsxMjU1LDcgQEAKIAkvKgogCSAqIFNpbmNlIHRoZSAiYnV0dCByZWdpc3RlciIgaXMgYSBzaGFyZWQgcmVzb3VuY2Ugb24gdGhlIGNhcmQgd2UKIAkgKiBzZXJpYWxpemUgYWxsIGFjY2Vzc2VzIHRvIGl0IHRocm91Z2ggdGhpcyBzcGlubG9jay4gIFRoaXMgaXMKLQkgKiBtb3N0bHkganVzdCBwYXJhbm9pYSBzaWNuZSB0aGUgcmVnaXN0ZXIgaXMgcmFyZWx5ICJidXN5IiBhbnl3YXkKKwkgKiBtb3N0bHkganVzdCBwYXJhbm9pYSBzaW5jZSB0aGUgcmVnaXN0ZXIgaXMgcmFyZWx5ICJidXN5IiBhbnl3YXkKIAkgKiBidXQgaXMgbmVlZGVkIGZvciBjb3JyZWN0bmVzcy4KIAkgKi8KIAlzcGluX2xvY2soJmxhbmFpLT5lbmR0eGxvY2spOwpAQCAtMTk5MCw3ICsxOTkwLDcgQEAKIAogLyoKICAqIFdlIF9jYW5fIHVzZSBWQ0k9PTAgZm9yIG5vcm1hbCB0cmFmZmljLCBidXQgb25seSBmb3IgVUJSIChvciB3ZSdsbAotICogZ2V0IGEgQ0JSWkVSTyBpbnRlcnJ1cHQpLCBhbmQgd2UgY2FuIHVzZSBpdCBvbmx5IGlmIG5vb25lIGlzIHJlY2VpdmluZworICogZ2V0IGEgQ0JSWkVSTyBpbnRlcnJ1cHQpLCBhbmQgd2UgY2FuIHVzZSBpdCBvbmx5IGlmIG5vIG9uZSBpcyByZWNlaXZpbmcKICAqIEFBTDAgdHJhZmZpYyAoc2luY2UgdGhleSB3aWxsIHVzZSB0aGUgc2FtZSBxdWV1ZSkgLSBhY2NvcmRpbmcgdG8gdGhlCiAgKiBkb2NzIHdlIHNob3VsZG4ndCBldmVuIHVzZSBpdCBmb3IgQUFMMCB0cmFmZmljCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvYXV4ZGlzcGxheS9jZmFnMTI4NjRiLmMgYi9kcml2ZXJzL2F1eGRpc3BsYXkvY2ZhZzEyODY0Yi5jCmluZGV4IDQ5NzU4NTkuLjQxY2U0YmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvYXV4ZGlzcGxheS9jZmFnMTI4NjRiLmMKKysrIGIvZHJpdmVycy9hdXhkaXNwbGF5L2NmYWcxMjg2NGIuYwpAQCAtNDksNyArNDksNyBAQAogc3RhdGljIHVuc2lnbmVkIGludCBjZmFnMTI4NjRiX3JhdGUgPSBDT05GSUdfQ0ZBRzEyODY0Ql9SQVRFOwogbW9kdWxlX3BhcmFtKGNmYWcxMjg2NGJfcmF0ZSwgdWludCwgU19JUlVHTyk7CiBNT0RVTEVfUEFSTV9ERVNDKGNmYWcxMjg2NGJfcmF0ZSwKLQkiUmVmcmVzaCByYXRlIChoZXJ0enMpIik7CisJIlJlZnJlc2ggcmF0ZSAoaGVydHopIik7CiAKIHVuc2lnbmVkIGludCBjZmFnMTI4NjRiX2dldHJhdGUodm9pZCkKIHsKQEAgLTYwLDcgKzYwLDcgQEAKICAqIGNmYWcxMjg2NGIgQ29tbWFuZHMKICAqCiAgKglFID0gRW5hYmxlIHNpZ25hbAotICoJCUV2ZXJ5dGltZSBFIHN3aXRjaCBmcm9tIGxvdyB0byBoaWdoLAorICoJCUV2ZXJ5IHRpbWUgRSBzd2l0Y2ggZnJvbSBsb3cgdG8gaGlnaCwKICAqCQljZmFnMTI4NjRiL2tzMDEwOCByZWFkcyB0aGUgY29tbWFuZC9kYXRhLgogICoKICAqCUNTMSA9IEZpcnN0IGtzMDEwOGNvbnRyb2xsZXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2UvcG93ZXIvcnVudGltZS5jIGIvZHJpdmVycy9iYXNlL3Bvd2VyL3J1bnRpbWUuYwppbmRleCA1NDU5N2M4Li4zMTcyYzYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2UvcG93ZXIvcnVudGltZS5jCisrKyBiL2RyaXZlcnMvYmFzZS9wb3dlci9ydW50aW1lLmMKQEAgLTQ0Myw3ICs0NDMsNyBAQAogICoKICAqIENoZWNrIGlmIHRoZSBkZXZpY2UncyBydW4tdGltZSBQTSBzdGF0dXMgYWxsb3dzIGl0IHRvIGJlIHJlc3VtZWQuICBDYW5jZWwKICAqIGFueSBzY2hlZHVsZWQgb3IgcGVuZGluZyByZXF1ZXN0cy4gIElmIGFub3RoZXIgcmVzdW1lIGhhcyBiZWVuIHN0YXJ0ZWQKLSAqIGVhcmxpZXIsIGVpdGhlciByZXR1cm4gaW1lZGlhdGVseSBvciB3YWl0IGZvciBpdCB0byBmaW5pc2gsIGRlcGVuZGluZyBvbiB0aGUKKyAqIGVhcmxpZXIsIGVpdGhlciByZXR1cm4gaW1tZWRpYXRlbHkgb3Igd2FpdCBmb3IgaXQgdG8gZmluaXNoLCBkZXBlbmRpbmcgb24gdGhlCiAgKiBSUE1fTk9XQUlUIGFuZCBSUE1fQVNZTkMgZmxhZ3MuICBTaW1pbGFybHksIGlmIHRoZXJlJ3MgYSBzdXNwZW5kIHJ1bm5pbmcgaW4KICAqIHBhcmFsbGVsIHdpdGggdGhpcyBmdW5jdGlvbiwgZWl0aGVyIHRlbGwgdGhlIG90aGVyIHByb2Nlc3MgdG8gcmVzdW1lIGFmdGVyCiAgKiBzdXNwZW5kaW5nIChkZWZlcnJlZF9yZXN1bWUpIG9yIHdhaXQgZm9yIGl0IHRvIGZpbmlzaC4gIElmIHRoZSBSUE1fQVNZTkMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmFzZS9zeXMuYyBiL2RyaXZlcnMvYmFzZS9zeXMuYwppbmRleCBmYmU3MmRhLi5hY2RlOWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jhc2Uvc3lzLmMKKysrIGIvZHJpdmVycy9iYXNlL3N5cy5jCkBAIC0xOTcsNyArMTk3LDcgQEAKIH0KIAogLyoqCi0gKglzeXNkZXZfZHJpdmVyX3JlZ2lzdGVyIC0gUmVnaXN0ZXIgYXV4aWxsYXJ5IGRyaXZlcgorICoJc3lzZGV2X2RyaXZlcl9yZWdpc3RlciAtIFJlZ2lzdGVyIGF1eGlsaWFyeSBkcml2ZXIKICAqCUBjbHM6CURldmljZSBjbGFzcyBkcml2ZXIgYmVsb25ncyB0by4KICAqCUBkcnY6CURyaXZlci4KICAqCkBAIC0yNTAsNyArMjUwLDcgQEAKIH0KIAogLyoqCi0gKglzeXNkZXZfZHJpdmVyX3VucmVnaXN0ZXIgLSBSZW1vdmUgYW4gYXV4aWxsYXJ5IGRyaXZlci4KKyAqCXN5c2Rldl9kcml2ZXJfdW5yZWdpc3RlciAtIFJlbW92ZSBhbiBhdXhpbGlhcnkgZHJpdmVyLgogICoJQGNsczoJQ2xhc3MgZHJpdmVyIGJlbG9uZ3MgdG8uCiAgKglAZHJ2OglEcml2ZXIuCiAgKi8KQEAgLTMwMiw3ICszMDIsNyBAQAogCQkgKiBjb2RlIHRoYXQgc2hvdWxkIGhhdmUgY2FsbGVkIHVzLgogCQkgKi8KIAotCQkvKiBOb3RpZnkgY2xhc3MgYXV4aWxsYXJ5IGRyaXZlcnMgKi8KKwkJLyogTm90aWZ5IGNsYXNzIGF1eGlsaWFyeSBkcml2ZXJzICovCiAJCWxpc3RfZm9yX2VhY2hfZW50cnkoZHJ2LCAmY2xzLT5kcml2ZXJzLCBlbnRyeSkgewogCQkJaWYgKGRydi0+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+bWFza19yZWcgPSBpb3JlbWFwKExOV19QRVJJUEhSQUxfTUFTS19CQVNFLAogCQkJCQlMTldfUEVSSVBIUkFMX01BU0tfU0laRSk7CiAJCWlmIChkbWEtPm1hc2tfcmVnID09IE5VTEwpIHsKLQkJCXByX2VycigiRVJSX01ETUE6Q2FudCBtYXAgcGVyaXBocmFsIGludHIgc3BhY2UgISFcbiIpOworCQkJcHJfZXJyKCJFUlJfTURNQTpDYW4ndCBtYXAgcGVyaXBocmFsIGludHIgc3BhY2UgISFcbiIpOwogCQkJcmV0dXJuIC1FTk9NRU07CiAJCX0KIAl9IGVsc2UKQEAgLTEzNzMsNyArMTM3Myw3IEBACiAJcGNpX3Jlc3RvcmVfc3RhdGUocGNpKTsKIAlyZXQgPSBwY2lfZW5hYmxlX2RldmljZShwY2kpOwogCWlmIChyZXQpIHsKLQkJcHJfZXJyKCJNRE1BOiBkZXZpY2UgY2FudCBiZSBlbmFibGVkIGZvciAleFxuIiwgcGNpLT5kZXZpY2UpOworCQlwcl9lcnIoIk1ETUE6IGRldmljZSBjYW4ndCBiZSBlbmFibGVkIGZvciAleFxuIiwgcGNpLT5kZXZpY2UpOwogCQlyZXR1cm4gcmV0OwogCX0KIAlkZXZpY2UtPnN0YXRlID0gUlVOTklORzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL2ludGVsX21pZF9kbWFfcmVncy5oIGIvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYV9yZWdzLmgKaW5kZXggNzA5ZmVjYi4uYWVhNWVlOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYV9yZWdzLmgKKysrIGIvZHJpdmVycy9kbWEvaW50ZWxfbWlkX2RtYV9yZWdzLmgKQEAgLTE3NCw4ICsxNzQsOCBAQAogICogQGRtYTogZG1hIGRldmljZSBzdHJ1dHVyZSBwb2ludGVyCiAgKiBAYnVzeTogYm9vbCByZXByZXNlbnRpbmcgaWYgY2ggaXMgYnVzeSAoYWN0aXZlIHR4bikgb3Igbm90CiAgKiBAaW5fdXNlOiBib29sIHJlcHJlc2VudGluZyBpZiBjaCBpcyBpbiB1c2Ugb3Igbm90Ci0gKiBAcmF3X3RmcjogcmF3IHRyZiBpbnRlcnJ1cHQgcmVjaWV2ZWQKLSAqIEByYXdfYmxvY2s6IHJhdyBibG9jayBpbnRlcnJ1cHQgcmVjaWV2ZWQKKyAqIEByYXdfdGZyOiByYXcgdHJmIGludGVycnVwdCByZWNlaXZlZAorICogQHJhd19ibG9jazogcmF3IGJsb2NrIGludGVycnVwdCByZWNlaXZlZAogICovCiBzdHJ1Y3QgaW50ZWxfbWlkX2RtYV9jaGFuIHsKIAlzdHJ1Y3QgZG1hX2NoYW4JCWNoYW47CmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9tcGM1MTJ4X2RtYS5jIGIvZHJpdmVycy9kbWEvbXBjNTEyeF9kbWEuYwppbmRleCA0Zjk1ZDMxLi5iOWJhZTk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9tcGM1MTJ4X2RtYS5jCisrKyBiL2RyaXZlcnMvZG1hL21wYzUxMnhfZG1hLmMKQEAgLTMyOCw3ICszMjgsNyBAQAogCXJldHVybiBJUlFfSEFORExFRDsKIH0KIAotLyogcHJvY2Nlc3MgY29tcGxldGVkIGRlc2NyaXB0b3JzICovCisvKiBwcm9jZXNzIGNvbXBsZXRlZCBkZXNjcmlwdG9ycyAqLwogc3RhdGljIHZvaWQgbXBjX2RtYV9wcm9jZXNzX2NvbXBsZXRlZChzdHJ1Y3QgbXBjX2RtYSAqbWRtYSkKIHsKIAlkbWFfY29va2llX3QgbGFzdF9jb29raWUgPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvc3RlX2RtYTQwLmMgYi9kcml2ZXJzL2RtYS9zdGVfZG1hNDAuYwppbmRleCBhZjk1NWRlLi45NGVlMTVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS9zdGVfZG1hNDAuYworKysgYi9kcml2ZXJzL2RtYS9zdGVfZG1hNDAuYwpAQCAtOTAsNyArOTAsNyBAQAogICogQGxsaV9sb2c6IFNhbWUgYXMgYWJvdmUgYnV0IGZvciBsb2dpY2FsIGNoYW5uZWxzLgogICogQGxsaV9wb29sOiBUaGUgcG9vbCB3aXRoIHR3byBlbnRyaWVzIHByZS1hbGxvY2F0ZWQuCiAgKiBAbGxpX2xlbjogTnVtYmVyIG9mIGxsaXMgb2YgY3VycmVudCBkZXNjcmlwdG9yLgotICogQGxsaV9jdXJyZW50OiBOdW1iZXIgb2YgdHJhbnNmZXJlZCBsbGlzLgorICogQGxsaV9jdXJyZW50OiBOdW1iZXIgb2YgdHJhbnNmZXJyZWQgbGxpcy4KICAqIEBsY2xhX2FsbG9jOiBOdW1iZXIgb2YgTENMQSBlbnRyaWVzIGFsbG9jYXRlZC4KICAqIEB0eGQ6IERNQSBlbmdpbmUgc3RydWN0LiBVc2VkIGZvciBhbW9uZyBvdGhlciB0aGluZ3MgZm9yIGNvbW11bmljYXRpb24KICAqIGR1cmluZyBhIHRyYW5zZmVyLgpAQCAtMTIxNCw3ICsxMjE0LDcgQEAKIAlyZXR1cm47CiAKICBlcnI6Ci0JLyogUmVzY3VlIG1hbm91dmVyIGlmIHJlY2VpdmluZyBkb3VibGUgaW50ZXJydXB0cyAqLworCS8qIFJlc2N1ZSBtYW5vZXV2cmUgaWYgcmVjZWl2aW5nIGRvdWJsZSBpbnRlcnJ1cHRzICovCiAJaWYgKGQ0MGMtPnBlbmRpbmdfdHggPiAwKQogCQlkNDBjLT5wZW5kaW5nX3R4LS07CiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZDQwYy0+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+Z3Bpb19kYXRhKQogCQkgICAgfHwgYXRvbWljX3JlYWQoJmRhdGEtPmludGVycnVwdF9oYW5kbGVkKSkKIAkJCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMgYi9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCmluZGV4IDkzMTg3YzMuLjViZDE5NDk2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2h3bW9uL3RtcDEwMi5jCisrKyBiL2RyaXZlcnMvaHdtb24vdG1wMTAyLmMKQEAgLTE2Niw3ICsxNjYsNyBAQAogCiAJaWYgKCFpMmNfY2hlY2tfZnVuY3Rpb25hbGl0eShjbGllbnQtPmFkYXB0ZXIsCiAJCQkJICAgICBJMkNfRlVOQ19TTUJVU19XT1JEX0RBVEEpKSB7Ci0JCWRldl9lcnIoJmNsaWVudC0+ZGV2LCAiYWRhcHRlciBkb2VzbnQgc3VwcG9ydCBTTUJ1cyB3b3JkICIKKwkJZGV2X2VycigmY2xpZW50LT5kZXYsICJhZGFwdGVyIGRvZXNuJ3Qgc3VwcG9ydCBTTUJ1cyB3b3JkICIKIAkJCSJ0cmFuc2FjdGlvbnNcbiIpOwogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MWQuYyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCmluZGV4IDQwMGE4OGIuLjE3Y2YxYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkxZC5jCkBAIC01NTYsNyArNTU2LDcgQEAKIAogLyogTm90ZTogd2Ugc2F2ZSBhbmQgcmVzdG9yZSB0aGUgZmFuIG1pbmltdW0gaGVyZSwgYmVjYXVzZSBpdHMgdmFsdWUgaXMKICAgIGRldGVybWluZWQgaW4gcGFydCBieSB0aGUgZmFuIGRpdmlzb3IuICBUaGlzIGZvbGxvd3MgdGhlIHByaW5jaXBsZSBvZgotICAgbGVhc3Qgc3VwcmlzZTsgdGhlIHVzZXIgZG9lc24ndCBleHBlY3QgdGhlIGZhbiBtaW5pbXVtIHRvIGNoYW5nZSBqdXN0CisgICBsZWFzdCBzdXJwcmlzZTsgdGhlIHVzZXIgZG9lc24ndCBleHBlY3QgdGhlIGZhbiBtaW5pbXVtIHRvIGNoYW5nZSBqdXN0CiAgICBiZWNhdXNlIHRoZSBkaXZpc29yIGNoYW5nZWQuICovCiBzdGF0aWMgc3NpemVfdCBzdG9yZV9mYW5fZGl2KHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsCiAJCQkJY29uc3QgY2hhciAqYnVmLCBzaXplX3QgY291bnQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2h3bW9uL3c4Mzc5MmQuYyBiL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jCmluZGV4IDYzODQxZjguLmYzZTcxMzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jCisrKyBiL2RyaXZlcnMvaHdtb24vdzgzNzkyZC5jCkBAIC0yNDQsNyArMjQ0LDcgQEAKICNkZWZpbmUgVEVNUDFfVE9fUkVHKHZhbCkJKFNFTlNPUlNfTElNSVQoKCh2YWwpIDwgMCA/ICh2YWwpKzB4MTAwKjEwMDAgXAogCQkJCQk6ICh2YWwpKSAvIDEwMDAsIDAsIDB4ZmYpKQogI2RlZmluZSBURU1QMV9GUk9NX1JFRyh2YWwpCSgoKHZhbCkgJiAweDgwID8gKHZhbCktMHgxMDAgOiAodmFsKSkgKiAxMDAwKQotLyogZm9yIHRlbXAyIGFuZCB0ZW1wMywgYmVjYXVzZSB0aGV5IG5lZWQgYWRkdGlvbmFsIHJlc29sdXRpb24gKi8KKy8qIGZvciB0ZW1wMiBhbmQgdGVtcDMsIGJlY2F1c2UgdGhleSBuZWVkIGFkZGl0aW9uYWwgcmVzb2x1dGlvbiAqLwogI2RlZmluZSBURU1QX0FERF9GUk9NX1JFRyh2YWwxLCB2YWwyKSBcCiAJKCgoKHZhbDEpICYgMHg4MCA/ICh2YWwxKS0weDEwMCBcCiAJCTogKHZhbDEpKSAqIDEwMDApICsgKCh2YWwyICYgMHg4MCkgPyA1MDAgOiAwKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMgYi9kcml2ZXJzL2h3bW9uL3c4Mzc5My5jCmluZGV4IGUzYmRlZGYuLjg1NGY5MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaHdtb24vdzgzNzkzLmMKKysrIGIvZHJpdmVycy9od21vbi93ODM3OTMuYwpAQCAtMTkyMSw3ICsxOTIxLDcgQEAKIAlzdHJ1Y3QgdzgzNzkzX2RhdGEgKmRhdGEgPSBpMmNfZ2V0X2NsaWVudGRhdGEoY2xpZW50KTsKIAlpbnQgaSwgajsKIAkvKgotCSAgIFRoZXkgYXJlIHNvbWV3aGF0ICJzdGFibGUiIHJlZ2lzdGVycywgYW5kIHRvIHVwZGF0ZSB0aGVtIGV2ZXJ5dGltZQorCSAgIFRoZXkgYXJlIHNvbWV3aGF0ICJzdGFibGUiIHJlZ2lzdGVycywgYW5kIHRvIHVwZGF0ZSB0aGVtIGV2ZXJ5IHRpbWUKIAkgICB0YWtlcyBzbyBtdWNoIHRpbWUsIGl0J3MganVzdCBub3Qgd29ydGh5LiBVcGRhdGUgdGhlbSBpbiBhIGxvbmcKIAkgICBpbnRlcnZhbCB0byBhdm9pZCBleGNlcHRpb24uCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9hbGdvcy9pMmMtYWxnby1wY2EuYyBiL2RyaXZlcnMvaTJjL2FsZ29zL2kyYy1hbGdvLXBjYS5jCmluZGV4IDJiOWE4ZjUuLjRjYTljZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2FsZ29zL2kyYy1hbGdvLXBjYS5jCisrKyBiL2RyaXZlcnMvaTJjL2FsZ29zL2kyYy1hbGdvLXBjYS5jCkBAIC0zNDMsNyArMzQzLDcgQEAKIAogCXJldCA9IGN1cm1zZzsKICBvdXQ6Ci0JREVCMSgifX19IHRyYW5zZmVyZWQgJWQvJWQgbWVzc2FnZXMuICIKKwlERUIxKCJ9fX0gdHJhbnNmZXJyZWQgJWQvJWQgbWVzc2FnZXMuICIKIAkgICAgICJzdGF0dXMgaXMgJSMwNHguIGNvbnRyb2wgaXMgJSMwNHhcbiIsCiAJICAgICBjdXJtc2csIG51bSwgcGNhX3N0YXR1cyhhZGFwKSwKIAkgICAgIHBjYV9nZXRfY29uKGFkYXApKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTUzNS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNTM1LmMKaW5kZXggOTA2YTNjYTUuLmRkMzY0MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTUzNS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtYWxpMTUzNS5jCkBAIC0yOTUsNyArMjk1LDcgQEAKIAl9CiAKIAkvKiBVbmZvcnR1bmF0ZWx5IHRoZSBBTEkgU01CIGNvbnRyb2xsZXIgbWFwcyAibm8gcmVzcG9uc2UiIGFuZCAiYnVzCi0JICogY29sbGlzaW9uIiBpbnRvIGEgc2luZ2xlIGJpdC4gTm8gcmVwb25zZSBpcyB0aGUgdXN1YWwgY2FzZSBzbyBkb24ndAorCSAqIGNvbGxpc2lvbiIgaW50byBhIHNpbmdsZSBiaXQuIE5vIHJlc3BvbnNlIGlzIHRoZSB1c3VhbCBjYXNlIHNvIGRvbid0CiAJICogZG8gYSBwcmludGsuICBUaGlzIG1lYW5zIHRoYXQgYnVzIGNvbGxpc2lvbnMgZ28gdW5yZXBvcnRlZC4KIAkgKi8KIAlpZiAodGVtcCAmIEFMSTE1MzVfU1RTX0JVU0VSUikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1hbGkxNXgzLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1eDMuYwppbmRleCBiMTRmNmQ2Li44M2U4YTYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1eDMuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWFsaTE1eDMuYwpAQCAtMzE4LDcgKzMxOCw3IEBACiAKIAkvKgogCSAgVW5mb3J0dW5hdGVseSB0aGUgQUxJIFNNQiBjb250cm9sbGVyIG1hcHMgIm5vIHJlc3BvbnNlIiBhbmQgImJ1cwotCSAgY29sbGlzaW9uIiBpbnRvIGEgc2luZ2xlIGJpdC4gTm8gcmVwb25zZSBpcyB0aGUgdXN1YWwgY2FzZSBzbyBkb24ndAorCSAgY29sbGlzaW9uIiBpbnRvIGEgc2luZ2xlIGJpdC4gTm8gcmVzcG9uc2UgaXMgdGhlIHVzdWFsIGNhc2Ugc28gZG9uJ3QKIAkgIGRvIGEgcHJpbnRrLgogCSAgVGhpcyBtZWFucyB0aGF0IGJ1cyBjb2xsaXNpb25zIGdvIHVucmVwb3J0ZWQuCiAJKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGF2aW5jaS5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1kYXZpbmNpLmMKaW5kZXggNTc5NWM4My4uYTc2ZDg1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1kYXZpbmNpLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1kYXZpbmNpLmMKQEAgLTM1NSw3ICszNTUsNyBAQAogCS8qCiAJICogV3JpdGUgbW9kZSByZWdpc3RlciBmaXJzdCBhcyBuZWVkZWQgZm9yIGNvcnJlY3QgYmVoYXZpb3VyCiAJICogb24gT01BUC1MMTM4LCBidXQgZG9uJ3Qgc2V0IFNUVCB5ZXQgdG8gYXZvaWQgYSByYWNlIHdpdGggWFJEWQotCSAqIG9jY3VyaW5nIGJlZm9yZSB3ZSBoYXZlIGxvYWRlZCBEWFIKKwkgKiBvY2N1cnJpbmcgYmVmb3JlIHdlIGhhdmUgbG9hZGVkIERYUgogCSAqLwogCWRhdmluY2lfaTJjX3dyaXRlX3JlZyhkZXYsIERBVklOQ0lfSTJDX01EUl9SRUcsIGZsYWcpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWRlc2lnbndhcmUuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGVzaWdud2FyZS5jCmluZGV4IGI2NjRlZDguLmI3YTUxYzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGVzaWdud2FyZS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZGVzaWdud2FyZS5jCkBAIC0xNzgsNyArMTc4LDcgQEAKICAqIEBsb2NrOiBwcm90ZWN0IHRoaXMgc3RydWN0IGFuZCBJTyByZWdpc3RlcnMKICAqIEBjbGs6IGlucHV0IHJlZmVyZW5jZSBjbG9jawogICogQGNtZF9lcnI6IHJ1biB0aW1lIGhhZHdhcmUgZXJyb3IgY29kZQotICogQG1zZ3M6IHBvaW50cyB0byBhbiBhcnJheSBvZiBtZXNzYWdlcyBjdXJyZW50bHkgYmVpbmcgdHJhbnNmZXJlZAorICogQG1zZ3M6IHBvaW50cyB0byBhbiBhcnJheSBvZiBtZXNzYWdlcyBjdXJyZW50bHkgYmVpbmcgdHJhbnNmZXJyZWQKICAqIEBtc2dzX251bTogdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBtc2dzCiAgKiBAbXNnX3dyaXRlX2lkeDogdGhlIGVsZW1lbnQgaW5kZXggb2YgdGhlIGN1cnJlbnQgdHggbWVzc2FnZSBpbiB0aGUgbXNncwogICoJYXJyYXkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtZWxla3Rvci5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1lbGVrdG9yLmMKaW5kZXggZTViMWEzYi4uMzdlMmU4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1lbGVrdG9yLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1lbGVrdG9yLmMKQEAgLTIyLDcgKzIyLDcgQEAKIC8qIFdpdGggc29tZSBjaGFuZ2VzIGZyb20gS3nDtnN0aSBNw6Rsa2tpIDxrbWFsa2tpQGNjLmh1dC5maT4gYW5kIGV2ZW4KICAgIEZyb2RvIExvb2lqYWFyZCA8ZnJvZG9sQGRkcy5ubD4gKi8KIAotLyogUGFydGlhbHkgcmV3cml0ZW4gYnkgT2xlZyBJLiBWZG92aWtpbiBmb3IgbW1hcHBlZCBzdXBwb3J0IG9mCisvKiBQYXJ0aWFsbHkgcmV3cml0ZW4gYnkgT2xlZyBJLiBWZG92aWtpbiBmb3IgbW1hcHBlZCBzdXBwb3J0IG9mCiAgICBmb3IgQWxwaGEgUHJvY2Vzc29yIEluYy4gVVAtMjAwMCgrKSBib2FyZHMgKi8KIAogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pODAxLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWk4MDEuYwppbmRleCBlZDJlMGM1Li43MmMwNDE1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pODAxLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pODAxLmMKQEAgLTk2LDcgKzk2LDcgQEAKICNkZWZpbmUgU01CSFNUQ0ZHX1NNQl9TTUlfRU4JMgogI2RlZmluZSBTTUJIU1RDRkdfSTJDX0VOCTQKIAotLyogQXV4aWxsYXJ5IGNvbnRyb2wgcmVnaXN0ZXIgYml0cywgSUNINCsgb25seSAqLworLyogQXV4aWxpYXJ5IGNvbnRyb2wgcmVnaXN0ZXIgYml0cywgSUNINCsgb25seSAqLwogI2RlZmluZSBTTUJBVVhDVExfQ1JDCQkxCiAjZGVmaW5lIFNNQkFVWENUTF9FMzJCCQkyCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaWJtX2lpYy5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pYm1faWljLmMKaW5kZXggZTRmODhkYy4uM2MxMTBmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pYm1faWljLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pYm1faWljLmMKQEAgLTQ5NCw3ICs0OTQsNyBAQAogCQlpZiAodW5saWtlbHkocmV0IDwgMCkpCiAJCQlicmVhazsKIAkJZWxzZSBpZiAodW5saWtlbHkocmV0ICE9IGNvdW50KSl7Ci0JCQlEQkcoIiVkOiB4ZmVyX2J5dGVzLCByZXF1ZXN0ZWQgJWQsIHRyYW5zZmVyZWQgJWRcbiIsCisJCQlEQkcoIiVkOiB4ZmVyX2J5dGVzLCByZXF1ZXN0ZWQgJWQsIHRyYW5zZmVycmVkICVkXG4iLAogCQkJCWRldi0+aWR4LCBjb3VudCwgcmV0KTsKIAogCQkJLyogSWYgaXQncyBub3QgYSBsYXN0IHBhcnQgb2YgeGZlciwgYWJvcnQgaXQgKi8KQEAgLTU5Myw3ICs1OTMsNyBAQAogCWlmICh1bmxpa2VseSgoaW5fOCgmaWljLT5leHRzdHMpICYgRVhUU1RTX0JDU19NQVNLKSAhPSBFWFRTVFNfQkNTX0ZSRUUpKXsKIAkJREJHKCIlZDogaWljX3hmZXIsIGJ1cyBpcyBub3QgZnJlZVxuIiwgZGV2LT5pZHgpOwogCi0JCS8qIFVzdWFsbHkgaXQgbWVhbnMgc29tZXRoaW5nIHNlcmlvdXMgaGFzIGhhcHBlbmQuCisJCS8qIFVzdWFsbHkgaXQgbWVhbnMgc29tZXRoaW5nIHNlcmlvdXMgaGFzIGhhcHBlbmVkLgogCQkgKiBXZSAqY2Fubm90KiBoYXZlIHVuZmluaXNoZWQgcHJldmlvdXMgdHJhbnNmZXIKIAkJICogc28gaXQgZG9lc24ndCBtYWtlIGFueSBzZW5zZSB0byB0cnkgdG8gc3RvcCBpdC4KIAkJICogUHJvYmFibHkgd2Ugd2VyZSBub3QgYWJsZSB0byByZWNvdmVyIGZyb20gdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWludGVsLW1pZC5jIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1pbnRlbC1taWQuYwppbmRleCBjNzE0OTI3Li5lODI4YWM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWludGVsLW1pZC5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaW50ZWwtbWlkLmMKQEAgLTE3MCw4ICsxNzAsOCBAQAogLyogUmF3IEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIgKi8KICNkZWZpbmUgSUNfUkFXX0lOVFJfU1RBVAkweDM0CQkvKiBSZWFkIE9ubHkgKi8KICNkZWZpbmUgR0VOX0NBTEwJCSgxIDw8IDExKQkvKiBHZW5lcmFsIGNhbGwgKi8KLSNkZWZpbmUgU1RBUlRfREVUCQkoMSA8PCAxMCkJLyogKFJFKVNUQVJUIG9jY3VyZWQgKi8KLSNkZWZpbmUgU1RPUF9ERVQJCSgxIDw8IDkpCS8qIFNUT1Agb2NjdXJlZCAqLworI2RlZmluZSBTVEFSVF9ERVQJCSgxIDw8IDEwKQkvKiAoUkUpU1RBUlQgb2NjdXJyZWQgKi8KKyNkZWZpbmUgU1RPUF9ERVQJCSgxIDw8IDkpCS8qIFNUT1Agb2NjdXJyZWQgKi8KICNkZWZpbmUgQUNUSVZJVFkJCSgxIDw8IDgpCS8qIEJ1cyBidXN5ICovCiAjZGVmaW5lIFJYX0RPTkUJCQkoMSA8PCA3KQkvKiBOb3QgdXNlZCBpbiBNYXN0ZXIgbW9kZSAqLwogI2RlZmluZQlUWF9BQlJUCQkJKDEgPDwgNikJLyogVHJhbnNtaXQgQWJvcnQgKi8KQEAgLTM3NSw3ICszNzUsNyBAQAogICogSTJDIHNob3VsZCBiZSBkaXNhYmxlZCBwcmlvciB0byBvdGhlciByZWdpc3RlciBvcGVyYXRpb24uIElmIGZhaWxlZCwgYW4KICAqIGVycm5vIGlzIHJldHVybmVkLiBNYXNrIGFuZCBDbGVhciBhbGwgaW50ZXJycHRzLCB0aGlzIHNob3VsZCBiZSBkb25lIGF0CiAgKiBmaXJzdC4gIFNldCBjb21tb24gcmVnaXN0ZXJzIHdoaWNoIHdpbGwgbm90IGJlIG1vZGlmaWVkIGR1cmluZyBub3JtYWwKLSAqIHRyYW5zZmVycywgaW5jbHVkaW5nOiBjb250cm9sbCByZWdpc3RlciwgRklGTyB0aHJlc2hvbGQgYW5kIGNsb2NrIGZyZXEuCisgKiB0cmFuc2ZlcnMsIGluY2x1ZGluZzogY29udHJvbCByZWdpc3RlciwgRklGTyB0aHJlc2hvbGQgYW5kIGNsb2NrIGZyZXEuCiAgKiBDaGVjayBBUEIgZGF0YSB3aWR0aCBhdCBsYXN0LgogICovCiBzdGF0aWMgaW50IGludGVsX21pZF9pMmNfaHdpbml0KHN0cnVjdCBpbnRlbF9taWRfaTJjX3ByaXZhdGUgKmkyYykKQEAgLTQ1NSw3ICs0NTUsNyBAQAogICoKICAqIEJ5IHJlYWRpbmcgcmVnaXN0ZXIgSUNfVFhfQUJSVF9TT1VSQ0UsIHZhcmlvdXMgdHJhbnNmZXIgZXJyb3JzIGNhbiBiZQogICogZGlzdGluZ3VzaGVkLiBBdCBwcmVzZW50LCBubyBjaXJjdW1zdGFuY2VzIGhhdmUgYmVlbiBmb3VuZCBvdXQgdGhhdAotICogbXVsdGlwbGUgZXJyb3JzIHdvdWxkIGJlIG9jY3VyZWQgc2ltdXRhbmVvdXNseSwgc28gd2Ugc2ltcGx5IHVzZSB0aGUKKyAqIG11bHRpcGxlIGVycm9ycyB3b3VsZCBiZSBvY2N1cnJlZCBzaW11dGFuZW91c2x5LCBzbyB3ZSBzaW1wbHkgdXNlIHRoZQogICogcmVnaXN0ZXIgdmFsdWUgZGlyZWN0bHkuCiAgKgogICogQXQgbGFzdCB0aGUgZXJyb3IgYml0cyBhcmUgY2xlYXJlZC4gKE5vdGUgY2xlYXIgQUJSVF9TQllURV9OT1JTVFJUIGJpdCBuZWVkCkBAIC00NjksNyArNDY5LDcgQEAKIAogCS8qIFNpbmdsZSB0cmFuc2ZlciBlcnJvciBjaGVjazoKIAkgKiBBY2NvcmRpbmcgdG8gZGF0YWJvb2ssIFRYL1JYIEZJRk9zIHdvdWxkIGJlIGZsdXNoZWQgd2hlbgotCSAqIHRoZSBhYm9ydCBpbnRlcnJ1cHQgb2NjdXJlZC4KKwkgKiB0aGUgYWJvcnQgaW50ZXJydXB0IG9jY3VycmVkLgogCSAqLwogCWlmIChhYm9ydCAmIEFCUlRfTUFTVEVSX0RJUykKIAkJZGV2X2VycigmYWRhcC0+ZGV2LApAQCAtNTY5LDcgKzU2OSw3IEBACiAgKiBSZXR1cm4gVmFsdWVzOgogICogMAlpZiB0aGUgcmVhZCB0cmFuc2ZlciBzdWNjZWVkcwogICogLUVUSU1FRE9VVAlpZiB3ZSBjYW5ub3QgcmVhZCB0aGUgInJhdyIgaW50ZXJydXB0IHJlZ2lzdGVyCi0gKiAtRUlOVkFMCWlmIGEgdHJhbnNmZXIgYWJvcnQgb2NjdXJlZAorICogLUVJTlZBTAlpZiBhIHRyYW5zZmVyIGFib3J0IG9jY3VycmVkCiAgKgogICogRm9yIGV2ZXJ5IGJ5dGUsIGEgIldSSVRFIiBjb21tYW5kIHdpbGwgYmUgbG9hZGVkIGludG8gSUNfREFUQV9DTUQgcHJpb3IgdG8KICAqIGRhdGEgdHJhbnNmZXIuIFRoZSBhY3R1YWwgIndyaXRlIiBvcGVyYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQgd2hlbiB0aGUKQEAgLTY5Nyw3ICs2OTcsNyBAQAogICogQG51bTogbnVtYmVyIG9mIGkyY19tc2cKICAqCiAgKiBSZXR1cm4gVmFsdWVzOgotICogKwkJbnVtYmVyIG9mIG1lc3NhZ2VzIHRyYW5zZmVyZWQKKyAqICsJCW51bWJlciBvZiBtZXNzYWdlcyB0cmFuc2ZlcnJlZAogICogLUVUSU1FRE9VVAlJZiBjYW5ub3QgZGlzYWJsZSBJMkMgY29udHJvbGxlciBvciByZWFkIElDX1NUQVRVUwogICogLUVJTlZBTAlJZiB0aGUgYWRkcmVzcyBpbiBpMmNfbXNnIGlzIGludmFsaWQKICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLWlzY2guYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaXNjaC5jCmluZGV4IGRkYzI1OGUuLjA2ODJmOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaXNjaC5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtaXNjaC5jCkBAIC0xNDEsNyArMTQxLDcgQEAKICAqIFRoaXMgaXMgdGhlIG1haW4gYWNjZXNzIGVudHJ5IGZvciBpMmMtc2NoIGFjY2VzcwogICogYWRhcCBpcyBpMmNfYWRhcHRlciBwb2ludGVyLCBhZGRyIGlzIHRoZSBpMmMgZGV2aWNlIGJ1cyBhZGRyZXNzLCByZWFkX3dyaXRlCiAgKiAoMCBmb3IgcmVhZCBhbmQgMSBmb3Igd3JpdGUpLCBzaXplIGlzIGkyYyB0cmFuc2FjdGlvbiB0eXBlIGFuZCBkYXRhIGlzIHRoZQotICogdW5pb24gb2YgdHJhbnNhY3Rpb24gZm9yIGRhdGEgdG8gYmUgdHJhbnNmZXJlZCBvciBkYXRhIHJlYWQgZnJvbSBidXMuCisgKiB1bmlvbiBvZiB0cmFuc2FjdGlvbiBmb3IgZGF0YSB0byBiZSB0cmFuc2ZlcnJlZCBvciBkYXRhIHJlYWQgZnJvbSBidXMuCiAgKiByZXR1cm4gMCBmb3Igc3VjY2VzcyBhbmQgb3RoZXJzIGZvciBmYWlsdXJlLgogICovCiBzdGF0aWMgczMyIHNjaF9hY2Nlc3Moc3RydWN0IGkyY19hZGFwdGVyICphZGFwLCB1MTYgYWRkciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbXhzLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW14cy5jCmluZGV4IGNhZjk2ZGMuLjdlNzhmN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbXhzLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1teHMuYwpAQCAtMTQ5LDcgKzE0OSw3IEBACiAJICogV2UgaGF2ZSB0byBjb3B5IHRoZSBzbGF2ZSBhZGRyZXNzICh1OCkgYW5kIGJ1ZmZlciAoYXJiaXRyYXJ5IG51bWJlcgogCSAqIG9mIHU4KSBpbnRvIHRoZSBkYXRhIHJlZ2lzdGVyICh1MzIpLiBUbyBhY2hpZXZlIHRoYXQsIHRoZSB1OCBhcmUgcHV0CiAJICogaW50byB0aGUgTVNCcyBvZiAnZGF0YScgd2hpY2ggaXMgdGhlbiBzaGlmdGVkIGZvciB0aGUgbmV4dCB1OC4gV2hlbgotCSAqIGFwcm9wcmlhdGUsICdkYXRhJyBpcyB3cml0dGVuIHRvIE1YU19JMkNfREFUQS4gU28sIHRoZSBmaXJzdCB1MzIKKwkgKiBhcHByb3ByaWF0ZSwgJ2RhdGEnIGlzIHdyaXR0ZW4gdG8gTVhTX0kyQ19EQVRBLiBTbywgdGhlIGZpcnN0IHUzMgogCSAqIGxvb2tzIGxpa2UgdGhpczoKIAkgKgogCSAqICAzICAgICAgICAgIDIgICAgICAgICAgMSAgICAgICAgICAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLW5vbWFkaWsuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCmluZGV4IDU5NGVkNTAuLmUxMGU1Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtbm9tYWRpay5jCkBAIC0xMjYsOSArMTI2LDkgQEAKIC8qKgogICogc3RydWN0IGkyY19ubWtfY2xpZW50IC0gY2xpZW50IHNwZWNpZmljIGRhdGEKICAqIEBzbGF2ZV9hZHI6IDctYml0IHNsYXZlIGFkZHJlc3MKLSAqIEBjb3VudDogbm8uIGJ5dGVzIHRvIGJlIHRyYW5zZmVyZWQKKyAqIEBjb3VudDogbm8uIGJ5dGVzIHRvIGJlIHRyYW5zZmVycmVkCiAgKiBAYnVmZmVyOiBjbGllbnQgZGF0YSBidWZmZXIKLSAqIEB4ZmVyX2J5dGVzOiBieXRlcyB0cmFuc2ZlcmVkIHRpbGwgbm93CisgKiBAeGZlcl9ieXRlczogYnl0ZXMgdHJhbnNmZXJyZWQgdGlsbCBub3cKICAqIEBvcGVyYXRpb246IGN1cnJlbnQgSTJDIG9wZXJhdGlvbgogICovCiBzdHJ1Y3QgaTJjX25ta19jbGllbnQgewpAQCAtMzMwLDcgKzMzMCw3IEBACiAJICogc2xzdSBkZWZpbmVzIHRoZSBkYXRhIHNldHVwIHRpbWUgYWZ0ZXIgU0NMIGNsb2NrCiAJICogc3RyZXRjaGluZyBpbiB0ZXJtcyBvZiBpMmMgY2xrIGN5Y2xlcy4gVGhlCiAJICogbmVlZGVkIHNldHVwIHRpbWUgZm9yIHRoZSB0aHJlZSBtb2RlcyBhcmUgMjUwbnMsCi0JICogMTAwbnMsIDEwbnMgcmVwZWN0aXZlbHkgdGh1cyBsZWFkaW5nIHRvIHRoZSB2YWx1ZXMKKwkgKiAxMDBucywgMTBucyByZXNwZWN0aXZlbHkgdGh1cyBsZWFkaW5nIHRvIHRoZSB2YWx1ZXMKIAkgKiBvZiAxNCwgNiwgMiBmb3IgYSA0OCBNSHogaTJjIGNsay4KIAkgKi8KIAl3cml0ZWwoZGV2LT5jZmcuc2xzdSA8PCAxNiwgZGV2LT52aXJ0YmFzZSArIEkyQ19TQ1IpOwpAQCAtMzY0LDcgKzM2NCw3IEBACiAJLyoKIAkgKiBzZXQgdGhlIHNwZWVkIG1vZGUuIEN1cnJlbnRseSB3ZSBzdXBwb3J0CiAJICogb25seSBzdGFuZGFyZCBhbmQgZmFzdCBtb2RlIG9mIG9wZXJhdGlvbgotCSAqIFRPRE8gLSBzdXBwb3J0IGZvciBmYXN0IG1vZGUgcGx1cyAodXB0byAxTWIvcykKKwkgKiBUT0RPIC0gc3VwcG9ydCBmb3IgZmFzdCBtb2RlIHBsdXMgKHVwIHRvIDFNYi9zKQogCSAqIGFuZCBoaWdoIHNwZWVkICh1cCB0byAzLjQgTWIvcykKIAkgKi8KIAlpZiAoZGV2LT5jZmcuc20gPiBJMkNfRlJFUV9NT0RFX0ZBU1QpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtczYwMDAuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtczYwMDAuYwppbmRleCBjYWRjMDIxLi5jYjVkMDFlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXM2MDAwLmMKKysrIGIvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zNjAwMC5jCkBAIC0zMTgsNyArMzE4LDcgQEAKIAlyYyA9IHJlcXVlc3RfaXJxKGlmYWNlLT5pcnEsIHM2aTJjX2ludGVycnVwdF9lbnRyeSwKIAkJCSBJUlFGX1NIQVJFRCwgZGV2LT5uYW1lLCBpZmFjZSk7CiAJaWYgKHJjKSB7Ci0JCWRldl9lcnIoJnBfYWRhcC0+ZGV2LCAiczZpMmM6IGNhbnQgZ2V0IElSUSAlZFxuIiwgaWZhY2UtPmlycSk7CisJCWRldl9lcnIoJnBfYWRhcC0+ZGV2LCAiczZpMmM6IGNhbid0IGdldCBJUlEgJWRcbiIsIGlmYWNlLT5pcnEpOwogCQlnb3RvIGVycl9jbGtfZGlzOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zdHUzMDAuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtc3R1MzAwLmMKaW5kZXggMjY2MTM1ZC4uOTk4Nzk2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy1zdHUzMDAuYworKysgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXN0dTMwMC5jCkBAIC00OTcsNyArNDk3LDcgQEAKIAl1MzIgdmFsOwogCWludCBpID0gMDsKIAotCS8qIExvY2F0ZSB0aGUgYXByb3ByaWF0ZSBjbG9jayBzZXR0aW5nICovCisJLyogTG9jYXRlIHRoZSBhcHByb3ByaWF0ZSBjbG9jayBzZXR0aW5nICovCiAJd2hpbGUgKGkgPCBBUlJBWV9TSVpFKHN0dTMwMF9jbGt0YWJsZSkgLSAxICYmCiAJICAgICAgIHN0dTMwMF9jbGt0YWJsZVtpXS5yYXRlIDwgY2xrcmF0ZSkKIAkJaSsrOwpAQCAtNjQ0LDcgKzY0NCw3IEBACiAJcmV0ID0gc3R1MzAwX2F3YWl0X2V2ZW50KGRldiwgU1RVMzAwX0VWRU5UXzYpOwogCiAJLyoKLQkgKiBDbGVhciBhbnkgcGVuZGluZyBFVkVOVCA2IG5vIG1hdHRlciB3aGF0IGhhcHBlbmQgZHVyaW5nCisJICogQ2xlYXIgYW55IHBlbmRpbmcgRVZFTlQgNiBubyBtYXR0ZXIgd2hhdCBoYXBwZW5lZCBkdXJpbmcKIAkgKiBhd2FpdF9ldmVudC4KIAkgKi8KIAl2YWwgPSBzdHUzMDBfcjgoZGV2LT52aXJ0YmFzZSArIEkyQ19DUik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXRlZ3JhLmMgYi9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXRlZ3JhLmMKaW5kZXggMzkyMWY2Ni4uYjRhYjM5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvYnVzc2VzL2kyYy10ZWdyYS5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMtdGVncmEuYwpAQCAtMzg2LDcgKzM4Niw3IEBACiAJCWR2Y193cml0ZWwoaTJjX2RldiwgRFZDX1NUQVRVU19JMkNfRE9ORV9JTlRSLCBEVkNfU1RBVFVTKTsKIAlyZXR1cm4gSVJRX0hBTkRMRUQ7CiBlcnI6Ci0JLyogQW4gZXJyb3Igb2NjdXJlZCwgbWFzayBhbGwgaW50ZXJydXB0cyAqLworCS8qIEFuIGVycm9yIG9jY3VycmVkLCBtYXNrIGFsbCBpbnRlcnJ1cHRzICovCiAJdGVncmFfaTJjX21hc2tfaXJxKGkyY19kZXYsIEkyQ19JTlRfTk9fQUNLIHwgSTJDX0lOVF9BUkJJVFJBVElPTl9MT1NUIHwKIAkJSTJDX0lOVF9QQUNLRVRfWEZFUl9DT01QTEVURSB8IEkyQ19JTlRfVFhfRklGT19EQVRBX1JFUSB8CiAJCUkyQ19JTlRfUlhfRklGT19EQVRBX1JFUSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2kyYy9idXNzZXMvaTJjLXhpaWMuYyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMteGlpYy5jCmluZGV4IDlmYmQ3ZTYuLmU5ZDVmZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMteGlpYy5jCisrKyBiL2RyaXZlcnMvaTJjL2J1c3Nlcy9pMmMteGlpYy5jCkBAIC0yMSw3ICsyMSw3IEBACiAgKiB0byB0aGUgYXV0b21vdGl2ZSBkZXZlbG9wbWVudCBib2FyZCBSdXNzZWxsdmlsbGUuIFRoZSBjb3B5cmlnaHQgaG9sZGVyCiAgKiBhcyBzZWVuIGluIHRoZSBoZWFkZXIgaXMgSW50ZWwgY29ycG9yYXRpb24uCiAgKiBNb2NlYW4gTGFib3JhdG9yaWVzIGZvcmtlZCBvZmYgdGhlIEdOVS9MaW51eCBwbGF0Zm9ybSB3b3JrIGludG8gYQotICogc2VwYXJhdGUgY29tcGFueSBjYWxsZWQgUGVsYWdpY29yZSBBQiwgd2hpY2ggY29tbWl0ZWQgdGhlIGNvZGUgdG8gdGhlCisgKiBzZXBhcmF0ZSBjb21wYW55IGNhbGxlZCBQZWxhZ2ljb3JlIEFCLCB3aGljaCBjb21taXR0ZWQgdGhlIGNvZGUgdG8gdGhlCiAgKiBrZXJuZWwuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvaTJjLWNvcmUuYyBiL2RyaXZlcnMvaTJjL2kyYy1jb3JlLmMKaW5kZXggZTVmNzZhMC4uNzBjMzBlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvaTJjLWNvcmUuYworKysgYi9kcml2ZXJzL2kyYy9pMmMtY29yZS5jCkBAIC0zNDgsNyArMzQ4LDcgQEAKIAogCiAvKiBUaGlzIGlzIGEgcGVybWlzc2l2ZSBhZGRyZXNzIHZhbGlkaXR5IGNoZWNrLCBJMkMgYWRkcmVzcyBtYXAgY29uc3RyYWludHMKLSAqIGFyZSBwdXJwb3NlZGx5IG5vdCBlbmZvcmNlZCwgZXhjZXB0IGZvciB0aGUgZ2VuZXJhbCBjYWxsIGFkZHJlc3MuICovCisgKiBhcmUgcHVycG9zZWx5IG5vdCBlbmZvcmNlZCwgZXhjZXB0IGZvciB0aGUgZ2VuZXJhbCBjYWxsIGFkZHJlc3MuICovCiBzdGF0aWMgaW50IGkyY19jaGVja19jbGllbnRfYWRkcl92YWxpZGl0eShjb25zdCBzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQogewogCWlmIChjbGllbnQtPmZsYWdzICYgSTJDX0NMSUVOVF9URU4pIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2N5ODJjNjkzLmMgYi9kcml2ZXJzL2lkZS9jeTgyYzY5My5jCmluZGV4IDkzODNmNjcuLjNiZTYwZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2N5ODJjNjkzLmMKKysrIGIvZHJpdmVycy9pZGUvY3k4MmM2OTMuYwpAQCAtNjcsNyArNjcsNyBAQAogCiAJLyoKIAkgKiBub3RlOiBiZWxvdyB3ZSBzZXQgdGhlIHZhbHVlIGZvciBCdXMgTWFzdGVyIElERSBUaW1lT3V0IFJlZ2lzdGVyCi0JICogSSdtIG5vdCBhYnNvbHV0bHkgc3VyZSB3aGF0IHRoaXMgZG9lcywgYnV0IGl0IHNvbHZlZCBteSBwcm9ibGVtCisJICogSSdtIG5vdCBhYnNvbHV0ZWx5IHN1cmUgd2hhdCB0aGlzIGRvZXMsIGJ1dCBpdCBzb2x2ZWQgbXkgcHJvYmxlbQogCSAqIHdpdGggSURFIERNQSBhbmQgc291bmQsIHNvIEkgbm93IGNhbiBwbGF5IHNvdW5kIGFuZCB3b3JrIHdpdGgKIAkgKiBteSBJREUgZHJpdmVyIGF0IHRoZSBzYW1lIHRpbWUgOi0pCiAJICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYyBiL2RyaXZlcnMvaWRlL2lkZS1mbG9wcHkuYwppbmRleCA1NDA2YjZlLi41YTcwMmQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS9pZGUtZmxvcHB5LmMKKysrIGIvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jCkBAIC0xMDcsNyArMTA3LDcgQEAKIHN0YXRpYyB2b2lkIGlkZV9mbG9wcHlfcmVwb3J0X2Vycm9yKHN0cnVjdCBpZGVfZGlza19vYmogKmZsb3BweSwKIAkJCQkgICAgc3RydWN0IGlkZV9hdGFwaV9wYyAqcGMpCiB7Ci0JLyogc3VwcmVzcyBlcnJvciBtZXNzYWdlcyByZXN1bHRpbmcgZnJvbSBNZWRpdW0gbm90IHByZXNlbnQgKi8KKwkvKiBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcyByZXN1bHRpbmcgZnJvbSBNZWRpdW0gbm90IHByZXNlbnQgKi8KIAlpZiAoZmxvcHB5LT5zZW5zZV9rZXkgPT0gMHgwMiAmJgogCSAgICBmbG9wcHktPmFzYyAgICAgICA9PSAweDNhICYmCiAJICAgIGZsb3BweS0+YXNjcSAgICAgID09IDB4MDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYyBiL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCmluZGV4IDM0Yjk4NzIuLjYwMGM4OWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCisrKyBiL2RyaXZlcnMvaWRlL2lkZS10YXNrZmlsZS5jCkBAIC0yMDEsNyArMjAxLDcgQEAKIAl1OCBzdGF0OwogCiAJLyoKLQkgKiBMYXN0IHNlY3RvciB3YXMgdHJhbnNmZXJlZCwgd2FpdCB1bnRpbCBkZXZpY2UgaXMgcmVhZHkuICBUaGlzIGNhbgorCSAqIExhc3Qgc2VjdG9yIHdhcyB0cmFuc2ZlcnJlZCwgd2FpdCB1bnRpbCBkZXZpY2UgaXMgcmVhZHkuICBUaGlzIGNhbgogCSAqIHRha2UgdXAgdG8gNiBtcyBvbiBzb21lIEFUQVBJIGRldmljZXMsIHNvIHdlIHdpbGwgd2FpdCBtYXggMTAgbXMuCiAJICovCiAJZm9yIChyZXRyaWVzID0gMDsgcmV0cmllcyA8IDEwMDA7IHJldHJpZXMrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvcGlpeC5jIGIvZHJpdmVycy9pZGUvcGlpeC5jCmluZGV4IDFiZGNhNDkuLmI1OWQwNGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3BpaXguYworKysgYi9kcml2ZXJzL2lkZS9waWl4LmMKQEAgLTgsOCArOCw4IEBACiAgKgogICogRG9jdW1lbnRhdGlvbjoKICAqCi0gKglQdWJsaWNhbGx5IGF2YWlsYWJsZSBmcm9tIEludGVsIHdlYiBzaXRlLiBFcnJhdGEgZG9jdW1lbnRhdGlvbgotICogaXMgYWxzbyBwdWJsaWNhbGx5IGF2YWlsYWJsZS4gQXMgYW4gYWlkZSB0byBhbnlvbmUgaGFja2luZyBvbiB0aGlzCisgKglQdWJsaWNseSBhdmFpbGFibGUgZnJvbSBJbnRlbCB3ZWIgc2l0ZS4gRXJyYXRhIGRvY3VtZW50YXRpb24KKyAqIGlzIGFsc28gcHVibGljbHkgYXZhaWxhYmxlLiBBcyBhbiBhaWRlIHRvIGFueW9uZSBoYWNraW5nIG9uIHRoaXMKICAqIGRyaXZlciB0aGUgbGlzdCBvZiBlcnJhdGEgdGhhdCBhcmUgcmVsZXZhbnQgaXMgYmVsb3cuZ29pbmcgYmFjayB0bwogICogUElJWDQuIE9sZGVyIGRldmljZSBkb2N1bWVudGF0aW9uIGlzIG5vdyBhIGJpdCB0cmlja3kgdG8gZmluZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lkZS9zaXM1NTEzLmMgYi9kcml2ZXJzL2lkZS9zaXM1NTEzLmMKaW5kZXggZGI3ZjRlNy4uNGEwMDIyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pZGUvc2lzNTUxMy5jCisrKyBiL2RyaXZlcnMvaWRlL3NpczU1MTMuYwpAQCAtNTMsNyArNTMsNyBAQAogCiAjZGVmaW5lIERSVl9OQU1FICJzaXM1NTEzIgogCi0vKiByZWdpc3RlcnMgbGF5b3V0IGFuZCBpbml0IHZhbHVlcyBhcmUgY2hpcHNldCBmYW1pbHkgZGVwZW5kYW50ICovCisvKiByZWdpc3RlcnMgbGF5b3V0IGFuZCBpbml0IHZhbHVlcyBhcmUgY2hpcHNldCBmYW1pbHkgZGVwZW5kZW50ICovCiAKICNkZWZpbmUgQVRBXzE2CQkweDAxCiAjZGVmaW5lIEFUQV8zMwkJMHgwMgpAQCAtNDA2LDcgKzQwNiw3IEBACiAJCQkJCXBjaV9uYW1lKGRldikpOwogCQkJCWNoaXBzZXRfZmFtaWx5ID0gQVRBXzEzMzsKIAotCQkJCS8qIENoZWNrIGZvciA1NTEzIGNvbXBhYmlsaXR5IG1hcHBpbmcKKwkJCQkvKiBDaGVjayBmb3IgNTUxMyBjb21wYXRpYmlsaXR5IG1hcHBpbmcKIAkJCQkgKiBXZSBtdXN0IHVzZSB0aGlzLCBlbHNlIHRoZSBwb3J0IGVuYWJsZWQgY29kZSB3aWxsIGZhaWwsCiAJCQkJICogYXMgaXQgZXhwZWN0cyB0aGUgZW5hYmxlYml0cyBhdCAweDRhLgogCQkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvdHJpZmxleC5jIGIvZHJpdmVycy9pZGUvdHJpZmxleC5jCmluZGV4IDc5NTM0NDcuLmU1M2ExYjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaWRlL3RyaWZsZXguYworKysgYi9kcml2ZXJzL2lkZS90cmlmbGV4LmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIExvb3NlbHkgYmFzZWQgb24gdGhlIHBpaXggJiBzdndrcyBkcml2ZXJzLgogICoKICAqIERvY3VtZW50YXRpb246Ci0gKglOb3QgcHVibGljYWxseSBhdmFpbGFibGUuCisgKglOb3QgcHVibGljbHkgYXZhaWxhYmxlLgogICovCiAKICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pZGUvdmlhODJjeHh4LmMgYi9kcml2ZXJzL2lkZS92aWE4MmN4eHguYwppbmRleCBkMmEwOTk3Li5mNDZmNDljIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lkZS92aWE4MmN4eHguYworKysgYi9kcml2ZXJzL2lkZS92aWE4MmN4eHguYwpAQCAtMTQsNyArMTQsNyBAQAogICoJQW5kcmUgSGVkcmljawogICoKICAqIERvY3VtZW50YXRpb246Ci0gKglPYnNvbGV0ZSBkZXZpY2UgZG9jdW1lbnRhdGlvbiBwdWJsaWNhbGx5IGF2YWlsYWJsZSBmcm9tIHZpYS5jb20udHcKKyAqCU9ic29sZXRlIGRldmljZSBkb2N1bWVudGF0aW9uIHB1YmxpY2x5IGF2YWlsYWJsZSBmcm9tIHZpYS5jb20udHcKICAqCUN1cnJlbnQgZGV2aWNlIGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIHVuZGVyIE5EQSBvbmx5CiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX2FlLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfYWUuYwppbmRleCA2MmFmNzQyLi4yNGY5ZTNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfYWUuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfYWUuYwpAQCAtMTU3LDcgKzE1Nyw3IEBACiAJaW50IHN0YXR1czsKIAogCS8qCi0JICogcmV0cmVpdmUgdGhlIG1lc3NhZ2UKKwkgKiByZXRyaWV2ZSB0aGUgbWVzc2FnZQogCSAqLwogCXdyID0gYzJfbXFfY29uc3VtZShtcSk7CiAJaWYgKCF3cikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9xcC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3FwLmMKaW5kZXggZDhmNGJiOC4uMGQ3YjZmMjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9xcC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9hbXNvMTEwMC9jMl9xcC5jCkBAIC02MTIsNyArNjEyLDcgQEAKIAljMl91bmxvY2tfY3FzKHNlbmRfY3EsIHJlY3ZfY3EpOwogCiAJLyoKLQkgKiBEZXN0b3J5IHFwIGluIHRoZSBybmljLi4uCisJICogRGVzdHJveSBxcCBpbiB0aGUgcm5pYy4uLgogCSAqLwogCWRlc3Ryb3lfcXAoYzJkZXYsIHFwKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2Ftc28xMTAwL2MyX3dyLmggYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfd3IuaAppbmRleCBjNjVmYmRkLi44ZDRiNGNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfd3IuaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvYW1zbzExMDAvYzJfd3IuaApAQCAtMTMxLDcgKzEzMSw3IEBACiAJICogICAgICAgICAgQWxsIHRoZSBwcmVjZWRpbmcgSURzIGFyZSBmaXhlZCwgYW5kIG11c3Qgbm90IGNoYW5nZS4KIAkgKiAgICAgICAgICBZb3UgY2FuIGFkZCBuZXcgSURzLCBidXQgbXVzdCBub3QgcmVtb3ZlIG9yIHJlb3JkZXIKIAkgKiAgICAgICAgICBhbnkgSURzLiBJZiB5b3UgZG8sIFlPVSB3aWxsIHJ1aW4gYW55IGhvcGUgb2YKLQkgKiAgICAgICAgICBjb21wYXRhYmlsaXR5IGJldHdlZW4gdmVyc2lvbnMuCisJICogICAgICAgICAgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIHZlcnNpb25zLgogCSAqLwogCUNDV1JfTEFTVCwKIApAQCAtMjQyLDcgKzI0Miw3IEBACiAvKgogICogIHRvIGZpeCBidWcgMTgxNSB3ZSBkZWZpbmUgdGhlIG1heCBzaXplIGFsbG93YWJsZSBvZiB0aGUKICAqICB0ZXJtaW5hdGUgbWVzc2FnZSAocGVyIHRoZSBJRVRGIHNwZWMpLlJlZmVyIHRvIHRoZSBJRVRGCi0gKiAgcHJvdG9jYWwgc3BlY2lmaWNhdGlvbiwgc2VjdGlvbiAxMi4xLjYsIHBhZ2UgNjQpCisgKiAgcHJvdG9jb2wgc3BlY2lmaWNhdGlvbiwgc2VjdGlvbiAxMi4xLjYsIHBhZ2UgNjQpCiAgKiAgVGhlIG1lc3NhZ2UgaXMgcHJlZml4ZWQgYnkgMjAgdHlwZXMgb2YgRERQIGluZm8uCiAgKgogICogIFRoZW4gdGhlIG1lc3NhZ2UgaGFzIDYgYnl0ZXMgZm9yIHRoZSB0ZXJtaW5hdGUgY29udHJvbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2RyaXZlci5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2RyaXZlci5jCmluZGV4IDQ3ZGI0YmYuLjU4YzBlNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9kcml2ZXIuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZHJpdmVyLmMKQEAgLTIzOTIsNyArMjM5Miw3IEBACiAJLyoKIAkgKiBjbGVhciBTZXJkZXNFbmFibGUgYW5kIHR1cm4gdGhlIGxlZHMgb2ZmOyBkbyB0aGlzIGhlcmUgYmVjYXVzZQogCSAqIHdlIGFyZSB1bmxvYWRpbmcsIHNvIGRvbid0IGNvdW50IG9uIGludGVycnVwdHMgdG8gbW92ZSBhbG9uZwotCSAqIFR1cm4gdGhlIExFRHMgb2ZmIGV4cGxpY3RseSBmb3IgdGhlIHNhbWUgcmVhc29uLgorCSAqIFR1cm4gdGhlIExFRHMgb2ZmIGV4cGxpY2l0bHkgZm9yIHRoZSBzYW1lIHJlYXNvbi4KIAkgKi8KIAlkZC0+aXBhdGhfZl9xdWlldF9zZXJkZXMoZGQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfZmlsZV9vcHMuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9maWxlX29wcy5jCmluZGV4IDZkNGIyOWMuLmVlNzlhMmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9maWxlX29wcy5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9maWxlX29wcy5jCkBAIC0xOTcyLDcgKzE5NzIsNyBAQAogCSAqIDAgdG8gMS4gIFNvIGZvciB0aG9zZSBjaGlwcywgd2UgdHVybiBpdCBvZmYgYW5kIHRoZW4gYmFjayBvbi4KIAkgKiBUaGlzIHdpbGwgKHZlcnkgYnJpZWZseSkgYWZmZWN0IGFueSBvdGhlciBvcGVuIHBvcnRzLCBidXQgdGhlCiAJICogZHVyYXRpb24gaXMgdmVyeSBzaG9ydCwgYW5kIHRoZXJlZm9yZSBpc24ndCBhbiBpc3N1ZS4gIFdlCi0JICogZXhwbGljdGx5IHNldCB0aGUgaW4tbWVtb3J5IHRhaWwgY29weSB0byAwIGJlZm9yZWhhbmQsIHNvIHdlCisJICogZXhwbGljaXRseSBzZXQgdGhlIGluLW1lbW9yeSB0YWlsIGNvcHkgdG8gMCBiZWZvcmVoYW5kLCBzbyB3ZQogCSAqIGRvbid0IGhhdmUgdG8gd2FpdCB0byBiZSBzdXJlIHRoZSBETUEgdXBkYXRlIGhhcyBoYXBwZW5lZAogCSAqIChjaGlwIHJlc2V0cyBoZWFkL3RhaWwgdG8gMCBvbiB0cmFuc2l0aW9uIHRvIGVuYWJsZSkuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfaW5pdF9jaGlwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfaW5pdF9jaGlwLmMKaW5kZXggZmVmMGY0Mi4uN2MxZWViZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX2luaXRfY2hpcC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF9pbml0X2NoaXAuYwpAQCAtMzM1LDcgKzMzNSw3IEBACiAgKiBAZGQ6IHRoZSBpbmZpbmlwYXRoIGRldmljZQogICoKICAqIHNhbml0eSBjaGVjayBhdCBsZWFzdCBzb21lIG9mIHRoZSB2YWx1ZXMgYWZ0ZXIgcmVzZXQsIGFuZAotICogZW5zdXJlIG5vIHJlY2VpdmUgb3IgdHJhbnNtaXQgKGV4cGxpY3RseSwgaW4gY2FzZSByZXNldAorICogZW5zdXJlIG5vIHJlY2VpdmUgb3IgdHJhbnNtaXQgKGV4cGxpY2l0bHksIGluIGNhc2UgcmVzZXQKICAqIGZhaWxlZAogICovCiBzdGF0aWMgaW50IGluaXRfY2hpcF9yZXNldChzdHJ1Y3QgaXBhdGhfZGV2ZGF0YSAqZGQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdWQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91ZC5jCmluZGV4IDc0MjA3MTUuLmU4YTJhOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91ZC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91ZC5jCkBAIC04Niw3ICs4Niw3IEBACiAJfQogCiAJLyoKLQkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWVkIHRoZSBkYXRhIGV2ZW4gaWYgbm90CisJICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VkZSB0aGUgZGF0YSBldmVuIGlmIG5vdAogCSAqIHByZXNlbnQgb24gdGhlIHdpcmUuCiAJICovCiAJbGVuZ3RoID0gc3dxZS0+bGVuZ3RoOwpAQCAtNTE1LDcgKzUxNSw3IEBACiAJfQogCiAJLyoKLQkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWVkIHRoZSBkYXRhIGV2ZW4gaWYgbm90CisJICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VkZSB0aGUgZGF0YSBldmVuIGlmIG5vdAogCSAqIHByZXNlbnQgb24gdGhlIHdpcmUuCiAJICovCiAJd2MuYnl0ZV9sZW4gPSB0bGVuICsgc2l6ZW9mKHN0cnVjdCBpYl9ncmgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3VzZXJfc2RtYS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L2lwYXRoL2lwYXRoX3VzZXJfc2RtYS5jCmluZGV4IGJlNzhmNjYuLmY1Y2IxM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9pcGF0aC9pcGF0aF91c2VyX3NkbWEuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvaXBhdGgvaXBhdGhfdXNlcl9zZG1hLmMKQEAgLTIzNiw3ICsyMzYsNyBAQAogCXJldHVybiAxICsgKChlcGFnZSAtIHNwYWdlKSA+PiBQQUdFX1NISUZUKTsKIH0KIAotLyogdHJ1bmNhdGUgbGVuZ3RoIHRvIHBhZ2UgYm91bmRyeSAqLworLyogdHJ1bmNhdGUgbGVuZ3RoIHRvIHBhZ2UgYm91bmRhcnkgKi8KIHN0YXRpYyBpbnQgaXBhdGhfdXNlcl9zZG1hX3BhZ2VfbGVuZ3RoKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CiAJY29uc3QgdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBhZGRyICYgflBBR0VfTUFTSzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2NtLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19jbS5jCmluZGV4IGNmYTNhMmIuLjMzYzdlZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2NtLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfY20uYwpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAKIAkJY2xlYW51cF9yZXRyYW5zX2VudHJ5KGNtX25vZGUpOwogCQljbV9ub2RlLT5zdGF0ZSA9IE5FU19DTV9TVEFURV9DTE9TSU5HOwogCQlzZW5kX2FjayhjbV9ub2RlLCBOVUxMKTsKLQkJLyogV2FpdCBmb3IgQUNLIGFzIHRoaXMgaXMgc2ltdWx0YW5vdXMgY2xvc2UuLgorCQkvKiBXYWl0IGZvciBBQ0sgYXMgdGhpcyBpcyBzaW11bHRhbmVvdXMgY2xvc2UuLgogCQkqIEFmdGVyIHdlIHJlY2VpdmUgQUNLLCBkbyBub3Qgc2VuZCBhbnl0aGluZy4uCiAJCSogSnVzdCBybSB0aGUgbm9kZS4uIERvbmUuLiAqLwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2h3LmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19ody5jCmluZGV4IDA4YzE5NDguLjEwZDBhNWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9uZXMvbmVzX2h3LmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfaHcuYwpAQCAtODAsNyArODAsNyBAQAogCiAjaWZkZWYgQ09ORklHX0lORklOSUJBTkRfTkVTX0RFQlVHCiBzdGF0aWMgdW5zaWduZWQgY2hhciAqbmVzX2l3YXJwX3N0YXRlX3N0cltdID0gewotCSJOb24tRXhpc3RhbnQiLAorCSJOb24tRXhpc3RlbnQiLAogCSJJZGxlIiwKIAkiUlRTIiwKIAkiQ2xvc2luZyIsCkBAIC05MSw3ICs5MSw3IEBACiB9OwogCiBzdGF0aWMgdW5zaWduZWQgY2hhciAqbmVzX3RjcF9zdGF0ZV9zdHJbXSA9IHsKLQkiTm9uLUV4aXN0YW50IiwKKwkiTm9uLUV4aXN0ZW50IiwKIAkiQ2xvc2VkIiwKIAkiTGlzdGVuIiwKIAkiU1lOIFNlbnQiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L25lcy9uZXNfbmljLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19uaWMuYwppbmRleCAyYzljMTkzLi5lOTZiOGZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19uaWMuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvbmVzL25lc19uaWMuYwpAQCAtOTAyLDcgKzkwMiw3IEBACiAJCW5lc193cml0ZV9pbmRleGVkKG5lc2RldiwgTkVTX0lEWF9OSUNfVU5JQ0FTVF9BTEwsIG5pY19hY3RpdmUpOwogCX0KIAotCW5lc19kZWJ1ZyhORVNfREJHX05JQ19SWCwgIk51bWJlciBvZiBNQyBlbnRyaWVzID0gJWQsIFByb21pc2NvdXMgPSAlZCwgQWxsIE11bHRpY2FzdCA9ICVkLlxuIiwKKwluZXNfZGVidWcoTkVTX0RCR19OSUNfUlgsICJOdW1iZXIgb2YgTUMgZW50cmllcyA9ICVkLCBQcm9taXNjdW91cyA9ICVkLCBBbGwgTXVsdGljYXN0ID0gJWQuXG4iLAogCQkgIG1jX2NvdW50LCAhIShuZXRkZXYtPmZsYWdzICYgSUZGX1BST01JU0MpLAogCQkgICEhKG5ldGRldi0+ZmxhZ3MgJiBJRkZfQUxMTVVMVEkpKTsKIAlpZiAoIW1jX2FsbF9vbikgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWIuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliLmgKaW5kZXggNzMyMjVlZS4uNzY5YTFkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWIuaAorKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYi5oCkBAIC02NTMsNyArNjUzLDcgQEAKIAogLyogZGV2aWNlIGRhdGEgc3RydWN0IG5vdyBjb250YWlucyBvbmx5ICJnZW5lcmFsIHBlci1kZXZpY2UiIGluZm8uCiAgKiBmaWVsZHMgcmVsYXRlZCB0byBhIHBoeXNpY2FsIElCIHBvcnQgYXJlIGluIGEgcWliX3Bwb3J0ZGF0YSBzdHJ1Y3QsCi0gKiBkZXNjcmliZWQgYWJvdmUpIHdoaWxlIGZpZWxkcyBvbmx5IHVzZWQgYnkgYSBwYXJ0aWN1YWxyIGNoaXAtdHlwZSBhcmUgaW4KKyAqIGRlc2NyaWJlZCBhYm92ZSkgd2hpbGUgZmllbGRzIG9ubHkgdXNlZCBieSBhIHBhcnRpY3VsYXIgY2hpcC10eXBlIGFyZSBpbgogICogYSBxaWJfY2hpcGRhdGEgc3RydWN0LCB3aG9zZSBjb250ZW50cyBhcmUgb3BhcXVlIHRvIHRoaXMgZmlsZS4KICAqLwogc3RydWN0IHFpYl9kZXZkYXRhIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2ZpbGVfb3BzLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9maWxlX29wcy5jCmluZGV4IDc1YmZhZDEuLjQwNmZjYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2ZpbGVfb3BzLmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfZmlsZV9vcHMuYwpAQCAtMTUzOSw3ICsxNTM5LDcgQEAKIAogCQkvKgogCQkgKiBJZiBwcm9jZXNzIGhhcyBOT1QgYWxyZWFkeSBzZXQgaXQncyBhZmZpbml0eSwgc2VsZWN0IGFuZAotCQkgKiByZXNlcnZlIGEgcHJvY2Vzc29yIGZvciBpdCwgYXMgYSByZW5kZXZvdXMgZm9yIGFsbAorCQkgKiByZXNlcnZlIGEgcHJvY2Vzc29yIGZvciBpdCwgYXMgYSByZW5kZXp2b3VzIGZvciBhbGwKIAkJICogdXNlcnMgb2YgdGhlIGRyaXZlci4gIElmIHRoZXkgZG9uJ3QgYWN0dWFsbHkgbGF0ZXIKIAkJICogc2V0IGFmZmluaXR5IHRvIHRoaXMgY3B1LCBvciBzZXQgaXQgdG8gc29tZSBvdGhlciBjcHUsCiAJCSAqIGl0IGp1c3QgbWVhbnMgdGhhdCBzb29uZXIgb3IgbGF0ZXIgd2UgZG9uJ3QgcmVjb21tZW5kCkBAIC0xNjU3LDcgKzE2NTcsNyBAQAogCSAqIDAgdG8gMS4gIFNvIGZvciB0aG9zZSBjaGlwcywgd2UgdHVybiBpdCBvZmYgYW5kIHRoZW4gYmFjayBvbi4KIAkgKiBUaGlzIHdpbGwgKHZlcnkgYnJpZWZseSkgYWZmZWN0IGFueSBvdGhlciBvcGVuIGN0eHRzLCBidXQgdGhlCiAJICogZHVyYXRpb24gaXMgdmVyeSBzaG9ydCwgYW5kIHRoZXJlZm9yZSBpc24ndCBhbiBpc3N1ZS4gIFdlCi0JICogZXhwbGljdGx5IHNldCB0aGUgaW4tbWVtb3J5IHRhaWwgY29weSB0byAwIGJlZm9yZWhhbmQsIHNvIHdlCisJICogZXhwbGljaXRseSBzZXQgdGhlIGluLW1lbW9yeSB0YWlsIGNvcHkgdG8gMCBiZWZvcmVoYW5kLCBzbyB3ZQogCSAqIGRvbid0IGhhdmUgdG8gd2FpdCB0byBiZSBzdXJlIHRoZSBETUEgdXBkYXRlIGhhcyBoYXBwZW5lZAogCSAqIChjaGlwIHJlc2V0cyBoZWFkL3RhaWwgdG8gMCBvbiB0cmFuc2l0aW9uIHRvIGVuYWJsZSkuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE2MTIwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE2MTIwLmMKaW5kZXggNzc0ZGVhOC4uN2RlNGI3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNjEyMC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTYxMjAuYwpAQCAtMTc5OSw3ICsxNzk5LDcgQEAKIAkvKgogCSAqIEtlZXAgY2hpcCBmcm9tIGJlaW5nIGFjY2Vzc2VkIHVudGlsIHdlIGFyZSByZWFkeS4gIFVzZQogCSAqIHdyaXRlcSgpIGRpcmVjdGx5LCB0byBhbGxvdyB0aGUgd3JpdGUgZXZlbiB0aG91Z2ggUUlCX1BSRVNFTlQKLQkgKiBpc250JyBzZXQuCisJICogaXNuJ3QnIHNldC4KIAkgKi8KIAlkZC0+ZmxhZ3MgJj0gfihRSUJfSU5JVFRFRCB8IFFJQl9QUkVTRU5UKTsKIAlkZC0+aW50X2NvdW50ZXIgPSAwOyAvKiBzbyB3ZSBjaGVjayBpbnRlcnJ1cHRzIHdvcmsgYWdhaW4gKi8KQEAgLTIxNzEsNyArMjE3MSw3IEBACiAJCSAqIEluaXQgdGhlIGNvbnRleHQgcmVnaXN0ZXJzIGFsc287IGlmIHdlIHdlcmUKIAkJICogZGlzYWJsZWQsIHRhaWwgYW5kIGhlYWQgc2hvdWxkIGJvdGggYmUgemVybwogCQkgKiBhbHJlYWR5IGZyb20gdGhlIGVuYWJsZSwgYnV0IHNpbmNlIHdlIGRvbid0Ci0JCSAqIGtub3csIHdlIGhhdmUgdG8gZG8gaXQgZXhwbGljdGx5LgorCQkgKiBrbm93LCB3ZSBoYXZlIHRvIGRvIGl0IGV4cGxpY2l0bHkuCiAJCSAqLwogCQl2YWwgPSBxaWJfcmVhZF91cmVnMzIoZGQsIHVyX3JjdmVncmluZGV4dGFpbCwgY3R4dCk7CiAJCXFpYl93cml0ZV91cmVnKGRkLCB1cl9yY3ZlZ3JpbmRleGhlYWQsIHZhbCwgY3R4dCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MjIwLmMgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MjIwLmMKaW5kZXggZGU3OTlmMS4uNzRmZTAzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzIyMC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTcyMjAuYwpAQCAtMjExMSw3ICsyMTExLDcgQEAKIAkvKgogCSAqIEtlZXAgY2hpcCBmcm9tIGJlaW5nIGFjY2Vzc2VkIHVudGlsIHdlIGFyZSByZWFkeS4gIFVzZQogCSAqIHdyaXRlcSgpIGRpcmVjdGx5LCB0byBhbGxvdyB0aGUgd3JpdGUgZXZlbiB0aG91Z2ggUUlCX1BSRVNFTlQKLQkgKiBpc250JyBzZXQuCisJICogaXNuJ3QnIHNldC4KIAkgKi8KIAlkZC0+ZmxhZ3MgJj0gfihRSUJfSU5JVFRFRCB8IFFJQl9QUkVTRU5UKTsKIAlkZC0+aW50X2NvdW50ZXIgPSAwOyAvKiBzbyB3ZSBjaGVjayBpbnRlcnJ1cHRzIHdvcmsgYWdhaW4gKi8KQEAgLTI0NzksNyArMjQ3OSw3IEBACiAJCSAqIHdlIGNvbW1hbmQgdGhlIGxpbmsgZG93bi4gIEFzIHdpdGggd2lkdGgsIG9ubHkgd3JpdGUgdGhlCiAJCSAqIGFjdHVhbCByZWdpc3RlciBpZiB0aGUgbGluayBpcyBjdXJyZW50bHkgZG93biwgb3RoZXJ3aXNlCiAJCSAqIHRha2VzIGVmZmVjdCBvbiBuZXh0IGxpbmsgY2hhbmdlLiAgU2luY2Ugc2V0dGluZyBpcyBiZWluZwotCQkgKiBleHBsaWN0bHkgcmVxdWVzdGVkICh2aWEgTUFEIG9yIHN5c2ZzKSwgY2xlYXIgYXV0b25lZworCQkgKiBleHBsaWNpdGx5IHJlcXVlc3RlZCAodmlhIE1BRCBvciBzeXNmcyksIGNsZWFyIGF1dG9uZWcKIAkJICogZmFpbHVyZSBzdGF0dXMgaWYgc3BlZWQgYXV0b25lZyBpcyBlbmFibGVkLgogCQkgKi8KIAkJcHBkLT5saW5rX3NwZWVkX2VuYWJsZWQgPSB2YWw7CkBAIC0yNzc4LDcgKzI3NzgsNyBAQAogCQkgKiBJbml0IHRoZSBjb250ZXh0IHJlZ2lzdGVycyBhbHNvOyBpZiB3ZSB3ZXJlCiAJCSAqIGRpc2FibGVkLCB0YWlsIGFuZCBoZWFkIHNob3VsZCBib3RoIGJlIHplcm8KIAkJICogYWxyZWFkeSBmcm9tIHRoZSBlbmFibGUsIGJ1dCBzaW5jZSB3ZSBkb24ndAotCQkgKiBrbm93LCB3ZSBoYXZlIHRvIGRvIGl0IGV4cGxpY3RseS4KKwkJICoga25vdywgd2UgaGF2ZSB0byBkbyBpdCBleHBsaWNpdGx5LgogCQkgKi8KIAkJdmFsID0gcWliX3JlYWRfdXJlZzMyKGRkLCB1cl9yY3ZlZ3JpbmRleHRhaWwsIGN0eHQpOwogCQlxaWJfd3JpdGVfdXJlZyhkZCwgdXJfcmN2ZWdyaW5kZXhoZWFkLCB2YWwsIGN0eHQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaWJhNzMyMi5jCmluZGV4IDRhMmQyMWUuLjU1ZGUzY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2liYTczMjIuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pYmE3MzIyLmMKQEAgLTMyOTksNyArMzI5OSw3IEBACiAJLyoKIAkgKiBLZWVwIGNoaXAgZnJvbSBiZWluZyBhY2Nlc3NlZCB1bnRpbCB3ZSBhcmUgcmVhZHkuICBVc2UKIAkgKiB3cml0ZXEoKSBkaXJlY3RseSwgdG8gYWxsb3cgdGhlIHdyaXRlIGV2ZW4gdGhvdWdoIFFJQl9QUkVTRU5UCi0JICogaXNudCcgc2V0LgorCSAqIGlzbid0JyBzZXQuCiAJICovCiAJZGQtPmZsYWdzICY9IH4oUUlCX0lOSVRURUQgfCBRSUJfUFJFU0VOVCB8IFFJQl9CQURJTlRSKTsKIAlkZC0+ZmxhZ3MgfD0gUUlCX0RPSU5HX1JFU0VUOwpAQCAtMzcyNyw3ICszNzI3LDcgQEAKIAkJLyoKIAkJICogQXMgd2l0aCB3aWR0aCwgb25seSB3cml0ZSB0aGUgYWN0dWFsIHJlZ2lzdGVyIGlmIHRoZQogCQkgKiBsaW5rIGlzIGN1cnJlbnRseSBkb3duLCBvdGhlcndpc2UgdGFrZXMgZWZmZWN0IG9uIG5leHQKLQkJICogbGluayBjaGFuZ2UuICBTaW5jZSBzZXR0aW5nIGlzIGJlaW5nIGV4cGxpY3RseSByZXF1ZXN0ZWQKKwkJICogbGluayBjaGFuZ2UuICBTaW5jZSBzZXR0aW5nIGlzIGJlaW5nIGV4cGxpY2l0bHkgcmVxdWVzdGVkCiAJCSAqICh2aWEgTUFEIG9yIHN5c2ZzKSwgY2xlYXIgYXV0b25lZyBmYWlsdXJlIHN0YXR1cyBpZiBzcGVlZAogCQkgKiBhdXRvbmVnIGlzIGVuYWJsZWQuCiAJCSAqLwpAQCAtNDE2Myw3ICs0MTYzLDcgQEAKIAkJICogSW5pdCB0aGUgY29udGV4dCByZWdpc3RlcnMgYWxzbzsgaWYgd2Ugd2VyZQogCQkgKiBkaXNhYmxlZCwgdGFpbCBhbmQgaGVhZCBzaG91bGQgYm90aCBiZSB6ZXJvCiAJCSAqIGFscmVhZHkgZnJvbSB0aGUgZW5hYmxlLCBidXQgc2luY2Ugd2UgZG9uJ3QKLQkJICoga25vdywgd2UgaGF2ZSB0byBkbyBpdCBleHBsaWN0bHkuCisJCSAqIGtub3csIHdlIGhhdmUgdG8gZG8gaXQgZXhwbGljaXRseS4KIAkJICovCiAJCXZhbCA9IHFpYl9yZWFkX3VyZWczMihkZCwgdXJfcmN2ZWdyaW5kZXh0YWlsLCBjdHh0KTsKIAkJcWliX3dyaXRlX3VyZWcoZGQsIHVyX3JjdmVncmluZGV4aGVhZCwgdmFsLCBjdHh0KTsKQEAgLTc0ODMsNyArNzQ4Myw3IEBACiAJLyogICAgICAgQmFzZWxpbmUgV2FuZGVyIENvcnJlY3Rpb24gR2FpbiBbMTM6NC0wXSAobGVhdmUgYXMgZGVmYXVsdCkgKi8KIAkvKiAgICAgICBCYXNlbGluZSBXYW5kZXIgQ29ycmVjdGlvbiBHYWluIFszOjctNV0gKGxlYXZlIGFzIGRlZmF1bHQpICovCiAJLyogICAgICAgRGF0YSBSYXRlIFNlbGVjdCBbNTo3LTZdIChsZWF2ZSBhcyBkZWZhdWx0KSAqLwotCS8qICAgICAgIFJYIFBhcnJhbGVsIFdvcmQgV2lkdGggWzM6MTAtOF0gKGxlYXZlIGFzIGRlZmF1bHQpICovCisJLyogICAgICAgUlggUGFyYWxsZWwgV29yZCBXaWR0aCBbMzoxMC04XSAobGVhdmUgYXMgZGVmYXVsdCkgKi8KIAogCS8qIFJYIFJFU1QgKi8KIAkvKiAgICAgICBTaW5nbGUtIG9yIE11bHRpLWNoYW5uZWwgcmVzZXQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2luaXQuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX2luaXQuYwppbmRleCBmZmVmYjc4Li5hMDFmM2ZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9pbml0LmMKKysrIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfaW5pdC5jCkBAIC0zNDYsNyArMzQ2LDcgQEAKICAqIEBkZDogdGhlIHFsb2dpY19pYiBkZXZpY2UKICAqCiAgKiBzYW5pdHkgY2hlY2sgYXQgbGVhc3Qgc29tZSBvZiB0aGUgdmFsdWVzIGFmdGVyIHJlc2V0LCBhbmQKLSAqIGVuc3VyZSBubyByZWNlaXZlIG9yIHRyYW5zbWl0IChleHBsaWN0bHksIGluIGNhc2UgcmVzZXQKKyAqIGVuc3VyZSBubyByZWNlaXZlIG9yIHRyYW5zbWl0IChleHBsaWNpdGx5LCBpbiBjYXNlIHJlc2V0CiAgKiBmYWlsZWQKICAqLwogc3RhdGljIGludCBpbml0X2FmdGVyX3Jlc2V0KHN0cnVjdCBxaWJfZGV2ZGF0YSAqZGQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl9tYWQuaCBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX21hZC5oCmluZGV4IDE0N2FmZjkuLjc4NDBhYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX21hZC5oCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX21hZC5oCkBAIC03Myw3ICs3Myw3IEBACiAKIAkJc3RydWN0IHsKIAkJCV9fYmUxNglyZXNlcnZlZDsKLQkJCV9fYmUxNglsaWQ7CQkvKiBMSUQgd2hlcmUgY2hhbmdlIG9jY3VyZWQgKi8KKwkJCV9fYmUxNglsaWQ7CQkvKiBMSUQgd2hlcmUgY2hhbmdlIG9jY3VycmVkICovCiAJCQl1OAlyZXNlcnZlZDI7CiAJCQl1OAlsb2NhbF9jaGFuZ2VzOwkvKiBsb3cgYml0IC0gbG9jYWwgY2hhbmdlcyAqLwogCQkJX19iZTMyCW5ld19jYXBfbWFzazsJLyogbmV3IGNhcGFiaWxpdHkgbWFzayAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdHdzaS5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdHdzaS5jCmluZGV4IDZmMzFjYTUuLmRkZGU3MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3R3c2kuYworKysgYi9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl90d3NpLmMKQEAgLTQxLDcgKzQxLDcgQEAKICAqIFFMb2dpY19JQiAiVHdvIFdpcmUgU2VyaWFsIEludGVyZmFjZSIgZHJpdmVyLgogICogT3JpZ2luYWxseSB3cml0dGVuIGZvciBhIG5vdC1xdWl0ZS1pMmMgc2VyaWFsIGVlcHJvbSwgd2hpY2ggaXMKICAqIHN0aWxsIHVzZWQgb24gc29tZSBzdXBwb3J0ZWQgYm9hcmRzLiBMYXRlciBib2FyZHMgaGF2ZSBhZGRlZCBhCi0gKiB2YXJpZXR5IG9mIG90aGVyIHVzZXMsIG1vc3QgYm9hcmQtc3BlY2lmaWMsIHNvIHRlaCBiaXQtYm9mZmluZworICogdmFyaWV0eSBvZiBvdGhlciB1c2VzLCBtb3N0IGJvYXJkLXNwZWNpZmljLCBzbyB0aGUgYml0LWJvZmZpbmcKICAqIHBhcnQgaGFzIGJlZW4gc3BsaXQgb2ZmIHRvIHRoaXMgZmlsZSwgd2hpbGUgdGhlIG90aGVyIHBhcnRzCiAgKiBoYXZlIGJlZW4gbW92ZWQgdG8gY2hpcC1zcGVjaWZpYyBmaWxlcy4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91ZC5jIGIvZHJpdmVycy9pbmZpbmliYW5kL2h3L3FpYi9xaWJfdWQuYwppbmRleCA0YTUxZmQxLi44Mjg2MDlmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91ZC5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VkLmMKQEAgLTExNiw3ICsxMTYsNyBAQAogCX0KIAogCS8qCi0JICogQSBHUkggaXMgZXhwZWN0ZWQgdG8gcHJlY2VlZCB0aGUgZGF0YSBldmVuIGlmIG5vdAorCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZGUgdGhlIGRhdGEgZXZlbiBpZiBub3QKIAkgKiBwcmVzZW50IG9uIHRoZSB3aXJlLgogCSAqLwogCWxlbmd0aCA9IHN3cWUtPmxlbmd0aDsKQEAgLTUyMCw3ICs1MjAsNyBAQAogCQlnb3RvIGRyb3A7CiAKIAkvKgotCSAqIEEgR1JIIGlzIGV4cGVjdGVkIHRvIHByZWNlZWQgdGhlIGRhdGEgZXZlbiBpZiBub3QKKwkgKiBBIEdSSCBpcyBleHBlY3RlZCB0byBwcmVjZWRlIHRoZSBkYXRhIGV2ZW4gaWYgbm90CiAJICogcHJlc2VudCBvbiB0aGUgd2lyZS4KIAkgKi8KIAl3Yy5ieXRlX2xlbiA9IHRsZW4gKyBzaXplb2Yoc3RydWN0IGliX2dyaCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvaHcvcWliL3FpYl91c2VyX3NkbWEuYyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfc2RtYS5jCmluZGV4IDY2MjA4YmMuLjgyNDQyMDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfc2RtYS5jCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC9ody9xaWIvcWliX3VzZXJfc2RtYS5jCkBAIC0yMzksNyArMjM5LDcgQEAKIH0KIAogLyoKLSAqIFRydW5jYXRlIGxlbmd0aCB0byBwYWdlIGJvdW5kcnkuCisgKiBUcnVuY2F0ZSBsZW5ndGggdG8gcGFnZSBib3VuZGFyeS4KICAqLwogc3RhdGljIGludCBxaWJfdXNlcl9zZG1hX3BhZ2VfbGVuZ3RoKHVuc2lnbmVkIGxvbmcgYWRkciwgdW5zaWduZWQgbG9uZyBsZW4pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5oIGIvZHJpdmVycy9pbmZpbmliYW5kL3VscC9pc2VyL2lzY3NpX2lzZXIuaAppbmRleCBmMWRmMDE1Li4yZjAyYWIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2luZmluaWJhbmQvdWxwL2lzZXIvaXNjc2lfaXNlci5oCisrKyBiL2RyaXZlcnMvaW5maW5pYmFuZC91bHAvaXNlci9pc2NzaV9pc2VyLmgKQEAgLTkxLDcgKzkxLDcgQEAKICNkZWZpbmUgU0laRV80SwkoMVVMIDw8IFNISUZUXzRLKQogI2RlZmluZSBNQVNLXzRLCSh+KFNJWkVfNEstMSkpCiAKLQkJCQkJLyogc3VwcG9ydCB1cHRvIDUxMktCIGluIG9uZSBSRE1BICovCisJCQkJCS8qIHN1cHBvcnQgdXAgdG8gNTEyS0IgaW4gb25lIFJETUEgKi8KICNkZWZpbmUgSVNDU0lfSVNFUl9TR19UQUJMRVNJWkUgICAgICAgICAoMHg4MDAwMCA+PiBTSElGVF80SykKICNkZWZpbmUgSVNFUl9ERUZfQ01EX1BFUl9MVU4JCTEyOAogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2pveWRldi5jIGIvZHJpdmVycy9pbnB1dC9qb3lkZXYuYwppbmRleCAzMTgyYzljLi41Njg4YjVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveWRldi5jCisrKyBiL2RyaXZlcnMvaW5wdXQvam95ZGV2LmMKQEAgLTc1OCw3ICs3NTgsNyBAQAogfQogCiAvKgotICogTWFyayBkZXZpY2Ugbm9uLWV4aXN0YW50LiBUaGlzIGRpc2FibGVzIHdyaXRlcywgaW9jdGxzIGFuZAorICogTWFyayBkZXZpY2Ugbm9uLWV4aXN0ZW50LiBUaGlzIGRpc2FibGVzIHdyaXRlcywgaW9jdGxzIGFuZAogICogcHJldmVudHMgbmV3IHVzZXJzIGZyb20gb3BlbmluZyB0aGUgZGV2aWNlLiBBbHJlYWR5IHBvc3RlZAogICogYmxvY2tpbmcgcmVhZHMgd2lsbCBzdGF5LCBob3dldmVyIG5ldyBvbmVzIHdpbGwgZmFpbC4KICAqLwpAQCAtNzc3LDcgKzc3Nyw3IEBACiAJam95ZGV2X2hhbmd1cChqb3lkZXYpOwogCWpveWRldl9yZW1vdmVfY2hyZGV2KGpveWRldik7CiAKLQkvKiBqb3lkZXYgaXMgbWFya2VkIGRlYWQgc28gbm9vbmUgZWxzZSBhY2Nlc3NlcyBqb3lkZXYtPm9wZW4gKi8KKwkvKiBqb3lkZXYgaXMgbWFya2VkIGRlYWQgc28gbm8gb25lIGVsc2UgYWNjZXNzZXMgam95ZGV2LT5vcGVuICovCiAJaWYgKGpveWRldi0+b3BlbikKIAkJaW5wdXRfY2xvc2VfZGV2aWNlKGhhbmRsZSk7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2EzZC5jIGIvZHJpdmVycy9pbnB1dC9qb3lzdGljay9hM2QuYwppbmRleCBkMjU5YjQxLi4xNjM5YWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L2pveXN0aWNrL2EzZC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvam95c3RpY2svYTNkLmMKQEAgLTMsNyArMyw3IEBACiAgKi8KIAogLyoKLSAqIEZQLUdhbWluZyBBc3Nhc2luIDNEIGpveXN0aWNrIGRyaXZlciBmb3IgTGludXgKKyAqIEZQLUdhbWluZyBBc3Nhc3NpbiAzRCBqb3lzdGljayBkcml2ZXIgZm9yIExpbnV4CiAgKi8KIAogLyoKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxsaW51eC9pbnB1dC5oPgogI2luY2x1ZGUgPGxpbnV4L2ppZmZpZXMuaD4KIAotI2RlZmluZSBEUklWRVJfREVTQwkiRlAtR2FtaW5nIEFzc2FzaW4gM0Qgam95c3RpY2sgZHJpdmVyIgorI2RlZmluZSBEUklWRVJfREVTQwkiRlAtR2FtaW5nIEFzc2Fzc2luIDNEIGpveXN0aWNrIGRyaXZlciIKIAogTU9EVUxFX0FVVEhPUigiVm9qdGVjaCBQYXZsaWsgPHZvanRlY2hAdWN3LmN6PiIpOwogTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZGF2aW5jaV9rZXlzY2FuLmMgYi9kcml2ZXJzL2lucHV0L2tleWJvYXJkL2RhdmluY2lfa2V5c2Nhbi5jCmluZGV4IGE5MWVlOTQuLmNkODlkMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQva2V5Ym9hcmQvZGF2aW5jaV9rZXlzY2FuLmMKKysrIGIvZHJpdmVycy9pbnB1dC9rZXlib2FyZC9kYXZpbmNpX2tleXNjYW4uYwpAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBBdXRob3I6IE1pZ3VlbCBBZ3VpbGFyIDxtaWd1ZWwuYWd1aWxhckByaWRnZXJ1bi5jb20+CiAgKgotICogSW50aWFsIENvZGU6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KKyAqIEluaXRpYWwgQ29kZTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9taXNjL2FkeGwzNHguYyBiL2RyaXZlcnMvaW5wdXQvbWlzYy9hZHhsMzR4LmMKaW5kZXggZGU1OTAwZC4uMTQ0ZGRiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2FkeGwzNHguYworKysgYi9kcml2ZXJzL2lucHV0L21pc2MvYWR4bDM0eC5jCkBAIC03MTYsNyArNzE2LDcgQEAKIAlwZGF0YSA9IGRldi0+cGxhdGZvcm1fZGF0YTsKIAlpZiAoIXBkYXRhKSB7CiAJCWRldl9kYmcoZGV2LAotCQkJIk5vIHBsYXRmcm9tIGRhdGE6IFVzaW5nIGRlZmF1bHQgaW5pdGlhbGl6YXRpb25cbiIpOworCQkJIk5vIHBsYXRmb3JtIGRhdGE6IFVzaW5nIGRlZmF1bHQgaW5pdGlhbGl6YXRpb25cbiIpOwogCQlwZGF0YSA9ICZhZHhsMzR4X2RlZmF1bHRfaW5pdDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbWlzYy9rZXlzcGFuX3JlbW90ZS5jIGIvZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMKaW5kZXggYTkzYzUyNS4uZmM2MjI1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMKKysrIGIvZHJpdmVycy9pbnB1dC9taXNjL2tleXNwYW5fcmVtb3RlLmMKQEAgLTMxMiw3ICszMTIsNyBAQAogCQkJcmVtb3RlLT5kYXRhLnRlc3RlciA9IHJlbW90ZS0+ZGF0YS50ZXN0ZXIgPj4gNTsKIAkJCXJlbW90ZS0+ZGF0YS5iaXRzX2xlZnQgLT0gNTsKIAkJfSBlbHNlIHsKLQkJCWVycigiQmFkIG1lc3NhZ2UgcmVjaWV2ZWQsIG5vIHN0b3AgYml0IGZvdW5kLlxuIik7CisJCQllcnIoIkJhZCBtZXNzYWdlIHJlY2VpdmVkLCBubyBzdG9wIGJpdCBmb3VuZC5cbiIpOwogCQl9CiAKIAkJZGV2X2RiZygmcmVtb3RlLT51ZGV2LT5kZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21pc2Mvd2lzdHJvbl9idG5zLmMgYi9kcml2ZXJzL2lucHV0L21pc2Mvd2lzdHJvbl9idG5zLmMKaW5kZXggMTI1MDFkZS4uNTJiNDE5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9taXNjL3dpc3Ryb25fYnRucy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbWlzYy93aXN0cm9uX2J0bnMuYwpAQCAtMjc0LDcgKzI3NCw3IEBACiAJeyBLRV9CTFVFVE9PVEgsIDB4MzAgfSwgICAgICAgICAgICAgICAgICAgICAgLyogRm4rRjEwICovCiAJeyBLRV9LRVksICAgICAgIDB4MzEsIHtLRVlfTUFJTH0gfSwgICAgICAgICAgLyogbWFpbCBidXR0b24gKi8KIAl7IEtFX0tFWSwgICAgICAgMHgzNiwge0tFWV9XV1d9IH0sICAgICAgICAgICAvKiB3d3cgYnV0dG9uICovCi0JeyBLRV9XSUZJLCAgICAgIDB4NzggfSwgICAgICAgICAgICAgICAgICAgICAgLyogc2F0ZWxpdGUgZGlzaCBidXR0b24gKi8KKwl7IEtFX1dJRkksICAgICAgMHg3OCB9LCAgICAgICAgICAgICAgICAgICAgICAvKiBzYXRlbGxpdGUgZGlzaCBidXR0b24gKi8KIAl7IEtFX0VORCwgICAgICAgMCB9CiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L21vdXNlL2JjbTU5NzQuYyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvYmNtNTk3NC5jCmluZGV4IDNhZWFkOTEuLjMxMjY5ODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvbW91c2UvYmNtNTk3NC5jCisrKyBiL2RyaXZlcnMvaW5wdXQvbW91c2UvYmNtNTk3NC5jCkBAIC02MzksNyArNjM5LDcgQEAKICAqIGRldmljZSwgcmVzdWx0aW5nIGluIHRyYWNrcGFkIG1hbGZ1bmN0aW9uIHVuZGVyIGNlcnRhaW4KICAqIGNpcmN1bXN0YW5jZXMuIFRvIGdldCBhcm91bmQgdGhpcyBwcm9ibGVtLCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUKICAqIGV4YW1wbGUgdGhhdCB1dGlsaXplcyB0aGUgVVNCX1FVSVJLX1JFU0VUX1JFU1VNRSBxdWlyayBpbiBvcmRlciB0bwotICogcmVjaWV2ZSBhIHJlc2V0X3Jlc3VtZSByZXF1ZXN0IHJhdGhlciB0aGFuIHRoZSBub3JtYWwgcmVzdW1lLgorICogcmVjZWl2ZSBhIHJlc2V0X3Jlc3VtZSByZXF1ZXN0IHJhdGhlciB0aGFuIHRoZSBub3JtYWwgcmVzdW1lLgogICogU2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIHJlc2V0X3Jlc3VtZSBpcyBlcXVhbCB0byBtb2RlIHN3aXRjaAogICogcGx1cyBzdGFydF90cmFmZmljLCBpdCBzZWVtcyBlYXNpZXIgdG8gYWx3YXlzIGRvIHRoZSBzd2l0Y2ggd2hlbgogICogc3RhcnRpbmcgdHJhZmZpYyBvbiB0aGUgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9tb3VzZS9zeW5hcHRpY3NfaTJjLmMgYi9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljc19pMmMuYwppbmRleCBmNmFhMjZkLi5jYmEzYzg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljc19pMmMuYworKysgYi9kcml2ZXJzL2lucHV0L21vdXNlL3N5bmFwdGljc19pMmMuYwpAQCAtNDYyLDcgKzQ2Miw3IEBACiAJICogV2hpbGUgaW50ZXJydXB0IGRyaXZlbiwgdGhlcmUgaXMgbm8gcmVhbCBuZWVkIHRvIHBvbGwgdGhlIGRldmljZS4KIAkgKiBCdXQgdG91Y2hwYWRzIGFyZSB2ZXJ5IHNlbnNpdGl2ZSwgc28gdGhlcmUgY291bGQgYmUgZXJyb3JzCiAJICogcmVsYXRlZCB0byBwaHlzaWNhbCBlbnZpcm9ubWVudCBhbmQgdGhlIGF0dGVudGlvbiBsaW5lIGlzbid0Ci0JICogbmVjY2VzYXJpbHkgYXNzZXJ0ZWQuIEluIHN1Y2ggY2FzZSB3ZSBjYW4gbG9zZSB0aGUgdG91Y2hwYWQuCisJICogbmVjZXNzYXJpbHkgYXNzZXJ0ZWQuIEluIHN1Y2ggY2FzZSB3ZSBjYW4gbG9zZSB0aGUgdG91Y2hwYWQuCiAJICogV2UgcG9sbCB0aGUgZGV2aWNlIG9uY2UgaW4gVEhSRUFEX0lSUV9TTEVFUF9TRUNTIGFuZAogCSAqIGlmIGVycm9yIGlzIGRldGVjdGVkLCB3ZSB0cnkgdG8gcmVzZXQgYW5kIHJlY29uZmlndXJlIHRoZSB0b3VjaHBhZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvbW91c2UvdnN4eHhhYS5jIGIvZHJpdmVycy9pbnB1dC9tb3VzZS92c3h4eGFhLmMKaW5kZXggYmYyYzBjOC4uZWI5YTNjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC9tb3VzZS92c3h4eGFhLmMKKysrIGIvZHJpdmVycy9pbnB1dC9tb3VzZS92c3h4eGFhLmMKQEAgLTMzNCw3ICszMzQsNyBAQAogCSAqIE06IG1hbnVmYWN0dXJlciBsb2NhdGlvbiBjb2RlCiAJICogUjogcmV2aXNpb24gY29kZQogCSAqIEU6IEVycm9yIGNvZGUuIElmIGl0J3MgaW4gdGhlIHJhbmdlIG9mIDB4MDAuLjB4MWYsIG9ubHkgc29tZQotCSAqICAgIG1pbm9yIHByb2JsZW0gb2NjdXJlZC4gRXJyb3JzID49IDB4MjAgYXJlIGNvbnNpZGVyZWQgYmFkCisJICogICAgbWlub3IgcHJvYmxlbSBvY2N1cnJlZC4gRXJyb3JzID49IDB4MjAgYXJlIGNvbnNpZGVyZWQgYmFkCiAJICogICAgYW5kIHRoZSBkZXZpY2UgbWF5IG5vdCB3b3JrIHByb3Blcmx5Li4uCiAJICogRDogPDAwMTA+ID09IG1vdXNlLCA8MDEwMD4gPT0gdGFibGV0CiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3NlcmlvL2hwX3NkYy5jIGIvZHJpdmVycy9pbnB1dC9zZXJpby9ocF9zZGMuYwppbmRleCA4YzBiNTFjLi40MjIwNjIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL2hwX3NkYy5jCisrKyBiL2RyaXZlcnMvaW5wdXQvc2VyaW8vaHBfc2RjLmMKQEAgLTk1NSw3ICs5NTUsNyBAQAogCUlOSVRfREVMQVlFRF9XT1JLKCZtb2R1bGVsb2FkZXJfd29yaywgcmVxdWVzdF9tb2R1bGVfZGVsYXllZCk7CiAKIAlyZXQgPSBocF9zZGNfaW5pdCgpOwotCS8qIGFmdGVyIHN1Y2Nlc3NmdWxsIGluaXRpYWxpemF0aW9uIGdpdmUgU0RDIHNvbWUgdGltZSB0byBzZXR0bGUKKwkvKiBhZnRlciBzdWNjZXNzZnVsIGluaXRpYWxpemF0aW9uIGdpdmUgU0RDIHNvbWUgdGltZSB0byBzZXR0bGUKIAkgKiBhbmQgdGhlbiBsb2FkIHRoZSBocF9zZGNfbWxjIHVwcGVyIGxheWVyIGRyaXZlciAqLwogCWlmICghcmV0KQogCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJm1vZHVsZWxvYWRlcl93b3JrLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC9zZXJpby94aWxpbnhfcHMyLmMgYi9kcml2ZXJzL2lucHV0L3NlcmlvL3hpbGlueF9wczIuYwppbmRleCA3NTQwYmFmLi44MGJhYTUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lucHV0L3NlcmlvL3hpbGlueF9wczIuYworKysgYi9kcml2ZXJzL2lucHV0L3NlcmlvL3hpbGlueF9wczIuYwpAQCAtMjI1LDcgKzIyNSw3IEBACiAvKioKICAqIHhwczJfb2ZfcHJvYmUgLSBwcm9iZSBtZXRob2QgZm9yIHRoZSBQUy8yIGRldmljZS4KICAqIEBvZl9kZXY6CXBvaW50ZXIgdG8gT0YgZGV2aWNlIHN0cnVjdHVyZQotICogQG1hdGNoOglwb2ludGVyIHRvIHRoZSBzdHVjdHVyZSB1c2VkIGZvciBtYXRjaGluZyBhIGRldmljZQorICogQG1hdGNoOglwb2ludGVyIHRvIHRoZSBzdHJ1Y3R1cmUgdXNlZCBmb3IgbWF0Y2hpbmcgYSBkZXZpY2UKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHByb2JlcyB0aGUgUFMvMiBkZXZpY2UgaW4gdGhlIGRldmljZSB0cmVlLgogICogSXQgaW5pdGlhbGl6ZXMgdGhlIGRyaXZlciBkYXRhIHN0cnVjdHVyZSBhbmQgdGhlIGhhcmR3YXJlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbnRlbC1taWQtdG91Y2guYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vaW50ZWwtbWlkLXRvdWNoLmMKaW5kZXggYzAzMDdiMi4uNjZjOTZiZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi9pbnRlbC1taWQtdG91Y2guYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL2ludGVsLW1pZC10b3VjaC5jCkBAIC01NDIsNyArNTQyLDcgQEAKIAkgKiBBREMgcG93ZXIgb24sIHN0YXJ0LCBlbmFibGUgUEVOREVUIGFuZCBzZXQgbG9vcCBkZWxheQogCSAqIEFEQyBsb29wIGRlbGF5IGlzIHNldCB0byA0LjUgbXMgYXBwcm94aW1hdGVseQogCSAqIExvb3AgZGVsYXkgbW9yZSB0aGFuIHRoaXMgcmVzdWx0cyBpbiBqaXR0ZXIgaW4gYWRjIHJlYWRpbmdzCi0JICogU2V0dGluZyBsb29wIGRlbGF5IHRvIDAgKGNvbnRpbm91cyBsb29wKSBpbiBNQVhJTSBzdG9wcyBQRU5ERVQKKwkgKiBTZXR0aW5nIGxvb3AgZGVsYXkgdG8gMCAoY29udGludW91cyBsb29wKSBpbiBNQVhJTSBzdG9wcyBQRU5ERVQKIAkgKiBpbnRlcnJ1cHQgZ2VuZXJhdGlvbiBzb21ldGltZXMuCiAJICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vdWNiMTQwMF90cy5jIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi91Y2IxNDAwX3RzLmMKaW5kZXggMDI4YTUzNi4uM2I1YjVkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi91Y2IxNDAwX3RzLmMKKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi91Y2IxNDAwX3RzLmMKQEAgLTYsNyArNiw3IEBACiAgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCiAgKgogICogU3BsaXRpbmcgZG9uZSBieTogTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqIElmIHNvbWV0aGluZyBkb2VzbnQgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAorICogSWYgc29tZXRoaW5nIGRvZXNuJ3Qgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAogICogZG9udCBib3RoZXIgTmljb2xhcyBwbGVhc2UgOy0pCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzA1LmMgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcwNS5jCmluZGV4IDZiNWJlNzQuLjk4ZTYxMTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzA1LmMKKysrIGIvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MDUuYwpAQCAtMzA2LDcgKzMwNiw3IEBACiAJZGlnMiA9IHdtLT5kaWdbMl07CiAKIAlpZiAoZW5hYmxlKSB7Ci0JCS8qIGNvbnRpbm91cyBtb2RlICovCisJCS8qIGNvbnRpbnVvdXMgbW9kZSAqLwogCQlpZiAod20tPm1hY2hfb3BzLT5hY2Nfc3RhcnR1cCAmJgogCQkgICAgKHJldCA9IHdtLT5tYWNoX29wcy0+YWNjX3N0YXJ0dXAod20pKSA8IDApCiAJCQlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTIuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzEyLmMKaW5kZXggNzQ5MGIwNS4uMmJjMmZiOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTIuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMi5jCkBAIC00MTksNyArNDE5LDcgQEAKIAlkaWcyID0gd20tPmRpZ1syXTsKIAogCWlmIChlbmFibGUpIHsKLQkJLyogY29udGlub3VzIG1vZGUgKi8KKwkJLyogY29udGludW91cyBtb2RlICovCiAJCWlmICh3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwKSB7CiAJCQlyZXQgPSB3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwKHdtKTsKIAkJCWlmIChyZXQgPCAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTMuYyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205NzEzLmMKaW5kZXggMjM4YjUxMy4uNzNlYzk5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3MTMuYworKysgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTcxMy5jCkBAIC00MzEsNyArNDMxLDcgQEAKIAlkaWczID0gd20tPmRpZ1syXTsKIAogCWlmIChlbmFibGUpIHsKLQkJLyogY29udGlub3VzIG1vZGUgKi8KKwkJLyogY29udGludW91cyBtb2RlICovCiAJCWlmICh3bS0+bWFjaF9vcHMtPmFjY19zdGFydHVwICYmCiAJCQkocmV0ID0gd20tPm1hY2hfb3BzLT5hY2Nfc3RhcnR1cCh3bSkpIDwgMCkKIAkJCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTd4eC1jb3JlLmMgYi9kcml2ZXJzL2lucHV0L3RvdWNoc2NyZWVuL3dtOTd4eC1jb3JlLmMKaW5kZXggNmI3NWM5Zi4uNWRiZTczYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pbnB1dC90b3VjaHNjcmVlbi93bTk3eHgtY29yZS5jCisrKyBiL2RyaXZlcnMvaW5wdXQvdG91Y2hzY3JlZW4vd205N3h4LWNvcmUuYwpAQCAtMzM1LDcgKzMzNSw3IEBACiAJICovCiAJaWYgKCF3bS0+bWFjaF9vcHMtPmFjY19lbmFibGVkIHx8IHdtLT5tYWNoX29wcy0+YWNjX3Blbl9kb3duKSB7CiAJCWlmICh3bS0+cGVuX2lzX2Rvd24gJiYgIXBlbl93YXNfZG93bikgewotCQkJLyogRGF0YSBpcyBub3QgYXZhaWxpYWJsZSBpbW1lZGlhdGVseSBvbiBwZW4gZG93biAqLworCQkJLyogRGF0YSBpcyBub3QgYXZhaWxhYmxlIGltbWVkaWF0ZWx5IG9uIHBlbiBkb3duICovCiAJCQlxdWV1ZV9kZWxheWVkX3dvcmsod20tPnRzX3dvcmtxLCAmd20tPnRzX3JlYWRlciwgMSk7CiAJCX0KIApAQCAtMzU0LDcgKzM1NCw3IEBACiAgKiBDb2RlYyBQRU5ET1dOIGlycSBoYW5kbGVyCiAgKgogICogV2UgaGF2ZSB0byBkaXNhYmxlIHRoZSBjb2RlYyBpbnRlcnJ1cHQgaW4gdGhlIGhhbmRsZXIgYmVjYXVzZSBpdAotICogY2FuIHRha2UgdXB0byAxbXMgdG8gY2xlYXIgdGhlIGludGVycnVwdCBzb3VyY2UuIFdlIHNjaGVkdWxlIGEgdGFzaworICogY2FuIHRha2UgdXAgdG8gMW1zIHRvIGNsZWFyIHRoZSBpbnRlcnJ1cHQgc291cmNlLiBXZSBzY2hlZHVsZSBhIHRhc2sKICAqIGluIGEgd29yayBxdWV1ZSB0byBkbyB0aGUgYWN0dWFsIGludGVyYWN0aW9uIHdpdGggdGhlIGNoaXAuICBUaGUKICAqIGludGVycnVwdCBpcyB0aGVuIGVuYWJsZWQgYWdhaW4gaW4gdGhlIHNsb3cgaGFuZGxlciB3aGVuIHRoZSBzb3VyY2UKICAqIGhhcyBiZWVuIGNsZWFyZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vZGl2YWNhcGkuaCBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9kaXZhY2FwaS5oCmluZGV4IDlmNWI2ODAuLmUzMzBkYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9kaXZhY2FwaS5oCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9kaXZhY2FwaS5oCkBAIC02NzMsNyArNjczLDcgQEAKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiBhdXhpbGxpYXJ5IHN0YXRlcyBmb3Igc3VwcGxlbWVudGFyeSBzZXJ2aWNlcyAgICAgICAgICAgICAgICAgICAgICovCisvKiBhdXhpbGlhcnkgc3RhdGVzIGZvciBzdXBwbGVtZW50YXJ5IHNlcnZpY2VzICAgICAgICAgICAgICAgICAgICAgKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAogI2RlZmluZSBJRExFICAgICAgICAgICAgICAgIDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9pby5oIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2lvLmgKaW5kZXggMGM2YzY1MC4uYTZmMTc1NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2lvLmgKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL2lvLmgKQEAgLTYwLDcgKzYwLDcgQEAKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIHN0cnVjdCBfSVNETl9BREFQVEVSIHsKICB2b2lkICAgICAgICAgICAgICgqIERJUmVxdWVzdCkoUElTRE5fQURBUFRFUiwgRU5USVRZICopIDsKLSBpbnQgICAgICAgICAgICAgICAgIFN0YXRlIDsgLyogZnJvbSBOVDQgMS5zcnYsIGEgZ29vZCBpZGVhLCBidXQgIGEgcG9vciBhY2hpZXZtZW50ICovCisgaW50ICAgICAgICAgICAgICAgICBTdGF0ZSA7IC8qIGZyb20gTlQ0IDEuc3J2LCBhIGdvb2QgaWRlYSwgYnV0ICBhIHBvb3IgYWNoaWV2ZW1lbnQgKi8KICBpbnQgICAgICAgICAgICAgICAgIEluaXRpYWxpemVkIDsKICBpbnQgICAgICAgICBSZWdpc3RlcmVkV2l0aERpZGQgOwogIGludCAgICAgICAgICAgICAgICAgVW5hdmFpbGFibGUgOyAgLyogY2FsbGJhY2sgZnVuY3Rpb24gcG9zc2libGU/ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vbWVzc2FnZS5jIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL21lc3NhZ2UuYwppbmRleCAzNDFlZjE3Li44YzVjNTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vbWVzc2FnZS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi9tZXNzYWdlLmMKQEAgLTI2MzksNyArMjYzOSw3IEBACiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAvKiBsb2NhbCByZXBseSBpZiBhc3NpZ24gdW5zdWNjZXNzZnVsbAorICAgICAgLyogbG9jYWwgcmVwbHkgaWYgYXNzaWduIHVuc3VjY2Vzc2Z1bAogICAgICAgICAgb3IgQjMgcHJvdG9jb2wgYWxsb3dzIG9ubHkgb25lIGxheWVyIDMgY29ubmVjdGlvbgogICAgICAgICAgICBhbmQgYWxyZWFkeSBjb25uZWN0ZWQKICAgICAgICAgICAgICBvciBCMiBwcm90b2NvbCBub3QgYW55IExBUEQKQEAgLTgxODksNyArODE4OSw3IEBACiAgICAgICBkbGNbIDBdID0gMTU7CiAgICAgICBpZihiMl9jb25maWctPmxlbmd0aCA+PSA4KSB7IC8qIFBJQUZTIGNvbnRyb2wgYWJpbGl0aWVzICovCiAgICAgICAgIGRsY1sgN10gPSAxMDsgCi0gICAgICAgIGRsY1sxNl0gPSAyOyAvKiBMZW5ndGggb2YgUElBRlMgZXh0ZW50aW9uICovCisgICAgICAgIGRsY1sxNl0gPSAyOyAvKiBMZW5ndGggb2YgUElBRlMgZXh0ZW5zaW9uICovCiAgICAgICAgIGRsY1sxN10gPSBQSUFGU19VREFUQV9BQklMSVRJRVM7IC8qIGNvbnRyb2wgKFVEQVRBKSBhYmlsaXR5ICovCiAgICAgICAgIGRsY1sxOF0gPSBiMl9jb25maWdfcGFybXNbNF0uaW5mb1swXTsgLyogdmFsdWUgKi8KICAgICAgICAgZGxjWyAwXSA9IDE4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL3BjLmggYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vcGMuaAppbmRleCAxYzY5NDU3Li5iZjZiMDE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vcGMuaAorKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vcGMuaApAQCAtNzAxLDcgKzcwMSw3IEBACiAjZGVmaW5lIFBST1RDQVBfRlJFRTEyICAgIDB4MTAwMCAgLyogbm90IHVzZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgUFJPVENBUF9GUkVFMTMgICAgMHgyMDAwICAvKiBub3QgdXNlZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogI2RlZmluZSBQUk9UQ0FQX0ZSRUUxNCAgICAweDQwMDAgIC8qIG5vdCB1c2VkICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0jZGVmaW5lIFBST1RDQVBfRVhURU5TSU9OIDB4ODAwMCAgLyogdXNlZCBmb3IgZnV0dXJlIGV4dGVudGlvbnMgICAgICAgICAgKi8KKyNkZWZpbmUgUFJPVENBUF9FWFRFTlNJT04gMHg4MDAwICAvKiB1c2VkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucyAgICAgICAgICAqLwogLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qICovCiAvKiBPbmhvb2sgZGF0YSB0cmFuc21pc3Npb24gRVRTMzAwNjU5MDEgKi8KIC8qIE1lc3NhZ2UgVHlwZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL3VtX2lkaS5jIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL2VpY29uL3VtX2lkaS5jCmluZGV4IDY1NjNkYjkuLmFjMGJkZDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9laWNvbi91bV9pZGkuYworKysgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvZWljb24vdW1faWRpLmMKQEAgLTM2Myw3ICszNjMsNyBAQAogCiAJCWlmICgocmV0ID0gKCpjcF9mbikgKG9zX2hhbmRsZSwgZHN0LCBkYXRhLCBsZW5ndGgpKSA+PSAwKSB7CiAJCQkvKgotCQkJICAgQWNrbm93bGVkZ2Ugb25seSBpZiByZWFkIHdhcyBzdWNjZXNzZnVsbAorCQkJICAgQWNrbm93bGVkZ2Ugb25seSBpZiByZWFkIHdhcyBzdWNjZXNzZnVsCiAJCQkgKi8KIAkJCWRpdmFfZGF0YV9xX2Fja19zZWdtZW50NHJlYWQocSk7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9oZmNtdWx0aS5jIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY211bHRpLmMKaW5kZXggNGUzNzgwZC4uZjZmM2M4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY211bHRpLmMKKysrIGIvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY211bHRpLmMKQEAgLTExOCw3ICsxMTgsNyBAQAogICoJLT4gU2VlIGhmY19tdWx0aS5oIGZvciBIRkNfSU9fTU9ERV8qIHZhbHVlcwogICoJQnkgZGVmYXVsdCwgdGhlIElPIG1vZGUgaXMgcGNpIG1lbW9yeSBJTyAoTUVNSU8pLgogICoJU29tZSBjYXJkcyByZXF1aXJlIHNwZWNpZmljIElPIG1vZGUsIHNvIGl0IGNhbm5vdCBiZSBjaGFuZ2VkLgotICoJSXQgbWF5IGJlIHVzZWZ1bGwgdG8gc2V0IElPIG1vZGUgdG8gcmVnaXN0ZXIgaW8gKFJFR0lPKSB0byBzb2x2ZQorICoJSXQgbWF5IGJlIHVzZWZ1bCB0byBzZXQgSU8gbW9kZSB0byByZWdpc3RlciBpbyAoUkVHSU8pIHRvIHNvbHZlCiAgKglQQ0kgYnJpZGdlIHByb2JsZW1zLgogICoJSWYgdW5zdXJlLCBkb24ndCBnaXZlIHRoaXMgcGFyYW1ldGVyLgogICoKQEAgLTkwMyw3ICs5MDMsNyBAQAogLyoKICAqIFNwZWVjaCBEZXNpZ24gcmVzeW5jIGZlYXR1cmUKICAqIE5PVEU6IFRoaXMgaXMgY2FsbGVkIHNvbWV0aW1lcyBvdXRzaWRlIGludGVycnVwdCBoYW5kbGVyLgotICogV2UgbXVzdCBsb2NrIGlycXNhdmUsIHNvIG5vIG90aGVyIGludGVycnVwdCAob3RoZXIgY2FyZCkgd2lsbCBvY2N1cnIhCisgKiBXZSBtdXN0IGxvY2sgaXJxc2F2ZSwgc28gbm8gb3RoZXIgaW50ZXJydXB0IChvdGhlciBjYXJkKSB3aWxsIG9jY3VyIQogICogQWxzbyBtdWx0aXBsZSBpbnRlcnJ1cHRzIG1heSBuZXN0LCBzbyBtdXN0IGxvY2sgZWFjaCBhY2Nlc3MgKGxpc3RzLCBjYXJkKSEKICAqLwogc3RhdGljIGlubGluZSB2b2lkCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjcGNpLmMgYi9kcml2ZXJzL2lzZG4vaGFyZHdhcmUvbUlTRE4vaGZjcGNpLmMKaW5kZXggMTVkMzIzYi4uNDM0M2FiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hhcmR3YXJlL21JU0ROL2hmY3BjaS5jCisrKyBiL2RyaXZlcnMvaXNkbi9oYXJkd2FyZS9tSVNETi9oZmNwY2kuYwpAQCAtMjcyLDcgKzI3Miw3IEBACiAJICogRC0gYW5kIG1vbml0b3IvQ0kgY2hhbm5lbCBhcmUgbm90IGVuYWJsZWQKIAkgKiBTVElPMSBpcyB1c2VkIGFzIG91dHB1dCBmb3IgZGF0YSwgQjErQjIgZnJvbSBTVC0+SU9NK0hGQwogCSAqIFNUSU8yIGlzIHVzZWQgYXMgZGF0YSBpbnB1dCwgQjErQjIgZnJvbSBJT00tPlNUCi0JICogU1QgQi1jaGFubmVsIHNlbmQgZGlzYWJsZWQgLT4gY29udGlub3VzIDFzCisJICogU1QgQi1jaGFubmVsIHNlbmQgZGlzYWJsZWQgLT4gY29udGludW91cyAxcwogCSAqIFRoZSBJT00gc2xvdHMgYXJlIGFsd2F5cyBlbmFibGVkCiAJICovCiAJaWYgKHRlc3RfYml0KEhGQ19DRkdfUENNLCAmaGMtPmNmZykpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfcGNpLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3BjaS5jCmluZGV4IDMxNDcwMjAuLjBjYjA1NDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfcGNpLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19wY2kuYwpAQCAtMTQ2LDcgKzE0Niw3IEBACiAJLyogRC0gYW5kIG1vbml0b3IvQ0kgY2hhbm5lbCBhcmUgbm90IGVuYWJsZWQgKi8KIAkvKiBTVElPMSBpcyB1c2VkIGFzIG91dHB1dCBmb3IgZGF0YSwgQjErQjIgZnJvbSBTVC0+SU9NK0hGQyAqLwogCS8qIFNUSU8yIGlzIHVzZWQgYXMgZGF0YSBpbnB1dCwgQjErQjIgZnJvbSBJT00tPlNUICovCi0JLyogU1QgQi1jaGFubmVsIHNlbmQgZGlzYWJsZWQgLT4gY29udGlub3VzIDFzICovCisJLyogU1QgQi1jaGFubmVsIHNlbmQgZGlzYWJsZWQgLT4gY29udGludW91cyAxcyAqLwogCS8qIFRoZSBJT00gc2xvdHMgYXJlIGFsd2F5cyBlbmFibGVkICovCiAJY3MtPmh3LmhmY3BjaS5jb25uID0gMHgzNjsJLyogc2V0IGRhdGEgZmxvdyBkaXJlY3Rpb25zICovCiAJV3JpdGVfaGZjKGNzLCBIRkNQQ0lfQ09OTkVDVCwgY3MtPmh3LmhmY3BjaS5jb25uKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfc3guYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfc3guYwppbmRleCAxMjM1YjcxLi4xNTZkN2M2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3N4LmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L2hmY19zeC5jCkBAIC0zOTksNyArMzk5LDcgQEAKIAkvKiBELSBhbmQgbW9uaXRvci9DSSBjaGFubmVsIGFyZSBub3QgZW5hYmxlZCAqLwogCS8qIFNUSU8xIGlzIHVzZWQgYXMgb3V0cHV0IGZvciBkYXRhLCBCMStCMiBmcm9tIFNULT5JT00rSEZDICovCiAJLyogU1RJTzIgaXMgdXNlZCBhcyBkYXRhIGlucHV0LCBCMStCMiBmcm9tIElPTS0+U1QgKi8KLQkvKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW5vdXMgMXMgKi8KKwkvKiBTVCBCLWNoYW5uZWwgc2VuZCBkaXNhYmxlZCAtPiBjb250aW51b3VzIDFzICovCiAJLyogVGhlIElPTSBzbG90cyBhcmUgYWx3YXlzIGVuYWJsZWQgKi8KIAljcy0+aHcuaGZjc3guY29ubiA9IDB4MzY7CS8qIHNldCBkYXRhIGZsb3cgZGlyZWN0aW9ucyAqLwogCVdyaXRlX2hmYyhjcywgSEZDU1hfQ09OTkVDVCwgY3MtPmh3LmhmY3N4LmNvbm4pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY191c2IuaCBiL2RyaXZlcnMvaXNkbi9oaXNheC9oZmNfdXNiLmgKaW5kZXggZTc5ZjU2NS4uMmY1ODFjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L2hmY191c2IuaAorKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvaGZjX3VzYi5oCkBAIC0xMjYsNyArMTI2LDcgQEAKIAogCiAvKgotICogZGV2aWNlIGRlcGVuZGFudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGRpZmZlcmVudAorICogZGV2aWNlIGRlcGVuZGVudCBpbmZvcm1hdGlvbiB0byBzdXBwb3J0IGRpZmZlcmVudAogICogSVNETiBUYSdzIHVzaW5nIHRoZSBIRkMtUyBVU0IgY2hpcAogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9sM2RzczEuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9sM2RzczEuYwppbmRleCBjYzZlZTJkLi44ZTJmZDAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvbDNkc3MxLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L2wzZHNzMS5jCkBAIC0xNTk1LDcgKzE1OTUsNyBAQAogCSAqIEJlYXJlciBDYXBhYmlsaXRpZXMKIAkgKi8KIAlwID0gc2tiLT5kYXRhOwotCS8qIG9ubHkgdGhlIGZpcnN0IG9jY3VyZW5jZSAnbGwgYmUgZGV0ZWN0ZWQgISAqLworCS8qIG9ubHkgdGhlIGZpcnN0IG9jY3VycmVuY2UgJ2xsIGJlIGRldGVjdGVkICEgKi8KIAlpZiAoKHAgPSBmaW5kaWUocCwgc2tiLT5sZW4sIDB4MDQsIDApKSkgewogCQlpZiAoKHBbMV0gPCAyKSB8fCAocFsxXSA+IDExKSkKIAkJCWVyciA9IDE7CkBAIC0yMTYxLDcgKzIxNjEsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKiBoYW5kbGUgc3BlY2lhbCBjb21tYW5kcyBmb3IgdGhpcyBwcm90b2NvbC4gICovCi0vKiBFeGFtcGxlcyBhcmUgY2FsbCBpbmRlcGVuZGFudCBzZXJ2aWNlcyBsaWtlICovCisvKiBFeGFtcGxlcyBhcmUgY2FsbCBpbmRlcGVuZGVudCBzZXJ2aWNlcyBsaWtlICovCiAvKiByZW1vdGUgb3BlcmF0aW9ucyB3aXRoIGR1bW15ICBjYWxscmVmLiAgICAgICovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdGF0aWMgaW50IGwzZHNzMV9jbWRfZ2xvYmFsKHN0cnVjdCBQU3RhY2sgKnN0LCBpc2RuX2N0cmwgKmljKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L2wzbmkxLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvbDNuaTEuYwppbmRleCBmOTU4NDQ5Li43YjIyOWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaGlzYXgvbDNuaTEuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvbDNuaTEuYwpAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAKIAkgKiBCZWFyZXIgQ2FwYWJpbGl0aWVzCiAJICovCiAJcCA9IHNrYi0+ZGF0YTsKLQkvKiBvbmx5IHRoZSBmaXJzdCBvY2N1cmVuY2UgJ2xsIGJlIGRldGVjdGVkICEgKi8KKwkvKiBvbmx5IHRoZSBmaXJzdCBvY2N1cnJlbmNlICdsbCBiZSBkZXRlY3RlZCAhICovCiAJaWYgKChwID0gZmluZGllKHAsIHNrYi0+bGVuLCAweDA0LCAwKSkpIHsKIAkJaWYgKChwWzFdIDwgMikgfHwgKHBbMV0gPiAxMSkpCiAJCQllcnIgPSAxOwpAQCAtMjAxNyw3ICsyMDE3LDcgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogaGFuZGxlIHNwZWNpYWwgY29tbWFuZHMgZm9yIHRoaXMgcHJvdG9jb2wuICAqLwotLyogRXhhbXBsZXMgYXJlIGNhbGwgaW5kZXBlbmRhbnQgc2VydmljZXMgbGlrZSAqLworLyogRXhhbXBsZXMgYXJlIGNhbGwgaW5kZXBlbmRlbnQgc2VydmljZXMgbGlrZSAqLwogLyogcmVtb3RlIG9wZXJhdGlvbnMgd2l0aCBkdW1teSAgY2FsbHJlZi4gICAgICAqLwogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogc3RhdGljIGludCBsM25pMV9jbWRfZ2xvYmFsKHN0cnVjdCBQU3RhY2sgKnN0LCBpc2RuX2N0cmwgKmljKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2hpc2F4L25qX3MuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC9ual9zLmMKaW5kZXggMjM0NGU3Yi4uYTFiODk1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L25qX3MuYworKysgYi9kcml2ZXJzL2lzZG4vaGlzYXgvbmpfcy5jCkBAIC0xNjcsNyArMTY3LDcgQEAKIAkJcmV0dXJuKDApOwogCX0KIAkvKiB0aGUgVEozMDAgYW5kIFRKMzIwIG11c3QgYmUgZGV0ZWN0ZWQsIHRoZSBJUlEgaGFuZGxpbmcgaXMgZGlmZmVyZW50Ci0JICogdW5mb3J0dW5hdGx5IHRoZSBjaGlwcyB1c2UgdGhlIHNhbWUgZGV2aWNlIElELCBidXQgdGhlIFRKMzIwIGhhcworCSAqIHVuZm9ydHVuYXRlbHkgdGhlIGNoaXBzIHVzZSB0aGUgc2FtZSBkZXZpY2UgSUQsIGJ1dCB0aGUgVEozMjAgaGFzCiAJICogdGhlIGJpdDIwIGluIHN0YXR1cyBQQ0kgY2ZnIHJlZ2lzdGVyIHNldAogCSAqLwogCXBjaV9yZWFkX2NvbmZpZ19kd29yZChkZXZfbmV0amV0LCAweDA0LCAmY2ZnKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9zdDU0ODFfYi5jIGIvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV9iLmMKaW5kZXggZTU2ZTVhZi4uZWQ0YmM1NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV9iLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV9iLmMKQEAgLTEyNCw3ICsxMjQsNyBAQAogfQogCiAvKgotICogU3RhcnQgdHJhbnNmZXJpbmcgKGZsYWdzIG9yIGRhdGEpIG9uIHRoZSBCIGNoYW5uZWwsIHNpbmNlCisgKiBTdGFydCB0cmFuc2ZlcnJpbmcgKGZsYWdzIG9yIGRhdGEpIG9uIHRoZSBCIGNoYW5uZWwsIHNpbmNlCiAgKiBGSUZPIGNvdW50ZXJzIGhhcyBiZWVuIHNldCB0byBhIG5vbi16ZXJvIHZhbHVlLgogICovCiBzdGF0aWMgdm9pZCBzdDU0ODFCX3N0YXJ0X3hmZXIodm9pZCAqY29udGV4dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9oaXNheC9zdDU0ODFfdXNiLmMgYi9kcml2ZXJzL2lzZG4vaGlzYXgvc3Q1NDgxX3VzYi5jCmluZGV4IDEwZDQxYzUuLjE1OWU4ZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC9zdDU0ODFfdXNiLmMKKysrIGIvZHJpdmVycy9pc2RuL2hpc2F4L3N0NTQ4MV91c2IuYwpAQCAtNDcwLDcgKzQ3MCw3IEBACiAKIC8qCiAgKiBEZWNvZGUgZnJhbWVzIHJlY2VpdmVkIG9uIHRoZSBCL0QgY2hhbm5lbC4KLSAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGNvbnRpbm91c2x5CisgKiBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCBjb250aW51b3VzbHkKICAqIHdpdGggNjRLYml0L3MgLyAxNktiaXQvcyBvZiBkYXRhIGFuZCBoZW5jZSBpdCB3aWxsIGJlIAogICogY2FsbGVkIDUwIHRpbWVzIHBlciBzZWNvbmQgd2l0aCAyMCBJU09DIGRlc2NyaXB0b3JzLiAKICAqIENhbGxlZCBhdCBpbnRlcnJ1cHQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaGlzYXgvdGVsZXNfY3MuYyBiL2RyaXZlcnMvaXNkbi9oaXNheC90ZWxlc19jcy5jCmluZGV4IDI4MmE0NDYuLmFhMjVlMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9oaXNheC90ZWxlc19jcy5jCisrKyBiL2RyaXZlcnMvaXNkbi9oaXNheC90ZWxlc19jcy5jCkBAIC05LDcgKzksNyBAQAogICAgIEFsc28gaW5zcGlyZWQgYnkgRUxTQSBQQ01DSUEgZHJpdmVyIAogICAgIGJ5IEtsYXVzIExpY2h0ZW53YWxkZXIgPExpY2h0ZW53YWxkZXJAQUNNLm9yZz4KICAgICAKLSAgICBFeHRlbnRpb25zIHRvIG5ldyBoaXNheF9wY21jaWEgYnkgS2Fyc3RlbiBLZWlsCisgICAgRXh0ZW5zaW9ucyB0byBuZXcgaGlzYXhfcGNtY2lhIGJ5IEthcnN0ZW4gS2VpbAogCiAgICAgbWlub3IgY2hhbmdlcyB0byBiZSBjb21wYXRpYmxlIHdpdGgga2VybmVsIDIuNC54CiAgICAgYnkgSmFuLlNjaHViZXJ0QEdNWC5saQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2h5c2RuL2h5c2RuX3NjaGVkLmMgYi9kcml2ZXJzL2lzZG4vaHlzZG4vaHlzZG5fc2NoZWQuYwppbmRleCA4MWRiNGExLi4zNjc0ZDMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vaHlzZG4vaHlzZG5fc2NoZWQuYworKysgYi9kcml2ZXJzL2lzZG4vaHlzZG4vaHlzZG5fc2NoZWQuYwpAQCAtMTQzLDcgKzE0Myw3IEBACiAvKiBzZW5kIG9uZSBjb25maWcgbGluZSB0byB0aGUgY2FyZCBhbmQgcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgb3RoZXJ3aXNlIGEgKi8KIC8qIG5lZ2F0aXZlIGVycm9yIGNvZGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qIFRoZSBmdW5jdGlvbiB3b3JrcyB3aXRoIHRpbWVvdXRzIHBlcmhhcHMgbm90IGdpdmluZyB0aGUgZ3JlYXRlc3Qgc3BlZWQgICAgKi8KLS8qIHNlbmRpbmcgdGhlIGxpbmUsIGJ1dCB0aGlzIHNob3VsZCBiZSBtZWFuaW5nbGVzcyBiZWFjdXNlIG9ubHkgc29tZSBsaW5lcyAgKi8KKy8qIHNlbmRpbmcgdGhlIGxpbmUsIGJ1dCB0aGlzIHNob3VsZCBiZSBtZWFuaW5nbGVzcyBiZWNhdXNlIG9ubHkgc29tZSBsaW5lcyAgKi8KIC8qIGFyZSB0byBiZSBzZW50IGFuZCB0aGlzIGhhcHBlbnMgdmVyeSBzZWxkb20uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jIGIvZHJpdmVycy9pc2RuL2k0bC9pc2RuX25ldC5jCmluZGV4IGFmZWVkZTcuLjJhN2QxN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9uZXQuYworKysgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fbmV0LmMKQEAgLTE1MzAsNyArMTUzMCw3IEBACiAJCXByaW50ayAoS0VSTl9XQVJOSU5HCiAJCQkJIlVQRE9XTjogTGluZSBwcm90b2NvbCBvbiBJbnRlcmZhY2UgJXMsIgogCQkJCSIgY2hhbmdlZCBzdGF0ZSB0byBkb3duXG4iLCBscC0+bmV0ZGV2LT5kZXYtPm5hbWUpOwotCQkvKiBzaG91bGQgc3RvcCByb3V0aW5nIGhpZ2hlci1sZXZlbCBkYXRhIGFjY3Jvc3MgKi8KKwkJLyogc2hvdWxkIHN0b3Agcm91dGluZyBoaWdoZXItbGV2ZWwgZGF0YSBhY3Jvc3MgKi8KIAl9IGVsc2UgaWYgKCghbHAtPmNpc2NvX2xpbmVfc3RhdGUpICYmCiAJCShteXNlcV9kaWZmID49IDApICYmIChteXNlcV9kaWZmIDw9IDIpKSB7CiAJCS8qIGxpbmUgZG93biAtPiB1cCAqLwpAQCAtMTUzOCw3ICsxNTM4LDcgQEAKIAkJcHJpbnRrIChLRVJOX1dBUk5JTkcKIAkJCQkiVVBET1dOOiBMaW5lIHByb3RvY29sIG9uIEludGVyZmFjZSAlcywiCiAJCQkJIiBjaGFuZ2VkIHN0YXRlIHRvIHVwXG4iLCBscC0+bmV0ZGV2LT5kZXYtPm5hbWUpOwotCQkvKiByZXN0YXJ0IHJvdXRpbmcgaGlnaGVyLWxldmVsIGRhdGEgYWNjcm9zcyAqLworCQkvKiByZXN0YXJ0IHJvdXRpbmcgaGlnaGVyLWxldmVsIGRhdGEgYWNyb3NzICovCiAJfQogCiAJaWYgKGxwLT5jaXNjb19kZWJzZXJpbnQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fcHBwLmMKaW5kZXggOWU4MTYyYy4uMWIwMDJiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3BwcC5jCisrKyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl9wcHAuYwpAQCAtMTUxNCw3ICsxNTE0LDcgQEAKICNkZWZpbmUgTVBfTE9OR1NFUV9NQVhCSVQJKChNUF9MT05HU0VRX01BU0srMSk+PjEpCiAjZGVmaW5lIE1QX1NIT1JUU0VRX01BWEJJVAkoKE1QX1NIT1JUU0VRX01BU0srMSk+PjEpCiAKLS8qIHNlcXVlbmNlLXdyYXAgc2FmZSBjb21wYXJpc2lvbnMgKGZvciBsb25nIHNlcXVlbmNlKSovIAorLyogc2VxdWVuY2Utd3JhcCBzYWZlIGNvbXBhcmlzb25zIChmb3IgbG9uZyBzZXF1ZW5jZSkqLwogI2RlZmluZSBNUF9MVChhLGIpCSgoYS1iKSZNUF9MT05HU0VRX01BWEJJVCkKICNkZWZpbmUgTVBfTEUoYSxiKSAJISgoYi1hKSZNUF9MT05HU0VRX01BWEJJVCkKICNkZWZpbmUgTVBfR1QoYSxiKSAJKChiLWEpJk1QX0xPTkdTRVFfTUFYQklUKQpAQCAtMTc0Niw3ICsxNzQ2LDcgQEAKIAkJICogdGhlbiBuZXh0IGZyYWdtZW50IHNob3VsZCBiZSB0aGUgc3RhcnQgb2YgbmV3IHJlYXNzZW1ibHkKIAkJICogaWYgc2VxdWVuY2UgaXMgY29udGlndW91cywgYnV0IHdlIGhhdmVuJ3QgcmVhc3NlbWJsZWQgeWV0LAogCQkgKiBrZWVwIGdvaW5nLgotCQkgKiBpZiBzZXF1ZW5jZSBpcyBub3QgY29udGlndW91cywgZWl0aGVyIGNsZWFyIGV2ZXJ5dGluZworCQkgKiBpZiBzZXF1ZW5jZSBpcyBub3QgY29udGlndW91cywgZWl0aGVyIGNsZWFyIGV2ZXJ5dGhpbmcKIAkJICogYmVsb3cgbG93IHdhdGVybWFyayBhbmQgc2V0IHN0YXJ0IHRvIHRoZSBuZXh0IGZyYWcgb3IKIAkJICogY2xlYXIgc3RhcnQgcHRyLgogCQkgKi8gCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fdHR5LmMgYi9kcml2ZXJzL2lzZG4vaTRsL2lzZG5fdHR5LmMKaW5kZXggM2Q4OGYxNS4uNjA3ZDg0NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2k0bC9pc2RuX3R0eS5jCisrKyBiL2RyaXZlcnMvaXNkbi9pNGwvaXNkbl90dHkuYwpAQCAtNzkyLDcgKzc5Miw3IEBACiB9CiAKIC8qIGlzZG5fdHR5X3Jlc3VtZSgpIHRyaWVzIHRvIHJlc3VtZSBhIHN1c3BlbmRlZCBjYWxsCi0gKiBzZXR1cCBvZiB0aGUgbG93ZXIgbGV2ZWxzIGJlZm9yZSB0aGF0LiB1bmZvcnR1bmF0bHkgaGVyZSBpcyBubworICogc2V0dXAgb2YgdGhlIGxvd2VyIGxldmVscyBiZWZvcmUgdGhhdC4gdW5mb3J0dW5hdGVseSBoZXJlIGlzIG5vCiAgKiBjaGVja2luZyBmb3IgY29tcGF0aWJpbGl0eSBvZiB1c2VkIHByb3RvY29scyBpbXBsZW1lbnRlZCBieSBROTMxCiAgKiBJdCBkb2VzIHRoZSBzYW1lIHRoaW5ncyBsaWtlIGlzZG5fdHR5X2RpYWwsIHRoZSBsYXN0IGNvbW1hbmQKICAqIGlzIGRpZmZlcmVudCwgbWF5IGJlIHdlIGNhbiBtZXJnZSBpdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9pc2RubG9vcC9pc2RubG9vcC5jIGIvZHJpdmVycy9pc2RuL2lzZG5sb29wL2lzZG5sb29wLmMKaW5kZXggYjhhMTA5OC4uZDQ5N2RiMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL2lzZG5sb29wL2lzZG5sb29wLmMKKysrIGIvZHJpdmVycy9pc2RuL2lzZG5sb29wL2lzZG5sb29wLmMKQEAgLTk1NCw3ICs5NTQsNyBAQAogLyoKICAqIFB1dCBjb21tYW5kLXN0cmluZ3MgaW50byB0aGUgb2YgdGhlICdjYXJkJy4gSW4gcmVhbGl0eSwgZXhlY3V0ZSB0aGVtCiAgKiByaWdodCBpbiBwbGFjZSBieSBjYWxsaW5nIGlzZG5sb29wX3BhcnNlX2NtZCgpLiBBbHNvIGNvcHkgZXZlcnkKLSAqIGNvbW1hbmQgdG8gdGhlIHJlYWQgbWVzc2FnZSByaW5nYnVmZmVyLCBwcmVjZWVkaW5nIGl0IHdpdGggYSAnPicuCisgKiBjb21tYW5kIHRvIHRoZSByZWFkIG1lc3NhZ2UgcmluZ2J1ZmZlciwgcHJlY2VkaW5nIGl0IHdpdGggYSAnPicuCiAgKiBUaGVzZSBtZXNhZ2dlcyBjYW4gYmUgcmVhZCBhdCAvZGV2L2lzZG5jdHJsLgogICoKICAqIFBhcmFtZXRlcjoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3AuaCBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3AuaAppbmRleCAxOGFmODY4Li44NTQ5NDMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwLmgKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcC5oCkBAIC0yMSw3ICsyMSw3IEBACiAvKiBvcHRpb25zIG1heSBiZToKICAqCiAgKiBiaXQgMCA9IHVzZSB1bGF3IGluc3RlYWQgb2YgYWxhdwotICogYml0IDEgPSBlbmFibGUgaGZjIGhhcmR3YXJlIGFjY2VsbGVyYXRpb24gZm9yIGFsbCBjaGFubmVscworICogYml0IDEgPSBlbmFibGUgaGZjIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiBmb3IgYWxsIGNoYW5uZWxzCiAgKgogICovCiAjZGVmaW5lIERTUF9PUFRfVUxBVwkJKDE8PDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2NteC5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9jbXguYwppbmRleCAzMDliYWNmLi40ZDM5NWRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2NteC5jCisrKyBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY214LmMKQEAgLTE1MTMsNyArMTUxMyw3IEBACiAJLyogLT4gaWYgZWNobyBpcyBOT1QgZW5hYmxlZCAqLwogCWlmICghZHNwLT5lY2hvLnNvZnR3YXJlKSB7CiAJCS8qCi0JCSAqIC0+IHN1YnN0cmFjdCByeC1kYXRhIGZyb20gY29uZi1kYXRhLAorCQkgKiAtPiBzdWJ0cmFjdCByeC1kYXRhIGZyb20gY29uZi1kYXRhLAogCQkgKiBpZiB0eC1kYXRhIGlzIGF2YWlsYWJsZSwgbWl4CiAJCSAqLwogCQl3aGlsZSAociAhPSByciAmJiB0ICE9IHR0KSB7CkBAIC0xNTcyLDcgKzE1NzIsNyBAQAogc2VuZF9wYWNrZXQ6CiAJLyoKIAkgKiBzZW5kIHR4LWRhdGEgaWYgZW5hYmxlZCAtIGRvbid0IGZpbHRlciwKLQkgKiBiZWN1YXNlIHdlIHdhbnQgd2hhdCB3ZSBzZW5kLCBub3Qgd2hhdCB3ZSBmaWx0ZXJlZAorCSAqIGJlY2F1c2Ugd2Ugd2FudCB3aGF0IHdlIHNlbmQsIG5vdCB3aGF0IHdlIGZpbHRlcmVkCiAJICovCiAJaWYgKGRzcC0+dHhfZGF0YSkgewogCQlpZiAodHhfZGF0YV9vbmx5KSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX2NvcmUuYyBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY29yZS5jCmluZGV4IDZmNWI1NDguLjI4NzcyOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY29yZS5jCisrKyBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfY29yZS5jCkBAIC0xMTUsNyArMTE1LDcgQEAKICAqCiAgKiBUaGUgQ01YIGhhcyBzcGVjaWFsIGZ1bmN0aW9ucyBmb3IgY29uZmVyZW5jZXMgd2l0aCBvbmUsIHR3byBhbmQgbW9yZQogICogbWVtYmVycy4gSXQgd2lsbCBhbGxvdyBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YSBmbG93LiBSZWNlaXZlIGFuZCB0cmFuc21pdAotICogZGF0YSB0by9mb3JtIHVwcGVyIGxheWVyIG1heSBiZSBzd2l0aGVkIG9uL29mZiBpbmRpdmlkdWFsbHkgd2l0aG91dCBsb29zaW5nCisgKiBkYXRhIHRvL2Zvcm0gdXBwZXIgbGF5ZXIgbWF5IGJlIHN3aXRoZWQgb24vb2ZmIGluZGl2aWR1YWxseSB3aXRob3V0IGxvc2luZwogICogZmVhdHVyZXMgb2YgQ01YLCBUb25lcyBhbmQgRFRNRi4KICAqCiAgKiBFY2hvIENhbmNlbGxhdGlvbjogU29tZXRpbWVzIHdlIGxpa2UgdG8gY2FuY2VsIGVjaG8gZnJvbSB0aGUgaW50ZXJmYWNlLgpAQCAtMTI3LDkgKzEyNyw5IEBACiAgKgogICogSWYgYWxsIHVzZWQgZmVhdHVyZXMgY2FuIGJlIHJlYWxpemVkIGluIGhhcmR3YXJlLCBhbmQgaWYgdHJhbnNtaXQgYW5kL29yCiAgKiByZWNlaXZlIGRhdGEgaXN0IGRpc2FibGVkLCB0aGUgY2FyZCBtYXkgbm90IHNlbmQvcmVjZWl2ZSBhbnkgZGF0YSBhdCBhbGwuCi0gKiBOb3QgcmVjZWl2aW5nIGlzIHVzZWZ1bGwgaWYgb25seSBhbm5vdW5jZW1lbnRzIGFyZSBwbGF5ZWQuIE5vdCBzZW5kaW5nIGlzCi0gKiB1c2VmdWxsIGlmIGFuIGFuc3dlcmluZyBtYWNoaW5lIHJlY29yZHMgYXVkaW8uIE5vdCBzZW5kaW5nIGFuZCByZWNlaXZpbmcgaXMKLSAqIHVzZWZ1bGwgZHVyaW5nIG1vc3Qgc3RhdGVzIG9mIHRoZSBjYWxsLiBJZiBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUsIHRvbmVzCisgKiBOb3QgcmVjZWl2aW5nIGlzIHVzZWZ1bCBpZiBvbmx5IGFubm91bmNlbWVudHMgYXJlIHBsYXllZC4gTm90IHNlbmRpbmcgaXMKKyAqIHVzZWZ1bCBpZiBhbiBhbnN3ZXJpbmcgbWFjaGluZSByZWNvcmRzIGF1ZGlvLiBOb3Qgc2VuZGluZyBhbmQgcmVjZWl2aW5nIGlzCisgKiB1c2VmdWwgZHVyaW5nIG1vc3Qgc3RhdGVzIG9mIHRoZSBjYWxsLiBJZiBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUsIHRvbmVzCiAgKiB3aWxsIGJlIHBsYXllZCB3aXRob3V0IGNwdSBsb2FkLiBTbWFsbCBQQlhzIGFuZCBOVC1Nb2RlIGFwcGxpY2F0aW9ucyB3aWxsCiAgKiBub3QgbmVlZCBleHBlbnNpdmUgaGFyZHdhcmUgd2hlbiBwcm9jZXNzaW5nIGNhbGxzLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfZHRtZi5jIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9kdG1mLmMKaW5kZXggOWFlMmQzMy4uNWI0ODRjMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9kdG1mLmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2RzcF9kdG1mLmMKQEAgLTEwNiw3ICsxMDYsNyBAQAogICogdGVzdGVkIGl0IGFsbG90LiBpdCBldmVuIHdvcmtzIHdpdGggdmVyeSBzaG9ydCB0b25lcyAoNDBtcykuIHRoZSBvbmx5CiAgKiBkaXNhZHZhbnRhZ2UgaXMsIHRoYXQgaXQgZG9lc24ndCB3b3JrIGdvb2Qgd2l0aCBkaWZmZXJlbnQgdm9sdW1lcyBvZiBib3RoCiAgKiB0b25lcy4gdGhpcyB3aWxsIGhhcHBlbiwgaWYgYWNjb3VzdGljYWxseSBjb3VwbGVkIGRpYWxlcnMgYXJlIHVzZWQuCi0gKiBpdCBzb21ldGltZXMgZGV0ZWN0cyB0b25lcyBkdXJpbmcgc3BlYWNoLCB3aGljaCBpcyBub3JtYWwgZm9yIGRlY29kZXJzLgorICogaXQgc29tZXRpbWVzIGRldGVjdHMgdG9uZXMgZHVyaW5nIHNwZWVjaCwgd2hpY2ggaXMgbm9ybWFsIGZvciBkZWNvZGVycy4KICAqIHVzZSBzZXF1ZW5jZXMgdG8gZ2l2ZW4gY29tbWFuZHMgZHVyaW5nIGNhbGxzLgogICoKICAqIGR0bWYgLSBwb2ludHMgdG8gYSBzdHJ1Y3R1cmUgb2YgdGhlIGN1cnJlbnQgZHRtZiBzdGF0ZQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAJCWlmIChyZXN1bHRbaV0gPCB0cmVzaCkgewogCQkJbG93Z3JvdXAgPSAtMTsKIAkJCWhpZ2hncm91cCA9IC0xOwotCQkJYnJlYWs7ICAvKiBub2lzZSBpbmJldHdlZW4gKi8KKwkJCWJyZWFrOyAgLyogbm9pc2UgaW4gYmV0d2VlbiAqLwogCQl9CiAJCS8qIGdvb2QgbGV2ZWwgZm91bmQuIFRoaXMgaXMgYWxsb3dlZCBvbmx5IG9uZSB0aW1lIHBlciBncm91cCAqLwogCQlpZiAoaSA8IE5DT0VGRi8yKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX3RvbmVzLmMgYi9kcml2ZXJzL2lzZG4vbUlTRE4vZHNwX3RvbmVzLmMKaW5kZXggN2RiZTU0ZS4uNGU0NDQwZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL21JU0ROL2RzcF90b25lcy5jCisrKyBiL2RyaXZlcnMvaXNkbi9tSVNETi9kc3BfdG9uZXMuYwpAQCAtMzk0LDcgKzM5NCw3IEBACiAJd2hpbGUgKGxlbikgewogCQkvKiBmaW5kIHNhbXBsZSB0byBzdGFydCB3aXRoICovCiAJCXdoaWxlICg0MikgewotCQkJLyogd2FycCBhcnJvdW5kICovCisJCQkvKiB3cmFwIGFyb3VuZCAqLwogCQkJaWYgKCFwYXQtPnNlcVtpbmRleF0pIHsKIAkJCQljb3VudCA9IDA7CiAJCQkJaW5kZXggPSAwOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pc2RuL21JU0ROL2wxb2lwX2NvcmUuYyBiL2RyaXZlcnMvaXNkbi9tSVNETi9sMW9pcF9jb3JlLmMKaW5kZXggYmQ1MjZmNi4uMjJmOGVjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9pc2RuL21JU0ROL2wxb2lwX2NvcmUuYworKysgYi9kcml2ZXJzL2lzZG4vbUlTRE4vbDFvaXBfY29yZS5jCkBAIC0xNzksNyArMTc5LDcgQEAKIC0gVGltZSBCYXNlID0gVGltZXN0YW1wIG9mIGZpcnN0IHNhbXBsZSBpbiBmcmFtZQogVGhlICJUaW1lIEJhc2UiIGlzIHVzZWQgdG8gcmVhcmFuZ2UgcGFja2V0cyBhbmQgdG8gZGV0ZWN0IHBhY2tldCBsb3NzLgogVGhlIDE2IGJpdHMgYXJlIHNlbnQgaW4gbmV0d29yayBvcmRlciAoTVNCIGZpcnN0KSBhbmQgY291bnQgMS84MDAwIHRoIG9mIGEKLXNlY29uZC4gVGhpcyBjYXVzZXMgYSB3cmFwIGFycm91bmQgZWFjaCA4LDE5MiBzZWNvbmRzLiBUaGVyZSBpcyBubyByZXF1aXJlbWVudAorc2Vjb25kLiBUaGlzIGNhdXNlcyBhIHdyYXAgYXJvdW5kIGVhY2ggOCwxOTIgc2Vjb25kcy4gVGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQKIGZvciB0aGUgaW5pdGlhbCAiVGltZSBCYXNlIiwgYnV0IDAgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBmaXJzdCBwYWNrZXQuCiBJbiBjYXNlIG9mIEhETEMgZGF0YSwgdGhpcyB0aW1lc3RhbXAgY291bnRzIHRoZSBwYWNrZXQgb3IgYnl0ZSBudW1iZXIuCiAKQEAgLTIwNSw3ICsyMDUsNyBAQAogCiBJZiB0aGUgb25kZW1hbmQgcGFyYW1ldGVyIGlzIGdpdmVuLCB0aGUgcmVtb3RlIElQIGlzIHNldCB0byAwIG9uIHRpbWVvdXQuCiBUaGlzIHdpbGwgc3RvcCBrZWVwYWxpdmUgdHJhZmZpYyB0byByZW1vdGUuIElmIHRoZSByZW1vdGUgaXMgb25saW5lIGFnYWluLAotdHJhZmZpYyB3aWxsIGNvbnRpbnVlIHRvIHRoZSByZW1vdGUgYWRkcmVzcy4gVGhpcyBpcyB1c2VmdWxsIGZvciByb2FkIHdhcnJpb3JzLgordHJhZmZpYyB3aWxsIGNvbnRpbnVlIHRvIHRoZSByZW1vdGUgYWRkcmVzcy4gVGhpcyBpcyB1c2VmdWwgZm9yIHJvYWQgd2FycmlvcnMuCiBUaGlzIGZlYXR1cmUgb25seSB3b3JrcyB3aXRoIElEIHNldCwgb3RoZXJ3aGlzZSBpdCBpcyBoaWdobHkgdW5zZWN1cmUuCiAKIApAQCAtNTkwLDcgKzU5MCw3IEBACiAJCQlyZXR1cm47CiAJCX0KIAl9IGVsc2UKLQkJbWxlbiA9IGxlbi0yOyAvKiBzaW5nbGUgZnJhbWUsIHN1YnN0cmFjdCB0aW1lYmFzZSAqLworCQltbGVuID0gbGVuLTI7IC8qIHNpbmdsZSBmcmFtZSwgc3VidHJhY3QgdGltZWJhc2UgKi8KIAogCWlmIChsZW4gPCAyKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBwYWNrZXQgZXJyb3IgLSBwYWNrZXQgdG9vIHNob3J0LCB0aW1lICIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvaXNkbi9tSVNETi9sYXllcjIuYyBiL2RyaXZlcnMvaXNkbi9tSVNETi9sYXllcjIuYwppbmRleCA0YWU3NTA1Li5kMGFlYjQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2lzZG4vbUlTRE4vbGF5ZXIyLmMKKysrIGIvZHJpdmVycy9pc2RuL21JU0ROL2xheWVyMi5jCkBAIC0xODY0LDcgKzE4NjQsNyBAQAogCQlwc2FwaSA+Pj0gMjsKIAkJcHRlaSA+Pj0gMTsKIAkJaWYgKHBzYXBpICE9IGwyLT5zYXBpKSB7Ci0JCQkvKiBub3Qgb3VyIGJ1c3NpbmVzcyAqLworCQkJLyogbm90IG91ciBidXNpbmVzcyAqLwogCQkJaWYgKCpkZWJ1ZyAmIERFQlVHX0wyKQogCQkJCXByaW50ayhLRVJOX0RFQlVHICIlczogc2FwaSAlZC8lZCBtaXNtYXRjaFxuIiwKIAkJCQkJX19mdW5jX18sIHBzYXBpLCBsMi0+c2FwaSk7CkBAIC0xODcyLDcgKzE4NzIsNyBAQAogCQkJcmV0dXJuIDA7CiAJCX0KIAkJaWYgKChwdGVpICE9IGwyLT50ZWkpICYmIChwdGVpICE9IEdST1VQX1RFSSkpIHsKLQkJCS8qIG5vdCBvdXIgYnVzc2luZXNzICovCisJCQkvKiBub3Qgb3VyIGJ1c2luZXNzICovCiAJCQlpZiAoKmRlYnVnICYgREVCVUdfTDIpCiAJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiB0ZWkgJWQvJWQgbWlzbWF0Y2hcbiIsCiAJCQkJCV9fZnVuY19fLCBwdGVpLCBsMi0+dGVpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLXBjYTk1MzIuYyBiL2RyaXZlcnMvbGVkcy9sZWRzLXBjYTk1MzIuYwppbmRleCBhZmFjMzM4Li41YmY2M2FmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2xlZHMvbGVkcy1wY2E5NTMyLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtcGNhOTUzMi5jCkBAIC01OCw3ICs1OCw3IEBACiAJLmlkX3RhYmxlID0gcGNhOTUzMl9pZCwKIH07CiAKLS8qIFdlIGhhdmUgdHdvIHB3bS9ibGlua2VycywgYnV0IDE2IHBvc3NpYmxlIGxlZHMgdG8gZHJpdmUuIEFkZGl0aW9uYWx5LAorLyogV2UgaGF2ZSB0d28gcHdtL2JsaW5rZXJzLCBidXQgMTYgcG9zc2libGUgbGVkcyB0byBkcml2ZS4gQWRkaXRpb25hbGx5LAogICogdGhlIGNsZXZlciBUaGVjdXMgcGVvcGxlIGFyZSB1c2luZyBvbmUgcHdtIHRvIGRyaXZlIHRoZSBiZWVwZXIuIFNvLAogICogYXMgYSBjb21wcm9taXNlIHdlIGF2ZXJhZ2Ugb25lIHB3bSB0byB0aGUgdmFsdWVzIHJlcXVlc3RlZCBieSBhbGwKICAqIGxlZHMgdGhhdCBhcmUgbm90IE9OL09GRi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbGVkcy9sZWRzLXdtODM1MC5jIGIvZHJpdmVycy9sZWRzL2xlZHMtd204MzUwLmMKaW5kZXggYTA0NTIzMi4uZjE0ZWRkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZWRzL2xlZHMtd204MzUwLmMKKysrIGIvZHJpdmVycy9sZWRzL2xlZHMtd204MzUwLmMKQEAgLTIxNSwxMyArMjE1LDEzIEBACiAKIAlpc2luayA9IHJlZ3VsYXRvcl9nZXQoJnBkZXYtPmRldiwgImxlZF9pc2luayIpOwogCWlmIChJU19FUlIoaXNpbmspKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IGNhbnQgZ2V0IElTSU5LXG4iLCBfX2Z1bmNfXyk7CisJCXByaW50ayhLRVJOX0VSUiAiJXM6IGNhbid0IGdldCBJU0lOS1xuIiwgX19mdW5jX18pOwogCQlyZXR1cm4gUFRSX0VSUihpc2luayk7CiAJfQogCiAJZGNkYyA9IHJlZ3VsYXRvcl9nZXQoJnBkZXYtPmRldiwgImxlZF92Y2MiKTsKIAlpZiAoSVNfRVJSKGRjZGMpKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IGNhbnQgZ2V0IERDRENcbiIsIF9fZnVuY19fKTsKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogY2FuJ3QgZ2V0IERDRENcbiIsIF9fZnVuY19fKTsKIAkJcmV0ID0gUFRSX0VSUihkY2RjKTsKIAkJZ290byBlcnJfaXNpbms7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9sZ3Vlc3QvbGd1ZXN0X3VzZXIuYyBiL2RyaXZlcnMvbGd1ZXN0L2xndWVzdF91c2VyLmMKaW5kZXggM2M3ODFjZC4uOTQ4YzU0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9sZ3Vlc3QvbGd1ZXN0X3VzZXIuYworKysgYi9kcml2ZXJzL2xndWVzdC9sZ3Vlc3RfdXNlci5jCkBAIC0xMzAsNyArMTMwLDcgQEAKIAlyY3VfYXNzaWduX3BvaW50ZXIobGctPmV2ZW50ZmRzLCBuZXcpOwogCiAJLyoKLQkgKiBXZSdyZSBub3QgaW4gYSBiaWcgaHVycnkuICBXYWl0IHVudGlsIG5vb25lJ3MgbG9va2luZyBhdCBvbGQKKwkgKiBXZSdyZSBub3QgaW4gYSBiaWcgaHVycnkuICBXYWl0IHVudGlsIG5vIG9uZSdzIGxvb2tpbmcgYXQgb2xkCiAJICogdmVyc2lvbiwgdGhlbiBmcmVlIGl0LgogCSAqLwogCXN5bmNocm9uaXplX3JjdSgpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvYWRiaGlkLmMgYi9kcml2ZXJzL21hY2ludG9zaC9hZGJoaWQuYwppbmRleCA1Mzk2YzY3Li4wOWQ3MmJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC9hZGJoaWQuYworKysgYi9kcml2ZXJzL21hY2ludG9zaC9hZGJoaWQuYwpAQCAtMzI4LDcgKzMyOCw3IEBACiAJc3dpdGNoIChrZXljb2RlKSB7CiAJY2FzZSBBREJfS0VZX0NBUFNMT0NLOgogCQlpZiAoIXJlc3RvcmVfY2Fwc2xvY2tfZXZlbnRzKSB7Ci0JCQkvKiBHZW5lcmF0ZSBkb3duL3VwIGV2ZW50cyBmb3IgQ2Fwc0xvY2sgZXZlcnl0aW1lLiAqLworCQkJLyogR2VuZXJhdGUgZG93bi91cCBldmVudHMgZm9yIENhcHNMb2NrIGV2ZXJ5IHRpbWUuICovCiAJCQlpbnB1dF9yZXBvcnRfa2V5KGFoaWQtPmlucHV0LCBLRVlfQ0FQU0xPQ0ssIDEpOwogCQkJaW5wdXRfc3luYyhhaGlkLT5pbnB1dCk7CiAJCQlpbnB1dF9yZXBvcnRfa2V5KGFoaWQtPmlucHV0LCBLRVlfQ0FQU0xPQ0ssIDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tYWNpbnRvc2gvbWFjaW8tYWRiLmMgYi9kcml2ZXJzL21hY2ludG9zaC9tYWNpby1hZGIuYwppbmRleCBiZDZkYTdhLi5iNmVmOGY1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC9tYWNpby1hZGIuYworKysgYi9kcml2ZXJzL21hY2ludG9zaC9tYWNpby1hZGIuYwpAQCAtMTQ3LDcgKzE0Nyw3IEBACiAKIAkvKiBIcm0uLi4gd2UgbWF5IHdhbnQgdG8gbm90IGxvY2sgaW50ZXJydXB0cyBmb3Igc28KIAkgKiBsb25nIC4uLiBvaCB3ZWxsLCB3aG8gdXNlcyB0aGF0IGNoaXAgYW55d2F5ID8gOikKLQkgKiBUaGF0IGZ1bmN0aW9uIHdpbGwgYmUgc2VsZG9tbHkgdXNlZCBkdXJpbmcgYm9vdAorCSAqIFRoYXQgZnVuY3Rpb24gd2lsbCBiZSBzZWxkb20gdXNlZCBkdXJpbmcgYm9vdAogCSAqIG9uIHJhcmUgbWFjaGluZXMsIHNvLi4uCiAJICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJm1hY2lvX2xvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX2FkdDc0NnguYyBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX2FkdDc0NnguYwppbmRleCA5ZTNlMmM1Li4wMjM2NzMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC90aGVybV9hZHQ3NDZ4LmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fYWR0NzQ2eC5jCkBAIC02NjIsNyArNjYyLDcgQEAKIAkJZXJyIHw9IGRldmljZV9jcmVhdGVfZmlsZSgmb2ZfZGV2LT5kZXYsICZkZXZfYXR0cl9zZW5zb3IyX2Zhbl9zcGVlZCk7CiAJaWYgKGVycikKIAkJcHJpbnRrKEtFUk5fV0FSTklORwotCQkJIkZhaWxlZCB0byBjcmVhdGUgdGVtcGVydGF1cmUgYXR0cmlidXRlIGZpbGUocykuXG4iKTsKKwkJCSJGYWlsZWQgdG8gY3JlYXRlIHRlbXBlcmF0dXJlIGF0dHJpYnV0ZSBmaWxlKHMpLlxuIik7CiB9CiAKIHN0YXRpYyB2b2lkIHRoZXJtb3N0YXRfcmVtb3ZlX2ZpbGVzKHZvaWQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21hY2ludG9zaC90aGVybV9wbTcyLmMgYi9kcml2ZXJzL21hY2ludG9zaC90aGVybV9wbTcyLmMKaW5kZXggYzk4NzAzMy4uYmI4YjcyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fcG03Mi5jCisrKyBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3BtNzIuYwpAQCAtOTEsNyArOTEsNyBAQAogICoKICAqICBNYXIuIDEwLCAyMDA1IDogMS4yCiAgKgktIEFkZCBiYXNpYyBzdXBwb3J0IGZvciBYc2VydmUgRzUKLSAqCS0gUmV0cmVpdmUgcHVtcHMgbWluL21heCBmcm9tIEVFUFJPTSBpbWFnZSBpbiBkZXZpY2UtdHJlZSAoYnJva2VuKQorICoJLSBSZXRyaWV2ZSBwdW1wcyBtaW4vbWF4IGZyb20gRUVQUk9NIGltYWdlIGluIGRldmljZS10cmVlIChicm9rZW4pCiAgKgktIFVzZSBtaW4vbWF4IG1hY3JvcyBoZXJlIG9yIHRoZXJlCiAgKgktIExhdGVzdCBkYXJ3aW4gdXBkYXRlZCBVM0ggbWluIGZhbiBzcGVlZCB0byAyMCUgUFdNCiAgKgpAQCAtMzc1LDcgKzM3NSw3IEBACiAJCXJjID0gaTJjX21hc3Rlcl9zZW5kKHN0YXRlLT5tb25pdG9yLCBidWYsIDIpOwogCQlpZiAocmMgPD0gMCkKIAkJCWdvdG8gZXJyb3I7Ci0JCS8qIFdhaXQgZm9yIGNvbnZlcnRpb24gKi8KKwkJLyogV2FpdCBmb3IgY29udmVyc2lvbiAqLwogCQltc2xlZXAoMSk7CiAJCS8qIFN3aXRjaCB0byBkYXRhIHJlZ2lzdGVyICovCiAJCWJ1ZlswXSA9IDQ7CkBAIC0xMTkyLDcgKzExOTIsNyBAQAogCQllcnIgfD0gZGV2aWNlX2NyZWF0ZV9maWxlKCZvZl9kZXYtPmRldiwgJmRldl9hdHRyX2NwdTFfaW50YWtlX2Zhbl9ycG0pOwogCX0KIAlpZiAoZXJyKQotCQlwcmludGsoS0VSTl9XQVJOSU5HICJGYWlsZWQgdG8gY3JlYXRlIHNvbWUgb2YgdGhlIGF0cmlidXRlIgorCQlwcmludGsoS0VSTl9XQVJOSU5HICJGYWlsZWQgdG8gY3JlYXRlIHNvbWUgb2YgdGhlIGF0dHJpYnV0ZSIKIAkJCSJmaWxlcyBmb3IgQ1BVICVkXG4iLCBpbmRleCk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuYyBiL2RyaXZlcnMvbWFjaW50b3NoL3RoZXJtX3dpbmR0dW5uZWwuYwppbmRleCBkMzc4MTlmLi40NmM0ZTk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21hY2ludG9zaC90aGVybV93aW5kdHVubmVsLmMKKysrIGIvZHJpdmVycy9tYWNpbnRvc2gvdGhlcm1fd2luZHR1bm5lbC5jCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8YXNtL3NlY3Rpb25zLmg+CiAjaW5jbHVkZSA8YXNtL21hY2lvLmg+CiAKLSNkZWZpbmUgTE9HX1RFTVAJCTAJCQkvKiBjb250aW5vdXNseSBsb2cgdGVtcGVyYXR1cmUgKi8KKyNkZWZpbmUgTE9HX1RFTVAJCTAJCQkvKiBjb250aW51b3VzbHkgbG9nIHRlbXBlcmF0dXJlICovCiAKIHN0YXRpYyBzdHJ1Y3QgewogCXZvbGF0aWxlIGludAkJcnVubmluZzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvYml0bWFwLmggYi9kcml2ZXJzL21kL2JpdG1hcC5oCmluZGV4IDkzMWE3YTcuLmQwYWVhZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvYml0bWFwLmgKKysrIGIvZHJpdmVycy9tZC9iaXRtYXAuaApAQCAtNDUsNyArNDUsNyBAQAogICoKICAqIFRoZSBjb3VudGVyIGNvdW50cyBwZW5kaW5nIHdyaXRlIHJlcXVlc3RzLCBwbHVzIHRoZSBvbi1kaXNrIGJpdC4KICAqIFdoZW4gdGhlIGNvdW50ZXIgaXMgJzEnIGFuZCB0aGUgcmVzeW5jIGJpdHMgYXJlIGNsZWFyLCB0aGUgb24tZGlzawotICogYml0IGNhbiBiZSBjbGVhcmVkIGFzd2VsbCwgdGh1cyBzZXR0aW5nIHRoZSBjb3VudGVyIHRvIDAuCisgKiBiaXQgY2FuIGJlIGNsZWFyZWQgYXMgd2VsbCwgdGh1cyBzZXR0aW5nIHRoZSBjb3VudGVyIHRvIDAuCiAgKiBXaGVuIHdlIHNldCBhIGJpdCwgb3IgaW4gdGhlIGNvdW50ZXIgKHRvIHN0YXJ0IGEgd3JpdGUpLCBpZiB0aGUgZmllbGRzIGlzCiAgKiAwLCB3ZSBmaXJzdCBzZXQgdGhlIGRpc2sgYml0IGFuZCBzZXQgdGhlIGNvdW50ZXIgdG8gMS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMgYi9kcml2ZXJzL21kL2RtLXJlZ2lvbi1oYXNoLmMKaW5kZXggZGFkMDExYS4uNzc3MWVkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9kbS1yZWdpb24taGFzaC5jCisrKyBiL2RyaXZlcnMvbWQvZG0tcmVnaW9uLWhhc2guYwpAQCAtNDE5LDcgKzQxOSw3IEBACiAJLyoKIAkgKiBQb3NzaWJsZSBjYXNlczoKIAkgKiAgIDEpIERNX1JIX0RJUlRZCi0JICogICAyKSBETV9SSF9OT1NZTkM6IHdhcyBkaXJ0eSwgb3RoZXIgcHJlY2VlZGluZyB3cml0ZXMgZmFpbGVkCisJICogICAyKSBETV9SSF9OT1NZTkM6IHdhcyBkaXJ0eSwgb3RoZXIgcHJlY2VkaW5nIHdyaXRlcyBmYWlsZWQKIAkgKiAgIDMpIERNX1JIX1JFQ09WRVJJTkc6IGZsdXNoaW5nIHBlbmRpbmcgd3JpdGVzCiAJICogRWl0aGVyIGNhc2UsIHRoZSByZWdpb24gc2hvdWxkIGhhdmUgbm90IGJlZW4gY29ubmVjdGVkIHRvIGxpc3QuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL2ZhdWx0eS5jIGIvZHJpdmVycy9tZC9mYXVsdHkuYwppbmRleCAzMzlmZGM2Li4yMzA3OGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL2ZhdWx0eS5jCisrKyBiL2RyaXZlcnMvbWQvZmF1bHR5LmMKQEAgLTMwLDcgKzMwLDcgQEAKICAqCiAgKiBEaWZmZXJlbnQgbW9kZXMgY2FuIGJlIGFjdGl2ZSBhdCBhIHRpbWUsIGJ1dCBvbmx5CiAgKiBvbmUgY2FuIGJlIHNldCBhdCBhcnJheSBjcmVhdGlvbi4gIE90aGVycyBjYW4gYmUgYWRkZWQgbGF0ZXIuCi0gKiBBIG1vZGUgY2FuIGJlIG9uZS1zaG90IG9yIHJlY3VycmVudCB3aXRoIHRoZSByZWN1cnJhbmNlIGJlaW5nCisgKiBBIG1vZGUgY2FuIGJlIG9uZS1zaG90IG9yIHJlY3VycmVudCB3aXRoIHRoZSByZWN1cnJlbmNlIGJlaW5nCiAgKiBvbmNlIGluIGV2ZXJ5IE4gcmVxdWVzdHMuCiAgKiBUaGUgYm90dG9tIDUgYml0cyBvZiB0aGUgImxheW91dCIgaW5kaWNhdGUgdGhlIG1vZGUuICBUaGUKICAqIHJlbWFpbmRlciBpbmRpY2F0ZSBhIHBlcmlvZCwgb3IgMCBmb3Igb25lLXNob3QuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL21kLmMgYi9kcml2ZXJzL21kL21kLmMKaW5kZXggOGI2NmUwNC4uYjEyYjM3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZC9tZC5jCisrKyBiL2RyaXZlcnMvbWQvbWQuYwpAQCAtNjI2Niw3ICs2MjY2LDcgQEAKIAkgKiBydCBpcyBhIHNlY3Rvcl90LCBzbyBjb3VsZCBiZSAzMmJpdCBvciA2NGJpdC4KIAkgKiBTbyB3ZSBkaXZpZGUgYmVmb3JlIG11bHRpcGx5IGluIGNhc2UgaXQgaXMgMzJiaXQgYW5kIGNsb3NlCiAJICogdG8gdGhlIGxpbWl0LgotCSAqIFdlIHNjYWxlIHRoZSBkaXZpc29yIChkYikgYnkgMzIgdG8gYXZvaWQgbG9vc2luZyBwcmVjaXNpb24KKwkgKiBXZSBzY2FsZSB0aGUgZGl2aXNvciAoZGIpIGJ5IDMyIHRvIGF2b2lkIGxvc2luZyBwcmVjaXNpb24KIAkgKiBuZWFyIHRoZSBlbmQgb2YgcmVzeW5jIHdoZW4gdGhlIG51bWJlciBvZiByZW1haW5pbmcgc2VjdG9ycwogCSAqIGlzIGNsb3NlIHRvICdkYicuCiAJICogV2UgdGhlbiBkaXZpZGUgcnQgYnkgMzIgYWZ0ZXIgbXVsdGlwbHlpbmcgYnkgZGIgdG8gY29tcGVuc2F0ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvbWQuaCBiL2RyaXZlcnMvbWQvbWQuaAppbmRleCAxMjIxNWQ0Li41MmI0MDczIDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL21kLmgKKysrIGIvZHJpdmVycy9tZC9tZC5oCkBAIC05NCw3ICs5NCw3IEBACiAjZGVmaW5lCUluX3N5bmMJCTIJCS8qIGRldmljZSBpcyBpbl9zeW5jIHdpdGggcmVzdCBvZiBhcnJheSAqLwogI2RlZmluZQlXcml0ZU1vc3RseQk0CQkvKiBBdm9pZCByZWFkaW5nIGlmIGF0IGFsbCBwb3NzaWJsZSAqLwogI2RlZmluZQlBdXRvRGV0ZWN0ZWQJNwkJLyogYWRkZWQgYnkgYXV0by1kZXRlY3QgKi8KLSNkZWZpbmUgQmxvY2tlZAkJOAkJLyogQW4gZXJyb3Igb2NjdXJlZCBvbiBhbiBleHRlcm5hbGx5CisjZGVmaW5lIEJsb2NrZWQJCTgJCS8qIEFuIGVycm9yIG9jY3VycmVkIG9uIGFuIGV4dGVybmFsbHkKIAkJCQkJICogbWFuYWdlZCBhcnJheSwgZG9uJ3QgYWxsb3cgd3JpdGVzCiAJCQkJCSAqIHVudGlsIGl0IGlzIGNsZWFyZWQgKi8KIAl3YWl0X3F1ZXVlX2hlYWRfdCBibG9ja2VkX3dhaXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21kL3JhaWQxMC5jIGIvZHJpdmVycy9tZC9yYWlkMTAuYwppbmRleCBmN2I2MjM3Li4yZGE4M2Q1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21kL3JhaWQxMC5jCisrKyBiL2RyaXZlcnMvbWQvcmFpZDEwLmMKQEAgLTUsNyArNSw3IEBACiAgKgogICogUkFJRC0xMCBzdXBwb3J0IGZvciBtZC4KICAqCi0gKiBCYXNlIG9uIGNvZGUgaW4gcmFpZDEuYy4gIFNlZSByYWlkMS5jIGZvciBmdXRoZXIgY29weXJpZ2h0IGluZm9ybWF0aW9uLgorICogQmFzZSBvbiBjb2RlIGluIHJhaWQxLmMuICBTZWUgcmFpZDEuYyBmb3IgZnVydGhlciBjb3B5cmlnaHQgaW5mb3JtYXRpb24uCiAgKgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0zNDAsMTQgKzM0MCwxNCBAQAogCiAvKgogICogUkFJRDEwIGxheW91dCBtYW5hZ2VyCi0gKiBBc3dlbGwgYXMgdGhlIGNodW5rc2l6ZSBhbmQgcmFpZF9kaXNrcyBjb3VudCwgdGhlcmUgYXJlIHR3bworICogQXMgd2VsbCBhcyB0aGUgY2h1bmtzaXplIGFuZCByYWlkX2Rpc2tzIGNvdW50LCB0aGVyZSBhcmUgdHdvCiAgKiBwYXJhbWV0ZXJzOiBuZWFyX2NvcGllcyBhbmQgZmFyX2NvcGllcy4KICAqIG5lYXJfY29waWVzICogZmFyX2NvcGllcyBtdXN0IGJlIDw9IHJhaWRfZGlza3MuCiAgKiBOb3JtYWxseSBvbmUgb2YgdGhlc2Ugd2lsbCBiZSAxLgogICogSWYgYm90aCBhcmUgMSwgd2UgZ2V0IHJhaWQwLgogICogSWYgbmVhcl9jb3BpZXMgPT0gcmFpZF9kaXNrcywgd2UgZ2V0IHJhaWQxLgogICoKLSAqIENodW5rcyBhcmUgbGF5ZWQgb3V0IGluIHJhaWQwIHN0eWxlIHdpdGggbmVhcl9jb3BpZXMgY29waWVzIG9mIHRoZQorICogQ2h1bmtzIGFyZSBsYWlkIG91dCBpbiByYWlkMCBzdHlsZSB3aXRoIG5lYXJfY29waWVzIGNvcGllcyBvZiB0aGUKICAqIGZpcnN0IGNodW5rLCBmb2xsb3dlZCBieSBuZWFyX2NvcGllcyBjb3BpZXMgb2YgdGhlIG5leHQgY2h1bmsgYW5kCiAgKiBzbyBvbi4KICAqIElmIGZhcl9jb3BpZXMgPiAxLCB0aGVuIGFmdGVyIDEvZmFyX2NvcGllcyBvZiB0aGUgYXJyYXkgaGFzIGJlZW4gYXNzaWduZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWQvcmFpZDEwLmggYi9kcml2ZXJzL21kL3JhaWQxMC5oCmluZGV4IDIzMTZhYzIuLjk0NGIxMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWQvcmFpZDEwLmgKKysrIGIvZHJpdmVycy9tZC9yYWlkMTAuaApAQCAtMTcsOCArMTcsOCBAQAogCXNwaW5sb2NrX3QJCWRldmljZV9sb2NrOwogCiAJLyogZ2VvbWV0cnkgKi8KLQlpbnQJCQluZWFyX2NvcGllczsgIC8qIG51bWJlciBvZiBjb3BpZXMgbGF5ZWQgb3V0IHJhaWQwIHN0eWxlICovCi0JaW50IAkJCWZhcl9jb3BpZXM7ICAgLyogbnVtYmVyIG9mIGNvcGllcyBsYXllZCBvdXQKKwlpbnQJCQluZWFyX2NvcGllczsgIC8qIG51bWJlciBvZiBjb3BpZXMgbGFpZCBvdXQgcmFpZDAgc3R5bGUgKi8KKwlpbnQgCQkJZmFyX2NvcGllczsgICAvKiBudW1iZXIgb2YgY29waWVzIGxhaWQgb3V0CiAJCQkJCSAgICAgICAqIGF0IGxhcmdlIHN0cmlkZXMgYWNyb3NzIGRyaXZlcwogCQkJCQkgICAgICAgKi8KIAlpbnQJCQlmYXJfb2Zmc2V0OyAgIC8qIGZhcl9jb3BpZXMgYXJlIG9mZnNldCBieSAxIHN0cmlwZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9pMmMuYyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3NhYTcxNDZfaTJjLmMKaW5kZXggNzRlZTE3Mi4uYjJiYTlkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vc2FhNzE0Nl9pMmMuYworKysgYi9kcml2ZXJzL21lZGlhL2NvbW1vbi9zYWE3MTQ2X2kyYy5jCkBAIC0xNjEsNyArMTYxLDcgQEAKIAkJbXNsZWVwKFNBQTcxNDZfSTJDX0RFTEFZKTsKIAl9CiAKLQkvKiBpZiBhbnkgZXJyb3IgaXMgc3RpbGwgcHJlc2VudCwgYSBmYXRhbCBlcnJvciBoYXMgb2NjdXJlZCAuLi4gKi8KKwkvKiBpZiBhbnkgZXJyb3IgaXMgc3RpbGwgcHJlc2VudCwgYSBmYXRhbCBlcnJvciBoYXMgb2NjdXJyZWQgLi4uICovCiAJc3RhdHVzID0gc2FhNzE0Nl9pMmNfc3RhdHVzKGRldik7CiAJaWYgKCBkZXYtPmkyY19iaXRyYXRlICE9IHN0YXR1cyApIHsKIAkJREVCX0kyQygoImZhdGFsIGVycm9yLiBzdGF0dXM6MHglMDh4XG4iLHN0YXR1cykpOwpAQCAtMzI2LDkgKzMyNiw5IEBACiAJCQlpZiAoIDAgIT0gZXJyKSB7CiAJCQkJLyogdGhpcyBvbmUgaXMgdW5zYXRpc2Z5aW5nOiBzb21lIGkyYyBzbGF2ZXMgb24gc29tZQogCQkJCSAgIGR2YiBjYXJkcyBkb24ndCBhY2tub3dsZWRnZSBjb3JyZWN0bHksIHNvIHRoZSBzYWE3MTQ2Ci0JCQkJICAgdGhpbmtzIHRoYXQgYW4gYWRkcmVzcyBlcnJvciBvY2N1cmVkLiBpbiB0aGF0IGNhc2UsIHRoZQorCQkJCSAgIHRoaW5rcyB0aGF0IGFuIGFkZHJlc3MgZXJyb3Igb2NjdXJyZWQuIGluIHRoYXQgY2FzZSwgdGhlCiAJCQkJICAgdHJhbnNhY3Rpb24gc2hvdWxkIGJlIHJldHJ5aW5nLCBldmVuIGlmIGFuIGFkZHJlc3MgZXJyb3IKLQkJCQkgICBvY2N1cmVkLiBhbmFsb2cgc2FhNzE0NiBiYXNlZCBjYXJkcyBleHRlbnNpdmVseSByZWx5IG9uCisJCQkJICAgb2NjdXJyZWQuIGFuYWxvZyBzYWE3MTQ2IGJhc2VkIGNhcmRzIGV4dGVuc2l2ZWx5IHJlbHkgb24KIAkJCQkgICBpMmMgYWRkcmVzcyBwcm9iaW5nLCBob3dldmVyLCBhbmQgYWRkcmVzcyBlcnJvcnMgaW5kaWNhdGUgdGhhdCBhCiAJCQkJICAgZGV2aWNlIGlzIHJlYWxseSAqbm90KiB0aGVyZS4gcmV0cnlpbmcgaW4gdGhhdCBjYXNlCiAJCQkJICAgaW5jcmVhc2VzIHRoZSB0aW1lIHRoZSBkZXZpY2UgbmVlZHMgdG8gcHJvYmUgZ3JlYXRseSwgc28KQEAgLTM2NSw3ICszNjUsNyBAQAogCURFQl9JMkMoKCJ0cmFuc21pc3Npb24gc3VjY2Vzc2Z1bC4gKG1zZzolZCkuXG4iLGVycikpOwogb3V0OgogCS8qIGFub3RoZXIgYnVnIGluIHJldmlzaW9uIDA6IHRoZSBpMmMtcmVnaXN0ZXJzIGdldCB1cGxvYWRlZCByYW5kb21seSBieSBvdGhlcgotCSAgIHVwbG9hZHMsIHNvIHdlIGJldHRlciBjbGVhciB0aGVtIG91dCBiZWZvcmUgY29udGludWVpbmcgKi8KKwkgICB1cGxvYWRzLCBzbyB3ZSBiZXR0ZXIgY2xlYXIgdGhlbSBvdXQgYmVmb3JlIGNvbnRpbnVpbmcgKi8KIAlpZiggMCA9PSBkZXYtPnJldmlzaW9uICkgewogCQlfX2xlMzIgemVybyA9IDA7CiAJCXNhYTcxNDZfaTJjX3Jlc2V0KGRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2NvbW1vbi90dW5lcnMvbXhsNTAwNXMuYyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy9teGw1MDA1cy5jCmluZGV4IDYwNWUyOGIuLjBkNmUwOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy9teGw1MDA1cy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy9teGw1MDA1cy5jCkBAIC0xMDYsNyArMTA2LDcgQEAKIC8qIE1YTDUwMDUgVHVuZXIgUmVnaXN0ZXIgU3RydWN0ICovCiBzdHJ1Y3QgVHVuZXJSZWcgewogCXUxNiBSZWdfTnVtOwkvKiBUdW5lciBSZWdpc3RlciBBZGRyZXNzICovCi0JdTE2IFJlZ19WYWw7CS8qIEN1cnJlbnQgc3cgcHJvZ3JhbW1lZCB2YWx1ZSB3YWl0aW5nIHRvIGJlIHdyaXRlbiAqLworCXUxNiBSZWdfVmFsOwkvKiBDdXJyZW50IHN3IHByb2dyYW1tZWQgdmFsdWUgd2FpdGluZyB0byBiZSB3cml0dGVuICovCiB9OwogCiBlbnVtIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3R1bmVycy90ZGExODI3MS5oIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3RkYTE4MjcxLmgKaW5kZXggM2FiYjIyMS4uNTBjZmE4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3RkYTE4MjcxLmgKKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdHVuZXJzL3RkYTE4MjcxLmgKQEAgLTk4LDcgKzk4LDcgQEAKIAkvKiBvdXRwdXQgb3B0aW9ucyB0aGF0IGNhbiBiZSBkaXNhYmxlZCAqLwogCWVudW0gdGRhMTgyNzFfb3V0cHV0X29wdGlvbnMgb3V0cHV0X29wdDsKIAotCS8qIHNvbWUgaTJjIHByb3ZpZGVycyBjYW50IHdyaXRlIGFsbCAzOSByZWdpc3RlcnMgYXQgb25jZSAqLworCS8qIHNvbWUgaTJjIHByb3ZpZGVycyBjYW4ndCB3cml0ZSBhbGwgMzkgcmVnaXN0ZXJzIGF0IG9uY2UgKi8KIAllbnVtIHRkYTE4MjcxX3NtYWxsX2kyYyBzbWFsbF9pMmM7CiAKIAkvKiBmb3JjZSByZiB0cmFja2luZyBmaWx0ZXIgY2FsaWJyYXRpb24gb24gc3RhcnR1cCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvYjJjMi9mbGV4Y29wLXBjaS5jIGIvZHJpdmVycy9tZWRpYS9kdmIvYjJjMi9mbGV4Y29wLXBjaS5jCmluZGV4IDIyN2MwMjAuLjk1NTI1NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2IyYzIvZmxleGNvcC1wY2kuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9iMmMyL2ZsZXhjb3AtcGNpLmMKQEAgLTU4LDcgKzU4LDcgQEAKIAogCWludCBhY3RpdmVfZG1hMV9hZGRyOyAvKiAwID0gYWRkcjAgb2YgZG1hMTsgMSA9IGFkZHIxIG9mIGRtYTEgKi8KIAl1MzIgbGFzdF9kbWExX2N1cl9wb3M7Ci0JLyogcG9zaXRpb24gb2YgdGhlIHBvaW50ZXIgbGFzdCB0aW1lIHRoZSB0aW1lci9wYWNrZXQgaXJxIG9jY3VyZWQgKi8KKwkvKiBwb3NpdGlvbiBvZiB0aGUgcG9pbnRlciBsYXN0IHRpbWUgdGhlIHRpbWVyL3BhY2tldCBpcnEgb2NjdXJyZWQgKi8KIAlpbnQgY291bnQ7CiAJaW50IGNvdW50X3ByZXY7CiAJaW50IHN0cmVhbV9wcm9ibGVtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvYnQ4eHgvZHZiLWJ0OHh4LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9kdmItYnQ4eHguYwppbmRleCA3OGZjNDY5Li4xZTExMDZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9kdmItYnQ4eHguYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9idDh4eC9kdmItYnQ4eHguYwpAQCAtNDI3LDEwICs0MjcsMTAgQEAKIAlzdHJ1Y3QgZHZiX2J0OHh4X2NhcmQgKmJ0ID0gZmUtPmR2Yi0+cHJpdjsKIAogCS8qIFJFU0VUIERFVklDRQotCSAqIHJlc2V0IGlzIGNvbnRyb2xlZCBieSBHUElPLTAKKwkgKiByZXNldCBpcyBjb250cm9sbGVkIGJ5IEdQSU8tMAogCSAqIHdoZW4gc2V0IHRvIDAgY2F1c2VzIHJlc2V0IGFuZCB3aGVuIHRvIDEgZm9yIG5vcm1hbCBvcAogCSAqIG11c3QgcmVtYWluIHJlc2V0IGZvciAxMjggY2xvY2sgY3ljbGVzIG9uIGEgNTBNaHogY2xvY2sKLQkgKiBhbHNvIFBSTTEgUFJNMiAmIFBSTTQgYXJlIGNvbnRyb2xlZCBieSBHUElPLTEsR1BJTy0yICYgR1BJTy00CisJICogYWxzbyBQUk0xIFBSTTIgJiBQUk00IGFyZSBjb250cm9sbGVkIGJ5IEdQSU8tMSxHUElPLTIgJiBHUElPLTQKIAkgKiBXZSBhc3N1bWUgdGhhdCB0aGUgcmVzZXQgaGFzIGJlIGhlbGQgbG93IGxvbmcgZW5vdWdoIG9yIHdlCiAJICogaGF2ZSBiZWVuIHJlc2V0IGJ5IGEgcG93ZXIgb24uICBXaGVuIHRoZSBkcml2ZXIgaXMgdW5sb2FkZWQKIAkgKiByZXNldCBzZXQgdG8gMCBzbyBpZiByZWxvYWRlZCB3ZSBoYXZlIGJlZW4gcmVzZXQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItY29yZS9kdmJfZnJvbnRlbmQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jCmluZGV4IGNhZDY2MzQuLjMxZTJjMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi1jb3JlL2R2Yl9mcm9udGVuZC5jCkBAIC0xNjM4LDcgKzE2MzgsNyBAQAogCWNhc2UgRkVfUkVBRF9TVEFUVVM6IHsKIAkJZmVfc3RhdHVzX3QqIHN0YXR1cyA9IHBhcmc7CiAKLQkJLyogaWYgcmV0dW5lIHdhcyByZXF1ZXN0ZWQgYnV0IGhhc24ndCBvY2N1cmVkIHlldCwgcHJldmVudAorCQkvKiBpZiByZXR1bmUgd2FzIHJlcXVlc3RlZCBidXQgaGFzbid0IG9jY3VycmVkIHlldCwgcHJldmVudAogCQkgKiB0aGF0IHVzZXIgZ2V0IHNpZ25hbCBzdGF0ZSBmcm9tIHByZXZpb3VzIHR1bmluZyAqLwogCQlpZiAoZmVwcml2LT5zdGF0ZSA9PSBGRVNUQVRFX1JFVFVORSB8fAogCQkgICAgZmVwcml2LT5zdGF0ZSA9PSBGRVNUQVRFX0VSUk9SKSB7CkBAIC0xNzI5LDcgKzE3MjksNyBAQAogCQkJICogRGlzaCBuZXR3b3JrIGxlZ2FjeSBzd2l0Y2hlcyAoYXMgdXNlZCBieSBEaXNoNTAwKQogCQkJICogYXJlIGNvbnRyb2xsZWQgYnkgc2VuZGluZyA5LWJpdCBjb21tYW5kIHdvcmRzCiAJCQkgKiBzcGFjZWQgOG1zZWMgYXBhcnQuCi0JCQkgKiB0aGUgYWN0dWFsIGNvbW1hbmQgd29yZCBpcyBzd2l0Y2gvcG9ydCBkZXBlbmRhbnQKKwkJCSAqIHRoZSBhY3R1YWwgY29tbWFuZCB3b3JkIGlzIHN3aXRjaC9wb3J0IGRlcGVuZGVudAogCQkJICogc28gaXQgaXMgdXAgdG8gdGhlIHVzZXJzcGFjZSBhcHBsaWNhdGlvbiB0byBzZW5kCiAJCQkgKiB0aGUgcmlnaHQgY29tbWFuZC4KIAkJCSAqIFRoZSBjb21tYW5kIG11c3QgYWx3YXlzIHN0YXJ0IHdpdGggYSAnMCcgYWZ0ZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvYWY5MDA1LWZlLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2FmOTAwNS1mZS5jCmluZGV4IDE5OWVjZTAuLjZhZDk0NzQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2FmOTAwNS1mZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvYWY5MDA1LWZlLmMKQEAgLTU4MCw3ICs1ODAsNyBAQAogCQlOU19jb2VmZjJfOGsgPSAweDcyNDkyNTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZXJyKCJJbnZhbGlkIGJhbmR3aXRoICVkLiIsIGJ3KTsKKwkJZXJyKCJJbnZhbGlkIGJhbmR3aWR0aCAlZC4iLCBidyk7CiAJCXJldHVybiAtRUlOVkFMOwogCX0KIApAQCAtNzg5LDcgKzc4OSw3IEBACiAJCXRlbXAgPSAyOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQllcnIoIkludmFsaWQgYmFuZHdpdGggJWQuIiwgYncpOworCQllcnIoIkludmFsaWQgYmFuZHdpZHRoICVkLiIsIGJ3KTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCXJldHVybiBhZjkwMDVfd3JpdGVfcmVnaXN0ZXJfYml0cyhkLCB4ZF9nX3JlZ19idywgcmVnX2J3X3BvcywKQEAgLTkzMCw3ICs5MzAsNyBAQAogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CiAKLQkvKiBpbml0IG90aGVyIHBhcmFtZXRlcnM6IHByb2dyYW0gY2ZvZSBhbmQgc2VsZWN0IGJhbmR3aXRoICovCisJLyogaW5pdCBvdGhlciBwYXJhbWV0ZXJzOiBwcm9ncmFtIGNmb2UgYW5kIHNlbGVjdCBiYW5kd2lkdGggKi8KIAlkZWJfaW5mbygicHJvZ3JhbSBjZm9lXG4iKTsKIAlpZiAoKHJldCA9IGFmOTAwNV9mZV9wcm9ncmFtX2Nmb2Uoc3RhdGUtPmQsIEJBTkRXSURUSF82X01IWikpKQogCQlyZXR1cm4gcmV0OwpAQCAtMTE2Nyw3ICsxMTY3LDcgQEAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JLyogc2VsZWN0IGJhbmR3aXRoICovCisJLyogc2VsZWN0IGJhbmR3aWR0aCAqLwogCWRlYl9pbmZvKCJzZWxlY3QgYmFuZHdpZHRoIik7CiAJcmV0ID0gYWY5MDA1X2ZlX3NlbGVjdF9idyhzdGF0ZS0+ZCwgZmVwLT51Lm9mZG0uYmFuZHdpZHRoKTsKIAlpZiAocmV0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9mcmlpby5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZHZiLXVzYi9mcmlpby5oCmluZGV4IGFmOGQ1NWUuLjBmNDYxY2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvZnJpaW8uaAorKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2ZyaWlvLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqICAgICAgICAgRnJvbnRlbmQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb210ZWNoIEpEVkJULTkwNTAyCiAgKiAgICAgICAgICAgICAodHVuZXIgUExMOiAgICAgICAgICAgICAgICAgICAgICAgdHVhNjAzNCwgSTJDIGFkZHI6KDB4QzAgPj4gMSkpCiAgKiAgICAgICAgICAgICAoT0ZETSBkZW1vZHVsYXRvcjogICAgICAgICAgICAgICAgVEM5MDUwMiwgSTJDIGFkZHI6KDB4MzAgPj4gMSkpCi0gKiAgICAgICAgIExFRCB4MyAoK0xOQikgY29udHJvbGw6ICAgICAgICAgICAgICAgUElDIDE2RjY3NgorICogICAgICAgICBMRUQgeDMgKCtMTkIpIGNvbnRyb2w6ICAgICAgICAgICAgICAgIFBJQyAxNkY2NzYKICAqICAgICAgICAgRUVQUk9NOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNEMwOAogICoKICAqICAgICAgICAoVVNCIHNtYXJ0IGNhcmQgcmVhZGVyOiAgICAgICAgICAgICAgICBBVTk1MjIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9kdmItdXNiL2xtZWRtMDQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvbG1lZG0wNC5jCmluZGV4IGNkMjZlN2MuLmYyZGIwMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvbG1lZG0wNC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2R2Yi11c2IvbG1lZG0wNC5jCkBAIC0zMjEsNyArMzIxLDcgQEAKIAlsbWVfaW50LT5sbWVfdXJiLT50cmFuc2Zlcl9mbGFncyB8PSBVUkJfTk9fVFJBTlNGRVJfRE1BX01BUDsKIAogCXVzYl9zdWJtaXRfdXJiKGxtZV9pbnQtPmxtZV91cmIsIEdGUF9BVE9NSUMpOwotCWluZm8oIklOVCBJbnRlcnVwdCBTZXJ2aWNlIFN0YXJ0ZWQiKTsKKwlpbmZvKCJJTlQgSW50ZXJydXB0IFNlcnZpY2UgU3RhcnRlZCIpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC00ODIsNyArNDgyLDcgQEAKIAkJCWJyZWFrOwogCQl9CiAKLQkJZGViX2luZm8oNCwgIkkyQyBGcm9tIEludGVydXB0IE1lc3NhZ2Ugb3V0KCUwMngpIGluKCUwMngpIiwKKwkJZGViX2luZm8oNCwgIkkyQyBGcm9tIEludGVycnVwdCBNZXNzYWdlIG91dCglMDJ4KSBpbiglMDJ4KSIsCiAJCQkJd2J1ZlszXSwgcmJ1ZlsxXSk7CiAKIAl9CkBAIC02MzIsMTEgKzYzMiwxMSBAQAogCX0KIAlkLT5yY19kZXYgPSByYzsKIAotCS8qIFN0YXJ0IHRoZSBJbnRlcnVwdCAqLworCS8qIFN0YXJ0IHRoZSBJbnRlcnJ1cHQgKi8KIAlyZXQgPSBsbWUyNTEwX2ludF9yZWFkKGFkYXApOwogCWlmIChyZXQgPCAwKSB7CiAJCXJjX3VucmVnaXN0ZXJfZGV2aWNlKHJjKTsKLQkJaW5mbygiSU5UIFVuYWJsZSB0byBzdGFydCBJbnRlcnVwdCBTZXJ2aWNlIik7CisJCWluZm8oIklOVCBVbmFibGUgdG8gc3RhcnQgSW50ZXJydXB0IFNlcnZpY2UiKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQogCkBAIC0xMDAzLDcgKzEwMDMsNyBAQAogCQlyZXR1cm4gLUVOT0RFVjsKIAl9CiAKLQkvKiBTdGFydCB0aGUgSW50ZXJ1cHQgJiBSZW1vdGUqLworCS8qIFN0YXJ0IHRoZSBJbnRlcnJ1cHQgJiBSZW1vdGUqLwogCXJldCA9IGxtZTI1MTBfaW50X3NlcnZpY2UoYWRhcCk7CiAKIAlyZXR1cm4gcmV0OwpAQCAtMTE3MSw3ICsxMTcxLDcgQEAKIAkJdXNiX2tpbGxfdXJiKHN0LT5sbWVfdXJiKTsKIAkJdXNiX2ZyZWVfY29oZXJlbnQoZC0+dWRldiwgNTAwMCwgc3QtPmJ1ZmZlciwKIAkJCQkgIHN0LT5sbWVfdXJiLT50cmFuc2Zlcl9kbWEpOwotCQlpbmZvKCJJbnRlcnVwdCBTZXJ2aWNlIFN0b3BwZWQiKTsKKwkJaW5mbygiSW50ZXJydXB0IFNlcnZpY2UgU3RvcHBlZCIpOwogCQlyY191bnJlZ2lzdGVyX2RldmljZShkLT5yY19kZXYpOwogCQlpbmZvKCJSZW1vdGUgU3RvcHBlZCIpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9hdGJtODgzMC5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F0Ym04ODMwLmgKaW5kZXggZTgxNDlmMy4uMDI0MjczMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F0Ym04ODMwLmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F0Ym04ODMwLmgKQEAgLTM5LDcgKzM5LDcgQEAKIAkvKiBwYXJhbGxlbCBvciBzZXJpYWwgdHJhbnNwb3J0IHN0cmVhbSAqLwogCXU4IHNlcmlhbF90czsKIAotCS8qIHRyYW5zcG9ydCBzdHJlYW0gY2xvY2sgb3V0cHV0IG9ubHkgd2hlbiByZWNldmluZyB2YWxpZCBzdHJlYW0gKi8KKwkvKiB0cmFuc3BvcnQgc3RyZWFtIGNsb2NrIG91dHB1dCBvbmx5IHdoZW4gcmVjZWl2aW5nIHZhbGlkIHN0cmVhbSAqLwogCXU4IHRzX2Nsa19nYXRlZDsKIAogCS8qIERlY29kZXIgc2FtcGxlIFRTIGRhdGEgYXQgcmlzaW5nIGVkZ2Ugb2YgY2xvY2sgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9hdTg1MjJfZGlnLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYXU4NTIyX2RpZy5jCmluZGV4IDY1ZjZhMzYuLjFkNTcyOTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9hdTg1MjJfZGlnLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2F1ODUyMl9kaWcuYwpAQCAtNjM1LDcgKzYzNSw3IEBACiAJc3RydWN0IGF1ODUyMl9sZWRfY29uZmlnICpsZWRfY29uZmlnID0gc3RhdGUtPmNvbmZpZy0+bGVkX2NmZzsKIAl1OCB2YWw7CiAKLQkvKiBiYWlsIG91dCBpZiB3ZSBjYW50IGNvbnRyb2wgYW4gTEVEICovCisJLyogYmFpbCBvdXQgaWYgd2UgY2FuJ3QgY29udHJvbCBhbiBMRUQgKi8KIAlpZiAoIWxlZF9jb25maWcgfHwgIWxlZF9jb25maWctPmdwaW9fb3V0cHV0IHx8CiAJICAgICFsZWRfY29uZmlnLT5ncGlvX291dHB1dF9lbmFibGUgfHwgIWxlZF9jb25maWctPmdwaW9fb3V0cHV0X2Rpc2FibGUpCiAJCXJldHVybiAwOwpAQCAtNjY1LDcgKzY2NSw3IEBACiAJc3RydWN0IGF1ODUyMl9sZWRfY29uZmlnICpsZWRfY29uZmlnID0gc3RhdGUtPmNvbmZpZy0+bGVkX2NmZzsKIAlpbnQgaSwgcmV0ID0gMDsKIAotCS8qIGJhaWwgb3V0IGlmIHdlIGNhbnQgY29udHJvbCBhbiBMRUQgKi8KKwkvKiBiYWlsIG91dCBpZiB3ZSBjYW4ndCBjb250cm9sIGFuIExFRCAqLwogCWlmICghbGVkX2NvbmZpZyB8fCAhbGVkX2NvbmZpZy0+Z3Bpb19sZWRzIHx8CiAJICAgICFsZWRfY29uZmlnLT5udW1fbGVkX3N0YXRlcyB8fCAhbGVkX2NvbmZpZy0+bGVkX3N0YXRlcykKIAkJcmV0dXJuIDA7CkBAIC04MDMsNyArODAzLDcgQEAKIAlpbnQgbGVkOwogCXUxNiBzdHJvbmc7CiAKLQkvKiBiYWlsIG91dCBpZiB3ZSBjYW50IGNvbnRyb2wgYW4gTEVEICovCisJLyogYmFpbCBvdXQgaWYgd2UgY2FuJ3QgY29udHJvbCBhbiBMRUQgKi8KIAlpZiAoIWxlZF9jb25maWcpCiAJCXJldHVybiAwOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYmNtMzUxMC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2JjbTM1MTAuYwppbmRleCBjZjVlNTc2Li44YWZmNTg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvYmNtMzUxMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9iY20zNTEwLmMKQEAgLTE1NSw3ICsxNTUsNyBAQAogCXVuc2lnbmVkIGxvbmcgdDsKIAogLyogQ2hlY2sgaWYgYW55IHByZXZpb3VzIEhBQiByZXF1ZXN0IHN0aWxsIG5lZWRzIHRvIGJlIHNlcnZpY2VkIGJ5IHRoZQotICogQXF1aXNpdGlvbiBQcm9jZXNzb3IgYmVmb3JlIHNlbmRpbmcgbmV3IHJlcXVlc3QgKi8KKyAqIEFjcXVpc2l0aW9uIFByb2Nlc3NvciBiZWZvcmUgc2VuZGluZyBuZXcgcmVxdWVzdCAqLwogCWlmICgocmV0ID0gYmNtMzUxMF9yZWFkQihzdCwweGE4LCZ2KSkgPCAwKQogCQlyZXR1cm4gcmV0OwogCWlmICh2LkhBQlNUQVRfYTguSEFCUikgewpAQCAtMzYxLDcgKzM2MSw3IEBACiAvKiBTZXQgZHVyYXRpb24gb2YgdGhlIGluaXRpYWwgc3RhdGUgb2YgVFVOQ1RMID0gMy4zNCBtaWNybyBTZWMgKi8KIAljLlRVTkNUTF9zdGF0ZSA9IDB4NDA7CiAKLS8qIFBSRVNDQUxFUiBERVZJREUgUkFUSU8gfCBCQzFfMl8zXzQ7IChiYW5kIHN3aXRjaCksIDFzdG9zYyBSRUZFUkVOQ0UgQ09VTlRFUiBSRUZfUzEyIGFuZCBSRUZfUzExICovCisvKiBQUkVTQ0FMRVIgRElWSURFIFJBVElPIHwgQkMxXzJfM180OyAoYmFuZCBzd2l0Y2gpLCAxc3Rvc2MgUkVGRVJFTkNFIENPVU5URVIgUkVGX1MxMiBhbmQgUkVGX1MxMSAqLwogCWMuY3RsX2RhdFswXS5jdHJsLnNpemUgPSBCSVRTXzg7CiAJYy5jdGxfZGF0WzBdLmRhdGEgICAgICA9IDB4ODAgfCBiYzsKIApAQCAtMzk3LDcgKzM5Nyw3IEBACiAJYy5jdGxfZGF0WzddLmN0cmwuY3MwICA9IDE7CiAJYy5jdGxfZGF0WzddLmRhdGEgICAgICA9IDB4NDA7CiAKLS8qIFBSRVNDQUxFUiBERVZJREUgUkFUSU8sIDJuZG9zYyBSRUZFUkVOQ0UgQ09VTlRFUiBSRUZfUzEyIGFuZCBSRUZfUzExICovCisvKiBQUkVTQ0FMRVIgRElWSURFIFJBVElPLCAybmRvc2MgUkVGRVJFTkNFIENPVU5URVIgUkVGX1MxMiBhbmQgUkVGX1MxMSAqLwogCWMuY3RsX2RhdFs4XS5jdHJsLnNpemUgPSBCSVRTXzg7CiAJYy5jdGxfZGF0WzhdLmRhdGEgICAgICA9IDB4ODA7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAwLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMC5jCmluZGV4IDVmYmMwZmMuLjAxNDIyMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAwLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDAuYwpAQCAtMTc5LDcgKzE3OSw3IEBACiAJY3gyMjcwMF93cml0ZXJlZyAoc3RhdGUsIDB4MDYsIHZhbCk7CiAKIAljeDIyNzAwX3dyaXRlcmVnIChzdGF0ZSwgMHgwOCwgMHgwNCB8IDB4MDIpOyAgLyogdXNlIHVzZXIgdHBzIHBhcmFtZXRlcnMgKi8KLQljeDIyNzAwX3dyaXRlcmVnIChzdGF0ZSwgMHgwOCwgMHgwNCk7ICAgICAgICAgLyogcmVzdGFydCBhcXVpc2l0aW9uICovCisJY3gyMjcwMF93cml0ZXJlZyAoc3RhdGUsIDB4MDgsIDB4MDQpOyAgICAgICAgIC8qIHJlc3RhcnQgYWNxdWlzaXRpb24gKi8KIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDIyNzAyLmMKaW5kZXggZmY2YzQ5OC4uMzEzOTU1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjI3MDIuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyMjcwMi5jCkBAIC01NSw3ICs1NSw3IEBACiAKIC8qIFJlZ2lzdGVyIHZhbHVlcyB0byBpbml0aWFsaXNlIHRoZSBkZW1vZCAqLwogc3RhdGljIGNvbnN0IHU4IGluaXRfdGFiW10gPSB7Ci0JMHgwMCwgMHgwMCwgLyogU3RvcCBhcXVpc2l0aW9uICovCisJMHgwMCwgMHgwMCwgLyogU3RvcCBhY3F1aXNpdGlvbiAqLwogCTB4MEIsIDB4MDYsCiAJMHgwOSwgMHgwMSwKIAkweDBELCAweDQxLApAQCAtMzEwLDcgKzMxMCw3IEBACiAJCQkmIDB4ZmMpOwogCQljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDBDLAogCQkJKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQykgJiAweEJGKSB8IDB4NDApOwotCQljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDAwLCAweDAxKTsgLyogQmVnaW4gYXF1aXNpdGlvbiAqLworCQljeDIyNzAyX3dyaXRlcmVnKHN0YXRlLCAweDAwLCAweDAxKTsgLyogQmVnaW4gYWNxdWlzaXRpb24gKi8KIAkJZHByaW50aygiJXM6IEF1dG9kZXRlY3RpbmdcbiIsIF9fZnVuY19fKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtNDI0LDcgKzQyNCw3IEBACiAJY3gyMjcwMl93cml0ZXJlZyhzdGF0ZSwgMHgwQywKIAkJKGN4MjI3MDJfcmVhZHJlZyhzdGF0ZSwgMHgwQykgJiAweEJGKSB8IDB4NDApOwogCi0JLyogQmVnaW4gY2hhbm5lbCBhcXVpc2l0aW9uICovCisJLyogQmVnaW4gY2hhbm5lbCBhY3F1aXNpdGlvbiAqLwogCWN4MjI3MDJfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MDEpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTAuYwppbmRleCA3YTFhNWJjLi5iZjljOTk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEwLmMKQEAgLTU0NCw3ICs1NDQsNyBAQAogCWN4MjQxMTBfc2V0X2ludmVyc2lvbiAoc3RhdGUsIHAtPmludmVyc2lvbik7CiAJY3gyNDExMF9zZXRfZmVjIChzdGF0ZSwgcC0+dS5xcHNrLmZlY19pbm5lcik7CiAJY3gyNDExMF9zZXRfc3ltYm9scmF0ZSAoc3RhdGUsIHAtPnUucXBzay5zeW1ib2xfcmF0ZSk7Ci0JY3gyNDExMF93cml0ZXJlZyhzdGF0ZSwweDA0LDB4MDUpOyAvKiBzdGFydCBhcXVpc2l0aW9uICovCisJY3gyNDExMF93cml0ZXJlZyhzdGF0ZSwweDA0LDB4MDUpOyAvKiBzdGFydCBhY3F1aXNpdGlvbiAqLwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMy5oIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMTMuaAppbmRleCA1ZGUwZjdmLi4wMWViN2I5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDExMy5oCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTEzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIERyaXZlciBmb3IgQ29uZXhhbnQgQ1gyNDExMy9DWDI0MTI4IFR1bmVyIChTYXRlbGl0ZSkKKyAqICBEcml2ZXIgZm9yIENvbmV4YW50IENYMjQxMTMvQ1gyNDEyOCBUdW5lciAoU2F0ZWxsaXRlKQogICoKICAqICBDb3B5cmlnaHQgKEMpIDIwMDctOCBQYXRyaWNrIEJvZXR0Y2hlciA8cGJAbGludXh0di5vcmc+CiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9jeDI0MTIzLmMKaW5kZXggZmFkNmE5OS4uYjFkZDhhYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2N4MjQxMjMuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvY3gyNDEyMy5jCkBAIC05NDksNyArOTQ5LDcgQEAKIAllbHNlCiAJCWVycigiaXQgc2VlbXMgSSBkb24ndCBoYXZlIGEgdHVuZXIuLi4iKTsKIAotCS8qIEVuYWJsZSBhdXRvbWF0aWMgYXF1aXNpdGlvbiBhbmQgcmVzZXQgY3ljbGUgKi8KKwkvKiBFbmFibGUgYXV0b21hdGljIGFjcXVpc2l0aW9uIGFuZCByZXNldCBjeWNsZSAqLwogCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MDMsIChjeDI0MTIzX3JlYWRyZWcoc3RhdGUsIDB4MDMpIHwgMHgwNykpOwogCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDB4MTApOwogCWN4MjQxMjNfd3JpdGVyZWcoc3RhdGUsIDB4MDAsIDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL2RyeDM5N3hELmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvZHJ4Mzk3eEQuYwppbmRleCBhMDUwMDdjLi41MzZmMDJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvZHJ4Mzk3eEQuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvZHJ4Mzk3eEQuYwpAQCAtMTA5Nyw3ICsxMDk3LDcgQEAKIAlzLT5jb25maWcuaWZhZ2MudzBBID0gMHgzZmY7CiAJcy0+Y29uZmlnLmlmYWdjLncwQyA9IDB4Mzg4OwogCi0JLyogZm9yIHNpZ25hbCBzdHJlbmdodCBjYWxjdWxhdGlvbnMgKi8KKwkvKiBmb3Igc2lnbmFsIHN0cmVuZ3RoIGNhbGN1bGF0aW9ucyAqLwogCXMtPmNvbmZpZy5zczc2ID0gODIwOwogCXMtPmNvbmZpZy5zczc4ID0gMjIwMDsKIAlzLT5jb25maWcuc3M3QSA9IDE1MDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tYjg2YTE2LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbWI4NmExNi5jCmluZGV4IDMzYjYzMjMuLmMyODMxMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tYjg2YTE2LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMTYuYwpAQCAtMTYzMCw3ICsxNjMwLDcgQEAKIAlzdGF0ZS0+c3JhdGUgPSBwLT51LnFwc2suc3ltYm9sX3JhdGUgLyAxMDAwOwogCiAJaWYgKCFtYjg2YTE2X3NldF9mZShzdGF0ZSkpIHsKLQkJZHByaW50ayh2ZXJib3NlLCBNQjg2QTE2X0VSUk9SLCAxLCAiU3VjY2VzZnVsbHkgYWNxdWlyZWQgTE9DSyIpOworCQlkcHJpbnRrKHZlcmJvc2UsIE1CODZBMTZfRVJST1IsIDEsICJTdWNjZXNzZnVsbHkgYWNxdWlyZWQgTE9DSyIpOwogCQlyZXR1cm4gRFZCRkVfQUxHT19TRUFSQ0hfU1VDQ0VTUzsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tYjg2YTIwcy5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMKaW5kZXggY2M0YWNkMi4uMGY4NjdhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL21iODZhMjBzLmMKQEAgLTQwNiw3ICs0MDYsNyBAQAogCQlwcmludGsoS0VSTl9JTkZPICJtYjg2YTIwczogSW5pdCBmYWlsZWQuIFdpbGwgdHJ5IGFnYWluIGxhdGVyXG4iKTsKIAl9IGVsc2UgewogCQlzdGF0ZS0+bmVlZF9pbml0ID0gZmFsc2U7Ci0JCWRwcmludGsoIkluaXRpYWxpemF0aW9uIHN1Y2NlZGVkLlxuIik7CisJCWRwcmludGsoIkluaXRpYWxpemF0aW9uIHN1Y2NlZWRlZC5cbiIpOwogCX0KIAlyZXR1cm4gcmM7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvbXQzMTIuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tdDMxMi5jCmluZGV4IDQ3MjkwN2QuLjgzZTZmMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tdDMxMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9tdDMxMi5jCkBAIC02NzAsNyArNjcwLDcgQEAKIAkJaWYgKHJldCA8IDApCiAJCQlnb3RvIGVycm9yOwogCi0JCS8qIHByZXNlcnZlIHRoaXMgYml0IHRvIG5vdCBhY2NpZGVudGx5IHNodXRkb3duIEFEQyAqLworCQkvKiBwcmVzZXJ2ZSB0aGlzIGJpdCB0byBub3QgYWNjaWRlbnRhbGx5IHNodXRkb3duIEFEQyAqLwogCQl2YWwgJj0gMHg4MDsKIAkJYnJlYWs7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MjAuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zNWgxNDIwLmMKaW5kZXggZTg3Yjc0Ny4uMTdmOGNkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3M1aDE0MjAuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvczVoMTQyMC5jCkBAIC0yMjUsNyArMjI1LDcgQEAKIAl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7CiAJaW50IHJlc3VsdCA9IDA7CiAKLQkvKiBzZXR1cCBmb3IgRElTRVFDIHJlY2lldmUgKi8KKwkvKiBzZXR1cCBmb3IgRElTRVFDIHJlY2VpdmUgKi8KIAl2YWwgPSBzNWgxNDIwX3JlYWRyZWcoc3RhdGUsIDB4M2IpOwogCXM1aDE0MjBfd3JpdGVyZWcoc3RhdGUsIDB4M2IsIDB4ODIpOyAvKiBGSVhNRTogZ3Vlc3MgLSBkbyB3ZSBuZWVkIHRvIHNldCBESVNfUkRZKDB4MDgpIGluIHJlY2VpdmUgbW9kZT8gKi8KIAltc2xlZXAoMTUpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0YjYxMDAuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdGI2MTAwLmMKaW5kZXggNjQ2NzNiOC4uYmMxYThhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0YjYxMDAuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3RiNjEwMC5jCkBAIC0zNjAsNyArMzYwLDcgQEAKIAllbHNlCiAJCW9kaXYgPSAwOwogCi0JLyogVkNPIGVuYWJsZWQsIHNlYWNoIGNsb2NrIG9mZiBhcyBwZXIgTEwzLjcsIDMuNC4xICovCisJLyogVkNPIGVuYWJsZWQsIHNlYXJjaCBjbG9jayBvZmYgYXMgcGVyIExMMy43LCAzLjQuMSAqLwogCXJlZ3NbU1RCNjEwMF9WQ09dID0gMHhlMCB8IChvZGl2IDw8IFNUQjYxMDBfVkNPX09ESVZfU0hJRlQpOwogCiAJLyogT1NNCSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDI5Ny5jIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAyOTcuYwppbmRleCA0ZmQ3NDc5Li44NGQ4OGYzMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAyOTcuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDI5Ny5jCkBAIC00MzUsNyArNDM1LDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JLy8gZGV0ZXJtaW5lIGludmVyc2lvbiBkZXBlbmRhbnQgcGFyYW1ldGVycworCS8vIGRldGVybWluZSBpbnZlcnNpb24gZGVwZW5kZW50IHBhcmFtZXRlcnMKIAlpbnZlcnNpb24gPSBwLT5pbnZlcnNpb247CiAJaWYgKHN0YXRlLT5jb25maWctPmludmVydCkKIAkJaW52ZXJzaW9uID0gKGludmVyc2lvbiA9PSBJTlZFUlNJT05fT04pID8gSU5WRVJTSU9OX09GRiA6IElOVkVSU0lPTl9PTjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMzY3LmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDM2Ny5jCmluZGV4IDRlMGU2YTguLmU1N2FiNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwMzY3LmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djAzNjcuYwpAQCAtMTMyOCw3ICsxMzI4LDcgQEAKIAogCS8qZ3VhcmQ9c3R2MDM2N19yZWFkYml0cyhzdGF0ZSxGMzY3VEVSX1NZUl9HVUFSRCk7ICovCiAKLQkvKnN1cHJlc3MgRVBRIGF1dG8gZm9yIFNZUl9HQVJEIDEvMTYgb3IgMS8zMgorCS8qc3VwcHJlc3MgRVBRIGF1dG8gZm9yIFNZUl9HQVJEIDEvMTYgb3IgMS8zMgogCWFuZCBzZXQgY2hhbm5lbCBwcmVkaWN0b3IgaW4gYXV0b21hdGljICovCiAjaWYgMAogCXN3aXRjaCAoZ3VhcmQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTAwX3ByaXYuaCBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTAwX3ByaXYuaAppbmRleCBiNjJiMGYwLi5lMGVhNzRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkwMF9wcml2LmgKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MDBfcHJpdi5oCkBAIC0yMzgsNyArMjM4LDcgQEAKIH07CiAKIHN0cnVjdCBzdHYwOTAwX2luaXRfcGFyYW1zewotCXUzMglkbWRfcmVmX2NsazsvKiBSZWZyZW5jZSxJbnB1dCBjbG9jayBmb3IgdGhlIGRlbW9kIGluIEh6ICovCisJdTMyCWRtZF9yZWZfY2xrOy8qIFJlZmVyZW5jZSxJbnB1dCBjbG9jayBmb3IgdGhlIGRlbW9kIGluIEh6ICovCiAKIAkvKiBEZW1vZHVsYXRvciBUeXBlIChzaW5nbGUgZGVtb2Qgb3IgZHVhbCBkZW1vZCkgKi8KIAllbnVtIGZlX3N0djA5MDBfZGVtb2RfbW9kZQlkZW1vZF9tb2RlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MHguYyBiL2RyaXZlcnMvbWVkaWEvZHZiL2Zyb250ZW5kcy9zdHYwOTB4LmMKaW5kZXggNDFkMGYwYS4uNTJkODcxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvZnJvbnRlbmRzL3N0djA5MHguYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi9mcm9udGVuZHMvc3R2MDkweC5jCkBAIC0xNDI0LDcgKzE0MjQsNyBAQAogCQkJaWYgKFNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIENGUkxPVzAsIDB4MDApIDwgMCkKIAkJCQlnb3RvIGVycjsKIAotCQkJLyplbmxhcmdlIHRoZSB0aW1pbmcgYmFuZHdpdGggZm9yIExvdyBTUiovCisJCQkvKmVubGFyZ2UgdGhlIHRpbWluZyBiYW5kd2lkdGggZm9yIExvdyBTUiovCiAJCQlpZiAoU1RWMDkweF9XUklURV9ERU1PRChzdGF0ZSwgUlRDUzIsIDB4NjgpIDwgMCkKIAkJCQlnb3RvIGVycjsKIAkJfSBlbHNlIHsKQEAgLTE0MzIsMTcgKzE0MzIsMTcgQEAKIAkJCVNldCBUaGUgY2FycmllciBzZWFyY2ggdXAgYW5kIGxvdyB0byBhdXRvIG1vZGUgKi8KIAkJCWlmIChTVFYwOTB4X1dSSVRFX0RFTU9EKHN0YXRlLCBDQVJDRkcsIDB4YzQpIDwgMCkKIAkJCQlnb3RvIGVycjsKLQkJCS8qcmVkdWNlIHRoZSB0aW1pbmcgYmFuZHdpdGggZm9yIGhpZ2ggU1IqLworCQkJLypyZWR1Y2UgdGhlIHRpbWluZyBiYW5kd2lkdGggZm9yIGhpZ2ggU1IqLwogCQkJaWYgKFNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIFJUQ1MyLCAweDQ0KSA8IDApCiAJCQkJZ290byBlcnI7CiAJCX0KIAl9IGVsc2UgewogCQkvKiA+PSBDdXQgMyAqLwogCQlpZiAoc3RhdGUtPnNyYXRlIDw9IDUwMDAwMDApIHsKLQkJCS8qIGVubGFyZ2UgdGhlIHRpbWluZyBiYW5kd2l0aCBmb3IgTG93IFNSICovCisJCQkvKiBlbmxhcmdlIHRoZSB0aW1pbmcgYmFuZHdpZHRoIGZvciBMb3cgU1IgKi8KIAkJCVNUVjA5MHhfV1JJVEVfREVNT0Qoc3RhdGUsIFJUQ1MyLCAweDY4KTsKIAkJfSBlbHNlIHsKLQkJCS8qIHJlZHVjZSB0aW1pbmcgYmFuZHdpdGggZm9yIGhpZ2ggU1IgKi8KKwkJCS8qIHJlZHVjZSB0aW1pbmcgYmFuZHdpZHRoIGZvciBoaWdoIFNSICovCiAJCQlTVFYwOTB4X1dSSVRFX0RFTU9EKHN0YXRlLCBSVENTMiwgMHg0NCk7CiAJCX0KIApAQCAtMjQ4Miw3ICsyNDgyLDcgQEAKIAkJCQkJZHZiczJfZmx5X3doZWVsID0gU1RWMDkweF9HRVRGSUVMRF9QeChyZWcsIEZMWVdIRUVMX0NQVF9GSUVMRCk7CiAJCQkJfQogCQkJCWlmIChkdmJzMl9mbHlfd2hlZWwgPCAweGQpIHsKLQkJCQkJLypGQUxTRSBsb2NrLCBUaGUgZGVtb2QgaXMgbG9vc2luZyBsb2NrICovCisJCQkJCS8qRkFMU0UgbG9jaywgVGhlIGRlbW9kIGlzIGxvc2luZyBsb2NrICovCiAJCQkJCWxvY2sgPSAwOwogCQkJCQlpZiAodHJpYWxzIDwgMikgewogCQkJCQkJaWYgKHN0YXRlLT5pbnRlcm5hbC0+ZGV2X3ZlciA+PSAweDIwKSB7CkBAIC0zMjAyLDcgKzMyMDIsNyBAQAogCQkJZ290byBlcnI7CiAJCWlmIChTVFYwOTB4X1dSSVRFX0RFTU9EKHN0YXRlLCBDT1JSRUxNQU5ULCAweDcwKSA8IDApCiAJCQlnb3RvIGVycjsKLQkJaWYgKHN0djA5MHhfc2V0X3NyYXRlKHN0YXRlLCAxMDAwMDAwKSA8IDApIC8qIGluaXRhbCBzcmF0ZSA9IDFNc3BzICovCisJCWlmIChzdHYwOTB4X3NldF9zcmF0ZShzdGF0ZSwgMTAwMDAwMCkgPCAwKSAvKiBpbml0aWFsIHNyYXRlID0gMU1zcHMgKi8KIAkJCWdvdG8gZXJyOwogCX0gZWxzZSB7CiAJCS8qIGtub3duIHNyYXRlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9tYW50aXMvbWFudGlzX3VhcnQuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL21hbnRpcy9tYW50aXNfdWFydC5jCmluZGV4IDk3Yjg4OWUuLmY4MDdjOGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL21hbnRpcy9tYW50aXNfdWFydC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL21hbnRpcy9tYW50aXNfdWFydC5jCkBAIC0xNzIsNyArMTcyLDcgQEAKIAltbXdyaXRlKG1tcmVhZChNQU5USVNfVUFSVF9DVEwpIHwgTUFOVElTX1VBUlRfUlhJTlQsIE1BTlRJU19VQVJUX0NUTCk7CiAKIAlzY2hlZHVsZV93b3JrKCZtYW50aXMtPnVhcnRfd29yayk7Ci0JZHByaW50ayhNQU5USVNfREVCVUcsIDEsICJVQVJUIHN1Y2Nlc2Z1bGx5IGluaXRpYWxpemVkIik7CisJZHByaW50ayhNQU5USVNfREVCVUcsIDEsICJVQVJUIHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCIpOwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9uZ2VuZS9uZ2VuZS1jb3JlLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi9uZ2VuZS9uZ2VuZS1jb3JlLmMKaW5kZXggMTc1YTBmNi4uY2NjMmQxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvbmdlbmUvbmdlbmUtY29yZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL25nZW5lL25nZW5lLWNvcmUuYwpAQCAtMTIyLDcgKzEyMiw3IEBACiAJCQkJCQlDdXItPm5nZW5lQnVmZmVyLlNSLkZsYWdzICY9CiAJCQkJCQkJfjB4NDA7CiAJCQkJCQlicmVhazsKLQkJCQkJCS8qIFN0b3AgcHJvY2Nlc3Npbmcgc3RyZWFtICovCisJCQkJCQkvKiBTdG9wIHByb2Nlc3Npbmcgc3RyZWFtICovCiAJCQkJCX0KIAkJCQl9IGVsc2UgewogCQkJCQkvKiBXZSBnb3QgYSB2YWxpZCBidWZmZXIsCkBAIC0xMzMsNyArMTMzLDcgQEAKIAkJCQlwcmludGsoS0VSTl9FUlIgREVWSUNFX05BTUUgIjogT09QU1xuIik7CiAJCQkJaWYgKGNoYW4tPkhXU3RhdGUgPT0gSFdTVEFURV9SVU4pIHsKIAkJCQkJQ3VyLT5uZ2VuZUJ1ZmZlci5TUi5GbGFncyAmPSB+MHg0MDsKLQkJCQkJYnJlYWs7CS8qIFN0b3AgcHJvY2Nlc3Npbmcgc3RyZWFtICovCisJCQkJCWJyZWFrOwkvKiBTdG9wIHByb2Nlc3Npbmcgc3RyZWFtICovCiAJCQkJfQogCQkJfQogCQkJaWYgKGNoYW4tPkF1ZGlvRFRPVXBkYXRlZCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvcGx1dG8yL3BsdXRvMi5jIGIvZHJpdmVycy9tZWRpYS9kdmIvcGx1dG8yL3BsdXRvMi5jCmluZGV4IDZjYTY3MTNkLi43Y2I3OWVjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi9wbHV0bzIvcGx1dG8yLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvcGx1dG8yL3BsdXRvMi5jCkBAIC0yOTQsMTMgKzI5NCwxMyBAQAogCiAJLyogV29ya2Fyb3VuZCBmb3IgYnJva2VuIGhhcmR3YXJlOgogCSAqIFsxXSBPbiBzdGFydHVwIE5CUEFDS0VUUyBzZWVtcyB0byBjb250YWluIGFuIHVuaW5pdGlhbGl6ZWQgdmFsdWUsCi0JICogICAgIGJ1dCBubyBwYWNrZXRzIGhhdmUgYmVlbiB0cmFuc2ZlcmVkLgorCSAqICAgICBidXQgbm8gcGFja2V0cyBoYXZlIGJlZW4gdHJhbnNmZXJyZWQuCiAJICogWzJdIFNvbWV0aW1lcyAoYWN0dWFsbHkgdmVyeSBvZnRlbikgTkJQQUNLRVRTIHN0YXlzIGF0IHplcm8KLQkgKiAgICAgYWx0aG91Z2ggb25lIHBhY2tldCBoYXMgYmVlbiB0cmFuc2ZlcmVkLgorCSAqICAgICBhbHRob3VnaCBvbmUgcGFja2V0IGhhcyBiZWVuIHRyYW5zZmVycmVkLgogCSAqIFszXSBTb21ldGltZXMgKGFjdHVhbGx5IHJhcmVseSksIHRoZSBjYXJkIGdldHMgaW50byBhbiBlcnJvbmVvdXMKIAkgKiAgICAgbW9kZSB3aGVyZSBpdCBjb250aW51b3VzbHkgZ2VuZXJhdGVzIGludGVycnVwdHMsIGNsYWltaW5nIGl0Ci0JICogICAgIGhhcyByZWNpZXZlZCBuYnBhY2tldHM+VFNfRE1BX1BBQ0tFVFMgcGFja2V0cywgYnV0IG5vIHBhY2tldAotCSAqICAgICBoYXMgYmVlbiB0cmFuc2ZlcmVkLiBPbmx5IGEgcmVzZXQgc2VlbXMgdG8gc29sdmUgdGhpcworCSAqICAgICBoYXMgcmVjZWl2ZWQgbmJwYWNrZXRzPlRTX0RNQV9QQUNLRVRTIHBhY2tldHMsIGJ1dCBubyBwYWNrZXQKKwkgKiAgICAgaGFzIGJlZW4gdHJhbnNmZXJyZWQuIE9ubHkgYSByZXNldCBzZWVtcyB0byBzb2x2ZSB0aGlzCiAJICovCiAJaWYgKChuYnBhY2tldHMgPT0gMCkgfHwgKG5icGFja2V0cyA+IFRTX0RNQV9QQUNLRVRTKSkgewogCQl1bnNpZ25lZCBpbnQgaSA9IDA7CkBAIC0zMzIsNyArMzMyLDcgQEAKIAlzdHJ1Y3QgcGx1dG8gKnBsdXRvID0gZGV2X2lkOwogCXUzMiB0c2NyOwogCi0JLyogY2hlY2sgd2hldGhlciBhbiBpbnRlcnJ1cHQgb2NjdXJlZCBvbiB0aGlzIGRldmljZSAqLworCS8qIGNoZWNrIHdoZXRoZXIgYW4gaW50ZXJydXB0IG9jY3VycmVkIG9uIHRoaXMgZGV2aWNlICovCiAJdHNjciA9IHBsdXRvX3JlYWRyZWcocGx1dG8sIFJFR19UU0NSKTsKIAlpZiAoISh0c2NyICYgKFRTQ1JfREUgfCBUU0NSX09WUikpKQogCQlyZXR1cm4gSVJRX05PTkU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL2R2Yi9zaWFuby9zbXNkdmIuYyBiL2RyaXZlcnMvbWVkaWEvZHZiL3NpYW5vL3Ntc2R2Yi5jCmluZGV4IGI4MGQwOWIuLjM3YzU5NGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL3NpYW5vL3Ntc2R2Yi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvZHZiL3NpYW5vL3Ntc2R2Yi5jCkBAIC02NTAsNyArNjUwLDcgQEAKIAkJaWYgKHN0YXR1cyAmIEZFX0hBU19MT0NLKQogCQkJcmV0dXJuIHJldDsKIAotCQkvKiBwcmV2aW91cyB0dW5lIGRpZG50IGxvY2sgLSBlbmFibGUgTE5BIGFuZCB0dW5lIGFnYWluICovCisJCS8qIHByZXZpb3VzIHR1bmUgZGlkbid0IGxvY2sgLSBlbmFibGUgTE5BIGFuZCB0dW5lIGFnYWluICovCiAJCXNtc19ib2FyZF9sbmFfY29udHJvbChjbGllbnQtPmNvcmVkZXYsIDEpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvdHRwY2kvYXY3MTEwLmMgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9hdjcxMTAuYwppbmRleCBmYzBhNjBmLi4zZDIwNzE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9hdjcxMTAuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHBjaS9hdjcxMTAuYwpAQCAtMjMzMiw3ICsyMzMyLDcgQEAKICAqIGluY3JlbWVudC4gVGhhdCdzIGhvdyB0aGUgNzE0NiBpcyBwcm9ncmFtbWVkIHRvIGRvIGV2ZW50CiAgKiBjb3VudGluZyBpbiB0aGlzIGJ1ZGdldC1wYXRjaC5jCiAgKiBJICp0aGluayogSFBTIHNldHRpbmcgaGFzIHNvbWV0aGluZyB0byBkbyB3aXRoIHRoZSBwaGFzZQotICogb2YgSFMgYnV0IEkgY2FudCBiZSAxMDAlIHN1cmUgaW4gdGhhdC4KKyAqIG9mIEhTIGJ1dCBJIGNhbid0IGJlIDEwMCUgc3VyZSBpbiB0aGF0LgogICoKICAqIGhhcmR3YXJlIGRlYnVnIG5vdGU6IGEgd29ya2luZyBidWRnZXQgY2FyZCAoaW5jbHVkaW5nIGJ1ZGdldCBwYXRjaCkKICAqIHdpdGggdnBlaXJxKCkgaW50ZXJydXB0IHNldHVwIGluIG1vZGUgIjB4OTAiIChldmVyeSA2NEspIHdpbGwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvZHZiL3R0cGNpL2J1ZGdldC1wYXRjaC5jIGIvZHJpdmVycy9tZWRpYS9kdmIvdHRwY2kvYnVkZ2V0LXBhdGNoLmMKaW5kZXggNTc5ODM1NS4uMzM5NWQxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9kdmIvdHRwY2kvYnVkZ2V0LXBhdGNoLmMKKysrIGIvZHJpdmVycy9tZWRpYS9kdmIvdHRwY2kvYnVkZ2V0LXBhdGNoLmMKQEAgLTUzOSw3ICs1MzksNyBAQAogKiogICAgICBpbmNyZW1lbnQuIFRoYXQncyBob3cgdGhlIDcxNDYgaXMgcHJvZ3JhbW1lZCB0byBkbyBldmVudAogKiogICAgICBjb3VudGluZyBpbiB0aGlzIGJ1ZGdldC1wYXRjaC5jCiAqKiAgICAgIEkgKnRoaW5rKiBIUFMgc2V0dGluZyBoYXMgc29tZXRoaW5nIHRvIGRvIHdpdGggdGhlIHBoYXNlCi0qKiAgICAgIG9mIEhTIGJ1dCBJIGNhbnQgYmUgMTAwJSBzdXJlIGluIHRoYXQuCisqKiAgICAgIG9mIEhTIGJ1dCBJIGNhbid0IGJlIDEwMCUgc3VyZSBpbiB0aGF0LgogCiAqKiAgICAgIGhhcmR3YXJlIGRlYnVnIG5vdGU6IGEgd29ya2luZyBidWRnZXQgY2FyZCAoaW5jbHVkaW5nIGJ1ZGdldCBwYXRjaCkKICoqICAgICAgd2l0aCB2cGVpcnEoKSBpbnRlcnJ1cHQgc2V0dXAgaW4gbW9kZSAiMHg5MCIgKGV2ZXJ5IDY0Sykgd2lsbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9kdmIvdHR1c2ItZGVjL3R0dXNiX2RlYy5jIGIvZHJpdmVycy9tZWRpYS9kdmIvdHR1c2ItZGVjL3R0dXNiX2RlYy5jCmluZGV4IGZlMWI4MDMuLmY4OTNiZmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvZHZiL3R0dXNiLWRlYy90dHVzYl9kZWMuYworKysgYi9kcml2ZXJzL21lZGlhL2R2Yi90dHVzYi1kZWMvdHR1c2JfZGVjLmMKQEAgLTIzNCw3ICsyMzQsNyBAQAogCQkgKiAod2l0aCBidWZmZXJbM10gPT0gMHg0MCkgaW4gYW4gaW50ZXJ2YWxsIG9mIH4xMDBtcy4KIAkJICogQnV0IHRvIGhhbmRsZSB0aGlzIGNvcnJlY3RseSB3ZSBoYWQgdG8gaW1sZW1lbmVudCBzb21lCiAJCSAqIGtpbmQgb2YgdGltZXIgd2hpY2ggc2lnbmFscyBhICdrZXkgdXAnIGV2ZW50IGlmIG5vCi0JCSAqIGtleXJlcGVhdCBzaWduYWwgaXMgcmVjaWV2ZWQgZm9yIGxldHMgc2F5IDIwMG1zLgorCQkgKiBrZXlyZXBlYXQgc2lnbmFsIGlzIHJlY2VpdmVkIGZvciBsZXRzIHNheSAyMDBtcy4KIAkJICogdGhpcyBzaG91bGQvY291bGQgYmUgYWRkZWQgbGF0ZXIgLi4uCiAJCSAqIGZvciBub3cgbGV0cyByZXBvcnQgZWFjaCBzaWduYWwgYXMgYSBrZXkgZG93biBhbmQgdXAqLwogCQlkcHJpbnRrKCIlczpyYyBzaWduYWw6JWRcbiIsIF9fZnVuY19fLCBidWZmZXJbNF0pOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1tcjgwMC5jIGIvZHJpdmVycy9tZWRpYS9yYWRpby9yYWRpby1tcjgwMC5jCmluZGV4IGU2YjJkMDguLmIzYTYzNWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vcmFkaW8tbXI4MDAuYworKysgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3JhZGlvLW1yODAwLmMKQEAgLTk5LDcgKzk5LDcgQEAKIAogLyoKICAqIENvbW1hbmRzIHRoYXQgZGV2aWNlIHNob3VsZCB1bmRlcnN0YW5kCi0gKiBMaXN0IGlzbnQgZnVsbCBhbmQgd2lsbCBiZSB1cGRhdGVkIHdpdGggaW1wbGVtZW50YXRpb24gb2YgbmV3IGZ1bmN0aW9ucworICogTGlzdCBpc24ndCBmdWxsIGFuZCB3aWxsIGJlIHVwZGF0ZWQgd2l0aCBpbXBsZW1lbnRhdGlvbiBvZiBuZXcgZnVuY3Rpb25zCiAgKi8KICNkZWZpbmUgQU1SQURJT19TRVRfRlJFUQkweGE0CiAjZGVmaW5lIEFNUkFESU9fU0VUX01VVEUJMHhhYgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYWRpby9zaTQ3MTMtaTJjLmMgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy1pMmMuYwppbmRleCAwZmFiNmY4Li5kZWNhMmUwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy1pMmMuYworKysgYi9kcml2ZXJzL21lZGlhL3JhZGlvL3NpNDcxMy1pMmMuYwpAQCAtNDgxLDcgKzQ4MSw3IEBACiB9CiAKIC8qCi0gKiBzaTQ3MTNfd2FpdF9zdGMgLSBXYWl0cyBTVEMgaW50ZXJydXB0IGFuZCBjbGVhcnMgc3RhdHVzIGJpdHMuIFVzZWZ1bGwKKyAqIHNpNDcxM193YWl0X3N0YyAtIFdhaXRzIFNUQyBpbnRlcnJ1cHQgYW5kIGNsZWFycyBzdGF0dXMgYml0cy4gVXNlZnVsCiAgKgkJICAgICBmb3IgVFhfVFVORV9QT1dFUiwgVFhfVFVORV9GUkVRIGFuZCBUWF9UVU5FX01FQVMKICAqIEBzZGV2OiBzaTQ3MTNfZGV2aWNlIHN0cnVjdHVyZSBmb3IgdGhlIGRldmljZSB3ZSBhcmUgY29tbXVuaWNhdGluZwogICogQHVzZWNzOiB0aW1lb3V0IHRvIHdhaXQgZm9yIFNUQyBpbnRlcnJ1cHQgc2lnbmFsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3dsMTI4eC9mbWRydl9jb21tb24uYyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5jCmluZGV4IGVjZmQ5ZmIuLjU5OTFhYjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5jCkBAIC0zNTIsNyArMzUyLDcgQEAKIAlpZiAoIWF0b21pY19yZWFkKCZmbWRldi0+dHhfY250KSkKIAkJcmV0dXJuOwogCi0JLyogQ2hlY2ssIGlzIHRoZXJlIGFueSB0aW1lb3V0IGhhcHBlbm5lZCB0byBsYXN0IHRyYW5zbWl0dGVkIHBhY2tldCAqLworCS8qIENoZWNrLCBpcyB0aGVyZSBhbnkgdGltZW91dCBoYXBwZW5lZCB0byBsYXN0IHRyYW5zbWl0dGVkIHBhY2tldCAqLwogCWlmICgoamlmZmllcyAtIGZtZGV2LT5sYXN0X3R4X2ppZmZpZXMpID4gRk1fRFJWX1RYX1RJTUVPVVQpIHsKIAkJZm1lcnIoIlRYIHRpbWVvdXQgb2NjdXJyZWRcbiIpOwogCQlhdG9taWNfc2V0KCZmbWRldi0+dHhfY250LCAxKTsKQEAgLTQ3OCw3ICs0NzgsNyBAQAogCQlyZXR1cm4gLUVUSU1FRE9VVDsKIAl9CiAJaWYgKCFmbWRldi0+cmVzcF9za2IpIHsKLQkJZm1lcnIoIlJlcG9uc2UgU0tCIGlzIG1pc3NpbmdcbiIpOworCQlmbWVycigiUmVzcG9uc2UgU0tCIGlzIG1pc3NpbmdcbiIpOwogCQlyZXR1cm4gLUVGQVVMVDsKIAl9CiAJc3Bpbl9sb2NrX2lycXNhdmUoJmZtZGV2LT5yZXNwX3NrYl9sb2NrLCBmbGFncyk7CkBAIC0xNTk4LDcgKzE1OTgsNyBAQAogCQlmbWRiZygiRk0gQ29yZSBpcyBhbHJlYWR5IGRvd25cbiIpOwogCQlyZXR1cm4gMDsKIAl9Ci0JLyogU2V2aWNlIHBlbmRpbmcgcmVhZCAqLworCS8qIFNlcnZpY2UgcGVuZGluZyByZWFkICovCiAJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZmbWRldi0+cngucmRzLnJlYWRfcXVldWUpOwogCiAJdGFza2xldF9raWxsKCZmbWRldi0+dHhfdGFzayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JhZGlvL3dsMTI4eC9mbWRydl9jb21tb24uaCBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5oCmluZGV4IDQyN2M0MTYuLmFlZTI0M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5oCisrKyBiL2RyaXZlcnMvbWVkaWEvcmFkaW8vd2wxMjh4L2ZtZHJ2X2NvbW1vbi5oCkBAIC0zNjIsNyArMzYyLDcgQEAKICNkZWZpbmUgRk1fVFhfUFJFRU1QSF81MFVTCQkwCiAjZGVmaW5lIEZNX1RYX1BSRUVNUEhfNzVVUwkJMgogCi0vKiBGTSBUWCBhbnRlbm5hIGltcGVkZW5jZSB2YWx1ZXMgKi8KKy8qIEZNIFRYIGFudGVubmEgaW1wZWRhbmNlIHZhbHVlcyAqLwogI2RlZmluZSBGTV9UWF9BTlRfSU1QXzUwCQkwCiAjZGVmaW5lIEZNX1RYX0FOVF9JTVBfMjAwCQkxCiAjZGVmaW5lIEZNX1RYX0FOVF9JTVBfNTAwCQkyCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JjL2VuZV9pci5jIGIvZHJpdmVycy9tZWRpYS9yYy9lbmVfaXIuYwppbmRleCAxYWM0OTEzLi5hNDNlZDZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JjL2VuZV9pci5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmMvZW5lX2lyLmMKQEAgLTUyMCw3ICs1MjAsNyBAQAogCWRldi0+cnhfZW5hYmxlZCA9IGZhbHNlOwogfQogCi0vKiBUaGlzIHJlc2V0cyB0aGUgcmVjZWl2ZXIuIFVzZWZ1bGwgdG8gc3RvcCBzdHJlYW0gb2Ygc3BhY2VzIGF0IGVuZCBvZgorLyogVGhpcyByZXNldHMgdGhlIHJlY2VpdmVyLiBVc2VmdWwgdG8gc3RvcCBzdHJlYW0gb2Ygc3BhY2VzIGF0IGVuZCBvZgogICogdHJhbnNtaXNzaW9uCiAgKi8KIHN0YXRpYyB2b2lkIGVuZV9yeF9yZXNldChzdHJ1Y3QgZW5lX2RldmljZSAqZGV2KQpAQCAtMTA4OSw3ICsxMDg5LDcgQEAKIAlpZiAoZXJyb3IgPCAwKQogCQlnb3RvIGVycm9yOwogCi0JZW5lX25vdGljZSgiZHJpdmVyIGhhcyBiZWVuIHN1Y2Nlc2Z1bGx5IGxvYWRlZCIpOworCWVuZV9ub3RpY2UoImRyaXZlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgbG9hZGVkIik7CiAJcmV0dXJuIDA7CiBlcnJvcjoKIAlpZiAoZGV2ICYmIGRldi0+aXJxID49IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JjL2ltb24uYyBiL2RyaXZlcnMvbWVkaWEvcmMvaW1vbi5jCmluZGV4IGY3MTRlMWEuLmViZDY4ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMvaW1vbi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmMvaW1vbi5jCkBAIC0xMjkzLDcgKzEyOTMsNyBAQAogCSAqIGNvbnRhaW4gYSBwb3NpdGlvbiBjb29yZGluYXRlICh4LHkpLCB3aXRoIGVhY2ggY29tcG9uZW50IHJhbmdpbmcKIAkgKiBmcm9tIC0xNCB0byAxNC4gV2Ugd2FudCB0byBkb3duLXNhbXBsZSB0aGlzIHRvIG9ubHkgNCBkaXNjcmV0ZSB2YWx1ZXMKIAkgKiBmb3IgdXAvZG93bi9sZWZ0L3JpZ2h0IGFycm93IGtleXMuIEFsc28sIHdoZW4geW91IGdldCB0b28gY2xvc2UgdG8KLQkgKiBkaWFnb25hbHMsIGl0IGhhcyBhIHRlbmRhbmN5IHRvIGp1bXAgYmFjayBhbmQgZm9ydGgsIHNvIGxldHMgdHJ5IHRvCisJICogZGlhZ29uYWxzLCBpdCBoYXMgYSB0ZW5kZW5jeSB0byBqdW1wIGJhY2sgYW5kIGZvcnRoLCBzbyBsZXRzIHRyeSB0bwogCSAqIGlnbm9yZSB3aGVuIHRoZXkgZ2V0IHRvbyBjbG9zZS4KIAkgKi8KIAlpZiAoaWN0eC0+cHJvZHVjdCAhPSAweGZmZGMpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvaXItcmF3LmMgYi9kcml2ZXJzL21lZGlhL3JjL2lyLXJhdy5jCmluZGV4IDAxZjI1OGEuLjExYzE5ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMvaXItcmF3LmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9pci1yYXcuYwpAQCAtMTUzLDcgKzE1Myw3IEBACiAgKiBAdHlwZToJdGhlIHR5cGUgb2YgdGhlIGV2ZW50IHRoYXQgaGFzIG9jY3VycmVkCiAgKgogICogVGhpcyByb3V0aW5lICh3aGljaCBtYXkgYmUgY2FsbGVkIGZyb20gYW4gaW50ZXJydXB0IGNvbnRleHQpIHdvcmtzCi0gKiBpbiBzaW1pbGlhciBtYW5uZXIgdG8gaXJfcmF3X2V2ZW50X3N0b3JlX2VkZ2UuCisgKiBpbiBzaW1pbGFyIG1hbm5lciB0byBpcl9yYXdfZXZlbnRfc3RvcmVfZWRnZS4KICAqIFRoaXMgcm91dGluZSBpcyBpbnRlbmRlZCBmb3IgZGV2aWNlcyB3aXRoIGxpbWl0ZWQgaW50ZXJuYWwgYnVmZmVyCiAgKiBJdCBhdXRvbWVyZ2VzIHNhbXBsZXMgb2Ygc2FtZSB0eXBlLCBhbmQgaGFuZGxlcyB0aW1lb3V0cwogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbG1lMjUxMC5jIGIvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLWxtZTI1MTAuYwppbmRleCAzYzE5MTM5Li5hZmFlMTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbG1lMjUxMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1sbWUyNTEwLmMKQEAgLTU1LDcgKzU1LDcgQEAKIAl7IDB4ZmY0MGZiMDQsIEtFWV9NRURJQV9SRVBFQVR9LCAvKiBSZWNhbGwgKi8KIAl7IDB4ZmY0MGU1MWEsIEtFWV9QQVVTRSB9LCAvKiBUaW1lc2hpZnQgKi8KIAl7IDB4ZmY0MGZkMDIsIEtFWV9WT0xVTUVVUCB9LCAvKiAyIHggLS8rIEtleXMgbm90IG1hcmtlZCAqLwotCXsgMHhmZjQwZjkwNiwgS0VZX1ZPTFVNRURPV04gfSwgLyogVm9sdW1uZSBkZWZpbmVkIGFzIHJpZ2h0IGhhbmQqLworCXsgMHhmZjQwZjkwNiwgS0VZX1ZPTFVNRURPV04gfSwgLyogVm9sdW1lIGRlZmluZWQgYXMgcmlnaHQgaGFuZCovCiAJeyAweGZmNDBmZTAxLCBLRVlfQ0hBTk5FTFVQIH0sCiAJeyAweGZmNDBmYTA1LCBLRVlfQ0hBTk5FTERPV04gfSwKIAl7IDB4ZmY0MGViMTQsIEtFWV9aT09NIH0sCkBAIC03Niw3ICs3Niw3IEBACiAJeyAweGZmMDBiYjQ0LCBLRVlfTUVESUFfUkVQRUFUfSwgLyogUmVjYWxsICovCiAJeyAweGZmMDBiNTRhLCBLRVlfUEFVU0UgfSwgLyogVGltZXNoaWZ0ICovCiAJeyAweGZmMDBiODQ3LCBLRVlfVk9MVU1FVVAgfSwgLyogMiB4IC0vKyBLZXlzIG5vdCBtYXJrZWQgKi8KLQl7IDB4ZmYwMGJjNDMsIEtFWV9WT0xVTUVET1dOIH0sIC8qIFZvbHVtbmUgZGVmaW5lZCBhcyByaWdodCBoYW5kKi8KKwl7IDB4ZmYwMGJjNDMsIEtFWV9WT0xVTUVET1dOIH0sIC8qIFZvbHVtZSBkZWZpbmVkIGFzIHJpZ2h0IGhhbmQqLwogCXsgMHhmZjAwYjk0NiwgS0VZX0NIQU5ORUxVUCB9LAogCXsgMHhmZjAwYmY0MCwgS0VZX0NIQU5ORUxET1dOIH0sCiAJeyAweGZmMDBmNzA4LCBLRVlfWk9PTSB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLW1zaS10dmFueXdoZXJlLmMgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbXNpLXR2YW55d2hlcmUuYwppbmRleCAxOGIzN2ZhLi5mZGQyMTNmIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbXNpLXR2YW55d2hlcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbXNpLXR2YW55d2hlcmUuYwpAQCAtMjksNyArMjksNyBAQAogCiAJeyAweDBjLCBLRVlfTVVURSB9LAogCXsgMHgwZiwgS0VZX1NDUkVFTiB9LAkJLyogRnVsbCBTY3JlZW4gKi8KLQl7IDB4MTAsIEtFWV9GTiB9LAkJLyogRnVudGlvbiAqLworCXsgMHgxMCwgS0VZX0ZOIH0sCQkvKiBGdW5jdGlvbiAqLwogCXsgMHgxMSwgS0VZX1RJTUUgfSwJCS8qIFRpbWUgc2hpZnQgKi8KIAl7IDB4MTIsIEtFWV9QT1dFUiB9LAogCXsgMHgxMywgS0VZX01FRElBIH0sCQkvKiBNVFMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1ub3J3b29kLmMgYi9kcml2ZXJzL21lZGlhL3JjL2tleW1hcHMvcmMtbm9yd29vZC5jCmluZGV4IGYxYzEyODEuLmY5ZjJmYTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvcmMva2V5bWFwcy9yYy1ub3J3b29kLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9rZXltYXBzL3JjLW5vcndvb2QuYwpAQCAtNDksNyArNDksNyBAQAogCXsgMHgzNywgS0VZX1BMQVkgfSwJCS8qIFBsYXkgICAgICAgICAgICAgICAgKi8KIAl7IDB4MzYsIEtFWV9QQVVTRSB9LAkJLyogUGF1c2UgICAgICAgICAgICAgICAqLwogCXsgMHgyYiwgS0VZX1NUT1AgfSwJCS8qIFN0b3AgICAgICAgICAgICAgICAgKi8KLQl7IDB4NjcsIEtFWV9GQVNURk9SV0FSRCB9LAkvKiBGb3dhcmQgICAgICAgICAgICAgICovCisJeyAweDY3LCBLRVlfRkFTVEZPUldBUkQgfSwJLyogRm9yd2FyZCAgICAgICAgICAgICAgKi8KIAl7IDB4NjYsIEtFWV9SRVdJTkQgfSwJCS8qIFJld2luZCAgICAgICAgICAgICAgKi8KIAl7IDB4M2UsIEtFWV9TRUFSQ0ggfSwJCS8qIEF1dG8gU2NhbiAgICAgICAgICAgKi8KIAl7IDB4MmUsIEtFWV9DQU1FUkEgfSwJCS8qIENhcHR1cmUgVmlkZW8gICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcmMvcmMtbWFpbi5jIGIvZHJpdmVycy9tZWRpYS9yYy9yYy1tYWluLmMKaW5kZXggNWFjMWJhZi4uZjUzZjljNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS9yYy9yYy1tYWluLmMKKysrIGIvZHJpdmVycy9tZWRpYS9yYy9yYy1tYWluLmMKQEAgLTI1NSw3ICsyNTUsNyBAQAogICogQHJjX21hcDoJc2NhbmNvZGUgdGFibGUgdG8gYmUgc2VhcmNoZWQKICAqIEBzY2FuY29kZToJdGhlIGRlc2lyZWQgc2NhbmNvZGUKICAqIEByZXNpemU6CWNvbnRyb2xzIHdoZXRoZXIgd2UgYWxsb3dlZCB0byByZXNpemUgdGhlIHRhYmxlIHRvCi0gKgkJYWNjb21vZGF0ZSBub3QgeWV0IHByZXNlbnQgc2NhbmNvZGVzCisgKgkJYWNjb21tb2RhdGUgbm90IHlldCBwcmVzZW50IHNjYW5jb2RlcwogICogQHJldHVybjoJaW5kZXggb2YgdGhlIG1hcHBpbmcgY29udGFpbmluZyBzY2FuY29kZSBpbiBxdWVzdGlvbgogICoJCW9yIC0xVSBpbiBjYXNlIG9mIGZhaWx1cmUuCiAgKgpAQCAtMTAzNyw3ICsxMDM3LDcgQEAKIAkJZ290byBvdXRfdGFibGU7CiAKIAkvKgotCSAqIERlZmF1bHQgZGVsYXkgb2YgMjUwbXMgaXMgdG9vIHNob3J0IGZvciBzb21lIHByb3RvY29scywgZXhwZWNpYWxseQorCSAqIERlZmF1bHQgZGVsYXkgb2YgMjUwbXMgaXMgdG9vIHNob3J0IGZvciBzb21lIHByb3RvY29scywgZXNwZWNpYWxseQogCSAqIHNpbmNlIHRoZSB0aW1lb3V0IGlzIGN1cnJlbnRseSBzZXQgdG8gMjUwbXMuIEluY3JlYXNlIGl0IHRvIDUwMG1zLAogCSAqIHRvIGF2b2lkIHdyb25nIHJlcGV0aXRpb24gb2YgdGhlIGtleWNvZGVzLiBOb3RlIHRoYXQgdGhpcyBtdXN0IGJlCiAJICogc2V0IGFmdGVyIHRoZSBjYWxsIHRvIGlucHV0X3JlZ2lzdGVyX2RldmljZSgpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9hdTA4MjgvYXUwODI4LXZpZGVvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtdmlkZW8uYwppbmRleCA2YWQ4M2ExLi5jMDNlYjI5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtdmlkZW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2F1MDgyOC9hdTA4MjgtdmlkZW8uYwpAQCAtNTAyLDcgKzUwMiw3IEBACiAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgYXUwODI4X2J1ZmZlciwgdmIucXVldWUpOwotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAweDAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0OHh4L2J0dHYtY2FyZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1jYXJkcy5jCmluZGV4IDI0MmYwZDUuLjNjOWU2YzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1jYXJkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1jYXJkcy5jCkBAIC0yMjQ0LDggKzIyNDQsOCBAQAogCX0sCiAJW0JUVFZfQk9BUkRfUElDT0xPX1RFVFJBX0NISVBdID0gewogCQkvKkVyaWMgREVCSUVGIDxkZWJpZWZAdGVsZW1zYS5jb20+Ki8KLQkJLypFVVJFU1lTIFBpY29sbyBUZXRyYSA6IDQgQ29uZXhhbnQgRnVzaW9uIDg3OEEsIG5vIGF1ZGlvLCB2aWRlbyBpbnB1dCBzZXQgd2l0aCBhbmFsb2cgbXVsdGlwbGV4ZXJzIEdQSU8gY29udHJvbGVkKi8KLQkJLyogYWRkcyBwaWNvbG9fdGV0cmFfbXV4c2VsKCksIHBpY29sb190ZXRyYV9pbml0KCksIHRoZSBmb2xvd2luZyBkZWNsYXJhdGlvbiBzdHJ1Y3VyZSwgYW5kICNkZWZpbmUgQlRUVl9CT0FSRF9QSUNPTE9fVEVUUkFfQ0hJUCovCisJCS8qRVVSRVNZUyBQaWNvbG8gVGV0cmEgOiA0IENvbmV4YW50IEZ1c2lvbiA4NzhBLCBubyBhdWRpbywgdmlkZW8gaW5wdXQgc2V0IHdpdGggYW5hbG9nIG11bHRpcGxleGVycyBHUElPIGNvbnRyb2xsZWQqLworCQkvKiBhZGRzIHBpY29sb190ZXRyYV9tdXhzZWwoKSwgcGljb2xvX3RldHJhX2luaXQoKSwgdGhlIGZvbGxvd2luZyBkZWNsYXJhdGlvbiBzdHJ1Y3VyZSwgYW5kICNkZWZpbmUgQlRUVl9CT0FSRF9QSUNPTE9fVEVUUkFfQ0hJUCovCiAJCS8qMHg3OSBpbiBidHR2LmgqLwogCQkubmFtZSAgICAgICAgICAgPSAiRXVyZXN5cyBQaWNvbG8gVGV0cmEiLAogCQkudmlkZW9faW5wdXRzICAgPSA0LApAQCAtNDU2Nyw3ICs0NTY3LDcgQEAKICAqIGF0IG9uZSBpbnB1dCB3aGlsZSB0aGUgbW9uaXRvciBpcyBsb29raW5nIGF0IGFub3RoZXIuCiAgKgogICogU2luY2UgSSd2ZSBjb3VsZG4ndCBiZSBib3RoZXJlZCBmaWd1cmluZyBvdXQgaG93IHRvIGFkZCBhbgotICogaW5kZXBlbmRhbnQgbXV4c2VsIGZvciB0aGUgbW9uaXRvciBidXMsIEkndmUganVzdCBzZXQgaXQgdG8KKyAqIGluZGVwZW5kZW50IG11eHNlbCBmb3IgdGhlIG1vbml0b3IgYnVzLCBJJ3ZlIGp1c3Qgc2V0IGl0IHRvCiAgKiB3aGF0ZXZlciB0aGUgY2FyZCBpcyBsb29raW5nIGF0LgogICoKICAqICBPVVQwIG9mIHRoZSBUREE4NTQwJ3MgaXMgY29ubmVjdGVkIHRvIE1VWDAgICAgICAgICAoMHgwMykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1ncGlvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2J0OHh4L2J0dHYtZ3Bpby5jCmluZGV4IGZkNjA0ZDMuLjEzY2U3MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vYnQ4eHgvYnR0di1ncGlvLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9idDh4eC9idHR2LWdwaW8uYwpAQCAtMyw3ICszLDcgQEAKICAgICBidHR2LWdwaW8uYyAgLS0gIGdwaW8gc3ViIGRyaXZlcnMKIAogICAgIHN5c2ZzLWJhc2VkIHN1YiBkcml2ZXIgaW50ZXJmYWNlIGZvciBidHR2Ci0gICAgbWFpbmx5IGludGVudGVkIGZvciBncGlvIGFjY2VzcworICAgIG1haW5seSBpbnRlbmRlZCBmb3IgZ3BpbyBhY2Nlc3MKIAogCiAgICAgQ29weXJpZ2h0IChDKSAxOTk2LDk3LDk4IFJhbHBoICBNZXR6bGVyIChyamttQHRocC51bmkta29lbG4uZGUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2NhZmVfY2NpYy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jYWZlX2NjaWMuYwppbmRleCA1NWZmZDYwLi42NjQ3MDMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2NhZmVfY2NpYy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY2FmZV9jY2ljLmMKQEAgLTM4Myw3ICszODMsNyBAQAogCSAqIGNhdXNlcyB0aGUgZGV2aWNlIHRvIGRpZS4KIAkgKiBVc2UgYSBidXN5LXdhaXQgYmVjYXVzZSB3ZSBvZnRlbiBzZW5kIGEgbGFyZ2UgcXVhbnRpdHkgb2Ygc21hbGwKIAkgKiBjb21tYW5kcyBhdC1vbmNlOyB1c2luZyBtc2xlZXAoKSB3b3VsZCBjYXVzZSBhIGxvdCBvZiBjb250ZXh0Ci0JICogc3dpdGNoZXMgd2hpY2ggdGFrZSBsb25nZXIgdGhhbiAybXMsIHJlc3VsdGluZyBpbiBhIG5vdGljYWJsZQorCSAqIHN3aXRjaGVzIHdoaWNoIHRha2UgbG9uZ2VyIHRoYW4gMm1zLCByZXN1bHRpbmcgaW4gYSBub3RpY2VhYmxlCiAJICogYm9vdC10aW1lIGFuZCBjYXB0dXJlLXN0YXJ0IGRlbGF5cy4KIAkgKi8KIAltZGVsYXkoMik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1hdi1jb3JlLmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1hdi1jb3JlLmgKaW5kZXggMTg4YzljMy4uZTljNjlkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtYXYtY29yZS5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWF2LWNvcmUuaApAQCAtMTA5LDcgKzEwOSw3IEBACiAJaW50IGlzX2luaXRpYWxpemVkOwogCiAJLyoKLQkgKiBUaGUgVkJJIHNsaWNlciBzdGFydHMgb3BlcmF0aW5nIGFuZCBjb3VudGluZyBsaW5lcywgYmVnaW5pbmcgYXQKKwkgKiBUaGUgVkJJIHNsaWNlciBzdGFydHMgb3BlcmF0aW5nIGFuZCBjb3VudGluZyBsaW5lcywgYmVnaW5uaW5nIGF0CiAJICogc2xpY2VyIGxpbmUgY291bnQgb2YgMSwgYXQgRCBsaW5lcyBhZnRlciB0aGUgZGVhc3NlcnRpb24gb2YgVlJFU0VULgogCSAqIFRoaXMgc3RhcmluZyBmaWVsZCBsaW5lLCBTLCBpcyA2ICgmIDMxOSkgb3IgMTAgKCYgMjczKSBmb3IgNjI1IG9yIDUyNQogCSAqIGxpbmUgc3lzdGVtcyByZXNwZWN0aXZlbHkuICBTbGljZWQgYW5jaWxsYXJ5IGRhdGEgY2FwdHVyZWQgb24gVkJJCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1pb2N0bC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDE4L2N4MTgtaW9jdGwuYwppbmRleCA4NmMzMGI5Li40ZjA0MWMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC1pb2N0bC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LWlvY3RsLmMKQEAgLTMxMiw3ICszMTIsNyBAQAogCiAJLyoKIAkgKiBTZXQgdGhlIGRpZ2l0aXplciByZWdpc3RlcnMgZm9yIHJhdyBhY3RpdmUgVkJJLgotCSAqIE5vdGUgY3gxOF9hdl92Ymlfd2lwZXMgb3V0IGFsb3Qgb2YgdGhlIHBhc3NlZCBpbiBmbXQgdW5kZXIgdmFsaWQKKwkgKiBOb3RlIGN4MThfYXZfdmJpX3dpcGVzIG91dCBhIGxvdCBvZiB0aGUgcGFzc2VkIGluIGZtdCB1bmRlciB2YWxpZAogCSAqIGNhbGxpbmcgY29uZGl0aW9ucwogCSAqLwogCXJldCA9IHY0bDJfc3ViZGV2X2NhbGwoY3gtPnNkX2F2LCB2YmksIHNfcmF3X2ZtdCwgJmZtdC0+Zm10LnZiaSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MTgvY3gxOC12YmkuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LXZiaS5jCmluZGV4IDU4MjIyNzUuLjZkMzEyMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LXZiaS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gxOC9jeDE4LXZiaS5jCkBAIC0yOSw3ICsyOSw3IEBACiAvKgogICogUmFzdGVyIFJlZmVyZW5jZS9Qcm90ZWN0aW9uIChSUCkgYnl0ZXMsIHVzZWQgaW4gU3RhcnQvRW5kIEFjdGl2ZQogICogVmlkZW8gY29kZXMgZW1pdHRlZCBmcm9tIHRoZSBkaWdpdHplciBpbiBWSVAgMS54IG1vZGUsIHRoYXQgZmxhZyB0aGUgc3RhcnQKLSAqIG9mIFZCSSBzYW1wbGUgb3IgVkJJIGFuY2lsbGlhcnkgZGF0YSByZWdpb25zIGluIHRoZSBkaWdpdGlhbCByYXRzZXIgbGluZS4KKyAqIG9mIFZCSSBzYW1wbGUgb3IgVkJJIGFuY2lsbGFyeSBkYXRhIHJlZ2lvbnMgaW4gdGhlIGRpZ2l0aWFsIHJhdHNlciBsaW5lLgogICoKICAqIFRhc2sgRmllbGRFdmVuIFZlcnRpY2FsQmxhbmsgSG9yaXpvbnRhbEJsYW5rIDAgMCAwIDAKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtYXZjb3JlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYwppbmRleCA2Mjg0M2QzLi4yODBkZjQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC1hdmNvcmUuYwpAQCAtMjU3Nyw3ICsyNTc3LDcgQEAKIAkJCWJyZWFrOwogCiAJCWNhc2UgNjoJLyogdHMxIHBhcmFsbGVsIG1vZGUgKi8KLQkJCWN4MjMxeHhfaW5mbygiJXM6IHNldCB0czEgcGFycmFsbGVsIG1vZGUgcmVnaXN0ZXJzXG4iLAorCQkJY3gyMzF4eF9pbmZvKCIlczogc2V0IHRzMSBwYXJhbGxlbCBtb2RlIHJlZ2lzdGVyc1xuIiwKIAkJCQkgICAgIF9fZnVuY19fKTsKIAkJCXN0YXR1cyA9IGN4MjMxeHhfbW9kZV9yZWdpc3RlcihkZXYsIFRTX01PREVfUkVHLCAweDEwMCk7CiAJCQlzdGF0dXMgPSBjeDIzMXh4X21vZGVfcmVnaXN0ZXIoZGV2LCBUUzFfQ0ZHX1JFRywgMHg0MDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtdmJpLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12YmkuYwppbmRleCAxZDkxNDQ4Li4xYzdhNGRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12YmkuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12YmkuYwpAQCAtNjMxLDcgKzYzMSw3IEBACiAJLyogR2V0IHRoZSBuZXh0IGJ1ZmZlciAqLwogCSpidWYgPSBsaXN0X2VudHJ5KGRtYV9xLT5hY3RpdmUubmV4dCwgc3RydWN0IGN4MjMxeHhfYnVmZmVyLCB2Yi5xdWV1ZSk7CiAKLQkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsbCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KKwkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLwogCW91dHAgPSB2aWRlb2J1Zl90b192bWFsbG9jKCYoKmJ1ZiktPnZiKTsKIAltZW1zZXQob3V0cCwgMCwgKCpidWYpLT52Yi5zaXplKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzF4eC9jeDIzMXh4LXZpZGVvLmMKaW5kZXggZmZkNWFmOS4uYTY5YzI0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzMXh4L2N4MjMxeHgtdmlkZW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjMxeHgvY3gyMzF4eC12aWRlby5jCkBAIC0zMDksNyArMzA5LDcgQEAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgY3gyMzF4eF9idWZmZXIsIHZiLnF1ZXVlKTsKIAotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY2ltYXgyLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY2ltYXgyLmMKaW5kZXggMjA5Yjk3MS4uYzlmMTVkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2NpbWF4Mi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jaW1heDIuYwpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAJCTB4MDQsIC8qIGFjayBhY3RpdmUgbG93ICovCiAJCTB4MDAsIC8qIExPQ0sgPSAwICovCiAJCTB4MzMsIC8qIHNlcmlhbCBtb2RlLCByaXNpbmcgaW4sIHJpc2luZyBvdXQsIE1TQiBmaXJzdCovCi0JCTB4MzEsIC8qIHN5bmNyb25pemF0aW9uICovCisJCTB4MzEsIC8qIHN5bmNocm9uaXphdGlvbiAqLwogCX07CiAJaW50IHJldDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyMzg4NS9jeDIzODg1LmgKaW5kZXggOGRiMjc5Ny4uYzE4NjQ3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDIzODg1L2N4MjM4ODUuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjM4ODUvY3gyMzg4NS5oCkBAIC0yMTQsNyArMjE0LDcgQEAKIAogCS8qIFZlbmRvcnMgY2FuIGFuZCBkbyBydW4gdGhlIFBDSWUgYnJpZGdlIGF0IGRpZmZlcmVudAogCSAqIGNsb2NrIHJhdGVzLCBkcml2ZW4gcGh5c2ljYWxseSBieSBjcnlzdGFscyBvbiB0aGUgUENCcy4KLQkgKiBUaGUgY29yZSBoYXMgdG8gYWNjb21vZGF0ZSB0aGlzLiBUaGlzIGFsbG93cyB0aGUgdXNlcgorCSAqIFRoZSBjb3JlIGhhcyB0byBhY2NvbW1vZGF0ZSB0aGlzLiBUaGlzIGFsbG93cyB0aGUgdXNlcgogCSAqIHRvIGFkZCBuZXcgYm9hcmRzIHdpdGggbmV3IGZyZXF1ZW5jeXMuIFRoZSB2YWx1ZSBpcwogCSAqIGV4cHJlc3NlZCBpbiBIei4KIAkgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9jeDI1ODQwL2N4MjU4NDAtY29yZS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9jeDI1ODQwL2N4MjU4NDAtY29yZS5jCmluZGV4IDM1Nzk2ZTAuLmI3ZWUyYWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vY3gyNTg0MC9jeDI1ODQwLWNvcmUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2N4MjU4NDAvY3gyNTg0MC1jb3JlLmMKQEAgLTIsNyArMiw3IEBACiAgKgogICogQ29weXJpZ2h0IChDKSAyMDA0IFVsZiBFa2x1bmQKICAqCi0gKiBCYXNlZCBvbiB0aGUgc2FhNzExNSBkcml2ZXIgYW5kIG9uIHRoZSBmaXJzdCB2ZXJpc29uIG9mIENocmlzIEtlbm5lZHkncworICogQmFzZWQgb24gdGhlIHNhYTcxMTUgZHJpdmVyIGFuZCBvbiB0aGUgZmlyc3QgdmVyc2lvbiBvZiBDaHJpcyBLZW5uZWR5J3MKICAqIGN4MjU4NDAgZHJpdmVyLgogICoKICAqIENoYW5nZXMgYnkgVHlsZXIgVHJhZmZvcmQgPHRhdHJhZmZvcmRAY29tY2FzdC5uZXQ+CkBAIC00NDUsNyArNDQ1LDcgQEAKIAljeDI1ODQwX3dyaXRlKGNsaWVudCwgMHg5MTgsIDB4YTApOwogCWN4MjU4NDBfd3JpdGUoY2xpZW50LCAweDkxOSwgMHgwMSk7CiAKLQkvKiBzdGVyZW8gcHJlZmVyZWQgKi8KKwkvKiBzdGVyZW8gcHJlZmVycmVkICovCiAJY3gyNTg0MF93cml0ZShjbGllbnQsIDB4ODA5LCAweDA0KTsKIAkvKiBBQzk3IHNoaWZ0ICovCiAJY3gyNTg0MF93cml0ZShjbGllbnQsIDB4OGNmLCAweDBmKTsKQEAgLTU0Niw3ICs1NDYsNyBAQAogCSAqIEF1eCBQTEwKIAkgKiBJbml0aWFsIHNldHVwIGZvciBhdWRpbyBzYW1wbGUgY2xvY2s6CiAJICogNDgga3NwcywgMTYgYml0cy9zYW1wbGUsIHgxNjAgbXVsdGlwbGllciA9IDEyMi44OCBNSHoKLQkgKiBJbnRpYWwgSTJTIG91dHB1dC9tYXN0ZXIgY2xvY2soPyk6CisJICogSW5pdGlhbCBJMlMgb3V0cHV0L21hc3RlciBjbG9jayg/KToKIAkgKiA0OCBrc3BzLCAxNiBiaXRzL3NhbXBsZSwgeDE2IG11bHRpcGxpZXIgPSAxMi4yODggTUh6CiAJICovCiAJc3dpdGNoIChzdGF0ZS0+aWQpIHsKQEAgLTkwMyw3ICs5MDMsNyBAQAogCX0gZWxzZSBpZiAoc3RkICYgVjRMMl9TVERfUEFMKSB7CiAJCS8qIEF1dG9kZXRlY3QgYXVkaW8gc3RhbmRhcmQgYW5kIGF1ZGlvIHN5c3RlbSAqLwogCQljeDI1ODQwX3dyaXRlKGNsaWVudCwgMHg4MDgsIDB4ZmYpOwotCQkvKiBTaW5jZSBzeXN0ZW0gUEFMLUwgaXMgcHJldHR5IG11Y2ggbm9uLWV4aXN0YW50IGFuZAorCQkvKiBTaW5jZSBzeXN0ZW0gUEFMLUwgaXMgcHJldHR5IG11Y2ggbm9uLWV4aXN0ZW50IGFuZAogCQkgICBub3QgdXNlZCBieSBhbnkgcHVibGljIGJyb2FkY2FzdCBuZXR3b3JrLCBmb3JjZQogCQkgICA2LjUgTUh6IGNhcnJpZXIgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgU3lzdGVtIERLLAogCQkgICB0aGlzIGF2b2lkcyBESyBhdWRpbyBkZXRlY3Rpb24gaW5zdGFiaWxpdHkgKi8KQEAgLTE4NTEsNyArMTg1MSw3IEBACiAJCQlyZXQgPSBWNEwyX0lERU5UX0NYMjM4ODVfQVY7CiAJCX0gZWxzZSB7CiAJCQkvKiBDWDIzODg3IGhhcyBhIGJyb2tlbiBESUYsIGJ1dCB0aGUgcmVnaXN0ZXJzCi0JCQkgKiBhcHBlYXIgdmFsaWQgKGJ1dCB1bnNlZCksIGdvb2QgZW5vdWdoIHRvIGRldGVjdC4gKi8KKwkJCSAqIGFwcGVhciB2YWxpZCAoYnV0IHVudXNlZCksIGdvb2QgZW5vdWdoIHRvIGRldGVjdC4gKi8KIAkJCXJldCA9IFY0TDJfSURFTlRfQ1gyMzg4N19BVjsKIAkJfQogCX0gZWxzZSBpZiAoY3gyNTg0MF9yZWFkNChjbGllbnQsIDB4MzAwKSAmIDB4MGZmZmZmZmYpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS9kbTY0NHhfY2NkYy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL2RtNjQ0eF9jY2RjLmMKaW5kZXggNDkwYWFmYi4uYzhiMzJjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL2RtNjQ0eF9jY2RjLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL2RtNjQ0eF9jY2RjLmMKQEAgLTI1OCw3ICsyNTgsNyBAQAogCS8qCiAJICogQWxsb2NhdGUgbWVtb3J5IGZvciBGUEMgdGFibGUgaWYgY3VycmVudAogCSAqIEZQQyB0YWJsZSBidWZmZXIgaXMgbm90IGJpZyBlbm91Z2ggdG8KLQkgKiBhY2NvbW9kYXRlIEZQQyBOdW1iZXIgcmVxdWVzdGVkCisJICogYWNjb21tb2RhdGUgRlBDIE51bWJlciByZXF1ZXN0ZWQKIAkgKi8KIAlpZiAocmF3X3BhcmFtcy0+ZmF1bHRfcHhsLmZwX251bSAhPSBjb25maWdfcGFyYW1zLT5mYXVsdF9weGwuZnBfbnVtKSB7CiAJCWlmIChmcGNfcGh5c2FkZHIgIT0gTlVMTCkgewpAQCAtNDM2LDcgKzQzNiw3IEBACiAKIAkvKgogCSAqIGNvbmZpZ3VyZSB0aGUgaG9yaXpvbnRhbCBsaW5lIG9mZnNldC4gVGhpcyBzaG91bGQgYmUgYQotCSAqIG9uIDMyIGJ5dGUgYm9uZGFyeS4gU28gY2xlYXIgTFNCIDUgYml0cworCSAqIG9uIDMyIGJ5dGUgYm91bmRhcnkuIFNvIGNsZWFyIExTQiA1IGJpdHMKIAkgKi8KIAlyZWd3KCgocGFyYW1zLT53aW4ud2lkdGggKiAyICArIDMxKSAmIH4weDFmKSwgQ0NEQ19IU0laRV9PRkYpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvdnBmZV9jYXB0dXJlLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2RhdmluY2kvdnBmZV9jYXB0dXJlLmMKaW5kZXggNzFlOTYxZS4uNWIzOGZjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9kYXZpbmNpL3ZwZmVfY2FwdHVyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZGF2aW5jaS92cGZlX2NhcHR1cmUuYwpAQCAtMTY5MSw3ICsxNjkxLDcgQEAKIAkJZ290byB1bmxvY2tfb3V0OwogCX0KIAotCS8qIGFkanVzdCB0aGUgd2lkdGggdG8gMTYgcGl4ZWwgYm91bmRyeSAqLworCS8qIGFkanVzdCB0aGUgd2lkdGggdG8gMTYgcGl4ZWwgYm91bmRhcnkgKi8KIAljcm9wLT5jLndpZHRoID0gKChjcm9wLT5jLndpZHRoICsgMTUpICYgfjB4Zik7CiAKIAkvKiBtYWtlIHN1cmUgcGFyYW1ldGVycyBhcmUgdmFsaWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZW0yOHh4L2VtMjh4eC12aWRlby5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKaW5kZXggYTgzMTMxYi4uN2I2NDYxZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9lbTI4eHgvZW0yOHh4LXZpZGVvLmMKQEAgLTM3Nyw3ICszNzcsNyBAQAogCS8qIEdldCB0aGUgbmV4dCBidWZmZXIgKi8KIAkqYnVmID0gbGlzdF9lbnRyeShkbWFfcS0+YWN0aXZlLm5leHQsIHN0cnVjdCBlbTI4eHhfYnVmZmVyLCB2Yi5xdWV1ZSk7CiAKLQkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsbCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KKwkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLwogCW91dHAgPSB2aWRlb2J1Zl90b192bWFsbG9jKCYoKmJ1ZiktPnZiKTsKIAltZW1zZXQob3V0cCwgMCwgKCpidWYpLT52Yi5zaXplKTsKIApAQCAtNDA0LDcgKzQwNCw3IEBACiAKIAkvKiBHZXQgdGhlIG5leHQgYnVmZmVyICovCiAJKmJ1ZiA9IGxpc3RfZW50cnkoZG1hX3EtPmFjdGl2ZS5uZXh0LCBzdHJ1Y3QgZW0yOHh4X2J1ZmZlciwgdmIucXVldWUpOwotCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWxsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLworCS8qIENsZWFucyB1cCBidWZmZXIgLSBVc2VmdWwgZm9yIHRlc3RpbmcgZm9yIGZyYW1lL1VSQiBsb3NzICovCiAJb3V0cCA9IHZpZGVvYnVmX3RvX3ZtYWxsb2MoJigqYnVmKS0+dmIpOwogCW1lbXNldChvdXRwLCAweDAwLCAoKmJ1ZiktPnZiLnNpemUpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dsODYwL2dsODYwLW1pMTMyMC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nbDg2MC9nbDg2MC1taTEzMjAuYwppbmRleCBjMjc2YTdkLi5iNTcxNjBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dsODYwL2dsODYwLW1pMTMyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ2w4NjAvZ2w4NjAtbWkxMzIwLmMKQEAgLTIwMSw3ICsyMDEsNyBAQAogCXNkLT52bWF4LmJhY2tsaWdodCAgPSAgMjsKIAlzZC0+dm1heC5icmlnaHRuZXNzID0gIDg7CiAJc2QtPnZtYXguc2hhcnBuZXNzICA9ICA3OwotCXNkLT52bWF4LmNvbnRyYXN0ICAgPSAgMDsgLyogMTAgYnV0IG5vdCB3b3JraW5nIHdpdGggdGlocyBkcml2ZXIgKi8KKwlzZC0+dm1heC5jb250cmFzdCAgID0gIDA7IC8qIDEwIGJ1dCBub3Qgd29ya2luZyB3aXRoIHRoaXMgZHJpdmVyICovCiAJc2QtPnZtYXguZ2FtbWEgICAgICA9IDQwOwogCXNkLT52bWF4Lmh1ZSAgICAgICAgPSAgNSArIDE7CiAJc2QtPnZtYXguc2F0dXJhdGlvbiA9ICA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9nc3BjYS5jCmluZGV4IDljNmE2NDMuLmU1MjZhYTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvZ3NwY2EuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL2dzcGNhLmMKQEAgLTg1Nyw3ICs4NTcsNyBAQAogCQl9CiAKIAkJLyogdGhlIGJhbmR3aWR0aCBpcyBub3Qgd2lkZSBlbm91Z2gKLQkJICogbmVnb2NpYXRlIG9yIHRyeSBhIGxvd2VyIGFsdGVybmF0ZSBzZXR0aW5nICovCisJCSAqIG5lZ290aWF0ZSBvciB0cnkgYSBsb3dlciBhbHRlcm5hdGUgc2V0dGluZyAqLwogCQlQREVCVUcoRF9FUlJ8RF9TVFJFQU0sCiAJCQkiYmFuZHdpZHRoIG5vdCB3aWRlIGVub3VnaCAtIHRyeWluZyBhZ2FpbiIpOwogCQltc2xlZXAoMjApOwkvKiB3YWl0IGZvciBraWxsIGNvbXBsZXRlICovCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQAogCXVzYl9zZXRfaW50ZmRhdGEoaW50ZiwgTlVMTCk7CiAKIAkvKiByZWxlYXNlIHRoZSBkZXZpY2UgKi8KLQkvKiAodGhpcyB3aWxsIGNhbGwgZ3NwY2FfcmVsZWFzZSgpIGltbWVkaWF0bHkgb3Igb24gbGFzdCBjbG9zZSkgKi8KKwkvKiAodGhpcyB3aWxsIGNhbGwgZ3NwY2FfcmVsZWFzZSgpIGltbWVkaWF0ZWx5IG9yIG9uIGxhc3QgY2xvc2UpICovCiAJdmlkZW9fdW5yZWdpc3Rlcl9kZXZpY2UoJmdzcGNhX2Rldi0+dmRldik7CiAKIC8qCVBERUJVRyhEX1BST0JFLCAiZGlzY29ubmVjdCBjb21wbGV0ZSIpOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tYXJzLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYwppbmRleCBjYjRkMGJmLi4wMTk2MjA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21hcnMuYwpAQCAtMzYxLDcgKzM2MSw3IEBACiAJCW1pX3coZ3NwY2FfZGV2LCBpICsgMSwgbWlfZGF0YVtpXSk7CiAKIAlkYXRhWzBdID0gMHgwMDsKLQlkYXRhWzFdID0gMHg0ZDsJCS8qIElTT0MgdHJhbnNmZXJpbmcgZW5hYmxlLi4uICovCisJZGF0YVsxXSA9IDB4NGQ7CQkvKiBJU09DIHRyYW5zZmVycmluZyBlbmFibGUuLi4gKi8KIAlyZWdfdyhnc3BjYV9kZXYsIDIpOwogCiAJZ3NwY2FfZGV2LT5jdHJsX2luYWMgPSAwOyAvKiBhY3RpdmF0ZSB0aGUgaWxsdW1pbmF0b3IgY29udHJvbHMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbXI5NzMxMGEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2EvbXI5NzMxMGEuYwppbmRleCAzODg0YzlkLi45N2U1MDc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL21yOTczMTBhLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9tcjk3MzEwYS5jCkBAIC00NjksNyArNDY5LDcgQEAKIHN0YXRpYyBpbnQgaXNvY19lbmFibGUoc3RydWN0IGdzcGNhX2RldiAqZ3NwY2FfZGV2KQogewogCWdzcGNhX2Rldi0+dXNiX2J1ZlswXSA9IDB4MDA7Ci0JZ3NwY2FfZGV2LT51c2JfYnVmWzFdID0gMHg0ZDsgIC8qIElTT0MgdHJhbnNmZXJpbmcgZW5hYmxlLi4uICovCisJZ3NwY2FfZGV2LT51c2JfYnVmWzFdID0gMHg0ZDsgIC8qIElTT0MgdHJhbnNmZXJyaW5nIGVuYWJsZS4uLiAqLwogCXJldHVybiBtcl93cml0ZShnc3BjYV9kZXYsIDIpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL292NTE5LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL292NTE5LmMKaW5kZXggZmQxYjYwOC4uMzZhNDZmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9vdjUxOS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evb3Y1MTkuYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAgICBsYXJnZXIgdGhlbiBuZWNlc3NhcnksIGhvd2V2ZXIgdGhleSBuZWVkIHRvIGJlIHRoaXMgYmlnIGFzIHRoZSBvdjUxMSAvCiAgICBvdjUxOCBhbHdheXMgZmlsbHMgdGhlIGVudGlyZSBpc29jIGZyYW1lLCB1c2luZyAwIHBhZGRpbmcgYnl0ZXMgd2hlbgogICAgaXQgZG9lc24ndCBoYXZlIGFueSBkYXRhLiBTbyB3aXRoIGxvdyBmcmFtZXJhdGVzIHRoZSBhbW91bnQgb2YgZGF0YQotICAgdHJhbnNmZXJlZCBjYW4gYmVjb21lIHF1aXRlIGxhcmdlIChsaWJ2NGwgd2lsbCByZW1vdmUgYWxsIHRoZSAwIHBhZGRpbmcKKyAgIHRyYW5zZmVycmVkIGNhbiBiZWNvbWUgcXVpdGUgbGFyZ2UgKGxpYnY0bCB3aWxsIHJlbW92ZSBhbGwgdGhlIDAgcGFkZGluZwogICAgaW4gdXNlcnNwYWNlKS4gKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0IG92NTE4X3ZnYV9tb2RlW10gPSB7CiAJezMyMCwgMjQwLCBWNEwyX1BJWF9GTVRfT1Y1MTgsIFY0TDJfRklFTERfTk9ORSwKQEAgLTQzNjgsNyArNDM2OCw3IEBACiAJCQkJZ3NwY2FfZGV2LT5sYXN0X3BhY2tldF90eXBlID0gRElTQ0FSRF9QQUNLRVQ7CiAJCQkJcmV0dXJuOwogCQkJfQotCQkJLyogQWRkIDExIGJ5dGUgZm9vdGVyIHRvIGZyYW1lLCBtaWdodCBiZSB1c2VmdWxsICovCisJCQkvKiBBZGQgMTEgYnl0ZSBmb290ZXIgdG8gZnJhbWUsIG1pZ2h0IGJlIHVzZWZ1bCAqLwogCQkJZ3NwY2FfZnJhbWVfYWRkKGdzcGNhX2RldiwgTEFTVF9QQUNLRVQsIGluLCAxMSk7CiAJCQlyZXR1cm47CiAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Nvbml4Yi5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zb25peGIuYwppbmRleCA1YTA4NzM4Li4xNDZiNDU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3Nvbml4Yi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc29uaXhiLmMKQEAgLTgyNyw3ICs4MjcsNyBAQAogCQkgICBwb3NzaWJsZSB0byB1c2UgbGVzcyBleHBvc3VyZSB0aGVuIHdoYXQgdGhlIGZwcyBtYXhpbXVtCiAJCSAgIGFsbG93cyBieSBzZXR0aW5nIHJlZ2lzdGVyIDEwLiByZWdpc3RlciAxMCBjb25maWd1cmVzIHRoZQogCQkgICBhY3R1YWwgZXhwb3N1cmUgYXMgcXVvdGllbnQgb2YgdGhlIGZ1bGwgZXhwb3N1cmUsIHdpdGggMAotCQkgICBiZWluZyBubyBleHBvc3VyZSBhdCBhbGwgKG5vdCB2ZXJ5IHVzZWZ1bGwpIGFuZCByZWcxMF9tYXgKKwkJICAgYmVpbmcgbm8gZXhwb3N1cmUgYXQgYWxsIChub3QgdmVyeSB1c2VmdWwpIGFuZCByZWcxMF9tYXgKIAkJICAgYmVpbmcgbWF4IGV4cG9zdXJlIHBvc3NpYmxlIGF0IHRoYXQgZnJhbWVyYXRlLgogCiAJCSAgIFRoZSBjb2RlIG1hcHMgb3VyIDAgLSA1MTAgbXMgZXhwb3N1cmUgY3RybCB0byB0aGVzZSAyCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3NwY2E1MDAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCmluZGV4IDQ1NTUyYzMuLjNlNzY5NTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwMC5jCkBAIC02MDcsNyArNjA3LDcgQEAKIAlyZWdfdyhnc3BjYV9kZXYsIDB4MDAsIDB4ODg4MCwgMik7CiAJLyogZmFtaWx5IGNhbSBRdWlja3NtYXJ0IHN0dWZmICovCiAJcmVnX3coZ3NwY2FfZGV2LCAweDAwLCAweDgwMGEsIDB4MDApOwotCS8qIFNldCBhZ2MgdHJhbnNmZXI6IHN5bmNlZCBpbmJldHdlZW4gZnJhbWVzICovCisJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGJldHdlZW4gZnJhbWVzICovCiAJcmVnX3coZ3NwY2FfZGV2LCAweDAwLCAweDgyMGYsIDB4MDEpOwogCS8qIEluaXQgU0RSQU0gLSBuZWVkZWQgZm9yIFNEUkFNIGFjY2VzcyAqLwogCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4NzBhLCAweDA0KTsKQEAgLTgzMSw3ICs4MzEsNyBAQAogCiAJCS8qIGZhbWlseWNhbSBRdWlja3NtYXJ0IHBvY2tldERWIHN0dWZmICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4MDBhLCAweDAwKTsKLQkJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGluYmV0d2VlbiBmcmFtZXMgKi8KKwkJLyogU2V0IGFnYyB0cmFuc2Zlcjogc3luY2VkIGJldHdlZW4gZnJhbWVzICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4MjBmLCAweDAxKTsKIAkJLyogSW5pdCBTRFJBTSAtIG5lZWRlZCBmb3IgU0RSQU0gYWNjZXNzICovCiAJCXJlZ193KGdzcGNhX2RldiwgMHgwMCwgMHg4NzBhLCAweDA0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3BjYTUwOC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKaW5kZXggMzQ4MzE5My4uNDFkY2U0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcGNhNTA4LmMKQEAgLTU5Miw3ICs1OTIsNyBAQAogLyogVGhpcyBsaW5lIHNlZW1zIHRvIHNldHVwIHRoZSBmcmFtZS9jYW52YXMgKi8KIAl7MHgwMDBmLCAweDg0MDJ9LAogCi0vKiBUaGVlc2UgNiBsaW5lcyBhcmUgbmVlZGVkIHRvIHN0YXJ0dXAgdGhlIHdlYmNhbSAqLworLyogVGhlc2UgNiBsaW5lcyBhcmUgbmVlZGVkIHRvIHN0YXJ0dXAgdGhlIHdlYmNhbSAqLwogCXsweDAwOTAsIDB4ODExMH0sCiAJezB4MDAwMSwgMHg4MTE0fSwKIAl7MHgwMDAxLCAweDgxMTR9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcTkwNS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zcTkwNS5jCmluZGV4IDJlOWMwNjEuLjViYTk2YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3E5MDUuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3NxOTA1LmMKQEAgLTIyLDcgKzIyLDcgQEAKICAqIEhpc3RvcnkgYW5kIEFja25vd2xlZGdtZW50cwogICoKICAqIFRoZSBvcmlnaW5hbCBMaW51eCBkcml2ZXIgZm9yIFNROTA1IGJhc2VkIGNhbWVyYXMgd2FzIHdyaXR0ZW4gYnkKLSAqIE1hcmNlbGwgTGVuZ3llbCBhbmQgZnVydGVyIGRldmVsb3BlZCBieSBtYW55IG90aGVyIGNvbnRyaWJ1dGVycworICogTWFyY2VsbCBMZW5neWVsIGFuZCBmdXJ0ZXIgZGV2ZWxvcGVkIGJ5IG1hbnkgb3RoZXIgY29udHJpYnV0b3JzCiAgKiBhbmQgaXMgYXZhaWxhYmxlIGZyb20gaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zcWNhbS8KICAqCiAgKiBUaGlzIGRyaXZlciB0YWtlcyBhZHZhbnRhZ2Ugb2YgdGhlIHJldmVyc2UgZW5naW5lZXJpbmcgd29yayBkb25lIGZvcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zdHYwNnh4L3N0djA2eHhfaGRjcy5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9nc3BjYS9zdHYwNnh4L3N0djA2eHhfaGRjcy5jCmluZGV4IDE3NTMxYjQuLmI4MTU2ODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vZ3NwY2Evc3R2MDZ4eC9zdHYwNnh4X2hkY3MuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2dzcGNhL3N0djA2eHgvc3R2MDZ4eF9oZGNzLmMKQEAgLTU2OSw3ICs1NjksNyBAQAogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwogCi0JLyogRW5hYmxlIGNvbnRpbm91cyBmcmFtZSBjYXB0dXJlLCBiaXQgMjogc3RvcCB3aGVuIGZyYW1lIGNvbXBsZXRlICovCisJLyogRW5hYmxlIGNvbnRpbnVvdXMgZnJhbWUgY2FwdHVyZSwgYml0IDI6IHN0b3Agd2hlbiBmcmFtZSBjb21wbGV0ZSAqLwogCWVyciA9IHN0djA2eHhfd3JpdGVfc2Vuc29yKHNkLCBIRENTX1JFR19DT05GSUcoc2QpLCBCSVQoMykpOwogCWlmIChlcnIgPCAwKQogCQlyZXR1cm4gZXJyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9oZXhpdW1fZ2VtaW5pLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYwppbmRleCBjZGY4YjE5Li5jYmM1MDVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2hleGl1bV9nZW1pbmkuYwpAQCAtMjYxLDcgKzI2MSw3IEBACiAKIC8qIHRoZSBzYWE3MTQ2IHByb3ZpZGVzIHNvbWUgY29udHJvbHMgKGJyaWdodG5lc3MsIGNvbnRyYXN0LCBzYXR1cmF0aW9uKQogICAgd2hpY2ggZ2V0cyByZWdpc3RlcmVkICphZnRlciogdGhpcyBmdW5jdGlvbi4gYmVjYXVzZSBvZiB0aGlzIHdlIGhhdmUKLSAgIHRvIHJldHVybiB3aXRoIGEgdmFsdWUgIT0gMCBldmVuIGlmIHRoZSBmdW5jdGlvbiBzdWNjZWRlZC4uICovCisgICB0byByZXR1cm4gd2l0aCBhIHZhbHVlICE9IDAgZXZlbiBpZiB0aGUgZnVuY3Rpb24gc3VjY2VlZGVkLi4gKi8KIHN0YXRpYyBpbnQgdmlkaW9jX3F1ZXJ5Y3RybChzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdCB2NGwyX3F1ZXJ5Y3RybCAqcWMpCiB7CiAJc3RydWN0IHNhYTcxNDZfZGV2ICpkZXYgPSAoKHN0cnVjdCBzYWE3MTQ2X2ZoICopZmgpLT5kZXY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHYtZmlybXdhcmUuYwppbmRleCA0ZGYwMTk0Li4xNGExY2VhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0di1maXJtd2FyZS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2LWZpcm13YXJlLmMKQEAgLTE3OSw3ICsxNzksNyBAQAogewogCWludCBpOwogCi0JLyogbWFpbGJveCBpcyBwcmVjZWVkZWQgYnkgYSAxNiBieXRlICdtYWdpYyBjb29raWUnIHN0YXJ0aW5nIGF0IGEgMjU2LWJ5dGUKKwkvKiBtYWlsYm94IGlzIHByZWNlZGVkIGJ5IGEgMTYgYnl0ZSAnbWFnaWMgY29va2llJyBzdGFydGluZyBhdCBhIDI1Ni1ieXRlCiAJICAgYWRkcmVzcyBib3VuZGFyeSAqLwogCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpICs9IDB4MTAwKSB7CiAJCWlmIChyZWFkbChtZW0gKyBpKSAgICAgID09IDB4MTIzNDU2NzggJiYKQEAgLTM3Nyw3ICszNzcsNyBAQAogCQkJICAiUmVsb2FkaW5nXG4iLCB3aGVyZSk7CiAJCXJlcyA9IGl2dHZfZmlybXdhcmVfcmVzdGFydChpdHYpOwogCQkvKgotCQkgKiBFdmVuIGlmIHJlc3RhcnRlZCBvaywgc3RpbGwgc2lnbmFsIGEgcHJvYmxlbSBoYWQgb2NjdXJlZC4KKwkJICogRXZlbiBpZiByZXN0YXJ0ZWQgb2ssIHN0aWxsIHNpZ25hbCBhIHByb2JsZW0gaGFkIG9jY3VycmVkLgogCQkgKiBUaGUgY2FsbGVyIGNhbiBjb21lIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBhZ2FpbiB0byBjaGVjawogCQkgKiBpZiB0aGluZ3MgYXJlIHJlYWxseSBvayBhZnRlciB0aGUgcmVzdGFydC4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0dmZiLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL2l2dHYvaXZ0dmZiLmMKaW5kZXggZjAzMTZkMC4uMTcyNDc0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9pdnR2L2l2dHZmYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vaXZ0di9pdnR2ZmIuYwpAQCAtMTA4MCw3ICsxMDgwLDcgQEAKIAkJa21hbGxvYyhzaXplb2YodTMyKSAqIDE2LCBHRlBfS0VSTkVMfF9fR0ZQX05PV0FSTik7CiAKIAlpZiAoIW9pLT5pdnR2ZmJfaW5mby5wc2V1ZG9fcGFsZXR0ZSkgewotCQlJVlRWRkJfRVJSKCJhYm9ydCwgdW5hYmxlIHRvIGFsbG9jIHBzZXVkbyBwYWxsZXRlXG4iKTsKKwkJSVZUVkZCX0VSUigiYWJvcnQsIHVuYWJsZSB0byBhbGxvYyBwc2V1ZG8gcGFsZXR0ZVxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9tc3AzNDAwLWRyaXZlci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9tc3AzNDAwLWRyaXZlci5jCmluZGV4IGIxNzYzYWMuLjgxMjY2MjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1kcml2ZXIuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL21zcDM0MDAtZHJpdmVyLmMKQEAgLTY5LDcgKzY5LDcgQEAKIC8qIG1vZHVsZSBwYXJhbWV0ZXJzICovCiBzdGF0aWMgaW50IG9wbW9kZSAgID0gT1BNT0RFX0FVVE87CiBpbnQgbXNwX2RlYnVnOwkJIC8qIG1zcF9kZWJ1ZyBvdXRwdXQgKi8KLWludCBtc3Bfb25jZTsJCSAvKiBubyBjb250aW5vdXMgc3RlcmVvIG1vbml0b3JpbmcgKi8KK2ludCBtc3Bfb25jZTsJCSAvKiBubyBjb250aW51b3VzIHN0ZXJlbyBtb25pdG9yaW5nICovCiBpbnQgbXNwX2Ftc291bmQ7CSAvKiBoYXJkLXdpcmUgQU0gc291bmQgYXQgNi41IEh6IChmcmFuY2UpLAogCQkJICAgIHRoZSBhdXRvc2NhbiBzZWVtcyB3b3JrIHdlbGwgb25seSB3aXRoIEZNLi4uICovCiBpbnQgbXNwX3N0YW5kYXJkID0gMTsgICAgLyogT3ZlcnJpZGUgYXV0byBkZXRlY3Qgb2YgYXVkaW8gbXNwX3N0YW5kYXJkLApAQCAtNTUxLDcgKzU1MSw3IEBACiAJc3dpdGNoIChzdGF0ZS0+bW9kZSkgewogCQljYXNlIE1TUF9NT0RFX0FNX0RFVEVDVDogcCA9ICJBTSAoZm9yIGNhcnJpZXIgZGV0ZWN0KSI7IGJyZWFrOwogCQljYXNlIE1TUF9NT0RFX0ZNX1JBRElPOiBwID0gIkZNIFJhZGlvIjsgYnJlYWs7Ci0JCWNhc2UgTVNQX01PREVfRk1fVEVSUkE6IHAgPSAiVGVycmVzdGlhbCBGTS1tb25vL3N0ZXJlbyI7IGJyZWFrOworCQljYXNlIE1TUF9NT0RFX0ZNX1RFUlJBOiBwID0gIlRlcnJlc3RyaWFsIEZNLW1vbm8vc3RlcmVvIjsgYnJlYWs7CiAJCWNhc2UgTVNQX01PREVfRk1fU0FUOiBwID0gIlNhdGVsbGl0ZSBGTS1tb25vIjsgYnJlYWs7CiAJCWNhc2UgTVNQX01PREVfRk1fTklDQU0xOiBwID0gIk5JQ0FNL0ZNIChCL0csIEQvSykiOyBicmVhazsKIAkJY2FzZSBNU1BfTU9ERV9GTV9OSUNBTTI6IHAgPSAiTklDQU0vRk0gKEkpIjsgYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL21zcDM0MDAta3RocmVhZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCmluZGV4IGIzNzZmY2QuLjgwMzg3ZTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vbXNwMzQwMC1rdGhyZWFkcy5jCkBAIC04Nyw3ICs4Nyw3IEBACiAJCXstOCwgLTgsIDQsIDYsIDc4LCAxMDd9LAogCQlNU1BfQ0FSUklFUigxMC43KSwgTVNQX0NBUlJJRVIoMTAuNyksCiAJCTB4MDBkMCwgMHgwNDgwLCAweDAwMjAsIDB4MzAwMAotCX0sIHsJLyogVGVycmVzdGlhbCBGTS1tb25vICsgRk0tc3RlcmVvICovCisJfSwgewkvKiBUZXJyZXN0cmlhbCBGTS1tb25vICsgRk0tc3RlcmVvICovCiAJCXszLCAxOCwgMjcsIDQ4LCA2NiwgNzJ9LAogCQl7MywgMTgsIDI3LCA0OCwgNjYsIDcyfSwKIAkJTVNQX0NBUlJJRVIoNS41KSwgTVNQX0NBUlJJRVIoNS41KSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXQuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXQuYwppbmRleCAwMjlhNGJhLi5kNGZlN2JjIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0LmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwL29tYXBfdm91dC5jCkBAIC00NzMsNyArNDczLDcgQEAKIC8qCiAgKiBDb252ZXJ0IFY0TDIgcm90YXRpb24gdG8gRFNTIHJvdGF0aW9uCiAgKglWNEwyIHVuZGVyc3RhbmQgMCwgOTAsIDE4MCwgMjcwLgotICoJQ29udmVydCB0byAwLCAxLCAyIGFuZCAzIHJlcHNlY3RpdmVseSBmb3IgRFNTCisgKglDb252ZXJ0IHRvIDAsIDEsIDIgYW5kIDMgcmVzcGVjdGl2ZWx5IGZvciBEU1MKICAqLwogc3RhdGljIGludCB2NGwyX3JvdF90b19kc3Nfcm90KGludCB2NGwyX3JvdGF0aW9uLAogCQkJZW51bSBkc3Nfcm90YXRpb24gKnJvdGF0aW9uLCBib29sIG1pcnJvcikKQEAgLTExNDIsNyArMTE0Miw3IEBACiB9CiAKIC8qCi0gKiBCdWZmZXIgcXVldWUgZnVudGlvbiB3aWxsIGJlIGNhbGxlZCBmcm9tIHRoZSB2aWRlb2J1ZiBsYXllciB3aGVuIF9RQlVGCisgKiBCdWZmZXIgcXVldWUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgZnJvbSB0aGUgdmlkZW9idWYgbGF5ZXIgd2hlbiBfUUJVRgogICogaW9jdGwgaXMgY2FsbGVkLiBJdCBpcyB1c2VkIHRvIGVucXVldWUgYnVmZmVyLCB3aGljaCBpcyByZWFkeSB0byBiZQogICogZGlzcGxheWVkLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0bGliLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAvb21hcF92b3V0bGliLmMKaW5kZXggYjk0MWM3Ni4uMmFhNmE3NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwL29tYXBfdm91dGxpYi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcC9vbWFwX3ZvdXRsaWIuYwpAQCAtNTMsNyArNTMsNyBAQAogLyogR2l2ZW4gYSBuZXcgcmVuZGVyIHdpbmRvdyBpbiBuZXdfd2luLCBhZGp1c3QgdGhlIHdpbmRvdyB0byB0aGUKICAqIG5lYXJlc3Qgc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24uICBUaGUgYWRqdXN0ZWQgd2luZG93IHBhcmFtZXRlcnMgYXJlCiAgKiByZXR1cm5lZCBpbiBuZXdfd2luLgotICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHdpbmRvdyBpcworICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc3NmdWwsIG9yIC1FSU5WQUwgaWYgdGhlIHJlcXVlc3RlZCB3aW5kb3cgaXMKICAqIGltcG9zc2libGUgYW5kIGNhbm5vdCByZWFzb25hYmx5IGJlIGFkanVzdGVkLgogICovCiBpbnQgb21hcF92b3V0X3RyeV93aW5kb3coc3RydWN0IHY0bDJfZnJhbWVidWZmZXIgKmZidWYsCkBAIC0xMDEsNyArMTAxLDcgQEAKICAqIHdpbGwgYWxzbyBiZSBhZGp1c3RlZCBpZiBuZWNlc3NhcnkuICBQcmVmZXJlbmNlIGlzIGdpdmVuIHRvIGtlZXBpbmcgdGhlCiAgKiB0aGUgd2luZG93IGFzIGNsb3NlIHRvIHRoZSByZXF1ZXN0ZWQgY29uZmlndXJhdGlvbiBhcyBwb3NzaWJsZS4gIElmCiAgKiBzdWNjZXNzZnVsLCBuZXdfd2luLCB2b3V0LT53aW4sIGFuZCBjcm9wIGFyZSB1cGRhdGVkLgotICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHByZXZpZXcgd2luZG93IGlzCisgKiBSZXR1cm5zIHplcm8gaWYgc3VjY2Vzc2Z1bCwgb3IgLUVJTlZBTCBpZiB0aGUgcmVxdWVzdGVkIHByZXZpZXcgd2luZG93IGlzCiAgKiBpbXBvc3NpYmxlIGFuZCBjYW5ub3QgcmVhc29uYWJseSBiZSBhZGp1c3RlZC4KICAqLwogaW50IG9tYXBfdm91dF9uZXdfd2luZG93KHN0cnVjdCB2NGwyX3JlY3QgKmNyb3AsCkBAIC0xNTUsNyArMTU1LDcgQEAKICAqIHdpbmRvdyB3b3VsZCBmYWxsIG91dHNpZGUgdGhlIGRpc3BsYXkgYm91bmRhcmllcywgdGhlIGNyb3BwaW5nIHJlY3RhbmdsZQogICogd2lsbCBhbHNvIGJlIGFkanVzdGVkIHRvIG1haW50YWluIHRoZSByZXNjYWxpbmcgcmF0aW9zLiAgSWYgc3VjY2Vzc2Z1bCwgY3JvcAogICogYW5kIHdpbiBhcmUgdXBkYXRlZC4KLSAqIFJldHVybnMgemVybyBpZiBzdWNjZXNmdWwsIG9yIC1FSU5WQUwgaWYgdGhlIHJlcXVlc3RlZCBjcm9wcGluZyByZWN0YW5nbGUgaXMKKyAqIFJldHVybnMgemVybyBpZiBzdWNjZXNzZnVsLCBvciAtRUlOVkFMIGlmIHRoZSByZXF1ZXN0ZWQgY3JvcHBpbmcgcmVjdGFuZ2xlIGlzCiAgKiBpbXBvc3NpYmxlIGFuZCBjYW5ub3QgcmVhc29uYWJseSBiZSBhZGp1c3RlZC4KICAqLwogaW50IG9tYXBfdm91dF9uZXdfY3JvcChzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0ICpwaXgsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAxX2NhbWVyYS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwMV9jYW1lcmEuYwppbmRleCBlYWIzMWNiLi41OTU0YjkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAxX2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDFfY2FtZXJhLmMKQEAgLTY4Nyw3ICs2ODcsNyBAQAogCQkgKiBJbiBDT05USUcgbW9kZSwgdGhlIGN1cnJlbnQgYnVmZmVyIHBhcmFtZXRlcnMgaGFkIGFscmVhZHkKIAkJICogYmVlbiBlbnRlcmVkIGludG8gdGhlIERNQSBwcm9ncmFtbWluZyByZWdpc3RlciBzZXQgd2hpbGUgdGhlCiAJCSAqIGJ1ZmZlciB3YXMgZmV0Y2hlZCB3aXRoIHByZXBhcmVfbmV4dF92YigpLCB0aGV5IG1heSBoYXZlIGFsc28KLQkJICogYmVlbiB0cmFuc2ZlcmVkIGludG8gdGhlIHJ1bnRpbWUgc2V0IGFuZCBhbHJlYWR5IGFjdGl2ZSBpZgorCQkgKiBiZWVuIHRyYW5zZmVycmVkIGludG8gdGhlIHJ1bnRpbWUgc2V0IGFuZCBhbHJlYWR5IGFjdGl2ZSBpZgogCQkgKiB0aGUgRE1BIHN0aWxsIHJ1bm5pbmcuCiAJCSAqLwogCX0gZWxzZSB7CkBAIC04MzUsNyArODM1LDcgQEAKIAkJCQkvKgogCQkJCSAqIElmIGV4YWN0bHkgMiBzZ2J1ZnMgZnJvbSB0aGUgbmV4dCBzZ2xpc3QgaGF2ZQogCQkJCSAqIGJlZW4gcHJvZ3JhbW1lZCBpbnRvIHRoZSBETUEgZW5naW5lICh0aGUKLQkJCQkgKiBmcmlzdCBvbmUgYWxyZWFkeSB0cmFuc2ZlcmVkIGludG8gdGhlIERNQQorCQkJCSAqIGZpcnN0IG9uZSBhbHJlYWR5IHRyYW5zZmVycmVkIGludG8gdGhlIERNQQogCQkJCSAqIHJ1bnRpbWUgcmVnaXN0ZXIgc2V0LCB0aGUgc2Vjb25kIG9uZSBzdGlsbAogCQkJCSAqIGluIHRoZSBwcm9ncmFtbWluZyBzZXQpLCB0aGVuIHdlIGFyZSBpbiBzeW5jLgogCQkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3AuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwLmMKaW5kZXggMWE5OTYzYmQuLjUwM2JkNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3AuYwpAQCAtNzE1LDcgKzcxNSw3IEBACiAgKiBXYWxrIHRoZSBlbnRpdGllcyBjaGFpbiBzdGFydGluZyBhdCB0aGUgcGlwZWxpbmUgb3V0cHV0IHZpZGVvIG5vZGUgYW5kIHN0YXJ0CiAgKiBhbGwgbW9kdWxlcyBpbiB0aGUgY2hhaW4gaW4gdGhlIGdpdmVuIG1vZGUuCiAgKgotICogUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bGwsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZhaWxlZCB2aWRlbzo6c19zdHJlYW0KKyAqIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWwsIG9yIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZhaWxlZCB2aWRlbzo6c19zdHJlYW0KICAqIG9wZXJhdGlvbiBvdGhlcndpc2UuCiAgKi8KIHN0YXRpYyBpbnQgaXNwX3BpcGVsaW5lX2VuYWJsZShzdHJ1Y3QgaXNwX3BpcGVsaW5lICpwaXBlLApAQCAtODgzLDcgKzg4Myw3IEBACiAgKiBTZXQgdGhlIHBpcGVsaW5lIHRvIHRoZSBnaXZlbiBzdHJlYW0gc3RhdGUuIFBpcGVsaW5lcyBjYW4gYmUgc3RhcnRlZCBpbgogICogc2luZ2xlLXNob3Qgb3IgY29udGludW91cyBtb2RlLgogICoKLSAqIFJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmYWlsZWQgdmlkZW86OnNfc3RyZWFtCisgKiBSZXR1cm4gMCBpZiBzdWNjZXNzZnVsLCBvciB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmYWlsZWQgdmlkZW86OnNfc3RyZWFtCiAgKiBvcGVyYXRpb24gb3RoZXJ3aXNlLgogICovCiBpbnQgb21hcDNpc3BfcGlwZWxpbmVfc2V0X3N0cmVhbShzdHJ1Y3QgaXNwX3BpcGVsaW5lICpwaXBlLApAQCAtMTI4Myw3ICsxMjgzLDcgQEAKIAkJY2xrIHw9IElTUENUUkxfUlNaX0NMS19FTjsKIAogCS8qIE5PVEU6IEZvciBDQ0RDICYgUHJldmlldyBzdWJtb2R1bGVzLCB3ZSBuZWVkIHRvIGFmZmVjdCBpbnRlcm5hbAotCSAqICAgICAgIFJBTSBhc3dlbGwuCisJICogICAgICAgUkFNIGFzIHdlbGwuCiAJICovCiAJaWYgKGlzcC0+c3ViY2xrX3Jlc291cmNlcyAmIE9NQVAzX0lTUF9TVUJDTEtfQ0NEQykKIAkJY2xrIHw9IElTUENUUkxfQ0NEQ19DTEtfRU4gfCBJU1BDVFJMX0NDRENfUkFNX0VOOwpAQCAtMTQzMSw3ICsxNDMxLDcgQEAKICAqIEluY3JlbWVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9uIHRoZSBJU1AuIElmIHRoZSBmaXJzdCByZWZlcmVuY2UgaXMgdGFrZW4sCiAgKiBlbmFibGUgY2xvY2tzIGFuZCBwb3dlci11cCBhbGwgc3VibW9kdWxlcy4KICAqCi0gKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBJU1AgZGV2aWNlIHN0cnVjdHVyZSwgb3IgTlVMTCBpZiBhbiBlcnJvciBvY2N1cmVkLgorICogUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgSVNQIGRldmljZSBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAgKi8KIHN0cnVjdCBpc3BfZGV2aWNlICpvbWFwM2lzcF9nZXQoc3RydWN0IGlzcF9kZXZpY2UgKmlzcCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NkYy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKaW5kZXggZDQwM2FmNS4uNDgzYTE5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BjY2RjLmgKQEAgLTE1MCw3ICsxNTAsNyBAQAogICogQGlucHV0OiBBY3RpdmUgaW5wdXQKICAqIEBvdXRwdXQ6IEFjdGl2ZSBvdXRwdXRzCiAgKiBAdmlkZW9fb3V0OiBPdXRwdXQgdmlkZW8gbm9kZQotICogQGVycm9yOiBBIGhhcmR3YXJlIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNhcHR1cmUKKyAqIEBlcnJvcjogQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2FwdHVyZQogICogQGFsYXc6IEEtbGF3IGNvbXByZXNzaW9uIGVuYWJsZWQgKDEpIG9yIGRpc2FibGVkICgwKQogICogQGxwZjogTG93IHBhc3MgZmlsdGVyIGVuYWJsZWQgKDEpIG9yIGRpc2FibGVkICgwKQogICogQG9iY2xhbXA6IE9wdGljYWwtYmxhY2sgY2xhbXAgZW5hYmxlZCAoMSkgb3IgZGlzYWJsZWQgKDApCkBAIC0xNjMsNyArMTYzLDcgQEAKICAqIEBzaGFkb3dfdXBkYXRlOiBDb250cm9scyB1cGRhdGUgaW4gcHJvZ3Jlc3MgYnkgdXNlcnNwYWNlCiAgKiBAc3luY2lmOiBJbnRlcmZhY2Ugc3luY2hyb25pemF0aW9uIGNvbmZpZ3VyYXRpb24KICAqIEB2cGNmZzogVmlkZW8gcG9ydCBjb25maWd1cmF0aW9uCi0gKiBAdW5kZXJydW46IEEgYnVmZmVyIHVuZGVycnVuIG9jY3VyZWQgYW5kIGEgbmV3IGJ1ZmZlciBoYXMgYmVlbiBxdWV1ZWQKKyAqIEB1bmRlcnJ1bjogQSBidWZmZXIgdW5kZXJydW4gb2NjdXJyZWQgYW5kIGEgbmV3IGJ1ZmZlciBoYXMgYmVlbiBxdWV1ZWQKICAqIEBzdGF0ZTogU3RyZWFtaW5nIHN0YXRlCiAgKiBAbG9jazogU2VyaWFsaXplcyBzaGFkb3dfdXBkYXRlIHdpdGggaW50ZXJydXB0IGhhbmRsZXIKICAqIEB3YWl0OiBXYWl0IHF1ZXVlIHVzZWQgdG8gc3RvcCB0aGUgbW9kdWxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcGNjcDIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCmluZGV4IDBlZmVmMmUuLjBlMTZjYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY2NwMi5jCkBAIC03NzIsNyArNzcyLDcgQEAKICAqIEBzZCAgICA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggICAgOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdCAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgY2NwMl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcGNzaTIuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCmluZGV4IGZiNTAzZjMuLjY5MTYxYTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwY3NpMi5jCkBAIC05NjksNyArOTY5LDcgQEAKICAqIEBzZCA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgY3NpMl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCmluZGV4IGJhZjkzNzQuLjJiMTY5ODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcHJldmlldy5jCkBAIC0zNCw3ICszNCw3IEBACiAjaW5jbHVkZSAiaXNwcmVnLmgiCiAjaW5jbHVkZSAiaXNwcHJldmlldy5oIgogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIFJHQnRvUkdCIEJsZW5kaW5nICovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIFJHQnRvUkdCIEJsZW5kaW5nICovCiBzdGF0aWMgc3RydWN0IG9tYXAzaXNwX3ByZXZfcmdidG9yZ2IgZmxyX3JnYjJyZ2IgPSB7CiAJewkvKiBSR0ItUkdCIE1hdHJpeCAqLwogCQl7MHgwMUUyLCAweDBGMzAsIDB4MEZFRX0sCkBAIC00NCw3ICs0NCw3IEBACiAJezB4MDAwMCwgMHgwMDAwLCAweDAwMDB9CiB9OwogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIFJHQiB0byBZVVYgQ29udmVyc2lvbiovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIFJHQiB0byBZVVYgQ29udmVyc2lvbiovCiBzdGF0aWMgc3RydWN0IG9tYXAzaXNwX3ByZXZfY3NjIGZscl9wcmV2X2NzYyA9IHsKIAl7CS8qIENTQyBDb2VmIE1hdHJpeCAqLwogCQl7NjYsIDEyOSwgMjV9LApAQCAtNTQsMjIgKzU0LDIyIEBACiAJezB4MCwgMHgwLCAweDB9CiB9OwogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIENGQSBHcmFkaWVudCovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIENGQSBHcmFkaWVudCovCiAjZGVmaW5lIEZMUl9DRkFfR1JBRFRIUlNfSE9SWgkweDI4CiAjZGVmaW5lIEZMUl9DRkFfR1JBRFRIUlNfVkVSVAkweDI4CiAKLS8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbG91cmVzY2VudCBMaWdodCBmb3IgQ2hyb21hIFN1cHByZXNzaW9uKi8KKy8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbHVvcmVzY2VudCBMaWdodCBmb3IgQ2hyb21hIFN1cHByZXNzaW9uKi8KICNkZWZpbmUgRkxSX0NTVVBfR0FJTgkJMHgwRAogI2RlZmluZSBGTFJfQ1NVUF9USFJFUwkJMHhFQgogCi0vKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmxvdXJlc2NlbnQgTGlnaHQgZm9yIE5vaXNlIEZpbHRlciovCisvKiBEZWZhdWx0IHZhbHVlcyBpbiBPZmZpY2UgRmx1b3Jlc2NlbnQgTGlnaHQgZm9yIE5vaXNlIEZpbHRlciovCiAjZGVmaW5lIEZMUl9ORl9TVFJHVEgJCTB4MDMKIAogLyogRGVmYXVsdCB2YWx1ZXMgZm9yIFdoaXRlIEJhbGFuY2UgKi8KICNkZWZpbmUgRkxSX1dCQUxfREdBSU4JCTB4MTAwCiAjZGVmaW5lIEZMUl9XQkFMX0NPRUYJCTB4MjAKIAotLyogRGVmYXVsdCB2YWx1ZXMgaW4gT2ZmaWNlIEZsb3VyZXNjZW50IExpZ2h0IGZvciBCbGFjayBBZGp1c3RtZW50Ki8KKy8qIERlZmF1bHQgdmFsdWVzIGluIE9mZmljZSBGbHVvcmVzY2VudCBMaWdodCBmb3IgQmxhY2sgQWRqdXN0bWVudCovCiAjZGVmaW5lIEZMUl9CTEtBREpfQkxVRQkJMHgwCiAjZGVmaW5lIEZMUl9CTEtBREpfR1JFRU4JMHgwCiAjZGVmaW5lIEZMUl9CTEtBREpfUkVECQkweDAKQEAgLTEzNyw3ICsxMzcsNyBAQAogICogQGVuYWJsZTogMSAtIEVuYWJsZSwgMCAtIERpc2FibGUKICAqCiAgKiBOT1RFOiBQUlZfV1NEUl9BRERSIGFuZCBQUlZfV0FERF9PRkZTRVQgbXVzdCBiZSBzZXQgYWxzbwotICogVGhlIHByb2NjZXNzIGlzIGFwcGxpZWQgZm9yIGVhY2ggY2FwdHVyZWQgZnJhbWUuCisgKiBUaGUgcHJvY2VzcyBpcyBhcHBsaWVkIGZvciBlYWNoIGNhcHR1cmVkIGZyYW1lLgogICovCiBzdGF0aWMgdm9pZAogcHJldmlld19lbmFibGVfZHJrZnJhbWVfY2FwdHVyZShzdHJ1Y3QgaXNwX3ByZXZfZGV2aWNlICpwcmV2LCB1OCBlbmFibGUpCkBAIC0xNTcsNyArMTU3LDcgQEAKICAqIEBlbmFibGU6IDEgLSBBY3F1aXJlcyBtZW1vcnkgYmFuZHdpZHRoIHNpbmNlIHRoZSBwaXhlbHMgaW4gZWFjaCBmcmFtZSBpcwogICogICAgICAgICAgc3VidHJhY3RlZCB3aXRoIHRoZSBwaXhlbHMgaW4gdGhlIGN1cnJlbnQgZnJhbWUuCiAgKgotICogVGhlIHByb2NjZXNzIGlzIGFwcGxpZWQgZm9yIGVhY2ggY2FwdHVyZWQgZnJhbWUuCisgKiBUaGUgcHJvY2VzcyBpcyBhcHBsaWVkIGZvciBlYWNoIGNhcHR1cmVkIGZyYW1lLgogICovCiBzdGF0aWMgdm9pZAogcHJldmlld19lbmFibGVfZHJrZnJhbWUoc3RydWN0IGlzcF9wcmV2X2RldmljZSAqcHJldiwgdTggZW5hYmxlKQpAQCAtMTUyOCw3ICsxNTI4LDcgQEAKICAqIHByZXZpZXdfc2V0X3N0cmVhbSAtIEVuYWJsZS9EaXNhYmxlIHN0cmVhbWluZyBvbiBwcmV2aWV3IHN1YmRldgogICogQHNkICAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBzdHJ1Y3R1cmUKICAqIEBlbmFibGU6IDEgPT0gRW5hYmxlLCAwID09IERpc2FibGUKLSAqIHJldHVybiAtRUlOVkFMIG9yIHplcm8gb24gc3VjZXNzCisgKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2Nlc3MKICAqLwogc3RhdGljIGludCBwcmV2aWV3X3NldF9zdHJlYW0oc3RydWN0IHY0bDJfc3ViZGV2ICpzZCwgaW50IGVuYWJsZSkKIHsKQEAgLTE3ODAsNyArMTc4MCw3IEBACiAgKiBAc2QgOiBwb2ludGVyIHRvIHY0bDIgc3ViZGV2IHN0cnVjdHVyZQogICogQGZoIDogVjRMMiBzdWJkZXYgZmlsZSBoYW5kbGUKICAqIEBmbXQ6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgZm9ybWF0IHN0cnVjdHVyZQotICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNlc3MKKyAqIHJldHVybiAtRUlOVkFMIG9yIHplcm8gb24gc3VjY2VzcwogICovCiBzdGF0aWMgaW50IHByZXZpZXdfZ2V0X2Zvcm1hdChzdHJ1Y3QgdjRsMl9zdWJkZXYgKnNkLCBzdHJ1Y3QgdjRsMl9zdWJkZXZfZmggKmZoLAogCQkJICAgICAgc3RydWN0IHY0bDJfc3ViZGV2X2Zvcm1hdCAqZm10KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BwcmV2aWV3LmggYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaAppbmRleCBmMmQ2M2NhLi5mYTk0M2JkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHByZXZpZXcuaApAQCAtMTYzLDcgKzE2Myw3IEBACiAgKiBAb3V0cHV0OiBCaXRtYXNrIG9mIHRoZSBhY3RpdmUgb3V0cHV0CiAgKiBAdmlkZW9faW46IElucHV0IHZpZGVvIGVudGl0eQogICogQHZpZGVvX291dDogT3V0cHV0IHZpZGVvIGVudGl0eQotICogQGVycm9yOiBBIGhhcmR3YXJlIGVycm9yIG9jY3VyZWQgZHVyaW5nIGNhcHR1cmUKKyAqIEBlcnJvcjogQSBoYXJkd2FyZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2FwdHVyZQogICogQHBhcmFtczogTW9kdWxlIGNvbmZpZ3VyYXRpb24gZGF0YQogICogQHNoYWRvd191cGRhdGU6IElmIHNldCwgdXBkYXRlIHRoZSBoYXJkd2FyZSBjb25maWd1cmVkIGluIHRoZSBuZXh0IGludGVycnVwdAogICogQHVuZGVycnVuOiBXaGV0aGVyIHRoZSBwcmV2aWV3IGVudGl0eSBoYXMgcXVldWVkIGJ1ZmZlcnMgb24gdGhlIG91dHB1dApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BxdWV1ZS5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3BxdWV1ZS5oCmluZGV4IDI1MWRlM2UuLjkyYzVhMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcXVldWUuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHF1ZXVlLmgKQEAgLTQ2LDkgKzQ2LDkgQEAKICAqCWRldmljZSB5ZXQuCiAgKiBASVNQX0JVRl9TVEFURV9BQ1RJVkU6IFRoZSBidWZmZXIgaXMgaW4gdXNlIGZvciBhbiBhY3RpdmUgdmlkZW8gdHJhbnNmZXIuCiAgKiBASVNQX0JVRl9TVEFURV9FUlJPUjogVGhlIGRldmljZSBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciBhbmQgYW4gZXJyb3IKLSAqCW9jY3VyZWQuIEZvciBjYXB0dXJlIGRldmljZSB0aGUgYnVmZmVyIGxpa2VseSBjb250YWlucyBjb3JydXB0ZWQgZGF0YSBvcgorICoJb2NjdXJyZWQuIEZvciBjYXB0dXJlIGRldmljZSB0aGUgYnVmZmVyIGxpa2VseSBjb250YWlucyBjb3JydXB0ZWQgZGF0YSBvcgogICoJbm8gZGF0YSBhdCBhbGwuCi0gKiBASVNQX0JVRl9TVEFURV9ET05FOiBUaGUgZGV2aWNlIGlzIGRvbmUgd2l0aCB0aGUgYnVmZmVyIGFuZCBubyBlcnJvciBvY2N1cmVkLgorICogQElTUF9CVUZfU1RBVEVfRE9ORTogVGhlIGRldmljZSBpcyBkb25lIHdpdGggdGhlIGJ1ZmZlciBhbmQgbm8gZXJyb3Igb2NjdXJyZWQuCiAgKglGb3IgY2FwdHVyZSBkZXZpY2VzIHRoZSBidWZmZXIgY29udGFpbnMgdmFsaWQgZGF0YS4KICAqLwogZW51bSBpc3BfdmlkZW9fYnVmZmVyX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwcmVzaXplci5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKaW5kZXggNzVkMzliMS4uNjUzZjg4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3ByZXNpemVyLmMKQEAgLTc1MSw3ICs3NTEsNyBAQAogICogcmF0aW8gd2lsbCB0aHVzIHJlc3VsdCBpbiBhIHJlc2l6aW5nIGZhY3RvciBzbGlnaHRseSBsYXJnZXIgdGhhbiB0aGUKICAqIHJlcXVlc3RlZCB2YWx1ZS4KICAqCi0gKiBUbyBhY2NvbW9kYXRlIHRoYXQsIGFuZCBtYWtlIHN1cmUgdGhlIFRSTSBlcXVhdGlvbnMgYXJlIHNhdGlzZmllZCBleGFjdGx5LCB3ZQorICogVG8gYWNjb21tb2RhdGUgdGhhdCwgYW5kIG1ha2Ugc3VyZSB0aGUgVFJNIGVxdWF0aW9ucyBhcmUgc2F0aXNmaWVkIGV4YWN0bHksIHdlCiAgKiBjb21wdXRlIHRoZSBpbnB1dCBjcm9wIHJlY3RhbmdsZSBhcyB0aGUgbGFzdCBzdGVwLgogICoKICAqIEFzIGlmIHRoZSBzaXR1YXRpb24gd2Fzbid0IGNvbXBsZXggZW5vdWdoLCB0aGUgbWF4aW11bSBvdXRwdXQgd2lkdGggZGVwZW5kcwpAQCAtMTM4Niw3ICsxMzg2LDcgQEAKICAqIEBzZCAgICA6IHBvaW50ZXIgdG8gdjRsMiBzdWJkZXYgc3RydWN0dXJlCiAgKiBAZmggICAgOiBWNEwyIHN1YmRldiBmaWxlIGhhbmRsZQogICogQGZtdCAgIDogcG9pbnRlciB0byB2NGwyIHN1YmRldiBmb3JtYXQgc3RydWN0dXJlCi0gKiByZXR1cm4gLUVJTlZBTCBvciB6ZXJvIG9uIHN1Y2VzcworICogcmV0dXJuIC1FSU5WQUwgb3IgemVybyBvbiBzdWNjZXNzCiAgKi8KIHN0YXRpYyBpbnQgcmVzaXplcl9nZXRfZm9ybWF0KHN0cnVjdCB2NGwyX3N1YmRldiAqc2QsIHN0cnVjdCB2NGwyX3N1YmRldl9maCAqZmgsCiAJCQkgICAgICBzdHJ1Y3QgdjRsMl9zdWJkZXZfZm9ybWF0ICpmbXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHZpZGVvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL29tYXAzaXNwL2lzcHZpZGVvLmMKaW5kZXggYTBiYjVkYi4uMjA4YTdlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vbWFwM2lzcC9pc3B2aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb21hcDNpc3AvaXNwdmlkZW8uYwpAQCAtNDk0LDEyICs0OTQsMTIgQEAKIC8qCiAgKiBvbWFwM2lzcF92aWRlb19idWZmZXJfbmV4dCAtIENvbXBsZXRlIHRoZSBjdXJyZW50IGJ1ZmZlciBhbmQgcmV0dXJuIHRoZSBuZXh0CiAgKiBAdmlkZW86IElTUCB2aWRlbyBvYmplY3QKLSAqIEBlcnJvcjogV2hldGhlciBhbiBlcnJvciBvY2N1cmVkIGR1cmluZyBjYXB0dXJlCisgKiBAZXJyb3I6IFdoZXRoZXIgYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNhcHR1cmUKICAqCiAgKiBSZW1vdmUgdGhlIGN1cnJlbnQgdmlkZW8gYnVmZmVyIGZyb20gdGhlIERNQSBxdWV1ZSBhbmQgZmlsbCBpdHMgdGltZXN0YW1wLAogICogZmllbGQgY291bnQgYW5kIHN0YXRlIGZpZWxkcyBiZWZvcmUgd2FraW5nIHVwIGl0cyBjb21wbGV0aW9uIGhhbmRsZXIuCiAgKgotICogVGhlIGJ1ZmZlciBzdGF0ZSBpcyBzZXQgdG8gVklERU9CVUZfRE9ORSBpZiBubyBlcnJvciBvY2N1cmVkIChAZXJyb3IgaXMgMCkKKyAqIFRoZSBidWZmZXIgc3RhdGUgaXMgc2V0IHRvIFZJREVPQlVGX0RPTkUgaWYgbm8gZXJyb3Igb2NjdXJyZWQgKEBlcnJvciBpcyAwKQogICogb3IgVklERU9CVUZfRVJST1Igb3RoZXJ3aXNlIChAZXJyb3IgaXMgbm9uLXplcm8pLgogICoKICAqIFRoZSBETUEgcXVldWUgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgYnVmZmVyLgpAQCAtNTc4LDcgKzU3OCw3IEBACiAvKgogICogb21hcDNpc3BfdmlkZW9fcmVzdW1lIC0gUGVyZm9ybSByZXN1bWUgb3BlcmF0aW9uIG9uIHRoZSBidWZmZXJzCiAgKiBAdmlkZW86IElTUCB2aWRlbyBvYmplY3QKLSAqIEBjb250aW51b3VzOiBQaXBlbGluZSBpcyBpbiBzaW5nbGUgc2hvdCBtb2RlIGlmIDAgb3IgY29udGlub3VzIG1vZGUgb3RoZXJ3aXNlCisgKiBAY29udGludW91czogUGlwZWxpbmUgaXMgaW4gc2luZ2xlIHNob3QgbW9kZSBpZiAwIG9yIGNvbnRpbnVvdXMgbW9kZSBvdGhlcndpc2UKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgb24gc3VzcGVuZC9yZXN1bWUgc2NlbmFyaW8uIEl0CiAgKiByZXF1ZXN0cyB2aWRlbyBxdWV1ZSBsYXllciB0byBkaXNjYXJkIGJ1ZmZlcnMgbWFya2VkIGFzIERPTkUgaWYgaXQncyBpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjY2NTAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y2NjUwLmMKaW5kZXggZmU4ZTNlYi4uNDU2ZDlhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9vdjY2NTAuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL292NjY1MC5jCkBAIC0xMDM4LDcgKzEwMzgsNyBAQAogCXJldCA9IG92NjY1MF9yZWdfcm13KGNsaWVudCwgUkVHX0NPTUEsIENPTUFfUkVTRVQsIDApOwogCWlmIChyZXQpCiAJCWRldl9lcnIoJmNsaWVudC0+ZGV2LAotCQkJIkFuIGVycm9yIG9jY3VyZWQgd2hpbGUgZW50ZXJpbmcgc29mdCByZXNldCFcbiIpOworCQkJIkFuIGVycm9yIG9jY3VycmVkIHdoaWxlIGVudGVyaW5nIHNvZnQgcmVzZXQhXG4iKTsKIAogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL292OTY0MC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9vdjk2NDAuYwppbmRleCA1M2Q4OGEyLi41MTczYWM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL292OTY0MC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vb3Y5NjQwLmMKQEAgLTI3Myw3ICsyNzMsNyBAQAogCXJldCA9IG92OTY0MF9yZWdfd3JpdGUoY2xpZW50LCBPVjk2NDBfQ09NNywgT1Y5NjQwX0NPTTdfU0NDQl9SRVNFVCk7CiAJaWYgKHJldCkKIAkJZGV2X2VycigmY2xpZW50LT5kZXYsCi0JCQkiQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSBlbnRlcmluZyBzb2Z0IHJlc2V0IVxuIik7CisJCQkiQW4gZXJyb3Igb2NjdXJyZWQgd2hpbGUgZW50ZXJpbmcgc29mdCByZXNldCFcbiIpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWVlcHJvbS5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKaW5kZXggYWVlZDFjMi4uOTUxNWYzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItZWVwcm9tLmMKQEAgLTMyLDcgKzMyLDcgQEAKIAogICAgUmVhZCBhbmQgYW5hbHl6ZSBkYXRhIGluIHRoZSBlZXByb20uICBVc2UgdHZlZXByb20gdG8gZmlndXJlIG91dAogICAgdGhlIHBhY2tldCBzdHJ1Y3R1cmUsIHNpbmNlIHRoaXMgaXMgYW5vdGhlciBIYXVwcGF1Z2UgZGV2aWNlIGFuZAotICAgaW50ZXJuYWxseSBpdCBoYXMgYSBmYW1pbHkgcmVzZW1ibGVuY2UgdG8gaXZ0di10eXBlIGRldmljZXMKKyAgIGludGVybmFsbHkgaXQgaGFzIGEgZmFtaWx5IHJlc2VtYmxhbmNlIHRvIGl2dHYtdHlwZSBkZXZpY2VzCiAKICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHZydXNiMi9wdnJ1c2IyLWhkdy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKaW5kZXggNTFkMzAwOS4uZDc3NTNhZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9wdnJ1c2IyL3B2cnVzYjItaGR3LmgKQEAgLTc1LDcgKzc1LDcgQEAKICAqICAoYnV0IGl0IG1pZ2h0IHN0aWxsIG9uIHRoZSBidXMpLiAgSW4gdGhpcyBzdGF0ZSB0aGVyZSdzIG5vdGhpbmcgd2UgY2FuCiAgKiAgZG87IGl0IG11c3QgYmUgcmVwbHVnZ2VkIGluIG9yZGVyIHRvIHJlY292ZXIuCiAgKgotICogIENPTEQgLSBEZXZpY2UgaXMgaW4gYW4gdW51c3VhYmxlIHN0YXRlLCBuZWVkcyBtaWNyb2NvbnRyb2xsZXIgZmlybXdhcmUuCisgKiAgQ09MRCAtIERldmljZSBpcyBpbiBhbiB1bnVzYWJsZSBzdGF0ZSwgbmVlZHMgbWljcm9jb250cm9sbGVyIGZpcm13YXJlLgogICoKICAqICBXQVJNIC0gV2UgY2FuIGNvbW11bmljYXRlIHdpdGggdGhlIGRldmljZSBhbmQgdGhlIHByb3BlcgogICogIG1pY3JvY29udHJvbGxlciBmaXJtd2FyZSBpcyBydW5uaW5nLCBidXQgb3RoZXIgZGV2aWNlIGluaXRpYWxpemF0aW9uIGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3B4YV9jYW1lcmEuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCmluZGV4IDAyNjg2NzcuLmMxZWUwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vcHhhX2NhbWVyYS5jCkBAIC03MTQsNyArNzE0LDcgQEAKICAqCiAgKiBUaGUgRE1BIGNoYWluaW5nIGlzIGRvbmUgd2l0aCBETUEgcnVubmluZy4gVGhpcyBtZWFucyBhIHRpbnkgdGVtcG9yYWwgd2luZG93CiAgKiByZW1haW5zLCB3aGVyZSBhIGJ1ZmZlciBpcyBxdWV1ZWQgb24gdGhlIGNoYWluLCB3aGlsZSB0aGUgY2hhaW4gaXMgYWxyZWFkeQotICogc3RvcHBlZC4gVGhpcyBtZWFucyB0aGUgdGFpbGVkIGJ1ZmZlciB3b3VsZCBuZXZlciBiZSB0cmFuc2ZlcmVkIGJ5IERNQS4KKyAqIHN0b3BwZWQuIFRoaXMgbWVhbnMgdGhlIHRhaWxlZCBidWZmZXIgd291bGQgbmV2ZXIgYmUgdHJhbnNmZXJyZWQgYnkgRE1BLgogICogVGhpcyBmdW5jdGlvbiByZXN0YXJ0cyB0aGUgY2FwdHVyZSBmb3IgdGhpcyBjb3JuZXIgY2FzZSwgd2hlcmUgOgogICogIC0gREFEUigpID09IERBRERSX1NUT1AKICAqICAtIGEgdmlkZW9idWZmZXIgaXMgcXVldWVkIG9uIHRoZSBwY2Rldi0+Y2FwdHVyZSBsaXN0CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1maW1jL2ZpbWMtcmVnLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3M1cC1maW1jL2ZpbWMtcmVnLmMKaW5kZXggNGQ5MjlhMy4uNDg5M2IyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zNXAtZmltYy9maW1jLXJlZy5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vczVwLWZpbWMvZmltYy1yZWcuYwpAQCAtMzU2LDcgKzM1Niw3IEBACiAJCS8qIG9uZSBzaG90IG1vZGUgKi8KIAkJY2ZnIHw9IFM1UF9DSUlNR0NQVF9DUFRfRlJFTl9FTkFCTEUgfCBTNVBfQ0lJTUdDUFRfSU1HQ1BURU47CiAJfSBlbHNlIHsKLQkJLyogQ29udGlub3VzIGZyYW1lIGNhcHR1cmUgbW9kZSAoZnJlZXJ1bikuICovCisJCS8qIENvbnRpbnVvdXMgZnJhbWUgY2FwdHVyZSBtb2RlIChmcmVlcnVuKS4gKi8KIAkJY2ZnICY9IH4oUzVQX0NJSU1HQ1BUX0NQVF9GUkVOX0VOQUJMRSB8CiAJCQkgUzVQX0NJSU1HQ1BUX0NQVF9GUk1PRF9DTlQpOwogCQljZmcgfD0gUzVQX0NJSU1HQ1BUX0lNR0NQVEVOOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzEzNC9zYWE3MTM0LWNhcmRzLmMKaW5kZXggNjFjNjAwNy4uNTBmMWJlMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTM0L3NhYTcxMzQtY2FyZHMuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxMzQvc2FhNzEzNC1jYXJkcy5jCkBAIC03NDYwLDcgKzc0NjAsNyBAQAogCQkJCWRldi0+dHVuZXJfdHlwZSA9IFRVTkVSX1BISUxJUFNfRk0xMjE2TUVfTUszOwogCQkJCWJyZWFrOwogCQkJZGVmYXVsdDoKLQkJCQlwcmludGsoS0VSTl9FUlIgIiVzIENhbnQgZGV0ZXJtaW5lIHR1bmVyIHR5cGUgJXggZnJvbSBFRVBST01cbiIsIGRldi0+bmFtZSwgdHVuZXJfdCk7CisJCQkJcHJpbnRrKEtFUk5fRVJSICIlcyBDYW4ndCBkZXRlcm1pbmUgdHVuZXIgdHlwZSAleCBmcm9tIEVFUFJPTVxuIiwgZGV2LT5uYW1lLCB0dW5lcl90KTsKIAkJCX0KIAkJfSBlbHNlIGlmICgoZGF0YVsxXSAhPSAwKSAmJiAoZGF0YVsxXSAhPSAweGZmKSkgewogCQkJLyogbmV3IGNvbmZpZyBzdHJ1Y3R1cmUgKi8KQEAgLTc0ODAsNyArNzQ4MCw3IEBACiAJCQkJCXByaW50ayhLRVJOX0lORk8gIiVzIEJvYXJkIGhhcyBEVkItVFxuIiwgZGV2LT5uYW1lKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6Ci0JCQkJcHJpbnRrKEtFUk5fRVJSICIlcyBDYW50IGRldGVybWluZSB0dW5lciB0eXBlICV4IGZyb20gRUVQUk9NXG4iLCBkZXYtPm5hbWUsIHR1bmVyX3QpOworCQkJCXByaW50ayhLRVJOX0VSUiAiJXMgQ2FuJ3QgZGV0ZXJtaW5lIHR1bmVyIHR5cGUgJXggZnJvbSBFRVBST01cbiIsIGRldi0+bmFtZSwgdHVuZXJfdCk7CiAJCQl9CiAJCX0gZWxzZSB7CiAJCQlwcmludGsoS0VSTl9FUlIgIiVzIHVuZXhwZWN0ZWQgY29uZmlnIHN0cnVjdHVyZVxuIiwgZGV2LT5uYW1lKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LWNtZC5jIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKaW5kZXggNmE0YzIxNy4uNjJmYWM3ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtY21kLmMKQEAgLTI1Nyw3ICsyNTcsNyBAQAogfQogCiAvKiBXYWl0IGZvciBhIHNpZ25hbCBldmVudCwgd2l0aG91dCBob2xkaW5nIGEgbXV0ZXguIEVpdGhlciByZXR1cm4gVElNRU9VVCBpZgotICogdGhlIGV2ZW50IG5ldmVyIG9jY3VyZWQsIG9yIFNBQV9PSyBpZiBpdCB3YXMgc2lnbmFsZWQgZHVyaW5nIHRoZSB3YWl0LgorICogdGhlIGV2ZW50IG5ldmVyIG9jY3VycmVkLCBvciBTQUFfT0sgaWYgaXQgd2FzIHNpZ25hbGVkIGR1cmluZyB0aGUgd2FpdC4KICAqLwogaW50IHNhYTcxNjRfY21kX3dhaXQoc3RydWN0IHNhYTcxNjRfZGV2ICpkZXYsIHU4IHNlcW5vKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtZncuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LWZ3LmMKaW5kZXggYjM2OTMwMC4uYTI2NmJmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtZncuYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxNjQvc2FhNzE2NC1mdy5jCkBAIC00NDQsNyArNDQ0LDcgQEAKIAkJcHJpbnRrKEtFUk5fSU5GTyAiIC5SZXNlcnZlZCA9IDB4JXhcbiIsIGhkci0+cmVzZXJ2ZWQpOwogCQlwcmludGsoS0VSTl9JTkZPICIgLlZlcnNpb24gPSAweCV4XG4iLCBoZHItPnZlcnNpb24pOwogCi0JCS8qIFJldHJlaXZlIGJvb3Rsb2FkZXIgaWYgcmVxZCAqLworCQkvKiBSZXRyaWV2ZSBib290bG9hZGVyIGlmIHJlcWQgKi8KIAkJaWYgKChoZHItPmZpcm13YXJlc2l6ZSA9PSAwKSAmJiAoaGRyLT5ic2xzaXplID09IDApKQogCQkJLyogU2Vjb25kIGJvb3Rsb2FkZXIgaW4gdGhlIGZpcm13YXJlIGZpbGUgKi8KIAkJCWZpbGVzaXplID0gaGRyLT5yZXNlcnZlZCAqIDE2OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtdHlwZXMuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc2FhNzE2NC9zYWE3MTY0LXR5cGVzLmgKaW5kZXggZGYxZDI5OS4uMWQyMTQwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby9zYWE3MTY0L3NhYTcxNjQtdHlwZXMuaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3NhYTcxNjQvc2FhNzE2NC10eXBlcy5oCkBAIC00MTIsNyArNDEyLDcgQEAKIAl1OAlTdGFydExpbmU7IC8qIE5UU0MgU3RhcnQgPSAxMCAqLwogCXU4CUVuZExpbmU7IC8qIE5UU0MgPSAyMSAqLwogCXU4CUZpZWxkUmF0ZTsgLyogNjAgZm9yIE5UU0MgKi8KLQl1OAliTnVtTGluZXM7IC8qIFVuc2VkIC0gc2NoZWR1bGVkIGZvciByZW1vdmFsICovCisJdTgJYk51bUxpbmVzOyAvKiBVbnVzZWQgLSBzY2hlZHVsZWQgZm9yIHJlbW92YWwgKi8KIH0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CiAKIHN0cnVjdCB0bUNvbVJlc1Byb2JlQ29tbWl0IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX2NvcmUuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX2NvcmUuYwppbmRleCBjZTU2YTFjLi4wZTA3YzQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NuOWMxMDIvc245YzEwMl9jb3JlLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby9zbjljMTAyL3NuOWMxMDJfY29yZS5jCkBAIC0xODEwLDcgKzE4MTAsNyBAQAogCQkvKgogCQkgICBXZSB3aWxsIG5vdCByZWxlYXNlIHRoZSAib3Blbl9tdXRleCIgbG9jaywgc28gdGhhdCBvbmx5IG9uZQogCQkgICBwcm9jZXNzIGNhbiBiZSBpbiB0aGUgd2FpdCBxdWV1ZSBiZWxvdy4gVGhpcyB3YXkgdGhlIHByb2Nlc3MKLQkJICAgd2lsbCBiZSBzbGVlcGluZyB3aGlsZSBob2xkaW5nIHRoZSBsb2NrLCB3aXRob3V0IGxvb3NpbmcgaXRzCisJCSAgIHdpbGwgYmUgc2xlZXBpbmcgd2hpbGUgaG9sZGluZyB0aGUgbG9jaywgd2l0aG91dCBsb3NpbmcgaXRzCiAJCSAgIHByaW9yaXR5IGFmdGVyIGFueSB3YWtlX3VwKCkuCiAJCSovCiAJCWVyciA9IHdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV9leGNsdXNpdmUoY2FtLT53YWl0X29wZW4sCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3NuOWMxMDIvc245YzEwMl9zZW5zb3IuaCBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCmluZGV4IDdmMzg1NDkuLjM2Nzk5NzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vc245YzEwMi9zbjljMTAyX3NlbnNvci5oCkBAIC0xODAsNyArMTgwLDcgQEAKIAkgICBJdCBzaG91bGQgYmUgdXNlZCB0byBpbml0aWFsaXplIHRoZSBzZW5zb3Igb25seSwgYnV0IG1heSBhbHNvCiAJICAgY29uZmlndXJlIHBhcnQgb2YgdGhlIFNOOUMxWFggY2hpcCBpZiBuZWNlc3NhcnkuIFlvdSBkb24ndCBuZWVkIHRvCiAJICAgc2V0dXAgcGljdHVyZSBzZXR0aW5ncyBsaWtlIGJyaWdodG5lc3MsIGNvbnRyYXN0LCBldGMuLiBoZXJlLCBpZgotCSAgIHRoZSBjb3JyaXNwb25kaW5nIGNvbnRyb2xzIGFyZSBpbXBsZW1lbnRlZCAoc2VlIGJlbG93KSwgc2luY2UKKwkgICB0aGUgY29ycmVzcG9uZGluZyBjb250cm9scyBhcmUgaW1wbGVtZW50ZWQgKHNlZSBiZWxvdyksIHNpbmNlCiAJICAgdGhleSBhcmUgYWRqdXN0ZWQgaW4gdGhlIGNvcmUgZHJpdmVyIGJ5IGNhbGxpbmcgdGhlIHNldF9jdHJsKCkKIAkgICBtZXRob2QgYWZ0ZXIgaW5pdCgpLCB3aGVyZSB0aGUgYXJndW1lbnRzIGFyZSB0aGUgZGVmYXVsdCB2YWx1ZXMKIAkgICBzcGVjaWZpZWQgaW4gdGhlIHY0bDJfcXVlcnljdHJsIGxpc3Qgb2Ygc3VwcG9ydGVkIGNvbnRyb2xzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90Y204MjV4LmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYwppbmRleCA1NDY4MWE1Li5iNmVlMWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3RjbTgyNXguYwpAQCAtNDkzLDcgKzQ5Myw3IEBACiAJaW50IHZhbCwgcjsKIAlzdHJ1Y3QgdmNvbnRyb2wgKmx2YzsKIAotCS8qIGV4cG9zdXJlIHRpbWUgaXMgc3BlY2lhbCwgc3ByZWFkIGFjY3Jvc3MgMiByZWdpc3RlcnMgKi8KKwkvKiBleHBvc3VyZSB0aW1lIGlzIHNwZWNpYWwsIHNwcmVhZCBhY3Jvc3MgMiByZWdpc3RlcnMgKi8KIAlpZiAodmMtPmlkID09IFY0TDJfQ0lEX0VYUE9TVVJFKSB7CiAJCWludCB2YWxfbG93ZXIsIHZhbF91cHBlcjsKIApAQCAtNTM4LDcgKzUzOCw3IEBACiAJc3RydWN0IHZjb250cm9sICpsdmM7CiAJaW50IHZhbCA9IHZjLT52YWx1ZTsKIAotCS8qIGV4cG9zdXJlIHRpbWUgaXMgc3BlY2lhbCwgc3ByZWFkIGFjY3Jvc3MgMiByZWdpc3RlcnMgKi8KKwkvKiBleHBvc3VyZSB0aW1lIGlzIHNwZWNpYWwsIHNwcmVhZCBhY3Jvc3MgMiByZWdpc3RlcnMgKi8KIAlpZiAodmMtPmlkID09IFY0TDJfQ0lEX0VYUE9TVVJFKSB7CiAJCWludCB2YWxfbG93ZXIsIHZhbF91cHBlcjsKIAkJdmFsX2xvd2VyID0gdmFsICYgVENNODI1WF9NQVNLKFRDTTgyNVhfRVNSU1BEX0wpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby90dmF1ZGlvLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYwppbmRleCBhMjVlMmI1Li5jNDZhM2JiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYworKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3R2YXVkaW8uYwpAQCAtMTA1OCwxMSArMTA1OCwxMSBAQAogI2RlZmluZSBUREE5ODc1X01WUiAgICAgICAgIDB4MWIgIC8qIE1haW4gdm9sdW1lIGRyb2l0ZSAqLwogI2RlZmluZSBUREE5ODc1X01CQSAgICAgICAgIDB4MWQgIC8qIE1haW4gQmFzc2UgKi8KICNkZWZpbmUgVERBOTg3NV9NVFIgICAgICAgICAweDFlICAvKiBNYWluIHRyZWJsZSAqLwotI2RlZmluZSBUREE5ODc1X0FDUyAgICAgICAgIDB4MWYgIC8qIEF1eGlsYXJ5IGNoYW5uZWwgc2VsZWN0IChGTSkgMGIwMDAwMDAwKi8KLSNkZWZpbmUgVERBOTg3NV9BVkwgICAgICAgICAweDIwICAvKiBBdXhpbGFyeSB2b2x1bWUgZ2F1Y2hlICovCi0jZGVmaW5lIFREQTk4NzVfQVZSICAgICAgICAgMHgyMSAgLyogQXV4aWxhcnkgdm9sdW1lIGRyb2l0ZSAqLwotI2RlZmluZSBUREE5ODc1X0FCQSAgICAgICAgIDB4MjIgIC8qIEF1eGlsYXJ5IEJhc3NlICovCi0jZGVmaW5lIFREQTk4NzVfQVRSICAgICAgICAgMHgyMyAgLyogQXV4aWxhcnkgdHJlYmxlICovCisjZGVmaW5lIFREQTk4NzVfQUNTICAgICAgICAgMHgxZiAgLyogQXV4aWxpYXJ5IGNoYW5uZWwgc2VsZWN0IChGTSkgMGIwMDAwMDAwKi8KKyNkZWZpbmUgVERBOTg3NV9BVkwgICAgICAgICAweDIwICAvKiBBdXhpbGlhcnkgdm9sdW1lIGdhdWNoZSAqLworI2RlZmluZSBUREE5ODc1X0FWUiAgICAgICAgIDB4MjEgIC8qIEF1eGlsaWFyeSB2b2x1bWUgZHJvaXRlICovCisjZGVmaW5lIFREQTk4NzVfQUJBICAgICAgICAgMHgyMiAgLyogQXV4aWxpYXJ5IEJhc3NlICovCisjZGVmaW5lIFREQTk4NzVfQVRSICAgICAgICAgMHgyMyAgLyogQXV4aWxpYXJ5IHRyZWJsZSAqLwogCiAjZGVmaW5lIFREQTk4NzVfTVNSICAgICAgICAgMHgwMiAgLyogTW9uaXRvciBzZWxlY3QgcmVnaXN0ZXIgKi8KICNkZWZpbmUgVERBOTg3NV9DMU1TQiAgICAgICAweDAzICAvKiBDYXJyaWVyIDEgKEZNKSBmcmVxdWVuY3kgcmVnaXN0ZXIgTVNCICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3V2Yy91dmNfdmlkZW8uYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCmluZGV4IDU0NWMwMjkuLmZjNzY2YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdXZjL3V2Y192aWRlby5jCkBAIC0zOTQsMTEgKzM5NCwxMSBAQAogICoKICAqIHV2Y192aWRlb19kZWNvZGVfZW5kIGlzIGNhbGxlZCB3aXRoIGhlYWRlciBkYXRhIGF0IHRoZSBlbmQgb2YgYSBidWxrIG9yCiAgKiBpc29jaHJvbm91cyBwYXlsb2FkLiBJdCBwZXJmb3JtcyBhbnkgYWRkaXRpb25hbCBoZWFkZXIgZGF0YSBwcm9jZXNzaW5nIGFuZAotICogcmV0dXJucyAwIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBhbiBlcnJvciBvY2N1cmVkLiBBcyBoZWFkZXIgZGF0YSBoYXZlCisgKiByZXR1cm5zIDAgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIGlmIGFuIGVycm9yIG9jY3VycmVkLiBBcyBoZWFkZXIgZGF0YSBoYXZlCiAgKiBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkIGJ5IHV2Y192aWRlb19kZWNvZGVfc3RhcnQsIHRoaXMgZnVuY3Rpb25zIGlzbid0CiAgKiByZXF1aXJlZCB0byBwZXJmb3JtIHNhbml0eSBjaGVja3MgYSBzZWNvbmQgdGltZS4KICAqCi0gKiBGb3IgaXNvY2hyb25vdXMgdHJhbnNmZXJzIHdoZXJlIGEgcGF5bG9hZCBpcyBhbHdheXMgdHJhbnNmZXJlZCBpbiBhIHNpbmdsZQorICogRm9yIGlzb2Nocm9ub3VzIHRyYW5zZmVycyB3aGVyZSBhIHBheWxvYWQgaXMgYWx3YXlzIHRyYW5zZmVycmVkIGluIGEgc2luZ2xlCiAgKiBVUkIsIHRoZSB0aHJlZSBmdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgaW4gYSByb3cuCiAgKgogICogVG8gbGV0IHRoZSBkZWNvZGVyIHByb2Nlc3MgaGVhZGVyIGRhdGEgYW5kIHVwZGF0ZSBpdHMgaW50ZXJuYWwgc3RhdGUgZXZlbgpAQCAtNjU4LDcgKzY1OCw3IEBACiAJCQkJCQkJICAgIGJ1Zik7CiAJCX0gd2hpbGUgKHJldCA9PSAtRUFHQUlOKTsKIAotCQkvKiBJZiBhbiBlcnJvciBvY2N1cmVkIHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuICovCisJCS8qIElmIGFuIGVycm9yIG9jY3VycmVkIHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBheWxvYWQuICovCiAJCWlmIChyZXQgPCAwIHx8IGJ1ZiA9PSBOVUxMKSB7CiAJCQlzdHJlYW0tPmJ1bGsuc2tpcF9wYXlsb2FkID0gMTsKIAkJfSBlbHNlIHsKQEAgLTgyMSw3ICs4MjEsNyBAQAogCQlyZXR1cm4gc3RyZWFtLT51cmJfc2l6ZSAvIHBzaXplOwogCiAJLyogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIHBhY2tldHMuIEJ1bGsgZW5kcG9pbnRzIG1pZ2h0IHRyYW5zZmVyIFVWQwotCSAqIHBheWxvYWRzIGFjY3Jvc3MgbXVsdGlwbGUgVVJCcy4KKwkgKiBwYXlsb2FkcyBhY3Jvc3MgbXVsdGlwbGUgVVJCcy4KIAkgKi8KIAlucGFja2V0cyA9IERJVl9ST1VORF9VUChzaXplLCBwc2l6ZSk7CiAJaWYgKG5wYWNrZXRzID4gVVZDX01BWF9QQUNLRVRTKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3Y0bDItaW9jdGwuYwppbmRleCBhMDFlZDM5Li41MDZlZGNjMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby92NGwyLWlvY3RsLmMKQEAgLTQ4LDcgKzQ4LDcgQEAKIAkJCXByaW50ayhLRVJOX0NPTlQgIiVzOiAiIGZtdCwgdmZkLT5uYW1lLCAjIyBhcmcpO1wKIAkJfSB3aGlsZSAoMCkKIAotLyogWmVybyBvdXQgdGhlIGVuZCBvZiB0aGUgc3RydWN0IHBvaW50ZWQgdG8gYnkgcC4gIEV2ZXJ0aGluZyBhZnRlciwgYnV0CisvKiBaZXJvIG91dCB0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgcG9pbnRlZCB0byBieSBwLiAgRXZlcnl0aGluZyBhZnRlciwgYnV0CiAgKiBub3QgaW5jbHVkaW5nLCB0aGUgc3BlY2lmaWVkIGZpZWxkIGlzIGNsZWFyZWQuICovCiAjZGVmaW5lIENMRUFSX0FGVEVSX0ZJRUxEKHAsIGZpZWxkKSBcCiAJbWVtc2V0KCh1OCAqKShwKSArIG9mZnNldG9mKHR5cGVvZigqKHApKSwgZmllbGQpICsgc2l6ZW9mKChwKS0+ZmllbGQpLCBcCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lZGlhL3ZpZGVvL3ZweDMyMjAuYyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCmluZGV4IDc1MzAxZDEuLmNhMzcyZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCisrKyBiL2RyaXZlcnMvbWVkaWEvdmlkZW8vdnB4MzIyMC5jCkBAIC0zNTQsNyArMzU0LDcgQEAKIAogCS8qIEhlcmUgd2UgYmFjayB1cCB0aGUgaW5wdXQgc2VsZWN0aW9uIGJlY2F1c2UgaXQgZ2V0cwogCSAgIG92ZXJ3cml0dGVuIHdoZW4gd2UgZmlsbCB0aGUgcmVnaXN0ZXJzIHdpdGggdGhlCi0JICAgY2hvb3NlbiB2aWRlbyBub3JtICovCisJICAgY2hvc2VuIHZpZGVvIG5vcm0gKi8KIAl0ZW1wX2lucHV0ID0gdnB4MzIyMF9mcF9yZWFkKHNkLCAweGYyKTsKIAogCXY0bDJfZGJnKDEsIGRlYnVnLCBzZCwgInNfc3RkICVsbHhcbiIsICh1bnNpZ25lZCBsb25nIGxvbmcpc3RkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vdmlkZW9jb2RlYy5oIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKaW5kZXggYjY1NGJmZi4uZGVmNTU1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi92aWRlb2NvZGVjLmgKQEAgLTU3LDcgKzU3LDcgQEAKICAgIHRoZXJmb3IgdGhleSBtYXkgbm90IGJlIGluaXRpYWxpemVkLgogCiAgICBUaGUgb3RoZXIgZnVuY3Rpb25zIGFyZSBqdXN0IGZvciBjb252ZW5pZW5jZSwgYXMgdGhleSBhcmUgZm9yIHN1cmUgdXNlZCBieQotICAgbW9zdC9hbGwgb2YgdGhlIGNvZGVjcy4gVGhlIGxhc3Qgb25lcyBtYXkgYmUgb21taXRlZCwgdG9vLgorICAgbW9zdC9hbGwgb2YgdGhlIGNvZGVjcy4gVGhlIGxhc3Qgb25lcyBtYXkgYmUgb21pdHRlZCwgdG9vLgogCiAgICBTZWUgdGhlIHN0cnVjdHVyZSBkZWNsYXJhdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgd2hpY2ggZGF0YSBoYXMKICAgIHRvIGJlIHNldCB1cCBmb3IgdGhlIG1hc3RlciBhbmQgdGhlIHNsYXZlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbi5oIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbi5oCmluZGV4IDRiYjM2OGUuLmYzZjY0MDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW4uaAorKysgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuLmgKQEAgLTI1OSw3ICsyNTksNyBAQAogCXN0cnVjdCB2ZmVfcG9sYXJpdHkgdmZlX3BvbDsKIAl1OCBncGlvX3BvbFtaUl9HUElPX01BWF07CiAKLQkvKiBpcyB0aGUgL0dXUyBsaW5lIGNvbmVjdGVkPyAqLworCS8qIGlzIHRoZSAvR1dTIGxpbmUgY29ubmVjdGVkPyAqLwogCXU4IGd3c19ub3RfY29ubmVjdGVkOwogCiAJLyogYXZzNmV5ZXMgbXV4IHNldHRpbmcgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMgYi9kcml2ZXJzL21lZGlhL3ZpZGVvL3pvcmFuL3pvcmFuX2RyaXZlci5jCmluZGV4IDdjMzkyMWQuLjI3NzFkODEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVkaWEvdmlkZW8vem9yYW4vem9yYW5fZHJpdmVyLmMKKysrIGIvZHJpdmVycy9tZWRpYS92aWRlby96b3Jhbi96b3Jhbl9kcml2ZXIuYwpAQCAtMTI1NCw3ICsxMjU0LDcgQEAKIHsKIAlzdHJ1Y3Qgem9yYW4gKnpyID0gZmgtPnpyOwogCi0JLyogSWYgdGhlcmUgaXMgbm90aGluZyB0byBkbywgcmV0dXJuIGltbWVkaWF0bHkgKi8KKwkvKiBJZiB0aGVyZSBpcyBub3RoaW5nIHRvIGRvLCByZXR1cm4gaW1tZWRpYXRlbHkgKi8KIAlpZiAoKG9uICYmIGZoLT5vdmVybGF5X2FjdGl2ZSAhPSBaT1JBTl9GUkVFKSB8fAogCSAgICAoIW9uICYmIGZoLT5vdmVybGF5X2FjdGl2ZSA9PSBaT1JBTl9GUkVFKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2NvcmUvbXNwcm9fYmxvY2suYyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCmluZGV4IDU3YjQyYmYuLjRhMTkwOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svY29yZS9tc3Byb19ibG9jay5jCkBAIC05NzMsNyArOTczLDcgQEAKIH0KIAogLyogTWVtb3J5IGFsbG9jYXRlZCBmb3IgYXR0cmlidXRlcyBieSB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBmcmVlZCBieQotICogbXNwcm9fYmxvY2tfZGF0YV9jbGVhciwgbm8gbWF0dGVyIGlmIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIHN1Y2NlZGVkCisgKiBtc3Byb19ibG9ja19kYXRhX2NsZWFyLCBubyBtYXR0ZXIgaWYgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3Mgc3VjY2VlZGVkCiAgKiBvciBmYWlsZWQuCiAgKi8KIHN0YXRpYyBpbnQgbXNwcm9fYmxvY2tfcmVhZF9hdHRyaWJ1dGVzKHN0cnVjdCBtZW1zdGlja19kZXYgKmNhcmQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5jIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L3I1OTIuYwppbmRleCA3MDBkNDIwLi42NjhmNWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5jCisrKyBiL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmMKQEAgLTc5Niw3ICs3OTYsNyBAQAogCWlmIChtZW1zdGlja19hZGRfaG9zdChob3N0KSkKIAkJZ290byBlcnJvcjc7CiAKLQltZXNzYWdlKCJkcml2ZXIgc3VjY2VzZnVsbHkgbG9hZGVkIik7CisJbWVzc2FnZSgiZHJpdmVyIHN1Y2Nlc3NmdWxseSBsb2FkZWQiKTsKIAlyZXR1cm4gMDsKIGVycm9yNzoKIAlmcmVlX2lycShkZXYtPmlycSwgZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmggYi9kcml2ZXJzL21lbXN0aWNrL2hvc3QvcjU5Mi5oCmluZGV4IGVlZTI2NGUuLmM1NzI2YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVtc3RpY2svaG9zdC9yNTkyLmgKKysrIGIvZHJpdmVycy9tZW1zdGljay9ob3N0L3I1OTIuaApAQCAtNDMsMTIgKzQzLDEyIEBACiAKIAkJCQkJCQkvKiBFcnJvciBkZXRlY3Rpb24gdmlhIENSQyAqLwogI2RlZmluZSBSNTkyX1NUQVRVU19TRU5EX0VSUgkJKDEgPDwgMjQpCS8qIFNlbmQgZmFpbGVkICovCi0jZGVmaW5lIFI1OTJfU1RBVFVTX1JFQ1ZfRVJSCQkoMSA8PCAyNSkJLyogUmVjaWV2ZSBmYWlsZWQgKi8KKyNkZWZpbmUgUjU5Ml9TVEFUVVNfUkVDVl9FUlIJCSgxIDw8IDI1KQkvKiBSZWNlaXZlIGZhaWxlZCAqLwogCiAJCQkJCQkJLyogQ2FyZCBzdGF0ZSAqLwotI2RlZmluZSBSNTkyX1NUQVRVU19SRFkJCQkoMSA8PCAyOCkJLyogUkRZIHNpZ25hbCByZWNpZXZlZCAqLworI2RlZmluZSBSNTkyX1NUQVRVU19SRFkJCQkoMSA8PCAyOCkJLyogUkRZIHNpZ25hbCByZWNlaXZlZCAqLwogI2RlZmluZSBSNTkyX1NUQVRVU19DRUQJCQkoMSA8PCAyOSkJLyogSU5UOiBDb21tYW5kIGRvbmUgKHNlcmlhbCBtb2RlKSovCi0jZGVmaW5lIFI1OTJfU1RBVFVTX1NGSUZPX0lOUFVUCQkoMSA8PCAzMCkJLyogU21hbGwgZmlmbyByZWNpZXZlZCBkYXRhKi8KKyNkZWZpbmUgUjU5Ml9TVEFUVVNfU0ZJRk9fSU5QVVQJCSgxIDw8IDMwKQkvKiBTbWFsbCBmaWZvIHJlY2VpdmVkIGRhdGEqLwogCiAjZGVmaW5lIFI1OTJfU0ZJRk9fU0laRQkJCTMyCQkvKiB0b3RhbCBzaXplIG9mIHNtYWxsIGZpZm8gaXMgMzIgYnl0ZXMgKi8KICNkZWZpbmUgUjU5Ml9TRklGT19QQUNLRVQJCTgJCS8qIHBhY2tldCBzaXplIG9mIHNtYWxsIGZpZm8gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfZmMuaCBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfZmMuaAppbmRleCBmYWNlNmU3Li4wM2JlOGIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL2xzaS9tcGlfbG9nX2ZjLmgKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19mYy5oCkBAIC0zOCw4ICszOCw4IEBACiB7CiAgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9CQVNFICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAwMDAwLAogICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfT1VUX09GX09SREVSX0ZSQU1FID0gMHgyMDAwMDAwMSwgLyogcmVjZWl2ZWQgYW4gb3V0IG9mIG9yZGVyIGZyYW1lIC0gdW5zdXBwb3J0ZWQgKi8KLSAgICBNUElfSU9DTE9HSU5GT19GQ19JTklUX0VSUk9SX0JBRF9TVEFSVF9PRl9GUkFNRSA9IDB4MjAwMDAwMDIsIC8qIEJhZCBSeCBGcmFtZSwgYmFkIHN0YXJ0IG9mIGZyYW1lIHByaW1hdGl2ZSAqLwotICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfQkFEX0VORF9PRl9GUkFNRSAgID0gMHgyMDAwMDAwMywgLyogQmFkIFJ4IEZyYW1lLCBiYWQgZW5kIG9mIGZyYW1lIHByaW1hdGl2ZSAqLworICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfQkFEX1NUQVJUX09GX0ZSQU1FID0gMHgyMDAwMDAwMiwgLyogQmFkIFJ4IEZyYW1lLCBiYWQgc3RhcnQgb2YgZnJhbWUgcHJpbWl0aXZlICovCisgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9FUlJPUl9CQURfRU5EX09GX0ZSQU1FICAgPSAweDIwMDAwMDAzLCAvKiBCYWQgUnggRnJhbWUsIGJhZCBlbmQgb2YgZnJhbWUgcHJpbWl0aXZlICovCiAgICAgTVBJX0lPQ0xPR0lORk9fRkNfSU5JVF9FUlJPUl9PVkVSX1JVTiAgICAgICAgICAgPSAweDIwMDAwMDA0LCAvKiBCYWQgUnggRnJhbWUsIG92ZXJydW4gKi8KICAgICBNUElfSU9DTE9HSU5GT19GQ19JTklUX0VSUk9SX1JYX09USEVSICAgICAgICAgICA9IDB4MjAwMDAwMDUsIC8qIE90aGVyIGVycm9ycyBjYXVnaHQgYnkgSU9DIHdoaWNoIHJlcXVpcmUgcmV0cmllcyAqLwogICAgIE1QSV9JT0NMT0dJTkZPX0ZDX0lOSVRfRVJST1JfU1VCUFJPQ19ERUFEICAgICAgID0gMHgyMDAwMDAwNiwgLyogTWFpbiBwcm9jZXNzb3IgY291bGQgbm90IGluaXRpYWxpemUgc3ViLXByb2Nlc3NvciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19zYXMuaCBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbHNpL21waV9sb2dfc2FzLmgKaW5kZXggOGIwNDgxMC4uZjYyOTYwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9sc2kvbXBpX2xvZ19zYXMuaAorKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL2xzaS9tcGlfbG9nX3Nhcy5oCkBAIC01Niw5ICs1Niw5IEBACiAjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfTk9fRkxBU0hfQVZBSUxBQkxFICAgICAgICAgKDB4MDAwM0UwMDApIC8qIFRyaWVkIHRvIHVwbG9hZCBmcm9tIGZsYXNoLCBidXQgdGhlcmUgaXMgbm9uZSAqLwogI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX1VOS05PV05fSU1BR0VfVFlQRSAgICAgICAgICgweDAwMDNFMDAxKSAvKiBJbWFnZVR5cGUgZmllbGQgY29udGVudHMgd2VyZSBpbnZhbGlkICovCiAjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfV1JPTkdfSU1BR0VfU0laRSAgICAgICAgICAgKDB4MDAwM0UwMDIpIC8qIEltYWdlU2l6ZSBmaWVsZCBpbiBUQ1NHRSB3YXMgYmFkL29mZnNldCBpbiBNZmdQZyA0IHdhcyB3cm9uZyAqLwotI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX0VOVElSRV9GTEFTSF9VUExPQURfRkFJTEVEICgweDAwMDNFMDAzKSAvKiBFcnJvciBvY2N1cmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gdXBsb2FkIHRoZSBlbnRpcmUgZmxhc2ggKi8KLSNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9GV1VQTE9BRF9SRUdJT05fVVBMT0FEX0ZBSUxFRCAgICAgICAoMHgwMDAzRTAwNCkgLyogRXJyb3Igb2NjdXJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwbG9hZCBzaW5nbGUgZmxhc2ggcmVnaW9uICovCi0jZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfRE1BX0ZBSUxVUkUgICAgICAgICAgICAgICAgKDB4MDAwM0UwMDUpIC8qIFByb2JsZW0gb2NjdXJlZCB3aGlsZSBETUFpbmcgRlcgdG8gaG9zdCBtZW1vcnkgKi8KKyNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9GV1VQTE9BRF9FTlRJUkVfRkxBU0hfVVBMT0FEX0ZBSUxFRCAoMHgwMDAzRTAwMykgLyogRXJyb3Igb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byB1cGxvYWQgdGhlIGVudGlyZSBmbGFzaCAqLworI2RlZmluZSBJT1BfTE9HSU5GT19DT0RFX0ZXVVBMT0FEX1JFR0lPTl9VUExPQURfRkFJTEVEICAgICAgICgweDAwMDNFMDA0KSAvKiBFcnJvciBvY2N1cnJlZCB3aGlsZSBhdHRlbXB0aW5nIHRvIHVwbG9hZCBzaW5nbGUgZmxhc2ggcmVnaW9uICovCisjZGVmaW5lIElPUF9MT0dJTkZPX0NPREVfRldVUExPQURfRE1BX0ZBSUxVUkUgICAgICAgICAgICAgICAgKDB4MDAwM0UwMDUpIC8qIFByb2JsZW0gb2NjdXJyZWQgd2hpbGUgRE1BaW5nIEZXIHRvIGhvc3QgbWVtb3J5ICovCiAKICNkZWZpbmUgSU9QX0xPR0lORk9fQ09ERV9ESUFHX01TR19FUlJPUiAgICAgICAgICAgICAgICAgICAgICAoMHgwMDA0MDAwMCkgLyogRXJyb3IgaGFuZGxpbmcgZGlhZyBtc2cgLSBvcidkIHdpdGggZGlhZyBzdGF0dXMgKi8KIApAQCAtMTg3LDggKzE4Nyw4IEBACiAjZGVmaW5lIFBMX0xPR0lORk9fU1VCX0NPREVfQlJFQUtfT05fSU5DT01QTEVURV9CUkVBS19SQ1ZEICAgKDB4MDAwMDUwMDApCiAKICNkZWZpbmUgUExfTE9HSU5GT19DT0RFX0VOQ0xfTUdNVF9TTVBfRlJBTUVfRkFJTFVSRSAgICAgICAgICAoMHgwMDIwMDAwMCkgLyogQ2FuJ3QgZ2V0IFNNUCBGcmFtZSAqLwotI2RlZmluZSBQTF9MT0dJTkZPX0NPREVfRU5DTF9NR01UX1NNUF9SRUFEX0VSUk9SICAgICAgICAgICAgICgweDAwMjAwMDEwKSAvKiBFcnJvciBvY2N1cmVkIG9uIFNNUCBSZWFkICovCi0jZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1dSSVRFX0VSUk9SICAgICAgICAgICAgKDB4MDAyMDAwMjApIC8qIEVycm9yIG9jY3VyZWQgb24gU01QIFdyaXRlICovCisjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1JFQURfRVJST1IgICAgICAgICAgICAgKDB4MDAyMDAwMTApIC8qIEVycm9yIG9jY3VycmVkIG9uIFNNUCBSZWFkICovCisjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfU01QX1dSSVRFX0VSUk9SICAgICAgICAgICAgKDB4MDAyMDAwMjApIC8qIEVycm9yIG9jY3VycmVkIG9uIFNNUCBXcml0ZSAqLwogI2RlZmluZSBQTF9MT0dJTkZPX0NPREVfRU5DTF9NR01UX05PVF9TVVBQT1JURURfT05fRU5DTCAgICAgICgweDAwMjAwMDQwKSAvKiBFbmNsIE1nbXQgc2VydmljZXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBXV0lEICovCiAjZGVmaW5lIFBMX0xPR0lORk9fQ09ERV9FTkNMX01HTVRfQUREUl9NT0RFX05PVF9TVVBQT1JURUQgICAgKDB4MDAyMDAwNTApIC8qIEFkZHJlc3MgTW9kZSBub3Qgc3VwcG9yZWQgKi8KICNkZWZpbmUgUExfTE9HSU5GT19DT0RFX0VOQ0xfTUdNVF9CQURfU0xPVF9OVU0gICAgICAgICAgICAgICAoMHgwMDIwMDA2MCkgLyogSW52YWxpZCBTbG90IE51bWJlciBpbiBTRVAgTXNnICovCkBAIC0yMDcsOCArMjA3LDggQEAKICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfUkVDRUlWRURfTkFDS19GUk9NX1NMQVZFICAgICAgICAgICAoMHgwMDIwMDEwMykgLyogU0VQIE5BQ0snZCwgaXQgaXMgYnVzeSAqLwogI2RlZmluZSBQTF9MT0dJTkZPX0RBX1NFUF9ESURfTk9UX1JFQ0VJVkVfQUNLICAgICAgICAgICAgICAgICgweDAwMjAwMTA0KSAvKiBTRVAgZGlkbid0IHJjdi4gQUNLIChMYXN0IFJjdmQgQml0ID0gMSkgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfQkFEX1NUQVRVU19IRFJfQ0hLU1VNICAgICAgICAgICAgICAoMHgwMDIwMDEwNSkgLyogU0VQIHN0b3BwZWQgb3Igc2VudCBiYWQgY2hrc3VtIGluIEhkciAqLwotI2RlZmluZSBQTF9MT0dJTkZPX0RBX1NFUF9TVE9QX09OX0RBVEEgICAgICAgICAgICAgICAgICAgICAgICgweDAwMjAwMTA2KSAvKiBTRVAgc3RvcHBlZCB3aGlsZSB0cmFuc2ZlcmluZyBkYXRhICovCi0jZGVmaW5lIFBMX0xPR0lORk9fREFfU0VQX1NUT1BfT05fU0VOU0VfREFUQSAgICAgICAgICAgICAgICAgKDB4MDAyMDAxMDcpIC8qIFNFUCBzdG9wcGVkIHdoaWxlIHRyYW5zZmVyaW5nIHNlbnNlIGRhdGEgKi8KKyNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfU1RPUF9PTl9EQVRBICAgICAgICAgICAgICAgICAgICAgICAoMHgwMDIwMDEwNikgLyogU0VQIHN0b3BwZWQgd2hpbGUgdHJhbnNmZXJyaW5nIGRhdGEgKi8KKyNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfU1RPUF9PTl9TRU5TRV9EQVRBICAgICAgICAgICAgICAgICAoMHgwMDIwMDEwNykgLyogU0VQIHN0b3BwZWQgd2hpbGUgdHJhbnNmZXJyaW5nIHNlbnNlIGRhdGEgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfVU5TVVBQT1JURURfU0NTSV9TVEFUVVNfMSAgICAgICAgICAoMHgwMDIwMDEwOCkgLyogU0VQIHJldHVybmVkIHVua25vd24gc2NzaSBzdGF0dXMgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfVU5TVVBQT1JURURfU0NTSV9TVEFUVVNfMiAgICAgICAgICAoMHgwMDIwMDEwOSkgLyogU0VQIHJldHVybmVkIHVua25vd24gc2NzaSBzdGF0dXMgKi8KICNkZWZpbmUgUExfTE9HSU5GT19EQV9TRVBfQ0hLU1VNX0VSUk9SX0FGVEVSX1NUT1AgICAgICAgICAgICAoMHgwMDIwMDEwQSkgLyogU0VQIHJldHVybmVkIGJhZCBjaGtzdW0gYWZ0ZXIgU1RPUCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRiYXNlLmMgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwppbmRleCBlYzgwODBjLi5mYTE1ZTg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGJhc2UuYwpAQCAtMzQzNSw3ICszNDM1LDcgQEAKICAqCUlmIG1lbW9yeSBoYXMgYWxyZWFkeSBiZWVuIGFsbG9jYXRlZCwgdGhlIHNhbWUgKGNhY2hlZCkgdmFsdWUKICAqCWlzIHJldHVybmVkLgogICoKLSAqCVJldHVybiAwIGlmIHN1Y2Nlc3NmdWxsLCBvciBub24temVybyBmb3IgZmFpbHVyZQorICoJUmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bCwgb3Igbm9uLXplcm8gZm9yIGZhaWx1cmUKICAqKi8KIGludAogbXB0X2FsbG9jX2Z3X21lbW9yeShNUFRfQURBUFRFUiAqaW9jLCBpbnQgc2l6ZSkKQEAgLTY5MzIsNyArNjkzMiw3IEBACiAgKglNZXNzYWdlIFVuaXQgUmVzZXQgLSBpbnN0cnVjdHMgdGhlIElPQyB0byByZXNldCB0aGUgUmVwbHkgUG9zdCBhbmQKICAqCUZyZWUgRklGTydzLiBBbGwgdGhlIE1lc3NhZ2UgRnJhbWVzIG9uIFJlcGx5IEZyZWUgRklGTyBhcmUgZGlzY2FyZGVkLgogICoJQWxsIHBvc3RlZCBidWZmZXJzIGFyZSBmcmVlZCwgYW5kIGV2ZW50IG5vdGlmaWNhdGlvbiBpcyB0dXJuZWQgb2ZmLgotICoJSU9DIGRvZXNudCByZXBseSB0byBhbnkgb3V0c3RhbmRpbmcgcmVxdWVzdC4gVGhpcyB3aWxsIHRyYW5zZmVyIElPQworICoJSU9DIGRvZXNuJ3QgcmVwbHkgdG8gYW55IG91dHN0YW5kaW5nIHJlcXVlc3QuIFRoaXMgd2lsbCB0cmFuc2ZlciBJT0MKICAqCXRvIFJFQURZIHN0YXRlLgogICoqLwogaW50CkBAIC03OTA1LDcgKzc5MDUsNyBAQAogCQkgICAgIk93bmVyIiwgCQkJCQkvKiAxNWggKi8KIAkJIk9wZW4gVHJhbnNtaXQgRE1BIEFib3J0IiwJCQkvKiAxNmggKi8KIAkJIklPIERldmljZSBNaXNzaW5nIERlbGF5IFJldHJ5IiwJCS8qIDE3aCAqLwotCQkiSU8gQ2FuY2VsbGVkIER1ZSB0byBSZWNpZXZlIEVycm9yIiwJCS8qIDE4aCAqLworCQkiSU8gQ2FuY2VsbGVkIER1ZSB0byBSZWNlaXZlIEVycm9yIiwJCS8qIDE4aCAqLwogCQlOVUxMLAkJCQkJCS8qIDE5aCAqLwogCQlOVUxMLAkJCQkJCS8qIDFBaCAqLwogCQlOVUxMLAkJCQkJCS8qIDFCaCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0Y3RsLmMKaW5kZXggODc4YmRhMC4uNmU2ZTE2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRjdGwuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvZnVzaW9uL21wdGN0bC5jCkBAIC05ODUsNyArOTg1LDcgQEAKIAlSZXBseU1zZyA9IChwRldEb3dubG9hZFJlcGx5X3QpaW9jcC0+aW9jdGxfY21kcy5yZXBseTsKIAlpb2NzdGF0ID0gbGUxNl90b19jcHUoUmVwbHlNc2ctPklPQ1N0YXR1cykgJiBNUElfSU9DU1RBVFVTX01BU0s7CiAJaWYgKGlvY3N0YXQgPT0gTVBJX0lPQ1NUQVRVU19TVUNDRVNTKSB7Ci0JCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJGL1cgdXBkYXRlIHN1Y2Nlc3NmdWxsIVxuIiwgaW9jcC0+bmFtZSk7CisJCXByaW50ayhNWUlPQ19zX0lORk9fRk1UICJGL1cgdXBkYXRlIHN1Y2Nlc3NmdWwhXG4iLCBpb2NwLT5uYW1lKTsKIAkJcmV0dXJuIDA7CiAJfSBlbHNlIGlmIChpb2NzdGF0ID09IE1QSV9JT0NTVEFUVVNfSU5WQUxJRF9GVU5DVElPTikgewogCQlwcmludGsoTVlJT0Nfc19XQVJOX0ZNVCAiSG1tbS4uLiAgRi9XIGRvd25sb2FkIG5vdCBzdXBwb3J0ZWQhPyFcbiIsCkBAIC0yNDA3LDcgKzI0MDcsNyBAQAogCX0KIAogCS8qIG1mIGlzIG51bGwgaWYgY29tbWFuZCBpc3N1ZWQgc3VjY2Vzc2Z1bGx5Ci0JICogb3RoZXJ3aXNlLCBmYWlsdXJlIG9jY3VyZWQgYWZ0ZXIgbWYgYWNxdWlyZWQuCisJICogb3RoZXJ3aXNlLCBmYWlsdXJlIG9jY3VycmVkIGFmdGVyIG1mIGFjcXVpcmVkLgogCSAqLwogCWlmIChtZikKIAkJbXB0X2ZyZWVfbXNnX2ZyYW1lKGlvYywgbWYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzYXMuYyBiL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2FzLmMKaW5kZXggZjVhMTRhZi4uNjZmOTQxMjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9mdXNpb24vbXB0c2FzLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2Z1c2lvbi9tcHRzYXMuYwpAQCAtMzA3LDcgKzMwNyw3IEBACiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW9jLT5md19ldmVudF9sb2NrLCBmbGFncyk7CiB9CiAKLS8qIGZyZWUgbWVtb3J5IGFzc29pY2F0ZWQgdG8gYSBzYXMgZmlybXdhcmUgZXZlbnQgKi8KKy8qIGZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgdG8gYSBzYXMgZmlybXdhcmUgZXZlbnQgKi8KIHN0YXRpYyB2b2lkCiBtcHRzYXNfZnJlZV9md19ldmVudChNUFRfQURBUFRFUiAqaW9jLCBzdHJ1Y3QgZndfZXZlbnRfd29yayAqZndfZXZlbnQpCiB7CkBAIC0xMDk0LDcgKzEwOTQsNyBAQAogLyoqCiAgKiBtcHRzYXNfdGFyZ2V0X3Jlc2V0X3F1ZXVlCiAgKgotICogUmVjZWl2ZSByZXF1ZXN0IGZvciBUQVJHRVRfUkVTRVQgYWZ0ZXIgcmVjaWV2aW5nIGFuIGZpcm13YXJlCisgKiBSZWNlaXZlIHJlcXVlc3QgZm9yIFRBUkdFVF9SRVNFVCBhZnRlciByZWNlaXZpbmcgYW4gZmlybXdhcmUKICAqIGV2ZW50IE5PVF9SRVNQT05ESU5HX0VWRU5ULCB0aGVuIHB1dCBjb21tYW5kIGluIGxpbmsgbGlzdAogICogYW5kIHF1ZXVlIGlmIHRhc2tfcXVldWUgYWxyZWFkeSBpbiB1c2UuCiAgKgpAQCAtMTQwMyw3ICsxNDAzLDcgQEAKIC8qKgogICoJbXB0c2FzX2FkZF9lbmRfZGV2aWNlIC0gcmVwb3J0IGEgbmV3IGVuZCBkZXZpY2UgdG8gc2FzIHRyYW5zcG9ydCBsYXllcgogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwaHlfaW5mbzogZGVjcmliZXMgYXR0YWNoZWQgZGV2aWNlCisgKglAcGh5X2luZm86IGRlc2NyaWJlcyBhdHRhY2hlZCBkZXZpY2UKICAqCiAgKglyZXR1cm4gKDApIHN1Y2Nlc3MgKDEpIGZhaWx1cmUKICAqCkBAIC0xNDgxLDcgKzE0ODEsNyBAQAogLyoqCiAgKgltcHRzYXNfZGVsX2VuZF9kZXZpY2UgLSByZXBvcnQgYSBkZWxldGVkIGVuZCBkZXZpY2UgdG8gc2FzIHRyYW5zcG9ydCBsYXllcgogICoJQGlvYzogUG9pbnRlciB0byBNUFRfQURBUFRFUiBzdHJ1Y3R1cmUKLSAqCUBwaHlfaW5mbzogZGVjcmliZXMgYXR0YWNoZWQgZGV2aWNlCisgKglAcGh5X2luZm86IGRlc2NyaWJlcyBhdHRhY2hlZCBkZXZpY2UKICAqCiAgKiovCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9SRUFETUUgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQppbmRleCA5MTFmYzMwLi5mMDcyYThlIDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQorKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL1JFQURNRQpAQCAtNTMsNyArNTMsNyBAQAogQm94SGlsbCBDb3Jwb3JhdGlvbgogCUxvYW4gb2YgaW5pdGlhbCBGaWJyZUNoYW5uZWwgZGlzayBhcnJheSB1c2VkIGZvciBkZXZlbG9wbWVudCB3b3JrLgogCi1FdXJvcGVhbiBDb21pc3Npb24KK0V1cm9wZWFuIENvbW1pc3Npb24KIAlGdW5kaW5nIHRoZSB3b3JrIGRvbmUgYnkgdGhlIFVuaXZlcnNpdHkgb2YgSGVsc2lua2kKIAogU3lzS29ubmVjdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9kZXZpY2UuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vZGV2aWNlLmMKaW5kZXggMGVlNDI2NC4uNDU0N2RiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9kZXZpY2UuYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2RldmljZS5jCkBAIC02NSw3ICs2NSw3IEBACiAKIAlyYyA9IGkyb19kZXZpY2VfaXNzdWVfY2xhaW0oZGV2LCBJMk9fQ01EX1VUSUxfQ0xBSU0sIEkyT19DTEFJTV9QUklNQVJZKTsKIAlpZiAoIXJjKQotCQlwcl9kZWJ1ZygiaTJvOiBjbGFpbSBvZiBkZXZpY2UgJWQgc3VjY2VkZWRcbiIsCisJCXByX2RlYnVnKCJpMm86IGNsYWltIG9mIGRldmljZSAlZCBzdWNjZWVkZWRcbiIsCiAJCQkgZGV2LT5sY3RfZGF0YS50aWQpOwogCWVsc2UKIAkJcHJfZGVidWcoImkybzogY2xhaW0gb2YgZGV2aWNlICVkIGZhaWxlZCAlZFxuIiwKQEAgLTExMCw3ICsxMTAsNyBAQAogCX0KIAogCWlmICghcmMpCi0JCXByX2RlYnVnKCJpMm86IGNsYWltIHJlbGVhc2Ugb2YgZGV2aWNlICVkIHN1Y2NlZGVkXG4iLAorCQlwcl9kZWJ1ZygiaTJvOiBjbGFpbSByZWxlYXNlIG9mIGRldmljZSAlZCBzdWNjZWVkZWRcbiIsCiAJCQkgZGV2LT5sY3RfZGF0YS50aWQpOwogCWVsc2UKIAkJcHJfZGVidWcoImkybzogY2xhaW0gcmVsZWFzZSBvZiBkZXZpY2UgJWQgZmFpbGVkICVkXG4iLApAQCAtMjQ4LDcgKzI0OCw3IEBACiAJCQlnb3RvIHVucmVnX2RldjsKIAl9CiAKLQkvKiBjcmVhdGUgdXNlciBlbnRyaWVzIHJlZmVyaW5nIHRvIHRoaXMgZGV2aWNlICovCisJLyogY3JlYXRlIHVzZXIgZW50cmllcyByZWZlcnJpbmcgdG8gdGhpcyBkZXZpY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmMtPmRldmljZXMsIGxpc3QpCiAJICAgIGlmICgodG1wLT5sY3RfZGF0YS51c2VyX3RpZCA9PSBpMm9fZGV2LT5sY3RfZGF0YS50aWQpCiAJCSYmICh0bXAgIT0gaTJvX2RldikpIHsKQEAgLTI2Nyw3ICsyNjcsNyBAQAogCQkJZ290byBybWxpbmsxOwogCX0KIAotCS8qIGNyZWF0ZSBwYXJlbnQgZW50cmllcyByZWZlcmluZyB0byB0aGlzIGRldmljZSAqLworCS8qIGNyZWF0ZSBwYXJlbnQgZW50cmllcyByZWZlcnJpbmcgdG8gdGhpcyBkZXZpY2UgKi8KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHRtcCwgJmMtPmRldmljZXMsIGxpc3QpCiAJICAgIGlmICgodG1wLT5sY3RfZGF0YS5wYXJlbnRfdGlkID09IGkyb19kZXYtPmxjdF9kYXRhLnRpZCkKIAkJJiYgKHRtcCAhPSBpMm9fZGV2KSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmMKaW5kZXggNDdlYzViYy4uNjQzYWQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suYworKysgYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19ibG9jay5jCkBAIC02MTAsNyArNjEwLDcgQEAKIAogCS8qCiAJICogVGhpcyBpcyB0byBkZWFpbCB3aXRoIHRoZSBjYXNlIG9mIGFuIGFwcGxpY2F0aW9uCi0JICogb3BlbmluZyBhIGRldmljZSBhbmQgdGhlbiB0aGUgZGV2aWNlIGRpc3NhcGVhcnMgd2hpbGUKKwkgKiBvcGVuaW5nIGEgZGV2aWNlIGFuZCB0aGVuIHRoZSBkZXZpY2UgZGlzYXBwZWFycyB3aGlsZQogCSAqIGl0J3MgaW4gdXNlLCBhbmQgdGhlbiB0aGUgYXBwbGljYXRpb24gdHJpZXMgdG8gcmVsZWFzZQogCSAqIGl0LiAgZXg6IFVubW91bnRpbmcgYSBkZWxldGVkIFJBSUQgdm9sdW1lIGF0IHJlYm9vdC4KIAkgKiBJZiB3ZSBzZW5kIG1lc3NhZ2VzLCBpdCB3aWxsIGp1c3QgY2F1c2UgRkFJTHMgc2luY2UKQEAgLTcxNyw3ICs3MTcsNyBAQAogCiAvKioKICAqCWkyb19ibG9ja190cmFuc2ZlciAtIFRyYW5zZmVyIGEgcmVxdWVzdCB0by9mcm9tIHRoZSBJMk8gY29udHJvbGxlcgotICoJQHJlcTogdGhlIHJlcXVlc3Qgd2hpY2ggc2hvdWxkIGJlIHRyYW5zZmVyZWQKKyAqCUByZXE6IHRoZSByZXF1ZXN0IHdoaWNoIHNob3VsZCBiZSB0cmFuc2ZlcnJlZAogICoKICAqCVRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhlIHJlcXVlc3QgaW50byBhIEkyTyBtZXNzYWdlLiBUaGUgbmVjZXNzYXJ5CiAgKglETUEgYnVmZmVycyBhcmUgYWxsb2NhdGVkIGFuZCBhZnRlciBldmVyeXRoaW5nIGlzIHNldHVwIHBvc3QgdGhlIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmggYi9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19ibG9jay5oCmluZGV4IDY3ZjkyMWIuLmNmODg3M2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX2Jsb2NrLmgKKysrIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fYmxvY2suaApAQCAtNzMsNyArNzMsNyBAQAogCXN0cnVjdCBpMm9fZGV2aWNlICppMm9fZGV2OwkvKiBwb2ludGVyIHRvIEkyTyBkZXZpY2UgKi8KIAlzdHJ1Y3QgZ2VuZGlzayAqZ2Q7CiAJc3BpbmxvY2tfdCBsb2NrOwkvKiBxdWV1ZSBsb2NrICovCi0Jc3RydWN0IGxpc3RfaGVhZCBvcGVuX3F1ZXVlOwkvKiBsaXN0IG9mIHRyYW5zZmVyZWQsIGJ1dCB1bmZpbmlzaGVkCisJc3RydWN0IGxpc3RfaGVhZCBvcGVuX3F1ZXVlOwkvKiBsaXN0IG9mIHRyYW5zZmVycmVkLCBidXQgdW5maW5pc2hlZAogCQkJCQkgICByZXF1ZXN0cyAqLwogCXVuc2lnbmVkIGludCBvcGVuX3F1ZXVlX2RlcHRoOwkvKiBudW1iZXIgb2YgcmVxdWVzdHMgaW4gdGhlIHF1ZXVlICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYyBiL2RyaXZlcnMvbWVzc2FnZS9pMm8vaTJvX3Njc2kuYwppbmRleCA5N2JkZjgyLi5mMDAzOTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL21lc3NhZ2UvaTJvL2kyb19zY3NpLmMKKysrIGIvZHJpdmVycy9tZXNzYWdlL2kyby9pMm9fc2NzaS5jCkBAIC0yMDQsNyArMjA0LDcgQEAKICAqCWkyb19zY3NpX3Byb2JlIC0gdmVyaWZ5IGlmIGRldiBpcyBhIEkyTyBTQ1NJIGRldmljZSBhbmQgaW5zdGFsbCBpdAogICoJQGRldjogZGV2aWNlIHRvIHZlcmlmeSBpZiBpdCBpcyBhIEkyTyBTQ1NJIGRldmljZQogICoKLSAqCVJldHJpZXZlIGNoYW5uZWwsIGlkIGFuZCBsdW4gZm9yIEkyTyBkZXZpY2UuIElmIGV2ZXJ0aGluZyBnb2VzIHdlbGwKKyAqCVJldHJpZXZlIGNoYW5uZWwsIGlkIGFuZCBsdW4gZm9yIEkyTyBkZXZpY2UuIElmIGV2ZXJ5dGhpbmcgZ29lcyB3ZWxsCiAgKglyZWdpc3RlciB0aGUgSTJPIGRldmljZSBhcyBTQ1NJIGRldmljZSBvbiB0aGUgSTJPIFNDU0kgY29udHJvbGxlci4KICAqCiAgKglSZXR1cm5zIDAgb24gc3VjY2VzcyBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9LY29uZmlnIGIvZHJpdmVycy9tZmQvS2NvbmZpZwppbmRleCBlMmZlYTU4Li4zZWQzZmYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9LY29uZmlnCisrKyBiL2RyaXZlcnMvbWZkL0tjb25maWcKQEAgLTIwMSw3ICsyMDEsNyBAQAogCSAgYXMgY2xvY2sgcmVxdWVzdCBoYW5kc2hha2luZy4KIAogCSAgVGhpcyBkcml2ZXIgdXNlcyBib2FyZC1zcGVjaWZpYyBkYXRhIHRvIGluaXRpYWxpemUgdGhlIHJlc291cmNlcwotCSAgYW5kIGxvYWQgc2NyaXB0cyBjb250cm9saW5nIHdoaWNoIHJlc291cmNlcyBhcmUgc3dpdGNoZWQgb2ZmL29uCisJICBhbmQgbG9hZCBzY3JpcHRzIGNvbnRyb2xsaW5nIHdoaWNoIHJlc291cmNlcyBhcmUgc3dpdGNoZWQgb2ZmL29uCiAJICBvciByZXNldCB3aGVuIGEgc2xlZXAsIHdha2V1cCBvciB3YXJtIHJlc2V0IGV2ZW50IG9jY3Vycy4KIAogY29uZmlnIFRXTDQwMzBfQ09ERUMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL2FiODUwMC1ncGFkYy5jIGIvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKaW5kZXggYmM5M2IyZS4uNjQyMWFkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKKysrIGIvZHJpdmVycy9tZmQvYWI4NTAwLWdwYWRjLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogCS8qIHdhaXQgZm9yIGNvbXBsZXRpb24gb2YgY29udmVyc2lvbiAqLwogCWlmICghd2FpdF9mb3JfY29tcGxldGlvbl90aW1lb3V0KCZncGFkYy0+YWI4NTAwX2dwYWRjX2NvbXBsZXRlLCAyKkhaKSkgewogCQlkZXZfZXJyKGdwYWRjLT5kZXYsCi0JCQkidGltZW91dDogZGlkbnQgcmVjaWV2ZSBHUEFEQyBjb252ZXJzaW9uIGludGVycnVwdFxuIik7CisJCQkidGltZW91dDogZGlkbid0IHJlY2VpdmUgR1BBREMgY29udmVyc2lvbiBpbnRlcnJ1cHRcbiIpOwogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL21mZC9lengtcGNhcC5jIGIvZHJpdmVycy9tZmQvZXp4LXBjYXAuYwppbmRleCBmMmY0MDI5Li40M2E3NmM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9lengtcGNhcC5jCisrKyBiL2RyaXZlcnMvbWZkL2V6eC1wY2FwLmMKQEAgLTE4NSw3ICsxODUsNyBAQAogCQllenhfcGNhcF9yZWFkKHBjYXAsIFBDQVBfUkVHX01TUiwgJm1zcik7CiAJCWV6eF9wY2FwX3JlYWQocGNhcCwgUENBUF9SRUdfSVNSLCAmaXNyKTsKIAotCQkvKiBXZSBjYW50IHNlcnZpY2UvYWNrIGlycXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gcG9ydCAyICovCisJCS8qIFdlIGNhbid0IHNlcnZpY2UvYWNrIGlycXMgdGhhdCBhcmUgYXNzaWduZWQgdG8gcG9ydCAyICovCiAJCWlmICghKHBkYXRhLT5jb25maWcgJiBQQ0FQX1NFQ09ORF9QT1JUKSkgewogCQkJZXp4X3BjYXBfcmVhZChwY2FwLCBQQ0FQX1JFR19JTlRfU0VMLCAmaW50X3NlbCk7CiAJCQlpc3IgJj0gfmludF9zZWw7CkBAIC00NTcsNyArNDU3LDcgQEAKIAlwY2FwLT53b3JrcXVldWUgPSBjcmVhdGVfc2luZ2xldGhyZWFkX3dvcmtxdWV1ZSgicGNhcGQiKTsKIAlpZiAoIXBjYXAtPndvcmtxdWV1ZSkgewogCQlyZXQgPSAtRU5PTUVNOwotCQlkZXZfZXJyKCZzcGktPmRldiwgImNhbnQgY3JlYXRlIHBjYXAgdGhyZWFkXG4iKTsKKwkJZGV2X2Vycigmc3BpLT5kZXYsICJjYW4ndCBjcmVhdGUgcGNhcCB0aHJlYWRcbiIpOwogCQlnb3RvIGZyZWVfcGNhcDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL29tYXAtdXNiLWhvc3QuYyBiL2RyaXZlcnMvbWZkL29tYXAtdXNiLWhvc3QuYwppbmRleCBjYjAxMjA5Li41MzQ1MGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21mZC9vbWFwLXVzYi1ob3N0LmMKKysrIGIvZHJpdmVycy9tZmQvb21hcC11c2ItaG9zdC5jCkBAIC0zMzIsNyArMzMyLDcgQEAKIAlpbnQJCQkJaTsKIAogCWlmICghcGRhdGEpIHsKLQkJZGV2X2VycihkZXYsICJNaXNzaW5nIHBsYXRmcm9tIGRhdGFcbiIpOworCQlkZXZfZXJyKGRldiwgIk1pc3NpbmcgcGxhdGZvcm0gZGF0YVxuIik7CiAJCXJldCA9IC1FTk9NRU07CiAJCWdvdG8gZW5kX3Byb2JlOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYyBiL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYwppbmRleCBjNzY4N2Y2Li41Nzg2ODQxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvcGNmNTA2MzMtY29yZS5jCisrKyBiL2RyaXZlcnMvbWZkL3BjZjUwNjMzLWNvcmUuYwpAQCAtNTEsNyArNTEsNyBAQAogCiB9CiAKLS8qIFJlYWQgYSBibG9jayBvZiB1cHRvIDMyIHJlZ3MgICovCisvKiBSZWFkIGEgYmxvY2sgb2YgdXAgdG8gMzIgcmVncyAgKi8KIGludCBwY2Y1MDYzM19yZWFkX2Jsb2NrKHN0cnVjdCBwY2Y1MDYzMyAqcGNmLCB1OCByZWcsCiAJCQkJCWludCBucl9yZWdzLCB1OCAqZGF0YSkKIHsKQEAgLTY1LDcgKzY1LDcgQEAKIH0KIEVYUE9SVF9TWU1CT0xfR1BMKHBjZjUwNjMzX3JlYWRfYmxvY2spOwogCi0vKiBXcml0ZSBhIGJsb2NrIG9mIHVwdG8gMzIgcmVncyAgKi8KKy8qIFdyaXRlIGEgYmxvY2sgb2YgdXAgdG8gMzIgcmVncyAgKi8KIGludCBwY2Y1MDYzM193cml0ZV9ibG9jayhzdHJ1Y3QgcGNmNTA2MzMgKnBjZiAsIHU4IHJlZywKIAkJCQkJaW50IG5yX3JlZ3MsIHU4ICpkYXRhKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvdHdsNjAzMC1pcnEuYyBiL2RyaXZlcnMvbWZkL3R3bDYwMzAtaXJxLmMKaW5kZXggZmE5MzcwNS4uZGZiYWUzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdHdsNjAzMC1pcnEuYworKysgYi9kcml2ZXJzL21mZC90d2w2MDMwLWlycS5jCkBAIC0yMjksNyArMjI5LDcgQEAKIAl0d2w2MDMwX2ludGVycnVwdF91bm1hc2soVFdMNjAzMF9NTUNERVRFQ1RfSU5UX01BU0ssCiAJCQkJCQlSRUdfSU5UX01TS19TVFNfQik7CiAJLyoKLQkgKiBJbnRpYWxseSBDb25maWd1cmluZyBNTUNfQ1RSTCBmb3IgcmVjZXZpbmcgaW50ZXJydXB0cyAmCisJICogSW5pdGlhbGx5IENvbmZpZ3VyaW5nIE1NQ19DVFJMIGZvciByZWNlaXZpbmcgaW50ZXJydXB0cyAmCiAJICogQ2FyZCBzdGF0dXMgb24gVFdMNjAzMCBmb3IgTU1DMQogCSAqLwogCXJldCA9IHR3bF9pMmNfcmVhZF91OChUV0w2MDMwX01PRFVMRV9JRDAsICZyZWdfdmFsLCBUV0w2MDMwX01NQ0NUUkwpOwpAQCAtMjc1LDcgKzI3NSw3IEBACiAJCS8qIFRXTDYwMzAgcHJvdmlkZSdzIENhcmQgZGV0ZWN0IHN1cHBvcnQgZm9yCiAJCSAqIG9ubHkgTU1DMSBjb250cm9sbGVyLgogCQkgKi8KLQkJcHJfZXJyKCJVbmtvd24gTU1DIGNvbnRyb2xsZXIgJWQgaW4gJXNcbiIsIHBkZXYtPmlkLCBfX2Z1bmNfXyk7CisJCXByX2VycigiVW5rbm93biBNTUMgY29udHJvbGxlciAlZCBpbiAlc1xuIiwgcGRldi0+aWQsIF9fZnVuY19fKTsKIAkJcmV0dXJuIHJldDsKIAl9CiAJLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWZkL3VjYjE0MDBfY29yZS5jIGIvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKaW5kZXggZDczZjg0Yi4uZGFmNjk1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKKysrIGIvZHJpdmVycy9tZmQvdWNiMTQwMF9jb3JlLmMKQEAgLTgsNyArOCw3IEBACiAgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCiAgKgogICogU3BsaXRpbmcgZG9uZSBieTogTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqIElmIHNvbWV0aGluZyBkb2VzbnQgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAorICogSWYgc29tZXRoaW5nIGRvZXNuJ3Qgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAogICogZG9udCBib3RoZXIgTmljb2xhcyBwbGVhc2UgOy0pCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9ibXAwODUuYyBiL2RyaXZlcnMvbWlzYy9ibXAwODUuYwppbmRleCBlY2QyNzZhLi41Zjg5OGNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvYm1wMDg1LmMKKysrIGIvZHJpdmVycy9taXNjL2JtcDA4NS5jCkBAIC0yLDcgKzIsNyBAQAogCiAgICAgVGhpcyBkcml2ZXIgc3VwcG9ydHMgdGhlIGJtcDA4NSBkaWdpdGFsIGJhcm9tZXRyaWMgcHJlc3N1cmUKICAgICBhbmQgdGVtcGVyYXR1cmUgc2Vuc29yIGZyb20gQm9zY2ggU2Vuc29ydGVjLiBUaGUgZGF0YXNoZWV0Ci0gICAgaXMgYXZhbGlhYmxlIGZyb20gdGhlaXIgd2Vic2l0ZToKKyAgICBpcyBhdmFpbGFibGUgZnJvbSB0aGVpciB3ZWJzaXRlOgogICAgIGh0dHA6Ly93d3cuYm9zY2gtc2Vuc29ydGVjLmNvbS9jb250ZW50L2xhbmd1YWdlMS9kb3dubG9hZHMvQlNULUJNUDA4NS1EUzAwMC0wNS5wZGYKIAogICAgIEEgcHJlc3N1cmUgbWVhc3VyZW1lbnQgaXMgaXNzdWVkIGJ5IHJlYWRpbmcgZnJvbSBwcmVzc3VyZTBfaW5wdXQuCkBAIC00MjksNyArNDI5LDcgQEAKIAlpZiAoZXJyKQogCQlnb3RvIGV4aXRfZnJlZTsKIAotCWRldl9pbmZvKCZkYXRhLT5jbGllbnQtPmRldiwgIlN1Y2Nlc2Z1bGx5IGluaXRpYWxpemVkIGJtcDA4NSFcbiIpOworCWRldl9pbmZvKCZkYXRhLT5jbGllbnQtPmRldiwgIlN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZCBibXAwODUhXG4iKTsKIAlnb3RvIGV4aXQ7CiAKIGV4aXRfZnJlZToKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9jMnBvcnQvYzJwb3J0LWR1cmFtYXIyMTUwLmMgYi9kcml2ZXJzL21pc2MvYzJwb3J0L2MycG9ydC1kdXJhbWFyMjE1MC5jCmluZGV4IDMzOGRjYzEuLjc3OGZjM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9jMnBvcnQvYzJwb3J0LWR1cmFtYXIyMTUwLmMKKysrIGIvZHJpdmVycy9taXNjL2MycG9ydC9jMnBvcnQtZHVyYW1hcjIxNTAuYwpAQCAtNDEsNyArNDEsNyBAQAogCQlvdXRiKHYgfCAoQzJEIHwgQzJDSyksIERJUl9QT1JUKTsKIAllbHNlCiAJCS8qIFdoZW4gYWNjZXNzIGlzICJvZmYiIGlzIGltcG9ydGFudCB0aGF0IGJvdGggbGluZXMgYXJlIHNldAotCQkgKiBhcyBpbnB1dHMgb3IgaGktaW1wZWRlbmNlICovCisJCSAqIGFzIGlucHV0cyBvciBoaS1pbXBlZGFuY2UgKi8KIAkJb3V0Yih2ICYgfihDMkQgfCBDMkNLKSwgRElSX1BPUlQpOwogCiAJbXV0ZXhfdW5sb2NrKCZ1cGRhdGVfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5oIGIvZHJpdmVycy9taXNjL2libWFzbS9yZW1vdGUuaAppbmRleCA3MmFjZjVhLi4wMGRiZjFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2MvaWJtYXNtL3JlbW90ZS5oCisrKyBiL2RyaXZlcnMvbWlzYy9pYm1hc20vcmVtb3RlLmgKQEAgLTIwLDcgKzIwLDcgQEAKICAqCiAgKiBBdXRob3I6IE1heCBBc2L2Y2sgPGFtYXhAdXMuaWJtLmNvbT4KICAqCi0gKiBPcmlnbmFsbHkgd3JpdHRlbiBieSBQZXRlIFJleW5vbGRzCisgKiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGV0ZSBSZXlub2xkcwogICovCiAKICNpZm5kZWYgX0lCTUFTTV9SRU1PVEVfSF8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9pd21jMzIwMHRvcC9tYWluLmMgYi9kcml2ZXJzL21pc2MvaXdtYzMyMDB0b3AvbWFpbi5jCmluZGV4IDcyN2FmMDcuLmIxZjQ1NjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy9pd21jMzIwMHRvcC9tYWluLmMKKysrIGIvZHJpdmVycy9taXNjL2l3bWMzMjAwdG9wL21haW4uYwpAQCAtMjY4LDcgKzI2OCw3IEBACiAJCUxPR19JTkZPKHByaXYsIElSUSwgIkFDSyBiYXJrZXIgYXJyaXZlZCAiCiAJCQkJIi0gc3RhcnRpbmcgRlcgZG93bmxvYWRcbiIpOwogCX0gZWxzZSB7IC8qIFJFQk9PVCBiYXJrZXIgKi8KLQkJTE9HX0lORk8ocHJpdiwgSVJRLCAiUmVjaWV2ZWQgcmVib290IGJhcmtlcjogJXhcbiIsIGJhcmtlcik7CisJCUxPR19JTkZPKHByaXYsIElSUSwgIlJlY2VpdmVkIHJlYm9vdCBiYXJrZXI6ICV4XG4iLCBiYXJrZXIpOwogCQlwcml2LT5iYXJrZXIgPSBiYXJrZXI7CiAKIAkJaWYgKGJhcmtlciAmIEJBUktFUl9ETkxPQURfU1lOQ19NU0spIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9rZ2RidHMuYyBiL2RyaXZlcnMvbWlzYy9rZ2RidHMuYwppbmRleCAyN2RjNDYzLi43NGYxNmYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2Mva2dkYnRzLmMKKysrIGIvZHJpdmVycy9taXNjL2tnZGJ0cy5jCkBAIC02NDUsNyArNjQ1LDcgQEAKIAogCXdoaWxlICgqY2hrX3N0ciAhPSAnXDAnICYmICpwdXRfc3RyICE9ICdcMCcpIHsKIAkJLyogSWYgc29tZW9uZSBkb2VzIGEgKiB0byBtYXRjaCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLCBhbGxvdwotCQkgKiBpdCwgb3Igc3RvcCBpZiB0aGUgcmVjaWV2ZWQgc3RyaW5nIGlzIGNvbXBsZXRlLgorCQkgKiBpdCwgb3Igc3RvcCBpZiB0aGUgcmVjZWl2ZWQgc3RyaW5nIGlzIGNvbXBsZXRlLgogCQkgKi8KIAkJaWYgKCpwdXRfc3RyID09ICcjJyB8fCAqY2hrX3N0ciA9PSAnKicpCiAJCQlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWlzYy9zZ2ktZ3J1L2dydWtzZXJ2aWNlcy5jIGIvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1a3NlcnZpY2VzLmMKaW5kZXggMzQ3NDllZS4uOWU5YmRkYWE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnVrc2VydmljZXMuYworKysgYi9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnVrc2VydmljZXMuYwpAQCAtMjI5LDcgKzIyOSw3IEBACiAJYmlkID0gYmxhZGVfaWQgPCAwID8gdXZfbnVtYV9ibGFkZV9pZCgpIDogYmxhZGVfaWQ7CiAJYnMgPSBncnVfYmFzZVtiaWRdOwogCi0JLyogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIG1pZ3JhdGlvbiBvY2N1cmVkIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSBzZW1hICovCisJLyogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIG1pZ3JhdGlvbiBvY2N1cnJlZCB3aGlsZSB3YWl0aW5nIGZvciB0aGUgc2VtYSAqLwogCWRvd25fcmVhZCgmYnMtPmJzX2tndHNfc2VtYSk7CiAJaWYgKGJsYWRlX2lkIDwgMCAmJiBiaWQgIT0gdXZfbnVtYV9ibGFkZV9pZCgpKSB7CiAJCXVwX3JlYWQoJmJzLT5ic19rZ3RzX3NlbWEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL3NnaS1ncnUvZ3J1dGFibGVzLmggYi9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0YWJsZXMuaAppbmRleCA3YThiOTA2Li41YzNjZTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0YWJsZXMuaAorKysgYi9kcml2ZXJzL21pc2Mvc2dpLWdydS9ncnV0YWJsZXMuaApAQCAtMzc5LDcgKzM3OSw3IEBACiAJCQkJCQkgICByZXF1aXJlZCBmb3IgY29udGVzdCAqLwogCWNoYXIJCQl0c19jY2hfcmVxX3NsaWNlOy8qIENDSCBwYWNrZXQgc2xpY2UgKi8KIAljaGFyCQkJdHNfYmxhZGU7CS8qIElmID49IDAsIG1pZ3JhdGUgY29udGV4dCBpZgotCQkJCQkJICAgcmVmIGZyb20gZGlmZXJlbnQgYmxhZGUgKi8KKwkJCQkJCSAgIHJlZiBmcm9tIGRpZmZlcmVudCBibGFkZSAqLwogCWNoYXIJCQl0c19mb3JjZV9jY2hfcmVsb2FkOwogCWNoYXIJCQl0c19jYnJfaWR4W0dSVV9DQlJfQVVdOy8qIENCUiBudW1iZXJzIG9mIGVhY2gKIAkJCQkJCQkgIGFsbG9jYXRlZCBDQiAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9taXNjL3RpLXN0L3N0X2tpbS5jIGIvZHJpdmVycy9taXNjL3RpLXN0L3N0X2tpbS5jCmluZGV4IDllZTRjNzguLmI0NDg4YzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbWlzYy90aS1zdC9zdF9raW0uYworKysgYi9kcml2ZXJzL21pc2MvdGktc3Qvc3Rfa2ltLmMKQEAgLTY0OSw3ICs2NDksNyBAQAogCQkvKiBtdWx0aXBsZSBkZXZpY2VzIGNvdWxkIGV4aXN0ICovCiAJCXN0X2tpbV9kZXZpY2VzW3BkZXYtPmlkXSA9IHBkZXY7CiAJfSBlbHNlIHsKLQkJLyogcGxhdGZvcm0ncyBzdXJlIGFib3V0IGV4aXN0YW5jZSBvZiAxIGRldmljZSAqLworCQkvKiBwbGF0Zm9ybSdzIHN1cmUgYWJvdXQgZXhpc3RlbmNlIG9mIDEgZGV2aWNlICovCiAJCXN0X2tpbV9kZXZpY2VzWzBdID0gcGRldjsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NhcmQvbW1jX3Rlc3QuYyBiL2RyaXZlcnMvbW1jL2NhcmQvbW1jX3Rlc3QuYwppbmRleCBmNWNlZGVjLi5hYmMxYTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9jYXJkL21tY190ZXN0LmMKKysrIGIvZHJpdmVycy9tbWMvY2FyZC9tbWNfdGVzdC5jCkBAIC0yOTIsNyArMjkyLDcgQEAKIH0KIAogLyoKLSAqIEFsbG9jYXRlIGEgbG90IG9mIG1lbW9yeSwgcHJlZmVycmFibHkgbWF4X3N6IGJ1dCBhdCBsZWFzdCBtaW5fc3ouICBJbiBjYXNlCisgKiBBbGxvY2F0ZSBhIGxvdCBvZiBtZW1vcnksIHByZWZlcmFibHkgbWF4X3N6IGJ1dCBhdCBsZWFzdCBtaW5fc3ouICBJbiBjYXNlCiAgKiB0aGVyZSBpc24ndCBtdWNoIG1lbW9yeSBkbyBub3QgZXhjZWVkIDEvMTZ0aCB0b3RhbCBsb3dtZW0gcGFnZXMuICBBbHNvIGRvCiAgKiBub3QgZXhjZWVkIGEgbWF4aW11bSBudW1iZXIgb2Ygc2VnbWVudHMgYW5kIHRyeSBub3QgdG8gbWFrZSBzZWdtZW50cyBtdWNoCiAgKiBiaWdnZXIgdGhhbiBtYXhpbXVtIHNlZ21lbnQgc2l6ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMgYi9kcml2ZXJzL21tYy9jb3JlL21tYy5jCmluZGV4IDE0ZTk1ZjMuLjc3MmQwZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jLmMKKysrIGIvZHJpdmVycy9tbWMvY29yZS9tbWMuYwpAQCAtNTM4LDcgKzUzOCw3IEBACiAKIAkvKgogCSAqIElmIGVuaGFuY2VkX2FyZWFfZW4gaXMgVFJVRSwgaG9zdCBuZWVkcyB0byBlbmFibGUgRVJBU0VfR1JQX0RFRgotCSAqIGJpdC4gIFRoaXMgYml0IHdpbGwgYmUgbG9zdCBldmVyeXRpbWUgYWZ0ZXIgYSByZXNldCBvciBwb3dlciBvZmYuCisJICogYml0LiAgVGhpcyBiaXQgd2lsbCBiZSBsb3N0IGV2ZXJ5IHRpbWUgYWZ0ZXIgYSByZXNldCBvciBwb3dlciBvZmYuCiAJICovCiAJaWYgKGNhcmQtPmV4dF9jc2QuZW5oYW5jZWRfYXJlYV9lbikgewogCQllcnIgPSBtbWNfc3dpdGNoKGNhcmQsIEVYVF9DU0RfQ01EX1NFVF9OT1JNQUwsCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL21tY19vcHMuYyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jX29wcy5jCmluZGV4IDYwODQyZjguLmYzYjIyYmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2NvcmUvbW1jX29wcy5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvbW1jX29wcy5jCkBAIC0xMDUsNyArMTA1LDcgQEAKIAkgKiB0aGF0IGluIGNhc2Ugb2YgaGFyZHdhcmUgdGhhdCB3b24ndCBwdWxsIHVwIERBVDMvbkNTIG90aGVyd2lzZS4KIAkgKgogCSAqIFNQSSBob3N0cyBpZ25vcmUgaW9zLmNoaXBfc2VsZWN0OyBpdCdzIG1hbmFnZWQgYWNjb3JkaW5nIHRvCi0JICogcnVsZXMgdGhhdCBtdXN0IGFjY29tb2RhdGUgbm9uLU1NQyBzbGF2ZXMgd2hpY2ggdGhpcyBsYXllcgorCSAqIHJ1bGVzIHRoYXQgbXVzdCBhY2NvbW1vZGF0ZSBub24tTU1DIHNsYXZlcyB3aGljaCB0aGlzIGxheWVyCiAJICogd29uJ3QgZXZlbiBrbm93IGFib3V0LgogCSAqLwogCWlmICghbW1jX2hvc3RfaXNfc3BpKGhvc3QpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMgYi9kcml2ZXJzL21tYy9jb3JlL3NkaW9faXJxLmMKaW5kZXggYmIxOTJmOS4uYjMwMDE2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tbWMvY29yZS9zZGlvX2lycS5jCisrKyBiL2RyaXZlcnMvbW1jL2NvcmUvc2Rpb19pcnEuYwpAQCAtNDUsNyArNDUsNyBAQAogCQkJc3RydWN0IHNkaW9fZnVuYyAqZnVuYyA9IGNhcmQtPnNkaW9fZnVuY1tpIC0gMV07CiAJCQlpZiAoIWZ1bmMpIHsKIAkJCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogcGVuZGluZyBJUlEgZm9yICIKLQkJCQkJIm5vbi1leGlzdGFudCBmdW5jdGlvblxuIiwKKwkJCQkJIm5vbi1leGlzdGVudCBmdW5jdGlvblxuIiwKIAkJCQkJbW1jX2NhcmRfaWQoY2FyZCkpOwogCQkJCXJldCA9IC1FSU5WQUw7CiAJCQl9IGVsc2UgaWYgKGZ1bmMtPmlycV9oYW5kbGVyKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L2F0bWVsLW1jaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9hdG1lbC1tY2kuYwppbmRleCA4MGJjOWE1Li5lYTM4ODhiIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L2F0bWVsLW1jaS5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvYXRtZWwtbWNpLmMKQEAgLTEyNyw3ICsxMjcsNyBAQAogICogRVZFTlRfREFUQV9DT01QTEVURSBpcyBzZXQgaW4gQHBlbmRpbmdfZXZlbnRzLCBhbGwgZGF0YS1yZWxhdGVkCiAgKiBpbnRlcnJ1cHRzIG11c3QgYmUgZGlzYWJsZWQgYW5kIEBkYXRhX3N0YXR1cyB1cGRhdGVkIHdpdGggYQogICogc25hcHNob3Qgb2YgU1IuIFNpbWlsYXJseSwgYmVmb3JlIEVWRU5UX0NNRF9DT01QTEVURSBpcyBzZXQsIHRoZQotICogQ01EUkRZIGludGVydXB0IG11c3QgYmUgZGlzYWJsZWQgYW5kIEBjbWRfc3RhdHVzIHVwZGF0ZWQgd2l0aCBhCisgKiBDTURSRFkgaW50ZXJydXB0IG11c3QgYmUgZGlzYWJsZWQgYW5kIEBjbWRfc3RhdHVzIHVwZGF0ZWQgd2l0aCBhCiAgKiBzbmFwc2hvdCBvZiBTUiwgYW5kIGJlZm9yZSBFVkVOVF9YRkVSX0NPTVBMRVRFIGNhbiBiZSBzZXQsIHRoZQogICogYnl0ZXNfeGZlcmVkIGZpZWxkIG9mIEBkYXRhIG11c3QgYmUgd3JpdHRlbi4gVGhpcyBpcyBlbnN1cmVkIGJ5CiAgKiB1c2luZyBiYXJyaWVycy4KQEAgLTEwODIsNyArMTA4Miw3IEBACiAJLyoKIAkgKiBVcGRhdGUgdGhlIE1NQyBjbG9jayByYXRlIGlmIG5lY2Vzc2FyeS4gVGhpcyBtYXkgYmUKIAkgKiBuZWNlc3NhcnkgaWYgc2V0X2lvcygpIGlzIGNhbGxlZCB3aGVuIGEgZGlmZmVyZW50IHNsb3QgaXMKLQkgKiBidXN5IHRyYW5zZmVyaW5nIGRhdGEuCisJICogYnVzeSB0cmFuc2ZlcnJpbmcgZGF0YS4KIAkgKi8KIAlpZiAoaG9zdC0+bmVlZF9jbG9ja191cGRhdGUpIHsKIAkJbWNpX3dyaXRlbChob3N0LCBNUiwgaG9zdC0+bW9kZV9yZWcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC9tbWNfc3BpLmMgYi9kcml2ZXJzL21tYy9ob3N0L21tY19zcGkuYwppbmRleCAyZjdmYzBjLi43YzFlMTZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L21tY19zcGkuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L21tY19zcGkuYwpAQCAtOTksNyArOTksNyBAQAogI2RlZmluZSByMWJfdGltZW91dAkJKEhaICogMykKIAogLyogT25lIG9mIHRoZSBjcml0aWNhbCBzcGVlZCBwYXJhbWV0ZXJzIGlzIHRoZSBhbW91bnQgb2YgZGF0YSB3aGljaCBtYXkKLSAqIGJlIHRyYW5zZmVyZWQgaW4gb25lIGNvbW1hbmQuIElmIHRoaXMgdmFsdWUgaXMgdG9vIGxvdywgdGhlIFNEIGNhcmQKKyAqIGJlIHRyYW5zZmVycmVkIGluIG9uZSBjb21tYW5kLiBJZiB0aGlzIHZhbHVlIGlzIHRvbyBsb3csIHRoZSBTRCBjYXJkCiAgKiBjb250cm9sbGVyIGhhcyB0byBkbyBtdWx0aXBsZSBwYXJ0aWFsIGJsb2NrIHdyaXRlcyAoYXJnZ2doISkuIFdpdGgKICAqIHRvZGF5ICgyMDA4KSBTRCBjYXJkcyB0aGVyZSBpcyBsaXR0bGUgc3BlZWQgZ2FpbiBpZiB3ZSB0cmFuc2ZlciBtb3JlCiAgKiB0aGFuIDY0IEtCeXRlcyBhdCBhIHRpbWUuIFNvIHVzZSB0aGlzIHZhbHVlIHVudGlsIHRoZXJlIGlzIGFueSBpbmRpY2F0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL21tYy9ob3N0L3MzY21jaS5jIGIvZHJpdmVycy9tbWMvaG9zdC9zM2NtY2kuYwppbmRleCAxY2NkNGIyLi5hMDRmODdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3MzY21jaS5jCisrKyBiL2RyaXZlcnMvbW1jL2hvc3QvczNjbWNpLmMKQEAgLTg3NCw3ICs4NzQsNyBAQAogCWlmICghbXJxLT5kYXRhKQogCQlnb3RvIHJlcXVlc3RfZG9uZTsKIAotCS8qIENhbHVsYXRlIHRoZSBhbW91dCBvZiBieXRlcyB0cmFuc2ZlciBpZiB0aGVyZSB3YXMgbm8gZXJyb3IgKi8KKwkvKiBDYWxjdWxhdGUgdGhlIGFtb3V0IG9mIGJ5dGVzIHRyYW5zZmVyIGlmIHRoZXJlIHdhcyBubyBlcnJvciAqLwogCWlmIChtcnEtPmRhdGEtPmVycm9yID09IDApIHsKIAkJbXJxLT5kYXRhLT5ieXRlc194ZmVyZWQgPQogCQkJKG1ycS0+ZGF0YS0+YmxvY2tzICogbXJxLT5kYXRhLT5ibGtzeik7CkBAIC04ODIsNyArODgyLDcgQEAKIAkJbXJxLT5kYXRhLT5ieXRlc194ZmVyZWQgPSAwOwogCX0KIAotCS8qIElmIHdlIGhhZCBhbiBlcnJvciB3aGlsZSB0cmFuc2ZlcmluZyBkYXRhIHdlIGZsdXNoIHRoZQorCS8qIElmIHdlIGhhZCBhbiBlcnJvciB3aGlsZSB0cmFuc2ZlcnJpbmcgZGF0YSB3ZSBmbHVzaCB0aGUKIAkgKiBETUEgY2hhbm5lbCBhbmQgdGhlIGZpZm8gdG8gY2xlYXIgb3V0IGFueSBnYXJiYWdlLiAqLwogCWlmIChtcnEtPmRhdGEtPmVycm9yICE9IDApIHsKIAkJaWYgKHMzY21jaV9ob3N0X3VzZWRtYShob3N0KSkKQEAgLTk4MCw3ICs5ODAsNyBAQAogCiAJaWYgKChkYXRhLT5ibGtzeiAmIDMpICE9IDApIHsKIAkJLyogV2UgY2Fubm90IGRlYWwgd2l0aCB1bmFsaWduZWQgYmxvY2tzIHdpdGggbW9yZSB0aGFuCi0JCSAqIG9uZSBibG9jayBiZWluZyB0cmFuc2ZlcmVkLiAqLworCQkgKiBvbmUgYmxvY2sgYmVpbmcgdHJhbnNmZXJyZWQuICovCiAKIAkJaWYgKGRhdGEtPmJsb2NrcyA+IDEpIHsKIAkJCXByX3dhcm5pbmcoIiVzOiBjYW4ndCBkbyBub24td29yZCBzaXplZCBibG9jayB0cmFuc2ZlcnMgKGJsa3N6ICVkKVxuIiwgX19mdW5jX18sIGRhdGEtPmJsa3N6KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3QvdG1pb19tbWNfcGlvLmMgYi9kcml2ZXJzL21tYy9ob3N0L3RtaW9fbW1jX3Bpby5jCmluZGV4IDZhZThkMmYuLjYyZDM3ZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbW1jL2hvc3QvdG1pb19tbWNfcGlvLmMKKysrIGIvZHJpdmVycy9tbWMvaG9zdC90bWlvX21tY19waW8uYwpAQCAtMzU1LDcgKzM1NSw3IEBACiAvKgogICogVGhpcyBjaGlwIGFsd2F5cyByZXR1cm5zIChhdCBsZWFzdD8pIGFzIG11Y2ggZGF0YSBhcyB5b3UgYXNrIGZvci4KICAqIEknbSB1bnN1cmUgd2hhdCBoYXBwZW5zIGlmIHlvdSBhc2sgZm9yIGxlc3MgdGhhbiBhIGJsb2NrLiBUaGlzIHNob3VsZCBiZQotICogbG9va2VkIGludG8gdG8gZW5zdXJlIHRoYXQgYSBmdW5ueSBsZW5ndGggcmVhZCBkb2VzbnQgaG9zZSB0aGUgY29udHJvbGxlci4KKyAqIGxvb2tlZCBpbnRvIHRvIGVuc3VyZSB0aGF0IGEgZnVubnkgbGVuZ3RoIHJlYWQgZG9lc24ndCBob3NlIHRoZSBjb250cm9sbGVyLgogICovCiBzdGF0aWMgdm9pZCB0bWlvX21tY19waW9faXJxKHN0cnVjdCB0bWlvX21tY19ob3N0ICpob3N0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tbWMvaG9zdC93YnNkLmMgYi9kcml2ZXJzL21tYy9ob3N0L3dic2QuYwppbmRleCA3ZmNhMGEzLi42MmU1YTRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL21tYy9ob3N0L3dic2QuYworKysgYi9kcml2ZXJzL21tYy9ob3N0L3dic2QuYwpAQCAtNDg0LDcgKzQ4NCw3IEBACiAKIAkvKgogCSAqIENoZWNrIHRoYXQgd2UgYXJlbid0IGJlaW5nIGNhbGxlZCBhZnRlciB0aGUKLQkgKiBlbnRpcmUgYnVmZmVyIGhhcyBiZWVuIHRyYW5zZmVyZWQuCisJICogZW50aXJlIGJ1ZmZlciBoYXMgYmVlbiB0cmFuc2ZlcnJlZC4KIAkgKi8KIAlpZiAoaG9zdC0+bnVtX3NnID09IDApCiAJCXJldHVybjsKQEAgLTgyOCw3ICs4MjgsNyBAQAogCS8qCiAJICogSWYgdGhpcyBpcyBhIGRhdGEgdHJhbnNmZXIgdGhlIHJlcXVlc3QKIAkgKiB3aWxsIGJlIGZpbmlzaGVkIGFmdGVyIHRoZSBkYXRhIGhhcwotCSAqIHRyYW5zZmVyZWQuCisJICogdHJhbnNmZXJyZWQuCiAJICovCiAJaWYgKGNtZC0+ZGF0YSAmJiAhY21kLT5lcnJvcikgewogCQkvKgpAQCAtOTA0LDcgKzkwNCw3IEBACiAJCQlzZXR1cCAmPSB+V0JTRF9EQVQzX0g7CiAKIAkJCS8qCi0JCQkgKiBXZSBjYW5ub3QgcmVzdW1lIGNhcmQgZGV0ZWN0aW9uIGltbWVkaWF0bHkKKwkJCSAqIFdlIGNhbm5vdCByZXN1bWUgY2FyZCBkZXRlY3Rpb24gaW1tZWRpYXRlbHkKIAkJCSAqIGJlY2F1c2Ugb2YgY2FwYWNpdGFuY2UgYW5kIGRlbGF5cyBpbiB0aGUgY2hpcC4KIAkJCSAqLwogCQkJbW9kX3RpbWVyKCZob3N0LT5pZ25vcmVfdGltZXIsIGppZmZpZXMgKyBIWiAvIDEwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9jaGlwcy9LY29uZmlnIGIvZHJpdmVycy9tdGQvY2hpcHMvS2NvbmZpZwppbmRleCAzNWM2YTIzLi5iMWUzYzI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jaGlwcy9LY29uZmlnCisrKyBiL2RyaXZlcnMvbXRkL2NoaXBzL0tjb25maWcKQEAgLTE5LDcgKzE5LDcgQEAKIAloZWxwCiAJICBUaGlzIG9wdGlvbiBlbmFibGVzIEpFREVDLXN0eWxlIHByb2Jpbmcgb2YgZmxhc2ggY2hpcHMgd2hpY2ggYXJlIG5vdAogCSAgY29tcGF0aWJsZSB3aXRoIHRoZSBDb21tb24gRmxhc2ggSW50ZXJmYWNlLCBidXQgd2lsbCB1c2UgdGhlIGNvbW1vbgotCSAgQ0ZJLXRhcmdldHRlZCBmbGFzaCBkcml2ZXJzIGZvciBhbnkgY2hpcHMgd2hpY2ggYXJlIGlkZW50aWZpZWQgd2hpY2gKKwkgIENGSS10YXJnZXRlZCBmbGFzaCBkcml2ZXJzIGZvciBhbnkgY2hpcHMgd2hpY2ggYXJlIGlkZW50aWZpZWQgd2hpY2gKIAkgIGFyZSBpbiBmYWN0IGNvbXBhdGlibGUgaW4gYWxsIGJ1dCB0aGUgcHJvYmUgbWV0aG9kLiBUaGlzIGFjdHVhbGx5CiAJICBjb3ZlcnMgbW9zdCBBTUQvRnVqaXRzdS1jb21wYXRpYmxlIGNoaXBzIGFuZCBhbHNvIG5vbi1DRkkKIAkgIEludGVsIGNoaXBzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAxLmMgYi9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDEuYwppbmRleCAwOTJhZWYxLi4wOWNiN2M4IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDEuYworKysgYi9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDEuYwpAQCAtMTI0NywxMiArMTI0NywxMiBAQAogCQkJYnJlYWs7CiAKIAkJaWYgKGNoaXAtPmVyYXNlX3N1c3BlbmRlZCAmJiBjaGlwX3N0YXRlID09IEZMX0VSQVNJTkcpICB7Ci0JCQkvKiBFcmFzZSBzdXNwZW5kIG9jY3VyZWQgd2hpbGUgc2xlZXA6IHJlc2V0IHRpbWVvdXQgKi8KKwkJCS8qIEVyYXNlIHN1c3BlbmQgb2NjdXJyZWQgd2hpbGUgc2xlZXA6IHJlc2V0IHRpbWVvdXQgKi8KIAkJCXRpbWVvID0gcmVzZXRfdGltZW87CiAJCQljaGlwLT5lcmFzZV9zdXNwZW5kZWQgPSAwOwogCQl9CiAJCWlmIChjaGlwLT53cml0ZV9zdXNwZW5kZWQgJiYgY2hpcF9zdGF0ZSA9PSBGTF9XUklUSU5HKSAgewotCQkJLyogV3JpdGUgc3VzcGVuZCBvY2N1cmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCisJCQkvKiBXcml0ZSBzdXNwZW5kIG9jY3VycmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCiAJCQl0aW1lbyA9IHJlc2V0X3RpbWVvOwogCQkJY2hpcC0+d3JpdGVfc3VzcGVuZGVkID0gMDsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX2NtZHNldF8wMDAyLmMgYi9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDIuYwppbmRleCBmOWE1MzMxLi4wYjQ5MjY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDIuYworKysgYi9kcml2ZXJzL210ZC9jaGlwcy9jZmlfY21kc2V0XzAwMDIuYwpAQCAtMjYzLDcgKzI2Myw3IEBACiAJc3RydWN0IGNmaV9wcml2YXRlICpjZmkgPSBtYXAtPmZsZHJ2X3ByaXY7CiAKIAkvKgotCSAqIFRoZXNlIGZsYXNoZXMgcmVwb3J0IHR3byBzZXBlcmF0ZSBlcmFzZWJsb2NrIHJlZ2lvbnMgYmFzZWQgb24gdGhlCisJICogVGhlc2UgZmxhc2hlcyByZXBvcnQgdHdvIHNlcGFyYXRlIGVyYXNlYmxvY2sgcmVnaW9ucyBiYXNlZCBvbiB0aGUKIAkgKiBzZWN0b3JfZXJhc2Utc2l6ZSBhbmQgYmxvY2tfZXJhc2Utc2l6ZSwgYWx0aG91Z2ggdGhleSBib3RoIG9wZXJhdGUgb24gdGhlCiAJICogc2FtZSBtZW1vcnkuIFRoaXMgaXMgbm90IGFsbG93ZWQgYWNjb3JkaW5nIHRvIENGSSwgc28gd2UganVzdCBwaWNrIHRoZQogCSAqIHNlY3Rvcl9lcmFzZS1zaXplLgpAQCAtNjExLDggKzYxMSw4IEBACiAgKgogICogTm90ZSB0aGF0IGFueXRoaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBjaGVja2luZyBpZiBubyBiaXRzIGFyZSB0b2dnbGluZwogICogKGluY2x1ZGluZyBjaGVja2luZyBEUTUgZm9yIGFuIGVycm9yIHN0YXR1cykgaXMgdHJpY2t5IHRvIGdldCB3b3JraW5nCi0gKiBjb3JyZWN0bHkgYW5kIGlzIHRoZXJlZm9yZSBub3QgZG9uZQkocGFydGljdWxhcnkgd2l0aCBpbnRlcmxlYXZlZCBjaGlwcwotICogYXMgZWFjaCBjaGlwIG11c3QgYmUgY2hlY2tlZCBpbmRlcGVuZGFudGx5IG9mIHRoZSBvdGhlcnMpLgorICogY29ycmVjdGx5IGFuZCBpcyB0aGVyZWZvcmUgbm90IGRvbmUJKHBhcnRpY3VsYXJseSB3aXRoIGludGVybGVhdmVkIGNoaXBzCisgKiBhcyBlYWNoIGNoaXAgbXVzdCBiZSBjaGVja2VkIGluZGVwZW5kZW50bHkgb2YgdGhlIG90aGVycykuCiAgKi8KIHN0YXRpYyBpbnQgX194aXByYW0gY2hpcF9yZWFkeShzdHJ1Y3QgbWFwX2luZm8gKm1hcCwgdW5zaWduZWQgbG9uZyBhZGRyKQogewpAQCAtNjM1LDggKzYzNSw4IEBACiAgKgogICogTm90ZSB0aGF0IGFueXRoaW5nIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiBjaGVja2luZyBpZiBubyBiaXRzIGFyZSB0b2dnbGluZwogICogKGluY2x1ZGluZyBjaGVja2luZyBEUTUgZm9yIGFuIGVycm9yIHN0YXR1cykgaXMgdHJpY2t5IHRvIGdldCB3b3JraW5nCi0gKiBjb3JyZWN0bHkgYW5kIGlzIHRoZXJlZm9yZSBub3QgZG9uZQkocGFydGljdWxhcnkgd2l0aCBpbnRlcmxlYXZlZCBjaGlwcwotICogYXMgZWFjaCBjaGlwIG11c3QgYmUgY2hlY2tlZCBpbmRlcGVuZGFudGx5IG9mIHRoZSBvdGhlcnMpLgorICogY29ycmVjdGx5IGFuZCBpcyB0aGVyZWZvcmUgbm90IGRvbmUJKHBhcnRpY3VsYXJseSB3aXRoIGludGVybGVhdmVkIGNoaXBzCisgKiBhcyBlYWNoIGNoaXAgbXVzdCBiZSBjaGVja2VkIGluZGVwZW5kZW50bHkgb2YgdGhlIG90aGVycykuCiAgKgogICovCiBzdGF0aWMgaW50IF9feGlwcmFtIGNoaXBfZ29vZChzdHJ1Y3QgbWFwX2luZm8gKm1hcCwgdW5zaWduZWQgbG9uZyBhZGRyLCBtYXBfd29yZCBleHBlY3RlZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV91dGlsLmMgYi9kcml2ZXJzL210ZC9jaGlwcy9jZmlfdXRpbC5jCmluZGV4IDZhZTNkMTEuLjhlNDY0MDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2NoaXBzL2NmaV91dGlsLmMKKysrIGIvZHJpdmVycy9tdGQvY2hpcHMvY2ZpX3V0aWwuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBDb21tb24gRmxhc2ggSW50ZXJmYWNlIHN1cHBvcnQ6Ci0gKiAgIEdlbmVyaWMgdXRpbGl0eSBmdW5jdGlvbnMgbm90IGRlcGVuZGFudCBvbiBjb21tYW5kIHNldAorICogICBHZW5lcmljIHV0aWxpdHkgZnVuY3Rpb25zIG5vdCBkZXBlbmRlbnQgb24gY29tbWFuZCBzZXQKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDIgUmVkIEhhdAogICogQ29weXJpZ2h0IChDKSAyMDAzIFNUTWljcm9lbGVjdHJvbmljcyBMaW1pdGVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9jaGlwcy9qZWRlY19wcm9iZS5jIGIvZHJpdmVycy9tdGQvY2hpcHMvamVkZWNfcHJvYmUuYwppbmRleCA0ZTFiZTUxLi5lYTgzMmVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9jaGlwcy9qZWRlY19wcm9iZS5jCisrKyBiL2RyaXZlcnMvbXRkL2NoaXBzL2plZGVjX3Byb2JlLmMKQEAgLTIwNzUsNyArMjA3NSw3IEBACiAJfQogCiAJLyoKLQkgKiBNYWtlIHN1cmUgdGhlIElEJ3MgZGlzc2FwcGVhciB3aGVuIHRoZSBkZXZpY2UgaXMgdGFrZW4gb3V0IG9mCisJICogTWFrZSBzdXJlIHRoZSBJRCdzIGRpc2FwcGVhciB3aGVuIHRoZSBkZXZpY2UgaXMgdGFrZW4gb3V0IG9mCiAJICogSUQgbW9kZS4gIFRoZSBvbmx5IHRpbWUgdGhpcyBzaG91bGQgZmFpbCB3aGVuIGl0IHNob3VsZCBzdWNjZWVkCiAJICogaXMgd2hlbiB0aGUgSUQncyBhcmUgd3JpdHRlbiBhcyBkYXRhIHRvIHRoZSBzYW1lCiAJICogYWRkcmVzc2VzLiAgRm9yIHRoaXMgcmFyZSBhbmQgdW5mb3J0dW5hdGUgY2FzZSB0aGUgY2hpcApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvYmxvY2sybXRkLmMKaW5kZXggZjI5YTZmOS4uOTcxODNjOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9ibG9jazJtdGQuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2Jsb2NrMm10ZC5jCkBAIC0yOTUsNyArMjk1LDcgQEAKIAlkZXYtPm10ZC5vd25lciA9IFRISVNfTU9EVUxFOwogCiAJaWYgKGFkZF9tdGRfZGV2aWNlKCZkZXYtPm10ZCkpIHsKLQkJLyogRGV2aWNlIGRpZG50IGdldCBhZGRlZCwgc28gZnJlZSB0aGUgZW50cnkgKi8KKwkJLyogRGV2aWNlIGRpZG4ndCBnZXQgYWRkZWQsIHNvIGZyZWUgdGhlIGVudHJ5ICovCiAJCWdvdG8gZGV2aW5pdF9lcnI7CiAJfQogCWxpc3RfYWRkKCZkZXYtPmxpc3QsICZibGttdGRfZGV2aWNlX2xpc3QpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2MyMDAxcGx1cy5jIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2MyMDAxcGx1cy5jCmluZGV4IDcxOWIyOTEuLjhiMzZmYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jMjAwMXBsdXMuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL2RvYzIwMDFwbHVzLmMKQEAgLTkwLDcgKzkwLDcgQEAKIAlyZXR1cm4gcmV0OwogfQogCi0vKiBGb3Igc29tZSByZWFzb24gdGhlIE1pbGxlbm5pdW0gUGx1cyBzZWVtcyB0byBvY2Nhc3Npb25hbGx5IHB1dCBpdHNlbGYKKy8qIEZvciBzb21lIHJlYXNvbiB0aGUgTWlsbGVubml1bSBQbHVzIHNlZW1zIHRvIG9jY2FzaW9uYWxseSBwdXQgaXRzZWxmCiAgKiBpbnRvIHJlc2V0IG1vZGUuIEZvciBtZSB0aGlzIGhhcHBlbnMgcmFuZG9tbHksIHdpdGggbm8gcGF0dGVybiB0aGF0IEkKICAqIGNhbiBkZXRlY3QuIE0tc3lzdGVtcyBzdWdnZXN0IGFsd2F5cyBjaGVjayB0aGlzIG9uIGFueSBibG9jayBsZXZlbAogICogb3BlcmF0aW9uIGFuZCBzZXR0aW5nIHRvIG5vcm1hbCBtb2RlIGlmIGluIHJlc2V0IG1vZGUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9kZXZpY2VzL2RvY2VjYy5jIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9kb2NlY2MuYwppbmRleCBhOTk4MzhiLi4zN2VmMjlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9kZXZpY2VzL2RvY2VjYy5jCisrKyBiL2RyaXZlcnMvbXRkL2RldmljZXMvZG9jZWNjLmMKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgb2YgdGhlIGludGVnZXIgImFscGhhX3RvW2ldIiB3aXRoIGEoMCkgYmVpbmcgdGhlIExTQiBhbmQgYShtLTEpIHRoZSBNU0IuIFRodXMgZm9yCiAgICBleGFtcGxlIHRoZSBwb2x5bm9taWFsIHJlcHJlc2VudGF0aW9uIG9mIEBeNSB3b3VsZCBiZSBnaXZlbiBieSB0aGUgYmluYXJ5CiAgICByZXByZXNlbnRhdGlvbiBvZiB0aGUgaW50ZWdlciAiYWxwaGFfdG9bNV0iLgotICAgICAgICAgICAgICAgICAgIFNpbWlsYXJpbHksIGluZGV4X29mW10gY2FuIGJlIHVzZWQgYXMgZm9sbG93czoKKyAgICAgICAgICAgICAgICAgICBTaW1pbGFybHksIGluZGV4X29mW10gY2FuIGJlIHVzZWQgYXMgZm9sbG93czoKICAgICAgICAgQXMgYWJvdmUsIGxldCBAIHJlcHJlc2VudCB0aGUgcHJpbWl0aXZlIGVsZW1lbnQgb2YgR0YoMl5tKSB0aGF0IGlzCiAgICB0aGUgcm9vdCBvZiB0aGUgcHJpbWl0aXZlIHBvbHlub21pYWwgcCh4KS4gSW4gb3JkZXIgdG8gZmluZCB0aGUgcG93ZXIKICAgIG9mIEAgKGFscGhhKSB0aGF0IGhhcyB0aGUgcG9seW5vbWlhbCByZXByZXNlbnRhdGlvbgpAQCAtMTIxLDcgKzEyMSw3IEBACiAgICBOT1RFOgogICAgICAgICBUaGUgZWxlbWVudCBhbHBoYV90b1syXm0tMV0gPSAwIGFsd2F5cyBzaWduaWZ5aW5nIHRoYXQgdGhlCiAgICByZXByZXNlbnRhdGlvbiBvZiAiQF5pbmZpbml0eSIgPSAwIGlzICgwLDAsMCwuLi4sMCkuCi0gICAgICAgIFNpbWlsYXJpbHksIHRoZSBlbGVtZW50IGluZGV4X29mWzBdID0gQTAgYWx3YXlzIHNpZ25pZnlpbmcKKyAgICAgICAgU2ltaWxhcmx5LCB0aGUgZWxlbWVudCBpbmRleF9vZlswXSA9IEEwIGFsd2F5cyBzaWduaWZ5aW5nCiAgICB0aGF0IHRoZSBwb3dlciBvZiBhbHBoYSB3aGljaCBoYXMgdGhlIHBvbHlub21pYWwgcmVwcmVzZW50YXRpb24KICAgICgwLDAsLi4uLDApIGlzICJpbmZpbml0eSIuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2RldmljZXMvbGFydC5jIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9sYXJ0LmMKaW5kZXggY2FmNjA0MS4uNGI4MjlmOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9sYXJ0LmMKKysrIGIvZHJpdmVycy9tdGQvZGV2aWNlcy9sYXJ0LmMKQEAgLTM1Myw3ICszNTMsNyBAQAogICAgLyogcHV0IHRoZSBmbGFzaCBiYWNrIGludG8gY29tbWFuZCBtb2RlICovCiAgICB3cml0ZTMyIChEQVRBX1RPX0ZMQVNIIChSRUFEX0FSUkFZKSxvZmZzZXQpOwogCi0gICAvKiB3YXMgdGhlIGVyYXNlIHN1Y2Nlc3NmdWxsPyAqLworICAgLyogd2FzIHRoZSBlcmFzZSBzdWNjZXNzZnVsPyAqLwogICAgaWYgKChzdGF0dXMgJiBTVEFUVVNfRVJBU0VfRVJSKSkKIAkgewogCQlwcmludGsgKEtFUk5fV0FSTklORyAiJXM6IGVyYXNlIGVycm9yIGF0IGFkZHJlc3MgMHglLjh4LlxuIixtb2R1bGVfbmFtZSxvZmZzZXQpOwpAQCAtNTA4LDcgKzUwOCw3IEBACiAgICAvKiBwdXQgdGhlIGZsYXNoIGJhY2sgaW50byBjb21tYW5kIG1vZGUgKi8KICAgIHdyaXRlMzIgKERBVEFfVE9fRkxBU0ggKFJFQURfQVJSQVkpLG9mZnNldCk7CiAKLSAgIC8qIHdhcyB0aGUgd3JpdGUgc3VjY2Vzc2Z1bGw/ICovCisgICAvKiB3YXMgdGhlIHdyaXRlIHN1Y2Nlc3NmdWw/ICovCiAgICBpZiAoKHN0YXR1cyAmIFNUQVRVU19QR01fRVJSKSB8fCByZWFkMzIgKG9mZnNldCkgIT0geCkKIAkgewogCQlwcmludGsgKEtFUk5fV0FSTklORyAiJXM6IHdyaXRlIGVycm9yIGF0IGFkZHJlc3MgMHglLjh4LlxuIixtb2R1bGVfbmFtZSxvZmZzZXQpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvZGV2aWNlcy9wbWM1NTEuYyBiL2RyaXZlcnMvbXRkL2RldmljZXMvcG1jNTUxLmMKaW5kZXggZWYwYWJhMC4uNDFiOGNkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvZGV2aWNlcy9wbWM1NTEuYworKysgYi9kcml2ZXJzL210ZC9kZXZpY2VzL3BtYzU1MS5jCkBAIC0zNTEsNyArMzUxLDcgQEAKICAqIEZpeHVwIHJvdXRpbmVzIGZvciB0aGUgVjM3MFBEQwogICogUENJIGRldmljZSBJRCAweDAyMDAxMWIwCiAgKgotICogVGhpcyBmdW5jdGlvbiBiYXNpY2x5IGtpY2sgc3RhcnRzIHRoZSBEUkFNIG9ib2FyZCB0aGUgY2FyZCBhbmQgZ2V0cyBpdAorICogVGhpcyBmdW5jdGlvbiBiYXNpY2FsbHkga2ljayBzdGFydHMgdGhlIERSQU0gb2JvYXJkIHRoZSBjYXJkIGFuZCBnZXRzIGl0CiAgKiByZWFkeSB0byBiZSB1c2VkLiAgQmVmb3JlIHRoaXMgaXMgZG9uZSB0aGUgZGV2aWNlIHJlYWRzIFZFUlkgZXJyYXRpYywgc28KICAqIG11Y2ggdGhhdCBpdCBjYW4gY3Jhc2ggdGhlIExpbnV4IDIuMi54IHNlcmllcyBrZXJuZWxzIHdoZW4gYSB1c2VyIGNhdCdzCiAgKiAvcHJvYy9wY2kgLi4gdGhvdWdoIHRoYXQgaXMgbWFpbmx5IGEga2VybmVsIGJ1ZyBpbiBoYW5kbGluZyB0aGUgUENJIERFVlNFTApAQCAtNTQwLDcgKzU0MCw3IEBACiAKIAkvKgogCSAqIENoZWNrIHRvIG1ha2UgY2VydGFpbiB0aGUgREVWU0VMIGlzIHNldCBjb3JyZWN0bHksIHRoaXMgZGV2aWNlCi0JICogaGFzIGEgdGVuZGFuY3kgdG8gYXNzZXJ0IERFVlNFTCBhbmQgVFJEWSB3aGVuIGEgd3JpdGUgaXMgcGVyZm9ybWVkCisJICogaGFzIGEgdGVuZGVuY3kgdG8gYXNzZXJ0IERFVlNFTCBhbmQgVFJEWSB3aGVuIGEgd3JpdGUgaXMgcGVyZm9ybWVkCiAJICogdG8gdGhlIG1lbW9yeSB3aGVuIG1lbW9yeSBpcyByZWFkLW9ubHkKIAkgKi8KIAlpZiAoKGNtZCAmIFBDSV9TVEFUVVNfREVWU0VMX01BU0spICE9IDB4MCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbHBkZHIvbHBkZHJfY21kcy5jIGIvZHJpdmVycy9tdGQvbHBkZHIvbHBkZHJfY21kcy5jCmluZGV4IDA0ZmRmY2MuLjEyNjc5OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL2xwZGRyL2xwZGRyX2NtZHMuYworKysgYi9kcml2ZXJzL210ZC9scGRkci9scGRkcl9jbWRzLmMKQEAgLTMsNyArMyw3IEBACiAgKiBlcmFzZSwgbG9jay91bmxvY2sgc3VwcG9ydCBmb3IgTFBERFIgZmxhc2ggbWVtb3JpZXMKICAqIChDKSAyMDA4IEtvcm9sZXYgQWxleGV5IDxha29yb2xldkBpbmZyYWRlYWQub3JnPgogICogKEMpIDIwMDggVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BnbWFpbC5jb20+Ci0gKiBNYW55IHRoYW5rcyB0byBSb21hbiBCb3Jpc292IGZvciBpbnRpYWwgZW5hYmxpbmcKKyAqIE1hbnkgdGhhbmtzIHRvIFJvbWFuIEJvcmlzb3YgZm9yIGluaXRpYWwgZW5hYmxpbmcKICAqCiAgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQpAQCAtMTcxLDcgKzE3MSw3IEBACiAJCQltdXRleF9sb2NrKCZjaGlwLT5tdXRleCk7CiAJCX0KIAkJaWYgKGNoaXAtPmVyYXNlX3N1c3BlbmRlZCB8fCBjaGlwLT53cml0ZV9zdXNwZW5kZWQpICB7Ci0JCQkvKiBTdXNwZW5kIGhhcyBvY2N1cmVkIHdoaWxlIHNsZWVwOiByZXNldCB0aW1lb3V0ICovCisJCQkvKiBTdXNwZW5kIGhhcyBvY2N1cnJlZCB3aGlsZSBzbGVlcDogcmVzZXQgdGltZW91dCAqLwogCQkJdGltZW8gPSByZXNldF90aW1lbzsKIAkJCWNoaXAtPmVyYXNlX3N1c3BlbmRlZCA9IGNoaXAtPndyaXRlX3N1c3BlbmRlZCA9IDA7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvY2VpdmEuYyBiL2RyaXZlcnMvbXRkL21hcHMvY2VpdmEuYwppbmRleCBlNWY2NDViLi4yM2Y1NTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL2NlaXZhLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9jZWl2YS5jCkBAIC00Miw3ICs0Miw3IEBACiAgKgogICogUGxlYXNlIG5vdGU6CiAgKiAgMS4gVGhlIGZsYXNoIHNpemUgZ2l2ZW4gc2hvdWxkIGJlIHRoZSBsYXJnZXN0IGZsYXNoIHNpemUgdGhhdCBjYW4KLSAqICAgICBiZSBhY2NvbW9kYXRlZC4KKyAqICAgICBiZSBhY2NvbW1vZGF0ZWQuCiAgKgogICogIDIuIFRoZSBidXMgd2lkdGggbXVzdCBkZWZpbmVkIGluIGNscHNfc2V0dXBfZmxhc2guCiAgKgpAQCAtNTgsNyArNTgsNyBAQAogI2RlZmluZSBCT09UX1BBUlRJVElPTl9TSVpFX0tpQiAgICAgICAoMTYpCiAjZGVmaW5lIFBBUkFNU19QQVJUSVRJT05fU0laRV9LaUIgICAgICg4KQogI2RlZmluZSBLRVJORUxfUEFSVElUSU9OX1NJWkVfS2lCICAgICAoNCoxMjgpCi0vKiBVc2UgYm90aCByZW1haW5nIHBvcnRpb24gb2YgZmlyc3QgZmxhc2gsIGFuZCBhbGwgb2Ygc2Vjb25kIGZsYXNoICovCisvKiBVc2UgYm90aCByZW1haW5pbmcgcG9ydGlvbiBvZiBmaXJzdCBmbGFzaCwgYW5kIGFsbCBvZiBzZWNvbmQgZmxhc2ggKi8KICNkZWZpbmUgUk9PVF9QQVJUSVRJT05fU0laRV9LaUIgICAgICAgKDMqMTI4KSArICg4KjEyOCkKIAogc3RhdGljIHN0cnVjdCBtdGRfcGFydGl0aW9uIGNlaXZhX3BhcnRpdGlvbnNbXSA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvY2ZpX2ZsYWdhZG0uYyBiL2RyaXZlcnMvbXRkL21hcHMvY2ZpX2ZsYWdhZG0uYwppbmRleCBiNGVkODE2Li5mNzEzNDNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL2NmaV9mbGFnYWRtLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9jZmlfZmxhZ2FkbS5jCkBAIC0zMyw3ICszMyw3IEBACiAKIAogLyogV2Ugc3BsaXQgdGhlIGZsYXNoIGNoaXAgdXAgaW50byBmb3VyIHBhcnRzLgotICogMTogYm9vdGxvYWRlciBmaXJ0cyAxMjhrCQkJKDB4MDAwMDAwMDAgLSAweDAwMDFGRkZGKSBzaXplIDB4MDIwMDAwCisgKiAxOiBib290bG9hZGVyIGZpcnN0IDEyOGsJCQkoMHgwMDAwMDAwMCAtIDB4MDAwMUZGRkYpIHNpemUgMHgwMjAwMDAKICAqIDI6IGtlcm5lbCA2NDBrCQkJCQkoMHgwMDAyMDAwMCAtIDB4MDAwQkZGRkYpIHNpemUgMHgwQTAwMDAKICAqIDM6IGNvbXByZXNzZWQgMTUzNmsgcm9vdCByYW1kaXNrCSgweDAwMEMwMDAwIC0gMHgwMDIzRkZGRikgc2l6ZSAweDE4MDAwMAogICogNDogd3JpdGVhYmxlIGRpc2twYXJ0aXRpb24gKGpmZnMpKDB4MDAyNDAwMDAgLSAweDAwM0ZGRkZGKSBzaXplIDB4MUMwMDAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9tYXBzL3BjbWNpYW10ZC5jIGIvZHJpdmVycy9tdGQvbWFwcy9wY21jaWFtdGQuYwppbmRleCA5MTcwMjI5Li42Nzk5ZTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9tYXBzL3BjbWNpYW10ZC5jCisrKyBiL2RyaXZlcnMvbXRkL21hcHMvcGNtY2lhbXRkLmMKQEAgLTQ5Nyw3ICs0OTcsNyBAQAogCQlkZXYtPnBjbWNpYV9tYXAuc2V0X3ZwcCA9IHBjbWNpYW10ZF9zZXRfdnBwOwogCiAJLyogUmVxdWVzdCBhIG1lbW9yeSB3aW5kb3cgZm9yIFBDTUNJQS4gU29tZSBhcmNoaXRldXJlcyBjYW4gbWFwIHdpbmRvd3MKLQkgKiB1cHRvIHRoZSBtYXhpbXVtIHRoYXQgUENNQ0lBIGNhbiBzdXBwb3J0ICg2NE1pQikgLSB0aGlzIGlzIGlkZWFsIGFuZAorCSAqIHVwIHRvIHRoZSBtYXhpbXVtIHRoYXQgUENNQ0lBIGNhbiBzdXBwb3J0ICg2NE1pQikgLSB0aGlzIGlzIGlkZWFsIGFuZAogCSAqIHdlIGFpbSBmb3IgYSB3aW5kb3cgdGhlIHNpemUgb2YgdGhlIHdob2xlIGNhcmQgLSBvdGhlcndpc2Ugd2UgdHJ5CiAJICogc21hbGxlciB3aW5kb3dzIHVudGlsIHdlIHN1Y2NlZWQKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMgYi9kcml2ZXJzL210ZC9tYXBzL3BtY21zcC1mbGFzaC5jCmluZGV4IGFjYjEzZmEuLjY0YWVhNmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvcG1jbXNwLWZsYXNoLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy9wbWNtc3AtZmxhc2guYwpAQCAtMyw3ICszLDcgQEAKICAqIENvbmZpZyB3aXRoIGJvdGggQ0ZJIGFuZCBKRURFQyBkZXZpY2Ugc3VwcG9ydC4KICAqCiAgKiBCYXNpY2FsbHkgcGh5c21hcC5jIHdpdGggdGhlIGFkZGl0aW9uIG9mIHBhcnRpdGlvbnMgYW5kCi0gKiBhbiBhcnJheSBvZiBtYXBwaW5nIGluZm8gdG8gYWNjb21vZGF0ZSBtb3JlIHRoYW4gb25lIGZsYXNoIHR5cGUgcGVyIGJvYXJkLgorICogYW4gYXJyYXkgb2YgbWFwcGluZyBpbmZvIHRvIGFjY29tbW9kYXRlIG1vcmUgdGhhbiBvbmUgZmxhc2ggdHlwZSBwZXIgYm9hcmQuCiAgKgogICogQ29weXJpZ2h0IDIwMDUtMjAwNyBQTUMtU2llcnJhLCBJbmMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbWFwcy9zYzUyMGNkcC5jIGIvZHJpdmVycy9tdGQvbWFwcy9zYzUyMGNkcC5jCmluZGV4IDg1YzFlNTYuLjRkOGFhYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL21hcHMvc2M1MjBjZHAuYworKysgYi9kcml2ZXJzL210ZC9tYXBzL3NjNTIwY2RwLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQAogCX0KIAogCS8qCi0JKiogRmluZCB0aGUgUEFSeHggcmVnaXN0ZXJzIHRoYXQgYXJlIHJlcG9uc2libGUgZm9yIGFjdGl2YXRpbmcKKwkqKiBGaW5kIHRoZSBQQVJ4eCByZWdpc3RlcnMgdGhhdCBhcmUgcmVzcG9uc2libGUgZm9yIGFjdGl2YXRpbmcKIAkqKiBST01DUzAsIFJPTUNTMSBhbmQgQk9PVENTLiBSZXByb2dyYW0gZWFjaCBvZiB0aGVzZSB3aXRoIGEKIAkqKiBuZXcgdmFsdWUgZnJvbSB0aGUgdGFibGUuCiAJKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL21hcHMvdHFtOHh4bC5jIGIvZHJpdmVycy9tdGQvbWFwcy90cW04eHhsLmMKaW5kZXggYzA4ZTE0MC4uMDcxOGRmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbWFwcy90cW04eHhsLmMKKysrIGIvZHJpdmVycy9tdGQvbWFwcy90cW04eHhsLmMKQEAgLTYzLDcgKzYzLDcgQEAKICAqLwogCiAjaWZkZWYgQ09ORklHX01URF9QQVJUSVRJT05TCi0vKiBDdXJyZW50bHksIFRRTTh4eEwgaGFzIHVwdG8gOE1pQiBmbGFzaCAqLworLyogQ3VycmVudGx5LCBUUU04eHhMIGhhcyB1cCB0byA4TWlCIGZsYXNoICovCiBzdGF0aWMgdW5zaWduZWQgbG9uZyB0cW04eHhsX21heF9mbGFzaF9zaXplID0gMHgwMDgwMDAwMDsKIAogLyogcGFydGl0aW9uIGRlZmluaXRpb24gZm9yIGZpcnN0IGZsYXNoIGJhbmsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210ZGJsb2NrLmMgYi9kcml2ZXJzL210ZC9tdGRibG9jay5jCmluZGV4IDFlNzRhZDkuLjMzMjY2MTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL210ZGJsb2NrLmMKKysrIGIvZHJpdmVycy9tdGQvbXRkYmxvY2suYwpAQCAtMTI5LDcgKzEyOSw3IEBACiAJCXJldHVybiByZXQ7CiAKIAkvKgotCSAqIEhlcmUgd2UgY291bGQgYXJndWJseSBzZXQgdGhlIGNhY2hlIHN0YXRlIHRvIFNUQVRFX0NMRUFOLgorCSAqIEhlcmUgd2UgY291bGQgYXJndWFibHkgc2V0IHRoZSBjYWNoZSBzdGF0ZSB0byBTVEFURV9DTEVBTi4KIAkgKiBIb3dldmVyIHRoaXMgY291bGQgbGVhZCB0byBpbmNvbnNpc3RlbmN5IHNpbmNlIHdlIHdpbGwgbm90CiAJICogYmUgbm90aWZpZWQgaWYgdGhpcyBjb250ZW50IGlzIGFsdGVyZWQgb24gdGhlIGZsYXNoIGJ5IG90aGVyCiAJICogbWVhbnMuICBMZXQncyBkZWNsYXJlIGl0IGVtcHR5IGFuZCBsZWF2ZSBidWZmZXJpbmcgdGFza3MgdG8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL210ZGNoYXIuYyBiL2RyaXZlcnMvbXRkL210ZGNoYXIuYwppbmRleCAxNDViM2QwZC4uNGMzNmVmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbXRkY2hhci5jCisrKyBiL2RyaXZlcnMvbXRkL210ZGNoYXIuYwpAQCAtMjM0LDcgKzIzNCw3IEBACiAJCSAqIHRoZSBkYXRhLiBGb3Igb3VyIHVzZXJzcGFjZSB0b29scyBpdCBpcyBpbXBvcnRhbnQKIAkJICogdG8gZHVtcCBhcmVhcyB3aXRoIGVjYyBlcnJvcnMgIQogCQkgKiBGb3Iga2VybmVsIGludGVybmFsIHVzYWdlIGl0IGFsc28gbWlnaHQgcmV0dXJuIC1FVUNMRUFOCi0JCSAqIHRvIHNpZ25hbCB0aGUgY2FsbGVyIHRoYXQgYSBiaXRmbGlwIGhhcyBvY2N1cmVkIGFuZCBoYXMKKwkJICogdG8gc2lnbmFsIHRoZSBjYWxsZXIgdGhhdCBhIGJpdGZsaXAgaGFzIG9jY3VycmVkIGFuZCBoYXMKIAkJICogYmVlbiBjb3JyZWN0ZWQgYnkgdGhlIEVDQyBhbGdvcml0aG0uCiAJCSAqIFVzZXJzcGFjZSBzb2Z0d2FyZSB3aGljaCBhY2Nlc3NlcyBOQU5EIHRoaXMgd2F5CiAJCSAqIG11c3QgYmUgYXdhcmUgb2YgdGhlIGZhY3QgdGhhdCBpdCBkZWFscyB3aXRoIE5BTkQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL25hbmQvS2NvbmZpZwppbmRleCBhOTIwNTRlLi5lZGVjNDU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL0tjb25maWcKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9LY29uZmlnCkBAIC0yMzksNyArMjM5LDcgQEAKIAloZWxwCiAJICBUaGlzIGVuYWJsZXMgdGhlIE5BTkQgZmxhc2ggY29udHJvbGxlciBvbiB0aGUgQkNNIFVNSSBibG9jay4KIAotCSAgTm8gYm9hcmQgc3BlY2ZpYyBzdXBwb3J0IGlzIGRvbmUgYnkgdGhpcyBkcml2ZXIsIGVhY2ggYm9hcmQKKwkgIE5vIGJvYXJkIHNwZWNpZmljIHN1cHBvcnQgaXMgZG9uZSBieSB0aGlzIGRyaXZlciwgZWFjaCBib2FyZAogCSAgbXVzdCBhZHZlcnRpc2UgYSBwbGF0Zm9ybV9kZXZpY2UgZm9yIHRoZSBkcml2ZXIgdG8gYXR0YWNoLgogCiBjb25maWcgTVREX05BTkRfQkNNX1VNSV9IV0NTCmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2Ftcy1kZWx0YS5jIGIvZHJpdmVycy9tdGQvbmFuZC9hbXMtZGVsdGEuYwppbmRleCBhMDY3ZDA5Li5iYzY1YmY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2Ftcy1kZWx0YS5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvYW1zLWRlbHRhLmMKQEAgLTIyOCw3ICsyMjgsNyBAQAogCQkJCQkgIEFNU19ERUxUQV9MQVRDSDJfTkFORF9OQ0UgfAogCQkJCQkgIEFNU19ERUxUQV9MQVRDSDJfTkFORF9OV1ApOwogCi0JLyogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCiAJaWYgKG5hbmRfc2NhbihhbXNfZGVsdGFfbXRkLCAxKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0X210ZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvYXV0Y3B1MTIuYyBiL2RyaXZlcnMvbXRkL25hbmQvYXV0Y3B1MTIuYwppbmRleCA3Yzk1ZGExLi4wOTExY2YwIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL2F1dGNwdTEyLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9hdXRjcHUxMi5jCkBAIC0xNzYsNyArMTc2LDcgQEAKIAkgKi8KIAl0aGlzLT5vcHRpb25zID0gTkFORF9VU0VfRkxBU0hfQkJUOwogCi0JLyogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCiAJaWYgKG5hbmRfc2NhbihhdXRjcHUxMl9tdGQsIDEpKSB7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBvdXRfaW9yOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9jczU1M3hfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9jczU1M3hfbmFuZC5jCmluZGV4IDlmMWI0NTEuLjcxYzM1YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvY3M1NTN4X25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL2NzNTUzeF9uYW5kLmMKQEAgLTI0MSw3ICsyNDEsNyBAQAogCS8qIEVuYWJsZSB0aGUgZm9sbG93aW5nIGZvciBhIGZsYXNoIGJhc2VkIGJhZCBibG9jayB0YWJsZSAqLwogCXRoaXMtPm9wdGlvbnMgPSBOQU5EX1VTRV9GTEFTSF9CQlQgfCBOQU5EX05PX0FVVE9JTkNSOwogCi0JLyogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCiAJaWYgKG5hbmRfc2NhbihuZXdfbXRkLCAxKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0X2lvcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvZGVuYWxpLmMgYi9kcml2ZXJzL210ZC9uYW5kL2RlbmFsaS5jCmluZGV4IDhjOGQzYzguLjQ2MzNmMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvZGVuYWxpLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9kZW5hbGkuYwpAQCAtNzI0LDcgKzcyNCw3IEBACiB9CiAKIC8qIFRoaXMgaGVscGVyIGZ1bmN0aW9uIHNldHVwcyB0aGUgcmVnaXN0ZXJzIGZvciBFQ0MgYW5kIHdoZXRoZXIgb3Igbm90Ci0gKiB0aGUgc3BhcmUgYXJlYSB3aWxsIGJlIHRyYW5zZmVyZWQuICovCisgKiB0aGUgc3BhcmUgYXJlYSB3aWxsIGJlIHRyYW5zZmVycmVkLiAqLwogc3RhdGljIHZvaWQgc2V0dXBfZWNjX2Zvcl94ZmVyKHN0cnVjdCBkZW5hbGlfbmFuZF9pbmZvICpkZW5hbGksIGJvb2wgZWNjX2VuLAogCQkJCWJvb2wgdHJhbnNmZXJfc3BhcmUpCiB7CkBAIC05NjUsNyArOTY1LDcgQEAKIAogCQkJaWYgKEVDQ19FUlJPUl9DT1JSRUNUQUJMRShlcnJfY29ycmVjdGlvbl9pbmZvKSkgewogCQkJCS8qIElmIGVycl9ieXRlIGlzIGxhcmdlciB0aGFuIEVDQ19TRUNUT1JfU0laRSwKLQkJCQkgKiBtZWFucyBlcnJvciBoYXBwZW5kIGluIE9PQiwgc28gd2UgaWdub3JlCisJCQkJICogbWVhbnMgZXJyb3IgaGFwcGVuZWQgaW4gT09CLCBzbyB3ZSBpZ25vcmUKIAkJCQkgKiBpdC4gSXQncyBubyBuZWVkIGZvciB1cyB0byBjb3JyZWN0IGl0CiAJCQkJICogZXJyX2RldmljZSBpcyByZXByZXNlbnRlZCB0aGUgTkFORCBlcnJvcgogCQkJCSAqIGJpdHMgYXJlIGhhcHBlbmVkIGluIGlmIHRoZXJlIGFyZSBtb3JlCkBAIC0xMTA5LDcgKzExMDksNyBAQAogfQogCiAvKiBUaGlzIGlzIHRoZSBjYWxsYmFjayB0aGF0IHRoZSBOQU5EIGNvcmUgY2FsbHMgdG8gd3JpdGUgYSBwYWdlIHdpdGhvdXQgRUNDLgotICogcmF3IGFjY2VzcyBpcyBzaW1pbGlhciB0byBFQ0MgcGFnZSB3cml0ZXMsIHNvIGFsbCB0aGUgd29yayBpcyBkb25lIGluIHRoZQorICogcmF3IGFjY2VzcyBpcyBzaW1pbGFyIHRvIEVDQyBwYWdlIHdyaXRlcywgc28gYWxsIHRoZSB3b3JrIGlzIGRvbmUgaW4gdGhlCiAgKiB3cml0ZV9wYWdlKCkgZnVuY3Rpb24gYWJvdmUuCiAgKi8KIHN0YXRpYyB2b2lkIGRlbmFsaV93cml0ZV9wYWdlX3JhdyhzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgc3RydWN0IG5hbmRfY2hpcCAqY2hpcCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvZGlza29uY2hpcC5jIGIvZHJpdmVycy9tdGQvbmFuZC9kaXNrb25jaGlwLmMKaW5kZXggYjdmOGRlNy4uOTZjMGIzNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9kaXNrb25jaGlwLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9kaXNrb25jaGlwLmMKQEAgLTEzNyw3ICsxMzcsNyBAQAogICoKICAqIEZhYnJpY2UgQmVsbGFyZCBmaWd1cmVkIHRoaXMgb3V0IGluIHRoZSBvbGQgZG9jZWNjIGNvZGUuIEkgYWRkZWQKICAqIHNvbWUgY29tbWVudHMsIGltcHJvdmVkIGEgbWlub3IgYml0IGFuZCBjb252ZXJ0ZWQgaXQgdG8gbWFrZSB1c2UKLSAqIG9mIHRoZSBnZW5lcmljIFJlZWQtU29sb21vbiBsaWJhcnkuIHRnbHgKKyAqIG9mIHRoZSBnZW5lcmljIFJlZWQtU29sb21vbiBsaWJyYXJ5LiB0Z2x4CiAgKi8KIHN0YXRpYyBpbnQgZG9jX2VjY19kZWNvZGUoc3RydWN0IHJzX2NvbnRyb2wgKnJzLCB1aW50OF90ICpkYXRhLCB1aW50OF90ICplY2MpCiB7CkBAIC00MDAsNyArNDAwLDcgQEAKIAlkb2MyMDB4X2h3Y29udHJvbChtdGQsIDAsIE5BTkRfQ1RSTF9BTEUgfCBOQU5EX0NUUkxfQ0hBTkdFKTsKIAlkb2MyMDB4X2h3Y29udHJvbChtdGQsIE5BTkRfQ01EX05PTkUsIE5BTkRfTkNFIHwgTkFORF9DVFJMX0NIQU5HRSk7CiAKLQkvKiBXZSBjYW50JyB1c2UgZGV2X3JlYWR5IGhlcmUsIGJ1dCBhdCBsZWFzdCB3ZSB3YWl0IGZvciB0aGUKKwkvKiBXZSBjYW4ndCcgdXNlIGRldl9yZWFkeSBoZXJlLCBidXQgYXQgbGVhc3Qgd2Ugd2FpdCBmb3IgdGhlCiAJICogY29tbWFuZCB0byBjb21wbGV0ZQogCSAqLwogCXVkZWxheSg1MCk7CkBAIC05ODYsNyArOTg2LDcgQEAKIAkJZHVtbXkgPSBSZWFkRE9DKGRvY3B0ciwgRUNDQ29uZik7CiAJfQogCi0JLyogRXJyb3Igb2NjdXJlZCA/ICovCisJLyogRXJyb3Igb2NjdXJyZWQgPyAqLwogCWlmIChkdW1teSAmIDB4ODApIHsKIAkJZm9yIChpID0gMDsgaSA8IDY7IGkrKykgewogCQkJaWYgKERvQ19pc19NaWxsZW5uaXVtUGx1cyhkb2MpKQpAQCAtMTE2MCw3ICsxMTYwLDcgQEAKIAkvKiBOT1RFOiBUaGUgbGluZXMgYmVsb3cgbW9kaWZ5IGludGVybmFsIHZhcmlhYmxlcyBvZiB0aGUgTkFORCBhbmQgTVRECiAJICAgbGF5ZXJzOyB2YXJpYWJsZXMgd2l0aCBoYXZlIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIGJ5IG5hbmRfc2Nhbi4KIAkgICBVbmZvcnR1bmF0ZWx5LCB3ZSBkaWRuJ3Qga25vdyBiZWZvcmUgdGhpcyBwb2ludCB3aGF0IHRoZXNlIHZhbHVlcwotCSAgIHNob3VsZCBiZS4gIFRodXMsIHRoaXMgY29kZSBpcyBzb21ld2hhdCBkZXBlbmRhbnQgb24gdGhlIGV4YWN0CisJICAgc2hvdWxkIGJlLiAgVGh1cywgdGhpcyBjb2RlIGlzIHNvbWV3aGF0IGRlcGVuZGVudCBvbiB0aGUgZXhhY3QKIAkgICBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTkFORCBsYXllci4gICovCiAJaWYgKG1oLT5Vbml0U2l6ZUZhY3RvciAhPSAweGZmKSB7CiAJCXRoaXMtPmJidF9lcmFzZV9zaGlmdCArPSAoMHhmZiAtIG1oLT5Vbml0U2l6ZUZhY3Rvcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9uYW5kL2ZzbF9lbGJjX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvZnNsX2VsYmNfbmFuZC5jCmluZGV4IDdhMTNkNDIuLjUzN2UzODAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvZnNsX2VsYmNfbmFuZC5jCisrKyBiL2RyaXZlcnMvbXRkL25hbmQvZnNsX2VsYmNfbmFuZC5jCkBAIC01OSw3ICs1OSw3IEBACiAJdW5zaWduZWQgaW50IGZtcjsgICAgICAgLyogRkNNIEZsYXNoIE1vZGUgUmVnaXN0ZXIgdmFsdWUgICAgICovCiB9OwogCi0vKiBGcmVlc2NhbGUgZUxCQyBGQ00gY29udHJvbGxlciBpbmZvbWF0aW9uICovCisvKiBGcmVlc2NhbGUgZUxCQyBGQ00gY29udHJvbGxlciBpbmZvcm1hdGlvbiAqLwogCiBzdHJ1Y3QgZnNsX2VsYmNfZmNtX2N0cmwgewogCXN0cnVjdCBuYW5kX2h3X2NvbnRyb2wgY29udHJvbGxlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvZnNtY19uYW5kLmMgYi9kcml2ZXJzL210ZC9uYW5kL2ZzbWNfbmFuZC5jCmluZGV4IDIwNWIxMGIuLjBkNDVlZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvZnNtY19uYW5kLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9mc21jX25hbmQuYwpAQCAtMzM1LDcgKzMzNSw3IEBACiAKIC8qCiAgKiBmc21jX3JlYWRfaHdlY2NfZWNjNCAtIEhhcmR3YXJlIEVDQyBjYWxjdWxhdG9yIGZvciBlY2M0IG9wdGlvbiBzdXBwb3J0ZWQgYnkKLSAqIEZTTUMuIEVDQyBpcyAxMyBieXRlcyBmb3IgNTEyIGJ5dGVzIG9mIGRhdGEgKHN1cHBvcnRzIGVycm9yIGNvcnJlY3Rpb24gdXB0bworICogRlNNQy4gRUNDIGlzIDEzIGJ5dGVzIGZvciA1MTIgYnl0ZXMgb2YgZGF0YSAoc3VwcG9ydHMgZXJyb3IgY29ycmVjdGlvbiB1cCB0bwogICogbWF4IG9mIDgtYml0cykKICAqLwogc3RhdGljIGludCBmc21jX3JlYWRfaHdlY2NfZWNjNChzdHJ1Y3QgbXRkX2luZm8gKm10ZCwgY29uc3QgdWludDhfdCAqZGF0YSwKQEAgLTM4MSw3ICszODEsNyBAQAogCiAvKgogICogZnNtY19yZWFkX2h3ZWNjX2VjYzEgLSBIYXJkd2FyZSBFQ0MgY2FsY3VsYXRvciBmb3IgZWNjMSBvcHRpb24gc3VwcG9ydGVkIGJ5Ci0gKiBGU01DLiBFQ0MgaXMgMyBieXRlcyBmb3IgNTEyIGJ5dGVzIG9mIGRhdGEgKHN1cHBvcnRzIGVycm9yIGNvcnJlY3Rpb24gdXB0bworICogRlNNQy4gRUNDIGlzIDMgYnl0ZXMgZm9yIDUxMiBieXRlcyBvZiBkYXRhIChzdXBwb3J0cyBlcnJvciBjb3JyZWN0aW9uIHVwIHRvCiAgKiBtYXggb2YgMS1iaXQpCiAgKi8KIHN0YXRpYyBpbnQgZnNtY19yZWFkX2h3ZWNjX2VjYzEoc3RydWN0IG10ZF9pbmZvICptdGQsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsCkBAIC00MDgsMTAgKzQwOCwxMCBAQAogICogQGJ1ZjoJYnVmZmVyIHRvIHN0b3JlIHJlYWQgZGF0YQogICogQHBhZ2U6CXBhZ2UgbnVtYmVyIHRvIHJlYWQKICAqCi0gKiBUaGlzIHJvdXRpbmUgaXMgbmVlZGVkIGZvciBmc21jIHZlcmlzb24gOCBhcyByZWFkaW5nIGZyb20gTkFORCBjaGlwIGhhcyB0byBiZQorICogVGhpcyByb3V0aW5lIGlzIG5lZWRlZCBmb3IgZnNtYyB2ZXJzaW9uIDggYXMgcmVhZGluZyBmcm9tIE5BTkQgY2hpcCBoYXMgdG8gYmUKICAqIHBlcmZvcm1lZCBpbiBhIHN0cmljdCBzZXF1ZW5jZSBhcyBmb2xsb3dzOgogICogZGF0YSg1MTIgYnl0ZSkgLT4gZWNjKDEzIGJ5dGUpCi0gKiBBZnRlciB0aGlzIHJlYWQsIGZzbWMgaGFyZHdhcmUgZ2VuZXJhdGVzIGFuZCByZXBvcnRzIGVycm9yIGRhdGEgYml0cyh1cHRvIGEKKyAqIEFmdGVyIHRoaXMgcmVhZCwgZnNtYyBoYXJkd2FyZSBnZW5lcmF0ZXMgYW5kIHJlcG9ydHMgZXJyb3IgZGF0YSBiaXRzKHVwIHRvIGEKICAqIG1heCBvZiA4IGJpdHMpCiAgKi8KIHN0YXRpYyBpbnQgZnNtY19yZWFkX3BhZ2VfaHdlY2Moc3RydWN0IG10ZF9pbmZvICptdGQsIHN0cnVjdCBuYW5kX2NoaXAgKmNoaXAsCkBAIC02ODYsNyArNjg2LDcgQEAKIAl9CiAKIAkvKgotCSAqIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZQorCSAqIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZQogCSAqLwogCWlmIChuYW5kX3NjYW5faWRlbnQoJmhvc3QtPm10ZCwgMSwgTlVMTCkpIHsKIAkJcmV0ID0gLUVOWElPOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYyBiL2RyaXZlcnMvbXRkL25hbmQvbmFuZF9iYXNlLmMKaW5kZXggODVjZmMwNi4uYzU0YTRjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2Jhc2UuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jCkBAIC0xNTgyLDcgKzE1ODIsNyBAQAogfQogCiAvKioKLSAqIG5hbmRfcmVhZCAtIFtNVEQgSW50ZXJmYWNlXSBNVEQgY29tcGFiaWxpdHkgZnVuY3Rpb24gZm9yIG5hbmRfZG9fcmVhZF9lY2MKKyAqIG5hbmRfcmVhZCAtIFtNVEQgSW50ZXJmYWNlXSBNVEQgY29tcGF0aWJpbGl0eSBmdW5jdGlvbiBmb3IgbmFuZF9kb19yZWFkX2VjYwogICogQG10ZDoJTVREIGRldmljZSBzdHJ1Y3R1cmUKICAqIEBmcm9tOglvZmZzZXQgdG8gcmVhZCBmcm9tCiAgKiBAbGVuOgludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jCmluZGV4IGExZThiMzAwLi5hZjQ2NDI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL25hbmRfYmJ0LmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9uYW5kX2JidC5jCkBAIC05NDUsNyArOTQ1LDcgQEAKIAkJcmQyID0gTlVMTDsKIAkJLyogUGVyIGNoaXAgb3IgcGVyIGRldmljZSA/ICovCiAJCWNoaXBzZWwgPSAodGQtPm9wdGlvbnMgJiBOQU5EX0JCVF9QRVJDSElQKSA/IGkgOiAtMTsKLQkJLyogTWlycm9yZWQgdGFibGUgYXZpbGFibGUgPyAqLworCQkvKiBNaXJyb3JlZCB0YWJsZSBhdmFpbGFibGUgPyAqLwogCQlpZiAobWQpIHsKIAkJCWlmICh0ZC0+cGFnZXNbaV0gPT0gLTEgJiYgbWQtPnBhZ2VzW2ldID09IC0xKSB7CiAJCQkJd3JpdGVvcHMgPSAweDAzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9uYW5kc2ltLmMgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRzaW0uYwppbmRleCAyMTMxODFiLi44OTNkOTViIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL25hbmRzaW0uYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25hbmRzaW0uYwpAQCAtMTYyLDcgKzE2Miw3IEBACiBNT0RVTEVfUEFSTV9ERVNDKGdyYXZlcGFnZXMsICAgICAiUGFnZXMgdGhhdCBsb3NlIGRhdGEgWzogbWF4aW11bSByZWFkcyAoZGVmYXVsdHMgdG8gMyldIgogCQkJCSAiIHNlcGFyYXRlZCBieSBjb21tYXMgZS5nLiAxNDAxOjIgbWVhbnMgcGFnZSAxNDAxIgogCQkJCSAiIGNhbiBiZSByZWFkIG9ubHkgdHdpY2UgYmVmb3JlIGZhaWxpbmciKTsKLU1PRFVMRV9QQVJNX0RFU0MocnB0d2VhciwgICAgICAgICJOdW1iZXIgb2YgZXJhc2VzIGluYmV0d2VlbiByZXBvcnRpbmcgd2VhciwgaWYgbm90IHplcm8iKTsKK01PRFVMRV9QQVJNX0RFU0MocnB0d2VhciwgICAgICAgICJOdW1iZXIgb2YgZXJhc2VzIGJldHdlZW4gcmVwb3J0aW5nIHdlYXIsIGlmIG5vdCB6ZXJvIik7CiBNT0RVTEVfUEFSTV9ERVNDKG92ZXJyaWRlc2l6ZSwgICAiU3BlY2lmaWVzIHRoZSBOQU5EIEZsYXNoIHNpemUgb3ZlcnJpZGluZyB0aGUgSUQgYnl0ZXMuICIKIAkJCQkgIlRoZSBzaXplIGlzIHNwZWNpZmllZCBpbiBlcmFzZSBibG9ja3MgYW5kIGFzIHRoZSBleHBvbmVudCBvZiBhIHBvd2VyIG9mIHR3byIKIAkJCQkgIiBlLmcuIDUgbWVhbnMgYSBzaXplIG9mIDMyIGVyYXNlIGJsb2NrcyIpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9ub21hZGlrX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvbm9tYWRpa19uYW5kLmMKaW5kZXggOGMwYjY5My4uYTA0NWE0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9ub21hZGlrX25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL25vbWFkaWtfbmFuZC5jCkBAIC0xNTEsNyArMTUxLDcgQEAKIAluYW5kLT5vcHRpb25zID0gcGRhdGEtPm9wdGlvbnM7CiAKIAkvKgotCSAqIFNjYW4gdG8gZmluZCBleGlzdGFuY2Ugb2YgdGhlIGRldmljZQorCSAqIFNjYW4gdG8gZmluZCBleGlzdGVuY2Ugb2YgdGhlIGRldmljZQogCSAqLwogCWlmIChuYW5kX3NjYW4oJmhvc3QtPm10ZCwgMSkpIHsKIAkJcmV0ID0gLUVOWElPOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9wYXNlbWlfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9wYXNlbWlfbmFuZC5jCmluZGV4IDU5ZWZhODIuLjIwYmZlNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcGFzZW1pX25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3Bhc2VtaV9uYW5kLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCS8qIEVuYWJsZSB0aGUgZm9sbG93aW5nIGZvciBhIGZsYXNoIGJhc2VkIGJhZCBibG9jayB0YWJsZSAqLwogCWNoaXAtPm9wdGlvbnMgPSBOQU5EX1VTRV9GTEFTSF9CQlQgfCBOQU5EX05PX0FVVE9JTkNSOwogCi0JLyogU2NhbiB0byBmaW5kIGV4aXN0YW5jZSBvZiB0aGUgZGV2aWNlICovCisJLyogU2NhbiB0byBmaW5kIGV4aXN0ZW5jZSBvZiB0aGUgZGV2aWNlICovCiAJaWYgKG5hbmRfc2NhbihwYXNlbWlfbmFuZF9tdGQsIDEpKSB7CiAJCWVyciA9IC1FTlhJTzsKIAkJZ290byBvdXRfbHBjOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9wbGF0X25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvcGxhdF9uYW5kLmMKaW5kZXggMzE3YWZmNC4uY2FmNWE3MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9wbGF0X25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3BsYXRfbmFuZC5jCkBAIC05NSw3ICs5NSw3IEBACiAJCQlnb3RvIG91dDsKIAl9CiAKLQkvKiBTY2FuIHRvIGZpbmQgZXhpc3RhbmNlIG9mIHRoZSBkZXZpY2UgKi8KKwkvKiBTY2FuIHRvIGZpbmQgZXhpc3RlbmNlIG9mIHRoZSBkZXZpY2UgKi8KIAlpZiAobmFuZF9zY2FuKCZkYXRhLT5tdGQsIHBkYXRhLT5jaGlwLm5yX2NoaXBzKSkgewogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9weGEzeHhfbmFuZC5jIGIvZHJpdmVycy9tdGQvbmFuZC9weGEzeHhfbmFuZC5jCmluZGV4IGFiN2Y0YzMuLmZmMDcwMTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL25hbmQvcHhhM3h4X25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3B4YTN4eF9uYW5kLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogCiBzdGF0aWMgaW50IHVzZV9kbWEgPSAxOwogbW9kdWxlX3BhcmFtKHVzZV9kbWEsIGJvb2wsIDA0NDQpOwotTU9EVUxFX1BBUk1fREVTQyh1c2VfZG1hLCAiZW5hYmxlIERNQSBmb3IgZGF0YSB0cmFuc2ZlcmluZyB0by9mcm9tIE5BTkQgSFciKTsKK01PRFVMRV9QQVJNX0RFU0ModXNlX2RtYSwgImVuYWJsZSBETUEgZm9yIGRhdGEgdHJhbnNmZXJyaW5nIHRvL2Zyb20gTkFORCBIVyIpOwogCiAvKgogICogRGVmYXVsdCBOQU5EIGZsYXNoIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiBzZXR1cCBieSB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvcjg1Mi5jIGIvZHJpdmVycy9tdGQvbmFuZC9yODUyLmMKaW5kZXggNjMyMmQxZi4uY2FlMmUwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9yODUyLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9yODUyLmMKQEAgLTE4NSw3ICsxODUsNyBAQAogCiAJZGJnX3ZlcmJvc2UoImRvaW5nIGRtYSAlcyAiLCBkb19yZWFkID8gInJlYWQiIDogIndyaXRlIik7CiAKLQkvKiBTZXQgaW50aWFsIGRtYSBzdGF0ZTogZm9yIHJlYWRpbmcgZmlyc3QgZmlsbCBvbiBib2FyZCBidWZmZXIsCisJLyogU2V0IGluaXRpYWwgZG1hIHN0YXRlOiBmb3IgcmVhZGluZyBmaXJzdCBmaWxsIG9uIGJvYXJkIGJ1ZmZlciwKIAkgIGZyb20gZGV2aWNlLCBmb3Igd3JpdGVzIGZpcnN0IGZpbGwgdGhlIGJ1ZmZlciAgZnJvbSBtZW1vcnkqLwogCWRldi0+ZG1hX3N0YXRlID0gZG9fcmVhZCA/IERNQV9JTlRFUk5BTCA6IERNQV9NRU1PUlk7CiAKQEAgLTc2Niw3ICs3NjYsNyBAQAogCQlyZXQgPSBJUlFfSEFORExFRDsKIAkJZGV2LT5jYXJkX2RldGVjdGVkID0gISEoY2FyZF9zdGF0dXMgJiBSODUyX0NBUkRfSVJRX0lOU0VSVCk7CiAKLQkJLyogd2Ugc2hvdWxkbid0IHJlY2lldmUgYW55IGludGVycnVwdHMgaWYgd2Ugd2FpdCBmb3IgY2FyZAorCQkvKiB3ZSBzaG91bGRuJ3QgcmVjZWl2ZSBhbnkgaW50ZXJydXB0cyBpZiB3ZSB3YWl0IGZvciBjYXJkCiAJCQl0byBzZXR0bGUgKi8KIAkJV0FSTl9PTihkZXYtPmNhcmRfdW5zdGFibGUpOwogCkBAIC03OTQsMTMgKzc5NCwxMyBAQAogCQlyZXQgPSBJUlFfSEFORExFRDsKIAogCQlpZiAoZG1hX3N0YXR1cyAmIFI4NTJfRE1BX0lSUV9FUlJPUikgewotCQkJZGJnKCJyZWNpZXZlZCBkbWEgZXJyb3IgSVJRIik7CisJCQlkYmcoInJlY2VpdmVkIGRtYSBlcnJvciBJUlEiKTsKIAkJCXI4NTJfZG1hX2RvbmUoZGV2LCAtRUlPKTsKIAkJCWNvbXBsZXRlKCZkZXYtPmRtYV9kb25lKTsKIAkJCWdvdG8gb3V0OwogCQl9CiAKLQkJLyogcmVjaWV2ZWQgRE1BIGludGVycnVwdCBvdXQgb2Ygbm93aGVyZT8gKi8KKwkJLyogcmVjZWl2ZWQgRE1BIGludGVycnVwdCBvdXQgb2Ygbm93aGVyZT8gKi8KIAkJV0FSTl9PTl9PTkNFKGRldi0+ZG1hX3N0YWdlID09IDApOwogCiAJCWlmIChkZXYtPmRtYV9zdGFnZSA9PSAwKQpAQCAtOTYwLDcgKzk2MCw3IEBACiAJCSZkZXYtPmNhcmRfZGV0ZWN0X3dvcmssIDApOwogCiAKLQlwcmludGsoS0VSTl9OT1RJQ0UgRFJWX05BTUUgIjogZHJpdmVyIGxvYWRlZCBzdWNjZXNmdWxseVxuIik7CisJcHJpbnRrKEtFUk5fTk9USUNFIERSVl9OQU1FICI6IGRyaXZlciBsb2FkZWQgc3VjY2Vzc2Z1bGx5XG4iKTsKIAlyZXR1cm4gMDsKIAogZXJyb3IxMDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL25hbmQvc2hfZmxjdGwuYyBiL2RyaXZlcnMvbXRkL25hbmQvc2hfZmxjdGwuYwppbmRleCA1NDZjMmYwLi44MWJiYjVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9uYW5kL3NoX2ZsY3RsLmMKKysrIGIvZHJpdmVycy9tdGQvbmFuZC9zaF9mbGN0bC5jCkBAIC03OCw3ICs3OCw3IEBACiAKIHN0YXRpYyB2b2lkIHRpbWVvdXRfZXJyb3Ioc3RydWN0IHNoX2ZsY3RsICpmbGN0bCwgY29uc3QgY2hhciAqc3RyKQogewotCWRldl9lcnIoJmZsY3RsLT5wZGV2LT5kZXYsICJUaW1lb3V0IG9jY3VyZWQgaW4gJXNcbiIsIHN0cik7CisJZGV2X2VycigmZmxjdGwtPnBkZXYtPmRldiwgIlRpbWVvdXQgb2NjdXJyZWQgaW4gJXNcbiIsIHN0cik7CiB9CiAKIHN0YXRpYyB2b2lkIHdhaXRfY29tcGxldGlvbihzdHJ1Y3Qgc2hfZmxjdGwgKmZsY3RsKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC9zbV9jb21tb24uYyBiL2RyaXZlcnMvbXRkL25hbmQvc21fY29tbW9uLmMKaW5kZXggNGE4ZjM2Ny4uNTdjYzgwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC9zbV9jb21tb24uYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3NtX2NvbW1vbi5jCkBAIC0xMjEsNyArMTIxLDcgQEAKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JLyogQmFkIGJsb2NrIG1hcmtlciBwb3N0aW9uICovCisJLyogQmFkIGJsb2NrIG1hcmtlciBwb3NpdGlvbiAqLwogCWNoaXAtPmJhZGJsb2NrcG9zID0gMHgwNTsKIAljaGlwLT5iYWRibG9ja2JpdHMgPSA3OwogCWNoaXAtPmJsb2NrX21hcmtiYWQgPSBzbV9ibG9ja19tYXJrYmFkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvbmFuZC90bWlvX25hbmQuYyBiL2RyaXZlcnMvbXRkL25hbmQvdG1pb19uYW5kLmMKaW5kZXggMzhmYjE2Ny4uMTRjNTc4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvbmFuZC90bWlvX25hbmQuYworKysgYi9kcml2ZXJzL210ZC9uYW5kL3RtaW9fbmFuZC5jCkBAIC00LDcgKzQsNyBAQAogICogU2xpZ2h0bHkgbXVya3kgcHJlLWdpdCBoaXN0b3J5IG9mIHRoZSBkcml2ZXI6CiAgKgogICogQ29weXJpZ2h0IChjKSBJYW4gTW9sdG9uIDIwMDQsIDIwMDUsIDIwMDgKLSAqICAgIE9yaWdpbmFsIHdvcmssIGluZGVwZW5kYW50IG9mIHNoYXJwcyBjb2RlLiBJbmNsdWRlZCBoYXJkd2FyZSBFQ0Mgc3VwcG9ydC4KKyAqICAgIE9yaWdpbmFsIHdvcmssIGluZGVwZW5kZW50IG9mIHNoYXJwcyBjb2RlLiBJbmNsdWRlZCBoYXJkd2FyZSBFQ0Mgc3VwcG9ydC4KICAqICAgIEhhcmQgRUNDIGRpZCBub3Qgd29yayBmb3Igd3JpdGVzIGluIHRoZSBlYXJseSByZXZpc2lvbnMuCiAgKiBDb3B5cmlnaHQgKGMpIERpcmsgT3BmZXIgMjAwNS4KICAqICAgIE1vZGlmaWNhdGlvbnMgZGV2ZWxvcGVkIGZyb20gc2hhcnBzIGNvZGUgYnV0CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC9vbmVuYW5kL29tYXAyLmMgYi9kcml2ZXJzL210ZC9vbmVuYW5kL29tYXAyLmMKaW5kZXggZjU5MWY2MS4uMWZjYjQxYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvb25lbmFuZC9vbWFwMi5jCisrKyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb21hcDIuYwpAQCAtNjA4LDcgKzYwOCw3IEBACiAKIAlyZXQgPSByZWd1bGF0b3JfZW5hYmxlKGMtPnJlZ3VsYXRvcik7CiAJaWYgKHJldCAhPSAwKQotCQlkZXZfZXJyKCZjLT5wZGV2LT5kZXYsICJjYW50IGVuYWJsZSByZWd1bGF0b3JcbiIpOworCQlkZXZfZXJyKCZjLT5wZGV2LT5kZXYsICJjYW4ndCBlbmFibGUgcmVndWxhdG9yXG4iKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC02MjAsNyArNjIwLDcgQEAKIAogCXJldCA9IHJlZ3VsYXRvcl9kaXNhYmxlKGMtPnJlZ3VsYXRvcik7CiAJaWYgKHJldCAhPSAwKQotCQlkZXZfZXJyKCZjLT5wZGV2LT5kZXYsICJjYW50IGRpc2FibGUgcmVndWxhdG9yXG4iKTsKKwkJZGV2X2VycigmYy0+cGRldi0+ZGV2LCAiY2FuJ3QgZGlzYWJsZSByZWd1bGF0b3JcbiIpOwogCiAJcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9zaW0uYyBiL2RyaXZlcnMvbXRkL29uZW5hbmQvb25lbmFuZF9zaW0uYwppbmRleCA4YjI0NjA2Li41ZWYzYmQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC9vbmVuYW5kL29uZW5hbmRfc2ltLmMKKysrIGIvZHJpdmVycy9tdGQvb25lbmFuZC9vbmVuYW5kX3NpbS5jCkBAIC0zMjEsNyArMzIxLDcgQEAKIAkJCQljb250aW51ZTsKIAkJCWlmIChtZW1jbXAoZGVzdCArIG9mZiwgZmZjaGFycywgdGhpcy0+c3VicGFnZXNpemUpICYmCiAJCQkgICAgb25lbmFuZF9jaGVja19vdmVyd3JpdGUoZGVzdCArIG9mZiwgc3JjICsgb2ZmLCB0aGlzLT5zdWJwYWdlc2l6ZSkpCi0JCQkJcHJpbnRrKEtFUk5fRVJSICJvdmVyLXdyaXRlIGhhcHBlbmQgYXQgMHglMDh4XG4iLCBvZmZzZXQpOworCQkJCXByaW50ayhLRVJOX0VSUiAib3Zlci13cml0ZSBoYXBwZW5lZCBhdCAweCUwOHhcbiIsIG9mZnNldCk7CiAJCQltZW1jcHkoZGVzdCArIG9mZiwgc3JjICsgb2ZmLCB0aGlzLT5zdWJwYWdlc2l6ZSk7CiAJCX0KIAkJLyogRmFsbCB0aHJvdWdoICovCkBAIC0zMzUsNyArMzM1LDcgQEAKIAkJZGVzdCA9IE9ORU5BTkRfQ09SRV9TUEFSRShmbGFzaCwgdGhpcywgb2Zmc2V0KTsKIAkJaWYgKG1lbWNtcChkZXN0LCBmZmNoYXJzLCBtdGQtPm9vYnNpemUpICYmCiAJCSAgICBvbmVuYW5kX2NoZWNrX292ZXJ3cml0ZShkZXN0LCBzcmMsIG10ZC0+b29ic2l6ZSkpCi0JCQlwcmludGsoS0VSTl9FUlIgIk9PQjogb3Zlci13cml0ZSBoYXBwZW5kIGF0IDB4JTA4eFxuIiwKKwkJCXByaW50ayhLRVJOX0VSUiAiT09COiBvdmVyLXdyaXRlIGhhcHBlbmVkIGF0IDB4JTA4eFxuIiwKIAkJCSAgICAgICBvZmZzZXQpOwogCQltZW1jcHkoZGVzdCwgc3JjLCBtdGQtPm9vYnNpemUpOwogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3NtX2Z0bC5jIGIvZHJpdmVycy9tdGQvc21fZnRsLmMKaW5kZXggMmIwZGFhZS4uZWQzZDZjZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvc21fZnRsLmMKKysrIGIvZHJpdmVycy9tdGQvc21fZnRsLmMKQEAgLTU0MCw3ICs1NDAsNyBAQAogCQkJcmV0dXJuIC1FSU87CiAJfQogCi0JLyogSWYgdGhlIGJsb2NrIGlzIHNsaWNlZCAocGFydGlhbHkgZXJhc2VkIHVzdWFsbHkpIGVyYXNlIGl0ICovCisJLyogSWYgdGhlIGJsb2NrIGlzIHNsaWNlZCAocGFydGlhbGx5IGVyYXNlZCB1c3VhbGx5KSBlcmFzZSBpdCAqLwogCWlmIChpID09IDIpIHsKIAkJc21fZXJhc2VfYmxvY2soZnRsLCB6b25lLCBibG9jaywgMSk7CiAJCXJldHVybiAxOwpAQCAtODc4LDcgKzg3OCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIEdldCBhbmQgYXV0b21hdGljbHkgaW5pdGlhbGl6ZSBhbiBGVEwgbWFwcGluZyBmb3Igb25lIHpvbmUgKi8KKy8qIEdldCBhbmQgYXV0b21hdGljYWxseSBpbml0aWFsaXplIGFuIEZUTCBtYXBwaW5nIGZvciBvbmUgem9uZSAqLwogc3RydWN0IGZ0bF96b25lICpzbV9nZXRfem9uZShzdHJ1Y3Qgc21fZnRsICpmdGwsIGludCB6b25lX251bSkKIHsKIAlzdHJ1Y3QgZnRsX3pvbmUgKnpvbmU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL210ZC91YmkvS2NvbmZpZyBiL2RyaXZlcnMvbXRkL3ViaS9LY29uZmlnCmluZGV4IDZhYmViNGYuLjRkY2M3NTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbXRkL3ViaS9LY29uZmlnCisrKyBiL2RyaXZlcnMvbXRkL3ViaS9LY29uZmlnCkBAIC01Niw3ICs1Niw3IEBACiAJYm9vbCAiVUJJIGRlYnVnZ2luZyIKIAlkZXBlbmRzIG9uIFNZU0ZTCiAJc2VsZWN0IERFQlVHX0ZTCi0Jc2VsZWN0IEtBTExTWU1TX0FMTCBpZiBLQUxMU1lNUyAmJiBERUJVR19LRVJORUwKKwlzZWxlY3QgS0FMTFNZTVMKIAloZWxwCiAJICBUaGlzIG9wdGlvbiBlbmFibGVzIFVCSSBkZWJ1Z2dpbmcuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3ViaS9pby5jIGIvZHJpdmVycy9tdGQvdWJpL2lvLmMKaW5kZXggZWVkZWRmOS4uZTM0N2NjNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvdWJpL2lvLmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL2lvLmMKQEAgLTM0NCw2ICszNDQsMTIgQEAKIAl3YWl0X3F1ZXVlX2hlYWRfdCB3cTsKIAogCWRiZ19pbygiZXJhc2UgUEVCICVkIiwgcG51bSk7CisJdWJpX2Fzc2VydChwbnVtID49IDAgJiYgcG51bSA8IHViaS0+cGViX2NvdW50KTsKKworCWlmICh1YmktPnJvX21vZGUpIHsKKwkJdWJpX2VycigicmVhZC1vbmx5IG1vZGUiKTsKKwkJcmV0dXJuIC1FUk9GUzsKKwl9CiAKIHJldHJ5OgogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJndxKTsKQEAgLTM5MCw3ICszOTYsNyBAQAogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAKLQlpZiAodWJpX2RiZ19pc19lcmFzZV9mYWlsdXJlKCkgJiYgIWVycikgeworCWlmICh1YmlfZGJnX2lzX2VyYXNlX2ZhaWx1cmUoKSkgewogCQlkYmdfZXJyKCJjYW5ub3QgZXJhc2UgUEVCICVkIChlbXVsYXRlZCkiLCBwbnVtKTsKIAkJcmV0dXJuIC1FSU87CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdGQvdWJpL3NjYW4uYyBiL2RyaXZlcnMvbXRkL3ViaS9zY2FuLmMKaW5kZXggMTFlYjhlZi4uZDJkMTJhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvdWJpL3NjYW4uYworKysgYi9kcml2ZXJzL210ZC91Ymkvc2Nhbi5jCkBAIC05NjgsNyArOTY4LDcgQEAKIAkJCSAqIGNvbnRhaW5zIGdhcmJhZ2UgYmVjYXVzZSBvZiBhIHBvd2VyIGN1dCBkdXJpbmcgZXJhc2UKIAkJCSAqIG9wZXJhdGlvbi4gU28gd2UganVzdCBzY2hlZHVsZSB0aGlzIFBFQiBmb3IgZXJhc3VyZS4KIAkJCSAqCi0JCQkgKiBCZXNpZGVzLCBpbiBjYXNlIG9mIE5PUiBmbGFzaCwgd2UgZGVsaWJlcmF0bHkKKwkJCSAqIEJlc2lkZXMsIGluIGNhc2Ugb2YgTk9SIGZsYXNoLCB3ZSBkZWxpYmVyYXRlbHkKIAkJCSAqIGNvcnJ1cHQgYm90aCBoZWFkZXJzIGJlY2F1c2UgTk9SIGZsYXNoIGVyYXN1cmUgaXMKIAkJCSAqIHNsb3cgYW5kIGNhbiBzdGFydCBmcm9tIHRoZSBlbmQuCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL3ViaS92bXQuYyBiL2RyaXZlcnMvbXRkL3ViaS92bXQuYwppbmRleCBiNzllMGRlLi4zNjZlYjcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL210ZC91Ymkvdm10LmMKKysrIGIvZHJpdmVycy9tdGQvdWJpL3ZtdC5jCkBAIC03OTAsMTEgKzc5MCw2IEBACiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlpZiAoIXZvbC0+bmFtZSkgewotCQl1YmlfZXJyKCJOVUxMIHZvbHVtZSBuYW1lIik7Ci0JCWdvdG8gZmFpbDsKLQl9Ci0KIAluID0gc3Rybmxlbih2b2wtPm5hbWUsIHZvbC0+bmFtZV9sZW4gKyAxKTsKIAlpZiAobiAhPSB2b2wtPm5hbWVfbGVuKSB7CiAJCXViaV9lcnIoImJhZCBuYW1lX2xlbiAlbGxkIiwgbik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC8zYzUwMS5jIGIvZHJpdmVycy9uZXQvM2M1MDEuYwppbmRleCA5ZTFjMDNlLi41NDIwZjZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC8zYzUwMS5jCisrKyBiL2RyaXZlcnMvbmV0LzNjNTAxLmMKQEAgLTM5OSw3ICszOTksNyBAQAogICogYXMgd2UgbWF5IHN0aWxsIGJlIGF0dGVtcHRpbmcgdG8gcmV0cmlldmUgdGhlIGxhc3QgUlggcGFja2V0IGJ1ZmZlci4KICAqCiAgKiBXaGVuIGEgdHJhbnNtaXQgdGltZXMgb3V0IHdlIGR1bXAgdGhlIGNhcmQgaW50byBjb250cm9sIG1vZGUgYW5kIGp1c3QKLSAqIHN0YXJ0IGFnYWluLiBJdCBoYXBwZW5zIGVub3VnaCB0aGF0IGl0IGlzbnQgd29ydGggbG9nZ2luZy4KKyAqIHN0YXJ0IGFnYWluLiBJdCBoYXBwZW5zIGVub3VnaCB0aGF0IGl0IGlzbid0IHdvcnRoIGxvZ2dpbmcuCiAgKgogICogV2UgYXZvaWQgaG9sZGluZyB0aGUgc3BpbiBsb2NrcyB3aGVuIGRvaW5nIHRoZSBwYWNrZXQgbG9hZCB0byB0aGUgYm9hcmQuCiAgKiBUaGUgZGV2aWNlIGlzIHZlcnkgc2xvdywgYW5kIGl0cyBETUEgbW9kZSBpcyBldmVuIHNsb3dlci4gSWYgd2UgaGVsZCB0aGUKQEAgLTQ5OSw3ICs0OTksNyBAQAogICoKICAqIEhhbmRsZSB0aGUgZXRoZXIgaW50ZXJmYWNlIGludGVycnVwdHMuIFRoZSAzYzUwMSBuZWVkcyBhIGxvdCBtb3JlCiAgKiBoYW5kIGhvbGRpbmcgdGhhbiBtb3N0IGNhcmRzLiBJbiBwYXJ0aWN1bGFyIHdlIGdldCBhIHRyYW5zbWl0IGludGVycnVwdAotICogd2l0aCBhIGNvbGxpc2lvbiBlcnJvciBiZWNhdXNlIHRoZSBib2FyZCBmaXJtd2FyZSBpc250IGNhcGFibGUgb2YgcmV3aW5kaW5nCisgKiB3aXRoIGEgY29sbGlzaW9uIGVycm9yIGJlY2F1c2UgdGhlIGJvYXJkIGZpcm13YXJlIGlzbid0IGNhcGFibGUgb2YgcmV3aW5kaW5nCiAgKiBpdHMgb3duIHRyYW5zbWl0IGJ1ZmZlciBwb2ludGVycy4gSXQgY2FuIGhvd2V2ZXIgY291bnQgdG8gMTYgZm9yIHVzLgogICoKICAqIE9uIHRoZSByZWNlaXZlIHNpZGUgdGhlIGNhcmQgaXMgYWxzbyB2ZXJ5IGR1bWIuIEl0IGhhcyBubyBidWZmZXJpbmcgdG8KQEAgLTczMiw3ICs3MzIsNyBAQAogICogZWxfcmVzZXQ6IFJlc2V0IGEgM2M1MDEgY2FyZAogICogQGRldjogVGhlIDNjNTAxIGNhcmQgYWJvdXQgdG8gZ2V0IHphcHBlZAogICoKLSAqIEV2ZW4gcmVzZXR0aW5nIGEgM2M1MDEgaXNudCBzaW1wbGUuIFdoZW4geW91IGFjdGl2YXRlIHJlc2V0IGl0IGxvc2VzIGFsbAorICogRXZlbiByZXNldHRpbmcgYSAzYzUwMSBpc24ndCBzaW1wbGUuIFdoZW4geW91IGFjdGl2YXRlIHJlc2V0IGl0IGxvc2VzIGFsbAogICogaXRzIGNvbmZpZ3VyYXRpb24uIFlvdSBtdXN0IGhvbGQgdGhlIGxvY2sgd2hlbiBkb2luZyB0aGlzLiBUaGUgZnVuY3Rpb24KICAqIGNhbm5vdCB0YWtlIHRoZSBsb2NrIGl0c2VsZiBhcyBpdCBpcyBjYWxsYWJsZSBmcm9tIHRoZSBpcnEgaGFuZGxlci4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvM2M1MjMuYyBiL2RyaXZlcnMvbmV0LzNjNTIzLmMKaW5kZXggZGU1NzlkMC4uYmMwZDFhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvM2M1MjMuYworKysgYi9kcml2ZXJzL25ldC8zYzUyMy5jCkBAIC00NCw3ICs0NCw3IEBACiAgICB0aGlzIGZvciB0aGUgNjRLIHZlcnNpb24gd291bGQgcmVxdWlyZSBhIGxvdCBvZiBoZWlub3VzIGJhbmsKICAgIHN3aXRjaGluZywgd2hpY2ggSSdtIHN1cmUgbm90IGludGVyZXN0ZWQgaW4gZG9pbmcuICBJZiB5b3UgdHJ5IHRvCiAgICBpbXBsZW1lbnQgYSBiYW5rIHN3aXRjaGluZyB2ZXJzaW9uLCB5b3UnbGwgYmFzaWNhbGx5IGhhdmUgdG8gcmVtZW1iZXIKLSAgIHdoYXQgYmFuayBpcyBlbmFibGVkIGFuZCBkbyBhIHN3aXRjaCBldmVyeXRpbWUgeW91IGFjY2VzcyBhIG1lbW9yeQorICAgd2hhdCBiYW5rIGlzIGVuYWJsZWQgYW5kIGRvIGEgc3dpdGNoIGV2ZXJ5IHRpbWUgeW91IGFjY2VzcyBhIG1lbW9yeQogICAgbG9jYXRpb24gdGhhdCdzIG5vdCBjdXJyZW50LiAgWW91J2xsIGFsc28gaGF2ZSB0byByZW1hcCBwb2ludGVycyBvbgogICAgdGhlIGRyaXZlciBzaWRlLCBiZWNhdXNlIGl0IG9ubHkga25vd3MgYWJvdXQgMTZLIG9mIHRoZSBtZW1vcnkuCiAgICBBbnlvbmUgZGVzcGVyYXRlIG9yIG1hc29jaGlzdGljIGVub3VnaCB0byB0cnk/CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC8zYzUyNy5jIGIvZHJpdmVycy9uZXQvM2M1MjcuYwppbmRleCA4YzA5NGJhLi5kOWQwNTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC8zYzUyNy5jCisrKyBiL2RyaXZlcnMvbmV0LzNjNTI3LmMKQEAgLTUxLDcgKzUxLDcgQEAKICAqCWNpcmN1bGFyIGJ1ZmZlciBxdWV1ZXMuCiAgKgogICoJVGhlIG1haWxib3hlcyBjYW4gYmUgdXNlZCBmb3IgY29udHJvbGxpbmcgaG93IHRoZSBjYXJkIHRyYXZlcnNlcwotICoJaXRzIGJ1ZmZlciByaW5ncywgYnV0IGFyZSB1c2VkIG9ubHkgZm9yIGluaXRhbCBzZXR1cCBpbiB0aGlzCisgKglpdHMgYnVmZmVyIHJpbmdzLCBidXQgYXJlIHVzZWQgb25seSBmb3IgaW5pdGlhbCBzZXR1cCBpbiB0aGlzCiAgKglpbXBsZW1lbnRhdGlvbi4gIFRoZSBleGVjIG1haWxib3ggYWxsb3dzIGEgdmFyaWV0eSBvZiBjb21tYW5kcyB0bwogICoJYmUgZXhlY3V0ZWQuIEVhY2ggY29tbWFuZCBtdXN0IGNvbXBsZXRlIGJlZm9yZSB0aGUgbmV4dCBpcwogICoJZXhlY3V0ZWQuIFByaW1hcmlseSB3ZSB1c2UgdGhlIGV4ZWMgbWFpbGJveCBmb3IgY29udHJvbGxpbmcgdGhlCkBAIC04MTMsNyArODEzLDcgQEAKICAqCiAgKglUaGlzIHNldHMgdXAgdGhlIGhvc3QgdHJhbnNtaXQgZGF0YS1zdHJ1Y3R1cmVzLgogICoKLSAqCUZpcnN0LCB3ZSBvYnRhaW4gZnJvbSB0aGUgY2FyZCBpdCdzIGN1cnJlbnQgcG9zdGlvbiBpbiB0aGUgdHgKKyAqCUZpcnN0LCB3ZSBvYnRhaW4gZnJvbSB0aGUgY2FyZCBpdCdzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHR4CiAgKglyaW5nLCBzbyB0aGF0IHdlIHdpbGwga25vdyB3aGVyZSB0byBiZWdpbiB0cmFuc21pdHRpbmcKICAqCXBhY2tldHMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvM2M1OXguYyBiL2RyaXZlcnMvbmV0LzNjNTl4LmMKaW5kZXggMGE5MjQzNmYuLjhjYzIyNTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0LzNjNTl4LmMKKysrIGIvZHJpdmVycy9uZXQvM2M1OXguYwpAQCAtOTg0LDcgKzk4NCw3IEBACiAJCSAqIGFueSBkZXZpY2UgaGF2ZSBiZWVuIGZvdW5kIHdoZW4gd2UgZXhpdCBmcm9tCiAJCSAqIGVpc2FfZHJpdmVyX3JlZ2lzdGVyICh0aGUgYnVzIHJvb3QgZHJpdmVyIG1heSBub3QgYmUKIAkJICogaW5pdGlhbGl6ZWQgeWV0KS4gU28gd2UgYmxpbmRseSBhc3N1bWUgc29tZXRoaW5nIHdhcwotCQkgKiBmb3VuZCwgYW5kIGxldCB0aGUgc3lzZnMgbWFnaWMgaGFwcGVuZC4uLgorCQkgKiBmb3VuZCwgYW5kIGxldCB0aGUgc3lzZnMgbWFnaWMgaGFwcGVuZWQuLi4KIAkJICovCiAJCWVpc2FfZm91bmQgPSAxOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FjZW5pYy5jIGIvZHJpdmVycy9uZXQvYWNlbmljLmMKaW5kZXggNDFkOTkxMS4uZWU2NDhmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYWNlbmljLmMKKysrIGIvZHJpdmVycy9uZXQvYWNlbmljLmMKQEAgLTE1ODQsNyArMTU4NCw3IEBACiAJLyoKIAkgKiBXZSBoYXZlbid0IHJlY2VpdmVkIGEgc3RhdHMgdXBkYXRlIGV2ZW50IGZvciBtb3JlIHRoYW4gMi41CiAJICogc2Vjb25kcyBhbmQgdGhlcmUgaXMgZGF0YSBpbiB0aGUgdHJhbnNtaXQgcXVldWUsIHRodXMgd2UKLQkgKiBhc3VtZSB0aGUgY2FyZCBpcyBzdHVjay4KKwkgKiBhc3N1bWUgdGhlIGNhcmQgaXMgc3R1Y2suCiAJICovCiAJaWYgKCphcC0+dHhfY3NtICE9IGFwLT50eF9yZXRfY3NtKSB7CiAJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiBUcmFuc21pdHRlciBpcyBzdHVjaywgJTA4eFxuIiwKQEAgLTI1NjQsNyArMjU2NCw3IEBACiAKIAkJLyoKIAkJICogQSBUWC1kZXNjcmlwdG9yIHByb2R1Y2VyIChhbiBJUlEpIG1pZ2h0IGhhdmUgZ290dGVuCi0JCSAqIGluYmV0d2VlbiwgbWFraW5nIHRoZSByaW5nIGZyZWUgYWdhaW4uIFNpbmNlIHhtaXQgaXMKKwkJICogYmV0d2VlbiwgbWFraW5nIHRoZSByaW5nIGZyZWUgYWdhaW4uIFNpbmNlIHhtaXQgaXMKIAkJICogc2VyaWFsaXplZCwgdGhpcyBpcyB0aGUgb25seSBzaXR1YXRpb24gd2UgaGF2ZSB0bwogCQkgKiByZS10ZXN0LgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2FtZDgxMTFlLmMgYi9kcml2ZXJzL25ldC9hbWQ4MTExZS5jCmluZGV4IDJjYTg4MGIuLjg4NDk1YzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2FtZDgxMTFlLmMKKysrIGIvZHJpdmVycy9uZXQvYW1kODExMWUuYwpAQCAtMTM5OCw3ICsxMzk4LDcgQEAKIAkJbWNfZmlsdGVyWzFdID0gbWNfZmlsdGVyWzBdID0gMDsKIAkJbHAtPm9wdGlvbnMgJj0gfk9QVElPTl9NVUxUSUNBU1RfRU5BQkxFOwogCQlhbWQ4MTExZV93cml0ZXEoKih1NjQqKW1jX2ZpbHRlcixscC0+bW1pbyArIExBRFJGKTsKLQkJLyogZGlzYWJsZSBwcm9taXNjb3VzIG1vZGUgKi8KKwkJLyogZGlzYWJsZSBwcm9taXNjdW91cyBtb2RlICovCiAJCXdyaXRlbChQUk9NLCBscC0+bW1pbyArIENNRDIpOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYXQxNzAwLmMgYi9kcml2ZXJzL25ldC9hdDE3MDAuYwppbmRleCBmNDc0NGZjLi42NWE3OGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hdDE3MDAuYworKysgYi9kcml2ZXJzL25ldC9hdDE3MDAuYwpAQCAtMTMzLDcgKzEzMyw3IEBACiAvKiBSdW4tdGltZSByZWdpc3RlciBiYW5rIDIgZGVmaW5pdGlvbnMuICovCiAjZGVmaW5lIERBVEFQT1JUCQk4CQkvKiBXb3JkLXdpZGUgRE1BIG9yIHByb2dyYW1tZWQtSS9PIGRhdGFwb3J0LiAqLwogI2RlZmluZSBUWF9TVEFSVAkJMTAKLSNkZWZpbmUgQ09MMTZDTlRMCQkxMQkJLyogQ29udHJvbGwgUmVnIGZvciAxNiBjb2xsaXNpb25zICovCisjZGVmaW5lIENPTDE2Q05UTAkJMTEJCS8qIENvbnRyb2wgUmVnIGZvciAxNiBjb2xsaXNpb25zICovCiAjZGVmaW5lIE1PREUxMwkJCTEzCiAjZGVmaW5lIFJYX0NUUkwJCQkxNAogLyogQ29uZmlndXJhdGlvbiByZWdpc3RlcnMgb25seSBvbiB0aGUgJzg2NUEvQiBjaGlwcy4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2F0bDFlL2F0bDFlX21haW4uYyBiL2RyaXZlcnMvbmV0L2F0bDFlL2F0bDFlX21haW4uYwppbmRleCAxZmYwMDFhLi5iMGE3MWUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9hdGwxZS9hdGwxZV9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvYXRsMWUvYXRsMWVfbWFpbi5jCkBAIC0yNTA5LDcgKzI1MDksNyBAQAogCS5pZF90YWJsZSA9IGF0bDFlX3BjaV90YmwsCiAJLnByb2JlICAgID0gYXRsMWVfcHJvYmUsCiAJLnJlbW92ZSAgID0gX19kZXZleGl0X3AoYXRsMWVfcmVtb3ZlKSwKLQkvKiBQb3dlciBNYW5hZ21lbnQgSG9va3MgKi8KKwkvKiBQb3dlciBNYW5hZ2VtZW50IEhvb2tzICovCiAjaWZkZWYgQ09ORklHX1BNCiAJLnN1c3BlbmQgID0gYXRsMWVfc3VzcGVuZCwKIAkucmVzdW1lICAgPSBhdGwxZV9yZXN1bWUsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9hdGx4L2F0bDIuYyBiL2RyaXZlcnMvbmV0L2F0bHgvYXRsMi5jCmluZGV4IDkzN2VmMWEuLmUzY2JmNDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2F0bHgvYXRsMi5jCisrKyBiL2RyaXZlcnMvbmV0L2F0bHgvYXRsMi5jCkBAIC0xNzAxLDcgKzE3MDEsNyBAQAogCS5pZF90YWJsZSA9IGF0bDJfcGNpX3RibCwKIAkucHJvYmUgICAgPSBhdGwyX3Byb2JlLAogCS5yZW1vdmUgICA9IF9fZGV2ZXhpdF9wKGF0bDJfcmVtb3ZlKSwKLQkvKiBQb3dlciBNYW5hZ21lbnQgSG9va3MgKi8KKwkvKiBQb3dlciBNYW5hZ2VtZW50IEhvb2tzICovCiAJLnN1c3BlbmQgID0gYXRsMl9zdXNwZW5kLAogI2lmZGVmIENPTkZJR19QTQogCS5yZXN1bWUgICA9IGF0bDJfcmVzdW1lLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYmNtNjN4eF9lbmV0LmMgYi9kcml2ZXJzL25ldC9iY202M3h4X2VuZXQuYwppbmRleCBlOTRhOTY2YS4uYzQ4MTA0YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYmNtNjN4eF9lbmV0LmMKKysrIGIvZHJpdmVycy9uZXQvYmNtNjN4eF9lbmV0LmMKQEAgLTU5Nyw3ICs1OTcsNyBAQAogfQogCiAvKgotICogQ2hhbmdlIHJ4IG1vZGUgKHByb21pc2NvdXMvYWxsbXVsdGkpIGFuZCB1cGRhdGUgbXVsdGljYXN0IGxpc3QKKyAqIENoYW5nZSByeCBtb2RlIChwcm9taXNjdW91cy9hbGxtdWx0aSkgYW5kIHVwZGF0ZSBtdWx0aWNhc3QgbGlzdAogICovCiBzdGF0aWMgdm9pZCBiY21fZW5ldF9zZXRfbXVsdGljYXN0X2xpc3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2JlbmV0L2JlX2NtZHMuYyBiL2RyaXZlcnMvbmV0L2JlbmV0L2JlX2NtZHMuYwppbmRleCA1YTRhODdlNy4uMWUyZDgyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYmVuZXQvYmVfY21kcy5jCisrKyBiL2RyaXZlcnMvbmV0L2JlbmV0L2JlX2NtZHMuYwpAQCAtMTMzMSw3ICsxMzMxLDcgQEAKIAogLyoKICAqIFVzZXMgTUNDIGZvciB0aGlzIGNvbW1hbmQgYXMgaXQgbWF5IGJlIGNhbGxlZCBpbiBCSCBjb250ZXh0Ci0gKiAobWMgPT0gTlVMTCkgPT4gbXVsdGljYXN0IHByb21pc2NvdXMKKyAqIChtYyA9PSBOVUxMKSA9PiBtdWx0aWNhc3QgcHJvbWlzY3VvdXMKICAqLwogaW50IGJlX2NtZF9tdWx0aWNhc3Rfc2V0KHN0cnVjdCBiZV9hZGFwdGVyICphZGFwdGVyLCB1MzIgaWZfaWQsCiAJCXN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIHN0cnVjdCBiZV9kbWFfbWVtICptZW0pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9iZW5ldC9iZV9tYWluLmMgYi9kcml2ZXJzL25ldC9iZW5ldC9iZV9tYWluLmMKaW5kZXggYTcxMTYzZi4uOWE1NGM4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYmVuZXQvYmVfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2JlbmV0L2JlX21haW4uYwpAQCAtNzA4LDcgKzcwOCw3IEBACiAJCWdvdG8gZG9uZTsKIAl9CiAKLQkvKiBCRSB3YXMgcHJldmlvdXNseSBpbiBwcm9taXNjb3VzIG1vZGU7IGRpc2FibGUgaXQgKi8KKwkvKiBCRSB3YXMgcHJldmlvdXNseSBpbiBwcm9taXNjdW91cyBtb2RlOyBkaXNhYmxlIGl0ICovCiAJaWYgKGFkYXB0ZXItPnByb21pc2N1b3VzKSB7CiAJCWFkYXB0ZXItPnByb21pc2N1b3VzID0gZmFsc2U7CiAJCWJlX2NtZF9wcm9taXNjdW91c19jb25maWcoYWRhcHRlciwgYWRhcHRlci0+cG9ydF9udW0sIDApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm5hL2JuYV9ody5oIGIvZHJpdmVycy9uZXQvYm5hL2JuYV9ody5oCmluZGV4IDgwNmIyMjQuLjZjYjg5NjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JuYS9ibmFfaHcuaAorKysgYi9kcml2ZXJzL25ldC9ibmEvYm5hX2h3LmgKQEAgLTg5Nyw3ICs4OTcsNyBAQAogICogQ2F0YXB1bHQgUlNTIFRhYmxlIEJhc2UgT2Zmc2V0IEFkZHJlc3MKICAqCiAgKiBFeGlzdHMgaW4gUkFEIG1lbW9yeSBzcGFjZS4KLSAqIEVhY2ggZW50cnkgaXMgMzUyIGJpdHMsIGJ1dCBhbGxpZ25lZCBvbgorICogRWFjaCBlbnRyeSBpcyAzNTIgYml0cywgYnV0IGFsaWduZWQgb24KICAqIDY0IGJ5dGUgKDUxMiBiaXQpIGJvdW5kYXJ5LiBBY2Nlc3NlZAogICogNCBieXRlIHdvcmRzLCB0aGUgd2hvbGUgZW50cnkgY2FuIGJlCiAgKiBicm9rZW4gaW50byAxMSB3b3JkIGFjY2Vzc2VzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54MngvYm54MnguaCBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4LmgKaW5kZXggYjdmZjg3Yi4uZTBmY2E3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm54MngvYm54MnguaAorKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeC5oCkBAIC0xMjIwLDcgKzEyMjAsNyBAQAogCXN0cnVjdCBibngyeF9kY2J4X3BvcnRfcGFyYW1zCQlkY2J4X3BvcnRfcGFyYW1zOwogCWludAkJCQkJZGNiX3ZlcnNpb247CiAKLQkvKiBEQ0JYIE5lZ290YXRpb24gcmVzdWx0cyAqLworCS8qIERDQlggTmVnb3RpYXRpb24gcmVzdWx0cyAqLwogCXN0cnVjdCBkY2J4X2ZlYXR1cmVzCQkJZGNieF9sb2NhbF9mZWF0OwogCXUzMgkJCQkJZGNieF9lcnJvcjsKIAl1MzIJCQkJCXBlbmRpbmdfbWF4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfaHNpLmggYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaAppbmRleCBiZTUwM2NjLi5kYWMxYmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaAorKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9oc2kuaApAQCAtMzAxOSw3ICszMDE5LDcgQEAKIAogCiAvKgotICogY29tbW9uIGZsYWcgdG8gaW5kaWNhdGUgZXhpc3RhbmNlIG9mIFRQQS4KKyAqIGNvbW1vbiBmbGFnIHRvIGluZGljYXRlIGV4aXN0ZW5jZSBvZiBUUEEuCiAgKi8KIHN0cnVjdCB0c3Rvcm1fZXRoX3RwYV9leGlzdCB7CiAjaWYgZGVmaW5lZChfX0JJR19FTkRJQU4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9saW5rLmMgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9saW5rLmMKaW5kZXggZjJmMzY3ZC4uOTc0ZWYyYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfbGluay5jCisrKyBiL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X2xpbmsuYwpAQCAtMjgyMyw3ICsyODIzLDcgQEAKIAkJCQkgICAgIHN0cnVjdCBsaW5rX3BhcmFtcyAqcGFyYW1zKQogewogCXUxNiBjbnQsIGN0cmw7Ci0JLyogV2FpdCBmb3Igc29mdCByZXNldCB0byBnZXQgY2xlYXJlZCB1cHRvIDEgc2VjICovCisJLyogV2FpdCBmb3Igc29mdCByZXNldCB0byBnZXQgY2xlYXJlZCB1cCB0byAxIHNlYyAqLwogCWZvciAoY250ID0gMDsgY250IDwgMTAwMDsgY250KyspIHsKIAkJYm54MnhfY2w0NV9yZWFkKGJwLCBwaHksCiAJCQkJTURJT19QTUFfREVWQUQsIE1ESU9fUE1BX1JFR19DVFJMLCAmY3RybCk7CkBAIC00MTQxLDcgKzQxNDEsNyBAQAogCQkJdmFsID0gKDE8PDUpOwogCQkJLyoKIAkJCSAqIE5vdGUgdGhhdCAyLjVHIHdvcmtzIG9ubHkgd2hlbiB1c2VkIHdpdGggMUcKLQkJCSAqIGFkdmVydGlzbWVudAorCQkJICogYWR2ZXJ0aXNlbWVudAogCQkJICovCiAJCX0gZWxzZQogCQkJdmFsID0gKDE8PDUpOwpAQCAtNDE1MSw3ICs0MTUxLDcgQEAKIAkJCVBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMTBHKQogCQkJdmFsIHw9ICgxPDw3KTsKIAotCQkvKiBOb3RlIHRoYXQgMi41RyB3b3JrcyBvbmx5IHdoZW4gdXNlZCB3aXRoIDFHIGFkdmVydGlzbWVudCAqLworCQkvKiBOb3RlIHRoYXQgMi41RyB3b3JrcyBvbmx5IHdoZW4gdXNlZCB3aXRoIDFHIGFkdmVydGlzZW1lbnQgKi8KIAkJaWYgKHBoeS0+c3BlZWRfY2FwX21hc2sgJgogCQkJKFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMUcgfAogCQkJIFBPUlRfSFdfQ0ZHX1NQRUVEX0NBUEFCSUxJVFlfRDBfMl81RykpCkBAIC01MjMyLDE0ICs1MjMyLDE0IEBACiAJCWJueDJ4X2NsNDVfd3JpdGUoYnAsIHBoeSwKIAkJCQkgTURJT19QTUFfREVWQUQsIE1ESU9fUE1BX1JFR19MQVNJX0NUUkwsIDEpOwogCX0gZWxzZSB7Ci0JCS8qIEZvcmNlIDFHYnBzIHVzaW5nIGF1dG9uZWcgd2l0aCAxRyBhZHZlcnRpc21lbnQgKi8KKwkJLyogRm9yY2UgMUdicHMgdXNpbmcgYXV0b25lZyB3aXRoIDFHIGFkdmVydGlzZW1lbnQgKi8KIAogCQkvKiBBbGxvdyBDTDM3IHRocm91Z2ggQ0w3MyAqLwogCQlEUChORVRJRl9NU0dfTElOSywgIlhHWFMgODcwNiBBdXRvTmVnXG4iKTsKIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LAogCQkJCSBNRElPX0FOX0RFVkFELCBNRElPX0FOX1JFR19DTDM3X0NMNzMsIDB4MDQwYyk7CiAKLQkJLyogRW5hYmxlIEZ1bGwtRHVwbGV4IGFkdmVydGlzbWVudCBvbiBDTDM3ICovCisJCS8qIEVuYWJsZSBGdWxsLUR1cGxleCBhZHZlcnRpc2VtZW50IG9uIENMMzcgKi8KIAkJYm54MnhfY2w0NV93cml0ZShicCwgcGh5LAogCQkJCSBNRElPX0FOX0RFVkFELCBNRElPX0FOX1JFR19DTDM3X0ZDX0xQLCAweDAwMjApOwogCQkvKiBFbmFibGUgQ0wzNyBBTiAqLwpAQCAtNjI2OSw3ICs2MjY5LDcgQEAKIAogCXN3aXRjaCAoYWN0dWFsX3BoeV9zZWxlY3Rpb24pIHsKIAljYXNlIFBPUlRfSFdfQ0ZHX1BIWV9TRUxFQ1RJT05fSEFSRFdBUkVfREVGQVVMVDoKLQkJLyogRG8gbm90aGluZy4gRXNzZW50aWFseSB0aGlzIGlzIGxpa2UgdGhlIHByaW9yaXR5IGNvcHBlciAqLworCQkvKiBEbyBub3RoaW5nLiBFc3NlbnRpYWxseSB0aGlzIGlzIGxpa2UgdGhlIHByaW9yaXR5IGNvcHBlciAqLwogCQlicmVhazsKIAljYXNlIFBPUlRfSFdfQ0ZHX1BIWV9TRUxFQ1RJT05fRklSU1RfUEhZX1BSSU9SSVRZOgogCQl2YWwgfD0gTURJT19DVExfUkVHXzg0ODIzX01FRElBX1BSSU9SSVRZX0NPUFBFUjsKQEAgLTc3NjUsNyArNzc2NSw3IEBACiAJUkVHX1dSKGJwLCBOSUdfUkVHX05JR19FTUFDMF9FTiArIHBvcnQqNCwgMCk7CiAKIAltc2xlZXAoMTApOwotCS8qIFRoZSBQSFkgcmVzZXQgaXMgY29udHJvbGVkIGJ5IEdQSU8gMQorCS8qIFRoZSBQSFkgcmVzZXQgaXMgY29udHJvbGxlZCBieSBHUElPIDEKIAkgKiBIb2xkIGl0IGFzIHZhcnMgbG93CiAJICovCiAJIC8qIGNsZWFyIGxpbmsgbGVkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9tYWluLmMgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9tYWluLmMKaW5kZXggMzJlNjRjYzguLmE5N2E0YTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2JueDJ4L2JueDJ4X21haW4uYworKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9tYWluLmMKQEAgLTM3MDIsNyArMzcwMiw3IEBACiAJaWYgKChod19jb25zICYgRVFfREVTQ19NQVhfUEFHRSkgPT0gRVFfREVTQ19NQVhfUEFHRSkKIAkJaHdfY29ucysrOwogCi0JLyogVGhpcyBmdW5jdGlvbiBtYXkgbmV2ZXIgcnVuIGluIHBhcnJhbGVsIHdpdGggaXRzZWxmIGZvciBhCisJLyogVGhpcyBmdW5jdGlvbiBtYXkgbmV2ZXIgcnVuIGluIHBhcmFsbGVsIHdpdGggaXRzZWxmIGZvciBhCiAJICogc3BlY2lmaWMgYnAsIHRodXMgdGhlcmUgaXMgbm8gbmVlZCBpbiAicGFpcmVkIiByZWFkIG1lbW9yeQogCSAqIGJhcnJpZXIgaGVyZS4KIAkgKi8KQEAgLTUwODksNyArNTA4OSw3IEBACiAJCS8qIFN0ZXAgMTogc2V0IHplcm9lcyB0byBhbGwgaWx0IHBhZ2UgZW50cmllcyB3aXRoIHZhbGlkIGJpdCBvbgogCQkgKiBTdGVwIDI6IHNldCB0aGUgdGltZXJzIGZpcnN0L2xhc3QgaWx0IGVudHJ5IHRvIHBvaW50CiAJCSAqIHRvIHRoZSBlbnRpcmUgcmFuZ2UgdG8gcHJldmVudCBJTFQgcmFuZ2UgZXJyb3IgZm9yIDNyZC80dGgKLQkJICogdm5pYwkodGhpcyBjb2RlIGFzc3VtZXMgZXhpc3RhbmNlIG9mIHRoZSB2bmljKQorCQkgKiB2bmljCSh0aGlzIGNvZGUgYXNzdW1lcyBleGlzdGVuY2Ugb2YgdGhlIHZuaWMpCiAJCSAqCiAJCSAqIGJvdGggc3RlcHMgcGVyZm9ybWVkIGJ5IGNhbGwgdG8gYm54MnhfaWx0X2NsaWVudF9pbml0X29wKCkKIAkJICogd2l0aCBkdW1teSBUTSBjbGllbnQKQEAgLTg2ODUsNyArODY4NSw3IEBACiAJCQkJRTFIX0ZVTkNfTUFYICogc2l6ZW9mKHN0cnVjdCBkcnZfZnVuY19tYik7CiAJCS8qCiAJCSAqIGdldCBtZiBjb25maWd1cmF0aW9uOgotCQkgKiAxLiBleGlzdGFuY2Ugb2YgTUYgY29uZmlndXJhdGlvbgorCQkgKiAxLiBleGlzdGVuY2Ugb2YgTUYgY29uZmlndXJhdGlvbgogCQkgKiAyLiBNQUMgYWRkcmVzcyBtdXN0IGJlIGxlZ2FsIChjaGVjayBvbmx5IHVwcGVyIGJ5dGVzKQogCQkgKiAgICBmb3IgIFN3aXRjaC1JbmRlcGVuZGVudCBtb2RlOwogCQkgKiAgICBPVkxBTiBtdXN0IGJlIGxlZ2FsIGZvciBTd2l0Y2gtRGVwZW5kZW50IG1vZGUKQEAgLTg3MjcsNyArODcyNyw3IEBACiAJCQlkZWZhdWx0OgogCQkJCS8qIFVua25vd24gY29uZmlndXJhdGlvbjogcmVzZXQgbWZfY29uZmlnICovCiAJCQkJYnAtPm1mX2NvbmZpZ1t2bl0gPSAwOwotCQkJCURQKE5FVElGX01TR19QUk9CRSwgIlVua293biBNRiBtb2RlIDB4JXhcbiIsCisJCQkJRFAoTkVUSUZfTVNHX1BST0JFLCAiVW5rbm93biBNRiBtb2RlIDB4JXhcbiIsCiAJCQkJICAgdmFsKTsKIAkJCX0KIAkJfQpAQCAtOTc3Nyw3ICs5Nzc3LDcgQEAKIAogI2VuZGlmCiAKLQkvKiBDb25maWd1cmUgaW50ZXJ1cHQgbW9kZTogdHJ5IHRvIGVuYWJsZSBNU0ktWC9NU0kgaWYKKwkvKiBDb25maWd1cmUgaW50ZXJydXB0IG1vZGU6IHRyeSB0byBlbmFibGUgTVNJLVgvTVNJIGlmCiAJICogbmVlZGVkLCBzZXQgYnAtPm51bV9xdWV1ZXMgYXBwcm9wcmlhdGVseS4KIAkgKi8KIAlibngyeF9zZXRfaW50X21vZGUoYnApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvYm54MngvYm54MnhfcmVnLmggYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaAppbmRleCAxYzg5ZjE5Li4xNTA5YTIzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaAorKysgYi9kcml2ZXJzL25ldC9ibngyeC9ibngyeF9yZWcuaApAQCAtMTc1LDkgKzE3NSw5IEBACiAgICB0aGUgaW5pdGlhbCBjcmVkaXQgdmFsdWU7IHJlYWQgcmV0dXJucyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY3JlZGl0CiAgICBjb3VudGVyLiBNdXN0IGJlIGluaXRpYWxpemVkIHRvIDEgYXQgc3RhcnQtdXAuICovCiAjZGVmaW5lIENDTV9SRUdfQ0ZDX0lOSVRfQ1JECQkJCQkgMHhkMDIwNAotLyogW1JXIDJdIEF1eGlsbGFyeSBjb3VudGVyIGZsYWcgUSBudW1iZXIgMS4gKi8KKy8qIFtSVyAyXSBBdXhpbGlhcnkgY291bnRlciBmbGFnIFEgbnVtYmVyIDEuICovCiAjZGVmaW5lIENDTV9SRUdfQ05UX0FVWDFfUQkJCQkJIDB4ZDAwYzgKLS8qIFtSVyAyXSBBdXhpbGxhcnkgY291bnRlciBmbGFnIFEgbnVtYmVyIDIuICovCisvKiBbUlcgMl0gQXV4aWxpYXJ5IGNvdW50ZXIgZmxhZyBRIG51bWJlciAyLiAqLwogI2RlZmluZSBDQ01fUkVHX0NOVF9BVVgyX1EJCQkJCSAweGQwMGNjCiAvKiBbUlcgMjhdIFRoZSBDTSBoZWFkZXIgdmFsdWUgZm9yIFFNIHJlcXVlc3QgKHByaW1hcnkpLiAqLwogI2RlZmluZSBDQ01fUkVHX0NRTV9DQ01fSERSX1AJCQkJCSAweGQwMDhjCkBAIC00NTcsMTMgKzQ1NywxMyBAQAogI2RlZmluZSBDU0RNX1JFR19BR0dfSU5UX01PREVfOSAJCQkJIDB4YzIxZGMKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNmY19yc3AgbGNpZCAqLwogI2RlZmluZSBDU0RNX1JFR19DRkNfUlNQX1NUQVJUX0FERFIJCQkJIDB4YzIwMDgKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMwICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzAgKi8KICNkZWZpbmUgQ1NETV9SRUdfQ01QX0NPVU5URVJfTUFYMAkJCQkgMHhjMjAxYwotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzEgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMSAqLwogI2RlZmluZSBDU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgxCQkJCSAweGMyMDIwCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMiAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMyICovCiAjZGVmaW5lIENTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDIJCQkJIDB4YzIwMjQKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMzICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzMgKi8KICNkZWZpbmUgQ1NETV9SRUdfQ01QX0NPVU5URVJfTUFYMwkJCQkgMHhjMjAyOAogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY29tcGxldGlvbgogICAgY291bnRlcnMuICovCkBAIC04NTEsNyArODUxLDcgQEAKICNkZWZpbmUgSUdVX1JFR19BVFROX01TR19BRERSX0wJCQkJIDB4MTMwMTIwCiAvKiBbUiA0XSBEZWJ1ZzogWzNdIC0gYXR0ZW50aW9uIHdyaXRlIGRvbmUgbWVzc2FnZSBpcyBwZW5kaW5nICgwLW5vIHBlbmRpbmc7CiAgKiAxLXBlbmRpbmcpLiBbMjowXSA9IFBGSUQuIFBlbmRpbmcgbWVhbnMgYXR0ZW50aW9uIG1lc3NhZ2Ugd2FzIHNlbnQ7IGJ1dAotICogd3JpdGUgZG9uZSBkaWRudCByZWNlaXZlLiAqLworICogd3JpdGUgZG9uZSBkaWRuJ3QgcmVjZWl2ZS4gKi8KICNkZWZpbmUgSUdVX1JFR19BVFROX1dSSVRFX0RPTkVfUEVORElORwkJCSAweDEzMDAzMAogI2RlZmluZSBJR1VfUkVHX0JMT0NLX0NPTkZJR1VSQVRJT04JCQkJIDB4MTMwMDAwCiAjZGVmaW5lIElHVV9SRUdfQ09NTUFORF9SRUdfMzJMU0JfREFUQQkJCQkgMHgxMzAxMjQKQEAgLTg2Miw3ICs4NjIsNyBAQAogI2RlZmluZSBJR1VfUkVHX0NTVE9STV9UWVBFXzBfU0JfQ0xFQU5VUAkJCSAweDEzMDIwMAogLyogW1IgNV0gRGVidWc6IGN0cmxfZnNtICovCiAjZGVmaW5lIElHVV9SRUdfQ1RSTF9GU00JCQkJCSAweDEzMDA2NAotLyogW1IgMV0gZGF0YSBhdmFpbGJsZSBmb3IgZXJyb3IgbWVtb3J5LiBJZiB0aGlzIGJpdCBpcyBjbGVhciBkbyBub3QgcmVkCisvKiBbUiAxXSBkYXRhIGF2YWlsYWJsZSBmb3IgZXJyb3IgbWVtb3J5LiBJZiB0aGlzIGJpdCBpcyBjbGVhciBkbyBub3QgcmVkCiAgKiBmcm9tIGVycm9yX2hhbmRsaW5nX21lbW9yeS4gKi8KICNkZWZpbmUgSUdVX1JFR19FUlJPUl9IQU5ETElOR19EQVRBX1ZBTElECQkJIDB4MTMwMTMwCiAvKiBbUlcgMTFdIFBhcml0eSBtYXNrIHJlZ2lzdGVyICMwIHJlYWQvd3JpdGUgKi8KQEAgLTMwMTUsNyArMzAxNSw3IEBACiAgICBibG9jay4gU2hvdWxkIGJlIHVzZWQgZm9yIGNsb3NlIHRoZSBnYXRlcy4gKi8KICNkZWZpbmUgUFhQX1JFR19IU1RfRElTQ0FSRF9ET09SQkVMTFMJCQkJIDB4MTAzMGE0CiAvKiBbUiAxXSBkZWJ1ZyBvbmx5OiAnMScgbWVhbnMgdGhpcyBQU1dIU1QgaXMgZGlzY2FyZGluZyBkb29yYmVsbHMuIFRoaXMgYml0Ci0gICBzaG91bGQgdXBkYXRlIGFjY29yaW5nIHRvICdoc3RfZGlzY2FyZF9kb29yYmVsbHMnIHJlZ2lzdGVyIHdoZW4gdGhlIHN0YXRlCisgICBzaG91bGQgdXBkYXRlIGFjY29yZGluZyB0byAnaHN0X2Rpc2NhcmRfZG9vcmJlbGxzJyByZWdpc3RlciB3aGVuIHRoZSBzdGF0ZQogICAgbWFjaGluZSBpcyBpZGxlICovCiAjZGVmaW5lIFBYUF9SRUdfSFNUX0RJU0NBUkRfRE9PUkJFTExTX1NUQVRVUwkJCSAweDEwMzBhMAogLyogW1JXIDFdIFdoZW4gMTsgbmV3IGludGVybmFsIHdyaXRlcyBhcnJpdmluZyB0byB0aGUgYmxvY2sgYXJlIGRpc2NhcmRlZC4KQEAgLTMwMjMsNyArMzAyMyw3IEBACiAjZGVmaW5lIFBYUF9SRUdfSFNUX0RJU0NBUkRfSU5URVJOQUxfV1JJVEVTCQkJIDB4MTAzMGE4CiAvKiBbUiA2XSBkZWJ1ZyBvbmx5OiBBIGJpdCBtYXNrIGZvciBhbGwgUFNXSFNUIGludGVybmFsIHdyaXRlIGNsaWVudHMuICcxJwogICAgbWVhbnMgdGhpcyBQU1dIU1QgaXMgZGlzY2FyZGluZyBpbnB1dHMgZnJvbSB0aGlzIGNsaWVudC4gRWFjaCBiaXQgc2hvdWxkCi0gICB1cGRhdGUgYWNjb3JpbmcgdG8gJ2hzdF9kaXNjYXJkX2ludGVybmFsX3dyaXRlcycgcmVnaXN0ZXIgd2hlbiB0aGUgc3RhdGUKKyAgIHVwZGF0ZSBhY2NvcmRpbmcgdG8gJ2hzdF9kaXNjYXJkX2ludGVybmFsX3dyaXRlcycgcmVnaXN0ZXIgd2hlbiB0aGUgc3RhdGUKICAgIG1hY2hpbmUgaXMgaWRsZS4gKi8KICNkZWZpbmUgUFhQX1JFR19IU1RfRElTQ0FSRF9JTlRFUk5BTF9XUklURVNfU1RBVFVTCQkgMHgxMDMwOWMKIC8qIFtXQiAxNjBdIFVzZWQgZm9yIGluaXRpYWxpemF0aW9uIG9mIHRoZSBpbmJvdW5kIGludGVycnVwdHMgbWVtb3J5ICovCkBAIC0zODIyLDEzICszODIyLDEzIEBACiAjZGVmaW5lIFRTRE1fUkVHX0FHR19JTlRfVF8xCQkJCQkgMHg0MjBiYwogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY2ZjX3JzcCBsY2lkICovCiAjZGVmaW5lIFRTRE1fUkVHX0NGQ19SU1BfU1RBUlRfQUREUgkJCQkgMHg0MjAwOAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzAgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMCAqLwogI2RlZmluZSBUU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgwCQkJCSAweDQyMDFjCi0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMSAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMxICovCiAjZGVmaW5lIFRTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDEJCQkJIDB4NDIwMjAKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMyICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzIgKi8KICNkZWZpbmUgVFNETV9SRUdfQ01QX0NPVU5URVJfTUFYMgkJCQkgMHg0MjAyNAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzMgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMyAqLwogI2RlZmluZSBUU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgzCQkJCSAweDQyMDI4CiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjb21wbGV0aW9uCiAgICBjb3VudGVycy4gKi8KQEAgLTQyODQsMTMgKzQyODQsMTMgQEAKICNkZWZpbmUgVVNETV9SRUdfQUdHX0lOVF9UXzYJCQkJCSAweGM0MGQwCiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjZmNfcnNwIGxjaWQgKi8KICNkZWZpbmUgVVNETV9SRUdfQ0ZDX1JTUF9TVEFSVF9BRERSCQkJCSAweGM0MDA4Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMCAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMwICovCiAjZGVmaW5lIFVTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDAJCQkJIDB4YzQwMWMKLS8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBldGlvbiBjb3VudGVyICMxICovCisvKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wbGV0aW9uIGNvdW50ZXIgIzEgKi8KICNkZWZpbmUgVVNETV9SRUdfQ01QX0NPVU5URVJfTUFYMQkJCQkgMHhjNDAyMAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzIgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMiAqLwogI2RlZmluZSBVU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgyCQkJCSAweGM0MDI0Ci0vKiBbUlcgMTZdIFRoZSBtYXhpbXVtIHZhbHVlIG9mIHRoZSBjb21wZXRpb24gY291bnRlciAjMyAqLworLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGxldGlvbiBjb3VudGVyICMzICovCiAjZGVmaW5lIFVTRE1fUkVHX0NNUF9DT1VOVEVSX01BWDMJCQkJIDB4YzQwMjgKIC8qIFtSVyAxM10gVGhlIHN0YXJ0IGFkZHJlc3MgaW4gdGhlIGludGVybmFsIFJBTSBmb3IgdGhlIGNvbXBsZXRpb24KICAgIGNvdW50ZXJzLiAqLwpAQCAtNDc5OCwxMyArNDc5OCwxMyBAQAogI2RlZmluZSBYU0RNX1JFR19BR0dfSU5UX01PREVfMSAJCQkJIDB4MTY2MWJjCiAvKiBbUlcgMTNdIFRoZSBzdGFydCBhZGRyZXNzIGluIHRoZSBpbnRlcm5hbCBSQU0gZm9yIHRoZSBjZmNfcnNwIGxjaWQgKi8KICNkZWZpbmUgWFNETV9SRUdfQ0ZDX1JTUF9TVEFSVF9BRERSCQkJCSAweDE2NjAwOAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzAgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMCAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgwCQkJCSAweDE2NjAxYwotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzEgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMSAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgxCQkJCSAweDE2NjAyMAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzIgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMiAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgyCQkJCSAweDE2NjAyNAotLyogW1JXIDE2XSBUaGUgbWF4aW11bSB2YWx1ZSBvZiB0aGUgY29tcGV0aW9uIGNvdW50ZXIgIzMgKi8KKy8qIFtSVyAxNl0gVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIGNvbXBsZXRpb24gY291bnRlciAjMyAqLwogI2RlZmluZSBYU0RNX1JFR19DTVBfQ09VTlRFUl9NQVgzCQkJCSAweDE2NjAyOAogLyogW1JXIDEzXSBUaGUgc3RhcnQgYWRkcmVzcyBpbiB0aGUgaW50ZXJuYWwgUkFNIGZvciB0aGUgY29tcGxldGlvbgogICAgY291bnRlcnMuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmggYi9kcml2ZXJzL25ldC9ib25kaW5nL2JvbmRfYWxiLmgKaW5kZXggNGIzZTM1OC4uODY4NjFmMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvYm9uZGluZy9ib25kX2FsYi5oCisrKyBiL2RyaXZlcnMvbmV0L2JvbmRpbmcvYm9uZF9hbGIuaApAQCAtNzYsNyArNzYsNyBAQAogCQkJCSAqLwogCXUzMiB0eF9ieXRlczsJCS8qIEVhY2ggQ2xpZW50IGFjY3VtdWxhdGVzIHRoZSBCeXRlc1R4IHRoYXQKIAkJCQkgKiB3ZXJlIHRyYW5taXR0ZWQgdG8gaXQsIGFuZCBhZnRlciBlYWNoCi0JCQkJICogQ2FsbEJhY2sgdGhlIExvYWRIaXN0b3J5IGlzIGRldmlkZWQKKwkJCQkgKiBDYWxsQmFjayB0aGUgTG9hZEhpc3RvcnkgaXMgZGl2aWRlZAogCQkJCSAqIGJ5IHRoZSBiYWxhbmNlIGludGVydmFsCiAJCQkJICovCiAJdTMyIGxvYWRfaGlzdG9yeTsJLyogVGhpcyBmaWVsZCBjb250YWlucyB0aGUgYW1vdW50IG9mIEJ5dGVzCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc2htY29yZS5jIGIvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NobWNvcmUuYwppbmRleCA4MDUxMTE2Li43MzFhYTExIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc2htY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zaG1jb3JlLmMKQEAgLTU5MSw3ICs1OTEsNyBAQAogCQkJKE5SX1RYX0JVRiAqIFRYX0JVRl9TWiArIE5SX1JYX0JVRiAqIFJYX0JVRl9TWikpIHsKIAogCQlwcl93YXJuKCJFUlJPUiwgQW1vdW50IG9mIGF2YWlsYWJsZSIKLQkJCQkiIFBoeXMuIFNITSBjYW5ub3QgYWNjb21vZGF0ZSBjdXJyZW50IFNITSAiCisJCQkJIiBQaHlzLiBTSE0gY2Fubm90IGFjY29tbW9kYXRlIGN1cnJlbnQgU0hNICIKIAkJCQkiZHJpdmVyIGNvbmZpZ3VyYXRpb24sIEJhaWxpbmcgb3V0IC4uLlxuIik7CiAJCWZyZWVfbmV0ZGV2KHBzaG1fZGV2LT5wc2htX25ldGRldik7CiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaS5jIGIvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaS5jCmluZGV4IDIwZGExOTkuLjU3ZTYzOTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGkuYworKysgYi9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpLmMKQEAgLTM5Nyw3ICszOTcsNyBAQAogCWludCBwa3RzID0gMDsKIAogCS8qCi0JICogRGVjb21taXQgcHJldmlvdXNseSBjb21taXRlZCBmcmFtZXMuCisJICogRGVjb21taXQgcHJldmlvdXNseSBjb21taXR0ZWQgZnJhbWVzLgogCSAqIHNrYl9xdWV1ZV9zcGxpY2VfdGFpbCgmY2ZzcGktPmNoZWFkLCZjZnNwaS0+cWhlYWQpCiAJICovCiAJd2hpbGUgKHNrYl9wZWVrKCZjZnNwaS0+Y2hlYWQpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpX3NsYXZlLmMgYi9kcml2ZXJzL25ldC9jYWlmL2NhaWZfc3BpX3NsYXZlLmMKaW5kZXggMWI5OTQzYS4uYjAwOWUwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FpZi9jYWlmX3NwaV9zbGF2ZS5jCisrKyBiL2RyaXZlcnMvbmV0L2NhaWYvY2FpZl9zcGlfc2xhdmUuYwpAQCAtOTgsNyArOTgsNyBAQAogCiAJCQljZnNwaV9kYmdfc3RhdGUoY2ZzcGksIENGU1BJX1NUQVRFX0ZFVENIX1BLVCk7CiAKLQkJCS8qIENvcHkgY29tbWl0ZWQgU1BJIGZyYW1lcyBhZnRlciB0aGUgU1BJIGluZGljYXRpb24uICovCisJCQkvKiBDb3B5IGNvbW1pdHRlZCBTUEkgZnJhbWVzIGFmdGVyIHRoZSBTUEkgaW5kaWNhdGlvbi4gKi8KIAkJCXB0ciA9ICh1OCAqKSBjZnNwaS0+eGZlci52YV90eDsKIAkJCXB0ciArPSBTUElfSU5EX1NaOwogCQkJbGVuID0gY2ZzcGlfeG1pdGZybShjZnNwaSwgcHRyLCBjZnNwaS0+dHhfY3Bja19sZW4pOwpAQCAtMTU4LDcgKzE1OCw3IEBACiAKIAkJY2ZzcGlfZGJnX3N0YXRlKGNmc3BpLCBDRlNQSV9TVEFURV9TSUdfQUNUSVZFKTsKIAotCQkvKiBTaWduYWwgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gcmVjaWV2ZSBkYXRhLiAqLworCQkvKiBTaWduYWwgdGhhdCB3ZSBhcmUgcmVhZHkgdG8gcmVjZWl2ZSBkYXRhLiAqLwogCQljZnNwaS0+ZGV2LT5zaWdfeGZlcih0cnVlLCBjZnNwaS0+ZGV2KTsKIAogCQljZnNwaV9kYmdfc3RhdGUoY2ZzcGksIENGU1BJX1NUQVRFX1dBSVRfWEZFUl9ET05FKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9hdDkxX2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMKaW5kZXggNTdkMmZmYi4uNzRlZmI1YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL2F0OTFfY2FuLmMKQEAgLTQxNiw3ICs0MTYsNyBAQAogCiAJc3RhdHMtPnR4X2J5dGVzICs9IGNmLT5jYW5fZGxjOwogCi0JLyogX05PVEVfOiBzdWJzdHJhY3QgQVQ5MV9NQl9UWF9GSVJTVCBvZmZzZXQgZnJvbSBtYiEgKi8KKwkvKiBfTk9URV86IHN1YnRyYWN0IEFUOTFfTUJfVFhfRklSU1Qgb2Zmc2V0IGZyb20gbWIhICovCiAJY2FuX3B1dF9lY2hvX3NrYihza2IsIGRldiwgbWIgLSBBVDkxX01CX1RYX0ZJUlNUKTsKIAogCS8qCkBAIC03ODIsNyArNzgyLDcgQEAKIAkJcmVnX21zciA9IGF0OTFfcmVhZChwcml2LCBBVDkxX01TUihtYikpOwogCQlpZiAobGlrZWx5KHJlZ19tc3IgJiBBVDkxX01TUl9NUkRZICYmCiAJCQkgICB+cmVnX21zciAmIEFUOTFfTVNSX01BQlQpKSB7Ci0JCQkvKiBfTk9URV86IHN1YnN0cmFjdCBBVDkxX01CX1RYX0ZJUlNUIG9mZnNldCBmcm9tIG1iISAqLworCQkJLyogX05PVEVfOiBzdWJ0cmFjdCBBVDkxX01CX1RYX0ZJUlNUIG9mZnNldCBmcm9tIG1iISAqLwogCQkJY2FuX2dldF9lY2hvX3NrYihkZXYsIG1iIC0gQVQ5MV9NQl9UWF9GSVJTVCk7CiAJCQlkZXYtPnN0YXRzLnR4X3BhY2tldHMrKzsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL2NfY2FuL2NfY2FuLmMgYi9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW4uYwppbmRleCAzMTU1Mjk1Li43ZTVjYzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW4uYworKysgYi9kcml2ZXJzL25ldC9jYW4vY19jYW4vY19jYW4uYwpAQCAtODEzLDcgKzgxMyw3IEBACiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAlzdHJ1Y3QgY2FuX2JlcnJfY291bnRlciBiZWM7CiAKLQkvKiBwcm9wb2dhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgQ0FOIHN0YWNrICovCisJLyogcHJvcGFnYXRlIHRoZSBlcnJvciBjb25kaXRpb24gdG8gdGhlIENBTiBzdGFjayAqLwogCXNrYiA9IGFsbG9jX2Nhbl9lcnJfc2tiKGRldiwgJmNmKTsKIAlpZiAodW5saWtlbHkoIXNrYikpCiAJCXJldHVybiAwOwpAQCAtODg3LDcgKzg4Nyw3IEBACiAJaWYgKGxlY190eXBlID09IExFQ19VTlVTRUQgfHwgbGVjX3R5cGUgPT0gTEVDX05PX0VSUk9SKQogCQlyZXR1cm4gMDsKIAotCS8qIHByb3BvZ2F0ZSB0aGUgZXJyb3IgY29uZGl0aW9uIHRvIHRoZSBDQU4gc3RhY2sgKi8KKwkvKiBwcm9wYWdhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgQ0FOIHN0YWNrICovCiAJc2tiID0gYWxsb2NfY2FuX2Vycl9za2IoZGV2LCAmY2YpOwogCWlmICh1bmxpa2VseSghc2tiKSkKIAkJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jIGIvZHJpdmVycy9uZXQvY2FuL2phbnotaWNhbjMuYwppbmRleCAxMDJiMTZjLi41ODdmYmE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vamFuei1pY2FuMy5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhbi9qYW56LWljYW4zLmMKQEAgLTI3NCw3ICsyNzQsNyBAQAogICovCiAKIC8qCi0gKiBSZWNpZXZlIGEgbWVzc2FnZSBmcm9tIHRoZSBJQ0FOMyAib2xkLXN0eWxlIiBmaXJtd2FyZSBpbnRlcmZhY2UKKyAqIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIElDQU4zICJvbGQtc3R5bGUiIGZpcm13YXJlIGludGVyZmFjZQogICoKICAqIExPQ0tJTkc6IG11c3QgaG9sZCBtb2QtPmxvY2sKICAqCkBAIC0xMDUwLDcgKzEwNTAsNyBAQAogCQljb21wbGV0ZSgmbW9kLT50ZXJtaW5hdGlvbl9jb21wKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKLQkJZGV2X2Vycihtb2QtPmRldiwgInJlY2lldmVkIGFuIHVua25vd24gaW5xdWlyeSByZXNwb25zZVxuIik7CisJCWRldl9lcnIobW9kLT5kZXYsICJyZWNlaXZlZCBhbiB1bmtub3duIGlucXVpcnkgcmVzcG9uc2VcbiIpOwogCQlicmVhazsKIAl9CiB9CkBAIC0xMDU4LDcgKzEwNTgsNyBAQAogc3RhdGljIHZvaWQgaWNhbjNfaGFuZGxlX3Vua25vd25fbWVzc2FnZShzdHJ1Y3QgaWNhbjNfZGV2ICptb2QsCiAJCQkJCXN0cnVjdCBpY2FuM19tc2cgKm1zZykKIHsKLQlkZXZfd2Fybihtb2QtPmRldiwgInJlY2lldmVkIHVua25vd24gbWVzc2FnZTogc3BlYyAweCUuMnggbGVuZ3RoICVkXG4iLAorCWRldl93YXJuKG1vZC0+ZGV2LCAicmVjZWl2ZWQgdW5rbm93biBtZXNzYWdlOiBzcGVjIDB4JS4yeCBsZW5ndGggJWRcbiIsCiAJCQkgICBtc2ctPnNwZWMsIGxlMTZfdG9fY3B1KG1zZy0+bGVuKSk7CiB9CiAKQEAgLTExMTMsNyArMTExMyw3IEBACiB9CiAKIC8qCi0gKiBSZWNpZXZlIG9uZSBDQU4gZnJhbWUgZnJvbSB0aGUgaGFyZHdhcmUKKyAqIFJlY2VpdmUgb25lIENBTiBmcmFtZSBmcm9tIHRoZSBoYXJkd2FyZQogICoKICAqIENPTlRFWFQ6IG11c3QgYmUgY2FsbGVkIGZyb20gdXNlciBjb250ZXh0CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9tc2Nhbi9tc2Nhbi5jIGIvZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmMKaW5kZXggNzRjZDg4MC4uOTJmZWFjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL21zY2FuL21zY2FuLmMKQEAgLTI0Niw3ICsyNDYsNyBAQAogCQlvdXRfYmUxNigmcmVncy0+dHguaWRyM18yLCBjYW5faWQpOwogCiAJCWNhbl9pZCA+Pj0gMTY7Ci0JCS8qIEVGRl9GTEFHUyBhcmUgaW5iZXR3ZWVuIHRoZSBJRHMgOiggKi8KKwkJLyogRUZGX0ZMQUdTIGFyZSBiZXR3ZWVuIHRoZSBJRHMgOiggKi8KIAkJY2FuX2lkID0gKGNhbl9pZCAmIDB4NykgfCAoKGNhbl9pZCA8PCAyKSAmIDB4ZmZlMCkKIAkJCSB8IE1TQ0FOX0VGRl9GTEFHUzsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jIGIvZHJpdmVycy9uZXQvY2FuL3NqYTEwMDAvc2phMTAwMC5jCmluZGV4IDBhOGRlMDEuLmEzNThlYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9zamExMDAwL3NqYTEwMDAuYworKysgYi9kcml2ZXJzL25ldC9jYW4vc2phMTAwMC9zamExMDAwLmMKQEAgLTQyNSw3ICs0MjUsNyBAQAogCQkJY2YtPmRhdGFbM10gPSBlY2MgJiBFQ0NfU0VHOwogCQkJYnJlYWs7CiAJCX0KLQkJLyogRXJyb3Igb2NjdXJlZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLworCQkvKiBFcnJvciBvY2N1cnJlZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLwogCQlpZiAoKGVjYyAmIEVDQ19ESVIpID09IDApCiAJCQljZi0+ZGF0YVsyXSB8PSBDQU5fRVJSX1BST1RfVFg7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZy5oIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZy5oCmluZGV4IDdlYzlmNGQuLmFmZDdkODUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmcuaAorKysgYi9kcml2ZXJzL25ldC9jYW4vc29mdGluZy9zb2Z0aW5nLmgKQEAgLTIyLDcgKzIyLDcgQEAKIAlzdHJ1Y3Qgc29mdGluZyAqY2FyZDsKIAlzdHJ1Y3QgewogCQlpbnQgcGVuZGluZzsKLQkJLyogdmFyaWFibGVzIHdpY2ggaG9sZCB0aGUgY2lyY3VsYXIgYnVmZmVyICovCisJCS8qIHZhcmlhYmxlcyB3aGljaCBob2xkIHRoZSBjaXJjdWxhciBidWZmZXIgKi8KIAkJaW50IGVjaG9fcHV0OwogCQlpbnQgZWNob19nZXQ7CiAJfSB0eDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi9zb2Z0aW5nL3NvZnRpbmdfbWFpbi5jIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMKaW5kZXggYWVlYTlmOS4uN2E3MDcwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3NvZnRpbmcvc29mdGluZ19tYWluLmMKQEAgLTIxOCw3ICsyMTgsNyBAQAogCXB0ciA9IGJ1ZjsKIAljbWQgPSAqcHRyKys7CiAJaWYgKGNtZCA9PSAweGZmKQotCQkvKiBub3QgcXVpdGUgdXNlZnVsbCwgcHJvYmFibHkgdGhlIGNhcmQgaGFzIGdvdCBvdXQgKi8KKwkJLyogbm90IHF1aXRlIHVzZWZ1bCwgcHJvYmFibHkgdGhlIGNhcmQgaGFzIGdvdCBvdXQgKi8KIAkJcmV0dXJuIDA7CiAJbmV0ZGV2ID0gY2FyZC0+bmV0WzBdOwogCWlmIChjbWQgJiBDTURfQlVTMikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMgYi9kcml2ZXJzL25ldC9jYW4vdGlfaGVjYy5jCmluZGV4IDRkMDdmMWUuLmY3YmJkZTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2Nhbi90aV9oZWNjLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3RpX2hlY2MuYwpAQCAtNjYzLDcgKzY2Myw3IEBACiAJc3RydWN0IGNhbl9mcmFtZSAqY2Y7CiAJc3RydWN0IHNrX2J1ZmYgKnNrYjsKIAotCS8qIHByb3BvZ2F0ZSB0aGUgZXJyb3IgY29uZGl0aW9uIHRvIHRoZSBjYW4gc3RhY2sgKi8KKwkvKiBwcm9wYWdhdGUgdGhlIGVycm9yIGNvbmRpdGlvbiB0byB0aGUgY2FuIHN0YWNrICovCiAJc2tiID0gYWxsb2NfY2FuX2Vycl9za2IobmRldiwgJmNmKTsKIAlpZiAoIXNrYikgewogCQlpZiAocHJpbnRrX3JhdGVsaW1pdCgpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2FuL3VzYi9lbXNfdXNiLmMgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYwppbmRleCBlNzVmMWE4Li5hNzJjN2JmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYworKysgYi9kcml2ZXJzL25ldC9jYW4vdXNiL2Vtc191c2IuYwpAQCAtMzg2LDcgKzM4Niw3IEBACiAJCQlicmVhazsKIAkJfQogCi0JCS8qIEVycm9yIG9jY3VyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KKwkJLyogRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KIAkJaWYgKChlY2MgJiBTSkExMDAwX0VDQ19ESVIpID09IDApCiAJCQljZi0+ZGF0YVsyXSB8PSBDQU5fRVJSX1BST1RfVFg7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYjIuYyBiL2RyaXZlcnMvbmV0L2Nhbi91c2IvZXNkX3VzYjIuYwppbmRleCBkYzUzYzgzLi5lYjhiMGU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYW4vdXNiL2VzZF91c2IyLmMKKysrIGIvZHJpdmVycy9uZXQvY2FuL3VzYi9lc2RfdXNiMi5jCkBAIC0yODQsNyArMjg0LDcgQEAKIAkJCQlicmVhazsKIAkJCX0KIAotCQkJLyogRXJyb3Igb2NjdXJlZCBkdXJpbmcgdHJhbnNtaXNzaW9uPyAqLworCQkJLyogRXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRyYW5zbWlzc2lvbj8gKi8KIAkJCWlmICghKGVjYyAmIFNKQTEwMDBfRUNDX0RJUikpCiAJCQkJY2YtPmRhdGFbMl0gfD0gQ0FOX0VSUl9QUk9UX1RYOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jYXNzaW5pLmMgYi9kcml2ZXJzL25ldC9jYXNzaW5pLmMKaW5kZXggMzQzNzYxMy4uMTQzYTI4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2Fzc2luaS5jCisrKyBiL2RyaXZlcnMvbmV0L2Nhc3NpbmkuYwpAQCAtNTEsNyArNTEsNyBAQAogICogVFggaGFzIDQgcXVldWVzLiBjdXJyZW50bHkgdGhlc2UgcXVldWVzIGFyZSB1c2VkIGluIGEgcm91bmQtcm9iaW4KICAqIGZhc2hpb24gZm9yIGxvYWQgYmFsYW5jaW5nLiBUaGV5IGNhbiBhbHNvIGJlIHVzZWQgZm9yIFFvUy4gZm9yIHRoYXQKICAqIHRvIHdvcmssIGhvd2V2ZXIsIFFvUyBpbmZvcm1hdGlvbiBuZWVkcyB0byBiZSBleHBvc2VkIGRvd24gdG8gdGhlIGRyaXZlcgotICogbGV2ZWwgc28gdGhhdCBzdWJxdWV1ZXMgZ2V0IHRhcmdldHRlZCB0byBwYXJ0aWN1bGFyIHRyYW5zbWl0IHJpbmdzLgorICogbGV2ZWwgc28gdGhhdCBzdWJxdWV1ZXMgZ2V0IHRhcmdldGVkIHRvIHBhcnRpY3VsYXIgdHJhbnNtaXQgcmluZ3MuCiAgKiBhbHRlcm5hdGl2ZWx5LCB0aGUgcXVldWVzIGNhbiBiZSBjb25maWd1cmVkIHZpYSB1c2Ugb2YgdGhlIGFsbC1wdXJwb3NlCiAgKiBpb2N0bC4KICAqCkBAIC01MTY1LDcgKzUxNjUsNyBAQAogCXBjaV9yZWxlYXNlX3JlZ2lvbnMocGRldik7CiAKIGVycl93cml0ZV9jYWNoZWxpbmU6Ci0JLyogVHJ5IHRvIHJlc3RvcmUgaXQgaW4gY2FzZSB0aGUgZXJyb3Igb2NjdXJlZCBhZnRlciB3ZQorCS8qIFRyeSB0byByZXN0b3JlIGl0IGluIGNhc2UgdGhlIGVycm9yIG9jY3VycmVkIGFmdGVyIHdlCiAJICogc2V0IGl0LgogCSAqLwogCXBjaV93cml0ZV9jb25maWdfYnl0ZShwZGV2LCBQQ0lfQ0FDSEVfTElORV9TSVpFLCBvcmlnX2NhY2hlbGluZV9zaXplKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2Nhc3NpbmkuaCBiL2RyaXZlcnMvbmV0L2Nhc3NpbmkuaAppbmRleCBmYWY0NzQ2Li5iMzYxNDI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jYXNzaW5pLmgKKysrIGIvZHJpdmVycy9uZXQvY2Fzc2luaS5oCkBAIC03NzIsNyArNzcyLDcgQEAKICNkZWZpbmUgICAgUlhfREVCVUdfSU5UUl9XUklURV9QVFJfTUFTSyAgICAweEMwMDAwMDAwIC8qIGludGVycnVwdCB3cml0ZSBwb2ludGVyCiAJCQkJCQkJIG9mIHRoZSBpbnRlcnJ1cHQgcXVldWUgKi8KIAotLyogZmxvdyBjb250cm9sIGZyYW1lcyBhcmUgZW1taXR0ZWQgdXNpbmcgdHdvIFBBVVNFIHRocmVzaG9sZHM6CisvKiBmbG93IGNvbnRyb2wgZnJhbWVzIGFyZSBlbWl0dGVkIHVzaW5nIHR3byBQQVVTRSB0aHJlc2hvbGRzOgogICogWE9GRiBQQVVTRSB1c2VzIHBhdXNlIHRpbWUgdmFsdWUgcHJlLXByb2dyYW1tZWQgaW4gdGhlIFNlbmQgUEFVU0UgTUFDIHJlZwogICogWE9OIFBBVVNFIHVzZXMgYSBwYXVzZSB0aW1lIG9mIDAuIGdyYW51bGFyaXR5IG9mIHRocmVzaG9sZCBpcyA2NGJ5dGVzLgogICogUEFVU0UgdGhyZXNob2xkcyBkZWZpbmVkIGluIHRlcm1zIG9mIEZJRk8gb2NjdXBhbmN5IGFuZCBtYXkgYmUgdHJhbnNsYXRlZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2hlbHNpby9tdjg4ZTF4eHguYyBiL2RyaXZlcnMvbmV0L2NoZWxzaW8vbXY4OGUxeHh4LmMKaW5kZXggODA5MDQ3YS4uNzEwMThhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2hlbHNpby9tdjg4ZTF4eHguYworKysgYi9kcml2ZXJzL25ldC9jaGVsc2lvL212ODhlMXh4eC5jCkBAIC00MSw3ICs0MSw3IEBACiAgKgogICogUEFSQU1TOiBjcGh5ICAgICAtIFBvaW50ZXIgdG8gUEhZIGluc3RhbmNlIGRhdGEuCiAgKgotICogUkVUVVJOOiAgMCAtIFN1Y2Nlc3NmdWxsIHJlc2V0LgorICogUkVUVVJOOiAgMCAtIFN1Y2Nlc3NmdWwgcmVzZXQuCiAgKiAgICAgICAgIC0xIC0gVGltZW91dC4KICAqLwogc3RhdGljIGludCBtdjg4ZTF4eHhfcmVzZXQoc3RydWN0IGNwaHkgKmNwaHksIGludCB3YWl0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2hlbHNpby9wbTMzOTMuYyBiL2RyaXZlcnMvbmV0L2NoZWxzaW8vcG0zMzkzLmMKaW5kZXggN2RiYjE2ZC4uNDBjN2I5MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY2hlbHNpby9wbTMzOTMuYworKysgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3BtMzM5My5jCkBAIC0yOTMsNyArMjkzLDcgQEAKIAlwbTMzOTNfZW5hYmxlKGNtYWMsIHdoaWNoKTsKIAogCS8qCi0JICogWFhYIFRoaXMgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIFBIWSBhbmQgcHJlZmVycmFibHkgbm90IGF0IGFsbC4KKwkgKiBYWFggVGhpcyBzaG91bGQgYmUgZG9uZSBieSB0aGUgUEhZIGFuZCBwcmVmZXJhYmx5IG5vdCBhdCBhbGwuCiAJICogVGhlIFBIWSBkb2Vzbid0IGdpdmUgdXMgbGluayBzdGF0dXMgaW5kaWNhdGlvbiBvbiBpdHMgb3duIHNvIGhhdmUKIAkgKiB0aGUgbGluayBtYW5hZ2VtZW50IGNvZGUgcXVlcnkgaXQgaW5zdGVhZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3NnZS5jCmluZGV4IGY3NzhiMTUuLjg3NTRkNDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2NoZWxzaW8vc2dlLmMKKysrIGIvZHJpdmVycy9uZXQvY2hlbHNpby9zZ2UuYwpAQCAtMTY2Miw3ICsxNjYyLDcgQEAKICAqIFRoZSBjb2RlIGZpZ3VyZXMgb3V0IGhvdyBtYW55IGVudHJpZXMgdGhlIHNrX2J1ZmYgd2lsbCByZXF1aXJlIGluIHRoZQogICogY21kUSBhbmQgdXBkYXRlcyB0aGUgY21kUSBkYXRhIHN0cnVjdHVyZSB3aXRoIHRoZSBzdGF0ZSBvbmNlIHRoZSBlbnF1ZXVlCiAgKiBoYXMgY29tcGxldGUuIFRoZW4sIGl0IGRvZXNuJ3QgYWNjZXNzIHRoZSBnbG9iYWwgc3RydWN0dXJlIGFueW1vcmUsIGJ1dAotICogdXNlcyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgb24gdGhlIHN0YWNrLiBJbiBjb25qdWN0aW9uIHdpdGggYSBzcGlubG9jaworICogdXNlcyB0aGUgY29ycmVzcG9uZGluZyBmaWVsZHMgb24gdGhlIHN0YWNrLiBJbiBjb25qdW5jdGlvbiB3aXRoIGEgc3BpbmxvY2sKICAqIGFyb3VuZCB0aGF0IGNvZGUsIHdlIGNhbiBtYWtlIHRoZSBmdW5jdGlvbiByZWVudHJhbnQgd2l0aG91dCBob2xkaW5nIHRoZQogICogbG9jayB3aGVuIHdlIGFjdHVhbGx5IGVucXVldWUgKHdoaWNoIG1pZ2h0IGJlIGV4cGVuc2l2ZSwgZXNwZWNpYWxseSBvbgogICogYXJjaGl0ZWN0dXJlcyB3aXRoIElPIE1NVXMpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY2hlbHNpby92c2M3MzI2LmMgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3ZzYzczMjYuYwppbmRleCAxMDZhNTkwLi5iMGNiMzg4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jaGVsc2lvL3ZzYzczMjYuYworKysgYi9kcml2ZXJzL25ldC9jaGVsc2lvL3ZzYzczMjYuYwpAQCAtNTY2LDcgKzU2Niw3IEBACiAJZm9yIChpID0gMDsgaSA8PSAweDNhOyArK2kpCiAJCXZzY193cml0ZShtYWMtPmFkYXB0ZXIsIENSQSg0LCBwb3J0LCBpKSwgMCk7CiAKLQkvKiBDbGVhciBzb2Z3YXJlIGNvdW50ZXJzICovCisJLyogQ2xlYXIgc29mdHdhcmUgY291bnRlcnMgKi8KIAltZW1zZXQoJm1hYy0+c3RhdHMsIDAsIHNpemVvZihzdHJ1Y3QgY21hY19zdGF0aXN0aWNzKSk7CiAKIAlyZXR1cm4gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2NyaXMvZXRoX3YxMC5jIGIvZHJpdmVycy9uZXQvY3Jpcy9ldGhfdjEwLmMKaW5kZXggODBjMmZlZS4uOWQyNjdkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY3Jpcy9ldGhfdjEwLmMKKysrIGIvZHJpdmVycy9uZXQvY3Jpcy9ldGhfdjEwLmMKQEAgLTEzODMsNyArMTM4Myw3IEBACiAJc3Bpbl9sb2NrKCZucC0+bG9jayk7IC8qIFByZWVtcHQgcHJvdGVjdGlvbiAqLwogCXN3aXRjaCAoY21kKSB7CiAJCS8qIFRoZSBpb2N0bHMgYmVsb3cgc2hvdWxkIGJlIGNvbnNpZGVyZWQgb2Jzb2xldGUgYnV0IGFyZSAqLwotCQkvKiBzdGlsbCBwcmVzZW50IGZvciBjb21wYXRhYmlsaXR5IHdpdGggb2xkIHNjcmlwdHMvYXBwcyAgKi8KKwkJLyogc3RpbGwgcHJlc2VudCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBzY3JpcHRzL2FwcHMgICovCiAJCWNhc2UgU0VUX0VUSF9TUEVFRF8xMDogICAgICAgICAgICAgICAgICAvKiAxMCBNYnBzICovCiAJCQllMTAwX3NldF9zcGVlZChkZXYsIDEwKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3hnYjMvc2dlLmMgYi9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYwppbmRleCBmOWY2NjQ1Li5iZmEyZDU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYworKysgYi9kcml2ZXJzL25ldC9jeGdiMy9zZ2UuYwpAQCAtMTk5LDcgKzE5OSw3IEBACiAgKgluZWVkX3NrYl91bm1hcCAtIGRvZXMgdGhlIHBsYXRmb3JtIG5lZWQgdW5tYXBwaW5nIG9mIHNrX2J1ZmZzPwogICoKICAqCVJldHVybnMgdHJ1ZSBpZiB0aGUgcGxhdGZvcm0gbmVlZHMgc2tfYnVmZiB1bm1hcHBpbmcuICBUaGUgY29tcGlsZXIKLSAqCW9wdGltaXplcyBhd2F5IHVuZWNlc3NhcnkgY29kZSBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KKyAqCW9wdGltaXplcyBhd2F5IHVubmVjZXNzYXJ5IGNvZGUgaWYgdGhpcyByZXR1cm5zIHRydWUuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IG5lZWRfc2tiX3VubWFwKHZvaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9jeGdiMy90M19ody5jIGIvZHJpdmVycy9uZXQvY3hnYjMvdDNfaHcuYwppbmRleCBkNTVkYjZiLi5jNjg4NDIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9jeGdiMy90M19ody5jCisrKyBiL2RyaXZlcnMvbmV0L2N4Z2IzL3QzX2h3LmMKQEAgLTEzODYsMTEgKzEzODYsMTEgQEAKICAqCUByZWc6IHRoZSBpbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIHRvIHByb2Nlc3MKICAqCUBtYXNrOiBhIG1hc2sgdG8gYXBwbHkgdG8gdGhlIGludGVycnVwdCBzdGF0dXMKICAqCUBhY3RzOiB0YWJsZSBvZiBpbnRlcnJ1cHQgYWN0aW9ucwotICoJQHN0YXRzOiBzdGF0aXN0aWNzIGNvdW50ZXJzIHRyYWNraW5nIGludGVycnVwdCBvY2N1cmVuY2VzCisgKglAc3RhdHM6IHN0YXRpc3RpY3MgY291bnRlcnMgdHJhY2tpbmcgaW50ZXJydXB0IG9jY3VycmVuY2VzCiAgKgogICoJQSB0YWJsZSBkcml2ZW4gaW50ZXJydXB0IGhhbmRsZXIgdGhhdCBhcHBsaWVzIGEgc2V0IG9mIG1hc2tzIHRvIGFuCiAgKglpbnRlcnJ1cHQgc3RhdHVzIHdvcmQgYW5kIHBlcmZvcm1zIHRoZSBjb3JyZXNwb25kaW5nIGFjdGlvbnMgaWYgdGhlCi0gKglpbnRlcnJ1cHRzIGRlc2NyaWJlZCBieSB0aGUgbWFzayBoYXZlIG9jY3VyZWQuICBUaGUgYWN0aW9ucyBpbmNsdWRlCisgKglpbnRlcnJ1cHRzIGRlc2NyaWJlZCBieSB0aGUgbWFzayBoYXZlIG9jY3VycmVkLiAgVGhlIGFjdGlvbnMgaW5jbHVkZQogICoJb3B0aW9uYWxseSBwcmludGluZyBhIHdhcm5pbmcgb3IgYWxlcnQgbWVzc2FnZSwgYW5kIG9wdGlvbmFsbHkKICAqCWluY3JlbWVudGluZyBhIHN0YXQgY291bnRlci4gIFRoZSB0YWJsZSBpcyB0ZXJtaW5hdGVkIGJ5IGFuIGVudHJ5CiAgKglzcGVjaWZ5aW5nIG1hc2sgMC4gIFJldHVybnMgdGhlIG51bWJlciBvZiBmYXRhbCBpbnRlcnJ1cHQgY29uZGl0aW9ucy4KQEAgLTI3ODMsNyArMjc4Myw3IEBACiB7CiAJLyoKIAkgKiBTZWUgZHJhZnQtbWF0aGlzLXBscG10dWQtMDAudHh0IGZvciB0aGUgdmFsdWVzLiAgVGhlIG1pbiBpcyA4OCBzbwotCSAqIGl0IGNhbiBhY2NvbW9kYXRlIG1heCBzaXplIFRDUC9JUCBoZWFkZXJzIHdoZW4gU0FDSyBhbmQgdGltZXN0YW1wcworCSAqIGl0IGNhbiBhY2NvbW1vZGF0ZSBtYXggc2l6ZSBUQ1AvSVAgaGVhZGVycyB3aGVuIFNBQ0sgYW5kIHRpbWVzdGFtcHMKIAkgKiBhcmUgZW5hYmxlZCBhbmQgc3RpbGwgaGF2ZSBhdCBsZWFzdCA4IGJ5dGVzIG9mIHBheWxvYWQuCiAJICovCiAJbXR1c1swXSA9IDg4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvY3hnYjQvdDRfaHcuYyBiL2RyaXZlcnMvbmV0L2N4Z2I0L3Q0X2h3LmMKaW5kZXggYjlmZDhhNi4uZDFlYzExMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvY3hnYjQvdDRfaHcuYworKysgYi9kcml2ZXJzL25ldC9jeGdiNC90NF9ody5jCkBAIC04ODMsNyArODgzLDcgQEAKICAqCiAgKglBIHRhYmxlIGRyaXZlbiBpbnRlcnJ1cHQgaGFuZGxlciB0aGF0IGFwcGxpZXMgYSBzZXQgb2YgbWFza3MgdG8gYW4KICAqCWludGVycnVwdCBzdGF0dXMgd29yZCBhbmQgcGVyZm9ybXMgdGhlIGNvcnJlc3BvbmRpbmcgYWN0aW9ucyBpZiB0aGUKLSAqCWludGVycnVwdHMgZGVzY3JpYmVkIGJ5IHRoZSBtYXNrIGhhdmUgb2NjdXJlZC4gIFRoZSBhY3Rpb25zIGluY2x1ZGUKKyAqCWludGVycnVwdHMgZGVzY3JpYmVkIGJ5IHRoZSBtYXNrIGhhdmUgb2NjdXJyZWQuICBUaGUgYWN0aW9ucyBpbmNsdWRlCiAgKglvcHRpb25hbGx5IGVtaXR0aW5nIGEgd2FybmluZyBvciBhbGVydCBtZXNzYWdlLiAgVGhlIHRhYmxlIGlzIHRlcm1pbmF0ZWQKICAqCWJ5IGFuIGVudHJ5IHNwZWNpZnlpbmcgbWFzayAwLiAgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGZhdGFsIGludGVycnVwdAogICoJY29uZGl0aW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMgYi9kcml2ZXJzL25ldC9jeGdiNHZmL2N4Z2I0dmZfbWFpbi5jCmluZGV4IDZhYWQ2NGQuLjQ2NjFjYmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvY3hnYjR2Zl9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvY3hnYjR2Zi9jeGdiNHZmX21haW4uYwpAQCAtMjczOCw3ICsyNzM4LDcgQEAKIAljZmdfcXVldWVzKGFkYXB0ZXIpOwogCiAJLyoKLQkgKiBQcmludCBhIHNob3J0IG5vdGljZSBvbiB0aGUgZXhpc3RhbmNlIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBuZXcKKwkgKiBQcmludCBhIHNob3J0IG5vdGljZSBvbiB0aGUgZXhpc3RlbmNlIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBuZXcKIAkgKiBWRiBuZXR3b3JrIGRldmljZSAuLi4KIAkgKi8KIAlmb3JfZWFjaF9wb3J0KGFkYXB0ZXIsIHBpZHgpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvc2dlLmMgYi9kcml2ZXJzL25ldC9jeGdiNHZmL3NnZS5jCmluZGV4IGUwYjNkMWIuLmJiNjUxMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2N4Z2I0dmYvc2dlLmMKKysrIGIvZHJpdmVycy9uZXQvY3hnYjR2Zi9zZ2UuYwpAQCAtMjI0LDggKzIyNCw4IEBACiAvKioKICAqCW5lZWRfc2tiX3VubWFwIC0gZG9lcyB0aGUgcGxhdGZvcm0gbmVlZCB1bm1hcHBpbmcgb2Ygc2tfYnVmZnM/CiAgKgotICoJUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF0ZnJvbSBuZWVkcyBza19idWZmIHVubWFwcGluZy4gIFRoZSBjb21waWxlcgotICoJb3B0aW1pemVzIGF3YXkgdW5lY2Vzc2FyeSBjb2RlIGlmIHRoaXMgcmV0dXJucyB0cnVlLgorICoJUmV0dXJucyB0cnVlIGlmIHRoZSBwbGF0Zm9ybSBuZWVkcyBza19idWZmIHVubWFwcGluZy4gIFRoZSBjb21waWxlcgorICoJb3B0aW1pemVzIGF3YXkgdW5uZWNlc3NhcnkgY29kZSBpZiB0aGlzIHJldHVybnMgdHJ1ZS4KICAqLwogc3RhdGljIGlubGluZSBpbnQgbmVlZF9za2JfdW5tYXAodm9pZCkKIHsKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICoKICAqCVRlc3RzIHNwZWNpZmllZCBGcmVlIExpc3QgdG8gc2VlIHdoZXRoZXIgdGhlIG51bWJlciBvZiBidWZmZXJzCiAgKglhdmFpbGFibGUgdG8gdGhlIGhhcmR3YXJlIGhhcyBmYWxsZWQgYmVsb3cgb3VyICJzdGFydmF0aW9uIgotICoJdGhyZXNoaG9sZC4KKyAqCXRocmVzaG9sZC4KICAqLwogc3RhdGljIGlubGluZSBib29sIGZsX3N0YXJ2aW5nKGNvbnN0IHN0cnVjdCBzZ2VfZmwgKmZsKQogewpAQCAtMTE0OSw3ICsxMTQ5LDcgQEAKIAlpZiAodW5saWtlbHkoY3JlZGl0cyA8IEVUSFRYUV9TVE9QX1RIUkVTKSkgewogCQkvKgogCQkgKiBBZnRlciB3ZSdyZSBkb25lIGluamVjdGluZyB0aGUgV29yayBSZXF1ZXN0IGZvciB0aGlzCi0JCSAqIHBhY2tldCwgd2UnbGwgYmUgYmVsb3cgb3VyICJzdG9wIHRocmVzaGhvbGQiIHNvIHN0b3AgdGhlIFRYCisJCSAqIHBhY2tldCwgd2UnbGwgYmUgYmVsb3cgb3VyICJzdG9wIHRocmVzaG9sZCIgc28gc3RvcCB0aGUgVFgKIAkJICogUXVldWUgbm93IGFuZCBzY2hlZHVsZSBhIHJlcXVlc3QgZm9yIGFuIFNHRSBFZ3Jlc3MgUXVldWUKIAkJICogVXBkYXRlIG1lc3NhZ2UuICBUaGUgcXVldWUgd2lsbCBnZXQgc3RhcnRlZCBsYXRlciBvbiB3aGVuCiAJCSAqIHRoZSBmaXJtd2FyZSBwcm9jZXNzZXMgdGhpcyBXb3JrIFJlcXVlc3QgYW5kIHNlbmRzIHVzIGFuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9kYXZpbmNpX2VtYWMuYyBiL2RyaXZlcnMvbmV0L2RhdmluY2lfZW1hYy5jCmluZGV4IGJhY2E2YmYuLjgwN2I2YmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2RhdmluY2lfZW1hYy5jCisrKyBiL2RyaXZlcnMvbmV0L2RhdmluY2lfZW1hYy5jCkBAIC05NCwxNCArOTQsMTQgQEAKIHN0YXRpYyBjb25zdCBjaGFyIGVtYWNfdmVyc2lvbl9zdHJpbmdbXSA9ICJUSSBEYVZpbmNpIEVNQUMgTGludXggdjYuMSI7CiAKIC8qIENvbmZpZ3VyYXRpb24gaXRlbXMgKi8KLSNkZWZpbmUgRU1BQ19ERUZfUEFTU19DUkMJCSgwKSAvKiBEbyBub3QgcGFzcyBDUkMgdXB0byBmcmFtZXMgKi8KKyNkZWZpbmUgRU1BQ19ERUZfUEFTU19DUkMJCSgwKSAvKiBEbyBub3QgcGFzcyBDUkMgdXAgdG8gZnJhbWVzICovCiAjZGVmaW5lIEVNQUNfREVGX1FPU19FTgkJCSgwKSAvKiBFTUFDIHByb3ByaWV0YXJ5IFFvUyBkaXNhYmxlZCAqLwogI2RlZmluZSBFTUFDX0RFRl9OT19CVUZGX0NIQUlOCQkoMCkgLyogTm8gYnVmZmVyIGNoYWluICovCiAjZGVmaW5lIEVNQUNfREVGX01BQ0NUUkxfRlJBTUVfRU4JKDApIC8qIERpc2NhcmQgTWFjY29udHJvbCBmcmFtZXMgKi8KICNkZWZpbmUgRU1BQ19ERUZfU0hPUlRfRlJBTUVfRU4JCSgwKSAvKiBEaXNjYXJkIHNob3J0IGZyYW1lcyAqLwogI2RlZmluZSBFTUFDX0RFRl9FUlJPUl9GUkFNRV9FTgkJKDApIC8qIERpc2NhcmQgZXJyb3IgZnJhbWVzICovCi0jZGVmaW5lIEVNQUNfREVGX1BST01fRU4JCSgwKSAvKiBQcm9taXNjb3VzIGRpc2FibGVkICovCi0jZGVmaW5lIEVNQUNfREVGX1BST01fQ0gJCSgwKSAvKiBQcm9taXNjb3VzIGNoYW5uZWwgaXMgMCAqLworI2RlZmluZSBFTUFDX0RFRl9QUk9NX0VOCQkoMCkgLyogUHJvbWlzY3VvdXMgZGlzYWJsZWQgKi8KKyNkZWZpbmUgRU1BQ19ERUZfUFJPTV9DSAkJKDApIC8qIFByb21pc2N1b3VzIGNoYW5uZWwgaXMgMCAqLwogI2RlZmluZSBFTUFDX0RFRl9CQ0FTVF9FTgkJKDEpIC8qIEJyb2FkY2FzdCBlbmFibGVkICovCiAjZGVmaW5lIEVNQUNfREVGX0JDQVNUX0NICQkoMCkgLyogQnJvYWRjYXN0IGNoYW5uZWwgaXMgMCAqLwogI2RlZmluZSBFTUFDX0RFRl9NQ0FTVF9FTgkJKDEpIC8qIE11bHRpY2FzdCBlbmFibGVkICovCkBAIC0xMDEzLDcgKzEwMTMsNyBAQAogCQlyZXR1cm47CiAJfQogCi0JLyogcmVjeWNsZSBvbiByZWNpZXZlIGVycm9yICovCisJLyogcmVjeWNsZSBvbiByZWNlaXZlIGVycm9yICovCiAJaWYgKHN0YXR1cyA8IDApIHsKIAkJbmRldi0+c3RhdHMucnhfZXJyb3JzKys7CiAJCWdvdG8gcmVjeWNsZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wuYyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aHRvb2wuYwppbmRleCBmNGQwOTIyLi5kZDcwNzM4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGh0b29sLmMKKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRodG9vbC5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRhcHRlci0+bGlua19kdXBsZXgpOwogCQllY21kLT5zcGVlZCA9IGFkYXB0ZXItPmxpbmtfc3BlZWQ7CiAKLQkJLyogdW5mb3J0dW5hdGx5IEZVTExfRFVQTEVYICE9IERVUExFWF9GVUxMCisJCS8qIHVuZm9ydHVuYXRlbHkgRlVMTF9EVVBMRVggIT0gRFVQTEVYX0ZVTEwKIAkJICogICAgICAgICAgYW5kIEhBTEZfRFVQTEVYICE9IERVUExFWF9IQUxGICovCiAKIAkJaWYgKGFkYXB0ZXItPmxpbmtfZHVwbGV4ID09IEZVTExfRFVQTEVYKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfaHcuaCBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2h3LmgKaW5kZXggYzcwYjIzZC4uNWM5YTg0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfaHcuaAorKysgYi9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ody5oCkBAIC0xMDI2LDcgKzEwMjYsNyBAQAogCiAjZGVmaW5lIEUxMDAwX0tVTUNUUkxTVEEgMHgwMDAzNAkvKiBNQUMtUEhZIGludGVyZmFjZSAtIFJXICovCiAjZGVmaW5lIEUxMDAwX01EUEhZQSAgICAgMHgwMDAzQwkvKiBQSFkgYWRkcmVzcyAtIFJXICovCi0jZGVmaW5lIEUxMDAwX01BTkMySCAgICAgMHgwNTg2MAkvKiBNYW5hZ21lbnQgQ29udHJvbCBUbyBIb3N0IC0gUlcgKi8KKyNkZWZpbmUgRTEwMDBfTUFOQzJIICAgICAweDA1ODYwCS8qIE1hbmFnZW1lbnQgQ29udHJvbCBUbyBIb3N0IC0gUlcgKi8KICNkZWZpbmUgRTEwMDBfU1dfRldfU1lOQyAweDA1QjVDCS8qIFNvZnR3YXJlLUZpcm13YXJlIFN5bmNocm9uaXphdGlvbiAtIFJXICovCiAKICNkZWZpbmUgRTEwMDBfR0NSICAgICAgIDB4MDVCMDAJLyogUENJLUV4IENvbnRyb2wgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYyBiL2RyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX21haW4uYwppbmRleCBiZmFiMTQwLi40NzdlMDY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfbWFpbi5jCkBAIC0yMDUsNyArMjA1LDcgQEAKIAkucHJvYmUgICAgPSBlMTAwMF9wcm9iZSwKIAkucmVtb3ZlICAgPSBfX2RldmV4aXRfcChlMTAwMF9yZW1vdmUpLAogI2lmZGVmIENPTkZJR19QTQotCS8qIFBvd2VyIE1hbmFnbWVudCBIb29rcyAqLworCS8qIFBvd2VyIE1hbmFnZW1lbnQgSG9va3MgKi8KIAkuc3VzcGVuZCAgPSBlMTAwMF9zdXNwZW5kLAogCS5yZXN1bWUgICA9IGUxMDAwX3Jlc3VtZSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZTEwMDBlL25ldGRldi5jIGIvZHJpdmVycy9uZXQvZTEwMDBlL25ldGRldi5jCmluZGV4IGEzOWQ0YTQuLjUwNmEwYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2UxMDAwZS9uZXRkZXYuYworKysgYi9kcml2ZXJzL25ldC9lMTAwMGUvbmV0ZGV2LmMKQEAgLTQ4ODYsNyArNDg4Niw3IEBACiAJaWYgKHNrYi0+cHJvdG9jb2wgPT0gaHRvbnMoRVRIX1BfSVApKQogCQl0eF9mbGFncyB8PSBFMTAwMF9UWF9GTEFHU19JUFY0OwogCi0JLyogaWYgY291bnQgaXMgMCB0aGVuIG1hcHBpbmcgZXJyb3IgaGFzIG9jY3VyZWQgKi8KKwkvKiBpZiBjb3VudCBpcyAwIHRoZW4gbWFwcGluZyBlcnJvciBoYXMgb2NjdXJyZWQgKi8KIAljb3VudCA9IGUxMDAwX3R4X21hcChhZGFwdGVyLCBza2IsIGZpcnN0LCBtYXhfcGVyX3R4ZCwgbnJfZnJhZ3MsIG1zcyk7CiAJaWYgKGNvdW50KSB7CiAJCWUxMDAwX3R4X3F1ZXVlKGFkYXB0ZXIsIHR4X2ZsYWdzLCBjb3VudCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9lbmMyOGo2MF9ody5oIGIvZHJpdmVycy9uZXQvZW5jMjhqNjBfaHcuaAppbmRleCAxYTBiMjA5Li4yNWI0MWRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9lbmMyOGo2MF9ody5oCisrKyBiL2RyaXZlcnMvbmV0L2VuYzI4ajYwX2h3LmgKQEAgLTMwMyw3ICszMDMsNyBAQAogLyogbWF4aW11bSBldGhlcm5ldCBmcmFtZSBsZW5ndGggKi8KICNkZWZpbmUgTUFYX0ZSQU1FTEVOCQkxNTE4CiAKLS8qIFByZWZlcmVkIGhhbGYgZHVwbGV4OiBMRURBOiBMaW5rIHN0YXR1cyBMRURCOiBSeC9UeCBhY3Rpdml0eSAqLworLyogUHJlZmVycmVkIGhhbGYgZHVwbGV4OiBMRURBOiBMaW5rIHN0YXR1cyBMRURCOiBSeC9UeCBhY3Rpdml0eSAqLwogI2RlZmluZSBFTkMyOEo2MF9MQU1QU19NT0RFCTB4MzQ3NgogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aDE2aS5jIGIvZHJpdmVycy9uZXQvZXRoMTZpLmMKaW5kZXggZmI3MTdiZS4uMTJkMjhlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvZXRoMTZpLmMKKysrIGIvZHJpdmVycy9uZXQvZXRoMTZpLmMKQEAgLTEzLDcgKzEzLDcgQEAKICAgIFRoaXMgZHJpdmVyIHN1cHBvcnRzIGZvbGxvd2luZyBjYXJkcyA6CiAJLSBJQ0wgRXRoZXJUZWFtIDE2aQogCS0gSUNMIEV0aGVyVGVhbSAzMiBFSVNBCi0JICAoVXNlcyB0cnVlIDMyIGJpdCB0cmFuc2ZlcnMgcmF0aGVyIHRoYW4gMTZpIGNvbXBhYmlsaXR5IG1vZGUpCisJICAoVXNlcyB0cnVlIDMyIGJpdCB0cmFuc2ZlcnMgcmF0aGVyIHRoYW4gMTZpIGNvbXBhdGliaWxpdHkgbW9kZSkKIAogICAgRXhhbXBsZSBNb2R1bGUgdXNhZ2U6CiAgICAgICAgIGluc21vZCBldGgxNmkubyBpbz0weDJhMCBtZWRpYXR5cGU9Ym5jCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhvYy5jIGIvZHJpdmVycy9uZXQvZXRob2MuYwppbmRleCBkYjAyOTBmLi5hODNkZDMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhvYy5jCisrKyBiL2RyaXZlcnMvbmV0L2V0aG9jLmMKQEAgLTU0Miw3ICs1NDIsNyBAQAogCiAJLyogRmlndXJlIG91dCB3aGF0IHRyaWdnZXJlZCB0aGUgaW50ZXJydXB0Li4uCiAJICogVGhlIHRyaWNreSBiaXQgaGVyZSBpcyB0aGF0IHRoZSBpbnRlcnJ1cHQgc291cmNlIGJpdHMgZ2V0Ci0JICogc2V0IGluIElOVF9TT1VSQ0UgZm9yIGFuIGV2ZW50IGlycmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoYXQKKwkgKiBzZXQgaW4gSU5UX1NPVVJDRSBmb3IgYW4gZXZlbnQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoYXQKIAkgKiBldmVudCBpcyBtYXNrZWQgb3Igbm90LiAgVGh1cywgaW4gb3JkZXIgdG8gZmlndXJlIG91dCB3aGF0CiAJICogdHJpZ2dlcmVkIHRoZSBpbnRlcnJ1cHQsIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBzb3VyY2VzCiAJICogZm9yIGFsbCBldmVudHMgdGhhdCBhcmUgY3VycmVudGx5IG1hc2tlZC4gIFRoaXMgYmVoYXZpb3VyCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mZWMuaCBiL2RyaXZlcnMvbmV0L2ZlYy5oCmluZGV4IGFjZTMxOGQuLjhiMmM2ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZlYy5oCisrKyBiL2RyaXZlcnMvbmV0L2ZlYy5oCkBAIC05NywxMSArOTcsMTEgQEAKICAqCVRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbnMgY291cnRlc3kgb2YgY29tbXByb2MuaCwgd2hpY2ggd2hlcmUKICAqCUNvcHlyaWdodCAoYykgMTk5NyBEYW4gTWFsZWsgKGRtYWxla0BqbGMubmV0KS4KICAqLwotI2RlZmluZSBCRF9TQ19FTVBUWSAgICAgKCh1c2hvcnQpMHg4MDAwKSAgICAgICAgLyogUmVjaWV2ZSBpcyBlbXB0eSAqLworI2RlZmluZSBCRF9TQ19FTVBUWSAgICAgKCh1c2hvcnQpMHg4MDAwKSAgICAgICAgLyogUmVjZWl2ZSBpcyBlbXB0eSAqLwogI2RlZmluZSBCRF9TQ19SRUFEWSAgICAgKCh1c2hvcnQpMHg4MDAwKSAgICAgICAgLyogVHJhbnNtaXQgaXMgcmVhZHkgKi8KICNkZWZpbmUgQkRfU0NfV1JBUCAgICAgICgodXNob3J0KTB4MjAwMCkgICAgICAgIC8qIExhc3QgYnVmZmVyIGRlc2NyaXB0b3IgKi8KICNkZWZpbmUgQkRfU0NfSU5UUlBUICAgICgodXNob3J0KTB4MTAwMCkgICAgICAgIC8qIEludGVycnVwdCBvbiBjaGFuZ2UgKi8KLSNkZWZpbmUgQkRfU0NfQ00gICAgICAgICgodXNob3J0KTB4MDIwMCkgICAgICAgIC8qIENvbnRpbm91cyBtb2RlICovCisjZGVmaW5lIEJEX1NDX0NNICAgICAgICAoKHVzaG9ydCkweDAyMDApICAgICAgICAvKiBDb250aW51b3VzIG1vZGUgKi8KICNkZWZpbmUgQkRfU0NfSUQgICAgICAgICgodXNob3J0KTB4MDEwMCkgICAgICAgIC8qIFJlYydkIHRvbyBtYW55IGlkbGVzICovCiAjZGVmaW5lIEJEX1NDX1AgICAgICAgICAoKHVzaG9ydCkweDAxMDApICAgICAgICAvKiB4bXQgcHJlYW1ibGUgKi8KICNkZWZpbmUgQkRfU0NfQlIgICAgICAgICgodXNob3J0KTB4MDAyMCkgICAgICAgIC8qIEJyZWFrIHJlY2VpdmVkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9mb3JjZWRldGguYyBiL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCmluZGV4IDdiOTI4OTcuLmQ1YWI0ZGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCisrKyBiL2RyaXZlcnMvbmV0L2ZvcmNlZGV0aC5jCkBAIC00NDAsNyArNDQwLDcgQEAKICNkZWZpbmUgTlZfUlgzX1ZMQU5fVEFHX1BSRVNFTlQgKDE8PDE2KQogI2RlZmluZSBOVl9SWDNfVkxBTl9UQUdfTUFTSwkoMHgwMDAwRkZGRikKIAotLyogTWlzY2VsYW5lb3VzIGhhcmR3YXJlIHJlbGF0ZWQgZGVmaW5lczogKi8KKy8qIE1pc2NlbGxhbmVvdXMgaGFyZHdhcmUgcmVsYXRlZCBkZWZpbmVzOiAqLwogI2RlZmluZSBOVl9QQ0lfUkVHU1pfVkVSMQkweDI3MAogI2RlZmluZSBOVl9QQ0lfUkVHU1pfVkVSMgkweDJkNAogI2RlZmluZSBOVl9QQ0lfUkVHU1pfVkVSMwkweDYwNApAQCAtMTQ4OCw3ICsxNDg4LDcgQEAKIAkJfQogCX0KIAotCS8qIHNvbWUgcGh5cyBjbGVhciBvdXQgcGF1c2UgYWR2ZXJ0aXNtZW50IG9uIHJlc2V0LCBzZXQgaXQgYmFjayAqLworCS8qIHNvbWUgcGh5cyBjbGVhciBvdXQgcGF1c2UgYWR2ZXJ0aXNlbWVudCBvbiByZXNldCwgc2V0IGl0IGJhY2sgKi8KIAltaWlfcncoZGV2LCBucC0+cGh5YWRkciwgTUlJX0FEVkVSVElTRSwgcmVnKTsKIAogCS8qIHJlc3RhcnQgYXV0byBuZWdvdGlhdGlvbiwgcG93ZXIgZG93biBwaHkgKi8KQEAgLTI1MzUsNyArMjUzNSw3IEBACiAJZWxzZQogCQludl90eF9kb25lX29wdGltaXplZChkZXYsIG5wLT50eF9yaW5nX3NpemUpOwogCi0JLyogc2F2ZSBjdXJyZW50IEhXIHBvc3Rpb24gKi8KKwkvKiBzYXZlIGN1cnJlbnQgSFcgcG9zaXRpb24gKi8KIAlpZiAobnAtPnR4X2NoYW5nZV9vd25lcikKIAkJcHV0X3R4LmV4ID0gbnAtPnR4X2NoYW5nZV9vd25lci0+Zmlyc3RfdHhfZGVzYzsKIAllbHNlCkBAIC00MDUzLDcgKzQwNTMsNyBAQAogCiAJfSBlbHNlIGlmIChlY21kLT5hdXRvbmVnID09IEFVVE9ORUdfRElTQUJMRSkgewogCQkvKiBOb3RlOiBhdXRvbmVnb3RpYXRpb24gZGlzYWJsZSwgc3BlZWQgMTAwMCBpbnRlbnRpb25hbGx5Ci0JCSAqIGZvcmJpZGRlbiAtIG5vb25lIHNob3VsZCBuZWVkIHRoYXQuICovCisJCSAqIGZvcmJpZGRlbiAtIG5vIG9uZSBzaG91bGQgbmVlZCB0aGF0LiAqLwogCiAJCWlmIChlY21kLT5zcGVlZCAhPSBTUEVFRF8xMCAmJiBlY21kLT5zcGVlZCAhPSBTUEVFRF8xMDApCiAJCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTQxMDMsNyArNDEwMyw3IEBACiAJCQlhZHYgfD0gQURWRVJUSVNFXzEwMEhBTEY7CiAJCWlmIChlY21kLT5hZHZlcnRpc2luZyAmIEFEVkVSVElTRURfMTAwYmFzZVRfRnVsbCkKIAkJCWFkdiB8PSBBRFZFUlRJU0VfMTAwRlVMTDsKLQkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSAgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KKwkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSAgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzZW1lbnRzIGJ1dCBkaXNhYmxlIHR4IHBhdXNlICovCiAJCQlhZHYgfD0gIEFEVkVSVElTRV9QQVVTRV9DQVAgfCBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKIAkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfVFhfUkVRKQogCQkJYWR2IHw9ICBBRFZFUlRJU0VfUEFVU0VfQVNZTTsKQEAgLTQxNDgsNyArNDE0OCw3IEBACiAJCWlmIChlY21kLT5zcGVlZCA9PSBTUEVFRF8xMDAgJiYgZWNtZC0+ZHVwbGV4ID09IERVUExFWF9GVUxMKQogCQkJYWR2IHw9IEFEVkVSVElTRV8xMDBGVUxMOwogCQlucC0+cGF1c2VfZmxhZ3MgJj0gfihOVl9QQVVTRUZSQU1FX0FVVE9ORUd8TlZfUEFVU0VGUkFNRV9SWF9FTkFCTEV8TlZfUEFVU0VGUkFNRV9UWF9FTkFCTEUpOwotCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9SWF9SRVEpIHsvKiBmb3Igcnggd2Ugc2V0IGJvdGggYWR2ZXJ0aXNtZW50cyBidXQgZGlzYWJsZSB0eCBwYXVzZSAqLworCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9SWF9SRVEpIHsvKiBmb3Igcnggd2Ugc2V0IGJvdGggYWR2ZXJ0aXNlbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KIAkJCWFkdiB8PSAgQURWRVJUSVNFX1BBVVNFX0NBUCB8IEFEVkVSVElTRV9QQVVTRV9BU1lNOwogCQkJbnAtPnBhdXNlX2ZsYWdzIHw9IE5WX1BBVVNFRlJBTUVfUlhfRU5BQkxFOwogCQl9CkBAIC00NDQ5LDcgKzQ0NDksNyBAQAogCiAJCWFkdiA9IG1paV9ydyhkZXYsIG5wLT5waHlhZGRyLCBNSUlfQURWRVJUSVNFLCBNSUlfUkVBRCk7CiAJCWFkdiAmPSB+KEFEVkVSVElTRV9QQVVTRV9DQVAgfCBBRFZFUlRJU0VfUEFVU0VfQVNZTSk7Ci0JCWlmIChucC0+cGF1c2VfZmxhZ3MgJiBOVl9QQVVTRUZSQU1FX1JYX1JFUSkgLyogZm9yIHJ4IHdlIHNldCBib3RoIGFkdmVydGlzbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KKwkJaWYgKG5wLT5wYXVzZV9mbGFncyAmIE5WX1BBVVNFRlJBTUVfUlhfUkVRKSAvKiBmb3Igcnggd2Ugc2V0IGJvdGggYWR2ZXJ0aXNlbWVudHMgYnV0IGRpc2FibGUgdHggcGF1c2UgKi8KIAkJCWFkdiB8PSAgQURWRVJUSVNFX1BBVVNFX0NBUCB8IEFEVkVSVElTRV9QQVVTRV9BU1lNOwogCQlpZiAobnAtPnBhdXNlX2ZsYWdzICYgTlZfUEFVU0VGUkFNRV9UWF9SRVEpCiAJCQlhZHYgfD0gIEFEVkVSVElTRV9QQVVTRV9BU1lNOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZ2lhbmZhci5oIGIvZHJpdmVycy9uZXQvZ2lhbmZhci5oCmluZGV4IGVjNWQ1OTUuLmIyZmU3ZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2dpYW5mYXIuaAorKysgYi9kcml2ZXJzL25ldC9naWFuZmFyLmgKQEAgLTEwNDMsNyArMTA0Myw3IEBACiB9OwogCiAvKiBTdHJ1Y3Qgc3RvbGVuIGFsbW9zdCBjb21wbGV0ZWx5IChhbmQgc2hhbWVsZXNzbHkpIGZyb20gdGhlIEZDQyBlbmV0IHNvdXJjZQotICogKE9rLCB0aGF0J3Mgbm90IHNvIHRydWUgYW55bW9yZSwgYnV0IHRoZXJlIGlzIGEgZmFtaWx5IHJlc2VtYmxlbmNlKQorICogKE9rLCB0aGF0J3Mgbm90IHNvIHRydWUgYW55bW9yZSwgYnV0IHRoZXJlIGlzIGEgZmFtaWx5IHJlc2VtYmxhbmNlKQogICogVGhlIEdGQVIgYnVmZmVyIGRlc2NyaXB0b3JzIHRyYWNrIHRoZSByaW5nIGJ1ZmZlcnMuICBUaGUgcnhfYmRfYmFzZQogICogYW5kIHR4X2JkX2Jhc2UgYWx3YXlzIHBvaW50IHRvIHRoZSBjdXJyZW50bHkgYXZhaWxhYmxlIGJ1ZmZlci4KICAqIFRoZSBkaXJ0eV90eCB0cmFja3MgdGhlIGN1cnJlbnQgYnVmZmVyIHRoYXQgaXMgYmVpbmcgc2VudCBieSB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hhbXJhZGlvL01ha2VmaWxlIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vTWFrZWZpbGUKaW5kZXggOWRlZjg2Ny4uMTA0MDk2MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaGFtcmFkaW8vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9uZXQvaGFtcmFkaW8vTWFrZWZpbGUKQEAgLTMsNyArMyw3IEBACiAjCiAjCiAjIDE5OTcxMTMwIAlNb3ZlZCB0aGUgYW1hdGV1ciByYWRpbyByZWxhdGVkIG5ldHdvcmsgZHJpdmVycyBmcm9tIAotIwkJZHJpdmVycy9uZXQvIHRvIGRyaXZlcnMvaGFtcmFkaW8gZm9yIGVhc2llciBtYWludGFpbmFuY2UuCisjCQlkcml2ZXJzL25ldC8gdG8gZHJpdmVycy9oYW1yYWRpbyBmb3IgZWFzaWVyIG1haW50ZW5hbmNlLgogIyAgICAgICAgICAgICAgIEpvZXJnIFJldXRlciBETDFCS0UgPGpyZXV0ZXJAeWFpbmEuZGU+CiAjCiAjIDIwMDAwODA2CVJld3JpdHRlbiB0byB1c2UgbGlzdHMgaW5zdGVhZCBvZiBpZi1zdGF0ZW1lbnRzLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaGFtcmFkaW8veWFtLmMgYi9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYwppbmRleCA3ZDljZWQwLi45NmE5OGQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYworKysgYi9kcml2ZXJzL25ldC9oYW1yYWRpby95YW0uYwpAQCAtMzAsNyArMzAsNyBAQAogICogICAwLjEgRjFPQVQgMDcuMDYuOTggIEFkZCB0aW1lciBwb2xsaW5nIHJvdXRpbmUgZm9yIGNoYW5uZWwgYXJiaXRyYXRpb24KICAqICAgMC4yIEY2RkJCIDA4LjA2Ljk4ICBBZGRlZCBkZWxheSBhZnRlciBGUEdBIHByb2dyYW1taW5nCiAgKiAgIDAuMyBGNkZCQiAyOS4wNy45OCAgRGVsYXllZCBQVFQgaW1wbGVtZW50YXRpb24gZm9yIGR1cG1vZGU9MgotICogICAwLjQgRjZGQkIgMzAuMDcuOTggIEFkZGVkIFR4VGFpbCwgU2xvdHRpbWUgYW5kIFBlcnNpc3RhbmNlCisgKiAgIDAuNCBGNkZCQiAzMC4wNy45OCAgQWRkZWQgVHhUYWlsLCBTbG90dGltZSBhbmQgUGVyc2lzdGVuY2UKICAqICAgMC41IEY2RkJCIDAxLjA4Ljk4ICBTaGFyZWQgSVJRcywgL3Byb2MvbmV0IGFuZCBuZXR3b3JrIHN0YXRpc3RpY3MKICAqICAgMC42IEY2RkJCIDI1LjA4Ljk4ICBBZGRlZCAxMjAwQmRzIGZvcm1hdAogICogICAwLjcgRjZGQkIgMTIuMDkuOTggIEFkZGVkIHRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaHAxMDAuYyBiL2RyaXZlcnMvbmV0L2hwMTAwLmMKaW5kZXggOGUyYzQ2MC4uOGUxMGQyZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaHAxMDAuYworKysgYi9kcml2ZXJzL25ldC9ocDEwMC5jCkBAIC0xODAsOCArMTgwLDggQEAKIAogCXVfaW50ICpwYWdlX3ZhZGRyX2FsZ247CS8qIEFsaWduZWQgdmlydHVhbCBhZGRyZXNzIG9mIGFsbG9jYXRlZCBwYWdlICovCiAJdV9sb25nIHdoYXRldmVyX29mZnNldDsJLyogT2Zmc2V0IHRvIGJ1cy9waHlzL2RtYSBhZGRyZXNzICovCi0JaW50IHJ4cmNvbW1pdDsJCS8qICMgUnggUERMcyBjb21taXRlZCB0byBhZGFwdGVyICovCi0JaW50IHR4cmNvbW1pdDsJCS8qICMgVHggUERMcyBjb21taXRlZCB0byBhZGFwdGVyICovCisJaW50IHJ4cmNvbW1pdDsJCS8qICMgUnggUERMcyBjb21taXR0ZWQgdG8gYWRhcHRlciAqLworCWludCB0eHJjb21taXQ7CQkvKiAjIFR4IFBETHMgY29tbWl0dGVkIHRvIGFkYXB0ZXIgKi8KIH07CiAKIC8qCkBAIC03MTYsNyArNzE2LDcgQEAKIAkgKiBpbXBsZW1lbnRlZC90ZXN0ZWQgb25seSB3aXRoIHRoZSBsYXNzZW4gY2hpcCBhbnl3YXkuLi4gKi8KIAlpZiAobHAtPm1vZGUgPT0gMSkgewkvKiBidXNtYXN0ZXIgKi8KIAkJZG1hX2FkZHJfdCBwYWdlX2JhZGRyOwotCQkvKiBHZXQgcGh5c2ljYWxseSBjb250aW5vdXMgbWVtb3J5IGZvciBUWCAmIFJYIFBETHMgICAgKi8KKwkJLyogR2V0IHBoeXNpY2FsbHkgY29udGludW91cyBtZW1vcnkgZm9yIFRYICYgUlggUERMcyAgICAqLwogCQkvKiBDb252ZXJzaW9uIHRvIG5ldyBQQ0kgQVBJIDoKIAkJICogUGFnZXMgYXJlIGFsd2F5cyBhbGlnbmVkIGFuZCB6ZXJvZWQsIG5vIG5lZWQgdG8gaXQgb3Vyc2VsZi4KIAkJICogRG9jIHNheXMgc2hvdWxkIGJlIE9LIGZvciBFSVNBIGJ1cyBhcyB3ZWxsIC0gSmVhbiBJSSAqLwpAQCAtMTU5Niw3ICsxNTk2LDcgQEAKIAogLyogY2xlYW5fdHhyaW5nIGNoZWNrcyBpZiBwYWNrZXRzIGhhdmUgYmVlbiBzZW50IGJ5IHRoZSBjYXJkIGJ5IHJlYWRpbmcKICAqIHRoZSBUWF9QREwgcmVnaXN0ZXIgZnJvbSB0aGUgcGVyZm9ybWFuY2UgcGFnZSBhbmQgY29tcGFyaW5nIGl0IHRvIHRoZQotICogbnVtYmVyIG9mIGNvbW1pdGVkIHBhY2tldHMuIEl0IHRoZW4gZnJlZXMgdGhlIHNrYidzIG9mIHRoZSBwYWNrZXRzIHRoYXQKKyAqIG51bWJlciBvZiBjb21taXR0ZWQgcGFja2V0cy4gSXQgdGhlbiBmcmVlcyB0aGUgc2tiJ3Mgb2YgdGhlIHBhY2tldHMgdGhhdAogICogb2J2aW91c2x5IGhhdmUgYmVlbiBzZW50IHRvIHRoZSBuZXR3b3JrLgogICoKICAqIE5lZWRzIHRoZSBQRVJGT1JNQU5DRSBwYWdlIHNlbGVjdGVkLgpAQCAtMTYxNyw3ICsxNjE3LDcgQEAKIAogI2lmZGVmIEhQMTAwX0RFQlVHCiAJaWYgKGRvbmVjb3VudCA+IE1BWF9UWF9QREwpCi0JCXByaW50aygiaHAxMDA6ICVzOiBXYXJuaW5nOiBNb3JlIFBETHMgdHJhbnNtaXR0ZWQgdGhhbiBjb21taXRlZCB0byBjYXJkPz8/XG4iLCBkZXYtPm5hbWUpOworCQlwcmludGsoImhwMTAwOiAlczogV2FybmluZzogTW9yZSBQRExzIHRyYW5zbWl0dGVkIHRoYW4gY29tbWl0dGVkIHRvIGNhcmQ/Pz9cbiIsIGRldi0+bmFtZSk7CiAjZW5kaWYKIAogCWZvciAoOyAwICE9IGRvbmVjb3VudDsgZG9uZWNvdW50LS0pIHsKQEAgLTE3NjUsNyArMTc2NSw3IEBACiAgKiBSZWNlaXZlIEZ1bmN0aW9uIChOb24tQnVzbWFzdGVyIG1vZGUpCiAgKiBDYWxsZWQgd2hlbiBhbiAiUmVjZWl2ZSBQYWNrZXQiIGludGVycnVwdCBvY2N1cnMsIGkuZS4gdGhlIHJlY2VpdmUKICAqIHBhY2tldCBjb3VudGVyIGlzIG5vbi16ZXJvLgotICogRm9yIG5vbi1idXNtYXN0ZXIsIHRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgd2hvbGUgd29yayBvZiB0cmFuc2ZlcmluZworICogRm9yIG5vbi1idXNtYXN0ZXIsIHRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgd2hvbGUgd29yayBvZiB0cmFuc2ZlcnJpbmcKICAqIHRoZSBwYWNrZXQgdG8gdGhlIGhvc3QgbWVtb3J5IGFuZCB0aGVuIHVwIHRvIGhpZ2hlciBsYXllcnMgdmlhIHNrYgogICogYW5kIG5ldGlmX3J4LgogICovCkBAIC0xODkyLDcgKzE4OTIsNyBAQAogCQkvKiBSWF9QS1RfQ05UIHN0YXRlcyBob3cgbWFueSBQRExzIGFyZSBjdXJyZW50bHkgZm9ybWF0dGVkIGFuZCBhdmFpbGFibGUgdG8KIAkJICogdGhlIGNhcmRzIEJNIGVuZ2luZSAqLwogCWlmICgoaHAxMDBfaW53KFJYX1BLVF9DTlQpICYgMHgwMGZmKSA+PSBscC0+cnhyY29tbWl0KSB7Ci0JCXByaW50aygiaHAxMDA6ICVzOiBNb3JlIHBhY2tldHMgcmVjZWl2ZWQgdGhhbiBjb21taXRlZD8gUlhfUEtUX0NOVD0weCV4LCBjb21taXQ9MHgleFxuIiwKKwkJcHJpbnRrKCJocDEwMDogJXM6IE1vcmUgcGFja2V0cyByZWNlaXZlZCB0aGFuIGNvbW1pdHRlZD8gUlhfUEtUX0NOVD0weCV4LCBjb21taXQ9MHgleFxuIiwKIAkJCQkgICAgIGRldi0+bmFtZSwgaHAxMDBfaW53KFJYX1BLVF9DTlQpICYgMHgwMGZmLAogCQkJCSAgICAgbHAtPnJ4cmNvbW1pdCk7CiAJCXJldHVybjsKQEAgLTIyNTYsNyArMjI1Niw3IEBACiAJCWlmIChscC0+bW9kZSAhPSAxKQkvKiBub24gYnVzbWFzdGVyICovCiAJCQlocDEwMF9yeChkZXYpOwogCQllbHNlIGlmICghKHZhbCAmIEhQMTAwX1JYX1BETF9GSUxMX0NPTVBMKSkgewotCQkJLyogU2hvdWxkbnQgaGFwcGVuIC0gbWF5YmUgd2UgbWlzc2VkIGEgUlhfUERMX0ZJTEwgSW50ZXJydXB0PyAgKi8KKwkJCS8qIFNob3VsZG4ndCBoYXBwZW4gLSBtYXliZSB3ZSBtaXNzZWQgYSBSWF9QRExfRklMTCBJbnRlcnJ1cHQ/ICAqLwogCQkJaHAxMDBfcnhfYm0oZGV2KTsKIAkJfQogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2hwMTAwLmggYi9kcml2ZXJzL25ldC9ocDEwMC5oCmluZGV4IGU2Y2ExMjguLmI2MGU5NmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2hwMTAwLmgKKysrIGIvZHJpdmVycy9uZXQvaHAxMDAuaApAQCAtMTA5LDcgKzEwOSw3IEBACiAjZGVmaW5lIEhQMTAwX1JFR19NQUNfQ0ZHXzIJMHgwZAkvKiBSVzogKDgpIE1pc2MgTUFDIGZ1bmN0aW9ucyAgICAgICAgKi8KICNkZWZpbmUgSFAxMDBfUkVHX01BQ19DRkdfMyAgICAgMHgwZQkvKiBSVzogKDgpIE1pc2MgTUFDIGZ1bmN0aW9ucyAqLwogI2RlZmluZSBIUDEwMF9SRUdfTUFDX0NGR180ICAgICAweDBmCS8qIFI6ICAoOCkgTWlzYyBNQUMgc3RhdGVzICovCi0jZGVmaW5lIEhQMTAwX1JFR19EUk9QUEVECTB4MTAJLyogUjogICgxNiksMTE6MCBQa3RzIGNhbnQgZml0IGluIG1lbSAqLworI2RlZmluZSBIUDEwMF9SRUdfRFJPUFBFRAkweDEwCS8qIFI6ICAoMTYpLDExOjAgUGt0cyBjYW4ndCBmaXQgaW4gbWVtICovCiAjZGVmaW5lIEhQMTAwX1JFR19DUkMJCTB4MTIJLyogUjogICg4KSBQa3RzIHdpdGggQ1JDICAgICAgICAgICAgICovCiAjZGVmaW5lIEhQMTAwX1JFR19BQk9SVAkJMHgxMwkvKiBSOiAgKDgpIEFib3J0ZWQgVHggcGt0cyAgICAgICAgICAgKi8KICNkZWZpbmUgSFAxMDBfUkVHX1RSQUlOX1JFUVVFU1QgMHgxNAkvKiBSVzogKDE2KSBFbmRub2RlIE1BQyByZWdpc3Rlci4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2libV9uZXdlbWFjL3RhaC5jIGIvZHJpdmVycy9uZXQvaWJtX25ld2VtYWMvdGFoLmMKaW5kZXggOGVhZDZhOS4uNWY1MWJmNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWJtX25ld2VtYWMvdGFoLmMKKysrIGIvZHJpdmVycy9uZXQvaWJtX25ld2VtYWMvdGFoLmMKQEAgLTYwLDcgKzYwLDcgQEAKIAkJcHJpbnRrKEtFUk5fRVJSICIlczogcmVzZXQgdGltZW91dFxuIiwKIAkJCW9mZGV2LT5kZXYub2Zfbm9kZS0+ZnVsbF9uYW1lKTsKIAotCS8qIDEwS0IgVEFIIFRYIEZJRk8gYWNjb21vZGF0ZXMgdGhlIG1heCBNVFUgb2YgOTAwMCAqLworCS8qIDEwS0IgVEFIIFRYIEZJRk8gYWNjb21tb2RhdGVzIHRoZSBtYXggTVRVIG9mIDkwMDAgKi8KIAlvdXRfYmUzMigmcC0+bXIsCiAJCSBUQUhfTVJfQ1ZSIHwgVEFIX01SX1NUXzc2OCB8IFRBSF9NUl9URlNfMTBLQiB8IFRBSF9NUl9EVEZQIHwKIAkJIFRBSF9NUl9ESUcpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWJtbGFuYS5jIGIvZHJpdmVycy9uZXQvaWJtbGFuYS5jCmluZGV4IDk0ZDk5NjkuLjhmZjY4YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2libWxhbmEuYworKysgYi9kcml2ZXJzL25ldC9pYm1sYW5hLmMKQEAgLTUzLDcgKzUzLDcgQEAKIAlzdGlsbCB3b3JrIHdpdGggMi4wLnguLi4uCiAgIEphbiAyOHRoLCAyMDAwCiAJaW4gTGludXggMi4yLjEzLCB0aGUgdmVyc2lvbi5oIGZpbGUgbXlzdGVyaW91c2x5IGRpZG4ndCBnZXQKLQlpbmNsdWRlZC4gIEFkZGVkIGEgd29ya2Fyb3VuZCBmb3IgdGhpcy4gIEZ1dGhlcm1vcmUsIGl0IG5vdworCWluY2x1ZGVkLiAgQWRkZWQgYSB3b3JrYXJvdW5kIGZvciB0aGlzLiAgRnVydGhlcm1vcmUsIGl0IG5vdwogCW5vdCBvbmx5IGNvbXBpbGVzIGFzIGEgbW9kdWxlcyA7LSkKICAgSmFuIDMwdGgsIDIwMDAKIAluZXdlciBrZXJuZWxzIGF1dG9tYXRpY2FsbHkgcHJvYmUgbW9yZSB0aGFuIG9uZSBib2FyZCwgc28gdGhlCkBAIC00ODEsNyArNDgxLDcgQEAKIAlpZiAoKGRldi0+ZmxhZ3MgJiBJRkZfQUxMTVVMVEkpIHx8IG5ldGRldl9tY19jb3VudChkZXYpID4gY2FtY250KQogCQlyY3J2YWwgfD0gUkNSRUdfQU1DOwogCi0JLyogcHJvbWlzY291cyBtb2RlID8gKi8KKwkvKiBwcm9taXNjdW91cyBtb2RlID8gKi8KIAogCWlmIChkZXYtPmZsYWdzICYgSUZGX1BST01JU0MpCiAJCXJjcnZhbCB8PSBSQ1JFR19QUk87CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pYm1sYW5hLmggYi9kcml2ZXJzL25ldC9pYm1sYW5hLmgKaW5kZXggYWEzZGRiZC4uYWNjZDVlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaWJtbGFuYS5oCisrKyBiL2RyaXZlcnMvbmV0L2libWxhbmEuaApAQCAtOTAsNyArOTAsNyBAQAogI2RlZmluZSBSQ1JFR19FUlIgICAgICAgIDB4ODAwMAkvKiBhY2NlcHQgZGFtYWdlZCBhbmQgY29sbGlkZWQgcGt0cyAqLwogI2RlZmluZSBSQ1JFR19STlQgICAgICAgIDB4NDAwMAkvKiBhY2NlcHQgcGFja2V0cyB0aGF0IGFyZSA8IDY0ICAgICAqLwogI2RlZmluZSBSQ1JFR19CUkQgICAgICAgIDB4MjAwMAkvKiBhY2NlcHQgYnJvYWRjYXN0cyAgICAgICAgICAgICAgICAqLwotI2RlZmluZSBSQ1JFR19QUk8gICAgICAgIDB4MTAwMAkvKiBwcm9taXNjb3VzIG1vZGUgICAgICAgICAgICAgICAgICAqLworI2RlZmluZSBSQ1JFR19QUk8gICAgICAgIDB4MTAwMAkvKiBwcm9taXNjdW91cyBtb2RlICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgUkNSRUdfQU1DICAgICAgICAweDA4MDAJLyogYWNjZXB0IGFsbCBtdWx0aWNhc3RzICAgICAgICAgICAgKi8KICNkZWZpbmUgUkNSRUdfTEJfTk9ORSAgICAweDAwMDAJLyogbm8gbG9vcGJhY2sgICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgUkNSRUdfTEJfTUFDICAgICAweDAyMDAJLyogTUFDIGxvb3BiYWNrICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9tYWMuYyBiL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9tYWMuYwppbmRleCA5MGM1ZTAxLi5jZTgyNTVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfbWFjLmMKKysrIGIvZHJpdmVycy9uZXQvaWdiL2UxMDAwX21hYy5jCkBAIC0xODEsNyArMTgxLDcgQEAKICAqICBhZGRyZXNzIGFuZCBtdXN0IG92ZXJyaWRlIHRoZSBhY3R1YWwgcGVybWFuZW50IE1BQyBhZGRyZXNzLiAgSWYgYW4KICAqICBhbHRlcm5hdGUgTUFDIGFkZHJlc3MgaXMgZm9wdW5kIGl0IGlzIHNhdmVkIGluIHRoZSBodyBzdHJ1Y3QgYW5kCiAgKiAgcHJncmFtbWVkIGludG8gUkFSMCBhbmQgdGhlIGN1bnRpb24gcmV0dXJucyBzdWNjZXNzLCBvdGhlcndpc2UgdGhlCi0gKiAgZnVjbnRpb24gcmV0dXJucyBhbiBlcnJvci4KKyAqICBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLgogICoqLwogczMyIGlnYl9jaGVja19hbHRfbWFjX2FkZHIoc3RydWN0IGUxMDAwX2h3ICpodykKIHsKQEAgLTk4Miw3ICs5ODIsNyBAQAogfQogCiAvKioKLSAqICBpZ2JfZ2V0X3NwZWVkX2FuZF9kdXBsZXhfY29wcGVyIC0gUmV0cmVpdmUgY3VycmVudCBzcGVlZC9kdXBsZXgKKyAqICBpZ2JfZ2V0X3NwZWVkX2FuZF9kdXBsZXhfY29wcGVyIC0gUmV0cmlldmUgY3VycmVudCBzcGVlZC9kdXBsZXgKICAqICBAaHc6IHBvaW50ZXIgdG8gdGhlIEhXIHN0cnVjdHVyZQogICogIEBzcGVlZDogc3RvcmVzIHRoZSBjdXJyZW50IHNwZWVkCiAgKiAgQGR1cGxleDogc3RvcmVzIHRoZSBjdXJyZW50IGR1cGxleApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWdiL2UxMDAwX3BoeS5jIGIvZHJpdmVycy9uZXQvaWdiL2UxMDAwX3BoeS5jCmluZGV4IDY2OTRiZjMuLmQ2Mzk3MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lnYi9lMTAwMF9waHkuYworKysgYi9kcml2ZXJzL25ldC9pZ2IvZTEwMDBfcGh5LmMKQEAgLTE0MjEsNyArMTQyMSw3IEBACiB9CiAKIC8qKgotICogIGlnYl9jaGVja19kb3duc2hpZnQgLSBDaGVja3Mgd2hldGhlciBhIGRvd25zaGlmdCBpbiBzcGVlZCBvY2N1cmVkCisgKiAgaWdiX2NoZWNrX2Rvd25zaGlmdCAtIENoZWNrcyB3aGV0aGVyIGEgZG93bnNoaWZ0IGluIHNwZWVkIG9jY3VycmVkCiAgKiAgQGh3OiBwb2ludGVyIHRvIHRoZSBIVyBzdHJ1Y3R1cmUKICAqCiAgKiAgU3VjY2VzcyByZXR1cm5zIDAsIEZhaWx1cmUgcmV0dXJucyAxCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pZ2IvaWdiX21haW4uYyBiL2RyaXZlcnMvbmV0L2lnYi9pZ2JfbWFpbi5jCmluZGV4IDNkODUwYWYuLjBkZmQxYjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lnYi9pZ2JfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2lnYi9pZ2JfbWFpbi5jCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkucHJvYmUgICAgPSBpZ2JfcHJvYmUsCiAJLnJlbW92ZSAgID0gX19kZXZleGl0X3AoaWdiX3JlbW92ZSksCiAjaWZkZWYgQ09ORklHX1BNCi0JLyogUG93ZXIgTWFuYWdtZW50IEhvb2tzICovCisJLyogUG93ZXIgTWFuYWdlbWVudCBIb29rcyAqLwogCS5zdXNwZW5kICA9IGlnYl9zdXNwZW5kLAogCS5yZXN1bWUgICA9IGlnYl9yZXN1bWUsCiAjZW5kaWYKQEAgLTIyOTIsNyArMjI5Miw3IEBACiAJCS8qKgogCQkgKiBTY2FsZSB0aGUgTklDIGNsb2NrIGN5Y2xlIGJ5IGEgbGFyZ2UgZmFjdG9yIHNvIHRoYXQKIAkJICogcmVsYXRpdmVseSBzbWFsbCBjbG9jayBjb3JyZWN0aW9ucyBjYW4gYmUgYWRkZWQgb3IKLQkJICogc3Vic3RyYWN0ZWQgYXQgZWFjaCBjbG9jayB0aWNrLiBUaGUgZHJhd2JhY2tzIG9mIGEgbGFyZ2UKKwkJICogc3VidHJhY3RlZCBhdCBlYWNoIGNsb2NrIHRpY2suIFRoZSBkcmF3YmFja3Mgb2YgYSBsYXJnZQogCQkgKiBmYWN0b3IgYXJlIGEpIHRoYXQgdGhlIGNsb2NrIHJlZ2lzdGVyIG92ZXJmbG93cyBtb3JlIHF1aWNrbHkKIAkJICogKG5vdCBzdWNoIGEgYmlnIGRlYWwpIGFuZCBiKSB0aGF0IHRoZSBpbmNyZW1lbnQgcGVyIHRpY2sgaGFzCiAJCSAqIHRvIGZpdCBpbnRvIDI0IGJpdHMuICBBcyBhIHJlc3VsdCB3ZSBuZWVkIHRvIHVzZSBhIHNoaWZ0IG9mCkBAIC0zNDA5LDcgKzM0MDksNyBAQAogCQl9IGVsc2UgewogCQkJLyoKIAkJCSAqIFdyaXRlIGFkZHJlc3NlcyB0byB0aGUgTVRBLCBpZiB0aGUgYXR0ZW1wdCBmYWlscwotCQkJICogdGhlbiB3ZSBzaG91bGQganVzdCB0dXJuIG9uIHByb21pc2NvdXMgbW9kZSBzbworCQkJICogdGhlbiB3ZSBzaG91bGQganVzdCB0dXJuIG9uIHByb21pc2N1b3VzIG1vZGUgc28KIAkJCSAqIHRoYXQgd2UgY2FuIGF0IGxlYXN0IHJlY2VpdmUgbXVsdGljYXN0IHRyYWZmaWMKIAkJCSAqLwogCQkJY291bnQgPSBpZ2Jfd3JpdGVfbWNfYWRkcl9saXN0KG5ldGRldik7CkBAIC0zNDIzLDcgKzM0MjMsNyBAQAogCQkvKgogCQkgKiBXcml0ZSBhZGRyZXNzZXMgdG8gYXZhaWxhYmxlIFJBUiByZWdpc3RlcnMsIGlmIHRoZXJlIGlzIG5vdAogCQkgKiBzdWZmaWNpZW50IHNwYWNlIHRvIHN0b3JlIGFsbCB0aGUgYWRkcmVzc2VzIHRoZW4gZW5hYmxlCi0JCSAqIHVuaWNhc3QgcHJvbWlzY291cyBtb2RlCisJCSAqIHVuaWNhc3QgcHJvbWlzY3VvdXMgbW9kZQogCQkgKi8KIAkJY291bnQgPSBpZ2Jfd3JpdGVfdWNfYWRkcl9saXN0KG5ldGRldik7CiAJCWlmIChjb3VudCA8IDApIHsKQEAgLTQzMTcsNyArNDMxNyw3IEBACiAKIAkvKgogCSAqIGNvdW50IHJlZmxlY3RzIGRlc2NyaXB0b3JzIG1hcHBlZCwgaWYgMCBvciBsZXNzIHRoZW4gbWFwcGluZyBlcnJvcgotCSAqIGhhcyBvY2N1cmVkIGFuZCB3ZSBuZWVkIHRvIHJld2luZCB0aGUgZGVzY3JpcHRvciBxdWV1ZQorCSAqIGhhcyBvY2N1cnJlZCBhbmQgd2UgbmVlZCB0byByZXdpbmQgdGhlIGRlc2NyaXB0b3IgcXVldWUKIAkgKi8KIAljb3VudCA9IGlnYl90eF9tYXBfYWR2KHR4X3JpbmcsIHNrYiwgZmlyc3QpOwogCWlmICghY291bnQpIHsKQEAgLTUzNTIsOCArNTM1Miw4IEBACiAgKiAgVGhlIHVuaWNhc3QgdGFibGUgYWRkcmVzcyBpcyBhIHJlZ2lzdGVyIGFycmF5IG9mIDMyLWJpdCByZWdpc3RlcnMuCiAgKiAgVGhlIHRhYmxlIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gYSB3YXkgc2ltaWxhciB0byBob3cgdGhlIE1UQSBpcyB1c2VkCiAgKiAgaG93ZXZlciBkdWUgdG8gY2VydGFpbiBsaW1pdGF0aW9ucyBpbiB0aGUgaGFyZHdhcmUgaXQgaXMgbmVjZXNzYXJ5IHRvCi0gKiAgc2V0IGFsbCB0aGUgaGFzaCBiaXRzIHRvIDEgYW5kIHVzZSB0aGUgVk1PTFIgUk9QRSBiaXQgYXMgYSBwcm9taXNjb3VzCi0gKiAgZW5hYmxlIGJpdCB0byBhbGxvdyB2bGFuIHRhZyBzdHJpcHBpbmcgd2hlbiBwcm9taXNjb3VzIG1vZGUgaXMgZW5hYmxlZAorICogIHNldCBhbGwgdGhlIGhhc2ggYml0cyB0byAxIGFuZCB1c2UgdGhlIFZNT0xSIFJPUEUgYml0IGFzIGEgcHJvbWlzY3VvdXMKKyAqICBlbmFibGUgYml0IHRvIGFsbG93IHZsYW4gdGFnIHN0cmlwcGluZyB3aGVuIHByb21pc2N1b3VzIG1vZGUgaXMgZW5hYmxlZAogICoqLwogc3RhdGljIHZvaWQgaWdiX3NldF91dGEoc3RydWN0IGlnYl9hZGFwdGVyICphZGFwdGVyKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaWdidmYvbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9pZ2J2Zi9uZXRkZXYuYwppbmRleCA2Y2NjMzJmLi4xZDA0Y2E2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pZ2J2Zi9uZXRkZXYuYworKysgYi9kcml2ZXJzL25ldC9pZ2J2Zi9uZXRkZXYuYwpAQCAtMjIyNyw3ICsyMjI3LDcgQEAKIAogCS8qCiAJICogY291bnQgcmVmbGVjdHMgZGVzY3JpcHRvcnMgbWFwcGVkLCBpZiAwIHRoZW4gbWFwcGluZyBlcnJvcgotCSAqIGhhcyBvY2N1cmVkIGFuZCB3ZSBuZWVkIHRvIHJld2luZCB0aGUgZGVzY3JpcHRvciBxdWV1ZQorCSAqIGhhcyBvY2N1cnJlZCBhbmQgd2UgbmVlZCB0byByZXdpbmQgdGhlIGRlc2NyaXB0b3IgcXVldWUKIAkgKi8KIAljb3VudCA9IGlnYnZmX3R4X21hcF9hZHYoYWRhcHRlciwgdHhfcmluZywgc2tiLCBmaXJzdCk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lwZy5jIGIvZHJpdmVycy9uZXQvaXBnLmMKaW5kZXggYTViMGYwZS4uNThjZDMyMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXBnLmMKKysrIGIvZHJpdmVycy9uZXQvaXBnLmMKQEAgLTQ4NiwxNCArNDg2LDE0IEBACiAJcGh5Y3RybCA9IGlwZ19yOChQSFlfQ1RSTCk7CiAJbWFjX2N0cmxfdmFsID0gaXBnX3IzMihNQUNfQ1RSTCk7CiAKLQkvKiBTZXQgZmxhZ3MgZm9yIHVzZSBpbiByZXNvbHZpbmcgYXV0by1uZWdvdGF0aW9uLCBhc3N1bWluZworCS8qIFNldCBmbGFncyBmb3IgdXNlIGluIHJlc29sdmluZyBhdXRvLW5lZ290aWF0aW9uLCBhc3N1bWluZwogCSAqIG5vbi0xMDAwTWJwcywgaGFsZiBkdXBsZXgsIG5vIGZsb3cgY29udHJvbC4KIAkgKi8KIAlmdWxsZHVwbGV4ID0gMDsKIAl0eGZsb3djb250cm9sID0gMDsKIAlyeGZsb3djb250cm9sID0gMDsKIAotCS8qIFRvIGFjY29tb2RhdGUgYSBwcm9ibGVtIGluIDEwTWJwcyBvcGVyYXRpb24sCisJLyogVG8gYWNjb21tb2RhdGUgYSBwcm9ibGVtIGluIDEwTWJwcyBvcGVyYXRpb24sCiAJICogc2V0IGEgZ2xvYmFsIGZsYWcgaWYgUEhZIHJ1bm5pbmcgaW4gMTBNYnBzIG1vZGUuCiAJICovCiAJc3AtPnRlbm1icHNtb2RlID0gMDsKQEAgLTg0Niw3ICs4NDYsNyBAQAogfQogCiAvKgotICogRnJlZSBhbGwgdHJhbnNtaXQgYnVmZmVycyB3aGljaCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcmVkCisgKiBGcmVlIGFsbCB0cmFuc21pdCBidWZmZXJzIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVycmVkCiAgKiB2aWEgRE1BIHRvIHRoZSBJUEcuCiAgKi8KIHN0YXRpYyB2b2lkIGlwZ19uaWNfdHhmcmVlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCkBAIC05MjAsNyArOTIwLDcgQEAKIAogLyoKICAqIEZvciBUeENvbXBsZXRlIGludGVycnVwdHMsIGZyZWUgYWxsIHRyYW5zbWl0Ci0gKiBidWZmZXJzIHdoaWNoIGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zZmVyZWQgdmlhIERNQQorICogYnVmZmVycyB3aGljaCBoYXZlIGFscmVhZHkgYmVlbiB0cmFuc2ZlcnJlZCB2aWEgRE1BCiAgKiB0byB0aGUgSVBHLgogICovCiBzdGF0aWMgdm9pZCBpcGdfbmljX3R4Y2xlYW51cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpAQCAtMTE0MSwxMyArMTE0MSwxMyBAQAogCiAJCS8qIEluY3JlbWVudCBkZXRhaWxlZCByZWNlaXZlIGVycm9yIHN0YXRpc3RpY3MuICovCiAJCWlmIChsZTY0X3RvX2NwdShyeGZkLT5yZnMpICYgSVBHX1JGU19SWEZJRk9PVkVSUlVOKSB7Ci0JCQlJUEdfREVCVUdfTVNHKCJSWCBGSUZPIG92ZXJydW4gb2NjdXJlZC5cbiIpOworCQkJSVBHX0RFQlVHX01TRygiUlggRklGTyBvdmVycnVuIG9jY3VycmVkLlxuIik7CiAKIAkJCXNwLT5zdGF0cy5yeF9maWZvX2Vycm9ycysrOwogCQl9CiAKIAkJaWYgKGxlNjRfdG9fY3B1KHJ4ZmQtPnJmcykgJiBJUEdfUkZTX1JYUlVOVEZSQU1FKSB7Ci0JCQlJUEdfREVCVUdfTVNHKCJSWCBydW50IG9jY3VyZWQuXG4iKTsKKwkJCUlQR19ERUJVR19NU0coIlJYIHJ1bnQgb2NjdXJyZWQuXG4iKTsKIAkJCXNwLT5zdGF0cy5yeF9sZW5ndGhfZXJyb3JzKys7CiAJCX0KIApAQCAtMTE1Niw3ICsxMTU2LDcgQEAKIAkJICovCiAKIAkJaWYgKGxlNjRfdG9fY3B1KHJ4ZmQtPnJmcykgJiBJUEdfUkZTX1JYQUxJR05NRU5URVJST1IpIHsKLQkJCUlQR19ERUJVR19NU0coIlJYIGFsaWdubWVudCBlcnJvciBvY2N1cmVkLlxuIik7CisJCQlJUEdfREVCVUdfTVNHKCJSWCBhbGlnbm1lbnQgZXJyb3Igb2NjdXJyZWQuXG4iKTsKIAkJCXNwLT5zdGF0cy5yeF9mcmFtZV9lcnJvcnMrKzsKIAkJfQogCkBAIC0xNDIxLDEyICsxNDIxLDEyIEBACiAKIAkJCS8qIEluY3JlbWVudCBkZXRhaWxlZCByZWNlaXZlIGVycm9yIHN0YXRpc3RpY3MuICovCiAJCQlpZiAobGU2NF90b19jcHUocnhmZC0+cmZzKSAmIElQR19SRlNfUlhGSUZPT1ZFUlJVTikgewotCQkJCUlQR19ERUJVR19NU0coIlJYIEZJRk8gb3ZlcnJ1biBvY2N1cmVkLlxuIik7CisJCQkJSVBHX0RFQlVHX01TRygiUlggRklGTyBvdmVycnVuIG9jY3VycmVkLlxuIik7CiAJCQkJc3AtPnN0YXRzLnJ4X2ZpZm9fZXJyb3JzKys7CiAJCQl9CiAKIAkJCWlmIChsZTY0X3RvX2NwdShyeGZkLT5yZnMpICYgSVBHX1JGU19SWFJVTlRGUkFNRSkgewotCQkJCUlQR19ERUJVR19NU0coIlJYIHJ1bnQgb2NjdXJlZC5cbiIpOworCQkJCUlQR19ERUJVR19NU0coIlJYIHJ1bnQgb2NjdXJyZWQuXG4iKTsKIAkJCQlzcC0+c3RhdHMucnhfbGVuZ3RoX2Vycm9ycysrOwogCQkJfQogCkBAIC0xNDM2LDcgKzE0MzYsNyBAQAogCQkJICovCiAKIAkJCWlmIChsZTY0X3RvX2NwdShyeGZkLT5yZnMpICYgSVBHX1JGU19SWEFMSUdOTUVOVEVSUk9SKSB7Ci0JCQkJSVBHX0RFQlVHX01TRygiUlggYWxpZ25tZW50IGVycm9yIG9jY3VyZWQuXG4iKTsKKwkJCQlJUEdfREVCVUdfTVNHKCJSWCBhbGlnbm1lbnQgZXJyb3Igb2NjdXJyZWQuXG4iKTsKIAkJCQlzcC0+c3RhdHMucnhfZnJhbWVfZXJyb3JzKys7CiAJCQl9CiAKQEAgLTE0NjAsNyArMTQ2MCw3IEBACiAJCQl9CiAJCX0gZWxzZSB7CiAKLQkJCS8qIEFkanVzdCB0aGUgbmV3IGJ1ZmZlciBsZW5ndGggdG8gYWNjb21vZGF0ZSB0aGUgc2l6ZQorCQkJLyogQWRqdXN0IHRoZSBuZXcgYnVmZmVyIGxlbmd0aCB0byBhY2NvbW1vZGF0ZSB0aGUgc2l6ZQogCQkJICogb2YgdGhlIHJlY2VpdmVkIGZyYW1lLgogCQkJICovCiAJCQlza2JfcHV0KHNrYiwgZnJhbWVsZW4pOwpAQCAtMTQ4OCw3ICsxNDg4LDcgQEAKIAl9CiAKIAkvKgotCSAqIElmIHRoZXJlIGFyZSBtb3JlIFJGRHMgdG8gcHJvY2VzIGFuZCB0aGUgYWxsb2NhdGVkIGFtb3VudCBvZiBSRkQKKwkgKiBJZiB0aGVyZSBhcmUgbW9yZSBSRkRzIHRvIHByb2Nlc3MgYW5kIHRoZSBhbGxvY2F0ZWQgYW1vdW50IG9mIFJGRAogCSAqIHByb2Nlc3NpbmcgdGltZSBoYXMgZXhwaXJlZCwgYXNzZXJ0IEludGVycnVwdCBSZXF1ZXN0ZWQgdG8gbWFrZQogCSAqIHN1cmUgd2UgY29tZSBiYWNrIHRvIHByb2Nlc3MgdGhlIHJlbWFpbmluZyBSRkRzLgogCSAqLwpAQCAtMTg4Niw3ICsxODg2LDcgQEAKIAkvKiBSZXF1ZXN0IFR4Q29tcGxldGUgaW50ZXJydXB0cyBhdCBhbiBpbnRlcnZhbCBkZWZpbmVkCiAJICogYnkgdGhlIGNvbnN0YW50IElQR19GUkFNRVNCRVRXRUVOVFhDT01QTEVURVMuCiAJICogUmVxdWVzdCBUeENvbXBsZXRlIGludGVycnVwdCBmb3IgZXZlcnkgZnJhbWUKLQkgKiBpZiBpbiAxME1icHMgbW9kZSB0byBhY2NvbW9kYXRlIHByb2JsZW0gd2l0aCAxME1icHMKKwkgKiBpZiBpbiAxME1icHMgbW9kZSB0byBhY2NvbW1vZGF0ZSBwcm9ibGVtIHdpdGggMTBNYnBzCiAJICogcHJvY2Vzc2luZy4KIAkgKi8KIAlpZiAoc3AtPnRlbm1icHNtb2RlKQpAQCAtMjA5OCw3ICsyMDk4LDcgQEAKIAlzdHJ1Y3QgaXBnX25pY19wcml2YXRlICpzcCA9IG5ldGRldl9wcml2KGRldik7CiAJaW50IGVycjsKIAotCS8qIEZ1bmN0aW9uIHRvIGFjY29tb2RhdGUgY2hhbmdlcyB0byBNYXhpbXVtIFRyYW5zZmVyIFVuaXQKKwkvKiBGdW5jdGlvbiB0byBhY2NvbW1vZGF0ZSBjaGFuZ2VzIHRvIE1heGltdW0gVHJhbnNmZXIgVW5pdAogCSAqIChvciBNVFUpIG9mIElQRyBOSUMuIENhbm5vdCB1c2UgZGVmYXVsdCBmdW5jdGlvbiBzaW5jZQogCSAqIHRoZSBkZWZhdWx0IHdpbGwgbm90IGFsbG93IGZvciBNVFUgPiAxNTAwIGJ5dGVzLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9hbGktaXJjYy5jIGIvZHJpdmVycy9uZXQvaXJkYS9hbGktaXJjYy5jCmluZGV4IDkyNjMxZWIuLjg3MjE4M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvYWxpLWlyY2MuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL2FsaS1pcmNjLmMKQEAgLTc2LDcgKzc2LDcgQEAKIHN0YXRpYyBpbnQgIGFsaV9pcmNjX2luaXRfNDMoYWxpX2NoaXBfdCAqY2hpcCwgY2hpcGlvX3QgKmluZm8pOwogc3RhdGljIGludCAgYWxpX2lyY2NfaW5pdF81MyhhbGlfY2hpcF90ICpjaGlwLCBjaGlwaW9fdCAqaW5mbyk7CiAKLS8qIFRoZXNlIGFyZSB0aGUgY3VycmVudGx5IGtub3duIEFMaSBzb3VydGgtYnJpZGdlIGNoaXBzZXRzLCB0aGUgb25seSBvbmUgZGlmZmVyZW5jZQorLyogVGhlc2UgYXJlIHRoZSBjdXJyZW50bHkga25vd24gQUxpIHNvdXRoLWJyaWRnZSBjaGlwc2V0cywgdGhlIG9ubHkgb25lIGRpZmZlcmVuY2UKICAqIGlzIHRoYXQgTTE1NDNDIGRvZXNuJ3Qgc3VwcG9ydCBIUCBIRFNMLTM2MDAKICAqLwogc3RhdGljIGFsaV9jaGlwX3QgY2hpcHNbXSA9CkBAIC0xMTA4LDcgKzExMDgsNyBAQAogCW91dGIobGNyLAkJICBpb2Jhc2UrVUFSVF9MQ1IpOyAvKiBTZXQgOE4xCSovCiAJb3V0YihmY3IsCQkgIGlvYmFzZStVQVJUX0ZDUik7IC8qIEVuYWJsZSBGSUZPJ3MgKi8KIAotCS8qIHdpdGhvdXQgdGhpcywgdGhlIGNvbmVjdGlvbiB3aWxsIGJlIGJyb2tlbiBhZnRlciBjb21lIGJhY2sgZnJvbSBGSVIgc3BlZWQsCisJLyogd2l0aG91dCB0aGlzLCB0aGUgY29ubmVjdGlvbiB3aWxsIGJlIGJyb2tlbiBhZnRlciBjb21lIGJhY2sgZnJvbSBGSVIgc3BlZWQsCiAJICAgYnV0IHdpdGggdGhpcywgdGhlIFNJUiBjb25uZWN0aW9uIGlzIGhhcmRlciB0byBlc3RhYmxpc2hlZCAqLwogCW91dGIoKFVBUlRfTUNSX0RUUiB8IFVBUlRfTUNSX1JUUyB8IFVBUlRfTUNSX09VVDIpLCBpb2Jhc2UrVUFSVF9NQ1IpOwogCQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5jIGIvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5jCmluZGV4IGY4MWQ5NDQuLjE3NGNhZmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmMKQEAgLTU2LDcgKzU2LDcgQEAKIC8qIGRvX3Byb2JlIG1vZHVsZSBwYXJhbWV0ZXIgRW5hYmxlIHRoaXMgY29kZSAqLwogLyogUHJvYmUgY29kZSBpcyB2ZXJ5IHVzZWZ1bCBmb3IgdW5kZXJzdGFuZGluZyBob3cgdGhlIGhhcmR3YXJlIHdvcmtzICovCiAvKiBVc2UgaXQgd2l0aCB2YXJpb3VzIGNvbWJpbmF0aW9ucyBvZiBUVF9MRU4sIFJYX0xFTiAqLwotLyogU3Ryb25nbHkgcmVjb21lbmRlZCwgZGlzYWJsZSBpZiB0aGUgcHJvYmUgZmFpbHMgb24geW91ciBtYWNoaW5lICovCisvKiBTdHJvbmdseSByZWNvbW1lbmRlZCwgZGlzYWJsZSBpZiB0aGUgcHJvYmUgZmFpbHMgb24geW91ciBtYWNoaW5lICovCiAvKiBhbmQgc2VuZCBtZSA8amFtZXNAZmlzaHNvdXAuZGhzLm9yZz4gdGhlIG91dHB1dCBvZiBkbWVzZyAqLwogI2RlZmluZSBVU0VfUFJPQkUgMQogI3VuZGVmICBVU0VfUFJPQkUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuaCBiL2RyaXZlcnMvbmV0L2lyZGEvZG9uYXVib2UuaAppbmRleCA3N2ZjZjQ0Li5kOTJkNTRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL2RvbmF1Ym9lLmgKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9kb25hdWJvZS5oCkBAIC01MSw3ICs1MSw3IEBACiAKIC8qIFRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGNoaXAgaXMgYWxsZWdlZGx5IHJlbGVhc2VkICAgICAgICAgKi8KIC8qIEhvd2V2ZXIgSSBoYXZlIG5vdCBzZWVuIGl0LCBub3QgaGF2ZSBJIG1hbmFnZWQgdG8gY29udGFjdCAgICAgKi8KLS8qIGFueW9uZSB3aG8gaGFzLiBIT1dFVkVSIHRoZSBjaGlwIGJlYXJzIGEgc3RyaWtpbmcgcmVzZW1ibGVuY2UgKi8KKy8qIGFueW9uZSB3aG8gaGFzLiBIT1dFVkVSIHRoZSBjaGlwIGJlYXJzIGEgc3RyaWtpbmcgcmVzZW1ibGFuY2UgKi8KIC8qIHRvIHRoZSBJckRBIGNvbnRyb2xsZXIgaW4gdGhlIFRvc2hpYmEgUklTQyBUTVBSMzkyMiBjaGlwICAgICAgKi8KIC8qIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGlzIGlzIGZyZWVseSBhdmFpbGFibGUgYXQgICAgICAgICAgICAgKi8KIC8qIGh0dHA6Ly93d3cubWFkaW5nbGV5Lm9yZy9qYW1lcy9yZXNvdXJjZXMvdG9zaG9ib2UvVE1QUjM5MjIucGRmICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL2dpcmJpbC1zaXIuYyBiL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jCmluZGV4IGEzMWI4ZmEuLjk2Y2RlY2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvZ2lyYmlsLXNpci5jCkBAIC0zOCw3ICszOCw3IEBACiAvKiBDb250cm9sIHJlZ2lzdGVyIDEgKi8KICNkZWZpbmUgR0lSQklMX1RYRU4gICAgMHgwMSAvKiBFbmFibGUgdHJhbnNtaXR0ZXIgKi8KICNkZWZpbmUgR0lSQklMX1JYRU4gICAgMHgwMiAvKiBFbmFibGUgcmVjZWl2ZXIgKi8KLSNkZWZpbmUgR0lSQklMX0VDQU4gICAgMHgwNCAvKiBDYW5jZWwgc2VsZiBlbW1pdGVkIGRhdGEgKi8KKyNkZWZpbmUgR0lSQklMX0VDQU4gICAgMHgwNCAvKiBDYW5jZWwgc2VsZiBlbWl0dGVkIGRhdGEgKi8KICNkZWZpbmUgR0lSQklMX0VDSE8gICAgMHgwOCAvKiBFY2hvIGNvbnRyb2wgY2hhcmFjdGVycyAqLwogCiAvKiBMRUQgQ3VycmVudCBSZWdpc3RlciAoMHgyKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9pcmRhLXVzYi5jIGIvZHJpdmVycy9uZXQvaXJkYS9pcmRhLXVzYi5jCmluZGV4IGU0ZWE2MTkuLmQ5MjY3Y2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvaXJkYS11c2IuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL2lyZGEtdXNiLmMKQEAgLTM3MCw3ICszNzAsNyBAQAogCS8qIHVyYiBpcyBub3cgYXZhaWxhYmxlICovCiAJLy91cmItPnN0YXR1cyA9IDA7IC0+IHRlc3RlZCBhYm92ZQogCi0JLyogTmV3IHNwZWVkIGFuZCB4Ym9mIGlzIG5vdyBjb21taXRlZCBpbiBoYXJkd2FyZSAqLworCS8qIE5ldyBzcGVlZCBhbmQgeGJvZiBpcyBub3cgY29tbWl0dGVkIGluIGhhcmR3YXJlICovCiAJc2VsZi0+bmV3X3NwZWVkID0gLTE7CiAJc2VsZi0+bmV3X3hib2ZzID0gLTE7CiAKQEAgLTYwMiw3ICs2MDIsNyBAQAogCQkJSVJEQV9ERUJVRygxLCAiJXMoKSwgQ2hhbmdpbmcgc3BlZWQgbm93Li4uXG4iLCBfX2Z1bmNfXyk7CiAJCQlpcmRhX3VzYl9jaGFuZ2Vfc3BlZWRfeGJvZnMoc2VsZik7CiAJCX0gZWxzZSB7Ci0JCQkvKiBOZXcgc3BlZWQgYW5kIHhib2YgaXMgbm93IGNvbW1pdGVkIGluIGhhcmR3YXJlICovCisJCQkvKiBOZXcgc3BlZWQgYW5kIHhib2YgaXMgbm93IGNvbW1pdHRlZCBpbiBoYXJkd2FyZSAqLwogCQkJc2VsZi0+bmV3X3NwZWVkID0gLTE7CiAJCQlzZWxmLT5uZXdfeGJvZnMgPSAtMTsKIAkJCS8qIERvbmUsIHdhaXRpbmcgZm9yIG5leHQgcGFja2V0ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL21jczc3ODAuYyBiL2RyaXZlcnMvbmV0L2lyZGEvbWNzNzc4MC5jCmluZGV4IGNjODIxZGUuLmJlNTJiZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvbWNzNzc4MC5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvbWNzNzc4MC5jCkBAIC01ODgsNyArNTg4LDcgQEAKIAogCW1jc19nZXRfcmVnKG1jcywgTUNTX01PREVfUkVHLCAmcnZhbCk7CiAKLQkvKiBNSU5SWFBXIHZhbHVlcyByZWNvbWVuZGVkIGJ5IE1vc0NoaXAgKi8KKwkvKiBNSU5SWFBXIHZhbHVlcyByZWNvbW1lbmRlZCBieSBNb3NDaGlwICovCiAJaWYgKG1jcy0+bmV3X3NwZWVkIDw9IDExNTIwMCkgewogCQlydmFsICY9IH5NQ1NfRklSOwogCkBAIC03OTksNyArNzk5LDcgQEAKIAlyZXQgPSB1c2Jfc3VibWl0X3VyYih1cmIsIEdGUF9BVE9NSUMpOwogfQogCi0vKiBUcmFuc21pdCBjYWxsYmFjayBmdW50aW9uLiAgKi8KKy8qIFRyYW5zbWl0IGNhbGxiYWNrIGZ1bmN0aW9uLiAgKi8KIHN0YXRpYyB2b2lkIG1jc19zZW5kX2lycShzdHJ1Y3QgdXJiICp1cmIpCiB7CiAJc3RydWN0IG1jc19jYiAqbWNzID0gdXJiLT5jb250ZXh0OwpAQCAtODExLDcgKzgxMSw3IEBACiAJCW5ldGlmX3dha2VfcXVldWUobmRldik7CiB9CiAKLS8qIFRyYW5zbWl0IGNhbGxiYWNrIGZ1bnRpb24uICAqLworLyogVHJhbnNtaXQgY2FsbGJhY2sgZnVuY3Rpb24uICAqLwogc3RhdGljIG5ldGRldl90eF90IG1jc19oYXJkX3htaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCQkgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmMgYi9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmMKaW5kZXggNTU5ZmU4NS4uN2E5NjNkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5jCisrKyBiL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuYwpAQCAtNzE2LDcgKzcxNiw3IEBACiAJaW50IHJlZywgY29tID0gMDsKIAlpbnQgcG5wOwogCi0JLyogUmVhZCBmdW50aW9uIGVuYWJsZSByZWdpc3RlciAoRkVSKSAqLworCS8qIFJlYWQgZnVuY3Rpb24gZW5hYmxlIHJlZ2lzdGVyIChGRVIpICovCiAJb3V0YihDRkdfMzM4X0ZFUiwgY2ZnX2Jhc2UpOwogCXJlZyA9IGluYihjZmdfYmFzZSsxKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5oIGIvZHJpdmVycy9uZXQvaXJkYS9uc2MtaXJjYy5oCmluZGV4IDdiYTc3MzguLjMyZmE1ODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvbnNjLWlyY2MuaAorKysgYi9kcml2ZXJzL25ldC9pcmRhL25zYy1pcmNjLmgKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2RlZmluZSBMU1JfVFhSRFkgICAgICAgMHgyMCAvKiBUcmFuc21pdHRlciByZWFkeSAqLwogI2RlZmluZSBMU1JfVFhFTVAgICAgICAgMHg0MCAvKiBUcmFuc21pdHRlciBlbXB0eSAqLwogCi0jZGVmaW5lIEFTQ1IgICAgICAgICAgICAweDA3IC8qIEF1eGlsbGFyeSBTdGF0dXMgYW5kIENvbnRyb2wgUmVnaXN0ZXIgKi8KKyNkZWZpbmUgQVNDUiAgICAgICAgICAgIDB4MDcgLyogQXV4aWxpYXJ5IFN0YXR1cyBhbmQgQ29udHJvbCBSZWdpc3RlciAqLwogI2RlZmluZSBBU0NSX1JYRl9UT1VUICAgMHgwMSAvKiBSeCBGSUZPIHRpbWVvdXQgKi8KICNkZWZpbmUgQVNDUl9GRU5EX0lORiAgIDB4MDIgLyogRnJhbWUgZW5kIGJ5dGVzIGluIHJ4IEZJRk8gKi8KICNkZWZpbmUgQVNDUl9TX0VPVCAgICAgIDB4MDQgLyogU2V0IGVuZCBvZiB0cmFuc21pc3Npb24gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvcHhhZmljcF9pci5jIGIvZHJpdmVycy9uZXQvaXJkYS9weGFmaWNwX2lyLmMKaW5kZXggYzE5MmMzMS4uMDAxZWQwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS9weGFmaWNwX2lyLmMKKysrIGIvZHJpdmVycy9uZXQvaXJkYS9weGFmaWNwX2lyLmMKQEAgLTQwLDcgKzQwLDcgQEAKIAogI2RlZmluZSBJQ0NSMF9BTUUJKDEgPDwgNykJLyogQWRkcmVzcyBtYXRjaCBlbmFibGUgKi8KICNkZWZpbmUgSUNDUjBfVElFCSgxIDw8IDYpCS8qIFRyYW5zbWl0IEZJRk8gaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSBJQ0NSMF9SSUUJKDEgPDwgNSkJLyogUmVjaWV2ZSBGSUZPIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgSUNDUjBfUklFCSgxIDw8IDUpCS8qIFJlY2VpdmUgRklGTyBpbnRlcnJ1cHQgZW5hYmxlICovCiAjZGVmaW5lIElDQ1IwX1JYRQkoMSA8PCA0KQkvKiBSZWNlaXZlIGVuYWJsZSAqLwogI2RlZmluZSBJQ0NSMF9UWEUJKDEgPDwgMykJLyogVHJhbnNtaXQgZW5hYmxlICovCiAjZGVmaW5lIElDQ1IwX1RVUwkoMSA8PCAyKQkvKiBUcmFuc21pdCBGSUZPIHVuZGVycnVuIHNlbGVjdCAqLwpAQCAtNDgzLDcgKzQ4Myw3IEBACiAJfQogCiAJaWYgKGljc3IwICYgSUNTUjBfRUlGKSB7Ci0JCS8qIEFuIGVycm9yIGluIEZJRk8gb2NjdXJlZCwgb3IgdGhlcmUgaXMgYSBlbmQgb2YgZnJhbWUgKi8KKwkJLyogQW4gZXJyb3IgaW4gRklGTyBvY2N1cnJlZCwgb3IgdGhlcmUgaXMgYSBlbmQgb2YgZnJhbWUgKi8KIAkJcHhhX2lyZGFfZmlyX2lycV9laWYoc2ksIGRldiwgaWNzcjApOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS9zbXNjLWlyY2MyLmMgYi9kcml2ZXJzL25ldC9pcmRhL3Ntc2MtaXJjYzIuYwppbmRleCAxYzE2NzdjLi44ODAwZTFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9pcmRhL3Ntc2MtaXJjYzIuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL3Ntc2MtaXJjYzIuYwpAQCAtMTU4Miw3ICsxNTgyLDcgQEAKIAlpbnQgaW9iYXNlOwogCWludCBpaXIsIGxzcjsKIAotCS8qIEFscmVhZHkgbG9ja2VkIGNvbW1pbmcgaGVyZSBpbiBzbXNjX2lyY2NfaW50ZXJydXB0KCkgKi8KKwkvKiBBbHJlYWR5IGxvY2tlZCBjb21pbmcgaGVyZSBpbiBzbXNjX2lyY2NfaW50ZXJydXB0KCkgKi8KIAkvKnNwaW5fbG9jaygmc2VsZi0+bG9jayk7Ki8KIAogCWlvYmFzZSA9IHNlbGYtPmlvLnNpcl9iYXNlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXJkYS92aWEtaXJjYy5jIGIvZHJpdmVycy9uZXQvaXJkYS92aWEtaXJjYy5jCmluZGV4IDE4NmNkMjguLmY1MDRiMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2lyZGEvdmlhLWlyY2MuYworKysgYi9kcml2ZXJzL25ldC9pcmRhL3ZpYS1pcmNjLmMKQEAgLTI5LDcgKzI5LDcgQEAKIAogMjAwNC0wMi0xNjogPHNkYUBiZGl0LmRlPgogLSBSZW1vdmVkIHVubmVlZGVkICdsZWdhY3knIHBjaSBzdHVmZi4KLS0gTWFrZSBzdXJlIFNJUiBtb2RlIGlzIHNldCAoaHdfaW5pdCgpKSBiZWZvcmUgY2FsbGluZyBtb2RlLWRlcGVuZGFudCBzdHVmZi4KKy0gTWFrZSBzdXJlIFNJUiBtb2RlIGlzIHNldCAoaHdfaW5pdCgpKSBiZWZvcmUgY2FsbGluZyBtb2RlLWRlcGVuZGVudCBzdHVmZi4KIC0gT24gc3BlZWQgY2hhbmdlIGZyb20gY29yZSwgZG9uJ3Qgc2VuZCBTSVIgZnJhbWUgd2l0aCBuZXcgc3BlZWQuIAogICBVc2UgY3VycmVudCBzcGVlZCBhbmQgY2hhbmdlIHNwZWVkcyBsYXRlci4KIC0gTWFrZSBtb2R1bGUtcGFyYW0gZG9uZ2xlX2lkIGFjdHVhbGx5IHdvcmsuCkBAIC0zMzQsNyArMzM0LDcgQEAKIAlzZWxmLT5pby5kb25nbGVfaWQgPSBkb25nbGVfaWQ7CiAKIAkvKiBUaGUgb25seSB2YWx1ZSB3ZSBtdXN0IG92ZXJyaWRlIGl0IHRoZSBiYXVkcmF0ZSAqLwotCS8qIE1heGltdW0gc3BlZWRzIGFuZCBjYXBhYmlsaXRpZXMgYXJlIGRvbmdsZS1kZXBlbmRhbnQuICovCisJLyogTWF4aW11bSBzcGVlZHMgYW5kIGNhcGFiaWxpdGllcyBhcmUgZG9uZ2xlLWRlcGVuZGVudC4gKi8KIAlzd2l0Y2goIHNlbGYtPmlvLmRvbmdsZV9pZCApewogCWNhc2UgMHgwZDoKIAkJc2VsZi0+cW9zLmJhdWRfcmF0ZS5iaXRzID0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2lyZGEvdmxzaV9pci5oIGIvZHJpdmVycy9uZXQvaXJkYS92bHNpX2lyLmgKaW5kZXggZDY2ZmFiOC4uYTA3NmViMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXJkYS92bHNpX2lyLmgKKysrIGIvZHJpdmVycy9uZXQvaXJkYS92bHNpX2lyLmgKQEAgLTIwOSw3ICsyMDksNyBAQAogCUlSSU5UUl9BQ1RFTgk9IDB4ODAsCS8qIGFjdGl2aXR5IGludGVycnVwdCBlbmFibGUgKi8KIAlJUklOVFJfQUNUSVZJVFkJPSAweDQwLAkvKiBhY3Rpdml0eSBtb25pdG9yICh0cmFmZmljIGRldGVjdGVkKSAqLwogCUlSSU5UUl9SUEtURU4JPSAweDIwLAkvKiByZWNlaXZlIHBhY2tldCBpbnRlcnJ1cHQgZW5hYmxlKi8KLQlJUklOVFJfUlBLVElOVAk9IDB4MTAsCS8qIHJ4LXBhY2tldCB0cmFuc2ZlcmVkIGZyb20gZmlmbyB0byBtZW1vcnkgZmluaXNoZWQgKi8KKwlJUklOVFJfUlBLVElOVAk9IDB4MTAsCS8qIHJ4LXBhY2tldCB0cmFuc2ZlcnJlZCBmcm9tIGZpZm8gdG8gbWVtb3J5IGZpbmlzaGVkICovCiAJSVJJTlRSX1RQS1RFTgk9IDB4MDgsCS8qIHRyYW5zbWl0IHBhY2tldCBpbnRlcnJ1cHQgZW5hYmxlICovCiAJSVJJTlRSX1RQS1RJTlQJPSAweDA0LAkvKiBsYXN0IGJpdCBvZiB0eC1wYWNrZXQrY3JjIHNoaWZ0ZWQgdG8gaXItcHVsc2VyICovCiAJSVJJTlRSX09FX0VOCT0gMHgwMiwJLyogVUFSVCByeCBmaWZvIG92ZXJydW4gZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLwpAQCAtNzM5LDcgKzczOSw3IEBACiAvKiB0aGUgcmVtYXBwZWQgZXJyb3IgZmxhZ3Mgd2UgdXNlIGZvciByZXR1cm5pbmcgZnJvbSBmcmFtZQogICogcG9zdC1wcm9jZXNzaW5nIGluIHZsc2lfcHJvY2Vzc190eC9yeCgpIGFmdGVyIGl0IHdhcyBjb21wbGV0ZWQKICAqIGJ5IHRoZSBoYXJkd2FyZS4gVGhlc2UgZnVuY3Rpb25zIGVpdGhlciByZXR1cm4gdGhlID49MCBudW1iZXIKLSAqIG9mIHRyYW5zZmVyZWQgYnl0ZXMgaW4gY2FzZSBvZiBzdWNjZXNzIG9yIHRoZSBuZWdhdGl2ZSAoLSkKKyAqIG9mIHRyYW5zZmVycmVkIGJ5dGVzIGluIGNhc2Ugb2Ygc3VjY2VzcyBvciB0aGUgbmVnYXRpdmUgKC0pCiAgKiBvZiB0aGUgb3InZWQgZXJyb3IgZmxhZ3MuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiLmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2IuYwppbmRleCA0MWM1MjlmLi42ODZhMTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2IuYworKysgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2IuYwpAQCAtMzYsNyArMzYsNyBAQAogLyoqCiAgKiBpeGdiZV9pZWVlX2NyZWRpdHMgLSBUaGlzIGNhbGN1bGF0ZXMgdGhlIGllZWUgdHJhZmZpYyBjbGFzcwogICogY3JlZGl0cyBmcm9tIHRoZSBjb25maWd1cmVkIGJhbmR3aWR0aCBwZXJjZW50YWdlcy4gQ3JlZGl0cwotICogYXJlIHRoZSBzbWFsbGVzdCB1bml0IHByb2dyYW1hYmxlIGludG8gdGhlIHVuZGVybHlpbmcKKyAqIGFyZSB0aGUgc21hbGxlc3QgdW5pdCBwcm9ncmFtbWFibGUgaW50byB0aGUgdW5kZXJseWluZwogICogaGFyZHdhcmUuIFRoZSBJRUVFIDgwMi4xUWF6IHNwZWNpZmljYXRpb24gZG8gbm90IHVzZSBiYW5kd2lkdGgKICAqIGdyb3VwcyBzbyB0aGlzIGlzIG11Y2ggc2ltcGxpZmllZCBmcm9tIHRoZSBDRUUgY2FzZS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZGNiX25sLmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2JfbmwuYwppbmRleCBmZWM0YzcyLi4zMjdjODYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2JfbmwuYworKysgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9kY2JfbmwuYwpAQCAtMzYwLDcgKzM2MCw3IEBACiAJCXJldHVybiBEQ0JfTk9fSFdfQ0hHOwogCiAJLyoKLQkgKiBPbmx5IHRha2UgZG93biB0aGUgYWRhcHRlciBpZiBhbiBhcHAgY2hhbmdlIG9jY3VyZWQuIEZDb0UKKwkgKiBPbmx5IHRha2UgZG93biB0aGUgYWRhcHRlciBpZiBhbiBhcHAgY2hhbmdlIG9jY3VycmVkLiBGQ29FCiAJICogbWF5IHNodWZmbGUgdHggcmluZ3MgaW4gdGhpcyBjYXNlIGFuZCB0aGlzIGNhbiBub3QgYmUgZG9uZQogCSAqIHdpdGhvdXQgYSByZXNldCBjdXJyZW50bHkuCiAJICovCkBAIC01OTksNyArNTk5LDcgQEAKIAkJCQlicmVhazsKIAogCQkJLyogVGhlIEZDb0UgYXBwbGljYXRpb24gcHJpb3JpdHkgbWF5IGJlIGNoYW5nZWQgbXVsdGlwbGUKLQkJCSAqIHRpbWVzIGluIHF1aWNrIHN1Y2Vzc2lvbiB3aXRoIHN3aXRjaGVzIHRoYXQgYnVpbGQgdXAKKwkJCSAqIHRpbWVzIGluIHF1aWNrIHN1Y2Nlc3Npb24gd2l0aCBzd2l0Y2hlcyB0aGF0IGJ1aWxkIHVwCiAJCQkgKiBUTFZzLiBUbyBhdm9pZCBjcmVhdGluZyB1bmVlZGVkIGRldmljZSByZXNldHMgdGhpcwogCQkJICogY2hlY2tzIHRoZSBhY3R1YWwgSFcgY29uZmlndXJhdGlvbiBhbmQgY2xlYXJzCiAJCQkgKiBCSVRfQVBQX1VQQ0hHIGlmIGEgSFcgY29uZmlndXJhdGlvbiBjaGFuZ2UgaXMgbm90CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9tYWluLmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9tYWluLmMKaW5kZXggZjE3ZTRhNy4uNmY4YWRjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX21haW4uYwpAQCAtNjQ0LDcgKzY0NCw3IEBACiAgKiBAYWRhcHRlcjogZHJpdmVyIHByaXZhdGUgc3RydWN0CiAgKiBAaW5kZXg6IHJlZyBpZHggb2YgcXVldWUgdG8gcXVlcnkgKDAtMTI3KQogICoKLSAqIEhlbHBlciBmdW5jdGlvbiB0byBkZXRlcm1pbmUgdGhlIHRyYWZmaWMgaW5kZXggZm9yIGEgcGF0aWN1bGFyCisgKiBIZWxwZXIgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHRoZSB0cmFmZmljIGluZGV4IGZvciBhIHBhcnRpY3VsYXIKICAqIHJlZ2lzdGVyIGluZGV4LgogICoKICAqIFJldHVybnMgOiBhIHRjIGluZGV4IGZvciB1c2UgaW4gcmFuZ2UgMC03LCBvciAwLTMKQEAgLTM1NTYsNyArMzU1Niw3IEBACiAJCX0gZWxzZSB7CiAJCQkvKgogCQkJICogV3JpdGUgYWRkcmVzc2VzIHRvIHRoZSBNVEEsIGlmIHRoZSBhdHRlbXB0IGZhaWxzCi0JCQkgKiB0aGVuIHdlIHNob3VsZCBqdXN0IHR1cm4gb24gcHJvbWlzY291cyBtb2RlIHNvCisJCQkgKiB0aGVuIHdlIHNob3VsZCBqdXN0IHR1cm4gb24gcHJvbWlzY3VvdXMgbW9kZSBzbwogCQkJICogdGhhdCB3ZSBjYW4gYXQgbGVhc3QgcmVjZWl2ZSBtdWx0aWNhc3QgdHJhZmZpYwogCQkJICovCiAJCQlody0+bWFjLm9wcy51cGRhdGVfbWNfYWRkcl9saXN0KGh3LCBuZXRkZXYpOwpAQCAtMzU2Nyw3ICszNTY3LDcgQEAKIAkJLyoKIAkJICogV3JpdGUgYWRkcmVzc2VzIHRvIGF2YWlsYWJsZSBSQVIgcmVnaXN0ZXJzLCBpZiB0aGVyZSBpcyBub3QKIAkJICogc3VmZmljaWVudCBzcGFjZSB0byBzdG9yZSBhbGwgdGhlIGFkZHJlc3NlcyB0aGVuIGVuYWJsZQotCQkgKiB1bmljYXN0IHByb21pc2NvdXMgbW9kZQorCQkgKiB1bmljYXN0IHByb21pc2N1b3VzIG1vZGUKIAkJICovCiAJCWNvdW50ID0gaXhnYmVfd3JpdGVfdWNfYWRkcl9saXN0KG5ldGRldik7CiAJCWlmIChjb3VudCA8IDApIHsKQEAgLTQ0NDMsNyArNDQ0Myw3IEBACiB9CiAKIC8qCi0gKiBpeGdiZV9zZXRfbnVtX3F1ZXVlczogQWxsb2NhdGUgcXVldWVzIGZvciBkZXZpY2UsIGZlYXR1cmUgZGVwZW5kYW50CisgKiBpeGdiZV9zZXRfbnVtX3F1ZXVlczogQWxsb2NhdGUgcXVldWVzIGZvciBkZXZpY2UsIGZlYXR1cmUgZGVwZW5kZW50CiAgKiBAYWRhcHRlcjogYm9hcmQgcHJpdmF0ZSBzdHJ1Y3R1cmUgdG8gaW5pdGlhbGl6ZQogICoKICAqIFRoaXMgaXMgdGhlIHRvcCBsZXZlbCBxdWV1ZSBhbGxvY2F0aW9uIHJvdXRpbmUuICBUaGUgb3JkZXIgaGVyZSBpcyB2ZXJ5CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV9waHkuYyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3BoeS5jCmluZGV4IGY3MmY3MDUuLmRmNWI4YWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3BoeS5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3BoeS5jCkBAIC0xNjk0LDcgKzE2OTQsNyBAQAogfQogCiAvKioKLSAqICBpeGdiZV90bl9jaGVja19vdmVydGVtcCAtIENoZWNrcyBpZiBhbiBvdmVydGVtcCBvY2N1cmVkLgorICogIGl4Z2JlX3RuX2NoZWNrX292ZXJ0ZW1wIC0gQ2hlY2tzIGlmIGFuIG92ZXJ0ZW1wIG9jY3VycmVkLgogICogIEBodzogcG9pbnRlciB0byBoYXJkd2FyZSBzdHJ1Y3R1cmUKICAqCiAgKiAgQ2hlY2tzIGlmIHRoZSBMQVNJIHRlbXAgYWxhcm0gc3RhdHVzIHdhcyB0cmlnZ2VyZWQgZHVlIHRvIG92ZXJ0ZW1wCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZS9peGdiZV94NTQwLmMgYi9kcml2ZXJzL25ldC9peGdiZS9peGdiZV94NTQwLmMKaW5kZXggZjQ3ZTkzZi4uZDkzMjNjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfeDU0MC5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3g1NDAuYwpAQCAtNTczLDcgKzU3Myw3IEBACiAgKiBAaHc6IHBvaW50ZXIgdG8gaGFyZHdhcmUgc3RydWN0dXJlCiAgKiBAbWFzazogTWFzayB0byBzcGVjaWZ5IHdoaWNoIHNlbWFwaG9yZSB0byByZWxlYXNlCiAgKgotICogUmVsZWFzZXMgdGhlIFNXRlcgc2VtYXBob3JlIHRocm91Z2h0IHRoZSBTV19GV19TWU5DIHJlZ2lzdGVyCisgKiBSZWxlYXNlcyB0aGUgU1dGVyBzZW1hcGhvcmUgdGhyb3VnaCB0aGUgU1dfRldfU1lOQyByZWdpc3RlcgogICogZm9yIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gKENTUiwgUEhZMCwgUEhZMSwgRVZNLCBGbGFzaCkKICAqKi8KIHN0YXRpYyB2b2lkIGl4Z2JlX3JlbGVhc2Vfc3dmd19zeW5jX1g1NDAoc3RydWN0IGl4Z2JlX2h3ICpodywgdTE2IG1hc2spCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jIGIvZHJpdmVycy9uZXQvaXhnYmV2Zi9peGdiZXZmX21haW4uYwppbmRleCAwNTRhYjA1Li4wNWZhN2M4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9peGdiZXZmL2l4Z2JldmZfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L2l4Z2JldmYvaXhnYmV2Zl9tYWluLmMKQEAgLTE5MjUsNyArMTkyNSw3IEBACiB9CiAKIC8qCi0gKiBpeGdiZXZmX3NldF9udW1fcXVldWVzOiBBbGxvY2F0ZSBxdWV1ZXMgZm9yIGRldmljZSwgZmVhdHVyZSBkZXBlbmRhbnQKKyAqIGl4Z2JldmZfc2V0X251bV9xdWV1ZXM6IEFsbG9jYXRlIHF1ZXVlcyBmb3IgZGV2aWNlLCBmZWF0dXJlIGRlcGVuZGVudAogICogQGFkYXB0ZXI6IGJvYXJkIHByaXZhdGUgc3RydWN0dXJlIHRvIGluaXRpYWxpemUKICAqCiAgKiBUaGlzIGlzIHRoZSB0b3AgbGV2ZWwgcXVldWUgYWxsb2NhdGlvbiByb3V0aW5lLiAgVGhlIG9yZGVyIGhlcmUgaXMgdmVyeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQva3M4ODQyLmMgYi9kcml2ZXJzL25ldC9rczg4NDIuYwppbmRleCBlZmQ0NGFmLi5mMGQ4MzQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9rczg4NDIuYworKysgYi9kcml2ZXJzL25ldC9rczg4NDIuYwpAQCAtMzIxLDcgKzMyMSw3IEBACiAJLyogUlggMiBrYiBoaWdoIHdhdGVybWFyayAqLwogCWtzODg0Ml93cml0ZTE2KGFkYXB0ZXIsIDAsIDB4MTAwMCwgUkVHX1FSRkNSKTsKIAotCS8qIGFnZ3Jlc2l2ZSBiYWNrIG9mZiBpbiBoYWxmIGR1cGxleCAqLworCS8qIGFnZ3Jlc3NpdmUgYmFjayBvZmYgaW4gaGFsZiBkdXBsZXggKi8KIAlrczg4NDJfZW5hYmxlX2JpdHMoYWRhcHRlciwgMzIsIDEgPDwgOCwgUkVHX1NHQ1IxKTsKIAogCS8qIGVuYWJsZSBubyBleGNlc3NpdmUgY29sbGlzb24gZHJvcCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQva3M4ODUxLmMgYi9kcml2ZXJzL25ldC9rczg4NTEuYwppbmRleCAwZmE0YTk4Li5iY2Q5YmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9rczg4NTEuYworKysgYi9kcml2ZXJzL25ldC9rczg4NTEuYwpAQCAtMTQxLDcgKzE0MSw3IEBACiAgKgogICogQWxsIHRoZXNlIGNhbGxzIGlzc3VlIFNQSSB0cmFuc2FjdGlvbnMgdG8gYWNjZXNzIHRoZSBjaGlwJ3MgcmVnaXN0ZXJzLiBUaGV5CiAgKiBhbGwgcmVxdWlyZSB0aGF0IHRoZSBuZWNlc3NhcnkgbG9jayBpcyBoZWxkIHRvIHByZXZlbnQgYWNjZXNzZXMgd2hlbiB0aGUKLSAqIGNoaXAgaXMgYnVzeSB0cmFuc2ZlcmluZyBwYWNrZXQgZGF0YSAoUlgvVFggRklGTyBhY2Nlc3NlcykuCisgKiBjaGlwIGlzIGJ1c3kgdHJhbnNmZXJyaW5nIHBhY2tldCBkYXRhIChSWC9UWCBGSUZPIGFjY2Vzc2VzKS4KICAqLwogCiAvKioKQEAgLTQ4Myw3ICs0ODMsNyBAQAogCSAqCiAJICogVGhpcyBmb3JtIG9mIG9wZXJhdGlvbiB3b3VsZCByZXF1aXJlIHVzIHRvIGhvbGQgdGhlIFNQSSBidXMnCiAJICogY2hpcHNlbGVjdCBsb3cgZHVyaW5nIHRoZSBlbnRpZSB0cmFuc2FjdGlvbiB0byBhdm9pZCBhbnkKLQkgKiByZXNldCB0byB0aGUgZGF0YSBzdHJlYW0gY29tbWluZyBmcm9tIHRoZSBjaGlwLgorCSAqIHJlc2V0IHRvIHRoZSBkYXRhIHN0cmVhbSBjb21pbmcgZnJvbSB0aGUgY2hpcC4KIAkgKi8KIAogCWZvciAoOyByeGZjICE9IDA7IHJ4ZmMtLSkgewpAQCAtNjM0LDcgKzYzNCw3IEBACiAKIC8qKgogICogY2FsY190eGxlbiAtIGNhbGN1bGF0ZSBzaXplIG9mIG1lc3NhZ2UgdG8gc2VuZCBwYWNrZXQKLSAqIEBsZW46IExlbmdodCBvZiBkYXRhCisgKiBAbGVuOiBMZW5ndGggb2YgZGF0YQogICoKICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIFRYRklGTyBtZXNzYWdlIG5lZWRlZCB0byBzZW5kCiAgKiB0aGlzIHBhY2tldC4KQEAgLTE0NzIsNyArMTQ3Miw3IEBACiAgKiBAcmVnOiBUaGUgcmVnaXN0ZXIgdG8gcmVhZC4KICAqCiAgKiBUaGlzIGNhbGwgcmVhZHMgZGF0YSBmcm9tIHRoZSBQSFkgcmVnaXN0ZXIgc3BlY2lmaWVkIGluIEByZWcuIFNpbmNlIHRoZQotICogZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSBNSUkgcmVnaXN0ZXJzLCB0aGUgbm9uLWV4aXN0YW50IHZhbHVlcworICogZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQgYWxsIHRoZSBNSUkgcmVnaXN0ZXJzLCB0aGUgbm9uLWV4aXN0ZW50IHZhbHVlcwogICogYXJlIGFsd2F5cyByZXR1cm5lZCBhcyB6ZXJvLgogICoKICAqIFdlIHJldHVybiB6ZXJvIGZvciB1bnN1cHBvcnRlZCByZWdpc3RlcnMgYXMgdGhlIE1JSSBjb2RlIGRvZXMgbm90IGNoZWNrCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9rczg4NTFfbWxsLmMgYi9kcml2ZXJzL25ldC9rczg4NTFfbWxsLmMKaW5kZXggMmUyYzY5Yi4uNjE2MzFjYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQva3M4ODUxX21sbC5jCisrKyBiL2RyaXZlcnMvbmV0L2tzODg1MV9tbGwuYwpAQCAtNDcwLDcgKzQ3MCw3IEBACiAgKgogICogQWxsIHRoZXNlIGNhbGxzIGlzc3VlIHRyYW5zYWN0aW9ucyB0byBhY2Nlc3MgdGhlIGNoaXAncyByZWdpc3RlcnMuIFRoZXkKICAqIGFsbCByZXF1aXJlIHRoYXQgdGhlIG5lY2Vzc2FyeSBsb2NrIGlzIGhlbGQgdG8gcHJldmVudCBhY2Nlc3NlcyB3aGVuIHRoZQotICogY2hpcCBpcyBidXN5IHRyYW5zZmVyaW5nIHBhY2tldCBkYXRhIChSWC9UWCBGSUZPIGFjY2Vzc2VzKS4KKyAqIGNoaXAgaXMgYnVzeSB0cmFuc2ZlcnJpbmcgcGFja2V0IGRhdGEgKFJYL1RYIEZJRk8gYWNjZXNzZXMpLgogICovCiAKIC8qKgpAQCAtMTM2NCw3ICsxMzY0LDcgQEAKICAqIEByZWc6IFRoZSByZWdpc3RlciB0byByZWFkLgogICoKICAqIFRoaXMgY2FsbCByZWFkcyBkYXRhIGZyb20gdGhlIFBIWSByZWdpc3RlciBzcGVjaWZpZWQgaW4gQHJlZy4gU2luY2UgdGhlCi0gKiBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIE1JSSByZWdpc3RlcnMsIHRoZSBub24tZXhpc3RhbnQgdmFsdWVzCisgKiBkZXZpY2UgZG9lcyBub3Qgc3VwcG9ydCBhbGwgdGhlIE1JSSByZWdpc3RlcnMsIHRoZSBub24tZXhpc3RlbnQgdmFsdWVzCiAgKiBhcmUgYWx3YXlzIHJldHVybmVkIGFzIHplcm8uCiAgKgogICogV2UgcmV0dXJuIHplcm8gZm9yIHVuc3VwcG9ydGVkIHJlZ2lzdGVycyBhcyB0aGUgTUlJIGNvZGUgZG9lcyBub3QgY2hlY2sKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2xpYjgzOTAuYyBiL2RyaXZlcnMvbmV0L2xpYjgzOTAuYwppbmRleCBkYTc0ZGI0Li4xN2I3NWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9saWI4MzkwLmMKKysrIGIvZHJpdmVycy9uZXQvbGliODM5MC5jCkBAIC0zNSw3ICszNSw3IEBACiAgIEFsZXhleSBLdXpuZXRzb3YJOiB1c2UgdGhlIDgzOTAncyBzaXggYml0IGhhc2ggbXVsdGljYXN0IGZpbHRlci4KICAgUGF1bCBHb3J0bWFrZXIJOiB0d2VhayBBTksncyBhYm92ZSBtdWx0aWNhc3QgY2hhbmdlcyBhIGJpdC4KICAgUGF1bCBHb3J0bWFrZXIJOiB1cGRhdGUgcGFja2V0IHN0YXRpc3RpY3MgZm9yIHYyLjEueAotICBBbGFuIENveAkJOiBzdXBwb3J0IGFyYml0YXJ5IHN0dXBpZCBwb3J0IG1hcHBpbmdzIG9uIHRoZQorICBBbGFuIENveAkJOiBzdXBwb3J0IGFyYml0cmFyeSBzdHVwaWQgcG9ydCBtYXBwaW5ncyBvbiB0aGUKICAgCQkJICA2OEsgTWFjaW50b3NoLiBTdXBwb3J0ID4xNmJpdCBJL08gc3BhY2VzCiAgIFBhdWwgR29ydG1ha2VyCTogYWRkIGttb2Qgc3VwcG9ydCBmb3IgYXV0by1sb2FkaW5nIG9mIHRoZSA4MzkwCiAJCQkgIG1vZHVsZSBieSBhbGwgZHJpdmVycyB0aGF0IHJlcXVpcmUgaXQuCkBAIC0xMjEsNyArMTIxLDcgQEAKIC8qCiAgKglTTVAgYW5kIHRoZSA4MzkwIHNldHVwLgogICoKLSAqCVRoZSA4MzkwIGlzbnQgZXhhY3RseSBkZXNpZ25lZCB0byBiZSBtdWx0aXRocmVhZGVkIG9uIFJYL1RYLiBUaGVyZSBpcworICoJVGhlIDgzOTAgaXNuJ3QgZXhhY3RseSBkZXNpZ25lZCB0byBiZSBtdWx0aXRocmVhZGVkIG9uIFJYL1RYLiBUaGVyZSBpcwogICoJYSBwYWdlIHJlZ2lzdGVyIHRoYXQgY29udHJvbHMgYmFuayBhbmQgcGFja2V0IGJ1ZmZlciBhY2Nlc3MuIFdlIGd1YXJkCiAgKgl0aGlzIHdpdGggZWlfbG9jYWwtPnBhZ2VfbG9jay4gTm9ib2R5IHNob3VsZCBhc3N1bWUgb3Igc2V0IHRoZSBwYWdlIG90aGVyCiAgKgl0aGFuIHplcm8gd2hlbiB0aGUgbG9jayBpcyBub3QgaGVsZC4gTG9jayBob2xkZXJzIG11c3QgcmVzdG9yZSBwYWdlIDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2xwNDg2ZS5jIGIvZHJpdmVycy9uZXQvbHA0ODZlLmMKaW5kZXggMzY5ODgyNC4uMzg1YTk1MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbHA0ODZlLmMKKysrIGIvZHJpdmVycy9uZXQvbHA0ODZlLmMKQEAgLTI3LDcgKzI3LDcgQEAKIAogCUNyZWRpdHM6CiAJVGhhbmtzIHRvIE11cnBoeSBTb2Z0d2FyZSBCViBmb3IgbGV0dGluZyBtZSB3cml0ZSB0aGlzIGluIHRoZWlyIHRpbWUuCi0JV2VsbCwgYWN0dWFsbHksIEkgZ2V0IHBheWVkIGRvaW5nIHRoaXMuLi4KKwlXZWxsLCBhY3R1YWxseSwgSSBnZXQgcGFpZCBkb2luZyB0aGlzLi4uCiAJKEFsc286IHNlZSBodHRwOi8vd3d3Lm11cnBoeS5ubCBmb3IgbXVycGh5LCBhbmQgbXkgaG9tZXBhZ2UgfmFyZCBmb3IKIAltb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBQcm9mZXNzaW9uYWwgV29ya3N0YXRpb24pCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21ldGguaCBiL2RyaXZlcnMvbmV0L21ldGguaAppbmRleCBhNzhkYzFjLi41YjE0NWM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tZXRoLmgKKysrIGIvZHJpdmVycy9uZXQvbWV0aC5oCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAkJCQkgICAgICAgLyogQml0cyAyMiB0aHJvdWdoIDI4IGFyZSB1c2VkIHRvIGRldGVybWluZSBJUEdSMiAqLwogCiAjZGVmaW5lIE1FVEhfUkVWX1NISUZUIDI5ICAgICAgIC8qIEJpdHMgMjkgdGhyb3VnaCAzMSBhcmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHJldmlzaW9uICovCi0JCQkJICAgICAgIC8qIDAwMDogSW5pdGFsIHJldmlzaW9uICovCisJCQkJICAgICAgIC8qIDAwMDogSW5pdGlhbCByZXZpc2lvbiAqLwogCQkJCSAgICAgICAvKiAwMDE6IEZpcnN0IHJldmlzaW9uLCBJbXByb3ZlZCBUWCBjb25jYXRlbmF0aW9uICovCiAKIApAQCAtMTkzLDcgKzE5Myw3IEBACiAJCQkJCSAgICAgIAkvKiAxOiBBIFRYIG1lc3NhZ2UgaGFkIHRoZSBJTlQgcmVxdWVzdCBiaXQgc2V0LCB0aGUgcGFja2V0IGhhcyBiZWVuIHNlbnQuICovCiAjZGVmaW5lIE1FVEhfSU5UX1RYX0xJTktfRkFJTAlCSVQoMikJLyogMDogTm8gaW50ZXJydXB0IHBlbmRpbmcsIDE6IFBIWSBoYXMgcmVwb3J0ZWQgYSBsaW5rIGZhaWx1cmUgKi8KICNkZWZpbmUgTUVUSF9JTlRfTUVNX0VSUk9SCUJJVCgzKQkvKiAwOiBObyBpbnRlcnJ1cHQgcGVuZGluZyAqLwotCQkJCQkJLyogMTogQSBtZW1vcnkgZXJyb3Igb2NjdXJyZWQgZHVycmluZyBETUEsIERNQSBzdG9wcGVkLCBGYXRhbCAqLworCQkJCQkJLyogMTogQSBtZW1vcnkgZXJyb3Igb2NjdXJyZWQgZHVyaW5nIERNQSwgRE1BIHN0b3BwZWQsIEZhdGFsICovCiAjZGVmaW5lIE1FVEhfSU5UX1RYX0FCT1JUCQlCSVQoNCkJLyogMDogTm8gaW50ZXJydXB0IHBlbmRpbmcsIDE6IFRoZSBUWCBhYm9ydGVkIG9wZXJhdGlvbiwgRE1BIHN0b3BwZWQsIEZBVEFMICovCiAjZGVmaW5lIE1FVEhfSU5UX1JYX1RIUkVTSE9MRAlCSVQoNSkJLyogMDogTm8gaW50ZXJydXB0IHBlbmRpbmcsIDE6IFNlbGVjdGVkIHJlY2VpdmUgdGhyZXNob2xkIGNvbmRpdGlvbiBWYWxpZCAqLwogI2RlZmluZSBNRVRIX0lOVF9SWF9VTkRFUkZMT1cJQklUKDYpCS8qIDA6IE5vIGludGVycnVwdCBwZW5kaW5nLCAxOiBGSUZPIHdhcyBlbXB0eSwgcGFja2V0IGNvdWxkIG5vdCBiZSBxdWV1ZWQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fbWFpbi5jIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9tYWluLmMKaW5kZXggOTMxN2I2MS4uOTI3NmIxYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvZW5fbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvZW5fbWFpbi5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAkJZ290byBlcnJfbXI7CiAJfQogCi0JLyogQ29uZmlndXJlIHdpY2ggcG9ydHMgdG8gc3RhcnQgYWNjb3JkaW5nIHRvIG1vZHVsZSBwYXJhbWV0ZXJzICovCisJLyogQ29uZmlndXJlIHdoaWNoIHBvcnRzIHRvIHN0YXJ0IGFjY29yZGluZyB0byBtb2R1bGUgcGFyYW1ldGVycyAqLwogCW1kZXYtPnBvcnRfY250ID0gMDsKIAltbHg0X2ZvcmVhY2hfcG9ydChpLCBkZXYsIE1MWDRfUE9SVF9UWVBFX0VUSCkKIAkJbWRldi0+cG9ydF9jbnQrKzsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9tbHg0L2VuX25ldGRldi5jCmluZGV4IDRmMTU4YmEuLjc3MDYzZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L21seDQvZW5fbmV0ZGV2LmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9uZXRkZXYuYwpAQCAtMjQ3LDcgKzI0Nyw3IEBACiAJCQkJCQkJICAgICAgIHByaXYtPnBvcnQpOwogCQkJaWYgKGVycikKIAkJCQllbl9lcnIocHJpdiwgIkZhaWxlZCBlbmFibGluZyAiCi0JCQkJCSAgICAgInByb21pc2NvdXMgbW9kZVxuIik7CisJCQkJCSAgICAgInByb21pc2N1b3VzIG1vZGVcbiIpOwogCiAJCQkvKiBEaXNhYmxlIHBvcnQgbXVsdGljYXN0IGZpbHRlciAodW5jb25kaXRpb25hbGx5KSAqLwogCQkJZXJyID0gbWx4NF9TRVRfTUNBU1RfRkxUUihtZGV2LT5kZXYsIHByaXYtPnBvcnQsIDAsCkBAIC0yNzYsNyArMjc2LDcgQEAKIAl9CiAKIAkvKgotCSAqIE5vdCBpbiBwcm9taXNjb3VzIG1vZGUKKwkgKiBOb3QgaW4gcHJvbWlzY3VvdXMgbW9kZQogCSAqLwogCiAJaWYgKHByaXYtPmZsYWdzICYgTUxYNF9FTl9GTEFHX1BST01JU0MpIHsKQEAgLTI5MiwxNCArMjkyLDE0IEBACiAJCQllcnIgPSBtbHg0X3VuaWNhc3RfcHJvbWlzY19yZW1vdmUobWRldi0+ZGV2LCBwcml2LT5iYXNlX3FwbiwKIAkJCQkJCQkgIHByaXYtPnBvcnQpOwogCQlpZiAoZXJyKQotCQkJZW5fZXJyKHByaXYsICJGYWlsZWQgZGlzYWJsaW5nIHByb21pc2NvdXMgbW9kZVxuIik7CisJCQllbl9lcnIocHJpdiwgIkZhaWxlZCBkaXNhYmxpbmcgcHJvbWlzY3VvdXMgbW9kZVxuIik7CiAKIAkJLyogRGlzYWJsZSBNdWx0aWNhc3QgcHJvbWlzYyAqLwogCQlpZiAocHJpdi0+ZmxhZ3MgJiBNTFg0X0VOX0ZMQUdfTUNfUFJPTUlTQykgewogCQkJZXJyID0gbWx4NF9tdWx0aWNhc3RfcHJvbWlzY19yZW1vdmUobWRldi0+ZGV2LCBwcml2LT5iYXNlX3FwbiwKIAkJCQkJCQkgICAgcHJpdi0+cG9ydCk7CiAJCQlpZiAoZXJyKQotCQkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGRpc2FibGluZyBtdWx0aWNhc3QgcHJvbWlzY291cyBtb2RlXG4iKTsKKwkJCQllbl9lcnIocHJpdiwgIkZhaWxlZCBkaXNhYmxpbmcgbXVsdGljYXN0IHByb21pc2N1b3VzIG1vZGVcbiIpOwogCQkJcHJpdi0+ZmxhZ3MgJj0gfk1MWDRfRU5fRkxBR19NQ19QUk9NSVNDOwogCQl9CiAKQEAgLTMzMSw3ICszMzEsNyBAQAogCQkJZXJyID0gbWx4NF9tdWx0aWNhc3RfcHJvbWlzY19yZW1vdmUobWRldi0+ZGV2LCBwcml2LT5iYXNlX3FwbiwKIAkJCQkJCQkgICAgcHJpdi0+cG9ydCk7CiAJCQlpZiAoZXJyKQotCQkJCWVuX2Vycihwcml2LCAiRmFpbGVkIGRpc2FibGluZyBtdWx0aWNhc3QgcHJvbWlzY291cyBtb2RlXG4iKTsKKwkJCQllbl9lcnIocHJpdiwgIkZhaWxlZCBkaXNhYmxpbmcgbXVsdGljYXN0IHByb21pc2N1b3VzIG1vZGVcbiIpOwogCQkJcHJpdi0+ZmxhZ3MgJj0gfk1MWDRfRU5fRkxBR19NQ19QUk9NSVNDOwogCQl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21seDQvZW5fcnguYyBiL2RyaXZlcnMvbmV0L21seDQvZW5fcnguYwppbmRleCAwNTk5OGVlLi5jZmQ1MGJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L2VuX3J4LmMKKysrIGIvZHJpdmVycy9uZXQvbWx4NC9lbl9yeC5jCkBAIC03MDYsNyArNzA2LDcgQEAKIH0KIAogCi0vKiBDYWxjdWxhdGUgdGhlIGxhc3Qgb2Zmc2V0IHBvc2l0aW9uIHRoYXQgYWNjb21vZGF0ZXMgYSBmdWxsIGZyYWdtZW50CisvKiBDYWxjdWxhdGUgdGhlIGxhc3Qgb2Zmc2V0IHBvc2l0aW9uIHRoYXQgYWNjb21tb2RhdGVzIGEgZnVsbCBmcmFnbWVudAogICogKGFzc3VtaW5nIGZhZ21lbnQgc2l6ZSA9IHN0cmlkZS1hbGlnbikgKi8KIHN0YXRpYyBpbnQgbWx4NF9lbl9sYXN0X2FsbG9jX29mZnNldChzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCB1MTYgc3RyaWRlLCB1MTYgYWxpZ24pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L2VuX3NlbGZ0ZXN0LmMgYi9kcml2ZXJzL25ldC9tbHg0L2VuX3NlbGZ0ZXN0LmMKaW5kZXggOWM5MWE5Mi4uMTkxYThkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWx4NC9lbl9zZWxmdGVzdC5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvZW5fc2VsZnRlc3QuYwpAQCAtMTQ5LDcgKzE0OSw3IEBACiAKIAkJbmV0aWZfY2Fycmllcl9vZmYoZGV2KTsKIHJldHJ5X3R4OgotCQkvKiBXYWl0IHVudGlsbCBhbGwgdHggcXVldWVzIGFyZSBlbXB0eS4KKwkJLyogV2FpdCB1bnRpbCBhbGwgdHggcXVldWVzIGFyZSBlbXB0eS4KIAkJICogdGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgYWRkaXRpb25hbCBpbmNvbWluZyB0cmFmZmljCiAJCSAqIHNpbmNlIHdlIHR1cm5lZCB0aGUgY2FycmllciBvZmYgKi8KIAkJbXNsZWVwKDIwMCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L2VuX3R4LmMgYi9kcml2ZXJzL25ldC9tbHg0L2VuX3R4LmMKaW5kZXggMDFmZWI4Zi4uYjIyOWFjZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbWx4NC9lbl90eC5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvZW5fdHguYwpAQCAtNjM2LDcgKzYzNiw3IEBACiAJaWYgKHVubGlrZWx5KCFyZWFsX3NpemUpKQogCQlnb3RvIHR4X2Ryb3A7CiAKLQkvKiBBbGxpZ24gZGVzY3JpcHRvciB0byBUWEJCIHNpemUgKi8KKwkvKiBBbGlnbiBkZXNjcmlwdG9yIHRvIFRYQkIgc2l6ZSAqLwogCWRlc2Nfc2l6ZSA9IEFMSUdOKHJlYWxfc2l6ZSwgVFhCQl9TSVpFKTsKIAlucl90eGJiID0gZGVzY19zaXplIC8gVFhCQl9TSVpFOwogCWlmICh1bmxpa2VseShucl90eGJiID4gTUFYX0RFU0NfVFhCQlMpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tbHg0L21jZy5jIGIvZHJpdmVycy9uZXQvbWx4NC9tY2cuYwppbmRleCBjNmQzMzZhLi5lNjNjMzdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L21jZy5jCisrKyBiL2RyaXZlcnMvbmV0L21seDQvbWNnLmMKQEAgLTIyMiw3ICsyMjIsNyBAQAogCiAJLyogdGhlIGdpdmVuIHFwbiBpcyBsaXN0ZWQgYXMgYSBwcm9taXNjIHFwbgogCSAqIHdlIG5lZWQgdG8gYWRkIGl0IGFzIGEgZHVwbGljYXRlIHRvIHRoaXMgZW50cnkKLQkgKiBmb3IgZnV0dXJlIHJlZmVybmNlICovCisJICogZm9yIGZ1dHVyZSByZWZlcmVuY2VzICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShkcXAsICZlbnRyeS0+ZHVwbGljYXRlcywgbGlzdCkgewogCQlpZiAocXBuID09IGRxcC0+cXBuKQogCQkJcmV0dXJuIDA7IC8qIHFwIGlzIGFscmVhZHkgZHVwbGljYXRlZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWx4NC9wb3J0LmMgYi9kcml2ZXJzL25ldC9tbHg0L3BvcnQuYwppbmRleCBlY2E3ZDg1Li44ODU2NjU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tbHg0L3BvcnQuYworKysgYi9kcml2ZXJzL25ldC9tbHg0L3BvcnQuYwpAQCAtMTcyLDcgKzE3Miw3IEBACiAJCX0KIAogCQlpZiAobWFjID09IChNTFg0X01BQ19NQVNLICYgYmU2NF90b19jcHUodGFibGUtPmVudHJpZXNbaV0pKSkgewotCQkJLyogTUFDIGFscmVhZHkgcmVnaXN0ZXJlZCwgaW5jcmVhc2UgcmVmZXJuY2UgY291bnQgKi8KKwkJCS8qIE1BQyBhbHJlYWR5IHJlZ2lzdGVyZWQsIGluY3JlYXNlIHJlZmVyZW5jZXMgY291bnQgKi8KIAkJCSsrdGFibGUtPnJlZnNbaV07CiAJCQlnb3RvIG91dDsKIAkJfQpAQCAtMzYwLDcgKzM2MCw3IEBACiAJCWlmICh0YWJsZS0+cmVmc1tpXSAmJgogCQkgICAgKHZsYW4gPT0gKE1MWDRfVkxBTl9NQVNLICYKIAkJCSAgICAgIGJlMzJfdG9fY3B1KHRhYmxlLT5lbnRyaWVzW2ldKSkpKSB7Ci0JCQkvKiBWbGFuIGFscmVhZHkgcmVnaXN0ZXJlZCwgaW5jcmVhc2UgcmVmZXJuY2UgY291bnQgKi8KKwkJCS8qIFZsYW4gYWxyZWFkeSByZWdpc3RlcmVkLCBpbmNyZWFzZSByZWZlcmVuY2VzIGNvdW50ICovCiAJCQkqaW5kZXggPSBpOwogCQkJKyt0YWJsZS0+cmVmc1tpXTsKIAkJCWdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYyBiL2RyaXZlcnMvbmV0L215cmkxMGdlL215cmkxMGdlLmMKaW5kZXggNjczZGM2MC4uMTQ0NmRlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbXlyaTEwZ2UvbXlyaTEwZ2UuYworKysgYi9kcml2ZXJzL25ldC9teXJpMTBnZS9teXJpMTBnZS5jCkBAIC0zNzAyLDcgKzM3MDIsNyBAQAogCiAvKgogICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2xpY2VzIHN1cHBvcnRlZC4KLSAqIFRoZSBudW1iZXIgc2xpY2VzIGlzIHRoZSBtaW51bXVtIG9mIHRoZSBudW1iZXIgb2YgQ1BVUywKKyAqIFRoZSBudW1iZXIgc2xpY2VzIGlzIHRoZSBtaW5pbXVtIG9mIHRoZSBudW1iZXIgb2YgQ1BVUywKICAqIHRoZSBudW1iZXIgb2YgTVNJLVggaXJxcyBzdXBwb3J0ZWQsIHRoZSBudW1iZXIgb2Ygc2xpY2VzCiAgKiBzdXBwb3J0ZWQgYnkgdGhlIGZpcm13YXJlCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L215cmlfc2J1cy5jIGIvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMKaW5kZXggYTc2MTA3Ni4uNTNhZWVhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMKKysrIGIvZHJpdmVycy9uZXQvbXlyaV9zYnVzLmMKQEAgLTEwMDksNyArMTAwOSw3IEBACiAKIAkvKiBNYXAgaW4gdGhlIE15cmlDT00gcmVnaXN0ZXIvbG9jYWxyYW0gc2V0LiAqLwogCWlmIChtcC0+ZWVwcm9tLmNwdXZlcnMgPCBDUFVWRVJTXzRfMCkgewotCQkvKiBYWFggTWFrZXMgbm8gc2Vuc2UsIGlmIGNvbnRyb2wgcmVnIGlzIG5vbi1leGlzdGFudCB0aGlzCisJCS8qIFhYWCBNYWtlcyBubyBzZW5zZSwgaWYgY29udHJvbCByZWcgaXMgbm9uLWV4aXN0ZW50IHRoaXMKIAkJICogWFhYIGRyaXZlciBjYW5ub3QgZnVuY3Rpb24gYXQgYWxsLi4uIG1heWJlIHByZS00LjAgaXMKIAkJICogWFhYIG9ubHkgYSB2YWxpZCB2ZXJzaW9uIGZvciBQQ0kgY2FyZHM/ICBBc2sgZmVsZHkuLi4KIAkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uYXRzZW1pLmMgYi9kcml2ZXJzL25ldC9uYXRzZW1pLmMKaW5kZXggMmZkMzk2My4uYWEyODEzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmF0c2VtaS5jCisrKyBiL2RyaXZlcnMvbmV0L25hdHNlbWkuYwpAQCAtMjAzLDcgKzIwMyw3IEBACiBJSUlkLiBTeW5jaHJvbml6YXRpb24KIAogTW9zdCBvcGVyYXRpb25zIGFyZSBzeW5jaHJvbml6ZWQgb24gdGhlIG5wLT5sb2NrIGlycSBzcGlubG9jaywgZXhjZXB0IHRoZQotcmVjaWV2ZSBhbmQgdHJhbnNtaXQgcGF0aHMgd2hpY2ggYXJlIHN5bmNocm9uaXNlZCB1c2luZyBhIGNvbWJpbmF0aW9uIG9mCityZWNlaXZlIGFuZCB0cmFuc21pdCBwYXRocyB3aGljaCBhcmUgc3luY2hyb25pc2VkIHVzaW5nIGEgY29tYmluYXRpb24gb2YKIGhhcmR3YXJlIGRlc2NyaXB0b3Igb3duZXJzaGlwLCBkaXNhYmxpbmcgaW50ZXJydXB0cyBhbmQgTkFQSSBwb2xsIHNjaGVkdWxpbmcuCiAKIElWYi4gUmVmZXJlbmNlcwpAQCAtNzI2LDcgKzcyNiw3IEBACiAJICogVGhlcmUgYXJlIHR3byBhZGRyZXNzZXMgd2UgbXVzdCBhdm9pZDoKIAkgKiAtIHRoZSBhZGRyZXNzIG9uIHRoZSBleHRlcm5hbCBwaHkgdGhhdCBpcyB1c2VkIGZvciB0cmFuc21pc3Npb24uCiAJICogLSB0aGUgYWRkcmVzcyB0aGF0IHdlIHdhbnQgdG8gYWNjZXNzLiBVc2VyIHNwYWNlIGNhbiBhY2Nlc3MgcGh5cwotCSAqICAgb24gdGhlIG1paSBidXMgd2l0aCBTSU9DR01JSVJFRy9TSU9DU01JSVJFRywgaW5kZXBlbmRhbnQgZnJvbSB0aGUKKwkgKiAgIG9uIHRoZSBtaWkgYnVzIHdpdGggU0lPQ0dNSUlSRUcvU0lPQ1NNSUlSRUcsIGluZGVwZW5kZW50IGZyb20gdGhlCiAJICogICBwaHkgdGhhdCBpcyB1c2VkIGZvciB0cmFuc21pc3Npb24uCiAJICovCiAKQEAgLTE5ODIsNyArMTk4Miw3IEBACiAKIAlucC0+cnhfaGVhZF9kZXNjID0gJm5wLT5yeF9yaW5nWzBdOwogCi0JLyogUGxlYXNlIGJlIGNhcmVmdWxsIGJlZm9yZSBjaGFuZ2luZyB0aGlzIGxvb3AgLSBhdCBsZWFzdCBnY2MtMi45NS4xCisJLyogUGxlYXNlIGJlIGNhcmVmdWwgYmVmb3JlIGNoYW5naW5nIHRoaXMgbG9vcCAtIGF0IGxlYXN0IGdjYy0yLjk1LjEKIAkgKiBtaXNjb21waWxlcyBpdCBvdGhlcndpc2UuCiAJICovCiAJLyogSW5pdGlhbGl6ZSBhbGwgUnggZGVzY3JpcHRvcnMuICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXR4ZW4vbmV0eGVuX25pY19oZHIuaCBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCmluZGV4IGQ4YmQ3M2QuLmRjMTk2N2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCisrKyBiL2RyaXZlcnMvbmV0L25ldHhlbi9uZXR4ZW5fbmljX2hkci5oCkBAIC03ODAsNyArNzgwLDcgQEAKIAogLyoKICAqIGNhcGFiaWxpdGllcyByZWdpc3RlciwgY2FuIGJlIHVzZWQgdG8gc2VsZWN0aXZlbHkgZW5hYmxlL2Rpc2FibGUgZmVhdHVyZXMKLSAqIGZvciBiYWNrd2FyZCBjb21wYWJpbGl0eQorICogZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKICAqLwogI2RlZmluZSBDUkJfTklDX0NBUEFCSUxJVElFU19IT1NUCU5FVFhFTl9OSUNfUkVHKDB4MWE4KQogI2RlZmluZSBDUkJfTklDX01TSV9NT0RFX0hPU1QJCU5FVFhFTl9OSUNfUkVHKDB4MjcwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbnM4MzgyMC5jIGIvZHJpdmVycy9uZXQvbnM4MzgyMC5jCmluZGV4IGE0MWIyY2YuLjY2NjdlMDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25zODM4MjAuYworKysgYi9kcml2ZXJzL25ldC9uczgzODIwLmMKQEAgLTUxMiw3ICs1MTIsNyBAQAogLyogUGFja2V0IFJlY2VpdmVyCiAgKgogICogVGhlIGhhcmR3YXJlIHN1cHBvcnRzIGxpbmtlZCBsaXN0cyBvZiByZWNlaXZlIGRlc2NyaXB0b3JzIGZvcgotICogd2hpY2ggb3duZXJzaGlwIGlzIHRyYW5zZmVyZWQgYmFjayBhbmQgZm9ydGggYnkgbWVhbnMgb2YgYW4KKyAqIHdoaWNoIG93bmVyc2hpcCBpcyB0cmFuc2ZlcnJlZCBiYWNrIGFuZCBmb3J0aCBieSBtZWFucyBvZiBhbgogICogb3duZXJzaGlwIGJpdC4gIFdoaWxlIHRoZSBoYXJkd2FyZSBkb2VzIHN1cHBvcnQgdGhlIHVzZSBvZiBhCiAgKiByaW5nIGZvciByZWNlaXZlIGRlc2NyaXB0b3JzLCB3ZSBvbmx5IG1ha2UgdXNlIG9mIGEgY2hhaW4gaW4KICAqIGFuIGF0dGVtcHQgdG8gcmVkdWNlIGJ1cyB0cmFmZmljIHVuZGVyIGhlYXZ5IGxvYWQgc2NlbmFyaW9zLgpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAKICNpZmRlZiBOUzgzODIwX1ZMQU5fQUNDRUxfU1VQUE9SVAogCWlmKHZsYW5fdHhfdGFnX3ByZXNlbnQoc2tiKSkgewogCQkvKiBmZXRjaCB0aGUgdmxhbiB0YWcgaW5mbyBvdXQgb2YgdGhlCi0JCSAqIGFuY2lsbGlhcnkgZGF0YSBpZiB0aGUgdmxhbiBjb2RlCisJCSAqIGFuY2lsbGFyeSBkYXRhIGlmIHRoZSB2bGFuIGNvZGUKIAkJICogaXMgdXNpbmcgaHcgdmxhbiBhY2NlbGVyYXRpb24KIAkJICovCiAJCXNob3J0IHRhZyA9IHZsYW5fdHhfdGFnX2dldChza2IpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlLmggYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaAppbmRleCBlMWUzM2M4Li5iZjEyNmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaAorKysgYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmUuaApAQCAtMzUxLDcgKzM1MSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX21hY19pbmZvIC0gTUFDIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX21hY19pbmZvIC0gTUFDIGluZm9ybWF0aW9uCiAgKiBAYWRkcls2XToJCVN0b3JlIHRoZSBNQUMgYWRkcmVzcwogICogQGZjOgkJCU1vZGUgb2YgZmxvdyBjb250cm9sCiAgKiBAZmNfYXV0b25lZzoJCUF1dG8gbmVnb3RpYXRpb24gZW5hYmxlIGZvciBmbG93IGNvbnRyb2wgc2V0dGluZwpAQCAtMzc1LDcgKzM3NSw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX3BoeV9pbmZvIC0gUEhZIGluZm9tYXRpb24KKyAqIHN0cnVjdCBwY2hfZ2JlX3BoeV9pbmZvIC0gUEhZIGluZm9ybWF0aW9uCiAgKiBAYWRkcjoJCVBIWSBhZGRyZXNzCiAgKiBAaWQ6CQkJUEhZJ3MgaWRlbnRpZmllcgogICogQHJldmlzaW9uOgkJUEhZJ3MgcmV2aXNpb24KQEAgLTM5Myw3ICszOTMsNyBAQAogLyohCiAgKiBAaW5ncm91cCBHaWdhYml0IEV0aGVyIGRyaXZlciBMYXllcgogICogQHN0cnVjdCAgcGNoX2diZV9idXNfaW5mbwotICogQGJyaWVmICAgQnVzIGluZm9tYXRpb24KKyAqIEBicmllZiAgIEJ1cyBpbmZvcm1hdGlvbgogICovCiBzdHJ1Y3QgcGNoX2diZV9idXNfaW5mbyB7CiAJdTggdHlwZTsKQEAgLTQwNCw3ICs0MDQsNyBAQAogLyohCiAgKiBAaW5ncm91cCBHaWdhYml0IEV0aGVyIGRyaXZlciBMYXllcgogICogQHN0cnVjdCAgcGNoX2diZV9odwotICogQGJyaWVmICAgSGFyZHdhcmUgaW5mb21hdGlvbgorICogQGJyaWVmICAgSGFyZHdhcmUgaW5mb3JtYXRpb24KICAqLwogc3RydWN0IHBjaF9nYmVfaHcgewogCXZvaWQgKmJhY2s7CkBAIC00NjIsNyArNDYyLDcgQEAKIAogCiAvKioKLSAqIHN0cnVjdCBwY2hfZ2JlX2J1ZmZlciAtIEJ1ZmZlciBpbmZvbWF0aW9uCisgKiBzdHJ1Y3QgcGNoX2diZV9idWZmZXIgLSBCdWZmZXIgaW5mb3JtYXRpb24KICAqIEBza2I6CXBvaW50ZXIgdG8gYSBzb2NrZXQgYnVmZmVyCiAgKiBAZG1hOglETUEgYWRkcmVzcwogICogQHRpbWVfc3RhbXA6CXRpbWUgc3RhbXAKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgcGNoX2diZV90eF9yaW5nIC0gdHggcmluZyBpbmZvbWF0aW9uCisgKiBzdHJ1Y3QgcGNoX2diZV90eF9yaW5nIC0gdHggcmluZyBpbmZvcm1hdGlvbgogICogQHR4X2xvY2s6CXNwaW5sb2NrIHN0cnVjdHMKICAqIEBkZXNjOglwb2ludGVyIHRvIHRoZSBkZXNjcmlwdG9yIHJpbmcgbWVtb3J5CiAgKiBAZG1hOglwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSBkZXNjcmlwdG9yIHJpbmcKQEAgLTQ5OSw3ICs0OTksNyBAQAogfTsKIAogLyoqCi0gKiBzdHJ1Y3QgcGNoX2diZV9yeF9yaW5nIC0gcnggcmluZyBpbmZvbWF0aW9uCisgKiBzdHJ1Y3QgcGNoX2diZV9yeF9yaW5nIC0gcnggcmluZyBpbmZvcm1hdGlvbgogICogQGRlc2M6CXBvaW50ZXIgdG8gdGhlIGRlc2NyaXB0b3IgcmluZyBtZW1vcnkKICAqIEBkbWE6CXBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGRlc2NyaXB0b3IgcmluZwogICogQHNpemU6CWxlbmd0aCBvZiBkZXNjcmlwdG9yIHJpbmcgaW4gYnl0ZXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9ldGh0b29sLmMgYi9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfZXRodG9vbC5jCmluZGV4IGM4Yzg3M2IuLmQyMTc0YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9ldGh0b29sLmMKKysrIGIvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX2V0aHRvb2wuYwpAQCAtMjEsNyArMjEsNyBAQAogI2luY2x1ZGUgInBjaF9nYmVfYXBpLmgiCiAKIC8qKgotICogcGNoX2diZV9zdGF0cyAtIFN0YXRzIGl0ZW0gaW5mb21hdGlvbgorICogcGNoX2diZV9zdGF0cyAtIFN0YXRzIGl0ZW0gaW5mb3JtYXRpb24KICAqLwogc3RydWN0IHBjaF9nYmVfc3RhdHMgewogCWNoYXIgc3RyaW5nW0VUSF9HU1RSSU5HX0xFTl07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jIGIvZHJpdmVycy9uZXQvcGNoX2diZS9wY2hfZ2JlX21haW4uYwppbmRleCA1MDk4Njg0Li4yZWYyZjljIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY2hfZ2JlL3BjaF9nYmVfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3BjaF9nYmUvcGNoX2diZV9tYWluLmMKQEAgLTEwMTEsNyArMTAxMSw3IEBACiAJdG1wX3NrYi0+bGVuID0gc2tiLT5sZW47CiAJbWVtY3B5KCZ0bXBfc2tiLT5kYXRhW0VUSF9ITEVOICsgMl0sICZza2ItPmRhdGFbRVRIX0hMRU5dLAogCSAgICAgICAoc2tiLT5sZW4gLSBFVEhfSExFTikpOwotCS8qLS0gU2V0IEJ1ZmZlciBpbmZvbWF0aW9uIC0tKi8KKwkvKi0tIFNldCBCdWZmZXIgaW5mb3JtYXRpb24gLS0qLwogCWJ1ZmZlcl9pbmZvLT5sZW5ndGggPSB0bXBfc2tiLT5sZW47CiAJYnVmZmVyX2luZm8tPmRtYSA9IGRtYV9tYXBfc2luZ2xlKCZhZGFwdGVyLT5wZGV2LT5kZXYsIHRtcF9za2ItPmRhdGEsCiAJCQkJCSAgYnVmZmVyX2luZm8tPmxlbmd0aCwKQEAgLTE1NDAsNyArMTU0MCw3IEBACiAJc2l6ZSA9IChpbnQpc2l6ZW9mKHN0cnVjdCBwY2hfZ2JlX2J1ZmZlcikgKiB0eF9yaW5nLT5jb3VudDsKIAl0eF9yaW5nLT5idWZmZXJfaW5mbyA9IHZ6YWxsb2Moc2l6ZSk7CiAJaWYgKCF0eF9yaW5nLT5idWZmZXJfaW5mbykgewotCQlwcl9lcnIoIlVuYWJsZSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBidWZmZXIgaW5mb21hdGlvblxuIik7CisJCXByX2VycigiVW5hYmxlIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGJ1ZmZlciBpbmZvcm1hdGlvblxuIik7CiAJCXJldHVybiAtRU5PTUVNOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNpLXNrZWxldG9uLmMgYi9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYwppbmRleCAxNzY2ZGM0Li5jMGYyMzM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYworKysgYi9kcml2ZXJzL25ldC9wY2ktc2tlbGV0b24uYwpAQCAtMjE0LDcgKzIxNCw3IEBACiAJeyAiU01DMTIxMVRYIEVaQ2FyZCAxMC8xMDAgKFJlYWxUZWsgUlRMODEzOSkiIH0sCiAvKgl7IE1QWDUwMzAsICJBY2N0b24gTVBYNTAzMCAoUmVhbFRlayBSVEw4MTM5KSIgfSwqLwogCXsgIkRlbHRhIEVsZWN0cm9uaWNzIDgxMzkgMTAvMTAwQmFzZVRYIiB9LAotCXsgIkFkZHRyb24gVGVjaG5vbGd5IDgxMzkgMTAvMTAwQmFzZVRYIiB9LAorCXsgIkFkZHRyb24gVGVjaG5vbG9neSA4MTM5IDEwLzEwMEJhc2VUWCIgfSwKIH07CiAKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcGNtY2lhLzNjNTc0X2NzLmMgYi9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYwppbmRleCAzMjFiMTJmLi44MWFjMzMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYworKysgYi9kcml2ZXJzL25ldC9wY21jaWEvM2M1NzRfY3MuYwpAQCAtOTUwLDcgKzk1MCw3IEBACiB9CiAKIC8qICBVcGRhdGUgc3RhdGlzdGljcy4KLQlTdXByaXNpbmdseSB0aGlzIG5lZWQgbm90IGJlIHJ1biBzaW5nbGUtdGhyZWFkZWQsIGJ1dCBpdCBlZmZlY3RpdmVseSBpcy4KKwlTdXJwcmlzaW5nbHkgdGhpcyBuZWVkIG5vdCBiZSBydW4gc2luZ2xlLXRocmVhZGVkLCBidXQgaXQgZWZmZWN0aXZlbHkgaXMuCiAJVGhlIGNvdW50ZXJzIGNsZWFyIHdoZW4gcmVhZCwgc28gdGhlIGFkZHMgbXVzdCBtZXJlbHkgYmUgYXRvbWljLgogICovCiBzdGF0aWMgdm9pZCB1cGRhdGVfc3RhdHMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjbWNpYS9heG5ldF9jcy5jIGIvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKaW5kZXggZDNjYjc3Mi4uMzA3N2Q3MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKKysrIGIvZHJpdmVycy9uZXQvcGNtY2lhL2F4bmV0X2NzLmMKQEAgLTc4MCw3ICs3ODAsNyBAQAogICBBbGV4ZXkgS3V6bmV0c292CTogdXNlIHRoZSA4MzkwJ3Mgc2l4IGJpdCBoYXNoIG11bHRpY2FzdCBmaWx0ZXIuCiAgIFBhdWwgR29ydG1ha2VyCTogdHdlYWsgQU5LJ3MgYWJvdmUgbXVsdGljYXN0IGNoYW5nZXMgYSBiaXQuCiAgIFBhdWwgR29ydG1ha2VyCTogdXBkYXRlIHBhY2tldCBzdGF0aXN0aWNzIGZvciB2Mi4xLngKLSAgQWxhbiBDb3gJCTogc3VwcG9ydCBhcmJpdGFyeSBzdHVwaWQgcG9ydCBtYXBwaW5ncyBvbiB0aGUKKyAgQWxhbiBDb3gJCTogc3VwcG9ydCBhcmJpdHJhcnkgc3R1cGlkIHBvcnQgbWFwcGluZ3Mgb24gdGhlCiAgIAkJCSAgNjhLIE1hY2ludG9zaC4gU3VwcG9ydCA+MTZiaXQgSS9PIHNwYWNlcwogICBQYXVsIEdvcnRtYWtlcgk6IGFkZCBrbW9kIHN1cHBvcnQgZm9yIGF1dG8tbG9hZGluZyBvZiB0aGUgODM5MAogCQkJICBtb2R1bGUgYnkgYWxsIGRyaXZlcnMgdGhhdCByZXF1aXJlIGl0LgpAQCAtODQyLDcgKzg0Miw3IEBACiAvKgogICoJU01QIGFuZCB0aGUgODM5MCBzZXR1cC4KICAqCi0gKglUaGUgODM5MCBpc250IGV4YWN0bHkgZGVzaWduZWQgdG8gYmUgbXVsdGl0aHJlYWRlZCBvbiBSWC9UWC4gVGhlcmUgaXMKKyAqCVRoZSA4MzkwIGlzbid0IGV4YWN0bHkgZGVzaWduZWQgdG8gYmUgbXVsdGl0aHJlYWRlZCBvbiBSWC9UWC4gVGhlcmUgaXMKICAqCWEgcGFnZSByZWdpc3RlciB0aGF0IGNvbnRyb2xzIGJhbmsgYW5kIHBhY2tldCBidWZmZXIgYWNjZXNzLiBXZSBndWFyZAogICoJdGhpcyB3aXRoIGVpX2xvY2FsLT5wYWdlX2xvY2suIE5vYm9keSBzaG91bGQgYXNzdW1lIG9yIHNldCB0aGUgcGFnZSBvdGhlcgogICoJdGhhbiB6ZXJvIHdoZW4gdGhlIGxvY2sgaXMgbm90IGhlbGQuIExvY2sgaG9sZGVycyBtdXN0IHJlc3RvcmUgcGFnZSAwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wY21jaWEvc21jOTFjOTJfY3MuYyBiL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jCmluZGV4IDhhOWZmNTMuLjEwODU5MTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3BjbWNpYS9zbWM5MWM5Ml9jcy5jCkBAIC0xMjY0LDcgKzEyNjQsNyBAQAogCiAvKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotICAgIEhhbmRsZSBhIFR4IGFub21vbG91cyBldmVudC4gIEVudGVyZWQgd2hpbGUgaW4gV2luZG93IDIuCisgICAgSGFuZGxlIGEgVHggYW5vbWFsb3VzIGV2ZW50LiAgRW50ZXJlZCB3aGlsZSBpbiBXaW5kb3cgMi4KIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BjbmV0MzIuYyBiL2RyaXZlcnMvbmV0L3BjbmV0MzIuYwppbmRleCBhZWUzYmIwLi43NjgwMzc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wY25ldDMyLmMKKysrIGIvZHJpdmVycy9uZXQvcGNuZXQzMi5jCkBAIC0xNjUxLDcgKzE2NTEsNyBAQAogCS8qCiAJICogIE9uIHNlbGVjdGVkIGNoaXBzIHR1cm4gb24gdGhlIEJDUjE4Ok5PVUZMTyBiaXQuIFRoaXMgc3RvcHMgdHJhbnNtaXQKIAkgKiAgc3RhcnRpbmcgdW50aWwgdGhlIHBhY2tldCBpcyBsb2FkZWQuIFN0cmlrZSBvbmUgZm9yIHJlbGlhYmlsaXR5LCBsb3NlCi0JICogIG9uZSBmb3IgbGF0ZW5jeSAtIGFsdGhvdWdoIG9uIFBDSSB0aGlzIGlzbnQgYSBiaWcgbG9zcy4gT2xkZXIgY2hpcHMKKwkgKiAgb25lIGZvciBsYXRlbmN5IC0gYWx0aG91Z2ggb24gUENJIHRoaXMgaXNuJ3QgYSBiaWcgbG9zcy4gT2xkZXIgY2hpcHMKIAkgKiAgaGF2ZSBGSUZPJ3Mgc21hbGxlciB0aGFuIGEgcGFja2V0LCBzbyB5b3UgY2FuJ3QgZG8gdGhpcy4KIAkgKiAgVHVybiBvbiBCQ1IxODpCdXJzdFJkRW4gYW5kIEJDUjE4OkJ1cnN0V3JFbi4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMgYi9kcml2ZXJzL25ldC9waHkvcGh5X2RldmljZS5jCmluZGV4IGU4NzBjMDYuLmZmMTA5ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BoeS9waHlfZGV2aWNlLmMKKysrIGIvZHJpdmVycy9uZXQvcGh5L3BoeV9kZXZpY2UuYwpAQCAtNTM4LDcgKzUzOCw3IEBACiAvKiBHZW5lcmljIFBIWSBzdXBwb3J0IGFuZCBoZWxwZXIgZnVuY3Rpb25zICovCiAKIC8qKgotICogZ2VucGh5X2NvbmZpZ19hZHZlcnQgLSBzYW5pdGl6ZSBhbmQgYWR2ZXJ0aXNlIGF1dG8tbmVnb3RhdGlvbiBwYXJhbWV0ZXJzCisgKiBnZW5waHlfY29uZmlnX2FkdmVydCAtIHNhbml0aXplIGFuZCBhZHZlcnRpc2UgYXV0by1uZWdvdGlhdGlvbiBwYXJhbWV0ZXJzCiAgKiBAcGh5ZGV2OiB0YXJnZXQgcGh5X2RldmljZSBzdHJ1Y3QKICAqCiAgKiBEZXNjcmlwdGlvbjogV3JpdGVzIE1JSV9BRFZFUlRJU0Ugd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzLApAQCAtNjg3LDcgKzY4Nyw3IEBACiAJCXJldHVybiByZXN1bHQ7CiAKIAlpZiAocmVzdWx0ID09IDApIHsKLQkJLyogQWR2ZXJ0aXNtZW50IGhhc24ndCBjaGFuZ2VkLCBidXQgbWF5YmUgYW5lZyB3YXMgbmV2ZXIgb24gdG8KKwkJLyogQWR2ZXJ0aXNlbWVudCBoYXNuJ3QgY2hhbmdlZCwgYnV0IG1heWJlIGFuZWcgd2FzIG5ldmVyIG9uIHRvCiAJCSAqIGJlZ2luIHdpdGg/ICBPciBtYXliZSBwaHkgd2FzIGlzb2xhdGVkPyAqLwogCQlpbnQgY3RsID0gcGh5X3JlYWQocGh5ZGV2LCBNSUlfQk1DUik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcF9nZW5lcmljLmMgYi9kcml2ZXJzL25ldC9wcHBfZ2VuZXJpYy5jCmluZGV4IDlmNmQ2NzAuLjQ2MDliYzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcF9nZW5lcmljLmMKKysrIGIvZHJpdmVycy9uZXQvcHBwX2dlbmVyaWMuYwpAQCAtMTQ0OCw3ICsxNDQ4LDcgQEAKIAogCQkvKgogCQkgKmNoZWNrIGlmIHdlIGFyZSBvbiB0aGUgbGFzdCBjaGFubmVsIG9yCi0JCSAqd2UgZXhjZWRlZCB0aGUgbGVuZ2h0IG9mIHRoZSBkYXRhIHRvCisJCSAqd2UgZXhjZWRlZCB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIHRvCiAJCSAqZnJhZ21lbnQKIAkJICovCiAJCWlmICgobmZyZWUgPD0gMCkgfHwgKGZsZW4gPiBsZW4pKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYyBiL2RyaXZlcnMvbmV0L3BwcF9zeW5jdHR5LmMKaW5kZXggNGU2YjcyZi4uMjU3M2Y1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHBwX3N5bmN0dHkuYworKysgYi9kcml2ZXJzL25ldC9wcHBfc3luY3R0eS5jCkBAIC0xNzgsNyArMTc4LDcgQEAKICAqIHdheSB0byBmaXggdGhpcyBpcyB0byB1c2UgYSByd2xvY2sgaW4gdGhlIHR0eSBzdHJ1Y3QsIGJ1dCBmb3Igbm93CiAgKiB3ZSB1c2UgYSBzaW5nbGUgZ2xvYmFsIHJ3bG9jayBmb3IgYWxsIHR0eXMgaW4gcHBwIGxpbmUgZGlzY2lwbGluZS4KICAqCi0gKiBGSVhNRTogRml4ZWQgaW4gdHR5X2lvIG5vd2RheXMuCisgKiBGSVhNRTogRml4ZWQgaW4gdHR5X2lvIG5vd2FkYXlzLgogICovCiBzdGF0aWMgREVGSU5FX1JXTE9DSyhkaXNjX2RhdGFfbG9jayk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BwcG9lLmMgYi9kcml2ZXJzL25ldC9wcHBvZS5jCmluZGV4IDc4YzBlM2MuLjY5M2FhZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3BwcG9lLmMKKysrIGIvZHJpdmVycy9uZXQvcHBwb2UuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAgKiAyKSBTZXNzaW9uIHN0YWdlIChNQUMgYW5kIFNJRCBhcmUga25vd24pCiAgKgogICogRXRoZXJuZXQgZnJhbWVzIGhhdmUgYSBzcGVjaWFsIHRhZyBmb3IgdGhpcyBidXQKLSAqIHdlIHVzZSBzaW1wbGllciBhcHByb2FjaCBiYXNlZCBvbiBzZXNzaW9uIGlkCisgKiB3ZSB1c2Ugc2ltcGxlciBhcHByb2FjaCBiYXNlZCBvbiBzZXNzaW9uIGlkCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbCBzdGFnZV9zZXNzaW9uKF9fYmUxNiBzaWQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmMgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmMKaW5kZXggNWVjZmE0Yi4uZmZkZjczNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5jCisrKyBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuYwpAQCAtNjMyLDcgKzYzMiw3IEBACiAgKiBAY2FyZDogY2FyZCBzdHJ1Y3R1cmUKICAqCiAgKiBnZWxpY19jYXJkX2Rpc2FibGVfcnhkbWFjIHRlcm1pbmF0ZXMgcHJvY2Vzc2luZyBvbiB0aGUgRE1BIGNvbnRyb2xsZXIgYnkKLSAqIHR1cmluZyBvZmYgRE1BIGFuZCBpc3N1ZWluZyBhIGZvcmNlIGVuZAorICogdHVyaW5nIG9mZiBETUEgYW5kIGlzc3VpbmcgYSBmb3JjZSBlbmQKICAqLwogc3RhdGljIGlubGluZSB2b2lkIGdlbGljX2NhcmRfZGlzYWJsZV9yeGRtYWMoc3RydWN0IGdlbGljX2NhcmQgKmNhcmQpCiB7CkBAIC02NTAsNyArNjUwLDcgQEAKICAqIEBjYXJkOiBjYXJkIHN0cnVjdHVyZQogICoKICAqIGdlbGljX2NhcmRfZGlzYWJsZV90eGRtYWMgdGVybWluYXRlcyBwcm9jZXNzaW5nIG9uIHRoZSBETUEgY29udHJvbGxlciBieQotICogdHVyaW5nIG9mZiBETUEgYW5kIGlzc3VlaW5nIGEgZm9yY2UgZW5kCisgKiB0dXJpbmcgb2ZmIERNQSBhbmQgaXNzdWluZyBhIGZvcmNlIGVuZAogICovCiBzdGF0aWMgaW5saW5lIHZvaWQgZ2VsaWNfY2FyZF9kaXNhYmxlX3R4ZG1hYyhzdHJ1Y3QgZ2VsaWNfY2FyZCAqY2FyZCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuaCBiL2RyaXZlcnMvbmV0L3BzM19nZWxpY19uZXQuaAppbmRleCAzMjUyMWFlLi5mYWRhZGY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfbmV0LmgKKysrIGIvZHJpdmVycy9uZXQvcHMzX2dlbGljX25ldC5oCkBAIC0xMTcsNyArMTE3LDcgQEAKIAlHRUxJQ19ERVNDUl9SWERBVEFFUlIJPSAweDAwMDIwMDAwLCAvKiBJUCBwYWNrZXQgZm9ybWF0IGVycm9yICovCiAJR0VMSUNfREVTQ1JfUlhDQUxFUlIJPSAweDAwMDEwMDAwLCAvKiBjYXJpaWVyIGV4dGVuc2lvbiBsZW5ndGgKIAkJCQkJICAgICAgKiBlcnJvciAqLwotCUdFTElDX0RFU0NSX1JYQ1JFWEVSUgk9IDB4MDAwMDgwMDAsIC8qIGNhcnJpZXIgZXh0ZW50aW9uIGVycm9yICovCisJR0VMSUNfREVTQ1JfUlhDUkVYRVJSCT0gMHgwMDAwODAwMCwgLyogY2FycmllciBleHRlbnNpb24gZXJyb3IgKi8KIAlHRUxJQ19ERVNDUl9SWE1MVENTVAk9IDB4MDAwMDQwMDAsIC8qIG11bHRpY2FzdCBhZGRyZXNzIGZyYW1lICovCiAJLyogYml0IDEzLi4wIHJlc2VydmVkICovCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHMzX2dlbGljX3dpcmVsZXNzLmMgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYwppbmRleCA0YTYyNGEyLi5iNWFlMjlkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYworKysgYi9kcml2ZXJzL25ldC9wczNfZ2VsaWNfd2lyZWxlc3MuYwpAQCAtODE0LDcgKzgxNCw3IEBACiAJCQkgKiB5b3Ugd2lsbCBub3QgZGVjaWRlIHN1aXRhYmxlIGNpcGhlciBmcm9tCiAJCQkgKiBpdHMgYmVhY29uLgogCQkJICogWW91IHNob3VsZCBoYXZlIGtub3dsZWRnZSBhYm91dCB0aGUgQVAncwotCQkJICogY2lwaGVyIGluZm9tYXRpb24gaW4gb3RoZXIgbWV0aG9kIHByaW9yIHRvCisJCQkgKiBjaXBoZXIgaW5mb3JtYXRpb24gaW4gb3RoZXIgbWV0aG9kIHByaW9yIHRvCiAJCQkgKiB0aGUgYXNzb2NpYXRpb24uCiAJCQkgKi8KIAkJCWlmICghcHJlY2lzZV9pZSgpKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvcHhhMTY4X2V0aC5jIGIvZHJpdmVycy9uZXQvcHhhMTY4X2V0aC5jCmluZGV4IDFiNjNjOGEuLjg5Zjc1NDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3B4YTE2OF9ldGguYworKysgYi9kcml2ZXJzL25ldC9weGExNjhfZXRoLmMKQEAgLTQ2Miw3ICs0NjIsNyBAQAogICogcGVwIC0gRVRIRVJORVQgLgogICogbWFjX2FkZHIgLSBNQUMgYWRkcmVzcy4KICAqIHNraXAgLSBpZiAxLCBza2lwIHRoaXMgYWRkcmVzcy5Vc2VkIGluIGNhc2Ugb2YgZGVsZXRpbmcgYW4gZW50cnkgd2hpY2ggaXMgYQotICoJICBwYXJ0IG9mIGNoYWluIGluIHRoZSBoYXNoIHRhYmxlLldlIGNhbnQganVzdCBkZWxldGUgdGhlIGVudHJ5IHNpbmNlCisgKgkgIHBhcnQgb2YgY2hhaW4gaW4gdGhlIGhhc2ggdGFibGUuV2UgY2FuJ3QganVzdCBkZWxldGUgdGhlIGVudHJ5IHNpbmNlCiAgKgkgIHRoYXQgd2lsbCBicmVhayB0aGUgY2hhaW4uV2UgbmVlZCB0byBkZWZyYWdtZW50IHRoZSB0YWJsZXMgdGltZSB0bwogICoJICB0aW1lLgogICogcmQgICAtIDAgRGlzY2FyZCBwYWNrZXQgdXBvbiBtYXRjaC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3FsYTN4eHguaCBiL2RyaXZlcnMvbmV0L3FsYTN4eHguaAppbmRleCAzMzYyYTY2Li43M2UyMzQzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvcWxhM3h4eC5oCisrKyBiL2RyaXZlcnMvbmV0L3FsYTN4eHguaApAQCAtNzcwLDcgKzc3MCw3IEBACiAJRk05M0M1NkFfV0RTID0gMHgwLAogCUZNOTNDNTZBX0VSQVNFID0gMHgzLAogCUZNOTNDNTZBX0VSQVNFX0FMTCA9IDB4MCwKLS8qIENvbW1hbmQgRXh0ZW50aW9ucyAqLworLyogQ29tbWFuZCBFeHRlbnNpb25zICovCiAJRk05M0M1NkFfV0VOX0VYVCA9IDB4MywKIAlGTTkzQzU2QV9XUklURV9BTExfRVhUID0gMHgxLAogCUZNOTNDNTZBX1dEU19FWFQgPSAweDAsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9xbGdlL3FsZ2VfbWFpbi5jIGIvZHJpdmVycy9uZXQvcWxnZS9xbGdlX21haW4uYwppbmRleCA0OWJmYTU4Li41YmIzMTE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9xbGdlL3FsZ2VfbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3FsZ2UvcWxnZV9tYWluLmMKQEAgLTY2MCw3ICs2NjAsNyBAQAogLyogSWYgd2UncmUgcnVubmluZyB3aXRoIG11bHRpcGxlIE1TSS1YIHZlY3RvcnMgdGhlbiB3ZSBlbmFibGUgb24gdGhlIGZseS4KICAqIE90aGVyd2lzZSwgd2UgbWF5IGhhdmUgbXVsdGlwbGUgb3V0c3RhbmRpbmcgd29ya2VycyBhbmQgZG9uJ3Qgd2FudCB0bwogICogZW5hYmxlIHVudGlsIHRoZSBsYXN0IG9uZSBmaW5pc2hlcy4gSW4gdGhpcyBjYXNlLCB0aGUgaXJxX2NudCBnZXRzCi0gKiBpbmNyZW1lbnRlZCBldmVyeXRpbWUgd2UgcXVldWUgYSB3b3JrZXIgYW5kIGRlY3JlbWVudGVkIGV2ZXJ5dGltZQorICogaW5jcmVtZW50ZWQgZXZlcnkgdGltZSB3ZSBxdWV1ZSBhIHdvcmtlciBhbmQgZGVjcmVtZW50ZWQgZXZlcnkgdGltZQogICogYSB3b3JrZXIgZmluaXNoZXMuICBPbmNlIGl0IGhpdHMgemVybyB3ZSBlbmFibGUgdGhlIGludGVycnVwdC4KICAqLwogdTMyIHFsX2VuYWJsZV9jb21wbGV0aW9uX2ludGVycnVwdChzdHJ1Y3QgcWxfYWRhcHRlciAqcWRldiwgdTMyIGludHIpCkBAIC0zMjk5LDcgKzMyOTksNyBAQAogICogd2lsbCBzZXJ2aWNlIGl0LiAgQW4gZXhhbXBsZSB3b3VsZCBiZSBpZiB0aGVyZSBhcmUKICAqIDIgdmVjdG9ycyAoc28gMiBSU1MgcmluZ3MpIGFuZCA4IFRYIGNvbXBsZXRpb24gcmluZ3MuCiAgKiBUaGlzIHdvdWxkIG1lYW4gdGhhdCB2ZWN0b3IgMCB3b3VsZCBzZXJ2aWNlIFJTUyByaW5nIDAKLSAqIGFuZCBUWCBjb21wZXRpb24gcmluZ3MgMCwxLDIgYW5kIDMuICBWZWN0b3IgMSB3b3VsZAorICogYW5kIFRYIGNvbXBsZXRpb24gcmluZ3MgMCwxLDIgYW5kIDMuICBWZWN0b3IgMSB3b3VsZAogICogc2VydmljZSBSU1MgcmluZyAxIGFuZCBUWCBjb21wbGV0aW9uIHJpbmdzIDQsNSw2IGFuZCA3LgogICovCiBzdGF0aWMgdm9pZCBxbF9zZXRfdHhfdmVjdChzdHJ1Y3QgcWxfYWRhcHRlciAqcWRldikKQEAgLTQxNTIsNyArNDE1Miw3IEBACiAJaW50IGksIHN0YXR1czsKIAl1MzIgbGJxX2J1Zl9sZW47CiAKLQkvKiBXYWl0IGZvciBhbiBvdXN0YW5kaW5nIHJlc2V0IHRvIGNvbXBsZXRlLiAqLworCS8qIFdhaXQgZm9yIGFuIG91dHN0YW5kaW5nIHJlc2V0IHRvIGNvbXBsZXRlLiAqLwogCWlmICghdGVzdF9iaXQoUUxfQURBUFRFUl9VUCwgJnFkZXYtPmZsYWdzKSkgewogCQlpbnQgaSA9IDM7CiAJCXdoaWxlIChpLS0gJiYgIXRlc3RfYml0KFFMX0FEQVBURVJfVVAsICZxZGV2LT5mbGFncykpIHsKQEAgLTQyODEsNyArNDI4MSw3IEBACiAJCQlpZiAocWxfc2V0X3JvdXRpbmdfcmVnCiAJCQkgICAgKHFkZXYsIFJUX0lEWF9QUk9NSVNDVU9VU19TTE9ULCBSVF9JRFhfVkFMSUQsIDEpKSB7CiAJCQkJbmV0aWZfZXJyKHFkZXYsIGh3LCBxZGV2LT5uZGV2LAotCQkJCQkgICJGYWlsZWQgdG8gc2V0IHByb21pc2NvdXMgbW9kZS5cbiIpOworCQkJCQkgICJGYWlsZWQgdG8gc2V0IHByb21pc2N1b3VzIG1vZGUuXG4iKTsKIAkJCX0gZWxzZSB7CiAJCQkJc2V0X2JpdChRTF9QUk9NSVNDVU9VUywgJnFkZXYtPmZsYWdzKTsKIAkJCX0KQEAgLTQyOTEsNyArNDI5MSw3IEBACiAJCQlpZiAocWxfc2V0X3JvdXRpbmdfcmVnCiAJCQkgICAgKHFkZXYsIFJUX0lEWF9QUk9NSVNDVU9VU19TTE9ULCBSVF9JRFhfVkFMSUQsIDApKSB7CiAJCQkJbmV0aWZfZXJyKHFkZXYsIGh3LCBxZGV2LT5uZGV2LAotCQkJCQkgICJGYWlsZWQgdG8gY2xlYXIgcHJvbWlzY291cyBtb2RlLlxuIik7CisJCQkJCSAgIkZhaWxlZCB0byBjbGVhciBwcm9taXNjdW91cyBtb2RlLlxuIik7CiAJCQl9IGVsc2UgewogCQkJCWNsZWFyX2JpdChRTF9QUk9NSVNDVU9VUywgJnFkZXYtPmZsYWdzKTsKIAkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3I2MDQwLmMgYi9kcml2ZXJzL25ldC9yNjA0MC5jCmluZGV4IGUzZWJkOTAuLjIwMGEzNjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3I2MDQwLmMKKysrIGIvZHJpdmVycy9uZXQvcjYwNDAuYwpAQCAtNTM1LDcgKzUzNSw3IEBACiAJCQkvKiBSWCBkcmliYmxlICovCiAJCQlpZiAoZXJyICYgRFNDX1JYX0VSUl9EUkkpCiAJCQkJZGV2LT5zdGF0cy5yeF9mcmFtZV9lcnJvcnMrKzsKLQkJCS8qIEJ1ZmZlciBsZW5naHQgZXhjZWVkZWQgKi8KKwkJCS8qIEJ1ZmZlciBsZW5ndGggZXhjZWVkZWQgKi8KIAkJCWlmIChlcnIgJiBEU0NfUlhfRVJSX0JVRikKIAkJCQlkZXYtPnN0YXRzLnJ4X2xlbmd0aF9lcnJvcnMrKzsKIAkJCS8qIFBhY2tldCB0b28gbG9uZyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvczJpby5jIGIvZHJpdmVycy9uZXQvczJpby5jCmluZGV4IDM1NmU3NGQuLjMzN2JkY2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3MyaW8uYworKysgYi9kcml2ZXJzL25ldC9zMmlvLmMKQEAgLTIzNTMsNyArMjM1Myw3IEBACiAKIAlpZiAoczJpb19saW5rX2ZhdWx0X2luZGljYXRpb24obmljKSA9PSBNQUNfUk1BQ19FUlJfVElNRVIpIHsKIAkJLyoKLQkJICogRG9udCBzZWUgbGluayBzdGF0ZSBpbnRlcnJ1cHRzIGluaXRhbGx5IG9uIHNvbWUgc3dpdGNoZXMsCisJCSAqIERvbnQgc2VlIGxpbmsgc3RhdGUgaW50ZXJydXB0cyBpbml0aWFsbHkgb24gc29tZSBzd2l0Y2hlcywKIAkJICogc28gZGlyZWN0bHkgc2NoZWR1bGluZyB0aGUgbGluayBzdGF0ZSB0YXNrIGhlcmUuCiAJCSAqLwogCQlzY2hlZHVsZV93b3JrKCZuaWMtPnNldF9saW5rX3Rhc2spOwpAQCAtMzU2Myw3ICszNTYzLDcgQEAKIAl9CiAKIAkvKgotCSAqIENsZWFyIHNwdXJpb3VzIEVDQyBpbnRlcnJ1cHRzIHRoYXQgd291bGQgaGF2ZSBvY2N1cmVkIG9uCisJICogQ2xlYXIgc3B1cmlvdXMgRUNDIGludGVycnVwdHMgdGhhdCB3b3VsZCBoYXZlIG9jY3VycmVkIG9uCiAJICogWEZSQU1FIElJIGNhcmRzIGFmdGVyIHJlc2V0LgogCSAqLwogCWlmIChzcC0+ZGV2aWNlX3R5cGUgPT0gWEZSQU1FX0lJX0RFVklDRSkgewpAQCAtNDA2NSw3ICs0MDY1LDcgQEAKICAqICBEZXNjcmlwdGlvbiA6CiAgKiAgVGhpcyBmdW5jdGlvbiBpcyB0aGUgVHggZW50cnkgcG9pbnQgb2YgdGhlIGRyaXZlci4gUzJJTyBOSUMgc3VwcG9ydHMKICAqICBjZXJ0YWluIHByb3RvY29sIGFzc2lzdCBmZWF0dXJlcyBvbiBUeCBzaWRlLCBuYW1lbHkgIENTTywgUy9HLCBMU08uCi0gKiAgTk9URTogd2hlbiBkZXZpY2UgY2FudCBxdWV1ZSB0aGUgcGt0LGp1c3QgdGhlIHRyYW5zX3N0YXJ0IHZhcmlhYmxlIHdpbGwKKyAqICBOT1RFOiB3aGVuIGRldmljZSBjYW4ndCBxdWV1ZSB0aGUgcGt0LGp1c3QgdGhlIHRyYW5zX3N0YXJ0IHZhcmlhYmxlIHdpbGwKICAqICBub3QgYmUgdXBhZHRlZC4KICAqICBSZXR1cm4gdmFsdWU6CiAgKiAgMCBvbiBzdWNjZXNzICYgMSBvbiBmYWlsdXJlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvczJpby5oIGIvZHJpdmVycy9uZXQvczJpby5oCmluZGV4IDdkMTYwMzAuLjJkMTQ0OTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3MyaW8uaAorKysgYi9kcml2ZXJzL25ldC9zMmlvLmgKQEAgLTM3Niw3ICszNzYsNyBAQAogLyogTWFpbnRhaW5zIFBlciBGSUZPIHJlbGF0ZWQgaW5mb3JtYXRpb24uICovCiBzdHJ1Y3QgdHhfZmlmb19jb25maWcgewogI2RlZmluZQlNQVhfQVZBSUxBQkxFX1RYRFMJODE5MgotCXUzMiBmaWZvX2xlbjsJCS8qIHNwZWNpZmllcyBsZW4gb2YgRklGTyB1cHRvIDgxOTIsIGllIG5vIG9mIFR4RExzICovCisJdTMyIGZpZm9fbGVuOwkJLyogc3BlY2lmaWVzIGxlbiBvZiBGSUZPIHVwIHRvIDgxOTIsIGllIG5vIG9mIFR4RExzICovCiAvKiBQcmlvcml0eSBkZWZpbml0aW9uICovCiAjZGVmaW5lIFRYX0ZJRk9fUFJJXzAgICAgICAgICAgICAgICAwCS8qSGlnaGVzdCAqLwogI2RlZmluZSBUWF9GSUZPX1BSSV8xICAgICAgICAgICAgICAgMQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2ZjL2ZhbGNvbi5jIGIvZHJpdmVycy9uZXQvc2ZjL2ZhbGNvbi5jCmluZGV4IDczNGZjZmIuLmQ5NmIyMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NmYy9mYWxjb24uYworKysgYi9kcml2ZXJzL25ldC9zZmMvZmFsY29uLmMKQEAgLTY5Miw3ICs2OTIsNyBAQAogCWVmeF9vd29yZF90IG1kX3N0YXQ7CiAJaW50IGNvdW50OwogCi0JLyogd2FpdCB1cHRvIDUwbXMgLSB0YWtlbiBtYXggZnJvbSBkYXRhc2hlZXQgKi8KKwkvKiB3YWl0IHVwIHRvIDUwbXMgLSB0YWtlbiBtYXggZnJvbSBkYXRhc2hlZXQgKi8KIAlmb3IgKGNvdW50ID0gMDsgY291bnQgPCA1MDAwOyBjb3VudCsrKSB7CiAJCWVmeF9yZWFkbyhlZngsICZtZF9zdGF0LCBGUl9BQl9NRF9TVEFUKTsKIAkJaWYgKEVGWF9PV09SRF9GSUVMRChtZF9zdGF0LCBGUkZfQUJfTURfQlNZKSA9PSAwKSB7CkBAIC0xMjIxLDcgKzEyMjEsNyBAQAogCiAJCQlyZXR1cm4gMDsKIAkJfQotCX0gd2hpbGUgKCsrY291bnQgPCAyMCk7CS8qIHdhaXQgdXB0byAwLjQgc2VjICovCisJfSB3aGlsZSAoKytjb3VudCA8IDIwKTsJLyogd2FpdCB1cCB0byAwLjQgc2VjICovCiAKIAluZXRpZl9lcnIoZWZ4LCBodywgZWZ4LT5uZXRfZGV2LCAidGltZWQgb3V0IHdhaXRpbmcgZm9yIFNSQU0gcmVzZXRcbiIpOwogCXJldHVybiAtRVRJTUVET1VUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2ZjL21jZGkuYyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpLmMKaW5kZXggNWUxMThmMC4uZDk4NDc5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2ZjL21jZGkuYworKysgYi9kcml2ZXJzL25ldC9zZmMvbWNkaS5jCkBAIC00NTMsNyArNDUzLDcgQEAKIAkgKgogCSAqIFRoZXJlJ3MgYSByYWNlIGhlcmUgd2l0aCBlZnhfbWNkaV9ycGMoKSwgYmVjYXVzZSB3ZSBtaWdodCByZWNlaXZlCiAJICogYSBSRUJPT1QgZXZlbnQgKmJlZm9yZSogdGhlIHJlcXVlc3QgaGFzIGJlZW4gY29waWVkIG91dC4gSW4gcG9sbGVkCi0JICogbW9kZSAoZHVyaW5nIHN0YXJ0dXApIHRoaXMgaXMgaXJyZWxldmVudCwgYmVjYXVzZSBlZnhfbWNkaV9jb21wbGV0ZSgpCisJICogbW9kZSAoZHVyaW5nIHN0YXJ0dXApIHRoaXMgaXMgaXJyZWxldmFudCwgYmVjYXVzZSBlZnhfbWNkaV9jb21wbGV0ZSgpCiAJICogaXMgaWdub3JlZC4gSW4gZXZlbnQgbW9kZSwgdGhpcyBjb25kaXRpb24gaXMganVzdCBhbiBlZGdlLWNhc2Ugb2YKIAkgKiByZWNlaXZpbmcgYSBSRUJPT1QgZXZlbnQgYWZ0ZXIgcG9zdGluZyB0aGUgTUNESSByZXF1ZXN0LiBEaWQgdGhlIG1jCiAJICogcmVib290IGJlZm9yZSBvciBhZnRlciB0aGUgY29weW91dD8gVGhlIGJlc3Qgd2UgY2FuIGRvIGFsd2F5cyBpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGNvbC5oIGIvZHJpdmVycy9uZXQvc2ZjL21jZGlfcGNvbC5oCmluZGV4IGI4NmExNWYuLjQxZmUwNmYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3Bjb2wuaAorKysgYi9kcml2ZXJzL25ldC9zZmMvbWNkaV9wY29sLmgKQEAgLTEwMyw3ICsxMDMsNyBAQAogICoKICAqIElmIENvZGU9PUNNRERPTkUsIHRoZW4gdGhlIGZpZWxkcyBhcmUgZnVydGhlciBpbnRlcnByZXRlZCBhczoKICAqCi0gKiAgIC0gTEVWRUw9PUlORk8gICAgQ29tbWFuZCBzdWNjZWRlZAorICogICAtIExFVkVMPT1JTkZPICAgIENvbW1hbmQgc3VjY2VlZGVkCiAgKiAgIC0gTEVWRUw9PUVSUiAgICAgQ29tbWFuZCBmYWlsZWQKICAqCiAgKiAgICAwICAgICA4ICAgICAgICAgMTYgICAgICAyNCAgICAgMzIKQEAgLTU3Miw3ICs1NzIsNyBAQAogICAoNCooX251bXdvcmRzKSkKIAogLyogTUNfQ01EX1NFVF9SQU5EX1NFRUQ6Ci0gKiBTZXQgdGhlIDE2Ynl0ZSBzZWVkIGZvciB0aGUgTUMgcHN1ZWRvLXJhbmRvbSBnZW5lcmF0b3IKKyAqIFNldCB0aGUgMTZieXRlIHNlZWQgZm9yIHRoZSBNQyBwc2V1ZG8tcmFuZG9tIGdlbmVyYXRvcgogICovCiAjZGVmaW5lIE1DX0NNRF9TRVRfUkFORF9TRUVEIDB4MWEKICNkZWZpbmUgTUNfQ01EX1NFVF9SQU5EX1NFRURfSU5fTEVOIDE2CkBAIC0xMTYyLDcgKzExNjIsNyBAQAogI2RlZmluZSBNQ19DTURfTUFDX1NUQVRTX0NNRF9DTEVBUl9XSURUSCAxCiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX1BFUklPRElDX0NIQU5HRV9MQk4gMgogI2RlZmluZSBNQ19DTURfTUFDX1NUQVRTX0NNRF9QRVJJT0RJQ19DSEFOR0VfV0lEVEggMQotLyogUmVtYWluaW5nIFBFUklPRCogZmllbGRzIG9ubHkgcmVsZXZlbnQgd2hlbiBQRVJJT0RJQ19DSEFOR0UgaXMgc2V0ICovCisvKiBSZW1haW5pbmcgUEVSSU9EKiBmaWVsZHMgb25seSByZWxldmFudCB3aGVuIFBFUklPRElDX0NIQU5HRSBpcyBzZXQgKi8KICNkZWZpbmUgTUNfQ01EX01BQ19TVEFUU19DTURfUEVSSU9ESUNfRU5BQkxFX0xCTiAzCiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX1BFUklPRElDX0VOQUJMRV9XSURUSCAxCiAjZGVmaW5lIE1DX0NNRF9NQUNfU1RBVFNfQ01EX1BFUklPRElDX0NMRUFSX0xCTiA0CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvbWNkaV9waHkuYyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3BoeS5jCmluZGV4IGVjM2Y3NDAuLjdlM2M2NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3BoeS5jCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9tY2RpX3BoeS5jCkBAIC00NDksNyArNDQ5LDcgQEAKIAlzdHJ1Y3QgZWZ4X21jZGlfcGh5X2RhdGEgKnBoeV9jZmcgPSBlZngtPnBoeV9kYXRhOwogCXUzMiBybXRhZHY7CiAKLQkvKiBUaGUgbGluayBwYXJ0bmVyIGNhcGFiaWxpdGllcyBhcmUgb25seSByZWxldmVudCBpZiB0aGUKKwkvKiBUaGUgbGluayBwYXJ0bmVyIGNhcGFiaWxpdGllcyBhcmUgb25seSByZWxldmFudCBpZiB0aGUKIAkgKiBsaW5rIHN1cHBvcnRzIGZsb3cgY29udHJvbCBhdXRvbmVnb3RpYXRpb24gKi8KIAlpZiAofnBoeV9jZmctPnN1cHBvcnRlZF9jYXAgJiAoMSA8PCBNQ19DTURfUEhZX0NBUF9BTl9MQk4pKQogCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zZmMvbmV0X2RyaXZlci5oIGIvZHJpdmVycy9uZXQvc2ZjL25ldF9kcml2ZXIuaAppbmRleCAyMTVkNWM1Li45ZmZhOWE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zZmMvbmV0X2RyaXZlci5oCisrKyBiL2RyaXZlcnMvbmV0L3NmYy9uZXRfZHJpdmVyLmgKQEAgLTY3MCw3ICs2NzAsNyBAQAogICogQGlycV96ZXJvX2NvdW50OiBOdW1iZXIgb2YgbGVnYWN5IElSUXMgc2VlbiB3aXRoIHF1ZXVlIGZsYWdzID09IDAKICAqIEBmYXRhbF9pcnFfbGV2ZWw6IElSUSBsZXZlbCAoYml0IG51bWJlcikgdXNlZCBmb3Igc2VyaW91cyBlcnJvcnMKICAqIEBtdGRfbGlzdDogTGlzdCBvZiBNVERzIGF0dGFjaGVkIHRvIHRoZSBOSUMKLSAqIEBuaWNfZGF0YTogSGFyZHdhcmUgZGVwZW5kYW50IHN0YXRlCisgKiBAbmljX2RhdGE6IEhhcmR3YXJlIGRlcGVuZGVudCBzdGF0ZQogICogQG1hY19sb2NrOiBNQUMgYWNjZXNzIGxvY2suIFByb3RlY3RzIEBwb3J0X2VuYWJsZWQsIEBwaHlfbW9kZSwKICAqCUBwb3J0X2luaGliaXRlZCwgZWZ4X21vbml0b3IoKSBhbmQgZWZ4X3JlY29uZmlndXJlX3BvcnQoKQogICogQHBvcnRfZW5hYmxlZDogUG9ydCBlbmFibGVkIGluZGljYXRvci4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NnaXNlZXEuYyBiL2RyaXZlcnMvbmV0L3NnaXNlZXEuYwppbmRleCAzYTBjYzYzLi5kZDAzYmY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zZ2lzZWVxLmMKKysrIGIvZHJpdmVycy9uZXQvc2dpc2VlcS5jCkBAIC0zMyw3ICszMyw3IEBACiAgKiB3aXRoIHRoYXQgaW4gbWluZCwgSSd2ZSBkZWNpZGVkIHRvIG1ha2UgdGhpcyBkcml2ZXIgbG9vayBjb21wbGV0ZWx5IGxpa2UgYQogICogc3R1cGlkIExhbmNlIGZyb20gYSBkcml2ZXIgYXJjaGl0ZWN0dXJlIHBlcnNwZWN0aXZlLiAgT25seSBkaWZmZXJlbmNlIGlzIHRoYXQKICAqIGhlcmUgb3VyICJyaW5nIGJ1ZmZlciIgbG9va3MgYW5kIGFjdHMgbGlrZSBhIHJlYWwgTGFuY2Ugb25lIGRvZXMgYnV0IGlzCi0gKiBsYXllZCBvdXQgbGlrZSBob3cgdGhlIEhQQyBETUEgYW5kIHRoZSBTZWVxIHdhbnQgaXQgdG8uICBZb3UnZCBiZSBzdXJwcmlzZWQKKyAqIGxhaWQgb3V0IGxpa2UgaG93IHRoZSBIUEMgRE1BIGFuZCB0aGUgU2VlcSB3YW50IGl0IHRvLiAgWW91J2QgYmUgc3VycHJpc2VkCiAgKiBob3cgYSBzdHVwaWQgaWRlYSBsaWtlIHRoaXMgY2FuIHBheSBvZmYgaW4gcGVyZm9ybWFuY2UsIG5vdCB0byBtZW50aW9uCiAgKiBtYWtpbmcgdGhpcyBkcml2ZXIgMiwwMDAgdGltZXMgZWFzaWVyIHRvIHdyaXRlLiA7LSkKICAqLwpAQCAtNzcsNyArNzcsNyBAQAogfTsKIAogLyoKLSAqIFdhcm5pbmc6IFRoaXMgc3RydWN0dXJlIGlzIGxheWVkIG91dCBpbiBhIGNlcnRhaW4gd2F5IGJlY2F1c2UgSFBDIGRtYQorICogV2FybmluZzogVGhpcyBzdHJ1Y3R1cmUgaXMgbGFpZCBvdXQgaW4gYSBjZXJ0YWluIHdheSBiZWNhdXNlIEhQQyBkbWEKICAqICAgICAgICAgIGRlc2NyaXB0b3JzIG11c3QgYmUgOC1ieXRlIGFsaWduZWQuICBTbyBkb24ndCB0b3VjaCB0aGlzIHdpdGhvdXQKICAqICAgICAgICAgIHNvbWUgY2FyZS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2hfZXRoLmMgYi9kcml2ZXJzL25ldC9zaF9ldGguYwppbmRleCBlOWU3YTUzLi44YTcyYTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zaF9ldGguYworKysgYi9kcml2ZXJzL25ldC9zaF9ldGguYwpAQCAtMTg3NSw3ICsxODc1LDcgQEAKIAlpZiAocmV0KQogCQlnb3RvIG91dF91bnJlZ2lzdGVyOwogCi0JLyogcHJpbnQgZGV2aWNlIGluZm9tYXRpb24gKi8KKwkvKiBwcmludCBkZXZpY2UgaW5mb3JtYXRpb24gKi8KIAlwcl9pbmZvKCJCYXNlIGFkZHJlc3MgYXQgMHgleCwgJXBNLCBJUlEgJWQuXG4iLAogCSAgICAgICAodTMyKW5kZXYtPmJhc2VfYWRkciwgbmRldi0+ZGV2X2FkZHIsIG5kZXYtPmlycSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NpczE5MC5jIGIvZHJpdmVycy9uZXQvc2lzMTkwLmMKaW5kZXggMzQwNmVkOC4uYjQzNmUwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2lzMTkwLmMKKysrIGIvZHJpdmVycy9uZXQvc2lzMTkwLmMKQEAgLTkzLDcgKzkzLDcgQEAKIAlJbnRyU3RhdHVzCQk9IDB4MjAsCiAJSW50ck1hc2sJCT0gMHgyNCwKIAlJbnRyQ29udHJvbAkJPSAweDI4LAotCUludHJUaW1lcgkJPSAweDJjLAkvLyB1bnVzZWQgKEludGVydXB0IFRpbWVyKQorCUludHJUaW1lcgkJPSAweDJjLAkvLyB1bnVzZWQgKEludGVycnVwdCBUaW1lcikKIAlQTUNvbnRyb2wJCT0gMHgzMCwJLy8gdW51c2VkIChQb3dlciBNZ210IENvbnRyb2wvU3RhdHVzKQogCXJzdjIJCQk9IDB4MzQsCS8vIHJlc2VydmVkCiAJUk9NQ29udHJvbAkJPSAweDM4LApAQCAtMjM0LDcgKzIzNCw3IEBACiAJUnhTaXplTWFzawk9IDB4MDAwMGZmZmYKIAkvKgogCSAqIFRoZSBhc2ljIGNvdWxkIGFwcGFyZW50bHkgZG8gdmxhbiwgVFNPLCBqdW1ibyAoc2lzMTkxIG9ubHkpIGFuZAotCSAqIHByb3ZpZGUgdHdvICh1bnVzZWQgd2l0aCBMaW51eCkgVHggcXVldWVzLiBObyBwdWJsaWNhbGx5CisJICogcHJvdmlkZSB0d28gKHVudXNlZCB3aXRoIExpbnV4KSBUeCBxdWV1ZXMuIE5vIHB1YmxpY2x5CiAJICogYXZhaWxhYmxlIGRvY3VtZW50YXRpb24gYWxhcy4KIAkgKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zaXM5MDAuYyBiL2RyaXZlcnMvbmV0L3NpczkwMC5jCmluZGV4IDg0ZDQxNjcuLmNiMzE3Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NpczkwMC5jCisrKyBiL2RyaXZlcnMvbmV0L3NpczkwMC5jCkBAIC0xMTgwLDcgKzExODAsNyBAQAogICoKICAqCTYzMEUgZXF1YWxpemVyIHdvcmthcm91bmQgcnVsZShDeXJ1cyBIdWFuZyAwOC8xNSkKICAqCVBIWSByZWdpc3RlciAxNGgoVGVzdCkKLSAqCUJpdCAxNDogMCAtLSBBdXRvbWF0aWNhbGx5IGRlY3RlY3QgKGRlZmF1bHQpCisgKglCaXQgMTQ6IDAgLS0gQXV0b21hdGljYWxseSBkZXRlY3QgKGRlZmF1bHQpCiAgKgkJMSAtLSBNYW51YWxseSBzZXQgRXF1YWxpemVyIGZpbHRlcgogICoJQml0IDEzOiAwIC0tIChEZWZhdWx0KQogICoJCTEgLS0gU3BlZWQgdXAgY29udmVyZ2VuY2Ugb2YgZXF1YWxpemVyIHNldHRpbmcKQEAgLTExOTIsNyArMTE5Miw3IEBACiAgKglUaGVuIHNldCBlcXVhbGl6ZXIgdmFsdWUsIGFuZCBzZXQgQml0IDE0IHRvIDEsIEJpdCA5IHRvIDAKICAqCUxpbmsgT2ZmOlNldCBCaXQgMTMgdG8gMSwgQml0IDE0IHRvIDAKICAqCUNhbGN1bGF0ZSBFcXVhbGl6ZXIgdmFsdWU6Ci0gKglXaGVuIExpbmsgaXMgT04gYW5kIEJpdCAxNCBpcyAwLCBTSVM5MDBQSFkgd2lsbCBhdXRvLWRlY3RlY3QgcHJvcGVyIGVxdWFsaXplciB2YWx1ZS4KKyAqCVdoZW4gTGluayBpcyBPTiBhbmQgQml0IDE0IGlzIDAsIFNJUzkwMFBIWSB3aWxsIGF1dG8tZGV0ZWN0IHByb3BlciBlcXVhbGl6ZXIgdmFsdWUuCiAgKglXaGVuIHRoZSBlcXVhbGl6ZXIgaXMgc3RhYmxlLCB0aGlzIHZhbHVlIGlzIG5vdCBhIGZpeGVkIHZhbHVlLiBJdCB3aWxsIGJlIHdpdGhpbgogICoJYSBzbWFsbCByYW5nZShlZy4gN345KS4gVGhlbiB3ZSBnZXQgYSBtaW5pbXVtIGFuZCBhIG1heGltdW0gdmFsdWUoZWcuIG1pbj03LCBtYXg9OSkKICAqCTAgPD0gbWF4IDw9IDQgIC0tPiBzZXQgZXF1YWxpemVyIHRvIG1heApAQCAtMTcyMyw3ICsxNzIzLDcgQEAKIAkJcnhfc2l6ZSA9IGRhdGFfc2l6ZSAtIENSQ19TSVpFOwogCiAjaWYgZGVmaW5lZChDT05GSUdfVkxBTl84MDIxUSkgfHwgZGVmaW5lZChDT05GSUdfVkxBTl84MDIxUV9NT0RVTEUpCi0JCS8qIGBgVE9PTE9ORycnIGZsYWcgbWVhbnMganVtYm8gcGFja2V0IHJlY2l2ZWQuICovCisJCS8qIGBgVE9PTE9ORycnIGZsYWcgbWVhbnMganVtYm8gcGFja2V0IHJlY2VpdmVkLiAqLwogCQlpZiAoKHJ4X3N0YXR1cyAmIFRPT0xPTkcpICYmIGRhdGFfc2l6ZSA8PSBNQVhfRlJBTUVfU0laRSkKIAkJCXJ4X3N0YXR1cyAmPSAofiAoKHVuc2lnbmVkIGludClUT09MT05HKSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvZXNzLmMgYi9kcml2ZXJzL25ldC9za2ZwL2Vzcy5jCmluZGV4IDg2MzlhMDguLjJmYzU5ODcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvZXNzLmMKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9lc3MuYwpAQCAtMjQxLDcgKzI0MSw3IEBACiAJCQkhPSBTTVRfUkRGX1NVQ0NFU1MpIHx8CiAJCQkoc20tPnNtdF90aWQgIT0gc21jLT5lc3MuYWxsb2NfdHJhbnNfaWQpKSB7CiAKLQkJCURCX0VTUygiRVNTOiBBbGxvY2F0aW9uIFJlc3BvbmNlIG5vdCBhY2NlcHRlZFxuIiwwLDApIDsKKwkJCURCX0VTUygiRVNTOiBBbGxvY2F0aW9uIFJlc3BvbnNlIG5vdCBhY2NlcHRlZFxuIiwwLDApIDsKIAkJCXJldHVybiBmczsKIAkJfQogCkBAIC0zOTMsNyArMzkzLDcgQEAKIAkgKgkJICAgICAgfAkgVC1ORUcJfAogCSAqCQkgICAgICAgLSAgICAgICAtCiAgCSAqCi0JICogVC1ORUcgaXMgZGlzY3JpYmVkIGJ5IHRoZSBlcXVhdGlvbjoKKwkgKiBULU5FRyBpcyBkZXNjcmliZWQgYnkgdGhlIGVxdWF0aW9uOgogCSAqCiAJICoJCSAgICAgKC0pIGZkZGlNQUNULU5FRwogCSAqCVQtTkVHID0JICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTQ3OSw3ICs0NzksNyBAQAogCXZvaWQJCQkqcCA7CiAKIAkvKgotCSAqIGdldCBhbmQgaW5pdGlhbGl6ZSB0aGUgcmVzcG9uY2UgZnJhbWUKKwkgKiBnZXQgYW5kIGluaXRpYWxpemUgdGhlIHJlc3BvbnNlIGZyYW1lCiAJICovCiAJaWYgKHNiYV9jbWQgPT0gQ0hBTkdFX0FMTE9DQVRJT04pIHsKIAkJaWYgKCEobWI9c210X2J1aWxkX2ZyYW1lKHNtYyxTTVRfUkFGLFNNVF9SRVBMWSwKQEAgLTU3OCw3ICs1NzgsNyBAQAogCX0KIAkKIAkvKgotCSAqIGdldCBhbmQgaW5pdGlhbGl6ZSB0aGUgcmVzcG9uY2UgZnJhbWUKKwkgKiBnZXQgYW5kIGluaXRpYWxpemUgdGhlIHJlc3BvbnNlIGZyYW1lCiAJICovCiAJaWYgKCEobWI9c210X2J1aWxkX2ZyYW1lKHNtYyxTTVRfUkFGLFNNVF9SRVFVRVNULAogCQkJc2l6ZW9mKHN0cnVjdCBzbXRfc2JhX2FsY19yZXEpKSkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2ZwbHVzdG0uYyBiL2RyaXZlcnMvbmV0L3NrZnAvZnBsdXN0bS5jCmluZGV4IGNhNGU3YmIuLmEyMGVkMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvZnBsdXN0bS5jCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvZnBsdXN0bS5jCkBAIC0zNDAsNyArMzQwLDcgQEAKIAlvdXRwdyhGTV9BKEZNX0xDTlRSKSwwKSA7CiAJb3V0cHcoRk1fQShGTV9FQ05UUiksMCkgOwogCS8qCi0JICogY2xlYXIgaW50ZXJuYWwgZXJyb3IgY291bnRlciBzdHVjdHVyZQorCSAqIGNsZWFyIGludGVybmFsIGVycm9yIGNvdW50ZXIgc3RydWN0dXJlCiAJICovCiAJZWMgPSAodV9sb25nICopJnNtYy0+aHcuZnAuZXJyX3N0YXRzIDsKIAlmb3IgKGkgPSAoc2l6ZW9mKHN0cnVjdCBlcnJfc3QpL3NpemVvZihsb25nKSkgOyBpIDsgaS0tKQpAQCAtMTI2Miw4ICsxMjYyLDggQEAKIAogUGFyYQltb2RlID0JMQlSWF9FTkFCTEVfQUxMTVVMVEkJZW5hYmxlIGFsbCBtdWx0aWNhc3RzCiAJCTIJUlhfRElTQUJMRV9BTExNVUxUSQlkaXNhYmxlICJlbmFibGUgYWxsIG11bHRpY2FzdHMiCi0JCTMJUlhfRU5BQkxFX1BST01JU0MJZW5hYmxlIHByb21pc2NvdXMKLQkJNAlSWF9ESVNBQkxFX1BST01JU0MJZGlzYWJsZSBwcm9taXNjb3VzCisJCTMJUlhfRU5BQkxFX1BST01JU0MJZW5hYmxlIHByb21pc2N1b3VzCisJCTQJUlhfRElTQUJMRV9QUk9NSVNDCWRpc2FibGUgcHJvbWlzY3VvdXMKIAkJNQlSWF9FTkFCTEVfTlNBCQllbmFibGUgcmVjZXB0aW9uIG9mIE5TQSBmcmFtZXMKIAkJNglSWF9ESVNBQkxFX05TQQkJZGlzYWJsZSByZWNlcHRpb24gb2YgTlNBIGZyYW1lcwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2gvY210ZGVmLmggYi9kcml2ZXJzL25ldC9za2ZwL2gvY210ZGVmLmgKaW5kZXggZjJmNzcxZC4uNWE2YzYxMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9oL2NtdGRlZi5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaC9jbXRkZWYuaApAQCAtMTksNyArMTksNyBAQAogCiAvKgogICogaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY29uc3RhbnRzCi0gKiBNT0RJSUZZIFRIRSBGT0xMV09JTkcgVEhSRUUgREVGSU5FUworICogTU9ESUlGWSBUSEUgRk9MTE9XSU5HIFRIUkVFIERFRklORVMKICAqLwogI2RlZmluZSBBTURQTEMJCQkvKiBpZiBBbWQgUExDIGNoaXAgdXNlZCAqLwogI2lmZGVmCUNPTkMKQEAgLTQ1Niw3ICs0NTYsNyBAQAogCXVfbG9uZyBzb2Z0X2VyciA7CQkvKiBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIHBhcml0eV9lcnIgOwkJLyogZXJyb3IgY291bnRlciAqLwogCXVfbG9uZyBlYnVmX2VyciA7CQkvKiBlcnJvciBjb3VudGVyICovCi0JdV9sb25nIGVidWZfY29udCA7CQkvKiBjb250aW5vdXMgZXJyb3IgY291bnRlciAqLworCXVfbG9uZyBlYnVmX2NvbnQgOwkJLyogY29udGludW91cyBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIHBoeWludiA7CQkJLyogZXJyb3IgY291bnRlciAqLwogCXVfbG9uZyB2c3ltX2N0ciA7CQkvKiBlcnJvciBjb3VudGVyICovCiAJdV9sb25nIG1pbmlfY3RyIDsJCS8qIGVycm9yIGNvdW50ZXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NrZnAvaC9mcGx1c3RtLmggYi9kcml2ZXJzL25ldC9za2ZwL2gvZnBsdXN0bS5oCmluZGV4IDZkNzM4ZTEuLmQ0MzE5MWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvaC9mcGx1c3RtLmgKKysrIGIvZHJpdmVycy9uZXQvc2tmcC9oL2ZwbHVzdG0uaApAQCAtMjM3LDggKzIzNyw4IEBACiAgKi8KICNkZWZpbmUgUlhfRU5BQkxFX0FMTE1VTFRJCTEJLyogZW5hYmxlIGFsbCBtdWx0aWNhc3RzICovCiAjZGVmaW5lIFJYX0RJU0FCTEVfQUxMTVVMVEkJMgkvKiBkaXNhYmxlICJlbmFibGUgYWxsIG11bHRpY2FzdHMiICovCi0jZGVmaW5lIFJYX0VOQUJMRV9QUk9NSVNDCTMJLyogZW5hYmxlIHByb21pc2NvdXMgKi8KLSNkZWZpbmUgUlhfRElTQUJMRV9QUk9NSVNDCTQJLyogZGlzYWJsZSBwcm9taXNjb3VzICovCisjZGVmaW5lIFJYX0VOQUJMRV9QUk9NSVNDCTMJLyogZW5hYmxlIHByb21pc2N1b3VzICovCisjZGVmaW5lIFJYX0RJU0FCTEVfUFJPTUlTQwk0CS8qIGRpc2FibGUgcHJvbWlzY3VvdXMgKi8KICNkZWZpbmUgUlhfRU5BQkxFX05TQQkJNQkvKiBlbmFibGUgcmVjZXB0aW9uIG9mIE5TQSBmcmFtZXMgKi8KICNkZWZpbmUgUlhfRElTQUJMRV9OU0EJCTYJLyogZGlzYWJsZSByZWNlcHRpb24gb2YgTlNBIGZyYW1lcyAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2gvc21jLmggYi9kcml2ZXJzL25ldC9za2ZwL2gvc21jLmgKaW5kZXggMDI2YTgzYi4uYzc3NGE5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9oL3NtYy5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaC9zbWMuaApAQCAtMzg4LDcgKzM4OCw3IEBACiAJdV9sb25nCXJtdF90X3BvbGwgOwkJLyogUk1UIDogY2xhaW0vYmVhY29uIHBvbGxlciAqLwogCXVfbG9uZyAgcm10X2R1cF9tYWNfYmVoYXZpb3IgOyAgLyogRmxhZyBmb3IgdGhlIGJlYXZpb3Igb2YgU01UIGlmCiAJCQkJCSAqIGEgRHVwbGljYXRlIE1BQyBBZGRyZXNzIHdhcyBkZXRlY3RlZC4KLQkJCQkJICogRkFMU0U6IFNNVCB3aWxsIGxlYXZlIGZpbmFseSB0aGUgcmluZworCQkJCQkgKiBGQUxTRTogU01UIHdpbGwgbGVhdmUgZmluYWxseSB0aGUgcmluZwogCQkJCQkgKiBUUlVFOiAgU01UIHdpbGwgcmVpbnN0ZXJ0IGludG8gdGhlIHJpbmcKIAkJCQkJICovCiAJdV9sb25nCW1hY19kX21heCA7CQkvKiBNQUMgOiBEX01heCB0aW1lciB2YWx1ZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9oL3NtdC5oIGIvZHJpdmVycy9uZXQvc2tmcC9oL3NtdC5oCmluZGV4IDI5NzY3NTcuLjIwMzBmOWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3NrZnAvaC9zbXQuaAorKysgYi9kcml2ZXJzL25ldC9za2ZwL2gvc210LmgKQEAgLTc5Myw3ICs3OTMsNyBAQAogfSA7CiAKIC8qCi0gKiBTQkEgUmVxdWVzdCBBbGxvY2F0aW9uIFJlc3BvbmNlIEZyYW1lCisgKiBTQkEgUmVxdWVzdCBBbGxvY2F0aW9uIFJlc3BvbnNlIEZyYW1lCiAgKi8KIHN0cnVjdCBzbXRfc2JhX2FsY19yZXMgewogCXN0cnVjdCBzbXRfaGVhZGVyCXNtdCA7CQkvKiBnZW5lcmljIGhlYWRlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9oL3N1cGVybl8yLmggYi9kcml2ZXJzL25ldC9za2ZwL2gvc3VwZXJuXzIuaAppbmRleCA1YmEwYjgzLi4wYjczNjkwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL2gvc3VwZXJuXzIuaAorKysgYi9kcml2ZXJzL25ldC9za2ZwL2gvc3VwZXJuXzIuaApAQCAtMTQsNyArMTQsNyBAQAogCiAvKgogCWRlZmluZXMgZm9yIEFNRCBTdXBlcm5ldCBJSSBjaGlwIHNldAotCXRoZSBjaGlwcyBhcmUgcmVmZXJlZCB0byBhcworCXRoZSBjaGlwcyBhcmUgcmVmZXJyZWQgdG8gYXMKIAkJRlBMVVMJRm9ybWFjIFBsdXMKIAkJUExDCVBoeXNpY2FsIExheWVyCiAKQEAgLTM4Niw3ICszODYsNyBAQAogI2RlZmluZQlGTV9NRElTUkNWCSg0PDw4KQkJLyogZGlzYWJsZSByZWNlaXZlIGZ1bmN0aW9uICovCiAjZGVmaW5lCUZNX01SRVMwCSg1PDw4KQkJLyogcmVzZXJ2ZSAqLwogI2RlZmluZQlGTV9NTElNUFJPTQkoNjw8OCkJCS8qIGxpbWl0ZWQtcHJvbWlzY3VvdXMgbW9kZSAqLwotI2RlZmluZSBGTV9NUFJPTUlTQ09VUwkoNzw8OCkJCS8qIGFkZHJlc3MgZGV0ZWN0aW9uIDogcHJvbWlzY291cyAqLworI2RlZmluZSBGTV9NUFJPTUlTQ09VUwkoNzw8OCkJCS8qIGFkZHJlc3MgZGV0ZWN0aW9uIDogcHJvbWlzY3VvdXMgKi8KIAogI2RlZmluZSBGTV9TRUxTQQkweDA4MDAJCS8qIHNlbGVjdC1zaG9ydC1hZGRyZXNzIGJpdCAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL2h3bXRtLmMgYi9kcml2ZXJzL25ldC9za2ZwL2h3bXRtLmMKaW5kZXggYWY1YTc1NS4uZTI2Mzk4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9od210bS5jCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvaHdtdG0uYwpAQCAtNjkxLDcgKzY5MSw3IEBACiAgKgkJaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSwgaGFuZGxlcyB0aGUgaW50ZXJydXB0IHJlcXVlc3RzCiAgKgkJZ2VuZXJhdGVkIGJ5IHRoZSBGRERJIGFkYXB0ZXIuCiAgKgotICogTk9URToJVGhlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZSBtdXN0IGdhcmFudGVlIHRoYXQgdGhlCisgKiBOT1RFOglUaGUgb3BlcmF0aW5nIHN5c3RlbSBkZXBlbmRlbnQgbW9kdWxlIG11c3QgZ3VhcmFudGVlIHRoYXQgdGhlCiAgKgkJaW50ZXJydXB0cyBvZiB0aGUgYWRhcHRlciBhcmUgZGlzYWJsZWQgd2hlbiBpdCBjYWxscyBmZGRpX2lzci4KICAqCiAgKglBYm91dCB0aGUgVVNFX0JSRUFLX0lTUiBtZWNoYW5pc21uOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc2tmcC9wY21wbGMuYyBiL2RyaXZlcnMvbmV0L3NrZnAvcGNtcGxjLmMKaW5kZXggMTEyZDM1Yi4uODhkMDJkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tmcC9wY21wbGMuYworKysgYi9kcml2ZXJzL25ldC9za2ZwL3BjbXBsYy5jCkBAIC0xNjgwLDcgKzE2ODAsNyBAQAogCQkJICogUHJldmVudCBjb3VudGVyIGZyb20gYmVpbmcgd3JhcHBlZCBhZnRlcgogCQkJICogaGFuZ2luZyB5ZWFycyBpbiB0aGF0IGludGVycnVwdC4KIAkJCSAqLwotCQkJcGxjLT5lYnVmX2NvbnQrKyA7CS8qIEVidWYgY29udGlub3VzIGVycm9yICovCisJCQlwbGMtPmVidWZfY29udCsrIDsJLyogRWJ1ZiBjb250aW51b3VzIGVycm9yICovCiAJCX0KIAogI2lmZGVmCVNVUEVSTkVUXzMKQEAgLTE3MTcsOCArMTcxNyw4IEBACiAJCX0KICNlbmRpZgkvKiBTVVBFUk5FVF8zICovCiAJfSBlbHNlIHsKLQkJLyogUmVzZXQgdGhlIGNvbnRpbm91cyBlcnJvciB2YXJpYWJsZSAqLwotCQlwbGMtPmVidWZfY29udCA9IDAgOwkvKiByZXNldCBFYnVmIGNvbnRpbm91cyBlcnJvciAqLworCQkvKiBSZXNldCB0aGUgY29udGludW91cyBlcnJvciB2YXJpYWJsZSAqLworCQlwbGMtPmVidWZfY29udCA9IDAgOwkvKiByZXNldCBFYnVmIGNvbnRpbnVvdXMgZXJyb3IgKi8KIAl9CiAJaWYgKGNtZCAmIFBMX1BIWUlOVikgewkJLyogcGh5c2ljYWwgbGF5ZXIgaW52YWxpZCBzaWduYWwgKi8KIAkJcGxjLT5waHlpbnYrKyA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2ZwL3NtdC5jIGIvZHJpdmVycy9uZXQvc2tmcC9zbXQuYwppbmRleCAxZTFiZDBjLi4wOGQ5NDMyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za2ZwL3NtdC5jCisrKyBiL2RyaXZlcnMvbmV0L3NrZnAvc210LmMKQEAgLTIxOSw3ICsyMTksNyBAQAogCiAJLyoKIAkgKiBPbmx5IHdoZW4gcmluZyBpcyB1cCB3ZSB3aWxsIGhhdmUgYSB0b2tlbiBjb3VudC4gVGhlCi0JICogZmxhZyBpcyB1bmZvcnR1bmF0bHkgYSBzaW5nbGUgaW5zdGFuY2UgdmFsdWUuIFRoaXMKKwkgKiBmbGFnIGlzIHVuZm9ydHVuYXRlbHkgYSBzaW5nbGUgaW5zdGFuY2UgdmFsdWUuIFRoaXMKIAkgKiBkb2Vzbid0IG1hdHRlciBub3csIGJlY2F1c2Ugd2UgY3VycmVudGx5IGhhdmUgb25seQogCSAqIG9uZSBNQUMgaW5zdGFuY2UuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za2dlLmggYi9kcml2ZXJzL25ldC9za2dlLmgKaW5kZXggNTA3YWRkYy4uNTFjMDIxNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2tnZS5oCisrKyBiL2RyaXZlcnMvbmV0L3NrZ2UuaApAQCAtMTAzOCw3ICsxMDM4LDcgQEAKIAogCVBIWV9TVF9QUkVfU1VQCT0gMTw8NiwgLyogQml0ICA2OglQcmVhbWJsZSBTdXBwcmVzc2lvbiAqLwogCVBIWV9TVF9BTl9PVkVSCT0gMTw8NSwgLyogQml0ICA1OglBdXRvLU5lZ290aWF0aW9uIE92ZXIgKi8KLQlQSFlfU1RfUkVNX0ZMVAk9IDE8PDQsIC8qIEJpdCAgNDoJUmVtb3RlIEZhdWx0IENvbmRpdGlvbiBPY2N1cmVkICovCisJUEhZX1NUX1JFTV9GTFQJPSAxPDw0LCAvKiBCaXQgIDQ6CVJlbW90ZSBGYXVsdCBDb25kaXRpb24gT2NjdXJyZWQgKi8KIAlQSFlfU1RfQU5fQ0FQCT0gMTw8MywgLyogQml0ICAzOglBdXRvLU5lZ290aWF0aW9uIENhcGFiaWxpdHkgKi8KIAlQSFlfU1RfTFNZTkMJPSAxPDwyLCAvKiBCaXQgIDI6CUxpbmsgU3luY2hyb25pemVkICovCiAJUEhZX1NUX0pBQl9ERVQJPSAxPDwxLCAvKiBCaXQgIDE6CUphYmJlciBEZXRlY3RlZCAqLwpAQCAtMTcyMSw4ICsxNzIxLDggQEAKIAlHTV9HUFNSX0xJTktfVVAJCT0gMTw8MTIsIC8qIEJpdCAxMjoJTGluayBVcCBTdGF0dXMgKi8KIAlHTV9HUFNSX1BBVVNFCQk9IDE8PDExLCAvKiBCaXQgMTE6CVBhdXNlIFN0YXRlICovCiAJR01fR1BTUl9UWF9BQ1RJVkUJPSAxPDwxMCwgLyogQml0IDEwOglUeCBpbiBQcm9ncmVzcyAqLwotCUdNX0dQU1JfRVhDX0NPTAkJPSAxPDw5LAkvKiBCaXQgIDk6CUV4Y2Vzc2l2ZSBDb2xsaXNpb25zIE9jY3VyZWQgKi8KLQlHTV9HUFNSX0xBVF9DT0wJCT0gMTw8OCwJLyogQml0ICA4OglMYXRlIENvbGxpc2lvbnMgT2NjdXJlZCAqLworCUdNX0dQU1JfRVhDX0NPTAkJPSAxPDw5LAkvKiBCaXQgIDk6CUV4Y2Vzc2l2ZSBDb2xsaXNpb25zIE9jY3VycmVkICovCisJR01fR1BTUl9MQVRfQ09MCQk9IDE8PDgsCS8qIEJpdCAgODoJTGF0ZSBDb2xsaXNpb25zIE9jY3VycmVkICovCiAKIAlHTV9HUFNSX1BIWV9TVF9DSAk9IDE8PDUsCS8qIEJpdCAgNToJUEhZIFN0YXR1cyBDaGFuZ2UgKi8KIAlHTV9HUFNSX0dJR19TUEVFRAk9IDE8PDQsCS8qIEJpdCAgNDoJR2lnYWJpdCBTcGVlZCAoMSA9IDEwMDAgTWJwcykgKi8KQEAgLTIyMjcsNyArMjIyNyw3IEBACiAJWE1fU1RfQkMJPSAxPDw3LAkJLyogQml0ICA3OglCcm9hZGNhc3QgcGFja2V0ICovCiAJWE1fU1RfTUMJPSAxPDw2LAkJLyogQml0ICA2OglNdWx0aWNhc3QgcGFja2V0ICovCiAJWE1fU1RfVUMJPSAxPDw1LAkJLyogQml0ICA1OglVbmljYXN0IHBhY2tldCAqLwotCVhNX1NUX1RYX1VSCT0gMTw8NCwJCS8qIEJpdCAgNDoJRklGTyBVbmRlcnJ1biBvY2N1cmVkICovCisJWE1fU1RfVFhfVVIJPSAxPDw0LAkJLyogQml0ICA0OglGSUZPIFVuZGVycnVuIG9jY3VycmVkICovCiAJWE1fU1RfQ1NfRVJSCT0gMTw8MywJCS8qIEJpdCAgMzoJQ2FycmllciBTZW5zZSBFcnJvciAqLwogCVhNX1NUX0xBVF9DT0wJPSAxPDwyLAkJLyogQml0ICAyOglMYXRlIENvbGxpc2lvbiBFcnJvciAqLwogCVhNX1NUX01VTF9DT0wJPSAxPDwxLAkJLyogQml0ICAxOglNdWx0aXBsZSBDb2xsaXNpb25zICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9za3kyLmMgYi9kcml2ZXJzL25ldC9za3kyLmMKaW5kZXggMmE5MTg2OC4uZmY4ZDI2MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc2t5Mi5jCisrKyBiL2RyaXZlcnMvbmV0L3NreTIuYwpAQCAtOTMyLDcgKzkzMiw3IEBACiAJc2t5Ml93cml0ZTgoaHcsIFNLX1JFRyhwb3J0LCBUWF9HTUZfQ1RSTF9UKSwgR01GX1JTVF9DTFIpOwogCXNreTJfd3JpdGUxNihodywgU0tfUkVHKHBvcnQsIFRYX0dNRl9DVFJMX1QpLCBHTUZfT1BFUl9PTik7CiAKLQkvKiBPbiBjaGlwcyB3aXRob3V0IHJhbSBidWZmZXIsIHBhdXNlIGlzIGNvbnRyb2xlZCBieSBNQUMgbGV2ZWwgKi8KKwkvKiBPbiBjaGlwcyB3aXRob3V0IHJhbSBidWZmZXIsIHBhdXNlIGlzIGNvbnRyb2xsZWQgYnkgTUFDIGxldmVsICovCiAJaWYgKCEoaHctPmZsYWdzICYgU0tZMl9IV19SQU1fQlVGRkVSKSkgewogCQkvKiBQYXVzZSB0aHJlc2hvbGQgaXMgc2NhbGVkIGJ5IDggaW4gYnl0ZXMgKi8KIAkJaWYgKGh3LT5jaGlwX2lkID09IENISVBfSURfWVVLT05fRkVfUCAmJgpAQCAtMzI1NSw3ICszMjU1LDcgQEAKIAogLyogVGFrZSBkZXZpY2UgZG93biAob2ZmbGluZSkuCiAgKiBFcXVpdmFsZW50IHRvIGRvaW5nIGRldl9zdG9wKCkgYnV0IHRoaXMgZG9lcyBub3QKLSAqIGluZm9ybSB1cHBlciBsYXllcnMgb2YgdGhlIHRyYW5zaXN0aW9uLgorICogaW5mb3JtIHVwcGVyIGxheWVycyBvZiB0aGUgdHJhbnNpdGlvbi4KICAqLwogc3RhdGljIHZvaWQgc2t5Ml9kZXRhY2goc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3NreTIuaCBiL2RyaXZlcnMvbmV0L3NreTIuaAppbmRleCA2ODYxYjBlLi4wYzZkMTBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9za3kyLmgKKysrIGIvZHJpdmVycy9uZXQvc2t5Mi5oCkBAIC0xMTk0LDcgKzExOTQsNyBAQAogCiAJUEhZX1NUX1BSRV9TVVAJPSAxPDw2LCAvKiBCaXQgIDY6CVByZWFtYmxlIFN1cHByZXNzaW9uICovCiAJUEhZX1NUX0FOX09WRVIJPSAxPDw1LCAvKiBCaXQgIDU6CUF1dG8tTmVnb3RpYXRpb24gT3ZlciAqLwotCVBIWV9TVF9SRU1fRkxUCT0gMTw8NCwgLyogQml0ICA0OglSZW1vdGUgRmF1bHQgQ29uZGl0aW9uIE9jY3VyZWQgKi8KKwlQSFlfU1RfUkVNX0ZMVAk9IDE8PDQsIC8qIEJpdCAgNDoJUmVtb3RlIEZhdWx0IENvbmRpdGlvbiBPY2N1cnJlZCAqLwogCVBIWV9TVF9BTl9DQVAJPSAxPDwzLCAvKiBCaXQgIDM6CUF1dG8tTmVnb3RpYXRpb24gQ2FwYWJpbGl0eSAqLwogCVBIWV9TVF9MU1lOQwk9IDE8PDIsIC8qIEJpdCAgMjoJTGluayBTeW5jaHJvbml6ZWQgKi8KIAlQSFlfU1RfSkFCX0RFVAk9IDE8PDEsIC8qIEJpdCAgMToJSmFiYmVyIERldGVjdGVkICovCkBAIC0xNzI1LDggKzE3MjUsOCBAQAogCUdNX0dQU1JfTElOS19VUAkJPSAxPDwxMiwgLyogQml0IDEyOglMaW5rIFVwIFN0YXR1cyAqLwogCUdNX0dQU1JfUEFVU0UJCT0gMTw8MTEsIC8qIEJpdCAxMToJUGF1c2UgU3RhdGUgKi8KIAlHTV9HUFNSX1RYX0FDVElWRQk9IDE8PDEwLCAvKiBCaXQgMTA6CVR4IGluIFByb2dyZXNzICovCi0JR01fR1BTUl9FWENfQ09MCQk9IDE8PDksCS8qIEJpdCAgOToJRXhjZXNzaXZlIENvbGxpc2lvbnMgT2NjdXJlZCAqLwotCUdNX0dQU1JfTEFUX0NPTAkJPSAxPDw4LAkvKiBCaXQgIDg6CUxhdGUgQ29sbGlzaW9ucyBPY2N1cmVkICovCisJR01fR1BTUl9FWENfQ09MCQk9IDE8PDksCS8qIEJpdCAgOToJRXhjZXNzaXZlIENvbGxpc2lvbnMgT2NjdXJyZWQgKi8KKwlHTV9HUFNSX0xBVF9DT0wJCT0gMTw8OCwJLyogQml0ICA4OglMYXRlIENvbGxpc2lvbnMgT2NjdXJyZWQgKi8KIAogCUdNX0dQU1JfUEhZX1NUX0NICT0gMTw8NSwJLyogQml0ICA1OglQSFkgU3RhdHVzIENoYW5nZSAqLwogCUdNX0dQU1JfR0lHX1NQRUVECT0gMTw8NCwJLyogQml0ICA0OglHaWdhYml0IFNwZWVkICgxID0gMTAwMCBNYnBzKSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc21jOTF4LmggYi9kcml2ZXJzL25ldC9zbWM5MXguaAppbmRleCA2OGQ0OGFiLi41ZjUzZmJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zbWM5MXguaAorKysgYi9kcml2ZXJzL25ldC9zbWM5MXguaApAQCAtOTIxLDcgKzkyMSw3IEBACiAgKiBIYWNrIEFsZXJ0OiBTb21lIHNldHVwcyBqdXN0IGNhbid0IHdyaXRlIDggb3IgMTYgYml0cyByZWxpYWJseSB3aGVuIG5vdAogICogYWxpZ25lZCB0byBhIDMyIGJpdCBib3VuZGFyeS4gIEkgdGVsbCB5b3UgdGhhdCBkb2VzIGV4aXN0IQogICogRm9ydHVuYXRlbHkgdGhlIGFmZmVjdGVkIHJlZ2lzdGVyIGFjY2Vzc2VzIGNhbiBiZSBlYXNpbHkgd29ya2VkIGFyb3VuZAotICogc2luY2Ugd2UgY2FuIHdyaXRlIHplcm9lcyB0byB0aGUgcHJlY2VlZGluZyAxNiBiaXRzIHdpdGhvdXQgYWR2ZXJzZQorICogc2luY2Ugd2UgY2FuIHdyaXRlIHplcm9lcyB0byB0aGUgcHJlY2VkaW5nIDE2IGJpdHMgd2l0aG91dCBhZHZlcnNlCiAgKiBlZmZlY3RzIGFuZCB1c2UgYSAzMi1iaXQgYWNjZXNzLgogICoKICAqIEVuZm9yY2UgaXQgb24gYW55IDMyLWJpdCBjYXBhYmxlIHNldHVwIGZvciBub3cuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbXNjOTExeC5jIGIvZHJpdmVycy9uZXQvc21zYzkxMXguYwppbmRleCAxNTY2MjU5Li5jNDk4YjcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zbXNjOTExeC5jCisrKyBiL2RyaXZlcnMvbmV0L3Ntc2M5MTF4LmMKQEAgLTE2NjksNyArMTY2OSw3IEBACiAJfQogCiAJaWYgKGUyY21kICYgRTJQX0NNRF9FUENfVElNRU9VVF8pIHsKLQkJU01TQ19UUkFDRShEUlYsICJFcnJvciBvY2N1cmVkIGR1cmluZyBlZXByb20gb3BlcmF0aW9uIik7CisJCVNNU0NfVFJBQ0UoRFJWLCAiRXJyb3Igb2NjdXJyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zbXNjOTQyMC5jIGIvZHJpdmVycy9uZXQvc21zYzk0MjAuYwppbmRleCBiMDllZTFjLi40YzkyYWQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zbXNjOTQyMC5jCisrKyBiL2RyaXZlcnMvbmV0L3Ntc2M5NDIwLmMKQEAgLTM2NCw3ICszNjQsNyBAQAogCX0KIAogCWlmIChlMmNtZCAmIEUyUF9DTURfRVBDX1RJTUVPVVRfKSB7Ci0JCXNtc2NfaW5mbyhIVywgIkVycm9yIG9jY3VyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKKwkJc21zY19pbmZvKEhXLCAiRXJyb3Igb2NjdXJyZWQgZHVyaW5nIGVlcHJvbSBvcGVyYXRpb24iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zdG1tYWMvbm9ybV9kZXNjLmMgYi9kcml2ZXJzL25ldC9zdG1tYWMvbm9ybV9kZXNjLmMKaW5kZXggY2QwY2M3Ni4uMDI5YzJhMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvc3RtbWFjL25vcm1fZGVzYy5jCisrKyBiL2RyaXZlcnMvbmV0L3N0bW1hYy9ub3JtX2Rlc2MuYwpAQCAtNjcsNyArNjcsNyBAQAogCiAvKiBUaGlzIGZ1bmN0aW9uIHZlcmlmaWVzIGlmIGVhY2ggaW5jb21pbmcgZnJhbWUgaGFzIHNvbWUgZXJyb3JzCiAgKiBhbmQsIGlmIHJlcXVpcmVkLCB1cGRhdGVzIHRoZSBtdWx0aWNhc3Qgc3RhdGlzdGljcy4KLSAqIEluIGNhc2Ugb2Ygc3VjY2VzcywgaXQgcmV0dXJucyBjc3VtX25vbmUgYmVjYXN1ZSB0aGUgZGV2aWNlCisgKiBJbiBjYXNlIG9mIHN1Y2Nlc3MsIGl0IHJldHVybnMgY3N1bV9ub25lIGJlY2F1c2UgdGhlIGRldmljZQogICogaXMgbm90IGFibGUgdG8gY29tcHV0ZSB0aGUgY3N1bSBpbiBIVy4gKi8KIHN0YXRpYyBpbnQgbmRlc2NfZ2V0X3J4X3N0YXR1cyh2b2lkICpkYXRhLCBzdHJ1Y3Qgc3RtbWFjX2V4dHJhX3N0YXRzICp4LAogCQkJICAgICAgIHN0cnVjdCBkbWFfZGVzYyAqcCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3N1bmJtYWMuaCBiL2RyaXZlcnMvbmV0L3N1bmJtYWMuaAppbmRleCA4ZGI4ODk0Li40OTQzZTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdW5ibWFjLmgKKysrIGIvZHJpdmVycy9uZXQvc3VuYm1hYy5oCkBAIC0xODUsNyArMTg1LDcgQEAKICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0VOQUJMRSAgICAweDAwMDAwMDAxIC8qIEVuYWJsZSB0aGUgcmVjZWl2ZXIgICAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0ZJRk8gICAgICAweDAwMDAwMDBlIC8qIERlZmF1bHQgcnggZnRocmVzaC4uLiAgICAgICAgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BTVFJJUCAgICAweDAwMDAwMDIwIC8qIFBhZCBieXRlIHN0cmlwIGVuYWJsZSAgICAgICAgICAgICAgICAgICAgKi8KLSNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BNSVNDICAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjb3VzIG1vZGUgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BNSVNDICAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjdW91cyBtb2RlICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19ERVJSICAgICAgMHgwMDAwMDA4MCAvKiBEaXNhYmxlIGVycm9yIGNoZWNraW5nICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19EQ1JDUyAgICAgMHgwMDAwMDEwMCAvKiBEaXNhYmxlIENSQyBzdHJpcHBpbmcgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19NRSAgICAgICAgMHgwMDAwMDIwMCAvKiBSZWNlaXZlIHBhY2tldHMgYWRkcmVzc2VkIHRvIG1lICAgICAgICAgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9zdW5nZW0uYyBiL2RyaXZlcnMvbmV0L3N1bmdlbS5jCmluZGV4IGMxYTM0NDguLmQzYmU3MzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3N1bmdlbS5jCisrKyBiL2RyaXZlcnMvbmV0L3N1bmdlbS5jCkBAIC0xMTUwLDcgKzExNTAsNyBAQAogCXZhbCAmPSB+KFBDU19DRkdfRU5BQkxFIHwgUENTX0NGR19UTyk7CiAJd3JpdGVsKHZhbCwgZ3AtPnJlZ3MgKyBQQ1NfQ0ZHKTsKIAotCS8qIEFkdmVydGlzZSBhbGwgY2FwYWJpbGl0aWVzIGV4Y2VwdCBhc3N5bWV0cmljCisJLyogQWR2ZXJ0aXNlIGFsbCBjYXBhYmlsaXRpZXMgZXhjZXB0IGFzeW1tZXRyaWMKIAkgKiBwYXVzZS4KIAkgKi8KIAl2YWwgPSByZWFkbChncC0+cmVncyArIFBDU19NSUlBRFYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvc3VuaG1lLmggYi9kcml2ZXJzL25ldC9zdW5obWUuaAppbmRleCA3NTZiNWJmLi42NGYyNzgzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9zdW5obWUuaAorKysgYi9kcml2ZXJzL25ldC9zdW5obWUuaApAQCAtMjIzLDcgKzIyMyw3IEBACiAvKiBCaWdNYWMgcmVjZWl2ZSBjb25maWcgcmVnaXN0ZXIuICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19FTkFCTEUgICAweDAwMDAwMDAxIC8qIEVuYWJsZSB0aGUgcmVjZWl2ZXIgICAgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX1BTVFJJUCAgIDB4MDAwMDAwMjAgLyogUGFkIGJ5dGUgc3RyaXAgZW5hYmxlICAgICAgICAgICAqLwotI2RlZmluZSBCSUdNQUNfUlhDRkdfUE1JU0MgICAgMHgwMDAwMDA0MCAvKiBFbmFibGUgcHJvbWlzY291cyBtb2RlICAgICAgICAgICovCisjZGVmaW5lIEJJR01BQ19SWENGR19QTUlTQyAgICAweDAwMDAwMDQwIC8qIEVuYWJsZSBwcm9taXNjdW91cyBtb2RlICAgICAgICAgICovCiAjZGVmaW5lIEJJR01BQ19SWENGR19ERVJSICAgICAweDAwMDAwMDgwIC8qIERpc2FibGUgZXJyb3IgY2hlY2tpbmcgICAgICAgICAgKi8KICNkZWZpbmUgQklHTUFDX1JYQ0ZHX0RDUkNTICAgIDB4MDAwMDAxMDAgLyogRGlzYWJsZSBDUkMgc3RyaXBwaW5nICAgICAgICAgICAqLwogI2RlZmluZSBCSUdNQUNfUlhDRkdfUkVKTUUgICAgMHgwMDAwMDIwMCAvKiBSZWplY3QgcGFja2V0cyBhZGRyZXNzZWQgdG8gbWUgICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90YzM1ODE1LmMgYi9kcml2ZXJzL25ldC90YzM1ODE1LmMKaW5kZXggYjZlZWM4Yy4uN2NhNTFjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGMzNTgxNS5jCisrKyBiL2RyaXZlcnMvbmV0L3RjMzU4MTUuYwpAQCAtMTE5LDEzICsxMTksMTMgQEAKIC8qCiAgKiBCaXQgYXNzaWdubWVudHMKICAqLwotLyogRE1BX0N0bCBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogRE1BX0N0bCBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgRE1BX1J4QWxpZ24JICAgICAgIDB4MDBjMDAwMDAgLyogMTpSZWNlcHRpb24gQWxpZ25tZW50CSAgICAgKi8KICNkZWZpbmUgRE1BX1J4QWxpZ25fMQkgICAgICAgMHgwMDQwMDAwMAogI2RlZmluZSBETUFfUnhBbGlnbl8yCSAgICAgICAweDAwODAwMDAwCiAjZGVmaW5lIERNQV9SeEFsaWduXzMJICAgICAgIDB4MDBjMDAwMDAKICNkZWZpbmUgRE1BX002NkVuU3RhdAkgICAgICAgMHgwMDA4MDAwMCAvKiAxOjY2TUh6IEVuYWJsZSBTdGF0ZQkgICAgICovCi0jZGVmaW5lIERNQV9JbnRNYXNrCSAgICAgICAweDAwMDQwMDAwIC8qIDE6SW50ZXJ1cHQgbWFzawkJICAgICAqLworI2RlZmluZSBETUFfSW50TWFzawkgICAgICAgMHgwMDA0MDAwMCAvKiAxOkludGVycnVwdCBtYXNrCQkgICAgICovCiAjZGVmaW5lIERNQV9TV0ludFJlcQkgICAgICAgMHgwMDAyMDAwMCAvKiAxOlNvZnR3YXJlIEludGVycnVwdCByZXF1ZXN0ICAgICovCiAjZGVmaW5lIERNQV9UeFdha2VVcAkgICAgICAgMHgwMDAxMDAwMCAvKiAxOlRyYW5zbWl0IFdha2UgVXAJCSAgICAgKi8KICNkZWZpbmUgRE1BX1J4QmlnRQkgICAgICAgMHgwMDAwODAwMCAvKiAxOlJlY2VpdmUgQmlnIEVuZGlhbgkgICAgICovCkBAIC0xMzQsMTEgKzEzNCwxMSBAQAogI2RlZmluZSBETUFfUG93ck1nbW50CSAgICAgICAweDAwMDAxMDAwIC8qIDE6UG93ZXIgTWFuYWdlbWVudAkJICAgICAqLwogI2RlZmluZSBETUFfRG1CdXJzdF9NYXNrICAgICAgIDB4MDAwMDAxZmMgLyogRE1BIEJ1cnN0IHNpemUJCSAgICAgKi8KIAotLyogUnhGcmFnU2l6ZSBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogUnhGcmFnU2l6ZSBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgUnhGcmFnX0VuUGFjawkgICAgICAgMHgwMDAwODAwMCAvKiAxOkVuYWJsZSBQYWNraW5nCQkgICAgICovCiAjZGVmaW5lIFJ4RnJhZ19NaW5GcmFnTWFzayAgICAgMHgwMDAwMGZmYyAvKiBNaW5pbXVtIEZyYWdtZW50CQkgICAgICovCiAKLS8qIE1BQ19DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIE1BQ19DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIE1BQ19MaW5rMTAJICAgICAgIDB4MDAwMDgwMDAgLyogMTpMaW5rIFN0YXR1cyAxME1iaXRzCSAgICAgKi8KICNkZWZpbmUgTUFDX0VuTWlzc1JvbGwJICAgICAgIDB4MDAwMDIwMDAgLyogMTpFbmFibGUgTWlzc2VkIFJvbGwJICAgICAqLwogI2RlZmluZSBNQUNfTWlzc1JvbGwJICAgICAgIDB4MDAwMDA0MDAgLyogMTpNaXNzZWQgUm9sbAkJICAgICAqLwpAQCAtMTUyLDcgKzE1Miw3IEBACiAjZGVmaW5lIE1BQ19IYWx0SW1tCSAgICAgICAweDAwMDAwMDAyIC8qIDE6SGFsdCBJbW1lZGlhdGUJCSAgICAgKi8KICNkZWZpbmUgTUFDX0hhbHRSZXEJICAgICAgIDB4MDAwMDAwMDEgLyogMTpIYWx0IHJlcXVlc3QJCSAgICAgKi8KIAotLyogUFJPTV9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogUFJPTV9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgUFJPTV9CdXN5CSAgICAgICAweDAwMDA4MDAwIC8qIDE6QnVzeSAoU3RhcnQgT3BlcmF0aW9uKQkgICAgICovCiAjZGVmaW5lIFBST01fUmVhZAkgICAgICAgMHgwMDAwNDAwMCAvKjEwOlJlYWQgb3BlcmF0aW9uCQkgICAgICovCiAjZGVmaW5lIFBST01fV3JpdGUJICAgICAgIDB4MDAwMDIwMDAgLyowMTpXcml0ZSBvcGVyYXRpb24JCSAgICAgKi8KQEAgLTE2Miw3ICsxNjIsNyBAQAogI2RlZmluZSBQUk9NX0FkZHJfRW5hCSAgICAgICAweDAwMDAwMDMwIC8qMTF4eHh4OlBST00gV3JpdGUgZW5hYmxlCSAgICAgKi8KIAkJCQkJICAvKjAweHh4eDoJICAgICAgZGlzYWJsZQkgICAgICovCiAKLS8qIENBTV9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENBTV9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIENBTV9Db21wRW4JICAgICAgIDB4MDAwMDAwMTAgLyogMTpDQU0gQ29tcGFyZSBFbmFibGUJICAgICAqLwogI2RlZmluZSBDQU1fTmVnQ0FNCSAgICAgICAweDAwMDAwMDA4IC8qIDE6UmVqZWN0IHBhY2tldHMgQ0FNIHJlY29nbml6ZXMsKi8KIAkJCQkJICAvKgkJCWFjY2VwdCBvdGhlciAqLwpAQCAtMTcwLDcgKzE3MCw3IEBACiAjZGVmaW5lIENBTV9Hcm91cEFjYwkgICAgICAgMHgwMDAwMDAwMiAvKiAxOk11bHRpY2FzdCBhc3NlcHQJCSAgICAgKi8KICNkZWZpbmUgQ0FNX1N0YXRpb25BY2MJICAgICAgIDB4MDAwMDAwMDEgLyogMTp1bmljYXN0IGFjY2VwdAkJICAgICAqLwogCi0vKiBDQU1fRW5hIGJpdCBhc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDQU1fRW5hIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBDQU1fRU5UUllfTUFYCQkgICAgICAgMjEgICAvKiBDQU0gRGF0YSBlbnRyeSBtYXggY291bnQJICAgICAqLwogI2RlZmluZSBDQU1fRW5hX01hc2sgKCgxPDxDQU1fRU5UUllfTUFYKS0xKSAvKiBDQU0gRW5hYmxlIGJpdHMgKE1heCAyMWJpdHMpICAqLwogI2RlZmluZSBDQU1fRW5hX0JpdChpbmRleCkJKDEgPDwgKGluZGV4KSkKQEAgLTE3OCw3ICsxNzgsNyBAQAogI2RlZmluZSBDQU1fRU5UUllfU09VUkNFCTEKICNkZWZpbmUgQ0FNX0VOVFJZX01BQ0NUTAkyMAogCi0vKiBUeF9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBUeF9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBUeF9FbgkJICAgICAgIDB4MDAwMDAwMDEgLyogMTpUcmFuc21pdCBlbmFibGUJCSAgICAgKi8KICNkZWZpbmUgVHhfVHhIYWx0CSAgICAgICAweDAwMDAwMDAyIC8qIDE6VHJhbnNtaXQgSGFsdCBSZXF1ZXN0CSAgICAgKi8KICNkZWZpbmUgVHhfTm9QYWQJICAgICAgIDB4MDAwMDAwMDQgLyogMTpTdXBwcmVzcyBQYWRkaW5nCQkgICAgICovCkBAIC0xOTIsNyArMTkyLDcgQEAKICNkZWZpbmUgVHhfRW5UeFBhcgkgICAgICAgMHgwMDAwMjAwMCAvKiAxOkVuYWJsZSBUcmFuc21pdCBQYXJpdHkJICAgICAqLwogI2RlZmluZSBUeF9FbkNvbXAJICAgICAgIDB4MDAwMDQwMDAgLyogMTpFbmFibGUgQ29tcGxldGlvbgkgICAgICovCiAKLS8qIFR4X1N0YXQgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFR4X1N0YXQgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIFR4X1R4Q29sbF9NQVNLCSAgICAgICAweDAwMDAwMDBGIC8qIFR4IENvbGxpc2lvbiBDb3VudAkJICAgICAqLwogI2RlZmluZSBUeF9FeENvbGwJICAgICAgIDB4MDAwMDAwMTAgLyogRXhjZXNzaXZlIENvbGxpc2lvbgkgICAgICovCiAjZGVmaW5lIFR4X1RYRGVmZXIJICAgICAgIDB4MDAwMDAwMjAgLyogVHJhbnNtaXQgRGVmZXJlZAkJICAgICAqLwpAQCAtMjA4LDcgKzIwOCw3IEBACiAjZGVmaW5lIFR4X0hhbHRlZAkgICAgICAgMHgwMDAwODAwMCAvKiBUeCBIYWx0ZWQJCQkgICAgICovCiAjZGVmaW5lIFR4X1NRRXJyCSAgICAgICAweDAwMDEwMDAwIC8qIFNpZ25hbCBRdWFsaXR5IEVycm9yKFNRRSkJICAgICAqLwogCi0vKiBSeF9DdGwgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBSeF9DdGwgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBSeF9Fbkdvb2QJICAgICAgIDB4MDAwMDQwMDAgLyogMTpFbmFibGUgR29vZAkJICAgICAqLwogI2RlZmluZSBSeF9FblJ4UGFyCSAgICAgICAweDAwMDAyMDAwIC8qIDE6RW5hYmxlIFJlY2VpdmUgUGFyaXR5CSAgICAgKi8KICNkZWZpbmUgUnhfRW5Mb25nRXJyCSAgICAgICAweDAwMDAwODAwIC8qIDE6RW5hYmxlIExvbmcgRXJyb3IJICAgICAqLwpAQCAtMjIyLDcgKzIyMiw3IEBACiAjZGVmaW5lIFJ4X1J4SGFsdAkgICAgICAgMHgwMDAwMDAwMiAvKiAxOlJlY2VpdmUgSGFsdCBSZXF1ZXN0CSAgICAgKi8KICNkZWZpbmUgUnhfUnhFbgkJICAgICAgIDB4MDAwMDAwMDEgLyogMTpSZWNlaXZlIEludHJydXB0IEVuYWJsZQkgICAgICovCiAKLS8qIFJ4X1N0YXQgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFJ4X1N0YXQgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIFJ4X0hhbHRlZAkgICAgICAgMHgwMDAwODAwMCAvKiBSeCBIYWx0ZWQJCQkgICAgICovCiAjZGVmaW5lIFJ4X0dvb2QJCSAgICAgICAweDAwMDA0MDAwIC8qIFJ4IEdvb2QJCQkgICAgICovCiAjZGVmaW5lIFJ4X1J4UGFyCSAgICAgICAweDAwMDAyMDAwIC8qIFJ4IFBhcml0eSBFcnJvcgkJICAgICAqLwpAQCAtMjM4LDcgKzIzOCw3IEBACiAKICNkZWZpbmUgUnhfU3RhdF9NYXNrCSAgICAgICAweDAwMDBGRkYwIC8qIFJ4IEFsbCBTdGF0dXMgTWFzawkJICAgICAqLwogCi0vKiBJbnRfRW4gYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBJbnRfRW4gYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogI2RlZmluZSBJbnRfTlJBYnRFbgkgICAgICAgMHgwMDAwMDgwMCAvKiAxOk5vbi1yZWNvdmVyYWJsZSBBYm9ydCBFbmFibGUgICovCiAjZGVmaW5lIEludF9UeEN0bENtcEVuCSAgICAgICAweDAwMDAwNDAwIC8qIDE6VHJhbnNtaXQgQ3RsIENvbXBsZXRlIEVuYWJsZSAgKi8KICNkZWZpbmUgSW50X0RtUGFyRXJyRW4JICAgICAgIDB4MDAwMDAyMDAgLyogMTpETUEgUGFyaXR5IEVycm9yIEVuYWJsZQkgICAgICovCkBAIC0yNTMsNyArMjUzLDcgQEAKICNkZWZpbmUgSW50X0ZEQUV4RW4JICAgICAgIDB4MDAwMDAwMDEgLyogMTpGcmVlIERlc2NyaXB0b3IgQXJlYQkgICAgICovCiAJCQkJCSAgLyoJCSAgIEV4aGF1c3RlZCBFbmFibGUgICovCiAKLS8qIEludF9TcmMgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEludF9TcmMgYml0IGFzc2lnbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAjZGVmaW5lIEludF9OUmFidAkgICAgICAgMHgwMDAwNDAwMCAvKiAxOk5vbiBSZWNvdmVyYWJsZSBlcnJvcgkgICAgICovCiAjZGVmaW5lIEludF9EbVBhckVyclN0YXQgICAgICAgMHgwMDAwMjAwMCAvKiAxOkRNQSBQYXJpdHkgRXJyb3IgJiBDbGVhcgkgICAgICovCiAjZGVmaW5lIEludF9CTEV4CSAgICAgICAweDAwMDAxMDAwIC8qIDE6QnVmZmVyIExpc3QgRW1wdHkgJiBDbGVhciAgICAgKi8KQEAgLTI3MCw4ICsyNzAsOCBAQAogI2RlZmluZSBJbnRfSW50TWFjUngJICAgICAgIDB4MDAwMDAwMDIgLyogMTpSeCBjb250cm9sbGVyICYgQ2xlYXIJICAgICAqLwogI2RlZmluZSBJbnRfSW50TWFjVHgJICAgICAgIDB4MDAwMDAwMDEgLyogMTpUeCBjb250cm9sbGVyICYgQ2xlYXIJICAgICAqLwogCi0vKiBNRF9DQSBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0jZGVmaW5lIE1EX0NBX1ByZVN1cAkgICAgICAgMHgwMDAwMTAwMCAvKiAxOlByZWFtYmxlIFN1cHJlc3MJCSAgICAgKi8KKy8qIE1EX0NBIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZGVmaW5lIE1EX0NBX1ByZVN1cAkgICAgICAgMHgwMDAwMTAwMCAvKiAxOlByZWFtYmxlIFN1cHByZXNzCQkgICAgICovCiAjZGVmaW5lIE1EX0NBX0J1c3kJICAgICAgIDB4MDAwMDA4MDAgLyogMTpCdXN5IChTdGFydCBPcGVyYXRpb24pCSAgICAgKi8KICNkZWZpbmUgTURfQ0FfV3IJICAgICAgIDB4MDAwMDA0MDAgLyogMTpXcml0ZSAwOlJlYWQJCSAgICAgKi8KIApAQCAtMjk2LDcgKzI5Niw3IEBACiAKICNkZWZpbmUgRkRfQUxJR04JMTYKIAotLyogRnJhbWUgRGVzY3JpcHRlciBiaXQgYXNpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogRnJhbWUgRGVzY3JpcHRlciBiaXQgYXNzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KICNkZWZpbmUgRkRfRkRMZW5ndGhfTUFTSyAgICAgICAweDAwMDBGRkZGIC8qIExlbmd0aCBNQVNLCQkgICAgICovCiAjZGVmaW5lIEZEX0JEQ250X01BU0sJICAgICAgIDB4MDAxRjAwMDAgLyogQkQgY291bnQgTUFTSyBpbiBGRAkgICAgICovCiAjZGVmaW5lIEZEX0ZybU9wdF9NQVNLCSAgICAgICAweDdDMDAwMDAwIC8qIEZyYW1lIG9wdGlvbiBNQVNLCQkgICAgICovCkBAIC0zMDksOCArMzA5LDggQEAKICNkZWZpbmUgRkRfTmV4dF9FT0wJICAgICAgIDB4MDAwMDAwMDEgLyogRkQgRU9MIGluZGljYXRvcgkJICAgICAqLwogI2RlZmluZSBGRF9CRENudF9TSElGVAkgICAgICAgMTYKIAotLyogQnVmZmVyIERlc2NyaXB0ZXIgYml0IGFzaWduIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotI2RlZmluZSBCRF9CdWZmTGVuZ3RoX01BU0sgICAgIDB4MDAwMEZGRkYgLyogUmVjaWV2ZSBEYXRhIFNpemUJCSAgICAgKi8KKy8qIEJ1ZmZlciBEZXNjcmlwdGVyIGJpdCBhc3NpZ24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisjZGVmaW5lIEJEX0J1ZmZMZW5ndGhfTUFTSyAgICAgMHgwMDAwRkZGRiAvKiBSZWNlaXZlIERhdGEgU2l6ZQkJICAgICAqLwogI2RlZmluZSBCRF9SeEJESURfTUFTSwkgICAgICAgMHgwMEZGMDAwMCAvKiBCRCBJRCBOdW1iZXIgTUFTSwkJICAgICAqLwogI2RlZmluZSBCRF9SeEJEU2VxTl9NQVNLICAgICAgIDB4N0YwMDAwMDAgLyogUnggQkQgU2VxdWVuY2UgTnVtYmVyCSAgICAgKi8KICNkZWZpbmUgQkRfQ293bnNCRAkgICAgICAgMHg4MDAwMDAwMCAvKiBCRCBDb250cm9sbGVyIG93bmVyIGJpdAkgICAgICovCkBAIC0zMzksNyArMzM5LDcgQEAKICNkZWZpbmUgVFhfVEhSRVNIT0xECTEwMjQKIC8qIHVzZWQgdGhyZXNob2xkIHdpdGggcGFja2V0IG1heCBieXRlIGZvciBsb3cgcGNpIHRyYW5zZmVyIGFiaWxpdHkuKi8KICNkZWZpbmUgVFhfVEhSRVNIT0xEX01BWCAxNTM2Ci0vKiBzZXR0aW5nIHRocmVzaG9sZCBtYXggdmFsdWUgd2hlbiBvdmVycnVuIGVycm9yIG9jY3VyZWQgdGhpcyBjb3VudC4gKi8KKy8qIHNldHRpbmcgdGhyZXNob2xkIG1heCB2YWx1ZSB3aGVuIG92ZXJydW4gZXJyb3Igb2NjdXJyZWQgdGhpcyBjb3VudC4gKi8KICNkZWZpbmUgVFhfVEhSRVNIT0xEX0tFRVBfTElNSVQgMTAKIAogLyogMTYgKyBSWF9CVUZfTlVNICogOCArIFJYX0ZEX05VTSAqIDE2ICsgVFhfRkRfTlVNICogMzIgPD0gUEFHRV9TSVpFKkZEX1BBR0VfTlVNICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZWh1dGkuYyBiL2RyaXZlcnMvbmV0L3RlaHV0aS5jCmluZGV4IDMzOTc2MTguLjg1NjRlYzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RlaHV0aS5jCisrKyBiL2RyaXZlcnMvbmV0L3RlaHV0aS5jCkBAIC02NDUsNyArNjQ1LDcgQEAKIAlpZiAoY21kICE9IFNJT0NERVZQUklWQVRFKSB7CiAJCWVycm9yID0gY29weV9mcm9tX3VzZXIoZGF0YSwgaWZyLT5pZnJfZGF0YSwgc2l6ZW9mKGRhdGEpKTsKIAkJaWYgKGVycm9yKSB7Ci0JCQlwcl9lcnIoImNhbnQgY29weSBmcm9tIHVzZXJcbiIpOworCQkJcHJfZXJyKCJjYW4ndCBjb3B5IGZyb20gdXNlclxuIik7CiAJCQlSRVQoLUVGQVVMVCk7CiAJCX0KIAkJREJHKCIlZCAweCV4IDB4JXhcbiIsIGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0pOwpAQCAtOTk5LDcgKzk5OSw3IEBACiAgKgogICogUnhEIGZpZm8gaXMgc21hbGxlciB0aGFuIFJ4RiBmaWZvIGJ5IGRlc2lnbi4gVXBvbiBoaWdoIGxvYWQsIFJ4RCB3aWxsIGJlCiAgKiBmaWxsZWQgYW5kIHBhY2tldHMgd2lsbCBiZSBkcm9wcGVkIGJ5IG5pYyB3aXRob3V0IGdldHRpbmcgaW50byBob3N0IG9yCi0gKiBjb3VzaW5nIGludGVycnVwdC4gQW55d2F5LCBpbiB0aGF0IGNvbmRpdGlvbiwgaG9zdCBoYXMgbm8gY2hhbmNlIHRvIHByb2NjZXNzCisgKiBjb3VzaW5nIGludGVycnVwdC4gQW55d2F5LCBpbiB0aGF0IGNvbmRpdGlvbiwgaG9zdCBoYXMgbm8gY2hhbmNlIHRvIHByb2Nlc3MKICAqIGFsbCBwYWNrZXRzLCBidXQgZHJvcHBpbmcgaW4gbmljIGlzIGNoZWFwZXIsIHNpbmNlIGl0IHRha2VzIDAgY3B1IGN5Y2xlcwogICovCiAKQEAgLTEyMDAsOCArMTIwMCw4IEBACiAJUkVUKCk7CiB9CiAKLS8qIGJkeF9yeF9yZWNlaXZlIC0gcmVjaWV2ZXMgZnVsbCBwYWNrZXRzIGZyb20gUlhEIGZpZm8gYW5kIHBhc3MgdGhlbSB0byBPUwotICogTk9URTogYSBzcGVjaWFsIHRyZWF0bWVudCBpcyBnaXZlbiB0byBub24tY29udGlub3VzIGRlc2NyaXB0b3JzCisvKiBiZHhfcnhfcmVjZWl2ZSAtIHJlY2VpdmVzIGZ1bGwgcGFja2V0cyBmcm9tIFJYRCBmaWZvIGFuZCBwYXNzIHRoZW0gdG8gT1MKKyAqIE5PVEU6IGEgc3BlY2lhbCB0cmVhdG1lbnQgaXMgZ2l2ZW4gdG8gbm9uLWNvbnRpbnVvdXMgZGVzY3JpcHRvcnMKICAqIHRoYXQgc3RhcnQgbmVhciB0aGUgZW5kLCB3cmFwcyBhcm91bmQgYW5kIGNvbnRpbnVlIGF0IHRoZSBiZWdpbm5pbmcuIGEgc2Vjb25kCiAgKiBwYXJ0IGlzIGNvcGllZCByaWdodCBhZnRlciB0aGUgZmlyc3QsIGFuZCB0aGVuIGRlc2NyaXB0b3IgaXMgaW50ZXJwcmV0ZWQgYXMKICAqIG5vcm1hbC4gZmlmbyBoYXMgYW4gZXh0cmEgc3BhY2UgdG8gYWxsb3cgc3VjaCBvcGVyYXRpb25zCkBAIC0xNTg0LDkgKzE1ODQsOSBAQAogfQogCiAvKgotICogYmR4X3R4X3NwYWNlIC0gY2FsY3VsYXRlcyBhdmFsYWJsZSBzcGFjZSBpbiBUWCBmaWZvCisgKiBiZHhfdHhfc3BhY2UgLSBjYWxjdWxhdGVzIGF2YWlsYWJsZSBzcGFjZSBpbiBUWCBmaWZvCiAgKiBAcHJpdiAtIE5JQyBwcml2YXRlIHN0cnVjdHVyZQotICogUmV0dXJucyBhdmFsaWFibGUgc3BhY2UgaW4gVFggZmlmbyBpbiBieXRlcworICogUmV0dXJucyBhdmFpbGFibGUgc3BhY2UgaW4gVFggZmlmbyBpbiBieXRlcwogICovCiBzdGF0aWMgaW5saW5lIGludCBiZHhfdHhfc3BhY2Uoc3RydWN0IGJkeF9wcml2ICpwcml2KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdGVodXRpLmggYi9kcml2ZXJzL25ldC90ZWh1dGkuaAppbmRleCBiNmJhODYwLi5jNTY0MmZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90ZWh1dGkuaAorKysgYi9kcml2ZXJzL25ldC90ZWh1dGkuaApAQCAtNTAyLDcgKzUwMiw3IEBACiAjZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9BQ1JDICAweDAwMTAJLyogYWNjZXB0IGNyYyBlcnJvciAqLwogI2RlZmluZSAgR01BQ19SWF9GSUxURVJfQU0gICAgMHgwMDA4CS8qIGFjY2VwdCBtdWx0aWNhc3QgKi8KICNkZWZpbmUgIEdNQUNfUlhfRklMVEVSX0FCICAgIDB4MDAwNAkvKiBhY2NlcHQgYnJvYWRjYXN0ICovCi0jZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9QUk0gICAweDAwMDEJLyogWzA6MV0gcHJvbWlzY291cyBtb2RlICovCisjZGVmaW5lICBHTUFDX1JYX0ZJTFRFUl9QUk0gICAweDAwMDEJLyogWzA6MV0gcHJvbWlzY3VvdXMgbW9kZSAqLwogCiAjZGVmaW5lICBNQVhfRlJBTUVfQUJfVkFMICAgICAgIDB4M2ZmZgkvKiAxMzowICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3RnMy5jIGIvZHJpdmVycy9uZXQvdGczLmMKaW5kZXggNzNjOTQyZC4uYjhjNWYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdGczLmMKKysrIGIvZHJpdmVycy9uZXQvdGczLmMKQEAgLTk3MTIsNyArOTcxMiw3IEBACiAJCWVlcHJvbS0+bGVuICs9IGJfY291bnQ7CiAJfQogCi0JLyogcmVhZCBieXRlcyB1cHRvIHRoZSBsYXN0IDQgYnl0ZSBib3VuZGFyeSAqLworCS8qIHJlYWQgYnl0ZXMgdXAgdG8gdGhlIGxhc3QgNCBieXRlIGJvdW5kYXJ5ICovCiAJcGQgPSAmZGF0YVtlZXByb20tPmxlbl07CiAJZm9yIChpID0gMDsgaSA8IChsZW4gLSAobGVuICYgMykpOyBpICs9IDQpIHsKIAkJcmV0ID0gdGczX252cmFtX3JlYWRfYmUzMih0cCwgb2Zmc2V0ICsgaSwgJnZhbCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90ZzMuaCBiL2RyaXZlcnMvbmV0L3RnMy5oCmluZGV4IDczODg0YjYuLjVlOTY3MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3RnMy5oCisrKyBiL2RyaXZlcnMvbmV0L3RnMy5oCkBAIC0yMTMwLDcgKzIxMzAsNyBAQAogI2RlZmluZSBNSUlfVEczX0RTUF9FWFA5NgkJMHgwZjk2CiAjZGVmaW5lIE1JSV9URzNfRFNQX0VYUDk3CQkweDBmOTcKIAotI2RlZmluZSBNSUlfVEczX0FVWF9DVFJMCQkweDE4IC8qIGF1eGlsbGlhcnkgY29udHJvbCByZWdpc3RlciAqLworI2RlZmluZSBNSUlfVEczX0FVWF9DVFJMCQkweDE4IC8qIGF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVyICovCiAKICNkZWZpbmUgTUlJX1RHM19BVVhDVExfUENUTF8xMDBUWF9MUFdSCTB4MDAxMAogI2RlZmluZSBNSUlfVEczX0FVWENUTF9QQ1RMX1NQUl9JU09MQVRFCTB4MDAyMApAQCAtMjE0Niw3ICsyMTQ2LDcgQEAKICNkZWZpbmUgTUlJX1RHM19BVVhDVExfQUNUTF9UWF82REIJMHgwNDAwCiAjZGVmaW5lIE1JSV9URzNfQVVYQ1RMX1NIRFdTRUxfQVVYQ1RMCTB4MDAwMAogCi0jZGVmaW5lIE1JSV9URzNfQVVYX1NUQVQJCTB4MTkgLyogYXV4aWxsaWFyeSBzdGF0dXMgcmVnaXN0ZXIgKi8KKyNkZWZpbmUgTUlJX1RHM19BVVhfU1RBVAkJMHgxOSAvKiBhdXhpbGlhcnkgc3RhdHVzIHJlZ2lzdGVyICovCiAjZGVmaW5lIE1JSV9URzNfQVVYX1NUQVRfTFBBU1MJCTB4MDAwNAogI2RlZmluZSBNSUlfVEczX0FVWF9TVEFUX1NQRE1BU0sJMHgwNzAwCiAjZGVmaW5lIE1JSV9URzNfQVVYX1NUQVRfMTBIQUxGCQkweDAxMDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy8zYzM1OS5jIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMKaW5kZXggMTA4MDBmMS4uOGEzYjE5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMKKysrIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nLzNjMzU5LmMKQEAgLTIwOCw3ICsyMDgsNyBAQAogICoJcGFzc2luZy9nZXR0aW5nIHRoZSBuZXh0IHZhbHVlIGZyb20gdGhlIG5pYy4gQXMgd2l0aCBhbGwgcmVxdWVzdHMKICAqCW9uIHRoaXMgbmljIGl0IGhhcyB0byBiZSBkb25lIGluIHR3byBzdGFnZXMsIGEpIHRlbGwgdGhlIG5pYyB3aGljaAogICoJbWVtb3J5IGFkZHJlc3MgeW91IHdhbnQgdG8gYWNjZXNzIGFuZCBiKSBwYXNzL2dldCB0aGUgdmFsdWUgZnJvbSB0aGUgbmljLgotICoJV2l0aCB0aGUgRUVQcm9tLCB5b3UgaGF2ZSB0byB3YWl0IGJlZm9yZSBhbmQgaW5iZXR3ZWVuIGFjY2VzcyBhKSBhbmQgYikuCisgKglXaXRoIHRoZSBFRVByb20sIHlvdSBoYXZlIHRvIHdhaXQgYmVmb3JlIGFuZCBiZXR3ZWVuIGFjY2VzcyBhKSBhbmQgYikuCiAgKglBcyB0aGlzIGlzIG9ubHkgcmVhZCBhdCBpbml0aWFsaXphdGlvbiB0aW1lIGFuZCB0aGUgd2FpdCBwZXJpb2QgaXMgdmVyeSAKICAqCXNtYWxsIHdlIHNob3VsZG4ndCBoYXZlIHRvIHdvcnJ5IGFib3V0IHNjaGVkdWxpbmcgaXNzdWVzLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvbWFkZ2VtYy5jIGIvZHJpdmVycy9uZXQvdG9rZW5yaW5nL21hZGdlbWMuYwppbmRleCA3ODVhZDFhLi4yYmVkYzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvbWFkZ2VtYy5jCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9tYWRnZW1jLmMKQEAgLTczLDcgKzczLDcgQEAKIHN0YXRpYyBpcnFyZXR1cm5fdCBtYWRnZW1jX2ludGVycnVwdChpbnQgaXJxLCB2b2lkICpkZXZfaWQpOwogCiAvKgotICogVGhlc2Ugd29yayBhcm91bmQgcGFnaW5nLCBob3dldmVyIHRoZXkgZG9uJ3QgZ3VhcmVudGVlIHlvdSdyZSBvbiB0aGUKKyAqIFRoZXNlIHdvcmsgYXJvdW5kIHBhZ2luZywgaG93ZXZlciB0aGV5IGRvbid0IGd1YXJhbnRlZSB5b3UncmUgb24gdGhlCiAgKiByaWdodCBwYWdlLgogICovCiAjZGVmaW5lIFNJRlJFQURCKHJlZykgKGluYihkZXYtPmJhc2VfYWRkciArICgocmVnPDB4OCk/cmVnOnJlZy0weDgpKSkKQEAgLTM4Nyw3ICszODcsNyBAQAogICogYm90aCB3aXRoIHRoZWlyIG93biBkaXNhZHZhbnRhZ2VzLi4uCiAgKgogICogMSkgIAlSZWFkIGluIHRoZSBTSUZTVFMgcmVnaXN0ZXIgZnJvbSB0aGUgVE1TIGNvbnRyb2xsZXIuICBUaGlzCi0gKglpcyBndWFyZW50ZWVkIHRvIGJlIGFjY3VyYXRlLCBob3dldmVyLCB0aGVyZSdzIGEgZmFpcmx5CisgKglpcyBndWFyYW50ZWVkIHRvIGJlIGFjY3VyYXRlLCBob3dldmVyLCB0aGVyZSdzIGEgZmFpcmx5CiAgKglsYXJnZSBwZXJmb3JtYW5jZSBwZW5hbHR5IGZvciBkb2luZyBzbzogdGhlIE1hZGdlIGNoaXBzCiAgKgltdXN0IHJlcXVlc3QgdGhlIHJlZ2lzdGVyIGZyb20gdGhlIEVhZ2xlLCB0aGUgRWFnbGUgbXVzdAogICoJcmVhZCB0aGVtIGZyb20gaXRzIGludGVybmFsIGJ1cywgYW5kIHRoZW4gdGFrZSB0aGUgcm91dGUKQEAgLTQ1NCw3ICs0NTQsNyBAQAogfQogCiAvKgotICogU2V0IHRoZSBjYXJkIHRvIHRoZSBwcmVmZXJlZCByaW5nIHNwZWVkLgorICogU2V0IHRoZSBjYXJkIHRvIHRoZSBwcmVmZXJyZWQgcmluZyBzcGVlZC4KICAqCiAgKiBVbmxpa2UgbmV3ZXIgY2FyZHMsIHRoZSBNQzE2LzMyIGhhdmUgdGhlaXIgc3BlZWQgc2VsZWN0aW9uCiAgKiBjaXJjdWl0IGNvbm5lY3RlZCB0byB0aGUgTWFkZ2UgQVNJQ3MgYW5kIG5vdCB0byB0aGUgVE1TMzgwCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvc21jdHIuYyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCmluZGV4IDYzZGI1YTYuLmQ5MDQ0YWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy9zbWN0ci5jCkBAIC0zOTMsNyArMzkzLDcgQEAKICAgICAgICAgdHAtPnJ4X2JkYl9lbmRbTk9OX01BQ19RVUVVRV0gPSAoQkRCbG9jayAqKXNtY3RyX21hbGxvYyhkZXYsIDApOwogCiAgICAgICAgIC8qIEFsbG9jYXRlIE1BQyB0cmFuc21pdCBidWZmZXJzLgotICAgICAgICAgKiBNQUMgVHggQnVmZmVycyBkb2VuJ3QgaGF2ZSB0byBiZSBvbiBhbiBPREQgQm91bmRyeS4KKyAgICAgICAgICogTUFDIFR4IEJ1ZmZlcnMgZG9lbid0IGhhdmUgdG8gYmUgb24gYW4gT0REIEJvdW5kYXJ5LgogICAgICAgICAgKi8KICAgICAgICAgdHAtPnR4X2J1ZmZfaGVhZFtNQUNfUVVFVUVdCiAgICAgICAgICAgICAgICAgPSAoX191MTYgKilzbWN0cl9tYWxsb2MoZGV2LCB0cC0+dHhfYnVmZl9zaXplW01BQ19RVUVVRV0pOwpAQCAtNDE1LDcgKzQxNSw3IEBACiAKICAgICAgICAgLyogQWxsb2NhdGUgTm9uLU1BQyB0cmFuc21pdCBidWZmZXJzLgogICAgICAgICAgKiA/PyBGb3IgbWF4aW11bSBOZXR3YXJlIHBlcmZvcm1hbmNlLCBwdXQgVHggQnVmZmVycyBvbgotICAgICAgICAgKiBPREQgQm91bmRyeSBhbmQgdGhlbiByZXN0b3JlIG1hbGxvYyB0byBFdmVuIEJvdW5kcnlzLgorICAgICAgICAgKiBPREQgQm91bmRhcnkgYW5kIHRoZW4gcmVzdG9yZSBtYWxsb2MgdG8gRXZlbiBCb3VuZHJ5cy4KICAgICAgICAgICovCiAgICAgICAgIHNtY3RyX21hbGxvYyhkZXYsIDFMKTsKICAgICAgICAgdHAtPnR4X2J1ZmZfaGVhZFtOT05fTUFDX1FVRVVFXQpAQCAtMTMxMSw3ICsxMzExLDcgQEAKICAgICAgICAgbWVtX3VzZWQgKz0gc2l6ZW9mKEJEQmxvY2spICogdHAtPm51bV9yeF9iZGJzW01BQ19RVUVVRV07CiAKICAgICAgICAgLyogQWxsb2NhdGUgTUFDIHRyYW5zbWl0IGJ1ZmZlcnMuCi0gICAgICAgICAqIE1BQyB0cmFuc21pdCBidWZmZXJzIGRvbid0IGhhdmUgdG8gYmUgb24gYW4gT0REIEJvdW5kcnkuCisgICAgICAgICAqIE1BQyB0cmFuc21pdCBidWZmZXJzIGRvbid0IGhhdmUgdG8gYmUgb24gYW4gT0REIEJvdW5kYXJ5LgogICAgICAgICAgKi8KICAgICAgICAgbWVtX3VzZWQgKz0gdHAtPnR4X2J1ZmZfc2l6ZVtNQUNfUVVFVUVdOwogCkBAIC0xMzI1LDcgKzEzMjUsNyBAQAogCiAgICAgICAgIC8qIEFsbG9jYXRlIE5vbi1NQUMgdHJhbnNtaXQgYnVmZmVycy4KICAgICAgICAgICogRm9yIG1heGltdW0gTmV0d2FyZSBwZXJmb3JtYW5jZSwgcHV0IFR4IEJ1ZmZlcnMgb24KLSAgICAgICAgICogT0REIEJvdW5kcnksYW5kIHRoZW4gcmVzdG9yZSBtYWxsb2MgdG8gRXZlbiBCb3VuZHJ5cy4KKyAgICAgICAgICogT0REIEJvdW5kYXJ5LGFuZCB0aGVuIHJlc3RvcmUgbWFsbG9jIHRvIEV2ZW4gQm91bmRyeXMuCiAgICAgICAgICAqLwogICAgICAgICBtZW1fdXNlZCArPSAxTDsKICAgICAgICAgbWVtX3VzZWQgKz0gdHAtPnR4X2J1ZmZfc2l6ZVtOT05fTUFDX1FVRVVFXTsKQEAgLTMwNjksOCArMzA2OSw4IEBACiAgKiBkaXNhYmxlZC4hPwogICoKICAqIE5PVEUgMjogSWYgdGhlIG1vbml0b3Jfc3RhdGUgaXMgTVNfQkVBQ09OX1RFU1RfU1RBVEUgYW5kIHRoZSByZWNlaXZlX21hc2sKLSAqIGhhcyBhbnkgbXVsdGktY2FzdCBvciBwcm9taXNjb3VzIGJpdHMgc2V0LCB0aGUgcmVjZWl2ZV9tYXNrIG5lZWRzIHRvCi0gKiBiZSBjaGFuZ2VkIHRvIGNsZWFyIHRoZSBtdWx0aS1jYXN0IG9yIHByb21pc2NvdXMgbW9kZSBiaXRzLCB0aGUgbG9iZV90ZXN0CisgKiBoYXMgYW55IG11bHRpLWNhc3Qgb3IgcHJvbWlzY3VvdXMgYml0cyBzZXQsIHRoZSByZWNlaXZlX21hc2sgbmVlZHMgdG8KKyAqIGJlIGNoYW5nZWQgdG8gY2xlYXIgdGhlIG11bHRpLWNhc3Qgb3IgcHJvbWlzY3VvdXMgbW9kZSBiaXRzLCB0aGUgbG9iZV90ZXN0CiAgKiBydW4sIGFuZCB0aGVuIHRoZSByZWNlaXZlIG1hc2sgc2V0IGJhY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlIGlmIHRoZSB0ZXN0CiAgKiBpcyBzdWNjZXNzZnVsLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90b2tlbnJpbmcvdG1zMzgwdHIuaCBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oCmluZGV4IDYwYjMwZWUuLmU1YTYxN2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oCisrKyBiL2RyaXZlcnMvbmV0L3Rva2VucmluZy90bXMzODB0ci5oCkBAIC00NDIsNyArNDQyLDcgQEAKICNkZWZpbmUgUEFTU19GSVJTVF9CVUZfT05MWQkweDAxMDAJLyogUGFzc2VzIG9ubHkgZmlyc3QgaW50ZXJuYWwgYnVmZmVyCiAJCQkJCSAqIG9mIGVhY2ggcmVjZWl2ZWQgZnJhbWU7IEZyYW1lU2l6ZQogCQkJCQkgKiBvZiBSUExzIG11c3QgY29udGFpbiBpbnRlcm5hbAotCQkJCQkgKiBCVUZGRVJfU0laRSBiaXRzIGZvciBwcm9taXNjb3VzIG1vZGUuCisJCQkJCSAqIEJVRkZFUl9TSVpFIGJpdHMgZm9yIHByb21pc2N1b3VzIG1vZGUuCiAJCQkJCSAqLwogI2RlZmluZSBFTkFCTEVfRlVMTF9EVVBMRVhfU0VMRUNUSU9OCTB4MjAwMCAKICAJCQkJCS8qIEVuYWJsZSB0aGUgdXNlIG9mIGZ1bGwtZHVwbGV4CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90c2kxMDhfZXRoLmggYi9kcml2ZXJzL25ldC90c2kxMDhfZXRoLmgKaW5kZXggNWE3N2FlNi4uNWZlZTdkNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdHNpMTA4X2V0aC5oCisrKyBiL2RyaXZlcnMvbmV0L3RzaTEwOF9ldGguaApAQCAtMzA1LDkgKzMwNSw5IEBACiAjZGVmaW5lIFRTSTEwOF9UWF9DUkMJKDEgPDwgNSkJLyogR2VuZXJhdGUgQ1JDIGZvciB0aGlzIHBhY2tldCAqLwogI2RlZmluZSBUU0kxMDhfVFhfSU5UCSgxIDw8IDE0KQkvKiBHZW5lcmF0ZSBhbiBJUlEgYWZ0ZXIgZnJhZy4gcHJvY2Vzc2VkICovCiAjZGVmaW5lIFRTSTEwOF9UWF9SRVRSWQkoMHhmIDw8IDE2KQkvKiA0IGJpdCBmaWVsZCBpbmRpY2F0aW5nIG51bS4gb2YgcmV0cmllcyAqLwotI2RlZmluZSBUU0kxMDhfVFhfQ09MCSgxIDw8IDIwKQkvKiBTZXQgaWYgYSBjb2xsaXNpb24gb2NjdXJlZCAqLwotI2RlZmluZSBUU0kxMDhfVFhfTENPTAkoMSA8PCAyNCkJLyogU2V0IGlmIGEgbGF0ZSBjb2xsaXNpb24gb2NjdXJlZCAqLwotI2RlZmluZSBUU0kxMDhfVFhfVU5ERVIJKDEgPDwgMjUpCS8qIFNldCBpZiBhIEZJRk8gdW5kZXJydW4gb2NjdXJlZCAqLworI2RlZmluZSBUU0kxMDhfVFhfQ09MCSgxIDw8IDIwKQkvKiBTZXQgaWYgYSBjb2xsaXNpb24gb2NjdXJyZWQgKi8KKyNkZWZpbmUgVFNJMTA4X1RYX0xDT0wJKDEgPDwgMjQpCS8qIFNldCBpZiBhIGxhdGUgY29sbGlzaW9uIG9jY3VycmVkICovCisjZGVmaW5lIFRTSTEwOF9UWF9VTkRFUgkoMSA8PCAyNSkJLyogU2V0IGlmIGEgRklGTyB1bmRlcnJ1biBvY2N1cnJlZCAqLwogI2RlZmluZSBUU0kxMDhfVFhfUkxJTQkoMSA8PCAyNikJLyogU2V0IGlmIHRoZSByZXRyeSBsaW1pdCB3YXMgcmVhY2hlZCAqLwogI2RlZmluZSBUU0kxMDhfVFhfT0sJKDEgPDwgMzApCS8qIFNldCBpZiB0aGUgZnJhbWUgVFggd2FzIHN1Y2Nlc3NmdWwgKi8KICNkZWZpbmUgVFNJMTA4X1RYX09XTgkoMSA8PCAzMSkJLyogU2V0IGlmIHRoZSBkZXZpY2Ugb3ducyB0aGUgZGVzY3JpcHRvciAqLwpAQCAtMzMyLDcgKzMzMiw3IEBACiAjZGVmaW5lIFRTSTEwOF9SWF9SVU5UCSgxIDw8IDQpLyogUGFja2V0IGlzIGxlc3MgdGhhbiBtaW5pbXVtIHNpemUgKi8KICNkZWZpbmUgVFNJMTA4X1JYX0hBU0gJKDEgPDwgNykvKiBIYXNoIHRhYmxlIG1hdGNoICovCiAjZGVmaW5lIFRTSTEwOF9SWF9CQUQJKDEgPDwgOCkJLyogQmFkIGZyYW1lICovCi0jZGVmaW5lIFRTSTEwOF9SWF9PVkVSCSgxIDw8IDkpCS8qIEZJRk8gb3ZlcnJ1biBvY2N1cmVkICovCisjZGVmaW5lIFRTSTEwOF9SWF9PVkVSCSgxIDw8IDkpCS8qIEZJRk8gb3ZlcnJ1biBvY2N1cnJlZCAqLwogI2RlZmluZSBUU0kxMDhfUlhfVFJVTkMJKDEgPDwgMTEpCS8qIFBhY2tldCB0cnVuY2F0ZWQgZHVlIHRvIGV4Y2VzcyBsZW5ndGggKi8KICNkZWZpbmUgVFNJMTA4X1JYX0NSQwkoMSA8PCAxMikJLyogUGFja2V0IGhhZCBhIENSQyBlcnJvciAqLwogI2RlZmluZSBUU0kxMDhfUlhfSU5UCSgxIDw8IDEzKQkvKiBHZW5lcmF0ZSBhbiBJUlEgYWZ0ZXIgZnJhZy4gcHJvY2Vzc2VkICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90dWxpcC9kZTR4NS5jIGIvZHJpdmVycy9uZXQvdHVsaXAvZGU0eDUuYwppbmRleCA0ZGJkNDkzLi5lZmFhMWQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dWxpcC9kZTR4NS5jCisrKyBiL2RyaXZlcnMvbmV0L3R1bGlwL2RlNHg1LmMKQEAgLTc5LDcgKzc5LDcgQEAKICAgICBldmVyeSAgdXNhYmxlIERFQ2NoaXAgYm9hcmQsICBJICBwaW5jaGVkIERvbmFsZCdzICduZXh0X21vZHVsZScgZmllbGQgdG8KICAgICBsaW5rIG15IG1vZHVsZXMgdG9nZXRoZXIuCiAKLSAgICBVcHRvIDE1IEVJU0EgY2FyZHMgY2FuIGJlIHN1cHBvcnRlZCB1bmRlciB0aGlzIGRyaXZlciwgbGltaXRlZCBwcmltYXJpbHkKKyAgICBVcCB0byAxNSBFSVNBIGNhcmRzIGNhbiBiZSBzdXBwb3J0ZWQgdW5kZXIgdGhpcyBkcml2ZXIsIGxpbWl0ZWQgcHJpbWFyaWx5CiAgICAgYnkgdGhlIGF2YWlsYWJsZSBJUlEgbGluZXMuICBJIGhhdmUgIGNoZWNrZWQgZGlmZmVyZW50IGNvbmZpZ3VyYXRpb25zIG9mCiAgICAgbXVsdGlwbGUgZGVwY2EsIEV0aGVyV09SS1MgMyBjYXJkcyBhbmQgZGU0eDUgY2FyZHMgYW5kICBoYXZlIG5vdCBmb3VuZCBhCiAgICAgcHJvYmxlbSB5ZXQgKHByb3ZpZGVkIHlvdSBoYXZlIGF0IGxlYXN0IGRlcGNhLmMgdjAuMzgpIC4uLgpAQCAtNTE3LDcgKzUxNyw3IEBACiAgICAgdV9pbnQgbWNpOyAgICAgICAgICAgICAgLyogMjExNDIgTUlJIENvbm5lY3RvciBJbnRlcnJ1cHQgaW5mbyAgICAgICAgKi8KIH07CiAKLSNkZWZpbmUgREU0WDVfTUFYX1BIWSA4ICAgICAvKiBBbGxvdyB1cHRvIDggYXR0YWNoZWQgUEhZIGRldmljZXMgcGVyIGJvYXJkICovCisjZGVmaW5lIERFNFg1X01BWF9QSFkgOCAgICAgLyogQWxsb3cgdXAgdG8gOCBhdHRhY2hlZCBQSFkgZGV2aWNlcyBwZXIgYm9hcmQgKi8KIAogc3RydWN0IHNpYV9waHkgewogICAgIHVfY2hhciBtYzsgICAgICAgICAgICAgIC8qIE1lZGlhIENvZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCkBAIC0xNDM2LDcgKzE0MzYsNyBAQAogCiAgICAgLyogUG9sbCBmb3Igc2V0dXAgZnJhbWUgY29tcGxldGlvbiAoYWRhcHRlciBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCBub3cpICovCiAKLSAgICBmb3IgKGo9MCwgaT0wOyhpPDUwMCkgJiYgKGo9PTApO2krKykgeyAgICAgICAvKiBVcHRvIDUwMG1zIGRlbGF5ICovCisgICAgZm9yIChqPTAsIGk9MDsoaTw1MDApICYmIChqPT0wKTtpKyspIHsgICAgICAgLyogVXAgdG8gNTAwbXMgZGVsYXkgKi8KIAltZGVsYXkoMSk7CiAJaWYgKChzMzIpbGUzMl90b19jcHUobHAtPnR4X3JpbmdbbHAtPnR4X25ld10uc3RhdHVzKSA+PSAwKSBqPTE7CiAgICAgfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVsaXAvZG1mZS5jIGIvZHJpdmVycy9uZXQvdHVsaXAvZG1mZS5jCmluZGV4IDcwNjRlMDMuLmZiMDdmNDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3R1bGlwL2RtZmUuYworKysgYi9kcml2ZXJzL25ldC90dWxpcC9kbWZlLmMKQEAgLTEyMjQsNyArMTIyNCw3IEBACiAKIAogCS8qIElmIGNoaXAgcmVwb3J0cyB0aGF0IGxpbmsgaXMgZmFpbGVkIGl0IGNvdWxkIGJlIGJlY2F1c2UgZXh0ZXJuYWwKLQkJUEhZIGxpbmsgc3RhdHVzIHBpbiBpcyBub3QgY29uZWN0ZWQgY29ycmVjdGx5IHRvIGNoaXAKKwkJUEhZIGxpbmsgc3RhdHVzIHBpbiBpcyBub3QgY29ubmVjdGVkIGNvcnJlY3RseSB0byBjaGlwCiAJCVRvIGJlIHN1cmUgYXNrIFBIWSB0b28uCiAJKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdHVsaXAvZWVwcm9tLmMgYi9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYwppbmRleCAzMDMxZWQ5Li4yOTY0ODZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYworKysgYi9kcml2ZXJzL25ldC90dWxpcC9lZXByb20uYwpAQCAtMTE1LDcgKzExNSw3IEBACiAJCQkgIDB4MDIsICAgICAgIC8qIHBoeSByZXNldCBzZXF1ZW5jZSBsZW5ndGggKi8KIAkJCSAgMHgwMSwgMHgwMCwgLyogcGh5IHJlc2V0IHNlcXVlbmNlICovCiAJCQkgIDB4MDAsIDB4NzgsIC8qIG1lZGlhIGNhcGFiaWxpdGllcyAqLwotCQkJICAweDAwLCAweGUwLCAvKiBud2F5IGFkdmVydGlzbWVudCAqLworCQkJICAweDAwLCAweGUwLCAvKiBud2F5IGFkdmVydGlzZW1lbnQgKi8KIAkJCSAgMHgwMCwgMHgwNSwgLyogZmR4IGJpdCBtYXAgKi8KIAkJCSAgMHgwMCwgMHgwNiAgLyogdHRtIGJpdCBtYXAgKi8KIAkJCX07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC90eXBob29uLmMgYi9kcml2ZXJzL25ldC90eXBob29uLmMKaW5kZXggN2ZhNWVjMi4uODI2NTNjYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdHlwaG9vbi5jCisrKyBiL2RyaXZlcnMvbmV0L3R5cGhvb24uYwpAQCAtODQ2LDcgKzg0Niw3IEBACiAJaWYodHlwaG9vbl9udW1fZnJlZV90eCh0eFJpbmcpIDwgKG51bURlc2MgKyAyKSkgewogCQluZXRpZl9zdG9wX3F1ZXVlKGRldik7CiAKLQkJLyogQSBUeCBjb21wbGV0ZSBJUlEgY291bGQgaGF2ZSBnb3R0ZW4gaW5iZXR3ZWVuLCBtYWtpbmcKKwkJLyogQSBUeCBjb21wbGV0ZSBJUlEgY291bGQgaGF2ZSBnb3R0ZW4gYmV0d2VlbiwgbWFraW5nCiAJCSAqIHRoZSByaW5nIGZyZWUgYWdhaW4uIE9ubHkgbmVlZCB0byByZWNoZWNrIGhlcmUsIHNpbmNlCiAJCSAqIFR4IGlzIHNlcmlhbGl6ZWQuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdWNjX2dldGguaCBiL2RyaXZlcnMvbmV0L3VjY19nZXRoLmgKaW5kZXggMDU1Yjg3YS4uZDEyZmNhZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdWNjX2dldGguaAorKysgYi9kcml2ZXJzL25ldC91Y2NfZ2V0aC5oCkBAIC04MCw3ICs4MCw3IEBACiAJCQkJICAgZnJhbWVzKSByZWNlaXZlZCB0aGF0IHdlcmUgYmV0d2VlbiAxMjgKIAkJCQkgICAoSW5jbHVkaW5nIEZDUyBsZW5ndGg9PTQpIGFuZCAyNTUgb2N0ZXRzICovCiAJdTMyIHR4b2s7CQkvKiBUb3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlc2lkaW5nIGluIGZyYW1lcwotCQkJCSAgIHRoYXQgd2hlcmUgaW52b2x2ZWQgaW4gc3VjY2Vzc2Z1bGwKKwkJCQkgICB0aGF0IHdoZXJlIGludm9sdmVkIGluIHN1Y2Nlc3NmdWwKIAkJCQkgICB0cmFuc21pc3Npb24gKi8KIAl1MTYgdHhjZjsJCS8qIFRvdGFsIG51bWJlciBvZiBQQVVTRSBjb250cm9sIGZyYW1lcwogCQkJCSAgIHRyYW5zbWl0dGVkIGJ5IHRoaXMgTUFDICovCkBAIC03NTksNyArNzU5LDcgQEAKIAkJCQkgICBmcmFtZXMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuIDEyOAogCQkJCSAgIChJbmNsdWRpbmcgRkNTIGxlbmd0aD09NCkgYW5kIDI1NSBvY3RldHMgKi8KIAl1MzIgdHhvazsJCS8qIFRvdGFsIG51bWJlciBvZiBvY3RldHMgcmVzaWRpbmcgaW4gZnJhbWVzCi0JCQkJICAgdGhhdCB3aGVyZSBpbnZvbHZlZCBpbiBzdWNjZXNzZnVsbAorCQkJCSAgIHRoYXQgd2hlcmUgaW52b2x2ZWQgaW4gc3VjY2Vzc2Z1bAogCQkJCSAgIHRyYW5zbWlzc2lvbiAqLwogCXUxNiB0eGNmOwkJLyogVG90YWwgbnVtYmVyIG9mIFBBVVNFIGNvbnRyb2wgZnJhbWVzCiAJCQkJICAgdHJhbnNtaXR0ZWQgYnkgdGhpcyBNQUMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMgYi9kcml2ZXJzL25ldC91c2IvY2RjX2VlbS5jCmluZGV4IDhmMTI4NTQuLjg4MmY1M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9jZGNfZWVtLmMKKysrIGIvZHJpdmVycy9uZXQvdXNiL2NkY19lZW0uYwpAQCAtMTkwLDcgKzE5MCw3IEBACiAKIAkJLyoKIAkJICogRUVNIHBhY2tldCBoZWFkZXIgZm9ybWF0OgotCQkgKiBiMC4uMTQ6CUVFTSB0eXBlIGRlcGVuZGFudCAoRGF0YSBvciBDb21tYW5kKQorCQkgKiBiMC4uMTQ6CUVFTSB0eXBlIGRlcGVuZGVudCAoRGF0YSBvciBDb21tYW5kKQogCQkgKiBiMTU6CQlibVR5cGUKIAkJICovCiAJCWhlYWRlciA9IGdldF91bmFsaWduZWRfbGUxNihza2ItPmRhdGEpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jIGIvZHJpdmVycy9uZXQvdXNiL2thd2V0aC5jCmluZGV4IDdkYzg0OTcuLmFkMDI5OGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3VzYi9rYXdldGguYworKysgYi9kcml2ZXJzL25ldC91c2Iva2F3ZXRoLmMKQEAgLTEyMjEsNyArMTIyMSw3IEBACiAKIAl1c2Jfc2V0X2ludGZkYXRhKGludGYsIE5VTEwpOwogCWlmICgha2F3ZXRoKSB7Ci0JCWRldl93YXJuKCZpbnRmLT5kZXYsICJ1bnJlZ2lzdGVyaW5nIG5vbi1leGlzdGFudCBkZXZpY2VcbiIpOworCQlkZXZfd2FybigmaW50Zi0+ZGV2LCAidW5yZWdpc3RlcmluZyBub24tZXhpc3RlbnQgZGV2aWNlXG4iKTsKIAkJcmV0dXJuOwogCX0KIAluZXRkZXYgPSBrYXdldGgtPm5ldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpYS1yaGluZS5jIGIvZHJpdmVycy9uZXQvdmlhLXJoaW5lLmMKaW5kZXggNWU3ZjA2OS4uZWI1ZDc1ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdmlhLXJoaW5lLmMKKysrIGIvZHJpdmVycy9uZXQvdmlhLXJoaW5lLmMKQEAgLTE4NjEsNyArMTg2MSw3IEBACiAJdTMyIGludHJfc3RhdHVzOwogCiAJLyoKLQkgKiBJZiBuZXcgZXJyb3JzIG9jY3VyZWQsIHdlIG5lZWQgdG8gc29ydCB0aGVtIG91dCBiZWZvcmUgZG9pbmcgVHguCisJICogSWYgbmV3IGVycm9ycyBvY2N1cnJlZCwgd2UgbmVlZCB0byBzb3J0IHRoZW0gb3V0IGJlZm9yZSBkb2luZyBUeC4KIAkgKiBJbiB0aGF0IGNhc2UgdGhlIElTUiB3aWxsIGJlIGJhY2sgaGVyZSBSU04gYW55d2F5LgogCSAqLwogCWludHJfc3RhdHVzID0gZ2V0X2ludHJfc3RhdHVzKGRldik7CkBAIC0xODg3LDcgKzE4ODcsNyBAQAogCQkvKiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gKi8KIAkJaWYgKGRlYnVnID4gMSkKIAkJCXByaW50ayhLRVJOX1dBUk5JTkcgIiVzOiByaGluZV9yZXN0YXJ0X3R4KCkgIgotCQkJICAgICAgICJBbm90aGVyIGVycm9yIG9jY3VyZWQgJTguOHguXG4iLAorCQkJICAgICAgICJBbm90aGVyIGVycm9yIG9jY3VycmVkICU4Ljh4LlxuIiwKIAkJCSAgICAgICBkZXYtPm5hbWUsIGludHJfc3RhdHVzKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZpYS12ZWxvY2l0eS5jIGIvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMKaW5kZXggMGQ2ZmVjNi4uNGZlMDUxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMKKysrIGIvZHJpdmVycy9uZXQvdmlhLXZlbG9jaXR5LmMKQEAgLTI5Miw3ICsyOTIsNyBAQAogLyogSVBfYnl0ZV9hbGlnbltdIGlzIHVzZWQgZm9yIElQIGhlYWRlciBEV09SRCBieXRlIGFsaWduZWQKICAgIDA6IGluZGljYXRlIHRoZSBJUCBoZWFkZXIgd29uJ3QgYmUgRFdPUkQgYnl0ZSBhbGlnbmVkLihEZWZhdWx0KSAuCiAgICAxOiBpbmRpY2F0ZSB0aGUgSVAgaGVhZGVyIHdpbGwgYmUgRFdPUkQgYnl0ZSBhbGlnbmVkLgotICAgICAgSW4gc29tZSBlbnZpcm9tZW50LCB0aGUgSVAgaGVhZGVyIHNob3VsZCBiZSBEV09SRCBieXRlIGFsaWduZWQsCisgICAgICBJbiBzb21lIGVudmlyb25tZW50LCB0aGUgSVAgaGVhZGVyIHNob3VsZCBiZSBEV09SRCBieXRlIGFsaWduZWQsCiAgICAgICBvciB0aGUgcGFja2V0IHdpbGwgYmUgZHJvcGVkIHdoZW4gd2UgcmVjZWl2ZSBpdC4gKGVnOiBJUFZTKQogKi8KIFZFTE9DSVRZX1BBUkFNKElQX2J5dGVfYWxpZ24sICJFbmFibGUgSVAgaGVhZGVyIGR3b3JkIGFsaWduZWQiKTsKQEAgLTE5OTQsNyArMTk5NCw3IEBACiAgKglAZGV2OiBuZXR3b3JrIGRldmljZQogICoKICAqCVJlcGxhY2UgdGhlIGN1cnJlbnQgc2tiIHRoYXQgaXMgc2NoZWR1bGVkIGZvciBSeCBwcm9jZXNzaW5nIGJ5IGEKLSAqCXNob3J0ZXIsIGltbWVkaWF0bHkgYWxsb2NhdGVkIHNrYiwgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBzbWFsbAorICoJc2hvcnRlciwgaW1tZWRpYXRlbHkgYWxsb2NhdGVkIHNrYiwgaWYgdGhlIHJlY2VpdmVkIHBhY2tldCBpcyBzbWFsbAogICoJZW5vdWdoLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZSBpZiB0aGUgcmVjZWl2ZWQKICAqCXBhY2tldCBpcyB0b28gYmlnIG9yIGlmIG1lbW9yeSBpcyBleGhhdXN0ZWQuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3ZteG5ldDMvdm14bmV0M19kcnYuYyBiL2RyaXZlcnMvbmV0L3ZteG5ldDMvdm14bmV0M19kcnYuYwppbmRleCBjYzE0YjRhLi4wZDQ3YzNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92bXhuZXQzL3ZteG5ldDNfZHJ2LmMKKysrIGIvZHJpdmVycy9uZXQvdm14bmV0My92bXhuZXQzX2Rydi5jCkBAIC04OTIsNyArODkyLDcgQEAKICAqIFRyYW5zbWl0cyBhIHBrdCB0aHJ1IGEgZ2l2ZW4gdHEKICAqIFJldHVybnM6CiAgKiAgICBORVRERVZfVFhfT0s6ICAgICAgZGVzY3JpcHRvcnMgYXJlIHNldHVwIHN1Y2Nlc3NmdWxseQotICogICAgTkVUREVWX1RYX09LOiAgICAgIGVycm9yIG9jY3VyZWQsIHRoZSBwa3QgaXMgZHJvcHBlZAorICogICAgTkVUREVWX1RYX09LOiAgICAgIGVycm9yIG9jY3VycmVkLCB0aGUgcGt0IGlzIGRyb3BwZWQKICAqICAgIE5FVERFVl9UWF9CVVNZOiAgICB0eCByaW5nIGlzIGZ1bGwsIHF1ZXVlIGlzIHN0b3BwZWQKICAqCiAgKiBTaWRlLWVmZmVjdHM6CkBAIC0yNjg1LDcgKzI2ODUsNyBAQAogICogRW5hYmxlIE1TSXggdmVjdG9ycy4KICAqIFJldHVybnMgOgogICoJMCBvbiBzdWNjZXNzZnVsIGVuYWJsaW5nIG9mIHJlcXVpcmVkIHZlY3RvcnMsCi0gKglWTVhORVQzX0xJTlVYX01JTl9NU0lYX1ZFQ1Qgd2hlbiBvbmx5IG1pbnVtdW0gbnVtYmVyIG9mIHZlY3RvcnMgcmVxdWlyZWQKKyAqCVZNWE5FVDNfTElOVVhfTUlOX01TSVhfVkVDVCB3aGVuIG9ubHkgbWluaW11bSBudW1iZXIgb2YgdmVjdG9ycyByZXF1aXJlZAogICoJIGNvdWxkIGJlIGVuYWJsZWQuCiAgKgludW1iZXIgb2YgdmVjdG9ycyB3aGljaCBjYW4gYmUgZW5hYmxlZCBvdGhlcndpc2UgKHRoaXMgbnVtYmVyIGlzIHNtYWxsZXIKICAqCSB0aGFuIFZNWE5FVDNfTElOVVhfTUlOX01TSVhfVkVDVCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1jb25maWcuYyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1jb25maWcuYwppbmRleCBlNzRlNGI0Li40MDFiZWJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtY29uZmlnLmMKKysrIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLWNvbmZpZy5jCkBAIC0xODcsNyArMTg3LDcgQEAKIAkJCQkJICAgVlhHRV9IV19ERUZfREVWSUNFX1BPTExfTUlMTElTKTsKIAogCS8qIFRoZSBfX3Z4Z2VfaHdfZGV2aWNlX3JlZ2lzdGVyX3BvbGwgY2FuIHVkZWxheSBmb3IgYSBzaWduaWZpY2FudAotCSAqIGFtb3VudCBvZiB0aW1lLCBibG9ja2luZyBvdGhlciBwcm9jY2VzcyBmcm9tIHRoZSBDUFUuICBJZiBpdCBkZWxheXMKKwkgKiBhbW91bnQgb2YgdGltZSwgYmxvY2tpbmcgb3RoZXIgcHJvY2VzcyBmcm9tIHRoZSBDUFUuICBJZiBpdCBkZWxheXMKIAkgKiBmb3IgfjVzZWNzLCBhIE5NSSBlcnJvciBjYW4gb2NjdXIuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byBnaXZlIHVwCiAJICogdGhlIHByb2Nlc3NvciB2aWEgbXNsZWVwLCBidXQgdGhpcyBpcyBub3QgYWxsb3dlZCBpcyB1bmRlciBsb2NrLgogCSAqIFNvLCBvbmx5IGFsbG93IGl0IHRvIHNsZWVwIGZvciB+NHNlY3MgaWYgb3Blbi4gIE90aGVyd2lzZSwgZGVsYXkgZm9yCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtbWFpbi5jIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLW1haW4uYwppbmRleCAzOTU0MjNhLi5hZmY2OGMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS1tYWluLmMKQEAgLTIyODIsNyArMjI4Miw3IEBACiAJCVZYR0VfSFdfVlBBVEhfTVNJWF9BQ1RJVkUpICsgVlhHRV9BTEFSTV9NU0lYX0lEOwogCiAJZm9yIChpID0gMDsgaSA8IHZkZXYtPm5vX29mX3ZwYXRoOyBpKyspIHsKLQkJLyogUmVkdWNlIHRoZSBjaGFuY2Ugb2YgbG9vc2luZyBhbGFybSBpbnRlcnJ1cHRzIGJ5IG1hc2tpbmcKKwkJLyogUmVkdWNlIHRoZSBjaGFuY2Ugb2YgbG9zaW5nIGFsYXJtIGludGVycnVwdHMgYnkgbWFza2luZwogCQkgKiB0aGUgdmVjdG9yLiBBIHBlbmRpbmcgYml0IHdpbGwgYmUgc2V0IGlmIGFuIGFsYXJtIGlzCiAJCSAqIGdlbmVyYXRlZCBhbmQgb24gdW5tYXNrIHRoZSBpbnRlcnJ1cHQgd2lsbCBiZSBmaXJlZC4KIAkJICovCkBAIC0yNzg4LDcgKzI3ODgsNyBAQAogCX0KIAogCS8qIEVuYWJsZSB2cGF0aCB0byBzbmlmZiBhbGwgdW5pY2FzdC9tdWx0aWNhc3QgdHJhZmZpYyB0aGF0IG5vdAotCSAqIGFkZHJlc3NlZCB0byB0aGVtLiBXZSBhbGxvdyBwcm9taXNjb3VzIG1vZGUgZm9yIFBGIG9ubHkKKwkgKiBhZGRyZXNzZWQgdG8gdGhlbS4gV2UgYWxsb3cgcHJvbWlzY3VvdXMgbW9kZSBmb3IgUEYgb25seQogCSAqLwogCiAJdmFsNjQgPSAwOwpAQCAtMjg5MCw3ICsyODkwLDcgQEAKIAlyZXR1cm4gcmV0OwogfQogCi0vKiBMb29wIHRocm91Z2h0IHRoZSBtYWMgYWRkcmVzcyBsaXN0IGFuZCBkZWxldGUgYWxsIHRoZSBlbnRyaWVzICovCisvKiBMb29wIHRocm91Z2ggdGhlIG1hYyBhZGRyZXNzIGxpc3QgYW5kIGRlbGV0ZSBhbGwgdGhlIGVudHJpZXMgKi8KIHN0YXRpYyB2b2lkIHZ4Z2VfZnJlZV9tYWNfYWRkX2xpc3Qoc3RydWN0IHZ4Z2VfdnBhdGggKnZwYXRoKQogewogCkBAIC0yOTU3LDcgKzI5NTcsNyBAQAogCQkJCQl2YWw2NCk7CiAJCX0KIAotCQkvKiBSZW1vdmUgdGhlIGZ1bmN0aW9uIDAgZnJvbSBwcm9taXNjb3VzIG1vZGUgKi8KKwkJLyogUmVtb3ZlIHRoZSBmdW5jdGlvbiAwIGZyb20gcHJvbWlzY3VvdXMgbW9kZSAqLwogCQl2eGdlX2h3X21nbXRfcmVnX3dyaXRlKHZkZXYtPmRldmgsCiAJCQl2eGdlX2h3X21nbXRfcmVnX3R5cGVfbXJwY2ltLAogCQkJMCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmMgYi9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5jCmluZGV4IDg2NzRmMzMuLjI2MzhiOGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmMKKysrIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuYwpAQCAtMTExMSw3ICsxMTExLDcgQEAKICAqIHZ4Z2VfaHdfY2hhbm5lbF9kdHJfY291bnQKICAqIEBjaGFubmVsOiBDaGFubmVsIGhhbmRsZS4gT2J0YWluZWQgdmlhIHZ4Z2VfaHdfY2hhbm5lbF9vcGVuKCkuCiAgKgotICogUmV0cmVpdmUgbnVtYmVyIG9mIERUUnMgYXZhaWxhYmxlLiBUaGlzIGZ1bmN0aW9uIGNhbiBub3QgYmUgY2FsbGVkCisgKiBSZXRyaWV2ZSBudW1iZXIgb2YgRFRScyBhdmFpbGFibGUuIFRoaXMgZnVuY3Rpb24gY2FuIG5vdCBiZSBjYWxsZWQKICAqIGZyb20gZGF0YSBwYXRoLiByaW5nX2luaXRpYWxfcmVwbGVuaXNoaSgpIGlzIHRoZSBvbmx5IHVzZXIuCiAgKi8KIGludCB2eGdlX2h3X2NoYW5uZWxfZHRyX2NvdW50KHN0cnVjdCBfX3Z4Z2VfaHdfY2hhbm5lbCAqY2hhbm5lbCkKQEAgLTIwNjAsNyArMjA2MCw3IEBACiAKIAl2cGF0aCA9IHZwLT52cGF0aDsKIAotCS8qIEVuYWJsZSBwcm9taXNjb3VzIG1vZGUgZm9yIGZ1bmN0aW9uIDAgb25seSAqLworCS8qIEVuYWJsZSBwcm9taXNjdW91cyBtb2RlIGZvciBmdW5jdGlvbiAwIG9ubHkgKi8KIAlpZiAoISh2cGF0aC0+aGxkZXYtPmFjY2Vzc19yaWdodHMgJgogCQlWWEdFX0hXX0RFVklDRV9BQ0NFU1NfUklHSFRfTVJQQ0lNKSkKIAkJcmV0dXJuIFZYR0VfSFdfT0s7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5oIGIvZHJpdmVycy9uZXQvdnhnZS92eGdlLXRyYWZmaWMuaAppbmRleCA5ZDlkZmRhLi42YzJmYzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC92eGdlL3Z4Z2UtdHJhZmZpYy5oCisrKyBiL2RyaXZlcnMvbmV0L3Z4Z2UvdnhnZS10cmFmZmljLmgKQEAgLTY4MSw3ICs2ODEsNyBAQAogICogQHJ4X3JlZF9kaXNjYXJkOiBDb3VudCBvZiByZWNlaXZlZCBmcmFtZXMgdGhhdCBhcmUgZGlzY2FyZGVkIGJlY2F1c2Ugb2YgUkVECiAgKiAgICAgICAgICAgIChSYW5kb20gRWFybHkgRGlzY2FyZCkuCiAgKiBAcnhfeGdtaWlfY3RybF9lcnJfY250OiBNYWludGFpbnMgYSBjb3VudCBvZiB1bmV4cGVjdGVkIG9yIG1pc3BsYWNlZCBjb250cm9sCi0gKiAgICAgICAgICAgIGNoYXJhY3RlcnMgb2NjdXJpbmcgYmV0d2VlbiB0aW1lcyBvZiBub3JtYWwgZGF0YSB0cmFuc21pc3Npb24KKyAqICAgICAgICAgICAgY2hhcmFjdGVycyBvY2N1cnJpbmcgYmV0d2VlbiB0aW1lcyBvZiBub3JtYWwgZGF0YSB0cmFuc21pc3Npb24KICAqICAgICAgICAgICAgKGkuZS4gbm90IGluY2x1ZGVkIGluIFJYX1hHTUlJX0RBVEFfRVJSX0NOVCkuIFRoaXMgY291bnRlciBpcwogICogICAgICAgICAgICBpbmNyZW1lbnRlZCB3aGVuIGVpdGhlciAtCiAgKiAgICAgICAgICAgIDEpIFRoZSBSZWNvbmNpbGlhdGlvbiBTdWJsYXllciAoUlMpIGlzIGV4cGVjdGluZyBvbmUgY29udHJvbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2Nvc2EuYyBiL2RyaXZlcnMvbmV0L3dhbi9jb3NhLmMKaW5kZXggMTBiYWZkNS4uNmZiNmY4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2Nvc2EuYworKysgYi9kcml2ZXJzL25ldC93YW4vY29zYS5jCkBAIC0zMjksNyArMzI5LDcgQEAKIHN0YXRpYyBpbnQgcmVhZG1lbShzdHJ1Y3QgY29zYV9kYXRhICpjb3NhLCBjaGFyIF9fdXNlciAqZGF0YSwgaW50IGFkZHIsIGludCBsZW4pOwogc3RhdGljIGludCBjb3NhX3Jlc2V0X2FuZF9yZWFkX2lkKHN0cnVjdCBjb3NhX2RhdGEgKmNvc2EsIGNoYXIgKmlkKTsKIAotLyogQXV4aWxsaWFyeSBmdW5jdGlvbnMgKi8KKy8qIEF1eGlsaWFyeSBmdW5jdGlvbnMgKi8KIHN0YXRpYyBpbnQgZ2V0X3dhaXRfZGF0YShzdHJ1Y3QgY29zYV9kYXRhICpjb3NhKTsKIHN0YXRpYyBpbnQgcHV0X3dhaXRfZGF0YShzdHJ1Y3QgY29zYV9kYXRhICpjb3NhLCBpbnQgZGF0YSk7CiBzdGF0aWMgaW50IHB1dGhleG51bWJlcihzdHJ1Y3QgY29zYV9kYXRhICpjb3NhLCBpbnQgbnVtYmVyKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9kc2NjNC5jIGIvZHJpdmVycy9uZXQvd2FuL2RzY2M0LmMKaW5kZXggNDU3OGU1Yi4uYWNiOWVhOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2RzY2M0LmMKKysrIGIvZHJpdmVycy9uZXQvd2FuL2RzY2M0LmMKQEAgLTU2LDcgKzU2LDcgQEAKICAqIElWLiBOb3RlcwogICogVGhlIGN1cnJlbnQgZXJyb3IgKFhEVSwgUkZPKSByZWNvdmVyeSBjb2RlIGlzIHVudGVzdGVkLgogICogU28gZmFyLCBSRE8gdGFrZXMgaGlzIFJYIGNoYW5uZWwgZG93biBhbmQgdGhlIHJpZ2h0IHNlcXVlbmNlIHRvIGVuYWJsZSBpdAotICogYWdhaW4gaXMgc3RpbGwgYSBtaXN0ZXJ5LiBJZiBSRE8gaGFwcGVucywgcGxhbiBhIHJlYm9vdC4gTW9yZSBkZXRhaWxzCisgKiBhZ2FpbiBpcyBzdGlsbCBhIG15c3RlcnkuIElmIFJETyBoYXBwZW5zLCBwbGFuIGEgcmVib290LiBNb3JlIGRldGFpbHMKICAqIGluIHRoZSBjb2RlIChOQjogYXMgdGhpcyBoYXBwZW5zLCBUWCBzdGlsbCB3b3JrcykuCiAgKiBEb24ndCBtZXNzIHRoZSBjYWJsZXMgZHVyaW5nIG9wZXJhdGlvbiwgZXNwZWNpYWxseSBvbiBEVEUgcG9ydHMuIEkgZG9uJ3QKICAqIHN1Z2dlc3QgaXQgZm9yIERDRSBlaXRoZXIgYnV0IGF0IGxlYXN0IG9uZSBjYW4gZ2V0IHNvbWUgbWVzc2FnZXMgaW5zdGVhZApAQCAtMTA2NSw3ICsxMDY1LDcgQEAKIAogCS8qCiAJICogRHVlIHRvIHZhcmlvdXMgYnVncywgdGhlcmUgaXMgbm8gd2F5IHRvIHJlbGlhYmx5IHJlc2V0IGEKLQkgKiBzcGVjaWZpYyBwb3J0IChtYW51ZmFjdHVyZXIncyBkZXBlbmRhbnQgc3BlY2lhbCBQQ0kgI1JTVCB3aXJpbmcKKwkgKiBzcGVjaWZpYyBwb3J0IChtYW51ZmFjdHVyZXIncyBkZXBlbmRlbnQgc3BlY2lhbCBQQ0kgI1JTVCB3aXJpbmcKIAkgKiBhcGFydDogaXQgYWZmZWN0cyBhbGwgcG9ydHMpLiBUaHVzIHRoZSBkZXZpY2UgZ29lcyBpbiB0aGUgYmVzdAogCSAqIHNpbGVudCBtb2RlIHBvc3NpYmxlIGF0IGRzY2M0X2Nsb3NlKCkgdGltZSBhbmQgc2ltcGx5IGNsYWltcyB0bwogCSAqIGJlIHVwIGlmIGl0J3Mgb3BlbmVkIGFnYWluLiBJdCBzdGlsbCBpc24ndCBwb3NzaWJsZSB0byBjaGFuZ2UKQEAgLTEyMzAsOSArMTIzMCw5IEBACiAgKiAgIHNjYWxpbmcuIE9mIGNvdXJzZSBzb21lIHJvdW5kaW5nIG1heSB0YWtlIHBsYWNlLgogICogLSBubyBoaWdoIHNwZWVkIG1vZGUgKDQwTWIvcykuIE1heSBiZSB0cml2aWFsIHRvIGRvIGJ1dCBJIGRvbid0IGhhdmUgYW4KICAqICAgYXBwcm9wcmlhdGUgZXh0ZXJuYWwgY2xvY2tpbmcgZGV2aWNlIGZvciB0ZXN0aW5nLgotICogLSBubyB0aW1lLXNsb3QvY2xvY2sgbW9kZSA1OiBzaGFtZWxlc3MgbGF6eW5lc3MuCisgKiAtIG5vIHRpbWUtc2xvdC9jbG9jayBtb2RlIDU6IHNoYW1lbGVzcyBsYXppbmVzcy4KICAqCi0gKiBUaGUgY2xvY2sgc2lnbmFscyB3aXJpbmcgY2FuIGJlIChpcyA/KSBtYW51ZmFjdHVyZXIgZGVwZW5kYW50LiBHb29kIGx1Y2suCisgKiBUaGUgY2xvY2sgc2lnbmFscyB3aXJpbmcgY2FuIGJlIChpcyA/KSBtYW51ZmFjdHVyZXIgZGVwZW5kZW50LiBHb29kIGx1Y2suCiAgKgogICogQklHIEZBVCBXQVJOSU5HOiBpZiB0aGUgZGV2aWNlIGlzbid0IHByb3ZpZGVkIGVub3VnaCBjbG9ja2luZyBzaWduYWwsIGl0CiAgKiB3b24ndCBwYXNzIHRoZSBpbml0IHNlcXVlbmNlLiBGb3IgZXhhbXBsZSwgc3RyYWlnaHQgYmFjay10by1iYWNrIERURSB3aXRob3V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93YW4vaG9zdGVzc19zdjExLmMgYi9kcml2ZXJzL25ldC93YW4vaG9zdGVzc19zdjExLmMKaW5kZXggNDhlZGM1Zi4uZTgxNzU4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2hvc3Rlc3Nfc3YxMS5jCisrKyBiL2RyaXZlcnMvbmV0L3dhbi9ob3N0ZXNzX3N2MTEuYwpAQCAtMTUsNyArMTUsNyBAQAogICoJVGhlIGhhcmR3YXJlIGRvZXMgdGhlIGJ1cyBoYW5kbGluZyB0byBhdm9pZCB0aGUgbmVlZCBmb3IgZGVsYXlzIGJldHdlZW4KICAqCXRvdWNoaW5nIGNvbnRyb2wgcmVnaXN0ZXJzLgogICoKLSAqCVBvcnQgQiBpc250IHdpcmVkICh3aHkgLSBiZWF0cyBtZSkKKyAqCVBvcnQgQiBpc24ndCB3aXJlZCAod2h5IC0gYmVhdHMgbWUpCiAgKgogICoJR2VuZXJpYyBIRExDIHBvcnQgQ29weXJpZ2h0IChDKSAyMDA4IEtyenlzenRvZiBIYWxhc2EgPGtoY0BwbS53YXcucGw+CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9peHA0eHhfaHNzLmMgYi9kcml2ZXJzL25ldC93YW4vaXhwNHh4X2hzcy5jCmluZGV4IDZjNTcxZTEuLmYxZTE2NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dhbi9peHA0eHhfaHNzLmMKKysrIGIvZHJpdmVycy9uZXQvd2FuL2l4cDR4eF9oc3MuYwpAQCAtMTc4LDcgKzE3OCw3IEBACiAgKgogICogVGhlIHJlc3VsdGluZyBhdmVyYWdlIGNsb2NrIGZyZXF1ZW5jeSAoYXNzdW1pbmcgMzMuMzMzIE1IeiBvc2NpbGxhdG9yKSBpczoKICAqIGZyZXEgPSA2Ni42NjYgTUh6IC8gKEEgKyAoQiArIDEpIC8gKEMgKyAxKSkKLSAqIG1pbnVtdW0gZnJlcSA9IDY2LjY2NiBNSHogLyAoQSArIDEpCisgKiBtaW5pbXVtIGZyZXEgPSA2Ni42NjYgTUh6IC8gKEEgKyAxKQogICogbWF4aW11bSBmcmVxID0gNjYuNjY2IE1IeiAvIEEKICAqCiAgKiBFeGFtcGxlOiBBID0gMiwgQiA9IDIsIEMgPSA3LCBDTE9DS19DUiByZWdpc3RlciA9IDIgPDwgMjIgfCAyIDw8IDEyIHwgNwpAQCAtMjMwLDcgKzIzMCw3IEBACiAjZGVmaW5lIFBLVF9QSVBFX01PREVfV1JJVEUJCTB4NTcKIAogLyogSERMQyBwYWNrZXQgc3RhdHVzIHZhbHVlcyAtIGRlc2MtPnN0YXR1cyAqLwotI2RlZmluZSBFUlJfU0hVVERPV04JCTEgLyogc3RvcCBvciBzaHV0ZG93biBvY2N1cnJhbmNlICovCisjZGVmaW5lIEVSUl9TSFVURE9XTgkJMSAvKiBzdG9wIG9yIHNodXRkb3duIG9jY3VycmVuY2UgKi8KICNkZWZpbmUgRVJSX0hETENfQUxJR04JCTIgLyogSERMQyBhbGlnbm1lbnQgZXJyb3IgKi8KICNkZWZpbmUgRVJSX0hETENfRkNTCQkzIC8qIEhETEMgRnJhbWUgQ2hlY2sgU3VtIGVycm9yICovCiAjZGVmaW5lIEVSUl9SWEZSRUVfUV9FTVBUWQk0IC8qIFJYLWZyZWUgcXVldWUgYmVjYW1lIGVtcHR5IHdoaWxlIHJlY2VpdmluZwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfbWFpbi5jCmluZGV4IDcwZmViODQuLmI3ZjIzNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dhbi9sbWMvbG1jX21haW4uYworKysgYi9kcml2ZXJzL25ldC93YW4vbG1jL2xtY19tYWluLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAgKgogICAqIExpbnV4IGRyaXZlciBub3RlczoKICAgKiBMaW51eCB1c2VzIHRoZSBkZXZpY2Ugc3RydWN0IGxtY19wcml2YXRlIHRvIHBhc3MgcHJpdmF0ZSBpbmZvcm1hdGlvbgotICAqIGFycm91bmQuCisgICogYXJvdW5kLgogICAqCiAgICogVGhlIGluaXRpYWxpemF0aW9uIHBvcnRpb24gb2YgdGhpcyBkcml2ZXIgKHRoZSBsbWNfcmVzZXQoKSBhbmQgdGhlCiAgICogbG1jX2RlY19yZXNldCgpIGZ1bmN0aW9ucywgYXMgd2VsbCBhcyB0aGUgbGVkIGNvbnRyb2xzIGFuZCB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dhbi9sbWMvbG1jX3Zhci5oIGIvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfdmFyLmgKaW5kZXggNjVkMDE5Ny4uMDFhZDQ1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfdmFyLmgKKysrIGIvZHJpdmVycy9uZXQvd2FuL2xtYy9sbWNfdmFyLmgKQEAgLTE4MCw3ICsxODAsNyBAQAogCiAKIC8qCi0gKiBDYXJlZnVsbCwgbG9vayBhdCB0aGUgZGF0YSBzaGVldCwgdGhlcmUncyBtb3JlIHRvIHRoaXMKKyAqIENhcmVmdWwsIGxvb2sgYXQgdGhlIGRhdGEgc2hlZXQsIHRoZXJlJ3MgbW9yZSB0byB0aGlzCiAgKiBzdHJ1Y3R1cmUgdGhhbiBtZWV0cyB0aGUgZXllLiAgSXQgc2hvdWxkIHByb2JhYmx5IGJlOgogICoKICAqIHN0cnVjdCB0dWxpcF9kZXNjX3QgewpAQCAtMzgwLDcgKzM4MCw3IEBACiAvKiBDU1I2IHNldHRpbmdzICovCiAjZGVmaW5lIE9QRVJBVElPTl9NT0RFICAweDAwMDAwMjAwIC8qIEZ1bGwgRHVwbGV4ICAgICAgKi8KICNkZWZpbmUgUFJPTUlTQ19NT0RFICAgIDB4MDAwMDAwNDAgLyogUHJvbWlzY3VvdXMgTW9kZSAqLwotI2RlZmluZSBSRUNJRVZFX0FMTCAgICAgMHg0MDAwMDAwMCAvKiBSZWNpZXZlIEFsbCAgICAgICovCisjZGVmaW5lIFJFQ0lFVkVfQUxMICAgICAweDQwMDAwMDAwIC8qIFJlY2VpdmUgQWxsICAgICAgKi8KICNkZWZpbmUgUEFTU19CQURfRlJBTUVTIDB4MDAwMDAwMDggLyogUGFzcyBCYWQgRnJhbWVzICAqLwogCiAvKiBEZWMgY29udHJvbCByZWdpc3RlcnMgIENTUjYgYXMgd2VsbCAqLwpAQCAtMzk4LDcgKzM5OCw3IEBACiAjZGVmaW5lIFRVTElQX0NNRF9SRUNFSVZFQUxMICAgIDB4NDAwMDAwMDBMIC8qIChSVykgIFJlY2VpdmVsIGFsbCBmcmFtZXM/ICovCiAjZGVmaW5lIFRVTElQX0NNRF9NVVNUQkVPTkUgICAgIDB4MDIwMDAwMDBMIC8qIChSVykgIE11c3QgQmUgT25lICgyMTE0MCkgKi8KICNkZWZpbmUgVFVMSVBfQ01EX1RYVEhSU0hMRENUTCAgMHgwMDQwMDAwMEwgLyogKFJXKSAgVHJhbnNtaXQgVGhyZXNob2xkIE1vZGUgKDIxMTQwKSAqLwotI2RlZmluZSBUVUxJUF9DTURfU1RPUkVGV0QgICAgICAweDAwMjAwMDAwTCAvKiAoUlcpICBTdG9yZSBhbmQgRm93YXJkICgyMTE0MCkgKi8KKyNkZWZpbmUgVFVMSVBfQ01EX1NUT1JFRldEICAgICAgMHgwMDIwMDAwMEwgLyogKFJXKSAgU3RvcmUgYW5kIEZvcndhcmQgKDIxMTQwKSAqLwogI2RlZmluZSBUVUxJUF9DTURfTk9IRUFSVEJFQVQgICAweDAwMDgwMDAwTCAvKiAoUlcpICBObyBIZWFydGJlYXQgKDIxMTQwKSAqLwogI2RlZmluZSBUVUxJUF9DTURfUE9SVFNFTEVDVCAgICAweDAwMDQwMDAwTCAvKiAoUlcpICBQb3N0IFNlbGVjdCAoMTAwTWIpICgyMTE0MCkgKi8KICNkZWZpbmUgVFVMSVBfQ01EX0ZVTExEVVBMRVggICAgMHgwMDAwMDIwMEwgLyogKFJXKSAgRnVsbCBEdXBsZXggTW9kZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2FuL3o4NTIzMC5jIGIvZHJpdmVycy9uZXQvd2FuL3o4NTIzMC5jCmluZGV4IDkzOTU2ODYuLjA4MDYyMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dhbi96ODUyMzAuYworKysgYi9kcml2ZXJzL25ldC93YW4vejg1MjMwLmMKQEAgLTU0Miw3ICs1NDIsNyBAQAogCQl6ODUzMF90eChjaGFuKTsKIAkJcmV0dXJuOwogCX0KLQkvKiBUaGlzIHNob3VsZG50IG9jY3VyIGluIERNQSBtb2RlICovCisJLyogVGhpcyBzaG91bGRuJ3Qgb2NjdXIgaW4gRE1BIG1vZGUgKi8KIAlwcmludGsoS0VSTl9FUlIgIkRNQSB0eCAtIGJvZ3VzIGV2ZW50IVxuIik7CiAJejg1MzBfdHgoY2hhbik7CiB9CkBAIC0xMjE5LDcgKzEyMTksNyBAQAogICoJQGlvOiB0aGUgcG9ydCB2YWx1ZSBpbiBxdWVzdGlvbgogICoKICAqCURlc2NyaWJlIGEgWjg1MzAgaW4gYSBzdGFuZGFyZCBmb3JtYXQuIFdlIG11c3QgcGFzcyB0aGUgSS9PIGFzCi0gKgl0aGUgcG9ydCBvZmZzZXQgaXNudCBwcmVkaWN0YWJsZS4gVGhlIG1haW4gcmVhc29uIGZvciB0aGlzIGZ1bmN0aW9uCisgKgl0aGUgcG9ydCBvZmZzZXQgaXNuJ3QgcHJlZGljdGFibGUuIFRoZSBtYWluIHJlYXNvbiBmb3IgdGhpcyBmdW5jdGlvbgogICoJaXMgdG8gdHJ5IGFuZCBnZXQgYSBjb21tb24gZm9ybWF0IG9mIHJlcG9ydC4KICAqLwogCkBAIC0xNTg4LDcgKzE1ODgsNyBAQAogCQl1bnNpZ25lZCBsb25nIGZsYWdzOwogCQkKIAkJLyoKLQkJICoJQ29tcGxldGUgdGhpcyBETUEuIE5lY2Nlc3NhcnkgdG8gZmluZCB0aGUgbGVuZ3RoCisJCSAqCUNvbXBsZXRlIHRoaXMgRE1BLiBOZWNlc3NhcnkgdG8gZmluZCB0aGUgbGVuZ3RoCiAJCSAqLwkJCiAJCSAKIAkJZmxhZ3M9Y2xhaW1fZG1hX2xvY2soKTsKQEAgLTE2NTcsNyArMTY1Nyw3IEBACiAJCSAqCWZpZm8gbGVuZ3RoIGZvciB0aGlzLiBUaHVzIHdlIHdhbnQgdG8gZmxpcCB0byB0aGUgbmV3CiAJCSAqCWJ1ZmZlciBhbmQgdGhlbiBtZXNzIGFyb3VuZCBjb3B5aW5nIGFuZCBhbGxvY2F0aW5nCiAJCSAqCXRoaW5ncy4gRm9yIHRoZSBjdXJyZW50IGNhc2UgaXQgZG9lc24ndCBtYXR0ZXIgYnV0Ci0JCSAqCWlmIHlvdSBidWlsZCBhIHN5c3RlbSB3aGVyZSB0aGUgc3luYyBpcnEgaXNudCBibG9ja2VkCisJCSAqCWlmIHlvdSBidWlsZCBhIHN5c3RlbSB3aGVyZSB0aGUgc3luYyBpcnEgaXNuJ3QgYmxvY2tlZAogCQkgKglieSB0aGUga2VybmVsIElSUSBkaXNhYmxlIHRoZW4geW91IG5lZWQgb25seSBibG9jayB0aGUKIAkJICoJc3luYyBJUlEgZm9yIHRoZSBSVF9MT0NLIGFyZWEuCiAJCSAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vY29udHJvbC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2NvbnRyb2wuYwppbmRleCAxMmI4NGVkLi43MjdkNzI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vY29udHJvbC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9jb250cm9sLmMKQEAgLTM3OCw3ICszNzgsNyBAQAogICogdGhlIGRldmljZSdzIHN0YXRlIGFzIHNvbWV0aW1lcyB3ZSBuZWVkIHRvIGRvIGEgbGluay1yZW5ldyAodGhlIEJTCiAgKiB3YW50cyB1cyB0byByZW5ldyBhIERIQ1AgbGVhc2UsIGZvciBleGFtcGxlKS4KICAqCi0gKiBJbiBmYWN0LCBkb2Mgc2F5cyB0aGF0IGV2ZXJ5dGltZSB3ZSBnZXQgYSBsaW5rLXVwLCB3ZSBzaG91bGQgZG8gYQorICogSW4gZmFjdCwgZG9jIHNheXMgdGhhdCBldmVyeSB0aW1lIHdlIGdldCBhIGxpbmstdXAsIHdlIHNob3VsZCBkbyBhCiAgKiBESENQIG5lZ290aWF0aW9uLi4uCiAgKi8KIHN0YXRpYwpAQCAtNjc1LDcgKzY3NSw3IEBACiAgKiAgLSB0aGUgYWNrIG1lc3NhZ2Ugd2Fzbid0IGZvcm1hdHRlZCBjb3JyZWN0bHkKICAqCiAgKiBUaGUgcmV0dXJuZWQgc2tiIGhhcyBiZWVuIGFsbG9jYXRlZCB3aXRoIHdpbWF4X21zZ190b191c2VyX2FsbG9jKCksCi0gKiBpdCBjb250YWlucyB0aGUgcmVwb25zZSBpbiBhIG5ldGxpbmsgYXR0cmlidXRlIGFuZCBpcyByZWFkeSB0byBiZQorICogaXQgY29udGFpbnMgdGhlIHJlc3BvbnNlIGluIGEgbmV0bGluayBhdHRyaWJ1dGUgYW5kIGlzIHJlYWR5IHRvIGJlCiAgKiBwYXNzZWQgdXAgdG8gdXNlciBzcGFjZSB3aXRoIHdpbWF4X21zZ190b191c2VyX3NlbmQoKS4gVG8gYWNjZXNzCiAgKiB0aGUgcGF5bG9hZCBhbmQgaXRzIGxlbmd0aCwgdXNlIHdpbWF4X21zZ197ZGF0YSxsZW59KCkgb24gdGhlIHNrYi4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZHJpdmVyLmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZHJpdmVyLmMKaW5kZXggNjViYzMzNC4uNDdjYWU3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2RyaXZlci5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9kcml2ZXIuYwpAQCAtNjU0LDcgKzY1NCw3IEBACiAJaWYgKHJlc3VsdCA9PSAtRVVDTEVBTikgewogCQkvKgogCQkgKiBXZSBjb21lIGhlcmUgYmVjYXVzZSB0aGUgcmVzZXQgZHVyaW5nIG9wZXJhdGlvbmFsIG1vZGUKLQkJICogd2Fzbid0IHN1Y2Nlc3N1bGx5IGRvbmUgYW5kIG5lZWQgdG8gcHJvY2VlZCB0byBhIGJ1cworCQkgKiB3YXNuJ3Qgc3VjY2Vzc2Z1bGx5IGRvbmUgYW5kIG5lZWQgdG8gcHJvY2VlZCB0byBhIGJ1cwogCQkgKiByZXNldC4gRm9yIHRoZSBkZXZfcmVzZXRfaGFuZGxlKCkgdG8gYmUgYWJsZSB0byBoYW5kbGUKIAkJICogdGhlIHJlc2V0IGV2ZW50IGxhdGVyIHByb3Blcmx5LCB3ZSByZXN0b3JlIGJvb3RfbW9kZSBiYWNrCiAJCSAqIHRvIHRoZSBzdGF0ZSBiZWZvcmUgcHJldmlvdXMgcmVzZXQuIGllOiBqdXN0IGxpa2Ugd2UgYXJlCkBAIC03NTUsNyArNzU1LDcgQEAKICAqIEFsbG9jIHRoZSBjb21tYW5kIGFuZCBhY2sgYnVmZmVycyBmb3IgYm9vdCBtb2RlCiAgKgogICogR2V0IHRoZSBidWZmZXJzIG5lZWRlZCB0byBkZWFsIHdpdGggYm9vdCBtb2RlIG1lc3NhZ2VzLiAgVGhlc2UKLSAqIGJ1ZmZlcnMgbmVlZCB0byBiZSBhbGxvY2F0ZWQgYmVmb3JlIHRoZSBzZGlvIHJlY2lldmUgaXJxIGlzIHNldHVwLgorICogYnVmZmVycyBuZWVkIHRvIGJlIGFsbG9jYXRlZCBiZWZvcmUgdGhlIHNkaW8gcmVjZWl2ZSBpcnEgaXMgc2V0dXAuCiAgKi8KIHN0YXRpYwogaW50IGkyNDAwbV9ibV9idWZfYWxsb2Moc3RydWN0IGkyNDAwbSAqaTI0MDBtKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2Z3LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZncuYwppbmRleCA4YjU1YTViLi44NWRhZGQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZncuYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vZncuYwpAQCAtNTQsNyArNTQsNyBAQAogICogZW5kcG9pbnQgYW5kIHJlYWQgZnJvbSBpdCBpbiB0aGUgbm90aWZpY2F0aW9uIGVuZHBvaW50LiBJbiBTRElPIHdlCiAgKiB0YWxrIHRvIGl0IHZpYSB0aGUgd3JpdGUgYWRkcmVzcyBhbmQgcmVhZCBmcm9tIHRoZSByZWFkIGFkZHJlc3MuCiAgKgotICogVXBvbiBlbnRyYW5jZSB0byBib290IG1vZGUsIHRoZSBkZXZpY2Ugc2VuZHMgKHByZWNlZWRlZCB3aXRoIGEgZmV3CisgKiBVcG9uIGVudHJhbmNlIHRvIGJvb3QgbW9kZSwgdGhlIGRldmljZSBzZW5kcyAocHJlY2VkZWQgd2l0aCBhIGZldwogICogemVybyBsZW5ndGggcGFja2V0cyAoWkxQcykgb24gdGhlIG5vdGlmaWNhdGlvbiBlbmRwb2ludCBpbiBVU0IpIGEKICAqIHJlYm9vdCBiYXJrZXIgKDQgbGUzMiB3b3JkcyB3aXRoIHRoZSBzYW1lIHZhbHVlKS4gV2UgYWNrIGl0IGJ5CiAgKiBzZW5kaW5nIHRoZSBzYW1lIGJhcmtlciB0byB0aGUgZGV2aWNlLiBUaGUgZGV2aWNlIGFja3Mgd2l0aCBhCkBAIC0xNTg5LDcgKzE1ODksNyBAQAogCQlpMjQwMG0tPmZ3X25hbWUgPSBmd19uYW1lOwogCQlyZXQgPSBpMjQwMG1fZndfYm9vdHN0cmFwKGkyNDAwbSwgZncsIGZsYWdzKTsKIAkJcmVsZWFzZV9maXJtd2FyZShmdyk7Ci0JCWlmIChyZXQgPj0gMCkJLyogZmlybXdhcmUgbG9hZGVkIHN1Y2Nlc2Z1bGx5ICovCisJCWlmIChyZXQgPj0gMCkJLyogZmlybXdhcmUgbG9hZGVkIHN1Y2Nlc3NmdWxseSAqLwogCQkJYnJlYWs7CiAJCWkyNDAwbS0+ZndfbmFtZSA9IE5VTEw7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS11c2IuaCBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9pMjQwMG0tdXNiLmgKaW5kZXggZWI4MDI0My4uNjY1MGZkZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS11c2IuaAorKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLXVzYi5oCkBAIC0xMDUsMTQgKzEwNSwxNCBAQAogICoKICAqIEBlZGM6IHBvaW50ZXIgdG8gZXJyb3IgZGVuc2l0eSBjb3VudGVyLgogICogQG1heF9lcnI6IG1heGltdW0gbnVtYmVyIG9mIGVycm9ycyB3ZSBjYW4gYWNjZXB0IG92ZXIgdGhlIHRpbWVmcmFtZQotICogQHRpbWVmcmFtZTogbGVuZ2h0IG9mIHRoZSB0aW1lZnJhbWUgKGluIGppZmZpZXMpLgorICogQHRpbWVmcmFtZTogbGVuZ3RoIG9mIHRoZSB0aW1lZnJhbWUgKGluIGppZmZpZXMpLgogICoKICAqIFJldHVybnM6ICEwIDEgaWYgbWF4aW11bSBhY2NlcHRhYmxlIGVycm9ycyBwZXIgdGltZWZyYW1lIGhhcyBiZWVuCiAgKiAgICAgZXhjZWVkZWQuIDAgb3RoZXJ3aXNlLgogICoKICAqIFRoaXMgaXMgd2F5IHRvIGRldGVybWluZSBpZiB0aGUgbnVtYmVyIG9mIGFjY2VwdGFibGUgZXJyb3JzIHBlciB0aW1lCiAgKiBwZXJpb2QgaGFzIGJlZW4gZXhjZWVkZWQuIEl0IGlzIG5vdCBhY2N1cmF0ZSBhcyB0aGVyZSBhcmUgY2FzZXMgaW4gd2hpY2gKLSAqIHRoaXMgc2NoZW1lIHdpbGwgbm90IHdvcmssIGZvciBleGFtcGxlIGlmIHRoZXJlIGFyZSBwZXJpb2RpYyBvY2N1cmVuY2VzCisgKiB0aGlzIHNjaGVtZSB3aWxsIG5vdCB3b3JrLCBmb3IgZXhhbXBsZSBpZiB0aGVyZSBhcmUgcGVyaW9kaWMgb2NjdXJyZW5jZXMKICAqIG9mIGVycm9ycyB0aGF0IHN0cmFkZGxlIHVwZGF0ZXMgdG8gdGhlIHN0YXJ0IHRpbWUuIFRoaXMgc2NoZW1lIGlzCiAgKiBzdWZmaWNpZW50IGZvciBvdXIgdXNhZ2UuCiAgKgpAQCAtMjA0LDcgKzIwNCw3IEBACiAgKiAgICAgdXNiX2F1dG9wbV9nZXQvcHV0X2ludGVyZmFjZSgpIGJhcnJpZXJzIHdoZW4gZXhlY3V0aW5nCiAgKiAgICAgY29tbWFuZHMuIFNlZSBkb2MgaW4gaTI0MDBtdV9zdXNwZW5kKCkgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgKgotICogQHJ4X3NpemVfYXV0b19zaHJpbms6IGlmIHRydWUsIHRoZSByeF9zaXplIGlzIHNocmlua2VkCisgKiBAcnhfc2l6ZV9hdXRvX3NocmluazogaWYgdHJ1ZSwgdGhlIHJ4X3NpemUgaXMgc2hydW5rCiAgKiAgICAgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgYXZlcmFnZSBzaXplIG9mIHRoZSByZWNlaXZlZAogICogICAgIHRyYW5zYWN0aW9ucy4gVGhpcyBhbGxvd3MgdGhlIHJlY2VpdmUgY29kZSB0byBhbGxvY2F0ZSBzbWFsbGVyCiAgKiAgICAgY2h1bmtzIG9mIG1lbW9yeSBhbmQgdGh1cyByZWR1Y2UgcHJlc3N1cmUgb24gdGhlIG1lbW9yeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS5oIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL2kyNDAwbS5oCmluZGV4IDAzMGNiZmQuLjVlYWNjNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9pMjQwMG0uaAorKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vaTI0MDBtLmgKQEAgLTUyNiw3ICs1MjYsNyBAQAogICoKICAqIEBiYXJrZXI6IGJhcmtlciB0eXBlIHRoYXQgdGhlIGRldmljZSB1c2VzOyB0aGlzIGlzIGluaXRpYWxpemVkIGJ5CiAgKiAgICAgaTI0MDBtX2lzX2Jvb3RfYmFya2VyKCkgdGhlIGZpcnN0IHRpbWUgaXQgaXMgY2FsbGVkLiBUaGVuIGl0Ci0gKiAgICAgd29uJ3QgY2hhbmdlIGR1cmluZyB0aGUgbGlmZSBjeWNsZSBvZiB0aGUgZGV2aWNlIGFuZCBldmVyeXRpbWUKKyAqICAgICB3b24ndCBjaGFuZ2UgZHVyaW5nIHRoZSBsaWZlIGN5Y2xlIG9mIHRoZSBkZXZpY2UgYW5kIGV2ZXJ5IHRpbWUKICAqICAgICBhIGJvb3QgYmFya2VyIGlzIHJlY2VpdmVkLCBpdCBpcyBqdXN0IHZlcmlmaWVkIGZvciBpdCBiZWluZyB0aGUKICAqICAgICBzYW1lLgogICoKQEAgLTkyOCw3ICs5MjgsNyBAQAogCXN0cnVjdCBpMjQwMG0gKiwgY29uc3Qgc3RydWN0IGkyNDAwbV90bHZfcmZfc3dpdGNoZXNfc3RhdHVzICopOwogCiAvKgotICogSGVscGVycyBmb3IgZmlybXdhcmUgYmFja3dhcmRzIGNvbXBhYmlsaXR5CisgKiBIZWxwZXJzIGZvciBmaXJtd2FyZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICoKICAqIEFzIHdlIGFpbSB0byBzdXBwb3J0IGF0IGxlYXN0IHRoZSBmaXJtd2FyZSB2ZXJzaW9uIHRoYXQgd2FzCiAgKiByZWxlYXNlZCB3aXRoIHRoZSBwcmV2aW91cyBrZXJuZWwvZHJpdmVyIHJlbGVhc2UsIHNvbWUgY29kZSB3aWxsIGJlCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vbmV0ZGV2LmMKaW5kZXggOTQ3NDJlMS4uMmVkZDhmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL25ldGRldi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9uZXRkZXYuYwpAQCAtMTY2LDcgKzE2Niw3IEBACiAJZF9mbnN0YXJ0KDMsIGRldiwgIih3cyAlcCBpMjQwMG0gJXAgc2tiICVwKVxuIiwgd3MsIGkyNDAwbSwgc2tiKTsKIAlyZXN1bHQgPSAtRUlOVkFMOwogCWlmIChza2IgPT0gTlVMTCkgewotCQlkZXZfZXJyKGRldiwgIldBS0UmVFg6IHNrYiBkaXNzYXBlYXJlZCFcbiIpOworCQlkZXZfZXJyKGRldiwgIldBS0UmVFg6IHNrYiBkaXNhcHBlYXJlZCFcbiIpOwogCQlnb3RvIG91dF9wdXQ7CiAJfQogCS8qIElmIHdlIGhhdmUsIHNvbWVob3csIGxvc3QgdGhlIGNvbm5lY3Rpb24gYWZ0ZXIgdGhpcyB3YXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9vcC1yZmtpbGwuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9vcC1yZmtpbGwuYwppbmRleCA5ZTAyYjkwLi5iMGRiYTM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vb3AtcmZraWxsLmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL29wLXJma2lsbC5jCkBAIC0yNyw3ICsyNyw3IEBACiAgKiAtIHJlcG9ydCBjaGFuZ2VzIGluIHRoZSBIVyBSRiBLaWxsIHN3aXRjaCBbd2l0aAogICogICB3aW1heF9yZmtpbGxfe3N3LGh3fV9yZXBvcnQoKSwgd2hpY2ggaGFwcGVucyB3aGVuIHdlIGRldGVjdCB0aG9zZQogICogICBpbmRpY2F0aW9ucyBjb21pbmcgdGhyb3VnaCBoYXJkd2FyZSByZXBvcnRzXS4gV2UgYWxzbyBkbyBpdCBvbgotICogICBpbml0aWFsaXphdGlvbiB0byBsZXQgdGhlIHN0YWNrIGtub3cgdGhlIGludGlhbCBIVyBzdGF0ZS4KKyAqICAgaW5pdGlhbGl6YXRpb24gdG8gbGV0IHRoZSBzdGFjayBrbm93IHRoZSBpbml0aWFsIEhXIHN0YXRlLgogICoKICAqIC0gaW1wbGVtZW50IGluZGljYXRpb25zIGZyb20gdGhlIHN0YWNrIHRvIGNoYW5nZSB0aGUgU1cgUkYgS2lsbAogICogICBzd2l0Y2ggKGNvbWluZyBmcm9tIHN5c2ZzLCB0aGUgd2ltYXggc3RhY2sgb3IgdXNlciBzcGFjZSkuCkBAIC03Myw3ICs3Myw3IEBACiAgKiBHZW5lcmljIE5ldGxpbmsgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gd2hlbiBhIG1lc3NhZ2UgaXMgc2VudCBmcm9tCiAgKiB1c2Vyc3BhY2UgdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZSBSRi1LaWxsIHN3aXRjaCBzdGF0dXMuCiAgKgotICogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgZGV2aWNlJ3Mgc29md2FyZSBSRi1LaWxsIHN3aXRjaCBzdGF0ZSB0bworICogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgZGV2aWNlJ3Mgc29mdHdhcmUgUkYtS2lsbCBzd2l0Y2ggc3RhdGUgdG8KICAqIG1hdGNoIHdoYXQgaXMgcmVxdWVzdGVkLgogICoKICAqIE5PVEU6IHRoZSBpMjQwMG0gaGFzIGEgc3RyaWN0IHN0YXRlIG1hY2hpbmU7IHdlIGNhbiBvbmx5IHNldCB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS9yeC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3J4LmMKaW5kZXggODQ0MTMzYi4uMmY5NGE4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3J4LmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3J4LmMKQEAgLTM0OSw3ICszNDksNyBAQAogICoKICAqIEZvciByZXBvcnRzOiBXZSBjYW4ndCBjbG9uZSB0aGUgb3JpZ2luYWwgc2tiIHdoZXJlIHRoZSBkYXRhIGlzCiAgKiBiZWNhdXNlIHdlIG5lZWQgdG8gc2VuZCB0aGlzIHVwIHZpYSBuZXRsaW5rOyBuZXRsaW5rIGhhcyB0byBhZGQKLSAqIGhlYWRlcnMgYW5kIHdlIGNhbid0IG92ZXJ3cml0ZSB3aGF0J3MgcHJlY2VlZGluZyB0aGUgcGF5bG9hZC4uLmFzCisgKiBoZWFkZXJzIGFuZCB3ZSBjYW4ndCBvdmVyd3JpdGUgd2hhdCdzIHByZWNlZGluZyB0aGUgcGF5bG9hZC4uLmFzCiAgKiBpdCBpcyBhbm90aGVyIG1lc3NhZ2UuIFNvIHdlIGp1c3QgZHVwIHRoZW0uCiAgKi8KIHN0YXRpYwpAQCAtNDI1LDcgKzQyNSw3IEBACiAgKgogICogQXMgaW4gaTI0MDBtX3J4X2N0bCgpLCB3ZSBjYW4ndCBjbG9uZSB0aGUgb3JpZ2luYWwgc2tiIHdoZXJlIHRoZQogICogZGF0YSBpcyBiZWNhdXNlIHdlIG5lZWQgdG8gc2VuZCB0aGlzIHVwIHZpYSBuZXRsaW5rOyBuZXRsaW5rIGhhcyB0bwotICogYWRkIGhlYWRlcnMgYW5kIHdlIGNhbid0IG92ZXJ3cml0ZSB3aGF0J3MgcHJlY2VlZGluZyB0aGUKKyAqIGFkZCBoZWFkZXJzIGFuZCB3ZSBjYW4ndCBvdmVyd3JpdGUgd2hhdCdzIHByZWNlZGluZyB0aGUKICAqIHBheWxvYWQuLi5hcyBpdCBpcyBhbm90aGVyIG1lc3NhZ2UuIFNvIHdlIGp1c3QgZHVwIHRoZW0uCiAgKi8KIHN0YXRpYwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3R4LmMgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdHguYwppbmRleCAzZjgxOWVmLi40YjMwZWQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdHguYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdHguYwpAQCAtMTQ5LDcgKzE0OSw3IEBACiAgKiAod2l0aCBhIG1vdmVkIG1lc3NhZ2UgaGVhZGVyIHRvIG1ha2Ugc3VyZSBpdCBpcyBzaXplLWFsaWduZWQgdG8KICAqIDE2KSwgVEFJTCByb29tIHRoYXQgd2FzIHVudXNhYmxlIChhbmQgdGh1cyBpcyBtYXJrZWQgd2l0aCBhIG1lc3NhZ2UKICAqIGhlYWRlciB0aGF0IHNheXMgJ3NraXAgdGhpcycpIGFuZCBhdCB0aGUgaGVhZCBvZiB0aGUgYnVmZmVyLCBhbgotICogaW1jb21wbGV0ZSBtZXNzYWdlIHdpdGggYSBjb3VwbGUgb2YgcGF5bG9hZHMuCisgKiBpbmNvbXBsZXRlIG1lc3NhZ2Ugd2l0aCBhIGNvdXBsZSBvZiBwYXlsb2Fkcy4KICAqCiAgKiBOICAgX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCiAgKiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfApAQCAtODE5LDcgKzgxOSw3IEBACiAgKiB0aGUgRklGIHRoYXQgaXMgcmVhZHkgZm9yIHRyYW5zbWlzc2lvbi4KICAqCiAgKiBJdCBzZXRzIHRoZSBzdGF0ZSBpbiBAaTI0MDBtIHRvIGluZGljYXRlIHRoZSBidXMtc3BlY2lmaWMgZHJpdmVyIGlzCi0gKiB0cmFuc2ZlcmluZyB0aGF0IG1lc3NhZ2UgKGkyNDAwbS0+dHhfbXNnX3NpemUpLgorICogdHJhbnNmZXJyaW5nIHRoYXQgbWVzc2FnZSAoaTI0MDBtLT50eF9tc2dfc2l6ZSkuCiAgKgogICogT25jZSB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGVkLCBjYWxsIGkyNDAwbV90eF9tc2dfc2VudCgpLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItZncuYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItZncuYwppbmRleCBiNThlYzU2Li4xZmRhNDZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLWZ3LmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1mdy5jCkBAIC0xNjksNyArMTY5LDcgQEAKICAqCiAgKiBDb21tYW5kIGNhbiBiZSBhIHJhdyBjb21tYW5kLCB3aGljaCByZXF1aXJlcyBubyBwcmVwYXJhdGlvbiAoYW5kCiAgKiB3aGljaCBtaWdodCBub3QgZXZlbiBiZSBmb2xsb3dpbmcgdGhlIGNvbW1hbmQgZm9ybWF0KS4gQ2hlY2tzIHRoYXQKLSAqIHRoZSByaWdodCBhbW91bnQgb2YgZGF0YSB3YXMgdHJhbnNmZXJlZC4KKyAqIHRoZSByaWdodCBhbW91bnQgb2YgZGF0YSB3YXMgdHJhbnNmZXJyZWQuCiAgKgogICogVG8gc2F0aXNmeSBVU0IgcmVxdWlyZW1lbnRzIChubyBvbnN0YWNrLCB2bWFsbG9jIG9yIGluIGRhdGEgc2VnbWVudAogICogYnVmZmVycyksIHdlIGNvcHkgdGhlIGNvbW1hbmQgdG8gaTI0MDBtLT5ibV9jbWRfYnVmIGFuZCBzZW5kIGl0IGZyb20KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItcnguYyBiL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItcnguYwppbmRleCBhMjY0ODNhLi5lMzI1NzY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXJ4LmMKKysrIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi1yeC5jCkBAIC01OCw3ICs1OCw3IEBACiAgKiAgICBhIHppbGxpb24gcmVhZHM7IGJ5IHNlcmlhbGl6aW5nLCB3ZSBhcmUgdGhyb3R0bGluZy4KICAqCiAgKiAgLSBSWCBkYXRhIHByb2Nlc3NpbmcgY2FuIGdldCBoZWF2eSBlbm91Z2ggc28gdGhhdCBpdCBpcyBub3QKLSAqICAgIGFwcHJvcGlhdGUgZm9yIGRvaW5nIGl0IGluIHRoZSBVU0IgY2FsbGJhY2s7IHRodXMgd2UgcnVuIGl0IGluIGEKKyAqICAgIGFwcHJvcHJpYXRlIGZvciBkb2luZyBpdCBpbiB0aGUgVVNCIGNhbGxiYWNrOyB0aHVzIHdlIHJ1biBpdCBpbiBhCiAgKiAgICBwcm9jZXNzIGNvbnRleHQuCiAgKgogICogV2UgcHJvdmlkZSBhIHJlYWQgYnVmZmVyIG9mIGFuIGFyYml0cmFyeSBzaXplIChzaG9ydCBvZiBhIHBhZ2UpOyBpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi10eC5jIGIvZHJpdmVycy9uZXQvd2ltYXgvaTI0MDBtL3VzYi10eC5jCmluZGV4IGM2NWI5OTcuLmFjMzU3YWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpbWF4L2kyNDAwbS91c2ItdHguYworKysgYi9kcml2ZXJzL25ldC93aW1heC9pMjQwMG0vdXNiLXR4LmMKQEAgLTE2OCw3ICsxNjgsNyBAQAogLyoKICAqIEdldCB0aGUgbmV4dCBUWCBtZXNzYWdlIGluIHRoZSBUWCBGSUZPIGFuZCBzZW5kIGl0IHRvIHRoZSBkZXZpY2UKICAqCi0gKiBOb3RlIHdlIGV4aXQgdGhlIGxvb3AgaWYgaTI0MDBtdV90eCgpIGZhaWxzOyB0aGF0IGZ1bnRpb24gb25seQorICogTm90ZSB3ZSBleGl0IHRoZSBsb29wIGlmIGkyNDAwbXVfdHgoKSBmYWlsczsgdGhhdCBmdW5jdGlvbiBvbmx5CiAgKiBmYWlscyBvbiBoYXJkIGVycm9yIChmYWlsaW5nIHRvIHR4IGEgYnVmZmVyIG5vdCBiZWluZyBvbmUgb2YgdGhlbSwKICAqIHNlZSBpdHMgZG9jKS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9haXJvLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9haXJvLmMKaW5kZXggNTdhNzliMC4uNGU1YzdhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYWlyby5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Fpcm8uYwpAQCAtMTg4NCw3ICsxODg0LDcgQEAKIAkvKiBNYWtlIHN1cmUgdGhlIGNhcmQgaXMgY29uZmlndXJlZC4KIAkgKiBXaXJlbGVzcyBFeHRlbnNpb25zIG1heSBwb3N0cG9uZSBjb25maWcgY2hhbmdlcyB1bnRpbCB0aGUgY2FyZAogCSAqIGlzIG9wZW4gKHRvIHBpcGVsaW5lIGNoYW5nZXMgYW5kIHNwZWVkLXVwIGNhcmQgc2V0dXApLiBJZgotCSAqIHRob3NlIGNoYW5nZXMgYXJlIG5vdCB5ZXQgY29tbWl0ZWQsIGRvIGl0IG5vdyAtIEplYW4gSUkgKi8KKwkgKiB0aG9zZSBjaGFuZ2VzIGFyZSBub3QgeWV0IGNvbW1pdHRlZCwgZG8gaXQgbm93IC0gSmVhbiBJSSAqLwogCWlmICh0ZXN0X2JpdChGTEFHX0NPTU1JVCwgJmFpLT5mbGFncykpIHsKIAkJZGlzYWJsZV9NQUMoYWksIDEpOwogCQl3cml0ZUNvbmZpZ1JpZChhaSwgMSk7CkBAIC0xOTkyLDcgKzE5OTIsNyBAQAogLyoKICAqIE1hZ2ljLCB0aGUgY2FyZHMgZmlybXdhcmUgbmVlZHMgYSBsZW5ndGggY291bnQgKDIgYnl0ZXMpIGluIHRoZSBob3N0IGJ1ZmZlcgogICogcmlnaHQgYWZ0ZXIgIFRYRklEX0hEUi5UaGUgVFhGSURfSERSIGNvbnRhaW5zIHRoZSBzdGF0dXMgc2hvcnQgc28gcGF5bG9hZGxlbgotICogaXMgaW1tZWRpYXRseSBhZnRlciBpdC4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBpcyBpbW1lZGlhdGVseSBhZnRlciBpdC4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICB8VFhGSURIRFIrU1RBVFVTfFBBWUxPQURMRU58ODAyLjNIRFJ8UEFDS0VUREFUQXwKICAqICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICovCkBAIC0yMDA2LDcgKzIwMDYsNyBAQAogCQlzaXplb2Yod2lmaWN0bGhkcjgwMjMpICsgMiA7CiAKIAkvKgotCSAqIEZpcm13YXJlIGF1dG9tYXRpY2x5IHB1dHMgODAyIGhlYWRlciBvbiBzbworCSAqIEZpcm13YXJlIGF1dG9tYXRpY2FsbHkgcHV0cyA4MDIgaGVhZGVyIG9uIHNvCiAJICogd2UgZG9uJ3QgbmVlZCB0byBhY2NvdW50IGZvciBpdCBpbiB0aGUgbGVuZ3RoCiAJICovCiAJaWYgKHRlc3RfYml0KEZMQUdfTUlDX0NBUEFCTEUsICZhaS0+ZmxhZ3MpICYmIGFpLT5taWNzdGF0cy5lbmFibGVkICYmCkBAIC0yNTMxLDcgKzI1MzEsNyBAQAogLyoKICAqIFdlIGFyZSBzZXR0aW5nIHVwIHRocmVlIHRoaW5ncyBoZXJlOgogICogMSkgTWFwIEFVWCBtZW1vcnkgZm9yIGRlc2NyaXB0b3JzOiBSaWQsIFR4RmlkLCBvciBSeEZpZC4KLSAqIDIpIE1hcCBQQ0kgbWVtb3J5IGZvciBpc3N1ZWluZyBjb21tYW5kcy4KKyAqIDIpIE1hcCBQQ0kgbWVtb3J5IGZvciBpc3N1aW5nIGNvbW1hbmRzLgogICogMykgQWxsb2NhdGUgbWVtb3J5IChzaGFyZWQpIHRvIHNlbmQgYW5kIHJlY2VpdmUgZXRoZXJuZXQgZnJhbWVzLgogICovCiBzdGF0aWMgaW50IG1waV9tYXBfY2FyZChzdHJ1Y3QgYWlyb19pbmZvICphaSwgc3RydWN0IHBjaV9kZXYgKnBjaSkKQEAgLTM5NDcsNyArMzk0Nyw3IEBACiAKIAlpZiAoIG1heF90cmllcyA9PSAtMSApIHsKIAkJYWlyb19wcmludF9lcnIoYWktPmRldi0+bmFtZSwKLQkJCSJNYXggdHJpZXMgZXhjZWVkZWQgd2hlbiBpc3N1ZWluZyBjb21tYW5kIik7CisJCQkiTWF4IHRyaWVzIGV4Y2VlZGVkIHdoZW4gaXNzdWluZyBjb21tYW5kIik7CiAJCWlmIChJTjQ1MDAoYWksIENPTU1BTkQpICYgQ09NTUFORF9CVVNZKQogCQkJT1VUNDUwMChhaSwgRVZBQ0ssIEVWX0NMRUFSQ09NTUFOREJVU1kpOwogCQlyZXR1cm4gRVJST1I7CkBAIC00MTczLDcgKzQxNzMsNyBAQAogfQogCiAvKiAgTm90ZSwgdGhhdCB3ZSBhcmUgdXNpbmcgQkFQMSB3aGljaCBpcyBhbHNvIHVzZWQgYnkgdHJhbnNtaXQsIHNvCi0gKiAgbWFrZSBzdXJlIHRoaXMgaXNudCBjYWxsZWQgd2hlbiBhIHRyYW5zbWl0IGlzIGhhcHBlbmluZyAqLworICogIG1ha2Ugc3VyZSB0aGlzIGlzbid0IGNhbGxlZCB3aGVuIGEgdHJhbnNtaXQgaXMgaGFwcGVuaW5nICovCiBzdGF0aWMgaW50IFBDNDUwMF93cml0ZXJpZChzdHJ1Y3QgYWlyb19pbmZvICphaSwgdTE2IHJpZCwKIAkJCSAgIGNvbnN0IHZvaWQgKnBCdWYsIGludCBsZW4sIGludCBsb2NrKQogewpAQCAtNDc3Niw3ICs0Nzc2LDcgQEAKIAkJaWYgKCFzdGF0c0xhYmVsc1tpXSkgY29udGludWU7CiAJCWlmIChqK3N0cmxlbihzdGF0c0xhYmVsc1tpXSkrMTY+NDA5NikgewogCQkJYWlyb19wcmludF93YXJuKGFwcml2LT5kZXYtPm5hbWUsCi0JCQkgICAgICAgIlBvdGVudGlhbGx5IGRpc2FzdGVyb3VzIGJ1ZmZlciBvdmVyZmxvdyBhdmVydGVkISIpOworCQkJICAgICAgICJQb3RlbnRpYWxseSBkaXNhc3Ryb3VzIGJ1ZmZlciBvdmVyZmxvdyBhdmVydGVkISIpOwogCQkJYnJlYWs7CiAJCX0KIAkJais9c3ByaW50ZihkYXRhLT5yYnVmZmVyK2osICIlczogJXVcbiIsIHN0YXRzTGFiZWxzW2ldLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyOTE3MC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL21haW4uYwppbmRleCBiNzYxZmVjLi5jY2MyZWRhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL21haW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL21haW4uYwpAQCAtOTc0LDcgKzk3NCw3IEBACiAJCQlpZiAoYXItPnJ4X2ZhaWxvdmVyX21pc3NpbmcgPD0gMCkgewogCQkJCS8qCiAJCQkJICogbmVzdGVkIGFyOTE3MF9yeCBjYWxsIQotCQkJCSAqIHRlcm1pbmF0aW9uIGlzIGd1cmFudGVlZCwgZXZlbiB3aGVuIHRoZQorCQkJCSAqIHRlcm1pbmF0aW9uIGlzIGd1YXJhbnRlZWQsIGV2ZW4gd2hlbiB0aGUKIAkJCQkgKiBjb21iaW5lZCBmcmFtZSBhbHNvIGhhdmUgYSBlbGVtZW50IHdpdGgKIAkJCQkgKiBhIGJhZCB0YWcuCiAJCQkJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2FyOTE3MC9waHkuYwppbmRleCAwZGJmY2Y3Li5hYThkMDZiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXI5MTcwL3BoeS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hcjkxNzAvcGh5LmMKQEAgLTQyNCw3ICs0MjQsNyBAQAogCiAvKgogICogaW5pdGlhbGl6ZSBzb21lIHBoeSByZWdzIGZyb20gZWVwcm9tIHZhbHVlcyBpbiBtb2RhbF9oZWFkZXJbXQotICogYWNjLiB0byBiYW5kIGFuZCBiYW5kd2l0aAorICogYWNjLiB0byBiYW5kIGFuZCBiYW5kd2lkdGgKICAqLwogc3RhdGljIGludCBhcjkxNzBfaW5pdF9waHlfZnJvbV9lZXByb20oc3RydWN0IGFyOTE3MCAqYXIsCiAJCQkJYm9vbCBpc18yZ2h6LCBib29sIGlzXzQwbWh6KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2FuaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2FuaS5oCmluZGV4IGQwYTY2NDAuLjAzNDAxNTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9hbmkuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYW5pLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNkZWZpbmUgQVRINUtfQU5JX1JTU0lfVEhSX0hJR0gJCTQwCiAjZGVmaW5lIEFUSDVLX0FOSV9SU1NJX1RIUl9MT1cJCTcKIAotLyogbWF4aW11bSBhdmFpbGFiZSBsZXZlbHMgKi8KKy8qIG1heGltdW0gYXZhaWxhYmxlIGxldmVscyAqLwogI2RlZmluZSBBVEg1S19BTklfTUFYX0ZJUlNURVBfTFZMCTIKICNkZWZpbmUgQVRINUtfQU5JX01BWF9OT0lTRV9JTU1fTFZMCTEKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9iYXNlLmMKaW5kZXggNGQ3ZjIxZS4uMzQ5YTU5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Jhc2UuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvYmFzZS5jCkBAIC0xOTUzLDcgKzE5NTMsNyBAQAogCiAjZGVmaW5lIEZVREdFIEFSNUtfVFVORV9TV19CRUFDT05fUkVTUCArIDMKIAkvKiBXZSB1c2UgRlVER0UgdG8gbWFrZSBzdXJlIHRoZSBuZXh0IFRCVFQgaXMgYWhlYWQgb2YgdGhlIGN1cnJlbnQgVFUuCi0JICogU2luY2Ugd2UgbGF0ZXIgc3Vic3RyYWN0IEFSNUtfVFVORV9TV19CRUFDT05fUkVTUCAoMTApIGluIHRoZSB0aW1lcgorCSAqIFNpbmNlIHdlIGxhdGVyIHN1YnRyYWN0IEFSNUtfVFVORV9TV19CRUFDT05fUkVTUCAoMTApIGluIHRoZSB0aW1lcgogCSAqIGNvbmZpZ3VyYXRpb24gd2UgbmVlZCB0byBtYWtlIHN1cmUgaXQgaXMgYmlnZ2VyIHRoYW4gdGhhdC4gKi8KIAogCWlmIChiY190c2YgPT0gLTEpIHsKQEAgLTE5NzEsNyArMTk3MSw3IEBACiAJCWludHZhbCB8PSBBUjVLX0JFQUNPTl9SRVNFVF9UU0Y7CiAJfSBlbHNlIGlmIChiY190c2YgPiBod190c2YpIHsKIAkJLyoKLQkJICogYmVhY29uIHJlY2VpdmVkLCBTVyBtZXJnZSBoYXBwZW5kIGJ1dCBIVyBUU0Ygbm90IHlldCB1cGRhdGVkLgorCQkgKiBiZWFjb24gcmVjZWl2ZWQsIFNXIG1lcmdlIGhhcHBlbmVkIGJ1dCBIVyBUU0Ygbm90IHlldCB1cGRhdGVkLgogCQkgKiBub3QgcG9zc2libGUgdG8gcmVjb25maWd1cmUgdGltZXJzIHlldCwgYnV0IG5leHQgdGltZSB3ZQogCQkgKiByZWNlaXZlIGEgYmVhY29uIHdpdGggdGhlIHNhbWUgQlNTSUQsIHRoZSBoYXJkd2FyZSB3aWxsCiAJCSAqIGF1dG9tYXRpY2FsbHkgdXBkYXRlIHRoZSBUU0YgYW5kIHRoZW4gd2UgbmVlZCB0byByZWNvbmZpZ3VyZQpAQCAtMjY1MSw3ICsyNjUxLDcgQEAKIAlzeW5jaHJvbml6ZV9pcnEoc2MtPmlycSk7CiAJc3RvcF90YXNrbGV0cyhzYyk7CiAKLQkvKiBTYXZlIGFuaSBtb2RlIGFuZCBkaXNhYmxlIEFOSSBkdXJyaW5nCisJLyogU2F2ZSBhbmkgbW9kZSBhbmQgZGlzYWJsZSBBTkkgZHVyaW5nCiAJICogcmVzZXQuIElmIHdlIGRvbid0IHdlIG1pZ2h0IGdldCBmYWxzZQogCSAqIFBIWSBlcnJvciBpbnRlcnJ1cHRzLiAqLwogCWFuaV9tb2RlID0gYWgtPmFoX3NjLT5hbmlfc3RhdGUuYW5pX21vZGU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZGVzYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2Rlc2MuYwppbmRleCAxNmI0NGZmLi5hOGZjYzk0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZGVzYy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9kZXNjLmMKQEAgLTUxLDcgKzUxLDcgQEAKIAkvKgogCSAqIFZhbGlkYXRlIGlucHV0CiAJICogLSBaZXJvIHJldHJpZXMgZG9uJ3QgbWFrZSBzZW5zZS4KLQkgKiAtIEEgemVybyByYXRlIHdpbGwgcHV0IHRoZSBIVyBpbnRvIGEgbW9kZSB3aGVyZSBpdCBjb250aW5vdXNseSBzZW5kcworCSAqIC0gQSB6ZXJvIHJhdGUgd2lsbCBwdXQgdGhlIEhXIGludG8gYSBtb2RlIHdoZXJlIGl0IGNvbnRpbnVvdXNseSBzZW5kcwogCSAqICAgbm9pc2Ugb24gdGhlIGNoYW5uZWwsIHNvIGl0IGlzIGltcG9ydGFudCB0byBhdm9pZCB0aGlzLgogCSAqLwogCWlmICh1bmxpa2VseSh0eF90cmllczAgPT0gMCkpIHsKQEAgLTE5MCw3ICsxOTAsNyBAQAogCS8qCiAJICogVmFsaWRhdGUgaW5wdXQKIAkgKiAtIFplcm8gcmV0cmllcyBkb24ndCBtYWtlIHNlbnNlLgotCSAqIC0gQSB6ZXJvIHJhdGUgd2lsbCBwdXQgdGhlIEhXIGludG8gYSBtb2RlIHdoZXJlIGl0IGNvbnRpbm91c2x5IHNlbmRzCisJICogLSBBIHplcm8gcmF0ZSB3aWxsIHB1dCB0aGUgSFcgaW50byBhIG1vZGUgd2hlcmUgaXQgY29udGludW91c2x5IHNlbmRzCiAJICogICBub2lzZSBvbiB0aGUgY2hhbm5lbCwgc28gaXQgaXMgaW1wb3J0YW50IHRvIGF2b2lkIHRoaXMuCiAJICovCiAJaWYgKHVubGlrZWx5KHR4X3RyaWVzMCA9PSAwKSkgewpAQCAtMzAwLDcgKzMwMCw3IEBACiAJLyoKIAkgKiBSYXRlcyBjYW4gYmUgMCBhcyBsb25nIGFzIHRoZSByZXRyeSBjb3VudCBpcyAwIHRvby4KIAkgKiBBIHplcm8gcmF0ZSBhbmQgbm9uemVybyByZXRyeSBjb3VudCB3aWxsIHB1dCB0aGUgSFcgaW50byBhIG1vZGUgd2hlcmUKLQkgKiBpdCBjb250aW5vdXNseSBzZW5kcyBub2lzZSBvbiB0aGUgY2hhbm5lbCwgc28gaXQgaXMgaW1wb3J0YW50IHRvCisJICogaXQgY29udGludW91c2x5IHNlbmRzIG5vaXNlIG9uIHRoZSBjaGFubmVsLCBzbyBpdCBpcyBpbXBvcnRhbnQgdG8KIAkgKiBhdm9pZCB0aGlzLgogCSAqLwogCWlmICh1bmxpa2VseSgodHhfcmF0ZTEgPT0gMCAmJiB0eF90cmllczEgIT0gMCkgfHwKQEAgLTM0Miw3ICszNDIsNyBAQAogXCoqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgotICogUHJvY2Nlc3MgdGhlIHR4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTAvNTIxMQorICogUHJvY2VzcyB0aGUgdHggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMC81MjExCiAgKi8KIHN0YXRpYyBpbnQgYXRoNWtfaHdfcHJvY18yd29yZF90eF9zdGF0dXMoc3RydWN0IGF0aDVrX2h3ICphaCwKIAkJc3RydWN0IGF0aDVrX2Rlc2MgKmRlc2MsIHN0cnVjdCBhdGg1a190eF9zdGF0dXMgKnRzKQpAQCAtMzk0LDcgKzM5NCw3IEBACiB9CiAKIC8qCi0gKiBQcm9jY2VzcyBhIHR4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTIKKyAqIFByb2Nlc3MgYSB0eCBzdGF0dXMgZGVzY3JpcHRvciBvbiA1MjEyCiAgKi8KIHN0YXRpYyBpbnQgYXRoNWtfaHdfcHJvY180d29yZF90eF9zdGF0dXMoc3RydWN0IGF0aDVrX2h3ICphaCwKIAkJc3RydWN0IGF0aDVrX2Rlc2MgKmRlc2MsIHN0cnVjdCBhdGg1a190eF9zdGF0dXMgKnRzKQpAQCAtNTE5LDcgKzUxOSw3IEBACiB9CiAKIC8qCi0gKiBQcm9jY2VzcyB0aGUgcnggc3RhdHVzIGRlc2NyaXB0b3Igb24gNTIxMC81MjExCisgKiBQcm9jZXNzIHRoZSByeCBzdGF0dXMgZGVzY3JpcHRvciBvbiA1MjEwLzUyMTEKICAqLwogc3RhdGljIGludCBhdGg1a19od19wcm9jXzUyMTBfcnhfc3RhdHVzKHN0cnVjdCBhdGg1a19odyAqYWgsCiAJCXN0cnVjdCBhdGg1a19kZXNjICpkZXNjLCBzdHJ1Y3QgYXRoNWtfcnhfc3RhdHVzICpycykKQEAgLTYwMiw3ICs2MDIsNyBAQAogfQogCiAvKgotICogUHJvY2Nlc3MgdGhlIHJ4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTIKKyAqIFByb2Nlc3MgdGhlIHJ4IHN0YXR1cyBkZXNjcmlwdG9yIG9uIDUyMTIKICAqLwogc3RhdGljIGludCBhdGg1a19od19wcm9jXzUyMTJfcnhfc3RhdHVzKHN0cnVjdCBhdGg1a19odyAqYWgsCiAJCQkJCXN0cnVjdCBhdGg1a19kZXNjICpkZXNjLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL2VlcHJvbS5jCmluZGV4IGI2NTYxZjcuLmVmYjY3MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9lZXByb20uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvZWVwcm9tLmMKQEAgLTEwODAsNyArMTA4MCw3IEBACiAgKgogICogVG8gcmVjcmVhdGUgdGhlIGN1cnZlcyB3ZSByZWFkIGhlcmUgdGhlIHBvaW50cyBhbmQgaW50ZXJwb2xhdGUKICAqIGxhdGVyLiBOb3RlIHRoYXQgaW4gbW9zdCBjYXNlcyBvbmx5IDIgKGhpZ2hlciBhbmQgbG93ZXIpIGN1cnZlcyBhcmUKLSAqIHVzZWQgKGxpa2UgUkY1MTEyKSBidXQgdmVuZG9ycyBoYXZlIHRoZSBvcG9ydHVuaXR5IHRvIGluY2x1ZGUgYWxsCisgKiB1c2VkIChsaWtlIFJGNTExMikgYnV0IHZlbmRvcnMgaGF2ZSB0aGUgb3Bwb3J0dW5pdHkgdG8gaW5jbHVkZSBhbGwKICAqIDQgY3VydmVzIG9uIGVlcHJvbS4gVGhlIGZpbmFsIGN1cnZlIChoaWdoZXIgcG93ZXIpIGhhcyBhbiBleHRyYQogICogcG9pbnQgZm9yIGJldHRlciBhY2N1cmFjeSBsaWtlIFJGNTExMi4KICAqLwpAQCAtMTMwMiw3ICsxMzAyLDcgQEAKIAkJCS8qCiAJCQkgKiBQZCBnYWluIDAgaXMgbm90IHRoZSBsYXN0IHBkIGdhaW4KIAkJCSAqIHNvIGl0IG9ubHkgaGFzIDIgcGQgcG9pbnRzLgotCQkJICogQ29udGludWUgd2loIHBkIGdhaW4gMS4KKwkJCSAqIENvbnRpbnVlIHdpdGggcGQgZ2FpbiAxLgogCQkJICovCiAJCQlwY2luZm8tPnB3cl9pWzFdID0gKHZhbCA+PiAxMCkgJiAweDFmOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGNpLmMKaW5kZXggNjY1OThhMC4uM2M0NDY4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BjaS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY2kuYwpAQCAtNTcsNyArNTcsNyBAQAogCSpjc3ogPSAoaW50KXU4dG1wOwogCiAJLyoKLQkgKiBUaGlzIGNoZWNrIHdhcyBwdXQgaW4gdG8gYXZvaWQgInVucGxlc2FudCIgY29uc2VxdWVuY2VzIGlmCisJICogVGhpcyBjaGVjayB3YXMgcHV0IGluIHRvIGF2b2lkICJ1bnBsZWFzYW50IiBjb25zZXF1ZW5jZXMgaWYKIAkgKiB0aGUgYm9vdHJvbSBoYXMgbm90IGZ1bGx5IGluaXRpYWxpemVkIGFsbCBQQ0kgZGV2aWNlcy4KIAkgKiBTb21ldGltZXMgdGhlIGNhY2hlIGxpbmUgc2l6ZSByZWdpc3RlciBpcyBub3Qgc2V0CiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGN1LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGN1LmMKaW5kZXggYTcwMjgxNy4uZDliM2Y4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BjdS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9wY3UuYwpAQCAtNDcyLDcgKzQ3Miw3IEBACiAJfQogCiAJLyoKLQkgKiBUaGUgQVI1MjEwIHVzZXMgcHJvbWlzY291cyBtb2RlIHRvIGRldGVjdCByYWRhciBhY3Rpdml0eQorCSAqIFRoZSBBUjUyMTAgdXNlcyBwcm9taXNjdW91cyBtb2RlIHRvIGRldGVjdCByYWRhciBhY3Rpdml0eQogCSAqLwogCWlmIChhaC0+YWhfdmVyc2lvbiA9PSBBUjVLX0FSNTIxMCAmJgogCQkJKGZpbHRlciAmIEFSNUtfUlhfRklMVEVSX1JBREFSRVJSKSkgewpAQCAtNzA2LDggKzcwNiw4IEBACiAgKiBUaGUgbmVlZCBmb3IgdGhpcyBmdW5jdGlvbiBhcmlzZXMgZnJvbSB0aGUgZmFjdCB0aGF0IHdlIGhhdmUgNCBzZXBhcmF0ZQogICogSFcgdGltZXIgcmVnaXN0ZXJzIChUSU1FUjAgLSBUSU1FUjMpLCB3aGljaCBhcmUgY2xvc2VseSByZWxhdGVkIHRvIHRoZQogICogbmV4dCBiZWFjb24gdGFyZ2V0IHRpbWUgKE5CVFQpLCBhbmQgdGhhdCB0aGUgSFcgdXBkYXRlcyB0aGVzZSB0aW1lcnMKLSAqIHNlcGVyYXRlbHkgYmFzZWQgb24gdGhlIGN1cnJlbnQgVFNGIHZhbHVlLiBUaGUgaGFyZHdhcmUgaW5jcmVtZW50cyBlYWNoCi0gKiB0aW1lciBieSB0aGUgYmVhY29uIGludGVydmFsLCB3aGVuIHRoZSBsb2NhbCBUU0YgY292ZXJ0ZWQgdG8gVFUgaXMgZXF1YWwKKyAqIHNlcGFyYXRlbHkgYmFzZWQgb24gdGhlIGN1cnJlbnQgVFNGIHZhbHVlLiBUaGUgaGFyZHdhcmUgaW5jcmVtZW50cyBlYWNoCisgKiB0aW1lciBieSB0aGUgYmVhY29uIGludGVydmFsLCB3aGVuIHRoZSBsb2NhbCBUU0YgY29udmVydGVkIHRvIFRVIGlzIGVxdWFsCiAgKiB0byB0aGUgdmFsdWUgc3RvcmVkIGluIHRoZSB0aW1lci4KICAqCiAgKiBUaGUgcmVjZXB0aW9uIG9mIGEgYmVhY29uIHdpdGggdGhlIHNhbWUgQlNTSUQgY2FuIHVwZGF0ZSB0aGUgbG9jYWwgSFcgVFNGCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcGh5LmMKaW5kZXggNjJjZTJmNC4uNTU0NDE5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3BoeS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9waHkuYwpAQCAtMzM1LDExICszMzUsMTEgQEAKICAqIGh0dHA6Ly9tYWR3aWZpLXByb2plY3Qub3JnL3RpY2tldC8xNjU5CiAgKiB3aXRoIHZhcmlvdXMgbWVhc3VyZW1lbnRzIGFuZCBkaWFncmFtcwogICoKLSAqIFRPRE86IERlYWwgd2l0aCBwb3dlciBkcm9wcyBkdWUgdG8gcHJvYmVzIGJ5IHNldHRpbmcgYW4gYXByb3ByaWF0ZQorICogVE9ETzogRGVhbCB3aXRoIHBvd2VyIGRyb3BzIGR1ZSB0byBwcm9iZXMgYnkgc2V0dGluZyBhbiBhcHByb3ByaWF0ZQogICogdHggcG93ZXIgb24gdGhlIHByb2JlIHBhY2tldHMgISBNYWtlIHRoaXMgcGFydCBvZiB0aGUgY2FsaWJyYXRpb24gcHJvY2Vzcy4KICAqLwogCi0vKiBJbml0aWFsaXplIGFoX2dhaW4gZHVycmluZyBhdHRhY2ggKi8KKy8qIEluaXRpYWxpemUgYWhfZ2FpbiBkdXJpbmcgYXR0YWNoICovCiBpbnQgYXRoNWtfaHdfcmZnYWluX29wdF9pbml0KHN0cnVjdCBhdGg1a19odyAqYWgpCiB7CiAJLyogSW5pdGlhbGl6ZSB0aGUgZ2FpbiBvcHRpbWl6YXRpb24gdmFsdWVzICovCkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogXCoqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKgotICogQ29udmVydGlvbiBuZWVkZWQgZm9yIFJGNTExMAorICogQ29udmVyc2lvbiBuZWVkZWQgZm9yIFJGNTExMAogICovCiBzdGF0aWMgdTMyIGF0aDVrX2h3X3JmNTExMF9jaGFuMmF0aGNoYW4oc3RydWN0IGllZWU4MDIxMV9jaGFubmVsICpjaGFubmVsKQogewpAQCAtMTA4OCw3ICsxMDg4LDcgQEAKIH0KIAogLyoKLSAqIENvbnZlcnRpb24gbmVlZGVkIGZvciA1MTExCisgKiBDb252ZXJzaW9uIG5lZWRlZCBmb3IgNTExMQogICovCiBzdGF0aWMgaW50IGF0aDVrX2h3X3JmNTExMV9jaGFuMmF0aGNoYW4odW5zaWduZWQgaW50IGllZWUsCiAJCXN0cnVjdCBhdGg1a19hdGhjaGFuXzJnaHogKmF0aGNoYW4pCkBAIC0yMjAxLDcgKzIyMDEsNyBAQAogLyoKICAqIEdldCB0aGUgc3Vycm91bmRpbmcgcGVyLWNoYW5uZWwgcG93ZXIgY2FsaWJyYXRpb24gcGllcnMKICAqIGZvciBhIGdpdmVuIGZyZXF1ZW5jeSBzbyB0aGF0IHdlIGNhbiBpbnRlcnBvbGF0ZSBiZXR3ZWVuCi0gKiB0aGVtIGFuZCBjb21lIHVwIHdpdGggYW4gYXByb3ByaWF0ZSBkYXRhc2V0IGZvciBvdXIgY3VycmVudAorICogdGhlbSBhbmQgY29tZSB1cCB3aXRoIGFuIGFwcHJvcHJpYXRlIGRhdGFzZXQgZm9yIG91ciBjdXJyZW50CiAgKiBjaGFubmVsLgogICovCiBzdGF0aWMgdm9pZApAQCAtMjYxOCw3ICsyNjE4LDcgQEAKIC8qCiAgKiBTZXQgdGhlIGdhaW4gYm91bmRhcmllcyBhbmQgY3JlYXRlIGZpbmFsIFBvd2VyIHRvIFBEQURDIHRhYmxlCiAgKgotICogV2UgY2FuIGhhdmUgdXAgdG8gNCBwZCBjdXJ2ZXMsIHdlIG5lZWQgdG8gZG8gYSBzaW1taWxhciBwcm9jZXNzCisgKiBXZSBjYW4gaGF2ZSB1cCB0byA0IHBkIGN1cnZlcywgd2UgbmVlZCB0byBkbyBhIHNpbWlsYXIgcHJvY2VzcwogICogYXMgd2UgZG8gZm9yIFJGNTExMi4gVGhpcyB0aW1lIHdlIGRvbid0IGhhdmUgYW4gZWRnZV9mbGFnIGJ1dCB3ZQogICogc2V0IHRoZSBnYWluIGJvdW5kYXJpZXMgb24gYSBzZXBhcmF0ZSByZWdpc3Rlci4KICAqLwpAQCAtMjgyNiwxMyArMjgyNiwxMyBAQAogCXUzMiB0YXJnZXQgPSBjaGFubmVsLT5jZW50ZXJfZnJlcTsKIAlpbnQgcGRnLCBpOwogCi0JLyogR2V0IHN1cm91bmRpbmcgZnJlcSBwaWVycyBmb3IgdGhpcyBjaGFubmVsICovCisJLyogR2V0IHN1cnJvdW5kaW5nIGZyZXEgcGllcnMgZm9yIHRoaXMgY2hhbm5lbCAqLwogCWF0aDVrX2dldF9jaGFuX3BjYWxfc3Vycm91bmRpbmdfcGllcnMoYWgsIGNoYW5uZWwsCiAJCQkJCQkmcGNpbmZvX0wsCiAJCQkJCQkmcGNpbmZvX1IpOwogCiAJLyogTG9vcCBvdmVyIHBkIGdhaW4gY3VydmVzIG9uCi0JICogc3Vyb3VuZGluZyBmcmVxIHBpZXJzIGJ5IGluZGV4ICovCisJICogc3Vycm91bmRpbmcgZnJlcSBwaWVycyBieSBpbmRleCAqLwogCWZvciAocGRnID0gMDsgcGRnIDwgZWUtPmVlX3BkX2dhaW5zW2VlX21vZGVdOyBwZGcrKykgewogCiAJCS8qIEZpbGwgY3VydmVzIGluIHJldmVyc2Ugb3JkZXIKQEAgLTI5MjMsNyArMjkyMyw3IEBACiAJCX0KIAogCQkvKiBJbnRlcnBvbGF0ZSBiZXR3ZWVuIGN1cnZlcwotCQkgKiBvZiBzdXJvdW5kaW5nIGZyZXEgcGllcnMgdG8KKwkJICogb2Ygc3Vycm91bmRpbmcgZnJlcSBwaWVycyB0bwogCQkgKiBnZXQgdGhlIGZpbmFsIGN1cnZlIGZvciB0aGlzCiAJCSAqIHBkIGdhaW4uIFJlLXVzZSB0bXBMIGZvciBpbnRlcnBvbGF0aW9uCiAJCSAqIG91dHB1dCAqLwpAQCAtMjk0Nyw3ICsyOTQ3LDcgQEAKIAogCS8qIEZpbGwgbWluIGFuZCBtYXggcG93ZXIgbGV2ZWxzIGZvciB0aGlzCiAJICogY2hhbm5lbCBieSBpbnRlcnBvbGF0aW5nIHRoZSB2YWx1ZXMgb24KLQkgKiBzdXJvdW5kaW5nIGNoYW5uZWxzIHRvIGNvbXBsZXRlIHRoZSBkYXRhc2V0ICovCisJICogc3Vycm91bmRpbmcgY2hhbm5lbHMgdG8gY29tcGxldGUgdGhlIGRhdGFzZXQgKi8KIAlhaC0+YWhfdHhwb3dlci50eHBfbWluX3B3ciA9IGF0aDVrX2dldF9pbnRlcnBvbGF0ZWRfdmFsdWUodGFyZ2V0LAogCQkJCQkoczE2KSBwY2luZm9fTC0+ZnJlcSwKIAkJCQkJKHMxNikgcGNpbmZvX1ItPmZyZXEsCkBAIC0zMTc5LDcgKzMxNzksNyBAQAogCiAJLyogRklYTUU6IFRQQyBzY2FsZSByZWR1Y3Rpb24gKi8KIAotCS8qIEdldCBzdXJvdW5kaW5nIGNoYW5uZWxzIGZvciBwZXItcmF0ZSBwb3dlciB0YWJsZQorCS8qIEdldCBzdXJyb3VuZGluZyBjaGFubmVscyBmb3IgcGVyLXJhdGUgcG93ZXIgdGFibGUKIAkgKiBjYWxpYnJhdGlvbiAqLwogCWF0aDVrX2dldF9yYXRlX3BjYWxfZGF0YShhaCwgY2hhbm5lbCwgJnJhdGVfaW5mbyk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9yZWcuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg1ay9yZWcuaAppbmRleCBlMWM5YWJkLi5kMTJiODI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoNWsvcmVnLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDVrL3JlZy5oCkBAIC0xMzIsOCArMTMyLDggQEAKICAqIEFzIGkgY2FuIHNlZSBpbiBhcjVrX2FyNTIxMF90eF9zdGFydCBSZXlrIHVzZXMgc29tZSBvZiB0aGUgdmFsdWVzIG9mIEJDUgogICogZm9yIHRoaXMgcmVnaXN0ZXIsIHNvIGkgZ3Vlc3MgVFExVixUUTFGViBhbmQgQkRNQUUgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nCiAgKiBoZXJlIGFuZCBTTlAvU05BUCBtZWFucyAic25hcHNob3QiIChzbyB0aGlzIHJlZ2lzdGVyIGdldHMgc3luY2VkIHdpdGggQkNSKS4KLSAqIFNvIFNOQVBQRURCQ1JWQUxJRCBzb3VsZCBhbHNvIHN0YW5kIGZvciAic25hcHBlZCBCQ1IgLXZhbHVlcy0gdmFsaWQiLCBzbyBpCi0gKiByZW5hbWVkIGl0IHRvIFNOQVBTSE9UU1ZBTElEIHRvIG1ha2UgbW9yZSBzZW5zZS4gSSByZWFseSBoYXZlIG5vIGlkZWEgd2hhdAorICogU28gU05BUFBFREJDUlZBTElEIHNob3VsZCBhbHNvIHN0YW5kIGZvciAic25hcHBlZCBCQ1IgLXZhbHVlcy0gdmFsaWQiLCBzbyBpCisgKiByZW5hbWVkIGl0IHRvIFNOQVBTSE9UU1ZBTElEIHRvIG1ha2UgbW9yZSBzZW5zZS4gSSByZWFsbHkgaGF2ZSBubyBpZGVhIHdoYXQKICAqIGVsc2UgY2FuIGl0IGJlLiBJIGFsc28gcmVuYW1lZCBTTlBCQ01EIHRvIFNOUEFESE9DIHRvIG1hdGNoIEJDUi4KICAqLwogI2RlZmluZSBBUjVLX0JTUgkJMHgwMDJjCQkJLyogUmVnaXN0ZXIgQWRkcmVzcyAqLwpAQCAtMjgzLDcgKzI4Myw3IEBACiAgKi8KICNkZWZpbmUgQVI1S19JU1IJCTB4MDAxYwkJCS8qIFJlZ2lzdGVyIEFkZHJlc3MgWzUyMTBdICovCiAjZGVmaW5lIEFSNUtfUElTUgkJMHgwMDgwCQkJLyogUmVnaXN0ZXIgQWRkcmVzcyBbNTIxMStdICovCi0jZGVmaW5lIEFSNUtfSVNSX1JYT0sJCTB4MDAwMDAwMDEJLyogRnJhbWUgc3VjY2Vzc2Z1bHkgcmVjaWV2ZWQgKi8KKyNkZWZpbmUgQVI1S19JU1JfUlhPSwkJMHgwMDAwMDAwMQkvKiBGcmFtZSBzdWNjZXNzZnVseSByZWNlaXZlZCAqLwogI2RlZmluZSBBUjVLX0lTUl9SWERFU0MJCTB4MDAwMDAwMDIJLyogUlggZGVzY3JpcHRvciByZXF1ZXN0ICovCiAjZGVmaW5lIEFSNUtfSVNSX1JYRVJSCQkweDAwMDAwMDA0CS8qIFJlY2VpdmUgZXJyb3IgKi8KICNkZWZpbmUgQVI1S19JU1JfUlhOT0ZSTQkweDAwMDAwMDA4CS8qIE5vIGZyYW1lIHJlY2VpdmVkIChyZWNlaXZlIHRpbWVvdXQpICovCkBAIC0zNzIsMTIgKzM3MiwxMiBAQAogLyoKICAqIEludGVycnVwdCBNYXNrIFJlZ2lzdGVycwogICoKLSAqIEFzIHdoaXRoIElTUnMgNTIxMCBoYXMgb25lIElNUiAoQVI1S19JTVIpIGFuZCA1MjExLzUyMTIgaGFzIG9uZSBwcmltYXJ5CisgKiBBcyB3aXRoIElTUnMgNTIxMCBoYXMgb25lIElNUiAoQVI1S19JTVIpIGFuZCA1MjExLzUyMTIgaGFzIG9uZSBwcmltYXJ5CiAgKiAoQVI1S19QSU1SKSBhbmQgNCBzZWNvbmRhcnkgSU1ScyAoQVI1S19TSU1SeCkuIE5vdGUgdGhhdCBJU1IvSU1SIGZsYWdzIG1hdGNoLgogICovCiAjZGVmaW5lCUFSNUtfSU1SCQkweDAwMjAJCQkvKiBSZWdpc3RlciBBZGRyZXNzIFs1MjEwXSAqLwogI2RlZmluZSBBUjVLX1BJTVIJCTB4MDBhMAkJCS8qIFJlZ2lzdGVyIEFkZHJlc3MgWzUyMTErXSAqLwotI2RlZmluZSBBUjVLX0lNUl9SWE9LCQkweDAwMDAwMDAxCS8qIEZyYW1lIHN1Y2Nlc3NmdWx5IHJlY2lldmVkKi8KKyNkZWZpbmUgQVI1S19JTVJfUlhPSwkJMHgwMDAwMDAwMQkvKiBGcmFtZSBzdWNjZXNzZnVseSByZWNlaXZlZCovCiAjZGVmaW5lIEFSNUtfSU1SX1JYREVTQwkJMHgwMDAwMDAwMgkvKiBSWCBkZXNjcmlwdG9yIHJlcXVlc3QqLwogI2RlZmluZSBBUjVLX0lNUl9SWEVSUgkJMHgwMDAwMDAwNAkvKiBSZWNlaXZlIGVycm9yKi8KICNkZWZpbmUgQVI1S19JTVJfUlhOT0ZSTQkweDAwMDAwMDA4CS8qIE5vIGZyYW1lIHJlY2VpdmVkIChyZWNlaXZlIHRpbWVvdXQpKi8KQEAgLTg5NSw3ICs4OTUsNyBAQAogI2RlZmluZSBBUjVLX1BDSUNGR19TTF9JTlRFTgkJMHgwMDAwMDgwMAkvKiBFbmFibGUgaW50ZXJydXB0cyB3aGVuIGFzbGVlcCAqLwogI2RlZmluZSBBUjVLX1BDSUNGR19MRURfQkNUTAkJMHgwMDAwMTAwMAkvKiBMZWQgYmxpbmsgKD8pIFs1MjEwXSAqLwogI2RlZmluZSBBUjVLX1BDSUNGR19SRVRSWV9GSVgJCTB4MDAwMDEwMDAJLyogRW5hYmxlIHBjaSBjb3JlIHJldHJ5IGZpeCAqLwotI2RlZmluZSBBUjVLX1BDSUNGR19TTF9JTlBFTgkJMHgwMDAwMjAwMAkvKiBTbGVlcCBldmVuIHdoaXRoIHBlbmRpbmcgaW50ZXJydXB0cyovCisjZGVmaW5lIEFSNUtfUENJQ0ZHX1NMX0lOUEVOCQkweDAwMDAyMDAwCS8qIFNsZWVwIGV2ZW4gd2l0aCBwZW5kaW5nIGludGVycnVwdHMqLwogI2RlZmluZSBBUjVLX1BDSUNGR19TUFdSX0ROCQkweDAwMDEwMDAwCS8qIE1hc2sgZm9yIHBvd2VyIHN0YXR1cyAqLwogI2RlZmluZSBBUjVLX1BDSUNGR19MRURNT0RFCQkweDAwMGUwMDAwCS8qIExlZG1vZGUgWzUyMTErXSAqLwogI2RlZmluZSBBUjVLX1BDSUNGR19MRURNT0RFX1BST1AJMHgwMDAwMDAwMAkvKiBCbGluayBvbiBzdGFuZGFyZCB0cmFmZmljIFs1MjExK10gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI1MDA4X3BoeS5jCmluZGV4IGZmY2Y0NGEuLjEwNmMwYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjUwMDhfcGh5LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyNTAwOF9waHkuYwpAQCAtMTQyLDcgKzE0Miw3IEBACiAKIC8qKgogICogYXI1MDA4X2h3X3NldF9jaGFubmVsIC0gdHVuZSB0byBhIGNoYW5uZWwgb24gdGhlIGV4dGVybmFsIEFSMjEzMy9BUjUxMzMgcmFkaW9zCi0gKiBAYWg6IGF0aGVyb3MgaGFyZHdhcmUgc3R1Y3R1cmUKKyAqIEBhaDogYXRoZXJvcyBoYXJkd2FyZSBzdHJ1Y3R1cmUKICAqIEBjaGFuOgogICoKICAqIEZvciB0aGUgZXh0ZXJuYWwgQVIyMTMzL0FSNTEzMyByYWRpb3MsIHRha2VzIHRoZSBNSHogY2hhbm5lbCB2YWx1ZSBhbmQgc2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2FyOTAwM19lZXByb20uYwppbmRleCA0YTkyNzE4Li42ZWFkZjk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvYXI5MDAzX2VlcHJvbS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9hcjkwMDNfZWVwcm9tLmMKQEAgLTMyNDAsNyArMzI0MCw3IEBACiAJCQllZXAgPSBhcjkwMDNfZWVwcm9tX3N0cnVjdF9maW5kX2J5X2lkKHJlZmVyZW5jZSk7CiAJCQlpZiAoZWVwID09IE5VTEwpIHsKIAkJCQlhdGhfZGJnKGNvbW1vbiwgQVRIX0RCR19FRVBST00sCi0JCQkJCSJjYW50IGZpbmQgcmVmZXJlbmNlIGVlcHJvbSBzdHJ1Y3QgJWRcbiIsCisJCQkJCSJjYW4ndCBmaW5kIHJlZmVyZW5jZSBlZXByb20gc3RydWN0ICVkXG4iLAogCQkJCQlyZWZlcmVuY2UpOwogCQkJCXJldHVybiAtMTsKIAkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvaHRjX2hzdC5jCmluZGV4IGM0MWFiOGMuLjYyZTEzOWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9odGNfaHN0LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL2h0Y19oc3QuYwpAQCAtMzYwLDcgKzM2MCw3IEBACiAgKiBIVEMgTWVzc2FnZXMgYXJlIGhhbmRsZWQgZGlyZWN0bHkgaGVyZSBhbmQgdGhlIG9idGFpbmVkIFNLQgogICogaXMgZnJlZWQuCiAgKgotICogU2V2aWNlIG1lc3NhZ2VzIChEYXRhLCBXTUkpIHBhc3NlZCB0byB0aGUgY29ycmVzcG9uZGluZworICogU2VydmljZSBtZXNzYWdlcyAoRGF0YSwgV01JKSBwYXNzZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcKICAqIGVuZHBvaW50IFJYIGhhbmRsZXJzLCB3aGljaCBoYXZlIHRvIGZyZWUgdGhlIFNLQi4KICAqLwogdm9pZCBhdGg5a19odGNfcnhfbXNnKHN0cnVjdCBodGNfdGFyZ2V0ICpodGNfaGFuZGxlLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3BjaS5jCmluZGV4IGU4MzEyOGMuLjljNjU0NTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay9wY2kuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcGNpLmMKQEAgLTQ0LDcgKzQ0LDcgQEAKIAkqY3N6ID0gKGludCl1OHRtcDsKIAogCS8qCi0JICogVGhpcyBjaGVjayB3YXMgcHV0IGluIHRvIGF2b2lkICJ1bnBsZXNhbnQiIGNvbnNlcXVlbmNlcyBpZgorCSAqIFRoaXMgY2hlY2sgd2FzIHB1dCBpbiB0byBhdm9pZCAidW5wbGVhc2FudCIgY29uc2VxdWVuY2VzIGlmCiAJICogdGhlIGJvb3Ryb20gaGFzIG5vdCBmdWxseSBpbml0aWFsaXplZCBhbGwgUENJIGRldmljZXMuCiAJICogU29tZXRpbWVzIHRoZSBjYWNoZSBsaW5lIHNpemUgcmVnaXN0ZXIgaXMgbm90IHNldAogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3JjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYwppbmRleCBhMzI0MWNkLi40YzBkMzZhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsvcmMuYwpAQCAtNzkyLDcgKzc5Miw3IEBACiAKIAkJdHhfaW5mby0+ZmxhZ3MgfD0gSUVFRTgwMjExX1RYX0NUTF9SQVRFX0NUUkxfUFJPQkU7CiAJfSBlbHNlIHsKLQkJLyogU2V0IHRoZSBjaG9vc2VuIHJhdGUuIE5vIFJUUyBmb3IgZmlyc3Qgc2VyaWVzIGVudHJ5LiAqLworCQkvKiBTZXQgdGhlIGNob3NlbiByYXRlLiBObyBSVFMgZm9yIGZpcnN0IHNlcmllcyBlbnRyeS4gKi8KIAkJYXRoX3JjX3JhdGVfc2V0X3NlcmllcyhyYXRlX3RhYmxlLCAmcmF0ZXNbaSsrXSwgdHhyYywKIAkJCQkgICAgICAgdHJ5X3Blcl9yYXRlLCByaXgsIDApOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoOWsveG1pdC5jCmluZGV4IDI2NzM0ZTUuLjg4ZmE3ZmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGg5ay94bWl0LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDlrL3htaXQuYwpAQCAtNjI4LDggKzYyOCw4IEBACiAJCQkJICh1MzIpQVRIX0FNUERVX0xJTUlUX01BWCk7CiAKIAkvKgotCSAqIGgvdyBjYW4gYWNjZXB0IGFnZ3JlZ2F0ZXMgdXB0byAxNiBiaXQgbGVuZ3RocyAoNjU1MzUpLgotCSAqIFRoZSBJRSwgaG93ZXZlciBjYW4gaG9sZCB1cHRvIDY1NTM2LCB3aGljaCBzaG93cyB1cCBoZXJlCisJICogaC93IGNhbiBhY2NlcHQgYWdncmVnYXRlcyB1cCB0byAxNiBiaXQgbGVuZ3RocyAoNjU1MzUpLgorCSAqIFRoZSBJRSwgaG93ZXZlciBjYW4gaG9sZCB1cCB0byA2NTUzNiwgd2hpY2ggc2hvd3MgdXAgaGVyZQogCSAqIGFzIHplcm8uIElnbm9yZSA2NTUzNiBzaW5jZSB3ZSAgYXJlIGNvbnN0cmFpbmVkIGJ5IGh3LgogCSAqLwogCWlmICh0aWQtPmFuLT5tYXhhbXBkdSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9jYXJsOTE3MC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmgKaW5kZXggOWNhZDA2MS4uM2Q0ZWQ1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL2Nhcmw5MTcwLmgKQEAgLTE2MSw3ICsxNjEsNyBAQAogICogTmF0dXJhbGx5OiBUaGUgaGlnaGVyIHRoZSBsaW1pdCwgdGhlIGZhc3RlciB0aGUgZGV2aWNlIENBTiBzZW5kLgogICogSG93ZXZlciwgZXZlbiBhIHNsaWdodCBvdmVyLWNvbW1pdG1lbnQgYXQgdGhlIHdyb25nIHRpbWUgYW5kIHRoZQogICogaGFyZHdhcmUgaXMgZG9vbWVkIHRvIHNlbmQgYWxsIGFscmVhZHktcXVldWVkIGZyYW1lcyBhdCBzdWJvcHRpbWFsCi0gKiByYXRlcy4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGFuIGVub3VybW91cyBhbW91bnQgb2YgdW5zdWNjZXNzZnVsCisgKiByYXRlcy4gVGhpcyBpbiB0dXJuIGxlYWRzIHRvIGFuIGVub3Jtb3VzIGFtb3VudCBvZiB1bnN1Y2Nlc3NmdWwKICAqIHJldHJpZXMgPT4gTGF0ZW5jeSBnb2VzIHVwLCB3aGVyZWFzIHRoZSB0aHJvdWdocHV0IGdvZXMgZG93bi4gQ1JBU0ghCiAgKi8KICNkZWZpbmUgQ0FSTDkxNzBfTlVNX1RYX0xJTUlUX0hBUkQJKChBUjkxNzBfVFhRX0RFUFRIICogMykgLyAyKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3BoeS5jCmluZGV4IGI2YjBkZTYuLmI2YWUwZTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9waHkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcGh5LmMKQEAgLTQyNyw3ICs0MjcsNyBAQAogCiAvKgogICogaW5pdGlhbGl6ZSBzb21lIHBoeSByZWdzIGZyb20gZWVwcm9tIHZhbHVlcyBpbiBtb2RhbF9oZWFkZXJbXQotICogYWNjLiB0byBiYW5kIGFuZCBiYW5kd2l0aAorICogYWNjLiB0byBiYW5kIGFuZCBiYW5kd2lkdGgKICAqLwogc3RhdGljIGludCBjYXJsOTE3MF9pbml0X3BoeV9mcm9tX2VlcHJvbShzdHJ1Y3QgYXI5MTcwICphciwKIAkJCQlib29sIGlzXzJnaHosIGJvb2wgaXNfNDBtaHopCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jCmluZGV4IDg0ODY2YTQuLmVjMjFlYTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC9yeC5jCkBAIC04NDksNyArODQ5LDcgQEAKIAkJCQkvKgogCQkJCSAqIG5lc3RlZCBjYXJsOTE3MF9yeF9zdHJlYW0gY2FsbCEKIAkJCQkgKgotCQkJCSAqIHRlcm1pbmF0aW9uIGlzIGd1cmFudGVlZCwgZXZlbiB3aGVuIHRoZQorCQkJCSAqIHRlcm1pbmF0aW9uIGlzIGd1YXJhbnRlZWQsIGV2ZW4gd2hlbiB0aGUKIAkJCQkgKiBjb21iaW5lZCBmcmFtZSBhbHNvIGhhdmUgYW4gZWxlbWVudCB3aXRoCiAJCQkJICogYSBiYWQgdGFnLgogCQkJCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2Nhcmw5MTcwL3VzYi5jCmluZGV4IGY4MmM0MDAuLjJmYjUzZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9jYXJsOTE3MC91c2IuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvY2FybDkxNzAvdXNiLmMKQEAgLTQzMCw3ICs0MzAsNyBAQAogCQkJICogVGhlIHN5c3RlbSBpcyB0b28gc2xvdyB0byBjb3BlIHdpdGgKIAkJCSAqIHRoZSBlbm9ybW91cyB3b3JrbG9hZC4gV2UgaGF2ZSBzaW1wbHkKIAkJCSAqIHJ1biBvdXQgb2YgYWN0aXZlIHJ4IHVyYnMgYW5kIHRoaXMKLQkJCSAqIHVuZm9ydHVuYXRseSBsZWFkcyB0byBhbiB1bnByZWRpY3RhYmxlCisJCQkgKiB1bmZvcnR1bmF0ZWx5IGxlYWRzIHRvIGFuIHVucHJlZGljdGFibGUKIAkJCSAqIGRldmljZS4KIAkJCSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jCmluZGV4IDE4M2MyODIuLmNjMTFkNjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9ody5jCkBAIC04Niw3ICs4Niw3IEBACiAgKiBJRlJBTUUtMDE6ICAwMTEwCiAgKgogICogQW4gZWFzeSBleWUtaW5zcGVjaXRvbiBvZiB0aGlzIGFscmVhZHkgc2hvdWxkIHRlbGwgeW91IHRoYXQgdGhpcyBmcmFtZQotICogd2lsbCBub3QgcGFzcyBvdXIgY2hlY2suIFRoaXMgaXMgYmVhY3VzZSB0aGUgYnNzaWRfbWFzayB0ZWxscyB0aGUKKyAqIHdpbGwgbm90IHBhc3Mgb3VyIGNoZWNrLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGJzc2lkX21hc2sgdGVsbHMgdGhlCiAgKiBoYXJkd2FyZSB0byBvbmx5IGxvb2sgYXQgdGhlIHNlY29uZCBsZWFzdCBzaWduaWZpY2FudCBiaXQgYW5kIHRoZQogICogY29tbW9uIGJpdCBhbW9uZ3N0IHRoZSBNQUMgYW5kIEJTU0lEcyBpcyAwLCB0aGlzIGZyYW1lIGhhcyB0aGUgMm5kIExTQgogICogYXMgMSwgd2hpY2ggZG9lcyBub3QgbWF0Y2ggMC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvcmVnZC5jCmluZGV4IGY4MjhmMjkuLjBlMWI4NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9yZWdkLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL3JlZ2QuYwpAQCAtMjY4LDcgKzI2OCw3IEBACiAJfQogCiAJLyoKLQkgKiBJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjaWV2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKKwkgKiBJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjZWl2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKIAkgKiBjaGFubmVsIGZpcnN0IGJlZm9yZSBlbmFibGluZyBhY3RpdmUgc2Nhbi4gVGhlIHBhc3NpdmUgc2NhbgogCSAqIHdvdWxkIGhhdmUgYmVlbiBlbmZvcmNlZCBieSB0aGUgaW5pdGlhbCBwcm9jZXNzaW5nIG9mIG91cgogCSAqIGN1c3RvbSByZWd1bGF0b3J5IGRvbWFpbi4KQEAgLTQ3Niw3ICs0NzYsNyBAQAogCQl3aXBoeS0+ZmxhZ3MgfD0gV0lQSFlfRkxBR19DVVNUT01fUkVHVUxBVE9SWTsKIAl9IGVsc2UgewogCQkvKgotCQkgKiBUaGlzIGdldHMgYXBwbGllZCBpbiB0aGUgY2FzZSBvZiB0aGUgYWJzZW5zZSBvZiBDUkRBLAorCQkgKiBUaGlzIGdldHMgYXBwbGllZCBpbiB0aGUgY2FzZSBvZiB0aGUgYWJzZW5jZSBvZiBDUkRBLAogCQkgKiBpdCdzIG91ciBvd24gY3VzdG9tIHdvcmxkIHJlZ3VsYXRvcnkgZG9tYWluLCBzaW1pbGFyIHRvCiAJCSAqIGNmZzgwMjExJ3MgYnV0IHdlIGVuYWJsZSBwYXNzaXZlIHNjYW5uaW5nLgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbC5jCmluZGV4IDQ2ZTM4MmUuLjM5YTExZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWwuYwpAQCAtNDM5LDcgKzQzOSw3IEBACiB9OwogCiBzdHJ1Y3QgYXRtZWxfcHJpdmF0ZSB7Ci0Jdm9pZCAqY2FyZDsgLyogQnVzIGRlcGVuZGVudCBzdHVjdHVyZSB2YXJpZXMgZm9yIFBDY2FyZCAqLworCXZvaWQgKmNhcmQ7IC8qIEJ1cyBkZXBlbmRlbnQgc3RydWN0dXJlIHZhcmllcyBmb3IgUENjYXJkICovCiAJaW50ICgqcHJlc2VudF9jYWxsYmFjaykodm9pZCAqKTsgLyogQW5kIGNhbGxiYWNrIHdoaWNoIHVzZXMgaXQgKi8KIAljaGFyIGZpcm13YXJlX2lkWzMyXTsKIAlBdG1lbEZXVHlwZSBmaXJtd2FyZV90eXBlOwpAQCAtMzg5NSw3ICszODk1LDcgQEAKIAogCSAgIFRoaXMgcm91dGluZSBpcyBhbHNvIHJlc3BvbnNpYmxlIGZvciBpbml0aWFsaXNpbmcgc29tZQogCSAgIGhhcmR3YXJlLXNwZWNpZmljIGZpZWxkcyBpbiB0aGUgYXRtZWxfcHJpdmF0ZSBzdHJ1Y3R1cmUsCi0JICAgaW5jbHVkaW5nIGEgY29weSBvZiB0aGUgZmlybXdhcmUncyBob3N0aW5mbyBzdHVjdHVyZQorCSAgIGluY2x1ZGluZyBhIGNvcHkgb2YgdGhlIGZpcm13YXJlJ3MgaG9zdGluZm8gc3RydWN0dXJlCiAJICAgd2hpY2ggaXMgdGhlIHJvdXRlIGludG8gdGhlIHJlc3Qgb2YgdGhlIGZpcm13YXJlIGRhdGFzdHJ1Y3R1cmVzLiAqLwogCiAJc3RydWN0IGF0bWVsX3ByaXZhdGUgKnByaXYgPSBuZXRkZXZfcHJpdihkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWxfY3MuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0bWVsX2NzLmMKaW5kZXggYzk2ZTE5ZC4uMDUyNjM1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRtZWxfY3MuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdG1lbF9jcy5jCkBAIC05OSw3ICs5OSw3IEBACiB9CiAKIC8qIENhbGwtYmFjayBmdW5jdGlvbiB0byBpbnRlcnJvZ2F0ZSBQQ01DSUEtc3BlY2lmaWMgaW5mb3JtYXRpb24KLSAgIGFib3V0IHRoZSBjdXJyZW50IGV4aXN0YW5jZSBvZiB0aGUgY2FyZCAqLworICAgYWJvdXQgdGhlIGN1cnJlbnQgZXhpc3RlbmNlIG9mIHRoZSBjYXJkICovCiBzdGF0aWMgaW50IGNhcmRfcHJlc2VudCh2b2lkICphcmcpCiB7CiAJc3RydWN0IHBjbWNpYV9kZXZpY2UgKmxpbmsgPSAoc3RydWN0IHBjbWNpYV9kZXZpY2UgKilhcmc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvYjQzLmgKaW5kZXggYmQ0Y2I3NS4uMjI5ZjQzOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL2I0My5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9iNDMuaApAQCAtNjQ4LDcgKzY0OCw3IEBACiAJY2hhciBlcnJvcnNbQjQzX05SX0ZXVFlQRVNdWzEyOF07CiAJLyogVGVtcG9yYXJ5IGJ1ZmZlciBmb3Igc3RvcmluZyB0aGUgZmlybXdhcmUgbmFtZS4gKi8KIAljaGFyIGZ3bmFtZVs2NF07Ci0JLyogQSBmYXRhbCBlcnJvciBvY2N1cmVkIHdoaWxlIHJlcXVlc3RpbmcuIEZpcm13YXJlIHJlcWVzdAorCS8qIEEgZmF0YWwgZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVxdWVzdGluZy4gRmlybXdhcmUgcmVxZXN0CiAJICogY2FuIG5vdCBjb250aW51ZSwgYXMgYW55IG90aGVyIHJlcWVzdCB3aWxsIGFsc28gZmFpbC4gKi8KIAlpbnQgZmF0YWxfZmFpbHVyZTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL21haW4uYwppbmRleCA1N2ViNWI2Li5kNTliMDE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvbWFpbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9tYWluLmMKQEAgLTQwMTAsNyArNDAxMCw3IEBACiAJYjQzX21hY19lbmFibGUoZGV2KTsKIAliNDNfd3JpdGUzMihkZXYsIEI0M19NTUlPX0dFTl9JUlFfTUFTSywgZGV2LT5pcnFfbWFzayk7CiAKLQkvKiBTdGFydCBtYWludGFpbmFuY2Ugd29yayAqLworCS8qIFN0YXJ0IG1haW50ZW5hbmNlIHdvcmsgKi8KIAliNDNfcGVyaW9kaWNfdGFza3Nfc2V0dXAoZGV2KTsKIAogCWI0M19sZWRzX2luaXQoZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0My9waHlfZy5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmgKaW5kZXggODU2OWZkZC4uNTQxM2M5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9nLmgKQEAgLTE2NCw3ICsxNjQsNyBAQAogCS8qIEN1cnJlbnQgSW50ZXJmZXJlbmNlIE1pdGlnYXRpb24gbW9kZSAqLwogCWludCBpbnRlcmZtb2RlOwogCS8qIFN0YWNrIG9mIHNhdmVkIHZhbHVlcyBmcm9tIHRoZSBJbnRlcmZlcmVuY2UgTWl0aWdhdGlvbiBjb2RlLgotCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxheWVkIG91dCBhcyBmb2xsb3dzOgorCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxhaWQgb3V0IGFzIGZvbGxvd3M6CiAJICogYml0IDAtMTE6ICBvZmZzZXQKIAkgKiBiaXQgMTItMTU6IHJlZ2lzdGVyIElECiAJICogYml0IDE2LTMyOiB2YWx1ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzL3BoeV9uLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaAppbmRleCAwMDFlODQxLi5lNzg5YTg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDMvcGh5X24uaApAQCAtNzAzLDcgKzcwMyw3IEBACiAjZGVmaW5lIEI0M19OUEhZX0NIQU5fRVNUSEFORwkJCUI0M19QSFlfTigweDIxRCkgLyogQ2hhbm5lbCBlc3RpbWF0ZSBoYW5nICovCiAjZGVmaW5lIEI0M19OUEhZX0ZJTkVSWDJfQ0dDCQkJQjQzX1BIWV9OKDB4MjIxKSAvKiBGaW5lIFJYIDIgY2xvY2sgZ2F0ZSBjb250cm9sICovCiAjZGVmaW5lICBCNDNfTlBIWV9GSU5FUlgyX0NHQ19ERUNHQwkJMHgwMDA4IC8qIERlY29kZSBnYXRlZCBjbG9ja3MgKi8KLSNkZWZpbmUgQjQzX05QSFlfVFhQQ1RMX0lOSVQJCQlCNDNfUEhZX04oMHgyMjIpIC8qIFRYIHBvd2VyIGNvbnRyb2xsIGluaXQgKi8KKyNkZWZpbmUgQjQzX05QSFlfVFhQQ1RMX0lOSVQJCQlCNDNfUEhZX04oMHgyMjIpIC8qIFRYIHBvd2VyIGNvbnRyb2wgaW5pdCAqLwogI2RlZmluZSAgQjQzX05QSFlfVFhQQ1RMX0lOSVRfUElEWEkxCQkweDAwRkYgLyogUG93ZXIgaW5kZXggaW5pdCAxICovCiAjZGVmaW5lICBCNDNfTlBIWV9UWFBDVExfSU5JVF9QSURYSTFfU0hJRlQJMAogI2RlZmluZSBCNDNfTlBIWV9QQVBEX0VOMAkJCUI0M19QSFlfTigweDI5NykgLyogUEFQRCBFbmFibGUwIFRCRCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2I0M2xlZ2FjeS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYjQzbGVnYWN5L2I0M2xlZ2FjeS5oCmluZGV4IGM4MWIyZjUuLjIzNTgzYmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2I0M2xlZ2FjeS9iNDNsZWdhY3kuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9iNDNsZWdhY3kvYjQzbGVnYWN5LmgKQEAgLTQ4OCw3ICs0ODgsNyBAQAogCS8qIEN1cnJlbnQgSW50ZXJmZXJlbmNlIE1pdGlnYXRpb24gbW9kZSAqLwogCWludCBpbnRlcmZtb2RlOwogCS8qIFN0YWNrIG9mIHNhdmVkIHZhbHVlcyBmcm9tIHRoZSBJbnRlcmZlcmVuY2UgTWl0aWdhdGlvbiBjb2RlLgotCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxheWVkIG91dCBhcyBmb2xsb3dzOgorCSAqIEVhY2ggdmFsdWUgaW4gdGhlIHN0YWNrIGlzIGxhaWQgb3V0IGFzIGZvbGxvd3M6CiAJICogYml0IDAtMTE6ICBvZmZzZXQKIAkgKiBiaXQgMTItMTU6IHJlZ2lzdGVyIElECiAJICogYml0IDE2LTMyOiB2YWx1ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5jCmluZGV4IDE4ZDYzZjUuLjNkMDVkYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmMKQEAgLTIzNTksNyArMjM1OSw3IEBACiB9CiAKIAotLyogVHJhbnNsYXRlIG91ciBsaXN0IG9mIEFjY2VzcyBQb2ludHMgJiBTdGF0aW9ucyB0byBhIGNhcmQgaW5kZXBlbmRhbnQKKy8qIFRyYW5zbGF0ZSBvdXIgbGlzdCBvZiBBY2Nlc3MgUG9pbnRzICYgU3RhdGlvbnMgdG8gYSBjYXJkIGluZGVwZW5kZW50CiAgKiBmb3JtYXQgdGhhdCB0aGUgV2lyZWxlc3MgVG9vbHMgd2lsbCB1bmRlcnN0YW5kIC0gSmVhbiBJSSAqLwogaW50IHByaXNtMl9hcF90cmFuc2xhdGVfc2NhbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkJICAgICBzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLCBjaGFyICpidWZmZXIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2FwLmgKaW5kZXggNjU1Y2VlYi4uMzM0ZTJkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9hcC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfYXAuaApAQCAtMTE0LDcgKzExNCw3IEBACiAgKiBoYXMgcGFzc2VkIHNpbmNlIGxhc3QgcmVjZWl2ZWQgZnJhbWUgZnJvbSB0aGUgc3RhdGlvbiwgYSBudWxsZnVuYyBkYXRhCiAgKiBmcmFtZSBpcyBzZW50IHRvIHRoZSBzdGF0aW9uLiBJZiB0aGlzIGZyYW1lIGlzIG5vdCBhY2tub3dsZWRnZWQgYW5kIG5vIG90aGVyCiAgKiBmcmFtZXMgaGF2ZSBiZWVuIHJlY2VpdmVkLCB0aGUgc3RhdGlvbiB3aWxsIGJlIGRpc2Fzc29jaWF0ZWQgYWZ0ZXIKLSAqIEFQX0RJU0FTU09DX0RFTEFZLiBTaW1pbGFyaWx5LCBhIHRoZSBzdGF0aW9uIHdpbGwgYmUgZGVhdXRoZW50aWNhdGVkIGFmdGVyCisgKiBBUF9ESVNBU1NPQ19ERUxBWS4gU2ltaWxhcmx5LCBhIHRoZSBzdGF0aW9uIHdpbGwgYmUgZGVhdXRoZW50aWNhdGVkIGFmdGVyCiAgKiBBUF9ERUFVVEhfREVMQVkuIEFQX1RJTUVPVVRfUkVTT0xVVElPTiBpcyB0aGUgcmVzb2x1dGlvbiB0aGF0IGlzIHVzZWQgd2l0aAogICogbWF4IGluYWN0aXZpdHkgdGltZXIuICovCiAjZGVmaW5lIEFQX01BWF9JTkFDVElWSVRZX1NFQyAoNSAqIDYwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9pb2N0bC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaG9zdGFwL2hvc3RhcF9pb2N0bC5jCmluZGV4IDYwMzg2MzMuLjEyZGU0NjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfaW9jdGwuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX2lvY3RsLmMKQEAgLTE5NDUsNyArMTk0NSw3IEBACiB9CiAKIAotLyogVHJhbnNsYXRlIHNjYW4gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBjYXJkIHRvIGEgY2FyZCBpbmRlcGVuZGFudAorLyogVHJhbnNsYXRlIHNjYW4gZGF0YSByZXR1cm5lZCBmcm9tIHRoZSBjYXJkIHRvIGEgY2FyZCBpbmRlcGVuZGVudAogICogZm9ybWF0IHRoYXQgdGhlIFdpcmVsZXNzIFRvb2xzIHdpbGwgdW5kZXJzdGFuZCAtIEplYW4gSUkgKi8KIHN0YXRpYyBpbmxpbmUgaW50IHByaXNtMl90cmFuc2xhdGVfc2Nhbihsb2NhbF9pbmZvX3QgKmxvY2FsLAogCQkJCQlzdHJ1Y3QgaXdfcmVxdWVzdF9pbmZvICppbmZvLApAQCAtMjA0Myw3ICsyMDQzLDcgQEAKIAkJICogdW50aWwgcmVzdWx0cyBhcmUgcmVhZHkgZm9yIHZhcmlvdXMgcmVhc29ucy4KIAkJICogRmlyc3QsIG1hbmFnaW5nIHdhaXQgcXVldWVzIGlzIGNvbXBsZXggYW5kIHJhY3kKIAkJICogKHRoZXJlIG1heSBiZSBtdWx0aXBsZSBzaW11bHRhbmVvdXMgY2FsbGVycykuCi0JCSAqIFNlY29uZCwgd2UgZ3JhYiBzb21lIHJ0bmV0bGluayBsb2NrIGJlZm9yZSBjb21taW5nCisJCSAqIFNlY29uZCwgd2UgZ3JhYiBzb21lIHJ0bmV0bGluayBsb2NrIGJlZm9yZSBjb21pbmcKIAkJICogaGVyZSAoaW4gZGV2X2lvY3RsKCkpLgogCQkgKiBUaGlyZCwgdGhlIGNhbGxlciBjYW4gd2FpdCBvbiB0aGUgV2lyZWxlc3MgRXZlbnQKIAkJICogLSBKZWFuIElJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ob3N0YXAvaG9zdGFwX3dsYW4uaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfd2xhbi5oCmluZGV4IDFjNjZiM2MuLjg4ZGM2YTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfd2xhbi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2hvc3RhcC9ob3N0YXBfd2xhbi5oCkBAIC04NTMsNyArODUzLDcgQEAKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgY29tbXNfcXVhbF91cGRhdGU7CiAKIAkvKiBSU1NJIHRvIGRCbSBhZGp1c3RtZW50IChmb3IgUlggZGVzY3JpcHRvciBmaWVsZHMpICovCi0JaW50IHJzc2lfdG9fZEJtOyAvKiBzdWJzdHJhY3QgZnJvbSBSU1NJIHRvIGdldCBhcHByb3hpbWF0ZSBkQm0gdmFsdWUgKi8KKwlpbnQgcnNzaV90b19kQm07IC8qIHN1YnRyYWN0IGZyb20gUlNTSSB0byBnZXQgYXBwcm94aW1hdGUgZEJtIHZhbHVlICovCiAKIAkvKiBCU1MgbGlzdCAvIHByb3RlY3RlZCBieSBsb2NhbC0+bG9jayAqLwogCXN0cnVjdCBsaXN0X2hlYWQgYnNzX2xpc3Q7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2lwdzIxMDAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjEwMC5jCmluZGV4IDRiOTdmOTEuLjQ0MzA3NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjEwMC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjEwMC5jCkBAIC02Myw3ICs2Myw3IEBACiBmaXJtd2FyZSBpZiBhIENvbW1hbmQgb3IgRGF0YSBpcyBiZWluZyBzZW50LiAgSWYgaXQgaXMgQ29tbWFuZCwgYWxsIG9mIHRoZQogY29tbWFuZCBpbmZvcm1hdGlvbiBpcyBjb250YWluZWQgd2l0aGluIHRoZSBwaHlzaWNhbCBhZGRyZXNzIHJlZmVycmVkIHRvIGJ5IHRoZQogVEJELiAgSWYgaXQgaXMgRGF0YSwgdGhlIGZpcnN0IFRCRCBpbmRpY2F0ZXMgdGhlIHR5cGUgb2YgZGF0YSBwYWNrZXQsIG51bWJlcgotb2YgZnJhZ21lbnRzLCBldGMuICBUaGUgbmV4dCBUQkQgdGhlbiByZWZlcnJzIHRvIHRoZSBhY3R1YWwgcGFja2V0IGxvY2F0aW9uLgorb2YgZnJhZ21lbnRzLCBldGMuICBUaGUgbmV4dCBUQkQgdGhlbiByZWZlcnMgdG8gdGhlIGFjdHVhbCBwYWNrZXQgbG9jYXRpb24uCiAKIFRoZSBUeCBmbG93IGN5Y2xlIGlzIGFzIGZvbGxvd3M6CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvaXB3MjIwMC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMjAwLmMKaW5kZXggMTYwODgxZi4uNDJjM2ZlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMjAwLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9pcHcyMjAwLmMKQEAgLTExODEsNyArMTE4MSw3IEBACiAvKgogICogVGhlIGZvbGxvd2luZyBhZGRzIGEgbmV3IGF0dHJpYnV0ZSB0byB0aGUgc3lzZnMgcmVwcmVzZW50YXRpb24KICAqIG9mIHRoaXMgZGV2aWNlIGRyaXZlciAoaS5lLiBhIG5ldyBmaWxlIGluIC9zeXMvYnVzL3BjaS9kcml2ZXJzL2lwdy8pCi0gKiB1c2VkIGZvciBjb250cm9saW5nIHRoZSBkZWJ1ZyBsZXZlbC4KKyAqIHVzZWQgZm9yIGNvbnRyb2xsaW5nIHRoZSBkZWJ1ZyBsZXZlbC4KICAqCiAgKiBTZWUgdGhlIGxldmVsIGRlZmluaXRpb25zIGluIGlwdyBmb3IgZGV0YWlscy4KICAqLwpAQCAtMzc2Myw3ICszNzYzLDcgQEAKIAogCXEtPnR4YiA9IGttYWxsb2Moc2l6ZW9mKHEtPnR4YlswXSkgKiBjb3VudCwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFxLT50eGIpIHsKLQkJSVBXX0VSUk9SKCJ2bWFsbG9jIGZvciBhdXhpbGFyeSBCRCBzdHJ1Y3R1cmVzIGZhaWxlZFxuIik7CisJCUlQV19FUlJPUigidm1hbGxvYyBmb3IgYXV4aWxpYXJ5IEJEIHN0cnVjdHVyZXMgZmFpbGVkXG4iKTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQogCkBAIC01NTgxLDcgKzU1ODEsNyBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQkvKiBWZXJpZnkgcHJpdmFjeSBjb21wYXRhYmlsaXR5ICovCisJLyogVmVyaWZ5IHByaXZhY3kgY29tcGF0aWJpbGl0eSAqLwogCWlmICgoKHByaXYtPmNhcGFiaWxpdHkgJiBDQVBfUFJJVkFDWV9PTikgPyAxIDogMCkgIT0KIAkgICAgKChuZXR3b3JrLT5jYXBhYmlsaXR5ICYgV0xBTl9DQVBBQklMSVRZX1BSSVZBQ1kpID8gMSA6IDApKSB7CiAJCUlQV19ERUJVR19NRVJHRSgiTmV0d29yayAnJXMgKCVwTSknIGV4Y2x1ZGVkICIKQEAgLTU4MDgsNyArNTgwOCw3IEBACiAJCXJldHVybiAwOwogCX0KIAotCS8qIFZlcmlmeSBwcml2YWN5IGNvbXBhdGFiaWxpdHkgKi8KKwkvKiBWZXJpZnkgcHJpdmFjeSBjb21wYXRpYmlsaXR5ICovCiAJaWYgKCgocHJpdi0+Y2FwYWJpbGl0eSAmIENBUF9QUklWQUNZX09OKSA/IDEgOiAwKSAhPQogCSAgICAoKG5ldHdvcmstPmNhcGFiaWxpdHkgJiBXTEFOX0NBUEFCSUxJVFlfUFJJVkFDWSkgPyAxIDogMCkpIHsKIAkJSVBXX0RFQlVHX0FTU09DKCJOZXR3b3JrICclcyAoJXBNKScgZXhjbHVkZWQgIgpAQCAtODE4NCw3ICs4MTg0LDcgQEAKIHN0YXRpYyBpbnQgaXNfbmV0d29ya19wYWNrZXQoc3RydWN0IGlwd19wcml2ICpwcml2LAogCQkJCSAgICBzdHJ1Y3QgbGliaXB3X2hkcl80YWRkciAqaGVhZGVyKQogewotCS8qIEZpbHRlciBpbmNvbWluZyBwYWNrZXRzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSB0YXJnZXR0ZWQgdG93YXJkCisJLyogRmlsdGVyIGluY29taW5nIHBhY2tldHMgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIHRhcmdldGVkIHRvd2FyZAogCSAqIHRoaXMgbmV0d29yaywgZGlzY2FyZGluZyBwYWNrZXRzIGNvbWluZyBmcm9tIG91cnNlbHZlcyAqLwogCXN3aXRjaCAocHJpdi0+aWVlZS0+aXdfbW9kZSkgewogCWNhc2UgSVdfTU9ERV9BREhPQzoJLyogSGVhZGVyOiBEZXN0LiB8IFNvdXJjZSAgICB8IEJTU0lEICovCkBAIC04MzQwLDkgKzgzNDAsOSBAQAogfQogCiAvKgotICogTWFpbiBlbnRyeSBmdW5jdGlvbiBmb3IgcmVjaWV2aW5nIGEgcGFja2V0IHdpdGggODAyMTEgaGVhZGVycy4gIFRoaXMKKyAqIE1haW4gZW50cnkgZnVuY3Rpb24gZm9yIHJlY2VpdmluZyBhIHBhY2tldCB3aXRoIDgwMjExIGhlYWRlcnMuICBUaGlzCiAgKiBzaG91bGQgYmUgY2FsbGVkIHdoZW4gZXZlciB0aGUgRlcgaGFzIG5vdGlmaWVkIHVzIHRoYXQgdGhlcmUgaXMgYSBuZXcKLSAqIHNrYiBpbiB0aGUgcmVjaWV2ZSBxdWV1ZS4KKyAqIHNrYiBpbiB0aGUgcmVjZWl2ZSBxdWV1ZS4KICAqLwogc3RhdGljIHZvaWQgaXB3X3J4KHN0cnVjdCBpcHdfcHJpdiAqcHJpdikKIHsKQEAgLTg2ODMsNyArODY4Myw3IEBACiAgKiBmdW5jdGlvbnMgZGVmaW5lZCBpbiBpcHdfbWFpbiB0byBwcm92aWRlIHRoZSBIVyBpbnRlcmFjdGlvbi4KICAqCiAgKiBUaGUgZXhjZXB0aW9uIHRvIHRoaXMgaXMgdGhlIHVzZSBvZiB0aGUgaXB3X2dldF9vcmRpbmFsKCkKLSAqIGZ1bmN0aW9uIHVzZWQgdG8gcG9sbCB0aGUgaGFyZHdhcmUgdnMuIG1ha2luZyB1bmVjZXNzYXJ5IGNhbGxzLgorICogZnVuY3Rpb24gdXNlZCB0byBwb2xsIHRoZSBoYXJkd2FyZSB2cy4gbWFraW5nIHVubmVjZXNzYXJ5IGNhbGxzLgogICoKICAqLwogCkBAIC0xMDQxOSw3ICsxMDQxOSw3IEBACiAKIAltZW1zZXQoJmR1bW15c3RhdHMsIDAsIHNpemVvZihkdW1teXN0YXRzKSk7CiAKLQkvKiBGaWx0ZXJpbmcgb2YgZnJhZ21lbnQgY2hhaW5zIGlzIGRvbmUgYWdhaW5zIHRoZSBmaXJzdCBmcmFnbWVudCAqLworCS8qIEZpbHRlcmluZyBvZiBmcmFnbWVudCBjaGFpbnMgaXMgZG9uZSBhZ2FpbnN0IHRoZSBmaXJzdCBmcmFnbWVudCAqLwogCWhkciA9ICh2b2lkICopdHhiLT5mcmFnbWVudHNbMF0tPmRhdGE7CiAJaWYgKGxpYmlwd19pc19tYW5hZ2VtZW50KGxlMTZfdG9fY3B1KGhkci0+ZnJhbWVfY29udHJvbCkpKSB7CiAJCWlmIChmaWx0ZXIgJiBJUFdfUFJPTV9OT19NR01UKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9saWJpcHdfcnguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2lwdzJ4MDAvbGliaXB3X3J4LmMKaW5kZXggMGRlMWIxOC4uZTVhZDc2YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXB3MngwMC9saWJpcHdfcnguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pcHcyeDAwL2xpYmlwd19yeC5jCkBAIC05MjUsNyArOTI1LDcgQEAKIHN0YXRpYyB1OCBxb3Nfb3VpW1FPU19PVUlfTEVOXSA9IHsgMHgwMCwgMHg1MCwgMHhGMiB9OwogCiAvKgotKiBNYWtlIHRoZXIgc3RydWN0dXJlIHdlIHJlYWQgZnJvbSB0aGUgYmVhY29uIHBhY2tldCBoYXMKKyogTWFrZSB0aGUgc3RydWN0dXJlIHdlIHJlYWQgZnJvbSB0aGUgYmVhY29uIHBhY2tldCB0byBoYXZlCiAqIHRoZSByaWdodCB2YWx1ZXMKICovCiBzdGF0aWMgaW50IGxpYmlwd192ZXJpZnlfcW9zX2luZm8oc3RydWN0IGxpYmlwd19xb3NfaW5mb3JtYXRpb25fZWxlbWVudApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWNvcmUuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1jb3JlLmMKaW5kZXggYTIwOWEwZS4uNzAwN2Q2MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLWNvcmUuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtY29yZS5jCkBAIC0xMDMwLDcgKzEwMzAsNyBAQAogCS8qCiAJICogRW5hYmxlIEhBUCBJTlRBIChpbnRlcnJ1cHQgZnJvbSBtYW5hZ2VtZW50IGJ1cykgdG8KIAkgKiB3YWtlIGRldmljZSdzIFBDSSBFeHByZXNzIGxpbmsgTDFhIC0+IEwwcwotCSAqIE5PVEU6ICBUaGlzIGlzIG5vLW9wIGZvciAzOTQ1IChub24tZXhpc3RhbnQgYml0KQorCSAqIE5PVEU6ICBUaGlzIGlzIG5vLW9wIGZvciAzOTQ1IChub24tZXhpc3RlbnQgYml0KQogCSAqLwogCWl3bF9sZWdhY3lfc2V0X2JpdChwcml2LCBDU1JfSFdfSUZfQ09ORklHX1JFRywKIAkJCQkgICAgQ1NSX0hXX0lGX0NPTkZJR19SRUdfQklUX0hBUF9XQUtFX0wxQSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtZmguaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1maC5oCmluZGV4IDRlMjBjN2UuLjZlNjA5MTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1maC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1maC5oCkBAIC00MzYsNyArNDM2LDcgQEAKICAqIEBmaW5pc2hlZF9yYl9udW0gWzA6MTFdIC0gSW5kaWNhdGVzIHRoZSBpbmRleCBvZiB0aGUgY3VycmVudCBSQgogICogCWluIHdoaWNoIHRoZSBsYXN0IGZyYW1lIHdhcyB3cml0dGVuIHRvCiAgKiBAZmluaXNoZWRfZnJfbnVtIFswOjExXSAtIEluZGljYXRlcyB0aGUgaW5kZXggb2YgdGhlIFJYIEZyYW1lCi0gKiAJd2hpY2ggd2FzIHRyYW5zZmVyZWQKKyAqIAl3aGljaCB3YXMgdHJhbnNmZXJyZWQKICAqLwogc3RydWN0IGl3bF9yYl9zdGF0dXMgewogCV9fbGUxNiBjbG9zZWRfcmJfbnVtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXNjYW4uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zY2FuLmMKaW5kZXggNjBmNTk3Zi4uMzUzMjM0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXNjYW4uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc2Nhbi5jCkBAIC0xNDMsNyArMTQzLDcgQEAKIAkJSVdMX0RFQlVHX1NDQU4ocHJpdiwgIlNlbmQgc2NhbiBhYm9ydCBmYWlsZWQgJWRcbiIsIHJldCk7CiAJCWl3bF9sZWdhY3lfZm9yY2Vfc2Nhbl9lbmQocHJpdik7CiAJfSBlbHNlCi0JCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTdWNlc3NmdWxseSBzZW5kIHNjYW4gYWJvcnRcbiIpOworCQlJV0xfREVCVUdfU0NBTihwcml2LCAiU3VjY2Vzc2Z1bGx5IHNlbmQgc2NhbiBhYm9ydFxuIik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXN0YS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsZWdhY3kvaXdsLXN0YS5jCmluZGV4IDQ3YzlkYTMuLjY2ZjBmYjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bGVnYWN5L2l3bC1zdGEuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2xlZ2FjeS9pd2wtc3RhLmMKQEAgLTExMCw3ICsxMTAsNyBAQAogCS8qCiAJICogWFhYOiBUaGUgTUFDIGFkZHJlc3MgaW4gdGhlIGNvbW1hbmQgYnVmZmVyIGlzIG9mdGVuIGNoYW5nZWQgZnJvbQogCSAqIHRoZSBvcmlnaW5hbCBzZW50IHRvIHRoZSBkZXZpY2UuIFRoYXQgaXMsIHRoZSBNQUMgYWRkcmVzcwotCSAqIHdyaXR0ZW4gdG8gdGhlIGNvbW1hbmQgYnVmZmVyIG9mdGVuIGlzIG5vdCB0aGUgc2FtZSBNQUMgYWRyZXNzCisJICogd3JpdHRlbiB0byB0aGUgY29tbWFuZCBidWZmZXIgb2Z0ZW4gaXMgbm90IHRoZSBzYW1lIE1BQyBhZGRyZXNzCiAJICogcmVhZCBmcm9tIHRoZSBjb21tYW5kIGJ1ZmZlciB3aGVuIHRoZSBjb21tYW5kIHJldHVybnMuIFRoaXMKIAkgKiBpc3N1ZSBoYXMgbm90IHlldCBiZWVuIHJlc29sdmVkIGFuZCB0aGlzIGRlYnVnZ2luZyBpcyBsZWZ0IHRvCiAJICogb2JzZXJ2ZSB0aGUgcHJvYmxlbS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWFnbi1pY3QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWFnbi1pY3QuYwppbmRleCBiNWNiM2JlLi5lZDAxNDhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1hZ24taWN0LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtYWduLWljdC5jCkBAIC02OSw3ICs2OSw3IEBACiAJaWYgKCFwcml2LT5fYWduLmljdF90YmxfdmlyKQogCQlyZXR1cm4gLUVOT01FTTsKIAotCS8qIGFsaWduIHRhYmxlIHRvIFBBR0VfU0laRSBib3VuZHJ5ICovCisJLyogYWxpZ24gdGFibGUgdG8gUEFHRV9TSVpFIGJvdW5kYXJ5ICovCiAJcHJpdi0+X2Fnbi5hbGlnbmVkX2ljdF90YmxfZG1hID0gQUxJR04ocHJpdi0+X2Fnbi5pY3RfdGJsX2RtYSwgUEFHRV9TSVpFKTsKIAogCUlXTF9ERUJVR19JU1IocHJpdiwgImljdCBkbWEgYWRkciAlTHggZG1hIGFsaWduZWQgJUx4IGRpZmYgJWRcbiIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1jb3JlLmMKaW5kZXggNmMzMGZhNi4uYmFmYmU1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtY29yZS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWNvcmUuYwpAQCAtMTA0MCw3ICsxMDQwLDcgQEAKIAkvKgogCSAqIEVuYWJsZSBIQVAgSU5UQSAoaW50ZXJydXB0IGZyb20gbWFuYWdlbWVudCBidXMpIHRvCiAJICogd2FrZSBkZXZpY2UncyBQQ0kgRXhwcmVzcyBsaW5rIEwxYSAtPiBMMHMKLQkgKiBOT1RFOiAgVGhpcyBpcyBuby1vcCBmb3IgMzk0NSAobm9uLWV4aXN0YW50IGJpdCkKKwkgKiBOT1RFOiAgVGhpcyBpcyBuby1vcCBmb3IgMzk0NSAobm9uLWV4aXN0ZW50IGJpdCkKIAkgKi8KIAlpd2xfc2V0X2JpdChwcml2LCBDU1JfSFdfSUZfQ09ORklHX1JFRywKIAkJCQkgICAgQ1NSX0hXX0lGX0NPTkZJR19SRUdfQklUX0hBUF9XQUtFX0wxQSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1maC5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtZmguaAppbmRleCA1NWI4MzcwLi40NzQwMDlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1maC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLWZoLmgKQEAgLTQzNiw3ICs0MzYsNyBAQAogICogQGZpbmlzaGVkX3JiX251bSBbMDoxMV0gLSBJbmRpY2F0ZXMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50IFJCCiAgKiAJaW4gd2hpY2ggdGhlIGxhc3QgZnJhbWUgd2FzIHdyaXR0ZW4gdG8KICAqIEBmaW5pc2hlZF9mcl9udW0gWzA6MTFdIC0gSW5kaWNhdGVzIHRoZSBpbmRleCBvZiB0aGUgUlggRnJhbWUKLSAqIAl3aGljaCB3YXMgdHJhbnNmZXJlZAorICogCXdoaWNoIHdhcyB0cmFuc2ZlcnJlZAogICovCiBzdHJ1Y3QgaXdsX3JiX3N0YXR1cyB7CiAJX19sZTE2IGNsb3NlZF9yYl9udW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zY2FuLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd2x3aWZpL2l3bC1zY2FuLmMKaW5kZXggM2E0ZDllNi4uOTE0Yzc3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdsd2lmaS9pd2wtc2Nhbi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bHdpZmkvaXdsLXNjYW4uYwpAQCAtMTQzLDcgKzE0Myw3IEBACiAJCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTZW5kIHNjYW4gYWJvcnQgZmFpbGVkICVkXG4iLCByZXQpOwogCQlpd2xfZm9yY2Vfc2Nhbl9lbmQocHJpdik7CiAJfSBlbHNlCi0JCUlXTF9ERUJVR19TQ0FOKHByaXYsICJTdWNlc3NmdWxseSBzZW5kIHNjYW4gYWJvcnRcbiIpOworCQlJV0xfREVCVUdfU0NBTihwcml2LCAiU3VjY2Vzc2Z1bGx5IHNlbmQgc2NhbiBhYm9ydFxuIik7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdtYzMyMDB3aWZpL2hhbC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdtYzMyMDB3aWZpL2hhbC5jCmluZGV4IDkwN2FjODkuLjFjYWJjYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2l3bWMzMjAwd2lmaS9oYWwuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvaGFsLmMKQEAgLTU3LDcgKzU3LDcgQEAKICAqICAgVGhpcyBpcyBkdWUgdG8gdGhlIGZhY3QgdGhlIGhvc3QgdGFsa3MgZXhjbHVzaXZlbHkKICAqICAgdG8gdGhlIFVNQUMgYW5kIHNvIHRoZXJlIG5lZWRzIHRvIGJlIGEgc3BlY2lhbCBVTUFDCiAgKiAgIGNvbW1hbmQgZm9yIHRhbGtpbmcgdG8gdGhlIExNQUMuCi0gKiAgIFRoaXMgaXMgaG93IGEgd2lmaSBjb21tYW5kIGlzIGxheWVkIG91dDoKKyAqICAgVGhpcyBpcyBob3cgYSB3aWZpIGNvbW1hbmQgaXMgbGFpZCBvdXQ6CiAgKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqICAgfCBpd21fdWRtYV9vdXRfd2lmaV9oZHIgIHwKICAqICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzIsNyArNzIsNyBAQAogICogICBUaG9zZSBjb21tYW5kcyBhcmUgaGFuZGxlZCBieSB0aGUgZGV2aWNlJ3MgYm9vdHJvbSwKICAqICAgYW5kIGFyZSB0eXBpY2FsbHkgc2VudCB3aGVuIHRoZSBVTUFDIGFuZCB0aGUgTE1BQwogICogICBhcmUgbm90IHlldCBhdmFpbGFibGUuCi0gKiAgICAqICAgVGhpcyBpcyBob3cgYSBub24td2lmaSBjb21tYW5kIGlzIGxheWVkIG91dDoKKyAqICAgICogICBUaGlzIGlzIGhvdyBhIG5vbi13aWZpIGNvbW1hbmQgaXMgbGFpZCBvdXQ6CiAgKiAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqICAgfCBpd21fdWRtYV9vdXRfbm9ud2lmaV9oZHIgIHwKICAqICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvaXdtYzMyMDB3aWZpL3R4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvdHguYwppbmRleCAzMjE2NjIxLi5iZTk4MDc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvdHguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9pd21jMzIwMHdpZmkvdHguYwpAQCAtMTk3LDcgKzE5Nyw3IEBACiAJc3Bpbl9sb2NrKCZpd20tPnR4X2NyZWRpdC5sb2NrKTsKIAogCWlmICghaXdtX3R4X2NyZWRpdF9vayhpd20sIGlkLCBuYikpIHsKLQkJSVdNX0RCR19UWChpd20sIERCRywgIk5vIGNyZWRpdCBhdmFsaWFibGUgZm9yIHBvb2xbJWRdXG4iLCBpZCk7CisJCUlXTV9EQkdfVFgoaXdtLCBEQkcsICJObyBjcmVkaXQgYXZhaWxhYmxlIGZvciBwb29sWyVkXVxuIiwgaWQpOwogCQlyZXQgPSAtRU5PU1BDOwogCQlnb3RvIG91dDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9SRUFETUUgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9SRUFETUUKaW5kZXggNjBmZDFhZi4uMTQ1M2VlYzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL1JFQURNRQorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9SRUFETUUKQEAgLTcwLDcgKzcwLDcgQEAKIAlUaGVzZSBjb21tYW5kcyBhcmUgdXNlZCB0byByZWFkIHRoZSBNQUMsIEJCUCBhbmQgUkYgcmVnaXN0ZXJzIGZyb20gdGhlCiAJY2FyZC4gIFRoZXNlIGNvbW1hbmRzIHRha2Ugb25lIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgb2Zmc2V0CiAJbG9jYXRpb24gdGhhdCBpcyB0byBiZSByZWFkLiAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBzcGVjaWZpZWQgaW4KLQloZXhhZGVjaW1hbCAoaXRzIHBvc3NpYmxlIHRvIHByZWNlZWQgcHJlY2VkaW5nIHRoZSBudW1iZXIgd2l0aCBhICIweCIpLgorCWhleGFkZWNpbWFsIChpdHMgcG9zc2libGUgdG8gcHJlY2VkZSBwcmVjZWRpbmcgdGhlIG51bWJlciB3aXRoIGEgIjB4IikuCiAKIAlQYXRoOiAvc3lzL2tlcm5lbC9kZWJ1Zy9saWJlcnRhc193aXJlbGVzcy9ldGhYL3JlZ2lzdGVycy8KIApAQCAtODQsNyArODQsNyBAQAogCVRoZXNlIGNvbW1hbmRzIGFyZSB1c2VkIHRvIHdyaXRlIHRoZSBNQUMsIEJCUCBhbmQgUkYgcmVnaXN0ZXJzIGluIHRoZQogCWNhcmQuICBUaGVzZSBjb21tYW5kcyB0YWtlIHR3byBwYXJhbWV0ZXJzIHRoYXQgc3BlY2lmeSB0aGUgb2Zmc2V0CiAJbG9jYXRpb24gYW5kIHRoZSB2YWx1ZSB0aGF0IGlzIHRvIGJlIHdyaXR0ZW4uIFRoaXMgcGFyYW1ldGVycyBtdXN0Ci0JYmUgc3BlY2lmaWVkIGluIGhleGFkZWNpbWFsIChpdHMgcG9zc2libGUgdG8gcHJlY2VlZCB0aGUgbnVtYmVyCisJYmUgc3BlY2lmaWVkIGluIGhleGFkZWNpbWFsIChpdHMgcG9zc2libGUgdG8gcHJlY2VkZSB0aGUgbnVtYmVyCiAJd2l0aCBhICIweCIpLgogCiAJVXNhZ2U6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9jZmcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NmZy5jCmluZGV4IDMwZWYwMzUuLjVjYWEyYWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NmZy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2NmZy5jCkBAIC0xMzUwLDcgKzEzNTAsNyBAQAogCQkgKiB3ZSByZW1vdmUgYWxsIGtleXMgbGlrZSBpbiB0aGUgV1BBL1dQQTIgc2V0dXAsCiAJCSAqIHdlIGp1c3QgZG9uJ3Qgc2V0IFJTTi4KIAkJICoKLQkJICogVGhlcmVmb3JlOiBmYWxsLXRocm91Z2h0CisJCSAqIFRoZXJlZm9yZTogZmFsbC10aHJvdWdoCiAJCSAqLwogCWNhc2UgV0xBTl9DSVBIRVJfU1VJVEVfVEtJUDoKIAljYXNlIFdMQU5fQ0lQSEVSX1NVSVRFX0NDTVA6CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9jcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvbGliZXJ0YXMvaWZfY3MuYwppbmRleCBmYzgxMjExLi44NzEyY2IyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX2NzLmMKQEAgLTkxMyw3ICs5MTMsNyBAQAogCQlnb3RvIG91dDM7CiAJfQogCi0JLyogQ2xlYXIgYW55IGludGVycnVwdCBjYXVzZSB0aGF0IGhhcHBlbmQgd2hpbGUgc2VuZGluZworCS8qIENsZWFyIGFueSBpbnRlcnJ1cHQgY2F1c2UgdGhhdCBoYXBwZW5lZCB3aGlsZSBzZW5kaW5nCiAJICogZmlybXdhcmUvaW5pdGlhbGl6aW5nIGNhcmQgKi8KIAlpZl9jc193cml0ZTE2KGNhcmQsIElGX0NTX0NBUkRfSU5UX0NBVVNFLCBJRl9DU19CSVRfTUFTSyk7CiAJaWZfY3NfZW5hYmxlX2ludHMoY2FyZCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9saWJlcnRhcy9pZl9zcGkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX3NwaS5oCmluZGV4IDhiMTQxN2QuLmQyYWMxZGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX3NwaS5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2xpYmVydGFzL2lmX3NwaS5oCkBAIC02Niw3ICs2Niw3IEBACiAjZGVmaW5lIElGX1NQSV9IT1NUX0lOVF9DVFJMX1JFRyAweDQwCS8qIEhvc3QgaW50ZXJydXB0IGNvbnRyb2xsZXIgcmVnICovCiAKICNkZWZpbmUgSUZfU1BJX0NBUkRfSU5UX0NBVVNFX1JFRyAweDQ0CS8qIENhcmQgaW50ZXJydXB0IGNhdXNlIHJlZyAqLwotI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfU1RBVFVTX1JFRyAweDQ4IC8qIENhcmQgaW50ZXJ1cHQgc3RhdHVzIHJlZyAqLworI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfU1RBVFVTX1JFRyAweDQ4IC8qIENhcmQgaW50ZXJydXB0IHN0YXR1cyByZWcgKi8KICNkZWZpbmUgSUZfU1BJX0NBUkRfSU5UX0VWRU5UX01BU0tfUkVHIDB4NEMgLyogQ2FyZCBpbnRlcnJ1cHQgZXZlbnQgbWFzayAqLwogI2RlZmluZSBJRl9TUElfQ0FSRF9JTlRfU1RBVFVTX01BU0tfUkVHCTB4NTAgLyogQ2FyZCBpbnRlcnJ1cHQgc3RhdHVzIG1hc2sgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmMKaW5kZXggNTZmNDM5ZC4uZjRmNDI1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvbWFjODAyMTFfaHdzaW0uYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jCkBAIC02Miw3ICs2Miw3IEBACiAgKiAJYW4gaW50ZXJzZWN0aW9uIHRvIG9jY3VyIGJ1dCBlYWNoIGRldmljZSB3aWxsIHN0aWxsIHVzZSB0aGVpcgogICogCXJlc3BlY3RpdmUgcmVndWxhdG9yeSByZXF1ZXN0ZWQgZG9tYWlucy4gU3Vic2VxdWVudCByYWRpb3Mgd2lsbAogICogCXVzZSB0aGUgcmVzdWx0aW5nIGludGVyc2VjdGlvbi4KLSAqIEBIV1NJTV9SRUdURVNUX1dPUkxEX1JPQU06IFVzZWQgZm9yIHRlc3RpbmcgdGhlIHdvcmxkIHJvYW1pbmcuIFdlIGFjb21wbGlzaAorICogQEhXU0lNX1JFR1RFU1RfV09STERfUk9BTTogVXNlZCBmb3IgdGVzdGluZyB0aGUgd29ybGQgcm9hbWluZy4gV2UgYWNjb21wbGlzaAogICoJdGhpcyBieSB1c2luZyBhIGN1c3RvbSBiZWFjb24tY2FwYWJsZSByZWd1bGF0b3J5IGRvbWFpbiBmb3IgdGhlIGZpcnN0CiAgKglyYWRpby4gQWxsIG90aGVyIGRldmljZSB3b3JsZCByb2FtLgogICogQEhXU0lNX1JFR1RFU1RfQ1VTVE9NX1dPUkxEOiBVc2VkIGZvciB0ZXN0aW5nIHRoZSBjdXN0b20gd29ybGQgcmVndWxhdG9yeQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvb3Jpbm9jby9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvb3Jpbm9jby9ody5jCmluZGV4IGI0NzcyYzEuLjNjNzg3N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL29yaW5vY28vaHcuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9vcmlub2NvL2h3LmMKQEAgLTEwMzEsNyArMTAzMSw3IEBACiAJZWxzZQogCQlidWYudHNjWzRdID0gMHgxMDsKIAotCS8qIFdhaXQgdXB0byAxMDBtcyBmb3IgdHggcXVldWUgdG8gZW1wdHkgKi8KKwkvKiBXYWl0IHVwIHRvIDEwMG1zIGZvciB0eCBxdWV1ZSB0byBlbXB0eSAqLwogCWZvciAoayA9IDEwMDsgayA+IDA7IGstLSkgewogCQl1ZGVsYXkoMTAwMCk7CiAJCXJldCA9IGhlcm1lc19yZWFkX3dvcmRyZWMoaHcsIFVTRVJfQkFQLCBIRVJNRVNfUklEX1RYUVVFVUVFTVBUWSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9tYWluLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvbWFpbi5jCmluZGV4IDM1NmU2YmIuLmE5NDY5OTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9tYWluLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcDU0L21haW4uYwpAQCAtNDY1LDcgKzQ2NSw3IEBACiAKIAkJaWYgKHNsb3QgPCAwKSB7CiAJCQkvKgotCQkJICogVGhlIGRldmljZSBzdXBwb3J0cyB0aGUgY2hvb3NlbiBhbGdvcml0aG0sIGJ1dCB0aGUKKwkJCSAqIFRoZSBkZXZpY2Ugc3VwcG9ydHMgdGhlIGNob3NlbiBhbGdvcml0aG0sIGJ1dCB0aGUKIAkJCSAqIGZpcm13YXJlIGRvZXMgbm90IHByb3ZpZGUgZW5vdWdoIGtleSBzbG90cyB0byBzdG9yZQogCQkJICogYWxsIG9mIHRoZW0uCiAJCQkgKiBCdXQgZW5jcnlwdGlvbiBvZmZsb2FkIGZvciBvdXRnb2luZyBmcmFtZXMgaXMgYWx3YXlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvcDU0c3BpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvcDU0c3BpLmMKaW5kZXggN2VjYzBiZC4uNmQ5MjA0ZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3A1NC9wNTRzcGkuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wNTQvcDU0c3BpLmMKQEAgLTI4Nyw3ICsyODcsNyBAQAogCWVuYWJsZV9pcnEoZ3Bpb190b19pcnEocDU0c3BpX2dwaW9faXJxKSk7CiAKIAkvKgotCSAqIG5lZWQgdG8gd2FpdCBhIHdoaWxlIGJlZm9yZSBkZXZpY2UgY2FuIGJlIGFjY2Vzc2VkLCB0aGUgbGVuZ2h0CisJICogbmVlZCB0byB3YWl0IGEgd2hpbGUgYmVmb3JlIGRldmljZSBjYW4gYmUgYWNjZXNzZWQsIHRoZSBsZW5ndGgKIAkgKiBpcyBqdXN0IGEgZ3Vlc3MKIAkgKi8KIAltc2xlZXAoMTApOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcHJpc201NC9pc2xwY2lfZXRoLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wcmlzbTU0L2lzbHBjaV9ldGguYwppbmRleCBkNDRmOGUyLi4yNjZkNDViIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9wcmlzbTU0L2lzbHBjaV9ldGguYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9wcmlzbTU0L2lzbHBjaV9ldGguYwpAQCAtMTEzLDcgKzExMyw3IEBACiAJICogYmUgYWxpZ25lZCBvbiBhIDQtYnl0ZSBib3VuZGFyeS4gSWYgV0RTIGlzIGVuYWJsZWQgYWRkIGFub3RoZXIgNiBieXRlcwogCSAqIGFuZCBhZGQgV0RTIGFkZHJlc3MgaW5mb3JtYXRpb24gKi8KIAlpZiAobGlrZWx5KCgobG9uZykgc2tiLT5kYXRhICYgMHgwMykgfCBpbml0X3dkcykpIHsKLQkJLyogZ2V0IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWRkIGFuZCByZS1hbGxpZ24gKi8KKwkJLyogZ2V0IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWRkIGFuZCByZS1hbGlnbiAqLwogCQlvZmZzZXQgPSAoNCAtIChsb25nKSBza2ItPmRhdGEpICYgMHgwMzsKIAkJb2Zmc2V0ICs9IGluaXRfd2RzID8gNiA6IDA7CiAKQEAgLTM0Miw3ICszNDIsNyBAQAogCQkJIHByaXYtPnBjaV9tYXBfcnhfYWRkcmVzc1tpbmRleF0sCiAJCQkgTUFYX0ZSQUdNRU5UX1NJWkVfUlggKyAyLCBQQ0lfRE1BX0ZST01ERVZJQ0UpOwogCi0JLyogdXBkYXRlIHRoZSBza2Igc3RydWN0dXJlIGFuZCBhbGxpZ24gdGhlIGJ1ZmZlciAqLworCS8qIHVwZGF0ZSB0aGUgc2tiIHN0cnVjdHVyZSBhbmQgYWxpZ24gdGhlIGJ1ZmZlciAqLwogCXNrYl9wdXQoc2tiLCBzaXplKTsKIAlpZiAob2Zmc2V0KSB7CiAJCS8qIHNoaWZ0IHRoZSBidWZmZXIgYWxsb2NhdGlvbiBvZmZzZXQgYnl0ZXMgdG8gZ2V0IHRoZSByaWdodCBmcmFtZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmF5Y3RsLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXljdGwuaAppbmRleCA0OWQ5YjI2Li5kNzY0NmYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXljdGwuaAorKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yYXljdGwuaApAQCAtNTc4LDcgKzU3OCw3IEBACiAgICAgVUNIQVIgIHZhclsxXTsKIH07CiAKLS8qKioqKiogRUNGIFJlY2VpdmUgQ29udHJvbCBTdHVjdHVyZSAoUkNTKSBBcmVhIGF0IFNoYXJlZCBSQU0gb2Zmc2V0IDB4MDgwMCAgKi8KKy8qKioqKiogRUNGIFJlY2VpdmUgQ29udHJvbCBTdHJ1Y3R1cmUgKFJDUykgQXJlYSBhdCBTaGFyZWQgUkFNIG9mZnNldCAweDA4MDAgICovCiAvKiBTdHJ1Y3R1cmVzIGZvciBjb21tYW5kIHNwZWNpZmljIHBhcmFtZXRlcnMgKHJjcy52YXIpICovCiBzdHJ1Y3QgcnhfcGFja2V0X2NtZCB7CiAgICAgVUNIQVIgcnhfZGF0YV9wdHJbMl07CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwLmgKaW5kZXggNzBiOWFiYi4uOGZiYzVmYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMC5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDAuaApAQCAtNjE2LDcgKzYxNiw3IEBACiAgKiBSRUFEX0NPTlRST0w6IDAgd3JpdGUgQkJQLCAxIHJlYWQgQkJQCiAgKiBCVVNZOiBBU0lDIGlzIGJ1c3kgZXhlY3V0aW5nIEJCUCBjb21tYW5kcwogICogQkJQX1BBUl9EVVI6IDAgNCBNQUMgY2xvY2tzLCAxIDggTUFDIGNsb2NrcwotICogQkJQX1JXX01PREU6IDAgc2VyaWFsLCAxIHBhcmFsZWxsCisgKiBCQlBfUldfTU9ERTogMCBzZXJpYWwsIDEgcGFyYWxsZWwKICAqLwogI2RlZmluZSBCQlBfQ1NSX0NGRwkJCTB4MTAxYwogI2RlZmluZSBCQlBfQ1NSX0NGR19WQUxVRQkJRklFTEQzMigweDAwMDAwMGZmKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMGxpYi5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MjgwMGxpYi5jCmluZGV4IDJlZTZjZWIuLmRiZjc0ZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDI4MDBsaWIuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyODAwbGliLmMKQEAgLTE1MTgsNyArMTUxOCw3IEBACiAJaWYgKHJmLT5jaGFubmVsID4gMTQpIHsKIAkJLyoKIAkJICogV2hlbiBUWCBwb3dlciBpcyBiZWxvdyAwLCB3ZSBzaG91bGQgaW5jcmVhc2UgaXQgYnkgNyB0bwotCQkgKiBtYWtlIGl0IGEgcG9zaXRpdmUgdmFsdWUgKE1pbnVtdW0gdmFsdWUgaXMgLTcpLgorCQkgKiBtYWtlIGl0IGEgcG9zaXRpdmUgdmFsdWUgKE1pbmltdW0gdmFsdWUgaXMgLTcpLgogCQkgKiBIb3dldmVyIHRoaXMgbWVhbnMgdGhhdCB2YWx1ZXMgYmV0d2VlbiAwIGFuZCA3IGhhdmUKIAkJICogZG91YmxlIG1lYW5pbmcsIGFuZCB3ZSBzaG91bGQgc2V0IGEgN0RCbSBib29zdCBmbGFnLgogCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDAuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDAuaAppbmRleCBhMzk0MGQ3Li43ZjEwMjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMC5oCkBAIC00ODQsMTMgKzQ4NCwxMyBAQAogCWVudW0gbmw4MDIxMV9pZnR5cGUgdHlwZTsKIAogCS8qCi0JICogVFNGIHN5bmMgdmFsdWUsIHRoaXMgaXMgZGVwZW5kYW50IG9uIHRoZSBvcGVyYXRpb24gdHlwZS4KKwkgKiBUU0Ygc3luYyB2YWx1ZSwgdGhpcyBpcyBkZXBlbmRlbnQgb24gdGhlIG9wZXJhdGlvbiB0eXBlLgogCSAqLwogCWVudW0gdHNmX3N5bmMgc3luYzsKIAogCS8qCi0JICogVGhlIE1BQyBhbmQgQlNTSUQgYWRkcmVzc2VzcyBhcmUgc2ltcGxlIGFycmF5IG9mIGJ5dGVzLAotCSAqIHRoZXNlIGFycmF5cyBhcmUgbGl0dGxlIGVuZGlhbiwgc28gd2hlbiBzZW5kaW5nIHRoZSBhZGRyZXNzZXNzCisJICogVGhlIE1BQyBhbmQgQlNTSUQgYWRkcmVzc2VzIGFyZSBzaW1wbGUgYXJyYXkgb2YgYnl0ZXMsCisJICogdGhlc2UgYXJyYXlzIGFyZSBsaXR0bGUgZW5kaWFuLCBzbyB3aGVuIHNlbmRpbmcgdGhlIGFkZHJlc3NlcwogCSAqIHRvIHRoZSBkcml2ZXJzLCBjb3B5IHRoZSBpdCBpbnRvIGEgZW5kaWFuLXNpZ25lZCB2YXJpYWJsZS4KIAkgKgogCSAqIE5vdGUgdGhhdCBhbGwgZGV2aWNlcyAoZXhjZXB0IHJ0MjUwMHVzYikgaGF2ZSAzMiBiaXRzCkBAIC0xMTMxLDcgKzExMzEsNyBAQAogICogQGRyb3A6IFRydWUgdG8gZHJvcCBhbGwgcGVuZGluZyBmcmFtZXMuCiAgKgogICogVGhpcyBmdW5jdGlvbiB3aWxsIGZsdXNoIHRoZSBxdWV1ZS4gQWZ0ZXIgdGhpcyBjYWxsCi0gKiB0aGUgcXVldWUgaXMgZ3VhcmVudGVlZCB0byBiZSBlbXB0eS4KKyAqIHRoZSBxdWV1ZSBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5LgogICovCiB2b2lkIHJ0MngwMHF1ZXVlX2ZsdXNoX3F1ZXVlKHN0cnVjdCBkYXRhX3F1ZXVlICpxdWV1ZSwgYm9vbCBkcm9wKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNvbmZpZy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNvbmZpZy5jCmluZGV4IGU3ZjY3ZDUuLjk0MTZlMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjb25maWcuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY29uZmlnLmMKQEAgLTYwLDcgKzYwLDcgQEAKIAkgKiBOb3RlIHRoYXQgd2hlbiBOVUxMIGlzIHBhc3NlZCBhcyBhZGRyZXNzIHdlIHdpbGwgc2VuZAogCSAqIDAwOjAwOjAwOjAwOjAwIHRvIHRoZSBkZXZpY2UgdG8gY2xlYXIgdGhlIGFkZHJlc3MuCiAJICogVGhpcyB3aWxsIHByZXZlbnQgdGhlIGRldmljZSBiZWluZyBjb25mdXNlZCB3aGVuIGl0IHdhbnRzCi0JICogdG8gQUNLIGZyYW1lcyBvciBjb25zaWRlcmVzIGl0c2VsZiBhc3NvY2lhdGVkLgorCSAqIHRvIEFDSyBmcmFtZXMgb3IgY29uc2lkZXJzIGl0c2VsZiBhc3NvY2lhdGVkLgogCSAqLwogCW1lbXNldChjb25mLm1hYywgMCwgc2l6ZW9mKGNvbmYubWFjKSk7CiAJaWYgKG1hYykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjcnlwdG8uYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBjcnlwdG8uYwppbmRleCA1ZTkwNzRiLi4zZjU2ODhmIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwY3J5cHRvLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGNyeXB0by5jCkBAIC0yMzcsNyArMjM3LDcgQEAKIAl9CiAKIAkvKgotCSAqIE5PVEU6IEFsd2F5cyBjb3VudCB0aGUgcGF5bG9hZCBhcyB0cmFuc2ZlcmVkLAorCSAqIE5PVEU6IEFsd2F5cyBjb3VudCB0aGUgcGF5bG9hZCBhcyB0cmFuc2ZlcnJlZCwKIAkgKiBldmVuIHdoZW4gYWxpZ25tZW50IHdhcyBzZXQgdG8gemVyby4gVGhpcyBpcyByZXF1aXJlZAogCSAqIGZvciBkZXRlcm1pbmluZyB0aGUgY29ycmVjdCBvZmZzZXQgZm9yIHRoZSBJQ1YgZGF0YS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkdW1wLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwZHVtcC5oCmluZGV4IDVkNmUwYjguLjA2M2ViY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBkdW1wLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGR1bXAuaApAQCAtNTEsNyArNTEsNyBAQAogICogICBbcnQyeDAwZHVtcCBoZWFkZXJdW2hhcmR3YXJlIGRlc2NyaXB0b3JdW2llZWU4MDIuMTEgZnJhbWVdCiAgKgogICogcnQyeDAwZHVtcCBoZWFkZXI6IFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZHVtcGVkIGZyYW1lLCBhcyB3ZWxsIGFzCi0gKglhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHVzZWZ1bGwgZm9yIGRlYnVnZ2luZy4gU2VlICZydDJ4MDBkdW1wX2hkci4KKyAqCWFkZGl0aW9uYWwgaW5mb3JtYXRpb24gdXNlZnVsIGZvciBkZWJ1Z2dpbmcuIFNlZSAmcnQyeDAwZHVtcF9oZHIuCiAgKiBoYXJkd2FyZSBkZXNjcmlwdG9yOiBEZXNjcmlwdG9yIHRoYXQgd2FzIHVzZWQgdG8gcmVjZWl2ZSBvciB0cmFuc21pdAogICoJdGhlIGZyYW1lLgogICogaWVlZTgwMi4xMSBmcmFtZTogVGhlIGFjdHVhbCBmcmFtZSB0aGF0IHdhcyByZWNlaXZlZCBvciB0cmFuc21pdHRlZC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBsaW5rLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwbGluay5jCmluZGV4IGM5NzViMGEuLjI5YWJmZGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBsaW5rLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMGxpbmsuYwpAQCAtMjgzLDcgKzI4Myw3IEBACiAJLyoqCiAJICogV2hpbGUgc2Nhbm5pbmcsIGxpbmsgdHVuaW5nIGlzIGRpc2FibGVkLiBCeSBkZWZhdWx0CiAJICogdGhlIG1vc3Qgc2Vuc2l0aXZlIHNldHRpbmdzIHdpbGwgYmUgdXNlZCB0byBtYWtlIHN1cmUKLQkgKiB0aGF0IGFsbCBiZWFjb25zIGFuZCBwcm9iZSByZXNwb25zZXMgd2lsbCBiZSByZWNpZXZlZAorCSAqIHRoYXQgYWxsIGJlYWNvbnMgYW5kIHByb2JlIHJlc3BvbnNlcyB3aWxsIGJlIHJlY2VpdmVkCiAJICogZHVyaW5nIHRoZSBzY2FuLgogCSAqLwogCWlmICh0ZXN0X2JpdChERVZJQ0VfU1RBVEVfU0NBTk5JTkcsICZydDJ4MDBkZXYtPmZsYWdzKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBxdWV1ZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmMKaW5kZXggNGIzYzcwZS4uNDM1ODA1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmMKQEAgLTU0Niw3ICs1NDYsNyBAQAogCX0KIAogCS8qCi0JICogV2hlbiBETUEgYWxsb2NhdGlvbiBpcyByZXF1aXJlZCB3ZSBzaG91bGQgZ3VhcmVudGVlIHRvIHRoZQorCSAqIFdoZW4gRE1BIGFsbG9jYXRpb24gaXMgcmVxdWlyZWQgd2Ugc2hvdWxkIGd1YXJhbnRlZSB0byB0aGUKIAkgKiBkcml2ZXIgdGhhdCB0aGUgRE1BIGlzIGFsaWduZWQgdG8gYSA0LWJ5dGUgYm91bmRhcnkuCiAJICogSG93ZXZlciBzb21lIGRyaXZlcnMgcmVxdWlyZSBMMiBwYWRkaW5nIHRvIHBhZCB0aGUgcGF5bG9hZAogCSAqIHJhdGhlciB0aGVuIHRoZSBoZWFkZXIuIFRoaXMgY291bGQgYmUgYSByZXF1aXJlbWVudCBmb3IKQEAgLTY4OSw3ICs2ODksNyBAQAogCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnF1ZXVlLT5pbmRleF9sb2NrLCBpcnFmbGFncyk7CiAKIAkvKgotCSAqIFN0YXJ0IGZyb20gdGhlIFRYIGRvbmUgcG9pbnRlciwgdGhpcyBndWFyZW50ZWVzIHRoYXQgd2Ugd2lsbAorCSAqIFN0YXJ0IGZyb20gdGhlIFRYIGRvbmUgcG9pbnRlciwgdGhpcyBndWFyYW50ZWVzIHRoYXQgd2Ugd2lsbAogCSAqIHNlbmQgb3V0IGFsbCBmcmFtZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCiAJICovCiAJaWYgKGluZGV4X3N0YXJ0IDwgaW5kZXhfZW5kKSB7CkBAIC04ODMsNyArODgzLDcgQEAKIAl9CiAKIAkvKgotCSAqIENoZWNrIGlmIGRyaXZlciBzdXBwb3J0cyBmbHVzaGluZywgd2UgY2FuIG9ubHkgZ3VhcmVudGVlCisJICogQ2hlY2sgaWYgZHJpdmVyIHN1cHBvcnRzIGZsdXNoaW5nLCB3ZSBjYW4gb25seSBndWFyYW50ZWUKIAkgKiBmdWxsIHN1cHBvcnQgZm9yIGZsdXNoaW5nIGlmIHRoZSBkcml2ZXIgaXMgYWJsZQogCSAqIHRvIGNhbmNlbCBhbGwgcGVuZGluZyBmcmFtZXMgKGRyb3AgPSB0cnVlKS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDBxdWV1ZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmgKaW5kZXggMGM4YjBjNi4uMjE3ODYxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHF1ZXVlLmgKQEAgLTM0NCw4ICszNDQsOCBAQAogICoJb25seSBiZSB0b3VjaGVkIGFmdGVyIHRoZSBkZXZpY2UgaGFzIHNpZ25hbGVkIGl0IGlzIGRvbmUgd2l0aCBpdC4KICAqIEBFTlRSWV9EQVRBX1BFTkRJTkc6IFRoaXMgZW50cnkgY29udGFpbnMgYSB2YWxpZCBmcmFtZSBhbmQgaXMgd2FpdGluZwogICoJZm9yIHRoZSBzaWduYWwgdG8gc3RhcnQgc2VuZGluZy4KLSAqIEBFTlRSWV9EQVRBX0lPX0ZBSUxFRDogSGFyZHdhcmUgaW5kaWNhdGVkIHRoYXQgYW4gSU8gZXJyb3Igb2NjdXJlZAotICoJd2hpbGUgdHJhbnNmZXJpbmcgdGhlIGRhdGEgdG8gdGhlIGhhcmR3YXJlLiBObyBUWCBzdGF0dXMgcmVwb3J0IHdpbGwKKyAqIEBFTlRSWV9EQVRBX0lPX0ZBSUxFRDogSGFyZHdhcmUgaW5kaWNhdGVkIHRoYXQgYW4gSU8gZXJyb3Igb2NjdXJyZWQKKyAqCXdoaWxlIHRyYW5zZmVycmluZyB0aGUgZGF0YSB0byB0aGUgaGFyZHdhcmUuIE5vIFRYIHN0YXR1cyByZXBvcnQgd2lsbAogICoJYmUgZXhwZWN0ZWQgZnJvbSB0aGUgaGFyZHdhcmUuCiAgKiBARU5UUllfREFUQV9TVEFUVVNfUEVORElORzogVGhlIGVudHJ5IGhhcyBiZWVuIHNlbmQgdG8gdGhlIGRldmljZSBhbmQKICAqCXJldHVybmVkLiBJdCBpcyBub3cgd2FpdGluZyBmb3IgdGhlIHN0YXR1cyByZXBvcnRpbmcgYmVmb3JlIHRoZQpAQCAtMzY1LDcgKzM2NSw3IEBACiAgKiBAZmxhZ3M6IEVudHJ5IGZsYWdzLCBzZWUgJmVudW0gcXVldWVfZW50cnlfZmxhZ3MuCiAgKiBAcXVldWU6IFRoZSBkYXRhIHF1ZXVlICgmc3RydWN0IGRhdGFfcXVldWUpIHRvIHdoaWNoIHRoaXMgZW50cnkgYmVsb25ncy4KICAqIEBza2I6IFRoZSBidWZmZXIgd2hpY2ggaXMgY3VycmVudGx5IGJlaW5nIHRyYW5zbWl0dGVkIChmb3IgVFggcXVldWUpLAotICoJb3IgdXNlZCB0byBkaXJlY3RseSByZWNpZXZlIGRhdGEgaW4gKGZvciBSWCBxdWV1ZSkuCisgKglvciB1c2VkIHRvIGRpcmVjdGx5IHJlY2VpdmUgZGF0YSBpbiAoZm9yIFJYIHF1ZXVlKS4KICAqIEBlbnRyeV9pZHg6IFRoZSBlbnRyeSBpbmRleCBudW1iZXIuCiAgKiBAcHJpdl9kYXRhOiBQcml2YXRlIGRhdGEgYmVsb25naW5nIHRvIHRoaXMgcXVldWUgZW50cnkuIFRoZSBwb2ludGVyCiAgKglwb2ludHMgdG8gZGF0YSBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgZHJpdmVyIGFuZCBxdWV1ZSB0eXBlLgpAQCAtMzg4LDcgKzM4OCw3IEBACiAgKiBAUV9JTkRFWDogSW5kZXggcG9pbnRlciB0byB0aGUgY3VycmVudCBlbnRyeSBpbiB0aGUgcXVldWUsIGlmIHRoaXMgZW50cnkgaXMKICAqCW93bmVkIGJ5IHRoZSBoYXJkd2FyZSB0aGVuIHRoZSBxdWV1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIGZ1bGwuCiAgKiBAUV9JTkRFWF9ETUFfRE9ORTogSW5kZXggcG9pbnRlciBmb3IgdGhlIG5leHQgZW50cnkgd2hpY2ggd2lsbCBoYXZlIGJlZW4KLSAqCXRyYW5zZmVyZWQgdG8gdGhlIGhhcmR3YXJlLgorICoJdHJhbnNmZXJyZWQgdG8gdGhlIGhhcmR3YXJlLgogICogQFFfSU5ERVhfRE9ORTogSW5kZXggcG9pbnRlciB0byB0aGUgbmV4dCBlbnRyeSB3aGljaCB3aWxsIGJlIGNvbXBsZXRlZCBieQogICoJdGhlIGhhcmR3YXJlIGFuZCBmb3Igd2hpY2ggd2UgbmVlZCB0byBydW4gdGhlIHR4ZG9uZSBoYW5kbGVyLiBJZiB0aGlzCiAgKgllbnRyeSBpcyBub3Qgb3duZWQgYnkgdGhlIGhhcmR3YXJlIHRoZSBxdWV1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIGVtcHR5LgpAQCAtNjI3LDcgKzYyNyw3IEBACiB9CiAKIC8qKgotICogcnQyeDAwcXVldWVfc3RhdHVzX3RpbWVvdXQgLSBDaGVjayBpZiBhIHRpbWVvdXQgb2NjdXJlZCBmb3IgU1RBVFVTIHJlcG9ydHMKKyAqIHJ0MngwMHF1ZXVlX3N0YXR1c190aW1lb3V0IC0gQ2hlY2sgaWYgYSB0aW1lb3V0IG9jY3VycmVkIGZvciBTVEFUVVMgcmVwb3J0cwogICogQHF1ZXVlOiBRdWV1ZSB0byBjaGVjay4KICAqLwogc3RhdGljIGlubGluZSBpbnQgcnQyeDAwcXVldWVfc3RhdHVzX3RpbWVvdXQoc3RydWN0IGRhdGFfcXVldWUgKnF1ZXVlKQpAQCAtNjM3LDcgKzYzNyw3IEBACiB9CiAKIC8qKgotICogcnQyeDAwcXVldWVfdGltZW91dCAtIENoZWNrIGlmIGEgdGltZW91dCBvY2N1cmVkIGZvciBETUEgdHJhbnNmZXJzCisgKiBydDJ4MDBxdWV1ZV90aW1lb3V0IC0gQ2hlY2sgaWYgYSB0aW1lb3V0IG9jY3VycmVkIGZvciBETUEgdHJhbnNmZXJzCiAgKiBAcXVldWU6IFF1ZXVlIHRvIGNoZWNrLgogICovCiBzdGF0aWMgaW5saW5lIGludCBydDJ4MDBxdWV1ZV9kbWFfdGltZW91dChzdHJ1Y3QgZGF0YV9xdWV1ZSAqcXVldWUpCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmMKaW5kZXggZmJlNzM1Zi4uMzZmMzg4ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHVzYi5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuYwpAQCAtMTczLDcgKzE3Myw3IEBACiAJLyoKIAkgKiBJZiB0aGUgdHJhbnNmZXIgdG8gaGFyZHdhcmUgc3VjY2VlZGVkLCBpdCBkb2VzIG5vdCBtZWFuIHRoZQogCSAqIGZyYW1lIHdhcyBzZW5kIG91dCBjb3JyZWN0bHkuIEl0IG9ubHkgbWVhbnMgdGhlIGZyYW1lCi0JICogd2FzIHN1Y2Nlc2Z1bGx5IHB1c2hlZCB0byB0aGUgaGFyZHdhcmUsIHdlIGhhdmUgbm8KKwkgKiB3YXMgc3VjY2Vzc2Z1bGx5IHB1c2hlZCB0byB0aGUgaGFyZHdhcmUsIHdlIGhhdmUgbm8KIAkgKiB3YXkgdG8gZGV0ZXJtaW5lIHRoZSB0cmFuc21pc3Npb24gc3RhdHVzIHJpZ2h0IG5vdy4KIAkgKiAoT25seSBpbmRpcmVjdGx5IGJ5IGxvb2tpbmcgYXQgdGhlIGZhaWxlZCBUWCBjb3VudGVycwogCSAqIGluIHRoZSByZWdpc3RlcikuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydDJ4MDAvcnQyeDAwdXNiLmgKaW5kZXggNmFhZjUxZi4uZTExYzc1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnQyeDAwL3J0MngwMHVzYi5oCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0MngwMC9ydDJ4MDB1c2IuaApAQCAtNDAwLDcgKzQwMCw3IEBACiAgKiBAcnQyeDAwZGV2OiBQb2ludGVyIHRvICZzdHJ1Y3QgcnQyeDAwX2RldgogICoKICAqIENoZWNrIHRoZSBoZWFsdGggb2YgdGhlIFVTQiBjb21tdW5pY2F0aW9uIGFuZCBkZXRlcm1pbmUKLSAqIGlmIHRpbWVvdXRzIGhhdmUgb2NjdXJlZC4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhpcyBmdW5jdGlvbgorICogaWYgdGltZW91dHMgaGF2ZSBvY2N1cnJlZC4gSWYgdGhpcyBpcyB0aGUgY2FzZSwgdGhpcyBmdW5jdGlvbgogICogd2lsbCByZXNldCBhbGwgY29tbXVuaWNhdGlvbiB0byByZXN0b3JlIGZ1bmN0aW9uYWxpdHkgYWdhaW4uCiAgKi8KIHZvaWQgcnQyeDAwdXNiX3dhdGNoZG9nKHN0cnVjdCBydDJ4MDBfZGV2ICpydDJ4MDBkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9iYXNlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL2Jhc2UuYwppbmRleCBiYjBjNzgxLi4wZDdkOTNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL2Jhc2UuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL2Jhc2UuYwpAQCAtNTIwLDcgKzUyMCw3IEBACiAJCQkgKmJlY2F1c2UgaHcgd2lsbCBuZXJ2ZXIgdXNlIGh3X3JhdGUKIAkJCSAqd2hlbiB0Y2JfZGVzYy0+dXNlX2RyaXZlcl9yYXRlID0gZmFsc2UKIAkJCSAqc28gd2UgbmV2ZXIgc2V0IGhpZ2hlc3QgTiByYXRlIGhlcmUsCi0JCQkgKmFuZCBOIHJhdGUgd2lsbCBhbGwgYmUgY29udHJvbGVkIGJ5IEZXCisJCQkgKmFuZCBOIHJhdGUgd2lsbCBhbGwgYmUgY29udHJvbGxlZCBieSBGVwogCQkJICp3aGVuIHRjYl9kZXNjLT51c2VfZHJpdmVyX3JhdGUgPSBmYWxzZQogCQkJICovCiAJCQlpZiAocnRsbWFjLT5odF9lbmFibGUpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcGNpLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3BjaS5jCmluZGV4IDljZDc3MDMuLjU5MzhmNmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcGNpLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS9wY2kuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiAJICogMCAtIERpc2FibGUgQVNQTSwKIAkgKiAxIC0gRW5hYmxlIEFTUE0gd2l0aG91dCBDbG9jayBSZXEsCiAJICogMiAtIEVuYWJsZSBBU1BNIHdpdGggQ2xvY2sgUmVxLAotCSAqIDMgLSBBbHd5YXMgRW5hYmxlIEFTUE0gd2l0aCBDbG9jayBSZXEsCisJICogMyAtIEFsd2F5cyBFbmFibGUgQVNQTSB3aXRoIENsb2NrIFJlcSwKIAkgKiA0IC0gQWx3YXlzIEVuYWJsZSBBU1BNIHdpdGhvdXQgQ2xvY2sgUmVxLgogCSAqIHNldCBkZWZ1bHQgdG8gUlRMODE5MkNFOjMgUlRMODE5MkU6MgogCSAqICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9ydGx3aWZpL3JlZ2QuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jCmluZGV4IDMzMzZjYTkuLmQyNmY5NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvcmVnZC5jCkBAIC0xNzksNyArMTc5LDcgQEAKIAl9CiAKIAkvKgotCSAqSWYgYSBjb3VudHJ5IElFIGhhcyBiZWVuIHJlY2lldmVkIGNoZWNrIGl0cyBydWxlIGZvciB0aGlzCisJICpJZiBhIGNvdW50cnkgSUUgaGFzIGJlZW4gcmVjZWl2ZWQgY2hlY2sgaXRzIHJ1bGUgZm9yIHRoaXMKIAkgKmNoYW5uZWwgZmlyc3QgYmVmb3JlIGVuYWJsaW5nIGFjdGl2ZSBzY2FuLiBUaGUgcGFzc2l2ZSBzY2FuCiAJICp3b3VsZCBoYXZlIGJlZW4gZW5mb3JjZWQgYnkgdGhlIGluaXRpYWwgcHJvY2Vzc2luZyBvZiBvdXIKIAkgKmN1c3RvbSByZWd1bGF0b3J5IGRvbWFpbi4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3J0bHdpZmkvd2lmaS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS93aWZpLmgKaW5kZXggMDEyMjZmOC4uMDdkYjk1ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS93aWZpLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcnRsd2lmaS93aWZpLmgKQEAgLTE1NTUsNyArMTU1NSw3IEBACiAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICAgIEJsdWV0b290aCBDby1leGlzdGFuY2UgUmVsYXRlZAorICAgIEJsdWV0b290aCBDby1leGlzdGVuY2UgUmVsYXRlZAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogZW51bSBidF9hbnRfbnVtIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTI1MS9jbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTI1MS9jbWQuYwppbmRleCAwYWRlNGJkLi44MWYxNjRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyNTEvY21kLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL2NtZC5jCkBAIC0xMDQsNyArMTA0LDcgQEAKICAqIEB3bDogd2wgc3RydWN0CiAgKiBAaWQ6IGFjeCBpZAogICogQGJ1ZjogYnVmZmVyIGZvciB0aGUgcmVzcG9uc2UsIGluY2x1ZGluZyBhbGwgaGVhZGVycywgbXVzdCB3b3JrIHdpdGggZG1hCi0gKiBAbGVuOiBsZW5naHQgb2YgYnVmCisgKiBAbGVuOiBsZW5ndGggb2YgYnVmCiAgKi8KIGludCB3bDEyNTFfY21kX2ludGVycm9nYXRlKHN0cnVjdCB3bDEyNTEgKndsLCB1MTYgaWQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTI1MS9yeC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL3J4LmMKaW5kZXggYzFiM2IzZi4uNmFmMzUyNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL3J4LmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMjUxL3J4LmMKQEAgLTE3OSw3ICsxNzksNyBAQAogCXJ4X2J1ZmZlciA9IHNrYl9wdXQoc2tiLCBsZW5ndGgpOwogCXdsMTI1MV9tZW1fcmVhZCh3bCwgcnhfcGFja2V0X3JpbmdfYWRkciwgcnhfYnVmZmVyLCBsZW5ndGgpOwogCi0JLyogVGhlIGFjdHVhbCBsZW5naHQgZG9lc24ndCBpbmNsdWRlIHRoZSB0YXJnZXQncyBhbGlnbm1lbnQgKi8KKwkvKiBUaGUgYWN0dWFsIGxlbmd0aCBkb2Vzbid0IGluY2x1ZGUgdGhlIHRhcmdldCdzIGFsaWdubWVudCAqLwogCXNrYi0+bGVuID0gZGVzYy0+bGVuZ3RoICAtIFBMQ1BfSEVBREVSX0xFTkdUSDsKIAogCWZjID0gKHUxNiAqKXNrYi0+ZGF0YTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jbWQuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jbWQuYwppbmRleCBmMGFhN2FiLi45NjMyNDMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvY21kLmMKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NtZC5jCkBAIC0zNTksNyArMzU5LDcgQEAKICAqIEB3bDogd2wgc3RydWN0CiAgKiBAaWQ6IGFjeCBpZAogICogQGJ1ZjogYnVmZmVyIGZvciB0aGUgcmVzcG9uc2UsIGluY2x1ZGluZyBhbGwgaGVhZGVycywgbXVzdCB3b3JrIHdpdGggZG1hCi0gKiBAbGVuOiBsZW5naHQgb2YgYnVmCisgKiBAbGVuOiBsZW5ndGggb2YgYnVmCiAgKi8KIGludCB3bDEyNzFfY21kX2ludGVycm9nYXRlKHN0cnVjdCB3bDEyNzEgKndsLCB1MTYgaWQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jb25mLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy93bDEyeHgvY29uZi5oCmluZGV4IDg1NmE4YTIuLjhhODMyMzggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9jb25mLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2NvbmYuaApAQCAtNDk3LDcgKzQ5Nyw3IEBACiAjZGVmaW5lIENPTkZfVFhfUkFURV9SRVRSWV9MSU1JVCAgICAgICAxMAogCiAvKgotICogUmF0ZXMgc3VwcG9ydGVkIGZvciBkYXRhIHBhY2tldHMgd2hlbiBvcGVyYXRpbmcgYXMgQVAuIE5vdGUgdGhlIGFic2Vuc2UKKyAqIFJhdGVzIHN1cHBvcnRlZCBmb3IgZGF0YSBwYWNrZXRzIHdoZW4gb3BlcmF0aW5nIGFzIEFQLiBOb3RlIHRoZSBhYnNlbmNlCiAgKiBvZiB0aGUgMjJNYnBzIHJhdGUuIFRoZXJlIGlzIGEgRlcgbGltaXRhdGlvbiBvbiAxMiByYXRlcyBzbyB3ZSBtdXN0IGRyb3AKICAqIG9uZS4gVGhlIHJhdGUgZHJvcHBlZCBpcyBub3QgbWFuZGF0b3J5IHVuZGVyIGFueSBvcGVyYXRpbmcgbW9kZS4KICAqLwpAQCAtNTcyLDcgKzU3Miw3IEBACiAJQ09ORl9UWF9BQ19CSyA9IDEsICAgICAgICAgLyogYmFja2dyb3VuZCAqLwogCUNPTkZfVFhfQUNfVkkgPSAyLCAgICAgICAgIC8qIHZpZGVvICovCiAJQ09ORl9UWF9BQ19WTyA9IDMsICAgICAgICAgLyogdm9pY2UgKi8KLQlDT05GX1RYX0FDX0NUUzJTRUxGID0gNCwgICAvKiBmaWN0aW91cyBBQywgZm9sbG93cyBBQ19WTyAqLworCUNPTkZfVFhfQUNfQ1RTMlNFTEYgPSA0LCAgIC8qIGZpY3RpdGlvdXMgQUMsIGZvbGxvd3MgQUNfVk8gKi8KIAlDT05GX1RYX0FDX0FOWV9USUQgPSAweDFmCiB9OwogCkBAIC0xMTY5LDcgKzExNjksNyBAQAogCiAJLyoKIAkgKiBNaW5pbXVtIHJlcXVpcmVkIGZyZWUgdHggbWVtb3J5IGJsb2NrcyBpbiBvcmRlciB0byBhc3N1cmUgb3B0aW11bQotCSAqIHBlcmZvcm1lbmNlCisJICogcGVyZm9ybWFuY2UKIAkgKgogCSAqIFJhbmdlOiAwLTEyMAogCSAqLwpAQCAtMTE3Nyw3ICsxMTc3LDcgQEAKIAogCS8qCiAJICogTWluaW11bSByZXF1aXJlZCBmcmVlIHJ4IG1lbW9yeSBibG9ja3MgaW4gb3JkZXIgdG8gYXNzdXJlIG9wdGltdW0KLQkgKiBwZXJmb3JtZW5jZQorCSAqIHBlcmZvcm1hbmNlCiAJICoKIAkgKiBSYW5nZTogMC0xMjAKIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMTJ4eC9pby5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2lvLmgKaW5kZXggYzFhYWM4Mi4uMDBjNzcxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2lvLmgKKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wxMnh4L2lvLmgKQEAgLTk0LDcgKzk0LDcgQEAKIAkgKiB0cmFuc2xhdGVkIHJlZ2lvbi4KIAkgKgogCSAqIFRoZSB0cmFuc2xhdGVkIHJlZ2lvbnMgb2NjdXIgbmV4dCB0byBlYWNoIG90aGVyIGluIHBoeXNpY2FsIGRldmljZQotCSAqIG1lbW9yeSwgc28ganVzdCBhZGQgdGhlIHNpemVzIG9mIHRoZSBwcmVjZWVkaW5nIGFkZHJlc3MgcmVnaW9ucyB0bworCSAqIG1lbW9yeSwgc28ganVzdCBhZGQgdGhlIHNpemVzIG9mIHRoZSBwcmVjZWRpbmcgYWRkcmVzcyByZWdpb25zIHRvCiAJICogZ2V0IHRoZSBvZmZzZXQgdG8gdGhlIG5ldyByZWdpb24uCiAJICoKIAkgKiBDdXJyZW50bHksIG9ubHkgdGhlIHR3byBmaXJzdCByZWdpb25zIGFyZSBhZGRyZXNzZWQsIGFuZCB0aGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMzUwMV9jcy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3Mvd2wzNTAxX2NzLmMKaW5kZXggM2U1YmVmZTQuLmZjMDhmMzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMzUwMV9jcy5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3dsMzUwMV9jcy5jCkBAIC0yOTAsNyArMjkwLDcgQEAKICAqICBcICAgICAgICAgICAgICAgXC0gSUVFRSA4MDIuMTEgLS8gXC0tLS0tLS0tLS0tLS0tIGxlbiAtLS0tLS0tLS0tLS0tLS8KICAqICAgXC1zdHJ1Y3Qgd2wzNTAxXzgwMjExX3R4X2hkci0tLyAgIFwtLS0tLS0tLSBFdGhlcm5ldCBGcmFtZSAtLS0tLS0tLwogICoKLSAqIFJldHVybiA9IFBvc3Rpb24gaW4gQ2FyZAorICogUmV0dXJuID0gUG9zaXRpb24gaW4gQ2FyZAogICovCiBzdGF0aWMgdTE2IHdsMzUwMV9nZXRfdHhfYnVmZmVyKHN0cnVjdCB3bDM1MDFfY2FyZCAqdGhpcywgdTE2IGxlbikKIHsKQEAgLTE5MzIsNyArMTkzMiw3IEBACiAJdGhpcy0+YmFzZV9hZGRyID0gZGV2LT5iYXNlX2FkZHI7CiAKIAlpZiAoIXdsMzUwMV9nZXRfZmxhc2hfbWFjX2FkZHIodGhpcykpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiJXM6IENhbnQgcmVhZCBNQUMgYWRkciBpbiBmbGFzaCBST00/XG4iLAorCQlwcmludGsoS0VSTl9XQVJOSU5HICIlczogQ2FuJ3QgcmVhZCBNQUMgYWRkciBpbiBmbGFzaCBST00/XG4iLAogCQkgICAgICAgZGV2LT5uYW1lKTsKIAkJdW5yZWdpc3Rlcl9uZXRkZXYoZGV2KTsKIAkJZ290byBmYWlsZWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl9yZjI5NTkuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3JmMjk1OS5jCmluZGV4IDA1OTdkODYuLmUzNjExNzQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3JmMjk1OS5jCisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3pkMTIxMXJ3L3pkX3JmX3JmMjk1OS5jCkBAIC0xNjksNyArMTY5LDcgQEAKIAkJeyBDUjg1LCAgMHgwMCB9LCB7IENSODYsICAweDEwIH0sIHsgQ1I4NywgIDB4MkEgfSwKIAkJeyBDUjg4LCAgMHgxMCB9LCB7IENSODksICAweDI0IH0sIHsgQ1I5MCwgIDB4MTggfSwKIAkJLyogeyBDUjkxLCAgMHgxOCB9LCAqLwotCQkvKiBzaG91bGQgc29sdmUgY29udGlub3VzIENUUyBmcmFtZSBwcm9ibGVtcyAqLworCQkvKiBzaG91bGQgc29sdmUgY29udGludW91cyBDVFMgZnJhbWUgcHJvYmxlbXMgKi8KIAkJeyBDUjkxLCAgMHgwMCB9LAogCQl7IENSOTIsICAweDBhIH0sIHsgQ1I5MywgIDB4MDAgfSwgeyBDUjk0LCAgMHgwMSB9LAogCQl7IENSOTUsICAweDAwIH0sIHsgQ1I5NiwgIDB4NDAgfSwgeyBDUjk3LCAgMHgzNyB9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvemQxMjExcncvemRfcmZfdXcyNDUzLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl91dzI0NTMuYwppbmRleCA5ZTc0ZWIxLi5iYTBhMGNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl91dzI0NTMuYworKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy96ZDEyMTFydy96ZF9yZl91dzI0NTMuYwpAQCAtMzUzLDcgKzM1Myw3IEBACiAJfTsKIAogCXN0YXRpYyBjb25zdCB1MzIgcnZbXSA9IHsKLQkJVVcyNDUzX1JFR1dSSVRFKDQsIDB4MmIpLCAgICAvKiBjb25maWd1cmUgcmVjaWV2ZXIgZ2FpbiAqLworCQlVVzI0NTNfUkVHV1JJVEUoNCwgMHgyYiksICAgIC8qIGNvbmZpZ3VyZSByZWNlaXZlciBnYWluICovCiAJCVVXMjQ1M19SRUdXUklURSg1LCAweDE5ZTRmKSwgLyogY29uZmlndXJlIHRyYW5zbWl0dGVyIGdhaW4gKi8KIAkJVVcyNDUzX1JFR1dSSVRFKDYsIDB4ZjgxYWQpLCAvKiBlbmFibGUgUlgvVFggZmlsdGVyIHR1bmluZyAqLwogCQlVVzI0NTNfUkVHV1JJVEUoNywgMHgzZmZmZSksIC8qIGRpc2FibGUgVFggZ2FpbiBpbiB0ZXN0IG1vZGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3hpbGlueF9lbWFjbGl0ZS5jIGIvZHJpdmVycy9uZXQveGlsaW54X2VtYWNsaXRlLmMKaW5kZXggMjY0MmFmNC4uMzcyNTcyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQveGlsaW54X2VtYWNsaXRlLmMKKysrIGIvZHJpdmVycy9uZXQveGlsaW54X2VtYWNsaXRlLmMKQEAgLTc4Niw3ICs3ODYsNyBAQAogICogQHJlZzoJcmVnaXN0ZXIgbnVtYmVyIHRvIHdyaXRlIHRvCiAgKiBAdmFsOgl2YWx1ZSB0byB3cml0ZSB0byB0aGUgcmVnaXN0ZXIgbnVtYmVyIHNwZWNpZmllZCBieSByZWcKICAqCi0gKiBUaGlzIGZ1Y250aW9uIHdhaXRzIHRpbGwgdGhlIGRldmljZSBpcyByZWFkeSB0byBhY2NlcHQgYSBuZXcgTURJTworICogVGhpcyBmdW5jdGlvbiB3YWl0cyB0aWxsIHRoZSBkZXZpY2UgaXMgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IE1ESU8KICAqIHJlcXVlc3QgYW5kIHRoZW4gd3JpdGVzIHRoZSB2YWwgdG8gdGhlIE1ESU8gV3JpdGUgRGF0YSByZWdpc3Rlci4KICAqLwogc3RhdGljIGludCB4ZW1hY2xpdGVfbWRpb193cml0ZShzdHJ1Y3QgbWlpX2J1cyAqYnVzLCBpbnQgcGh5X2lkLCBpbnQgcmVnLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvem5ldC5jIGIvZHJpdmVycy9uZXQvem5ldC5jCmluZGV4IGFlMDdiM2QuLmVjMjgwMGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3puZXQuYworKysgYi9kcml2ZXJzL25ldC96bmV0LmMKQEAgLTY1Miw3ICs2NTIsNyBAQAogCQkJCQlkZXYtPnN0YXRzLnR4X2Vycm9ycysrOwogCiAJCQkJLyogVHJhbnNjZWl2ZXIgbWF5IGJlIHN0dWNrIGlmIGNhYmxlCi0JCQkJICogd2FzIHJlbW92ZWQgd2hpbGUgZW1pdGluZyBhCisJCQkJICogd2FzIHJlbW92ZWQgd2hpbGUgZW1pdHRpbmcgYQogCQkJCSAqIHBhY2tldC4gRmxpcCBpdCBvZmYsIHRoZW4gb24gdG8KIAkJCQkgKiByZXNldCBpdC4gVGhpcyBpcyB2ZXJ5IGVtcGlyaWNhbCwKIAkJCQkgKiBidXQgaXQgc2VlbXMgdG8gd29yay4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2YvZmR0LmMgYi9kcml2ZXJzL29mL2ZkdC5jCmluZGV4IGM5ZGI0OWMuLjhiNjNhNjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvb2YvZmR0LmMKKysrIGIvZHJpdmVycy9vZi9mZHQuYwpAQCAtNjc2LDcgKzY3Niw3IEBACiAKIAllYXJseV9pbml0X2R0X2NoZWNrX2Zvcl9pbml0cmQobm9kZSk7CiAKLQkvKiBSZXRyZWl2ZSBjb21tYW5kIGxpbmUgKi8KKwkvKiBSZXRyaWV2ZSBjb21tYW5kIGxpbmUgKi8KIAlwID0gb2ZfZ2V0X2ZsYXRfZHRfcHJvcChub2RlLCAiYm9vdGFyZ3MiLCAmbCk7CiAJaWYgKHAgIT0gTlVMTCAmJiBsID4gMCkKIAkJc3RybGNweShjbWRfbGluZSwgcCwgbWluKChpbnQpbCwgQ09NTUFORF9MSU5FX1NJWkUpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvb2Yvb2ZfbWRpby5jIGIvZHJpdmVycy9vZi9vZl9tZGlvLmMKaW5kZXggZGNkNzg1Ny4uZDM1ZTMwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9vZi9vZl9tZGlvLmMKKysrIGIvZHJpdmVycy9vZi9vZl9tZGlvLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogICogQGhuZGxyOiBMaW5rIHN0YXRlIGNhbGxiYWNrIGZvciB0aGUgbmV0d29yayBkZXZpY2UKICAqIEBpZmFjZTogUEhZIGRhdGEgaW50ZXJmYWNlIHR5cGUKICAqCi0gKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGh5X2RldmljZSBpZiBzdWNjZXNzZnVsbC4gIE5VTEwgb3RoZXJ3aXNlCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGh5X2RldmljZSBpZiBzdWNjZXNzZnVsLiAgTlVMTCBvdGhlcndpc2UKICAqLwogc3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJICBzdHJ1Y3QgZGV2aWNlX25vZGUgKnBoeV9ucCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGFyaXNjL3BkY19zdGFibGUuYyBiL2RyaXZlcnMvcGFyaXNjL3BkY19zdGFibGUuYwppbmRleCAxMDYyYjhmLi4yNDZhOTJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcmlzYy9wZGNfc3RhYmxlLmMKKysrIGIvZHJpdmVycy9wYXJpc2MvcGRjX3N0YWJsZS5jCkBAIC0xNDEsNyArMTQxLDcgQEAKICAqIEBlbnRyeTogQSBwb2ludGVyIHRvIGFuIGFsbG9jYXRlZCBwZGNzcGF0aF9lbnRyeS4KICAqIAogICogVGhlIGdlbmVyYWwgaWRlYSBpcyB0aGF0IHlvdSBkb24ndCByZWFkIGZyb20gdGhlIFN0YWJsZSBTdG9yYWdlIGV2ZXJ5IHRpbWUKLSAqIHlvdSBhY2Nlc3MgdGhlIGZpbGVzIHByb3ZpZGVkIGJ5IHRoZSBmYWNpbGl0ZXMuIFdlIHN0b3JlIGEgY29weSBvZiB0aGUKKyAqIHlvdSBhY2Nlc3MgdGhlIGZpbGVzIHByb3ZpZGVkIGJ5IHRoZSBmYWNpbGl0aWVzLiBXZSBzdG9yZSBhIGNvcHkgb2YgdGhlCiAgKiBjb250ZW50IG9mIHRoZSBzdGFibGUgc3RvcmFnZSBXUlQgdmFyaW91cyBwYXRocyBpbiB0aGVzZSBzdHJ1Y3RzLiBXZSByZWFkCiAgKiB0aGVzZSBzdHJ1Y3RzIHdoZW4gcmVhZGluZyB0aGUgZmlsZXMsIGFuZCB3ZSB3aWxsIHdyaXRlIHRvIHRoZXNlIHN0cnVjdHMgd2hlbgogICogd3JpdGluZyB0byB0aGUgZmlsZXMsIGFuZCBvbmx5IHRoZW4gd3JpdGUgdGhlbSBiYWNrIHRvIHRoZSBTdGFibGUgU3RvcmFnZS4KQEAgLTIxMyw3ICsyMTMsNyBAQAogCiAJLyogYWRkciwgZGV2cGF0aCBhbmQgY291bnQgbXVzdCBiZSB3b3JkIGFsaWduZWQgKi8KIAlpZiAocGRjX3N0YWJsZV93cml0ZShlbnRyeS0+YWRkciwgZGV2cGF0aCwgc2l6ZW9mKCpkZXZwYXRoKSkgIT0gUERDX09LKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IGFuIGVycm9yIG9jY3VyZWQgd2hlbiB3cml0aW5nIHRvIFBEQy5cbiIKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogYW4gZXJyb3Igb2NjdXJyZWQgd2hlbiB3cml0aW5nIHRvIFBEQy5cbiIKIAkJCQkiSXQgaXMgbGlrZWx5IHRoYXQgdGhlIFN0YWJsZSBTdG9yYWdlIGRhdGEgaGFzIGJlZW4gY29ycnVwdGVkLlxuIgogCQkJCSJQbGVhc2UgY2hlY2sgaXQgY2FyZWZ1bGx5IHVwb24gbmV4dCByZWJvb3QuXG4iLCBfX2Z1bmNfXyk7CiAJCVdBUk5fT04oMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcnBvcnQvS2NvbmZpZyBiL2RyaXZlcnMvcGFycG9ydC9LY29uZmlnCmluZGV4IDg1NWYzODkuLmQ5MjE4NWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGFycG9ydC9LY29uZmlnCisrKyBiL2RyaXZlcnMvcGFycG9ydC9LY29uZmlnCkBAIC0xNDIsNyArMTQyLDcgQEAKIAkgIHRoZSBBWDg4Nzk2IG5ldHdvcmsgY29udHJvbGxlciBjaGlwLiBUaGlzIGNvZGUgaXMgYWxzbyBhdmFpbGFibGUKIAkgIGFzIGEgbW9kdWxlIChzYXkgTSksIGNhbGxlZCBwYXJwb3J0X2F4ODg3OTYuCiAKLQkgIFRoZSBkcml2ZXIgaXMgbm90IGRlcGVuZGFudCBvbiB0aGUgQVg4ODc5NiBuZXR3b3JrIGRyaXZlciwgYW5kCisJICBUaGUgZHJpdmVyIGlzIG5vdCBkZXBlbmRlbnQgb24gdGhlIEFYODg3OTYgbmV0d29yayBkcml2ZXIsIGFuZAogCSAgc2hvdWxkIG5vdCBpbnRlcmZlcmUgd2l0aCB0aGUgbmV0d29ya2luZyBmdW5jdGlvbnMgb2YgdGhlIGNoaXAuCiAKIGNvbmZpZyBQQVJQT1JUXzEyODQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGFycG9ydC9pZWVlMTI4NC5jIGIvZHJpdmVycy9wYXJwb3J0L2llZWUxMjg0LmMKaW5kZXggODkwMWVjZi4uZjlmZDRiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wYXJwb3J0L2llZWUxMjg0LmMKKysrIGIvZHJpdmVycy9wYXJwb3J0L2llZWUxMjg0LmMKQEAgLTM1NSw3ICszNTUsNyBAQAogCQlyZXR1cm4gMDsKIAl9CiAKLQkvKiBHbyB0byBjb21wYWJpbGl0eSBmb3J3YXJkIGlkbGUgbW9kZSAqLworCS8qIEdvIHRvIGNvbXBhdGliaWxpdHkgZm9yd2FyZCBpZGxlIG1vZGUgKi8KIAlpZiAocG9ydC0+aWVlZTEyODQubW9kZSAhPSBJRUVFMTI4NF9NT0RFX0NPTVBBVCkKIAkJcGFycG9ydF9pZWVlMTI4NF90ZXJtaW5hdGUgKHBvcnQpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9wYy5jIGIvZHJpdmVycy9wYXJwb3J0L3BhcnBvcnRfcGMuYwppbmRleCA4ZDYyZmI3Li5hMzc1NWZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BhcnBvcnQvcGFycG9ydF9wYy5jCisrKyBiL2RyaXZlcnMvcGFycG9ydC9wYXJwb3J0X3BjLmMKQEAgLTE0ODgsNyArMTQ4OCw3IEBACiAKIAlvdXRiKGtleSwgaW8pOwogCW91dGIoa2V5LCBpbyk7ICAgICAvKiBXcml0ZSBNYWdpYyBTZXF1ZW5jZSB0byBFRkVSLCBleHRlbmRlZAotCQkJICAgICAgZnVudGlvbiBlbmFibGUgcmVnaXN0ZXIgKi8KKwkJCSAgICAgIGZ1bmN0aW9uIGVuYWJsZSByZWdpc3RlciAqLwogCW91dGIoMHgyMCwgaW8pOyAgICAvKiBXcml0ZSBFRklSLCBleHRlbmRlZCBmdW5jdGlvbiBpbmRleCByZWdpc3RlciAqLwogCWRldmlkID0gaW5iKGlvICsgMSk7ICAvKiBSZWFkIEVGRFIsIGV4dGVuZGVkIGZ1bmN0aW9uIGRhdGEgcmVnaXN0ZXIgKi8KIAlvdXRiKDB4MjEsIGlvKTsKQEAgLTE1MjcsNyArMTUyNyw3IEBACiAJeF9vbGRpZCA9IGluYihpbyArIDIpOwogCiAJb3V0YihrZXksIGlvKTsgICAgIC8qIFdyaXRlIE1hZ2ljIEJ5dGUgdG8gRUZFUiwgZXh0ZW5kZWQKLQkJCSAgICAgIGZ1bnRpb24gZW5hYmxlIHJlZ2lzdGVyICovCisJCQkgICAgICBmdW5jdGlvbiBlbmFibGUgcmVnaXN0ZXIgKi8KIAlvdXRiKDB4MjAsIGlvICsgMik7ICAvKiBXcml0ZSBFRklSLCBleHRlbmRlZCBmdW5jdGlvbiBpbmRleCByZWdpc3RlciAqLwogCWRldmlkID0gaW5iKGlvICsgMik7ICAvKiBSZWFkIEVGRFIsIGV4dGVuZGVkIGZ1bmN0aW9uIGRhdGEgcmVnaXN0ZXIgKi8KIAlvdXRiKDB4MjEsIGlvICsgMSk7CkBAIC0xNTY5LDcgKzE1NjksNyBAQAogCiAJb3V0YihrZXksIGlvKTsKIAlvdXRiKGtleSwgaW8pOyAgICAgLyogV3JpdGUgTWFnaWMgU2VxdWVuY2UgdG8gRUZFUiwgZXh0ZW5kZWQKLQkJCSAgICAgIGZ1bnRpb24gZW5hYmxlIHJlZ2lzdGVyICovCisJCQkgICAgICBmdW5jdGlvbiBlbmFibGUgcmVnaXN0ZXIgKi8KIAlvdXRiKDB4MGQsIGlvKTsgICAgLyogV3JpdGUgRUZJUiwgZXh0ZW5kZWQgZnVuY3Rpb24gaW5kZXggcmVnaXN0ZXIgKi8KIAlvbGRpZCA9IGluYihpbyArIDEpOyAgLyogUmVhZCBFRkRSLCBleHRlbmRlZCBmdW5jdGlvbiBkYXRhIHJlZ2lzdGVyICovCiAJb3V0YigweDBlLCBpbyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlfcGNpaHAuYyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaV9wY2locC5jCmluZGV4IDNiYzcyZDEuLjhmM2ZhZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaV9wY2locC5jCisrKyBiL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaV9wY2locC5jCkBAIC0zNTEsNyArMzUxLDcgQEAKIAkgKiBUbyBoYW5kbGUgZGlmZmVyZW50IEJJT1MgYmVoYXZpb3IsIHdlIGxvb2sgZm9yIF9PU0Mgb24gYSByb290CiAJICogYnJpZGdlIHByZWZlcmVudGlhbGx5IChhY2NvcmRpbmcgdG8gUENJIGZ3IHNwZWMpLiBMYXRlciBmb3IKIAkgKiBPU0hQIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGhvdHBsdWcgY29udHJvbGxlciBhbmQgaXRzIHBhcmVudHMsCi0JICogdXB0byB0aGUgaG9zdCBicmlkZ2UgdW5kZXIgd2hpY2ggdGhpcyBjb250cm9sbGVyIGV4aXN0cy4KKwkgKiB1cCB0byB0aGUgaG9zdCBicmlkZ2UgdW5kZXIgd2hpY2ggdGhpcyBjb250cm9sbGVyIGV4aXN0cy4KIAkgKi8KIAloYW5kbGUgPSBhY3BpX2ZpbmRfcm9vdF9icmlkZ2VfaGFuZGxlKHBkZXYpOwogCWlmIChoYW5kbGUpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL2FjcGlwaHBfZ2x1ZS5jCmluZGV4IGU2MTBjZmUuLjJmNjdlOWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvYWNwaXBocF9nbHVlLmMKKysrIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9hY3BpcGhwX2dsdWUuYwpAQCAtNTg1LDcgKzU4NSw3IEBACiAKIAkvKgogCSAqIE9uIHJvb3QgYnJpZGdlcyB3aXRoIGhvdHBsdWcgc2xvdHMgZGlyZWN0bHkgdW5kZXJuZWF0aCAoaWUsCi0JICogbm8gcDJwIGJyaWRnZSBpbmJldHdlZW4pLCB3ZSBjYWxsIGNsZWFudXBfYnJpZGdlKCkuIAorCSAqIG5vIHAycCBicmlkZ2UgYmV0d2VlbiksIHdlIGNhbGwgY2xlYW51cF9icmlkZ2UoKS4gCiAJICoKIAkgKiBUaGUgZWxzZSBjbGF1c2UgY2xlYW5zIHVwIHJvb3QgYnJpZGdlcyB0aGF0IGVpdGhlciBoYWQgbm8KIAkgKiBob3RwbHVnIHNsb3RzIGF0IGFsbCwgb3IgaGFkIGEgcDJwIGJyaWRnZSB1bmRlcm5lYXRoLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFwaHBfY29yZS5jIGIvZHJpdmVycy9wY2kvaG90cGx1Zy9ycGFwaHBfY29yZS5jCmluZGV4IGVmNzQxMWMuLjc1OGFkYjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2hvdHBsdWcvcnBhcGhwX2NvcmUuYworKysgYi9kcml2ZXJzL3BjaS9ob3RwbHVnL3JwYXBocF9jb3JlLmMKQEAgLTI5MCw3ICsyOTAsNyBAQAogICogQGRuOiBkZXZpY2Ugbm9kZSBvZiBzbG90CiAgKgogICogVGhpcyBzdWJyb3V0aW5lIHdpbGwgcmVnaXN0ZXIgYSBob3RwbHVnYWJsZSBzbG90IHdpdGggdGhlCi0gKiBQQ0kgaG90cGx1ZyBpbmZyYXN0cnVjdHVyZS4gVGhpcyByb3V0aW5lIGlzIHR5cGljYWx5IGNhbGxlZAorICogUENJIGhvdHBsdWcgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgcm91dGluZSBpcyB0eXBpY2FsbHkgY2FsbGVkCiAgKiBkdXJpbmcgYm9vdCB0aW1lLCBpZiB0aGUgaG90cGx1ZyBzbG90cyBhcmUgcHJlc2VudCBhdCBib290IHRpbWUsCiAgKiBvciBpcyBjYWxsZWQgbGF0ZXIsIGJ5IHRoZSBkbHBhciBhZGQgY29kZSwgaWYgdGhlIHNsb3QgaXMKICAqIGJlaW5nIGR5bmFtaWNhbGx5IGFkZGVkIGR1cmluZyBydW50aW1lLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvaW50ZWwtaW9tbXUuYyBiL2RyaXZlcnMvcGNpL2ludGVsLWlvbW11LmMKaW5kZXggN2RhM2JlZi4uNTA1YzFjNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvaW50ZWwtaW9tbXUuYworKysgYi9kcml2ZXJzL3BjaS9pbnRlbC1pb21tdS5jCkBAIC0yMjY1LDcgKzIyNjUsNyBAQAogCQkvKgogCQkgKiBUQkQ6CiAJCSAqIHdlIGNvdWxkIHNoYXJlIHRoZSBzYW1lIHJvb3QgJiBjb250ZXh0IHRhYmxlcwotCQkgKiBhbW91bmcgYWxsIElPTU1VJ3MuIE5lZWQgdG8gU3BsaXQgaXQgbGF0ZXIuCisJCSAqIGFtb25nIGFsbCBJT01NVSdzLiBOZWVkIHRvIFNwbGl0IGl0IGxhdGVyLgogCQkgKi8KIAkJcmV0ID0gaW9tbXVfYWxsb2Nfcm9vdF9lbnRyeShpb21tdSk7CiAJCWlmIChyZXQpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2ludHJfcmVtYXBwaW5nLmMgYi9kcml2ZXJzL3BjaS9pbnRyX3JlbWFwcGluZy5jCmluZGV4IGEyMjU1N2IuLjM2MDdmYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL2ludHJfcmVtYXBwaW5nLmMKKysrIGIvZHJpdmVycy9wY2kvaW50cl9yZW1hcHBpbmcuYwpAQCAtMjg5LDcgKzI4OSw3IEBACiAgKiBzb3VyY2UgdmFsaWRhdGlvbiB0eXBlCiAgKi8KICNkZWZpbmUgU1ZUX05PX1ZFUklGWQkJMHgwICAvKiBubyB2ZXJpZmljYXRpb24gaXMgcmVxdWlyZWQgKi8KLSNkZWZpbmUgU1ZUX1ZFUklGWV9TSURfU1EJMHgxICAvKiB2ZXJpZnkgdXNpbmcgU0lEIGFuZCBTUSBmaWVscyAqLworI2RlZmluZSBTVlRfVkVSSUZZX1NJRF9TUQkweDEgIC8qIHZlcmlmeSB1c2luZyBTSUQgYW5kIFNRIGZpZWxkcyAqLwogI2RlZmluZSBTVlRfVkVSSUZZX0JVUwkJMHgyICAvKiB2ZXJpZnkgYnVzIG9mIHJlcXVlc3QtaWQgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2lvdmEuYyBiL2RyaXZlcnMvcGNpL2lvdmEuYwppbmRleCA3OTE0OTUxLi45NjA2ZTU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9pb3ZhLmMKKysrIGIvZHJpdmVycy9wY2kvaW92YS5jCkBAIC0zOTEsNyArMzkxLDcgQEAKIAkJCQlicmVhazsKIAl9CiAKLQkvKiBXZSBhcmUgaGVyZSBlaXRoZXIgYmVjYXN1ZSB0aGlzIGlzIHRoZSBmaXJzdCByZXNlcnZlciBub2RlCisJLyogV2UgYXJlIGhlcmUgZWl0aGVyIGJlY2F1c2UgdGhpcyBpcyB0aGUgZmlyc3QgcmVzZXJ2ZXIgbm9kZQogCSAqIG9yIG5lZWQgdG8gaW5zZXJ0IHJlbWFpbmluZyBub24gb3ZlcmxhcCBhZGRyIHJhbmdlCiAJICovCiAJaW92YSA9IF9faW5zZXJ0X25ld19yYW5nZShpb3ZhZCwgcGZuX2xvLCBwZm5faGkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvcGNpLXN5c2ZzLmMgYi9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYwppbmRleCBhOGEyNzdhLi5mOGRlYjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYworKysgYi9kcml2ZXJzL3BjaS9wY2ktc3lzZnMuYwpAQCAtNjQ1LDcgKzY0NSw3IEBACiAgKiBhIHBlci1idXMgYmFzaXMuICBUaGlzIHJvdXRpbmUgY3JlYXRlcyB0aGUgZmlsZXMgYW5kIHRpZXMgdGhlbSBpbnRvCiAgKiB0aGVpciBhc3NvY2lhdGVkIHJlYWQsIHdyaXRlIGFuZCBtbWFwIGZpbGVzIGZyb20gcGNpLXN5c2ZzLmMKICAqCi0gKiBPbiBlcnJvciB1bndpbmQsIGJ1dCBkb24ndCBwcm9wb2dhdGUgdGhlIGVycm9yIHRvIHRoZSBjYWxsZXIKKyAqIE9uIGVycm9yIHVud2luZCwgYnV0IGRvbid0IHByb3BhZ2F0ZSB0aGUgZXJyb3IgdG8gdGhlIGNhbGxlcgogICogYXMgaXQgaXMgb2sgdG8gc2V0IHVwIHRoZSBQQ0kgYnVzIHdpdGhvdXQgdGhlc2UgZmlsZXMuCiAgKi8KIHZvaWQgcGNpX2NyZWF0ZV9sZWdhY3lfZmlsZXMoc3RydWN0IHBjaV9idXMgKmIpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9xdWlya3MuYyBiL2RyaXZlcnMvcGNpL3F1aXJrcy5jCmluZGV4IGJkODBmNjMuLjUxMjllZDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNpL3F1aXJrcy5jCisrKyBiL2RyaXZlcnMvcGNpL3F1aXJrcy5jCkBAIC0yNjMsNyArMjYzLDcgQEAKIAkgKglUaGlzIGhhcHBlbnMgdG8gaW5jbHVkZSB0aGUgSURFIGNvbnRyb2xsZXJzLi4uLgogCSAqCiAJICoJVklBIG9ubHkgYXBwbHkgdGhpcyBmaXggd2hlbiBhbiBTQiBMaXZlISBpcyBwcmVzZW50IGJ1dCB1bmRlcgotCSAqCWJvdGggTGludXggYW5kIFdpbmRvd3MgdGhpcyBpc250IGVub3VnaCwgYW5kIHdlIGhhdmUgc2VlbgorCSAqCWJvdGggTGludXggYW5kIFdpbmRvd3MgdGhpcyBpc24ndCBlbm91Z2gsIGFuZCB3ZSBoYXZlIHNlZW4KIAkgKgljb3JydXB0aW9uIHdpdGhvdXQgU0IgTGl2ZSEgYnV0IHdpdGggdGhpbmdzIGxpa2UgMyBVRE1BIElERQogCSAqCWNvbnRyb2xsZXJzLiBTbyB3ZSBpZ25vcmUgdGhhdCBiaXQgb2YgdGhlIFZJQSByZWNvbW1lbmRhdGlvbi4uCiAJICovCkBAIC0yNjgwLDcgKzI2ODAsNyBAQAogICogVGhpcyBpcyBhIHF1aXJrIGZvciB0aGUgUmljb2ggTU1DIGNvbnRyb2xsZXIgZm91bmQgYXMgYSBwYXJ0IG9mCiAgKiBzb21lIG11bGlmdW5jdGlvbiBjaGlwcy4KIAotICogVGhpcyBpcyB2ZXJ5IHNpbWlsaWFyIGFuZCBiYXNlZCBvbiB0aGUgcmljb2hfbW1jIGRyaXZlciB3cml0dGVuIGJ5CisgKiBUaGlzIGlzIHZlcnkgc2ltaWxhciBhbmQgYmFzZWQgb24gdGhlIHJpY29oX21tYyBkcml2ZXIgd3JpdHRlbiBieQogICogUGhpbGlwIExhbmdkYWxlLiBUaGFuayB5b3UgZm9yIHRoZXNlIG1hZ2ljIHNlcXVlbmNlcy4KICAqCiAgKiBUaGVzZSBjaGlwcyBpbXBsZW1lbnQgdGhlIGZvdXIgbWFpbiBtZW1vcnkgY2FyZCBjb250cm9sbGVycyAoU0QsIE1NQywgTVMsIHhEKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY21jaWEvaTgyMDkyLmMgYi9kcml2ZXJzL3BjbWNpYS9pODIwOTIuYwppbmRleCBmYzc5MDZlLi4zZTQ0N2QwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjbWNpYS9pODIwOTIuYworKysgYi9kcml2ZXJzL3BjbWNpYS9pODIwOTIuYwpAQCAtNTQsNyArNTQsNyBAQAogCS5zZXRfbWVtX21hcAkJPSBpODIwOTJhYV9zZXRfbWVtX21hcCwKIH07CiAKLS8qIFRoZSBjYXJkIGNhbiBkbyB1cHRvIDQgc29ja2V0cywgYWxsb2NhdGUgYSBzdHJ1Y3R1cmUgZm9yIGVhY2ggb2YgdGhlbSAqLworLyogVGhlIGNhcmQgY2FuIGRvIHVwIHRvIDQgc29ja2V0cywgYWxsb2NhdGUgYSBzdHJ1Y3R1cmUgZm9yIGVhY2ggb2YgdGhlbSAqLwogCiBzdHJ1Y3Qgc29ja2V0X2luZm8gewogCWludAludW1iZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9wY21jaWFfcmVzb3VyY2UuYyBiL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jCmluZGV4IDQyZmJmMWEuLmZlNzdlODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL3BjbWNpYV9yZXNvdXJjZS5jCkBAIC0xNzMsNyArMTczLDcgQEAKIAljID0gcF9kZXYtPmZ1bmN0aW9uX2NvbmZpZzsKIAogCWlmICghKGMtPnN0YXRlICYgQ09ORklHX0xPQ0tFRCkpIHsKLQkJZGV2X2RiZygmcF9kZXYtPmRldiwgIkNvbmZpZ3VyYXRpb24gaXNudCd0IGxvY2tlZFxuIik7CisJCWRldl9kYmcoJnBfZGV2LT5kZXYsICJDb25maWd1cmF0aW9uIGlzbid0J3QgbG9ja2VkXG4iKTsKIAkJbXV0ZXhfdW5sb2NrKCZzLT5vcHNfbXV0ZXgpOwogCQlyZXR1cm4gLUVBQ0NFUzsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS9weGEyeHhfbHViYm9jay5jIGIvZHJpdmVycy9wY21jaWEvcHhhMnh4X2x1YmJvY2suYwppbmRleCAyNWFmZTYzLi5jMjE4ODhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjbWNpYS9weGEyeHhfbHViYm9jay5jCisrKyBiL2RyaXZlcnMvcGNtY2lhL3B4YTJ4eF9sdWJib2NrLmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCQkJICogV2UgbmVlZCB0byBoYWNrIGFyb3VuZCB0aGUgY29uc3QgcXVhbGlmaWVyIGFzCiAJCQkgKiB3ZWxsIHRvIGtlZXAgdGhpcyB1Z2x5IHdvcmthcm91bmQgbG9jYWxpemVkIGFuZAogCQkJICogbm90IGZvcmNlIGl0IHRvIHRoZSByZXN0IG9mIHRoZSBjb2RlLiBCYXJmIGJhZ3MKLQkJCSAqIGF2YWxpYWJsZSBpbiB0aGUgc2VhdCBwb2NrZXQgaW4gZnJvbnQgb2YgeW91IQorCQkJICogYXZhaWxhYmxlIGluIHRoZSBzZWF0IHBvY2tldCBpbiBmcm9udCBvZiB5b3UhCiAJCQkgKi8KIAkJCSgoc29ja2V0X3N0YXRlX3QgKilzdGF0ZSktPlZjYyA9IDUwOwogCQkJKChzb2NrZXRfc3RhdGVfdCAqKXN0YXRlKS0+VnBwID0gNTA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjbWNpYS90aTExM3guaCBiL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oCmluZGV4IDlmZmE5N2QuLmE3MTc4OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oCisrKyBiL2RyaXZlcnMvcGNtY2lhL3RpMTEzeC5oCkBAIC02OTEsNyArNjkxLDcgQEAKIAkJLyoKIAkJICogdGhvc2UgYXJlIGVpdGhlciBzaW5nbGUgb3IgZHVhbCBzbG90IENCIHdpdGggYWRkaXRpb25hbCBmdW5jdGlvbnMKIAkJICogbGlrZSAxMzk0LCBzbWFydGNhcmQgcmVhZGVyLCBldGMuIGNoZWNrIHRoZSBUSUVBTEwgZmxhZyBmb3IgdGhlbQotCQkgKiB0aGUgVElFQUxMIGZsYWcgYmluZHMgdGhlIElSUSBvZiBhbGwgZnVuY3Rpb25zIHRvZ2hldGhlci4KKwkJICogdGhlIFRJRUFMTCBmbGFnIGJpbmRzIHRoZSBJUlEgb2YgYWxsIGZ1bmN0aW9ucyB0b2dldGhlci4KIAkJICogd2UgY2F0Y2ggdGhlIHNpbmdsZSBzbG90IHZhcmlhbnRzIGxhdGVyLgogCQkgKi8KIAkJc3lzY3RsID0gY29uZmlnX3JlYWRsKHNvY2tldCwgVEkxMTNYX1NZU1RFTV9DT05UUk9MKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF90aGVybWFsLmMgYi9kcml2ZXJzL3BsYXRmb3JtL3g4Ni9pbnRlbF9taWRfdGhlcm1hbC5jCmluZGV4IDZjMTJkYjUuLmMyZjRiZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcGxhdGZvcm0veDg2L2ludGVsX21pZF90aGVybWFsLmMKKysrIGIvZHJpdmVycy9wbGF0Zm9ybS94ODYvaW50ZWxfbWlkX3RoZXJtYWwuYwpAQCAtMjAyLDcgKzIwMiw3IEBACiAgICAgICAgaWYgKHJldCkKICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CiAKLSAgICAgICAvKiBTaGlmdCBiaXRzIHRvIGFjY29tb2RhdGUgdGhlIGxvd2VyIHR3byBkYXRhIGJpdHMgKi8KKyAgICAgICAvKiBTaGlmdCBiaXRzIHRvIGFjY29tbW9kYXRlIHRoZSBsb3dlciB0d28gZGF0YSBiaXRzICovCiAgICAgICAgYWRjX3ZhbCA9IChkYXRhIDw8IDIpOwogICAgICAgIGFkZHIrKzsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9wbnAvY2FyZC5jIGIvZHJpdmVycy9wbnAvY2FyZC5jCmluZGV4IDRhNjUxZjYuLmJjMDA2OTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcG5wL2NhcmQuYworKysgYi9kcml2ZXJzL3BucC9jYXJkLmMKQEAgLTMyMCw3ICszMjAsNyBAQAogICogcG5wX3JlcXVlc3RfY2FyZF9kZXZpY2UgLSBTZWFyY2hlcyBmb3IgYSBQblAgZGV2aWNlIHVuZGVyIHRoZSBzcGVjaWZpZWQgY2FyZAogICogQGNsaW5rOiBwb2ludGVyIHRvIHRoZSBjYXJkIGxpbmssIGNhbm5vdCBiZSBOVUxMCiAgKiBAaWQ6IHBvaW50ZXIgdG8gYSBQblAgSUQgc3RydWN0dXJlIHRoYXQgZXhwbGFpbnMgdGhlIHJ1bGVzIGZvciBmaW5kaW5nIHRoZSBkZXZpY2UKLSAqIEBmcm9tOiBTdGFydGluZyBwbGFjZSB0byBzZWFyY2ggZnJvbS4gSWYgTlVMTCBpdCB3aWxsIHN0YXJ0IGZyb20gdGhlIGJlZ2luaW5nLgorICogQGZyb206IFN0YXJ0aW5nIHBsYWNlIHRvIHNlYXJjaCBmcm9tLiBJZiBOVUxMIGl0IHdpbGwgc3RhcnQgZnJvbSB0aGUgYmVnaW5uaW5nLgogICovCiBzdHJ1Y3QgcG5wX2RldiAqcG5wX3JlcXVlc3RfY2FyZF9kZXZpY2Uoc3RydWN0IHBucF9jYXJkX2xpbmsgKmNsaW5rLAogCQkJCQljb25zdCBjaGFyICppZCwgc3RydWN0IHBucF9kZXYgKmZyb20pCkBAIC0zNjksNyArMzY5LDcgQEAKIAogLyoqCiAgKiBwbnBfcmVsZWFzZV9jYXJkX2RldmljZSAtIGNhbGwgdGhpcyB3aGVuIHRoZSBkcml2ZXIgbm8gbG9uZ2VyIG5lZWRzIHRoZSBkZXZpY2UKLSAqIEBkZXY6IHBvaW50ZXIgdG8gdGhlIFBuUCBkZXZpY2Ugc3R1Y3R1cmUKKyAqIEBkZXY6IHBvaW50ZXIgdG8gdGhlIFBuUCBkZXZpY2Ugc3RydWN0dXJlCiAgKi8KIHZvaWQgcG5wX3JlbGVhc2VfY2FyZF9kZXZpY2Uoc3RydWN0IHBucF9kZXYgKmRldikKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcG5wL3BucGJpb3MvYmlvc2NhbGxzLmMgYi9kcml2ZXJzL3BucC9wbnBiaW9zL2Jpb3NjYWxscy5jCmluZGV4IDg1OTFmNmEuLmI4NTlkMTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcG5wL3BucGJpb3MvYmlvc2NhbGxzLmMKKysrIGIvZHJpdmVycy9wbnAvcG5wYmlvcy9iaW9zY2FsbHMuYwpAQCAtMjE5LDcgKzIxOSw3IEBACiAJCSAgICAgICBtb2R1bGUpOwogCQlicmVhazsKIAljYXNlIFBOUF9IQVJEV0FSRV9FUlJPUjoKLQkJcHJpbnRrKEtFUk5fRVJSICJQblBCSU9TOiAlczogYSBoYXJkd2FyZSBmYWlsdXJlIGhhcyBvY2N1cmVkXG4iLAorCQlwcmludGsoS0VSTl9FUlIgIlBuUEJJT1M6ICVzOiBhIGhhcmR3YXJlIGZhaWx1cmUgaGFzIG9jY3VycmVkXG4iLAogCQkgICAgICAgbW9kdWxlKTsKIAkJYnJlYWs7CiAJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHBzL0tjb25maWcgYi9kcml2ZXJzL3Bwcy9LY29uZmlnCmluZGV4IGYwZDMzNzYuLjI1OGNhNTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHBzL0tjb25maWcKKysrIGIvZHJpdmVycy9wcHMvS2NvbmZpZwpAQCAtMzUsNyArMzUsNyBAQAogCWRlcGVuZHMgb24gUFBTICYmICFOT19IWgogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGFkZHMgc3VwcG9ydCBmb3IgZGlyZWN0IGluLWtlcm5lbCB0aW1lCi0JICBzeW5jcm9uaXphdGlvbiB1c2luZyBhbiBleHRlcm5hbCBQUFMgc2lnbmFsLgorCSAgc3luY2hyb25pemF0aW9uIHVzaW5nIGFuIGV4dGVybmFsIFBQUyBzaWduYWwuCiAKIAkgIEl0IGRvZXNuJ3Qgd29yayBvbiB0aWNrbGVzcyBzeXN0ZW1zIGF0IHRoZSBtb21lbnQuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcHMzL3BzMy1scG0uYyBiL2RyaXZlcnMvcHMzL3BzMy1scG0uYwppbmRleCA4MDAwOTg1Li42NDM2OTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BzMy9wczMtbHBtLmMKKysrIGIvZHJpdmVycy9wczMvcHMzLWxwbS5jCkBAIC05MTksNyArOTE5LDcgQEAKICAqIEBvZmZzZXQ6IE9mZnNldCBpbiBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdHJhY2UgYnVmZmVyLgogICogQGJ1ZjogQ29weSBkZXN0aW5hdGlvbi4KICAqIEBjb3VudDogTWF4aW11bSBjb3VudCBvZiBieXRlcyB0byBjb3B5LgotICogQGJ5dGVzX2NvcGllZDogUG9pbnRlciB0byBhIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNpZXZlIHRoZSBudW1iZXIgb2YKKyAqIEBieXRlc19jb3BpZWQ6IFBvaW50ZXIgdG8gYSB2YXJpYWJsZSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbnVtYmVyIG9mCiAgKiAgYnl0ZXMgY29waWVkIHRvIEBidWYuCiAgKgogICogT24gZXJyb3IgQGJ1ZiB3aWxsIGNvbnRhaW4gYW55IHN1Y2Nlc3NmdWxseSBjb3BpZWQgdHJhY2UgYnVmZmVyIGRhdGEKQEAgLTk3NCw3ICs5NzQsNyBAQAogICogQG9mZnNldDogT2Zmc2V0IGluIGJ5dGVzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSB0cmFjZSBidWZmZXIuCiAgKiBAYnVmOiBBIF9fdXNlciBjb3B5IGRlc3RpbmF0aW9uLgogICogQGNvdW50OiBNYXhpbXVtIGNvdW50IG9mIGJ5dGVzIHRvIGNvcHkuCi0gKiBAYnl0ZXNfY29waWVkOiBQb2ludGVyIHRvIGEgdmFyaWFibGUgdGhhdCB3aWxsIHJlY2lldmUgdGhlIG51bWJlciBvZgorICogQGJ5dGVzX2NvcGllZDogUG9pbnRlciB0byBhIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBudW1iZXIgb2YKICAqICBieXRlcyBjb3BpZWQgdG8gQGJ1Zi4KICAqCiAgKiBPbiBlcnJvciBAYnVmIHdpbGwgY29udGFpbiBhbnkgc3VjY2Vzc2Z1bGx5IGNvcGllZCB0cmFjZSBidWZmZXIgZGF0YQpAQCAtMTA3NCw3ICsxMDc0LDcgQEAKIAogLyoqCiAgKiBwczNfbHBtX29wZW4gLSBPcGVuIHRoZSBsb2dpY2FsIHBlcmZvcm1hbmNlIG1vbml0b3IgZGV2aWNlLgotICogQHRiX3R5cGU6IFNwZWNpZmllcyB0aGUgdHlwZSBvZiB0cmFjZSBidWZmZXIgbHYxIHNvdWxkIHVzZSBmb3IgdGhpcyBscG0KKyAqIEB0Yl90eXBlOiBTcGVjaWZpZXMgdGhlIHR5cGUgb2YgdHJhY2UgYnVmZmVyIGx2MSBzaG91bGQgdXNlIGZvciB0aGlzIGxwbQogICogIGluc3RhbmNlLCBzcGVjaWZpZWQgYnkgb25lIG9mIGVudW0gcHMzX2xwbV90Yl90eXBlLgogICogQHRiX2NhY2hlOiBPcHRpb25hbCB1c2VyIHN1cHBsaWVkIGJ1ZmZlciB0byB1c2UgYXMgdGhlIHRyYWNlIGJ1ZmZlciBjYWNoZS4KICAqICBJZiBOVUxMLCB0aGUgZHJpdmVyIHdpbGwgYWxsb2NhdGUgYW5kIG1hbmFnZSBhbiBpbnRlcm5hbCBidWZmZXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BzMy9wczMtc3lzLW1hbmFnZXIuYyBiL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jCmluZGV4IGQzN2M0NDUuLjFiOTgzNjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jCisrKyBiL2RyaXZlcnMvcHMzL3BzMy1zeXMtbWFuYWdlci5jCkBAIC04MCw3ICs4MCw3IEBACiAgKgogICogQ3VycmVudGx5IGFsbCBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBzeXN0ZW0gbWFuYWdlciBhcmUgZWl0aGVyCiAgKiAoMTYgYnl0ZXMgaGVhZGVyICsgOCBieXRlcyBwYXlsb2FkID0gMjQgYnl0ZXMpIG9yICgxNiBieXRlcyBoZWFkZXIKLSAqICsgMTYgYnl0ZXMgcGF5bG9hZCA9IDMyIGJ5dGVzKS4gIFRoaXMga25vd2xlZ2UgaXMgdXNlZCB0byBzaW1wbGlmeQorICogKyAxNiBieXRlcyBwYXlsb2FkID0gMzIgYnl0ZXMpLiAgVGhpcyBrbm93bGVkZ2UgaXMgdXNlZCB0byBzaW1wbGlmeQogICogdGhlIGxvZ2ljLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmFwaWRpby9yaW8tc2Nhbi5jIGIvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMKaW5kZXggM2E1OWQ1Zi4uZWU4OTM1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMKKysrIGIvZHJpdmVycy9yYXBpZGlvL3Jpby1zY2FuLmMKQEAgLTI5NSw3ICsyOTUsNyBAQAogfQogCiAvKioKLSAqIHJpb19lbmFibGVfcnhfdHhfcG9ydCAtIGVuYWJsZSBpbnB1dCByZWNpZXZlciBhbmQgb3V0cHV0IHRyYW5zbWl0dGVyIG9mCisgKiByaW9fZW5hYmxlX3J4X3R4X3BvcnQgLSBlbmFibGUgaW5wdXQgcmVjZWl2ZXIgYW5kIG91dHB1dCB0cmFuc21pdHRlciBvZgogICogZ2l2ZW4gcG9ydAogICogQHBvcnQ6IE1hc3RlciBwb3J0IGFzc29jaWF0ZWQgd2l0aCB0aGUgUklPIG5ldHdvcmsKICAqIEBsb2NhbDogbG9jYWw9MSBzZWxlY3QgbG9jYWwgcG9ydCBvdGhlcndpc2UgYSBmYXIgZGV2aWNlIGlzIHJlYWNoZWQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmVndWxhdG9yL2NvcmUuYyBiL2RyaXZlcnMvcmVndWxhdG9yL2NvcmUuYwppbmRleCAzZmZjNjk3Li4wZmFlNTFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3JlZ3VsYXRvci9jb3JlLmMKKysrIGIvZHJpdmVycy9yZWd1bGF0b3IvY29yZS5jCkBAIC0xMzEzLDcgKzEzMTMsNyBAQAogCQkJCXJldHVybiAtRUlOVkFMOwogCiAJCQkvKiBRdWVyeSBiZWZvcmUgZW5hYmxpbmcgaW4gY2FzZSBjb25maWd1cmF0aW9uCi0JCQkgKiBkZXBlbmRhbnQuICAqLworCQkJICogZGVwZW5kZW50LiAgKi8KIAkJCXJldCA9IF9yZWd1bGF0b3JfZ2V0X2VuYWJsZV90aW1lKHJkZXYpOwogCQkJaWYgKHJldCA+PSAwKSB7CiAJCQkJZGVsYXkgPSByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3JlZ3VsYXRvci9tYXg4OTUyLmMgYi9kcml2ZXJzL3JlZ3VsYXRvci9tYXg4OTUyLmMKaW5kZXggYThmNGVjZi4uZGFmZjdmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9yZWd1bGF0b3IvbWF4ODk1Mi5jCisrKyBiL2RyaXZlcnMvcmVndWxhdG9yL21heDg5NTIuYwpAQCAtMjYyLDcgKzI2Miw3IEBACiAKIAlpZiAoZXJyKSB7CiAJCWRldl93YXJuKG1heDg5NTItPmRldiwgIlZJRDAvMSBncGlvIGludmFsaWQ6ICIKLQkJCQkiRFZTIG5vdCBhdmlsYWJsZS5cbiIpOworCQkJCSJEVlMgbm90IGF2YWlsYWJsZS5cbiIpOwogCQltYXg4OTUyLT52aWQwID0gMDsKIAkJbWF4ODk1Mi0+dmlkMSA9IDA7CiAJCS8qIE1hcmsgaW52YWxpZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvaW50ZXJmYWNlLmMgYi9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYwppbmRleCA4ZWM2YjA2Li4yMzcxOWYwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYworKysgYi9kcml2ZXJzL3J0Yy9pbnRlcmZhY2UuYwpAQCAtNDU0LDcgKzQ1NCw3IEBACiAgKiBAcnRjOiBwb2ludGVyIHRvIHRoZSBydGMgZGV2aWNlCiAgKgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiBBSUUsIFVJRSBvciBQSUUgbW9kZSBpbnRlcnJ1cHQKLSAqIGhhcyBvY2N1cmVkIChvciBiZWVuIGVtdWxhdGVkKS4KKyAqIGhhcyBvY2N1cnJlZCAob3IgYmVlbiBlbXVsYXRlZCkuCiAgKgogICogVHJpZ2dlcnMgdGhlIHJlZ2lzdGVyZWQgaXJxX3Rhc2sgZnVuY3Rpb24gY2FsbGJhY2suCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMgYi9kcml2ZXJzL3J0Yy9ydGMtYXQ5MXJtOTIwMC5jCmluZGV4IDUxOGE3NmUuLmUzOWI3N2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1hdDkxcm05MjAwLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWF0OTFybTkyMDAuYwpAQCAtNjAsNyArNjAsNyBAQAogCS8qCiAJICogVGhlIENhbGVuZGFyIEFsYXJtIHJlZ2lzdGVyIGRvZXMgbm90IGhhdmUgYSBmaWVsZCBmb3IKIAkgKiB0aGUgeWVhciAtIHNvIHRoZXNlIHdpbGwgcmV0dXJuIGFuIGludmFsaWQgdmFsdWUuICBXaGVuIGFuCi0JICogYWxhcm0gaXMgc2V0LCBhdDkxX2FsYXJtX3llYXIgd2lsbGUgc3RvcmUgdGhlIGN1cnJlbnQgeWVhci4KKwkgKiBhbGFybSBpcyBzZXQsIGF0OTFfYWxhcm1feWVhciB3aWxsIHN0b3JlIHRoZSBjdXJyZW50IHllYXIuCiAJICovCiAJdG0tPnRtX3llYXIgID0gYmNkMmJpbihkYXRlICYgQVQ5MV9SVENfQ0VOVCkgKiAxMDA7CS8qIGNlbnR1cnkgKi8KIAl0bS0+dG1feWVhciArPSBiY2QyYmluKChkYXRlICYgQVQ5MV9SVENfWUVBUikgPj4gOCk7CS8qIHllYXIgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy1iZmluLmMgYi9kcml2ZXJzL3J0Yy9ydGMtYmZpbi5jCmluZGV4IGNhOWNmZjguLmEwZmM0Y2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvcnRjL3J0Yy1iZmluLmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLWJmaW4uYwpAQCAtMjAsOSArMjAsOSBAQAogICogd3JpdGUgd291bGQgYmUgZGlzY2FyZGVkIGFuZCB0aGluZ3MgcXVpY2tseSBmYWxsIGFwYXJ0LgogICoKICAqIFRvIGtlZXAgdGhpcyBkZWxheSBmcm9tIHNpZ25pZmljYW50bHkgZGVncmFkaW5nIHBlcmZvcm1hbmNlICh3ZSwgaW4gdGhlb3J5LAotICogd291bGQgaGF2ZSB0byBzbGVlcCBmb3IgdXAgdG8gMSBzZWNvbmQgZXZlcnl0aW1lIHdlIHdhbnRlZCB0byB3cml0ZSBhCisgKiB3b3VsZCBoYXZlIHRvIHNsZWVwIGZvciB1cCB0byAxIHNlY29uZCBldmVyeSB0aW1lIHdlIHdhbnRlZCB0byB3cml0ZSBhCiAgKiByZWdpc3RlciksIHdlIG9ubHkgY2hlY2sgdGhlIHdyaXRlIHBlbmRpbmcgc3RhdHVzIGJlZm9yZSB3ZSBzdGFydCB0byBpc3N1ZQotICogYSBuZXcgd3JpdGUuICBXZSBiYW5rIG9uIHRoZSBpZGVhIHRoYXQgaXQgZG9lc250IG1hdHRlciB3aGVuIHRoZSBzeW5jCisgKiBhIG5ldyB3cml0ZS4gIFdlIGJhbmsgb24gdGhlIGlkZWEgdGhhdCBpdCBkb2Vzbid0IG1hdHRlciB3aGVuIHRoZSBzeW5jCiAgKiBoYXBwZW5zIHNvIGxvbmcgYXMgd2UgZG9uJ3QgYXR0ZW1wdCBhbm90aGVyIHdyaXRlIGJlZm9yZSBpdCBkb2VzLiAgVGhlIG9ubHkKICAqIHRpbWUgdXNlcnNwYWNlIHdvdWxkIHRha2UgdGhpcyBwZW5hbHR5IGlzIHdoZW4gdGhleSB0cnkgYW5kIGRvIG11bHRpcGxlCiAgKiBvcGVyYXRpb25zIHJpZ2h0IGFmdGVyIGFub3RoZXIgLi4uIGJ1dCBpbiB0aGlzIGNhc2UsIHRoZXkgbmVlZCB0byB0YWtlIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ydGMvcnRjLWxwYzMyeHguYyBiL2RyaXZlcnMvcnRjL3J0Yy1scGMzMnh4LmMKaW5kZXggZWM4NzAxYy4uYWUxNjI1MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLWxwYzMyeHguYworKysgYi9kcml2ZXJzL3J0Yy9ydGMtbHBjMzJ4eC5jCkBAIC0yNDAsNyArMjQwLDcgQEAKIAlzcGluX2xvY2tfaW5pdCgmcnRjLT5sb2NrKTsKIAogCS8qCi0JICogVGhlIFJUQyBpcyBvbiBhIHNlcGVyYXRlIHBvd2VyIGRvbWFpbiBhbmQgY2FuIGtlZXAgaXQncyBzdGF0ZQorCSAqIFRoZSBSVEMgaXMgb24gYSBzZXBhcmF0ZSBwb3dlciBkb21haW4gYW5kIGNhbiBrZWVwIGl0J3Mgc3RhdGUKIAkgKiBhY3Jvc3MgYSBjaGlwIHBvd2VyIGN5Y2xlLiBJZiB0aGUgUlRDIGhhcyBuZXZlciBiZWVuIHByZXZpb3VzbHkKIAkgKiBzZXR1cCwgdGhlbiBzZXQgaXQgdXAgbm93IGZvciB0aGUgZmlyc3QgdGltZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcnRjL3J0Yy14MTIwNS5jIGIvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMKaW5kZXggOWFhZTQ5MS4uYjAwYWFkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMKKysrIGIvZHJpdmVycy9ydGMvcnRjLXgxMjA1LmMKQEAgLTU3Myw3ICs1NzMsNyBAQAogCiAJaTJjX3NldF9jbGllbnRkYXRhKGNsaWVudCwgcnRjKTsKIAotCS8qIENoZWNrIGZvciBwb3dlciBmYWlsdXJlcyBhbmQgZXZlbnR1YWx5IGVuYWJsZSB0aGUgb3NjICovCisJLyogQ2hlY2sgZm9yIHBvd2VyIGZhaWx1cmVzIGFuZCBldmVudHVhbGx5IGVuYWJsZSB0aGUgb3NjICovCiAJaWYgKChlcnIgPSB4MTIwNV9nZXRfc3RhdHVzKGNsaWVudCwgJnNyKSkgPT0gMCkgewogCQlpZiAoc3IgJiBYMTIwNV9TUl9SVENGKSB7CiAJCQlkZXZfZXJyKCZjbGllbnQtPmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkXzM5OTBfZXJwLmMgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF8zOTkwX2VycC5jCmluZGV4IDE2NTRhMjQuLjg3YTBjZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkXzM5OTBfZXJwLmMKKysrIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfMzk5MF9lcnAuYwpAQCAtMjIwNyw3ICsyMjA3LDcgQEAKICAqIERBU0RfMzk5MF9FUlBfQ09OVFJPTF9DSEVDSwogICoKICAqIERFU0NSSVBUSU9OCi0gKiAgIERvZXMgYSBnZW5lcmljIGluc3BlY3Rpb24gaWYgYSBjb250cm9sIGNoZWNrIG9jY3VyZWQgYW5kIHNldHMgdXAKKyAqICAgRG9lcyBhIGdlbmVyaWMgaW5zcGVjdGlvbiBpZiBhIGNvbnRyb2wgY2hlY2sgb2NjdXJyZWQgYW5kIHNldHMgdXAKICAqICAgdGhlIHJlbGF0ZWQgZXJyb3IgcmVjb3ZlcnkgcHJvY2VkdXJlCiAgKgogICogUEFSQU1FVEVSCkBAIC0yMjUwLDcgKzIyNTAsNyBAQAogCXN0cnVjdCBkYXNkX2Njd19yZXEgKmVycF9uZXcgPSBOVUxMOwogCWNoYXIgKnNlbnNlOwogCi0JLyogaWYgdGhpcyBwcm9ibGVtIG9jY3VyZWQgb24gYW4gYWxpYXMgcmV0cnkgb24gYmFzZSAqLworCS8qIGlmIHRoaXMgcHJvYmxlbSBvY2N1cnJlZCBvbiBhbiBhbGlhcyByZXRyeSBvbiBiYXNlICovCiAJZXJwX25ldyA9IGRhc2RfMzk5MF9lcnBfaW5zcGVjdF9hbGlhcyhlcnApOwogCWlmIChlcnBfbmV3KQogCQlyZXR1cm4gZXJwX25ldzsKQEAgLTIyODIsNyArMjI4Miw3IEBACiAgKiBEQVNEXzM5OTBfRVJQX0FERF9FUlAKICAqCiAgKiBERVNDUklQVElPTgotICogICBUaGlzIGZ1bnRpb24gYWRkcyBhbiBhZGRpdGlvbmFsIHJlcXVlc3QgYmxvY2sgKEVSUCkgdG8gdGhlIGhlYWQgb2YKKyAqICAgVGhpcyBmdW5jdGlvbiBhZGRzIGFuIGFkZGl0aW9uYWwgcmVxdWVzdCBibG9jayAoRVJQKSB0byB0aGUgaGVhZCBvZgogICogICB0aGUgZ2l2ZW4gY3FyIChvciBlcnApLgogICogICBGb3IgYSBjb21tYW5kIG1vZGUgY3FyIHRoZSBlcnAgaXMgaW5pdGlhbGl6ZWQgYXMgYW4gZGVmYXVsdCBlcnAKICAqICAgKHJldHJ5IFRJQykuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9kZXZtYXAuYyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jCmluZGV4IGNiNmE2N2IuLjQyZTFiZjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jCisrKyBiL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Rldm1hcC5jCkBAIC0zMDIsNyArMzAyLDcgQEAKIC8qCiAgKiBUcnkgdG8gaW50ZXJwcmV0ZSB0aGUgZmlyc3QgZWxlbWVudCBvbiB0aGUgY29tbWEgc2VwYXJhdGVkIHBhcnNlIHN0cmluZwogICogYXMgYSBkZXZpY2UgbnVtYmVyIG9yIGEgcmFuZ2Ugb2YgZGV2aWNlcy4gSWYgdGhlIGludGVycHJldGF0aW9uIGlzCi0gKiBzdWNjZXNzZnVsbCwgY3JlYXRlIHRoZSBtYXRjaGluZyBkYXNkX2Rldm1hcCBlbnRyaWVzIGFuZCByZXR1cm4gYSBwb2ludGVyCisgKiBzdWNjZXNzZnVsLCBjcmVhdGUgdGhlIG1hdGNoaW5nIGRhc2RfZGV2bWFwIGVudHJpZXMgYW5kIHJldHVybiBhIHBvaW50ZXIKICAqIHRvIHRoZSByZXNpZHVhbCBzdHJpbmcuCiAgKiBJZiBpbnRlcnByZXRhdGlvbiBmYWlscyBvciBpbiBjYXNlIG9mIGFuIGVycm9yLCByZXR1cm4gYW4gZXJyb3IgY29kZS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jIGIvZHJpdmVycy9zMzkwL2Jsb2NrL2Rhc2RfZWNrZC5jCmluZGV4IDQ1OWYyY2IuLmRiODAwNWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9ibG9jay9kYXNkX2Vja2QuYworKysgYi9kcml2ZXJzL3MzOTAvYmxvY2svZGFzZF9lY2tkLmMKQEAgLTI4NTgsNyArMjg1OCw3IEBACiAJLyoKIAkgKiBzdHJ1Y3QgUEZYX2Vja2RfZGF0YSBoYXMgdXAgdG8gMiBieXRlIGFzIGV4dGVuZGVkIHBhcmFtZXRlcgogCSAqIHRoaXMgaXMgbmVlZGVkIGZvciB3cml0ZSBmdWxsIHRyYWNrIGFuZCBoYXMgdG8gYmUgbWVudGlvbmVkCi0JICogc2VwZXJhdGVseQorCSAqIHNlcGFyYXRlbHkKIAkgKiBhZGQgOCBpbnN0ZWFkIG9mIDIgdG8ga2VlcCA4IGJ5dGUgYm91bmRhcnkKIAkgKi8KIAlwZnhfZGF0YXNpemUgPSBzaXplb2Yoc3RydWN0IFBGWF9lY2tkX2RhdGEpICsgODsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3JhdzMyNzAuYyBiL2RyaXZlcnMvczM5MC9jaGFyL3JhdzMyNzAuYwppbmRleCA0YzAyMzc2Li5lMjFhNWMzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY2hhci9yYXczMjcwLmMKKysrIGIvZHJpdmVycy9zMzkwL2NoYXIvcmF3MzI3MC5jCkBAIC02MDQsNyArNjA0LDcgQEAKIAkvKgogCSAqIFRvIGRldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgMzI3MCBkZXZpY2Ugd2UgbmVlZCB0byBkbzoKIAkgKiAxKSBzZW5kIGEgJ3JlYWQgcGFydGl0aW9uJyBkYXRhIHN0cmVhbSB0byB0aGUgZGV2aWNlCi0JICogMikgd2FpdCBmb3IgdGhlIGF0dG4gaW50ZXJydXB0IHRoYXQgcHJlY2VlZHMgdGhlIHF1ZXJ5IHJlcGx5CisJICogMikgd2FpdCBmb3IgdGhlIGF0dG4gaW50ZXJydXB0IHRoYXQgcHJlY2VkZXMgdGhlIHF1ZXJ5IHJlcGx5CiAJICogMykgZG8gYSByZWFkIG1vZGlmaWVkIHRvIGdldCB0aGUgcXVlcnkgcmVwbHkKIAkgKiBUbyBtYWtlIHRoaW5ncyB3b3JzZSB3ZSBoYXZlIHRvIGNvcGUgd2l0aCBpbnRlcnZlbnRpb24KIAkgKiByZXF1aXJlZCAoMzI3MCBkZXZpY2Ugc3dpdGNoZWQgdG8gJ3N0YW5kLWJ5JykgYW5kIGNvbW1hbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3RhcGVfY2hhci5jIGIvZHJpdmVycy9zMzkwL2NoYXIvdGFwZV9jaGFyLmMKaW5kZXggZTA5MGEzMC4uODdjZDBhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NoYXIvdGFwZV9jaGFyLmMKKysrIGIvZHJpdmVycy9zMzkwL2NoYXIvdGFwZV9jaGFyLmMKQEAgLTEzOSw3ICsxMzksNyBAQAogCS8qCiAJICogSWYgdGhlIHRhcGUgaXNuJ3QgdGVybWluYXRlZCB5ZXQsIGRvIGl0IG5vdy4gQW5kIHNpbmNlIHdlIHRoZW4KIAkgKiBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgdGFwZSB0aGVyZSB3b3VsZG4ndCBiZSBhbnl0aGluZyB0byByZWFkCi0JICogYW55d2F5cy4gU28gd2UgcmV0dXJuIGltbWVkaWF0bHkuCisJICogYW55d2F5cy4gU28gd2UgcmV0dXJuIGltbWVkaWF0ZWx5LgogCSAqLwogCWlmKGRldmljZS0+cmVxdWlyZWRfdGFwZW1hcmtzKSB7CiAJCXJldHVybiB0YXBlX3N0ZF90ZXJtaW5hdGVfd3JpdGUoZGV2aWNlKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYyBiL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYwppbmRleCBkMzM1NTRkZi4uMmRiMTQ4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL2NoYXIvdHR5MzI3MC5jCisrKyBiL2RyaXZlcnMvczM5MC9jaGFyL3R0eTMyNzAuYwpAQCAtMzI4LDcgKzMyOCw3IEBACiAKIAl0cCA9IChzdHJ1Y3QgdHR5MzI3MCAqKSBycS0+dmlldzsKIAlpZiAocnEtPnJjICE9IDApIHsKLQkJLyogV3JpdGUgd2Fzbid0IHN1Y2Nlc3NmdWxsLiBSZWZyZXNoIGFsbC4gKi8KKwkJLyogV3JpdGUgd2Fzbid0IHN1Y2Nlc3NmdWwuIFJlZnJlc2ggYWxsLiAqLwogCQl0cC0+dXBkYXRlX2ZsYWdzID0gVFRZX1VQREFURV9BTEw7CiAJCXR0eTMyNzBfc2V0X3RpbWVyKHRwLCAxKTsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3MzOTAvY2lvL2RldmljZV9mc20uYyBiL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jCmluZGV4IGE4NDU2OTUuLjYwODQxMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jCisrKyBiL2RyaXZlcnMvczM5MC9jaW8vZGV2aWNlX2ZzbS5jCkBAIC0zMTgsNyArMzE4LDcgQEAKIAogLyoqCiAgICogY2N3X2RldmljZV9ub3RpZnkoKSAtIGluZm9ybSB0aGUgZGV2aWNlJ3MgZHJpdmVyIGFib3V0IGFuIGV2ZW50Ci0gICogQGNkZXY6IGRldmljZSBmb3Igd2hpY2ggYW4gZXZlbnQgb2NjdXJlZAorICAqIEBjZGV2OiBkZXZpY2UgZm9yIHdoaWNoIGFuIGV2ZW50IG9jY3VycmVkCiAgICogQGV2ZW50OiBldmVudCB0aGF0IG9jY3VycmVkCiAgICoKICAgKiBSZXR1cm5zOgpAQCAtNjg4LDcgKzY4OCw3IEBACiAJICAgIChzY3N3X3N0Y3RsKCZjZGV2LT5wcml2YXRlLT5pcmIuc2NzdykgJiBTQ1NXX1NUQ1RMX1NUQVRVU19QRU5EKSkgewogCQkvKgogCQkgKiBObyBmaW5hbCBzdGF0dXMgeWV0IG9yIGZpbmFsIHN0YXR1cyBub3QgeWV0IGRlbGl2ZXJlZAotCQkgKiB0byB0aGUgZGV2aWNlIGRyaXZlci4gQ2FuJ3QgZG8gcGF0aCB2ZXJmaWNhdGlvbiBub3csCisJCSAqIHRvIHRoZSBkZXZpY2UgZHJpdmVyLiBDYW4ndCBkbyBwYXRoIHZlcmlmaWNhdGlvbiBub3csCiAJCSAqIGRlbGF5IHVudGlsIGZpbmFsIHN0YXR1cyB3YXMgZGVsaXZlcmVkLgogCQkgKi8KIAkJY2Rldi0+cHJpdmF0ZS0+ZmxhZ3MuZG92ZXJpZnkgPSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL2NyeXB0by96Y3J5cHRfYXBpLmggYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuaAppbmRleCA4OGViZDExLi45Njg4ZjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuaAorKysgYi9kcml2ZXJzL3MzOTAvY3J5cHRvL3pjcnlwdF9hcGkuaApAQCAtNzYsNyArNzYsNyBAQAogCiAvKioKICAqIExhcmdlIHJhbmRvbSBudW1iZXJzIGFyZSBwdWxsZWQgaW4gNDA5NiBieXRlIGNodW5rcyBmcm9tIHRoZSBjcnlwdG8gY2FyZHMKLSAqIGFuZCBzdG9yZWQgaW4gYSBwYWdlLiBCZSBjYXJlZnVsbCB3aGVuIGluY3JlYXNpbmcgdGhpcyBidWZmZXIgZHVlIHRvIHNpemUKKyAqIGFuZCBzdG9yZWQgaW4gYSBwYWdlLiBCZSBjYXJlZnVsIHdoZW4gaW5jcmVhc2luZyB0aGlzIGJ1ZmZlciBkdWUgdG8gc2l6ZQogICogbGltaXRhdGlvbnMgZm9yIEFQIHJlcXVlc3RzLgogICovCiAjZGVmaW5lIFpDUllQVF9STkdfQlVGRkVSX1NJWkUJNDA5NgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9jbGF3LmMgYi9kcml2ZXJzL3MzOTAvbmV0L2NsYXcuYwppbmRleCA5ZmViNjJmLi5kYThhYTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3MzOTAvbmV0L2NsYXcuYworKysgYi9kcml2ZXJzL3MzOTAvbmV0L2NsYXcuYwpAQCAtNzc5LDcgKzc3OSw3IEBACiAJY2FzZSBDTEFXX1NUQVJUX1dSSVRFOgogCQlpZiAocF9jaC0+aXJiLT5zY3N3LmNtZC5kc3RhdCAmIERFVl9TVEFUX1VOSVRfQ0hFQ0spIHsKIAkJCWRldl9pbmZvKCZjZGV2LT5kZXYsCi0JCQkJIiVzOiBVbml0IENoZWNrIE9jY3VyZWQgaW4gIgorCQkJCSIlczogVW5pdCBDaGVjayBPY2N1cnJlZCBpbiAiCiAJCQkJIndyaXRlIGNoYW5uZWxcbiIsIGRldi0+bmFtZSk7CiAJCQljbGVhcl9iaXQoMCwgKHZvaWQgKikmcF9jaC0+SU9fYWN0aXZlKTsKIAkJCWlmIChwX2NoLT5pcmItPmVjd1swXSAmIDB4ODApIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2N0Y21fZnNtcy5jCmluZGV4IDhjOTIxZmMuLjJkNjAyMjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvY3RjbV9mc21zLmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9jdGNtX2ZzbXMuYwpAQCAtMTg0LDcgKzE4NCw3IEBACiBzdGF0aWMgdm9pZCBjdGNtcGNfY2h4X3NlbmRfc3dlZXAoZnNtX2luc3RhbmNlICpmc20sIGludCBldmVudCwgdm9pZCAqYXJnKTsKIAogLyoqCi0gKiBDaGVjayByZXR1cm4gY29kZSBvZiBhIHByZWNlZWRpbmcgY2N3X2RldmljZSBjYWxsLCBoYWx0X0lPIGV0Yy4uLgorICogQ2hlY2sgcmV0dXJuIGNvZGUgb2YgYSBwcmVjZWRpbmcgY2N3X2RldmljZSBjYWxsLCBoYWx0X0lPIGV0Yy4uLgogICoKICAqIGNoCToJVGhlIGNoYW5uZWwsIHRoZSBlcnJvciBiZWxvbmdzIHRvLgogICogUmV0dXJucyB0aGUgZXJyb3IgY29kZSAoIT0gMCkgdG8gaW5zcGVjdC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9uZXQvbGNzLmMgYi9kcml2ZXJzL3MzOTAvbmV0L2xjcy5jCmluZGV4IDdmYmM0YWQuLjQ5ZDFjZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvbGNzLmMKKysrIGIvZHJpdmVycy9zMzkwL25ldC9sY3MuYwpAQCAtMTEyMyw3ICsxMTIzLDcgQEAKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoaXBtLCB0bXAsICZjYXJkLT5pcG1fbGlzdCwgbGlzdCl7CiAJCXN3aXRjaCAoaXBtLT5pcG1fc3RhdGUpIHsKIAkJY2FzZSBMQ1NfSVBNX1NUQVRFX1NFVF9SRVFVSVJFRDoKLQkJCS8qIGRlbCBmcm9tIGlwbV9saXN0IHNvIG5vb25lIGVsc2UgY2FuIHRhbXBlciB3aXRoCisJCQkvKiBkZWwgZnJvbSBpcG1fbGlzdCBzbyBubyBvbmUgZWxzZSBjYW4gdGFtcGVyIHdpdGgKIAkJCSAqIHRoaXMgZW50cnkgKi8KIAkJCWxpc3RfZGVsX2luaXQoJmlwbS0+bGlzdCk7CiAJCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjYXJkLT5pcG1fbG9jaywgZmxhZ3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbWFpbi5jIGIvZHJpdmVycy9zMzkwL25ldC9xZXRoX2NvcmVfbWFpbi5jCmluZGV4IDEwYTNhM2IuLjg1Y2M1MzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvczM5MC9uZXQvcWV0aF9jb3JlX21haW4uYworKysgYi9kcml2ZXJzL3MzOTAvbmV0L3FldGhfY29yZV9tYWluLmMKQEAgLTExMDcsNyArMTEwNyw3IEBACiAJSU5JVF9MSVNUX0hFQUQoY2FyZC0+aXBfdGJkX2xpc3QpOwogCUlOSVRfTElTVF9IRUFEKCZjYXJkLT5jbWRfd2FpdGVyX2xpc3QpOwogCWluaXRfd2FpdHF1ZXVlX2hlYWQoJmNhcmQtPndhaXRfcSk7Ci0JLyogaW50aWFsIG9wdGlvbnMgKi8KKwkvKiBpbml0aWFsIG9wdGlvbnMgKi8KIAlxZXRoX3NldF9pbnRpYWxfb3B0aW9ucyhjYXJkKTsKIAkvKiBJUCBhZGRyZXNzIHRha2VvdmVyICovCiAJSU5JVF9MSVNUX0hFQUQoJmNhcmQtPmlwYXRvLmVudHJpZXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYyBiL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfZnNmLmMKaW5kZXggYTBlMDVlZi4uODUxMmI1YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9mc2YuYworKysgYi9kcml2ZXJzL3MzOTAvc2NzaS96ZmNwX2ZzZi5jCkBAIC0xMDgzLDcgKzEwODMsNyBAQAogCQl9CiAJCWJyZWFrOwogCWNhc2UgRlNGX1NCQUxfTUlTTUFUQ0g6Ci0JCS8qIHNob3VsZCBuZXZlciBvY2N1cmUsIGF2b2lkZWQgaW4gemZjcF9mc2Zfc2VuZF9lbHMgKi8KKwkJLyogc2hvdWxkIG5ldmVyIG9jY3VyLCBhdm9pZGVkIGluIHpmY3BfZnNmX3NlbmRfZWxzICovCiAJCS8qIGZhbGwgdGhyb3VnaCAqLwogCWRlZmF1bHQ6CiAJCXJlcS0+c3RhdHVzIHw9IFpGQ1BfU1RBVFVTX0ZTRlJFUV9FUlJPUjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvczM5MC9zY3NpL3pmY3BfcWRpby5jIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKaW5kZXggOGRhNWVkNi4uOThlOTdkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKKysrIGIvZHJpdmVycy9zMzkwL3Njc2kvemZjcF9xZGlvLmMKQEAgLTM5MSw3ICszOTEsNyBAQAogCWlmIChkb19RRElPKGNkZXYsIFFESU9fRkxBR19TWU5DX0lOUFVULCAwLCAwLCBRRElPX01BWF9CVUZGRVJTX1BFUl9RKSkKIAkJZ290byBmYWlsZWRfcWRpbzsKIAotCS8qIHNldCBpbmRleCBvZiBmaXJzdCBhdmFsYWJsZSBTQkFMUyAvIG51bWJlciBvZiBhdmFpbGFibGUgU0JBTFMgKi8KKwkvKiBzZXQgaW5kZXggb2YgZmlyc3QgYXZhaWxhYmxlIFNCQUxTIC8gbnVtYmVyIG9mIGF2YWlsYWJsZSBTQkFMUyAqLwogCXFkaW8tPnJlcV9xX2lkeCA9IDA7CiAJYXRvbWljX3NldCgmcWRpby0+cmVxX3FfZnJlZSwgUURJT19NQVhfQlVGRkVSU19QRVJfUSk7CiAJYXRvbWljX3NldF9tYXNrKFpGQ1BfU1RBVFVTX0FEQVBURVJfUURJT1VQLCAmcWRpby0+YWRhcHRlci0+c3RhdHVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2J1cy9jaGFyL2pzZmxhc2guYyBiL2RyaXZlcnMvc2J1cy9jaGFyL2pzZmxhc2guYwppbmRleCBlODU2NjIyLi42YjQ2NzhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NidXMvY2hhci9qc2ZsYXNoLmMKKysrIGIvZHJpdmVycy9zYnVzL2NoYXIvanNmbGFzaC5jCkBAIC0xMyw3ICsxMyw3IEBACiAgKiBUT0RPOiBFcmFzZS9wcm9ncmFtIGJvdGggYmFua3Mgb2YgYSA4TUIgU0lNTS4KICAqCiAgKiBJdCBpcyBhbnRpY2lwYXRlZCB0aGF0IHByb2dyYW1taW5nIGFuIE9TIEZsYXNoIHdpbGwgYmUgYSByb3V0aW5lCi0gKiBwcm9jZWR1cmUuIEluIHRoZSBzYW1lIHRpbWUgaXQgaXMgZXhlZWRpbmdseSBkYW5nZXJvdXMgYmVjYXVzZQorICogcHJvY2VkdXJlLiBJbiB0aGUgc2FtZSB0aW1lIGl0IGlzIGV4Y2VlZGluZ2x5IGRhbmdlcm91cyBiZWNhdXNlCiAgKiBhIHVzZXIgY2FuIHByb2dyYW0gaXRzIE9CUCBmbGFzaCB3aXRoIE9TIGltYWdlIGFuZCBlZmZlY3RpdmVseQogICoga2lsbCB0aGUgbWFjaGluZS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NidXMvY2hhci9tYXgxNjE3LmggYi9kcml2ZXJzL3NidXMvY2hhci9tYXgxNjE3LmgKaW5kZXggMGJiMDljMi4uY2QzMDgxOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zYnVzL2NoYXIvbWF4MTYxNy5oCisrKyBiL2RyaXZlcnMvc2J1cy9jaGFyL21heDE2MTcuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgTUFYMTYxN19DUFVfVEVNUAkweDAxIC8qIFByb2Nlc3NvciBkaWUgdGVtcCBpbiBDCSovCiAjZGVmaW5lIE1BWDE2MTdfU1RBVFVTCQkweDAyIC8qIENoaXAgc3RhdHVzIGJpdHMJKi8KIAotLyogUmVhZC1vbmx5IHZlcnNpb25zIG9mIGNoYW5nYWJsZSByZWdpc3RlcnMuICovCisvKiBSZWFkLW9ubHkgdmVyc2lvbnMgb2YgY2hhbmdlYWJsZSByZWdpc3RlcnMuICovCiAjZGVmaW5lIE1BWDE2MTdfUkRfQ0ZHX0JZVEUJMHgwMyAvKiBDb25maWcgcmVnaXN0ZXIJCSovCiAjZGVmaW5lIE1BWDE2MTdfUkRfQ1ZSQVRFX0JZVEUJMHgwNCAvKiBUZW1wIGNvbnZlcnNpb24gcmF0ZQkqLwogI2RlZmluZSBNQVgxNjE3X1JEX0FNQl9ISUdITElNCTB4MDUgLyogQW1iaWVudCBoaWdoIGxpbWl0CSovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvM3ctOXh4eC5oIGIvZHJpdmVycy9zY3NpLzN3LTl4eHguaAppbmRleCAzMzQzODI0Li4wNDBmNzIxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvM3ctOXh4eC5oCisrKyBiL2RyaXZlcnMvc2NzaS8zdy05eHh4LmgKQEAgLTYxLDcgKzYxLDcgQEAKIAl7MHgwMDAwLCAiQUVOIHF1ZXVlIGVtcHR5In0sCiAJezB4MDAwMSwgIkNvbnRyb2xsZXIgcmVzZXQgb2NjdXJyZWQifSwKIAl7MHgwMDAyLCAiRGVncmFkZWQgdW5pdCBkZXRlY3RlZCJ9LAotCXsweDAwMDMsICJDb250cm9sbGVyIGVycm9yIG9jY3VyZWQifSwKKwl7MHgwMDAzLCAiQ29udHJvbGxlciBlcnJvciBvY2N1cnJlZCJ9LAogCXsweDAwMDQsICJCYWNrZ3JvdW5kIHJlYnVpbGQgZmFpbGVkIn0sCiAJezB4MDAwNSwgIkJhY2tncm91bmQgcmVidWlsZCBkb25lIn0sCiAJezB4MDAwNiwgIkluY29tcGxldGUgdW5pdCBkZXRlY3RlZCJ9LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpLzN3LXh4eHguaCBiL2RyaXZlcnMvc2NzaS8zdy14eHh4LmgKaW5kZXggOGI5ZjlkMS4uNDlkY2YwMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzN3LXh4eHguaAorKysgYi9kcml2ZXJzL3Njc2kvM3cteHh4eC5oCkBAIC04LDcgKzgsNyBAQAogCiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAxMCAzd2FyZSBJbmMuCiAKLSAgIEtlcm5lbCBjb21wYXRpYmxpdHkgQnk6CUFuZHJlIEhlZHJpY2sgPGFuZHJlQHN1c2UuY29tPgorICAgS2VybmVsIGNvbXBhdGliaWxpdHkgQnk6CUFuZHJlIEhlZHJpY2sgPGFuZHJlQHN1c2UuY29tPgogICAgTm9uLUNvcHlyaWdodCAoQykgMjAwMAlBbmRyZSBIZWRyaWNrIDxhbmRyZUBzdXNlLmNvbT4KIAogICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS81M2M3MDAuc2NyIGIvZHJpdmVycy9zY3NpLzUzYzcwMC5zY3IKaW5kZXggYTA2NGEwOS4uZWM4MjJlMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpLzUzYzcwMC5zY3IKKysrIGIvZHJpdmVycy9zY3NpLzUzYzcwMC5zY3IKQEAgLTMxLDcgKzMxLDcgQEAKIEFCU09MVVRFCVJlY2VpdmVNc2dBZGRyZXNzID0gMAk7IEFkZHIgdG8gcmVjZWl2ZSBtc2cKIDsKIDsgVGhpcyBpcyB0aGUgbWFnaWMgY29tcG9uZW50IGZvciBoYW5kbGluZyBzY2F0dGVyLWdhdGhlci4gIEVhY2ggb2YgdGhlCi07IFNHIGNvbXBvbmVudHMgaXMgcHJlY2VlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQorOyBTRyBjb21wb25lbnRzIGlzIHByZWNlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQogOyBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEgYW5kIGp1bXBzIHRvIHRoZSBuZXh0IFNHIHNlZ21lbnQuICBUaGUgZmluYWwKIDsgU0cgc2VnbWVudCBqdW1wcyBiYWNrIHRvIC4gIEhvd2V2ZXIsIHRoaXMgYWRkcmVzcyBpcyB0aGUgZmlyc3QgU0cgc2NyaXB0CiA7IHNlZ21lbnQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvNTNjNzAwX2QuaF9zaGlwcGVkIGIvZHJpdmVycy9zY3NpLzUzYzcwMF9kLmhfc2hpcHBlZAppbmRleCAwYjQyYTUxLi5hYTYyM2RhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvNTNjNzAwX2QuaF9zaGlwcGVkCisrKyBiL2RyaXZlcnMvc2NzaS81M2M3MDBfZC5oX3NoaXBwZWQKQEAgLTM0LDcgKzM0LDcgQEAKIEFCU09MVVRFCVJlY2VpdmVNc2dBZGRyZXNzID0gMAk7IEFkZHIgdG8gcmVjZWl2ZSBtc2cKIDsKIDsgVGhpcyBpcyB0aGUgbWFnaWMgY29tcG9uZW50IGZvciBoYW5kbGluZyBzY2F0dGVyLWdhdGhlci4gIEVhY2ggb2YgdGhlCi07IFNHIGNvbXBvbmVudHMgaXMgcHJlY2VlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQorOyBTRyBjb21wb25lbnRzIGlzIHByZWNlZGVkIGJ5IGEgc2NyaXB0IGZyYWdtZW50IHdoaWNoIG1vdmVzIHRoZQogOyBuZWNlc3NhcnkgYW1vdW50IG9mIGRhdGEgYW5kIGp1bXBzIHRvIHRoZSBuZXh0IFNHIHNlZ21lbnQuICBUaGUgZmluYWwKIDsgU0cgc2VnbWVudCBqdW1wcyBiYWNrIHRvIC4gIEhvd2V2ZXIsIHRoaXMgYWRkcmVzcyBpcyB0aGUgZmlyc3QgU0cgc2NyaXB0CiA7IHNlZ21lbnQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvRmxhc2hQb2ludC5jIGIvZHJpdmVycy9zY3NpL0ZsYXNoUG9pbnQuYwppbmRleCBlNDBjZGZiLi5kY2Q3MTZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvRmxhc2hQb2ludC5jCisrKyBiL2RyaXZlcnMvc2NzaS9GbGFzaFBvaW50LmMKQEAgLTI1MDksNyArMjUwOSw3IEBACiAJCQkJV1JfSEFSUE9PTihwb3J0ICsgaHBfYXV0b3N0YXJ0XzMsCiAJCQkJCSAgIChTRUxFQ1QgKyBTRUxDSEtfU1RSVCkpOwogCi0JCQkJLyogU2V0dXAgb3VyIFNUQVRFIHNvIHdlIGtub3cgd2hhdCBoYXBwZW5kIHdoZW4KKwkJCQkvKiBTZXR1cCBvdXIgU1RBVEUgc28gd2Uga25vdyB3aGF0IGhhcHBlbmVkIHdoZW4KIAkJCQkgICB0aGUgd2hlZWxzIGZhbGwgb2ZmLiAqLwogCQkJCWN1cnJTQ0NCLT5TY2NiX3Njc2lzdGF0ID0gU0VMRUNUX1NUOwogCkBAIC0yOTAwLDcgKzI5MDAsNyBAQAogICoKICAqIEZ1bmN0aW9uOiBGUFRfc2RlY20KICAqCi0gKiBEZXNjcmlwdGlvbjogRGV0ZXJtaW5lIHRoZSBwcm9wZXIgcmVzcG9uY2UgdG8gdGhlIG1lc3NhZ2UgZnJvbSB0aGUKKyAqIERlc2NyaXB0aW9uOiBEZXRlcm1pbmUgdGhlIHByb3BlciByZXNwb25zZSB0byB0aGUgbWVzc2FnZSBmcm9tIHRoZQogICogICAgICAgICAgICAgIHRhcmdldCBkZXZpY2UuCiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL05DUjUzODAuYyBiL2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMKaW5kZXggZTdjZDJmYy4uMTY1ZTRkZDg2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvTkNSNTM4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9OQ1I1MzgwLmMKQEAgLTExOTgsMTIgKzExOTgsMTIgQEAKIAkJCQkgKi8KIAogCQkJCWlmICgoTkNSNTM4MF9yZWFkKE1PREVfUkVHKSAmIE1SX0RNQSkgJiYgKChiYXNyICYgQkFTUl9FTkRfRE1BX1RSQU5TRkVSKSB8fCAhKGJhc3IgJiBCQVNSX1BIQVNFX01BVENIKSkpIHsKLQkJCQkJaW50IHRyYW5zZmVyZWQ7CisJCQkJCWludCB0cmFuc2ZlcnJlZDsKIAogCQkJCQlpZiAoIWhvc3RkYXRhLT5jb25uZWN0ZWQpCiAJCQkJCQlwYW5pYygic2NzaSVkIDogcmVjZWl2ZWQgZW5kIG9mIERNQSBpbnRlcnJ1cHQgd2l0aCBubyBjb25uZWN0ZWQgY21kXG4iLCBpbnN0YW5jZS0+aG9zdG5vKTsKIAotCQkJCQl0cmFuc2ZlcmVkID0gKGhvc3RkYXRhLT5kbWFsZW4gLSBOQ1I1MzgwX2RtYV9yZXNpZHVhbChpbnN0YW5jZSkpOworCQkJCQl0cmFuc2ZlcnJlZCA9IChob3N0ZGF0YS0+ZG1hbGVuIC0gTkNSNTM4MF9kbWFfcmVzaWR1YWwoaW5zdGFuY2UpKTsKIAkJCQkJaG9zdGRhdGEtPmNvbm5lY3RlZC0+U0NwLnRoaXNfcmVzaWR1YWwgLT0gdHJhbnNmZXJyZWQ7CiAJCQkJCWhvc3RkYXRhLT5jb25uZWN0ZWQtPlNDcC5wdHIgKz0gdHJhbnNmZXJyZWQ7CiAJCQkJCWhvc3RkYXRhLT5kbWFsZW4gPSAwOwpAQCAtMTU2Myw3ICsxNTYzLDcgQEAKICAqICAgICAgYnl0ZXMgdG8gdHJhbnNmZXIsICoqZGF0YSAtIHBvaW50ZXIgdG8gZGF0YSBwb2ludGVyLgogICogCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICogICAgICBtYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgb3IgdHJhbnNmZXJlZCBvciBleGl0CisgKiAgICAgIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKiAgICAgIGlzIGluIHNhbWUgcGhhc2UuCiAgKgogICogICAgICBBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpAQCAtMTgwMCw3ICsxODAwLDcgQEAKICAqICAgICAgYnl0ZXMgdG8gdHJhbnNmZXIsICoqZGF0YSAtIHBvaW50ZXIgdG8gZGF0YSBwb2ludGVyLgogICogCiAgKiBSZXR1cm5zIDogLTEgd2hlbiBkaWZmZXJlbnQgcGhhc2UgaXMgZW50ZXJlZCB3aXRob3V0IHRyYW5zZmVycmluZwotICogICAgICBtYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgb3IgdHJhbnNmZXJlZCBvciBleGl0CisgKiAgICAgIG1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKiAgICAgIGlzIGluIHNhbWUgcGhhc2UuCiAgKgogICogICAgICBBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjaGJhLmMgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYwppbmRleCAxMThjZTgzLi4wNjE5OTU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNoYmEuYwpAQCAtNzQ3LDggKzc0Nyw4IEBACiAgKiBBcmd1bWVudHM6IFsxXSBwb2ludGVyIHRvIHZvaWQgWzFdIGludAogICoKICAqIFB1cnBvc2U6IFNldHMgU0NTSSBpbnF1aXJ5IGRhdGEgc3RyaW5ncyBmb3IgdmVuZG9yLCBwcm9kdWN0Ci0gKiBhbmQgcmV2aXNpb24gbGV2ZWwuIEFsbG93cyBzdHJpbmdzIHRvIGJlIHNldCBpbiBwbGF0Zm9ybSBkZXBlbmRhbnQKLSAqIGZpbGVzIGluc3RlYWQgb2YgaW4gT1MgZGVwZW5kYW50IGRyaXZlciBzb3VyY2UuCisgKiBhbmQgcmV2aXNpb24gbGV2ZWwuIEFsbG93cyBzdHJpbmdzIHRvIGJlIHNldCBpbiBwbGF0Zm9ybSBkZXBlbmRlbnQKKyAqIGZpbGVzIGluc3RlYWQgb2YgaW4gT1MgZGVwZW5kZW50IGRyaXZlciBzb3VyY2UuCiAgKi8KIAogc3RhdGljIHZvaWQgc2V0aW5xc3RyKHN0cnVjdCBhYWNfZGV2ICpkZXYsIHZvaWQgKmRhdGEsIGludCB0aW5kZXgpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmggYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9hYWNyYWlkLmgKaW5kZXggMjlhYjAwMC4uZmZiNTg3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvYWFjcmFpZC5oCisrKyBiL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2FhY3JhaWQuaApAQCAtMTI1OSw3ICsxMjU5LDcgQEAKICNkZWZpbmUgQ0FDSEVfVU5TVEFCTEUJCTIKIAogLyoKLSAqCUxldHMgdGhlIGNsaWVudCBrbm93IGF0IHdoaWNoIGxldmVsIHRoZSBkYXRhIHdhcyBjb21taXRlZCBvbgorICoJTGV0cyB0aGUgY2xpZW50IGtub3cgYXQgd2hpY2ggbGV2ZWwgdGhlIGRhdGEgd2FzIGNvbW1pdHRlZCBvbgogICoJYSB3cml0ZSByZXF1ZXN0CiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jIGIvZHJpdmVycy9zY3NpL2FhY3JhaWQvY29tbXN1cC5jCmluZGV4IGRkN2FkM2IuLmU3ZDBkNDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9hYWNyYWlkL2NvbW1zdXAuYworKysgYi9kcml2ZXJzL3Njc2kvYWFjcmFpZC9jb21tc3VwLmMKQEAgLTQyMSw3ICs0MjEsNyBAQAogCWlmICghKGh3X2ZpYi0+aGVhZGVyLlhmZXJTdGF0ZSAmIGNwdV90b19sZTMyKEhvc3RPd25lZCkpKQogCQlyZXR1cm4gLUVCVVNZOwogCS8qCi0JICoJVGhlcmUgYXJlIDUgY2FzZXMgd2l0aCB0aGUgd2FpdCBhbmQgcmVwb25zZSByZXF1ZXN0ZWQgZmxhZ3MuCisJICoJVGhlcmUgYXJlIDUgY2FzZXMgd2l0aCB0aGUgd2FpdCBhbmQgcmVzcG9uc2UgcmVxdWVzdGVkIGZsYWdzLgogCSAqCVRoZSBvbmx5IGludmFsaWQgY2FzZXMgYXJlIGlmIHRoZSBjYWxsZXIgcmVxdWVzdHMgdG8gd2FpdCBhbmQKIAkgKglkb2VzIG5vdCByZXF1ZXN0IGEgcmVzcG9uc2UgYW5kIGlmIHRoZSBjYWxsZXIgZG9lcyBub3Qgd2FudCBhCiAJICoJcmVzcG9uc2UgYW5kIHRoZSBGaWIgaXMgbm90IGFsbG9jYXRlZCBmcm9tIHBvb2wuIElmIGEgcmVzcG9uc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9hZHZhbnN5cy5jIGIvZHJpdmVycy9zY3NpL2FkdmFuc3lzLmMKaW5kZXggMDgxYzZkZS4uYmZkNjE4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FkdmFuc3lzLmMKKysrIGIvZHJpdmVycy9zY3NpL2FkdmFuc3lzLmMKQEAgLTQ1NDQsNyArNDU0NCw3IEBACiAgKiBDb3B5IDQgYnl0ZXMgdG8gTFJBTS4KICAqCiAgKiBUaGUgc291cmNlIGRhdGEgaXMgYXNzdW1lZCB0byBiZSBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyIGluIG1lbW9yeQotICogYW5kIGlzIG1haW50YWluZWQgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciB3aGVuIHdyaXRlbiB0byBMUkFNLgorICogYW5kIGlzIG1haW50YWluZWQgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciB3aGVuIHdyaXR0ZW4gdG8gTFJBTS4KICAqLwogc3RhdGljIHZvaWQKIEFzY01lbURXb3JkQ29weVB0clRvTHJhbShQb3J0QWRkciBpb3BfYmFzZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haGExNzQwLmMgYi9kcml2ZXJzL3Njc2kvYWhhMTc0MC5jCmluZGV4IGQwNThmMWEuLjFjMTBiNzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9haGExNzQwLmMKKysrIGIvZHJpdmVycy9zY3NpL2FoYTE3NDAuYwpAQCAtNDYxLDcgKzQ2MSw3IEBACiAJLyogVGhlIEFkYXB0ZWMgU3BlYyBzYXlzIHRoZSBjYXJkIGlzIHNvIGZhc3QgdGhhdCB0aGUgbG9vcHMKICAgICAgICAgICAgd2lsbCBvbmx5IGJlIGV4ZWN1dGVkIG9uY2UgaW4gdGhlIGNvZGUgYmVsb3cuIEV2ZW4gaWYgdGhpcwogICAgICAgICAgICB3YXMgdHJ1ZSB3aXRoIHRoZSBmYXN0ZXN0IHByb2Nlc3NvcnMgd2hlbiB0aGUgc3BlYyB3YXMKLSAgICAgICAgICAgd3JpdHRlbiwgaXQgZG9lc24ndCBzZWVtIHRvIGJlIHRydWUgd2l0aCB0b2RheXMgZmFzdAorICAgICAgICAgICB3cml0dGVuLCBpdCBkb2Vzbid0IHNlZW0gdG8gYmUgdHJ1ZSB3aXRoIHRvZGF5J3MgZmFzdAogICAgICAgICAgICBwcm9jZXNzb3JzLiBXZSBwcmludCBhIHdhcm5pbmcgaWYgdGhlIGNvZGUgaXMgZXhlY3V0ZWQgbW9yZQogICAgICAgICAgICBvZnRlbiB0aGFuIExPT1BDTlRfV0FSTi4gSWYgdGhpcyBoYXBwZW5zLCBpdCBzaG91bGQgYmUKICAgICAgICAgICAgaW52ZXN0aWdhdGVkLiBJZiB0aGUgY291bnQgcmVhY2hlcyBMT09QQ05UX01BWCwgd2UgYXNzdW1lCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LmggYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LmgKaW5kZXggOTVlZTUwMy4uOWIwNTk0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5oCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHguaApAQCAtNDczLDcgKzQ3Myw3IEBACiAgKglvIEEgcmVzaWR1YWwgaGFzIG9jY3VycmVkIGlmIFNHX0ZVTExfUkVTSUQgaXMgc2V0IGluIHNncHRyLAogICoJICBvciByZXNpZHVhbF9zZ3B0ciBkb2VzIG5vdCBoYXZlIFNHX0xJU1RfTlVMTCBzZXQuCiAgKgotICoJbyBXZSBhcmUgdHJhbnNmZXJpbmcgdGhlIGxhc3Qgc2VnbWVudCBpZiByZXNpZHVhbF9kYXRhY250IGhhcworICoJbyBXZSBhcmUgdHJhbnNmZXJyaW5nIHRoZSBsYXN0IHNlZ21lbnQgaWYgcmVzaWR1YWxfZGF0YWNudCBoYXMKICAqCSAgdGhlIFNHX0xBU1RfU0VHIGZsYWcgc2V0LgogICoKICAqIEhvc3Q6CkBAIC01MTYsNyArNTE2LDcgQEAKICAqLwogCiAvKgotICogRGVmaW5pdGlvbiBvZiBhIHNjYXR0ZXIvZ2F0aGVyIGVsZW1lbnQgYXMgdHJhbnNmZXJlZCB0byB0aGUgY29udHJvbGxlci4KKyAqIERlZmluaXRpb24gb2YgYSBzY2F0dGVyL2dhdGhlciBlbGVtZW50IGFzIHRyYW5zZmVycmVkIHRvIHRoZSBjb250cm9sbGVyLgogICogVGhlIGFpYzd4eHggY2hpcHMgb25seSBzdXBwb3J0IGEgMjRiaXQgbGVuZ3RoLiAgV2UgdXNlIHRoZSB0b3AgYnl0ZSBvZgogICogdGhlIGxlbmd0aCB0byBzdG9yZSBhZGRpdGlvbmFsIGFkZHJlc3MgYml0cyBhbmQgYSBmbGFnIHRvIGluZGljYXRlCiAgKiB0aGF0IGEgZ2l2ZW4gc2VnbWVudCB0ZXJtaW5hdGVzIHRoZSB0cmFuc2Zlci4gIFRoaXMgZ2l2ZXMgdXMgYW4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHgucmVnIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5yZWcKaW5kZXggMDY2NmMyMi4uN2UxMmMzMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5yZWcKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5yZWcKQEAgLTMwNSw3ICszMDUsNyBAQAogfQogCiAvKgotICogU2VxdWVuY2VyIEludGVydXB0IFN0YXR1cworICogU2VxdWVuY2VyIEludGVycnVwdCBTdGF0dXMKICAqLwogcmVnaXN0ZXIgU0VRSU5UU1RBVCB7CiAJYWRkcmVzcwkJCTB4MDBDCkBAIC02ODUsNyArNjg1LDcgQEAKIH0KIAogLyoKLSAqIENNQyBSZWNpZXZlIE1lc3NhZ2UgMAorICogQ01DIFJlY2VpdmUgTWVzc2FnZSAwCiAgKi8KIHJlZ2lzdGVyIENNQ1JYTVNHMCB7CiAJYWRkcmVzcwkJCTB4MDkwCkBAIC02OTYsNyArNjk2LDcgQEAKIH0KIAogLyoKLSAqIE92ZXJsYXkgUmVjaWV2ZSBNZXNzYWdlIDAKKyAqIE92ZXJsYXkgUmVjZWl2ZSBNZXNzYWdlIDAKICAqLwogcmVnaXN0ZXIgT1ZMWVJYTVNHMCB7CiAJYWRkcmVzcwkJCTB4MDkwCkBAIC03MzIsNyArNzMyLDcgQEAKIH0KIAogLyoKLSAqIENNQyBSZWNpZXZlIE1lc3NhZ2UgMQorICogQ01DIFJlY2VpdmUgTWVzc2FnZSAxCiAgKi8KIHJlZ2lzdGVyIENNQ1JYTVNHMSB7CiAJYWRkcmVzcwkJCTB4MDkxCkBAIC03NDIsNyArNzQyLDcgQEAKIH0KIAogLyoKLSAqIE92ZXJsYXkgUmVjaWV2ZSBNZXNzYWdlIDEKKyAqIE92ZXJsYXkgUmVjZWl2ZSBNZXNzYWdlIDEKICAqLwogcmVnaXN0ZXIgT1ZMWVJYTVNHMSB7CiAJYWRkcmVzcwkJCTB4MDkxCkBAIC03NzcsNyArNzc3LDcgQEAKIH0KIAogLyoKLSAqIENNQyBSZWNpZXZlIE1lc3NhZ2UgMgorICogQ01DIFJlY2VpdmUgTWVzc2FnZSAyCiAgKi8KIHJlZ2lzdGVyIENNQ1JYTVNHMiB7CiAJYWRkcmVzcwkJCTB4MDkyCkBAIC03ODcsNyArNzg3LDcgQEAKIH0KIAogLyoKLSAqIE92ZXJsYXkgUmVjaWV2ZSBNZXNzYWdlIDIKKyAqIE92ZXJsYXkgUmVjZWl2ZSBNZXNzYWdlIDIKICAqLwogcmVnaXN0ZXIgT1ZMWVJYTVNHMiB7CiAJYWRkcmVzcwkJCTB4MDkyCkBAIC04MTYsNyArODE2LDcgQEAKIH0KIAogLyoKLSAqIENNQyBSZWNpZXZlIE1lc3NhZ2UgMworICogQ01DIFJlY2VpdmUgTWVzc2FnZSAzCiAgKi8KIHJlZ2lzdGVyIENNQ1JYTVNHMyB7CiAJYWRkcmVzcwkJCTB4MDkzCkBAIC04MjYsNyArODI2LDcgQEAKIH0KIAogLyoKLSAqIE92ZXJsYXkgUmVjaWV2ZSBNZXNzYWdlIDMKKyAqIE92ZXJsYXkgUmVjZWl2ZSBNZXNzYWdlIDMKICAqLwogcmVnaXN0ZXIgT1ZMWVJYTVNHMyB7CiAJYWRkcmVzcwkJCTB4MDkzCkBAIC0xMjQ5LDcgKzEyNDksNyBAQAogCiAvKgogICogTFEgUGFja2V0IEluCi0gKiBUaGUgbGFzdCBMUSBQYWNrZXQgcmVjaWV2ZWQKKyAqIFRoZSBsYXN0IExRIFBhY2tldCByZWNlaXZlZAogICovCiByZWdpc3RlciBMUUlOIHsKIAlhZGRyZXNzCQkJMHgwMjAKQEAgLTI1NzMsNyArMjU3Myw3IEBACiB9CiAKIC8qCi0gKiBTaGFkZG93IEhvc3QgQWRkcmVzcy4KKyAqIFNoYWRvdyBIb3N0IEFkZHJlc3MuCiAgKi8KIHJlZ2lzdGVyIFNIQUREUiB7CiAJYWRkcmVzcwkJCTB4MDYwCkBAIC0zOTgzLDcgKzM5ODMsNyBAQAogCiAJLyoKIAkgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byB3YWl0LCB3aGVuIGludGVycnVwdCBjb2FsZXNjaW5nCi0JICogaXMgZW5hYmxlZCwgYmVmb3JlIGlzc3VlaW5nIGEgQ01EQ01QTFQgaW50ZXJydXB0IGZvciBhIGNvbXBsZXRlZAorCSAqIGlzIGVuYWJsZWQsIGJlZm9yZSBpc3N1aW5nIGEgQ01EQ01QTFQgaW50ZXJydXB0IGZvciBhIGNvbXBsZXRlZAogCSAqIGNvbW1hbmQuCiAJICovCiAJSU5UX0NPQUxFU0NJTkdfVElNRVIgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eC5zZXEgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnNlcQppbmRleCAyZmI3OGUzLi4zYTM2ZDkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnNlcQorKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4LnNlcQpAQCAtNTY3LDcgKzU2Nyw3IEBACiAJc2hyCVNFTE9JRCwgNCwgU0NCX1NDU0lJRDsKIAkvKgogCSAqIElmIHdlIHdhbnQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlIGRldmljZSwgZW5zdXJlCi0JICogd2UgYXJlIHNlbGVjdGluZyB3aXRoIGF0biBpcnJlZ2FyZGxlc3Mgb2Ygb3VyIHBhY2tldGl6ZWQKKwkgKiB3ZSBhcmUgc2VsZWN0aW5nIHdpdGggYXRuIHJlZ2FyZGxlc3Mgb2Ygb3VyIHBhY2tldGl6ZWQKIAkgKiBhZ3JlZW1lbnQuICBTaW5jZSBTUEk0IG9ubHkgYWxsb3dzIHRhcmdldCByZXNldCBvciBQUFIKIAkgKiBtZXNzYWdlcyBpZiB0aGlzIGlzIGEgcGFja2V0aXplZCBjb25uZWN0aW9uLCB0aGUgY2hhbmdlCiAJICogdG8gb3VyIG5lZ290aWF0aW9uIHRhYmxlIGVudHJ5IGZvciB0aGlzIHNlbGVjdGlvbiB3aWxsCkBAIC05NjAsNyArOTYwLDcgQEAKICAqIFRoaXMgaXMgZG9uZSB0byBhbGxvdyB0aGUgaG9zdCB0byBzZW5kIG1lc3NhZ2VzIG91dHNpZGUgb2YgYW4gaWRlbnRpZnkKICAqIHNlcXVlbmNlIHdoaWxlIHByb3RlY3RpbmcgdGhlIHNlcWVuY2VyIGZyb20gdGVzdGluZyB0aGUgTUtfTUVTU0FHRSBiaXQKICAqIG9uIGFuIFNDQiB0aGF0IG1pZ2h0IG5vdCBiZSBmb3IgdGhlIGN1cnJlbnQgbmV4dXMuIChGb3IgZXhhbXBsZSwgYQotICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uY2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bworICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bwogICogYW4gU0NCIHRoYXQgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0KS4KICAqCiAgKiBPdGhlcndpc2UsIHRyZWF0IE1TR19PVVQgYXMgYSAxIGJ5dGUgbWVzc2FnZSB0byBzZW5kIChhYm9ydCwgYWJvcnQgdGFnLApAQCAtMTUwNyw3ICsxNTA3LDcgQEAKIAkJICogSWYgdGhlIG90aGVyIEZJRk8gbmVlZHMgbG9hZGluZywgdGhlbiBpdAogCQkgKiBtdXN0IG5vdCBoYXZlIGNsYWltZWQgdGhlIFMvRyBjYWNoZSB5ZXQKIAkJICogKFNHX0NBQ0hFX0FWQUlMIHdvdWxkIGhhdmUgYmVlbiBjbGVhcmVkIGluCi0JCSAqIHRoZSBvcmdpbmFsIEZJRk8gbW9kZSBhbmQgd2UgdGVzdCB0aGlzIGFib3ZlKS4KKwkJICogdGhlIG9yaWdpbmFsIEZJRk8gbW9kZSBhbmQgd2UgdGVzdCB0aGlzIGFib3ZlKS4KIAkJICogUmV0dXJuIHRvIHRoZSBpZGxlIGxvb3Agc28gd2UgY2FuIHByb2Nlc3MgdGhlCiAJCSAqIEZJRk8gbm90IGN1cnJlbnRseSBvbiB0aGUgYnVzIGZpcnN0LgogCQkgKi8KQEAgLTE1MjEsNyArMTUyMSw3IEBACiBpZGxlX3NnZmV0Y2hfc3RhcnQ6CiAJLyoKIAkgKiBXZSBmZXRjaCBhICJjYWNoZWxpbmUgYWxpZ25lZCIgYW5kIHNpemVkIGFtb3VudCBvZiBkYXRhCi0JICogc28gd2UgZG9uJ3QgZW5kIHVwIHJlZmVyZW5jaW5nIGEgbm9uLWV4aXN0YW50IHBhZ2UuCisJICogc28gd2UgZG9uJ3QgZW5kIHVwIHJlZmVyZW5jaW5nIGEgbm9uLWV4aXN0ZW50IHBhZ2UuCiAJICogQ2FjaGVsaW5lIGFsaWduZWQgaXMgaW4gcXVvdGVzIGJlY2F1c2UgdGhlIGtlcm5lbCB3aWxsCiAJICogc2V0IHRoZSBwcmVmZXRjaCBhbW91bnQgdG8gYSByZWFzb25hYmxlIGxldmVsIGlmIHRoZQogCSAqIGNhY2hlbGluZSBzaXplIGlzIHVua25vd24uCkBAIC0xNTUxLDcgKzE1NTEsNyBAQAogCXRlc3QJREZTVEFUVVMsIFBSRUxPQURfQVZBSUwganogcmV0dXJuOwogCS8qCiAJICogT24gdGhlIEEsIHByZWxvYWRpbmcgYSBzZWdtZW50IGJlZm9yZSBIRE1BRU5BQ0sKLQkgKiBjb21lcyB0cnVlIGNhbiBjbG9iYmVyIHRoZSBzaGFkZG93IGFkZHJlc3Mgb2YgdGhlCisJICogY29tZXMgdHJ1ZSBjYW4gY2xvYmJlciB0aGUgc2hhZG93IGFkZHJlc3Mgb2YgdGhlCiAJICogZmlyc3Qgc2VnbWVudCBpbiB0aGUgUy9HIEZJRk8uICBXYWl0IHVudGlsIGl0IGlzCiAJICogc2FmZSB0byBwcm9jZWVkLgogCSAqLwpAQCAtMjAwNCwxMCArMjAwNCwxMCBAQAogCSAqIERlZmVyIGhhbmRsaW5nIG9mIHRoaXMgTk9OUEFDS1JFUSB1bnRpbCB3ZQogCSAqIGNhbiBiZSBzdXJlIGl0IHBlcnRhaW5zIHRvIHRoaXMgRklGTy4gIFNBVkVQVFJTCiAJICogd2lsbCBub3QgYmUgYXNzZXJ0ZWQgaWYgdGhlIE5PTlBBQ0tSRVEgaXMgZm9yIHVzLAotCSAqIHNvIHdlIG11c3Qgc2ltdWxhdGUgaXQgaWYgc2hhZGRvdyBpcyB2YWxpZC4gIElmCi0JICogc2hhZGRvdyBpcyBub3QgdmFsaWQsIGtlZXAgcnVubmluZyB0aGlzIEZJRk8gdW50aWwgd2UKKwkgKiBzbyB3ZSBtdXN0IHNpbXVsYXRlIGl0IGlmIHNoYWRvdyBpcyB2YWxpZC4gIElmCisJICogc2hhZG93IGlzIG5vdCB2YWxpZCwga2VlcCBydW5uaW5nIHRoaXMgRklGTyB1bnRpbCB3ZQogCSAqIGhhdmUgc2F0aXNmaWVkIHRoZSB0cmFuc2ZlciBieSBsb2FkaW5nIHNlZ21lbnRzIGFuZAotCSAqIHdhaXRpbmcgZm9yIGVpdGhlciBzaGFkZG93IHZhbGlkIG9yIGxhc3Rfc2VnX2RvbmUuCisJICogd2FpdGluZyBmb3IgZWl0aGVyIHNoYWRvdyB2YWxpZCBvciBsYXN0X3NlZ19kb25lLgogCSAqLwogCXRlc3QJTURGRlNUQVQsIFNIVkFMSUQgam56IHBrdF9zYXZlcHRyczsKIHBrdF9zZXJ2aWNlX2ZpZm86CkBAIC0yMTcxLDcgKzIxNzEsNyBAQAogCS8qCiAJICogVGhlIHVuZXhwZWN0ZWQgbm9ucGt0IHBoYXNlIGhhbmRsZXIgYXNzdW1lcyB0aGF0IGFueQogCSAqIGRhdGEgY2hhbm5lbCB1c2Ugd2lsbCBoYXZlIGEgRklGTyByZWZlcmVuY2UgY291bnQuICBJdAotCSAqIHR1cm5zIG91dCB0aGF0IHRoZSBzdGF0dXMgaGFuZGxlciBkb2Vzbid0IG5lZWQgYSByZWZlcm5jZQorCSAqIHR1cm5zIG91dCB0aGF0IHRoZSBzdGF0dXMgaGFuZGxlciBkb2Vzbid0IG5lZWQgYSByZWZlcmVuY2VzCiAJICogY291bnQgc2luY2UgdGhlIHN0YXR1cyByZWNlaXZlZCBmbGFnLCBhbmQgdGh1cyBjb21wbGV0aW9uCiAJICogcHJvY2Vzc2luZywgY2Fubm90IGJlIHNldCB1bnRpbCB0aGUgaGFuZGxlciBpcyBmaW5pc2hlZC4KIAkgKiBXZSBpbmNyZW1lbnQgdGhlIGNvdW50IGhlcmUgdG8gbWFrZSB0aGUgbm9ucGt0IGhhbmRsZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfY29yZS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKaW5kZXggMzIzM2JmNS4uNWY4NjE3ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9jb3JlLmMKQEAgLTU2Miw3ICs1NjIsNyBAQAogfQogI2VuZGlmCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiBNaXNjZWxhbmVvdXMgU3VwcG9ydCBGdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKiogTWlzY2VsbGFuZW91cyBTdXBwb3J0IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCiAgKiBSZXR1cm4gcG9pbnRlcnMgdG8gdGhlIHRyYW5zZmVyIG5lZ290aWF0aW9uIGluZm9ybWF0aW9uCiAgKiBmb3IgdGhlIHNwZWNpZmllZCBvdXJfaWQvcmVtb3RlX2lkIHBhaXIuCkBAIC01OTksNyArNTk5LDcgQEAKIGFoZF9vdXR3KHN0cnVjdCBhaGRfc29mdGMgKmFoZCwgdV9pbnQgcG9ydCwgdV9pbnQgdmFsdWUpCiB7CiAJLyoKLQkgKiBXcml0ZSBsb3cgYnl0ZSBmaXJzdCB0byBhY2NvbW9kYXRlIHJlZ2lzdGVycworCSAqIFdyaXRlIGxvdyBieXRlIGZpcnN0IHRvIGFjY29tbW9kYXRlIHJlZ2lzdGVycwogCSAqIHN1Y2ggYXMgUFJHTUNOVCB3aGVyZSB0aGUgb3JkZXIgbWF0ZXJzLgogCSAqLwogCWFoZF9vdXRiKGFoZCwgcG9ydCwgdmFsdWUgJiAweEZGKTsKQEAgLTIwNjcsNyArMjA2Nyw3IEBACiAJCSAqIHRoYXQgcmVxdWlyZXMgaG9zdCBhc3Npc3RhbmNlIGZvciBjb21wbGV0aW9uLgogCQkgKiBXaGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZSBwaGFzZShzKSwgd2Ugd2lsbCBiZQogCQkgKiBub3RpZmllZCBieSB0aGUgc2VxdWVuY2VyIGFmdGVyIGVhY2ggYnl0ZSBpcwotCQkgKiB0cmFuc2ZlcmVkIHNvIHdlIGNhbiB0cmFjayBidXMgcGhhc2UgY2hhbmdlcy4KKwkJICogdHJhbnNmZXJyZWQgc28gd2UgY2FuIHRyYWNrIGJ1cyBwaGFzZSBjaGFuZ2VzLgogCQkgKgogCQkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gYSBIT1NUX01TR19MT09QCiAJCSAqIGludGVycnVwdCwgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIGhvc3QgbWVzc2FnZQpAQCAtMjQ4Nyw3ICsyNDg3LDcgQEAKIAkJLyoKIAkJICogQWx0aG91Z2ggdGhlIGRyaXZlciBkb2VzIG5vdCBjYXJlIGFib3V0IHRoZQogCQkgKiAnU2VsZWN0aW9uIGluIFByb2dyZXNzJyBzdGF0dXMgYml0LCB0aGUgYnVzeQotCQkgKiBMRUQgZG9lcy4gIFNFTElOR08gaXMgb25seSBjbGVhcmVkIGJ5IGEgc3VjY2Vzc2Z1bGwKKwkJICogTEVEIGRvZXMuICBTRUxJTkdPIGlzIG9ubHkgY2xlYXJlZCBieSBhIHN1Y2Nlc3NmdWwKIAkJICogc2VsZWN0aW9uLCBzbyB3ZSBtdXN0IG1hbnVhbGx5IGNsZWFyIGl0IHRvIGluc3VyZQogCQkgKiB0aGUgTEVEIHR1cm5zIG9mZiBqdXN0IGluY2FzZSBubyBmdXR1cmUgc3VjY2Vzc2Z1bAogCQkgKiBzZWxlY3Rpb25zIG9jY3VyIChlLmcuIG5vIGRldmljZXMgb24gdGhlIGJ1cykuCkBAIC0zNTQ4LDcgKzM1NDgsNyBAQAogCQlhaGRfb3V0YihhaGQsIFNFUUNUTDAsIGFoZF9pbmIoYWhkLCBTRVFDVEwwKSAmIH5TVEVQKTsKICAgCQlhaGRfb3V0YihhaGQsIFNJTU9ERTEsIHNpbW9kZTEpOwogCQkvKgotCQkgKiBTQ1NJSU5UIHNlZW1zIHRvIGdsaXRjaCBvY2Nhc3Npb25hbGx5IHdoZW4KKwkJICogU0NTSUlOVCBzZWVtcyB0byBnbGl0Y2ggb2NjYXNpb25hbGx5IHdoZW4KIAkJICogdGhlIGludGVycnVwdCBtYXNrcyBhcmUgcmVzdG9yZWQuICBDbGVhciBTQ1NJSU5UCiAJCSAqIG9uZSBtb3JlIHRpbWUgc28gdGhhdCBvbmx5IHBlcnNpc3RlbnQgZXJyb3JzCiAJCSAqIGFyZSBzZWVuIGFzIGEgcmVhbCBpbnRlcnJ1cHQuCkBAIC0zODM4LDcgKzM4MzgsNyBAQAogCiAvKgogICogVXBkYXRlIHRoZSBiaXRtYXNrIG9mIHRhcmdldHMgZm9yIHdoaWNoIHRoZSBjb250cm9sbGVyIHNob3VsZAotICogbmVnb3RpYXRlIHdpdGggYXQgdGhlIG5leHQgY29udmVuaWVudCBvcG9ydHVuaXR5LiAgVGhpcyBjdXJyZW50bHkKKyAqIG5lZ290aWF0ZSB3aXRoIGF0IHRoZSBuZXh0IGNvbnZlbmllbnQgb3Bwb3J0dW5pdHkuICBUaGlzIGN1cnJlbnRseQogICogbWVhbnMgdGhlIG5leHQgdGltZSB3ZSBzZW5kIHRoZSBpbml0aWFsIGlkZW50aWZ5IG1lc3NhZ2VzIGZvcgogICogYSBuZXcgdHJhbnNhY3Rpb24uCiAgKi8KQEAgLTQyMDAsNyArNDIwMCw3IEBACiAKIAkvKgogCSAqIER1cmluZyBwYWNrZXRpemVkIHRyYW5zZmVycywgdGhlIHRhcmdldCB3aWxsCi0JICogZ2l2ZSB1cyB0aGUgb3BvcnR1bml0eSB0byBzZW5kIGNvbW1hbmQgcGFja2V0cworCSAqIGdpdmUgdXMgdGhlIG9wcG9ydHVuaXR5IHRvIHNlbmQgY29tbWFuZCBwYWNrZXRzCiAJICogd2l0aG91dCB1cyBhc3NlcnRpbmcgYXR0ZW50aW9uLgogCSAqLwogCWlmICgodGluZm8tPnBwcl9vcHRpb25zICYgTVNHX0VYVF9QUFJfSVVfUkVRKSA9PSAwKQpAQCAtNTY1MSw3ICs1NjUxLDcgQEAKIAogCQkvKgogCQkgKiBSZXF1ZXVlIGFsbCB0YWdnZWQgY29tbWFuZHMgZm9yIHRoaXMgdGFyZ2V0Ci0JCSAqIGN1cnJlbnRseSBpbiBvdXIgcG9zZXNzaW9uIHNvIHRoZXkgY2FuIGJlCisJCSAqIGN1cnJlbnRseSBpbiBvdXIgcG9zc2Vzc2lvbiBzbyB0aGV5IGNhbiBiZQogCQkgKiBjb252ZXJ0ZWQgdG8gdW50YWdnZWQgY29tbWFuZHMuCiAJCSAqLwogCQlhaGRfc2VhcmNoX3FpbmZpZm8oYWhkLCBTQ0JfR0VUX1RBUkdFVChhaGQsIHNjYiksCkBAIC02MjQ1LDcgKzYyNDUsNyBAQAogLyoKICAqIFJlc2V0IHRoZSBjb250cm9sbGVyIGFuZCByZWNvcmQgc29tZSBpbmZvcm1hdGlvbiBhYm91dCBpdAogICogdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSBqdXN0IGFmdGVyIGEgcmVzZXQuICBJZiAicmVpbml0IiBpcwotICogbm9uLXplcm8sIHRoaXMgcmVzZXQgb2NjdXJlZCBhZnRlciBpbml0aWFsIGNvbmZpZ3VyYXRpb24KKyAqIG5vbi16ZXJvLCB0aGlzIHJlc2V0IG9jY3VycmVkIGFmdGVyIGluaXRpYWwgY29uZmlndXJhdGlvbgogICogYW5kIHRoZSBjYWxsZXIgcmVxdWVzdHMgdGhhdCB0aGUgY2hpcCBiZSBmdWxseSByZWluaXRpYWxpemVkCiAgKiB0byBhIHJ1bmFibGUgc3RhdGUuICBDaGlwIGludGVycnVwdHMgYXJlICpub3QqIGVuYWJsZWQgYWZ0ZXIKICAqIGEgcmVpbml0aWFsaXphdGlvbi4gIFRoZSBjYWxsZXIgbXVzdCBlbmFibGUgaW50ZXJydXB0cyB2aWEKQEAgLTY0OTUsNyArNjQ5NSw3IEBACiAJfQogCiAJLyoKLQkgKiBOb3RlIHRoYXQgd2Ugd2VyZSBzdWNjZXNzZnVsbAorCSAqIE5vdGUgdGhhdCB3ZSB3ZXJlIHN1Y2Nlc3NmdWwKIAkgKi8KIAlyZXR1cm4gKDApOyAKIApAQCAtNzA3OSw3ICs3MDc5LDcgQEAKIAkJcmV0dXJuIChFTk9NRU0pOwogCiAJLyoKLQkgKiBWZXJpZnkgdGhhdCB0aGUgY29tcGlsZXIgaGFzbid0IG92ZXItYWdyZXNzaXZlbHkKKwkgKiBWZXJpZnkgdGhhdCB0aGUgY29tcGlsZXIgaGFzbid0IG92ZXItYWdncmVzc2l2ZWx5CiAJICogcGFkZGVkIGltcG9ydGFudCBzdHJ1Y3R1cmVzLgogCSAqLwogCWlmIChzaXplb2Yoc3RydWN0IGhhcmR3YXJlX3NjYikgIT0gNjQpCkBAIC0xMDA4Nyw3ICsxMDA4Nyw3IEBACiAJCXJldHVybiAoZXJyb3IpOwogCiAJLyoKLQkgKiBXcml0ZSB0aGUgZGF0YS4gIElmIHdlIGRvbid0IGdldCB0aHJvdWdodCB0aGUgbG9vcCBhdAorCSAqIFdyaXRlIHRoZSBkYXRhLiAgSWYgd2UgZG9uJ3QgZ2V0IHRocm91Z2ggdGhlIGxvb3AgYXQKIAkgKiBsZWFzdCBvbmNlLCB0aGUgYXJndW1lbnRzIHdlcmUgaW52YWxpZC4KIAkgKi8KIAlyZXR2YWwgPSBFSU5WQUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljNzl4eF9vc20uYwppbmRleCAyNWQwNjY2Li43ZDQ4NzAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3OXh4X29zbS5jCisrKyBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzc5eHhfb3NtLmMKQEAgLTE0NDEsNyArMTQ0MSw3IEBACiAJCXVzZXJ0YWdzID0gYWhkX2xpbnV4X3VzZXJfdGFnZGVwdGgoYWhkLCBkZXZpbmZvKTsKIAkJaWYgKCF3YXNfcXVldWluZykgewogCQkJLyoKLQkJCSAqIFN0YXJ0IG91dCBhZ3Jlc3NpdmVseSBhbmQgYWxsb3cgb3VyCisJCQkgKiBTdGFydCBvdXQgYWdncmVzc2l2ZWx5IGFuZCBhbGxvdyBvdXIKIAkJCSAqIGR5bmFtaWMgcXVldWUgZGVwdGggYWxnb3JpdGhtIHRvIHRha2UKIAkJCSAqIGNhcmUgb2YgdGhlIHJlc3QuCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaCBiL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHguaAppbmRleCAxNzQ0NGJjLi5mNjk1Nzc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LmgKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5oCkBAIC00NDAsNyArNDQwLDcgQEAKICAqCW8gQSByZXNpZHVhbCBoYXMgb2NjdXJyZWQgaWYgU0dfRlVMTF9SRVNJRCBpcyBzZXQgaW4gc2dwdHIsCiAgKgkgIG9yIHJlc2lkdWFsX3NncHRyIGRvZXMgbm90IGhhdmUgU0dfTElTVF9OVUxMIHNldC4KICAqCi0gKglvIFdlIGFyZSB0cmFuc2ZlcmluZyB0aGUgbGFzdCBzZWdtZW50IGlmIHJlc2lkdWFsX2RhdGFjbnQgaGFzCisgKglvIFdlIGFyZSB0cmFuc2ZlcnJpbmcgdGhlIGxhc3Qgc2VnbWVudCBpZiByZXNpZHVhbF9kYXRhY250IGhhcwogICoJICB0aGUgU0dfTEFTVF9TRUcgZmxhZyBzZXQuCiAgKgogICogSG9zdDoKQEAgLTQ5NCw3ICs0OTQsNyBAQAogICovCiAKIC8qCi0gKiBEZWZpbml0aW9uIG9mIGEgc2NhdHRlci9nYXRoZXIgZWxlbWVudCBhcyB0cmFuc2ZlcmVkIHRvIHRoZSBjb250cm9sbGVyLgorICogRGVmaW5pdGlvbiBvZiBhIHNjYXR0ZXIvZ2F0aGVyIGVsZW1lbnQgYXMgdHJhbnNmZXJyZWQgdG8gdGhlIGNvbnRyb2xsZXIuCiAgKiBUaGUgYWljN3h4eCBjaGlwcyBvbmx5IHN1cHBvcnQgYSAyNGJpdCBsZW5ndGguICBXZSB1c2UgdGhlIHRvcCBieXRlIG9mCiAgKiB0aGUgbGVuZ3RoIHRvIHN0b3JlIGFkZGl0aW9uYWwgYWRkcmVzcyBiaXRzIGFuZCBhIGZsYWcgdG8gaW5kaWNhdGUKICAqIHRoYXQgYSBnaXZlbiBzZWdtZW50IHRlcm1pbmF0ZXMgdGhlIHRyYW5zZmVyLiAgVGhpcyBnaXZlcyB1cyBhbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5yZWcgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZwppbmRleCA5YTk2ZTU1Li5iYTBiNDExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZworKysgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnJlZwpAQCAtMzUxLDcgKzM1MSw3IEBACiAJYWRkcmVzcwkJCTB4MDBkCiAJYWNjZXNzX21vZGUgUk8KIAlmaWVsZAlPVkVSUlVOCQkweDgwCi0JZmllbGQJU0hWQUxJRAkJMHg0MAkvKiBTaGFkZG93IExheWVyIG5vbi16ZXJvICovCisJZmllbGQJU0hWQUxJRAkJMHg0MAkvKiBTaGFkb3cgTGF5ZXIgbm9uLXplcm8gKi8KIAlmaWVsZAlFWFBfQUNUSVZFCTB4MTAJLyogU0NTSSBFeHBhbmRlciBBY3RpdmUgKi8KIAlmaWVsZAlDUkNWQUxFUlIJMHgwOAkvKiBDUkMgZG9lc24ndCBtYXRjaCAoVTMgb25seSkgKi8KIAlmaWVsZAlDUkNFTkRFUlIJMHgwNAkvKiBObyB0ZXJtaW5hbCBDUkMgcGFja2V0IChVMyBvbmx5KSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEgYi9kcml2ZXJzL3Njc2kvYWljN3h4eC9haWM3eHh4LnNlcQppbmRleCA1YTRjZmM5NS4uZTYwMDQxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eC5zZXEKQEAgLTU3LDEwICs1NywxMCBAQAogICogYSBsYXRlciB0aW1lLiAgVGhpcyBwcm9ibGVtIGNhbm5vdCBiZSByZXNvbHZlZCBieSBob2xkaW5nIGEgc2luZ2xlIGVudHJ5CiAgKiBpbiBzY3JhdGNoIHJhbSBzaW5jZSBhIHJlY29ubmVjdGluZyB0YXJnZXQgY2FuIHJlcXVlc3Qgc2Vuc2UgYW5kIHRoaXMgd2lsbAogICogY3JlYXRlIHlldCBhbm90aGVyIFNDQiB3YWl0aW5nIGZvciBzZWxlY3Rpb24uICBUaGUgc29sdXRpb24gdXNlZCBoZXJlIGlzIHRvIAotICogdXNlIGJ5dGUgMjcgb2YgdGhlIFNDQiBhcyBhIHBzdWVkby1uZXh0IHBvaW50ZXIgYW5kIHRvIHRocmVhZCBhIGxpc3QKKyAqIHVzZSBieXRlIDI3IG9mIHRoZSBTQ0IgYXMgYSBwc2V1ZG8tbmV4dCBwb2ludGVyIGFuZCB0byB0aHJlYWQgYSBsaXN0CiAgKiBvZiBTQ0JzIHRoYXQgYXJlIGF3YWl0aW5nIHNlbGVjdGlvbi4gIFNpbmNlIDAtMHhmZSBhcmUgdmFsaWQgU0NCIGluZGV4ZXMsIAogICogU0NCX0xJU1RfTlVMTCBpcyAweGZmIHdoaWNoIGlzIG91dCBvZiByYW5nZS4gIEFuIGVudHJ5IGlzIGFsc28gYWRkZWQgdG8KLSAqIHRoaXMgbGlzdCBldmVyeXRpbWUgYSByZXF1ZXN0IHNlbnNlIG9jY3VycyBvciBhZnRlciBjb21wbGV0aW5nIGEgbm9uLXRhZ2dlZAorICogdGhpcyBsaXN0IGV2ZXJ5IHRpbWUgYSByZXF1ZXN0IHNlbnNlIG9jY3VycyBvciBhZnRlciBjb21wbGV0aW5nIGEgbm9uLXRhZ2dlZAogICogY29tbWFuZCBmb3Igd2hpY2ggYSBzZWNvbmQgU0NCIGhhcyBiZWVuIHF1ZXVlZC4gIFRoZSBzZXF1ZW5jZXIgd2lsbAogICogYXV0b21hdGljYWxseSBjb25zdW1lIHRoZSBlbnRyaWVzLgogICovCkBAIC03NTIsNyArNzUyLDcgQEAKIAogCS8qCiAJICogV2UgZmV0Y2ggYSAiY2FjaGVsaW5lIGFsaWduZWQiIGFuZCBzaXplZCBhbW91bnQgb2YgZGF0YQotCSAqIHNvIHdlIGRvbid0IGVuZCB1cCByZWZlcmVuY2luZyBhIG5vbi1leGlzdGFudCBwYWdlLgorCSAqIHNvIHdlIGRvbid0IGVuZCB1cCByZWZlcmVuY2luZyBhIG5vbi1leGlzdGVudCBwYWdlLgogCSAqIENhY2hlbGluZSBhbGlnbmVkIGlzIGluIHF1b3RlcyBiZWNhdXNlIHRoZSBrZXJuZWwgd2lsbAogCSAqIHNldCB0aGUgcHJlZmV0Y2ggYW1vdW50IHRvIGEgcmVhc29uYWJsZSBsZXZlbCBpZiB0aGUKIAkgKiBjYWNoZWxpbmUgc2l6ZSBpcyB1bmtub3duLgpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKICAqIFRoaXMgaXMgZG9uZSB0byBhbGxvdyB0aGUgaG9zdCB0byBzZW5kIG1lc3NhZ2VzIG91dHNpZGUgb2YgYW4gaWRlbnRpZnkKICAqIHNlcXVlbmNlIHdoaWxlIHByb3RlY3RpbmcgdGhlIHNlcWVuY2VyIGZyb20gdGVzdGluZyB0aGUgTUtfTUVTU0FHRSBiaXQKICAqIG9uIGFuIFNDQiB0aGF0IG1pZ2h0IG5vdCBiZSBmb3IgdGhlIGN1cnJlbnQgbmV4dXMuIChGb3IgZXhhbXBsZSwgYQotICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uY2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bworICogQkRSIG1lc3NhZ2UgaW4gcmVzcG9uc2UgdG8gYSBiYWQgcmVzZWxlY3Rpb24gd291bGQgbGVhdmUgdXMgcG9pbnRlZCB0bwogICogYW4gU0NCIHRoYXQgZG9lc24ndCBoYXZlIGFueXRoaW5nIHRvIGRvIHdpdGggdGhlIGN1cnJlbnQgdGFyZ2V0KS4KICAqCiAgKiBPdGhlcndpc2UsIHRyZWF0IE1TR19PVVQgYXMgYSAxIGJ5dGUgbWVzc2FnZSB0byBzZW5kIChhYm9ydCwgYWJvcnQgdGFnLApAQCAtMTk5OSw3ICsxOTk5LDcgQEAKICAqIGZyb20gb3V0IHRvIGluLCB3YWl0IGFuIGFkZGl0aW9uYWwgZGF0YSByZWxlYXNlIGRlbGF5IGJlZm9yZSBjb250aW51aW5nLgogICovCiBjaGFuZ2VfcGhhc2U6Ci0JLyogV2FpdCBmb3IgcHJlY2VlZGluZyBJL08gc2Vzc2lvbiB0byBjb21wbGV0ZS4gKi8KKwkvKiBXYWl0IGZvciBwcmVjZWRpbmcgSS9PIHNlc3Npb24gdG8gY29tcGxldGUuICovCiAJdGVzdAlTQ1NJU0lHSSwgQUNLSSBqbnogLjsKIAogCS8qIENoYW5nZSB0aGUgcGhhc2UgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9haWM3eHh4L2FpYzd4eHhfY29yZS5jIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9jb3JlLmMKaW5kZXggZTAyMWI0OC4uZGMyOGIwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9jb3JlLmMKKysrIGIvZHJpdmVycy9zY3NpL2FpYzd4eHgvYWljN3h4eF9jb3JlLmMKQEAgLTQyNyw3ICs0MjcsNyBAQAogfQogI2VuZGlmCiAKLS8qKioqKioqKioqKioqKioqKioqKioqKiBNaXNjZWxhbmVvdXMgU3VwcG9ydCBGdW5jdGlvbnMgKioqKioqKioqKioqKioqKioqKioqKiovCisvKioqKioqKioqKioqKioqKioqKioqKiogTWlzY2VsbGFuZW91cyBTdXBwb3J0IEZ1bmN0aW9ucyAqKioqKioqKioqKioqKioqKioqKioqKi8KIC8qCiAgKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgc2VxdWVuY2VyIHJlcG9ydGVkIGEgcmVzaWR1YWwKICAqIGZvciB0aGlzIFNDQi90cmFuc2FjdGlvbi4KQEAgLTEyNDMsNyArMTI0Myw3IEBACiAJCSAqIHRoYXQgcmVxdWlyZXMgaG9zdCBhc3Npc3RhbmNlIGZvciBjb21wbGV0aW9uLgogCQkgKiBXaGlsZSBoYW5kbGluZyB0aGUgbWVzc2FnZSBwaGFzZShzKSwgd2Ugd2lsbCBiZQogCQkgKiBub3RpZmllZCBieSB0aGUgc2VxdWVuY2VyIGFmdGVyIGVhY2ggYnl0ZSBpcwotCQkgKiB0cmFuc2ZlcmVkIHNvIHdlIGNhbiB0cmFjayBidXMgcGhhc2UgY2hhbmdlcy4KKwkJICogdHJhbnNmZXJyZWQgc28gd2UgY2FuIHRyYWNrIGJ1cyBwaGFzZSBjaGFuZ2VzLgogCQkgKgogCQkgKiBJZiB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlIHNlZW4gYSBIT1NUX01TR19MT09QCiAJCSAqIGludGVycnVwdCwgaW5pdGlhbGl6ZSB0aGUgc3RhdGUgb2YgdGhlIGhvc3QgbWVzc2FnZQpAQCAtMTQ4Nyw3ICsxNDg3LDcgQEAKIAkJICAgICAgIHNjYnB0ciwgYWhjX2luYihhaGMsIEFSR18xKSwKIAkJICAgICAgIGFoYy0+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+bmxwX2ZsYWcgJiBOTFBfUkNWX1BMT0dJKQpAQCAtNDQ5Myw3ICs0NDkzLDcgQEAKIAkJfSBlbHNlCiAJCQluZGxwID0gTlVMTDsKIAl9IGVsc2UgewotCQkvKiBJZiB3ZSd2ZSBhbHJlYWR5IHJlY2lldmVkIGEgUExPR0kgZnJvbSB0aGlzIE5Qb3J0LAorCQkvKiBJZiB3ZSd2ZSBhbHJlYWR5IHJlY2VpdmVkIGEgUExPR0kgZnJvbSB0aGlzIE5Qb3J0LAogCQkgKiBvciB3ZSBhcmUgYWxyZWFkeSBpbiB0aGUgcHJvY2VzcyBvZiBkaXNjb3Zlcnkgb24gaXQsCiAJCSAqIHdlIGRvbid0IG5lZWQgdG8gdHJ5IHRvIGRpc2NvdmVyIGl0IGFnYWluLgogCQkgKi8KQEAgLTU3NTYsNyArNTc1Niw3IEBACiAgKiBAc2l6ZTogU2l6ZSBvZiB0aGUgZGF0YSBidWZmZXIuCiAgKiBAcmVjX3R5cGU6IFJlY29yZCB0eXBlIHRvIGJlIHNlYXJjaGVkLgogICoKLSAqIFRoaXMgZnVuY3Rpb24gc2VhcmNoZXMgY29uZmlnIHJlZ2lvbiBkYXRhIHRvIGZpbmQgdGhlIGJlZ2luaW5nCisgKiBUaGlzIGZ1bmN0aW9uIHNlYXJjaGVzIGNvbmZpZyByZWdpb24gZGF0YSB0byBmaW5kIHRoZSBiZWdpbm5pbmcKICAqIG9mIHRoZSByZWNvcmQgc3BlY2lmaWVkIGJ5IHJlY29yZF90eXBlLiBJZiByZWNvcmQgZm91bmQsIHRoaXMKICAqIGZ1bmN0aW9uIHJldHVybiBwb2ludGVyIHRvIHRoZSByZWNvcmQgZWxzZSByZXR1cm4gTlVMTC4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19pbml0LmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYwppbmRleCBlNmViZTUxLi41MDVmODg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX2luaXQuYwpAQCAtNDQ2Niw3ICs0NDY2LDcgQEAKIH0KIAogLyoqCi0gKiBscGZjX2luaXRfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIGluaXQgYXBpIGZ1Y250aW9uIGp1bXAgdGFibGUKKyAqIGxwZmNfaW5pdF9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgaW5pdCBhcGkgZnVuY3Rpb24ganVtcCB0YWJsZQogICogQHBoYmE6IFRoZSBoYmEgc3RydWN0IGZvciB3aGljaCB0aGlzIGNhbGwgaXMgYmVpbmcgZXhlY3V0ZWQuCiAgKiBAZGV2X2dycDogVGhlIEhCQSBQQ0ktRGV2aWNlIGdyb3VwIG51bWJlci4KICAqCkBAIC00ODUwLDcgKzQ4NTAsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogCTAgLSBzdWNjZXNzZnVsCi0gKiAJLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogCS1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogaW50CkBAIC01NzMwLDcgKzU3MzAsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogCTAgLSBzdWNjZXNzZnVsCi0gKiAJLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogCS1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogc3RhdGljIGludApAQCAtNTgzNSw3ICs1ODM1LDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqIAkwIC0gc3VjY2Vzc2Z1bAotICogCS1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqIAktRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIHN0YXRpYyBpbnQKQEAgLTU4OTQsNyArNTg5NCw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiBzdGF0aWMgaW50CkBAIC02MTg5LDcgKzYxODksNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiAgICAgIC1FSU8gLSBUaGUgbWFpbGJveCBmYWlsZWQgdG8gY29tcGxldGUgc3VjY2Vzc2Z1bGx5LgogICoqLwogc3RhdGljIHZvaWQKQEAgLTYyNTMsNyArNjI1Myw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiBpbnQKQEAgLTY0OTgsNyArNjQ5OCw3IEBACiAgKgogICogUmV0dXJuIGNvZGVzCiAgKiAgICAgIDAgLSBzdWNjZXNzZnVsCi0gKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGJsZSBtZW1vcnkKKyAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYWJsZSBtZW1vcnkKICAqICAgICAgLUVJTyAtIFRoZSBtYWlsYm94IGZhaWxlZCB0byBjb21wbGV0ZSBzdWNjZXNzZnVsbHkuCiAgKiovCiB2b2lkCkBAIC02NTQzLDcgKzY1NDMsNyBAQAogICoKICAqIFJldHVybiBjb2RlcwogICogICAgICAwIC0gc3VjY2Vzc2Z1bAotICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxibGUgbWVtb3J5CisgKiAgICAgIC1FTk9NRU0gLSBObyBhdmFpbGFibGUgbWVtb3J5CiAgKiovCiBzdGF0aWMgaW50CiBscGZjX3NsaTRfY3FfZXZlbnRfcG9vbF9jcmVhdGUoc3RydWN0IGxwZmNfaGJhICpwaGJhKQpAQCAtNjcwNCw3ICs2NzA0LDcgQEAKICAqCiAgKiBSZXR1cm4gY29kZXMKICAqICAgICAgMCAtIHN1Y2Nlc3NmdWwKLSAqICAgICAgLUVOT01FTSAtIE5vIGF2YWlsYmxlIG1lbW9yeQorICogICAgICAtRU5PTUVNIC0gTm8gYXZhaWxhYmxlIG1lbW9yeQogICogICAgICAtRUlPIC0gVGhlIG1haWxib3ggZmFpbGVkIHRvIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseS4KICAqKi8KIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19tYm94LmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYwppbmRleCBkYmEzMmRmLi5mYmFiOTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX21ib3guYwpAQCAtMTgzNCw3ICsxODM0LDcgQEAKICAqIEBmY2ZfaW5kZXg6IGluZGV4IHRvIGZjZiB0YWJsZS4KICAqCiAgKiBUaGlzIHJvdXRpbmUgcm91dGluZSBhbGxvY2F0ZXMgYW5kIGNvbnN0cnVjdHMgbm9uLWVtYmVkZGVkIG1haWxib3ggY29tbWFuZAotICogZm9yIHJlYWRpbmcgYSBGQ0YgdGFibGUgZW50cnkgcmVmZXJlZCBieSBAZmNmX2luZGV4LgorICogZm9yIHJlYWRpbmcgYSBGQ0YgdGFibGUgZW50cnkgcmVmZXJyZWQgYnkgQGZjZl9pbmRleC4KICAqCiAgKiBSZXR1cm46IHBvaW50ZXIgdG8gdGhlIG1haWxib3ggY29tbWFuZCBjb25zdHJ1Y3RlZCBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UKICAqIE5VTEwuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25sLmggYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25sLmgKaW5kZXggZjNjZmJlMi4uZjJiMWJiYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ubC5oCisrKyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbmwuaApAQCAtNTAsNyArNTAsNyBAQAogICogYW5kIHN1YmNhdGVnb3J5LiBUaGUgZXZlbnQgdHlwZSBtdXN0IGNvbWUgZmlyc3QuCiAgKiBUaGUgc3ViY2F0ZWdvcnkgZnVydGhlciBkZWZpbmVzIHRoZSBkYXRhIHRoYXQgZm9sbG93cyBpbiB0aGUgcmVzdAogICogb2YgdGhlIHBheWxvYWQuIEVhY2ggY2F0ZWdvcnkgd2lsbCBoYXZlIGl0cyBvd24gdW5pcXVlIGhlYWRlciBwbHVzCi0gKiBhbnkgYWRkdGlvbmFsIGRhdGEgdW5pcXVlIHRvIHRoZSBzdWJjYXRlZ29yeS4KKyAqIGFueSBhZGRpdGlvbmFsIGRhdGEgdW5pcXVlIHRvIHRoZSBzdWJjYXRlZ29yeS4KICAqIFRoZSBwYXlsb2FkIHNlbnQgdmlhIHRoZSBmYyB0cmFuc3BvcnQgaXMgb25lLXdheSBkcml2ZXItPmFwcGxpY2F0aW9uLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbnBvcnRkaXNjLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX25wb3J0ZGlzYy5jCmluZGV4IDUyYjM1MTUuLjBkOTJkNDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfbnBvcnRkaXNjLmMKKysrIGIvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19ucG9ydGRpc2MuYwpAQCAtNjU4LDcgKzY1OCw3IEBACiAJcmV0dXJuIDA7CiB9CiAvKioKLSAqIGxwZmNfcmVsZWFzZV9ycGkgLSBSZWxlYXNlIGEgUlBJIGJ5IGlzc3VlaW5nIHVucmVnX2xvZ2luIG1haWxib3ggY21kLgorICogbHBmY19yZWxlYXNlX3JwaSAtIFJlbGVhc2UgYSBSUEkgYnkgaXNzdWluZyB1bnJlZ19sb2dpbiBtYWlsYm94IGNtZC4KICAqIEBwaGJhIDogUG9pbnRlciB0byBscGZjX2hiYSBzdHJ1Y3R1cmUuCiAgKiBAdnBvcnQ6IFBvaW50ZXIgdG8gbHBmY192cG9ydCBzdHJ1Y3R1cmUuCiAgKiBAcnBpICA6IHJwaSB0byBiZSByZWxlYXNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmMgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuYwppbmRleCAyYjk2MmIwLi5mZTdjYzg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuYwpAQCAtNTc3LDcgKzU3Nyw3IEBACiAJCQlpb2NiLT51bi5mY3BpNjQuYmRsLmFkZHJIaWdoID0gMDsKIAkJCWlvY2ItPnVscEJkZUNvdW50ID0gMDsKIAkJCWlvY2ItPnVscExlID0gMDsKLQkJCS8qIGZpbGwgaW4gcmVzcG9uY2UgQkRFICovCisJCQkvKiBmaWxsIGluIHJlc3BvbnNlIEJERSAqLwogCQkJaW9jYi0+dW5zbGkzLmZjcF9leHQucmJkZS50dXMuZi5iZGVGbGFncyA9CiAJCQkJCQkJQlVGRl9UWVBFX0JERV82NDsKIAkJCWlvY2ItPnVuc2xpMy5mY3BfZXh0LnJiZGUudHVzLmYuYmRlU2l6ZSA9CkBAIC0xMjE3LDEwICsxMjE3LDEwIEBACiAJCQkJICAgICAoMiAqIHNpemVvZihzdHJ1Y3QgdWxwX2JkZTY0KSkpOwogCQkJZGF0YV9iZGUtPmFkZHJIaWdoID0gcHV0UGFkZHJIaWdoKHBoeXNhZGRyKTsKIAkJCWRhdGFfYmRlLT5hZGRyTG93ID0gcHV0UGFkZHJMb3cocGh5c2FkZHIpOwotCQkJLyogZWJkZSBjb3VudCBpbmNsdWRlcyB0aGUgcmVzcG9uY2UgYmRlIGFuZCBkYXRhIGJwbCAqLworCQkJLyogZWJkZSBjb3VudCBpbmNsdWRlcyB0aGUgcmVzcG9uc2UgYmRlIGFuZCBkYXRhIGJwbCAqLwogCQkJaW9jYl9jbWQtPnVuc2xpMy5mY3BfZXh0LmViZGVfY291bnQgPSAyOwogCQl9IGVsc2UgewotCQkJLyogZWJkZSBjb3VudCBpbmNsdWRlcyB0aGUgcmVzcG9uY2UgYmRlIGFuZCBkYXRhIGJkZXMgKi8KKwkJCS8qIGViZGUgY291bnQgaW5jbHVkZXMgdGhlIHJlc3BvbnNlIGJkZSBhbmQgZGF0YSBiZGVzICovCiAJCQlpb2NiX2NtZC0+dW5zbGkzLmZjcF9leHQuZWJkZV9jb3VudCA9IChudW1fYmRlICsgMSk7CiAJCX0KIAl9IGVsc2UgewpAQCAtMjM4MCw3ICsyMzgwLDcgQEAKIAkJfQogCQkvKgogCQkgKiBUaGUgY21uZC0+dW5kZXJmbG93IGlzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBieXRlcyB0aGF0IG11c3QKLQkJICogYmUgdHJhbnNmZXJlZCBmb3IgdGhpcyBjb21tYW5kLiAgUHJvdmlkZWQgYSBzZW5zZSBjb25kaXRpb24KKwkJICogYmUgdHJhbnNmZXJyZWQgZm9yIHRoaXMgY29tbWFuZC4gIFByb3ZpZGVkIGEgc2Vuc2UgY29uZGl0aW9uCiAJCSAqIGlzIG5vdCBwcmVzZW50LCBtYWtlIHN1cmUgdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQgaXMgYXQKIAkJICogbGVhc3QgdGhlIHVuZGVyZmxvdyB2YWx1ZSBvciBmYWlsLgogCQkgKi8KQEAgLTI4NzMsNyArMjg3Myw3IEBACiB9CiAKIC8qKgotICogbHBmY19zY3NpX2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBzY3NpIGFwaSBmdWNudGlvbiBqdW1wIHRhYmxlCisgKiBscGZjX3Njc2lfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIHNjc2kgYXBpIGZ1bmN0aW9uIGp1bXAgdGFibGUKICAqIEBwaGJhOiBUaGUgaGJhIHN0cnVjdCBmb3Igd2hpY2ggdGhpcyBjYWxsIGlzIGJlaW5nIGV4ZWN1dGVkLgogICogQGRldl9ncnA6IFRoZSBIQkEgUENJLURldmljZSBncm91cCBudW1iZXIuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zY3NpLmggYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaAppbmRleCA1OTMyMjczLi5jZTY0NWIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaAorKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3Njc2kuaApAQCAtMTMwLDcgKzEzMCw3IEBACiAJZG1hX2FkZHJfdCBub25zZ19waHlzOwkvKiBOb24gc2NhdHRlci1nYXRoZXIgcGh5c2ljYWwgYWRkcmVzcy4gKi8KIAogCS8qCi0JICogZGF0YSBhbmQgZG1hX2hhbmRsZSBhcmUgdGhlIGtlcm5lbCB2aXJ1dGFsIGFuZCBidXMgYWRkcmVzcyBvZiB0aGUKKwkgKiBkYXRhIGFuZCBkbWFfaGFuZGxlIGFyZSB0aGUga2VybmVsIHZpcnR1YWwgYW5kIGJ1cyBhZGRyZXNzIG9mIHRoZQogCSAqIGRtYS1hYmxlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBmY3BfY21kLCBmY3BfcnNwIGFuZCBhIHNjYXR0ZXIKIAkgKiBnYXRoZXIgYmRlIGxpc3QgdGhhdCBzdXBwb3J0cyB0aGUgc2dfdGFibGVzaXplIHZhbHVlLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zbGkuYyBiL2RyaXZlcnMvc2NzaS9scGZjL2xwZmNfc2xpLmMKaW5kZXggNDc0NmRjZC4uZGFjYWJiZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL2xwZmMvbHBmY19zbGkuYworKysgYi9kcml2ZXJzL3Njc2kvbHBmYy9scGZjX3NsaS5jCkBAIC0yODE3LDcgKzI4MTcsNyBAQAogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aGUgaW50ZXJydXB0IGNvbnRleHQgd2hlbiB0aGVyZSBpcyBhIHJpbmcKICAqIGV2ZW50IGZvciB0aGUgZmNwIHJpbmcuIFRoZSBjYWxsZXIgZG9lcyBub3QgaG9sZCBhbnkgbG9jay4KICAqIFRoZSBmdW5jdGlvbiBwcm9jZXNzZXMgZWFjaCByZXNwb25zZSBpb2NiIGluIHRoZSByZXNwb25zZSByaW5nIHVudGlsIGl0Ci0gKiBmaW5kcyBhbiBpb2NiIHdpdGggTEUgYml0IHNldCBhbmQgY2hhaW5zIGFsbCB0aGUgaW9jYnMgdXB0byB0aGUgaW9jYiB3aXRoCisgKiBmaW5kcyBhbiBpb2NiIHdpdGggTEUgYml0IHNldCBhbmQgY2hhaW5zIGFsbCB0aGUgaW9jYnMgdXAgdG8gdGhlIGlvY2Igd2l0aAogICogTEUgYml0IHNldC4gVGhlIGZ1bmN0aW9uIHdpbGwgY2FsbCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIG9mIHRoZSBjb21tYW5kIGlvY2IKICAqIGlmIHRoZSByZXNwb25zZSBpb2NiIGluZGljYXRlcyBhIGNvbXBsZXRpb24gZm9yIGEgY29tbWFuZCBpb2NiIG9yIGl0IGlzCiAgKiBhbiBhYm9ydCBjb21wbGV0aW9uLiBUaGUgZnVuY3Rpb24gd2lsbCBjYWxsIGxwZmNfc2xpX3Byb2Nlc3NfdW5zb2xfaW9jYgpAQCAtNTExNyw3ICs1MTE3LDcgQEAKIAogCS8qIFNldHRpbmcgc3RhdGUgdW5rbm93biBzbyBscGZjX3NsaV9hYm9ydF9pb2NiX3JpbmcKIAkgKiB3b3VsZCBnZXQgSU9DQl9FUlJPUiBmcm9tIGxwZmNfc2xpX2lzc3VlX2lvY2IsIGFsbG93aW5nCi0JICogaXQgdG8gZmFpbCBhbGwgb3VzdGFuZGluZyBTQ1NJIElPLgorCSAqIGl0IHRvIGZhaWwgYWxsIG91dHN0YW5kaW5nIFNDU0kgSU8uCiAJICovCiAJc3Bpbl9sb2NrX2lycSgmcGhiYS0+cHBvcnQtPndvcmtfcG9ydF9sb2NrKTsKIAlwaGJhLT5wcG9ydC0+d29ya19wb3J0X2V2ZW50cyAmPSB+V09SS0VSX01CT1hfVE1POwpAQCAtNjAzMSw3ICs2MDMxLDcgQEAKIH0KIAogLyoqCi0gKiBscGZjX21ib3hfYXBpX3RhYmxlX3NldHVwIC0gU2V0IHVwIG1ib3ggYXBpIGZ1Y250aW9uIGp1bXAgdGFibGUKKyAqIGxwZmNfbWJveF9hcGlfdGFibGVfc2V0dXAgLSBTZXQgdXAgbWJveCBhcGkgZnVuY3Rpb24ganVtcCB0YWJsZQogICogQHBoYmE6IFRoZSBoYmEgc3RydWN0IGZvciB3aGljaCB0aGlzIGNhbGwgaXMgYmVpbmcgZXhlY3V0ZWQuCiAgKiBAZGV2X2dycDogVGhlIEhCQSBQQ0ktRGV2aWNlIGdyb3VwIG51bWJlci4KICAqCkBAIC02ODQ3LDcgKzY4NDcsNyBAQAogfQogCiAvKioKLSAqIGxwZmNfc2xpX2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBzbGkgYXBpIGZ1Y250aW9uIGp1bXAgdGFibGUKKyAqIGxwZmNfc2xpX2FwaV90YWJsZV9zZXR1cCAtIFNldCB1cCBzbGkgYXBpIGZ1bmN0aW9uIGp1bXAgdGFibGUKICAqIEBwaGJhOiBUaGUgaGJhIHN0cnVjdCBmb3Igd2hpY2ggdGhpcyBjYWxsIGlzIGJlaW5nIGV4ZWN1dGVkLgogICogQGRldl9ncnA6IFRoZSBIQkEgUENJLURldmljZSBncm91cCBudW1iZXIuCiAgKgpAQCAtNzUyMSw3ICs3NTIxLDcgQEAKIAlzdHJ1Y3QgbHBmY19kbWFidWYgKm1wLCAqbmV4dF9tcDsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpzbHAgPSAmcHJpbmctPnBvc3RidWZxOwogCi0JLyogU2VhcmNoIHBvc3RidWZxLCBmcm9tIHRoZSBiZWdpbmluZywgbG9va2luZyBmb3IgYSBtYXRjaCBvbiB0YWcgKi8KKwkvKiBTZWFyY2ggcG9zdGJ1ZnEsIGZyb20gdGhlIGJlZ2lubmluZywgbG9va2luZyBmb3IgYSBtYXRjaCBvbiB0YWcgKi8KIAlzcGluX2xvY2tfaXJxKCZwaGJhLT5oYmFsb2NrKTsKIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUobXAsIG5leHRfbXAsICZwcmluZy0+cG9zdGJ1ZnEsIGxpc3QpIHsKIAkJaWYgKG1wLT5idWZmZXJfdGFnID09IHRhZykgewpAQCAtNzU2NSw3ICs3NTY1LDcgQEAKIAlzdHJ1Y3QgbHBmY19kbWFidWYgKm1wLCAqbmV4dF9tcDsKIAlzdHJ1Y3QgbGlzdF9oZWFkICpzbHAgPSAmcHJpbmctPnBvc3RidWZxOwogCi0JLyogU2VhcmNoIHBvc3RidWZxLCBmcm9tIHRoZSBiZWdpbmluZywgbG9va2luZyBmb3IgYSBtYXRjaCBvbiBwaHlzICovCisJLyogU2VhcmNoIHBvc3RidWZxLCBmcm9tIHRoZSBiZWdpbm5pbmcsIGxvb2tpbmcgZm9yIGEgbWF0Y2ggb24gcGh5cyAqLwogCXNwaW5fbG9ja19pcnEoJnBoYmEtPmhiYWxvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShtcCwgbmV4dF9tcCwgJnByaW5nLT5wb3N0YnVmcSwgbGlzdCkgewogCQlpZiAobXAtPnBoeXMgPT0gcGh5cykgewpAQCAtODQzOCw3ICs4NDM4LDcgQEAKICAqIGZvciBwb3NzaWJsZSBlcnJvciBhdHRlbnRpb24gZXZlbnRzLiBUaGUgY2FsbGVyIG11c3QgaG9sZCB0aGUgaG9zdGxvY2sKICAqIHdpdGggc3Bpbl9sb2NrX2lycSgpLgogICoKLSAqIFRoaXMgZnVjbnRpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgd2hlbiB0aGVyZSBpcyBFcnJvciBBdHRlbnRpb24gaW4gdGhlIEhvc3QgQXR0ZW50aW9uCiAgKiBSZWdpc3RlciBhbmQgcmV0dXJucyAwIG90aGVyd2lzZS4KICAqKi8KIHN0YXRpYyBpbnQKQEAgLTg0OTEsNyArODQ5MSw3IEBACiAgKiBmb3IgcG9zc2libGUgZXJyb3IgYXR0ZW50aW9uIGV2ZW50cy4gVGhlIGNhbGxlciBtdXN0IGhvbGQgdGhlIGhvc3Rsb2NrCiAgKiB3aXRoIHNwaW5fbG9ja19pcnEoKS4KICAqCi0gKiBUaGlzIGZ1Y250aW9uIHJldHVybnMgMSB3aGVuIHRoZXJlIGlzIEVycm9yIEF0dGVudGlvbiBpbiB0aGUgSG9zdCBBdHRlbnRpb24KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgogICogUmVnaXN0ZXIgYW5kIHJldHVybnMgMCBvdGhlcndpc2UuCiAgKiovCiBzdGF0aWMgaW50CkBAIC04NTgxLDcgKzg1ODEsNyBAQAogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbSB0aW1lciBzb2Z0IGludGVycnVwdCBjb250ZXh0IHRvIGNoZWNrIEhCQSdzCiAgKiBlcnJvciBhdHRlbnRpb24gcmVnaXN0ZXIgYml0IGZvciBlcnJvciBhdHRlbnRpb24gZXZlbnRzLgogICoKLSAqIFRoaXMgZnVjbnRpb24gcmV0dXJucyAxIHdoZW4gdGhlcmUgaXMgRXJyb3IgQXR0ZW50aW9uIGluIHRoZSBIb3N0IEF0dGVudGlvbgorICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgd2hlbiB0aGVyZSBpcyBFcnJvciBBdHRlbnRpb24gaW4gdGhlIEhvc3QgQXR0ZW50aW9uCiAgKiBSZWdpc3RlciBhbmQgcmV0dXJucyAwIG90aGVyd2lzZS4KICAqKi8KIGludApAQCAtOTY4NCw3ICs5Njg0LDcgQEAKICAqIEBjcTogUG9pbnRlciB0byB0aGUgY29tcGxldGlvbiBxdWV1ZS4KICAqIEB3Y3FlOiBQb2ludGVyIHRvIGEgY29tcGxldGlvbiBxdWV1ZSBlbnRyeS4KICAqCi0gKiBUaGlzIHJvdXRpbmUgcHJvY2VzcyBhIHNsb3ctcGF0aCB3b3JrLXF1ZXVlIG9yIHJlY2lldmUgcXVldWUgY29tcGxldGlvbiBxdWV1ZQorICogVGhpcyByb3V0aW5lIHByb2Nlc3MgYSBzbG93LXBhdGggd29yay1xdWV1ZSBvciByZWNlaXZlIHF1ZXVlIGNvbXBsZXRpb24gcXVldWUKICAqIGVudHJ5LgogICoKICAqIFJldHVybjogdHJ1ZSBpZiB3b3JrIHBvc3RlZCB0byB3b3JrZXIgdGhyZWFkLCBvdGhlcndpc2UgZmFsc2UuCkBAIC0xMjk3MSw3ICsxMjk3MSw3IEBACiAgKiByZWNvcmQgYW5kIHByb2Nlc3NpbmcgaXQgb25lIGF0IGEgdGltZSBzdGFydGluZyBmcm9tIHRoZSBAZmNmX2luZGV4CiAgKiBmb3IgaW5pdGlhbCBGQ0YgZGlzY292ZXJ5IG9yIGZhc3QgRkNGIGZhaWxvdmVyIHJlZGlzY292ZXJ5LgogICoKLSAqIFJldHVybiAwIGlmIHRoZSBtYWlsYm94IGNvbW1hbmQgaXMgc3VibWl0dGVkIHN1Y2Vzc2Z1bGx5LCBub25lIDAKKyAqIFJldHVybiAwIGlmIHRoZSBtYWlsYm94IGNvbW1hbmQgaXMgc3VibWl0dGVkIHN1Y2Nlc3NmdWxseSwgbm9uZSAwCiAgKiBvdGhlcndpc2UuCiAgKiovCiBpbnQKQEAgLTEzMDMyLDcgKzEzMDMyLDcgQEAKICAqIFRoaXMgcm91dGluZSBpcyBpbnZva2VkIHRvIHJlYWQgYW4gRkNGIHJlY29yZCBpbmRpY2F0ZWQgYnkgQGZjZl9pbmRleAogICogYW5kIHRvIHVzZSBpdCBmb3IgRkxPR0kgcm91bmRyb2JpbiBGQ0YgZmFpbG92ZXIuCiAgKgotICogUmV0dXJuIDAgaWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBzdWJtaXR0ZWQgc3VjZXNzZnVsbHksIG5vbmUgMAorICogUmV0dXJuIDAgaWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5LCBub25lIDAKICAqIG90aGVyd2lzZS4KICAqKi8KIGludApAQCAtMTMwNzgsNyArMTMwNzgsNyBAQAogICogVGhpcyByb3V0aW5lIGlzIGludm9rZWQgdG8gcmVhZCBhbiBGQ0YgcmVjb3JkIGluZGljYXRlZCBieSBAZmNmX2luZGV4IHRvCiAgKiBkZXRlcm1pbmUgd2hldGhlciBpdCdzIGVsaWdpYmxlIGZvciBGTE9HSSByb3VuZHJvYmluIGZhaWxvdmVyIGxpc3QuCiAgKgotICogUmV0dXJuIDAgaWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBzdWJtaXR0ZWQgc3VjZXNzZnVsbHksIG5vbmUgMAorICogUmV0dXJuIDAgaWYgdGhlIG1haWxib3ggY29tbWFuZCBpcyBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5LCBub25lIDAKICAqIG90aGVyd2lzZS4KICAqKi8KIGludApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYwppbmRleCBjMjEyNjk0Li5mMjY4NGRkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYworKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuYwpAQCAtMjg0LDcgKzI4NCw3IEBACiAKIAlhZGFwdGVyLT5ob3N0LT5tYXhfaWQgPSAxNjsJLyogbWF4IHRhcmdldHMgcGVyIGNoYW5uZWwgKi8KIAotCWFkYXB0ZXItPmhvc3QtPm1heF9sdW4gPSA3OwkvKiBVcHRvIDcgbHVucyBmb3Igbm9uIGRpc2sgZGV2aWNlcyAqLworCWFkYXB0ZXItPmhvc3QtPm1heF9sdW4gPSA3OwkvKiBVcCB0byA3IGx1bnMgZm9yIG5vbiBkaXNrIGRldmljZXMgKi8KIAogCWFkYXB0ZXItPmhvc3QtPmNtZF9wZXJfbHVuID0gbWF4X2NtZF9wZXJfbHVuOwogCkBAIC0zNzM0LDcgKzM3MzQsNyBAQAogCSAqIGNoZWNrIGlzIHRoZSBhcHBsaWNhdGlvbiBjb25mb3JtcyB0byBOSVQuIFdlIGRvIG5vdCBoYXZlIHRvIGRvIG11Y2gKIAkgKiBpbiB0aGF0IGNhc2UuCiAJICogV2UgZXhwbG9pdCB0aGUgZmFjdCB0aGF0IHRoZSBzaWduYXR1cmUgaXMgc3RvcmVkIGluIHRoZSB2ZXJ5Ci0JICogYmVnaW5pbmcgb2YgdGhlIHN0cnVjdHVyZS4KKwkgKiBiZWdpbm5pbmcgb2YgdGhlIHN0cnVjdHVyZS4KIAkgKi8KIAogCWlmKCBjb3B5X2Zyb21fdXNlcihzaWduYXR1cmUsIGFyZywgNykgKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkLmggYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuaAppbmRleCA4NTM0MTE5Li45YTc4OTdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuaAorKysgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQuaApAQCAtNTMyLDkgKzUzMiw5IEBACiAKIC8qCiAgKiBzdHJ1Y3QgbWNvbnRyb2xsZXIgaXMgdXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250cm9sbGVycyBpbiB0aGUKLSAqIHN5c3RlbS4gSXRzIHVwdG8gdGhlIGFwcGxpY2F0aW9uIGhvdyB0byB1c2UgdGhlIGluZm9ybWF0aW9uLiBXZSBhcmUgcGFzc2luZworICogc3lzdGVtLiBJdHMgdXAgdG8gdGhlIGFwcGxpY2F0aW9uIGhvdyB0byB1c2UgdGhlIGluZm9ybWF0aW9uLiBXZSBhcmUgcGFzc2luZwogICogYXMgbXVjaCBpbmZvIGFib3V0IHRoZSBjYXJkcyBhcyBwb3NzaWJsZSBhbmQgdXNlZnVsLiBCZWZvcmUgaXNzdWluZyB0aGUKLSAqIGNhbGwgdG8gZmluZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FyZHMsIHRoZSBhcHBsaWNhaXRvbiBuZWVkcyB0byBpc3N1ZSBhCisgKiBjYWxsIHRvIGZpbmQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhcmRzLCB0aGUgYXBwbGljYXRpb24gbmVlZHMgdG8gaXNzdWUgYQogICogaW9jdGwgZmlyc3QgdG8gZmluZCBvdXQgdGhlIG51bWJlciBvZiBjb250cm9sbGVycyBpbiB0aGUgc3lzdGVtLgogICovCiAjZGVmaW5lIE1BWF9DT05UUk9MTEVSUyAzMgpAQCAtODA0LDcgKzgwNCw3IEBACiAJdW5zaWduZWQgbG9uZwkJYmFzZTsKIAl2b2lkIF9faW9tZW0JCSptbWlvX2Jhc2U7CiAKLQkvKiBtYm94NjQgd2l0aCBtYm94IG5vdCBhbGlnbmVkIG9uIDE2LWJ5dGUgYm91bmRyeSAqLworCS8qIG1ib3g2NCB3aXRoIG1ib3ggbm90IGFsaWduZWQgb24gMTYtYnl0ZSBib3VuZGFyeSAqLwogCW1ib3g2NF90CSp1bmFfbWJveDY0OwogCWRtYV9hZGRyX3QJdW5hX21ib3g2NF9kbWE7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tYm94X2RlZnMuaCBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tYm94X2RlZnMuaAppbmRleCBjZTI0ODdhLi5lMDFjNmY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWJveF9kZWZzLmgKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21ib3hfZGVmcy5oCkBAIC02NjAsNyArNjYwLDcgQEAKICAqIEBscGFyYW0JOiBsb2dpY2FsIGRyaXZlcyBwYXJhbWV0ZXJzCiAgKiBAc3Bhbgk6IHNwYW4KICAqCi0gKiA4LUxEIGxvZ2ljYWwgZHJpdmUgd2l0aCB1cHRvIDggc3BhbnMKKyAqIDgtTEQgbG9naWNhbCBkcml2ZSB3aXRoIHVwIHRvIDggc3BhbnMKICAqLwogdHlwZWRlZiBzdHJ1Y3QgewogCWxvZ2Rydl9wYXJhbV90CWxwYXJhbTsKQEAgLTY3Myw3ICs2NzMsNyBAQAogICogQGxwYXJhbQk6IGxvZ2ljYWwgZHJpdmVzIHBhcmFtZXRlcnMKICAqIEBzcGFuCTogc3BhbgogICoKLSAqIDgtTEQgbG9naWNhbCBkcml2ZSB3aXRoIHVwdG8gNCBzcGFucworICogOC1MRCBsb2dpY2FsIGRyaXZlIHdpdGggdXAgdG8gNCBzcGFucwogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAJbG9nZHJ2X3BhcmFtX3QJbHBhcmFtOwpAQCAtNzIwLDcgKzcyMCw3IEBACiAgKiBAbGRydgk6IGxvZ2ljYWwgZHJpdmVzIGluZm9ybWF0aW9uCiAgKiBAcGRydgk6IHBoeXNpY2FsIGRyaXZlcyBpbmZvcm1hdGlvbgogICoKLSAqIERpc2sgYXJyYXkgZm9yIDhMRCBsb2dpY2FsIGRyaXZlcyB3aXRoIHVwdG8gOCBzcGFucworICogRGlzayBhcnJheSBmb3IgOExEIGxvZ2ljYWwgZHJpdmVzIHdpdGggdXAgdG8gOCBzcGFucwogICovCiB0eXBlZGVmIHN0cnVjdCB7CiAJdWludDhfdAkJCW51bWxkcnY7CkBAIC03MzcsNyArNzM3LDcgQEAKICAqIEBsZHJ2CTogbG9naWNhbCBkcml2ZXMgaW5mb3JtYXRpb24KICAqIEBwZHJ2CTogcGh5c2ljYWwgZHJpdmVzIGluZm9ybWF0aW9uCiAgKgotICogRGlzayBhcnJheSBmb3IgOExEIGxvZ2ljYWwgZHJpdmVzIHdpdGggdXB0byA0IHNwYW5zCisgKiBEaXNrIGFycmF5IGZvciA4TEQgbG9naWNhbCBkcml2ZXMgd2l0aCB1cCB0byA0IHNwYW5zCiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAl1aW50OF90CQkJbnVtbGRydjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9tYm94LmMgYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfbWJveC5jCmluZGV4IDU3MDhjYjIuLjFkYmEzMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9tYm94LmMKKysrIGIvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX21ib3guYwpAQCAtMjY4OSw3ICsyNjg5LDcgQEAKIAkJCQkoTUJPWF9SRVNFVF9XQUlUICsgTUJPWF9SRVNFVF9FWFRfV0FJVCkgLSBpKSk7CiAJCX0KIAotCQkvLyBiYWlsb3V0IGlmIG5vIHJlY292ZXJ5IGhhcHBlbmRlZCBpbiByZXNldCB0aW1lCisJCS8vIGJhaWxvdXQgaWYgbm8gcmVjb3ZlcnkgaGFwcGVuZWQgaW4gcmVzZXQgdGltZQogCQlpZiAoYWRhcHRlci0+b3V0c3RhbmRpbmdfY21kcyA9PSAwKSB7CiAJCQlicmVhazsKIAkJfQpAQCAtMzQ1Miw3ICszNDUyLDcgQEAKICAqIG1lZ2FyYWlkX21ib3hfc2V0dXBfZGV2aWNlX21hcCAtIG1hbmFnZSBkZXZpY2UgaWRzCiAgKiBAYWRhcHRlcgk6IERyaXZlcidzIHNvZnQgc3RhdGUKICAqCi0gKiBNYW5hbmdlIHRoZSBkZXZpY2UgaWRzIHRvIGhhdmUgYW4gYXBwcm9wcmFpdGUgbWFwcGluZyBiZXR3ZWVuIHRoZSBrZXJuZWwKKyAqIE1hbmFuZ2UgdGhlIGRldmljZSBpZHMgdG8gaGF2ZSBhbiBhcHByb3ByaWF0ZSBtYXBwaW5nIGJldHdlZW4gdGhlIGtlcm5lbAogICogc2NzaSBhZGRyZXNzZXMgYW5kIG1lZ2FyYWlkIHNjc2kgYW5kIGxvZ2ljYWwgZHJpdmUgYWRkcmVzc2VzLiBXZSBleHBvcnQKICAqIHNjc2kgZGV2aWNlcyBvbiB0aGVpciBhY3R1YWwgYWRkcmVzc2VzLCB3aGVyZWFzIHRoZSBsb2dpY2FsIGRyaXZlcyBhcmUKICAqIGV4cG9ydGVkIG9uIGEgdmlydHVhbCBzY3NpIGNoYW5uZWwuCkBAIC0zOTczLDcgKzM5NzMsNyBAQAogICogTk9URTogVGhlIGNvbW1hbmRzIGlzc3VhbmNlIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGdlbmVyYWxpemVkIGFuZAogICogaW1wbGVtZW50ZWQgaW4gY29udGV4dCBvZiAiZ2V0IGxkIG1hcCIgY29tbWFuZCBvbmx5LiBJZiByZXF1aXJlZCwgdGhlCiAgKiBjb21tYW5kIGlzc3VhbmNlIGxvZ2ljYWwgY2FuIGJlIHRyaXZpYWxseSBwdWxsZWQgb3V0IGFuZCBpbXBsZW1lbnRlZCBhcyBhCi0gKiBzdGFuZGFsb25lIGxpYmFyeS4gRm9yIG5vdywgdGhpcyBzaG91bGQgc3VmZmljZSBzaW5jZSB0aGVyZSBpcyBubyBvdGhlcgorICogc3RhbmRhbG9uZSBsaWJyYXJ5LiBGb3Igbm93LCB0aGlzIHNob3VsZCBzdWZmaWNlIHNpbmNlIHRoZXJlIGlzIG5vIG90aGVyCiAgKiB1c2VyIG9mIHRoaXMgaW50ZXJmYWNlLgogICoKICAqIFJldHVybiAwIG9uIHN1Y2Nlc3MuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmggYi9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzLmgKaW5kZXggNjM1YjIyOC4uMDQ2ZGNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhcy5oCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXMuaApAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAKIAlzdHJ1Y3QgdGltZXJfbGlzdCBpb19jb21wbGV0aW9uX3RpbWVyOwogCXN0cnVjdCBsaXN0X2hlYWQgaW50ZXJuYWxfcmVzZXRfcGVuZGluZ19xOwogCi0JLyogUHRyIHRvIGhiYSBzcGVjZmljIGluZm9ybWF0aW9uICovCisJLyogUHRyIHRvIGhiYSBzcGVjaWZpYyBpbmZvcm1hdGlvbiAqLwogCXZvaWQgKmN0cmxfY29udGV4dDsKIAl1OAltc2lfZmxhZzsKIAlzdHJ1Y3QgbXNpeF9lbnRyeSBtc2l4ZW50cnk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jCmluZGV4IGJiZDEwYzguLjY2ZDRjZWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jCisrKyBiL2RyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jCkBAIC0xNjk4LDcgKzE2OTgsNyBAQAogICogbWVnYXNhc193YWl0X2Zvcl9vdXRzdGFuZGluZyAtCVdhaXQgZm9yIGFsbCBvdXRzdGFuZGluZyBjbWRzCiAgKiBAaW5zdGFuY2U6CQkJCUFkYXB0ZXIgc29mdCBzdGF0ZQogICoKLSAqIFRoaXMgZnVuY3Rpb24gd2FpdHMgZm9yIHVwdG8gTUVHQVNBU19SRVNFVF9XQUlUX1RJTUUgc2Vjb25kcyBmb3IgRlcgdG8KKyAqIFRoaXMgZnVuY3Rpb24gd2FpdHMgZm9yIHVwIHRvIE1FR0FTQVNfUkVTRVRfV0FJVF9USU1FIHNlY29uZHMgZm9yIEZXIHRvCiAgKiBjb21wbGV0ZSBhbGwgaXRzIG91dHN0YW5kaW5nIGNvbW1hbmRzLiBSZXR1cm5zIGVycm9yIGlmIG9uZSBvciBtb3JlIElPcwogICogYXJlIHBlbmRpbmcgYWZ0ZXIgdGhpcyB0aW1lIHBlcmlvZC4gSXQgYWxzbyBtYXJrcyB0aGUgY29udHJvbGxlciBkZWFkLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcGkvbXBpMl9pbml0LmggYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcGkvbXBpMl9pbml0LmgKaW5kZXggMjBlNmI4OC4uMTY1NDU0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXBpL21waTJfaW5pdC5oCisrKyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21waS9tcGkyX2luaXQuaApAQCAtMjEsNyArMjEsNyBAQAogICogIDA1LTIxLTA4ICAwMi4wMC4wNSAgRml4ZWQgdHlwbyBpbiBuYW1lIG9mIE1waTJTZXBSZXF1ZXN0X3QuCiAgKiAgMTAtMDItMDggIDAyLjAwLjA2ICBSZW1vdmVkIFVudGFnZ2VkIGFuZCBObyBEaXNjb25uZWN0IHZhbHVlcyBmcm9tIFNDU0kgSU8KICAqICAgICAgICAgICAgICAgICAgICAgIENvbnRyb2wgZmllbGQgVGFzayBBdHRyaWJ1dGUgZmxhZ3MuCi0gKiAgICAgICAgICAgICAgICAgICAgICBNb3ZlZCBMVU4gZmllbGQgZGVmaW5lcyB0byBtcGkyLmggYmVjYXN1ZSB0aGV5IGFyZQorICogICAgICAgICAgICAgICAgICAgICAgTW92ZWQgTFVOIGZpZWxkIGRlZmluZXMgdG8gbXBpMi5oIGJlY2F1c2UgdGhleSBhcmUKICAqICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbiB0byBtYW55IHN0cnVjdHVyZXMuCiAgKiAgMDUtMDYtMDkgIDAyLjAwLjA3ICBDaGFuZ2VkIHRhc2sgbWFuYWdlbWVudCB0eXBlIG9mIFF1ZXJ5IFVuaXQgQXR0ZW50aW9uIHRvCiAgKiAgICAgICAgICAgICAgICAgICAgICBRdWVyeSBBc3luY2hyb25vdXMgRXZlbnQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2Jhc2UuYyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfYmFzZS5jCmluZGV4IDVlMDAxZmYuLjMzNDYzNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfYmFzZS5jCisrKyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfYmFzZS5jCkBAIC05MjUsNyArOTI1LDcgQEAKIH0KIAogLyoqCi0gKiBtcHQyc2FzX2Jhc2VfcmVsZWFzZV9jYWxsYmFja19oYW5kbGVyIC0gY2xlYXIgaW50ZXJ1cHQgY2FsbGJhY2sgaGFuZGxlcgorICogbXB0MnNhc19iYXNlX3JlbGVhc2VfY2FsbGJhY2tfaGFuZGxlciAtIGNsZWFyIGludGVycnVwdCBjYWxsYmFjayBoYW5kbGVyCiAgKiBAY2JfaWR4OiBjYWxsYmFjayBpbmRleAogICoKICAqIFJldHVybiBub3RoaW5nLgpAQCAtMTExMyw3ICsxMTEzLDcgQEAKICAqIEBpb2M6IHBlciBhZGFwdGVyIG9iamVjdAogICoKICAqIENoZWNrIHRvIHNlZSBpZiBjYXJkIGlzIGNhcGFibGUgb2YgTVNJWCwgYW5kIHNldCBudW1iZXIKLSAqIG9mIGF2YWxpYWJsZSBtc2l4IHZlY3RvcnMKKyAqIG9mIGF2YWlsYWJsZSBtc2l4IHZlY3RvcnMKICAqLwogc3RhdGljIGludAogX2Jhc2VfY2hlY2tfZW5hYmxlX21zaXgoc3RydWN0IE1QVDJTQVNfQURBUFRFUiAqaW9jKQpAQCAtMTU5NSw3ICsxNTk1LDcgQEAKIAogCiAvKioKLSAqIG1wdDJzYXNfYmFzZV9wdXRfc21pZF9oaV9wcmlvcml0eSAtIHNlbmQgVGFzayBNYW5hZ21lbnQgcmVxdWVzdCB0byBmaXJtd2FyZQorICogbXB0MnNhc19iYXNlX3B1dF9zbWlkX2hpX3ByaW9yaXR5IC0gc2VuZCBUYXNrIE1hbmFnZW1lbnQgcmVxdWVzdCB0byBmaXJtd2FyZQogICogQGlvYzogcGVyIGFkYXB0ZXIgb2JqZWN0CiAgKiBAc21pZDogc3lzdGVtIHJlcXVlc3QgbWVzc2FnZSBpbmRleAogICoKQEAgLTI1OTksNyArMjU5OSw3IEBACiAJCWludF9zdGF0dXMgPSByZWFkbCgmaW9jLT5jaGlwLT5Ib3N0SW50ZXJydXB0U3RhdHVzKTsKIAkJaWYgKGludF9zdGF0dXMgJiBNUEkyX0hJU19JT0MyU1lTX0RCX1NUQVRVUykgewogCQkJZGhzcHJpbnRrKGlvYywgcHJpbnRrKE1QVDJTQVNfSU5GT19GTVQgIiVzOiAiCi0JCQkgICAgInN1Y2Nlc3NmdWxsIGNvdW50KCVkKSwgdGltZW91dCglZClcbiIsIGlvYy0+bmFtZSwKKwkJCSAgICAic3VjY2Vzc2Z1bCBjb3VudCglZCksIHRpbWVvdXQoJWQpXG4iLCBpb2MtPm5hbWUsCiAJCQkgICAgX19mdW5jX18sIGNvdW50LCB0aW1lb3V0KSk7CiAJCQlyZXR1cm4gMDsKIAkJfQpAQCAtMjY0MCw3ICsyNjQwLDcgQEAKIAkJaW50X3N0YXR1cyA9IHJlYWRsKCZpb2MtPmNoaXAtPkhvc3RJbnRlcnJ1cHRTdGF0dXMpOwogCQlpZiAoIShpbnRfc3RhdHVzICYgTVBJMl9ISVNfU1lTMklPQ19EQl9TVEFUVVMpKSB7CiAJCQlkaHNwcmludGsoaW9jLCBwcmludGsoTVBUMlNBU19JTkZPX0ZNVCAiJXM6ICIKLQkJCSAgICAic3VjY2Vzc2Z1bGwgY291bnQoJWQpLCB0aW1lb3V0KCVkKVxuIiwgaW9jLT5uYW1lLAorCQkJICAgICJzdWNjZXNzZnVsIGNvdW50KCVkKSwgdGltZW91dCglZClcbiIsIGlvYy0+bmFtZSwKIAkJCSAgICBfX2Z1bmNfXywgY291bnQsIHRpbWVvdXQpKTsKIAkJCXJldHVybiAwOwogCQl9IGVsc2UgaWYgKGludF9zdGF0dXMgJiBNUEkyX0hJU19JT0MyU1lTX0RCX1NUQVRVUykgewpAQCAtMjY4OCw3ICsyNjg4LDcgQEAKIAkJZG9vcmJlbGxfcmVnID0gcmVhZGwoJmlvYy0+Y2hpcC0+RG9vcmJlbGwpOwogCQlpZiAoIShkb29yYmVsbF9yZWcgJiBNUEkyX0RPT1JCRUxMX1VTRUQpKSB7CiAJCQlkaHNwcmludGsoaW9jLCBwcmludGsoTVBUMlNBU19JTkZPX0ZNVCAiJXM6ICIKLQkJCSAgICAic3VjY2Vzc2Z1bGwgY291bnQoJWQpLCB0aW1lb3V0KCVkKVxuIiwgaW9jLT5uYW1lLAorCQkJICAgICJzdWNjZXNzZnVsIGNvdW50KCVkKSwgdGltZW91dCglZClcbiIsIGlvYy0+bmFtZSwKIAkJCSAgICBfX2Z1bmNfXywgY291bnQsIHRpbWVvdXQpKTsKIAkJCXJldHVybiAwOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2NvbmZpZy5jIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jb25maWcuYwppbmRleCA2YWZkNjdiLi42ODYxMjQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2NvbmZpZy5jCisrKyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY29uZmlnLmMKQEAgLTkzLDcgKzkzLDcgQEAKICAqIEBtcGlfcmVwbHk6IHJlcGx5IG1lc3NhZ2UgZnJhbWUKICAqIENvbnRleHQ6IG5vbmUuCiAgKgotICogRnVuY3Rpb24gZm9yIGRpc3BsYXlpbmcgZGVidWcgaW5mbyBoZWxwZnVsbCB3aGVuIGRlYnVnZ2luZyBpc3N1ZXMKKyAqIEZ1bmN0aW9uIGZvciBkaXNwbGF5aW5nIGRlYnVnIGluZm8gaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBpc3N1ZXMKICAqIGluIHRoaXMgbW9kdWxlLgogICovCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jdGwuYyBiL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfY3RsLmMKaW5kZXggZTkyYjc3YS4uMWM2ZDJiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19jdGwuYworKysgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX2N0bC5jCkBAIC0xMTYsNyArMTE2LDcgQEAKICAqIEBtcGlfcmVwbHk6IHJlcGx5IG1lc3NhZ2UgZnJhbWUKICAqIENvbnRleHQ6IG5vbmUuCiAgKgotICogRnVuY3Rpb24gZm9yIGRpc3BsYXlpbmcgZGVidWcgaW5mbyBoZWxwZnVsbCB3aGVuIGRlYnVnZ2luZyBpc3N1ZXMKKyAqIEZ1bmN0aW9uIGZvciBkaXNwbGF5aW5nIGRlYnVnIGluZm8gaGVscGZ1bCB3aGVuIGRlYnVnZ2luZyBpc3N1ZXMKICAqIGluIHRoaXMgbW9kdWxlLgogICovCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19zY3NpaC5jIGIvZHJpdmVycy9zY3NpL21wdDJzYXMvbXB0MnNhc19zY3NpaC5jCmluZGV4IDZjZWI3NzUuLmQyMDY0YTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9tcHQyc2FzL21wdDJzYXNfc2NzaWguYworKysgYi9kcml2ZXJzL3Njc2kvbXB0MnNhcy9tcHQyc2FzX3Njc2loLmMKQEAgLTM5Nyw3ICszOTcsNyBAQAogICogQGlzX3JhaWQ6IFtmbGFnXSAxID0gcmFpZCBvYmplY3QsIDAgPSBzYXMgb2JqZWN0CiAgKgogICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgZGV2aWNlIHNob3VsZCBiZSBmaXJzdCByZXBvcnRlZCBkZXZpY2UgdG8KLSAqIHRvIHNjc2ktbWwgb3Igc2FzIHRyYW5zcG9ydCwgdGhpcyBwdXJwb3NlIGlzIGZvciBwZXJzaXN0YW50IGJvb3QgZGV2aWNlLgorICogdG8gc2NzaS1tbCBvciBzYXMgdHJhbnNwb3J0LCB0aGlzIHB1cnBvc2UgaXMgZm9yIHBlcnNpc3RlbnQgYm9vdCBkZXZpY2UuCiAgKiBUaGVyZSBhcmUgcHJpbWFyeSwgYWx0ZXJuYXRlLCBhbmQgY3VycmVudCBlbnRyaWVzIGluIGJpb3MgcGFnZSAyLiBUaGUgb3JkZXIKICAqIHByaW9yaXR5IGlzIHByaW1hcnksIGFsdGVybmF0ZSwgdGhlbiBjdXJyZW50LiAgVGhpcyByb3V0aW5lIHNhdmVzCiAgKiB0aGUgY29ycmVzcG9uZGluZyBkZXZpY2Ugb2JqZWN0IGFuZCBpc19yYWlkIGZsYWcgaW4gdGhlIGlvYyBvYmplY3QuCkBAIC0yNjcxLDEwICsyNjcxLDEwIEBACiAgKiBAaGFuZGxlOiBkZXZpY2UgaGFuZGxlCiAgKiBDb250ZXh0OiBpbnRlcnJ1cHQgdGltZS4KICAqCi0gKiBUaGlzIGNvZGUgaXMgdG8gaW5pdGlhdGUgdGhlIGRldmljZSByZW1vdmFsIGhhbmRzaGFrZSBwcm90b2NhbAorICogVGhpcyBjb2RlIGlzIHRvIGluaXRpYXRlIHRoZSBkZXZpY2UgcmVtb3ZhbCBoYW5kc2hha2UgcHJvdG9jb2wKICAqIHdpdGggY29udHJvbGxlciBmaXJtd2FyZS4gIFRoaXMgZnVuY3Rpb24gd2lsbCBpc3N1ZSB0YXJnZXQgcmVzZXQKICAqIHVzaW5nIGhpZ2ggcHJpb3JpdHkgcmVxdWVzdCBxdWV1ZS4gIEl0IHdpbGwgc2VuZCBhIHNhcyBpb3VuaXQKLSAqIGNvbnRyb2xsIHJlcXVlc3QgKE1QSTJfU0FTX09QX1JFTU9WRV9ERVZJQ0UpIGZyb20gdGhpcyBjb21wbGV0aW9uLgorICogY29udHJvbCByZXF1ZXN0IChNUEkyX1NBU19PUF9SRU1PVkVfREVWSUNFKSBmcm9tIHRoaXMgY29tcGxldGlvbi4KICAqCiAgKiBUaGlzIGlzIGRlc2lnbmVkIHRvIHNlbmQgbXVsaXBsZSB0YXNrIG1hbmFnZW1lbnQgcmVxdWVzdCBhdCB0aGUgc2FtZQogICogdGltZSB0byB0aGUgZmlmby4gSWYgdGhlIGZpZm8gaXMgZnVsbCwgd2Ugd2lsbCBhcHBlbmQgdGhlIHJlcXVlc3QsCkBAIC0yNzQ5LDkgKzI3NDksOSBAQAogICogQHJlcGx5OiByZXBseSBtZXNzYWdlIGZyYW1lKGxvd2VyIDMyYml0IGFkZHIpCiAgKiBDb250ZXh0OiBpbnRlcnJ1cHQgdGltZS4KICAqCi0gKiBUaGlzIGlzIHRoZSBzYXMgaW91bml0IGNvbnRyb2xsIGNvbXBsZXRpb24gcm91dGluZS4KKyAqIFRoaXMgaXMgdGhlIHNhcyBpb3VuaXQgY29udHJvbCBjb21wbGV0aW9uIHJvdXRpbmUuCiAgKiBUaGlzIGNvZGUgaXMgcGFydCBvZiB0aGUgY29kZSB0byBpbml0aWF0ZSB0aGUgZGV2aWNlIHJlbW92YWwKLSAqIGhhbmRzaGFrZSBwcm90b2NhbCB3aXRoIGNvbnRyb2xsZXIgZmlybXdhcmUuCisgKiBoYW5kc2hha2UgcHJvdG9jb2wgd2l0aCBjb250cm9sbGVyIGZpcm13YXJlLgogICoKICAqIFJldHVybiAxIG1lYW5pbmcgbWYgc2hvdWxkIGJlIGZyZWVkIGZyb20gX2Jhc2VfaW50ZXJydXB0CiAgKiAgICAgICAgMCBtZWFucyB0aGUgbWYgaXMgZnJlZWQgZnJvbSB0aGlzIGZ1bmN0aW9uLgpAQCAtMjg3OCw4ICsyODc4LDggQEAKICAqCiAgKiBUaGlzIGlzIHRoZSB0YXJnZXQgcmVzZXQgY29tcGxldGlvbiByb3V0aW5lLgogICogVGhpcyBjb2RlIGlzIHBhcnQgb2YgdGhlIGNvZGUgdG8gaW5pdGlhdGUgdGhlIGRldmljZSByZW1vdmFsCi0gKiBoYW5kc2hha2UgcHJvdG9jYWwgd2l0aCBjb250cm9sbGVyIGZpcm13YXJlLgotICogSXQgd2lsbCBzZW5kIGEgc2FzIGlvdW5pdCBjb250cm9sbCByZXF1ZXN0IChNUEkyX1NBU19PUF9SRU1PVkVfREVWSUNFKQorICogaGFuZHNoYWtlIHByb3RvY29sIHdpdGggY29udHJvbGxlciBmaXJtd2FyZS4KKyAqIEl0IHdpbGwgc2VuZCBhIHNhcyBpb3VuaXQgY29udHJvbCByZXF1ZXN0IChNUEkyX1NBU19PUF9SRU1PVkVfREVWSUNFKQogICoKICAqIFJldHVybiAxIG1lYW5pbmcgbWYgc2hvdWxkIGJlIGZyZWVkIGZyb20gX2Jhc2VfaW50ZXJydXB0CiAgKiAgICAgICAgMCBtZWFucyB0aGUgbWYgaXMgZnJlZWQgZnJvbSB0aGlzIGZ1bmN0aW9uLgpAQCAtMjk4NCw3ICsyOTg0LDcgQEAKICAqCiAgKiBUaGlzIHJvdXRpbmUgYWRkZWQgdG8gYmV0dGVyIGhhbmRsZSBjYWJsZSBicmVha2VyLgogICoKLSAqIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBkcml2ZXIgcmVjaWV2ZXMgbXVsdGlwbGUgZXhwYW5kZXIKKyAqIFRoaXMgaGFuZGxlcyB0aGUgY2FzZSB3aGVyZSBkcml2ZXIgcmVjZWl2ZXMgbXVsdGlwbGUgZXhwYW5kZXIKICAqIGFkZCBhbmQgZGVsZXRlIGV2ZW50cyBpbiBhIHNpbmdsZSBzaG90LiAgV2hlbiB0aGVyZSBpcyBhIGRlbGV0ZSBldmVudAogICogdGhlIHJvdXRpbmUgd2lsbCB2b2lkIGFueSBwZW5kaW5nIGFkZCBldmVudHMgd2FpdGluZyBpbiB0aGUgZXZlbnQgcXVldWUuCiAgKgpAQCAtMzUxMSw3ICszNTExLDcgQEAKIAogI2lmZGVmIENPTkZJR19TQ1NJX01QVDJTQVNfTE9HR0lORwogLyoqCi0gKiBfc2NzaWhfc2NzaV9pb2NfaW5mbyAtIHRyYW5zbGF0ZWQgbm9uLXN1Y2Nlc3NmdWxsIFNDU0lfSU8gcmVxdWVzdAorICogX3Njc2loX3Njc2lfaW9jX2luZm8gLSB0cmFuc2xhdGVkIG5vbi1zdWNjZXNzZnVsIFNDU0lfSU8gcmVxdWVzdAogICogQGlvYzogcGVyIGFkYXB0ZXIgb2JqZWN0CiAgKiBAc2NtZDogcG9pbnRlciB0byBzY3NpIGNvbW1hbmQgb2JqZWN0CiAgKiBAbXBpX3JlcGx5OiByZXBseSBtZiBwYXlsb2FkIHJldHVybmVkIGZyb20gZmlybXdhcmUKQEAgLTUxMzgsNyArNTEzOCw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlpbnQgcjsKIAotCWRld3RwcmludGsoaW9jLCBwcmludGsoTVBUMlNBU19JTkZPX0ZNVCAiYnJvYWRjYXN0IHByaW1hdGl2ZTogIgorCWRld3RwcmludGsoaW9jLCBwcmludGsoTVBUMlNBU19JTkZPX0ZNVCAiYnJvYWRjYXN0IHByaW1pdGl2ZTogIgogCSAgICAicGh5IG51bWJlciglZCksIHdpZHRoKCVkKVxuIiwgaW9jLT5uYW1lLCBldmVudF9kYXRhLT5QaHlOdW0sCiAJICAgIGV2ZW50X2RhdGEtPlBvcnRXaWR0aCkpOwogCWR0bXByaW50ayhpb2MsIHByaW50ayhNUFQyU0FTX0lORk9fRk1UICIlczogZW50ZXJcbiIsIGlvYy0+bmFtZSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9uY3I1M2M4eHguYyBiL2RyaXZlcnMvc2NzaS9uY3I1M2M4eHguYwppbmRleCA0NmNjMzgyLi44MzVkOGQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvbmNyNTNjOHh4LmMKKysrIGIvZHJpdmVycy9zY3NpL25jcjUzYzh4eC5jCkBAIC0yNjc5LDcgKzI2NzksNyBAQAogfS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTwgUkVTRUxfVEFHID4tLS0tLS0tLS0tLS0tLS0tLS0tKi8sewogCS8qCiAJKioJUmVhZCBJREVOVElGWSArIFNJTVBMRSArIFRBRyB1c2luZyBhIHNpbmdsZSBNT1ZFLgotCSoqCUFncmVzc2l2ZSBvcHRpbWl6YXRpb24sIGlzJ250IGl0PworCSoqCUFnZ3Jlc3NpdmUgb3B0aW1pemF0aW9uLCBpcydudCBpdD8KIAkqKglObyBuZWVkIHRvIHRlc3QgdGhlIFNJTVBMRSBUQUcgbWVzc2FnZSwgc2luY2UgdGhlIAogCSoqCWRyaXZlciBvbmx5IHN1cHBvcnRzIGNvbmZvcm1hbnQgZGV2aWNlcyBmb3IgdGFncy4gOy0pCiAJKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9uc3AzMi5jIGIvZHJpdmVycy9zY3NpL25zcDMyLmMKaW5kZXggNmI4YjAyMS4uZjZhNTBjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL25zcDMyLmMKKysrIGIvZHJpdmVycy9zY3NpL25zcDMyLmMKQEAgLTEyODgsNyArMTI4OCw3IEBACiAJCQluc3AzMl9kYmcoTlNQMzJfREVCVUdfSU5UUiwgIlNTQUNLPTB4JWx4IiwgCiAJCQkJICAgIG5zcDMyX3JlYWQ0KGJhc2UsIFNBVkVEX1NBQ0tfQ05UKSk7CiAKLQkJCXNjc2lfc2V0X3Jlc2lkKFNDcG50LCAwKTsgLyogYWxsIGRhdGEgdHJhbnNmZXJlZCEgKi8KKwkJCXNjc2lfc2V0X3Jlc2lkKFNDcG50LCAwKTsgLyogYWxsIGRhdGEgdHJhbnNmZXJyZWQhICovCiAJCX0KIAogCQkvKgpAQCAtMTYzMCw3ICsxNjMwLDcgQEAKIAogCQkJLyoKIAkJCSAqIElmIFNBVkVEU0FDS0NOVCA9PSAwLCBpdCBtZWFucyBTYXZlZERhdGFQb2ludGVyIGlzCi0JCQkgKiBjb21lIGFmdGVyIGRhdGEgdHJhbnNmZXJpbmcuCisJCQkgKiBjb21lIGFmdGVyIGRhdGEgdHJhbnNmZXJyaW5nLgogCQkJICovCiAJCQlpZiAoc19zYWNrbGVuID4gMCkgewogCQkJCS8qCkBAIC0xNzg1LDcgKzE3ODUsNyBAQAogCQkgICB0aGUgaGVhZCBlbGVtZW50IG9mIHRoZSBzZy4gcmVzdGxlbiBpcyBjb3JyZWN0bHkgY2FsY3VsYXRlZC4gKi8KIAl9CiAKLQkvKiBjYWxjdWxhdGUgdGhlIHJlc3QgbGVuZ3RoIGZvciB0cmFuc2ZlcmluZyAqLworCS8qIGNhbGN1bGF0ZSB0aGUgcmVzdCBsZW5ndGggZm9yIHRyYW5zZmVycmluZyAqLwogCXJlc3RsZW4gPSBzZW50bGVuIC0gc19zYWNrbGVuOwogCiAJLyogdXBkYXRlIGFkanVzdGluZyBjdXJyZW50IFNHIHRhYmxlIGVudHJ5ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvbnNwMzIuaCBiL2RyaXZlcnMvc2NzaS9uc3AzMi5oCmluZGV4IDk1NjVhY2YuLmMwMjIxODIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9uc3AzMi5oCisrKyBiL2RyaXZlcnMvc2NzaS9uc3AzMi5oCkBAIC01MDcsNyArNTA3LDcgQEAKIC8qCiAgKiBTQ1NJIFRBUkdFVC9MVU4gZGVmaW5pdGlvbgogICovCi0jZGVmaW5lIE5TUDMyX0hPU1RfU0NTSUlEICAgIDcgIC8qIFNDU0kgaW5pdGlhdG9yIGlzIGV2ZXJ5dGltZSBkZWZpbmVkIGFzIDcgKi8KKyNkZWZpbmUgTlNQMzJfSE9TVF9TQ1NJSUQgICAgNyAgLyogU0NTSSBpbml0aWF0b3IgaXMgZXZlcnkgdGltZSBkZWZpbmVkIGFzIDcgKi8KICNkZWZpbmUgTUFYX1RBUkdFVAkgICAgIDgKICNkZWZpbmUgTUFYX0xVTgkJICAgICA4CS8qIFhYWDogSW4gU1BJMywgbWF4IG51bWJlciBvZiBMVU4gaXMgNjQuICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9vc3N0LmMgYi9kcml2ZXJzL3Njc2kvb3NzdC5jCmluZGV4IDUyMWUyMTguLjU4ZjViZTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9vc3N0LmMKKysrIGIvZHJpdmVycy9zY3NpL29zc3QuYwpAQCAtMTM2Niw3ICsxMzY2LDcgQEAKIC8qIFRoZSB2YWx1ZXMgYmVsb3cgYXJlIGJhc2VkIG9uIHRoZSBPblN0cmVhbSBmcmFtZSBwYXlsb2FkIHNpemUgb2YgMzJLID09IDIqKjE1LAogICogdGhhdCBpcywgT1NTVF9GUkFNRV9TSElGVCArIE9TU1RfU0VDVE9SX1NISUZUIG11c3QgYmUgMTUuIFdpdGggYSBtaW5pbXVtIGJsb2NrCiAgKiBzaXplIG9mIDUxMiBieXRlcywgd2UgbmVlZCB0byBiZSBhYmxlIHRvIHJlc29sdmUgMzJLLzUxMiA9PSA2NCA9PSAyKio2IHBvc2l0aW9ucwotICogaW5zaWRlIGVhY2ggZnJhbWUuIEZpbmFseSwgT1NTVF9TRUNUT1JfTUFTSyA9PSAyKipPU1NUX0ZSQU1FX1NISUZUIC0gMS4KKyAqIGluc2lkZSBlYWNoIGZyYW1lLiBGaW5hbGx5LCBPU1NUX1NFQ1RPUl9NQVNLID09IDIqKk9TU1RfRlJBTUVfU0hJRlQgLSAxLgogICovCiAjZGVmaW5lIE9TU1RfRlJBTUVfU0hJRlQgIDYKICNkZWZpbmUgT1NTVF9TRUNUT1JfU0hJRlQgOQpAQCAtMzEzMSw3ICszMTMxLDcgQEAKIAkJfQogI2lmIERFQlVHCiAJCWlmIChkZWJ1Z2dpbmcpCi0JCQlwcmludGsoT1NTVF9ERUJfTVNHICIlczpEOiBGbHVzaGluZyAlZCBieXRlcywgVHJhbnNmZXJpbmcgJWQgYnl0ZXMgaW4gJWQgbGJsb2Nrcy5cbiIsCisJCQlwcmludGsoT1NTVF9ERUJfTVNHICIlczpEOiBGbHVzaGluZyAlZCBieXRlcywgVHJhbnNmZXJyaW5nICVkIGJ5dGVzIGluICVkIGxibG9ja3MuXG4iLAogCQkJICAJCQkgbmFtZSwgb2Zmc2V0LCB0cmFuc2ZlciwgYmxrcyk7CiAjZW5kaWYKIApAQCAtMzgxMSw3ICszODExLDcgQEAKIAogCQkJaWYgKHRyYW5zZmVyID09IDApIHsKIAkJCQlwcmludGsoS0VSTl9XQVJOSU5HCi0JCQkJICAiJXM6VzogTm90aGluZyBjYW4gYmUgdHJhbnNmZXJlZCwgcmVxdWVzdGVkICVaZCwgdGFwZSBibG9jayBzaXplICglZCVjKS5cbiIsCisJCQkJICAiJXM6VzogTm90aGluZyBjYW4gYmUgdHJhbnNmZXJyZWQsIHJlcXVlc3RlZCAlWmQsIHRhcGUgYmxvY2sgc2l6ZSAoJWQlYykuXG4iLAogCQkJICAgCQluYW1lLCBjb3VudCwgU1RwLT5ibG9ja19zaXplIDwgMTAyND8KIAkJCQkJU1RwLT5ibG9ja19zaXplOlNUcC0+YmxvY2tfc2l6ZS8xMDI0LAogCQkJCSAgICAgICAJU1RwLT5ibG9ja19zaXplPDEwMjQ/J2InOidrJyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvb3NzdC5oIGIvZHJpdmVycy9zY3NpL29zc3QuaAppbmRleCAxMWQyNmM1Li5iNGZlYTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvb3NzdC5oCisrKyBiL2RyaXZlcnMvc2NzaS9vc3N0LmgKQEAgLTQxMyw3ICs0MTMsNyBAQAogICogQVVYCiAgKi8KIHR5cGVkZWYgc3RydWN0IG9zX2F1eF9zIHsKLSAgICAgICAgX19iZTMyICAgICAgICAgIGZvcm1hdF9pZDsgICAgICAgICAgICAgIC8qIGhhcmR3YXJlIGNvbXBhYmlsaXR5IEFVWCBpcyBiYXNlZCBvbiAqLworICAgICAgICBfX2JlMzIgICAgICAgICAgZm9ybWF0X2lkOyAgICAgICAgICAgICAgLyogaGFyZHdhcmUgY29tcGF0aWJpbGl0eSBBVVggaXMgYmFzZWQgb24gKi8KICAgICAgICAgY2hhciAgICAgICAgICAgIGFwcGxpY2F0aW9uX3NpZ1s0XTsgICAgIC8qIGRyaXZlciB1c2VkIHRvIHdyaXRlIHRoaXMgbWVkaWEgKi8KICAgICAgICAgX19iZTMyICAgICAgICAgIGhkd3I7ICAgICAgICAgICAgICAgICAgIC8qIHJlc2VydmVkICovCiAgICAgICAgIF9fYmUzMiAgICAgICAgICB1cGRhdGVfZnJhbWVfY250cjsgICAgICAvKiBmb3IgY29uZmlndXJhdGlvbiBmcmFtZSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BjbWNpYS9uc3BfY3MuYyBiL2RyaXZlcnMvc2NzaS9wY21jaWEvbnNwX2NzLmMKaW5kZXggYmUzZjMzZC4uNTRiZGY2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BjbWNpYS9uc3BfY3MuYworKysgYi9kcml2ZXJzL3Njc2kvcGNtY2lhL25zcF9jcy5jCkBAIC03NDIsNyArNzQyLDcgQEAKIAogCQlyZXMgPSBuc3BfZmlmb19jb3VudChTQ3BudCkgLSBvY291bnQ7CiAJCS8vbnNwX2RiZyhOU1BfREVCVUdfREFUQV9JTywgInB0cj0weCVwIHRoaXM9MHgleCBvY291bnQ9MHgleCByZXM9MHgleCIsIFNDcG50LT5TQ3AucHRyLCBTQ3BudC0+U0NwLnRoaXNfcmVzaWR1YWwsIG9jb3VudCwgcmVzKTsKLQkJaWYgKHJlcyA9PSAwKSB7IC8qIGlmIHNvbWUgZGF0YSBhdmlsYWJsZSA/ICovCisJCWlmIChyZXMgPT0gMCkgeyAvKiBpZiBzb21lIGRhdGEgYXZhaWxhYmxlID8gKi8KIAkJCWlmIChzdGF0ID09IEJVU1BIQVNFX0RBVEFfSU4pIHsgLyogcGhhc2UgY2hhbmdlZD8gKi8KIAkJCQkvL25zcF9kYmcoTlNQX0RFQlVHX0RBVEFfSU8sICIgd2FpdCBmb3IgZGF0YSB0aGlzPSVkIiwgU0NwbnQtPlNDcC50aGlzX3Jlc2lkdWFsKTsKIAkJCQljb250aW51ZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX2h3aS5jIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMKaW5kZXggMThiNmM1NS4uOGI3ZGIxZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMKKysrIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmMKQEAgLTMzOSw3ICszMzksNyBAQAogCiAvKioKICAqIGJhcjRfc2hpZnQgLSBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gc2hpZnQgQkFSIGJhc2UgYWRkcmVzcwotICogQHBtODAwMV9oYSA6IG91ciBoYmEgY2FyZCBpbmZvbWF0aW9uCisgKiBAcG04MDAxX2hhIDogb3VyIGhiYSBjYXJkIGluZm9ybWF0aW9uCiAgKiBAc2hpZnRWYWx1ZSA6IHNoaWZ0aW5nIHZhbHVlIGluIG1lbW9yeSBiYXIuCiAgKi8KIHN0YXRpYyBpbnQgYmFyNF9zaGlmdChzdHJ1Y3QgcG04MDAxX2hiYV9pbmZvICpwbTgwMDFfaGEsIHUzMiBzaGlmdFZhbHVlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfaHdpLmggYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuaAppbmRleCA4MzNhNTIwLi45MDkxMzIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuaAorKysgYi9kcml2ZXJzL3Njc2kvcG04MDAxL3BtODAwMV9od2kuaApAQCAtMjA5LDcgKzIwOSw3IEBACiAKIC8qCiAgKiBicmllZiB0aGUgZGF0YSBzdHJ1Y3R1cmUgb2YgU0FUQSBDb21wbGV0aW9uIFJlc3BvbnNlCi0gKiB1c2UgdG8gZGlzY3JpYmUgdGhlIHNhdGEgdGFzayByZXNwb25zZSAoNjQgYnl0ZXMpCisgKiB1c2UgdG8gZGVzY3JpYmUgdGhlIHNhdGEgdGFzayByZXNwb25zZSAoNjQgYnl0ZXMpCiAgKi8KIHN0cnVjdCBzYXRhX2NvbXBsZXRpb25fcmVzcCB7CiAJX19sZTMyCXRhZzsKQEAgLTk1MSw3ICs5NTEsNyBAQAogI2RlZmluZSBQQ0lFX0VWRU5UX0lOVEVSUlVQVAkJMHgwMDMwNDQKICNkZWZpbmUgUENJRV9FUlJPUl9JTlRFUlJVUFRfRU5BQkxFCTB4MDAzMDQ4CiAjZGVmaW5lIFBDSUVfRVJST1JfSU5URVJSVVBUCQkweDAwMzA0QwotLyogc2lnbmF0dXJlIGRlZmludGlvbiBmb3IgaG9zdCBzY3JhdGNoIHBhZDAgcmVnaXN0ZXIgKi8KKy8qIHNpZ25hdHVyZSBkZWZpbml0aW9uIGZvciBob3N0IHNjcmF0Y2ggcGFkMCByZWdpc3RlciAqLwogI2RlZmluZSBTUENfU09GVF9SRVNFVF9TSUdOQVRVUkUJMHgyNTJhY2JjZAogLyogU2lnbmF0dXJlIGZvciBTb2Z0IFJlc2V0ICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbTgwMDEvcG04MDAxX3Nhcy5oIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmgKaW5kZXggYmRiNmIyNy4uYWEwNWU2NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmgKKysrIGIvZHJpdmVycy9zY3NpL3BtODAwMS9wbTgwMDFfc2FzLmgKQEAgLTQ0NSw3ICs0NDUsNyBAQAogc3RydWN0IGZ3X2NvbnRyb2xfZXggewogCXN0cnVjdCBmd19jb250cm9sX2luZm8gKmZ3X2NvbnRyb2w7CiAJdm9pZAkJCSpidWZmZXI7Lyoga2VlcCBidWZmZXIgcG9pbnRlciB0byBiZQotCWZyZWVkIHdoZW4gdGhlIHJlc3BvbmNlIGNvbWVzKi8KKwlmcmVlZCB3aGVuIHRoZSByZXNwb25zZSBjb21lcyovCiAJdm9pZAkJCSp2aXJ0QWRkcjsvKiBrZWVwIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgZGF0YSAqLwogCXZvaWQJCQkqdXNyQWRkcjsvKiBrZWVwIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUKIAl1c2VyIGRhdGEgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmMgYi9kcml2ZXJzL3Njc2kvcG1jcmFpZC5jCmluZGV4IGJjZjg1OGUuLjk2ZDVhZDAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmMKKysrIGIvZHJpdmVycy9zY3NpL3BtY3JhaWQuYwpAQCAtMjEzLDcgKzIxMyw3IEBACiAgKiBwbWNyYWlkX3NsYXZlX2NvbmZpZ3VyZSAtIENvbmZpZ3VyZXMgYSBTQ1NJIGRldmljZQogICogQHNjc2lfZGV2OiBzY3NpIGRldmljZSBzdHJ1Y3QKICAqCi0gKiBUaGlzIGZ1Y250aW9uIGlzIGV4ZWN1dGVkIGJ5IFNDU0kgbWlkIGxheWVyIGp1c3QgYWZ0ZXIgYSBkZXZpY2UgaXMgZmlyc3QKKyAqIFRoaXMgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYnkgU0NTSSBtaWQgbGF5ZXIganVzdCBhZnRlciBhIGRldmljZSBpcyBmaXJzdAogICogc2Nhbm5lZCAoaS5lLiBpdCBoYXMgcmVzcG9uZGVkIHRvIGFuIElOUVVJUlkpLiBGb3IgVlNFVCByZXNvdXJjZXMsIHRoZQogICogdGltZW91dCB2YWx1ZSAoZGVmYXVsdCAzMHMpIHdpbGwgYmUgb3Zlci13cml0dGVuIHRvIGEgaGlnaGVyIHZhbHVlICg2MHMpCiAgKiBhbmQgbWF4X3NlY3RvcnMgdmFsdWUgd2lsbCBiZSBvdmVyLXdyaXR0ZW4gdG8gNTEyLiBJdCBhbHNvIHNldHMgcXVldWUgZGVwdGgKQEAgLTIxMjIsNyArMjEyMiw3IEBACiAgKgogICogVGhpcyBmdW5jdGlvbiBleGVjdXRlcyBtb3N0IG9mIHRoZSBzdGVwcyByZXF1aXJlZCBmb3IgSU9BIHJlc2V0LiBUaGlzIGdldHMKICAqIGNhbGxlZCBieSB1c2VyIHRocmVhZHMgKG1vZHByb2JlL2luc21vZC9ybW1vZCkgdGltZXIsIHRhc2tsZXQgYW5kIG1pZGxheWVyJ3MKLSAqICdlaF8nIHRocmVhZC4gQWNjZXNzIHRvIHZhcmlhYmxlcyB1c2VkIGZvciBjb250cm9saW5nIHRoZSByZXNldCBzZXF1ZW5jZSBpcworICogJ2VoXycgdGhyZWFkLiBBY2Nlc3MgdG8gdmFyaWFibGVzIHVzZWQgZm9yIGNvbnRyb2xsaW5nIHRoZSByZXNldCBzZXF1ZW5jZSBpcwogICogc3luY2hyb25pemVkIHVzaW5nIGhvc3QgbG9jay4gVmFyaW91cyBmdW5jdGlvbnMgY2FsbGVkIGR1cmluZyByZXNldCBwcm9jZXNzCiAgKiB3b3VsZCBtYWtlIHVzZSBvZiBhIHNpbmdsZSBjb21tYW5kIGJsb2NrLCBwb2ludGVyIHRvIHdoaWNoIGlzIGFsc28gc3RvcmVkIGluCiAgKiBhZGFwdGVyIGluc3RhbmNlIHN0cnVjdHVyZS4KQEAgLTI5OTQsNyArMjk5NCw3IEBACiAKIAkvKiBJZiB0aGUgYWJvcnQgdGFzayBpcyBub3QgdGltZWQgb3V0IHdlIHdpbGwgZ2V0IGEgR29vZCBjb21wbGV0aW9uCiAJICogYXMgc2Vuc2Vfa2V5LCBvdGhlcndpc2Ugd2UgbWF5IGdldCBvbmUgdGhlIGZvbGxvd2luZyByZXNwb25zZXMKLQkgKiBkdWUgdG8gc3Vic3F1ZW50IGJ1cyByZXNldCBvciBkZXZpY2UgcmVzZXQuIEluIGNhc2UgSU9BU0MgaXMKKwkgKiBkdWUgdG8gc3Vic2VxdWVudCBidXMgcmVzZXQgb3IgZGV2aWNlIHJlc2V0LiBJbiBjYXNlIElPQVNDIGlzCiAJICogTlJfU1lOQ19SRVFVSVJFRCwgc2V0IHN5bmNfcmVxZCBmbGFnIGZvciB0aGUgY29ycmVzcG9uZGluZyByZXNvdXJjZQogCSAqLwogCWlmIChpb2FzYyA9PSBQTUNSQUlEX0lPQVNDX1VBX0JVU19XQVNfUkVTRVQgfHwKQEAgLTM5MzMsNyArMzkzMyw3IEBACiAKIAkJCS8qIGlmIGFib3J0IHRhc2sgY291bGRuJ3QgZmluZCB0aGUgY29tbWFuZCBpLmUgaXQgZ290CiAJCQkgKiBjb21wbGV0ZWQgcHJpb3IgdG8gYWJvcnRpbmcsIHJldHVybiBnb29kIGNvbXBsZXRpb24uCi0JCQkgKiBpZiBjb21tYW5kIGdvdCBhYm9ydGVkIHN1Y2Nlc2Z1bGx5IG9yIHRoZXJlIHdhcyBJT0EKKwkJCSAqIGlmIGNvbW1hbmQgZ290IGFib3J0ZWQgc3VjY2Vzc2Z1bGx5IG9yIHRoZXJlIHdhcyBJT0EKIAkJCSAqIHJlc2V0IGR1ZSB0byBhYm9ydCB0YXNrIGl0c2VsZiBnZXR0aW5nIHRpbWVkb3V0IHRoZW4KIAkJCSAqIHJldHVybiAtRVRJTUVET1VUCiAJCQkgKi8KQEAgLTU5MzIsNyArNTkzMiw3IEBACiAJICogSG93ZXZlciwgZmlybXdhcmUgc3VwcG9ydHMgNjQtYml0IHN0cmVhbWluZyBETUEgYnVmZmVycywgd2hlcmVhcwogCSAqIGNvaGVyZW50IGJ1ZmZlcnMgYXJlIHRvIGJlIDMyLWJpdC4gU2luY2UgcGNpX2FsbG9jX2NvbnNpc3RlbnQgYWx3YXlzCiAJICogcmV0dXJucyBtZW1vcnkgd2l0aGluIDRHQiAoaWYgbm90LCBjaGFuZ2UgdGhpcyBsb2dpYyksIGNvaGVyZW50Ci0JICogYnVmZmVycyBhcmUgd2l0aGluIGZpcm13YXJlIGFjY2VwdGlibGUgYWRkcmVzcyByYW5nZXMuCisJICogYnVmZmVycyBhcmUgd2l0aGluIGZpcm13YXJlIGFjY2VwdGFibGUgYWRkcmVzcyByYW5nZXMuCiAJICovCiAJaWYgKChzaXplb2YoZG1hX2FkZHJfdCkgPT0gNCkgfHwKIAkgICAgcGNpX3NldF9kbWFfbWFzayhwZGV2LCBETUFfQklUX01BU0soNjQpKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmggYi9kcml2ZXJzL3Njc2kvcG1jcmFpZC5oCmluZGV4IDRkYjIxMGQuLjM0ZTRjOTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9wbWNyYWlkLmgKKysrIGIvZHJpdmVycy9zY3NpL3BtY3JhaWQuaApAQCAtMTAyNCw3ICsxMDI0LDcgQEAKIAogCiAvKgotICogcG1jcmFpZF9pb2N0bF9oZWFkZXIgLSBkZWZpbml0aW9uIG9mIGhlYWRlciBzdHJ1Y3R1cmUgdGhhdCBwcmVjZWVkcyBhbGwgdGhlCisgKiBwbWNyYWlkX2lvY3RsX2hlYWRlciAtIGRlZmluaXRpb24gb2YgaGVhZGVyIHN0cnVjdHVyZSB0aGF0IHByZWNlZGVzIGFsbCB0aGUKICAqIGJ1ZmZlcnMgZ2l2ZW4gYXMgaW9jdGwgYXJndW1lbnRzLgogICoKICAqIC5zaWduYXR1cmUgICAgICAgICAgIDogYWx3YXlzIEFTQ0lJIHN0cmluZywgIlBNQ1JBSUQiCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMTI4MC5jIGIvZHJpdmVycy9zY3NpL3FsYTEyODAuYwppbmRleCA1ZGVjNjg0Li44YmE1NzQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMTI4MC5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGExMjgwLmMKQEAgLTc4LDcgKzc4LDcgQEAKIAktIENsZWFuIHVwIHZjaGFuIGhhbmRsaW5nCiAgICAgUmV2ICAzLjIzLjMzIEp1bHkgMywgMjAwMywgSmVzIFNvcmVuc2VuCiAJLSBEb24ndCBkZWZpbmUgcmVnaXN0ZXIgYWNjZXNzIG1hY3JvcyBiZWZvcmUgZGVmaW5lIGRldGVybWluaW5nIE1NSU8uCi0JICBUaGlzIGp1c3QgaGFwcGVuZCB0byB3b3JrIG91dCBvbiBpYTY0IGJ1dCBub3QgZWxzZXdoZXJlLgorCSAgVGhpcyBqdXN0IGhhcHBlbmVkIHRvIHdvcmsgb3V0IG9uIGlhNjQgYnV0IG5vdCBlbHNld2hlcmUuCiAJLSBEb24ndCB0cnkgYW5kIHJlYWQgZnJvbSB0aGUgY2FyZCB3aGlsZSBpdCBpcyBpbiByZXNldCBhcwogCSAgaXQgd29uJ3QgcmVzcG9uZCBhbmQgY2F1c2VzIGFuIE1DQQogICAgIFJldiAgMy4yMy4zMiBKdW5lIDIzLCAyMDAzLCBKZXMgU29yZW5zZW4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kZWYuaCBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9kZWYuaAppbmRleCA2YzUxYzBhLi5lZTIwMzUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfZGVmLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2RlZi5oCkBAIC0yMDg2LDcgKzIwODYsNyBAQAogfTsKIAogLyoKLSAqIFNOUyBjb21tYW5kIHN0cnVjdHVyZXMgLS0gZm9yIDIyMDAgY29tcGF0YWJpbGl0eS4KKyAqIFNOUyBjb21tYW5kIHN0cnVjdHVyZXMgLS0gZm9yIDIyMDAgY29tcGF0aWJpbGl0eS4KICAqLwogI2RlZmluZQlSRlRfSURfU05TX1NDTURfTEVOCTIyCiAjZGVmaW5lCVJGVF9JRF9TTlNfQ01EX1NJWkUJNjAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9mdy5oIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2Z3LmgKaW5kZXggNjMxZmVmYy4uZjViYTA5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2Z3LmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2Z3LmgKQEAgLTUzOSw3ICs1MzksNyBAQAogCSAqIElmIERJRiBFcnJvciBpcyBzZXQgaW4gY29tcF9zdGF0dXMsIHRoZXNlIGFkZGl0aW9uYWwgZmllbGRzIGFyZQogCSAqIGRlZmluZWQ6CiAJICogJmRhdGFbMTBdIDogdWludDhfdCByZXBvcnRfcnVudF9iZ1syXTsJLSBjb21wdXRlZCBndWFyZAotCSAqICZkYXRhWzEyXSA6IHVpbnQ4X3QgYWN0dWFsX2RpZls4XTsJCS0gRElGIERhdGEgcmVjaWV2ZWQKKwkgKiAmZGF0YVsxMl0gOiB1aW50OF90IGFjdHVhbF9kaWZbOF07CQktIERJRiBEYXRhIHJlY2VpdmVkCiAJICogJmRhdGFbMjBdIDogdWludDhfdCBleHBlY3RlZF9kaWZbOF07CQktIERJRiBEYXRhIGNvbXB1dGVkCiAJKi8KIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaXNyLmMgYi9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfaXNyLmMKaW5kZXggZDE3ZWQ5YS4uNzEyNTE4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX2lzci5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9pc3IuYwpAQCAtNDE0LDcgKzQxNCw3IEBACiAJCQkJICAgICJtYXJrZWQgT0ZGTElORSFcbiIpOwogCQkJCXZoYS0+ZmxhZ3Mub25saW5lID0gMDsKIAkJCX0gZWxzZSB7Ci0JCQkJLyogQ2hlY2sgdG8gc2VlIGlmIE1QSSB0aW1lb3V0IG9jY3VyZWQgKi8KKwkJCQkvKiBDaGVjayB0byBzZWUgaWYgTVBJIHRpbWVvdXQgb2NjdXJyZWQgKi8KIAkJCQlpZiAoKG1ieCAmIE1CWF8zKSAmJiAoaGEtPmZsYWdzLnBvcnQwKSkKIAkJCQkJc2V0X2JpdChNUElfUkVTRVRfTkVFREVELAogCQkJCQkgICAgJnZoYS0+ZHBjX2ZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9tYnguYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9tYnguYwppbmRleCA3YTdjMGVjLi4zNDg5MzM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbWJ4LmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTJ4eHgvcWxhX21ieC5jCkBAIC0zMDMsNyArMzAzLDcgQEAKIAkJCSAgICAhdGVzdF9iaXQoSVNQX0FCT1JUX1JFVFJZLCAmdmhhLT5kcGNfZmxhZ3MpKSB7CiAKIAkJCQlxbGFfcHJpbnRrKEtFUk5fV0FSTklORywgaGEsCi0JCQkJICAgICJNYWlsYm94IGNvbW1hbmQgdGltZW91dCBvY2N1cmVkLiAiCisJCQkJICAgICJNYWlsYm94IGNvbW1hbmQgdGltZW91dCBvY2N1cnJlZC4gIgogCQkJCSAgICAiU2NoZWR1bGluZyBJU1AgIiAiYWJvcnQuIGVlaF9idXN5OiAweCV4XG4iLAogCQkJCSAgICBoYS0+ZmxhZ3MuZWVoX2J1c3kpOwogCQkJCXNldF9iaXQoSVNQX0FCT1JUX05FRURFRCwgJnZoYS0+ZHBjX2ZsYWdzKTsKQEAgLTMyMSw3ICszMjEsNyBAQAogCQkJICAgICF0ZXN0X2JpdChJU1BfQUJPUlRfUkVUUlksICZ2aGEtPmRwY19mbGFncykpIHsKIAogCQkJCXFsYV9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwKLQkJCQkgICAgIk1haWxib3ggY29tbWFuZCB0aW1lb3V0IG9jY3VyZWQuICIKKwkJCQkgICAgIk1haWxib3ggY29tbWFuZCB0aW1lb3V0IG9jY3VycmVkLiAiCiAJCQkJICAgICJJc3N1aW5nIElTUCBhYm9ydC5cbiIpOwogCiAJCQkJc2V0X2JpdChBQk9SVF9JU1BfQUNUSVZFLCAmdmhhLT5kcGNfZmxhZ3MpOwpAQCAtMzc4OSw3ICszNzg5LDcgQEAKIAltY3AtPm1iWzIwXSA9IExTVyhNU0QobXJlcS0+c2VuZF9kbWEpKTsKIAltY3AtPm1iWzIxXSA9IE1TVyhNU0QobXJlcS0+c2VuZF9kbWEpKTsKIAotCS8qIHJlY2lldmUgZGF0YSBhZGRyZXNzICovCisJLyogcmVjZWl2ZSBkYXRhIGFkZHJlc3MgKi8KIAltY3AtPm1iWzE2XSA9IExTVyhtcmVxLT5yY3ZfZG1hKTsKIAltY3AtPm1iWzE3XSA9IE1TVyhtcmVxLT5yY3ZfZG1hKTsKIAltY3AtPm1iWzZdID0gTFNXKE1TRChtcmVxLT5yY3ZfZG1hKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfbnguYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9ueC5jCmluZGV4IDc2ZWM4NzYuLjQ1NWZlMTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9ueC5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9ueC5jCkBAIC0yNTk4LDcgKzI1OTgsNyBAQAogICogcWxhODJ4eF9zdGFydF9zY3NpKCkgLSBTZW5kIGEgU0NTSSBjb21tYW5kIHRvIHRoZSBJU1AKICAqIEBzcDogY29tbWFuZCB0byBzZW5kIHRvIHRoZSBJU1AKICAqCi0gKiBSZXR1cm5zIG5vbi16ZXJvIGlmIGEgZmFpbHVyZSBvY2N1cmVkLCBlbHNlIHplcm8uCisgKiBSZXR1cm5zIG5vbi16ZXJvIGlmIGEgZmFpbHVyZSBvY2N1cnJlZCwgZWxzZSB6ZXJvLgogICovCiBpbnQKIHFsYTgyeHhfc3RhcnRfc2NzaShzcmJfdCAqc3ApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhMnh4eC9xbGFfb3MuYyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCmluZGV4IDc1YTk2NmMuLmFhNzc0NzUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGEyeHh4L3FsYV9vcy5jCkBAIC0xMDQ2LDcgKzEwNDYsNyBAQAogCiBlaF9idXNfcmVzZXRfZG9uZToKIAlxbGFfcHJpbnRrKEtFUk5fSU5GTywgdmhhLT5odywgIiVzOiByZXNldCAlc1xuIiwgX19mdW5jX18sCi0JICAgIChyZXQgPT0gRkFJTEVEKSA/ICJmYWlsZWQiIDogInN1Y2NlZGVkIik7CisJICAgIChyZXQgPT0gRkFJTEVEKSA/ICJmYWlsZWQiIDogInN1Y2NlZWRlZCIpOwogCiAJcmV0dXJuIHJldDsKIH0KQEAgLTExMzYsNyArMTEzNiw3IEBACiAKIGVoX2hvc3RfcmVzZXRfbG9jazoKIAlxbGFfcHJpbnRrKEtFUk5fSU5GTywgaGEsICIlczogcmVzZXQgJXNcbiIsIF9fZnVuY19fLAotCSAgICAocmV0ID09IEZBSUxFRCkgPyAiZmFpbGVkIiA6ICJzdWNjZWRlZCIpOworCSAgICAocmV0ID09IEZBSUxFRCkgPyAiZmFpbGVkIiA6ICJzdWNjZWVkZWQiKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0zOTAyLDcgKzM5MDIsNyBAQAogCQkJY29udGludWU7CiAJCWlmIChhdG9taWNfcmVhZCgmb3RoZXJfcGRldi0+ZW5hYmxlX2NudCkpIHsKIAkJCURFQlVHMTcocWxhX3ByaW50ayhLRVJOX0lORk8sIGhhLAotCQkJICAgICJGb3VuZCBQQ0kgZnVuYyBhdmFpbGFiZSBhbmQgZW5hYmxlZCBhdCAweCV4XG4iLAorCQkJICAgICJGb3VuZCBQQ0kgZnVuYyBhdmFpbGFibGUgYW5kIGVuYWJsZWQgYXQgMHgleFxuIiwKIAkJCSAgICBmbikpOwogCQkJcGNpX2Rldl9wdXQob3RoZXJfcGRldik7CiAJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9kZWYuaCBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9kZWYuaAppbmRleCBjMWY4ZDFiLi40NzU3ODc4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfZGVmLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2RlZi5oCkBAIC0xODIsNyArMTgyLDcgQEAKIAl1aW50MTZfdCBmbGFnczsJCS8qICgxKSBTdGF0dXMgZmxhZ3MuICovCiAKICNkZWZpbmUgU1JCX0RNQV9WQUxJRAkJQklUXzMJLyogRE1BIEJ1ZmZlciBtYXBwZWQuICovCi0jZGVmaW5lIFNSQl9HT1RfU0VOU0UJCUJJVF80CS8qIHNlbnNlIGRhdGEgcmVjaWV2ZWQuICovCisjZGVmaW5lIFNSQl9HT1RfU0VOU0UJCUJJVF80CS8qIHNlbnNlIGRhdGEgcmVjZWl2ZWQuICovCiAJdWludDhfdCBzdGF0ZTsJCS8qICgxKSBTdGF0dXMgZmxhZ3MuICovCiAKICNkZWZpbmUgU1JCX05PX1FVRVVFX1NUQVRFCSAwCS8qIFJlcXVlc3QgaXMgaW4gYmV0d2VlbiBzdGF0ZXMgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pbml0LmMgYi9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfaW5pdC5jCmluZGV4IGJiYjJlOTAuLjQ4ZTIyNDEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9pbml0LmMKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X2luaXQuYwpAQCAtMTMzOCw3ICsxMzM4LDcgQEAKIAl9CiAKIAlERUJVRzIocHJpbnRrKCJzY3NpJWxkOiBpbml0aWFsaXplIGFkYXB0ZXI6ICVzXG4iLCBoYS0+aG9zdF9ubywKLQkgICAgc3RhdHVzID09IFFMQV9FUlJPUiA/ICJGQUlMRUQiIDogIlNVQ0NFREVEIikpOworCSAgICBzdGF0dXMgPT0gUUxBX0VSUk9SID8gIkZBSUxFRCIgOiAiU1VDQ0VFREVEIikpOwogCXJldHVybiBzdGF0dXM7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9udnJhbS5oIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X252cmFtLmgKaW5kZXggYjM4MzFiZC4uOTQ1Y2MzMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X252cmFtLmgKKysrIGIvZHJpdmVycy9zY3NpL3FsYTR4eHgvcWw0X252cmFtLmgKQEAgLTI4LDcgKzI4LDcgQEAKICNkZWZpbmUJIEZNOTNDNTZBX0VSQVNFCSAgICAgIDB4MwogI2RlZmluZQkgRk05M0M1NkFfRVJBU0VfQUxMICAgMHgwCiAKLS8qIENvbW1hbmQgRXh0ZW50aW9ucyAqLworLyogQ29tbWFuZCBFeHRlbnNpb25zICovCiAjZGVmaW5lCSBGTTkzQzU2QV9XRU5fRVhUCSAweDMKICNkZWZpbmUJIEZNOTNDNTZBX1dSSVRFX0FMTF9FWFQJIDB4MQogI2RlZmluZQkgRk05M0M1NkFfV0RTX0VYVAkgMHgwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvcWxhNHh4eC9xbDRfb3MuYyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCmluZGV4IGE0YWNiMGQuLjIzMGJhMDkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCisrKyBiL2RyaXZlcnMvc2NzaS9xbGE0eHh4L3FsNF9vcy5jCkBAIC0xMjEzLDcgKzEyMTMsNyBAQAogCiAJY2xlYXJfYml0KERQQ19SRVNFVF9BQ1RJVkUsICZoYS0+ZHBjX2ZsYWdzKTsKIAlERUJVRzIocHJpbnRrKCJzY3NpJWxkOiByZWNvdmVyIGFkYXB0ZXI6ICVzXG4iLCBoYS0+aG9zdF9ubywKLQkgICAgc3RhdHVzID09IFFMQV9FUlJPUiA/ICJGQUlMRUQiIDogIlNVQ0NFREVEIikpOworCSAgICBzdGF0dXMgPT0gUUxBX0VSUk9SID8gIkZBSUxFRCIgOiAiU1VDQ0VFREVEIikpOwogCiAJcmV0dXJuIHN0YXR1czsKIH0KQEAgLTIxMTAsNyArMjExMCw3IEBACiAKIAlxbDRfcHJpbnRrKEtFUk5fSU5GTywgaGEsCiAJICAgICJzY3NpJWxkOiVkOiVkOiBBYm9ydCBjb21tYW5kIC0gJXNcbiIsCi0JICAgIGhhLT5ob3N0X25vLCBpZCwgbHVuLCAocmV0ID09IFNVQ0NFU1MpID8gInN1Y2NlZGVkIiA6ICJmYWlsZWQiKTsKKwkgICAgaGEtPmhvc3Rfbm8sIGlkLCBsdW4sIChyZXQgPT0gU1VDQ0VTUykgPyAic3VjY2VlZGVkIiA6ICJmYWlsZWQiKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0yMjc4LDcgKzIyNzgsNyBAQAogCQlyZXR1cm5fc3RhdHVzID0gU1VDQ0VTUzsKIAogCXFsNF9wcmludGsoS0VSTl9JTkZPLCBoYSwgIkhPU1QgUkVTRVQgJXMuXG4iLAotCQkgICByZXR1cm5fc3RhdHVzID09IEZBSUxFRCA/ICJGQUlMRUQiIDogIlNVQ0NFREVEIik7CisJCSAgIHJldHVybl9zdGF0dXMgPT0gRkFJTEVEID8gIkZBSUxFRCIgOiAiU1VDQ0VFREVEIik7CiAKIAlyZXR1cm4gcmV0dXJuX3N0YXR1czsKIH0KQEAgLTI0OTIsNyArMjQ5Miw3IEBACiAJLyogSW5pdGlhbGl6ZSBkZXZpY2Ugb3IgcmVzdW1lIGlmIGluIHN1c3BlbmRlZCBzdGF0ZSAqLwogCXJjID0gcGNpX2VuYWJsZV9kZXZpY2UocGRldik7CiAJaWYgKHJjKSB7Ci0JCXFsNF9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwgInNjc2klbGQ6ICVzOiBDYW50IHJlLWVuYWJsZSAiCisJCXFsNF9wcmludGsoS0VSTl9XQVJOSU5HLCBoYSwgInNjc2klbGQ6ICVzOiBDYW4ndCByZS1lbmFibGUgIgogCQkgICAgImRldmljZSBhZnRlciByZXNldFxuIiwgaGEtPmhvc3Rfbm8sIF9fZnVuY19fKTsKIAkJZ290byBleGl0X3Nsb3RfcmVzZXQ7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX2RlYnVnLmMKaW5kZXggZmE1NzU4Yy4uNjg4OGIyYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfZGVidWcuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV9kZWJ1Zy5jCkBAIC0yNDU0LDcgKzI0NTQsNyBAQAogCQlwcmludGsoS0VSTl9JTkZPICJzY3NpX2RlYnVnOiBzbGF2ZV9kZXN0cm95IDwldSAldSAldSAldT5cbiIsCiAJCSAgICAgICBzZHAtPmhvc3QtPmhvc3Rfbm8sIHNkcC0+Y2hhbm5lbCwgc2RwLT5pZCwgc2RwLT5sdW4pOwogCWlmIChkZXZpcCkgewotCQkvKiBtYWtlIHRoaXMgc2xvdCBhdmFsaWFibGUgZm9yIHJlLXVzZSAqLworCQkvKiBtYWtlIHRoaXMgc2xvdCBhdmFpbGFibGUgZm9yIHJlLXVzZSAqLwogCQlkZXZpcC0+dXNlZCA9IDA7CiAJCXNkcC0+aG9zdGRhdGEgPSBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX25ldGxpbmsuYyBiL2RyaXZlcnMvc2NzaS9zY3NpX25ldGxpbmsuYwppbmRleCBhMmVkMjAxLi4yNmE4YTQ1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc2NzaV9uZXRsaW5rLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfbmV0bGluay5jCkBAIC00OTksNyArNDk5LDcgQEAKIAkJCQlTQ1NJX05MX0dSUF9DTlQsIHNjc2lfbmxfcmN2X21zZywgTlVMTCwKIAkJCQlUSElTX01PRFVMRSk7CiAJaWYgKCFzY3NpX25sX3NvY2spIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogcmVnaXN0ZXIgb2YgcmVjaWV2ZSBoYW5kbGVyIGZhaWxlZFxuIiwKKwkJcHJpbnRrKEtFUk5fRVJSICIlczogcmVnaXN0ZXIgb2YgcmVjZWl2ZSBoYW5kbGVyIGZhaWxlZFxuIiwKIAkJCQlfX2Z1bmNfXyk7CiAJCW5ldGxpbmtfdW5yZWdpc3Rlcl9ub3RpZmllcigmc2NzaV9uZXRsaW5rX25vdGlmaWVyKTsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3Njc2lfdGd0X2xpYi5jIGIvZHJpdmVycy9zY3NpL3Njc2lfdGd0X2xpYi5jCmluZGV4IGY2NzI4MjAuLjhiY2E4YzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zY3NpX3RndF9saWIuYworKysgYi9kcml2ZXJzL3Njc2kvc2NzaV90Z3RfbGliLmMKQEAgLTkzLDcgKzkzLDcgQEAKIAogCS8qCiAJICogVGhlIGJsayBoZWxwZXJzIGFyZSB1c2VkIHRvIHRoZSBSRUFEL1dSSVRFIHJlcXVlc3RzCi0JICogdHJhbnNmZXJpbmcgZGF0YSBmcm9tIGEgaW5pdGlhdG9yIHBvaW50IG9mIHZpZXcuIFNpbmNlCisJICogdHJhbnNmZXJyaW5nIGRhdGEgZnJvbSBhIGluaXRpYXRvciBwb2ludCBvZiB2aWV3LiBTaW5jZQogCSAqIHdlIGFyZSBpbiB0YXJnZXQgbW9kZSB3ZSB3YW50IHRoZSBvcHBvc2l0ZS4KIAkgKi8KIAlycSA9IGJsa19nZXRfcmVxdWVzdChzaG9zdC0+dXNwYWNlX3JlcV9xLCAhd3JpdGUsIGdmcF9tYXNrKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zY3NpX3RyYW5zcG9ydF9mYy5jIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKaW5kZXggMjk0MWQyZC4uZmRmM2ZhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKKysrIGIvZHJpdmVycy9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmMKQEAgLTIzNzgsNyArMjM3OCw3IEBACiAgKiBmY19yZW1vdmVfaG9zdCAtIGNhbGxlZCB0byB0ZXJtaW5hdGUgYW55IGZjX3RyYW5zcG9ydC1yZWxhdGVkIGVsZW1lbnRzIGZvciBhIHNjc2kgaG9zdC4KICAqIEBzaG9zdDoJV2hpY2ggJlNjc2lfSG9zdAogICoKLSAqIFRoaXMgcm91dGluZSBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgcHJlY2VlZGluZyB0aGUKKyAqIFRoaXMgcm91dGluZSBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoZQogICogYSBkcml2ZXIncyBjYWxsIHRvIHNjc2lfcmVtb3ZlX2hvc3QoKS4KICAqCiAgKiBXQVJOSU5HOiBBIGRyaXZlciB1dGlsaXppbmcgdGhlIGZjX3RyYW5zcG9ydCwgd2hpY2ggZmFpbHMgdG8gY2FsbApAQCAtMjQ1OCw3ICsyNDU4LDcgQEAKIH0KIAogLyoqCi0gKiBmY19zdGFyZ2V0X2RlbGV0ZSAtIGNhbGxlZCB0byBkZWxldGUgdGhlIHNjc2kgZGVjZW5kZW50cyBvZiBhbiBycG9ydAorICogZmNfc3RhcmdldF9kZWxldGUgLSBjYWxsZWQgdG8gZGVsZXRlIHRoZSBzY3NpIGRlc2NlbmRhbnRzIG9mIGFuIHJwb3J0CiAgKiBAd29yazoJcmVtb3RlIHBvcnQgdG8gYmUgb3BlcmF0ZWQgb24uCiAgKgogICogRGVsZXRlcyB0YXJnZXQgYW5kIGFsbCBzZGV2cy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zZC5jIGIvZHJpdmVycy9zY3NpL3NkLmMKaW5kZXggYjYxZWJlYy4uYmQwODA2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NkLmMKKysrIGIvZHJpdmVycy9zY3NpL3NkLmMKQEAgLTEwNTUsNyArMTA1NSw3IEBACiAgKglAYXJnOiB0aGlzIGlzIHRoaXJkIGFyZ3VtZW50IGdpdmVuIHRvIGlvY3RsKDIpIHN5c3RlbSBjYWxsLgogICoJT2Z0ZW4gY29udGFpbnMgYSBwb2ludGVyLgogICoKLSAqCVJldHVybnMgMCBpZiBzdWNjZXNzZnVsIChzb21lIGlvY3RscyByZXR1cm4gcG9zdGl2ZSBudW1iZXJzIG9uCisgKglSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bCAoc29tZSBpb2N0bHMgcmV0dXJuIHBvc2l0aXZlIG51bWJlcnMgb24KICAqCXN1Y2Nlc3MgYXMgd2VsbCkuIFJldHVybnMgYSBuZWdhdGVkIGVycm5vIHZhbHVlIGluIGNhc2Ugb2YgZXJyb3IuCiAgKgogICoJTm90ZTogbW9zdCBpb2N0bHMgYXJlIGZvcndhcmQgb250byB0aGUgYmxvY2sgc3Vic3lzdGVtIG9yIGZ1cnRoZXIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zci5jIGIvZHJpdmVycy9zY3NpL3NyLmMKaW5kZXggYWVmYWRjNi4uOTUwMTljNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zY3NpL3NyLmMKKysrIGIvZHJpdmVycy9zY3NpL3NyLmMKQEAgLTU2Nyw3ICs1NjcsNyBAQAogCS5yZXZhbGlkYXRlX2Rpc2sgPSBzcl9ibG9ja19yZXZhbGlkYXRlX2Rpc2ssCiAJLyogCiAJICogTm8gY29tcGF0X2lvY3RsIGZvciBub3cgYmVjYXVzZSBzcl9ibG9ja19pb2N0bCBuZXZlcgotCSAqIHNlZW1zIHRvIHBhc3MgYXJiaXRhcnkgaW9jdGxzIGRvd24gdG8gaG9zdCBkcml2ZXJzLgorCSAqIHNlZW1zIHRvIHBhc3MgYXJiaXRyYXJ5IGlvY3RscyBkb3duIHRvIGhvc3QgZHJpdmVycy4KIAkgKi8KIH07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zdW4zX05DUjUzODAuYyBiL2RyaXZlcnMvc2NzaS9zdW4zX05DUjUzODAuYwppbmRleCA0ZjBlNTQ4Li4wN2VhZWYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3VuM19OQ1I1MzgwLmMKKysrIGIvZHJpdmVycy9zY3NpL3N1bjNfTkNSNTM4MC5jCkBAIC00NjcsNyArNDY3LDcgQEAKICAqCiAgKiBQYXJhbWV0ZXJzOiBzdHJ1Y3Qgc2NzaV9jbW5kICpjbWQKICAqICAgIFRoZSBjb21tYW5kIHRvIHdvcmsgb24uIFRoZSBmaXJzdCBzY2F0dGVyIGJ1ZmZlcidzIGRhdGEgYXJlCi0gKiAgICBhc3N1bWVkIHRvIGJlIGFscmVhZHkgdHJhbnNmZXJlZCBpbnRvIHB0ci90aGlzX3Jlc2lkdWFsLgorICogICAgYXNzdW1lZCB0byBiZSBhbHJlYWR5IHRyYW5zZmVycmVkIGludG8gcHRyL3RoaXNfcmVzaWR1YWwuCiAgKi8KIAogc3RhdGljIHZvaWQgbWVyZ2VfY29udGlndW91c19idWZmZXJzKHN0cnVjdCBzY3NpX2NtbmQgKmNtZCkKQEAgLTE3MTcsNyArMTcxNyw3IEBACiAgKglieXRlcyB0byB0cmFuc2ZlciwgKipkYXRhIC0gcG9pbnRlciB0byBkYXRhIHBvaW50ZXIuCiAgKiAKICAqIFJldHVybnMgOiAtMSB3aGVuIGRpZmZlcmVudCBwaGFzZSBpcyBlbnRlcmVkIHdpdGhvdXQgdHJhbnNmZXJyaW5nCi0gKgltYXhpbXVtIG51bWJlciBvZiBieXRlcywgMCBpZiBhbGwgYnl0ZXMgYXJlIHRyYW5zZmVyZWQgb3IgZXhpdAorICoJbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMsIDAgaWYgYWxsIGJ5dGVzIGFyZSB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKglpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqIAlBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpAQCAtMTkwNCw3ICsxOTA0LDcgQEAKICAqCWJ5dGVzIHRvIHRyYW5zZmVyLCAqKmRhdGEgLSBwb2ludGVyIHRvIGRhdGEgcG9pbnRlci4KICAqIAogICogUmV0dXJucyA6IC0xIHdoZW4gZGlmZmVyZW50IHBoYXNlIGlzIGVudGVyZWQgd2l0aG91dCB0cmFuc2ZlcnJpbmcKLSAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcmVkIG9yIGV4aXQKKyAqCW1heGltdW0gbnVtYmVyIG9mIGJ5dGVzLCAwIGlmIGFsbCBieXRlcyBvciB0cmFuc2ZlcnJlZCBvciBleGl0CiAgKglpcyBpbiBzYW1lIHBoYXNlLgogICoKICAqIAlBbHNvLCAqcGhhc2UsICpjb3VudCwgKmRhdGEgYXJlIG1vZGlmaWVkIGluIHBsYWNlLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N5bTUzYzQxNi5jIGIvZHJpdmVycy9zY3NpL3N5bTUzYzQxNi5jCmluZGV4IDE5MDEwN2EuLjAxMmM4NmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M0MTYuYworKysgYi9kcml2ZXJzL3Njc2kvc3ltNTNjNDE2LmMKQEAgLTc3NCw3ICs3NzQsNyBAQAogCiAJLyogcHJpbnRrKCJzeW01M2M0MTZfcmVzZXRcbiIpOyAqLwogCWJhc2UgPSBTQ3BudC0+ZGV2aWNlLT5ob3N0LT5pb19wb3J0OwotCS8qIHNlYXJjaCBzY3NpX2lkIC0gZml4bWUsIHdlIHNob3VsZG50IG5lZWQgdG8gaXRlcmF0ZSBmb3IgdGhpcyEgKi8KKwkvKiBzZWFyY2ggc2NzaV9pZCAtIGZpeG1lLCB3ZSBzaG91bGRuJ3QgbmVlZCB0byBpdGVyYXRlIGZvciB0aGlzISAqLwogCWZvcihpID0gMDsgaSA8IGhvc3RfaW5kZXggJiYgc2NzaV9pZCA9PSAtMTsgaSsrKQogCQlpZihob3N0c1tpXS5iYXNlID09IGJhc2UpCiAJCQlzY3NpX2lkID0gaG9zdHNbaV0uc2NzaV9pZDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncxLmggYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3MS5oCmluZGV4IDdiMDhkNmMuLjYzOTUyZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncxLmgKKysrIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzEuaApAQCAtMTQ0OSw3ICsxNDQ5LDcgQEAKIAkJUEFERFJfQiAobXNnX3dlaXJkX3NlZW4pLAogCS8qCiAJICogIFdlIGRvbm5vdCBoYW5kbGUgZXh0ZW5kZWQgbWVzc2FnZXMgZnJvbSBTQ1JJUFRTLgotCSAqICBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSBjb3JyZXBvbmRpbmcgdG8gdGhlIAorCSAqICBSZWFkIHRoZSBhbW91bnQgb2YgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSAKIAkgKiAgbWVzc2FnZSBsZW5ndGggYW5kIGNhbGwgdGhlIEMgY29kZS4KIAkgKi8KIAlTQ1JfQ09QWSAoMSksCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3Mi5oIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9mdzIuaAppbmRleCBhZTFmYjE3Li5jODdkNzI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2Z3Mi5oCisrKyBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fZncyLmgKQEAgLTEzMjYsNyArMTMyNiw3IEBACiAJCVBBRERSX0IgKG1zZ193ZWlyZF9zZWVuKSwKIAkvKgogCSAqICBXZSBkb25ub3QgaGFuZGxlIGV4dGVuZGVkIG1lc3NhZ2VzIGZyb20gU0NSSVBUUy4KLQkgKiAgUmVhZCB0aGUgYW1vdW50IG9mIGRhdGEgY29ycmVwb25kaW5nIHRvIHRoZSAKKwkgKiAgUmVhZCB0aGUgYW1vdW50IG9mIGRhdGEgY29ycmVzcG9uZGluZyB0byB0aGUgCiAJICogIG1lc3NhZ2UgbGVuZ3RoIGFuZCBjYWxsIHRoZSBDIGNvZGUuCiAJICovCiAJU0NSX1NUT1JFX1JFTCAoc2NyYXRjaGEsIDEpLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9oaXBkLmMgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYwppbmRleCAyYzNlODlkLi5kOTJmZTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYworKysgYi9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX2hpcGQuYwpAQCAtMjQ1Nyw3ICsyNDU3LDcgQEAKIAkJfQogCiAJCS8qCi0JCSAqICBUaGUgZGF0YSBpbiB0aGUgZG1hIGZpZm8gaGFzIG5vdCBiZWVuIHRyYW5zZmVyZWQgdG8KKwkJICogIFRoZSBkYXRhIGluIHRoZSBkbWEgZmlmbyBoYXMgbm90IGJlZW4gdHJhbnNmZXJyZWQgdG8KIAkJICogIHRoZSB0YXJnZXQgLT4gYWRkIHRoZSBhbW91bnQgdG8gdGhlIHJlc3QKIAkJICogIGFuZCBjbGVhciB0aGUgZGF0YS4KIAkJICogIENoZWNrIHRoZSBzc3RhdDIgcmVnaXN0ZXIgaW4gY2FzZSBvZiB3aWRlIHRyYW5zZmVyLgpAQCAtNTA5NCw3ICs1MDk0LDcgQEAKIH0KIAogLyoKLSAqICBMdW4gY29udHJvbCBibG9jayBkZWFsbG9jYXRpb24uIFJldHVybnMgdGhlIG51bWJlciBvZiB2YWxpZCByZW1haW5nIExDQnMKKyAqICBMdW4gY29udHJvbCBibG9jayBkZWFsbG9jYXRpb24uIFJldHVybnMgdGhlIG51bWJlciBvZiB2YWxpZCByZW1haW5pbmcgTENCcwogICogIGZvciB0aGUgdGFyZ2V0LgogICovCiBpbnQgc3ltX2ZyZWVfbGNiKHN0cnVjdCBzeW1faGNiICpucCwgdV9jaGFyIHRuLCB1X2NoYXIgbG4pCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX21hbGxvYy5jIGIvZHJpdmVycy9zY3NpL3N5bTUzYzh4eF8yL3N5bV9tYWxsb2MuYwppbmRleCA4ODNjYWMxLi42ZjlhZjBkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvc3ltNTNjOHh4XzIvc3ltX21hbGxvYy5jCisrKyBiL2RyaXZlcnMvc2NzaS9zeW01M2M4eHhfMi9zeW1fbWFsbG9jLmMKQEAgLTUwLDcgKzUwLDcgQEAKICAqICBmcm9tIHRoZSBTQ1JJUFRTIGNvZGUuIEluIGFkZGl0aW9uLCBjYWNoZSBsaW5lIGFsaWdubWVudCAKICAqICBpcyBndWFyYW50ZWVkIGZvciBwb3dlciBvZiAyIGNhY2hlIGxpbmUgc2l6ZS4KICAqCi0gKiAgVGhpcyBhbGxvY2F0b3IgaGFzIGJlZW4gZGV2ZWxvcHBlZCBmb3IgdGhlIExpbnV4IHN5bTUzYzh4eCAgCisgKiAgVGhpcyBhbGxvY2F0b3IgaGFzIGJlZW4gZGV2ZWxvcGVkIGZvciB0aGUgTGludXggc3ltNTNjOHh4ICAKICAqICBkcml2ZXIsIHNpbmNlIHRoaXMgTy9TIGRvZXMgbm90IHByb3ZpZGUgbmF0dXJhbGx5IGFsaWduZWQgCiAgKiAgYWxsb2NhdGlvbnMuCiAgKiAgSXQgaGFzIHRoZSBhZHZhbnRhZ2Ugb2YgYWxsb3dpbmcgdGhlIGRyaXZlciB0byB1c2UgcHJpdmF0ZSAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmMgYi9kcml2ZXJzL3Njc2kvd2QzM2M5My5jCmluZGV4IDVmNjk3ZTAuLjQ0NjhhZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2NzaS93ZDMzYzkzLmMKKysrIGIvZHJpdmVycy9zY3NpL3dkMzNjOTMuYwpAQCAtMTg0Myw3ICsxODQzLDcgQEAKICAqCiAgKiBUaGUgb3JpZ2luYWwgZHJpdmVyIHVzZWQgdG8gcmVseSBvbiBhIGZpeGVkIHN4X3RhYmxlLCBjb250YWluaW5nIHBlcmlvZHMKICAqIGZvciAob25seSkgdGhlIGxvd2VyIGxpbWl0cyBvZiB0aGUgcmVzcGVjdGl2ZSBpbnB1dC1jbG9jay1mcmVxdWVuY3kgcmFuZ2VzCi0gKiAoOC0xMC8xMi0xNS8xNi0yMCBNSHopLiBBbHRob3VnaCBpdCBzZWVtcywgdGhhdCBubyBwcm9ibGVtcyBvY3VycmVkIHdpdGgKKyAqICg4LTEwLzEyLTE1LzE2LTIwIE1IeikuIEFsdGhvdWdoIGl0IHNlZW1zLCB0aGF0IG5vIHByb2JsZW1zIG9jY3VycmVkIHdpdGgKICAqIHRoaXMgc2V0dGluZyBzbyBmYXIsIGl0IG1pZ2h0IGJlIGRlc2lyYWJsZSB0byBhZGp1c3QgdGhlIHRyYW5zZmVyIHBlcmlvZHMKICAqIGNsb3NlciB0byB0aGUgcmVhbGx5IGF0dGFjaGVkLCBwb3NzaWJseSAyNSUgaGlnaGVyLCBpbnB1dC1jbG9jaywgc2luY2UKICAqIC0gdGhlIHdkMzNjOTMgbWF5IHJlYWxseSB1c2UgYSBzaWduaWZpY2FudCBzaG9ydGVyIHBlcmlvZCwgdGhhbiBpdCBoYXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2NzaS93ZDcwMDAuYyBiL2RyaXZlcnMvc2NzaS93ZDcwMDAuYwppbmRleCBkYjQ1MWFlLi45ZWUwYWZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Njc2kvd2Q3MDAwLmMKKysrIGIvZHJpdmVycy9zY3NpL3dkNzAwMC5jCkBAIC04MzcsNyArODM3LDcgQEAKIAkJfQogCX0KIAotCS8qIFRha2UgdGhlIGxvY2ssIHRoZW4gY2hlY2sgd2UgZGlkbnQgZ2V0IGJlYXRlbiwgaWYgc28gdHJ5IGFnYWluICovCisJLyogVGFrZSB0aGUgbG9jaywgdGhlbiBjaGVjayB3ZSBkaWRuJ3QgZ2V0IGJlYXRlbiwgaWYgc28gdHJ5IGFnYWluICovCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnNjYnBvb2xfbG9jaywgZmxhZ3MpOwogCWlmIChmcmVlc2NicyA8IG5lZWRlZCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZzY2Jwb29sX2xvY2ssIGZsYWdzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc2ZpL3NmaV9jb3JlLmMgYi9kcml2ZXJzL3NmaS9zZmlfY29yZS5jCmluZGV4IDA0MTEzZTUuLjFlODI0ZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc2ZpL3NmaV9jb3JlLmMKKysrIGIvZHJpdmVycy9zZmkvc2ZpX2NvcmUuYwpAQCAtNTE1LDcgKzUxNSw3IEBACiB9CiAKIC8qCi0gKiBUaGUgcmVhc29uIHdlIHB1dCBpdCBoZXJlIGJlY2FzdWUgd2UgbmVlZCB3YWl0IHRpbGwgdGhlIC9zeXMvZmlybXdhcmUKKyAqIFRoZSByZWFzb24gd2UgcHV0IGl0IGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHdhaXQgdGlsbCB0aGUgL3N5cy9maXJtd2FyZQogICogaXMgc2V0dXAsIHRoZW4gb3VyIGludGVyZmFjZSBjYW4gYmUgcmVnaXN0ZXJlZCBpbiAvc3lzL2Zpcm13YXJlL3NmaQogICovCiBjb3JlX2luaXRjYWxsKHNmaV9zeXNmc19pbml0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL2FtYmEtcGwwMjIuYyBiL2RyaXZlcnMvc3BpL2FtYmEtcGwwMjIuYwppbmRleCA1YTRlMGFmLi41ODI1MzcwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9hbWJhLXBsMDIyLmMKKysrIGIvZHJpdmVycy9zcGkvYW1iYS1wbDAyMi5jCkBAIC02NjEsNyArNjYxLDcgQEAKIHsKIAogCS8qCi0JICogVGhlIEZJRk8gZGVwdGggaXMgZGlmZmVyZW50IGluYmV0d2VlbiBwcmltZWNlbGwgdmFyaWFudHMuCisJICogVGhlIEZJRk8gZGVwdGggaXMgZGlmZmVyZW50IGJldHdlZW4gcHJpbWVjZWxsIHZhcmlhbnRzLgogCSAqIEkgYmVsaWV2ZSBmaWxsaW5nIGluIHRvbyBtdWNoIGluIHRoZSBGSUZPIG1pZ2h0IGNhdXNlCiAJICogZXJyb25zIGluIDhiaXQgd2lkZSB0cmFuc2ZlcnMgb24gQVJNIHZhcmlhbnRzIChqdXN0IDggd29yZHMKIAkgKiBGSUZPLCBtZWFucyBvbmx5IDh4OCA9IDY0IGJpdHMgaW4gRklGTykgYXQgbGVhc3QuCkBAIC03MjIsNyArNzIyLDcgQEAKIAkJICogVGhpcyBpbm5lciByZWFkZXIgdGFrZXMgY2FyZSBvZiB0aGluZ3MgYXBwZWFyaW5nIGluIHRoZSBSWAogCQkgKiBGSUZPIGFzIHdlJ3JlIHRyYW5zbWl0dGluZy4gVGhpcyB3aWxsIGhhcHBlbiBhIGxvdCBzaW5jZSB0aGUKIAkJICogY2xvY2sgc3RhcnRzIHJ1bm5pbmcgd2hlbiB5b3UgcHV0IHRoaW5ncyBpbnRvIHRoZSBUWCBGSUZPLAotCQkgKiBhbmQgdGhlbiB0aGluZ3MgYXJlIGNvbnRpbm91c2x5IGNsb2NrZWQgaW50byB0aGUgUlggRklGTy4KKwkJICogYW5kIHRoZW4gdGhpbmdzIGFyZSBjb250aW51b3VzbHkgY2xvY2tlZCBpbnRvIHRoZSBSWCBGSUZPLgogCQkgKi8KIAkJd2hpbGUgKChyZWFkdyhTU1BfU1IocGwwMjItPnZpcnRiYXNlKSkgJiBTU1BfU1JfTUFTS19STkUpCiAJCSAgICAgICAmJiAocGwwMjItPnJ4IDwgcGwwMjItPnJ4X2VuZCkpIHsKQEAgLTg0Miw3ICs4NDIsNyBAQAogCiAJdW5tYXBfZnJlZV9kbWFfc2NhdHRlcihwbDAyMik7CiAKLQkvKiBVcGRhdGUgdG90YWwgYnl0ZXMgdHJhbnNmZXJlZCAqLworCS8qIFVwZGF0ZSB0b3RhbCBieXRlcyB0cmFuc2ZlcnJlZCAqLwogCW1zZy0+YWN0dWFsX2xlbmd0aCArPSBwbDAyMi0+Y3VyX3RyYW5zZmVyLT5sZW47CiAJaWYgKHBsMDIyLT5jdXJfdHJhbnNmZXItPmNzX2NoYW5nZSkKIAkJcGwwMjItPmN1cl9jaGlwLT4KQEAgLTEyMjQsNyArMTIyNCw3IEBACiAJCQkJICJudW1iZXIgb2YgYnl0ZXMgb24gYSAxNmJpdCBidXM/KVxuIiwKIAkJCQkgKHUzMikgKHBsMDIyLT5yeCAtIHBsMDIyLT5yeF9lbmQpKTsKIAkJfQotCQkvKiBVcGRhdGUgdG90YWwgYnl0ZXMgdHJhbnNmZXJlZCAqLworCQkvKiBVcGRhdGUgdG90YWwgYnl0ZXMgdHJhbnNmZXJyZWQgKi8KIAkJbXNnLT5hY3R1YWxfbGVuZ3RoICs9IHBsMDIyLT5jdXJfdHJhbnNmZXItPmxlbjsKIAkJaWYgKHBsMDIyLT5jdXJfdHJhbnNmZXItPmNzX2NoYW5nZSkKIAkJCXBsMDIyLT5jdXJfY2hpcC0+CkBAIC0xNDE1LDExICsxNDE1LDExIEBACiAJCSAgICAgICBTU1BfQ1IxKHBsMDIyLT52aXJ0YmFzZSkpOwogCiAJCWRldl9kYmcoJnBsMDIyLT5hZGV2LT5kZXYsICJwb2xsaW5nIHRyYW5zZmVyIG9uZ29pbmcgLi4uXG4iKTsKLQkJLyogRklYTUU6IGluc2VydCBhIHRpbWVvdXQgc28gd2UgZG9uJ3QgaGFuZyBoZXJlIGluZGVmaW5hdGVseSAqLworCQkvKiBGSVhNRTogaW5zZXJ0IGEgdGltZW91dCBzbyB3ZSBkb24ndCBoYW5nIGhlcmUgaW5kZWZpbml0ZWx5ICovCiAJCXdoaWxlIChwbDAyMi0+dHggPCBwbDAyMi0+dHhfZW5kIHx8IHBsMDIyLT5yeCA8IHBsMDIyLT5yeF9lbmQpCiAJCQlyZWFkd3JpdGVyKHBsMDIyKTsKIAotCQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkICovCisJCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkICovCiAJCW1lc3NhZ2UtPmFjdHVhbF9sZW5ndGggKz0gcGwwMjItPmN1cl90cmFuc2Zlci0+bGVuOwogCQlpZiAocGwwMjItPmN1cl90cmFuc2Zlci0+Y3NfY2hhbmdlKQogCQkJcGwwMjItPmN1cl9jaGlwLT5jc19jb250cm9sKFNTUF9DSElQX0RFU0VMRUNUKTsKQEAgLTIxMjksNyArMjEyOSw3IEBACiAJCQkicHJvYmUgLSBwcm9ibGVtIHJlZ2lzdGVyaW5nIHNwaSBtYXN0ZXJcbiIpOwogCQlnb3RvIGVycl9zcGlfcmVnaXN0ZXI7CiAJfQotCWRldl9kYmcoZGV2LCAicHJvYmUgc3VjY2VkZWRcbiIpOworCWRldl9kYmcoZGV2LCAicHJvYmUgc3VjY2VlZGVkXG4iKTsKIAkvKgogCSAqIERpc2FibGUgdGhlIHNpbGljb24gYmxvY2sgcGNsayBhbmQgYW55IHZvbHRhZ2UgZG9tYWluIGFuZCBqdXN0CiAJICogcG93ZXIgaXQgdXAgYW5kIGNsb2NrIGl0IHdoZW4gaXQncyBuZWVkZWQKQEAgLTIxODQsNyArMjE4NCw3IEBACiAJc3BpX3VucmVnaXN0ZXJfbWFzdGVyKHBsMDIyLT5tYXN0ZXIpOwogCXNwaV9tYXN0ZXJfcHV0KHBsMDIyLT5tYXN0ZXIpOwogCWFtYmFfc2V0X2RydmRhdGEoYWRldiwgTlVMTCk7Ci0JZGV2X2RiZygmYWRldi0+ZGV2LCAicmVtb3ZlIHN1Y2NlZGVkXG4iKTsKKwlkZXZfZGJnKCZhZGV2LT5kZXYsICJyZW1vdmUgc3VjY2VlZGVkXG4iKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvYXUxNTUwX3NwaS5jIGIvZHJpdmVycy9zcGkvYXUxNTUwX3NwaS5jCmluZGV4IDNjOWFkZTYuLmI1MDU2M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2F1MTU1MF9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9hdTE1NTBfc3BpLmMKQEAgLTQ4MCw3ICs0ODAsNyBAQAogCQlhdTF4eHhfZGJkbWFfc3RvcChody0+ZG1hX3J4X2NoKTsKIAkJYXUxeHh4X2RiZG1hX3N0b3AoaHctPmRtYV90eF9jaCk7CiAKLQkJLyogZ2V0IG51bWJlciBvZiB0cmFuc2ZlcmVkIGJ5dGVzICovCisJCS8qIGdldCBudW1iZXIgb2YgdHJhbnNmZXJyZWQgYnl0ZXMgKi8KIAkJaHctPnJ4X2NvdW50ID0gaHctPmxlbiAtIGF1MXh4eF9nZXRfZG1hX3Jlc2lkdWUoaHctPmRtYV9yeF9jaCk7CiAJCWh3LT50eF9jb3VudCA9IGh3LT5sZW4gLSBhdTF4eHhfZ2V0X2RtYV9yZXNpZHVlKGh3LT5kbWFfdHhfY2gpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9kd19zcGkuYyBiL2RyaXZlcnMvc3BpL2R3X3NwaS5jCmluZGV4IDlhNjE5NjQuLmIxYTRiOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL2R3X3NwaS5jCisrKyBiL2RyaXZlcnMvc3BpL2R3X3NwaS5jCkBAIC0zNDUsNyArMzQ1LDcgQEAKIAogdm9pZCBkd19zcGlfeGZlcl9kb25lKHN0cnVjdCBkd19zcGkgKmR3cykKIHsKLQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkIHJldHVybiBjb3VudCBhY3R1YWwgYnl0ZXMgcmVhZCAqLworCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkIHJldHVybiBjb3VudCBhY3R1YWwgYnl0ZXMgcmVhZCAqLwogCWR3cy0+Y3VyX21zZy0+YWN0dWFsX2xlbmd0aCArPSBkd3MtPmxlbjsKIAogCS8qIE1vdmUgdG8gbmV4dCB0cmFuc2ZlciAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvZHdfc3BpLmggYi9kcml2ZXJzL3NwaS9kd19zcGkuaAppbmRleCBmYjBiY2U1Li5iMjNlNDUyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9kd19zcGkuaAorKysgYi9kcml2ZXJzL3NwaS9kd19zcGkuaApAQCAtNDYsNyArNDYsNyBAQAogI2RlZmluZSBTUElfSU5UX1JYRkkJCQkoMSA8PCA0KQogI2RlZmluZSBTUElfSU5UX01TVEkJCQkoMSA8PCA1KQogCi0vKiBUWCBSWCBpbnRlcnJ1cHQgbGV2ZWwgdGhyZXNoaG9sZCwgbWF4IGNhbiBiZSAyNTYgKi8KKy8qIFRYIFJYIGludGVycnVwdCBsZXZlbCB0aHJlc2hvbGQsIG1heCBjYW4gYmUgMjU2ICovCiAjZGVmaW5lIFNQSV9JTlRfVEhSRVNIT0xECQkzMgogCiBlbnVtIGR3X3NzaV90eXBlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL2VwOTN4eF9zcGkuYyBiL2RyaXZlcnMvc3BpL2VwOTN4eF9zcGkuYwppbmRleCAwYmEzNWRmLi5kMzU3MDA3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9lcDkzeHhfc3BpLmMKKysrIGIvZHJpdmVycy9zcGkvZXA5M3h4X3NwaS5jCkBAIC01MTIsNyArNTEyLDcgQEAKICAqCiAgKiBUaGlzIGZ1bmN0aW9uIHByb2Nlc3NlcyBvbmUgU1BJIHRyYW5zZmVyIGdpdmVuIGluIEB0LiBGdW5jdGlvbiB3YWl0cyB1bnRpbAogICogdHJhbnNmZXIgaXMgY29tcGxldGUgKG1heSBzbGVlcCkgYW5kIHVwZGF0ZXMgQG1zZy0+c3RhdHVzIGJhc2VkIG9uIHdoZXRoZXIKLSAqIHRyYW5zZmVyIHdhcyBzdWNjZXNmdWxseSBwcm9jZXNzZWQgb3Igbm90LgorICogdHJhbnNmZXIgd2FzIHN1Y2Nlc3NmdWxseSBwcm9jZXNzZWQgb3Igbm90LgogICovCiBzdGF0aWMgdm9pZCBlcDkzeHhfc3BpX3Byb2Nlc3NfdHJhbnNmZXIoc3RydWN0IGVwOTN4eF9zcGkgKmVzcGksCiAJCQkJCXN0cnVjdCBzcGlfbWVzc2FnZSAqbXNnLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jIGIvZHJpdmVycy9zcGkvcHhhMnh4X3NwaS5jCmluZGV4IGE0MjliMDEuLjljNzRhYWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3B4YTJ4eF9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9weGEyeHhfc3BpLmMKQEAgLTcwMCw3ICs3MDAsNyBAQAogCWlmICghcHhhMjV4X3NzcF9jb21wKGRydl9kYXRhKSkKIAkJd3JpdGVfU1NUTygwLCByZWcpOwogCi0JLyogVXBkYXRlIHRvdGFsIGJ5dGUgdHJhbnNmZXJlZCByZXR1cm4gY291bnQgYWN0dWFsIGJ5dGVzIHJlYWQgKi8KKwkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcnJlZCByZXR1cm4gY291bnQgYWN0dWFsIGJ5dGVzIHJlYWQgKi8KIAlkcnZfZGF0YS0+Y3VyX21zZy0+YWN0dWFsX2xlbmd0aCArPSBkcnZfZGF0YS0+bGVuIC0KIAkJCQkoZHJ2X2RhdGEtPnJ4X2VuZCAtIGRydl9kYXRhLT5yeCk7CiAKQEAgLTc1OSw3ICs3NTksNyBAQAogCiAJCS8qCiAJCSAqIFBYQTI1eF9TU1AgaGFzIG5vIHRpbWVvdXQsIHNldCB1cCByeCB0aHJlc2hvdWxkIGZvciB0aGUKLQkJICogcmVtYWluZyBSWCBieXRlcy4KKwkJICogcmVtYWluaW5nIFJYIGJ5dGVzLgogCQkgKi8KIAkJaWYgKHB4YTI1eF9zc3BfY29tcChkcnZfZGF0YSkpIHsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zcGkvc3BpLmMgYi9kcml2ZXJzL3NwaS9zcGkuYwppbmRleCAzNGJiMTdmLi44MmI5YTQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NwaS9zcGkuYworKysgYi9kcml2ZXJzL3NwaS9zcGkuYwpAQCAtOTU3LDcgKzk1Nyw3IEBACiAgKiBkcml2ZXJzIG1heSBETUEgZGlyZWN0bHkgaW50byBhbmQgb3V0IG9mIHRoZSBtZXNzYWdlIGJ1ZmZlcnMuCiAgKgogICogVGhpcyBjYWxsIHNob3VsZCBiZSB1c2VkIGJ5IGRyaXZlcnMgdGhhdCByZXF1aXJlIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlCi0gKiBTUEkgYnVzLiBJdCBoYXMgdG8gYmUgcHJlY2VlZGVkIGJ5IGEgc3BpX2J1c19sb2NrIGNhbGwuIFRoZSBTUEkgYnVzIG11c3QKKyAqIFNQSSBidXMuIEl0IGhhcyB0byBiZSBwcmVjZWRlZCBieSBhIHNwaV9idXNfbG9jayBjYWxsLiBUaGUgU1BJIGJ1cyBtdXN0CiAgKiBiZSByZWxlYXNlZCBieSBhIHNwaV9idXNfdW5sb2NrIGNhbGwgd2hlbiB0aGUgZXhjbHVzaXZlIGFjY2VzcyBpcyBvdmVyLgogICoKICAqIEl0IHJldHVybnMgemVybyBvbiBzdWNjZXNzLCBlbHNlIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMgYi9kcml2ZXJzL3NwaS9zcGlfYmZpbjV4eC5jCmluZGV4IGEyODQ2MjQuLmJkYjcyODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaV9iZmluNXh4LmMKKysrIGIvZHJpdmVycy9zcGkvc3BpX2JmaW41eHguYwpAQCAtOTA1LDcgKzkwNSw3IEBACiAJCQkiSU8gd3JpdGUgZXJyb3IhXG4iKTsKIAkJbWVzc2FnZS0+c3RhdGUgPSBFUlJPUl9TVEFURTsKIAl9IGVsc2UgewotCQkvKiBVcGRhdGUgdG90YWwgYnl0ZSB0cmFuc2ZlcmVkICovCisJCS8qIFVwZGF0ZSB0b3RhbCBieXRlIHRyYW5zZmVycmVkICovCiAJCW1lc3NhZ2UtPmFjdHVhbF9sZW5ndGggKz0gZHJ2X2RhdGEtPmxlbl9pbl9ieXRlczsKIAkJLyogTW92ZSB0byBuZXh0IHRyYW5zZmVyIG9mIHRoaXMgbXNnICovCiAJCW1lc3NhZ2UtPnN0YXRlID0gYmZpbl9zcGlfbmV4dF90cmFuc2ZlcihkcnZfZGF0YSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3NwaS9zcGlfZnNsX2VzcGkuYyBiL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jCmluZGV4IDkwMGU5MjEuLjQ5NmY4OTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jCisrKyBiL2RyaXZlcnMvc3BpL3NwaV9mc2xfZXNwaS5jCkBAIC00NzQsNyArNDc0LDcgQEAKIAltcGM4eHh4X3NwaSA9IHNwaV9tYXN0ZXJfZ2V0X2RldmRhdGEoc3BpLT5tYXN0ZXIpOwogCXJlZ19iYXNlID0gbXBjOHh4eF9zcGktPnJlZ19iYXNlOwogCi0JaHdfbW9kZSA9IGNzLT5od19tb2RlOyAvKiBTYXZlIG9yZ2luYWwgc2V0dGluZ3MgKi8KKwlod19tb2RlID0gY3MtPmh3X21vZGU7IC8qIFNhdmUgb3JpZ2luYWwgc2V0dGluZ3MgKi8KIAljcy0+aHdfbW9kZSA9IG1wYzh4eHhfc3BpX3JlYWRfcmVnKAogCQkJJnJlZ19iYXNlLT5jc21vZGVbc3BpLT5jaGlwX3NlbGVjdF0pOwogCS8qIG1hc2sgb3V0IGJpdHMgd2UgYXJlIGdvaW5nIHRvIHNldCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zc2IvcGNpLmMgYi9kcml2ZXJzL3NzYi9wY2kuYwppbmRleCBhNDY3YjIwLi42ZjM0OTYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3NzYi9wY2kuYworKysgYi9kcml2ZXJzL3NzYi9wY2kuYwpAQCAtNjcwLDcgKzY3MCw3IEBACiAJCXNzYl9wcmludGsoS0VSTl9FUlIgUEZYICJObyBTUFJPTSBhdmFpbGFibGUhXG4iKTsKIAkJcmV0dXJuIC1FTk9ERVY7CiAJfQotCWlmIChidXMtPmNoaXBjby5kZXYpIHsJLyogY2FuIGJlIHVuYXZhaWxpYmxlISAqLworCWlmIChidXMtPmNoaXBjby5kZXYpIHsJLyogY2FuIGJlIHVuYXZhaWxhYmxlISAqLwogCQkvKgogCQkgKiBnZXQgU1BST00gb2Zmc2V0OiBTU0JfU1BST01fQkFTRTEgZXhjZXB0IGZvcgogCQkgKiBjaGlwY29tbW9uIHJldiA+PSAzMSBvciBjaGlwIElEIGlzIDB4NDMxMiBhbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3NiL3Nwcm9tLmMgYi9kcml2ZXJzL3NzYi9zcHJvbS5jCmluZGV4IDRmN2NjOGQuLjVmMzRkN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3NiL3Nwcm9tLmMKKysrIGIvZHJpdmVycy9zc2Ivc3Byb20uYwpAQCAtMTg1LDcgKzE4NSw3IEBACiAJLyogdGhpcyByb3V0aW5lIGRpZmZlcnMgZnJvbSBzcGVjcyBhcyB3ZSBkbyBub3QgYWNjZXNzIFNQUk9NIGRpcmVjdGx5CiAJICAgb24gUENNQ0lBICovCiAJaWYgKGJ1cy0+YnVzdHlwZSA9PSBTU0JfQlVTVFlQRV9QQ0kgJiYKLQkgICAgYnVzLT5jaGlwY28uZGV2ICYmCS8qIGNhbiBiZSB1bmF2YWlsaWJsZSEgKi8KKwkgICAgYnVzLT5jaGlwY28uZGV2ICYmCS8qIGNhbiBiZSB1bmF2YWlsYWJsZSEgKi8KIAkgICAgYnVzLT5jaGlwY28uZGV2LT5pZC5yZXZpc2lvbiA+PSAzMSkKIAkJcmV0dXJuIGJ1cy0+Y2hpcGNvLmNhcGFiaWxpdGllcyAmIFNTQl9DSElQQ09fQ0FQX1NQUk9NOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2h0YzIvQVI2MDAwL2FyNmtfZ21ib3hfaGNpdWFydC5jIGIvZHJpdmVycy9zdGFnaW5nL2F0aDZrbC9odGMyL0FSNjAwMC9hcjZrX2dtYm94X2hjaXVhcnQuYwppbmRleCBjNjQ4OGUwLi40MTIyM2Y5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYXRoNmtsL2h0YzIvQVI2MDAwL2FyNmtfZ21ib3hfaGNpdWFydC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9hdGg2a2wvaHRjMi9BUjYwMDAvYXI2a19nbWJveF9oY2l1YXJ0LmMKQEAgLTIzNyw3ICsyMzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHBQcm90LT5DcmVkaXRzQ3VycmVudFNlZWspKTsKICAgICAgICAgCiAgICAgICAgIGlmIChwUHJvdC0+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+cGh5cmV2LCA0KSkgewogCQkvKiBTZXQgdGhlIFBIWSBiYW5kd2lkdGggKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX21haW4uYyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX21haW4uYwppbmRleCA2MzliNWQ3Li43MTdmY2VkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19tYWluLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfbWFpbi5jCkBAIC04Mjk1LDcgKzgyOTUsNyBAQAogCXJldHVybiAocS0+c3RvcHBlZCAmIHByaW9fbWFzaykgPT0gcHJpb19tYXNrOwogfQogCi0vKiBwcm9wb2dhdGUgdGhlIGZsb3cgY29udHJvbCB0byBhbGwgaW50ZXJmYWNlcyB1c2luZyB0aGUgZ2l2ZW4gdHggcXVldWUgKi8KKy8qIHByb3BhZ2F0ZSB0aGUgZmxvdyBjb250cm9sIHRvIGFsbCBpbnRlcmZhY2VzIHVzaW5nIHRoZSBnaXZlbiB0eCBxdWV1ZSAqLwogdm9pZCB3bGNfdHhmbG93Y29udHJvbChzdHJ1Y3Qgd2xjX2luZm8gKndsYywgc3RydWN0IHdsY190eHFfaW5mbyAqcWksCiAJCSAgICAgICBib29sIG9uLCBpbnQgcHJpbykKIHsKQEAgLTg0NjIsNyArODQ2Miw3IEBACiB9CiAKIC8qCi0gKiBGbGFnICdzY2FuIGluIHByb2dyZXNzJyB0byB3aXRob2xkIGR5bmFtaWMgcGh5IGNhbGlicmF0aW9uCisgKiBGbGFnICdzY2FuIGluIHByb2dyZXNzJyB0byB3aXRoaG9sZCBkeW5hbWljIHBoeSBjYWxpYnJhdGlvbgogICovCiB2b2lkIHdsY19zY2FuX3N0YXJ0KHN0cnVjdCB3bGNfaW5mbyAqd2xjKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfcmF0ZS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9icmNtc21hYy93bGNfcmF0ZS5jCmluZGV4IDBjZmEzNjAuLmQyODRmMWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvYnJjbXNtYWMvd2xjX3JhdGUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2JyY21zbWFjL3dsY19yYXRlLmMKQEAgLTMzMiw3ICszMzIsNyBAQAogCQlyZXR1cm4gZmFsc2U7CiB9CiAKLS8qIGNhbHVjbGF0ZSB0aGUgcmF0ZSBvZiBhIHJ4J2QgZnJhbWUgYW5kIHJldHVybiBpdCBhcyBhIHJhdGVzcGVjICovCisvKiBjYWxjdWxhdGUgdGhlIHJhdGUgb2YgYSByeCdkIGZyYW1lIGFuZCByZXR1cm4gaXQgYXMgYSByYXRlc3BlYyAqLwogcmF0ZXNwZWNfdCBCQ01GQVNUUEFUSCB3bGNfY29tcHV0ZV9yc3BlYyhkMTFyeGhkcl90ICpyeGgsIHU4ICpwbGNwKQogewogCWludCBwaHlfdHlwZTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvaW5jbHVkZS9iY21zcm9tX2ZtdC5oIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmgKaW5kZXggYWUyYmZmOC4uNDc2ODk2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2JjbXNyb21fZm10LmgKQEAgLTEwMyw3ICsxMDMsNyBAQAogCiAjZGVmaW5lCVNST01fQ1JDUkVWCQk2MwogCi0vKiBTUk9NIFJldiA0OiBSZWFsbG9jYXRlIHRoZSBzb2Z0d2FyZSBwYXJ0IG9mIHRoZSBzcm9tIHRvIGFjY29tb2RhdGUKKy8qIFNST00gUmV2IDQ6IFJlYWxsb2NhdGUgdGhlIHNvZnR3YXJlIHBhcnQgb2YgdGhlIHNyb20gdG8gYWNjb21tb2RhdGUKICAqIE1JTU8gZmVhdHVyZXMuIEl0IGFzc3VtZXMgdXAgdG8gdHdvIFBDSUUgZnVuY3Rpb25zIGFuZCA0NDAgYnl0ZXMKICAqIG9mIHVzZWFibGUgc3JvbSBpLmUuIHRoZSB1c2VhYmxlIHN0b3JhZ2UgaW4gY2hpcHMgd2l0aCBPVFAgdGhhdAogICogaW1wbGVtZW50cyBoYXJkd2FyZSByZWR1bmRhbmN5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2huZHNvYy5oIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS9pbmNsdWRlL2huZHNvYy5oCmluZGV4IDk3NDdjYzQuLjY0MzU2ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvaW5jbHVkZS9obmRzb2MuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL2luY2x1ZGUvaG5kc29jLmgKQEAgLTE4MSw3ICsxODEsNyBAQAogICogY29udmVudGlvbnMgZm9yIHRoZSB1c2UgdGhlIGZsYXNoIHNwYWNlOgogICovCiAKLS8qIE1pbnVtdW0gYW1vdW50IG9mIGZsYXNoIHdlIHN1cHBvcnQgKi8KKy8qIE1pbmltdW0gYW1vdW50IG9mIGZsYXNoIHdlIHN1cHBvcnQgKi8KICNkZWZpbmUgRkxBU0hfTUlOCQkweDAwMDIwMDAwCS8qIE1pbmltdW0gZmxhc2ggc2l6ZSAqLwogCiAvKiBBIGJvb3QvYmluYXJ5IG1heSBoYXZlIGFuIGVtYmVkZGVkIGJsb2NrIHRoYXQgZGVzY3JpYmVzIGl0cyBzaXplICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbW90cC5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbW90cC5jCmluZGV4IGJhNzFjMTAuLjE3OTkxMjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21vdHAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtb3RwLmMKQEAgLTIxMyw3ICsyMTMsNyBAQAogCXJldHVybiAoaW50KXN0OwogfQogCi0vKiBDYWxjdWxhdGUgbWF4IEhXL1NXIHJlZ2lvbiBieXRlIHNpemUgYnkgc3Vic3RyYWN0aW5nIGZ1c2UgcmVnaW9uIGFuZCBjaGVja3N1bSBzaXplLAorLyogQ2FsY3VsYXRlIG1heCBIVy9TVyByZWdpb24gYnl0ZSBzaXplIGJ5IHN1YnRyYWN0aW5nIGZ1c2UgcmVnaW9uIGFuZCBjaGVja3N1bSBzaXplLAogICogb3NpemV3IGlzIG9pLT53c2l6ZSAoT1RQIHNpemUgLSBHVSBzaXplKSBpbiB3b3JkcwogICovCiBzdGF0aWMgaW50IGlweG90cF9tYXhfcmduc3ooc2lfdCAqc2loLCBpbnQgb3NpemV3KQpAQCAtMjI5LDcgKzIyOSw3IEBACiAJCXJldCA9IG9zaXpldyAqIDIgLSBPVFBfU1pfRlVfNzIgLSBPVFBfU1pfQ0hFQ0tTVU07CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCUFTU0VSVCgwKTsJLyogRG9uJ3Qga29udyBhYm91dCB0aGlzIGNoaXAgKi8KKwkJQVNTRVJUKDApOwkvKiBEb24ndCBrbm93IGFib3V0IHRoaXMgY2hpcCAqLwogCX0KIAogCXJldHVybiByZXQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtc3JvbS5jIGIvZHJpdmVycy9zdGFnaW5nL2JyY204MDIxMS91dGlsL2JjbXNyb20uYwppbmRleCBlY2EzNWI5Li44NTBiZmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvYnJjbTgwMjExL3V0aWwvYmNtc3JvbS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9icmNtODAyMTEvdXRpbC9iY21zcm9tLmMKQEAgLTE4NTksNyArMTg1OSw3IEBACiAKIAkvKgogCSAqIEFwcGx5IENSQyBvdmVyIFNST00gY29udGVudCByZWdhcmRsZXNzIFNST00gaXMgcHJlc2VudCBvciBub3QsCi0JICogYW5kIHVzZSB2YXJpYWJsZSA8ZGV2cGF0aD5zcm9tcmV2J3MgZXhpc3RhbmNlIGluIGZsYXNoIHRvIGRlY2lkZQorCSAqIGFuZCB1c2UgdmFyaWFibGUgPGRldnBhdGg+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+bjsKQEAgLTEyNzksNyArMTI3OSw3IEBACiAJICAgIm5vIGJ1c3kgd2FpdGluZyIgcG9saWN5LiBUaGUgZmFjdCBpcyB0aGF0IHRoZSBoYXJkd2FyZSBpcwogCSAgIG5vcm1hbGx5IHNvIGZhc3QgdGhhdCB3ZSB1c3VhbGx5IG9ubHkgbmVlZCBvbmUgdGltZSB0aHJvdWdoIHRoZSBsb29wCiAJICAgYW55d2F5LiBUaGUgbG9uZ2VyIHRpbWVvdXQgaXMgZm9yIHJhcmUgb2NjYXNpb25zIGFuZCBmb3IgZGV0ZWN0aW5nCi0JICAgbm9uLWV4aXN0YW50IGhhcmR3YXJlLiAgKi8KKwkgICBub24tZXhpc3RlbnQgaGFyZHdhcmUuICAqLwogCiAJd2hpbGUgKHJldHJ5LS0pIHsKIAkJaWYgKGluYihpb2Jhc2UgKyAzKSAmIDB4ODApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcGNtdWlvLmMKaW5kZXggN2E5Mjg3NC4uYjJjMmM4OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3BjbXVpby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9wY211aW8uYwpAQCAtNjA1LDcgKzYwNSw3IEBACiAJCWJyZWFrOwogCiAJY2FzZSBJTlNOX0NPTkZJR19ESU9fUVVFUlk6Ci0JCS8qIHJldHJlaXZlIGZyb20gc2hhZG93IHJlZ2lzdGVyICovCisJCS8qIHJldHJpZXZlIGZyb20gc2hhZG93IHJlZ2lzdGVyICovCiAJCWRhdGFbMV0gPQogCQkgICAgKHMtPmlvX2JpdHMgJiAoMSA8PCBjaGFuKSkgPyBDT01FRElfT1VUUFVUIDogQ09NRURJX0lOUFVUOwogCQlyZXR1cm4gaW5zbi0+bjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9xdWF0ZWNoX2RhcXBfY3MuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9xdWF0ZWNoX2RhcXBfY3MuYwppbmRleCBlYmJhOWJiLi44Mjk0MmU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcXVhdGVjaF9kYXFwX2NzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3F1YXRlY2hfZGFxcF9jcy5jCkBAIC0zOTAsNyArMzkwLDcgQEAKIAogCW91dGIodiwgZGV2LT5pb2Jhc2UgKyBEQVFQX0NPTlRST0wpOwogCi0JLyogUmVzZXQgYW55IHBlbmRpbmcgaW50ZXJydXB0cyAobXkgY2FyZCBoYXMgYSB0ZW5kYW5jeSB0byByZXF1aXJlCisJLyogUmVzZXQgYW55IHBlbmRpbmcgaW50ZXJydXB0cyAobXkgY2FyZCBoYXMgYSB0ZW5kZW5jeSB0byByZXF1aXJlCiAJICogcmVxdWlyZSBtdWx0aXBsZSByZWFkcyBvbiB0aGUgc3RhdHVzIHJlZ2lzdGVyIHRvIGFjaGlldmUgdGhpcykKIAkgKi8KIApAQCAtNzUyLDcgKzc1Miw3IEBACiAKIAlvdXRiKHYsIGRldi0+aW9iYXNlICsgREFRUF9DT05UUk9MKTsKIAotCS8qIFJlc2V0IGFueSBwZW5kaW5nIGludGVycnVwdHMgKG15IGNhcmQgaGFzIGEgdGVuZGFuY3kgdG8gcmVxdWlyZQorCS8qIFJlc2V0IGFueSBwZW5kaW5nIGludGVycnVwdHMgKG15IGNhcmQgaGFzIGEgdGVuZGVuY3kgdG8gcmVxdWlyZQogCSAqIHJlcXVpcmUgbXVsdGlwbGUgcmVhZHMgb24gdGhlIHN0YXR1cyByZWdpc3RlciB0byBhY2hpZXZlIHRoaXMpCiAJICovCiAJY291bnRlciA9IDEwMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9ydGQ1MjAuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9ydGQ1MjAuYwppbmRleCAzNTc4NThkLi43ZjA5ZWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvcnRkNTIwLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3J0ZDUyMC5jCkBAIC03NSw3ICs3NSw3IEBACiAgICAgZGFzMTgwMCwgc2luY2UgdGhleSBoYXZlIHRoZSBiZXN0IGRvY3VtZW50ZWQgY29kZS4gIERyaXZlcgogICAgIGNiX3BjaWRhczY0LmMgdXNlcyB0aGUgc2FtZSBETUEgY29udHJvbGxlci4KIAotICAgIEFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgQWJvdXQgaW50ZXJydXB0IGRvZXNudCB3b3JrIGlmIFNhbXBsZSBpcworICAgIEFzIGZhciBhcyBJIGNhbiB0ZWxsLCB0aGUgQWJvdXQgaW50ZXJydXB0IGRvZXNuJ3Qgd29yayBpZiBTYW1wbGUgaXMKICAgICBhbHNvIGVuYWJsZWQuICBJdCB0dXJucyBvdXQgdGhhdCBBYm91dCByZWFsbHkgaXNuJ3QgbmVlZGVkLCBzaW5jZQogICAgIHdlIGFsd2F5cyBjb3VudCBkb3duIHNhbXBsZXMgcmVhZC4KIApAQCAtMzcwLDcgKzM3MCw3IEBACiAJLyogdGltZXIgZ2F0ZSAod2hlbiBlbmFibGVkKSAqLwogCXU4IHV0Y0dhdGVbNF07CQkvKiAxIGV4dHJhIGFsbG93cyBzaW1wbGUgcmFuZ2UgY2hlY2sgKi8KIAotCS8qIHNoYWRvdyByZWdpc3RlcnMgYWZmZWN0IG90aGVyIHJlZ2lzdGVycywgYnV0IGNhbnQgYmUgcmVhZCBiYWNrICovCisJLyogc2hhZG93IHJlZ2lzdGVycyBhZmZlY3Qgb3RoZXIgcmVnaXN0ZXJzLCBidXQgY2FuJ3QgYmUgcmVhZCBiYWNrICovCiAJLyogVGhlIG1hY3JvcyBiZWxvdyB1cGRhdGUgdGhlc2Ugb24gd3JpdGVzICovCiAJdTE2IGludE1hc2s7CQkvKiBpbnRlcnJ1cHQgbWFzayAqLwogCXUxNiBpbnRDbGVhck1hc2s7CS8qIGludGVycnVwdCBjbGVhciBtYXNrICovCkBAIC00ODUsNyArNDg1LDcgQEAKICNkZWZpbmUgUnRkQWRjRmlmb0dldChkZXYpIFwKIAlyZWFkdyhkZXZwcml2LT5sYXMxK0xBUzFfQURDX0ZJRk8pCiAKLS8qIFJlYWQgdHdvIEFEQyBkYXRhIHZhbHVlcyAoRE9FU05UIFdPUkspICovCisvKiBSZWFkIHR3byBBREMgZGF0YSB2YWx1ZXMgKERPRVNOJ1QgV09SSykgKi8KICNkZWZpbmUgUnRkQWRjRmlmb0dldDIoZGV2KSBcCiAJcmVhZGwoZGV2cHJpdi0+bGFzMStMQVMxX0FEQ19GSUZPKQogCkBAIC04NTcsNyArODU3LDcgQEAKIAkJCURQUklOVEsoInJ0ZDUyMDogUENJIGxhdGVuY3kgPSAlZFxuIiwgcGNpX2xhdGVuY3kpOwogCQl9CiAKLQkJLyogVW5kb2N1bWVudGVkIEVQTEQgdmVyc2lvbiAoZG9lc250IG1hdGNoIFJURCBkcml2ZXIgcmVzdWx0cykgKi8KKwkJLyogVW5kb2N1bWVudGVkIEVQTEQgdmVyc2lvbiAoZG9lc24ndCBtYXRjaCBSVEQgZHJpdmVyIHJlc3VsdHMpICovCiAJCS8qRFBSSU5USyAoInJ0ZDUyMDogUmVhZGluZyBlcGxkIGZyb20gJXBcbiIsCiAJCSAgIGRldnByaXYtPmxhczArMCk7CiAJCSAgIGVwbGRfdmVyc2lvbiA9IHJlYWRsIChkZXZwcml2LT5sYXMwKzApOwpAQCAtMTI5MSw3ICsxMjkxLDcgQEAKIC8qCiAgICJpbnN0cnVjdGlvbnMiIHJlYWQvd3JpdGUgZGF0YSBpbiAib25lLXNob3QiIG9yICJzb2Z0d2FyZS10cmlnZ2VyZWQiCiAgIG1vZGUgKHNpbXBsZXN0IGNhc2UpLgotICBUaGlzIGRvZXNudCB1c2UgaW50ZXJydXB0cy4KKyAgVGhpcyBkb2Vzbid0IHVzZSBpbnRlcnJ1cHRzLgogCiAgIE5vdGUsIHdlIGRvbid0IGRvIGFueSBzZXR0bGluZyBkZWxheXMuICBVc2UgYSBpbnN0cnVjdGlvbiBsaXN0IHRvCiAgIHNlbGVjdCwgZGVsYXksIHRoZW4gcmVhZC4KQEAgLTIxMjAsNyArMjEyMCw3IEBACiB9CiAKIC8qCi0gIFN0b3AgYSBydW5uaW5nIGRhdGEgYXF1aXNpdGlvbi4KKyAgU3RvcCBhIHJ1bm5pbmcgZGF0YSBhY3F1aXNpdGlvbi4KICovCiBzdGF0aWMgaW50IHJ0ZF9haV9jYW5jZWwoc3RydWN0IGNvbWVkaV9kZXZpY2UgKmRldiwgc3RydWN0IGNvbWVkaV9zdWJkZXZpY2UgKnMpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvczYyNi5jIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3M2MjYuYwppbmRleCBkNWJhM2FiLi4yM2ZjNjRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvczYyNi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy9zNjI2LmMKQEAgLTEzOSw3ICsxMzksNyBAQAogCWludCBnb3RfcmVnaW9uczsKIAlzaG9ydCBhbGxvY2F0ZWRCdWY7CiAJdWludDhfdCBhaV9jbWRfcnVubmluZzsJLyogIGFpX2NtZCBpcyBydW5uaW5nICovCi0JdWludDhfdCBhaV9jb250aW5vdXM7CS8qICBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCXVpbnQ4X3QgYWlfY29udGlub3VzOwkvKiAgY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJaW50IGFpX3NhbXBsZV9jb3VudDsJLyogIG51bWJlciBvZiBzYW1wbGVzIHRvIGFjcXVpcmUgKi8KIAl1bnNpZ25lZCBpbnQgYWlfc2FtcGxlX3RpbWVyOwogCS8qICB0aW1lIGJldHdlZW4gc2FtcGxlcyBpbiAgdW5pdHMgb2YgdGhlIHRpbWVyICovCkBAIC0xMDQ4LDcgKzEwNDgsNyBAQAogCXVpbnQ4X3QgZ3JvdXA7CiAJdWludDE2X3QgaXJxYml0OwogCi0JREVCVUcoInM2MjZfaXJxX2hhbmRsZXI6IGludGVycnVwdCByZXF1ZXN0IHJlY2lldmVkISEhXG4iKTsKKwlERUJVRygiczYyNl9pcnFfaGFuZGxlcjogaW50ZXJydXB0IHJlcXVlc3QgcmVjZWl2ZWQhISFcbiIpOwogCiAJaWYgKGRldi0+YXR0YWNoZWQgPT0gMCkKIAkJcmV0dXJuIElSUV9OT05FOwpAQCAtMTE2NSwxNCArMTE2NSwxNCBAQAogCQkJCQkJCSgxNiAqIGdyb3VwKSkpCiAJCQkJCSAgICA9PSAxICYmIGNtZC0+c3RhcnRfc3JjID09IFRSSUdfRVhUKSB7CiAJCQkJCQlERUJVRwotCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogRWRnZSBjYXB0dXJlIGludGVycnVwdCByZWNpZXZlZCBmcm9tIGNoYW5uZWwgJWRcbiIsCisJCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBFZGdlIGNhcHR1cmUgaW50ZXJydXB0IHJlY2VpdmVkIGZyb20gY2hhbm5lbCAlZFxuIiwKIAkJCQkJCSAgICAgY21kLT5zdGFydF9hcmcpOwogCiAJCQkJCQkvKiAgU3RhcnQgZXhlY3V0aW5nIHRoZSBSUFMgcHJvZ3JhbS4gKi8KIAkJCQkJCU1DX0VOQUJMRShQX01DMSwgTUMxX0VSUFMxKTsKIAogCQkJCQkJREVCVUcKLQkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IGFxdWlzaXRpb24gc3RhcnQgdHJpZ2dlcmVkISEhXG4iKTsKKwkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IGFjcXVpc2l0aW9uIHN0YXJ0IHRyaWdnZXJlZCEhIVxuIik7CiAKIAkJCQkJCWlmIChjbWQtPnNjYW5fYmVnaW5fc3JjID09CiAJCQkJCQkgICAgVFJJR19FWFQpIHsKQEAgLTExOTQsNyArMTE5NCw3IEBACiAJCQkJCSAgICAmJiBjbWQtPnNjYW5fYmVnaW5fc3JjID09CiAJCQkJCSAgICBUUklHX0VYVCkgewogCQkJCQkJREVCVUcKLQkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IEVkZ2UgY2FwdHVyZSBpbnRlcnJ1cHQgcmVjaWV2ZWQgZnJvbSBjaGFubmVsICVkXG4iLAorCQkJCQkJICAgICgiczYyNl9pcnFfaGFuZGxlcjogRWRnZSBjYXB0dXJlIGludGVycnVwdCByZWNlaXZlZCBmcm9tIGNoYW5uZWwgJWRcbiIsCiAJCQkJCQkgICAgIGNtZC0+c2Nhbl9iZWdpbl9hcmcpOwogCiAJCQkJCQkvKiAgVHJpZ2dlciBBREMgc2NhbiBsb29wIHN0YXJ0IGJ5IHNldHRpbmcgUlBTIFNpZ25hbCAwLiAqLwpAQCAtMTIzNiw3ICsxMjM2LDcgQEAKIAkJCQkJICAgID09IDEKIAkJCQkJICAgICYmIGNtZC0+Y29udmVydF9zcmMgPT0gVFJJR19FWFQpIHsKIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJzNjI2X2lycV9oYW5kbGVyOiBFZGdlIGNhcHR1cmUgaW50ZXJydXB0IHJlY2lldmVkIGZyb20gY2hhbm5lbCAlZFxuIiwKKwkJCQkJCSAgICAoInM2MjZfaXJxX2hhbmRsZXI6IEVkZ2UgY2FwdHVyZSBpbnRlcnJ1cHQgcmVjZWl2ZWQgZnJvbSBjaGFubmVsICVkXG4iLAogCQkJCQkJICAgICBjbWQtPmNvbnZlcnRfYXJnKTsKIAogCQkJCQkJLyogIFRyaWdnZXIgQURDIHNjYW4gbG9vcCBzdGFydCBieSBzZXR0aW5nIFJQUyBTaWduYWwgMC4gKi8KQEAgLTE4MDUsNyArMTgwNSw3IEBACiAJCURFQlVHKCJzNjI2X2FpX2NtZDogTlVMTCBjb21tYW5kXG4iKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfSBlbHNlIHsKLQkJREVCVUcoInM2MjZfYWlfY21kOiBjb21tYW5kIHJlY2lldmVkISEhXG4iKTsKKwkJREVCVUcoInM2MjZfYWlfY21kOiBjb21tYW5kIHJlY2VpdmVkISEhXG4iKTsKIAl9CiAKIAlpZiAoZGV2LT5pcnEgPT0gMCkgewpAQCAtMTg4MCw3ICsxODgwLDcgQEAKIAkJZGV2cHJpdi0+YWlfY29udGlub3VzID0gMDsKIAkJYnJlYWs7CiAJY2FzZSBUUklHX05PTkU6Ci0JCS8qICBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCQkvKiAgY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJCWRldnByaXYtPmFpX2NvbnRpbm91cyA9IDE7CiAJCWRldnByaXYtPmFpX3NhbXBsZV9jb3VudCA9IDA7CiAJCWJyZWFrOwpAQCAtMjU3MCw3ICsyNTcwLDcgQEAKIAl3aGlsZSAoKFJSNzE0NihQX0kyQ0NUUkwpICYgKEkyQ19CVVNZIHwgSTJDX0VSUikpID09IEkyQ19CVVNZKQogCQk7CiAKLQkvKiAgUmV0dXJuIG5vbi16ZXJvIGlmIEkyQyBlcnJvciBvY2N1cmVkLiAqLworCS8qICBSZXR1cm4gbm9uLXplcm8gaWYgSTJDIGVycm9yIG9jY3VycmVkLiAqLwogCXJldHVybiBSUjcxNDYoUF9JMkNDVFJMKSAmIEkyQ19FUlI7CiAKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXguYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXguYwppbmRleCBiZTkzYzMwLi5lNTQzZTZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eC5jCkBAIC0yODUsNyArMjg1LDcgQEAKIAlzaG9ydCBpbnQgYW9fY21kX3J1bm5pbmc7CiAJLyogcHdtIGlzIHJ1bm5pbmcgKi8KIAlzaG9ydCBpbnQgcHdtX2NtZF9ydW5uaW5nOwotCS8qIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJLyogY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJc2hvcnQgaW50IGFpX2NvbnRpbm91czsKIAlzaG9ydCBpbnQgYW9fY29udGlub3VzOwogCS8qIG51bWJlciBvZiBzYW1wbGVzIHRvIGFjcXVpcmUgKi8KQEAgLTUwMCw3ICs1MDAsNyBAQAogCiAJLyogdGVzdCwgaWYgd2UgdHJhbnNtaXQgb25seSBhIGZpeGVkIG51bWJlciBvZiBzYW1wbGVzICovCiAJaWYgKCEodGhpc191c2JkdXhzdWItPmFpX2NvbnRpbm91cykpIHsKLQkJLyogbm90IGNvbnRpbm91cywgZml4ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKi8KKwkJLyogbm90IGNvbnRpbnVvdXMsIGZpeGVkIG51bWJlciBvZiBzYW1wbGVzICovCiAJCXRoaXNfdXNiZHV4c3ViLT5haV9zYW1wbGVfY291bnQtLTsKIAkJLyogYWxsIHNhbXBsZXMgcmVjZWl2ZWQ/ICovCiAJCWlmICh0aGlzX3VzYmR1eHN1Yi0+YWlfc2FtcGxlX2NvdW50IDwgMCkgewpAQCAtNjUzLDcgKzY1Myw3IEBACiAJCS8qIHRpbWVyIHplcm8gKi8KIAkJdGhpc191c2JkdXhzdWItPmFvX2NvdW50ZXIgPSB0aGlzX3VzYmR1eHN1Yi0+YW9fdGltZXI7CiAKLQkJLyogaGFuZGxlIG5vbiBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCQkvKiBoYW5kbGUgbm9uIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCQlpZiAoISh0aGlzX3VzYmR1eHN1Yi0+YW9fY29udGlub3VzKSkgewogCQkJLyogZml4ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKi8KIAkJCXRoaXNfdXNiZHV4c3ViLT5hb19zYW1wbGVfY291bnQtLTsKQEAgLTk1Nyw3ICs5NTcsNyBAQAogCWlmICghY21kLT5zY2FuX2JlZ2luX3NyYyB8fCB0bXAgIT0gY21kLT5zY2FuX2JlZ2luX3NyYykKIAkJZXJyKys7CiAKLQkvKiBzY2FubmluZyBpcyBjb250aW5vdXMgKi8KKwkvKiBzY2FubmluZyBpcyBjb250aW51b3VzICovCiAJdG1wID0gY21kLT5jb252ZXJ0X3NyYzsKIAljbWQtPmNvbnZlcnRfc3JjICY9IFRSSUdfTk9XOwogCWlmICghY21kLT5jb252ZXJ0X3NyYyB8fCB0bXAgIT0gY21kLT5jb252ZXJ0X3NyYykKQEAgLTEyMjIsNyArMTIyMiw3IEBACiAJCXVwKCZ0aGlzX3VzYmR1eHN1Yi0+c2VtKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9Ci0JLyogc2V0IGN1cnJlbnQgY2hhbm5lbCBvZiB0aGUgcnVubmluZyBhcXVpc2l0aW9uIHRvIHplcm8gKi8KKwkvKiBzZXQgY3VycmVudCBjaGFubmVsIG9mIHRoZSBydW5uaW5nIGFjcXVpc2l0aW9uIHRvIHplcm8gKi8KIAlzLT5hc3luYy0+Y3VyX2NoYW4gPSAwOwogCiAJdGhpc191c2JkdXhzdWItPmR1eF9jb21tYW5kc1sxXSA9IGNtZC0+Y2hhbmxpc3RfbGVuOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAKIAkJdGhpc191c2JkdXhzdWItPmFpX3NhbXBsZV9jb3VudCA9IGNtZC0+c3RvcF9hcmc7CiAJCXRoaXNfdXNiZHV4c3ViLT5haV9jb250aW5vdXMgPSAwOwogCX0gZWxzZSB7Ci0JCS8qIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJCS8qIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCQl0aGlzX3VzYmR1eHN1Yi0+YWlfY29udGlub3VzID0gMTsKIAkJdGhpc191c2JkdXhzdWItPmFpX3NhbXBsZV9jb3VudCA9IDA7CiAJfQpAQCAtMTUxNSw3ICsxNTE1LDcgQEAKIAkvKiBqdXN0IG5vdyB3ZSBzY2FuIGFsc28gaW4gdGhlIGhpZ2ggc3BlZWQgbW9kZSBldmVyeSBmcmFtZSAqLwogCS8qIHRoaXMgaXMgZHVlIHRvIGVoY2kgZHJpdmVyIGxpbWl0YXRpb25zICovCiAJaWYgKDApIHsJCS8qICh0aGlzX3VzYmR1eHN1Yi0+aGlnaF9zcGVlZCkgKi8KLQkJLyogc3RhcnQgaW1taWRpYXRlbHkgYSBuZXcgc2NhbiAqLworCQkvKiBzdGFydCBpbW1lZGlhdGVseSBhIG5ldyBzY2FuICovCiAJCS8qIHRoZSBzYW1wbGluZyByYXRlIGlzIHNldCBieSB0aGUgY292ZXJzaW9uIHJhdGUgKi8KIAkJY21kLT5zY2FuX2JlZ2luX3NyYyAmPSBUUklHX0ZPTExPVzsKIAl9IGVsc2UgewpAQCAtMTUyNSw3ICsxNTI1LDcgQEAKIAlpZiAoIWNtZC0+c2Nhbl9iZWdpbl9zcmMgfHwgdG1wICE9IGNtZC0+c2Nhbl9iZWdpbl9zcmMpCiAJCWVycisrOwogCi0JLyogc2Nhbm5pbmcgaXMgY29udGlub3VzICovCisJLyogc2Nhbm5pbmcgaXMgY29udGludW91cyAqLwogCXRtcCA9IGNtZC0+Y29udmVydF9zcmM7CiAJLyogd2UgYWx3YXlzIG91dHB1dCBhdCAxa0h6IGp1c3Qgbm93IGFsbCBjaGFubmVscyBhdCBvbmNlICovCiAJaWYgKDApIHsJCS8qICh0aGlzX3VzYmR1eHN1Yi0+aGlnaF9zcGVlZCkgKi8KQEAgLTE2NDUsNyArMTY0NSw3IEBACiAJZGV2X2RiZygmdGhpc191c2JkdXhzdWItPmludGVyZmFjZS0+ZGV2LAogCQkiY29tZWRpJWQ6ICVzXG4iLCBkZXYtPm1pbm9yLCBfX2Z1bmNfXyk7CiAKLQkvKiBzZXQgY3VycmVudCBjaGFubmVsIG9mIHRoZSBydW5uaW5nIGFxdWlzaXRpb24gdG8gemVybyAqLworCS8qIHNldCBjdXJyZW50IGNoYW5uZWwgb2YgdGhlIHJ1bm5pbmcgYWNxdWlzaXRpb24gdG8gemVybyAqLwogCXMtPmFzeW5jLT5jdXJfY2hhbiA9IDA7CiAJZm9yIChpID0gMDsgaSA8IGNtZC0+Y2hhbmxpc3RfbGVuOyArK2kpIHsKIAkJY2hhbiA9IENSX0NIQU4oY21kLT5jaGFubGlzdFtpXSk7CkBAIC0xNjk0LDcgKzE2OTQsNyBAQAogCXRoaXNfdXNiZHV4c3ViLT5hb19jb3VudGVyID0gdGhpc191c2JkdXhzdWItPmFvX3RpbWVyOwogCiAJaWYgKGNtZC0+c3RvcF9zcmMgPT0gVFJJR19DT1VOVCkgewotCQkvKiBub3QgY29udGlub3VzICovCisJCS8qIG5vdCBjb250aW51b3VzICovCiAJCS8qIGNvdW50ZXIgKi8KIAkJLyogaGlnaCBzcGVlZCBhbHNvIHNjYW5zIGV2ZXJ5dGhpbmcgYXQgb25jZSAqLwogCQlpZiAoMCkgewkvKiAodGhpc191c2JkdXhzdWItPmhpZ2hfc3BlZWQpICovCkBAIC0xNzA4LDcgKzE3MDgsNyBAQAogCQl9CiAJCXRoaXNfdXNiZHV4c3ViLT5hb19jb250aW5vdXMgPSAwOwogCX0gZWxzZSB7Ci0JCS8qIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJCS8qIGNvbnRpbm91cyBhY3F1aXNpdGlvbiAqLwogCQl0aGlzX3VzYmR1eHN1Yi0+YW9fY29udGlub3VzID0gMTsKIAkJdGhpc191c2JkdXhzdWItPmFvX3NhbXBsZV9jb3VudCA9IDA7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eGZhc3QuYyBiL2RyaXZlcnMvc3RhZ2luZy9jb21lZGkvZHJpdmVycy91c2JkdXhmYXN0LmMKaW5kZXggNWIxNWU2ZC4uMmE4ZTcyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NvbWVkaS9kcml2ZXJzL3VzYmR1eGZhc3QuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY29tZWRpL2RyaXZlcnMvdXNiZHV4ZmFzdC5jCkBAIC0xODAsNyArMTgwLDcgQEAKIAkvKiBjb21lZGkgZGV2aWNlIGZvciB0aGUgaW50ZXJydXB0IGNvbnRleHQgKi8KIAlzdHJ1Y3QgY29tZWRpX2RldmljZSAqY29tZWRpZGV2OwogCXNob3J0IGludCBhaV9jbWRfcnVubmluZzsJLyogYXN5bmNocm9ub3VzIGNvbW1hbmQgaXMgcnVubmluZyAqLwotCXNob3J0IGludCBhaV9jb250aW5vdXM7CS8qIGNvbnRpbm91cyBhcXVpc2l0aW9uICovCisJc2hvcnQgaW50IGFpX2NvbnRpbm91czsJLyogY29udGlub3VzIGFjcXVpc2l0aW9uICovCiAJbG9uZyBpbnQgYWlfc2FtcGxlX2NvdW50OwkvKiBudW1iZXIgb2Ygc2FtcGxlcyB0byBhY3F1aXJlICovCiAJdWludDhfdCAqZHV4X2NvbW1hbmRzOwkvKiBjb21tYW5kcyAqLwogCWludCBpZ25vcmU7CQkvKiBjb3VudGVyIHdoaWNoIGlnbm9yZXMgdGhlIGZpcnN0CkBAIC0zOTIsNyArMzkyLDcgQEAKIAlwID0gdXJiLT50cmFuc2Zlcl9idWZmZXI7CiAJaWYgKCF1ZGZzLT5pZ25vcmUpIHsKIAkJaWYgKCF1ZGZzLT5haV9jb250aW5vdXMpIHsKLQkJCS8qIG5vdCBjb250aW5vdXMsIGZpeGVkIG51bWJlciBvZiBzYW1wbGVzICovCisJCQkvKiBub3QgY29udGludW91cywgZml4ZWQgbnVtYmVyIG9mIHNhbXBsZXMgKi8KIAkJCW4gPSB1cmItPmFjdHVhbF9sZW5ndGggLyBzaXplb2YodWludDE2X3QpOwogCQkJaWYgKHVubGlrZWx5KHVkZnMtPmFpX3NhbXBsZV9jb3VudCA8IG4pKSB7CiAJCQkJLyoKQEAgLTc3NSw3ICs3NzUsNyBAQAogCQl1cCgmdWRmcy0+c2VtKTsKIAkJcmV0dXJuIC1FQlVTWTsKIAl9Ci0JLyogc2V0IGN1cnJlbnQgY2hhbm5lbCBvZiB0aGUgcnVubmluZyBhcXVpc2l0aW9uIHRvIHplcm8gKi8KKwkvKiBzZXQgY3VycmVudCBjaGFubmVsIG9mIHRoZSBydW5uaW5nIGFjcXVpc2l0aW9uIHRvIHplcm8gKi8KIAlzLT5hc3luYy0+Y3VyX2NoYW4gPSAwOwogCiAJLyoKQEAgLTExODIsNyArMTE4Miw3IEBACiAJCX0KIAkJdWRmcy0+YWlfY29udGlub3VzID0gMDsKIAl9IGVsc2UgewotCQkvKiBjb250aW5vdXMgYXF1aXNpdGlvbiAqLworCQkvKiBjb250aW5vdXMgYWNxdWlzaXRpb24gKi8KIAkJdWRmcy0+YWlfY29udGlub3VzID0gMTsKIAkJdWRmcy0+YWlfc2FtcGxlX2NvdW50ID0gMDsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3B0bTEyMTcvY2xlYXJwYWRfdG0xMjE3LmMgYi9kcml2ZXJzL3N0YWdpbmcvY3B0bTEyMTcvY2xlYXJwYWRfdG0xMjE3LmMKaW5kZXggNzZlNGI3OC4uMGZlNzEzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NwdG0xMjE3L2NsZWFycGFkX3RtMTIxNy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcHRtMTIxNy9jbGVhcnBhZF90bTEyMTcuYwpAQCAtNTIsNyArNTIsNyBAQAogI2RlZmluZSBUTUExMjE3X0RFVl9TVEFUVVMJCTB4MTMJLyogRGV2aWNlIFN0YXR1cyAqLwogI2RlZmluZSBUTUExMjE3X0lOVF9TVEFUVVMJCTB4MTQJLyogSW50ZXJydXB0IFN0YXR1cyAqLwogCi0vKiBDb250cm9sbGVyIGNhbiBkZXRlY3QgdXB0byAyIHBvc3NpYmxlIGZpbmdlciB0b3VjaGVzLgorLyogQ29udHJvbGxlciBjYW4gZGV0ZWN0IHVwIHRvIDIgcG9zc2libGUgZmluZ2VyIHRvdWNoZXMuCiAgKiBFYWNoIGZpbmdlciB0b3VjaCBwcm92aWRlcyAgMTIgYml0IFggWSBjby1vcmRpbmF0ZXMsIHRoZSB2YWx1ZXMgYXJlIHNwbGl0CiAgKiBhY3Jvc3MgMiByZWdpc3RlcnMsIGFuZCBhbiA4IGJpdCAgWiB2YWx1ZSAqLwogI2RlZmluZSBUTUExMjE3X0ZJTkdFUl9TVEFURQkJMHgxOCAvKiBGaW5nZXIgU3RhdGUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2NtZHMuYyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2NtZHMuYwppbmRleCAxNDI5NjA4NS4uMzczNWVkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfY21kcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2NtZHMuYwpAQCAtOTE0LDcgKzkxNCw3IEBACiAgKiBSZXR1cm46CiAgKglzdGF0dXMKICAqCi0gKiBDbG9zZXIgYXBsaWNhdGlvbiBoYW5kbGUgYW5kIHJlbGVhc2UgYXBwIHNwZWNpZmljCisgKiBDbG9zZXIgYXBwbGljYXRpb24gaGFuZGxlIGFuZCByZWxlYXNlIGFwcCBzcGVjaWZpYwogICogcmVzb3VyY2VzLgogICovCiBlbnVtIEJDX1NUQVRVUyBjcnlzdGFsaGRfdXNlcl9jbG9zZShzdHJ1Y3QgY3J5c3RhbGhkX2NtZCAqY3R4LCBzdHJ1Y3QgY3J5c3RhbGhkX3VzZXIgKnVjKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfaHcuYyBiL2RyaXZlcnMvc3RhZ2luZy9jcnlzdGFsaGQvY3J5c3RhbGhkX2h3LmMKaW5kZXggMTNhNTE0ZC4uNWFjZjM5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2NyeXN0YWxoZC9jcnlzdGFsaGRfaHcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3J5c3RhbGhkL2NyeXN0YWxoZF9ody5jCkBAIC0zMDIsNyArMzAyLDcgQEAKIAljcnlzdGFsaGRfZW5hYmxlX2ludGVycnVwdHMoYWRwKTsKIAogCS8qIEVuYWJsZSB0aGUgb3B0aW9uIGZvciBnZXR0aW5nIHRoZSB0b3RhbCBuby4gb2YgRFdPUkRTCi0JICogdGhhdCBoYXZlIGJlZW4gdHJhbnNmZXJlZCBieSB0aGUgUlhETUEgZW5naW5lCisJICogdGhhdCBoYXZlIGJlZW4gdHJhbnNmZXJyZWQgYnkgdGhlIFJYRE1BIGVuZ2luZQogCSAqLwogCWRiZ19vcHRpb25zID0gY3J5c3RhbGhkX3JlZ19yZChhZHAsIE1JU0MxX0RNQV9ERUJVR19PUFRJT05TX1JFRyk7CiAJZGJnX29wdGlvbnMgfD0gMHgxMDsKQEAgLTE3NzYsNyArMTc3Niw3IEBACiAJCXJldHVybiBzdHM7CiAJfQogCi0JLypHZXQgdGhlIFJlc3BvbmNlIEFkZHJlc3MqLworCS8qR2V0IHRoZSBSZXNwb25zZSBBZGRyZXNzKi8KIAljbWRfcmVzX2FkZHIgPSBiY19kZWNfcmVnX3JkKGh3LT5hZHAsIENwdTJIc3RNYngxKTsKIAogCS8qUmVhZCB0aGUgUmVzcG9uc2UqLwpAQCAtMjM2Nyw3ICsyMzY3LDcgQEAKIAlCQ01MT0coQkNNTE9HX0lORk8sICJjbG9jayBpcyBtb3ZpbmcgdG8gJWQgd2l0aCBuICVkIHdpdGggdmNvX21nICVkXG4iLAogCSAgICAgICBody0+Y29yZV9jbG9ja19taHosIG4sIHZjb19tZyk7CiAKLQkvKiBDaGFuZ2UgdGhlIERSQU0gcmVmcmVzaCByYXRlIHRvIGFjY29tb2RhdGUgdGhlIG5ldyBmcmVxdWVuY3kgKi8KKwkvKiBDaGFuZ2UgdGhlIERSQU0gcmVmcmVzaCByYXRlIHRvIGFjY29tbW9kYXRlIHRoZSBuZXcgZnJlcXVlbmN5ICovCiAJLyogcmVmcmVzaCByZWcgPSAoKHJlZnJlc2hfcmF0ZSAqIGNsb2NrX3JhdGUpLzE2KSAtIDE7IHJvdW5kaW5nIHVwKi8KIAlyZWZyZXNoX3JlZyA9ICg3ICogaHctPmNvcmVfY2xvY2tfbWh6IC8gMTYpOwogCWJjX2RlY19yZWdfd3IoaHctPmFkcCwgU0RSQU1fUkVGX1BBUkFNLCAoKDEgPDwgMTIpIHwgcmVmcmVzaF9yZWcpKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmMgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5jCmluZGV4IGYyNzRjNzcuLjVjYzM0MjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuYwpAQCAtMTQ1NSw3ICsxNDU1LDcgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBJZiB0aGUgZGVzY3JpcHRvciBoYXMgbm90IHJlY292ZXJlZCwgdGhlbiBsZWF2aW5nIHRoZSBFTVBUWQogICAgICAgICAgICAgICogZW50cnkgc2V0IHdpbGwgbm90IHNpZ25hbCB0byB0aGUgTVVTWUNDIHRoYXQgdGhpcyBkZXNjcmlwdG9yCi0gICAgICAgICAgICAgKiBoYXMgYmVlbiBzZXJ2aWNlZC4gVGhlIEludGVycnVwdCBRdWV1ZSBjYW4gdGhlbiBzdGFydCBsb29zaW5nCisgICAgICAgICAgICAgKiBoYXMgYmVlbiBzZXJ2aWNlZC4gVGhlIEludGVycnVwdCBRdWV1ZSBjYW4gdGhlbiBzdGFydCBsb3NpbmcKICAgICAgICAgICAgICAqIGF2YWlsYWJsZSBkZXNjcmlwdG9ycyBhbmQgTVVTWUNDIGV2ZW50dWFsbHkgZW5jb3VudGVycyBhbmQKICAgICAgICAgICAgICAqIHJlcG9ydHMgdGhlIElOVEZVTEwgY29uZGl0aW9uLiAgUGVyIG1hbnVhbCwgY2hhbmdpbmcgYW55IGJpdAogICAgICAgICAgICAgICogbWFya3MgZGVzY3JpcHRvciBhcyBhdmFpbGFibGUsIHRodXMgdGhlIHVzZSBvZiBkaWZmZXJlbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmggYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL211c3ljYy5oCmluZGV4IGQyYzkxZWYuLjY4ZjM2NjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9jeHQxZTEvbXVzeWNjLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9tdXN5Y2MuaApAQCAtNzQsNyArNzQsNyBAQAogCiAjZGVmaW5lIElOVF9RVUVVRV9TSVpFICAgIE1VU1lDQ19OSVFECiAKLS8qIFJBTSBpbWFnZSBvZiBNVVNZQ0MgcmVnaXN0ZXJzIGxheWVkIG91dCBhcyBhIEMgc3RydWN0dXJlICovCisvKiBSQU0gaW1hZ2Ugb2YgTVVTWUNDIHJlZ2lzdGVycyBsYWlkIG91dCBhcyBhIEMgc3RydWN0dXJlICovCiAgICAgc3RydWN0IG11c3ljY19ncm91cHIKICAgICB7CiAgICAgICAgIFZJTlQzMiAgICAgIHRocFszMl07ICAgIC8qIFRyYW5zbWl0IEhlYWQgUG9pbnRlciBbNS0yOV0gICAgICAgICAgICovCkBAIC05Niw3ICs5Niw3IEBACiAgICAgICAgIFZJTlQzMiAgICAgIHBjZDsgICAgICAgIC8qIFBvcnQgQ29uZmlndXJhdGlvbiBEZXNjcmlwdG9yIFs1LTE5XSAgICovCiAgICAgfTsKIAotLyogaGFyZHdhcmUgTVVTWUNDIHJlZ2lzdGVycyBsYXllZCBvdXQgYXMgYSBDIHN0cnVjdHVyZSAqLworLyogaGFyZHdhcmUgTVVTWUNDIHJlZ2lzdGVycyBsYWlkIG91dCBhcyBhIEMgc3RydWN0dXJlICovCiAgICAgc3RydWN0IG11c3ljY19nbG9iYWxyCiAgICAgewogICAgICAgICBWSU5UMzIgICAgICBnYnA7ICAgICAgICAvKiBHcm91cCBCYXNlIFBvaW50ZXIgICAgICAgICAgICAgICAgICAgICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9wbWNjNF9kZWZzLmggYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3BtY2M0X2RlZnMuaAppbmRleCAxODYzNDdiLi5hMzk1MDVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3BtY2M0X2RlZnMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3BtY2M0X2RlZnMuaApAQCAtNTQsOCArNTQsOCBAQAogI2RlZmluZSBNVVNZQ0NfTVRVICAgICAgICAgIDIwNDggIC8qIGRlZmF1bHQgKi8KICNkZWZpbmUgTVVTWUNDX1RYREVTQ19NSU4gICAxMCAgICAvKiBIRExDIG1vZGUgZGVmYXVsdCAqLwogI2RlZmluZSBNVVNZQ0NfUlhERVNDX01JTiAgIDE4ICAgIC8qIEhETEMgbW9kZSBkZWZhdWx0ICovCi0jZGVmaW5lIE1VU1lDQ19UWERFU0NfVFJBTlMgNCAgICAgLyogVHJhbnNwYXJlbnQgbW9kZSBtaW51bXVtICMgb2YgVFggZGVzY3JpcHRvcnMgKi8KLSNkZWZpbmUgTVVTWUNDX1JYREVTQ19UUkFOUyAxMiAgICAvKiBUcmFuc3BhcmVudCBtb2RlIG1pbnVtdW0gIyBvZiBSWCBkZXNjcmlwdG9ycyAqLworI2RlZmluZSBNVVNZQ0NfVFhERVNDX1RSQU5TIDQgICAgIC8qIFRyYW5zcGFyZW50IG1vZGUgbWluaW11bSAjIG9mIFRYIGRlc2NyaXB0b3JzICovCisjZGVmaW5lIE1VU1lDQ19SWERFU0NfVFJBTlMgMTIgICAgLyogVHJhbnNwYXJlbnQgbW9kZSBtaW5pbXVtICMgb2YgUlggZGVzY3JpcHRvcnMgKi8KIAogI2RlZmluZSBNQVhfREVGQVVMVF9JRlFMRU4gIDMyICAgIC8qIG5ldHdvcmsgcWxlbiAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZWNyYy5jIGIvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVjcmMuYwppbmRleCA1MTIzMjk0Li4zZjNjZDYwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVjcmMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZWNyYy5jCkBAIC05NSw3ICs5NSw3IEBACiAKICAgICAvKgogICAgICAqIGlmIHRhYmxlIG5vdCB5ZXQgY3JlYXRlZCwgZG8gc28uIERvbid0IGNhcmUgYWJvdXQgImV4dHJhIiB0aW1lCi0gICAgICogY2hlY2tpbmcgdGhpcyBldmVyeXRpbWUgc2JlQ3JjKCkgaXMgY2FsbGVkLCBzaW5jZSBDUkMgY2FsY3VsYXRpb25zIGFyZQorICAgICAqIGNoZWNraW5nIHRoaXMgZXZlcnkgdGltZSBzYmVDcmMoKSBpcyBjYWxsZWQsIHNpbmNlIENSQyBjYWxjdWxhdGlvbnMgYXJlCiAgICAgICogYWxyZWFkeSB0aW1lIGNvbnN1bWluZwogICAgICAqLwogICAgIGlmICghY3JjVGFibGVJbml0KQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2N4dDFlMS9zYmVwcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZXByb2MuYwppbmRleCA3MGI5YjMzLi5mNDI1MzFjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZXByb2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvY3h0MWUxL3NiZXByb2MuYwpAQCAtMjM5LDcgKzIzOSw3IEBACiAgICAgICovCiAKICNpZiAxCi0gICAgLyogIzQgLSBpbnRlcHJldGF0aW9uIG9mIGFib3ZlID0gc2V0IEVPRiwgcmV0dXJuIGxlbiAqLworICAgIC8qICM0IC0gaW50ZXJwcmV0YXRpb24gb2YgYWJvdmUgPSBzZXQgRU9GLCByZXR1cm4gbGVuICovCiAgICAgKmVvZiA9IDE7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfYWRkcmVzc19tYXAuaCBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX2FkZHJlc3NfbWFwLmgKaW5kZXggZTZjOGNiMy4uNDI1ZTkyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfYWRkcmVzc19tYXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9hZGRyZXNzX21hcC5oCkBAIC04NTYsNyArODU2LDcgQEAKICAqLwogCiAvKgotICogc3RydWN0dXJlIGZvciBzcGFjZSBhdmFpbGlhYmxlIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcC4KKyAqIHN0cnVjdHVyZSBmb3Igc3BhY2UgYXZhaWxhYmxlIHJlZyBpbiByeG1hYyBhZGRyZXNzIG1hcC4KICAqIGxvY2F0ZWQgYXQgYWRkcmVzcyAweDQwOTQKICAqCiAgKiAzMS0xNzogcmVzZXJ2ZWQKQEAgLTEwMzEsNyArMTAzMSw3IEBACiAgKiAzMTogcmVzZXQgTUlJIG1nbXQKICAqIDMwLTY6IHVudXNlZAogICogNTogc2NhbiBhdXRvIGluY3JlbWVudAotICogNDogcHJlYW1ibGUgc3VwcmVzcworICogNDogcHJlYW1ibGUgc3VwcHJlc3MKICAqIDM6IHVuZGVmaW5lZAogICogMi0wOiBtZ210IGNsb2NrIHJlc2V0CiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3BoeS5oIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcGh5LmgKaW5kZXggNzgzNDlhZC4uOTQ2YzBjNTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3BoeS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3BoeS5oCkBAIC00NjgsNyArNDY4LDcgQEAKICNkZWZpbmUgVFJVRVBIWV9BTkVHX0NPTVBMRVRFICAgICAgICAgICAxCiAjZGVmaW5lIFRSVUVQSFlfQU5FR19ESVNBQkxFRCAgICAgICAgICAgMgogCi0vKiBEZWZpbmUgZHVwbGV4IGFkdmVydGlzbWVudCBmbGFncyAqLworLyogRGVmaW5lIGR1cGxleCBhZHZlcnRpc2VtZW50IGZsYWdzICovCiAjZGVmaW5lIFRSVUVQSFlfQURWX0RVUExFWF9OT05FICAgICAgICAgMHgwMAogI2RlZmluZSBUUlVFUEhZX0FEVl9EVVBMRVhfRlVMTCAgICAgICAgIDB4MDEKICNkZWZpbmUgVFJVRVBIWV9BRFZfRFVQTEVYX0hBTEYgICAgICAgICAweDAyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMTBfcnguYwppbmRleCAzMzkxMzZmLi5mYzZiZDQzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZXQxMzF4L2V0MTMxMF9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzEwX3J4LmMKQEAgLTEyMiw3ICsxMjIsNyBAQAogCSAqIG51bWJlciBvZiBlbnRyaWVzIGluIEZCUjEuCiAJICoKIAkgKiBGQlIxIGhvbGRzICJsYXJnZSIgZnJhbWVzLCBGQlIwIGhvbGRzICJzbWFsbCIgZnJhbWVzLiAgSWYgRkJSMQotCSAqIGVudHJpZXMgYXJlIGh1Z2UgaW4gb3JkZXIgdG8gYWNjb21vZGF0ZSBhICJqdW1ibyIgZnJhbWUsIHRoZW4gaXQKKwkgKiBlbnRyaWVzIGFyZSBodWdlIGluIG9yZGVyIHRvIGFjY29tbW9kYXRlIGEgImp1bWJvIiBmcmFtZSwgdGhlbiBpdAogCSAqIHdpbGwgaGF2ZSBsZXNzIGVudHJpZXMuICBDb252ZXJzZWx5LCBGQlIxIHdpbGwgbm93IGJlIHJlbGllZCB1cG9uCiAJICogdG8gY2FycnkgbW9yZSAibm9ybWFsIiBmcmFtZXMsIHRodXMgaXQncyBlbnRyeSBzaXplIGFsc28gaW5jcmVhc2VzCiAJICogYW5kIHRoZSBudW1iZXIgb2YgZW50cmllcyBnb2VzIHVwIHRvbyAoc2luY2UgaXQgbm93IGNhcnJpZXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X2lzci5jIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaXNyLmMKaW5kZXggY2U0ZDkzMC4uZjcxNmU0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaXNyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfaXNyLmMKQEAgLTQ2Niw3ICs0NjYsNyBAQAogCQkvKiBIYW5kbGUgU0xWIFRpbWVvdXQgSW50ZXJydXB0ICovCiAJCWlmIChzdGF0dXMgJiBFVF9JTlRSX1NMVl9USU1FT1VUKSB7CiAJCQkvKgotCQkJICogVGhpcyBtZWFucyBhIHRpbWVvdXQgaGFzIG9jY3VyZWQgb24gYSByZWFkIG9yCisJCQkgKiBUaGlzIG1lYW5zIGEgdGltZW91dCBoYXMgb2NjdXJyZWQgb24gYSByZWFkIG9yCiAJCQkgKiB3cml0ZSByZXF1ZXN0IHRvIG9uZSBvZiB0aGUgSkFHQ29yZSByZWdpc3RlcnMuIFRoZQogCQkJICogR2xvYmFsIFJlc291cmNlcyBibG9jayBoYXMgdGVybWluYXRlZCB0aGUgcmVxdWVzdAogCQkJICogYW5kIG9uIGEgcmVhZCByZXF1ZXN0LCByZXR1cm5lZCBhICJmYWtlIiB2YWx1ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ldDEzMXgvZXQxMzF4X25ldGRldi5jIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfbmV0ZGV2LmMKaW5kZXggMGMyOThjYS4uYjI1YmFlMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfbmV0ZGV2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2V0MTMxeC9ldDEzMXhfbmV0ZGV2LmMKQEAgLTQxNSw3ICs0MTUsNyBAQAogCSAqLwogCVBhY2tldEZpbHRlciA9IGFkYXB0ZXItPlBhY2tldEZpbHRlcjsKIAotCS8qIENsZWFyIHRoZSAnbXVsdGljYXN0JyBmbGFnIGxvY2FsbHk7IGJlY3Vhc2Ugd2Ugb25seSBoYXZlIGEgc2luZ2xlCisJLyogQ2xlYXIgdGhlICdtdWx0aWNhc3QnIGZsYWcgbG9jYWxseTsgYmVjYXVzZSB3ZSBvbmx5IGhhdmUgYSBzaW5nbGUKIAkgKiBmbGFnIHRvIGNoZWNrIG11bHRpY2FzdCwgYW5kIG11bHRpcGxlIG11bHRpY2FzdCBhZGRyZXNzZXMgY2FuIGJlCiAJICogc2V0LCB0aGlzIGlzIHRoZSBlYXNpZXN0IHdheSB0byBkZXRlcm1pbmUgaWYgbW9yZSB0aGFuIG9uZQogCSAqIG11bHRpY2FzdCBhZGRyZXNzIGlzIGJlaW5nIHNldC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZGV2LmggYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2Rldi5oCmluZGV4IDRhODliZDEuLjBiNjNmMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfZGV2LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9kZXYuaApAQCAtMzAsNyArMzAsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVhZF9yZWcKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSB2YWx1ZSBvZiBhIGdpdmVuIEFTSUMgcmVnaXN0ZXIuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHZhbHVlIG9mIGEgZ2l2ZW4gQVNJQyByZWdpc3Rlci4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgICBvZmZzZXQgLSBBU0lDIHJlZ2lzdGVyIG9mZnNldApAQCAtNDksNyArNDksNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfd3JpdGVfcmVnCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiBBU0lDIHJlZ2lzdGVyLgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHZhbHVlIGZvciBhIGdpdmVuIEFTSUMgcmVnaXN0ZXIuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyAgICAgb2Zmc2V0IC0gQVNJQyByZWdpc3RlciBvZmZzZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfaHcuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXBjbWNpYS9mdDEwMDBfaHcuYwppbmRleCBmZjY5MWQ5Li5lZWI3ZGQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC1wY21jaWEvZnQxMDAwX2h3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtcGNtY2lhL2Z0MTAwMF9ody5jCkBAIC05MCw3ICs5MCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9hc2ljX3JlYWQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXRyaWV2ZSB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBBU0lDCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHNwZWNpZmljIEFTSUMKIC8vICAgICAgICAgICAgIHJlZ2lzdGVyLgogLy8gSW5wdXQ6CiAvLyAgICBkZXYgLSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTEwNyw3ICsxMDcsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfYXNpY193cml0ZQotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBBU0lDCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHNldCB0aGUgdmFsdWUgb2YgYSBzcGVjaWZpYyBBU0lDCiAvLyAgICAgICAgICAgICByZWdpc3Rlci4KIC8vIElucHV0OgogLy8gICAgZGV2IC0gbmV0d29yayBkZXZpY2Ugc3RydWN0dXJlCkBAIC0xMjQsNyArMTI0LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3JlYWRfZmlmb19sZW4KLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBBU0lDIFVwbGluayBGSUZPIHN0YXR1cyByZWdpc3RlcgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIHRoZSBBU0lDIFVwbGluayBGSUZPIHN0YXR1cyByZWdpc3RlcgogLy8gICAgICAgICAgICAgd2hpY2ggd2lsbCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZW1haW5pbmcgaW4gdGhlIFVwbGluayBGSUZPLgogLy8gICAgICAgICAgICAgU2l4dGVlbiBieXRlcyBhcmUgc3VidHJhY3RlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgQVNJQyBkb2VzIG5vdAogLy8gICAgICAgICAgICAgcmVhY2ggaXRzIHRocmVzaG9sZC4KQEAgLTE0OCw3ICsxNDgsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVhZF9kcHJhbQotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKEVsZWN0cmFidXp6IEFTSUMgb25seSkKIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTE3NSw3ICsxNzUsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfd3JpdGVfZHByYW0KLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgd3JpdGUgdG8gYSBzcGVjaWZpYyBhcmVhIG9mIGRwcmFtCiAvLyAgICAgICAgICAgICAoRWxlY3RyYWJ1enogQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMjAxLDcgKzIwMSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWFkX2RwcmFtX21hZ18xNgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKE1hZ25lbWl0ZSBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0yMzMsNyArMjMzLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3dyaXRlX2RwcmFtX21hZ18xNgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KIC8vICAgICAgICAgICAgIChNYWduZW1pdGUgQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMjYzLDcgKzI2Myw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWFkX2RwcmFtX21hZ18zMgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgdGhlIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQogLy8gICAgICAgICAgICAgKE1hZ25lbWl0ZSBBU0lDIG9ubHkpCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0yOTAsNyArMjkwLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3dyaXRlX2RwcmFtX21hZ18zMgotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHdyaXRlIHRvIGEgc3BlY2lmaWMgYXJlYSBvZiBkcHJhbQorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCB3cml0ZSB0byBhIHNwZWNpZmljIGFyZWEgb2YgZHByYW0KIC8vICAgICAgICAgICAgIChNYWduZW1pdGUgQVNJQyBvbmx5KQogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMzE1LDcgKzMxNSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9lbmFibGVfaW50ZXJydXB0cwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBpbnRlcnJ1cHRzIGJhc2Ugb24gdGhlIGN1cnJlbnQgaW50ZXJydXB0IG1hc2suCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGVuYWJsZSBpbnRlcnJ1cHRzIGJhc2Ugb24gdGhlIGN1cnJlbnQgaW50ZXJydXB0IG1hc2suCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyBPdXRwdXQ6CkBAIC0zNDAsNyArMzQwLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2Rpc2FibGVfaW50ZXJydXB0cwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGRpc2FibGUgYWxsIGludGVycnVwdHMuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGRpc2FibGUgYWxsIGludGVycnVwdHMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyBPdXRwdXQ6CkBAIC0zNjQsNyArMzY0LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2FzaWMKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsIHRoZSBDYXJkIFNlcnZpY2UgZnVuY3Rpb24gdG8gcmVzZXQgdGhlCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIENhcmQgU2VydmljZSBmdW5jdGlvbiB0byByZXNldCB0aGUKIC8vICAgICAgICAgICAgIEFTSUMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC00MDgsNyArNDA4LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2NhcmQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gT3V0cHV0OgpAQCAtNTcxLDcgKzU3MSw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jaGtjYXJkCi0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgY2hlY2sgaWYgdGhlIGRldmljZSBpcyBwcmVzZW50bHkgYXZhaWxhYmxlIG9uCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudGx5IGF2YWlsYWJsZSBvbgogLy8gICAgICAgICAgICAgdGhlIHN5c3RlbS4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTYwNyw3ICs2MDcsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfaGJjaGsKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBwZXJmb3JtIHRoZSBoZWFydCBiZWF0IGNoZWNrIG9mIHRoZSBEU1AgYXMKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcGVyZm9ybSB0aGUgaGVhcnQgYmVhdCBjaGVjayBvZiB0aGUgRFNQIGFzCiAvLyAgICAgICAgICAgICB3ZWxsIGFzIHRoZSBBU0lDLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtODI4LDcgKzgyOCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9zZW5kX2NtZAotLy8gRGVzY3JpcHRvbjoKKy8vIERlc2NyaXB0aW9uOgogLy8gSW5wdXQ6CiAvLyBPdXRwdXQ6CiAvLwpAQCAtOTA4LDcgKzkwOCw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9yZWNlaXZlX2NtZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgYSBtZXNzYWdlIGZyb20gdGhlIGRwcmFtIGFyZWEuCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHJlYWQgYSBtZXNzYWdlIGZyb20gdGhlIGRwcmFtIGFyZWEuCiAvLyBJbnB1dDoKIC8vICAgIGRldiAtIG5ldHdvcmsgZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgcGJ1ZmZlciAtIGNhbGxlciBzdXBwbHkgYWRkcmVzcyB0byBidWZmZXIKQEAgLTEwMDMsNyArMTAwMyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9wcm9jX2Rydm1zZwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHByb2Nlc3MgdGhlIHZhcmlvdXMgZHJpdmVyIG1lc3NhZ2VzLgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBwcm9jZXNzIHRoZSB2YXJpb3VzIGRyaXZlciBtZXNzYWdlcy4KIC8vIElucHV0OgogLy8gICAgIGRldiAgICAtIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgICBwbnh0cGggLSBwb2ludGVyIHRvIG5leHQgcHNldWRvIGhlYWRlcgpAQCAtMTI4NSw3ICsxMjg1LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3BhcnNlX2RwcmFtX21zZwotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHBhcnNlIHRoZSBtZXNzYWdlIHJlY2VpdmVkIGZyb20gdGhlIERTUAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBwYXJzZSB0aGUgbWVzc2FnZSByZWNlaXZlZCBmcm9tIHRoZSBEU1AKIC8vICAgICAgICAgICAgIHZpYSB0aGUgRFBSQU0gaW50ZXJmYWNlLgogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQpAQCAtMTQ0Miw3ICsxNDQyLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX2ZsdXNoX2ZpZm8KLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBmbHVzaCBvbmUgcGFja2V0IGZyb20gdGhlIGRvd25saW5rCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGZsdXNoIG9uZSBwYWNrZXQgZnJvbSB0aGUgZG93bmxpbmsKIC8vICAgICAgICAgICAgIEZJRk8uCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgICAtIGRldmljZSBzdHJ1Y3R1cmUKQEAgLTE1ODcsNyArMTU4Nyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jb3B5X3VwX3BrdAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHB1bGwgRmxhcmlvbiBwYWNrZXRzIG91dCBvZiB0aGUgRG93bmxpbmsKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgcHVsbCBGbGFyaW9uIHBhY2tldHMgb3V0IG9mIHRoZSBEb3dubGluawogLy8gICAgICAgICAgICAgRklGTyBhbmQgY29udmVydCBpdCB0byBhbiBldGhlcm5ldCBwYWNrZXQuICBUaGUgZXRoZXJuZXQgcGFja2V0IHdpbGwKIC8vICAgICAgICAgICAgIHRoZW4gYmUgZGVsaXZlciB0byB0aGUgVENQL0lQIHN0YWNrLgogLy8gSW5wdXQ6CkBAIC0xNzczLDcgKzE3NzMsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfY29weV9kb3duX3BrdAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYW4gZXRoZXJuZXQgcGFja2V0IGFuZCBjb252ZXJ0IGl0IHRvCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIHRha2UgYW4gZXRoZXJuZXQgcGFja2V0IGFuZCBjb252ZXJ0IGl0IHRvCiAvLyAgICAgICAgICAgICBhIEZsYXJpb24gcGFja2V0IHByaW9yIHRvIHNlbmRpbmcgaXQgdG8gdGhlIEFTSUMgRG93bmxpbmsKIC8vICAgICAgICAgICAgIEZJRk8uCiAvLyBJbnB1dDoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfZG93bmxvYWQuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfZG93bmxvYWQuYwppbmRleCA4ZTYyMjQyLi4xOTcyYjcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2Rvd25sb2FkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9kb3dubG9hZC5jCkBAIC00ODgsNyArNDg4LDcgQEAKIC8vIFBhcmFtZXRlcnM6ICBzdHJ1Y3QgZnQxMDAwX2RldmljZSAgLSBkZXZpY2Ugc3RydWN0dXJlCiAvLyAgICAgICAgICAgICAgdTE2ICoqcFVzRmlsZSAtIERTUCBpbWFnZSBmaWxlIHBvaW50ZXIgaW4gdTE2CiAvLyAgICAgICAgICAgICAgdTggICoqcFVjRmlsZSAtIERTUCBpbWFnZSBmaWxlIHBvaW50ZXIgaW4gdTgKLS8vICAgICAgICAgICAgICBsb25nICAgd29yZF9sZW5ndGggLSBsZW5naHQgb2YgdGhlIGJ1ZmZlciB0byBiZSB3cml0dGVuCisvLyAgICAgICAgICAgICAgbG9uZyAgIHdvcmRfbGVuZ3RoIC0gbGVuZ3RoIG9mIHRoZSBidWZmZXIgdG8gYmUgd3JpdHRlbgogLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIERQUkFNCiAvLwogLy8gUmV0dXJuczogICAgIFNUQVRVU19TVUNDRVNTIC0gc3VjY2VzcwpAQCAtNjI4LDcgKzYyOCw3IEBACiAvLyBQYXJhbWV0ZXJzOiAgc3RydWN0IGZ0MTAwMF9kZXZpY2UgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gICAgICAgICAgICAgIHUxNiAqKnBVc0ZpbGUgLSBEU1AgaW1hZ2UgZmlsZSBwb2ludGVyIGluIHUxNgogLy8gICAgICAgICAgICAgIHU4ICAqKnBVY0ZpbGUgLSBEU1AgaW1hZ2UgZmlsZSBwb2ludGVyIGluIHU4Ci0vLyAgICAgICAgICAgICAgbG9uZyAgIHdvcmRfbGVuZ3RoIC0gbGVuZ2h0IG9mIHRoZSBidWZmZXIgdG8gYmUgd3JpdHRlbgorLy8gICAgICAgICAgICAgIGxvbmcgICB3b3JkX2xlbmd0aCAtIGxlbmd0aCBvZiB0aGUgYnVmZmVyIHRvIGJlIHdyaXR0ZW4KIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byBEUFJBTQogLy8KIC8vIFJldHVybnM6ICAgICBTVEFUVVNfU1VDQ0VTUyAtIHN1Y2Nlc3MKQEAgLTgxNyw3ICs4MTcsNyBAQAogCQkJCQkJICogRXJyb3IsIGJleW9uZCBib290IGNvZGUgcmFuZ2UuCiAJCQkJCQkgKi8KIAkJCQkJCURFQlVHCi0JCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBCT09UIGNvZGUgYm91bmRyeS5cbiIsCisJCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBCT09UIGNvZGUgYm91bmRhcnkuXG4iLAogCQkJCQkJICAgICAoaW50KXdvcmRfbGVuZ3RoKTsKIAkJCQkJCXN0YXR1cyA9IFNUQVRVU19GQUlMVVJFOwogCQkJCQkJYnJlYWs7CkBAIC05NTAsNyArOTUwLDcgQEAKIAkJCQkJCSAqIEVycm9yLCBiZXlvbmQgYm9vdCBjb2RlIHJhbmdlLgogCQkJCQkJICovCiAJCQkJCQlERUJVRwotCQkJCQkJICAgICgiRlQxMDAwOmRvd25sb2FkOkRvd25sb2FkIGVycm9yOiBSZXF1ZXN0ZWQgbGVuPSVkIGV4Y2VlZHMgRFNQIGNvZGUgYm91bmRyeS5cbiIsCisJCQkJCQkgICAgKCJGVDEwMDA6ZG93bmxvYWQ6RG93bmxvYWQgZXJyb3I6IFJlcXVlc3RlZCBsZW49JWQgZXhjZWVkcyBEU1AgY29kZSBib3VuZGFyeS5cbiIsCiAJCQkJCQkgICAgIChpbnQpd29yZF9sZW5ndGgpOwogCQkJCQkJc3RhdHVzID0gU1RBVFVTX0ZBSUxVUkU7CiAJCQkJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaHcuYyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaHcuYwppbmRleCA3OGRjZDQ5Li42ODRlNjllIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2h3LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9ody5jCkBAIC01ODUsNyArNTg1LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2FzaWMKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCBjYWxsIHRoZSBDYXJkIFNlcnZpY2UgZnVuY3Rpb24gdG8gcmVzZXQgdGhlCisvLyBEZXNjcmlwdGlvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNhbGwgdGhlIENhcmQgU2VydmljZSBmdW5jdGlvbiB0byByZXNldCB0aGUKIC8vICAgICAgICAgICAgIEFTSUMuCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC02MjYsNyArNjI2LDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3Jlc2V0X2NhcmQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZXNldCB0aGUgY2FyZAogLy8gSW5wdXQ6CiAvLyAgICAgZGV2ICAgIC0gZGV2aWNlIHN0cnVjdHVyZQogLy8gT3V0cHV0OgpAQCAtOTE3LDcgKzkxNyw3IEBACiAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8KIC8vIEZ1bmN0aW9uOiAgIGZ0MTAwMF9jb3B5X2Rvd25fcGt0Ci0vLyBEZXNjcmlwdG9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGNvbnZlcnQgaXQgdG8KKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhbiBldGhlcm5ldCBwYWNrZXQgYW5kIGNvbnZlcnQgaXQgdG8KIC8vICAgICAgICAgICAgIGEgRmxhcmlvbiBwYWNrZXQgcHJpb3IgdG8gc2VuZGluZyBpdCB0byB0aGUgQVNJQyBEb3dubGluawogLy8gICAgICAgICAgICAgRklGTy4KIC8vIElucHV0OgpAQCAtMTA3NSwxMCArMTA3NSwxMCBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfY29weV91cF9wa3QKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlIGEgcGFja2V0IGZyb20gdGhlIEZJRk8gdXAgbGluayBhbmQKKy8vIERlc2NyaXB0aW9uOiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGFrZSBhIHBhY2tldCBmcm9tIHRoZSBGSUZPIHVwIGxpbmsgYW5kCiAvLyAgICAgICAgICAgICBjb252ZXJ0IGl0IGludG8gYW4gZXRoZXJuZXQgcGFja2V0IGFuZCBkZWxpdmVyIGl0IHRvIHRoZSBJUCBzdGFjawogLy8gSW5wdXQ6Ci0vLyAgICAgdXJiIC0gdGhlIHJlY2V2aW5nIHVzYiB1cmIKKy8vICAgICB1cmIgLSB0aGUgcmVjZWl2aW5nIHVzYiB1cmIKIC8vCiAvLyBPdXRwdXQ6CiAvLyAgICAgc3RhdHVzIC0gRkFJTFVSRQpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvLwogLy8gRnVuY3Rpb246ICAgZnQxMDAwX3N1Ym1pdF9yeF91cmIKLS8vIERlc2NyaXB0b246IHRoZSByZWNlaXZpbmcgZnVuY3Rpb24gb2YgdGhlIG5ldHdvcmsgZHJpdmVyCisvLyBEZXNjcmlwdGlvbjogdGhlIHJlY2VpdmluZyBmdW5jdGlvbiBvZiB0aGUgbmV0d29yayBkcml2ZXIKIC8vCiAvLyBJbnB1dDoKIC8vICAgICBpbmZvIC0gYSBwcml2YXRlIHN0cnVjdHVyZSBjb250YWlucyB0aGUgZGV2aWNlIGluZm9ybWF0aW9uCkBAIC0xMzE2LDcgKzEzMTYsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfY2hrY2FyZAotLy8gRGVzY3JpcHRvbjogVGhpcyBmdW5jdGlvbiB3aWxsIGNoZWNrIGlmIHRoZSBkZXZpY2UgaXMgcHJlc2VudGx5IGF2YWlsYWJsZSBvbgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCBjaGVjayBpZiB0aGUgZGV2aWNlIGlzIHByZXNlbnRseSBhdmFpbGFibGUgb24KIC8vICAgICAgICAgICAgIHRoZSBzeXN0ZW0uCiAvLyBJbnB1dDoKIC8vICAgICBkZXYgICAgLSBkZXZpY2Ugc3RydWN0dXJlCkBAIC0xMzYzLDcgKzEzNjMsNyBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vCiAvLyBGdW5jdGlvbjogICBmdDEwMDBfcmVjZWl2ZV9jbWQKLS8vIERlc2NyaXB0b246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGEgbWVzc2FnZSBmcm9tIHRoZSBkcHJhbSBhcmVhLgorLy8gRGVzY3JpcHRpb246IFRoaXMgZnVuY3Rpb24gd2lsbCByZWFkIGEgbWVzc2FnZSBmcm9tIHRoZSBkcHJhbSBhcmVhLgogLy8gSW5wdXQ6CiAvLyAgICBkZXYgLSBuZXR3b3JrIGRldmljZSBzdHJ1Y3R1cmUKIC8vICAgIHBidWZmZXIgLSBjYWxsZXIgc3VwcGx5IGFkZHJlc3MgdG8gYnVmZmVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2lvY3RsLmggYi9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX2lvY3RsLmgKaW5kZXggM2Y3MmQ1Yi4uNmE4YTE5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF9pb2N0bC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfaW9jdGwuaApAQCAtNTUsNyArNTUsNyBAQAogICAgdW5zaWduZWQgY2hhciAgICAgc2VxX251bTsgICAgICAgICAgLy9zZXF1ZW5jZSBudW1iZXIKICAgIHVuc2lnbmVkIGNoYXIgICAgIHJzdmQyOyAgICAgICAgICAgIC8vcmVzZXJ2ZWQKICAgIHVuc2lnbmVkIHNob3J0ICAgIHFvc19jbGFzczsgICAgICAgIC8vUXVhbGl0eSBvZiBTZXJ2aWNlIGNsYXNzIChOb3QgYXBwbGljYWJsZSBvbiBNb2JpbGUpCi0gICB1bnNpZ25lZCBzaG9ydCAgICBjaGVja3N1bTsgICAgICAgICAvL1BzdWVkbyBoZWFkZXIgY2hlY2tzdW0KKyAgIHVuc2lnbmVkIHNob3J0ICAgIGNoZWNrc3VtOyAgICAgICAgIC8vUHNldWRvIGhlYWRlciBjaGVja3N1bQogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAKIHR5cGVkZWYgc3RydWN0IF9JT0NUTF9HRVRfVkVSCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX3VzYi5oIGIvZHJpdmVycy9zdGFnaW5nL2Z0MTAwMC9mdDEwMDAtdXNiL2Z0MTAwMF91c2IuaAppbmRleCBlMDQ3YzAzLi5mMmVjYjNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZnQxMDAwL2Z0MTAwMC11c2IvZnQxMDAwX3VzYi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9mdDEwMDAvZnQxMDAwLXVzYi9mdDEwMDBfdXNiLmgKQEAgLTM2NCw3ICszNjQsNyBAQAogCiAjZGVmaW5lIElTUl9FTVBUWQkJCSh1OCkweDAwIAkgLy8gbm8gYml0cyBzZXQgaW4gSVNSCiAKLSNkZWZpbmUgSVNSX0RPT1JCRUxMX0FDSwkodTgpMHgwMQkJIC8vICB0aGUgZG9vcmJlbGwgaSBzZW50IGhhcyBiZWVuIHJlY2lldmVkLgorI2RlZmluZSBJU1JfRE9PUkJFTExfQUNLCSh1OCkweDAxCQkgLy8gIHRoZSBkb29yYmVsbCBpIHNlbnQgaGFzIGJlZW4gcmVjZWl2ZWQuCiAKICNkZWZpbmUgSVNSX0RPT1JCRUxMX1BFTkQJKHU4KTB4MDIgCSAvLyAgZG9vcmJlbGwgZm9yIG1lCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9nZW5lcmljX3NlcmlhbC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMKaW5kZXggNDY2OTg4ZC4uZjI5ZGRhNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL2dlbmVyaWNfc2VyaWFsLmMKQEAgLTExMyw3ICsxMTMsNyBAQAogCiAJCWMgPSBjb3VudDsKICAKLQkJLyogVGhpcyBpcyBzYWZlIGJlY2F1c2Ugd2UgIk9XTiIgdGhlICJoZWFkIi4gTm9vbmUgZWxzZSBjYW4gCisJCS8qIFRoaXMgaXMgc2FmZSBiZWNhdXNlIHdlICJPV04iIHRoZSAiaGVhZCIuIE5vIG9uZSBlbHNlIGNhbiAKIAkJICAgY2hhbmdlIHRoZSAiaGVhZCI6IHdlIG93biB0aGUgcG9ydF93cml0ZV9tdXRleC4gKi8KIAkJLyogRG9uJ3Qgb3ZlcnJ1biB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKi8KIAkJdCA9IFNFUklBTF9YTUlUX1NJWkUgLSBwb3J0LT54bWl0X2hlYWQ7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL21hcC5oIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9tYXAuaAppbmRleCA4MzY2OTc4Li4yOGE2NjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL21hcC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vbWFwLmgKQEAgLTg3LDcgKzg3LDcgQEAKICoqIFRoZSBUb3BvbG9neSBhcnJheSBjb250YWlucyB0aGUgSUQgb2YgdGhlIHVuaXQgY29ubmVjdGVkIHRvIGVhY2ggb2YgdGhlCiAqKiBmb3VyIGxpbmtzIG9uIHRoaXMgdW5pdC4gVGhlIGVudHJ5IHdpbGwgYmUgMHhGRkZGIGlmIE5PVEhJTkcgaXMgY29ubmVjdGVkCiAqKiB0byB0aGUgbGluaywgb3Igd2lsbCBiZSAweEZGMDAgaWYgYW4gVU5LTk9XTiB1bml0IGlzIGNvbm5lY3RlZCB0byB0aGUgbGluay4KLSoqIFRoZSBOYW1lIGZpZWxkIGlzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZywgdXB0byAzMSBjaGFyYWN0ZXJzLCBjb250YWluaW5nCisqKiBUaGUgTmFtZSBmaWVsZCBpcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcsIHVwIHRvIDMxIGNoYXJhY3RlcnMsIGNvbnRhaW5pbmcKICoqIHRoZSAnY3V0ZScgbmFtZSB0aGF0IHRoZSBzeXNhZG1pbi91c2VycyBrbm93IHRoZSBSVEEgYnkuIEl0IGlzIHBlcm1pc3NpYmxlCiAqKiBmb3IgdGhpcyBzdHJpbmcgdG8gY29udGFpbiBhbnkgY2hhcmFjdGVyIGluIHRoZSByYW5nZSBcMDQwIHRvIFwxNzYgaW5jbHVzaXZlLgogKiogSW4gcGFydGljdWxhciwgY3RybCBzZXF1ZW5jZXMgYW5kIERFTCAoMHg3RiwgXDE3NykgYXJlIG5vdCBhbGxvd2VkLiBUaGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvYm9vdC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMKaW5kZXggZDk1NmRkMy4uZmZhMDFjNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9ib290LmMKQEAgLTEwOSw3ICsxMDksNyBAQAogCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiRGF0YSBhdCB1c2VyIGFkZHJlc3MgJXBcbiIsIHJicC0+RGF0YVApOwogCiAJLyoKLQkgKiogQ2hlY2sgdGhhdCB3ZSBoYXZlIHNldCBhc3NpZGUgZW5vdWdoIG1lbW9yeSBmb3IgdGhpcworCSAqKiBDaGVjayB0aGF0IHdlIGhhdmUgc2V0IGFzaWRlIGVub3VnaCBtZW1vcnkgZm9yIHRoaXMKIAkgKi8KIAlpZiAocmJwLT5Db3VudCA+IFNJWFRZX0ZPVVJfSykgewogCQlyaW9fZHByaW50ayhSSU9fREVCVUdfQk9PVCwgIlJUQSBCb290IENvZGUgVG9vIExhcmdlIVxuIik7CkBAIC0yOTMsNyArMjkzLDcgQEAKIAkJLyoKIAkJICoqICAgICAgICAgICAgICAgICAgICAgUyBUIE8gUCAhCiAJCSAqKgotCQkgKiogVXB0byB0aGlzIHBvaW50IHRoZSBjb2RlIGhhcyBiZWVuIGZhaXJseSByYXRpb25hbCwgYW5kIHBvc3NpYmx5CisJCSAqKiBVcCB0byB0aGlzIHBvaW50IHRoZSBjb2RlIGhhcyBiZWVuIGZhaXJseSByYXRpb25hbCwgYW5kIHBvc3NpYmx5CiAJCSAqKiBldmVuIHN0cmFpZ2h0IGZvcndhcmQuIFdoYXQgZm9sbG93cyBpcyBhIHBpbGUgb2YgY3J1ZCB0aGF0IHdpbGwKIAkJICoqIG1hZ2ljYWxseSB0dXJuIGludG8gc2l4IGJ5dGVzIG9mIHRyYW5zcHV0ZXIgYXNzZW1ibGVyLiBOb3JtYWxseQogCQkgKiogeW91IHdvdWxkIGV4cGVjdCBhbiBhcnJheSBvciBzb21ldGhpbmcsIGJ1dCwgYmVpbmcgbWUsIEkgaGF2ZQpAQCAtNDE5LDcgKzQxOSw3IEBACiAJCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiU2V0IGNvbnRyb2wgcG9ydFxuIik7CiAKIAkJLyoKLQkJICoqIE5vdywgd2FpdCBmb3IgdXB0byBmaXZlIHNlY29uZHMgZm9yIHRoZSBUcCB0byBzZXR1cCB0aGUgcGFybW1hcAorCQkgKiogTm93LCB3YWl0IGZvciB1cCB0byBmaXZlIHNlY29uZHMgZm9yIHRoZSBUcCB0byBzZXR1cCB0aGUgcGFybW1hcAogCQkgKiogcG9pbnRlcjoKIAkJICovCiAJCWZvciAod2FpdF9jb3VudCA9IDA7ICh3YWl0X2NvdW50IDwgcC0+UklPQ29uZi5TdGFydHVwVGltZSkgJiYgKHJlYWR3KCZIb3N0UC0+X19QYXJtTWFwUikgPT0gT2xkUGFybU1hcCk7IHdhaXRfY291bnQrKykgewpAQCAtNDc1LDcgKzQ3NSw3IEBACiAKIAkJLyoKIAkJICoqIG5vdyB3YWl0IGZvciB0aGUgY2FyZCB0byBzZXQgYWxsIHRoZSBwYXJtbWFwLT5YWFggc3R1ZmYKLQkJICoqIHRoaXMgaXMgYSB3YWl0IG9mIHVwdG8gdHdvIHNlY29uZHMuLi4uCisJCSAqKiB0aGlzIGlzIGEgd2FpdCBvZiB1cCB0byB0d28gc2Vjb25kcy4uLi4KIAkJICovCiAJCXJpb19kcHJpbnRrKFJJT19ERUJVR19CT09ULCAiTG9va2luZyBmb3IgaW5pdF9kb25lIC0gJWQgdGlja3NcbiIsIHAtPlJJT0NvbmYuU3RhcnR1cFRpbWUpOwogCQlIb3N0UC0+dGltZW91dF9pZCA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9jbWQuYwppbmRleCBmMTIxMzU3Li42MWVmZDUzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb2NtZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvY21kLmMKQEAgLTg2Myw3ICs4NjMsNyBAQAogCSAqKiBiZWluZyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB3cml0ZSBxdWV1ZSBpbnRvIHRoZSB0cmFuc21pdCBwYWNrZXRzCiAJICoqIChhZGRfdHJhbnNtaXQpIGFuZCBubyBmdXJ0aHVyIHRyYW5zbWl0IGludGVycnVwdCB3aWxsIGJlIHNlbnQgZm9yIHRoYXQKIAkgKiogZGF0YS4gVGhlIG5leHQgaW50ZXJydXB0IHdpbGwgb2NjdXIgdXAgdG8gNTAwbXMgbGF0ZXIgKFJJT0ludHIgaXMgY2FsbGVkCi0JICoqIHR3aWNlIGEgc2Vjb25kIGFzIGEgc2FmdGV5IG1lYXN1cmUpLiBUaGlzIHdhcyB0aGUgY2FzZSB3aGVuIGtlcm1pdCB3YXMKKwkgKiogdHdpY2UgYSBzZWNvbmQgYXMgYSBzYWZldHkgbWVhc3VyZSkuIFRoaXMgd2FzIHRoZSBjYXNlIHdoZW4ga2VybWl0IHdhcwogCSAqKiB1c2VkIHRvIHNlbmQgZGF0YSBpbnRvIGEgUklPIHBvcnQuIEFmdGVyIGVhY2ggcGFja2V0IHdhcyBzZW50LCBUQ0ZMU0gKIAkgKiogd2FzIGNhbGxlZCB0byBmbHVzaCB0aGUgcmVhZCBxdWV1ZSBwcmVlbXB0aXZlbHkuIFBvcnRQLT5JblVzZSB3YXMKIAkgKiogaW5jcmVtZW50ZWQsIHRoZXJlYnkgYmxvY2tpbmcgdGhlIDYgYnl0ZSBhY2tub3dsZWRnZW1lbnQgcGFja2V0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3JvdXRlLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3JvdXRlLmMKaW5kZXggZjliOTM2YS4uODc1NzM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW9yb3V0ZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvcm91dGUuYwpAQCAtNDUwLDcgKzQ1MCw3IEBACiAJCSAqKiB3ZSByZXNldCB0aGUgdW5pdCwgYmVjYXVzZSB3ZSBkaWRuJ3QgYm9vdCBpdC4KIAkJICoqIEhvd2V2ZXIsIGlmIHRoZSB0YWJsZSBpcyBmdWxsLCBpdCBjb3VsZCBiZSB0aGF0IHdlIGRpZCBib290CiAJCSAqKiB0aGlzIHVuaXQsIGFuZCBzbyB3ZSB3b24ndCByZWJvb3QgaXQsIGJlY2F1c2UgaXQgaXNuJ3QgcmVhbGx5Ci0JCSAqKiBhbGwgdGhhdCBkaXNhc3Rlcm91cyB0byBrZWVwIHRoZSBvbGQgYmlucyBpbiBtb3N0IGNhc2VzLiBUaGlzCisJCSAqKiBhbGwgdGhhdCBkaXNhc3Ryb3VzIHRvIGtlZXAgdGhlIG9sZCBiaW5zIGluIG1vc3QgY2FzZXMuIFRoaXMKIAkJICoqIGlzIGEgcmF0aGVyIHRhY2t5IGZlYXR1cmUsIGJ1dCB3ZSBhcmUgb24gdGhlIGVkZ2Ugb2YgcmVhbGxpdHkKIAkJICoqIGhlcmUsIGJlY2F1c2UgdGhlIGltcGxpY2F0aW9uIGlzIHRoYXQgc29tZW9uZSBoYXMgY29ubmVjdGVkCiAJCSAqKiAxNitNQVhfRVhUUkFfVU5JVFMgb250byBvbmUgaG9zdC4KQEAgLTY3OCw3ICs2NzgsNyBAQAogCiAJSG9zdFAtPk1hcHBpbmdbVW5pdElkXS5GbGFncyAmPSB+QkVFTl9IRVJFOwogCi0JLyogcmlvX2RwcmludChSSU9fREVCVUdfUk9VVEUsICgiVW5pdCAlZCBET0VTTlQgS05PVyBUSEUgSE9TVCFcbiIsIFVuaXRJZCkpOyAqLworCS8qIHJpb19kcHJpbnQoUklPX0RFQlVHX1JPVVRFLCAoIlVuaXQgJWQgRE9FU04nVCBLTk9XIFRIRSBIT1NUIVxuIiwgVW5pdElkKSk7ICovCiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvdHR5LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvcmlvL3Jpb3R0eS5jCmluZGV4IDhhOTAzOTMuLmU3ZTk5MTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9yaW8vcmlvdHR5LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dlbmVyaWNfc2VyaWFsL3Jpby9yaW90dHkuYwpAQCAtMTI0LDcgKzEyNCw3IEBACiAJfQogCiAJLyoKLQkgKiogR3JhYiBwb2ludGVyIHRvIHRoZSBwb3J0IHN0dWN0dXJlCisJICoqIEdyYWIgcG9pbnRlciB0byB0aGUgcG9ydCBzdHJ1Y3R1cmUKIAkgKi8KIAlQb3J0UCA9IHAtPlJJT1BvcnRwW1N5c1BvcnRdOwkvKiBHZXQgY29udHJvbCBzdHJ1YyAqLwogCXJpb19kcHJpbnRrKFJJT19ERUJVR19UVFksICJQb3J0UDogJXBcbiIsIFBvcnRQKTsKQEAgLTE2MSw3ICsxNjEsNyBAQAogCX0KIAogCS8qCi0JICoqIElmIHRoZSBSVEEgaGFzIG5vdCBib290ZWQgeWV0IGFuZCB0aGUgdXNlciBoYXMgY2hvb3NlbiB0byBibG9jaworCSAqKiBJZiB0aGUgUlRBIGhhcyBub3QgYm9vdGVkIHlldCBhbmQgdGhlIHVzZXIgaGFzIGNob3NlbiB0byBibG9jawogCSAqKiB1bnRpbCB0aGUgUlRBIGlzIHByZXNlbnQgdGhlbiB3ZSBtdXN0IHNwaW4gaGVyZSB3YWl0aW5nIGZvcgogCSAqKiB0aGUgUlRBIHRvIGJvb3QuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ2VuZXJpY19zZXJpYWwvc3guYyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jCmluZGV4IDEyOTE0NjIuLjRmOTRhYWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nZW5lcmljX3NlcmlhbC9zeC5jCkBAIC0xNTgsMTMgKzE1OCwxMyBAQAogICogUmVhZHlpbmcgZm9yIHJlbGVhc2Ugb24gMi4wLnggKHNvcnJ5IERhdmlkLCAxLjAxIGJlY29tZXMgMS4xIGZvciBSQ1MpLiAKICAqCiAgKiBSZXZpc2lvbiAwLjEyICAxOTk5LzAzLzI4IDA5OjIwOjEwICB3b2xmZgotICogRml4ZWQgcHJvYmxlbSBpbiAwLjExLCBjb250aW51ZWluZyBjbGVhbnVwLgorICogRml4ZWQgcHJvYmxlbSBpbiAwLjExLCBjb250aW51aW5nIGNsZWFudXAuCiAgKgogICogUmV2aXNpb24gMC4xMSAgMTk5OS8wMy8yOCAwODo0Njo0NCAgd29sZmYKICAqIGNsZWFudXAuIE5vdCBnb29kLgogICoKICAqIFJldmlzaW9uIDAuMTAgIDE5OTkvMDMvMjggMDg6MDk6NDMgIHdvbGZmCi0gKiBGaXhlZCBsb29zaW5nIGNoYXJhY3RlcnMgb24gY2xvc2UuCisgKiBGaXhlZCBsb3NpbmcgY2hhcmFjdGVycyBvbiBjbG9zZS4KICAqCiAgKiBSZXZpc2lvbiAwLjkgIDE5OTkvMDMvMjEgMjI6NTI6MDEgIHdvbGZmCiAgKiBQb3J0ZWQgYmFjayB0byAyLjIuLi4uIChtaW5vciB0aGluZ3MpCkBAIC0xNTg4LDcgKzE1ODgsNyBAQAogI2RlZmluZSBSMAkJaWYgKHJlYWRfc3hfYnl0ZShib2FyZCwgaSkgIT0gMHg1NSkgcmV0dXJuIDEKICNkZWZpbmUgUjEJCWlmIChyZWFkX3N4X2J5dGUoYm9hcmQsIGkpICE9IDB4YWEpIHJldHVybiAxCiAKLS8qIFRoaXMgbWVtdGVzdCB0YWtlcyBhIGh1bWFuLW5vdGljYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAorLyogVGhpcyBtZW10ZXN0IHRha2VzIGEgaHVtYW4tbm90aWNlYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAogICAgb25jZSBhIGJvb3QsIHNvIEkgZ3Vlc3MgdGhhdCBpdCBpcyB3b3J0aCBpdC4gKi8KIHN0YXRpYyBpbnQgZG9fbWVtdGVzdChzdHJ1Y3Qgc3hfYm9hcmQgKmJvYXJkLCBpbnQgbWluLCBpbnQgbWF4KQogewpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAKICNkZWZpbmUgUjEJCWlmIChyZWFkX3N4X3dvcmQoYm9hcmQsIGkpICE9IDB4YWE1NSkgcmV0dXJuIDEKIAogI2lmIDAKLS8qIFRoaXMgbWVtdGVzdCB0YWtlcyBhIGh1bWFuLW5vdGljYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAorLyogVGhpcyBtZW10ZXN0IHRha2VzIGEgaHVtYW4tbm90aWNlYWJsZSB0aW1lLiBZb3Ugbm9ybWFsbHkgb25seSBkbyBpdAogICAgb25jZSBhIGJvb3QsIHNvIEkgZ3Vlc3MgdGhhdCBpdCBpcyB3b3J0aCBpdC4gKi8KIHN0YXRpYyBpbnQgZG9fbWVtdGVzdF93KHN0cnVjdCBzeF9ib2FyZCAqYm9hcmQsIGludCBtaW4sIGludCBtYXgpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcm0uaCBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oCmluZGV4IGZiOWI0MjQuLmEzMzk0MDYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2RybS5oCkBAIC0xMzEsNyArMTMxLDcgQEAKIAl1MzIgcHJlX2FkZDsJLyogRGVzdGluYXRpb24gZm9ybWF0OiAqLwogCXUzMiBiYWNrZ3JvdW5kOwkvKiBEZXN0aW5hdGlvbiBhZGQgKi8KIAl1MzIgZHN0X2J1ZmZlcjsJLyogRGVzdGluYXRpb24gYnVmZmVyLiBJbmRleCBpbnRvIGJ1ZmZlcl9saXN0ICovCi0JdTMyIGFyZzA7CQkvKiBSZWxvYy1vcCBkZXBlbmRhbnQgKi8KKwl1MzIgYXJnMDsJCS8qIFJlbG9jLW9wIGRlcGVuZGVudCAqLwogCXUzMiBhcmcxOwogfTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfZHJ2LmMgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYwppbmRleCA0NGNkMDk1Li5kMDFkNDVlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9kcnYuYwpAQCAtNTYxLDcgKzU2MSw3IEBACiAJCWtmcmVlKGRldl9wcml2KTsKIAkJZGV2LT5kZXZfcHJpdmF0ZSA9IE5VTEw7CiAKLQkJLypkZXN0b3J5IFZCVCBkYXRhKi8KKwkJLypkZXN0cm95IFZCVCBkYXRhKi8KIAkJcHNiX2ludGVsX2Rlc3Ryb3lfYmlvcyhkZXYpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfYmlvcy5jIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfYmlvcy5jCmluZGV4IGY1YmNkMTEuLjQ4YWM4YmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX2Jpb3MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9iaW9zLmMKQEAgLTI3MSw3ICsyNzEsNyBAQAogfQogCiAvKioKLSAqIERlc3RvcnkgYW5kIGZyZWUgVkJUIGRhdGEKKyAqIERlc3Ryb3kgYW5kIGZyZWUgVkJUIGRhdGEKICAqLwogdm9pZCBwc2JfaW50ZWxfZGVzdHJveV9iaW9zKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvLmMgYi9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl9pbnRlbF9zZHZvLmMKaW5kZXggNzMxYTVhMi4uMWQyYmIwMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2by5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX3Nkdm8uYwpAQCAtNTczLDcgKzU3Myw3IEBACiAJLyogTWFrZSBhbGwgZmllbGRzIG9mIHRoZSAgYXJncy9yZXQgdG8gemVybyAqLwogCW1lbXNldChieUFyZ3MsIDAsIHNpemVvZihieUFyZ3MpKTsKIAotCS8qIEZpbGwgdXAgdGhlIGFyZ3VlbWVudCB2YWx1ZXM7ICovCisJLyogRmlsbCB1cCB0aGUgYXJndW1lbnQgdmFsdWVzOyAqLwogCWJ5QXJnc1swXSA9ICh1OCkgKGluMG91dHB1dG1hc2sgJiAweEZGKTsKIAlieUFyZ3NbMV0gPSAodTgpICgoaW4wb3V0cHV0bWFzayA+PiA4KSAmIDB4RkYpOwogCWJ5QXJnc1syXSA9ICh1OCkgKGluMW91dHB1dG1hc2sgJiAweEZGKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX2ludGVsX3Nkdm9fcmVncy5oIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmgKaW5kZXggYTFkMTQ3NS4uYzcxMDdhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfaW50ZWxfc2R2b19yZWdzLmgKQEAgLTIxNyw3ICsyMTcsNyBAQAogfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CiAKIC8qKgotICogVGFrZXMgYSBzdHJ1Y3QgcHNiX2ludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIHdoaWNoIG91dHB1dHMgYXJlIHRhcmdldHRlZCBieQorICogVGFrZXMgYSBzdHJ1Y3QgcHNiX2ludGVsX3Nkdm9fb3V0cHV0X2ZsYWdzIG9mIHdoaWNoIG91dHB1dHMgYXJlIHRhcmdldGVkIGJ5CiAgKiBmdXR1cmUgb3V0cHV0IGNvbW1hbmRzLgogICoKICAqIEFmZmVjdGVkIGNvbW1hbmRzIGluY2x1ZSBTRVRfT1VUUFVUX1RJTUlOR1NfUEFSVFsxMl0sCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl90dG1fZmVuY2VfdXNlci5oIGIvZHJpdmVycy9zdGFnaW5nL2dtYTUwMC9wc2JfdHRtX2ZlbmNlX3VzZXIuaAppbmRleCBmYzEzZjg5Li43NjJhMDU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ21hNTAwL3BzYl90dG1fZmVuY2VfdXNlci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9nbWE1MDAvcHNiX3R0bV9mZW5jZV91c2VyLmgKQEAgLTEzMCw3ICsxMzAsNyBAQAogfTsKIAogLyoKLSAqIElvY3RsIG9mZnNldHMgZnJvbWUgZXh0ZW5zdGlvbiBzdGFydC4KKyAqIElvY3RsIG9mZnNldHMgZnJvbSBleHRlbnN0aW9uIHN0YXJ0LgogICovCiAKICNkZWZpbmUgVFRNX0ZFTkNFX1NJR05BTEVEIDB4MDEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LnR4dCBiL2RyaXZlcnMvc3RhZ2luZy9nbzcwMDcvZ283MDA3LnR4dAppbmRleCAwNmE3NmRhLi45ZGIxZjM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvZ283MDA3L2dvNzAwNy50eHQKKysrIGIvZHJpdmVycy9zdGFnaW5nL2dvNzAwNy9nbzcwMDcudHh0CkBAIC0yLDcgKzIsNyBAQAogCiBQZXRlIEViZXJsZWluIDxwZXRlQHNlbnNvcmF5LmNvbT4KIAotVGhlIGRyaXZlciB3YXMgb3JpZ25hbGx5IHJlbGVhc2VkIHVuZGVyIHRoZSBHUEwgYW5kIGlzIGN1cnJlbnRseSBob3N0ZWQgYXQ6CitUaGUgZHJpdmVyIHdhcyBvcmlnaW5hbGx5IHJlbGVhc2VkIHVuZGVyIHRoZSBHUEwgYW5kIGlzIGN1cnJlbnRseSBob3N0ZWQgYXQ6CiBodHRwOi8vbmlrb3NhcGkub3JnL3dpa2kvaW5kZXgucGhwL1dJU19HbzcwMDdfTGludXhfZHJpdmVyCiBUaGUgZ283MDA3IGZpcm13YXJlIGNhbiBiZSBhY3F1aXJlZCBmcm9tIHRoZSBwYWNrYWdlIG9uIHRoZSBzaXRlIGFib3ZlLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvYmxrdnNjX2Rydi5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2Jsa3ZzY19kcnYuYwppbmRleCBhZjc4OTkzLi42OGFkMTdkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvYmxrdnNjX2Rydi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9ibGt2c2NfZHJ2LmMKQEAgLTg5NCw3ICs4OTQsNyBAQAogCiAvKgogICogV2UgYnJlYWsgdGhlIHJlcXVlc3QgaW50byAxIG9yIG1vcmUgYmxrdnNjX3JlcXVlc3RzIGFuZCBzdWJtaXQKLSAqIHRoZW0uICBJZiB3ZSBjYW50IHN1Ym1pdCB0aGVtIGFsbCwgd2UgcHV0IHRoZW0gb24gdGhlCisgKiB0aGVtLiAgSWYgd2UgY2FuJ3Qgc3VibWl0IHRoZW0gYWxsLCB3ZSBwdXQgdGhlbSBvbiB0aGUKICAqIHBlbmRpbmdfbGlzdC4gVGhlIGJsa3ZzY19yZXF1ZXN0KCkgd2lsbCB3b3JrIG9uIHRoZSBwZW5kaW5nX2xpc3QuCiAgKi8KIHN0YXRpYyBpbnQgYmxrdnNjX2RvX3JlcXVlc3Qoc3RydWN0IGJsb2NrX2RldmljZV9jb250ZXh0ICpibGtkZXYsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvY2hhbm5lbF9tZ210LmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvY2hhbm5lbF9tZ210LmMKaW5kZXggYmMwMzkzYS4uMDZiNTczMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2NoYW5uZWxfbWdtdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9jaGFubmVsX21nbXQuYwpAQCAtMTY2LDcgKzE2Niw3IEBACiAgKiBmcm9tIEh5cGVyLVYuIFRoaXMgc3R1YiByZXNwb25kcyB0byB0aGUgZGVmYXVsdCBuZWdvdGlhdGUgbWVzc2FnZXMKICAqIHRoYXQgY29tZSBpbiBmb3IgZXZlcnkgbm9uIElERS9TQ1NJL05ldHdvcmsgcmVxdWVzdC4KICAqIFRoaXMgYmVoYXZpb3IgaXMgbm9ybWFsbHkgb3ZlcndyaXR0ZW4gaW4gdGhlIGh2X3V0aWxzIGRyaXZlci4gVGhhdAotICogZHJpdmVyIGhhbmRsZXMgcmVxdWVzdHMgbGlrZSBncmFjZWZ1bGwgc2h1dGRvd24sIGhlYXJ0YmVhdHMgZXRjLgorICogZHJpdmVyIGhhbmRsZXMgcmVxdWVzdHMgbGlrZSBncmFjZWZ1bCBzaHV0ZG93biwgaGVhcnRiZWF0cyBldGMuCiAgKgogICogTWFpbmx5IHVzZWQgYnkgSHlwZXItViBkcml2ZXJzLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHYuYyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jCmluZGV4IDJkNDkyYWQuLjBiMDZmNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odi5jCkBAIC0zNyw3ICszNyw3IEBACiAKIC8qCiAgKiBxdWVyeV9oeXBlcnZpc29yX3ByZXNlbmNlCi0gKiAtIFF1ZXJ5IHRoZSBjcHVpZCBmb3IgcHJlc2Vuc2Ugb2Ygd2luZG93cyBoeXBlcnZpc29yCisgKiAtIFF1ZXJ5IHRoZSBjcHVpZCBmb3IgcHJlc2VuY2Ugb2Ygd2luZG93cyBoeXBlcnZpc29yCiAgKi8KIHN0YXRpYyBpbnQgcXVlcnlfaHlwZXJ2aXNvcl9wcmVzZW5jZSh2b2lkKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2FwaS5oIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2FwaS5oCmluZGV4IDcxMTRmY2UuLjQzYTcyMjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9hcGkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfYXBpLmgKQEAgLTUzLDE0ICs1MywxNCBAQAogCiAvKgogICogSFZfU1RBVFVTX0lOVkFMSURfQUxJR05NRU5UCi0gKiBUaGUgaHlwZXJ2aXNvciBjb3VsZCBub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGJlYWN1c2UgYSBwYXJhbWV0ZXIgaGFzIGFuCisgKiBUaGUgaHlwZXJ2aXNvciBjb3VsZCBub3QgcGVyZm9ybSB0aGUgb3BlcmF0aW9uIGJlY2F1c2UgYSBwYXJhbWV0ZXIgaGFzIGFuCiAgKiBpbnZhbGlkIGFsaWdubWVudC4KICAqLwogI2RlZmluZSBIVl9TVEFUVVNfSU5WQUxJRF9BTElHTk1FTlQJCQkoKHUxNikweDAwMDQpCiAKIC8qCiAgKiBIVl9TVEFUVVNfSU5WQUxJRF9QQVJBTUVURVIKLSAqIFRoZSBoeXBlcnZpc29yIGNvdWxkIG5vdCBwZXJmb3JtIHRoZSBvcGVyYXRpb24gYmVhY3VzZSBhbiBpbnZhbGlkIHBhcmFtZXRlcgorICogVGhlIGh5cGVydmlzb3IgY291bGQgbm90IHBlcmZvcm0gdGhlIG9wZXJhdGlvbiBiZWNhdXNlIGFuIGludmFsaWQgcGFyYW1ldGVyCiAgKiB3YXMgc3BlY2lmaWVkLgogICovCiAjZGVmaW5lIEhWX1NUQVRVU19JTlZBTElEX1BBUkFNRVRFUgkJCSgodTE2KTB4MDAwNSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9rdnAuaCBiL2RyaXZlcnMvc3RhZ2luZy9odi9odl9rdnAuaAppbmRleCBlMDY5ZjU5Li44YzQwMmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfa3ZwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X2t2cC5oCkBAIC0zNiw3ICszNiw3IEBACiAgKiByZWdpc3RyeS4KICAqCiAgKiBOb3RlOiAgVGhpcyB2YWx1ZSBpcyB1c2VkIGluIGRlZmluaW5nIHRoZSBLVlAgZXhjaGFuZ2UgbWVzc2FnZSAtIHRoaXMgdmFsdWUKLSAqIGNhbm5vdCBiZSBtb2RpZmllZCB3aXRob3V0IGFmZmVjdGluZyB0aGUgbWVzc2FnZSBzaXplIGFuZCBjb21wYXRhYmlsaXR5LgorICogY2Fubm90IGJlIG1vZGlmaWVkIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBtZXNzYWdlIHNpemUgYW5kIGNvbXBhdGliaWxpdHkuCiAgKi8KIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi9odl9tb3VzZS5jIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X21vdXNlLmMKaW5kZXggNTAxNDdmOC4uOWM2ZDRkMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X21vdXNlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L2h2X21vdXNlLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNsdWRlIDxsaW51eC9oaWRkZXYuaD4KICNpbmNsdWRlIDxsaW51eC9wY2kuaD4KICNpbmNsdWRlIDxsaW51eC9kbWkuaD4KKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgogCiAjaW5jbHVkZSAiaHZfYXBpLmgiCiAjaW5jbHVkZSAibG9nZ2luZy5oIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X3V0aWwuYyBiL2RyaXZlcnMvc3RhZ2luZy9odi9odl91dGlsLmMKaW5kZXggNDc5MmYyYy4uMmRmMTU2OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L2h2X3V0aWwuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaHYvaHZfdXRpbC5jCkBAIC04MCw3ICs4MCw3IEBACiAJCQkJZXhlY3V0ZV9zaHV0ZG93biA9IHRydWU7CiAKIAkJCQlEUFJJTlRfSU5GTyhWTUJVUywgIlNodXRkb3duIHJlcXVlc3QgcmVjZWl2ZWQgLSIKLQkJCQkJICAgICIgZ3JhY2VmdWxsIHNodXRkb3duIGluaXRpYXRlZCIpOworCQkJCQkgICAgIiBncmFjZWZ1bCBzaHV0ZG93biBpbml0aWF0ZWQiKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJaWNtc2doZHJwLT5zdGF0dXMgPSBIVl9FX0ZBSUw7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaHYvcm5kaXNfZmlsdGVyLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvcm5kaXNfZmlsdGVyLmMKaW5kZXggZTcxODljZC4uMDQ4Mzc2YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2h2L3JuZGlzX2ZpbHRlci5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9odi9ybmRpc19maWx0ZXIuYwpAQCAtNTg1LDcgKzU4NSw3IEBACiAJCXJldCA9IC0xOwogCQlEUFJJTlRfRVJSKE5FVFZTQywgInRpbWVvdXQgYmVmb3JlIHdlIGdvdCBhIHNldCByZXNwb25zZS4uLiIpOwogCQkvKgotCQkgKiBXZSBjYW50IGRlYWxsb2NhdGUgdGhlIHJlcXVlc3Qgc2luY2Ugd2UgbWF5IHN0aWxsIHJlY2VpdmUgYQorCQkgKiBXZSBjYW4ndCBkZWFsbG9jYXRlIHRoZSByZXF1ZXN0IHNpbmNlIHdlIG1heSBzdGlsbCByZWNlaXZlIGEKIAkJICogc2VuZCBjb21wbGV0aW9uIGZvciBpdC4KIAkJICovCiAJCWdvdG8gRXhpdDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9odi90b29scy9odl9rdnBfZGFlbW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvaHYvdG9vbHMvaHZfa3ZwX2RhZW1vbi5jCmluZGV4IGY1YTJkZDYuLmFhNzdhOTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9odi90b29scy9odl9rdnBfZGFlbW9uLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2h2L3Rvb2xzL2h2X2t2cF9kYWVtb24uYwpAQCAtMjAyLDcgKzIwMiw3IEBACiAKIAkJCS8qCiAJCQkgKiBXZSBvbmx5IHN1cHBvcnQgQUZfSU5FVCBhbmQgQUZfSU5FVDYKLQkJCSAqIGFuZCB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgaXMgc2VwZXJhdGVkIGJ5IGEgIjsiLgorCQkJICogYW5kIHRoZSBsaXN0IG9mIGFkZHJlc3NlcyBpcyBzZXBhcmF0ZWQgYnkgYSAiOyIuCiAJCQkgKi8KIAkJCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICphZGRyID0KIAkJCQkoc3RydWN0IHNvY2thZGRyX2luNiAqKSBjdXJwLT5pZmFfYWRkcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vRG9jdW1lbnRhdGlvbi9paW9fdXRpbHMuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vRG9jdW1lbnRhdGlvbi9paW9fdXRpbHMuaAppbmRleCA4MDk1NzI3Li5mZDc4ZTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL0RvY3VtZW50YXRpb24vaWlvX3V0aWxzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9Eb2N1bWVudGF0aW9uL2lpb191dGlscy5oCkBAIC01NTYsNyArNTU2LDcgQEAKIAkJaWYgKHN0cmNtcCh0ZW1wLCB2YWwpICE9IDApIHsKIAkJCXByaW50ZigiUG9zc2libGUgZmFpbHVyZSBpbiBzdHJpbmcgd3JpdGUgb2YgJXMgIgogCQkJCSJTaG91bGQgYmUgJXMgIgotCQkJCSJ3cml0ZW4gdG8gJXNcJXNcbiIsCisJCQkJIndyaXR0ZW4gdG8gJXNcJXNcbiIsCiAJCQkJdGVtcCwKIAkJCQl2YWwsCiAJCQkJYmFzZWRpciwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAxLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMS5oCmluZGV4IGM5YmYyMmMuLjIzZmU1NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAxLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDEuaApAQCAtNzAsNyArNzAsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwMV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMy5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDMuaAppbmRleCBiMzkzMjNlLi5iODg2ODgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwMy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjAzLmgKQEAgLTY1LDcgKzY1LDcgQEAKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGlzMTYyMDNfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDQuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA0LmgKaW5kZXggZTllZDdjYi4uZTYxODQ0NjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDQuaApAQCAtNzMsNyArNzMsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwNF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwOS5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMDkuaAppbmRleCA0ZTk3NTk2Li44YjBkYTEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIwOS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjA5LmgKQEAgLTEwOSw3ICsxMDksNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIwOV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIyMC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyMjAuaAppbmRleCA3MDEzMzE0Li40ZDU3NThjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjIyMC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjIwLmgKQEAgLTEzMiw3ICsxMzIsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjIyMF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9hZGlzMTYyNDAuaAppbmRleCA1MWE4MDdkLi43NmE0NTc5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2FkaXMxNjI0MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvYWRpczE2MjQwLmgKQEAgLTEzMiw3ICsxMzIsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjI0MF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcS5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHEuaAppbmRleCA1NzliM2EyLi4xMTQwMjE4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxLmgKQEAgLTU3LDcgKzU3LDcgQEAKIC8qIFJlYm9vdCBtZW1vcnkgY29udGVudCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX0NUUkxfMl9SRUJPT1RfTUVNT1JZCTB4MTAKIAotLyogSW50ZXJ1cHQgRW5hYmxlIC0gYXBwbGllcyBkYXRhIHJlYWR5IHRvIHRoZSBSRFkgcGFkICovCisvKiBJbnRlcnJ1cHQgRW5hYmxlIC0gYXBwbGllcyBkYXRhIHJlYWR5IHRvIHRoZSBSRFkgcGFkICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfQ1RSTF8yX0VOQUJMRV9JTlRFUlJVUFQJMHgwOAogCiAvKiBFbmFibGUgRGF0YSBSZWFkeSBHZW5lcmF0aW9uIC0gcmVsYXRpb25zaGlwIHdpdGggcHJldmlvdXMgdW5jbGVhciBpbiBkb2NzICovCkBAIC03MCwzNCArNzAsMzQgQEAKICAqIC0gb3B0aW9uIGZvciAxNiBiaXQgbGVmdCBqdXN0aWZpZWQgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19DVFJMXzJfREFUQV9BTElHTk1FTlRfMTZfQklUX0xFRlRfSlVTVElGSUVECTB4MDEKIAotLyogSW50ZXJ1cHQgcmVsYXRlZCBzdHVmZiAqLworLyogSW50ZXJydXB0IHJlbGF0ZWQgc3R1ZmYgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19BRERSCQkJMHgyMwogCiAvKiBTd2l0Y2ggZnJvbSBvciBjb21iaW5hdGlvbiBmbyBjb25kaXRpb25zIHRvIGFuZCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0JPT0xFQU5fQU5ECQkweDgwCiAKLS8qIExhdGNoIGludGVydXB0IHJlcXVlc3QsCisvKiBMYXRjaCBpbnRlcnJ1cHQgcmVxdWVzdCwKICAqIGlmIG9uIGFjayBtdXN0IGJlIGdpdmVuIGJ5IHJlYWRpbmcgdGhlIGFjayByZWdpc3RlciAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0xBVENIX1NSQwkJMHg0MAogCi0vKiBaIEludGVydXB0IG9uIEhpZ2ggKGFib3ZlIHRocmVzaG9sZCkqLworLyogWiBJbnRlcnJ1cHQgb24gSGlnaCAoYWJvdmUgdGhyZXNob2xkKSovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9DRkdfSU5URVJSVVBUX1pfSElHSAkweDIwCi0vKiBaIEludGVydXB0IG9uIExvdyAqLworLyogWiBJbnRlcnJ1cHQgb24gTG93ICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9DRkdfSU5URVJSVVBUX1pfTE9XCTB4MTAKLS8qIFkgSW50ZXJ1cHQgb24gSGlnaCAqLworLyogWSBJbnRlcnJ1cHQgb24gSGlnaCAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0lOVEVSUlVQVF9ZX0hJR0gJMHgwOAotLyogWSBJbnRlcnVwdCBvbiBMb3cgKi8KKy8qIFkgSW50ZXJydXB0IG9uIExvdyAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX1dBS0VfVVBfQ0ZHX0lOVEVSUlVQVF9ZX0xPVwkweDA0Ci0vKiBYIEludGVydXB0IG9uIEhpZ2ggKi8KKy8qIFggSW50ZXJydXB0IG9uIEhpZ2ggKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19JTlRFUlJVUFRfWF9ISUdICTB4MDIKLS8qIFggSW50ZXJ1cHQgb24gTG93ICovCisvKiBYIEludGVycnVwdCBvbiBMb3cgKi8KICNkZWZpbmUgTElTM0wwMkRRX1JFR19XQUtFX1VQX0NGR19JTlRFUlJVUFRfWF9MT1cgMHgwMQogCi0vKiBSZWdpc3RlciB0aGF0IGdpdmVzIGRlc2NyaXB0aW9uIG9mIHdoYXQgY2F1c2VkIGludGVydXB0CisvKiBSZWdpc3RlciB0aGF0IGdpdmVzIGRlc2NyaXB0aW9uIG9mIHdoYXQgY2F1c2VkIGludGVycnVwdAogICogLSBsYXRjaGVkIGlmIHNldCBpbiBDRkdfQUREUkVTICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfQUREUgkJCTB4MjQKIC8qIHRvcCBiaXQgaWdub3JlZCAqLwotLyogSW50ZXJ1cHQgQWN0aXZlICovCisvKiBJbnRlcnJ1cHQgQWN0aXZlICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfSU5URVJSVVBUX0FDVElWQVRFRAkweDQwCiAvKiBJbnRlcnVwdHMgdGhhdCBoYXZlIGJlZW4gdHJpZ2dlcmVkICovCiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfV0FLRV9VUF9TUkNfSU5URVJSVVBUX1pfSElHSAkweDIwCkBAIC0xMjMsNyArMTIzLDcgQEAKICNkZWZpbmUgTElTM0wwMkRRX1JFR19TVEFUVVNfWF9ORVdfREFUQQkJCTB4MDEKIAogLyogVGhlIGFjY2VsZXJvbWV0ZXIgcmVhZGluZ3MgLSBsb3cgYW5kIGhpZ2ggYnl0ZXMuCi1Gb3JtIG9mIGhpZ2ggYnl0ZSBkZXBlbmRhbnQgb24ganVzdGlmaWNhdGlvbiBzZXQgaW4gY3RybCByZWcgKi8KK0Zvcm0gb2YgaGlnaCBieXRlIGRlcGVuZGVudCBvbiBqdXN0aWZpY2F0aW9uIHNldCBpbiBjdHJsIHJlZyAqLwogI2RlZmluZSBMSVMzTDAyRFFfUkVHX09VVF9YX0xfQUREUgkJCTB4MjgKICNkZWZpbmUgTElTM0wwMkRRX1JFR19PVVRfWF9IX0FERFIJCQkweDI5CiAjZGVmaW5lIExJUzNMMDJEUV9SRUdfT1VUX1lfTF9BRERSCQkJMHgyQQpAQCAtMTU1LDcgKzE1NSw3IEBACiAgKiBAaW50ZXI6CQl1c2VkIHRvIGNoZWNrIGlmIG5ldyBpbnRlcnJ1cHQgaGFzIGJlZW4gdHJpZ2dlcmVkCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBsaXMzbDAyZHFfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfY29yZS5jCmluZGV4IGM0YjRhYjcuLjMwNjdmOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcV9jb3JlLmMKQEAgLTc3LDcgKzc3LDcgQEAKIC8qKgogICogbGlzM2wwMmRxX3NwaV93cml0ZV9yZWdfOCgpIC0gd3JpdGUgc2luZ2xlIGJ5dGUgdG8gYSByZWdpc3RlcgogICogQGRldjogZGV2aWNlIGFzc29jaWF0ZWQgd2l0aCBjaGlsZCBvZiBhY3R1YWwgZGV2aWNlIChpaW9fZGV2IG9yIGlpb190cmlnKQotICogQHJlZ19hZGRyZXNzOiB0aGUgYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXIgdG8gYmUgd3JpdGVuCisgKiBAcmVnX2FkZHJlc3M6IHRoZSBhZGRyZXNzIG9mIHRoZSByZWdpc3RlciB0byBiZSB3cml0dGVuCiAgKiBAdmFsOiB0aGUgdmFsdWUgdG8gd3JpdGUKICAqKi8KIGludCBsaXMzbDAyZHFfc3BpX3dyaXRlX3JlZ184KHN0cnVjdCBkZXZpY2UgKmRldiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvbGlzM2wwMmRxX3JpbmcuYwppbmRleCAyYzQ2MWEzLi41MjlhM2NjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL2xpczNsMDJkcV9yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9saXMzbDAyZHFfcmluZy5jCkBAIC0yMTcsNyArMjE3LDcgQEAKIC8qKgogICogbGlzM2wwMmRxX3JlYWRfYWxsKCkgUmVhZHMgYWxsIGNoYW5uZWxzIGN1cnJlbnRseSBzZWxlY3RlZAogICogQHN0OgkJZGV2aWNlIHNwZWNpZmljIHN0YXRlCi0gKiBAcnhfYXJyYXk6CShkbWEgY2FwYWJsZSkgcmVjaWV2ZSBhcnJheSwgbXVzdCBiZSBhdCBsZWFzdAorICogQHJ4X2FycmF5OgkoZG1hIGNhcGFibGUpIHJlY2VpdmUgYXJyYXksIG11c3QgYmUgYXQgbGVhc3QKICAqCQk0Km51bWJlciBvZiBjaGFubmVscwogICoqLwogc3RhdGljIGludCBsaXMzbDAyZHFfcmVhZF9hbGwoc3RydWN0IGxpczNsMDJkcV9zdGF0ZSAqc3QsIHU4ICpyeF9hcnJheSkKQEAgLTQwOSw3ICs0MDksNyBAQAogICoKICAqIEFzIHRoZSB0cmlnZ2VyIG1heSBvY2N1ciBvbiBhbnkgZGF0YSBlbGVtZW50IGJlaW5nIHVwZGF0ZWQgaXQgaXMKICAqIHJlYWxseSByYXRoZXIgbGlrZWx5IHRvIG9jY3VyIGR1cmluZyB0aGUgcmVhZCBmcm9tIHRoZSBwcmV2aW91cwotICogdHJpZ2dlciBldmVudC4gIFRoZSBvbmx5IHdheSB0byBkaXNjb3ZlciBpZiB0aGlzIGhhcyBvY2N1cmVkIG9uCisgKiB0cmlnZ2VyIGV2ZW50LiAgVGhlIG9ubHkgd2F5IHRvIGRpc2NvdmVyIGlmIHRoaXMgaGFzIG9jY3VycmVkIG9uCiAgKiBib2FyZHMgbm90IHN1cHBvcnRpbmcgbGV2ZWwgaW50ZXJydXB0cyBpcyB0byB0YWtlIGEgbG9vayBhdCB0aGUgbGluZS4KICAqIElmIGl0IGlzIGluZGljYXRpbmcgYW5vdGhlciBpbnRlcnJ1cHQgYW5kIHdlIGRvbid0IHNlZW0gdG8gaGF2ZSBhCiAgKiBoYW5kbGVyIGxvb2tpbmcgYXQgaXQsIHRoZW4gd2UgbmVlZCB0byBub3RpZnkgdGhlIGNvcmUgdGhhdCB3ZSBuZWVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL3NjYTMwMDAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCmluZGV4IDIzODkyODQuLmRiNzEwMzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMC5oCkBAIC0xODUsNyArMTg1LDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IHNjYTMwMDBfY2hpcF9pbmZvIC0gbW9kZWwgZGVwZW5kYW50IHBhcmFtZXRlcnMKKyAqIHN0cnVjdCBzY2EzMDAwX2NoaXBfaW5mbyAtIG1vZGVsIGRlcGVuZGVudCBwYXJhbWV0ZXJzCiAgKiBAbmFtZTogCQkJbW9kZWwgaWRlbnRpZmljYXRpb24KICAqIEBzY2FsZToJCQlzdHJpbmcgY29udGFpbmluZyBmbG9hdGluZyBwb2ludCBzY2FsZSBmYWN0b3IKICAqIEB0ZW1wX291dHB1dDoJCXNvbWUgZGV2aWNlcyBoYXZlIHRlbXBlcmF0dXJlIHNlbnNvcnMuCkBAIC0yMTMsNyArMjEzLDcgQEAKICAqIHNjYTMwMDBfcmVhZF9kYXRhKCkgcmVhZCBhIHNlcmllcyBvZiB2YWx1ZXMgZnJvbSB0aGUgZGV2aWNlCiAgKiBAZGV2OgkJZGV2aWNlCiAgKiBAcmVnX2FkZHJlc3NfaGlnaDoJc3RhcnQgYWRkcmVzcyAoZGVjcmVtZW50ZWQgcmVhZCkKLSAqIEByeDoJCQlwb2ludGVyIHdoZXJlIHJlY2lldmVkIGRhdGEgaXMgcGxhY2VkLiBDYWxsZWUKKyAqIEByeDoJCQlwb2ludGVyIHdoZXJlIHJlY2VpdmVkIGRhdGEgaXMgcGxhY2VkLiBDYWxsZWUKICAqCQkJcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhpcy4KICAqIEBsZW46CQludW1iZXIgb2YgYnl0ZXMgdG8gcmVhZAogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMF9yaW5nLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FjY2VsL3NjYTMwMDBfcmluZy5jCmluZGV4IGM4NzJmZGQuLmE3MzBhNzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWNjZWwvc2NhMzAwMF9yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hY2NlbC9zY2EzMDAwX3JpbmcuYwpAQCAtNDMsNyArNDMsNyBAQAogICoJCQlsZWFkaW5nIGJ5dGUgdXNlZCBpbiBidXMgY29tbXMuCiAgKgogICogQ3VycmVudGx5IGRvZXMgbm90IHByb3ZpZGUgdGltZXN0YW1wcy4gIEFzIHRoZSBoYXJkd2FyZSBkb2Vzbid0IGFkZCB0aGVtIHRoZXkKLSAqIGNhbiBvbmx5IGJlIGluZmVycmVkIGFwcm94aW1hdGVseSBmcm9tIHJpbmcgYnVmZmVyIGV2ZW50cyBzdWNoIGFzIDUwJSBmdWxsCisgKiBjYW4gb25seSBiZSBpbmZlcnJlZCBhcHByb3hpbWF0ZWx5IGZyb20gcmluZyBidWZmZXIgZXZlbnRzIHN1Y2ggYXMgNTAlIGZ1bGwKICAqIGFuZCBrbm93bGVkZ2Ugb2Ygd2hlbiBidWZmZXIgd2FzIGxhc3QgZW1wdGllZC4gIFRoaXMgaXMgbGVmdCB0byB1c2Vyc3BhY2UuCiAgKiovCiBzdGF0aWMgaW50IHNjYTMwMDBfcmlwX2h3X3JiKHN0cnVjdCBpaW9fcmluZ19idWZmZXIgKnIsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDcyOThfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3Mjk4X3JpbmcuYwppbmRleCAxOWQxYWNlLi45MDY4ZDdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDcyOThfcmluZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzI5OF9yaW5nLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLyoqCiAgKiBhZDcyOThfcG9sbF9mdW5jX3RoKCkgdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gc3BpIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIHNwaSBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NDc2X3JpbmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzQ3Nl9yaW5nLmMKaW5kZXggMWQ2NTRjOC4uOTJkOTM3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3NDc2X3JpbmcuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc0NzZfcmluZy5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIC8qKgogICogYWQ3NDc2X3BvbGxfZnVuY190aCgpIHRoIG9mIHRyaWdnZXIgbGF1bmNoZWQgcG9sbGluZyB0byByaW5nIGJ1ZmZlcgogICoKLSAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cmluZywgbGVhdmUgdGltZXN0YW1waW5nIHVudGlsCisgKiBBcyBzYW1wbGluZyBvbmx5IG9jY3VycyBvbiBpMmMgY29tbXMgb2NjdXJyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKICAqIHRoZW4uICBTb21lIHRyaWdnZXJzIHdpbGwgZ2VuZXJhdGUgdGhlaXIgb3duIHRpbWUgc3RhbXAuICBDdXJyZW50bHkKICAqIHRoZXJlIGlzIG5vIHdheSBvZiBub3RpZnlpbmcgdGhlbSB3aGVuIG5vIG9uZSBjYXJlcy4KICAqKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzg4N19yaW5nLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc4ODdfcmluZy5jCmluZGV4IDJkN2ZlNjUuLmRhNzdmMjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzg4N19yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3ODg3X3JpbmcuYwpAQCAtMTY1LDcgKzE2NSw3IEBACiAvKioKICAqIGFkNzg4N19wb2xsX2Z1bmNfdGgoKSB0aCBvZiB0cmlnZ2VyIGxhdW5jaGVkIHBvbGxpbmcgdG8gcmluZyBidWZmZXIKICAqCi0gKiBBcyBzYW1wbGluZyBvbmx5IG9jY3VycyBvbiBzcGkgY29tbXMgb2NjdXJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAorICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gc3BpIGNvbW1zIG9jY3VycmluZywgbGVhdmUgdGltZXN0YW1waW5nIHVudGlsCiAgKiB0aGVuLiAgU29tZSB0cmlnZ2VycyB3aWxsIGdlbmVyYXRlIHRoZWlyIG93biB0aW1lIHN0YW1wLiAgQ3VycmVudGx5CiAgKiB0aGVyZSBpcyBubyB3YXkgb2Ygbm90aWZ5aW5nIHRoZW0gd2hlbiBubyBvbmUgY2FyZXMuCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3OTl4X2NvcmUuYwppbmRleCBlNTA4NDFiLi5mMDRlNjQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzk5eF9jb3JlLmMKQEAgLTE4NCw3ICsxODQsNyBAQAogCiAJbXV0ZXhfbG9jaygmZGV2X2luZm8tPm1sb2NrKTsKIAltYXNrID0gMSA8PCB0aGlzX2F0dHItPmFkZHJlc3M7Ci0JLyogSWYgcmluZyBidWZmZXIgY2FwdHVyZSBpcyBvY2N1cmluZywgcXVlcnkgdGhlIGJ1ZmZlciAqLworCS8qIElmIHJpbmcgYnVmZmVyIGNhcHR1cmUgaXMgb2NjdXJyaW5nLCBxdWVyeSB0aGUgYnVmZmVyICovCiAJaWYgKGlpb19yaW5nX2VuYWJsZWQoZGV2X2luZm8pKSB7CiAJCWRhdGEgPSByZXQgPSBhZDc5OXhfc2luZ2xlX2NoYW5uZWxfZnJvbV9yaW5nKHN0LCBtYXNrKTsKIAkJaWYgKHJldCA8IDApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvYWQ3OTl4X3JpbmcuYwppbmRleCA1NmFiYzM5Li4wODc1YTdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9hZDc5OXhfcmluZy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL2FkNzk5eF9yaW5nLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogLyoqCiAgKiBhZDc5OXhfcG9sbF9mdW5jX3RoKCkgdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gaTJjIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19jb3JlLmMgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYwppbmRleCBkZGUwOTdhLi5kZTgzYzNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2FkYy9tYXgxMzYzX2NvcmUuYwpAQCAtMjU1LDcgKzI1NSw3IEBACiAJCWdvdG8gZXJyb3JfcmV0OwogCX0KIAotCS8qIElmIHJpbmcgYnVmZmVyIGNhcHR1cmUgaXMgb2NjdXJpbmcsIHF1ZXJ5IHRoZSBidWZmZXIgKi8KKwkvKiBJZiByaW5nIGJ1ZmZlciBjYXB0dXJlIGlzIG9jY3VycmluZywgcXVlcnkgdGhlIGJ1ZmZlciAqLwogCWlmIChpaW9fcmluZ19lbmFibGVkKGRldl9pbmZvKSkgewogCQltYXNrID0gbWF4MTM2M19tb2RlX3RhYmxlW3RoaXNfYXR0ci0+YWRkcmVzc10ubW9kZW1hc2s7CiAJCWRhdGEgPSBtYXgxMzYzX3NpbmdsZV9jaGFubmVsX2Zyb21fcmluZyhtYXNrLCBzdCk7CkBAIC0xNDI1LDcgKzE0MjUsNyBAQAogfQogCiAvKgotICogVG8ga2VlcCB0aGlzIG1hbmFnYWJsZSB3ZSBhbHdheXMgdXNlIG9uZSBvZiAzIHNjYW4gbW9kZXMuCisgKiBUbyBrZWVwIHRoaXMgbWFuYWdlYWJsZSB3ZSBhbHdheXMgdXNlIG9uZSBvZiAzIHNjYW4gbW9kZXMuCiAgKiBTY2FuIDAuLi4zLCAwLTEsMi0zIGFuZCAxLTAsMy0yCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IF9fbWF4MTM2M19jaGVja19ldmVudF9tYXNrKGludCB0aGlzbWFzaywgaW50IGNoZWNrbWFzaykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vYWRjL21heDEzNjNfcmluZy5jIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKaW5kZXggNTUzMmYzZS4uZDM2ZmNjNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9hZGMvbWF4MTM2M19yaW5nLmMKQEAgLTEwOCw3ICsxMDgsNyBAQAogLyoqCiAgKiBtYXgxMzYzX3BvbGxfZnVuY190aCgpIC0gdGggb2YgdHJpZ2dlciBsYXVuY2hlZCBwb2xsaW5nIHRvIHJpbmcgYnVmZmVyCiAgKgotICogQXMgc2FtcGxpbmcgb25seSBvY2N1cnMgb24gaTJjIGNvbW1zIG9jY3VyaW5nLCBsZWF2ZSB0aW1lc3RhbXBpbmcgdW50aWwKKyAqIEFzIHNhbXBsaW5nIG9ubHkgb2NjdXJzIG9uIGkyYyBjb21tcyBvY2N1cnJpbmcsIGxlYXZlIHRpbWVzdGFtcGluZyB1bnRpbAogICogdGhlbi4gIFNvbWUgdHJpZ2dlcnMgd2lsbCBnZW5lcmF0ZSB0aGVpciBvd24gdGltZSBzdGFtcC4gIEN1cnJlbnRseQogICogdGhlcmUgaXMgbm8gd2F5IG9mIG5vdGlmeWluZyB0aGVtIHdoZW4gbm8gb25lIGNhcmVzLgogICoqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9jaHJkZXYuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vY2hyZGV2LmgKaW5kZXggOThkMWEyYy4uNGZjYjk5YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9jaHJkZXYuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2NocmRldi5oCkBAIC0zMyw3ICszMyw3IEBACiAvKioKICAqIHN0cnVjdCBpaW9fZXZlbnRfZGF0YSAtIFRoZSBhY3R1YWwgZXZlbnQgYmVpbmcgcHVzaGVkIHRvIHVzZXJzcGFjZQogICogQGlkOgkJZXZlbnQgaWRlbnRpZmllcgotICogQHRpbWVzdGFtcDoJYmVzdCBlc3RpbWF0ZSBvZiB0aW1lIG9mIGV2ZW50IG9jY3VyYW5jZSAob2Z0ZW4gZnJvbQorICogQHRpbWVzdGFtcDoJYmVzdCBlc3RpbWF0ZSBvZiB0aW1lIG9mIGV2ZW50IG9jY3VycmVuY2UgKG9mdGVuIGZyb20KICAqCQl0aGUgaW50ZXJydXB0IGhhbmRsZXIpCiAgKi8KIHN0cnVjdCBpaW9fZXZlbnRfZGF0YSB7CkBAIC00Miw3ICs0Miw3IEBACiB9OwogCiAvKioKLSAqIHN0cnVjdCBpaW9fZGV0ZWN0ZWRfZXZlbnRfbGlzdCAtIGxpc3QgZWxlbWVudCBmb3IgZXZlbnRzIHRoYXQgaGF2ZSBvY2N1cmVkCisgKiBzdHJ1Y3QgaWlvX2RldGVjdGVkX2V2ZW50X2xpc3QgLSBsaXN0IGVsZW1lbnQgZm9yIGV2ZW50cyB0aGF0IGhhdmUgb2NjdXJyZWQKICAqIEBsaXN0OgkJbGlua2VkIGxpc3QgaGVhZGVyCiAgKiBAZXY6CQkJdGhlIGV2ZW50IGl0c2VsZgogICogQHNoYXJlZF9wb2ludGVyOgl1c2VkIHdoZW4gdGhlIGV2ZW50IGlzIHNoYXJlZCAtIGkuZS4gY2FuIGJlIGVzY2FsbGF0ZWQKQEAgLTk4LDcgKzk4LDcgQEAKICAqIEBsaXN0OgkJbGlzdCBoZWFkZXIKICAqIEByZWZjb3VudDoJCWFzIHRoZSBoYW5kbGVyIG1heSBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBkZXZpY2UKICAqCQkJc2lkZSBldmVudHMsIHJlZmVyZW5jZSBjb3VudGluZyBlbnN1cmVzIGNsZWFuIHJlbW92YWwKLSAqIEBleGlzdF9sb2NrOgkJcHJldmVudHMgcmFjZSBjb25kaXRpb25zIHJlbGF0ZWQgdG8gcmVmY291bnQgdXNlYWdlLgorICogQGV4aXN0X2xvY2s6CQlwcmV2ZW50cyByYWNlIGNvbmRpdGlvbnMgcmVsYXRlZCB0byByZWZjb3VudCB1c2FnZS4KICAqIEBoYW5kbGVyOgkJZXZlbnQgaGFuZGxlciBmdW5jdGlvbiAtIGNhbGxlZCBvbiBldmVudCBpZiB0aGlzCiAgKgkJCWV2ZW50X2hhbmRsZXIgaXMgZW5hYmxlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2d5cm8vYWRpczE2MDYwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCmluZGV4IDcwMGViMzkuLmFlNTNlNzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwNjBfY29yZS5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiBAdXNfdzoJCWFjdHVhbCBzcGlfZGV2aWNlIHRvIHdyaXRlIGNvbmZpZwogICogQHVzX3I6CQlhY3R1YWwgc3BpX2RldmljZSB0byByZWFkIGJhY2sgZGF0YQogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKLSAqIEBidWY6CQl0cmFuc21pdCBvciByZWNpZXZlIGJ1ZmZlcgorICogQGJ1ZjoJCXRyYW5zbWl0IG9yIHJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjA2MF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2d5cm8vYWRpczE2MDgwX2NvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCmluZGV4IGZiNDMzNmMuLmVmOWUzMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYwODBfY29yZS5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiBzdHJ1Y3QgYWRpczE2MDgwX3N0YXRlIC0gZGV2aWNlIGluc3RhbmNlIHNwZWNpZmljIGRhdGEKICAqIEB1czoJCQlhY3R1YWwgc3BpX2RldmljZSB0byB3cml0ZSBkYXRhCiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQotICogQGJ1ZjoJCXRyYW5zbWl0IG9yIHJlY2lldmUgYnVmZmVyCisgKiBAYnVmOgkJdHJhbnNtaXQgb3IgcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2MDgwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaAppbmRleCBjMWZkNDM2NC4uMTM2OTUwMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9neXJvL2FkaXMxNjI2MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vZ3lyby9hZGlzMTYyNjAuaApAQCAtOTEsNyArOTEsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICogQG5lZ2F0ZToJCW5lZ2F0ZSB0aGUgc2NhbGUgcGFyYW1ldGVyCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2lpby5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9paW8uaAppbmRleCAyNDhiZGQyLi43MTI3ZjI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2lpby5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaWlvLmgKQEAgLTkyLDcgKzkyLDcgQEAKICAqCQkJY2hhbmdlcwogICogQGF2YWlsYWJsZV9zY2FuX21hc2tzOiBbRFJJVkVSXSBvcHRpb25hbCBhcnJheSBvZiBhbGxvd2VkIGJpdG1hc2tzCiAgKiBAdHJpZzoJCVtJTlRFUk5dIGN1cnJlbnQgZGV2aWNlIHRyaWdnZXIgKHJpbmcgYnVmZmVyIG1vZGVzKQotICogQHBvbGxmdW5jOgkJW0RSSVZFUl0gZnVuY3Rpb24gcnVuIG9uIHRyaWdnZXIgYmVpbmcgcmVjaWV2ZWQKKyAqIEBwb2xsZnVuYzoJCVtEUklWRVJdIGZ1bmN0aW9uIHJ1biBvbiB0cmlnZ2VyIGJlaW5nIHJlY2VpdmVkCiAgKiovCiBzdHJ1Y3QgaWlvX2RldiB7CiAJaW50CQkJCWlkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2MzAwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaAppbmRleCAxZjI1ZDY4Li5jMDk1NzU5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzMDAuaApAQCAtOTksNyArOTksNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkaXMxNjMwMF9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTYzNTAuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCmluZGV4IGIwMDAwMWUuLmIxYWQ0ODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW11L2FkaXMxNjM1MC5oCkBAIC0xMDUsNyArMTA1LDcgQEAKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHJpZzoJCWRhdGEgcmVhZHkgdHJpZ2dlciByZWdpc3RlcmVkIHdpdGggaWlvCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGlzMTYzNTBfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9pbXUvYWRpczE2NDAwLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaAppbmRleCA2ZmYzM2UxLi43YTEyNzAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL2ltdS9hZGlzMTY0MDAuaApAQCAtMTMxLDcgKzEzMSw3IEBACiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHRyaWc6CQlkYXRhIHJlYWR5IHRyaWdnZXIgcmVnaXN0ZXJlZCB3aXRoIGlpbwogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRpczE2NDAwX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vaW5kdXN0cmlhbGlvLWNvcmUuYwppbmRleCBmM2JmMTExLi4xNzk1ZWUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL2luZHVzdHJpYWxpby1jb3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9pbmR1c3RyaWFsaW8tY29yZS5jCkBAIC0yNTgsNyArMjU4LDcgQEAKIAkJCQkJCQkgICAtPmRldF9ldmVudHMubGlzdCkpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJvcl9yZXQ7Ci0JCS8qIFNpbmdsZSBhY2Nlc3MgZGV2aWNlIHNvIG5vb25lIGVsc2UgY2FuIGdldCB0aGUgZGF0YSAqLworCQkvKiBTaW5nbGUgYWNjZXNzIGRldmljZSBzbyBubyBvbmUgZWxzZSBjYW4gZ2V0IHRoZSBkYXRhICovCiAJCW11dGV4X2xvY2soJmV2X2ludC0+ZXZlbnRfbGlzdF9sb2NrKTsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzUzLmgKaW5kZXggNzBkYWJhZTYuLjNiOWM3ZjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1My5oCkBAIC02Miw3ICs2Miw3IEBACiAgKiBAdXM6CQkJYWN0dWFsIHNwaV9kZXZpY2UKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGU3NzUzX3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzc1NC5oIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKaW5kZXggOGZhYTliMy4uMGFhMDUyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU0LmgKQEAgLTgwLDcgKzgwLDcgQEAKICAqIEB1czoJCQlhY3R1YWwgc3BpX2RldmljZQogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkZTc3NTRfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU4LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaAppbmRleCBkZjViYjdiLi5jNmZkOTRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTguaApAQCAtOTgsNyArOTgsNyBAQAogICogQGluZGlvX2RldjoJCWluZHVzdHJpYWwgSS9PIGRldmljZSBzdHJ1Y3R1cmUKICAqIEB0cmlnOgkJZGF0YSByZWFkeSB0cmlnZ2VyIHJlZ2lzdGVyZWQgd2l0aCBpaW8KICAqIEB0eDoJCQl0cmFuc21pdCBidWZmZXIKLSAqIEByeDoJCQlyZWNpZXZlIGJ1ZmZlcgorICogQHJ4OgkJCXJlY2VpdmUgYnVmZmVyCiAgKiBAYnVmX2xvY2s6CQltdXRleCB0byBwcm90ZWN0IHR4IGFuZCByeAogICoqLwogc3RydWN0IGFkZTc3NThfc3RhdGUgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2lpby9tZXRlci9hZGU3NzU5LmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaAppbmRleCBlOWQxYzQzLi5jYzc2YzJjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc3NTkuaApAQCAtNDMsNyArNDMsNyBAQAogICogQHVzOgkJCWFjdHVhbCBzcGlfZGV2aWNlCiAgKiBAaW5kaW9fZGV2OgkJaW5kdXN0cmlhbCBJL08gZGV2aWNlIHN0cnVjdHVyZQogICogQHR4OgkJCXRyYW5zbWl0IGJ1ZmZlcgotICogQHJ4OgkJCXJlY2lldmUgYnVmZmVyCisgKiBAcng6CQkJcmVjZWl2ZSBidWZmZXIKICAqIEBidWZfbG9jazoJCW11dGV4IHRvIHByb3RlY3QgdHggYW5kIHJ4CiAgKiovCiBzdHJ1Y3QgYWRlNzc1OV9zdGF0ZSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaWlvL21ldGVyL2FkZTc4NTQuaCBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCmluZGV4IDRhZDg0YTMuLjc5YTIxMTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9paW8vbWV0ZXIvYWRlNzg1NC5oCkBAIC0xNDksNyArMTQ5LDcgQEAKICAqIEBzcGk6CQkJYWN0dWFsIHNwaV9kZXZpY2UKICAqIEBpbmRpb19kZXY6CQlpbmR1c3RyaWFsIEkvTyBkZXZpY2Ugc3RydWN0dXJlCiAgKiBAdHg6CQkJdHJhbnNtaXQgYnVmZmVyCi0gKiBAcng6CQkJcmVjaWV2ZSBidWZmZXIKKyAqIEByeDoJCQlyZWNlaXZlIGJ1ZmZlcgogICogQGJ1Zl9sb2NrOgkJbXV0ZXggdG8gcHJvdGVjdCB0eCBhbmQgcngKICAqKi8KIHN0cnVjdCBhZGU3ODU0X3N0YXRlIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmluZ19nZW5lcmljLmggYi9kcml2ZXJzL3N0YWdpbmcvaWlvL3JpbmdfZ2VuZXJpYy5oCmluZGV4IGYyMWFjMDkuLjMyOTQ4ZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9paW8vcmluZ19nZW5lcmljLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2lpby9yaW5nX2dlbmVyaWMuaApAQCAtMzAsNyArMzAsNyBAQAogICogQGV2ZW50X2NvZGU6CQlldmVudCBpbmRlbnRpZmljYXRpb24gY29kZQogICogQHRpbWVzdGFtcDoJCXRpbWUgb2YgZXZlbnQKICAqCi0gKiBUeXBpY2FsIHVzZWNhc2UgaXMgdG8gZXNjYWxhdGUgYSA1MCUgcmluZyBmdWxsIHRvIDc1JSBmdWxsIGlmIG5vb25lIGhhcyB5ZXQKKyAqIFR5cGljYWwgdXNlY2FzZSBpcyB0byBlc2NhbGF0ZSBhIDUwJSByaW5nIGZ1bGwgdG8gNzUlIGZ1bGwgaWYgbm8gb25lIGhhcyB5ZXQKICAqIHJlYWQgdGhlIGZpcnN0IGV2ZW50LiBDbGVhcmx5IHRoZSA1MCUgZnVsbCBpcyBubyBsb25nZXIgb2YgaW50ZXJlc3QgaW4KICAqIHR5cGljYWwgdXNlIGNhc2UuCiAgKiovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L1RPRE8gYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L1RPRE8KaW5kZXggYTI0ZTVlZC4uYzczM2Q3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9UT0RPCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvVE9ETwpAQCAtMSw3ICsxLDcgQEAKIFRPRE8KIC0tLS0KIAotR2V0IHRoZSBtZW1yYXIgZHJpdmVyIGNsZWFuZWQgdXAgYW5kIHVwc3RyZWFtIChkZXBlbmRhbmN5IGJsb2NraW5nIFNTVCkKK0dldCB0aGUgbWVtcmFyIGRyaXZlciBjbGVhbmVkIHVwIGFuZCB1cHN0cmVhbSAoZGVwZW5kZW5jeSBibG9ja2luZyBTU1QpCiBSZXBsYWNlIGxvbmcvc2hvcnQgcHJlc3Mgd2l0aCB0d28gdmlydHVhbCBidXR0b25zCiBSZXZpZXcgdGhlIHByaW50a3MgYW5kIGtpbGwgb2ZmIGFueSBsZWZ0IG92ZXIgU1RfRVJSOiBtZXNzYWdlcwogUmV2aWV3IHRoZSBtaXNjIGRldmljZSBpb2N0bHMgZm9yIDMyLzY0Yml0IHNhZmV0eSBhbmQgc2FuaXR5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdC5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3QuYwppbmRleCBjZTRhOWY3Li44MWMyNGQxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0LmMKQEAgLTI2Myw3ICsyNjMsNyBAQAogCS8qIEluaXQgdGhlIGRldmljZSAqLwogCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CiAJaWYgKHJldCkgewotCQlwcl9lcnIoImRldmljZSBjYW50IGJlIGVuYWJsZWRcbiIpOworCQlwcl9lcnIoImRldmljZSBjYW4ndCBiZSBlbmFibGVkXG4iKTsKIAkJZ290byBkb19mcmVlX21lbTsKIAl9CiAJc3N0X2Rydl9jdHgtPnBjaSA9IHBjaV9kZXZfZ2V0KHBjaSk7CkBAIC00NTMsNyArNDUzLDcgQEAKIAlwY2lfcmVzdG9yZV9zdGF0ZShwY2kpOwogCXJldCA9IHBjaV9lbmFibGVfZGV2aWNlKHBjaSk7CiAJaWYgKHJldCkKLQkJcHJfZXJyKCJkZXZpY2UgY2FudCBiZSBlbmFibGVkXG4iKTsKKwkJcHJfZXJyKCJkZXZpY2UgY2FuJ3QgYmUgZW5hYmxlZFxuIik7CiAKIAltdXRleF9sb2NrKCZzc3RfZHJ2X2N0eC0+c3N0X2xvY2spOwogCXNzdF9kcnZfY3R4LT5zc3Rfc3RhdGUgPSBTU1RfVU5fSU5JVDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2FwcF9pbnRlcmZhY2UuYyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2FwcF9pbnRlcmZhY2UuYwppbmRleCBhMzY3OTkxLi4xZDA2MjEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9hcHBfaW50ZXJmYWNlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfYXBwX2ludGVyZmFjZS5jCkBAIC0yMzYsNyArMjM2LDcgQEAKIAlpZiAoIXNzdF9kcnZfY3R4LT5tbWFwX21lbSkKIAkJcmV0dXJuIC1FSU87CiAKLQkvKiByb3VuZCBpdCB1cCB0byB0aGUgcGFnZSBib25kYXJ5ICAqLworCS8qIHJvdW5kIGl0IHVwIHRvIHRoZSBwYWdlIGJvdW5kYXJ5ICAqLwogCS8qbWVtX2FyZWEgPSAodm9pZCAqKSgoKCh1bnNpZ25lZCBsb25nKXNzdF9kcnZfY3R4LT5tbWFwX21lbSkKIAkJCQkrIFBBR0VfU0laRSAtIDEpICYgUEFHRV9NQVNLKTsqLwogCW1lbV9hcmVhID0gKHZvaWQgKikgUEFHRV9BTElHTigodW5zaWduZWQgaW50KSBzc3RfZHJ2X2N0eC0+bW1hcF9tZW0pOwpAQCAtODcxLDcgKzg3MSw3IEBACiB9CiAKIC8qKgotICogaW50ZWxfc3N0X2lvY3RsX2RzcCAtIHJlY2lldmVzIHRoZSBkZXZpY2UgaW9jdGwncworICogaW50ZWxfc3N0X2lvY3RsX2RzcCAtIHJlY2VpdmVzIHRoZSBkZXZpY2UgaW9jdGwncwogICoKICAqIEBjbWQ6SW9jdGwgY21kCiAgKiBAYXJnOmRhdGEKQEAgLTEwNjcsNyArMTA2Nyw3IEBACiAJCQlyZXR2YWwgPSAtRUZBVUxUOwogCQkJYnJlYWs7CiAJCX0KLQkJcHJfZGVidWcoIlNFVF9WT0xVTUUgcmVjaWV2ZWQgZm9yICVkIVxuIiwKKwkJcHJfZGVidWcoIlNFVF9WT0xVTUUgcmVjZWl2ZWQgZm9yICVkIVxuIiwKIAkJCQlzZXRfdm9sLnN0cmVhbV9pZCk7CiAJCWlmIChtaW5vciA9PSBTVFJFQU1fTU9EVUxFICYmIHNldF92b2wuc3RyZWFtX2lkID09IDApIHsKIAkJCXByX2RlYnVnKCJpbnZhbGlkIG9wZXJhdGlvbiFcbiIpOwpAQCAtMTA4NSw3ICsxMDg1LDcgQEAKIAkJCXJldHZhbCA9IC1FRkFVTFQ7CiAJCQlicmVhazsKIAkJfQotCQlwcl9kZWJ1ZygiSU9DVExfR0VUX1ZPTFVNRSByZWNpZXZlZCBmb3Igc3RyZWFtID0gJWQhXG4iLAorCQlwcl9kZWJ1ZygiSU9DVExfR0VUX1ZPTFVNRSByZWNlaXZlZCBmb3Igc3RyZWFtID0gJWQhXG4iLAogCQkJCWdldF92b2wuc3RyZWFtX2lkKTsKIAkJaWYgKG1pbm9yID09IFNUUkVBTV9NT0RVTEUgJiYgZ2V0X3ZvbC5zdHJlYW1faWQgPT0gMCkgewogCQkJcHJfZGVidWcoImludmFsaWQgb3BlcmF0aW9uIVxuIik7CkBAIC0xMTE3LDcgKzExMTcsNyBAQAogCQkJcmV0dmFsID0gLUVGQVVMVDsKIAkJCWJyZWFrOwogCQl9Ci0JCXByX2RlYnVnKCJTTkRSVl9TU1RfU0VUX1ZPTFVNRSByZWNpZXZlZCBmb3IgJWQhXG4iLAorCQlwcl9kZWJ1ZygiU05EUlZfU1NUX1NFVF9WT0xVTUUgcmVjZWl2ZWQgZm9yICVkIVxuIiwKIAkJCXNldF9tdXRlLnN0cmVhbV9pZCk7CiAJCWlmIChtaW5vciA9PSBTVFJFQU1fTU9EVUxFICYmIHNldF9tdXRlLnN0cmVhbV9pZCA9PSAwKSB7CiAJCQlyZXR2YWwgPSAtRVBFUk07CkBAIC0xMTUzLDcgKzExNTMsNyBAQAogCWNhc2UgX0lPQ19OUihTTkRSVl9TU1RfTU1BUF9DQVBUVVJFKTogewogCQlzdHJ1Y3Qgc25kX3NzdF9tbWFwX2J1ZmZzIG1tYXBfYnVmOwogCi0JCXByX2RlYnVnKCJTTkRSVl9TU1RfTU1BUF9QTEFZL0NBUFRVUkUgcmVjaWV2ZWQhXG4iKTsKKwkJcHJfZGVidWcoIlNORFJWX1NTVF9NTUFQX1BMQVkvQ0FQVFVSRSByZWNlaXZlZCFcbiIpOwogCQlpZiAobWlub3IgIT0gU1RSRUFNX01PRFVMRSkgewogCQkJcmV0dmFsID0gLUVCQURSUUM7CiAJCQlicmVhazsKQEAgLTEyMzksNyArMTIzOSw3IEBACiAJY2FzZSBfSU9DX05SKFNORFJWX1NTVF9TRVRfVEFSR0VUX0RFVklDRSk6IHsKIAkJc3RydWN0IHNuZF9zc3RfdGFyZ2V0X2RldmljZSB0YXJnZXRfZGV2aWNlOwogCi0JCXByX2RlYnVnKCJTRVRfVEFSR0VUX0RFVklDRSByZWNpZXZlZCFcbiIpOworCQlwcl9kZWJ1ZygiU0VUX1RBUkdFVF9ERVZJQ0UgcmVjZWl2ZWQhXG4iKTsKIAkJaWYgKGNvcHlfZnJvbV91c2VyKCZ0YXJnZXRfZGV2aWNlLCAodm9pZCBfX3VzZXIgKilhcmcsCiAJCQkJc2l6ZW9mKHRhcmdldF9kZXZpY2UpKSkgewogCQkJcmV0dmFsID0gLUVGQVVMVDsKQEAgLTEyNTYsNyArMTI1Niw3IEBACiAJY2FzZSBfSU9DX05SKFNORFJWX1NTVF9EUklWRVJfSU5GTyk6IHsKIAkJc3RydWN0IHNuZF9zc3RfZHJpdmVyX2luZm8gaW5mbzsKIAotCQlwcl9kZWJ1ZygiU05EUlZfU1NUX0RSSVZFUl9JTkZPIHJlY2l2ZWRcbiIpOworCQlwcl9kZWJ1ZygiU05EUlZfU1NUX0RSSVZFUl9JTkZPIHJlY2VpdmVkXG4iKTsKIAkJaW5mby52ZXJzaW9uID0gU1NUX1ZFUlNJT05fTlVNOwogCQkvKiBoYXJkIGNvZGluZywgc2h1ZCBnZXQgc3VtaG93IGxhdGVyICovCiAJCWluZm8uYWN0aXZlX3BjbV9zdHJlYW1zID0gc3N0X2Rydl9jdHgtPnN0cmVhbV9jbnQgLQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHJ2X2ludGVyZmFjZS5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHJ2X2ludGVyZmFjZS5jCmluZGV4IGVhOGUyNTEuLmU5YzE4MjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X2Rydl9pbnRlcmZhY2UuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kcnZfaW50ZXJmYWNlLmMKQEAgLTMxNSw3ICszMTUsNyBAQAogCXBtX3J1bnRpbWVfZ2V0X3N5bmMoJnNzdF9kcnZfY3R4LT5wY2ktPmRldik7CiAKIAlpZiAoc3N0X2Rydl9jdHgtPnNzdF9zdGF0ZSA9PSBTU1RfU1VTUEVOREVEKSB7Ci0JCS8qIExQRSBpcyBzdXNwZW5kZWQsIHJlc3VtZSBpdCBiZWZvcmUgcHJvY2VkaW5nKi8KKwkJLyogTFBFIGlzIHN1c3BlbmRlZCwgcmVzdW1lIGl0IGJlZm9yZSBwcm9jZWVkaW5nKi8KIAkJcHJfZGVidWcoIlJlc3VtaW5nIGZyb20gU3VzcGVuZGVkIHN0YXRlXG4iKTsKIAkJcmV0dmFsID0gaW50ZWxfc3N0X3Jlc3VtZShzc3RfZHJ2X2N0eC0+cGNpKTsKIAkJaWYgKHJldHZhbCkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZHNwLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYwppbmRleCA2ZTVjOTE1Li5iZmZlNGM2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9kc3AuYwpAQCAtMzUwLDcgKzM1MCw3IEBACiAKIH0KIAotLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb2VyIGRvd25sb2FkaW5nIHRoZSBjb2RlYy9wb3N0cHJvY2Vzc2luZworLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBjb2RlYy9wb3N0cHJvY2Vzc2luZwogbGlicmFyeSBpcyBzZXQgZm9yIGRvd25sb2FkIHRvIFNTVCBEU1AqLwogc3RhdGljIGludCBzc3RfdmFsaWRhdGVfbGlicmFyeShjb25zdCBzdHJ1Y3QgZmlybXdhcmUgKmZ3X2xpYiwKIAkJc3RydWN0IGxpYl9zbG90X2luZm8gKnNsb3QsCkBAIC00MDUsNyArNDA1LDcgQEAKIAogfQogCi0vKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIEZXIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgbGliYXJ5IGRvd25sb2FkCisvKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIEZXIHJlcXVlc3RzIGZvciBhIHBhcnRpY3VsYXIgbGlicmFyeSBkb3dubG9hZAogVGhpcyBmdW5jdGlvbiBwcmVwYXJlcyB0aGUgbGlicmFyeSB0byBkb3dubG9hZCovCiBpbnQgc3N0X2xvYWRfbGlicmFyeShzdHJ1Y3Qgc25kX3NzdF9saWJfZG93bmxvYWQgKmxpYiwgdTggb3BzKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3RfZndfaXBjLmggYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaAppbmRleCA4ZGYzMTNkLi4wZjBjNWJiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9md19pcGMuaApAQCAtMTExLDcgKzExMSw3IEBACiAjZGVmaW5lIElQQ19TU1RfUEVSSU9EX0VMQVBTRUQgMHg5NyAvKiBwZXJpb2QgZWxhcHNlZCAqLwogI2RlZmluZSBJUENfSUFfVEFSR0VUX0RFVl9DSE5HRCAweDk4IC8qIGVycm9yIGluIHByb2Nlc3NpbmcgYSBzdHJlYW0gKi8KIAotI2RlZmluZSBJUENfU1NUX0VSUk9SX0VWRU5UIDB4OTkgLyogQnVmZmVyIG92ZXIgcnVuIG9jY3VyZWQgKi8KKyNkZWZpbmUgSVBDX1NTVF9FUlJPUl9FVkVOVCAweDk5IC8qIEJ1ZmZlciBvdmVyIHJ1biBvY2N1cnJlZCAqLwogLyogTDJTIG1lc3NhZ2VzICovCiAjZGVmaW5lIElQQ19TQ19ERFJfTElOS19VUCAweEMwCiAjZGVmaW5lIElQQ19TQ19ERFJfTElOS19ET1dOIDB4QzEKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbS5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKaW5kZXggNzk1ZTQyYS4uZGQ1OGJlNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtLmMKQEAgLTk4LDcgKzk4LDcgQEAKIAkJaWYgKHNzdF9kcnZfY3R4LT5zdHJlYW1zW2ldLnN0YXR1cyA9PSBTVFJFQU1fVU5fSU5JVCkKIAkJCXJldHVybiBpOwogCX0KLQlwcl9kZWJ1ZygiRGlkbnQgZmluZCBlbXB0eSBzdHJlYW0gZm9yIG1yc3RcbiIpOworCXByX2RlYnVnKCJEaWRuJ3QgZmluZCBlbXB0eSBzdHJlYW0gZm9yIG1yc3RcbiIpOwogCXJldHVybiAtRUJVU1k7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbV9lbmNvZGVkLmMgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsX3NzdF9zdHJlYW1fZW5jb2RlZC5jCmluZGV4IDI5NzUzYzcuLmQ1ZjA3YjggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxfc3N0X3N0cmVhbV9lbmNvZGVkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbF9zc3Rfc3RyZWFtX2VuY29kZWQuYwpAQCAtOTE0LDcgKzkxNCw3IEBACiAJCSh2b2lkICopICgodW5zaWduZWQgbG9uZykgcmFyX2J1ZmZlcnMuYnVzX2FkZHJlc3MpOwogCQlwcl9kZWJ1ZygiUkFSIGJ1ZiBhZGRyIGluIERuUiAoaW5wdXQgYnVmZmVyIGZ1bmN0aW9uKTB4JWx1IiwKIAkJCQkgKHVuc2lnbmVkIGxvbmcpIHN0cl9pbmZvLT5kZWNvZGVfaWJ1Zik7Ci0JCXByX2RlYnVnKCJyYXIgaW4gRG5SIGRlY29kZSBmdW50aW9uL291dHB1dCBiX2FkZCByYXIgPTB4JWx1IiwKKwkJcHJfZGVidWcoInJhciBpbiBEblIgZGVjb2RlIGZ1bmN0aW9uL291dHB1dCBiX2FkZCByYXIgPTB4JWx1IiwKIAkJCQkodW5zaWduZWQgbG9uZykgcmFyX2J1ZmZlcnMuYnVzX2FkZHJlc3MpOwogCQkqaW5wdXRfaW5kZXggPSBpICsgMTsKIAkJc3RyX2luZm8tPmRlY29kZV9pc2l6ZSA9IGRidWZzLT5pYnVmcy0+YnVmZl9lbnRyeVtpXS5zaXplOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5jIGIvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5jCmluZGV4IGZiMjI5MjEuLmQyMDc2MzYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxtaWQuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmMKQEAgLTc3Myw3ICs3NzMsNyBAQAogCQlpZiAocmV0X3ZhbCkKIAkJCXJldHVybiByZXRfdmFsOwogCQlzc3RfY2FyZF92ZW5kb3JfaWQgPSAodmVuZG9yX2FkZHIudmFsdWUgJiAoTUFTSzJ8TUFTSzF8TUFTSzApKTsKLQkJcHJfZGVidWcoIm9yZ2luYWwgbiBleHRyYXRlZCB2ZW5kb3IgaWQgPSAweCV4ICVkXG4iLAorCQlwcl9kZWJ1Zygib3JpZ2luYWwgbiBleHRyYXRlZCB2ZW5kb3IgaWQgPSAweCV4ICVkXG4iLAogCQkJCXZlbmRvcl9hZGRyLnZhbHVlLCBzc3RfY2FyZF92ZW5kb3JfaWQpOwogCQlpZiAoc3N0X2NhcmRfdmVuZG9yX2lkIDwgMCB8fCBzc3RfY2FyZF92ZW5kb3JfaWQgPiAyKSB7CiAJCQlwcl9lcnIoInZlbmRvciBjYXJkIG5vdCBzdXBwb3J0ZWQhIVxuIik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmggYi9kcml2ZXJzL3N0YWdpbmcvaW50ZWxfc3N0L2ludGVsbWlkLmgKaW5kZXggY2E4ODFiNy4uZTc3ZGE4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2ludGVsX3NzdC9pbnRlbG1pZC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9pbnRlbF9zc3QvaW50ZWxtaWQuaApAQCAtOTAsNyArOTAsNyBAQAogICogQGNhcmRfaW5kZXg6IHNvdW5kIGNhcmQgaW5kZXgKICAqIEBjYXJkX2lkOiBzb3VuZCBjYXJkIGlkIGRldGVjdGVkCiAgKiBAc3N0ZHJ2X29wczogcHRyIHRvIHNzdCBkcml2ZXIgb3BzCi0gKiBAcGRldjogcHRyIHRvIHBsYXRmcm9tIGRldmljZQorICogQHBkZXY6IHB0ciB0byBwbGF0Zm9ybSBkZXZpY2UKICAqIEBpcnE6IGludGVycnVwdCBudW1iZXIgZGV0ZWN0ZWQKICAqIEBwbWljX3N0YXR1czogRGV2aWNlIHN0YXR1cyBvZiBzb3VuZCBjYXJkCiAgKiBAaW50X2Jhc2U6IHB0ciB0byBNTUlPIGludGVycnVwdCByZWdpb24KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9pbml0LmMgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3IvaW5pdC5jCmluZGV4IDVjMDFmMjguLjhhZjdjODQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9pbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2tldWNyL2luaXQuYwpAQCAtOTAsNyArOTAsNyBAQAogCiAJcmVzdWx0ID0gRU5FX1NlbmRTY3NpQ21kKHVzLCBGRElSX1JFQUQsICZidWYsIDApOwogCWlmIChyZXN1bHQgIT0gVVNCX1NUT1JfWEZFUl9HT09EKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiRXhlY3Rpb24gTVMgSW5pdCBDb2RlIEZhaWwgISFcbiIpOworCQlwcmludGsoS0VSTl9FUlIgIkV4ZWN1dGlvbiBNUyBJbml0IENvZGUgRmFpbCAhIVxuIik7CiAJCXJldHVybiBVU0JfU1RPUl9UUkFOU1BPUlRfRVJST1I7CiAJfQogCkBAIC0xNDUsNyArMTQ1LDcgQEAKIAlyZXN1bHQgPSBFTkVfU2VuZFNjc2lDbWQodXMsIEZESVJfUkVBRCwgJmJ1ZiwgMCk7CiAJaWYgKHJlc3VsdCAhPSBVU0JfU1RPUl9YRkVSX0dPT0QpIHsKIAkJcHJpbnRrKEtFUk5fRVJSCi0JCSAgICAgICAiRXhlY3Rpb24gU00gSW5pdCBDb2RlIEZhaWwgISEgcmVzdWx0ID0gJXhcbiIsIHJlc3VsdCk7CisJCSAgICAgICAiRXhlY3V0aW9uIFNNIEluaXQgQ29kZSBGYWlsICEhIHJlc3VsdCA9ICV4XG4iLCByZXN1bHQpOwogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2tldWNyL3NtaWxtYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYwppbmRleCAyY2JlOWY4Li45NWM2ODhhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYworKysgYi9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbG1haW4uYwpAQCAtNjQsNyArNjQsNyBAQAogZXh0ZXJuIHN0cnVjdCBBRERSRVNTICAgIE1lZGlhOwogZXh0ZXJuIHN0cnVjdCBDSVNfQVJFQSAgIENpc0FyZWE7CiAKLS8vQklUIENvbnRyb2xsIE1hY3JvCisvL0JJVCBDb250cm9sIE1hY3JvCiBCWVRFIEJpdERhdGFbXSA9IHsgMHgwMSwweDAyLDB4MDQsMHgwOCwweDEwLDB4MjAsMHg0MCwweDgwIH0gOwogI2RlZmluZSBTZXRfRF9CaXQoYSxiKSAgICAoYVsoQllURSkoKGIpLzgpXXw9IEJpdERhdGFbKGIpJThdKQogI2RlZmluZSBDbHJfRF9CaXQoYSxiKSAgICAoYVsoQllURSkoKGIpLzgpXSY9fkJpdERhdGFbKGIpJThdKQpAQCAtNzYsNyArNzYsNyBAQAogCiAKIC8vCi0vLy8vUG93ZXIgQ29udHJvbGwgJiBNZWRpYSBFeGlzdCBDaGVjayBGdW5jdGlvbgorLy8vL1Bvd2VyIENvbnRyb2wgJiBNZWRpYSBFeGlzdCBDaGVjayBGdW5jdGlvbgogLy8vLy0tLS0tIEluaXRfRF9TbWFydE1lZGlhKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vaW50IEluaXRfRF9TbWFydE1lZGlhKHZvaWQpCiAvL3sKQEAgLTU3NSw3ICs1NzUsNyBAQAogLy8gICAgcmV0dXJuKFNVQ0NFU1MpOwogLy99CiAvLwotLy8vL1Bvd2VyIENvbnRyb2xsICYgTWVkaWEgRXhpc3QgQ2hlY2sgU3Vicm91dGluZQorLy8vL1Bvd2VyIENvbnRyb2wgJiBNZWRpYSBFeGlzdCBDaGVjayBTdWJyb3V0aW5lCiAvLy8vLS0tLS0gSW5pdGlhbGl6ZV9EX01lZGlhKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy92b2lkIEluaXRpYWxpemVfRF9NZWRpYSh2b2lkKQogLy97CkBAIC03MzgsNyArNzM4LDcgQEAKIC8vICAgIHJldHVybihTVUNDRVNTKTsKIC8vfQogKi8KLS8vU21hcnRNZWRpYSBQaHlzaWNhbCBBZGRyZXNzIENvbnRyb2xsIFN1YnJvdXRpbmUKKy8vU21hcnRNZWRpYSBQaHlzaWNhbCBBZGRyZXNzIENvbnRyb2wgU3Vicm91dGluZQogLy8tLS0tLSBDb252X0RfTWVkaWFBZGRyKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbnQgQ29udl9EX01lZGlhQWRkcihzdHJ1Y3QgdXNfZGF0YSAqdXMsIERXT1JEIGFkZHIpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbHN1Yi5jIGIvZHJpdmVycy9zdGFnaW5nL2tldWNyL3NtaWxzdWIuYwppbmRleCA4MGRhNjFjLi40ZmU0NzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcva2V1Y3Ivc21pbHN1Yi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9rZXVjci9zbWlsc3ViLmMKQEAgLTU3LDcgKzU3LDcgQEAKICNkZWZpbmUgT0REICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAvLyBPZGQgUGFnZSBmb3IgMjU2Ynl0ZS9wYWdlCiAKIAotLy9TbWFydE1lZGlhIFJlZHVuZGFudCBidWZmZXIgZGF0YSBDb250cm9sbCBTdWJyb3V0aW5lCisvL1NtYXJ0TWVkaWEgUmVkdW5kYW50IGJ1ZmZlciBkYXRhIENvbnRyb2wgU3Vicm91dGluZQogLy8tLS0tLSBDaGVja19EX0RhdGFCbGFuaygpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBpbnQgQ2hlY2tfRF9EYXRhQmxhbmsoQllURSAqcmVkdW5kYW50KQogewpAQCAtMTM2Nyw3ICsxMzY3LDcgQEAKICAgICB9CiB9CiAvKgotLy8vL1NtYXJ0TWVkaWEgUG93ZXIgQ29udHJvbGwgU3Vicm91dGluZQorLy8vL1NtYXJ0TWVkaWEgUG93ZXIgQ29udHJvbCBTdWJyb3V0aW5lCiAvLy8vLS0tLS0gQ250X0RfUmVzZXQoKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAvL3ZvaWQgQ250X0RfUmVzZXQodm9pZCkKIC8vewpAQCAtMTQ3OCw3ICsxNDc4LDcgQEAKIC8vfQogLy8KICovCi0vL1NtYXJ0TWVkaWEgRUNDIENvbnRyb2xsIFN1YnJvdXRpbmUKKy8vU21hcnRNZWRpYSBFQ0MgQ29udHJvbCBTdWJyb3V0aW5lCiAvLy0tLS0tIENoZWNrX0RfUmVhZEVycm9yKCkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogaW50IENoZWNrX0RfUmVhZEVycm9yKEJZVEUgKnJlZHVuZGFudCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9saXJjL2xpcmNfZW5lMDEwMC5oIGIvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKaW5kZXggNzc2YjY5My4uMDZiZWJkNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL2xpcmMvbGlyY19lbmUwMTAwLmgKQEAgLTgxLDcgKzgxLDcgQEAKIAogLyogQ0lSIGJsb2NrIHNldHRpbmdzICovCiAjZGVmaW5lIEVORV9DSVJfQ09ORjEJCTB4RkVDMAotI2RlZmluZSBFTkVfQ0lSX0NPTkYxX0FEQ19PTgkweDcJIC8qIHJlY2lldmVyIG9uIGdwaW80MCBlbmFibGVkICovCisjZGVmaW5lIEVORV9DSVJfQ09ORjFfQURDX09OCTB4NwkgLyogcmVjZWl2ZXIgb24gZ3BpbzQwIGVuYWJsZWQgKi8KICNkZWZpbmUgRU5FX0NJUl9DT05GMV9MRUFSTjEJKDEgPDwgMykgLyogZW5hYmxlZCBvbiBsZWFybmluZyBtb2RlICovCiAjZGVmaW5lIEVORV9DSVJfQ09ORjFfVFhfT04JMHgzMAkgLyogZW5hYmxlZCBvbiB0cmFuc21pdCAqLwogI2RlZmluZSBFTkVfQ0lSX0NPTkYxX1RYX0NBUlIJKDEgPDwgNykgLyogc2VuZCBUWCBjYXJyaWVyIG9yIG5vdCAqLwpAQCAtOTYsNyArOTYsNyBAQAogCiAvKiB0cmFuc21pdHRlciAtIG5vdCBpbXBsZW1lbnRlZCB5ZXQgKi8KIC8qIEtCMzkyNkMgYW5kIGhpZ2hlciAqLwotLyogdHJhbnNtaXNzaW9uIGlzIHZlcnkgc2ltaWxpYXIgdG8gcmVjaWV2aW5nLCBhIGJ5dGUgaXMgd3JpdHRlbiB0byAqLworLyogdHJhbnNtaXNzaW9uIGlzIHZlcnkgc2ltaWxhciB0byByZWNlaXZpbmcsIGEgYnl0ZSBpcyB3cml0dGVuIHRvICovCiAvKiBFTkVfVFhfSU5QVVQsIGluIHNhbWUgbWFubmVyIGFzIGl0IGlzIHJlYWQgZnJvbSBzYW1wbGUgYnVmZmVyICovCiAvKiBzYW1wbGUgcGVyaW9kIGlzIGZpeGVkKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfaGFuZGxlci5jIGIvZHJpdmVycy9zdGFnaW5nL21lbXJhci9tZW1yYXJfaGFuZGxlci5jCmluZGV4IGNmY2FhOGUuLjFkOTM5OWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9tZW1yYXIvbWVtcmFyX2hhbmRsZXIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbWVtcmFyL21lbXJhcl9oYW5kbGVyLmMKQEAgLTY5MCw3ICs2OTAsNyBAQAogICoJQGlub2RlOiBpbm9kZSB0byBvcGVuCiAgKglAZmlscDogZmlsZSBoYW5kbGUKICAqCi0gKglBcyB3ZSBzdXBwb3J0IG11bHRpcGxlIGFyYml0YXJ5IG9wZW5zIHRoZXJlIGlzIG5vIHdvcmsgdG8gYmUgZG9uZQorICoJQXMgd2Ugc3VwcG9ydCBtdWx0aXBsZSBhcmJpdHJhcnkgb3BlbnMgdGhlcmUgaXMgbm8gd29yayB0byBiZSBkb25lCiAgKglyZWFsbHkuCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHA0X292ZXJsYXkuYyBiL2RyaXZlcnMvc3RhZ2luZy9tc20vbWRwNF9vdmVybGF5LmMKaW5kZXggZGUyODRjMi4uYjlhY2Y1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHA0X292ZXJsYXkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcDRfb3ZlcmxheS5jCkBAIC02OTYsNyArNjk2LDcgQEAKIAlzdGFnZSA9IHBpcGUtPm1peGVyX3N0YWdlOwogCW1peGVyID0gcGlwZS0+bWl4ZXJfbnVtOwogCi0JaWYgKHBpcGUgIT0gY3RybC0+c3RhZ2VbbWl4ZXJdW3N0YWdlXSkJLyogbm90IHJ1bmluZyAqLworCWlmIChwaXBlICE9IGN0cmwtPnN0YWdlW21peGVyXVtzdGFnZV0pCS8qIG5vdCBydW5uaW5nICovCiAJCXJldHVybjsKIAogCS8qIE1EUF9MQVlFUk1JWEVSX0lOX0NGRywgc2hhcmQgYnkgYm90aCBtaXhlciAwIGFuZCAxICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21zbS9tZHBfcHBwX2RxLmMgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcF9wcHBfZHEuYwppbmRleCAzZGMxYzBjLi4zYTY4N2M3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcF9wcHBfZHEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21kcF9wcHBfZHEuYwpAQCAtMjAwLDcgKzIwMCw3IEBACiAJCW1zbV9mYl9lbnN1cmVfbWVtX2NvaGVyZW5jeV9hZnRlcl9kbWEoam9iLT5pbmZvLCAmam9iLT5yZXEsIDEpOwogCiAJCS8qIFNjaGVkdWxlIGpvYnMgZm9yIGNsZWFudXAKLQkJICogQSBzZXBlcmF0ZSB3b3JrZXIgdGhyZWFkIGRvZXMgdGhpcyAqLworCQkgKiBBIHNlcGFyYXRlIHdvcmtlciB0aHJlYWQgZG9lcyB0aGlzICovCiAJCXF1ZXVlX2RlbGF5ZWRfd29yayhtZHBfcHBwX2Rqb2JfY2xuciwgJmpvYi0+Y2xlYW5lciwKIAkJCW1kcF90aW1lcl9kdXJhdGlvbik7CiAJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL21zbS9tc21fZmIuYyBiL2RyaXZlcnMvc3RhZ2luZy9tc20vbXNtX2ZiLmMKaW5kZXggYTJmMjlkNC4uZTdlZjgzNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL21zbS9tc21fZmIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbXNtL21zbV9mYi5jCkBAIC04NTksNyArODU5LDcgQEAKIAkJYnJlYWs7CiAKIAlkZWZhdWx0OgotCQlNU01fRkJfRVJSKCJtc21fZmJfaW5pdDogZmIgJWQgdW5rb3duIGltYWdlIHR5cGUhXG4iLAorCQlNU01fRkJfRVJSKCJtc21fZmJfaW5pdDogZmIgJWQgdW5rbm93biBpbWFnZSB0eXBlIVxuIiwKIAkJCSAgIG1mZC0+aW5kZXgpOwogCQlyZXR1cm4gcmV0OwogCX0KQEAgLTE3OTMsOSArMTc5Myw5IEBACiAvKgogICogTk9URTogVGhlIHVzZXJzcGFjZSBpc3N1ZXMgYmxpdCBvcGVyYXRpb25zIGluIGEgc2VxdWVuY2UsIHRoZSBzZXF1ZW5jZQogICogc3RhcnQgd2l0aCBhIG9wZXJhdGlvbiBtYXJrZWQgU1RBUlQgYW5kIGVuZHMgaW4gYW4gb3BlcmF0aW9uIG1hcmtlZAotICogRU5ELiBJdCBpcyBndXJhbnRlZWQgYnkgdGhlIHVzZXJzcGFjZSB0aGF0IGFsbCB0aGUgYmxpdCBvcGVyYXRpb25zCisgKiBFTkQuIEl0IGlzIGd1YXJhbnRlZWQgYnkgdGhlIHVzZXJzcGFjZSB0aGF0IGFsbCB0aGUgYmxpdCBvcGVyYXRpb25zCiAgKiBiZXR3ZWVuIFNUQVJUIGFuZCBFTkQgYXJlIG9ubHkgd2l0aGluIHRoZSByZWdpb25zIG9mIGFyZWFzIGRlc2lnbmF0ZWQKLSAqIGJ5IHRoZSBTVEFSVCBhbmQgRU5EIG9wZXJhdGlvbnMgYW5kIHRoYXQgdGhlIHVzZXJzcGFjZSBkb2VzbnQgbW9kaWZ5CisgKiBieSB0aGUgU1RBUlQgYW5kIEVORCBvcGVyYXRpb25zIGFuZCB0aGF0IHRoZSB1c2Vyc3BhY2UgZG9lc24ndCBtb2RpZnkKICAqIHRob3NlIGFyZWFzLiBIZW5jZSBpdCB3b3VsZCBiZSBlbm91Z2ggdG8gcGVyZm9ybSBiYXJyaWVyL2NhY2hlIG9wZXJhdGlvbnMKICAqIG9ubHkgb24gdGhlIFNUQVJUIGFuZCBFTkQgb3BlcmF0aW9ucy4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWNtZC1xdWV1ZS5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWNtZC1xdWV1ZS5oCmluZGV4IDU5ZDIyMTQuLjYxNDY1M2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1jbWQtcXVldWUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtY21kLXF1ZXVlLmgKQEAgLTIxNCw3ICsyMTQsNyBAQAogCS8qCiAJICogV2FybmluZzogVGhpcyBjb2RlIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggZGV2aWNlcyB0aGF0CiAJICogaGF2ZSAyNTYgcXVldWVzIG9yIGxlc3MuIERldmljZXMgd2l0aCBtb3JlIHRoYW4gMTYgcXVldWVzCi0JICogYXJlIGxheWVkIG91dCBpbiBtZW1vcnkgdG8gYWxsb3cgY29yZXMgcXVpY2sgYWNjZXNzIHRvCisJICogYXJlIGxhaWQgb3V0IGluIG1lbW9yeSB0byBhbGxvdyBjb3JlcyBxdWljayBhY2Nlc3MgdG8KIAkgKiBldmVyeSAxNnRoIHF1ZXVlLiBUaGlzIHJlZHVjZXMgY2FjaGUgdGhyYXNoaW5nIHdoZW4geW91IGFyZQogCSAqIHJ1bm5pbmcgMTYgcXVldWVzIHBlciBwb3J0IHRvIHN1cHBvcnQgbG9ja2xlc3Mgb3BlcmF0aW9uLgogCSAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWZwYS5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWZwYS5oCmluZGV4IDUwYThjOTEuLjFmMDRmOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1mcGEuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtZnBhLmgKQEAgLTE5NSw3ICsxOTUsNyBAQAogCWN2bXhfZnBhX2lvYmRtYV9kYXRhX3QgZGF0YTsKIAogCS8qCi0JICogSGFyZHdhcmUgb25seSB1c2VzIDY0IGJpdCBhbGxpZ25lZCBsb2NhdGlvbnMsIHNvIGNvbnZlcnQKKwkgKiBIYXJkd2FyZSBvbmx5IHVzZXMgNjQgYml0IGFsaWduZWQgbG9jYXRpb25zLCBzbyBjb252ZXJ0CiAJICogZnJvbSBieXRlIGFkZHJlc3MgdG8gNjQtYml0IGluZGV4CiAJICovCiAJZGF0YS5zLnNjcmFkZHIgPSBzY3JfYWRkciA+PiAzOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci1ib2FyZC5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci1ib2FyZC5oCmluZGV4IDYxMWE4ZTAuLmI0NjViZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItYm9hcmQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLWJvYXJkLmgKQEAgLTgxLDcgKzgxLDcgQEAKICAqIEBwaHlfYWRkcjogIFRoZSBhZGRyZXNzIG9mIHRoZSBQSFkgdG8gcHJvZ3JhbQogICogQGxpbmtfZmxhZ3M6CiAgKiAgICAgICAgICAgICAgICAgIEZsYWdzIHRvIGNvbnRyb2wgYXV0b25lZ290aWF0aW9uLiAgQml0IDAgaXMgYXV0b25lZ290aWF0aW9uCi0gKiAgICAgICAgICAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRvIG1haW50YWluIGJhY2t3YXJlIGNvbXBhdGFiaWxpdHkuCisgKiAgICAgICAgICAgICAgICAgIGVuYWJsZS9kaXNhYmxlIHRvIG1haW50YWluIGJhY2t3YXJlIGNvbXBhdGliaWxpdHkuCiAgKiBAbGlua19pbmZvOiBMaW5rIHNwZWVkIHRvIHByb2dyYW0uIElmIHRoZSBzcGVlZCBpcyB6ZXJvIGFuZCBhdXRvbmVnb3RpYXRpb24KICAqICAgICAgICAgICAgICAgICAgaXMgZW5hYmxlZCwgYWxsIHBvc3NpYmxlIG5lZ290aWF0aW9uIHNwZWVkcyBhcmUgYWR2ZXJ0aXNlZC4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLXV0aWwuYyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItdXRpbC5jCmluZGV4IDQxZWY4YTQuLjEzMTE4MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItdXRpbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXItdXRpbC5jCkBAIC0zNjIsNyArMzYyLDcgQEAKIH0KIAogLyoqCi0gKiBSZXR1cm5zIHRoZSBJUEQvUEtPIHBvcnQgbnVtYmVyIGZvciBhIHBvcnQgb24gdGVoIGdpdmVuCisgKiBSZXR1cm5zIHRoZSBJUEQvUEtPIHBvcnQgbnVtYmVyIGZvciBhIHBvcnQgb24gdGhlIGdpdmVuCiAgKiBpbnRlcmZhY2UuCiAgKgogICogQGludGVyZmFjZTogSW50ZXJmYWNlIHRvIHVzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci5jIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LWhlbHBlci5jCmluZGV4IDU5MTUwNjYuLmU5YzVjODMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1oZWxwZXIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtaGVscGVyLmMKQEAgLTY5MSw3ICs2OTEsNyBAQAogCiAJCWlmICghcmV0cnlfY250KQogCQkJY3ZteF9kcHJpbnRmKCJXQVJOSU5HOiBGSVhfSVBEX1BUUl9BTElHTk1FTlQgIgotCQkJCSAgICAgImdldF93b3JrKCkgdGltZW91dCBvY2N1cmVkLlxuIik7CisJCQkJICAgICAiZ2V0X3dvcmsoKSB0aW1lb3V0IG9jY3VycmVkLlxuIik7CiAKIAkJLyogRnJlZSBwYWNrZXQgKi8KIAkJaWYgKHdvcmspCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtbWRpby5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LW1kaW8uaAppbmRleCBmNDVkYzQ5Li5kODhhYjhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtbWRpby5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1tZGlvLmgKQEAgLTI1NCw3ICsyNTQsNyBAQAogI2RlZmluZSBNRElPX0NMQVVTRV80NV9SRUFEX0lOQyAyCiAjZGVmaW5lIE1ESU9fQ0xBVVNFXzQ1X1JFQUQgICAgIDMKIAotLyogTU1EIGlkZW50aWZpZXJzLCBtb3N0bHkgZm9yIGFjY2Vzc2luZyBkZXZpY2VzIHdpdGhpbmcgWEVOUEFLIG1vZHVsZXMuICovCisvKiBNTUQgaWRlbnRpZmllcnMsIG1vc3RseSBmb3IgYWNjZXNzaW5nIGRldmljZXMgd2l0aGluIFhFTlBBSyBtb2R1bGVzLiAqLwogI2RlZmluZSBDVk1YX01NRF9ERVZJQ0VfUE1BX1BNRCAgICAgIDEKICNkZWZpbmUgQ1ZNWF9NTURfREVWSUNFX1dJUyAgICAgICAgICAyCiAjZGVmaW5lIENWTVhfTU1EX0RFVklDRV9QQ1MgICAgICAgICAgMwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBrby5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBrby5oCmluZGV4IGYwNjhjMTkuLmRlMzQxMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wa28uaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtcGtvLmgKQEAgLTk4LDcgKzk4LDcgQEAKIAkvKgogCSAqIFBLTyBkb2Vzbid0IGRvIGFueSBsb2NraW5nLiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlCiAJICogYXBwbGljYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgY29yZSBpcyBhY2Nlc3NpbmcKLQkgKiB0aGUgc2FtZSBxdWV1ZSBhdCB0aGUgc21hZSB0aW1lCisJICogdGhlIHNhbWUgcXVldWUgYXQgdGhlIHNhbWUgdGltZQogCSAqLwogCUNWTVhfUEtPX0xPQ0tfTk9ORSA9IDAsCiAJLyoKQEAgLTMyNCw3ICszMjQsNyBAQAogICogLSBDVk1YX1BLT19MT0NLX05PTkUKICAqICAgICAgLSBQS08gZG9lc24ndCBkbyBhbnkgbG9ja2luZy4gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5CiAgKiAgICAgICAgICBvZiB0aGUgYXBwbGljYXRpb24gdG8gbWFrZSBzdXJlIHRoYXQgbm8gb3RoZXIgY29yZQotICogICAgICAgICAgaXMgYWNjZXNzaW5nIHRoZSBzYW1lIHF1ZXVlIGF0IHRoZSBzbWFlIHRpbWUuCisgKiAgICAgICAgICBpcyBhY2Nlc3NpbmcgdGhlIHNhbWUgcXVldWUgYXQgdGhlIHNhbWUgdGltZS4KICAqIC0gQ1ZNWF9QS09fTE9DS19BVE9NSUNfVEFHCiAgKiAgICAgIC0gUEtPIHBlcmZvcm1zIGFuIGF0b21pYyB0YWdzd2l0Y2ggdG8gaW5zdXJlIGV4Y2x1c2l2ZQogICogICAgICAgICAgYWNjZXNzIHRvIHRoZSBvdXRwdXQgcXVldWUuIFRoaXMgd2lsbCBtYWludGFpbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBvdy5oIGIvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9jdm14LXBvdy5oCmluZGV4IGJmOWUwNjkuLjk5OWFlZmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9vY3Rlb24vY3ZteC1wb3cuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2N2bXgtcG93LmgKQEAgLTE0OTIsOCArMTQ5Miw4IEBACiAvKioKICAqIFN3aXRjaCB0byBhIE5VTEwgdGFnLCB3aGljaCBlbmRzIGFueSBvcmRlcmluZyBvcgogICogc3luY2hyb25pemF0aW9uIHByb3ZpZGVkIGJ5IHRoZSBQT1cgZm9yIHRoZSBjdXJyZW50Ci0gKiB3b3JrIHF1ZXVlIGVudHJ5LiAgVGhpcyBvcGVyYXRpb24gY29tcGxldGVzIGltbWVkaWF0bHksCi0gKiBzbyBjb21wbGV0ZXRpb24gc2hvdWxkIG5vdCBiZSB3YWl0ZWQgZm9yLgorICogd29yayBxdWV1ZSBlbnRyeS4gIFRoaXMgb3BlcmF0aW9uIGNvbXBsZXRlcyBpbW1lZGlhdGVseSwKKyAqIHNvIGNvbXBsZXRpb24gc2hvdWxkIG5vdCBiZSB3YWl0ZWQgZm9yLgogICogVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCB3YWl0IGZvciBwcmV2aW91cyB0YWcgc3dpdGNoZXMgdG8gY29tcGxldGUsCiAgKiBzbyB0aGUgY2FsbGVyIG11c3QgZW5zdXJlIHRoYXQgYW55IHByZXZpb3VzIHRhZyBzd2l0Y2hlcyBoYXZlIGNvbXBsZXRlZC4KICAqLwpAQCAtMTUzMiw4ICsxNTMyLDggQEAKIC8qKgogICogU3dpdGNoIHRvIGEgTlVMTCB0YWcsIHdoaWNoIGVuZHMgYW55IG9yZGVyaW5nIG9yCiAgKiBzeW5jaHJvbml6YXRpb24gcHJvdmlkZWQgYnkgdGhlIFBPVyBmb3IgdGhlIGN1cnJlbnQKLSAqIHdvcmsgcXVldWUgZW50cnkuICBUaGlzIG9wZXJhdGlvbiBjb21wbGV0ZXMgaW1tZWRpYXRseSwKLSAqIHNvIGNvbXBsZXRldGlvbiBzaG91bGQgbm90IGJlIHdhaXRlZCBmb3IuCisgKiB3b3JrIHF1ZXVlIGVudHJ5LiAgVGhpcyBvcGVyYXRpb24gY29tcGxldGVzIGltbWVkaWF0ZWx5LAorICogc28gY29tcGxldGlvbiBzaG91bGQgbm90IGJlIHdhaXRlZCBmb3IuCiAgKiBUaGlzIGZ1bmN0aW9uIHdhaXRzIGZvciBhbnkgcGVuZGluZyB0YWcgc3dpdGNoZXMgdG8gY29tcGxldGUKICAqIGJlZm9yZSByZXF1ZXN0aW5nIHRoZSBzd2l0Y2ggdG8gTlVMTC4KICAqLwpAQCAtMTY3Miw3ICsxNjcyLDcgQEAKIAogLyoqCiAgKiBQZXJmb3JtcyBhIHRhZyBzd2l0Y2ggYW5kIHRoZW4gYW4gaW1tZWRpYXRlIGRlc2NoZWR1bGUuIFRoaXMgY29tcGxldGVzCi0gKiBpbW1lZGlhdGx5LCBzbyBjb21wbGV0aW9uIG11c3Qgbm90IGJlIHdhaXRlZCBmb3IuICBUaGlzIGZ1bmN0aW9uIGRvZXMgTk9UCisgKiBpbW1lZGlhdGVseSwgc28gY29tcGxldGlvbiBtdXN0IG5vdCBiZSB3YWl0ZWQgZm9yLiAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVAogICogdXBkYXRlIHRoZSB3cWUgaW4gRFJBTSB0byBtYXRjaCBhcmd1bWVudHMuCiAgKgogICogVGhpcyBmdW5jdGlvbiBkb2VzIE5PVCB3YWl0IGZvciBhbnkgcHJpb3IgdGFnIHN3aXRjaGVzIHRvIGNvbXBsZXRlLCBzbyB0aGUKQEAgLTE3NTgsNyArMTc1OCw3IEBACiAKIC8qKgogICogUGVyZm9ybXMgYSB0YWcgc3dpdGNoIGFuZCB0aGVuIGFuIGltbWVkaWF0ZSBkZXNjaGVkdWxlLiBUaGlzIGNvbXBsZXRlcwotICogaW1tZWRpYXRseSwgc28gY29tcGxldGlvbiBtdXN0IG5vdCBiZSB3YWl0ZWQgZm9yLiAgVGhpcyBmdW5jdGlvbiBkb2VzIE5PVAorICogaW1tZWRpYXRlbHksIHNvIGNvbXBsZXRpb24gbXVzdCBub3QgYmUgd2FpdGVkIGZvci4gIFRoaXMgZnVuY3Rpb24gZG9lcyBOT1QKICAqIHVwZGF0ZSB0aGUgd3FlIGluIERSQU0gdG8gbWF0Y2ggYXJndW1lbnRzLgogICoKICAqIFRoaXMgZnVuY3Rpb24gd2FpdHMgZm9yIGFueSBwcmlvciB0YWcgc3dpdGNoZXMgdG8gY29tcGxldGUsIHNvIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC11dGlsLmggYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXV0aWwuaAppbmRleCAyMzQ2NzU2Li5jNzQ1YTcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXV0aWwuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LXV0aWwuaApAQCAtNTUsNyArNTUsNyBAQAogCQlyZXR1cm4gMjsKIAllbHNlIGlmIChpcGRfcG9ydCA8IDQwKQkvKiBJbnRlcmZhY2UgMyBmb3IgbG9vcGJhY2sgKi8KIAkJcmV0dXJuIDM7Ci0JZWxzZSBpZiAoaXBkX3BvcnQgPT0gNDApCS8qIE5vbiBleGlzdGFudCBpbnRlcmZhY2UgZm9yIFBPVzAgKi8KKwllbHNlIGlmIChpcGRfcG9ydCA9PSA0MCkJLyogTm9uIGV4aXN0ZW50IGludGVyZmFjZSBmb3IgUE9XMCAqLwogCQlyZXR1cm4gNDsKIAllbHNlCiAJCXBhbmljKCJJbGxlZ2FsIGlwZF9wb3J0ICVkIHBhc3NlZCB0byBJTlRFUkZBQ0VcbiIsIGlwZF9wb3J0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uX3hvXzEuYyBiL2RyaXZlcnMvc3RhZ2luZy9vbHBjX2Rjb24vb2xwY19kY29uX3hvXzEuYwppbmRleCBiMTU0YmU3Li5iNWQyMWY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvb2xwY19kY29uL29scGNfZGNvbl94b18xLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL29scGNfZGNvbi9vbHBjX2Rjb25feG9fMS5jCkBAIC04MCw3ICs4MCw3IEBACiAJbG9iICY9IH4oMSA8PCBEQ09OX0lSUSk7CiAJb3V0Yihsb2IsIDB4NGQwKTsKIAotCS8qIFJlZ2lzdGVyIHRoZSBpbnRlcnVwdCBoYW5kbGVyICovCisJLyogUmVnaXN0ZXIgdGhlIGludGVycnVwdCBoYW5kbGVyICovCiAJaWYgKHJlcXVlc3RfaXJxKERDT05fSVJRLCAmZGNvbl9pbnRlcnJ1cHQsIDAsICJEQ09OIiwgZGNvbikpIHsKIAkJcHJpbnRrKEtFUk5fRVJSICJvbHBjLWRjb246IGZhaWxlZCB0byByZXF1ZXN0IERDT04ncyBpcnFcbiIpOwogCQlnb3RvIGVycl9yZXFfaXJxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3BvaG1lbGZzL2NyeXB0by5jIGIvZHJpdmVycy9zdGFnaW5nL3BvaG1lbGZzL2NyeXB0by5jCmluZGV4IDY1NDA4NjQuLjVjY2EyNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9wb2htZWxmcy9jcnlwdG8uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcG9obWVsZnMvY3J5cHRvLmMKQEAgLTc0NSw3ICs3NDUsNyBAQAogCiAJLyoKIAkgKiBBdCB0aGlzIHBvaW50IE5FVEZTX0NBUEFCSUxJVElFUyByZXNwb25zZSBjb21tYW5kCi0JICogc2hvdWxkIHNldHVwIHN1cGVyYmxvY2sgaW4gYSB3YXksIHdoaWNoIGlzIGFjY2VwdGlibGUKKwkgKiBzaG91bGQgc2V0dXAgc3VwZXJibG9jayBpbiBhIHdheSwgd2hpY2ggaXMgYWNjZXB0YWJsZQogCSAqIGZvciBib3RoIGNsaWVudCBhbmQgc2VydmVyLCBzbyBpZiBzZXJ2ZXIgcmVmdXNlcyBjb25uZWN0aW9uLAogCSAqIGl0IHdpbGwgc2VuZCBlcnJvciBpbiB0cmFuc2FjdGlvbiByZXNwb25zZS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9xdWF0ZWNoX3VzYjIvcXVhdGVjaF91c2IyLmMgYi9kcml2ZXJzL3N0YWdpbmcvcXVhdGVjaF91c2IyL3F1YXRlY2hfdXNiMi5jCmluZGV4IGM0NWIwOWUuLmNhMDk4Y2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9xdWF0ZWNoX3VzYjIvcXVhdGVjaF91c2IyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3F1YXRlY2hfdXNiMi9xdWF0ZWNoX3VzYjIuYwpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgKiB2YWx1ZSBvZiB0aGUgbGluZSBzdGF0dXMgZmxhZ3MgZnJvbSB0aGUgcG9ydAogICogQHNoYWRvd01TUjogTGFzdCByZWNlaXZlZCBzdGF0ZSBvZiB0aGUgbW9kZW0gc3RhdHVzIHJlZ2lzdGVyLCBob2xkcwogICogdGhlIHZhbHVlIG9mIHRoZSBtb2RlbSBzdGF0dXMgcmVjZWl2ZWQgZnJvbSB0aGUgcG9ydAotICogQHJjdl9mbHVzaDogRmxhZyBpbmRpY2F0aW5nIHRoYXQgYSByZWNlaXZlIGZsdXNoIGhhcyBvY2N1cmVkIG9uCisgKiBAcmN2X2ZsdXNoOiBGbGFnIGluZGljYXRpbmcgdGhhdCBhIHJlY2VpdmUgZmx1c2ggaGFzIG9jY3VycmVkIG9uCiAgKiB0aGUgaGFyZHdhcmUuCiAgKiBAeG1pdF9mbHVzaDogRmxhZyBpbmRpY2F0aW5nIHRoYXQgYSB0cmFuc21pdCBmbHVzaCBoYXMgYmVlbiBwcm9jZXNzZWQgYnkKICAqIHRoZSBoYXJkd2FyZS4KQEAgLTE1Niw3ICsxNTYsNyBAQAogICogaW5jbHVkZXMgdGhlIHNpemUgKGV4Y2x1ZGluZyBoZWFkZXIpIG9mIFVSQnMgdGhhdCBoYXZlIGJlZW4gc3VibWl0dGVkIGJ1dAogICogaGF2ZSBub3QgeWV0IGJlZW4gc2VudCB0byB0byB0aGUgZGV2aWNlLCBhbmQgYnl0ZXMgdGhhdCBoYXZlIGJlZW4gc2VudCBvdXQKICAqIG9mIHRoZSBwb3J0IGJ1dCBub3QgeWV0IHJlcG9ydGVkIHNlbnQgYnkgdGhlICJ4bWl0X2VtcHR5IiBtZXNzYWdlcyAod2hpY2gKLSAqIGluZGljYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2VudCBlYWNoIHRpbWUgdGhleSBhcmUgcmVjaWV2ZWQsIGRlc3BpdGUgdGhlCisgKiBpbmRpY2F0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHNlbnQgZWFjaCB0aW1lIHRoZXkgYXJlIHJlY2VpdmVkLCBkZXNwaXRlIHRoZQogICogbWlzbGVhZGluZyBuYW1lKS4KICAqIC0gU3RhcnRzIGF0IHplcm8gd2hlbiBwb3J0IGlzIGluaXRpYWxpc2VkLgogICogLSBpcyBpbmNyZW1lbnRlZCBieSB0aGUgc2l6ZSBvZiB0aGUgZGF0YSB0byBiZSB3cml0dGVuIChubyBoZWFkZXJzKQpAQCAtNjQ5LDcgKzY0OSw3IEBACiAJLyogYWx0aG91Z2ggdGhlIFVTQiBzaWRlIGlzIG5vdyBlbXB0eSwgdGhlIFVBUlQgaXRzZWxmIG1heQogCSAqIHN0aWxsIGJlIHB1c2hpbmcgY2hhcmFjdGVycyBvdXQgb3ZlciB0aGUgbGluZSwgc28gd2UgaGF2ZSB0bwogCSAqIHdhaXQgdGVzdGluZyB0aGUgYWN0dWFsIGxpbmUgc3RhdHVzIHVudGlsIHRoZSBsaW5lcyBjaGFuZ2UKLQkgKiBpbmRpY2F0aW5nIHRoYXQgdGhlIGRhdGEgaXMgZG9uZSB0cmFuc2ZlcmluZy4gKi8KKwkgKiBpbmRpY2F0aW5nIHRoYXQgdGhlIGRhdGEgaXMgZG9uZSB0cmFuc2ZlcnJpbmcuICovCiAJLyogRklYTUU6IHNsb3cgdGhpcyBwb2xsaW5nIGRvd24gc28gaXQgZG9lc24ndCBydW4gdGhlIFVTQiBidXMgZmxhdCBvdXQKIAkgKiBpZiBpdCBhY3R1YWxseSBoYXMgdG8gc3BlbmQgYW55IHRpbWUgaW4gdGhpcyBsb29wICh3aGljaCBpdCBub3JtYWxseQogCSAqIGRvZXNuJ3QgYmVjYXVzZSB0aGUgYnVmZmVyIGlzIG5lYXJseSBlbXB0eSkgKi8KQEAgLTcyNiw3ICs3MjYsNyBAQAogCQlyZXR1cm4gMDsKIAl9IGVsc2UgaWYgKHBvcnRfZXh0cmEtPnR4X3BlbmRpbmdfYnl0ZXMgPj0gUVQyX0ZJRk9fREVQVEgpIHsKIAkJLyogYnVmZmVyIGlzIGZ1bGwgKD09KS4gPiBzaG91bGQgbm90IG9jY3VyLCBidXQgd291bGQgaW5kaWNhdGUKLQkJICogdGhhdCBhbiBvdmVyZmxvdyBoYWQgb2NjdXJlZCAqLworCQkgKiB0aGF0IGFuIG92ZXJmbG93IGhhZCBvY2N1cnJlZCAqLwogCQlkYmcoIiVzKCk6IHBvcnQgdHJhbnNtaXQgYnVmZmVyIGlzIGZ1bGwhIiwgX19mdW5jX18pOwogCQkvKiBzY2hlZHVsZV93b3JrKCZwb3J0LT53b3JrKTsgY29tbWVudGVkIGluIHZlbmRvciBkcml2ZXIgKi8KIAkJcmV0dXJuIDA7CkBAIC04MjMsNyArODIzLDcgQEAKIAkgKiByZWR1Y2UgdGhlIGZyZWUgc3BhY2UgY291bnQgYnkgdGhlIHNpemUgb2YgdGhlIGRpc3BhdGNoZWQgd3JpdGUuCiAJICogV2hlbiBhICJ0cmFuc21pdCBlbXB0eSIgbWVzc2FnZSBjb21lcyBiYWNrIHVwIHRoZSBVU0IgcmVhZCBzdHJlYW0sCiAJICogd2UgZGVjcmVtZW50IHRoZSBjb3VudCBieSB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcG9ydGVkIHNlbnQsIHRodXMKLQkgKiBrZWVwaW5nIHRyYWNrIG9mIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc2VudCBhbmQgcmVjaWV2ZWQgYnl0ZXMuCisJICoga2VlcGluZyB0cmFjayBvZiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHNlbnQgYW5kIHJlY2VpdmVkIGJ5dGVzLgogCSAqLwogCiAJcm9vbSA9IChRVDJfRklGT19ERVBUSCAtIHBvcnRfZXh0cmEtPnR4X3BlbmRpbmdfYnl0ZXMpOwpAQCAtMTc5NSw3ICsxNzk1LDcgQEAKIAl9CiB9CiAKLS8qKiBAYnJpZWYgUmV0cmVpdmUgdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgZnJvbSB0aGUgZGV2aWNlCisvKiogQGJyaWVmIFJldHJpZXZlIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIGZyb20gdGhlIGRldmljZQogICoKICAqIElzc3VlcyBhIEdFVF9SRUdJU1RFUiB2ZW5kb3Itc3BjaWZpYyByZXF1ZXN0IG92ZXIgdGhlIFVTQiBjb250cm9sCiAgKiBwaXBlIHRvIG9idGFpbiBhIHZhbHVlIGJhY2sgZnJvbSBhIHNwZWNpZmljIHJlZ2lzdGVyIG9uIGEgc3BlY2lmaWMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY2hpcC9ydG1wX3BoeS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmgKaW5kZXggOTg0NTRkZi4uYTUyMjIxZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jaGlwL3J0bXBfcGh5LmgKQEAgLTQ2Nyw3ICs0NjcsNyBAQAogCQkJREJHUFJJTlRfRVJSKCJCQlAgd3JpdGUgUiVkPTB4JXggZmFpbC4gQnVzeUNudD0gJWQuYlBDSWNsa09mZiA9ICVkLiBcbiIsIF9JLCBCYnBDc3Iud29yZCwgQnVzeUNudCwgKF9BKS0+YlBDSWNsa09mZik7CVwKIAkJfQkJCQkJCQkJCQkJCQkJCQkJXAogCX0gZWxzZSB7CQkJCQkJCVwKLQkJREJHUFJJTlRfRVJSKCIqKioqKiogQkJQX1dyaXRlX0xhdGNoIEJ1ZmZlciBleGNlZWRzIG1heCBib3VuZHJ5ICoqKioqKiBcbiIpOwlcCisJCURCR1BSSU5UX0VSUigiKioqKioqIEJCUF9Xcml0ZV9MYXRjaCBCdWZmZXIgZXhjZWVkcyBtYXggYm91bmRhcnkgKioqKioqIFxuIik7CVwKIAl9CQkJCQkJCQkJCQkJCQkJCQkJXAogfQogI2VuZGlmIC8qIFJUTVBfTUFDX1BDSSAvLyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vYmFfYWN0aW9uLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYwppbmRleCA2MmY2ZjZiLi4xMzNiYzFiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9iYV9hY3Rpb24uYwpAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIi4uL3J0X2NvbmZpZy5oIgogI2luY2x1ZGUgPGxpbnV4L2tlcm5lbC5oPgogCi0jZGVmaW5lIEJBX09SSV9JTklUX1NFUQkJKHBFbnRyeS0+VHhTZXFbVElEXSkJLyoxICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGFsIHNlcXVlbmNlIG51bWJlciBvZiBCQSBzZXNzaW9uICovCisjZGVmaW5lIEJBX09SSV9JTklUX1NFUQkJKHBFbnRyeS0+VHhTZXFbVElEXSkJLyoxICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5pdGlhbCBzZXF1ZW5jZSBudW1iZXIgb2YgQkEgc2Vzc2lvbiAqLwogCiAjZGVmaW5lIE9SSV9TRVNTSU9OX01BWF9SRVRSWQk4CiAjZGVmaW5lIE9SSV9CQV9TRVNTSU9OX1RJTUVPVVQJKDIwMDApCS8qIG1zICovCkBAIC0xNDg3LDcgKzE0ODcsNyBAQAogCiAJCS8qCiAJCSAqIGZsdXNoIGFsbCBwZW5kaW5nIHJlb3JkZXJpbmcgbXBkdXMKLQkJICogYW5kIHJlY2V2aW5nIG1wZHUgdG8gdXBwZXIgbGF5ZXIKKwkJICogYW5kIHJlY2VpdmluZyBtcGR1IHRvIHVwcGVyIGxheWVyCiAJCSAqIG1ha2UgdGNwL2lwIHRvIHRha2UgY2FyZSByZW9yZGVyaW5nIG1lY2hhbmlzbQogCQkgKi8KIAkJLypiYV9yZWZyZXNoX3Jlb3JkZXJpbmdfbXBkdXMocEFkLCBwQkFFbnRyeSk7ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fYWVzLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fYWVzLmMKaW5kZXggYTk5ODc5Yi4uZDcwZDIyOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2Flcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9hZXMuYwpAQCAtODU4LDcgKzg1OCw3IEBACiBzdGF0aWMgdWludDMyIEtUMlsyNTZdOwogc3RhdGljIHVpbnQzMiBLVDNbMjU2XTsKIAotLyogcGxhdGZvcm0taW5kZXBlbmRhbnQJMzItYml0IGludGVnZXIgbWFuaXB1bGF0aW9uCW1hY3JvcyAqLworLyogcGxhdGZvcm0taW5kZXBlbmRlbnQJMzItYml0IGludGVnZXIgbWFuaXB1bGF0aW9uCW1hY3JvcyAqLwogCiAjZGVmaW5lCUdFVF9VSU5UMzIobixiLGkpCQkJCQkJXAogewkJCQkJCQkJCQkJCVwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9jZmcuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9jZmcuYwppbmRleCAyNGY0MzkzLi43MjdmNzk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fY2ZnLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2NmZy5jCkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICAgICAgcEFkYXB0ZXIJUG9pbnRlciB0byBvdXIgYWRhcHRlcgogICAgICAgICBrZXlTdHJpbmcJV1BBIHByZS1zaGFyZWQga2V5IHN0cmluZwogICAgICAgICBwSGFzaFN0cglTdHJpbmcgdXNlZCBmb3IgcGFzc3dvcmQgaGFzaCBmdW5jdGlvbgotICAgICAgICBoYXNoU3RyTGVuCUxlbmdodCBvZiB0aGUgaGFzaCBzdHJpbmcKKyAgICAgICAgaGFzaFN0ckxlbglMZW5ndGggb2YgdGhlIGhhc2ggc3RyaW5nCiAgICAgICAgIHBQTUtCdWYJCU91dHB1dCBidWZmZXIgb2YgV1BBUFNLIGtleQogCiAgICAgUmV0dXJuOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhLmMKaW5kZXggZjZjMTkzYy4uMzM3OTllMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YS5jCkBAIC0zMzcsNyArMzM3LDcgQEAKIAogCS8qICovCiAJLyogSW4gV01NLVVBUFNELCBtbG1lIGZyYW1lIHNob3VsZCBiZSBzZXQgcHNtIGFzIHBvd2VyIHNhdmluZyBidXQgcHJvYmUgcmVxdWVzdCBmcmFtZSAqLwotCS8qIERhdGEtTnVsbCBwYWNrZXRzIGFsc2UgcGFzcyB0aHJvdWdoIE1NUmVxdWVzdCBpbiBSVDI4NjAsIGhvd2V2ZXIsIHdlIGhvcGUgY29udHJvbCB0aGUgcHNtIGJpdCB0byBwYXNzIEFQU0QgKi8KKwkvKiBEYXRhLU51bGwgcGFja2V0cyBhbHNvIHBhc3MgdGhyb3VnaCBNTVJlcXVlc3QgaW4gUlQyODYwLCBob3dldmVyLCB3ZSBob3BlIGNvbnRyb2wgdGhlIHBzbSBiaXQgdG8gcGFzcyBBUFNEICovCiAvKiAgICAgIGlmICgocEhlYWRlcl84MDJfMTEtPkZDLlR5cGUgIT0gQlRZUEVfREFUQSkgJiYgKHBIZWFkZXJfODAyXzExLT5GQy5UeXBlICE9IEJUWVBFX0NOVEwpKSAqLwogCXsKIAkJaWYgKChwSGVhZGVyXzgwMl8xMS0+RkMuU3ViVHlwZSA9PSBTVUJUWVBFX0FDVElPTikgfHwKQEAgLTE5MzMsNyArMTkzMyw3IEBACiAKIAlpZiAoVHlwZUxlbiA8PSAxNTAwKSB7CS8qIDgwMi4zLCA4MDIuMyBMTEMgKi8KIAkJLyoKLQkJICAgRGVzdE1BQyg2KSArIFNyY01BQyg2KSArIExlbmdodCgyKSArCisJCSAgIERlc3RNQUMoNikgKyBTcmNNQUMoNikgKyBMZW5ndGgoMikgKwogCQkgICBEU0FQKDEpICsgU1NBUCgxKSArIENvbnRyb2woMSkgKwogCQkgICBpZiB0aGUgRFNBUCA9IDB4QUEsIFNTQVA9MHhBQSwgQ29udG9ybCA9IDB4MDMsIGl0IGhhcyBhIDUtYnl0ZXMgU05BUCBoZWFkZXIuCiAJCSAgID0+ICsgU05BUCAoNSwgT3JpZ2luYXRpb25JRCgzKSArIGV0aGVyVHlwZSgyKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfcGNpLmMKaW5kZXggN2FmNTlmZi4uYmVmMGJiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfcGNpLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX2RhdGFfcGNpLmMKQEAgLTQzOCwxMyArNDM4LDEzIEBACiAJLyogQWRkIFJ4IHNpemUgdG8gY2hhbm5lbCBsb2FkIGNvdW50ZXIsIHdlIHNob3VsZCBpZ25vcmUgZXJyb3IgY291bnRzICovCiAJcEFkLT5TdGFDZmcuQ0xCdXN5Qnl0ZXMgKz0gKHBSeEQtPlNETDAgKyAxNCk7CiAKLQkvKiBEcm9wIFRvRHMgcHJvbWlzY291cyBmcmFtZSwgaXQgaXMgb3BlbmVkIGR1ZSB0byBDQ1ggMiBjaGFubmVsIGxvYWQgc3RhdGlzdGljcyAqLworCS8qIERyb3AgVG9EcyBwcm9taXNjdW91cyBmcmFtZSwgaXQgaXMgb3BlbmVkIGR1ZSB0byBDQ1ggMiBjaGFubmVsIGxvYWQgc3RhdGlzdGljcyAqLwogCWlmIChwSGVhZGVyICE9IE5VTEwpIHsKIAkJaWYgKHBIZWFkZXItPkZDLlRvRHMpIHsKIAkJCXJldHVybiAoTkRJU19TVEFUVVNfRkFJTFVSRSk7CiAJCX0KIAl9Ci0JLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FudCdzIGRyb3AgaGVyZSBiZWNhdXNlIHdlIHdpbGwgZHJvcCBiZWFjb24gaW4gdGhpcyBjYXNlICovCisJLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FuJ3QncyBkcm9wIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIGRyb3AgYmVhY29uIGluIHRoaXMgY2FzZSAqLwogCS8qIEkgYW0ga2luZCBvZiBkb3VidGluZyB0aGUgVTJNIGJpdCBvcGVyYXRpb24gKi8KIAkvKiBpZiAocFJ4RC0+VTJNID09IDApICovCiAJLyogICAgICByZXR1cm4oTkRJU19TVEFUVVNfRkFJTFVSRSk7ICovCkBAIC05MzksNyArOTM5LDcgQEAKIAkvKiAqLwogCS8qICovCiAJLyogSW4gV01NLVVBUFNELCBtbG1lIGZyYW1lIHNob3VsZCBiZSBzZXQgcHNtIGFzIHBvd2VyIHNhdmluZyBidXQgcHJvYmUgcmVxdWVzdCBmcmFtZSAqLwotCS8qIERhdGEtTnVsbCBwYWNrZXRzIGFsc2UgcGFzcyB0aHJvdWdoIE1NUmVxdWVzdCBpbiBSVDI4NjAsIGhvd2V2ZXIsIHdlIGhvcGUgY29udHJvbCB0aGUgcHNtIGJpdCB0byBwYXNzIEFQU0QgKi8KKwkvKiBEYXRhLU51bGwgcGFja2V0cyBhbHNvIHBhc3MgdGhyb3VnaCBNTVJlcXVlc3QgaW4gUlQyODYwLCBob3dldmVyLCB3ZSBob3BlIGNvbnRyb2wgdGhlIHBzbSBiaXQgdG8gcGFzcyBBUFNEICovCiAJaWYgKHBIZWFkZXJfODAyXzExLT5GQy5UeXBlICE9IEJUWVBFX0RBVEEpIHsKIAkJaWYgKChwSGVhZGVyXzgwMl8xMS0+RkMuU3ViVHlwZSA9PSBTVUJUWVBFX1BST0JFX1JFUSkKIAkJICAgIHx8ICEocEFkLT5Db21tb25DZmcuYkFQU0RDYXBhYmxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fZGF0YV91c2IuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3VzYi5jCmluZGV4IDdjNTZjMmYuLjU2Mzc4NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3VzYi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9kYXRhX3VzYi5jCkBAIC03MDIsNyArNzAyLDcgQEAKIAkqcFJ4UGVuZGluZwkJCXBlbmRpbmcgcmVjZWl2ZWQgcGFja2V0IGZsYWcKIAogUmV0dXJuIFZhbHVlOgotICAgIHRoZSByZWNpZXZlZCBwYWNrZXQKKyAgICB0aGUgcmVjZWl2ZWQgcGFja2V0CiAKIE5vdGU6CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTg1MCw3ICs4NTAsNyBAQAogCS8qIEFkZCBSeCBzaXplIHRvIGNoYW5uZWwgbG9hZCBjb3VudGVyLCB3ZSBzaG91bGQgaWdub3JlIGVycm9yIGNvdW50cyAqLwogCXBBZC0+U3RhQ2ZnLkNMQnVzeUJ5dGVzICs9IChwUnhXSS0+TVBEVXRvdGFsQnl0ZUNvdW50ICsgMTQpOwogCi0JLyogRHJvcCBUb0RzIHByb21pc2NvdXMgZnJhbWUsIGl0IGlzIG9wZW5lZCBkdWUgdG8gQ0NYIDIgY2hhbm5lbCBsb2FkIHN0YXRpc3RpY3MgKi8KKwkvKiBEcm9wIFRvRHMgcHJvbWlzY3VvdXMgZnJhbWUsIGl0IGlzIG9wZW5lZCBkdWUgdG8gQ0NYIDIgY2hhbm5lbCBsb2FkIHN0YXRpc3RpY3MgKi8KIAlpZiAocEhlYWRlci0+RkMuVG9EcykgewogCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsICgiRXJyO0ZDLlRvRHNcbiIpKTsKIAkJcmV0dXJuIE5ESVNfU1RBVFVTX0ZBSUxVUkU7CkBAIC04NjAsNyArODYwLDcgQEAKIAkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLCAoInJlY2VpdmVkIHBhY2tldCB0b28gbG9uZ1xuIikpOwogCQlyZXR1cm4gTkRJU19TVEFUVVNfRkFJTFVSRTsKIAl9Ci0JLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FudCdzIGRyb3AgaGVyZSBiZWNhdXNlIHdlIHdpbGwgZHJvcCBiZWFjb24gaW4gdGhpcyBjYXNlICovCisJLyogRHJvcCBub3QgVTJNIGZyYW1lcywgY2FuJ3QncyBkcm9wIGhlcmUgYmVjYXVzZSB3ZSB3aWxsIGRyb3AgYmVhY29uIGluIHRoaXMgY2FzZSAqLwogCS8qIEkgYW0ga2luZCBvZiBkb3VidGluZyB0aGUgVTJNIGJpdCBvcGVyYXRpb24gKi8KIAkvKiBpZiAocFJ4RC0+VTJNID09IDApICovCiAJLyogICAgICByZXR1cm4oTkRJU19TVEFUVVNfRkFJTFVSRSk7ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fbWFjX3BjaS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX21hY19wY2kuYwppbmRleCAyMWVlZDI1Li5kMDZmMGE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fbWFjX3BjaS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9tYWNfcGNpLmMKQEAgLTE0NDYsNyArMTQ0Niw3IEBACiAJICAgcEFkLT5DaGVja0RtYUJ1c3lDb3VudCA9IDA7CiAJICAgfQogCSAqLwotLypLSCBEZWJ1ZzpNeSBvcmlnaW5hbCBjb2RlcyBoYXZlIHRoZSBmb2xsd29pbmcgY29kZXMsIGJ1dCBjdXJyZWNudCBjb2RlcyBkbyBub3QgaGF2ZSBpdC4gKi8KKy8qS0ggRGVidWc6TXkgb3JpZ2luYWwgY29kZXMgaGF2ZSB0aGUgZm9sbG93aW5nIGNvZGVzLCBidXQgY3VycmVjbnQgY29kZXMgZG8gbm90IGhhdmUgaXQuICovCiAvKiBEaXNhYmxlIGZvciBzdGFiaWxpdHkuIElmIFBDSUUgTGluayBDb250cm9sIGlzIG1vZGlmaWVkIGZvciBhZHZhbmNlIHBvd2VyIHNhdmUsIHJlLWNvdmVyeSB0aGlzIGNvZGUgc2VnbWVudC4gKi8KIAlSVE1QX0lPX1dSSVRFMzIocEFkLCBQQkZfU1lTX0NUUkwsIDB4MTI4MCk7CiAvKk9QU1RBVFVTX1NFVF9GTEFHKHBBZCwgZk9QX1NUQVRVU19DTEtTRUxFQ1RfNDBNSFopOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3Nhbml0eS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3Nhbml0eS5jCmluZGV4IDZiMDAzYzkuLjNiZmI0YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zYW5pdHkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc2FuaXR5LmMKQEAgLTY3LDcgKzY3LDcgQEAKIAogCWlmICgoTXNnTGVuICE9IHNpemVvZihzdHJ1Y3QgcnRfbWxtZV9hZGRiYV9yZXEpKSkgewogCQlEQkdQUklOVChSVF9ERUJVR19UUkFDRSwKLQkJCSAoIk1sbWVBZGRCQVJlcVNhbml0eSBmYWlsIC0gbWVzc2FnZSBsZW5naHQgbm90IGNvcnJlY3QuXG4iKSk7CisJCQkgKCJNbG1lQWRkQkFSZXFTYW5pdHkgZmFpbCAtIG1lc3NhZ2UgbGVuZ3RoIG5vdCBjb3JyZWN0LlxuIikpOwogCQlyZXR1cm4gRkFMU0U7CiAJfQogCkBAIC0xMDQsNyArMTA0LDcgQEAKIAogCWlmICgoTXNnTGVuICE9IHNpemVvZihzdHJ1Y3QgcnRfbWxtZV9kZWxiYV9yZXEpKSkgewogCQlEQkdQUklOVChSVF9ERUJVR19FUlJPUiwKLQkJCSAoIk1sbWVEZWxCQVJlcVNhbml0eSBmYWlsIC0gbWVzc2FnZSBsZW5naHQgbm90IGNvcnJlY3QuXG4iKSk7CisJCQkgKCJNbG1lRGVsQkFSZXFTYW5pdHkgZmFpbCAtIG1lc3NhZ2UgbGVuZ3RoIG5vdCBjb3JyZWN0LlxuIikpOwogCQlyZXR1cm4gRkFMU0U7CiAJfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc3luYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3N5bmMuYwppbmRleCBmODQxOTRkLi5hZWZlMWI3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fc3luYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV9zeW5jLmMKQEAgLTY5NCw3ICs2OTQsNyBAQAogCQkJTWluaXBvcnRNTVJlcXVlc3QocEFkLCAwLCBwT3V0QnVmZmVyLCBGcmFtZUxlbik7CiAJCQlNbG1lRnJlZU1lbW9yeShwQWQsIHBPdXRCdWZmZXIpOwogCQl9Ci0JCS8qIEZvciBTQ0FOX0NJU0NPX1BBU1NJVkUsIGRvIG5vdGhpbmcgYW5kIHNpbGVudGx5IHdhaXQgZm9yIGJlYWNvbiBvciBvdGhlciBwcm9iZSByZXBvbnNlICovCisJCS8qIEZvciBTQ0FOX0NJU0NPX1BBU1NJVkUsIGRvIG5vdGhpbmcgYW5kIHNpbGVudGx5IHdhaXQgZm9yIGJlYWNvbiBvciBvdGhlciBwcm9iZSByZXNwb25zZSAqLwogCiAJCXBBZC0+TWxtZS5TeW5jTWFjaGluZS5DdXJyU3RhdGUgPSBTQ0FOX0xJU1RFTjsKIAl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fd3BhLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9jbW1fd3BhLmMKaW5kZXggMDA0MGY0NS4uNjE2ZWJlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vY21tX3dwYS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL2NtbV93cGEuYwpAQCAtMTIyMiw3ICsxMjIyLDcgQEAKIAogCU5vdGU6CiAJCUFsbCB0aGVzZSBjb25zdGFudHMgYXJlIGRlZmluZWQgaW4gd3BhLmgKLQkJRm9yIHN1cHBsaWNhbnQsIHRoZXJlIGlzIG9ubHkgRUFQT0wgS2V5IG1lc3NhZ2UgYXZhbGlhYmxlCisJCUZvciBzdXBwbGljYW50LCB0aGVyZSBpcyBvbmx5IEVBUE9MIEtleSBtZXNzYWdlIGF2YWlsYWJsZQogCiAJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqLwpAQCAtMTI2Nyw3ICsxMjY3LDcgQEAKIAkJaW50CQlwcmVmaXhfbGVuCS0JdGhlIGxlbmd0aCBvZiB0aGUgbGFiZWwKIAkJdTgJKmRhdGEJCS0JYSBzcGVjaWZpYyBkYXRhIHdpdGggdmFyaWFibGUgbGVuZ3RoCiAJCWludAkJZGF0YV9sZW4JLQl0aGUgbGVuZ3RoIG9mIGEgc3BlY2lmaWMgZGF0YQotCQlpbnQJCWxlbgkJCS0JdGhlIG91dHB1dCBsZW5naHQKKwkJaW50CQlsZW4JCQktCXRoZSBvdXRwdXQgbGVuZ3RoCiAKIAlSZXR1cm4gVmFsdWU6CiAJCXU4CSpvdXRwdXQJCS0JdGhlIGNhbGN1bGF0ZWQgcmVzdWx0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9tbG1lLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9tbG1lLmMKaW5kZXggZDljM2ZkNS4uZTQ4ZWFjMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vbWxtZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL21sbWUuYwpAQCAtNjMyLDcgKzYzMiw3IEBACiAJCQlwQ2hpcE9wcy0+QXNpY0hhbHRBY3Rpb24ocEFkKTsKIAl9CiAKLQlSVE1QdXNlY0RlbGF5KDUwMDApOwkvKiAgNSBtc2VjIHRvIGd1cmFudGVlIEFudCBEaXZlcnNpdHkgdGltZXIgY2FuY2VsZWQgKi8KKwlSVE1QdXNlY0RlbGF5KDUwMDApOwkvKiAgNSBtc2VjIHRvIGd1YXJhbnRlZSBBbnQgRGl2ZXJzaXR5IHRpbWVyIGNhbmNlbGVkICovCiAKIAlNbG1lUXVldWVEZXN0cm95KCZwQWQtPk1sbWUuUXVldWUpOwogCU5kaXNGcmVlU3BpbkxvY2soJnBBZC0+TWxtZS5UYXNrTG9jayk7CkBAIC0xMTA3LDE0ICsxMTA3LDE0IEBACiAJCQkJCSpwSW5pdFR4UmF0ZUlkeCA9CiAJCQkJCSAgICBSYXRlU3dpdGNoVGFibGUxMU4xU1sxXTsKIAkJCQkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLAotCQkJCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDFTIEFQIFxuIikpOworCQkJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlLGRlZmF1bHQgdXNlIDExTiAxUyBBUCBcbiIpKTsKIAkJCQl9IGVsc2UgewogCQkJCQkqcHBUYWJsZSA9IFJhdGVTd2l0Y2hUYWJsZTExTjJTOwogCQkJCQkqcFRhYmxlU2l6ZSA9IFJhdGVTd2l0Y2hUYWJsZTExTjJTWzBdOwogCQkJCQkqcEluaXRUeFJhdGVJZHggPQogCQkJCQkgICAgUmF0ZVN3aXRjaFRhYmxlMTFOMlNbMV07CiAJCQkJCURCR1BSSU5UX1JBVyhSVF9ERUJVR19FUlJPUiwKLQkJCQkJCSAgICAgKCJEUlM6IHVua293biBtb2RlLGRlZmF1bHQgdXNlIDExTiAyUyBBUCBcbiIpKTsKKwkJCQkJCSAgICAgKCJEUlM6IHVua25vd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMlMgQVAgXG4iKSk7CiAJCQkJfQogCQkJfSBlbHNlIHsKIAkJCQlpZiAocEFkLT5Db21tb25DZmcuVHhTdHJlYW0gPT0gMSkgewpAQCAtMTEyMyw3ICsxMTIzLDcgQEAKIAkJCQkJKnBJbml0VHhSYXRlSWR4ID0KIAkJCQkJICAgIFJhdGVTd2l0Y2hUYWJsZTExTjFTWzFdOwogCQkJCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsCi0JCQkJCQkgICAgICgiRFJTOiB1bmtvd24gbW9kZSxkZWZhdWx0IHVzZSAxMU4gMVMgQVAgXG4iKSk7CisJCQkJCQkgICAgICgiRFJTOiB1bmtub3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDFTIEFQIFxuIikpOwogCQkJCX0gZWxzZSB7CiAJCQkJCSpwcFRhYmxlID0gUmF0ZVN3aXRjaFRhYmxlMTFOMlNGb3JBQmFuZDsKIAkJCQkJKnBUYWJsZVNpemUgPQpAQCAtMTEzMSwxMSArMTEzMSwxMSBAQAogCQkJCQkqcEluaXRUeFJhdGVJZHggPQogCQkJCQkgICAgUmF0ZVN3aXRjaFRhYmxlMTFOMlNGb3JBQmFuZFsxXTsKIAkJCQkJREJHUFJJTlRfUkFXKFJUX0RFQlVHX0VSUk9SLAotCQkJCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUsZGVmYXVsdCB1c2UgMTFOIDJTIEFQIFxuIikpOworCQkJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlLGRlZmF1bHQgdXNlIDExTiAyUyBBUCBcbiIpKTsKIAkJCQl9CiAJCQl9CiAJCQlEQkdQUklOVF9SQVcoUlRfREVCVUdfRVJST1IsCi0JCQkJICAgICAoIkRSUzogdW5rb3duIG1vZGUgKFN1cFJhdGVMZW49JWQsIEV4dFJhdGVMZW49JWQsIE1DU1NldFswXT0weCV4LCBNQ1NTZXRbMV09MHgleClcbiIsCisJCQkJICAgICAoIkRSUzogdW5rbm93biBtb2RlIChTdXBSYXRlTGVuPSVkLCBFeHRSYXRlTGVuPSVkLCBNQ1NTZXRbMF09MHgleCwgTUNTU2V0WzFdPTB4JXgpXG4iLAogCQkJCSAgICAgIHBBZC0+U3RhQWN0aXZlLlN1cFJhdGVMZW4sCiAJCQkJICAgICAgcEFkLT5TdGFBY3RpdmUuRXh0UmF0ZUxlbiwKIAkJCQkgICAgICBwQWQtPlN0YUFjdGl2ZS5TdXBwb3J0ZWRQaHlJbmZvLk1DU1NldFswXSwKQEAgLTEzNjgsNyArMTM2OCw3IEBACiAJCQkJCWlmICgocEFkLT5TdGFDZmcuTGFzdFNjYW5UaW1lICsKIAkJCQkJICAgICAxMCAqIE9TX0haKSA8IHBBZC0+TWxtZS5Ob3czMikgewogCQkJCQkJREJHUFJJTlQoUlRfREVCVUdfVFJBQ0UsCi0JCQkJCQkJICgiTU1DSEsgLSBSb2FtaW5nLCBObyBlbGlnYWJsZSBlbnRyeSwgdHJ5IG5ldyBzY2FuIVxuIikpOworCQkJCQkJCSAoIk1NQ0hLIC0gUm9hbWluZywgTm8gZWxpZ2libGUgZW50cnksIHRyeSBuZXcgc2NhbiFcbiIpKTsKIAkJCQkJCXBBZC0+U3RhQ2ZnLlNjYW5DbnQgPSAyOwogCQkJCQkJcEFkLT5TdGFDZmcuTGFzdFNjYW5UaW1lID0KIAkJCQkJCSAgICBwQWQtPk1sbWUuTm93MzI7CkBAIC0yODI4LDcgKzI4MjgsNyBAQAogCiAvKiBJUlFMID0gUEFTU0lWRV9MRVZFTCAqLwogLyogSVJRTCA9IERJU1BBVENIX0xFVkVMICovCi0vKiBiTGlua1VwIGlzIHRvIGlkZW50aWZ5IHRoZSBpbml0YWwgbGluayBzcGVlZC4gKi8KKy8qIGJMaW5rVXAgaXMgdG8gaWRlbnRpZnkgdGhlIGluaXRpYWwgbGluayBzcGVlZC4gKi8KIC8qIFRSVUUgaW5kaWNhdGVzIHRoZSByYXRlIHVwZGF0ZSBhdCBsaW5rdXAsIHdlIHNob3VsZCBub3QgdHJ5IHRvIHNldCB0aGUgcmF0ZSBhdCA1NE1icHMuICovCiB2b2lkIE1sbWVVcGRhdGVUeFJhdGVzKHN0cnVjdCBydF9ydG1wX2FkYXB0ZXIgKnBBZCwgSU4gQk9PTEVBTiBiTGlua1VwLCB1OCBhcGlkeCkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3J0bXBfaW5pdC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vcnRtcF9pbml0LmMKaW5kZXggZDM1OWExNC4uNWZhMTkzZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vcnRtcF9pbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vcnRtcF9pbml0LmMKQEAgLTIwMzcsNyArMjAzNyw3IEBACiAKIAkJCXBFbnRyeS0+RklGT0NvdW50ID0gMDsKIAkJCXBFbnRyeS0+T25lU2VjVHhOb1JldHJ5T2tDb3VudCsrOwotCQkJLyogdXBkYXRlIE5vRGF0YUlkbGVDb3VudCB3aGVuIHN1Y2Vzc2Z1bCBzZW5kIHBhY2tldCB0byBTVEEuICovCisJCQkvKiB1cGRhdGUgTm9EYXRhSWRsZUNvdW50IHdoZW4gc3VjY2Vzc2Z1bCBzZW5kIHBhY2tldCB0byBTVEEuICovCiAJCQlwRW50cnktPk5vRGF0YUlkbGVDb3VudCA9IDA7CiAJCQlwRW50cnktPkNvbnRpbnVlVHhGYWlsQ250ID0gMDsKIAkJfQpAQCAtMjUxNiw3ICsyNTE2LDcgQEAKIAkvKnBBZC0+VHVybkFnZ3JCdWxrSW5Db3VudCA9IDA7ICovCiAJcEFkLT5iVXNiVHhCdWxrQWdncmUgPSAwOwogCi0JLyogaW5pdCBhcyB1bnNlZCB2YWx1ZSB0byBlbnN1cmUgZHJpdmVyIHdpbGwgc2V0IHRvIE1DVSBvbmNlLiAqLworCS8qIGluaXQgYXMgdW51c2VkIHZhbHVlIHRvIGVuc3VyZSBkcml2ZXIgd2lsbCBzZXQgdG8gTUNVIG9uY2UuICovCiAJcEFkLT5MZWRJbmRpY2F0b3JTdHJlbmd0aCA9IDB4RkY7CiAKIAlwQWQtPkNvbW1vbkNmZy5NYXhQa3RPbmVUeEJ1bGsgPSAyOwpAQCAtMzA3NiwxMSArMzA3NiwxMSBAQAogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAJUm91dGluZSBEZXNjcmlwdGlvbjoKLQkJU2V0IExFRCBTaWduYWwgU3RyZWd0aAorCQlTZXQgTEVEIFNpZ25hbCBTdHJlbmd0aAogCiAJQXJndW1lbnRzOgogCQlwQWQJCQkJCQlQb2ludGVyIHRvIG91ciBhZGFwdGVyCi0JCURibQkJCQkJCVNpZ25hbCBTdHJlZ3RoCisJCURibQkJCQkJCVNpZ25hbCBTdHJlbmd0aAogCiAJUmV0dXJuIFZhbHVlOgogCQlOb25lCkBAIC0zMDkwLDcgKzMwOTAsNyBAQAogCU5vdGU6CiAJCUNhbiBiZSBydW4gb24gYW55IElSUUwgbGV2ZWwuCiAKLQkJQWNjb3JkaW5nIHRvIE1pY3Jvc29mdCBaZXJvIENvbmZpZyBXaXJlbGVzcyBTaWduYWwgU3RyZWd0aCBkZWZpbml0aW9uIGFzIGJlbG93cy4KKwkJQWNjb3JkaW5nIHRvIE1pY3Jvc29mdCBaZXJvIENvbmZpZyBXaXJlbGVzcyBTaWduYWwgU3RyZW5ndGggZGVmaW5pdGlvbiBhcyBiZWxvd3MuCiAJCTw9IC05MCAgTm8gU2lnbmFsCiAJCTw9IC04MSAgVmVyeSBMb3cKIAkJPD0gLTcxICBMb3cKQEAgLTMxMTgsNyArMzExOCw3IEBACiAJCQluTGVkID0gMzE7CiAKIAkJLyogKi8KLQkJLyogVXBkYXRlIFNpZ25hbCBTdHJlZ3RoIHRvIGZpcm13YXJlIGlmIGNoYW5nZWQuICovCisJCS8qIFVwZGF0ZSBTaWduYWwgU3RyZW5ndGggdG8gZmlybXdhcmUgaWYgY2hhbmdlZC4gKi8KIAkJLyogKi8KIAkJaWYgKHBBZC0+TGVkSW5kaWNhdG9yU3RyZW5ndGggIT0gbkxlZCkgewogCQkJQXNpY1NlbmRDb21tYW5kVG9NY3UocEFkLCAweDUxLCAweGZmLCBuTGVkLApAQCAtMzE2Niw3ICszMTY2LDcgQEAKIAkJaWYgKHBBZC0+Q29tbW9uQ2ZnLlBTUFhsaW5rKQogCQkJcnhfZmlsdGVyX2ZsYWcgPSBQU1BYTElOSzsKIAkJZWxzZQotCQkJcnhfZmlsdGVyX2ZsYWcgPSBTVEFOT1JNQUw7CS8qIFN0YWlvbiBub3QgZHJvcCBjb250cm9sIGZyYW1lIHdpbGwgZmFpbCBXaUZpIENlcnRpZmljYXRpb24uICovCisJCQlyeF9maWx0ZXJfZmxhZyA9IFNUQU5PUk1BTDsJLyogU3RhdGlvbiBub3QgZHJvcCBjb250cm9sIGZyYW1lIHdpbGwgZmFpbCBXaUZpIENlcnRpZmljYXRpb24uICovCiAJCVJUTVBfSU9fV1JJVEUzMihwQWQsIFJYX0ZJTFRSX0NGRywgcnhfZmlsdGVyX2ZsYWcpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vc3BlY3RydW0uYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvY29tbW9uL3NwZWN0cnVtLmMKaW5kZXggYzBkMmY0Mi4uY2ViNjIyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9jb21tb24vc3BlY3RydW0uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL2NvbW1vbi9zcGVjdHJ1bS5jCkBAIC0xMDU4LDggKzEwNTgsOCBAQAogCQkzLiBNZWFzdXJlIFRva2VuLgogCQk0LiBNZWFzdXJlIFJlcXVlc3QgTW9kZS4KIAkJNS4gTWVhc3VyZSBSZXF1ZXN0IFR5cGUuCi0JCTYuIExlbmd0aCBvZiBSZXBvcnQgSW5mb21hdGlvbgotCQk3LiBQb2ludGVyIG9mIFJlcG9ydCBJbmZvbWF0aW9uIEJ1ZmZlci4KKwkJNi4gTGVuZ3RoIG9mIFJlcG9ydCBJbmZvcm1hdGlvbgorCQk3LiBQb2ludGVyIG9mIFJlcG9ydCBJbmZvcm1hdGlvbiBCdWZmZXIuCiAKIAlSZXR1cm4JOiBOb25lLgogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNDAwLDcgKzE0MDAsNyBAQAogCVBhcmFtZXRyczoKIAkJMS4gTUxNRSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHJlY2VpdmVkIGZyYW1lCiAJCTIuIG1lc3NhZ2UgbGVuZ3RoLgotCQkzLiBDaGFubmVsIHN3aXRjaCBhbm5vdW5jZW1lbnQgaW5mb21hdGlvbiBidWZmZXIuCisJCTMuIENoYW5uZWwgc3dpdGNoIGFubm91bmNlbWVudCBpbmZvcm1hdGlvbiBidWZmZXIuCiAKIAlSZXR1cm4JOiBOb25lLgogCT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNDY1LDcgKzE0NjUsNyBAQAogCVBhcmFtZXRyczoKIAkJMS4gTUxNRSBtZXNzYWdlIGNvbnRhaW5pbmcgdGhlIHJlY2VpdmVkIGZyYW1lCiAJCTIuIG1lc3NhZ2UgbGVuZ3RoLgotCQkzLiBNZWFzdXJlbWVudCByZXF1ZXN0IGluZm9tYXRpb24gYnVmZmVyLgorCQkzLiBNZWFzdXJlbWVudCByZXF1ZXN0IGluZm9ybWF0aW9uIGJ1ZmZlci4KIAogCVJldHVybgk6IE5vbmUuCiAJPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTE1MzgsOCArMTUzOCw4IEBACiAJUGFyYW1ldHJzOgogCQkxLiBNTE1FIG1lc3NhZ2UgY29udGFpbmluZyB0aGUgcmVjZWl2ZWQgZnJhbWUKIAkJMi4gbWVzc2FnZSBsZW5ndGguCi0JCTMuIE1lYXN1cmVtZW50IHJlcG9ydCBpbmZvbWF0aW9uIGJ1ZmZlci4KLQkJNC4gYmFzaWMgcmVwb3J0IGluZm9tYXRpb24gYnVmZmVyLgorCQkzLiBNZWFzdXJlbWVudCByZXBvcnQgaW5mb3JtYXRpb24gYnVmZmVyLgorCQk0LiBiYXNpYyByZXBvcnQgaW5mb3JtYXRpb24gYnVmZmVyLgogCiAJUmV0dXJuCTogTm9uZS4KIAk9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9tbG1lLmggYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL21sbWUuaAppbmRleCBjZDFlZTNkLi5hMjg1ODUxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL21sbWUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL21sbWUuaApAQCAtMzc0LDcgKzM3NCw3IEBACiBzdHJ1Y3QgcnRfaHRfcGh5X2luZm8gewogCUJPT0xFQU4gYkh0RW5hYmxlOwkvKiBJZiB3ZSBzaG91bGQgdXNlIGh0IHJhdGUuICovCiAJQk9PTEVBTiBiUHJlTkh0OwkvKiBJZiB3ZSBzaG91bGQgdXNlIGh0IHJhdGUuICovCi0JLypTdWJzdHJhY3QgZnJvbSBIVCBDYXBhYmlsaXR5IElFICovCisJLypTdWJ0cmFjdCBmcm9tIEhUIENhcGFiaWxpdHkgSUUgKi8KIAl1OCBNQ1NTZXRbMTZdOwogfTsKIApAQCAtMzkyLDcgKzM5Miw3IEBACiAJdTE2IEFtc2R1U2l6ZToxOwkvKiBNYXggcmVjZWl2aW5nIEEtTVNEVSBzaXplICovCiAJdTE2IHJzdjo1OwogCi0JLypTdWJzdHJhY3QgZnJvbSBBZGRpb250IEhUIElORk8gSUUgKi8KKwkvKlN1YnRyYWN0IGZyb20gQWRkaW9udCBIVCBJTkZPIElFICovCiAJdTggTWF4UkFtcGR1RmFjdG9yOjI7CiAJdTggTXBkdURlbnNpdHk6MzsKIAl1OCBFeHRDaGFuT2Zmc2V0OjI7CS8qIFBsZWFzZSBub3RlIHRoZSBkaWZmZXJlbmNlIHdpdGggZm9sbG93aW5nICAgICB1OCAgIE5ld0V4dENoYW5uZWxPZmZzZXQ7IGZyb20gODAyLjExbiAqLwpAQCAtNDEwLDcgKzQxMCw3IEBACiAJdTggQlNTQ29leGlzdDIwNDA7CiB9OwogCi0vKiAgIGZpZWxkIGluIEFkZHRpb25hbCBIVCBJbmZvcm1hdGlvbiBJRSAuICovCisvKiAgIGZpZWxkIGluIEFkZGl0aW9uYWwgSFQgSW5mb3JtYXRpb24gSUUgLiAqLwogc3RydWN0IFBBQ0tFRCBydF9hZGRfaHRpbmZvIHsKIAl1OCBFeHRDaGFuT2Zmc2V0OjI7CiAJdTggUmVjb21XaWR0aDoxOwpAQCAtODU3LDcgKzg1Nyw3IEBACiB9OwogCiAvKiBNTE1FIEFVWCBkYXRhIHN0cnVjdHVyZSB0aGF0IGhvbGRzIHRlbXBvcmFybGl5IHNldHRpbmdzIGR1cmluZyBhIGNvbm5lY3Rpb24gYXR0ZW1wdC4gKi8KLS8qIE9uY2UgdGhpcyBhdHRlbXAgc3VjY2VlZHMsIGFsbCBzZXR0aW5ncyB3aWxsIGJlIGNvcHkgdG8gcEFkLT5TdGFBY3RpdmUuICovCisvKiBPbmNlIHRoaXMgYXR0ZW1wdCBzdWNjZWVkcywgYWxsIHNldHRpbmdzIHdpbGwgYmUgY29weSB0byBwQWQtPlN0YUFjdGl2ZS4gKi8KIC8qIEEgY29ubmVjdGlvbiBhdHRlbXB0ICh1c2VyIHNldCBPSUQsIHJvYW1pbmcsIENDWCBmYXN0IHJvYW1pbmcsLi4pIGNvbnNpc3RzIG9mICovCiAvKiBzZXZlcmFsIHN0ZXBzIChKT0lOLCBBVVRILCBBU1NPQyBvciBSRUFTU09DKSBhbmQgbWF5IGZhaWwgYXQgYW55IHN0ZXAuIFdlIHB1cnBvc2VseSAqLwogLyogc2VwYXJhdGUgdGhpcyB1bmRlci10cmlhbCBzZXR0aW5ncyBhd2F5IGZyb20gcEFkLT5TdGFBY3RpdmUgc28gdGhhdCBvbmNlICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X2xpbnV4LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X2xpbnV4LmMKaW5kZXggZTViMDQyNy4uMTU4MzM0NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9saW51eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfbGludXguYwpAQCAtMjgzLDcgKzI4Myw3IEBACiAJQXJndW1lbnRzOgogCQlwQWQgCVBvaW50ZXIgdG8gb3VyIGFkYXB0ZXIKIAkJcEluc0FNU0RVSGRyCUVXQyBBLU1TRFUgZm9ybWF0IGhhcyBleHRyYSAxNC1ieXRlcyBoZWFkZXIuIGlmIFRSVUUsIGluc2VydCB0aGlzIDE0LWJ5dGUgaGRyIGluIGZyb250IG9mIE1TRFUuCi0JCSpwU3JjVG90YWxMZW4JCQlyZXR1cm4gdG90YWwgcGFja2V0IGxlbmd0aC4gVGhpcyBsZW5naHQgaXMgY2FsY3VsYXRlZCB3aXRoIDgwMi4zIGZvcm1hdCBwYWNrZXQuCisJCSpwU3JjVG90YWxMZW4JCQlyZXR1cm4gdG90YWwgcGFja2V0IGxlbmd0aC4gVGhpcyBsZW5ndGggaXMgY2FsY3VsYXRlZCB3aXRoIDgwMi4zIGZvcm1hdCBwYWNrZXQuCiAKIAlSZXR1cm4gVmFsdWU6CiAJCU5ESVNfU1RBVFVTX1NVQ0NFU1MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfcGNpX3JidXMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvcnRfcGNpX3JidXMuYwppbmRleCBlNWZiNjdjLi5mODBhYjRlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0X3BjaV9yYnVzLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydF9wY2lfcmJ1cy5jCkBAIC02MTksNyArNjE5LDcgQEAKIAkgICBPciBrZXJuZWwgd2lsbCBwYW5pYyBhZnRlciBpZmNvbmZpZyByYTAgZG93biBzb21ldGltZXMgKi8KIAogCS8qICovCi0JLyogSW5pdGFsIHRoZSBJbnRlcnJ1cHQgc291cmNlLiAqLworCS8qIEluaXRpYWwgdGhlIEludGVycnVwdCBzb3VyY2UuICovCiAJLyogKi8KIAlJbnRTb3VyY2Uud29yZCA9IDB4MDAwMDAwMDBMOwogLyogICAgICBNY3VJbnRTb3VyY2Uud29yZCA9IDB4MDAwMDAwMDBMOyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9ydG1wLmggYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0bXAuaAppbmRleCBkMTZiMDZhLi4zYzMxMzQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0bXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3J0bXAuaApAQCAtNzU2LDcgKzc1Niw3IEBACiAvKiAqLwogc3RydWN0IHJ0X3ByaXZhdGUgewogCXUzMiBTeXN0ZW1SZXNldENudDsJLyogU3lzdGVtIHJlc2V0IGNvdW50ZXIgKi8KLQl1MzIgVHhSaW5nRnVsbENudDsJLyogVHggcmluZyBmdWxsIG9jY3VycmFuY2UgbnVtYmVyICovCisJdTMyIFR4UmluZ0Z1bGxDbnQ7CS8qIFR4IHJpbmcgZnVsbCBvY2N1cnJlbmNlIG51bWJlciAqLwogCXUzMiBQaHlSeEVyckNudDsJLyogUEhZIFJ4IGVycm9yIGNvdW50LCBmb3IgZGVidWcgcHVycG9zZSwgbWlnaHQgbW92ZSB0byBnbG9iYWwgY291bnRlciAqLwogCS8qIFZhcmlhYmxlcyBmb3IgV0VQIGVuY3J5cHRpb24gLyBkZWNyeXB0aW9uIGluIHJ0bXBfd2VwLmMgKi8KIAl1MzIgRkNTQ1JDMzI7CkBAIC05MjUsNyArOTI1LDcgQEAKICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiBzdHJ1Y3QgcmVvcmRlcmluZ19tcGR1IHsKIAlzdHJ1Y3QgcmVvcmRlcmluZ19tcGR1ICpuZXh0OwotCXZvaWQgKnBQYWNrZXQ7CS8qIGNvdmVydGVkIHRvIDgwMi4zIGZyYW1lICovCisJdm9pZCAqcFBhY2tldDsJLyogY29udmVydGVkIHRvIDgwMi4zIGZyYW1lICovCiAJaW50IFNlcXVlbmNlOwkJLyogc2VxdWVuY2UgbnVtYmVyIG9mIE1QRFUgKi8KIAlCT09MRUFOIGJBTVNEVTsKIH07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3N0YV9pb2N0bC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg2MC9zdGFfaW9jdGwuYwppbmRleCA1NzE3ZTEyLi40OWIxMDEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODYwL3N0YV9pb2N0bC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NjAvc3RhX2lvY3RsLmMKQEAgLTI0NjAsNyArMjQ2MCw3IEBACiAJCX0KIAl9CiAKLQl7CQkJLyogZGV0ZXJtaW5lIHRoaXMgaW9jdGwgY29tbWFuZCBpcyBjb21taW5nIGZyb20gd2hpY2ggaW50ZXJmYWNlLiAqLworCXsJCQkvKiBkZXRlcm1pbmUgdGhpcyBpb2N0bCBjb21tYW5kIGlzIGNvbWluZyBmcm9tIHdoaWNoIGludGVyZmFjZS4gKi8KIAkJcE9iai0+aW9jdGxfaWZfdHlwZSA9IElOVF9NQUlOOwogCQlwT2JqLT5pb2N0bF9pZiA9IE1BSU5fTUJTU0lEOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2J1bGsuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2J1bGsuYwppbmRleCBkMjc0NmY4Li42NzliODAyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9idWxrLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg3MC9jb21tb24vcnR1c2JfYnVsay5jCkBAIC0yOTgsNyArMjk4LDcgQEAKIAkJCQkvKnx8ICggKFRoaXNCdWxrU2l6ZSAhPSAwKSAgJiYgKHBUeFdJLT5BTVBEVSA9PSAwKSkgKi8KIAkJCQkpIHsKIAkJCQkvKiBGb3IgVVNCIDEuMSBvciBwZWVyIHdoaWNoIGRpZG4ndCBzdXBwb3J0IEFNUERVLCBsaW1pdCB0aGUgQnVsa091dCBzaXplLiAqLwotCQkJCS8qIEZvciBwZXJmb3JtZW5jZSBpbiBiL2cgbW9kZSwgbm93IGp1c3QgY2hlY2sgZm9yIFVTQiAxLjEgYW5kIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBBUE1EVSBvciBub3QhIDIwMDgvMDYvMDQuICovCisJCQkJLyogRm9yIHBlcmZvcm1hbmNlIGluIGIvZyBtb2RlLCBub3cganVzdCBjaGVjayBmb3IgVVNCIDEuMSBhbmQgZGlkbid0IGNhcmUgYWJvdXQgdGhlIEFQTURVIG9yIG5vdCEgMjAwOC8wNi8wNC4gKi8KIAkJCQlwSFRUWENvbnRleHQtPkVOZXh0QnVsa091dFBvc2l0aW9uID0KIAkJCQkgICAgVG1wQnVsa0VuZFBvczsKIAkJCQlicmVhazsKQEAgLTMxMSw3ICszMTEsNyBAQAogCQkJCSAgICBUbXBCdWxrRW5kUG9zOwogCQkJCWJyZWFrOwogCQkJfSBlbHNlIGlmICgoKHBBZC0+QnVsa091dE1heFBhY2tldFNpemUgPCA1MTIpICYmICgoVGhpc0J1bGtTaXplICYgMHhmZmZmZjgwMCkgIT0gMCkpIC8qfHwgKCAoVGhpc0J1bGtTaXplICE9IDApICAmJiAocFR4V0ktPkFNUERVID09IDApKSAqLykgewkvKiBGb3IgVVNCIDEuMSBvciBwZWVyIHdoaWNoIGRpZG4ndCBzdXBwb3J0IEFNUERVLCBsaW1pdCB0aGUgQnVsa091dCBzaXplLiAqLwotCQkJCS8qIEZvciBwZXJmb3JtZW5jZSBpbiBiL2cgbW9kZSwgbm93IGp1c3QgY2hlY2sgZm9yIFVTQiAxLjEgYW5kIGRpZG4ndCBjYXJlIGFib3V0IHRoZSBBUE1EVSBvciBub3QhIDIwMDgvMDYvMDQuICovCisJCQkJLyogRm9yIHBlcmZvcm1hbmNlIGluIGIvZyBtb2RlLCBub3cganVzdCBjaGVjayBmb3IgVVNCIDEuMSBhbmQgZGlkbid0IGNhcmUgYWJvdXQgdGhlIEFQTURVIG9yIG5vdCEgMjAwOC8wNi8wNC4gKi8KIAkJCQlwSFRUWENvbnRleHQtPkVOZXh0QnVsa091dFBvc2l0aW9uID0KIAkJCQkgICAgVG1wQnVsa0VuZFBvczsKIAkJCQlicmVhazsKQEAgLTEwMTYsNyArMTAxNiw3IEBACiAJCQkJUlRVU0JCdWxrT3V0TnVsbEZyYW1lKHBBZCk7CiAJCQl9CiAJCX0KLQkJLyogOC4gTm8gZGF0YSBhdmFsaWFibGUgKi8KKwkJLyogOC4gTm8gZGF0YSBhdmFpbGFibGUgKi8KIAkJZWxzZQogCQkJOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2RhdGEuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydDI4NzAvY29tbW9uL3J0dXNiX2RhdGEuYwppbmRleCA2OTM2ODg2Li41YjcyYmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnQyODcwL2NvbW1vbi9ydHVzYl9kYXRhLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0Mjg3MC9jb21tb24vcnR1c2JfZGF0YS5jCkBAIC03MSw3ICs3MSw3IEBACiAKIAlSb3V0aW5lCURlc2NyaXB0aW9uOgogCQlUaGlzIHN1YnJvdXRpbmUgd2lsbCBzY2FuIHRocm91Z2ggcmVsZWF0aXZlIHJpbmcgZGVzY3JpcHRvciB0byBmaW5kCi0JCW91dCBhdmFsaWFibGUgZnJlZSByaW5nIGRlc2NyaXB0b3IgYW5kIGNvbXBhcmUgd2l0aCByZXF1ZXN0IHNpemUuCisJCW91dCBhdmFpbGFibGUgZnJlZSByaW5nIGRlc2NyaXB0b3IgYW5kIGNvbXBhcmUgd2l0aCByZXF1ZXN0IHNpemUuCiAKIAlBcmd1bWVudHM6CiAJCXBBZAlQb2ludGVyCXRvIG91ciBhZGFwdGVyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTEuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMS5oCmluZGV4IGRjNjA4YzcuLjE2YWE2YTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMS5oCkBAIC0xMDk5LDcgKzEwOTksNyBAQAogCSAqIG5vdCBzZXQuIEFzIHNvbWUgY2FyZHMgbWF5IGhhdmUgZGlmZmVyZW50IEhXIHF1ZXVlcyB0aGF0CiAJICogb25lIG1pZ2h0IHdhbnQgdG8gdXNlIGZvciBkYXRhIGFuZCBtYW5hZ2VtZW50IGZyYW1lcwogCSAqIHRoZSBvcHRpb24gdG8gaGF2ZSB0d28gY2FsbGJhY2tzIG1pZ2h0IGJlIHVzZWZ1bC4KLQkgKiBUaGlzIGZ1Y250aW9uIGNhbid0IHNsZWVwLgorCSAqIFRoaXMgZnVuY3Rpb24gY2FuJ3Qgc2xlZXAuCiAJICovCiAJaW50ICgqc29mdG1hY19oYXJkX3N0YXJ0X3htaXQpKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICAgc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CkBAIC0xMTM4LDkgKzExMzgsOSBAQAogCSAqIGl0IGlzIGNhbGxlZCBpbiBhIHdvcmtfcXVldWUgd2hlbiBzd2l0aGNpbmcgdG8gYWQtaG9jIG1vZGUKIAkgKiBvciBpbiBiZWhhbGYgb2YgaXdsaXN0IHNjYW4gd2hlbiB0aGUgY2FyZCBpcyBhc3NvY2lhdGVkCiAJICogYW5kIHJvb3QgdXNlciBhc2sgZm9yIGEgc2Nhbi4KLQkgKiB0aGUgZnVjbnRpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKKwkgKiB0aGUgZnVuY3Rpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKIAkgKiBiYWNrZ3JvdW5kIHNjYW5uaW5nIGFuZCBjYW4gc2xlZXAuCi0JICogVGhlIGZ1Y250aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCisJICogVGhlIGZ1bmN0aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCiAJICogc2Nhbm5pbmcgYW5kIGNhbid0IHNsZWVwLgogCSAqLwogCXZvaWQgKCpzY2FuX3N5bmNybykoc3RydWN0IG5ldF9kZXZpY2UgKmRldik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwppbmRleCA3NzFlMDE5Li43MzZhMTQwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKQEAgLTE5NTQsNyArMTk1NCw3IEBACiAKIAogCi0vKiBmb2xsb3dpbmcgYXJlIGZvciBhIHNpbXBsaWVyIFRYIHF1ZXVlIG1hbmFnZW1lbnQuCisvKiBmb2xsb3dpbmcgYXJlIGZvciBhIHNpbXBsZXIgVFggcXVldWUgbWFuYWdlbWVudC4KICAqIEluc3RlYWQgb2YgdXNpbmcgbmV0aWZfW3N0b3Avd2FrZV1fcXVldWUgdGhlIGRyaXZlcgogICogd2lsbCB1c2VzIHRoZXNlIHR3byBmdW5jdGlvbiAocGx1cyBhIHJlc2V0IG9uZSksIHRoYXQKICAqIHdpbGwgaW50ZXJuYWxseSB1c2VzIHRoZSBrZXJuZWwgbmV0aWZfKiBhbmQgdGFrZXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9jb3JlLmMKaW5kZXggNzBhYjAwOC4uMjE1NWE3NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9jb3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9jb3JlLmMKQEAgLTE1OTEsNyArMTU5MSw3IEBACiAJCXByaXYtPlJTU0kgPSBSU1NJOwogCQkvKiBTUSB0cmFuc2xhdGlvbiBmb3JtdWxhIGlzIHByb3ZpZGVkIGJ5IFNEMyBEWi4gMjAwNi4wNi4yNyAqLwogCQlpZiAocXVhbGl0eSA+PSAxMjcpCi0JCQlxdWFsaXR5ID0gMTsgLyowOyAqLyAvKiAwIHdpbGwgY2F1c2UgZXBjIHRvIHNob3cgc2lnbmFsIHplcm8gLCB3YWxrIGFyb3VkIG5vdzsgKi8KKwkJCXF1YWxpdHkgPSAxOyAvKjA7ICovIC8qIDAgd2lsbCBjYXVzZSBlcGMgdG8gc2hvdyBzaWduYWwgemVybyAsIHdhbGsgYXJvdW5kIG5vdzsgKi8KIAkJZWxzZSBpZiAocXVhbGl0eSA8IDI3KQogCQkJcXVhbGl0eSA9IDEwMDsKIAkJZWxzZQpAQCAtMzg4Myw3ICszODgzLDcgQEAKIAkgKiBJZiB0aGUgcGFja2V0IHByZXZpb3VzIG9mIHRoZSBuaWMgcG9pbnRlciBoYXMgYmVlbgogCSAqIHByb2Nlc3NlZCB0aGlzIGRvZXNuJ3QgbWF0dGVyOiBpdCB3aWxsIGJlIGNoZWNrZWQKIAkgKiBoZXJlIGF0IHRoZSBuZXh0IHJvdW5kLiBBbnl3YXkgaWYgbm8gbW9yZSBwYWNrZXQgYXJlCi0JICogVFhlZCBubyBtZW1vcnkgbGVhayBvY2NvdXIgYXQgYWxsLgorCSAqIFRYZWQgbm8gbWVtb3J5IGxlYWsgb2NjdXIgYXQgYWxsLgogCSAqLwogCiAJc3dpdGNoIChwcmkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfZG0uYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfZG0uYwppbmRleCBmYzQ5MDc4Li4yNjEwODVkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX2RtLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9kbS5jCkBAIC0xMjMsNyArMTIzLDcgQEAKIC8vCiAvLwlEZXNjcmlwdGlvbjoKIC8vCQlDYWxsYmFjayBmdW5jdGlvbiBvZiBVcGRhdGVUeFBvd2VyV29ya0l0ZW0uCi0vLwkJQmVjYXVzZSBvZiBzb21lIGV2ZW50IGhhcHBlbmQsIGUuZy4gQ0NYIFRQQywgSGlnaCBQb3dlciBNZWNoYW5pc20sCisvLwkJQmVjYXVzZSBvZiBzb21lIGV2ZW50IGhhcHBlbmVkLCBlLmcuIENDWCBUUEMsIEhpZ2ggUG93ZXIgTWVjaGFuaXNtLAogLy8JCVdlIHVwZGF0ZSBUeCBwb3dlciBvZiBjdXJyZW50IGNoYW5uZWwgYWdhaW4uCiAvLwogdm9pZCBydGw4MTgwX3R4X3B3X3dxIChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCkBAIC05ODQsNyArOTg0LDcgQEAKIAkJewogCQkJcHJpdi0+VHJ5dXBpbmdDb3VudCA9IDA7CiAJCQkvLwotCQkJLy8gV2hlbiB0cmFuc2ZlcmluZyBmcm9tIENDSyB0byBPRkRNLCBESUcgaXMgYW4gaW1wb3J0YW50IGlzc3VlLgorCQkJLy8gV2hlbiB0cmFuc2ZlcnJpbmcgZnJvbSBDQ0sgdG8gT0ZETSwgRElHIGlzIGFuIGltcG9ydGFudCBpc3N1ZS4KIAkJCS8vCiAJCQlpZihwcml2LT5DdXJyZW50T3BlcmFSYXRlID09IDIyKQogCQkJCWJVcGRhdGVJbml0aWFsR2FpbiA9IHRydWU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX3J0bDgyMjV6Mi5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4MF9ydGw4MjI1ejIuYwppbmRleCAyYTJhZmQ1Li4zZjA5Zjc2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTgwX3J0bDgyMjV6Mi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODBfcnRsODIyNXoyLmMKQEAgLTM3OCw3ICszNzgsNyBAQAogCW1hc2sgPSAobG93MmhpZ2gpID8gMHgwMSA6ICgoKHUzMikweDAxKSA8PCAoMTItMSkpOwogCiAJLyoKLQkgKiBXZSBtdXN0IHNldCBkYXRhIHBpbiB0byBIVyBjb250cm9sZWQsIG90aGVyd2lzZSBSRiBjYW4ndCBkcml2ZXIgaXQKKwkgKiBXZSBtdXN0IHNldCBkYXRhIHBpbiB0byBIVyBjb250cm9sbGVkLCBvdGhlcndpc2UgUkYgY2FuJ3QgZHJpdmVyIGl0CiAJICogYW5kIHZhbHVlIFJGIHJlZ2lzdGVyIHdvbid0IGJlIGFibGUgdG8gcmVhZCBiYWNrIHByb3Blcmx5LgogCSAqLwogCXdyaXRlX25pY193b3JkKGRldiwgUkZQaW5zRW5hYmxlLCAob3ZhbDIgJiAofjB4MDEpKSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTg1Yl9pbml0LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE4N3NlL3I4MTg1Yl9pbml0LmMKaW5kZXggM2JkZjliMy4uNGIwYjgzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxODdzZS9yODE4NWJfaW5pdC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTg3c2UvcjgxODViX2luaXQuYwpAQCAtMTI3Myw3ICsxMjczLDcgQEAKIAkvKgogCQlTdG9wIEJlYWNvbi4KIAotCQlWaXN0YSBhZGQgYSBBZGhvYyBwcm9maWxlLCBIVyByYWRpbyBvZmYgdW50aWxsIE9JRF9ET1QxMV9SRVNFVF9SRVFVRVNUCisJCVZpc3RhIGFkZCBhIEFkaG9jIHByb2ZpbGUsIEhXIHJhZGlvIG9mZiB1bnRpbCBPSURfRE9UMTFfUkVTRVRfUkVRVUVTVAogCQlEcml2ZXIgd291bGQgc2V0IE1TUj1OT19MSU5LLCB0aGVuIEhXIFJhZGlvIE9OLCBNZ250UXVldWUgU3R1Y2suCiAJCUJlY2F1c2UgQmNuIERNQSBpc24ndCBjb21wbGV0ZSwgbWdudCBxdWV1ZSB3b3VsZCBzdHVjayB1bnRpbCBCY24gcGFja2V0IHNlbmQuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMS5oCmluZGV4IDNjYTM4ODEuLmRiZTIxYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTEuaApAQCAtMTk2Nyw3ICsxOTY3LDcgQEAKICAgICAgICAgdTE2IHByZXZfc2VxX2N0bDsgICAgICAgLyogdXNlZCB0byBkcm9wIGR1cGxpY2F0ZSBmcmFtZXMgKi8KIAogCS8qIG1hcCBvZiBhbGxvd2VkIGNoYW5uZWxzLiAwIGlzIGR1bW15ICovCi0JLy8gRklYTUU6IHJlbWViZXIgdG8gZGVmYXVsdCB0byBhIGJhc2ljIGNoYW5uZWwgcGxhbiBkZXBlbmRpbmcgb2YgdGhlIFBIWSB0eXBlCisJLy8gRklYTUU6IHJlbWVtYmVyIHRvIGRlZmF1bHQgdG8gYSBiYXNpYyBjaGFubmVsIHBsYW4gZGVwZW5kaW5nIG9mIHRoZSBQSFkgdHlwZQogI2lmZGVmIEVOQUJMRV9ET1QxMUQKIAl2b2lkKiBwRG90MTFkSW5mbzsKIAlib29sIGJHbG9iYWxEb21haW47CkBAIC0yMTIxLDcgKzIxMjEsNyBAQAogCSAqIG5vdCBzZXQuIEFzIHNvbWUgY2FyZHMgbWF5IGhhdmUgZGlmZmVyZW50IEhXIHF1ZXVlcyB0aGF0CiAJICogb25lIG1pZ2h0IHdhbnQgdG8gdXNlIGZvciBkYXRhIGFuZCBtYW5hZ2VtZW50IGZyYW1lcwogCSAqIHRoZSBvcHRpb24gdG8gaGF2ZSB0d28gY2FsbGJhY2tzIG1pZ2h0IGJlIHVzZWZ1bC4KLQkgKiBUaGlzIGZ1Y250aW9uIGNhbid0IHNsZWVwLgorCSAqIFRoaXMgZnVuY3Rpb24gY2FuJ3Qgc2xlZXAuCiAJICovCiAJaW50ICgqc29mdG1hY19oYXJkX3N0YXJ0X3htaXQpKHN0cnVjdCBza19idWZmICpza2IsCiAJCQkgICAgICAgc3RydWN0IGllZWU4MDIxMV9kZXZpY2UgKmllZWU4MDIxMSk7CkBAIC0yMTYwLDkgKzIxNjAsOSBAQAogCSAqIGl0IGlzIGNhbGxlZCBpbiBhIHdvcmtfcXVldWUgd2hlbiBzd2l0aGNpbmcgdG8gYWQtaG9jIG1vZGUKIAkgKiBvciBpbiBiZWhhbGYgb2YgaXdsaXN0IHNjYW4gd2hlbiB0aGUgY2FyZCBpcyBhc3NvY2lhdGVkCiAJICogYW5kIHJvb3QgdXNlciBhc2sgZm9yIGEgc2Nhbi4KLQkgKiB0aGUgZnVjbnRpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKKwkgKiB0aGUgZnVuY3Rpb24gc3RvcF9zY2FuIHNob3VsZCBzdG9wIGJvdGggdGhlIHN5bmNybyBhbmQKIAkgKiBiYWNrZ3JvdW5kIHNjYW5uaW5nIGFuZCBjYW4gc2xlZXAuCi0JICogVGhlIGZ1Y250aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCisJICogVGhlIGZ1bmN0aW9uIHN0YXJ0X3NjYW4gc2hvdWxkIGluaXRpYXRlIHRoZSBiYWNrZ3JvdW5kCiAJICogc2Nhbm5pbmcgYW5kIGNhbid0IHNsZWVwLgogCSAqLwogCXZvaWQgKCpzY2FuX3N5bmNybykoc3RydWN0IGllZWU4MDIxMV9kZXZpY2UgKmllZWU4MDIxMSk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfcnguYwppbmRleCBhZGQwMTVlLi5lZDVhMzgwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKQEAgLTE0MjYsNyArMTQyNiw3IEBACiBzdGF0aWMgdTggcW9zX291aVtRT1NfT1VJX0xFTl0gPSB7IDB4MDAsIDB4NTAsIDB4RjIgfTsKIAogLyoKLSogTWFrZSB0aGVyIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgaGFzCisqIE1ha2UgdGhlIHN0cnVjdHVyZSB3ZSByZWFkIGZyb20gdGhlIGJlYWNvbiBwYWNrZXQgdG8gaGF2ZQogKiB0aGUgcmlnaHQgdmFsdWVzCiAqLwogc3RhdGljIGludCBpZWVlODAyMTFfdmVyaWZ5X3Fvc19pbmZvKHN0cnVjdCBpZWVlODAyMTFfcW9zX2luZm9ybWF0aW9uX2VsZW1lbnQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYwppbmRleCBmNjkyMmQ0Li43ZDRjYmEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCkBAIC0yMDIzLDcgKzIwMjMsNyBAQAogCQkJCQkJCXJldHVybiAxOwogCQkJCQkJfQogCQkJCQkJZWxzZQotCQkJCQkJewkvL2ZpbGxpbmcgdGhlIFBlZXJIVENhcC4gLy9tYXliZSBub3QgbmVjY2VzYXJ5IGFzIHdlIGNhbiBnZXQgaXRzIGluZm8gZnJvbSBjdXJyZW50X25ldHdvcmsuCisJCQkJCQl7CS8vZmlsbGluZyB0aGUgUGVlckhUQ2FwLiAvL21heWJlIG5vdCBuZWNlc3NhcnkgYXMgd2UgY2FuIGdldCBpdHMgaW5mbyBmcm9tIGN1cnJlbnRfbmV0d29yay4KIAkJCQkJCQltZW1jcHkoaWVlZS0+cEhUSW5mby0+UGVlckhUQ2FwQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUQ2FwQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUQ2FwTGVuKTsKIAkJCQkJCQltZW1jcHkoaWVlZS0+cEhUSW5mby0+UGVlckhUSW5mb0J1ZiwgbmV0d29yay0+YnNzaHQuYmRIVEluZm9CdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRJbmZvTGVuKTsKIAkJCQkJCX0KQEAgLTIxNjMsNyArMjE2Myw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxpZXIgVFggcXVldWUgbWFuYWdlbWVudC4KKy8qIGZvbGxvd2luZyBhcmUgZm9yIGEgc2ltcGxlciBUWCBxdWV1ZSBtYW5hZ2VtZW50LgogICogSW5zdGVhZCBvZiB1c2luZyBuZXRpZl9bc3RvcC93YWtlXV9xdWV1ZSB0aGUgZHJpdmVyCiAgKiB3aWxsIHVzZXMgdGhlc2UgdHdvIGZ1bmN0aW9uIChwbHVzIGEgcmVzZXQgb25lKSwgdGhhdAogICogd2lsbCBpbnRlcm5hbGx5IHVzZXMgdGhlIGtlcm5lbCBuZXRpZl8qIGFuZCB0YWtlcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hULmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaAppbmRleCBmOTY4ODE3Li41NmExMjBjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaApAQCAtNjQsNyArNjQsNyBAQAogfUhUX0NIQU5ORUxfV0lEVEgsICpQSFRfQ0hBTk5FTF9XSURUSDsKIAogLy8KLS8vIFJlcHJlc2VudCBFeHRlbnRpb24gQ2hhbm5lbCBPZmZzZXQgaW4gSFQgQ2FwYWJpbGl0aWVzCisvLyBSZXByZXNlbnQgRXh0ZW5zaW9uIENoYW5uZWwgT2Zmc2V0IGluIEhUIENhcGFiaWxpdGllcwogLy8gVGhpcyBpcyBhdmFpbGFibGUgb25seSBpbiA0ME1oeiBtb2RlLgogLy8KIHR5cGVkZWYgZW51bSBfSFRfRVhUQ0hOTF9PRkZTRVR7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMKaW5kZXggYTJhNGZlOS4uZjdhOWRhMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYwpAQCAtNDU5LDcgKzQ1OSw3IEBACiAvKioKICogRnVuY3Rpb246CUhUSU9UQWN0SXNEaXNhYmxlTUNTMTUKICoKLSogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZXZpbmcgTUNTMTUKKyogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZWl2aW5nIE1DUzE1CiAqCiAqIElucHV0OgogKgkJCVBBREFQVEVSCQlBZGFwdGVyLApAQCAtNDk2LDcgKzQ5Niw3IEBACiAvKioKICogRnVuY3Rpb246CUhUSU9UQWN0SXNEaXNhYmxlTUNTVHdvU3BhdGlhbFN0cmVhbQogKgotKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNldmluZyBBbGwgMiBzcyBwYWNrZXRzCisqIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2VpdmluZyBBbGwgMiBzcyBwYWNrZXRzCiAqCiAqIElucHV0OgogKgkJCVBBREFQVEVSCQlBZGFwdGVyLApAQCAtMTY4MSw3ICsxNjgxLDcgQEAKIAkvL2lmIGluIGhhbGYgTiBtb2RlLCBzZXQgdG8gMjBNIGJhbmR3aWR0aCBwbGVhc2UgMDkuMDguMjAwOCBXQi4KIAlpZiAoQmFuZHdpZHRoPT1IVF9DSEFOTkVMX1dJRFRIXzIwXzQwICYmICghaWVlZS0+R2V0SGFsZk5tb2RlU3VwcG9ydEJ5QVBzSGFuZGxlcihpZWVlKSkpCiAJIHsKLQkgCQkvLyBIYW5kbGUgSWxsZWdhbCBleHRlbnRpb24gY2hhbm5lbCBvZmZzZXQhIQorCSAJCS8vIEhhbmRsZSBJbGxlZ2FsIGV4dGVuc2lvbiBjaGFubmVsIG9mZnNldCEhCiAJCWlmKGllZWUtPmN1cnJlbnRfbmV0d29yay5jaGFubmVsPDIgJiYgT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9MT1dFUikKIAkJCU9mZnNldCA9IEhUX0VYVENITkxfT0ZGU0VUX05PX0VYVDsKIAkJaWYoT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9VUFBFUiB8fCBPZmZzZXQ9PUhUX0VYVENITkxfT0ZGU0VUX0xPV0VSKSB7CkBAIC0xNjk4LDcgKzE2OTgsNyBAQAogCiAJcEhUSW5mby0+YlN3QndJblByb2dyZXNzID0gdHJ1ZTsKIAotCS8vIFRPRE86IDIwMDcuNy4xMyBieSBFbWlseSBXYWl0IDIwMDBtcyAgaW4gb3JkZXIgdG8gZ2FyYW50ZWUgdGhhdCBzd2l0Y2hpbmcKKwkvLyBUT0RPOiAyMDA3LjcuMTMgYnkgRW1pbHkgV2FpdCAyMDAwbXMgIGluIG9yZGVyIHRvIGd1YXJhbnRlZSB0aGF0IHN3aXRjaGluZwogCS8vICAgYmFuZHdpZHRoIGlzIGV4ZWN1dGVkIGFmdGVyIHNjYW4gaXMgZmluaXNoZWQuIEl0IGlzIGEgdGVtcG9yYWwgc29sdXRpb24KIAkvLyAgIGJlY2F1c2Ugc29mdHdhcmUgc2hvdWxkIGdhbnJhbnRlZSB0aGUgbGFzdCBvcGVyYXRpb24gb2Ygc3dpdGNoaW5nIGJhbmR3aWR0aAogCS8vICAgaXMgZXhlY3V0ZWQgcHJvcGVybGx5LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaAppbmRleCBiYWFhYzIxLi5lN2UyNmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFMuaApAQCAtNDQsNyArNDQsNyBAQAogCXUxNgkJCQlSeFRpbWVvdXRJbmRpY2F0ZVNlcTsKIAlzdHJ1Y3QgbGlzdF9oZWFkCQlSeFBlbmRpbmdQa3RMaXN0OwogCXN0cnVjdCB0aW1lcl9saXN0CQlSeFBrdFBlbmRpbmdUaW1lcjsKLQlCQV9SRUNPUkQJCQlSeEFkbWl0dGVkQkFSZWNvcmQ7CSAvLyBGb3IgQkEgUmVjZXBpZW50CisJQkFfUkVDT1JECQkJUnhBZG1pdHRlZEJBUmVjb3JkOwkgLy8gRm9yIEJBIFJlY2lwaWVudAogCXUxNgkJCQlSeExhc3RTZXFOdW07CiAJdTgJCQkJUnhMYXN0RnJhZ051bTsKIAl1OAkJCQludW07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMKaW5kZXggMjllZWNmMC4uYWQ2ODcyZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYwpAQCAtMTM1LDcgKzEzNSw3IEBACiAJUmVzZXRUc0NvbW1vbkluZm8oJnBUUy0+VHNDb21tb25JbmZvKTsKIAlwVFMtPlJ4SW5kaWNhdGVTZXEgPSAweGZmZmY7IC8vIFRoaXMgaW5kaWNhdGUgdGhlIFJ4SW5kaWNhdGVTZXEgaXMgbm90IHVzZWQgbm93ISEKIAlwVFMtPlJ4VGltZW91dEluZGljYXRlU2VxID0gMHhmZmZmOyAvLyBUaGlzIGluZGljYXRlIHRoZSBSeFRpbWVvdXRJbmRpY2F0ZVNlcSBpcyBub3QgdXNlZCBub3chIQotCVJlc2V0QmFFbnRyeSgmcFRTLT5SeEFkbWl0dGVkQkFSZWNvcmQpOwkgIC8vIEZvciBCQSBSZWNlcGllbnQKKwlSZXNldEJhRW50cnkoJnBUUy0+UnhBZG1pdHRlZEJBUmVjb3JkKTsJICAvLyBGb3IgQkEgUmVjaXBpZW50CiB9CiAKIHZvaWQgVFNJbml0aWFsaXplKHN0cnVjdCBpZWVlODAyMTFfZGV2aWNlICppZWVlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL3I4MTl4RV9waHkuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkyZS9yODE5eEVfcGh5LmMKaW5kZXggZGZhNGUxMS4uOWU3ODI4ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJlL3I4MTl4RV9waHkuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MmUvcjgxOXhFX3BoeS5jCkBAIC0yMDMyLDEzICsyMDMyLDEzIEBACiAJewogCQljYXNlIEhUX0NIQU5ORUxfV0lEVEhfMjA6CiAJCQlyZWdCd09wTW9kZSB8PSBCV19PUE1PREVfMjBNSFo7Ci0JCSAgICAgICAvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXN1ZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCisJCSAgICAgICAvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXVzZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCiAJCQl3cml0ZV9uaWNfYnl0ZShwcml2LCBCV19PUE1PREUsIHJlZ0J3T3BNb2RlKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgSFRfQ0hBTk5FTF9XSURUSF8yMF80MDoKIAkJCXJlZ0J3T3BNb2RlICY9IH5CV19PUE1PREVfMjBNSFo7Ci0gICAgICAgIAkJLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2FzdWUgd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcworICAgICAgICAJCS8vIDIwMDcvMDIvMDcgTWFyayBieSBFbWlseSBiZWNhdXNlIHdlIGhhdmUgbm90IHZlcmlmeSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgd29ya3MKIAkJCXdyaXRlX25pY19ieXRlKHByaXYsIEJXX09QTU9ERSwgcmVnQndPcE1vZGUpOwogCQkJYnJlYWs7CiAKQEAgLTIxMTYsNyArMjExNiw3IEBACiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqZnVuY3Rpb246ICBUaGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBiYW5kd2l0aCBzd2l0Y2ggd29yay4KKyAqZnVuY3Rpb246ICBUaGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBiYW5kd2lkdGggc3dpdGNoIHdvcmsuCiAgKiAgIGlucHV0OiAgc3RydWN0IG5ldF9kZXZpY2UgKmRldgogICogICAJICAgICBIVF9DSEFOTkVMX1dJRFRICUJhbmR3aWR0aCAgLy8yME0gb3IgNDBNCiAgKiAgIAkgICAgIEhUX0VYVENITkxfT0ZGU0VUIE9mZnNldCAJICAgLy9VcHBlciwgTG93ZXIsIG9yIERvbid0IGNhcmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMS5oCmluZGV4IGMwYjg0NGQuLmU3MTZmN2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTEuaApAQCAtMTk2NSw3ICsxOTY1LDcgQEAKIAl1MTYgcHJldl9zZXFfY3RsOyAgICAgICAvKiB1c2VkIHRvIGRyb3AgZHVwbGljYXRlIGZyYW1lcyAqLwogCiAJLyogbWFwIG9mIGFsbG93ZWQgY2hhbm5lbHMuIDAgaXMgZHVtbXkgKi8KLQkvLyBGSVhNRTogcmVtZWJlciB0byBkZWZhdWx0IHRvIGEgYmFzaWMgY2hhbm5lbCBwbGFuIGRlcGVuZGluZyBvZiB0aGUgUEhZIHR5cGUKKwkvLyBGSVhNRTogcmVtZW1iZXIgdG8gZGVmYXVsdCB0byBhIGJhc2ljIGNoYW5uZWwgcGxhbiBkZXBlbmRpbmcgb2YgdGhlIFBIWSB0eXBlCiAJdm9pZCogcERvdDExZEluZm87CiAJYm9vbCBiR2xvYmFsRG9tYWluOwogCWludCByYXRlOyAgICAgICAvKiBjdXJyZW50IHJhdGUgKi8KQEAgLTIxMTksNyArMjExOSw3IEBACiAJICogbm90IHNldC4gQXMgc29tZSBjYXJkcyBtYXkgaGF2ZSBkaWZmZXJlbnQgSFcgcXVldWVzIHRoYXQKIAkgKiBvbmUgbWlnaHQgd2FudCB0byB1c2UgZm9yIGRhdGEgYW5kIG1hbmFnZW1lbnQgZnJhbWVzCiAJICogdGhlIG9wdGlvbiB0byBoYXZlIHR3byBjYWxsYmFja3MgbWlnaHQgYmUgdXNlZnVsLgotCSAqIFRoaXMgZnVjbnRpb24gY2FuJ3Qgc2xlZXAuCisJICogVGhpcyBmdW5jdGlvbiBjYW4ndCBzbGVlcC4KIAkgKi8KIAlpbnQgKCpzb2Z0bWFjX2hhcmRfc3RhcnRfeG1pdCkoc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgICBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKQEAgLTIxNTgsOSArMjE1OCw5IEBACiAJICogaXQgaXMgY2FsbGVkIGluIGEgd29ya19xdWV1ZSB3aGVuIHN3aXRoY2luZyB0byBhZC1ob2MgbW9kZQogCSAqIG9yIGluIGJlaGFsZiBvZiBpd2xpc3Qgc2NhbiB3aGVuIHRoZSBjYXJkIGlzIGFzc29jaWF0ZWQKIAkgKiBhbmQgcm9vdCB1c2VyIGFzayBmb3IgYSBzY2FuLgotCSAqIHRoZSBmdWNudGlvbiBzdG9wX3NjYW4gc2hvdWxkIHN0b3AgYm90aCB0aGUgc3luY3JvIGFuZAorCSAqIHRoZSBmdW5jdGlvbiBzdG9wX3NjYW4gc2hvdWxkIHN0b3AgYm90aCB0aGUgc3luY3JvIGFuZAogCSAqIGJhY2tncm91bmQgc2Nhbm5pbmcgYW5kIGNhbiBzbGVlcC4KLQkgKiBUaGUgZnVjbnRpb24gc3RhcnRfc2NhbiBzaG91bGQgaW5pdGlhdGUgdGhlIGJhY2tncm91bmQKKwkgKiBUaGUgZnVuY3Rpb24gc3RhcnRfc2NhbiBzaG91bGQgaW5pdGlhdGUgdGhlIGJhY2tncm91bmQKIAkgKiBzY2FubmluZyBhbmQgY2FuJ3Qgc2xlZXAuCiAJICovCiAJdm9pZCAoKnNjYW5fc3luY3JvKShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9yeC5jCmluZGV4IDQ5OGI1MjAuLmE0MTQzMDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3J4LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfcnguYwpAQCAtMTM5OSw3ICsxMzk5LDcgQEAKIHN0YXRpYyB1OCBxb3Nfb3VpW1FPU19PVUlfTEVOXSA9IHsgMHgwMCwgMHg1MCwgMHhGMiB9OwogCiAvKgotKiBNYWtlIHRoZXIgc3RydWN0dXJlIHdlIHJlYWQgZnJvbSB0aGUgYmVhY29uIHBhY2tldCBoYXMKKyogTWFrZSB0aGUgc3RydWN0dXJlIHdlIHJlYWQgZnJvbSB0aGUgYmVhY29uIHBhY2tldCB0byBoYXZlCiAqIHRoZSByaWdodCB2YWx1ZXMKICovCiBzdGF0aWMgaW50IGllZWU4MDIxMV92ZXJpZnlfcW9zX2luZm8oc3RydWN0IGllZWU4MDIxMV9xb3NfaW5mb3JtYXRpb25fZWxlbWVudApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9pZWVlODAyMTFfc29mdG1hYy5jCmluZGV4IDQ5OTJkNjMuLjRlYzBhNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvaWVlZTgwMjExX3NvZnRtYWMuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL2llZWU4MDIxMV9zb2Z0bWFjLmMKQEAgLTE5NzMsNyArMTk3Myw3IEBACiAJCQkJCQkJcmV0dXJuIDE7CiAJCQkJCQl9CiAJCQkJCQllbHNlCi0JCQkJCQl7CS8vZmlsbGluZyB0aGUgUGVlckhUQ2FwLiAvL21heWJlIG5vdCBuZWNjZXNhcnkgYXMgd2UgY2FuIGdldCBpdHMgaW5mbyBmcm9tIGN1cnJlbnRfbmV0d29yay4KKwkJCQkJCXsJLy9maWxsaW5nIHRoZSBQZWVySFRDYXAuIC8vbWF5YmUgbm90IG5lY2Vzc2FyeSBhcyB3ZSBjYW4gZ2V0IGl0cyBpbmZvIGZyb20gY3VycmVudF9uZXR3b3JrLgogCQkJCQkJCW1lbWNweShpZWVlLT5wSFRJbmZvLT5QZWVySFRDYXBCdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRDYXBCdWYsIG5ldHdvcmstPmJzc2h0LmJkSFRDYXBMZW4pOwogCQkJCQkJCW1lbWNweShpZWVlLT5wSFRJbmZvLT5QZWVySFRJbmZvQnVmLCBuZXR3b3JrLT5ic3NodC5iZEhUSW5mb0J1ZiwgbmV0d29yay0+YnNzaHQuYmRIVEluZm9MZW4pOwogCQkJCQkJfQpAQCAtMjExMyw3ICsyMTEzLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogZm9sbG93aW5nIGFyZSBmb3IgYSBzaW1wbGllciBUWCBxdWV1ZSBtYW5hZ2VtZW50LgorLyogZm9sbG93aW5nIGFyZSBmb3IgYSBzaW1wbGVyIFRYIHF1ZXVlIG1hbmFnZW1lbnQuCiAgKiBJbnN0ZWFkIG9mIHVzaW5nIG5ldGlmX1tzdG9wL3dha2VdX3F1ZXVlIHRoZSBkcml2ZXIKICAqIHdpbGwgdXNlcyB0aGVzZSB0d28gZnVuY3Rpb24gKHBsdXMgYSByZXNldCBvbmUpLCB0aGF0CiAgKiB3aWxsIGludGVybmFsbHkgdXNlcyB0aGUga2VybmVsIG5ldGlmXyogYW5kIHRha2VzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFQuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVC5oCmluZGV4IGNkZTYwM2YuLjBiMWExZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVC5oCkBAIC02NCw3ICs2NCw3IEBACiB9SFRfQ0hBTk5FTF9XSURUSCwgKlBIVF9DSEFOTkVMX1dJRFRIOwogCiAvLwotLy8gUmVwcmVzZW50IEV4dGVudGlvbiBDaGFubmVsIE9mZnNldCBpbiBIVCBDYXBhYmlsaXRpZXMKKy8vIFJlcHJlc2VudCBFeHRlbnNpb24gQ2hhbm5lbCBPZmZzZXQgaW4gSFQgQ2FwYWJpbGl0aWVzCiAvLyBUaGlzIGlzIGF2YWlsYWJsZSBvbmx5IGluIDQwTWh6IG1vZGUuCiAvLwogdHlwZWRlZiBlbnVtIF9IVF9FWFRDSE5MX09GRlNFVHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9IVFByb2MuYwppbmRleCA1MGY0ZjU5Li5lODhhODM5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfSFRQcm9jLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X0hUUHJvYy5jCkBAIC00MjMsNyArNDIzLDcgQEAKIC8qKgogKiBGdW5jdGlvbjoJSFRJT1RBY3RJc0Rpc2FibGVNQ1MxNQogKgotKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNldmluZyBNQ1MxNQorKiBPdmVydmlldzoJQ2hlY2sgd2hldGhlciBkcml2ZXIgc2hvdWxkIGRlY2xhcmUgY2FwYWJpbGl0eSBvZiByZWNlaXZpbmcgTUNTMTUKICoKICogSW5wdXQ6CiAqCQkJUEFEQVBURVIJCUFkYXB0ZXIsCkBAIC00NjAsNyArNDYwLDcgQEAKIC8qKgogKiBGdW5jdGlvbjoJSFRJT1RBY3RJc0Rpc2FibGVNQ1NUd29TcGF0aWFsU3RyZWFtCiAqCi0qIE92ZXJ2aWV3OglDaGVjayB3aGV0aGVyIGRyaXZlciBzaG91bGQgZGVjbGFyZSBjYXBhYmlsaXR5IG9mIHJlY2V2aW5nIEFsbCAyIHNzIHBhY2tldHMKKyogT3ZlcnZpZXc6CUNoZWNrIHdoZXRoZXIgZHJpdmVyIHNob3VsZCBkZWNsYXJlIGNhcGFiaWxpdHkgb2YgcmVjZWl2aW5nIEFsbCAyIHNzIHBhY2tldHMKICoKICogSW5wdXQ6CiAqCQkJUEFEQVBURVIJCUFkYXB0ZXIsCkBAIC0xNDA5LDcgKzE0MDksNyBAQAogCS8vaWYgaW4gaGFsZiBOIG1vZGUsIHNldCB0byAyME0gYmFuZHdpZHRoIHBsZWFzZSAwOS4wOC4yMDA4IFdCLgogCWlmKEJhbmR3aWR0aD09SFRfQ0hBTk5FTF9XSURUSF8yMF80MCAmJiAoIWllZWUtPkdldEhhbGZObW9kZVN1cHBvcnRCeUFQc0hhbmRsZXIoaWVlZS0+ZGV2KSkpCiAJIHsKLQkJCS8vIEhhbmRsZSBJbGxlZ2FsIGV4dGVudGlvbiBjaGFubmVsIG9mZnNldCEhCisJCQkvLyBIYW5kbGUgSWxsZWdhbCBleHRlbnNpb24gY2hhbm5lbCBvZmZzZXQhIQogCQlpZihpZWVlLT5jdXJyZW50X25ldHdvcmsuY2hhbm5lbDwyICYmIE9mZnNldD09SFRfRVhUQ0hOTF9PRkZTRVRfTE9XRVIpCiAJCQlPZmZzZXQgPSBIVF9FWFRDSE5MX09GRlNFVF9OT19FWFQ7CiAJCWlmKE9mZnNldD09SFRfRVhUQ0hOTF9PRkZTRVRfVVBQRVIgfHwgT2Zmc2V0PT1IVF9FWFRDSE5MX09GRlNFVF9MT1dFUikgewpAQCAtMTQyNiw3ICsxNDI2LDcgQEAKIAogCXBIVEluZm8tPmJTd0J3SW5Qcm9ncmVzcyA9IHRydWU7CiAKLQkvLyBUT0RPOiAyMDA3LjcuMTMgYnkgRW1pbHkgV2FpdCAyMDAwbXMgIGluIG9yZGVyIHRvIGdhcmFudGVlIHRoYXQgc3dpdGNoaW5nCisJLy8gVE9ETzogMjAwNy43LjEzIGJ5IEVtaWx5IFdhaXQgMjAwMG1zICBpbiBvcmRlciB0byBndWFyYW50ZWUgdGhhdCBzd2l0Y2hpbmcKIAkvLyAgIGJhbmR3aWR0aCBpcyBleGVjdXRlZCBhZnRlciBzY2FuIGlzIGZpbmlzaGVkLiBJdCBpcyBhIHRlbXBvcmFsIHNvbHV0aW9uCiAJLy8gICBiZWNhdXNlIHNvZnR3YXJlIHNob3VsZCBnYW5yYW50ZWUgdGhlIGxhc3Qgb3BlcmF0aW9uIG9mIHN3aXRjaGluZyBiYW5kd2lkdGgKIAkvLyAgIGlzIGV4ZWN1dGVkIHByb3BlcmxseS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UUy5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTLmgKaW5kZXggYmFhYWMyMS4uZTdlMjZmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTLmgKQEAgLTQ0LDcgKzQ0LDcgQEAKIAl1MTYJCQkJUnhUaW1lb3V0SW5kaWNhdGVTZXE7CiAJc3RydWN0IGxpc3RfaGVhZAkJUnhQZW5kaW5nUGt0TGlzdDsKIAlzdHJ1Y3QgdGltZXJfbGlzdAkJUnhQa3RQZW5kaW5nVGltZXI7Ci0JQkFfUkVDT1JECQkJUnhBZG1pdHRlZEJBUmVjb3JkOwkgLy8gRm9yIEJBIFJlY2VwaWVudAorCUJBX1JFQ09SRAkJCVJ4QWRtaXR0ZWRCQVJlY29yZDsJIC8vIEZvciBCQSBSZWNpcGllbnQKIAl1MTYJCQkJUnhMYXN0U2VxTnVtOwogCXU4CQkJCVJ4TGFzdEZyYWdOdW07CiAJdTgJCQkJbnVtOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9ydGw4MTl4X1RTUHJvYy5jCmluZGV4IGMzZmNhYWUuLjk1N2NlNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvcnRsODE5eF9UU1Byb2MuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3J0bDgxOXhfVFNQcm9jLmMKQEAgLTEzNSw3ICsxMzUsNyBAQAogCVJlc2V0VHNDb21tb25JbmZvKCZwVFMtPlRzQ29tbW9uSW5mbyk7CiAJcFRTLT5SeEluZGljYXRlU2VxID0gMHhmZmZmOyAvLyBUaGlzIGluZGljYXRlIHRoZSBSeEluZGljYXRlU2VxIGlzIG5vdCB1c2VkIG5vdyEhCiAJcFRTLT5SeFRpbWVvdXRJbmRpY2F0ZVNlcSA9IDB4ZmZmZjsgLy8gVGhpcyBpbmRpY2F0ZSB0aGUgUnhUaW1lb3V0SW5kaWNhdGVTZXEgaXMgbm90IHVzZWQgbm93ISEKLQlSZXNldEJhRW50cnkoJnBUUy0+UnhBZG1pdHRlZEJBUmVjb3JkKTsJICAvLyBGb3IgQkEgUmVjZXBpZW50CisJUmVzZXRCYUVudHJ5KCZwVFMtPlJ4QWRtaXR0ZWRCQVJlY29yZCk7CSAgLy8gRm9yIEJBIFJlY2lwaWVudAogfQogCiB2b2lkIFRTSW5pdGlhbGl6ZShzdHJ1Y3QgaWVlZTgwMjExX2RldmljZSAqaWVlZSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvc2NhdHRlcndhbGsuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9pZWVlODAyMTEvc2NhdHRlcndhbGsuYwppbmRleCA0OWY0MDFmLi4zNTQzYTYxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvaWVlZTgwMjExL3NjYXR0ZXJ3YWxrLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L2llZWU4MDIxMS9zY2F0dGVyd2Fsay5jCkBAIC03MSw3ICs3MSw3IEBACiAJCQkJIHVuc2lnbmVkIGludCBtb3JlKQogewogCS8qIHdhbGstPmRhdGEgbWF5IGJlIHBvaW50aW5nIHRoZSBmaXJzdCBieXRlIG9mIHRoZSBuZXh0IHBhZ2U7Ci0JICAgaG93ZXZlciwgd2Uga25vdyB3ZSB0cmFuc2ZlcmVkIGF0IGxlYXN0IG9uZSBieXRlLiAgU28sCisJICAgaG93ZXZlciwgd2Uga25vdyB3ZSB0cmFuc2ZlcnJlZCBhdCBsZWFzdCBvbmUgYnl0ZS4gIFNvLAogCSAgIHdhbGstPmRhdGEgLSAxIHdpbGwgYmUgYSB2aXJ0dWFsIGFkZHJlc3MgaW4gdGhlIG1hcHBlZCBwYWdlLiAqLwogCiAJaWYgKG91dCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5MlVfY29yZS5jIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTkyVV9jb3JlLmMKaW5kZXggZGE2MTJlNi4uZTgxYjhhYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTkyVV9jb3JlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTkyVV9jb3JlLmMKQEAgLTQ2MCw3ICs0NjAsNyBAQAogLyogdTggcmVhZF9waHlfY2NrKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IGFkcik7ICovCiAvKiB1OCByZWFkX3BoeV9vZmRtKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHU4IGFkcik7ICovCiAvKiB0aGlzIG1pZ2h0IHN0aWxsIGNhbGxlZCBpbiB3aGF0IHdhcyB0aGUgUEhZIHJ0bDgxODUvcnRsODE5MiBjb21tb24gY29kZQotICogcGxhbnMgYXJlIHRvIHBvc3NpYmlsdHkgdHVybiBpdCBhZ2FpbiBpbiBvbmUgY29tbW9uIGNvZGUuLi4KKyAqIHBsYW5zIGFyZSB0byBwb3NzaWJpbGl0eSB0dXJuIGl0IGFnYWluIGluIG9uZSBjb21tb24gY29kZS4uLgogICovCiBpbmxpbmUgdm9pZCBmb3JjZV9wY2lfcG9zdGluZyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogewpAQCAtMTM3OCw3ICsxMzc4LDcgQEAKIAkJLy90eF9hZ2dfZGVzYy0+TElOSVAgPSAwOwogCQkvL3R4X2FnZ19kZXNjLT5DbWRJbml0ID0gMTsKIAkJdHhfYWdnX2Rlc2MtPk9mZnNldCA9ICBzaXplb2YodHhfZndpbmZvXzgxOXhfdXNiKSArIDg7Ci0JCS8qIGFscmVhZHkgcmF3IGRhdGEsIG5lZWQgbm90IHRvIHN1YnN0cmFjdCBoZWFkZXIgbGVuZ3RoICovCisJCS8qIGFscmVhZHkgcmF3IGRhdGEsIG5lZWQgbm90IHRvIHN1YnRyYWN0IGhlYWRlciBsZW5ndGggKi8KIAkJdHhfYWdnX2Rlc2MtPlBrdFNpemUgPSBza2ItPmxlbiAmIDB4ZmZmZjsKIAogCQkvKkRXT1JEIDEqLwpAQCAtMjg4OCw3ICsyODg4LDcgQEAKIAlSVF9UUkFDRShDT01QX0VQUk9NLCAiPD09PT09PT09PT09JXMoKSwgZXByb210eXBlOiVkXG4iLCBfX0ZVTkNUSU9OX18sIHByaXYtPmVwcm9tdHlwZSk7CiB9CiAKLS8vdXNlZCB0byBzd2FwIGVuZGlhbi4gYXMgbnRvaGwgJiBodG9ubCBhcmUgbm90IG5lY2Nlc3NhcnkgdG8gc3dhcCBlbmRpYW4sIHNvIHVzZSB0aGlzIGluc3RlYWQuCisvL3VzZWQgdG8gc3dhcCBlbmRpYW4uIGFzIG50b2hsICYgaHRvbmwgYXJlIG5vdCBuZWNlc3NhcnkgdG8gc3dhcCBlbmRpYW4sIHNvIHVzZSB0aGlzIGluc3RlYWQuCiBzdGF0aWMgaW5saW5lIHUxNiBlbmRpYW5fc3dhcCh1MTYqIGRhdGEpCiB7CiAJdTE2IHRtcCA9ICpkYXRhOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9IVFR5cGUuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfSFRUeXBlLmgKaW5kZXggMDFmNThiOS4uMmFjNDIxNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9IVFR5cGUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX0hUVHlwZS5oCkBAIC02NSw3ICs2NSw3IEBACiB9SFRfQ0hBTk5FTF9XSURUSCwgKlBIVF9DSEFOTkVMX1dJRFRIOwogCiAvLwotLy8gUmVwcmVzZW50IEV4dGVudGlvbiBDaGFubmVsIE9mZnNldCBpbiBIVCBDYXBhYmlsaXRpZXMKKy8vIFJlcHJlc2VudCBFeHRlbnNpb24gQ2hhbm5lbCBPZmZzZXQgaW4gSFQgQ2FwYWJpbGl0aWVzCiAvLyBUaGlzIGlzIGF2YWlsYWJsZSBvbmx5IGluIDQwTWh6IG1vZGUuCiAvLwogdHlwZWRlZiBlbnVtIF9IVF9FWFRDSE5MX09GRlNFVHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfcGh5LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODE5MnUvcjgxOXhVX3BoeS5jCmluZGV4IDQxNjg0ZTguLmM0NTg2YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4MTkydS9yODE5eFVfcGh5LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDgxOTJ1L3I4MTl4VV9waHkuYwpAQCAtMTUzMSwxMyArMTUzMSwxMyBAQAogCXsKIAkJY2FzZSBIVF9DSEFOTkVMX1dJRFRIXzIwOgogCQkJcmVnQndPcE1vZGUgfD0gQldfT1BNT0RFXzIwTUhaOwotCQkgICAgICAgLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2FzdWUgd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcworCQkgICAgICAgLy8gMjAwNy8wMi8wNyBNYXJrIGJ5IEVtaWx5IGJlY2F1c2Ugd2UgaGF2ZSBub3QgdmVyaWZ5IHdoZXRoZXIgdGhpcyByZWdpc3RlciB3b3JrcwogCQkJd3JpdGVfbmljX2J5dGUoZGV2LCBCV19PUE1PREUsIHJlZ0J3T3BNb2RlKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgSFRfQ0hBTk5FTF9XSURUSF8yMF80MDoKIAkJCXJlZ0J3T3BNb2RlICY9IH5CV19PUE1PREVfMjBNSFo7Ci0JCQkvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXN1ZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCisJCQkvLyAyMDA3LzAyLzA3IE1hcmsgYnkgRW1pbHkgYmVjYXVzZSB3ZSBoYXZlIG5vdCB2ZXJpZnkgd2hldGhlciB0aGlzIHJlZ2lzdGVyIHdvcmtzCiAJCQl3cml0ZV9uaWNfYnl0ZShkZXYsIEJXX09QTU9ERSwgcmVnQndPcE1vZGUpOwogCQkJYnJlYWs7CiAKQEAgLTE2NDcsNyArMTY0Nyw3IEBACiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqZnVuY3Rpb246ICBUaGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBiYW5kd2l0aCBzd2l0Y2ggd29yay4KKyAqZnVuY3Rpb246ICBUaGlzIGZ1bmN0aW9uIHNjaGVkdWxlcyBiYW5kd2lkdGggc3dpdGNoIHdvcmsuCiAgKiAgIGlucHV0OiAgc3RydWN0IG5ldF9kZXZpY2UgKmRldgogICogICAJICAgICBIVF9DSEFOTkVMX1dJRFRICUJhbmR3aWR0aCAgLy8yME0gb3IgNDBNCiAgKiAgIAkgICAgIEhUX0VYVENITkxfT0ZGU0VUIE9mZnNldCAJICAgLy9VcHBlciwgTG93ZXIsIG9yIERvbid0IGNhcmUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfY21kLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2NtZC5oCmluZGV4IDNhOTQ1YjUuLjJkYzc4NDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfY21kLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9jbWQuaApAQCAtNjU2LDcgKzY1Niw3IEBACiAvKgogICogUmVzdWx0OgogICogMHgwMDogc3VjY2VzcwotICogMHgwMTogc3VjZXNzLCBhbmQgY2hlY2sgUmVzcG9uc2UuCisgKiAweDAxOiBzdWNjZXNzLCBhbmQgY2hlY2sgUmVzcG9uc2UuCiAgKiAweDAyOiBjbWQgaWdub3JlZCBkdWUgdG8gZHVwbGljYXRlZCBzZXF1Y25lIG51bWJlcgogICogMHgwMzogY21kIGRyb3BwZWQgZHVlIHRvIGludmFsaWQgY21kIGNvZGUKICAqIDB4MDQ6IHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9sZWQuaCBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbGVkLmgKaW5kZXggOTk0ZWY4Mi4uODA4NWU1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9sZWQuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X2xlZC5oCkBAIC03OCwxNCArNzgsMTQgQEAKIH07CiAKIHN0cnVjdCBsZWRfcHJpdiB7Ci0JLyogYWRkIGZvciBsZWQgY29udHJvbGwgKi8KKwkvKiBhZGQgZm9yIGxlZCBjb250cm9sICovCiAJc3RydWN0IExFRF84NzF4CQlTd0xlZDA7CiAJc3RydWN0IExFRF84NzF4CQlTd0xlZDE7CiAJZW51bSBMRURfU1RSQVRFR1lfODcxeAlMZWRTdHJhdGVneTsKIAl1OAkJCWJSZWdVc2VMZWQ7CiAJdm9pZCAoKkxlZENvbnRyb2xIYW5kbGVyKShzdHJ1Y3QgX2FkYXB0ZXIgKnBhZGFwdGVyLAogCQkJCSAgZW51bSBMRURfQ1RMX01PREUgTGVkQWN0aW9uKTsKLQkvKiBhZGQgZm9yIGxlZCBjb250cm9sbCAqLworCS8qIGFkZCBmb3IgbGVkIGNvbnRyb2wgKi8KIH07CiAKIC8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuYyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5jCmluZGV4IDk4YmE3NjAuLjg2NjU1NGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbWxtZS5jCkBAIC0xNjYzLDcgKzE2NjMsNyBAQAogCQkJICAgICAgKHN0cnVjdCBuZGlzX3dsYW5fYnNzaWRfZXggKilwZGV2X25ldHdvcmspOwogfQogCi0vKnRoZSBmdWNudGlvbiBpcyBhdCBwYXNzaXZlX2xldmVsKi8KKy8qdGhlIGZ1bmN0aW9uIGlzIGF0IHBhc3NpdmVfbGV2ZWwqLwogdm9pZCByODcxMl9qb2luYnNzX3Jlc2V0KHN0cnVjdCBfYWRhcHRlciAqcGFkYXB0ZXIpCiB7CiAJaW50IGk7CkBAIC0xNzI2LDcgKzE3MjYsNyBAQAogCXJldHVybiBwaHRwcml2LT5odF9vcHRpb247CiB9CiAKLS8qIHRoZSBmdWNudGlvbiBpcyA+IHBhc3NpdmVfbGV2ZWwgKGluIGNyaXRpY2FsX3NlY3Rpb24pICovCisvKiB0aGUgZnVuY3Rpb24gaXMgPiBwYXNzaXZlX2xldmVsIChpbiBjcml0aWNhbF9zZWN0aW9uKSAqLwogc3RhdGljIHZvaWQgdXBkYXRlX2h0X2NhcChzdHJ1Y3QgX2FkYXB0ZXIgKnBhZGFwdGVyLCB1OCAqcGllLCB1aW50IGllX2xlbikKIHsKIAl1OCAqcCwgbWF4X2FtcGR1X3N6OwpAQCAtMTgwMyw3ICsxODAzLDcgQEAKIAl9CiB9CiAKLS8qdGhlIGZ1Y250aW9uIGlzID49IHBhc3NpdmVfbGV2ZWwqLworLyp0aGUgZnVuY3Rpb24gaXMgPj0gcGFzc2l2ZV9sZXZlbCovCiB1bnNpZ25lZCBpbnQgcjg3MTJfYWRkX2h0X2FkZHRfaW5mbyhzdHJ1Y3QgX2FkYXB0ZXIgKnBhZGFwdGVyLAogCQkJICAgICAgdTggKmluX2llLCB1OCAqb3V0X2llLAogCQkJICAgICAgdWludCBpbl9sZW4sIHVpbnQgKnBvdXRfbGVuKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tbG1lLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuaAppbmRleCAyYjM1Yjc0Li4yNzk0ODA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi9ydGw4NzF4X21sbWUuaApAQCAtMjksNyArMjksNyBAQAogCQkJCQkJICogIHNpbmdsZS10b25lKi8KICNkZWZpbmUJV0lGSV9NUF9DVFhfQkFDS0dST1VORF9QRU5ESU5HCTB4MDAwODAwMDAgLyogcGVuZGluZyBpbiBjb250LCB0eAogCQkJCQkqIGJhY2tncm91bmQgZHVlIHRvIG91dCBvZiBza2IqLwotI2RlZmluZQlXSUZJX01QX0NUWF9DQ0tfSFcJMHgwMDEwMDAwMAkvKiBpbiBjb250aW5vdXMgdHgqLworI2RlZmluZQlXSUZJX01QX0NUWF9DQ0tfSFcJMHgwMDEwMDAwMAkvKiBpbiBjb250aW51b3VzIHR4Ki8KICNkZWZpbmUJV0lGSV9NUF9DVFhfQ0NLX0NTCTB4MDAyMDAwMDAJLyogaW4gY29udCwgdHggd2l0aCBjYXJyaWVyCiAJCQkJCQkgKiBzdXBwcmVzc2lvbiovCiAjZGVmaW5lICAgV0lGSV9NUF9MUEJLX1NUQVRFCTB4MDA0MDAwMDAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3J0bDg3MXhfbXBfcGh5X3JlZ2RlZi5oIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tcF9waHlfcmVnZGVmLmgKaW5kZXggZTM4NmZiMC4uMjM1MzJhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tcF9waHlfcmVnZGVmLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvcnRsODcxeF9tcF9waHlfcmVnZGVmLmgKQEAgLTM4LDcgKzM4LDcgQEAKICAqIDIuIDB4ODAwLzB4OTAwLzB4QTAwLzB4QzAwLzB4RDAwLzB4RTAwCiAgKiAzLiBSRiByZWdpc3RlciAweDAwLTJFCiAgKiA0LiBCaXQgTWFzayBmb3IgQkIvUkYgcmVnaXN0ZXIKLSAqIDUuIE90aGVyIGRlZmludGlvbiBmb3IgQkIvUkYgUi9XCisgKiA1LiBPdGhlciBkZWZpbml0aW9uIGZvciBCQi9SRiBSL1cKICAqCiAgKiAxLiBQTUFDIGR1cGxpY2F0ZSByZWdpc3RlciBkdWUgdG8gY29ubmVjdGlvbjogUkZfTW9kZSwgVFJ4Uk4sIE51bU9mIEwtU1RGCiAgKiAxLiBQYWdlMSgweDEwMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3VzYl9oYWxpbml0LmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRsODcxMi91c2JfaGFsaW5pdC5jCmluZGV4IDBlOTQ4M2IuLjQ2Mjg3YzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9ydGw4NzEyL3VzYl9oYWxpbml0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3J0bDg3MTIvdXNiX2hhbGluaXQuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAJCS8qIEluaXRpYWxpemF0aW9uIGZvciBwb3dlciBvbiBzZXF1ZW5jZSwgKi8KIAkJcjg3MTJfd3JpdGU4KHBhZGFwdGVyLCBTUFMwX0NUUkwgKyAxLCAweDUzKTsKIAkJcjg3MTJfd3JpdGU4KHBhZGFwdGVyLCBTUFMwX0NUUkwsIDB4NTcpOwotCQkvKiBFbmFibGUgQUZFIE1hY3JvIEJsb2NrJ3MgQmFuZGdhcCBhZG4gRW5hYmxlIEFGRSBNYWNybworCQkvKiBFbmFibGUgQUZFIE1hY3JvIEJsb2NrJ3MgQmFuZGdhcCBhbmQgRW5hYmxlIEFGRSBNYWNybwogCQkgKiBCbG9jaydzIE1iaWFzCiAJCSAqLwogCQl2YWw4ID0gcjg3MTJfcmVhZDgocGFkYXB0ZXIsIEFGRV9NSVNDKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9jaGlwLmggYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5oCmluZGV4IDcxM2M1ZWEuLjlmN2NkODJhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfY2hpcC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9jaGlwLmgKQEAgLTE4MCw4ICsxODAsOCBAQAogI2RlZmluZSBDVVJfRVJSICAgICAgICAgICAgICAgICAweDcwICAgIC8qIGN1cnJlbnQgZXJyb3IgICAgICAgICAgICAgICAgICAgICovCiAjZGVmaW5lIERFRl9FUlIgICAgICAgICAgICAgICAgIDB4NzEgICAgLyogc3BlY2lmaWMgY29tbWFuZCBlcnJvciAgICAgICAgICAgKi8KIAotLyotLS0tIHNlbnNlIGtleSBJbmZvbWF0aW9uIC0tLS0qLwotI2RlZmluZSBTTlNLRVlJTkZPX0xFTiAgICAgICAgICAzICAgICAgIC8qIGxlbmd0aCBvZiBzZW5zZSBrZXkgaW5mb21hdGlvbiAgICovCisvKi0tLS0gc2Vuc2Uga2V5IEluZm9ybWF0aW9uIC0tLS0qLworI2RlZmluZSBTTlNLRVlJTkZPX0xFTiAgICAgICAgICAzICAgICAgIC8qIGxlbmd0aCBvZiBzZW5zZSBrZXkgaW5mb3JtYXRpb24gICAqLwogCiAjZGVmaW5lIFNLU1YgICAgICAgICAgICAgICAgICAgIDB4ODAKICNkZWZpbmUgQ0RCX0lMTEVHQUwgICAgICAgICAgICAgMHg0MApAQCAtMjM1LDEzICsyMzUsMTMgQEAKICAgICB1bnNpZ25lZCBjaGFyICAgc2VnX25vOwkJLyogc2VnbWVudCBOby4gICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgc2Vuc2Vfa2V5OwkJLyogYnl0ZTUgOiBJTEkgICAgICAgICAgICAgICAgICAgICAgKi8KIAkJCQkJCS8qIGJpdDMtMCA6IHNlbnNlIGtleSAgICAgICAgICAgICAgKi8KLSAgICB1bnNpZ25lZCBjaGFyICAgaW5mb1s0XTsJCS8qIGluZm9tYXRpb24gICAgICAgICAgICAgICAgICAgICAgICovCisgICAgdW5zaWduZWQgY2hhciAgIGluZm9bNF07CQkvKiBpbmZvcm1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgYWRfc2Vuc2VfbGVuOwkvKiBhZGRpdGlvbmFsIHNlbnNlIGRhdGEgbGVuZ3RoICAgICAqLwotICAgIHVuc2lnbmVkIGNoYXIgICBjbWRfaW5mb1s0XTsJLyogY29tbWFuZCBzcGVjaWZpYyBpbmZvbWF0aW9uICAgICAgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgY21kX2luZm9bNF07CS8qIGNvbW1hbmQgc3BlY2lmaWMgaW5mb3JtYXRpb24gICAgICAqLwogICAgIHVuc2lnbmVkIGNoYXIgICBhc2M7CQkvKiBBU0MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogICAgIHVuc2lnbmVkIGNoYXIgICBhc2NxOwkJLyogQVNDUSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICB1bnNpZ25lZCBjaGFyICAgcmZ1OwkJLyogRlJVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICB1bnNpZ25lZCBjaGFyICAgc25zX2tleV9pbmZvWzNdOwkvKiBzZW5zZSBrZXkgc3BlY2lmaWMgaW5mb21hdGlvbiAgICAqLworICAgIHVuc2lnbmVkIGNoYXIgICBzbnNfa2V5X2luZm9bM107CS8qIHNlbnNlIGtleSBzcGVjaWZpYyBpbmZvcm1hdGlvbiAgICAqLwogfTsKIAogLyogUENJIE9wZXJhdGlvbiBSZWdpc3RlciBBZGRyZXNzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfc2NzaS5oIGIvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9ydHN4X3Njc2kuaAppbmRleCBmYWMxMjJjLi42NGI4NDk5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3J0c3hfc2NzaS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3IvcnRzeF9zY3NpLmgKQEAgLTg1LDcgKzg1LDcgQEAKICNkZWZpbmUgQ0hJUF9OT1JNQUxNT0RFCQkweDAwCiAjZGVmaW5lIENISVBfREVCVUdNT0RFCQkweDAxCiAKLS8qIFNEIFBhc3MgVGhyb3VnaCBDb21tYW5kIEV4dGVudGlvbiAqLworLyogU0QgUGFzcyBUaHJvdWdoIENvbW1hbmQgRXh0ZW5zaW9uICovCiAjZGVmaW5lIFNEX1BBU1NfVEhSVV9NT0RFCTB4RDAKICNkZWZpbmUgU0RfRVhFQ1VURV9OT19EQVRBCTB4RDEKICNkZWZpbmUgU0RfRVhFQ1VURV9SRUFECQkweEQyCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3NkLmMgYi9kcml2ZXJzL3N0YWdpbmcvcnRzX3BzdG9yL3NkLmMKaW5kZXggMjFiZmE1Ny4uOGQwNjZiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3J0c19wc3Rvci9zZC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9ydHNfcHN0b3Ivc2QuYwpAQCAtMTcxOSw3ICsxNzE5LDcgQEAKIAl9CiAKIFNlYXJjaF9GaW5pc2g6Ci0JUlRTWF9ERUJVR1AoIkZpbmFsIGNob29zZW4gcGhhc2U6ICVkXG4iLCBmaW5hbF9waGFzZSk7CisJUlRTWF9ERUJVR1AoIkZpbmFsIGNob3NlbiBwaGFzZTogJWRcbiIsIGZpbmFsX3BoYXNlKTsKIAlyZXR1cm4gZmluYWxfcGhhc2U7CiB9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlci5jIGIvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyLmMKaW5kZXggNzFhNWZiYy4uYzJmMjY2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyLmMKQEAgLTU4Niw3ICs1ODYsNyBAQAogCWRldl9kYmcoJnNlcC0+cGRldi0+ZGV2LCAicG9sbDogc2VuZF9jdCBpcyAlbHggcmVwbHkgY3QgaXMgJWx4XG4iLAogCQlzZXAtPnNlbmRfY3QsIHNlcC0+cmVwbHlfY3QpOwogCi0JLyogQ2hlY2sgaWYgZXJyb3Igb2NjdXJlZCBkdXJpbmcgcG9sbCAqLworCS8qIENoZWNrIGlmIGVycm9yIG9jY3VycmVkIGR1cmluZyBwb2xsICovCiAJcmV0dmFsMiA9IHNlcF9yZWFkX3JlZyhzZXAsIEhXX0hPU1RfU0VQX0hPU1RfR1BSM19SRUdfQUREUik7CiAJaWYgKHJldHZhbDIgIT0gMHgwKSB7CiAJCWRldl93YXJuKCZzZXAtPnBkZXYtPmRldiwgInBvbGw7IHBvbGwgZXJyb3IgJXhcbiIsIHJldHZhbDIpOwpAQCAtMTEwNiw3ICsxMTA2LDcgQEAKIAkJCWxsaV9hcnJheVtjb3VudF0uYmxvY2tfc2l6ZSk7CiAJfQogCi0JLyogU2V0IG91dHB1dCBwYXJhbXMgYWNvcmRpbmcgdG8gdGhlIGluX291dCBmbGFnICovCisJLyogU2V0IG91dHB1dCBwYXJhbXMgYWNjb3JkaW5nIHRvIHRoZSBpbl9vdXQgZmxhZyAqLwogCWlmIChpbl9vdXRfZmxhZyA9PSBTRVBfRFJJVkVSX0lOX0ZMQUcpIHsKIAkJKmxsaV9hcnJheV9wdHIgPSBsbGlfYXJyYXk7CiAJCXNlcC0+ZG1hX3Jlc19hcnJbc2VwLT5ucl9kY2JfY3JlYXRdLmluX251bV9wYWdlcyA9IG51bV9wYWdlczsKQEAgLTE1NzcsNyArMTU3Nyw3IEBACiAKIAkJLyoKIAkJICogSWYgdGhpcyBpcyBub3QgdGhlIGxhc3QgdGFibGUgLQotCQkgKiB0aGVuIGFsbGlnbiBpdCB0byB0aGUgYmxvY2sgc2l6ZQorCQkgKiB0aGVuIGFsaWduIGl0IHRvIHRoZSBibG9jayBzaXplCiAJCSAqLwogCQlpZiAoIWxhc3RfdGFibGVfZmxhZykKIAkJCXRhYmxlX2RhdGFfc2l6ZSA9CkBAIC0xOTc0LDcgKzE5NzQsNyBAQAogCWRldl9kYmcoJnNlcC0+cGRldi0+ZGV2LCAiU0VQX0RSSVZFUl9FTlRSSUVTX1BFUl9UQUJMRV9JTl9TRVAgaXMgJXhcbiIsCiAJCVNFUF9EUklWRVJfRU5UUklFU19QRVJfVEFCTEVfSU5fU0VQKTsKIAotCS8qIENhbGwgdGhlIGZ1Y250aW9uIHRoYXQgY3JlYXRlcyB0YWJsZSBmcm9tIHRoZSBsbGkgYXJyYXlzICovCisJLyogQ2FsbCB0aGUgZnVuY3Rpb24gdGhhdCBjcmVhdGVzIHRhYmxlIGZyb20gdGhlIGxsaSBhcnJheXMgKi8KIAllcnJvciA9IHNlcF9jb25zdHJ1Y3RfZG1hX3RhYmxlc19mcm9tX2xsaShzZXAsIGxsaV9pbl9hcnJheSwKIAkJc2VwLT5kbWFfcmVzX2FycltzZXAtPm5yX2RjYl9jcmVhdF0uaW5fbnVtX3BhZ2VzLAogCQlsbGlfb3V0X2FycmF5LApAQCAtMjQxNiw3ICsyNDE2LDcgQEAKICAqCUBjbWQ6IGNvbW1hbmQKICAqCUBhcmc6IHBvaW50ZXIgdG8gYXJndW1lbnQgc3RydWN0dXJlCiAgKgotICoJSW1wbGVtZW50IHRoZSBpb2N0bCBtZXRob2RzIGF2YWlsYmxlIG9uIHRoZSBTRVAgZGV2aWNlLgorICoJSW1wbGVtZW50IHRoZSBpb2N0bCBtZXRob2RzIGF2YWlsYWJsZSBvbiB0aGUgU0VQIGRldmljZS4KICAqLwogc3RhdGljIGxvbmcgc2VwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBsb25nIGFyZykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlcl9jb25maWcuaCBiL2RyaXZlcnMvc3RhZ2luZy9zZXAvc2VwX2RyaXZlcl9jb25maWcuaAppbmRleCBkM2I5MjIwLi4xMDMzNDI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc2VwL3NlcF9kcml2ZXJfY29uZmlnLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NlcC9zZXBfZHJpdmVyX2NvbmZpZy5oCkBAIC02NSwxMSArNjUsMTEgQEAKICNkZWZpbmUgU0VQX0RSSVZFUl9NSU5fREFUQV9TSVpFX1BFUl9UQUJMRQkJMTYKIAogLyogZmxhZyB0aGF0IHNpZ25pZmllcyB0YWggdGhlIGxvY2sgaXMKLWN1cnJlbnRseSBoZWxkIGJ5IHRoZSBwcm9jY2VzcyAoc3RydWN0IGZpbGUpICovCitjdXJyZW50bHkgaGVsZCBieSB0aGUgcHJvY2VzcyAoc3RydWN0IGZpbGUpICovCiAjZGVmaW5lIFNFUF9EUklWRVJfT1dOX0xPQ0tfRkxBRyAgICAgICAgICAgICAgICAgICAgICAgIDEKIAogLyogZmxhZyB0aGF0IHNpZ25pZmllcyB0YWggdGhlIGxvY2sgaXMgY3VycmVudGx5IE5PVAotaGVsZCBieSB0aGUgcHJvY2Nlc3MgKHN0cnVjdCBmaWxlKSAqLworaGVsZCBieSB0aGUgcHJvY2VzcyAoc3RydWN0IGZpbGUpICovCiAjZGVmaW5lIFNFUF9EUklWRVJfRElTT1dOX0xPQ0tfRkxBRyAgICAgICAgICAgICAgICAgICAgIDAKIAogLyogaW5kaWNhdGVzIHdoZXRoZXIgZHJpdmVyIGhhcyBtYXBwZWQvdW5tYXBwZWQgc2hhcmVkIGFyZWEgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL1JFQURNRSBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL1JFQURNRQppbmRleCA3MGY0OTA5OS4uYjgzYmJhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NsaWNvc3MvUkVBRE1FCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbGljb3NzL1JFQURNRQpAQCAtMzMsNyArMzMsNyBAQAogCS0gTkFQST8KIAktIHdhc3RlZCBvdmVyaGVhZCBvZiBleHRyYSBzdGF0cwogCS0gc3RhdGUgdmFyaWFibGVzIGZvciB0aGluZ3MgdGhhdCBhcmUKLQkgIGVhc2lseSBhdmFpbGJsZSBhbmQgc2hvdWxkbid0IGJlIGtlcHQgaW4gY2FyZCBzdHJ1Y3R1cmUsIGNhcmRudW0sIC4uLgorCSAgZWFzaWx5IGF2YWlsYWJsZSBhbmQgc2hvdWxkbid0IGJlIGtlcHQgaW4gY2FyZCBzdHJ1Y3R1cmUsIGNhcmRudW0sIC4uLgogCSAgc2xvdG51bWJlciwgZXZlbnRzLCAuLi4KIAktIGdldCByaWQgb2Ygc2xpY19zcGlubG9jayB3cmFwcGVyCiAJLSB2b2xhdGlsZSA9PSBiYWQgZGVzaWduID0+IGJhZCBjb2RlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc203eHgvc210Y2ZiLmMgYi9kcml2ZXJzL3N0YWdpbmcvc203eHgvc210Y2ZiLmMKaW5kZXggZDAwN2U0YS4uNzhhMTZhNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NtN3h4L3NtdGNmYi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zbTd4eC9zbXRjZmIuYwpAQCAtOTY1LDcgKzk2NSw3IEBACiAJCWdvdG8gZmFpbGVkOwogCiAJc210Y2ZiX3NldG1vZGUoc2ZiKTsKLQkvKiBQcmltYXJ5IGRpc3BsYXkgc3RhcnRpbmcgZnJvbSAwIHBvc3Rpb24gKi8KKwkvKiBQcmltYXJ5IGRpc3BsYXkgc3RhcnRpbmcgZnJvbSAwIHBvc2l0aW9uICovCiAJaHcuQmFzZUFkZHJlc3NJblZSQU0gPSAwOwogCXNmYi0+ZmIucGFyID0gJmh3OwogCkBAIC0xMDU1LDcgKzEwNTUsNyBAQAogCiAJcGRldi0+ZGV2LnBvd2VyLnBvd2VyX3N0YXRlID0gbXNnOwogCi0JLyogYWRkaXRpb25hbHkgdHVybiBvZmYgYWxsIGZ1bmN0aW9uIGJsb2NrcyBpbmNsdWRpbmcgaW50ZXJuYWwgUExMcyAqLworCS8qIGFkZGl0aW9uYWxseSB0dXJuIG9mZiBhbGwgZnVuY3Rpb24gYmxvY2tzIGluY2x1ZGluZyBpbnRlcm5hbCBQTExzICovCiAJc210Y19zZXF3KDB4MjEsIDB4ZmYpOwogCiAJcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9rZXloZWxwLmMgYi9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9rZXloZWxwLmMKaW5kZXggMjNjZjdmNC4uMTcwZjM4OCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAva2V5aGVscC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL2tleWhlbHAuYwpAQCAtNjksNyArNjksNyBAQAogCW1lbXNldChrZXlfb2Zmc2V0cywgMCwgc2l6ZW9mKGtleV9vZmZzZXRzKSk7CiAJa3AgPSBzdGF0ZV90YmwgKyBuc3RhdGVzICsgMTsKIAl3aGlsZSAoKmtwKyspIHsKLQkJLyogY291bnQgb2NjdXJyYW5jZXMgb2YgZWFjaCBmdW5jdGlvbiAqLworCQkvKiBjb3VudCBvY2N1cnJlbmNlcyBvZiBlYWNoIGZ1bmN0aW9uICovCiAJCWZvciAoaSA9IDA7IGkgPCBuc3RhdGVzOyBpKyssIGtwKyspIHsKIAkJCWlmICghKmtwKQogCQkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAvc3BrZ3VpZGUudHh0IGIvZHJpdmVycy9zdGFnaW5nL3NwZWFrdXAvc3BrZ3VpZGUudHh0CmluZGV4IDI0MzYyZWIuLmYzMjEwNTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zcGVha3VwL3Nwa2d1aWRlLnR4dAorKysgYi9kcml2ZXJzL3N0YWdpbmcvc3BlYWt1cC9zcGtndWlkZS50eHQKQEAgLTEwOTEsNyArMTA5MSw3IEBACiAKIFRoZXJlIGlzIG5vIHdheSB0byBzYXZlIHRoZXNlIHdpbmRvdyBzZXR0aW5ncywgYW5kIHlvdSBjYW4gb25seSBoYXZlIG9uZQogd2luZG93IGRlZmluZWQgZm9yIGVhY2ggdmlydHVhbCBjb25zb2xlLiAgVGhlcmUgaXMgYWxzbyBubyB3YXkgdG8gaGF2ZQotd2luZG93cyBhdXRvbWF0aWNseSBkZWZpbmVkIGZvciBzcGVjaWZpYyBhcHBsaWNhdGlvbnMuCit3aW5kb3dzIGF1dG9tYXRpY2FsbHkgZGVmaW5lZCBmb3Igc3BlY2lmaWMgYXBwbGljYXRpb25zLgogCiBJbiBvcmRlciB0byBkZWZpbmUgYSB3aW5kb3csIHVzZSB0aGUgcmV2aWV3IGtleXMgdG8gbW92ZSB5b3VyIHJlYWRpbmcKIGN1cnNvciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhcmVhIHlvdSB3YW50IHRvIGRlZmluZS4gIFRoZW4gcHJlc3MKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2Zmc3BvcnQuYyBiL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2Zmc3BvcnQuYwppbmRleCAwMDdiMjRiLi4yMGRhZTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mZnNwb3J0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmZzcG9ydC5jCkBAIC0zOCw3ICszOCw3IEBACiAqIE91dHB1dHM6ICAgICAgTnVtYmVyIG9mIFVzZWQgQml0cwogKiAgICAgICAgICAgICAgIDAsIGlmIHRoZSBhcmd1bWVudCBpcyAwCiAqIERlc2NyaXB0aW9uOiAgQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIGJ5IGEgZ2l2ZW4gcG93ZXIgb2YgMiBudW1iZXIKLSogICAgICAgICAgICAgICBOdW1iZXIgY2FuIGJlIHVwdG8gMzIgYml0CisqICAgICAgICAgICAgICAgTnVtYmVyIGNhbiBiZSB1cCB0byAzMiBiaXQKIComJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiovCiBpbnQgR0xPQl9DYWxjX1VzZWRfQml0cyh1MzIgbikKIHsKQEAgLTY1Myw3ICs2NTMsNyBAQAogCX0KIAlkZXYtPnF1ZXVlLT5xdWV1ZWRhdGEgPSBkZXY7CiAKLQkvKiBBcyBMaW51eCBibG9jayBsYXllciBkb2Vucyd0IHN1cHBvcnQgPjRLQiBoYXJkd2FyZSBzZWN0b3IsICAqLworCS8qIEFzIExpbnV4IGJsb2NrIGxheWVyIGRvZXMndCBzdXBwb3J0ID40S0IgaGFyZHdhcmUgc2VjdG9yLCAgKi8KIAkvKiBIZXJlIHdlIGZvcmNlIHJlcG9ydCA1MTIgYnl0ZSBoYXJkd2FyZSBzZWN0b3Igc2l6ZSB0byBLZXJuZWwgKi8KIAlibGtfcXVldWVfbG9naWNhbF9ibG9ja19zaXplKGRldi0+cXVldWUsIDUxMik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2ZsYXNoLmMgYi9kcml2ZXJzL3N0YWdpbmcvc3BlY3RyYS9mbGFzaC5jCmluZGV4IGEyZjgyMDAuLmFlYWQzNTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy9zcGVjdHJhL2ZsYXNoLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3NwZWN0cmEvZmxhc2guYwpAQCAtOTY1LDcgKzk2NSw3IEBACiAJaWYgKDAgPT0gKmZpcnN0X2ZhaWxlZF9jbWQpCiAJCSpmaXJzdF9mYWlsZWRfY21kID0gUGVuZGluZ0NNRFtpZHhdLlNCRENtZEluZGV4OwogCi0JbmFuZF9kYmdfcHJpbnQoTkFORF9EQkdfREVCVUcsICJVbmNvcnJlY3RhYmxlIGVycm9yIGhhcyBvY2N1cmVkICIKKwluYW5kX2RiZ19wcmludChOQU5EX0RCR19ERUJVRywgIlVuY29ycmVjdGFibGUgZXJyb3IgaGFzIG9jY3VycmVkICIKIAkJIndoaWxlIGV4ZWN1dGluZyAldSBDb21tYW5kICV1IGFjY2VzaW5nIEJsb2NrICV1XG4iLAogCQkodW5zaWduZWQgaW50KXBfQlRhYmxlQ2hhbmdlc0RlbHRhLT5mdGxfY21kX2NudCwKIAkJUGVuZGluZ0NNRFtpZHhdLkNNRCwKQEAgLTE4NzksNyArMTg3OSw3IEBACiB9CiAKIC8qCi0gKiBTZWFjaCBpbiB0aGUgTGV2ZWwyIENhY2hlIHRhYmxlIHRvIGZpbmQgdGhlIGNhY2hlIGl0ZW0uCisgKiBTZWFyY2ggaW4gdGhlIExldmVsMiBDYWNoZSB0YWJsZSB0byBmaW5kIHRoZSBjYWNoZSBpdGVtLgogICogSWYgZmluZCwgcmVhZCB0aGUgZGF0YSBmcm9tIHRoZSBOQU5EIHBhZ2Ugb2YgTDIgQ2FjaGUsCiAgKiBPdGhlcndpc2UsIHJldHVybiBGQUlMLgogICovCkBAIC0zOTg5LDcgKzM5ODksNyBAQAogKiBJbnB1dHM6ICAgICAgIGluZGV4IHRvIGJsb2NrIHRoYXQgd2FzIGp1c3QgaW5jcmVtZW50ZWQgYW5kIGlzIGF0IHRoZSBtYXgKICogT3V0cHV0czogICAgICBQQVNTPTAgLyBGQUlMPTEKICogRGVzY3JpcHRpb246ICBJZiBhbnkgZXJhc2UgY291bnRzIGF0IE1BWCwgYWRqdXN0cyBlcmFzZSBjb3VudCBvZiBldmVyeQotKiAgICAgICAgICAgICAgIGJsb2NrIGJ5IHN1YnN0cmFjdGluZyBsZWFzdCB3b3JuCisqICAgICAgICAgICAgICAgYmxvY2sgYnkgc3VidHJhY3RpbmcgbGVhc3Qgd29ybgogKiAgICAgICAgICAgICAgIGNvdW50ZXIgZnJvbSBjb3VudGVyIHZhbHVlIG9mIGV2ZXJ5IGVudHJ5IGluIHdlYXIgdGFibGUKIComJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiovCiBzdGF0aWMgaW50IEZUTF9BZGp1c3RfUmVsYXRpdmVfRXJhc2VfQ291bnQodTMyIEluZGV4X29mX01BWCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy9zdGVfcm1pNC9zeW5hcHRpY3NfaTJjX3JtaTQuYyBiL2RyaXZlcnMvc3RhZ2luZy9zdGVfcm1pNC9zeW5hcHRpY3NfaTJjX3JtaTQuYwppbmRleCBkNTVhOGU0Li4zZTY4ZDU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvc3RlX3JtaTQvc3luYXB0aWNzX2kyY19ybWk0LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3N0ZV9ybWk0L3N5bmFwdGljc19pMmNfcm1pNC5jCkBAIC03MSw3ICs3MSw3IEBACiAjZGVmaW5lIFNZTkFQVElDU19STUk0X0RFVklDRV9DT05UUk9MX0ZVTkNfTlVNCSgweDAxKQogCiAvKioKLSAqIHN0cnVjdCBzeW5hcHRpY3Nfcm1pNF9mbl9kZXNjIC0gY29udGFpbnMgdGhlIGZ1bnRpb24gZGVzY3JpcHRvciBpbmZvcm1hdGlvbgorICogc3RydWN0IHN5bmFwdGljc19ybWk0X2ZuX2Rlc2MgLSBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVzY3JpcHRvciBpbmZvcm1hdGlvbgogICogQHF1ZXJ5X2Jhc2VfYWRkcjogYmFzZSBhZGRyZXNzIGZvciBxdWVyeQogICogQGNtZF9iYXNlX2FkZHI6IGJhc2UgYWRkcmVzcyBmb3IgY29tbWFuZAogICogQGN0cmxfYmFzZV9hZGRyOiBiYXNlIGFkZHJlc3MgZm9yIGNvbnRyb2wKQEAgLTkyLDcgKzkyLDcgQEAKIH07CiAKIC8qKgotICogc3RydWN0IHN5bmFwdGljc19ybWk0X2ZuIC0gY29udGFpbnMgdGhlIGZ1bnRpb24gaW5mb3JtYXRpb24KKyAqIHN0cnVjdCBzeW5hcHRpY3Nfcm1pNF9mbiAtIGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBpbmZvcm1hdGlvbgogICogQGZuX251bWJlcjogZnVuY3Rpb24gbnVtYmVyCiAgKiBAbnVtX29mX2RhdGFfc291cmNlczogbnVtYmVyIG9mIGRhdGEgc291cmNlcwogICogQG51bV9vZl9kYXRhX3BvaW50czogbnVtYmVyIG9mIGZpbmdlcnMgdG91Y2hlZApAQCAtMTUxLDcgKzE1MSw3IEBACiAgKiBAaW5wdXRfZGV2OiBwb2ludGVyIGZvciBpbnB1dCBkZXZpY2UKICAqIEBpMmNfY2xpZW50OiBwb2ludGVyIGZvciBpMmMgY2xpZW50CiAgKiBAYm9hcmQ6IGNvbnN0YW50IHBvaW50ZXIgZm9yIHRvdWNoIHBsYXRmb3JtIGRhdGEKLSAqIEBmbl9saXN0X211dGV4OiBtdXRleCBmb3IgZnVudGlvbiBsaXN0CisgKiBAZm5fbGlzdF9tdXRleDogbXV0ZXggZm9yIGZ1bmN0aW9uIGxpc3QKICAqIEBybWk0X3BhZ2VfbXV0ZXg6IG11dGV4IGZvciBybWk0IHBhZ2UKICAqIEBjdXJyZW50X3BhZ2U6IHZhcmlhYmxlIGZvciBpbnRlZ2VyCiAgKiBAbnVtYmVyX29mX2ludGVycnVwdF9yZWdpc3RlcjogaW50ZXJydXB0IHJlZ2lzdGVycyBjb3VudApAQCAtMjc4LDcgKzI3OCw3IEBACiAJdHhidWZbMF0JPSBhZGRyZXNzICYgTUFTS184QklUOwogCXR4YnVmWzFdCT0gZGF0YTsKIAlyZXR2YWwJCT0gaTJjX21hc3Rlcl9zZW5kKHBkYXRhLT5pMmNfY2xpZW50LCB0eGJ1ZiwgMik7Ci0JLyogQWRkIGluIHJldHJ5IG9uIHdyaXRlcyBvbmx5IGluIGNlcnRpYW4gZXJyb3IgcmV0dXJuIHZhbHVlcyAqLworCS8qIEFkZCBpbiByZXRyeSBvbiB3cml0ZXMgb25seSBpbiBjZXJ0YWluIGVycm9yIHJldHVybiB2YWx1ZXMgKi8KIAlpZiAocmV0dmFsICE9IDIpIHsKIAkJZGV2X2VycigmaTJjLT5kZXYsICIlczpmYWlsZWQ6JWRcbiIsIF9fZnVuY19fLCByZXR2YWwpOwogCQlyZXR2YWwgPSAtRUlPOwpAQCAtNTYxLDcgKzU2MSw3IEBACiAJfQogCS8qCiAJICogMkQgZGF0YSBzb3VyY2VzIGhhdmUgb25seSAzIGJpdHMgZm9yIHRoZSBudW1iZXIgb2YgZmluZ2VycwotCSAqIHN1cHBvcnRlZCAtIHNvIHRoZSBlbmNvZGluZyBpcyBhIGJpdCB3aWVyZC4KKwkgKiBzdXBwb3J0ZWQgLSBzbyB0aGUgZW5jb2RpbmcgaXMgYSBiaXQgd2VpcmQuCiAJICovCiAJaWYgKChxdWVyaWVzWzFdICYgTUFTS18zQklUKSA8PSA0KQogCQkvKiBhZGQgMSBzaW5jZSB6ZXJvIGJhc2VkICovCkBAIC0xMDI3LDcgKzEwMjcsNyBAQAogICogc3luYXB0aWNzX3JtaTRfcmVtb3ZlKCkgLSBSZW1vdmVzIHRoZSBpMmMtY2xpZW50IHRvdWNoc2NyZWVuIGRyaXZlcgogICogQGNsaWVudDogaTJjIGNsaWVudCBzdHJ1Y3R1cmUgcG9pbnRlcgogICoKLSAqIFRoaXMgZnVudGlvbiB1c2VzIHRvIHJlbW92ZSB0aGUgaTJjLWNsaWVudAorICogVGhpcyBmdW5jdGlvbiB1c2VzIHRvIHJlbW92ZSB0aGUgaTJjLWNsaWVudAogICogdG91Y2hzY3JlZW4gZHJpdmVyIGFuZCByZXR1cm5zIGludGVnZXIuCiAgKi8KIHN0YXRpYyBpbnQgX19kZXZleGl0IHN5bmFwdGljc19ybWk0X3JlbW92ZShzdHJ1Y3QgaTJjX2NsaWVudCAqY2xpZW50KQpAQCAtMTA1Myw3ICsxMDUzLDcgQEAKICAqIHN5bmFwdGljc19ybWk0X3N1c3BlbmQoKSAtIHN1c3BlbmQgdGhlIHRvdWNoIHNjcmVlbiBjb250cm9sbGVyCiAgKiBAZGV2OiBwb2ludGVyIHRvIGRldmljZSBzdHJ1Y3R1cmUKICAqCi0gKiBUaGlzIGZ1bnRpb24gaXMgdXNlZCB0byBzdXNwZW5kIHRoZQorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIHN1c3BlbmQgdGhlCiAgKiB0b3VjaCBwYW5lbCBjb250cm9sbGVyIGFuZCByZXR1cm5zIGludGVnZXIKICAqLwogc3RhdGljIGludCBzeW5hcHRpY3Nfcm1pNF9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikKQEAgLTEwODksNyArMTA4OSw3IEBACiAgKiBzeW5hcHRpY3Nfcm1pNF9yZXN1bWUoKSAtIHJlc3VtZSB0aGUgdG91Y2ggc2NyZWVuIGNvbnRyb2xsZXIKICAqIEBkZXY6IHBvaW50ZXIgdG8gZGV2aWNlIHN0cnVjdHVyZQogICoKLSAqIFRoaXMgZnVudGlvbiBpcyB1c2VkIHRvIHJlc3VtZSB0aGUgdG91Y2ggcGFuZWwKKyAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByZXN1bWUgdGhlIHRvdWNoIHBhbmVsCiAgKiBjb250cm9sbGVyIGFuZCByZXR1cm5zIGludGVnZXIuCiAgKi8KIHN0YXRpYyBpbnQgc3luYXB0aWNzX3JtaTRfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKQEAgLTExNDgsNyArMTE0OCw3IEBACiAvKioKICAqIHN5bmFwdGljc19ybWk0X2luaXQoKSAtIEluaXRpYWxpemUgdGhlIHRvdWNoc2NyZWVuIGRyaXZlcgogICoKLSAqIFRoaXMgZnVudGlvbiB1c2VzIHRvIGluaXRpYWxpemVzIHRoZSBzeW5hcHRpY3MKKyAqIFRoaXMgZnVuY3Rpb24gdXNlcyB0byBpbml0aWFsaXplcyB0aGUgc3luYXB0aWNzCiAgKiB0b3VjaHNjcmVlbiBkcml2ZXIgYW5kIHJldHVybnMgaW50ZWdlci4KICAqLwogc3RhdGljIGludCBfX2luaXQgc3luYXB0aWNzX3JtaTRfaW5pdCh2b2lkKQpAQCAtMTE1OCw3ICsxMTU4LDcgQEAKIC8qKgogICogc3luYXB0aWNzX3JtaTRfZXhpdCgpIC0gRGUtaW5pdGlhbGl6ZSB0aGUgdG91Y2hzY3JlZW4gZHJpdmVyCiAgKgotICogVGhpcyBmdW50aW9uIHVzZXMgdG8gZGUtaW5pdGlhbGl6ZSB0aGUgc3luYXB0aWNzCisgKiBUaGlzIGZ1bmN0aW9uIHVzZXMgdG8gZGUtaW5pdGlhbGl6ZSB0aGUgc3luYXB0aWNzCiAgKiB0b3VjaHNjcmVlbiBkcml2ZXIgYW5kIHJldHVybnMgbm9uZS4KICAqLwogc3RhdGljIHZvaWQgX19leGl0IHN5bmFwdGljc19ybWk0X2V4aXQodm9pZCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL190aW9tYXAuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL190aW9tYXAuaAppbmRleCAxZTAyNzNlLi43Y2I1ODcxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9fdGlvbWFwLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvX3Rpb21hcC5oCkBAIC0zNjYsNyArMzY2LDcgQEAKICAqICA9PT09PT09PSBzbV9pbnRlcnJ1cHRfZHNwID09PT09PT09CiAgKiAgUHVycG9zZToKICAqICAgICAgU2V0IGludGVycnVwdCB2YWx1ZSAmIHNlbmQgYW4gaW50ZXJydXB0IHRvIHRoZSBEU1AgcHJvY2Vzc29yKHMpLgotICogICAgICBUaGlzIGlzIHR5cGljYWx5IHVzZWQgd2hlbiBtYWlsYm94IGludGVycnVwdCBtZWNoYW5pc21zIGFsbG93IGRhdGEKKyAqICAgICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB3aGVuIG1haWxib3ggaW50ZXJydXB0IG1lY2hhbmlzbXMgYWxsb3cgZGF0YQogICogICAgICB0byBiZSBhc3NvY2lhdGVkIHdpdGggaW50ZXJydXB0IHN1Y2ggYXMgZm9yIE9NQVAncyBDTUQvREFUQSByZWdzLgogICogIFBhcmFtZXRlcnM6CiAgKiAgICAgIGRldl9jb250ZXh0OiAgICBIYW5kbGUgdG8gQnJpZGdlIGRyaXZlciBkZWZpbmVkIGRldmljZSBpbmZvLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvY2hubF9zbS5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2NvcmUvY2hubF9zbS5jCmluZGV4IDgzODExMzAuLjZkNjZlN2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9jb3JlL2Nobmxfc20uYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvY29yZS9jaG5sX3NtLmMKQEAgLTU3OCw3ICs1NzgsNyBAQAogCQl9IGVsc2UgaWYgKHN0YXRfc3luYyA9PSAtRVBFUk0pIHsKIAkJCS8qIFRoaXMgY2FuIG9jY3VyIHdoZW4gdGhlIHVzZXIgbW9kZSB0aHJlYWQgaXMKIAkJCSAqIGFib3J0ZWQgKF5DKSwgb3Igd2hlbiBfVldJTjMyX1dhaXRTaW5nbGVPYmplY3QoKQotCQkJICogZmFpbHMgZHVlIHRvIHVua293biBjYXVzZXMuICovCisJCQkgKiBmYWlscyBkdWUgdG8gdW5rbm93biBjYXVzZXMuICovCiAJCQkvKiBFdmVuIHRob3VnaCBXYWl0IGZhaWxlZCwgdGhlcmUgbWF5IGJlIHNvbWV0aGluZyBpbgogCQkJICogdGhlIFE6ICovCiAJCQlpZiAobGlzdF9lbXB0eSgmcGNobmwtPmlvX2NvbXBsZXRpb25zKSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2R5bmxvYWQvY2xvYWQuYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9keW5sb2FkL2Nsb2FkLmMKaW5kZXggMzkwMDQwOS4uNWNlY2QyMzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9keW5sb2FkL2Nsb2FkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2R5bmxvYWQvY2xvYWQuYwpAQCAtNzE4LDcgKzcxOCw3IEBACiAJICogYXMgYSB0ZW1wb3JhcnkgZm9yIC5kbGx2aWV3IHJlY29yZCBjb25zdHJ1Y3Rpb24uCiAJICogQWxsb2NhdGUgc3RvcmFnZSBmb3IgdGhlIHdob2xlIHRhYmxlLiAgQWRkIDEgdG8gdGhlIHNlY3Rpb24gY291bnQKIAkgKiBpbiBjYXNlIGEgdHJhbXBvbGluZSBzZWN0aW9uIGlzIGF1dG8tZ2VuZXJhdGVkIGFzIHdlbGwgYXMgdGhlCi0JICogc2l6ZSBvZiB0aGUgdHJhbXBvbGluZSBzZWN0aW9uIG5hbWUgc28gRExMVmlldyBkb2Vucyd0IGdldCBsb3N0LgorCSAqIHNpemUgb2YgdGhlIHRyYW1wb2xpbmUgc2VjdGlvbiBuYW1lIHNvIERMTFZpZXcgZG9lcyd0IGdldCBsb3N0LgogCSAqLwogCiAJc2l6ID0gc3ltX2NvdW50ICogc2l6ZW9mKHN0cnVjdCBsb2NhbF9zeW1ib2wpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2h3L2h3X21tdS5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2h3L2h3X21tdS5jCmluZGV4IDAxNGY1ZDUuLmMyMTRkZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ody9od19tbXUuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaHcvaHdfbW11LmMKQEAgLTU5LDcgKzU5LDcgQEAKICAqIFJFVFVSTlM6CiAgKgogICogICAgICAgVHlwZQkJOiBod19zdGF0dXMKLSAqICAgICAgIERlc2NyaXB0aW9uICAgICA6IDAJCSAtLSBObyBlcnJvcnMgb2NjdXJlZAorICogICAgICAgRGVzY3JpcHRpb24gICAgIDogMAkJIC0tIE5vIGVycm9ycyBvY2N1cnJlZAogICoJCQkgUkVUX0JBRF9OVUxMX1BBUkFNICAgICAtLSBBIFBvaW50ZXIKICAqCQkJCQkJUGFyYW1hdGVyIHdhcyBzZXQgdG8gTlVMTAogICoKQEAgLTEwMiw3ICsxMDIsNyBAQAogICogUkVUVVJOUzoKICAqCiAgKiAgICAgICBUeXBlCSAgICAJOiBod19zdGF0dXMKLSAqICAgICAgIERlc2NyaXB0aW9uICAgICA6IDAJCSAtLSBObyBlcnJvcnMgb2NjdXJlZAorICogICAgICAgRGVzY3JpcHRpb24gICAgIDogMAkJIC0tIE5vIGVycm9ycyBvY2N1cnJlZAogICoJCQkgUkVUX0JBRF9OVUxMX1BBUkFNICAgICAtLSBBIFBvaW50ZXIgUGFyYW1hdGVyCiAgKgkJCQkJCSAgIHdhcyBzZXQgdG8gTlVMTAogICoJCQkgUkVUX1BBUkFNX09VVF9PRl9SQU5HRSAtLSBJbnB1dCBQYXJhbWV0ZXIgb3V0CkBAIC0xNDcsNyArMTQ3LDcgQEAKICAqIFJFVFVSTlM6CiAgKgogICogICAgICAgVHlwZQkgICAgCTogaHdfc3RhdHVzCi0gKiAgICAgICBEZXNjcmlwdGlvbiAgICAgOiAwCQkgLS0gTm8gZXJyb3JzIG9jY3VyZWQKKyAqICAgICAgIERlc2NyaXB0aW9uICAgICA6IDAJCSAtLSBObyBlcnJvcnMgb2NjdXJyZWQKICAqCQkJIFJFVF9CQURfTlVMTF9QQVJBTSAgICAgLS0gQSBQb2ludGVyIFBhcmFtYXRlcgogICoJCQkJCQkJd2FzIHNldCB0byBOVUxMCiAgKgkJCSBSRVRfUEFSQU1fT1VUX09GX1JBTkdFIC0tIElucHV0IFBhcmFtZXRlcgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL19jaG5sX3NtLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvX2Nobmxfc20uaAppbmRleCBkNjBlMjUyLi42ZTdhYjRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvX2Nobmxfc20uaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvX2Nobmxfc20uaApAQCAtMTQ0LDcgKzE0NCw3IEBACiAJczggY2hubF9tb2RlOwkJLyogQ2hubCBtb2RlIGFuZCBhdHRyaWJ1dGVzICovCiAJLyogQ2hubCBJL08gY29tcGxldGlvbiBldmVudCAodXNlciBtb2RlKSAqLwogCXZvaWQgKnVzZXJfZXZlbnQ7Ci0JLyogQWJzdHJhY3Qgc3luY3Jvbml6YXRpb24gb2JqZWN0ICovCisJLyogQWJzdHJhY3Qgc3luY2hyb25pemF0aW9uIG9iamVjdCAqLwogCXN0cnVjdCBzeW5jX29iamVjdCAqc3luY19ldmVudDsKIAl1MzIgcHJvY2VzczsJCS8qIFByb2Nlc3Mgd2hpY2ggY3JlYXRlZCB0aGlzIGNoYW5uZWwgKi8KIAl1MzIgY2JfYXJnOwkJLyogQXJndW1lbnQgdG8gdXNlIHdpdGggY2FsbGJhY2sgKi8KQEAgLTE1Niw3ICsxNTYsNyBAQAogCXN0cnVjdCBsaXN0X2hlYWQgaW9fY29tcGxldGlvbnM7CiAJc3RydWN0IGxpc3RfaGVhZCBmcmVlX3BhY2tldHNfbGlzdDsJLyogTGlzdCBvZiBmcmVlIElycHMgKi8KIAlzdHJ1Y3QgbnRmeV9vYmplY3QgKm50Znlfb2JqOwotCXUzMiBieXRlc19tb3ZlZDsJLyogVG90YWwgbnVtYmVyIG9mIGJ5dGVzIHRyYW5zZmVyZWQgKi8KKwl1MzIgYnl0ZXNfbW92ZWQ7CS8qIFRvdGFsIG51bWJlciBvZiBieXRlcyB0cmFuc2ZlcnJlZCAqLwogCiAJLyogRm9yIERTUC1ETUEgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Nsay5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Nsay5oCmluZGV4IGIyMzk1MDMuLjY4NTM0MWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbGsuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY2xrLmgKQEAgLTU1LDcgKzU1LDcgQEAKICAqICAgICAgSW5pdGlhbGl6ZXMgcHJpdmF0ZSBzdGF0ZSBvZiBDTEsgbW9kdWxlLgogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKLSAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJlZC4KKyAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJyZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqICAgICAgQ0xLIGluaXRpYWxpemVkLgpAQCAtNzEsNyArNzEsNyBAQAogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKICAqICAgICAgMDoJU3VjY2Vzcy4KLSAqCS1FUEVSTToJRXJyb3Igb2NjdXJlZCB3aGlsZSBlbmFibGluZyB0aGUgY2xvY2suCisgKgktRVBFUk06CUVycm9yIG9jY3VycmVkIHdoaWxlIGVuYWJsaW5nIHRoZSBjbG9jay4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICovCkBAIC04Niw3ICs4Niw3IEBACiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVQRVJNOiAgICAgIEVycm9yIG9jY3VyZWQgd2hpbGUgZGlzYWJsaW5nIHRoZSBjbG9jay4KKyAqICAgICAgLUVQRVJNOiAgICAgIEVycm9yIG9jY3VycmVkIHdoaWxlIGRpc2FibGluZyB0aGUgY2xvY2suCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NtbS5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NtbS5oCmluZGV4IDI3YTIxYjUuLmFmZjIyMDUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jbW0uaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY21tLmgKQEAgLTE5MCw3ICsxOTAsNyBAQAogICogICAgICBJbml0aWFsaXplcyBwcml2YXRlIHN0YXRlIG9mIENNTSBtb2R1bGUuCiAgKiAgUGFyYW1ldGVyczoKICAqICBSZXR1cm5zOgotICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cmVkLgorICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cnJlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICogICAgICBDTU0gaW5pdGlhbGl6ZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY29kLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvY29kLmgKaW5kZXggNTNiZDRiYi4uY2I2ODRjMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2NvZC5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9jb2QuaApAQCAtMjQ5LDcgKzI0OSw3IEBACiAgKiAgUGFyYW1ldGVyczoKICAqICAgICAgTm9uZS4KICAqICBSZXR1cm5zOgotICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cmVkLgorICogICAgICBUUlVFIGlmIGluaXRpYWxpemVkOyBGQUxTRSBpZiBlcnJvciBvY2N1cnJlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICogICAgICBBIHJlcXVpcmVtZW50IGZvciBlYWNoIG9mIHRoZSBvdGhlciBwdWJsaWMgQ09EIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kZXYuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kZXYuaAppbmRleCBmNDFlNDc4Li5mOTJiNGJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZGV2LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rldi5oCkBAIC00OTcsNyArNDk3LDcgQEAKICAqICAgICAgSW5pdGlhbGl6ZSBERVYncyBwcml2YXRlIHN0YXRlLCBrZWVwaW5nIGEgcmVmZXJlbmNlIGNvdW50IG9uIGVhY2ggY2FsbC4KICAqICBQYXJhbWV0ZXJzOgogICogIFJldHVybnM6Ci0gKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VyZWQuCisgKiAgICAgIFRSVUUgaWYgaW5pdGlhbGl6ZWQ7IEZBTFNFIGlmIGVycm9yIG9jY3VycmVkLgogICogIFJlcXVpcmVzOgogICogIEVuc3VyZXM6CiAgKiAgICAgIFRSVUU6IEEgcmVxdWlyZW1lbnQgZm9yIHRoZSBvdGhlciBwdWJsaWMgREVWIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kcnYuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kcnYuaAppbmRleCAyNWVmMWEyLi45Y2RiZDk1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHJ2LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2Rydi5oCkBAIC0xNTQsNyArMTU0LDcgQEAKICAqICBQYXJhbWV0ZXJzOgogICogICAgICBkcnZfb2JqOiAgICAgICAgTG9jYXRpb24gdG8gc3RvcmUgY3JlYXRlZCBEUlYgT2JqZWN0IGhhbmRsZS4KICAqICBSZXR1cm5zOgotICogICAgICAwOiAgICAgICAgU3VjZXNzCisgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzCiAgKiAgICAgIC1FTk9NRU06ICAgIEZhaWxlZCBpbiBNZW1vcnkgYWxsb2NhdGlvbgogICogICAgICAtRVBFUk06ICAgICAgR2VuZXJhbCBGYWlsdXJlCiAgKiAgUmVxdWlyZXM6CkBAIC0xNzAsNyArMTcwLDcgQEAKICAqICAgICAgVGhlcmUgaXMgb25lIERyaXZlciBPYmplY3QgZm9yIHRoZSBEcml2ZXIgcmVwcmVzZW50aW5nCiAgKiAgICAgIHRoZSBkcml2ZXIgaXRzZWxmLiBJdCBjb250YWlucyB0aGUgbGlzdCBvZiBkZXZpY2UKICAqICAgICAgT2JqZWN0cyBhbmQgdGhlIGxpc3Qgb2YgRGV2aWNlIEV4dGVuc2lvbnMgaW4gdGhlIHN5c3RlbS4KLSAqICAgICAgQWxzbyBpdCBjYW4gaG9sZCBvdGhlciBuZWNjZXNzYXJ5CisgKiAgICAgIEFsc28gaXQgY2FuIGhvbGQgb3RoZXIgbmVjZXNzYXJ5CiAgKiAgICAgIGluZm9ybWF0aW9uIGluIGl0cyBzdG9yYWdlIGFyZWEuCiAgKi8KIGV4dGVybiBpbnQgZHJ2X2NyZWF0ZShzdHJ1Y3QgZHJ2X29iamVjdCAqKmRydl9vYmopOwpAQCAtMTgwLDcgKzE4MCw3IEBACiAgKiAgUHVycG9zZToKICAqICAgICAgZGVzdHJveXMgdGhlIERldiBPYmplY3QgbGlzdCwgRHJ2RXh0IGxpc3QKICAqICAgICAgYW5kIGRlc3Ryb3kgdGhlIERSViBvYmplY3QKLSAqICAgICAgQ2FsbGVkIHVwb24gZHJpdmVyIHVuTG9hZGluZy5vciB1bnN1Y2Nlc2Z1bCBsb2FkaW5nIG9mIHRoZSBkcml2ZXIuCisgKiAgICAgIENhbGxlZCB1cG9uIGRyaXZlciB1bkxvYWRpbmcub3IgdW5zdWNjZXNzZnVsIGxvYWRpbmcgb2YgdGhlIGRyaXZlci4KICAqICBQYXJhbWV0ZXJzOgogICogICAgICBkcml2ZXJfb2JqOiAgICAgSGFuZGxlIHRvIERyaXZlciBvYmplY3QgLgogICogIFJldHVybnM6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHNwZGVmcy5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL2RzcGRlZnMuaAppbmRleCBjMmJhMjZjLi5lZDMyYmYzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvZHNwZGVmcy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9kc3BkZWZzLmgKQEAgLTUyLDcgKzUyLDcgQEAKICAqICAgICAgZGV2X2N0eHQ6ICAgIEhhbmRsZSB0byBCcmlkZ2UgZHJpdmVyIGRlZmluZWQgZGV2aWNlIGNvbnRleHQuCiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgIFN1Y2Nlc3MuCi0gKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgorICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cnJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCiAgKiAgICAgIC1FUEVSTTogICAgICBPdGhlciwgdW5zcGVjaWZpZWQgZXJyb3IuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIGRldl9jdHh0ICE9IE5VTEwKQEAgLTkxLDcgKzkxLDcgQEAKICAqICAgICAgZHNwX2FkZHI6ICAgICAgIERTUCBhZGRyZXNzIGF0IHdoaWNoIHRvIHN0YXJ0IGV4ZWN1dGlvbi4KICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCisgKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VycmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KICAqICAgICAgLUVQRVJNOiAgICAgIE90aGVyLCB1bnNwZWNpZmllZCBlcnJvci4KICAqICBSZXF1aXJlczoKICAqICAgICAgZGV2X2N0eHQgIT0gTlVMTApAQCAtMTQyLDcgKzE0Miw3IEBACiAgKiAgICAgIG1lbV90eXBlOiAgICAgICBNZW1vcnkgc3BhY2Ugb24gRFNQIHRvIHdoaWNoIHRvIHRyYW5zZmVyLgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KKyAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgogICogICAgICAtRVBFUk06ICAgICAgT3RoZXIsIHVuc3BlY2lmaWVkIGVycm9yLgogICogIFJlcXVpcmVzOgogICogICAgICBkZXZfY3R4dCAhPSBOVUxMOwpAQCAtMjA1LDcgKzIwNSw3IEBACiAgKiAgICAgIGRldl9jdHh0OiAgICBIYW5kbGUgdG8gQnJpZGdlIGRyaXZlciBkZWZpbmVkIGRldmljZSBjb250ZXh0LgogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzLgotICogICAgICAtRVRJTUVET1VUOiAgVGltZW91dCBvY2N1cmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KKyAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJyZWQgd2FpdGluZyBmb3IgYSByZXNwb25zZSBmcm9tIGhhcmR3YXJlLgogICogICAgICAtRVBFUk06ICAgICAgT3RoZXIsIHVuc3BlY2lmaWVkIGVycm9yLgogICogIFJlcXVpcmVzOgogICogICAgICBkZXZfY3R4dCAhPSBOVUxMCkBAIC0yNDgsNyArMjQ4LDcgQEAKICAqICAgICAgbWVtX3R5cGU6ICAgICAgIE1lbW9yeSBzcGFjZSBvbiBEU1AgZnJvbSB3aGljaCB0byB0cmFuc2Zlci4KICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCisgKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VycmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KICAqICAgICAgLUVQRVJNOiAgICAgIE90aGVyLCB1bnNwZWNpZmllZCBlcnJvci4KICAqICBSZXF1aXJlczoKICAqICAgICAgZGV2X2N0eHQgIT0gTlVMTDsKQEAgLTI3NCw3ICsyNzQsNyBAQAogICogICAgICBtZW1fdHlwZTogICAgICAgTWVtb3J5IHNwYWNlIG9uIERTUCB0byB3aGljaCB0byB0cmFuc2Zlci4KICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgU3VjY2Vzcy4KLSAqICAgICAgLUVUSU1FRE9VVDogIFRpbWVvdXQgb2NjdXJlZCB3YWl0aW5nIGZvciBhIHJlc3BvbnNlIGZyb20gaGFyZHdhcmUuCisgKiAgICAgIC1FVElNRURPVVQ6ICBUaW1lb3V0IG9jY3VycmVkIHdhaXRpbmcgZm9yIGEgcmVzcG9uc2UgZnJvbSBoYXJkd2FyZS4KICAqICAgICAgLUVQRVJNOiAgICAgIE90aGVyLCB1bnNwZWNpZmllZCBlcnJvci4KICAqICBSZXF1aXJlczoKICAqICAgICAgZGV2X2N0eHQgIT0gTlVMTDsKQEAgLTYwMSw3ICs2MDEsNyBAQAogICogIFJldHVybnM6CiAgKiAgICAgIDA6ICAgICAgICAgICAgU3VjY2VzczsKICAqICAgICAgLUVGQVVMVDogICAgICAgIEludmFsaWQgY2hubF9vYmouCi0gKiAgICAgIC1FVElNRURPVVQ6IFRpbWVvdXQgb2NjdXJlZCBiZWZvcmUgY2hhbm5lbCBjb3VsZCBiZSBpZGxlZC4KKyAqICAgICAgLUVUSU1FRE9VVDogVGltZW91dCBvY2N1cnJlZCBiZWZvcmUgY2hhbm5lbCBjb3VsZCBiZSBpZGxlZC4KICAqICBSZXF1aXJlczoKICAqICBFbnN1cmVzOgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvbWdyLmggYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvbWdyLmgKaW5kZXggZTUwNmM0ZC4uNDdiMDMxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL21nci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9tZ3IuaApAQCAtMTc2LDcgKzE3Niw3IEBACiAgKiAgICAgIG1ncl9oYW5kbGU6ICAgICBIYW5kbGUgdG8gdGhlIE1hbmFnZXIgT2JqZWN0CiAgKiAgICAgIGRjZF9oYW5kbGU6ICAgICBQdHIgdG8gcmVjZWl2ZSB0aGUgRENEIEhhbmRsZS4KICAqICBSZXR1cm5zOgotICogICAgICAwOiAgICAgICAgU3VjZXNzCisgKiAgICAgIDA6ICAgICAgICBTdWNjZXNzCiAgKiAgICAgIC1FUEVSTTogICAgICBGYWlsdXJlIHRvIGdldCB0aGUgSGFuZGxlCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIE1HUiBpcyBpbml0aWFsaXplZC4KQEAgLTE5NSw3ICsxOTUsNyBAQAogICogICAgICBjYWxsLiBJbml0aWFsaXplcyB0aGUgRENELgogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKLSAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJlZC4KKyAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJyZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqICAgICAgVFJVRTogQSByZXF1aXJlbWVudCBmb3IgdGhlIG90aGVyIHB1YmxpYyBNR1IgZnVuY3Rpb25zLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL25vZGUuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9ub2RlLmgKaW5kZXggNTNkYTBlZi4uMTYzNzFkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL25vZGUuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2Uvbm9kZS5oCkBAIC00NCw3ICs0NCw3IEBACiAgKiAgICAgIC1FU1BJUEU6ICAgICAgICBpQWxnIGZ1bmN0aW9ucyBub3QgZm91bmQgZm9yIGEgREFJUyBub2RlLgogICogICAgICAtRURPTTogICAgICAgICBhdHRyX2luICE9IE5VTEwgYW5kIGF0dHJfaW4tPnByaW8gb3V0IG9mCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2UuCi0gKiAgICAgIC1FUEVSTTogICAgICAgICAgQSBmYWlsdXJlIG9jY3VyZWQsIHVuYWJsZSB0byBhbGxvY2F0ZSBub2RlLgorICogICAgICAtRVBFUk06ICAgICAgICAgIEEgZmFpbHVyZSBvY2N1cnJlZCwgdW5hYmxlIHRvIGFsbG9jYXRlIG5vZGUuCiAgKiAgICAgIC1FQkFEUjogICAgUHJvY2Nlc3NvciBpcyBub3QgaW4gdGhlIHJ1bm5pbmcgc3RhdGUuCiAgKiAgUmVxdWlyZXM6CiAgKiAgICAgIG5vZGVfaW5pdCh2b2lkKSBjYWxsZWQuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHJvYy5oIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3Byb2MuaAppbmRleCA1ZTA5ZmQxLi5mMDBkZmZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHJvYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wcm9jLmgKQEAgLTg5LDcgKzg5LDcgQEAKICAqICBSZXR1cm5zOgogICogICAgICAwICAgICA6ICAgICAgIFNVQ0NFU1MKICAqICAgICAgLUVGQVVMVCA6ICAgICAgIEludmFsaWQgcHJvY2Vzc29yIGhhbmRsZS4KLSAqICAgICAgLUVUSU1FOiAgICAgICBBIFRpbWVvdXQgT2NjdXJlZCBiZWZvcmUgdGhlIENvbnRyb2wgaW5mb3JtYXRpb24KKyAqICAgICAgLUVUSU1FOiAgICAgICBBIFRpbWVvdXQgT2NjdXJyZWQgYmVmb3JlIHRoZSBDb250cm9sIGluZm9ybWF0aW9uCiAgKgkJCSAgY291bGQgYmUgc2VudC4KICAqICAgICAgLUVQRVJNICAgOiAgICAgICBHZW5lcmFsIEZhaWx1cmUuCiAgKiAgUmVxdWlyZXM6CkBAIC0xNjksNyArMTY5LDcgQEAKICAqICAgICAgMCAgICAgOiAgICAgICBTdWNjZXNzLgogICogICAgICAtRUZBVUxUIDogICAgICAgSW52YWxpZCBwcm9jZXNzb3IgaGFuZGxlLgogICogICAgICAtRUJBRFI6ICAgIFRoZSBwcm9jZXNzb3IgaXMgbm90IGluIHRoZSBQUk9DX1JVTk5JTkcgc3RhdGUuCi0gKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VyZWQgYmVmb3JlIHRoZSBEU1AgcmVzcG9uZGVkIHRvIHRoZQorICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cnJlZCBiZWZvcmUgdGhlIERTUCByZXNwb25kZWQgdG8gdGhlCiAgKgkJCSAgcXVlcnJ5LgogICogICAgICAtRVBFUk0gICA6ICAgICAgIFVuYWJsZSB0byBnZXQgUmVzb3VyY2UgSW5mb3JtYXRpb24KICAqICBSZXF1aXJlczoKQEAgLTIyOSw3ICsyMjksNyBAQAogICogICAgICBjYWxsLgogICogIFBhcmFtZXRlcnM6CiAgKiAgUmV0dXJuczoKLSAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJlZC4KKyAqICAgICAgVFJVRSBpZiBpbml0aWFsaXplZDsgRkFMU0UgaWYgZXJyb3Igb2NjdXJyZWQuCiAgKiAgUmVxdWlyZXM6CiAgKiAgRW5zdXJlczoKICAqICAgICAgVFJVRTogQSByZXF1aXJlbWVudCBmb3IgdGhlIG90aGVyIHB1YmxpYyBQUk9DIGZ1bmN0aW9ucy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wd3IuaCBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9pbmNsdWRlL2RzcGJyaWRnZS9wd3IuaAppbmRleCA1ZTNhYjIxLi4wZmIwNjY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2UvaW5jbHVkZS9kc3BicmlkZ2UvcHdyLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL2luY2x1ZGUvZHNwYnJpZGdlL3B3ci5oCkBAIC00Niw3ICs0Niw3IEBACiAgKiAgICAgIDA6ICAgICAgICAgICAgU3VjY2Vzcy4KICAqICAgICAgMDogU3VjY2VzcywgYnV0IHRoZSBEU1Agd2FzIGFscmVhZHkgYXNsZWVwLgogICogICAgICAtRUlOVkFMOiAgICBUaGUgc3BlY2lmaWVkIHNsZWVwX2NvZGUgaXMgbm90IHN1cHBvcnRlZC4KLSAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJlZCB3aGlsZSB3YWl0aW5nIGZvciBEU1Agc2xlZXAKKyAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJyZWQgd2hpbGUgd2FpdGluZyBmb3IgRFNQIHNsZWVwCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWF0aW9uLgogICogICAgICAtRVBFUk06ICAgICAgICAgIEdlbmVyYWwgZmFpbHVyZSwgdW5hYmxlIHRvIHNlbmQgc2xlZXAgY29tbWFuZCB0bwogICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBEU1AuCkBAIC02Nyw3ICs2Nyw3IEBACiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgICAgICBTdWNjZXNzLgogICogICAgICAwOiAgU3VjY2VzcywgYnV0IHRoZSBEU1Agd2FzIGFscmVhZHkgYXdha2UuCi0gKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VyZWQgd2hpbGUgd2FpdGluZyBmb3Igd2FrZQorICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cnJlZCB3aGlsZSB3YWl0aW5nIGZvciB3YWtlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWF0aW9uLgogICogICAgICAtRVBFUk06ICAgICAgICAgIEdlbmVyYWwgZmFpbHVyZSwgdW5hYmxlIHRvIHNlbmQgd2FrZSBjb21tYW5kIHRvCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIERTUC4KQEAgLTg1LDcgKzg1LDcgQEAKICAqICBSZXR1cm5zOgogICogICAgICAwOiAgICAgICAgICAgIFN1Y2Nlc3MuCiAgKiAgICAgIDA6ICBTdWNjZXNzLCBidXQgdGhlIERTUCB3YXMgYWxyZWFkeSBhd2FrZS4KLSAqICAgICAgLUVUSU1FOiAgICAgICBBIHRpbWVvdXQgb2NjdXJlZCB3aGlsZSB3YWl0aW5nIGZvciB3YWtlCisgKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VycmVkIHdoaWxlIHdhaXRpbmcgZm9yIHdha2UKICAqICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maXJtYXRpb24uCiAgKiAgICAgIC1FUEVSTTogICAgICAgICAgR2VuZXJhbCBmYWlsdXJlLCB1bmFibGUgdG8gc2VuZCB3YWtlIGNvbW1hbmQgdG8KICAqICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRFNQLgpAQCAtMTAzLDcgKzEwMyw3IEBACiAgKiAgUmV0dXJuczoKICAqICAgICAgMDogICAgICAgICAgICBTdWNjZXNzLgogICogICAgICAwOiAgU3VjY2VzcywgYnV0IHRoZSBEU1Agd2FzIGFscmVhZHkgYXdha2UuCi0gKiAgICAgIC1FVElNRTogICAgICAgQSB0aW1lb3V0IG9jY3VyZWQgd2hpbGUgd2FpdGluZyBmb3Igd2FrZQorICogICAgICAtRVRJTUU6ICAgICAgIEEgdGltZW91dCBvY2N1cnJlZCB3aGlsZSB3YWl0aW5nIGZvciB3YWtlCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlybWF0aW9uLgogICogICAgICAtRVBFUk06ICAgICAgICAgIEdlbmVyYWwgZmFpbHVyZSwgdW5hYmxlIHRvIHNlbmQgd2FrZSBjb21tYW5kIHRvCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIERTUC4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9wbWdyL2Rldi5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3BtZ3IvZGV2LmMKaW5kZXggOWEzOGQ4Ni4uNTIyODEwYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3BtZ3IvZGV2LmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3BtZ3IvZGV2LmMKQEAgLTc4Nyw3ICs3ODcsNyBAQAogCiAJLyoKIAkgKiBGSVhNRTogdGhpcyBjb2RlIG5lZWRzIHN0cnVjdCBwcm9jX29iamVjdCB0byBoYXZlIGEgbGlzdF9oZWFkCi0JICogYXQgdGhlIGJlZ2luaW5nLiBJZiBub3QsIHRoaXMgY2FuIGdvIGhvcnJpYmx5IHdyb25nLgorCSAqIGF0IHRoZSBiZWdpbm5pbmcuIElmIG5vdCwgdGhpcyBjYW4gZ28gaG9ycmlibHkgd3JvbmcuCiAJICovCiAJbGlzdF9mb3JfZWFjaChjdXJyLCAmZGV2X29iai0+cHJvY19saXN0KQogCQlwcm9jX25vdGlmeV9jbGllbnRzKCh2b2lkICopY3VyciwgcmV0KTsKQEAgLTgxMCw3ICs4MTAsNyBAQAogCWlmICghZGV2X25vZGVfb2JqKQogCQlzdGF0dXMgPSAtRUZBVUxUOwogCi0JLyogUmV0cmlldmUgdGhlIGRldmljZSBvYmplY3QgaGFuZGxlIG9yaWdpbmFseSBzdG9yZWQgd2l0aAorCS8qIFJldHJpZXZlIHRoZSBkZXZpY2Ugb2JqZWN0IGhhbmRsZSBvcmlnaW5hbGx5IHN0b3JlZCB3aXRoCiAJICogdGhlIGRldl9ub2RlOiAqLwogCWlmICghc3RhdHVzKSB7CiAJCS8qIGNoZWNrIHRoZSBkZXZpY2Ugc3RyaW5nIGFuZCB0aGVuIHN0b3JlIGRldiBvYmplY3QgKi8KQEAgLTk4Niw3ICs5ODYsNyBAQAogCS8qIEFkZCBEZXZPYmplY3QgdG8gdGFpbC4gKi8KIAkvKgogCSAqIEZJWE1FOiB0aGlzIGNvZGUgbmVlZHMgc3RydWN0IHByb2Nfb2JqZWN0IHRvIGhhdmUgYSBsaXN0X2hlYWQKLQkgKiBhdCB0aGUgYmVnaW5pbmcuIElmIG5vdCwgdGhpcyBjYW4gZ28gaG9ycmlibHkgd3JvbmcuCisJICogYXQgdGhlIGJlZ2lubmluZy4gSWYgbm90LCB0aGlzIGNhbiBnbyBob3JyaWJseSB3cm9uZy4KIAkgKi8KIAlsaXN0X2FkZF90YWlsKChzdHJ1Y3QgbGlzdF9oZWFkICopcHJvY19vYmosICZkZXZfb2JqLT5wcm9jX2xpc3QpOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9kcnYuYyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL2Rydi5jCmluZGV4IDhjODg1ODMuLmRiODIxNWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL2Rydi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL2Rydi5jCkBAIC02MDksNyArNjA5LDcgQEAKIAlEQkNfUkVRVUlSRShkZXZfbm9kZV9zdHJnICE9IE5VTEwpOwogCiAJLyoKLQkgKiAgQWxsb2NhdGUgbWVtb3J5IHRvIGhvbGQgdGhlIHN0cmluZy4gVGhpcyB3aWxsIGxpdmUgdW50aWxsCisJICogIEFsbG9jYXRlIG1lbW9yeSB0byBob2xkIHRoZSBzdHJpbmcuIFRoaXMgd2lsbCBsaXZlIHVudGlsCiAJICogIGl0IGlzIGZyZWVkIGluIHRoZSBSZWxlYXNlIHJlc291cmNlcy4gVXBkYXRlIHRoZSBkcml2ZXIgb2JqZWN0CiAJICogIGxpc3QuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9ubGRyLmMgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9ubGRyLmMKaW5kZXggZmI1YzJiYS4uMGU3MGNiYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90aWRzcGJyaWRnZS9ybWdyL25sZHIuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9ubGRyLmMKQEAgLTU3LDkgKzU3LDkgQEAKICAqICAgdXV1dXV1dXV8ZnVlZWVlZWV8ZnVkZGRkZGR8ZnVjY2NjY2N8CiAgKiAgd2hlcmUKICAqICAgICAgdSA9IHVudXNlZAotICogICAgICBjY2NjY2MgPSBwcmVmZXJlZC9yZXF1aXJlZCBkeW5hbWljIG1lbSBzZWdpZCBmb3IgY3JlYXRlIHBoYXNlIGRhdGEvY29kZQotICogICAgICBkZGRkZGQgPSBwcmVmZXJlZC9yZXF1aXJlZCBkeW5hbWljIG1lbSBzZWdpZCBmb3IgZGVsZXRlIHBoYXNlIGRhdGEvY29kZQotICogICAgICBlZWVlZWUgPSBwcmVmZXJlZC9yZXEuIGR5bmFtaWMgbWVtIHNlZ2lkIGZvciBleGVjdXRlIHBoYXNlIGRhdGEvY29kZQorICogICAgICBjY2NjY2MgPSBwcmVmZXJyZWQvcmVxdWlyZWQgZHluYW1pYyBtZW0gc2VnaWQgZm9yIGNyZWF0ZSBwaGFzZSBkYXRhL2NvZGUKKyAqICAgICAgZGRkZGRkID0gcHJlZmVycmVkL3JlcXVpcmVkIGR5bmFtaWMgbWVtIHNlZ2lkIGZvciBkZWxldGUgcGhhc2UgZGF0YS9jb2RlCisgKiAgICAgIGVlZWVlZSA9IHByZWZlcnJlZC9yZXEuIGR5bmFtaWMgbWVtIHNlZ2lkIGZvciBleGVjdXRlIHBoYXNlIGRhdGEvY29kZQogICogICAgICBmID0gZmxhZyBpbmRpY2F0aW5nIGlmIG1lbW9yeSBpcyBwcmVmZXJyZWQgb3IgcmVxdWlyZWQ6CiAgKgkgIGYgPSAxIGlmIHJlcXVpcmVkLCBmID0gMCBpZiBwcmVmZXJyZWQuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvcHJvYy5jIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvcHJvYy5jCmluZGV4IGM0ZTVjNGUwLi4yNDJkZDEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdGlkc3BicmlkZ2Uvcm1nci9wcm9jLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3RpZHNwYnJpZGdlL3JtZ3IvcHJvYy5jCkBAIC0xNjcwLDcgKzE2NzAsNyBAQAogCWlmICghc3RhdHVzKSB7CiAJCWRldl9kYmcoYnJpZGdlLCAiJXM6IHByb2Nlc3NvciBpbiBzdGFuZGJ5IG1vZGVcbiIsIF9fZnVuY19fKTsKIAkJcF9wcm9jX29iamVjdC0+cHJvY19zdGF0ZSA9IFBST0NfU1RPUFBFRDsKLQkJLyogRGVzdG9yeSB0aGUgTm9kZSBNYW5hZ2VyLCBtc2dfY3RybCBNYW5hZ2VyICovCisJCS8qIERlc3Ryb3kgdGhlIE5vZGUgTWFuYWdlciwgbXNnX2N0cmwgTWFuYWdlciAqLwogCQlpZiAoIShkZXZfZGVzdHJveTIocF9wcm9jX29iamVjdC0+ZGV2X29iaikpKSB7CiAJCQkvKiBEZXN0cm95IHRoZSBtc2dfY3RybCBieSBjYWxsaW5nIG1zZ19kZWxldGUgKi8KIAkJCWRldl9nZXRfbXNnX21ncihwX3Byb2Nfb2JqZWN0LT5kZXZfb2JqLCAmaG1zZ19tZ3IpOwpAQCAtMTgyNyw3ICsxODI3LDcgQEAKIAogCS8qIFRoaXMgaXMgbmVlZGVkIG9ubHkgd2hlbiBEZXZpY2UgaXMgbG9hZGVkIHdoZW4gaXQgaXMKIAkgKiBhbHJlYWR5ICdBQ1RJVkUnICovCi0JLyogRGVzdG9yeSB0aGUgTm9kZSBNYW5hZ2VyLCBtc2dfY3RybCBNYW5hZ2VyICovCisJLyogRGVzdHJveSB0aGUgTm9kZSBNYW5hZ2VyLCBtc2dfY3RybCBNYW5hZ2VyICovCiAJaWYgKCFkZXZfZGVzdHJveTIocHJvY19vYmotPmRldl9vYmopKSB7CiAJCS8qIERlc3Ryb3kgdGhlIG1zZ19jdHJsIGJ5IGNhbGxpbmcgbXNnX2RlbGV0ZSAqLwogCQlkZXZfZ2V0X21zZ19tZ3IocHJvY19vYmotPmRldl9vYmosICZobXNnX21ncik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdG02MDAwL3RtNjAwMC12aWRlby5jIGIvZHJpdmVycy9zdGFnaW5nL3RtNjAwMC90bTYwMDAtdmlkZW8uYwppbmRleCBjODBhMzE2Li4xN2RiNjY4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdG02MDAwL3RtNjAwMC12aWRlby5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90bTYwMDAvdG02MDAwLXZpZGVvLmMKQEAgLTE4Miw3ICsxODIsNyBAQAogCWlmICghYnVmKQogCQlyZXR1cm47CiAKLQkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsbCBmb3IgdGVzdGluZyBmb3IgZnJhbWUvVVJCIGxvc3MgKi8KKwkvKiBDbGVhbnMgdXAgYnVmZmVyIC0gVXNlZnVsIGZvciB0ZXN0aW5nIGZvciBmcmFtZS9VUkIgbG9zcyAqLwogCW91dHAgPSB2aWRlb2J1Zl90b192bWFsbG9jKCYoKmJ1ZiktPnZiKTsKIAogCXJldHVybjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvY2QxODY1LmggYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2NkMTg2NS5oCmluZGV4IDk5NDA5NjYuLjhjMmFkNjUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvY2QxODY1LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9jZDE4NjUuaApAQCAtOSw3ICs5LDcgQEAKICAqICAgICAgUGxlYXNlIERPIGNvbnRhY3QgaW84LWxpbnV4QHNwZWNpYWxpeC5jby51ayBpZiB5b3UgcmVxdWlyZQogICogICAgICBzdXBwb3J0LgogICoKLSAqICAgICAgVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BwZWQgaW4gdGhlIEJpdFdpemFyZCBsaW51eCBkZXZpY2UKKyAqICAgICAgVGhpcyBkcml2ZXIgd2FzIGRldmVsb3BlZCBpbiB0aGUgQml0V2l6YXJkIGxpbnV4IGRldmljZQogICogICAgICBkcml2ZXIgc2VydmljZS4gSWYgeW91IHJlcXVpcmUgYSBsaW51eCBkZXZpY2UgZHJpdmVyIGZvciB5b3VyCiAgKiAgICAgIHByb2R1Y3QsIHBsZWFzZSBjb250YWN0IGRldmljZXNAQml0V2l6YXJkLm5sIGZvciBhIHF1b3RlLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvZXBjYS5jIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9lcGNhLmMKaW5kZXggN2FkMzYzOC4uN2YxMzY5ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9lcGNhLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9lcGNhLmMKQEAgLTcsNyArNyw3IEBACiAJKiogVGhpcyBkcml2ZXIgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSBEaWdpICoqCiAKIAlNdWNoIG9mIHRoaXMgZGVzaWduIGFuZCBjb2RlIGNhbWUgZnJvbSBlcGNhLmMgd2hpY2ggd2FzCi0JY29weXJpZ2h0IChDKSAxOTk0LCAxOTk1IFRyb3kgRGUgSm9uZ2gsIGFuZCBzdWJzcXVlbnRseQorCWNvcHlyaWdodCAoQykgMTk5NCwgMTk5NSBUcm95IERlIEpvbmdoLCBhbmQgc3Vic2VxdWVudGx5CiAJbW9kaWZpZWQgYnkgRGF2aWQgTnVnZW50LCBDaHJpc3RvcGggTGFtZXRlciwgTWlrZSBNY0xhZ2FuLgogCiAJVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKQEAgLTQ3MSw3ICs0NzEsNyBAQAogCW1lbW9mZihjaCk7CiAKIAkvKgotCSAqIFRoZSBjaGFubmVsIGhhcyBvZmZpY2lhbHkgYmVlbiBjbG9zZWQuIFRoZSBuZXh0IHRpbWUgaXQgaXMgb3BlbmVkIGl0CisJICogVGhlIGNoYW5uZWwgaGFzIG9mZmljaWFsbHkgYmVlbiBjbG9zZWQuIFRoZSBuZXh0IHRpbWUgaXQgaXMgb3BlbmVkIGl0CiAJICogd2lsbCBoYXZlIHRvIHJlaW5pdGlhbGl6ZWQuIFNldCBhIGZsYWcgdG8gaW5kaWNhdGUgdGhpcy4KIAkgKi8KIAkvKiBQcmV2ZW50IGZ1dHVyZSBEaWdpIHByb2dyYW1tZWQgaW50ZXJydXB0cyBmcm9tIGNvbWluZyBhY3RpdmUgKi8KQEAgLTk3NSw3ICs5NzUsNyBAQAogCiAJLyoKIAkgKiBOb3RlIDogSWYgbGlsbyB3YXMgdXNlZCB0byBjb25maWd1cmUgdGhlIGRyaXZlciBhbmQgdGhlIGlnbm9yZQotCSAqIGVwY2Fjb25maWcgb3B0aW9uIHdhcyBjaG9vc2VuIChkaWdpZXBjYT0yKSB0aGVuIG5iZGV2cyBhbmQgbnVtX2NhcmRzCisJICogZXBjYWNvbmZpZyBvcHRpb24gd2FzIGNob3NlbiAoZGlnaWVwY2E9MikgdGhlbiBuYmRldnMgYW5kIG51bV9jYXJkcwogCSAqIHdpbGwgZXF1YWwgMCBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIG9rYXk7IFBDSSBjYXJkcyB3aWxsIHN0aWxsIGJlCiAJICogcGlja2VkIHVwIGlmIGRldGVjdGVkLgogCSAqLwpAQCAtMTIzMCwxNCArMTIzMCwxNCBAQAogCW1lbWFkZHIgPSBiZC0+cmVfbWFwX21lbWJhc2U7CiAKIAkvKgotCSAqIFRoZSBiZWxvdyBhc3NpZ25tZW50IHdpbGwgc2V0IGJjIHRvIHBvaW50IGF0IHRoZSBCRUdJTklORyBvZiB0aGUKKwkgKiBUaGUgYmVsb3cgYXNzaWdubWVudCB3aWxsIHNldCBiYyB0byBwb2ludCBhdCB0aGUgQkVHSU5OSU5HIG9mIHRoZQogCSAqIGNhcmRzIGNoYW5uZWwgc3RydWN0dXJlcy4gRm9yIDEgY2FyZCB0aGVyZSB3aWxsIGJlIGJldHdlZW4gOCBhbmQgNjQKIAkgKiBvZiB0aGVzZSBzdHJ1Y3R1cmVzLgogCSAqLwogCWJjID0gbWVtYWRkciArIENIQU5TVFJVQ1Q7CiAKIAkvKgotCSAqIFRoZSBiZWxvdyBhc3NpZ25tZW50IHdpbGwgc2V0IGdkIHRvIHBvaW50IGF0IHRoZSBCRUdJTklORyBvZiBnbG9iYWwKKwkgKiBUaGUgYmVsb3cgYXNzaWdubWVudCB3aWxsIHNldCBnZCB0byBwb2ludCBhdCB0aGUgQkVHSU5OSU5HIG9mIGdsb2JhbAogCSAqIG1lbW9yeSBhZGRyZXNzIDB4YzAwLiBUaGUgZmlyc3QgZGF0YSBpbiB0aGF0IGdsb2JhbCBtZW1vcnkgYWN0dWFsbHkKIAkgKiBzdGFydHMgYXQgYWRkcmVzcyAweGMxYS4gVGhlIGNvbW1hbmQgaW4gcG9pbnRlciBiZWdpbnMgYXQgMHhkMTAuCiAJICovCkBAIC0xNDkyLDcgKzE0OTIsNyBAQAogCQkvKgogCQkgKiBUaGUgdHdvIGFzc2lnbm1lbnRzIGJlbG93IGdldCB0aGUgY3VycmVudCBtb2RlbSBzdGF0dXMKIAkJICogKG1zdGF0KSBhbmQgdGhlIHByZXZpb3VzIG1vZGVtIHN0YXR1cyAobHN0YXQpLiBUaGVzZSBhcmUKLQkJICogdXNlZnVsIGJlY3Vhc2UgYW4gZXZlbnQgY291bGQgc2lnbmFsIGEgY2hhbmdlIGluIG1vZGVtCisJCSAqIHVzZWZ1bCBiZWNhdXNlIGFuIGV2ZW50IGNvdWxkIHNpZ25hbCBhIGNoYW5nZSBpbiBtb2RlbQogCQkgKiBzaWduYWxzIGl0c2VsZi4KIAkJICovCiAJCW1zdGF0ID0gcmVhZGIoZXZlbnRidWYgKyAyKTsKQEAgLTE4OTcsNyArMTg5Nyw3IEBACiAJCS8qCiAJCSAqIEV2ZW4gaWYgaGVhZCBoYXMgd3JhcHBlZCBhcm91bmQgb25seSByZXBvcnQgdGhlIGFtb3VudCBvZgogCQkgKiBkYXRhIHRvIGJlIGVxdWFsIHRvIHRoZSBzaXplIC0gdGFpbC4gUmVtZW1iZXIgbWVtY3B5IGNhbid0Ci0JCSAqIGF1dG9tYXRpY2x5IHdyYXAgYXJvdW5kIHRoZSByZWNlaXZlIGJ1ZmZlci4KKwkJICogYXV0b21hdGljYWxseSB3cmFwIGFyb3VuZCB0aGUgcmVjZWl2ZSBidWZmZXIuCiAJCSAqLwogCQlkYXRhVG9SZWFkID0gKHdyYXBnYXAgPCBieXRlc0F2YWlsYWJsZSkgPyB3cmFwZ2FwCiAJCQkJCQkJOiBieXRlc0F2YWlsYWJsZTsKQEAgLTI1NDMsNyArMjU0Myw3IEBACiAJCQkJCWJyZWFrOwogCQkJLyoKIAkJCSAqIElmIHRoZSBpbmRleCBpbmNyZW1lbnRlZCBhYm92ZSByZWZlcnMgdG8gYQotCQkJICogbGVnaXRhbWF0ZSBib2FyZCB0eXBlIHNldCBpdCBoZXJlLgorCQkJICogbGVnaXRpbWF0ZSBib2FyZCB0eXBlIHNldCBpdCBoZXJlLgogCQkJICovCiAJCQlpZiAoaW5kZXggPCBFUENBX05VTV9UWVBFUykKIAkJCQlib2FyZC50eXBlID0gbG9vcDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kyaHcuaCBiL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kyaHcuaAppbmRleCBjMGJhNmMwLi44ZGYyZjQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmh3LmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJody5oCkBAIC0zMzUsNyArMzM1LDcgQEAKIGluIGZhY3QgZ2VuZXJhdGVzIGEgcmVzZXQgcHVsc2Ugb24gdGhlIGJvYXJkLiBUaGlzIHB1bHNlIGlzIGd1YXJhbnRlZWQgdG8gbGFzdAogbGVzcyB0aGFuIDEwIG1pbGxpc2Vjb25kcy4gVGhlIGFkZGl0aW9uYWwgZGVsYXkgZW5zdXJlcyB0aGUgMTQwMCBoYXMgaGFkIHRoZQogY2hhbmNlIHRvIHJlc3BvbmQgc3VmZmljaWVudGx5IHRvIHRoZSBmaXJzdCByZXNldC4gV2h5IG5vdCBhIGxvbmdlciBkZWxheT8gTXVjaAotbW9yZSB0aGFuIDUwIG1pbGxpc2Vjb25kcyBnZXRzIHRvIGJlIG5vdGljYWJsZSwgYnV0IHRoZSBib2FyZCB3b3VsZCBzdGlsbCB3b3JrLgorbW9yZSB0aGFuIDUwIG1pbGxpc2Vjb25kcyBnZXRzIHRvIGJlIG5vdGljZWFibGUsIGJ1dCB0aGUgYm9hcmQgd291bGQgc3RpbGwgd29yay4KIAogT25jZSBhbGwgMTYgYnl0ZXMgb2YgdGhlIFBvd2VyLW9uIFJlc2V0IE1lc3NhZ2UgaGF2ZSBiZWVuIHJlYWQsIHRoZSBib290c3RyYXAKIGZpcm13YXJlIGlzIHJlYWR5IHRvIHJlY2VpdmUgbG9hZHdhcmUuCkBAIC0zOTksNyArMzk5LDcgQEAKIAkJLy8gZXhwYW5kYWJsZSBwcm9kdWN0cyBtdXN0IHJlcG9ydCBhIE1BUCBvZiBhdmFpbGFibGUgY2hhbm5lbHMuIFNpbmNlIAogCQkvLyBlYWNoIFVBUlQgc3VwcG9ydHMgZm91ciBwb3J0cywgd2UgcmVwcmVzZW50IGVhY2ggVUFSVCBmb3VuZCBieSBhCiAJCS8vIHNpbmdsZSBiaXQuIFVzaW5nIHR3byBieXRlcyB0byBzdXBwbHkgdGhlIG1hcHBpbmcgaW5mb3JtYXRpb24gd2UKLQkJLy8gcmVwb3J0IHRoZSBwcmVzZW5zZSBvciBhYnNlbnNlIG9mIHVwIHRvIDE2IFVBUlRTLCBvciA2NCBwb3J0cyBpbgorCQkvLyByZXBvcnQgdGhlIHByZXNlbmNlIG9yIGFic2VuY2Ugb2YgdXAgdG8gMTYgVUFSVFMsIG9yIDY0IHBvcnRzIGluCiAJCS8vIHN0ZXBzIG9mIDQgcG9ydHMuIEZvciAtSUlFWCBwcm9kdWN0cywgdGhlIHBvcnRzIGFyZSBudW1iZXJlZAogCQkvLyBzdGFydGluZyBhdCB0aGUgYm94IGNsb3Nlc3QgdG8gdGhlIGNvbnRyb2xsZXIgaW4gdGhlICJjaGFpbiIuCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kybGliLmMgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pMmxpYi5jCmluZGV4IDBkMTBiODkuLjEzYTNjYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2kybGliLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaTJsaWIuYwpAQCAtODIxLDcgKzgyMSw3IEBACiAvLwogLy8gRGVzY3JpcHRpb246CiAvLyBTdHJpcHMgZGF0YSBmcm9tIHRoZSBpbnB1dCBidWZmZXIgYW5kIHdyaXRlcyBpdCB0byBwRGVzdC4gSWYgdGhlcmUgaXMgYQotLy8gY29sbG9zYWwgYmx1bmRlciwgKGludmFsaWQgc3RydWN0dXJlIHBvaW50ZXJzIG9yIHRoZSBsaWtlKSwgcmV0dXJucyAtMS4KKy8vIGNvbG9zc2FsIGJsdW5kZXIsIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksIHJldHVybnMgLTEuCiAvLyBPdGhlcndpc2UsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZWFkLgogLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIHN0YXRpYyBpbnQKQEAgLTkwOSw3ICs5MDksNyBAQAogLy8gUmV0dXJuczogICAgTnVtYmVyIG9mIGJ5dGVzIHN0cmlwcGVkLCBvciAtMSBmb3IgZXJyb3IKIC8vCiAvLyBEZXNjcmlwdGlvbjoKLS8vIFN0cmlwcyBhbnkgZGF0YSBmcm9tIHRoZSBpbnB1dCBidWZmZXIuIElmIHRoZXJlIGlzIGEgY29sbG9zYWwgYmx1bmRlciwKKy8vIFN0cmlwcyBhbnkgZGF0YSBmcm9tIHRoZSBpbnB1dCBidWZmZXIuIElmIHRoZXJlIGlzIGEgY29sb3NzYWwgYmx1bmRlciwKIC8vIChpbnZhbGlkIHN0cnVjdHVyZSBwb2ludGVycyBvciB0aGUgbGlrZSksIHJldHVybnMgLTEuIE90aGVyd2lzZSwgcmV0dXJucyB0aGUKIC8vIG51bWJlciBvZiBieXRlcyBzdHJpcHBlZC4KIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC05NjMsNyArOTYzLDcgQEAKIC8vIFJldHVybnM6ICAgIE51bWJlciBvZiBieXRlcyBhdmFpbGFibGUsIG9yIC0xIGZvciBlcnJvcgogLy8KIC8vIERlc2NyaXB0aW9uOgotLy8gSWYgdGhlcmUgaXMgYSBjb2xsb3NhbCBibHVuZGVyLCAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLAorLy8gSWYgdGhlcmUgaXMgYSBjb2xvc3NhbCBibHVuZGVyLCAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLAogLy8gcmV0dXJucyAtMS4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RyaXBwZWQuIE90aGVyd2lzZSwKIC8vIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBhdmFpbGFibGUgaW4gdGhlIGJ1ZmZlci4KIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC0xMDAxLDcgKzEwMDEsNyBAQAogLy8KIC8vIERlc2NyaXB0aW9uOgogLy8gUXVldWVzIHRoZSBkYXRhIGF0IHBTb3VyY2UgdG8gYmUgc2VudCBhcyBkYXRhIHBhY2tldHMgdG8gdGhlIGJvYXJkLiBJZiB0aGVyZQotLy8gaXMgYSBjb2xsb3NhbCBibHVuZGVyLCAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLCByZXR1cm5zIC0xLgorLy8gaXMgYSBjb2xvc3NhbCBibHVuZGVyLCAoaW52YWxpZCBzdHJ1Y3R1cmUgcG9pbnRlcnMgb3IgdGhlIGxpa2UpLCByZXR1cm5zIC0xLgogLy8gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gV2hhdCBpZiB0aGVyZSBpcyBub3QgZW5vdWdoCiAvLyByb29tIGZvciBhbGwgdGhlIGRhdGE/IElmIHBDaC0+Y2hhbm5lbE9wdGlvbnMgJiBDT19OQkxPQ0tfV1JJVEUgaXMgc2V0LCB0aGVuCiAvLyB3ZSB0cmFuc2ZlciBhcyBtYW55IGNoYXJhY3RlcnMgYXMgd2UgY2FuIG5vdywgdGhlbiByZXR1cm4uIElmIHRoaXMgYml0IGlzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pcDJtYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L2lwMi9pcDJtYWluLmMKaW5kZXggZWE3YThmYi4uYmEwNzRmYiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3R0eS9pcDIvaXAybWFpbi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvaXAyL2lwMm1haW4uYwpAQCAtMTgyNCw3ICsxODI0LDcgQEAKIC8vCQlpcDJ0cmFjZSAoQ0hBTk4sIElUUkNfUFVUQywgMTAsIDEsIHN0cmlwICk7CiAKIAkJLy8KLQkJLy8gV2UgbWF5IG5lZWQgdG8gcmVzdGFydCBpMk91dHB1dCBpZiBpdCBkb2VzIG5vdCBmdWxsZmlsbCB0aGlzIHJlcXVlc3QKKwkJLy8gV2UgbWF5IG5lZWQgdG8gcmVzdGFydCBpMk91dHB1dCBpZiBpdCBkb2VzIG5vdCBmdWxmaWxsIHRoaXMgcmVxdWVzdAogCQkvLwogCQlzdHJpcCA9IGkyT3V0cHV0KCBwQ2gsIHBDaC0+UGJ1ZiwgcENoLT5QYnVmX3N0dWZmKTsKIAkJaWYgKCBzdHJpcCAhPSBwQ2gtPlBidWZfc3R1ZmYgKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeC5jIGIvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXguYwppbmRleCAxN2ExYmU1Li5jYjI0YzZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy90dHkvc3BlY2lhbGl4LmMKQEAgLTksNyArOSw3IEBACiAgKiAgICAgIHN1cHBvcnQuIEJ1dCBwbGVhc2UgcmVhZCB0aGUgZG9jdW1lbnRhdGlvbiAoc3BlY2lhbGl4LnR4dCkKICAqICAgICAgZmlyc3QuCiAgKgotICogICAgICBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcHBlZCBpbiB0aGUgQml0V2l6YXJkIGxpbnV4IGRldmljZQorICogICAgICBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcGVkIGluIHRoZSBCaXRXaXphcmQgbGludXggZGV2aWNlCiAgKiAgICAgIGRyaXZlciBzZXJ2aWNlLiBJZiB5b3UgcmVxdWlyZSBhIGxpbnV4IGRldmljZSBkcml2ZXIgZm9yIHlvdXIKICAqICAgICAgcHJvZHVjdCwgcGxlYXNlIGNvbnRhY3QgZGV2aWNlc0BCaXRXaXphcmQubmwgZm9yIGEgcXVvdGUuCiAgKgpAQCAtOTc4LDcgKzk3OCw3IEBACiAJc3Bpbl9sb2NrX2lycXNhdmUoJmJwLT5sb2NrLCBmbGFncyk7CiAJc3hfb3V0KGJwLCBDRDE4NnhfQ0FSLCBwb3J0X05vKHBvcnQpKTsKIAotCS8qIFRoZSBTcGVjaWFsaXggYm9hcmQgZG9lbnMndCBpbXBsZW1lbnQgdGhlIFJUUyBsaW5lcy4KKwkvKiBUaGUgU3BlY2lhbGl4IGJvYXJkIGRvZXMndCBpbXBsZW1lbnQgdGhlIFJUUyBsaW5lcy4KIAkgICBUaGV5IGFyZSB1c2VkIHRvIHNldCB0aGUgSVJRIGxldmVsLiBEb24ndCB0b3VjaCB0aGVtLiAqLwogCWlmIChzeF9jcnRzY3RzKHR0eSkpCiAJCXBvcnQtPk1TVlIgPSBNU1ZSX0RUUiB8IChzeF9pbihicCwgQ0QxODZ4X01TVlIpICYgTVNWUl9SVFMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3R0eS9zcGVjaWFsaXhfaW84LmggYi9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeF9pbzguaAppbmRleCBjNjMwMDUyLi4xMjE1ZDdlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeF9pbzguaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdHR5L3NwZWNpYWxpeF9pbzguaApAQCAtMTAsNyArMTAsNyBAQAogICogICAgICBQbGVhc2UgRE8gY29udGFjdCBpbzgtbGludXhAc3BlY2lhbGl4LmNvLnVrIGlmIHlvdSByZXF1aXJlCiAgKiAgICAgIHN1cHBvcnQuCiAgKgotICogICAgICBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcHBlZCBpbiB0aGUgQml0V2l6YXJkIGxpbnV4IGRldmljZQorICogICAgICBUaGlzIGRyaXZlciB3YXMgZGV2ZWxvcGVkIGluIHRoZSBCaXRXaXphcmQgbGludXggZGV2aWNlCiAgKiAgICAgIGRyaXZlciBzZXJ2aWNlLiBJZiB5b3UgcmVxdWlyZSBhIGxpbnV4IGRldmljZSBkcml2ZXIgZm9yIHlvdXIKICAqICAgICAgcHJvZHVjdCwgcGxlYXNlIGNvbnRhY3QgZGV2aWNlc0BCaXRXaXphcmQubmwgZm9yIGEgcXVvdGUuCiAgKgpAQCAtNzksNyArNzksNyBAQAogCiAjZGVmaW5lIFNQRUNJQUxJWF9NQUdJQwkJMHgwOTA3CiAKLSNkZWZpbmUgU1hfQ0NSX1RJTUVPVVQgMTAwMDAgICAvKiBDQ1IgdGltZW91dC4gWW91IG1heSBuZWVkIHRvIHdhaXQgdXB0bworI2RlZmluZSBTWF9DQ1JfVElNRU9VVCAxMDAwMCAgIC8qIENDUiB0aW1lb3V0LiBZb3UgbWF5IG5lZWQgdG8gd2FpdCB1cCB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwIG1pbGxpc2Vjb25kcyBiZWZvcmUgdGhlIGludGVybmFsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yIGlzIGF2YWlsYWJsZSBhZ2FpbiBhZnRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlvdSBnaXZlIGl0IGEgY29tbWFuZCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3VzYmlwL3ZoY2lfaGNkLmMgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9oY2QuYwppbmRleCBlMjM0ODQ5Li4wZjAyYTRiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9oY2QuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdXNiaXAvdmhjaV9oY2QuYwpAQCAtMTk0LDcgKzE5NCw3IEBACiAgKgogICogU28sIHRoZSBtYXhpbXVtIG51bWJlciBvZiBwb3J0cyBpcyAzMSAoIHBvcnQgMCB0byBwb3J0IDMwKSA/CiAgKgotICogVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgYWN0dWFsIHRyYW5zZmVyZWQgbGVuZ3RoIGluIGJ5dGUuIElmIG5vdGhpbmcgaGFzCisgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBhY3R1YWwgdHJhbnNmZXJyZWQgbGVuZ3RoIGluIGJ5dGUuIElmIG5vdGhpbmcgaGFzCiAgKiBiZWVuIGNoYW5nZWQsIHJldHVybiAwLiBJbiB0aGUgY2FzZSB0aGF0IHRoZSBudW1iZXIgb2YgcG9ydHMgaXMgbGVzcyB0aGFuIG9yCiAgKiBlcXVhbCB0byA2IChWSENJX05QT1JUUz09NyksIHJldHVybiAxLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfY2E5MWN4NDIuYwppbmRleCBkNGE0OGM0Li5hNDAwNzI4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX2NhOTFjeDQyLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV9jYTkxY3g0Mi5jCkBAIC02MjEsNyArNjIxLDcgQEAKIAogCS8qCiAJICogTGV0J3MgYWxsb2NhdGUgdGhlIHJlc291cmNlIGhlcmUgcmF0aGVyIHRoYW4gZnVydGhlciB1cCB0aGUgc3RhY2sgYXMKLQkgKiBpdCBhdm9pZHMgcHVzaGluZyBsb2FkcyBvZiBidXMgZGVwZW5kYW50IHN0dWZmIHVwIHRoZSBzdGFjaworCSAqIGl0IGF2b2lkcyBwdXNoaW5nIGxvYWRzIG9mIGJ1cyBkZXBlbmRlbnQgc3R1ZmYgdXAgdGhlIHN0YWNrCiAJICovCiAJcmV0dmFsID0gY2E5MWN4NDJfYWxsb2NfcmVzb3VyY2UoaW1hZ2UsIHNpemUpOwogCWlmIChyZXR2YWwpIHsKQEAgLTEwNTIsNyArMTA1Miw3IEBACiAJCXBjaV9hdHRyID0gZGVzdC0+cHJpdmF0ZTsKIAl9CiAKLQkvKiBDaGVjayB3ZSBjYW4gZG8gZnVsbGZpbGwgcmVxdWlyZWQgYXR0cmlidXRlcyAqLworCS8qIENoZWNrIHdlIGNhbiBkbyBmdWxmaWxsIHJlcXVpcmVkIGF0dHJpYnV0ZXMgKi8KIAlpZiAoKHZtZV9hdHRyLT5hc3BhY2UgJiB+KFZNRV9BMTYgfCBWTUVfQTI0IHwgVk1FX0EzMiB8IFZNRV9VU0VSMSB8CiAJCVZNRV9VU0VSMikpICE9IDApIHsKIApAQCAtMTA2OSw3ICsxMDY5LDcgQEAKIAkJZ290byBlcnJfY3ljbGU7CiAJfQogCi0JLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBmdWxsZmlsbCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uICovCisJLyogQ2hlY2sgdG8gc2VlIGlmIHdlIGNhbiBmdWxmaWxsIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gKi8KIAlpZiAoISgoKHNyYy0+dHlwZSA9PSBWTUVfRE1BX1BDSSkgJiYgKGRlc3QtPnR5cGUgPT0gVk1FX0RNQV9WTUUpKSB8fAogCQkoKHNyYy0+dHlwZSA9PSBWTUVfRE1BX1ZNRSkgJiYgKGRlc3QtPnR5cGUgPT0gVk1FX0RNQV9QQ0kpKSkpIHsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguYyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmMKaW5kZXggYjAwYTUzZS4uMTA2YWE5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX3RzaTE0OC5jCkBAIC05MjgsNyArOTI4LDcgQEAKIAlzcGluX2xvY2soJmltYWdlLT5sb2NrKTsKIAogCS8qIExldCdzIGFsbG9jYXRlIHRoZSByZXNvdXJjZSBoZXJlIHJhdGhlciB0aGFuIGZ1cnRoZXIgdXAgdGhlIHN0YWNrIGFzCi0JICogaXQgYXZvaWRzIHB1c2hpbmcgbG9hZHMgb2YgYnVzIGRlcGVuZGFudCBzdHVmZiB1cCB0aGUgc3RhY2suIElmIHNpemUKKwkgKiBpdCBhdm9pZHMgcHVzaGluZyBsb2FkcyBvZiBidXMgZGVwZW5kZW50IHN0dWZmIHVwIHRoZSBzdGFjay4gSWYgc2l6ZQogCSAqIGlzIHplcm8sIGFueSBleGlzdGluZyByZXNvdXJjZSB3aWxsIGJlIGZyZWVkLgogCSAqLwogCXJldHZhbCA9IHRzaTE0OF9hbGxvY19yZXNvdXJjZShpbWFnZSwgc2l6ZSk7CkBAIC0xMzIwLDcgKzEzMjAsNyBAQAogCiAJLyoKIAkgKiBXcml0ZXMgYXJlIHBvc3RlZC4gV2UgbmVlZCB0byBkbyBhIHJlYWQgb24gdGhlIFZNRSBidXMgdG8gZmx1c2ggb3V0Ci0JICogYWxsIG9mIHRoZSB3cml0ZXMgYmVmb3JlIHdlIGNoZWNrIGZvciBlcnJvcnMuIFdlIGNhbid0IGd1YXJlbnRlZQorCSAqIGFsbCBvZiB0aGUgd3JpdGVzIGJlZm9yZSB3ZSBjaGVjayBmb3IgZXJyb3JzLiBXZSBjYW4ndCBndWFyYW50ZWUKIAkgKiB0aGF0IHJlYWRpbmcgdGhlIGRhdGEgd2UgaGF2ZSBqdXN0IHdyaXR0ZW4gaXMgc2FmZS4gSXQgaXMgYmVsaWV2ZWQKIAkgKiB0aGF0IHRoZXJlIGlzbid0IGFueSByZWFkLCB3cml0ZSByZS1vcmRlcmluZywgc28gd2UgY2FuIHJlYWQgYW55CiAJICogbG9jYXRpb24gaW4gVk1FIHNwYWNlLCBzbyBsZXRzIHJlYWQgdGhlIERldmljZSBJRCBmcm9tIHRoZSB0c2kxNDgncwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguaCBiL2RyaXZlcnMvc3RhZ2luZy92bWUvYnJpZGdlcy92bWVfdHNpMTQ4LmgKaW5kZXggOWY5N2ZhOC4uYTNhYzJmZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3ZtZS9icmlkZ2VzL3ZtZV90c2kxNDguaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdm1lL2JyaWRnZXMvdm1lX3RzaTE0OC5oCkBAIC0yMTIsNyArMjEyLDcgQEAKICNkZWZpbmUgVFNJMTQ4X0xDU1JfT0ZGU0VUX09UQVQJCTB4MUMKIAogLyoKLSAqIFZNRWJ1cyBpbnRlcnVwdCBhY2sKKyAqIFZNRWJ1cyBpbnRlcnJ1cHQgYWNrCiAgKiBvZmZzZXQgIDIwMAogICovCiAjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQUNLMQkweDIwNApAQCAtNjEzLDcgKzYxMyw3IEBACiAvKgogICogIFBDSS1YIFN0YXR1cyBSZWdpc3RlciAoQ1JHICskMDU0KQogICovCi0jZGVmaW5lIFRTSTE0OF9QQ0ZTX1BDSVhTVEFUX1JTQ0VNICAgICAoMTw8MjkpCS8qIFJlY2lldmVkIFNwbGl0IENvbXAgRXJyb3IgKi8KKyNkZWZpbmUgVFNJMTQ4X1BDRlNfUENJWFNUQVRfUlNDRU0gICAgICgxPDwyOSkJLyogUmVjZWl2ZWQgU3BsaXQgQ29tcCBFcnJvciAqLwogI2RlZmluZSBUU0kxNDhfUENGU19QQ0lYU1RBVF9ETUNSU19NICAgKDc8PDI2KQkvKiBtYXggQ3VtdWxhdGl2ZSBSZWFkIFNpemUgKi8KICNkZWZpbmUgVFNJMTQ4X1BDRlNfUENJWFNUQVRfRE1PU1RfTSAgICg3PDwyMykJLyogbWF4IG91dHN0YW5kaW5nIFNwbGl0IFRyYW5zCiAJCQkJCQkgKi8KQEAgLTk4Miw4ICs5ODIsOCBAQAogI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0NOVFNfSVJRMSAgICAgKDI8PDIyKQkvKiBJUlExIHRvIENudHIgKi8KICNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9DTlRTX0lSUTIgICAgICgzPDwyMikJLyogSVJRMiB0byBDbnRyICovCiAKLSNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9FREdJU19NICAgICAgICgzPDwyMCkJLyogRWRnZSBpbnRlcnVwdCBNQVNLICovCi0jZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfRElTICAgICAoMTw8MjApCS8qIEVkZ2UgaW50ZXJ1cHQgRGlzYWJsZSAqLworI2RlZmluZSBUU0kxNDhfTENTUl9WSUNSX0VER0lTX00gICAgICAgKDM8PDIwKQkvKiBFZGdlIGludGVycnVwdCBNQVNLICovCisjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfRElTICAgICAoMTw8MjApCS8qIEVkZ2UgaW50ZXJydXB0IERpc2FibGUgKi8KICNkZWZpbmUgVFNJMTQ4X0xDU1JfVklDUl9FREdJU19JUlExICAgICgyPDwyMCkJLyogSVJRMSB0byBFZGdlICovCiAjZGVmaW5lIFRTSTE0OF9MQ1NSX1ZJQ1JfRURHSVNfSVJRMiAgICAoMzw8MjApCS8qIElSUTIgdG8gRWRnZSAqLwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdm1lL3ZtZV9hcGkudHh0IGIvZHJpdmVycy9zdGFnaW5nL3ZtZS92bWVfYXBpLnR4dAppbmRleCBhOTEwYTBjLi40OTEwZTkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdm1lL3ZtZV9hcGkudHh0CisrKyBiL2RyaXZlcnMvc3RhZ2luZy92bWUvdm1lX2FwaS50eHQKQEAgLTYsNyArNiw3IEBACiAKIEFzIHdpdGggb3RoZXIgc3Vic3lzdGVtcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCwgVk1FIGRldmljZSBkcml2ZXJzIHJlZ2lzdGVyCiB3aXRoIHRoZSBWTUUgc3Vic3lzdGVtLCB0eXBpY2FsbHkgY2FsbGVkIGZyb20gdGhlIGRldmljZXMgaW5pdCByb3V0aW5lLiAgVGhpcyBpcwotYWNoaWV2ZWQgdmlhIGEgY2FsbCB0byB0aGUgZm9sbHdvaW5nIGZ1bmN0aW9uOgorYWNoaWV2ZWQgdmlhIGEgY2FsbCB0byB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uOgogCiAJaW50IHZtZV9yZWdpc3Rlcl9kcml2ZXIgKHN0cnVjdCB2bWVfZHJpdmVyICpkcml2ZXIpOwogCkBAIC0xMDgsNyArMTA4LDcgQEAKID09PT09PT09PT09PT09CiAKIE1hc3RlciB3aW5kb3dzIHByb3ZpZGUgYWNjZXNzIGZyb20gdGhlIGxvY2FsIHByb2Nlc3NvcltzXSBvdXQgb250byB0aGUgVk1FIGJ1cy4KLVRoZSBudW1iZXIgb2Ygd2luZG93cyBhdmFpbGFibGUgYW5kIHRoZSBhdmFpbGFibGUgYWNjZXNzIG1vZGVzIGlzIGRlcGVuZGFudCBvbgorVGhlIG51bWJlciBvZiB3aW5kb3dzIGF2YWlsYWJsZSBhbmQgdGhlIGF2YWlsYWJsZSBhY2Nlc3MgbW9kZXMgaXMgZGVwZW5kZW50IG9uCiB0aGUgdW5kZXJseWluZyBjaGlwc2V0LiBBIHdpbmRvdyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlIGl0IGNhbiBiZSB1c2VkLgogCiAKQEAgLTE2Myw3ICsxNjMsNyBAQAogCiBTbGF2ZSB3aW5kb3dzIHByb3ZpZGUgZGV2aWNlcyBvbiB0aGUgVk1FIGJ1cyBhY2Nlc3MgaW50byBtYXBwZWQgcG9ydGlvbnMgb2YgdGhlCiBsb2NhbCBtZW1vcnkuIFRoZSBudW1iZXIgb2Ygd2luZG93cyBhdmFpbGFibGUgYW5kIHRoZSBhY2Nlc3MgbW9kZXMgdGhhdCBjYW4gYmUKLXVzZWQgaXMgZGVwZW5kYW50IG9uIHRoZSB1bmRlcmx5aW5nIGNoaXBzZXQuIEEgd2luZG93IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKK3VzZWQgaXMgZGVwZW5kZW50IG9uIHRoZSB1bmRlcmx5aW5nIGNoaXBzZXQuIEEgd2luZG93IG11c3QgYmUgY29uZmlndXJlZCBiZWZvcmUKIGl0IGNhbiBiZSB1c2VkLgogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvY2FyZC5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9jYXJkLmMKaW5kZXggOTUxYTNhOC4uMjcyMWUwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9jYXJkLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9jYXJkLmMKQEAgLTExODYsNyArMTE4Niw3IEBACiAgICAgICAgICAgICB3RHVyYXRpb24gKz0gMTsgLy8gMSBUVSBmb3IgY2hhbm5lbCBzd2l0Y2hpbmcKIAogICAgICAgICAgICAgaWYgKChMT0RXT1JEKHF3U3RhcnRUU0YpID09IDApICYmIChISURXT1JEKHF3U3RhcnRUU0YpID09IDApKSB7Ci0gICAgICAgICAgICAgICAgLy8gc3RhcnQgaW1lZGlhdGVseSBieSBzZXR0aW5nIHN0YXJ0IFRTRiA9PSBjdXJyZW50IFRTRiArIDIgVFUKKyAgICAgICAgICAgICAgICAvLyBzdGFydCBpbW1lZGlhdGVseSBieSBzZXR0aW5nIHN0YXJ0IFRTRiA9PSBjdXJyZW50IFRTRiArIDIgVFUKICAgICAgICAgICAgICAgICBMT0RXT1JEKHF3U3RhcnRUU0YpID0gTE9EV09SRChxd0N1cnJUU0YpICsgMjA0ODsKICAgICAgICAgICAgICAgICBISURXT1JEKHF3U3RhcnRUU0YpID0gSElEV09SRChxd0N1cnJUU0YpOwogICAgICAgICAgICAgICAgIGlmIChMT0RXT1JEKHF3Q3VyclRTRikgPiBMT0RXT1JEKHF3U3RhcnRUU0YpKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L2RldmljZV9tYWluLmMgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L2RldmljZV9tYWluLmMKaW5kZXggZWZhZjE5Yi4uYWQzOWM4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS9kZXZpY2VfbWFpbi5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvZGV2aWNlX21haW4uYwpAQCAtMTM3LDcgKzEzNyw3IEBACiAvKiBJUF9ieXRlX2FsaWduW10gaXMgdXNlZCBmb3IgSVAgaGVhZGVyIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkCiAgICAwOiBpbmRpY2F0ZSB0aGUgSVAgaGVhZGVyIHdvbid0IGJlIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkLihEZWZhdWx0KSAuCiAgICAxOiBpbmRpY2F0ZSB0aGUgSVAgaGVhZGVyIHdpbGwgYmUgdW5zaWduZWQgbG9uZyBieXRlIGFsaWduZWQuCi0gICAgICBJbiBzb21lIGVudmlyb21lbnQsIHRoZSBJUCBoZWFkZXIgc2hvdWxkIGJlIHVuc2lnbmVkIGxvbmcgYnl0ZSBhbGlnbmVkLAorICAgICAgSW4gc29tZSBlbnZpcm9ubWVudCwgdGhlIElQIGhlYWRlciBzaG91bGQgYmUgdW5zaWduZWQgbG9uZyBieXRlIGFsaWduZWQsCiAgICAgICBvciB0aGUgcGFja2V0IHdpbGwgYmUgZHJvcGVkIHdoZW4gd2UgcmVjZWl2ZSBpdC4gKGVnOiBJUFZTKQogKi8KIERFVklDRV9QQVJBTShJUF9ieXRlX2FsaWduLCJFbmFibGUgSVAgaGVhZGVyIGR3b3JkIGFsaWduZWQiKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93Y21kLmMKaW5kZXggYWJkNjc0NS4uYzMwMTcwYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93Y21kLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1NS93Y21kLmMKQEAgLTU4Nyw3ICs1ODcsNyBAQAogICAgICAgICAgICAgaWYgKChwTWdtdC0+ZUN1cnJNb2RlID09IFdNQUNfTU9ERV9FU1NfU1RBKSAmJiAocE1nbXQtPmVDdXJyU3RhdGUgPT0gV01BQ19TVEFURV9KT0lOVEVEKSkgewogCiAJCS8vIENhbGwgbWdyIHRvIGJlZ2luIHRoZSBkZWF1dGhlbnRpY2F0aW9uCi0gICAgICAgICAgICAgICAgLy8gcmVhc29uID0gKDMpIGJlYWN1c2Ugc3RhIGhhcyBsZWZ0IEVTUworICAgICAgICAgICAgICAgIC8vIHJlYXNvbiA9ICgzKSBiZWNhdXNlIHN0YSBoYXMgbGVmdCBFU1MKICAgICAgICAgICAgICAgICBpZiAocE1nbXQtPmVDdXJyU3RhdGU+PSBXTUFDX1NUQVRFX0FVVEgpIHsKICAgICAgICAgICAgICAgICAgICAgdk1nckRlQXV0aGVuQmVnaW5TdGEoKHZvaWQgKilwRGV2aWNlLCBwTWdtdCwgcE1nbXQtPmFieUN1cnJCU1NJRCwgKDMpLCAmU3RhdHVzKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU1L3dtZ3IuaCBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd21nci5oCmluZGV4IDE0MWU4MGIuLmUzYWU1NjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd21nci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTUvd21nci5oCkBAIC0yMjAsNyArMjIwLDcgQEAKICovCiAKIAotLy8gVHggTWFuYWdtZW50IFBhY2tldCBkZXNjcmlwdG9yCisvLyBUeCBNYW5hZ2VtZW50IFBhY2tldCBkZXNjcmlwdG9yCiB0eXBlZGVmIHN0cnVjdCB0YWdTVHhNZ210UGFja2V0IHsKIAogICAgIFBVV0xBTl84MDIxMUhEUiAgICAgcDgwMjExSGVhZGVyOwpAQCAtMjMwLDcgKzIzMCw3IEBACiB9IFNUeE1nbXRQYWNrZXQsICpQU1R4TWdtdFBhY2tldDsKIAogCi0vLyBSeCBNYW5hZ21lbnQgUGFja2V0IGRlc2NyaXB0b3IKKy8vIFJ4IE1hbmFnZW1lbnQgUGFja2V0IGRlc2NyaXB0b3IKIHR5cGVkZWYgc3RydWN0IHRhZ1NSeE1nbXRQYWNrZXQgewogCiAgICAgUFVXTEFOXzgwMjExSERSICAgICBwODAyMTFIZWFkZXI7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3J4dHguYyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvcnh0eC5jCmluZGV4IDhmMTg1NzguLjUxODVkNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvcnh0eC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvcnh0eC5jCkBAIC0xOTM4LDcgKzE5MzgsNyBAQAogICogIE91dDoKICAqICAgICAgbm9uZQogICoKLSAqIFJldHVybiBWYWx1ZTogQ01EX1NUQVRVU19QRU5ESU5HIGlmIE1BQyBUeCByZXNvdXJjZSBhdmFsaWFibGU7IG90aGVyd2lzZSBGQUxTRQorICogUmV0dXJuIFZhbHVlOiBDTURfU1RBVFVTX1BFTkRJTkcgaWYgTUFDIFR4IHJlc291cmNlIGF2YWlsYWJsZTsgb3RoZXJ3aXNlIEZBTFNFCiAgKgogLSovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy92dDY2NTYvd2NtZC5jIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93Y21kLmMKaW5kZXggYjgzYjY2MC4uMDE5ZmI1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93Y21kLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93Y21kLmMKQEAgLTQyMSw3ICs0MjEsNyBAQAogICAgICAgICAgICAgICAgICAgICBwTWdtdC0+ZVNjYW5TdGF0ZSA9IFdNQUNfSVNfU0NBTk5JTkc7CiAgICAgICAgICAgICAgICAgICAgIHBEZXZpY2UtPmJ5U2NhbkJCVHlwZSA9IHBEZXZpY2UtPmJ5QkJUeXBlOyAgLy9sdWNhcwogICAgICAgICAgICAgICAgICAgICBwRGV2aWNlLT5iU3RvcERhdGFQa3QgPSBUUlVFOwotICAgICAgICAgICAgICAgICAgICAvLyBUdXJuIG9mZiBSQ1JfQlNTSUQgZmlsdGVyIGV2ZXJ5dGltZQorICAgICAgICAgICAgICAgICAgICAvLyBUdXJuIG9mZiBSQ1JfQlNTSUQgZmlsdGVyIGV2ZXJ5IHRpbWUKICAgICAgICAgICAgICAgICAgICAgTUFDdlJlZ0JpdHNPZmYocERldmljZSwgTUFDX1JFR19SQ1IsIFJDUl9CU1NJRCk7CiAgICAgICAgICAgICAgICAgICAgIHBEZXZpY2UtPmJ5UnhNb2RlICY9IH5SQ1JfQlNTSUQ7CiAKQEAgLTYwNCw3ICs2MDQsNyBAQAogICAgICAgICAgICAgLy8gaWYgSW5mcmEgbW9kZQogICAgICAgICAgICAgaWYgKChwTWdtdC0+ZUN1cnJNb2RlID09IFdNQUNfTU9ERV9FU1NfU1RBKSAmJiAocE1nbXQtPmVDdXJyU3RhdGUgPT0gV01BQ19TVEFURV9KT0lOVEVEKSkgewogICAgICAgICAgICAgICAgIC8vIENhbGwgbWdyIHRvIGJlZ2luIHRoZSBkZWF1dGhlbnRpY2F0aW9uCi0gICAgICAgICAgICAgICAgLy8gcmVhc29uID0gKDMpIGJlYWN1c2Ugc3RhIGhhcyBsZWZ0IEVTUworICAgICAgICAgICAgICAgIC8vIHJlYXNvbiA9ICgzKSBiZWNhdXNlIHN0YSBoYXMgbGVmdCBFU1MKIAkgICAgICBpZiAocE1nbXQtPmVDdXJyU3RhdGUgPj0gV01BQ19TVEFURV9BVVRIKSB7CiAJCXZNZ3JEZUF1dGhlbkJlZ2luU3RhKCh2b2lkICopcERldmljZSwKIAkJCQkgICAgIHBNZ210LApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3Z0NjY1Ni93bWdyLmggYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3dtZ3IuaAppbmRleCA1OTRmM2E4Li4xM2RmYjNiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3dtZ3IuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvdnQ2NjU2L3dtZ3IuaApAQCAtMjE4LDcgKzIxOCw3IEBACiAKIAogCi0vLyBUeCBNYW5hZ21lbnQgUGFja2V0IGRlc2NyaXB0b3IKKy8vIFR4IE1hbmFnZW1lbnQgUGFja2V0IGRlc2NyaXB0b3IKIHR5cGVkZWYgc3RydWN0IHRhZ1NUeE1nbXRQYWNrZXQgewogCiAgICAgUFVXTEFOXzgwMjExSERSICAgICBwODAyMTFIZWFkZXI7CkBAIC0yMjgsNyArMjI4LDcgQEAKIH0gU1R4TWdtdFBhY2tldCwgKlBTVHhNZ210UGFja2V0OwogCiAKLS8vIFJ4IE1hbmFnbWVudCBQYWNrZXQgZGVzY3JpcHRvcgorLy8gUnggTWFuYWdlbWVudCBQYWNrZXQgZGVzY3JpcHRvcgogdHlwZWRlZiBzdHJ1Y3QgdGFnU1J4TWdtdFBhY2tldCB7CiAKICAgICBQVVdMQU5fODAyMTFIRFIgICAgIHA4MDIxMUhlYWRlcjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzZG1hLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2RtYS5jCmluZGV4IDE2YjhlYzEuLmM0NjFkNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzZG1hLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNkbWEuYwpAQCAtMTA4Miw3ICsxMDgyLDcgQEAKIAkvKgogCSAqIGlmIHRoZSBkYXRhIHJlY2VpdmVkIGV4Y2VlZHMgdGhlIHNpemUgb2YgdGhlIERNQSBidWZmZXIsCiAJICogY2xpcCB0aGUgZGF0YSB0byB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiAgdGhpcyBjYW4gbGVhZAotCSAqIHRvIGxvb3Npbmcgc29tZSBkYXRhLCBidXQgaXMgbm90IGRpZmZlcmVudCB0aGFuIGRvaW5nCisJICogdG8gbG9zaW5nIHNvbWUgZGF0YSwgYnV0IGlzIG5vdCBkaWZmZXJlbnQgdGhhbiBkb2luZwogCSAqIG5vbi1wYWNrZXQgcmVhZHMgb24gdGhlIG90aGVyIGVuZHBvaW50cy4KIAkgKi8KIAlpZiAoZHNpemUgPiBkbWFfcC0+c2l6ZSAtIGRtYV9wLT5vZmZzZXQpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xlcDJwZXAuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbGVwMnBlcC5jCmluZGV4IDYwYjZmMzUuLjc2ODIxZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbGVwMnBlcC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbGVwMnBlcC5jCkBAIC0xMjYsNyArMTI2LDcgQEAKIAljeV9hc19waHlzaWNhbF9lbmRwb2ludF9zdGF0ZSBkZXNpcmVkOwogCiAJLyoKLQkgKiBub3RlLCB0aGVyZSBpcyBubyBlcnJvciBjaGVja2luZyBoZXJlIGJlY3Vhc2UKKwkgKiBub3RlLCB0aGVyZSBpcyBubyBlcnJvciBjaGVja2luZyBoZXJlIGJlY2F1c2UKIAkgKiBJU08gZXJyb3IgY2hlY2tpbmcgaGFwcGVucyB3aGVuIHRoZSBBUEkgaXMgY2FsbGVkLgogCSAqLwogCWZvciAoaSA9IDA7IGkgPCAxMDsgaSsrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xvd2xldmVsLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc2xvd2xldmVsLmMKaW5kZXggZDQzZGQ4NS4uOTZhODZkMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNsb3dsZXZlbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbG93bGV2ZWwuYwpAQCAtNDMyLDcgKzQzMiw3IEBACiAqIGlzIHJlY2VpdmVkLiAgV2hlbiBhIGNvbXBsZXRlIHJlcXVlc3QgaXMgcmVjZWl2ZWQsIHRoZSBjYWxsYmFjawogKiBhc3NvY2lhdGVkIHdpdGggcmVxdWVzdHMgb24gdGhhdCBjb250ZXh0IGlzIGNhbGxlZC4gIFdoZW4gYSBjb21wbGV0ZQogKiByZXNwb25zZSBpcyByZWNldmllZCwgdGhlIGNhbGxiYWNrIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVxdWVzdCB0aGF0Ci0qIGdlbmVyYXRlZCB0aGUgcmVwb25zZSBpcyBjYWxsZWQuCisqIGdlbmVyYXRlZCB0aGUgcmVzcG9uc2UgaXMgY2FsbGVkLgogKi8KIHZvaWQKIGN5X2FzX21haWxfYm94X2ludGVycnVwdF9oYW5kbGVyKGN5X2FzX2RldmljZSAqZGV2X3ApCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc21pc2MuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbWlzYy5jCmluZGV4IDc4NTI0MTAuLjQ1NjRmYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbWlzYy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbWlzYy5jCkBAIC00MjgsNyArNDI4LDcgQEAKIAkJCQlpZiAodiAmIENZX0FTX01FTV9QMF9WTV9TRVRfQ0ZHTU9ERSkKIAkJCQkJY3lfYXNfaGFsX3ByaW50X21lc3NhZ2UoCiAJCQkJCSJpbml0aWFsaXphdGlvbiBtZXNzYWdlICIKLQkJCQkJInJlY2lldmVkLCBidXQgY29uZmlnIGJpdCAiCisJCQkJCSJyZWNlaXZlZCwgYnV0IGNvbmZpZyBiaXQgIgogCQkJCQkic3RpbGwgc2V0XG4iKTsKIAogCQkJCXYgPSBjeV9hc19oYWxfcmVhZF9yZWdpc3RlcihkZXZfcC0+dGFnLApAQCAtNDM2LDcgKzQzNiw3IEBACiAJCQkJaWYgKCh2ICYgQ1lfQVNfTUVNX1JTVF9SU1RDTVBUKSA9PSAwKQogCQkJCQljeV9hc19oYWxfcHJpbnRfbWVzc2FnZSgKIAkJCQkJImluaXRpYWxpemF0aW9uIG1lc3NhZ2UgIgotCQkJCQkicmVjaWV2ZWQsIGJ1dCByZXNldCBjb21wbGV0ZSAiCisJCQkJCSJyZWNlaXZlZCwgYnV0IHJlc2V0IGNvbXBsZXRlICIKIAkJCQkJImJpdCBzdGlsbCBub3Qgc2V0XG4iKTsKIAkJCX0KIAkJCWJyZWFrOwpAQCAtMjM4MSw3ICsyMzgxLDcgQEAKIAkvKgogCSAqIHJlbGVhc2UgdGhlIHdlc3QgYnJpZGdlIG1pY3JvLV9jb250cm9sbGVyIGZyb20gcmVzZXQsCiAJICogc28gdGhhdCBmaXJtd2FyZSBpbml0aWFsaXphdGlvbiBjYW4gY29tcGxldGUuIHRoZSBhdHRlbXB0Ci0JICogdG8gcmVsZWFzZSBhbnRpb2NoIHJlc2V0IGlzIG1hZGUgdXB0byA4IHRpbWVzLgorCSAqIHRvIHJlbGVhc2UgYW50aW9jaCByZXNldCBpcyBtYWRlIHVwIHRvIDggdGltZXMuCiAJICovCiAJdiA9IDB4MDM7CiAJY291bnQgPSAweDA4OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNtdHAuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzbXRwLmMKaW5kZXggMzY4OTg0Ni4uODU5ODM2NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXNtdHAuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc210cC5jCkBAIC0zNDYsNyArMzQ2LDcgQEAKIAogCQlkZXZfcC0+bXRwX2V2ZW50X2NiID0gZXZlbnRfY19iOwogCQkvKgotCQkqIHdlIHJlZ2lzdGVyIGhlcmUgYmVjdWFzZSB0aGUgc3RhcnQgcmVxdWVzdCBtYXkgY2F1c2UKKwkJKiB3ZSByZWdpc3RlciBoZXJlIGJlY2F1c2UgdGhlIHN0YXJ0IHJlcXVlc3QgbWF5IGNhdXNlCiAJCSogZXZlbnRzIHRvIG9jY3VyIGJlZm9yZSB0aGUgcmVzcG9uc2UgdG8gdGhlIHN0YXJ0IHJlcXVlc3QuCiAJCSovCiAJCWN5X2FzX2xsX3JlZ2lzdGVyX3JlcXVlc3RfY2FsbGJhY2soZGV2X3AsCkBAIC00MjQsNyArNDI0LDcgQEAKIAkJZ290byBkZXN0cm95OwogCiAJLyoKLQkqIHdlIHN1Y2Vzc2Z1bGx5IHNodXRkb3duIHRoZSBzdGFjaywgc28gZGVjcmVtZW50CisJKiB3ZSBzdWNjZXNzZnVsbHkgc2h1dGRvd24gdGhlIHN0YWNrLCBzbyBkZWNyZW1lbnQKIAkqIHRvIG1ha2UgdGhlIGNvdW50IHplcm8uCiAJKi8KIAlkZXZfcC0+bXRwX2NvdW50LS07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3N0b3JhZ2UuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzc3RvcmFnZS5jCmluZGV4IDI0NTE0MDQuLjdhYmQ2YTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzc3RvcmFnZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzc3RvcmFnZS5jCkBAIC0xNzczLDcgKzE3NzMsNyBAQAogCWlmICh1bml0ID4gMjU1KQogCQlyZXR1cm4gQ1lfQVNfRVJST1JfTk9fU1VDSF9VTklUOwogCi0JLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNlc3MgaWYgdGhlIG51bWJlciBvZgorCS8qIFdlIGFyZSBzdXBwb3NlZCB0byByZXR1cm4gc3VjY2VzcyBpZiB0aGUgbnVtYmVyIG9mCiAJKiBibG9ja3MgaXMgemVybwogCSovCiAJaWYgKG51bV9ibG9ja3MgPT0gMCkgewpAQCAtMTk2OSw3ICsxOTY5LDcgQEAKIAlpZiAoY3lfYXNfZGV2aWNlX2lzX3VzYl9hc3luY19wZW5kaW5nKGRldl9wLCA2KSkKIAkJcmV0dXJuIENZX0FTX0VSUk9SX0FTWU5DX1BFTkRJTkc7CiAKLQkvKiBXZSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIHN1Y2VzcyBpZiB0aGUgbnVtYmVyIG9mCisJLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNjZXNzIGlmIHRoZSBudW1iZXIgb2YKIAkqIGJsb2NrcyBpcyB6ZXJvCiAJKi8KIAlpZiAobnVtX2Jsb2NrcyA9PSAwKQpAQCAtMzI4NSw3ICszMjg1LDcgQEAKIAlpZiAoY2FsbGJhY2sgPT0gMCkKIAkJcmV0dXJuIENZX0FTX0VSUk9SX05VTExfQ0FMTEJBQ0s7CiAKLQkvKiBXZSBhcmUgc3VwcG9zZWQgdG8gcmV0dXJuIHN1Y2VzcyBpZiB0aGUgbnVtYmVyIG9mCisJLyogV2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBzdWNjZXNzIGlmIHRoZSBudW1iZXIgb2YKIAkgKiBibG9ja3MgaXMgemVybwogCSAqLwogCWlmICgoKG1pc2NfYnVmJkNZX1NESU9fQkxPQ0tNT0RFKSAhPSAwKSAmJiAoYXJndW1lbnQgPT0gMCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzdXNiLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FwaS9zcmMvY3lhc3VzYi5jCmluZGV4IDkyZWE0MjUuLjFiNTVlNjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXBpL3NyYy9jeWFzdXNiLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcGkvc3JjL2N5YXN1c2IuYwpAQCAtNzM5LDcgKzczOSw3IEBACiAJCWN5X2FzX3VzYl9yZXNldF9lX3AwX3N0YXRlKGRldl9wKTsKIAogCQkvKgotCQkqIHdlIHJlZ2lzdGVyIGhlcmUgYmVjdWFzZSB0aGUgc3RhcnQgcmVxdWVzdCBtYXkgY2F1c2UKKwkJKiB3ZSByZWdpc3RlciBoZXJlIGJlY2F1c2UgdGhlIHN0YXJ0IHJlcXVlc3QgbWF5IGNhdXNlCiAJCSogZXZlbnRzIHRvIG9jY3VyIGJlZm9yZSB0aGUgcmVzcG9uc2UgdG8gdGhlIHN0YXJ0IHJlcXVlc3QuCiAJCSovCiAJCWN5X2FzX2xsX3JlZ2lzdGVyX3JlcXVlc3RfY2FsbGJhY2soZGV2X3AsCkBAIC04NjcsNyArODY3LDcgQEAKIAkJZ290byBkZXN0cm95OwogCiAJLyoKLQkgKiB3ZSBzdWNlc3NmdWxseSBzaHV0ZG93biB0aGUgc3RhY2ssIHNvCisJICogd2Ugc3VjY2Vzc2Z1bGx5IHNodXRkb3duIHRoZSBzdGFjaywgc28KIAkgKiBkZWNyZW1lbnQgdG8gbWFrZSB0aGUgY291bnQgemVyby4KIAkgKi8KIAljeV9hc191c2JfY2xlYW51cChkZXZfcCk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL21hY2gtb21hcDIvY3lhc2hhbG9tYXBfa2VybmVsLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL21hY2gtb21hcDIvY3lhc2hhbG9tYXBfa2VybmVsLmMKaW5kZXggMjFjZGIwNi4uM2JjZWRjZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9tYWNoLW9tYXAyL2N5YXNoYWxvbWFwX2tlcm5lbC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vbWFjaC1vbWFwMi9jeWFzaGFsb21hcF9rZXJuZWwuYwpAQCAtODcsNyArODcsNyBAQAogCiAKIC8qCi0gKiBGb3IgcGVyZm9ybWFuY2UgcmVhc29ucywgd2UgaGFuZGxlIHN0b3JhZ2UgZW5kcG9pbnQgdHJhbnNmZXJzIHVwdG8gNCBLQgorICogRm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMsIHdlIGhhbmRsZSBzdG9yYWdlIGVuZHBvaW50IHRyYW5zZmVycyB1cCB0byA0IEtCCiAgKiB3aXRoaW4gdGhlIEhBTCBpdHNlbGYuCiAgKi8KICAjZGVmaW5lIENZQVNTVE9SQUdFX1dSSVRFX0VQX05VTQkoNCkKQEAgLTEwOCwxMiArMTA4LDEyIEBACiAJCQkJKChlcCkgPT0gNikgfHwgKChlcCkgPT0gOCkpCiAKIC8qCi0gKiBwZXJzaXN0YW50LCBzdG9yZXMgY3VycmVudCBHUE1DIGludGVyZmFjZSBjZmcgbW9kZQorICogcGVyc2lzdGVudCwgc3RvcmVzIGN1cnJlbnQgR1BNQyBpbnRlcmZhY2UgY2ZnIG1vZGUKICAqLwogc3RhdGljIHVpbnQ4X3QgcG5hbmRfMTZiaXQ7CiAKIC8qCi0gKiBrZWVwIHByb2Nlc3NpbmcgbmV3IFdCIERSUSBpbiBJU1IgdW50aWxsIGFsbCBoYW5kbGVkIChwZXJmb3JtYW5jZSBmZWF0dXJlKQorICoga2VlcCBwcm9jZXNzaW5nIG5ldyBXQiBEUlEgaW4gSVNSIHVudGlsIGFsbCBoYW5kbGVkIChwZXJmb3JtYW5jZSBmZWF0dXJlKQogICovCiAjZGVmaW5lIFBST0NFU1NfTVVMVElQTEVfRFJRX0lOX0lTUiAoMSkKIApAQCAtMTU3LDcgKzE1Nyw3IEBACiAJICogZG1hX3hmZXJfc3ogLSBzaXplIG9mIHRoZSBuZXh0IGRtYSB4ZmVyIG9uIFAgcG9ydAogCSAqIHNlZ194ZmVyX2NudCAtICBjb3VudHMgeGZlcmVkIGJ5dGVzIGZvciBpbiBjdXJyZW50IHNnX2xpc3QKIAkgKgkJbWVtb3J5IHNlZ21lbnQKLQkgKiByZXFfeGZlcl9jbnQgLSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJlZCBzbyBmYXIgaW4KKwkgKiByZXFfeGZlcl9jbnQgLSB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgdHJhbnNmZXJyZWQgc28gZmFyIGluCiAJICoJCWN1cnJlbnQgcmVxdWVzdAogCSAqIHJlcV9sZW5ndGggLSB0b3RhbCByZXF1ZXN0IGxlbmd0aAogCSAqLwpAQCAtMjE2MCw3ICsyMTYwLDcgQEAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGlzIGV4cGVjdGVkIHRvIGNyZWF0ZSBhIHNsZWVwIGNoYW5uZWwuCiAgKiBUaGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCByZXByZXNlbnRzIHRoZSBzbGVlcCBjaGFubmVsIG9iamVjdAotICogc2xlZXAgY2hhbm5lbCAod2hpY2ggaXMgTGludXggIndhaXRfcXVldWVfaGVhZF90IHdxIiBmb3IgdGhpcyBwYXRpY3VsYXIgSEFMKQorICogc2xlZXAgY2hhbm5lbCAod2hpY2ggaXMgTGludXggIndhaXRfcXVldWVfaGVhZF90IHdxIiBmb3IgdGhpcyBwYXJ0aWN1bGFyIEhBTCkKICAqIHBhc3NlZCBhcyBhIHBvaW50ZXIsIGFuZCBhbGxwb2NhdGVkIGJ5IHRoZSBjYWxsZXIKICAqICh0eXBpY2FsbHkgYXMgYSBsb2NhbCB2YXIgb24gdGhlIHN0YWNrKSAiQ3JlYXRlIiB3b3JkIHNob3VsZCByZWFkIGFzCiAgKiAiU2xlZXBPbiIsIHRoaXMgZnVuYyBkb2Vzbid0IGFjdHVhbGx5IGNyZWF0ZSBhbnl0aGluZwpAQCAtMjM2NCw3ICsyMzY0LDcgQEAKIAkgKi8KIAljeV9hc19oYWxfZ3BtY19lbmFibGVfMTZiaXRfYnVzKGN5X3RydWUpOwogI2Vsc2UKLSAgIC8qIEFzdG9yaWEgYW5kIEdQTUMgYXJlIGFscmVhZHkgaW4gOCBiaXQgbW9kZSwganN1dCBpbml0aWFsaXplIFBOQU5EX0NGRyAqLworICAgLyogQXN0b3JpYSBhbmQgR1BNQyBhcmUgYWxyZWFkeSBpbiA4IGJpdCBtb2RlLCBqdXN0IGluaXRpYWxpemUgUE5BTkRfQ0ZHICovCiAJYXN0X3BfbmFuZF9jYXNkaV93cml0ZShDWV9BU19NRU1fUE5BTkRfQ0ZHLCAweDAwMDApOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNoYWxvbWFwX2tlcm5lbC5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc2hhbG9tYXBfa2VybmVsLmgKaW5kZXggODBkZDUzMC4uNjQyNmVhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc2hhbG9tYXBfa2VybmVsLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc2hhbG9tYXBfa2VybmVsLmgKQEAgLTIwLDcgKzIwLDcgQEAKICovCiAKIC8qCi0gKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGRlZmludGlvbiBvZiB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24KKyAqIFRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgaGFyZHdhcmUgYWJzdHJhY3Rpb24KICAqIGxheWVyIG9uIE9NQVAzNDMwIHRhbGtpbmcgdG8gdGhlIFdlc3QgQnJpZGdlIEFzdG9yaWEgZGV2aWNlCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc21lbW1hcC5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9hcmNoL2FybS9wbGF0LW9tYXAvaW5jbHVkZS9tYWNoL3dlc3RicmlkZ2Uvd2VzdGJyaWRnZS1vbWFwMy1wbmFuZC1oYWwvY3lhc21lbW1hcC5oCmluZGV4IDNlZWUxOTIuLjQ2ZjA2ZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYXJjaC9hcm0vcGxhdC1vbWFwL2luY2x1ZGUvbWFjaC93ZXN0YnJpZGdlL3dlc3RicmlkZ2Utb21hcDMtcG5hbmQtaGFsL2N5YXNtZW1tYXAuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2FyY2gvYXJtL3BsYXQtb21hcC9pbmNsdWRlL21hY2gvd2VzdGJyaWRnZS93ZXN0YnJpZGdlLW9tYXAzLXBuYW5kLWhhbC9jeWFzbWVtbWFwLmgKQEAgLTUxLDcgKzUxLDcgQEAKICAqIAkJCQkJCQlHUE1DX0FERFIKICAqCQkJCQkJCVtBODpBMV0tPnVwRFs3OjBdCiAgKiBJTlQjCS1HUE1DX25XUF9HUElPXzYyCi0gKiBEQUNLCS1OL0MJCQkJIG5vdCBjb25lY3RlZAorICogREFDSwktTi9DCQkJCSBub3QgY29ubmVjdGVkCiAgKiBXQUtFVVAtR1BJT18xNjcKICAqIFJFU0VULUdQSU9fMTI2CiAgKiBSL0IJLUdQTUNfV0FJVDJfR1BJT182NApAQCAtMTA4LDcgKzEwOCw3IEBACiAJICoJCQkJCXdpbGwgYmUgbW9uaXRvcmVkCiAJICogUEZfRU5fRU5HSU5FIC0gMS0gRU5BQkxFUyBFTkdJTkUsIGJ1dCBpdCBuZWVkcyB0byBiZSBzdGFydGVkIGFmdGVyCiAJICoJCQkJCXRoYXQgQyBjdHJsIHJlZyBiaXQgMAotCSAqIFBGX0ZJRk9fVEhSRVNIT0xEIC0gRklGTyB0aHJlc2hob2xkIGluIG51bWJlciBvZiBCVVMoOCBvciAxNikgd29yZHMKKwkgKiBQRl9GSUZPX1RIUkVTSE9MRCAtIEZJRk8gdGhyZXNob2xkIGluIG51bWJlciBvZiBCVVMoOCBvciAxNikgd29yZHMKIAkgKiBQRl9XRUlHSFRFRF9QUklPICAtIE5VTSBvZiBjeWNsZXMgZ3JhbnRlZCB0byBQRkUgaWYgUk5EX1JPQklOCiAJICoJCQkJCXByaW9yaXRpemF0aW9uIGlzIGVuYWJsZWQKIAkgKiBQRl9ST1VORF9ST0JJTiAgLSBpZiBlbmFibGVkLCBnaXZlcyBwcmlvcml0eSB0byBvdGhlciBDUywgYnV0CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2Jsb2NrL2N5YXNibGtkZXZfcXVldWUuYyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYmxvY2svY3lhc2Jsa2Rldl9xdWV1ZS5jCmluZGV4IDBiYmI4YTMuLmQxOTk2YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYmxvY2svY3lhc2Jsa2Rldl9xdWV1ZS5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvYmxvY2svY3lhc2Jsa2Rldl9xdWV1ZS5jCkBAIC0yMjIsNyArMjIyLDcgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJLyogbmV3IHJlcSByZWNpZXZlZCwgaXNzdWUgaXQgdG8gdGhlIGRyaXZlciAgKi8KKwkJLyogbmV3IHJlcSByZWNlaXZlZCwgaXNzdWUgaXQgdG8gdGhlIGRyaXZlciAgKi8KIAkJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKIAogCQkjaWZuZGVmIFdFU1RCUklER0VfTkRFQlVHCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZGV2aWNlLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZGV2aWNlLmgKaW5kZXggMGMwNzI2YjYuLjY0NTJhOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkZXZpY2UuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZGV2aWNlLmgKQEAgLTExOSw3ICsxMTksNyBAQAogI2RlZmluZSBDWV9BU19SRVFVRVNUX0xJU1RfU1RBVEVfUVVFVUVEICgweDAwKQogLyogVGhlIHJlcXVlc3QgaXMgc2VudCwgd2FpdGluZyBmb3IgcmVzcG9uc2UgKi8KICNkZWZpbmUgQ1lfQVNfUkVRVUVTVF9MSVNUX1NUQVRFX1dBSVRJTkcgKDB4MDEpCi0vKiBUaGUgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQsIHByb2Nlc3NpbmcgcmVwb25zZSAqLworLyogVGhlIHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLCBwcm9jZXNzaW5nIHJlc3BvbnNlICovCiAjZGVmaW5lIENZX0FTX1JFUVVFU1RfTElTVF9TVEFURV9SRUNFSVZFRCAoMHgwMikKIC8qIFRoZSByZXF1ZXN0L3Jlc3BvbnNlIGlzIGJlaW5nIGNhbmNlbGVkICovCiAjZGVmaW5lIENZX0FTX1JFUVVFU1RfTElTVF9TVEFURV9DQU5DRUxJTkcgKDB4MDMpCkBAIC01MTcsNyArNTE3LDcgQEAKIAljeV9hc19sbF9yZXF1ZXN0X2xpc3Rfbm9kZSAqcmVxdWVzdF9xdWV1ZV9wOwogCS8qIFRoZSBsaXN0IG5vZGUgaW4gdGhlIHJlcXVlc3QgcXVldWUgKi8KIAljeV9hc19sbF9yZXF1ZXN0X2xpc3Rfbm9kZSAqbGFzdF9ub2RlX3A7Ci0JLyogSW5kZXggdXB0byB3aGljaCBkYXRhIGlzIHN0b3JlZC4gKi8KKwkvKiBJbmRleCB1cCB0byB3aGljaCBkYXRhIGlzIHN0b3JlZC4gKi8KIAl1aW50MTZfdCBxdWV1ZV9pbmRleDsKIAkvKiBJbmRleCB0byB0aGUgbmV4dCByZXF1ZXN0IGluIHRoZSBxdWV1ZS4gKi8KIAl1aW50MTZfdCBycXRfaW5kZXg7CkBAIC03NjgsNyArNzY4LDcgQEAKIAl1aW50MzJfdCBtdHBfY291bnQ7CiAJLyogVGhlIE1UUCBldmVudCBjYWxsYmFjayBzdXBwbGllZCBieSB0aGUgY2xpZW50ICovCiAJY3lfYXNfbXRwX2V2ZW50X2NhbGxiYWNrIG10cF9ldmVudF9jYjsKLQkvKiBUaGUgY3VycmVudCBibG9jayB0YWJsZSB0byBiZSB0cmFuc2ZlcmVkICovCisJLyogVGhlIGN1cnJlbnQgYmxvY2sgdGFibGUgdG8gYmUgdHJhbnNmZXJyZWQgKi8KIAljeV9hc19tdHBfYmxvY2tfdGFibGUgKnRwX2Jsa190Ymw7CiAKIAljeV9hc19jX2JfcXVldWUgKmZ1bmNfY2JzX210cDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkbWEuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNkbWEuaAppbmRleCA4ZGFiNWU5Li4xNmRjOWY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZG1hLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2RtYS5oCkBAIC0xMDgsNyArMTA4LDcgQEAKICAgIGNvbXBsZXRlcyBhIHJlcXVlc3RlZCBETUEgb3BlcmF0aW9uLgogCiAgICBSZXR1cm5zCi0gICBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1vZHVsZSBpbml0aWFsaXplZCBzdWNlc3NmdWxseQorICAgQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtb2R1bGUgaW5pdGlhbGl6ZWQgc3VjY2Vzc2Z1bGx5CiAgICBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIGR1cmluZwogCQlpbml0aWFsaXphdGlvbgogICAgQ1lfQVNfRVJST1JfQUxSRUFEWV9SVU5OSU5HIC0gdGhlIERNQSBtb2R1bGUgd2FzIGFscmVhZHkgcnVubmluZwpAQCAtMTMxLDcgKzEzMSw3IEBACiAgICB0aGVuIGZyZWVpbmcgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBETUEgZW5kcG9pbnQuCiAKICAgIFJldHVybnMKLSAgIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbW9kdWxlIHNodXRkb3duIHN1Y2Vzc2Z1bGx5CisgICBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIG1vZHVsZSBzaHV0ZG93biBzdWNjZXNzZnVsbHkKICAgIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIERNQSBtb2R1bGUgd2FzIG5vdCBydW5uaW5nCiAKICAgIFNlZSBBbHNvCkBAIC0xNjEsNyArMTYxLDcgQEAKIAogICAgUmV0dXJucwogICAgQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSB0cmFmZmljIG9uIHRoZSBlbmRwb2ludCBpcyBjYW5jZWxlZAotCXN1Y2Vzc2Z1bGx5CisJc3VjY2Vzc2Z1bGx5CiAKICAgIFNlZSBBbHNvCiAqLwpAQCAtMjY2LDcgKzI2Niw3IEBACiAgICB3aWxsIGhhdmUgdG8gbWFpbnRhaW4gYSBsaXN0IG9mIHNsZWVwIGNoYW5uZWxzIHRvIHdha2UuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBxdWV1ZSBoYXMgZHJhaW5lZCBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHF1ZXVlIGhhcyBkcmFpbmVkIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0VORFBPSU5UIC0gdGhlIGVuZHBvaW50IGdpdmVuIGlzIG5vdCB2YWxpZAogICAgKiBDWV9BU19FUlJPUl9ORVNURURfU0xFRVAgLSBDeUFzRG1hUXVldWVSZXF1ZXN0KCkgd2FzIHJlcXVlc3RlZAogICAgKglvbiBhbiBlbmRwb2ludCB3aGVyZSBDeUFzRG1hUXVldWVSZXF1ZXN0IHdhcyBhbHJlYWR5IGNhbGxlZApAQCAtMjk1LDcgKzI5NSw3IEBACiAgICBDeUFzSGFsRG1hU2V0dXBSZWFkKCkgZnVuY3RvaW5zLgogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgdmFsdWUgd2FzIHNldCBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHZhbHVlIHdhcyBzZXQgc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfU0laRSAtIHRoZSBzaXplIHZhbHVlIHdhcyBub3QgdmFsaWQKICovCiBleHRlcm4gY3lfYXNfcmV0dXJuX3N0YXR1c190CmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZXJyLmggYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzZXJyLmgKaW5kZXggZjc4ZDYwMi4uMmNkMGFmMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2Vyci5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNlcnIuaApAQCAtMjksNyArMjksNyBAQAogKi8KIAogLyogU3VtbWFyeQotICAgVGhlIGZ1bmN0aW9uIGNvbXBsZXRlZCBzdWNlc3NmdWxseQorICAgVGhlIGZ1bmN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKICovCiAjZGVmaW5lIENZX0FTX0VSUk9SX1NVQ0NFU1MJICgwKQogCkBAIC03OTYsNyArNzk2LDcgQEAKICAgIERlc2NyaXB0aW9uCiAgICBUaGlzIGVycm9yIGlzIHJldHVybmVkIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGF0dGVtcHRlZCB0aGF0IGNhbm5vdCBiZQogICAgY29tcGxldGVkIHdoaWxlIHRoZSBVU0Igc3RhY2sgaXMgY29ubmVjdGVkIHRvIGEgVVNCIGhvc3QuICBJbiBvcmRlcgotICAgdG8gc3VjZXNzZnVsbHkgY29tcGxldGUgdGhlIGRlc2lyZWQgb3BlcmF0aW9uLCBDeUFzVXNiRGlzY29ubmVjdCgpCisgICB0byBzdWNjZXNzZnVsbHkgY29tcGxldGUgdGhlIGRlc2lyZWQgb3BlcmF0aW9uLCBDeUFzVXNiRGlzY29ubmVjdCgpCiAgICBtdXN0IGJlIGNhbGxlZCB0byBkaXNjb25uZWN0IGZyb20gdGhlIGhvc3QuCiAqLwogI2RlZmluZSBDWV9BU19FUlJPUl9VU0JfQ09OTkVDVEVEICg1MykKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNoYWxkb2MuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNoYWxkb2MuaAppbmRleCAyODEzNmFkLi41YmNiZTliIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaGFsZG9jLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2hhbGRvYy5oCkBAIC01OTcsNyArNTk3LDcgQEAKICAgIEN5QXNIYWxTbGVlcENoYW5uZWwuCiAKICAgIFJldHVybnMKLSAgIEN5VHJ1ZSBpcyB0aGUgaW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Vzc2Z1bCwgYW5kIEN5RmFsc2Ugb3RoZXJ3aXNlCisgICBDeVRydWUgaXMgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLCBhbmQgQ3lGYWxzZSBvdGhlcndpc2UKIAogICAgU2VlIEFsc28KICAgICogQ3lBc0hhbFNsZWVwQ2hhbm5lbApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2ludHIuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNpbnRyLmgKaW5kZXggM2Q3MDYzZS4uNjBhNmZmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc2ludHIuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzaW50ci5oCkBAIC02OSw3ICs2OSw3IEBACiAKICAgIFJldHVybnMKICAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBpbnRlcnJ1cHQgbW9kdWxlIHdhcyBzdG9wcGVkCi0gICAqCXN1Y2Vzc2Z1bGx5CisgICAqCXN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBpbnRlcnJ1cHQgbW9kdWxlIHdhcyBub3QKICAgICoJcnVubmluZwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzbWlzYy5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc21pc2MuaAppbmRleCAyZjA3MDE4Li5kZjdjMmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzbWlzYy5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNtaXNjLmgKQEAgLTYyMCw3ICs2MjAsNyBAQAogICAgKiBOZXN0YWJsZTogWUVTCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBmaXJtd2FyZSB3YXMgc3VjZXNzZnVsbHkgZG93bmxvYWRlZAorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIGZpcm13YXJlIHdhcyBzdWNjZXNzZnVsbHkgZG93bmxvYWRlZAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICoJd2FzIG5vdCBjb25maWd1cmVkCkBAIC04MzYsNyArODM2LDcgQEAKICAgIG93bmVyc2hpcC4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhlIHAgcG9ydCBzdWNlc3NmdWxseSBhY3F1aXJlZCB0aGUKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBwIHBvcnQgc3VjY2Vzc2Z1bGx5IGFjcXVpcmVkIHRoZQogICAgKiAJcmVzb3VyY2Ugb2YgaW50ZXJlc3QKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQKQEAgLTg3OSw3ICs4NzksNyBAQAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IE5PCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBwIHBvcnQgc3VjZXNzZnVsbHkgcmVsZWFzZWQKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBwIHBvcnQgc3VjY2Vzc2Z1bGx5IHJlbGVhc2VkCiAgICAqCXRoZSByZXNvdXJjZSBvZiBpbnRlcmVzdAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRApAQCAtOTI5LDcgKzkyOSw3IEBACiAKICAgIFJldHVybnMKICAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSB0cmFjZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuCi0gICAqCXN1Y2Vzc2Z1bGx5IGNoYW5nZWQKKyAgICoJc3VjY2Vzc2Z1bGx5IGNoYW5nZWQKICAgICogQ1lfQVNfRVJST1JfTk9fU1VDSF9CVVMgLSB0aGUgYnVzIHNwZWNpZmllZCBkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9OT19TVUNIX0RFVklDRSAtIHRoZSBzcGVjaWZpZWQgbWVkaWEvZGV2aWNlCiAgICAqCXBhaXIgZG9lcyBub3QgZXhpc3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNwcm90b2NvbC5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3Byb3RvY29sLmgKaW5kZXggMzE3ODA1Zi4uNzczYjY0NSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3Byb3RvY29sLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3Byb3RvY29sLmgKQEAgLTc1Niw3ICs3NTYsNyBAQAogCSAqIDEgOiBEZWJ1ZyBtb2RlCiAKICAgIERlc2NyaXB0aW9uCi0gICBUaGlzIHJlcG9uc2UgaXMgc2VudCB0byByZXR1cm4gdGhlIGZpcm13YXJlIHZlcnNpb24KKyAgIFRoaXMgcmVzcG9uc2UgaXMgc2VudCB0byByZXR1cm4gdGhlIGZpcm13YXJlIHZlcnNpb24KICAgIG51bWJlciB0byB0aGUgcmVxdWVzdG9yLgogICovCiAjZGVmaW5lIENZX1JFU1BfRklSTVdBUkVfVkVSU0lPTiAoMTYpCkBAIC0zNjU1LDcgKzM2NTUsNyBAQAogICAgVGhpcyByZXF1ZXN0IGlzIHNlbnQgdG8gdGhlIFdlc3QgQnJpZGdlIHdoZW4gdGhlIFAgcG9ydAogICAgbmVlZHMgdG8gc2VuZCBkYXRhIHRvIHRoZSBIb3N0IGluIGEgVHVyYm8gRW5kcG9pbnQuCiAgICBVcG9uIHJlY2VpdmluZyB0aGlzIGV2ZW50LCBGaXJtd2FyZSB3aWxsIG1ha2UgdGhlIGVuZCBwb2ludAotICAgYXZpbGFibGUgZm9yIHRoZSBQIHBvcnQuIElmIHRoZSBsZW5ndGggaXMgemVybywgdGhlbgorICAgYXZhaWxhYmxlIGZvciB0aGUgUCBwb3J0LiBJZiB0aGUgbGVuZ3RoIGlzIHplcm8sIHRoZW4KICAgIGZpcm13YXJlIHdpbGwgc2VuZCBhIHplcm8gbGVuZ3RoIHBhY2tldC4KIAogICAgRGlyZWN0aW9uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzc3RvcmFnZS5oIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3N0b3JhZ2UuaAppbmRleCA2NGYwNzhjLi41MmI5M2MzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzc3RvcmFnZS5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXNzdG9yYWdlLmgKQEAgLTgzMiw3ICs4MzIsNyBAQAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4KICAgICoJbG9hZGVkIGludG8gV2VzdCBCcmlkZ2UKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUgLSBhbiBpbnZhbGlkIGhhbmRsZSB3YXMgcGFzc2VkIGluCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGUgbW9kdWxlIHN0YXJ0ZWQgc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtb2R1bGUgc3RhcnRlZCBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nCiAgICAqCXdpdGggdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZCkBAIC04ODIsNyArODgyLDcgQEAKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUgLSBhbiBpbnZhbGlkIGhhbmRsZSB3YXMKICAgICoJcGFzc2VkIGluCiAgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dAotICAgKglkb3duIHN1Y2Vzc2Z1bGx5CisgICAqCWRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQKICAgICoJY29tbXVuaWNhdGluZyB3aXRoIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcKQEAgLTkzNCw3ICs5MzQsNyBAQAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRSAtIGFuIGludmFsaWQgaGFuZGxlCiAgICAqCXdhcyBwYXNzZWQgaW4KICAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBmdW5jdGlvbiB3YXMgcmVnaXN0ZXJlZAotICAgKglzdWNlc3NmdWxseQorICAgKglzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgc3RhY2sgaXMgbm90IHJ1bm5pbmcKIAogICAgU2VlIEFsc28KQEAgLTk4MSw3ICs5ODEsNyBAQAogICAgKgliZWVuIHN0YXJ0ZWQKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9IQU5ETEUgLSBhbiBpbnZhbGlkIGhhbmRsZSB3YXMKICAgICoJcGFzc2VkIGluCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIHJlcXVlc3Qgd2FzIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxseQogICAgKgl0cmFuc21pdHRlZCB0byB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZwogICAgKgl3aXRoIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKQEAgLTEwMzQsNyArMTAzNCw3IEBACiAgICAqCWJlZW4gc3RhcnRlZAogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0hBTkRMRSAtIGFuIGludmFsaWQgaGFuZGxlCiAgICAqCXdhcyBwYXNzZWQgaW4KLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtZWRpYSB3YXMgc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoZSBtZWRpYSB3YXMgc3VjY2Vzc2Z1bGx5CiAgICAqCXJlbGVhc2VkCiAgICAqIENZX0FTX0VSUk9SX01FRElBX05PVF9DTEFJTUVEIC0gdGhlIG1lZGlhIHdhcyBub3QKICAgICoJY2xhaW1lZCBieSB0aGUgUCBwb3J0CkBAIC0xOTA1LDcgKzE5MDUsNyBAQAogICAgZGlmZmVyIGJldHdlZW4gU0QgY2FyZHMuCiAKICAgIEEgbGFyZ2UgZXJhc2UgY2FuIHRha2UgYSB3aGlsZSB0byBjb21wbGV0ZSBkZXBlbmRpbmcgb24gdGhlIFNECi0gICBjYXJkLiBJbiBzdWNoIGEgY2FzZSBpdCBpcyByZWNjb21lbmRlZCB0aGF0IGFuIGFzeW5jIGNhbGwgaXMgbWFkZS4KKyAgIGNhcmQuIEluIHN1Y2ggYSBjYXNlIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgYW4gYXN5bmMgY2FsbCBpcyBtYWRlLgogCiAgICBSZXR1cm5zCiAgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSBBUEkgY2FsbCBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5CkBAIC0xOTI2LDcgKzE5MjYsNyBAQAogICAgKglyZXF1aXJlZCBiZWZvcmUgZXJhc2UgaXMgYWxsb3dlZAogICAgKiBDWV9BU19FUlJPUl9OT19TVUNIX0JVUwogICAgKiBDWV9BU19FUlJPUl9OT19TVUNIX0RFVklDRQotICAgKiBDWV9BU19FUlJPUl9OT1RfU1VQUE9SVEVEIC0gRXJhc2UgaXMgY3VycmVubHkgb25seSBzdXBwb3J0ZWQKKyAgICogQ1lfQVNfRVJST1JfTk9UX1NVUFBPUlRFRCAtIEVyYXNlIGlzIGN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZAogICAgKglvbiBTRCBhbmQgdXNpbmcgU0Qgb25seSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZCiAKQEAgLTE5ODUsNyArMTk4NSw3IEBACiAgICAqCXR5cGUgd2FzIG1hZGUKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcwotICAgKglyZWNpZXZlZCBmcm9tIHRoZSBmaXJtd2FyZQorICAgKglyZWNlaXZlZCBmcm9tIHRoZSBmaXJtd2FyZQogICAgKiBDWV9BU19FUlJPUl9NRURJQV9BQ0NFU1NfRkFJTFVSRSAtIHRoZXJlIHdhcyBlcnJvciBpbgogICAgKglyZWFkaW5nIGZyb20gdGhlIG1lZGlhCiAgICAqIENZX0FTX0VSUk9SX0lOVkFMSURfRlVOQ1RJT04gLSBBbiBJTyBhdHRlbXB0IHdhcyBtYWRlIHRvCkBAIC0yMDQ3LDcgKzIwNDcsNyBAQAogICAgKglwYWlyIGRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKIAogKi8KIGN5X2FzX3JldHVybl9zdGF0dXNfdApAQCAtMjA5NSw3ICsyMDk1LDcgQEAKICAgICoJcGFpciBkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAgICAqLwogY3lfYXNfcmV0dXJuX3N0YXR1c190CiBjeV9hc19zZGlvX3Jlc2V0X2NhcmQoCkBAIC0yMTM5LDcgKzIxMzksNyBAQAogICAgKiBDWV9BU19FUlJPUl9OT19TVUNIX0RFVklDRSAtIHRoZSBzcGVjaWZpZWQgbWVkaWEvZGV2aWNlIHBhaXIKICAgICoJZG9lcyBub3QgZXhpc3QKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCi0gICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcyByZWNpZXZlZAorICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMgcmVjZWl2ZWQKICAgICoJZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4gcmVhZGluZwogICAgKglmcm9tIHRoZSBtZWRpYQpAQCAtMjE5OCw3ICsyMTk4LDcgQEAKICAgICogQ1lfQVNfRVJST1JfTk9fU1VDSF9ERVZJQ0UgLSB0aGUgc3BlY2lmaWVkIG1lZGlhL2RldmljZQogICAgKiBwYWlyIGRvZXMgbm90IGV4aXN0CiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQotICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMgcmVjaWV2ZWQKKyAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzIHJlY2VpdmVkCiAgICAqIGZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluCiAgICAqIHJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKQEAgLTIyNjIsNyArMjI2Miw3IEBACiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5CiAgICAqCWF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4KICAgICoJcmVhZGluZyBmcm9tIHRoZSBtZWRpYQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0ZVTkNUSU9OIC0gQW4gSU8gYXR0ZW1wdCB3YXMgbWFkZQpAQCAtMjMxOSw3ICsyMzE5LDcgQEAKICAgICoJcGFpciBkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9BU1lOQ19QRU5ESU5HIC0gYW4gYXN5bmMgb3BlcmF0aW9uIGlzIHBlbmRpbmcKICAgICogQ1lfQVNfRVJST1JfT1VUX09GX01FTU9SWSAtIGluc3VmZmljaWVudCBtZW1vcnkgYXZhaWxhYmxlCi0gICAqIENZX0FTX0VSUk9SX0lOVkFMSURfUkVTUE9OU0UgLSBhbiBlcnJvciBtZXNzYWdlIHdhcyByZWNpZXZlZAorICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMgcmVjZWl2ZWQKICAgICoJZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4KICAgICoJcmVhZGluZyBmcm9tIHRoZSBtZWRpYQpAQCAtMjM5Niw3ICsyMzk2LDcgQEAKICAgICogQ1lfQVNfRVJST1JfQVNZTkNfUEVORElORyAtIGFuIGFzeW5jIG9wZXJhdGlvbiBpcyBwZW5kaW5nCiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5IGF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IgaW4KICAgICoJcmVhZGluZyBmcm9tIHRoZSBtZWRpYQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0ZVTkNUSU9OIC0gQW4gSU8gYXR0ZW1wdCB3YXMgbWFkZQpAQCAtMjQ3MSw3ICsyNDcxLDcgQEAKICAgICogcGFpciBkb2VzIG5vdCBleGlzdAogICAgKiBDWV9BU19FUlJPUl9PVVRfT0ZfTUVNT1JZIC0gaW5zdWZmaWNpZW50IG1lbW9yeSBhdmFpbGFibGUKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9SRVNQT05TRSAtIGFuIGVycm9yIG1lc3NhZ2Ugd2FzCi0gICAqCXJlY2lldmVkIGZyb20gdGhlIGZpcm13YXJlCisgICAqCXJlY2VpdmVkIGZyb20gdGhlIGZpcm13YXJlCiAgICAqIENZX0FTX0VSUk9SX01FRElBX0FDQ0VTU19GQUlMVVJFIC0gdGhlcmUgd2FzIGVycm9yIGluCiAgICAqCXJlYWRpbmcgZnJvbSB0aGUgbWVkaWEKICAgICogQ1lfQVNfRVJST1JfSU5WQUxJRF9GVU5DVElPTiAtIEFuIElPIGF0dGVtcHQgd2FzIG1hZGUKQEAgLTI3MTQsNyArMjcxNCw3IEBACiAgICAqIENZX0FTX0VSUk9SX09VVF9PRl9NRU1PUlkgLSBpbnN1ZmZpY2llbnQgbWVtb3J5CiAgICAqCWF2YWlsYWJsZQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX1JFU1BPTlNFIC0gYW4gZXJyb3IgbWVzc2FnZSB3YXMKLSAgICoJcmVjaWV2ZWQgZnJvbSB0aGUgZmlybXdhcmUKKyAgICoJcmVjZWl2ZWQgZnJvbSB0aGUgZmlybXdhcmUKICAgICogQ1lfQVNfRVJST1JfTUVESUFfQUNDRVNTX0ZBSUxVUkUgLSB0aGVyZSB3YXMgZXJyb3IKICAgICoJaW4gcmVhZGluZyBmcm9tIHRoZSBtZWRpYQogICAgKiBDWV9BU19FUlJPUl9JTlZBTElEX0ZVTkNUSU9OIC0gQW4gSU8gYXR0ZW1wdCB3YXMKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXN1c2IuaCBiL2RyaXZlcnMvc3RhZ2luZy93ZXN0YnJpZGdlL2FzdG9yaWEvaW5jbHVkZS9saW51eC93ZXN0YnJpZGdlL2N5YXN1c2IuaAppbmRleCA0YTU0OWUxLi5lM2JhOWNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2VzdGJyaWRnZS9hc3RvcmlhL2luY2x1ZGUvbGludXgvd2VzdGJyaWRnZS9jeWFzdXNiLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dlc3RicmlkZ2UvYXN0b3JpYS9pbmNsdWRlL2xpbnV4L3dlc3RicmlkZ2UvY3lhc3VzYi5oCkBAIC00NjQsNyArNDY0LDcgQEAKICAgIGJlIHNlbGVjdGVkIG9uIGEgcGFydGl0aW9uZWQgc3RvcmFnZSBkZXZpY2UuCiAKICAgIERlc2NyaXB0aW9uCi0gICBXZXN0IEJyaWRnZSBmaXJtd2FyZSBzdXBwb3J0cyBjcmVhdGluZyB1cHRvIHR3bworICAgV2VzdCBCcmlkZ2UgZmlybXdhcmUgc3VwcG9ydHMgY3JlYXRpbmcgdXAgdG8gdHdvCiAgICBwYXJ0aXRpb25zIG9uIG1hc3Mgc3RvcmFnZSBkZXZpY2VzIGNvbm5lY3RlZCB0bwogICAgV2VzdCBCcmlkZ2UuICBXaGVuIHRoZXJlIGFyZSB0d28gcGFydGl0aW9ucyBvbiBhIGRldmljZSwKICAgIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hpY2ggb2YgdGhlc2UgcGFydGl0aW9ucyBzaG91bGQgYmUKQEAgLTY5OCw3ICs2OTgsNyBAQAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZAogICAgKglpbnRvIFdlc3QgQnJpZGdlCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcgd2l0aAogICAgKgl0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAKQEAgLTc1Miw3ICs3NTIsNyBAQAogICAgKiBOZXN0YWJsZTogWUVTCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC03OTEsNyArNzkxLDcgQEAKICAgICogTmVzdGFibGU6IFlFUwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfQ09ORklHVVJFRCAtIHRoZSBXZXN0IEJyaWRnZSBkZXZpY2UgaGFzIG5vdAogICAgKgliZWVuIGNvbmZpZ3VyZWQKICAgICogQ1lfQVNfRVJST1JfTk9fRklSTVdBUkUgLSB0aGUgZmlybXdhcmUgaGFzIG5vdCBiZWVuIGxvYWRlZApAQCAtODI1LDcgKzgyNSw3IEBACiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogWWVzIChpZiBjYiBzdXBwbGllZCkKIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTg1NSwxMyArODU1LDEzIEBACiAgICB0aGUgVVNCIHN0YWNrCiAKICAgIERlc2NyaXB0aW9uCi0gICBUaGlzIGZ1bmN0aW9uIHNlbmRzIGEgcmVxdWVzdCB0byBXZXN0IEJyaWRnZSB0byByZXRyZWl2ZQorICAgVGhpcyBmdW5jdGlvbiBzZW5kcyBhIHJlcXVlc3QgdG8gV2VzdCBCcmlkZ2UgdG8gcmV0cmlldmUKICAgIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24KIAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IFllcyAoaWYgY2Igc3VwcGxpZWQpCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC05MDYsNyArOTA2LDcgQEAKICAgIENoYXB0ZXIgOS4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTk5Myw3ICs5OTMsNyBAQAogICAgRGVzY3JpcHRpb24KICAgIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgdGhlIGJ1ZmZlciB0byBob2xkIHRoZSBkZXNjcmlwdG9yCiAgICBkYXRhLCBhbmQgYW4gaW4vb3V0IHBhcmFtZXRlciB0aSBpbmRpY2F0ZSB0aGUKLSAgIGxlbmdodCBvZiB0aGUgYnVmZmVyIGFuZCBkZXNjcmlwdG9yIGRhdGEgaW4gYnl0ZXMuCisgICBsZW5ndGggb2YgdGhlIGJ1ZmZlciBhbmQgZGVzY3JpcHRvciBkYXRhIGluIGJ5dGVzLgogCiAgICBTZWUgQWxzbwogICAgKiBDeUFzVXNiR2V0RGVzY3JpcHRvcgpAQCAtMTAyNyw3ICsxMDI3LDcgQEAKICAgIENoYXB0ZXIgOS4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTExMDYsNyArMTEwNiw3IEBACiAgICAqIFZhbGlkIEluIEFzeW5jaHJvbm91cyBDYWxsYmFjazogTk8KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfTk9UX0NPTkZJR1VSRUQgLSB0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlIGhhcyBub3QKICAgICoJYmVlbiBjb25maWd1cmVkCiAgICAqIENZX0FTX0VSUk9SX05PX0ZJUk1XQVJFIC0gdGhlIGZpcm13YXJlIGhhcyBub3QgYmVlbiBsb2FkZWQKQEAgLTExNDAsNyArMTE0MCw3IEBACiAgICBBZGQgZG9jdW1lbnRhdGlvbiBhYm91dCBlbmRwb2ludCBjb25maWd1cmF0aW9uIGxpbWl0YXRpb25zCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC0xMTgxLDcgKzExODEsNyBAQAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IE5PCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX05PVF9DT05GSUdVUkVEIC0gdGhlIFdlc3QgQnJpZGdlIGRldmljZSBoYXMgbm90CiAgICAqCWJlZW4gY29uZmlndXJlZAogICAgKiBDWV9BU19FUlJPUl9OT19GSVJNV0FSRSAtIHRoZSBmaXJtd2FyZSBoYXMgbm90IGJlZW4gbG9hZGVkCkBAIC0xMjE5LDcgKzEyMTksNyBAQAogICAgZnVuY3Rpb25zIHN0b3JlIGF3YXkgdGhlIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIHRoaXMKICAgIEN5QXNVc2JDb21taXRDb25maWcoKSBhY3R1YWxseSBmaW5kcyB0aGUKICAgIGJlc3QgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBiYXNlZCBvbiB0aGUgcmVxdWVzdGVkIGVuZHBvaW50Ci0gICBjb25maWd1cmF0aW9uIGFuZCBzZW5kcyB0aHNpIG9wdGltYWwKKyAgIGNvbmZpZ3VyYXRpb24gYW5kIHNlbmRzIHRoaXMgb3B0aW1hbAogICAgY29uZml1cmF0aW9uIGRvd24gdG8gdGhlIFdlc3QgQnJpZGdlIGRldmljZS4KIAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IFlFUyAoaWYgY2Igc3VwcGxpZWQpCkBAIC0xMjY4LDcgKzEyNjgsNyBAQAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IE5PCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZyB3aXRoCiAgICAqCXRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgVVNCIHN0YWNrIGlzIG5vdCBydW5uaW5nCkBAIC0xMzExLDcgKzEzMTEsNyBAQAogICAgKiBWYWxpZCBJbiBBc3luY2hyb25vdXMgQ2FsbGJhY2s6IFlFUwogCiAgICBSZXR1cm5zCi0gICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Vzc2Z1bGx5CisgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duIHN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9USU1FT1VUIC0gYSB0aW1lb3V0IG9jY3VycmVkIGNvbW11bmljYXRpbmcgd2l0aAogICAgKgl0aGUgV2VzdCBCcmlkZ2UgZGV2aWNlCiAgICAqIENZX0FTX0VSUk9SX05PVF9SVU5OSU5HIC0gdGhlIFVTQiBzdGFjayBpcyBub3QgcnVubmluZwpAQCAtMTM1NSw3ICsxMzU1LDcgQEAKICAgIGEgemVybyBsZW5ndGggcGFja2V0IHRyYW5zbWl0dGVkIHRvIHRoZSBVU0IgaG9zdC4KIAogICAgUmV0dXJucwotICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNlc3NmdWxseQorICAgKiBDWV9BU19FUlJPUl9TVUNDRVNTIC0gdGhpcyBtb2R1bGUgd2FzIHNodXQgZG93biBzdWNjZXNzZnVsbHkKICAgICogQ1lfQVNfRVJST1JfVElNRU9VVCAtIGEgdGltZW91dCBvY2N1cnJlZCBjb21tdW5pY2F0aW5nIHdpdGgKICAgICoJdGhlIFdlc3QgQnJpZGdlIGRldmljZQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBVU0Igc3RhY2sgaXMgbm90IHJ1bm5pbmcKQEAgLTEzOTUsNyArMTM5NSw3IEBACiAgICBpbiBhIHplcm8gbGVuZ3RoIHBhY2tldCB0cmFuc21pdHRlZCB0byB0aGUgVVNCIGhvc3QuCiAKICAgIFJldHVybnMKLSAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjZXNzZnVsbHkKKyAgICogQ1lfQVNfRVJST1JfU1VDQ0VTUyAtIHRoaXMgbW9kdWxlIHdhcyBzaHV0IGRvd24gc3VjY2Vzc2Z1bGx5CiAgICAqIENZX0FTX0VSUk9SX1RJTUVPVVQgLSBhIHRpbWVvdXQgb2NjdXJyZWQgY29tbXVuaWNhdGluZyB3aXRoCiAgICAqCXRoZSBXZXN0IEJyaWRnZSBkZXZpY2UKICAgICogQ1lfQVNfRVJST1JfTk9UX1JVTk5JTkcgLSB0aGUgVVNCIHN0YWNrIGlzIG5vdCBydW5uaW5nCkBAIC0xNDM1LDcgKzE0MzUsNyBAQAogCiAgICBSZXR1cm5zCiAgICAqIENZX0FTX0VSUk9SX1NVQ0NFU1MgLSB0aGlzIG1vZHVsZSB3YXMgc2h1dCBkb3duCi0gICAqCXN1Y2Vzc2Z1bGx5CisgICAqCXN1Y2Nlc3NmdWxseQogICAgKiBDWV9BU19FUlJPUl9OT1RfUlVOTklORyAtIHRoZSBVU0Igc3RhY2sgaXMgbm90CiAgICAqCXJ1bm5pbmcKICAgICogQ1lfQVNfRVJST1JfQVNZTkNfTk9UX1BFTkRJTkcgLSBubyBhc3luY2hyb25vdXMgVVNCCkBAIC0xNzkxLDcgKzE3OTEsNyBAQAogICAgZGV2aWNlIHNob3VsZCBiZSBtYWRlIHZpc2libGUgdG8gVVNCLgogCiAgICBEZXNjcmlwdGlvbgotICAgV2VzdCBCcmlkZ2UgZmlybXdhcmUgc3VwcG9ydHMgdGhlIGNyZWF0aW9uIG9mIHVwdG8gdHdvCisgICBXZXN0IEJyaWRnZSBmaXJtd2FyZSBzdXBwb3J0cyB0aGUgY3JlYXRpb24gb2YgdXAgdG8gdHdvCiAgICBwYXJ0aXRpb25zIG9uIG1hc3Mgc3RvcmFnZSBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUgV2VzdCBCcmlkZ2UKICAgIGRldmljZS4gIFdoZW4gdGhlcmUgYXJlIHR3byBwYXJ0aXRpb25zIG9uIGEgZGV2aWNlLCB0aGUgdXNlciBjYW4KICAgIGNob29zZSB3aGljaCBvZiB0aGVzZSBwYXJ0aXRpb25zIHNob3VsZCBiZSBtYWRlIHZpc2libGUgdG8gdGhlCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2luYm9uZC9tZHMuYyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kcy5jCmluZGV4IDljZmVhOTQuLmM5ZjBlOGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kcy5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93aW5ib25kL21kcy5jCkBAIC00OTIsNyArNDkyLDcgQEAKIAogCQkJVHhEZXNJbmRleCA9IHBNZHMtPlR4RGVzSW5kZXg7IC8qIEdldCB0aGUgY3VycmVudCBJRCAqLwogCQkJcFR4RGVzLT5EZXNjcmlwdG9yX0lEID0gVHhEZXNJbmRleDsKLQkJCXBNZHMtPlR4RGVzRnJvbVtUeERlc0luZGV4XSA9IDI7IC8qIFN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHNvdXJjZSBjb21taW5nIGZyb20gKi8KKwkJCXBNZHMtPlR4RGVzRnJvbVtUeERlc0luZGV4XSA9IDI7IC8qIFN0b3JpbmcgdGhlIGluZm9ybWF0aW9uIG9mIHNvdXJjZSBjb21pbmcgZnJvbSAqLwogCQkJcE1kcy0+VHhEZXNJbmRleCsrOwogCQkJcE1kcy0+VHhEZXNJbmRleCAlPSBNQVhfVVNCX1RYX0RFU0NSSVBUT1I7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1JFQURNRS51YnVudHUgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9SRUFETUUudWJ1bnR1CmluZGV4IDQ3YmVhZWMuLmVkZWU4YjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1JFQURNRS51YnVudHUKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvUkVBRE1FLnVidW50dQpAQCAtMTE2LDcgKzExNiw3IEBACiAKIFRoZSBBZ2VyZSBTeXN0ZW1zIGxpY2Vuc2UgYXBwbGllcy4gVGhpcyBpcyB3aHkgSSBpbmNsdWRlIHRoZSBvcmlnaW5hbAogUkVBRE1FLndsYWdzNDkuIFRoZSBpbnN0cnVjdGlvbnMgaW4gdGhhdCBmaWxlIGFyZSBib2d1cyBub3cuIEkgYWxzbwotaW5jbHVkZSB0aGUgbWFuIHBhZ2UuIEV2ZW50aG91Z2ggc2V0dGluZyBwYXJhbWV0ZXJzIG9uIHRoZSBtb2R1bGUKK2luY2x1ZGUgdGhlIG1hbiBwYWdlLiBFdmVuIHRob3VnaCBzZXR0aW5nIHBhcmFtZXRlcnMgb24gdGhlIG1vZHVsZQogZG9lcyBub3Qgd29yayBhbnltb3JlIGJ1dCBpdCBwcm92aWRlcyBzb21lIGluZm9ybWF0aW9uIGFib3V0IGFsbCB0aGUKIHNldHRpbmdzLgogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9UT0RPIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvVE9ETwppbmRleCAxNGFhNDE1Li45NDAzMmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9UT0RPCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL1RPRE8KQEAgLTEsNyArMSw3IEBACiBGaXJzdCBvZiBhbGwsIHRoZSBiZXN0IHRoaW5nIHdvdWxkIGJlIHRoYXQgdGhpcyBkcml2ZXIgYmVjb21lcyBvYnNvbHRlIGJ5CiBhZGRpbmcgc3VwcG9ydCBmb3IgSGVybWVzIElJIGFuZCBIZXJtZXMgSUkuNSBjYXJkcyB0byB0aGUgZXhpc3Rpbmcgb3Jpbm9jbwogZHJpdmVyLiBUaGUgb3Jpbm9jbyBkcml2ZXIgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgSGVybWVzIEkgYmFzZWQgY2FyZHMuCi1TaW5jZSB0aGlzIHdpbGwgbm90IGhhcHBlbiBieSBtYWdpYyBhbmQgaGFzIG5vdCBoYXBwZW5kIHVudGlsIG5vdyB0aGlzCitTaW5jZSB0aGlzIHdpbGwgbm90IGhhcHBlbiBieSBtYWdpYyBhbmQgaGFzIG5vdCBoYXBwZW5lZCB1bnRpbCBub3cgdGhpcwogZHJpdmVyIHByb3ZpZGVzIGEgc3RvcC1nYXAgc29sdXRpb24gZm9yIHRoZXNlIHR5cGUgb2YgY2FyZHMuCiAKIEhhdmluZyBzYWlkIHRoYXQsIHRoZSBmb2xsb3dpbmcgd2lzaGxpc3QgY29tZXMgdG8gbWluZCB0byBtYWtlIHRoZSBkcml2ZXIKQEAgLTE4LDcgKzE4LDcgQEAKIAktIHRoZSBkcml2ZXIgaXMgc3BsaXQgaW50byBhIEhlcm1lcyBJSSBhbmQgYSBIZXJtZXMgSUkuNSBwYXJ0LCBpdAogCSAgd291bGQgYmUgbmljZSB0byBoYW5kbGUgYm90aCB3aXRoIG9uZSBtb2R1bGUgaW5zdGVhZCBvZiB0d28KIAktIHJldmlldyBieSB0aGUgd2lyZWxlc3MgZGV2ZWxvcGVyIGNvbW11bml0eQotCS0gdmVyaWZ5IHRoZSBjb2RlIGFnYWluc3QgdGhlIGNvZGluZyBzdGFuZGFyZHMgZm9yIGEgcHJvcHBlciBsaW51eAorCS0gdmVyaWZ5IHRoZSBjb2RlIGFnYWluc3QgdGhlIGNvZGluZyBzdGFuZGFyZHMgZm9yIGEgcHJvcGVyIGxpbnV4CiAJICBkcml2ZXIKIAktIHJlc29sdmUgbGljZW5zZSBpc3N1ZXMgKD8pCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZi5jIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmLmMKaW5kZXggZDRiZGQzZS4uYTczMzE3ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvaGNmLmMKQEAgLTU0MCw3ICs1NDAsNyBAQAogKgogKi5DT05ESVRJT05TCiAqIEV4Y2VwdCBmb3IgaGNmX2FjdGlvbiB3aXRoIEhDRl9BQ1RfSU5UX0ZPUkNFX09OIG9yIEhDRl9BQ1RfSU5UX09GRiBhcyBwYXJhbWV0ZXIgb3IgaGNmX2Nvbm5lY3Qgd2l0aCBhbiBJL08KLSogYWRkcmVzcyAoaS5lLiBub3QgSENGX0RJU0NPTk5FQ1QpLCBhbGwgaGNmLWZ1bmN0aW9uIGNhbGxzIE1VU1QgYmUgcHJlY2VlZGVkIGJ5IGEgY2FsbCBvZiBoY2ZfYWN0aW9uIHdpdGgKKyogYWRkcmVzcyAoaS5lLiBub3QgSENGX0RJU0NPTk5FQ1QpLCBhbGwgaGNmLWZ1bmN0aW9uIGNhbGxzIE1VU1QgYmUgcHJlY2VkZWQgYnkgYSBjYWxsIG9mIGhjZl9hY3Rpb24gd2l0aAogKiBIQ0ZfQUNUX0lOVF9PRkYgYXMgcGFyYW1ldGVyLgogKiBOb3RlIHRoYXQgaGNmX2Nvbm5lY3QgZGVmYXVsdHMgdG8gTklDIGludGVycnVwdCBkaXNhYmxlZCBtb2RlLCBpLmUuIGFzIGlmIGhjZl9hY3Rpb24oIEhDRl9BQ1RfSU5UX09GRiApCiAqIHdhcyBjYWxsZWQuCkBAIC04NDMsNyArODQzLDcgQEAKICouTU9EVUxFCQlpbnQgaGNmX2NudGwoIElGQlAgaWZicCwgaGNmXzE2IGNtZCApCiAqLlBVUlBPU0UJCUNvbm5lY3Qgb3IgZGlzY29ubmVjdCBhIHNwZWNpZmljIHBvcnQgdG8gYSBzcGVjaWZpYyBuZXR3b3JrLgogKiEhICA7Pz8/Pz8/Pz8/Pz8/Pz8/PyBjb250aW51ZSBuZWVkcyBtb3JlIGV4cGxhbmF0aW9uCi0qCQkJCXJlY292ZXJzIGJ5IG1lYW5zIG9mICJjb250aW51ZSIgd2hlbiB0aGUgY29ubmVjdCBwcm9jZXMgaW4gQ0NYIG1vZGUgZmFpbHMKKyoJCQkJcmVjb3ZlcnMgYnkgbWVhbnMgb2YgImNvbnRpbnVlIiB3aGVuIHRoZSBjb25uZWN0IHByb2Nlc3MgaW4gQ0NYIG1vZGUgZmFpbHMKICoJCQkJRW5hYmxlcyBvciBkaXNhYmxlcyBkYXRhIHRyYW5zbWlzc2lvbiBhbmQgcmVjZXB0aW9uIGZvciB0aGUgTklDLgogKgkJCQlBY3RpdmF0ZXMgc3RhdGljIE5JQyBjb25maWd1cmF0aW9uIGZvciBhIHNwZWNpZmljIHBvcnQgYXQgY29ubmVjdC4KICoJCQkJQWN0aXZhdGVzIHN0YXRpYyBjb25maWd1cmF0aW9uIGZvciBhbGwgcG9ydHMgYXQgZW5hYmxlLgpAQCAtMTE3MCwxMiArMTE3MCwxMiBAQAogCQlpb19hZGRyID0gaW9fYmFzZTsKIAl9CiAKLSNpZiAwIC8vOz8gaWYgYSBzdWJzZXF1ZW50IGhjZl9jb25uZWN0IGlzIHByZWNlZWRlZCBieSBhbiBoY2ZfZGlzY29ubmVjdCB0aGUgd2FrZXVwIGlzIG5vdCBuZWVkZWQgISEKKyNpZiAwIC8vOz8gaWYgYSBzdWJzZXF1ZW50IGhjZl9jb25uZWN0IGlzIHByZWNlZGVkIGJ5IGFuIGhjZl9kaXNjb25uZWN0IHRoZSB3YWtldXAgaXMgbm90IG5lZWRlZCAhIQogI2lmIEhDRl9TTEVFUAogICAgIE9VVF9QT1JUX1dPUkQoIC4uLi4uK0hSRUdfSU8sIEhSRUdfSU9fV0FLRVVQX0FTWU5DICk7IAkgICAgLy9PUFcgbm90IHlldCB1c2VhYmxlCiAJTVNGX1dBSVQoODAwKTsJCQkJCQkJCS8vIE1TRi1kZWZpbmVkIGZ1bmN0aW9uIHRvIHdhaXQgbiBtaWNyb3NlY29uZHMuCiAJbm90ZSB0aGF0IE1TRl9XQUlUIHVzZXMgbm90IHlldCBkZWZpbmVkISEhISBJRkJfSU9CYXNlIGFuZCBJRkJfVGlja0luaSAodmlhIFBST1RfQ05UX0lOSSkKLQlzbyBiZSBjYXJlZnVsbCBpZiB0aGlzIGNvZGUgaXMgcmVzdG9yZWQKKwlzbyBiZSBjYXJlZnVsIGlmIHRoaXMgY29kZSBpcyByZXN0b3JlZAogI2VuZGlmIC8vIEhDRl9TTEVFUAogI2VuZGlmIC8vIDAKIApAQCAtMTU2Myw3ICsxNTYzLDcgQEAKICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgdGhlIE1TRiB0byBzdXBwbHkgdGhlIEhDRiB3aXRoIG5ldy9tb3JlIGJ1ZmZlcnMgZm9yIHJlY2VpdmUgcHVycG9zZXMuCiAqIFRoZSBIQ0YgY2FuIGJlIHVzZWQgaW4gMiBmYXNoaW9uczogd2l0aCBhbmQgd2l0aG91dCBlbmNhcHN1bGF0aW9uIGZvciBkYXRhIHRyYW5zZmVyLgogKiBUaGlzIGlzIGNvbnRyb2xsZWQgYXQgY29tcGlsZSB0aW1lIGJ5IHRoZSBIQ0ZfRU5DIGJpdCBvZiB0aGUgSENGX0VOQ0FQIHN5c3RlbSBjb25zdGFudC4KLSogQXMgYSBjb25zZXF1ZW5jZSwgc29tZSBhZGRpdGlvbmFsIGNvbnN0YWludHMgYXBwbHkgdG8gdGhlIG51bWJlciBvZiBkZXNjcmlwdG9yIGFuZCB0aGUgYnVmZmVycyBhc3NvY2lhdGVkCisqIEFzIGEgY29uc2VxdWVuY2UsIHNvbWUgYWRkaXRpb25hbCBjb25zdHJhaW50cyBhcHBseSB0byB0aGUgbnVtYmVyIG9mIGRlc2NyaXB0b3IgYW5kIHRoZSBidWZmZXJzIGFzc29jaWF0ZWQKICogd2l0aCB0aGUgZmlyc3QgMiBkZXNjcmlwdG9ycy4gSW5kZXBlbmRlbnQgb2YgdGhlIGVuY2Fwc3VsYXRpb24gZmVhdHVyZSwgdGhlIENPVU5UIGZpZWxkcyBhcmUgaWdub3JlZC4KICogQSBzcGVjaWFsIGNhc2UgaXMgdGhlIHN1cHBseWluZyBvZiB0aGUgREVMV0EgZGVzY3JpcHRvciwgd2hpY2ggbXVzdCBiZSBzdXBwbGllZCBhcyB0aGUgZmlyc3QgZGVzY3JpcHRvci4KICoKQEAgLTE3MzUsNyArMTczNSw3IEBACiAqIC0gaW4gY2FzZSBlbmNhcHN1bGF0aW9uIGJ5IHRoZSBIQ0YgaXMgc2VsZWN0ZWQ6CiAqCSAgLQlUaGUgRnJhbWVMaXN0IGRvZXMgbm90IGNvbnNpc3RzIG9mIGF0IGxlYXN0IDIgRGVzY3JpcHRvcnMuCiAqCSAgLQlUaGUgZmlyc3QgZGF0YWJ1ZmZlciBkb2VzIG5vdCBjb250YWluIGV4YWN0bHkgdGhlIChzcGFjZSBmb3IpIHRoZSA4MDIuMTEgaGVhZGVyICg9PSAyOCB3b3JkcykKLSoJICAtCVRoZSBmaXJzdCBkYXRhYnVmZmVyIGRvZXMgbm90IGhhdmUgYSBzaXplIHRvIGFkZGl0aW9uYWxseSBhY2NvbW9kYXRlIHRoZSA4MDIuMyBoZWFkZXIgYW5kIHRoZQorKgkgIC0JVGhlIGZpcnN0IGRhdGFidWZmZXIgZG9lcyBub3QgaGF2ZSBhIHNpemUgdG8gYWRkaXRpb25hbGx5IGFjY29tbW9kYXRlIHRoZSA4MDIuMyBoZWFkZXIgYW5kIHRoZQogKgkJU05BUCBoZWFkZXIgb2YgdGhlIGZyYW1lIGFmdGVyIGVuY2Fwc3VsYXRpb24gKD09IDM5IHdvcmRzKS4KICoJICAtCVRoZSBzZWNvbmQgZGF0YWJ1ZmZlciBkb2VzIG5vdCBjb250YWluIGF0IGxlYXN0IERBLCBTQSBhbmQgJ3R5cGUvbGVuZ3RoJyAoPT0xNCBieXRlcyBvciA3IHdvcmRzKQogKiEhIFRoZSAybmQgcGFydCBvZiB0aGUgbGlzdCBvZiBhc3NlcnRzIHNob3VsZCBiZSBrZXB0IGluIHN5bmMgd2l0aCBwdXRfZnJhbWVfbHN0LCBpbiBvcmRlciB0byBnZXQKQEAgLTE3NjIsMTQgKzE3NjIsMTQgQEAKICoJLSBDb3B5IERBL1NBIGZpZWxkcyBmcm9tIHRoZSAybmQgYnVmZmVyCiAqICAgLSBDYWxjdWxhdGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBtZXNzYWdlIChzbmFwLWhlYWRlciArIHR5cGUtZmllbGQgKyB0aGUgbGVuZ3RoIG9mIGFsbCBidWZmZXIgZnJhZ21lbnRzCiAqICAgICBhc3NvY2lhdGVkIHdpdGggdGhlIDgwMi4zIGZyYW1lIChpLmUgYWxsIGRlc2NyaXB0b3JzIGV4Y2VwdCB0aGUgZmlyc3QpLCBidXQgbm90IHRoZSBEZXN0aW5hdGlvbkFkZHJlc3MsCi0qICAgICBTb3VyY2VBZGRyZXNzIGFuZCBsZW5naHQtZmllbGQpCisqICAgICBTb3VyY2VBZGRyZXNzIGFuZCBsZW5ndGgtZmllbGQpCiAqICAgICBBc3NlcnQgdGhlIG1lc3NhZ2UgbGVuZ3RoCiAqCSAgV3JpdGUgbGVuZ3RoLiBOb3RlIHRoYXQgdGhlIG1lc3NhZ2UgaXMgaW4gQkUgZm9ybWF0LCBoZW5jZSBvbiBMRSBwbGF0Zm9ybXMgdGhlIGxlbmd0aCBtdXN0IGJlIGNvbnZlcnRlZAogKgkgIDs/IFRISVMgSVMgTk9UIFdIQVQgQ1VSUkVOVExZIElTIElNUExFTUVOVEVECiAqCS0gV3JpdGUgc25hcCBoZWFkZXIuIE5vdGUgdGhhdCB0aGUgbGFzdCBieXRlIG9mIHRoZSBzbmFwIGhlYWRlciBpcyBOT1QgY29waWVkLCB0aGF0IGJ5dGUgaXMgYWxyZWFkeSBpbgogKgkgIHBsYWNlIGFzIHJlc3VsdCBvZiB0aGUgY2FsbCB0byBoY2ZfZW5jYXAuCiAqCU5vdGUgdGhhdCB0aGVyZSBhcmUgbWFueSB3YXlzIHRvIHNraW4gYSBjYXQuIFRvIGV4cHJlc3MgdGhlIG9mZnNldHMgaW4gdGhlIDFzdCBidWZmZXIgd2hpbGUgd3JpdGluZwotKgl0aGUgc25hcCBoZWFkZXIsIEhGU19UWVBFIGlzIGNob29zZW4gYXMgYSByZWZlcmVuY2UgcG9pbnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZ3Jhc3AgdGhhdCB0aGUgc25hcCBoZWFkZXIKKyoJdGhlIHNuYXAgaGVhZGVyLCBIRlNfVFlQRSBpcyBjaG9zZW4gYXMgYSByZWZlcmVuY2UgcG9pbnQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZ3Jhc3AgdGhhdCB0aGUgc25hcCBoZWFkZXIKICoJYW5kIGVuY2Fwc3VhbHRpb24gdHlwZSBhcmUgYXQgbGVhc3QgcmVsYXRpdmUgaW4gdGhlIHJpZ2h0LgogKjg6CW1vZGlmeSAxc3QgZGVzY3JpcHRvciB0byByZWZsZWN0IG1vdmVkIHBhcnQgb2YgdGhlIDgwMi4zIGhlYWRlciArIFNuYXAtaGVhZGVyCiAqCW1vZGlmeSAybmQgZGVzY3JpcHRvciB0byBza2lwIHRoZSBtb3ZlZCBwYXJ0IG9mIHRoZSA4MDIuMyBoZWFkZXIgKERBL1NBCkBAIC0xOTMzLDcgKzE5MzMsNyBAQAogKglIQ0ZfU1VDQ0VTUwkJCVN1Y2Nlc3MKICohIQl2aWEgY21kX2V4ZSAoIHR5cGUgPj0gQ0ZHX1JJRF9GV19NSU4gKQogKglIQ0ZfRVJSX05PX05JQwkJTklDIHJlbW92ZWQgZHVyaW5nIHJldHJpZXZhbAotKglIQ0ZfRVJSX1RJTUVfT1VUCUV4cGVjdGVkIEhlcm1lcyBldmVudCBkaWQgbm90IG9jY3VyZSBpbiBleHBlY3RlZCB0aW1lCisqCUhDRl9FUlJfVElNRV9PVVQJRXhwZWN0ZWQgSGVybWVzIGV2ZW50IGRpZCBub3Qgb2NjdXIgaW4gZXhwZWN0ZWQgdGltZQogKiEhCXZpYSBjbWRfZXhlIGFuZCBzZXR1cF9iYXAgKHR5cGUgPj0gQ0ZHX1JJRF9GV19NSU4gKQogKglIQ0ZfRVJSX0RFRlVOQ1RfLi4uCUhDRiBpcyBpbiBkZWZ1bmN0IG1vZGUgKGJpdHMgMHg3RiByZWZsZWN0IGNhdXNlKQogKgpAQCAtMjk1OCw3ICsyOTU4LDcgQEAKICoJaGNmX3NlcnZpY2VfbmljIGlzIGFsc28gc2tpcHBlZCBpbiB0aG9zZSBjYXNlcy4KICoJVG8gcHJldmVudCB0aGF0IGhjZl9zZXJ2aWNlX25pYyByZXBvcnRzIGJvZ3VzIGluZm9ybWF0aW9uIHRvIHRoZSBNU0Ygd2l0aCBhbGwgLSBwb3NzaWJseSBkaWZmaWN1bHQgdG8KICoJZGVidWcgLSB1bmRlc2lyYWJsZSBzaWRlIGVmZmVjdHMsIGl0IGlzIHBhcmFtb3VudCB0byBjaGVjayB0aGUgTklDIHByZXNlbmNlLiBJbiBmb3JtZXIgZGF5cyB0aGUgcHJlc2VuY2UKLSoJdGVzdCB3YXMgYmFzZWQgb24gdGhlIEhlcm1lcyByZWdpc3RlciBIUkVHX1NXXzAuIFNpbmNlIGluIEhDRl9BQ1RfSU5UX09GRiBpcyBjaG9vc2VuIGZvciBzdHJhdGVneSBiYXNlZCBvbgorKgl0ZXN0IHdhcyBiYXNlZCBvbiB0aGUgSGVybWVzIHJlZ2lzdGVyIEhSRUdfU1dfMC4gU2luY2UgaW4gSENGX0FDVF9JTlRfT0ZGIGlzIGNob3NlbiBmb3Igc3RyYXRlZ3kgYmFzZWQgb24KICoJSFJFR19FVl9TVEFULCB0aGlzIGlzIG5vdyBhbHNvIHVzZWQgaW4gaGNmX3NlcnZpY2VfbmljLiBUaGUgbW90aXZhdGlvbiB0byBjaGFuZ2Ugc3RyYXRlZ3kgaXMgcGFydGx5CiAqCWR1ZSB0byBpbmNvbnNpc3RlbnQgRi9XIGltcGxlbWVudGF0aW9ucyB3aXRoIHJlc3BlY3QgdG8gSFJFR19TV18wIG1hbmlwdWxhdGlvbiBhcm91bmQgcmVzZXQgYW5kIGRvd25sb2FkLgogKglOb3RlIHRoYXQgaW4gcG9sbGVkIGVudmlyb25tZW50cyBDYXJkIFJlbW92YWwgaXMgbm90IGRldGVjdGVkIGJ5IElOVF9PRkYgd2hpY2ggbWFrZXMgdGhlIGNoZWNrIGluCkBAIC00MDQ4LDcgKzQwNDgsNyBAQAogCUhDRkFTU0VSVCggd29yZF9sZW4gPT0gMCB8fCB3b3JkX2xlbiA9PSAyIHx8IHdvcmRfbGVuID09IDQsIHdvcmRfbGVuICkKIAlIQ0ZBU1NFUlQoIHdvcmRfbGVuID09IDAgfHwgKChoY2ZfMzIpYnVmcCAmIDEgKSA9PSAwLCAoaGNmXzMyKWJ1ZnAgKQogCUhDRkFTU0VSVCggd29yZF9sZW4gPD0gbGVuLCBNRVJHRTIoIHdvcmRfbGVuLCBsZW4gKSApCi0JLy9zZWUgcHV0X2ZyYWcgZm9yIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCBidXQgYmUgY2FyZWZ1bGwgYWJvdXQgd2hhdCBhcmUgaW50J3MgYW5kIHdoYXQgYXJlCisJLy9zZWUgcHV0X2ZyYWcgZm9yIGFuIGFsdGVybmF0aXZlIGltcGxlbWVudGF0aW9uLCBidXQgYmUgY2FyZWZ1bCBhYm91dCB3aGF0IGFyZSBpbnQncyBhbmQgd2hhdCBhcmUKIAkvL2hjZl8xNidzCiAJaWYgKCB3b3JkX2xlbiApIHsJCQkJCQkJCS8vLiAgaWYgdGhlcmUgaXMgYW55dGhpbmcgdG8gY29udmVydAogaGNmXzggYzsKQEAgLTQ3MTIsNyArNDcxMiw3IEBACiAqCU5vdGUgdGhhdCBsZW4gaXMgdW5zaWduZWQsIHNvIGV2ZW4gTVNGIEkvRiB2aW9sYXRpb24gd29ya3Mgb3V0IE8uSy4KICoJVGhlICcyJyBpbiB0aGUgZXhwcmVzc2lvbiAibGVuKzIiIGlzIHVzZWQgYmVjYXVzZSAxIHdvcmQgaXMgbmVlZGVkIGZvciBMIGl0c2VsZiBhbmQgMSB3b3JkIGlzIG5lZWRlZAogKglmb3IgdGhlIHplcm8tc2VudGluZWwKLSo4Ogl1cGRhdGUgTWFpbEJveCBJbmZvIGxlbmd0aCByZXBvcnQgdG8gTVNGIHdpdGggIm9sZGVzdCIgTUIgSW5mbyBCbG9jayBzaXplLiBCZSBjYXJlZnVsbCBoZXJlLCBpZiB5b3UgZ2V0CisqODoJdXBkYXRlIE1haWxCb3ggSW5mbyBsZW5ndGggcmVwb3J0IHRvIE1TRiB3aXRoICJvbGRlc3QiIE1CIEluZm8gQmxvY2sgc2l6ZS4gQmUgY2FyZWZ1bCBoZXJlLCBpZiB5b3UgZ2V0CiAqCWhlcmUgYmVmb3JlIHRoZSBNYWlsQm94IGlzIHJlZ2lzdGVyZWQsIHlvdSBjYW4ndCByZWFkIGZyb20gdGhlIGJ1ZmZlciBhZGRyZXNzZWQgYnkgSUZCX01CcCAoaXQgaXMgdGhlCiAqCU51bGwgYnVmZmVyKSBzbyBkb24ndCBtb3ZlIHRoaXMgY29kZSB0aWxsIHRoZSBlbmQgb2YgdGhpcyByb3V0aW5lIGJ1dCBrZWVwIGl0IHdoZXJlIHRoZXJlIGlzIGdhcnVhbnRlZWQKICoJYSBidWZmZXIuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi9oY2ZkZWYuaCBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZmRlZi5oCmluZGV4IDRlMjAxNzEuLmNiMTk2NmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZmRlZi5oCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL2hjZmRlZi5oCkBAIC0zMTUsNyArMzE1LDcgQEAKIAogI2lmIEhDRl9ETUEKIC8vKioqKioqKioqKioqKioqKioqKioqKioqKiBETUEgKGJ1cyBtYXN0ZXJpbmcpCi0JLy8gQmUgY2FyZWZ1bGwgdG8gdXNlIHRoZXNlIHJlZ2lzdGVycyBvbmx5IGF0IGEgZ2VudWluZSAzMiBiaXRzIE5JQworCS8vIEJlIGNhcmVmdWwgdG8gdXNlIHRoZXNlIHJlZ2lzdGVycyBvbmx5IGF0IGEgZ2VudWluZSAzMiBiaXRzIE5JQwogCS8vIE9uIDE2IGJpdHMgTklDcywgdGhlc2UgYWRkcmVzc2VzIGFyZSBtYXBwZWQgaW50byB0aGUgcmFuZ2UgMHgwMCB0aHJvdWdoIDB4M0Ygd2l0aCBhbGwgY29uc2VxdWVuY2VzCiAJLy8gdGhlcmVvZiwgZS5nLiAgSFJFR19ETUFfQ1RSTCByZWdpc3RlciBtYXBzIHRvIEhSRUdfQ01ELgogI2RlZmluZSBIUkVHX0RNQV9DVFJMCQkJCQkJMHgwMDQwCmRpZmYgLS1naXQgYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi93bF93ZXh0LmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMi93bF93ZXh0LmMKaW5kZXggOWU1ZGEwOC4uNTIyYTMxMCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDIvd2xfd2V4dC5jCisrKyBiL2RyaXZlcnMvc3RhZ2luZy93bGFnczQ5X2gyL3dsX3dleHQuYwpAQCAtMjU3NSw3ICsyNTc1LDcgQEAKICAgICAgICAgICogVGhpcyBsb29rcyBsaWtlIGEgbmljZSBwbGFjZSB0byB0ZXN0IGlmIHRoZSBIQ0YgaXMgc3RpbGwKICAgICAgICAgICogY29tbXVuaWNhdGluZyB3aXRoIHRoZSBjYXJkLiBJdCBzZWVtcyB0aGF0IHNvbWV0aW1lcyBCQVBfMQogICAgICAgICAgKiBnZXRzIGNvcnJ1cHRlZC4gQnkgbG9va2luZyBhdCB0aGUgY29tbWVudHMgaW4gSENGIHRoZQotICAgICAgICAgKiBjYXVzZSBpcyBzdGlsbCBhIG1pc3RlcnkuIE9rYXksIHRoZSBjb21tdW5pY2F0aW9uIHRvIHRoZQorICAgICAgICAgKiBjYXVzZSBpcyBzdGlsbCBhIG15c3RlcnkuIE9rYXksIHRoZSBjb21tdW5pY2F0aW9uIHRvIHRoZQogICAgICAgICAgKiBjYXJkIGlzIGRlYWQsIHJlc2V0IHRoZSBjYXJkIHRvIHJldml2ZS4KICAgICAgICAgICovCiAJaWYoKGxwLT5oY2ZDdHguSUZCX0NhcmRTdGF0ICYgQ0FSRF9TVEFUX0RFRlVOQ1QpICE9IDApCkBAIC0zOTI0LDcgKzM5MjQsNyBAQAogCW1lbXNldCggbXNnLCAwLCBzaXplb2YoIG1zZyApKTsKIAogCi0JLyogQmVjdWFzZSBNSUMgZmFpbHVyZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBXaXJlbGVzcyBFeHRlbnNpb25zIHlldCwgdGhleQorCS8qIEJlY2F1c2UgTUlDIGZhaWx1cmVzIGFyZSBub3QgcGFydCBvZiB0aGUgV2lyZWxlc3MgRXh0ZW5zaW9ucyB5ZXQsIHRoZXkKIAkgICBtdXN0IGJlIHBhc3NlZCBhcyBhIHN0cmluZyB1c2luZyBhbiBJV0VWQ1VTVE9NIGV2ZW50LiBJbiBvcmRlciBmb3IgdGhlCiAJICAgZXZlbnQgdG8gYmUgZWZmZWN0aXZlLCB0aGUgc3RyaW5nIGZvcm1hdCBtdXN0IGJlIGtub3duIGJ5IGJvdGggdGhlCiAJICAgZHJpdmVyIGFuZCB0aGUgc3VwcGxpY2FudC4gVGhlIGZvbGxvd2luZyBpcyB0aGUgc3RyaW5nIGZvcm1hdCB1c2VkIGJ5IHRoZQpAQCAtMzk5OSw3ICszOTk5LDcgQEAKIAkJbWVtY3B5KCAmZGF0YS5yYXdEYXRhLCAmKCBscC0+bHR2UmVjb3JkLnUudThbMV0gKSwgODggKTsKIAkJd3BhX2llID0gd2xfcGFyc2Vfd3BhX2llKCAmZGF0YSwgJmxlbmd0aCApOwogCi0JCS8qIEJlY3Vhc2UgdGhpcyBldmVudCAoQXNzb2NpYXRpb24gV1BBLUlFKSBpcyBub3QgcGFydCBvZiB0aGUgV2lyZWxlc3MKKwkJLyogQmVjYXVzZSB0aGlzIGV2ZW50IChBc3NvY2lhdGlvbiBXUEEtSUUpIGlzIG5vdCBwYXJ0IG9mIHRoZSBXaXJlbGVzcwogCQlFeHRlbnNpb25zIHlldCwgaXQgbXVzdCBiZSBwYXNzZWQgYXMgYSBzdHJpbmcgdXNpbmcgYW4gSVdFVkNVU1RPTSBldmVudC4KIAkJSW4gb3JkZXIgZm9yIHRoZSBldmVudCB0byBiZSBlZmZlY3RpdmUsIHRoZSBzdHJpbmcgZm9ybWF0IG11c3QgYmUga25vd24KIAkJYnkgYm90aCB0aGUgZHJpdmVyIGFuZCB0aGUgc3VwcGxpY2FudC4gVGhlIGZvbGxvd2luZyBpcyB0aGUgc3RyaW5nIGZvcm1hdApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYWdzNDlfaDI1L1RPRE8gYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMjUvVE9ETwppbmRleCAxNGFhNDE1Li45NDAzMmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMjUvVE9ETworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhZ3M0OV9oMjUvVE9ETwpAQCAtMSw3ICsxLDcgQEAKIEZpcnN0IG9mIGFsbCwgdGhlIGJlc3QgdGhpbmcgd291bGQgYmUgdGhhdCB0aGlzIGRyaXZlciBiZWNvbWVzIG9ic29sdGUgYnkKIGFkZGluZyBzdXBwb3J0IGZvciBIZXJtZXMgSUkgYW5kIEhlcm1lcyBJSS41IGNhcmRzIHRvIHRoZSBleGlzdGluZyBvcmlub2NvCiBkcml2ZXIuIFRoZSBvcmlub2NvIGRyaXZlciBjdXJyZW50bHkgb25seSBzdXBwb3J0cyBIZXJtZXMgSSBiYXNlZCBjYXJkcy4KLVNpbmNlIHRoaXMgd2lsbCBub3QgaGFwcGVuIGJ5IG1hZ2ljIGFuZCBoYXMgbm90IGhhcHBlbmQgdW50aWwgbm93IHRoaXMKK1NpbmNlIHRoaXMgd2lsbCBub3QgaGFwcGVuIGJ5IG1hZ2ljIGFuZCBoYXMgbm90IGhhcHBlbmVkIHVudGlsIG5vdyB0aGlzCiBkcml2ZXIgcHJvdmlkZXMgYSBzdG9wLWdhcCBzb2x1dGlvbiBmb3IgdGhlc2UgdHlwZSBvZiBjYXJkcy4KIAogSGF2aW5nIHNhaWQgdGhhdCwgdGhlIGZvbGxvd2luZyB3aXNobGlzdCBjb21lcyB0byBtaW5kIHRvIG1ha2UgdGhlIGRyaXZlcgpAQCAtMTgsNyArMTgsNyBAQAogCS0gdGhlIGRyaXZlciBpcyBzcGxpdCBpbnRvIGEgSGVybWVzIElJIGFuZCBhIEhlcm1lcyBJSS41IHBhcnQsIGl0CiAJICB3b3VsZCBiZSBuaWNlIHRvIGhhbmRsZSBib3RoIHdpdGggb25lIG1vZHVsZSBpbnN0ZWFkIG9mIHR3bwogCS0gcmV2aWV3IGJ5IHRoZSB3aXJlbGVzcyBkZXZlbG9wZXIgY29tbXVuaXR5Ci0JLSB2ZXJpZnkgdGhlIGNvZGUgYWdhaW5zdCB0aGUgY29kaW5nIHN0YW5kYXJkcyBmb3IgYSBwcm9wcGVyIGxpbnV4CisJLSB2ZXJpZnkgdGhlIGNvZGUgYWdhaW5zdCB0aGUgY29kaW5nIHN0YW5kYXJkcyBmb3IgYSBwcm9wZXIgbGludXgKIAkgIGRyaXZlcgogCS0gcmVzb2x2ZSBsaWNlbnNlIGlzc3VlcyAoPykKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL3dsYW4tbmcvcHJpc20yc3RhLmMgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJzdGEuYwppbmRleCBlZDc1MWY0Li4yMWYyNWEyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJzdGEuYworKysgYi9kcml2ZXJzL3N0YWdpbmcvd2xhbi1uZy9wcmlzbTJzdGEuYwpAQCAtMTk3Niw3ICsxOTc2LDcgQEAKIAogCXdsYW5kZXYtPm5zZGNhcHMgPSBQODAyMTFfTlNEQ0FQX0hXRlJBR01FTlQgfCBQODAyMTFfTlNEQ0FQX0FVVE9KT0lOOwogCi0JLyogSW5pdGlhbGl6ZSB0aGUgZGV2aWNlIHByaXZhdGUgZGF0YSBzdHVjdHVyZS4gKi8KKwkvKiBJbml0aWFsaXplIHRoZSBkZXZpY2UgcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZS4gKi8KIAlody0+ZG90MTFfZGVzaXJlZF9ic3NfdHlwZSA9IDE7CiAKIAlyZXR1cm4gd2xhbmRldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Yl9zZXRtb2RlLmMgYi9kcml2ZXJzL3N0YWdpbmcveGdpZmIvdmJfc2V0bW9kZS5jCmluZGV4IDg3NjJhNTMuLjk2NjljMjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Yl9zZXRtb2RlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZiX3NldG1vZGUuYwpAQCAtNzgzNCw3ICs3ODM0LDcgQEAKIAkJCQkJCT09IDYwMCkpIHsKIAkJCWluZGV4Kys7CiAJCX0KLQkJLyogQWxhbiAxMC8xOS8yMDA3OyBkbyB0aGUgc2ltaWxpYXIgYWRqdXN0bWVudCBsaWtlIFhHSVNlYXJjaENSVDFSYXRlKCkgKi8KKwkJLyogQWxhbiAxMC8xOS8yMDA3OyBkbyB0aGUgc2ltaWxhciBhZGp1c3RtZW50IGxpa2UgWEdJU2VhcmNoQ1JUMVJhdGUoKSAqLwogCQlpZiAoKHBWQkluZm8tPlJlZkluZGV4W1JlZnJlc2hSYXRlVGFibGVJbmRleF0uWFJlcyA9PSAxMDI0KQogCQkJCSYmIChwVkJJbmZvLT5SZWZJbmRleFtSZWZyZXNoUmF0ZVRhYmxlSW5kZXhdLllSZXMKIAkJCQkJCT09IDc2OCkpIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvc3RhZ2luZy94Z2lmYi92Z2F0eXBlcy5oIGIvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZnYXR5cGVzLmgKaW5kZXggNGI4Nzk1MS4uZDYxM2U4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZnYXR5cGVzLmgKKysrIGIvZHJpdmVycy9zdGFnaW5nL3hnaWZiL3ZnYXR5cGVzLmgKQEAgLTg1LDcgKzg1LDcgQEAKIAkJCQkJICAgIHVuc2lnbmVkIGxvbmcgKik7CiB9OwogCi0vKiBBZGR0aW9uYWwgSU9DVEwgZm9yIGNvbW11bmljYXRpb24geGdpZmIgPD4gWCBkcml2ZXIgICAgICAgICovCisvKiBBZGRpdGlvbmFsIElPQ1RMIGZvciBjb21tdW5pY2F0aW9uIHhnaWZiIDw+IFggZHJpdmVyICAgICAgICAqLwogLyogSWYgY2hhbmdpbmcgdGhpcywgeGdpZmIuaCBtdXN0IGFsc28gYmUgY2hhbmdlZCAoZm9yIHhnaWZiKSAqLwogCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2FsdWEuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2FsdWEuYwppbmRleCAyYzVmY2ZlLi4zMGNiYjc0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9hbHVhLmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfYWx1YS5jCkBAIC00OTYsOCArNDk2LDggQEAKIAlub25vcF9kZWxheV9tc2VjcyA9IHRnX3B0X2dwLT50Z19wdF9ncF9ub25vcF9kZWxheV9tc2VjczsKIAlzcGluX3VubG9jaygmdGdfcHRfZ3BfbWVtLT50Z19wdF9ncF9tZW1fbG9jayk7CiAJLyoKLQkgKiBQcm9jZXNzIEFMVUFfQUNDRVNTX1NUQVRFX0FDVElWRV9PUFRNSVpFRCBpbiBhIHNlcGVyYXRlIGNvbmRpdGlvbmFsCi0JICogc3RhdGVtZW50IHNvIHRoZSBjb21wbGllciBrbm93cyBleHBsaWN0bHkgdG8gY2hlY2sgdGhpcyBjYXNlIGZpcnN0LgorCSAqIFByb2Nlc3MgQUxVQV9BQ0NFU1NfU1RBVEVfQUNUSVZFX09QVE1JWkVEIGluIGEgc2VwYXJhdGUgY29uZGl0aW9uYWwKKwkgKiBzdGF0ZW1lbnQgc28gdGhlIGNvbXBpbGVyIGtub3dzIGV4cGxpY2l0bHkgdG8gY2hlY2sgdGhpcyBjYXNlIGZpcnN0LgogCSAqIEZvciB0aGUgT3B0aW1pemVkIEFMVUEgYWNjZXNzIHN0YXRlIGNhc2UsIHdlIHdhbnQgdG8gcHJvY2VzcyB0aGUKIAkgKiBpbmNvbWluZyBmYWJyaWMgY21kIEFTQVAuLgogCSAqLwpAQCAtMTE1Nyw3ICsxMTU3LDcgQEAKIAkJc3Bpbl91bmxvY2soJmx1X2dwLT5sdV9ncF9sb2NrKTsKIAkJLyoKIAkJICoKLQkJICogbHVfZ3BfbWVtIGlzIGFzc29pY2F0ZWQgd2l0aCBhIHNpbmdsZQorCQkgKiBsdV9ncF9tZW0gaXMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlCiAJCSAqIHN0cnVjdCBzZV9kZXZpY2UtPmRldl9hbHVhX2x1X2dwX21lbSwgYW5kIGlzIHJlbGVhc2VkIHdoZW4KIAkJICogc3RydWN0IHNlX2RldmljZSBpcyByZWxlYXNlZCB2aWEgY29yZV9hbHVhX2ZyZWVfbHVfZ3BfbWVtKCkuCiAJCSAqCkBAIC0xNDI5LDcgKzE0MjksNyBAQAogCQl9CiAJCXNwaW5fdW5sb2NrKCZ0Z19wdF9ncC0+dGdfcHRfZ3BfbG9jayk7CiAJCS8qCi0JCSAqIHRnX3B0X2dwX21lbSBpcyBhc3NvaWNhdGVkIHdpdGggYSBzaW5nbGUKKwkJICogdGdfcHRfZ3BfbWVtIGlzIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZQogCQkgKiBzZV9wb3J0LT5zZXBfYWx1YV90Z19wdF9ncF9tZW0sIGFuZCBpcyByZWxlYXNlZCB2aWEKIAkJICogY29yZV9hbHVhX2ZyZWVfdGdfcHRfZ3BfbWVtKCkuCiAJCSAqCkBAIC0xOTYzLDcgKzE5NjMsNyBAQAogCQlwcmludGsoS0VSTl9JTkZPICIlczogRW5hYmxpbmcgQUxVQSBFbXVsYXRpb24gZm9yIFNQQy0zIgogCQkJIiBkZXZpY2VcbiIsIFRSQU5TUE9SVChkZXYpLT5uYW1lKTsKIAkJLyoKLQkJICogQXNzb2ljYXRlIHRoaXMgc3RydWN0IHNlX2RldmljZSB3aXRoIHRoZSBkZWZhdWx0IEFMVUEKKwkJICogQXNzb2NpYXRlIHRoaXMgc3RydWN0IHNlX2RldmljZSB3aXRoIHRoZSBkZWZhdWx0IEFMVUEKIAkJICogTFVOIEdyb3VwLgogCQkgKi8KIAkJbHVfZ3BfbWVtID0gY29yZV9hbHVhX2FsbG9jYXRlX2x1X2dwX21lbShkZXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZGV2aWNlLmMgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwppbmRleCAzZmI4ZTMyLi5kMjVlMjA4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9kZXZpY2UuYwpAQCAtMzcxLDcgKzM3MSw3IEBACiAJaWYgKCEoZW5hYmxlKSkgewogCQkvKgogCQkgKiBkZXZlLT5zZV9sdW5fYWNsIHdpbGwgYmUgTlVMTCBmb3IgZGVtby1tb2RlIGNyZWF0ZWQgTFVOcwotCQkgKiB0aGF0IGhhdmUgbm90IGJlZW4gZXhwbGljdGx5IGNvbmNlcnRlZCB0byBNYXBwZWRMVU5zIC0+CisJCSAqIHRoYXQgaGF2ZSBub3QgYmVlbiBleHBsaWNpdGx5IGNvbmNlcnRlZCB0byBNYXBwZWRMVU5zIC0+CiAJCSAqIHN0cnVjdCBzZV9sdW5fYWNsLCBidXQgd2UgcmVtb3ZlIGRldmUtPmFsdWFfcG9ydF9saXN0IGZyb20KIAkJICogcG9ydC0+c2VwX2FsdWFfbGlzdC4gVGhpcyBhbHNvIG1lYW5zIHRoYXQgYWN0aXZlIFVBcyBhbmQKIAkJICogTm9kZUFDTCBjb250ZXh0IHNwZWNpZmljIFBSIG1ldGFkYXRhIGZvciBkZW1vLW1vZGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19saWIuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19saWIuYwppbmRleCBkNTdhZDY3Li4xZTE5M2YzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfbGliLmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX2xpYi5jCkBAIC00MzMsNyArNDMzLDcgQEAKIAkJLyoKIAkJICogR28gYWhlYWQgYW5kIGRvIHRoZSBsb3dlciBjYXNlIGNvbnZlcnNpb24gb2YgdGhlIHJlY2VpdmVkCiAJCSAqIDEyIEFTQ0lJIGNoYXJhY3RlcnMgcmVwcmVzZW50aW5nIHRoZSBJU0lEIGluIHRoZSBUcmFuc3BvcnRJRAotCQkgKiBmb3IgY29tcGFyaXNpb24gYWdhaW5zdCB0aGUgcnVubmluZyBpU0NTSSBzZXNzaW9uJ3MgSVNJRCBmcm9tCisJCSAqIGZvciBjb21wYXJpc29uIGFnYWluc3QgdGhlIHJ1bm5pbmcgaVNDU0kgc2Vzc2lvbidzIElTSUQgZnJvbQogCQkgKiBpc2NzaV90YXJnZXQuYzpsaW9fc2Vzc19nZXRfaW5pdGlhdG9yX3NpZCgpCiAJCSAqLwogCQlmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfZmlsZS5jCmluZGV4IDAyZjU1M2EuLjE1MGM0MzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX2ZpbGUuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9maWxlLmMKQEAgLTE1OSw3ICsxNTksNyBAQAogI2VuZGlmCiAvKglmbGFncyB8PSBPX0RJUkVDVDsgKi8KIAkvKgotCSAqIElmIGZkX2J1ZmZlcmVkX2lvPTEgaGFzIG5vdCBiZWVuIHNldCBleHBsaWN0bHkgKHRoZSBkZWZhdWx0KSwKKwkgKiBJZiBmZF9idWZmZXJlZF9pbz0xIGhhcyBub3QgYmVlbiBzZXQgZXhwbGljaXRseSAodGhlIGRlZmF1bHQpLAogCSAqIHVzZSBPX1NZTkMgdG8gZm9yY2UgRklMRUlPIHdyaXRlcyB0byBkaXNrLgogCSAqLwogCWlmICghKGZkX2Rldi0+ZmJkX2ZsYWdzICYgRkRCRF9VU0VfQlVGRkVSRURfSU8pKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfcHIuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3ByLmMKaW5kZXggMjUyMWY3NS4uYTc5ZjUxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfcHIuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV9wci5jCkBAIC00NzgsNyArNDc4LDcgQEAKIAkJYnJlYWs7CiAJfQogCS8qCi0JICogQ2FzZSB3aGVyZSB0aGUgQ0RCIGlzIGV4cGxpY3RseSBhbGxvd2VkIGluIHRoZSBhYm92ZSBzd2l0Y2gKKwkgKiBDYXNlIHdoZXJlIHRoZSBDREIgaXMgZXhwbGljaXRseSBhbGxvd2VkIGluIHRoZSBhYm92ZSBzd2l0Y2gKIAkgKiBzdGF0ZW1lbnQuCiAJICovCiAJaWYgKCEocmV0KSAmJiAhKG90aGVyX2NkYikpIHsKQEAgLTM3MzUsNyArMzczNSw3IEBACiAJCXJldHVybiBQWVhfVFJBTlNQT1JUX0xVX0NPTU1fRkFJTFVSRTsKIAogCWlmIChjbWQtPmRhdGFfbGVuZ3RoIDwgMjQpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiU1BDLVBSOiBSZWNpZXZlZCBQUiBPVVQgcGFyYW1ldGVyIGxpc3QiCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIlNQQy1QUjogUmVjZWl2ZWQgUFIgT1VUIHBhcmFtZXRlciBsaXN0IgogCQkJIiBsZW5ndGggdG9vIHNtYWxsOiAldVxuIiwgY21kLT5kYXRhX2xlbmd0aCk7CiAJCXJldHVybiBQWVhfVFJBTlNQT1JUX0lOVkFMSURfUEFSQU1FVEVSX0xJU1Q7CiAJfQpAQCAtMzc3OCw3ICszNzc4LDcgQEAKIAkgKi8KIAlpZiAoIShzcGVjX2lfcHQpICYmICgoY2RiWzFdICYgMHgxZikgIT0gUFJPX1JFR0lTVEVSX0FORF9NT1ZFKSAmJgogCSAgICAoY21kLT5kYXRhX2xlbmd0aCAhPSAyNCkpIHsKLQkJcHJpbnRrKEtFUk5fV0FSTklORyAiU1BDLVBSOiBSZWNpZXZlZCBQUiBPVVQgaWxsZWdhbCBwYXJhbWV0ZXIiCisJCXByaW50ayhLRVJOX1dBUk5JTkcgIlNQQy1QUjogUmVjZWl2ZWQgUFIgT1VUIGlsbGVnYWwgcGFyYW1ldGVyIgogCQkJIiBsaXN0IGxlbmd0aDogJXVcbiIsIGNtZC0+ZGF0YV9sZW5ndGgpOwogCQlyZXR1cm4gUFlYX1RSQU5TUE9SVF9JTlZBTElEX1BBUkFNRVRFUl9MSVNUOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3RyYW5zcG9ydC5jIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMKaW5kZXggYmY2YWE4YS4uOTU4M2IyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMKKysrIGIvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdHJhbnNwb3J0LmMKQEAgLTcxOSw3ICs3MTksNyBAQAogCQkJY21kLT5zZV9sdW4gPSBOVUxMOwogCQkJLyoKIAkJCSAqIFNvbWUgZmFicmljIG1vZHVsZXMgbGlrZSB0Y21fbG9vcCBjYW4gcmVsZWFzZQotCQkJICogdGhlaXIgaW50ZXJuYWxseSBhbGxvY2F0ZWQgSS9PIHJlZnJlbmNlIG5vdyBhbmQKKwkJCSAqIHRoZWlyIGludGVybmFsbHkgYWxsb2NhdGVkIEkvTyByZWZlcmVuY2Ugbm93IGFuZAogCQkJICogc3RydWN0IHNlX2NtZCBub3cuCiAJCQkgKi8KIAkJCWlmIChDTURfVEZPKGNtZCktPmNoZWNrX3N0b3BfZnJlZSAhPSBOVUxMKSB7CkBAIC0yMDI5LDcgKzIwMjksNyBAQAogCSAqIElmIHRoZSByZWNlaXZlZCBDREIgaGFzIGFsZWFkeSBiZWVuIEFCT1JURUQgYnkgdGhlIGdlbmVyaWMKIAkgKiB0YXJnZXQgZW5naW5lLCB3ZSBub3cgY2FsbCB0cmFuc3BvcnRfY2hlY2tfYWJvcnRlZF9zdGF0dXMoKQogCSAqIHRvIHF1ZXVlIGFueSBkZWxhdGVkIFRBU0tfQUJPUlRFRCBzdGF0dXMgZm9yIHRoZSByZWNlaXZlZCBDREIgdG8gdGhlCi0JICogZmFicmljIG1vZHVsZSBhcyB3ZSBhcmUgZXhwZWN0aW5nIG5vIGZ1dGhlciBpbmNvbWluZyBEQVRBIE9VVAorCSAqIGZhYnJpYyBtb2R1bGUgYXMgd2UgYXJlIGV4cGVjdGluZyBubyBmdXJ0aGVyIGluY29taW5nIERBVEEgT1VUCiAJICogc2VxdWVuY2VzIGF0IHRoaXMgcG9pbnQuCiAJICovCiAJaWYgKHRyYW5zcG9ydF9jaGVja19hYm9ydGVkX3N0YXR1cyhjbWQsIDEpICE9IDApCkBAIC0yNTAxLDcgKzI1MDEsNyBAQAogCWlmIChTRV9ERVYoY21kKS0+ZGV2X3Rhc2tfYXR0cl90eXBlICE9IFNBTV9UQVNLX0FUVFJfRU1VTEFURUQpCiAJCXJldHVybiAxOwogCS8qCi0JICogQ2hlY2sgZm9yIHRoZSBleGlzdGFuY2Ugb2YgSEVBRF9PRl9RVUVVRSwgYW5kIGlmIHRydWUgcmV0dXJuIDEKKwkgKiBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBIRUFEX09GX1FVRVVFLCBhbmQgaWYgdHJ1ZSByZXR1cm4gMQogCSAqIHRvIGFsbG93IHRoZSBwYXNzZWQgc3RydWN0IHNlX2NtZCBsaXN0IG9mIHRhc2tzIHRvIHRoZSBmcm9udCBvZiB0aGUgbGlzdC4KIAkgKi8KIAkgaWYgKGNtZC0+c2FtX3Rhc2tfYXR0ciA9PSBUQVNLX0FUVFJfSE9RKSB7CkBAIC0yNTQ3LDcgKzI1NDcsNyBAQAogCWlmIChhdG9taWNfcmVhZCgmU0VfREVWKGNtZCktPmRldl9vcmRlcmVkX3N5bmMpICE9IDApIHsKIAkJLyoKIAkJICogT3RoZXJ3aXNlLCBhZGQgY21kIHcvIHRhc2tzIHRvIGRlbGF5ZWQgY21kIHF1ZXVlIHRoYXQKLQkJICogd2lsbCBiZSBkcmFpbmVkIHVwb24gY29tcGV0aW9uIG9mIEhFQURfT0ZfUVVFVUUgdGFzay4KKwkJICogd2lsbCBiZSBkcmFpbmVkIHVwb24gY29tcGxldGlvbiBvZiBIRUFEX09GX1FVRVVFIHRhc2suCiAJCSAqLwogCQlzcGluX2xvY2soJlNFX0RFVihjbWQpLT5kZWxheWVkX2NtZF9sb2NrKTsKIAkJY21kLT5zZV9jbWRfZmxhZ3MgfD0gU0NGX0RFTEFZRURfQ01EX0ZST01fU0FNX0FUVFI7CkBAIC0yNTg5LDcgKzI1ODksNyBAQAogCX0KIAkvKgogCSAqIENhbGwgdHJhbnNwb3J0X2NtZF9jaGVja19zdG9wKCkgdG8gc2VlIGlmIGEgZmFicmljIGV4Y2VwdGlvbgotCSAqIGhhcyBvY2N1cmVkIHRoYXQgcHJldmVudHMgZXhlY3V0aW9uLgorCSAqIGhhcyBvY2N1cnJlZCB0aGF0IHByZXZlbnRzIGV4ZWN1dGlvbi4KIAkgKi8KIAlpZiAoISh0cmFuc3BvcnRfY21kX2NoZWNrX3N0b3AoY21kLCAwLCBUUkFOU1BPUlRfUFJPQ0VTU0lORykpKSB7CiAJCS8qCkBAIC0zMTA5LDcgKzMxMDksNyBAQAogCWlmIChyZXQgIT0gMCkgewogCQljbWQtPnRyYW5zcG9ydF93YWl0X2Zvcl90YXNrcyA9ICZ0cmFuc3BvcnRfbm9wX3dhaXRfZm9yX3Rhc2tzOwogCQkvKgotCQkgKiBTZXQgU0NTSSBhZGRpdGlvbmFsIHNlbnNlIGNvZGUgKEFTQykgdG8gJ0xVTiBOb3QgQWNjZXNzYWJsZSc7CisJCSAqIFNldCBTQ1NJIGFkZGl0aW9uYWwgc2Vuc2UgY29kZSAoQVNDKSB0byAnTFVOIE5vdCBBY2Nlc3NpYmxlJzsKIAkJICogVGhlIEFMVUEgYWRkaXRpb25hbCBzZW5zZSBjb2RlIHF1YWxpZmllciAoQVNDUSkgaXMgZGV0ZXJtaW5lZAogCQkgKiBieSB0aGUgQUxVQSBwcmltYXJ5IG9yIHNlY29uZGFyeSBhY2Nlc3Mgc3RhdGUuLgogCQkgKi8KQEAgLTM4NjcsNyArMzg2Nyw3IEBACiAJCX0KIAl9CiAJLyoKLQkgKiBDaGVjayBmb3IgYSBjYWxsYmFjaywgdXNlZCBieSBhbW91bmdzdCBvdGhlciB0aGluZ3MKKwkgKiBDaGVjayBmb3IgYSBjYWxsYmFjaywgdXNlZCBieSBhbW9uZ3N0IG90aGVyIHRoaW5ncwogCSAqIFhEV1JJVEVfUkVBRF8xMCBlbXVsYXRpb24uCiAJICovCiAJaWYgKGNtZC0+dHJhbnNwb3J0X2NvbXBsZXRlX2NhbGxiYWNrKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdWEuYyBiL2RyaXZlcnMvdGFyZ2V0L3RhcmdldF9jb3JlX3VhLmMKaW5kZXggYTJlZjM0Ni4uZGYzNTUxNyAxMDA2NDQKLS0tIGEvZHJpdmVycy90YXJnZXQvdGFyZ2V0X2NvcmVfdWEuYworKysgYi9kcml2ZXJzL3RhcmdldC90YXJnZXRfY29yZV91YS5jCkBAIC0yNDcsNyArMjQ3LDcgQEAKIAkJfQogCQkvKgogCQkgKiBPdGhlcndpc2UgZm9yIHRoZSBkZWZhdWx0IDAwYiwgcmVsZWFzZSB0aGUgVU5JVCBBVFRFTlRJT04KLQkJICogY29uZGl0aW9uLiAgUmV0dXJuIHRoZSBBU0MvQVNDUSBvZiB0aGUgaGlnZXN0IHByaW9yaXR5IFVBCisJCSAqIGNvbmRpdGlvbi4gIFJldHVybiB0aGUgQVNDL0FTQ1Egb2YgdGhlIGhpZ2hlc3QgcHJpb3JpdHkgVUEKIAkJICogKGhlYWQgb2YgdGhlIGxpc3QpIGluIHRoZSBvdXRnb2luZyBDSEVDS19DT05ESVRJT04gKyBzZW5zZS4KIAkJICovCiAJCWlmIChoZWFkKSB7CkBAIC0zMDQsNyArMzA0LDcgQEAKIAkgKiBtYXRjaGluZyBzdHJ1Y3Qgc2VfbHVuLgogCSAqCiAJICogT25jZSB0aGUgcmV0dXJuaW5nIEFTQy9BU0NRIHZhbHVlcyBhcmUgc2V0LCB3ZSBnbyBhaGVhZCBhbmQKLQkgKiByZWxlYXNlIGFsbCBvZiB0aGUgVW5pdCBBdHRlbnRpb24gY29uZGl0aW9ucyBmb3IgdGhlIGFzc29pY2F0ZWQKKwkgKiByZWxlYXNlIGFsbCBvZiB0aGUgVW5pdCBBdHRlbnRpb24gY29uZGl0aW9ucyBmb3IgdGhlIGFzc29jaWF0ZWQKIAkgKiBzdHJ1Y3Qgc2VfbHVuLgogCSAqLwogCXNwaW5fbG9jaygmZGV2ZS0+dWFfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3RlbGVwaG9ueS9peGouYyBiL2RyaXZlcnMvdGVsZXBob255L2l4ai5jCmluZGV4IGIwMDEwMTkuLmQ1ZjkyM2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdGVsZXBob255L2l4ai5jCisrKyBiL2RyaXZlcnMvdGVsZXBob255L2l4ai5jCkBAIC0xNjksNyArMTY5LDcgQEAKICAqIEFkZGVkIHN1cHBvcnQgZm9yIExpbnV4IDIuNC54IGtlcm5lbHMuCiAgKgogICogUmV2aXNpb24gMy43NyAgMjAwMS8wMS8wOSAwNDowMDo1MiAgZW9rZXJzb24KLSAqIExpbmV0ZXN0IHdpbGwgbm93IHRlc3QgdGhlIGxpbmUsIGV2ZW4gaWYgaXQgaGFzIHByZXZpb3VzbHkgc3VjY2VkZWQuCisgKiBMaW5ldGVzdCB3aWxsIG5vdyB0ZXN0IHRoZSBsaW5lLCBldmVuIGlmIGl0IGhhcyBwcmV2aW91c2x5IHN1Y2NlZWRlZC4KICAqCiAgKiBSZXZpc2lvbiAzLjc2ICAyMDAxLzAxLzA4IDE5OjI3OjAwICBlb2tlcnNvbgogICogRml4ZWQgcHJvYmxlbSB3aXRoIHN0YW5kYXJkIGNhYmxlIG9uIEludGVybmV0IFBob25lQ0FSRC4KQEAgLTM1Miw3ICszNTIsNyBAQAogCQl9IGVsc2UgewogCQkJai0+ZnNrc2l6ZSA9IDgwMDA7CiAJCQlpZihpeGpkZWJ1ZyAmIDB4MDIwMCkgewotCQkJCXByaW50aygiSVhKIHBob25lJWQgLSBhbGxvY2F0ZSBzdWNjZWRlZFxuIiwgai0+Ym9hcmQpOworCQkJCXByaW50aygiSVhKIHBob25lJWQgLSBhbGxvY2F0ZSBzdWNjZWVkZWRcbiIsIGotPmJvYXJkKTsKIAkJCX0KIAkJfQogCX0KQEAgLTQ4Nyw3ICs0ODcsNyBAQAogOC05CQlIYXJkd2FyZSBTdGF0dXMgUmVnaXN0ZXIJCQlSZWFkIE9ubHkKIEEtQgkJSGFyZHdhcmUgQ29udHJvbCBSZWdpc3RlcgkJCVJlYWQgV3JpdGUKIEMtRCBIb3N0IFRyYW5zbWl0IChXcml0ZSkgRGF0YSBCdWZmZXIgQWNjZXNzIFBvcnQgKGJ1ZmZlciBpbnB1dClXcml0ZSBPbmx5Ci1FLUYgSG9zdCBSZWNpZXZlIChSZWFkKSBEYXRhIEJ1ZmZlciBBY2Nlc3MgUG9ydCAoYnVmZmVyIGlucHV0KQlSZWFkIE9ubHkKK0UtRiBIb3N0IFJlY2VpdmUgKFJlYWQpIERhdGEgQnVmZmVyIEFjY2VzcyBQb3J0IChidWZmZXIgaW5wdXQpCVJlYWQgT25seQogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBzdGF0aWMgaW5saW5lIHZvaWQgaXhqX3JlYWRfSFNSKElYSiAqaikKQEAgLTQxOTUsNyArNDE5NSw3IEBACiAJCQlpeGpfV3JpdGVEU1BDb21tYW5kKDB4RTMzOCwgaik7CS8qIFNldCBFY2hvIFN1cHByZXNzZXIgQXR0ZW51YXRpb24gdG8gMGRCICovCiAKIAkJCS8qIE5vdyB3ZSBjYW4gc2V0IHRoZSBBR0MgaW5pdGlhbCBwYXJhbWV0ZXJzIGFuZCB0dXJuIGl0IG9uICovCi0JCQlpeGpfV3JpdGVEU1BDb21tYW5kKDB4Q0Y5MCwgaik7CS8qIFNldCBBR0MgTWludW11bSBnYWluICovCisJCQlpeGpfV3JpdGVEU1BDb21tYW5kKDB4Q0Y5MCwgaik7CS8qIFNldCBBR0MgTWluaW11bSBnYWluICovCiAJCQlpeGpfV3JpdGVEU1BDb21tYW5kKDB4MDAyMCwgaik7CS8qIHRvIDAuMTI1ICgtMThkQikgKi8KIAkKIAkJCWl4al9Xcml0ZURTUENvbW1hbmQoMHhDRjkxLCBqKTsJLyogU2V0IEFHQyBNYXhpbXVtIGdhaW4gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdGVsZXBob255L2l4ai5oIGIvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmgKaW5kZXggNGMzMmE0My4uMmM4NDExMyAxMDA2NDQKLS0tIGEvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmgKKysrIGIvZHJpdmVycy90ZWxlcGhvbnkvaXhqLmgKQEAgLTExNDksNyArMTE0OSw3IEBACiAJdW5zaWduZWQgaW50IGZpcnN0cmluZzoxOyAvKiBGaXJzdCByaW5nIGNhZGVuY2UgaXMgY29tcGxldGUgKi8KIAl1bnNpZ25lZCBpbnQgcHN0bmNoZWNrOjE7CS8qIEN1cnJlbnRseSBjaGVja2luZyB0aGUgUFNUTiBMaW5lICovCiAJdW5zaWduZWQgaW50IHBzdG5fcm1yOjE7Ci0JdW5zaWduZWQgaW50IHg6MzsJLyogdW5zZWQgYml0cyAqLworCXVuc2lnbmVkIGludCB4OjM7CS8qIHVudXNlZCBiaXRzICovCiAKIH0gSVhKX0ZMQUdTOwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9odmMvaHZjX2l1Y3YuYyBiL2RyaXZlcnMvdHR5L2h2Yy9odmNfaXVjdi5jCmluZGV4IGMzNDI1YmIuLmI2ZjdkNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L2h2Yy9odmNfaXVjdi5jCisrKyBiL2RyaXZlcnMvdHR5L2h2Yy9odmNfaXVjdi5jCkBAIC0yNTUsNyArMjU1LDcgQEAKIAkJZGVmYXVsdDoKIAkJCXdyaXR0ZW4gPSAtRUlPOwogCQl9Ci0JCS8qIHJlbW92ZSBidWZmZXIgaWYgYW4gZXJyb3IgaGFzIG9jY3VyZWQgb3IgcmVjZWl2ZWQgZGF0YQorCQkvKiByZW1vdmUgYnVmZmVyIGlmIGFuIGVycm9yIGhhcyBvY2N1cnJlZCBvciByZWNlaXZlZCBkYXRhCiAJCSAqIGlzIG5vdCBjb3JyZWN0ICovCiAJCWlmIChyYyB8fCAocmItPm1idWYtPnZlcnNpb24gIT0gTVNHX1ZFUlNJT04pIHx8CiAJCQkgIChyYi0+bXNnLmxlbmd0aCAgICAhPSBNU0dfU0laRShyYi0+bWJ1Zi0+ZGF0YWxlbikpKQpAQCAtNjIwLDcgKzYyMCw3IEBACiAgKgkJdGhlIGluZGV4IG9mIGFuIHN0cnVjdCBodmNfaXVjdl9wcml2YXRlIGluc3RhbmNlLgogICoKICAqIFRoaXMgcm91dGluZSBub3RpZmllcyB0aGUgSFZDIGJhY2stZW5kIHRoYXQgYSB0dHkgaGFuZ3VwIChjYXJyaWVyIGxvc3MsCi0gKiB2aXJ0dWFsIG9yIG90aGVyd2lzZSkgaGFzIG9jY3VyZWQuCisgKiB2aXJ0dWFsIG9yIG90aGVyd2lzZSkgaGFzIG9jY3VycmVkLgogICogVGhlIHovVk0gSVVDViBIVkMgZGV2aWNlIGRyaXZlciBpZ25vcmVzIHZpcnR1YWwgaGFuZ3VwcyAodmhhbmd1cCgpKQogICogdG8ga2VlcCBhbiBleGlzdGluZyBJVUNWIGNvbW11bmljYXRpb24gcGF0aCBlc3RhYmxpc2hlZC4KICAqIChCYWNrZ3JvdW5kOiB2aGFuZ3VwKCkgaXMgY2FsbGVkIGZyb20gdXNlciBzcGFjZSAoYnkgZ2V0dHkgb3IgbG9naW4pIHRvCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9odmMvaHZjX3Zpby5jIGIvZHJpdmVycy90dHkvaHZjL2h2Y192aW8uYwppbmRleCA1ZTJmNTJiLi5lNmVlYTE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9odmMvaHZjX3Zpby5jCisrKyBiL2RyaXZlcnMvdHR5L2h2Yy9odmNfdmlvLmMKQEAgLTEsNyArMSw3IEBACiAvKgogICogdmlvIGRyaXZlciBpbnRlcmZhY2UgdG8gaHZjX2NvbnNvbGUuYwogICoKLSAqIFRoaXMgY29kZSB3YXMgbW92ZWQgaGVyZSB0byBhbGxvdyB0aGUgcmVtYWluZyBjb2RlIHRvIGJlIHJldXNlZCBhcyBhCisgKiBUaGlzIGNvZGUgd2FzIG1vdmVkIGhlcmUgdG8gYWxsb3cgdGhlIHJlbWFpbmluZyBjb2RlIHRvIGJlIHJldXNlZCBhcyBhCiAgKiBnZW5lcmljIHBvbGxpbmcgbW9kZSB3aXRoIHNlbWktcmVsaWFibGUgdHJhbnNwb3J0IGRyaXZlciBjb3JlIHRvIHRoZQogICogY29uc29sZSBhbmQgdHR5IHN1YnN5c3RlbXMuCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvaHZjL2h2Y3MuYyBiL2RyaXZlcnMvdHR5L2h2Yy9odmNzLmMKaW5kZXggYmVmMjM4Zi4uNGM4YjY2NSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvaHZjL2h2Y3MuYworKysgYi9kcml2ZXJzL3R0eS9odmMvaHZjcy5jCkBAIC0xMTgsNyArMTE4LDcgQEAKICAqIGFyY2gvcG93ZXJlcGMvaW5jbHVkZS9hc20vaHZjc2VydmVyLmgKICAqCiAgKiAxLjMuMiAtPiAxLjMuMyBSZXBsYWNlZCB5aWVsZCgpIGluIGh2Y3NfY2xvc2UoKSB3aXRoIHR0eV93YWl0X3VudGlsX3NlbnQoKSB0bwotICogcHJldmVudCBwb3NzaWJsZSBsb2NrdXAgd2l0aCByZWFsdGltZSBzY2hlZHVsaW5nIGFzIHNpbWlsYXJpbHkgcG9pbnRlZCBvdXQgYnkKKyAqIHByZXZlbnQgcG9zc2libGUgbG9ja3VwIHdpdGggcmVhbHRpbWUgc2NoZWR1bGluZyBhcyBzaW1pbGFybHkgcG9pbnRlZCBvdXQgYnkKICAqIGFrcG0gaW4gaHZjX2NvbnNvbGUuICBDaGFuZ2VkIHJlc3VsdGVkIGluIHRoZSByZW1vdmFsIG9mIGh2Y3NfZmluYWxfY2xvc2UoKQogICogdG8gcmVvcmRlciBjbGVhbnVwIG9wZXJhdGlvbnMgYW5kIHByZXZlbnQgZGlzY2FyZGluZyBvZiBwZW5kaW5nIGRhdGEgZHVyaW5nCiAgKiBhbiBodmNzX2Nsb3NlKCkuICBSZW1vdmVkIHNwaW5sb2NrIHByb3RlY3Rpb24gb2YgaHZjc19zdHJ1Y3QgZGF0YSBtZW1iZXJzIGluCkBAIC01ODEsNyArNTgxLDcgQEAKIAkJCS8qCiAJCQkgKiBXZSBhcmUgc3RpbGwgb2JsaWdhdGVkIHRvIGRlbGl2ZXIgdGhlIGRhdGEgdG8gdGhlCiAJCQkgKiBoeXBlcnZpc29yIGV2ZW4gaWYgdGhlIHR0eSBoYXMgYmVlbiBjbG9zZWQgYmVjYXVzZQotCQkJICogd2UgY29tbWl0ZWQgdG8gZGVsaXZlcmluZyBpdC4gIEJ1dCBkb24ndCB0cnkgdG8gd2FrZQorCQkJICogd2UgY29tbWl0dGVkIHRvIGRlbGl2ZXJpbmcgaXQuICBCdXQgZG9uJ3QgdHJ5IHRvIHdha2UKIAkJCSAqIGEgbm9uLWV4aXN0ZW50IHR0eS4KIAkJCSAqLwogCQkJaWYgKHR0eSkgewpAQCAtMTM0OSw3ICsxMzQ5LDcgQEAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmaHZjc2QtPmxvY2ssIGZsYWdzKTsKIAogCS8qCi0JICogU29tZWhvdyBhbiBvcGVuIHN1Y2NlZGRlZCBidXQgdGhlIGRldmljZSB3YXMgcmVtb3ZlZCBvciB0aGUKKwkgKiBTb21laG93IGFuIG9wZW4gc3VjY2VlZGVkIGJ1dCB0aGUgZGV2aWNlIHdhcyByZW1vdmVkIG9yIHRoZQogCSAqIGNvbm5lY3Rpb24gdGVybWluYXRlZCBiZXR3ZWVuIHRoZSB2dHktc2VydmVyIGFuZCBwYXJ0bmVyIHZ0eSBkdXJpbmcKIAkgKiB0aGUgbWlkZGxlIG9mIGEgd3JpdGUgb3BlcmF0aW9uPyAgVGhpcyBpcyBhIGNydW1teSBwbGFjZSB0byBkbyB0aGlzCiAJICogYnV0IHdlIHdhbnQgdG8ga2VlcCBpdCBhbGwgaW4gdGhlIHNwaW5sb2NrLgpAQCAtMTQyMCw3ICsxNDIwLDcgQEAKIH0KIAogLyoKLSAqIFRoaXMgaXMgcmVhbGx5IGFza2luZyBob3cgbXVjaCBjYW4gd2UgZ3VhcmVudGVlIHRoYXQgd2UgY2FuIHNlbmQgb3IgdGhhdCB3ZQorICogVGhpcyBpcyByZWFsbHkgYXNraW5nIGhvdyBtdWNoIGNhbiB3ZSBndWFyYW50ZWUgdGhhdCB3ZSBjYW4gc2VuZCBvciB0aGF0IHdlCiAgKiBhYnNvbHV0ZWx5IFdJTEwgQlVGRkVSIGlmIHdlIGNhbid0IHNlbmQgaXQuICBUaGlzIGRyaXZlciBNVVNUIGhvbm9yIHRoZQogICogcmV0dXJuIHZhbHVlLCBoZW5jZSB0aGUgcmVhc29uIGZvciBodmNzX3N0cnVjdCBidWZmZXJpbmcuCiAgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L214c2VyLmggYi9kcml2ZXJzL3R0eS9teHNlci5oCmluZGV4IDQxODc4YTYuLjBiZjc5NDMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L214c2VyLmgKKysrIGIvZHJpdmVycy90dHkvbXhzZXIuaApAQCAtMTEzLDcgKzExMyw3IEBACiAjZGVmaW5lIE1PWEFfTVVTVF9JSVJfUlRPCQkweDBDCiAjZGVmaW5lIE1PWEFfTVVTVF9JSVJfTFNSCQkweDA2CiAKLS8qIHJlY2lldmVkIFhvbi9Yb2ZmIG9yIHNwZWNpY2FsIGludGVycnVwdCBwZW5kaW5nICovCisvKiByZWNlaXZlZCBYb24vWG9mZiBvciBzcGVjaWNhbCBpbnRlcnJ1cHQgcGVuZGluZyAqLwogI2RlZmluZSBNT1hBX01VU1RfSUlSX1hTQwkJMHgxMAogCiAvKiBSVFMvQ1RTIGNoYW5nZSBzdGF0ZSBpbnRlcnJ1cHQgcGVuZGluZyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbl9nc20uYyBiL2RyaXZlcnMvdHR5L25fZ3NtLmMKaW5kZXggMTc2ZjYzMi4uNDdmOGNkYiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvbl9nc20uYworKysgYi9kcml2ZXJzL3R0eS9uX2dzbS5jCkBAIC03NCw3ICs3NCw3IEBACiAjZW5kaWYKIAogLyoKLSAqIFNlbWktYXJiaXRhcnkgYnVmZmVyIHNpemUgbGltaXRzLiAwNzEwIGlzIG5vcm1hbGx5IHJ1biB3aXRoIDMyLTY0IGJ5dGUKKyAqIFNlbWktYXJiaXRyYXJ5IGJ1ZmZlciBzaXplIGxpbWl0cy4gMDcxMCBpcyBub3JtYWxseSBydW4gd2l0aCAzMi02NCBieXRlCiAgKiBsaW1pdHMgc28gdGhpcyBpcyBwbGVudHkKICAqLwogI2RlZmluZSBNQVhfTVJVIDUxMgpAQCAtODIsNyArODIsNyBAQAogCiAvKgogICoJRWFjaCBibG9jayBvZiBkYXRhIHdlIGhhdmUgcXVldWVkIHRvIGdvIG91dCBpcyBpbiB0aGUgZm9ybSBvZgotICoJYSBnc21fbXNnIHdoaWNoIGhvbGRzIGV2ZXJ5dGhpbmcgd2UgbmVlZCBpbiBhIGxpbmsgbGF5ZXIgaW5kZXBlbmRhbnQKKyAqCWEgZ3NtX21zZyB3aGljaCBob2xkcyBldmVyeXRoaW5nIHdlIG5lZWQgaW4gYSBsaW5rIGxheWVyIGluZGVwZW5kZW50CiAgKglmb3JtYXQKICAqLwogCkBAIC0xMTkzLDggKzExOTMsOCBAQAogCQlicmVhazsKIAkJLyogT3B0aW9uYWwgdW5zdXBwb3J0ZWQgY29tbWFuZHMgKi8KIAljYXNlIENNRF9QTjoJLyogUGFyYW1ldGVyIG5lZ290aWF0aW9uICovCi0JY2FzZSBDTURfUlBOOgkvKiBSZW1vdGUgcG9ydCBuZWdvdGF0aW9uICovCi0JY2FzZSBDTURfU05DOgkvKiBTZXJ2aWNlIG5lZ290YXRpb24gY29tbWFuZCAqLworCWNhc2UgQ01EX1JQTjoJLyogUmVtb3RlIHBvcnQgbmVnb3RpYXRpb24gKi8KKwljYXNlIENNRF9TTkM6CS8qIFNlcnZpY2UgbmVnb3RpYXRpb24gY29tbWFuZCAqLwogCWRlZmF1bHQ6CiAJCS8qIFJlcGx5IHRvIGJhZCBjb21tYW5kcyB3aXRoIGFuIE5TQyAqLwogCQlidWZbMF0gPSBjb21tYW5kOwpAQCAtMjAyNiw3ICsyMDI2LDcgQEAKICAqCUBtdXg6IG11eCB0byBmcmVlCiAgKgogICoJRGlzcG9zZSBvZiBhbGxvY2F0ZWQgcmVzb3VyY2VzIGZvciBhIGRlYWQgbXV4LiBObyByZWZjb3VudGluZwotICoJYXQgcHJlc2VudCBzbyB0aGUgbXV4IG11c3QgYmUgdHJ1ZWx5IGRlYWQuCisgKglhdCBwcmVzZW50IHNvIHRoZSBtdXggbXVzdCBiZSB0cnVseSBkZWFkLgogICovCiB2b2lkIGdzbV9mcmVlX211eChzdHJ1Y3QgZ3NtX211eCAqZ3NtKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvbm96b21pLmMgYi9kcml2ZXJzL3R0eS9ub3pvbWkuYwppbmRleCBmNGYxMTE2Li5mZDBhOTg1MiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvbm96b21pLmMKKysrIGIvZHJpdmVycy90dHkvbm96b21pLmMKQEAgLTE2NzMsNyArMTY3Myw3IEBACiAKIC8qCiAgKiBjYWxsZWQgd2hlbiB0aGUgdXNlcnNwYWNlIHByb2Nlc3Mgd3JpdGVzIHRvIHRoZSB0dHkgKC9kZXYvbm96KikuCi0gKiBEYXRhIGlzIGluc2VydGVkIGludG8gYSBmaWZvLCB3aGljaCBpcyB0aGVuIHJlYWQgYW5kIHRyYW5zZmVyZWQgdG8gdGhlIG1vZGVtLgorICogRGF0YSBpcyBpbnNlcnRlZCBpbnRvIGEgZmlmbywgd2hpY2ggaXMgdGhlbiByZWFkIGFuZCB0cmFuc2ZlcnJlZCB0byB0aGUgbW9kZW0uCiAgKi8KIHN0YXRpYyBpbnQgbnR0eV93cml0ZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBjb25zdCB1bnNpZ25lZCBjaGFyICpidWZmZXIsCiAJCSAgICAgIGludCBjb3VudCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3JvY2tldC5jIGIvZHJpdmVycy90dHkvcm9ja2V0LmMKaW5kZXggMzc4MGRhOC4uMDM2ZmVlYiAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvcm9ja2V0LmMKKysrIGIvZHJpdmVycy90dHkvcm9ja2V0LmMKQEAgLTIwNjAsNyArMjA2MCw3IEBACiAJCQlzQ2xvY2tQcmVzY2FsZSA9IDB4MTk7CiAJCQlycF9iYXVkX2Jhc2VbaV0gPSAyMzA0MDA7CiAJCX0gZWxzZSB7Ci0JCQkvKiBtb2QgNCAoZGV2aWRlIGJ5IDUpIHByZXNjYWxlICovCisJCQkvKiBtb2QgNCAoZGl2aWRlIGJ5IDUpIHByZXNjYWxlICovCiAJCQlzQ2xvY2tQcmVzY2FsZSA9IDB4MTQ7CiAJCQlycF9iYXVkX2Jhc2VbaV0gPSA0NjA4MDA7CiAJCX0KQEAgLTIxODMsNyArMjE4Myw3IEBACiAJCXNDbG9ja1ByZXNjYWxlID0gMHgxOTsJLyogbW9kIDkgKGRpdmlkZSBieSAxMCkgcHJlc2NhbGUgKi8KIAkJcnBfYmF1ZF9iYXNlW2ldID0gMjMwNDAwOwogCX0gZWxzZSB7Ci0JCXNDbG9ja1ByZXNjYWxlID0gMHgxNDsJLyogbW9kIDQgKGRldmlkZSBieSA1KSBwcmVzY2FsZSAqLworCQlzQ2xvY2tQcmVzY2FsZSA9IDB4MTQ7CS8qIG1vZCA0IChkaXZpZGUgYnkgNSkgcHJlc2NhbGUgKi8KIAkJcnBfYmF1ZF9iYXNlW2ldID0gNDYwODAwOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwLmMKaW5kZXggYjNiODgxYi4uNjYxMTUzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsLzgyNTAuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MC5jCkBAIC0xNjI5LDcgKzE2MjksNyBAQAogCQkJICAgIHVwLT5wb3J0LmlvdHlwZSA9PSBVUElPX0RXQVBCMzIpICYmCiAJCQkgIChpaXIgJiBVQVJUX0lJUl9CVVNZKSA9PSBVQVJUX0lJUl9CVVNZKSB7CiAJCQkvKiBUaGUgRGVzaWduV2FyZSBBUEIgVUFSVCBoYXMgYW4gQnVzeSBEZXRlY3QgKDB4MDcpCi0JCQkgKiBpbnRlcnJ1cHQgbWVhbmluZyBhbiBMQ1Igd3JpdGUgYXR0ZW1wdCBvY2N1cmVkIHdoaWxlIHRoZQorCQkJICogaW50ZXJydXB0IG1lYW5pbmcgYW4gTENSIHdyaXRlIGF0dGVtcHQgb2NjdXJyZWQgd2hpbGUgdGhlCiAJCQkgKiBVQVJUIHdhcyBidXN5LiBUaGUgaW50ZXJydXB0IG11c3QgYmUgY2xlYXJlZCBieSByZWFkaW5nCiAJCQkgKiB0aGUgVUFSVCBzdGF0dXMgcmVnaXN0ZXIgKFVTUikgYW5kIHRoZSBMQ1IgcmUtd3JpdHRlbi4gKi8KIAkJCXVuc2lnbmVkIGludCBzdGF0dXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvODI1MF9wY2kuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jCmluZGV4IDhiODkzMGYuLjczOGNlYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC84MjUwX3BjaS5jCkBAIC00MzMsNyArNDMzLDcgQEAKIC8qCiAgKiBTSUlHIHNlcmlhbCBjYXJkcyBoYXZlIGFuIFBDSSBpbnRlcmZhY2UgY2hpcCB3aGljaCBhbHNvIGNvbnRyb2xzCiAgKiB0aGUgVUFSVCBjbG9ja2luZyBmcmVxdWVuY3kuIEVhY2ggVUFSVCBjYW4gYmUgY2xvY2tlZCBpbmRlcGVuZGVudGx5Ci0gKiAoZXhjZXB0IGNhcmRzIGVxdWlwZWQgd2l0aCA0IFVBUlRzKSBhbmQgaW5pdGlhbCBjbG9ja2luZyBzZXR0aW5ncworICogKGV4Y2VwdCBjYXJkcyBlcXVpcHBlZCB3aXRoIDQgVUFSVHMpIGFuZCBpbml0aWFsIGNsb2NraW5nIHNldHRpbmdzCiAgKiBhcmUgc3RvcmVkIGluIHRoZSBFRVBST00gY2hpcC4gSXQgY2FuIGNhdXNlIHByb2JsZW1zIGJlY2F1c2UgdGhpcwogICogdmVyc2lvbiBvZiBzZXJpYWwgZHJpdmVyIGRvZXNuJ3Qgc3VwcG9ydCBkaWZmZXJlbnRseSBjbG9ja2VkIFVBUlQncwogICogb24gc2luZ2xlIFBDSSBjYXJkLiBUbyBwcmV2ZW50IHRoaXMsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBzZXQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9hbWJhLXBsMDExLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvYW1iYS1wbDAxMS5jCmluZGV4IDU3NzMxZTguLjZkZWVlNGUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9hbWJhLXBsMDExLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2FtYmEtcGwwMTEuYwpAQCAtNTIwLDcgKzUyMCw3IEBACiAKIAkvKgogCSAqIFdlIGRvbid0IGhhdmUgYSBUWCBidWZmZXIgcXVldWVkLCBzbyB0cnkgdG8gcXVldWUgb25lLgotCSAqIElmIHdlIHN1Y2Nlc2Z1bGx5IHF1ZXVlZCBhIGJ1ZmZlciwgbWFzayB0aGUgVFggSVJRLgorCSAqIElmIHdlIHN1Y2Nlc3NmdWxseSBxdWV1ZWQgYSBidWZmZXIsIG1hc2sgdGhlIFRYIElSUS4KIAkgKi8KIAlpZiAocGwwMTFfZG1hX3R4X3JlZmlsbCh1YXApID4gMCkgewogCQl1YXAtPmltICY9IH5VQVJUMDExX1RYSU07CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvaWNvbS5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2ljb20uYwppbmRleCA1M2E0NjgyLi44YTg2OWU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvaWNvbS5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9pY29tLmMKQEAgLTEyNDgsNyArMTI0OCw3IEBACiAJCX0KIAl9CiAKLQkvKiBFbmFibGUgVHJhbnNtaXR0ZXIgYW5kIFJlY2lldmVyICovCisJLyogRW5hYmxlIFRyYW5zbWl0dGVyIGFuZCBSZWNlaXZlciAqLwogCW9mZnNldCA9CiAJICAgICh1bnNpZ25lZCBsb25nKSAmSUNPTV9QT1JULT5zdGF0U3RnLT5yY3ZbMF0gLQogCSAgICAodW5zaWduZWQgbG9uZykgSUNPTV9QT1JULT5zdGF0U3RnOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2lteC5jCmluZGV4IGRmY2Y0YjEuLmNiMzZiMGQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pbXguYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvaW14LmMKQEAgLTc4LDcgKzc4LDcgQEAKICNkZWZpbmUgIFVSWERfRlJNRVJSICAgICAoMTw8MTIpCiAjZGVmaW5lICBVUlhEX0JSSyAgICAgICAgKDE8PDExKQogI2RlZmluZSAgVVJYRF9QUkVSUiAgICAgICgxPDwxMCkKLSNkZWZpbmUgIFVDUjFfQURFTiAgICAgICAoMTw8MTUpIC8qIEF1dG8gZGVjdGVjdCBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgIFVDUjFfQURFTiAgICAgICAoMTw8MTUpIC8qIEF1dG8gZGV0ZWN0IGludGVycnVwdCAqLwogI2RlZmluZSAgVUNSMV9BREJSICAgICAgICgxPDwxNCkgLyogQXV0byBkZXRlY3QgYmF1ZCByYXRlICovCiAjZGVmaW5lICBVQ1IxX1RSRFlFTiAgICAgKDE8PDEzKSAvKiBUcmFuc21pdHRlciByZWFkeSBpbnRlcnJ1cHQgZW5hYmxlICovCiAjZGVmaW5lICBVQ1IxX0lERU4gICAgICAgKDE8PDEyKSAvKiBJZGxlIGNvbmRpdGlvbiBpbnRlcnJ1cHQgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9pcDIyemlsb2cuYwppbmRleCBlYmZmNGExLi43YjFjZGE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvaXAyMnppbG9nLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL2lwMjJ6aWxvZy5jCkBAIC0zNzUsNyArMzc1LDcgQEAKIAkJICogYmUgbmljZSB0byB0cmFuc21pdCBjb25zb2xlIHdyaXRlcyBqdXN0IGxpa2Ugd2Ugbm9ybWFsbHkgd291bGQgZm9yCiAJCSAqIGEgVFRZIGxpbmUuIChpZS4gYnVmZmVyZWQgYW5kIFRYIGludGVycnVwdCBkcml2ZW4pLiAgVGhhdCBpcyBub3QKIAkJICogZWFzeSBiZWNhdXNlIGNvbnNvbGUgd3JpdGVzIGNhbm5vdCBzbGVlcC4gIE9uZSBzb2x1dGlvbiBtaWdodCBiZQotCQkgKiB0byBwb2xsIG9uIGVub3VnaCBwb3J0LT54bWl0IHNwYWNlIGJlY29tbWluZyBmcmVlLiAgLURhdmVNCisJCSAqIHRvIHBvbGwgb24gZW5vdWdoIHBvcnQtPnhtaXQgc3BhY2UgYmVjb21pbmcgZnJlZS4gIC1EYXZlTQogCQkgKi8KIAkJaWYgKCEoc3RhdHVzICYgVHhfQlVGX0VNUCkpCiAJCQlyZXR1cm47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbS5oIGIvZHJpdmVycy90dHkvc2VyaWFsL2pzbS9qc20uaAppbmRleCAzOGE1MDljLi5iNzA0YzhjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbS5oCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9qc20vanNtLmgKQEAgLTI3Myw3ICsyNzMsNyBAQAogCSB1OCBmY3RyOwkJLyogV1IJRkNUUiAtIEZlYXR1cmUgQ29udHJvbCBSZWcgKi8KIAkgdTggZWZyOwkJLyogV1IJRUZSIC0gRW5oYW5jZWQgRnVuY3Rpb24gUmVnICovCiAJIHU4IHRmaWZvOwkJLyogV1IJVFhDTlQvVFhUUkcgLSBUcmFuc21pdCBGSUZPIFJlZyAqLwotCSB1OCByZmlmbzsJCS8qIFdSCVJYQ05UL1JYVFJHIC0gUmVjaWV2ZSBGSUZPIFJlZyAqLworCSB1OCByZmlmbzsJCS8qIFdSCVJYQ05UL1JYVFJHIC0gUmVjZWl2ZSBGSUZPIFJlZyAqLwogCSB1OCB4b2ZmY2hhcjE7CS8qIFdSCVhPRkYgMSAtIFhPZmYgQ2hhcmFjdGVyIDEgUmVnICovCiAJIHU4IHhvZmZjaGFyMjsJLyogV1IJWE9GRiAyIC0gWE9mZiBDaGFyYWN0ZXIgMiBSZWcgKi8KIAkgdTggeG9uY2hhcjE7CS8qIFdSCVhPTiAxIC0gWG9uIENoYXJhY3RlciAxIFJlZyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL2pzbS9qc21fbmVvLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYwppbmRleCA3OTYwZDk2Li40NTM4YzNlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvanNtL2pzbV9uZW8uYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAJCS8qIENvcHkgZGF0YSBmcm9tIHVhcnQgdG8gdGhlIHF1ZXVlICovCiAJCW1lbWNweV9mcm9taW8oY2gtPmNoX3JxdWV1ZSArIGhlYWQsICZjaC0+Y2hfbmVvX3VhcnQtPnR4cnhidXJzdCwgbik7CiAJCS8qCi0JCSAqIFNpbmNlIFJYX0ZJRk9fREFUQV9FUlJPUiB3YXMgMCwgd2UgYXJlIGd1YXJlbnRlZWQKKwkJICogU2luY2UgUlhfRklGT19EQVRBX0VSUk9SIHdhcyAwLCB3ZSBhcmUgZ3VhcmFudGVlZAogCQkgKiB0aGF0IGFsbCB0aGUgZGF0YSBjdXJyZW50bHkgaW4gdGhlIEZJRk8gaXMgZnJlZSBvZgogCQkgKiBicmVha3MgYW5kIHBhcml0eS9mcmFtZS9vcnVuIGVycm9ycy4KIAkJICovCkBAIC0xMjEwLDcgKzEyMTAsNyBAQAogCQkJICogV2h5IHdvdWxkIEkgY2hlY2sgRVZFUlkgcG9zc2liaWxpdHkgb2YgdHlwZSBvZgogCQkJICogaW50ZXJydXB0LCB3aGVuIHdlIGtub3cgaXRzIFRYUkRZPz8/CiAJCQkgKiBCZWN1eiBmb3Igc29tZSByZWFzb24sIGV2ZW4gdGhvIHdlIGdvdCB0cmlnZ2VyZWQgZm9yIFRYUkRZLAotCQkJICogaXQgc2VlbXMgdG8gYmUgb2NjYXNzaW9uYWxseSB3cm9uZy4gSW5zdGVhZCBvZiBUWCwgd2hpY2gKKwkJCSAqIGl0IHNlZW1zIHRvIGJlIG9jY2FzaW9uYWxseSB3cm9uZy4gSW5zdGVhZCBvZiBUWCwgd2hpY2gKIAkJCSAqIGl0IHNob3VsZCBiZSwgSSB3YXMgZ2V0dGluZyB0aGluZ3MgbGlrZSBSWERZIHRvby4gV2VpcmQuCiAJCQkgKi8KIAkJCW5lb19wYXJzZV9pc3IoYnJkLCBwb3J0KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTA3LmggYi9kcml2ZXJzL3R0eS9zZXJpYWwvbWF4MzEwNy5oCmluZGV4IDdhYjYzMjM5Li44NDE1ZmM3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvbWF4MzEwNy5oCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tYXgzMTA3LmgKQEAgLTM2OSw3ICszNjksNyBAQAogCXN0cnVjdCBzcGlfZGV2aWNlICpzcGk7CiAKICNpZiBkZWZpbmVkKENPTkZJR19HUElPTElCKQotCS8qIEdQSU8gY2hpcCBzdHVjdHVyZSAqLworCS8qIEdQSU8gY2hpcCBzdHJ1Y3R1cmUgKi8KIAlzdHJ1Y3QgZ3Bpb19jaGlwIGNoaXA7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5jCmluZGV4IDM3ZTEzYzMuLjJmNTQ4YWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tcnN0X21heDMxMTAuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmMKQEAgLTIzLDcgKzIzLDcgQEAKICAqICAgIDEgd29yZC4gSWYgU1BJIG1hc3RlciBjb250cm9sbGVyIGRvZXNuJ3Qgc3VwcG9ydCBzY2xrIGZyZXF1ZW5jeSBjaGFuZ2UsCiAgKiAgICB0aGVuIHRoZSBjaGFyIG5lZWQgYmUgc2VudCBvdXQgb25lIGJ5IG9uZSB3aXRoIHNvbWUgZGVsYXkKICAqCi0gKiAyLiBDdXJyZW50bHkgb25seSBSWCBhdmFpbGFiZSBpbnRlcnJydXB0IGlzIHVzZWQsIG5vIG5lZWQgZm9yIHdhaXRpbmcgVFhFCisgKiAyLiBDdXJyZW50bHkgb25seSBSWCBhdmFpbGFibGUgaW50ZXJycnVwdCBpcyB1c2VkLCBubyBuZWVkIGZvciB3YWl0aW5nIFRYRQogICogICAgaW50ZXJydXB0IGZvciBhIGxvdyBzcGVlZCBVQVJUIGRldmljZQogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tcnN0X21heDMxMTAuaCBiL2RyaXZlcnMvdHR5L3NlcmlhbC9tcnN0X21heDMxMTAuaAppbmRleCBkMWVmNDNhLi5jMzdlYTQ4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvbXJzdF9tYXgzMTEwLmgKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL21yc3RfbWF4MzExMC5oCkBAIC0yMSw3ICsyMSw3IEBACiAKICNkZWZpbmUgV0NfSVJRX01BU0sJCSgweEYgPDwgOCkKICNkZWZpbmUgV0NfVFhFX0lSUV9FTkFCTEUJKDEgPDwgMTEpCS8qIFRYIGVtcHR5IGlycSAqLwotI2RlZmluZSBXQ19SWEFfSVJRX0VOQUJMRQkoMSA8PCAxMCkJLyogUlggYXZhaWxhYmUgaXJxICovCisjZGVmaW5lIFdDX1JYQV9JUlFfRU5BQkxFCSgxIDw8IDEwKQkvKiBSWCBhdmFpbGFibGUgaXJxICovCiAjZGVmaW5lIFdDX1BBUl9ISUdIX0lSUV9FTkFCTEUJKDEgPDwgOSkKICNkZWZpbmUgV0NfUkVDX0FDVF9JUlFfRU5BQkxFCSgxIDw8IDgpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tc21fc2VyaWFsX2hzLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvbXNtX3NlcmlhbF9ocy5jCmluZGV4IGI5MDZmMTEuLjYyNDcwMWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9tc21fc2VyaWFsX2hzLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL21zbV9zZXJpYWxfaHMuYwpAQCAtNDk1LDcgKzQ5NSw3IEBACiAgKgogICogSW50ZXJydXB0cyBzaG91bGQgYmUgZGlzYWJsZWQgYmVmb3JlIHdlIGFyZSBjYWxsZWQsIGFzCiAgKiB3ZSBtb2RpZnkgU2V0IEJhdWQgcmF0ZQotICogU2V0IHJlY2VpdmUgc3RhbGUgaW50ZXJydXB0IGxldmVsLCBkZXBlbmRhbnQgb24gQml0IFJhdGUKKyAqIFNldCByZWNlaXZlIHN0YWxlIGludGVycnVwdCBsZXZlbCwgZGVwZW5kZW50IG9uIEJpdCBSYXRlCiAgKiBHb2FsIGlzIHRvIGhhdmUgYXJvdW5kIDggbXMgYmVmb3JlIGluZGljYXRlIHN0YWxlLgogICogcm91bmR1cCAoKChCaXQgUmF0ZSAqIC4wMDgpIC8gMTApICsgMQogICovCkBAIC0xMzUwLDcgKzEzNTAsNyBAQAogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJnVwb3J0LT5sb2NrLCBmbGFncyk7CiAJaWYgKG1zbV91cG9ydC0+Y2xrX3N0YXRlID09IE1TTV9IU19DTEtfT0ZGKSB7Ci0JCS8qIGlnbm9yZSB0aGUgZmlyc3QgaXJxIC0gaXQgaXMgYSBwZW5kaW5nIGlycSB0aGF0IG9jY3VyZWQKKwkJLyogaWdub3JlIHRoZSBmaXJzdCBpcnEgLSBpdCBpcyBhIHBlbmRpbmcgaXJxIHRoYXQgb2NjdXJyZWQKIAkJICogYmVmb3JlIGVuYWJsZV9pcnEoKSAqLwogCQlpZiAobXNtX3Vwb3J0LT5yeF93YWtldXAuaWdub3JlKQogCQkJbXNtX3Vwb3J0LT5yeF93YWtldXAuaWdub3JlID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3NlcmlhbC9vbWFwLXNlcmlhbC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL29tYXAtc2VyaWFsLmMKaW5kZXggNzYzNTM3OS4uNDdjYWRmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL29tYXAtc2VyaWFsLmMKKysrIGIvZHJpdmVycy90dHkvc2VyaWFsL29tYXAtc2VyaWFsLmMKQEAgLTEzLDcgKzEzLDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqIE5vdGU6IFRoaXMgZHJpdmVyIGlzIG1hZGUgc2VwZXJhdGUgZnJvbSA4MjUwIGRyaXZlciBhcyB3ZSBjYW5ub3QKKyAqIE5vdGU6IFRoaXMgZHJpdmVyIGlzIG1hZGUgc2VwYXJhdGUgZnJvbSA4MjUwIGRyaXZlciBhcyB3ZSBjYW5ub3QKICAqIG92ZXIgbG9hZCA4MjUwIGRyaXZlciB3aXRoIG9tYXAgcGxhdGZvcm0gc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmb3IKICAqIGZlYXR1cmVzIGxpa2UgRE1BLCBpdCBtYWtlcyBlYXNpZXIgdG8gaW1wbGVtZW50IGZlYXR1cmVzIGxpa2UgRE1BIGFuZAogICogaGFyZHdhcmUgZmxvdyBjb250cm9sIGFuZCBzb2Z0d2FyZSBmbG93IGNvbnRyb2wgY29uZmlndXJhdGlvbiB3aXRoCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvcG1hY196aWxvZy5jIGIvZHJpdmVycy90dHkvc2VyaWFsL3BtYWNfemlsb2cuYwppbmRleCA1YjljZGU3Li5lMWM4ZDRmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvcG1hY196aWxvZy5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9wbWFjX3ppbG9nLmMKQEAgLTMzMCw3ICszMzAsNyBAQAogCQkgKiBXaGVuIHRoYXQgaGFwcGVucywgSSBkaXNhYmxlIHRoZSByZWNlaXZlIHNpZGUgb2YgdGhlIGRyaXZlci4KIAkJICogTm90ZSB0aGF0IHdoYXQgSSd2ZSBiZWVuIGV4cGVyaWVuY2luZyBpcyBhIHJlYWwgaXJxIGxvb3Agd2hlcmUKIAkJICogSSdtIGdldHRpbmcgZmxvb2RlZCByZWdhcmRsZXNzIG9mIHRoZSBhY3R1YWwgcG9ydCBzcGVlZC4KLQkJICogU29tZXRoaW5nIHN0YW5nZSBpcyBnb2luZyBvbiB3aXRoIHRoZSBIVworCQkgKiBTb21ldGhpbmcgc3RyYW5nZSBpcyBnb2luZyBvbiB3aXRoIHRoZSBIVwogCQkgKi8KIAkJaWYgKCgrK2xvb3BzKSA+IDEwMDApCiAJCQlnb3RvIGZsb29kOwpAQCAtMzk2LDcgKzM5Niw3IEBACiAJCSAqIGJlIG5pY2UgdG8gdHJhbnNtaXQgY29uc29sZSB3cml0ZXMganVzdCBsaWtlIHdlIG5vcm1hbGx5IHdvdWxkIGZvcgogCQkgKiBhIFRUWSBsaW5lLiAoaWUuIGJ1ZmZlcmVkIGFuZCBUWCBpbnRlcnJ1cHQgZHJpdmVuKS4gIFRoYXQgaXMgbm90CiAJCSAqIGVhc3kgYmVjYXVzZSBjb25zb2xlIHdyaXRlcyBjYW5ub3Qgc2xlZXAuICBPbmUgc29sdXRpb24gbWlnaHQgYmUKLQkJICogdG8gcG9sbCBvbiBlbm91Z2ggcG9ydC0+eG1pdCBzcGFjZSBiZWNvbW1pbmcgZnJlZS4gIC1EYXZlTQorCQkgKiB0byBwb2xsIG9uIGVub3VnaCBwb3J0LT54bWl0IHNwYWNlIGJlY29taW5nIGZyZWUuICAtRGF2ZU0KIAkJICovCiAJCWlmICghKHN0YXR1cyAmIFR4X0JVRl9FTVApKQogCQkJcmV0dXJuOwpAQCAtODA5LDcgKzgwOSw3IEBACiAjZW5kaWYgLyogIUNPTkZJR19QUENfUE1BQyAqLwogCiAvKgotICogRml4WmVyb0J1Zy4uLi5Xb3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIFNDQyByZWNldmluZyBjaGFubmVsLgorICogRml4WmVyb0J1Zy4uLi5Xb3JrcyBhcm91bmQgYSBidWcgaW4gdGhlIFNDQyByZWNlaXZpbmcgY2hhbm5lbC4KICAqIEluc3BpcmVkIGZyb20gRGFyd2luIGNvZGUsIDE1IFNlcHQuIDIwMDAgIC1EYW5NCiAgKgogICogVGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBwcmV2ZW50cyBhIHByb2JsZW0gdGhhdCBpcyBzZWVuIHdpdGggTydIYXJlIEFTSUNzCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS9zZXJpYWwvc2Ftc3VuZy5jIGIvZHJpdmVycy90dHkvc2VyaWFsL3NhbXN1bmcuYwppbmRleCAyMzM1ZWRhLi45ZTJmYThkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc2Ftc3VuZy5jCisrKyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zYW1zdW5nLmMKQEAgLTY0LDcgKzY0LDcgQEAKICNkZWZpbmUgdHhfZW5hYmxlZChwb3J0KSAoKHBvcnQpLT51bnVzZWRbMF0pCiAjZGVmaW5lIHJ4X2VuYWJsZWQocG9ydCkgKChwb3J0KS0+dW51c2VkWzFdKQogCi0vKiBmbGFnIHRvIGlnbm9yZSBhbGwgY2hhcmFjdGVycyBjb21taW5nIGluICovCisvKiBmbGFnIHRvIGlnbm9yZSBhbGwgY2hhcmFjdGVycyBjb21pbmcgaW4gKi8KICNkZWZpbmUgUlhTVEFUX0RVTU1ZX1JFQUQgKDB4MTAwMDAwMDApCiAKIHN0YXRpYyBpbmxpbmUgc3RydWN0IHMzYzI0eHhfdWFydF9wb3J0ICp0b19vdXJwb3J0KHN0cnVjdCB1YXJ0X3BvcnQgKnBvcnQpCkBAIC0yOTEsNyArMjkxLDcgQEAKIAkJZ290byBvdXQ7CiAJfQogCi0JLyogaWYgdGhlcmUgaXNudCBhbnl0aGluZyBtb3JlIHRvIHRyYW5zbWl0LCBvciB0aGUgdWFydCBpcyBub3cKKwkvKiBpZiB0aGVyZSBpc24ndCBhbnl0aGluZyBtb3JlIHRvIHRyYW5zbWl0LCBvciB0aGUgdWFydCBpcyBub3cKIAkgKiBzdG9wcGVkLCBkaXNhYmxlIHRoZSB1YXJ0IGFuZCBleGl0CiAJKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3NoLXNjaS5jIGIvZHJpdmVycy90dHkvc2VyaWFsL3NoLXNjaS5jCmluZGV4IGViNzk1OGMuLmE3YjA4M2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3NlcmlhbC9zaC1zY2kuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc2gtc2NpLmMKQEAgLTgxMiw3ICs4MTIsNyBAQAogfQogCiAvKgotICogSGVyZSB3ZSBkZWZpbmUgYSB0cmFuc2lzdGlvbiBub3RpZmllciBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgYWxsIG9mIG91cgorICogSGVyZSB3ZSBkZWZpbmUgYSB0cmFuc2l0aW9uIG5vdGlmaWVyIHNvIHRoYXQgd2UgY2FuIHVwZGF0ZSBhbGwgb2Ygb3VyCiAgKiBwb3J0cycgYmF1ZCByYXRlIHdoZW4gdGhlIHBlcmlwaGVyYWwgY2xvY2sgY2hhbmdlcy4KICAqLwogc3RhdGljIGludCBzY2lfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpzZWxmLApkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3NuX2NvbnNvbGUuYyBiL2RyaXZlcnMvdHR5L3NlcmlhbC9zbl9jb25zb2xlLmMKaW5kZXggY2ZmOWEzMC4uMzc3YWU3NCAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2VyaWFsL3NuX2NvbnNvbGUuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc25fY29uc29sZS5jCkBAIC0xNDYsNyArMTQ2LDcgQEAKIH07CiAKIC8qIHRoZSBjb25zb2xlIGRvZXMgb3V0cHV0IGluIHR3byBkaXN0aW5jdGx5IGRpZmZlcmVudCB3YXlzOgotICogc3luY2hyb25vdXMgKHJhdykgYW5kIGFzeW5jaHJvbm91cyAoYnVmZmVyZWQpLiAgaW5pdGFsbHksIGVhcmx5X3ByaW50aworICogc3luY2hyb25vdXMgKHJhdykgYW5kIGFzeW5jaHJvbm91cyAoYnVmZmVyZWQpLiAgaW5pdGlhbGx5LCBlYXJseV9wcmludGsKICAqIGRvZXMgc3luY2hyb25vdXMgb3V0cHV0LiAgYW55IGRhdGEgd3JpdHRlbiBnb2VzIGRpcmVjdGx5IHRvIHRoZSBTQUwKICAqIHRvIGJlIG91dHB1dCAoaW5jaWRlbnRhbGx5LCBpdCBpcyBpbnRlcm5hbGx5IGJ1ZmZlcmVkIGJ5IHRoZSBTQUwpCiAgKiBhZnRlciBpbnRlcnJ1cHRzIGFuZCB0aW1lcnMgYXJlIGluaXRpYWxpemVkIGFuZCBhdmFpbGFibGUgZm9yIHVzZSwKQEAgLTQ4MSw3ICs0ODEsNyBAQAogCXdoaWxlIChwb3J0LT5zY19vcHMtPnNhbF9pbnB1dF9wZW5kaW5nKCkpIHsKIAkJY2ggPSBwb3J0LT5zY19vcHMtPnNhbF9nZXRjKCk7CiAJCWlmIChjaCA8IDApIHsKLQkJCXByaW50ayhLRVJOX0VSUiAic25fY29uc29sZTogQW4gZXJyb3Igb2NjdXJlZCB3aGlsZSAiCisJCQlwcmludGsoS0VSTl9FUlIgInNuX2NvbnNvbGU6IEFuIGVycm9yIG9jY3VycmVkIHdoaWxlICIKIAkJCSAgICAgICAib2J0YWluaW5nIGRhdGEgZnJvbSB0aGUgY29uc29sZSAoMHglMHgpXG4iLCBjaCk7CiAJCQlicmVhazsKIAkJfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy90dHkvc2VyaWFsL3N1bnppbG9nLmMgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYwppbmRleCA5OWZmOWFiLi44ZTkxNmU3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvc3Vuemlsb2cuYwpAQCAtNDc0LDcgKzQ3NCw3IEBACiAJCSAqIGJlIG5pY2UgdG8gdHJhbnNtaXQgY29uc29sZSB3cml0ZXMganVzdCBsaWtlIHdlIG5vcm1hbGx5IHdvdWxkIGZvcgogCQkgKiBhIFRUWSBsaW5lLiAoaWUuIGJ1ZmZlcmVkIGFuZCBUWCBpbnRlcnJ1cHQgZHJpdmVuKS4gIFRoYXQgaXMgbm90CiAJCSAqIGVhc3kgYmVjYXVzZSBjb25zb2xlIHdyaXRlcyBjYW5ub3Qgc2xlZXAuICBPbmUgc29sdXRpb24gbWlnaHQgYmUKLQkJICogdG8gcG9sbCBvbiBlbm91Z2ggcG9ydC0+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+Y19jZmxhZyAmIENCQVVEOwogCiAjaWZkZWYgQk9USEVSCi0JLyogTWFnaWMgdG9rZW4gZm9yIGFyYml0YXJ5IHNwZWVkIHZpYSBjX2lzcGVlZC9jX29zcGVlZCAqLworCS8qIE1hZ2ljIHRva2VuIGZvciBhcmJpdHJhcnkgc3BlZWQgdmlhIGNfaXNwZWVkL2Nfb3NwZWVkICovCiAJaWYgKGNiYXVkID09IEJPVEhFUikKIAkJcmV0dXJuIHRlcm1pb3MtPmNfb3NwZWVkOwogI2VuZGlmCkBAIC0yODMsNyArMjgzLDcgQEAKIAlpZiAoY2JhdWQgPT0gQjApCiAJCXJldHVybiB0dHlfdGVybWlvc19iYXVkX3JhdGUodGVybWlvcyk7CiAKLQkvKiBNYWdpYyB0b2tlbiBmb3IgYXJiaXRhcnkgc3BlZWQgdmlhIGNfaXNwZWVkKi8KKwkvKiBNYWdpYyB0b2tlbiBmb3IgYXJiaXRyYXJ5IHNwZWVkIHZpYSBjX2lzcGVlZCovCiAJaWYgKGNiYXVkID09IEJPVEhFUikKIAkJcmV0dXJuIHRlcm1pb3MtPmNfaXNwZWVkOwogCkBAIC00NDksNyArNDQ5LDcgQEAKICAqCUBuZXc6IE5ldyB0ZXJtaW9zCiAgKglAb2xkOiBPbGQgdGVybWlvcwogICoKLSAqCVByb3BvZ2F0ZSB0aGUgaGFyZHdhcmUgc3BlY2lmaWMgdGVybWluYWwgc2V0dGluZyBiaXRzIGZyb20KKyAqCVByb3BhZ2F0ZSB0aGUgaGFyZHdhcmUgc3BlY2lmaWMgdGVybWluYWwgc2V0dGluZyBiaXRzIGZyb20KICAqCXRoZSBvbGQgdGVybWlvcyBzdHJ1Y3R1cmUgdG8gdGhlIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBpbiBjYXNlcwogICoJd2hlcmUgdGhlIGhhcmR3YXJlIGRvZXMgbm90IHN1cHBvcnQgcmVjb25maWd1cmF0aW9uIG9yIGFzIGEgaGVscGVyCiAgKglpbiBzb21lIGNhc2VzIHdoZXJlIG9ubHkgbWluaW1hbCByZWNvbmZpZ3VyYXRpb24gaXMgc3VwcG9ydGVkCmRpZmYgLS1naXQgYS9kcml2ZXJzL3R0eS92dC92dC5jIGIvZHJpdmVycy90dHkvdnQvdnQuYwppbmRleCBjODNjZGZiLi40YmVhMWVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS92dC92dC5jCisrKyBiL2RyaXZlcnMvdHR5L3Z0L3Z0LmMKQEAgLTM5NjMsNyArMzk2Myw3IEBACiAgKiAgb2YgMzIgcGl4ZWxzLiBVc2Vyc3BhY2UgZm9udGRhdGEgaXMgc3RvcmVkIHdpdGggMzIgYnl0ZXMgKHNob3J0cy9pbnRzLCAKICAqICBkZXBlbmRpbmcgb24gd2lkdGgpIHJlc2VydmVkIGZvciBlYWNoIGNoYXJhY3RlciB3aGljaCBpcyBraW5kYSB3YXN0eSwgYnV0IAogICogIHRoaXMgaXMgZG9uZSBpbiBvcmRlciB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggdGhlIEVHQS9WR0EgZm9udHMuIEl0IAotICogIGlzIHVwdG8gdGhlIGFjdHVhbCBsb3ctbGV2ZWwgY29uc29sZS1kcml2ZXIgY29udmVydCBkYXRhIGludG8gaXRzIGZhdm9yaXRlCisgKiAgaXMgdXAgdG8gdGhlIGFjdHVhbCBsb3ctbGV2ZWwgY29uc29sZS1kcml2ZXIgY29udmVydCBkYXRhIGludG8gaXRzIGZhdm9yaXRlCiAgKiAgZm9ybWF0IChtYXliZSB3ZSBzaG91bGQgYWRkIGEgYGZvbnRvZmZzZXQnIGZpZWxkIHRvIHRoZSBgZGlzcGxheScKICAqICBzdHJ1Y3R1cmUgc28gd2Ugd29uJ3QgaGF2ZSB0byBjb252ZXJ0IHRoZSBmb250ZGF0YSBhbGwgdGhlIHRpbWUuCiAgKiAgL0plcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91aW8vdWlvX3BydXNzLmMgYi9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYwppbmRleCBkYWY2ZTc3Li5lNjdiNTY2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYworKysgYi9kcml2ZXJzL3Vpby91aW9fcHJ1c3MuYwpAQCAtMzksNyArMzksNyBAQAogTU9EVUxFX1BBUk1fREVTQyhleHRyYW1fcG9vbF9zeiwgImV4dGVybmFsIHJhbSBwb29sIHNpemUgdG8gYWxsb2NhdGUiKTsKIAogLyoKLSAqIEhvc3QgZXZlbnQgSVJRIG51bWJlcnMgZnJvbSBQUlVTUyAtIFBSVVNTIGNhbiBnZW5lcmF0ZSB1cHRvIDggaW50ZXJydXB0CisgKiBIb3N0IGV2ZW50IElSUSBudW1iZXJzIGZyb20gUFJVU1MgLSBQUlVTUyBjYW4gZ2VuZXJhdGUgdXAgdG8gOCBpbnRlcnJ1cHQKICAqIGV2ZW50cyB0byBBSU5UQyBvZiBBUk0gaG9zdCBwcm9jZXNzb3IgLSB3aGljaCBjYW4gYmUgdXNlZCBmb3IgSVBDIGIvdyBQUlVTUwogICogZmlybXdhcmUgYW5kIHVzZXIgc3BhY2UgYXBwbGljYXRpb24sIGFzeW5jIG5vdGlmaWNhdGlvbiBmcm9tIFBSVSBmaXJtd2FyZQogICogdG8gdXNlciBzcGFjZSBhcHBsaWNhdGlvbgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYXRtL3VlYWdsZS1hdG0uYyBiL2RyaXZlcnMvdXNiL2F0bS91ZWFnbGUtYXRtLmMKaW5kZXggYjI2OGU5Zi4uZTcxNTIxYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvYXRtL3VlYWdsZS1hdG0uYworKysgYi9kcml2ZXJzL3VzYi9hdG0vdWVhZ2xlLWF0bS5jCkBAIC0xMjgzLDcgKzEyODMsNyBAQAogCiAJLyogaW4gYnVsayBtb2RlIHRoZSBtb2RlbSBoYXZlIHByb2JsZW0gd2l0aCBoaWdoIHJhdGUKIAkgKiBjaGFuZ2luZyBpbnRlcm5hbCB0aW1pbmcgY291bGQgaW1wcm92ZSB0aGluZ3MsIGJ1dCB0aGUKLQkgKiB2YWx1ZSBpcyBtaXN0ZXJpb3VzLgorCSAqIHZhbHVlIGlzIG15c3RlcmlvdXMuCiAJICogQURJOTMwIGRvbid0IHN1cHBvcnQgaXQgKC1FUElQRSBlcnJvcikuCiAJICovCiAKQEAgLTE3NDMsNyArMTc0Myw3IEBACiAJCQkJZ290byBvdXQ7CiAJCX0KIAl9IGVsc2UgewotCQkvKiBUaGlzIHJlYWx5IHNob3VsZCBub3QgaGFwcGVuICovCisJCS8qIFRoaXMgcmVhbGx5IHNob3VsZCBub3QgaGFwcGVuICovCiAJCXVlYV9lcnIoSU5TX1RPX1VTQkRFVihzYyksICJiYWQgY212cyB2ZXJzaW9uICVkXG4iLCB2ZXIpOwogCQlnb3RvIG91dDsKIAl9CkBAIC0xNzk4LDcgKzE3OTgsNyBAQAogCQkJCWdvdG8gb3V0OwogCQl9CiAJfSBlbHNlIHsKLQkJLyogVGhpcyByZWFseSBzaG91bGQgbm90IGhhcHBlbiAqLworCQkvKiBUaGlzIHJlYWxseSBzaG91bGQgbm90IGhhcHBlbiAqLwogCQl1ZWFfZXJyKElOU19UT19VU0JERVYoc2MpLCAiYmFkIGNtdnMgdmVyc2lvbiAlZFxuIiwgdmVyKTsKIAkJZ290byBvdXQ7CiAJfQpAQCAtMTgyOSw3ICsxODI5LDcgQEAKIAogCS8qIG1hc2sgaW50ZXJydXB0ICovCiAJc2MtPmJvb3RpbmcgPSAxOwotCS8qIFdlIG5lZWQgdG8gc2V0IHRoaXMgaGVyZSBiZWNhdXNlLCBhIGFjayB0aW1lb3V0IGNvdWxkIGhhdmUgb2NjdXJlZCwKKwkvKiBXZSBuZWVkIHRvIHNldCB0aGlzIGhlcmUgYmVjYXVzZSwgYSBhY2sgdGltZW91dCBjb3VsZCBoYXZlIG9jY3VycmVkLAogCSAqIGJ1dCBiZWZvcmUgd2Ugc3RhcnQgdGhlIHJlYm9vdCwgdGhlIGFjayBvY2N1cnMgYW5kIHNldCB0aGlzIHRvIDEuCiAJICogU28gd2Ugd2lsbCBmYWlsZWQgdG8gd2FpdCBSZWFkeSBDTVYuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWRydi5jIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1kcnYuYwppbmRleCBiNmQ0OTIzLi42MjA1MGY3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWRydi5jCisrKyBiL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtZHJ2LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIHRoZSBsaW5rIGJldHdlZW4gdGhlIGNvbW1vbiBoYXJkd2FyZSBwYXJ0cyBhbmQgdGhlIHN1YmRyaXZlcnMgKGUuZy4KICAqIGludGVycnVwdCBoYW5kbGluZykuCiAgKgotICogVGhlIGM2N3gwMCBoYXMgMiBTSUUncyAoc2VyaWFsIGludGVyZmFjZSBlbmdpbmUpIHdpY2ggY2FuIGJlIGNvbmZpZ3VyZWQKKyAqIFRoZSBjNjd4MDAgaGFzIDIgU0lFJ3MgKHNlcmlhbCBpbnRlcmZhY2UgZW5naW5lKSB3aGljaCBjYW4gYmUgY29uZmlndXJlZAogICogdG8gYmUgaG9zdCwgZGV2aWNlIG9yIE9URyAod2l0aCBzb21lIGxpbWl0YXRpb25zLCBFLkcuIG9ubHkgU0lFMSBjYW4gYmUgT1RHKS4KICAqCiAgKiBEZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24sIHRoZSBTSUUncyBhcmUgY3JlYXRlZCBhbmQKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtaGNkLmggYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLWhjZC5oCmluZGV4IDc0ZTQ0NjIuLmUzZDQ5M2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtaGNkLmgKKysrIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1oY2QuaApAQCAtMzQsNyArMzQsNyBAQAogLyoKICAqIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBkZXBlbmQgb24gdGhlIENQVSBzcGVlZCwgYnVzIHNwZWVkLCAuLi4KICAqIFRoZXNlIGNhbiBiZSB0dW5lZCBmb3Igc3BlY2lmaWMgdXNlIGNhc2VzLCBlLmcuIGlmIGlzb2Nocm9ub3VzIHRyYW5zZmVycwotICogYXJlIHZlcnkgaW1wb3J0YW50LCBiYW5kd2l0aCBjYW4gYmUgc2FjcmlmaWNlZCB0byBndWFyYW50ZWUgdGhhdCB0aGUKKyAqIGFyZSB2ZXJ5IGltcG9ydGFudCwgYmFuZHdpZHRoIGNhbiBiZSBzYWNyaWZpY2VkIHRvIGd1YXJhbnRlZSB0aGF0IHRoZQogICogMW1zIGRlYWRsaW5lIHdpbGwgYmUgbWV0LgogICogSWYgYnVsayB0cmFuc2ZlcnMgYXJlIGltcG9ydGFudCwgdGhlIE1BWF9GUkFNRV9CVyBjYW4gYmUgaW5jcmVhc2VkLAogICogYnV0IHNvbWUgKG9yIG1hbnkpIGlzb2Nocm9ub3VzIGRlYWRsaW5lcyBtaWdodCBub3QgYmUgbWV0LgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1zY2hlZC5jIGIvZHJpdmVycy91c2IvYzY3eDAwL2M2N3gwMC1zY2hlZC5jCmluZGV4IGY2YjNjMjUuLmEwM2ZiYzEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2M2N3gwMC9jNjd4MDAtc2NoZWQuYworKysgYi9kcml2ZXJzL3VzYi9jNjd4MDAvYzY3eDAwLXNjaGVkLmMKQEAgLTkwNyw3ICs5MDcsNyBAQAogCiAvKiBSZW1vdmUgYWxsIHRkJ3MgZnJvbSB0aGUgbGlzdCB3aGljaCBjb21lCiAgKiBhZnRlciBsYXN0X3RkIGFuZCBhcmUgbWVhbnQgZm9yIHRoZSBzYW1lIHBpcGUuCi0gKiBUaGlzIGlzIHVzZWQgd2hlbiBhIHNob3J0IHBhY2tldCBoYXMgb2NjdXJlZCAqLworICogVGhpcyBpcyB1c2VkIHdoZW4gYSBzaG9ydCBwYWNrZXQgaGFzIG9jY3VycmVkICovCiBzdGF0aWMgaW5saW5lIHZvaWQgYzY3eDAwX2NsZWFyX3BpcGUoc3RydWN0IGM2N3gwMF9oY2QgKmM2N3gwMCwKIAkJCQkgICAgIHN0cnVjdCBjNjd4MDBfdGQgKmxhc3RfdGQpCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmggYi9kcml2ZXJzL3VzYi9jbGFzcy9jZGMtYWNtLmgKaW5kZXggNWVlYjU3MC4uYjRlYTU0ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY2xhc3MvY2RjLWFjbS5oCisrKyBiL2RyaXZlcnMvdXNiL2NsYXNzL2NkYy1hY20uaApAQCAtNTIsNyArNTIsNyBAQAogICovCiAKIC8qCi0gKiBUaGUgb25seSByZWFzb24gdG8gaGF2ZSBzZXZlcmFsIGJ1ZmZlcnMgaXMgdG8gYWNjb21vZGF0ZSBhc3N1bXB0aW9ucworICogVGhlIG9ubHkgcmVhc29uIHRvIGhhdmUgc2V2ZXJhbCBidWZmZXJzIGlzIHRvIGFjY29tbW9kYXRlIGFzc3VtcHRpb25zCiAgKiBpbiBsaW5lIGRpc2NpcGxpbmVzLiBUaGV5IGFzayBmb3IgZW1wdHkgc3BhY2UgYW1vdW50LCByZWNlaXZlIG91ciBVUkIgc2l6ZSwKICAqIGFuZCBwcm9jZWVkIHRvIGlzc3VlIHNldmVyYWwgMS1jaGFyYWN0ZXIgd3JpdGVzLCBhc3N1bWluZyB0aGV5IHdpbGwgZml0LgogICogVGhlIHZlcnkgZmlyc3Qgd3JpdGUgdGFrZXMgYSBjb21wbGV0ZSBVUkIuIEZvcnR1bmF0ZWx5LCB0aGlzIG9ubHkgaGFwcGVucwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY2xhc3MvdXNidG1jLmMgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwppbmRleCA2YTU0NjM0Li4zODVhY2I4IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYworKysgYi9kcml2ZXJzL3VzYi9jbGFzcy91c2J0bWMuYwpAQCAtNDgzLDcgKzQ4Myw3IEBACiAJCX0KIAogCQlkb25lICs9IG5fY2hhcmFjdGVyczsKLQkJLyogVGVybWluYXRlIGlmIGVuZC1vZi1tZXNzYWdlIGJpdCByZWNpZXZlZCBmcm9tIGRldmljZSAqLworCQkvKiBUZXJtaW5hdGUgaWYgZW5kLW9mLW1lc3NhZ2UgYml0IHJlY2VpdmVkIGZyb20gZGV2aWNlICovCiAJCWlmICgoYnVmZmVyWzhdICYgIDB4MDEpICYmIChhY3R1YWwgPj0gbl9jaGFyYWN0ZXJzICsgMTIpKQogCQkJcmVtYWluaW5nID0gMDsKIAkJZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9oY2QuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKaW5kZXggMDJiNGRiZi4uOGVlZDA1ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2NvcmUvaGNkLmMKKysrIGIvZHJpdmVycy91c2IvY29yZS9oY2QuYwpAQCAtNzAwLDcgKzcwMCw3IEBACiAJLyogVGhlIFVTQiAyLjAgc3BlYyBzYXlzIDI1NiBtcy4gIFRoaXMgaXMgY2xvc2UgZW5vdWdoIGFuZCB3b24ndAogCSAqIGV4Y2VlZCB0aGF0IGxpbWl0IGlmIEhaIGlzIDEwMC4gVGhlIG1hdGggaXMgbW9yZSBjbHVua3kgdGhhbgogCSAqIG1heWJlIGV4cGVjdGVkLCB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aW1lcnMgZm9yIFVTQiBkZXZpY2VzCi0JICogZmlyZSBhdCB0aGUgc2FtZSB0aW1lIHRvIGdpdmUgdGhlIENQVSBhIGJyZWFrIGluYmV0d2VlbiAqLworCSAqIGZpcmUgYXQgdGhlIHNhbWUgdGltZSB0byBnaXZlIHRoZSBDUFUgYSBicmVhayBpbiBiZXR3ZWVuICovCiAJaWYgKGhjZC0+dXNlc19uZXdfcG9sbGluZyA/IEhDRF9QT0xMX1JIKGhjZCkgOgogCQkJKGxlbmd0aCA9PSAwICYmIGhjZC0+c3RhdHVzX3VyYiAhPSBOVUxMKSkKIAkJbW9kX3RpbWVyICgmaGNkLT5yaF90aW1lciwgKGppZmZpZXMvKEhaLzQpICsgMSkgKiAoSFovNCkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvY29yZS9odWIuYyBiL2RyaXZlcnMvdXNiL2NvcmUvaHViLmMKaW5kZXggNTY0ZWFhNS4uOGZiNzU0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvY29yZS9odWIuYworKysgYi9kcml2ZXJzL3VzYi9jb3JlL2h1Yi5jCkBAIC0xNjQ5LDcgKzE2NDksNyBAQAogCiAJLyogbWFyayB0aGUgZGV2aWNlIGFzIGluYWN0aXZlLCBzbyBhbnkgZnVydGhlciB1cmIgc3VibWlzc2lvbnMgZm9yCiAJICogdGhpcyBkZXZpY2UgKGFuZCBhbnkgb2YgaXRzIGNoaWxkcmVuKSB3aWxsIGZhaWwgaW1tZWRpYXRlbHkuCi0JICogdGhpcyBxdWllc2NlcyBldmVyeXRpbmcgZXhjZXB0IHBlbmRpbmcgdXJicy4KKwkgKiB0aGlzIHF1aWVzY2VzIGV2ZXJ5dGhpbmcgZXhjZXB0IHBlbmRpbmcgdXJicy4KIAkgKi8KIAl1c2Jfc2V0X2RldmljZV9zdGF0ZSh1ZGV2LCBVU0JfU1RBVEVfTk9UQVRUQUNIRUQpOwogCWRldl9pbmZvKCZ1ZGV2LT5kZXYsICJVU0IgZGlzY29ubmVjdCwgZGV2aWNlIG51bWJlciAlZFxuIiwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2Vhcmx5L2VoY2ktZGJncC5jIGIvZHJpdmVycy91c2IvZWFybHkvZWhjaS1kYmdwLmMKaW5kZXggMGJjMDZlMi4uYTZhMzUwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZWFybHkvZWhjaS1kYmdwLmMKKysrIGIvZHJpdmVycy91c2IvZWFybHkvZWhjaS1kYmdwLmMKQEAgLTY0OCw3ICs2NDgsNyBAQAogCQlpZiAoIShwb3J0c2MgJiBQT1JUX0NPTk5FQ1QpKQogCQkJcmV0dXJuIC1FTk9UQ09OTjsKIAotCQkvKiBib21iIG91dCBjb21wbGV0ZWx5IGlmIHNvbWV0aGluZyB3ZWlyZCBoYXBwZW5kICovCisJCS8qIGJvbWIgb3V0IGNvbXBsZXRlbHkgaWYgc29tZXRoaW5nIHdlaXJkIGhhcHBlbmVkICovCiAJCWlmICgocG9ydHNjICYgUE9SVF9DU0MpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5jCmluZGV4IGY4ZGQ3MjYuLjZlNDJhYWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuYwpAQCAtMjc4LDcgKzI3OCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLS8qIENhbGN1bGF0ZXMgZmlmbyBzdGFydCBvZiBlbmRwb2ludCBiYXNlZCBvbiBwcmVjZWVkaW5nIGVuZHBvaW50cyAqLworLyogQ2FsY3VsYXRlcyBmaWZvIHN0YXJ0IG9mIGVuZHBvaW50IGJhc2VkIG9uIHByZWNlZGluZyBlbmRwb2ludHMgKi8KIHN0YXRpYyBpbnQgdWRjX3NldF90eGZpZm9fYWRkcihzdHJ1Y3QgdWRjX2VwICplcCkKIHsKIAlzdHJ1Y3QgdWRjCSpkZXY7CkBAIC0yMTM3LDcgKzIxMzcsNyBAQAogCWlmICh1c2VfZG1hKSB7CiAJCS8qIEJOQSBldmVudCA/ICovCiAJCWlmICh0bXAgJiBBTURfQklUKFVEQ19FUFNUU19CTkEpKSB7Ci0JCQlEQkcoZGV2LCAiQk5BIGVwJWRvdXQgb2NjdXJlZCAtIERFU1BUUiA9ICV4IFxuIiwKKwkJCURCRyhkZXYsICJCTkEgZXAlZG91dCBvY2N1cnJlZCAtIERFU1BUUiA9ICV4IFxuIiwKIAkJCQkJZXAtPm51bSwgcmVhZGwoJmVwLT5yZWdzLT5kZXNwdHIpKTsKIAkJCS8qIGNsZWFyIEJOQSAqLwogCQkJd3JpdGVsKHRtcCB8IEFNRF9CSVQoVURDX0VQU1RTX0JOQSksICZlcC0+cmVncy0+c3RzKTsKQEAgLTIxNTEsNyArMjE1MSw3IEBACiAJfQogCS8qIEhFIGV2ZW50ID8gKi8KIAlpZiAodG1wICYgQU1EX0JJVChVRENfRVBTVFNfSEUpKSB7Ci0JCWRldl9lcnIoJmRldi0+cGRldi0+ZGV2LCAiSEUgZXAlZG91dCBvY2N1cmVkXG4iLCBlcC0+bnVtKTsKKwkJZGV2X2VycigmZGV2LT5wZGV2LT5kZXYsICJIRSBlcCVkb3V0IG9jY3VycmVkXG4iLCBlcC0+bnVtKTsKIAogCQkvKiBjbGVhciBIRSAqLwogCQl3cml0ZWwodG1wIHwgQU1EX0JJVChVRENfRVBTVFNfSEUpLCAmZXAtPnJlZ3MtPnN0cyk7CkBAIC0yMzU0LDcgKzIzNTQsNyBAQAogCQkvKiBCTkEgPyAqLwogCQlpZiAoZXBzdHMgJiBBTURfQklUKFVEQ19FUFNUU19CTkEpKSB7CiAJCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwKLQkJCQkiQk5BIGVwJWRpbiBvY2N1cmVkIC0gREVTUFRSID0gJTA4bHggXG4iLAorCQkJCSJCTkEgZXAlZGluIG9jY3VycmVkIC0gREVTUFRSID0gJTA4bHggXG4iLAogCQkJCWVwLT5udW0sCiAJCQkJKHVuc2lnbmVkIGxvbmcpIHJlYWRsKCZlcC0+cmVncy0+ZGVzcHRyKSk7CiAKQEAgLTIzNjcsNyArMjM2Nyw3IEBACiAJLyogSEUgZXZlbnQgPyAqLwogCWlmIChlcHN0cyAmIEFNRF9CSVQoVURDX0VQU1RTX0hFKSkgewogCQlkZXZfZXJyKCZkZXYtPnBkZXYtPmRldiwKLQkJCSJIRSBlcCVkbiBvY2N1cmVkIC0gREVTUFRSID0gJTA4bHggXG4iLAorCQkJIkhFIGVwJWRuIG9jY3VycmVkIC0gREVTUFRSID0gJTA4bHggXG4iLAogCQkJZXAtPm51bSwgKHVuc2lnbmVkIGxvbmcpIHJlYWRsKCZlcC0+cmVncy0+ZGVzcHRyKSk7CiAKIAkJLyogY2xlYXIgSEUgKi8KQEAgLTIzODQsNyArMjM4NCw3IEBACiAJCQlyZXEgPSBsaXN0X2VudHJ5KGVwLT5xdWV1ZS5uZXh0LAogCQkJCQlzdHJ1Y3QgdWRjX3JlcXVlc3QsIHF1ZXVlKTsKIAkJCS8qCi0JCQkgKiBsZW5ndGggYnl0ZXMgdHJhbnNmZXJlZAorCQkJICogbGVuZ3RoIGJ5dGVzIHRyYW5zZmVycmVkCiAJCQkgKiBjaGVjayBkbWEgZG9uZSBvZiBsYXN0IGRlc2MuIGluIFBQQkRVIG1vZGUKIAkJCSAqLwogCQkJaWYgKHVzZV9kbWFfcHBiX2R1KSB7CkBAIC0yNzg0LDcgKzI3ODQsNyBAQAogCQkJCQkvKiB3cml0ZSBmaWZvICovCiAJCQkJCXVkY190eGZpZm9fd3JpdGUoZXAsICZyZXEtPnJlcSk7CiAKLQkJCQkJLyogbGVuZ2ggYnl0ZXMgdHJhbnNmZXJlZCAqLworCQkJCQkvKiBsZW5naCBieXRlcyB0cmFuc2ZlcnJlZCAqLwogCQkJCQlsZW4gPSByZXEtPnJlcS5sZW5ndGggLSByZXEtPnJlcS5hY3R1YWw7CiAJCQkJCWlmIChsZW4gPiBlcC0+ZXAubWF4cGFja2V0KQogCQkJCQkJbGVuID0gZXAtPmVwLm1heHBhY2tldDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvYW1kNTUzNnVkYy5oCmluZGV4IDRiYmFiYmIuLjFkMWM3NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9hbWQ1NTM2dWRjLmgKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2FtZDU1MzZ1ZGMuaApAQCAtNTg0LDcgKzU4NCw3IEBACiAgKiBTRVQgYW5kIEdFVCBiaXRmaWVsZHMgaW4gdTMyIHZhbHVlcwogICogdmlhIGNvbnN0YW50cyBmb3IgbWFzay9vZmZzZXQ6CiAgKiA8Yml0X2ZpZWxkX3N0dWJfbmFtZT4gaXMgdGhlIHRleHQgYmV0d2VlbgotICogVURDXyBhbmQgX01BU0t8X09GUyBvZiBhcHByb3BpYXRlCisgKiBVRENfIGFuZCBfTUFTS3xfT0ZTIG9mIGFwcHJvcHJpYXRlCiAgKiBjb25zdGFudAogICoKICAqIHNldCBiaXRmaWVsZCB2YWx1ZSBpbiB1MzIgdTMyVmFsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvYXQ5MV91ZGMuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9hdDkxX3VkYy5jCmluZGV4IGJiOGRkZjAuLjliN2NkYjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9hdDkxX3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9hdDkxX3VkYy5jCkBAIC04MjYsNyArODI2LDcgQEAKIAlyZXR1cm4gc3RhdHVzOwogfQogCi0vKiByZWluaXQgPT0gcmVzdG9yZSBpbml0YWwgc29mdHdhcmUgc3RhdGUgKi8KKy8qIHJlaW5pdCA9PSByZXN0b3JlIGluaXRpYWwgc29mdHdhcmUgc3RhdGUgKi8KIHN0YXRpYyB2b2lkIHVkY19yZWluaXQoc3RydWN0IGF0OTFfdWRjICp1ZGMpCiB7CiAJdTMyIGk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvY29tcG9zaXRlLmMKaW5kZXggYzIyNTFjNC4uODIzMTRlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2NvbXBvc2l0ZS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9jb21wb3NpdGUuYwpAQCAtNDIsNyArNDIsNyBAQAogc3RhdGljIHN0cnVjdCB1c2JfY29tcG9zaXRlX2RyaXZlciAqY29tcG9zaXRlOwogc3RhdGljIGludCAoKmNvbXBvc2l0ZV9nYWRnZXRfYmluZCkoc3RydWN0IHVzYl9jb21wb3NpdGVfZGV2ICpjZGV2KTsKIAotLyogU29tZSBzeXN0ZW1zIHdpbGwgbmVlZCBydW50aW1lIG92ZXJyaWRlcyBmb3IgdGhlICBwcm9kdWN0IGlkZW50aWZlcnMKKy8qIFNvbWUgc3lzdGVtcyB3aWxsIG5lZWQgcnVudGltZSBvdmVycmlkZXMgZm9yIHRoZSAgcHJvZHVjdCBpZGVudGlmaWVycwogICogcHVibGlzaGVkIGluIHRoZSBkZXZpY2UgZGVzY3JpcHRvciwgZWl0aGVyIG51bWJlcnMgb3Igc3RyaW5ncyBvciBib3RoLgogICogU3RyaW5nIHBhcmFtZXRlcnMgYXJlIGluIFVURi04IChzdXBlcnNldCBvZiBBU0NJSSdzIDcgYml0IGNoYXJhY3RlcnMpLgogICovCkBAIC0yMDUsMTQgKzIwNSwxNCBAQAogICogdXNiX2ludGVyZmFjZV9pZCgpIGlzIGNhbGxlZCBmcm9tIHVzYl9mdW5jdGlvbi5iaW5kKCkgY2FsbGJhY2tzIHRvCiAgKiBhbGxvY2F0ZSBuZXcgaW50ZXJmYWNlIElEcy4gIFRoZSBmdW5jdGlvbiBkcml2ZXIgd2lsbCB0aGVuIHN0b3JlIHRoYXQKICAqIElEIGluIGludGVyZmFjZSwgYXNzb2NpYXRpb24sIENEQyB1bmlvbiwgYW5kIG90aGVyIGRlc2NyaXB0b3JzLiAgSXQKLSAqIHdpbGwgYWxzbyBoYW5kbGUgYW55IGNvbnRyb2wgcmVxdWVzdHMgdGFyZ2V0dGVkIGF0IHRoYXQgaW50ZXJmYWNlLAorICogd2lsbCBhbHNvIGhhbmRsZSBhbnkgY29udHJvbCByZXF1ZXN0cyB0YXJnZXRlZCBhdCB0aGF0IGludGVyZmFjZSwKICAqIHBhcnRpY3VsYXJseSBjaGFuZ2luZyBpdHMgYWx0c2V0dGluZyB2aWEgc2V0X2FsdCgpLiAgVGhlcmUgbWF5CiAgKiBhbHNvIGJlIGNsYXNzLXNwZWNpZmljIG9yIHZlbmRvci1zcGVjaWZpYyByZXF1ZXN0cyB0byBoYW5kbGUuCiAgKgogICogQWxsIGludGVyZmFjZSBpZGVudGlmaWVyIHNob3VsZCBiZSBhbGxvY2F0ZWQgdXNpbmcgdGhpcyByb3V0aW5lLCB0bwogICogZW5zdXJlIHRoYXQgZm9yIGV4YW1wbGUgZGlmZmVyZW50IGZ1bmN0aW9ucyBkb24ndCB3cm9uZ2x5IGFzc2lnbgogICogZGlmZmVyZW50IG1lYW5pbmdzIHRvIHRoZSBzYW1lIGlkZW50aWZpZXIuICBOb3RlIHRoYXQgc2luY2UgaW50ZXJmYWNlCi0gKiBpZGVudGlmZXJzIGFyZSBjb25maWd1cmF0aW9uLXNwZWNpZmljLCBmdW5jdGlvbnMgdXNlZCBpbiBtb3JlIHRoYW4KKyAqIGlkZW50aWZpZXJzIGFyZSBjb25maWd1cmF0aW9uLXNwZWNpZmljLCBmdW5jdGlvbnMgdXNlZCBpbiBtb3JlIHRoYW4KICAqIG9uZSBjb25maWd1cmF0aW9uIChvciBtb3JlIHRoYW4gb25jZSBpbiBhIGdpdmVuIGNvbmZpZ3VyYXRpb24pIG5lZWQKICAqIG11bHRpcGxlIHZlcnNpb25zIG9mIHRoZSByZWxldmFudCBkZXNjcmlwdG9ycy4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9hdWRpby5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfYXVkaW8uYwppbmRleCAwMDk3NWVkLi45YWJlY2ZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9hdWRpby5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mX2F1ZGlvLmMKQEAgLTc0Miw3ICs3NDIsNyBAQAogfQogCiAvKioKLSAqIGF1ZGlvX2JpbmRfY29uZmlnIC0gYWRkIFVTQiBhdWRpbyBmdWNudGlvbiB0byBhIGNvbmZpZ3VyYXRpb24KKyAqIGF1ZGlvX2JpbmRfY29uZmlnIC0gYWRkIFVTQiBhdWRpbyBmdW5jdGlvbiB0byBhIGNvbmZpZ3VyYXRpb24KICAqIEBjOiB0aGUgY29uZmlndXJhdGlvbiB0byBzdXBjYXJkIHRoZSBVU0IgYXVkaW8gZnVuY3Rpb24KICAqIENvbnRleHQ6IHNpbmdsZSB0aHJlYWRlZCBkdXJpbmcgZ2FkZ2V0IHNldHVwCiAgKgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZfbmNtLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9uY20uYwppbmRleCAxMzBlZWU2Li44NjkwMmE2IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZl9uY20uYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZl9uY20uYwpAQCAtMTExLDcgKzExMSw3IEBACiAjZGVmaW5lIE5UQl9PVVRfU0laRQkJMTYzODQKIAogLyoKLSAqIHNrYnMgb2Ygc2l6ZSBsZXNzIHRoYW4gdGhhdCB3aWxsIG5vdCBiZSBhbGxpZ25lZAorICogc2ticyBvZiBzaXplIGxlc3MgdGhhbiB0aGF0IHdpbGwgbm90IGJlIGFsaWduZWQKICAqIHRvIE5DTSdzIGR3TnRiSW5NYXhTaXplIHRvIHNhdmUgYnVzIGJhbmR3aWR0aAogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmggYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3FlX3VkYy5oCmluZGV4IGJlYTViODIuLmUzNWUyNGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfcWVfdWRjLmgKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF9xZV91ZGMuaApAQCAtMjA4LDE0ICsyMDgsMTQgQEAKIC8qIEZyYW1lIHN0YXR1cyBmaWVsZCAqLwogLyogUmVjZWl2ZSBzaWRlICovCiAjZGVmaW5lIEZSQU1FX09LICAgICAgICAgICAgICAgMHgwMDAwMDAwMCAvKiBGcmFtZSB0cmFubWl0dGVkIG9yIHJlY2VpdmVkIE9LICovCi0jZGVmaW5lIEZSQU1FX0VSUk9SICAgICAgICAgICAgMHg4MDAwMDAwMCAvKiBFcnJvciBvY2N1cmVkIG9uIGZyYW1lICovCisjZGVmaW5lIEZSQU1FX0VSUk9SICAgICAgICAgICAgMHg4MDAwMDAwMCAvKiBFcnJvciBvY2N1cnJlZCBvbiBmcmFtZSAqLwogI2RlZmluZSBTVEFSVF9GUkFNRV9MT1NUICAgICAgIDB4NDAwMDAwMDAgLyogU1RBUlRfRlJBTUVfTE9TVCAqLwogI2RlZmluZSBFTkRfRlJBTUVfTE9TVCAgICAgICAgIDB4MjAwMDAwMDAgLyogRU5EX0ZSQU1FX0xPU1QgKi8KICNkZWZpbmUgUlhfRVJfTk9OT0NUICAgICAgICAgICAweDEwMDAwMDAwIC8qIFJ4IE5vbiBPY3RldCBBbGlnbmVkIFBhY2tldCAqLwogI2RlZmluZSBSWF9FUl9CSVRTVFVGRiAgICAgICAgIDB4MDgwMDAwMDAgLyogRnJhbWUgQWJvcnRlZCAtLVJlY2VpdmVkIHBhY2tldAogCQkJCQkgICAgIHdpdGggYml0IHN0dWZmIGVycm9yICovCiAjZGVmaW5lIFJYX0VSX0NSQyAgICAgICAgICAgICAgMHgwNDAwMDAwMCAvKiBSZWNlaXZlZCBwYWNrZXQgd2l0aCBDUkMgZXJyb3IgKi8KLSNkZWZpbmUgUlhfRVJfT1ZFUlVOICAgICAgICAgICAweDAyMDAwMDAwIC8qIE92ZXItcnVuIG9jY3VyZWQgb24gcmVjZXB0aW9uICovCisjZGVmaW5lIFJYX0VSX09WRVJVTiAgICAgICAgICAgMHgwMjAwMDAwMCAvKiBPdmVyLXJ1biBvY2N1cnJlZCBvbiByZWNlcHRpb24gKi8KICNkZWZpbmUgUlhfRVJfUElEICAgICAgICAgICAgICAweDAxMDAwMDAwIC8qIFdyb25nIFBJRCByZWNlaXZlZCAqLwogLyogVHJhbm1pdCBzaWRlICovCiAjZGVmaW5lIFRYX0VSX05BSyAgICAgICAgICAgICAgMHgwMDgwMDAwMCAvKiBSZWNlaXZlZCBOQUsgaGFuZHNoYWtlICovCkBAIC0zNzksNyArMzc5LDcgQEAKICNkZWZpbmUgVF9MU1AgICAgICAgICAweDAxMDAwMDAwICAgICAgICAgLyogTG93LXNwZWVkIHRyYW5zYWN0aW9uICovCiAjZGVmaW5lIFRfUElEICAgICAgICAgMHgwMGMwMDAwMCAgICAgICAgIC8qIHBhY2tldCBpZCAqLwogI2RlZmluZSBUX05BSyAgICAgICAgIDB4MDAxMDAwMDAgICAgICAgICAvKiBObyBhY2suICovCi0jZGVmaW5lIFRfU1RBTCAgICAgICAgMHgwMDA4MDAwMCAgICAgICAgIC8qIFN0YWxsIHJlY2lldmVkICovCisjZGVmaW5lIFRfU1RBTCAgICAgICAgMHgwMDA4MDAwMCAgICAgICAgIC8qIFN0YWxsIHJlY2VpdmVkICovCiAjZGVmaW5lIFRfVE8gICAgICAgICAgMHgwMDA0MDAwMCAgICAgICAgIC8qIHRpbWUgb3V0ICovCiAjZGVmaW5lIFRfVU4gICAgICAgICAgMHgwMDAyMDAwMCAgICAgICAgIC8qIHVuZGVycnVuICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdWRjX2NvcmUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdWRjX2NvcmUuYwppbmRleCA5MTJjYjhlLi4wNzQ5OWMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VkY19jb3JlLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91ZGNfY29yZS5jCkBAIC00NjQsNyArNDY0LDcgQEAKIAogCW1heCA9IGxlMTZfdG9fY3B1KGRlc2MtPndNYXhQYWNrZXRTaXplKTsKIAotCS8qIERpc2FibGUgYXV0b21hdGljIHpscCBnZW5lcmF0aW9uLiAgRHJpdmVyIGlzIHJlcG9uc2libGUgdG8gaW5kaWNhdGUKKwkvKiBEaXNhYmxlIGF1dG9tYXRpYyB6bHAgZ2VuZXJhdGlvbi4gIERyaXZlciBpcyByZXNwb25zaWJsZSB0byBpbmRpY2F0ZQogCSAqIGV4cGxpY2l0bHkgdGhyb3VnaCByZXEtPnJlcS56ZXJvLiAgVGhpcyBpcyBuZWVkZWQgdG8gZW5hYmxlIG11bHRpLXRkCiAJICogcmVxdWVzdC4gKi8KIAl6bHQgPSAxOwpAQCAtNjQ4LDcgKzY0OCw3IEBACiAJCQl8IEVQX1FVRVVFX0hFQURfU1RBVFVTX0hBTFQpKTsKIAlkUUgtPnNpemVfaW9jX2ludF9zdHMgJj0gdGVtcDsKIAotCS8qIEVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIFFIIHdpbGwgb2NjdXJlIGJlZm9yZSBwcmltaW5nLiAqLworCS8qIEVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIFFIIHdpbGwgb2NjdXIgYmVmb3JlIHByaW1pbmcuICovCiAJd21iKCk7CiAKIAkvKiBQcmltZSBlbmRwb2ludCBieSB3cml0aW5nIDEgdG8gRU5EUFRQUklNRSAqLwpAQCAtMTQ1OSw3ICsxNDU5LDcgQEAKIAkJCQlzdGF0dXMgPSAtRUlMU0VROwogCQkJCWJyZWFrOwogCQkJfSBlbHNlCi0JCQkJRVJSKCJVbmtub3duIGVycm9yIGhhcyBvY2N1cmVkICgweCV4KSFcbiIsCisJCQkJRVJSKCJVbmtub3duIGVycm9yIGhhcyBvY2N1cnJlZCAoMHgleCkhXG4iLAogCQkJCQllcnJvcnMpOwogCiAJCX0gZWxzZSBpZiAobGUzMl90b19jcHUoY3Vycl90ZC0+c2l6ZV9pb2Nfc3RzKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5oIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2ZzbF91c2IyX3VkYy5oCmluZGV4IDIwYWVjZWUuLmU4OGNjZTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9mc2xfdXNiMl91ZGMuaAorKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvZnNsX3VzYjJfdWRjLmgKQEAgLTE1LDcgKzE1LDcgQEAKIAl1OCByZXMxWzI1Nl07CiAJdTE2IGNhcGxlbmd0aDsJCS8qIENhcGFiaWxpdHkgUmVnaXN0ZXIgTGVuZ3RoICovCiAJdTE2IGhjaXZlcnNpb247CQkvKiBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIFZlcnNpb24gKi8KLQl1MzIgaGNzcGFyYW1zOwkJLyogSG9zdCBDb250cm9sbGVyIFN0cnVjdHVhbCBQYXJhbWV0ZXJzICovCisJdTMyIGhjc3BhcmFtczsJCS8qIEhvc3QgQ29udHJvbGxlciBTdHJ1Y3R1cmFsIFBhcmFtZXRlcnMgKi8KIAl1MzIgaGNjcGFyYW1zOwkJLyogSG9zdCBDb250cm9sbGVyIENhcGFiaWxpdHkgUGFyYW1ldGVycyAqLwogCXU4IHJlczJbMjBdOwogCXUzMiBkY2l2ZXJzaW9uOwkJLyogRGV2aWNlIENvbnRyb2xsZXIgSW50ZXJmYWNlIFZlcnNpb24gKi8KQEAgLTUyLDcgKzUyLDcgQEAKIAl1OCByZXMxWzI1Nl07CiAJdTE2IGNhcGxlbmd0aDsJCS8qIENhcGFiaWxpdHkgUmVnaXN0ZXIgTGVuZ3RoICovCiAJdTE2IGhjaXZlcnNpb247CQkvKiBIb3N0IENvbnRyb2xsZXIgSW50ZXJmYWNlIFZlcnNpb24gKi8KLQl1MzIgaGNzcGFyYW1zOwkJLyogSG9zdCBDb250cm9sbGVyIFN0cnVjdHVhbCBQYXJhbWV0ZXJzICovCisJdTMyIGhjc3BhcmFtczsJCS8qIEhvc3QgQ29udHJvbGxlciBTdHJ1Y3R1cmFsIFBhcmFtZXRlcnMgKi8KIAl1MzIgaGNjcGFyYW1zOwkJLyogSG9zdCBDb250cm9sbGVyIENhcGFiaWxpdHkgUGFyYW1ldGVycyAqLwogCXU4IHJlczJbMjBdOwogCXUzMiBkY2l2ZXJzaW9uOwkJLyogRGV2aWNlIENvbnRyb2xsZXIgSW50ZXJmYWNlIFZlcnNpb24gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9nbWlkaS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2dtaWRpLmMKaW5kZXggMGFiN2UxNC4uNDdiODZiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L2dtaWRpLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2dtaWRpLmMKQEAgLTY3LDcgKzY3LDcgQEAKIG1vZHVsZV9wYXJhbShpZCwgY2hhcnAsIDA0NDQpOwogTU9EVUxFX1BBUk1fREVTQyhpZCwgIklEIHN0cmluZyBmb3IgdGhlIFVTQiBNSURJIEdhZGdldCBhZGFwdGVyLiIpOwogCi0vKiBTb21lIHN5c3RlbXMgd2lsbCB3YW50IGRpZmZlcmVudCBwcm9kdWN0IGlkZW50aWZlcnMgcHVibGlzaGVkIGluIHRoZQorLyogU29tZSBzeXN0ZW1zIHdpbGwgd2FudCBkaWZmZXJlbnQgcHJvZHVjdCBpZGVudGlmaWVycyBwdWJsaXNoZWQgaW4gdGhlCiAgKiBkZXZpY2UgZGVzY3JpcHRvciwgZWl0aGVyIG51bWJlcnMgb3Igc3RyaW5ncyBvciBib3RoLiAgVGhlc2Ugc3RyaW5nCiAgKiBwYXJhbWV0ZXJzIGFyZSBpbiBVVEYtOCAoc3VwZXJzZXQgb2YgQVNDSUkncyA3IGJpdCBjaGFyYWN0ZXJzKS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L2xhbmd3ZWxsX3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L2xhbmd3ZWxsX3VkYy5jCmluZGV4IDFlY2E4YjQuLjljZWU4OGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9sYW5nd2VsbF91ZGMuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbGFuZ3dlbGxfdWRjLmMKQEAgLTY0Miw3ICs2NDIsNyBAQAogCWRxaC0+ZHRkX3N0YXR1cyAmPSBkdGRfc3RhdHVzOwogCWRldl92ZGJnKCZkZXYtPnBkZXYtPmRldiwgImRxaC0+ZHRkX3N0YXR1cyA9IDB4JXhcbiIsIGRxaC0+ZHRkX3N0YXR1cyk7CiAKLQkvKiBlbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBkUUggd2lsbCBvY2N1cmUgYmVmb3JlIHByaW1pbmcgKi8KKwkvKiBlbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBkUUggd2lsbCBvY2N1ciBiZWZvcmUgcHJpbWluZyAqLwogCXdtYigpOwogCiAJLyogd3JpdGUgMSB0byBlbmRwdHByaW1lIHJlZ2lzdGVyIHRvIFBSSU1FIGVuZHBvaW50ICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvbXZfdWRjX2NvcmUuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9tdl91ZGNfY29yZS5jCmluZGV4IGQ1NDY4YTcuLmI2MmIyNjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9tdl91ZGNfY29yZS5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9tdl91ZGNfY29yZS5jCkBAIC0zMjUsNyArMzI1LDcgQEAKIAogCQkJLyoKIAkJCSAqIEVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIFFIIHdpbGwKLQkJCSAqIG9jY3VyZSBiZWZvcmUgcHJpbWluZy4KKwkJCSAqIG9jY3VyIGJlZm9yZSBwcmltaW5nLgogCQkJICovCiAJCQl3bWIoKTsKIApAQCAtMzM4LDcgKzMzOCw3IEBACiAJCQkmIEVQX1FVRVVFX0hFQURfTkVYVF9QT0lOVEVSX01BU0s7OwogCQlkcWgtPnNpemVfaW9jX2ludF9zdHMgPSAwOwogCi0JCS8qIEVuc3VyZSB0aGF0IHVwZGF0ZXMgdG8gdGhlIFFIIHdpbGwgb2NjdXJlIGJlZm9yZSBwcmltaW5nLiAqLworCQkvKiBFbnN1cmUgdGhhdCB1cGRhdGVzIHRvIHRoZSBRSCB3aWxsIG9jY3VyIGJlZm9yZSBwcmltaW5nLiAqLwogCQl3bWIoKTsKIAogCQkvKiBQcmltZSB0aGUgRW5kcG9pbnQgKi8KQEAgLTE4NDUsNyArMTg0NSw3IEBACiAJCXJldHVybiBJUlFfTk9ORTsKIAl9CiAKLQkvKiBDbGVhciBhbGwgdGhlIGludGVycnVwdHMgb2NjdXJlZCAqLworCS8qIENsZWFyIGFsbCB0aGUgaW50ZXJydXB0cyBvY2N1cnJlZCAqLwogCXdyaXRlbChzdGF0dXMsICZ1ZGMtPm9wX3JlZ3MtPnVzYnN0cyk7CiAKIAlpZiAoc3RhdHVzICYgVVNCU1RTX0VSUikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMgYi9kcml2ZXJzL3VzYi9nYWRnZXQvbmV0MjI4MC5jCmluZGV4IGQwOTE1NWIuLjI0Njk2ZjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9uZXQyMjgwLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25ldDIyODAuYwpAQCAtMTE3LDcgKzExNyw3IEBACiAKIC8qIGVuYWJsZV9zdXNwZW5kIC0tIFdoZW4gZW5hYmxlZCwgdGhlIGRyaXZlciB3aWxsIHJlc3BvbmQgdG8KICAqIFVTQiBzdXNwZW5kIHJlcXVlc3RzIGJ5IHBvd2VyaW5nIGRvd24gdGhlIE5FVDIyODAuICBPdGhlcndpc2UsCi0gKiBVU0Igc3VzcGVuZCByZXF1ZXN0cyB3aWxsIGJlIGlnbm9yZWQuICBUaGlzIGlzIGFjY2VwdGlibGUgZm9yCisgKiBVU0Igc3VzcGVuZCByZXF1ZXN0cyB3aWxsIGJlIGlnbm9yZWQuICBUaGlzIGlzIGFjY2VwdGFibGUgZm9yCiAgKiBzZWxmLXBvd2VyZWQgZGV2aWNlcwogICovCiBzdGF0aWMgaW50IGVuYWJsZV9zdXNwZW5kID0gMDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2dhZGdldC9ub2tpYS5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25va2lhLmMKaW5kZXggYjUzNjRmOWQuLjU1Y2E2M2FkMyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L25va2lhLmMKKysrIGIvZHJpdmVycy91c2IvZ2FkZ2V0L25va2lhLmMKQEAgLTIwMyw3ICsyMDMsNyBAQAogCQlnb3RvIGVycl91c2I7CiAJfQogCi0JLyogZmluYWx5IHJlZ2lzdGVyIHRoZSBjb25maWd1cmF0aW9uICovCisJLyogZmluYWxseSByZWdpc3RlciB0aGUgY29uZmlndXJhdGlvbiAqLwogCXN0YXR1cyA9IHVzYl9hZGRfY29uZmlnKGNkZXYsICZub2tpYV9jb25maWdfNTAwbWFfZHJpdmVyLAogCQkJbm9raWFfYmluZF9jb25maWcpOwogCWlmIChzdGF0dXMgPCAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3ByaW50ZXIuYyBiL2RyaXZlcnMvdXNiL2dhZGdldC9wcmludGVyLmMKaW5kZXggMTJmZjZjZi4uYzNmMmJkNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3ByaW50ZXIuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvcHJpbnRlci5jCkBAIC0xMjYsNyArMTI2LDcgQEAKICNkZWZpbmUgUFJJTlRFUl9WRU5ET1JfTlVNCTB4MDUyNQkJLyogTmV0Q2hpcCAqLwogI2RlZmluZSBQUklOVEVSX1BST0RVQ1RfTlVNCTB4YTRhOAkJLyogTGludXgtVVNCIFByaW50ZXIgR2FkZ2V0ICovCiAKLS8qIFNvbWUgc3lzdGVtcyB3aWxsIHdhbnQgZGlmZmVyZW50IHByb2R1Y3QgaWRlbnRpZmVycyBwdWJsaXNoZWQgaW4gdGhlCisvKiBTb21lIHN5c3RlbXMgd2lsbCB3YW50IGRpZmZlcmVudCBwcm9kdWN0IGlkZW50aWZpZXJzIHB1Ymxpc2hlZCBpbiB0aGUKICAqIGRldmljZSBkZXNjcmlwdG9yLCBlaXRoZXIgbnVtYmVycyBvciBzdHJpbmdzIG9yIGJvdGguICBUaGVzZSBzdHJpbmcKICAqIHBhcmFtZXRlcnMgYXJlIGluIFVURi04IChzdXBlcnNldCBvZiBBU0NJSSdzIDcgYml0IGNoYXJhY3RlcnMpLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMjd4X3VkYy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3B4YTI3eF91ZGMuYwppbmRleCAyZWZkNjczLi43OGEzOWE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9nYWRnZXQvcHhhMjd4X3VkYy5jCisrKyBiL2RyaXZlcnMvdXNiL2dhZGdldC9weGEyN3hfdWRjLmMKQEAgLTYwMiw3ICs2MDIsNyBAQAogLyoqCiAgKiBpbmNfZXBfc3RhdHNfYnl0ZXMgLSBVcGRhdGUgZXAgc3RhdHMgY291bnRzCiAgKiBAZXA6IHBoeXNpY2FsIGVuZHBvaW50Ci0gKiBAY291bnQ6IGJ5dGVzIHRyYW5zZmVyZWQgb24gZW5kcG9pbnQKKyAqIEBjb3VudDogYnl0ZXMgdHJhbnNmZXJyZWQgb24gZW5kcG9pbnQKICAqIEBpc19pbjogZXAgZGlyZWN0aW9uIChVU0JfRElSX0lOIG9yIDApCiAgKi8KIHN0YXRpYyB2b2lkIGluY19lcF9zdGF0c19ieXRlcyhzdHJ1Y3QgcHhhX2VwICplcCwgaW50IGNvdW50LCBpbnQgaXNfaW4pCkBAIC04NzcsNyArODc3LDcgQEAKICAqIElmIHRoZXJlIGlzIGxlc3Mgc3BhY2UgaW4gcmVxdWVzdCB0aGFuIGJ5dGVzIHJlY2VpdmVkIGluIE9VVCBlbmRwb2ludCwKICAqIGJ5dGVzIGFyZSBsZWZ0IGluIHRoZSBPVVQgZW5kcG9pbnQuCiAgKgotICogUmV0dXJucyBob3cgbWFueSBieXRlcyB3ZXJlIGFjdHVhbGx5IHRyYW5zZmVyZWQKKyAqIFJldHVybnMgaG93IG1hbnkgYnl0ZXMgd2VyZSBhY3R1YWxseSB0cmFuc2ZlcnJlZAogICovCiBzdGF0aWMgaW50IHJlYWRfcGFja2V0KHN0cnVjdCBweGFfZXAgKmVwLCBzdHJ1Y3QgcHhhMjd4X3JlcXVlc3QgKnJlcSkKIHsKQEAgLTkxNCw3ICs5MTQsNyBAQAogICogZW5kcG9pbnQuIElmIHRoZXJlIGFyZSBubyBieXRlcyB0byB0cmFuc2ZlciwgZG9lc24ndCB3cml0ZSBhbnl0aGluZwogICogdG8gcGh5c2ljYWwgZW5kcG9pbnQuCiAgKgotICogUmV0dXJucyBob3cgbWFueSBieXRlcyB3ZXJlIGFjdHVhbGx5IHRyYW5zZmVyZWQuCisgKiBSZXR1cm5zIGhvdyBtYW55IGJ5dGVzIHdlcmUgYWN0dWFsbHkgdHJhbnNmZXJyZWQuCiAgKi8KIHN0YXRpYyBpbnQgd3JpdGVfcGFja2V0KHN0cnVjdCBweGFfZXAgKmVwLCBzdHJ1Y3QgcHhhMjd4X3JlcXVlc3QgKnJlcSwKIAkJCXVuc2lnbmVkIGludCBtYXgpCkBAIC05OTEsNyArOTkxLDcgQEAKICAqIGNhbGxlciBndWFyYW50ZWVzIGF0IGxlYXN0IG9uZSBwYWNrZXQgYnVmZmVyIGlzIHJlYWR5IChvciBhIHpscCkuCiAgKiBEb2Vzbid0IGNvbXBsZXRlIHRoZSByZXF1ZXN0LCB0aGF0J3MgdGhlIGNhbGxlcidzIGpvYgogICoKLSAqIFJldHVybnMgMSBpZiByZXF1ZXN0IGZ1bGx5IHRyYW5zZmVyZWQsIDAgaWYgcGFydGlhbCB0cmFuc2ZlcgorICogUmV0dXJucyAxIGlmIHJlcXVlc3QgZnVsbHkgdHJhbnNmZXJyZWQsIDAgaWYgcGFydGlhbCB0cmFuc2ZlcgogICovCiBzdGF0aWMgaW50IHdyaXRlX2ZpZm8oc3RydWN0IHB4YV9lcCAqZXAsIHN0cnVjdCBweGEyN3hfcmVxdWVzdCAqcmVxKQogewpAQCAtMTA5NCw3ICsxMDk0LDcgQEAKICAqIFNlbmRzIGEgcmVxdWVzdCAob3IgYSBwYXJ0IG9mIHRoZSByZXF1ZXN0KSB0byB0aGUgY29udHJvbCBlbmRwb2ludCAoZXAwIGluKS4KICAqIElmIHRoZSByZXF1ZXN0IGRvZXNuJ3QgZml0LCB0aGUgcmVtYWluaW5nIHBhcnQgd2lsbCBiZSBzZW50IGZyb20gaXJxLgogICogVGhlIHJlcXVlc3QgaXMgY29uc2lkZXJlZCBmdWxseSB3cml0dGVuIG9ubHkgaWYgZWl0aGVyIDoKLSAqICAgLSBsYXN0IHdyaXRlIHRyYW5zZmVyZWQgYWxsIHJlbWFpbmluZyBieXRlcywgYnV0IGZpZm8gd2FzIG5vdCBmdWxseSBmaWxsZWQKKyAqICAgLSBsYXN0IHdyaXRlIHRyYW5zZmVycmVkIGFsbCByZW1haW5pbmcgYnl0ZXMsIGJ1dCBmaWZvIHdhcyBub3QgZnVsbHkgZmlsbGVkCiAgKiAgIC0gbGFzdCB3cml0ZSB3YXMgYSAwIGxlbmd0aCB3cml0ZQogICoKICAqIFJldHVybnMgMSBpZiByZXF1ZXN0IGZ1bGx5IHdyaXR0ZW4sIDAgaWYgcmVxdWVzdCBvbmx5IHBhcnRpYWxseSBzZW50CkBAIC0xNTQ4LDcgKzE1NDgsNyBAQAogICogcHhhX3VkY193YWtldXAgLSBGb3JjZSB1ZGMgZGV2aWNlIG91dCBvZiBzdXNwZW5kCiAgKiBAX2dhZGdldDogdXNiIGdhZGdldAogICoKLSAqIFJldHVybnMgMCBpZiBzdWNjZXNzZnVsbCwgZXJyb3IgY29kZSBvdGhlcndpc2UKKyAqIFJldHVybnMgMCBpZiBzdWNjZXNzZnVsLCBlcnJvciBjb2RlIG90aGVyd2lzZQogICovCiBzdGF0aWMgaW50IHB4YV91ZGNfd2FrZXVwKHN0cnVjdCB1c2JfZ2FkZ2V0ICpfZ2FkZ2V0KQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3MzYy1oc290Zy5jIGIvZHJpdmVycy91c2IvZ2FkZ2V0L3MzYy1oc290Zy5jCmluZGV4IGVmODI1YzMuLjA5MTI2NzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2dhZGdldC9zM2MtaHNvdGcuYworKysgYi9kcml2ZXJzL3VzYi9nYWRnZXQvczNjLWhzb3RnLmMKQEAgLTQxLDggKzQxLDggQEAKIC8qIEVQMF9NUFNfTElNSVQKICAqCiAgKiBVbmZvcnR1bmF0ZWx5IHRoZXJlIHNlZW1zIHRvIGJlIGEgbGltaXQgb2YgdGhlIGFtb3VudCBvZiBkYXRhIHRoYXQgY2FuCi0gKiBiZSB0cmFuc2ZlcmVkIGJ5IElOIHRyYW5zYWN0aW9ucyBvbiBFUDAuIFRoaXMgaXMgZWl0aGVyIDEyNyBieXRlcyBvciAzCi0gKiBwYWNrZXRzICh3aGljaCBwcmFjdGlhbGx5IG1lYW5zIDEgcGFja2V0IGFuZCA2MyBieXRlcyBvZiBkYXRhKSB3aGVuIHRoZQorICogYmUgdHJhbnNmZXJyZWQgYnkgSU4gdHJhbnNhY3Rpb25zIG9uIEVQMC4gVGhpcyBpcyBlaXRoZXIgMTI3IGJ5dGVzIG9yIDMKKyAqIHBhY2tldHMgKHdoaWNoIHByYWN0aWNhbGx5IG1lYW5zIDEgcGFja2V0IGFuZCA2MyBieXRlcyBvZiBkYXRhKSB3aGVuIHRoZQogICogTVBTIGlzIHNldCB0byA2NC4KICAqCiAgKiBUaGlzIG1lYW5zIGlmIHdlIGFyZSB3YW50aW5nIHRvIG1vdmUgPjEyNyBieXRlcyBvZiBkYXRhLCB3ZSBuZWVkIHRvCkBAIC03ODMsNyArNzgzLDcgQEAKIAkJICAgICAgIGhzb3RnLT5yZWdzICsgUzNDX0RJRVBJTlQoaW5kZXgpKTsKIAogCS8qIE5vdGUsIHRyeWluZyB0byBjbGVhciB0aGUgTkFLIGhlcmUgY2F1c2VzIHByb2JsZW1zIHdpdGggdHJhbnNtaXQKLQkgKiBvbiB0aGUgUzNDNjQwMCBlbmRpbmcgdXAgd2l0aCB0aGUgVFhGSUZPIGJlY29tbWluZyBmdWxsLiAqLworCSAqIG9uIHRoZSBTM0M2NDAwIGVuZGluZyB1cCB3aXRoIHRoZSBUWEZJRk8gYmVjb21pbmcgZnVsbC4gKi8KIAogCS8qIGNoZWNrIGVwIGlzIGVuYWJsZWQgKi8KIAlpZiAoIShyZWFkbChoc290Zy0+cmVncyArIGVwY3RybF9yZWcpICYgUzNDX0R4RVBDVExfRVBFbmEpKQpAQCAtMTE3NiwxMCArMTE3NiwxMCBAQAogCQl3cml0ZWwoY3RybCwgaHNvdGctPnJlZ3MgKyByZWcpOwogCiAJCWRldl9kYmcoaHNvdGctPmRldiwKLQkJCSJ3cml0ZW4gRHhFUENUTD0weCUwOHggdG8gJTA4eCAoRHhFUENUTD0weCUwOHgpXG4iLAorCQkJIndyaXR0ZW4gRHhFUENUTD0weCUwOHggdG8gJTA4eCAoRHhFUENUTD0weCUwOHgpXG4iLAogCQkJY3RybCwgcmVnLCByZWFkbChoc290Zy0+cmVncyArIHJlZykpOwogCi0JCS8qIGRvbid0IGJlbGl2ZSB3ZSBuZWVkIHRvIGFueXRoaW5nIG1vcmUgdG8gZ2V0IHRoZSBFUAorCQkvKiBkb24ndCBiZWxpZXZlIHdlIG5lZWQgdG8gYW55dGhpbmcgbW9yZSB0byBnZXQgdGhlIEVQCiAJCSAqIHRvIHJlcGx5IHdpdGggYSBTVEFMTCBwYWNrZXQgKi8KIAl9CiB9CkBAIC0xNDE2LDcgKzE0MTYsNyBAQAogICogdHJhbnNhY3Rpb24uCiAgKgogICogTm90ZSwgc2luY2Ugd2UgZG9uJ3Qgd3JpdGUgYW55IGRhdGEgdG8gdGhlIFR4RklGTywgdGhlbiBpdCBpcwotICogY3VycmVudGx5IGJlbGl2ZWQgdGhhdCB3ZSBkbyBub3QgbmVlZCB0byB3YWl0IGZvciBhbnkgc3BhY2UgaW4KKyAqIGN1cnJlbnRseSBiZWxpZXZlZCB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIHdhaXQgZm9yIGFueSBzcGFjZSBpbgogICogdGhlIFR4RklGTy4KICAqLwogc3RhdGljIHZvaWQgczNjX2hzb3RnX3NlbmRfemxwKHN0cnVjdCBzM2NfaHNvdGcgKmhzb3RnLApAQCAtMTU0MCw3ICsxNTQwLDcgQEAKICAqIHRoYXQgcmVxdWlyZXMgcHJvY2Vzc2luZywgc28gZmluZCBvdXQgd2hhdCBpcyBpbiB0aGVyZSBhbmQgZG8gdGhlCiAgKiBhcHByb3ByaWF0ZSByZWFkLgogICoKLSAqIFRoZSBSWEZJRk8gaXMgYSB0cnVlIEZJRk8sIHRoZSBwYWNrZXRzIGNvbW1pbmcgb3V0IGFyZSBzdGlsbCBpbiBwYWNrZXQKKyAqIFRoZSBSWEZJRk8gaXMgYSB0cnVlIEZJRk8sIHRoZSBwYWNrZXRzIGNvbWluZyBvdXQgYXJlIHN0aWxsIGluIHBhY2tldAogICogY2h1bmtzLCBzbyBpZiB5b3UgaGF2ZSB4IHBhY2tldHMgcmVjZWl2ZWQgb24gYW4gZW5kcG9pbnQgeW91J2xsIGdldCB4CiAgKiBGSUZPIGV2ZW50cyBkZWxpdmVyZWQsIGVhY2ggd2l0aCBhIHBhY2tldCdzIHdvcnRoIG9mIGRhdGEgaW4gaXQuCiAgKgpAQCAtMjE4OCw3ICsyMTg4LDcgQEAKIAogCS8qIHRoZXNlIG5leHQgdHdvIHNlZW0gdG8gY3JvcC11cCBvY2Nhc2lvbmFsbHkgY2F1c2luZyB0aGUgY29yZQogCSAqIHRvIHNodXRkb3duIHRoZSBVU0IgdHJhbnNmZXIsIHNvIHRyeSBjbGVhcmluZyB0aGVtIGFuZCBsb2dnaW5nCi0JICogdGhlIG9jY3VyZW5jZS4gKi8KKwkgKiB0aGUgb2NjdXJyZW5jZS4gKi8KIAogCWlmIChnaW50c3RzICYgUzNDX0dJTlRTVFNfR09VVE5ha0VmZikgewogCQlkZXZfaW5mbyhoc290Zy0+ZGV2LCAiR09VVE5ha0VmZiB0cmlnZ2VyZWRcbiIpOwpAQCAtMjQ2OSw3ICsyNDY5LDcgQEAKIAkucXVldWUJCT0gczNjX2hzb3RnX2VwX3F1ZXVlLAogCS5kZXF1ZXVlCT0gczNjX2hzb3RnX2VwX2RlcXVldWUsCiAJLnNldF9oYWx0CT0gczNjX2hzb3RnX2VwX3NldGhhbHQsCi0JLyogbm90ZSwgZG9uJ3QgYmVsaXZlIHdlIGhhdmUgYW55IGNhbGwgZm9yIHRoZSBmaWZvIHJvdXRpbmVzICovCisJLyogbm90ZSwgZG9uJ3QgYmVsaWV2ZSB3ZSBoYXZlIGFueSBjYWxsIGZvciB0aGUgZmlmbyByb3V0aW5lcyAqLwogfTsKIAogLyoqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcgYi9kcml2ZXJzL3VzYi9ob3N0L0tjb25maWcKaW5kZXggOTQ4M2FjZC4uZTBlMDc4NyAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9LY29uZmlnCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QvS2NvbmZpZwpAQCAtNDAyLDcgKzQwMiw3IEBACiAJZGVwZW5kcyBvbiBVU0JfRkhDSV9IQ0QgJiYgREVCVUdfRlMKIAloZWxwCiAJICBTYXkgInkiIHRvIHNlZSBzb21lIEZIQ0kgZGVidWcgaW5mb3JtYXRpb24gYW5kIHN0YXRpc3RpY3MKLQkgIHRocm91Z2h0IGRlYnVnZnMuCisJICB0aHJvdWdoIGRlYnVnZnMuCiAKIGNvbmZpZyBVU0JfVTEzMl9IQ0QKIAl0cmlzdGF0ZSAiRWxhbiBVMTMyIEFkYXB0ZXIgSG9zdCBDb250cm9sbGVyIgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9laGNpLmggYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaAppbmRleCBmODZkM2ZhLi4zMzNkZGMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L2VoY2kuaApAQCAtNjQ0LDcgKzY0NCw3IEBACiAvKgogICogT24gY2VydGFpbiBwcGMtNDR4IFNvQyB0aGVyZSBpcyBhIEhXIGlzc3VlLCB0aGF0IGNvdWxkIG9ubHkgd29ya2VkIGFyb3VuZCB3aXRoCiAgKiBleHBsaWNpdCBzdXNwZW5kL29wZXJhdGUgb2YgT0hDSS4gVGhpcyBmdW5jdGlvbiBoZXJlYnkgbWFrZXMgc2Vuc2Ugb25seSBvbiB0aGF0IGFyY2guCi0gKiBPdGhlciBjb21tb24gYml0cyBhcmUgZGVwZW5kYW50IG9uIGhhc19hbWNjX3VzYjIzIHF1aXJrIGZsYWcuCisgKiBPdGhlciBjb21tb24gYml0cyBhcmUgZGVwZW5kZW50IG9uIGhhc19hbWNjX3VzYjIzIHF1aXJrIGZsYWcuCiAgKi8KICNpZmRlZiBDT05GSUdfNDR4CiBzdGF0aWMgaW5saW5lIHZvaWQgc2V0X29oY2lfaGNmcyhzdHJ1Y3QgZWhjaV9oY2QgKmVoY2ksIGludCBvcGVyYXRpb25hbCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS1oY2QuYwppbmRleCBiODRmZjdlLi4xOTIyM2M3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9maGNpLWhjZC5jCkBAIC00MDEsNyArNDAxLDcgQEAKIAkJLyogMSB0ZCBmcm8gc2V0dXAsMSBmb3IgYWNrICovCiAJCXNpemUgPSAyOwogCWNhc2UgUElQRV9CVUxLOgotCQkvKiBvbmUgdGQgZm9yIGV2ZXJ5IDQwOTYgYnl0ZXMoY2FuIGJlIHVwdG8gOGspICovCisJCS8qIG9uZSB0ZCBmb3IgZXZlcnkgNDA5NiBieXRlcyhjYW4gYmUgdXAgdG8gOGspICovCiAJCXNpemUgKz0gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoIC8gNDA5NjsKIAkJLyogLi4uYWRkIGZvciBhbnkgcmVtYWluaW5nIGJ5dGVzLi4uICovCiAJCWlmICgodXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoICUgNDA5NikgIT0gMCkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS10ZHMuYyBiL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS10ZHMuYwppbmRleCAzOGZlMDU4Li4wZWE1NzdiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2ZoY2ktdGRzLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9maGNpLXRkcy5jCkBAIC00MCw3ICs0MCw3IEBACiAjZGVmaW5lIFREX1JYRVIJCTB4MDAyMCAvKiBSeCBlcnJvciBvciBub3QgKi8KIAogI2RlZmluZSBURF9OQUsJCTB4MDAxMCAvKiBObyBhY2suICovCi0jZGVmaW5lIFREX1NUQUwJCTB4MDAwOCAvKiBTdGFsbCByZWNpZXZlZCAqLworI2RlZmluZSBURF9TVEFMCQkweDAwMDggLyogU3RhbGwgcmVjZWl2ZWQgKi8KICNkZWZpbmUgVERfVE8JCTB4MDAwNCAvKiB0aW1lIG91dCAqLwogI2RlZmluZSBURF9VTgkJMHgwMDAyIC8qIHVuZGVycnVuICovCiAjZGVmaW5lIFREX05PCQkweDAwMTAgLyogUnggTm9uIE9jdGV0IEFsaWduZWQgUGFja2V0ICovCkBAIC0yNzQsNyArMjc0LDcgQEAKICAqIEl0IGlzIGFsc28gcHJlcGFyaW5nIHRoZSBURHMgZm9yIG5ldyBmcmFtZXMuIElmIHRoZSBUeCBpbnRlcnJ1cHRzCiAgKiBhcmUgZGlzYWJsZWQsIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgY2FsbCB0aGF0IHJvdXRpbmUgdG8gZ2V0CiAgKiBjb25maXJtYXRpb24gYWJvdXQgdGhlIHN1Ym1pdHRlZCBmcmFtZXMuIE90aGVyd2lzZSwgdGhlIHJvdXRpbmUgaXMKLSAqIGNhbGxlZCBmcm9tZSB0aGUgaW50ZXJydXB0IHNlcnZpY2Ugcm91dGluZSBkdXJpbmcgdGhlIFR4IGludGVycnVwdC4KKyAqIGNhbGxlZCBmcm9tIHRoZSBpbnRlcnJ1cHQgc2VydmljZSByb3V0aW5lIGR1cmluZyB0aGUgVHggaW50ZXJydXB0LgogICogSW4gdGhhdCBjYXNlIHRoZSBhcHBsaWNhdGlvbiBpcyBpbmZvcm1lZCBieSBjYWxsaW5nIHRoZSBhcHBsaWNhdGlvbgogICogc3BlY2lmaWMgJ2ZoY2lfdHJhbnNhY3Rpb25fY29uZmlybScgcm91dGluZQogICovCkBAIC0zMzcsNyArMzM3LDcgQEAKIAkJCQkJcGt0LT5zdGF0dXMgPSBVU0JfVERfUlhfRVJfTk9OT0NUOwogCQkJCWVsc2UKIAkJCQkJZmhjaV9lcnIodXNiLT5maGNpLCAiaWxsZWdhbCBlcnJvciAiCi0JCQkJCQkgIm9jY3VyZWRcbiIpOworCQkJCQkJICJvY2N1cnJlZFxuIik7CiAJCQl9IGVsc2UgaWYgKHRkX3N0YXR1cyAmIFREX05BSykKIAkJCQlwa3QtPnN0YXR1cyA9IFVTQl9URF9UWF9FUl9OQUs7CiAJCQllbHNlIGlmICh0ZF9zdGF0dXMgJiBURF9UTykKQEAgLTM0Nyw3ICszNDcsNyBAQAogCQkJZWxzZSBpZiAodGRfc3RhdHVzICYgVERfU1RBTCkKIAkJCQlwa3QtPnN0YXR1cyA9IFVTQl9URF9UWF9FUl9TVEFMTDsKIAkJCWVsc2UKLQkJCQlmaGNpX2Vycih1c2ItPmZoY2ksICJpbGxlZ2FsIGVycm9yIG9jY3VyZWRcbiIpOworCQkJCWZoY2lfZXJyKHVzYi0+ZmhjaSwgImlsbGVnYWwgZXJyb3Igb2NjdXJyZWRcbiIpOwogCQl9IGVsc2UgaWYgKChleHRyYV9kYXRhICYgVERfVE9LX0lOKSAmJgogCQkJCXBrdC0+bGVuID4gdGRfbGVuZ3RoIC0gQ1JDX1NJWkUpIHsKIAkJCXBrdC0+c3RhdHVzID0gVVNCX1REX1JYX0RBVEFfVU5ERVJVTjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvZmhjaS5oIGIvZHJpdmVycy91c2IvaG9zdC9maGNpLmgKaW5kZXggNzFjM2NhYS4uZGM2OTM5YSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9maGNpLmgKKysrIGIvZHJpdmVycy91c2IvaG9zdC9maGNpLmgKQEAgLTgyLDcgKzgyLDcgQEAKICNkZWZpbmUgVVNCX1REX1JYX0VSX05PTk9DVAkweDQwMDAwMDAwIC8qIFR4IE5vbiBPY3RldCBBbGlnbmVkIFBhY2tldCAqLwogI2RlZmluZSBVU0JfVERfUlhfRVJfQklUU1RVRkYJMHgyMDAwMDAwMCAvKiBGcmFtZSBBYm9ydGVkLVJlY2VpdmVkIHBrdCAqLwogI2RlZmluZSBVU0JfVERfUlhfRVJfQ1JDCTB4MTAwMDAwMDAgLyogQ1JDIGVycm9yICovCi0jZGVmaW5lIFVTQl9URF9SWF9FUl9PVkVSVU4JMHgwODAwMDAwMCAvKiBPdmVyIC0gcnVuIG9jY3VyZWQgKi8KKyNkZWZpbmUgVVNCX1REX1JYX0VSX09WRVJVTgkweDA4MDAwMDAwIC8qIE92ZXIgLSBydW4gb2NjdXJyZWQgKi8KICNkZWZpbmUgVVNCX1REX1JYX0VSX1BJRAkweDA0MDAwMDAwIC8qIHdyb25nIFBJRCByZWNlaXZlZCAqLwogI2RlZmluZSBVU0JfVERfUlhfREFUQV9VTkRFUlVOCTB4MDIwMDAwMDAgLyogc2hvcnRlciB0aGFuIGV4cGVjdGVkICovCiAjZGVmaW5lIFVTQl9URF9SWF9EQVRBX09WRVJVTgkweDAxMDAwMDAwIC8qIGxvbmdlciB0aGFuIGV4cGVjdGVkICovCkBAIC0zNjMsNyArMzYzLDcgQEAKIHN0cnVjdCB0ZCB7CiAJdm9pZCAqZGF0YTsJCSAvKiBhIHBvaW50ZXIgdG8gdGhlIGRhdGEgYnVmZmVyICovCiAJdW5zaWduZWQgaW50IGxlbjsJIC8qIGxlbmd0aCBvZiB0aGUgZGF0YSB0byBiZSBzdWJtaXR0ZWQgKi8KLQl1bnNpZ25lZCBpbnQgYWN0dWFsX2xlbjsgLyogYWN0dWFsIGJ5dGVzIHRyYW5zZmVyZWQgb24gdGhpcyB0ZCAqLworCXVuc2lnbmVkIGludCBhY3R1YWxfbGVuOyAvKiBhY3R1YWwgYnl0ZXMgdHJhbnNmZXJyZWQgb24gdGhpcyB0ZCAqLwogCWVudW0gZmhjaV90YV90eXBlIHR5cGU7CSAvKiB0cmFuc2FjdGlvbiB0eXBlICovCiAJdTggdG9nZ2xlOwkJIC8qIHRvZ2dsZSBmb3IgbmV4dCB0cmFucy4gd2l0aGluIHRoaXMgVEQgKi8KIAl1MTYgaXNvX2luZGV4OwkJIC8qIElTTyB0cmFuc2FjdGlvbiBpbmRleCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9pbXgyMS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvaW14MjEtaGNkLmMKaW5kZXggMjU2MmU5Mi4uYWYwNTcxOCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9pbXgyMS1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L2lteDIxLWhjZC5jCkBAIC0xMzIzLDcgKzEzMjMsNyBAQAogICogKGFuZCBoZW5jZSBubyBpbnRlcnJ1cHQgb2NjdXJzKS4KICAqIFRoaXMgY2F1c2VzIHRoZSB0cmFuc2ZlciBpbiBxdWVzdGlvbiB0byBoYW5nLgogICogVGhlIGtsdWRnZSBiZWxvdyBjaGVja3MgZm9yIHRoaXMgY29uZGl0aW9uIGF0IGVhY2ggU09GIGFuZCBwcm9jZXNzZXMgYW55Ci0gKiBibG9ja2VkIEVURHMgKGFmdGVyIGFuIGFyYml0YXJ5IDEwIGZyYW1lIHdhaXQpCisgKiBibG9ja2VkIEVURHMgKGFmdGVyIGFuIGFyYml0cmFyeSAxMCBmcmFtZSB3YWl0KQogICoKICAqIFdpdGggYSBzaW5nbGUgYWN0aXZlIHRyYW5zZmVyIHRoZSB1c2J0ZXN0IHRlc3Qgc3VpdGUgd2lsbCBydW4gZm9yIGRheXMKICAqIHdpdGhvdXQgdGhlIGtsdWRnZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTE2eC5oIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LmgKaW5kZXggMTJkYjk2MS4uOWEyYzQwMCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LmgKKysrIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMTZ4LmgKQEAgLTEzLDcgKzEzLDcgQEAKIAogLyogRnVsbCBzcGVlZDogbWF4ICMgb2YgYnl0ZXMgdG8gdHJhbnNmZXIgZm9yIGEgc2luZ2xlIHVyYgogICAgYXQgYSB0aW1lIG11c3QgYmUgPCAxMDI0ICYmIG11c3QgYmUgbXVsdGlwbGUgb2YgNjQuCi0gICA4MzIgYWxsb3dzIHRyYW5zZmVyaW5nIDRraUIgd2l0aGluIDUgZnJhbWVzLiAqLworICAgODMyIGFsbG93cyB0cmFuc2ZlcnJpbmcgNGtpQiB3aXRoaW4gNSBmcmFtZXMuICovCiAjZGVmaW5lIE1BWF9UUkFOU0ZFUl9TSVpFX0ZVTExTUEVFRAk4MzIKIAogLyogTG93IHNwZWVkOiB0aGVyZSBpcyBubyByZWFzb24gdG8gc2NoZWR1bGUgaW4gdmVyeSBiaWcKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTM2Mi1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3QvaXNwMTM2Mi1oY2QuYwppbmRleCA2NjJjZDAwLi5mOTc1NzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L2lzcDEzNjItaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9pc3AxMzYyLWhjZC5jCkBAIC01NDYsNyArNTQ2LDcgQEAKIAkJCWlmICh1c2JfcGlwZWNvbnRyb2wodXJiLT5waXBlKSkgewogCQkJCWVwLT5uZXh0cGlkID0gVVNCX1BJRF9BQ0s7CiAJCQkJLyogc2F2ZSB0aGUgZGF0YSB1bmRlcnJ1biBlcnJvciBjb2RlIGZvciBsYXRlciBhbmQKLQkJCQkgKiBwcm9jZWRlIHdpdGggdGhlIHN0YXR1cyBzdGFnZQorCQkJCSAqIHByb2NlZWQgd2l0aCB0aGUgc3RhdHVzIHN0YWdlCiAJCQkJICovCiAJCQkJdXJiLT5hY3R1YWxfbGVuZ3RoICs9IFBURF9HRVRfQ09VTlQocHRkKTsKIAkJCQlCVUdfT04odXJiLT5hY3R1YWxfbGVuZ3RoID4gdXJiLT50cmFuc2Zlcl9idWZmZXJfbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb2hjaS1oY2QuYwppbmRleCBlNzI4ODYzLi5kNTU3MjM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L29oY2ktaGNkLmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC9vaGNpLWhjZC5jCkBAIC0xNjIsNyArMTYyLDcgQEAKIAkJLy8gY2FzZSBQSVBFX0lOVEVSUlVQVDoKIAkJLy8gY2FzZSBQSVBFX0JVTEs6CiAJCWRlZmF1bHQ6Ci0JCQkvKiBvbmUgVEQgZm9yIGV2ZXJ5IDQwOTYgQnl0ZXMgKGNhbiBiZSB1cHRvIDhLKSAqLworCQkJLyogb25lIFREIGZvciBldmVyeSA0MDk2IEJ5dGVzIChjYW4gYmUgdXAgdG8gOEspICovCiAJCQlzaXplICs9IHVyYi0+dHJhbnNmZXJfYnVmZmVyX2xlbmd0aCAvIDQwOTY7CiAJCQkvKiAuLi4gYW5kIGZvciBhbnkgcmVtYWluaW5nIGJ5dGVzIC4uLiAqLwogCQkJaWYgKCh1cmItPnRyYW5zZmVyX2J1ZmZlcl9sZW5ndGggJSA0MDk2KSAhPSAwKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC9veHUyMTBocC1oY2QuYyBiL2RyaXZlcnMvdXNiL2hvc3Qvb3h1MjEwaHAtaGNkLmMKaW5kZXggNDRlNGRlYi4uNGE3NzFmNiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaG9zdC9veHUyMTBocC1oY2QuYworKysgYi9kcml2ZXJzL3VzYi9ob3N0L294dTIxMGhwLWhjZC5jCkBAIC0yODc5LDcgKzI4NzksNyBAQAogCS8qIE9rLCB3ZSBoYXZlIG1vcmUgam9iIHRvIGRvISA6KSAqLwogCiAJZm9yIChpID0gMDsgaSA8IG51bSAtIDE7IGkrKykgewotCQkvKiBHZXQgZnJlZSBtaWNybyBVUkIgcG9sbCB0aWxsIGEgZnJlZSB1cmIgaXMgcmVjaWV2ZWQgKi8KKwkJLyogR2V0IGZyZWUgbWljcm8gVVJCIHBvbGwgdGlsbCBhIGZyZWUgdXJiIGlzIHJlY2VpdmVkICovCiAKIAkJZG8gewogCQkJbXVyYiA9IChzdHJ1Y3QgdXJiICopIG94dV9tdXJiX2FsbG9jKG94dSk7CkBAIC0yOTExLDcgKzI5MTEsNyBAQAogCiAJLyogTGFzdCB1cmIgcmVxdWlyZXMgc3BlY2lhbCBoYW5kbGluZyAgKi8KIAotCS8qIEdldCBmcmVlIG1pY3JvIFVSQiBwb2xsIHRpbGwgYSBmcmVlIHVyYiBpcyByZWNpZXZlZCAqLworCS8qIEdldCBmcmVlIG1pY3JvIFVSQiBwb2xsIHRpbGwgYSBmcmVlIHVyYiBpcyByZWNlaXZlZCAqLwogCWRvIHsKIAkJbXVyYiA9IChzdHJ1Y3QgdXJiICopIG94dV9tdXJiX2FsbG9jKG94dSk7CiAJCWlmICghbXVyYikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL2hvc3Qvd2hjaS9xc2V0LmMgYi9kcml2ZXJzL3VzYi9ob3N0L3doY2kvcXNldC5jCmluZGV4IGRjMGFiODMuLmQ2ZTE3NTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3Qvd2hjaS9xc2V0LmMKKysrIGIvZHJpdmVycy91c2IvaG9zdC93aGNpL3FzZXQuYwpAQCAtNzM5LDcgKzczOSw3IEBACiAgKiBwcm9jZXNzX2luYWN0aXZlX3F0ZCAtIHByb2Nlc3MgYW4gaW5hY3RpdmUgKGJ1dCBub3QgaGFsdGVkKSBxVEQuCiAgKgogICogVXBkYXRlIHRoZSB1cmIgd2l0aCB0aGUgdHJhbnNmZXIgYnl0ZXMgZnJvbSB0aGUgcVRELCBpZiB0aGUgdXJiIGlzCi0gKiBjb21wbGV0ZWx5IHRyYW5zZmVyZWQgb3IgKGluIHRoZSBjYXNlIG9mIGFuIElOIG9ubHkpIHRoZSBMUEYgaXMKKyAqIGNvbXBsZXRlbHkgdHJhbnNmZXJyZWQgb3IgKGluIHRoZSBjYXNlIG9mIGFuIElOIG9ubHkpIHRoZSBMUEYgaXMKICAqIHNldCwgdGhlbiB0aGUgdHJhbnNmZXIgaXMgY29tcGxldGUgYW5kIHRoZSB1cmIgc2hvdWxkIGJlIHJldHVybmVkCiAgKiB0byB0aGUgc3lzdGVtLgogICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuYyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCmluZGV4IDlhMzY0NWYuLjE5NmUwMTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCisrKyBiL2RyaXZlcnMvdXNiL2hvc3QveGhjaS5jCkBAIC03NDEsNyArNzQxLDcgQEAKIAlpbnQJCQlyZXR2YWw7CiAKIAkvKiBXYWl0IGEgYml0IGlmIGVpdGhlciBvZiB0aGUgcm9vdGh1YnMgbmVlZCB0byBzZXR0bGUgZnJvbSB0aGUKLQkgKiB0cmFuc2lzdGlvbiBpbnRvIGJ1cyBzdXNwZW5kLgorCSAqIHRyYW5zaXRpb24gaW50byBidXMgc3VzcGVuZC4KIAkgKi8KIAlpZiAodGltZV9iZWZvcmUoamlmZmllcywgeGhjaS0+YnVzX3N0YXRlWzBdLm5leHRfc3RhdGVjaGFuZ2UpIHx8CiAJCQl0aW1lX2JlZm9yZShqaWZmaWVzLApAQCAtMjA3Miw3ICsyMDcyLDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCXZkZXYgPSB4aGNpLT5kZXZzW3VkZXYtPnNsb3RfaWRdOwotCS8qIE1hcmsgZWFjaCBlbmRwb2ludCBhcyBiZWluZyBpbiB0cmFuc2lzdGlvbiwgc28KKwkvKiBNYXJrIGVhY2ggZW5kcG9pbnQgYXMgYmVpbmcgaW4gdHJhbnNpdGlvbiwgc28KIAkgKiB4aGNpX3VyYl9lbnF1ZXVlKCkgd2lsbCByZWplY3QgYWxsIFVSQnMuCiAJICovCiAJZm9yIChpID0gMDsgaSA8IG51bV9lcHM7IGkrKykgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaG9zdC94aGNpLmggYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaAppbmRleCA3MTFkZTI1Li4wN2UyNjMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaAorKysgYi9kcml2ZXJzL3VzYi9ob3N0L3hoY2kuaApAQCAtODczLDcgKzg3Myw3IEBACiAjZGVmaW5lIENPTVBfQ01EX0FCT1JUCTI1CiAvKiBTdG9wcGVkIC0gdHJhbnNmZXIgd2FzIHRlcm1pbmF0ZWQgYnkgYSBzdG9wIGVuZHBvaW50IGNvbW1hbmQgKi8KICNkZWZpbmUgQ09NUF9TVE9QCTI2Ci0vKiBTYW1lIGFzIENPTVBfRVBfU1RPUFBFRCwgYnV0IHRoZSB0cmFuc2ZlcmVkIGxlbmd0aCBpbiB0aGUgZXZlbnQgaXMgaW52YWxpZCAqLworLyogU2FtZSBhcyBDT01QX0VQX1NUT1BQRUQsIGJ1dCB0aGUgdHJhbnNmZXJyZWQgbGVuZ3RoIGluIHRoZSBldmVudCBpcyBpbnZhbGlkICovCiAjZGVmaW5lIENPTVBfU1RPUF9JTlZBTAkyNwogLyogQ29udHJvbCBBYm9ydCBFcnJvciAtIERlYnVnIENhcGFiaWxpdHkgLSBjb250cm9sIHBpcGUgYWJvcnRlZCAqLwogI2RlZmluZSBDT01QX0RCR19BQk9SVAkyOApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvaW1hZ2UvbWljcm90ZWsuYyBiL2RyaXZlcnMvdXNiL2ltYWdlL21pY3JvdGVrLmMKaW5kZXggYzkwYzg5ZC4uYTAwMzc5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvaW1hZ2UvbWljcm90ZWsuYworKysgYi9kcml2ZXJzL3VzYi9pbWFnZS9taWNyb3Rlay5jCkBAIC02OSw3ICs2OSw3IEBACiAgKgkyMDAwMDUxMyBhZGRlZCBJRHMgZm9yIGFsbCBwcm9kdWN0cyBzdXBwb3J0ZWQgYnkgV2luZG93cyBkcml2ZXIgKGpvaG4pCiAgKgkyMDAwMDUxNCBSZXdyb3RlIG10c19zY3NpX3F1ZXVlY29tbWFuZCB0byB1c2UgVVJCcyAoam9obikKICAqCTIwMDAwNTE0IFZlcnNpb24gMC4wLjhqCi0gKiAgICAgIDIwMDAwNTE0IEZpeCByZXBvcnRpbmcgb2Ygbm9uLWV4aXN0YW50IGRldmljZXMgdG8gU0NTSSBsYXllciAoam9obikKKyAqICAgICAgMjAwMDA1MTQgRml4IHJlcG9ydGluZyBvZiBub24tZXhpc3RlbnQgZGV2aWNlcyB0byBTQ1NJIGxheWVyIChqb2huKQogICoJMjAwMDA1MTQgQWRkZWQgTVRTX0RFQlVHX0lOVCAoam9obikKICAqCTIwMDAwNTE0IENoYW5nZWQgInVzYi1taWNyb3RlayIgdG8gIm1pY3JvdGVrIiBmb3IgY29uc2lzdGVuY3kgKGpvaG4pCiAgKgkyMDAwMDUxNCBTdHVwaWQgYnVnIGZpeGVzIChqb2huKQpAQCAtNTU3LDE0ICs1NTcsMTQgQEAKIAogCWlmICggIW1lbWNtcCggc3JiLT5jbW5kLCBtdHNfcmVhZF9pbWFnZV9zaWcsIG10c19yZWFkX2ltYWdlX3NpZ19sZW4gKQogKSB7IAkJcGlwZSA9IHVzYl9yY3ZidWxrcGlwZShkZXNjLT51c2JfZGV2LGRlc2MtPmVwX2ltYWdlKTsKLQkJTVRTX0RFQlVHKCAidHJhbnNmZXJpbmcgZnJvbSBkZXNjLT5lcF9pbWFnZSA9PSAlZFxuIiwKKwkJTVRTX0RFQlVHKCAidHJhbnNmZXJyaW5nIGZyb20gZGVzYy0+ZXBfaW1hZ2UgPT0gJWRcbiIsCiAJCQkgICAoaW50KWRlc2MtPmVwX2ltYWdlICk7CiAJfSBlbHNlIGlmICggTVRTX0RJUkVDVElPTl9JU19JTihzcmItPmNtbmRbMF0pICkgewogCQkJcGlwZSA9IHVzYl9yY3ZidWxrcGlwZShkZXNjLT51c2JfZGV2LGRlc2MtPmVwX3Jlc3BvbnNlKTsKLQkJCU1UU19ERUJVRyggInRyYW5zZmVyaW5nIGZyb20gZGVzYy0+ZXBfcmVzcG9uc2UgPT0gJWRcbiIsCisJCQlNVFNfREVCVUcoICJ0cmFuc2ZlcnJpbmcgZnJvbSBkZXNjLT5lcF9yZXNwb25zZSA9PSAlZFxuIiwKIAkJCQkgICAoaW50KWRlc2MtPmVwX3Jlc3BvbnNlKTsKIAl9IGVsc2UgewotCQlNVFNfREVCVUcoInRyYW5zZmVyaW5nIHRvIGRlc2MtPmVwX291dCA9PSAlZFxuIiwKKwkJTVRTX0RFQlVHKCJ0cmFuc2ZlcnJpbmcgdG8gZGVzYy0+ZXBfb3V0ID09ICVkXG4iLAogCQkJICAoaW50KWRlc2MtPmVwX291dCk7CiAJCXBpcGUgPSB1c2Jfc25kYnVsa3BpcGUoZGVzYy0+dXNiX2RldixkZXNjLT5lcF9vdXQpOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL21pc2MvaW93YXJyaW9yLmMgYi9kcml2ZXJzL3VzYi9taXNjL2lvd2Fycmlvci5jCmluZGV4IGU1NzNlNDcwNC4uYTIxOTBiOSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbWlzYy9pb3dhcnJpb3IuYworKysgYi9kcml2ZXJzL3VzYi9taXNjL2lvd2Fycmlvci5jCkBAIC00MCw3ICs0MCw3IEBACiAjaWZkZWYgQ09ORklHX1VTQl9EWU5BTUlDX01JTk9SUwogI2RlZmluZSBJT1dBUlJJT1JfTUlOT1JfQkFTRQkwCiAjZWxzZQotI2RlZmluZSBJT1dBUlJJT1JfTUlOT1JfQkFTRQkyMDgJLy8gU0tFTEVUT05fTUlOT1JfQkFTRSAxOTIgKyAxNiwgbm90IG9mZmljYWwgeWV0CisjZGVmaW5lIElPV0FSUklPUl9NSU5PUl9CQVNFCTIwOAkvLyBTS0VMRVRPTl9NSU5PUl9CQVNFIDE5MiArIDE2LCBub3Qgb2ZmaWNpYWwgeWV0CiAjZW5kaWYKIAogLyogaW50ZXJydXB0IGlucHV0IHF1ZXVlIHNpemUgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL290Zy9pc3AxMzAxX29tYXAuYyBiL2RyaXZlcnMvdXNiL290Zy9pc3AxMzAxX29tYXAuYwppbmRleCA4YzZmZGVmLi5lMjU3MDBmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9vdGcvaXNwMTMwMV9vbWFwLmMKKysrIGIvZHJpdmVycy91c2Ivb3RnL2lzcDEzMDFfb21hcC5jCkBAIC0xNTMxLDcgKzE1MzEsNyBAQAogCWkyY19zZXRfY2xpZW50ZGF0YShpMmMsIGlzcCk7CiAJaXNwLT5jbGllbnQgPSBpMmM7CiAKLQkvKiB2ZXJpZnkgdGhlIGNoaXAgKHNob3VsZG4ndCBiZSBuZWNlc2FyeSkgKi8KKwkvKiB2ZXJpZnkgdGhlIGNoaXAgKHNob3VsZG4ndCBiZSBuZWNlc3NhcnkpICovCiAJc3RhdHVzID0gaXNwMTMwMV9nZXRfdTE2KGlzcCwgSVNQMTMwMV9WRU5ET1JfSUQpOwogCWlmIChzdGF0dXMgIT0gSTJDX1ZFTkRPUl9JRF9QSElMSVBTKSB7CiAJCWRldl9kYmcoJmkyYy0+ZGV2LCAibm90IHBoaWxpcHMgaWQ6ICVkXG4iLCBzdGF0dXMpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivb3RnL2xhbmd3ZWxsX290Zy5jIGIvZHJpdmVycy91c2Ivb3RnL2xhbmd3ZWxsX290Zy5jCmluZGV4IDdmOWI4Y2QuLmU5NzNmZjEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL290Zy9sYW5nd2VsbF9vdGcuYworKysgYi9kcml2ZXJzL3VzYi9vdGcvbGFuZ3dlbGxfb3RnLmMKQEAgLTU4MCw3ICs1ODAsNyBAQAogCQl0aW1lID0gVEJfQlVTX1NVU1BFTkQ7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCWRldl9kYmcobG53LT5kZXYsICJ1bmtvd24gdGltZXIsIGNhbm5vdCBlbmFibGUgaXRcbiIpOworCQlkZXZfZGJnKGxudy0+ZGV2LCAidW5rbm93biB0aW1lciwgY2Fubm90IGVuYWJsZSBpdFxuIik7CiAJCXJldHVybjsKIAl9CiAKQEAgLTEzODEsNyArMTM4MSw3IEBACiAJCQl9IGVsc2UgaWYgKCFpb3RnLT5oc20uYV9idXNfcmVxICYmIGlvdGctPm90Zy5ob3N0ICYmCiAJCQkJCWlvdGctPm90Zy5ob3N0LT5iX2hucF9lbmFibGUpIHsKIAkJCQkvKiBJdCBpcyBub3Qgc2FmZSBlbm91Z2ggdG8gZG8gYSBmYXN0Ci0JCQkJICogdHJhbnNpc3Rpb24gZnJvbSBBX1dBSVRfQkNPTiB0bworCQkJCSAqIHRyYW5zaXRpb24gZnJvbSBBX1dBSVRfQkNPTiB0bwogCQkJCSAqIEFfU1VTUEVORCAqLwogCQkJCW1zbGVlcCgxMDAwMCk7CiAJCQkJaWYgKGlvdGctPmhzbS5hX2J1c19yZXEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvYWlyY2FibGUuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jCmluZGV4IDBkYjZhY2UuLmFiYTIwMWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9haXJjYWJsZS5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKiBXaGVuIHJlYWRpbmcgdGhlIHByb2Nlc3MgaXMgYWxtb3N0IGVxdWFsIGV4Y2VwdCB0aGF0IHRoZSBoZWFkZXIgc3RhcnRzIHdpdGgKICAqIDB4MDAgMHgyMC4KICAqCi0gKiBUaGUgZGV2aWNlIHNpbXBseSBuZWVkIHNvbWUgc3R1ZmYgdG8gdW5kZXJzdGFuZCBkYXRhIGNvbW1pbmcgZnJvbSB0aGUgdXNiCisgKiBUaGUgZGV2aWNlIHNpbXBseSBuZWVkIHNvbWUgc3R1ZmYgdG8gdW5kZXJzdGFuZCBkYXRhIGNvbWluZyBmcm9tIHRoZSB1c2IKICAqIGJ1ZmZlcjogVGhlIEZpcnN0IGFuZCBTZWNvbmQgYnl0ZSBpcyB1c2VkIGZvciBhIEhlYWRlciwgdGhlIFRoaXJkIGFuZCBGb3VydGgKICAqIHRlbGxzIHRoZSAgZGV2aWNlIHRoZSBhbW91bnQgb2YgaW5mb3JtYXRpb24gdGhlIHBhY2thZ2UgaG9sZHMuCiAgKiBQYWNrYWdlcyBhcmUgNjAgYnl0ZXMgbG9uZyBIZWFkZXIgU3R1ZmYuCkBAIC0zMCw3ICszMCw3IEBACiAgKiBvbmUuCiAgKgogICogVGhlIGRyaXZlciByZWdpc3RlcnMgaGltc2VsZiB3aXRoIHRoZSBVU0Itc2VyaWFsIGNvcmUgYW5kIHRoZSBVU0IgQ29yZS4gSSBoYWQKLSAqIHRvIGltcGxlbWVudCBhIHByb2JlIGZ1bmN0aW9uIGFnYWlucyBVU0Itc2VyaWFsLCBiZWNhdXNlIG90aGVyIHdheSwgdGhlCisgKiB0byBpbXBsZW1lbnQgYSBwcm9iZSBmdW5jdGlvbiBhZ2FpbnN0IFVTQi1zZXJpYWwsIGJlY2F1c2Ugb3RoZXIgd2F5LCB0aGUKICAqIGRyaXZlciB3YXMgYXR0YWNoaW5nIGhpbXNlbGYgdG8gYm90aCBpbnRlcmZhY2VzLiBJIGhhdmUgdHJ5ZWQgd2l0aCBkaWZmZXJlbnQKICAqIGNvbmZpZ3VyYXRpb25zIG9mIHVzYl9zZXJpYWxfZHJpdmVyIHdpdGggb3V0IGV4aXQsIG9ubHkgdGhlIHByb2JlIGZ1bmN0aW9uCiAgKiBjb3VsZCBoYW5kbGUgdGhpcyBjb3JyZWN0bHkuCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTB4LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvY3AyMTB4LmMKaW5kZXggNGRmM2UwYy4uMGYxMWFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc2VyaWFsL2NwMjEweC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jcDIxMHguYwpAQCAtMTAxLDcgKzEwMSw3IEBACiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MUYyKSB9LCAvKiBDMTAwNyBIRiBiYW5kIFJGSUQgY29udHJvbGxlciAqLwogCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODIxOCkgfSwgLyogTGlwb3dza3kgSW5kdXN0cmllIEVsZWt0cm9uaWsgR21iSCwgSEFSUC0xICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjJCKSB9LCAvKiBNb2RlbSBFREdFKEdTTSkgQ29tYW5kZXIgMiAqLwotCXsgVVNCX0RFVklDRSgweDEwQzQsIDB4ODI2QikgfSwgLyogQ3lnbmFsIEludGVncmF0ZWQgUHJvZHVjdHMsIEluYy4sIEZhc3R0cmF4IEdQUyBkZW1vc3RyYXRpb24gbW9kdWxlICovCisJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjZCKSB9LCAvKiBDeWduYWwgSW50ZWdyYXRlZCBQcm9kdWN0cywgSW5jLiwgRmFzdHRyYXggR1BTIGRlbW9uc3RyYXRpb24gbW9kdWxlICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MjkzKSB9LCAvKiBUZWxlZ2VzeXMgRVRSWDJVU0IgKi8KIAl7IFVTQl9ERVZJQ0UoMHgxMEM0LCAweDgyRjkpIH0sIC8qIFByb2N5b24gQVZTICovCiAJeyBVU0JfREVWSUNFKDB4MTBDNCwgMHg4MzQxKSB9LCAvKiBTaWVtZW5zIE1DMzVQVSBHUFJTIE1vZGVtICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jIGIvZHJpdmVycy91c2Ivc2VyaWFsL2N5cHJlc3NfbTguYwppbmRleCA5ODdlOWJmLi5kOTkwNmViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvY3lwcmVzc19tOC5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9jeXByZXNzX204LmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqCiAgKiAgTG9ubmllIE1lbmRleiA8ZGlnbm9tZUBnbWFpbC5jb20+CiAgKiAgMDQtMTAtMjAwNAotICoJRHJpdmVyIG1vZGlmaWVkIHRvIHN1cHBvcnQgZHluYW1pYyBsaW5lIHNldHRpbmdzLiAgVmFyaW91cyBpbXByb3ZtZW50cworICoJRHJpdmVyIG1vZGlmaWVkIHRvIHN1cHBvcnQgZHluYW1pYyBsaW5lIHNldHRpbmdzLiAgVmFyaW91cyBpbXByb3ZlbWVudHMKICAqICAgICAgYW5kIGZlYXR1cmVzLgogICoKICAqICBOZWlsIFdoZWxjaGVsCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvZnRkaV9zaW8uYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCmluZGV4IDY1OTY3YjMuLmE5NzNjN2EgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9mdGRpX3Npby5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBTZWUgRG9jdW1lbnRhdGlvbi91c2IvdXNiLXNlcmlhbC50eHQgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhpcwogICogZHJpdmVyCiAgKgotICogU2VlIGh0dHA6Ly9mdGRpLXVzYi1zaW8uc291cmNlZm9yZ2UubmV0IGZvciB1cHRvIGRhdGUgdGVzdGluZyBpbmZvCisgKiBTZWUgaHR0cDovL2Z0ZGktdXNiLXNpby5zb3VyY2Vmb3JnZS5uZXQgZm9yIHVwIHRvIGRhdGUgdGVzdGluZyBpbmZvCiAgKglhbmQgZXh0cmEgZG9jdW1lbnRhdGlvbgogICoKICAqIENoYW5nZSBlbnRyaWVzIGZyb20gMjAwNCBhbmQgZWFybGllciBjYW4gYmUgZm91bmQgaW4gdmVyc2lvbnMgb2YgdGhpcwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwppbmRleCBmMWFlZGZhLi5hYmYwOTViIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYworKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuYwpAQCAtMTk4MSw3ICsxOTgxLDcgQEAKIAlpZiAoY29kZSA9PSBJT1NQX1NUQVRVU19PUEVOX1JTUCkgewogCQllZGdlX3BvcnQtPnR4Q3JlZGl0cyA9IEdFVF9UWF9CVUZGRVJfU0laRShieXRlMyk7CiAJCWVkZ2VfcG9ydC0+bWF4VHhDcmVkaXRzID0gZWRnZV9wb3J0LT50eENyZWRpdHM7Ci0JCWRiZygiJXMgLSBQb3J0ICV1IE9wZW4gUmVzcG9uc2UgSW5pdGFsIE1TUiA9ICUwMnggVHhCdWZmZXJTaXplID0gJWQiLCBfX2Z1bmNfXywgZWRnZV9zZXJpYWwtPnJ4UG9ydCwgYnl0ZTIsIGVkZ2VfcG9ydC0+dHhDcmVkaXRzKTsKKwkJZGJnKCIlcyAtIFBvcnQgJXUgT3BlbiBSZXNwb25zZSBJbml0aWFsIE1TUiA9ICUwMnggVHhCdWZmZXJTaXplID0gJWQiLCBfX2Z1bmNfXywgZWRnZV9zZXJpYWwtPnJ4UG9ydCwgYnl0ZTIsIGVkZ2VfcG9ydC0+dHhDcmVkaXRzKTsKIAkJaGFuZGxlX25ld19tc3IoZWRnZV9wb3J0LCBieXRlMik7CiAKIAkJLyogc2VuZCB0aGUgY3VycmVudCBsaW5lIHNldHRpbmdzIHRvIHRoZSBwb3J0IHNvIHdlIGFyZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc2VyaWFsL2lvX2VkZ2Vwb3J0LmggYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuaAppbmRleCBkY2VkN2VjLi5hZDljMWQ0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuaAorKysgYi9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fZWRnZXBvcnQuaApAQCAtNjgsNyArNjgsNyBAQAogI2RlZmluZSBQUk9DX1NFVF9DT01fRU5UUlkJCTIKIAogCi0vKiBUaGUgZm9sbG93aW5nIHN0dXJjdHVyZSBpcyBwYXNzZWQgdG8gdGhlIHdyaXRlICovCisvKiBUaGUgZm9sbG93aW5nIHN0cnVjdHVyZSBpcyBwYXNzZWQgdG8gdGhlIHdyaXRlICovCiBzdHJ1Y3QgcHJvY1dyaXRlIHsKIAlpbnQJQ29tbWFuZDsKIAl1bmlvbiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9zZXJpYWwvaW9fdGkuYyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb190aS5jCmluZGV4IGQ4NDM0OTEuLjBhYWMwMGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9pb190aS5jCisrKyBiL2RyaXZlcnMvdXNiL3NlcmlhbC9pb190aS5jCkBAIC00MzMsNyArNDMzLDcgQEAKIAogCS8qIFdlIGNhbiBvbmx5IHNlbmQgYSBtYXhpbXVtIG9mIDEgYWxpZ25lZCBieXRlIHBhZ2UgYXQgYSB0aW1lICovCiAKLQkvKiBjYWx1bGF0ZSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGxlZnQgaW4gdGhlIGZpcnN0IHBhZ2UgKi8KKwkvKiBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBieXRlcyBsZWZ0IGluIHRoZSBmaXJzdCBwYWdlICovCiAJd3JpdGVfbGVuZ3RoID0gRVBST01fUEFHRV9TSVpFIC0KIAkJCQkoc3RhcnRfYWRkcmVzcyAmIChFUFJPTV9QQUdFX1NJWkUgLSAxKSk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpY29uLmMgYi9kcml2ZXJzL3VzYi9zZXJpYWwvb3B0aWNvbi5jCmluZGV4IGExZGQ0ZDQuLjFiNTYzM2YgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXNiL3NlcmlhbC9vcHRpY29uLmMKKysrIGIvZHJpdmVycy91c2Ivc2VyaWFsL29wdGljb24uYwpAQCAtMTE2LDcgKzExNiw3IEBACiAJCX0gZWxzZSB7CiAJCQlpZiAoKGRhdGFbMF0gPT0gMHgwMCkgJiYgKGRhdGFbMV0gPT0gMHgwMSkpIHsKIAkJCQlzcGluX2xvY2tfaXJxc2F2ZSgmcHJpdi0+bG9jaywgZmxhZ3MpOwotCQkJCS8qIENUUyBzdGF0dXMgaW5mb21hdGlvbiBwYWNrYWdlICovCisJCQkJLyogQ1RTIHN0YXR1cyBpbmZvcm1hdGlvbiBwYWNrYWdlICovCiAJCQkJaWYgKGRhdGFbMl0gPT0gMHgwMCkKIAkJCQkJcHJpdi0+Y3RzID0gZmFsc2U7CiAJCQkJZWxzZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS9lbmVfdWI2MjUwLmMgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL2VuZV91YjYyNTAuYwppbmRleCAwOGUwMzc0Li4wZTVhYWZkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL2VuZV91YjYyNTAuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL2VuZV91YjYyNTAuYwpAQCAtNTYyLDcgKzU2Miw3IEBACiAKIAlyZXN1bHQgPSBlbmVfc2VuZF9zY3NpX2NtZCh1cywgRkRJUl9SRUFELCBOVUxMLCAwKTsKIAlpZiAocmVzdWx0ICE9IFVTQl9TVE9SX1hGRVJfR09PRCkgewotCQlVU19ERUJVR1AoIkV4ZWN0aW9uIFNEIEluaXQgQ29kZSBGYWlsICEhXG4iKTsKKwkJVVNfREVCVUdQKCJFeGVjdXRpb24gU0QgSW5pdCBDb2RlIEZhaWwgISFcbiIpOwogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCX0KIApAQCAtNTgxLDcgKzU4MSw3IEBACiAKIAlyZXN1bHQgPSBlbmVfc2VuZF9zY3NpX2NtZCh1cywgRkRJUl9SRUFELCAmYnVmLCAwKTsKIAlpZiAocmVzdWx0ICE9IFVTQl9TVE9SX1hGRVJfR09PRCkgewotCQlVU19ERUJVR1AoIkV4ZWN0aW9uIFNEIEluaXQgQ29kZSBGYWlsICEhXG4iKTsKKwkJVVNfREVCVUdQKCJFeGVjdXRpb24gU0QgSW5pdCBDb2RlIEZhaWwgISFcbiIpOwogCQlyZXR1cm4gVVNCX1NUT1JfVFJBTlNQT1JUX0VSUk9SOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2UvaXNkMjAwLmMKaW5kZXggNmI5OTgyYy4uMDllNTJiYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9pc2QyMDAuYworKysgYi9kcml2ZXJzL3VzYi9zdG9yYWdlL2lzZDIwMC5jCkBAIC0xNTEwLDcgKzE1MTAsNyBAQAogICogUHJvdG9jb2wgYW5kIFRyYW5zcG9ydCBmb3IgdGhlIElTRDIwMCBBU0lDCiAgKgogICogVGhpcyBwcm90b2NvbCBhbmQgdHJhbnNwb3J0IGFyZSBmb3IgQVRBIGRldmljZXMgY29ubmVjdGVkIHRvIGFuIElTRDIwMAotICogQVNJQy4gIEFuIEFUQVBJIGRldmljZSB0aGF0IGlzIGNvbmVjdGVkIGFzIGEgc2xhdmUgZGV2aWNlIHdpbGwgYmUKKyAqIEFTSUMuICBBbiBBVEFQSSBkZXZpY2UgdGhhdCBpcyBjb25uZWN0ZWQgYXMgYSBzbGF2ZSBkZXZpY2Ugd2lsbCBiZQogICogZGV0ZWN0ZWQgaW4gdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBhbmQgdGhlIHByb3RvY29sIHdpbGwKICAqIGJlIGNoYW5nZWQgdG8gYW4gQVRBUEkgcHJvdG9jb2wgKFRyYW5zcGFyZW50IFNDU0kpLgogICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2NzaWdsdWUuYyBiL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2NzaWdsdWUuYwppbmRleCA2ODllZTFmLi4xM2I4YmNkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9zdG9yYWdlL3Njc2lnbHVlLmMKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zY3NpZ2x1ZS5jCkBAIC0xMjMsNyArMTIzLDcgQEAKIHsKIAlzdHJ1Y3QgdXNfZGF0YSAqdXMgPSBob3N0X3RvX3VzKHNkZXYtPmhvc3QpOwogCi0JLyogTWFueSBkZXZpY2VzIGhhdmUgdHJvdWJsZSB0cmFuc2ZlcmluZyBtb3JlIHRoYW4gMzJLQiBhdCBhIHRpbWUsCisJLyogTWFueSBkZXZpY2VzIGhhdmUgdHJvdWJsZSB0cmFuc2ZlcnJpbmcgbW9yZSB0aGFuIDMyS0IgYXQgYSB0aW1lLAogCSAqIHdoaWxlIG90aGVycyBoYXZlIHRyb3VibGUgd2l0aCBtb3JlIHRoYW4gNjRLLiBBdCB0aGlzIHRpbWUgd2UKIAkgKiBhcmUgbGltaXRpbmcgYm90aCB0byAzMksgKDY0IHNlY3RvcmVzKS4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3N0b3JhZ2Uvc2h1dHRsZV91c2JhdC5jIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmMKaW5kZXggYmQzZjQxNS4uMGIwMDA5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmMKKysrIGIvZHJpdmVycy91c2Ivc3RvcmFnZS9zaHV0dGxlX3VzYmF0LmMKQEAgLTM0MCw3ICszNDAsNyBAQAogfQogCiAvKgotICogU3RvcmVzIGNyaXRpY2FsIGluZm9ybWF0aW9uIGluIGludGVybmFsIHJlZ2lzdGVycyBpbiBwcmVwYXJ0aW9uIGZvciB0aGUgZXhlY3V0aW9uCisgKiBTdG9yZXMgY3JpdGljYWwgaW5mb3JtYXRpb24gaW4gaW50ZXJuYWwgcmVnaXN0ZXJzIGluIHByZXBhcmF0aW9uIGZvciB0aGUgZXhlY3V0aW9uCiAgKiBvZiBhIGNvbmRpdGlvbmFsIHVzYmF0X3JlYWRfYmxvY2tzIG9yIHVzYmF0X3dyaXRlX2Jsb2NrcyBjYWxsLgogICovCiBzdGF0aWMgaW50IHVzYmF0X3NldF9zaHV0dGxlX2ZlYXR1cmVzKHN0cnVjdCB1c19kYXRhICp1cywKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL2NyeXB0by5jIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvY3J5cHRvLmMKaW5kZXggODI3Yzg3Zi4uN2U0YmY5NSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvY3J5cHRvLmMKKysrIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvY3J5cHRvLmMKQEAgLTE4MCw3ICsxODAsNyBAQAogICogICAgIHVzaW5nIHRoZSAxNCBieXRlcyBvZiBAYSB0byBmaWxsIHVwCiAgKiAgICAgYjEue21hY19oZWFkZXIsZTAsc2VjdXJpdHlfcmVzZXJ2ZWQscGFkZGluZ30uCiAgKgotICogTk9URTogVGhlIGRlZmluaXRvbiBvZiBsKGEpIGluIFdVU0IxLjBbNi41XSB2cyB0aGUgZGVmaW5pdGlvbiBvZgorICogTk9URTogVGhlIGRlZmluaXRpb24gb2YgbChhKSBpbiBXVVNCMS4wWzYuNV0gdnMgdGhlIGRlZmluaXRpb24gb2YKICAqICAgICAgIGwobSkgaXMgb3J0aG9nb25hbCwgdGhleSBiZWFyIG5vIHJlbGF0aW9uc2hpcCwgc28gaXQgaXMgbm90CiAgKiAgICAgICBpbiBjb25mbGljdCB3aXRoIHRoZSBwYXJhbWV0ZXIncyByZWxhdGlvbiB0aGF0CiAgKiAgICAgICBXVVNCMS4wWzYuNC4yXSkgZGVmaW5lcy4KQEAgLTI3Miw3ICsyNzIsNyBAQAogCiAJLyogTm93IHdlIGNyeXB0IHRoZSBNSUMgVGFnICgqaXYpIHdpdGggQXggLS0gdmFsdWVzIHBlciBXVVNCMS4wWzYuNV0KIAkgKiBUaGUgcHJvY2VkdXJlIGlzIHRvIEFFUyBjcnlwdCB0aGUgQTAgYmxvY2sgYW5kIFhPUiB0aGUgTUlDCi0JICogVGFnIGFnYWlucyBpdDsgd2Ugb25seSBkbyB0aGUgZmlyc3QgOCBieXRlcyBhbmQgcGxhY2UgaXQKKwkgKiBUYWcgYWdhaW5zdCBpdDsgd2Ugb25seSBkbyB0aGUgZmlyc3QgOCBieXRlcyBhbmQgcGxhY2UgaXQKIAkgKiBkaXJlY3RseSBpbiB0aGUgZGVzdGluYXRpb24gYnVmZmVyLgogCSAqCiAJICogUE9TIENyeXB0byBBUEk6IHNpemUgaXMgYXNzdW1lZCB0byBiZSBBRVMncyBibG9jayBzaXplLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmVzZXJ2YXRpb24uYyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3Jlc2VydmF0aW9uLmMKaW5kZXggNGVkOTczNi4uNmY0ZmFmZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmVzZXJ2YXRpb24uYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS9yZXNlcnZhdGlvbi5jCkBAIC03MSw3ICs3MSw3IEBACiAKIC8qKgogICogd3VzYmhjX3Jzdl9lc3RhYmxpc2ggLSBlc3RhYmxpc2ggYSByZXNlcnZhdGlvbiBmb3IgdGhlIGNsdXN0ZXIKLSAqIEB3dXNiaGM6IHRoZSBXVVNCIEhDIHJlcXVlc3RpbmcgYSBiYW5kd2l0aCByZXNlcnZhdGlvbgorICogQHd1c2JoYzogdGhlIFdVU0IgSEMgcmVxdWVzdGluZyBhIGJhbmR3aWR0aCByZXNlcnZhdGlvbgogICovCiBpbnQgd3VzYmhjX3Jzdl9lc3RhYmxpc2goc3RydWN0IHd1c2JoYyAqd3VzYmhjKQogewpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmguYyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3JoLmMKaW5kZXggYzE3NWI3My4uMzlkZTM5MCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvcmguYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS9yaC5jCkBAIC0xMzMsNyArMTMzLDcgQEAKICAqICAgICAgICAgICBiaWcgb2YgYSBwcm9ibGVtIFthbmQgd2UgY2FuJ3QgbWFrZSBpdCBhbiBzcGlubG9jawogICogICAgICAgICAgIGJlY2F1c2Ugb3RoZXIgcGFydHMgbmVlZCB0byB0YWtlIGl0IGFuZCBzbGVlcF0gLgogICoKLSAqICAgICAgICAgICBAdXNiX2hjZCBpcyByZWZjb3VudGVkLCBzbyBpdCB3b24ndCBkaXNzYXBlYXIgdW5kZXIgdXMKKyAqICAgICAgICAgICBAdXNiX2hjZCBpcyByZWZjb3VudGVkLCBzbyBpdCB3b24ndCBkaXNhcHBlYXIgdW5kZXIgdXMKICAqICAgICAgICAgICBhbmQgYmVmb3JlIGtpbGxpbmcgYSBob3N0LCB0aGUgcG9sbGluZyBvZiB0aGUgcm9vdCBodWIKICAqICAgICAgICAgICB3b3VsZCBiZSBzdG9wcGVkIGFueXdheS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtcnBpcGUuYyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXJwaXBlLmMKaW5kZXggOGNiOWQ4MC4uY2E4MDE3MSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EtcnBpcGUuYworKysgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS1ycGlwZS5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKgogICogUlBJUEUKICAqCi0gKiAgIFRhcmdldHRlZCBhdCBkaWZmZXJlbnQgZG93bnN0cmVhbSBlbmRwb2ludHMKKyAqICAgVGFyZ2V0ZWQgYXQgZGlmZmVyZW50IGRvd25zdHJlYW0gZW5kcG9pbnRzCiAgKgogICogICBEZXNjcmlwdG9yOiB1c2UgdG8gY29uZmlnIHRoZSByZW1vdGUgcGlwZS4KICAqCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi93dXNiY29yZS93YS14ZmVyLmMgYi9kcml2ZXJzL3VzYi93dXNiY29yZS93YS14ZmVyLmMKaW5kZXggODRiNzQ0Yy4uNmNjZDkzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd2EteGZlci5jCisrKyBiL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3dhLXhmZXIuYwpAQCAtNjEsNyArNjEsNyBAQAogICoKICAqICAgICBUd28gbWV0aG9kcyBpdCBjb3VsZCBiZSBkb25lOgogICoKLSAqICAgICAoYSkgc2V0IHVwIGEgdGltZXIgZXZlcnl0aW1lIGFuIHJwaXBlJ3MgdXNlIGNvdW50IGRyb3BzIHRvIDEKKyAqICAgICAoYSkgc2V0IHVwIGEgdGltZXIgZXZlcnkgdGltZSBhbiBycGlwZSdzIHVzZSBjb3VudCBkcm9wcyB0byAxCiAgKiAgICAgICAgICh3aGljaCBtZWFucyB1bnVzZWQpIG9yIHdoZW4gYSB0cmFuc2ZlciBlbmRzLiBSZXNldCB0aGUKICAqICAgICAgICAgdGltZXIgd2hlbiBhIHhmZXIgaXMgcXVldWVkLiBJZiB0aGUgdGltZXIgZXhwaXJlcywgcmVsZWFzZQogICogICAgICAgICB0aGUgcnBpcGUgW3NlZSBycGlwZV9lcF9kaXNhYmxlKCldLgpAQCAtMTQwLDcgKzE0MCw3IEBACiAKIAlzdHJ1Y3Qgd2FoYyAqd2E7CQkvKiBXaXJlIGFkYXB0ZXIgd2UgYXJlIHBsdWdnZWQgdG8gKi8KIAlzdHJ1Y3QgdXNiX2hvc3RfZW5kcG9pbnQgKmVwOwotCXN0cnVjdCB1cmIgKnVyYjsJCS8qIFVSQiB3ZSBhcmUgdHJhbnNmZXJpbmcgZm9yICovCisJc3RydWN0IHVyYiAqdXJiOwkJLyogVVJCIHdlIGFyZSB0cmFuc2ZlcnJpbmcgZm9yICovCiAJc3RydWN0IHdhX3NlZyAqKnNlZzsJCS8qIHRyYW5zZmVyIHNlZ21lbnRzICovCiAJdTggc2Vncywgc2Vnc19zdWJtaXR0ZWQsIHNlZ3NfZG9uZTsKIAl1bnNpZ25lZCBpc19pbmJvdW5kOjE7CkBAIC0xNjEsNyArMTYxLDcgQEAKIH0KIAogLyoKLSAqIERlc3RvcnkgYSB0cmFuc2ZlciBzdHJ1Y3R1cmUKKyAqIERlc3Ryb3kgYSB0cmFuc2ZlciBzdHJ1Y3R1cmUKICAqCiAgKiBOb3RlIHRoYXQgdGhlIHhmZXItPnNlZ1tpbmRleF0gdGhpbmdpZXMgZm9sbG93IHRoZSBVUkIgbGlmZSBjeWNsZSwKICAqIHNvIHdlIG5lZWQgdG8gcHV0IHRoZW0sIG5vdCBmcmVlIHRoZW0uCkBAIC00OTQsNyArNDk0LDcgQEAKICAqIGZ1bmN0aW9uIGRvZXMgYWxtb3N0IHRoZSBzYW1lIHRoaW5nIGFuZCB0aGV5IHdvcmsgY2xvc2VseQogICogdG9nZXRoZXIuCiAgKgotICogSWYgdGhlIHNlZyByZXF1ZXN0IGhhcyBmYWlsZWQgYnV0IHRoaXMgRFRPIHBoYXNlIGhhcyBzdWNlZWRlZCwKKyAqIElmIHRoZSBzZWcgcmVxdWVzdCBoYXMgZmFpbGVkIGJ1dCB0aGlzIERUTyBwaGFzZSBoYXMgc3VjY2VlZGVkLAogICogd2Ffc2VnX2NiKCkgaGFzIGFscmVhZHkgZmFpbGVkIHRoZSBzZWdtZW50IGFuZCBtb3ZlZCB0aGUKICAqIHN0YXR1cyB0byBXQV9TRUdfRVJST1IsIHNvIHRoaXMgd2lsbCBnbyB0aHJvdWdoICdjYXNlIDAnIGFuZAogICogZWZmZWN0aXZlbHkgZG8gbm90aGluZy4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL3d1c2Jjb3JlL3d1c2JoYy5oIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd3VzYmhjLmgKaW5kZXggNmJkNDI2Yi4uM2EyZDA5MSAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2Ivd3VzYmNvcmUvd3VzYmhjLmgKKysrIGIvZHJpdmVycy91c2Ivd3VzYmNvcmUvd3VzYmhjLmgKQEAgLTIzMSw3ICsyMzEsNyBAQAogICoKICAqICAgIE1vc3Qgb2YgdGhlIHRpbWVzIHdoZW4geW91IG5lZWQgdG8gdXNlIGl0LCBpdCB3aWxsIGJlIG5vbi1OVUxMLAogICogICAgc28gdGhlcmUgaXMgbm8gcmVhbCBuZWVkIHRvIGNoZWNrIGZvciBpdCAod3VzYl9kZXYgd2lsbAotICogICAgZGlzc2FwZWFyIGJlZm9yZSB1c2JfZGV2KS4KKyAqICAgIGRpc2FwcGVhciBiZWZvcmUgdXNiX2RldikuCiAgKgogICogIC0gVGhlIGZvbGxvd2luZyBmaWVsZHMgbmVlZCB0byBiZSBmaWxsZWQgb3V0IGJlZm9yZSBjYWxsaW5nCiAgKiAgICB3dXNiaGNfY3JlYXRlKCk6IHBvcnRzX21heCwgbW1jaWVzX21heCwgbW1jaWVfe2FkZCxybX0uCmRpZmYgLS1naXQgYS9kcml2ZXJzL3V3Yi9kcml2ZXIuYyBiL2RyaXZlcnMvdXdiL2RyaXZlci5jCmluZGV4IDA4YmQ2ZGIuLjNlNTQ1NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdXdiL2RyaXZlci5jCisrKyBiL2RyaXZlcnMvdXdiL2RyaXZlci5jCkBAIC02MSw3ICs2MSw3IEBACiAKIAogLyoqCi0gKiBJZiBhIGJlYWNvbiBkaXNzYXBlYXJzIGZvciBsb25nZXIgdGhhbiB0aGlzLCB0aGVuIHdlIGNvbnNpZGVyIHRoZQorICogSWYgYSBiZWFjb24gZGlzYXBwZWFycyBmb3IgbG9uZ2VyIHRoYW4gdGhpcywgdGhlbiB3ZSBjb25zaWRlciB0aGUKICAqIGRldmljZSB3aG8gd2FzIHJlcHJlc2VudGVkIGJ5IHRoYXQgYmVhY29uIHRvIGJlIGdvbmUuCiAgKgogICogRUNNQS0zNjhbMTcuMi4zLCBsYXN0IHBhcmFdIGVzdGFibGlzaGVzIHRoYXQgYSBkZXZpY2UgbXVzdCBub3QKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXdiL2RycC5jIGIvZHJpdmVycy91d2IvZHJwLmMKaW5kZXggYThkODNlMi4uM2ZiY2Y3OCAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvZHJwLmMKKysrIGIvZHJpdmVycy91d2IvZHJwLmMKQEAgLTI3LDcgKzI3LDcgQEAKIAogLyogRFJQIENvbmZsaWN0IEFjdGlvbnMgKFtFQ01BLTM2OCAybmQgRWRpdGlvbl0gMTcuNC42KSAqLwogZW51bSB1d2JfZHJwX2NvbmZsaWN0X2FjdGlvbiB7Ci0JLyogUmVzZXJ2YXRpb24gaXMgbWFudGFpbmVkLCBubyBhY3Rpb24gbmVlZGVkICovCisJLyogUmVzZXJ2YXRpb24gaXMgbWFpbnRhaW5lZCwgbm8gYWN0aW9uIG5lZWRlZCAqLwogCVVXQl9EUlBfQ09ORkxJQ1RfTUFOVEFJTiA9IDAsCiAJCiAJLyogdGhlIGRldmljZSBzaGFsbCBub3QgdHJhbnNtaXQgZnJhbWVzIGluIGNvbmZsaWN0aW5nIE1BU3MgaW4KQEAgLTc0MSwxMiArNzQxLDEyIEBACiAgKiBEUlAgbm90aWZpY2F0aW9ucyBjYW4gb2NjdXIgZm9yIHRocmVlIGRpZmZlcmVudCByZWFzb25zOgogICoKICAqIC0gVVdCX0RSUF9OT1RJRl9EUlBfSUVfUkVDVkQ6IG9uZSBvciBtb3JlIERSUCBJRXMgd2l0aCB0aGUgUkMgYXMKLSAqICAgdGhlIHRhcmdldCBvciBzb3VyY2UgaGF2ZSBiZWVuIHJlY2lldmVkLgorICogICB0aGUgdGFyZ2V0IG9yIHNvdXJjZSBoYXZlIGJlZW4gcmVjZWl2ZWQuCiAgKgogICogICBUaGVzZSBEUlAgSUVzIGNvdWxkIGJlIG5ldyBvciBmb3IgYW4gZXhpc3RpbmcgcmVzZXJ2YXRpb24uCiAgKgogICogICBJZiB0aGUgRFJQIElFIGZvciBhbiBleGlzdGluZyByZXNlcnZhdGlvbiBjZWFzZXMgdG8gYmUgdG8KLSAqICAgcmVjaWV2ZWQgZm9yIGF0IGxlYXN0IG1NYXhMb3N0QmVhY29ucywgdGhlIHJlc2VydmF0aW9uIHNob3VsZCBiZQorICogICByZWNlaXZlZCBmb3IgYXQgbGVhc3QgbU1heExvc3RCZWFjb25zLCB0aGUgcmVzZXJ2YXRpb24gc2hvdWxkIGJlCiAgKiAgIGNvbnNpZGVyZWQgdG8gYmUgdGVybWluYXRlZC4gIE5vdGUgdGhhdCB0aGUgVEVSTUlOQVRFIHJlYXNvbiAoc2VlCiAgKiAgIGJlbG93KSBtYXkgbm90IGFsd2F5cyBiZSBzaWduYWxsZWQgKGUuZy4sIHRoZSByZW1vdGUgZGV2aWNlIGhhcwogICogICB0d28gb3IgbW9yZSByZXNlcnZhdGlvbnMgZXN0YWJsaXNoZWQgd2l0aCB0aGUgUkMpLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy91d2IvbGMtcmMuYyBiL2RyaXZlcnMvdXdiL2xjLXJjLmMKaW5kZXggYjAwOTFjNy4uYjQzOTVmNCAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvbGMtcmMuYworKysgYi9kcml2ZXJzL3V3Yi9sYy1yYy5jCkBAIC0xNjgsNyArMTY4LDcgQEAKIAl9CiAKIAlpZiAodXdiX21hY19hZGRyX3Vuc2V0KCZhZGRyKSB8fCB1d2JfbWFjX2FkZHJfYmNhc3QoJmFkZHIpKSB7Ci0JCWFkZHIuZGF0YVswXSA9IDB4MDI7IC8qIGxvY2FsbHkgYWRtaW5zdGVyZWQgYW5kIHVuaWNhc3QgKi8KKwkJYWRkci5kYXRhWzBdID0gMHgwMjsgLyogbG9jYWxseSBhZG1pbmlzdGVyZWQgYW5kIHVuaWNhc3QgKi8KIAkJZ2V0X3JhbmRvbV9ieXRlcygmYWRkci5kYXRhWzFdLCBzaXplb2YoYWRkci5kYXRhKS0xKTsKIAogCQlyZXN1bHQgPSB1d2JfcmNfbWFjX2FkZHJfc2V0KHJjLCAmYWRkcik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3V3Yi9yZXNldC5jIGIvZHJpdmVycy91d2IvcmVzZXQuYwppbmRleCAyNzg0OTI5Li4zZGU2MzBiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3V3Yi9yZXNldC5jCisrKyBiL2RyaXZlcnMvdXdiL3Jlc2V0LmMKQEAgLTUyLDcgKzUyLDcgQEAKIAkiY2FuY2VsbGVkIiwKIAkiaW52YWxpZCBzdGF0ZSIsCiAJImludmFsaWQgc2l6ZSIsCi0JImFjayBub3QgcmVjaWV2ZWQiLAorCSJhY2sgbm90IHJlY2VpdmVkIiwKIAkibm8gbW9yZSBhc2llIG5vdGlmaWNhdGlvbiIsCiB9OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL3V3Yi91bWMtZGV2LmMgYi9kcml2ZXJzL3V3Yi91bWMtZGV2LmMKaW5kZXggY2NkMjE4NC4uYjI5NDhlYyAxMDA2NDQKLS0tIGEvZHJpdmVycy91d2IvdW1jLWRldi5jCisrKyBiL2RyaXZlcnMvdXdiL3VtYy1kZXYuYwpAQCAtNzgsNyArNzgsNyBAQAogICogRmlyc3Qgd2UgdW5yZWdpc3RlciB0aGUgZGV2aWNlLCBtYWtlIHN1cmUgdGhlIGRyaXZlciBjYW4gZG8gaXQncwogICogcmVzb3VyY2UgcmVsZWFzZSB0aGluZyBhbmQgdGhlbiB3ZSB0cnkgdG8gcmVsZWFzZSBhbnkgbGVmdCBvdmVyCiAgKiByZXNvdXJjZXMuIFdlIHRha2UgYSByZWYgdG8gdGhlIGRldmljZSwgdG8gbWFrZSBzdXJlIGl0IGRvZXNuJ3QKLSAqIGRpc3NhcGVhciB1bmRlciBvdXIgZmVldC4KKyAqIGRpc2FwcGVhciB1bmRlciBvdXIgZmVldC4KICAqLwogdm9pZCB1bWNfZGV2aWNlX3VucmVnaXN0ZXIoc3RydWN0IHVtY19kZXYgKnVtYykKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYXRtZWxfbGNkZmIuYyBiL2RyaXZlcnMvdmlkZW8vYXRtZWxfbGNkZmIuYwppbmRleCBjY2VjZjk5Li40NDg0YzcyIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2F0bWVsX2xjZGZiLmMKKysrIGIvZHJpdmVycy92aWRlby9hdG1lbF9sY2RmYi5jCkBAIC02MzcsNyArNjM3LDcgQEAKICAqICAJbWFnbml0dWRlIHdoaWNoIG5lZWRzIHRvIGJlIHNjYWxlZCBpbiB0aGlzIGZ1bmN0aW9uIGZvciB0aGUgaGFyZHdhcmUuCiAgKglUaGluZ3MgdG8gdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24gYXJlIGhvdyBtYW55IGNvbG9yIHJlZ2lzdGVycywgaWYKICAqCWFueSwgYXJlIHN1cHBvcnRlZCB3aXRoIHRoZSBjdXJyZW50IGNvbG9yIHZpc3VhbC4gV2l0aCB0cnVlY29sb3IgbW9kZQotICoJbm8gY29sb3IgcGFsZXR0ZXMgYXJlIHN1cHBvcnRlZC4gSGVyZSBhIHBzdWVkbyBwYWxldHRlIGlzIGNyZWF0ZWQKKyAqCW5vIGNvbG9yIHBhbGV0dGVzIGFyZSBzdXBwb3J0ZWQuIEhlcmUgYSBwc2V1ZG8gcGFsZXR0ZSBpcyBjcmVhdGVkCiAgKgl3aGljaCB3ZSBzdG9yZSB0aGUgdmFsdWUgaW4gcHNldWRvX3BhbGV0dGUgaW4gc3RydWN0IGZiX2luZm8uIEZvcgogICoJcHNldWRvY29sb3IgbW9kZSB3ZSBoYXZlIGEgbGltaXRlZCBjb2xvciBwYWxldHRlLiBUbyBkZWFsIHdpdGggdGhpcwogICoJd2UgY2FuIHByb2dyYW0gd2hhdCBjb2xvciBpcyBkaXNwbGF5ZWQgZm9yIGEgcGFydGljdWxhciBwaXhlbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYyBiL2RyaXZlcnMvdmlkZW8vYXR5L2F0eWZiX2Jhc2UuYwppbmRleCBkNDM3YjNkLi5lYmI4OTNjIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2F0eS9hdHlmYl9iYXNlLmMKKysrIGIvZHJpdmVycy92aWRlby9hdHkvYXR5ZmJfYmFzZS5jCkBAIC0zMTI0LDEyICszMTI0LDEyIEBACiAJCU0gPSBwbGxfcmVnc1syXTsKIAogCQkvKgotCQkgKiBQTEwgRmVlZGJhY2sgRGl2aWRlciBOIChEZXBlbmRhbnQgb24gQ0xPQ0tfQ05UTCk6CisJCSAqIFBMTCBGZWVkYmFjayBEaXZpZGVyIE4gKERlcGVuZGVudCBvbiBDTE9DS19DTlRMKToKIAkJICovCiAJCU4gPSBwbGxfcmVnc1s3ICsgKGNsb2NrX2NudGwgJiAzKV07CiAKIAkJLyoKLQkJICogUExMIFBvc3QgRGl2aWRlciBQIChEZXBlbmRhbnQgb24gQ0xPQ0tfQ05UTCk6CisJCSAqIFBMTCBQb3N0IERpdmlkZXIgUCAoRGVwZW5kZW50IG9uIENMT0NLX0NOVEwpOgogCQkgKi8KIAkJUCA9IDEgPDwgKHBsbF9yZWdzWzZdID4+ICgoY2xvY2tfY250bCAmIDMpIDw8IDEpKTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdHkvbWFjaDY0X2N1cnNvci5jIGIvZHJpdmVycy92aWRlby9hdHkvbWFjaDY0X2N1cnNvci5jCmluZGV4IDJiYThiM2MuLjQ2ZjcyZWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXR5L21hY2g2NF9jdXJzb3IuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F0eS9tYWNoNjRfY3Vyc29yLmMKQEAgLTUxLDcgKzUxLDcgQEAKICAqIHRvIGEgbGFyZ2VyIG51bWJlciBhbmQgc2F0dXJhdGUgQ1VSX0hPUlpfUE9TTiB0byB6ZXJvLgogICoKICAqIGlmIFkgYmVjb21lcyBuZWdhdGl2ZSwgQ1VSX1ZFUlRfT0ZGU0VUIG11c3QgYmUgYWRqdXN0ZWQgdG8gYSBsYXJnZXIgbnVtYmVyLAotICogQ1VSX09GRlNFVCBtdXN0IGJlIGFkanVzdGVkIHRvIGEgcG9pbnQgdG8gdGhlIGFwcHJvcHJhaXRlIGxpbmUgaW4gdGhlIGN1cnNvcgorICogQ1VSX09GRlNFVCBtdXN0IGJlIGFkanVzdGVkIHRvIGEgcG9pbnQgdG8gdGhlIGFwcHJvcHJpYXRlIGxpbmUgaW4gdGhlIGN1cnNvcgogICogZGVmaW5pdGF0aW9uIGFuZCBDVVJfVkVSVF9QT1NOIG11c3QgYmUgc2F0dXJhdGVkIHRvIHplcm8uCiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9hdTEyMDBmYi5jIGIvZHJpdmVycy92aWRlby9hdTEyMDBmYi5jCmluZGV4IDRlYTE4N2QuLjVkZmYzMmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYXUxMjAwZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2F1MTIwMGZiLmMKQEAgLTE1NzIsNyArMTU3Miw3IEBACiAJLyogQ29weSBtb25pdG9yIHNwZWNzIGZyb20gcGFuZWwgZGF0YSAqLwogCS8qIGZpeG1lOiB3ZSdyZSBzZXR0aW5nIHVwIExDRCBjb250cm9sbGVyIHdpbmRvd3MsIHNvIHRoZXNlIGRvbnQgZ2l2ZSBhCiAJZGFtbiBhcyB0byB3aGF0IHRoZSBtb25pdG9yIHNwZWNzIGFyZSAodGhlIHBhbmVsIGl0c2VsZiBkb2VzLCBidXQgdGhhdAotCWlzbnQgZG9uZSBoZXJlLi4uc28gbWF5YmUgbmVlZCBhIGdlbmVyaWMgY2F0Y2hhbGwgbW9uaXRvciBzZXR0aW5nPz8/ICovCisJaXNuJ3QgZG9uZSBoZXJlLi4uc28gbWF5YmUgbmVlZCBhIGdlbmVyaWMgY2F0Y2hhbGwgbW9uaXRvciBzZXR0aW5nPz8/ICovCiAJbWVtY3B5KCZmYmktPm1vbnNwZWNzLCAmcGFuZWwtPm1vbnNwZWNzLCBzaXplb2Yoc3RydWN0IGZiX21vbnNwZWNzKSk7CiAKIAkvKiBXZSBmaXJzdCB0cnkgdGhlIHVzZXIgbW9kZSBwYXNzZWQgaW4gYXJndW1lbnQuIElmIHRoYXQgZmFpbGVkLApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9iYWNrbGlnaHQvY29yZ2lfbGNkLmMgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYwppbmRleCBhZjYwOTgzLi5jNjUzM2JhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYworKysgYi9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9jb3JnaV9sY2QuYwpAQCAtMTA5LDcgKzEwOSw3IEBACiAjZGVmaW5lIENPUkdJQkxfQkFUVExPVyAgICAgICAweDAyCiAKIC8qCi0gKiBUaGlzIGlzIG9ubHkgYSBwc3VlZG8gSTJDIGludGVyZmFjZS4gV2UgY2FuJ3QgdXNlIHRoZSBzdGFuZGFyZCBrZXJuZWwKKyAqIFRoaXMgaXMgb25seSBhIHBzZXVkbyBJMkMgaW50ZXJmYWNlLiBXZSBjYW4ndCB1c2UgdGhlIHN0YW5kYXJkIGtlcm5lbAogICogcm91dGluZXMgYXMgdGhlIGludGVyZmFjZSBpcyB3cml0ZSBvbmx5LiBXZSBqdXN0IGFzc3VtZSB0aGUgZGF0YSBpcyBhY2tlZC4uLgogICovCiBzdGF0aWMgdm9pZCBsY2R0Z19zc3BfaTJjX3NlbmQoc3RydWN0IGNvcmdpX2xjZCAqbGNkLCB1aW50OF90IGRhdGEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2JhY2tsaWdodC9sb2NvbW9sY2QuYyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jCmluZGV4IGJiY2EzMTIuLmJlMjBiNWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jCisrKyBiL2RyaXZlcnMvdmlkZW8vYmFja2xpZ2h0L2xvY29tb2xjZC5jCkBAIC02LDcgKzYsNyBAQAogICogR1BMIHYyCiAgKgogICogVGhpcyBkcml2ZXIgYXNzdW1lcyBzaW5nbGUgQ1BVLiBUaGF0J3Mgb2theSwgYmVjYXVzZSBjb2xsaWUgaXMKLSAqIHNsaWdodGx5IG9sZCBoYXJkd2FyZSwgYW5kIG5vb25lIGlzIGdvaW5nIHRvIHJldHJvZml0IHNlY29uZCBDUFUgdG8KKyAqIHNsaWdodGx5IG9sZCBoYXJkd2FyZSwgYW5kIG5vIG9uZSBpcyBnb2luZyB0byByZXRyb2ZpdCBzZWNvbmQgQ1BVIHRvCiAgKiBvbGQgUERBLgogICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vYmZpbl9hZHY3MzkzZmIuaCBiL2RyaXZlcnMvdmlkZW8vYmZpbl9hZHY3MzkzZmIuaAppbmRleCA4YzdmOWU0Li5jZDU5MWI1IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2JmaW5fYWR2NzM5M2ZiLmgKKysrIGIvZHJpdmVycy92aWRlby9iZmluX2FkdjczOTNmYi5oCkBAIC04NywxMiArODcsMTIgQEAKIAogc3RhdGljIGNvbnN0IHU4IGluaXRfTlRTQ1tdID0gewogCTB4MDAsIDB4MUUsCS8qIFBvd2VyIHVwIGFsbCBEQUNzIGFuZCBQTEwgKi8KLQkweEMzLCAweDI2LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEM1LCAweDEyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEMyLCAweDRBLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEM2LCAweDVFLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEJELCAweDE5LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEJGLCAweDQyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KKwkweEMzLCAweDI2LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEM1LCAweDEyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEMyLCAweDRBLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEM2LCAweDVFLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEJELCAweDE5LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEJGLCAweDQyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KIAkweDhDLCAweDFGLAkvKiBOVFNDIFN1YmNhcnJpZXIgRnJlcXVlbmN5ICovCiAJMHg4RCwgMHg3QywJLyogTlRTQyBTdWJjYXJyaWVyIEZyZXF1ZW5jeSAqLwogCTB4OEUsIDB4RjAsCS8qIE5UU0MgU3ViY2FycmllciBGcmVxdWVuY3kgKi8KQEAgLTEwOSwxMiArMTA5LDEyIEBACiAKIHN0YXRpYyBjb25zdCB1OCBpbml0X1BBTFtdID0gewogCTB4MDAsIDB4MUUsCS8qIFBvd2VyIHVwIGFsbCBEQUNzIGFuZCBQTEwgKi8KLQkweEMzLCAweDI2LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEM1LCAweDEyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEMyLCAweDRBLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEM2LCAweDVFLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEJELCAweDE5LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KLQkweEJGLCAweDQyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVydGlvbiBtYXRyaXggKi8KKwkweEMzLCAweDI2LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEM1LCAweDEyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEMyLCAweDRBLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEM2LCAweDVFLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEJELCAweDE5LAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KKwkweEJGLCAweDQyLAkvKiBQcm9ncmFtIFJHQi0+WUNyQ2IgQ29sb3IgU3BhY2UgY29udmVyc2lvbiBtYXRyaXggKi8KIAkweDhDLCAweENCLAkvKiBQQUwgU3ViY2FycmllciBGcmVxdWVuY3kgKi8KIAkweDhELCAweDhBLAkvKiBQQUwgU3ViY2FycmllciBGcmVxdWVuY3kgKi8KIAkweDhFLCAweDA5LAkvKiBQQUwgU3ViY2FycmllciBGcmVxdWVuY3kgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS9mb250X21pbmlfNHg2LmMgYi9kcml2ZXJzL3ZpZGVvL2NvbnNvbGUvZm9udF9taW5pXzR4Ni5jCmluZGV4IGExOWE3ZjMuLmZhNmU2OTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vY29uc29sZS9mb250X21pbmlfNHg2LmMKKysrIGIvZHJpdmVycy92aWRlby9jb25zb2xlL2ZvbnRfbWluaV80eDYuYwpAQCAtMSw1ICsxLDUgQEAKIAotLyogSGFuZCBjb21wb3NlZCAiTWluaXNjdWxlIiA0eDYgZm9udCwgd2l0aCBiaW5hcnkgZGF0YSBnZW5lcmF0ZWQgdXNpbmcKKy8qIEhhbmQgY29tcG9zZWQgIk1pbnVzY3VsZSIgNHg2IGZvbnQsIHdpdGggYmluYXJ5IGRhdGEgZ2VuZXJhdGVkIHVzaW5nCiAgKiBQZXJsIHN0dWIuCiAgKgogICogVXNlICdwZXJsIC14IG1pbmlfNHg2LmMgPCBtaW5pXzR4Ni5jID4gbmV3X3ZlcnNpb24uYycgdG8gcmVnZW5lcmF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9kYTh4eC1mYi5jIGIvZHJpdmVycy92aWRlby9kYTh4eC1mYi5jCmluZGV4IDhkNjFlZjkuLjhiN2Q0NzMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZGE4eHgtZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2RhOHh4LWZiLmMKQEAgLTc2Myw3ICs3NjMsNyBAQAogCiAJLyoKIAkgKiBTZXQgZmxhZyB0byAwIGFuZCB3YWl0IGZvciBpc3IgdG8gc2V0IHRvIDEuIEl0IHdvdWxkIHNlZW0gdGhlcmUgaXMgYQotCSAqIHJhY2UgY29uZGl0aW9uIGhlcmUgd2hlcmUgdGhlIElTUiBjb3VsZCBoYXZlIG9jY3VyZWQganVzdCBiZWZvcmUgb3IKKwkgKiByYWNlIGNvbmRpdGlvbiBoZXJlIHdoZXJlIHRoZSBJU1IgY291bGQgaGF2ZSBvY2N1cnJlZCBqdXN0IGJlZm9yZSBvcgogCSAqIGp1c3QgYWZ0ZXIgdGhpcyBzZXQuIEJ1dCBzaW5jZSB3ZSBhcmUganVzdCBjb2Fyc2VseSB3YWl0aW5nIGZvcgogCSAqIGEgZnJhbWUgdG8gY29tcGxldGUgdGhlbiB0aGF0J3MgT0suIGkuZS4gaWYgdGhlIGZyYW1lIGNvbXBsZXRlZAogCSAqIGp1c3QgYmVmb3JlIHRoaXMgY29kZSBleGVjdXRlZCB0aGVuIHdlIGhhdmUgdG8gd2FpdCBhbm90aGVyIGZ1bGwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZGlzcGxheS9kaXNwbGF5LXN5c2ZzLmMgYi9kcml2ZXJzL3ZpZGVvL2Rpc3BsYXkvZGlzcGxheS1zeXNmcy5jCmluZGV4IGY2YTA5YWIuLjBjNjQ3ZDcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZGlzcGxheS9kaXNwbGF5LXN5c2ZzLmMKKysrIGIvZHJpdmVycy92aWRlby9kaXNwbGF5L2Rpc3BsYXktc3lzZnMuYwpAQCAtMTgyLDcgKzE4Miw3IEBACiAJbXV0ZXhfbG9jaygmZGRldi0+bG9jayk7CiAJZGV2aWNlX3VucmVnaXN0ZXIoZGRldi0+ZGV2KTsKIAltdXRleF91bmxvY2soJmRkZXYtPmxvY2spOwotCS8vIE1hcmsgZGV2aWNlIGluZGV4IGFzIGF2YWxpYWJsZQorCS8vIE1hcmsgZGV2aWNlIGluZGV4IGFzIGF2YWlsYWJsZQogCW11dGV4X2xvY2soJmFsbG9jYXRlZF9kc3BfbG9jayk7CiAJaWRyX3JlbW92ZSgmYWxsb2NhdGVkX2RzcCwgZGRldi0+aWR4KTsKIAltdXRleF91bmxvY2soJmFsbG9jYXRlZF9kc3BfbG9jayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2VwOTN4eC1mYi5jIGIvZHJpdmVycy92aWRlby9lcDkzeHgtZmIuYwppbmRleCBiMzU4ZDA0Li5jYmRiMWJkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2VwOTN4eC1mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZXA5M3h4LWZiLmMKQEAgLTQ1Niw3ICs0NTYsNyBAQAogCSAqIFRoZXJlIGlzIGEgYnVnIGluIHRoZSBlcDkzeHggZnJhbWVidWZmZXIgd2hpY2ggY2F1c2VzIHByb2JsZW1zCiAJICogaWYgYml0IDI3IG9mIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGlzIHNldC4KIAkgKiBTZWU6IGh0dHA6Ly9tYXJjLmluZm8vP2w9bGludXgtYXJtLWtlcm5lbCZtPTExMDA2MTI0NTUwMjAwMCZ3PTIKLQkgKiBUaGVyZSBkb2VzIG5vdCBzZWVtIHRvIGJlIGFueSBvZmZpY2FsIGVycmF0YSBmb3IgdGhpcywgYnV0IEkKKwkgKiBUaGVyZSBkb2VzIG5vdCBzZWVtIHRvIGJlIGFueSBvZmZpY2lhbCBlcnJhdGEgZm9yIHRoaXMsIGJ1dCBJCiAJICogaGF2ZSBjb25maXJtZWQgdGhlIHByb2JsZW0gZXhpc3RzIG9uIG15IGhhcmR3YXJlIChlcDkzMTUpIGF0CiAJICogbGVhc3QuCiAJICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL2Zic3lzZnMuYyBiL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jCmluZGV4IGY0YTMyNzcuLjA0MjUxY2UgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jCisrKyBiL2RyaXZlcnMvdmlkZW8vZmJzeXNmcy5jCkBAIC0zMyw3ICszMyw3IEBACiAgKiBmb3IgZHJpdmVyIHByaXZhdGUgZGF0YSAoaW5mby0+cGFyKS4gaW5mby0+cGFyIChpZiBhbnkpIHdpbGwgYmUKICAqIGFsaWduZWQgdG8gc2l6ZW9mKGxvbmcpLgogICoKLSAqIFJldHVybnMgdGhlIG5ldyBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqIFJldHVybnMgdGhlIG5ldyBzdHJ1Y3R1cmUsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCiAgKgogICovCiBzdHJ1Y3QgZmJfaW5mbyAqZnJhbWVidWZmZXJfYWxsb2Moc2l6ZV90IHNpemUsIHN0cnVjdCBkZXZpY2UgKmRldikKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vZm0yZmIuYyBiL2RyaXZlcnMvdmlkZW8vZm0yZmIuYwppbmRleCAxYjBmZWI4Li5kMDUzM2I3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZtMmZiLmMKKysrIGIvZHJpdmVycy92aWRlby9mbTJmYi5jCkBAIC00NSw3ICs0NSw3IEBACiAgKglidWZmZXIgbmVlZHMgYW4gYW1vdW50IG9mIG1lbW9yeSBvZiAxLjc2OS40NzIgYnl0ZXMgd2hpY2gKICAqCWlzIG5lYXIgdG8gMiBNQnl0ZSAodGhlIGFsbG9jYXRlZCBhZGRyZXNzIHNwYWNlIG9mIFpvcnJvMikuCiAgKglUaGUgbWVtb3J5IGlzIGNoYW5uZWwgaW50ZXJsZWF2ZWQuIFRoYXQgbWVhbnMgZXZlcnkgY2hhbm5lbAotICoJb3ducyBmb3VyIFZSQU1zLiBVbmZvcnR1bmF0bHkgbW9zdCBGcmFtZU1hc3RlcnMgSUkgYXJlCisgKglvd25zIGZvdXIgVlJBTXMuIFVuZm9ydHVuYXRlbHkgbW9zdCBGcmFtZU1hc3RlcnMgSUkgYXJlCiAgKglub3QgYXNzZW1ibGVkIHdpdGggbWVtb3J5IGZvciB0aGUgYWxwaGEgY2hhbm5lbC4gSW4gdGhpcwogICoJY2FzZSBpdCBjb3VsZCBiZSBwb3NzaWJsZSB0byBhZGQgdGhlIGZyYW1lIGJ1ZmZlciBpbnRvIHRoZQogICoJbm9ybWFsIG1lbW9yeSBwb29sLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9mc2wtZGl1LWZiLmMgYi9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYwppbmRleCA5MDQ4Zjg3Li5iZWRmNWJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2ZzbC1kaXUtZmIuYwpAQCAtODgyLDcgKzg4Miw3IEBACiAgKiB3aGljaCBuZWVkcyB0byBiZSBzY2FsZWQgaW4gdGhpcyBmdW5jdGlvbiBmb3IgdGhlIGhhcmR3YXJlLiBUaGluZ3MgdG8gdGFrZQogICogaW50byBjb25zaWRlcmF0aW9uIGFyZSBob3cgbWFueSBjb2xvciByZWdpc3RlcnMsIGlmIGFueSwgYXJlIHN1cHBvcnRlZCB3aXRoCiAgKiB0aGUgY3VycmVudCBjb2xvciB2aXN1YWwuIFdpdGggdHJ1ZWNvbG9yIG1vZGUgbm8gY29sb3IgcGFsZXR0ZXMgYXJlCi0gKiBzdXBwb3J0ZWQuIEhlcmUgYSBwc3VlZG8gcGFsZXR0ZSBpcyBjcmVhdGVkIHdoaWNoIHdlIHN0b3JlIHRoZSB2YWx1ZSBpbgorICogc3VwcG9ydGVkLiBIZXJlIGEgcHNldWRvIHBhbGV0dGUgaXMgY3JlYXRlZCB3aGljaCB3ZSBzdG9yZSB0aGUgdmFsdWUgaW4KICAqIHBzZXVkb19wYWxldHRlIGluIHN0cnVjdCBmYl9pbmZvLiBGb3IgcHNldWRvY29sb3IgbW9kZSB3ZSBoYXZlIGEgbGltaXRlZAogICogY29sb3IgcGFsZXR0ZS4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9nYmVmYi5jIGIvZHJpdmVycy92aWRlby9nYmVmYi5jCmluZGV4IDkzMzg5OWQuLjdlN2I3YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vZ2JlZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL2diZWZiLmMKQEAgLTcyMSw3ICs3MjEsNyBAQAogCiAJICAgVGlsZXMgaGF2ZSB0aGUgYWR2YW50YWdlIHRoYXQgdGhleSBjYW4gYmUgYWxsb2NhdGVkIGluZGl2aWR1YWxseSBpbgogCSAgIG1lbW9yeS4gSG93ZXZlciwgdGhpcyBtYXBwaW5nIGlzIG5vdCBsaW5lYXIgYXQgYWxsLCB3aGljaCBpcyBub3QKLQkgICByZWFsbHkgY29udmllbmllbnQuIEluIG9yZGVyIHRvIHN1cHBvcnQgbGluZWFyIGFkZHJlc3NpbmcsIHRoZSBHQkUKKwkgICByZWFsbHkgY29udmVuaWVudC4gSW4gb3JkZXIgdG8gc3VwcG9ydCBsaW5lYXIgYWRkcmVzc2luZywgdGhlIEdCRQogCSAgIERNQSBoYXJkd2FyZSBpcyBmb29sZWQgaW50byB0aGlua2luZyB0aGUgc2NyZWVuIGlzIG9ubHkgb25lIHRpbGUKIAkgICBsYXJnZSBhbmQgYnV0IGhhcyBhIGdyZWF0ZXIgaGVpZ2h0LCBzbyB0aGF0IHRoZSBETUEgdHJhbnNmZXIgY292ZXJzCiAJICAgdGhlIHNhbWUgcmVnaW9uLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9nZW9kZS9seGZiLmggYi9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaAppbmRleCBiZThjY2I0Li5jZmNkODA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaAorKysgYi9kcml2ZXJzL3ZpZGVvL2dlb2RlL2x4ZmIuaApAQCAtMTE3LDcgKzExNyw3IEBACiB9OwogCiAjZGVmaW5lIEdQX0JMVF9TVEFUVVNfQ0UJCSgxIDw8IDQpCS8qIGNtZCBidWYgZW1wdHkgKi8KLSNkZWZpbmUgR1BfQkxUX1NUQVRVU19QQgkJKDEgPDwgMCkJLyogcHJpbWF0aXZlIGJ1c3kgKi8KKyNkZWZpbmUgR1BfQkxUX1NUQVRVU19QQgkJKDEgPDwgMCkJLyogcHJpbWl0aXZlIGJ1c3kgKi8KIAogCiAvKiBEaXNwbGF5IENvbnRyb2xsZXIgcmVnaXN0ZXJzICh0YWJsZSA2LTQ3IGZyb20gdGhlIGRhdGEgYm9vaykgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vaTgxMC9pODEwX2FjY2VsLmMgYi9kcml2ZXJzL3ZpZGVvL2k4MTAvaTgxMF9hY2NlbC5jCmluZGV4IGY1YmVkZWUuLjc2NzJkMmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vaTgxMC9pODEwX2FjY2VsLmMKKysrIGIvZHJpdmVycy92aWRlby9pODEwL2k4MTBfYWNjZWwuYwpAQCAtMTEyLDcgKzExMiw3IEBACiAgKiBAcGFyOiBwb2ludGVyIHRvIGk4MTBmYl9wYXIgc3RydWN0dXJlCiAgKgogICogREVTQ1JJUFRJT046Ci0gKiBDaGVja3Mvd2FpdHMgZm9yIHN1ZmZpY2VudCBzcGFjZSBpbiByaW5nYnVmZmVyIG9mIHNpemUKKyAqIENoZWNrcy93YWl0cyBmb3Igc3VmZmljaWVudCBzcGFjZSBpbiByaW5nYnVmZmVyIG9mIHNpemUKICAqIHNwYWNlLiAgUmV0dXJucyB0aGUgdGFpbCBvZiB0aGUgYnVmZmVyCiAgKi8gCiBzdGF0aWMgaW5saW5lIHUzMiBiZWdpbl9pcmluZyhzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIHNwYWNlKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBPdmVybGF5RGV2aWNlLmMgYi9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYwppbmRleCBhOGM5NzEzLi4wYWVlYWExIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYworKysgYi9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwME92ZXJsYXlEZXZpY2UuYwpAQCAtNDE3LDcgKzQxNyw3IEBACiAJLyoqKioqKioqKioqKioqKioqIEhvcml6b250YWwgZGVjaW1hdGlvbi9zY2FsaW5nICoqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAogCS8qCi0JICogTm93IHdlIGhhbmRsZSB0aGUgaG9yaXpvbnRhbCBjYXNlLCB0aGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJpc29uIG9mCisJICogTm93IHdlIGhhbmRsZSB0aGUgaG9yaXpvbnRhbCBjYXNlLCB0aGlzIGlzIGEgc2ltcGxpZmllZCB2ZXJzaW9uIG9mCiAJICogdGhlIHZlcnRpY2FsIGNhc2UgaW4gdGhhdCB3ZSBkZWNpbWF0ZSBieSBmYWN0b3JzIG9mIDIuICBhcyB3ZSBhcmUKIAkgKiB3b3JraW5nIGluIHdvcmRzIHdlIHNob3VsZCBhbHdheXMgYmUgYWJsZSB0byBkZWNpbWF0ZSBieSB0aGVzZQogCSAqIGZhY3RvcnMuICBhcyB3ZSBhbHdheXMgaGF2ZSB0byBoYXZlIGEgYnVmZmVyIHdoaWNoIGlzIGFsaWduZWQgdG8gYQpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBSZWcuaCBiL2RyaXZlcnMvdmlkZW8va3lyby9TVEc0MDAwUmVnLmgKaW5kZXggMjQ0NTQ5ZS4uNWQ2MjY5OCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9reXJvL1NURzQwMDBSZWcuaAorKysgYi9kcml2ZXJzL3ZpZGVvL2t5cm8vU1RHNDAwMFJlZy5oCkBAIC0xNiw3ICsxNiw3IEBACiAKIC8qCiAgKiBNYWNyb3MgdGhhdCBhY2Nlc3MgbWVtb3J5IG1hcHBlZCBjYXJkIHJlZ2lzdGVycyBpbiBQQ0kgc3BhY2UKLSAqIEFkZCBhbiBhcHByb3ByYWl0ZSBzZWN0aW9uIGZvciB5b3VyIE9TIG9yIHByb2Nlc3NvciBhcmNoaXRlY3R1cmUuCisgKiBBZGQgYW4gYXBwcm9wcmlhdGUgc2VjdGlvbiBmb3IgeW91ciBPUyBvciBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlLgogICovCiAjaWYgZGVmaW5lZChfX0tFUk5FTF9fKQogI2luY2x1ZGUgPGFzbS9wYWdlLmg+CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9EQUMxMDY0LmggYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9EQUMxMDY0LmgKaW5kZXggYzZlZDc4MC4uMWU2ZTQ1YiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfREFDMTA2NC5oCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX0RBQzEwNjQuaApAQCAtNDYsNyArNDYsNyBAQAogI2RlZmluZSAgICAgIE0xMDY0X1hEVklDTEtDVFJMX0RWSUxPT1BDVEwgICAgICAgMHgzMAogCS8qIENSVEMyIHBpeGVsIGNsb2NrIGFsbG93ZWQgdG8oMCkvYmxvY2tlZCBmcm9tKDEpIGRyaXZpbmcgQ1JUQzIgKi8KICNkZWZpbmUgICAgICBNMTA2NF9YRFZJQ0xLQ1RSTF9DMkRWSUNMS0VOICAgICAgIDB4NDAKLQkvKiBQMVBMTCBsb29wIGZpbHRlciBiYW5kd2l0aCBzZWxlY3Rpb24gKi8KKwkvKiBQMVBMTCBsb29wIGZpbHRlciBiYW5kd2lkdGggc2VsZWN0aW9uICovCiAjZGVmaW5lICAgICAgTTEwNjRfWERWSUNMS0NUUkxfUDFMT09QQldEVENUTCAgICAweDgwCiAjZGVmaW5lIE0xMDY0X1hDVVJDT0wwUkVECTB4MDgKICNkZWZpbmUgTTEwNjRfWENVUkNPTDBHUkVFTgkweDA5CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9UaTMwMjYuYyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jCmluZGV4IDgzNWFhYWEuLjlhNDRjZWMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX1RpMzAyNi5jCkBAIC0zODcsNyArMzg3LDcgQEAKIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YTUlTQ0NUUkxdID0gVFZQMzAyNl9YTUlTQ0NUUkxfREFDX1BVUCB8IFRWUDMwMjZfWE1JU0NDVFJMX0RBQ184QklUIHwgVFZQMzAyNl9YTUlTQ0NUUkxfUFNFTF9ESVMgfCBUVlAzMDI2X1hNSVNDQ1RSTF9QU0VMX0xPVzsKIAkJCWJyZWFrOwogCQljYXNlIDE2OgotCQkJLyogWExBVENIQ1RSTCBzaG91bGQgYmUgXzRfMSAvIF8yXzEuLi4gV2h5IGlzIG5vdD8gKF8yXzEgaXMgdXNlZCBldmVyeXRpbWUpICovCisJCQkvKiBYTEFUQ0hDVFJMIHNob3VsZCBiZSBfNF8xIC8gXzJfMS4uLiBXaHkgaXMgbm90PyAoXzJfMSBpcyB1c2VkIGV2ZXJ5IHRpbWUpICovCiAJCQlody0+REFDcmVnW1BPUzMwMjZfWFRSVUVDT0xPUkNUUkxdID0gKG1pbmZvLT5mYmNvbi52YXIuZ3JlZW4ubGVuZ3RoID09IDUpID8gKFRWUDMwMjZfWFRSVUVDT0xPUkNUUkxfRElSRUNUQ09MT1IgfCBUVlAzMDI2X1hUUlVFQ09MT1JDVFJMX09SR0JfMTU1NSkgOiAoVFZQMzAyNl9YVFJVRUNPTE9SQ1RSTF9ESVJFQ1RDT0xPUiB8IFRWUDMwMjZfWFRSVUVDT0xPUkNUUkxfUkdCXzU2NSk7CiAJCQlody0+REFDcmVnW1BPUzMwMjZfWE1VWENUUkxdID0gbXV4Y3RybCB8IFRWUDMwMjZfWE1VWENUUkxfUElYRUxfMTZCSVQ7CiAJCQlody0+REFDcmVnW1BPUzMwMjZfWENMS0NUUkxdID0gVFZQMzAyNl9YQ0xLQ1RSTF9TUkNfUExMIHwgVFZQMzAyNl9YQ0xLQ1RSTF9ESVYyOwpAQCAtMzk5LDcgKzM5OSw3IEBACiAJCQlody0+REFDcmVnW1BPUzMwMjZfWENMS0NUUkxdID0gVFZQMzAyNl9YQ0xLQ1RSTF9TUkNfUExMIHwgVFZQMzAyNl9YQ0xLQ1RSTF9ESVY0OwogCQkJYnJlYWs7CiAJCWNhc2UgMzI6Ci0JCQkvKiBYTEFUQ0hDVFJMIHNob3VsZCBiZSBfMl8xIC8gXzFfMS4uLiBXaHkgaXMgbm90PyAoXzJfMSBpcyB1c2VkIGV2ZXJ5dGltZSkgKi8KKwkJCS8qIFhMQVRDSENUUkwgc2hvdWxkIGJlIF8yXzEgLyBfMV8xLi4uIFdoeSBpcyBub3Q/IChfMl8xIGlzIHVzZWQgZXZlcnkgdGltZSkgKi8KIAkJCWh3LT5EQUNyZWdbUE9TMzAyNl9YTVVYQ1RSTF0gPSBtdXhjdHJsIHwgVFZQMzAyNl9YTVVYQ1RSTF9QSVhFTF8zMkJJVDsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5jIGIvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5jCmluZGV4IDVjZTZmYTYuLjQ0YmY4ZDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuYworKysgYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmMKQEAgLTYyMSw3ICs2MjEsNyBAQAogCQl2YXItPnlvZmZzZXQgPSB2YXItPnlyZXNfdmlydHVhbCAtIHZhci0+eXJlczsKIAogCWlmIChicHAgPT0gMTYgJiYgdmFyLT5ncmVlbi5sZW5ndGggPT0gNSkgewotCQlicHAtLTsgLyogYW4gYXJ0aWZpY2FsIHZhbHVlIC0gMTUgKi8KKwkJYnBwLS07IC8qIGFuIGFydGlmaWNpYWwgdmFsdWUgLSAxNSAqLwogCX0KIAogCWZvciAocmdidCA9IHRhYmxlOyByZ2J0LT5icHAgPCBicHA7IHJnYnQrKyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmggYi9kcml2ZXJzL3ZpZGVvL21hdHJveC9tYXRyb3hmYl9iYXNlLmgKaW5kZXggZjk2YTQ3MS4uMTFlZDU3YiAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9tYXRyb3gvbWF0cm94ZmJfYmFzZS5oCisrKyBiL2RyaXZlcnMvdmlkZW8vbWF0cm94L21hdHJveGZiX2Jhc2UuaApAQCAtMTIsNyArMTIsNyBAQAogI3VuZGVmIE1BVFJPWEZCX0RFQlVHCiAKIC8qIGhlYXZ5IGRlYnVnZ2luZzogKi8KLS8qIC0tIGxvZ3MgcHV0Y1tzXSwgc28gZXZlcnl0aW1lIGEgY2hhciBpcyBkaXNwbGF5ZWQsIGl0J3MgbG9nZ2VkICovCisvKiAtLSBsb2dzIHB1dGNbc10sIHNvIGV2ZXJ5IHRpbWUgYSBjaGFyIGlzIGRpc3BsYXllZCwgaXQncyBsb2dnZWQgKi8KICN1bmRlZiBNQVRST1hGQl9ERUJVR19IRUFWWQogCiAvKiBUaGlzIG9uZSBfY291bGRfIGNhdXNlIGluZmluaXRlIGxvb3BzICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL251YzkwMGZiLmggYi9kcml2ZXJzL3ZpZGVvL251YzkwMGZiLmgKaW5kZXggNmMyM2FhMy4uYmM3YzkzMCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9udWM5MDBmYi5oCisrKyBiL2RyaXZlcnMvdmlkZW8vbnVjOTAwZmIuaApAQCAtOCw3ICs4LDcgQEAKICAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogICoKLSAqICAgQXV0aGVyOgorICogICBBdXRob3I6CiAgKiAgICAgICAgV2FuZyBRaWFuZyhydXJhbGl0eS5saW51eEBnbWFpbC5jb20pICAyMDA5LzEyLzE2CiAgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9vbWFwL0tjb25maWcgYi9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZwppbmRleCAxNWU3ZjE5Li4xOTZmYTJlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZworKysgYi9kcml2ZXJzL3ZpZGVvL29tYXAvS2NvbmZpZwpAQCAtNjQsNyArNjQsNyBAQAogCWRlcGVuZHMgb24gRkJfT01BUCAmJiBGQl9PTUFQX0xDRENfRVhURVJOQUwKIAloZWxwCiAJICBTYXkgWSBoZXJlLCBpZiB5b3VyIHVzZXItc3BhY2UgYXBwbGljYXRpb25zIGFyZSBjYXBhYmxlIG9mCi0JICBub3RpZnlpbmcgdGhlIGZyYW1lIGJ1ZmZlciBkcml2ZXIgd2hlbiBhIGNoYW5nZSBoYXMgb2NjdXJlZCBpbgorCSAgbm90aWZ5aW5nIHRoZSBmcmFtZSBidWZmZXIgZHJpdmVyIHdoZW4gYSBjaGFuZ2UgaGFzIG9jY3VycmVkIGluCiAJICB0aGUgZnJhbWUgYnVmZmVyIGNvbnRlbnQgYW5kIHRodXMgYSByZWxvYWQgb2YgdGhlIGltYWdlIGRhdGEgdG8KIAkgIHRoZSBleHRlcm5hbCBmcmFtZSBidWZmZXIgaXMgcmVxdWlyZWQuIElmIHVuc3VyZSwgc2F5IE4uCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vb21hcDIvZHNzL2hkbWkuYyBiL2RyaXZlcnMvdmlkZW8vb21hcDIvZHNzL2hkbWkuYwppbmRleCAwZDQ0ZjA3Li5hOTgxZGVmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL29tYXAyL2Rzcy9oZG1pLmMKKysrIGIvZHJpdmVycy92aWRlby9vbWFwMi9kc3MvaGRtaS5jCkBAIC01ODcsNyArNTg3LDcgQEAKIAlzdHJ1Y3QgaGRtaV9jbSBjbTsKIAlzdHJ1Y3Qgb21hcF92aWRlb190aW1pbmdzIGVkaWRfdGltaW5nczsKIAotCS8qIHNlYWNoIGJsb2NrIDAsIHRoZXJlIGFyZSA0IERURHMgYXJyYW5nZWQgaW4gcHJpb3JpdHkgb3JkZXIgKi8KKwkvKiBzZWFyY2ggYmxvY2sgMCwgdGhlcmUgYXJlIDQgRFREcyBhcnJhbmdlZCBpbiBwcmlvcml0eSBvcmRlciAqLwogCWZvciAoY291bnQgPSAwOyBjb3VudCA8IEVESURfU0laRV9CTE9DSzBfVElNSU5HX0RFU0NSSVBUT1I7IGNvdW50KyspIHsKIAkJY3VycmVudF9kZXNjcmlwdG9yX2FkZHJzID0KIAkJCUVESURfREVTQ1JJUFRPUl9CTE9DSzBfQUREUkVTUyArCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3B4YTN4eC1nY3UuYyBiL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jCmluZGV4IGNmNGJlYjkuLjAyODNjNzAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jCisrKyBiL2RyaXZlcnMvdmlkZW8vcHhhM3h4LWdjdS5jCkBAIC0yNSw3ICsyNSw3IEBACiAKIC8qCiAgKiBXQVJOSU5HOiBUaGlzIGNvbnRyb2xsZXIgaXMgYXR0YWNoZWQgdG8gU3lzdGVtIEJ1cyAyIG9mIHRoZSBQWEEgd2hpY2gKLSAqIG5lZWRzIGl0cyBhcmJpdGVyIHRvIGJlIGVuYWJsZWQgZXhwbGljdGx5IChDS0VOQiAmIDE8PDkpLgorICogbmVlZHMgaXRzIGFyYml0ZXIgdG8gYmUgZW5hYmxlZCBleHBsaWNpdGx5IChDS0VOQiAmIDE8PDkpLgogICogVGhlcmUgaXMgY3VycmVudGx5IG5vIHdheSB0byBkbyB0aGlzIGZyb20gTGludXgsIHNvIHlvdSBuZWVkIHRvIHRlYWNoCiAgKiB5b3VyIGJvb3Rsb2FkZXIgZm9yIG5vdy4KICAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmIuaCBiL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiLmgKaW5kZXggZTRjM2YyMS4uNGU5NDkwYyAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby9zYXZhZ2Uvc2F2YWdlZmIuaAorKysgYi9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYi5oCkBAIC0xNTMsNyArMTUzLDcgQEAKIAl1bnNpZ25lZCBjaGFyIENSVENbMjVdOyAgICAgICAvKiBDcnRjIENvbnRyb2xsZXIgKi8KIAl1bnNpZ25lZCBjaGFyIFNlcXVlbmNlcls1XTsgICAvKiBWaWRlbyBTZXF1ZW5jZXIgKi8KIAl1bnNpZ25lZCBjaGFyIEdyYXBoaWNzWzldOyAgICAvKiBWaWRlbyBHcmFwaGljcyAqLwotCXVuc2lnbmVkIGNoYXIgQXR0cmlidXRlWzIxXTsgIC8qIFZpZGVvIEF0cmlidXRlICovCisJdW5zaWduZWQgY2hhciBBdHRyaWJ1dGVbMjFdOyAgLyogVmlkZW8gQXR0cmlidXRlICovCiAKIAl1bnNpZ25lZCBpbnQgbW9kZSwgcmVmcmVzaDsKIAl1bnNpZ25lZCBjaGFyIFNSMDgsIFNSMEUsIFNSMEY7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3NhdmFnZS9zYXZhZ2VmYl9kcml2ZXIuYyBiL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiX2RyaXZlci5jCmluZGV4IDQ4NzkxMWUuLmEyZGMxYTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiX2RyaXZlci5jCisrKyBiL2RyaXZlcnMvdmlkZW8vc2F2YWdlL3NhdmFnZWZiX2RyaXZlci5jCkBAIC0zODUsNyArMzg1LDcgQEAKIAlCQ0lfU0VORChHbG9iYWxCaXRtYXBEZXNjcmlwdG9yKTsKIAogCS8qCi0JICogSSBkb24ndCBrbm93IHdoeSwgc2VuZGluZyB0aGlzIHR3aWNlIGZpeGVzIHRoZSBpbnRpYWwgYmxhY2sgc2NyZWVuLAorCSAqIEkgZG9uJ3Qga25vdyB3aHksIHNlbmRpbmcgdGhpcyB0d2ljZSBmaXhlcyB0aGUgaW5pdGlhbCBibGFjayBzY3JlZW4sCiAJICogcHJldmVudHMgWCBmcm9tIGNyYXNoaW5nIGF0IGxlYXN0IGluIFRvc2hpYmEgbGFwdG9wcyB3aXRoIFNhdmFnZUlYLgogCSAqIC0tVG9ueQogCSAqLwpAQCAtMjIxMSw3ICsyMjExLDcgQEAKIAkJZ290byBmYWlsZWRfbW1pbzsKIAogCXZpZGVvX2xlbiA9IHNhdmFnZV9pbml0X2h3KHBhcik7Ci0JLyogRklYTUU6IGNhbnQgYmUgbmVnYXRpdmUgKi8KKwkvKiBGSVhNRTogY2FuJ3QgYmUgbmVnYXRpdmUgKi8KIAlpZiAodmlkZW9fbGVuIDwgMCkgewogCQllcnIgPSB2aWRlb19sZW47CiAJCWdvdG8gZmFpbGVkX21taW87CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3NtNTAxZmIuYyBiL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jCmluZGV4IDQ2ZDFhNjQuLjU2ZWY2YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vc201MDFmYi5jCkBAIC0yNjUsNyArMjY1LDcgQEAKIAlyZXR1cm4gKHVuc2lnbmVkIGxvbmcpbnVtZXJhdG9yOwogfQogCi0vKiBzbTUwMWZiX2h6X3RvX3BzIGlzIGlkZW50aWNhbCB0byB0aGUgb3Bvc2l0ZSB0cmFuc2Zvcm0gKi8KKy8qIHNtNTAxZmJfaHpfdG9fcHMgaXMgaWRlbnRpY2FsIHRvIHRoZSBvcHBvc2l0ZSB0cmFuc2Zvcm0gKi8KIAogI2RlZmluZSBzbTUwMWZiX2h6X3RvX3BzKHgpIHNtNTAxZmJfcHNfdG9faHooeCkKIApAQCAtMTcxOSw3ICsxNzE5LDcgQEAKIAkgICAgICAgKGhlYWQgPT0gSEVBRF9DUlQpID8gJnNtNTAxZmJfb3BzX2NydCA6ICZzbTUwMWZiX29wc19wbmwsCiAJICAgICAgIHNpemVvZihzdHJ1Y3QgZmJfb3BzKSk7CiAKLQkvKiB1cGRhdGUgb3BzIGRlcGVuZGFudCBvbiB3aGF0IHdlJ3ZlIGJlZW4gcGFzc2VkICovCisJLyogdXBkYXRlIG9wcyBkZXBlbmRlbnQgb24gd2hhdCB3ZSd2ZSBiZWVuIHBhc3NlZCAqLwogCiAJaWYgKChwZC0+ZmxhZ3MgJiBTTTUwMUZCX0ZMQUdfVVNFX0hXQ1VSU09SKSA9PSAwKQogCQlwYXItPm9wcy5mYl9jdXJzb3IgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby9zc3RmYi5jIGIvZHJpdmVycy92aWRlby9zc3RmYi5jCmluZGV4IDJhYjcwNDEuLjIzMDFjMjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc3N0ZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3NzdGZiLmMKQEAgLTIyMSw3ICsyMjEsNyBAQAogCXdoaWxlKDEpIHsKIAkJaWYgKF9fc3N0X3JlYWQodmJhc2UsIFNUQVRVUykgJiBTVEFUVVNfRkJJX0JVU1kpIHsKIAkJCWZfZGRkcHJpbnRrKCJzdGF0dXM6IGJ1c3lcbiIpOwotLyogRklYTUUgYmFzaWNhbHksIHRoaXMgaXMgYSBidXN5IHdhaXQuIG1heWJlIG5vdCB0aGF0IGdvb2QuIG9oIHdlbGw7CisvKiBGSVhNRSBiYXNpY2FsbHksIHRoaXMgaXMgYSBidXN5IHdhaXQuIG1heWJlIG5vdCB0aGF0IGdvb2QuIG9oIHdlbGw7CiAgKiB0aGlzIGlzIGEgc21hbGwgbG9vcCBhZnRlciBhbGwuCiAgKiBPciBtYXliZSB3ZSBzaG91bGQgdXNlIG1kZWxheSgpIG9yIHVkZWxheSgpIGhlcmUgaW5zdGVhZCA/ICovCiAJCQljb3VudCA9IDA7CkBAIC01MDEsNyArNTAxLDcgQEAKIAl9CiAKIAlpZiAoSVNfVk9PRE9PMihwYXIpKSB7Ci0JCS8qIHZvb2RvbzIgaGFzIDMyIHBpeGVsIHdpZGUgdGlsZXMgLCBCVVQgc3RhbmdlIHRoaW5ncworCQkvKiB2b29kb28yIGhhcyAzMiBwaXhlbCB3aWRlIHRpbGVzICwgQlVUIHN0cmFuZ2UgdGhpbmdzCiAJCSAgIGhhcHBlbiB3aXRoIG9kZCBudW1iZXIgb2YgdGlsZXMgKi8KIAkJcGFyLT50aWxlc19pbl9YID0gKGluZm8tPnZhci54cmVzICsgNjMgKSAvIDY0ICogMjsKIAl9IGVsc2UgewpAQCAtOTIwLDExICs5MjAsMTEgQEAKICAqIHdlIGdldCB0aGUgMXN0IGJ5dGUgKE0gdmFsdWUpIG9mIHByZXNldCBmMSxmNyBhbmQgZkIKICAqIHdoeSB0aG9zZSAzID8gbW1taC4uLiBmb3Igbm93LCBpJ2xsIGRvIGl0IHRoZSBnbGlkZSB3YXkuLi4KICAqIGFuZCBhc2sgcXVlc3Rpb25zIGxhdGVyLiBhbnl3YXksIGl0IHNlZW1zIHRoYXQgYWxsIHRoZSBmcmVxIHJlZ2lzdGVycyBhcmUKLSAqIHJlYWx5IGF0IHRoZWlyIGRlZmF1bHQgc3RhdGUgKGNmIHNwZWNzKSBzbyBpIGFzayBhZ2Fpbiwgd2h5IHRob3NlIDMgcmVncyA/CisgKiByZWFsbHkgYXQgdGhlaXIgZGVmYXVsdCBzdGF0ZSAoY2Ygc3BlY3MpIHNvIGkgYXNrIGFnYWluLCB3aHkgdGhvc2UgMyByZWdzID8KICAqIG1tbW1oLi4gaXQgc2VlbXMgdGhhdCdzIG11Y2ggbW9yZSB1Z2x5IHRoYW4gaSB0aG91Z2h0LiB3ZSB1c2UgZjAgYW5kIGZBIGZvcgogICogcGxsIHByb2dyYW1taW5nLCBzbyBpbiBmYWN0LCB3ZSAqaG9wZSogdGhhdCB0aGUgZjEsIGY3ICYgZkIgd29uJ3QgYmUKICAqIHRvdWNoZWQuLi4KLSAqIGlzIGl0IHJlYWx5IHNhZmUgPyBob3cgY2FuIGkgcmVzZXQgdGhpcyByYW1kYWMgPyBnZWVlLi4uCisgKiBpcyBpdCByZWFsbHkgc2FmZSA/IGhvdyBjYW4gaSByZXNldCB0aGlzIHJhbWRhYyA/IGdlZWUuLi4KICAqLwogc3RhdGljIGludCBfX2RldmluaXQgc3N0X2RldGVjdF9pY3Moc3RydWN0IGZiX2luZm8gKmluZm8pCiB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3N0aWNvcmUuaCBiL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oCmluZGV4IDdmZTViZTQuLmFkZGY3YjYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oCisrKyBiL2RyaXZlcnMvdmlkZW8vc3RpY29yZS5oCkBAIC03OSw3ICs3OSw3IEBACiAJIHU4IGN1cnJfbW9uOwkJCS8qIGN1cnJlbnQgbW9uaXRvciBjb25maWd1cmVkICovCiAJIHU4IGZyaWVuZGx5X2Jvb3Q7CQkvKiBpbiBmcmllbmRseSBib290IG1vZGUgKi8KIAlzMTYgcG93ZXI7CQkJLyogcG93ZXIgY2FsY3VsYXRpb24gKGluIFdhdHRzKSAqLwotCXMzMiBmcmVxX3JlZjsJCQkvKiBmcmVxdWVuY3kgcmVmcmVuY2UgKi8KKwlzMzIgZnJlcV9yZWY7CQkJLyogZnJlcXVlbmN5IHJlZmVyZW5jZSAqLwogCXUzMiBzdGlfbWVtX2FkZHI7CQkvKiBwb2ludGVyIHRvIGdsb2JhbCBzdGkgbWVtb3J5IChzaXplPXN0aV9tZW1fcmVxdWVzdCkgKi8KIAl1MzIgZnV0dXJlX3B0cjsgCQkvKiBwb2ludGVyIHRvIGZ1dHVyZSBkYXRhICovCiB9OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby90ZGZ4ZmIuYyBiL2RyaXZlcnMvdmlkZW8vdGRmeGZiLmMKaW5kZXggM2VlNWU2My4uYTk5Yjk5NCAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby90ZGZ4ZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3RkZnhmYi5jCkBAIC04NzcsMTIgKzg3NywxMiBAQAogCWVsc2UKIAkJdGRmeF9yb3AgPSBUREZYX1JPUF9YT1I7CiAKLQkvKiBhc3VtZSBhbHdheXMgcmVjdC0+aGVpZ2h0IDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgcmVjdC0+aGVpZ2h0IDwgNDA5NiAqLwogCWlmIChkeSArIHJlY3QtPmhlaWdodCA+IDQwOTUpIHsKIAkJZHN0YmFzZSA9IHN0cmlkZSAqIGR5OwogCQlkeSA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyByZWN0LT53aWR0aCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIHJlY3QtPndpZHRoIDwgNDA5NiAqLwogCWlmIChkeCArIHJlY3QtPndpZHRoID4gNDA5NSkgewogCQlkc3RiYXNlICs9IGR4ICogYnBwID4+IDM7CiAJCWR4ID0gMDsKQEAgLTkxNSwyMiArOTE1LDIyIEBACiAJdTMyIGRzdGJhc2UgPSAwOwogCXUzMiBzcmNiYXNlID0gMDsKIAotCS8qIGFzdW1lIGFsd2F5cyBhcmVhLT5oZWlnaHQgPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyBhcmVhLT5oZWlnaHQgPCA0MDk2ICovCiAJaWYgKHN5ICsgYXJlYS0+aGVpZ2h0ID4gNDA5NSkgewogCQlzcmNiYXNlID0gc3RyaWRlICogc3k7CiAJCXN5ID0gMDsKIAl9Ci0JLyogYXN1bWUgYWx3YXlzIGFyZWEtPndpZHRoIDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgYXJlYS0+d2lkdGggPCA0MDk2ICovCiAJaWYgKHN4ICsgYXJlYS0+d2lkdGggPiA0MDk1KSB7CiAJCXNyY2Jhc2UgKz0gc3ggKiBicHAgPj4gMzsKIAkJc3ggPSAwOwogCX0KLQkvKiBhc3VtZSBhbHdheXMgYXJlYS0+aGVpZ2h0IDwgNDA5NiAqLworCS8qIGFzc3VtZSBhbHdheXMgYXJlYS0+aGVpZ2h0IDwgNDA5NiAqLwogCWlmIChkeSArIGFyZWEtPmhlaWdodCA+IDQwOTUpIHsKIAkJZHN0YmFzZSA9IHN0cmlkZSAqIGR5OwogCQlkeSA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyBhcmVhLT53aWR0aCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIGFyZWEtPndpZHRoIDwgNDA5NiAqLwogCWlmIChkeCArIGFyZWEtPndpZHRoID4gNDA5NSkgewogCQlkc3RiYXNlICs9IGR4ICogYnBwID4+IDM7CiAJCWR4ID0gMDsKQEAgLTEwMDMsMTIgKzEwMDMsMTIgQEAKICNlbHNlCiAJc3JjZm10ID0gMHg0MDAwMDA7CiAjZW5kaWYKLQkvKiBhc3VtZSBhbHdheXMgaW1hZ2UtPmhlaWdodCA8IDQwOTYgKi8KKwkvKiBhc3N1bWUgYWx3YXlzIGltYWdlLT5oZWlnaHQgPCA0MDk2ICovCiAJaWYgKGR5ICsgaW1hZ2UtPmhlaWdodCA+IDQwOTUpIHsKIAkJZHN0YmFzZSA9IHN0cmlkZSAqIGR5OwogCQlkeSA9IDA7CiAJfQotCS8qIGFzdW1lIGFsd2F5cyBpbWFnZS0+d2lkdGggPCA0MDk2ICovCisJLyogYXNzdW1lIGFsd2F5cyBpbWFnZS0+d2lkdGggPCA0MDk2ICovCiAJaWYgKGR4ICsgaW1hZ2UtPndpZHRoID4gNDA5NSkgewogCQlkc3RiYXNlICs9IGR4ICogYnBwID4+IDM7CiAJCWR4ID0gMDsKQEAgLTExMjQsNyArMTEyNCw3IEBACiAJCSAqIGxvd2VyIGhhbGYgKGxlYXN0IHNpZ25pZmljYW50IDY0IGJpdHMpIG9mIGEgMTI4IGJpdCB3b3JkCiAJCSAqIGFuZCBwYXR0ZXJuIDEgdGhlIHVwcGVyIGhhbGYuIElmIHlvdSBleGFtaW5lIHRoZSBkYXRhIG9mCiAJCSAqIHRoZSBjdXJzb3IgaW1hZ2UgdGhlIGdyYXBoaWNzIGNhcmQgdXNlcyB0aGVuIGZyb20gdGhlCi0JCSAqIGJlZ2luaW5nIHlvdSBzZWUgbGluZSBvbmUgb2YgcGF0dGVybiAwLCBsaW5lIG9uZSBvZgorCQkgKiBiZWdpbm5pbmcgeW91IHNlZSBsaW5lIG9uZSBvZiBwYXR0ZXJuIDAsIGxpbmUgb25lIG9mCiAJCSAqIHBhdHRlcm4gMSwgbGluZSB0d28gb2YgcGF0dGVybiAwLCBsaW5lIHR3byBvZiBwYXR0ZXJuIDEsCiAJCSAqIGV0YyBldGMuIFRoZSBsaW5lYXIgc3RyaWRlIGZvciB0aGUgY3Vyc29yIGlzIGFsd2F5cyAxNiBieXRlcwogCQkgKiAoMTI4IGJpdHMpIHdoaWNoIGlzIHRoZSBtYXhpbXVtIGN1cnNvciB3aWR0aCB0aW1lcyB0d28gZm9yCmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3RtaW9mYi5jIGIvZHJpdmVycy92aWRlby90bWlvZmIuYwppbmRleCA5NzEwYmY4Li4wYzM0MWQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3RtaW9mYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdG1pb2ZiLmMKQEAgLTM1OSw3ICszNTksNyBAQAogewogCXN0cnVjdCB0bWlvZmJfcGFyICpwYXIgPSBpbmZvLT5wYXI7CiAJLyoKLQkgKiBUaGlzIGNvZGUgY2FuIGJlIGNhbGxlZCB3aGl0aCBpbnRlcnJ1cHRzIGRpc2FibGVkLgorCSAqIFRoaXMgY29kZSBjYW4gYmUgY2FsbGVkIHdpdGggaW50ZXJydXB0cyBkaXNhYmxlZC4KIAkgKiBTbyBpbnN0ZWFkIG9mIHJlbGF5aW5nIG9uIGlycSB0byB0cmlnZ2VyIHRoZSBldmVudCwKIAkgKiBwb2xsIHRoZSBzdGF0ZSB0aWxsIHRoZSBuZWNlc3NhcnkgY29tbWFuZCBpcyBleGVjdXRlZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdWRsZmIuYyBiL2RyaXZlcnMvdmlkZW8vdWRsZmIuYwppbmRleCAyYzgzNjRlLi42ODA0MWQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3VkbGZiLmMKKysrIGIvZHJpdmVycy92aWRlby91ZGxmYi5jCkBAIC03NjksNyArNzY5LDcgQEAKIAogCQkvKgogCQkgKiBJZiB3ZSBoYXZlIGEgZGFtYWdlLWF3YXJlIGNsaWVudCwgdHVybiBmYl9kZWZpbyAib2ZmIgotCQkgKiBUbyBhdm9pZCBwZXJmIGltYWN0IG9mIHVuZWNlc3NhcnkgcGFnZSBmYXVsdCBoYW5kbGluZy4KKwkJICogVG8gYXZvaWQgcGVyZiBpbWFjdCBvZiB1bm5lY2Vzc2FyeSBwYWdlIGZhdWx0IGhhbmRsaW5nLgogCQkgKiBEb25lIGJ5IHJlc2V0dGluZyB0aGUgZGVsYXkgZm9yIHRoaXMgZmJfaW5mbyB0byBhIHZlcnkKIAkJICogbG9uZyBwZXJpb2QuIFBhZ2VzIHdpbGwgYmVjb21lIHdyaXRhYmxlIGFuZCBzdGF5IHRoYXQgd2F5LgogCQkgKiBSZXNldCB0byBub3JtYWwgdmFsdWUgd2hlbiBhbGwgY2xpZW50cyBoYXZlIGNsb3NlZCB0aGlzIGZiLgpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby92Z2ExNmZiLmMgYi9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYwppbmRleCAyOGNjYWI0Li41M2IyYzVhIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYworKysgYi9kcml2ZXJzL3ZpZGVvL3ZnYTE2ZmIuYwpAQCAtMTUyLDcgKzE1Miw3IEBACiB9CiAKIC8qIFNldCB0aGUgRW5hYmxlIFNldC9SZXNldCBSZWdpc3RlciBhbmQgcmV0dXJuIGl0cyBvbGQgdmFsdWUuICAKLSAgIFRoZSBjb2RlIGhlcmUgYWx3YXlzIHVzZXMgdmFsdWUgMHhmIGZvciB0aHNpIHJlZ2lzdGVyLiAqLworICAgVGhlIGNvZGUgaGVyZSBhbHdheXMgdXNlcyB2YWx1ZSAweGYgZm9yIHRoaXMgcmVnaXN0ZXIuICovCiBzdGF0aWMgaW5saW5lIGludCBzZXRzcihpbnQgc3IpCiB7CiAJaW50IG9sZHNyOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuYyBiL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmMKaW5kZXggZDA1Y2NiNi4uMzU0NThhNSAxMDA2NDQKLS0tIGEvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuYworKysgYi9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5jCkBAIC0xNzQsNyArMTc0LDcgQEAKIAl9CiAKIAkvKiBJZiBhZGp1c3QgR2FtbWEgdmFsdWUgaW4gU0FNTSwgZmlsbCBJR0ExLAotCSAgIElHQTIgR2FtbWEgdGFibGUgc2ltdWx0YW5vdXMuICovCisJICAgSUdBMiBHYW1tYSB0YWJsZSBzaW11bHRhbmVvdXMuICovCiAJLyogU3dpdGNoIHRvIElHQTIgR2FtbWEgVGFibGUgKi8KIAlpZiAoKGFjdGl2ZV9kZXZpY2VfYW1vdW50ID4gMSkgJiYKIAkJISgodmlhcGFyaW5mby0+Y2hpcF9pbmZvLT5nZnhfY2hpcF9uYW1lID09CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5oIGIvZHJpdmVycy92aWRlby92aWEvdmlhX3V0aWxpdHkuaAppbmRleCAxNjcwYmE4Li5mMjNiZTE3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFfdXRpbGl0eS5oCisrKyBiL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYV91dGlsaXR5LmgKQEAgLTIxLDcgKzIxLDcgQEAKICNpZm5kZWYgX19WSUFVVElMSVRZX0hfXwogI2RlZmluZSBfX1ZJQVVUSUxJVFlfSF9fCiAKLS8qIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBnZXQgaW5mb21hdGlvbiBhYm91dCBkZXZpY2UncyBzdGF0ZSAqLworLyogVGhlc2UgZnVuY3Rpb25zIGFyZSB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBhYm91dCBkZXZpY2UncyBzdGF0ZSAqLwogdm9pZCB2aWFmYl9nZXRfZGV2aWNlX3N1cHBvcnRfc3RhdGUodTMyICpzdXBwb3J0X3N0YXRlKTsKIHZvaWQgdmlhZmJfZ2V0X2RldmljZV9jb25uZWN0X3N0YXRlKHUzMiAqY29ubmVjdF9zdGF0ZSk7CiBib29sIHZpYWZiX2xjZF9nZXRfc3VwcG9ydF9leHBhbmRfc3RhdGUodTMyIHhyZXMsIHUzMiB5cmVzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYWZiZGV2LmMgYi9kcml2ZXJzL3ZpZGVvL3ZpYS92aWFmYmRldi5jCmluZGV4IGY1NTViODkuLmI2NDgxODkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdmlkZW8vdmlhL3ZpYWZiZGV2LmMKKysrIGIvZHJpdmVycy92aWRlby92aWEvdmlhZmJkZXYuYwpAQCAtMjAxOSw3ICsyMDE5LDcgQEAKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlwcmludGsoS0VSTl9JTkZPCi0gICAgICAgIlZJQSBHcmFwaGljcyBJbnRlcmdyYXRpb24gQ2hpcHNldCBmcmFtZWJ1ZmZlciAlZC4lZCBpbml0aWFsaXppbmdcbiIsCisgICAgICAgIlZJQSBHcmFwaGljcyBJbnRlZ3JhdGlvbiBDaGlwc2V0IGZyYW1lYnVmZmVyICVkLiVkIGluaXRpYWxpemluZ1xuIiwKIAkgICAgICAgVkVSU0lPTl9NQUpPUiwgVkVSU0lPTl9NSU5PUik7CiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJzL3ZpZGVvL3cxMDBmYi5jIGIvZHJpdmVycy92aWRlby93MTAwZmIuYwppbmRleCBkOGIxMmMzLi5jOGJlOGFmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3ZpZGVvL3cxMDBmYi5jCisrKyBiL2RyaXZlcnMvdmlkZW8vdzEwMGZiLmMKQEAgLTEzMDYsNyArMTMwNiw3IEBACiAJdW5pb24gZ3JhcGhpY192X2Rpc3BfdSBncmFwaGljX3ZfZGlzcDsKIAl1bmlvbiBjcnRjX3RvdGFsX3UgY3J0Y190b3RhbDsKIAotCS8qIHczMjAwIGRvZXNudCBsaWtlIHVuZGVmaW5lZCBiaXRzIGJlaW5nIHNldCBzbyB6ZXJvIHJlZ2lzdGVyIHZhbHVlcyBmaXJzdCAqLworCS8qIHczMjAwIGRvZXNuJ3QgbGlrZSB1bmRlZmluZWQgYml0cyBiZWluZyBzZXQgc28gemVybyByZWdpc3RlciB2YWx1ZXMgZmlyc3QgKi8KIAogCWFjdGl2ZV9oX2Rpc3AudmFsID0gMDsKIAlhY3RpdmVfaF9kaXNwLmYuYWN0aXZlX2hfc3RhcnQ9bW9kZS0+bGVmdF9tYXJnaW47CmRpZmYgLS1naXQgYS9kcml2ZXJzL3cxL21hc3RlcnMvb21hcF9oZHEuYyBiL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jCmluZGV4IDM4ZTk2YWIuLjVlZjM4NWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jCisrKyBiL2RyaXZlcnMvdzEvbWFzdGVycy9vbWFwX2hkcS5jCkBAIC01NDUsNyArNTQ1LDcgQEAKIAkJcmV0dXJuOwogCX0KIAotCS8qIFNlY29uZCB3cml0ZSwgZGF0YSB0cmFuc2ZlcmVkLiBSZWxlYXNlIHRoZSBtb2R1bGUgKi8KKwkvKiBTZWNvbmQgd3JpdGUsIGRhdGEgdHJhbnNmZXJyZWQuIFJlbGVhc2UgdGhlIG1vZHVsZSAqLwogCWlmIChoZHFfZGF0YS0+aW5pdF90cmFucyA+IDEpIHsKIAkJb21hcF9oZHFfcHV0KGhkcV9kYXRhKTsKIAkJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZoZHFfZGF0YS0+aGRxX211dGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZyBiL2RyaXZlcnMvd2F0Y2hkb2cvS2NvbmZpZwppbmRleCBiNjlkNzE0Li4xYjBmOThiIDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL0tjb25maWcKKysrIGIvZHJpdmVycy93YXRjaGRvZy9LY29uZmlnCkBAIC05MzMsNyArOTMzLDcgQEAKIAlkZXBlbmRzIG9uIFNPQ19QTlg4MzM1CiAJaGVscAogCSAgSGFyZHdhcmUgZHJpdmVyIGZvciB0aGUgUE5YODMzeCdzIHdhdGNoZG9nLiBUaGlzIGlzIGEKLQkgIHdhdGNoZG9nIHRpbWVyIHRoYXQgd2lsbCByZWJvb3QgdGhlIG1hY2hpbmUgYWZ0ZXIgYSBwcm9ncmFtYWJsZQorCSAgd2F0Y2hkb2cgdGltZXIgdGhhdCB3aWxsIHJlYm9vdCB0aGUgbWFjaGluZSBhZnRlciBhIHByb2dyYW1tYWJsZQogCSAgdGltZXIgaGFzIGV4cGlyZWQgYW5kIG5vIHByb2Nlc3MgaGFzIHdyaXR0ZW4gdG8gL2Rldi93YXRjaGRvZyBkdXJpbmcKIAkgIHRoYXQgdGltZS4KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZSBiL2RyaXZlcnMvd2F0Y2hkb2cvTWFrZWZpbGUKaW5kZXggZDUyMGJmOS4uM2Y4NjA4YiAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9NYWtlZmlsZQorKysgYi9kcml2ZXJzL3dhdGNoZG9nL01ha2VmaWxlCkBAIC00LDcgKzQsNyBAQAogCiAjIE9ubHkgb25lIHdhdGNoZG9nIGNhbiBzdWNjZWVkLiBXZSBwcm9iZSB0aGUgSVNBL1BDSS9VU0IgYmFzZWQKICMgd2F0Y2hkb2ctY2FyZHMgZmlyc3QsIHRoZW4gdGhlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyB3YXRjaGRvZwotIyBkcml2ZXJzIGFuZCB0aGVuIHRoZSBhcmNoaXRlY3R1cmUgaW5kZXBlbmRhbnQgInNvZnRkb2ciIGRyaXZlci4KKyMgZHJpdmVycyBhbmQgdGhlbiB0aGUgYXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50ICJzb2Z0ZG9nIiBkcml2ZXIuCiAjIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3VyIElTQS9QQ0kvVVNCIGNhcmQgaXNuJ3QgZGV0ZWN0ZWQgdGhhdAogIyB5b3UgY2FuIGZhbGwgYmFjayB0byBhbiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgZHJpdmVyIGFuZCBpZgogIyB0aGF0IGFsc28gZmFpbHMgdGhlbiB5b3UgY2FuIGZhbGwgYmFjayB0byB0aGUgc29mdHdhcmUgd2F0Y2hkb2cKQEAgLTE1Myw3ICsxNTMsNyBAQAogIyBYZW4KIG9iai0kKENPTkZJR19YRU5fV0RUKSArPSB4ZW5fd2R0Lm8KIAotIyBBcmNoaXRlY3R1cmUgSW5kZXBlbmRhbnQKKyMgQXJjaGl0ZWN0dXJlIEluZGVwZW5kZW50CiBvYmotJChDT05GSUdfV004MzFYX1dBVENIRE9HKSArPSB3bTgzMXhfd2R0Lm8KIG9iai0kKENPTkZJR19XTTgzNTBfV0FUQ0hET0cpICs9IHdtODM1MF93ZHQubwogb2JqLSQoQ09ORklHX01BWDYzWFhfV0FUQ0hET0cpICs9IG1heDYzeHhfd2R0Lm8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvYWNxdWlyZXdkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMKaW5kZXggMmZmY2U0ZC4uYjZhMmI1OCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9hY3F1aXJld2R0LmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqCVRoZW9yeSBvZiBPcGVyYXRpb246CiAgKgkJVGhlIFdhdGNoLURvZyBUaW1lciBpcyBwcm92aWRlZCB0byBlbnN1cmUgdGhhdCBzdGFuZGFsb25lCiAgKgkJU3lzdGVtcyBjYW4gYWx3YXlzIHJlY292ZXIgZnJvbSBjYXRhc3Ryb3BoaWMgY29uZGl0aW9ucyB0aGF0Ci0gKgkJY2F1c2VkIHRoZSBDUFUgdG8gY3Jhc2guIFRoaXMgY29uZGl0aW9uIG1heSBoYXZlIG9jY3VyZWQgYnkKKyAqCQljYXVzZWQgdGhlIENQVSB0byBjcmFzaC4gVGhpcyBjb25kaXRpb24gbWF5IGhhdmUgb2NjdXJyZWQgYnkKICAqCQlleHRlcm5hbCBFTUkgb3IgYSBzb2Z0d2FyZSBidWcuIFdoZW4gdGhlIENQVSBzdG9wcyB3b3JraW5nCiAgKgkJY29ycmVjdGx5LCBoYXJkd2FyZSBvbiB0aGUgYm9hcmQgd2lsbCBlaXRoZXIgcGVyZm9ybSBhIGhhcmR3YXJlCiAgKgkJcmVzZXQgKGNvbGQgYm9vdCkgb3IgYSBub24tbWFza2FibGUgaW50ZXJydXB0IChOTUkpIHRvIGJyaW5nIHRoZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9wYzg3NDEzX3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9wYzg3NDEzX3dkdC5jCmluZGV4IDEzOWQ3NzMuLmI3YzEzOTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvcGM4NzQxM193ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3BjODc0MTNfd2R0LmMKQEAgLTQ5LDcgKzQ5LDcgQEAKICNkZWZpbmUgV0RUX0RBVEFfSU9fUE9SVCAgICAoV0RUX0lOREVYX0lPX1BPUlQrMSkKICNkZWZpbmUgU1dDX0xETiAgICAgICAgICAgICAweDA0CiAjZGVmaW5lIFNJT0NGRzIgICAgICAgICAgICAgMHgyMgkvKiBTZXJpYWwgSU8gcmVnaXN0ZXIgKi8KLSNkZWZpbmUgV0RDVEwgICAgICAgICAgICAgICAweDEwCS8qIFdhdGNoZG9nLVRpbWVyLUNvbnRyb2xsLVJlZ2lzdGVyICovCisjZGVmaW5lIFdEQ1RMICAgICAgICAgICAgICAgMHgxMAkvKiBXYXRjaGRvZy1UaW1lci1Db250cm9sLVJlZ2lzdGVyICovCiAjZGVmaW5lIFdEVE8gICAgICAgICAgICAgICAgMHgxMQkvKiBXYXRjaGRvZyB0aW1lb3V0IHJlZ2lzdGVyICovCiAjZGVmaW5lIFdEQ0ZHICAgICAgICAgICAgICAgMHgxMgkvKiBXYXRjaGRvZyBjb25maWcgcmVnaXN0ZXIgKi8KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9zYmM3MjQwX3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9zYmM3MjQwX3dkdC5jCmluZGV4IDY3ZGRlYjEuLmZmMTE1MDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvc2JjNzI0MF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3NiYzcyNDBfd2R0LmMKQEAgLTI3Myw3ICsyNzMsNyBAQAogCiAJLyogVGhlIElPIHBvcnQgMHgwNDMgdXNlZCB0byBkaXNhYmxlIHRoZSB3YXRjaGRvZwogCSAqIGlzIGFscmVhZHkgY2xhaW1lZCBieSB0aGUgc3lzdGVtIHRpbWVyLCBzbyB3ZQotCSAqIGNhbnQgcmVxdWVzdF9yZWdpb24oKSBpdCAuLi4qLworCSAqIGNhbid0IHJlcXVlc3RfcmVnaW9uKCkgaXQgLi4uKi8KIAogCWlmICh0aW1lb3V0IDwgMSB8fCB0aW1lb3V0ID4gU0JDNzI0MF9NQVhfVElNRU9VVCkgewogCQl0aW1lb3V0ID0gU0JDNzI0MF9USU1FT1VUOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9zY2gzMTF4X3dkdC5jIGIvZHJpdmVycy93YXRjaGRvZy9zY2gzMTF4X3dkdC5jCmluZGV4IGI2MWFiMWMuLmM3Y2Y0YjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvd2F0Y2hkb2cvc2NoMzExeF93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3NjaDMxMXhfd2R0LmMKQEAgLTIwMSw3ICsyMDEsNyBAQAogCXNwaW5fbG9jaygmc2NoMzExeF93ZHRfZGF0YS5pb19sb2NrKTsKIAogCS8qIC0tIFdhdGNoZG9nIHRpbWVyIGNvbnRyb2wgLS0KLQkgKiBCaXQgMCAgIFN0YXR1cyBCaXQ6IDAgPSBUaW1lciBjb3VudGluZywgMSA9IFRpbWVvdXQgb2NjdXJlZAorCSAqIEJpdCAwICAgU3RhdHVzIEJpdDogMCA9IFRpbWVyIGNvdW50aW5nLCAxID0gVGltZW91dCBvY2N1cnJlZAogCSAqIEJpdCAxICAgUmVzZXJ2ZWQKIAkgKiBCaXQgMiAgIEZvcmNlIFRpbWVvdXQ6IDEgPSBGb3JjZXMgV0QgdGltZW91dCBldmVudCAoc2VsZi1jbGVhbmluZykKIAkgKiBCaXQgMyAgIFAyMCBGb3JjZSBUaW1lb3V0IGVuYWJsZWQ6CmRpZmYgLS1naXQgYS9kcml2ZXJzL3dhdGNoZG9nL3Nod2R0LmMgYi9kcml2ZXJzL3dhdGNoZG9nL3Nod2R0LmMKaW5kZXggNGUzZTdlYi4uZGI4NGYyMyAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9zaHdkdC5jCisrKyBiL2RyaXZlcnMvd2F0Y2hkb2cvc2h3ZHQuYwpAQCAtNTAsNyArNTAsNyBAQAogICogbmVjc3NhcnkuCiAgKgogICogQXMgYSByZXN1bHQgb2YgdGhpcyB0aW1pbmcgcHJvYmxlbSwgdGhlIG9ubHkgbW9kZXMgdGhhdCBhcmUgcGFydGljdWxhcmx5Ci0gKiBmZWFzaWJsZSBhcmUgdGhlIDQwOTYgYW5kIHRoZSAyMDQ4IGRpdmlzb3JzLCB3aGljaCB5ZWlsZCA1LjI1IGFuZCAyLjYybXMKKyAqIGZlYXNpYmxlIGFyZSB0aGUgNDA5NiBhbmQgdGhlIDIwNDggZGl2aXNvcnMsIHdoaWNoIHlpZWxkIDUuMjUgYW5kIDIuNjJtcwogICogb3ZlcmZsb3cgcGVyaW9kcyByZXNwZWN0aXZlbHkuCiAgKgogICogQWxzbywgc2luY2Ugd2UgY2FuJ3QgcmVhbGx5IGV4cGVjdCB1c2Vyc3BhY2UgdG8gYmUgcmVzcG9uc2l2ZSBlbm91Z2gKZGlmZiAtLWdpdCBhL2RyaXZlcnMvd2F0Y2hkb2cvc21zYzM3Yjc4N193ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvc21zYzM3Yjc4N193ZHQuYwppbmRleCBkZjg4Y2ZhLi5lOTdiMDQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3dhdGNoZG9nL3Ntc2MzN2I3ODdfd2R0LmMKKysrIGIvZHJpdmVycy93YXRjaGRvZy9zbXNjMzdiNzg3X3dkdC5jCkBAIC0xOTEsNyArMTkxLDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCB3ZHRfdGltZXJfY3RybCh1bnNpZ25lZCBjaGFyIHJlZykKIHsKIAkvKiAtLSBXYXRjaGRvZyB0aW1lciBjb250cm9sIC0tCi0JICogQml0IDAgICBTdGF0dXMgQml0OiAwID0gVGltZXIgY291bnRpbmcsIDEgPSBUaW1lb3V0IG9jY3VyZWQKKwkgKiBCaXQgMCAgIFN0YXR1cyBCaXQ6IDAgPSBUaW1lciBjb3VudGluZywgMSA9IFRpbWVvdXQgb2NjdXJyZWQKIAkgKiBCaXQgMSAgIFBvd2VyIExFRCBUb2dnbGU6IDAgPSBEaXNhYmxlIFRvZ2dsZSwgMSA9IFRvZ2dsZSBhdCAxIEh6CiAJICogQml0IDIgICBGb3JjZSBUaW1lb3V0OiAxID0gRm9yY2VzIFdEIHRpbWVvdXQgZXZlbnQgKHNlbGYtY2xlYW5pbmcpCiAJICogQml0IDMgICBQMjAgRm9yY2UgVGltZW91dCBlbmFibGVkOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy93YXRjaGRvZy9zcDgwNV93ZHQuYyBiL2RyaXZlcnMvd2F0Y2hkb2cvc3A4MDVfd2R0LmMKaW5kZXggMGEwZWZlNy4uMGQ4MGUwOCAxMDA2NDQKLS0tIGEvZHJpdmVycy93YXRjaGRvZy9zcDgwNV93ZHQuYworKysgYi9kcml2ZXJzL3dhdGNoZG9nL3NwODA1X3dkdC5jCkBAIC05MCw3ICs5MCw3IEBACiAJLyoKIAkgKiBzcDgwNSBydW5zIGNvdW50ZXIgd2l0aCBnaXZlbiB2YWx1ZSB0d2ljZSwgYWZ0ZXIgdGhlIGVuZCBvZiBmaXJzdAogCSAqIGNvdW50ZXIgaXQgZ2l2ZXMgYW4gaW50ZXJydXB0IGFuZCB0aGVuIHN0YXJ0cyBjb3VudGVyIGFnYWluLiBJZgotCSAqIGludGVycnVwdCBhbHJlYWR5IG9jY3VyZWQgdGhlbiBpdCByZXNldHMgdGhlIHN5c3RlbS4gVGhpcyBpcyB3aHkKKwkgKiBpbnRlcnJ1cHQgYWxyZWFkeSBvY2N1cnJlZCB0aGVuIGl0IHJlc2V0cyB0aGUgc3lzdGVtLiBUaGlzIGlzIHdoeQogCSAqIGxvYWQgaXMgaGFsZiBvZiB3aGF0IHNob3VsZCBiZSByZXF1aXJlZC4KIAkgKi8KIAlsb2FkID0gZGl2X3U2NChyYXRlLCAyKSAqIHRpbWVvdXQgLSAxOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy94ZW4vZXZlbnRzLmMgYi9kcml2ZXJzL3hlbi9ldmVudHMuYwppbmRleCAwMzYzNDNiLi40MmQ2YzkzIDEwMDY0NAotLS0gYS9kcml2ZXJzL3hlbi9ldmVudHMuYworKysgYi9kcml2ZXJzL3hlbi9ldmVudHMuYwpAQCAtNSw3ICs1LDcgQEAKICAqIGRvbWFpbiBnZXRzIDEwMjQgZXZlbnQgY2hhbm5lbHMsIGJ1dCBOUl9JUlEgaXMgbm90IHRoYXQgbGFyZ2UsIHdlCiAgKiBtdXN0IGR5bmFtaWNhbGx5IG1hcCBpcnFzPC0+ZXZlbnQgY2hhbm5lbHMuICBUaGUgZXZlbnQgY2hhbm5lbHMKICAqIGludGVyZmFjZSB3aXRoIHRoZSByZXN0IG9mIHRoZSBrZXJuZWwgYnkgZGVmaW5pbmcgYSB4ZW4gaW50ZXJydXB0Ci0gKiBjaGlwLiAgV2hlbiBhbiBldmVudCBpcyByZWNpZXZlZCwgaXQgaXMgbWFwcGVkIHRvIGFuIGlycSBhbmQgc2VudAorICogY2hpcC4gIFdoZW4gYW4gZXZlbnQgaXMgcmVjZWl2ZWQsIGl0IGlzIG1hcHBlZCB0byBhbiBpcnEgYW5kIHNlbnQKICAqIHRocm91Z2ggdGhlIG5vcm1hbCBpbnRlcnJ1cHQgcHJvY2Vzc2luZyBwYXRoLgogICoKICAqIFRoZXJlIGFyZSBmb3VyIGtpbmRzIG9mIGV2ZW50cyB3aGljaCBjYW4gYmUgbWFwcGVkIHRvIGFuIGV2ZW50CkBAIC00MTYsNyArNDE2LDcgQEAKICNpZmRlZiBDT05GSUdfWDg2X0lPX0FQSUMKIAkvKgogCSAqIEZvciBhbiBIVk0gZ3Vlc3Qgb3IgZG9tYWluIDAgd2hpY2ggc2VlICJyZWFsIiAoZW11bGF0ZWQgb3IKLQkgKiBhY3R1YWwgcmVwZWN0aXZlbHkpIEdTSXMgd2UgYWxsb2NhdGUgZHluYW1pYyBJUlFzCisJICogYWN0dWFsIHJlc3BlY3RpdmVseSkgR1NJcyB3ZSBhbGxvY2F0ZSBkeW5hbWljIElSUXMKIAkgKiBlLmcuIHRob3NlIGNvcnJlc3BvbmRpbmcgdG8gZXZlbnQgY2hhbm5lbHMgb3IgTVNJcwogCSAqIGV0Yy4gZnJvbSB0aGUgcmFuZ2UgYWJvdmUgdGhvc2UgInJlYWwiIEdTSXMgdG8gYXZvaWQKIAkgKiBjb2xsaXNpb25zLgpkaWZmIC0tZ2l0IGEvZnMvYWRmcy9tYXAuYyBiL2ZzL2FkZnMvbWFwLmMKaW5kZXggZDFhNTkzMi4uNjkzNWYwNSAxMDA2NDQKLS0tIGEvZnMvYWRmcy9tYXAuYworKysgYi9mcy9hZGZzL21hcC5jCkBAIC01MSw3ICs1MSw3IEBACiAKIC8qCiAgKiBUaGlzIGlzIGZ1bi4gIFdlIG5lZWQgdG8gbG9hZCB1cCB0byAxOSBiaXRzIGZyb20gdGhlIG1hcCBhdCBhbgotICogYXJiaXRhcnkgYml0IGFsaWdubWVudC4gIChXZSdyZSBsaW1pdGVkIHRvIDE5IGJpdHMgYnkgRisgdmVyc2lvbiAyKS4KKyAqIGFyYml0cmFyeSBiaXQgYWxpZ25tZW50LiAgKFdlJ3JlIGxpbWl0ZWQgdG8gMTkgYml0cyBieSBGKyB2ZXJzaW9uIDIpLgogICovCiAjZGVmaW5lIEdFVF9GUkFHX0lEKF9tYXAsX3N0YXJ0LF9pZG1hc2spCQkJCVwKIAkoewkJCQkJCQkJXApkaWZmIC0tZ2l0IGEvZnMvYWZzL2NhY2hlLmMgYi9mcy9hZnMvY2FjaGUuYwppbmRleCAwZmIzMTVkLi41Nzc3NjNjMyAxMDA2NDQKLS0tIGEvZnMvYWZzL2NhY2hlLmMKKysrIGIvZnMvYWZzL2NhY2hlLmMKQEAgLTk4LDcgKzk4LDcgQEAKIH0KIAogLyoKLSAqIHByb3ZpZGUgbmV3IGF1eGlsbGlhcnkgY2FjaGUgZGF0YQorICogcHJvdmlkZSBuZXcgYXV4aWxpYXJ5IGNhY2hlIGRhdGEKICAqLwogc3RhdGljIHVpbnQxNl90IGFmc19jZWxsX2NhY2hlX2dldF9hdXgoY29uc3Qgdm9pZCAqY29va2llX25ldGZzX2RhdGEsCiAJCQkJICAgICAgIHZvaWQgKmJ1ZmZlciwgdWludDE2X3QgYnVmbWF4KQpAQCAtMTE3LDcgKzExNyw3IEBACiB9CiAKIC8qCi0gKiBjaGVjayB0aGF0IHRoZSBhdXhpbGxpYXJ5IGRhdGEgaW5kaWNhdGVzIHRoYXQgdGhlIGVudHJ5IGlzIHN0aWxsIHZhbGlkCisgKiBjaGVjayB0aGF0IHRoZSBhdXhpbGlhcnkgZGF0YSBpbmRpY2F0ZXMgdGhhdCB0aGUgZW50cnkgaXMgc3RpbGwgdmFsaWQKICAqLwogc3RhdGljIGVudW0gZnNjYWNoZV9jaGVja2F1eCBhZnNfY2VsbF9jYWNoZV9jaGVja19hdXgodm9pZCAqY29va2llX25ldGZzX2RhdGEsCiAJCQkJCQkgICAgICBjb25zdCB2b2lkICpidWZmZXIsCkBAIC0xNTAsNyArMTUwLDcgQEAKIH0KIAogLyoKLSAqIHByb3ZpZGUgbmV3IGF1eGlsbGlhcnkgY2FjaGUgZGF0YQorICogcHJvdmlkZSBuZXcgYXV4aWxpYXJ5IGNhY2hlIGRhdGEKICAqLwogc3RhdGljIHVpbnQxNl90IGFmc192bG9jYXRpb25fY2FjaGVfZ2V0X2F1eChjb25zdCB2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKIAkJCQkJICAgIHZvaWQgKmJ1ZmZlciwgdWludDE2X3QgYnVmbWF4KQpAQCAtMTcyLDcgKzE3Miw3IEBACiB9CiAKIC8qCi0gKiBjaGVjayB0aGF0IHRoZSBhdXhpbGxpYXJ5IGRhdGEgaW5kaWNhdGVzIHRoYXQgdGhlIGVudHJ5IGlzIHN0aWxsIHZhbGlkCisgKiBjaGVjayB0aGF0IHRoZSBhdXhpbGlhcnkgZGF0YSBpbmRpY2F0ZXMgdGhhdCB0aGUgZW50cnkgaXMgc3RpbGwgdmFsaWQKICAqLwogc3RhdGljCiBlbnVtIGZzY2FjaGVfY2hlY2thdXggYWZzX3Zsb2NhdGlvbl9jYWNoZV9jaGVja19hdXgodm9pZCAqY29va2llX25ldGZzX2RhdGEsCkBAIC0yODMsNyArMjgzLDcgQEAKIH0KIAogLyoKLSAqIHByb3ZpZGUgbmV3IGF1eGlsbGlhcnkgY2FjaGUgZGF0YQorICogcHJvdmlkZSBuZXcgYXV4aWxpYXJ5IGNhY2hlIGRhdGEKICAqLwogc3RhdGljIHVpbnQxNl90IGFmc192bm9kZV9jYWNoZV9nZXRfYXV4KGNvbnN0IHZvaWQgKmNvb2tpZV9uZXRmc19kYXRhLAogCQkJCQl2b2lkICpidWZmZXIsIHVpbnQxNl90IGJ1Zm1heCkKQEAgLTMwOSw3ICszMDksNyBAQAogfQogCiAvKgotICogY2hlY2sgdGhhdCB0aGUgYXV4aWxsaWFyeSBkYXRhIGluZGljYXRlcyB0aGF0IHRoZSBlbnRyeSBpcyBzdGlsbCB2YWxpZAorICogY2hlY2sgdGhhdCB0aGUgYXV4aWxpYXJ5IGRhdGEgaW5kaWNhdGVzIHRoYXQgdGhlIGVudHJ5IGlzIHN0aWxsIHZhbGlkCiAgKi8KIHN0YXRpYyBlbnVtIGZzY2FjaGVfY2hlY2thdXggYWZzX3Zub2RlX2NhY2hlX2NoZWNrX2F1eCh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKIAkJCQkJCSAgICAgICBjb25zdCB2b2lkICpidWZmZXIsCmRpZmYgLS1naXQgYS9mcy9hZnMvY2VsbC5jIGIvZnMvYWZzL2NlbGwuYwppbmRleCAwZDVlZWFkZi4uM2MwOTBiNyAxMDA2NDQKLS0tIGEvZnMvYWZzL2NlbGwuYworKysgYi9mcy9hZnMvY2VsbC5jCkBAIC0yOTMsNyArMjkzLDcgQEAKIAkJaWYgKCFjZWxsKSB7CiAJCQkvKiB0aGlzIHNob3VsZCBub3QgaGFwcGVuIHVubGVzcyB1c2VyIHRyaWVzIHRvIG1vdW50CiAJCQkgKiB3aGVuIHJvb3QgY2VsbCBpcyBub3Qgc2V0LiBSZXR1cm4gYW4gaW1wb3NzaWJseQotCQkJICogYml6emFyZSBlcnJubyB0byBhbGVydCB0aGUgdXNlci4gVGhpbmdzIGxpa2UKKwkJCSAqIGJpemFycmUgZXJybm8gdG8gYWxlcnQgdGhlIHVzZXIuIFRoaW5ncyBsaWtlCiAJCQkgKiBFTk9FTlQgbWlnaHQgYmUgIm1vcmUgYXBwcm9wcmlhdGUiIGJ1dCB0aGV5IGhhcHBlbgogCQkJICogZm9yIG90aGVyIHJlYXNvbnMuCiAJCQkgKi8KZGlmZiAtLWdpdCBhL2ZzL2F0dHIuYyBiL2ZzL2F0dHIuYwppbmRleCAxMDA3ZWQ2Li45MWRiZTJhIDEwMDY0NAotLS0gYS9mcy9hdHRyLmMKKysrIGIvZnMvYXR0ci5jCkBAIC0xMjgsNyArMTI4LDcgQEAKICAqIHNldGF0dHJfY29weSBtdXN0IGJlIGNhbGxlZCB3aXRoIGlfbXV0ZXggaGVsZC4KICAqCiAgKiBzZXRhdHRyX2NvcHkgdXBkYXRlcyB0aGUgaW5vZGUncyBtZXRhZGF0YSB3aXRoIHRoYXQgc3BlY2lmaWVkCi0gKiBpbiBhdHRyLiBOb3RpY2FibHkgbWlzc2luZyBpcyBpbm9kZSBzaXplIHVwZGF0ZSwgd2hpY2ggaXMgbW9yZSBjb21wbGV4CisgKiBpbiBhdHRyLiBOb3RpY2VhYmx5IG1pc3NpbmcgaXMgaW5vZGUgc2l6ZSB1cGRhdGUsIHdoaWNoIGlzIG1vcmUgY29tcGxleAogICogYXMgaXQgcmVxdWlyZXMgcGFnZWNhY2hlIHVwZGF0ZXMuCiAgKgogICogVGhlIGlub2RlIGlzIG5vdCBtYXJrZWQgYXMgZGlydHkgYWZ0ZXIgdGhpcyBvcGVyYXRpb24uIFRoZSByYXRpb25hbGUgaXMKZGlmZiAtLWdpdCBhL2ZzL2F1dG9mczQvcm9vdC5jIGIvZnMvYXV0b2ZzNC9yb290LmMKaW5kZXggOTY4MDRhMS4uZjU1YWUyM2IgMTAwNjQ0Ci0tLSBhL2ZzL2F1dG9mczQvcm9vdC5jCisrKyBiL2ZzL2F1dG9mczQvcm9vdC5jCkBAIC02MTIsNyArNjEyLDcgQEAKICAqIHNldCB0aGUgRE1BTkFHRURfQVVUT01PVU5UIGFuZCBETUFOQUdFRF9UUkFOU0lUIGZsYWdzIG9uIHRoZSBsZWF2ZXMKICAqIG9mIHRoZSBkaXJlY3RvcnkgdHJlZS4gVGhlcmUgaXMgbm8gbmVlZCB0byBjbGVhciB0aGUgYXV0b21vdW50IGZsYWcKICAqIGZvbGxvd2luZyBhIG1vdW50IG9yIHJlc3RvcmUgaXQgYWZ0ZXIgYW4gZXhwaXJlIGJlY2F1c2UgdGhlc2UgbW91bnRzCi0gKiBhcmUgYWx3YXlzIGNvdmVyZWQuIEhvd2V2ZXIsIGl0IGlzIG5lY2Nlc3NhcnkgdG8gZW5zdXJlIHRoYXQgdGhlc2UKKyAqIGFyZSBhbHdheXMgY292ZXJlZC4gSG93ZXZlciwgaXQgaXMgbmVjZXNzYXJ5IHRvIGVuc3VyZSB0aGF0IHRoZXNlCiAgKiBmbGFncyBhcmUgY2xlYXIgb24gbm9uLWVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNhbGxzCiAgKiBkdXJpbmcgcGF0aCB3YWxrcy4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvYmVmcy9DaGFuZ2VMb2cgYi9mcy9iZWZzL0NoYW5nZUxvZwppbmRleCBjZThjNzg3Li43NWE0NjFjIDEwMDY0NAotLS0gYS9mcy9iZWZzL0NoYW5nZUxvZworKysgYi9mcy9iZWZzL0NoYW5nZUxvZwpAQCAtMjQsNyArMjQsNyBAQAogCiBWZXJzaW9uIDAuNjQgKDIwMDItMDItMDcpCiA9PT09PT09PT09Ci0qIERpZCB0aGUgc3RyaW5nIGNvbXBhcmlzaW9uIHJlYWxseSByaWdodCB0aGlzIHRpbWUgKGJ0cmVlLmMpIFtXRF0KKyogRGlkIHRoZSBzdHJpbmcgY29tcGFyaXNvbiByZWFsbHkgcmlnaHQgdGhpcyB0aW1lIChidHJlZS5jKSBbV0RdCiAKICogRml4ZWQgdXAgc29tZSBwbGFjZXMgd2hlcmUgSSBhc3N1bWVkIHRoYXQgYSBsb25nIGludCBjb3VsZCBob2xkCiAJYSBwb2ludGVyIHZhbHVlLiAoYnRyZWUuYykgW1dEXQpAQCAtMTE0LDcgKzExNCw3IEBACiAJTW9yZSBmbGV4aWJsZS4gV2lsbCBzb29uIGJlIGNvbnRyb2xsYWJsZSBhdCBtb3VudCB0aW1lIAogCShzZWUgVE9ETykuIFtXRF0KIAotKiBSZXdyb3RlIGRhdGFzdHJlYW0gcG9zaXRvbiBsb29rdXBzLgorKiBSZXdyb3RlIGRhdGFzdHJlYW0gcG9zaXRpb24gbG9va3Vwcy4KIAkoZGF0YXN0cmVhbS5jKSBbV0RdCiAKICogTW92ZWQgdGhlIFRPRE8gbGlzdCB0byBpdHMgb3duIGZpbGUuCkBAIC0xNTAsNyArMTUwLDcgQEAKICogQW50b24gYWxzbyB0b2xkIG1lIHRoYXQgdGhlIGJsb2Nrc2l6ZSBpcyBub3QgYWxsb3dlZCB0byBiZSBsYXJnZXIgdGhhbiAKIAl0aGUgcGFnZSBzaXplIGluIGxpbnV4LCB3aGljaCBpcyA0ayBpMzg2LiBPb3BzLiBBZGRlZCBhIHRlc3QgZm9yIAogCShibG9ja3NpemUgPiBQQUdFX1NJWkUpLCBhbmQgcmVmdXNlIHRvIG1vdW50IGluIHRoYXQgY2FzZS4gV2hhdCB0aGlzIAotCXByYWN0aWNhbHkgbWVhbnMgaXMgdGhhdCA4ayBibG9ja3NpemUgdm9sdW1lcyB3b24ndCB3b3JrIHdpdGhvdXQgYSBtYWpvcgorCXByYWN0aWNhbGx5IG1lYW5zIGlzIHRoYXQgOGsgYmxvY2tzaXplIHZvbHVtZXMgd29uJ3Qgd29yayB3aXRob3V0IGEgbWFqb3IKIAlyZXN0cnVjdHVyaW5nIG9mIHRoZSBkcml2ZXIgKG9yIGFuIGFscGhhIG9yIG90aGVyIDY0Yml0IGhhcmR3YXJlKS4gW1dEXQogCiAqIENsZWFuZWQgdXAgdGhlIGJlZnNfY291bnRfYmxvY2tzKCkgZnVuY3Rpb24uIE11Y2ggc21hcnRlciBub3cuIApAQCAtMTgzLDcgKzE4Myw3IEBACiAJc3RydWN0dXJlcyBpbnRvIHRoZSBnZW5lcmljIHBvaW50ZXIgZmllbGRzIG9mIHRoZSBwdWJsaWMgc3RydWN0dXJlcyAKIAl3aXRoIGttYWxsb2MoKS4gcHV0X3N1cGVyIGFuZCBwdXRfaW5vZGUgZnJlZSB0aGVtLiBUaGlzIGFsbG93cyB1cyBub3QgCiAJdG8gaGF2ZSB0byB0b3VjaCB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIHB1YmxpYyBzdHJ1Y3R1cmVzIGluIAotCWluY2x1ZGUvbGludXgvZnMuaC4gQWxzbywgYmVmc19pbm9kZV9pbmZvIGlzIGh1Z2UgKGJlY3Vhc2Ugb2YgdGhlIAorCWluY2x1ZGUvbGludXgvZnMuaC4gQWxzbywgYmVmc19pbm9kZV9pbmZvIGlzIGh1Z2UgKGJlY2F1c2Ugb2YgdGhlIAogCXN5bWxpbmsgc3RyaW5nKS4gKHN1cGVyLmMsIGlub2RlLmMsIGJlZnNfZnMuaCkgW1dEXQogCiAqIEZpeGVkIGEgdGhpbmtvIHRoYXQgd2FzIGNvcnJ1cHRpbmcgZmlsZSByZWFkcyBhZnRlciB0aGUgZmlyc3QgYmxvY2tfcnVuIApAQCAtNDA0LDcgKzQwNCw3IEBACiAKICogRml4ZWQgY29tcGlsZSBlcnJvcnMgb24gMi40LjEga2VybmVsIChXRCkKIAlSZXNvbHZlIHJlamVjdGVkIHBhdGNoZXMKLQlBY2NvbW9kYXRlIGNoYW5nZWQgTkxTIGludGVyZmFjZSAodXRpbC5oKQorCUFjY29tbW9kYXRlIGNoYW5nZWQgTkxTIGludGVyZmFjZSAodXRpbC5oKQogCU5lZWRlZCB0byBpbmNsdWRlIDxsaW51eC9zbGFiLmg+IGluIG1vc3QgZmlsZXMKIAlNYWtlZmlsZSBjaGFuZ2VzCiAJZnMvQ29uZmlnLmluIGNoYW5nZXMKZGlmZiAtLWdpdCBhL2ZzL2JlZnMvYmVmc19mc190eXBlcy5oIGIvZnMvYmVmcy9iZWZzX2ZzX3R5cGVzLmgKaW5kZXggNzg5M2VhYS4uZWI1NTdkOSAxMDA2NDQKLS0tIGEvZnMvYmVmcy9iZWZzX2ZzX3R5cGVzLmgKKysrIGIvZnMvYmVmcy9iZWZzX2ZzX3R5cGVzLmgKQEAgLTIzNCw3ICsyMzQsNyBAQAogfSBQQUNLRUQgYmVmc19idHJlZV9zdXBlcjsKIAogLyoKLSAqIEhlYWRlciBzdHVjdHVyZSBvZiBlYWNoIGJ0cmVlIG5vZGUKKyAqIEhlYWRlciBzdHJ1Y3R1cmUgb2YgZWFjaCBidHJlZSBub2RlCiAgKi8KIHR5cGVkZWYgc3RydWN0IHsKIAlmczY0IGxlZnQ7CmRpZmYgLS1naXQgYS9mcy9iZWZzL2J0cmVlLmMgYi9mcy9iZWZzL2J0cmVlLmMKaW5kZXggNDIwMmRiNy4uYTY2YzliMSAxMDA2NDQKLS0tIGEvZnMvYmVmcy9idHJlZS5jCisrKyBiL2ZzL2JlZnMvYnRyZWUuYwpAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBMaWNlbnNlZCB1bmRlciB0aGUgR05VIEdQTC4gU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGRldGFpbHMuCiAgKgotICogMjAwMi0wMi0wNTogU2VyZ2V5IFMuIEtvc3R5bGlvdiBhZGRlZCBiaW5hcnkgc2VhcmNoIHdpdGhpbmcKKyAqIDIwMDItMDItMDU6IFNlcmdleSBTLiBLb3N0eWxpb3YgYWRkZWQgYmluYXJ5IHNlYXJjaCB3aXRoaW4KICAqIAkJYnRyZWUgbm9kZXMuCiAgKgogICogTWFueSB0aGFua3MgdG86CmRpZmYgLS1naXQgYS9mcy9iZWZzL2xpbnV4dmZzLmMgYi9mcy9iZWZzL2xpbnV4dmZzLmMKaW5kZXggMDY0NTdlZC4uNTRiOGMyOCAxMDA2NDQKLS0tIGEvZnMvYmVmcy9saW51eHZmcy5jCisrKyBiL2ZzL2JlZnMvbGludXh2ZnMuYwpAQCAtNzM0LDcgKzczNCw3IEBACiAKIC8qIFRoaXMgZnVuY3Rpb24gaGFzIHRoZSByZXNwb25zaWJpbHRpeSBvZiBnZXR0aW5nIHRoZQogICogZmlsZXN5c3RlbSByZWFkeSBmb3IgdW5tb3VudGluZy4gCi0gKiBCYXNpY2x5LCB3ZSBmcmVlIGV2ZXJ5dGhpbmcgdGhhdCB3ZSBhbGxvY2F0ZWQgaW4KKyAqIEJhc2ljYWxseSwgd2UgZnJlZSBldmVyeXRoaW5nIHRoYXQgd2UgYWxsb2NhdGVkIGluCiAgKiBiZWZzX3JlYWRfaW5vZGUKICAqLwogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2ZzL2JpbmZtdF9mbGF0LmMgYi9mcy9iaW5mbXRfZmxhdC5jCmluZGV4IDgxMTM4NGIuLjM5N2QzMDUgMTAwNjQ0Ci0tLSBhL2ZzL2JpbmZtdF9mbGF0LmMKKysrIGIvZnMvYmluZm10X2ZsYXQuYwpAQCAtNzE3LDcgKzcxNyw3IEBACiAJICogaGVscCBzaW1wbGlmeSBhbGwgdGhpcyBtdW1ibyBqdW1ibwogCSAqCiAJICogV2UndmUgZ290IHR3byBkaWZmZXJlbnQgc2VjdGlvbnMgb2YgcmVsb2NhdGlvbiBlbnRyaWVzLgotCSAqIFRoZSBmaXJzdCBpcyB0aGUgR09UIHdoaWNoIHJlc2lkZXMgYXQgdGhlIGJlZ2luaW5nIG9mIHRoZSBkYXRhIHNlZ21lbnQKKwkgKiBUaGUgZmlyc3QgaXMgdGhlIEdPVCB3aGljaCByZXNpZGVzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRhdGEgc2VnbWVudAogCSAqIGFuZCBpcyB0ZXJtaW5hdGVkIHdpdGggYSAtMS4gIFRoaXMgb25lIGNhbiBiZSByZWxvY2F0ZWQgaW4gcGxhY2UuCiAJICogVGhlIHNlY29uZCBpcyB0aGUgZXh0cmEgcmVsb2NhdGlvbiBlbnRyaWVzIHRhY2tlZCBhZnRlciB0aGUgaW1hZ2UncwogCSAqIGRhdGEgc2VnbWVudC4gVGhlc2UgcmVxdWlyZSBhIGxpdHRsZSBtb3JlIHByb2Nlc3NpbmcgYXMgdGhlIGVudHJ5IGlzCmRpZmYgLS1naXQgYS9mcy9iaW8uYyBiL2ZzL2Jpby5jCmluZGV4IDRkNmQ0YjYuLjg0MGEwZDcgMTAwNjQ0Ci0tLSBhL2ZzL2Jpby5jCisrKyBiL2ZzL2Jpby5jCkBAIC0xNDM2LDcgKzE0MzYsNyBAQAogICogICBwcmVmZXJyZWQgd2F5IHRvIGVuZCBJL08gb24gYSBiaW8sIGl0IHRha2VzIGNhcmUgb2YgY2xlYXJpbmcKICAqICAgQklPX1VQVE9EQVRFIG9uIGVycm9yLiBAZXJyb3IgaXMgMCBvbiBzdWNjZXNzLCBhbmQgYW5kIG9uZSBvZiB0aGUKICAqICAgZXN0YWJsaXNoZWQgLUV4eHh4ICgtRUlPLCBmb3IgaW5zdGFuY2UpIGVycm9yIHZhbHVlcyBpbiBjYXNlCi0gKiAgIHNvbWV0aGluZyB3ZW50IHdyb25nLiBOb29uZSBzaG91bGQgY2FsbCBiaV9lbmRfaW8oKSBkaXJlY3RseSBvbiBhCisgKiAgIHNvbWV0aGluZyB3ZW50IHdyb25nLiBObyBvbmUgc2hvdWxkIGNhbGwgYmlfZW5kX2lvKCkgZGlyZWN0bHkgb24gYQogICogICBiaW8gdW5sZXNzIHRoZXkgb3duIGl0IGFuZCB0aHVzIGtub3cgdGhhdCBpdCBoYXMgYW4gZW5kX2lvCiAgKiAgIGZ1bmN0aW9uLgogICoqLwpkaWZmIC0tZ2l0IGEvZnMvYmxvY2tfZGV2LmMgYi9mcy9ibG9ja19kZXYuYwppbmRleCBjMTUxMWM2Li41MTQ3YmRkIDEwMDY0NAotLS0gYS9mcy9ibG9ja19kZXYuYworKysgYi9mcy9ibG9ja19kZXYuYwpAQCAtNjUzLDcgKzY1Myw3IEBACiAgKiBAd2hvbGU6IHdob2xlIGJsb2NrIGRldmljZSBjb250YWluaW5nIEBiZGV2LCBtYXkgZXF1YWwgQGJkZXYKICAqIEBob2xkZXI6IGhvbGRlciB0cnlpbmcgdG8gY2xhaW0gQGJkZXYKICAqCi0gKiBUZXN0IHdodGhlciBAYmRldiBjYW4gYmUgY2xhaW1lZCBieSBAaG9sZGVyLgorICogVGVzdCB3aGV0aGVyIEBiZGV2IGNhbiBiZSBjbGFpbWVkIGJ5IEBob2xkZXIuCiAgKgogICogQ09OVEVYVDoKICAqIHNwaW5fbG9jaygmYmRldl9sb2NrKS4KZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2V4dGVudF9tYXAuYyBiL2ZzL2J0cmZzL2V4dGVudF9tYXAuYwppbmRleCAyYjZjMTJlLi5hMjRhM2YyIDEwMDY0NAotLS0gYS9mcy9idHJmcy9leHRlbnRfbWFwLmMKKysrIGIvZnMvYnRyZnMvZXh0ZW50X21hcC5jCkBAIC0yNDMsNyArMjQzLDcgQEAKICAqIEluc2VydCBAZW0gaW50byBAdHJlZSBvciBwZXJmb3JtIGEgc2ltcGxlIGZvcndhcmQvYmFja3dhcmQgbWVyZ2Ugd2l0aAogICogZXhpc3RpbmcgbWFwcGluZ3MuICBUaGUgZXh0ZW50X21hcCBzdHJ1Y3QgcGFzc2VkIGluIHdpbGwgYmUgaW5zZXJ0ZWQKICAqIGludG8gdGhlIHRyZWUgZGlyZWN0bHksIHdpdGggYW4gYWRkaXRpb25hbCByZWZlcmVuY2UgdGFrZW4sIG9yIGEKLSAqIHJlZmVyZW5jZSBkcm9wcGVkIGlmIHRoZSBtZXJnZSBhdHRlbXB0IHdhcyBzdWNjZXNzZnVsbC4KKyAqIHJlZmVyZW5jZSBkcm9wcGVkIGlmIHRoZSBtZXJnZSBhdHRlbXB0IHdhcyBzdWNjZXNzZnVsLgogICovCiBpbnQgYWRkX2V4dGVudF9tYXBwaW5nKHN0cnVjdCBleHRlbnRfbWFwX3RyZWUgKnRyZWUsCiAJCSAgICAgICBzdHJ1Y3QgZXh0ZW50X21hcCAqZW0pCmRpZmYgLS1naXQgYS9mcy9idHJmcy9pbm9kZS5jIGIvZnMvYnRyZnMvaW5vZGUuYwppbmRleCA2NTQxMzM5Li41Y2M2NGFiIDEwMDY0NAotLS0gYS9mcy9idHJmcy9pbm9kZS5jCisrKyBiL2ZzL2J0cmZzL2lub2RlLmMKQEAgLTIzMjEsNyArMjMyMSw3IEBACiAKIAkJLyoKIAkJICogaWYgcmV0ID09IDAgbWVhbnMgd2UgZm91bmQgd2hhdCB3ZSB3ZXJlIHNlYXJjaGluZyBmb3IsIHdoaWNoCi0JCSAqIGlzIHdlaXJkLCBidXQgcG9zc2libGUsIHNvIG9ubHkgc2NyZXcgd2l0aCBwYXRoIGlmIHdlIGRpZG50CisJCSAqIGlzIHdlaXJkLCBidXQgcG9zc2libGUsIHNvIG9ubHkgc2NyZXcgd2l0aCBwYXRoIGlmIHdlIGRpZG4ndAogCQkgKiBmaW5kIHRoZSBrZXkgYW5kIHNlZSBpZiB3ZSBoYXZlIHN0dWZmIHRoYXQgbWF0Y2hlcwogCQkgKi8KIAkJaWYgKHJldCA+IDApIHsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL3JlbG9jYXRpb24uYyBiL2ZzL2J0cmZzL3JlbG9jYXRpb24uYwppbmRleCA1ODI1MGUwLi4xOTlhODAxIDEwMDY0NAotLS0gYS9mcy9idHJmcy9yZWxvY2F0aW9uLmMKKysrIGIvZnMvYnRyZnMvcmVsb2NhdGlvbi5jCkBAIC0yMzQ2LDcgKzIzNDYsNyBAQAogCQlyb290ID0gbmV4dC0+cm9vdDsKIAkJQlVHX09OKCFyb290KTsKIAotCQkvKiBubyBvdGhlciBjaG9pY2UgZm9yIG5vbi1yZWZlcm5jZSBjb3VudGVkIHRyZWUgKi8KKwkJLyogbm8gb3RoZXIgY2hvaWNlIGZvciBub24tcmVmZXJlbmNlcyBjb3VudGVkIHRyZWUgKi8KIAkJaWYgKCFyb290LT5yZWZfY293cykKIAkJCXJldHVybiByb290OwogCmRpZmYgLS1naXQgYS9mcy9jYWNoZWZpbGVzL2ludGVyZmFjZS5jIGIvZnMvY2FjaGVmaWxlcy9pbnRlcmZhY2UuYwppbmRleCAzN2ZlMTAxLi4xMDY0ODA1IDEwMDY0NAotLS0gYS9mcy9jYWNoZWZpbGVzL2ludGVyZmFjZS5jCisrKyBiL2ZzL2NhY2hlZmlsZXMvaW50ZXJmYWNlLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQAogfQogCiAvKgotICogdXBkYXRlIHRoZSBhdXhpbGxpYXJ5IGRhdGEgZm9yIGFuIG9iamVjdCBvYmplY3Qgb24gZGlzaworICogdXBkYXRlIHRoZSBhdXhpbGlhcnkgZGF0YSBmb3IgYW4gb2JqZWN0IG9iamVjdCBvbiBkaXNrCiAgKi8KIHN0YXRpYyB2b2lkIGNhY2hlZmlsZXNfdXBkYXRlX29iamVjdChzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKl9vYmplY3QpCiB7CmRpZmYgLS1naXQgYS9mcy9jZXBoL2FkZHIuYyBiL2ZzL2NlcGgvYWRkci5jCmluZGV4IDM3MzY4YmEuLmUxNTljNTIgMTAwNjQ0Ci0tLSBhL2ZzL2NlcGgvYWRkci5jCisrKyBiL2ZzL2NlcGgvYWRkci5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiBjb250ZXh0IG5lZWRzIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3NkIHdyaXRlIGR1cmluZyB3cml0ZWJhY2suCiAgKgogICogU2ltaWxhcmx5LCBzdHJ1Y3QgY2VwaF9pbm9kZV9pbmZvIG1haW50YWlucyBhIHNldCBvZiBjb3VudGVycyB0bwotICogY291bnQgZGlydHkgcGFnZXMgb24gdGhlIGlub2RlLiAgSW4gdGhlIGFic2Vuc2Ugb2Ygc25hcHNob3RzLAorICogY291bnQgZGlydHkgcGFnZXMgb24gdGhlIGlub2RlLiAgSW4gdGhlIGFic2VuY2Ugb2Ygc25hcHNob3RzLAogICogaV93cmJ1ZmZlcl9yZWYgPT0gaV93cmJ1ZmZlcl9yZWZfaGVhZCA9PSB0aGUgZGlydHkgcGFnZSBjb3VudC4KICAqCiAgKiBXaGVuIGEgc25hcHNob3QgaXMgdGFrZW4gKHRoYXQgaXMsIHdoZW4gdGhlIGNsaWVudCByZWNlaXZlcwpkaWZmIC0tZ2l0IGEvZnMvY2VwaC9jYXBzLmMgYi9mcy9jZXBoL2NhcHMuYwppbmRleCA2YjYxZGVkLi41MzIzYzMzIDEwMDY0NAotLS0gYS9mcy9jZXBoL2NhcHMuYworKysgYi9mcy9jZXBoL2NhcHMuYwpAQCAtNzY1LDcgKzc2NSw3IEBACiAJCQlpZiAodG91Y2gpIHsKIAkJCQlzdHJ1Y3QgcmJfbm9kZSAqcTsKIAotCQkJCS8qIHRvdWNoIHRoaXMgKyBwcmVjZWVkaW5nIGNhcHMgKi8KKwkJCQkvKiB0b3VjaCB0aGlzICsgcHJlY2VkaW5nIGNhcHMgKi8KIAkJCQlfX3RvdWNoX2NhcChjYXApOwogCQkJCWZvciAocSA9IHJiX2ZpcnN0KCZjaS0+aV9jYXBzKTsgcSAhPSBwOwogCQkJCSAgICAgcSA9IHJiX25leHQocSkpIHsKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvc25hcC5jIGIvZnMvY2VwaC9zbmFwLmMKaW5kZXggMGFlZTY2Yi4uZTg2ZWMxMSAxMDA2NDQKLS0tIGEvZnMvY2VwaC9zbmFwLmMKKysrIGIvZnMvY2VwaC9zbmFwLmMKQEAgLTM0Miw3ICszNDIsNyBAQAogCW51bSA9IDA7CiAJc25hcGMtPnNlcSA9IHJlYWxtLT5zZXE7CiAJaWYgKHBhcmVudCkgewotCQkvKiBpbmNsdWRlIGFueSBvZiBwYXJlbnQncyBzbmFwcyBvY2N1cmluZyBfYWZ0ZXJfIG15CisJCS8qIGluY2x1ZGUgYW55IG9mIHBhcmVudCdzIHNuYXBzIG9jY3VycmluZyBfYWZ0ZXJfIG15CiAJCSAgIHBhcmVudCBiZWNhbWUgbXkgcGFyZW50ICovCiAJCWZvciAoaSA9IDA7IGkgPCBwYXJlbnQtPmNhY2hlZF9jb250ZXh0LT5udW1fc25hcHM7IGkrKykKIAkJCWlmIChwYXJlbnQtPmNhY2hlZF9jb250ZXh0LT5zbmFwc1tpXSA+PQpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9BVVRIT1JTIGIvZnMvY2lmcy9BVVRIT1JTCmluZGV4IDdmN2ZhM2MuLmVhOTQwYjEgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvQVVUSE9SUworKysgYi9mcy9jaWZzL0FVVEhPUlMKQEAgLTM1LDcgKzM1LDcgQEAKIE1pa2xvcyBTemVyZWRpIAogS2F6ZW9uIHRlYW0gZm9yIHZhcmlvdXMgZml4ZXMgZXNwZWNpYWxseSBmb3IgMi40IHZlcnNpb24uCiBBc3NlciBGZXJubyAoQ2hhbmdlIE5vdGlmeSBzdXBwb3J0KQotU2hhZ2d5IChEYXZlIEtsZWlrYW1wKSBmb3IgaW51bWVyYWJsZSBzbWFsbCBmcyBzdWdnZXN0aW9ucyBhbmQgc29tZSBnb29kIGNsZWFudXAKK1NoYWdneSAoRGF2ZSBLbGVpa2FtcCkgZm9yIGlubnVtZXJhYmxlIHNtYWxsIGZzIHN1Z2dlc3Rpb25zIGFuZCBzb21lIGdvb2QgY2xlYW51cAogR3VudGVyIEt1a2t1a2sgKHRlc3RpbmcgYW5kIHN1Z2dlc3Rpb25zIGZvciBzdXBwb3J0IG9mIG9sZCBzZXJ2ZXJzKQogSWdvciBNYW1tZWRvdiAoREZTIHN1cHBvcnQpCiBKZWZmIExheXRvbiAobWFueSwgbWFueSBmaXhlcywgYXMgd2VsbCBhcyBncmVhdCB3b3JrIG9uIHRoZSBjaWZzIEtlcmJlcm9zIGNvZGUpCmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNfZGZzX3JlZi5jIGIvZnMvY2lmcy9jaWZzX2Rmc19yZWYuYwppbmRleCAwYTI2NWFkLi4yYjY4YWM1IDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNfZGZzX3JlZi5jCisrKyBiL2ZzL2NpZnMvY2lmc19kZnNfcmVmLmMKQEAgLTUzLDcgKzUzLDcgQEAKICAqCiAgKiBFeHRyYWN0cyBzaGFyZW5hbWUgZm9ybSBmdWxsIFVOQy4KICAqIGkuZS4gc3RyaXBzIGZyb20gVU5DIHRyYWlsaW5nIHBhdGggdGhhdCBpcyBub3QgcGFydCBvZiBzaGFyZQotICogbmFtZSBhbmQgZml4dXAgbWlzc2luZyAnXCcgaW4gdGhlIGJlZ2luaW5nIG9mIERGUyBub2RlIHJlZmZlcmFsCisgKiBuYW1lIGFuZCBmaXh1cCBtaXNzaW5nICdcJyBpbiB0aGUgYmVnaW5uaW5nIG9mIERGUyBub2RlIHJlZmZlcmFsCiAgKiBpZiBuZWNlc3NhcnkuCiAgKiBSZXR1cm5zIHBvaW50ZXIgdG8gc2hhcmUgbmFtZSBvbiBzdWNjZXNzIG9yIEVSUl9QVFIgb24gZXJyb3IuCiAgKiBDYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgcmV0dXJuZWQgc3RyaW5nLgpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9jaWZzc21iLmMgYi9mcy9jaWZzL2NpZnNzbWIuYwppbmRleCA5MDRhYTQ3Li4yNjQ0YTVkIDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNzbWIuYworKysgYi9mcy9jaWZzL2NpZnNzbWIuYwpAQCAtNTI0Nyw3ICs1MjQ3LDcgQEAKIAkgKiBTYW1iYSBzZXJ2ZXIgaWdub3JlcyBzZXQgb2YgZmlsZSBzaXplIHRvIHplcm8gZHVlIHRvIGJ1Z3MgaW4gc29tZQogCSAqIG9sZGVyIGNsaWVudHMsIGJ1dCB3ZSBzaG91bGQgYmUgcHJlY2lzZSAtIHdlIHVzZSBTZXRGaWxlU2l6ZSB0bwogCSAqIHNldCBmaWxlIHNpemUgYW5kIGRvIG5vdCB3YW50IHRvIHRydW5jYXRlIGZpbGUgc2l6ZSB0byB6ZXJvCi0JICogYWNjaWRlbnRseSBhcyBoYXBwZW5lZCBvbiBvbmUgU2FtYmEgc2VydmVyIGJldGEgYnkgcHV0dGluZworCSAqIGFjY2lkZW50YWxseSBhcyBoYXBwZW5lZCBvbiBvbmUgU2FtYmEgc2VydmVyIGJldGEgYnkgcHV0dGluZwogCSAqIHplcm8gaW5zdGVhZCBvZiAtMSBoZXJlCiAJICovCiAJZGF0YV9vZmZzZXQtPkVuZE9mRmlsZSA9IGNwdV90b19sZTY0KE5PX0NIQU5HRV82NCk7CmRpZmYgLS1naXQgYS9mcy9jaWZzL2Nvbm5lY3QuYyBiL2ZzL2NpZnMvY29ubmVjdC5jCmluZGV4IDhkNmMxN2EuLjZlMmIyYWQgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvY29ubmVjdC5jCisrKyBiL2ZzL2NpZnMvY29ubmVjdC5jCkBAIC0xNTcyLDcgKzE1NzIsNyBAQAogCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JLyogbm93IGNoZWNrIGlmIHNpZ25pbmcgbW9kZSBpcyBhY2NlcHRpYmxlICovCisJLyogbm93IGNoZWNrIGlmIHNpZ25pbmcgbW9kZSBpcyBhY2NlcHRhYmxlICovCiAJaWYgKChzZWNGbGFncyAmIENJRlNTRUNfTUFZX1NJR04pID09IDAgJiYKIAkgICAgKHNlcnZlci0+c2VjTW9kZSAmIFNFQ01PREVfU0lHTl9SRVFVSVJFRCkpCiAJCQlyZXR1cm4gZmFsc2U7CkBAIC0yOTMzLDcgKzI5MzMsNyBAQAogCQlpZiAobW91bnRfZGF0YSAhPSBtb3VudF9kYXRhX2dsb2JhbCkKIAkJCWtmcmVlKG1vdW50X2RhdGEpOwogCQkvKiBJZiBmaW5kX3VuYyBzdWNjZWVkZWQgdGhlbiByYyA9PSAwIHNvIHdlIGNhbiBub3QgZW5kICovCi0JCS8qIHVwIGFjY2lkZW50bHkgZnJlZWluZyBzb21lb25lIGVsc2VzIHRjb24gc3RydWN0ICovCisJCS8qIHVwIGFjY2lkZW50YWxseSBmcmVlaW5nIHNvbWVvbmUgZWxzZXMgdGNvbiBzdHJ1Y3QgKi8KIAkJaWYgKHRjb24pCiAJCQljaWZzX3B1dF90Y29uKHRjb24pOwogCQllbHNlIGlmIChwU2VzSW5mbykKZGlmZiAtLWdpdCBhL2ZzL2NpZnMvZGlyLmMgYi9mcy9jaWZzL2Rpci5jCmluZGV4IGRkNWYyMjkuLjllYTY1Y2YgMTAwNjQ0Ci0tLSBhL2ZzL2NpZnMvZGlyLmMKKysrIGIvZnMvY2lmcy9kaXIuYwpAQCAtMTg5LDcgKzE4OSw3IEBACiAJCQlpbm9kZS0+aV9zYiwgbW9kZSwgb2ZsYWdzLCAmb3Bsb2NrLCAmZmlsZUhhbmRsZSwgeGlkKTsKIAkJLyogRUlPIGNvdWxkIGluZGljYXRlIHRoYXQgKHBvc2l4IG9wZW4pIG9wZXJhdGlvbiBpcyBub3QKIAkJICAgc3VwcG9ydGVkLCBkZXNwaXRlIHdoYXQgc2VydmVyIGNsYWltZWQgaW4gY2FwYWJpbGl0eQotCQkgICBuZWdvdGF0aW9uLiAgRVJFTU9URSBpbmRpY2F0ZXMgREZTIGp1bmN0aW9uLCB3aGljaCBpcyBub3QKKwkJICAgbmVnb3RpYXRpb24uICBFUkVNT1RFIGluZGljYXRlcyBERlMganVuY3Rpb24sIHdoaWNoIGlzIG5vdAogCQkgICBoYW5kbGVkIGluIHBvc2l4IG9wZW4gKi8KIAogCQlpZiAocmMgPT0gMCkgewpkaWZmIC0tZ2l0IGEvZnMvY29uZmlnZnMvZGlyLmMgYi9mcy9jb25maWdmcy9kaXIuYwppbmRleCA5MGZmM2NiLi4zMzEzZGQxIDEwMDY0NAotLS0gYS9mcy9jb25maWdmcy9kaXIuYworKysgYi9mcy9jb25maWdmcy9kaXIuYwpAQCAtOTkwLDcgKzk5MCw3IEBACiAgKiBUaGlzIGRlc2NyaWJlcyB0aGVzZSBmdW5jdGlvbnMgYW5kIHRoZWlyIGhlbHBlcnMuCiAgKgogICogQWxsb3cgYW5vdGhlciBrZXJuZWwgc3lzdGVtIHRvIGRlcGVuZCBvbiBhIGNvbmZpZ19pdGVtLiAgSWYgdGhpcwotICogaGFwcGVucywgdGhlIGl0ZW0gY2Fubm90IGdvIGF3YXkgdW50aWwgdGhlIGRlcGVuZGFudCBjYW4gbGl2ZSB3aXRob3V0CisgKiBoYXBwZW5zLCB0aGUgaXRlbSBjYW5ub3QgZ28gYXdheSB1bnRpbCB0aGUgZGVwZW5kZW50IGNhbiBsaXZlIHdpdGhvdXQKICAqIGl0LiAgVGhlIGlkZWEgaXMgdG8gZ2l2ZSBjbGllbnQgbW9kdWxlcyBhcyBzaW1wbGUgYW4gaW50ZXJmYWNlIGFzCiAgKiBwb3NzaWJsZS4gIFdoZW4gYSBzeXN0ZW0gYXNrcyB0aGVtIHRvIGRlcGVuZCBvbiBhbiBpdGVtLCB0aGV5IGp1c3QKICAqIGNhbGwgY29uZmlnZnNfZGVwZW5kX2l0ZW0oKS4gIElmIHRoZSBpdGVtIGlzIGxpdmUgYW5kIHRoZSBjbGllbnQKZGlmZiAtLWdpdCBhL2ZzL2RsbS9sb2NrLmMgYi9mcy9kbG0vbG9jay5jCmluZGV4IDA0YjhjNDQuLjU2ZDZiZmMgMTAwNjQ0Ci0tLSBhL2ZzL2RsbS9sb2NrLmMKKysrIGIvZnMvZGxtL2xvY2suYwpAQCAtNTE5LDcgKzUxOSw3IEBACiAJfQogfQogCi0vKiBXaGVuIGFsbCByZWZlcmVuY2VzIHRvIHRoZSByc2IgYXJlIGdvbmUgaXQncyB0cmFuc2ZlcmVkIHRvCisvKiBXaGVuIGFsbCByZWZlcmVuY2VzIHRvIHRoZSByc2IgYXJlIGdvbmUgaXQncyB0cmFuc2ZlcnJlZCB0bwogICAgdGhlIHRvc3NlZCBsaXN0IGZvciBsYXRlciBkaXNwb3NhbC4gKi8KIAogc3RhdGljIHZvaWQgcHV0X3JzYihzdHJ1Y3QgZGxtX3JzYiAqcikKZGlmZiAtLWdpdCBhL2ZzL2RsbS9sb3djb21tcy5jIGIvZnMvZGxtL2xvd2NvbW1zLmMKaW5kZXggYmZmYTFlNy4uNWUyYzcxZiAxMDA2NDQKLS0tIGEvZnMvZGxtL2xvd2NvbW1zLmMKKysrIGIvZnMvZGxtL2xvd2NvbW1zLmMKQEAgLTgxMCw3ICs4MTAsNyBAQAogCiAJLyoKIAkgKiBBZGQgaXQgdG8gdGhlIGFjdGl2ZSBxdWV1ZSBpbiBjYXNlIHdlIGdvdCBkYXRhCi0JICogYmV3ZWVuIHByb2Nlc3NpbmcgdGhlIGFjY2VwdCBhZGRpbmcgdGhlIHNvY2tldAorCSAqIGJldHdlZW4gcHJvY2Vzc2luZyB0aGUgYWNjZXB0IGFkZGluZyB0aGUgc29ja2V0CiAJICogdG8gdGhlIHJlYWRfc29ja2V0cyBsaXN0CiAJICovCiAJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KENGX1JFQURfUEVORElORywgJmFkZGNvbi0+ZmxhZ3MpKQpkaWZmIC0tZ2l0IGEvZnMvZGxtL3JlY292ZXIuYyBiL2ZzL2RsbS9yZWNvdmVyLmMKaW5kZXggZWRhNDNmMy4uMTQ2MzgyMyAxMDA2NDQKLS0tIGEvZnMvZGxtL3JlY292ZXIuYworKysgYi9mcy9kbG0vcmVjb3Zlci5jCkBAIC0zMDQsNyArMzA0LDcgQEAKIH0KIAogLyoKLSAqIFByb3BvZ2F0ZSB0aGUgbmV3IG1hc3RlciBub2RlaWQgdG8gbG9ja3MKKyAqIFByb3BhZ2F0ZSB0aGUgbmV3IG1hc3RlciBub2RlaWQgdG8gbG9ja3MKICAqIFRoZSBORVdfTUFTVEVSIGZsYWcgdGVsbHMgZGxtX3JlY292ZXJfbG9ja3MoKSB3aGljaCByc2IncyB0byBjb25zaWRlci4KICAqIFRoZSBORVdfTUFTVEVSMiBmbGFnIHRlbGxzIHJlY292ZXJfbHZiKCkgYW5kIHNldF9sb2Nrc19wdXJnZWQoKSB3aGljaAogICogcnNiJ3MgdG8gY29uc2lkZXIuCmRpZmYgLS1naXQgYS9mcy9lY3J5cHRmcy9tYWluLmMgYi9mcy9lY3J5cHRmcy9tYWluLmMKaW5kZXggYzI3YzBlYy4uZmRiMmViMCAxMDA2NDQKLS0tIGEvZnMvZWNyeXB0ZnMvbWFpbi5jCisrKyBiL2ZzL2VjcnlwdGZzL21haW4uYwpAQCAtMjc2LDcgKzI3Niw3IEBACiAvKioKICAqIGVjcnlwdGZzX3BhcnNlX29wdGlvbnMKICAqIEBzYjogVGhlIGVjcnlwdGZzIHN1cGVyIGJsb2NrCi0gKiBAb3B0aW9uczogVGhlIG9wdGlvbnMgcGFzZWQgdG8gdGhlIGtlcm5lbAorICogQG9wdGlvbnM6IFRoZSBvcHRpb25zIHBhc3NlZCB0byB0aGUga2VybmVsCiAgKgogICogUGFyc2UgbW91bnQgb3B0aW9uczoKICAqIGRlYnVnPU4gCSAgIC0gZWNyeXB0ZnNfdmVyYm9zaXR5IGxldmVsIGZvciBkZWJ1ZyBvdXRwdXQKQEAgLTg0MCw3ICs4NDAsNyBAQAogCX0KIAlyYyA9IGVjcnlwdGZzX2luaXRfbWVzc2FnaW5nKCk7CiAJaWYgKHJjKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiRmFpbHVyZSBvY2N1cmVkIHdoaWxlIGF0dGVtcHRpbmcgdG8gIgorCQlwcmludGsoS0VSTl9FUlIgIkZhaWx1cmUgb2NjdXJyZWQgd2hpbGUgYXR0ZW1wdGluZyB0byAiCiAJCQkJImluaXRpYWxpemUgdGhlIGNvbW11bmljYXRpb25zIGNoYW5uZWwgdG8gIgogCQkJCSJlY3J5cHRmc2RcbiIpOwogCQlnb3RvIG91dF9kZXN0cm95X2t0aHJlYWQ7CmRpZmYgLS1naXQgYS9mcy9ldmVudHBvbGwuYyBiL2ZzL2V2ZW50cG9sbC5jCmluZGV4IGVkMzg4MDEuLmY5Y2ZkMTYgMTAwNjQ0Ci0tLSBhL2ZzL2V2ZW50cG9sbC5jCisrKyBiL2ZzL2V2ZW50cG9sbC5jCkBAIC0xODEsNyArMTgxLDcgQEAKIAogCS8qCiAJICogVGhpcyBpcyBhIHNpbmdsZSBsaW5rZWQgbGlzdCB0aGF0IGNoYWlucyBhbGwgdGhlICJzdHJ1Y3QgZXBpdGVtIiB0aGF0Ci0JICogaGFwcGVuZWQgd2hpbGUgdHJhbnNmZXJpbmcgcmVhZHkgZXZlbnRzIHRvIHVzZXJzcGFjZSB3L291dAorCSAqIGhhcHBlbmVkIHdoaWxlIHRyYW5zZmVycmluZyByZWFkeSBldmVudHMgdG8gdXNlcnNwYWNlIHcvb3V0CiAJICogaG9sZGluZyAtPmxvY2suCiAJICovCiAJc3RydWN0IGVwaXRlbSAqb3ZmbGlzdDsKQEAgLTYwNiw3ICs2MDYsNyBAQAogCSAqIFdlIGRvIG5vdCBuZWVkIHRvIGhvbGQgImVwLT5tdHgiIGhlcmUgYmVjYXVzZSB0aGUgZXBvbGwgZmlsZQogCSAqIGlzIG9uIHRoZSB3YXkgdG8gYmUgcmVtb3ZlZCBhbmQgbm8gb25lIGhhcyByZWZlcmVuY2VzIHRvIGl0CiAJICogYW55bW9yZS4gVGhlIG9ubHkgaGl0IG1pZ2h0IGNvbWUgZnJvbSBldmVudHBvbGxfcmVsZWFzZV9maWxlKCkgYnV0Ci0JICogaG9sZGluZyAiZXBtdXRleCIgaXMgc3VmZmljZW50IGhlcmUuCisJICogaG9sZGluZyAiZXBtdXRleCIgaXMgc3VmZmljaWVudCBoZXJlLgogCSAqLwogCW11dGV4X2xvY2soJmVwbXV0ZXgpOwogCkBAIC03MjAsNyArNzIwLDcgQEAKIAkvKgogCSAqIFdlIGRvbid0IHdhbnQgdG8gZ2V0ICJmaWxlLT5mX2xvY2siIGJlY2F1c2UgaXQgaXMgbm90CiAJICogbmVjZXNzYXJ5LiBJdCBpcyBub3QgbmVjZXNzYXJ5IGJlY2F1c2Ugd2UncmUgaW4gdGhlICJzdHJ1Y3QgZmlsZSIKLQkgKiBjbGVhbnVwIHBhdGgsIGFuZCB0aGlzIG1lYW5zIHRoYXQgbm9vbmUgaXMgdXNpbmcgdGhpcyBmaWxlIGFueW1vcmUuCisJICogY2xlYW51cCBwYXRoLCBhbmQgdGhpcyBtZWFucyB0aGF0IG5vIG9uZSBpcyB1c2luZyB0aGlzIGZpbGUgYW55bW9yZS4KIAkgKiBTbywgZm9yIGV4YW1wbGUsIGVwb2xsX2N0bCgpIGNhbm5vdCBoaXQgaGVyZSBzaW5jZSBpZiB3ZSByZWFjaCB0aGlzCiAJICogcG9pbnQsIHRoZSBmaWxlIGNvdW50ZXIgYWxyZWFkeSB3ZW50IHRvIHplcm8gYW5kIGZnZXQoKSB3b3VsZCBmYWlsLgogCSAqIFRoZSBvbmx5IGhpdCBtaWdodCBjb21lIGZyb20gZXBfZnJlZSgpIGJ1dCBieSBob2xkaW5nIHRoZSBtdXRleApAQCAtMTExMiw3ICsxMTEyLDcgQEAKIAkJCQkgKiBUcmlnZ2VyIG1vZGUsIHdlIG5lZWQgdG8gaW5zZXJ0IGJhY2sgaW5zaWRlCiAJCQkJICogdGhlIHJlYWR5IGxpc3QsIHNvIHRoYXQgdGhlIG5leHQgY2FsbCB0bwogCQkJCSAqIGVwb2xsX3dhaXQoKSB3aWxsIGNoZWNrIGFnYWluIHRoZSBldmVudHMKLQkJCQkgKiBhdmFpbGFiaWxpdHkuIEF0IHRoaXMgcG9pbnQsIG5vb25lIGNhbiBpbnNlcnQKKwkJCQkgKiBhdmFpbGFiaWxpdHkuIEF0IHRoaXMgcG9pbnQsIG5vIG9uZSBjYW4gaW5zZXJ0CiAJCQkJICogaW50byBlcC0+cmRsbGlzdCBiZXNpZGVzIHVzLiBUaGUgZXBvbGxfY3RsKCkKIAkJCQkgKiBjYWxsZXJzIGFyZSBsb2NrZWQgb3V0IGJ5CiAJCQkJICogZXBfc2Nhbl9yZWFkeV9saXN0KCkgaG9sZGluZyAibXR4IiBhbmQgdGhlCmRpZmYgLS1naXQgYS9mcy9leG9mcy9jb21tb24uaCBiL2ZzL2V4b2ZzL2NvbW1vbi5oCmluZGV4IDVlNzRhZDMuLjNiYmQ0NjkgMTAwNjQ0Ci0tLSBhL2ZzL2V4b2ZzL2NvbW1vbi5oCisrKyBiL2ZzL2V4b2ZzL2NvbW1vbi5oCkBAIC0xMTUsNyArMTE1LDcgQEAKICAqIERlc2NyaWJlcyB0aGUgcmFpZCB1c2VkIGluIHRoZSBGUy4gSXQgaXMgcGFydCBvZiB0aGUgZGV2aWNlIHRhYmxlLgogICogVGhpcyBoZXJlIGlzIHRha2VuIGZyb20gdGhlIHBORlMtb2JqZWN0cyBkZWZpbml0aW9uLiBJbiBleG9mcyB3ZQogICogdXNlIG9uZSByYWlkIHBvbGljeSB0aHJvdWdoLW91dCB0aGUgZmlsZXN5c3RlbS4gKE5PVEU6IHRoZSBmdW5ueQotICogYWxpZ25tZW50IGF0IGJlZ2luaW5nLiBXZSB0YWtlIGNhcmUgb2YgaXQgYXQgZXhvZnNfZGV2aWNlX3RhYmxlLgorICogYWxpZ25tZW50IGF0IGJlZ2lubmluZy4gV2UgdGFrZSBjYXJlIG9mIGl0IGF0IGV4b2ZzX2RldmljZV90YWJsZS4KICAqLwogc3RydWN0IGV4b2ZzX2R0X2RhdGFfbWFwIHsKIAlfX2xlMzIJY2JfbnVtX2NvbXBzOwpAQCAtMTM2LDcgKzEzNiw3IEBACiAJdTgJc3lzdGVtaWRbT1NEX1NZU1RFTUlEX0xFTl07CiAJX19sZTY0CWxvbmdfbmFtZV9vZmZzZXQ7CS8qIElmICEwIHRoZW4gb2Zmc2V0LWluLWZpbGUgKi8KIAlfX2xlMzIJb3NkbmFtZV9sZW47CQkvKiAqLwotCXU4CW9zZG5hbWVbNDRdOwkJLyogRW1iYmVkZWQsIFVzdXNhbGx5IGFuIGFzY2kgdXVpZCAqLworCXU4CW9zZG5hbWVbNDRdOwkJLyogRW1iYmVkZWQsIFVzdWFsbHkgYW4gYXNjaSB1dWlkICovCiB9IF9fcGFja2VkOwogCiAvKgpkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9iYWxsb2MuYyBiL2ZzL2V4dDIvYmFsbG9jLmMKaW5kZXggMGQwNmY0ZS4uOGY0NGNlZiAxMDA2NDQKLS0tIGEvZnMvZXh0Mi9iYWxsb2MuYworKysgYi9mcy9leHQyL2JhbGxvYy5jCkBAIC04NTAsNyArODUwLDcgQEAKIAkJcnN2X3dpbmRvd19yZW1vdmUoc2IsIG15X3Jzdik7CiAKIAkvKgotCSAqIExldCdzIGJvb2sgdGhlIHdob2xlIGF2YWxpYWJsZSB3aW5kb3cgZm9yIG5vdy4gIFdlIHdpbGwgY2hlY2sgdGhlCisJICogTGV0J3MgYm9vayB0aGUgd2hvbGUgYXZhaWxhYmxlIHdpbmRvdyBmb3Igbm93LiAgV2Ugd2lsbCBjaGVjayB0aGUKIAkgKiBkaXNrIGJpdG1hcCBsYXRlciBhbmQgdGhlbiwgaWYgdGhlcmUgYXJlIGZyZWUgYmxvY2tzIHRoZW4gd2UgYWRqdXN0CiAJICogdGhlIHdpbmRvdyBzaXplIGlmIGl0J3MgbGFyZ2VyIHRoYW4gcmVxdWVzdGVkLgogCSAqIE90aGVyd2lzZSwgd2Ugd2lsbCByZW1vdmUgdGhpcyBub2RlIGZyb20gdGhlIHRyZWUgbmV4dCB0aW1lCkBAIC0xMzU3LDkgKzEzNTcsOSBAQAogCQkJZ290byBhbGxvY2F0ZWQ7CiAJfQogCS8qCi0JICogV2UgbWF5IGVuZCB1cCBhIGJvZ3VzIGVhbGllciBFTk9TUEMgZXJyb3IgZHVlIHRvCisJICogV2UgbWF5IGVuZCB1cCBhIGJvZ3VzIGVhcmxpZXIgRU5PU1BDIGVycm9yIGR1ZSB0bwogCSAqIGZpbGVzeXN0ZW0gaXMgImZ1bGwiIG9mIHJlc2VydmF0aW9ucywgYnV0Ci0JICogdGhlcmUgbWF5YmUgaW5kZWVkIGZyZWUgYmxvY2tzIGF2YWxpYWJsZSBvbiBkaXNrCisJICogdGhlcmUgbWF5YmUgaW5kZWVkIGZyZWUgYmxvY2tzIGF2YWlsYWJsZSBvbiBkaXNrCiAJICogSW4gdGhpcyBjYXNlLCB3ZSBqdXN0IGZvcmdldCBhYm91dCB0aGUgcmVzZXJ2YXRpb25zCiAJICoganVzdCBkbyBibG9jayBhbGxvY2F0aW9uIGFzIHdpdGhvdXQgcmVzZXJ2YXRpb25zLgogCSAqLwpkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9pbm9kZS5jIGIvZnMvZXh0Mi9pbm9kZS5jCmluZGV4IGM0N2Y3MDYuLjc4OGUwOWEgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIvaW5vZGUuYworKysgYi9mcy9leHQyL2lub2RlLmMKQEAgLTMwNSw3ICszMDUsNyBAQAogCQlyZXR1cm4gaW5kLT5iaC0+Yl9ibG9ja25yOwogCiAJLyoKLQkgKiBJdCBpcyBnb2luZyB0byBiZSByZWZlcmVkIGZyb20gaW5vZGUgaXRzZWxmPyBPSywganVzdCBwdXQgaXQgaW50bworCSAqIEl0IGlzIGdvaW5nIHRvIGJlIHJlZmVycmVkIGZyb20gaW5vZGUgaXRzZWxmPyBPSywganVzdCBwdXQgaXQgaW50bwogCSAqIHRoZSBzYW1lIGN5bGluZGVyIGdyb3VwIHRoZW4uCiAJICovCiAJYmdfc3RhcnQgPSBleHQyX2dyb3VwX2ZpcnN0X2Jsb2NrX25vKGlub2RlLT5pX3NiLCBlaS0+aV9ibG9ja19ncm91cCk7CkBAIC05MTMsNyArOTEzLDcgQEAKICAqCiAgKglXaGVuIHdlIGRvIHRydW5jYXRlKCkgd2UgbWF5IGhhdmUgdG8gY2xlYW4gdGhlIGVuZHMgb2Ygc2V2ZXJhbCBpbmRpcmVjdAogICoJYmxvY2tzIGJ1dCBsZWF2ZSB0aGUgYmxvY2tzIHRoZW1zZWx2ZXMgYWxpdmUuIEJsb2NrIGlzIHBhcnRpYWxseQotICoJdHJ1bmNhdGVkIGlmIHNvbWUgZGF0YSBiZWxvdyB0aGUgbmV3IGlfc2l6ZSBpcyByZWZlcmVkIGZyb20gaXQgKGFuZAorICoJdHJ1bmNhdGVkIGlmIHNvbWUgZGF0YSBiZWxvdyB0aGUgbmV3IGlfc2l6ZSBpcyByZWZlcnJlZCBmcm9tIGl0IChhbmQKICAqCWl0IGlzIG9uIHRoZSBwYXRoIHRvIHRoZSBmaXJzdCBjb21wbGV0ZWx5IHRydW5jYXRlZCBkYXRhIGJsb2NrLCBpbmRlZWQpLgogICoJV2UgaGF2ZSB0byBmcmVlIHRoZSB0b3Agb2YgdGhhdCBwYXRoIGFsb25nIHdpdGggZXZlcnl0aGluZyB0byB0aGUgcmlnaHQKICAqCW9mIHRoZSBwYXRoLiBTaW5jZSBubyBhbGxvY2F0aW9uIHBhc3QgdGhlIHRydW5jYXRpb24gcG9pbnQgaXMgcG9zc2libGUKQEAgLTk5MCw3ICs5OTAsNyBAQAogICoJQHA6CWFycmF5IG9mIGJsb2NrIG51bWJlcnMKICAqCUBxOglwb2ludHMgaW1tZWRpYXRlbHkgcGFzdCB0aGUgZW5kIG9mIGFycmF5CiAgKgotICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcmVkIGZyb20gdGhhdCBhcnJheSAobnVtYmVycyBhcmUKKyAqCVdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJyZWQgZnJvbSB0aGF0IGFycmF5IChudW1iZXJzIGFyZQogICoJc3RvcmVkIGFzIGxpdHRsZS1lbmRpYW4gMzItYml0KSBhbmQgdXBkYXRpbmcgQGlub2RlLT5pX2Jsb2NrcwogICoJYXBwcm9wcmlhdGVseS4KICAqLwpAQCAtMTAzMCw3ICsxMDMwLDcgQEAKICAqCUBxOglwb2ludGVyIGltbWVkaWF0ZWx5IHBhc3QgdGhlIGVuZCBvZiBhcnJheQogICoJQGRlcHRoOglkZXB0aCBvZiB0aGUgYnJhbmNoZXMgdG8gZnJlZQogICoKLSAqCVdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJlZCBmcm9tIHRoZXNlIGJyYW5jaGVzIChudW1iZXJzIGFyZQorICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcnJlZCBmcm9tIHRoZXNlIGJyYW5jaGVzIChudW1iZXJzIGFyZQogICoJc3RvcmVkIGFzIGxpdHRsZS1lbmRpYW4gMzItYml0KSBhbmQgdXBkYXRpbmcgQGlub2RlLT5pX2Jsb2NrcwogICoJYXBwcm9wcmlhdGVseS4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvZXh0Mi9zdXBlci5jIGIvZnMvZXh0Mi9zdXBlci5jCmluZGV4IDc3MzE2OTUuLjBhNzhkYWUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIvc3VwZXIuYworKysgYi9mcy9leHQyL3N1cGVyLmMKQEAgLTEzODIsNyArMTM4Miw3IEBACiAKIC8qIFJlYWQgZGF0YSBmcm9tIHF1b3RhZmlsZSAtIGF2b2lkIHBhZ2VjYWNoZSBhbmQgc3VjaCBiZWNhdXNlIHdlIGNhbm5vdCBhZmZvcmQKICAqIGFjcXVpcmluZyB0aGUgbG9ja3MuLi4gQXMgcXVvdGEgZmlsZXMgYXJlIG5ldmVyIHRydW5jYXRlZCBhbmQgcXVvdGEgY29kZQotICogaXRzZWxmIHNlcmlhbGl6ZXMgdGhlIG9wZXJhdGlvbnMgKGFuZCBub29uZSBlbHNlIHNob3VsZCB0b3VjaCB0aGUgZmlsZXMpCisgKiBpdHNlbGYgc2VyaWFsaXplcyB0aGUgb3BlcmF0aW9ucyAoYW5kIG5vIG9uZSBlbHNlIHNob3VsZCB0b3VjaCB0aGUgZmlsZXMpCiAgKiB3ZSBkb24ndCBoYXZlIHRvIGJlIGFmcmFpZCBvZiByYWNlcyAqLwogc3RhdGljIHNzaXplX3QgZXh0Ml9xdW90YV9yZWFkKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIGludCB0eXBlLCBjaGFyICpkYXRhLAogCQkJICAgICAgIHNpemVfdCBsZW4sIGxvZmZfdCBvZmYpCmRpZmYgLS1naXQgYS9mcy9leHQyL3hhdHRyLmMgYi9mcy9leHQyL3hhdHRyLmMKaW5kZXggYzJlNGRjZS4uNTI5OTcwNiAxMDA2NDQKLS0tIGEvZnMvZXh0Mi94YXR0ci5jCisrKyBiL2ZzL2V4dDIveGF0dHIuYwpAQCAtMzUsNyArMzUsNyBAQAogICogICArLS0tLS0tLS0tLS0tLS0tLS0tKwogICoKICAqIFRoZSBibG9jayBoZWFkZXIgaXMgZm9sbG93ZWQgYnkgbXVsdGlwbGUgZW50cnkgZGVzY3JpcHRvcnMuIFRoZXNlIGVudHJ5Ci0gKiBkZXNjcmlwdG9ycyBhcmUgdmFyaWFibGUgaW4gc2l6ZSwgYW5kIGFsbGlnbmVkIHRvIEVYVDJfWEFUVFJfUEFECisgKiBkZXNjcmlwdG9ycyBhcmUgdmFyaWFibGUgaW4gc2l6ZSwgYW5kIGFsaWduZWQgdG8gRVhUMl9YQVRUUl9QQUQKICAqIGJ5dGUgYm91bmRhcmllcy4gVGhlIGVudHJ5IGRlc2NyaXB0b3JzIGFyZSBzb3J0ZWQgYnkgYXR0cmlidXRlIG5hbWUsCiAgKiBzbyB0aGF0IHR3byBleHRlbmRlZCBhdHRyaWJ1dGUgYmxvY2tzIGNhbiBiZSBjb21wYXJlZCBlZmZpY2llbnRseS4KICAqCmRpZmYgLS1naXQgYS9mcy9leHQzL2JhbGxvYy5jIGIvZnMvZXh0My9iYWxsb2MuYwppbmRleCAxNTMyNDIxOC4uZmU1MjI5NyAxMDA2NDQKLS0tIGEvZnMvZXh0My9iYWxsb2MuYworKysgYi9mcy9leHQzL2JhbGxvYy5jCkBAIC01OTAsNyArNTkwLDcgQEAKIAkJCQlCVUZGRVJfVFJBQ0UoZGVidWdfYmgsICJEZWxldGVkISIpOwogCQkJCWlmICghYmgyamgoYml0bWFwX2JoKS0+Yl9jb21taXR0ZWRfZGF0YSkKIAkJCQkJQlVGRkVSX1RSQUNFKGRlYnVnX2JoLAotCQkJCQkJIk5vIGNvbW1pdGVkIGRhdGEgaW4gYml0bWFwIik7CisJCQkJCQkiTm8gY29tbWl0dGVkIGRhdGEgaW4gYml0bWFwIik7CiAJCQkJQlVGRkVSX1RSQUNFMihkZWJ1Z19iaCwgYml0bWFwX2JoLCAiYml0bWFwIik7CiAJCQkJX19icmVsc2UoZGVidWdfYmgpOwogCQkJfQpAQCAtMTA2Myw3ICsxMDYzLDcgQEAKIAkJcnN2X3dpbmRvd19yZW1vdmUoc2IsIG15X3Jzdik7CiAKIAkvKgotCSAqIExldCdzIGJvb2sgdGhlIHdob2xlIGF2YWxpYWJsZSB3aW5kb3cgZm9yIG5vdy4gIFdlIHdpbGwgY2hlY2sgdGhlCisJICogTGV0J3MgYm9vayB0aGUgd2hvbGUgYXZhaWxhYmxlIHdpbmRvdyBmb3Igbm93LiAgV2Ugd2lsbCBjaGVjayB0aGUKIAkgKiBkaXNrIGJpdG1hcCBsYXRlciBhbmQgdGhlbiwgaWYgdGhlcmUgYXJlIGZyZWUgYmxvY2tzIHRoZW4gd2UgYWRqdXN0CiAJICogdGhlIHdpbmRvdyBzaXplIGlmIGl0J3MgbGFyZ2VyIHRoYW4gcmVxdWVzdGVkLgogCSAqIE90aGVyd2lzZSwgd2Ugd2lsbCByZW1vdmUgdGhpcyBub2RlIGZyb20gdGhlIHRyZWUgbmV4dCB0aW1lCkBAIC0xNDU2LDcgKzE0NTYsNyBAQAogICoKICAqIGV4dDNfc2hvdWxkX3JldHJ5X2FsbG9jKCkgaXMgY2FsbGVkIHdoZW4gRU5PU1BDIGlzIHJldHVybmVkLCBhbmQgaWYKICAqIGl0IGlzIHByb2ZpdGFibGUgdG8gcmV0cnkgdGhlIG9wZXJhdGlvbiwgdGhpcyBmdW5jdGlvbiB3aWxsIHdhaXQKLSAqIGZvciB0aGUgY3VycmVudCBvciBjb21taXRpbmcgdHJhbnNhY3Rpb24gdG8gY29tcGxldGUsIGFuZCB0aGVuCisgKiBmb3IgdGhlIGN1cnJlbnQgb3IgY29tbWl0dGluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSwgYW5kIHRoZW4KICAqIHJldHVybiBUUlVFLgogICoKICAqIGlmIHRoZSB0b3RhbCBudW1iZXIgb2YgcmV0cmllcyBleGNlZWQgdGhyZWUgdGltZXMsIHJldHVybiBGQUxTRS4KQEAgLTE2MzIsOSArMTYzMiw5IEBACiAJCQlnb3RvIGFsbG9jYXRlZDsKIAl9CiAJLyoKLQkgKiBXZSBtYXkgZW5kIHVwIGEgYm9ndXMgZWFsaWVyIEVOT1NQQyBlcnJvciBkdWUgdG8KKwkgKiBXZSBtYXkgZW5kIHVwIGEgYm9ndXMgZWFybGllciBFTk9TUEMgZXJyb3IgZHVlIHRvCiAJICogZmlsZXN5c3RlbSBpcyAiZnVsbCIgb2YgcmVzZXJ2YXRpb25zLCBidXQKLQkgKiB0aGVyZSBtYXliZSBpbmRlZWQgZnJlZSBibG9ja3MgYXZhbGlhYmxlIG9uIGRpc2sKKwkgKiB0aGVyZSBtYXliZSBpbmRlZWQgZnJlZSBibG9ja3MgYXZhaWxhYmxlIG9uIGRpc2sKIAkgKiBJbiB0aGlzIGNhc2UsIHdlIGp1c3QgZm9yZ2V0IGFib3V0IHRoZSByZXNlcnZhdGlvbnMKIAkgKiBqdXN0IGRvIGJsb2NrIGFsbG9jYXRpb24gYXMgd2l0aG91dCByZXNlcnZhdGlvbnMuCiAJICovCmRpZmYgLS1naXQgYS9mcy9leHQzL2lub2RlLmMgYi9mcy9leHQzL2lub2RlLmMKaW5kZXggZmUyNTQxZC4uYjVjMmYzYyAxMDA2NDQKLS0tIGEvZnMvZXh0My9pbm9kZS5jCisrKyBiL2ZzL2V4dDMvaW5vZGUuYwpAQCAtMjA1NSw3ICsyMDU1LDcgQEAKICAqCiAgKglXaGVuIHdlIGRvIHRydW5jYXRlKCkgd2UgbWF5IGhhdmUgdG8gY2xlYW4gdGhlIGVuZHMgb2Ygc2V2ZXJhbAogICoJaW5kaXJlY3QgYmxvY2tzIGJ1dCBsZWF2ZSB0aGUgYmxvY2tzIHRoZW1zZWx2ZXMgYWxpdmUuIEJsb2NrIGlzCi0gKglwYXJ0aWFsbHkgdHJ1bmNhdGVkIGlmIHNvbWUgZGF0YSBiZWxvdyB0aGUgbmV3IGlfc2l6ZSBpcyByZWZlcmVkCisgKglwYXJ0aWFsbHkgdHJ1bmNhdGVkIGlmIHNvbWUgZGF0YSBiZWxvdyB0aGUgbmV3IGlfc2l6ZSBpcyByZWZlcnJlZAogICoJZnJvbSBpdCAoYW5kIGl0IGlzIG9uIHRoZSBwYXRoIHRvIHRoZSBmaXJzdCBjb21wbGV0ZWx5IHRydW5jYXRlZAogICoJZGF0YSBibG9jaywgaW5kZWVkKS4gIFdlIGhhdmUgdG8gZnJlZSB0aGUgdG9wIG9mIHRoYXQgcGF0aCBhbG9uZwogICoJd2l0aCBldmVyeXRoaW5nIHRvIHRoZSByaWdodCBvZiB0aGUgcGF0aC4gU2luY2Ugbm8gYWxsb2NhdGlvbgpAQCAtMjE4NCw3ICsyMTg0LDcgQEAKICAqIEBmaXJzdDoJYXJyYXkgb2YgYmxvY2sgbnVtYmVycwogICogQGxhc3Q6CXBvaW50cyBpbW1lZGlhdGVseSBwYXN0IHRoZSBlbmQgb2YgYXJyYXkKICAqCi0gKiBXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVyZWQgZnJvbSB0aGF0IGFycmF5IChudW1iZXJzIGFyZSBzdG9yZWQgYXMKKyAqIFdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJyZWQgZnJvbSB0aGF0IGFycmF5IChudW1iZXJzIGFyZSBzdG9yZWQgYXMKICAqIGxpdHRsZS1lbmRpYW4gMzItYml0KSBhbmQgdXBkYXRpbmcgQGlub2RlLT5pX2Jsb2NrcyBhcHByb3ByaWF0ZWx5LgogICoKICAqIFdlIGFjY3VtdWxhdGUgY29udGlndW91cyBydW5zIG9mIGJsb2NrcyB0byBmcmVlLiAgQ29udmVuaWVudGx5LCBpZiB0aGVzZQpAQCAtMjI3Miw3ICsyMjcyLDcgQEAKICAqCUBsYXN0Oglwb2ludGVyIGltbWVkaWF0ZWx5IHBhc3QgdGhlIGVuZCBvZiBhcnJheQogICoJQGRlcHRoOglkZXB0aCBvZiB0aGUgYnJhbmNoZXMgdG8gZnJlZQogICoKLSAqCVdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJlZCBmcm9tIHRoZXNlIGJyYW5jaGVzIChudW1iZXJzIGFyZQorICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcnJlZCBmcm9tIHRoZXNlIGJyYW5jaGVzIChudW1iZXJzIGFyZQogICoJc3RvcmVkIGFzIGxpdHRsZS1lbmRpYW4gMzItYml0KSBhbmQgdXBkYXRpbmcgQGlub2RlLT5pX2Jsb2NrcwogICoJYXBwcm9wcmlhdGVseS4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvZXh0My9yZXNpemUuYyBiL2ZzL2V4dDMvcmVzaXplLmMKaW5kZXggMTA4YjE0Mi4uNzkxNmU0Y2UgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDMvcmVzaXplLmMKKysrIGIvZnMvZXh0My9yZXNpemUuYwpAQCAtMTAwOSw3ICsxMDA5LDcgQEAKIAogCWlmICh0ZXN0X29wdChzYiwgREVCVUcpKQogCQlwcmludGsoS0VSTl9ERUJVRyAiRVhUMy1mczogZXh0ZW5kaW5nIGxhc3QgZ3JvdXAgZnJvbSAiRTNGU0JMSwotCQkgICAgICAgIiB1cHRvICJFM0ZTQkxLIiBibG9ja3NcbiIsCisJCSAgICAgICAiIHVwIHRvICJFM0ZTQkxLIiBibG9ja3NcbiIsCiAJCSAgICAgICBvX2Jsb2Nrc19jb3VudCwgbl9ibG9ja3NfY291bnQpOwogCiAJaWYgKG5fYmxvY2tzX2NvdW50ID09IDAgfHwgbl9ibG9ja3NfY291bnQgPT0gb19ibG9ja3NfY291bnQpCmRpZmYgLS1naXQgYS9mcy9leHQzL3N1cGVyLmMgYi9mcy9leHQzL3N1cGVyLmMKaW5kZXggMDcxNjg5Zi4uM2M2YTllMCAxMDA2NDQKLS0tIGEvZnMvZXh0My9zdXBlci5jCisrKyBiL2ZzL2V4dDMvc3VwZXIuYwpAQCAtMjkyNSw3ICsyOTI1LDcgQEAKIAogLyogUmVhZCBkYXRhIGZyb20gcXVvdGFmaWxlIC0gYXZvaWQgcGFnZWNhY2hlIGFuZCBzdWNoIGJlY2F1c2Ugd2UgY2Fubm90IGFmZm9yZAogICogYWNxdWlyaW5nIHRoZSBsb2Nrcy4uLiBBcyBxdW90YSBmaWxlcyBhcmUgbmV2ZXIgdHJ1bmNhdGVkIGFuZCBxdW90YSBjb2RlCi0gKiBpdHNlbGYgc2VyaWFsaXplcyB0aGUgb3BlcmF0aW9ucyAoYW5kIG5vb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKKyAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm8gb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKICAqIHdlIGRvbid0IGhhdmUgdG8gYmUgYWZyYWlkIG9mIHJhY2VzICovCiBzdGF0aWMgc3NpemVfdCBleHQzX3F1b3RhX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUsIGNoYXIgKmRhdGEsCiAJCQkgICAgICAgc2l6ZV90IGxlbiwgbG9mZl90IG9mZikKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvYmFsbG9jLmMgYi9mcy9leHQ0L2JhbGxvYy5jCmluZGV4IDk3Yjk3MGUuLjFjNjcxMzkgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvYmFsbG9jLmMKKysrIGIvZnMvZXh0NC9iYWxsb2MuYwpAQCAtNTQ3LDcgKzU0Nyw3IEBACiAgKgogICogZXh0NF9zaG91bGRfcmV0cnlfYWxsb2MoKSBpcyBjYWxsZWQgd2hlbiBFTk9TUEMgaXMgcmV0dXJuZWQsIGFuZCBpZgogICogaXQgaXMgcHJvZml0YWJsZSB0byByZXRyeSB0aGUgb3BlcmF0aW9uLCB0aGlzIGZ1bmN0aW9uIHdpbGwgd2FpdAotICogZm9yIHRoZSBjdXJyZW50IG9yIGNvbW1pdGluZyB0cmFuc2FjdGlvbiB0byBjb21wbGV0ZSwgYW5kIHRoZW4KKyAqIGZvciB0aGUgY3VycmVudCBvciBjb21taXR0aW5nIHRyYW5zYWN0aW9uIHRvIGNvbXBsZXRlLCBhbmQgdGhlbgogICogcmV0dXJuIFRSVUUuCiAgKgogICogaWYgdGhlIHRvdGFsIG51bWJlciBvZiByZXRyaWVzIGV4Y2VlZCB0aHJlZSB0aW1lcywgcmV0dXJuIEZBTFNFLgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRlbnRzLmMgYi9mcy9leHQ0L2V4dGVudHMuYwppbmRleCBkZDJjYjUwLi40ODkwZDZmIDEwMDY0NAotLS0gYS9mcy9leHQ0L2V4dGVudHMuYworKysgYi9mcy9leHQ0L2V4dGVudHMuYwpAQCAtMTcyOSw3ICsxNzI5LDcgQEAKIAkJQlVHX09OKG5wYXRoLT5wX2RlcHRoICE9IHBhdGgtPnBfZGVwdGgpOwogCQllaCA9IG5wYXRoW2RlcHRoXS5wX2hkcjsKIAkJaWYgKGxlMTZfdG9fY3B1KGVoLT5laF9lbnRyaWVzKSA8IGxlMTZfdG9fY3B1KGVoLT5laF9tYXgpKSB7Ci0JCQlleHRfZGVidWcoIm5leHQgbGVhZiBpc250IGZ1bGwoJWQpXG4iLAorCQkJZXh0X2RlYnVnKCJuZXh0IGxlYWYgaXNuJ3QgZnVsbCglZClcbiIsCiAJCQkJICBsZTE2X3RvX2NwdShlaC0+ZWhfZW50cmllcykpOwogCQkJcGF0aCA9IG5wYXRoOwogCQkJZ290byByZXBlYXQ7CkBAIC0yNTMzLDcgKzI1MzMsNyBAQAogLyoKICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IGV4dDRfZXh0X21hcF9ibG9ja3MoKSBpZiBzb21lb25lIHRyaWVzIHRvIHdyaXRlCiAgKiB0byBhbiB1bmluaXRpYWxpemVkIGV4dGVudC4gSXQgbWF5IHJlc3VsdCBpbiBzcGxpdHRpbmcgdGhlIHVuaW5pdGlhbGl6ZWQKLSAqIGV4dGVudCBpbnRvIG11bHRpcGxlIGV4dGVudHMgKHVwdG8gdGhyZWUgLSBvbmUgaW5pdGlhbGl6ZWQgYW5kIHR3bworICogZXh0ZW50IGludG8gbXVsdGlwbGUgZXh0ZW50cyAodXAgdG8gdGhyZWUgLSBvbmUgaW5pdGlhbGl6ZWQgYW5kIHR3bwogICogdW5pbml0aWFsaXplZCkuCiAgKiBUaGVyZSBhcmUgdGhyZWUgcG9zc2liaWxpdGllczoKICAqICAgYT4gVGhlcmUgaXMgbm8gc3BsaXQgcmVxdWlyZWQ6IEVudGlyZSBleHRlbnQgc2hvdWxkIGJlIGluaXRpYWxpemVkCkBAIC0zMTc0LDcgKzMxNzQsNyBAQAogCQkJCQkJICAgcGF0aCwgZmxhZ3MpOwogCQkvKgogCQkgKiBGbGFnIHRoZSBpbm9kZShub24gYWlvIGNhc2UpIG9yIGVuZF9pbyBzdHJ1Y3QgKGFpbyBjYXNlKQotCQkgKiB0aGF0IHRoaXMgSU8gbmVlZHMgdG8gY29udmVydGlvbiB0byB3cml0dGVuIHdoZW4gSU8gaXMKKwkJICogdGhhdCB0aGlzIElPIG5lZWRzIHRvIGNvbnZlcnNpb24gdG8gd3JpdHRlbiB3aGVuIElPIGlzCiAJCSAqIGNvbXBsZXRlZAogCQkgKi8KIAkJaWYgKGlvICYmICEoaW8tPmZsYWcgJiBFWFQ0X0lPX0VORF9VTldSSVRURU4pKSB7CkBAIC0zNDYwLDEwICszNDYwLDEwIEBACiAJCWV4dDRfZXh0X21hcmtfdW5pbml0aWFsaXplZCgmbmV3ZXgpOwogCQkvKgogCQkgKiBpb19lbmQgc3RydWN0dXJlIHdhcyBjcmVhdGVkIGZvciBldmVyeSBJTyB3cml0ZSB0byBhbgotCQkgKiB1bmluaXRpYWxpemVkIGV4dGVudC4gVG8gYXZvaWQgdW5lY2Vzc2FyeSBjb252ZXJzaW9uLAorCQkgKiB1bmluaXRpYWxpemVkIGV4dGVudC4gVG8gYXZvaWQgdW5uZWNlc3NhcnkgY29udmVyc2lvbiwKIAkJICogaGVyZSB3ZSBmbGFnIHRoZSBJTyB0aGF0IHJlYWxseSBuZWVkcyB0aGUgY29udmVyc2lvbi4KIAkJICogRm9yIG5vbiBhc3ljbiBkaXJlY3QgSU8gY2FzZSwgZmxhZyB0aGUgaW5vZGUgc3RhdGUKLQkJICogdGhhdCB3ZSBuZWVkIHRvIHBlcmZvcm0gY29udmVydGlvbiB3aGVuIElPIGlzIGRvbmUuCisJCSAqIHRoYXQgd2UgbmVlZCB0byBwZXJmb3JtIGNvbnZlcnNpb24gd2hlbiBJTyBpcyBkb25lLgogCQkgKi8KIAkJaWYgKChmbGFncyAmIEVYVDRfR0VUX0JMT0NLU19QUkVfSU8pKSB7CiAJCQlpZiAoaW8gJiYgIShpby0+ZmxhZyAmIEVYVDRfSU9fRU5EX1VOV1JJVFRFTikpIHsKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvZnN5bmMuYyBiL2ZzL2V4dDQvZnN5bmMuYwppbmRleCA3Zjc0MDE5Li40NjczYmMwIDEwMDY0NAotLS0gYS9mcy9leHQ0L2ZzeW5jLmMKKysrIGIvZnMvZXh0NC9mc3luYy5jCkBAIC0xMDEsNyArMTAxLDcgQEAKIAkJICogdG8gdGhlIHdvcmstdG8tYmUgc2NoZWR1bGUgaXMgZnJlZWQuCiAJCSAqCiAJCSAqIFRodXMgd2UgbmVlZCB0byBrZWVwIHRoZSBpbyBzdHJ1Y3R1cmUgc3RpbGwgdmFsaWQgaGVyZSBhZnRlcgotCQkgKiBjb252ZXJ0aW9uIGZpbmlzaGVkLiBUaGUgaW8gc3RydWN0dXJlIGhhcyBhIGZsYWcgdG8KKwkJICogY29udmVyc2lvbiBmaW5pc2hlZC4gVGhlIGlvIHN0cnVjdHVyZSBoYXMgYSBmbGFnIHRvCiAJCSAqIGF2b2lkIGRvdWJsZSBjb252ZXJ0aW5nIGZyb20gYm90aCBmc3luYyBhbmQgYmFja2dyb3VuZCB3b3JrCiAJCSAqIHF1ZXVlIHdvcmsuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9pbm9kZS5jIGIvZnMvZXh0NC9pbm9kZS5jCmluZGV4IDFhODYyODIuLmFkOGUzMDMgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvaW5vZGUuYworKysgYi9mcy9leHQ0L2lub2RlLmMKQEAgLTI1ODgsNyArMjU4OCw3IEBACiAgKiBiZWNhdXNlIHdlIHNob3VsZCBoYXZlIGhvbGVzIGZpbGxlZCBmcm9tIGV4dDRfcGFnZV9ta3dyaXRlKCkuIFdlIGV2ZW4gZG9uJ3QKICAqIG5lZWQgdG8gZmlsZSB0aGUgaW5vZGUgdG8gdGhlIHRyYW5zYWN0aW9uJ3MgbGlzdCBpbiBvcmRlcmVkIG1vZGUgYmVjYXVzZSBpZgogICogd2UgYXJlIHdyaXRpbmcgYmFjayBkYXRhIGFkZGVkIGJ5IHdyaXRlKCksIHRoZSBpbm9kZSBpcyBhbHJlYWR5IHRoZXJlIGFuZCBpZgotICogd2UgYXJlIHdyaXRpbmcgYmFjayBkYXRhIG1vZGlmaWVkIHZpYSBtbWFwKCksIG5vb25lIGd1YXJhbnRlZXMgaW4gd2hpY2gKKyAqIHdlIGFyZSB3cml0aW5nIGJhY2sgZGF0YSBtb2RpZmllZCB2aWEgbW1hcCgpLCBubyBvbmUgZ3VhcmFudGVlcyBpbiB3aGljaAogICogdHJhbnNhY3Rpb24gdGhlIGRhdGEgd2lsbCBoaXQgdGhlIGRpc2suIEluIGNhc2Ugd2UgYXJlIGpvdXJuYWxpbmcgZGF0YSwgd2UKICAqIGNhbm5vdCBzdGFydCB0cmFuc2FjdGlvbiBkaXJlY3RseSBiZWNhdXNlIHRyYW5zYWN0aW9uIHN0YXJ0IHJhbmtzIGFib3ZlIHBhZ2UKICAqIGxvY2sgc28gd2UgaGF2ZSB0byBkbyBzb21lIG1hZ2ljLgpAQCAtMjY5MCw3ICsyNjkwLDcgQEAKIAogLyoKICAqIFRoaXMgaXMgY2FsbGVkIHZpYSBleHQ0X2RhX3dyaXRlcGFnZXMoKSB0bwotICogY2FsdWxhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBjcmVkaXRzIHRvIHJlc2VydmUgdG8gZml0CisgKiBjYWxjdWxhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBjcmVkaXRzIHRvIHJlc2VydmUgdG8gZml0CiAgKiBhIHNpbmdsZSBleHRlbnQgYWxsb2NhdGlvbiBpbnRvIGEgc2luZ2xlIHRyYW5zYWN0aW9uLAogICogZXh0NF9kYV93cml0cGVhZ2VzKCkgd2lsbCBsb29wIGNhbGxpbmcgdGhpcyBiZWZvcmUKICAqIHRoZSBibG9jayBhbGxvY2F0aW9uLgpAQCAtMzMwNCw3ICszMzA0LDcgQEAKIAkgKiB0aGUgcGFnZXMgYnkgY2FsbGluZyByZWRpcnR5X3BhZ2VfZm9yX3dyaXRlcGFnZSgpIGJ1dCB0aGF0CiAJICogd291bGQgYmUgdWdseSBpbiB0aGUgZXh0cmVtZS4gIFNvIGluc3RlYWQgd2Ugd291bGQgbmVlZCB0bwogCSAqIHJlcGxpY2F0ZSBwYXJ0cyBvZiB0aGUgY29kZSBpbiB0aGUgYWJvdmUgZnVuY3Rpb25zLAotCSAqIHNpbXBsaWZ5aW5nIHRoZW0gYmVjdWFzZSB3ZSB3b3VsZG4ndCBhY3R1YWxseSBpbnRlbmQgdG8KKwkgKiBzaW1wbGlmeWluZyB0aGVtIGJlY2F1c2Ugd2Ugd291bGRuJ3QgYWN0dWFsbHkgaW50ZW5kIHRvCiAJICogd3JpdGUgb3V0IHRoZSBwYWdlcywgYnV0IHJhdGhlciBvbmx5IGNvbGxlY3QgY29udGlndW91cwogCSAqIGxvZ2ljYWwgYmxvY2sgZXh0ZW50cywgY2FsbCB0aGUgbXVsdGktYmxvY2sgYWxsb2NhdG9yLCBhbmQKIAkgKiB0aGVuIHVwZGF0ZSB0aGUgYnVmZmVyIGhlYWRzIHdpdGggdGhlIGJsb2NrIGFsbG9jYXRpb25zLgpAQCAtMzY5NCw3ICszNjk0LDcgQEAKICAqCiAgKiBUaGUgdW53cnJpdHRlbiBleHRlbnRzIHdpbGwgYmUgY29udmVydGVkIHRvIHdyaXR0ZW4gd2hlbiBESU8gaXMgY29tcGxldGVkLgogICogRm9yIGFzeW5jIGRpcmVjdCBJTywgc2luY2UgdGhlIElPIG1heSBzdGlsbCBwZW5kaW5nIHdoZW4gcmV0dXJuLCB3ZQotICogc2V0IHVwIGFuIGVuZF9pbyBjYWxsIGJhY2sgZnVuY3Rpb24sIHdoaWNoIHdpbGwgZG8gdGhlIGNvbnZlcnRpb24KKyAqIHNldCB1cCBhbiBlbmRfaW8gY2FsbCBiYWNrIGZ1bmN0aW9uLCB3aGljaCB3aWxsIGRvIHRoZSBjb252ZXJzaW9uCiAgKiB3aGVuIGFzeW5jIGRpcmVjdCBJTyBjb21wbGV0ZWQuCiAgKgogICogSWYgdGhlIE9fRElSRUNUIHdyaXRlIHdpbGwgZXh0ZW5kIHRoZSBmaWxlIHRoZW4gYWRkIHRoaXMgaW5vZGUgdG8gdGhlCkBAIC0zNzE3LDcgKzM3MTcsNyBAQAogIAkJICogV2UgY291bGQgZGlyZWN0IHdyaXRlIHRvIGhvbGVzIGFuZCBmYWxsb2NhdGUuCiAJCSAqCiAgCQkgKiBBbGxvY2F0ZWQgYmxvY2tzIHRvIGZpbGwgdGhlIGhvbGUgYXJlIG1hcmtlZCBhcyB1bmluaXRpYWxpemVkCi0gCQkgKiB0byBwcmV2ZW50IHBhcmFsZWwgYnVmZmVyZWQgcmVhZCB0byBleHBvc2UgdGhlIHN0YWxlIGRhdGEKKyAJCSAqIHRvIHByZXZlbnQgcGFyYWxsZWwgYnVmZmVyZWQgcmVhZCB0byBleHBvc2UgdGhlIHN0YWxlIGRhdGEKICAJCSAqIGJlZm9yZSBESU8gY29tcGxldGUgdGhlIGRhdGEgSU8uCiAJCSAqCiAgCQkgKiBBcyB0byBwcmV2aW91c2x5IGZhbGxvY2F0ZWQgZXh0ZW50cywgZXh0NCBnZXRfYmxvY2sKQEAgLTM3NzgsNyArMzc3OCw3IEBACiAJCQlpbnQgZXJyOwogCQkJLyoKIAkJCSAqIGZvciBub24gQUlPIGNhc2UsIHNpbmNlIHRoZSBJTyBpcyBhbHJlYWR5Ci0JCQkgKiBjb21wbGV0ZWQsIHdlIGNvdWxkIGRvIHRoZSBjb252ZXJ0aW9uIHJpZ2h0IGhlcmUKKwkJCSAqIGNvbXBsZXRlZCwgd2UgY291bGQgZG8gdGhlIGNvbnZlcnNpb24gcmlnaHQgaGVyZQogCQkJICovCiAJCQllcnIgPSBleHQ0X2NvbnZlcnRfdW53cml0dGVuX2V4dGVudHMoaW5vZGUsCiAJCQkJCQkJICAgICBvZmZzZXQsIHJldCk7CkBAIC00MDI1LDcgKzQwMjUsNyBAQAogICoKICAqCVdoZW4gd2UgZG8gdHJ1bmNhdGUoKSB3ZSBtYXkgaGF2ZSB0byBjbGVhbiB0aGUgZW5kcyBvZiBzZXZlcmFsCiAgKglpbmRpcmVjdCBibG9ja3MgYnV0IGxlYXZlIHRoZSBibG9ja3MgdGhlbXNlbHZlcyBhbGl2ZS4gQmxvY2sgaXMKLSAqCXBhcnRpYWxseSB0cnVuY2F0ZWQgaWYgc29tZSBkYXRhIGJlbG93IHRoZSBuZXcgaV9zaXplIGlzIHJlZmVyZWQKKyAqCXBhcnRpYWxseSB0cnVuY2F0ZWQgaWYgc29tZSBkYXRhIGJlbG93IHRoZSBuZXcgaV9zaXplIGlzIHJlZmVycmVkCiAgKglmcm9tIGl0IChhbmQgaXQgaXMgb24gdGhlIHBhdGggdG8gdGhlIGZpcnN0IGNvbXBsZXRlbHkgdHJ1bmNhdGVkCiAgKglkYXRhIGJsb2NrLCBpbmRlZWQpLiAgV2UgaGF2ZSB0byBmcmVlIHRoZSB0b3Agb2YgdGhhdCBwYXRoIGFsb25nCiAgKgl3aXRoIGV2ZXJ5dGhpbmcgdG8gdGhlIHJpZ2h0IG9mIHRoZSBwYXRoLiBTaW5jZSBubyBhbGxvY2F0aW9uCkBAIC00MTY5LDcgKzQxNjksNyBAQAogICogQGZpcnN0OglhcnJheSBvZiBibG9jayBudW1iZXJzCiAgKiBAbGFzdDoJcG9pbnRzIGltbWVkaWF0ZWx5IHBhc3QgdGhlIGVuZCBvZiBhcnJheQogICoKLSAqIFdlIGFyZSBmcmVlaW5nIGFsbCBibG9ja3MgcmVmZXJlZCBmcm9tIHRoYXQgYXJyYXkgKG51bWJlcnMgYXJlIHN0b3JlZCBhcworICogV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcnJlZCBmcm9tIHRoYXQgYXJyYXkgKG51bWJlcnMgYXJlIHN0b3JlZCBhcwogICogbGl0dGxlLWVuZGlhbiAzMi1iaXQpIGFuZCB1cGRhdGluZyBAaW5vZGUtPmlfYmxvY2tzIGFwcHJvcHJpYXRlbHkuCiAgKgogICogV2UgYWNjdW11bGF0ZSBjb250aWd1b3VzIHJ1bnMgb2YgYmxvY2tzIHRvIGZyZWUuICBDb252ZW5pZW50bHksIGlmIHRoZXNlCkBAIC00MjYxLDcgKzQyNjEsNyBAQAogICoJQGxhc3Q6CXBvaW50ZXIgaW1tZWRpYXRlbHkgcGFzdCB0aGUgZW5kIG9mIGFycmF5CiAgKglAZGVwdGg6CWRlcHRoIG9mIHRoZSBicmFuY2hlcyB0byBmcmVlCiAgKgotICoJV2UgYXJlIGZyZWVpbmcgYWxsIGJsb2NrcyByZWZlcmVkIGZyb20gdGhlc2UgYnJhbmNoZXMgKG51bWJlcnMgYXJlCisgKglXZSBhcmUgZnJlZWluZyBhbGwgYmxvY2tzIHJlZmVycmVkIGZyb20gdGhlc2UgYnJhbmNoZXMgKG51bWJlcnMgYXJlCiAgKglzdG9yZWQgYXMgbGl0dGxlLWVuZGlhbiAzMi1iaXQpIGFuZCB1cGRhdGluZyBAaW5vZGUtPmlfYmxvY2tzCiAgKglhcHByb3ByaWF0ZWx5LgogICovCkBAIC01NDc4LDcgKzU0NzgsNyBAQAogfQogCiAvKgotICogQ2FsdWxhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBjcmVkaXRzIHRvIHJlc2VydmUgdG8gZml0CisgKiBDYWxjdWxhdGUgdGhlIHRvdGFsIG51bWJlciBvZiBjcmVkaXRzIHRvIHJlc2VydmUgdG8gZml0CiAgKiB0aGUgbW9kaWZpY2F0aW9uIG9mIGEgc2luZ2xlIHBhZ2VzIGludG8gYSBzaW5nbGUgdHJhbnNhY3Rpb24sCiAgKiB3aGljaCBtYXkgaW5jbHVkZSBtdWx0aXBsZSBjaHVua3Mgb2YgYmxvY2sgYWxsb2NhdGlvbnMuCiAgKgpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9tYmFsbG9jLmMgYi9mcy9leHQ0L21iYWxsb2MuYwppbmRleCBhNTgzN2E4Li5kOGExNmVlIDEwMDY0NAotLS0gYS9mcy9leHQ0L21iYWxsb2MuYworKysgYi9mcy9leHQ0L21iYWxsb2MuYwpAQCAtOTIsNyArOTIsNyBAQAogICogYmV0d2VlbiBDUFVzLiBJdCBpcyBwb3NzaWJsZSB0byBnZXQgc2NoZWR1bGVkIGF0IHRoaXMgcG9pbnQuCiAgKgogICogVGhlIGxvY2FsaXR5IGdyb3VwIHByZWFsbG9jIHNwYWNlIGlzIHVzZWQgbG9va2luZyBhdCB3aGV0aGVyIHdlIGhhdmUKLSAqIGVub3VnaCBmcmVlIHNwYWNlIChwYV9mcmVlKSB3aXRoaW5nIHRoZSBwcmVhbGxvYyBzcGFjZS4KKyAqIGVub3VnaCBmcmVlIHNwYWNlIChwYV9mcmVlKSB3aXRoaW4gdGhlIHByZWFsbG9jIHNwYWNlLgogICoKICAqIElmIHdlIGNhbid0IGFsbG9jYXRlIGJsb2NrcyB2aWEgaW5vZGUgcHJlYWxsb2Mgb3IvYW5kIGxvY2FsaXR5IGdyb3VwCiAgKiBwcmVhbGxvYyB0aGVuIHdlIGxvb2sgYXQgdGhlIGJ1ZGR5IGNhY2hlLiBUaGUgYnVkZHkgY2FjaGUgaXMgcmVwcmVzZW50ZWQKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvbWlncmF0ZS5jIGIvZnMvZXh0NC9taWdyYXRlLmMKaW5kZXggZDFiYWZhNS4uOTI4MTZiNCAxMDA2NDQKLS0tIGEvZnMvZXh0NC9taWdyYXRlLmMKKysrIGIvZnMvZXh0NC9taWdyYXRlLmMKQEAgLTUxNyw3ICs1MTcsNyBAQAogCSAqIHN0YXJ0IHdpdGggb25lIGNyZWRpdCBhY2NvdW50ZWQgZm9yCiAJICogc3VwZXJibG9jayBtb2RpZmljYXRpb24uCiAJICoKLQkgKiBGb3IgdGhlIHRtcF9pbm9kZSB3ZSBhbHJlYWR5IGhhdmUgY29tbWl0ZWQgdGhlCisJICogRm9yIHRoZSB0bXBfaW5vZGUgd2UgYWxyZWFkeSBoYXZlIGNvbW1pdHRlZCB0aGUKIAkgKiB0cmFzY2F0aW9uIHRoYXQgY3JlYXRlZCB0aGUgaW5vZGUuIExhdGVyIGFzIGFuZAogCSAqIHdoZW4gd2UgYWRkIGV4dGVudHMgd2UgZXh0ZW50IHRoZSBqb3VybmFsCiAJICovCmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmMKaW5kZXggMjI1NDZhZC4uMDU2NDc0YiAxMDA2NDQKLS0tIGEvZnMvZXh0NC9zdXBlci5jCisrKyBiL2ZzL2V4dDQvc3VwZXIuYwpAQCAtNjE3LDcgKzYxNyw3IEBACiAJICogZmlsZXN5c3RlbSB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuIG1hcmtlZCByZWFkL29ubHkgYW5kIHRoZQogCSAqIGpvdXJuYWwgaGFzIGJlZW4gYWJvcnRlZC4gIFdlIHJldHVybiAxIGFzIGEgaGludCB0byBjYWxsZXJzCiAJICogd2hvIG1pZ2h0IHdoYXQgdG8gdXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbQotCSAqIGV4dDRfZ3JwX2xvY2tlZF9lcnJvcigpIHRvIGRpc3Rpbmd1aXNoIGJld2VlbiB0aGUKKwkgKiBleHQ0X2dycF9sb2NrZWRfZXJyb3IoKSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZQogCSAqIEVSUk9SU19DT05UIGFuZCBFUlJPUlNfUk8gY2FzZSwgYW5kIHBlcmhhcHMgcmV0dXJuIG1vcmUKIAkgKiBhZ2dyZXNzaXZlbHkgZnJvbSB0aGUgZXh0NCBmdW5jdGlvbiBpbiBxdWVzdGlvbiwgd2l0aCBhCiAJICogbW9yZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgpAQCAtNDYyNCw3ICs0NjI0LDcgQEAKIAogLyogUmVhZCBkYXRhIGZyb20gcXVvdGFmaWxlIC0gYXZvaWQgcGFnZWNhY2hlIGFuZCBzdWNoIGJlY2F1c2Ugd2UgY2Fubm90IGFmZm9yZAogICogYWNxdWlyaW5nIHRoZSBsb2Nrcy4uLiBBcyBxdW90YSBmaWxlcyBhcmUgbmV2ZXIgdHJ1bmNhdGVkIGFuZCBxdW90YSBjb2RlCi0gKiBpdHNlbGYgc2VyaWFsaXplcyB0aGUgb3BlcmF0aW9ucyAoYW5kIG5vb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKKyAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm8gb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKICAqIHdlIGRvbid0IGhhdmUgdG8gYmUgYWZyYWlkIG9mIHJhY2VzICovCiBzdGF0aWMgc3NpemVfdCBleHQ0X3F1b3RhX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUsIGNoYXIgKmRhdGEsCiAJCQkgICAgICAgc2l6ZV90IGxlbiwgbG9mZl90IG9mZikKZGlmZiAtLWdpdCBhL2ZzL2ZyZWV2eGZzL3Z4ZnNfZnNoZWFkLmMgYi9mcy9mcmVldnhmcy92eGZzX2ZzaGVhZC5jCmluZGV4IDc4OTQ4YjQuLmM5YTZhOTQgMTAwNjQ0Ci0tLSBhL2ZzL2ZyZWV2eGZzL3Z4ZnNfZnNoZWFkLmMKKysrIGIvZnMvZnJlZXZ4ZnMvdnhmc19mc2hlYWQuYwpAQCAtMTY0LDcgKzE2NCw3IEBACiAJCWdvdG8gb3V0X2ZyZWVfcGZwOwogCX0KIAlpZiAoIVZYRlNfSVNJTFQoVlhGU19JTk8oaW5mcC0+dnNpX3N0aWxpc3QpKSkgewotCQlwcmludGsoS0VSTl9FUlIgInZ4ZnM6IHN0cnVjdHVhbCBsaXN0IGlub2RlIGlzIG9mIHdyb25nIHR5cGUgKCV4KVxuIiwKKwkJcHJpbnRrKEtFUk5fRVJSICJ2eGZzOiBzdHJ1Y3R1cmFsIGxpc3QgaW5vZGUgaXMgb2Ygd3JvbmcgdHlwZSAoJXgpXG4iLAogCQkJCVZYRlNfSU5PKGluZnAtPnZzaV9zdGlsaXN0KS0+dmlpX21vZGUgJiBWWEZTX1RZUEVfTUFTSyk7IAogCQlnb3RvIG91dF9pcHV0X3N0aWxpc3Q7CiAJfQpkaWZmIC0tZ2l0IGEvZnMvZnJlZXZ4ZnMvdnhmc19sb29rdXAuYyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfbG9va3VwLmMKaW5kZXggNmM1MTMxZC4uMzM2MGYxZSAxMDA2NDQKLS0tIGEvZnMvZnJlZXZ4ZnMvdnhmc19sb29rdXAuYworKysgYi9mcy9mcmVldnhmcy92eGZzX2xvb2t1cC5jCkBAIC0xNjIsNyArMTYyLDcgQEAKIC8qKgogICogdnhmc19pbm9kZV9ieV9uYW1lIC0gZmluZCBpbm9kZSBudW1iZXIgZm9yIGRlbnRyeQogICogQGRpcDoJZGlyZWN0b3J5IHRvIHNlYXJjaCBpbgotICogQGRwOgkJZGVudHJ5IHdlIHNlYWNoIGZvcgorICogQGRwOgkJZGVudHJ5IHdlIHNlYXJjaCBmb3IKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqICAgdnhmc19pbm9kZV9ieV9uYW1lIGZpbmRzIG91dCB0aGUgaW5vZGUgbnVtYmVyIG9mCmRpZmYgLS1naXQgYS9mcy9mcmVldnhmcy92eGZzX29sdC5oIGIvZnMvZnJlZXZ4ZnMvdnhmc19vbHQuaAppbmRleCBkODMyNDI5Li5iN2IzYWY1IDEwMDY0NAotLS0gYS9mcy9mcmVldnhmcy92eGZzX29sdC5oCisrKyBiL2ZzL2ZyZWV2eGZzL3Z4ZnNfb2x0LmgKQEAgLTYwLDcgKzYwLDcgQEAKICAqCiAgKiBUaGUgT2JqZWN0IExvY2F0aW9uIFRhYmxlIGhlYWRlciBpcyBwbGFjZWQgYXQgdGhlIGJlZ2lubmluZyBvZiBlYWNoCiAgKiBPTFQgZXh0ZW50LiAgSXQgaXMgdXNlZCB0byBmaW5nIGNlcnRhaW4gZmlsZXN5c3RlbS13aWRlIG1ldGFkYXRhLCBlLmcuCi0gKiB0aGUgaW5pdGFsIGlub2RlIGxpc3QsIHRoZSBmaWxlc2V0IGhlYWRlciBvciB0aGUgZGV2aWNlIGNvbmZpZ3VyYXRpb24uCisgKiB0aGUgaW5pdGlhbCBpbm9kZSBsaXN0LCB0aGUgZmlsZXNldCBoZWFkZXIgb3IgdGhlIGRldmljZSBjb25maWd1cmF0aW9uLgogICovCiBzdHJ1Y3Qgdnhmc19vbHQgewogCXVfaW50MzJfdAlvbHRfbWFnaWM7CS8qIG1hZ2ljIG51bWJlcgkJCSovCmRpZmYgLS1naXQgYS9mcy9mcy13cml0ZWJhY2suYyBiL2ZzL2ZzLXdyaXRlYmFjay5jCmluZGV4IGI1ZWQ1NDEuLjM0NTkxZWU4IDEwMDY0NAotLS0gYS9mcy9mcy13cml0ZWJhY2suYworKysgYi9mcy9mcy13cml0ZWJhY2suYwpAQCAtMTQ0LDcgKzE0NCw3IEBACiAgKgogICogRGVzY3JpcHRpb246CiAgKiAgIFRoaXMgZG9lcyBXQl9TWU5DX05PTkUgb3Bwb3J0dW5pc3RpYyB3cml0ZWJhY2suIFRoZSBJTyBpcyBvbmx5Ci0gKiAgIHN0YXJ0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMsIHdlIG1ha2Ugbm8gZ3VhcmVudGVlcyBvbgorICogICBzdGFydGVkIHdoZW4gdGhpcyBmdW5jdGlvbiByZXR1cm5zLCB3ZSBtYWtlIG5vIGd1YXJhbnRlZXMgb24KICAqICAgY29tcGxldGlvbi4gQ2FsbGVyIG5lZWQgbm90IGhvbGQgc2Igc191bW91bnQgc2VtYXBob3JlLgogICoKICAqLwpkaWZmIC0tZ2l0IGEvZnMvZnVzZS9maWxlLmMgYi9mcy9mdXNlL2ZpbGUuYwppbmRleCA2ZWEwMDczLi44MmE2NjQ2IDEwMDY0NAotLS0gYS9mcy9mdXNlL2ZpbGUuYworKysgYi9mcy9mdXNlL2ZpbGUuYwpAQCAtNTIzLDcgKzUyMyw3IEBACiAJCWdvdG8gb3V0OwogCiAJLyoKLQkgKiBQYWdlIHdyaXRlYmFjayBjYW4gZXh0ZW5kIGJleW9uZCB0aGUgbGlmdGltZSBvZiB0aGUKKwkgKiBQYWdlIHdyaXRlYmFjayBjYW4gZXh0ZW5kIGJleW9uZCB0aGUgbGlmZXRpbWUgb2YgdGhlCiAJICogcGFnZS1jYWNoZSBwYWdlLCBzbyBtYWtlIHN1cmUgd2UgcmVhZCBhIHByb3Blcmx5IHN5bmNlZAogCSAqIHBhZ2UuCiAJICovCmRpZmYgLS1naXQgYS9mcy9nZnMyL2JtYXAuYyBiL2ZzL2dmczIvYm1hcC5jCmluZGV4IGVmM2RjNGIuLjc0YWRkMmQgMTAwNjQ0Ci0tLSBhL2ZzL2dmczIvYm1hcC5jCisrKyBiL2ZzL2dmczIvYm1hcC5jCkBAIC0xMTM2LDcgKzExMzYsNyBAQAogICogZWFybGllciB2ZXJzaW9ucyBvZiBHRlMyIGhhdmUgYSBidWcgaW4gdGhlIHN0dWZmZWQgZmlsZSByZWFkaW5nCiAgKiBjb2RlIHdoaWNoIHdpbGwgcmVzdWx0IGluIGEgYnVmZmVyIG92ZXJydW4gaWYgdGhlIHNpemUgaXMgbGFyZ2VyCiAgKiB0aGFuIHRoZSBtYXggc3R1ZmZlZCBmaWxlIHNpemUuIEluIG9yZGVyIHRvIHByZXZlbnQgdGhpcyBmcm9tCi0gKiBvY2N1cmluZywgc3VjaCBmaWxlcyBhcmUgdW5zdHVmZmVkLCBidXQgaW4gb3RoZXIgY2FzZXMgd2UgY2FuCisgKiBvY2N1cnJpbmcsIHN1Y2ggZmlsZXMgYXJlIHVuc3R1ZmZlZCwgYnV0IGluIG90aGVyIGNhc2VzIHdlIGNhbgogICoganVzdCB1cGRhdGUgdGhlIGlub2RlIHNpemUgZGlyZWN0bHkuCiAgKgogICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCBvciAtdmUgb24gZXJyb3IKZGlmZiAtLWdpdCBhL2ZzL2dmczIvZ2xvY2suYyBiL2ZzL2dmczIvZ2xvY2suYwppbmRleCBlMjQzMTMxLi5mMDc2NDNlIDEwMDY0NAotLS0gYS9mcy9nZnMyL2dsb2NrLmMKKysrIGIvZnMvZ2ZzMi9nbG9jay5jCkBAIC0xMTIzLDcgKzExMjMsNyBAQAogICogQG51bWJlcjogdGhlIGxvY2sgbnVtYmVyCiAgKiBAZ2xvcHM6IHRoZSBnbG9jayBvcGVyYXRpb25zIGZvciB0aGUgdHlwZSBvZiBnbG9jawogICogQHN0YXRlOiB0aGUgc3RhdGUgdG8gYWNxdWlyZSB0aGUgZ2xvY2sgaW4KLSAqIEBmbGFnczogbW9kaWZpZXIgZmxhZ3MgZm9yIHRoZSBhcXVpc2l0aW9uCisgKiBAZmxhZ3M6IG1vZGlmaWVyIGZsYWdzIGZvciB0aGUgYWNxdWlzaXRpb24KICAqIEBnaDogdGhlIHN0cnVjdCBnZnMyX2hvbGRlcgogICoKICAqIFJldHVybnM6IGVycm5vCmRpZmYgLS1naXQgYS9mcy9nZnMyL3N1cGVyLmMgYi9mcy9nZnMyL3N1cGVyLmMKaW5kZXggZWM3M2VkNy4uYTRlMjNkNiAxMDA2NDQKLS0tIGEvZnMvZ2ZzMi9zdXBlci5jCisrKyBiL2ZzL2dmczIvc3VwZXIuYwpAQCAtNjU3LDcgKzY1Nyw3IEBACiAgKiBAc2RwOiB0aGUgZmlsZSBzeXN0ZW0KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGZsdXNoZXMgZGF0YSBhbmQgbWV0YSBkYXRhIGZvciBhbGwgbWFjaGluZXMgYnkKLSAqIGFxdWlyaW5nIHRoZSB0cmFuc2FjdGlvbiBsb2cgZXhjbHVzaXZlbHkuICBBbGwgam91cm5hbHMgYXJlCisgKiBhY3F1aXJpbmcgdGhlIHRyYW5zYWN0aW9uIGxvZyBleGNsdXNpdmVseS4gIEFsbCBqb3VybmFscyBhcmUKICAqIGVuc3VyZWQgdG8gYmUgaW4gYSBjbGVhbiBzdGF0ZSBhcyB3ZWxsLgogICoKICAqIFJldHVybnM6IGVycm5vCmRpZmYgLS1naXQgYS9mcy9qYmQvY29tbWl0LmMgYi9mcy9qYmQvY29tbWl0LmMKaW5kZXggZGE4NzFlZS4uNjliMTgwNCAxMDA2NDQKLS0tIGEvZnMvamJkL2NvbW1pdC5jCisrKyBiL2ZzL2piZC9jb21taXQuYwpAQCAtMzYyLDcgKzM2Miw3IEBACiAJICogd2UgZG8gbm90IHJlcXVpcmUgaXQgdG8gcmVtZW1iZXIgZXhhY3RseSB3aGljaCBvbGQgYnVmZmVycyBpdAogCSAqIGhhcyByZXNlcnZlZC4gIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBleGlzdGluZyBiZWhhdmlvdXIKIAkgKiB0aGF0IG11bHRpcGxlIGpvdXJuYWxfZ2V0X3dyaXRlX2FjY2VzcygpIGNhbGxzIHRvIHRoZSBzYW1lCi0JICogYnVmZmVyIGFyZSBwZXJmZWN0bHkgcGVybWlzc2FibGUuCisJICogYnVmZmVyIGFyZSBwZXJmZWN0bHkgcGVybWlzc2libGUuCiAJICovCiAJd2hpbGUgKGNvbW1pdF90cmFuc2FjdGlvbi0+dF9yZXNlcnZlZF9saXN0KSB7CiAJCWpoID0gY29tbWl0X3RyYW5zYWN0aW9uLT50X3Jlc2VydmVkX2xpc3Q7CmRpZmYgLS1naXQgYS9mcy9qYmQvam91cm5hbC5jIGIvZnMvamJkL2pvdXJuYWwuYwppbmRleCBlYjExNjAxLi5iMzcxM2FmIDEwMDY0NAotLS0gYS9mcy9qYmQvam91cm5hbC5jCisrKyBiL2ZzL2piZC9qb3VybmFsLmMKQEAgLTc3MCw3ICs3NzAsNyBAQAogCWpvdXJuYWwtPmpfd2J1ZnNpemUgPSBuOwogCWpvdXJuYWwtPmpfd2J1ZiA9IGttYWxsb2MobiAqIHNpemVvZihzdHJ1Y3QgYnVmZmVyX2hlYWQqKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFqb3VybmFsLT5qX3didWYpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogQ2FudCBhbGxvY2F0ZSBiaHMgZm9yIGNvbW1pdCB0aHJlYWRcbiIsCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IENhbid0IGFsbG9jYXRlIGJocyBmb3IgY29tbWl0IHRocmVhZFxuIiwKIAkJCV9fZnVuY19fKTsKIAkJZ290byBvdXRfZXJyOwogCX0KQEAgLTgzMSw3ICs4MzEsNyBAQAogCWpvdXJuYWwtPmpfd2J1ZnNpemUgPSBuOwogCWpvdXJuYWwtPmpfd2J1ZiA9IGttYWxsb2MobiAqIHNpemVvZihzdHJ1Y3QgYnVmZmVyX2hlYWQqKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFqb3VybmFsLT5qX3didWYpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICIlczogQ2FudCBhbGxvY2F0ZSBiaHMgZm9yIGNvbW1pdCB0aHJlYWRcbiIsCisJCXByaW50ayhLRVJOX0VSUiAiJXM6IENhbid0IGFsbG9jYXRlIGJocyBmb3IgY29tbWl0IHRocmVhZFxuIiwKIAkJCV9fZnVuY19fKTsKIAkJZ290byBvdXRfZXJyOwogCX0KZGlmZiAtLWdpdCBhL2ZzL2piZC9yZXZva2UuYyBiL2ZzL2piZC9yZXZva2UuYwppbmRleCBkMjkwMTgzLi4zMDVhOTA3IDEwMDY0NAotLS0gYS9mcy9qYmQvcmV2b2tlLmMKKysrIGIvZnMvamJkL3Jldm9rZS5jCkBAIC03MSw3ICs3MSw3IEBACiAgKiBzd2l0Y2hpbmcgaGFzaCB0YWJsZXMgdW5kZXIgdGhlbS4gRm9yIG9wZXJhdGlvbnMgb24gdGhlIGxpc3RzIG9mIGVudHJpZXMgaW4KICAqIHRoZSBoYXNoIHRhYmxlIGpfcmV2b2tlX2xvY2sgaXMgdXNlZC4KICAqCi0gKiBGaW5hbGx5LCBhbHNvIHJlcGxheSBjb2RlIHVzZXMgdGhlIGhhc2ggdGFibGVzIGJ1dCBhdCB0aGlzIG1vbWVudCBub29uZSBlbHNlCisgKiBGaW5hbGx5LCBhbHNvIHJlcGxheSBjb2RlIHVzZXMgdGhlIGhhc2ggdGFibGVzIGJ1dCBhdCB0aGlzIG1vbWVudCBubyBvbmUgZWxzZQogICogY2FuIHRvdWNoIHRoZW0gKGZpbGVzeXN0ZW0gaXNuJ3QgbW91bnRlZCB5ZXQpIGFuZCBoZW5jZSBubyBsb2NraW5nIGlzCiAgKiBuZWVkZWQuCiAgKi8KZGlmZiAtLWdpdCBhL2ZzL2piZC90cmFuc2FjdGlvbi5jIGIvZnMvamJkL3RyYW5zYWN0aW9uLmMKaW5kZXggNWIyZTRjMy4uNjBkMjMxOSAxMDA2NDQKLS0tIGEvZnMvamJkL3RyYW5zYWN0aW9uLmMKKysrIGIvZnMvamJkL3RyYW5zYWN0aW9uLmMKQEAgLTEzOTIsNyArMTM5Miw3IEBACiAJICogYnkgMzB4IG9yIG1vcmUuLi4KIAkgKgogCSAqIFdlIHRyeSBhbmQgb3B0aW1pemUgdGhlIHNsZWVwIHRpbWUgYWdhaW5zdCB3aGF0IHRoZSB1bmRlcmx5aW5nIGRpc2sKLQkgKiBjYW4gZG8sIGluc3RlYWQgb2YgaGF2aW5nIGEgc3RhdGljIHNsZWVwIHRpbWUuICBUaGlzIGlzIHVzZWZ1bGwgZm9yCisJICogY2FuIGRvLCBpbnN0ZWFkIG9mIGhhdmluZyBhIHN0YXRpYyBzbGVlcCB0aW1lLiAgVGhpcyBpcyB1c2VmdWwgZm9yCiAJICogdGhlIGNhc2Ugd2hlcmUgb3VyIHN0b3JhZ2UgaXMgc28gZmFzdCB0aGF0IGl0IGlzIG1vcmUgb3B0aW1hbCB0byBnbwogCSAqIGFoZWFkIGFuZCBmb3JjZSBhIGZsdXNoIGFuZCB3YWl0IGZvciB0aGUgdHJhbnNhY3Rpb24gdG8gYmUgY29tbWl0dGVkCiAJICogdGhhbiBpdCBpcyB0byB3YWl0IGZvciBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIHRpbWUgZm9yIG5ldyB3cml0ZXJzIHRvCmRpZmYgLS1naXQgYS9mcy9qYmQyL2NvbW1pdC5jIGIvZnMvamJkMi9jb21taXQuYwppbmRleCBmYTM2ZDc2Li4yMGFmNjJmIDEwMDY0NAotLS0gYS9mcy9qYmQyL2NvbW1pdC5jCisrKyBiL2ZzL2piZDIvY29tbWl0LmMKQEAgLTQwMyw3ICs0MDMsNyBAQAogCSAqIHdlIGRvIG5vdCByZXF1aXJlIGl0IHRvIHJlbWVtYmVyIGV4YWN0bHkgd2hpY2ggb2xkIGJ1ZmZlcnMgaXQKIAkgKiBoYXMgcmVzZXJ2ZWQuICBUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgZXhpc3RpbmcgYmVoYXZpb3VyCiAJICogdGhhdCBtdWx0aXBsZSBqYmQyX2pvdXJuYWxfZ2V0X3dyaXRlX2FjY2VzcygpIGNhbGxzIHRvIHRoZSBzYW1lCi0JICogYnVmZmVyIGFyZSBwZXJmZWN0bHkgcGVybWlzc2FibGUuCisJICogYnVmZmVyIGFyZSBwZXJmZWN0bHkgcGVybWlzc2libGUuCiAJICovCiAJd2hpbGUgKGNvbW1pdF90cmFuc2FjdGlvbi0+dF9yZXNlcnZlZF9saXN0KSB7CiAJCWpoID0gY29tbWl0X3RyYW5zYWN0aW9uLT50X3Jlc2VydmVkX2xpc3Q7CmRpZmYgLS1naXQgYS9mcy9qYmQyL2pvdXJuYWwuYyBiL2ZzL2piZDIvam91cm5hbC5jCmluZGV4IDkwNDA3YjguLmFiYThlYmEgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvam91cm5hbC5jCisrKyBiL2ZzL2piZDIvam91cm5hbC5jCkBAIC05MTcsNyArOTE3LDcgQEAKIAlqb3VybmFsLT5qX3didWZzaXplID0gbjsKIAlqb3VybmFsLT5qX3didWYgPSBrbWFsbG9jKG4gKiBzaXplb2Yoc3RydWN0IGJ1ZmZlcl9oZWFkKiksIEdGUF9LRVJORUwpOwogCWlmICgham91cm5hbC0+al93YnVmKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IENhbnQgYWxsb2NhdGUgYmhzIGZvciBjb21taXQgdGhyZWFkXG4iLAorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBDYW4ndCBhbGxvY2F0ZSBiaHMgZm9yIGNvbW1pdCB0aHJlYWRcbiIsCiAJCQlfX2Z1bmNfXyk7CiAJCWdvdG8gb3V0X2VycjsKIAl9CkBAIC05ODMsNyArOTgzLDcgQEAKIAlqb3VybmFsLT5qX3didWZzaXplID0gbjsKIAlqb3VybmFsLT5qX3didWYgPSBrbWFsbG9jKG4gKiBzaXplb2Yoc3RydWN0IGJ1ZmZlcl9oZWFkKiksIEdGUF9LRVJORUwpOwogCWlmICgham91cm5hbC0+al93YnVmKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAiJXM6IENhbnQgYWxsb2NhdGUgYmhzIGZvciBjb21taXQgdGhyZWFkXG4iLAorCQlwcmludGsoS0VSTl9FUlIgIiVzOiBDYW4ndCBhbGxvY2F0ZSBiaHMgZm9yIGNvbW1pdCB0aHJlYWRcbiIsCiAJCQlfX2Z1bmNfXyk7CiAJCWdvdG8gb3V0X2VycjsKIAl9CmRpZmYgLS1naXQgYS9mcy9qYmQyL3Jldm9rZS5jIGIvZnMvamJkMi9yZXZva2UuYwppbmRleCA5YWQzMjFmLi42OWZkOTM1IDEwMDY0NAotLS0gYS9mcy9qYmQyL3Jldm9rZS5jCisrKyBiL2ZzL2piZDIvcmV2b2tlLmMKQEAgLTcxLDcgKzcxLDcgQEAKICAqIHN3aXRjaGluZyBoYXNoIHRhYmxlcyB1bmRlciB0aGVtLiBGb3Igb3BlcmF0aW9ucyBvbiB0aGUgbGlzdHMgb2YgZW50cmllcyBpbgogICogdGhlIGhhc2ggdGFibGUgal9yZXZva2VfbG9jayBpcyB1c2VkLgogICoKLSAqIEZpbmFsbHksIGFsc28gcmVwbGF5IGNvZGUgdXNlcyB0aGUgaGFzaCB0YWJsZXMgYnV0IGF0IHRoaXMgbW9tZW50IG5vb25lIGVsc2UKKyAqIEZpbmFsbHksIGFsc28gcmVwbGF5IGNvZGUgdXNlcyB0aGUgaGFzaCB0YWJsZXMgYnV0IGF0IHRoaXMgbW9tZW50IG5vIG9uZSBlbHNlCiAgKiBjYW4gdG91Y2ggdGhlbSAoZmlsZXN5c3RlbSBpc24ndCBtb3VudGVkIHlldCkgYW5kIGhlbmNlIG5vIGxvY2tpbmcgaXMKICAqIG5lZWRlZC4KICAqLwpkaWZmIC0tZ2l0IGEvZnMvamJkMi90cmFuc2FjdGlvbi5jIGIvZnMvamJkMi90cmFuc2FjdGlvbi5jCmluZGV4IDFkMTE5MTAuLjA1ZmE3N2EgMTAwNjQ0Ci0tLSBhL2ZzL2piZDIvdHJhbnNhY3Rpb24uYworKysgYi9mcy9qYmQyL3RyYW5zYWN0aW9uLmMKQEAgLTE0MDMsNyArMTQwMyw3IEBACiAKIAkvKgogCSAqIE9uY2Ugd2UgZHJvcCB0X3VwZGF0ZXMsIGlmIGl0IGdvZXMgdG8gemVybyB0aGUgdHJhbnNhY3Rpb24KLQkgKiBjb3VsZCBzdGFydCBjb21taXRpbmcgb24gdXMgYW5kIGV2ZW50dWFsbHkgZGlzYXBwZWFyLiAgU28KKwkgKiBjb3VsZCBzdGFydCBjb21taXR0aW5nIG9uIHVzIGFuZCBldmVudHVhbGx5IGRpc2FwcGVhci4gIFNvCiAJICogb25jZSB3ZSBkbyB0aGlzLCB3ZSBtdXN0IG5vdCBkZXJlZmVyZW5jZSB0cmFuc2FjdGlvbgogCSAqIHBvaW50ZXIgYWdhaW4uCiAJICovCmRpZmYgLS1naXQgYS9mcy9qZmZzMi9UT0RPIGIvZnMvamZmczIvVE9ETwppbmRleCA1ZDNlYTQwLi5jYTI4OTY0IDEwMDY0NAotLS0gYS9mcy9qZmZzMi9UT0RPCisrKyBiL2ZzL2pmZnMyL1RPRE8KQEAgLTExLDcgKzExLDcgQEAKICAtIGNoZWNrcG9pbnRpbmcgKGRvIHdlIG5lZWQgdGhpcz8gc2NhbiBpcyBxdWl0ZSBmYXN0KQogIC0gbWFrZSB0aGUgc2NhbiBjb2RlIHBvcHVsYXRlIHJlYWwgaW5vZGVzIHNvIHJlYWRfaW5vZGUganVzdCBhZnRlciAKIAltb3VudCBkb2Vzbid0IGhhdmUgdG8gcmVhZCB0aGUgZmxhc2ggdHdpY2UgZm9yIGxhcmdlIGZpbGVzLgotCU1ha2UgdGhpcyBhIHBlci1pbm9kZSBvcHRpb24sIGNoYW5nYWJsZSB3aXRoIGNoYXR0ciwgc28geW91IGNhbgorCU1ha2UgdGhpcyBhIHBlci1pbm9kZSBvcHRpb24sIGNoYW5nZWFibGUgd2l0aCBjaGF0dHIsIHNvIHlvdSBjYW4KIAlkZWNpZGUgd2hpY2ggaW5vZGVzIHNob3VsZCBiZSBpbi1jb3JlIGltbWVkaWF0ZWx5IGFmdGVyIG1vdW50LgogIC0gdGVzdCwgdGVzdCwgdGVzdAogCmRpZmYgLS1naXQgYS9mcy9qZmZzMi9yZWFkaW5vZGUuYyBiL2ZzL2pmZnMyL3JlYWRpbm9kZS5jCmluZGV4IGQzMmVlOTQuLjJhYjFhMGQgMTAwNjQ0Ci0tLSBhL2ZzL2pmZnMyL3JlYWRpbm9kZS5jCisrKyBiL2ZzL2pmZnMyL3JlYWRpbm9kZS5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKgogICogUmV0dXJuczogMCBpZiB0aGUgZGF0YSBDUkMgaXMgY29ycmVjdDsKICAqIAkgICAgMSAtIGlmIGluY29ycmVjdDsKLSAqCSAgICBlcnJvciBjb2RlIGlmIGFuIGVycm9yIG9jY3VyZWQuCisgKgkgICAgZXJyb3IgY29kZSBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAqLwogc3RhdGljIGludCBjaGVja19ub2RlX2RhdGEoc3RydWN0IGpmZnMyX3NiX2luZm8gKmMsIHN0cnVjdCBqZmZzMl90bXBfZG5vZGVfaW5mbyAqdG4pCiB7CmRpZmYgLS1naXQgYS9mcy9qZmZzMi9zdW1tYXJ5LmMgYi9mcy9qZmZzMi9zdW1tYXJ5LmMKaW5kZXggODAwMTcxZC4uZTUzN2ZiMCAxMDA2NDQKLS0tIGEvZnMvamZmczIvc3VtbWFyeS5jCisrKyBiL2ZzL2pmZnMyL3N1bW1hcnkuYwpAQCAtMTIxLDcgKzEyMSw3IEBACiAJdGVtcC0+bm9kZXR5cGUgPSByaS0+bm9kZXR5cGU7CiAJdGVtcC0+aW5vZGUgPSByaS0+aW5vOwogCXRlbXAtPnZlcnNpb24gPSByaS0+dmVyc2lvbjsKLQl0ZW1wLT5vZmZzZXQgPSBjcHVfdG9famUzMihvZnMpOyAvKiByZWxhdGl2ZSBvZmZzZXQgZnJvbSB0aGUgYmVnaW5pbmcgb2YgdGhlIGplYiAqLworCXRlbXAtPm9mZnNldCA9IGNwdV90b19qZTMyKG9mcyk7IC8qIHJlbGF0aXZlIG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGplYiAqLwogCXRlbXAtPnRvdGxlbiA9IHJpLT50b3RsZW47CiAJdGVtcC0+bmV4dCA9IE5VTEw7CiAKQEAgLTEzOSw3ICsxMzksNyBAQAogCiAJdGVtcC0+bm9kZXR5cGUgPSByZC0+bm9kZXR5cGU7CiAJdGVtcC0+dG90bGVuID0gcmQtPnRvdGxlbjsKLQl0ZW1wLT5vZmZzZXQgPSBjcHVfdG9famUzMihvZnMpOwkvKiByZWxhdGl2ZSBmcm9tIHRoZSBiZWdpbmluZyBvZiB0aGUgamViICovCisJdGVtcC0+b2Zmc2V0ID0gY3B1X3RvX2plMzIob2ZzKTsJLyogcmVsYXRpdmUgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBqZWIgKi8KIAl0ZW1wLT5waW5vID0gcmQtPnBpbm87CiAJdGVtcC0+dmVyc2lvbiA9IHJkLT52ZXJzaW9uOwogCXRlbXAtPmlubyA9IHJkLT5pbm87CmRpZmYgLS1naXQgYS9mcy9qZmZzMi93YnVmLmMgYi9mcy9qZmZzMi93YnVmLmMKaW5kZXggMDdlZTE1NC4uNDUxNWJlYSAxMDA2NDQKLS0tIGEvZnMvamZmczIvd2J1Zi5jCisrKyBiL2ZzL2pmZnMyL3didWYuYwpAQCAtMTExNiw3ICsxMTE2LDcgQEAKIAogLyoKICAqIE9uIE5BTkQgd2UgdHJ5IHRvIG1hcmsgdGhpcyBibG9jayBiYWQuIElmIHRoZSBibG9jayB3YXMgZXJhc2VkIG1vcmUKLSAqIHRoYW4gTUFYX0VSQVNFX0ZBSUxVUkVTIHdlIG1hcmsgaXQgZmluYWx5IGJhZC4KKyAqIHRoYW4gTUFYX0VSQVNFX0ZBSUxVUkVTIHdlIG1hcmsgaXQgZmluYWxseSBiYWQuCiAgKiBEb24ndCBjYXJlIGFib3V0IGZhaWx1cmVzLiBUaGlzIGJsb2NrIHJlbWFpbnMgb24gdGhlIGVyYXNlLXBlbmRpbmcKICAqIG9yIGJhZGJsb2NrIGxpc3QgYXMgbG9uZyBhcyBub2JvZHkgbWFuaXB1bGF0ZXMgdGhlIGZsYXNoIHdpdGgKICAqIGEgYm9vdGxvYWRlciBvciBzb21ldGhpbmcgbGlrZSB0aGF0LgpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19kbWFwLmMgYi9mcy9qZnMvamZzX2RtYXAuYwppbmRleCBjOTJlYTNiLi40NDk2ODcyIDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2RtYXAuYworKysgYi9mcy9qZnMvamZzX2RtYXAuYwpAQCAtMTY0OSw3ICsxNjQ5LDcgQEAKIAkJfQogCiAJCS8qIHNlYXJjaCB0aGUgdHJlZSB3aXRoaW4gdGhlIGRtYXAgY29udHJvbCBwYWdlIGZvcgotCQkgKiBzdWZmaWNlbnQgZnJlZSBzcGFjZS4gIGlmIHN1ZmZpY2llbnQgZnJlZSBzcGFjZSBpcyBmb3VuZCwKKwkJICogc3VmZmljaWVudCBmcmVlIHNwYWNlLiAgaWYgc3VmZmljaWVudCBmcmVlIHNwYWNlIGlzIGZvdW5kLAogCQkgKiBkYkZpbmRMZWFmKCkgcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGxlYWYgYXQgd2hpY2gKIAkJICogZnJlZSBzcGFjZSB3YXMgZm91bmQuCiAJCSAqLwpAQCAtMjc0NCw3ICsyNzQ0LDcgQEAKIAkJCS8qIGNoZWNrIHdoaWNoIChsZWFmbm8gb3IgYnVkZHkpIGlzIHRoZSBsZWZ0IGJ1ZGR5LgogCQkJICogdGhlIGxlZnQgYnVkZHkgZ2V0cyB0byBjbGFpbSB0aGUgYmxvY2tzIHJlc3VsdGluZwogCQkJICogZnJvbSB0aGUgam9pbiB3aGlsZSB0aGUgcmlnaHQgZ2V0cyB0byBjbGFpbSBub25lLgotCQkJICogdGhlIGxlZnQgYnVkZHkgaXMgYWxzbyBlbGlnYWJsZSB0byBwYXJ0aWNpcGF0ZSBpbgorCQkJICogdGhlIGxlZnQgYnVkZHkgaXMgYWxzbyBlbGlnaWJsZSB0byBwYXJ0aWNpcGF0ZSBpbgogCQkJICogYSBqb2luIGF0IHRoZSBuZXh0IGhpZ2hlciBsZXZlbCB3aGlsZSB0aGUgcmlnaHQKIAkJCSAqIGlzIG5vdC4KIAkJCSAqCmRpZmYgLS1naXQgYS9mcy9qZnMvamZzX2V4dGVudC5jIGIvZnMvamZzL2pmc19leHRlbnQuYwppbmRleCA1ZDNiYmQxLi5lNWZlODUwIDEwMDY0NAotLS0gYS9mcy9qZnMvamZzX2V4dGVudC5jCisrKyBiL2ZzL2pmcy9qZnNfZXh0ZW50LmMKQEAgLTEyNiw3ICsxMjYsNyBAQAogCiAJLyogYWxsb2NhdGUgdGhlIGRpc2sgYmxvY2tzIGZvciB0aGUgZXh0ZW50LiAgaW5pdGlhbGx5LCBleHRCYWxsb2MoKQogCSAqIHdpbGwgdHJ5IHRvIGFsbG9jYXRlIGRpc2sgYmxvY2tzIGZvciB0aGUgcmVxdWVzdGVkIHNpemUgKHhsZW4pLgotCSAqIGlmIHRoaXMgZmFpbHMgKHhsZW4gY29udGlndW91cyBmcmVlIGJsb2NrcyBub3QgYXZhbGlhYmxlKSwgaXQnbGwKKwkgKiBpZiB0aGlzIGZhaWxzICh4bGVuIGNvbnRpZ3VvdXMgZnJlZSBibG9ja3Mgbm90IGF2YWlsYWJsZSksIGl0J2xsCiAJICogdHJ5IHRvIGFsbG9jYXRlIGEgc21hbGxlciBudW1iZXIgb2YgYmxvY2tzIChwcm9kdWNpbmcgYSBzbWFsbGVyCiAJICogZXh0ZW50KSwgd2l0aCB0aGlzIHNtYWxsZXIgbnVtYmVyIG9mIGJsb2NrcyBjb25zaXN0aW5nIG9mIHRoZQogCSAqIHJlcXVlc3RlZCBudW1iZXIgb2YgYmxvY2tzIHJvdW5kZWQgZG93biB0byB0aGUgbmV4dCBzbWFsbGVyCkBAIC00ODEsNyArNDgxLDcgQEAKICAqCiAgKgkJaW5pdGlhbGx5LCB3ZSB3aWxsIHRyeSB0byBhbGxvY2F0ZSBkaXNrIGJsb2NrcyBmb3IgdGhlCiAgKgkJcmVxdWVzdGVkIHNpemUgKG5ibG9ja3MpLiAgaWYgdGhpcyBmYWlscyAobmJsb2NrcwotICoJCWNvbnRpZ3VvdXMgZnJlZSBibG9ja3Mgbm90IGF2YWxpYWJsZSksIHdlJ2xsIHRyeSB0byBhbGxvY2F0ZQorICoJCWNvbnRpZ3VvdXMgZnJlZSBibG9ja3Mgbm90IGF2YWlsYWJsZSksIHdlJ2xsIHRyeSB0byBhbGxvY2F0ZQogICoJCWEgc21hbGxlciBudW1iZXIgb2YgYmxvY2tzIChwcm9kdWNpbmcgYSBzbWFsbGVyIGV4dGVudCksIHdpdGgKICAqCQl0aGlzIHNtYWxsZXIgbnVtYmVyIG9mIGJsb2NrcyBjb25zaXN0aW5nIG9mIHRoZSByZXF1ZXN0ZWQKICAqCQludW1iZXIgb2YgYmxvY2tzIHJvdW5kZWQgZG93biB0byB0aGUgbmV4dCBzbWFsbGVyIHBvd2VyIG9mIDIKQEAgLTU3NSw3ICs1NzUsNyBAQAogICoJCXRvIGEgbmV3IHNldCBvZiBibG9ja3MuICBJZiBtb3ZpbmcgdGhlIGV4dGVudCwgd2UgaW5pdGlhbGx5CiAgKgkJd2lsbCB0cnkgdG8gYWxsb2NhdGUgZGlzayBibG9ja3MgZm9yIHRoZSByZXF1ZXN0ZWQgc2l6ZQogICoJCShuZXduYmxrcykuICBpZiB0aGlzIGZhaWxzIChuZXcgY29udGlndW91cyBmcmVlIGJsb2NrcyBub3QKLSAqCQlhdmFsaWFibGUpLCB3ZSdsbCB0cnkgdG8gYWxsb2NhdGUgYSBzbWFsbGVyIG51bWJlciBvZgorICoJCWF2YWlsYWJsZSksIHdlJ2xsIHRyeSB0byBhbGxvY2F0ZSBhIHNtYWxsZXIgbnVtYmVyIG9mCiAgKgkJYmxvY2tzIChwcm9kdWNpbmcgYSBzbWFsbGVyIGV4dGVudCksIHdpdGggdGhpcyBzbWFsbGVyCiAgKgkJbnVtYmVyIG9mIGJsb2NrcyBjb25zaXN0aW5nIG9mIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mCiAgKgkJYmxvY2tzIHJvdW5kZWQgZG93biB0byB0aGUgbmV4dCBzbWFsbGVyIHBvd2VyIG9mIDIKZGlmZiAtLWdpdCBhL2ZzL2pmcy9qZnNfaW1hcC5jIGIvZnMvamZzL2pmc19pbWFwLmMKaW5kZXggM2EwOTQyMy4uZWQ1M2E0NyAxMDA2NDQKLS0tIGEvZnMvamZzL2pmc19pbWFwLmMKKysrIGIvZnMvamZzL2pmc19pbWFwLmMKQEAgLTEwNjksNyArMTA2OSw3IEBACiAJCSAqLwogCQlpZiAoaWFncC0+bmZyZWVleHRzID09IGNwdV90b19sZTMyKEVYVFNQRVJJQUcgLSAxKSkgewogCQkJLyogaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHRoZSBpYWcgZnJvbSB0aGUKLQkJCSAqIGFnIGV4dGVudCBmcmVlIGxpc3QsIHJlYWQgdGhlIGlhZ3MgcHJlY2VlZGluZworCQkJICogYWcgZXh0ZW50IGZyZWUgbGlzdCwgcmVhZCB0aGUgaWFncyBwcmVjZWRpbmcKIAkJCSAqIGFuZCBmb2xsb3dpbmcgdGhlIGlhZyBvbiB0aGUgYWcgZXh0ZW50IGZyZWUKIAkJCSAqIGxpc3QuCiAJCQkgKi8KQEAgLTEwOTUsNyArMTA5NSw3IEBACiAJCWludCBpbm9mcmVlZndkID0gbGUzMl90b19jcHUoaWFncC0+aW5vZnJlZWZ3ZCk7CiAKIAkJLyogaW4gcHJlcGFyYXRpb24gZm9yIHJlbW92aW5nIHRoZSBpYWcgZnJvbSB0aGUKLQkJICogYWcgaW5vZGUgZnJlZSBsaXN0LCByZWFkIHRoZSBpYWdzIHByZWNlZWRpbmcKKwkJICogYWcgaW5vZGUgZnJlZSBsaXN0LCByZWFkIHRoZSBpYWdzIHByZWNlZGluZwogCQkgKiBhbmQgZm9sbG93aW5nIHRoZSBpYWcgb24gdGhlIGFnIGlub2RlIGZyZWUKIAkJICogbGlzdC4gIGJlZm9yZSByZWFkaW5nIHRoZXNlIGlhZ3MsIHdlIG11c3QgbWFrZQogCQkgKiBzdXJlIHRoYXQgd2UgYWxyZWFkeSBkb24ndCBoYXZlIHRoZW0gaW4gaGFuZApAQCAtMTY4MSw3ICsxNjgxLDcgQEAKIAkgKiB0cnkgdG8gYWxsb2NhdGUgYSBuZXcgZXh0ZW50IG9mIGZyZWUgaW5vZGVzLgogCSAqLwogCWlmIChhZGRleHQpIHsKLQkJLyogaWYgZnJlZSBzcGFjZSBpcyBub3QgYXZhbGlhYmxlIGZvciB0aGlzIG5ldyBleHRlbnQsIHRyeQorCQkvKiBpZiBmcmVlIHNwYWNlIGlzIG5vdCBhdmFpbGFibGUgZm9yIHRoaXMgbmV3IGV4dGVudCwgdHJ5CiAJCSAqIGJlbG93IHRvIGFsbG9jYXRlIGEgZnJlZSBhbmQgZXhpc3RpbmcgKGFscmVhZHkgYmFja2VkKQogCQkgKiBpbm9kZSBmcm9tIHRoZSBhZy4KIAkJICovCkBAIC0yMDM2LDcgKzIwMzYsNyBAQAogCiAJLyogY2hlY2sgaWYgdGhpcyBpcyB0aGUgbGFzdCBmcmVlIGlub2RlIHdpdGhpbiB0aGUgaWFnLgogCSAqIGlmIHNvLCBpdCB3aWxsIGhhdmUgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhZyBmcmVlCi0JICogaW5vZGUgbGlzdCwgc28gZ2V0IHRoZSBpYWdzIHByZWNlZWRpbmcgYW5kIGZvbGxvd2luZworCSAqIGlub2RlIGxpc3QsIHNvIGdldCB0aGUgaWFncyBwcmVjZWRpbmcgYW5kIGZvbGxvd2luZwogCSAqIGl0IG9uIHRoZSBsaXN0LgogCSAqLwogCWlmIChpYWdwLT5uZnJlZWlub3MgPT0gY3B1X3RvX2xlMzIoMSkpIHsKQEAgLTIyMDgsNyArMjIwOCw3IEBACiAKIAkvKiBjaGVjayBpZiB0aGlzIGlzIHRoZSBsYXN0IGZyZWUgZXh0ZW50IHdpdGhpbiB0aGUKIAkgKiBpYWcuICBpZiBzbywgdGhlIGlhZyBtdXN0IGJlIHJlbW92ZWQgZnJvbSB0aGUgYWcKLQkgKiBmcmVlIGV4dGVudCBsaXN0LCBzbyBnZXQgdGhlIGlhZ3MgcHJlY2VlZGluZyBhbmQKKwkgKiBmcmVlIGV4dGVudCBsaXN0LCBzbyBnZXQgdGhlIGlhZ3MgcHJlY2VkaW5nIGFuZAogCSAqIGZvbGxvd2luZyB0aGUgaWFnIG9uIHRoaXMgbGlzdC4KIAkgKi8KIAlpZiAoaWFncC0+bmZyZWVleHRzID09IGNwdV90b19sZTMyKDEpKSB7CkBAIC0yNTA0LDcgKzI1MDQsNyBAQAogCQl9CiAKIAotCQkvKiBnZXQgdGhlIG5leHQgYXZhbGlhYmxlIGlhZyBudW1iZXIgKi8KKwkJLyogZ2V0IHRoZSBuZXh0IGF2YWlsYWJsZSBpYWcgbnVtYmVyICovCiAJCWlhZ25vID0gaW1hcC0+aW1fbmV4dGlhZzsKIAogCQkvKiBtYWtlIHN1cmUgdGhhdCB3ZSBoYXZlIG5vdCBleGNlZWRlZCB0aGUgbWF4aW11bSBpbm9kZQpAQCAtMjYxNSw3ICsyNjE1LDcgQEAKIAogCQlkdXBsaWNhdGVJWHRyZWUoc2IsIGJsa25vLCB4bGVuLCAmeGFkZHIpOwogCi0JCS8qIHVwZGF0ZSB0aGUgbmV4dCBhdmFsaWFibGUgaWFnIG51bWJlciAqLworCQkvKiB1cGRhdGUgdGhlIG5leHQgYXZhaWxhYmxlIGlhZyBudW1iZXIgKi8KIAkJaW1hcC0+aW1fbmV4dGlhZyArPSAxOwogCiAJCS8qIEFkZCB0aGUgaWFnIHRvIHRoZSBpYWcgZnJlZSBsaXN0IHNvIHdlIGRvbid0IGxvc2UgdGhlIGlhZwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19sb2dtZ3IuaCBiL2ZzL2pmcy9qZnNfbG9nbWdyLmgKaW5kZXggOTIzNmJjNC4uZTM4YzIxNSAxMDA2NDQKLS0tIGEvZnMvamZzL2pmc19sb2dtZ3IuaAorKysgYi9mcy9qZnMvamZzX2xvZ21nci5oCkBAIC0yODgsNyArMjg4LDcgQEAKIAkJLyoKIAkJICoJU1lOQ1BUOiBsb2cgc3luYyBwb2ludAogCQkgKgotCQkgKiByZXBsYXkgbG9nIHVwdG8gc3luY3B0IGFkZHJlc3Mgc3BlY2lmaWVkOworCQkgKiByZXBsYXkgbG9nIHVwIHRvIHN5bmNwdCBhZGRyZXNzIHNwZWNpZmllZDsKIAkJICovCiAJCXN0cnVjdCB7CiAJCQlfX2xlMzIgc3luYzsJLyogNDogc3luY3B0IGFkZHJlc3MgKDAgPSBoZXJlKSAqLwpkaWZmIC0tZ2l0IGEvZnMvamZzL2pmc19tZXRhcGFnZS5oIGIvZnMvamZzL2pmc19tZXRhcGFnZS5oCmluZGV4IGQ5NGY4ZDkuLmE3OGJlZGEgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfbWV0YXBhZ2UuaAorKysgYi9mcy9qZnMvamZzX21ldGFwYWdlLmgKQEAgLTc1LDcgKzc1LDcgQEAKIGV4dGVybiB2b2lkIGZvcmNlX21ldGFwYWdlKHN0cnVjdCBtZXRhcGFnZSAqKTsKIAogLyoKLSAqIGhvbGRfbWV0YXBhZ2UgYW5kIHB1dF9tZXRhcGFnZSBhcmUgdXNlZCBpbiBjb25qdWN0aW9uLiAgVGhlIHBhZ2UgbG9jaworICogaG9sZF9tZXRhcGFnZSBhbmQgcHV0X21ldGFwYWdlIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uLiAgVGhlIHBhZ2UgbG9jawogICogaXMgbm90IGRyb3BwZWQgYmV0d2VlbiB0aGUgdHdvLCBzbyBubyBvdGhlciB0aHJlYWRzIGNhbiBnZXQgb3IgcmVsZWFzZQogICogdGhlIG1ldGFwYWdlCiAgKi8KZGlmZiAtLWdpdCBhL2ZzL2pmcy9qZnNfdHhubWdyLmMgYi9mcy9qZnMvamZzX3R4bm1nci5jCmluZGV4IDk0NjY5NTcuLmY2Y2MwYzAgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9qZnNfdHhubWdyLmMKKysrIGIvZnMvamZzL2pmc190eG5tZ3IuYwpAQCAtNjM2LDcgKzYzNiw3IEBACiAJICogdGhlIGlub2RlIG9mIHRoZSBwYWdlIGFuZCBhdmFpbGFibGUgdG8gYWxsIGFub255bW91cwogCSAqIHRyYW5zYWN0aW9ucyB1bnRpbCB0eENvbW1pdCgpIHRpbWUgYXQgd2hpY2ggcG9pbnQKIAkgKiB0aGV5IGFyZSB0cmFuc2ZlcnJlZCB0byB0aGUgdHJhbnNhY3Rpb24gdGxvY2sgbGlzdCBvZgotCSAqIHRoZSBjb21taXRpbmcgdHJhbnNhY3Rpb24gb2YgdGhlIGlub2RlKQorCSAqIHRoZSBjb21taXR0aW5nIHRyYW5zYWN0aW9uIG9mIHRoZSBpbm9kZSkKIAkgKi8KIAlpZiAoeHRpZCA9PSAwKSB7CiAJCXRsY2stPnRpZCA9IHRpZDsKZGlmZiAtLWdpdCBhL2ZzL2pmcy9yZXNpemUuYyBiL2ZzL2pmcy9yZXNpemUuYwppbmRleCAxYWJhMDAzLi44ZWE1ZWZiIDEwMDY0NAotLS0gYS9mcy9qZnMvcmVzaXplLmMKKysrIGIvZnMvamZzL3Jlc2l6ZS5jCkBAIC01Nyw3ICs1Nyw3IEBACiAgKiAyLiBjb21wdXRlIG5ldyBGU0NLU2l6ZSBmcm9tIG5ldyBMVlNpemU7CiAgKiAzLiBzZXQgbmV3IEZTU2l6ZSBhcyBNSU4oRlNTaXplLCBMVlNpemUtKExvZ1NpemUrRlNDS1NpemUpKSB3aGVyZQogICogICAgYXNzZXJ0KG5ldyBGU1NpemUgPj0gb2xkIEZTU2l6ZSksCi0gKiAgICBpLmUuLCBmaWxlIHN5c3RlbSBtdXN0IG5vdCBiZSBzaHJpbmtlZDsKKyAqICAgIGkuZS4sIGZpbGUgc3lzdGVtIG11c3Qgbm90IGJlIHNocnVuazsKICAqLwogaW50IGpmc19leHRlbmRmcyhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzNjQgbmV3TFZTaXplLCBpbnQgbmV3TG9nU2l6ZSkKIHsKQEAgLTE4Miw3ICsxODIsNyBAQAogCSAqLwogCW5ld0ZTU2l6ZSA9IG5ld0xWU2l6ZSAtIG5ld0xvZ1NpemUgLSBuZXdGU0NLU2l6ZTsKIAotCS8qIGZpbGUgc3lzdGVtIGNhbm5vdCBiZSBzaHJpbmtlZCAqLworCS8qIGZpbGUgc3lzdGVtIGNhbm5vdCBiZSBzaHJ1bmsgKi8KIAlpZiAobmV3RlNTaXplIDwgYm1wLT5kYl9tYXBzaXplKSB7CiAJCXJjID0gLUVJTlZBTDsKIAkJZ290byBvdXQ7CmRpZmYgLS1naXQgYS9mcy9qZnMvc3VwZXIuYyBiL2ZzL2pmcy9zdXBlci5jCmluZGV4IGVlY2E0OGEuLjA2YzhhNjcgMTAwNjQ0Ci0tLSBhL2ZzL2pmcy9zdXBlci5jCisrKyBiL2ZzL2pmcy9zdXBlci5jCkBAIC02NDQsNyArNjQ0LDcgQEAKIAogLyogUmVhZCBkYXRhIGZyb20gcXVvdGFmaWxlIC0gYXZvaWQgcGFnZWNhY2hlIGFuZCBzdWNoIGJlY2F1c2Ugd2UgY2Fubm90IGFmZm9yZAogICogYWNxdWlyaW5nIHRoZSBsb2Nrcy4uLiBBcyBxdW90YSBmaWxlcyBhcmUgbmV2ZXIgdHJ1bmNhdGVkIGFuZCBxdW90YSBjb2RlCi0gKiBpdHNlbGYgc2VyaWFsaXplcyB0aGUgb3BlcmF0aW9ucyAoYW5kIG5vb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKKyAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm8gb25lIGVsc2Ugc2hvdWxkIHRvdWNoIHRoZSBmaWxlcykKICAqIHdlIGRvbid0IGhhdmUgdG8gYmUgYWZyYWlkIG9mIHJhY2VzICovCiBzdGF0aWMgc3NpemVfdCBqZnNfcXVvdGFfcmVhZChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBpbnQgdHlwZSwgY2hhciAqZGF0YSwKIAkJCSAgICAgIHNpemVfdCBsZW4sIGxvZmZfdCBvZmYpCmRpZmYgLS1naXQgYS9mcy9sb2dmcy9kZXZfbXRkLmMgYi9mcy9sb2dmcy9kZXZfbXRkLmMKaW5kZXggNzQ2NmU5ZC4uMzM5ZTE3ZSAxMDA2NDQKLS0tIGEvZnMvbG9nZnMvZGV2X210ZC5jCisrKyBiL2ZzL2xvZ2ZzL2Rldl9tdGQuYwpAQCAtNjAsNyArNjAsNyBAQAogICogYXN5bmNocm9ub3VzIHByb3BlcnRpZXMuICBTbyBqdXN0IHRvIHByZXZlbnQgdGhlIGZpcnN0IGltcGxlbWVudG9yIG9mIHN1Y2gKICAqIGEgdGhpbmcgZnJvbSBicmVha2luZyBsb2dmcyBpbiAyMzUwLCB3ZSBkbyB0aGUgdXN1YWwgcG9pbnRsZXNzIGRhbmNlIHRvCiAgKiBkZWNsYXJlIGEgY29tcGxldGlvbiB2YXJpYWJsZSBhbmQgd2FpdCBmb3IgY29tcGxldGlvbiBiZWZvcmUgcmV0dXJuaW5nCi0gKiBmcm9tIG10ZF9lcmFzZSgpLiAgV2hhdCBhbiBleGNlcmNpc2UgaW4gZnV0aWxpdHkhCisgKiBmcm9tIG10ZF9lcmFzZSgpLiAgV2hhdCBhbiBleGVyY2lzZSBpbiBmdXRpbGl0eSEKICAqLwogc3RhdGljIHZvaWQgbG9nZnNfZXJhc2VfY2FsbGJhY2soc3RydWN0IGVyYXNlX2luZm8gKmVpKQogewpkaWZmIC0tZ2l0IGEvZnMvbG9nZnMvZGlyLmMgYi9mcy9sb2dmcy9kaXIuYwppbmRleCBmOWRkZjBjLi45ZWQ4OWQxIDEwMDY0NAotLS0gYS9mcy9sb2dmcy9kaXIuYworKysgYi9mcy9sb2dmcy9kaXIuYwpAQCAtOTIsNyArOTIsNyBAQAogICogc28gc2hvcnQgbmFtZXMgKGxlbiA8PSA5KSBkb24ndCBldmVuIG9jY3VweSB0aGUgY29tcGxldGUgMzJiaXQgbmFtZQogICogc3BhY2UuICBBIHByaW1lID4yNTYgZW5zdXJlcyBzaG9ydCBuYW1lcyBxdWlja2x5IHNwcmVhZCB0aGUgMzJiaXQKICAqIG5hbWUgc3BhY2UuICBBZGQgYWJvdXQgMjYgZm9yIHRoZSBlc3RpbWF0ZWQgYW1vdW50IG9mIGluZm9ybWF0aW9uCi0gKiBvZiBlYWNoIGNoYXJhY3RlciBhbmQgcGljayBhIHByaW1lIG5lYXJieSwgcHJlZmVycmFibHkgYSBiaXQtc3BhcnNlCisgKiBvZiBlYWNoIGNoYXJhY3RlciBhbmQgcGljayBhIHByaW1lIG5lYXJieSwgcHJlZmVyYWJseSBhIGJpdC1zcGFyc2UKICAqIG9uZS4KICAqLwogc3RhdGljIHUzMiBoYXNoXzMyKGNvbnN0IGNoYXIgKnMsIGludCBsZW4sIHUzMiBzZWVkKQpkaWZmIC0tZ2l0IGEvZnMvbG9nZnMvcmVhZHdyaXRlLmMgYi9mcy9sb2dmcy9yZWFkd3JpdGUuYwppbmRleCBlZTk5YTlmLi45ZTIyMDg1IDEwMDY0NAotLS0gYS9mcy9sb2dmcy9yZWFkd3JpdGUuYworKysgYi9mcy9sb2dmcy9yZWFkd3JpdGUuYwpAQCAtMTYxNiw3ICsxNjE2LDcgQEAKIAkJZXJyID0gbG9nZnNfd3JpdGVfYnVmKGlub2RlLCBwYWdlLCBmbGFncyk7CiAJCWlmICghZXJyICYmIHNocmlua19sZXZlbChnY19sZXZlbCkgPT0gMCkgewogCQkJLyogUmV3cml0ZSBjYW5ub3QgbWFyayB0aGUgaW5vZGUgZGlydHkgYnV0IGhhcyB0bwotCQkJICogd3JpdGUgaXQgaW1tZWRpYXRseS4KKwkJCSAqIHdyaXRlIGl0IGltbWVkaWF0ZWx5LgogCQkJICogUTogQ2FuJ3Qgd2UganVzdCBjcmVhdGUgYW4gYWxpYXMgZm9yIHRoZSBpbm9kZQogCQkJICogaW5zdGVhZD8gIEFuZCBpZiBub3QsIHdoeSBub3Q/CiAJCQkgKi8KZGlmZiAtLWdpdCBhL2ZzL21iY2FjaGUuYyBiL2ZzL21iY2FjaGUuYwppbmRleCBhMjU0NDRhYi4uMmYxNzRiZSAxMDA2NDQKLS0tIGEvZnMvbWJjYWNoZS5jCisrKyBiL2ZzL21iY2FjaGUuYwpAQCAtNTQyLDcgKzU0Miw3IEBACiAgKiBtYl9jYWNoZV9lbnRyeV9maW5kX2ZpcnN0KCkKICAqCiAgKiBGaW5kIHRoZSBmaXJzdCBjYWNoZSBlbnRyeSBvbiBhIGdpdmVuIGRldmljZSB3aXRoIGEgY2VydGFpbiBrZXkgaW4KLSAqIGFuIGFkZGl0aW9uYWwgaW5kZXguIEFkZGl0b25hbCBtYXRjaGVzIGNhbiBiZSBmb3VuZCB3aXRoCisgKiBhbiBhZGRpdGlvbmFsIGluZGV4LiBBZGRpdGlvbmFsIG1hdGNoZXMgY2FuIGJlIGZvdW5kIHdpdGgKICAqIG1iX2NhY2hlX2VudHJ5X2ZpbmRfbmV4dCgpLiBSZXR1cm5zIE5VTEwgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kLiBUaGUKICAqIHJldHVybmVkIGNhY2hlIGVudHJ5IGlzIGxvY2tlZCBmb3Igc2hhcmVkIGFjY2VzcyAoIm11bHRpcGxlIHJlYWRlcnMiKS4KICAqCmRpZmYgLS1naXQgYS9mcy9uYW1laS5jIGIvZnMvbmFtZWkuYwppbmRleCAzY2I2MTZkLi5lNmNkNjExIDEwMDY0NAotLS0gYS9mcy9uYW1laS5jCisrKyBiL2ZzL25hbWVpLmMKQEAgLTcwLDcgKzcwLDcgQEAKICAqIG5hbWUgaW5kaWNhdGVkIGJ5IHRoZSBzeW1saW5rLiBUaGUgb2xkIGNvZGUgYWx3YXlzIGNvbXBsYWluZWQgdGhhdCB0aGUKICAqIG5hbWUgYWxyZWFkeSBleGlzdHMsIGR1ZSB0byBub3QgZm9sbG93aW5nIHRoZSBzeW1saW5rIGV2ZW4gaWYgaXRzIHRhcmdldAogICogaXMgbm9uZXhpc3RlbnQuICBUaGUgbmV3IHNlbWFudGljcyBhZmZlY3RzIGFsc28gbWtub2QoKSBhbmQgbGluaygpIHdoZW4KLSAqIHRoZSBuYW1lIGlzIGEgc3ltbGluayBwb2ludGluZyB0byBhIG5vbi1leGlzdGFudCBuYW1lLgorICogdGhlIG5hbWUgaXMgYSBzeW1saW5rIHBvaW50aW5nIHRvIGEgbm9uLWV4aXN0ZW50IG5hbWUuCiAgKgogICogSSBkb24ndCBrbm93IHdoaWNoIHNlbWFudGljcyBpcyB0aGUgcmlnaHQgb25lLCBzaW5jZSBJIGhhdmUgbm8gYWNjZXNzCiAgKiB0byBzdGFuZGFyZHMuIEJ1dCBJIGZvdW5kIGJ5IHRyaWFsIHRoYXQgSFAtVVggOS4wIGhhcyB0aGUgZnVsbCAibmV3IgpkaWZmIC0tZ2l0IGEvZnMvbmNwZnMvaW5vZGUuYyBiL2ZzL25jcGZzL2lub2RlLmMKaW5kZXggMDBhMWQxYy4uMDI1MGU0YyAxMDA2NDQKLS0tIGEvZnMvbmNwZnMvaW5vZGUuYworKysgYi9mcy9uY3Bmcy9pbm9kZS5jCkBAIC01OTYsNyArNTk2LDcgQEAKIC8qCXNlcnZlci0+cHJpdi5kYXRhID0gTlVMTDsJCSovCiAKIAlzZXJ2ZXItPm0gPSBkYXRhOwotCS8qIEFsdGhvdWdodCBhbnl0aGluZyBwcm9kdWNpbmcgdGhpcyBpcyBidWdneSwgaXQgaGFwcGVucworCS8qIEFsdGhvdWdoIGFueXRoaW5nIHByb2R1Y2luZyB0aGlzIGlzIGJ1Z2d5LCBpdCBoYXBwZW5zCiAJICAgbm93IGJlY2F1c2Ugb2YgUEFUSF9NQVggY2hhbmdlcy4uICovCiAJaWYgKHNlcnZlci0+bS50aW1lX291dCA8IDEpIHsKIAkJc2VydmVyLT5tLnRpbWVfb3V0ID0gMTA7CmRpZmYgLS1naXQgYS9mcy9uZnMvY2FsbGJhY2tfeGRyLmMgYi9mcy9uZnMvY2FsbGJhY2tfeGRyLmMKaW5kZXggMTRlMGY5My4uMDBlY2Y2MiAxMDA2NDQKLS0tIGEvZnMvbmZzL2NhbGxiYWNrX3hkci5jCisrKyBiL2ZzL25mcy9jYWxsYmFja194ZHIuYwpAQCAtMjQxLDcgKzI0MSw3IEBACiAKIAlhcmdzLT5jYmxfbGF5b3V0X3R5cGUgPSBudG9obCgqcCsrKTsKIAkvKiBEZXBpdGUgdGhlIHNwZWMncyB4ZHIsIGlvbW9kZSByZWFsbHkgYmVsb25ncyBpbiB0aGUgRklMRSBzd2l0Y2gsCi0JICogYXMgaXQgaXMgdW51c2VhYmxlIGFuZCBpZ25vcmVkIHdpdGggdGhlIG90aGVyIHR5cGVzLgorCSAqIGFzIGl0IGlzIHVudXNhYmxlIGFuZCBpZ25vcmVkIHdpdGggdGhlIG90aGVyIHR5cGVzLgogCSAqLwogCWlvbW9kZSA9IG50b2hsKCpwKyspOwogCWFyZ3MtPmNibF9sYXlvdXRjaGFuZ2VkID0gbnRvaGwoKnArKyk7CmRpZmYgLS1naXQgYS9mcy9uZnMvZmlsZS5jIGIvZnMvbmZzL2ZpbGUuYwppbmRleCAzYWM1YmQ2Li4yZjA5M2VkIDEwMDY0NAotLS0gYS9mcy9uZnMvZmlsZS5jCisrKyBiL2ZzL25mcy9maWxlLmMKQEAgLTMwMSw3ICszMDEsNyBAQAogICogZGlzaywgYnV0IGl0IHJldHJpZXZlcyBhbmQgY2xlYXJzIGN0eC0+ZXJyb3IgYWZ0ZXIgc3luY2hpbmcsIGRlc3BpdGUKICAqIHRoZSB0d28gYmVpbmcgc2V0IGF0IHRoZSBzYW1lIHRpbWUgaW4gbmZzX2NvbnRleHRfc2V0X3dyaXRlX2Vycm9yKCkuCiAgKiBUaGlzIGlzIGJlY2F1c2UgdGhlIGZvcm1lciBpcyB1c2VkIHRvIG5vdGlmeSB0aGUgX25leHRfIGNhbGwgdG8KLSAqIG5mc19maWxlX3dyaXRlKCkgdGhhdCBhIHdyaXRlIGVycm9yIG9jY3VyZWQsIGFuZCBoZW5jZSBjYXVzZSBpdCB0bworICogbmZzX2ZpbGVfd3JpdGUoKSB0aGF0IGEgd3JpdGUgZXJyb3Igb2NjdXJyZWQsIGFuZCBoZW5jZSBjYXVzZSBpdCB0bwogICogZmFsbCBiYWNrIHRvIGRvaW5nIGEgc3luY2hyb25vdXMgd3JpdGUuCiAgKi8KIHN0YXRpYyBpbnQKZGlmZiAtLWdpdCBhL2ZzL25mcy9uZnM0ZmlsZWxheW91dC5oIGIvZnMvbmZzL25mczRmaWxlbGF5b3V0LmgKaW5kZXggMDg1YTM1NC4uN2M0NDU3OSAxMDA2NDQKLS0tIGEvZnMvbmZzL25mczRmaWxlbGF5b3V0LmgKKysrIGIvZnMvbmZzL25mczRmaWxlbGF5b3V0LmgKQEAgLTMzLDcgKzMzLDcgQEAKICNpbmNsdWRlICJwbmZzLmgiCiAKIC8qCi0gKiBGaWVsZCB0ZXN0aW5nIHNob3dzIHdlIG5lZWQgdG8gc3VwcG9ydCB1cHRvIDQwOTYgc3RyaXBlIGluZGljZXMuCisgKiBGaWVsZCB0ZXN0aW5nIHNob3dzIHdlIG5lZWQgdG8gc3VwcG9ydCB1cCB0byA0MDk2IHN0cmlwZSBpbmRpY2VzLgogICogV2Ugc3RvcmUgZWFjaCBpbmRleCBhcyBhIHU4ICh1MzIgb24gdGhlIHdpcmUpIHRvIGtlZXAgdGhlIG1lbW9yeSBmb290cHJpbnQKICAqIHJlYXNvbmFibGUuIFRoaXMgaW4gdHVybiBtZWFucyB3ZSBzdXBwb3J0IGEgbWF4aW11bSBvZiAyNTYKICAqIFJGQyA1NjYxIG11bHRpcGF0aF9saXN0NCBzdHJ1Y3R1cmVzLgpkaWZmIC0tZ2l0IGEvZnMvbmZzX2NvbW1vbi9uZnNhY2wuYyBiL2ZzL25mc19jb21tb24vbmZzYWNsLmMKaW5kZXggZWMwZjI3Ny4uNjk0MDQzOSAxMDA2NDQKLS0tIGEvZnMvbmZzX2NvbW1vbi9uZnNhY2wuYworKysgYi9mcy9uZnNfY29tbW9uL25mc2FjbC5jCkBAIC0xNzMsNyArMTczLDcgQEAKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCWJyZWFrOwogCQljYXNlIEFDTF9NQVNLOgotCQkJLyogU29sYXJpcyBzb21ldGltZXMgc2V0cyBhZGRpdG9uYWwgYml0cyBpbiB0aGUgbWFzayAqLworCQkJLyogU29sYXJpcyBzb21ldGltZXMgc2V0cyBhZGRpdGlvbmFsIGJpdHMgaW4gdGhlIG1hc2sgKi8KIAkJCWVudHJ5LT5lX3Blcm0gJj0gU19JUldYTzsKIAkJCWJyZWFrOwogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZnMvbmZzZC9uZnMzeGRyLmMgYi9mcy9uZnNkL25mczN4ZHIuYwppbmRleCA3ZTg0YTg1Li5hZDQ4ZmFjIDEwMDY0NAotLS0gYS9mcy9uZnNkL25mczN4ZHIuYworKysgYi9mcy9uZnNkL25mczN4ZHIuYwpAQCAtNzAyLDcgKzcwMiw3IEBACiAJCSpwKysgPSBodG9ubChyZXNwLT5lb2YpOwogCQkqcCsrID0gaHRvbmwocmVzcC0+Y291bnQpOwkvKiB4ZHIgb3BhcXVlIGNvdW50ICovCiAJCXhkcl9yZXNzaXplX2NoZWNrKHJxc3RwLCBwKTsKLQkJLyogbm93IHVwZGF0ZSBycXN0cC0+cnFfcmVzIHRvIHJlZmxlY3QgZGF0YSBhc3dlbGwgKi8KKwkJLyogbm93IHVwZGF0ZSBycXN0cC0+cnFfcmVzIHRvIHJlZmxlY3QgZGF0YSBhcyB3ZWxsICovCiAJCXJxc3RwLT5ycV9yZXMucGFnZV9sZW4gPSByZXNwLT5jb3VudDsKIAkJaWYgKHJlc3AtPmNvdW50ICYgMykgewogCQkJLyogbmVlZCB0byBwYWQgdGhlIHRhaWwgKi8KZGlmZiAtLWdpdCBhL2ZzL25mc2QvbmZzNHN0YXRlLmMgYi9mcy9uZnNkL25mczRzdGF0ZS5jCmluZGV4IGZiZGU2ZjcuLjRiMzZlYzMgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZzNHN0YXRlLmMKKysrIGIvZnMvbmZzZC9uZnM0c3RhdGUuYwpAQCAtMzA1NSw3ICszMDU1LDcgQEAKIAlpZiAoT05FX1NUQVRFSUQoc3RhdGVpZCkgJiYgKGZsYWdzICYgUkRfU1RBVEUpKQogCQlyZXR1cm4gbmZzX29rOwogCWVsc2UgaWYgKGxvY2tzX2luX2dyYWNlKCkpIHsKLQkJLyogQW5zd2VyIGluIHJlbWFpbmluZyBjYXNlcyBkZXBlbmRzIG9uIGV4aXN0YW5jZSBvZgorCQkvKiBBbnN3ZXIgaW4gcmVtYWluaW5nIGNhc2VzIGRlcGVuZHMgb24gZXhpc3RlbmNlIG9mCiAJCSAqIGNvbmZsaWN0aW5nIHN0YXRlOyBzbyB3ZSBtdXN0IHdhaXQgb3V0IHRoZSBncmFjZSBwZXJpb2QuICovCiAJCXJldHVybiBuZnNlcnJfZ3JhY2U7CiAJfSBlbHNlIGlmIChmbGFncyAmIFdSX1NUQVRFKQpAQCAtMzY3NSw3ICszNjc1LDcgQEAKIC8qCiAgKiBBbGxvYyBhIGxvY2sgb3duZXIgc3RydWN0dXJlLgogICogQ2FsbGVkIGluIG5mc2Q0X2xvY2sgLSB0aGVyZWZvcmUsIE9QRU4gYW5kIE9QRU5fQ09ORklSTSAoaWYgbmVlZGVkKSBoYXMgCi0gKiBvY2N1cmVkLiAKKyAqIG9jY3VycmVkLiAKICAqCiAgKiBzdHJoYXNodmFsID0gbG9ja19vd25lcnN0cl9oYXNodmFsIAogICovCmRpZmYgLS1naXQgYS9mcy9uZnNkL25mc3hkci5jIGIvZnMvbmZzZC9uZnN4ZHIuYwppbmRleCA0Y2UwMDVkLi42NWVjNTk1IDEwMDY0NAotLS0gYS9mcy9uZnNkL25mc3hkci5jCisrKyBiL2ZzL25mc2QvbmZzeGRyLmMKQEAgLTQ1MSw3ICs0NTEsNyBAQAogCSpwKysgPSBodG9ubChyZXNwLT5jb3VudCk7CiAJeGRyX3Jlc3NpemVfY2hlY2socnFzdHAsIHApOwogCi0JLyogbm93IHVwZGF0ZSBycXN0cC0+cnFfcmVzIHRvIHJlZmxlY3QgZGF0YSBhc3dlbGwgKi8KKwkvKiBub3cgdXBkYXRlIHJxc3RwLT5ycV9yZXMgdG8gcmVmbGVjdCBkYXRhIGFzIHdlbGwgKi8KIAlycXN0cC0+cnFfcmVzLnBhZ2VfbGVuID0gcmVzcC0+Y291bnQ7CiAJaWYgKHJlc3AtPmNvdW50ICYgMykgewogCQkvKiBuZWVkIHRvIHBhZCB0aGUgdGFpbCAqLwpkaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYyBiL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMKaW5kZXggNmIxMzA1ZC4uOWZkZTFjMCAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYworKysgYi9mcy9ub3RpZnkvZmFub3RpZnkvZmFub3RpZnlfdXNlci5jCkBAIC0xNjQsNyArMTY0LDcgQEAKIAkJIGZkLCByZXNwb25zZSk7CiAJLyoKIAkgKiBtYWtlIHN1cmUgdGhlIHJlc3BvbnNlIGlzIHZhbGlkLCBpZiBpbnZhbGlkIHdlIGRvIG5vdGhpbmcgYW5kIGVpdGhlcgotCSAqIHVzZXJzcGFjZSBjYW4gc2VuZCBhIHZhbGlkIHJlc3BvbmNlIG9yIHdlIHdpbGwgY2xlYW4gaXQgdXAgYWZ0ZXIgdGhlCisJICogdXNlcnNwYWNlIGNhbiBzZW5kIGEgdmFsaWQgcmVzcG9uc2Ugb3Igd2Ugd2lsbCBjbGVhbiBpdCB1cCBhZnRlciB0aGUKIAkgKiB0aW1lb3V0CiAJICovCiAJc3dpdGNoIChyZXNwb25zZSkgewpkaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2lub3RpZnkvaW5vdGlmeV9mc25vdGlmeS5jIGIvZnMvbm90aWZ5L2lub3RpZnkvaW5vdGlmeV9mc25vdGlmeS5jCmluZGV4IDAzNDhkMGMuLmUzY2JkNzQgMTAwNjQ0Ci0tLSBhL2ZzL25vdGlmeS9pbm90aWZ5L2lub3RpZnlfZnNub3RpZnkuYworKysgYi9mcy9ub3RpZnkvaW5vdGlmeS9pbm90aWZ5X2Zzbm90aWZ5LmMKQEAgLTE5NCw3ICsxOTQsNyBAQAogCiBzdGF0aWMgdm9pZCBpbm90aWZ5X2ZyZWVfZ3JvdXBfcHJpdihzdHJ1Y3QgZnNub3RpZnlfZ3JvdXAgKmdyb3VwKQogewotCS8qIGlkZWFsbHkgdGhlIGlkciBpcyBlbXB0eSBhbmQgd2Ugd29uJ3QgaGl0IHRoZSBCVUcgaW4gdGVoIGNhbGxiYWNrICovCisJLyogaWRlYWxseSB0aGUgaWRyIGlzIGVtcHR5IGFuZCB3ZSB3b24ndCBoaXQgdGhlIEJVRyBpbiB0aGUgY2FsbGJhY2sgKi8KIAlpZHJfZm9yX2VhY2goJmdyb3VwLT5pbm90aWZ5X2RhdGEuaWRyLCBpZHJfY2FsbGJhY2ssIGdyb3VwKTsKIAlpZHJfcmVtb3ZlX2FsbCgmZ3JvdXAtPmlub3RpZnlfZGF0YS5pZHIpOwogCWlkcl9kZXN0cm95KCZncm91cC0+aW5vdGlmeV9kYXRhLmlkcik7CmRpZmYgLS1naXQgYS9mcy9ub3RpZnkvbWFyay5jIGIvZnMvbm90aWZ5L21hcmsuYwppbmRleCA1MGMwMDg1Li4yNTJhYjFmIDEwMDY0NAotLS0gYS9mcy9ub3RpZnkvbWFyay5jCisrKyBiL2ZzL25vdGlmeS9tYXJrLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIHJlZmVyZW5jaW5nIHRoaXMgb2JqZWN0LiAgVGhlIG9iamVjdCB0eXBpY2FsbHkgd2lsbCBsaXZlIGluc2lkZSB0aGUga2VybmVsCiAgKiB3aXRoIGEgcmVmY250IG9mIDIsIG9uZSBmb3IgZWFjaCBsaXN0IGl0IGlzIG9uIChpX2xpc3QsIGdfbGlzdCkuICBBbnkgdGFzawogICogd2hpY2ggY2FuIGZpbmQgdGhpcyBvYmplY3QgaG9sZGluZyB0aGUgYXBwcm9wcmlldGUgbG9ja3MsIGNhbiB0YWtlIGEgcmVmZXJlbmNlCi0gKiBhbmQgdGhlIG9iamVjdCBpdHNlbGYgaXMgZ3VhcmVudGVlZCB0byBzdXJ2aXZlIHVudGlsIHRoZSByZWZlcmVuY2UgaXMgZHJvcHBlZC4KKyAqIGFuZCB0aGUgb2JqZWN0IGl0c2VsZiBpcyBndWFyYW50ZWVkIHRvIHN1cnZpdmUgdW50aWwgdGhlIHJlZmVyZW5jZSBpcyBkcm9wcGVkLgogICoKICAqIExPQ0tJTkc6CiAgKiBUaGVyZSBhcmUgMyBzcGlubG9ja3MgaW52b2x2ZWQgd2l0aCBmc25vdGlmeSBpbm9kZSBtYXJrcyBhbmQgdGhleSBNVVNUCmRpZmYgLS1naXQgYS9mcy9udGZzL2F0dHJpYi5jIGIvZnMvbnRmcy9hdHRyaWIuYwppbmRleCBmNTA5NGVlLi5mMTRmZGUyIDEwMDY0NAotLS0gYS9mcy9udGZzL2F0dHJpYi5jCisrKyBiL2ZzL250ZnMvYXR0cmliLmMKQEAgLTE5Nyw3ICsxOTcsNyBAQAogCX0gZWxzZSBpZiAoY3R4X25lZWRzX3Jlc2V0KSB7CiAJCS8qCiAJCSAqIElmIHRoZXJlIGlzIG5vIGF0dHJpYnV0ZSBsaXN0LCByZXN0b3JpbmcgdGhlIHNlYXJjaCBjb250ZXh0Ci0JCSAqIGlzIGFjb21wbGlzaGVkIHNpbXBseSBieSBjb3B5aW5nIHRoZSBzYXZlZCBjb250ZXh0IGJhY2sgb3ZlcgorCQkgKiBpcyBhY2NvbXBsaXNoZWQgc2ltcGx5IGJ5IGNvcHlpbmcgdGhlIHNhdmVkIGNvbnRleHQgYmFjayBvdmVyCiAJCSAqIHRoZSBjYWxsZXIgc3VwcGxpZWQgY29udGV4dC4gIElmIHRoZXJlIGlzIGFuIGF0dHJpYnV0ZSBsaXN0LAogCQkgKiB0aGluZ3MgYXJlIG1vcmUgY29tcGxpY2F0ZWQgYXMgd2UgbmVlZCB0byBkZWFsIHdpdGggbWFwcGluZwogCQkgKiBvZiBtZnQgcmVjb3JkcyBhbmQgcmVzdWx0aW5nIHBvdGVudGlhbCBjaGFuZ2VzIGluIHBvaW50ZXJzLgpAQCAtMTE4MSw3ICsxMTgxLDcgQEAKICAqIGZvciwgaS5lLiBpZiBvbmUgd2FudHMgdG8gYWRkIHRoZSBhdHRyaWJ1dGUgdG8gdGhlIG1mdCByZWNvcmQgdGhpcyBpcyB0aGUKICAqIGNvcnJlY3QgcGxhY2UgdG8gaW5zZXJ0IGl0cyBhdHRyaWJ1dGUgbGlzdCBlbnRyeSBpbnRvLgogICoKLSAqIFdoZW4gLWVycm5vICE9IC1FTk9FTlQsIGFuIGVycm9yIG9jY3VyZWQgZHVyaW5nIHRoZSBsb29rdXAuICBAY3R4LT5hdHRyIGlzCisgKiBXaGVuIC1lcnJubyAhPSAtRU5PRU5ULCBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgdGhlIGxvb2t1cC4gIEBjdHgtPmF0dHIgaXMKICAqIHRoZW4gdW5kZWZpbmVkIGFuZCBpbiBwYXJ0aWN1bGFyIHlvdSBzaG91bGQgbm90IHJlbHkgb24gaXQgbm90IGNoYW5naW5nLgogICovCiBpbnQgbnRmc19hdHRyX2xvb2t1cChjb25zdCBBVFRSX1RZUEUgdHlwZSwgY29uc3QgbnRmc2NoYXIgKm5hbWUsCmRpZmYgLS1naXQgYS9mcy9udGZzL2NvbXByZXNzLmMgYi9mcy9udGZzL2NvbXByZXNzLmMKaW5kZXggZWY5ZWQ4NS4uZWU0MTQ0YyAxMDA2NDQKLS0tIGEvZnMvbnRmcy9jb21wcmVzcy5jCisrKyBiL2ZzL250ZnMvY29tcHJlc3MuYwpAQCAtNTAxLDcgKzUwMSw3IEBACiAJVkNOIHN0YXJ0X3ZjbiA9ICgoKHM2NClpbmRleCA8PCBQQUdFX0NBQ0hFX1NISUZUKSAmIH5jYl9zaXplX21hc2spID4+CiAJCQl2b2wtPmNsdXN0ZXJfc2l6ZV9iaXRzOwogCS8qCi0JICogVGhlIGZpcnN0IHZjbiBhZnRlciB0aGUgbGFzdCB3YW50ZWQgdmNuIChtaW51bXVtIGFsaWdubWVudCBpcyBhZ2FpbgorCSAqIFRoZSBmaXJzdCB2Y24gYWZ0ZXIgdGhlIGxhc3Qgd2FudGVkIHZjbiAobWluaW11bSBhbGlnbm1lbnQgaXMgYWdhaW4KIAkgKiBQQUdFX0NBQ0hFX1NJWkUuCiAJICovCiAJVkNOIGVuZF92Y24gPSAoKCgoczY0KShpbmRleCArIDFVTCkgPDwgUEFHRV9DQUNIRV9TSElGVCkgKyBjYl9zaXplIC0gMSkKZGlmZiAtLWdpdCBhL2ZzL250ZnMvaW5vZGUuYyBiL2ZzL250ZnMvaW5vZGUuYwppbmRleCAwYjU2YzZiLi5jMDVkNmRjIDEwMDY0NAotLS0gYS9mcy9udGZzL2lub2RlLmMKKysrIGIvZnMvbnRmcy9pbm9kZS5jCkBAIC02MjIsNyArNjIyLDcgQEAKIAkgKi8KIAkvKiBFdmVyeW9uZSBnZXRzIGFsbCBwZXJtaXNzaW9ucy4gKi8KIAl2aS0+aV9tb2RlIHw9IFNfSVJXWFVHTzsKLQkvKiBJZiByZWFkLW9ubHksIG5vb25lIGdldHMgd3JpdGUgcGVybWlzc2lvbnMuICovCisJLyogSWYgcmVhZC1vbmx5LCBubyBvbmUgZ2V0cyB3cml0ZSBwZXJtaXNzaW9ucy4gKi8KIAlpZiAoSVNfUkRPTkxZKHZpKSkKIAkJdmktPmlfbW9kZSAmPSB+U19JV1VHTzsKIAlpZiAobS0+ZmxhZ3MgJiBNRlRfUkVDT1JEX0lTX0RJUkVDVE9SWSkgewpAQCAtMjUyOSw3ICsyNTI5LDcgQEAKIAkJICogc3BlY2lmaWVzIHRoYXQgdGhlIGJlaGF2aW91ciBpcyB1bnNwZWNpZmllZCB0aHVzIHdlIGRvIG5vdAogCQkgKiBoYXZlIHRvIGRvIGFueXRoaW5nLiAgVGhpcyBtZWFucyB0aGF0IGluIG91ciBpbXBsZW1lbnRhdGlvbgogCQkgKiBpbiB0aGUgcmFyZSBjYXNlIHRoYXQgdGhlIGZpbGUgaXMgbW1hcCgpcGVkIGFuZCBhIHdyaXRlCi0JCSAqIG9jY3VyZWQgaW50byB0aGUgbW1hcCgpcGVkIHJlZ2lvbiBqdXN0IGJleW9uZCB0aGUgZmlsZSBzaXplCisJCSAqIG9jY3VycmVkIGludG8gdGhlIG1tYXAoKXBlZCByZWdpb24ganVzdCBiZXlvbmQgdGhlIGZpbGUgc2l6ZQogCQkgKiBhbmQgd3JpdGVwYWdlIGhhcyBub3QgeWV0IGJlZW4gY2FsbGVkIHRvIHdyaXRlIG91dCB0aGUgcGFnZQogCQkgKiAod2hpY2ggd291bGQgY2xlYXIgdGhlIGFyZWEgYmV5b25kIHRoZSBmaWxlIHNpemUpIGFuZCB3ZSBub3cKIAkJICogZXh0ZW5kIHRoZSBmaWxlIHNpemUgdG8gaW5jb3Jwb3JhdGUgdGhpcyBkaXJ0eSByZWdpb24KZGlmZiAtLWdpdCBhL2ZzL250ZnMvbGF5b3V0LmggYi9mcy9udGZzL2xheW91dC5oCmluZGV4IDhiMjU0OWYuLmZhZWNlNzEgMTAwNjQ0Ci0tLSBhL2ZzL250ZnMvbGF5b3V0LmgKKysrIGIvZnMvbnRmcy9sYXlvdXQuaApAQCAtMjg2LDcgKzI4Niw3IEBACiAgKiBmcmFnbWVudGVkLiBWb2x1bWUgZnJlZSBzcGFjZSBpbmNsdWRlcyB0aGUgZW1wdHkgcGFydCBvZiB0aGUgbWZ0IHpvbmUgYW5kCiAgKiB3aGVuIHRoZSB2b2x1bWUncyBmcmVlIDg4JSBhcmUgdXNlZCB1cCwgdGhlIG1mdCB6b25lIGlzIHNocnVuayBieSBhIGZhY3RvcgogICogb2YgMiwgdGh1cyBtYWtpbmcgbW9yZSBzcGFjZSBhdmFpbGFibGUgZm9yIG1vcmUgZmlsZXMvZGF0YS4gVGhpcyBwcm9jZXNzIGlzCi0gKiByZXBlYXRlZCBldmVyeXRpbWUgdGhlcmUgaXMgbm8gbW9yZSBmcmVlIHNwYWNlIGV4Y2VwdCBmb3IgdGhlIG1mdCB6b25lIHVudGlsCisgKiByZXBlYXRlZCBldmVyeSB0aW1lIHRoZXJlIGlzIG5vIG1vcmUgZnJlZSBzcGFjZSBleGNlcHQgZm9yIHRoZSBtZnQgem9uZSB1bnRpbAogICogdGhlcmUgcmVhbGx5IGlzIG5vIG1vcmUgZnJlZSBzcGFjZS4KICAqLwogCkBAIC0xNjU3LDEzICsxNjU3LDEzIEBACiAgKglwb2ludGVkIHRvIGJ5IHRoZSBPd25lciBmaWVsZCB3YXMgcHJvdmlkZWQgYnkgYSBkZWZhdWx0aW5nIG1lY2hhbmlzbQogICoJcmF0aGVyIHRoYW4gZXhwbGljaXRseSBwcm92aWRlZCBieSB0aGUgb3JpZ2luYWwgcHJvdmlkZXIgb2YgdGhlCiAgKglzZWN1cml0eSBkZXNjcmlwdG9yLiAgVGhpcyBtYXkgYWZmZWN0IHRoZSB0cmVhdG1lbnQgb2YgdGhlIFNJRCB3aXRoCi0gKglyZXNwZWN0IHRvIGluaGVyaXRlbmNlIG9mIGFuIG93bmVyLgorICoJcmVzcGVjdCB0byBpbmhlcml0YW5jZSBvZiBhbiBvd25lci4KICAqCiAgKiBTRV9HUk9VUF9ERUZBVUxURUQgLSBUaGlzIGJvb2xlYW4gZmxhZywgd2hlbiBzZXQsIGluZGljYXRlcyB0aGF0IHRoZSBTSUQgaW4KICAqCXRoZSBHcm91cCBmaWVsZCB3YXMgcHJvdmlkZWQgYnkgYSBkZWZhdWx0aW5nIG1lY2hhbmlzbSByYXRoZXIgdGhhbgogICoJZXhwbGljaXRseSBwcm92aWRlZCBieSB0aGUgb3JpZ2luYWwgcHJvdmlkZXIgb2YgdGhlIHNlY3VyaXR5CiAgKglkZXNjcmlwdG9yLiAgVGhpcyBtYXkgYWZmZWN0IHRoZSB0cmVhdG1lbnQgb2YgdGhlIFNJRCB3aXRoIHJlc3BlY3QgdG8KLSAqCWluaGVyaXRlbmNlIG9mIGEgcHJpbWFyeSBncm91cC4KKyAqCWluaGVyaXRhbmNlIG9mIGEgcHJpbWFyeSBncm91cC4KICAqCiAgKiBTRV9EQUNMX1BSRVNFTlQgLSBUaGlzIGJvb2xlYW4gZmxhZywgd2hlbiBzZXQsIGluZGljYXRlcyB0aGF0IHRoZSBzZWN1cml0eQogICoJZGVzY3JpcHRvciBjb250YWlucyBhIGRpc2NyZXRpb25hcnkgQUNMLiAgSWYgdGhpcyBmbGFnIGlzIHNldCBhbmQgdGhlCkBAIC0xNjc0LDcgKzE2NzQsNyBAQAogICoJcG9pbnRlZCB0byBieSB0aGUgRGFjbCBmaWVsZCB3YXMgcHJvdmlkZWQgYnkgYSBkZWZhdWx0aW5nIG1lY2hhbmlzbQogICoJcmF0aGVyIHRoYW4gZXhwbGljaXRseSBwcm92aWRlZCBieSB0aGUgb3JpZ2luYWwgcHJvdmlkZXIgb2YgdGhlCiAgKglzZWN1cml0eSBkZXNjcmlwdG9yLiAgVGhpcyBtYXkgYWZmZWN0IHRoZSB0cmVhdG1lbnQgb2YgdGhlIEFDTCB3aXRoCi0gKglyZXNwZWN0IHRvIGluaGVyaXRlbmNlIG9mIGFuIEFDTC4gIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGlmIHRoZQorICoJcmVzcGVjdCB0byBpbmhlcml0YW5jZSBvZiBhbiBBQ0wuICBUaGlzIGZsYWcgaXMgaWdub3JlZCBpZiB0aGUKICAqCURhY2xQcmVzZW50IGZsYWcgaXMgbm90IHNldC4KICAqCiAgKiBTRV9TQUNMX1BSRVNFTlQgLSBUaGlzIGJvb2xlYW4gZmxhZywgd2hlbiBzZXQsICBpbmRpY2F0ZXMgdGhhdCB0aGUgc2VjdXJpdHkKQEAgLTE2ODYsNyArMTY4Niw3IEBACiAgKglwb2ludGVkIHRvIGJ5IHRoZSBTYWNsIGZpZWxkIHdhcyBwcm92aWRlZCBieSBhIGRlZmF1bHRpbmcgbWVjaGFuaXNtCiAgKglyYXRoZXIgdGhhbiBleHBsaWNpdGx5IHByb3ZpZGVkIGJ5IHRoZSBvcmlnaW5hbCBwcm92aWRlciBvZiB0aGUKICAqCXNlY3VyaXR5IGRlc2NyaXB0b3IuICBUaGlzIG1heSBhZmZlY3QgdGhlIHRyZWF0bWVudCBvZiB0aGUgQUNMIHdpdGgKLSAqCXJlc3BlY3QgdG8gaW5oZXJpdGVuY2Ugb2YgYW4gQUNMLiAgVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgdGhlCisgKglyZXNwZWN0IHRvIGluaGVyaXRhbmNlIG9mIGFuIEFDTC4gIFRoaXMgZmxhZyBpcyBpZ25vcmVkIGlmIHRoZQogICoJU2FjbFByZXNlbnQgZmxhZyBpcyBub3Qgc2V0LgogICoKICAqIFNFX1NFTEZfUkVMQVRJVkUgLSBUaGlzIGJvb2xlYW4gZmxhZywgd2hlbiBzZXQsIGluZGljYXRlcyB0aGF0IHRoZSBzZWN1cml0eQpAQCAtMjI4Myw3ICsyMjgzLDcgQEAKIAkvLwkJICAgdGhlIGtleV9sZW5ndGggaXMgemVybywgdGhlbiB0aGUgdmNuIGltbWVkaWF0ZWx5CiAJLy8JCSAgIGZvbGxvd3MgdGhlIElOREVYX0VOVFJZX0hFQURFUi4gUmVnYXJkbGVzcyBvZgogCS8vCQkgICBrZXlfbGVuZ3RoLCB0aGUgYWRkcmVzcyBvZiB0aGUgOC1ieXRlIGJvdW5kYXJ5Ci0JLy8JCSAgIGFsbGlnbmVkIHZjbiBvZiBJTkRFWF9FTlRSWXtfSEVBREVSfSAqaWUgaXMgZ2l2ZW4gYnkKKwkvLwkJICAgYWxpZ25lZCB2Y24gb2YgSU5ERVhfRU5UUll7X0hFQURFUn0gKmllIGlzIGdpdmVuIGJ5CiAJLy8JCSAgIChjaGFyKilpZSArIGxlMTZfdG9fY3B1KGllKiktPmxlbmd0aCkgLSBzaXplb2YoVkNOKSwKIAkvLwkJICAgd2hlcmUgc2l6ZW9mKFZDTikgY2FuIGJlIGhhcmRjb2RlZCBhcyA4IGlmIHdhbnRlZC4gKi8KIH0gX19hdHRyaWJ1dGVfXyAoKF9fcGFja2VkX18pKSBJTkRFWF9FTlRSWTsKZGlmZiAtLWdpdCBhL2ZzL250ZnMvbG9nZmlsZS5jIGIvZnMvbnRmcy9sb2dmaWxlLmMKaW5kZXggNGRhZGNkZi4uYzcxZGUyOSAxMDA2NDQKLS0tIGEvZnMvbnRmcy9sb2dmaWxlLmMKKysrIGIvZnMvbnRmcy9sb2dmaWxlLmMKQEAgLTY2OSw3ICs2NjksNyBAQAogICogb2YgY2FzZXMgd2hlcmUgd2UgdGhpbmsgdGhhdCBhIHZvbHVtZSBpcyBkaXJ0eSB3aGVuIGluIGZhY3QgaXQgaXMgY2xlYW4uCiAgKiBUaGlzIHNob3VsZCBvbmx5IGFmZmVjdCB2b2x1bWVzIHRoYXQgaGF2ZSBub3QgYmVlbiBzaHV0ZG93biBjbGVhbmx5IGJ1dCBkaWQKICAqIG5vdCBoYXZlIGFueSBwZW5kaW5nLCBub24tY2hlY2stcG9pbnRlZCBpL28sIGkuZS4gdGhleSB3ZXJlIGNvbXBsZXRlbHkgaWRsZQotICogYXQgbGVhc3QgZm9yIHRoZSBmaXZlIHNlY29uZHMgcHJlY2VlZGluZyB0aGUgdW5jbGVhbiBzaHV0ZG93bi4KKyAqIGF0IGxlYXN0IGZvciB0aGUgZml2ZSBzZWNvbmRzIHByZWNlZGluZyB0aGUgdW5jbGVhbiBzaHV0ZG93bi4KICAqCiAgKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGUgJExvZ0ZpbGUgam91cm5hbCBoYXMgYWxyZWFkeSBiZWVuIGNvbnNpc3RlbmN5CiAgKiBjaGVja2VkIGJ5IGEgY2FsbCB0byBudGZzX2NoZWNrX2xvZ2ZpbGUoKSBhbmQgaW4gcGFydGljdWxhciBpZiB0aGUgJExvZ0ZpbGUKZGlmZiAtLWdpdCBhL2ZzL250ZnMvbG9nZmlsZS5oIGIvZnMvbnRmcy9sb2dmaWxlLmgKaW5kZXggYjVhNmYwOC4uYWEyYjZhYyAxMDA2NDQKLS0tIGEvZnMvbnRmcy9sb2dmaWxlLmgKKysrIGIvZnMvbnRmcy9sb2dmaWxlLmgKQEAgLTIyMiw3ICsyMjIsNyBAQAogLyogMjQqLwlzbGU2NCBmaWxlX3NpemU7CS8qIFVzYWJsZSBieXRlIHNpemUgb2YgdGhlIGxvZyBmaWxlLiAgSWYgdGhlCiAJCQkJICAgcmVzdGFydF9hcmVhX29mZnNldCArIHRoZSBvZmZzZXQgb2YgdGhlCiAJCQkJICAgZmlsZV9zaXplIGFyZSA+IDUxMCB0aGVuIGNvcnJ1cHRpb24gaGFzCi0JCQkJICAgb2NjdXJlZC4gIFRoaXMgaXMgdGhlIHZlcnkgZmlyc3QgY2hlY2sgd2hlbgorCQkJCSAgIG9jY3VycmVkLiAgVGhpcyBpcyB0aGUgdmVyeSBmaXJzdCBjaGVjayB3aGVuCiAJCQkJICAgc3RhcnRpbmcgd2l0aCB0aGUgcmVzdGFydF9hcmVhIGFzIGlmIGl0CiAJCQkJICAgZmFpbHMgaXQgbWVhbnMgdGhhdCBzb21lIG9mIHRoZSBhYm92ZSB2YWx1ZXMKIAkJCQkgICB3aWxsIGJlIGNvcnJ1cHRlZCBieSB0aGUgbXVsdGkgc2VjdG9yCmRpZmYgLS1naXQgYS9mcy9udGZzL21mdC5jIGIvZnMvbnRmcy9tZnQuYwppbmRleCAzMjZlNzQ3Li4zODI4NTdmIDEwMDY0NAotLS0gYS9mcy9udGZzL21mdC5jCisrKyBiL2ZzL250ZnMvbWZ0LmMKQEAgLTczLDcgKzczLDcgQEAKIAkJaWYgKGluZGV4ID4gZW5kX2luZGV4IHx8IChpX3NpemUgJiB+UEFHRV9DQUNIRV9NQVNLKSA8IG9mcyArCiAJCQkJdm9sLT5tZnRfcmVjb3JkX3NpemUpIHsKIAkJCXBhZ2UgPSBFUlJfUFRSKC1FTk9FTlQpOwotCQkJbnRmc19lcnJvcih2b2wtPnNiLCAiQXR0ZW10IHRvIHJlYWQgbWZ0IHJlY29yZCAweCVseCwgIgorCQkJbnRmc19lcnJvcih2b2wtPnNiLCAiQXR0ZW1wdCB0byByZWFkIG1mdCByZWNvcmQgMHglbHgsICIKIAkJCQkJIndoaWNoIGlzIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBtZnQuICAiCiAJCQkJCSJUaGlzIGlzIHByb2JhYmx5IGEgYnVnIGluIHRoZSBudGZzICIKIAkJCQkJImRyaXZlci4iLCBuaS0+bWZ0X25vKTsKQEAgLTE0NDIsNyArMTQ0Miw3IEBACiAJCS8vIE5vdGU6IEl0IHdpbGwgbmVlZCB0byBiZSBhIHNwZWNpYWwgbWZ0IHJlY29yZCBhbmQgaWYgbm9uZSBvZgogCQkvLyB0aG9zZSBhcmUgYXZhaWxhYmxlIGl0IGdldHMgcmF0aGVyIGNvbXBsaWNhdGVkLi4uCiAJCW50ZnNfZXJyb3Iodm9sLT5zYiwgIk5vdCBlbm91Z2ggc3BhY2UgaW4gdGhpcyBtZnQgcmVjb3JkIHRvICIKLQkJCQkiYWNjb21vZGF0ZSBleHRlbmRlZCBtZnQgYml0bWFwIGF0dHJpYnV0ZSAiCisJCQkJImFjY29tbW9kYXRlIGV4dGVuZGVkIG1mdCBiaXRtYXAgYXR0cmlidXRlICIKIAkJCQkiZXh0ZW50LiAgQ2Fubm90IGhhbmRsZSB0aGlzIHlldC4iKTsKIAkJcmV0ID0gLUVPUE5PVFNVUFA7CiAJCWdvdG8gdW5kb19hbGxvYzsKQEAgLTE4NzksNyArMTg3OSw3IEBACiAJCS8vIGFuZCB3ZSB3b3VsZCB0aGVuIG5lZWQgdG8gdXBkYXRlIGFsbCByZWZlcmVuY2VzIHRvIHRoaXMgbWZ0CiAJCS8vIHJlY29yZCBhcHByb3ByaWF0ZWx5LiAgVGhpcyBpcyByYXRoZXIgY29tcGxpY2F0ZWQuLi4KIAkJbnRmc19lcnJvcih2b2wtPnNiLCAiTm90IGVub3VnaCBzcGFjZSBpbiB0aGlzIG1mdCByZWNvcmQgdG8gIgotCQkJCSJhY2NvbW9kYXRlIGV4dGVuZGVkIG1mdCBkYXRhIGF0dHJpYnV0ZSAiCisJCQkJImFjY29tbW9kYXRlIGV4dGVuZGVkIG1mdCBkYXRhIGF0dHJpYnV0ZSAiCiAJCQkJImV4dGVudC4gIENhbm5vdCBoYW5kbGUgdGhpcyB5ZXQuIik7CiAJCXJldCA9IC1FT1BOT1RTVVBQOwogCQlnb3RvIHVuZG9fYWxsb2M7CkBAIC0yMzU3LDcgKzIzNTcsNyBAQAogCX0KICNpZmRlZiBERUJVRwogCXJlYWRfbG9ja19pcnFzYXZlKCZtZnRibXBfbmktPnNpemVfbG9jaywgZmxhZ3MpOwotCW50ZnNfZGVidWcoIlN0YXR1cyBvZiBtZnRibXAgYWZ0ZXIgaW5pdGlhbGl6ZWQgZXh0ZW50aW9uOiAiCisJbnRmc19kZWJ1ZygiU3RhdHVzIG9mIG1mdGJtcCBhZnRlciBpbml0aWFsaXplZCBleHRlbnNpb246ICIKIAkJCSJhbGxvY2F0ZWRfc2l6ZSAweCVsbHgsIGRhdGFfc2l6ZSAweCVsbHgsICIKIAkJCSJpbml0aWFsaXplZF9zaXplIDB4JWxseC4iLAogCQkJKGxvbmcgbG9uZyltZnRibXBfbmktPmFsbG9jYXRlZF9zaXplLApkaWZmIC0tZ2l0IGEvZnMvbnRmcy9ydW5saXN0LmMgYi9mcy9udGZzL3J1bmxpc3QuYwppbmRleCA1NmE5YTZkMi4uZWFjN2Q2NyAxMDA2NDQKLS0tIGEvZnMvbnRmcy9ydW5saXN0LmMKKysrIGIvZnMvbnRmcy9ydW5saXN0LmMKQEAgLTEyNDMsNyArMTI0Myw3IEBACiAgKiB3cml0ZS4KICAqCiAgKiBUaGlzIGlzIHVzZWQgd2hlbiBidWlsZGluZyB0aGUgbWFwcGluZyBwYWlycyBhcnJheSBvZiBhIHJ1bmxpc3QgdG8gY29tcHJlc3MKLSAqIGEgZ2l2ZW4gbG9naWNhbCBjbHVzdGVyIG51bWJlciAobGNuKSBvciBhIHNwZWNpZmljIHJ1biBsZW5ndGggdG8gdGhlIG1pbnVtdW0KKyAqIGEgZ2l2ZW4gbG9naWNhbCBjbHVzdGVyIG51bWJlciAobGNuKSBvciBhIHNwZWNpZmljIHJ1biBsZW5ndGggdG8gdGhlIG1pbmltdW0KICAqIHNpemUgcG9zc2libGUuCiAgKgogICogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBvbiBzdWNjZXNzLiAgT24gZXJyb3IsIGkuZS4gdGhlCmRpZmYgLS1naXQgYS9mcy9udGZzL3N1cGVyLmMgYi9mcy9udGZzL3N1cGVyLmMKaW5kZXggMjkwOTlhMC4uYjUyNzA2ZCAxMDA2NDQKLS0tIGEvZnMvbnRmcy9zdXBlci5jCisrKyBiL2ZzL250ZnMvc3VwZXIuYwpAQCAtNDU4LDcgKzQ1OCw3IEBACiAJICogdGhlIHZvbHVtZSBvbiBib290IGFuZCB1cGRhdGVzIHRoZW0uCiAJICoKIAkgKiBXaGVuIHJlbW91bnRpbmcgcmVhZC1vbmx5LCBtYXJrIHRoZSB2b2x1bWUgY2xlYW4gaWYgbm8gdm9sdW1lIGVycm9ycwotCSAqIGhhdmUgb2NjdXJlZC4KKwkgKiBoYXZlIG9jY3VycmVkLgogCSAqLwogCWlmICgoc2ItPnNfZmxhZ3MgJiBNU19SRE9OTFkpICYmICEoKmZsYWdzICYgTVNfUkRPTkxZKSkgewogCQlzdGF0aWMgY29uc3QgY2hhciAqZXMgPSAiLiAgQ2Fubm90IHJlbW91bnQgcmVhZC13cml0ZS4iOwpAQCAtMTI2OSw3ICsxMjY5LDcgQEAKIAkJCQkJImhpYmVybmF0ZWQgb24gdGhlIHZvbHVtZS4iKTsKIAkJCXJldHVybiAwOwogCQl9Ci0JCS8qIEEgcmVhbCBlcnJvciBvY2N1cmVkLiAqLworCQkvKiBBIHJlYWwgZXJyb3Igb2NjdXJyZWQuICovCiAJCW50ZnNfZXJyb3Iodm9sLT5zYiwgIkZhaWxlZCB0byBmaW5kIGlub2RlIG51bWJlciBmb3IgIgogCQkJCSJoaWJlcmZpbC5zeXMuIik7CiAJCXJldHVybiByZXQ7CkBAIC0xMzcwLDcgKzEzNzAsNyBAQAogCQkJTlZvbFNldFF1b3RhT3V0T2ZEYXRlKHZvbCk7CiAJCQlyZXR1cm4gdHJ1ZTsKIAkJfQotCQkvKiBBIHJlYWwgZXJyb3Igb2NjdXJlZC4gKi8KKwkJLyogQSByZWFsIGVycm9yIG9jY3VycmVkLiAqLwogCQludGZzX2Vycm9yKHZvbC0+c2IsICJGYWlsZWQgdG8gZmluZCBpbm9kZSBudW1iZXIgZm9yICRRdW90YS4iKTsKIAkJcmV0dXJuIGZhbHNlOwogCX0KQEAgLTE0NTQsNyArMTQ1NCw3IEBACiAJCQlOVm9sU2V0VXNuSnJubFN0YW1wZWQodm9sKTsKIAkJCXJldHVybiB0cnVlOwogCQl9Ci0JCS8qIEEgcmVhbCBlcnJvciBvY2N1cmVkLiAqLworCQkvKiBBIHJlYWwgZXJyb3Igb2NjdXJyZWQuICovCiAJCW50ZnNfZXJyb3Iodm9sLT5zYiwgIkZhaWxlZCB0byBmaW5kIGlub2RlIG51bWJlciBmb3IgIgogCQkJCSIkVXNuSnJubC4iKTsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMjI5Miw3ICsyMjkyLDcgQEAKIAludGZzX2NvbW1pdF9pbm9kZSh2b2wtPm1mdF9pbm8pOwogCiAJLyoKLQkgKiBJZiBhIHJlYWQtd3JpdGUgbW91bnQgYW5kIG5vIHZvbHVtZSBlcnJvcnMgaGF2ZSBvY2N1cmVkLCBtYXJrIHRoZQorCSAqIElmIGEgcmVhZC13cml0ZSBtb3VudCBhbmQgbm8gdm9sdW1lIGVycm9ycyBoYXZlIG9jY3VycmVkLCBtYXJrIHRoZQogCSAqIHZvbHVtZSBjbGVhbi4gIEFsc28sIHJlLWNvbW1pdCBhbGwgYWZmZWN0ZWQgaW5vZGVzLgogCSAqLwogCWlmICghKHNiLT5zX2ZsYWdzICYgTVNfUkRPTkxZKSkgewpAQCAtMjQ5Niw3ICsyNDk2LDcgQEAKIAlpZiAodm9sLT5ucl9jbHVzdGVycyAmIDYzKQogCQlucl9mcmVlICs9IDY0IC0gKHZvbC0+bnJfY2x1c3RlcnMgJiA2Myk7CiAJdXBfcmVhZCgmdm9sLT5sY25ibXBfbG9jayk7Ci0JLyogSWYgZXJyb3JzIG9jY3VyZWQgd2UgbWF5IHdlbGwgaGF2ZSBnb25lIGJlbG93IHplcm8sIGZpeCB0aGlzLiAqLworCS8qIElmIGVycm9ycyBvY2N1cnJlZCB3ZSBtYXkgd2VsbCBoYXZlIGdvbmUgYmVsb3cgemVybywgZml4IHRoaXMuICovCiAJaWYgKG5yX2ZyZWUgPCAwKQogCQlucl9mcmVlID0gMDsKIAludGZzX2RlYnVnKCJFeGl0aW5nLiIpOwpAQCAtMjU2MSw3ICsyNTYxLDcgQEAKIAl9CiAJbnRmc19kZWJ1ZygiRmluaXNoZWQgcmVhZGluZyAkTUZULyRCSVRNQVAsIGxhc3QgaW5kZXggPSAweCVseC4iLAogCQkJaW5kZXggLSAxKTsKLQkvKiBJZiBlcnJvcnMgb2NjdXJlZCB3ZSBtYXkgd2VsbCBoYXZlIGdvbmUgYmVsb3cgemVybywgZml4IHRoaXMuICovCisJLyogSWYgZXJyb3JzIG9jY3VycmVkIHdlIG1heSB3ZWxsIGhhdmUgZ29uZSBiZWxvdyB6ZXJvLCBmaXggdGhpcy4gKi8KIAlpZiAobnJfZnJlZSA8IDApCiAJCW5yX2ZyZWUgPSAwOwogCW50ZnNfZGVidWcoIkV4aXRpbmcuIik7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9hbGxvYy5jIGIvZnMvb2NmczIvYWxsb2MuYwppbmRleCBiMjdhMGQ4Li40OGFhOWM3IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9hbGxvYy5jCisrKyBiL2ZzL29jZnMyL2FsbG9jLmMKQEAgLTQ1MTksNyArNDUxOSw3IEBACiB9CiAKIC8qCi0gKiBIZWxwZXIgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBiZWdpbmluZyBvZiBhbiBpbnNlcnQuCisgKiBIZWxwZXIgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaW5zZXJ0LgogICoKICAqIFRoaXMgY29tcHV0ZXMgYSBmZXcgdGhpbmdzIHRoYXQgYXJlIGNvbW1vbmx5IHVzZWQgaW4gdGhlIHByb2Nlc3Mgb2YKICAqIGluc2VydGluZyBpbnRvIHRoZSBidHJlZToKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2FvcHMuaCBiL2ZzL29jZnMyL2FvcHMuaAppbmRleCBlY2ViNDU2Li43NWNmM2FkIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9hb3BzLmgKKysrIGIvZnMvb2NmczIvYW9wcy5oCkBAIC03MSw3ICs3MSw3IEBACiAKIC8qCiAgKiBVc2luZyBhIG5hbWVkIGVudW0gcmVwcmVzZW50aW5nIGxvY2sgdHlwZXMgaW4gdGVybXMgb2YgI04gYml0IHN0b3JlZCBpbgotICogaW9jYi0+cHJpdmF0ZSwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgdXNlZCBmb3IgY29tbXVuaWNhdGlvbiBiZXd0ZWVuCisgKiBpb2NiLT5wcml2YXRlLCB3aGljaCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciBjb21tdW5pY2F0aW9uIGJldHdlZW4KICAqIG9jZnMyX2Rpb19lbmRfaW8oKSBhbmQgb2NmczJfZmlsZV9haW9fd3JpdGUvcmVhZCgpLgogICovCiBlbnVtIG9jZnMyX2lvY2JfbG9ja19iaXRzIHsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMgYi9mcy9vY2ZzMi9jbHVzdGVyL2hlYXJ0YmVhdC5jCmluZGV4IDI0NjFlYjMuLjY0MzcyMDIgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2NsdXN0ZXIvaGVhcnRiZWF0LmMKKysrIGIvZnMvb2NmczIvY2x1c3Rlci9oZWFydGJlYXQuYwpAQCAtMjI3NSw3ICsyMjc1LDcgQEAKIAlrZnJlZShocyk7CiB9CiAKLS8qIGhiIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBhbmQgaXNzdWVpbmcgKi8KKy8qIGhiIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbiBhbmQgaXNzdWluZyAqLwogCiBzdGF0aWMgc3RydWN0IG8yaGJfY2FsbGJhY2sgKmhiY2FsbF9mcm9tX3R5cGUoZW51bSBvMmhiX2NhbGxiYWNrX3R5cGUgdHlwZSkKIHsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2NsdXN0ZXIvcXVvcnVtLmMgYi9mcy9vY2ZzMi9jbHVzdGVyL3F1b3J1bS5jCmluZGV4IGE4NzM2NjcuLjhmOWNlYTEgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2NsdXN0ZXIvcXVvcnVtLmMKKysrIGIvZnMvb2NmczIvY2x1c3Rlci9xdW9ydW0uYwpAQCAtODksNyArODksNyBAQAogCX07CiB9CiAKLS8qIEluZGljYXRlIHRoYXQgYSB0aW1lb3V0IG9jY3VyZWQgb24gYSBoZWFyYmVhdCByZWdpb24gd3JpdGUuIFRoZQorLyogSW5kaWNhdGUgdGhhdCBhIHRpbWVvdXQgb2NjdXJyZWQgb24gYSBoZWFyYmVhdCByZWdpb24gd3JpdGUuIFRoZQogICogb3RoZXIgbm9kZXMgaW4gdGhlIGNsdXN0ZXIgbWF5IGNvbnNpZGVyIHVzIGRlYWQgYXQgdGhhdCB0aW1lIHNvIHdlCiAgKiB3YW50IHRvICJmZW5jZSIgb3Vyc2VsdmVzIHNvIHRoYXQgd2UgZG9uJ3Qgc2NyaWJibGUgb24gdGhlIGRpc2sKICAqIGFmdGVyIHRoZXkgdGhpbmsgdGhleSd2ZSByZWNvdmVyZWQgdXMuIFRoaXMgY2FuJ3Qgc29sdmUgYWxsCkBAIC0yNjEsNyArMjYxLDcgQEAKIAlzcGluX3VubG9jaygmcXMtPnFzX2xvY2spOwogfQogCi0vKiBUaGlzIGlzIGFuYWxhZ291cyB0byBoYl91cC4gIGFzIGEgbm9kZSdzIGNvbm5lY3Rpb24gY29tZXMgdXAgd2UgZGVsYXkgdGhlCisvKiBUaGlzIGlzIGFuYWxvZ291cyB0byBoYl91cC4gIGFzIGEgbm9kZSdzIGNvbm5lY3Rpb24gY29tZXMgdXAgd2UgZGVsYXkgdGhlCiAgKiBxdW9ydW0gZGVjaXNpb24gdW50aWwgd2Ugc2VlIGl0IGhlYXJ0YmVhdGluZy4gIHRoZSBob2xkIHdpbGwgYmUgZHJvcGVkIGluCiAgKiBoYl91cCBvciBoYl9kb3duLiAgaXQgbWlnaHQgYmUgcGVycGV0dWF0ZWQgYnkgY29uX2VyciB1bnRpbCBoYl9kb3duLiAgaWYKICAqIGl0J3MgYWxyZWFkeSBoZWFydGJlYXRpbmcgd2Ugd2UgbWlnaHQgYmUgZHJvcHBpbmcgYSBob2xkIHRoYXQgY29ubl91cCBnb3QuCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9jbHVzdGVyL3RjcC5jIGIvZnMvb2NmczIvY2x1c3Rlci90Y3AuYwppbmRleCBlZTA0ZmY1Li5kYjVlZTRiIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9jbHVzdGVyL3RjcC5jCisrKyBiL2ZzL29jZnMyL2NsdXN0ZXIvdGNwLmMKQEAgLTU2NSw3ICs1NjUsNyBAQAogCSAqIHRoZSB3b3JrIHF1ZXVlIGFjdHVhbGx5IGJlaW5nIHVwLiAqLwogCWlmICghdmFsaWQgJiYgbzJuZXRfd3EpIHsKIAkJdW5zaWduZWQgbG9uZyBkZWxheTsKLQkJLyogZGVsYXkgaWYgd2UncmUgd2l0aGluZyBhIFJFQ09OTkVDVF9ERUxBWSBvZiB0aGUKKwkJLyogZGVsYXkgaWYgd2UncmUgd2l0aGluIGEgUkVDT05ORUNUX0RFTEFZIG9mIHRoZQogCQkgKiBsYXN0IGF0dGVtcHQgKi8KIAkJZGVsYXkgPSAobm4tPm5uX2xhc3RfY29ubmVjdF9hdHRlbXB0ICsKIAkJCSBtc2Vjc190b19qaWZmaWVzKG8ybmV0X3JlY29ubmVjdF9kZWxheSgpKSkKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2RsbS9kbG1tYXN0ZXIuYyBiL2ZzL29jZnMyL2RsbS9kbG1tYXN0ZXIuYwppbmRleCA5ZDY3NjEwLi5mZWRlNTdlIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9kbG0vZGxtbWFzdGVyLmMKKysrIGIvZnMvb2NmczIvZGxtL2RsbW1hc3Rlci5jCkBAIC04MDgsNyArODA4LDcgQEAKIAkJCQlkbG1fbWxlX2RldGFjaF9oYl9ldmVudHMoZGxtLCBtbGUpOwogCQkJZGxtX3B1dF9tbGUobWxlKTsKIAkJCW1sZSA9IE5VTEw7Ci0JCQkvKiB0aGlzIGlzIGxhbWUsIGJ1dCB3ZSBjYW50IHdhaXQgb24gZWl0aGVyCisJCQkvKiB0aGlzIGlzIGxhbWUsIGJ1dCB3ZSBjYW4ndCB3YWl0IG9uIGVpdGhlcgogCQkJICogdGhlIG1sZSBvciBsb2NrcmVzIHdhaXRxdWV1ZSBoZXJlICovCiAJCQlpZiAobWlnKQogCQkJCW1zbGVlcCgxMDApOwpAQCAtODQzLDcgKzg0Myw3IEBACiAKIAkvKiBmaW5hbGx5IGFkZCB0aGUgbG9ja3JlcyB0byBpdHMgaGFzaCBidWNrZXQgKi8KIAlfX2RsbV9pbnNlcnRfbG9ja3JlcyhkbG0sIHJlcyk7Ci0JLyogc2luY2UgdGhpcyBsb2NrcmVzIGlzIG5ldyBpdCBkb2VzbnQgbm90IHJlcXVpcmUgdGhlIHNwaW5sb2NrICovCisJLyogc2luY2UgdGhpcyBsb2NrcmVzIGlzIG5ldyBpdCBkb2Vzbid0IG5vdCByZXF1aXJlIHRoZSBzcGlubG9jayAqLwogCWRsbV9sb2NrcmVzX2dyYWJfaW5mbGlnaHRfcmVmX25ldyhkbG0sIHJlcyk7CiAKIAkvKiBpZiB0aGlzIG5vZGUgZG9lcyBub3QgYmVjb21lIHRoZSBtYXN0ZXIgbWFrZSBzdXJlIHRvIGRyb3AKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL2lub2RlLmMgYi9mcy9vY2ZzMi9pbm9kZS5jCmluZGV4IDE3N2QzYTYuLmI0YzhiYjYgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL2lub2RlLmMKKysrIGIvZnMvb2NmczIvaW5vZGUuYwpAQCAtODM1LDcgKzgzNSw3IEBACiAKIAkvKiBJZiB3ZSBoYXZlIGFsbG93ZCB3aXBlIG9mIHRoaXMgaW5vZGUgZm9yIGFub3RoZXIgbm9kZSwgaXQKIAkgKiB3aWxsIGJlIG1hcmtlZCBoZXJlIHNvIHdlIGNhbiBzYWZlbHkgc2tpcCBpdC4gUmVjb3Zlcnkgd2lsbAotCSAqIGNsZWFudXAgYW55IGlub2RlcyB3ZSBtaWdodCBpbmFkdmVydGFudGx5IHNraXAgaGVyZS4gKi8KKwkgKiBjbGVhbnVwIGFueSBpbm9kZXMgd2UgbWlnaHQgaW5hZHZlcnRlbnRseSBza2lwIGhlcmUuICovCiAJaWYgKG9pLT5pcF9mbGFncyAmIE9DRlMyX0lOT0RFX1NLSVBfREVMRVRFKQogCQlnb3RvIGJhaWxfdW5sb2NrOwogCkBAIC05MTcsNyArOTE3LDcgQEAKIAkgKiB0aGUgaW5vZGUgb3BlbiBsb2NrIGluIG9jZnMyX3JlYWRfbG9ja2VkX2lub2RlKCkuIFdoZW4gd2UKIAkgKiBnZXQgdG8gLT5kZWxldGVfaW5vZGUoKSwgZWFjaCBub2RlIHRyaWVzIHRvIGNvbnZlcnQgaXQncwogCSAqIGxvY2sgdG8gYW4gZXhjbHVzaXZlLiBUcnlsb2NrcyBhcmUgc2VyaWFsaXplZCBieSB0aGUgaW5vZGUKLQkgKiBtZXRhIGRhdGEgbG9jay4gSWYgdGhlIHVwY29udmVydCBzdWNlZWRzLCB3ZSBrbm93IHRoZSBpbm9kZQorCSAqIG1ldGEgZGF0YSBsb2NrLiBJZiB0aGUgdXBjb252ZXJ0IHN1Y2NlZWRzLCB3ZSBrbm93IHRoZSBpbm9kZQogCSAqIGlzIG5vIGxvbmdlciBsaXZlIGFuZCBjYW4gYmUgZGVsZXRlZC4KIAkgKgogCSAqIFRob3VnaCB3ZSBjYWxsIHRoaXMgd2l0aCB0aGUgbWV0YSBkYXRhIGxvY2sgaGVsZCwgdGhlCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9qb3VybmFsLmMgYi9mcy9vY2ZzMi9qb3VybmFsLmMKaW5kZXggZGNjMmQ5My4uYjE0MWE0NCAxMDA2NDQKLS0tIGEvZnMvb2NmczIvam91cm5hbC5jCisrKyBiL2ZzL29jZnMyL2pvdXJuYWwuYwpAQCAtMTM2OCw3ICsxMzY4LDcgQEAKIAkJbWxvZ19lcnJubyhzdGF0dXMpOwogCiAJLyogTm93IGl0IGlzIHJpZ2h0IHRpbWUgdG8gcmVjb3ZlciBxdW90YXMuLi4gV2UgaGF2ZSB0byBkbyB0aGlzIHVuZGVyCi0JICogc3VwZXJibG9jayBsb2NrIHNvIHRoYXQgbm9vbmUgY2FuIHN0YXJ0IHVzaW5nIHRoZSBzbG90IChhbmQgY3Jhc2gpCisJICogc3VwZXJibG9jayBsb2NrIHNvIHRoYXQgbm8gb25lIGNhbiBzdGFydCB1c2luZyB0aGUgc2xvdCAoYW5kIGNyYXNoKQogCSAqIGJlZm9yZSB3ZSByZWNvdmVyIGl0ICovCiAJZm9yIChpID0gMDsgaSA8IHJtX3F1b3RhX3VzZWQ7IGkrKykgewogCQlxcmVjID0gb2NmczJfYmVnaW5fcXVvdGFfcmVjb3Zlcnkob3NiLCBybV9xdW90YVtpXSk7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9qb3VybmFsLmggYi9mcy9vY2ZzMi9qb3VybmFsLmgKaW5kZXggNjE4MGRhMS4uNjhjZjJmNiAxMDA2NDQKLS0tIGEvZnMvb2NmczIvam91cm5hbC5oCisrKyBiL2ZzL29jZnMyL2pvdXJuYWwuaApAQCAtMjE1LDcgKzIxNSw3IEBACiAJCS8qIFdBUk5JTkc6IFRoaXMgb25seSBraWNrcyBvZmYgYSBzaW5nbGUKIAkJICogY2hlY2twb2ludC4gSWYgc29tZW9uZSByYWNlcyB5b3UgYW5kIGFkZHMgbW9yZQogCQkgKiBtZXRhZGF0YSB0byB0aGUgam91cm5hbCwgeW91IHdvbid0IGtub3csIGFuZCB3aWxsCi0JCSAqIHdpbmQgdXAgd2FpdGluZyAqYWxvdCogbG9uZ2VyIHRoYW4gbmVjZXNzYXJ5LiBSaWdodAorCQkgKiB3aW5kIHVwIHdhaXRpbmcgKmEgbG90KiBsb25nZXIgdGhhbiBuZWNlc3NhcnkuIFJpZ2h0CiAJCSAqIG5vdyB3ZSBvbmx5IHVzZSB0aGlzIGluIGNsZWFyX2lub2RlIHNvIHRoYXQncwogCQkgKiBPSy4gKi8KIAkJb2NmczJfc3RhcnRfY2hlY2twb2ludChvc2IpOwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvbmFtZWkuYyBiL2ZzL29jZnMyL25hbWVpLmMKaW5kZXggMjhmMmNjMS4uZTVkNzM4YyAxMDA2NDQKLS0tIGEvZnMvb2NmczIvbmFtZWkuYworKysgYi9mcy9vY2ZzMi9uYW1laS5jCkBAIC0yMTI4LDcgKzIxMjgsNyBAQAogfQogCiAvKioKLSAqIG9jZnMyX3ByZXBfbmV3X29ycGhhbmVkX2ZpbGUoKSAtIFByZXBhcmUgdGhlIG9ycGhhbiBkaXIgdG8gcmVjaWV2ZSBhIG5ld2x5CisgKiBvY2ZzMl9wcmVwX25ld19vcnBoYW5lZF9maWxlKCkgLSBQcmVwYXJlIHRoZSBvcnBoYW4gZGlyIHRvIHJlY2VpdmUgYSBuZXdseQogICogYWxsb2NhdGVkIGZpbGUuIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIHR5cGljYWwgJ2FkZCB0byBvcnBoYW4gZGlyJwogICogb3BlcmF0aW9uIGluIHRoYXQgdGhlIGlub2RlIGRvZXMgbm90IHlldCBleGlzdC4gVGhpcyBpcyBhIHByb2JsZW0gYmVjYXVzZQogICogdGhlIG9ycGhhbiBkaXIgc3RyaW5naWZpZXMgdGhlIGlub2RlIGJsb2NrIG51bWJlciB0byBjb21lIHVwIHdpdGggaXQncwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvb2NmczJfZnMuaCBiL2ZzL29jZnMyL29jZnMyX2ZzLmgKaW5kZXggYmYyZTc3Ni4uYjY4Zjg3YSAxMDA2NDQKLS0tIGEvZnMvb2NmczIvb2NmczJfZnMuaAorKysgYi9mcy9vY2ZzMi9vY2ZzMl9mcy5oCkBAIC00NDEsNyArNDQxLDcgQEAKIHN0cnVjdCBvY2ZzMl9ibG9ja19jaGVjayB7CiAvKjAwKi8JX19sZTMyIGJjX2NyYzMyZTsJLyogODAyLjMgRXRoZXJuZXQgSUkgQ1JDMzIgKi8KIAlfX2xlMTYgYmNfZWNjOwkJLyogU2luZ2xlLWVycm9yLWNvcnJlY3Rpb24gcGFyaXR5IHZlY3Rvci4KLQkJCQkgICBUaGlzIGlzIGEgc2ltcGxlIEhhbW1pbmcgY29kZSBkZXBlbmRhbnQKKwkJCQkgICBUaGlzIGlzIGEgc2ltcGxlIEhhbW1pbmcgY29kZSBkZXBlbmRlbnQKIAkJCQkgICBvbiB0aGUgYmxvY2tzaXplLiAgT0NGUzIncyBtYXhpbXVtCiAJCQkJICAgYmxvY2tzaXplLCA0SywgcmVxdWlyZXMgMTYgcGFyaXR5IGJpdHMsCiAJCQkJICAgc28gd2UgZml0IGluIF9fbGUxNi4gKi8KQEAgLTc1MCw3ICs3NTAsNyBAQAogCQkJCQkJCSAgYWZ0ZXIgYW4gdW5jbGVhbgogCQkJCQkJCSAgc2h1dGRvd24gKi8KIAkJfSBqb3VybmFsMTsKLQl9IGlkMTsJCQkJLyogSW5vZGUgdHlwZSBkZXBlbmRhbnQgMSAqLworCX0gaWQxOwkJCQkvKiBJbm9kZSB0eXBlIGRlcGVuZGVudCAxICovCiAvKkMwKi8JdW5pb24gewogCQlzdHJ1Y3Qgb2NmczJfc3VwZXJfYmxvY2sJaV9zdXBlcjsKIAkJc3RydWN0IG9jZnMyX2xvY2FsX2FsbG9jCWlfbGFiOwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIvcXVvdGFfZ2xvYmFsLmMgYi9mcy9vY2ZzMi9xdW90YV9nbG9iYWwuYwppbmRleCAyNzlhZWY2Li45MmZjZDU3IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9xdW90YV9nbG9iYWwuYworKysgYi9mcy9vY2ZzMi9xdW90YV9nbG9iYWwuYwpAQCAtNTU2LDcgKzU1Niw3IEBACiAJc3Bpbl91bmxvY2soJmRxX2RhdGFfbG9jayk7CiAJZXJyID0gb2NmczJfcWluZm9fbG9jayhpbmZvLCBmcmVlaW5nKTsKIAlpZiAoZXJyIDwgMCkgewotCQltbG9nKE1MX0VSUk9SLCAiRmFpbGVkIHRvIGxvY2sgcXVvdGEgaW5mbywgbG9vc2luZyBxdW90YSB3cml0ZSIKKwkJbWxvZyhNTF9FUlJPUiwgIkZhaWxlZCB0byBsb2NrIHF1b3RhIGluZm8sIGxvc2luZyBxdW90YSB3cml0ZSIKIAkJCSAgICAgICAiICh0eXBlPSVkLCBpZD0ldSlcbiIsIGRxdW90LT5kcV90eXBlLAogCQkJICAgICAgICh1bnNpZ25lZClkcXVvdC0+ZHFfaWQpOwogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2ZzL29jZnMyL3Jlc2VydmF0aW9ucy5oIGIvZnMvb2NmczIvcmVzZXJ2YXRpb25zLmgKaW5kZXggMWU0OWNjMi4uNDJjMmI4MCAxMDA2NDQKLS0tIGEvZnMvb2NmczIvcmVzZXJ2YXRpb25zLmgKKysrIGIvZnMvb2NmczIvcmVzZXJ2YXRpb25zLmgKQEAgLTI5LDcgKzI5LDcgQEAKIHN0cnVjdCBvY2ZzMl9hbGxvY19yZXNlcnZhdGlvbiB7CiAJc3RydWN0IHJiX25vZGUJcl9ub2RlOwogCi0JdW5zaWduZWQgaW50CXJfc3RhcnQ7CS8qIEJlZ2luaW5nIG9mIGN1cnJlbnQgd2luZG93ICovCisJdW5zaWduZWQgaW50CXJfc3RhcnQ7CS8qIEJlZ2lubmluZyBvZiBjdXJyZW50IHdpbmRvdyAqLwogCXVuc2lnbmVkIGludAlyX2xlbjsJCS8qIExlbmd0aCBvZiB0aGUgd2luZG93ICovCiAKIAl1bnNpZ25lZCBpbnQJcl9sYXN0X2xlbjsJLyogTGVuZ3RoIG9mIG1vc3QgcmVjZW50IGFsbG9jICovCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9zdGFja2dsdWUuaCBiL2ZzL29jZnMyL3N0YWNrZ2x1ZS5oCmluZGV4IDhjZTczOTguLjFlYzU2ZmQgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL3N0YWNrZ2x1ZS5oCisrKyBiL2ZzL29jZnMyL3N0YWNrZ2x1ZS5oCkBAIC0xMjYsNyArMTI2LDcgQEAKIAkgKgogCSAqIC0+Y29ubmVjdCgpIG11c3Qgbm90IHJldHVybiB1bnRpbCBpdCBpcyBndWFyYW50ZWVkIHRoYXQKIAkgKgotCSAqICAtIE5vZGUgZG93biBub3RpZmljYXRpb25zIGZvciB0aGUgZmlsZXN5c3RlbSB3aWxsIGJlIHJlY2lldmVkCisJICogIC0gTm9kZSBkb3duIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBmaWxlc3lzdGVtIHdpbGwgYmUgcmVjZWl2ZWQKIAkgKiAgICBhbmQgcGFzc2VkIHRvIGNvbm4tPmNjX3JlY292ZXJ5X2hhbmRsZXIoKS4KIAkgKiAgLSBMb2NraW5nIHJlcXVlc3RzIGZvciB0aGUgZmlsZXN5c3RlbSB3aWxsIGJlIHByb2Nlc3NlZC4KIAkgKi8KZGlmZiAtLWdpdCBhL2ZzL29jZnMyL3N1YmFsbG9jLmMgYi9mcy9vY2ZzMi9zdWJhbGxvYy5jCmluZGV4IGFiNmUyMDYuLmJhNWQ5N2UgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL3N1YmFsbG9jLmMKKysrIGIvZnMvb2NmczIvc3ViYWxsb2MuYwpAQCAtMTUxMSw3ICsxNTExLDcgQEAKIAkJbWF4X2JpdHMgPSBsZTE2X3RvX2NwdShnZC0+YmdfYml0cyk7CiAKIAkJLyogVGFpbCBncm91cHMgaW4gY2x1c3RlciBiaXRtYXBzIHdoaWNoIGFyZW4ndCBjcGcKLQkJICogYWxpZ25lZCBhcmUgcHJvbmUgdG8gcGFydGlhbCBleHRlbnRpb24gYnkgYSBmYWlsZWQKKwkJICogYWxpZ25lZCBhcmUgcHJvbmUgdG8gcGFydGlhbCBleHRlbnNpb24gYnkgYSBmYWlsZWQKIAkJICogZnMgcmVzaXplLiBJZiB0aGUgZmlsZSBzeXN0ZW0gcmVzaXplIG5ldmVyIGdvdCB0bwogCQkgKiB1cGRhdGUgdGhlIGRpbm9kZSBjbHVzdGVyIGNvdW50LCB0aGVuIHdlIGRvbid0IHdhbnQKIAkJICogdG8gdHJ1c3QgYW55IGNsdXN0ZXJzIHBhc3QgaXQsIHJlZ2FyZGxlc3Mgb2Ygd2hhdApAQCAtMjQ1OSw3ICsyNDU5LDcgQEAKIAkvKiBUaGUgYWxsb2NfYmggY29tZXMgZnJvbSBvY2ZzMl9mcmVlX2Rpbm9kZSgpIG9yCiAJICogb2NmczJfZnJlZV9jbHVzdGVycygpLiAgVGhlIGNhbGxlcnMgaGF2ZSBhbGwgbG9ja2VkIHRoZQogCSAqIGFsbG9jYXRvciBhbmQgZ290dGVuIGFsbG9jX2JoIGZyb20gdGhlIGxvY2sgY2FsbC4gIFRoaXMKLQkgKiB2YWxpZGF0ZXMgdGhlIGRpbm9kZSBidWZmZXIuICBBbnkgY29ycnVwdGlvbiB0aGF0IGhhcyBoYXBwZW5kZWQKKwkgKiB2YWxpZGF0ZXMgdGhlIGRpbm9kZSBidWZmZXIuICBBbnkgY29ycnVwdGlvbiB0aGF0IGhhcyBoYXBwZW5lZAogCSAqIGlzIGEgY29kZSBidWcuICovCiAJQlVHX09OKCFPQ0ZTMl9JU19WQUxJRF9ESU5PREUoZmUpKTsKIAlCVUdfT04oKGNvdW50ICsgc3RhcnRfYml0KSA+IG9jZnMyX2JpdHNfcGVyX2dyb3VwKGNsKSk7CmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9zdXBlci5jIGIvZnMvb2NmczIvc3VwZXIuYwppbmRleCA2OWZhMTFiLi41YTUyMWM3IDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9zdXBlci5jCisrKyBiL2ZzL29jZnMyL3N1cGVyLmMKQEAgLTc4LDcgKzc4LDcgQEAKIHN0cnVjdCBrbWVtX2NhY2hlICpvY2ZzMl9kcXVvdF9jYWNoZXA7CiBzdHJ1Y3Qga21lbV9jYWNoZSAqb2NmczJfcWZfY2h1bmtfY2FjaGVwOwogCi0vKiBPQ0ZTMiBuZWVkcyB0byBzY2hlZHVsZSBzZXZlcmFsIGRpZmZlcm50IHR5cGVzIG9mIHdvcmsgd2hpY2gKKy8qIE9DRlMyIG5lZWRzIHRvIHNjaGVkdWxlIHNldmVyYWwgZGlmZmVyZW50IHR5cGVzIG9mIHdvcmsgd2hpY2gKICAqIHJlcXVpcmUgY2x1c3RlciBsb2NraW5nLCBkaXNrIEkvTywgcmVjb3Zlcnkgd2FpdHMsIGV0Yy4gU2luY2UgdGhlc2UKICAqIHR5cGVzIG9mIHdvcmsgdGVuZCB0byBiZSBoZWF2eSB3ZSBhdm9pZCB1c2luZyB0aGUga2VybmVsIGV2ZW50cwogICogd29ya3F1ZXVlIGFuZCBzY2hlZHVsZSBvbiBvdXIgb3duLiAqLwpkaWZmIC0tZ2l0IGEvZnMvb2NmczIveGF0dHIuYyBiL2ZzL29jZnMyL3hhdHRyLmMKaW5kZXggNTdhMjE1ZC4uODFlY2Y5YyAxMDA2NDQKLS0tIGEvZnMvb2NmczIveGF0dHIuYworKysgYi9mcy9vY2ZzMi94YXR0ci5jCkBAIC0zNTU0LDcgKzM1NTQsNyBAQAogCWRvd25fd3JpdGUoJk9DRlMyX0koaW5vZGUpLT5pcF94YXR0cl9zZW0pOwogCS8qCiAJICogU2NhbiBpbm9kZSBhbmQgZXh0ZXJuYWwgYmxvY2sgdG8gZmluZCB0aGUgc2FtZSBuYW1lCi0JICogZXh0ZW5kZWQgYXR0cmlidXRlIGFuZCBjb2xsZWN0IHNlYXJjaCBpbmZvbWF0aW9uLgorCSAqIGV4dGVuZGVkIGF0dHJpYnV0ZSBhbmQgY29sbGVjdCBzZWFyY2ggaW5mb3JtYXRpb24uCiAJICovCiAJcmV0ID0gb2NmczJfeGF0dHJfaWJvZHlfZmluZChpbm9kZSwgbmFtZV9pbmRleCwgbmFtZSwgJnhpcyk7CiAJaWYgKHJldCkKQEAgLTM1NzgsNyArMzU3OCw3IEBACiAJCQlnb3RvIGNsZWFudXA7CiAJfQogCi0JLyogQ2hlY2sgd2hldGhlciB0aGUgdmFsdWUgaXMgcmVmY291bnRlZCBhbmQgZG8gc29tZSBwcmVwYXJ0aW9uLiAqLworCS8qIENoZWNrIHdoZXRoZXIgdGhlIHZhbHVlIGlzIHJlZmNvdW50ZWQgYW5kIGRvIHNvbWUgcHJlcGFyYXRpb24uICovCiAJaWYgKE9DRlMyX0koaW5vZGUpLT5pcF9keW5fZmVhdHVyZXMgJiBPQ0ZTMl9IQVNfUkVGQ09VTlRfRkwgJiYKIAkgICAgKCF4aXMubm90X2ZvdW5kIHx8ICF4YnMubm90X2ZvdW5kKSkgewogCQlyZXQgPSBvY2ZzMl9wcmVwYXJlX3JlZmNvdW50X3hhdHRyKGlub2RlLCBkaSwgJnhpLApkaWZmIC0tZ2l0IGEvZnMvcGFydGl0aW9ucy9jaGVjay5jIGIvZnMvcGFydGl0aW9ucy9jaGVjay5jCmluZGV4IGFjNTQ2OTcuLmQ1NDVlOTcgMTAwNjQ0Ci0tLSBhL2ZzL3BhcnRpdGlvbnMvY2hlY2suYworKysgYi9mcy9wYXJ0aXRpb25zL2NoZWNrLmMKQEAgLTUwMCw3ICs1MDAsNyBAQAogCS8qIGV2ZXJ5dGhpbmcgaXMgdXAgYW5kIHJ1bm5pbmcsIGNvbW1lbmNlICovCiAJcmN1X2Fzc2lnbl9wb2ludGVyKHB0YmwtPnBhcnRbcGFydG5vXSwgcCk7CiAKLQkvKiBzdXBwcmVzcyB1ZXZlbnQgaWYgdGhlIGRpc2sgc3VwcmVzc2VzIGl0ICovCisJLyogc3VwcHJlc3MgdWV2ZW50IGlmIHRoZSBkaXNrIHN1cHByZXNzZXMgaXQgKi8KIAlpZiAoIWRldl9nZXRfdWV2ZW50X3N1cHByZXNzKGRkZXYpKQogCQlrb2JqZWN0X3VldmVudCgmcGRldi0+a29iaiwgS09CSl9BREQpOwogCkBAIC01ODUsNyArNTg1LDcgQEAKIAkvKgogCSAqIElmIGFueSBwYXJ0aXRpb24gY29kZSB0cmllZCB0byByZWFkIGJleW9uZCBFT0QsIHRyeQogCSAqIHVubG9ja2luZyBuYXRpdmUgY2FwYWNpdHkgZXZlbiBpZiBwYXJ0aXRpb24gdGFibGUgaXMKLQkgKiBzdWNlc3NmdWxseSByZWFkIGFzIHdlIGNvdWxkIGJlIG1pc3Npbmcgc29tZSBwYXJ0aXRpb25zLgorCSAqIHN1Y2Nlc3NmdWxseSByZWFkIGFzIHdlIGNvdWxkIGJlIG1pc3Npbmcgc29tZSBwYXJ0aXRpb25zLgogCSAqLwogCWlmIChzdGF0ZS0+YWNjZXNzX2JleW9uZF9lb2QpIHsKIAkJcHJpbnRrKEtFUk5fV0FSTklORwpkaWZmIC0tZ2l0IGEvZnMvcHJvYy9iYXNlLmMgYi9mcy9wcm9jL2Jhc2UuYwppbmRleCA1YTY3MGMxLi5kZDY2MjhkIDEwMDY0NAotLS0gYS9mcy9wcm9jL2Jhc2UuYworKysgYi9mcy9wcm9jL2Jhc2UuYwpAQCAtMjIwLDcgKzIyMCw3IEBACiAJfQogCiAJLyoKLQkgKiBOb29uZSBlbHNlIGlzIGFsbG93ZWQuCisJICogTm8gb25lIGVsc2UgaXMgYWxsb3dlZC4KIAkgKi8KIAltbXB1dChtbSk7CiAJcmV0dXJuIEVSUl9QVFIoLUVQRVJNKTsKZGlmZiAtLWdpdCBhL2ZzL3BzdG9yZS9LY29uZmlnIGIvZnMvcHN0b3JlL0tjb25maWcKaW5kZXggODY3ZDBhYy4uODAwN2FlNyAxMDA2NDQKLS0tIGEvZnMvcHN0b3JlL0tjb25maWcKKysrIGIvZnMvcHN0b3JlL0tjb25maWcKQEAgLTEsNSArMSw1IEBACiBjb25maWcgUFNUT1JFCi0JYm9vbCAiUGVyc2lzdGFudCBzdG9yZSBzdXBwb3J0IgorCWJvb2wgIlBlcnNpc3RlbnQgc3RvcmUgc3VwcG9ydCIKIAlkZWZhdWx0IG4KIAloZWxwCiAJICAgVGhpcyBvcHRpb24gZW5hYmxlcyBnZW5lcmljIGFjY2VzcyB0byBwbGF0Zm9ybSBsZXZlbApkaWZmIC0tZ2l0IGEvZnMvcXVvdGEvZHF1b3QuYyBiL2ZzL3F1b3RhL2RxdW90LmMKaW5kZXggZmNjOGFlNy4uYTkyNWJmMiAxMDA2NDQKLS0tIGEvZnMvcXVvdGEvZHF1b3QuYworKysgYi9mcy9xdW90YS9kcXVvdC5jCkBAIC05NTYsNyArOTU2LDcgQEAKIAogLyoKICAqIFJlbW92ZSByZWZlcmVuY2VzIHRvIGRxdW90cyBmcm9tIGlub2RlIGFuZCBhZGQgZHF1b3QgdG8gbGlzdCBmb3IgZnJlZWluZwotICogaWYgd2UgaGF2ZSB0aGUgbGFzdCByZWZlcmVjZSB0byBkcXVvdAorICogaWYgd2UgaGF2ZSB0aGUgbGFzdCByZWZlcmVuY2UgdG8gZHF1b3QKICAqIFdlIGNhbid0IHJhY2Ugd2l0aCBhbnlib2R5IGJlY2F1c2Ugd2UgaG9sZCBkcXB0cl9zZW0gZm9yIHdyaXRpbmcuLi4KICAqLwogc3RhdGljIGludCByZW1vdmVfaW5vZGVfZHF1b3RfcmVmKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBlLApkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMvam91cm5hbC5jIGIvZnMvcmVpc2VyZnMvam91cm5hbC5jCmluZGV4IGM3NzUxNGIuLmM1ZTgyZWMgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL2pvdXJuYWwuYworKysgYi9mcy9yZWlzZXJmcy9qb3VybmFsLmMKQEAgLTEsNyArMSw3IEBACiAvKgogKiogV3JpdGUgYWhlYWQgbG9nZ2luZyBpbXBsZW1lbnRhdGlvbiBjb3B5cmlnaHQgQ2hyaXMgTWFzb24gMjAwMAogKioKLSoqIFRoZSBiYWNrZ3JvdW5kIGNvbW1pdHMgbWFrZSB0aGlzIGNvZGUgdmVyeSBpbnRlcmVsYXRlZCwgYW5kCisqKiBUaGUgYmFja2dyb3VuZCBjb21taXRzIG1ha2UgdGhpcyBjb2RlIHZlcnkgaW50ZXJyZWxhdGVkLCBhbmQKICoqIG92ZXJseSBjb21wbGV4LiAgSSBuZWVkIHRvIHJldGhpbmsgdGhpbmdzIGEgYml0Li4uLlRoZSBtYWpvciBwbGF5ZXJzOgogKioKICoqIGpvdXJuYWxfYmVnaW4gLS0gY2FsbCB3aXRoIHRoZSBudW1iZXIgb2YgYmxvY2tzIHlvdSBleHBlY3QgdG8gbG9nLgpAQCAtMjcyNSw3ICsyNzI1LDcgQEAKIAkJCQkJCSBSRUlTRVJGU19ESVNLX09GRlNFVF9JTl9CWVRFUyAvCiAJCQkJCQkgc2ItPnNfYmxvY2tzaXplICsgMik7CiAKLQkvKiBTYW5pdHkgY2hlY2sgdG8gc2VlIGlzIHRoZSBzdGFuZGFyZCBqb3VybmFsIGZpdHRpbmcgd2l0aGluZyBmaXJzdCBiaXRtYXAKKwkvKiBTYW5pdHkgY2hlY2sgdG8gc2VlIGlzIHRoZSBzdGFuZGFyZCBqb3VybmFsIGZpdHRpbmcgd2l0aGluIGZpcnN0IGJpdG1hcAogCSAgIChhY3R1YWwgZm9yIHNtYWxsIGJsb2Nrc2l6ZXMpICovCiAJaWYgKCFTQl9PTkRJU0tfSk9VUk5BTF9ERVZJQ0Uoc2IpICYmCiAJICAgIChTQl9KT1VSTkFMXzFzdF9SRVNFUlZFRF9CTE9DSyhzYikgKwpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMvbG9jay5jIGIvZnMvcmVpc2VyZnMvbG9jay5jCmluZGV4IGI4N2FhMmMuLjdkZjFjZTQgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL2xvY2suYworKysgYi9mcy9yZWlzZXJmcy9sb2NrLmMKQEAgLTE1LDcgKzE1LDcgQEAKICAqIGZvciB0aGlzIG11dGV4LCBubyBuZWVkIGZvciBhIHN5c3RlbSB3aWRlIG11dGV4IGZhY2lsaXR5LgogICoKICAqIEFsc28gdGhpcyBsb2NrIGlzIG9mdGVuIHJlbGVhc2VkIGJlZm9yZSBhIGNhbGwgdGhhdCBjb3VsZCBibG9jayBiZWNhdXNlCi0gKiByZWlzZXJmcyBwZXJmb3JtYW5jZXMgd2VyZSBwYXJ0aWFseSBiYXNlZCBvbiB0aGUgcmVsZWFzZSB3aGlsZSBzY2hlZHVsZSgpCisgKiByZWlzZXJmcyBwZXJmb3JtYW5jZXMgd2VyZSBwYXJ0aWFsbHkgYmFzZWQgb24gdGhlIHJlbGVhc2Ugd2hpbGUgc2NoZWR1bGUoKQogICogcHJvcGVydHkgb2YgdGhlIEJrbC4KICAqLwogdm9pZCByZWlzZXJmc193cml0ZV9sb2NrKHN0cnVjdCBzdXBlcl9ibG9jayAqcykKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL3N1cGVyLmMgYi9mcy9yZWlzZXJmcy9zdXBlci5jCmluZGV4IDBhYWIwNGYuLmIyMTZmZjYgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL3N1cGVyLmMKKysrIGIvZnMvcmVpc2VyZnMvc3VwZXIuYwpAQCAtMzkzLDcgKzM5Myw3IEBACiAJLyogYm9keSBvZiAic2F2ZSIgbGluayAqLwogCWxpbmsgPSBJTk9ERV9QS0VZKGlub2RlKS0+a19kaXJfaWQ7CiAKLQkvKiBwdXQgInNhdmUiIGxpbmsgaW5vdCB0cmVlLCBkb24ndCBjaGFyZ2UgcXVvdGEgdG8gYW55b25lICovCisJLyogcHV0ICJzYXZlIiBsaW5rIGludG8gdHJlZSwgZG9uJ3QgY2hhcmdlIHF1b3RhIHRvIGFueW9uZSAqLwogCXJldHZhbCA9CiAJICAgIHJlaXNlcmZzX2luc2VydF9pdGVtKHRoLCAmcGF0aCwgJmtleSwgJmloLCBOVUxMLCAoY2hhciAqKSZsaW5rKTsKIAlpZiAocmV0dmFsKSB7CkBAIC0yMTA0LDcgKzIxMDQsNyBAQAogCiAvKiBSZWFkIGRhdGEgZnJvbSBxdW90YWZpbGUgLSBhdm9pZCBwYWdlY2FjaGUgYW5kIHN1Y2ggYmVjYXVzZSB3ZSBjYW5ub3QgYWZmb3JkCiAgKiBhY3F1aXJpbmcgdGhlIGxvY2tzLi4uIEFzIHF1b3RhIGZpbGVzIGFyZSBuZXZlciB0cnVuY2F0ZWQgYW5kIHF1b3RhIGNvZGUKLSAqIGl0c2VsZiBzZXJpYWxpemVzIHRoZSBvcGVyYXRpb25zIChhbmQgbm9vbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQorICogaXRzZWxmIHNlcmlhbGl6ZXMgdGhlIG9wZXJhdGlvbnMgKGFuZCBubyBvbmUgZWxzZSBzaG91bGQgdG91Y2ggdGhlIGZpbGVzKQogICogd2UgZG9uJ3QgaGF2ZSB0byBiZSBhZnJhaWQgb2YgcmFjZXMgKi8KIHN0YXRpYyBzc2l6ZV90IHJlaXNlcmZzX3F1b3RhX3JlYWQoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHR5cGUsIGNoYXIgKmRhdGEsCiAJCQkJICAgc2l6ZV90IGxlbiwgbG9mZl90IG9mZikKZGlmZiAtLWdpdCBhL2ZzL3JlaXNlcmZzL3hhdHRyLmMgYi9mcy9yZWlzZXJmcy94YXR0ci5jCmluZGV4IDVjMTFjYTguLjQ3ZDJhNDQgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL3hhdHRyLmMKKysrIGIvZnMvcmVpc2VyZnMveGF0dHIuYwpAQCAtMzk2LDcgKzM5Niw3IEBACiAJc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcgPSBkaXItPmlfbWFwcGluZzsKIAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIAkvKiBXZSBjYW4gZGVhZGxvY2sgaWYgd2UgdHJ5IHRvIGZyZWUgZGVudHJpZXMsCi0JICAgYW5kIGFuIHVubGluay9ybWRpciBoYXMganVzdCBvY2N1cmVkIC0gR0ZQX05PRlMgYXZvaWRzIHRoaXMgKi8KKwkgICBhbmQgYW4gdW5saW5rL3JtZGlyIGhhcyBqdXN0IG9jY3VycmVkIC0gR0ZQX05PRlMgYXZvaWRzIHRoaXMgKi8KIAltYXBwaW5nX3NldF9nZnBfbWFzayhtYXBwaW5nLCBHRlBfTk9GUyk7CiAJcGFnZSA9IHJlYWRfbWFwcGluZ19wYWdlKG1hcHBpbmcsIG4gPj4gUEFHRV9DQUNIRV9TSElGVCwgTlVMTCk7CiAJaWYgKCFJU19FUlIocGFnZSkpIHsKZGlmZiAtLWdpdCBhL2ZzL3NxdWFzaGZzL2NhY2hlLmMgYi9mcy9zcXVhc2hmcy9jYWNoZS5jCmluZGV4IDI2YjE1YWUuLmMzN2I1MjAgMTAwNjQ0Ci0tLSBhL2ZzL3NxdWFzaGZzL2NhY2hlLmMKKysrIGIvZnMvc3F1YXNoZnMvY2FjaGUuYwpAQCAtMTA0LDcgKzEwNCw3IEBACiAJCQllbnRyeSA9ICZjYWNoZS0+ZW50cnlbaV07CiAKIAkJCS8qCi0JCQkgKiBJbml0aWFsaXNlIGNob29zZW4gY2FjaGUgZW50cnksIGFuZCBmaWxsIGl0IGluIGZyb20KKwkJCSAqIEluaXRpYWxpc2UgY2hvc2VuIGNhY2hlIGVudHJ5LCBhbmQgZmlsbCBpdCBpbiBmcm9tCiAJCQkgKiBkaXNrLgogCQkJICovCiAJCQljYWNoZS0+dW51c2VkLS07CkBAIC0yODYsNyArMjg2LDcgQEAKIAogCiAvKgotICogQ29weSB1cHRvIGxlbmd0aCBieXRlcyBmcm9tIGNhY2hlIGVudHJ5IHRvIGJ1ZmZlciBzdGFydGluZyBhdCBvZmZzZXQgYnl0ZXMKKyAqIENvcHkgdXAgdG8gbGVuZ3RoIGJ5dGVzIGZyb20gY2FjaGUgZW50cnkgdG8gYnVmZmVyIHN0YXJ0aW5nIGF0IG9mZnNldCBieXRlcwogICogaW50byB0aGUgY2FjaGUgZW50cnkuICBJZiB0aGVyZSdzIG5vdCBsZW5ndGggYnl0ZXMgdGhlbiBjb3B5IHRoZSBudW1iZXIgb2YKICAqIGJ5dGVzIGF2YWlsYWJsZS4gIEluIGFsbCBjYXNlcyByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBjb3BpZWQuCiAgKi8KZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL0tjb25maWcgYi9mcy91Ymlmcy9LY29uZmlnCmluZGV4IGQ3NDQwOTAuLmY4YjAxNjAgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL0tjb25maWcKKysrIGIvZnMvdWJpZnMvS2NvbmZpZwpAQCAtNDcsNyArNDcsNyBAQAogCWJvb2wgIkVuYWJsZSBkZWJ1Z2dpbmcgc3VwcG9ydCIKIAlkZXBlbmRzIG9uIFVCSUZTX0ZTCiAJc2VsZWN0IERFQlVHX0ZTCi0Jc2VsZWN0IEtBTExTWU1TX0FMTAorCXNlbGVjdCBLQUxMU1lNUwogCWhlbHAKIAkgIFRoaXMgb3B0aW9uIGVuYWJsZXMgVUJJRlMgZGVidWdnaW5nIHN1cHBvcnQuIEl0IG1ha2VzIHN1cmUgdmFyaW91cwogCSAgYXNzZXJ0aW9ucywgc2VsZi1jaGVja3MsIGRlYnVnZ2luZyBtZXNzYWdlcyBhbmQgdGVzdCBtb2RlcyBhcmUgY29tcGlsZWQKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2J1ZGdldC5jIGIvZnMvdWJpZnMvYnVkZ2V0LmMKaW5kZXggYzhmZjBkMS4uOGIzYTdkYSAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvYnVkZ2V0LmMKKysrIGIvZnMvdWJpZnMvYnVkZ2V0LmMKQEAgLTE0Nyw3ICsxNDcsNyBAQAogCQlpZiAobGlhYjIgPCBsaWFiMSkKIAkJCXJldHVybiAtRUFHQUlOOwogCi0JCWRiZ19idWRnKCJuZXcgbGlhYmlsaXR5ICVsbGQgKG5vdCBzaHJpbmtlZCkiLCBsaWFiMik7CisJCWRiZ19idWRnKCJuZXcgbGlhYmlsaXR5ICVsbGQgKG5vdCBzaHJ1bmspIiwgbGlhYjIpOwogCiAJCS8qIExpYWJpbGl0eSBkaWQgbm90IHNocmluayBhZ2FpbiwgdHJ5IEdDICovCiAJCWRiZ19idWRnKCJSdW4gR0MiKTsKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2NvbW1pdC5jIGIvZnMvdWJpZnMvY29tbWl0LmMKaW5kZXggYjE0OGZiYy4uMWJkMDFkZSAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvY29tbWl0LmMKKysrIGIvZnMvdWJpZnMvY29tbWl0LmMKQEAgLTU3Nyw3ICs1NzcsNyBAQAogCXNpemVfdCBzejsKIAogCWlmICghKHViaWZzX2Noa19mbGFncyAmIFVCSUZTX0NIS19PTERfSURYKSkKLQkJZ290byBvdXQ7CisJCXJldHVybiAwOwogCiAJSU5JVF9MSVNUX0hFQUQoJmxpc3QpOwogCmRpZmYgLS1naXQgYS9mcy91Ymlmcy9kZWJ1Zy5jIGIvZnMvdWJpZnMvZGVidWcuYwppbmRleCBmMjVhNzMzLi4wMDRkMzc0IDEwMDY0NAotLS0gYS9mcy91Ymlmcy9kZWJ1Zy5jCisrKyBiL2ZzL3ViaWZzL2RlYnVnLmMKQEAgLTk3MiwxMSArOTcyLDM5IEBACiB2b2lkIGRiZ19zYXZlX3NwYWNlX2luZm8oc3RydWN0IHViaWZzX2luZm8gKmMpCiB7CiAJc3RydWN0IHViaWZzX2RlYnVnX2luZm8gKmQgPSBjLT5kYmc7Ci0KLQl1Ymlmc19nZXRfbHBfc3RhdHMoYywgJmQtPnNhdmVkX2xzdCk7CisJaW50IGZyZWVhYmxlX2NudDsKIAogCXNwaW5fbG9jaygmYy0+c3BhY2VfbG9jayk7CisJbWVtY3B5KCZkLT5zYXZlZF9sc3QsICZjLT5sc3QsIHNpemVvZihzdHJ1Y3QgdWJpZnNfbHBfc3RhdHMpKTsKKworCS8qCisJICogV2UgdXNlIGEgZGlydHkgaGFjayBoZXJlIGFuZCB6ZXJvIG91dCBAYy0+ZnJlZWFibGVfY250LCBiZWNhdXNlIGl0CisJICogYWZmZWN0cyB0aGUgZnJlZSBzcGFjZSBjYWxjdWxhdGlvbnMsIGFuZCBVQklGUyBtaWdodCBub3Qga25vdyBhYm91dAorCSAqIGFsbCBmcmVlYWJsZSBlcmFzZWJsb2Nrcy4gSW5kZWVkLCB3ZSBrbm93IGFib3V0IGZyZWVhYmxlIGVyYXNlYmxvY2tzCisJICogb25seSB3aGVuIHdlIHJlYWQgdGhlaXIgbHByb3BzLCBhbmQgd2UgZG8gdGhpcyBvbmx5IGxhemlseSwgdXBvbiB0aGUKKwkgKiBuZWVkLiBTbyBhdCBhbnkgZ2l2ZW4gcG9pbnQgb2YgdGltZSBAYy0+ZnJlZWFibGVfY250IG1pZ2h0IGJlIG5vdAorCSAqIGV4YWN0bHkgYWNjdXJhdGUuCisJICoKKwkgKiBKdXN0IG9uZSBleGFtcGxlIGFib3V0IHRoZSBpc3N1ZSB3ZSBoaXQgd2hlbiB3ZSBkaWQgbm90IHplcm8KKwkgKiBAYy0+ZnJlZWFibGVfY250LgorCSAqIDEuIFRoZSBmaWxlLXN5c3RlbSBpcyBtb3VudGVkIFIvTywgYy0+ZnJlZWFibGVfY250IGlzICUwLiBXZSBzYXZlIHRoZQorCSAqICAgIGFtb3VudCBvZiBmcmVlIHNwYWNlIGluIEBkLT5zYXZlZF9mcmVlCisJICogMi4gV2UgcmUtbW91bnQgUi9XLCB3aGljaCBtYWtlcyBVQklGUyB0byByZWFkIHRoZSAibHNhdmUiCisJICogICAgaW5mb3JtYXRpb24gZnJvbSBmbGFzaCwgd2hlcmUgd2UgY2FjaGUgTEVCcyBmcm9tIHZhcmlvdXMKKwkgKiAgICBjYXRlZ29yaWVzICgndWJpZnNfcmVtb3VudF9mcygpJyAtPiAndWJpZnNfbHB0X2luaXQoKScKKwkgKiAgICAtPiAnbHB0X2luaXRfd3IoKScgLT4gJ3JlYWRfbHNhdmUoKScgLT4gJ3ViaWZzX2xwdF9sb29rdXAoKScKKwkgKiAgICAtPiAndWJpZnNfZ2V0X3Bub2RlKCknIC0+ICd1cGRhdGVfY2F0cygpJworCSAqICAgIC0+ICd1Ymlmc19hZGRfdG9fY2F0KCknKS4KKwkgKiAzLiBMc2F2ZSBjb250YWlucyBhIGZyZWVhYmxlIGVyYXNlYmxvY2ssIGFuZCBAYy0+ZnJlZWFibGVfY250CisJICogICAgYmVjb21lcyAlMS4KKwkgKiA0LiBXZSBjYWxjdWxhdGUgdGhlIGFtb3VudCBvZiBmcmVlIHNwYWNlIHdoZW4gdGhlIHJlLW1vdW50IGlzCisJICogICAgZmluaXNoZWQgaW4gJ2RiZ19jaGVja19zcGFjZV9pbmZvKCknIGFuZCBpdCBkb2VzIG5vdCBtYXRjaAorCSAqICAgIEBkLT5zYXZlZF9mcmVlLgorCSAqLworCWZyZWVhYmxlX2NudCA9IGMtPmZyZWVhYmxlX2NudDsKKwljLT5mcmVlYWJsZV9jbnQgPSAwOwogCWQtPnNhdmVkX2ZyZWUgPSB1Ymlmc19nZXRfZnJlZV9zcGFjZV9ub2xvY2soYyk7CisJYy0+ZnJlZWFibGVfY250ID0gZnJlZWFibGVfY250OwogCXNwaW5fdW5sb2NrKCZjLT5zcGFjZV9sb2NrKTsKIH0KIApAQCAtOTkzLDEyICsxMDIxLDE1IEBACiB7CiAJc3RydWN0IHViaWZzX2RlYnVnX2luZm8gKmQgPSBjLT5kYmc7CiAJc3RydWN0IHViaWZzX2xwX3N0YXRzIGxzdDsKLQlsb25nIGxvbmcgYXZhaWwsIGZyZWU7CisJbG9uZyBsb25nIGZyZWU7CisJaW50IGZyZWVhYmxlX2NudDsKIAogCXNwaW5fbG9jaygmYy0+c3BhY2VfbG9jayk7Ci0JYXZhaWwgPSB1Ymlmc19jYWxjX2F2YWlsYWJsZShjLCBjLT5taW5faWR4X2xlYnMpOworCWZyZWVhYmxlX2NudCA9IGMtPmZyZWVhYmxlX2NudDsKKwljLT5mcmVlYWJsZV9jbnQgPSAwOworCWZyZWUgPSB1Ymlmc19nZXRfZnJlZV9zcGFjZV9ub2xvY2soYyk7CisJYy0+ZnJlZWFibGVfY250ID0gZnJlZWFibGVfY250OwogCXNwaW5fdW5sb2NrKCZjLT5zcGFjZV9sb2NrKTsKLQlmcmVlID0gdWJpZnNfZ2V0X2ZyZWVfc3BhY2UoYyk7CiAKIAlpZiAoZnJlZSAhPSBkLT5zYXZlZF9mcmVlKSB7CiAJCXViaWZzX2VycigiZnJlZSBzcGFjZSBjaGFuZ2VkIGZyb20gJWxsZCB0byAlbGxkIiwKQEAgLTI4MDYsNDAgKzI4MzcsMzggQEAKIAlzdHJ1Y3QgdWJpZnNfZGVidWdfaW5mbyAqZCA9IGMtPmRiZzsKIAogCXNwcmludGYoZC0+ZGZzX2Rpcl9uYW1lLCAidWJpJWRfJWQiLCBjLT52aS51YmlfbnVtLCBjLT52aS52b2xfaWQpOwotCWQtPmRmc19kaXIgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZC0+ZGZzX2Rpcl9uYW1lLCBkZnNfcm9vdGRpcik7Ci0JaWYgKElTX0VSUihkLT5kZnNfZGlyKSkgewotCQllcnIgPSBQVFJfRVJSKGQtPmRmc19kaXIpOwotCQl1Ymlmc19lcnIoImNhbm5vdCBjcmVhdGUgXCIlc1wiIGRlYnVnZnMgZGlyZWN0b3J5LCBlcnJvciAlZFxuIiwKLQkJCSAgZC0+ZGZzX2Rpcl9uYW1lLCBlcnIpOworCWZuYW1lID0gZC0+ZGZzX2Rpcl9uYW1lOworCWRlbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoZm5hbWUsIGRmc19yb290ZGlyKTsKKwlpZiAoSVNfRVJSX09SX05VTEwoZGVudCkpCiAJCWdvdG8gb3V0OwotCX0KKwlkLT5kZnNfZGlyID0gZGVudDsKIAogCWZuYW1lID0gImR1bXBfbHByb3BzIjsKIAlkZW50ID0gZGVidWdmc19jcmVhdGVfZmlsZShmbmFtZSwgU19JV1VTUiwgZC0+ZGZzX2RpciwgYywgJmRmc19mb3BzKTsKLQlpZiAoSVNfRVJSKGRlbnQpKQorCWlmIChJU19FUlJfT1JfTlVMTChkZW50KSkKIAkJZ290byBvdXRfcmVtb3ZlOwogCWQtPmRmc19kdW1wX2xwcm9wcyA9IGRlbnQ7CiAKIAlmbmFtZSA9ICJkdW1wX2J1ZGciOwogCWRlbnQgPSBkZWJ1Z2ZzX2NyZWF0ZV9maWxlKGZuYW1lLCBTX0lXVVNSLCBkLT5kZnNfZGlyLCBjLCAmZGZzX2ZvcHMpOwotCWlmIChJU19FUlIoZGVudCkpCisJaWYgKElTX0VSUl9PUl9OVUxMKGRlbnQpKQogCQlnb3RvIG91dF9yZW1vdmU7CiAJZC0+ZGZzX2R1bXBfYnVkZyA9IGRlbnQ7CiAKIAlmbmFtZSA9ICJkdW1wX3RuYyI7CiAJZGVudCA9IGRlYnVnZnNfY3JlYXRlX2ZpbGUoZm5hbWUsIFNfSVdVU1IsIGQtPmRmc19kaXIsIGMsICZkZnNfZm9wcyk7Ci0JaWYgKElTX0VSUihkZW50KSkKKwlpZiAoSVNfRVJSX09SX05VTEwoZGVudCkpCiAJCWdvdG8gb3V0X3JlbW92ZTsKIAlkLT5kZnNfZHVtcF90bmMgPSBkZW50OwogCiAJcmV0dXJuIDA7CiAKIG91dF9yZW1vdmU6Ci0JZXJyID0gUFRSX0VSUihkZW50KTsKLQl1Ymlmc19lcnIoImNhbm5vdCBjcmVhdGUgXCIlc1wiIGRlYnVnZnMgZGlyZWN0b3J5LCBlcnJvciAlZFxuIiwKLQkJICBmbmFtZSwgZXJyKTsKIAlkZWJ1Z2ZzX3JlbW92ZV9yZWN1cnNpdmUoZC0+ZGZzX2Rpcik7CiBvdXQ6CisJZXJyID0gZGVudCA/IFBUUl9FUlIoZGVudCkgOiAtRU5PREVWOworCXViaWZzX2VycigiY2Fubm90IGNyZWF0ZSBcIiVzXCIgZGVidWdmcyBkaXJlY3RvcnksIGVycm9yICVkXG4iLAorCQkgIGZuYW1lLCBlcnIpOwogCXJldHVybiBlcnI7CiB9CiAKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL2xwdC5jIGIvZnMvdWJpZnMvbHB0LmMKaW5kZXggNzI3NzVkMy4uZWY1MTU1ZSAxMDA2NDQKLS0tIGEvZnMvdWJpZnMvbHB0LmMKKysrIGIvZnMvdWJpZnMvbHB0LmMKQEAgLTEyNzAsMTAgKzEyNzAsOSBAQAogCWxudW0gPSBicmFuY2gtPmxudW07CiAJb2ZmcyA9IGJyYW5jaC0+b2ZmczsKIAlwbm9kZSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCB1Ymlmc19wbm9kZSksIEdGUF9OT0ZTKTsKLQlpZiAoIXBub2RlKSB7Ci0JCWVyciA9IC1FTk9NRU07Ci0JCWdvdG8gb3V0OwotCX0KKwlpZiAoIXBub2RlKQorCQlyZXR1cm4gLUVOT01FTTsKKwogCWlmIChsbnVtID09IDApIHsKIAkJLyoKIAkJICogVGhpcyBwbm9kZSB3YXMgbm90IHdyaXR0ZW4gd2hpY2gganVzdCBtZWFucyB0aGF0IHRoZSBMRUIKZGlmZiAtLWdpdCBhL2ZzL3ViaWZzL3N1cGVyLmMgYi9mcy91Ymlmcy9zdXBlci5jCmluZGV4IDZkZGQ5OTcuLmM3NWY2MTMgMTAwNjQ0Ci0tLSBhL2ZzL3ViaWZzL3N1cGVyLmMKKysrIGIvZnMvdWJpZnMvc3VwZXIuYwpAQCAtMTU2OCw2ICsxNTY4LDcgQEAKIAltdXRleF9sb2NrKCZjLT51bW91bnRfbXV0ZXgpOwogCWRiZ19zYXZlX3NwYWNlX2luZm8oYyk7CiAJYy0+cmVtb3VudGluZ19ydyA9IDE7CisJYy0+cm9fbW91bnQgPSAwOwogCiAJZXJyID0gY2hlY2tfZnJlZV9zcGFjZShjKTsKIAlpZiAoZXJyKQpAQCAtMTY3NiwxMyArMTY3NywxMyBAQAogCX0KIAogCWRiZ19nZW4oInJlLW1vdW50ZWQgcmVhZC13cml0ZSIpOwotCWMtPnJvX21vdW50ID0gMDsKIAljLT5yZW1vdW50aW5nX3J3ID0gMDsKIAllcnIgPSBkYmdfY2hlY2tfc3BhY2VfaW5mbyhjKTsKIAltdXRleF91bmxvY2soJmMtPnVtb3VudF9tdXRleCk7CiAJcmV0dXJuIGVycjsKIAogb3V0OgorCWMtPnJvX21vdW50ID0gMTsKIAl2ZnJlZShjLT5vcnBoX2J1Zik7CiAJYy0+b3JwaF9idWYgPSBOVUxMOwogCWlmIChjLT5iZ3QpIHsKZGlmZiAtLWdpdCBhL2ZzL3Vmcy9pbm9kZS5jIGIvZnMvdWZzL2lub2RlLmMKaW5kZXggMjdhNGJhYi4uZTc2NTc0MyAxMDA2NDQKLS0tIGEvZnMvdWZzL2lub2RlLmMKKysrIGIvZnMvdWZzL2lub2RlLmMKQEAgLTc4LDcgKzc4LDcgQEAKIAogLyoKICAqIFJldHVybnMgdGhlIGxvY2F0aW9uIG9mIHRoZSBmcmFnbWVudCBmcm9tCi0gKiB0aGUgYmVnaW5pbmcgb2YgdGhlIGZpbGVzeXN0ZW0uCisgKiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaWxlc3lzdGVtLgogICovCiAKIHN0YXRpYyB1NjQgdWZzX2ZyYWdfbWFwKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHNlY3Rvcl90IGZyYWcsIGJvb2wgbmVlZHNfbG9jaykKZGlmZiAtLWdpdCBhL2ZzL3Vmcy9zdXBlci5jIGIvZnMvdWZzL3N1cGVyLmMKaW5kZXggNzY5M2Q2Mi4uMzkxNWFkZSAxMDA2NDQKLS0tIGEvZnMvdWZzL3N1cGVyLmMKKysrIGIvZnMvdWZzL3N1cGVyLmMKQEAgLTQ4Myw5ICs0ODMsOSBAQAogfQogCiAvKgotICogRGlmZnJlbnQgdHlwZXMgb2YgVUZTIGhvbGQgZnNfY3N0b3RhbCBpbiBkaWZmZXJlbnQKLSAqIHBsYWNlcywgYW5kIHVzZSBkaWZmcmVudCBkYXRhIHN0cnVjdHVyZSBmb3IgaXQuCi0gKiBUbyBtYWtlIHRoaW5ncyBzaW1wbGllciB3ZSBqdXN0IGNvcHkgZnNfY3N0b3RhbCB0byB1ZnNfc2JfcHJpdmF0ZV9pbmZvCisgKiBEaWZmZXJlbnQgdHlwZXMgb2YgVUZTIGhvbGQgZnNfY3N0b3RhbCBpbiBkaWZmZXJlbnQKKyAqIHBsYWNlcywgYW5kIHVzZSBkaWZmZXJlbnQgZGF0YSBzdHJ1Y3R1cmUgZm9yIGl0LgorICogVG8gbWFrZSB0aGluZ3Mgc2ltcGxlciB3ZSBqdXN0IGNvcHkgZnNfY3N0b3RhbCB0byB1ZnNfc2JfcHJpdmF0ZV9pbmZvCiAgKi8KIHN0YXRpYyB2b2lkIHVmc19zZXR1cF9jc3RvdGFsKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpCiB7CmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmMgYi9mcy94ZnMvbGludXgtMi42L3hmc19hb3BzLmMKaW5kZXggNTJkYmQxNC4uNzljZTM4YiAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfYW9wcy5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2FvcHMuYwpAQCAtMTI5NSw3ICsxMjk1LDcgQEAKICAqIElmIHRoZSBwcml2YXRlIGFyZ3VtZW50IGlzIG5vbi1OVUxMIF9feGZzX2dldF9ibG9ja3Mgc2lnbmFscyB1cyB0aGF0IHdlCiAgKiBuZWVkIHRvIGlzc3VlIGEgdHJhbnNhY3Rpb24gdG8gY29udmVydCB0aGUgcmFuZ2UgZnJvbSB1bndyaXR0ZW4gdG8gd3JpdHRlbgogICogZXh0ZW50cy4gIEluIGNhc2UgdGhpcyBpcyByZWd1bGFyIHN5bmNocm9ub3VzIEkvTyB3ZSBqdXN0IGNhbGwgeGZzX2VuZF9pbwotICogdG8gZG8gdGhpcyBhbmQgd2UgYXJlIGRvbmUuICBCdXQgaW4gY2FzZSB0aGlzIHdhcyBhIHN1Y2Nlc3NmdWxsIEFJTworICogdG8gZG8gdGhpcyBhbmQgd2UgYXJlIGRvbmUuICBCdXQgaW4gY2FzZSB0aGlzIHdhcyBhIHN1Y2Nlc3NmdWwgQUlPCiAgKiByZXF1ZXN0IHRoaXMgaGFuZGxlciBpcyBjYWxsZWQgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCwgZnJvbSB3aGljaCB3ZQogICogY2FuJ3Qgc3RhcnQgdHJhbnNhY3Rpb25zLiAgSW4gdGhhdCBjYXNlIG9mZmxvYWQgdGhlIEkvTyBjb21wbGV0aW9uIHRvCiAgKiB0aGUgd29ya3F1ZXVlcyB3ZSBhbHNvIHVzZSBmb3IgYnVmZmVyZWQgSS9PIGNvbXBsZXRpb24uCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19idWYuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5jCmluZGV4IDU5NmJiMmMuLjVlYTQwMjAgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2J1Zi5jCkBAIC0xMjAsNyArMTIwLDcgQEAKICAqIFRoZSB1bmxvY2tlZCBjaGVjayBpcyBzYWZlIGhlcmUgYmVjYXVzZSBpdCBvbmx5IG9jY3VycyB3aGVuIHRoZXJlIGFyZSBub3QKICAqIGJfbHJ1X3JlZiBjb3VudHMgbGVmdCBvbiB0aGUgaW5vZGUgdW5kZXIgdGhlIHBhZy0+cGFnX2J1Zl9sb2NrLiBpdCBpcyB0aGVyZQogICogdG8gb3B0aW1pc2UgdGhlIHNocmlua2VyIHJlbW92aW5nIHRoZSBidWZmZXIgZnJvbSB0aGUgTFJVIGFuZCBjYWxsaW5nCi0gKiB4ZnNfYnVmX2ZyZWUoKS4gaS5lLiBpdCByZW1vdmVzIGFuIHVubmVjY2Vzc2FyeSByb3VuZCB0cmlwIG9uIHRoZQorICogeGZzX2J1Zl9mcmVlKCkuIGkuZS4gaXQgcmVtb3ZlcyBhbiB1bm5lY2Vzc2FyeSByb3VuZCB0cmlwIG9uIHRoZQogICogYnRfbHJ1X2xvY2suCiAgKi8KIFNUQVRJQyB2b2lkCkBAIC0zODAsNyArMzgwLDcgQEAKIH0KIAogLyoKLSAqCU1hcCBidWZmZXIgaW50byBrZXJuZWwgYWRkcmVzcy1zcGFjZSBpZiBuZXNzZWNhcnkuCisgKglNYXAgYnVmZmVyIGludG8ga2VybmVsIGFkZHJlc3Mtc3BhY2UgaWYgbmVjZXNzYXJ5LgogICovCiBTVEFUSUMgaW50CiBfeGZzX2J1Zl9tYXBfcGFnZXMoCmRpZmYgLS1naXQgYS9mcy94ZnMvbGludXgtMi42L3hmc19maWxlLmMgYi9mcy94ZnMvbGludXgtMi42L3hmc19maWxlLmMKaW5kZXggNTJhYWRmYi4uZjQyMTNiYSAxMDA2NDQKLS0tIGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfZmlsZS5jCisrKyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2ZpbGUuYwpAQCAtMzgxLDcgKzM4MSw3IEBACiAKIC8qCiAgKiBJZiB0aGlzIHdhcyBhIGRpcmVjdCBvciBzeW5jaHJvbm91cyBJL08gdGhhdCBmYWlsZWQgKHN1Y2ggYXMgRU5PU1BDKSB0aGVuCi0gKiBwYXJ0IG9mIHRoZSBJL08gbWF5IGhhdmUgYmVlbiB3cml0dGVuIHRvIGRpc2sgYmVmb3JlIHRoZSBlcnJvciBvY2N1cmVkLiAgSW4KKyAqIHBhcnQgb2YgdGhlIEkvTyBtYXkgaGF2ZSBiZWVuIHdyaXR0ZW4gdG8gZGlzayBiZWZvcmUgdGhlIGVycm9yIG9jY3VycmVkLiAgSW4KICAqIHRoaXMgY2FzZSB0aGUgb24tZGlzayBmaWxlIHNpemUgbWF5IGhhdmUgYmVlbiBhZGp1c3RlZCBiZXlvbmQgdGhlIGluLW1lbW9yeQogICogZmlsZSBzaXplIGFuZCBub3cgbmVlZHMgdG8gYmUgdHJ1bmNhdGVkIGJhY2suCiAgKi8KZGlmZiAtLWdpdCBhL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvcHMuYyBiL2ZzL3hmcy9saW51eC0yLjYveGZzX2lvcHMuYwppbmRleCA5ZmY3ZmM2Li5kZDIxNzg0IDEwMDY0NAotLS0gYS9mcy94ZnMvbGludXgtMi42L3hmc19pb3BzLmMKKysrIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfaW9wcy5jCkBAIC03MCw3ICs3MCw3IEBACiAKIC8qCiAgKiBJZiB0aGUgbGludXggaW5vZGUgaXMgdmFsaWQsIG1hcmsgaXQgZGlydHkuCi0gKiBVc2VkIHdoZW4gY29tbWl0aW5nIGEgZGlydHkgaW5vZGUgaW50byBhIHRyYW5zYWN0aW9uIHNvIHRoYXQKKyAqIFVzZWQgd2hlbiBjb21taXR0aW5nIGEgZGlydHkgaW5vZGUgaW50byBhIHRyYW5zYWN0aW9uIHNvIHRoYXQKICAqIHRoZSBpbm9kZSB3aWxsIGdldCB3cml0dGVuIGJhY2sgYnkgdGhlIGxpbnV4IGNvZGUKICAqLwogdm9pZApkaWZmIC0tZ2l0IGEvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3luYy5jIGIvZnMveGZzL2xpbnV4LTIuNi94ZnNfc3luYy5jCmluZGV4IDU5NGNkODIuLjljZjM1YTYgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy9saW51eC0yLjYveGZzX3N5bmMuYworKysgYi9mcy94ZnMvbGludXgtMi42L3hmc19zeW5jLmMKQEAgLTQwMSw3ICs0MDEsNyBAQAogLyoKICAqIFNlY29uZCBzdGFnZSBvZiBhIHF1aWVzY2UuIFRoZSBkYXRhIGlzIGFscmVhZHkgc3luY2VkLCBub3cgd2UgaGF2ZSB0byB0YWtlCiAgKiBjYXJlIG9mIHRoZSBtZXRhZGF0YS4gTmV3IHRyYW5zYWN0aW9ucyBhcmUgYWxyZWFkeSBibG9ja2VkLCBzbyB3ZSBuZWVkIHRvCi0gKiB3YWl0IGZvciBhbnkgcmVtYWluaW5nIHRyYW5zYWN0aW9ucyB0byBkcmFpbiBvdXQgYmVmb3JlIHByb2NlZGluZy4KKyAqIHdhaXQgZm9yIGFueSByZW1haW5pbmcgdHJhbnNhY3Rpb25zIHRvIGRyYWluIG91dCBiZWZvcmUgcHJvY2VlZGluZy4KICAqLwogdm9pZAogeGZzX3F1aWVzY2VfYXR0cigKZGlmZiAtLWdpdCBhL2ZzL3hmcy9xdW90YS94ZnNfZHF1b3QuYyBiL2ZzL3hmcy9xdW90YS94ZnNfZHF1b3QuYwppbmRleCA3ZTI0MTY0Li42ZmEyMTQ2IDEwMDY0NAotLS0gYS9mcy94ZnMvcXVvdGEveGZzX2RxdW90LmMKKysrIGIvZnMveGZzL3F1b3RhL3hmc19kcXVvdC5jCkBAIC02MDAsNyArNjAwLDcgQEAKIAogCS8qCiAJICogUmVzZXJ2YXRpb24gY291bnRlcnMgYXJlIGRlZmluZWQgYXMgcmVzZXJ2YXRpb24gcGx1cyBjdXJyZW50IHVzYWdlCi0JICogdG8gYXZvaWQgaGF2aW5nIHRvIGFkZCBldmVyeXRpbWUuCisJICogdG8gYXZvaWQgaGF2aW5nIHRvIGFkZCBldmVyeSB0aW1lLgogCSAqLwogCWRxcC0+cV9yZXNfYmNvdW50ID0gYmU2NF90b19jcHUoZGRxcC0+ZF9iY291bnQpOwogCWRxcC0+cV9yZXNfaWNvdW50ID0gYmU2NF90b19jcHUoZGRxcC0+ZF9pY291bnQpOwpkaWZmIC0tZ2l0IGEvZnMveGZzL3F1b3RhL3hmc19xbV9iaHYuYyBiL2ZzL3hmcy9xdW90YS94ZnNfcW1fYmh2LmMKaW5kZXggNzc0ZDdlYy4uYTBhODI5YSAxMDA2NDQKLS0tIGEvZnMveGZzL3F1b3RhL3hmc19xbV9iaHYuYworKysgYi9mcy94ZnMvcXVvdGEveGZzX3FtX2Jodi5jCkBAIC0xMzQsNyArMTM0LDcgQEAKIAkJICovCiAJCWlmIChxdW90YW9uZGlzayAmJiAhWEZTX1FNX05FRURfUVVPVEFDSEVDSyhtcCkpIHsKIAkJCS8qCi0JCQkgKiBJZiBhbiBlcnJvciBvY2N1cmVkLCBxbV9tb3VudF9xdW90YXMgY29kZQorCQkJICogSWYgYW4gZXJyb3Igb2NjdXJyZWQsIHFtX21vdW50X3F1b3RhcyBjb2RlCiAJCQkgKiBoYXMgYWxyZWFkeSBkaXNhYmxlZCBxdW90YXMuIFNvLCBqdXN0IGZpbmlzaAogCQkJICogbW91bnRpbmcsIGFuZCBnZXQgb24gd2l0aCB0aGUgYm9yaW5nIGxpZmUKIAkJCSAqIHdpdGhvdXQgZGlzayBxdW90YXMuCmRpZmYgLS1naXQgYS9mcy94ZnMvcXVvdGEveGZzX3FtX3N5c2NhbGxzLmMgYi9mcy94ZnMvcXVvdGEveGZzX3FtX3N5c2NhbGxzLmMKaW5kZXggYzgyZjA2Ny4uMGQ2MmEwNyAxMDA2NDQKLS0tIGEvZnMveGZzL3F1b3RhL3hmc19xbV9zeXNjYWxscy5jCisrKyBiL2ZzL3hmcy9xdW90YS94ZnNfcW1fc3lzY2FsbHMuYwpAQCAtMTcyLDcgKzE3Miw3IEBACiAJLyoKIAkgKiBOZXh0IHdlIG1ha2UgdGhlIGNoYW5nZXMgaW4gdGhlIHF1b3RhIGZsYWcgaW4gdGhlIG1vdW50IHN0cnVjdC4KIAkgKiBUaGlzIGlzbid0IHByb3RlY3RlZCBieSBhIHBhcnRpY3VsYXIgbG9jayBkaXJlY3RseSwgYmVjYXVzZSB3ZQotCSAqIGRvbid0IHdhbnQgdG8gdGFrZSBhIG1ybG9jayBldmVyeXRpbWUgd2UgZGVwZW5kIG9uIHF1b3RhcyBiZWluZyBvbi4KKwkgKiBkb24ndCB3YW50IHRvIHRha2UgYSBtcmxvY2sgZXZlcnkgdGltZSB3ZSBkZXBlbmQgb24gcXVvdGFzIGJlaW5nIG9uLgogCSAqLwogCW1wLT5tX3FmbGFncyAmPSB+KGZsYWdzKTsKIApAQCAtMzU0LDcgKzM1NCw3IEBACiAJCXJldHVybiBYRlNfRVJST1IoRUlOVkFMKTsKIAl9CiAJLyoKLQkgKiBJZiBldmVyeXRoaW5nJ3MgdXB0by1kYXRlIGluY29yZSwgdGhlbiBkb24ndCB3YXN0ZSB0aW1lLgorCSAqIElmIGV2ZXJ5dGhpbmcncyB1cCB0by1kYXRlIGluY29yZSwgdGhlbiBkb24ndCB3YXN0ZSB0aW1lLgogCSAqLwogCWlmICgobXAtPm1fcWZsYWdzICYgZmxhZ3MpID09IGZsYWdzKQogCQlyZXR1cm4gWEZTX0VSUk9SKEVFWElTVCk7CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2J1Zl9pdGVtLmMgYi9mcy94ZnMveGZzX2J1Zl9pdGVtLmMKaW5kZXggZTU0MTNkOS4uN2I3ZTAwNSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19idWZfaXRlbS5jCisrKyBiL2ZzL3hmcy94ZnNfYnVmX2l0ZW0uYwpAQCAtOTkyLDcgKzk5Miw3IEBACiAJbGFzdHRhcmcgPSBYRlNfQlVGX1RBUkdFVChicCk7CiAKIAkvKgotCSAqIElmIHRoZSB3cml0ZSB3YXMgYXN5bmNocm9ub3VzIHRoZW4gbm9vbmUgd2lsbCBiZSBsb29raW5nIGZvciB0aGUKKwkgKiBJZiB0aGUgd3JpdGUgd2FzIGFzeW5jaHJvbm91cyB0aGVuIG5vIG9uZSB3aWxsIGJlIGxvb2tpbmcgZm9yIHRoZQogCSAqIGVycm9yLiAgQ2xlYXIgdGhlIGVycm9yIHN0YXRlIGFuZCB3cml0ZSB0aGUgYnVmZmVyIG91dCBhZ2Fpbi4KIAkgKgogCSAqIER1cmluZyBzeW5jIG9yIHVtb3VudCB3ZSdsbCB3cml0ZSBhbGwgcGVuZGluZyBidWZmZXJzIGFnYWluCmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2lub2RlLmMgYi9mcy94ZnMveGZzX2lub2RlLmMKaW5kZXggNzQyYzgzMy4uYTM3NDgwYSAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19pbm9kZS5jCisrKyBiL2ZzL3hmcy94ZnNfaW5vZGUuYwpAQCAtMjc4OSw3ICsyNzg5LDcgQEAKIAogCS8qCiAJICogV2UgY2FuJ3QgZmx1c2ggdGhlIGlub2RlIHVudGlsIGl0IGlzIHVucGlubmVkLCBzbyB3YWl0IGZvciBpdCBpZiB3ZQotCSAqIGFyZSBhbGxvd2VkIHRvIGJsb2NrLiAgV2Uga25vdyBub29uZSBuZXcgY2FuIHBpbiBpdCwgYmVjYXVzZSB3ZSBhcmUKKwkgKiBhcmUgYWxsb3dlZCB0byBibG9jay4gIFdlIGtub3cgbm8gb25lIG5ldyBjYW4gcGluIGl0LCBiZWNhdXNlIHdlIGFyZQogCSAqIGhvbGRpbmcgdGhlIGlub2RlIGxvY2sgc2hhcmVkIGFuZCB5b3UgbmVlZCB0byBob2xkIGl0IGV4Y2x1c2l2ZWx5IHRvCiAJICogcGluIHRoZSBpbm9kZS4KIAkgKgpkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZS5oIGIvZnMveGZzL3hmc19pbm9kZS5oCmluZGV4IGY3NTMyMDAuLmZmNGUyYTMgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfaW5vZGUuaAorKysgYi9mcy94ZnMveGZzX2lub2RlLmgKQEAgLTExMSw3ICsxMTEsNyBAQAogICogR2VuZXJhbGx5LCB3ZSBkbyBub3Qgd2FudCB0byBob2xkIHRoZSBpX3Jsb2NrIHdoaWxlIGhvbGRpbmcgdGhlCiAgKiBpX2lsb2NrLiBIaWVyYXJjaHkgaXMgaV9pb2xvY2sgZm9sbG93ZWQgYnkgaV9ybG9jay4KICAqCi0gKiB4ZnNfaXB0cl90IGNvbnRhaW5zIGFsbCB0aGUgaW5vZGUgZmllbGRzIHVwdG8gYW5kIGluY2x1ZGluZyB0aGUKKyAqIHhmc19pcHRyX3QgY29udGFpbnMgYWxsIHRoZSBpbm9kZSBmaWVsZHMgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUKICAqIGlfbW5leHQgYW5kIGlfbXByZXYgZmllbGRzLCBpdCBpcyB1c2VkIGFzIGEgbWFya2VyIGluIHRoZSBpbm9kZQogICogY2hhaW4gb2ZmIHRoZSBtb3VudCBzdHJ1Y3R1cmUgYnkgeGZzX3N5bmMgY2FsbHMuCiAgKi8KQEAgLTMzNiw3ICszMzYsNyBAQAogCiAvKgogICogUHJvamVjdCBxdW90YSBpZCBoZWxwZXJzIChwcmV2aW91c2x5IHByb2ppZCB3YXMgMTZiaXQgb25seQotICogYW5kIHVzaW5nIHR3byAxNmJpdCB2YWx1ZXMgdG8gaG9sZCBuZXcgMzJiaXQgcHJvamlkIHdhcyBjaG9vc2VuCisgKiBhbmQgdXNpbmcgdHdvIDE2Yml0IHZhbHVlcyB0byBob2xkIG5ldyAzMmJpdCBwcm9qaWQgd2FzIGNob3NlbgogICogdG8gcmV0YWluIGNvbXBhdGliaWxpdHkgd2l0aCAib2xkIiBmaWxlc3lzdGVtcykuCiAgKi8KIHN0YXRpYyBpbmxpbmUgcHJpZF90CmRpZmYgLS1naXQgYS9mcy94ZnMveGZzX2xvZ19wcml2LmggYi9mcy94ZnMveGZzX2xvZ19wcml2LmgKaW5kZXggMTVkYmYxZi4uZmZhZTY5MiAxMDA2NDQKLS0tIGEvZnMveGZzL3hmc19sb2dfcHJpdi5oCisrKyBiL2ZzL3hmcy94ZnNfbG9nX3ByaXYuaApAQCAtNTcwLDcgKzU3MCw3IEBACiAgKiBXaGVuIHdlIGNyYWNrIGFuIGF0b21pYyBMU04sIHdlIHNhbXBsZSBpdCBmaXJzdCBzbyB0aGF0IHRoZSB2YWx1ZSB3aWxsIG5vdAogICogY2hhbmdlIHdoaWxlIHdlIGFyZSBjcmFja2luZyBpdCBpbnRvIHRoZSBjb21wb25lbnQgdmFsdWVzLiBUaGlzIG1lYW5zIHdlCiAgKiB3aWxsIGFsd2F5cyBnZXQgY29uc2lzdGVudCBjb21wb25lbnQgdmFsdWVzIHRvIHdvcmsgZnJvbS4gVGhpcyBzaG91bGQgYWx3YXlzCi0gKiBiZSB1c2VkIHRvIHNtYXBsZSBhbmQgY3JhY2sgTFNOcyB0YWh0IGFyZSBzdG9yZWQgYW5kIHVwZGF0ZWQgaW4gYXRvbWljCisgKiBiZSB1c2VkIHRvIHNhbXBsZSBhbmQgY3JhY2sgTFNOcyB0aGF0IGFyZSBzdG9yZWQgYW5kIHVwZGF0ZWQgaW4gYXRvbWljCiAgKiB2YXJpYWJsZXMuCiAgKi8KIHN0YXRpYyBpbmxpbmUgdm9pZApkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19sb2dfcmVjb3Zlci5jIGIvZnMveGZzL3hmc19sb2dfcmVjb3Zlci5jCmluZGV4IDBjNGE1NjEuLjVjYzQ2NGEgMTAwNjQ0Ci0tLSBhL2ZzL3hmcy94ZnNfbG9nX3JlY292ZXIuYworKysgYi9mcy94ZnMveGZzX2xvZ19yZWNvdmVyLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogCS8qCiAJICogV2UgZG8gbG9nIEkvTyBpbiB1bml0cyBvZiBsb2cgc2VjdG9ycyAoYSBwb3dlci1vZi0yCiAJICogbXVsdGlwbGUgb2YgdGhlIGJhc2ljIGJsb2NrIHNpemUpLCBzbyB3ZSByb3VuZCB1cCB0aGUKLQkgKiByZXF1ZXN0ZWQgc2l6ZSB0byBhY29tbW9kYXRlIHRoZSBiYXNpYyBibG9ja3MgcmVxdWlyZWQKKwkgKiByZXF1ZXN0ZWQgc2l6ZSB0byBhY2NvbW1vZGF0ZSB0aGUgYmFzaWMgYmxvY2tzIHJlcXVpcmVkCiAJICogZm9yIGNvbXBsZXRlIGxvZyBzZWN0b3JzLgogCSAqCiAJICogSW4gYWRkaXRpb24sIHRoZSBidWZmZXIgbWF5IGJlIHVzZWQgZm9yIGEgbm9uLXNlY3Rvci0KQEAgLTExMiw3ICsxMTIsNyBAQAogCSAqIGFuIGlzc3VlLiAgTm9yIHdpbGwgdGhpcyBiZSBhIHByb2JsZW0gaWYgdGhlIGxvZyBJL08gaXMKIAkgKiBkb25lIGluIGJhc2ljIGJsb2NrcyAoc2VjdG9yIHNpemUgMSkuICBCdXQgb3RoZXJ3aXNlIHdlCiAJICogZXh0ZW5kIHRoZSBidWZmZXIgYnkgb25lIGV4dHJhIGxvZyBzZWN0b3IgdG8gZW5zdXJlCi0JICogdGhlcmUncyBzcGFjZSB0byBhY2NvbW9kYXRlIHRoaXMgcG9zc2libGlsaXR5LgorCSAqIHRoZXJlJ3Mgc3BhY2UgdG8gYWNjb21tb2RhdGUgdGhpcyBwb3NzaWJpbGl0eS4KIAkgKi8KIAlpZiAobmJibGtzID4gMSAmJiBsb2ctPmxfc2VjdEJCc2l6ZSA+IDEpCiAJCW5iYmxrcyArPSBsb2ctPmxfc2VjdEJCc2l6ZTsKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdHJhbnNfaW5vZGUuYyBiL2ZzL3hmcy94ZnNfdHJhbnNfaW5vZGUuYwppbmRleCAxNjA4NGQ4Li4wNDhiMGM2IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3RyYW5zX2lub2RlLmMKKysrIGIvZnMveGZzL3hmc190cmFuc19pbm9kZS5jCkBAIC04MSw3ICs4MSw3IEBACiAgKgogICoKICAqIEdyYWJzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbm9kZSB3aGljaCB3aWxsIGJlIGRyb3BwZWQgd2hlbiB0aGUgdHJhbnNhY3Rpb24KLSAqIGlzIGNvbW1pdGVkLiAgVGhlIGlub2RlIHdpbGwgYWxzbyBiZSB1bmxvY2tlZCBhdCB0aGF0IHBvaW50LiAgVGhlIGlub2RlCisgKiBpcyBjb21taXR0ZWQuICBUaGUgaW5vZGUgd2lsbCBhbHNvIGJlIHVubG9ja2VkIGF0IHRoYXQgcG9pbnQuICBUaGUgaW5vZGUKICAqIG11c3QgYmUgbG9ja2VkLCBhbmQgaXQgY2Fubm90IGJlIGFzc29jaWF0ZWQgd2l0aCBhbnkgdHJhbnNhY3Rpb24uCiAgKi8KIHZvaWQKZGlmZiAtLWdpdCBhL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYyBiL2ZzL3hmcy94ZnNfdm5vZGVvcHMuYwppbmRleCBjNDhiNDIxLi5iN2E1ZmU3IDEwMDY0NAotLS0gYS9mcy94ZnMveGZzX3Zub2Rlb3BzLmMKKysrIGIvZnMveGZzL3hmc192bm9kZW9wcy5jCkBAIC05NTMsNyArOTUzLDcgQEAKIAkJICogSWYgd2UgcHJldmlvdXNseSB0cnVuY2F0ZWQgdGhpcyBmaWxlIGFuZCByZW1vdmVkIG9sZCBkYXRhCiAJCSAqIGluIHRoZSBwcm9jZXNzLCB3ZSB3YW50IHRvIGluaXRpYXRlICJlYXJseSIgd3JpdGVvdXQgb24KIAkJICogdGhlIGxhc3QgY2xvc2UuICBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gY29tYmF0IHRoZSBub3RvcmlvdXMKLQkJICogTlVMTCBmaWxlcyBwcm9ibGVtIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBub3RpY2FibGUgZnJvbSBhCisJCSAqIE5VTEwgZmlsZXMgcHJvYmxlbSB3aGljaCBpcyBwYXJ0aWN1bGFybHkgbm90aWNlYWJsZSBmcm9tIGEKIAkJICogdHJ1bmNhdGUgZG93biwgYnVmZmVyZWQgKHJlLSl3cml0ZSAoZGVsYWxsb2MpLCBmb2xsb3dlZCBieQogCQkgKiBhIGNyYXNoLiAgV2hhdCB3ZSBhcmUgZWZmZWN0aXZlbHkgZG9pbmcgaGVyZSBpcwogCQkgKiBzaWduaWZpY2FudGx5IHJlZHVjaW5nIHRoZSB0aW1lIHdpbmRvdyB3aGVyZSB3ZSdkIG90aGVyd2lzZQpAQCAtOTgyLDcgKzk4Miw3IEBACiAJCSAqCiAJCSAqIEZ1cnRoZXIsIGNoZWNrIGlmIHRoZSBpbm9kZSBpcyBiZWluZyBvcGVuZWQsIHdyaXR0ZW4gYW5kCiAJCSAqIGNsb3NlZCBmcmVxdWVudGx5IGFuZCB3ZSBoYXZlIGRlbGF5ZWQgYWxsb2NhdGlvbiBibG9ja3MKLQkJICogb3VzdGFuZGluZyAoZS5nLiBzdHJlYW1pbmcgd3JpdGVzIGZyb20gdGhlIE5GUyBzZXJ2ZXIpLAorCQkgKiBvdXRzdGFuZGluZyAoZS5nLiBzdHJlYW1pbmcgd3JpdGVzIGZyb20gdGhlIE5GUyBzZXJ2ZXIpLAogCQkgKiB0cnVuY2F0aW5nIHRoZSBibG9ja3MgcGFzdCBFT0Ygd2lsbCBjYXVzZSBmcmFnbWVudGF0aW9uIHRvCiAJCSAqIG9jY3VyLgogCQkgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hY3BpL2FjdGJsLmggYi9pbmNsdWRlL2FjcGkvYWN0YmwuaAppbmRleCBkNDFjOTQ4Li5mMTM4MDI4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2FjcGkvYWN0YmwuaAorKysgYi9pbmNsdWRlL2FjcGkvYWN0YmwuaApAQCAtMjkwLDcgKzI5MCw3IEBACiAjZGVmaW5lIEFDUElfRkFEVF9BUElDX0NMVVNURVIgICAgICAoMTw8MTgpCS8qIDE4OiBbVjRdIEFsbCBsb2NhbCBBUElDcyBtdXN0IHVzZSBjbHVzdGVyIG1vZGVsIChBQ1BJIDMuMCkgKi8KICNkZWZpbmUgQUNQSV9GQURUX0FQSUNfUEhZU0lDQUwgICAgICgxPDwxOSkJLyogMTk6IFtWNF0gQWxsIGxvY2FsIHhfYVBJQ3MgbXVzdCB1c2UgcGh5c2ljYWwgZGVzdCBtb2RlIChBQ1BJIDMuMCkgKi8KIAotLyogVmFsdWVzIGZvciBwcmVmZXJyZWRfcHJvZmlsZSAoUHJlZmVyZWQgUG93ZXIgTWFuYWdlbWVudCBQcm9maWxlcykgKi8KKy8qIFZhbHVlcyBmb3IgcHJlZmVycmVkX3Byb2ZpbGUgKFByZWZlcnJlZCBQb3dlciBNYW5hZ2VtZW50IFByb2ZpbGVzKSAqLwogCiBlbnVtIGFjcGlfcHJlZmVyZWRfcG1fcHJvZmlsZXMgewogCVBNX1VOU1BFQ0lGSUVEID0gMCwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvc2lnaW5mby5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgKaW5kZXggOTQyZDMwYi4uMGRkNGU4NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy9zaWdpbmZvLmgKQEAgLTE5Miw3ICsxOTIsNyBAQAogICogU0lHQlVTIHNpX2NvZGVzCiAgKi8KICNkZWZpbmUgQlVTX0FEUkFMTgkoX19TSV9GQVVMVHwxKQkvKiBpbnZhbGlkIGFkZHJlc3MgYWxpZ25tZW50ICovCi0jZGVmaW5lIEJVU19BRFJFUlIJKF9fU0lfRkFVTFR8MikJLyogbm9uLWV4aXN0YW50IHBoeXNpY2FsIGFkZHJlc3MgKi8KKyNkZWZpbmUgQlVTX0FEUkVSUgkoX19TSV9GQVVMVHwyKQkvKiBub24tZXhpc3RlbnQgcGh5c2ljYWwgYWRkcmVzcyAqLwogI2RlZmluZSBCVVNfT0JKRVJSCShfX1NJX0ZBVUxUfDMpCS8qIG9iamVjdCBzcGVjaWZpYyBoYXJkd2FyZSBlcnJvciAqLwogLyogaGFyZHdhcmUgbWVtb3J5IGVycm9yIGNvbnN1bWVkIG9uIGEgbWFjaGluZSBjaGVjazogYWN0aW9uIHJlcXVpcmVkICovCiAjZGVmaW5lIEJVU19NQ0VFUlJfQVIJKF9fU0lfRkFVTFR8NCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaCBiL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51eC5sZHMuaAppbmRleCAzMmM0NWU1Li5iZDI5N2EyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKKysrIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCkBAIC03NzMsNyArNzczLDcgQEAKICAqIHRoZSBzZWN0aW9ucyB0aGF0IGhhcyB0aGlzIHJlc3RyaWN0aW9uIChvciBzaW1pbGFyKQogICogaXMgbG9jYXRlZCBiZWZvcmUgdGhlIG9uZXMgcmVxdWlyaW5nIFBBR0VfU0laRSBhbGlnbm1lbnQuCiAgKiBOT1NBVkVfREFUQSBzdGFydHMgYW5kIGVuZHMgd2l0aCBhIFBBR0VfU0laRSBhbGlnbm1lbnQgd2hpY2gKLSAqIG1hdGNoZXMgdGhlIHJlcXVpcm1lbnQgb2YgUEFHRV9BTElHTkVEX0RBVEEuCisgKiBtYXRjaGVzIHRoZSByZXF1aXJlbWVudCBvZiBQQUdFX0FMSUdORURfREFUQS4KICAqCiAgKiB1c2UgMCBhcyBwYWdlX2FsaWduIGlmIHBhZ2VfYWxpZ25lZCBkYXRhIGlzIG5vdCB1c2VkICovCiAjZGVmaW5lIFJXX0RBVEFfU0VDVElPTihjYWNoZWxpbmUsIHBhZ2VhbGlnbmVkLCBpbml0dGFzaykJCVwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybVAuaCBiL2luY2x1ZGUvZHJtL2RybVAuaAppbmRleCBhZDU3NzBmLi4yMDI0MjRkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1QLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtUC5oCkBAIC05NSw3ICs5NSw3IEBACiAgKiBkcm1fY29yZSwgZHJtX2RyaXZlciwgZHJtX2ttcwogICogZHJtX2NvcmUgbGV2ZWwgY2FuIGJlIHVzZWQgaW4gdGhlIGdlbmVyaWMgZHJtIGNvZGUuIEZvciBleGFtcGxlOgogICogCWRybV9pb2N0bCwgZHJtX21tLCBkcm1fbWVtb3J5Ci0gKiBUaGUgbWFjcm8gZGVmaW5pdG9uIG9mIERSTV9ERUJVRyBpcyB1c2VkLgorICogVGhlIG1hY3JvIGRlZmluaXRpb24gb2YgRFJNX0RFQlVHIGlzIHVzZWQuCiAgKiAJRFJNX0RFQlVHKGZtdCwgYXJncy4uLikKICAqIAlUaGUgZGVidWcgaW5mbyBieSB1c2luZyB0aGUgRFJNX0RFQlVHIGNhbiBiZSBvYnRhaW5lZCBieSBhZGRpbmcKICAqIAl0aGUgYm9vdCBvcHRpb24gb2YgImRybS5kZWJ1Zz0xIi4KQEAgLTgwOCw3ICs4MDgsNyBAQAogCSAqCiAJICogXHJldHVybiBGbGFncywgb3InZWQgdG9nZXRoZXIgYXMgZm9sbG93czoKIAkgKgotCSAqIERSTV9TQ0FOT1VUUE9TX1ZBTElEID0gUXVlcnkgc3VjY2Vzc2Z1bGwuCisJICogRFJNX1NDQU5PVVRQT1NfVkFMSUQgPSBRdWVyeSBzdWNjZXNzZnVsLgogCSAqIERSTV9TQ0FOT1VUUE9TX0lOVkJMID0gSW5zaWRlIHZibGFuay4KIAkgKiBEUk1fU0NBTk9VVFBPU19BQ0NVUkFURSA9IFJldHVybmVkIHBvc2l0aW9uIGlzIGFjY3VyYXRlLiBBIGxhY2sgb2YKIAkgKiB0aGlzIGZsYWcgbWVhbnMgdGhhdCByZXR1cm5lZCBwb3NpdGlvbiBtYXkgYmUgb2Zmc2V0IGJ5IGEgY29uc3RhbnQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmggYi9pbmNsdWRlL2RybS9kcm1fY3J0Yy5oCmluZGV4IGFhZWMwOTcuLmQ5NDY4NGIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9jcnRjLmgKKysrIGIvaW5jbHVkZS9kcm0vZHJtX2NydGMuaApAQCAtNjUsNyArNjUsNyBAQAogICAgIE1PREVfSF9JTExFR0FMLAkvKiBtb2RlIGhhcyBpbGxlZ2FsIGhvcml6b250YWwgdGltaW5ncyAqLwogICAgIE1PREVfVl9JTExFR0FMLAkvKiBtb2RlIGhhcyBpbGxlZ2FsIGhvcml6b250YWwgdGltaW5ncyAqLwogICAgIE1PREVfQkFEX1dJRFRILAkvKiByZXF1aXJlcyBhbiB1bnN1cHBvcnRlZCBsaW5lcGl0Y2ggKi8KLSAgICBNT0RFX05PTU9ERSwJLyogbm8gbW9kZSB3aXRoIGEgbWFjaGluZyBuYW1lICovCisgICAgTU9ERV9OT01PREUsCS8qIG5vIG1vZGUgd2l0aCBhIG1hdGNoaW5nIG5hbWUgKi8KICAgICBNT0RFX05PX0lOVEVSTEFDRSwJLyogaW50ZXJsYWNlZCBtb2RlIG5vdCBzdXBwb3J0ZWQgKi8KICAgICBNT0RFX05PX0RCTEVTQ0FOLAkvKiBkb3VibGVzY2FuIG1vZGUgbm90IHN1cHBvcnRlZCAqLwogICAgIE1PREVfTk9fVlNDQU4sCS8qIG11bHRpc2NhbiBtb2RlIG5vdCBzdXBwb3J0ZWQgKi8KQEAgLTMyMSw3ICszMjEsNyBAQAogCiAJLyoKIAkgKiBGbGlwIHRvIHRoZSBnaXZlbiBmcmFtZWJ1ZmZlci4gIFRoaXMgaW1wbGVtZW50cyB0aGUgcGFnZQotCSAqIGZsaXAgaW9jdGwgZGVzY2liZWQgaW4gZHJtX21vZGUuaCwgc3BlY2lmaWNhbGx5LCB0aGUKKwkgKiBmbGlwIGlvY3RsIGRlc2NyaWJlZCBpbiBkcm1fbW9kZS5oLCBzcGVjaWZpY2FsbHksIHRoZQogCSAqIGltcGxlbWVudGF0aW9uIG11c3QgcmV0dXJuIGltbWVkaWF0ZWx5IGFuZCBibG9jayBhbGwKIAkgKiByZW5kZXJpbmcgdG8gdGhlIGN1cnJlbnQgZmIgdW50aWwgdGhlIGZsaXAgaGFzIGNvbXBsZXRlZC4KIAkgKiBJZiB1c2Vyc3BhY2Ugc2V0IHRoZSBldmVudCBmbGFnIGluIHRoZSBpb2N0bCwgdGhlIGV2ZW50CmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW0uaCBiL2luY2x1ZGUvZHJtL2RybV9tbS5oCmluZGV4IGIxZTc4MDkuLmMyZjkzYTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL2RybV9tbS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9tbS5oCkBAIC01Niw3ICs1Niw3IEBACiB9OwogCiBzdHJ1Y3QgZHJtX21tIHsKLQkvKiBMaXN0IG9mIGFsbCBtZW1vcnkgbm9kZXMgdGhhdCBpbW1lZGlhdGx5IHByZWNlZWQgYSBmcmVlIGhvbGUuICovCisJLyogTGlzdCBvZiBhbGwgbWVtb3J5IG5vZGVzIHRoYXQgaW1tZWRpYXRlbHkgcHJlY2VkZSBhIGZyZWUgaG9sZS4gKi8KIAlzdHJ1Y3QgbGlzdF9oZWFkIGhvbGVfc3RhY2s7CiAJLyogaGVhZF9ub2RlLm5vZGVfbGlzdCBpcyB0aGUgbGlzdCBvZiBhbGwgbWVtb3J5IG5vZGVzLCBvcmRlcmVkCiAJICogYWNjb3JkaW5nIHRvIHRoZSAoaW5jcmVhc2luZykgc3RhcnQgYWRkcmVzcyBvZiB0aGUgbWVtb3J5IG5vZGUuICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fbW9kZS5oIGIvaW5jbHVkZS9kcm0vZHJtX21vZGUuaAppbmRleCBhZTZiN2EzLi5jNDk2MWVhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9kcm1fbW9kZS5oCisrKyBiL2luY2x1ZGUvZHJtL2RybV9tb2RlLmgKQEAgLTI3Nyw3ICsyNzcsNyBAQAogI2RlZmluZSBEUk1fTU9ERV9DVVJTT1JfTU9WRQkoMTw8MSkKIAogLyoKLSAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgaW4gZmxhZ3MgZGlmZnJlbnQgbWVtYmVycyBhcmUgdXNlZC4KKyAqIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgaW4gZmxhZ3MgZGlmZmVyZW50IG1lbWJlcnMgYXJlIHVzZWQuCiAgKgogICogQ1VSU09SX0JPIHVzZXMKICAqICAgIGNydGMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL21nYV9kcm0uaCBiL2luY2x1ZGUvZHJtL21nYV9kcm0uaAppbmRleCBjMTYwOTdmLi5mY2E4MTcwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2RybS9tZ2FfZHJtLmgKKysrIGIvaW5jbHVkZS9kcm0vbWdhX2RybS5oCkBAIC0xMDcsNyArMTA3LDcgQEAKICAqLwogI2RlZmluZSBNR0FfTlJfU0FSRUFfQ0xJUFJFQ1RTCTgKIAotLyogMiBoZWFwcyAoMSBmb3IgY2FyZCwgMSBmb3IgYWdwKSwgZWFjaCBkaXZpZGVkIGludG8gdXB0byAxMjgKKy8qIDIgaGVhcHMgKDEgZm9yIGNhcmQsIDEgZm9yIGFncCksIGVhY2ggZGl2aWRlZCBpbnRvIHVwIHRvIDEyOAogICogcmVnaW9ucywgc3ViamVjdCB0byBhIG1pbmltdW0gcmVnaW9uIHNpemUgb2YgKDE8PDE2KSA9PSA2NGsuCiAgKgogICogQ2xpZW50cyBtYXkgc3ViZGl2aWRlIHJlZ2lvbnMgaW50ZXJuYWxseSwgYnV0IHdoZW4gc2hhcmluZyBiZXR3ZWVuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9yYWRlb25fZHJtLmggYi9pbmNsdWRlL2RybS9yYWRlb25fZHJtLmgKaW5kZXggM2RlYzQxYy4uM2JjZTFhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vcmFkZW9uX2RybS5oCisrKyBiL2luY2x1ZGUvZHJtL3JhZGVvbl9kcm0uaApAQCAtNjQxLDcgKzY0MSw3IEBACiB9IGRybV9yYWRlb25fdmVydGV4Ml90OwogCiAvKiB2MS4zIC0gb2Jzb2xldGVzIGRybV9yYWRlb25fdmVydGV4MgotICogICAgICAtIGFsbG93cyBhcmJpdGFyaWx5IGxhcmdlIGNsaXByZWN0IGxpc3QKKyAqICAgICAgLSBhbGxvd3MgYXJiaXRyYXJpbHkgbGFyZ2UgY2xpcHJlY3QgbGlzdAogICogICAgICAtIGFsbG93cyB1cGRhdGluZyBvZiB0Y2wgcGFja2V0LCB2ZWN0b3IgYW5kIHNjYWxhciBzdGF0ZQogICogICAgICAtIGFsbG93cyBtZW1vcnktZWZmaWNpZW50IGRlc2NyaXB0aW9uIG9mIHN0YXRlIHVwZGF0ZXMKICAqICAgICAgLSBhbGxvd3Mgc3RhdGUgdG8gYmUgZW1pdHRlZCB3aXRob3V0IGEgcHJpbWl0aXZlCmRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9zYXZhZ2VfZHJtLmggYi9pbmNsdWRlL2RybS9zYXZhZ2VfZHJtLmgKaW5kZXggNDg2M2NmNi4uODE4ZDQ5YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vc2F2YWdlX2RybS5oCisrKyBiL2luY2x1ZGUvZHJtL3NhdmFnZV9kcm0uaApAQCAtMjksNyArMjksNyBAQAogI2lmbmRlZiBfX1NBVkFHRV9TQVJFQV9ERUZJTkVTX18KICNkZWZpbmUgX19TQVZBR0VfU0FSRUFfREVGSU5FU19fCiAKLS8qIDIgaGVhcHMgKDEgZm9yIGNhcmQsIDEgZm9yIGFncCksIGVhY2ggZGl2aWRlZCBpbnRvIHVwdG8gMTI4CisvKiAyIGhlYXBzICgxIGZvciBjYXJkLCAxIGZvciBhZ3ApLCBlYWNoIGRpdmlkZWQgaW50byB1cCB0byAxMjgKICAqIHJlZ2lvbnMsIHN1YmplY3QgdG8gYSBtaW5pbXVtIHJlZ2lvbiBzaXplIG9mICgxPDwxNikgPT0gNjRrLgogICoKICAqIENsaWVudHMgbWF5IHN1YmRpdmlkZSByZWdpb25zIGludGVybmFsbHksIGJ1dCB3aGVuIHNoYXJpbmcgYmV0d2VlbgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fYXBpLmgKaW5kZXggYTZiZDExNy4uNjJhMGU0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaAorKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oCkBAIC01MCwxMCArNTAsMTAgQEAKICAqCiAgKiBAZnBmbjoJCWZpcnN0IHZhbGlkIHBhZ2UgZnJhbWUgbnVtYmVyIHRvIHB1dCB0aGUgb2JqZWN0CiAgKiBAbHBmbjoJCWxhc3QgdmFsaWQgcGFnZSBmcmFtZSBudW1iZXIgdG8gcHV0IHRoZSBvYmplY3QKLSAqIEBudW1fcGxhY2VtZW50OgludW1iZXIgb2YgcHJlZmVyZWQgcGxhY2VtZW50cwotICogQHBsYWNlbWVudDoJCXByZWZlcmVkIHBsYWNlbWVudHMKLSAqIEBudW1fYnVzeV9wbGFjZW1lbnQ6CW51bWJlciBvZiBwcmVmZXJlZCBwbGFjZW1lbnRzIHdoZW4gbmVlZCB0byBldmljdCBidWZmZXIKLSAqIEBidXN5X3BsYWNlbWVudDoJcHJlZmVyZWQgcGxhY2VtZW50cyB3aGVuIG5lZWQgdG8gZXZpY3QgYnVmZmVyCisgKiBAbnVtX3BsYWNlbWVudDoJbnVtYmVyIG9mIHByZWZlcnJlZCBwbGFjZW1lbnRzCisgKiBAcGxhY2VtZW50OgkJcHJlZmVycmVkIHBsYWNlbWVudHMKKyAqIEBudW1fYnVzeV9wbGFjZW1lbnQ6CW51bWJlciBvZiBwcmVmZXJyZWQgcGxhY2VtZW50cyB3aGVuIG5lZWQgdG8gZXZpY3QgYnVmZmVyCisgKiBAYnVzeV9wbGFjZW1lbnQ6CXByZWZlcnJlZCBwbGFjZW1lbnRzIHdoZW4gbmVlZCB0byBldmljdCBidWZmZXIKICAqCiAgKiBTdHJ1Y3R1cmUgaW5kaWNhdGluZyB0aGUgcGxhY2VtZW50IHlvdSByZXF1ZXN0IGZvciBhbiBvYmplY3QuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmggYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2RyaXZlci5oCmluZGV4IDk2MGI1MjEuLjA5YWYyZDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm9fZHJpdmVyLmgKKysrIGIvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19kcml2ZXIuaApAQCAtMjIzLDkgKzIyMyw5IEBACiAJICogQG1lbTo6bW1fbm9kZSBzaG91bGQgYmUgc2V0IHRvIGEgbm9uLW51bGwgdmFsdWUsIGFuZAogCSAqIEBtZW06OnN0YXJ0IHNob3VsZCBiZSBzZXQgdG8gYSB2YWx1ZSBpZGVudGlmeWluZyB0aGUgYmVnaW5uaW5nCiAJICogb2YgdGhlIHJhbmdlIGFsbG9jYXRlZCwgYW5kIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIHplcm8uCi0JICogSWYgdGhlIG1lbW9yeSByZWdpb24gYWNjb21vZGF0ZSB0aGUgYnVmZmVyIG9iamVjdCwgQG1lbTo6bW1fbm9kZQorCSAqIElmIHRoZSBtZW1vcnkgcmVnaW9uIGFjY29tbW9kYXRlIHRoZSBidWZmZXIgb2JqZWN0LCBAbWVtOjptbV9ub2RlCiAJICogc2hvdWxkIGJlIHNldCB0byBOVUxMLCBhbmQgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMC4KLQkgKiBJZiBhIHN5c3RlbSBlcnJvciBvY2N1cmVkLCBwcmV2ZW50aW5nIHRoZSByZXF1ZXN0IHRvIGJlIGZ1bGZpbGxlZCwKKwkgKiBJZiBhIHN5c3RlbSBlcnJvciBvY2N1cnJlZCwgcHJldmVudGluZyB0aGUgcmVxdWVzdCB0byBiZSBmdWxmaWxsZWQsCiAJICogdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgogCSAqCiAJICogTm90ZSB0aGF0IEBtZW06Om1tX25vZGUgd2lsbCBvbmx5IGJlIGRlcmVmZXJlbmNlZCBieQpAQCAtODQxLDcgKzg0MSw3IEBACiAgKiBkaWZmZXJlbnQgb3JkZXIsIGVpdGhlciBieSB3aWxsIG9yIGFzIGEgcmVzdWx0IG9mIGEgYnVmZmVyIGJlaW5nIGV2aWN0ZWQKICAqIHRvIG1ha2Ugcm9vbSBmb3IgYSBidWZmZXIgYWxyZWFkeSByZXNlcnZlZC4gKEJ1ZmZlcnMgYXJlIHJlc2VydmVkIGJlZm9yZQogICogdGhleSBhcmUgZXZpY3RlZCkuIFRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtIHByZXZlbnRzIHN1Y2ggZGVhZGxvY2tzIGZyb20KLSAqIG9jY3VyaW5nOgorICogb2NjdXJyaW5nOgogICogMSkgQnVmZmVycyBhcmUgcmVzZXJ2ZWQgd2l0aCB0aGUgbHJ1IHNwaW5sb2NrIGhlbGQuIFVwb24gc3VjY2Vzc2Z1bAogICogcmVzZXJ2YXRpb24gdGhleSBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBscnUgbGlzdC4gVGhpcyBzdG9wcyBhIHJlc2VydmVkIGJ1ZmZlcgogICogZnJvbSBiZWluZyBldmljdGVkLiBIb3dldmVyIHRoZSBscnUgc3BpbmxvY2sgaXMgcmVsZWFzZWQgYmV0d2VlbiB0aGUgdGltZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdm13Z2Z4X2RybS5oIGIvaW5jbHVkZS9kcm0vdm13Z2Z4X2RybS5oCmluZGV4IDY1MGU2YmYuLjVjMzY0MzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtL3Ztd2dmeF9kcm0uaAorKysgYi9pbmNsdWRlL2RybS92bXdnZnhfZHJtLmgKQEAgLTU5Miw3ICs1OTIsNyBAQAogLyoqCiAgKiBEUk1fVk1XX1VQREFURV9MQVlPVVQgLSBVcGRhdGUgbGF5b3V0CiAgKgotICogVXBkYXRlcyB0aGUgcHJlZmVyZWQgbW9kZXMgYW5kIGNvbm5lY3Rpb24gc3RhdHVzIGZvciBjb25uZWN0b3JzLiBUaGUKKyAqIFVwZGF0ZXMgdGhlIHByZWZlcnJlZCBtb2RlcyBhbmQgY29ubmVjdGlvbiBzdGF0dXMgZm9yIGNvbm5lY3RvcnMuIFRoZQogICogY29tbWFuZCBjb25pc2l0cyBvZiBvbmUgZHJtX3Ztd191cGRhdGVfbGF5b3V0X2FyZyBwb2ludGluZyBvdXQgYSBhcnJheQogICogb2YgbnVtX291dHB1dHMgZHJtX3Ztd19yZWN0J3MuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1iYS9jbGNkLmggYi9pbmNsdWRlL2xpbnV4L2FtYmEvY2xjZC5oCmluZGV4IDI0ZDI2ZWYuLmU4MmUzZWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYW1iYS9jbGNkLmgKKysrIGIvaW5jbHVkZS9saW51eC9hbWJhL2NsY2QuaApAQCAtMTM2LDcgKzEzNiw3IEBACiAJaW50CSgqY2hlY2spKHN0cnVjdCBjbGNkX2ZiICpmYiwgc3RydWN0IGZiX3Zhcl9zY3JlZW5pbmZvICp2YXIpOwogCiAJLyoKLQkgKiBDb21wdWxzYXJ5LiAgRGVjb2RlIGZiLT5mYi52YXIgaW50byByZWdzLT4qLiAgSW4gdGhlIGNhc2Ugb2YKKwkgKiBDb21wdWxzb3J5LiAgRGVjb2RlIGZiLT5mYi52YXIgaW50byByZWdzLT4qLiAgSW4gdGhlIGNhc2Ugb2YKIAkgKiBmaXhlZCB0aW1pbmcsIHNldCByZWdzLT4qIHRvIHRoZSByZWdpc3RlciB2YWx1ZXMgcmVxdWlyZWQuCiAJICovCiAJdm9pZAkoKmRlY29kZSkoc3RydWN0IGNsY2RfZmIgKmZiLCBzdHJ1Y3QgY2xjZF9yZWdzICpyZWdzKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvYW1iYS9tbWNpLmggYi9pbmNsdWRlL2xpbnV4L2FtYmEvbW1jaS5oCmluZGV4IGY2MDIyNzAuLjIxMTE0ODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvYW1iYS9tbWNpLmgKKysrIGIvaW5jbHVkZS9saW51eC9hbWJhL21tY2kuaApAQCAtMzAsMTUgKzMwLDE1IEBACiAgKiBAY2RfaW52ZXJ0OiB0cnVlIGlmIHRoZSBncGlvX2NkIHBpbiB2YWx1ZSBpcyBhY3RpdmUgbG93CiAgKiBAY2FwYWJpbGl0aWVzOiB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBibG9jayBhcyBpbXBsZW1lbnRlZCBpbgogICogdGhpcyBwbGF0Zm9ybSwgc2lnbmlmeSBhbnl0aGluZyBNTUNfQ0FQXyogZnJvbSBtbWMvaG9zdC5oCi0gKiBAZG1hX2ZpbHRlcjogZnVuY3Rpb24gdXNlZCB0byBzZWxlY3QgYW4gYXByb3ByaWF0ZSBSWCBhbmQgVFgKKyAqIEBkbWFfZmlsdGVyOiBmdW5jdGlvbiB1c2VkIHRvIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBSWCBhbmQgVFgKICAqIERNQSBjaGFubmVsIHRvIGJlIHVzZWQgZm9yIERNQSwgaWYgYW5kIG9ubHkgaWYgeW91J3JlIGRlcGxveWluZyB0aGUKICAqIGdlbmVyaWMgRE1BIGVuZ2luZQogICogQGRtYV9yeF9wYXJhbTogcGFyYW1ldGVyIHBhc3NlZCB0byB0aGUgRE1BIGFsbG9jYXRpb24KLSAqIGZpbHRlciBpbiBvcmRlciB0byBzZWxlY3QgYW4gYXByb3ByaWF0ZSBSWCBjaGFubmVsLiBJZgorICogZmlsdGVyIGluIG9yZGVyIHRvIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBSWCBjaGFubmVsLiBJZgogICogdGhlcmUgaXMgYSBiaWRpcmVjdGlvbmFsIFJYK1RYIGNoYW5uZWwsIHRoZW4ganVzdCBzcGVjaWZ5CiAgKiB0aGlzIGFuZCBsZWF2ZSBkbWFfdHhfcGFyYW0gc2V0IHRvIE5VTEwKICAqIEBkbWFfdHhfcGFyYW06IHBhcmFtZXRlciBwYXNzZWQgdG8gdGhlIERNQSBhbGxvY2F0aW9uCi0gKiBmaWx0ZXIgaW4gb3JkZXIgdG8gc2VsZWN0IGFuIGFwcm9wcmlhdGUgVFggY2hhbm5lbC4gSWYgdGhpcworICogZmlsdGVyIGluIG9yZGVyIHRvIHNlbGVjdCBhbiBhcHByb3ByaWF0ZSBUWCBjaGFubmVsLiBJZiB0aGlzCiAgKiBpcyBOVUxMIHRoZSBkcml2ZXIgd2lsbCBhdHRlbXB0IHRvIHVzZSB0aGUgUlggY2hhbm5lbCBhcyBhCiAgKiBiaWRpcmVjdGlvbmFsIGNoYW5uZWwKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jYW4vZXJyb3IuaCBiL2luY2x1ZGUvbGludXgvY2FuL2Vycm9yLmgKaW5kZXggZDQxMjdmZC4uNTk1ODA3NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jYW4vZXJyb3IuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nhbi9lcnJvci5oCkBAIC01MSw3ICs1MSw3IEBACiAjZGVmaW5lIENBTl9FUlJfUFJPVF9CSVQxICAgICAgICAweDEwIC8qIHVuYWJsZSB0byBzZW5kIHJlY2Vzc2l2ZSBiaXQgKi8KICNkZWZpbmUgQ0FOX0VSUl9QUk9UX09WRVJMT0FEICAgIDB4MjAgLyogYnVzIG92ZXJsb2FkICovCiAjZGVmaW5lIENBTl9FUlJfUFJPVF9BQ1RJVkUgICAgICAweDQwIC8qIGFjdGl2ZSBlcnJvciBhbm5vdW5jZW1lbnQgKi8KLSNkZWZpbmUgQ0FOX0VSUl9QUk9UX1RYICAgICAgICAgIDB4ODAgLyogZXJyb3Igb2NjdXJlZCBvbiB0cmFuc21pc3Npb24gKi8KKyNkZWZpbmUgQ0FOX0VSUl9QUk9UX1RYICAgICAgICAgIDB4ODAgLyogZXJyb3Igb2NjdXJyZWQgb24gdHJhbnNtaXNzaW9uICovCiAKIC8qIGVycm9yIGluIENBTiBwcm90b2NvbCAobG9jYXRpb24pIC8gZGF0YVszXSAqLwogI2RlZmluZSBDQU5fRVJSX1BST1RfTE9DX1VOU1BFQyAgMHgwMCAvKiB1bnNwZWNpZmllZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jYW4vbmV0bGluay5oIGIvaW5jbHVkZS9saW51eC9jYW4vbmV0bGluay5oCmluZGV4IDMyNTBkZTkuLjM0NTQyZDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY2FuL25ldGxpbmsuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nhbi9uZXRsaW5rLmgKQEAgLTE3LDcgKzE3LDcgQEAKIC8qCiAgKiBDQU4gYml0LXRpbWluZyBwYXJhbWV0ZXJzCiAgKgotICogRm9yIGZ1dGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlYWQgY2hhcHRlciAiOCBCSVQgVElNSU5HCisgKiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIHJlYWQgY2hhcHRlciAiOCBCSVQgVElNSU5HCiAgKiBSRVFVSVJFTUVOVFMiIG9mIHRoZSAiQm9zY2ggQ0FOIFNwZWNpZmljYXRpb24gdmVyc2lvbiAyLjAiCiAgKiBhdCBodHRwOi8vd3d3LnNlbWljb25kdWN0b3JzLmJvc2NoLmRlL3BkZi9jYW4yc3BlYy5wZGYuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY2RrLmggYi9pbmNsdWRlL2xpbnV4L2Nkay5oCmluZGV4IDA5MDhkYWYuLjgwMDkzYTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY2RrLmgKKysrIGIvaW5jbHVkZS9saW51eC9jZGsuaApAQCAtMTQ5LDcgKzE0OSw3IEBACiAvKgogICoJRGVmaW5lIHRoZSBtZW1vcnkgbWFwcGluZyBzdHJ1Y3R1cmUuIFRoaXMgc3RydWN0dXJlIGlzIHBvaW50ZWQgdG8gYnkKICAqCXRoZSBtZW1wIGZpZWxkIGluIHRoZSBzdGxjZGtoZHIgc3RydWN0LiBBcyBtYW55IGFzIHRoZXNlIHN0cnVjdHVyZXMKLSAqCWFzIHJlcXVpcmVkIGFyZSBsYXllZCBvdXQgaW4gc2hhcmVkIG1lbW9yeSB0byBkZWZpbmUgaG93IHRoZSByZXN0IG9mCisgKglhcyByZXF1aXJlZCBhcmUgbGFpZCBvdXQgaW4gc2hhcmVkIG1lbW9yeSB0byBkZWZpbmUgaG93IHRoZSByZXN0IG9mCiAgKglzaGFyZWQgbWVtb3J5IGlzIGRpdmlkZWQgdXAuIFRoZXJlIHdpbGwgYmUgb25lIGZvciBlYWNoIHBvcnQuCiAgKi8KIHR5cGVkZWYgc3RydWN0IGNka21lbSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NmYWcxMjg2NGIuaCBiL2luY2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oCmluZGV4IDZmOWYxOWQuLmI0NTRkZmMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oCisrKyBiL2luY2x1ZGUvbGludXgvY2ZhZzEyODY0Yi5oCkBAIC00NCw3ICs0NCw3IEBACiAvKgogICogR2V0IHRoZSByZWZyZXNoIHJhdGUgb2YgdGhlIExDRAogICoKLSAqIFJldHVybnMgdGhlIHJlZnJlc2ggcmF0ZSAoaGVydHpzKS4KKyAqIFJldHVybnMgdGhlIHJlZnJlc2ggcmF0ZSAoaGVydHopLgogICovCiBleHRlcm4gdW5zaWduZWQgaW50IGNmYWcxMjg2NGJfZ2V0cmF0ZSh2b2lkKTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jZ3JvdXAuaCBiL2luY2x1ZGUvbGludXgvY2dyb3VwLmgKaW5kZXggZTY1NGZhMi4uNWFjN2ViYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jZ3JvdXAuaAorKysgYi9pbmNsdWRlL2xpbnV4L2Nncm91cC5oCkBAIC0yNDAsNyArMjQwLDcgQEAKIAkvKiBGb3IgUkNVLXByb3RlY3RlZCBkZWxldGlvbiAqLwogCXN0cnVjdCByY3VfaGVhZCByY3VfaGVhZDsKIAotCS8qIExpc3Qgb2YgZXZlbnRzIHdoaWNoIHVzZXJzcGFjZSB3YW50IHRvIHJlY2lldmUgKi8KKwkvKiBMaXN0IG9mIGV2ZW50cyB3aGljaCB1c2Vyc3BhY2Ugd2FudCB0byByZWNlaXZlICovCiAJc3RydWN0IGxpc3RfaGVhZCBldmVudF9saXN0OwogCXNwaW5sb2NrX3QgZXZlbnRfbGlzdF9sb2NrOwogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY200MDAwX2NzLmggYi9pbmNsdWRlL2xpbnV4L2NtNDAwMF9jcy5oCmluZGV4IDcyYmZlZmQuLjNjNGFhYzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY200MDAwX2NzLmgKKysrIGIvaW5jbHVkZS9saW51eC9jbTQwMDBfY3MuaApAQCAtMjAsNyArMjAsNyBAQAogfSBhdHJlcV90OwogCiAKLS8qIHdoYXQgaXMgcGFydGljdWxhcmx5IHN0dXBpZCBpbiB0aGUgb3JpZ2luYWwgZHJpdmVyIGlzIHRoZSBhcmNoLWRlcGVuZGFudAorLyogd2hhdCBpcyBwYXJ0aWN1bGFybHkgc3R1cGlkIGluIHRoZSBvcmlnaW5hbCBkcml2ZXIgaXMgdGhlIGFyY2gtZGVwZW5kZW50CiAgKiBtZW1iZXIgc2l6ZXMuIFRoaXMgbGVhZHMgdG8gQ09ORklHX0NPTVBBVCBicmVha2FnZSwgc2luY2UgMzJiaXQgdXNlcnNwYWNlCiAgKiB3aWxsIGxheSBvdXQgdGhlIHN0cnVjdHVyZSBtZW1iZXJzIGRpZmZlcmVudGx5IHRoYW4gdGhlIDY0Yml0IGtlcm5lbC4KICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmggYi9pbmNsdWRlL2xpbnV4L2NvbmZpZ2ZzLmgKaW5kZXggZGRiN2E5Ny4uNjQ1Nzc4YSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9jb25maWdmcy5oCisrKyBiL2luY2x1ZGUvbGludXgvY29uZmlnZnMuaApAQCAtMjE4LDcgKzIxOCw3IEBACiAgKiBncm91cCBjaGlsZHJlbi4gIGRlZmF1bHRfZ3JvdXBzIG1heSBjb2V4aXN0IGFsb25nc2l6ZSBtYWtlX2dyb3VwKCkgb3IKICAqIG1ha2VfaXRlbSgpLCBidXQgaWYgdGhlIGdyb3VwIHdpc2hlcyB0byBoYXZlIG9ubHkgZGVmYXVsdF9ncm91cHMKICAqIGNoaWxkcmVuIChkaXNhbGxvd2luZyBta2RpcigyKSksIGl0IG5lZWQgbm90IHByb3ZpZGUgZWl0aGVyIGZ1bmN0aW9uLgotICogSWYgdGhlIGdyb3VwIGhhcyBjb21taXQoKSwgaXQgc3VwcG9ydHMgcGVuZGluZyBhbmQgY29tbWl0ZWQgKGFjdGl2ZSkKKyAqIElmIHRoZSBncm91cCBoYXMgY29tbWl0KCksIGl0IHN1cHBvcnRzIHBlbmRpbmcgYW5kIGNvbW1pdHRlZCAoYWN0aXZlKQogICogaXRlbXMuCiAgKi8KIHN0cnVjdCBjb25maWdmc19pdGVtX29wZXJhdGlvbnMgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcGVyLmggYi9pbmNsdWRlL2xpbnV4L2NwZXIuaAppbmRleCAzNzJhMjU4Li5jMjMwNDk0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2NwZXIuaAorKysgYi9pbmNsdWRlL2xpbnV4L2NwZXIuaApAQCAtMzEwLDcgKzMxMCw3IEBACiAJX191OAljcHVpZFs0OF07CiB9OwogCi0vKiBJQTMyL1g2NCBQcm9jZXNzb3IgRXJyb3IgSW5mb21hdGlvbiBTdHJ1Y3R1cmUgKi8KKy8qIElBMzIvWDY0IFByb2Nlc3NvciBFcnJvciBJbmZvcm1hdGlvbiBTdHJ1Y3R1cmUgKi8KIHN0cnVjdCBjcGVyX2lhX2Vycl9pbmZvIHsKIAl1dWlkX2xlCWVycl90eXBlOwogCV9fdTY0CXZhbGlkYXRpb25fYml0czsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZGVjb21wcmVzcy9tbS5oIGIvaW5jbHVkZS9saW51eC9kZWNvbXByZXNzL21tLmgKaW5kZXggNGNiNzJiOS4uNzkyNWJmMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kZWNvbXByZXNzL21tLmgKKysrIGIvaW5jbHVkZS9saW51eC9kZWNvbXByZXNzL21tLmgKQEAgLTE2LDcgKzE2LDcgQEAKIAogLyoKICAqIFNvbWUgYXJjaGl0ZWN0dXJlcyB3YW50IHRvIGVuc3VyZSB0aGVyZSBpcyBubyBsb2NhbCBkYXRhIGluIHRoZWlyCi0gKiBwcmUtYm9vdCBlbnZpcm9ubWVudCwgc28gdGhhdCBkYXRhIGNhbiBhcmJpdGFyaWx5IHJlbG9jYXRlZCAodmlhCisgKiBwcmUtYm9vdCBlbnZpcm9ubWVudCwgc28gdGhhdCBkYXRhIGNhbiBhcmJpdHJhcmlseSByZWxvY2F0ZWQgKHZpYQogICogR09UIHJlZmVyZW5jZXMpLiAgVGhpcyBpcyBhY2hpZXZlZCBieSBkZWZpbmluZyBTVEFUSUNfUldfREFUQSB0bwogICogYmUgbnVsbC4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaCBiL2luY2x1ZGUvbGludXgvZG1hZW5naW5lLmgKaW5kZXggOWJlYmQ3Zi4uZWVlN2FkZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9kbWFlbmdpbmUuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RtYWVuZ2luZS5oCkBAIC00MzQsNyArNDM0LDcgQEAKICAqCXplcm8gb3IgZXJyb3IgY29kZQogICogQGRldmljZV90eF9zdGF0dXM6IHBvbGwgZm9yIHRyYW5zYWN0aW9uIGNvbXBsZXRpb24sIHRoZSBvcHRpb25hbAogICoJdHhzdGF0ZSBwYXJhbWV0ZXIgY2FuIGJlIHN1cHBsaWVkIHdpdGggYSBwb2ludGVyIHRvIGdldCBhCi0gKglzdHJ1Y3Qgd2l0aCBhdXhpbGFyeSB0cmFuc2ZlciBzdGF0dXMgaW5mb3JtYXRpb24sIG90aGVyd2lzZSB0aGUgY2FsbAorICoJc3RydWN0IHdpdGggYXV4aWxpYXJ5IHRyYW5zZmVyIHN0YXR1cyBpbmZvcm1hdGlvbiwgb3RoZXJ3aXNlIHRoZSBjYWxsCiAgKgl3aWxsIGp1c3QgcmV0dXJuIGEgc2ltcGxlIHN0YXR1cyBjb2RlCiAgKiBAZGV2aWNlX2lzc3VlX3BlbmRpbmc6IHB1c2ggcGVuZGluZyB0cmFuc2FjdGlvbnMgdG8gaGFyZHdhcmUKICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kcmJkLmggYi9pbmNsdWRlL2xpbnV4L2RyYmQuaAppbmRleCBkMThkNjczLi5jZWM0NjdmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2RyYmQuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RyYmQuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CiAKLS8qIEFsdG91Z2ggdGhlIExpbnV4IHNvdXJjZSBjb2RlIG1ha2VzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuCisvKiBBbHRob3VnaCB0aGUgTGludXggc291cmNlIGNvZGUgbWFrZXMgYSBkaWZmZXJlbmNlIGJldHdlZW4KICAgIGdlbmVyaWMgZW5kaWFubmVzcyBhbmQgdGhlIGJpdGZpZWxkcycgZW5kaWFubmVzcywgdGhlcmUgaXMgbm8KICAgIGFyY2hpdGVjdHVyZSBhcyBvZiBMaW51eC0yLjYuMjQtcmM0IHdoZXJlIHRoZSBiaXRmaWxlZHMnIGVuZGlhbm5lc3MKICAgIGRvZXMgbm90IG1hdGNoIHRoZSBnZW5lcmljIGVuZGlhbm5lc3MuICovCkBAIC0xODQsNyArMTg0LDcgQEAKIAkvKiBUaGVzZSB0ZW1wb3JhbCBzdGF0ZXMgYXJlIGFsbCB1c2VkIG9uIHRoZSB3YXkKIAkgKiBmcm9tID49IENfQ09OTkVDVEVEIHRvIFVuY29ubmVjdGVkLgogCSAqIFRoZSAnZGlzY29ubmVjdCByZWFzb24nIHN0YXRlcwotCSAqIEkgZG8gbm90IGFsbG93IHRvIGNoYW5nZSBiZXdlZW4gdGhlbS4gKi8KKwkgKiBJIGRvIG5vdCBhbGxvdyB0byBjaGFuZ2UgYmV0d2VlbiB0aGVtLiAqLwogCUNfVElNRU9VVCwKIAlDX0JST0tFTl9QSVBFLAogCUNfTkVUV09SS19GQUlMVVJFLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9kcmJkX2xpbWl0cy5oIGIvaW5jbHVkZS9saW51eC9kcmJkX2xpbWl0cy5oCmluZGV4IGJiMjY0YTUuLjI0NmY1NzYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZHJiZF9saW1pdHMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2RyYmRfbGltaXRzLmgKQEAgLTQzLDcgKzQzLDcgQEAKIAogLyogbmV0IHsgKi8KICAgLyogdGltZW91dCwgdW5pdCBjZW50aSBzZWNvbmRzCi0gICAqIG1vcmUgdGhhbiBvbmUgbWludXRlIHRpbWVvdXQgaXMgbm90IHVzZWZ1bGwgKi8KKyAgICogbW9yZSB0aGFuIG9uZSBtaW51dGUgdGltZW91dCBpcyBub3QgdXNlZnVsICovCiAjZGVmaW5lIERSQkRfVElNRU9VVF9NSU4gMQogI2RlZmluZSBEUkJEX1RJTUVPVVRfTUFYIDYwMAogI2RlZmluZSBEUkJEX1RJTUVPVVRfREVGIDYwICAgICAgIC8qIDYgc2Vjb25kcyAqLwpAQCAtNjgsNyArNjgsNyBAQAogI2RlZmluZSBEUkJEX01BWF9FUE9DSF9TSVpFX01BWCAyMDAwMAogI2RlZmluZSBEUkJEX01BWF9FUE9DSF9TSVpFX0RFRiAyMDQ4CiAKLSAgLyogSSBkb24ndCB0aGluayB0aGF0IGEgdGNwIHNlbmQgYnVmZmVyIG9mIG1vcmUgdGhhbiAxME0gaXMgdXNlZnVsbCAqLworICAvKiBJIGRvbid0IHRoaW5rIHRoYXQgYSB0Y3Agc2VuZCBidWZmZXIgb2YgbW9yZSB0aGFuIDEwTSBpcyB1c2VmdWwgKi8KICNkZWZpbmUgRFJCRF9TTkRCVUZfU0laRV9NSU4gIDAKICNkZWZpbmUgRFJCRF9TTkRCVUZfU0laRV9NQVggICgxMDw8MjApCiAjZGVmaW5lIERSQkRfU05EQlVGX1NJWkVfREVGICAwCkBAIC0xMDEsNyArMTAxLDcgQEAKICNkZWZpbmUgRFJCRF9SQVRFX01BWCAoNCA8PCAyMCkKICNkZWZpbmUgRFJCRF9SQVRFX0RFRiAyNTAgIC8qIGtiL3NlY29uZCAqLwogCi0gIC8qIGxlc3MgdGhhbiA3IHdvdWxkIGhpdCBwZXJmb3JtYW5jZSB1bm5lY2Nlc3NhcmlseS4KKyAgLyogbGVzcyB0aGFuIDcgd291bGQgaGl0IHBlcmZvcm1hbmNlIHVubmVjZXNzYXJpbHkuCiAgICAqIDM4MzMgaXMgdGhlIGxhcmdlc3QgcHJpbWUgdGhhdCBzdGlsbCBkb2VzIGZpdAogICAgKiBpbnRvIDY0IHNlY3RvcnMgb2YgYWN0aXZpdHkgbG9nICovCiAjZGVmaW5lIERSQkRfQUxfRVhURU5UU19NSU4gIDcKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXRodG9vbC5oIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKaW5kZXggYzhmY2JkZC4uZGM4MGQ4MiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKKysrIGIvaW5jbHVkZS9saW51eC9ldGh0b29sLmgKQEAgLTYxNCw3ICs2MTQsNyBAQAogICogdmFsdWVzIG9mIGNvcnJlc3BvbmRpbmcgYml0cyBpbiBmZWF0dXJlc1tdLnJlcXVlc3RlZC4gQml0cyBpbiAucmVxdWVzdGVkCiAgKiBub3Qgc2V0IGluIC52YWxpZCBvciBub3QgY2hhbmdlYWJsZSBhcmUgaWdub3JlZC4KICAqCi0gKiBSZXR1cm5zICVFSU5WQUwgd2hlbiAudmFsaWQgY29udGFpbnMgdW5kZWZpbmVkIG9yIG5ldmVyLWNoYW5nYWJsZSBiaXRzCisgKiBSZXR1cm5zICVFSU5WQUwgd2hlbiAudmFsaWQgY29udGFpbnMgdW5kZWZpbmVkIG9yIG5ldmVyLWNoYW5nZWFibGUgYml0cwogICogb3Igc2l6ZSBpcyBub3QgZXF1YWwgdG8gcmVxdWlyZWQgbnVtYmVyIG9mIGZlYXR1cmVzIHdvcmRzICgzMi1iaXQgYmxvY2tzKS4KICAqIFJldHVybnMgPj0gMCBpZiByZXF1ZXN0IHdhcyBjb21wbGV0ZWQ7IGJpdHMgc2V0IGluIHRoZSB2YWx1ZSBtZWFuOgogICogICAlRVRIVE9PTF9GX1VOU1VQUE9SVEVEIC0gdGhlcmUgd2VyZSBiaXRzIHNldCBpbiAudmFsaWQgdGhhdCBhcmUgbm90CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2V2ZW50cG9sbC5oIGIvaW5jbHVkZS9saW51eC9ldmVudHBvbGwuaAppbmRleCBmNjg1NmE1Li5mMzYyNzMzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V2ZW50cG9sbC5oCisrKyBiL2luY2x1ZGUvbGludXgvZXZlbnRwb2xsLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogIGluY2x1ZGUvbGludXgvZXZlbnRwb2xsLmggKCBFZmZpY2VudCBldmVudCBwb2xsaW5nIGltcGxlbWVudGF0aW9uICkKKyAqICBpbmNsdWRlL2xpbnV4L2V2ZW50cG9sbC5oICggRWZmaWNpZW50IGV2ZW50IHBvbGxpbmcgaW1wbGVtZW50YXRpb24gKQogICogIENvcHlyaWdodCAoQykgMjAwMSwuLi4sMjAwNgkgRGF2aWRlIExpYmVuemkKICAqCiAgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZXhwb3J0ZnMuaCBiL2luY2x1ZGUvbGludXgvZXhwb3J0ZnMuaAppbmRleCAzM2E0MmYyLi4zYTRjZWY1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2V4cG9ydGZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9leHBvcnRmcy5oCkBAIC0xMjAsNyArMTIwLDcgQEAKICAqIGVuY29kZV9maDoKICAqICAgIEBlbmNvZGVfZmggc2hvdWxkIHN0b3JlIGluIHRoZSBmaWxlIGhhbmRsZSBmcmFnbWVudCBAZmggKHVzaW5nIGF0IG1vc3QKICAqICAgIEBtYXhfbGVuIGJ5dGVzKSBpbmZvcm1hdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGJ5IEBkZWNvZGVfZmggdG8gcmVjb3ZlciB0aGUKLSAqICAgIGZpbGUgcmVmZXJlZCB0byBieSB0aGUgJnN0cnVjdCBkZW50cnkgQGRlLiAgSWYgdGhlIEBjb25uZWN0YWJsZSBmbGFnIGlzCisgKiAgICBmaWxlIHJlZmVycmVkIHRvIGJ5IHRoZSAmc3RydWN0IGRlbnRyeSBAZGUuICBJZiB0aGUgQGNvbm5lY3RhYmxlIGZsYWcgaXMKICAqICAgIHNldCwgdGhlIGVuY29kZV9maCgpIHNob3VsZCBzdG9yZSBzdWZmaWNpZW50IGluZm9ybWF0aW9uIHNvIHRoYXQgYSBnb29kCiAgKiAgICBhdHRlbXB0IGNhbiBiZSBtYWRlIHRvIGZpbmQgbm90IG9ubHkgdGhlIGZpbGUgYnV0IGFsc28gaXQncyBwbGFjZSBpbiB0aGUKICAqICAgIGZpbGVzeXN0ZW0uICAgVGhpcyB0eXBpY2FsbHkgbWVhbnMgc3RvcmluZyBhIHJlZmVyZW5jZSB0byBkZS0+ZF9wYXJlbnQgaW4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmIuaCBiL2luY2x1ZGUvbGludXgvZmIuaAppbmRleCBiMmEzNjM5Li5kZjcyOGMxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ZiLmgKKysrIGIvaW5jbHVkZS9saW51eC9mYi5oCkBAIC01MzQsMTQgKzUzNCwxNCBAQAogI2RlZmluZSBGQl9FVkVOVF9HRVRfQ09OU09MRV9NQVAgICAgICAgIDB4MDcKIC8qICAgICAgQ09OU09MRS1TUEVDSUZJQzogc2V0IGNvbnNvbGUgdG8gZnJhbWVidWZmZXIgbWFwcGluZyAqLwogI2RlZmluZSBGQl9FVkVOVF9TRVRfQ09OU09MRV9NQVAgICAgICAgIDB4MDgKLS8qICAgICAgQSBoYXJkd2FyZSBkaXNwbGF5IGJsYW5rIGNoYW5nZSBvY2N1cmVkICovCisvKiAgICAgIEEgaGFyZHdhcmUgZGlzcGxheSBibGFuayBjaGFuZ2Ugb2NjdXJyZWQgKi8KICNkZWZpbmUgRkJfRVZFTlRfQkxBTksgICAgICAgICAgICAgICAgICAweDA5CiAvKiAgICAgIFByaXZhdGUgbW9kZWxpc3QgaXMgdG8gYmUgcmVwbGFjZWQgKi8KICNkZWZpbmUgRkJfRVZFTlRfTkVXX01PREVMSVNUICAgICAgICAgICAweDBBCiAvKglUaGUgcmVzb2x1dGlvbiBvZiB0aGUgcGFzc2VkIGluIGZiX2luZm8gYWJvdXQgdG8gY2hhbmdlIGFuZAogICAgICAgICBhbGwgdmMncyBzaG91bGQgYmUgY2hhbmdlZCAgICAgICAgICovCiAjZGVmaW5lIEZCX0VWRU5UX01PREVfQ0hBTkdFX0FMTAkweDBCCi0vKglBIHNvZnR3YXJlIGRpc3BsYXkgYmxhbmsgY2hhbmdlIG9jY3VyZWQgKi8KKy8qCUEgc29mdHdhcmUgZGlzcGxheSBibGFuayBjaGFuZ2Ugb2NjdXJyZWQgKi8KICNkZWZpbmUgRkJfRVZFTlRfQ09OQkxBTksgICAgICAgICAgICAgICAweDBDCiAvKiAgICAgIEdldCBkcmF3aW5nIHJlcXVpcmVtZW50cyAgICAgICAgKi8KICNkZWZpbmUgRkJfRVZFTlRfR0VUX1JFUSAgICAgICAgICAgICAgICAweDBECkBAIC04MDUsNyArODA1LDcgQEAKIC8qIEEgZHJpdmVyIG1heSBzZXQgdGhpcyBmbGFnIHRvIGluZGljYXRlIHRoYXQgaXQgZG9lcyB3YW50IGEgc2V0X3BhciB0byBiZQogICogY2FsbGVkIGV2ZXJ5IHRpbWUgd2hlbiBmYmNvbl9zd2l0Y2ggaXMgZXhlY3V0ZWQuIFRoZSBhZHZhbnRhZ2UgaXMgdGhhdCB3aXRoCiAgKiB0aGlzIGZsYWcgc2V0IHlvdSBjYW4gcmVhbGx5IGJlIHN1cmUgdGhhdCBzZXRfcGFyIGlzIGFsd2F5cyBjYWxsZWQgYmVmb3JlCi0gKiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyBkZXBlbmRhbnQgb24gdGhlIGNvcnJlY3QgaGFyZHdhcmUgc3RhdGUgb3IgYWx0ZXJpbmcKKyAqIGFueSBvZiB0aGUgZnVuY3Rpb25zIGRlcGVuZGVudCBvbiB0aGUgY29ycmVjdCBoYXJkd2FyZSBzdGF0ZSBvciBhbHRlcmluZwogICogdGhhdCBzdGF0ZSwgZXZlbiBpZiB5b3UgYXJlIHVzaW5nIHNvbWUgYnJva2VuIFggcmVsZWFzZXMuIFRoZSBkaXNhZHZhbnRhZ2UKICAqIGlzIHRoYXQgaXQgaW50cm9kdWNlcyB1bndhbnRlZCBkZWxheXMgdG8gZXZlcnkgY29uc29sZSBzd2l0Y2ggaWYgc2V0X3BhcgogICogaXMgc2xvdy4gSXQgaXMgYSBnb29kIGlkZWEgdG8gdHJ5IHRoaXMgZmxhZyBpbiB0aGUgZHJpdmVycyBpbml0aWFsaXphdGlvbgpAQCAtODc3LDcgKzg3Nyw3IEBACiAJdm9pZCAqZmJjb25fcGFyOyAgICAgICAgICAgICAgICAvKiBmYmNvbiB1c2Utb25seSBwcml2YXRlIGFyZWEgKi8KIAkvKiBGcm9tIGhlcmUgb24gZXZlcnl0aGluZyBpcyBkZXZpY2UgZGVwZW5kZW50ICovCiAJdm9pZCAqcGFyOwotCS8qIHdlIG5lZWQgdGhlIFBDSSBvciBzaW1pbGlhciBhcGVydHVyZSBiYXNlL3NpemUgbm90CisJLyogd2UgbmVlZCB0aGUgUENJIG9yIHNpbWlsYXIgYXBlcnR1cmUgYmFzZS9zaXplIG5vdAogCSAgIHNtZW1fc3RhcnQvc2l6ZSBhcyBzbWVtX3N0YXJ0IG1heSBqdXN0IGJlIGFuIG9iamVjdAogCSAgIGFsbG9jYXRlZCBpbnNpZGUgdGhlIGFwZXJ0dXJlIHNvIG1heSBub3QgYWN0dWFsbHkgb3ZlcmxhcCAqLwogCXN0cnVjdCBhcGVydHVyZXNfc3RydWN0IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZmlyZXdpcmUtY2Rldi5oIGIvaW5jbHVkZS9saW51eC9maXJld2lyZS1jZGV2LmgKaW5kZXggNTllYTQwNi4uNGZmMDk4OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9maXJld2lyZS1jZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9maXJld2lyZS1jZGV2LmgKQEAgLTkwMCw3ICs5MDAsNyBAQAogCiAvKioKICAqIHN0cnVjdCBmd19jZGV2X2FsbG9jYXRlX2lzb19yZXNvdXJjZSAtIChEZSlhbGxvY2F0ZSBhIGNoYW5uZWwgb3IgYmFuZHdpZHRoCi0gKiBAY2xvc3VyZToJUGFzc2VkIGJhY2sgdG8gdXNlcnNwYWNlIGluIGNvcnJlcG9uZGluZyBpc28gcmVzb3VyY2UgZXZlbnRzCisgKiBAY2xvc3VyZToJUGFzc2VkIGJhY2sgdG8gdXNlcnNwYWNlIGluIGNvcnJlc3BvbmRpbmcgaXNvIHJlc291cmNlIGV2ZW50cwogICogQGNoYW5uZWxzOglJc29jaHJvbm91cyBjaGFubmVscyBvZiB3aGljaCBvbmUgaXMgdG8gYmUgKGRlKWFsbG9jYXRlZAogICogQGJhbmR3aWR0aDoJSXNvY2hyb25vdXMgYmFuZHdpZHRoIHVuaXRzIHRvIGJlIChkZSlhbGxvY2F0ZWQKICAqIEBoYW5kbGU6CUhhbmRsZSB0byB0aGUgYWxsb2NhdGlvbiwgd3JpdHRlbiBieSB0aGUga2VybmVsIChvbmx5IHZhbGlkIGluCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgKaW5kZXggMWI5NWFmMy4uZGJkODYwYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mcy5oCisrKyBiL2luY2x1ZGUvbGludXgvZnMuaApAQCAtNDY1LDcgKzQ2NSw3IEBACiAJc3RydWN0IHRpbWVzcGVjCWlhX2N0aW1lOwogCiAJLyoKLQkgKiBOb3QgYW4gYXR0cmlidXRlLCBidXQgYW4gYXV4aWxhcnkgaW5mbyBmb3IgZmlsZXN5c3RlbXMgd2FudGluZyB0bworCSAqIE5vdCBhbiBhdHRyaWJ1dGUsIGJ1dCBhbiBhdXhpbGlhcnkgaW5mbyBmb3IgZmlsZXN5c3RlbXMgd2FudGluZyB0bwogCSAqIGltcGxlbWVudCBhbiBmdHJ1bmNhdGUoKSBsaWtlIG1ldGhvZC4gIE5PVEU6IGZpbGVzeXN0ZW0gc2hvdWxkCiAJICogY2hlY2sgZm9yIChpYV92YWxpZCAmIEFUVFJfRklMRSksIGFuZCBub3QgZm9yIChpYV9maWxlICE9IE5VTEwpLgogCSAqLwpAQCAtNjQ5LDcgKzY0OSw3IEBACiB9IF9fYXR0cmlidXRlX18oKGFsaWduZWQoc2l6ZW9mKGxvbmcpKSkpOwogCS8qCiAJICogT24gbW9zdCBhcmNoaXRlY3R1cmVzIHRoYXQgYWxpZ25tZW50IGlzIGFscmVhZHkgdGhlIGNhc2U7IGJ1dAotCSAqIG11c3QgYmUgZW5mb3JjZWQgaGVyZSBmb3IgQ1JJUywgdG8gbGV0IHRoZSBsZWFzdCBzaWduZmljYW50IGJpdAorCSAqIG11c3QgYmUgZW5mb3JjZWQgaGVyZSBmb3IgQ1JJUywgdG8gbGV0IHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQKIAkgKiBvZiBzdHJ1Y3QgcGFnZSdzICJtYXBwaW5nIiBwb2ludGVyIGJlIHVzZWQgZm9yIFBBR0VfTUFQUElOR19BTk9OLgogCSAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzY2FjaGUtY2FjaGUuaCBiL2luY2x1ZGUvbGludXgvZnNjYWNoZS1jYWNoZS5oCmluZGV4IGI4NTgxYzAuLjc2NDI3ZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZnNjYWNoZS1jYWNoZS5oCisrKyBiL2luY2x1ZGUvbGludXgvZnNjYWNoZS1jYWNoZS5oCkBAIC0yMzYsNyArMjM2LDcgQEAKIAkvKiB1bnBpbiBhbiBvYmplY3QgaW4gdGhlIGNhY2hlICovCiAJdm9pZCAoKnVucGluX29iamVjdCkoc3RydWN0IGZzY2FjaGVfb2JqZWN0ICpvYmplY3QpOwogCi0JLyogc3RvcmUgdGhlIHVwZGF0ZWQgYXV4aWxsaWFyeSBkYXRhIG9uIGFuIG9iamVjdCAqLworCS8qIHN0b3JlIHRoZSB1cGRhdGVkIGF1eGlsaWFyeSBkYXRhIG9uIGFuIG9iamVjdCAqLwogCXZvaWQgKCp1cGRhdGVfb2JqZWN0KShzdHJ1Y3QgZnNjYWNoZV9vYmplY3QgKm9iamVjdCk7CiAKIAkvKiBkaXNjYXJkIHRoZSByZXNvdXJjZXMgcGlubmVkIGJ5IGFuIG9iamVjdCBhbmQgZWZmZWN0IHJldGlyZW1lbnQgaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZnNjYWNoZS5oIGIvaW5jbHVkZS9saW51eC9mc2NhY2hlLmgKaW5kZXggZWMwZGFkNS4uN2M0ZDcyZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9mc2NhY2hlLmgKKysrIGIvaW5jbHVkZS9saW51eC9mc2NhY2hlLmgKQEAgLTEwMiw5ICsxMDIsOSBAQAogCSAqLwogCXZvaWQgKCpnZXRfYXR0cikoY29uc3Qgdm9pZCAqY29va2llX25ldGZzX2RhdGEsIHVpbnQ2NF90ICpzaXplKTsKIAotCS8qIGdldCB0aGUgYXV4aWxsaWFyeSBkYXRhIGZyb20gbmV0ZnMgZGF0YQorCS8qIGdldCB0aGUgYXV4aWxpYXJ5IGRhdGEgZnJvbSBuZXRmcyBkYXRhCiAJICogLSB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBhYnNlbnQgaWYgdGhlIGluZGV4IGNhcnJpZXMgbm8gc3RhdGUgZGF0YQotCSAqIC0gc2hvdWxkIHN0b3JlIHRoZSBhdXhpbGxpYXJ5IGRhdGEgaW4gdGhlIGJ1ZmZlcgorCSAqIC0gc2hvdWxkIHN0b3JlIHRoZSBhdXhpbGlhcnkgZGF0YSBpbiB0aGUgYnVmZmVyCiAJICogLSBzaG91bGQgcmV0dXJuIHRoZSBhbW91bnQgb2YgYW1vdW50IHN0b3JlZAogCSAqIC0gbm90IHBlcm1pdHRlZCB0byByZXR1cm4gYW4gZXJyb3IKIAkgKiAtIHRoZSBuZXRmcyBkYXRhIGZyb20gdGhlIGNvb2tpZSBiZWluZyB1c2VkIGFzIHRoZSBzb3VyY2UgaXMKQEAgLTExNyw3ICsxMTcsNyBAQAogCS8qIGNvbnN1bHQgdGhlIG5ldGZzIGFib3V0IHRoZSBzdGF0ZSBvZiBhbiBvYmplY3QKIAkgKiAtIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGFic2VudCBpZiB0aGUgaW5kZXggY2FycmllcyBubyBzdGF0ZSBkYXRhCiAJICogLSB0aGUgbmV0ZnMgZGF0YSBmcm9tIHRoZSBjb29raWUgYmVpbmcgdXNlZCBhcyB0aGUgdGFyZ2V0IGlzCi0JICogICBwcmVzZW50ZWQsIGFzIGlzIHRoZSBhdXhpbGxpYXJ5IGRhdGEKKwkgKiAgIHByZXNlbnRlZCwgYXMgaXMgdGhlIGF1eGlsaWFyeSBkYXRhCiAJICovCiAJZW51bSBmc2NhY2hlX2NoZWNrYXV4ICgqY2hlY2tfYXV4KSh2b2lkICpjb29raWVfbmV0ZnNfZGF0YSwKIAkJCQkJICAgY29uc3Qgdm9pZCAqZGF0YSwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaGlkLmggYi9pbmNsdWRlL2xpbnV4L2hpZC5oCmluZGV4IGJiMjliYjEuLjQyZjdlMmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaGlkLmgKKysrIGIvaW5jbHVkZS9saW51eC9oaWQuaApAQCAtNzk5LDcgKzc5OSw3IEBACiAgKgogICogQ2FsbCB0aGlzIGluIHByb2JlIGZ1bmN0aW9uICphZnRlciogaGlkX3BhcnNlLiBUaGlzIHdpbGwgc2V0dXAgSFcgYnVmZmVycwogICogYW5kIHN0YXJ0IHRoZSBkZXZpY2UgKGlmIG5vdCBkZWZmZXJlZCB0byBkZXZpY2Ugb3BlbikuIGhpZF9od19zdG9wIG11c3QgYmUKLSAqIGNhbGxlZCBpZiB0aGlzIHdhcyBzdWNjZXNzZnVsbC4KKyAqIGNhbGxlZCBpZiB0aGlzIHdhcyBzdWNjZXNzZnVsLgogICovCiBzdGF0aWMgaW5saW5lIGludCBfX211c3RfY2hlY2sgaGlkX2h3X3N0YXJ0KHN0cnVjdCBoaWRfZGV2aWNlICpoZGV2LAogCQl1bnNpZ25lZCBpbnQgY29ubmVjdF9tYXNrKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9ocF9zZGMuaCBiL2luY2x1ZGUvbGludXgvaHBfc2RjLmgKaW5kZXggOWRiM2Q0NS4uZDM5Mjk3NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ocF9zZGMuaAorKysgYi9pbmNsdWRlL2xpbnV4L2hwX3NkYy5oCkBAIC0xMDEsNyArMTAxLDcgQEAKICNkZWZpbmUgSFBfU0RDX1NUQVRVU19SRUcJMHg0MAkvKiBEYXRhIGZyb20gYW4gaTgwNDIgcmVnaXN0ZXIgKi8KICNkZWZpbmUgSFBfU0RDX1NUQVRVU19ISUxDTUQgICAgMHg1MAkvKiBDb21tYW5kIGZyb20gSElMIE1MQyAqLwogI2RlZmluZSBIUF9TRENfU1RBVFVTX0hJTERBVEEgICAweDYwCS8qIERhdGEgZnJvbSBISUwgTUxDICovCi0jZGVmaW5lIEhQX1NEQ19TVEFUVVNfUFVQCTB4NzAJLyogU3VjZXNzZnVsIHBvd2VyLXVwIHNlbGYgdGVzdCAqLworI2RlZmluZSBIUF9TRENfU1RBVFVTX1BVUAkweDcwCS8qIFN1Y2Nlc3NmdWwgcG93ZXItdXAgc2VsZiB0ZXN0ICovCiAjZGVmaW5lIEhQX1NEQ19TVEFUVVNfS0NPT0tFRAkweDgwCS8qIEtleSBmcm9tIGNvb2tlZCBrYmQgKi8KICNkZWZpbmUgSFBfU0RDX1NUQVRVU19LUlBHCTB4YzAJLyogS2V5IGZyb20gUmVwZWF0IEdlbiAqLwogI2RlZmluZSBIUF9TRENfU1RBVFVTX0tNT0RfU1VQCTB4MTAJLyogU2hpZnQga2V5IGlzIHVwICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2kyby5oIGIvaW5jbHVkZS9saW51eC9pMm8uaAppbmRleCA5ZTdhMTJkLi5hNmRlZWY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2kyby5oCisrKyBiL2luY2x1ZGUvbGludXgvaTJvLmgKQEAgLTgyNiw3ICs4MjYsNyBAQAogICoJQGM6IEkyTyBjb250cm9sbGVyCiAgKgogICoJVGhpcyBmdW5jdGlvbiB0cmllcyB0byBnZXQgYSBtZXNzYWdlIGZyYW1lLiBJZiBubyBtZXNzYWdlIGZyYW1lIGlzCi0gKglhdmFpbGFibGUgZG8gbm90IHdhaXQgdW50aWwgb25lIGlzIGF2YWlsYWJlIChzZWUgYWxzbyBpMm9fbXNnX2dldF93YWl0KS4KKyAqCWF2YWlsYWJsZSBkbyBub3Qgd2FpdCB1bnRpbCBvbmUgaXMgYXZhaWxhYmxlIChzZWUgYWxzbyBpMm9fbXNnX2dldF93YWl0KS4KICAqCVRoZSByZXR1cm5lZCBwb2ludGVyIHRvIHRoZSBtZXNzYWdlIGZyYW1lIGlzIG5vdCBpbiBJL08gbWVtb3J5LCBpdCBpcwogICoJYWxsb2NhdGVkIGZyb20gYSBtZW1wb29sLiBCdXQgYmVjYXVzZSBhIE1GQSBpcyBhbGxvY2F0ZWQgZnJvbSB0aGUKICAqCWNvbnRyb2xsZXIgdG9vIGl0IGlzIGd1YXJhbnRlZWQgdGhhdCBpMm9fbXNnX3Bvc3QoKSB3aWxsIG5ldmVyIGZhaWwuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oIGIvaW5jbHVkZS9saW51eC9pbnRlcnJ1cHQuaAppbmRleCA5NDNjOWI1Li5iZWEwYWM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2ludGVycnVwdC5oCisrKyBiL2luY2x1ZGUvbGludXgvaW50ZXJydXB0LmgKQEAgLTk4LDcgKzk4LDcgQEAKICAqIEBuZXh0Oglwb2ludGVyIHRvIHRoZSBuZXh0IGlycWFjdGlvbiBmb3Igc2hhcmVkIGludGVycnVwdHMKICAqIEBpcnE6CWludGVycnVwdCBudW1iZXIKICAqIEBkaXI6CXBvaW50ZXIgdG8gdGhlIHByb2MvaXJxL05OL25hbWUgZW50cnkKLSAqIEB0aHJlYWRfZm46CWludGVydXB0IGhhbmRsZXIgZnVuY3Rpb24gZm9yIHRocmVhZGVkIGludGVycnVwdHMKKyAqIEB0aHJlYWRfZm46CWludGVycnVwdCBoYW5kbGVyIGZ1bmN0aW9uIGZvciB0aHJlYWRlZCBpbnRlcnJ1cHRzCiAgKiBAdGhyZWFkOgl0aHJlYWQgcG9pbnRlciBmb3IgdGhyZWFkZWQgaW50ZXJydXB0cwogICogQHRocmVhZF9mbGFnczoJZmxhZ3MgcmVsYXRlZCB0byBAdGhyZWFkCiAgKiBAdGhyZWFkX21hc2s6CWJpdG1hc2sgZm9yIGtlZXBpbmcgdHJhY2sgb2YgQHRocmVhZCBhY3Rpdml0eQpAQCAtNDg0LDcgKzQ4NCw3IEBACiAgICBQcm9wZXJ0aWVzOgogICAgKiBJZiB0YXNrbGV0X3NjaGVkdWxlKCkgaXMgY2FsbGVkLCB0aGVuIHRhc2tsZXQgaXMgZ3VhcmFudGVlZAogICAgICB0byBiZSBleGVjdXRlZCBvbiBzb21lIGNwdSBhdCBsZWFzdCBvbmNlIGFmdGVyIHRoaXMuCi0gICAqIElmIHRoZSB0YXNrbGV0IGlzIGFscmVhZHkgc2NoZWR1bGVkLCBidXQgaXRzIGV4Y2VjdXRpb24gaXMgc3RpbGwgbm90CisgICAqIElmIHRoZSB0YXNrbGV0IGlzIGFscmVhZHkgc2NoZWR1bGVkLCBidXQgaXRzIGV4ZWN1dGlvbiBpcyBzdGlsbCBub3QKICAgICAgc3RhcnRlZCwgaXQgd2lsbCBiZSBleGVjdXRlZCBvbmx5IG9uY2UuCiAgICAqIElmIHRoaXMgdGFza2xldCBpcyBhbHJlYWR5IHJ1bm5pbmcgb24gYW5vdGhlciBDUFUgKG9yIHNjaGVkdWxlIGlzIGNhbGxlZAogICAgICBmcm9tIHRhc2tsZXQgaXRzZWxmKSwgaXQgaXMgcmVzY2hlZHVsZWQgZm9yIGxhdGVyLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9pcG1pLmggYi9pbmNsdWRlL2xpbnV4L2lwbWkuaAppbmRleCAwNDVmMmYyLi5jYTg1Y2Y4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2lwbWkuaAorKysgYi9pbmNsdWRlL2xpbnV4L2lwbWkuaApAQCAtMTExLDcgKzExMSw3IEBACiAgKiBBIExBTiBBZGRyZXNzLiAgVGhpcyBpcyBhbiBhZGRyZXNzIHRvL2Zyb20gYSBMQU4gaW50ZXJmYWNlIGJyaWRnZWQKICAqIGJ5IHRoZSBCTUMsIG5vdCBhbiBhZGRyZXNzIGFjdHVhbGx5IG91dCBvbiB0aGUgTEFOLgogICoKLSAqIEEgY29uY2lvdXMgZGVjaXNpb24gd2FzIG1hZGUgaGVyZSB0byBkZXZpYXRlIHNsaWdodGx5IGZyb20gdGhlIElQTUkKKyAqIEEgY29uc2Npb3VzIGRlY2lzaW9uIHdhcyBtYWRlIGhlcmUgdG8gZGV2aWF0ZSBzbGlnaHRseSBmcm9tIHRoZSBJUE1JCiAgKiBzcGVjLiAgV2UgZG8gbm90IHVzZSBycVNXSUQgYW5kIHJzU1dJRCBsaWtlIGl0IHNob3dzIGluIHRoZQogICogbWVzc2FnZS4gIEluc3RlYWQsIHdlIHVzZSByZW1vdGVfU1dJRCBhbmQgbG9jYWxfU1dJRC4gIFRoaXMgbWVhbnMKICAqIHRoYXQgYW55IG1lc3NhZ2UgKGEgcmVxdWVzdCBvciByZXNwb25zZSkgZnJvbSBhbm90aGVyIGRldmljZSB3aWxsCkBAIC0yNTksNyArMjU5LDcgQEAKIAl2b2lkICgqZG9uZSkoc3RydWN0IGlwbWlfcmVjdl9tc2cgKm1zZyk7CiAKIAkvKiBQbGFjZS1ob2xkZXIgZm9yIHRoZSBkYXRhLCBkb24ndCBtYWtlIGFueSBhc3N1bXB0aW9ucyBhYm91dAotCSAgIHRoZSBzaXplIG9yIGV4aXN0YW5jZSBvZiB0aGlzLCBzaW5jZSBpdCBtYXkgY2hhbmdlLiAqLworCSAgIHRoZSBzaXplIG9yIGV4aXN0ZW5jZSBvZiB0aGlzLCBzaW5jZSBpdCBtYXkgY2hhbmdlLiAqLwogCXVuc2lnbmVkIGNoYXIgICBtc2dfZGF0YVtJUE1JX01BWF9NU0dfTEVOR1RIXTsKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvaXNkbi9oZGxjLmggYi9pbmNsdWRlL2xpbnV4L2lzZG4vaGRsYy5oCmluZGV4IDRiM2VjYzQuLjk2NTIxMzcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaXNkbi9oZGxjLmgKKysrIGIvaW5jbHVkZS9saW51eC9pc2RuL2hkbGMuaApAQCAtMiw3ICsyLDcgQEAKICAqIGhkbGMuaCAgLS0gIEdlbmVyYWwgcHVycG9zZSBJU0ROIEhETEMgZGVjb2Rlci4KICAqCiAgKiBJbXBsZW1lbnRhdGlvbiBvZiBhIEhETEMgZGVjb2Rlci9lbmNvZGVyIGluIHNvZnR3YXJlLgotICogTmVjY2Vzc2FyeSBiZWNhdXNlIHNvbWUgSVNETiBkZXZpY2VzIGRvbid0IGhhdmUgSERMQworICogTmVjZXNzYXJ5IGJlY2F1c2Ugc29tZSBJU0ROIGRldmljZXMgZG9uJ3QgaGF2ZSBIRExDCiAgKiBjb250cm9sbGVycy4KICAqCiAgKiBDb3B5cmlnaHQgKEMpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2l4anVzZXIuaCBiL2luY2x1ZGUvbGludXgvaXhqdXNlci5oCmluZGV4IDg4YjQ1ODkuLjk0YWI1ZTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvaXhqdXNlci5oCisrKyBiL2luY2x1ZGUvbGludXgvaXhqdXNlci5oCkBAIC01MCw3ICs1MCw3IEBACiAqIElPQ1RMJ3MgdXNlZCBmb3IgdGhlIFF1aWNrbmV0IFRlbGVwaG9ueSBDYXJkcwogKgogKiBJZiB5b3UgdXNlIHRoZSBJWEpDVExfVEVTVFJBTSBjb21tYW5kLCB0aGUgY2FyZCBtdXN0IGJlIHBvd2VyIGN5Y2xlZCB0bwotKiByZXNldCB0aGUgU1JBTSB2YWx1ZXMgYmVmb3JlIGZ1dGhlciB1c2UuCisqIHJlc2V0IHRoZSBTUkFNIHZhbHVlcyBiZWZvcmUgZnVydGhlciB1c2UuCiAqCiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvamlmZmllcy5oIGIvaW5jbHVkZS9saW51eC9qaWZmaWVzLmgKaW5kZXggOTIyYWEzMS4uZjk3NjcyYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9qaWZmaWVzLmgKKysrIGIvaW5jbHVkZS9saW51eC9qaWZmaWVzLmgKQEAgLTQyLDcgKzQyLDcgQEAKIC8qIExBVENIIGlzIHVzZWQgaW4gdGhlIGludGVydmFsIHRpbWVyIGFuZCBmdGFwZSBzZXR1cC4gKi8KICNkZWZpbmUgTEFUQ0ggICgoQ0xPQ0tfVElDS19SQVRFICsgSFovMikgLyBIWikJLyogRm9yIGRpdmlkZXIgKi8KIAotLyogU3VwcG9zZSB3ZSB3YW50IHRvIGRldmlkZSB0d28gbnVtYmVycyBOT00gYW5kIERFTjogTk9NL0RFTiwgdGhlbiB3ZSBjYW4KKy8qIFN1cHBvc2Ugd2Ugd2FudCB0byBkaXZpZGUgdHdvIG51bWJlcnMgTk9NIGFuZCBERU46IE5PTS9ERU4sIHRoZW4gd2UgY2FuCiAgKiBpbXByb3ZlIGFjY3VyYWN5IGJ5IHNoaWZ0aW5nIExTSCBiaXRzLCBoZW5jZSBjYWxjdWxhdGluZzoKICAqICAgICAoTk9NIDw8IExTSCkgLyBERU4KICAqIFRoaXMgaG93ZXZlciBtZWFucyB0cm91YmxlIGZvciBsYXJnZSBOT00sIGJlY2F1c2UgKE5PTSA8PCBMU0gpIG1heSBubwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rdGltZS5oIGIvaW5jbHVkZS9saW51eC9rdGltZS5oCmluZGV4IGUxY2VhYTkuLjYwM2JlYzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgva3RpbWUuaAorKysgYi9pbmNsdWRlL2xpbnV4L2t0aW1lLmgKQEAgLTM1LDcgKzM1LDcgQEAKICAqCiAgKiBPbiAzMi1iaXQgQ1BVcyBhbiBvcHRpbWl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIHRpbWVzcGVjIHN0cnVjdHVyZQogICogaXMgdXNlZCB0byBhdm9pZCBleHBlbnNpdmUgY29udmVyc2lvbnMgZnJvbSBhbmQgdG8gdGltZXNwZWNzLiBUaGUKLSAqIGVuZGlhbi1hd2FyZSBvcmRlciBvZiB0aGUgdHYgc3RydWN0IG1lbWJlcnMgaXMgY2hvb3NlbiB0byBhbGxvdworICogZW5kaWFuLWF3YXJlIG9yZGVyIG9mIHRoZSB0diBzdHJ1Y3QgbWVtYmVycyBpcyBjaG9zZW4gdG8gYWxsb3cKICAqIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIG9uIHRoZSB0djY0IG1lbWJlciBvZiB0aGUgdW5pb24gdG9vLCB3aGljaAogICogZm9yIGNlcnRhaW4gb3BlcmF0aW9ucyBwcm9kdWNlcyBiZXR0ZXIgY29kZS4KICAqCkBAIC0xNTgsNyArMTU4LDcgQEAKICAqIEBsaHM6CW1pbnVlbmQKICAqIEByaHM6CXN1YnRyYWhlbmQKICAqCi0gKiBSZXR1cm5zIHRoZSByZW1haW5kZXIgb2YgdGhlIHN1YnN0cmFjdGlvbgorICogUmV0dXJucyB0aGUgcmVtYWluZGVyIG9mIHRoZSBzdWJ0cmFjdGlvbgogICovCiBzdGF0aWMgaW5saW5lIGt0aW1lX3Qga3RpbWVfc3ViKGNvbnN0IGt0aW1lX3QgbGhzLCBjb25zdCBrdGltZV90IHJocykKIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGVkLWxtMzUzMC5oIGIvaW5jbHVkZS9saW51eC9sZWQtbG0zNTMwLmgKaW5kZXggYmI2OWQyMC4uNTg1OTJmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9sZWQtbG0zNTMwLmgKKysrIGIvaW5jbHVkZS9saW51eC9sZWQtbG0zNTMwLmgKQEAgLTQxLDcgKzQxLDcgQEAKICNkZWZpbmUgTE0zNTMwX1JBTVBfVElNRV84cwkJKDcpCiAKIC8qIEFMUyBSZXNpc3RvciBTZWxlY3QgKi8KLSNkZWZpbmUgTE0zNTMwX0FMU19JTVBEX1oJCSgweDAwKSAvKiBBTFMgSW1wZWRlbmNlICovCisjZGVmaW5lIExNMzUzMF9BTFNfSU1QRF9aCQkoMHgwMCkgLyogQUxTIEltcGVkYW5jZSAqLwogI2RlZmluZSBMTTM1MzBfQUxTX0lNUERfMTNfNTNrT2htCSgweDAxKQogI2RlZmluZSBMTTM1MzBfQUxTX0lNUERfOV8wMWtPaG0JKDB4MDIpCiAjZGVmaW5lIExNMzUzMF9BTFNfSU1QRF81XzQxa09obQkoMHgwMykKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbGliYXRhLmggYi9pbmNsdWRlL2xpbnV4L2xpYmF0YS5oCmluZGV4IGM3MWY0NjkuLjdmNjc1YWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbGliYXRhLmgKKysrIGIvaW5jbHVkZS9saW51eC9saWJhdGEuaApAQCAtMzY0LDcgKzM2NCw3IEBACiAJQVRBX0VIX0NNRF9USU1FT1VUX1RBQkxFX1NJWkUgPSA2LAogCiAJLyogSG9ya2FnZSB0eXBlcy4gTWF5IGJlIHNldCBieSBsaWJhdGEgb3IgY29udHJvbGxlciBvbiBkcml2ZXMKLQkgICAoc29tZSBob3JrYWdlIG1heSBiZSBkcml2ZS9jb250cm9sbGVyIHBhaXIgZGVwZW5kYW50ICovCisJICAgKHNvbWUgaG9ya2FnZSBtYXkgYmUgZHJpdmUvY29udHJvbGxlciBwYWlyIGRlcGVuZGVudCAqLwogCiAJQVRBX0hPUktBR0VfRElBR05PU1RJQwk9ICgxIDw8IDApLAkvKiBGYWlsZWQgYm9vdCBkaWFnICovCiAJQVRBX0hPUktBR0VfTk9ETUEJPSAoMSA8PCAxKSwJLyogRE1BIHByb2JsZW1zICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2xydV9jYWNoZS5oIGIvaW5jbHVkZS9saW51eC9scnVfY2FjaGUuaAppbmRleCA3OGZiZjI0Li42YTRmYWI3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2xydV9jYWNoZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbHJ1X2NhY2hlLmgKQEAgLTE0OCw3ICsxNDgsNyBAQAogICoKICAqIERSQkQgY3VycmVudGx5IChNYXkgMjAwOSkgb25seSB1c2VzIDYxIGVsZW1lbnRzIG9uIHRoZSByZXN5bmMgbHJ1X2NhY2hlCiAgKiAodG90YWwgbWVtb3J5IHVzYWdlIDIgcGFnZXMpLCBhbmQgdXAgdG8gMzgzMyBlbGVtZW50cyBvbiB0aGUgYWN0X2xvZwotICogbHJ1X2NhY2hlLCB0b3RhbGxpbmcgfjIxNSBrQiBmb3IgNjRiaXQgYXJjaGl0ZWNodHVyZSwgfjUzIHBhZ2VzLgorICogbHJ1X2NhY2hlLCB0b3RhbGxpbmcgfjIxNSBrQiBmb3IgNjRiaXQgYXJjaGl0ZWN0dXJlLCB+NTMgcGFnZXMuCiAgKgogICogV2UgdXN1YWxseSBkbyBub3QgYWN0dWFsbHkgZnJlZSB0aGVzZSBvYmplY3RzIGFnYWluLCBidXQgb25seSAicmVjeWNsZSIKICAqIHRoZW0sIGFzIHRoZSBjaGFuZ2UgImluZGV4OiAtb2xkX2xhYmVsLCArTENfRlJFRSIgd291bGQgbmVlZCBhIHRyYW5zYWN0aW9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21mZC93bTgzNTAvcG1pYy5oIGIvaW5jbHVkZS9saW51eC9tZmQvd204MzUwL3BtaWMuaAppbmRleCBlNzg2ZmU5Li41NzliNTBjIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21mZC93bTgzNTAvcG1pYy5oCisrKyBiL2luY2x1ZGUvbGludXgvbWZkL3dtODM1MC9wbWljLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogcG1pYy5oICAtLSAgUG93ZXIgTWFuYWdtZW50IERyaXZlciBmb3IgV29sZnNvbiBXTTgzNTAgUE1JQworICogcG1pYy5oICAtLSAgUG93ZXIgTWFuYWdlbWVudCBEcml2ZXIgZm9yIFdvbGZzb24gV004MzUwIFBNSUMKICAqCiAgKiBDb3B5cmlnaHQgMjAwNyBXb2xmc29uIE1pY3JvZWxlY3Ryb25pY3MgUExDCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbS5oIGIvaW5jbHVkZS9saW51eC9tbS5oCmluZGV4IDc2MDZkN2QuLjY5MmRiYWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbW0uaAorKysgYi9pbmNsdWRlL2xpbnV4L21tLmgKQEAgLTYwOCw3ICs2MDgsNyBAQAogI2VuZGlmCiAKIC8qCi0gKiBEZWZpbmUgdGhlIGJpdCBzaGlmdHMgdG8gYWNjZXNzIGVhY2ggc2VjdGlvbi4gIEZvciBub24tZXhpc3RhbnQKKyAqIERlZmluZSB0aGUgYml0IHNoaWZ0cyB0byBhY2Nlc3MgZWFjaCBzZWN0aW9uLiAgRm9yIG5vbi1leGlzdGVudAogICogc2VjdGlvbnMgd2UgZGVmaW5lIHRoZSBzaGlmdCBhcyAwOyB0aGF0IHBsdXMgYSAwIG1hc2sgZW5zdXJlcwogICogdGhlIGNvbXBpbGVyIHdpbGwgb3B0aW1pc2UgYXdheSByZWZlcmVuY2UgdG8gdGhlbS4KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbWMvZHdfbW1jLmggYi9pbmNsdWRlL2xpbnV4L21tYy9kd19tbWMuaAppbmRleCBjMDIwN2E3Li5iZGQ3Y2VlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21tYy9kd19tbWMuaAorKysgYi9pbmNsdWRlL2xpbnV4L21tYy9kd19tbWMuaApAQCAtOTgsNyArOTgsNyBAQAogICogRVZFTlRfREFUQV9DT01QTEVURSBpcyBzZXQgaW4gQHBlbmRpbmdfZXZlbnRzLCBhbGwgZGF0YS1yZWxhdGVkCiAgKiBpbnRlcnJ1cHRzIG11c3QgYmUgZGlzYWJsZWQgYW5kIEBkYXRhX3N0YXR1cyB1cGRhdGVkIHdpdGggYQogICogc25hcHNob3Qgb2YgU1IuIFNpbWlsYXJseSwgYmVmb3JlIEVWRU5UX0NNRF9DT01QTEVURSBpcyBzZXQsIHRoZQotICogQ01EUkRZIGludGVydXB0IG11c3QgYmUgZGlzYWJsZWQgYW5kIEBjbWRfc3RhdHVzIHVwZGF0ZWQgd2l0aCBhCisgKiBDTURSRFkgaW50ZXJydXB0IG11c3QgYmUgZGlzYWJsZWQgYW5kIEBjbWRfc3RhdHVzIHVwZGF0ZWQgd2l0aCBhCiAgKiBzbmFwc2hvdCBvZiBTUiwgYW5kIGJlZm9yZSBFVkVOVF9YRkVSX0NPTVBMRVRFIGNhbiBiZSBzZXQsIHRoZQogICogYnl0ZXNfeGZlcmVkIGZpZWxkIG9mIEBkYXRhIG11c3QgYmUgd3JpdHRlbi4gVGhpcyBpcyBlbnN1cmVkIGJ5CiAgKiB1c2luZyBiYXJyaWVycy4KQEAgLTE3Miw3ICsxNzIsNyBAQAogI2RlZmluZSBEV19NQ0lfUVVJUktfSURNQUNfRFRPCQkJQklUKDApCiAvKiBkZWxheSBuZWVkZWQgYmV0d2VlbiByZXRyaWVzIG9uIHNvbWUgMi4xMWEgaW1wbGVtZW50YXRpb25zICovCiAjZGVmaW5lIERXX01DSV9RVUlSS19SRVRSWV9ERUxBWQkJQklUKDEpCi0vKiBIaWdoIFNwZWVkIENhcGFibGUgLSBTdXBwb3J0cyBIUyBjYXJkcyAodXB0byA1ME1IeikgKi8KKy8qIEhpZ2ggU3BlZWQgQ2FwYWJsZSAtIFN1cHBvcnRzIEhTIGNhcmRzICh1cCB0byA1ME1IeikgKi8KICNkZWZpbmUgRFdfTUNJX1FVSVJLX0hJR0hTUEVFRAkJCUJJVCgyKQogLyogVW5yZWxpYWJsZSBjYXJkIGRldGVjdGlvbiAqLwogI2RlZmluZSBEV19NQ0lfUVVJUktfQlJPS0VOX0NBUkRfREVURUNUSU9OCUJJVCgzKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tcm91dGU2LmggYi9pbmNsdWRlL2xpbnV4L21yb3V0ZTYuaAppbmRleCA5ZDJkZWIyLi5hMzc1OWNiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L21yb3V0ZTYuaAorKysgYi9pbmNsdWRlL2xpbnV4L21yb3V0ZTYuaApAQCAtMjQ5LDcgKzI0OSw3IEBACiAgKiBTdHJ1Y3R1cmUgdXNlZCB0byBjb21tdW5pY2F0ZSBmcm9tIGtlcm5lbCB0byBtdWx0aWNhc3Qgcm91dGVyLgogICogV2UnbGwgb3ZlcmxheSB0aGUgc3RydWN0dXJlIG9udG8gYW4gTUxEIGhlYWRlciAobm90IGFuIElQdjYgaGVkZXIgbGlrZSBpZ21wbXNne30KICAqIHVzZWQgZm9yIElQdjQgaW1wbGVtZW50YXRpb24pLiBUaGlzIGlzIGJlY2F1c2UgdGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSBwYXNzZWQgdmlhIGFuCi0gKiBJUHY2IHJhdyBzb2NrZXQsIG9uIHdpY2ggYW4gYXBwbGljYXRpb24gd2lsbCBvbmx5IHJlY2VpdmVyIHRoZSBwYXlsb2FkIGkuZSB0aGUgZGF0YSBhZnRlcgorICogSVB2NiByYXcgc29ja2V0LCBvbiB3aGljaCBhbiBhcHBsaWNhdGlvbiB3aWxsIG9ubHkgcmVjZWl2ZXIgdGhlIHBheWxvYWQgaS5lIHRoZSBkYXRhIGFmdGVyCiAgKiB0aGUgSVB2NiBoZWFkZXIgYW5kIGFsbCB0aGUgZXh0ZW5zaW9uIGhlYWRlcnMuIChTZWUgc2VjdGlvbiAzIG9mIFJGQyAzNTQyKQogICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL2NmaS5oIGIvaW5jbHVkZS9saW51eC9tdGQvY2ZpLmgKaW5kZXggMGQ4MjNmMi4uZDI0OTI1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvY2ZpLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQvY2ZpLmgKQEAgLTMwOCw3ICszMDgsNyBAQAogCQogCWFkZHIgPSAoY21kX29mcyAqIHR5cGUpICogaW50ZXJsZWF2ZTsKIAotCS8qIE1vZGlmeSB0aGUgdW5sb2NrIGFkZHJlc3MgaWYgd2UgYXJlIGluIGNvbXBhdGlibGl0eSBtb2RlLgorCS8qIE1vZGlmeSB0aGUgdW5sb2NrIGFkZHJlc3MgaWYgd2UgYXJlIGluIGNvbXBhdGliaWxpdHkgbW9kZS4KIAkgKiBGb3IgMTZiaXQgZGV2aWNlcyBvbiA4IGJpdCBidXNzZXMKIAkgKiBhbmQgMzJiaXQgZGV2aWNlcyBvbiAxNiBiaXQgYnVzc2VzCiAJICogc2V0IHRoZSBsb3cgYml0IG9mIHRoZSBhbHRlcm5hdGluZyBiaXQgc2VxdWVuY2Ugb2YgdGhlIGFkZHJlc3MuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmggYi9pbmNsdWRlL2xpbnV4L210ZC9uYW5kLmgKaW5kZXggYWU2N2VmNS4uZDQ0MTkyNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdGQvbmFuZC5oCisrKyBiL2luY2x1ZGUvbGludXgvbXRkL25hbmQuaApAQCAtNDE2LDkgKzQxNiw5IEBACiAgKiBAc2VsZWN0X2NoaXA6CVtSRVBMQUNFQUJMRV0gc2VsZWN0IGNoaXAgbnIKICAqIEBibG9ja19iYWQ6CQlbUkVQTEFDRUFCTEVdIGNoZWNrLCBpZiB0aGUgYmxvY2sgaXMgYmFkCiAgKiBAYmxvY2tfbWFya2JhZDoJW1JFUExBQ0VBQkxFXSBtYXJrIHRoZSBibG9jayBiYWQKLSAqIEBjbWRfY3RybDoJCVtCT0FSRFNQRUNJRklDXSBoYXJkd2FyZXNwZWNpZmljIGZ1bnRpb24gZm9yIGNvbnRyb2xsaW5nCisgKiBAY21kX2N0cmw6CQlbQk9BUkRTUEVDSUZJQ10gaGFyZHdhcmVzcGVjaWZpYyBmdW5jdGlvbiBmb3IgY29udHJvbGxpbmcKICAqCQkJQUxFL0NMRS9uQ0UuIEFsc28gdXNlZCB0byB3cml0ZSBjb21tYW5kIGFuZCBhZGRyZXNzCi0gKiBAaW5pdF9zaXplOgkJW0JPQVJEU1BFQ0lGSUNdIGhhcmR3YXJlc3BlY2lmaWMgZnVudGlvbiBmb3Igc2V0dGluZworICogQGluaXRfc2l6ZToJCVtCT0FSRFNQRUNJRklDXSBoYXJkd2FyZXNwZWNpZmljIGZ1bmN0aW9uIGZvciBzZXR0aW5nCiAgKgkJCW10ZC0+b29ic2l6ZSwgbXRkLT53cml0ZXNpemUgYW5kIHNvIG9uLgogICoJCQlAaWRfZGF0YSBjb250YWlucyB0aGUgOCBieXRlcyB2YWx1ZXMgb2YgTkFORF9DTURfUkVBRElELgogICoJCQlSZXR1cm4gd2l0aCB0aGUgYnVzIHdpZHRoLgpAQCAtNDM3LDcgKzQzNyw3IEBACiAgKiBAZXJhc2VfY21kOgkJW0lOVEVSTl0gZXJhc2UgY29tbWFuZCB3cml0ZSBmdW5jdGlvbiwgc2VsZWN0YWJsZSBkdWUKICAqCQkJdG8gQU5EIHN1cHBvcnQuCiAgKiBAc2Nhbl9iYnQ6CQlbUkVQTEFDRUFCTEVdIGZ1bmN0aW9uIHRvIHNjYW4gYmFkIGJsb2NrIHRhYmxlCi0gKiBAY2hpcF9kZWxheToJCVtCT0FSRFNQRUNJRklDXSBjaGlwIGRlcGVuZGVudCBkZWxheSBmb3IgdHJhbnNmZXJpbmcKKyAqIEBjaGlwX2RlbGF5OgkJW0JPQVJEU1BFQ0lGSUNdIGNoaXAgZGVwZW5kZW50IGRlbGF5IGZvciB0cmFuc2ZlcnJpbmcKICAqCQkJZGF0YSBmcm9tIGFycmF5IHRvIHJlYWQgcmVncyAodFIpLgogICogQHN0YXRlOgkJW0lOVEVSTl0gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIE5BTkQgZGV2aWNlCiAgKiBAb29iX3BvaToJCXBvaXNvbiB2YWx1ZSBidWZmZXIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbXRkL3hpcC5oIGIvaW5jbHVkZS9saW51eC9tdGQveGlwLmgKaW5kZXggMzZlZmNiYS4uYWJlZDRkZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tdGQveGlwLmgKKysrIGIvaW5jbHVkZS9saW51eC9tdGQveGlwLmgKQEAgLTUxLDcgKzUxLDcgQEAKICAqIAlyZXR1cm4gaW4gdXNlY3MgdGhlIGVsYXBzZWQgdGltZWJldHdlZW4gbm93IGFuZCB0aGUgcmVmZXJlbmNlIHggYXMKICAqIAlyZXR1cm5lZCBieSB4aXBfY3VycnRpbWUoKS4KICAqCi0gKiAJbm90ZSAxOiBjb252ZXJ0aW9uIHRvIHVzZWMgY2FuIGJlIGFwcHJveGltYXRlZCwgYXMgbG9uZyBhcyB0aGUKKyAqIAlub3RlIDE6IGNvbnZlcnNpb24gdG8gdXNlYyBjYW4gYmUgYXBwcm94aW1hdGVkLCBhcyBsb25nIGFzIHRoZQogICogCQlyZXR1cm5lZCB2YWx1ZSBpcyA8PSB0aGUgcmVhbCBlbGFwc2VkIHRpbWUuCiAgKiAJbm90ZSAyOiB0aGlzIHNob3VsZCBiZSBhYmxlIHRvIGNvcGUgd2l0aCBhIGZldyBzZWNvbmRzIHdpdGhvdXQKICAqIAkJb3ZlcmZsb3dpbmcuCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fZ3JlLmggYi9pbmNsdWRlL2xpbnV4L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fZ3JlLmgKaW5kZXggMmExMGVmZC4uNmEwNjY0YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX2dyZS5oCisrKyBiL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19ncmUuaApAQCAtNjAsNyArNjAsNyBAQAogCV9fYmUxNiBwYXlsb2FkX2xlbjsJLyogc2l6ZSBvZiBwcHAgcGF5bG9hZCwgbm90IGluYy4gZ3JlIGhlYWRlciAqLwogCV9fYmUxNiBjYWxsX2lkOwkJLyogcGVlcidzIGNhbGxfaWQgZm9yIHRoaXMgc2Vzc2lvbiAqLwogCV9fYmUzMiBzZXE7CQkvKiBzZXF1ZW5jZSBudW1iZXIuICBQcmVzZW50IGlmIFM9PTEgKi8KLQlfX2JlMzIgYWNrOwkJLyogc2VxIG51bWJlciBvZiBoaWdoZXN0IHBhY2tldCByZWNpZXZlZCBieSAqLworCV9fYmUzMiBhY2s7CQkvKiBzZXEgbnVtYmVyIG9mIGhpZ2hlc3QgcGFja2V0IHJlY2VpdmVkIGJ5ICovCiAJCQkJLyogIHNlbmRlciBpbiB0aGlzIHNlc3Npb24gKi8KIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmV0ZmlsdGVyX2JyaWRnZS9lYnRhYmxlcy5oIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidGFibGVzLmgKaW5kZXggMWM2ZjBjNS4uODc5N2VkMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidGFibGVzLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZXRmaWx0ZXJfYnJpZGdlL2VidGFibGVzLmgKQEAgLTkyLDcgKzkyLDcgQEAKIAogLyogVGhpcyBpcyBhIGhhY2sgdG8gbWFrZSBhIGRpZmZlcmVuY2UgYmV0d2VlbiBhbiBlYnRfZW50cnkgc3RydWN0IGFuZCBhbgogICogZWJ0X2VudHJpZXMgc3RydWN0IHdoZW4gdHJhdmVyc2luZyB0aGUgZW50cmllcyBmcm9tIHN0YXJ0IHRvIGVuZC4KLSAqIFVzaW5nIHRoaXMgc2ltcGxpZmllcyB0aGUgY29kZSBhbG90LCB3aGlsZSBzdGlsbCBiZWluZyBhYmxlIHRvIHVzZQorICogVXNpbmcgdGhpcyBzaW1wbGlmaWVzIHRoZSBjb2RlIGEgbG90LCB3aGlsZSBzdGlsbCBiZWluZyBhYmxlIHRvIHVzZQogICogZWJ0X2VudHJpZXMuCiAgKiBDb250cmFyeSwgaXB0YWJsZXMgZG9lc24ndCB1c2Ugc29tZXRoaW5nIGxpa2UgZWJ0X2VudHJpZXMgYW5kIHRoZXJlZm9yZSB1c2VzCiAgKiBkaWZmZXJlbnQgdGVjaG5pcXVlcyBmb3IgbmFtaW5nIHRoZSBwb2xpY3kgYW5kIHN1Y2guIFNvLCBpcHRhYmxlcyBkb2Vzbid0CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25mczQuaCBiL2luY2x1ZGUvbGludXgvbmZzNC5oCmluZGV4IGI1MjhmNmQuLjE3OGZhZmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmZzNC5oCisrKyBiL2luY2x1ZGUvbGludXgvbmZzNC5oCkBAIC0zNTksNyArMzU5LDcgQEAKIAkJCQkJCS8qIEVycm9yIDEwMDczIGlzIHVudXNlZC4gKi8KIAlORlM0RVJSX0NMSUVOVElEX0JVU1kJPSAxMDA3NCwJLyogY2xpZW50aWQgaGFzIHN0YXRlICovCiAJTkZTNEVSUl9QTkZTX0lPX0hPTEUJPSAxMDA3NSwJLyogSU8gdG8gX1NQQVJTRSBmaWxlIGhvbGUgKi8KLQlORlM0RVJSX1NFUV9GQUxTRV9SRVRSWQk9IDEwMDc2LAkvKiByZXRyeSBub3Qgb3JpZ2lvbmFsICovCisJTkZTNEVSUl9TRVFfRkFMU0VfUkVUUlkJPSAxMDA3NiwJLyogcmV0cnkgbm90IG9yaWdpbmFsICovCiAJTkZTNEVSUl9CQURfSElHSF9TTE9UCT0gMTAwNzcsCS8qIHNlcXVlbmNlIGFyZyBiYWQgKi8KIAlORlM0RVJSX0RFQURTRVNTSU9OCT0gMTAwNzgsCS8qIHBlcnNpc3RlbnQgc2Vzc2lvbiBkZWFkICovCiAJTkZTNEVSUl9FTkNSX0FMR19VTlNVUFAgPSAxMDA3OSwJLyogU1NWIGFsZyBtaXNtYXRjaCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9uZnNkL2V4cG9ydC5oIGIvaW5jbHVkZS9saW51eC9uZnNkL2V4cG9ydC5oCmluZGV4IGJkMzE2MTUuLjg0MDU4ZWMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmZzZC9leHBvcnQuaAorKysgYi9pbmNsdWRlL2xpbnV4L25mc2QvZXhwb3J0LmgKQEAgLTgwLDcgKzgwLDcgQEAKIAogLyoKICAqIFdlIGtlZXAgYW4gYXJyYXkgb2YgcHNldWRvZmxhdm9ycyB3aXRoIHRoZSBleHBvcnQsIGluIG9yZGVyIGZyb20gbW9zdAotICogdG8gbGVhc3QgcHJlZmVycmVkLiAgRm9yIHRoZSBmb3JzZWVhYmxlIGZ1dHVyZSwgd2UgZG9uJ3QgZXhwZWN0IG1vcmUKKyAqIHRvIGxlYXN0IHByZWZlcnJlZC4gIEZvciB0aGUgZm9yZXNlZWFibGUgZnV0dXJlLCB3ZSBkb24ndCBleHBlY3QgbW9yZQogICogdGhhbiB0aGUgZWlnaHQgcHNldWRvZmxhdm9ycyBudWxsLCB1bml4LCBrcmI1LCBrcmI1aSwga3JiNXAsIHNrcG0zLAogICogc3BrbTNpLCBhbmQgc3BrbTNwIChhbmQgdXNpbmcgYWxsIDggYXQgb25jZSBzaG91bGQgYmUgcmFyZSkuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbmZzZC9uZnNmaC5oIGIvaW5jbHVkZS9saW51eC9uZnNkL25mc2ZoLmgKaW5kZXggODBkNTViYi4uZjc2ZDgwYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9uZnNkL25mc2ZoLmgKKysrIGIvaW5jbHVkZS9saW51eC9uZnNkL25mc2ZoLmgKQEAgLTQ5LDcgKzQ5LDcgQEAKICAqCiAgKiBUaGUgYXV0aF90eXBlIGZpZWxkIHNwZWNpZmllcyBob3cgdGhlIGZpbGVoYW5kbGUgY2FuIGJlIGF1dGhlbnRpY2F0ZWQKICAqIFRoaXMgbWlnaHQgYWxsb3cgYSBmaWxlIHRvIGJlIGNvbmZpcm1lZCB0byBiZSBpbiBhIHdyaXRhYmxlIHBhcnQgb2YgYQotICogZmlsZXRyZWUgd2l0aG91dCBjaGVja2luZyB0aGUgcGF0aCBmcm9tIGl0IHVwdG8gdGhlIHJvb3QuCisgKiBmaWxldHJlZSB3aXRob3V0IGNoZWNraW5nIHRoZSBwYXRoIGZyb20gaXQgdXAgdG8gdGhlIHJvb3QuCiAgKiBDdXJyZW50IHZhbHVlczoKICAqICAgICAwICAtIE5vIGF1dGhlbnRpY2F0aW9uLiAgZmJfYXV0aCBpcyAwIGJ5dGVzIGxvbmcKICAqIFBvc3NpYmxlIGZ1dHVyZSB2YWx1ZXM6CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25sODAyMTEuaCBiL2luY2x1ZGUvbGludXgvbmw4MDIxMS5oCmluZGV4IDMwMDIyMTguLmJiZmExMDkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvbmw4MDIxMS5oCisrKyBiL2luY2x1ZGUvbGludXgvbmw4MDIxMS5oCkBAIC00MTQsNyArNDE0LDcgQEAKICAqIEBfX05MODAyMTFfQ01EX0FGVEVSX0xBU1Q6IGludGVybmFsIHVzZQogICovCiBlbnVtIG5sODAyMTFfY29tbWFuZHMgewotLyogZG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBvciBhZGQgYW55dGhpbmcgaW5iZXR3ZWVuLCB0aGlzIGlzIEFCSSEgKi8KKy8qIGRvbid0IGNoYW5nZSB0aGUgb3JkZXIgb3IgYWRkIGFueXRoaW5nIGJldHdlZW4sIHRoaXMgaXMgQUJJISAqLwogCU5MODAyMTFfQ01EX1VOU1BFQywKIAogCU5MODAyMTFfQ01EX0dFVF9XSVBIWSwJCS8qIGNhbiBkdW1wICovCkBAIC04NjAsNyArODYwLDcgQEAKICAqCVRoaXMgY2FuIGJlIHVzZWQgdG8gbWFzayBvdXQgYW50ZW5uYXMgd2hpY2ggYXJlIG5vdCBhdHRhY2hlZCBvciBzaG91bGQKICAqCW5vdCBiZSB1c2VkIGZvciByZWNlaXZpbmcuIElmIGFuIGFudGVubmEgaXMgbm90IHNlbGVjdGVkIGluIHRoaXMgYml0bWFwCiAgKgl0aGUgaGFyZHdhcmUgc2hvdWxkIG5vdCBiZSBjb25maWd1cmVkIHRvIHJlY2VpdmUgb24gdGhpcyBhbnRlbm5hLgotICoJRm9yIGEgbW9yZSBkZXRhaWxlZCBkZXNjcmlwdG9uIHNlZSBATkw4MDIxMV9BVFRSX1dJUEhZX0FOVEVOTkFfVFguCisgKglGb3IgYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIHNlZSBATkw4MDIxMV9BVFRSX1dJUEhZX0FOVEVOTkFfVFguCiAgKgogICogQE5MODAyMTFfQVRUUl9XSVBIWV9BTlRFTk5BX0FWQUlMX1RYOiBCaXRtYXAgb2YgYW50ZW5uYXMgd2hpY2ggYXJlIGF2YWlsYWJsZQogICoJZm9yIGNvbmZpZ3VyYXRpb24gYXMgVFggYW50ZW5uYXMgdmlhIHRoZSBhYm92ZSBwYXJhbWV0ZXJzLgpAQCAtODkxLDcgKzg5MSw3IEBACiAgKiBAX19OTDgwMjExX0FUVFJfQUZURVJfTEFTVDogaW50ZXJuYWwgdXNlCiAgKi8KIGVudW0gbmw4MDIxMV9hdHRycyB7Ci0vKiBkb24ndCBjaGFuZ2UgdGhlIG9yZGVyIG9yIGFkZCBhbnl0aGluZyBpbmJldHdlZW4sIHRoaXMgaXMgQUJJISAqLworLyogZG9uJ3QgY2hhbmdlIHRoZSBvcmRlciBvciBhZGQgYW55dGhpbmcgYmV0d2VlbiwgdGhpcyBpcyBBQkkhICovCiAJTkw4MDIxMV9BVFRSX1VOU1BFQywKIAogCU5MODAyMTFfQVRUUl9XSVBIWSwKQEAgLTE0MTksNyArMTQxOSw3IEBACiAgKiAJODAyLjExIGNvdW50cnkgaW5mb3JtYXRpb24gZWxlbWVudCB3aXRoIHJlZ3VsYXRvcnkgaW5mb3JtYXRpb24gaXQKICAqIAl0aGlua3Mgd2Ugc2hvdWxkIGNvbnNpZGVyLiBjZmc4MDIxMSBvbmx5IHByb2Nlc3NlcyB0aGUgY291bnRyeQogICoJY29kZSBmcm9tIHRoZSBJRSwgYW5kIHJlbGllcyBvbiB0aGUgcmVndWxhdG9yeSBkb21haW4gaW5mb3JtYXRpb24KLSAqCXN0cnVjdHVyZSBwYXNlZCBieSB1c2Vyc3BhY2UgKENSREEpIGZyb20gb3VyIHdpcmVsZXNzLXJlZ2RiLgorICoJc3RydWN0dXJlIHBhc3NlZCBieSB1c2Vyc3BhY2UgKENSREEpIGZyb20gb3VyIHdpcmVsZXNzLXJlZ2RiLgogICoJSWYgYSBjaGFubmVsIGlzIGVuYWJsZWQgYnV0IHRoZSBjb3VudHJ5IGNvZGUgaW5kaWNhdGVzIGl0IHNob3VsZAogICoJYmUgZGlzYWJsZWQgd2UgZGlzYWJsZSB0aGUgY2hhbm5lbCBhbmQgcmUtZW5hYmxlIGl0IHVwb24gZGlzYXNzb2NpYXRpb24uCiAgKi8KQEAgLTE1OTgsNyArMTU5OCw3IEBACiAgKiBATkw4MDIxMV9NRVNIQ09ORl9SRVRSWV9USU1FT1VUOiBzcGVjaWZpZXMgdGhlIGluaXRpYWwgcmV0cnkgdGltZW91dCBpbgogICogbWlsbGlzZWNvbmQgdW5pdHMsIHVzZWQgYnkgdGhlIFBlZXIgTGluayBPcGVuIG1lc3NhZ2UKICAqCi0gKiBATkw4MDIxMV9NRVNIQ09ORl9DT05GSVJNX1RJTUVPVVQ6IHNwZWNpZmllcyB0aGUgaW5pdGFsIGNvbmZpcm0gdGltZW91dCwgaW4KKyAqIEBOTDgwMjExX01FU0hDT05GX0NPTkZJUk1fVElNRU9VVDogc3BlY2lmaWVzIHRoZSBpbml0aWFsIGNvbmZpcm0gdGltZW91dCwgaW4KICAqIG1pbGxpc2Vjb25kIHVuaXRzLCB1c2VkIGJ5IHRoZSBwZWVyIGxpbmsgbWFuYWdlbWVudCB0byBjbG9zZSBhIHBlZXIgbGluawogICoKICAqIEBOTDgwMjExX01FU0hDT05GX0hPTERJTkdfVElNRU9VVDogc3BlY2lmaWVzIHRoZSBob2xkaW5nIHRpbWVvdXQsIGluCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmggYi9pbmNsdWRlL2xpbnV4L25vdGlmaWVyLmgKaW5kZXggMjAyNmY5ZS4uNjIxZGZhMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9ub3RpZmllci5oCisrKyBiL2luY2x1ZGUvbGludXgvbm90aWZpZXIuaApAQCAtMjM3LDcgKzIzNyw3IEBACiAJCQkJCSogZW5hYmxpbmcgaW50ZXJydXB0cy4gTXVzdCBub3Qgc2xlZXAsCiAJCQkJCSogbXVzdCBub3QgZmFpbCAqLwogCi0vKiBVc2VkIGZvciBDUFUgaG90cGx1ZyBldmVudHMgb2NjdXJpbmcgd2hpbGUgdGFza3MgYXJlIGZyb3plbiBkdWUgdG8gYSBzdXNwZW5kCisvKiBVc2VkIGZvciBDUFUgaG90cGx1ZyBldmVudHMgb2NjdXJyaW5nIHdoaWxlIHRhc2tzIGFyZSBmcm96ZW4gZHVlIHRvIGEgc3VzcGVuZAogICogb3BlcmF0aW9uIGluIHByb2dyZXNzCiAgKi8KICNkZWZpbmUgQ1BVX1RBU0tTX0ZST1pFTgkweDAwMTAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvb21hcDNpc3AuaCBiL2luY2x1ZGUvbGludXgvb21hcDNpc3AuaAppbmRleCAxNTA4MjJiLi5iNjExMWY4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L29tYXAzaXNwLmgKKysrIGIvaW5jbHVkZS9saW51eC9vbWFwM2lzcC5oCkBAIC0yNTAsNyArMjUwLDcgQEAKIC8qIENvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIEhvcml6b250YWwgTWVkaWFuIEZpbHRlciAqLwogc3RydWN0IG9tYXAzaXNwX2gzYV9hZl9obWYgewogCV9fdTggZW5hYmxlOwkvKiBTdGF0dXMgb2YgSG9yaXpvbnRhbCBNZWRpYW4gRmlsdGVyICovCi0JX191OCB0aHJlc2hvbGQ7CS8qIFRocmVzaGhvbGQgVmFsdWUgZm9yIEhvcml6b250YWwgTWVkaWFuIEZpbHRlciAqLworCV9fdTggdGhyZXNob2xkOwkvKiBUaHJlc2hvbGQgVmFsdWUgZm9yIEhvcml6b250YWwgTWVkaWFuIEZpbHRlciAqLwogfTsKIAogLyogQ29udGFpbnMgdGhlIGluZm9ybWF0aW9uIHJlZ2FyZGluZyB0aGUgSUlSIEZpbHRlcnMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGFnZV9jZ3JvdXAuaCBiL2luY2x1ZGUvbGludXgvcGFnZV9jZ3JvdXAuaAppbmRleCBmNWRlMjFkLi45NjFlY2M3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BhZ2VfY2dyb3VwLmgKKysrIGIvaW5jbHVkZS9saW51eC9wYWdlX2Nncm91cC5oCkBAIC0xMzgsNyArMTM4LDcgQEAKIAogI2RlZmluZSBQQ0dfQVJSQVlJRF9PRkZTRVQJKEJJVFNfUEVSX0xPTkcgLSBQQ0dfQVJSQVlJRF9XSURUSCkKIC8qCi0gKiBaZXJvIHRoZSBzaGlmdCBjb3VudCBmb3Igbm9uLWV4aXN0YW50IGZpZWxkcywgdG8gcHJldmVudCBjb21waWxlcgorICogWmVybyB0aGUgc2hpZnQgY291bnQgZm9yIG5vbi1leGlzdGVudCBmaWVsZHMsIHRvIHByZXZlbnQgY29tcGlsZXIKICAqIHdhcm5pbmdzIGFuZCBlbnN1cmUgcmVmZXJlbmNlcyBhcmUgb3B0aW1pemVkIGF3YXkuCiAgKi8KICNkZWZpbmUgUENHX0FSUkFZSURfU0hJRlQJKFBDR19BUlJBWUlEX09GRlNFVCAqIChQQ0dfQVJSQVlJRF9XSURUSCAhPSAwKSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpX3JlZ3MuaCBiL2luY2x1ZGUvbGludXgvcGNpX3JlZ3MuaAppbmRleCA1YjdlNmIxLi5iZTAxMzgwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaV9yZWdzLmgKKysrIGIvaW5jbHVkZS9saW51eC9wY2lfcmVncy5oCkBAIC0yMjMsNyArMjIzLDcgQEAKICNkZWZpbmUgIFBDSV9QTV9DQVBfUE1FX0NMT0NLCTB4MDAwOAkvKiBQTUUgY2xvY2sgcmVxdWlyZWQgKi8KICNkZWZpbmUgIFBDSV9QTV9DQVBfUkVTRVJWRUQgICAgMHgwMDEwICAvKiBSZXNlcnZlZCBmaWVsZCAqLwogI2RlZmluZSAgUENJX1BNX0NBUF9EU0kJCTB4MDAyMAkvKiBEZXZpY2Ugc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gKi8KLSNkZWZpbmUgIFBDSV9QTV9DQVBfQVVYX1BPV0VSCTB4MDFDMAkvKiBBdXhpbGxpYXJ5IHBvd2VyIHN1cHBvcnQgbWFzayAqLworI2RlZmluZSAgUENJX1BNX0NBUF9BVVhfUE9XRVIJMHgwMUMwCS8qIEF1eGlsaWFyeSBwb3dlciBzdXBwb3J0IG1hc2sgKi8KICNkZWZpbmUgIFBDSV9QTV9DQVBfRDEJCTB4MDIwMAkvKiBEMSBwb3dlciBzdGF0ZSBzdXBwb3J0ICovCiAjZGVmaW5lICBQQ0lfUE1fQ0FQX0QyCQkweDA0MDAJLyogRDIgcG93ZXIgc3RhdGUgc3VwcG9ydCAqLwogI2RlZmluZSAgUENJX1BNX0NBUF9QTUUJCTB4MDgwMAkvKiBQTUUgcGluIHN1cHBvcnRlZCAqLwpAQCAtNDM1LDcgKzQzNSw3IEBACiAjZGVmaW5lICBQQ0lfRVhQX0xOS0NBUF9MMFNFTAkweDAwMDA3MDAwIC8qIEwwcyBFeGl0IExhdGVuY3kgKi8KICNkZWZpbmUgIFBDSV9FWFBfTE5LQ0FQX0wxRUwJMHgwMDAzODAwMCAvKiBMMSBFeGl0IExhdGVuY3kgKi8KICNkZWZpbmUgIFBDSV9FWFBfTE5LQ0FQX0NMS1BNCTB4MDAwNDAwMDAgLyogTDEgQ2xvY2sgUG93ZXIgTWFuYWdlbWVudCAqLwotI2RlZmluZSAgUENJX0VYUF9MTktDQVBfU0RFUkMJMHgwMDA4MDAwMCAvKiBTdXByaXNlIERvd24gRXJyb3IgUmVwb3J0aW5nIENhcGFibGUgKi8KKyNkZWZpbmUgIFBDSV9FWFBfTE5LQ0FQX1NERVJDCTB4MDAwODAwMDAgLyogU3VycHJpc2UgRG93biBFcnJvciBSZXBvcnRpbmcgQ2FwYWJsZSAqLwogI2RlZmluZSAgUENJX0VYUF9MTktDQVBfRExMTEFSQwkweDAwMTAwMDAwIC8qIERhdGEgTGluayBMYXllciBMaW5rIEFjdGl2ZSBSZXBvcnRpbmcgQ2FwYWJsZSAqLwogI2RlZmluZSAgUENJX0VYUF9MTktDQVBfTEJOQwkweDAwMjAwMDAwIC8qIExpbmsgQmFuZHdpZHRoIE5vdGlmaWNhdGlvbiBDYXBhYmlsaXR5ICovCiAjZGVmaW5lICBQQ0lfRVhQX0xOS0NBUF9QTgkweGZmMDAwMDAwIC8qIFBvcnQgTnVtYmVyICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BlcmZfZXZlbnQuaCBiL2luY2x1ZGUvbGludXgvcGVyZl9ldmVudC5oCmluZGV4IDA0ZDc1YTguLmVlOWYxZTcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGVyZl9ldmVudC5oCisrKyBiL2luY2x1ZGUvbGludXgvcGVyZl9ldmVudC5oCkBAIC02NjIsNyArNjYyLDcgQEAKIAlpbnQgICgqY29tbWl0X3R4bikJKHN0cnVjdCBwbXUgKnBtdSk7IC8qIG9wdGlvbmFsICovCiAJLyoKIAkgKiBXaWxsIGNhbmNlbCB0aGUgdHJhbnNhY3Rpb24sIGFzc3VtZXMgLT5kZWwoKSBpcyBjYWxsZWQKLQkgKiBmb3IgZWFjaCBzdWNjZXNzZnVsbCAtPmFkZCgpIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24uCisJICogZm9yIGVhY2ggc3VjY2Vzc2Z1bCAtPmFkZCgpIGR1cmluZyB0aGUgdHJhbnNhY3Rpb24uCiAJICovCiAJdm9pZCAoKmNhbmNlbF90eG4pCShzdHJ1Y3QgcG11ICpwbXUpOyAvKiBvcHRpb25hbCAqLwogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGlkLmggYi9pbmNsdWRlL2xpbnV4L3BpZC5oCmluZGV4IGVmY2VkYTAuLjMxYWZiN2UgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGlkLmgKKysrIGIvaW5jbHVkZS9saW51eC9waWQuaApAQCAtMjEsNyArMjEsNyBAQAogICogcXVpY2tseSBmcm9tIHRoZSBudW1lcmljIHBpZCB2YWx1ZS4gIFRoZSBhdHRhY2hlZCBwcm9jZXNzZXMgbWF5IGJlCiAgKiBxdWlja2x5IGFjY2Vzc2VkIGJ5IGZvbGxvd2luZyBwb2ludGVycyBmcm9tIHN0cnVjdCBwaWQuCiAgKgotICogU3RvcmluZyBwaWRfdCB2YWx1ZXMgaW4gdGhlIGtlcm5lbCBhbmQgcmVmZXJpbmcgdG8gdGhlbSBsYXRlciBoYXMgYQorICogU3RvcmluZyBwaWRfdCB2YWx1ZXMgaW4gdGhlIGtlcm5lbCBhbmQgcmVmZXJyaW5nIHRvIHRoZW0gbGF0ZXIgaGFzIGEKICAqIHByb2JsZW0uICBUaGUgcHJvY2VzcyBvcmlnaW5hbGx5IHdpdGggdGhhdCBwaWQgbWF5IGhhdmUgZXhpdGVkIGFuZCB0aGUKICAqIHBpZCBhbGxvY2F0b3Igd3JhcHBlZCwgYW5kIGFub3RoZXIgcHJvY2VzcyBjb3VsZCBoYXZlIGNvbWUgYWxvbmcKICAqIGFuZCBiZWVuIGFzc2lnbmVkIHRoYXQgcGlkLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wa3Rfc2NoZWQuaCBiL2luY2x1ZGUvbGludXgvcGt0X3NjaGVkLmgKaW5kZXggYjEwMzJhMy4uM2EwMmUwMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wa3Rfc2NoZWQuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oCkBAIC0yMjMsNyArMjIzLDcgQEAKIAlfX3UzMgkJbGltaXQ7ICAgICAgICAvKiBIQVJEIG1heGltYWwgcXVldWUgbGVuZ3RoIChieXRlcykgICAgKi8KIAlfX3UzMgkJcXRoX21pbjsgICAgICAvKiBNaW4gYXZlcmFnZSBsZW5ndGggdGhyZXNob2xkIChieXRlcykgKi8KIAlfX3UzMgkJcXRoX21heDsgICAgICAvKiBNYXggYXZlcmFnZSBsZW5ndGggdGhyZXNob2xkIChieXRlcykgKi8KLQlfX3UzMgkJRFA7ICAgICAgICAgICAvKiB1cHRvIDJeMzIgRFBzICovCisJX191MzIJCURQOyAgICAgICAgICAgLyogdXAgdG8gMl4zMiBEUHMgKi8KIAlfX3UzMgkJYmFja2xvZzsKIAlfX3UzMgkJcWF2ZTsKIAlfX3UzMgkJZm9yY2VkOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wb2xsLmggYi9pbmNsdWRlL2xpbnV4L3BvbGwuaAppbmRleCAxYTJjY2Q2Li5jZjQwMDEwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BvbGwuaAorKysgYi9pbmNsdWRlL2xpbnV4L3BvbGwuaApAQCAtODIsNyArODIsNyBAQAogfQogCiAvKgotICogU2NhbGVhYmxlIHZlcnNpb24gb2YgdGhlIGZkX3NldC4KKyAqIFNjYWxhYmxlIHZlcnNpb24gb2YgdGhlIGZkX3NldC4KICAqLwogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmggYi9pbmNsdWRlL2xpbnV4L3ByZWZldGNoLmgKaW5kZXggYWY3YzM2YS4uYTNiZmJkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wcmVmZXRjaC5oCisrKyBiL2luY2x1ZGUvbGludXgvcHJlZmV0Y2guaApAQCAtMjksNyArMjksNyBAQAogCXByZWZldGNodyh4KQktIHByZWZldGNoZXMgdGhlIGNhY2hlbGluZSBhdCAieCIgZm9yIHdyaXRlCiAJc3Bpbl9sb2NrX3ByZWZldGNoKHgpIC0gcHJlZmV0Y2hlcyB0aGUgc3BpbmxvY2sgKnggZm9yIHRha2luZwogCQotCXRoZXJlIGlzIGFsc28gUFJFRkVUQ0hfU1RSSURFIHdoaWNoIGlzIHRoZSBhcmNoaXRlY3VyZS1wcmVmZXJlZCAKKwl0aGVyZSBpcyBhbHNvIFBSRUZFVENIX1NUUklERSB3aGljaCBpcyB0aGUgYXJjaGl0ZWN1cmUtcHJlZmVycmVkIAogCSJsb29rYWhlYWQiIHNpemUgZm9yIHByZWZldGNoaW5nIHN0cmVhbWVkIG9wZXJhdGlvbnMuCiAJCiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9weGEyeHhfc3NwLmggYi9pbmNsdWRlL2xpbnV4L3B4YTJ4eF9zc3AuaAppbmRleCAyZjY5MWU0Li40NDgzNWZiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3B4YTJ4eF9zc3AuaAorKysgYi9pbmNsdWRlL2xpbnV4L3B4YTJ4eF9zc3AuaApAQCAtMTIyLDcgKzEyMiw3IEBACiAjZGVmaW5lIFNTQ1IxX1RTUkUJCSgxIDw8IDIxKQkvKiBUcmFuc21pdCBTZXJ2aWNlIFJlcXVlc3QgRW5hYmxlICovCiAjZGVmaW5lIFNTQ1IxX1JTUkUJCSgxIDw8IDIwKQkvKiBSZWNlaXZlIFNlcnZpY2UgUmVxdWVzdCBFbmFibGUgKi8KICNkZWZpbmUgU1NDUjFfVElOVEUJCSgxIDw8IDE5KQkvKiBSZWNlaXZlciBUaW1lLW91dCBJbnRlcnJ1cHQgZW5hYmxlICovCi0jZGVmaW5lIFNTQ1IxX1BJTlRFCQkoMSA8PCAxOCkJLyogUGVyaXBoZXJhbCBUcmFpbGluZyBCeXRlIEludGVydXB0IEVuYWJsZSAqLworI2RlZmluZSBTU0NSMV9QSU5URQkJKDEgPDwgMTgpCS8qIFBlcmlwaGVyYWwgVHJhaWxpbmcgQnl0ZSBJbnRlcnJ1cHQgRW5hYmxlICovCiAjZGVmaW5lIFNTQ1IxX0lGUwkJKDEgPDwgMTYpCS8qIEludmVydCBGcmFtZSBTaWduYWwgKi8KICNkZWZpbmUgU1NDUjFfU1RSRgkJKDEgPDwgMTUpCS8qIFNlbGVjdCBGSUZPIG9yIEVGV1IgKi8KICNkZWZpbmUgU1NDUjFfRUZXUgkJKDEgPDwgMTQpCS8qIEVuYWJsZSBGSUZPIFdyaXRlL1JlYWQgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmFpZC9tZF9wLmggYi9pbmNsdWRlL2xpbnV4L3JhaWQvbWRfcC5oCmluZGV4IGZmYTJlZmIuLjc1Y2JmNGYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcmFpZC9tZF9wLmgKKysrIGIvaW5jbHVkZS9saW51eC9yYWlkL21kX3AuaApAQCAtMjUxLDcgKzI1MSw3IEBACiAJX19sZTY0CXV0aW1lOwkJLyogNDAgYml0cyBzZWNvbmQsIDI0IGJ0ZXMgbWljcm9zZWNvbmRzICovCiAJX19sZTY0CWV2ZW50czsJCS8qIGluY3JlbWVudGVkIHdoZW4gc3VwZXJibG9jayB1cGRhdGVkICovCiAJX19sZTY0CXJlc3luY19vZmZzZXQ7CS8qIGRhdGEgYmVmb3JlIHRoaXMgb2Zmc2V0IChmcm9tIGRhdGFfb2Zmc2V0KSBrbm93biB0byBiZSBpbiBzeW5jICovCi0JX19sZTMyCXNiX2NzdW07CS8qIGNoZWNrc3VtIHVwdG8gZGV2c1ttYXhfZGV2XSAqLworCV9fbGUzMglzYl9jc3VtOwkvKiBjaGVja3N1bSB1cCB0byBkZXZzW21heF9kZXZdICovCiAJX19sZTMyCW1heF9kZXY7CS8qIHNpemUgb2YgZGV2c1tdIGFycmF5IHRvIGNvbnNpZGVyICovCiAJX191OAlwYWQzWzY0LTMyXTsJLyogc2V0IHRvIDAgd2hlbiB3cml0aW5nICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnMuaCBiL2luY2x1ZGUvbGludXgvcmVpc2VyZnNfZnMuaAppbmRleCAwYTM4NDJhLi5lY2E3NWRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3JlaXNlcmZzX2ZzLmgKKysrIGIvaW5jbHVkZS9saW51eC9yZWlzZXJmc19mcy5oCkBAIC0xNTU3LDcgKzE1NTcsNyBAQAogLyogV2hlbiBpbnNlcnRpbmcgYW4gaXRlbS4gKi8KICNkZWZpbmUgTV9JTlNFUlQJJ2knCiAvKiBXaGVuIGluc2VydGluZyBpbnRvIChkaXJlY3RvcmllcyBvbmx5KSBvciBhcHBlbmRpbmcgb250byBhbiBhbHJlYWR5Ci0gICBleGlzdGFudCBpdGVtLiAqLworICAgZXhpc3RlbnQgaXRlbS4gKi8KICNkZWZpbmUgTV9QQVNURQkJJ3AnCiAvKiBXaGVuIGRlbGV0aW5nIGFuIGl0ZW0uICovCiAjZGVmaW5lIE1fREVMRVRFCSdkJwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zY2hlZC5oIGIvaW5jbHVkZS9saW51eC9zY2hlZC5oCmluZGV4IDgzYmQyZTIuLjRlYzJjMDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2NoZWQuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NjaGVkLmgKQEAgLTg1NCw3ICs4NTQsNyBAQAogCiAvKgogICogT3B0aW1pc2UgU0QgZmxhZ3MgZm9yIHBvd2VyIHNhdmluZ3M6Ci0gKiBTRF9CQUxBTkNFX05FV0lETEUgaGVscHMgYWdyZXNzaXZlIHRhc2sgY29uc29saWRhdGlvbiBhbmQgcG93ZXIgc2F2aW5ncy4KKyAqIFNEX0JBTEFOQ0VfTkVXSURMRSBoZWxwcyBhZ2dyZXNzaXZlIHRhc2sgY29uc29saWRhdGlvbiBhbmQgcG93ZXIgc2F2aW5ncy4KICAqIEtlZXAgZGVmYXVsdCBTRCBmbGFncyBpZiBzY2hlZF97c210LG1jfV9wb3dlcl9zYXZpbmc9MAogICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2tidWZmLmggYi9pbmNsdWRlL2xpbnV4L3NrYnVmZi5oCmluZGV4IGQ5ZTUyZmEuLmQwYWU5MGEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc2tidWZmLmgKKysrIGIvaW5jbHVkZS9saW51eC9za2J1ZmYuaApAQCAtNDc0LDcgKzQ3NCw3IEBACiBleHRlcm4gdm9pZCBza2JfZHN0X3NldF9ub3JlZihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZHN0X2VudHJ5ICpkc3QpOwogCiAvKioKLSAqIHNrYl9kc3RfaXNfbm9yZWYgLSBUZXN0IGlmIHNrYiBkc3QgaXNudCByZWZjb3VudGVkCisgKiBza2JfZHN0X2lzX25vcmVmIC0gVGVzdCBpZiBza2IgZHN0IGlzbid0IHJlZmNvdW50ZWQKICAqIEBza2I6IGJ1ZmZlcgogICovCiBzdGF0aWMgaW5saW5lIGJvb2wgc2tiX2RzdF9pc19ub3JlZihjb25zdCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zbWM5MXguaCBiL2luY2x1ZGUvbGludXgvc21jOTF4LmgKaW5kZXggYmMyMWRiNS4uNzYxOTliNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zbWM5MXguaAorKysgYi9pbmNsdWRlL2xpbnV4L3NtYzkxeC5oCkBAIC0yMSw3ICsyMSw3IEBACiAjZGVmaW5lIFJQQ19MRURfMTAJKDB4MDIpCS8qIExFRCA9IDEwTWJwcyBsaW5rIGRldGVjdCAqLwogI2RlZmluZSBSUENfTEVEX0ZECSgweDAzKQkvKiBMRUQgPSBGdWxsIER1cGxleCBNb2RlICovCiAjZGVmaW5lIFJQQ19MRURfVFhfUlgJKDB4MDQpCS8qIExFRCA9IFRYIG9yIFJYIHBhY2tldCBvY2N1cnJlZCAqLwotI2RlZmluZSBSUENfTEVEXzEwMAkoMHgwNSkJLyogTEVEID0gMTAwTWJwcyBsaW5rIGRlY3RlY3QgKi8KKyNkZWZpbmUgUlBDX0xFRF8xMDAJKDB4MDUpCS8qIExFRCA9IDEwME1icHMgbGluayBkZXRlY3QgKi8KICNkZWZpbmUgUlBDX0xFRF9UWAkoMHgwNikJLyogTEVEID0gVFggcGFja2V0IG9jY3VycmVkICovCiAjZGVmaW5lIFJQQ19MRURfUlgJKDB4MDcpCS8qIExFRCA9IFJYIHBhY2tldCBvY2N1cnJlZCAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3NvY2tldC5oIGIvaW5jbHVkZS9saW51eC9zb2NrZXQuaAppbmRleCBlZGJiMWQwLi5kMmI1ZTk4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3NvY2tldC5oCisrKyBiL2luY2x1ZGUvbGludXgvc29ja2V0LmgKQEAgLTg4LDcgKzg4LDcgQEAKIH07CiAKIC8qCi0gKglBbmNpbGxpYXJ5IGRhdGEgb2JqZWN0IGluZm9ybWF0aW9uIE1BQ1JPUworICoJQW5jaWxsYXJ5IGRhdGEgb2JqZWN0IGluZm9ybWF0aW9uIE1BQ1JPUwogICoJVGFibGUgNS0xNCBvZiBQT1NJWCAxMDAzLjFnCiAgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zb3VuZGNhcmQuaCBiL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmgKaW5kZXggMTkwNGFmZS4uZmUyMDRmZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zb3VuZGNhcmQuaAorKysgYi9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oCkBAIC0xMjMxLDcgKzEyMzEsNyBAQAogI2RlZmluZSBTRVFfUEFOTklORyhkZXYsIHZvaWNlLCBwb3MpIFNFUV9DT05UUk9MKGRldiwgdm9pY2UsIENUTF9QQU4sIChwb3MrMTI4KSAvIDIpCiAKIC8qCi0gKiBUaW1pbmcgYW5kIHN5bmNyb25pemF0aW9uIG1hY3JvcworICogVGltaW5nIGFuZCBzeW5jaHJvbml6YXRpb24gbWFjcm9zCiAgKi8KIAogI2RlZmluZSBfVElNRVJfRVZFTlQoZXYsIHBhcm0pCQl7X1NFUV9ORUVEQlVGKDgpO1wKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3BpL3NwaWRldi5oIGIvaW5jbHVkZS9saW51eC9zcGkvc3BpZGV2LmgKaW5kZXggYmYwNTcwYS4uNTJkOWVkMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zcGkvc3BpZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9zcGkvc3BpZGV2LmgKQEAgLTY2LDcgKzY2LDcgQEAKICAqIGFyZSBpbiBhIGRpZmZlcmVudCBhZGRyZXNzIHNwYWNlIChhbmQgbWF5IGJlIG9mIGRpZmZlcmVudCBzaXplcyBpbiBzb21lCiAgKiBjYXNlcywgc3VjaCBhcyAzMi1iaXQgaTM4NiB1c2Vyc3BhY2Ugb3ZlciBhIDY0LWJpdCB4ODZfNjQga2VybmVsKS4KICAqIFplcm8taW5pdGlhbGl6ZSB0aGUgc3RydWN0dXJlLCBpbmNsdWRpbmcgY3VycmVudGx5IHVudXNlZCBmaWVsZHMsIHRvCi0gKiBhY2NvbW9kYXRlIHBvdGVudGlhbCBmdXR1cmUgdXBkYXRlcy4KKyAqIGFjY29tbW9kYXRlIHBvdGVudGlhbCBmdXR1cmUgdXBkYXRlcy4KICAqCiAgKiBTUElfSU9DX01FU1NBR0UgZ2l2ZXMgdXNlcnNwYWNlIHRoZSBlcXVpdmFsZW50IG9mIGtlcm5lbCBzcGlfc3luYygpLgogICogUGFzcyBpdCBhbiBhcnJheSBvZiByZWxhdGVkIHRyYW5zZmVycywgdGhleSdsbCBleGVjdXRlIHRvZ2V0aGVyLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zcGlubG9jay5oIGIvaW5jbHVkZS9saW51eC9zcGlubG9jay5oCmluZGV4IDgwZTUzNTguLjBiMjJkNTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3BpbmxvY2suaAorKysgYi9pbmNsdWRlL2xpbnV4L3NwaW5sb2NrLmgKQEAgLTgxLDcgKzgxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9zcGlubG9ja190eXBlcy5oPgogCiAvKgotICogUHVsbCB0aGUgYXJjaF9zcGluKigpIGZ1bmN0aW9ucy9kZWNsYXJhdGlvbnMgKFVQLW5vbmRlYnVnIGRvZXNudCBuZWVkIHRoZW0pOgorICogUHVsbCB0aGUgYXJjaF9zcGluKigpIGZ1bmN0aW9ucy9kZWNsYXJhdGlvbnMgKFVQLW5vbmRlYnVnIGRvZXNuJ3QgbmVlZCB0aGVtKToKICAqLwogI2lmZGVmIENPTkZJR19TTVAKICMgaW5jbHVkZSA8YXNtL3NwaW5sb2NrLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N0bW1hYy5oIGIvaW5jbHVkZS9saW51eC9zdG1tYWMuaAppbmRleCBlMTAzNTI5Li5mMjkxOTdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N0bW1hYy5oCisrKyBiL2luY2x1ZGUvbGludXgvc3RtbWFjLmgKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgX19TVE1NQUNfUExBVEZPUk1fREFUQQogI2RlZmluZSBfX1NUTU1BQ19QTEFURk9STV9EQVRBCiAKLS8qIHBsYXRmcm9tIGRhdGEgZm9yIHBsYXRmcm9tIGRldmljZSBzdHJ1Y3R1cmUncyBwbGF0ZnJvbV9kYXRhIGZpZWxkICovCisvKiBwbGF0Zm9ybSBkYXRhIGZvciBwbGF0Zm9ybSBkZXZpY2Ugc3RydWN0dXJlJ3MgcGxhdGZvcm1fZGF0YSBmaWVsZCAqLwogCiAvKiBQcml2YXRlIGRhdGEgZm9yIHRoZSBTVE0gb24tYm9hcmQgZXRoZXJuZXQgZHJpdmVyICovCiBzdHJ1Y3QgcGxhdF9zdG1tYWNlbmV0X2RhdGEgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zdG9wX21hY2hpbmUuaCBiL2luY2x1ZGUvbGludXgvc3RvcF9tYWNoaW5lLmgKaW5kZXggMTgwODk2MC4uMDkyZGM5YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zdG9wX21hY2hpbmUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3N0b3BfbWFjaGluZS5oCkBAIC0xMDUsNyArMTA1LDcgQEAKICAqIEBjcHVzOiB0aGUgY3B1cyB0byBydW4gdGhlIEBmbigpIG9uIChOVUxMID0gYW55IG9ubGluZSBjcHUpCiAgKgogICogRGVzY3JpcHRpb246IFRoaXMgY2F1c2VzIGEgdGhyZWFkIHRvIGJlIHNjaGVkdWxlZCBvbiBldmVyeSBjcHUsCi0gKiBlYWNoIG9mIHdoaWNoIGRpc2FibGVzIGludGVycnVwdHMuICBUaGUgcmVzdWx0IGlzIHRoYXQgbm9vbmUgaXMKKyAqIGVhY2ggb2Ygd2hpY2ggZGlzYWJsZXMgaW50ZXJydXB0cy4gIFRoZSByZXN1bHQgaXMgdGhhdCBubyBvbmUgaXMKICAqIGhvbGRpbmcgYSBzcGlubG9jayBvciBpbnNpZGUgYW55IG90aGVyIHByZWVtcHQtZGlzYWJsZWQgcmVnaW9uIHdoZW4KICAqIEBmbigpIHJ1bnMuCiAgKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9zdW5ycGMvY2FjaGUuaCBiL2luY2x1ZGUvbGludXgvc3VucnBjL2NhY2hlLmgKaW5kZXggNzg5OGVhMS4uOGQyZWVmMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9zdW5ycGMvY2FjaGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3N1bnJwYy9jYWNoZS5oCkBAIC0zNSwxMCArMzUsMTAgQEAKICAqIEVhY2ggY2FjaGUgbXVzdCBiZSByZWdpc3RlcmVkIHNvIHRoYXQgaXQgY2FuIGJlIGNsZWFuZWQgcmVndWxhcmx5LgogICogV2hlbiB0aGUgY2FjaGUgaXMgdW5yZWdpc3RlcmVkLCBpdCBpcyBmbHVzaGVkIGNvbXBsZXRlbHkuCiAgKgotICogRW50cmllcyBoYXZlIGEgcmVmIGNvdW50IGFuZCBhICdoYXNoZWQnIGZsYWcgd2hpY2ggY291bnRzIHRoZSBleGlzdGFuY2UKKyAqIEVudHJpZXMgaGF2ZSBhIHJlZiBjb3VudCBhbmQgYSAnaGFzaGVkJyBmbGFnIHdoaWNoIGNvdW50cyB0aGUgZXhpc3RlbmNlCiAgKiBpbiB0aGUgaGFzaCB0YWJsZS4KICAqIFdlIG9ubHkgZXhwaXJlIGVudHJpZXMgd2hlbiByZWZjb3VudCBpcyB6ZXJvLgotICogRXhpc3RhbmNlIGluIHRoZSBjYWNoZSBpcyBjb3VudGVkICB0aGUgcmVmY291bnQuCisgKiBFeGlzdGVuY2UgaW4gdGhlIGNhY2hlIGlzIGNvdW50ZWQgIHRoZSByZWZjb3VudC4KICAqLwogCiAvKiBFdmVyeSBjYWNoZSBpdGVtIGhhcyBhIGNvbW1vbiBoZWFkZXIgdGhhdCBpcyB1c2VkCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNhdXRoX2dzcy5oIGIvaW5jbHVkZS9saW51eC9zdW5ycGMvc3ZjYXV0aF9nc3MuaAppbmRleCBjYTdkNzI1Li44M2JiZWUzIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNhdXRoX2dzcy5oCisrKyBiL2luY2x1ZGUvbGludXgvc3VucnBjL3N2Y2F1dGhfZ3NzLmgKQEAgLTIsNyArMiw3IEBACiAgKiBsaW51eC9pbmNsdWRlL2xpbnV4L3N1bnJwYy9zdmNhdXRoX2dzcy5oCiAgKgogICogQnJ1Y2UgRmllbGRzIDxiZmllbGRzQHVtaWNoLmVkdT4KLSAqIENvcHlyaWdodCAoYykgMjAwMiBUaGUgUmVnZW50cyBvZiB0aGUgVW52aWVyc2l0eSBvZiBNaWNoaWdhbgorICogQ29weXJpZ2h0IChjKSAyMDAyIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIE1pY2hpZ2FuCiAgKi8KIAogI2lmbmRlZiBfTElOVVhfU1VOUlBDX1NWQ0FVVEhfR1NTX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc3lzZGV2LmggYi9pbmNsdWRlL2xpbnV4L3N5c2Rldi5oCmluZGV4IDhhNzVkYTUuLmRmYjA3OGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvc3lzZGV2LmgKKysrIGIvaW5jbHVkZS9saW51eC9zeXNkZXYuaApAQCAtNywxMyArNywxMyBAQAogICogV2Ugc3RpbGwgaGF2ZSBhIG5vdGlvbiBvZiBhIGRyaXZlciBmb3IgYSBzeXN0ZW0gZGV2aWNlLCBiZWNhdXNlIHdlIHN0aWxsCiAgKiB3YW50IHRvIHBlcmZvcm0gYmFzaWMgb3BlcmF0aW9ucyBvbiB0aGVzZSBkZXZpY2VzLiAKICAqCi0gKiBXZSBhbHNvIHN1cHBvcnQgYXV4aWxsYXJ5IGRyaXZlcnMgYmluZGluZyB0byBkZXZpY2VzIG9mIGEgY2VydGFpbiBjbGFzcy4KKyAqIFdlIGFsc28gc3VwcG9ydCBhdXhpbGlhcnkgZHJpdmVycyBiaW5kaW5nIHRvIGRldmljZXMgb2YgYSBjZXJ0YWluIGNsYXNzLgogICogCiAgKiBUaGlzIGFsbG93cyBjb25maWd1cmFibGUgZHJpdmVycyB0byByZWdpc3RlciB0aGVtc2VsdmVzIGZvciBkZXZpY2VzIG9mCiAgKiBhIGNlcnRhaW4gdHlwZS4gQW5kLCBpdCBhbGxvd3MgY2xhc3MgZGVmaW5pdGlvbnMgdG8gcmVzaWRlIGluIGdlbmVyaWMKICAqIGNvZGUgd2hpbGUgYXJjaC1zcGVjaWZpYyBjb2RlIGNhbiByZWdpc3RlciBzcGVjaWZpYyBkcml2ZXJzLgogICoKLSAqIEF1eGlsbGFyeSBkcml2ZXJzIHJlZ2lzdGVyZWQgd2l0aCBhIE5VTEwgY2xzIGFyZSByZWdpc3RlcmVkIGFzIGRyaXZlcnMKKyAqIEF1eGlsaWFyeSBkcml2ZXJzIHJlZ2lzdGVyZWQgd2l0aCBhIE5VTEwgY2xzIGFyZSByZWdpc3RlcmVkIGFzIGRyaXZlcnMKICAqIGZvciBhbGwgc3lzdGVtIGRldmljZXMsIGFuZCBnZXQgbm90aWZpY2F0aW9uIGNhbGxzIGZvciBlYWNoIGRldmljZS4gCiAgKi8KIApAQCAtNzAsNyArNzAsNyBAQAogZXh0ZXJuIHZvaWQgc3lzZGV2X2NsYXNzX3JlbW92ZV9maWxlKHN0cnVjdCBzeXNkZXZfY2xhc3MgKiwKIAlzdHJ1Y3Qgc3lzZGV2X2NsYXNzX2F0dHJpYnV0ZSAqKTsKIC8qKgotICogQXV4aWxsYXJ5IHN5c3RlbSBkZXZpY2UgZHJpdmVycy4KKyAqIEF1eGlsaWFyeSBzeXN0ZW0gZGV2aWNlIGRyaXZlcnMuCiAgKi8KIAogc3RydWN0IHN5c2Rldl9kcml2ZXIgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC90aW1lcnF1ZXVlLmggYi9pbmNsdWRlL2xpbnV4L3RpbWVycXVldWUuaAppbmRleCBkMjRhYWJhLi5hNTIwZmQ3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3RpbWVycXVldWUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3RpbWVycXVldWUuaApAQCAtMjQsNyArMjQsNyBAQAogCQkJCQkJc3RydWN0IHRpbWVycXVldWVfbm9kZSAqbm9kZSk7CiAKIC8qKgotICogdGltZXJxdWV1ZV9nZXRuZXh0IC0gUmV0dXJucyB0aGUgdGltZXIgd2l0aCB0aGUgZWFybGllcyBleHBpcmF0aW9uIHRpbWUKKyAqIHRpbWVycXVldWVfZ2V0bmV4dCAtIFJldHVybnMgdGhlIHRpbWVyIHdpdGggdGhlIGVhcmxpZXN0IGV4cGlyYXRpb24gdGltZQogICoKICAqIEBoZWFkOiBoZWFkIG9mIHRpbWVycXVldWUKICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3RyYWNlaG9vay5oIGIvaW5jbHVkZS9saW51eC90cmFjZWhvb2suaAppbmRleCAzYTJlNjZkLi5lYmNmYTRlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3RyYWNlaG9vay5oCisrKyBiL2luY2x1ZGUvbGludXgvdHJhY2Vob29rLmgKQEAgLTE2OSw3ICsxNjksNyBAQAogICogdHJhY2Vob29rX3RyYWNlcl90YXNrIC0gcmV0dXJuIHRoZSB0YXNrIHRoYXQgaXMgdHJhY2luZyB0aGUgZ2l2ZW4gdGFzawogICogQHRzazoJCXRhc2sgdG8gY29uc2lkZXIKICAqCi0gKiBSZXR1cm5zIE5VTEwgaWYgbm9vbmUgaXMgdHJhY2luZyBAdGFzaywgb3IgdGhlICZzdHJ1Y3QgdGFza19zdHJ1Y3QKKyAqIFJldHVybnMgTlVMTCBpZiBubyBvbmUgaXMgdHJhY2luZyBAdGFzaywgb3IgdGhlICZzdHJ1Y3QgdGFza19zdHJ1Y3QKICAqIHBvaW50ZXIgdG8gaXRzIHRyYWNlci4KICAqCiAgKiBNdXN0IGNhbGxlZCB1bmRlciByY3VfcmVhZF9sb2NrKCkuICBUaGUgcG9pbnRlciByZXR1cm5lZCBtaWdodCBiZSBrZXB0CkBAIC00NDgsNyArNDQ4LDcgQEAKICAqCiAgKiBSZXR1cm4gemVybyB0byBjaGVjayBmb3IgYSByZWFsIHBlbmRpbmcgc2lnbmFsIG5vcm1hbGx5LgogICogUmV0dXJuIC0xIGFmdGVyIHJlbGVhc2luZyB0aGUgc2lnbG9jayB0byByZXBlYXQgdGhlIGNoZWNrLgotICogUmV0dXJuIGEgc2lnbmFsIG51bWJlciB0byBpbmR1Y2UgYW4gYXJ0aWZpY2FsIHNpZ25hbCBkZWxpdmVyeSwKKyAqIFJldHVybiBhIHNpZ25hbCBudW1iZXIgdG8gaW5kdWNlIGFuIGFydGlmaWNpYWwgc2lnbmFsIGRlbGl2ZXJ5LAogICogc2V0dGluZyAqQGluZm8gYW5kICpAcmV0dXJuX2thIHRvIHNwZWNpZnkgaXRzIGRldGFpbHMgYW5kIGJlaGF2aW9yLgogICoKICAqIFRoZSBAcmV0dXJuX2thLT5zYV9oYW5kbGVyIHZhbHVlIGNvbnRyb2xzIHRoZSBkaXNwb3NpdGlvbiBvZiB0aGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdWNiMTQwMC5oIGIvaW5jbHVkZS9saW51eC91Y2IxNDAwLmgKaW5kZXggMWI0NzkwOS4uNWM3NTE1MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91Y2IxNDAwLmgKKysrIGIvaW5jbHVkZS9saW51eC91Y2IxNDAwLmgKQEAgLTgsNyArOCw3IEBACiAgKiAgQ29weXJpZ2h0OglNb250YVZpc3RhIFNvZnR3YXJlLCBJbmMuCiAgKgogICogU3BsaXRpbmcgZG9uZSBieTogTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLSAqIElmIHNvbWV0aGluZyBkb2VzbnQgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAorICogSWYgc29tZXRoaW5nIGRvZXNuJ3Qgd29yayBhbmQgaXQgd29ya2VkIGJlZm9yZSBzcGxpdGluZywgZS1tYWlsIG1lLAogICogZG9udCBib3RoZXIgTmljb2xhcyBwbGVhc2UgOy0pCiAgKgogICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi5oCmluZGV4IGU2M2VmZWIuLjY1Zjc4Y2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiLmgKKysrIGIvaW5jbHVkZS9saW51eC91c2IuaApAQCAtNjIzLDcgKzYyMyw3IEBACiAgKiBVU0IgaHVicy4gIFRoYXQgbWFrZXMgaXQgc3RheSB0aGUgc2FtZSB1bnRpbCBzeXN0ZW1zIGFyZSBwaHlzaWNhbGx5CiAgKiByZWNvbmZpZ3VyZWQsIGJ5IHJlLWNhYmxpbmcgYSB0cmVlIG9mIFVTQiBkZXZpY2VzIG9yIGJ5IG1vdmluZyBVU0IgaG9zdAogICogY29udHJvbGxlcnMuICBBZGRpbmcgYW5kIHJlbW92aW5nIGRldmljZXMsIGluY2x1ZGluZyB2aXJ0dWFsIHJvb3QgaHVicwotICogaW4gaG9zdCBjb250cm9sbGVyIGRyaXZlciBtb2R1bGVzLCBkb2VzIG5vdCBjaGFuZ2UgdGhlc2UgcGF0aCBpZGVudGlmZXJzOworICogaW4gaG9zdCBjb250cm9sbGVyIGRyaXZlciBtb2R1bGVzLCBkb2VzIG5vdCBjaGFuZ2UgdGhlc2UgcGF0aCBpZGVudGlmaWVyczsKICAqIG5laXRoZXIgZG9lcyByZWJvb3Rpbmcgb3IgcmUtZW51bWVyYXRpbmcuICBUaGVzZSBhcmUgbW9yZSB1c2VmdWwgaWRlbnRpZmllcnMKICAqIHRoYW4gY2hhbmdlYWJsZSAoInVuc3RhYmxlIikgb25lcyBsaWtlIGJ1cyBudW1iZXJzIG9yIGRldmljZSBhZGRyZXNzZXMuCiAgKgpAQCAtNzkzLDcgKzc5Myw3IEBACiAgKgl1c2Jfc2V0X2ludGZkYXRhKCkgdG8gYXNzb2NpYXRlIGRyaXZlci1zcGVjaWZpYyBkYXRhIHdpdGggdGhlCiAgKglpbnRlcmZhY2UuICBJdCBtYXkgYWxzbyB1c2UgdXNiX3NldF9pbnRlcmZhY2UoKSB0byBzcGVjaWZ5IHRoZQogICoJYXBwcm9wcmlhdGUgYWx0c2V0dGluZy4gIElmIHVud2lsbGluZyB0byBtYW5hZ2UgdGhlIGludGVyZmFjZSwKLSAqCXJldHVybiAtRU5PREVWLCBpZiBnZW51aW5lIElPIGVycm9ycyBvY2N1cmVkLCBhbiBhcHByb3ByaWF0ZQorICoJcmV0dXJuIC1FTk9ERVYsIGlmIGdlbnVpbmUgSU8gZXJyb3JzIG9jY3VycmVkLCBhbiBhcHByb3ByaWF0ZQogICoJbmVnYXRpdmUgZXJybm8gdmFsdWUuCiAgKiBAZGlzY29ubmVjdDogQ2FsbGVkIHdoZW4gdGhlIGludGVyZmFjZSBpcyBubyBsb25nZXIgYWNjZXNzaWJsZSwgdXN1YWxseQogICoJYmVjYXVzZSBpdHMgZGV2aWNlIGhhcyBiZWVuIChvciBpcyBiZWluZykgZGlzY29ubmVjdGVkIG9yIHRoZQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91c2IvY29tcG9zaXRlLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaAppbmRleCAzZDI5YTdkLi44ODJhMDg0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaAorKysgYi9pbmNsdWRlL2xpbnV4L3VzYi9jb21wb3NpdGUuaApAQCAtMTg4LDcgKzE4OCw3IEBACiAgKiBAYmluZCgpIG1ldGhvZCBpcyB0aGVuIHVzZWQgdG8gaW5pdGlhbGl6ZSBhbGwgdGhlIGZ1bmN0aW9ucyBhbmQgdGhlbgogICogY2FsbCBAdXNiX2FkZF9mdW5jdGlvbigpIGZvciB0aGVtLgogICoKLSAqIFRob3NlIGZ1bmN0aW9ucyB3b3VsZCBub3JtYWxseSBiZSBpbmRlcGVuZGFudCBvZiBlYWNoIG90aGVyLCBidXQgdGhhdCdzCisgKiBUaG9zZSBmdW5jdGlvbnMgd291bGQgbm9ybWFsbHkgYmUgaW5kZXBlbmRlbnQgb2YgZWFjaCBvdGhlciwgYnV0IHRoYXQncwogICogbm90IG1hbmRhdG9yeS4gIENEQyBXTUMgZGV2aWNlcyBhcmUgYW4gZXhhbXBsZSB3aGVyZSBmdW5jdGlvbnMgb2Z0ZW4KICAqIGRlcGVuZCBvbiBvdGhlciBmdW5jdGlvbnMsIHdpdGggc29tZSBmdW5jdGlvbnMgc3Vic2lkaWFyeSB0byBvdGhlcnMuCiAgKiBTdWNoIGludGVyZGVwZW5kZW5jeSBtYXkgYmUgbWFuYWdlZCBpbiBhbnkgd2F5LCBzbyBsb25nIGFzIGFsbCBvZiB0aGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL2VoY2lfZGVmLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9laGNpX2RlZi5oCmluZGV4IDY1NjM4MDIuLmU0OWRmZDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL2VoY2lfZGVmLmgKKysrIGIvaW5jbHVkZS9saW51eC91c2IvZWhjaV9kZWYuaApAQCAtMTU5LDcgKzE1OSw3IEBACiAjZGVmaW5lIFVTQk1PREVfQ01fSURMRQkoMDw8MCkJCS8qIGlkbGUgc3RhdGUgKi8KIAogLyogTW9vcmVzdG93biBoYXMgc29tZSBub24tc3RhbmRhcmQgcmVnaXN0ZXJzLCBwYXJ0aWFsbHkgZHVlIHRvIHRoZSBmYWN0IHRoYXQKLSAqIGl0cyBFSENJIGNvbnRyb2xsZXIgaGFzIGJvdGggVFQgYW5kIExQTSBzdXBwb3J0LiBIT1NUUEN4IGFyZSBleHRlbnRpb25zIHRvCisgKiBpdHMgRUhDSSBjb250cm9sbGVyIGhhcyBib3RoIFRUIGFuZCBMUE0gc3VwcG9ydC4gSE9TVFBDeCBhcmUgZXh0ZW5zaW9ucyB0bwogICogUE9SVFNDeAogICovCiAjZGVmaW5lIEhPU1RQQzAJCTB4ODQJCS8qIEhPU1RQQyBleHRlbnNpb24gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvdXNiL2Z1bmN0aW9uZnMuaCBiL2luY2x1ZGUvbGludXgvdXNiL2Z1bmN0aW9uZnMuaAppbmRleCA2ZjY0OWMxLi43NTg3ZWY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3VzYi9mdW5jdGlvbmZzLmgKKysrIGIvaW5jbHVkZS9saW51eC91c2IvZnVuY3Rpb25mcy5oCkBAIC00NSw3ICs0NSw3IEBACiAgKiB8IG9mZiB8IG5hbWUgICAgICB8IHR5cGUgICAgICAgICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgKiB8LS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18CiAgKiB8ICAgMCB8IG1hZ2ljICAgICB8IExFMzIgICAgICAgICB8IEZVTkNUSU9ORlNfe0ZTLEhTfV9ERVNDUklQVE9SU19NQUdJQyB8Ci0gKiB8ICAgNCB8IGxlbmdodCAgICB8IExFMzIgICAgICAgICB8IGxlbmd0aCBvZiB0aGUgd2hvbGUgZGF0YSBjaHVuayAgICAgICB8CisgKiB8ICAgNCB8IGxlbmd0aCAgICB8IExFMzIgICAgICAgICB8IGxlbmd0aCBvZiB0aGUgd2hvbGUgZGF0YSBjaHVuayAgICAgICB8CiAgKiB8ICAgOCB8IGZzX2NvdW50ICB8IExFMzIgICAgICAgICB8IG51bWJlciBvZiBmdWxsLXNwZWVkIGRlc2NyaXB0b3JzICAgICB8CiAgKiB8ICAxMiB8IGhzX2NvdW50ICB8IExFMzIgICAgICAgICB8IG51bWJlciBvZiBoaWdoLXNwZWVkIGRlc2NyaXB0b3JzICAgICB8CiAgKiB8ICAxNiB8IGZzX2Rlc2NycyB8IERlc2NyaXB0b3JbXSB8IGxpc3Qgb2YgZnVsbC1zcGVlZCBkZXNjcmlwdG9ycyAgICAgICB8CkBAIC04Niw3ICs4Niw3IEBACiAgKiB8ICAgMCB8IGxhbmcgICAgfCBMRTE2ICAgICAgICAgICAgICB8IGxhbmd1YWdlIGNvZGUgICAgICAgICAgICAgICAgICAgICAgfAogICogfCAgIDIgfCBzdHJpbmdzIHwgU3RyaW5nW3N0cl9jb3VudF0gfCBhcnJheSBvZiBzdHJpbmdzIGluIGdpdmVuIGxhbmd1YWdlIHwKICAqCi0gKiBGb3IgZWFjaCBzdHJpbmcgdGhlciBpcyBvbmUgc3RyaW5ncyBlbnRyeSAoaWUuIHRoZXJlIGFyZSBzdHJfY291bnQKKyAqIEZvciBlYWNoIHN0cmluZyB0aGVyZSBpcyBvbmUgc3RyaW5ncyBlbnRyeSAoaWUuIHRoZXJlIGFyZSBzdHJfY291bnQKICAqIHN0cmluZyBlbnRyaWVzKS4gIEVhY2ggU3RyaW5nIGlzIGEgTlVMIHRlcm1pbmF0ZWQgc3RyaW5nIGVuY29kZWQgaW4KICAqIFVURi04LgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9nYWRnZXQuaCBiL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCmluZGV4IDAwNjQxMmMuLmU1MzgxNzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL2dhZGdldC5oCkBAIC03Miw3ICs3Miw3IEBACiAgKiBCdWxrIGVuZHBvaW50cyBjYW4gdXNlIGFueSBzaXplIGJ1ZmZlcnMsIGFuZCBjYW4gYWxzbyBiZSB1c2VkIGZvciBpbnRlcnJ1cHQKICAqIHRyYW5zZmVycy4gaW50ZXJydXB0LW9ubHkgZW5kcG9pbnRzIGNhbiBiZSBtdWNoIGxlc3MgZnVuY3Rpb25hbC4KICAqCi0gKiBOT1RFOiAgdGhpcyBpcyBhbmFsYWdvdXMgdG8gJ3N0cnVjdCB1cmInIG9uIHRoZSBob3N0IHNpZGUsIGV4Y2VwdCB0aGF0CisgKiBOT1RFOiAgdGhpcyBpcyBhbmFsb2dvdXMgdG8gJ3N0cnVjdCB1cmInIG9uIHRoZSBob3N0IHNpZGUsIGV4Y2VwdCB0aGF0CiAgKiBpdCdzIHRoaW5uZXIgYW5kIHByb21vdGVzIG1vcmUgcHJlLWFsbG9jYXRpb24uCiAgKi8KIApAQCAtMjY5LDcgKzI2OSw3IEBACiAgKgogICogQ29udHJvbCBlbmRwb2ludHMgLi4uIGFmdGVyIGdldHRpbmcgYSBzZXR1cCgpIGNhbGxiYWNrLCB0aGUgZHJpdmVyIHF1ZXVlcwogICogb25lIHJlc3BvbnNlIChldmVuIGlmIGl0IHdvdWxkIGJlIHplcm8gbGVuZ3RoKS4gIFRoYXQgZW5hYmxlcyB0aGUKLSAqIHN0YXR1cyBhY2ssIGFmdGVyIHRyYW5zZmVyaW5nIGRhdGEgYXMgc3BlY2lmaWVkIGluIHRoZSByZXNwb25zZS4gIFNldHVwCisgKiBzdGF0dXMgYWNrLCBhZnRlciB0cmFuc2ZlcnJpbmcgZGF0YSBhcyBzcGVjaWZpZWQgaW4gdGhlIHJlc3BvbnNlLiAgU2V0dXAKICAqIGZ1bmN0aW9ucyBtYXkgcmV0dXJuIG5lZ2F0aXZlIGVycm9yIGNvZGVzIHRvIGdlbmVyYXRlIHByb3RvY29sIHN0YWxscy4KICAqIChOb3RlIHRoYXQgc29tZSBVU0IgZGV2aWNlIGNvbnRyb2xsZXJzIGRpc2FsbG93IHByb3RvY29sIHN0YWxsIHJlc3BvbnNlcwogICogaW4gc29tZSBjYXNlcy4pICBXaGVuIGNvbnRyb2wgcmVzcG9uc2VzIGFyZSBkZWZlcnJlZCAodGhlIHJlc3BvbnNlIGlzCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi9taWRpLmggYi9pbmNsdWRlL2xpbnV4L3VzYi9taWRpLmgKaW5kZXggMWQxMDQwOC4uYzhjNTJlMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2IvbWlkaS5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL21pZGkuaApAQCAtNzAsNyArNzAsNyBAQAogCV9fdTggIGJKYWNrSUQ7CiAJX191OCAgYk5ySW5wdXRQaW5zOwkJLyogcCAqLwogCXN0cnVjdCB1c2JfbWlkaV9zb3VyY2VfcGluIHBpbnNbXTsgLyogW3BdICovCi0JLypfX3U4ICBpSmFjazsgIC0tIG9tbWl0dGVkIGR1ZSB0byB2YXJpYWJsZS1zaXplZCBwaW5zW10gKi8KKwkvKl9fdTggIGlKYWNrOyAgLS0gb21pdHRlZCBkdWUgdG8gdmFyaWFibGUtc2l6ZWQgcGluc1tdICovCiB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKIAogI2RlZmluZSBVU0JfRFRfTUlESV9PVVRfU0laRShwKQkoNyArIDIgKiAocCkpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3VzYi93dXNiLmggYi9pbmNsdWRlL2xpbnV4L3VzYi93dXNiLmgKaW5kZXggNjNlYmRjYy4uMGM0ZDRjYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91c2Ivd3VzYi5oCisrKyBiL2luY2x1ZGUvbGludXgvdXNiL3d1c2IuaApAQCAtMTI2LDcgKzEyNiw3IEBACiAvKioKICAqIFdVU0IgSUU6IENoYW5uZWwgU3RvcCAoV1VTQjEuMFs3LjUuOF0pCiAgKgotICogVGVsbHMgZGV2aWNlcyB0aGUgaG9zdCBpcyBnb2luZyB0byBzdG9wIHNlbmRpbmcgTU1DcyBhbmQgd2lsbCBkaXNzYXBlYXIuCisgKiBUZWxscyBkZXZpY2VzIHRoZSBob3N0IGlzIGdvaW5nIHRvIHN0b3Agc2VuZGluZyBNTUNzIGFuZCB3aWxsIGRpc2FwcGVhci4KICAqLwogc3RydWN0IHd1aWVfY2hhbm5lbF9zdG9wIHsKIAlzdHJ1Y3Qgd3VpZV9oZHIgaGRyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC91d2IuaCBiL2luY2x1ZGUvbGludXgvdXdiLmgKaW5kZXggN2ZjOTc0Ni4uYjBjNTY0ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC91d2IuaAorKysgYi9pbmNsdWRlL2xpbnV4L3V3Yi5oCkBAIC0yNzQsNyArMjc0LDcgQEAKIAogLyoqCiAgKiBzdHJ1Y3QgdXdiX2RycF9hdmFpbCAtIGEgcmFkaW8gY29udHJvbGxlcidzIHZpZXcgb2YgTUFTIHVzYWdlCi0gKiBAZ2xvYmFsOiAgIE1BUyB1bnVzZWQgYnkgbmVpZ2hib3JzIChleGNsdWRpbmcgcmVzZXJ2YXRpb25zIHRhcmdldHRlZAorICogQGdsb2JhbDogICBNQVMgdW51c2VkIGJ5IG5laWdoYm9ycyAoZXhjbHVkaW5nIHJlc2VydmF0aW9ucyB0YXJnZXRlZAogICogICAgICAgICAgICBvciBvd25lZCBieSB0aGUgbG9jYWwgcmFkaW8gY29udHJvbGxlcikgb3IgdGhlIGJlYW9uIHBlcmlvZAogICogQGxvY2FsOiAgICBNQVMgdW51c2VkIGJ5IGxvY2FsIGVzdGFibGlzaGVkIHJlc2VydmF0aW9ucwogICogQHBlbmRpbmc6ICBNQVMgdW51c2VkIGJ5IGxvY2FsIHBlbmRpbmcgcmVzZXJ2YXRpb25zCkBAIC03MDIsMTAgKzcwMiwxMCBAQAogCWVkYy0+dGltZXN0YXJ0ID0gamlmZmllczsKIH0KIAotLyogQ2FsbGVkIHdoZW4gYW4gZXJyb3Igb2NjdXJlZC4KKy8qIENhbGxlZCB3aGVuIGFuIGVycm9yIG9jY3VycmVkLgogICogVGhpcyBpcyB3YXkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBudW1iZXIgb2YgYWNjZXB0YWJsZSBlcnJvcnMgcGVyIHRpbWUKICAqIHBlcmlvZCBoYXMgYmVlbiBleGNlZWRlZC4gSXQgaXMgbm90IGFjY3VyYXRlIGFzIHRoZXJlIGFyZSBjYXNlcyBpbiB3aGljaAotICogdGhpcyBzY2hlbWUgd2lsbCBub3Qgd29yaywgZm9yIGV4YW1wbGUgaWYgdGhlcmUgYXJlIHBlcmlvZGljIG9jY3VyZW5jZXMKKyAqIHRoaXMgc2NoZW1lIHdpbGwgbm90IHdvcmssIGZvciBleGFtcGxlIGlmIHRoZXJlIGFyZSBwZXJpb2RpYyBvY2N1cnJlbmNlcwogICogb2YgZXJyb3JzIHRoYXQgc3RyYWRkbGUgdXBkYXRlcyB0byB0aGUgc3RhcnQgdGltZS4gVGhpcyBzY2hlbWUgaXMKICAqIHN1ZmZpY2llbnQgZm9yIG91ciB1c2FnZS4KICAqCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3V3Yi91bWMuaCBiL2luY2x1ZGUvbGludXgvdXdiL3VtYy5oCmluZGV4IDRiNGZjMGYuLjdiNDg0MjAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvdXdiL3VtYy5oCisrKyBiL2luY2x1ZGUvbGludXgvdXdiL3VtYy5oCkBAIC0xMzIsNyArMTMyLDcgQEAKICAqCiAgKiBGSVhNRTogVGhpcyBpcyBhcyBkaXJ0eSBhcyBpdCBnZXRzLCBidXQgd2UgbmVlZCBzb21lIHdheSB0byBjaGVjawogICogdGhlIGNvcnJlY3QgdHlwZSBvZiB1bWNfZGV2LT5wYXJlbnQgKHNvIHRoYXQgZm9yIGV4YW1wbGUsIHdlIGNhbgotICogY2FzdCB0byBwY2lfZGV2KS4gQ2FzdGluZyB0byBwY2lfZGV2IGlzIG5lY2VzYXJ5IGJlY2F1c2UgYXQgc29tZQorICogY2FzdCB0byBwY2lfZGV2KS4gQ2FzdGluZyB0byBwY2lfZGV2IGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGF0IHNvbWUKICAqIHBvaW50IHdlIG5lZWQgdG8gcmVxdWVzdCByZXNvdXJjZXMgZnJvbSB0aGUgZGV2aWNlLiBNYXBwaW5nIGlzCiAgKiBlYXNpbHkgb3ZlciBjb21lIChpb3JlbWFwIGFuZCBzdHVmZiBhcmUgYnVzIGFnbm9zdGljKSwgYnV0IGhvb2tpbmcKICAqIHVwIHRvIHNvbWUgZXJyb3IgaGFuZGxlcnMgKHN1Y2ggYXMgcGNpIGVycm9yIGhhbmRsZXJzKSBtaWdodCBuZWVkCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3ZnYWFyYi5oIGIvaW5jbHVkZS9saW51eC92Z2FhcmIuaAppbmRleCBlOWUxNTI0Li45YzMxMjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3ZnYWFyYi5oCisrKyBiL2luY2x1ZGUvbGludXgvdmdhYXJiLmgKQEAgLTc4LDcgKzc4LDcgQEAKICAqICAgICB3ZXRoZXIgdGhlIGNhcmQgaXMgZG9pbmcgbGVnYWN5IGRlY29kaW5nIGZvciB0aGF0IHR5cGUgb2YgcmVzb3VyY2UuIElmCiAgKiAgICAgeWVzLCB0aGUgbG9jayBpcyAiY29udmVydGVkIiBpbnRvIGEgbGVnYWN5IHJlc291cmNlIGxvY2suCiAgKiAgICAgVGhlIGFyYml0ZXIgd2lsbCBmaXJzdCBsb29rIGZvciBhbGwgVkdBIGNhcmRzIHRoYXQgbWlnaHQgY29uZmxpY3QKLSAqICAgICBhbmQgZGlzYWJsZSB0aGVpciBJT3MgYW5kL29yIE1lbW9yeSBhY2Nlc3MsIGlubGN1ZGluZyBWR0EgZm9yd2FyZGluZworICogICAgIGFuZCBkaXNhYmxlIHRoZWlyIElPcyBhbmQvb3IgTWVtb3J5IGFjY2VzcywgaW5jbHVkaW5nIFZHQSBmb3J3YXJkaW5nCiAgKiAgICAgb24gUDJQIGJyaWRnZXMgaWYgbmVjZXNzYXJ5LCBzbyB0aGF0IHRoZSByZXF1ZXN0ZWQgcmVzb3VyY2VzIGNhbgogICogICAgIGJlIHVzZWQuIFRoZW4sIHRoZSBjYXJkIGlzIG1hcmtlZCBhcyBsb2NraW5nIHRoZXNlIHJlc291cmNlcyBhbmQKICAqICAgICB0aGUgSU8gYW5kL29yIE1lbW9yeSBhY2Nlc3NlIGFyZSBlbmFibGVkIG9uIHRoZSBjYXJkIChpbmNsdWRpbmcKQEAgLTE4Nyw3ICsxODcsNyBAQAogICogICAgIHZnYV9jb25mbGljdHMKICAqCiAgKiAgICAgQXJjaGl0ZWN0dXJlcyBzaG91bGQgZGVmaW5lIHRoaXMgaWYgdGhleSBoYXZlIHNldmVyYWwKLSAqICAgICBpbmRlcGVuZGFudCBQQ0kgZG9tYWlucyB0aGF0IGNhbiBhZmZvcmQgY29uY3VycmVudCBWR0EKKyAqICAgICBpbmRlcGVuZGVudCBQQ0kgZG9tYWlucyB0aGF0IGNhbiBhZmZvcmQgY29uY3VycmVudCBWR0EKICAqICAgICBkZWNvZGluZwogICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvd2ltYXguaCBiL2luY2x1ZGUvbGludXgvd2ltYXguaAppbmRleCA0ZmRjYzU2Li45ZjZiNzdhIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3dpbWF4LmgKKysrIGIvaW5jbHVkZS9saW51eC93aW1heC5oCkBAIC0xMTQsNyArMTE0LDcgQEAKIAlXSU1BWF9HTkxfUkVTRVRfSUZJRFggPSAxLAogfTsKIAotLyogQXRyaWJ1dGVzIGZvciB3aW1heF9zdGF0ZV9nZXQoKSAqLworLyogQXR0cmlidXRlcyBmb3Igd2ltYXhfc3RhdGVfZ2V0KCkgKi8KIGVudW0gewogCVdJTUFYX0dOTF9TVEdFVF9JRklEWCA9IDEsCiB9OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC94aWxpbnhmYi5oIGIvaW5jbHVkZS9saW51eC94aWxpbnhmYi5oCmluZGV4IGYyNDYzZjUuLjVhMTU1YTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgveGlsaW54ZmIuaAorKysgYi9pbmNsdWRlL2xpbnV4L3hpbGlueGZiLmgKQEAgLTE2LDcgKzE2LDcgQEAKIC8qIE1MMzAwLzQwMyByZWZlcmVuY2UgZGVzaWduIGZyYW1lYnVmZmVyIGRyaXZlciBwbGF0Zm9ybSBkYXRhIHN0cnVjdCAqLwogc3RydWN0IHhpbGlueGZiX3BsYXRmb3JtX2RhdGEgewogCXUzMiByb3RhdGVfc2NyZWVuOwkvKiBGbGFnIHRvIHJvdGF0ZSBkaXNwbGF5IDE4MCBkZWdyZWVzICovCi0JdTMyIHNjcmVlbl9oZWlnaHRfbW07CS8qIFBoeXNpY2FsIGRpbWVudGlvbnMgb2Ygc2NyZWVuIGluIG1tICovCisJdTMyIHNjcmVlbl9oZWlnaHRfbW07CS8qIFBoeXNpY2FsIGRpbWVuc2lvbnMgb2Ygc2NyZWVuIGluIG1tICovCiAJdTMyIHNjcmVlbl93aWR0aF9tbTsKIAl1MzIgeHJlcywgeXJlczsJCS8qIHJlc29sdXRpb24gb2Ygc2NyZWVuIGluIHBpeGVscyAqLwogCXUzMiB4dmlydCwgeXZpcnQ7CS8qIHJlc29sdXRpb24gb2YgbWVtb3J5IGJ1ZmZlciAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9kYXZpbmNpL2RtMzU1X2NjZGMuaCBiL2luY2x1ZGUvbWVkaWEvZGF2aW5jaS9kbTM1NV9jY2RjLmgKaW5kZXggZGY4YTdiMS4uYWRmMmZlNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9kYXZpbmNpL2RtMzU1X2NjZGMuaAorKysgYi9pbmNsdWRlL21lZGlhL2RhdmluY2kvZG0zNTVfY2NkYy5oCkBAIC0xOTMsNyArMTkzLDcgQEAKICNkZWZpbmUgQ0NEQ19ERlRfVEFCTEVfU0laRQkxNgogLyoKICAqIE1haW4gU3RydWN0dXJlIGZvciB2ZXJ0aWNhbCBkZWZlY3QgY29ycmVjdGlvbi4gVmVydGljYWwgZGVmZWN0Ci0gKiBjb3JyZWN0aW9uIGNhbiBjb3JyZWN0IHVwdG8gMTYgZGVmZWN0cyBpZiBkZWZlY3RzIGxlc3MgdGhhbiAxNgorICogY29ycmVjdGlvbiBjYW4gY29ycmVjdCB1cCB0byAxNiBkZWZlY3RzIGlmIGRlZmVjdHMgbGVzcyB0aGFuIDE2CiAgKiB0aGVuIHBhZCB0aGUgcmVzdCB3aXRoIDAKICAqLwogc3RydWN0IGNjZGNfdmVydGljYWxfZGZ0IHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvZGF2aW5jaS9pc2lmLmggYi9pbmNsdWRlL21lZGlhL2RhdmluY2kvaXNpZi5oCmluZGV4IGIwYjc0YWQuLjdmM2Q3NmE0IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL2RhdmluY2kvaXNpZi5oCisrKyBiL2luY2x1ZGUvbWVkaWEvZGF2aW5jaS9pc2lmLmgKQEAgLTE5OSw3ICsxOTksNyBAQAogfTsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSoqIENvbG9yIFNwYWNlIENvbnZlcnRpb24gKENTQykKKyoqIENvbG9yIFNwYWNlIENvbnZlcnNpb24gKENTQykKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAjZGVmaW5lIElTSUZfQ1NDX05VTV9DT0VGRgkxNgogc3RydWN0IGlzaWZfY29sb3Jfc3BhY2VfY29udiB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL2xpcmMuaCBiL2luY2x1ZGUvbWVkaWEvbGlyYy5oCmluZGV4IDY2NzhhMTY5Li40YjNhYjI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL2xpcmMuaAorKysgYi9pbmNsdWRlL21lZGlhL2xpcmMuaApAQCAtMTM3LDcgKzEzNyw3IEBACiAgKi8KICNkZWZpbmUgTElSQ19TRVRfUkVDX0ZJTFRFUl9TUEFDRSAgICAgIF9JT1coJ2knLCAweDAwMDAwMDFiLCBfX3UzMikKIC8qCi0gKiBpZiBmaWx0ZXIgY2Fubm90IGJlIHNldCBpbmRlcGVuZGFudGx5IGZvciBwdWxzZS9zcGFjZSwgdGhpcyBzaG91bGQKKyAqIGlmIGZpbHRlciBjYW5ub3QgYmUgc2V0IGluZGVwZW5kZW50bHkgZm9yIHB1bHNlL3NwYWNlLCB0aGlzIHNob3VsZAogICogYmUgdXNlZAogICovCiAjZGVmaW5lIExJUkNfU0VUX1JFQ19GSUxURVIgICAgICAgICAgICBfSU9XKCdpJywgMHgwMDAwMDAxYywgX191MzIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC85cC85cC5oIGIvaW5jbHVkZS9uZXQvOXAvOXAuaAppbmRleCA2Yjc1YTY5Li5jZGYyZThhYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvOXAuaAorKysgYi9pbmNsdWRlL25ldC85cC85cC5oCkBAIC0xMTksNyArMTE5LDcgQEAKICAqIEBQOV9UUkVBRDogcmVxdWVzdCB0byB0cmFuc2ZlciBkYXRhIGZyb20gYSBmaWxlIG9yIGRpcmVjdG9yeQogICogQFA5X1JSRUFEOiByZXNwb25zZSB3aXRoIGRhdGEgcmVxdWVzdGVkCiAgKiBAUDlfVFdSSVRFOiByZXVxZXN0IHRvIHRyYW5zZmVyIGRhdGEgdG8gYSBmaWxlCi0gKiBAUDlfUldSSVRFOiByZXNwb25zZSB3aXRoIG91dCBtdWNoIGRhdGEgd2FzIHRyYW5zZmVyZWQgdG8gZmlsZQorICogQFA5X1JXUklURTogcmVzcG9uc2Ugd2l0aCBvdXQgbXVjaCBkYXRhIHdhcyB0cmFuc2ZlcnJlZCB0byBmaWxlCiAgKiBAUDlfVENMVU5LOiBmb3JnZXQgYWJvdXQgYSBoYW5kbGUgdG8gYW4gZW50aXR5IHdpdGhpbiB0aGUgZmlsZSBzeXN0ZW0KICAqIEBQOV9SQ0xVTks6IHJlc3BvbnNlIHdoZW4gc2VydmVyIGhhcyBmb3Jnb3R0ZW4gYWJvdXQgdGhlIGhhbmRsZQogICogQFA5X1RSRU1PVkU6IHJlcXVlc3QgdG8gcmVtb3ZlIGFuIGVudGl0eSBmcm9tIHRoZSBoaWVyYXJjaHkKQEAgLTI5NCw3ICsyOTQsNyBAQAogICoKICAqIFFJRCB0eXBlcyBhcmUgYSBzdWJzZXQgb2YgcGVybWlzc2lvbnMgLSB0aGV5IGFyZSBwcmltYXJpbHkKICAqIHVzZWQgdG8gZGlmZmVyZW50aWF0ZSBzZW1hbnRpY3MgZm9yIGEgZmlsZSBzeXN0ZW0gZW50aXR5IHZpYQotICogYSBqdW1wLXRhYmxlLiAgVGhlaXIgdmFsdWUgaXMgYWxzbyB0aGUgbW9zdCBzaWduaWZpZ2FudCAxNiBiaXRzCisgKiBhIGp1bXAtdGFibGUuICBUaGVpciB2YWx1ZSBpcyBhbHNvIHRoZSBtb3N0IHNpZ25pZmljYW50IDE2IGJpdHMKICAqIG9mIHRoZSBwZXJtaXNzaW9uX3QKICAqCiAgKiBTZWUgQWxzbzogaHR0cDovL3BsYW45LmJlbGwtbGFicy5jb20vbWFnaWMvbWFuMmh0bWwvMi9zdGF0CkBAIC0zNjYsOCArMzY2LDggQEAKIC8qKgogICogc3RydWN0IHA5X3N0YXQgLSBmaWxlIHN5c3RlbSBtZXRhZGF0YSBpbmZvcm1hdGlvbgogICogQHNpemU6IGxlbmd0aCBwcmVmaXggZm9yIHRoaXMgc3RhdCBzdHJ1Y3R1cmUgaW5zdGFuY2UKLSAqIEB0eXBlOiB0aGUgdHlwZSBvZiB0aGUgc2VydmVyIChlcXVpdmlsZW50IHRvIGEgbWFqb3IgbnVtYmVyKQotICogQGRldjogdGhlIHN1Yi10eXBlIG9mIHRoZSBzZXJ2ZXIgKGVxdWl2aWxlbnQgdG8gYSBtaW5vciBudW1iZXIpCisgKiBAdHlwZTogdGhlIHR5cGUgb2YgdGhlIHNlcnZlciAoZXF1aXZhbGVudCB0byBhIG1ham9yIG51bWJlcikKKyAqIEBkZXY6IHRoZSBzdWItdHlwZSBvZiB0aGUgc2VydmVyIChlcXVpdmFsZW50IHRvIGEgbWlub3IgbnVtYmVyKQogICogQHFpZDogdW5pcXVlIGlkIGZyb20gdGhlIHNlcnZlciBvZiB0eXBlICZwOV9xaWQKICAqIEBtb2RlOiBQbGFuIDkgZm9ybWF0IHBlcm1pc3Npb25zIG9mIHR5cGUgJnA5X3Blcm1fdAogICogQGF0aW1lOiBMYXN0IGFjY2Vzcy9yZWFkIHRpbWUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL2NsaWVudC5oIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKaW5kZXggMGEzMDk3Ny4uODVjMTQxMyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKKysrIGIvaW5jbHVkZS9uZXQvOXAvY2xpZW50LmgKQEAgLTEwMSw3ICsxMDEsNyBAQAogICogVHJhbnNwb3J0IHVzZSBhbiBhcnJheSB0byB0cmFjayBvdXRzdGFuZGluZyByZXF1ZXN0cwogICogaW5zdGVhZCBvZiBhIGxpc3QuICBXaGlsZSB0aGlzIG1heSBpbmN1cnIgb3ZlcmhlYWQgZHVyaW5nIGluaXRpYWwKICAqIGFsbG9jYXRpb24gb3IgZXhwYW5zaW9uLCBpdCBtYWtlcyByZXF1ZXN0IGxvb2t1cCBtdWNoIGVhc2llciBhcyB0aGUKLSAqIHRhZyBpZCBpcyBhIGluZGV4IGludG8gYW4gYXJyYXkuICAoV2UgdXNlIHRhZysxIHNvIHRoYXQgd2UgY2FuIGFjY29tb2RhdGUKKyAqIHRhZyBpZCBpcyBhIGluZGV4IGludG8gYW4gYXJyYXkuICAoV2UgdXNlIHRhZysxIHNvIHRoYXQgd2UgY2FuIGFjY29tbW9kYXRlCiAgKiB0aGUgLTEgdGFnIGZvciB0aGUgVF9WRVJTSU9OIHJlcXVlc3QpLgogICogVGhpcyBhbHNvIGhhcyB0aGUgbmljZSBlZmZlY3Qgb2Ygb25seSBoYXZpbmcgdG8gYWxsb2NhdGUgd2FpdF9xdWV1ZXMKICAqIG9uY2UsIGluc3RlYWQgb2YgY29uc3RhbnRseSBhbGxvY2F0aW5nIGFuZCBmcmVlaW5nIHRoZW0uICBJdHMgcG9zc2libGUKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LzlwL3RyYW5zcG9ydC5oIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKaW5kZXggODI4NjhmMS4uOGYwOGM3MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKKysrIGIvaW5jbHVkZS9uZXQvOXAvdHJhbnNwb3J0LmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogLyogRGVmYXVsdC4gQWRkIFBheWxvYWQgdG8gUERVIGJlZm9yZSBzZW5kaW5nIGl0IGRvd24gdG8gdHJhbnNwb3J0IGxheWVyICovCiAjZGVmaW5lIFA5X1RSQU5TX1BSRUZfUEFZTE9BRF9ERUYgIDB4MAotLyogU2VuZCBwYXkgbG9hZCBzZXBlcmF0ZWx5IHRvIHRyYW5zcG9ydCBsYXllciBhbG9uZyB3aXRoIFBEVS4qLworLyogU2VuZCBwYXkgbG9hZCBzZXBhcmF0ZWx5IHRvIHRyYW5zcG9ydCBsYXllciBhbG9uZyB3aXRoIFBEVS4qLwogI2RlZmluZSBQOV9UUkFOU19QUkVGX1BBWUxPQURfU0VQICAweDEKIAogLyoqCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9jYWlmL2NmY25mZy5oIGIvaW5jbHVkZS9uZXQvY2FpZi9jZmNuZmcuaAppbmRleCBmNjg4NDc4Li5mMzNkMzYzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9jYWlmL2NmY25mZy5oCisrKyBiL2luY2x1ZGUvbmV0L2NhaWYvY2ZjbmZnLmgKQEAgLTY5LDcgKzY5LDcgQEAKICAqCQljZmNuZmdfYWRkX2FkYXB0X2xheWVyIHRvIHNwZWNpZnkgUEhZIGZvciB0aGUgbGluay4KICAqIEBwcmVmOglUaGUgcGh5IChsaW5rIGxheWVyKSBwcmVmZXJlbmNlLgogICogQGZjczoJU3BlY2lmeSBpZiBjaGVja3N1bSBpcyB1c2VkIGluIENBSUYgRnJhbWluZyBMYXllci4KLSAqIEBzdHg6CVNwZWNpZnkgaWYgU3RhcnQgT2YgRnJhbWUgZVh0ZW50aW9uIGlzIHVzZWQuCisgKiBAc3R4OglTcGVjaWZ5IGlmIFN0YXJ0IE9mIEZyYW1lIGV4dGVuc2lvbiBpcyB1c2VkLgogICovCiAKIHZvaWQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2dlbl9zdGF0cy5oIGIvaW5jbHVkZS9uZXQvZ2VuX3N0YXRzLmgKaW5kZXggZmExNTc3MS4uYTc5YjZjZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvZ2VuX3N0YXRzLmgKKysrIGIvaW5jbHVkZS9uZXQvZ2VuX3N0YXRzLmgKQEAgLTExLDcgKzExLDcgQEAKIAlzdHJ1Y3Qgc2tfYnVmZiAqICBza2I7CiAJc3RydWN0IG5sYXR0ciAqICAgdGFpbDsKIAotCS8qIEJhY2t3YXJkIGNvbXBhdGFiaWxpdHkgKi8KKwkvKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCiAJaW50ICAgICAgICAgICAgICAgY29tcGF0X3RjX3N0YXRzOwogCWludCAgICAgICAgICAgICAgIGNvbXBhdF94c3RhdHM7CiAJdm9pZCAqICAgICAgICAgICAgeHN0YXRzOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXBfdnMuaCBiL2luY2x1ZGUvbmV0L2lwX3ZzLmgKaW5kZXggMzBiNDllZC4uODE0YjQzNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXBfdnMuaAorKysgYi9pbmNsdWRlL25ldC9pcF92cy5oCkBAIC05Miw3ICs5Miw3IEBACiB9CiAvKgogICogVGhpcyBvbmUgbmVlZGVkIGZvciBzaW5nbGVfb3Blbl9uZXQgc2luY2UgbmV0IGlzIHN0b3JlZCBkaXJlY3RseSBpbgotICogcHJpdmF0ZSBub3QgYXMgYSBzdHJ1Y3QgaS5lLiBzZXFfZmlsZV9uZXQgY2FudCBiZSB1c2VkLgorICogcHJpdmF0ZSBub3QgYXMgYSBzdHJ1Y3QgaS5lLiBzZXFfZmlsZV9uZXQgY2FuJ3QgYmUgdXNlZC4KICAqLwogc3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0ICpzZXFfZmlsZV9zaW5nbGVfbmV0KHN0cnVjdCBzZXFfZmlsZSAqc2VxKQogewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvaXJkYS9pcmxhcC5oIGIvaW5jbHVkZS9uZXQvaXJkYS9pcmxhcC5oCmluZGV4IDE3ZmNkOTYuLmZiNGI3NmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lyZGEvaXJsYXAuaAorKysgYi9pbmNsdWRlL25ldC9pcmRhL2lybGFwLmgKQEAgLTIwNCw3ICsyMDQsNyBAQAogCiAJbm90aWZ5X3Qgbm90aWZ5OyAvKiBDYWxsYmFja3MgdG8gSXJMTVAgKi8KIAotCWludCAgICBtdHRfcmVxdWlyZWQ7ICAvKiBNaW51bXVtIHR1cm5hcm91bmQgdGltZSByZXF1aXJlZCAqLworCWludCAgICBtdHRfcmVxdWlyZWQ7ICAvKiBNaW5pbXVtIHR1cm5hcm91bmQgdGltZSByZXF1aXJlZCAqLwogCWludCAgICB4Ym9mc19kZWxheTsgICAvKiBOciBvZiBYQk9GJ3MgdXNlZCB0byBNVFQgKi8KIAlpbnQgICAgYm9mc19jb3VudDsgICAgLyogTmVnb3RpYXRlZCBleHRyYSBCT0ZzICovCiAJaW50ICAgIG5leHRfYm9mczsgICAgIC8qIE5lZ290aWF0ZWQgZXh0cmEgQk9GcyBhZnRlciBuZXh0IGZyYW1lICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pcmRhL3dyYXBwZXIuaCBiL2luY2x1ZGUvbmV0L2lyZGEvd3JhcHBlci5oCmluZGV4IDI5NDJhZDYuLmVlZjUzZWIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L2lyZGEvd3JhcHBlci5oCisrKyBiL2luY2x1ZGUvbmV0L2lyZGEvd3JhcHBlci5oCkBAIC00Miw3ICs0Miw3IEBACiAKICNkZWZpbmUgSVJEQV9UUkFOUyAweDIwICAgIC8qIEFzeW5jaHJvbm91cyB0cmFuc3BhcmVuY3kgbW9kaWZpZXIgKi8gICAgICAgCiAKLS8qIFN0YXRlcyBmb3IgcmVjZXZpbmcgYSBmcmFtZSBpbiBhc3luYyBtb2RlICovCisvKiBTdGF0ZXMgZm9yIHJlY2VpdmluZyBhIGZyYW1lIGluIGFzeW5jIG1vZGUgKi8KIGVudW0gewogCU9VVFNJREVfRlJBTUUsIAogCUJFR0lOX0ZSQU1FLCAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L2l1Y3YvaXVjdi5oIGIvaW5jbHVkZS9uZXQvaXVjdi9pdWN2LmgKaW5kZXggMjA1YTMzNi4uMTEyMWJhYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXVjdi9pdWN2LmgKKysrIGIvaW5jbHVkZS9uZXQvaXVjdi9pdWN2LmgKQEAgLTE3Myw3ICsxNzMsNyBAQAogCS8qCiAJICogVGhlIG1lc3NhZ2VfcGVuZGluZyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgYW4gaWN1diBpbnRlcnJ1cHQKIAkgKiB0eXBlIDB4MDYgb3IgdHlwZSAweDA3IGhhcyBiZWVuIHJlY2VpdmVkLiBBIG5ldyBtZXNzYWdlIGlzCi0JICogYXZhaWxhYmUgYW5kIGNhbiBiZSByZWNlaXZlZCB3aXRoIGl1Y3ZfbWVzc2FnZV9yZWNlaXZlLgorCSAqIGF2YWlsYWJsZSBhbmQgY2FuIGJlIHJlY2VpdmVkIHdpdGggaXVjdl9tZXNzYWdlX3JlY2VpdmUuCiAJICovCiAJdm9pZCAoKm1lc3NhZ2VfcGVuZGluZykoc3RydWN0IGl1Y3ZfcGF0aCAqLCBzdHJ1Y3QgaXVjdl9tZXNzYWdlICopOwogCS8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC9pd19oYW5kbGVyLmggYi9pbmNsdWRlL25ldC9pd19oYW5kbGVyLmgKaW5kZXggM2FmZGIyMS4uNWQ1YTZhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvaXdfaGFuZGxlci5oCisrKyBiL2luY2x1ZGUvbmV0L2l3X2hhbmRsZXIuaApAQCAtOTEsNyArOTEsNyBAQAogICogLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBnb2FscyB3ZXJlIGFzIGZvbGxvdyA6CiAgKglvIE9idmlvdXMgOiB5b3Ugc2hvdWxkIG5vdCBuZWVkIGEgUGhEIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywKLSAqCQl0aGUgYmVuZWZpdCBpcyBlYXNpZXIgbWFpbnRhaW5hbmNlLgorICoJCXRoZSBiZW5lZml0IGlzIGVhc2llciBtYWludGVuYW5jZS4KICAqCW8gRmxleGlibGUgOiBpdCBzaG91bGQgYWNjb21tb2RhdGUgYSB3aWRlIHZhcmlldHkgb2YgZHJpdmVyCiAgKgkJaW1wbGVtZW50YXRpb25zIGFuZCBiZSBhcyBmbGV4aWJsZSBhcyB0aGUgb2xkIEFQSS4KICAqCW8gTGVhbiA6IGl0IHNob3VsZCBiZSBlZmZpY2llbnQgbWVtb3J5IHdpc2UgdG8gbWluaW1pc2UgdGhlIGltcGFjdApAQCAtMTI5LDcgKzEyOSw3IEBACiAgKgogICogRnVuY3Rpb25zIHByb3RvdHlwZSB1c2VzIHVuaW9uIGl3cmVxX2RhdGEKICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gKiBTb21lIHdvdWxkIGhhdmUgcHJlZmVyZWQgZnVuY3Rpb25zIGRlZmluZWQgdGhpcyB3YXkgOgorICogU29tZSB3b3VsZCBoYXZlIHByZWZlcnJlZCBmdW5jdGlvbnMgZGVmaW5lZCB0aGlzIHdheSA6CiAgKglzdGF0aWMgaW50IG15ZHJpdmVyX2lvY3RsX3NldHJhdGUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgCiAgKgkJCQkJICBsb25nIHJhdGUsIGludCBhdXRvKQogICogMSkgVGhlIGtlcm5lbCBjb2RlIGRvZXNuJ3QgInZhbGlkYXRlIiB0aGUgY29udGVudCBvZiBpd3JlcV9kYXRhLCBhbmQKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmggYi9pbmNsdWRlL25ldC9tYWM4MDIxMS5oCmluZGV4IGNlZmUxYjMuLmNiMTMyMzkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0L21hYzgwMjExLmgKKysrIGIvaW5jbHVkZS9uZXQvbWFjODAyMTEuaApAQCAtMTI5NCw3ICsxMjk0LDcgQEAKICAqIGFjY2VsZXJhdGlvbiAoaS5lLiBpd2x3aWZpKS4gVGhvc2UgZHJpdmVycyBzaG91bGQgcHJvdmlkZSB1cGRhdGVfdGtpcF9rZXkKICAqIGhhbmRsZXIuCiAgKiBUaGUgdXBkYXRlX3RraXBfa2V5KCkgY2FsbCB1cGRhdGVzIHRoZSBkcml2ZXIgd2l0aCB0aGUgbmV3IHBoYXNlIDEga2V5LgotICogVGhpcyBoYXBwZW5zIGV2ZXJ5dGltZSB0aGUgaXYxNiB3cmFwcyBhcm91bmQgKGV2ZXJ5IDY1NTM2IHBhY2tldHMpLiBUaGUKKyAqIFRoaXMgaGFwcGVucyBldmVyeSB0aW1lIHRoZSBpdjE2IHdyYXBzIGFyb3VuZCAoZXZlcnkgNjU1MzYgcGFja2V0cykuIFRoZQogICogc2V0X2tleSgpIGNhbGwgd2lsbCBoYXBwZW4gb25seSBvbmNlIGZvciBlYWNoIGtleSAodW5sZXNzIHRoZSBBUCBkaWQKICAqIHJla2V5aW5nKSwgaXQgd2lsbCBub3QgaW5jbHVkZSBhIHZhbGlkIHBoYXNlIDEga2V5LiBUaGUgdmFsaWQgcGhhc2UgMSBrZXkgaXMKICAqIHByb3ZpZGVkIGJ5IHVwZGF0ZV90a2lwX2tleSBvbmx5LiBUaGUgdHJpZ2dlciB0aGF0IG1ha2VzIG1hYzgwMjExIGNhbGwgdGhpcwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvcGt0X3NjaGVkLmggYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaAppbmRleCBkOTU0OWFmLi42NWFmYzQ5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaAorKysgYi9pbmNsdWRlL25ldC9wa3Rfc2NoZWQuaApAQCAtMzIsNyArMzIsNyBAQAogICAgCiAgICBUaGUgcmVzdWx0OiBbMzRdODYgaXMgbm90IGdvb2QgY2hvaWNlIGZvciBRb1Mgcm91dGVyIDotKAogCi0gICBUaGUgdGhpbmdzIGFyZSBub3Qgc28gYmFkLCBiZWNhdXNlIHdlIG1heSB1c2UgYXJ0aWZpY2FsCisgICBUaGUgdGhpbmdzIGFyZSBub3Qgc28gYmFkLCBiZWNhdXNlIHdlIG1heSB1c2UgYXJ0aWZpY2lhbAogICAgY2xvY2sgZXZhbHVhdGVkIGJ5IGludGVncmF0aW9uIG9mIG5ldHdvcmsgZGF0YSBmbG93CiAgICBpbiB0aGUgbW9zdCBjcml0aWNhbCBwbGFjZXMuCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NvY2suaCBiL2luY2x1ZGUvbmV0L3NvY2suaAppbmRleCBkYTA1MzRkLi4wMTgxMGEzIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC9zb2NrLmgKKysrIGIvaW5jbHVkZS9uZXQvc29jay5oCkBAIC0xNzQ5LDcgKzE3NDksNyBAQAogCiAvKgogICogS2VybmVsIHNvY2tldHMsIGYuZS4gcnRubCBvciBpY21wX3NvY2tldCwgYXJlIGEgcGFydCBvZiBhIG5hbWVzcGFjZS4KLSAqIFRoZXkgc2hvdWxkIG5vdCBob2xkIGEgcmVmZXJyZW5jZSB0byBhIG5hbWVzcGFjZSBpbiBvcmRlciB0byBhbGxvdworICogVGhleSBzaG91bGQgbm90IGhvbGQgYSByZWZlcmVuY2UgdG8gYSBuYW1lc3BhY2UgaW4gb3JkZXIgdG8gYWxsb3cKICAqIHRvIHN0b3AgaXQuCiAgKiBTb2NrZXRzIGFmdGVyIHNrX2NoYW5nZV9uZXQgc2hvdWxkIGJlIHJlbGVhc2VkIHVzaW5nIHNrX3JlbGVhc2Vfa2VybmVsCiAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RyYW5zcF92Ni5oIGIvaW5jbHVkZS9uZXQvdHJhbnNwX3Y2LmgKaW5kZXggZWViMDc3ZC4uYTgxMjJkYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvdHJhbnNwX3Y2LmgKKysrIGIvaW5jbHVkZS9uZXQvdHJhbnNwX3Y2LmgKQEAgLTE2LDcgKzE2LDcgQEAKIAogc3RydWN0IGZsb3dpNjsKIAotLyogZXh0ZW50aW9uIGhlYWRlcnMgKi8KKy8qIGV4dGVuc2lvbiBoZWFkZXJzICovCiBleHRlcm4gaW50CQkJCWlwdjZfZXh0aGRyc19pbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQJCQkJaXB2Nl9leHRoZHJzX2V4aXQodm9pZCk7CiBleHRlcm4gaW50CQkJCWlwdjZfZnJhZ19pbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQvd2ltYXguaCBiL2luY2x1ZGUvbmV0L3dpbWF4LmgKaW5kZXggMzQ2MWFhMS4uYzc5OWJhNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQvd2ltYXguaAorKysgYi9pbmNsdWRlL25ldC93aW1heC5oCkBAIC0yODYsNyArMjg2LDcgQEAKICAqICAgICBkb2VzIG5vdCBkaXNjb25uZWN0IHRoZSBkZXZpY2UgZnJvbSB0aGUgYnVzIGFuZCByZXR1cm4gMC4KICAqICAgICBJZiB0aGF0IGZhaWxzLCBpdCBzaG91bGQgcmVzb3J0IHRvIHNvbWUgc29ydCBvZiBjb2xkIG9yIGJ1cwogICogICAgIHJlc2V0IChldmVuIGlmIGl0IGltcGxpZXMgYSBidXMgZGlzY29ubmVjdGlvbiBhbmQgZGV2aWNlCi0gKiAgICAgZGlzc2FwZWFyYW5jZSkuIEluIHRoYXQgY2FzZSwgLUVOT0RFViBzaG91bGQgYmUgcmV0dXJuZWQgdG8KKyAqICAgICBkaXNhcHBlYXJhbmNlKS4gSW4gdGhhdCBjYXNlLCAtRU5PREVWIHNob3VsZCBiZSByZXR1cm5lZCB0bwogICogICAgIGluZGljYXRlIHRoZSBkZXZpY2UgaXMgZ29uZS4KICAqICAgICBUaGlzIG9wZXJhdGlvbiBoYXMgdG8gYmUgc3luY2hyb25vdXMsIGFuZCByZXR1cm4gb25seSB3aGVuIHRoZQogICogICAgIHJlc2V0IGlzIGNvbXBsZXRlLiBJbiBjYXNlIG9mIGhhdmluZyBoYWQgdG8gcmVzb3J0IHRvIGJ1cy9jb2xkCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC93cGFuLXBoeS5oIGIvaW5jbHVkZS9uZXQvd3Bhbi1waHkuaAppbmRleCA4NTkyNjIzLi5kODZmZmZkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC93cGFuLXBoeS5oCisrKyBiL2luY2x1ZGUvbmV0L3dwYW4tcGh5LmgKQEAgLTI4LDcgKzI4LDcgQEAKIAlzdHJ1Y3QgbXV0ZXggcGliX2xvY2s7CiAKIAkvKgotCSAqIFRoaXMgaXMgYSBQSUIgYWNvcmRpbmcgdG8gODAyLjE1LjQtMjAwNi4KKwkgKiBUaGlzIGlzIGEgUElCIGFjY29yZGluZyB0byA4MDIuMTUuNC0yMDA2LgogCSAqIFdlIGRvIG5vdCBwcm92aWRlIHRpbWluZy1yZWxhdGVkIHZhcmlhYmxlcywgYXMgdGhleQogCSAqIGFyZW4ndCB1c2VkIG91dHNpZGUgb2YgZHJpdmVyCiAJICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3J4cnBjL3BhY2tldC5oIGIvaW5jbHVkZS9yeHJwYy9wYWNrZXQuaAppbmRleCA5YjJjMzA4Li5mMjkwMmVmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3J4cnBjL3BhY2tldC5oCisrKyBiL2luY2x1ZGUvcnhycGMvcGFja2V0LmgKQEAgLTE0OCw3ICsxNDgsNyBAQAogICogS2VyYmVyb3Mgc2VjdXJpdHkgdHlwZS0yIHJlc3BvbnNlIHBhY2tldAogICovCiBzdHJ1Y3QgcnhrYWRfcmVzcG9uc2UgewotCV9fYmUzMgkJdmVyc2lvbjsJLyogdmVyc2lvbiBvZiB0aGlzIHJlcG9uc2UgdHlwZSAqLworCV9fYmUzMgkJdmVyc2lvbjsJLyogdmVyc2lvbiBvZiB0aGlzIHJlc3BvbnNlIHR5cGUgKi8KIAlfX2JlMzIJCV9fcGFkOwogCiAJLyogZW5jcnlwdGVkIGJpdCBvZiB0aGUgcmVzcG9uc2UgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9mYy9mY19mY3AuaCBiL2luY2x1ZGUvc2NzaS9mYy9mY19mY3AuaAppbmRleCA4YTE0M2NhLi42NTJkZWMyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvZmMvZmNfZmNwLmgKKysrIGIvaW5jbHVkZS9zY3NpL2ZjL2ZjX2ZjcC5oCkBAIC03NSw3ICs3NSw3IEBACiAjZGVmaW5lCUZDUF9QVEFfU0lNUExFCSAgICAwCS8qIHNpbXBsZSB0YXNrIGF0dHJpYnV0ZSAqLwogI2RlZmluZQlGQ1BfUFRBX0hFQURRCSAgICAxCS8qIGhlYWQgb2YgcXVldWUgdGFzayBhdHRyaWJ1dGUgKi8KICNkZWZpbmUJRkNQX1BUQV9PUkRFUkVEICAgICAyCS8qIG9yZGVyZWQgdGFzayBhdHRyaWJ1dGUgKi8KLSNkZWZpbmUJRkNQX1BUQV9BQ0EJICAgIDQJLyogYXV0by4gY29udGlnZW50IGFsbGVnaWFuY2UgKi8KKyNkZWZpbmUJRkNQX1BUQV9BQ0EJICAgIDQJLyogYXV0by4gY29udGluZ2VudCBhbGxlZ2lhbmNlICovCiAjZGVmaW5lCUZDUF9QVEFfTUFTSwkgICAgNwkvKiBtYXNrIGZvciB0YXNrIGF0dHJpYnV0ZSBmaWVsZCAqLwogI2RlZmluZQlGQ1BfUFJJX1NISUZUCSAgICAzCS8qIHByaW9yaXR5IGZpZWxkIHN0YXJ0cyBpbiBiaXQgMyAqLwogI2RlZmluZQlGQ1BfUFJJX1JFU1ZEX01BU0sgIDB4ODAJLyogcmVzZXJ2ZWQgYml0cyBpbiBwcmlvcml0eSBmaWVsZCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL2lzY3NpX2lmLmggYi9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaAppbmRleCBjM2UxY2JjLi5kZGIwNDU2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaAorKysgYi9pbmNsdWRlL3Njc2kvaXNjc2lfaWYuaApAQCAtMjkyLDcgKzI5Miw3IEBACiAJSVNDU0lfUEFSQU1fUEVSU0lTVEVOVF9QT1JULAogCUlTQ1NJX1BBUkFNX1NFU1NfUkVDT1ZFUllfVE1PLAogCi0JLyogcGFzZWQgaW4gdGhyb3VnaCBiaW5kIGNvbm4gdXNpbmcgdHJhbnNwb3J0X2ZkICovCisJLyogcGFzc2VkIGluIHRocm91Z2ggYmluZCBjb25uIHVzaW5nIHRyYW5zcG9ydF9mZCAqLwogCUlTQ1NJX1BBUkFNX0NPTk5fUE9SVCwKIAlJU0NTSV9QQVJBTV9DT05OX0FERFJFU1MsCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9saWJmYy5oIGIvaW5jbHVkZS9zY3NpL2xpYmZjLmgKaW5kZXggMjQxOTNjMS4uYTNjYmRhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL2xpYmZjLmgKKysrIGIvaW5jbHVkZS9zY3NpL2xpYmZjLmgKQEAgLTI2MCw3ICsyNjAsNyBAQAogLyoqCiAgKiBzdHJ1Y3QgZmNfc2VxX2Vsc19kYXRhIC0gRUxTIGRhdGEgdXNlZCBmb3IgcGFzc2luZyBFTFMgc3BlY2lmaWMgcmVzcG9uc2VzCiAgKiBAcmVhc29uOiBUaGUgcmVhc29uIGZvciByZWplY3Rpb24KLSAqIEBleHBsYW46IFRoZSBleHBsYWluYXRpb24gb2YgdGhlIHJlamVjdGlvbgorICogQGV4cGxhbjogVGhlIGV4cGxhbmF0aW9uIG9mIHRoZSByZWplY3Rpb24KICAqCiAgKiBNYWlubHkgdXNlZCBieSB0aGUgZXhjaGFuZ2UgbWFuYWdlciBsYXllci4KICAqLwpAQCAtNTI1LDcgKzUyNSw3IEBACiAJCQlzdHJ1Y3QgZmNfZnJhbWUgKik7CiAKIAkvKgotCSAqIFNlbmQgYW4gRUxTIHJlc3BvbnNlIHVzaW5nIGluZm9tYXRpb24gZnJvbSB0aGUgcmVjZWl2ZWQgZnJhbWUuCisJICogU2VuZCBhbiBFTFMgcmVzcG9uc2UgdXNpbmcgaW5mb3JtYXRpb24gZnJvbSB0aGUgcmVjZWl2ZWQgZnJhbWUuCiAJICoKIAkgKiBTVEFUVVM6IE9QVElPTkFMCiAJICovCkBAIC02NjMsNyArNjYzLDcgQEAKIAlpbnQgKCpycG9ydF9sb2dvZmYpKHN0cnVjdCBmY19ycG9ydF9wcml2ICopOwogCiAJLyoKLQkgKiBSZWNpZXZlIGEgcmVxdWVzdCBmcm9tIGEgcmVtb3RlIHBvcnQuCisJICogUmVjZWl2ZSBhIHJlcXVlc3QgZnJvbSBhIHJlbW90ZSBwb3J0LgogCSAqCiAJICogU1RBVFVTOiBPUFRJT05BTAogCSAqLwpAQCAtNzA0LDcgKzcwNCw3IEBACiAJCQkJCSB2b2lkICopKTsKIAogCS8qCi0JICogQ2xlYW51cCB0aGUgRkNQIGxheWVyLCB1c2VkIGR1cnJpbmcgbGluayBkb3duIGFuZCByZXNldAorCSAqIENsZWFudXAgdGhlIEZDUCBsYXllciwgdXNlZCBkdXJpbmcgbGluayBkb3duIGFuZCByZXNldAogCSAqCiAJICogU1RBVFVTOiBPUFRJT05BTAogCSAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL2xpYmlzY3NpX3RjcC5oIGIvaW5jbHVkZS9zY3NpL2xpYmlzY3NpX3RjcC5oCmluZGV4IGU2YjlmZDIuLmFjMGNjMWQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9saWJpc2NzaV90Y3AuaAorKysgYi9pbmNsdWRlL3Njc2kvbGliaXNjc2lfdGNwLmgKQEAgLTUyLDcgKzUyLDcgQEAKIAlpc2NzaV9zZWdtZW50X2RvbmVfZm5fdAkqZG9uZTsKIH07CiAKLS8qIFNvY2tldCBjb25uZWN0aW9uIHJlY2lldmUgaGVscGVyICovCisvKiBTb2NrZXQgY29ubmVjdGlvbiByZWNlaXZlIGhlbHBlciAqLwogc3RydWN0IGlzY3NpX3RjcF9yZWN2IHsKIAlzdHJ1Y3QgaXNjc2lfaGRyCSpoZHI7CiAJc3RydWN0IGlzY3NpX3NlZ21lbnQJc2VnbWVudDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc2NzaS9vc2RfaW5pdGlhdG9yLmggYi9pbmNsdWRlL3Njc2kvb3NkX2luaXRpYXRvci5oCmluZGV4IDUzYTllODguLjBhNTA3OTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc2NzaS9vc2RfaW5pdGlhdG9yLmgKKysrIGIvaW5jbHVkZS9zY3NpL29zZF9pbml0aWF0b3IuaApAQCAtMjY1LDcgKzI2NSw3IEBACiAgKiBAb3NpICAgICAgICAgICAtIFJlY2lldnMgYSBtb3JlIGRldGFpbGVkIGVycm9yIHJlcG9ydCBpbmZvcm1hdGlvbiAob3B0aW9uYWwpLgogICogQHNpbGVudCAgICAgICAgLSBEbyBub3QgcHJpbnQgdG8gZG1zZyAoRXZlbiBpZiBlbmFibGVkKQogICogQGJhZF9vYmpfbGlzdCAgLSBTb21lIGNvbW1hbmRzIGFjdCBvbiBtdWx0aXBsZSBvYmplY3RzLiBGYWlsZWQgb2JqZWN0cyB3aWxsCi0gKiAgICAgICAgICAgICAgICAgIGJlIHJlY2lldmVkIGhlcmUgKG9wdGlvbmFsKQorICogICAgICAgICAgICAgICAgICBiZSByZWNlaXZlZCBoZXJlIChvcHRpb25hbCkKICAqIEBtYXhfb2JqICAgICAgIC0gU2l6ZSBvZiBAYmFkX29ial9saXN0LgogICogQGJhZF9hdHRyX2xpc3QgLSBMaXN0IG9mIGZhaWxpbmcgYXR0cmlidXRlcyAob3B0aW9uYWwpCiAgKiBAbWF4X2F0dHIgICAgICAtIFNpemUgb2YgQGJhZF9hdHRyX2xpc3QuCmRpZmYgLS1naXQgYS9pbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmggYi9pbmNsdWRlL3Njc2kvc2NzaV9ob3N0LmgKaW5kZXggZTdlMzg1OC4uZjFmMjY0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zY3NpL3Njc2lfaG9zdC5oCisrKyBiL2luY2x1ZGUvc2NzaS9zY3NpX2hvc3QuaApAQCAtNDYsNyArNDYsNyBAQAogZW51bSB7CiAJU0NTSV9RREVQVEhfREVGQVVMVCwJLyogZGVmYXVsdCByZXF1ZXN0ZWQgY2hhbmdlLCBlLmcuIGZyb20gc3lzZnMgKi8KIAlTQ1NJX1FERVBUSF9RRlVMTCwJLyogc2NzaS1tbCByZXF1ZXN0ZWQgZHVlIHRvIHF1ZXVlIGZ1bGwgKi8KLQlTQ1NJX1FERVBUSF9SQU1QX1VQLAkvKiBzY3NpLW1sIHJlcXVlc3RlZCBkdWUgdG8gdGhyZXNoaG9sZCBldmVudCAqLworCVNDU0lfUURFUFRIX1JBTVBfVVAsCS8qIHNjc2ktbWwgcmVxdWVzdGVkIGR1ZSB0byB0aHJlc2hvbGQgZXZlbnQgKi8KIH07CiAKIHN0cnVjdCBzY3NpX2hvc3RfdGVtcGxhdGUgewpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zY3NpL3Njc2lfdHJhbnNwb3J0X2ZjLmggYi9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaAppbmRleCA1OTgxNmZlLi4yYTY1MTY3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaAorKysgYi9pbmNsdWRlL3Njc2kvc2NzaV90cmFuc3BvcnRfZmMuaApAQCAtMTkyLDkgKzE5Miw5IEBACiAgKgogICogVGhpcyBzdHJ1Y3R1cmUgZXhpc3RzIGZvciBlYWNoIEZDIHBvcnQgaXMgYSB2aXJ0dWFsIEZDIHBvcnQuIFZpcnR1YWwKICAqIHBvcnRzIHNoYXJlIHRoZSBwaHlzaWNhbCBsaW5rIHdpdGggdGhlIFBoeXNpY2FsIHBvcnQuIEVhY2ggdmlydHVhbAotICogcG9ydHMgaGFzIGEgdW5pcXVlIHByZXNlbnNlIG9uIHRoZSBTQU4sIGFuZCBtYXkgYmUgaW5zdGFudGlhdGVkIHZpYQorICogcG9ydHMgaGFzIGEgdW5pcXVlIHByZXNlbmNlIG9uIHRoZSBTQU4sIGFuZCBtYXkgYmUgaW5zdGFudGlhdGVkIHZpYQogICogTlBJViwgVmlydHVhbCBGYWJyaWNzLCBvciB2aWEgYWRkaXRpb25hbCBBTFBBcy4gQXMgdGhlIHZwb3J0IGlzIGEKLSAqIHVuaXF1ZSBwcmVzZW5zZSwgZWFjaCB2cG9ydCBoYXMgaXQncyBvd24gdmlldyBvZiB0aGUgZmFicmljLAorICogdW5pcXVlIHByZXNlbmNlLCBlYWNoIHZwb3J0IGhhcyBpdCdzIG93biB2aWV3IG9mIHRoZSBmYWJyaWMsCiAgKiBhdXRoZW50aWNhdGlvbiBwcml2aWxlZ2UsIGFuZCBwcmlvcml0aWVzLgogICoKICAqIEEgdmlydHVhbCBwb3J0IG1heSBzdXBwb3J0IDEgb3IgbW9yZSBGQzQgcm9sZXMuIFR5cGljYWxseSBpdCBpcyBhCkBAIC0zNzAsNyArMzcwLDcgQEAKIC8qCiAgKiBGQyBTQ1NJIFRhcmdldCBBdHRyaWJ1dGVzCiAgKgotICogVGhlIFNDU0kgVGFyZ2V0IGlzIGNvbnNpZGVyZWQgYW4gZXh0ZW50aW9uIG9mIGEgcmVtb3RlIHBvcnQgKGFzCisgKiBUaGUgU0NTSSBUYXJnZXQgaXMgY29uc2lkZXJlZCBhbiBleHRlbnNpb24gb2YgYSByZW1vdGUgcG9ydCAoYXMKICAqIGEgcmVtb3RlIHBvcnQgY2FuIGJlIG1vcmUgdGhhbiBhIFNDU0kgVGFyZ2V0KS4gV2l0aGluIHRoZSBzY3NpCiAgKiBzdWJzeXN0ZW0sIHdlIGxlYXZlIHRoZSBUYXJnZXQgYXMgYSBzZXBhcmF0ZSBlbnRpdHkuIERvaW5nIHNvCiAgKiBwcm92aWRlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggcHJpb3IgRkMgdHJhbnNwb3J0IGFwaSdzLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmggYi9pbmNsdWRlL3NvdW5kL2FjOTdfY29kZWMuaAppbmRleCBmMWRjZWZlNC4uMDJjYmI1MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9hYzk3X2NvZGVjLmgKQEAgLTM4NSw3ICszODUsNyBAQAogI2RlZmluZSBBQzk3X1NDQVBfREVURUNUX0JZX1ZFTkRPUiAoMTw8OCkgLyogdXNlIHZlbmRvciByZWdpc3RlcnMgZm9yIHJlYWQgdGVzdHMgKi8KICNkZWZpbmUgQUM5N19TQ0FQX05PX1NQRElGCSgxPDw5KQkvKiBkb24ndCBidWlsZCBTUERJRiBjb250cm9scyAqLwogI2RlZmluZSBBQzk3X1NDQVBfRUFQRF9MRUQJKDE8PDEwKQkvKiBFQVBEIGFzIG11dGUgTEVEICovCi0jZGVmaW5lIEFDOTdfU0NBUF9QT1dFUl9TQVZFCSgxPDwxMSkJLyogY2FwYWJsZSBmb3IgYWdncmVzaXZlIHBvd2VyLXNhdmluZyAqLworI2RlZmluZSBBQzk3X1NDQVBfUE9XRVJfU0FWRQkoMTw8MTEpCS8qIGNhcGFibGUgZm9yIGFnZ3Jlc3NpdmUgcG93ZXItc2F2aW5nICovCiAKIC8qIGFjOTctPmZsYWdzICovCiAjZGVmaW5lIEFDOTdfSEFTX1BDX0JFRVAJKDE8PDApCS8qIGZvcmNlIFBDIFNwZWFrZXIgdXNhZ2UgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvY29udHJvbC5oIGIvaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKaW5kZXggZTY3ZGIyOC4uNDA0YWNiOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9jb250cm9sLmgKQEAgLTE5MSw3ICsxOTEsNyBAQAogICogUmV0dXJucyB6ZXJvIGlmIHN1Y2Nlc3NmdWwgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlLgogICoKICAqIEFsbCBzbGF2ZXMgbXVzdCBiZSB0aGUgc2FtZSB0eXBlIChyZXR1cm5pbmcgdGhlIHNhbWUgaW5mb3JtYXRpb24KLSAqIHZpYSBpbmZvIGNhbGxiYWNrKS4gIFRoZSBmdWNudGlvbiBkb2Vzbid0IGNoZWNrIGl0LCBzbyBpdCdzIHlvdXIKKyAqIHZpYSBpbmZvIGNhbGxiYWNrKS4gIFRoZSBmdW5jdGlvbiBkb2Vzbid0IGNoZWNrIGl0LCBzbyBpdCdzIHlvdXIKICAqIHJlc3BvbnNpYmlsaXR5LgogICoKICAqIEFsc28sIHNvbWUgYWRkaXRpb25hbCBsaW1pdGF0aW9uczoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvY3M0Nnh4X2RzcF9zcG9zLmggYi9pbmNsdWRlL3NvdW5kL2NzNDZ4eF9kc3Bfc3Bvcy5oCmluZGV4IDQ5YjAzYzkuLjgwMDhjNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvY3M0Nnh4X2RzcF9zcG9zLmgKKysrIGIvaW5jbHVkZS9zb3VuZC9jczQ2eHhfZHNwX3Nwb3MuaApAQCAtMTQ3LDcgKzE0Nyw3IEBACiB9OwogCiBzdHJ1Y3QgZHNwX3Nwb3NfaW5zdGFuY2UgewotCXN0cnVjdCBkc3Bfc3ltYm9sX2Rlc2Mgc3ltYm9sX3RhYmxlOyAvKiBjdXJyZW50bHkgYXZhaWxibGUgbG9hZGVkIHN5bWJvbHMgaW4gU1AgKi8KKwlzdHJ1Y3QgZHNwX3N5bWJvbF9kZXNjIHN5bWJvbF90YWJsZTsgLyogY3VycmVudGx5IGF2YWlsYWJsZSBsb2FkZWQgc3ltYm9scyBpbiBTUCAqLwogCiAJaW50IG5tb2R1bGVzOwogCXN0cnVjdCBkc3BfbW9kdWxlX2Rlc2MgKiBtb2R1bGVzOyAvKiBtb2R1bGVzIGxvYWRlZCBpbnRvIFNQICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKaW5kZXggMTc3NGZmNS4uMWY1OWVhMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCisrKyBiL2luY2x1ZGUvc291bmQvaGRzcG0uaApAQCAtMTkzLDcgKzE5Myw3IEBACiAgKiAzMjc2OCBCeXRlcwogICovCiAKLS8qIG9yZ2FuaXNhdGlvbiBpcyA2NCBjaGFubmVsZmFkZXIgaW4gYSBjb250aW5vdXMgbWVtb3J5IGJsb2NrICovCisvKiBvcmdhbmlzYXRpb24gaXMgNjQgY2hhbm5lbGZhZGVyIGluIGEgY29udGludW91cyBtZW1vcnkgYmxvY2sgKi8KIC8qIGVxdWl2YWxlbnQgdG8gaGFyZHdhcmUgZGVmaW5pdGlvbiwgbWF5YmUgZm9yIGZ1dHVyZSBmZWF0dXJlIG9mIG1tYXAgb2YKICAqIHRoZW0KICAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9zb2MtZGFwbS5oIGIvaW5jbHVkZS9zb3VuZC9zb2MtZGFwbS5oCmluZGV4IGRkYzJiM2QuLmY3MmMxMDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc291bmQvc29jLWRhcG0uaAorKysgYi9pbmNsdWRlL3NvdW5kL3NvYy1kYXBtLmgKQEAgLTIzLDcgKzIzLDcgQEAKIC8qCiAgKiBTb0MgZHluYW1pYyBhdWRpbyBwb3dlciBtYW5hZ2VtZW50CiAgKgotICogV2UgY2FuIGhhdmUgdXB0byA0IHBvd2VyIGRvbWFpbnMKKyAqIFdlIGNhbiBoYXZlIHVwIHRvIDQgcG93ZXIgZG9tYWlucwogICogCTEuIENvZGVjIGRvbWFpbiAtIFZSRUYsIFZNSUQKICAqICAgICBVc3VhbGx5IGNvbnRyb2xsZWQgYXQgY29kZWMgcHJvYmUvcmVtb3ZlLCBhbHRob3VnaCBjYW4gYmUgc2V0CiAgKiAgICAgYXQgc3RyZWFtIHRpbWUgaWYgcG93ZXIgaXMgbm90IG5lZWRlZCBmb3Igc2lkZXRvbmUsIGV0Yy4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2Jhc2UuaCBiL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2Jhc2UuaAppbmRleCBjMTVlZDUwLi4xZDNiNWIyIDEwMDY0NAotLS0gYS9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9iYXNlLmgKKysrIGIvaW5jbHVkZS90YXJnZXQvdGFyZ2V0X2NvcmVfYmFzZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAgKiBOb3RlIHRoYXQgYm90aCBpbmNsdWRlL3Njc2kvc2NzaV9jbW5kLmg6TUFYX0NPTU1BTkRfU0laRSBhbmQKICAqIGluY2x1ZGUvbGludXgvYmxrZGV2Lmg6QkxPQ0tfTUFYX0NEQiBhcyBvZiB2Mi42LjM2LXJjNCBzdGlsbCB1c2UKICAqIDE2LWJ5dGUgQ0RCcyBieSBkZWZhdWx0IGFuZCByZXF1aXJlIGFuIGV4dHJhIGFsbG9jYXRpb24gZm9yCi0gKiAzMi1ieXRlIENEQnMgdG8gYmVjYXN1ZSBvZiBsZWdhY3kgaXNzdWVzLgorICogMzItYnl0ZSBDREJzIHRvIGJlY2F1c2Ugb2YgbGVnYWN5IGlzc3Vlcy4KICAqCiAgKiBXaXRoaW4gVENNIENvcmUgdGhlcmUgYXJlIG5vIHN1Y2ggbGVnYWN5IGxpbWl0aWF0aW9ucywgc28gd2UgZ28gYWhlYWQKICAqIHVzZSAzMi1ieXRlIENEQnMgYnkgZGVmYXVsdCBhbmQgdXNlIGluY2x1ZGUvc2NzaS9zY3NpLmg6c2NzaV9jb21tYW5kX3NpemUoKQpAQCAtMzAyLDcgKzMwMiw3IEBACiAKIAogLyoKLSAqIFVzZWQgYnkgVENNIENvcmUgaW50ZXJuYWxseSB0byBzaWduYWwgaWYgPj0gU1BDLTMgcGVyaXN0ZW50IHJlc2VydmF0aW9ucworICogVXNlZCBieSBUQ00gQ29yZSBpbnRlcm5hbGx5IHRvIHNpZ25hbCBpZiA+PSBTUEMtMyBwZXJzaXN0ZW50IHJlc2VydmF0aW9ucwogICogZW11bGF0aW9uIGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQsIG9yIHJ1bm5pbmcgaW4gd2l0aCBUQ00vcFNDU0kgcGFzc3Rocm91Z2gKICAqIG1vZGUKICAqLwpAQCAtOTM0LDcgKzkzNCw3IEBACiAJc3RydWN0IGxpc3RfaGVhZAlhY2xfbm9kZV9saXN0OwogCXN0cnVjdCBzZV9sdW4JCSp0cGdfbHVuX2xpc3Q7CiAJc3RydWN0IHNlX2x1bgkJdHBnX3ZpcnRfbHVuMDsKLQkvKiBMaXN0IG9mIFRDTSBzZXNzaW9ucyBhc3NvaWNhdGVkIHd0aCB0aGlzIFRQRyAqLworCS8qIExpc3Qgb2YgVENNIHNlc3Npb25zIGFzc29jaWF0ZWQgd3RoIHRoaXMgVFBHICovCiAJc3RydWN0IGxpc3RfaGVhZAl0cGdfc2Vzc19saXN0OwogCS8qIFBvaW50ZXIgdG8gJEZBQlJJQ19NT0QgZGVwZW5kZW50IGNvZGUgKi8KIAlzdHJ1Y3QgdGFyZ2V0X2NvcmVfZmFicmljX29wcyAqc2VfdHBnX3RmbzsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19vcHMuaCBiL2luY2x1ZGUvdGFyZ2V0L3RhcmdldF9jb3JlX2ZhYnJpY19vcHMuaAppbmRleCA1ZWI4YjFhLi5kYzc4Zjc3IDEwMDY0NAotLS0gYS9pbmNsdWRlL3RhcmdldC90YXJnZXRfY29yZV9mYWJyaWNfb3BzLmgKKysrIGIvaW5jbHVkZS90YXJnZXQvdGFyZ2V0X2NvcmVfZmFicmljX29wcy5oCkBAIC0zNSw3ICszNSw3IEBACiAJLyoKIAkgKiBPcHRpb25hbCBmdW5jdGlvbiBwb2ludGVyIGZvciBUQ00gdG8gcGVyZm9ybSBjb21tYW5kIG1hcAogCSAqIGZyb20gVENNIHByb2Nlc3NpbmcgdGhyZWFkIGNvbnRleHQsIGZvciB0aG9zZSBzdHJ1Y3Qgc2VfY21kCi0JICogaW5pdGFsbHkgYWxsb2NhdGVkIGluIGludGVycnVwdCBjb250ZXh0LgorCSAqIGluaXRpYWxseSBhbGxvY2F0ZWQgaW4gaW50ZXJydXB0IGNvbnRleHQuCiAJICovCiAJaW50ICgqbmV3X2NtZF9tYXApKHN0cnVjdCBzZV9jbWQgKik7CiAJLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8va3lyby5oIGIvaW5jbHVkZS92aWRlby9reXJvLmgKaW5kZXggZGJhN2RlMi4uYzU2Mzk2OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS92aWRlby9reXJvLmgKKysrIGIvaW5jbHVkZS92aWRlby9reXJvLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAl1MzIgUElYQ0xLOwkvKiBQaXhlbCBDbG9jayAgICAgICAqLwogCXUzMiBIQ0xLOwkvKiBIb3IgQ2xvY2sgICAgICAgICAqLwogCi0JLyogVXNlZnVsbCB0byBob2xkIGRlcHRoIGhlcmUgZm9yIExpbnV4ICovCisJLyogVXNlZnVsIHRvIGhvbGQgZGVwdGggaGVyZSBmb3IgTGludXggKi8KIAl1OCBQSVhERVBUSDsKIAogI2lmZGVmIENPTkZJR19NVFJSCmRpZmYgLS1naXQgYS9pbmNsdWRlL3ZpZGVvL25lb21hZ2ljLmggYi9pbmNsdWRlL3ZpZGVvL25lb21hZ2ljLmgKaW5kZXggMDhiNjYzNy4uYmM1MDEzZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS92aWRlby9uZW9tYWdpYy5oCisrKyBiL2luY2x1ZGUvdmlkZW8vbmVvbWFnaWMuaApAQCAtMTI5LDcgKzEyOSw3IEBACiAJdW5zaWduZWQgY2hhciBDUlRDWzI1XTsJCS8qIENydGMgQ29udHJvbGxlciAqLwogCXVuc2lnbmVkIGNoYXIgU2VxdWVuY2VyWzVdOwkvKiBWaWRlbyBTZXF1ZW5jZXIgKi8KIAl1bnNpZ25lZCBjaGFyIEdyYXBoaWNzWzldOwkvKiBWaWRlbyBHcmFwaGljcyAqLwotCXVuc2lnbmVkIGNoYXIgQXR0cmlidXRlWzIxXTsJLyogVmlkZW8gQXRyaWJ1dGUgKi8KKwl1bnNpZ25lZCBjaGFyIEF0dHJpYnV0ZVsyMV07CS8qIFZpZGVvIEF0dHJpYnV0ZSAqLwogCiAJdW5zaWduZWQgY2hhciBHZW5lcmFsTG9ja1JlZzsKIAl1bnNpZ25lZCBjaGFyIEV4dENSVERpc3BBZGRyOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS92aWRlby9uZXdwb3J0LmggYi9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaAppbmRleCAwMDFiOTM1Li4zZDdjNGI0IDEwMDY0NAotLS0gYS9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaAorKysgYi9pbmNsdWRlL3ZpZGVvL25ld3BvcnQuaApAQCAtNSw3ICs1LDcgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTYgRGF2aWQgUy4gTWlsbGVyIChkbUBlbmdyLnNnaS5jb20pCiAgKiAKLSAqIFVsZiBDYXJsc3NvbiAtIENvbXBhYmlsaXR5IHdpdGggdGhlIElSSVggc3RydWN0dXJlcyBhZGRlZAorICogVWxmIENhcmxzc29uIC0gQ29tcGF0aWJpbGl0eSB3aXRoIHRoZSBJUklYIHN0cnVjdHVyZXMgYWRkZWQKICAqLwogCiAjaWZuZGVmIF9TR0lfTkVXUE9SVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3ZpZGVvL3Npc2ZiLmggYi9pbmNsdWRlL3ZpZGVvL3Npc2ZiLmgKaW5kZXggZmRkNzRmMS4uNmRjNWRmOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS92aWRlby9zaXNmYi5oCisrKyBiL2luY2x1ZGUvdmlkZW8vc2lzZmIuaApAQCAtMTUxLDcgKzE1MSw3IEBACiAJX191MzIgIHNpc2ZiX3Jlc3VsdFs0XTsKIH07CiAKLS8qIEFkZHRpb25hbCBJT0NUTHMgZm9yIGNvbW11bmljYXRpb24gc2lzZmIgPD4gWCBkcml2ZXIgICAgICAgICAgICAgICAgKi8KKy8qIEFkZGl0aW9uYWwgSU9DVExzIGZvciBjb21tdW5pY2F0aW9uIHNpc2ZiIDw+IFggZHJpdmVyICAgICAgICAgICAgICAgICovCiAvKiBJZiBjaGFuZ2luZyB0aGlzLCB2Z2F0eXBlcy5oIG11c3QgYWxzbyBiZSBjaGFuZ2VkIChmb3IgWCBkcml2ZXIpICAgICovCiAKIC8qIGlvY3RsIGZvciBpZGVudGlmeWluZyBhbmQgZ2l2aW5nIHNvbWUgaW5mbyAoZXNwLiBtZW1vcnkgaGVhcCBzdGFydCkgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmlkZW8vc3N0ZmIuaCBiL2luY2x1ZGUvdmlkZW8vc3N0ZmIuaAppbmRleCBiNTJmMDczLi5jNDQ5ZWFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL3ZpZGVvL3NzdGZiLmgKKysrIGIvaW5jbHVkZS92aWRlby9zc3RmYi5oCkBAIC0xNTYsNyArMTU2LDcgQEAKICNkZWZpbmUgREFDX1JFQUQJCUZCSUlOSVQyCS8qIGluIHJlbWFwIG1vZGUgKi8KICNkZWZpbmUgRkJJSU5JVDMJCTB4MDIxYwkJLyogZmJpIGNvbnRyb2xzICovCiAjICBkZWZpbmUgRElTQUJMRV9URVhUVVJFCSAgQklUKDYpCi0jICBkZWZpbmUgWV9TV0FQX09SSUdJTl9TSElGVAkgIDIyCQkvKiBZIHN3YXAgc3Vic3RyYWN0aW9uIHZhbHVlICovCisjICBkZWZpbmUgWV9TV0FQX09SSUdJTl9TSElGVAkgIDIyCQkvKiBZIHN3YXAgc3VidHJhY3Rpb24gdmFsdWUgKi8KICNkZWZpbmUgSFNZTkMJCQkweDAyMjAKICNkZWZpbmUgVlNZTkMJCQkweDAyMjQKICNkZWZpbmUgREFDX0RBVEEJCTB4MDIyYwpAQCAtMjEyLDkgKzIxMiw5IEBACiAjICBkZWZpbmUgREFDUkVHX0NSMF8yNEJQUAkgIDB4NTAJCS8qIG1vZGUgNSAqLwogI2RlZmluZQlEQUNSRUdfQ1IxX0kJCTB4MDUKICNkZWZpbmUgREFDUkVHX0NDX0kJCTB4MDYKLSMgIGRlZmluZSBEQUNSRUdfQ0NfQ0xLQQkgIEJJVCg3KQkvKiBjbGsgQSBjb250cm9sZWQgYnkgcmVncyAqLworIyAgZGVmaW5lIERBQ1JFR19DQ19DTEtBCSAgQklUKDcpCS8qIGNsayBBIGNvbnRyb2xsZWQgYnkgcmVncyAqLwogIyAgZGVmaW5lIERBQ1JFR19DQ19DTEtBX0MJICAoMjw8NCkJLyogY2xrIEEgdXNlcyByZWcgQyAqLwotIyAgZGVmaW5lIERBQ1JFR19DQ19DTEtCCSAgQklUKDMpCS8qIGNsayBCIGNvbnRyb2xlZCBieSByZWdzICovCisjICBkZWZpbmUgREFDUkVHX0NDX0NMS0IJICBCSVQoMykJLyogY2xrIEIgY29udHJvbGxlZCBieSByZWdzICovCiAjICBkZWZpbmUgREFDUkVHX0NDX0NMS0JfRAkgIDMJCS8qIGNsa0IgdXNlcyByZWcgRCAqLwogI2RlZmluZSBEQUNSRUdfQUMwX0kJCTB4NDgJCS8qIGNsb2NrIEEgcmVnIEMgKi8KICNkZWZpbmUgREFDUkVHX0FDMV9JCQkweDQ5CmRpZmYgLS1naXQgYS9pbmNsdWRlL3hlbi9pbnRlcmZhY2UvZWxmbm90ZS5oIGIvaW5jbHVkZS94ZW4vaW50ZXJmYWNlL2VsZm5vdGUuaAppbmRleCA3YTgyNjJjLi4wMzYwYjE1IDEwMDY0NAotLS0gYS9pbmNsdWRlL3hlbi9pbnRlcmZhY2UvZWxmbm90ZS5oCisrKyBiL2luY2x1ZGUveGVuL2ludGVyZmFjZS9lbGZub3RlLmgKQEAgLTUxLDcgKzUxLDcgQEAKIAogLyoKICAqIFRoZSBvZmZzZXQgb2YgdGhlIEVMRiBwYWRkciBmaWVsZCBmcm9tIHRoZSBhY3V0YWwgcmVxdWlyZWQKLSAqIHBzdWVkby1waHlzaWNhbCBhZGRyZXNzIChudW1lcmljKS4KKyAqIHBzZXVkby1waHlzaWNhbCBhZGRyZXNzIChudW1lcmljKS4KICAqCiAgKiBUaGlzIGlzIHVzZWQgdG8gbWFpbnRhaW4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBrZXJuZWxzCiAgKiB3aGljaCB3cm90ZSBfX1BBR0VfT0ZGU0VUIGludG8gdGhhdCBmaWVsZC4gVGhpcyBmaWVsZCBkZWZhdWx0cyB0byAwCmRpZmYgLS1naXQgYS9pbml0L2RvX21vdW50cy5jIGIvaW5pdC9kb19tb3VudHMuYwppbmRleCAzZTAxMTIxLi5jMDg1MWE4IDEwMDY0NAotLS0gYS9pbml0L2RvX21vdW50cy5jCisrKyBiL2luaXQvZG9fbW91bnRzLmMKQEAgLTE4Niw3ICsxODYsNyBAQAogCQlnb3RvIGRvbmU7CiAKIAkvKgotCSAqIHRyeSBub24tZXhpc3RhbnQsIGJ1dCB2YWxpZCBwYXJ0aXRpb24sIHdoaWNoIG1heSBvbmx5IGV4aXN0CisJICogdHJ5IG5vbi1leGlzdGVudCwgYnV0IHZhbGlkIHBhcnRpdGlvbiwgd2hpY2ggbWF5IG9ubHkgZXhpc3QKIAkgKiBhZnRlciByZXZhbGlkYXRpbmcgdGhlIGRpc2ssIGxpa2UgcGFydGl0aW9uZWQgbWQgZGV2aWNlcwogCSAqLwogCXdoaWxlIChwID4gcyAmJiBpc2RpZ2l0KHBbLTFdKSkKZGlmZiAtLWdpdCBhL2lwYy9tc2cuYyBiL2lwYy9tc2cuYwppbmRleCAwZTczMmU5Li43Mzg1ZGUyIDEwMDY0NAotLS0gYS9pcGMvbXNnLmMKKysrIGIvaXBjL21zZy5jCkBAIC03MDQsNyArNzA0LDcgQEAKIAltc3EtPnFfc3RpbWUgPSBnZXRfc2Vjb25kcygpOwogCiAJaWYgKCFwaXBlbGluZWRfc2VuZChtc3EsIG1zZykpIHsKLQkJLyogbm9vbmUgaXMgd2FpdGluZyBmb3IgdGhpcyBtZXNzYWdlLCBlbnF1ZXVlIGl0ICovCisJCS8qIG5vIG9uZSBpcyB3YWl0aW5nIGZvciB0aGlzIG1lc3NhZ2UsIGVucXVldWUgaXQgKi8KIAkJbGlzdF9hZGRfdGFpbCgmbXNnLT5tX2xpc3QsICZtc3EtPnFfbWVzc2FnZXMpOwogCQltc3EtPnFfY2J5dGVzICs9IG1zZ3N6OwogCQltc3EtPnFfcW51bSsrOwpAQCAtODQyLDcgKzg0Miw3IEBACiAJCSAqIERpc2FibGUgcHJlZW1wdGlvbi4gIFdlIGRvbid0IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHF1ZXVlCiAJCSAqIGFuZCBnZXR0aW5nIGEgcmVmZXJlbmNlIHdvdWxkIGRlZmVhdCB0aGUgaWRlYSBvZiBhIGxvY2tsZXNzCiAJCSAqIG9wZXJhdGlvbiwgdGh1cyB0aGUgY29kZSByZWxpZXMgb24gcmN1IHRvIGd1YXJhbnRlZSB0aGUKLQkJICogZXhpc3RhbmNlIG9mIG1zcToKKwkJICogZXhpc3RlbmNlIG9mIG1zcToKIAkJICogUHJpb3IgdG8gZGVzdHJ1Y3Rpb24sIGV4cHVuZ2VfYWxsKC1FSVJETSkgY2hhbmdlcyByX21zZy4KIAkJICogVGh1cyBpZiByX21zZyBpcyAtRUFHQUlOLCB0aGVuIHRoZSBxdWV1ZSBub3QgeWV0IGRlc3Ryb3llZC4KIAkJICogcmN1X3JlYWRfbG9jaygpIHByZXZlbnRzIHByZWVtcHRpb24gYmV0d2VlbiByZWFkaW5nIHJfbXNnCmRpZmYgLS1naXQgYS9pcGMvc2VtLmMgYi9pcGMvc2VtLmMKaW5kZXggYWUwNDBhMC4uMzQxOTNlZCAxMDA2NDQKLS0tIGEvaXBjL3NlbS5jCisrKyBiL2lwYy9zZW0uYwpAQCAtMTM2Miw3ICsxMzYyLDcgQEAKIAkgKiBzZW1pZCBpZGVudGlmaWVycyBhcmUgbm90IHVuaXF1ZSAtIGZpbmRfYWxsb2NfdW5kbyBtYXkgaGF2ZQogCSAqIGFsbG9jYXRlZCBhbiB1bmRvIHN0cnVjdHVyZSwgaXQgd2FzIGludmFsaWRhdGVkIGJ5IGFuIFJNSUQKIAkgKiBhbmQgbm93IGEgbmV3IGFycmF5IHdpdGggcmVjZWl2ZWQgdGhlIHNhbWUgaWQuIENoZWNrIGFuZCBmYWlsLgotCSAqIFRoaXMgY2FzZSBjYW4gYmUgZGV0ZWN0ZWQgY2hlY2tpbmcgdW4tPnNlbWlkLiBUaGUgZXhpc3RhbmNlIG9mCisJICogVGhpcyBjYXNlIGNhbiBiZSBkZXRlY3RlZCBjaGVja2luZyB1bi0+c2VtaWQuIFRoZSBleGlzdGVuY2Ugb2YKIAkgKiAidW4iIGl0c2VsZiBpcyBndWFyYW50ZWVkIGJ5IHJjdS4KIAkgKi8KIAllcnJvciA9IC1FSURSTTsKZGlmZiAtLWdpdCBhL2lwYy9zaG0uYyBiL2lwYy9zaG0uYwppbmRleCA4NjQ0NDUyLi43MjlhY2I3IDEwMDY0NAotLS0gYS9pcGMvc2htLmMKKysrIGIvaXBjL3NobS5jCkBAIC0xMDU2LDcgKzEwNTYsNyBAQAogCS8qCiAJICogV2UgbmVlZCBsb29rIG5vIGZ1cnRoZXIgdGhhbiB0aGUgbWF4aW11bSBhZGRyZXNzIGEgZnJhZ21lbnQKIAkgKiBjb3VsZCBwb3NzaWJseSBoYXZlIGxhbmRlZCBhdC4gQWxzbyBjYXN0IHRoaW5ncyB0byBsb2ZmX3QgdG8KLQkgKiBwcmV2ZW50IG92ZXJmbG93cyBhbmQgbWFrZSBjb21wYXJpc2lvbnMgdnMuIGVxdWFsLXdpZHRoIHR5cGVzLgorCSAqIHByZXZlbnQgb3ZlcmZsb3dzIGFuZCBtYWtlIGNvbXBhcmlzb25zIHZzLiBlcXVhbC13aWR0aCB0eXBlcy4KIAkgKi8KIAlzaXplID0gUEFHRV9BTElHTihzaXplKTsKIAl3aGlsZSAodm1hICYmIChsb2ZmX3QpKHZtYS0+dm1fZW5kIC0gYWRkcikgPD0gc2l6ZSkgewpkaWZmIC0tZ2l0IGEva2VybmVsL2F1ZGl0X3RyZWUuYyBiL2tlcm5lbC9hdWRpdF90cmVlLmMKaW5kZXggMzdiMmJlYS4uZTk5ZGRhMCAxMDA2NDQKLS0tIGEva2VybmVsL2F1ZGl0X3RyZWUuYworKysgYi9rZXJuZWwvYXVkaXRfdHJlZS5jCkBAIC02MDcsNyArNjA3LDcgQEAKIAkJc3Bpbl9sb2NrKCZoYXNoX2xvY2spOwogCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KG5vZGUsICZ0cmVlLT5jaHVua3MsIGxpc3QpIHsKIAkJCXN0cnVjdCBhdWRpdF9jaHVuayAqY2h1bmsgPSBmaW5kX2NodW5rKG5vZGUpOwotCQkJLyogdGhpcyBjb3VsZCBiZSBOVUxMIGlmIHRoZSB3YXRjaCBpcyBkaWVpbmcgZWxzZSB3aGVyZS4uLiAqLworCQkJLyogdGhpcyBjb3VsZCBiZSBOVUxMIGlmIHRoZSB3YXRjaCBpcyBkeWluZyBlbHNlIHdoZXJlLi4uICovCiAJCQlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gY2h1bmstPm1hcmsuaS5pbm9kZTsKIAkJCW5vZGUtPmluZGV4IHw9IDFVPDwzMTsKIAkJCWlmIChpdGVyYXRlX21vdW50cyhjb21wYXJlX3Jvb3QsIGlub2RlLCByb290X21udCkpCmRpZmYgLS1naXQgYS9rZXJuZWwvYXVkaXRzYy5jIGIva2VybmVsL2F1ZGl0c2MuYwppbmRleCBmNDlhMDMxLi5iMzM1MTNhIDEwMDY0NAotLS0gYS9rZXJuZWwvYXVkaXRzYy5jCisrKyBiL2tlcm5lbC9hdWRpdHNjLmMKQEAgLTEwMTEsNyArMTAxMSw3IEBACiAvKgogICogdG9fc2VuZCBhbmQgbGVuX3NlbnQgYWNjb3VudGluZyBhcmUgdmVyeSBsb29zZSBlc3RpbWF0ZXMuICBXZSBhcmVuJ3QKICAqIHJlYWxseSB3b3JyaWVkIGFib3V0IGEgaGFyZCBjYXAgdG8gTUFYX0VYRUNWRV9BVURJVF9MRU4gc28gbXVjaCBhcyBiZWluZwotICogd2l0aGluIGFib3V0IDUwMCBieXRlcyAobmV4dCBwYWdlIGJvdW5kcnkpCisgKiB3aXRoaW4gYWJvdXQgNTAwIGJ5dGVzIChuZXh0IHBhZ2UgYm91bmRhcnkpCiAgKgogICogd2h5IHNucHJpbnRmPyAgYW4gaW50IGlzIHVwIHRvIDEyIGRpZ2l0cyBsb25nLiAgaWYgd2UganVzdCBhc3N1bWVkIHdoZW4KICAqIGxvZ2dpbmcgdGhhdCBhWyVkXT0gd2FzIGdvaW5nIHRvIGJlIDE2IGNoYXJhY3RlcnMgbG9uZyB3ZSB3b3VsZCBiZSB3YXN0aW5nCmRpZmYgLS1naXQgYS9rZXJuZWwvY2dyb3VwLmMgYi9rZXJuZWwvY2dyb3VwLmMKaW5kZXggZTMxYjIyMC4uMjVjN2ViNSAxMDA2NDQKLS0tIGEva2VybmVsL2Nncm91cC5jCisrKyBiL2tlcm5lbC9jZ3JvdXAuYwpAQCAtMTU3LDcgKzE1Nyw3IEBACiB9OwogCiAvKgotICogY2dyb3VwX2V2ZW50IHJlcHJlc2VudHMgZXZlbnRzIHdoaWNoIHVzZXJzcGFjZSB3YW50IHRvIHJlY2lldmUuCisgKiBjZ3JvdXBfZXZlbnQgcmVwcmVzZW50cyBldmVudHMgd2hpY2ggdXNlcnNwYWNlIHdhbnQgdG8gcmVjZWl2ZS4KICAqLwogc3RydWN0IGNncm91cF9ldmVudCB7CiAJLyoKZGlmZiAtLWdpdCBhL2tlcm5lbC9jcHUuYyBiL2tlcm5lbC9jcHUuYwppbmRleCBjOTVmYzRkLi4xMmI3NDU4IDEwMDY0NAotLS0gYS9rZXJuZWwvY3B1LmMKKysrIGIva2VybmVsL2NwdS5jCkBAIC0xMjYsNyArMTI2LDcgQEAKICNlbHNlIC8qICNpZiBDT05GSUdfSE9UUExVR19DUFUgKi8KIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnX2JlZ2luKHZvaWQpIHt9CiBzdGF0aWMgdm9pZCBjcHVfaG90cGx1Z19kb25lKHZvaWQpIHt9Ci0jZW5kaWYJLyogI2VzbGUgI2lmIENPTkZJR19IT1RQTFVHX0NQVSAqLworI2VuZGlmCS8qICNlbHNlICNpZiBDT05GSUdfSE9UUExVR19DUFUgKi8KIAogLyogTmVlZCB0byBrbm93IGFib3V0IENQVXMgZ29pbmcgdXAvZG93bj8gKi8KIGludCBfX3JlZiByZWdpc3Rlcl9jcHVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYikKZGlmZiAtLWdpdCBhL2tlcm5lbC9kZWJ1Zy9kZWJ1Z19jb3JlLmMgYi9rZXJuZWwvZGVidWcvZGVidWdfY29yZS5jCmluZGV4IGNlZmQ0YTEuLmJhZDY3ODYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9kZWJ1Zy9kZWJ1Z19jb3JlLmMKKysrIGIva2VybmVsL2RlYnVnL2RlYnVnX2NvcmUuYwpAQCAtNTM4LDcgKzUzOCw3IEBACiAKIAkvKgogCSAqIEZvciBzaW5nbGUgc3RlcHBpbmcsIHRyeSB0byBvbmx5IGVudGVyIG9uIHRoZSBwcm9jZXNzb3IKLQkgKiB0aGF0IHdhcyBzaW5nbGUgc3RlcHBpbmcuICBUbyBnYXVyZCBhZ2FpbnN0IGEgZGVhZGxvY2ssIHRoZQorCSAqIHRoYXQgd2FzIHNpbmdsZSBzdGVwcGluZy4gIFRvIGd1YXJkIGFnYWluc3QgYSBkZWFkbG9jaywgdGhlCiAJICoga2VybmVsIHdpbGwgb25seSB0cnkgZm9yIHRoZSB2YWx1ZSBvZiBzc3RlcF90cmllcyBiZWZvcmUKIAkgKiBnaXZpbmcgdXAgYW5kIGNvbnRpbnVpbmcgb24uCiAJICovCmRpZmYgLS1naXQgYS9rZXJuZWwvZGVidWcva2RiL2tkYl9tYWluLmMgYi9rZXJuZWwvZGVidWcva2RiL2tkYl9tYWluLmMKaW5kZXggNmJjNmUzYi4uYmUxNDc3OSAxMDA2NDQKLS0tIGEva2VybmVsL2RlYnVnL2tkYi9rZGJfbWFpbi5jCisrKyBiL2tlcm5lbC9kZWJ1Zy9rZGIva2RiX21haW4uYwpAQCAtNDQxLDkgKzQ0MSw5IEBACiAgKglzeW1ib2wgbmFtZSwgYW5kIG9mZnNldCB0byB0aGUgY2FsbGVyLgogICoKICAqCVRoZSBhcmd1bWVudCBtYXkgY29uc2lzdCBvZiBhIG51bWVyaWMgdmFsdWUgKGRlY2ltYWwgb3IKLSAqCWhleGlkZWNpbWFsKSwgYSBzeW1ib2wgbmFtZSwgYSByZWdpc3RlciBuYW1lIChwcmVjZWVkZWQgYnkgdGhlCisgKgloZXhpZGVjaW1hbCksIGEgc3ltYm9sIG5hbWUsIGEgcmVnaXN0ZXIgbmFtZSAocHJlY2VkZWQgYnkgdGhlCiAgKglwZXJjZW50IHNpZ24pLCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aXRoIGEgbnVtZXJpYyB2YWx1ZQotICoJKHByZWNlZWRlZCBieSBhIGRvbGxhciBzaWduKSBvciBhIHNpbXBsZSBhcml0aG1ldGljIGV4cHJlc3Npb24KKyAqCShwcmVjZWRlZCBieSBhIGRvbGxhciBzaWduKSBvciBhIHNpbXBsZSBhcml0aG1ldGljIGV4cHJlc3Npb24KICAqCWNvbnNpc3Rpbmcgb2YgYSBzeW1ib2wgbmFtZSwgKy8tLCBhbmQgYSBudW1lcmljIGNvbnN0YW50IHZhbHVlCiAgKgkob2Zmc2V0KS4KICAqIFBhcmFtZXRlcnM6CkBAIC0xMzM1LDcgKzEzMzUsNyBAQAogICoJZXJyb3IJCVRoZSBoYXJkd2FyZS1kZWZpbmVkIGVycm9yIGNvZGUKICAqCXJlYXNvbjIJCWtkYidzIGN1cnJlbnQgcmVhc29uIGNvZGUuCiAgKgkJCUluaXRpYWxseSBlcnJvciBidXQgY2FuIGNoYW5nZQotICoJCQlhY29yZGluZyB0byBrZGIgc3RhdGUuCisgKgkJCWFjY29yZGluZyB0byBrZGIgc3RhdGUuCiAgKglkYl9yZXN1bHQJUmVzdWx0IGNvZGUgZnJvbSBicmVhayBvciBkZWJ1ZyBwb2ludC4KICAqCXJlZ3MJCVRoZSBleGNlcHRpb24gZnJhbWUgYXQgdGltZSBvZiBmYXVsdC9icmVha3BvaW50LgogICoJCQlzaG91bGQgYWx3YXlzIGJlIHZhbGlkLgpkaWZmIC0tZ2l0IGEva2VybmVsL2RlYnVnL2tkYi9rZGJfc3VwcG9ydC5jIGIva2VybmVsL2RlYnVnL2tkYi9rZGJfc3VwcG9ydC5jCmluZGV4IDZiMjQ4NWQuLjU1MzJkZDMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9kZWJ1Zy9rZGIva2RiX3N1cHBvcnQuYworKysgYi9rZXJuZWwvZGVidWcva2RiL2tkYl9zdXBwb3J0LmMKQEAgLTU0NSw3ICs1NDUsNyBAQAogICoJTWFzayBmb3IgcHJvY2VzcyBzdGF0ZS4KICAqIE5vdGVzOgogICoJVGhlIG1hc2sgZm9sZHMgZGF0YSBmcm9tIHNldmVyYWwgc291cmNlcyBpbnRvIGEgc2luZ2xlIGxvbmcgdmFsdWUsIHNvCi0gKgliZSBjYXJlZnVsbCBub3QgdG8gb3ZlcmxhcCB0aGUgYml0cy4gIFRBU0tfKiBiaXRzIGFyZSBpbiB0aGUgTFNCLAorICoJYmUgY2FyZWZ1bCBub3QgdG8gb3ZlcmxhcCB0aGUgYml0cy4gIFRBU0tfKiBiaXRzIGFyZSBpbiB0aGUgTFNCLAogICoJc3BlY2lhbCBjYXNlcyBsaWtlIFVOUlVOTkFCTEUgYXJlIGluIHRoZSBNU0IuICBBcyBvZiAyLjYuMTAtcmMxIHRoZXJlCiAgKglpcyBubyBvdmVybGFwIGJldHdlZW4gVEFTS18qIGFuZCBFWElUXyogYnV0IHRoYXQgbWF5IG5vdCBhbHdheXMgYmUKICAqCXRydWUsIHNvIEVYSVRfKiBiaXRzIGFyZSBzaGlmdGVkIGxlZnQgMTYgYml0cyBiZWZvcmUgYmVpbmcgc3RvcmVkIGluCmRpZmYgLS1naXQgYS9rZXJuZWwvZXhpdC5jIGIva2VybmVsL2V4aXQuYwppbmRleCA2YTQ4OGFkLi5mNWQyZjYzIDEwMDY0NAotLS0gYS9rZXJuZWwvZXhpdC5jCisrKyBiL2tlcm5lbC9leGl0LmMKQEAgLTg0MSw3ICs4NDEsNyBAQAogCS8qIExldCBmYXRoZXIga25vdyB3ZSBkaWVkCiAJICoKIAkgKiBUaHJlYWQgc2lnbmFscyBhcmUgY29uZmlndXJhYmxlLCBidXQgeW91IGFyZW4ndCBnb2luZyB0byB1c2UKLQkgKiB0aGF0IHRvIHNlbmQgc2lnbmFscyB0byBhcmJpdGFyeSBwcm9jZXNzZXMuCisJICogdGhhdCB0byBzZW5kIHNpZ25hbHMgdG8gYXJiaXRyYXJ5IHByb2Nlc3Nlcy4KIAkgKiBUaGF0IHN0b3BzIHJpZ2h0IG5vdy4KIAkgKgogCSAqIElmIHRoZSBwYXJlbnQgZXhlYyBpZCBkb2Vzbid0IG1hdGNoIHRoZSBleGVjIGlkIHdlIHNhdmVkCmRpZmYgLS1naXQgYS9rZXJuZWwvaXJxL2NoaXAuYyBiL2tlcm5lbC9pcnEvY2hpcC5jCmluZGV4IDFkYWZjODYuLjRhZjFlMmIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9pcnEvY2hpcC5jCisrKyBiL2tlcm5lbC9pcnEvY2hpcC5jCkBAIC00MTUsNyArNDE1LDcgQEAKICAqCUBkZXNjOgl0aGUgaW50ZXJydXB0IGRlc2NyaXB0aW9uIHN0cnVjdHVyZSBmb3IgdGhpcyBpcnEKICAqCiAgKglJbnRlcnJ1cHQgb2NjdXJlcyBvbiB0aGUgZmFsbGluZyBhbmQvb3IgcmlzaW5nIGVkZ2Ugb2YgYSBoYXJkd2FyZQotICoJc2lnbmFsLiBUaGUgb2NjdXJlbmNlIGlzIGxhdGNoZWQgaW50byB0aGUgaXJxIGNvbnRyb2xsZXIgaGFyZHdhcmUKKyAqCXNpZ25hbC4gVGhlIG9jY3VycmVuY2UgaXMgbGF0Y2hlZCBpbnRvIHRoZSBpcnEgY29udHJvbGxlciBoYXJkd2FyZQogICoJYW5kIG11c3QgYmUgYWNrZWQgaW4gb3JkZXIgdG8gYmUgcmVlbmFibGVkLiBBZnRlciB0aGUgYWNrIGFub3RoZXIKICAqCWludGVycnVwdCBjYW4gaGFwcGVuIG9uIHRoZSBzYW1lIHNvdXJjZSBldmVuIGJlZm9yZSB0aGUgZmlyc3Qgb25lCiAgKglpcyBoYW5kbGVkIGJ5IHRoZSBhc3NvY2lhdGVkIGV2ZW50IGhhbmRsZXIuIElmIHRoaXMgaGFwcGVucyBpdApkaWZmIC0tZ2l0IGEva2VybmVsL2lycS9taWdyYXRpb24uYyBiL2tlcm5lbC9pcnEvbWlncmF0aW9uLmMKaW5kZXggYmM2MTk0Ni4uNDc0MjA5MCAxMDA2NDQKLS0tIGEva2VybmVsL2lycS9taWdyYXRpb24uYworKysgYi9rZXJuZWwvaXJxL21pZ3JhdGlvbi5jCkBAIC0zNSw3ICszNSw3IEBACiAJICogZG8gdGhlIGRpc2FibGUsIHJlLXByb2dyYW0sIGVuYWJsZSBzZXF1ZW5jZS4KIAkgKiBUaGlzIGlzICpub3QqIHBhcnRpY3VsYXJseSBpbXBvcnRhbnQgZm9yIGxldmVsIHRyaWdnZXJlZAogCSAqIGJ1dCBpbiBhIGVkZ2UgdHJpZ2dlciBjYXNlLCB3ZSBtaWdodCBiZSBzZXR0aW5nIHJ0ZQotCSAqIHdoZW4gYW4gYWN0aXZlIHRyaWdnZXIgaXMgY29tbWluZyBpbi4gVGhpcyBjb3VsZAorCSAqIHdoZW4gYW4gYWN0aXZlIHRyaWdnZXIgaXMgY29taW5nIGluLiBUaGlzIGNvdWxkCiAJICogY2F1c2Ugc29tZSBpb2FwaWNzIHRvIG1hbC1mdW5jdGlvbi4KIAkgKiBCZWluZyBwYXJhbm9pZCBpIGd1ZXNzIQogCSAqCmRpZmYgLS1naXQgYS9rZXJuZWwva2V4ZWMuYyBiL2tlcm5lbC9rZXhlYy5jCmluZGV4IDRlMjQwYTMuLjU1OTM2ZjkgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9rZXhlYy5jCisrKyBiL2tlcm5lbC9rZXhlYy5jCkBAIC0xNDQsNyArMTQ0LDcgQEAKIAkvKiBJbml0aWFsaXplIHRoZSBsaXN0IG9mIGRlc3RpbmF0aW9uIHBhZ2VzICovCiAJSU5JVF9MSVNUX0hFQUQoJmltYWdlLT5kZXN0X3BhZ2VzKTsKIAotCS8qIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgdW51c2VhYmxlIHBhZ2VzICovCisJLyogSW5pdGlhbGl6ZSB0aGUgbGlzdCBvZiB1bnVzYWJsZSBwYWdlcyAqLwogCUlOSVRfTElTVF9IRUFEKCZpbWFnZS0+dW51c2VhYmxlX3BhZ2VzKTsKIAogCS8qIFJlYWQgaW4gdGhlIHNlZ21lbnRzICovCkBAIC00NTQsNyArNDU0LDcgQEAKIAkvKiBEZWFsIHdpdGggdGhlIGRlc3RpbmF0aW9uIHBhZ2VzIEkgaGF2ZSBpbmFkdmVydGVudGx5IGFsbG9jYXRlZC4KIAkgKgogCSAqIElkZWFsbHkgSSB3b3VsZCBjb252ZXJ0IG11bHRpLXBhZ2UgYWxsb2NhdGlvbnMgaW50byBzaW5nbGUKLQkgKiBwYWdlIGFsbG9jYXRpb25zLCBhbmQgYWRkIGV2ZXJ5dGluZyB0byBpbWFnZS0+ZGVzdF9wYWdlcy4KKwkgKiBwYWdlIGFsbG9jYXRpb25zLCBhbmQgYWRkIGV2ZXJ5dGhpbmcgdG8gaW1hZ2UtPmRlc3RfcGFnZXMuCiAJICoKIAkgKiBGb3Igbm93IGl0IGlzIHNpbXBsZXIgdG8ganVzdCBmcmVlIHRoZSBwYWdlcy4KIAkgKi8KQEAgLTYwMiw3ICs2MDIsNyBAQAogCS8qIFdhbGsgdGhyb3VnaCBhbmQgZnJlZSBhbnkgZXh0cmEgZGVzdGluYXRpb24gcGFnZXMgSSBtYXkgaGF2ZSAqLwogCWtpbWFnZV9mcmVlX3BhZ2VfbGlzdCgmaW1hZ2UtPmRlc3RfcGFnZXMpOwogCi0JLyogV2FsayB0aHJvdWdoIGFuZCBmcmVlIGFueSB1bnVzZWFibGUgcGFnZXMgSSBoYXZlIGNhY2hlZCAqLworCS8qIFdhbGsgdGhyb3VnaCBhbmQgZnJlZSBhbnkgdW51c2FibGUgcGFnZXMgSSBoYXZlIGNhY2hlZCAqLwogCWtpbWFnZV9mcmVlX3BhZ2VfbGlzdCgmaW1hZ2UtPnVudXNlYWJsZV9wYWdlcyk7CiAKIH0KZGlmZiAtLWdpdCBhL2tlcm5lbC9rdGhyZWFkLmMgYi9rZXJuZWwva3RocmVhZC5jCmluZGV4IDY4NGFiM2YuLjNiMzRkMjcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9rdGhyZWFkLmMKKysrIGIva2VybmVsL2t0aHJlYWQuYwpAQCAtMTM5LDcgKzEzOSw3IEBACiAgKiBpbiBAbm9kZSwgdG8gZ2V0IE5VTUEgYWZmaW5pdHkgZm9yIGt0aHJlYWQgc3RhY2ssIG9yIGVsc2UgZ2l2ZSAtMS4KICAqIFdoZW4gd29rZW4sIHRoZSB0aHJlYWQgd2lsbCBydW4gQHRocmVhZGZuKCkgd2l0aCBAZGF0YSBhcyBpdHMKICAqIGFyZ3VtZW50LiBAdGhyZWFkZm4oKSBjYW4gZWl0aGVyIGNhbGwgZG9fZXhpdCgpIGRpcmVjdGx5IGlmIGl0IGlzIGEKLSAqIHN0YW5kYWxvbmUgdGhyZWFkIGZvciB3aGljaCBub29uZSB3aWxsIGNhbGwga3RocmVhZF9zdG9wKCksIG9yCisgKiBzdGFuZGFsb25lIHRocmVhZCBmb3Igd2hpY2ggbm8gb25lIHdpbGwgY2FsbCBrdGhyZWFkX3N0b3AoKSwgb3IKICAqIHJldHVybiB3aGVuICdrdGhyZWFkX3Nob3VsZF9zdG9wKCknIGlzIHRydWUgKHdoaWNoIG1lYW5zCiAgKiBrdGhyZWFkX3N0b3AoKSBoYXMgYmVlbiBjYWxsZWQpLiAgVGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgemVybwogICogb3IgYSBuZWdhdGl2ZSBlcnJvciBudW1iZXI7IGl0IHdpbGwgYmUgcGFzc2VkIHRvIGt0aHJlYWRfc3RvcCgpLgpkaWZmIC0tZ2l0IGEva2VybmVsL2xhdGVuY3l0b3AuYyBiL2tlcm5lbC9sYXRlbmN5dG9wLmMKaW5kZXggZWU3NGIzNS4uMzc2MDY2ZSAxMDA2NDQKLS0tIGEva2VybmVsL2xhdGVuY3l0b3AuYworKysgYi9rZXJuZWwvbGF0ZW5jeXRvcC5jCkBAIC0xNTMsNyArMTUzLDcgQEAKIH0KIAogLyoqCi0gKiBfX2FjY291bnRfc2NoZWR1bGVyX2xhdGVuY3kgLSByZWNvcmQgYW4gb2NjdXJlZCBsYXRlbmN5CisgKiBfX2FjY291bnRfc2NoZWR1bGVyX2xhdGVuY3kgLSByZWNvcmQgYW4gb2NjdXJyZWQgbGF0ZW5jeQogICogQHRzayAtIHRoZSB0YXNrIHN0cnVjdCBvZiB0aGUgdGFzayBoaXR0aW5nIHRoZSBsYXRlbmN5CiAgKiBAdXNlY3MgLSB0aGUgZHVyYXRpb24gb2YgdGhlIGxhdGVuY3kgaW4gbWljcm9zZWNvbmRzCiAgKiBAaW50ZXIgLSAxIGlmIHRoZSBzbGVlcCB3YXMgaW50ZXJydXB0aWJsZSwgMCBpZiB1bmludGVycnVwdGlibGUKZGlmZiAtLWdpdCBhL2tlcm5lbC9sb2NrZGVwLmMgYi9rZXJuZWwvbG9ja2RlcC5jCmluZGV4IDBkMjA1OGQuLjUzYTY4OTUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9sb2NrZGVwLmMKKysrIGIva2VybmVsL2xvY2tkZXAuYwpAQCAtMjMwOSw3ICsyMzA5LDcgQEAKIAlpZiAodW5saWtlbHkoY3Vyci0+aGFyZGlycXNfZW5hYmxlZCkpIHsKIAkJLyoKIAkJICogTmVpdGhlciBpcnEgbm9yIHByZWVtcHRpb24gYXJlIGRpc2FibGVkIGhlcmUKLQkJICogc28gdGhpcyBpcyByYWN5IGJ5IG5hdHVyZSBidXQgbG9vc2luZyBvbmUgaGl0CisJCSAqIHNvIHRoaXMgaXMgcmFjeSBieSBuYXR1cmUgYnV0IGxvc2luZyBvbmUgaGl0CiAJCSAqIGluIGEgc3RhdCBpcyBub3QgYSBiaWcgZGVhbC4KIAkJICovCiAJCV9fZGVidWdfYXRvbWljX2luYyhyZWR1bmRhbnRfaGFyZGlycXNfb24pOwpAQCAtMjYyMCw3ICsyNjIwLDcgQEAKIAlpZiAoIWdyYXBoX2xvY2soKSkKIAkJcmV0dXJuIDA7CiAJLyoKLQkgKiBNYWtlIHN1cmUgd2UgZGlkbnQgcmFjZToKKwkgKiBNYWtlIHN1cmUgd2UgZGlkbid0IHJhY2U6CiAJICovCiAJaWYgKHVubGlrZWx5KGhsb2NrX2NsYXNzKHRoaXMpLT51c2FnZV9tYXNrICYgbmV3X21hc2spKSB7CiAJCWdyYXBoX3VubG9jaygpOwpkaWZmIC0tZ2l0IGEva2VybmVsL21vZHVsZS5jIGIva2VybmVsL21vZHVsZS5jCmluZGV4IDFmOWY3YmMuLmQ1OTM4YTUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9tb2R1bGUuYworKysgYi9rZXJuZWwvbW9kdWxlLmMKQEAgLTgwOSw3ICs4MDksNyBAQAogCQl3YWl0X2Zvcl96ZXJvX3JlZmNvdW50KG1vZCk7CiAKIAltdXRleF91bmxvY2soJm1vZHVsZV9tdXRleCk7Ci0JLyogRmluYWwgZGVzdHJ1Y3Rpb24gbm93IG5vb25lIGlzIHVzaW5nIGl0LiAqLworCS8qIEZpbmFsIGRlc3RydWN0aW9uIG5vdyBubyBvbmUgaXMgdXNpbmcgaXQuICovCiAJaWYgKG1vZC0+ZXhpdCAhPSBOVUxMKQogCQltb2QtPmV4aXQoKTsKIAlibG9ja2luZ19ub3RpZmllcl9jYWxsX2NoYWluKCZtb2R1bGVfbm90aWZ5X2xpc3QsCkBAIC0yNzc3LDcgKzI3NzcsNyBAQAogCW1vZC0+c3RhdGUgPSBNT0RVTEVfU1RBVEVfQ09NSU5HOwogCiAJLyogTm93IHNldyBpdCBpbnRvIHRoZSBsaXN0cyBzbyB3ZSBjYW4gZ2V0IGxvY2tkZXAgYW5kIG9vcHMKLQkgKiBpbmZvIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLiAgTm9vbmUgc2hvdWxkIGFjY2VzcyB1cywgc2luY2UKKwkgKiBpbmZvIGR1cmluZyBhcmd1bWVudCBwYXJzaW5nLiAgTm8gb25lIHNob3VsZCBhY2Nlc3MgdXMsIHNpbmNlCiAJICogc3Ryb25nX3RyeV9tb2R1bGVfZ2V0KCkgd2lsbCBmYWlsLgogCSAqIGxvY2tkZXAvb29wcyBjYW4gcnVuIGFzeW5jaHJvbm91cywgc28gdXNlIHRoZSBSQ1UgbGlzdCBpbnNlcnRpb24KIAkgKiBmdW5jdGlvbiB0byBpbnNlcnQgaW4gYSB3YXkgc2FmZSB0byBjb25jdXJyZW50IHJlYWRlcnMuCkBAIC0yOTcxLDcgKzI5NzEsNyBAQAogCWVsc2UKIAkJbmV4dHZhbCA9ICh1bnNpZ25lZCBsb25nKW1vZC0+bW9kdWxlX2NvcmUrbW9kLT5jb3JlX3RleHRfc2l6ZTsKIAotCS8qIFNjYW4gZm9yIGNsb3Nlc3QgcHJlY2VlZGluZyBzeW1ib2wsIGFuZCBuZXh0IHN5bWJvbC4gKEVMRgorCS8qIFNjYW4gZm9yIGNsb3Nlc3QgcHJlY2VkaW5nIHN5bWJvbCwgYW5kIG5leHQgc3ltYm9sLiAoRUxGCiAJICAgc3RhcnRzIHJlYWwgc3ltYm9scyBhdCAxKS4gKi8KIAlmb3IgKGkgPSAxOyBpIDwgbW9kLT5udW1fc3ltdGFiOyBpKyspIHsKIAkJaWYgKG1vZC0+c3ltdGFiW2ldLnN0X3NobmR4ID09IFNITl9VTkRFRikKZGlmZiAtLWdpdCBhL2tlcm5lbC9tdXRleC5jIGIva2VybmVsL211dGV4LmMKaW5kZXggYTU4ODlmYi4uYzQxOTVmYSAxMDA2NDQKLS0tIGEva2VybmVsL211dGV4LmMKKysrIGIva2VybmVsL211dGV4LmMKQEAgLTI0NSw3ICsyNDUsNyBAQAogCQl9CiAJCV9fc2V0X3Rhc2tfc3RhdGUodGFzaywgc3RhdGUpOwogCi0JCS8qIGRpZG50IGdldCB0aGUgbG9jaywgZ28gdG8gc2xlZXA6ICovCisJCS8qIGRpZG4ndCBnZXQgdGhlIGxvY2ssIGdvIHRvIHNsZWVwOiAqLwogCQlzcGluX3VubG9ja19tdXRleCgmbG9jay0+d2FpdF9sb2NrLCBmbGFncyk7CiAJCXByZWVtcHRfZW5hYmxlX25vX3Jlc2NoZWQoKTsKIAkJc2NoZWR1bGUoKTsKZGlmZiAtLWdpdCBhL2tlcm5lbC9wYWRhdGEuYyBiL2tlcm5lbC9wYWRhdGEuYwppbmRleCA3NTEwMTk0Li5iOTE5NDFkIDEwMDY0NAotLS0gYS9rZXJuZWwvcGFkYXRhLmMKKysrIGIva2VybmVsL3BhZGF0YS5jCkBAIC0yNjIsNyArMjYyLDcgQEAKIAkJLyoKIAkJICogVGhpcyBjcHUgaGFzIHRvIGRvIHRoZSBwYXJhbGxlbCBwcm9jZXNzaW5nIG9mIHRoZSBuZXh0CiAJCSAqIG9iamVjdC4gSXQncyB3YWl0aW5nIGluIHRoZSBjcHUncyBwYXJhbGxlbGl6YXRpb24gcXVldWUsCi0JCSAqIHNvIGV4aXQgaW1lZGlhdGVseS4KKwkJICogc28gZXhpdCBpbW1lZGlhdGVseS4KIAkJICovCiAJCWlmIChQVFJfRVJSKHBhZGF0YSkgPT0gLUVOT0RBVEEpIHsKIAkJCWRlbF90aW1lcigmcGQtPnRpbWVyKTsKQEAgLTI4NCw3ICsyODQsNyBAQAogCS8qCiAJICogVGhlIG5leHQgb2JqZWN0IHRoYXQgbmVlZHMgc2VyaWFsaXphdGlvbiBtaWdodCBoYXZlIGFycml2ZWQgdG8KIAkgKiB0aGUgcmVvcmRlciBxdWV1ZXMgaW4gdGhlIG1lYW50aW1lLCB3ZSB3aWxsIGJlIGNhbGxlZCBhZ2FpbgotCSAqIGZyb20gdGhlIHRpbWVyIGZ1bmN0aW9uIGlmIG5vb25lIGVsc2UgY2FyZXMgZm9yIGl0LgorCSAqIGZyb20gdGhlIHRpbWVyIGZ1bmN0aW9uIGlmIG5vIG9uZSBlbHNlIGNhcmVzIGZvciBpdC4KIAkgKi8KIAlpZiAoYXRvbWljX3JlYWQoJnBkLT5yZW9yZGVyX29iamVjdHMpCiAJCQkmJiAhKHBpbnN0LT5mbGFncyAmIFBBREFUQV9SRVNFVCkpCkBAIC01MTUsNyArNTE1LDcgQEAKIAlwdXRfb25saW5lX2NwdXMoKTsKIH0KIAotLyogUmVwbGFjZSB0aGUgaW50ZXJuYWwgY29udHJvbCBzdHVjdHVyZSB3aXRoIGEgbmV3IG9uZS4gKi8KKy8qIFJlcGxhY2UgdGhlIGludGVybmFsIGNvbnRyb2wgc3RydWN0dXJlIHdpdGggYSBuZXcgb25lLiAqLwogc3RhdGljIHZvaWQgcGFkYXRhX3JlcGxhY2Uoc3RydWN0IHBhZGF0YV9pbnN0YW5jZSAqcGluc3QsCiAJCQkgICBzdHJ1Y3QgcGFyYWxsZWxfZGF0YSAqcGRfbmV3KQogewpAQCAtNzY4LDcgKzc2OCw3IEBACiB9CiAKICAvKioKLSAqIHBhZGF0YV9yZW1vdmVfY3B1IC0gcmVtb3ZlIGEgY3B1IGZyb20gdGhlIG9uZSBvciBib3RoKHNlcmlhbCBhbmQgcGFyYWxlbGwpCisgKiBwYWRhdGFfcmVtb3ZlX2NwdSAtIHJlbW92ZSBhIGNwdSBmcm9tIHRoZSBvbmUgb3IgYm90aChzZXJpYWwgYW5kIHBhcmFsbGVsKQogICogICAgICAgICAgICAgICAgICAgICBwYWRhdGEgY3B1bWFza3MuCiAgKgogICogQHBpbnN0OiBwYWRhdGEgaW5zdGFuY2UKZGlmZiAtLWdpdCBhL2tlcm5lbC9wYXJhbXMuYyBiL2tlcm5lbC9wYXJhbXMuYwppbmRleCAwZGExNDExLi43YWIzODhhIDEwMDY0NAotLS0gYS9rZXJuZWwvcGFyYW1zLmMKKysrIGIva2VybmVsL3BhcmFtcy5jCkBAIC05NSw3ICs5NSw3IEBACiAJLyogRmluZCBwYXJhbWV0ZXIgKi8KIAlmb3IgKGkgPSAwOyBpIDwgbnVtX3BhcmFtczsgaSsrKSB7CiAJCWlmIChwYXJhbWVxKHBhcmFtLCBwYXJhbXNbaV0ubmFtZSkpIHsKLQkJCS8qIE5vb25lIGhhbmRsZWQgTlVMTCwgc28gZG8gaXQgaGVyZS4gKi8KKwkJCS8qIE5vIG9uZSBoYW5kbGVkIE5VTEwsIHNvIGRvIGl0IGhlcmUuICovCiAJCQlpZiAoIXZhbCAmJiBwYXJhbXNbaV0ub3BzLT5zZXQgIT0gcGFyYW1fc2V0X2Jvb2wpCiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQlERUJVR1AoIlRoZXkgYXJlIGVxdWFsISAgQ2FsbGluZyAlcFxuIiwKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3NpeC1jcHUtdGltZXJzLmMgYi9rZXJuZWwvcG9zaXgtY3B1LXRpbWVycy5jCmluZGV4IDY3ZmVhOWQuLjA3OTFiMTMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3NpeC1jcHUtdGltZXJzLmMKKysrIGIva2VybmVsL3Bvc2l4LWNwdS10aW1lcnMuYwpAQCAtMTM0Nyw3ICsxMzQ3LDcgQEAKIAogCS8qCiAJICogTm93IHRoYXQgYWxsIHRoZSB0aW1lcnMgb24gb3VyIGxpc3QgaGF2ZSB0aGUgZmlyaW5nIGZsYWcsCi0JICogbm9vbmUgd2lsbCB0b3VjaCB0aGVpciBsaXN0IGVudHJpZXMgYnV0IHVzLiAgV2UnbGwgdGFrZQorCSAqIG5vIG9uZSB3aWxsIHRvdWNoIHRoZWlyIGxpc3QgZW50cmllcyBidXQgdXMuICBXZSdsbCB0YWtlCiAJICogZWFjaCB0aW1lcidzIGxvY2sgYmVmb3JlIGNsZWFyaW5nIGl0cyBmaXJpbmcgZmxhZywgc28gbm8KIAkgKiB0aW1lciBjYWxsIHdpbGwgaW50ZXJmZXJlLgogCSAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3Bvc2l4LXRpbWVycy5jIGIva2VybmVsL3Bvc2l4LXRpbWVycy5jCmluZGV4IDRjMDEyNDkuLmU1NDk4ZDcgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3NpeC10aW1lcnMuYworKysgYi9rZXJuZWwvcG9zaXgtdGltZXJzLmMKQEAgLTMxMyw3ICszMTMsNyBAQAogICogcmVzdGFydGVkIChpLmUuIHdlIGhhdmUgZmxhZ2dlZCB0aGlzIGluIHRoZSBzeXNfcHJpdmF0ZSBlbnRyeSBvZiB0aGUKICAqIGluZm8gYmxvY2spLgogICoKLSAqIFRvIHByb3RlY3QgYWdpbnN0IHRoZSB0aW1lciBnb2luZyBhd2F5IHdoaWxlIHRoZSBpbnRlcnJ1cHQgaXMgcXVldWVkLAorICogVG8gcHJvdGVjdCBhZ2FpbnN0IHRoZSB0aW1lciBnb2luZyBhd2F5IHdoaWxlIHRoZSBpbnRlcnJ1cHQgaXMgcXVldWVkLAogICogd2UgcmVxdWlyZSB0aGF0IHRoZSBpdF9yZXF1ZXVlX3BlbmRpbmcgZmxhZyBiZSBzZXQuCiAgKi8KIHZvaWQgZG9fc2NoZWR1bGVfbmV4dF90aW1lcihzdHJ1Y3Qgc2lnaW5mbyAqaW5mbykKZGlmZiAtLWdpdCBhL2tlcm5lbC9wb3dlci9tYWluLmMgYi9rZXJuZWwvcG93ZXIvbWFpbi5jCmluZGV4IDhlYWJhNWYuLmRlOWFlZjggMTAwNjQ0Ci0tLSBhL2tlcm5lbC9wb3dlci9tYWluLmMKKysrIGIva2VybmVsL3Bvd2VyL21haW4uYwpAQCAtMjI0LDcgKzIyNCw3IEBACiAgKiB3cml0aW5nIHRvICdzdGF0ZScuICBJdCBmaXJzdCBzaG91bGQgcmVhZCBmcm9tICd3YWtldXBfY291bnQnIGFuZCBzdG9yZQogICogdGhlIHJlYWQgdmFsdWUuICBUaGVuLCBhZnRlciBjYXJyeWluZyBvdXQgaXRzIG93biBwcmVwYXJhdGlvbnMgZm9yIHRoZSBzeXN0ZW0KICAqIHRyYW5zaXRpb24gdG8gYSBzbGVlcCBzdGF0ZSwgaXQgc2hvdWxkIHdyaXRlIHRoZSBzdG9yZWQgdmFsdWUgdG8KLSAqICd3YWtldXBfY291bnQnLiAgSWYgdGhhdCBmYWlscywgYXQgbGVhc3Qgb25lIHdha2V1cCBldmVudCBoYXMgb2NjdXJlZCBzaW5jZQorICogJ3dha2V1cF9jb3VudCcuICBJZiB0aGF0IGZhaWxzLCBhdCBsZWFzdCBvbmUgd2FrZXVwIGV2ZW50IGhhcyBvY2N1cnJlZCBzaW5jZQogICogJ3dha2V1cF9jb3VudCcgd2FzIHJlYWQgYW5kICdzdGF0ZScgc2hvdWxkIG5vdCBiZSB3cml0dGVuIHRvLiAgT3RoZXJ3aXNlLCBpdAogICogaXMgYWxsb3dlZCB0byB3cml0ZSB0byAnc3RhdGUnLCBidXQgdGhlIHRyYW5zaXRpb24gd2lsbCBiZSBhYm9ydGVkIGlmIHRoZXJlCiAgKiBhcmUgYW55IHdha2V1cCBldmVudHMgZGV0ZWN0ZWQgYWZ0ZXIgJ3dha2V1cF9jb3VudCcgd2FzIHdyaXR0ZW4gdG8uCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWQuYyBiL2tlcm5lbC9zY2hlZC5jCmluZGV4IGE4ODQ1NTEuLmRjN2NhNWMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zY2hlZC5jCisrKyBiL2tlcm5lbC9zY2hlZC5jCkBAIC0yMzA5LDcgKzIzMDksNyBAQAogICogQ2F1c2UgYSBwcm9jZXNzIHdoaWNoIGlzIHJ1bm5pbmcgb24gYW5vdGhlciBDUFUgdG8gZW50ZXIKICAqIGtlcm5lbC1tb2RlLCB3aXRob3V0IGFueSBkZWxheS4gKHRvIGdldCBzaWduYWxzIGhhbmRsZWQuKQogICoKLSAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gZG9lc250IGhhdmUgdG8gdGFrZSB0aGUgcnVucXVldWUgbG9jaywKKyAqIE5PVEU6IHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIHRha2UgdGhlIHJ1bnF1ZXVlIGxvY2ssCiAgKiBiZWNhdXNlIGFsbCBpdCB3YW50cyB0byBlbnN1cmUgaXMgdGhhdCB0aGUgcmVtb3RlIHRhc2sgZW50ZXJzCiAgKiB0aGUga2VybmVsLiBJZiB0aGUgSVBJIHJhY2VzIGFuZCB0aGUgdGFzayBoYXMgYmVlbiBtaWdyYXRlZAogICogdG8gYW5vdGhlciBDUFUgdGhlbiBubyBoYXJtIGlzIGRvbmUgYW5kIHRoZSBwdXJwb3NlIGhhcyBiZWVuCkBAIC00OTk3LDcgKzQ5OTcsNyBAQAogCSAqLwogCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmcC0+cGlfbG9jaywgZmxhZ3MpOwogCS8qCi0JICogVG8gYmUgYWJsZSB0byBjaGFuZ2UgcC0+cG9saWN5IHNhZmVseSwgdGhlIGFwcm9wcmlhdGUKKwkgKiBUbyBiZSBhYmxlIHRvIGNoYW5nZSBwLT5wb2xpY3kgc2FmZWx5LCB0aGUgYXBwcm9wcmlhdGUKIAkgKiBydW5xdWV1ZSBsb2NrIG11c3QgYmUgaGVsZC4KIAkgKi8KIAlycSA9IF9fdGFza19ycV9sb2NrKHApOwpAQCAtNTcxNiw3ICs1NzE2LDcgQEAKIAlkb19lYWNoX3RocmVhZChnLCBwKSB7CiAJCS8qCiAJCSAqIHJlc2V0IHRoZSBOTUktdGltZW91dCwgbGlzdGluZyBhbGwgZmlsZXMgb24gYSBzbG93Ci0JCSAqIGNvbnNvbGUgbWlnaHQgdGFrZSBhbG90IG9mIHRpbWU6CisJCSAqIGNvbnNvbGUgbWlnaHQgdGFrZSBhIGxvdCBvZiB0aW1lOgogCQkgKi8KIAkJdG91Y2hfbm1pX3dhdGNoZG9nKCk7CiAJCWlmICghc3RhdGVfZmlsdGVyIHx8IChwLT5zdGF0ZSAmIHN0YXRlX2ZpbHRlcikpCmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfYXV0b2dyb3VwLmMgYi9rZXJuZWwvc2NoZWRfYXV0b2dyb3VwLmMKaW5kZXggNTk0NmFjNS4uNDI5MjQyZiAxMDA2NDQKLS0tIGEva2VybmVsL3NjaGVkX2F1dG9ncm91cC5jCisrKyBiL2tlcm5lbC9zY2hlZF9hdXRvZ3JvdXAuYwpAQCAtMTc5LDcgKzE3OSw3IEBACiAJc3RydWN0IGF1dG9ncm91cCAqYWcgPSBhdXRvZ3JvdXBfY3JlYXRlKCk7CiAKIAlhdXRvZ3JvdXBfbW92ZV9ncm91cChwLCBhZyk7Ci0JLyogZHJvcCBleHRyYSByZWZyZW5jZSBhZGRlZCBieSBhdXRvZ3JvdXBfY3JlYXRlKCkgKi8KKwkvKiBkcm9wIGV4dHJhIHJlZmVyZW5jZSBhZGRlZCBieSBhdXRvZ3JvdXBfY3JlYXRlKCkgKi8KIAlhdXRvZ3JvdXBfa3JlZl9wdXQoYWcpOwogfQogRVhQT1JUX1NZTUJPTChzY2hlZF9hdXRvZ3JvdXBfY3JlYXRlX2F0dGFjaCk7CmRpZmYgLS1naXQgYS9rZXJuZWwvc2NoZWRfZmFpci5jIGIva2VybmVsL3NjaGVkX2ZhaXIuYwppbmRleCBjN2VjNWM4Li40MTA0NTMzIDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWRfZmFpci5jCisrKyBiL2tlcm5lbC9zY2hlZF9mYWlyLmMKQEAgLTMwNjIsNyArMzA2Miw3IEBACiAKIAkvKgogCSAqIGlmICppbWJhbGFuY2UgaXMgbGVzcyB0aGFuIHRoZSBhdmVyYWdlIGxvYWQgcGVyIHJ1bm5hYmxlIHRhc2sKLQkgKiB0aGVyZSBpcyBubyBnYXVyYW50ZWUgdGhhdCBhbnkgdGFza3Mgd2lsbCBiZSBtb3ZlZCBzbyB3ZSdsbCBoYXZlCisJICogdGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYW55IHRhc2tzIHdpbGwgYmUgbW92ZWQgc28gd2UnbGwgaGF2ZQogCSAqIGEgdGhpbmsgYWJvdXQgYnVtcGluZyBpdHMgdmFsdWUgdG8gZm9yY2UgYXQgbGVhc3Qgb25lIHRhc2sgdG8gYmUKIAkgKiBtb3ZlZAogCSAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3NjaGVkX3J0LmMgYi9rZXJuZWwvc2NoZWRfcnQuYwppbmRleCBkYjMwOGNiLi5lN2NlYmRjIDEwMDY0NAotLS0gYS9rZXJuZWwvc2NoZWRfcnQuYworKysgYi9rZXJuZWwvc2NoZWRfcnQuYwpAQCAtMTM3OCw3ICsxMzc4LDcgQEAKIAkJdGFzayA9IHBpY2tfbmV4dF9wdXNoYWJsZV90YXNrKHJxKTsKIAkJaWYgKHRhc2tfY3B1KG5leHRfdGFzaykgPT0gcnEtPmNwdSAmJiB0YXNrID09IG5leHRfdGFzaykgewogCQkJLyoKLQkJCSAqIElmIHdlIGdldCBoZXJlLCB0aGUgdGFzayBoYXNudCBtb3ZlZCBhdCBhbGwsIGJ1dAorCQkJICogSWYgd2UgZ2V0IGhlcmUsIHRoZSB0YXNrIGhhc24ndCBtb3ZlZCBhdCBhbGwsIGJ1dAogCQkJICogaXQgaGFzIGZhaWxlZCB0byBwdXNoLiAgV2Ugd2lsbCBub3QgdHJ5IGFnYWluLAogCQkJICogc2luY2UgdGhlIG90aGVyIGNwdXMgd2lsbCBwdWxsIGZyb20gdXMgd2hlbiB0aGV5CiAJCQkgKiBhcmUgcmVhZHkuCkBAIC0xNDg4LDcgKzE0ODgsNyBAQAogCQkJLyoKIAkJCSAqIFdlIGNvbnRpbnVlIHdpdGggdGhlIHNlYXJjaCwganVzdCBpbgogCQkJICogY2FzZSB0aGVyZSdzIGFuIGV2ZW4gaGlnaGVyIHByaW8gdGFzawotCQkJICogaW4gYW5vdGhlciBydW5xdWV1ZS4gKGxvdyBsaWtlbHlob29kCisJCQkgKiBpbiBhbm90aGVyIHJ1bnF1ZXVlLiAobG93IGxpa2VsaWhvb2QKIAkJCSAqIGJ1dCBwb3NzaWJsZSkKIAkJCSAqLwogCQl9CmRpZmYgLS1naXQgYS9rZXJuZWwvc2lnbmFsLmMgYi9rZXJuZWwvc2lnbmFsLmMKaW5kZXggZGMxNzkyOS4uMjllMjMzZiAxMDA2NDQKLS0tIGEva2VybmVsL3NpZ25hbC5jCisrKyBiL2tlcm5lbC9zaWduYWwuYwpAQCAtMTg4Nyw3ICsxODg3LDcgQEAKIAlmb3IgKDs7KSB7CiAJCXN0cnVjdCBrX3NpZ2FjdGlvbiAqa2E7CiAJCS8qCi0JCSAqIFRyYWNpbmcgY2FuIGluZHVjZSBhbiBhcnRpZmljYWwgc2lnbmFsIGFuZCBjaG9vc2Ugc2lnYWN0aW9uLgorCQkgKiBUcmFjaW5nIGNhbiBpbmR1Y2UgYW4gYXJ0aWZpY2lhbCBzaWduYWwgYW5kIGNob29zZSBzaWdhY3Rpb24uCiAJCSAqIFRoZSByZXR1cm4gdmFsdWUgaW4gQHNpZ25yIGRldGVybWluZXMgdGhlIGRlZmF1bHQgYWN0aW9uLAogCQkgKiBidXQgQGluZm8tPnNpX3NpZ25vIGlzIHRoZSBzaWduYWwgbnVtYmVyIHdlIHdpbGwgcmVwb3J0LgogCQkgKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9zb2Z0aXJxLmMgYi9rZXJuZWwvc29mdGlycS5jCmluZGV4IDczNWQ4NzAuLjE3NGY5NzYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9zb2Z0aXJxLmMKKysrIGIva2VybmVsL3NvZnRpcnEuYwpAQCAtNTY3LDcgKzU2Nyw3IEBACiAvKioKICAqIHRhc2tsZXRfaHJ0aW1lcl9pbml0IC0gSW5pdCBhIHRhc2tsZXQvaHJ0aW1lciBjb21ibyBmb3Igc29mdGlycSBjYWxsYmFja3MKICAqIEB0dGltZXI6CSB0YXNrbGV0X2hydGltZXIgd2hpY2ggaXMgaW5pdGlhbGl6ZWQKLSAqIEBmdW5jdGlvbjoJIGhydGltZXIgY2FsbGJhY2sgZnVudGlvbiB3aGljaCBnZXRzIGNhbGxlZCBmcm9tIHNvZnRpcnEgY29udGV4dAorICogQGZ1bmN0aW9uOgkgaHJ0aW1lciBjYWxsYmFjayBmdW5jdGlvbiB3aGljaCBnZXRzIGNhbGxlZCBmcm9tIHNvZnRpcnEgY29udGV4dAogICogQHdoaWNoX2Nsb2NrOiBjbG9jayBpZCAoQ0xPQ0tfTU9OT1RPTklDL0NMT0NLX1JFQUxUSU1FKQogICogQG1vZGU6CSBocnRpbWVyIG1vZGUgKEhSVElNRVJfTU9ERV9BQlMvSFJUSU1FUl9NT0RFX1JFTCkKICAqLwpkaWZmIC0tZ2l0IGEva2VybmVsL3RpbWUvamlmZmllcy5jIGIva2VybmVsL3RpbWUvamlmZmllcy5jCmluZGV4IGIyZmE1MDYuLmE0NzAxNTQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90aW1lL2ppZmZpZXMuYworKysgYi9rZXJuZWwvdGltZS9qaWZmaWVzLmMKQEAgLTM0LDcgKzM0LDcgQEAKICAqIGluYWNjdXJhY2llcyBjYXVzZWQgYnkgbWlzc2VkIG9yIGxvc3QgdGltZXIKICAqIGludGVycnVwdHMgYW5kIHRoZSBpbmFiaWxpdHkgZm9yIHRoZSB0aW1lcgogICogaW50ZXJydXB0IGhhcmR3YXJlIHRvIGFjY3VyYXRseSB0aWNrIGF0IHRoZQotICogcmVxdWVzdGVkIEhaIHZhbHVlLiBJdCBpcyBhbHNvIG5vdCByZWNjb21lbmRlZAorICogcmVxdWVzdGVkIEhaIHZhbHVlLiBJdCBpcyBhbHNvIG5vdCByZWNvbW1lbmRlZAogICogZm9yICJ0aWNrLWxlc3MiIHN5c3RlbXMuCiAgKi8KICNkZWZpbmUgTlNFQ19QRVJfSklGRlkJKCh1MzIpKCgoKHU2NClOU0VDX1BFUl9TRUMpPDw4KS9BQ1RIWikpCmRpZmYgLS1naXQgYS9rZXJuZWwvdGltZS90aW1lcl9zdGF0cy5jIGIva2VybmVsL3RpbWUvdGltZXJfc3RhdHMuYwppbmRleCAyZjNiNTg1Li5hNWQwYTNhIDEwMDY0NAotLS0gYS9rZXJuZWwvdGltZS90aW1lcl9zdGF0cy5jCisrKyBiL2tlcm5lbC90aW1lL3RpbWVyX3N0YXRzLmMKQEAgLTIzNiw3ICsyMzYsNyBAQAogCQkJICAgICAgdW5zaWduZWQgaW50IHRpbWVyX2ZsYWcpCiB7CiAJLyoKLQkgKiBJdCBkb2VzbnQgbWF0dGVyIHdoaWNoIGxvY2sgd2UgdGFrZToKKwkgKiBJdCBkb2Vzbid0IG1hdHRlciB3aGljaCBsb2NrIHdlIHRha2U6CiAJICovCiAJcmF3X3NwaW5sb2NrX3QgKmxvY2s7CiAJc3RydWN0IGVudHJ5ICplbnRyeSwgaW5wdXQ7CmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvZnRyYWNlLmMgYi9rZXJuZWwvdHJhY2UvZnRyYWNlLmMKaW5kZXggYzA3NWY0ZS4uZWUyNGZhMSAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL2Z0cmFjZS5jCisrKyBiL2tlcm5lbC90cmFjZS9mdHJhY2UuYwpAQCAtMTI2OCw3ICsxMjY4LDcgQEAKIAkJcC0+ZmxhZ3MgPSAwTDsKIAogCQkvKgotCQkgKiBEbyB0aGUgaW5pdGlhbCByZWNvcmQgY29udmVydGlvbiBmcm9tIG1jb3VudCBqdW1wCisJCSAqIERvIHRoZSBpbml0aWFsIHJlY29yZCBjb252ZXJzaW9uIGZyb20gbWNvdW50IGp1bXAKIAkJICogdG8gdGhlIE5PUCBpbnN0cnVjdGlvbnMuCiAJCSAqLwogCQlpZiAoIWZ0cmFjZV9jb2RlX2Rpc2FibGUobW9kLCBwKSkgewpAQCAtMzQyNSw3ICszNDI1LDcgQEAKIAlhdG9taWNfc2V0KCZ0LT50cmFjaW5nX2dyYXBoX3BhdXNlLCAwKTsKIAlhdG9taWNfc2V0KCZ0LT50cmFjZV9vdmVycnVuLCAwKTsKIAl0LT5mdHJhY2VfdGltZXN0YW1wID0gMDsKLQkvKiBtYWtlIGN1cnJfcmV0X3N0YWNrIHZpc2FibGUgYmVmb3JlIHdlIGFkZCB0aGUgcmV0X3N0YWNrICovCisJLyogbWFrZSBjdXJyX3JldF9zdGFjayB2aXNpYmxlIGJlZm9yZSB3ZSBhZGQgdGhlIHJldF9zdGFjayAqLwogCXNtcF93bWIoKTsKIAl0LT5yZXRfc3RhY2sgPSByZXRfc3RhY2s7CiB9CmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvcmluZ19idWZmZXIuYyBiL2tlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jCmluZGV4IGQ5YzhiY2EuLjBlZjdiNGIgMTAwNjQ0Ci0tLSBhL2tlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jCisrKyBiL2tlcm5lbC90cmFjZS9yaW5nX2J1ZmZlci5jCkBAIC0xNDc4LDcgKzE0NzgsNyBAQAogCXJldHVybiBsb2NhbF9yZWFkKCZicGFnZS0+ZW50cmllcykgJiBSQl9XUklURV9NQVNLOwogfQogCi0vKiBTaXplIGlzIGRldGVybWluZWQgYnkgd2hhdCBoYXMgYmVlbiBjb21taXRlZCAqLworLyogU2l6ZSBpcyBkZXRlcm1pbmVkIGJ5IHdoYXQgaGFzIGJlZW4gY29tbWl0dGVkICovCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIHJiX3BhZ2Vfc2l6ZShzdHJ1Y3QgYnVmZmVyX3BhZ2UgKmJwYWdlKQogewogCXJldHVybiByYl9wYWdlX2NvbW1pdChicGFnZSk7CkBAIC0yOTMyLDcgKzI5MzIsNyBAQAogCS8qCiAJICogY3B1X2J1ZmZlci0+cGFnZXMganVzdCBuZWVkcyB0byBwb2ludCB0byB0aGUgYnVmZmVyLCBpdAogCSAqICBoYXMgbm8gc3BlY2lmaWMgYnVmZmVyIHBhZ2UgdG8gcG9pbnQgdG8uIExldHMgbW92ZSBpdCBvdXQKLQkgKiAgb2Ygb3VyIHdheSBzbyB3ZSBkb24ndCBhY2NpZGVudGx5IHN3YXAgaXQuCisJICogIG9mIG91ciB3YXkgc28gd2UgZG9uJ3QgYWNjaWRlbnRhbGx5IHN3YXAgaXQuCiAJICovCiAJY3B1X2J1ZmZlci0+cGFnZXMgPSByZWFkZXItPmxpc3QucHJldjsKIApkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3RyYWNlLmMgYi9rZXJuZWwvdHJhY2UvdHJhY2UuYwppbmRleCA5NTQxYzI3Li5kMzhjMTZhIDEwMDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvdHJhY2UuYworKysgYi9rZXJuZWwvdHJhY2UvdHJhY2UuYwpAQCAtMzIzOSw3ICszMjM5LDcgQEAKIAkJdHJhY2Vfc2VxX2luaXQoJml0ZXItPnNlcSk7CiAKIAkvKgotCSAqIElmIHRoZXJlIHdhcyBub3RoaW5nIHRvIHNlbmQgdG8gdXNlciwgaW5zcGl0ZSBvZiBjb25zdW1pbmcgdHJhY2UKKwkgKiBJZiB0aGVyZSB3YXMgbm90aGluZyB0byBzZW5kIHRvIHVzZXIsIGluIHNwaXRlIG9mIGNvbnN1bWluZyB0cmFjZQogCSAqIGVudHJpZXMsIGdvIGJhY2sgdG8gd2FpdCBmb3IgbW9yZSBlbnRyaWVzLgogCSAqLwogCWlmIChzcmV0ID09IC1FQlVTWSkKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZV9jbG9jay5jIGIva2VybmVsL3RyYWNlL3RyYWNlX2Nsb2NrLmMKaW5kZXggNjg1YTY3ZC4uNjMwMjc0NyAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlX2Nsb2NrLmMKKysrIGIva2VybmVsL3RyYWNlL3RyYWNlX2Nsb2NrLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKIH0KIAogLyoKLSAqIHRyYWNlX2Nsb2NrKCk6ICdpbmJldHdlZW4nIHRyYWNlIGNsb2NrLiBOb3QgY29tcGxldGVseSBzZXJpYWxpemVkLAorICogdHJhY2VfY2xvY2soKTogJ2JldHdlZW4nIHRyYWNlIGNsb2NrLiBOb3QgY29tcGxldGVseSBzZXJpYWxpemVkLAogICogYnV0IG5vdCBjb21wbGV0ZWx5IGluY29ycmVjdCB3aGVuIGNyb3NzaW5nIENQVXMgZWl0aGVyLgogICoKICAqIFRoaXMgaXMgYmFzZWQgb24gY3B1X2Nsb2NrKCksIHdoaWNoIHdpbGwgYWxsb3cgYXQgbW9zdCB+MSBqaWZmeSBvZgpkaWZmIC0tZ2l0IGEva2VybmVsL3RyYWNlL3RyYWNlX2VudHJpZXMuaCBiL2tlcm5lbC90cmFjZS90cmFjZV9lbnRyaWVzLmgKaW5kZXggMTUxNmNiMy4uZTMyNzQ0YyAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlX2VudHJpZXMuaAorKysgYi9rZXJuZWwvdHJhY2UvdHJhY2VfZW50cmllcy5oCkBAIC0yNyw3ICsyNyw3IEBACiAgKgkgIGluIHRoZSBzdHJ1Y3R1cmUuCiAgKgogICogICAqIGZvciBzdHJ1Y3R1cmVzIHdpdGhpbiBzdHJ1Y3R1cmVzLCB0aGUgZm9ybWF0IG9mIHRoZSBpbnRlcm5hbAotICoJc3RydWN0dXJlIGlzIGxheWVkIG91dC4gVGhpcyBhbGxvd3MgdGhlIGludGVybmFsIHN0cnVjdHVyZQorICoJc3RydWN0dXJlIGlzIGxhaWQgb3V0LiBUaGlzIGFsbG93cyB0aGUgaW50ZXJuYWwgc3RydWN0dXJlCiAgKgl0byBiZSBkZWNpcGhlcmVkIGZvciB0aGUgZm9ybWF0IGZpbGUuIEFsdGhvdWdoIHRoZXNlIG1hY3JvcwogICoJbWF5IGJlY29tZSBvdXQgb2Ygc3luYyB3aXRoIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUsIHRoZXkKICAqCXdpbGwgY3JlYXRlIGEgY29tcGlsZSBlcnJvciBpZiBpdCBoYXBwZW5zLiBTaW5jZSB0aGUKZGlmZiAtLWdpdCBhL2tlcm5lbC90cmFjZS90cmFjZV9mdW5jdGlvbnNfZ3JhcGguYyBiL2tlcm5lbC90cmFjZS90cmFjZV9mdW5jdGlvbnNfZ3JhcGguYwppbmRleCA3NmIwNTk4Li45NjJjZGIyIDEwMDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvdHJhY2VfZnVuY3Rpb25zX2dyYXBoLmMKKysrIGIva2VybmVsL3RyYWNlL3RyYWNlX2Z1bmN0aW9uc19ncmFwaC5jCkBAIC05MDUsNyArOTA1LDcgQEAKICAqCiAgKiByZXR1cm5zIDEgaWYKICAqICAtIHdlIGFyZSBpbnNpZGUgaXJxIGNvZGUKLSAqICAtIHdlIGp1c3QgZXh0ZXJlZCBpcnEgY29kZQorICogIC0gd2UganVzdCBlbnRlcmVkIGlycSBjb2RlCiAgKgogICogcmV0dW5ucyAwIGlmCiAgKiAgLSBmdW5jZ3JhcGgtaW50ZXJydXB0cyBvcHRpb24gaXMgc2V0CmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvdHJhY2VfaXJxc29mZi5jIGIva2VybmVsL3RyYWNlL3RyYWNlX2lycXNvZmYuYwppbmRleCA5MmI2ZTFlLi5hNDk2OWI0IDEwMDY0NAotLS0gYS9rZXJuZWwvdHJhY2UvdHJhY2VfaXJxc29mZi5jCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZV9pcnFzb2ZmLmMKQEAgLTgwLDcgKzgwLDcgQEAKICAqIHNraXAgdGhlIGxhdGVuY3kgaWYgdGhlIHNlcXVlbmNlIGhhcyBjaGFuZ2VkIC0gc29tZSBvdGhlciBzZWN0aW9uCiAgKiBkaWQgYSBtYXhpbXVtIGFuZCBjb3VsZCBkaXN0dXJiIG91ciBtZWFzdXJlbWVudCB3aXRoIHNlcmlhbCBjb25zb2xlCiAgKiBwcmludG91dHMsIGV0Yy4gVHJ1bHkgY29pbmNpZGluZyBtYXhpbXVtIGxhdGVuY2llcyBzaG91bGQgYmUgcmFyZQotICogYW5kIHdoYXQgaGFwcGVucyB0b2dldGhlciBoYXBwZW5zIHNlcGFyYXRlbHkgYXMgd2VsbCwgc28gdGhpcyBkb2VzbnQKKyAqIGFuZCB3aGF0IGhhcHBlbnMgdG9nZXRoZXIgaGFwcGVucyBzZXBhcmF0ZWx5IGFzIHdlbGwsIHNvIHRoaXMgZG9lc24ndAogICogZGVjcmVhc2UgdGhlIHZhbGlkaXR5IG9mIHRoZSBtYXhpbXVtIGZvdW5kOgogICovCiBzdGF0aWMgX19jYWNoZWxpbmVfYWxpZ25lZF9pbl9zbXAJdW5zaWduZWQgbG9uZyBtYXhfc2VxdWVuY2U7CmRpZmYgLS1naXQgYS9rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMgYi9rZXJuZWwvdHJhY2UvdHJhY2Vfa3Byb2JlLmMKaW5kZXggODQzNWI0My4uMzVkNTVhMyAxMDA2NDQKLS0tIGEva2VybmVsL3RyYWNlL3RyYWNlX2twcm9iZS5jCisrKyBiL2tlcm5lbC90cmFjZS90cmFjZV9rcHJvYmUuYwpAQCAtMTgzOSw3ICsxODM5LDcgQEAKIAlrZnJlZSh0cC0+Y2FsbC5wcmludF9mbXQpOwogfQogCi0vKiBNYWtlIGEgZGVidWdmcyBpbnRlcmZhY2UgZm9yIGNvbnRyb2xpbmcgcHJvYmUgcG9pbnRzICovCisvKiBNYWtlIGEgZGVidWdmcyBpbnRlcmZhY2UgZm9yIGNvbnRyb2xsaW5nIHByb2JlIHBvaW50cyAqLwogc3RhdGljIF9faW5pdCBpbnQgaW5pdF9rcHJvYmVfdHJhY2Uodm9pZCkKIHsKIAlzdHJ1Y3QgZGVudHJ5ICpkX3RyYWNlcjsKZGlmZiAtLWdpdCBhL2tlcm5lbC91c2VyLXJldHVybi1ub3RpZmllci5jIGIva2VybmVsL3VzZXItcmV0dXJuLW5vdGlmaWVyLmMKaW5kZXggZWIyN2ZkMy4uOTJjYjcwNiAxMDA2NDQKLS0tIGEva2VybmVsL3VzZXItcmV0dXJuLW5vdGlmaWVyLmMKKysrIGIva2VybmVsL3VzZXItcmV0dXJuLW5vdGlmaWVyLmMKQEAgLTIwLDcgKzIwLDcgQEAKIAogLyoKICAqIFJlbW92ZXMgYSByZWdpc3RlcmVkIHVzZXIgcmV0dXJuIG5vdGlmaWVyLiAgTXVzdCBiZSBjYWxsZWQgZnJvbSBhdG9taWMKLSAqIGNvbnRleHQsIGFuZCBmcm9tIHRoZSBzYW1lIGNwdSByZWdpc3RyYXRpb24gb2NjdXJlZCBpbi4KKyAqIGNvbnRleHQsIGFuZCBmcm9tIHRoZSBzYW1lIGNwdSByZWdpc3RyYXRpb24gb2NjdXJyZWQgaW4uCiAgKi8KIHZvaWQgdXNlcl9yZXR1cm5fbm90aWZpZXJfdW5yZWdpc3RlcihzdHJ1Y3QgdXNlcl9yZXR1cm5fbm90aWZpZXIgKnVybikKIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC93YWl0LmMgYi9rZXJuZWwvd2FpdC5jCmluZGV4IGIwMzEwZWIuLmY0NWVhOGQgMTAwNjQ0Ci0tLSBhL2tlcm5lbC93YWl0LmMKKysrIGIva2VybmVsL3dhaXQuYwpAQCAtMTQyLDcgKzE0Miw3IEBACiAgKiB3b2tlbiB1cCB0aHJvdWdoIHRoZSBxdWV1ZS4KICAqCiAgKiBUaGlzIHByZXZlbnRzIHdhaXRlciBzdGFydmF0aW9uIHdoZXJlIGFuIGV4Y2x1c2l2ZSB3YWl0ZXIKLSAqIGFib3J0cyBhbmQgaXMgd29rZW4gdXAgY29uY3VycmVudGx5IGFuZCBub29uZSB3YWtlcyB1cAorICogYWJvcnRzIGFuZCBpcyB3b2tlbiB1cCBjb25jdXJyZW50bHkgYW5kIG5vIG9uZSB3YWtlcyB1cAogICogdGhlIG5leHQgd2FpdGVyLgogICovCiB2b2lkIGFib3J0X2V4Y2x1c2l2ZV93YWl0KHdhaXRfcXVldWVfaGVhZF90ICpxLCB3YWl0X3F1ZXVlX3QgKndhaXQsCmRpZmYgLS1naXQgYS9rZXJuZWwvd29ya3F1ZXVlLmMgYi9rZXJuZWwvd29ya3F1ZXVlLmMKaW5kZXggMDRlZjgzMC4uODg1OWE0MSAxMDA2NDQKLS0tIGEva2VybmVsL3dvcmtxdWV1ZS5jCisrKyBiL2tlcm5lbC93b3JrcXVldWUuYwpAQCAtMTI5MSw3ICsxMjkxLDcgQEAKIAkJCXJldHVybiB0cnVlOwogCQlzcGluX3VubG9ja19pcnEoJmdjd3EtPmxvY2spOwogCi0JCS8qIENQVSBoYXMgY29tZSB1cCBpbmJldHdlZW4sIHJldHJ5IG1pZ3JhdGlvbiAqLworCQkvKiBDUFUgaGFzIGNvbWUgdXAgaW4gYmV0d2VlbiwgcmV0cnkgbWlncmF0aW9uICovCiAJCWNwdV9yZWxheCgpOwogCX0KIH0KZGlmZiAtLWdpdCBhL2xpYi9iaXRtYXAuYyBiL2xpYi9iaXRtYXAuYwppbmRleCA3NDFmYWU5Li45MWUwY2NmIDEwMDY0NAotLS0gYS9saWIvYml0bWFwLmMKKysrIGIvbGliL2JpdG1hcC5jCkBAIC04MzAsNyArODMwLDcgQEAKICAqICBAb3JpZyAoaS5lLiBiaXRzIDMsIDUsIDcgYW5kIDkpIHdlcmUgYWxzbyBzZXQuCiAgKgogICogIFdoZW4gYml0IDExIGlzIHNldCBpbiBAb3JpZywgaXQgbWVhbnMgdHVybiBvbiB0aGUgYml0IGluCi0gKiAgQGRzdCBjb3JyZXNwb25kaW5nIHRvIHdoYXRldmVyIGlzIHRoZSB0d2VsdGggYml0IHRoYXQgaXMKKyAqICBAZHN0IGNvcnJlc3BvbmRpbmcgdG8gd2hhdGV2ZXIgaXMgdGhlIHR3ZWxmdGggYml0IHRoYXQgaXMKICAqICB0dXJuZWQgb24gaW4gQHJlbG1hcC4gIEluIHRoZSBhYm92ZSBleGFtcGxlLCB0aGVyZSB3ZXJlCiAgKiAgb25seSB0ZW4gYml0cyB0dXJuZWQgb24gaW4gQHJlbG1hcCAoMzAuLjM5KSwgc28gdGhhdCBiaXQKICAqICAxMSB3YXMgc2V0IGluIEBvcmlnIGhhZCBubyBhZmZlY3Qgb24gQGRzdC4KZGlmZiAtLWdpdCBhL2xpYi9idHJlZS5jIGIvbGliL2J0cmVlLmMKaW5kZXggYzljNmYwMy4uMmEzNDM5MiAxMDA2NDQKLS0tIGEvbGliL2J0cmVlLmMKKysrIGIvbGliL2J0cmVlLmMKQEAgLTExLDcgKzExLDcgQEAKICAqIHNlZSBodHRwOi8vcHJvZ3JhbW1pbmcua2lja3MtYXNzLm5ldC9rZXJuZWwtcGF0Y2hlcy92bWFfbG9va3VwL2J0cmVlLnBhdGNoCiAgKgogICogQSByZWxhdGl2ZWx5IHNpbXBsZSBCK1RyZWUgaW1wbGVtZW50YXRpb24uICBJIGhhdmUgd3JpdHRlbiBpdCBhcyBhIGxlYXJuaW5nCi0gKiBleGNlcmNpc2UgdG8gdW5kZXJzdGFuZCBob3cgQitUcmVlcyB3b3JrLiAgVHVybmVkIG91dCB0byBiZSB1c2VmdWwgYXMgd2VsbC4KKyAqIGV4ZXJjaXNlIHRvIHVuZGVyc3RhbmQgaG93IEIrVHJlZXMgd29yay4gIFR1cm5lZCBvdXQgdG8gYmUgdXNlZnVsIGFzIHdlbGwuCiAgKgogICogQitUcmVlcyBjYW4gYmUgdXNlZCBzaW1pbGFyIHRvIExpbnV4IHJhZGl4IHRyZWVzICh3aGljaCBkb24ndCBoYXZlIGFueXRoaW5nCiAgKiBpbiBjb21tb24gd2l0aCB0ZXh0Ym9vayByYWRpeCB0cmVlcywgYmV3YXJlKS4gIFByZXJlcXVpc2l0ZSBmb3IgdGhlbSB3b3JraW5nCkBAIC01NDEsNyArNTQxLDcgQEAKIAlpbnQgaSwgbm9fbGVmdCwgbm9fcmlnaHQ7CiAKIAlpZiAoZmlsbCA9PSAwKSB7Ci0JCS8qIEJlY2F1c2Ugd2UgZG9uJ3Qgc3RlYWwgZW50cmllcyBmcm9tIGEgbmVpZ2JvdXIsIHRoaXMgY2FzZQorCQkvKiBCZWNhdXNlIHdlIGRvbid0IHN0ZWFsIGVudHJpZXMgZnJvbSBhIG5laWdoYm91ciwgdGhpcyBjYXNlCiAJCSAqIGNhbiBoYXBwZW4uICBQYXJlbnQgbm9kZSBjb250YWlucyBhIHNpbmdsZSBjaGlsZCwgdGhpcwogCQkgKiBub2RlLCBzbyBtZXJnaW5nIHdpdGggYSBzaWJsaW5nIG5ldmVyIGhhcHBlbnMuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvbGliL2RlY29tcHJlc3NfdW54ei5jIGIvbGliL2RlY29tcHJlc3NfdW54ei5jCmluZGV4IGNlY2QyM2QuLjlmMzRlYjUgMTAwNjQ0Ci0tLSBhL2xpYi9kZWNvbXByZXNzX3VueHouYworKysgYi9saWIvZGVjb21wcmVzc191bnh6LmMKQEAgLTgzLDcgKzgzLDcgQEAKICAqICAgIHNhZmV0eV9tYXJnaW4gPSAxMjggKyB1bmNvbXByZXNzZWRfc2l6ZSAqIDggLyAzMjc2OCArIDY1NTM2CiAgKiAgICAgICAgICAgICAgICAgID0gMTI4ICsgKHVuY29tcHJlc3NlZF9zaXplID4+IDEyKSArIDY1NTM2CiAgKgotICogRm9yIGNvbXBhcmlzaW9uLCBhY2NvcmRpbmcgdG8gYXJjaC94ODYvYm9vdC9jb21wcmVzc2VkL21pc2MuYywgdGhlCisgKiBGb3IgY29tcGFyaXNvbiwgYWNjb3JkaW5nIHRvIGFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9taXNjLmMsIHRoZQogICogZXF1aXZhbGVudCBmb3JtdWxhIGZvciBEZWZsYXRlIGlzIHRoaXM6CiAgKgogICogICAgc2FmZXR5X21hcmdpbiA9IDE4ICsgKHVuY29tcHJlc3NlZF9zaXplID4+IDEyKSArIDMyNzY4CmRpZmYgLS1naXQgYS9saWIvcGFyc2VyLmMgYi9saWIvcGFyc2VyLmMKaW5kZXggNmU4OWVjYS4uZGNiYWFlZiAxMDA2NDQKLS0tIGEvbGliL3BhcnNlci5jCisrKyBiL2xpYi9wYXJzZXIuYwpAQCAtMTMsNyArMTMsNyBAQAogCiAvKioKICAqIG1hdGNoX29uZTogLSBEZXRlcm1pbmVzIGlmIGEgc3RyaW5nIG1hdGNoZXMgYSBzaW1wbGUgcGF0dGVybgotICogQHM6IHRoZSBzdHJpbmcgdG8gZXhhbWluZSBmb3IgcHJlc2Vuc2Ugb2YgdGhlIHBhdHRlcm4KKyAqIEBzOiB0aGUgc3RyaW5nIHRvIGV4YW1pbmUgZm9yIHByZXNlbmNlIG9mIHRoZSBwYXR0ZXJuCiAgKiBAcDogdGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBwYXR0ZXJuCiAgKiBAYXJnczogYXJyYXkgb2YgJU1BWF9PUFRfQVJHUyAmc3Vic3RyaW5nX3QgZWxlbWVudHMuIFVzZWQgdG8gcmV0dXJuIG1hdGNoCiAgKiBsb2NhdGlvbnMuCmRpZmYgLS1naXQgYS9saWIvdGltZXJxdWV1ZS5jIGIvbGliL3RpbWVycXVldWUuYwppbmRleCBlM2ExMDUwLi4xOTExNzZhIDEwMDY0NAotLS0gYS9saWIvdGltZXJxdWV1ZS5jCisrKyBiL2xpYi90aW1lcnF1ZXVlLmMKQEAgLTUsNyArNSw3IEBACiAgKiAgVXNlcyByYnRyZWVzIGZvciBxdWljayBsaXN0IGFkZHMgYW5kIGV4cGlyYXRpb24uCiAgKgogICogIE5PVEU6IEFsbCBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIHNlcmlhbGl6ZWQKLSAqICB0byBhdm9pZCByYWNlcy4gTm8gbG9ja2luZyBpcyBkb25lIGJ5IHRoaXMgbGliYXJ5IGNvZGUuCisgKiAgdG8gYXZvaWQgcmFjZXMuIE5vIGxvY2tpbmcgaXMgZG9uZSBieSB0aGlzIGxpYnJhcnkgY29kZS4KICAqCiAgKiAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAqICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpkaWZmIC0tZ2l0IGEvbW0vYmFja2luZy1kZXYuYyBiL21tL2JhY2tpbmctZGV2LmMKaW5kZXggMGQ5YTAzNi4uYmVmYzg3NSAxMDA2NDQKLS0tIGEvbW0vYmFja2luZy1kZXYuYworKysgYi9tbS9iYWNraW5nLWRldi5jCkBAIC03ODcsNyArNzg3LDcgQEAKICAqIGppZmZpZXMgZm9yIGVpdGhlciBhIEJESSB0byBleGl0IGNvbmdlc3Rpb24gb2YgdGhlIGdpdmVuIEBzeW5jIHF1ZXVlCiAgKiBvciBhIHdyaXRlIHRvIGNvbXBsZXRlLgogICoKLSAqIEluIHRoZSBhYnNlbnNlIG9mIHpvbmUgY29uZ2VzdGlvbiwgY29uZF9yZXNjaGVkKCkgaXMgY2FsbGVkIHRvIHlpZWxkCisgKiBJbiB0aGUgYWJzZW5jZSBvZiB6b25lIGNvbmdlc3Rpb24sIGNvbmRfcmVzY2hlZCgpIGlzIGNhbGxlZCB0byB5aWVsZAogICogdGhlIHByb2Nlc3NvciBpZiBuZWNlc3NhcnkgYnV0IG90aGVyd2lzZSBkb2VzIG5vdCBzbGVlcC4KICAqCiAgKiBUaGUgcmV0dXJuIHZhbHVlIGlzIDAgaWYgdGhlIHNsZWVwIGlzIGZvciB0aGUgZnVsbCB0aW1lb3V0LiBPdGhlcndpc2UsCmRpZmYgLS1naXQgYS9tbS9odWdldGxiLmMgYi9tbS9odWdldGxiLmMKaW5kZXggMDZkZTVhYS4uOGVlM2JkOCAxMDA2NDQKLS0tIGEvbW0vaHVnZXRsYi5jCisrKyBiL21tL2h1Z2V0bGIuYwpAQCAtMTQ2LDcgKzE0Niw3IEBACiAJCWlmIChyZy0+ZnJvbSA+IHQpCiAJCQlyZXR1cm4gY2hnOwogCi0JCS8qIFdlIG92ZXJsYXAgd2l0aCB0aGlzIGFyZWEsIGlmIGl0IGV4dGVuZHMgZnV0aGVyIHRoYW4KKwkJLyogV2Ugb3ZlcmxhcCB3aXRoIHRoaXMgYXJlYSwgaWYgaXQgZXh0ZW5kcyBmdXJ0aGVyIHRoYW4KIAkJICogdXMgdGhlbiB3ZSBtdXN0IGV4dGVuZCBvdXJzZWx2ZXMuICBBY2NvdW50IGZvciBpdHMKIAkJICogZXhpc3RpbmcgcmVzZXJ2YXRpb24uICovCiAJCWlmIChyZy0+dG8gPiB0KSB7CkBAIC04NDIsNyArODQyLDcgQEAKIH0KIAogLyoKLSAqIEluY3JlYXNlIHRoZSBodWdldGxiIHBvb2wgc3VjaCB0aGF0IGl0IGNhbiBhY2NvbW9kYXRlIGEgcmVzZXJ2YXRpb24KKyAqIEluY3JlYXNlIHRoZSBodWdldGxiIHBvb2wgc3VjaCB0aGF0IGl0IGNhbiBhY2NvbW1vZGF0ZSBhIHJlc2VydmF0aW9uCiAgKiBvZiBzaXplICdkZWx0YScuCiAgKi8KIHN0YXRpYyBpbnQgZ2F0aGVyX3N1cnBsdXNfcGFnZXMoc3RydWN0IGhzdGF0ZSAqaCwgaW50IGRlbHRhKQpAQCAtODkwLDcgKzg5MCw3IEBACiAKIAkvKgogCSAqIFRoZSBzdXJwbHVzX2xpc3Qgbm93IGNvbnRhaW5zIF9hdF9sZWFzdF8gdGhlIG51bWJlciBvZiBleHRyYSBwYWdlcwotCSAqIG5lZWRlZCB0byBhY2NvbW9kYXRlIHRoZSByZXNlcnZhdGlvbi4gIEFkZCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyCisJICogbmVlZGVkIHRvIGFjY29tbW9kYXRlIHRoZSByZXNlcnZhdGlvbi4gIEFkZCB0aGUgYXBwcm9wcmlhdGUgbnVtYmVyCiAJICogb2YgcGFnZXMgdG8gdGhlIGh1Z2V0bGIgcG9vbCBhbmQgZnJlZSB0aGUgZXh0cmFzIGJhY2sgdG8gdGhlIGJ1ZGR5CiAJICogYWxsb2NhdG9yLiAgQ29tbWl0IHRoZSBlbnRpcmUgcmVzZXJ2YXRpb24gaGVyZSB0byBwcmV2ZW50IGFub3RoZXIKIAkgKiBwcm9jZXNzIGZyb20gc3RlYWxpbmcgdGhlIHBhZ2VzIGFzIHRoZXkgYXJlIGFkZGVkIHRvIHRoZSBwb29sIGJ1dApAQCAtMjA0Myw3ICsyMDQzLDcgQEAKIAkgKiBUaGlzIG5ldyBWTUEgc2hvdWxkIHNoYXJlIGl0cyBzaWJsaW5ncyByZXNlcnZhdGlvbiBtYXAgaWYgcHJlc2VudC4KIAkgKiBUaGUgVk1BIHdpbGwgb25seSBldmVyIGhhdmUgYSB2YWxpZCByZXNlcnZhdGlvbiBtYXAgcG9pbnRlciB3aGVyZQogCSAqIGl0IGlzIGJlaW5nIGNvcGllZCBmb3IgYW5vdGhlciBzdGlsbCBleGlzdGluZyBWTUEuICBBcyB0aGF0IFZNQQotCSAqIGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgcmVzZXJ2YXRpb24gbWFwIGl0IGNhbm5vdCBkaXNzYXBwZWFyIHVudGlsCisJICogaGFzIGEgcmVmZXJlbmNlIHRvIHRoZSByZXNlcnZhdGlvbiBtYXAgaXQgY2Fubm90IGRpc2FwcGVhciB1bnRpbAogCSAqIGFmdGVyIHRoaXMgb3BlbiBjYWxsIGNvbXBsZXRlcy4gIEl0IGlzIHRoZXJlZm9yZSBzYWZlIHRvIHRha2UgYQogCSAqIG5ldyByZWZlcmVuY2UgaGVyZSB3aXRob3V0IGFkZGl0aW9uYWwgbG9ja2luZy4KIAkgKi8KQEAgLTI0OTAsNyArMjQ5MCw3IEBACiAJLyoKIAkgKiBDdXJyZW50bHksIHdlIGFyZSBmb3JjZWQgdG8ga2lsbCB0aGUgcHJvY2VzcyBpbiB0aGUgZXZlbnQgdGhlCiAJICogb3JpZ2luYWwgbWFwcGVyIGhhcyB1bm1hcHBlZCBwYWdlcyBmcm9tIHRoZSBjaGlsZCBkdWUgdG8gYSBmYWlsZWQKLQkgKiBDT1cuIFdhcm4gdGhhdCBzdWNoIGEgc2l0dWF0aW9uIGhhcyBvY2N1cmVkIGFzIGl0IG1heSBub3QgYmUgb2J2aW91cworCSAqIENPVy4gV2FybiB0aGF0IHN1Y2ggYSBzaXR1YXRpb24gaGFzIG9jY3VycmVkIGFzIGl0IG1heSBub3QgYmUgb2J2aW91cwogCSAqLwogCWlmIChpc192bWFfcmVzdl9zZXQodm1hLCBIUEFHRV9SRVNWX1VOTUFQUEVEKSkgewogCQlwcmludGsoS0VSTl9XQVJOSU5HCmRpZmYgLS1naXQgYS9tbS9od3BvaXNvbi1pbmplY3QuYyBiL21tL2h3cG9pc29uLWluamVjdC5jCmluZGV4IDA5NDhmMTAuLmM3ZmM3ZmQgMTAwNjQ0Ci0tLSBhL21tL2h3cG9pc29uLWluamVjdC5jCisrKyBiL21tL2h3cG9pc29uLWluamVjdC5jCkBAIC0xLDQgKzEsNCBAQAotLyogSW5qZWN0IGEgaHdwb2lzb24gbWVtb3J5IGZhaWx1cmUgb24gYSBhcmJpdGFyeSBwZm4gKi8KKy8qIEluamVjdCBhIGh3cG9pc29uIG1lbW9yeSBmYWlsdXJlIG9uIGEgYXJiaXRyYXJ5IHBmbiAqLwogI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgogI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4KICNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KZGlmZiAtLWdpdCBhL21tL2ludGVybmFsLmggYi9tbS9pbnRlcm5hbC5oCmluZGV4IDM0MzhkZDQuLjlkMGNlZDggMTAwNjQ0Ci0tLSBhL21tL2ludGVybmFsLmgKKysrIGIvbW0vaW50ZXJuYWwuaApAQCAtMTYyLDcgKzE2Miw3IEBACiB9CiAKIC8qCi0gKiBJdGVyYXRvciBvdmVyIGFsbCBzdWJwYWdlcyB3aXRoaW5nIHRoZSBtYXhpbWFsbHkgYWxpZ25lZCBnaWdhbnRpYworICogSXRlcmF0b3Igb3ZlciBhbGwgc3VicGFnZXMgd2l0aGluIHRoZSBtYXhpbWFsbHkgYWxpZ25lZCBnaWdhbnRpYwogICogcGFnZSAnYmFzZScuICBIYW5kbGUgYW55IGRpc2NvbnRpZ3VpdHkgaW4gdGhlIG1lbV9tYXAuCiAgKi8KIHN0YXRpYyBpbmxpbmUgc3RydWN0IHBhZ2UgKm1lbV9tYXBfbmV4dChzdHJ1Y3QgcGFnZSAqaXRlciwKZGlmZiAtLWdpdCBhL21tL2ttZW1sZWFrLmMgYi9tbS9rbWVtbGVhay5jCmluZGV4IDg0MjI1ZjMuLmMxZDU4NjcgMTAwNjQ0Ci0tLSBhL21tL2ttZW1sZWFrLmMKKysrIGIvbW0va21lbWxlYWsuYwpAQCAtMjY1LDcgKzI2NSw3IEBACiB9IHdoaWxlICgwKQogCiAvKgotICogTWFjcm8gaW52b2tlZCB3aGVuIGEgc2VyaW91cyBrbWVtbGVhayBjb25kaXRpb24gb2NjdXJlZCBhbmQgY2Fubm90IGJlCisgKiBNYWNybyBpbnZva2VkIHdoZW4gYSBzZXJpb3VzIGttZW1sZWFrIGNvbmRpdGlvbiBvY2N1cnJlZCBhbmQgY2Fubm90IGJlCiAgKiByZWNvdmVyZWQgZnJvbS4gS21lbWxlYWsgd2lsbCBiZSBkaXNhYmxlZCBhbmQgZnVydGhlciBhbGxvY2F0aW9uL2ZyZWVpbmcKICAqIHRyYWNpbmcgbm8gbG9uZ2VyIGF2YWlsYWJsZS4KICAqLwpAQCAtMTAwNiw3ICsxMDA2LDcgQEAKIAogLyoKICAqIE1lbW9yeSBzY2FubmluZyBpcyBhIGxvbmcgcHJvY2VzcyBhbmQgaXQgbmVlZHMgdG8gYmUgaW50ZXJydXB0YWJsZS4gVGhpcwotICogZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgc3VjaCBpbnRlcnJ1cHQgY29uZGl0aW9uIG9jY3VyZWQuCisgKiBmdW5jdGlvbiBjaGVja3Mgd2hldGhlciBzdWNoIGludGVycnVwdCBjb25kaXRpb24gb2NjdXJyZWQuCiAgKi8KIHN0YXRpYyBpbnQgc2Nhbl9zaG91bGRfc3RvcCh2b2lkKQogewpAQCAtMTczMyw3ICsxNzMzLDcgQEAKIAogCWlmIChhdG9taWNfcmVhZCgma21lbWxlYWtfZXJyb3IpKSB7CiAJCS8qCi0JCSAqIFNvbWUgZXJyb3Igb2NjdXJlZCBhbmQga21lbWxlYWsgd2FzIGRpc2FibGVkLiBUaGVyZSBpcyBhCisJCSAqIFNvbWUgZXJyb3Igb2NjdXJyZWQgYW5kIGttZW1sZWFrIHdhcyBkaXNhYmxlZC4gVGhlcmUgaXMgYQogCQkgKiBzbWFsbCBjaGFuY2UgdGhhdCBrbWVtbGVha19kaXNhYmxlKCkgd2FzIGNhbGxlZCBpbW1lZGlhdGVseQogCQkgKiBhZnRlciBzZXR0aW5nIGttZW1sZWFrX2luaXRpYWxpemVkIGFuZCB3ZSBtYXkgZW5kIHVwIHdpdGgKIAkJICogdHdvIGNsZWFuLXVwIHRocmVhZHMgYnV0IHNlcmlhbGl6ZWQgYnkgc2Nhbl9tdXRleC4KZGlmZiAtLWdpdCBhL21tL2tzbS5jIGIvbW0va3NtLmMKaW5kZXggMWJiZTc4NS4uOTQyZGZjNyAxMDA2NDQKLS0tIGEvbW0va3NtLmMKKysrIGIvbW0va3NtLmMKQEAgLTcyMCw3ICs3MjAsNyBAQAogCQlzd2FwcGVkID0gUGFnZVN3YXBDYWNoZShwYWdlKTsKIAkJZmx1c2hfY2FjaGVfcGFnZSh2bWEsIGFkZHIsIHBhZ2VfdG9fcGZuKHBhZ2UpKTsKIAkJLyoKLQkJICogT2sgdGhpcyBpcyB0cmlja3ksIHdoZW4gZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIHJ1biBpdCBkb2VzbnQKKwkJICogT2sgdGhpcyBpcyB0cmlja3ksIHdoZW4gZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIHJ1biBpdCBkb2Vzbid0CiAJCSAqIHRha2UgYW55IGxvY2ssIHRoZXJlZm9yZSB0aGUgY2hlY2sgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gbWFrZQogCQkgKiB3aXRoIHRoZSBwYWdlY291bnQgYWdhaW5zdCB0aGUgbWFwY291bnQgaXMgcmFjZXkgYW5kCiAJCSAqIE9fRElSRUNUIGNhbiBoYXBwZW4gcmlnaHQgYWZ0ZXIgdGhlIGNoZWNrLgpkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJvbC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDFmMGI0NjAuLjAxMGY5MTYgMTAwNjQ0Ci0tLSBhL21tL21lbWNvbnRyb2wuYworKysgYi9tbS9tZW1jb250cm9sLmMKQEAgLTE0NjYsNyArMTQ2Niw3IEBACiAJCQkJCWJyZWFrOwogCQkJCX0KIAkJCQkvKgotCQkJCSAqIFdlIHdhbnQgdG8gZG8gbW9yZSB0YXJnZXR0ZWQgcmVjbGFpbS4KKwkJCQkgKiBXZSB3YW50IHRvIGRvIG1vcmUgdGFyZ2V0ZWQgcmVjbGFpbS4KIAkJCQkgKiBleGNlc3MgPj4gMiBpcyBub3QgdG8gZXhjZXNzaXZlIHNvIGFzIHRvCiAJCQkJICogcmVjbGFpbSB0b28gbXVjaCwgbm9yIHRvbyBsZXNzIHRoYXQgd2Uga2VlcAogCQkJCSAqIGNvbWluZyBiYWNrIHRvIHJlY2xhaW0gZnJvbSB0aGlzIGNncm91cApAQCAtMjI2NSw3ICsyMjY1LDcgQEAKICAqIC0gY29tcG91bmRfbG9jayBpcyBoZWxkIHdoZW4gbnJfcGFnZXMgPiAxCiAgKgogICogVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGRvICJjaGFyZ2UiIG5vciBjc3NfZ2V0IHRvIG5ldyBjZ3JvdXAuIEl0IHNob3VsZCBiZQotICogZG9uZSBieSBhIGNhbGxlcihfX21lbV9jZ3JvdXBfdHJ5X2NoYXJnZSB3b3VsZCBiZSB1c2VmdWxsKS4gSWYgQHVuY2hhcmdlIGlzCisgKiBkb25lIGJ5IGEgY2FsbGVyKF9fbWVtX2Nncm91cF90cnlfY2hhcmdlIHdvdWxkIGJlIHVzZWZ1bCkuIElmIEB1bmNoYXJnZSBpcwogICogdHJ1ZSwgdGhpcyBmdW5jdGlvbiBkb2VzICJ1bmNoYXJnZSIgZnJvbSBvbGQgY2dyb3VwLCBidXQgaXQgZG9lc24ndCBpZgogICogQHVuY2hhcmdlIGlzIGZhbHNlLCBzbyBhIGNhbGxlciBzaG91bGQgZG8gInVuY2hhcmdlIi4KICAqLwpAQCAtMjMxOCw3ICsyMzE4LDcgQEAKIAkgKiBXZSBjaGFyZ2VzIGFnYWluc3QgInRvIiB3aGljaCBtYXkgbm90IGhhdmUgYW55IHRhc2tzLiBUaGVuLCAidG8iCiAJICogY2FuIGJlIHVuZGVyIHJtZGlyKCkuIEJ1dCBpbiBjdXJyZW50IGltcGxlbWVudGF0aW9uLCBjYWxsZXIgb2YKIAkgKiB0aGlzIGZ1bmN0aW9uIGlzIGp1c3QgZm9yY2VfZW1wdHkoKSBhbmQgbW92ZSBjaGFyZ2UsIHNvIGl0J3MKLQkgKiBnYXJhbnRlZWQgdGhhdCAidG8iIGlzIG5ldmVyIHJlbW92ZWQuIFNvLCB3ZSBkb24ndCBjaGVjayBybWRpcgorCSAqIGd1YXJhbnRlZWQgdGhhdCAidG8iIGlzIG5ldmVyIHJlbW92ZWQuIFNvLCB3ZSBkb24ndCBjaGVjayBybWRpcgogCSAqIHN0YXR1cyBoZXJlLgogCSAqLwogCW1vdmVfdW5sb2NrX3BhZ2VfY2dyb3VwKHBjLCAmZmxhZ3MpOwpAQCAtMjY0OCw3ICsyNjQ4LDcgQEAKIAkJYmF0Y2gtPm1lbWNnID0gbWVtOwogCS8qCiAJICogZG9fYmF0Y2ggPiAwIHdoZW4gdW5tYXBwaW5nIHBhZ2VzIG9yIGlub2RlIGludmFsaWRhdGUvdHJ1bmNhdGUuCi0JICogSW4gdGhvc2UgY2FzZXMsIGFsbCBwYWdlcyBmcmVlZCBjb250aW5vdXNseSBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgaW4KKwkgKiBJbiB0aG9zZSBjYXNlcywgYWxsIHBhZ2VzIGZyZWVkIGNvbnRpbnVvdXNseSBjYW4gYmUgZXhwZWN0ZWQgdG8gYmUgaW4KIAkgKiB0aGUgc2FtZSBjZ3JvdXAgYW5kIHdlIGhhdmUgY2hhbmNlIHRvIGNvYWxlc2NlIHVuY2hhcmdlcy4KIAkgKiBCdXQgd2UgZG8gdW5jaGFyZ2Ugb25lIGJ5IG9uZSBpZiB0aGlzIGlzIGtpbGxlZCBieSBPT00oVElGX01FTURJRSkKIAkgKiBiZWNhdXNlIHdlIHdhbnQgdG8gZG8gdW5jaGFyZ2UgYXMgc29vbiBhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL21tL21lbW9yeS1mYWlsdXJlLmMgYi9tbS9tZW1vcnktZmFpbHVyZS5jCmluZGV4IDM3ZmViOWYuLjJiOWE1ZWUgMTAwNjQ0Ci0tLSBhL21tL21lbW9yeS1mYWlsdXJlLmMKKysrIGIvbW0vbWVtb3J5LWZhaWx1cmUuYwpAQCAtMjA4LDcgKzIwOCw3IEBACiAJICogRG9uJ3QgdXNlIGZvcmNlIGhlcmUsIGl0J3MgY29udmVuaWVudCBpZiB0aGUgc2lnbmFsCiAJICogY2FuIGJlIHRlbXBvcmFyaWx5IGJsb2NrZWQuCiAJICogVGhpcyBjb3VsZCBjYXVzZSBhIGxvb3Agd2hlbiB0aGUgdXNlciBzZXRzIFNJR0JVUwotCSAqIHRvIFNJR19JR04sIGJ1dCBob3BlZnVsbHkgbm9vbmUgd2lsbCBkbyB0aGF0PworCSAqIHRvIFNJR19JR04sIGJ1dCBob3BlZnVsbHkgbm8gb25lIHdpbGwgZG8gdGhhdD8KIAkgKi8KIAlyZXQgPSBzZW5kX3NpZ19pbmZvKFNJR0JVUywgJnNpLCB0KTsgIC8qIHN5bmNocm9ub3VzPyAqLwogCWlmIChyZXQgPCAwKQpAQCAtNjM0LDcgKzYzNCw3IEBACiAJCSAqIHdoZW4gdGhlIHBhZ2UgaXMgcmVyZWFkIG9yIGRyb3BwZWQuICBJZiBhbgogCQkgKiBhcHBsaWNhdGlvbiBhc3N1bWVzIGl0IHdpbGwgYWx3YXlzIGdldCBlcnJvciBvbgogCQkgKiBmc3luYywgYnV0IGRvZXMgb3RoZXIgb3BlcmF0aW9ucyBvbiB0aGUgZmQgYmVmb3JlCi0JCSAqIGFuZCB0aGUgcGFnZSBpcyBkcm9wcGVkIGluYmV0d2VlbiB0aGVuIHRoZSBlcnJvcgorCQkgKiBhbmQgdGhlIHBhZ2UgaXMgZHJvcHBlZCBiZXR3ZWVuIHRoZW4gdGhlIGVycm9yCiAJCSAqIHdpbGwgbm90IGJlIHByb3Blcmx5IHJlcG9ydGVkLgogCQkgKgogCQkgKiBUaGlzIGNhbiBhbHJlYWR5IGhhcHBlbiBldmVuIHdpdGhvdXQgaHdwb2lzb25lZApAQCAtNzI4LDcgKzcyOCw3IEBACiAgKiBUaGUgdGFibGUgbWF0Y2hlcyB0aGVtIGluIG9yZGVyIGFuZCBjYWxscyB0aGUgcmlnaHQgaGFuZGxlci4KICAqCiAgKiBUaGlzIGlzIHF1aXRlIHRyaWNreSBiZWNhdXNlIHdlIGNhbiBhY2Nlc3MgcGFnZSBhdCBhbnkgdGltZQotICogaW4gaXRzIGxpdmUgY3ljbGUsIHNvIGFsbCBhY2Nlc3NlcyBoYXZlIHRvIGJlIGV4dHJlbWx5IGNhcmVmdWwuCisgKiBpbiBpdHMgbGl2ZSBjeWNsZSwgc28gYWxsIGFjY2Vzc2VzIGhhdmUgdG8gYmUgZXh0cmVtZWx5IGNhcmVmdWwuCiAgKgogICogVGhpcyBpcyBub3QgY29tcGxldGUuIE1vcmUgc3RhdGVzIGNvdWxkIGJlIGFkZGVkLgogICogRm9yIGFueSBtaXNzaW5nIHN0YXRlIGRvbid0IGF0dGVtcHQgcmVjb3ZlcnkuCmRpZmYgLS1naXQgYS9tbS9tZW1vcnlfaG90cGx1Zy5jIGIvbW0vbWVtb3J5X2hvdHBsdWcuYwppbmRleCAzMjFmYzc0Li5hMmFjYWY4IDEwMDY0NAotLS0gYS9tbS9tZW1vcnlfaG90cGx1Zy5jCisrKyBiL21tL21lbW9yeV9ob3RwbHVnLmMKQEAgLTcyNCw3ICs3MjQsNyBAQAogCQkJICAgICAgIHBmbik7CiAJCQlkdW1wX3BhZ2UocGFnZSk7CiAjZW5kaWYKLQkJCS8qIEJlY2FzdWUgd2UgZG9uJ3QgaGF2ZSBiaWcgem9uZS0+bG9jay4gd2Ugc2hvdWxkCisJCQkvKiBCZWNhdXNlIHdlIGRvbid0IGhhdmUgYmlnIHpvbmUtPmxvY2suIHdlIHNob3VsZAogCQkJICAgY2hlY2sgdGhpcyBhZ2FpbiBoZXJlLiAqLwogCQkJaWYgKHBhZ2VfY291bnQocGFnZSkpIHsKIAkJCQlub3RfbWFuYWdlZCsrOwpkaWZmIC0tZ2l0IGEvbW0vbWlncmF0ZS5jIGIvbW0vbWlncmF0ZS5jCmluZGV4IGIwNDA2ZDcuLjM0MTMyZjggMTAwNjQ0Ci0tLSBhL21tL21pZ3JhdGUuYworKysgYi9tbS9taWdyYXRlLmMKQEAgLTM3NSw3ICszNzUsNyBAQAogCQkgKiByZWRvIHRoZSBhY2NvdW50aW5nIHRoYXQgY2xlYXJfcGFnZV9kaXJ0eV9mb3JfaW8gdW5kaWQsCiAJCSAqIGJ1dCB3ZSBjYW4ndCB1c2Ugc2V0X3BhZ2VfZGlydHkgYmVjYXVzZSB0aGF0IGZ1bmN0aW9uCiAJCSAqIGlzIGFjdHVhbGx5IGEgc2lnbmFsIHRoYXQgYWxsIG9mIHRoZSBwYWdlIGhhcyBiZWNvbWUgZGlydHkuCi0JCSAqIFdoZXJhcyBvbmx5IHBhcnQgb2Ygb3VyIHBhZ2UgbWF5IGJlIGRpcnR5LgorCQkgKiBXaGVyZWFzIG9ubHkgcGFydCBvZiBvdXIgcGFnZSBtYXkgYmUgZGlydHkuCiAJCSAqLwogCQlfX3NldF9wYWdlX2RpcnR5X25vYnVmZmVycyhuZXdwYWdlKTsKICAJfQpkaWZmIC0tZ2l0IGEvbW0vbXJlbWFwLmMgYi9tbS9tcmVtYXAuYwppbmRleCAxZGU5OGQ0Li5hN2MxZjlmIDEwMDY0NAotLS0gYS9tbS9tcmVtYXAuYworKysgYi9tbS9tcmVtYXAuYwpAQCAtMjc3LDkgKzI3NywxNiBAQAogCWlmIChvbGRfbGVuID4gdm1hLT52bV9lbmQgLSBhZGRyKQogCQlnb3RvIEVmYXVsdDsKIAotCWlmICh2bWEtPnZtX2ZsYWdzICYgKFZNX0RPTlRFWFBBTkQgfCBWTV9QRk5NQVApKSB7Ci0JCWlmIChuZXdfbGVuID4gb2xkX2xlbikKKwkvKiBOZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgYSBncm93aW5nIG1hcHBpbmcgKi8KKwlpZiAobmV3X2xlbiA+IG9sZF9sZW4pIHsKKwkJdW5zaWduZWQgbG9uZyBwZ29mZjsKKworCQlpZiAodm1hLT52bV9mbGFncyAmIChWTV9ET05URVhQQU5EIHwgVk1fUEZOTUFQKSkKIAkJCWdvdG8gRWZhdWx0OworCQlwZ29mZiA9IChhZGRyIC0gdm1hLT52bV9zdGFydCkgPj4gUEFHRV9TSElGVDsKKwkJcGdvZmYgKz0gdm1hLT52bV9wZ29mZjsKKwkJaWYgKHBnb2ZmICsgKG5ld19sZW4gPj4gUEFHRV9TSElGVCkgPCBwZ29mZikKKwkJCWdvdG8gRWludmFsOwogCX0KIAogCWlmICh2bWEtPnZtX2ZsYWdzICYgVk1fTE9DS0VEKSB7CmRpZmYgLS1naXQgYS9tbS9ub2Jvb3RtZW0uYyBiL21tL25vYm9vdG1lbS5jCmluZGV4IGU5OWY2Y2QuLjkxMDkwNDkgMTAwNjQ0Ci0tLSBhL21tL25vYm9vdG1lbS5jCisrKyBiL21tL25vYm9vdG1lbS5jCkBAIC0xNTAsNyArMTUwLDcgQEAKIHsKIAkvKgogCSAqIFdlIG5lZWQgdG8gdXNlIE1BWF9OVU1OT0RFUyBpbnN0ZWFkIG9mIE5PREVfREFUQSgwKS0+bm9kZV9pZAotCSAqICBiZWNhdXNlIGluIHNvbWUgY2FzZSBsaWtlIE5vZGUwIGRvZXNudCBoYXZlIFJBTSBpbnN0YWxsZWQKKwkgKiAgYmVjYXVzZSBpbiBzb21lIGNhc2UgbGlrZSBOb2RlMCBkb2Vzbid0IGhhdmUgUkFNIGluc3RhbGxlZAogCSAqICBsb3cgcmFtIHdpbGwgYmUgb24gTm9kZTEKIAkgKiBVc2UgTUFYX05VTU5PREVTIHdpbGwgbWFrZSBzdXJlIGFsbCByYW5nZXMgaW4gZWFybHlfbm9kZV9tYXBbXQogCSAqICB3aWxsIGJlIHVzZWQgaW5zdGVhZCBvZiBvbmx5IE5vZGUwIHJlbGF0ZWQKZGlmZiAtLWdpdCBhL21tL3BhZ2VfYWxsb2MuYyBiL21tL3BhZ2VfYWxsb2MuYwppbmRleCBkNmU3YmE3Li4yNzQ3ZjVlNWEgMTAwNjQ0Ci0tLSBhL21tL3BhZ2VfYWxsb2MuYworKysgYi9tbS9wYWdlX2FsbG9jLmMKQEAgLTk0Miw3ICs5NDIsNyBAQAogCQkJICogSWYgYnJlYWtpbmcgYSBsYXJnZSBibG9jayBvZiBwYWdlcywgbW92ZSBhbGwgZnJlZQogCQkJICogcGFnZXMgdG8gdGhlIHByZWZlcnJlZCBhbGxvY2F0aW9uIGxpc3QuIElmIGZhbGxpbmcKIAkJCSAqIGJhY2sgZm9yIGEgcmVjbGFpbWFibGUga2VybmVsIGFsbG9jYXRpb24sIGJlIG1vcmUKLQkJCSAqIGFncmVzc2l2ZSBhYm91dCB0YWtpbmcgb3duZXJzaGlwIG9mIGZyZWUgcGFnZXMKKwkJCSAqIGFnZ3Jlc3NpdmUgYWJvdXQgdGFraW5nIG93bmVyc2hpcCBvZiBmcmVlIHBhZ2VzCiAJCQkgKi8KIAkJCWlmICh1bmxpa2VseShjdXJyZW50X29yZGVyID49IChwYWdlYmxvY2tfb3JkZXIgPj4gMSkpIHx8CiAJCQkJCXN0YXJ0X21pZ3JhdGV0eXBlID09IE1JR1JBVEVfUkVDTEFJTUFCTEUgfHwKQEAgLTM5MjYsNyArMzkyNiw3IEBACiAKIC8qCiAgKiBUaGUgem9uZSByYW5nZXMgcHJvdmlkZWQgYnkgdGhlIGFyY2hpdGVjdHVyZSBkbyBub3QgaW5jbHVkZSBaT05FX01PVkFCTEUKLSAqIGJlY2F1c2UgaXQgaXMgc2l6ZWQgaW5kZXBlbmRhbnQgb2YgYXJjaGl0ZWN0dXJlLiBVbmxpa2UgdGhlIG90aGVyIHpvbmVzLAorICogYmVjYXVzZSBpdCBpcyBzaXplZCBpbmRlcGVuZGVudCBvZiBhcmNoaXRlY3R1cmUuIFVubGlrZSB0aGUgb3RoZXIgem9uZXMsCiAgKiB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIFpPTkVfTU9WQUJMRSBpcyBub3QgZml4ZWQuIEl0IG1heSBiZSBkaWZmZXJlbnQKICAqIGluIGVhY2ggbm9kZSBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgZWFjaCBub2RlIGFuZCBob3cgZXZlbmx5IGtlcm5lbGNvcmUKICAqIGlzIGRpc3RyaWJ1dGVkLiBUaGlzIGhlbHBlciBmdW5jdGlvbiBhZGp1c3RzIHRoZSB6b25lIHJhbmdlcwpkaWZmIC0tZ2l0IGEvbW0vcGFnZV9jZ3JvdXAuYyBiL21tL3BhZ2VfY2dyb3VwLmMKaW5kZXggYTEyY2MzZi4uOTkwNTUwMSAxMDA2NDQKLS0tIGEvbW0vcGFnZV9jZ3JvdXAuYworKysgYi9tbS9wYWdlX2Nncm91cC5jCkBAIC0zNzcsNyArMzc3LDcgQEAKICAqIEBuZXc6IG5ldyBpZAogICoKICAqIFJldHVybnMgb2xkIGlkIGF0IHN1Y2Nlc3MsIDAgYXQgZmFpbHVyZS4KLSAqIChUaGVyZSBpcyBubyBtZW1fY2dyb3VwIHVzZWluZyAwIGFzIGl0cyBpZCkKKyAqIChUaGVyZSBpcyBubyBtZW1fY2dyb3VwIHVzaW5nIDAgYXMgaXRzIGlkKQogICovCiB1bnNpZ25lZCBzaG9ydCBzd2FwX2Nncm91cF9jbXB4Y2hnKHN3cF9lbnRyeV90IGVudCwKIAkJCQkJdW5zaWduZWQgc2hvcnQgb2xkLCB1bnNpZ25lZCBzaG9ydCBuZXcpCmRpZmYgLS1naXQgYS9tbS9wZXJjcHUuYyBiL21tL3BlcmNwdS5jCmluZGV4IDU1ZDRkMTEuLmExNjBkYjMgMTAwNjQ0Ci0tLSBhL21tL3BlcmNwdS5jCisrKyBiL21tL3BlcmNwdS5jCkBAIC0zNDIsNyArMzQyLDcgQEAKICAqIEBjaHVuazogY2h1bmsgb2YgaW50ZXJlc3QKICAqCiAgKiBEZXRlcm1pbmUgd2hldGhlciBhcmVhIG1hcCBvZiBAY2h1bmsgbmVlZHMgdG8gYmUgZXh0ZW5kZWQgdG8KLSAqIGFjY29tb2RhdGUgYSBuZXcgYWxsb2NhdGlvbi4KKyAqIGFjY29tbW9kYXRlIGEgbmV3IGFsbG9jYXRpb24uCiAgKgogICogQ09OVEVYVDoKICAqIHBjcHVfbG9jay4KQEAgLTQzMSw3ICs0MzEsNyBAQAogICogZGVwZW5kaW5nIG9uIEBoZWFkLCBpcyByZWR1Y2VkIGJ5IEB0YWlsIGJ5dGVzIGFuZCBAdGFpbCBieXRlIGJsb2NrCiAgKiBpcyBpbnNlcnRlZCBhZnRlciB0aGUgdGFyZ2V0IGJsb2NrLgogICoKLSAqIEBjaHVuay0+bWFwIG11c3QgaGF2ZSBlbm91Z2ggZnJlZSBzbG90cyB0byBhY2NvbW9kYXRlIHRoZSBzcGxpdC4KKyAqIEBjaHVuay0+bWFwIG11c3QgaGF2ZSBlbm91Z2ggZnJlZSBzbG90cyB0byBhY2NvbW1vZGF0ZSB0aGUgc3BsaXQuCiAgKgogICogQ09OVEVYVDoKICAqIHBjcHVfbG9jay4KQEAgLTE0MzUsNyArMTQzNSw3IEBACiAJLyoKIAkgKiBEZXRlcm1pbmUgbWluX3VuaXRfc2l6ZSwgYWxsb2Nfc2l6ZSBhbmQgbWF4X3VwYSBzdWNoIHRoYXQKIAkgKiBhbGxvY19zaXplIGlzIG11bHRpcGxlIG9mIGF0b21fc2l6ZSBhbmQgaXMgdGhlIHNtYWxsZXN0Ci0JICogd2hpY2ggY2FuIGFjY29tb2RhdGUgNGsgYWxpZ25lZCBzZWdtZW50cyB3aGljaCBhcmUgZXF1YWwgdG8KKwkgKiB3aGljaCBjYW4gYWNjb21tb2RhdGUgNGsgYWxpZ25lZCBzZWdtZW50cyB3aGljaCBhcmUgZXF1YWwgdG8KIAkgKiBvciBsYXJnZXIgdGhhbiBtaW5fdW5pdF9zaXplLgogCSAqLwogCW1pbl91bml0X3NpemUgPSBtYXhfdChzaXplX3QsIHNpemVfc3VtLCBQQ1BVX01JTl9VTklUX1NJWkUpOwpAQCAtMTU1MCw3ICsxNTUwLDcgQEAKICAqIEBhdG9tX3NpemU6IGFsbG9jYXRpb24gYXRvbSBzaXplCiAgKiBAY3B1X2Rpc3RhbmNlX2ZuOiBjYWxsYmFjayB0byBkZXRlcm1pbmUgZGlzdGFuY2UgYmV0d2VlbiBjcHVzLCBvcHRpb25hbAogICogQGFsbG9jX2ZuOiBmdW5jdGlvbiB0byBhbGxvY2F0ZSBwZXJjcHUgcGFnZQotICogQGZyZWVfZm46IGZ1bnRpb24gdG8gZnJlZSBwZXJjcHUgcGFnZQorICogQGZyZWVfZm46IGZ1bmN0aW9uIHRvIGZyZWUgcGVyY3B1IHBhZ2UKICAqCiAgKiBUaGlzIGlzIGEgaGVscGVyIHRvIGVhc2Ugc2V0dGluZyB1cCBlbWJlZGRlZCBmaXJzdCBwZXJjcHUgY2h1bmsgYW5kCiAgKiBjYW4gYmUgY2FsbGVkIHdoZXJlIHBjcHVfc2V0dXBfZmlyc3RfY2h1bmsoKSBpcyBleHBlY3RlZC4KQEAgLTE2NzgsNyArMTY3OCw3IEBACiAgKiBwY3B1X3BhZ2VfZmlyc3RfY2h1bmsgLSBtYXAgdGhlIGZpcnN0IGNodW5rIHVzaW5nIFBBR0VfU0laRSBwYWdlcwogICogQHJlc2VydmVkX3NpemU6IHRoZSBzaXplIG9mIHJlc2VydmVkIHBlcmNwdSBhcmVhIGluIGJ5dGVzCiAgKiBAYWxsb2NfZm46IGZ1bmN0aW9uIHRvIGFsbG9jYXRlIHBlcmNwdSBwYWdlLCBhbHdheXMgY2FsbGVkIHdpdGggUEFHRV9TSVpFCi0gKiBAZnJlZV9mbjogZnVudGlvbiB0byBmcmVlIHBlcmNwdSBwYWdlLCBhbHdheXMgY2FsbGVkIHdpdGggUEFHRV9TSVpFCisgKiBAZnJlZV9mbjogZnVuY3Rpb24gdG8gZnJlZSBwZXJjcHUgcGFnZSwgYWx3YXlzIGNhbGxlZCB3aXRoIFBBR0VfU0laRQogICogQHBvcHVsYXRlX3B0ZV9mbjogZnVuY3Rpb24gdG8gcG9wdWxhdGUgcHRlCiAgKgogICogVGhpcyBpcyBhIGhlbHBlciB0byBlYXNlIHNldHRpbmcgdXAgcGFnZS1yZW1hcHBlZCBmaXJzdCBwZXJjcHUKZGlmZiAtLWdpdCBhL21tL3NsYWIuYyBiL21tL3NsYWIuYwppbmRleCA1Njg4MDNmLi40NmE5YzE2IDEwMDY0NAotLS0gYS9tbS9zbGFiLmMKKysrIGIvbW0vc2xhYi5jCkBAIC04NzgsNyArODc4LDcgQEAKIAluYyA9IGttYWxsb2Nfbm9kZShtZW1zaXplLCBnZnAsIG5vZGUpOwogCS8qCiAJICogVGhlIGFycmF5X2NhY2hlIHN0cnVjdHVyZXMgY29udGFpbiBwb2ludGVycyB0byBmcmVlIG9iamVjdC4KLQkgKiBIb3dldmVyLCB3aGVuIHN1Y2ggb2JqZWN0cyBhcmUgYWxsb2NhdGVkIG9yIHRyYW5zZmVyZWQgdG8gYW5vdGhlcgorCSAqIEhvd2V2ZXIsIHdoZW4gc3VjaCBvYmplY3RzIGFyZSBhbGxvY2F0ZWQgb3IgdHJhbnNmZXJyZWQgdG8gYW5vdGhlcgogCSAqIGNhY2hlIHRoZSBwb2ludGVycyBhcmUgbm90IGNsZWFyZWQgYW5kIHRoZXkgY291bGQgYmUgY291bnRlZCBhcwogCSAqIHZhbGlkIHJlZmVyZW5jZXMgZHVyaW5nIGEga21lbWxlYWsgc2Nhbi4gVGhlcmVmb3JlLCBrbWVtbGVhayBtdXN0CiAJICogbm90IHNjYW4gc3VjaCBvYmplY3RzLgpAQCAtMjYwNiw3ICsyNjA2LDcgQEAKICAqCiAgKiBUaGUgY2FjaGUgbXVzdCBiZSBlbXB0eSBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgogICoKLSAqIFRoZSBjYWxsZXIgbXVzdCBndWFyYW50ZWUgdGhhdCBub29uZSB3aWxsIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBjYWNoZQorICogVGhlIGNhbGxlciBtdXN0IGd1YXJhbnRlZSB0aGF0IG5vIG9uZSB3aWxsIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHRoZSBjYWNoZQogICogZHVyaW5nIHRoZSBrbWVtX2NhY2hlX2Rlc3Ryb3koKS4KICAqLwogdm9pZCBrbWVtX2NhY2hlX2Rlc3Ryb3koc3RydWN0IGttZW1fY2FjaGUgKmNhY2hlcCkKZGlmZiAtLWdpdCBhL21tL3NsdWIuYyBiL21tL3NsdWIuYwppbmRleCBmODgxODc0Li45NGQyYTMzIDEwMDY0NAotLS0gYS9tbS9zbHViLmMKKysrIGIvbW0vc2x1Yi5jCkBAIC02NCw3ICs2NCw3IEBACiAgKiAgIHdlIG11c3Qgc3RheSBhd2F5IGZyb20gaXQgZm9yIGEgd2hpbGUgc2luY2Ugd2UgbWF5IGNhdXNlIGEgYm91bmNpbmcKICAqICAgY2FjaGVsaW5lIGlmIHdlIHRyeSB0byBhY3F1aXJlIHRoZSBsb2NrLiBTbyBnbyBvbnRvIHRoZSBuZXh0IHNsYWIuCiAgKiAgIElmIGFsbCBwYWdlcyBhcmUgYnVzeSB0aGVuIHdlIG1heSBhbGxvY2F0ZSBhIG5ldyBzbGFiIGluc3RlYWQgb2YgcmV1c2luZwotICogICBhIHBhcnRpYWwgc2xhYi4gQSBuZXcgc2xhYiBoYXMgbm9vbmUgb3BlcmF0aW5nIG9uIGl0IGFuZCB0aHVzIHRoZXJlIGlzCisgKiAgIGEgcGFydGlhbCBzbGFiLiBBIG5ldyBzbGFiIGhhcyBubyBvbmUgb3BlcmF0aW5nIG9uIGl0IGFuZCB0aHVzIHRoZXJlIGlzCiAgKiAgIG5vIGRhbmdlciBvZiBjYWNoZWxpbmUgY29udGVudGlvbi4KICAqCiAgKiAgIEludGVycnVwdHMgYXJlIGRpc2FibGVkIGR1cmluZyBhbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gaW4gb3JkZXIgdG8KQEAgLTE5MjksNyArMTkyOSw3IEBACiAJZWxzZSB7CiAjaWZkZWYgQ09ORklHX0NNUFhDSEdfTE9DQUwKIAkJLyoKLQkJICogVGhlIGNtcHhjaGcgd2lsbCBvbmx5IG1hdGNoIGlmIHRoZXJlIHdhcyBubyBhZGRpdG9uYWwKKwkJICogVGhlIGNtcHhjaGcgd2lsbCBvbmx5IG1hdGNoIGlmIHRoZXJlIHdhcyBubyBhZGRpdGlvbmFsCiAJCSAqIG9wZXJhdGlvbiBhbmQgaWYgd2UgYXJlIG9uIHRoZSByaWdodCBwcm9jZXNzb3IuCiAJCSAqCiAJCSAqIFRoZSBjbXB4Y2hnIGRvZXMgdGhlIGZvbGxvd2luZyBhdG9taWNhbGx5ICh3aXRob3V0IGxvY2sgc2VtYW50aWNzISkKQEAgLTM1NDcsNyArMzU0Nyw3IEBACiAKIAlyZXQgPSBzbGFiX2FsbG9jKHMsIGdmcGZsYWdzLCBOVU1BX05PX05PREUsIGNhbGxlcik7CiAKLQkvKiBIb25vciB0aGUgY2FsbCBzaXRlIHBvaW50ZXIgd2UgcmVjaWV2ZWQuICovCisJLyogSG9ub3IgdGhlIGNhbGwgc2l0ZSBwb2ludGVyIHdlIHJlY2VpdmVkLiAqLwogCXRyYWNlX2ttYWxsb2MoY2FsbGVyLCByZXQsIHNpemUsIHMtPnNpemUsIGdmcGZsYWdzKTsKIAogCXJldHVybiByZXQ7CkBAIC0zNTc3LDcgKzM1NzcsNyBAQAogCiAJcmV0ID0gc2xhYl9hbGxvYyhzLCBnZnBmbGFncywgbm9kZSwgY2FsbGVyKTsKIAotCS8qIEhvbm9yIHRoZSBjYWxsIHNpdGUgcG9pbnRlciB3ZSByZWNpZXZlZC4gKi8KKwkvKiBIb25vciB0aGUgY2FsbCBzaXRlIHBvaW50ZXIgd2UgcmVjZWl2ZWQuICovCiAJdHJhY2Vfa21hbGxvY19ub2RlKGNhbGxlciwgcmV0LCBzaXplLCBzLT5zaXplLCBnZnBmbGFncywgbm9kZSk7CiAKIAlyZXR1cm4gcmV0OwpkaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLmMgYi9tbS9zcGFyc2UuYwppbmRleCA5MzI1MDIwLi5hYTY0YjEyIDEwMDY0NAotLS0gYS9tbS9zcGFyc2UuYworKysgYi9tbS9zcGFyc2UuYwpAQCAtNTAwLDcgKzUwMCw3IEBACiAJICogc28gYWxsb2MgMk0gKHdpdGggMk0gYWxpZ24pIGFuZCAyNCBieXRlcyBpbiB0dXJuIHdpbGwKIAkgKiBtYWtlIG5leHQgMk0gc2xpcCB0byBvbmUgbW9yZSAyTSBsYXRlci4KIAkgKiB0aGVuIGluIGJpZyBzeXN0ZW0sIHRoZSBtZW1vcnkgd2lsbCBoYXZlIGEgbG90IG9mIGhvbGVzLi4uCi0JICogaGVyZSB0cnkgdG8gYWxsb2NhdGUgMk0gcGFnZXMgY29udGlub3VzbHkuCisJICogaGVyZSB0cnkgdG8gYWxsb2NhdGUgMk0gcGFnZXMgY29udGludW91c2x5LgogCSAqCiAJICogcG93ZXJwYyBuZWVkIHRvIGNhbGwgc3BhcnNlX2luaXRfb25lX3NlY3Rpb24gcmlnaHQgYWZ0ZXIgZWFjaAogCSAqIHNwYXJzZV9lYXJseV9tZW1fbWFwX2FsbG9jLCBzbyBhbGxvY2F0ZSB1c2VtYXBfbWFwIGF0IGZpcnN0LgpkaWZmIC0tZ2l0IGEvbW0vdXRpbC5jIGIvbW0vdXRpbC5jCmluZGV4IGYxMjY5NzUuLmU3YjEwM2EgMTAwNjQ0Ci0tLSBhL21tL3V0aWwuYworKysgYi9tbS91dGlsLmMKQEAgLTIyNyw3ICsyMjcsNyBAQAogLyoKICAqIExpa2UgZ2V0X3VzZXJfcGFnZXNfZmFzdCgpIGV4Y2VwdCBpdHMgSVJRLXNhZmUgaW4gdGhhdCBpdCB3b24ndCBmYWxsCiAgKiBiYWNrIHRvIHRoZSByZWd1bGFyIEdVUC4KLSAqIElmIHRoZSBhcmNoaXRlY3R1cmUgbm90IHN1cHBvcnQgdGhpcyBmdWNudGlvbiwgc2ltcGx5IHJldHVybiB3aXRoIG5vCisgKiBJZiB0aGUgYXJjaGl0ZWN0dXJlIG5vdCBzdXBwb3J0IHRoaXMgZnVuY3Rpb24sIHNpbXBseSByZXR1cm4gd2l0aCBubwogICogcGFnZSBwaW5uZWQKICAqLwogaW50IF9fYXR0cmlidXRlX18oKHdlYWspKSBfX2dldF91c2VyX3BhZ2VzX2Zhc3QodW5zaWduZWQgbG9uZyBzdGFydCwKZGlmZiAtLWdpdCBhL21tL3Ztc2Nhbi5jIGIvbW0vdm1zY2FuLmMKaW5kZXggZjczYjg2NS4uYzdmNWE2ZCAxMDA2NDQKLS0tIGEvbW0vdm1zY2FuLmMKKysrIGIvbW0vdm1zY2FuLmMKQEAgLTEwNjUsNyArMTA2NSw3IEBACiAJCSAqIHN1cnJvdW5kaW5nIHRoZSB0YWcgcGFnZS4gIE9ubHkgdGFrZSB0aG9zZSBwYWdlcyBvZgogCQkgKiB0aGUgc2FtZSBhY3RpdmUgc3RhdGUgYXMgdGhhdCB0YWcgcGFnZS4gIFdlIG1heSBzYWZlbHkKIAkJICogcm91bmQgdGhlIHRhcmdldCBwYWdlIHBmbiBkb3duIHRvIHRoZSByZXF1ZXN0ZWQgb3JkZXIKLQkJICogYXMgdGhlIG1lbV9tYXAgaXMgZ3VhcmVudGVlZCB2YWxpZCBvdXQgdG8gTUFYX09SREVSLAorCQkgKiBhcyB0aGUgbWVtX21hcCBpcyBndWFyYW50ZWVkIHZhbGlkIG91dCB0byBNQVhfT1JERVIsCiAJCSAqIHdoZXJlIHRoYXQgcGFnZSBpcyBpbiBhIGRpZmZlcmVudCB6b25lIHdlIHdpbGwgZGV0ZWN0CiAJCSAqIGl0IGZyb20gaXRzIHpvbmUgaWQgYW5kIGFib3J0IHRoaXMgYmxvY2sgc2Nhbi4KIAkJICovCkBAIC0yMjI0LDcgKzIyMjQsNyBAQAogICogICBvIGEgMTZNIERNQSB6b25lIHRoYXQgaXMgYmFsYW5jZWQgd2lsbCBub3QgYmFsYW5jZSBhIHpvbmUgb24gYW55CiAgKiAgICAgcmVhc29uYWJsZSBzaXplZCBtYWNoaW5lCiAgKiAgIG8gT24gYWxsIG90aGVyIG1hY2hpbmVzLCB0aGUgdG9wIHpvbmUgbXVzdCBiZSBhdCBsZWFzdCBhIHJlYXNvbmFibGUKLSAqICAgICBwcmVjZW50YWdlIG9mIHRoZSBtaWRkbGUgem9uZXMuIEZvciBleGFtcGxlLCBvbiAzMi1iaXQgeDg2LCBoaWdobWVtCisgKiAgICAgcGVyY2VudGFnZSBvZiB0aGUgbWlkZGxlIHpvbmVzLiBGb3IgZXhhbXBsZSwgb24gMzItYml0IHg4NiwgaGlnaG1lbQogICogICAgIHdvdWxkIG5lZWQgdG8gYmUgYXQgbGVhc3QgMjU2TSBmb3IgaXQgdG8gYmUgYmFsYW5jZSBhIHdob2xlIG5vZGUuCiAgKiAgICAgU2ltaWxhcmx5LCBvbiB4ODYtNjQgdGhlIE5vcm1hbCB6b25lIHdvdWxkIG5lZWQgdG8gYmUgYXQgbGVhc3QgMUcKICAqICAgICB0byBiYWxhbmNlIGEgbm9kZSBvbiBpdHMgb3duLiBUaGVzZSBzZWVtZWQgbGlrZSByZWFzb25hYmxlIHJhdGlvcy4KZGlmZiAtLWdpdCBhL25ldC84MDIxcS92bGFucHJvYy5jIGIvbmV0LzgwMjFxL3ZsYW5wcm9jLmMKaW5kZXggZDEzMTRjZi4uZDk0MGM0OSAxMDA2NDQKLS0tIGEvbmV0LzgwMjFxL3ZsYW5wcm9jLmMKKysrIGIvbmV0LzgwMjFxL3ZsYW5wcm9jLmMKQEAgLTU0LDcgKzU0LDcgQEAKIAogLyoKICAqCVN0cnVjdHVyZXMgZm9yIGludGVyZmFjaW5nIHdpdGggdGhlIC9wcm9jIGZpbGVzeXN0ZW0uCi0gKglWTEFOIGNyZWF0ZXMgaXRzIG93biBkaXJlY3RvcnkgL3Byb2MvbmV0L3ZsYW4gd2l0aCB0aGUgZm9sb3dpbmcKKyAqCVZMQU4gY3JlYXRlcyBpdHMgb3duIGRpcmVjdG9yeSAvcHJvYy9uZXQvdmxhbiB3aXRoIHRoZSBmb2xsb3dpbmcKICAqCWVudHJpZXM6CiAgKgljb25maWcJCWRldmljZSBzdGF0dXMvY29uZmlndXJhdGlvbgogICoJPGRldmljZT4JZW50cnkgZm9yIGVhY2ggIGRldmljZQpkaWZmIC0tZ2l0IGEvbmV0LzlwL2NsaWVudC5jIGIvbmV0LzlwL2NsaWVudC5jCmluZGV4IDJjY2JmMDQuLjQ4YjhlMDggMTAwNjQ0Ci0tLSBhL25ldC85cC9jbGllbnQuYworKysgYi9uZXQvOXAvY2xpZW50LmMKQEAgLTE3OCw3ICsxNzgsNyBAQAogICogQHRhZzogbnVtZXJpYyBpZCBmb3IgdHJhbnNhY3Rpb24KICAqCiAgKiB0aGlzIGlzIGEgc2ltcGxlIGFycmF5IGxvb2t1cCwgYnV0IHdpbGwgZ3JvdyB0aGUKLSAqIHJlcXVlc3Rfc2xvdHMgYXMgbmVjZXNzYXJ5IHRvIGFjY29tb2RhdGUgdHJhbnNhY3Rpb24KKyAqIHJlcXVlc3Rfc2xvdHMgYXMgbmVjZXNzYXJ5IHRvIGFjY29tbW9kYXRlIHRyYW5zYWN0aW9uCiAgKiBpZHMgd2hpY2ggZGlkIG5vdCBwcmV2aW91c2x5IGhhdmUgYSBzbG90LgogICoKICAqIHRoaXMgY29kZSByZWxpZXMgb24gdGhlIGNsaWVudCBzcGlubG9jayB0byBtYW5hZ2UgbG9ja3MsIGl0cwpkaWZmIC0tZ2l0IGEvbmV0LzlwL3RyYW5zX2NvbW1vbi5jIGIvbmV0LzlwL3RyYW5zX2NvbW1vbi5jCmluZGV4IDkxNzJhYjcuLmQ0Nzg4MGUgMTAwNjQ0Ci0tLSBhL25ldC85cC90cmFuc19jb21tb24uYworKysgYi9uZXQvOXAvdHJhbnNfY29tbW9uLmMKQEAgLTM2LDcgKzM2LDcgQEAKIEVYUE9SVF9TWU1CT0wocDlfcmVsZWFzZV9yZXFfcGFnZXMpOwogCiAvKioKLSAqIHA5X25yX3BhZ2VzIC0gUmV0dXJuIG51bWJlciBvZiBwYWdlcyBuZWVkZWQgdG8gYWNjb21vZGF0ZSB0aGUgcGF5bG9hZC4KKyAqIHA5X25yX3BhZ2VzIC0gUmV0dXJuIG51bWJlciBvZiBwYWdlcyBuZWVkZWQgdG8gYWNjb21tb2RhdGUgdGhlIHBheWxvYWQuCiAgKi8KIGludAogcDlfbnJfcGFnZXMoc3RydWN0IHA5X3JlcV90ICpyZXEpCkBAIC01NSw3ICs1NSw3IEBACiAgKiBAcmVxOiBSZXF1ZXN0IHRvIGJlIHNlbnQgdG8gc2VydmVyLgogICogQHBkYXRhX29mZjogZGF0YSBvZmZzZXQgaW50byB0aGUgZmlyc3QgcGFnZSBhZnRlciB0cmFuc2xhdGlvbiAoZ3VwKS4KICAqIEBwZGF0YV9sZW46IFRvdGFsIGxlbmd0aCBvZiB0aGUgSU8uIGd1cCBtYXkgbm90IHJldHVybiByZXF1ZXN0ZWQgIyBvZiBwYWdlcy4KLSAqIEBucl9wYWdlczogbnVtYmVyIG9mIHBhZ2VzIHRvIGFjY29tb2RhdGUgdGhlIHBheWxvYWQKKyAqIEBucl9wYWdlczogbnVtYmVyIG9mIHBhZ2VzIHRvIGFjY29tbW9kYXRlIHRoZSBwYXlsb2FkCiAgKiBAcnc6IEluZGljYXRlcyBpZiB0aGUgcGFnZXMgYXJlIGZvciByZWFkIG9yIHdyaXRlLgogICovCiBpbnQKZGlmZiAtLWdpdCBhL25ldC85cC91dGlsLmMgYi9uZXQvOXAvdXRpbC5jCmluZGV4IGI4NDYxOWIuLmRhNmFmODEgMTAwNjQ0Ci0tLSBhL25ldC85cC91dGlsLmMKKysrIGIvbmV0LzlwL3V0aWwuYwpAQCAtNjcsNyArNjcsNyBAQAogCiAvKioKICAqIHA5X2lkcG9vbF9kZXN0cm95IC0gY3JlYXRlIGEgbmV3IHBlci1jb25uZWN0aW9uIGlkIHBvb2wKLSAqIEBwOiBpZHBvb2wgdG8gZGVzdG9yeQorICogQHA6IGlkcG9vbCB0byBkZXN0cm95CiAgKi8KIAogdm9pZCBwOV9pZHBvb2xfZGVzdHJveShzdHJ1Y3QgcDlfaWRwb29sICpwKQpkaWZmIC0tZ2l0IGEvbmV0L2F0bS9icjI2ODQuYyBiL25ldC9hdG0vYnIyNjg0LmMKaW5kZXggZmNlMmVhZS4uMjI1MmMyMCAxMDA2NDQKLS0tIGEvbmV0L2F0bS9icjI2ODQuYworKysgYi9uZXQvYXRtL2JyMjY4NC5jCkBAIC01MDksNyArNTA5LDcgQEAKIAl3cml0ZV9sb2NrX2lycSgmZGV2c19sb2NrKTsKIAluZXRfZGV2ID0gYnIyNjg0X2ZpbmRfZGV2KCZiZS5pZnNwZWMpOwogCWlmIChuZXRfZGV2ID09IE5VTEwpIHsKLQkJcHJfZXJyKCJ0cmllZCB0byBhdHRhY2ggdG8gbm9uLWV4aXN0YW50IGRldmljZVxuIik7CisJCXByX2VycigidHJpZWQgdG8gYXR0YWNoIHRvIG5vbi1leGlzdGVudCBkZXZpY2VcbiIpOwogCQllcnIgPSAtRU5YSU87CiAJCWdvdG8gZXJyb3I7CiAJfQpkaWZmIC0tZ2l0IGEvbmV0L2F0bS9sZWMuaCBiL25ldC9hdG0vbGVjLmgKaW5kZXggOWQxNGQxOS4uZGZjMDcxOSAxMDA2NDQKLS0tIGEvbmV0L2F0bS9sZWMuaAorKysgYi9uZXQvYXRtL2xlYy5oCkBAIC0zNSw3ICszNSw3IEBACiAgKiBPcGVyYXRpb25zIHRoYXQgTEFORTIgY2FwYWJsZSBkZXZpY2UgY2FuIGRvLiBUd28gZmlyc3QgZnVuY3Rpb25zCiAgKiBhcmUgdXNlZCB0byBtYWtlIHRoZSBkZXZpY2UgZG8gdGhpbmdzLiBTZWUgc3BlYyAzLjEuMyBhbmQgMy4xLjQuCiAgKgotICogVGhlIHRoaXJkIGZ1bmN0aW9uIGlzIGludGVudGVkIGZvciB0aGUgTVBPQSBjb21wb25lbnQgc2l0dGluZyBvbgorICogVGhlIHRoaXJkIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciB0aGUgTVBPQSBjb21wb25lbnQgc2l0dGluZyBvbgogICogdG9wIG9mIHRoZSBMQU5FIGRldmljZS4gVGhlIE1QT0EgY29tcG9uZW50IGFzc2lnbnMgaXQncyBvd24gZnVuY3Rpb24KICAqIHRvICgqYXNzb2NpYXRlX2luZGljYXRvcikoKSBhbmQgdGhlIExBTkUgZGV2aWNlIHdpbGwgdXNlIHRoYXQKICAqIGZ1bmN0aW9uIHRvIHRlbGwgYWJvdXQgVExWcyBpdCBzZWVzIGZsb2F0aW5nIHRocm91Z2guCmRpZmYgLS1naXQgYS9uZXQvYmF0bWFuLWFkdi9zb2Z0LWludGVyZmFjZS5jIGIvbmV0L2JhdG1hbi1hZHYvc29mdC1pbnRlcmZhY2UuYwppbmRleCA5ZWQyNjE0Li44MjRlMWY2IDEwMDY0NAotLS0gYS9uZXQvYmF0bWFuLWFkdi9zb2Z0LWludGVyZmFjZS5jCisrKyBiL25ldC9iYXRtYW4tYWR2L3NvZnQtaW50ZXJmYWNlLmMKQEAgLTQ3NCw3ICs0NzQsNyBAQAogCQlnb3RvIGRyb3BwZWQ7CiAJc2tiLT5wcm90b2NvbCA9IGV0aF90eXBlX3RyYW5zKHNrYiwgc29mdF9pZmFjZSk7CiAKLQkvKiBzaG91bGQgbm90IGJlIG5lY2Nlc2FyeSBhbnltb3JlIGFzIHdlIHVzZSBza2JfcHVsbF9yY3N1bSgpCisJLyogc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkgYW55bW9yZSBhcyB3ZSB1c2Ugc2tiX3B1bGxfcmNzdW0oKQogCSAqIFRPRE86IHBsZWFzZSB2ZXJpZnkgdGhpcyBhbmQgcmVtb3ZlIHRoaXMgVE9ETwogCSAqIC0tIERlYyAyMXN0IDIwMDksIFNpbW9uIFd1bmRlcmxpY2ggKi8KIApkaWZmIC0tZ2l0IGEvbmV0L2JsdWV0b290aC9oY2lfY29yZS5jIGIvbmV0L2JsdWV0b290aC9oY2lfY29yZS5jCmluZGV4IDIyMTY2MjAuLmM4M2Y2MTggMTAwNjQ0Ci0tLSBhL25ldC9ibHVldG9vdGgvaGNpX2NvcmUuYworKysgYi9uZXQvYmx1ZXRvb3RoL2hjaV9jb3JlLmMKQEAgLTE4ODMsNyArMTg4Myw3IEBACiAJcmVhZF91bmxvY2soJmhjaV90YXNrX2xvY2spOwogfQogCi0vKiAtLS0tLSBIQ0kgUlggdGFzayAoaW5jb21pbmcgZGF0YSBwcm9jY2Vzc2luZykgLS0tLS0gKi8KKy8qIC0tLS0tIEhDSSBSWCB0YXNrIChpbmNvbWluZyBkYXRhIHByb2Nlc3NpbmcpIC0tLS0tICovCiAKIC8qIEFDTCBkYXRhIHBhY2tldCAqLwogc3RhdGljIGlubGluZSB2b2lkIGhjaV9hY2xkYXRhX3BhY2tldChzdHJ1Y3QgaGNpX2RldiAqaGRldiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvbDJjYXBfc29jay5jIGIvbmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMKaW5kZXggZjc3MzA4ZS4uMjk5ZmU1NiAxMDA2NDQKLS0tIGEvbmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMKKysrIGIvbmV0L2JsdWV0b290aC9sMmNhcF9zb2NrLmMKQEAgLTY3OSw3ICs2NzksNyBAQAogCiAJCWlmIChvcHQgPT0gQlRfRkxVU0hBQkxFX09GRikgewogCQkJc3RydWN0IGwyY2FwX2Nvbm4gKmNvbm4gPSBsMmNhcF9waShzayktPmNvbm47Ci0JCQkvKiBwcm9jZWVkIGZ1dGhlciBvbmx5IHdoZW4gd2UgaGF2ZSBsMmNhcF9jb25uIGFuZAorCQkJLyogcHJvY2VlZCBmdXJ0aGVyIG9ubHkgd2hlbiB3ZSBoYXZlIGwyY2FwX2Nvbm4gYW5kCiAJCQkgICBObyBGbHVzaCBzdXBwb3J0IGluIHRoZSBMTSAqLwogCQkJaWYgKCFjb25uIHx8ICFsbXBfbm9fZmx1c2hfY2FwYWJsZShjb25uLT5oY29uLT5oZGV2KSkgewogCQkJCWVyciA9IC1FSU5WQUw7CmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX2ZkYi5jIGIvbmV0L2JyaWRnZS9icl9mZGIuYwppbmRleCA4ODQ4NWNjLi5jYzRkM2M1IDEwMDY0NAotLS0gYS9uZXQvYnJpZGdlL2JyX2ZkYi5jCisrKyBiL25ldC9icmlkZ2UvYnJfZmRiLmMKQEAgLTE2OSw3ICsxNjksNyBAQAogCXNwaW5fdW5sb2NrX2JoKCZici0+aGFzaF9sb2NrKTsKIH0KIAotLyogRmx1c2ggYWxsIGVudHJpZXMgcmVmZXJpbmcgdG8gYSBzcGVjaWZpYyBwb3J0LgorLyogRmx1c2ggYWxsIGVudHJpZXMgcmVmZXJyaW5nIHRvIGEgc3BlY2lmaWMgcG9ydC4KICAqIGlmIGRvX2FsbCBpcyBzZXQgYWxzbyBmbHVzaCBzdGF0aWMgZW50cmllcwogICovCiB2b2lkIGJyX2ZkYl9kZWxldGVfYnlfcG9ydChzdHJ1Y3QgbmV0X2JyaWRnZSAqYnIsCmRpZmYgLS1naXQgYS9uZXQvYnJpZGdlL2JyX2lvY3RsLmMgYi9uZXQvYnJpZGdlL2JyX2lvY3RsLmMKaW5kZXggY2I0MzMxMi4uM2Q5ZmNhMCAxMDA2NDQKLS0tIGEvbmV0L2JyaWRnZS9icl9pb2N0bC5jCisrKyBiL25ldC9icmlkZ2UvYnJfaW9jdGwuYwpAQCAtMTA2LDcgKzEwNiw3IEBACiAvKgogICogTGVnYWN5IGlvY3RsJ3MgdGhyb3VnaCBTSU9DREVWUFJJVkFURQogICogVGhpcyBpbnRlcmZhY2UgaXMgZGVwcmVjYXRlZCBiZWNhdXNlIGl0IHdhcyB0b28gZGlmZmljdWx0IHRvCi0gKiB0byBkbyB0aGUgdHJhbnNsYXRpb24gZm9yIDMyLzY0Yml0IGlvY3RsIGNvbXBhdGFiaWxpdHkuCisgKiB0byBkbyB0aGUgdHJhbnNsYXRpb24gZm9yIDMyLzY0Yml0IGlvY3RsIGNvbXBhdGliaWxpdHkuCiAgKi8KIHN0YXRpYyBpbnQgb2xkX2Rldl9pb2N0bChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgaWZyZXEgKnJxLCBpbnQgY21kKQogewpkaWZmIC0tZ2l0IGEvbmV0L2NhaWYvY2FpZl9zb2NrZXQuYyBiL25ldC9jYWlmL2NhaWZfc29ja2V0LmMKaW5kZXggODE4NGMwMy4uMzdhNDAzNCAxMDA2NDQKLS0tIGEvbmV0L2NhaWYvY2FpZl9zb2NrZXQuYworKysgYi9uZXQvY2FpZi9jYWlmX3NvY2tldC5jCkBAIC04NTIsNyArODUyLDcgQEAKIAlzb2NrLT5zdGF0ZSA9IFNTX0NPTk5FQ1RJTkc7CiAJc2stPnNrX3N0YXRlID0gQ0FJRl9DT05ORUNUSU5HOwogCi0JLyogQ2hlY2sgcHJpb3JpdHkgdmFsdWUgY29tbWluZyBmcm9tIHNvY2tldCAqLworCS8qIENoZWNrIHByaW9yaXR5IHZhbHVlIGNvbWluZyBmcm9tIHNvY2tldCAqLwogCS8qIGlmIHByaW9yaXR5IHZhbHVlIGlzIG91dCBvZiByYW5nZSBpdCB3aWxsIGJlIGFqdXN0ZWQgKi8KIAlpZiAoY2Zfc2stPnNrLnNrX3ByaW9yaXR5ID4gQ0FJRl9QUklPX01BWCkKIAkJY2Zfc2stPmNvbm5fcmVxLnByaW9yaXR5ID0gQ0FJRl9QUklPX01BWDsKZGlmZiAtLWdpdCBhL25ldC9jYW4vYmNtLmMgYi9uZXQvY2FuL2JjbS5jCmluZGV4IDg3MWEwYWQuLjU3YjFhZWQgMTAwNjQ0Ci0tLSBhL25ldC9jYW4vYmNtLmMKKysrIGIvbmV0L2Nhbi9iY20uYwpAQCAtMzg3LDcgKzM4Nyw3IEBACiB9CiAKIC8qCi0gKiBiY21fdHhfdGltZW91dF9oYW5kbGVyIC0gcGVyZm9ybWVzIGN5Y2xpYyBDQU4gZnJhbWUgdHJhbnNtaXNzaW9ucworICogYmNtX3R4X3RpbWVvdXRfaGFuZGxlciAtIHBlcmZvcm1zIGN5Y2xpYyBDQU4gZnJhbWUgdHJhbnNtaXNzaW9ucwogICovCiBzdGF0aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgYmNtX3R4X3RpbWVvdXRfaGFuZGxlcihzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcikKIHsKZGlmZiAtLWdpdCBhL25ldC9jZXBoL29zZF9jbGllbnQuYyBiL25ldC9jZXBoL29zZF9jbGllbnQuYwppbmRleCAzYjkxZDY1Li41MGFmMDI3IDEwMDY0NAotLS0gYS9uZXQvY2VwaC9vc2RfY2xpZW50LmMKKysrIGIvbmV0L2NlcGgvb3NkX2NsaWVudC5jCkBAIC05MTcsNyArOTE3LDcgQEAKIC8qCiAgKiBQaWNrIGFuIG9zZCAodGhlIGZpcnN0ICd1cCcgb3NkIGluIHRoZSBwZyksIGFsbG9jYXRlIHRoZSBvc2Qgc3RydWN0CiAgKiAoYXMgbmVlZGVkKSwgYW5kIHNldCB0aGUgcmVxdWVzdCByX29zZCBhcHByb3ByaWF0ZWx5LiAgSWYgdGhlcmUgaXMKLSAqIG5vIHVwIG9zZCwgc2V0IHJfb3NkIHRvIE5VTEwuICBNb3ZlIHRoZSByZXF1ZXN0IHRvIHRoZSBhcHByb3BpYXRlIGxpc3QKKyAqIG5vIHVwIG9zZCwgc2V0IHJfb3NkIHRvIE5VTEwuICBNb3ZlIHRoZSByZXF1ZXN0IHRvIHRoZSBhcHByb3ByaWF0ZSBsaXN0CiAgKiAodW5zZW50LCBob21lbGVzcykgb3IgbGVhdmUgb24gaW4tZmxpZ2h0IGxydS4KICAqCiAgKiBSZXR1cm4gMCBpZiB1bmNoYW5nZWQsIDEgaWYgY2hhbmdlZCwgb3IgbmVnYXRpdmUgb24gZXJyb3IuCmRpZmYgLS1naXQgYS9uZXQvY29yZS9kZXYuYyBiL25ldC9jb3JlL2Rldi5jCmluZGV4IDNkYTlmYjAuLjk1NmQzYjAgMTAwNjQ0Ci0tLSBhL25ldC9jb3JlL2Rldi5jCisrKyBiL25ldC9jb3JlL2Rldi5jCkBAIC0yMDkxLDcgKzIwOTEsNyBAQAogCQl1MzIgZmVhdHVyZXM7CiAKIAkJLyoKLQkJICogSWYgZGV2aWNlIGRvZXNudCBuZWVkIHNrYi0+ZHN0LCByZWxlYXNlIGl0IHJpZ2h0IG5vdyB3aGlsZQorCQkgKiBJZiBkZXZpY2UgZG9lc24ndCBuZWVkIHNrYi0+ZHN0LCByZWxlYXNlIGl0IHJpZ2h0IG5vdyB3aGlsZQogCQkgKiBpdHMgaG90IGluIHRoaXMgY3B1IGNhY2hlCiAJCSAqLwogCQlpZiAoZGV2LT5wcml2X2ZsYWdzICYgSUZGX1hNSVRfRFNUX1JFTEVBU0UpCkBAIC0yMTUxLDcgKzIxNTEsNyBAQAogCQluc2tiLT5uZXh0ID0gTlVMTDsKIAogCQkvKgotCQkgKiBJZiBkZXZpY2UgZG9lc250IG5lZWQgbnNrYi0+ZHN0LCByZWxlYXNlIGl0IHJpZ2h0IG5vdyB3aGlsZQorCQkgKiBJZiBkZXZpY2UgZG9lc24ndCBuZWVkIG5za2ItPmRzdCwgcmVsZWFzZSBpdCByaWdodCBub3cgd2hpbGUKIAkJICogaXRzIGhvdCBpbiB0aGlzIGNwdSBjYWNoZQogCQkgKi8KIAkJaWYgKGRldi0+cHJpdl9mbGFncyAmIElGRl9YTUlUX0RTVF9SRUxFQVNFKQpAQCAtMjk3MCw4ICsyOTcwLDggQEAKICAqIHdoZW4gQ09ORklHX05FVF9DTFNfQUNUIGlzPyBvdGhlcndpc2Ugc29tZSB1c2VsZXNzIGluc3RydWN0aW9ucwogICogYSBjb21wYXJlIGFuZCAyIHN0b3JlcyBleHRyYSByaWdodCBub3cgaWYgd2UgZG9udCBoYXZlIGl0IG9uCiAgKiBidXQgaGF2ZSBDT05GSUdfTkVUX0NMU19BQ1QKLSAqIE5PVEU6IFRoaXMgZG9lc250IHN0b3AgYW55IGZ1bmN0aW9uYWxpdHk7IGlmIHlvdSBkb250IGhhdmUKLSAqIHRoZSBpbmdyZXNzIHNjaGVkdWxlciwgeW91IGp1c3QgY2FudCBhZGQgcG9saWNpZXMgb24gaW5ncmVzcy4KKyAqIE5PVEU6IFRoaXMgZG9lc24ndCBzdG9wIGFueSBmdW5jdGlvbmFsaXR5OyBpZiB5b3UgZG9udCBoYXZlCisgKiB0aGUgaW5ncmVzcyBzY2hlZHVsZXIsIHlvdSBqdXN0IGNhbid0IGFkZCBwb2xpY2llcyBvbiBpbmdyZXNzLgogICoKICAqLwogc3RhdGljIGludCBpbmdfZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRkZXZfcXVldWUgKnJ4cSkKQEAgLTM4MDAsNyArMzgwMCw3IEBACiAJCSAqIHdpdGggbmV0cG9sbCdzIHBvbGxfbmFwaSgpLiAgT25seSB0aGUgZW50aXR5IHdoaWNoCiAJCSAqIG9idGFpbnMgdGhlIGxvY2sgYW5kIHNlZXMgTkFQSV9TVEFURV9TQ0hFRCBzZXQgd2lsbAogCQkgKiBhY3R1YWxseSBtYWtlIHRoZSAtPnBvbGwoKSBjYWxsLiAgVGhlcmVmb3JlIHdlIGF2b2lkCi0JCSAqIGFjY2lkZW50bHkgY2FsbGluZyAtPnBvbGwoKSB3aGVuIE5BUEkgaXMgbm90IHNjaGVkdWxlZC4KKwkJICogYWNjaWRlbnRhbGx5IGNhbGxpbmcgLT5wb2xsKCkgd2hlbiBOQVBJIGlzIG5vdCBzY2hlZHVsZWQuCiAJCSAqLwogCQl3b3JrID0gMDsKIAkJaWYgKHRlc3RfYml0KE5BUElfU1RBVEVfU0NIRUQsICZuLT5zdGF0ZSkpIHsKQEAgLTYzMzYsNyArNjMzNiw3IEBACiAJCWlmIChkZXYtPnJ0bmxfbGlua19vcHMpCiAJCQljb250aW51ZTsKIAotCQkvKiBQdXNoIHJlbWFpbmcgbmV0d29yayBkZXZpY2VzIHRvIGluaXRfbmV0ICovCisJCS8qIFB1c2ggcmVtYWluaW5nIG5ldHdvcmsgZGV2aWNlcyB0byBpbml0X25ldCAqLwogCQlzbnByaW50ZihmYl9uYW1lLCBJRk5BTVNJWiwgImRldiVkIiwgZGV2LT5pZmluZGV4KTsKIAkJZXJyID0gZGV2X2NoYW5nZV9uZXRfbmFtZXNwYWNlKGRldiwgJmluaXRfbmV0LCBmYl9uYW1lKTsKIAkJaWYgKGVycikgewpkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvZmlsdGVyLmMgYi9uZXQvY29yZS9maWx0ZXIuYwppbmRleCAyMzJiMTg3Li5hZmI4YWZiIDEwMDY0NAotLS0gYS9uZXQvY29yZS9maWx0ZXIuYworKysgYi9uZXQvY29yZS9maWx0ZXIuYwpAQCAtNDI1LDcgKzQyNSw3IEBACiAgKiBBcyB3ZSBkb250IHdhbnQgdG8gY2xlYXIgbWVtW10gYXJyYXkgZm9yIGVhY2ggcGFja2V0IGdvaW5nIHRocm91Z2gKICAqIHNrX3J1bl9maWx0ZXIoKSwgd2UgY2hlY2sgdGhhdCBmaWx0ZXIgbG9hZGVkIGJ5IHVzZXIgbmV2ZXIgdHJ5IHRvIHJlYWQKICAqIGEgY2VsbCBpZiBub3QgcHJldmlvdXNseSB3cml0dGVuLCBhbmQgd2UgY2hlY2sgYWxsIGJyYW5jaGVzIHRvIGJlIHN1cmUKLSAqIGEgbWFsaWNpb3VzIHVzZXIgZG9lc250IHRyeSB0byBhYnVzZSB1cy4KKyAqIGEgbWFsaWNpb3VzIHVzZXIgZG9lc24ndCB0cnkgdG8gYWJ1c2UgdXMuCiAgKi8KIHN0YXRpYyBpbnQgY2hlY2tfbG9hZF9hbmRfc3RvcmVzKHN0cnVjdCBzb2NrX2ZpbHRlciAqZmlsdGVyLCBpbnQgZmxlbikKIHsKZGlmZiAtLWdpdCBhL25ldC9jb3JlL2xpbmtfd2F0Y2guYyBiL25ldC9jb3JlL2xpbmtfd2F0Y2guYwppbmRleCAwMWExMTAxLi5hN2IzNDIxIDEwMDY0NAotLS0gYS9uZXQvY29yZS9saW5rX3dhdGNoLmMKKysrIGIvbmV0L2NvcmUvbGlua193YXRjaC5jCkBAIC0xMjksNyArMTI5LDcgQEAKIAlpZiAoIWNhbmNlbF9kZWxheWVkX3dvcmsoJmxpbmt3YXRjaF93b3JrKSkKIAkJcmV0dXJuOwogCi0JLyogT3RoZXJ3aXNlIHdlIHJlc2NoZWR1bGUgaXQgYWdhaW4gZm9yIGltbWVkaWF0ZSBleGVjdGlvbi4gKi8KKwkvKiBPdGhlcndpc2Ugd2UgcmVzY2hlZHVsZSBpdCBhZ2FpbiBmb3IgaW1tZWRpYXRlIGV4ZWN1dGlvbi4gKi8KIAlzY2hlZHVsZV9kZWxheWVkX3dvcmsoJmxpbmt3YXRjaF93b3JrLCAwKTsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvcnRuZXRsaW5rLmMgYi9uZXQvY29yZS9ydG5ldGxpbmsuYwppbmRleCA0OWY3ZWE1Li5kN2M0YmI0IDEwMDY0NAotLS0gYS9uZXQvY29yZS9ydG5ldGxpbmsuYworKysgYi9uZXQvY29yZS9ydG5ldGxpbmsuYwpAQCAtMTk2LDcgKzE5Niw3IEBACiAgKiBhcyBmYWlsdXJlIG9mIHRoaXMgZnVuY3Rpb24gaXMgdmVyeSB1bmxpa2VseSwgaXQgY2FuIG9ubHkgaGFwcGVuIGR1ZQogICogdG8gbGFjayBvZiBtZW1vcnkgd2hlbiBhbGxvY2F0aW5nIHRoZSBjaGFpbiB0byBzdG9yZSBhbGwgbWVzc2FnZQogICogaGFuZGxlcnMgZm9yIGEgcHJvdG9jb2wuIE1lYW50IGZvciB1c2UgaW4gaW5pdCBmdW5jdGlvbnMgd2hlcmUgbGFjawotICogb2YgbWVtb3J5IGltcGxpZXMgbm8gc2Vuc2UgaW4gY29udGludWVpbmcuCisgKiBvZiBtZW1vcnkgaW1wbGllcyBubyBzZW5zZSBpbiBjb250aW51aW5nLgogICovCiB2b2lkIHJ0bmxfcmVnaXN0ZXIoaW50IHByb3RvY29sLCBpbnQgbXNndHlwZSwKIAkJICAgcnRubF9kb2l0X2Z1bmMgZG9pdCwgcnRubF9kdW1waXRfZnVuYyBkdW1waXQpCkBAIC0xNDQwLDcgKzE0NDAsNyBAQAogZXJyb3V0OgogCWlmIChlcnIgPCAwICYmIG1vZGlmaWVkICYmIG5ldF9yYXRlbGltaXQoKSkKIAkJcHJpbnRrKEtFUk5fV0FSTklORyAiQSBsaW5rIGNoYW5nZSByZXF1ZXN0IGZhaWxlZCB3aXRoICIKLQkJICAgICAgICJzb21lIGNoYW5nZXMgY29taXR0ZWQgYWxyZWFkeS4gSW50ZXJmYWNlICVzIG1heSAiCisJCSAgICAgICAic29tZSBjaGFuZ2VzIGNvbW1pdHRlZCBhbHJlYWR5LiBJbnRlcmZhY2UgJXMgbWF5ICIKIAkJICAgICAgICJoYXZlIGJlZW4gbGVmdCB3aXRoIGFuIGluY29uc2lzdGVudCBjb25maWd1cmF0aW9uLCAiCiAJCSAgICAgICAicGxlYXNlIGNoZWNrLlxuIiwgZGV2LT5uYW1lKTsKIApkaWZmIC0tZ2l0IGEvbmV0L2NvcmUvc2tidWZmLmMgYi9uZXQvY29yZS9za2J1ZmYuYwppbmRleCA4MDFkZDA4Li43ZWJlZWQwIDEwMDY0NAotLS0gYS9uZXQvY29yZS9za2J1ZmYuYworKysgYi9uZXQvY29yZS9za2J1ZmYuYwpAQCAtMjI2Nyw3ICsyMjY3LDcgQEAKICAqIG9mIGJ5dGVzIGFscmVhZHkgY29uc3VtZWQgYW5kIHRoZSBuZXh0IGNhbGwgdG8KICAqIHNrYl9zZXFfcmVhZCgpIHdpbGwgcmV0dXJuIHRoZSByZW1haW5pbmcgcGFydCBvZiB0aGUgYmxvY2suCiAgKgotICogTm90ZSAxOiBUaGUgc2l6ZSBvZiBlYWNoIGJsb2NrIG9mIGRhdGEgcmV0dXJuZWQgY2FuIGJlIGFyYml0YXJ5LAorICogTm90ZSAxOiBUaGUgc2l6ZSBvZiBlYWNoIGJsb2NrIG9mIGRhdGEgcmV0dXJuZWQgY2FuIGJlIGFyYml0cmFyeSwKICAqICAgICAgIHRoaXMgbGltaXRhdGlvbiBpcyB0aGUgY29zdCBmb3IgemVyb2NvcHkgc2VxZXVlbnRhbAogICogICAgICAgcmVhZHMgb2YgcG90ZW50aWFsbHkgbm9uIGxpbmVhciBkYXRhLgogICoKZGlmZiAtLWdpdCBhL25ldC9jb3JlL3NvY2suYyBiL25ldC9jb3JlL3NvY2suYwppbmRleCA3ZGZlZDc5Li42ZTgxOTc4IDEwMDY0NAotLS0gYS9uZXQvY29yZS9zb2NrLmMKKysrIGIvbmV0L2NvcmUvc29jay5jCkBAIC0yMTUsNyArMjE1LDcgQEAKIF9fdTMyIHN5c2N0bF93bWVtX2RlZmF1bHQgX19yZWFkX21vc3RseSA9IFNLX1dNRU1fTUFYOwogX191MzIgc3lzY3RsX3JtZW1fZGVmYXVsdCBfX3JlYWRfbW9zdGx5ID0gU0tfUk1FTV9NQVg7CiAKLS8qIE1heGltYWwgc3BhY2UgZWF0ZW4gYnkgaW92ZWMgb3IgYW5jaWxsaWFyeSBkYXRhIHBsdXMgc29tZSBzcGFjZSAqLworLyogTWF4aW1hbCBzcGFjZSBlYXRlbiBieSBpb3ZlYyBvciBhbmNpbGxhcnkgZGF0YSBwbHVzIHNvbWUgc3BhY2UgKi8KIGludCBzeXNjdGxfb3B0bWVtX21heCBfX3JlYWRfbW9zdGx5ID0gc2l6ZW9mKHVuc2lnbmVkIGxvbmcpKigyKlVJT19NQVhJT1YrNTEyKTsKIEVYUE9SVF9TWU1CT0woc3lzY3RsX29wdG1lbV9tYXgpOwogCkBAIC0xMTc1LDcgKzExNzUsNyBAQAogdm9pZCBza19mcmVlKHN0cnVjdCBzb2NrICpzaykKIHsKIAkvKgotCSAqIFdlIHN1YnN0cmFjdCBvbmUgZnJvbSBza193bWVtX2FsbG9jIGFuZCBjYW4ga25vdyBpZgorCSAqIFdlIHN1YnRyYWN0IG9uZSBmcm9tIHNrX3dtZW1fYWxsb2MgYW5kIGNhbiBrbm93IGlmCiAJICogc29tZSBwYWNrZXRzIGFyZSBzdGlsbCBpbiBzb21lIHR4IHF1ZXVlLgogCSAqIElmIG5vdCBudWxsLCBzb2NrX3dmcmVlKCkgd2lsbCBjYWxsIF9fc2tfZnJlZShzaykgbGF0ZXIKIAkgKi8KQEAgLTExODUsMTAgKzExODUsMTAgQEAKIEVYUE9SVF9TWU1CT0woc2tfZnJlZSk7CiAKIC8qCi0gKiBMYXN0IHNvY2tfcHV0IHNob3VsZCBkcm9wIHJlZmVycmVuY2UgdG8gc2stPnNrX25ldC4gSXQgaGFzIGFscmVhZHkKLSAqIGJlZW4gZHJvcHBlZCBpbiBza19jaGFuZ2VfbmV0LiBUYWtpbmcgcmVmZXJyZW5jZSB0byBzdG9wcGluZyBuYW1lc3BhY2UKKyAqIExhc3Qgc29ja19wdXQgc2hvdWxkIGRyb3AgcmVmZXJlbmNlIHRvIHNrLT5za19uZXQuIEl0IGhhcyBhbHJlYWR5CisgKiBiZWVuIGRyb3BwZWQgaW4gc2tfY2hhbmdlX25ldC4gVGFraW5nIHJlZmVyZW5jZSB0byBzdG9wcGluZyBuYW1lc3BhY2UKICAqIGlzIG5vdCBhbiBvcHRpb24uCi0gKiBUYWtlIHJlZmVycmVuY2UgdG8gYSBzb2NrZXQgdG8gcmVtb3ZlIGl0IGZyb20gaGFzaCBfYWxpdmVfIGFuZCBhZnRlciB0aGF0CisgKiBUYWtlIHJlZmVyZW5jZSB0byBhIHNvY2tldCB0byByZW1vdmUgaXQgZnJvbSBoYXNoIF9hbGl2ZV8gYW5kIGFmdGVyIHRoYXQKICAqIGRlc3Ryb3kgaXQgaW4gdGhlIGNvbnRleHQgb2YgaW5pdF9uZXQuCiAgKi8KIHZvaWQgc2tfcmVsZWFzZV9rZXJuZWwoc3RydWN0IHNvY2sgKnNrKQpkaWZmIC0tZ2l0IGEvbmV0L2RjY3Avb3V0cHV0LmMgYi9uZXQvZGNjcC9vdXRwdXQuYwppbmRleCA3ODRkMzAyMS4uMTM2ZDQxYyAxMDA2NDQKLS0tIGEvbmV0L2RjY3Avb3V0cHV0LmMKKysrIGIvbmV0L2RjY3Avb3V0cHV0LmMKQEAgLTE0Myw3ICsxNDMsNyBAQAogfQogCiAvKioKLSAqIGRjY3BfZGV0ZXJtaW5lX2NjbXBzICAtICBGaW5kIG91dCBhYm91dCBDQ0lELXNwZWNmaWMgcGFja2V0LXNpemUgbGltaXRzCisgKiBkY2NwX2RldGVybWluZV9jY21wcyAgLSAgRmluZCBvdXQgYWJvdXQgQ0NJRC1zcGVjaWZpYyBwYWNrZXQtc2l6ZSBsaW1pdHMKICAqIFdlIG9ubHkgY29uc2lkZXIgdGhlIEhDLXNlbmRlciBDQ0lEIGZvciBzZXR0aW5nIHRoZSBDQ01QUyAoUkZDIDQzNDAsIDE0LiksCiAgKiBzaW5jZSB0aGUgUlggQ0NJRCBpcyByZXN0cmljdGVkIHRvIGZlZWRiYWNrIHBhY2tldHMgKEFja3MpLCB3aGljaCBhcmUgc21hbGwKICAqIGluIGNvbXBhcmlzb24gd2l0aCB0aGUgZGF0YSB0cmFmZmljLiBBIHZhbHVlIG9mIDAgbWVhbnMgIm5vIGN1cnJlbnQgQ0NNUFMiLgpkaWZmIC0tZ2l0IGEvbmV0L2RzYS9tdjg4ZTYxMzEuYyBiL25ldC9kc2EvbXY4OGU2MTMxLmMKaW5kZXggYmIyYjQxYi4uZDk1MWY5MyAxMDA2NDQKLS0tIGEvbmV0L2RzYS9tdjg4ZTYxMzEuYworKysgYi9uZXQvZHNhL212ODhlNjEzMS5jCkBAIC0xMjQsNyArMTI0LDcgQEAKIAkgKiBJZ25vcmUgcmVtb3ZlZCB0YWcgZGF0YSBvbiBkb3VibHkgdGFnZ2VkIHBhY2tldHMsIGRpc2FibGUKIAkgKiBmbG93IGNvbnRyb2wgbWVzc2FnZXMsIGZvcmNlIGZsb3cgY29udHJvbCBwcmlvcml0eSB0byB0aGUKIAkgKiBoaWdoZXN0LCBhbmQgc2VuZCBhbGwgc3BlY2lhbCBtdWx0aWNhc3QgZnJhbWVzIHRvIHRoZSBDUFUKLQkgKiBwb3J0IGF0IHRoZSBoaWdlc3QgcHJpb3JpdHkuCisJICogcG9ydCBhdCB0aGUgaGlnaGVzdCBwcmlvcml0eS4KIAkgKi8KIAlSRUdfV1JJVEUoUkVHX0dMT0JBTDIsIDB4MDUsIDB4MDBmZik7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2NpcHNvX2lwdjQuYyBiL25ldC9pcHY0L2NpcHNvX2lwdjQuYwppbmRleCAwOTRlMTUwLi5hMGFmN2VhIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9jaXBzb19pcHY0LmMKKysrIGIvbmV0L2lwdjQvY2lwc29faXB2NC5jCkBAIC0xMTIsNyArMTEyLDcgQEAKIC8qIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjYXRlZ29yeSByYW5nZXMgcGVybWl0dGVkIGluIHRoZSByYW5nZWQgY2F0ZWdvcnkgdGFnCiAgKiAodGFnICM1KS4gIFlvdSBtYXkgbm90ZSB0aGF0IHRoZSBJRVRGIGRyYWZ0IHN0YXRlcyB0aGF0IHRoZSBtYXhpbXVtIG51bWJlcgogICogb2YgY2F0ZWdvcnkgcmFuZ2VzIGlzIDcsIGJ1dCBpZiB0aGUgbG93IGVuZCBvZiB0aGUgbGFzdCBjYXRlZ29yeSByYW5nZSBpcwotICogemVybyB0aGVuIGl0IGlzIHBvc3NpYmlsZSB0byBmaXQgOCBjYXRlZ29yeSByYW5nZXMgYmVjYXVzZSB0aGUgemVybyBzaG91bGQKKyAqIHplcm8gdGhlbiBpdCBpcyBwb3NzaWJsZSB0byBmaXQgOCBjYXRlZ29yeSByYW5nZXMgYmVjYXVzZSB0aGUgemVybyBzaG91bGQKICAqIGJlIG9taXR0ZWQuICovCiAjZGVmaW5lIENJUFNPX1Y0X1RBR19STkdfQ0FUX01BWCAgICAgIDgKIApAQCAtNDM4LDcgKzQzOCw3IEBACiAgKgogICogRGVzY3JpcHRpb246CiAgKiBTZWFyY2ggdGhlIERPSSBkZWZpbml0aW9uIGxpc3QgZm9yIGEgRE9JIGRlZmluaXRpb24gd2l0aCBhIERPSSB2YWx1ZSB0aGF0Ci0gKiBtYXRjaGVzIEBkb2kuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmlsZSBmb3IgY2FsbGluZyByY3VfcmVhZF9bdW5dbG9jaygpLgorICogbWF0Y2hlcyBAZG9pLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgY2FsbGluZyByY3VfcmVhZF9bdW5dbG9jaygpLgogICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIERPSSBkZWZpbml0aW9uIG9uIHN1Y2Nlc3MgYW5kIE5VTEwgb24gZmFpbHVyZS4KICAqLwogc3RhdGljIHN0cnVjdCBjaXBzb192NF9kb2kgKmNpcHNvX3Y0X2RvaV9zZWFyY2godTMyIGRvaSkKQEAgLTEyOTMsNyArMTI5Myw3IEBACiAJCQlyZXR1cm4gcmV0X3ZhbDsKIAogCQkvKiBUaGlzIHdpbGwgc2VuZCBwYWNrZXRzIHVzaW5nIHRoZSAib3B0aW1pemVkIiBmb3JtYXQgd2hlbgotCQkgKiBwb3NzaWJpbGUgYXMgc3BlY2lmaWVkIGluICBzZWN0aW9uIDMuNC4yLjYgb2YgdGhlCisJCSAqIHBvc3NpYmxlIGFzIHNwZWNpZmllZCBpbiAgc2VjdGlvbiAzLjQuMi42IG9mIHRoZQogCQkgKiBDSVBTTyBkcmFmdC4gKi8KIAkJaWYgKGNpcHNvX3Y0X3JibV9vcHRmbXQgJiYgcmV0X3ZhbCA+IDAgJiYgcmV0X3ZhbCA8PSAxMCkKIAkJCXRhZ19sZW4gPSAxNDsKQEAgLTE3NTIsNyArMTc1Miw3IEBACiB9CiAKIC8qKgotICogY2lwc29fdjRfZXJyb3IgLSBTZW5kIHRoZSBjb3JyZWN0IHJlcG9uc2UgZm9yIGEgYmFkIHBhY2tldAorICogY2lwc29fdjRfZXJyb3IgLSBTZW5kIHRoZSBjb3JyZWN0IHJlc3BvbnNlIGZvciBhIGJhZCBwYWNrZXQKICAqIEBza2I6IHRoZSBwYWNrZXQKICAqIEBlcnJvcjogdGhlIGVycm9yIGNvZGUKICAqIEBnYXRld2F5OiBDSVBTTyBnYXRld2F5IGZsYWcKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ZpYl90cmllLmMgYi9uZXQvaXB2NC9maWJfdHJpZS5jCmluZGV4IGI5MmM4NmYuLmU5MDEzZDYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZpYl90cmllLmMKKysrIGIvbmV0L2lwdjQvZmliX3RyaWUuYwpAQCAtMTIsNyArMTIsNyBAQAogICoKICAqICAgSGFucyBMaXNzIDxoYW5zLmxpc3NAaXRzLnV1LnNlPiAgVXBwc2FsYSBVbml2ZXJzaXRldAogICoKLSAqIFRoaXMgd29yayBpcyBiYXNlZCBvbiB0aGUgTFBDLXRyaWUgd2hpY2ggaXMgb3JpZ2luYWxseSBkZXNjaWJlZCBpbjoKKyAqIFRoaXMgd29yayBpcyBiYXNlZCBvbiB0aGUgTFBDLXRyaWUgd2hpY2ggaXMgb3JpZ2luYWxseSBkZXNjcmliZWQgaW46CiAgKgogICogQW4gZXhwZXJpbWVudGFsIHN0dWR5IG9mIGNvbXByZXNzaW9uIG1ldGhvZHMgZm9yIGR5bmFtaWMgdHJpZXMKICAqIFN0ZWZhbiBOaWxzc29uIGFuZCBNYXR0aSBUaWtrYW5lbi4gQWxnb3JpdGhtaWNhLCAzMygxKToxOS0zMywgMjAwMi4KZGlmZiAtLWdpdCBhL25ldC9pcHY0L2ljbXAuYyBiL25ldC9pcHY0L2ljbXAuYwppbmRleCBhOTFkYzE2Li5lNWY4YTcxIDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pY21wLmMKKysrIGIvbmV0L2lwdjQvaWNtcC5jCkBAIC03MDQsNyArNzA0LDcgQEAKIAkgKi8KIAogCS8qCi0JICoJQ2hlY2sgdGhlIG90aGVyIGVuZCBpc250IHZpb2xhdGluZyBSRkMgMTEyMi4gU29tZSByb3V0ZXJzIHNlbmQKKwkgKglDaGVjayB0aGUgb3RoZXIgZW5kIGlzbid0IHZpb2xhdGluZyBSRkMgMTEyMi4gU29tZSByb3V0ZXJzIHNlbmQKIAkgKglib2d1cyByZXNwb25zZXMgdG8gYnJvYWRjYXN0IGZyYW1lcy4gSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UKIAkgKglmaXJzdCBjaGVjayB5b3VyIG5ldG1hc2sgbWF0Y2hlcyBhdCBib3RoIGVuZHMsIGlmIGl0IGRvZXMgdGhlbgogCSAqCWdldCB0aGUgb3RoZXIgdmVuZG9yIHRvIGZpeCB0aGVpciBraXQuCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9vdXRwdXQuYyBiL25ldC9pcHY0L2lwX291dHB1dC5jCmluZGV4IDY3ZjI0MWIuLjQ1OWMwMTEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwX291dHB1dC5jCisrKyBiL25ldC9pcHY0L2lwX291dHB1dC5jCkBAIC02MDMsNyArNjAzLDcgQEAKIAkJLyogSUY6IGl0IGRvZXNuJ3QgZml0LCB1c2UgJ210dScgLSB0aGUgZGF0YSBzcGFjZSBsZWZ0ICovCiAJCWlmIChsZW4gPiBtdHUpCiAJCQlsZW4gPSBtdHU7Ci0JCS8qIElGOiB3ZSBhcmUgbm90IHNlbmRpbmcgdXB0byBhbmQgaW5jbHVkaW5nIHRoZSBwYWNrZXQgZW5kCisJCS8qIElGOiB3ZSBhcmUgbm90IHNlbmRpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgcGFja2V0IGVuZAogCQkgICB0aGVuIGFsaWduIHRoZSBuZXh0IHN0YXJ0IG9uIGFuIGVpZ2h0IGJ5dGUgYm91bmRhcnkgKi8KIAkJaWYgKGxlbiA8IGxlZnQpCXsKIAkJCWxlbiAmPSB+NzsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwY29uZmlnLmMgYi9uZXQvaXB2NC9pcGNvbmZpZy5jCmluZGV4IDJiMDk3NzUuLmNiZmYyZWMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2lwY29uZmlnLmMKKysrIGIvbmV0L2lwdjQvaXBjb25maWcuYwpAQCAtMTQ0NCw3ICsxNDQ0LDcgQEAKIAkJcm9vdF9zZXJ2ZXJfYWRkciA9IGFkZHI7CiAKIAkvKgotCSAqIFVzZSBkZWZhdWx0cyB3aGVyZWV2ZXIgYXBwbGljYWJsZS4KKwkgKiBVc2UgZGVmYXVsdHMgd2hlcmV2ZXIgYXBwbGljYWJsZS4KIAkgKi8KIAlpZiAoaWNfZGVmYXVsdHMoKSA8IDApCiAJCXJldHVybiAtMTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L25ldGZpbHRlci9hcnBfdGFibGVzLmMgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvYXJwX3RhYmxlcy5jCmluZGV4IDRiNWQ0NTcuLjg5YmM3ZTYgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9hcnBfdGFibGVzLmMKKysrIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL2FycF90YWJsZXMuYwpAQCAtNzYsNyArNzYsNyBAQAogfQogCiAvKgotICogVW5mb3J0dW5hdGx5LCBfYiBhbmQgX21hc2sgYXJlIG5vdCBhbGlnbmVkIHRvIGFuIGludCAob3IgbG9uZyBpbnQpCisgKiBVbmZvcnR1bmF0ZWx5LCBfYiBhbmQgX21hc2sgYXJlIG5vdCBhbGlnbmVkIHRvIGFuIGludCAob3IgbG9uZyBpbnQpCiAgKiBTb21lIGFyY2hlcyBkb250IGNhcmUsIHVucm9sbGluZyB0aGUgbG9vcCBpcyBhIHdpbiBvbiB0aGVtLgogICogRm9yIG90aGVyIGFyY2hlcywgd2Ugb25seSBoYXZlIGEgMTZiaXQgYWxpZ25lbWVudC4KICAqLwpAQCAtMTg3NCw3ICsxODc0LDcgQEAKIAlpZiAocmV0IDwgMCkKIAkJZ290byBlcnIxOwogCi0JLyogTm9vbmUgZWxzZSB3aWxsIGJlIGRvd25pbmcgc2VtIG5vdywgc28gd2Ugd29uJ3Qgc2xlZXAgKi8KKwkvKiBObyBvbmUgZWxzZSB3aWxsIGJlIGRvd25pbmcgc2VtIG5vdywgc28gd2Ugd29uJ3Qgc2xlZXAgKi8KIAlyZXQgPSB4dF9yZWdpc3Rlcl90YXJnZXRzKGFycHRfYnVpbHRpbl90ZywgQVJSQVlfU0laRShhcnB0X2J1aWx0aW5fdGcpKTsKIAlpZiAocmV0IDwgMCkKIAkJZ290byBlcnIyOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX3RhYmxlcy5jIGIvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX3RhYmxlcy5jCmluZGV4IGZmY2VhMGQuLjcwNDkxNTAgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9pcF90YWJsZXMuYworKysgYi9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfdGFibGVzLmMKQEAgLTIyMzMsNyArMjIzMyw3IEBACiAJaWYgKHJldCA8IDApCiAJCWdvdG8gZXJyMTsKIAotCS8qIE5vb25lIGVsc2Ugd2lsbCBiZSBkb3duaW5nIHNlbSBub3csIHNvIHdlIHdvbid0IHNsZWVwICovCisJLyogTm8gb25lIGVsc2Ugd2lsbCBiZSBkb3duaW5nIHNlbSBub3csIHNvIHdlIHdvbid0IHNsZWVwICovCiAJcmV0ID0geHRfcmVnaXN0ZXJfdGFyZ2V0cyhpcHRfYnVpbHRpbl90ZywgQVJSQVlfU0laRShpcHRfYnVpbHRpbl90ZykpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycjI7CmRpZmYgLS1naXQgYS9uZXQvaXB2NC9uZXRmaWx0ZXIvbmZfbmF0X2NvcmUuYyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jCmluZGV4IDIxYmNmNDcuLjljNzFiMjcgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jCisrKyBiL25ldC9pcHY0L25ldGZpbHRlci9uZl9uYXRfY29yZS5jCkBAIC01MjEsNyArNTIxLDcgQEAKIH0KIEVYUE9SVF9TWU1CT0wobmZfbmF0X3Byb3RvY29sX3JlZ2lzdGVyKTsKIAotLyogTm9vbmUgc3RvcmVzIHRoZSBwcm90b2NvbCBhbnl3aGVyZTsgc2ltcGx5IGRlbGV0ZSBpdC4gKi8KKy8qIE5vIG9uZSBzdG9yZXMgdGhlIHByb3RvY29sIGFueXdoZXJlOyBzaW1wbHkgZGVsZXRlIGl0LiAqLwogdm9pZCBuZl9uYXRfcHJvdG9jb2xfdW5yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgbmZfbmF0X3Byb3RvY29sICpwcm90bykKIHsKIAlzcGluX2xvY2tfYmgoJm5mX25hdF9sb2NrKTsKQEAgLTUzMiw3ICs1MzIsNyBAQAogfQogRVhQT1JUX1NZTUJPTChuZl9uYXRfcHJvdG9jb2xfdW5yZWdpc3Rlcik7CiAKLS8qIE5vb25lIHVzaW5nIGNvbm50cmFjayBieSB0aGUgdGltZSB0aGlzIGNhbGxlZC4gKi8KKy8qIE5vIG9uZSB1c2luZyBjb25udHJhY2sgYnkgdGhlIHRpbWUgdGhpcyBjYWxsZWQuICovCiBzdGF0aWMgdm9pZCBuZl9uYXRfY2xlYW51cF9jb25udHJhY2soc3RydWN0IG5mX2Nvbm4gKmN0KQogewogCXN0cnVjdCBuZl9jb25uX25hdCAqbmF0ID0gbmZfY3RfZXh0X2ZpbmQoY3QsIE5GX0NUX0VYVF9OQVQpOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvcmF3LmMgYi9uZXQvaXB2NC9yYXcuYwppbmRleCAyZDNjNzJlLi5iY2VhZWM0IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9yYXcuYworKysgYi9uZXQvaXB2NC9yYXcuYwpAQCAtNjIyLDcgKzYyMiw3IEBACiBzdGF0aWMgdm9pZCByYXdfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiB7CiAJLyoKLQkgKiBSYXcgc29ja2V0cyBtYXkgaGF2ZSBkaXJlY3Qga2VybmVsIHJlZmVyZW5lY2VzLiBLaWxsIHRoZW0uCisJICogUmF3IHNvY2tldHMgbWF5IGhhdmUgZGlyZWN0IGtlcm5lbCByZWZlcmVuY2VzLiBLaWxsIHRoZW0uCiAJICovCiAJaXBfcmFfY29udHJvbChzaywgMCwgTlVMTCk7CiAKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3JvdXRlLmMgYi9uZXQvaXB2NC9yb3V0ZS5jCmluZGV4IDRiMGM4MTEuLmVhMTA3NTEgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3JvdXRlLmMKKysrIGIvbmV0L2lwdjQvcm91dGUuYwpAQCAtODIxLDcgKzgyMSw3IEBACiB9CiAKIC8qCi0gKiBQZXJ0dWJhdGlvbiBvZiBydF9nZW5pZCBieSBhIHNtYWxsIHF1YW50aXR5IFsxLi4yNTZdCisgKiBQZXJ0dXJiYXRpb24gb2YgcnRfZ2VuaWQgYnkgYSBzbWFsbCBxdWFudGl0eSBbMS4uMjU2XQogICogVXNpbmcgOCBiaXRzIG9mIHNodWZmbGluZyBlbnN1cmUgd2UgY2FuIGNhbGwgcnRfY2FjaGVfaW52YWxpZGF0ZSgpCiAgKiBtYW55IHRpbWVzICgyXjI0KSB3aXRob3V0IGdpdmluZyByZWNlbnQgcnRfZ2VuaWQuCiAgKiBKZW5raW5zIGhhc2ggaXMgc3Ryb25nIGVub3VnaCB0aGF0IGxpdGxlIGNoYW5nZXMgb2YgcnRfZ2VuaWQgYXJlIE9LLgpAQCAtMTE5MSw3ICsxMTkxLDcgQEAKICNlbmRpZgogCS8qCiAJICogU2luY2UgbG9va3VwIGlzIGxvY2tmcmVlLCB3ZSBtdXN0IG1ha2Ugc3VyZQotCSAqIHByZXZpb3VzIHdyaXRlcyB0byBydCBhcmUgY29taXR0ZWQgdG8gbWVtb3J5CisJICogcHJldmlvdXMgd3JpdGVzIHRvIHJ0IGFyZSBjb21taXR0ZWQgdG8gbWVtb3J5CiAJICogYmVmb3JlIG1ha2luZyBydCB2aXNpYmxlIHRvIG90aGVyIENQVVMuCiAJICovCiAJcmN1X2Fzc2lnbl9wb2ludGVyKHJ0X2hhc2hfdGFibGVbaGFzaF0uY2hhaW4sIHJ0KTsKZGlmZiAtLWdpdCBhL25ldC9pcHY0L3RjcF9scC5jIGIvbmV0L2lwdjQvdGNwX2xwLmMKaW5kZXggNjU2ZDQzMS4uNzJmNzIxOCAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX2xwLmMKKysrIGIvbmV0L2lwdjQvdGNwX2xwLmMKQEAgLTEyLDcgKzEyLDcgQEAKICAqICAgICB3aXRoaW4gY29uZ19hdm9pZC4KICAqICAgbyBFcnJvciBjb3JyZWN0aW5nIGluIHJlbW90ZSBIWiwgdGhlcmVmb3JlIHJlbW90ZSBIWiB3aWxsIGJlIGtlZXBlZAogICogICAgIG9uIGNoZWNraW5nIGFuZCB1cGRhdGluZy4KLSAqICAgbyBIYW5kbGluZyBjYWxjdWxhdGlvbiBvZiBPbmUtV2F5LURlbGF5IChPV0QpIHdpdGhpbiBydHRfc2FtcGxlLCBzaWNuZQorICogICBvIEhhbmRsaW5nIGNhbGN1bGF0aW9uIG9mIE9uZS1XYXktRGVsYXkgKE9XRCkgd2l0aGluIHJ0dF9zYW1wbGUsIHNpbmNlCiAgKiAgICAgT1dEIGhhdmUgYSBzaW1pbGFyIG1lYW5pbmcgYXMgUlRULiBBbHNvIGNvcnJlY3QgdGhlIGJ1Z2d5IGZvcm11bGFyLgogICogICBvIEhhbmRsZSByZWFjdGlvbiBmb3IgRWFybHkgQ29uZ2VzdGlvbiBJbmRpY2F0aW9uIChFQ0kpIHdpdGhpbgogICogICAgIHBrdHNfYWNrZWQsIGFzIG1lbnRpb25lZCB3aXRoaW4gcHNldWRvIGNvZGUuCmRpZmYgLS1naXQgYS9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMgYi9uZXQvaXB2NC90Y3Bfb3V0cHV0LmMKaW5kZXggOGIwZDAxNi4uMTczODhjNyAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX291dHB1dC5jCisrKyBiL25ldC9pcHY0L3RjcF9vdXRwdXQuYwpAQCAtNzMsNyArNzMsNyBAQAogCXRjcF9hZHZhbmNlX3NlbmRfaGVhZChzaywgc2tiKTsKIAl0cC0+c25kX254dCA9IFRDUF9TS0JfQ0Ioc2tiKS0+ZW5kX3NlcTsKIAotCS8qIERvbid0IG92ZXJyaWRlIE5hZ2xlIGluZGVmaW5hdGVseSB3aXRoIEYtUlRPICovCisJLyogRG9uJ3Qgb3ZlcnJpZGUgTmFnbGUgaW5kZWZpbml0ZWx5IHdpdGggRi1SVE8gKi8KIAlpZiAodHAtPmZydG9fY291bnRlciA9PSAyKQogCQl0cC0+ZnJ0b19jb3VudGVyID0gMzsKIApkaWZmIC0tZ2l0IGEvbmV0L2lwdjQvdGNwX3llYWguYyBiL25ldC9pcHY0L3RjcF95ZWFoLmMKaW5kZXggZGM3ZjQzMS4uMDVjM2I2ZiAxMDA2NDQKLS0tIGEvbmV0L2lwdjQvdGNwX3llYWguYworKysgYi9uZXQvaXB2NC90Y3BfeWVhaC5jCkBAIC0yMCw3ICsyMCw3IEBACiAjZGVmaW5lIFRDUF9ZRUFIX0RFTFRBICAgICAgICAzIC8vbG9nIG1pbmltdW0gZnJhY3Rpb24gb2YgY3duZCB0byBiZSByZW1vdmVkIG9uIGxvc3MKICNkZWZpbmUgVENQX1lFQUhfRVBTSUxPTiAgICAgIDEgLy9sb2cgbWF4aW11bSBmcmFjdGlvbiB0byBiZSByZW1vdmVkIG9uIGVhcmx5IGRlY29uZ2VzdGlvbgogI2RlZmluZSBUQ1BfWUVBSF9QSFkgICAgICAgICAgOCAvL2xpbiBtYXhpbXVtIGRlbHRhIGZyb20gYmFzZQotI2RlZmluZSBUQ1BfWUVBSF9SSE8gICAgICAgICAxNiAvL2xpbiBtaW51bXVtIG51bWJlciBvZiBjb25zZWN1dGl2ZSBydHQgdG8gY29uc2lkZXIgY29tcGV0aXRpb24gb24gbG9zcworI2RlZmluZSBUQ1BfWUVBSF9SSE8gICAgICAgICAxNiAvL2xpbiBtaW5pbXVtIG51bWJlciBvZiBjb25zZWN1dGl2ZSBydHQgdG8gY29uc2lkZXIgY29tcGV0aXRpb24gb24gbG9zcwogI2RlZmluZSBUQ1BfWUVBSF9aRVRBICAgICAgICA1MCAvL2xpbiBtaW5pbXVtIG51bWJlciBvZiBzdGF0ZSBzd2l0Y2hzIHRvIHJlc2V0IHJlbm9fY291bnQKIAogI2RlZmluZSBUQ1BfU0NBTEFCTEVfQUlfQ05UCSAxMDBVCmRpZmYgLS1naXQgYS9uZXQvaXB2NC91ZHAuYyBiL25ldC9pcHY0L3VkcC5jCmluZGV4IDU4OGY0N2EuLmY4N2E4ZWIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L3VkcC5jCisrKyBiL25ldC9pcHY0L3VkcC5jCkBAIC0xODksNyArMTg5LDcgQEAKICAqICBAc2s6ICAgICAgICAgIHNvY2tldCBzdHJ1Y3QgaW4gcXVlc3Rpb24KICAqICBAc251bTogICAgICAgIHBvcnQgbnVtYmVyIHRvIGxvb2sgdXAKICAqICBAc2FkZHJfY29tcDogIEFGLWRlcGVuZGVudCBjb21wYXJpc29uIG9mIGJvdW5kIGxvY2FsIElQIGFkZHJlc3NlcwotICogIEBoYXNoMl9udWxsYWRkcjogQUYtZGVwZW5kYW50IGhhc2ggdmFsdWUgaW4gc2Vjb25kYXJ5IGhhc2ggY2hhaW5zLAorICogIEBoYXNoMl9udWxsYWRkcjogQUYtZGVwZW5kZW50IGhhc2ggdmFsdWUgaW4gc2Vjb25kYXJ5IGhhc2ggY2hhaW5zLAogICogICAgICAgICAgICAgICAgICAgd2l0aCBOVUxMIGFkZHJlc3MKICAqLwogaW50IHVkcF9saWJfZ2V0X3BvcnQoc3RydWN0IHNvY2sgKnNrLCB1bnNpZ25lZCBzaG9ydCBzbnVtLApkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWRkcmNvbmYuYyBiL25ldC9pcHY2L2FkZHJjb25mLmMKaW5kZXggM2RhYWYzYy4uMTQ5MzUzNCAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWRkcmNvbmYuYworKysgYi9uZXQvaXB2Ni9hZGRyY29uZi5jCkBAIC0xMDg0LDcgKzEwODQsNyBAQAogCWNhc2UgSVBWNl9TQUREUl9SVUxFX1BSSVZBQ1k6CiAJICAgIHsKIAkJLyogUnVsZSA3OiBQcmVmZXIgcHVibGljIGFkZHJlc3MKLQkJICogTm90ZTogcHJlZmVyIHRlbXByYXJ5IGFkZHJlc3MgaWYgdXNlX3RlbXBhZGRyID49IDIKKwkJICogTm90ZTogcHJlZmVyIHRlbXBvcmFyeSBhZGRyZXNzIGlmIHVzZV90ZW1wYWRkciA+PSAyCiAJCSAqLwogCQlpbnQgcHJlZnRtcCA9IGRzdC0+cHJlZnMgJiAoSVBWNl9QUkVGRVJfU1JDX1BVQkxJQ3xJUFY2X1BSRUZFUl9TUkNfVE1QKSA/CiAJCQkJISEoZHN0LT5wcmVmcyAmIElQVjZfUFJFRkVSX1NSQ19UTVApIDoKQEAgLTE5NjgsNyArMTk2OCw3IEBACiAJCQkJCSAqICB0byB0aGUgc3RvcmVkIGxpZmV0aW1lIHNpbmNlIHdlJ2xsCiAJCQkJCSAqICBiZSB1cGRhdGluZyB0aGUgdGltZXN0YW1wIGJlbG93LAogCQkJCQkgKiAgZWxzZSB3ZSdsbCBzZXQgaXQgYmFjayB0byB0aGUKLQkJCQkJICogIG1pbnVtdW0uCisJCQkJCSAqICBtaW5pbXVtLgogCQkJCQkgKi8KIAkJCQkJaWYgKHByZWZlcmVkX2xmdCAhPSBpZnAtPnByZWZlcmVkX2xmdCkgewogCQkJCQkJdmFsaWRfbGZ0ID0gc3RvcmVkX2xmdDsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FmX2luZXQ2LmMgYi9uZXQvaXB2Ni9hZl9pbmV0Ni5jCmluZGV4IDRiMTNkNWQuLmFmY2M3MDkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L2FmX2luZXQ2LmMKKysrIGIvbmV0L2lwdjYvYWZfaW5ldDYuYwpAQCAtMTExMyw3ICsxMTEzLDcgQEAKIAkvKgogCSAqCWlwbmd3ZyBBUEkgZHJhZnQgbWFrZXMgY2xlYXIgdGhhdCB0aGUgY29ycmVjdCBzZW1hbnRpY3MKIAkgKglmb3IgVENQIGFuZCBVRFAgaXMgdG8gY29uc2lkZXIgb25lIFRDUCBhbmQgVURQIGluc3RhbmNlCi0JICoJaW4gYSBob3N0IGF2YWlsaWFibGUgYnkgYm90aCBJTkVUIGFuZCBJTkVUNiBBUElzIGFuZAorCSAqCWluIGEgaG9zdCBhdmFpbGFibGUgYnkgYm90aCBJTkVUIGFuZCBJTkVUNiBBUElzIGFuZAogCSAqCWFibGUgdG8gY29tbXVuaWNhdGUgdmlhIGJvdGggbmV0d29yayBwcm90b2NvbHMuCiAJICovCiAKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9vdXRwdXQuYyBiL25ldC9pcHY2L2lwNl9vdXRwdXQuYwppbmRleCAxODIwODg3Li40NmNmN2JlIDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9pcDZfb3V0cHV0LmMKKysrIGIvbmV0L2lwdjYvaXA2X291dHB1dC5jCkBAIC03NzksNyArNzc5LDcgQEAKIAkJLyogSUY6IGl0IGRvZXNuJ3QgZml0LCB1c2UgJ210dScgLSB0aGUgZGF0YSBzcGFjZSBsZWZ0ICovCiAJCWlmIChsZW4gPiBtdHUpCiAJCQlsZW4gPSBtdHU7Ci0JCS8qIElGOiB3ZSBhcmUgbm90IHNlbmRpbmcgdXB0byBhbmQgaW5jbHVkaW5nIHRoZSBwYWNrZXQgZW5kCisJCS8qIElGOiB3ZSBhcmUgbm90IHNlbmRpbmcgdXAgdG8gYW5kIGluY2x1ZGluZyB0aGUgcGFja2V0IGVuZAogCQkgICB0aGVuIGFsaWduIHRoZSBuZXh0IHN0YXJ0IG9uIGFuIGVpZ2h0IGJ5dGUgYm91bmRhcnkgKi8KIAkJaWYgKGxlbiA8IGxlZnQpCXsKIAkJCWxlbiAmPSB+NzsKZGlmZiAtLWdpdCBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZfdGFibGVzLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvaXA2X3RhYmxlcy5jCmluZGV4IDBiMmFmOWIuLjVhMWM2ZjIgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L25ldGZpbHRlci9pcDZfdGFibGVzLmMKKysrIGIvbmV0L2lwdjYvbmV0ZmlsdGVyL2lwNl90YWJsZXMuYwpAQCAtMjI0OCw3ICsyMjQ4LDcgQEAKIAlpZiAocmV0IDwgMCkKIAkJZ290byBlcnIxOwogCi0JLyogTm9vbmUgZWxzZSB3aWxsIGJlIGRvd25pbmcgc2VtIG5vdywgc28gd2Ugd29uJ3Qgc2xlZXAgKi8KKwkvKiBObyBvbmUgZWxzZSB3aWxsIGJlIGRvd25pbmcgc2VtIG5vdywgc28gd2Ugd29uJ3Qgc2xlZXAgKi8KIAlyZXQgPSB4dF9yZWdpc3Rlcl90YXJnZXRzKGlwNnRfYnVpbHRpbl90ZywgQVJSQVlfU0laRShpcDZ0X2J1aWx0aW5fdGcpKTsKIAlpZiAocmV0IDwgMCkKIAkJZ290byBlcnIyOwpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvbmV0ZmlsdGVyL25mX2RlZnJhZ19pcHY2X2hvb2tzLmMgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZGVmcmFnX2lwdjZfaG9va3MuYwppbmRleCA5N2M1YjIxLi5jZGQ2ZDA0IDEwMDY0NAotLS0gYS9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZGVmcmFnX2lwdjZfaG9va3MuYworKysgYi9uZXQvaXB2Ni9uZXRmaWx0ZXIvbmZfZGVmcmFnX2lwdjZfaG9va3MuYwpAQCAtNzEsNyArNzEsNyBAQAogCWlmIChyZWFzbSA9PSBOVUxMKQogCQlyZXR1cm4gTkZfU1RPTEVOOwogCi0JLyogZXJyb3Igb2NjdXJlZCBvciBub3QgZnJhZ21lbnRlZCAqLworCS8qIGVycm9yIG9jY3VycmVkIG9yIG5vdCBmcmFnbWVudGVkICovCiAJaWYgKHJlYXNtID09IHNrYikKIAkJcmV0dXJuIE5GX0FDQ0VQVDsKIApkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJsYXAuYyBiL25ldC9pcmRhL2lybGFwLmMKaW5kZXggNzgzYzVmMy4uMDA1YjQyNCAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJsYXAuYworKysgYi9uZXQvaXJkYS9pcmxhcC5jCkBAIC0xNjUsNyArMTY1LDcgQEAKIAogCWlybGFwX2FwcGx5X2RlZmF1bHRfY29ubmVjdGlvbl9wYXJhbWV0ZXJzKHNlbGYpOwogCi0Jc2VsZi0+TjMgPSAzOyAvKiAjIGNvbm5lY3Rpb25zIGF0dGVtdHMgdG8gdHJ5IGJlZm9yZSBnaXZpbmcgdXAgKi8KKwlzZWxmLT5OMyA9IDM7IC8qICMgY29ubmVjdGlvbnMgYXR0ZW1wdHMgdG8gdHJ5IGJlZm9yZSBnaXZpbmcgdXAgKi8KIAogCXNlbGYtPnN0YXRlID0gTEFQX05ETTsKIApkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJsYXBfZXZlbnQuYyBiL25ldC9pcmRhL2lybGFwX2V2ZW50LmMKaW5kZXggZDQzNGM4OC4uYmI0NzAyMSAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJsYXBfZXZlbnQuYworKysgYi9uZXQvaXJkYS9pcmxhcF9ldmVudC5jCkBAIC03MDgsNyArNzA4LDcgQEAKIAogCQkJCXNlbGYtPmZyYW1lX3NlbnQgPSBUUlVFOwogCQkJfQotCQkJLyogUmVhZGp1c3Qgb3VyIHRpbWVyIHRvIGFjY29tb2RhdGUgZGV2aWNlcworCQkJLyogUmVhZGp1c3Qgb3VyIHRpbWVyIHRvIGFjY29tbW9kYXRlIGRldmljZXMKIAkJCSAqIGRvaW5nIGZhc3RlciBvciBzbG93ZXIgZGlzY292ZXJ5IHRoYW4gdXMuLi4KIAkJCSAqIEplYW4gSUkgKi8KIAkJCWlybGFwX3N0YXJ0X3F1ZXJ5X3RpbWVyKHNlbGYsIGluZm8tPlMsIGluZm8tPnMpOwpAQCAtOTMxLDcgKzkzMSw3IEBACiAJCWlybGFwX3NlbmRfcnJfZnJhbWUoc2VsZiwgQ01EX0ZSQU1FKTsKIAogCQkvKiBUaGUgdGltZXIgaXMgc2V0IHRvIGhhbGYgdGhlIG5vcm1hbCB0aW1lciB0byBxdWlja2x5Ci0JCSAqIGRldGVjdCBhIGZhaWx1cmUgdG8gbmVnb2NpYXRlIHRoZSBuZXcgY29ubmVjdGlvbgorCQkgKiBkZXRlY3QgYSBmYWlsdXJlIHRvIG5lZ290aWF0ZSB0aGUgbmV3IGNvbm5lY3Rpb24KIAkJICogcGFyYW1ldGVycy4gSXJMQVAgNi4xMS4zLjIsIG5vdGUgMy4KIAkJICogTm90ZSB0aGF0IGN1cnJlbnRseSB3ZSBkb24ndCBwcm9jZXNzIHRoaXMgZmFpbHVyZQogCQkgKiBwcm9wZXJseSwgYXMgd2Ugc2hvdWxkIGRvIGEgcXVpY2sgZGlzY29ubmVjdC4KQEAgLTEwNTIsNyArMTA1Miw3IEBACiAJCQkJcmV0dXJuIC1FUFJPVE87CiAJCQl9CiAKLQkJCS8qIFN1YnN0cmFjdCBzcGFjZSB1c2VkIGJ5IHRoaXMgc2tiICovCisJCQkvKiBTdWJ0cmFjdCBzcGFjZSB1c2VkIGJ5IHRoaXMgc2tiICovCiAJCQlzZWxmLT5ieXRlc19sZWZ0IC09IHNrYi0+bGVuOwogI2Vsc2UJLyogQ09ORklHX0lSREFfRFlOQU1JQ19XSU5ET1cgKi8KIAkJCS8qIFdpbmRvdyBoYXMgYmVlbiBhZGp1c3RlZCBmb3IgdGhlIG1heCBwYWNrZXQKQEAgLTE4MDgsNyArMTgwOCw3IEBACiAKIAkJCQlyZXR1cm4gLUVQUk9UTzsgLyogVHJ5IGFnYWluIGxhdGVyICovCiAJCQl9Ci0JCQkvKiBTdWJzdHJhY3Qgc3BhY2UgdXNlZCBieSB0aGlzIHNrYiAqLworCQkJLyogU3VidHJhY3Qgc3BhY2UgdXNlZCBieSB0aGlzIHNrYiAqLwogCQkJc2VsZi0+Ynl0ZXNfbGVmdCAtPSBza2ItPmxlbjsKICNlbHNlCS8qIENPTkZJR19JUkRBX0RZTkFNSUNfV0lORE9XICovCiAJCQkvKiBXaW5kb3cgaGFzIGJlZW4gYWRqdXN0ZWQgZm9yIHRoZSBtYXggcGFja2V0CmRpZmYgLS1naXQgYS9uZXQvaXJkYS9pcmxhcF9mcmFtZS5jIGIvbmV0L2lyZGEvaXJsYXBfZnJhbWUuYwppbmRleCA2ODgyMjJjLi44YzAwNDE2IDEwMDY0NAotLS0gYS9uZXQvaXJkYS9pcmxhcF9mcmFtZS5jCisrKyBiL25ldC9pcmRhL2lybGFwX2ZyYW1lLmMKQEAgLTg0OCw3ICs4NDgsNyBAQAogCSAqIHRob3VnaCBJckxBUCBpcyBjdXJyZW50bHkgc2VuZGluZyB0aGUgKmxhc3QqIGZyYW1lIG9mIHRoZQogCSAqIHR4LXdpbmRvdywgdGhlIGRyaXZlciBtb3N0IGxpa2VseSBoYXMgb25seSBqdXN0IHN0YXJ0ZWQKIAkgKiBzZW5kaW5nIHRoZSAqZmlyc3QqIGZyYW1lIG9mIHRoZSBzYW1lIHR4LXdpbmRvdy4KLQkgKiBJLmUuIHdlIGFyZSBhbHdheXMgYXQgdGhlIHZlcnkgYmVnaW5pbmcgb2Ygb3IgVHggd2luZG93LgorCSAqIEkuZS4gd2UgYXJlIGFsd2F5cyBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgb2Ygb3IgVHggd2luZG93LgogCSAqIE5vdywgd2UgYXJlIHN1cHBvc2VkIHRvIHNldCB0aGUgZmluYWwgdGltZXIgZnJvbSB0aGUgZW5kCiAJICogb2Ygb3VyIHR4LXdpbmRvdyB0byBsZXQgdGhlIG90aGVyIHBlZXIgcmVwbHkuIFNvLCB3ZSBuZWVkCiAJICogdG8gYWRkIGV4dHJhIHRpbWUgdG8gY29tcGVuc2F0ZSBmb3IgdGhlIGZhY3QgdGhhdCB3ZQpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJsbXBfZXZlbnQuYyBiL25ldC9pcmRhL2lybG1wX2V2ZW50LmMKaW5kZXggYzFmYjVkYi4uOTUwNWE3ZCAxMDA2NDQKLS0tIGEvbmV0L2lyZGEvaXJsbXBfZXZlbnQuYworKysgYi9uZXQvaXJkYS9pcmxtcF9ldmVudC5jCkBAIC00OTgsNyArNDk4LDcgQEAKIAlzd2l0Y2ggKGV2ZW50KSB7CiAjaWZkZWYgQ09ORklHX0lSREFfVUxUUkEKIAljYXNlIExNX1VEQVRBX0lORElDQVRJT046Ci0JCS8qIFRoaXMgaXMgbW9zdCBiaXp6YXJlLiBUaG9zZSBwYWNrZXRzIGFyZSAgYWthIHVucmVsaWFibGUKKwkJLyogVGhpcyBpcyBtb3N0IGJpemFycmUuIFRob3NlIHBhY2tldHMgYXJlICBha2EgdW5yZWxpYWJsZQogCQkgKiBjb25uZWN0ZWQsIGFrYSBJckxQVCBvciBTT0NLX0RHUkFNL0lSREFQUk9UT19VTklUREFUQS4KIAkJICogV2h5IGRvIHdlIHBhc3MgdGhlbSBhcyBVbHRyYSA/Pz8gSmVhbiBJSSAqLwogCQlpcmxtcF9jb25ubGVzc19kYXRhX2luZGljYXRpb24oc2VsZiwgc2tiKTsKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lybmV0L2lybmV0LmggYi9uZXQvaXJkYS9pcm5ldC9pcm5ldC5oCmluZGV4IDBkODJmZjUuLjk3OWVjYjIgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lybmV0L2lybmV0LmgKKysrIGIvbmV0L2lyZGEvaXJuZXQvaXJuZXQuaApAQCAtNzMsNyArNzMsNyBAQAogICogSW5maW5pdGUgdGhhbmtzIHRvIHRob3NlIGJyYXZlIHNvdWxzIGZvciBwcm92aWRpbmcgdGhlIGluZnJhc3RydWN0dXJlCiAgKiB1cG9uIHdoaWNoIElyTkVUIGlzIGJ1aWx0LgogICoKLSAqIFRoYW5rcyB0byBhbGwgbXkgY29sbGVndWVzIGluIEhQIGZvciBoZWxwaW5nIG1lLiBJbiBwYXJ0aWN1bGFyLAorICogVGhhbmtzIHRvIGFsbCBteSBjb2xsZWFndWVzIGluIEhQIGZvciBoZWxwaW5nIG1lLiBJbiBwYXJ0aWN1bGFyLAogICogdGhhbmtzIHRvIFNhbGlsIFByYWRoYW4gYW5kIEJpbGwgU2VycmEgZm9yIFcyayB0ZXN0aW5nLi4uCiAgKiBUaGFua3MgdG8gTHVpeiBNYWdhbGhhZXMgZm9yIGlybmV0ZCBhbmQgbXVjaCB0ZXN0aW5nLi4uCiAgKgpkaWZmIC0tZ2l0IGEvbmV0L2lyZGEvaXJxdWV1ZS5jIGIvbmV0L2lyZGEvaXJxdWV1ZS5jCmluZGV4IDg0OWFhZjAuLjk3MTVlNmUgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lycXVldWUuYworKysgYi9uZXQvaXJkYS9pcnF1ZXVlLmMKQEAgLTQwLDcgKzQwLDcgQEAKICAqCW8gdGhlIGhhc2ggZnVuY3Rpb24gZm9yIGludHMgaXMgcGF0aGV0aWMgKGJ1dCBjb3VsZCBiZSBjaGFuZ2VkKQogICoJbyBsb2NraW5nIGlzIHNvbWV0aW1lIHN1c3BpY2lvdXMgKGVzcGVjaWFsbHkgZHVyaW5nIGVudW1lcmF0aW9uKQogICoJbyBtb3N0IHVzZXJzIGhhdmUgb25seSBhIGZldyBlbGVtZW50cyAoPT0gb3ZlcmhlYWQpCi0gKglvIG1vc3QgdXNlcnMgbmV2ZXIgdXNlIHNlYWNoLCBzbyBkb24ndCBiZW5lZml0IGZyb20gaGFzaGluZworICoJbyBtb3N0IHVzZXJzIG5ldmVyIHVzZSBzZWFyY2gsIHNvIGRvbid0IGJlbmVmaXQgZnJvbSBoYXNoaW5nCiAgKiBQcm9ibGVtIGFscmVhZHkgZml4ZWQgOgogICoJbyBub3QgNjQgYml0IGNvbXBsaWFudCAobW9zdCB1c2VycyBkbyBoYXNodiA9IChpbnQpIHNlbGYpCiAgKglvIGhhc2hiaW5fcmVtb3ZlKCkgaXMgYnJva2VuID0+IHVzZSBoYXNoYmluX3JlbW92ZV90aGlzKCkKZGlmZiAtLWdpdCBhL25ldC9pcmRhL2lydHRwLmMgYi9uZXQvaXJkYS9pcnR0cC5jCmluZGV4IGY2MDU0ZjkuLjlkOWFmNDYgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL2lydHRwLmMKKysrIGIvbmV0L2lyZGEvaXJ0dHAuYwpAQCAtMTE5Myw3ICsxMTkzLDcgQEAKIC8qCiAgKiBGdW5jdGlvbiBpcnR0cF9jb25uZWN0X2NvbmZpcm0gKGhhbmRsZSwgcW9zLCBza2IpCiAgKgotICogICAgU2V2aWNlIHVzZXIgY29uZmlybXMgVFNBUCBjb25uZWN0aW9uIHdpdGggcGVlci4KKyAqICAgIFNlcnZpY2UgdXNlciBjb25maXJtcyBUU0FQIGNvbm5lY3Rpb24gd2l0aCBwZWVyLgogICoKICAqLwogc3RhdGljIHZvaWQgaXJ0dHBfY29ubmVjdF9jb25maXJtKHZvaWQgKmluc3RhbmNlLCB2b2lkICpzYXAsCmRpZmYgLS1naXQgYS9uZXQvaXJkYS9xb3MuYyBiL25ldC9pcmRhL3Fvcy5jCmluZGV4IDJiMDA5NzQuLjFiNTFiY2YgMTAwNjQ0Ci0tLSBhL25ldC9pcmRhL3Fvcy5jCisrKyBiL25ldC9pcmRhL3Fvcy5jCkBAIC0zOSwxNiArMzksMTYgQEAKICNpbmNsdWRlIDxuZXQvaXJkYS9pcmxhcF9mcmFtZS5oPgogCiAvKgotICogTWF4aW11bSB2YWx1ZXMgb2YgdGhlIGJhdWQgcmF0ZSB3ZSBuZWdvY2lhdGUgd2l0aCB0aGUgb3RoZXIgZW5kLgorICogTWF4aW11bSB2YWx1ZXMgb2YgdGhlIGJhdWQgcmF0ZSB3ZSBuZWdvdGlhdGUgd2l0aCB0aGUgb3RoZXIgZW5kLgogICogTW9zdCBvZnRlbiwgeW91IGRvbid0IGhhdmUgdG8gY2hhbmdlIHRoYXQsIGJlY2F1c2UgTGludXgtSXJEQSB3aWxsCiAgKiB1c2UgdGhlIG1heGltdW0gb2ZmZXJlZCBieSB0aGUgbGluayBsYXllciwgd2hpY2ggdXN1YWxseSB3b3JrcyBmaW5lLgogICogSW4gc29tZSB2ZXJ5IHJhcmUgY2FzZXMsIHlvdSBtYXkgd2FudCB0byBsaW1pdCBpdCB0byBsb3dlciBzcGVlZHMuLi4KICAqLwogaW50IHN5c2N0bF9tYXhfYmF1ZF9yYXRlID0gMTYwMDAwMDA7CiAvKgotICogTWF4aW11bSB2YWx1ZSBvZiB0aGUgbGFwIGRpc2Nvbm5lY3QgdGltZXIgd2UgbmVnb2NpYXRlIHdpdGggdGhlIG90aGVyIGVuZC4KKyAqIE1heGltdW0gdmFsdWUgb2YgdGhlIGxhcCBkaXNjb25uZWN0IHRpbWVyIHdlIG5lZ290aWF0ZSB3aXRoIHRoZSBvdGhlciBlbmQuCiAgKiBNb3N0IG9mdGVuLCB0aGUgdmFsdWUgYmVsb3cgcmVwcmVzZW50IHRoZSBiZXN0IGNvbXByb21pc2UsIGJ1dCBzb21lIHVzZXIKLSAqIG1heSB3YW50IHRvIGtlZXAgdGhlIExBUCBhbGl2ZSBsb25ndWVyIG9yIHNob3J0ZXIgaW4gY2FzZSBvZiBsaW5rIGZhaWx1cmUuCisgKiBtYXkgd2FudCB0byBrZWVwIHRoZSBMQVAgYWxpdmUgbG9uZ2VyIG9yIHNob3J0ZXIgaW4gY2FzZSBvZiBsaW5rIGZhaWx1cmUuCiAgKiBSZW1lbWJlciB0aGF0IHRoZSB0aHJlc2hvbGQgdGltZSAoZWFybHkgd2FybmluZykgaXMgZml4ZWQgdG8gM3MuLi4KICAqLwogaW50IHN5c2N0bF9tYXhfbm9yZXBseV90aW1lID0gMTI7CkBAIC00MTEsNyArNDExLDcgQEAKIAkgKiBGaXggdHggZGF0YSBzaXplIGFjY29yZGluZyB0byB1c2VyIGxpbWl0cyAtIEplYW4gSUkKIAkgKi8KIAlpZiAocW9zLT5kYXRhX3NpemUudmFsdWUgPiBzeXNjdGxfbWF4X3R4X2RhdGFfc2l6ZSkKLQkJLyogQWxsb3cgbm9uIGRpc2NyZXRlIGFkanVzdGVtZW50IHRvIGF2b2lkIGxvb3NpbmcgY2FwYWNpdHkgKi8KKwkJLyogQWxsb3cgbm9uIGRpc2NyZXRlIGFkanVzdGVtZW50IHRvIGF2b2lkIGxvc2luZyBjYXBhY2l0eSAqLwogCQlxb3MtPmRhdGFfc2l6ZS52YWx1ZSA9IHN5c2N0bF9tYXhfdHhfZGF0YV9zaXplOwogCS8qCiAJICogT3ZlcnJpZGUgVHggd2luZG93IGlmIHVzZXIgcmVxdWVzdCBpdC4gLSBKZWFuIElJCmRpZmYgLS1naXQgYS9uZXQvaXJkYS90aW1lci5jIGIvbmV0L2lyZGEvdGltZXIuYwppbmRleCAwMzM1YmEwLi5mNDE4Y2IyIDEwMDY0NAotLS0gYS9uZXQvaXJkYS90aW1lci5jCisrKyBiL25ldC9pcmRhL3RpbWVyLmMKQEAgLTU5LDcgKzU5LDcgQEAKIAkgKiBzbG90IHRpbWUsIHBsdXMgYWRkIHNvbWUgZXh0cmEgdGltZSB0byBwcm9wZXJseSByZWNlaXZlIHRoZSBsYXN0CiAJICogZGlzY292ZXJ5IHBhY2tldCAod2hpY2ggaXMgbG9uZ2VyIGR1ZSB0byBleHRyYSBkaXNjb3ZlcnkgaW5mbyksCiAJICogdG8gYXZvaWQgbWVzc2luZyB3aXRoIGZvciBpbmNvbW1pbmcgY29ubmVjdGlvbnMgcmVxdWVzdHMgYW5kCi0JICogdG8gYWNjb21vZGF0ZSBkZXZpY2VzIHRoYXQgcGVyZm9ybSBkaXNjb3Zlcnkgc2xvd2VyIHRoYW4gdXMuCisJICogdG8gYWNjb21tb2RhdGUgZGV2aWNlcyB0aGF0IHBlcmZvcm0gZGlzY292ZXJ5IHNsb3dlciB0aGFuIHVzLgogCSAqIEplYW4gSUkgKi8KIAl0aW1lb3V0ID0gKChzeXNjdGxfc2xvdF90aW1lb3V0ICogSFogLyAxMDAwKSAqIChTIC0gcykKIAkJICAgKyBYSURFWFRSQV9USU1FT1VUICsgU01BTExCVVNZX1RJTUVPVVQpOwpkaWZmIC0tZ2l0IGEvbmV0L2l1Y3YvYWZfaXVjdi5jIGIvbmV0L2l1Y3YvYWZfaXVjdi5jCmluZGV4IDk2MzdlNDUuLjk4NmIyYTUgMTAwNjQ0Ci0tLSBhL25ldC9pdWN2L2FmX2l1Y3YuYworKysgYi9uZXQvaXVjdi9hZl9pdWN2LmMKQEAgLTI1MCw3ICsyNTAsNyBAQAogICoJUFJNREFUQVswLi42XQlzb2NrZXQgZGF0YSAobWF4IDcgYnl0ZXMpOwogICoJUFJNREFUQVs3XQlzb2NrZXQgZGF0YSBsZW5ndGggdmFsdWUgKGxlbiBpcyAweGZmIC0gUFJNREFUQVs3XSkKICAqCi0gKiBUaGUgc29ja2V0IGRhdGEgbGVuZ3RoIGlzIGNvbXB1dGVkIGJ5IHN1YnN0cmFjdGluZyB0aGUgc29ja2V0IGRhdGEgbGVuZ3RoCisgKiBUaGUgc29ja2V0IGRhdGEgbGVuZ3RoIGlzIGNvbXB1dGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzb2NrZXQgZGF0YSBsZW5ndGgKICAqIHZhbHVlIGZyb20gMHhGRi4KICAqIElmIHRoZSBzb2NrZXQgZGF0YSBsZW4gaXMgZ3JlYXRlciA3LCB0aGVuIFBSTURBVEEgY2FuIGJlIHVzZWQgZm9yIHNwZWNpYWwKICAqIG5vdGlmaWNhdGlvbnMgKHNlZSBpdWN2X3NvY2tfc2h1dGRvd24pOyBhbmQgZnVydGhlciwKZGlmZiAtLWdpdCBhL25ldC9pdWN2L2l1Y3YuYyBiL25ldC9pdWN2L2l1Y3YuYwppbmRleCAxZWU1ZGFiLi44ZjE1NmJkIDEwMDY0NAotLS0gYS9uZXQvaXVjdi9pdWN2LmMKKysrIGIvbmV0L2l1Y3YvaXVjdi5jCkBAIC03MzUsNyArNzM1LDcgQEAKIAlzdHJ1Y3QgaXVjdl9pcnFfbGlzdCAqcCwgKm47CiAKIAkvKgotCSAqIFdoZW4gYSBwYXRoIGlzIHNldmVyZWQsIHRoZSBwYXRoaWQgY2FuIGJlIHJldXNlZCBpbW1lZGlhdGx5CisJICogV2hlbiBhIHBhdGggaXMgc2V2ZXJlZCwgdGhlIHBhdGhpZCBjYW4gYmUgcmV1c2VkIGltbWVkaWF0ZWx5CiAJICogb24gYSBpdWN2IGNvbm5lY3Qgb3IgYSBjb25uZWN0aW9uIHBlbmRpbmcgaW50ZXJydXB0LiBSZW1vdmUKIAkgKiBhbGwgZW50cmllcyBmcm9tIHRoZSB0YXNrIHF1ZXVlIHRoYXQgcmVmZXIgdG8gYSBzdGFsZSBwYXRoaWQKIAkgKiAoaXVjdl9wYXRoX3RhYmxlW2l4XSA9PSBOVUxMKS4gT25seSB0aGVuIGRvIHRoZSBpdWN2IGNvbm5lY3QKQEAgLTgwNyw3ICs4MDcsNyBAQAogCXNwaW5fbG9ja19iaCgmaXVjdl90YWJsZV9sb2NrKTsKIAkvKiBSZW1vdmUgaGFuZGxlciBmcm9tIHRoZSBpdWN2X2hhbmRsZXJfbGlzdC4gKi8KIAlsaXN0X2RlbF9pbml0KCZoYW5kbGVyLT5saXN0KTsKLQkvKiBTZXZlciBhbGwgcGF0aGlkcyBzdGlsbCByZWZlcmluZyB0byB0aGUgaGFuZGxlci4gKi8KKwkvKiBTZXZlciBhbGwgcGF0aGlkcyBzdGlsbCByZWZlcnJpbmcgdG8gdGhlIGhhbmRsZXIuICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHAsIG4sICZoYW5kbGVyLT5wYXRocywgbGlzdCkgewogCQlpdWN2X3NldmVyX3BhdGhpZChwLT5wYXRoaWQsIE5VTEwpOwogCQlpdWN2X3BhdGhfdGFibGVbcC0+cGF0aGlkXSA9IE5VTEw7CmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaCBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCmluZGV4IGE0MDQwMTcuLmMxODM5NmMgMTAwNjQ0Ci0tLSBhL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCisrKyBiL25ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oCkBAIC05Nyw3ICs5Nyw3IEBACiAJc2l6ZV90IHN1cHBfcmF0ZXNfbGVuOwogCiAJLyoKLQkgKiBEdXJpbmcgYXNzb2NhdGlvbiwgd2Ugc2F2ZSBhbiBFUlAgdmFsdWUgZnJvbSBhIHByb2JlIHJlc3BvbnNlIHNvCisJICogRHVyaW5nIGFzc29jaWF0aW9uLCB3ZSBzYXZlIGFuIEVSUCB2YWx1ZSBmcm9tIGEgcHJvYmUgcmVzcG9uc2Ugc28KIAkgKiB0aGF0IHdlIGNhbiBmZWVkIEVSUCBpbmZvIHRvIHRoZSBkcml2ZXIgd2hlbiBoYW5kbGluZyB0aGUKIAkgKiBhc3NvY2lhdGlvbiBjb21wbGV0ZXMuIHRoZXNlIGZpZWxkcyBwcm9iYWJseSB3b24ndCBiZSB1cC10by1kYXRlCiAJICogb3RoZXJ3aXNlLCB5b3UgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byB1c2UgdGhlbS4KZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYyBiL25ldC9tYWM4MDIxMS9tZXNoX3BhdGh0YmwuYwppbmRleCA4ZDY1YjQ3Li4zMzZjYTlkIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvbWVzaF9wYXRodGJsLmMKKysrIGIvbmV0L21hYzgwMjExL21lc2hfcGF0aHRibC5jCkBAIC02MjgsNyArNjI4LDcgQEAKICAqCiAgKiBAbXBhdGg6IG1lc2ggcGF0aCB3aG9zZSBxdWV1ZSBoYXMgdG8gYmUgZnJlZWQKICAqCi0gKiBMb2NraW5nOiB0aGUgZnVuY3Rpb24gbXVzdCBtZSBjYWxsZWQgd2l0aGluZyBhIHJjdV9yZWFkX2xvY2sgcmVnaW9uCisgKiBMb2NraW5nOiB0aGUgZnVuY3Rpb24gbXVzdCBtZSBjYWxsZWQgd2l0aGluIGEgcmN1X3JlYWRfbG9jayByZWdpb24KICAqLwogdm9pZCBtZXNoX3BhdGhfZmx1c2hfcGVuZGluZyhzdHJ1Y3QgbWVzaF9wYXRoICptcGF0aCkKIHsKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMgYi9uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jCmluZGV4IGRiZGViZWRhLi5jMDZhYTNhIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvcmM4MDIxMV9taW5zdHJlbF9odC5jCisrKyBiL25ldC9tYWM4MDIxMS9yYzgwMjExX21pbnN0cmVsX2h0LmMKQEAgLTI1OSw3ICsyNTksNyBAQAogCQl9CiAJfQogCi0JLyogdHJ5IHRvIHNhbXBsZSB1cCB0byBoYWxmIG9mIHRoZSBhdmFpbGJsZSByYXRlcyBkdXJpbmcgZWFjaCBpbnRlcnZhbCAqLworCS8qIHRyeSB0byBzYW1wbGUgdXAgdG8gaGFsZiBvZiB0aGUgYXZhaWxhYmxlIHJhdGVzIGR1cmluZyBlYWNoIGludGVydmFsICovCiAJbWktPnNhbXBsZV9jb3VudCAqPSA0OwogCiAJY3VyX3Byb2IgPSAwOwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3JjODAyMTFfcGlkLmggYi9uZXQvbWFjODAyMTEvcmM4MDIxMV9waWQuaAppbmRleCA2NTEwZjhlLi4xOTExMWM3IDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvcmM4MDIxMV9waWQuaAorKysgYi9uZXQvbWFjODAyMTEvcmM4MDIxMV9waWQuaApAQCAtNzcsNyArNzcsNyBAQAogfTsKIAogc3RydWN0IHJjX3BpZF9ldmVudCB7Ci0JLyogVGhlIHRpbWUgd2hlbiB0aGUgZXZlbnQgb2NjdXJlZCAqLworCS8qIFRoZSB0aW1lIHdoZW4gdGhlIGV2ZW50IG9jY3VycmVkICovCiAJdW5zaWduZWQgbG9uZyB0aW1lc3RhbXA7CiAKIAkvKiBFdmVudCBJRCBudW1iZXIgKi8KZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9yeC5jIGIvbmV0L21hYzgwMjExL3J4LmMKaW5kZXggYWE1Y2MzNy4uOWQxOTJkNiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3J4LmMKKysrIGIvbmV0L21hYzgwMjExL3J4LmMKQEAgLTM4MSw3ICszODEsNyBAQAogICogc3BlY3Mgd2VyZSBzYW5lIGVub3VnaCB0aGlzIHRpbWUgYXJvdW5kIHRvIHJlcXVpcmUgcGFkZGluZyBlYWNoIEEtTVNEVQogICogc3ViZnJhbWUgdG8gYSBsZW5ndGggdGhhdCBpcyBhIG11bHRpcGxlIG9mIGZvdXIuCiAgKgotICogUGFkZGluZyBsaWtlIEF0aGVyb3MgaGFyZHdhcmUgYWRkcyB3aGljaCBpcyBpbmJldHdlZW4gdGhlIDgwMi4xMSBoZWFkZXIgYW5kCisgKiBQYWRkaW5nIGxpa2UgQXRoZXJvcyBoYXJkd2FyZSBhZGRzIHdoaWNoIGlzIGJldHdlZW4gdGhlIDgwMi4xMSBoZWFkZXIgYW5kCiAgKiB0aGUgcGF5bG9hZCBpcyBub3Qgc3VwcG9ydGVkLCB0aGUgZHJpdmVyIGlzIHJlcXVpcmVkIHRvIG1vdmUgdGhlIDgwMi4xMQogICogaGVhZGVyIHRvIGJlIGRpcmVjdGx5IGluIGZyb250IG9mIHRoZSBwYXlsb2FkIGluIHRoYXQgY2FzZS4KICAqLwpkaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmMgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uYwppbmRleCBkMDMxMWEzLi4xM2U4YzMwIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvc3RhX2luZm8uYworKysgYi9uZXQvbWFjODAyMTEvc3RhX2luZm8uYwpAQCAtNDcsOSArNDcsOSBAQAogICogU3RhdGlvbiBlbnRyaWVzIGFyZSBhZGRlZCBieSBtYWM4MDIxMSB3aGVuIHlvdSBlc3RhYmxpc2ggYSBsaW5rIHdpdGggYQogICogcGVlci4gVGhpcyBtZWFucyBkaWZmZXJlbnQgdGhpbmdzIGZvciB0aGUgZGlmZmVyZW50IHR5cGUgb2YgaW50ZXJmYWNlcwogICogd2Ugc3VwcG9ydC4gRm9yIGEgcmVndWxhciBzdGF0aW9uIHRoaXMgbWVhbiB3ZSBhZGQgdGhlIEFQIHN0YSB3aGVuIHdlCi0gKiByZWNlaXZlIGFuIGFzc29jYXRpb24gcmVzcG9uc2UgZnJvbSB0aGUgQVAuIEZvciBJQlNTIHRoaXMgb2NjdXJzIHdoZW4KKyAqIHJlY2VpdmUgYW4gYXNzb2NpYXRpb24gcmVzcG9uc2UgZnJvbSB0aGUgQVAuIEZvciBJQlNTIHRoaXMgb2NjdXJzIHdoZW4KICAqIGdldCB0byBrbm93IGFib3V0IGEgcGVlciBvbiB0aGUgc2FtZSBJQlNTLiBGb3IgV0RTIHdlIGFkZCB0aGUgc3RhIGZvcgotICogdGhlIHBlZXIgaW1lZGlhdGVseSB1cG9uIGRldmljZSBvcGVuLiBXaGVuIHVzaW5nIEFQIG1vZGUgd2UgYWRkIHN0YXRpb25zCisgKiB0aGUgcGVlciBpbW1lZGlhdGVseSB1cG9uIGRldmljZSBvcGVuLiBXaGVuIHVzaW5nIEFQIG1vZGUgd2UgYWRkIHN0YXRpb25zCiAgKiBmb3IgZWFjaCByZXNwZWN0aXZlIHN0YXRpb24gdXBvbiByZXF1ZXN0IGZyb20gdXNlcnNwYWNlIHRocm91Z2ggbmw4MDIxMS4KICAqCiAgKiBJbiBvcmRlciB0byByZW1vdmUgYSBTVEEgaW5mbyBzdHJ1Y3R1cmUsIHZhcmlvdXMgc3RhX2luZm9fZGVzdHJveV8qKCkKZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9zdGFfaW5mby5oIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKaW5kZXggNTc2ODExNC4uYjJmOTU5NiAxMDA2NDQKLS0tIGEvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKKysrIGIvbmV0L21hYzgwMjExL3N0YV9pbmZvLmgKQEAgLTE3Myw3ICsxNzMsNyBAQAogLyoqCiAgKiBlbnVtIHBsaW5rX3N0YXRlIC0gc3RhdGUgb2YgYSBtZXNoIHBlZXIgbGluayBmaW5pdGUgc3RhdGUgbWFjaGluZQogICoKLSAqIEBQTElOS19MSVNURU46IGluaXRpYWwgc3RhdGUsIGNvbnNpZGVyZWQgdGhlIGltcGxpY2l0IHN0YXRlIG9mIG5vbiBleGlzdGFudAorICogQFBMSU5LX0xJU1RFTjogaW5pdGlhbCBzdGF0ZSwgY29uc2lkZXJlZCB0aGUgaW1wbGljaXQgc3RhdGUgb2Ygbm9uIGV4aXN0ZW50CiAgKiAJbWVzaCBwZWVyIGxpbmtzCiAgKiBAUExJTktfT1BOX1NOVDogbWVzaCBwbGluayBvcGVuIGZyYW1lIGhhcyBiZWVuIHNlbnQgdG8gdGhpcyBtZXNoIHBlZXIKICAqIEBQTElOS19PUE5fUkNWRDogbWVzaCBwbGluayBvcGVuIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkIGZyb20gdGhpcyBtZXNoIHBlZXIKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYyBiL25ldC9uZXRmaWx0ZXIvaXBzZXQvaXBfc2V0X2NvcmUuYwppbmRleCBkNmI0ODIzLi4yNTMzMjZlIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL2lwc2V0L2lwX3NldF9jb3JlLmMKKysrIGIvbmV0L25ldGZpbHRlci9pcHNldC9pcF9zZXRfY29yZS5jCkBAIC04OTMsNyArODkzLDcgQEAKIAl0byA9IGlwX3NldF9saXN0W3RvX2lkXTsKIAogCS8qIEZlYXR1cmVzIG11c3Qgbm90IGNoYW5nZS4KLQkgKiBOb3QgYW4gYXJ0aWZpY2FsIHJlc3RyaWN0aW9uIGFueW1vcmUsIGFzIHdlIG11c3QgcHJldmVudAorCSAqIE5vdCBhbiBhcnRpZmljaWFsIHJlc3RyaWN0aW9uIGFueW1vcmUsIGFzIHdlIG11c3QgcHJldmVudAogCSAqIHBvc3NpYmxlIGxvb3BzIGNyZWF0ZWQgYnkgc3dhcHBpbmcgaW4gc2V0bGlzdCB0eXBlIG9mIHNldHMuICovCiAJaWYgKCEoZnJvbS0+dHlwZS0+ZmVhdHVyZXMgPT0gdG8tPnR5cGUtPmZlYXR1cmVzICYmCiAJICAgICAgZnJvbS0+dHlwZS0+ZmFtaWx5ID09IHRvLT50eXBlLT5mYW1pbHkpKQpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19jb25uLmMKaW5kZXggZjI4OTMwNi4uYzk3YmQ0NSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2Nvbm4uYworKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfY29ubi5jCkBAIC01OTUsNyArNTk1LDcgQEAKIAkJCWF0b21pY19pbmMoJmRlc3QtPmluYWN0Y29ubnMpOwogCX0gZWxzZSB7CiAJCS8qIEl0IGlzIGEgcGVyc2lzdGVudCBjb25uZWN0aW9uL3RlbXBsYXRlLCBzbyBpbmNyZWFzZQotCQkgICB0aGUgcGVyaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqLworCQkgICB0aGUgcGVyc2lzdGVudCBjb25uZWN0aW9uIGNvdW50ZXIgKi8KIAkJYXRvbWljX2luYygmZGVzdC0+cGVyc2lzdGNvbm5zKTsKIAl9CiAKQEAgLTY1Nyw3ICs2NTcsNyBAQAogCQl9CiAJfSBlbHNlIHsKIAkJLyogSXQgaXMgYSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24vdGVtcGxhdGUsIHNvIGRlY3JlYXNlCi0JCSAgIHRoZSBwZXJpc3RlbnQgY29ubmVjdGlvbiBjb3VudGVyICovCisJCSAgIHRoZSBwZXJzaXN0ZW50IGNvbm5lY3Rpb24gY291bnRlciAqLwogCQlhdG9taWNfZGVjKCZkZXN0LT5wZXJzaXN0Y29ubnMpOwogCX0KIApkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjLmMKaW5kZXggZjI3NmRmOS4uODdlNDBlYSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX2xibGMuYworKysgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsYy5jCkBAIC0xMzEsNyArMTMxLDcgQEAKIHsKIAlsaXN0X2RlbCgmZW4tPmxpc3QpOwogCS8qCi0JICogV2UgZG9uJ3Qga2ZyZWUgZGVzdCBiZWNhdXNlIGl0IGlzIHJlZmVyZWQgZWl0aGVyIGJ5IGl0cyBzZXJ2aWNlCisJICogV2UgZG9uJ3Qga2ZyZWUgZGVzdCBiZWNhdXNlIGl0IGlzIHJlZmVycmVkIGVpdGhlciBieSBpdHMgc2VydmljZQogCSAqIG9yIHRoZSB0cmFzaCBkZXN0IGxpc3QuCiAJICovCiAJYXRvbWljX2RlYygmZW4tPmRlc3QtPnJlZmNudCk7CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfbGJsY3IuYyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCmluZGV4IGNiMWM5OTEuLjkwZjYxOGEgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCisrKyBiL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19sYmxjci5jCkBAIC0xNTIsNyArMTUyLDcgQEAKIAl3cml0ZV9sb2NrKCZzZXQtPmxvY2spOwogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShlLCBlcCwgJnNldC0+bGlzdCwgbGlzdCkgewogCQkvKgotCQkgKiBXZSBkb24ndCBrZnJlZSBkZXN0IGJlY2F1c2UgaXQgaXMgcmVmZXJlZCBlaXRoZXIKKwkJICogV2UgZG9uJ3Qga2ZyZWUgZGVzdCBiZWNhdXNlIGl0IGlzIHJlZmVycmVkIGVpdGhlcgogCQkgKiBieSBpdHMgc2VydmljZSBvciBieSB0aGUgdHJhc2ggZGVzdCBsaXN0LgogCQkgKi8KIAkJYXRvbWljX2RlYygmZS0+ZGVzdC0+cmVmY250KTsKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL2lwdnMvaXBfdnNfcHJvdG9fc2N0cC5jCmluZGV4IGIwMjdjY2MuLmQxMmVkNTMgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvaXB2cy9pcF92c19wcm90b19zY3RwLmMKKysrIGIvbmV0L25ldGZpbHRlci9pcHZzL2lwX3ZzX3Byb3RvX3NjdHAuYwpAQCAtNTY2LDcgKzU2Niw3IEBACiAJICogU0hVVERPV04gc2VudCBmcm9tIHRoZSBjbGllbnQsIHdhaXRpbmYgZm9yIFNIVVQgQUNLIGZyb20gdGhlIHNlcnZlcgogCSAqLwogCS8qCi0JICogV2UgcmVjaWV2ZWQgdGhlIGRhdGEgY2h1Y2ssIGtlZXAgdGhlIHN0YXRlIHVuY2hhbmdlZC4gSSBhc3N1bWUKKwkgKiBXZSByZWNlaXZlZCB0aGUgZGF0YSBjaHVjaywga2VlcCB0aGUgc3RhdGUgdW5jaGFuZ2VkLiBJIGFzc3VtZQogCSAqIHRoYXQgc3RpbGwgZGF0YSBjaHVuY2tzICBjYW4gYmUgcmVjZWl2ZWQgYnkgYm90aCB0aGUgcGVlcnMgaW4KIAkgKiBTSFVET1dOIHN0YXRlCiAJICovCkBAIC02MzMsNyArNjMzLDcgQEAKIAkgKiBTSFVURE9XTiBzZW50IGZyb20gdGhlIHNlcnZlciwgd2FpdGluZiBmb3IgU0hVVERPV04gQUNLIGZyb20gY2xpZW50CiAJICovCiAJLyoKLQkgKiBXZSByZWNpZXZlZCB0aGUgZGF0YSBjaHVjaywga2VlcCB0aGUgc3RhdGUgdW5jaGFuZ2VkLiBJIGFzc3VtZQorCSAqIFdlIHJlY2VpdmVkIHRoZSBkYXRhIGNodWNrLCBrZWVwIHRoZSBzdGF0ZSB1bmNoYW5nZWQuIEkgYXNzdW1lCiAJICogdGhhdCBzdGlsbCBkYXRhIGNodW5ja3MgIGNhbiBiZSByZWNlaXZlZCBieSBib3RoIHRoZSBwZWVycyBpbgogCSAqIFNIVURPV04gc3RhdGUKIAkgKi8KQEAgLTcwMSw3ICs3MDEsNyBAQAogCSAqIFNIVVRET1dOIEFDSyBmcm9tIHRoZSBjbGllbnQsIGF3YWl0aW5nIGZvciBTSFVURE9XTiBDT00gZnJvbSBzZXJ2ZXIKIAkgKi8KIAkvKgotCSAqIFdlIHJlY2lldmVkIHRoZSBkYXRhIGNodWNrLCBrZWVwIHRoZSBzdGF0ZSB1bmNoYW5nZWQuIEkgYXNzdW1lCisJICogV2UgcmVjZWl2ZWQgdGhlIGRhdGEgY2h1Y2ssIGtlZXAgdGhlIHN0YXRlIHVuY2hhbmdlZC4gSSBhc3N1bWUKIAkgKiB0aGF0IHN0aWxsIGRhdGEgY2h1bmNrcyAgY2FuIGJlIHJlY2VpdmVkIGJ5IGJvdGggdGhlIHBlZXJzIGluCiAJICogU0hVRE9XTiBzdGF0ZQogCSAqLwpAQCAtNzcxLDcgKzc3MSw3IEBACiAJICogU0hVVERPV04gQUNLIGZyb20gdGhlIHNlcnZlciwgYXdhaXRpbmcgZm9yIFNIVVRET1dOIENPTSBmcm9tIGNsaWVudAogCSAqLwogCS8qCi0JICogV2UgcmVjaWV2ZWQgdGhlIGRhdGEgY2h1Y2ssIGtlZXAgdGhlIHN0YXRlIHVuY2hhbmdlZC4gSSBhc3N1bWUKKwkgKiBXZSByZWNlaXZlZCB0aGUgZGF0YSBjaHVjaywga2VlcCB0aGUgc3RhdGUgdW5jaGFuZ2VkLiBJIGFzc3VtZQogCSAqIHRoYXQgc3RpbGwgZGF0YSBjaHVuY2tzICBjYW4gYmUgcmVjZWl2ZWQgYnkgYm90aCB0aGUgcGVlcnMgaW4KIAkgKiBTSFVET1dOIHN0YXRlCiAJICovCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMKaW5kZXggOTQxMjg2Yy4uMmUxYzExZiAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYwpAQCAtNDUzLDcgKzQ1Myw3IEBACiAJICAgUkVKRUNUIHdpbGwgZ2l2ZSBzcHVyaW91cyB3YXJuaW5ncyBoZXJlLiAqLwogCS8qIE5GX0NUX0FTU0VSVChhdG9taWNfcmVhZCgmY3QtPmN0X2dlbmVyYWwudXNlKSA9PSAxKTsgKi8KIAotCS8qIE5vIGV4dGVybmFsIHJlZmVyZW5jZXMgbWVhbnMgbm9vbmUgZWxzZSBjb3VsZCBoYXZlCisJLyogTm8gZXh0ZXJuYWwgcmVmZXJlbmNlcyBtZWFucyBubyBvbmUgZWxzZSBjb3VsZCBoYXZlCiAJICAgY29uZmlybWVkIHVzLiAqLwogCU5GX0NUX0FTU0VSVCghbmZfY3RfaXNfY29uZmlybWVkKGN0KSk7CiAJcHJfZGVidWcoIkNvbmZpcm1pbmcgY29ubnRyYWNrICVwXG4iLCBjdCk7CkBAIC05MDEsNyArOTAxLDcgQEAKIAlyZXQgPSBsM3Byb3RvLT5nZXRfbDRwcm90byhza2IsIHNrYl9uZXR3b3JrX29mZnNldChza2IpLAogCQkJCSAgICZkYXRhb2ZmLCAmcHJvdG9udW0pOwogCWlmIChyZXQgPD0gMCkgewotCQlwcl9kZWJ1Zygibm90IHByZXBhcmVkIHRvIHRyYWNrIHlldCBvciBlcnJvciBvY2N1cmVkXG4iKTsKKwkJcHJfZGVidWcoIm5vdCBwcmVwYXJlZCB0byB0cmFjayB5ZXQgb3IgZXJyb3Igb2NjdXJyZWRcbiIpOwogCQlORl9DVF9TVEFUX0lOQ19BVE9NSUMobmV0LCBlcnJvcik7CiAJCU5GX0NUX1NUQVRfSU5DX0FUT01JQyhuZXQsIGludmFsaWQpOwogCQlyZXQgPSAtcmV0OwpkaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fZGNjcC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fZGNjcC5jCmluZGV4IDlhZTU3YzUuLjJlNjY0YTYgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX2RjY3AuYworKysgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19kY2NwLmMKQEAgLTk4LDcgKzk4LDcgQEAKICNkZWZpbmUgc0lWCUNUX0RDQ1BfSU5WQUxJRAogCiAvKgotICogRENDUCBzdGF0ZSB0cmFuc2lzdGlvbiB0YWJsZQorICogRENDUCBzdGF0ZSB0cmFuc2l0aW9uIHRhYmxlCiAgKgogICogVGhlIGFzc3VtcHRpb24gaXMgdGhlIHNhbWUgYXMgZm9yIFRDUCB0cmFja2luZzoKICAqCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMKaW5kZXggNmY0ZWU3MC4uNjc3MmIxMSAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYwpAQCAtMTA3LDkgKzEwNyw5IEBACiAvKiBhYm9ydCAgICAgICAgKi8ge3NDTCwgc0NMLCBzQ0wsIHNDTCwgc0NMLCBzQ0wsIHNDTCwgc0NMfSwKIC8qIHNodXRkb3duICAgICAqLyB7c0NMLCBzQ0wsIHNDVywgc0NFLCBzU1MsIHNTUywgc1NSLCBzU0F9LAogLyogc2h1dGRvd25fYWNrICovIHtzU0EsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NBLCBzU0EsIHNTQX0sCi0vKiBlcnJvciAgICAgICAgKi8ge3NDTCwgc0NMLCBzQ1csIHNDRSwgc0VTLCBzU1MsIHNTUiwgc1NBfSwvKiBDYW50IGhhdmUgU3RhbGUgY29va2llKi8KKy8qIGVycm9yICAgICAgICAqLyB7c0NMLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzU0F9LC8qIENhbid0IGhhdmUgU3RhbGUgY29va2llKi8KIC8qIGNvb2tpZV9lY2hvICAqLyB7c0NMLCBzQ0wsIHNDRSwgc0NFLCBzRVMsIHNTUywgc1NSLCBzU0F9LC8qIDUuMi40IC0gQmlnIFRPRE8gKi8KLS8qIGNvb2tpZV9hY2sgICAqLyB7c0NMLCBzQ0wsIHNDVywgc0NFLCBzRVMsIHNTUywgc1NSLCBzU0F9LC8qIENhbnQgY29tZSBpbiBvcmlnIGRpciAqLworLyogY29va2llX2FjayAgICovIHtzQ0wsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NTLCBzU1IsIHNTQX0sLyogQ2FuJ3QgY29tZSBpbiBvcmlnIGRpciAqLwogLyogc2h1dGRvd25fY29tcCovIHtzQ0wsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NTLCBzU1IsIHNDTH0KIAl9LAogCXsKQEAgLTEyMSw3ICsxMjEsNyBAQAogLyogc2h1dGRvd24gICAgICovIHtzSVYsIHNDTCwgc0NXLCBzQ0UsIHNTUiwgc1NTLCBzU1IsIHNTQX0sCiAvKiBzaHV0ZG93bl9hY2sgKi8ge3NJViwgc0NMLCBzQ1csIHNDRSwgc0VTLCBzU0EsIHNTQSwgc1NBfSwKIC8qIGVycm9yICAgICAgICAqLyB7c0lWLCBzQ0wsIHNDVywgc0NMLCBzRVMsIHNTUywgc1NSLCBzU0F9LAotLyogY29va2llX2VjaG8gICovIHtzSVYsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NTLCBzU1IsIHNTQX0sLyogQ2FudCBjb21lIGluIHJlcGx5IGRpciAqLworLyogY29va2llX2VjaG8gICovIHtzSVYsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NTLCBzU1IsIHNTQX0sLyogQ2FuJ3QgY29tZSBpbiByZXBseSBkaXIgKi8KIC8qIGNvb2tpZV9hY2sgICAqLyB7c0lWLCBzQ0wsIHNDVywgc0VTLCBzRVMsIHNTUywgc1NSLCBzU0F9LAogLyogc2h1dGRvd25fY29tcCovIHtzSVYsIHNDTCwgc0NXLCBzQ0UsIHNFUywgc1NTLCBzU1IsIHNDTH0KIAl9CmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19zaXAuYyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jCmluZGV4IGJjZjQ3ZWIuLjIzN2NjMTkgMTAwNjQ0Ci0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jCisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3NpcC5jCkBAIC03MDcsNyArNzA3LDcgQEAKIH0KIAogLyogTG9jYXRlIGEgU0RQIGhlYWRlciAob3B0aW9uYWxseSBhIHN1YnN0cmluZyB3aXRoaW4gdGhlIGhlYWRlciB2YWx1ZSksCi0gKiBvcHRpb25hbGx5IHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgdGhlIHRlcm0gaGVhZGVyLCBwYXJzZQorICogb3B0aW9uYWxseSBzdG9wcGluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgdGVybSBoZWFkZXIsIHBhcnNlCiAgKiBpdCBhbmQgcmV0dXJuIHRoZSBvZmZzZXQgYW5kIGxlbmd0aCBvZiB0aGUgZGF0YSB3ZSdyZSBpbnRlcmVzdGVkIGluLgogICovCiBpbnQgY3Rfc2lwX2dldF9zZHBfaGVhZGVyKGNvbnN0IHN0cnVjdCBuZl9jb25uICpjdCwgY29uc3QgY2hhciAqZHB0ciwKZGlmZiAtLWdpdCBhL25ldC9uZXRmaWx0ZXIvbmZfcXVldWUuYyBiL25ldC9uZXRmaWx0ZXIvbmZfcXVldWUuYwppbmRleCA1YWIyMmUyLi41YjQ2NmNkIDEwMDY0NAotLS0gYS9uZXQvbmV0ZmlsdGVyL25mX3F1ZXVlLmMKKysrIGIvbmV0L25ldGZpbHRlci9uZl9xdWV1ZS5jCkBAIC0xMzQsNyArMTM0LDcgQEAKIAljb25zdCBzdHJ1Y3QgbmZfYWZpbmZvICphZmluZm87CiAJY29uc3Qgc3RydWN0IG5mX3F1ZXVlX2hhbmRsZXIgKnFoOwogCi0JLyogUVVFVUUgPT0gRFJPUCBpZiBub29uZSBpcyB3YWl0aW5nLCB0byBiZSBzYWZlLiAqLworCS8qIFFVRVVFID09IERST1AgaWYgbm8gb25lIGlzIHdhaXRpbmcsIHRvIGJlIHNhZmUuICovCiAJcmN1X3JlYWRfbG9jaygpOwogCiAJcWggPSByY3VfZGVyZWZlcmVuY2UocXVldWVfaGFuZGxlcltwZl0pOwpkaWZmIC0tZ2l0IGEvbmV0L25ldGxhYmVsL25ldGxhYmVsX2RvbWFpbmhhc2guYyBiL25ldC9uZXRsYWJlbC9uZXRsYWJlbF9kb21haW5oYXNoLmMKaW5kZXggZDM3YjdmOC4uZGUwZDhlNCAxMDA2NDQKLS0tIGEvbmV0L25ldGxhYmVsL25ldGxhYmVsX2RvbWFpbmhhc2guYworKysgYi9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfZG9tYWluaGFzaC5jCkBAIC0xMDksNyArMTA5LDcgQEAKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqIFRoaXMgaXMgdGhlIGhhc2hpbmcgZnVuY3Rpb24gZm9yIHRoZSBkb21haW4gaGFzaCB0YWJsZSwgaXQgcmV0dXJucyB0aGUKLSAqIGNvcnJlY3QgYnVja2V0IG51bWJlciBmb3IgdGhlIGRvbWFpbi4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2liaWxlIGZvcgorICogY29ycmVjdCBidWNrZXQgbnVtYmVyIGZvciB0aGUgZG9tYWluLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKICAqIGVuc3VyaW5nIHRoYXQgdGhlIGhhc2ggdGFibGUgaXMgcHJvdGVjdGVkIHdpdGggZWl0aGVyIGEgUkNVIHJlYWQgbG9jayBvciB0aGUKICAqIGhhc2ggdGFibGUgbG9jay4KICAqCkBAIC0xMzQsNyArMTM0LDcgQEAKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqIFNlYXJjaGVzIHRoZSBkb21haW4gaGFzaCB0YWJsZSBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGhhc2ggdGFibGUKLSAqIGVudHJ5IGlmIGZvdW5kLCBvdGhlcndpc2UgTlVMTCBpcyByZXR1cm5lZC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2liaWxlIGZvcgorICogZW50cnkgaWYgZm91bmQsIG90aGVyd2lzZSBOVUxMIGlzIHJldHVybmVkLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IKICAqIGVuc3VyaW5nIHRoYXQgdGhlIGhhc2ggdGFibGUgaXMgcHJvdGVjdGVkIHdpdGggZWl0aGVyIGEgUkNVIHJlYWQgbG9jayBvciB0aGUKICAqIGhhc2ggdGFibGUgbG9jay4KICAqCkBAIC0xNjUsNyArMTY1LDcgQEAKICAqIFNlYXJjaGVzIHRoZSBkb21haW4gaGFzaCB0YWJsZSBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGhhc2ggdGFibGUKICAqIGVudHJ5IGlmIGFuIGV4YWN0IG1hdGNoIGlzIGZvdW5kLCBpZiBhbiBleGFjdCBtYXRjaCBpcyBub3QgcHJlc2VudCBpbiB0aGUKICAqIGhhc2ggdGFibGUgdGhlbiB0aGUgZGVmYXVsdCBlbnRyeSBpcyByZXR1cm5lZCBpZiB2YWxpZCBvdGhlcndpc2UgTlVMTCBpcwotICogcmV0dXJuZWQuICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmlsZSBlbnN1cmluZyB0aGF0IHRoZSBoYXNoIHRhYmxlIGlzCisgKiByZXR1cm5lZC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZW5zdXJpbmcgdGhhdCB0aGUgaGFzaCB0YWJsZSBpcwogICogcHJvdGVjdGVkIHdpdGggZWl0aGVyIGEgUkNVIHJlYWQgbG9jayBvciB0aGUgaGFzaCB0YWJsZSBsb2NrLgogICoKICAqLwpAQCAtMTkzLDcgKzE5Myw3IEBACiAgKgogICogRGVzY3JpcHRpb246CiAgKiBHZW5lcmF0ZSBhbiBhdWRpdCByZWNvcmQgZm9yIGFkZGluZyBhIG5ldyBOZXRMYWJlbC9MU00gbWFwcGluZyBlbnRyeSB3aXRoCi0gKiB0aGUgZ2l2ZW4gaW5mb3JtYXRpb24uICBDYWxsZXIgaXMgcmVzcG9uc2liaWxlIGZvciBob2xkaW5nIHRoZSBuZWNlc3NhcnkKKyAqIHRoZSBnaXZlbiBpbmZvcm1hdGlvbi4gIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaG9sZGluZyB0aGUgbmVjZXNzYXJ5CiAgKiBsb2Nrcy4KICAqCiAgKi8KQEAgLTYwNSw3ICs2MDUsNyBAQAogICoKICAqIERlc2NyaXB0aW9uOgogICogTG9vayB0aHJvdWdoIHRoZSBkb21haW4gaGFzaCB0YWJsZSBzZWFyY2hpbmcgZm9yIGFuIGVudHJ5IHRvIG1hdGNoIEBkb21haW4sCi0gKiByZXR1cm4gYSBwb2ludGVyIHRvIGEgY29weSBvZiB0aGUgZW50cnkgb3IgTlVMTC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2liaWxlCisgKiByZXR1cm4gYSBwb2ludGVyIHRvIGEgY29weSBvZiB0aGUgZW50cnkgb3IgTlVMTC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKICAqIGZvciBlbnN1cmluZyB0aGF0IHJjdV9yZWFkX1t1bl1sb2NrKCkgaXMgY2FsbGVkLgogICoKICAqLwpkaWZmIC0tZ2l0IGEvbmV0L25ldGxhYmVsL25ldGxhYmVsX21nbXQuYyBiL25ldC9uZXRsYWJlbC9uZXRsYWJlbF9tZ210LmMKaW5kZXggOTk4ZTg1ZS4uNGYyNTFiMSAxMDA2NDQKLS0tIGEvbmV0L25ldGxhYmVsL25ldGxhYmVsX21nbXQuYworKysgYi9uZXQvbmV0bGFiZWwvbmV0bGFiZWxfbWdtdC5jCkBAIC0yNTksNyArMjU5LDcgQEAKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqIFRoaXMgZnVuY3Rpb24gaXMgYSBoZWxwZXIgZnVuY3Rpb24gdXNlZCBieSB0aGUgTElTVEFMTCBhbmQgTElTVERFRiBjb21tYW5kCi0gKiBoYW5kbGVycy4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2liaWxlIGZvciBlbnN1cmluZyB0aGF0IHRoZSBSQ1UgcmVhZCBsb2NrCisgKiBoYW5kbGVycy4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoYXQgdGhlIFJDVSByZWFkIGxvY2sKICAqIGlzIGhlbGQuICBSZXR1cm5zIHplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgdmFsdWVzIG9uIGZhaWx1cmUuCiAgKgogICovCmRpZmYgLS1naXQgYS9uZXQvcmRzL2liX3NlbmQuYyBiL25ldC9yZHMvaWJfc2VuZC5jCmluZGV4IGM0N2E1MTEuLjdjNGRjZTggMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaWJfc2VuZC5jCisrKyBiL25ldC9yZHMvaWJfc2VuZC5jCkBAIC0zNTUsNyArMzU1LDcgQEAKICAqCiAgKiBDb25jZXB0dWFsbHksIHdlIGhhdmUgdHdvIGNvdW50ZXJzOgogICogIC0Jc2VuZCBjcmVkaXRzOiB0aGlzIHRlbGxzIHVzIGhvdyBtYW55IFdScyB3ZSdyZSBhbGxvd2VkCi0gKgl0byBzdWJtaXQgd2l0aG91dCBvdmVycnVuaW5nIHRoZSByZWNpZXZlcidzIHF1ZXVlLiBGb3IKKyAqCXRvIHN1Ym1pdCB3aXRob3V0IG92ZXJydW5pbmcgdGhlIHJlY2VpdmVyJ3MgcXVldWUuIEZvcgogICoJZWFjaCBTRU5EIFdSIHdlIHBvc3QsIHdlIGRlY3JlbWVudCB0aGlzIGJ5IG9uZS4KICAqCiAgKiAgLQlwb3N0ZWQgY3JlZGl0czogdGhpcyB0ZWxscyB1cyBob3cgbWFueSBXUnMgd2UgcmVjZW50bHkKZGlmZiAtLWdpdCBhL25ldC9yZHMvaXdfY20uYyBiL25ldC9yZHMvaXdfY20uYwppbmRleCA3MTJjZjJkLi4zYTYwYTE1IDEwMDY0NAotLS0gYS9uZXQvcmRzL2l3X2NtLmMKKysrIGIvbmV0L3Jkcy9pd19jbS5jCkBAIC0xODEsNyArMTgxLDcgQEAKIAl1bnNpZ25lZCBpbnQgc2VuZF9zaXplLCByZWN2X3NpemU7CiAJaW50IHJldDsKIAotCS8qIFRoZSBvZmZzZXQgb2YgMSBpcyB0byBhY2NvbW9kYXRlIHRoZSBhZGRpdGlvbmFsIEFDSyBXUi4gKi8KKwkvKiBUaGUgb2Zmc2V0IG9mIDEgaXMgdG8gYWNjb21tb2RhdGUgdGhlIGFkZGl0aW9uYWwgQUNLIFdSLiAqLwogCXNlbmRfc2l6ZSA9IG1pbl90KHVuc2lnbmVkIGludCwgcmRzX2l3ZGV2LT5tYXhfd3JzLCByZHNfaXdfc3lzY3RsX21heF9zZW5kX3dyICsgMSk7CiAJcmVjdl9zaXplID0gbWluX3QodW5zaWduZWQgaW50LCByZHNfaXdkZXYtPm1heF93cnMsIHJkc19pd19zeXNjdGxfbWF4X3JlY3Zfd3IgKyAxKTsKIAlyZHNfaXdfcmluZ19yZXNpemUoc2VuZF9yaW5nLCBzZW5kX3NpemUgLSAxKTsKZGlmZiAtLWdpdCBhL25ldC9yZHMvaXdfcmRtYS5jIGIvbmV0L3Jkcy9pd19yZG1hLmMKaW5kZXggNTk1MDllOS4uNmRlYWE3NyAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9pd19yZG1hLmMKKysrIGIvbmV0L3Jkcy9pd19yZG1hLmMKQEAgLTEyMiw3ICsxMjIsNyBAQAogI2Vsc2UKIAkJCS8qIEZJWE1FIC0gbmVlZHMgdG8gY29tcGFyZSB0aGUgbG9jYWwgYW5kIHJlbW90ZQogCQkJICogaXBhZGRyL3BvcnQgdHVwbGUsIGJ1dCB0aGUgaXBhZGRyIGlzIHRoZSBvbmx5Ci0JCQkgKiBhdmFpbGFibGUgaW5mb21hdGlvbiBpbiB0aGUgcmRzX3NvY2sgKGFzIHRoZSByZXN0IGFyZQorCQkJICogYXZhaWxhYmxlIGluZm9ybWF0aW9uIGluIHRoZSByZHNfc29jayAoYXMgdGhlIHJlc3QgYXJlCiAJCQkgKiB6ZXJvJ2VkLiAgSXQgZG9lc24ndCBhcHBlYXIgdG8gYmUgcHJvcGVybHkgcG9wdWxhdGVkCiAJCQkgKiBkdXJpbmcgY29ubmVjdGlvbiBzZXR1cC4uLgogCQkJICovCmRpZmYgLS1naXQgYS9uZXQvcmRzL2l3X3NlbmQuYyBiL25ldC9yZHMvaXdfc2VuZC5jCmluZGV4IDYyODBlYTAuLjU0NWQ4ZWUgMTAwNjQ0Ci0tLSBhL25ldC9yZHMvaXdfc2VuZC5jCisrKyBiL25ldC9yZHMvaXdfc2VuZC5jCkBAIC0zMDcsNyArMzA3LDcgQEAKICAqCiAgKiBDb25jZXB0dWFsbHksIHdlIGhhdmUgdHdvIGNvdW50ZXJzOgogICogIC0Jc2VuZCBjcmVkaXRzOiB0aGlzIHRlbGxzIHVzIGhvdyBtYW55IFdScyB3ZSdyZSBhbGxvd2VkCi0gKgl0byBzdWJtaXQgd2l0aG91dCBvdmVycnVuaW5nIHRoZSByZWNpZXZlcidzIHF1ZXVlLiBGb3IKKyAqCXRvIHN1Ym1pdCB3aXRob3V0IG92ZXJydW5pbmcgdGhlIHJlY2VpdmVyJ3MgcXVldWUuIEZvcgogICoJZWFjaCBTRU5EIFdSIHdlIHBvc3QsIHdlIGRlY3JlbWVudCB0aGlzIGJ5IG9uZS4KICAqCiAgKiAgLQlwb3N0ZWQgY3JlZGl0czogdGhpcyB0ZWxscyB1cyBob3cgbWFueSBXUnMgd2UgcmVjZW50bHkKZGlmZiAtLWdpdCBhL25ldC9yZHMvc2VuZC5jIGIvbmV0L3Jkcy9zZW5kLmMKaW5kZXggMzViOWMyZS4uZDU4YWU1ZiAxMDA2NDQKLS0tIGEvbmV0L3Jkcy9zZW5kLmMKKysrIGIvbmV0L3Jkcy9zZW5kLmMKQEAgLTExNiw3ICsxMTYsNyBAQAogfQogCiAvKgotICogV2UncmUgbWFraW5nIHRoZSBjb25jaW91cyB0cmFkZS1vZmYgaGVyZSB0byBvbmx5IHNlbmQgb25lIG1lc3NhZ2UKKyAqIFdlJ3JlIG1ha2luZyB0aGUgY29uc2Npb3VzIHRyYWRlLW9mZiBoZXJlIHRvIG9ubHkgc2VuZCBvbmUgbWVzc2FnZQogICogZG93biB0aGUgY29ubmVjdGlvbiBhdCBhIHRpbWUuCiAgKiAgIFBybzoKICAqICAgICAgLSB0eCBxdWV1ZWluZyBpcyBhIHNpbXBsZSBmaWZvIGxpc3QKZGlmZiAtLWdpdCBhL25ldC9yb3NlL3Jvc2Vfcm91dGUuYyBiL25ldC9yb3NlL3Jvc2Vfcm91dGUuYwppbmRleCAwOGRjZDJmLi40NzljYWU1IDEwMDY0NAotLS0gYS9uZXQvcm9zZS9yb3NlX3JvdXRlLmMKKysrIGIvbmV0L3Jvc2Uvcm9zZV9yb3V0ZS5jCkBAIC01ODcsNyArNTg3LDcgQEAKIAogLyoKICAqCUNoZWNrIHRoYXQgdGhlIGRldmljZSBnaXZlbiBpcyBhIHZhbGlkIEFYLjI1IGludGVyZmFjZSB0aGF0IGlzICJ1cCIuCi0gKiAJY2FsbGVkIHdoaXRoIFJUTkwKKyAqIAljYWxsZWQgd2l0aCBSVE5MCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgbmV0X2RldmljZSAqcm9zZV9heDI1X2Rldl9maW5kKGNoYXIgKmRldm5hbWUpCiB7CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvYWN0X2FwaS5jIGIvbmV0L3NjaGVkL2FjdF9hcGkuYwppbmRleCAxNTg3M2UxLi4xNGI0MmY0IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X2FwaS5jCisrKyBiL25ldC9zY2hlZC9hY3RfYXBpLmMKQEAgLTk5OSw3ICs5OTksNyBAQAogCXN3aXRjaCAobi0+bmxtc2dfdHlwZSkgewogCWNhc2UgUlRNX05FV0FDVElPTjoKIAkJLyogd2UgYXJlIGdvaW5nIHRvIGFzc3VtZSBhbGwgb3RoZXIgZmxhZ3MKLQkJICogaW1wbHkgY3JlYXRlIG9ubHkgaWYgaXQgZG9lc250IGV4aXN0CisJCSAqIGltcGx5IGNyZWF0ZSBvbmx5IGlmIGl0IGRvZXNuJ3QgZXhpc3QKIAkJICogTm90ZSB0aGF0IENSRUFURSB8IEVYQ0wgaW1wbGllcyB0aGF0CiAJCSAqIGJ1dCBzaW5jZSB3ZSB3YW50IGF2b2lkIGFtYmlndWl0eSAoZWcgd2hlbiBmbGFncwogCQkgKiBpcyB6ZXJvKSB0aGVuIGp1c3Qgc2V0IHRoaXMKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9hY3RfcGVkaXQuYyBiL25ldC9zY2hlZC9hY3RfcGVkaXQuYwppbmRleCA1MGM3YzA2Li43YWZmZTlhIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvYWN0X3BlZGl0LmMKKysrIGIvbmV0L3NjaGVkL2FjdF9wZWRpdC5jCkBAIC0xNjEsNyArMTYxLDcgQEAKIAkJCX0KIAkJCWlmIChvZmZzZXQgPiAwICYmIG9mZnNldCA+IHNrYi0+bGVuKSB7CiAJCQkJcHJfaW5mbygidGMgZmlsdGVyIHBlZGl0IgotCQkJCQkiIG9mZnNldCAlZCBjYW50IGV4Y2VlZCBwa3QgbGVuZ3RoICVkXG4iLAorCQkJCQkiIG9mZnNldCAlZCBjYW4ndCBleGNlZWQgcGt0IGxlbmd0aCAlZFxuIiwKIAkJCQkgICAgICAgb2Zmc2V0LCBza2ItPmxlbik7CiAJCQkJZ290byBiYWQ7CiAJCQl9CmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvZW1fbWV0YS5jIGIvbmV0L3NjaGVkL2VtX21ldGEuYwppbmRleCBhNGRlNjdlLi40OTEzMGU4IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvZW1fbWV0YS5jCisrKyBiL25ldC9zY2hlZC9lbV9tZXRhLmMKQEAgLTQ3LDcgKzQ3LDcgQEAKICAqIAlvbiB0aGUgbWV0YSB0eXBlLiBPYnZpb3VzbHksIHRoZSBsZW5ndGggb2YgdGhlIGRhdGEgbXVzdCBhbHNvCiAgKiAJYmUgcHJvdmlkZWQgZm9yIG5vbi1udW1lcmljIHR5cGVzLgogICoKLSAqIAlBZGRpdGlvbmFseSwgdHlwZSBkZXBlbmRhbnQgbW9kaWZpZXJzIHN1Y2ggYXMgc2hpZnQgb3BlcmF0b3JzCisgKiAJQWRkaXRpb25hbGx5LCB0eXBlIGRlcGVuZGVudCBtb2RpZmllcnMgc3VjaCBhcyBzaGlmdCBvcGVyYXRvcnMKICAqIAlvciBtYXNrIG1heSBiZSBhcHBsaWVkIHRvIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl5LiBBcyBvZiBub3csCiAgKiAJdGhlIHZhcmlhYmxlIGxlbmd0aCB0eXBlIHN1cHBvcnRzIHNoaWZ0aW5nIHRoZSBieXRlIHN0cmluZyB0bwogICogCXRoZSByaWdodCwgZWF0aW5nIHVwIGFueSBudW1iZXIgb2Ygb2N0ZXRzIGFuZCB0aHVzIHN1cHBvcnRpbmcKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9zY2hfaHRiLmMgYi9uZXQvc2NoZWQvc2NoX2h0Yi5jCmluZGV4IGUxNDI5YTguLjI5Yjk0MmMgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9zY2hfaHRiLmMKKysrIGIvbmV0L3NjaGVkL3NjaF9odGIuYwpAQCAtMTgzLDcgKzE4Myw3IEBACiAgKiBmaWx0ZXJzIGluIHFkaXNjIGFuZCBpbiBpbm5lciBub2RlcyAoaWYgaGlnaGVyIGZpbHRlciBwb2ludHMgdG8gdGhlIGlubmVyCiAgKiBub2RlKS4gSWYgd2UgZW5kIHVwIHdpdGggY2xhc3NpZCBNQUpPUjowIHdlIGVucXVldWUgdGhlIHNrYiBpbnRvIHNwZWNpYWwKICAqIGludGVybmFsIGZpZm8gKGRpcmVjdCkuIFRoZXNlIHBhY2tldHMgdGhlbiBnbyBkaXJlY3RseSB0aHJ1LiBJZiB3ZSBzdGlsbAotICogaGF2ZSBubyB2YWxpZCBsZWFmIHdlIHRyeSB0byB1c2UgTUFKT1I6ZGVmYXVsdCBsZWFmLiBJdCBzdGlsbCB1bnN1Y2Nlc3NmdWxsCisgKiBoYXZlIG5vIHZhbGlkIGxlYWYgd2UgdHJ5IHRvIHVzZSBNQUpPUjpkZWZhdWx0IGxlYWYuIEl0IHN0aWxsIHVuc3VjY2Vzc2Z1bAogICogdGhlbiBmaW5pc2ggYW5kIHJldHVybiBkaXJlY3QgcXVldWUuCiAgKi8KICNkZWZpbmUgSFRCX0RJUkVDVCAoKHN0cnVjdCBodGJfY2xhc3MgKiktMUwpCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvc2NoX25ldGVtLmMgYi9uZXQvc2NoZWQvc2NoX25ldGVtLmMKaW5kZXggZWRiYmY3YS4uNjljMzVmNiAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL3NjaF9uZXRlbS5jCisrKyBiL25ldC9zY2hlZC9zY2hfbmV0ZW0uYwpAQCAtMTYwLDcgKzE2MCw3IEBACiAJdTMyIHJuZCA9IG5ldF9yYW5kb20oKTsKIAogCS8qCi0JICogTWFrZXMgYSBjb21wYXJpc2lvbiBiZXR3ZWVuIHJuZCBhbmQgdGhlIHRyYW5zaXRpb24KKwkgKiBNYWtlcyBhIGNvbXBhcmlzb24gYmV0d2VlbiBybmQgYW5kIHRoZSB0cmFuc2l0aW9uCiAJICogcHJvYmFiaWxpdGllcyBvdXRnb2luZyBmcm9tIHRoZSBjdXJyZW50IHN0YXRlLCB0aGVuIGRlY2lkZXMgdGhlCiAJICogbmV4dCBzdGF0ZSBhbmQgaWYgdGhlIG5leHQgcGFja2V0IGhhcyB0byBiZSB0cmFuc21pdHRlZCBvciBsb3N0LgogCSAqIFRoZSBmb3VyIHN0YXRlcyBjb3JyZXNwb25kIHRvOgpAQCAtMjEyLDkgKzIxMiw5IEBACiAgKiBHZW5lcmF0ZXMgbG9zc2VzIGFjY29yZGluZyB0byB0aGUgR2lsYmVydC1FbGxpb3QgbG9zcyBtb2RlbCBvcgogICogaXRzIHNwZWNpYWwgY2FzZXMgIChHaWxiZXJ0IG9yIFNpbXBsZSBHaWxiZXJ0KQogICoKLSAqIE1ha2VzIGEgY29tcGFyaXNpb24gYmV0d2VlbiByYW5kb20gbnVtYmVyIGFuZCB0aGUgdHJhbnNpdGlvbgorICogTWFrZXMgYSBjb21wYXJpc29uIGJldHdlZW4gcmFuZG9tIG51bWJlciBhbmQgdGhlIHRyYW5zaXRpb24KICAqIHByb2JhYmlsaXRpZXMgb3V0Z29pbmcgZnJvbSB0aGUgY3VycmVudCBzdGF0ZSwgdGhlbiBkZWNpZGVzIHRoZQotICogbmV4dCBzdGF0ZS4gQSBzZWNvbmQgcmFuZG9tIG51bWJlciBpcyBleHRyYWN0ZWQgYW5kIHRoZSBjb21wYXJpc2lvbgorICogbmV4dCBzdGF0ZS4gQSBzZWNvbmQgcmFuZG9tIG51bWJlciBpcyBleHRyYWN0ZWQgYW5kIHRoZSBjb21wYXJpc29uCiAgKiB3aXRoIHRoZSBsb3NzIHByb2JhYmlsaXR5IG9mIHRoZSBjdXJyZW50IHN0YXRlIGRlY2lkZXMgaWYgdGhlIG5leHQKICAqIHBhY2tldCB3aWxsIGJlIHRyYW5zbWl0dGVkIG9yIGxvc3QuCiAgKi8KZGlmZiAtLWdpdCBhL25ldC9zY3RwL2Fzc29jaW9sYS5jIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKaW5kZXggNmIwNDI4Ny4uMDY5OGNhZCAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvYXNzb2Npb2xhLmMKKysrIGIvbmV0L3NjdHAvYXNzb2Npb2xhLmMKQEAgLTE1OTMsNyArMTU5Myw3IEBACiAJc3RydWN0IHNjdHBfY2h1bmsgKmFjazsKIAlzdHJ1Y3Qgc2N0cF9jaHVuayAqdG1wOwogCi0JLyogV2UgY2FuIHJlbW92ZSBhbGwgdGhlIGVudHJpZXMgZnJvbSB0aGUgcXVldWUgdXB0bworCS8qIFdlIGNhbiByZW1vdmUgYWxsIHRoZSBlbnRyaWVzIGZyb20gdGhlIHF1ZXVlIHVwIHRvCiAJICogdGhlICJQZWVyLVNlcXVlbmNlLU51bWJlciIuCiAJICovCiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKGFjaywgdG1wLCAmYXNvYy0+YXNjb25mX2Fja19saXN0LApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvYXV0aC5jIGIvbmV0L3NjdHAvYXV0aC5jCmluZGV4IGRkYmJmN2MuLjg2NWU2OGYgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2F1dGguYworKysgYi9uZXQvc2N0cC9hdXRoLmMKQEAgLTExMyw3ICsxMTMsNyBAQAogCXJldHVybiBuZXc7CiB9CiAKLS8qIEZyZWUgdGhlIHNoYXJlZCBrZXkgc3R1Y3R1cmUgKi8KKy8qIEZyZWUgdGhlIHNoYXJlZCBrZXkgc3RydWN0dXJlICovCiBzdGF0aWMgdm9pZCBzY3RwX2F1dGhfc2hrZXlfZnJlZShzdHJ1Y3Qgc2N0cF9zaGFyZWRfa2V5ICpzaF9rZXkpCiB7CiAJQlVHX09OKCFsaXN0X2VtcHR5KCZzaF9rZXktPmtleV9saXN0KSk7CkBAIC0xMjIsNyArMTIyLDcgQEAKIAlrZnJlZShzaF9rZXkpOwogfQogCi0vKiBEZXN0b3J5IHRoZSBlbnRpcmUga2V5IGxpc3QuICBUaGlzIGlzIGRvbmUgZHVyaW5nIHRoZQorLyogRGVzdHJveSB0aGUgZW50aXJlIGtleSBsaXN0LiAgVGhpcyBpcyBkb25lIGR1cmluZyB0aGUKICAqIGFzc29jaW9uIGFuZCBlbmRwb2ludCBmcmVlIHByb2Nlc3MuCiAgKi8KIHZvaWQgc2N0cF9hdXRoX2Rlc3Ryb3lfa2V5cyhzdHJ1Y3QgbGlzdF9oZWFkICprZXlzKQpAQCAtMzI0LDcgKzMyNCw3IEBACiAJaWYgKCFwZWVyX2tleV92ZWN0b3IgfHwgIWxvY2FsX2tleV92ZWN0b3IpCiAJCWdvdG8gb3V0OwogCi0JLyogRmlndXJlIG91dCB0aGUgb3JkZXIgaW4gd2ljaCB0aGUga2V5X3ZlY3RvcnMgd2lsbCBiZQorCS8qIEZpZ3VyZSBvdXQgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBrZXlfdmVjdG9ycyB3aWxsIGJlCiAJICogYWRkZWQgdG8gdGhlIGVuZHBvaW50IHNoYXJlZCBrZXkuCiAJICogU0NUUC1BVVRILCBTZWN0aW9uIDYuMToKIAkgKiAgIFRoaXMgaXMgcGVyZm9ybWVkIGJ5IHNlbGVjdGluZyB0aGUgbnVtZXJpY2FsbHkgc21hbGxlciBrZXkKZGlmZiAtLWdpdCBhL25ldC9zY3RwL2lucHV0LmMgYi9uZXQvc2N0cC9pbnB1dC5jCmluZGV4IDgyNjY2MWIuLjU0MzZjNjkgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL2lucHV0LmMKKysrIGIvbmV0L3NjdHAvaW5wdXQuYwpAQCAtMTAzNCw3ICsxMDM0LDcgQEAKICogICAgYXNzb2NpYXRpb24uCiAqCiAqIFRoaXMgbWVhbnMgdGhhdCBhbnkgY2h1bmtzIHRoYXQgY2FuIGhlbHAgdXMgaWRlbnRpZnkgdGhlIGFzc29jaWF0aW9uIG5lZWQKLSogdG8gYmUgbG9va2VkIGF0IHRvIGZpbmQgdGhpcyBhc3NvY2F0aW9uLgorKiB0byBiZSBsb29rZWQgYXQgdG8gZmluZCB0aGlzIGFzc29jaWF0aW9uLgogKi8KIHN0YXRpYyBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqX19zY3RwX3Jjdl93YWxrX2xvb2t1cChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLAogCQkJCSAgICAgIGNvbnN0IHVuaW9uIHNjdHBfYWRkciAqbGFkZHIsCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9vdXRwdXQuYyBiL25ldC9zY3RwL291dHB1dC5jCmluZGV4IDYwNjAwZDMuLmI0ZjNjZjAgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL291dHB1dC5jCisrKyBiL25ldC9zY3RwL291dHB1dC5jCkBAIC01MTAsNyArNTEwLDcgQEAKIAkJc2gtPmNoZWNrc3VtID0gc2N0cF9lbmRfY2tzdW0oY3JjMzIpOwogCX0gZWxzZSB7CiAJCWlmIChkc3QtPmRldi0+ZmVhdHVyZXMgJiBORVRJRl9GX1NDVFBfQ1NVTSkgewotCQkJLyogbm8gbmVlZCB0byBzZWVkIHBzdWVkbyBjaGVja3N1bSBmb3IgU0NUUCAqLworCQkJLyogbm8gbmVlZCB0byBzZWVkIHBzZXVkbyBjaGVja3N1bSBmb3IgU0NUUCAqLwogCQkJbnNrYi0+aXBfc3VtbWVkID0gQ0hFQ0tTVU1fUEFSVElBTDsKIAkJCW5za2ItPmNzdW1fc3RhcnQgPSAoc2tiX3RyYW5zcG9ydF9oZWFkZXIobnNrYikgLQogCQkJICAgICAgICAgICAgICAgICAgICBuc2tiLT5oZWFkKTsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL291dHF1ZXVlLmMgYi9uZXQvc2N0cC9vdXRxdWV1ZS5jCmluZGV4IDI2ZGMwMDUxLi5iZjkyYTViIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9vdXRxdWV1ZS5jCisrKyBiL25ldC9zY3RwL291dHF1ZXVlLmMKQEAgLTE3NywxMyArMTc3LDEzIEBACiAgKiAzKSBJZiB0aGUgbWlzc2luZyByZXBvcnQgY291bnQgZm9yIFRTTiB0IGlzIHRvIGJlCiAgKiBpbmNyZW1lbnRlZCBhY2NvcmRpbmcgdG8gW1JGQzI5NjBdIGFuZAogICogW1NDVFBfU1RFV0FSVC0yMDAyXSwgYW5kIENIQU5HRU9WRVJfQUNUSVZFIGlzIHNldCwKLSAqIHRoZW4gdGhlIHNlbmRlciBNVVNUIGZ1dGhlciBleGVjdXRlIHN0ZXBzIDMuMSBhbmQKKyAqIHRoZW4gdGhlIHNlbmRlciBNVVNUIGZ1cnRoZXIgZXhlY3V0ZSBzdGVwcyAzLjEgYW5kCiAgKiAzLjIgdG8gZGV0ZXJtaW5lIGlmIHRoZSBtaXNzaW5nIHJlcG9ydCBjb3VudCBmb3IKICAqIFRTTiB0IFNIT1VMRCBOT1QgYmUgaW5jcmVtZW50ZWQuCiAgKgogICogMy4zKSBJZiAzLjEgYW5kIDMuMiBkbyBub3QgZGljdGF0ZSB0aGF0IHRoZSBtaXNzaW5nCiAgKiByZXBvcnQgY291bnQgZm9yIHQgc2hvdWxkIG5vdCBiZSBpbmNyZW1lbnRlZCwgdGhlbgotICogdGhlIHNlbmRlciBTT1VMRCBpbmNyZW1lbnQgbWlzc2luZyByZXBvcnQgY291bnQgZm9yCisgKiB0aGUgc2VuZGVyIFNIT1VMRCBpbmNyZW1lbnQgbWlzc2luZyByZXBvcnQgY291bnQgZm9yCiAgKiB0IChhY2NvcmRpbmcgdG8gW1JGQzI5NjBdIGFuZCBbU0NUUF9TVEVXQVJUXzIwMDJdKS4KICAqLwogc3RhdGljIGlubGluZSBpbnQgc2N0cF9jYWNjX3NraXAoc3RydWN0IHNjdHBfdHJhbnNwb3J0ICpwcmltYXJ5LApAQCAtODQzLDcgKzg0Myw3IEBACiAJCWNhc2UgU0NUUF9DSURfRUNOX0NXUjoKIAkJY2FzZSBTQ1RQX0NJRF9BU0NPTkZfQUNLOgogCQkJb25lX3BhY2tldCA9IDE7Ci0JCQkvKiBGYWxsIHRocm91Z2h0ICovCisJCQkvKiBGYWxsIHRocm91Z2ggKi8KIAogCQljYXNlIFNDVFBfQ0lEX1NBQ0s6CiAJCWNhc2UgU0NUUF9DSURfSEVBUlRCRUFUOgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jIGIvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jCmluZGV4IGIyMWIyMTguLjVmODZlZTRiIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9zaWRlZWZmZWN0LmMKKysrIGIvbmV0L3NjdHAvc21fc2lkZWVmZmVjdC5jCkBAIC00ODIsNyArNDgyLDcgQEAKIAkgKiBJZiB0aGUgdGltZXIgd2FzIGEgaGVhcnRiZWF0LCB3ZSBvbmx5IGluY3JlbWVudCBlcnJvciBjb3VudHMKIAkgKiB3aGVuIHdlIGFscmVhZHkgaGF2ZSBhbiBvdXRzdGFuZGluZyBIRUFSVEJFQVQgdGhhdCBoYXMgbm90CiAJICogYmVlbiBhY2tub3dsZWRnZWQuCi0JICogQWRkaXRpb25hbHksIHNvbWUgdHJhbnBvcnQgc3RhdGVzIGluaGliaXQgZXJyb3IgaW5jcmVtZW50cy4KKwkgKiBBZGRpdGlvbmFsbHksIHNvbWUgdHJhbnBvcnQgc3RhdGVzIGluaGliaXQgZXJyb3IgaW5jcmVtZW50cy4KIAkgKi8KIAlpZiAoIWlzX2hiKSB7CiAJCWFzb2MtPm92ZXJhbGxfZXJyb3JfY291bnQrKzsKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKaW5kZXggNGI0ZWI3Yy4uNzY3OTIwOCAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKQEAgLTU1MSw3ICs1NTEsNyBAQAogCQkgKgogCQkgKiBUaGlzIG1lYW5zIHRoYXQgaWYgd2Ugb25seSB3YW50IHRvIGFib3J0IGFzc29jaWF0aW9ucwogCQkgKiBpbiBhbiBhdXRoZW50aWNhdGVkIHdheSAoaS5lIEFVVEgrQUJPUlQpLCB0aGVuIHdlCi0JCSAqIGNhbid0IGRlc3Ryb3kgdGhpcyBhc3NvY2lhdGlvbiBqdXN0IGJlY3Vhc2UgdGhlIHBhY2tldAorCQkgKiBjYW4ndCBkZXN0cm95IHRoaXMgYXNzb2NpYXRpb24ganVzdCBiZWNhdXNlIHRoZSBwYWNrZXQKIAkJICogd2FzIG1hbGZvcm1lZC4KIAkJICovCiAJCWlmIChzY3RwX2F1dGhfcmVjdl9jaWQoU0NUUF9DSURfQUJPUlQsIGFzb2MpKQpAQCAtMTU0Niw3ICsxNTQ2LDcgQEAKIH0KIAogLyoKLSAqIEhhbmRsZSBzaW11bHRhbm91cyBJTklULgorICogSGFuZGxlIHNpbXVsdGFuZW91cyBJTklULgogICogVGhpcyBtZWFucyB3ZSBzdGFydGVkIGFuIElOSVQgYW5kIHRoZW4gd2UgZ290IGFuIElOSVQgcmVxdWVzdCBmcm9tCiAgKiBvdXIgcGVlci4KICAqCkBAIC0yMDc5LDcgKzIwNzksNyBAQAogCSAqIFJGQyAyOTYwLCBTZWN0aW9uIDMuMy43CiAJICogICAgSWYgYW4gZW5kcG9pbnQgcmVjZWl2ZXMgYW4gQUJPUlQgd2l0aCBhIGZvcm1hdCBlcnJvciBvciBmb3IgYW4KIAkgKiAgICBhc3NvY2lhdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QsIGl0IE1VU1Qgc2lsZW50bHkgZGlzY2FyZCBpdC4KLQkgKiBCZWNhc3VlIHRoZSBsZW5ndGggaXMgImludmFsaWQiLCB3ZSBjYW4ndCByZWFsbHkgZGlzY2FyZCBqdXN0CisJICogQmVjYXVzZSB0aGUgbGVuZ3RoIGlzICJpbnZhbGlkIiwgd2UgY2FuJ3QgcmVhbGx5IGRpc2NhcmQganVzdAogCSAqIGFzIHdlIGRvIG5vdCBrbm93IGl0cyB0cnVlIGxlbmd0aC4gIFNvLCB0byBiZSBzYWZlLCBkaXNjYXJkIHRoZQogCSAqIHBhY2tldC4KIAkgKi8KQEAgLTIxMjAsNyArMjEyMCw3IEBACiAJICogUkZDIDI5NjAsIFNlY3Rpb24gMy4zLjcKIAkgKiAgICBJZiBhbiBlbmRwb2ludCByZWNlaXZlcyBhbiBBQk9SVCB3aXRoIGEgZm9ybWF0IGVycm9yIG9yIGZvciBhbgogCSAqICAgIGFzc29jaWF0aW9uIHRoYXQgZG9lc24ndCBleGlzdCwgaXQgTVVTVCBzaWxlbnRseSBkaXNjYXJkIGl0LgotCSAqIEJlY2FzdWUgdGhlIGxlbmd0aCBpcyAiaW52YWxpZCIsIHdlIGNhbid0IHJlYWxseSBkaXNjYXJkIGp1c3QKKwkgKiBCZWNhdXNlIHRoZSBsZW5ndGggaXMgImludmFsaWQiLCB3ZSBjYW4ndCByZWFsbHkgZGlzY2FyZCBqdXN0CiAJICogYXMgd2UgZG8gbm90IGtub3cgaXRzIHRydWUgbGVuZ3RoLiAgU28sIHRvIGJlIHNhZmUsIGRpc2NhcmQgdGhlCiAJICogcGFja2V0LgogCSAqLwpAQCAtMjM4MSw3ICsyMzgxLDcgQEAKIAkgKiBSRkMgMjk2MCwgU2VjdGlvbiAzLjMuNwogCSAqICAgIElmIGFuIGVuZHBvaW50IHJlY2VpdmVzIGFuIEFCT1JUIHdpdGggYSBmb3JtYXQgZXJyb3Igb3IgZm9yIGFuCiAJICogICAgYXNzb2NpYXRpb24gdGhhdCBkb2Vzbid0IGV4aXN0LCBpdCBNVVNUIHNpbGVudGx5IGRpc2NhcmQgaXQuCi0JICogQmVjYXN1ZSB0aGUgbGVuZ3RoIGlzICJpbnZhbGlkIiwgd2UgY2FuJ3QgcmVhbGx5IGRpc2NhcmQganVzdAorCSAqIEJlY2F1c2UgdGhlIGxlbmd0aCBpcyAiaW52YWxpZCIsIHdlIGNhbid0IHJlYWxseSBkaXNjYXJkIGp1c3QKIAkgKiBhcyB3ZSBkbyBub3Qga25vdyBpdHMgdHJ1ZSBsZW5ndGguICBTbywgdG8gYmUgc2FmZSwgZGlzY2FyZCB0aGUKIAkgKiBwYWNrZXQuCiAJICovCkBAIC0yNDQ4LDcgKzI0NDgsNyBAQAogCSAqIFJGQyAyOTYwLCBTZWN0aW9uIDMuMy43CiAJICogICAgSWYgYW4gZW5kcG9pbnQgcmVjZWl2ZXMgYW4gQUJPUlQgd2l0aCBhIGZvcm1hdCBlcnJvciBvciBmb3IgYW4KIAkgKiAgICBhc3NvY2lhdGlvbiB0aGF0IGRvZXNuJ3QgZXhpc3QsIGl0IE1VU1Qgc2lsZW50bHkgZGlzY2FyZCBpdC4KLQkgKiBCZWNhc3VlIHRoZSBsZW5ndGggaXMgImludmFsaWQiLCB3ZSBjYW4ndCByZWFsbHkgZGlzY2FyZCBqdXN0CisJICogQmVjYXVzZSB0aGUgbGVuZ3RoIGlzICJpbnZhbGlkIiwgd2UgY2FuJ3QgcmVhbGx5IGRpc2NhcmQganVzdAogCSAqIGFzIHdlIGRvIG5vdCBrbm93IGl0cyB0cnVlIGxlbmd0aC4gIFNvLCB0byBiZSBzYWZlLCBkaXNjYXJkIHRoZQogCSAqIHBhY2tldC4KIAkgKi8KQEAgLTM4NTUsNyArMzg1NSw3IEBACiB9CiAKIC8qCi0gKiBTQ1RQLUFVVEggU2VjdGlvbiA2LjMgUmVjZXZpbmcgYXV0aGVudGljYXRlZCBjaHVrbnMKKyAqIFNDVFAtQVVUSCBTZWN0aW9uIDYuMyBSZWNlaXZpbmcgYXV0aGVudGljYXRlZCBjaHVrbnMKICAqCiAgKiAgICBUaGUgcmVjZWl2ZXIgTVVTVCB1c2UgdGhlIEhNQUMgYWxnb3JpdGhtIGluZGljYXRlZCBpbiB0aGUgSE1BQwogICogICAgSWRlbnRpZmllciBmaWVsZC4gIElmIHRoaXMgYWxnb3JpdGhtIHdhcyBub3Qgc3BlY2lmaWVkIGJ5IHRoZQpAQCAtNDIzMSw3ICs0MjMxLDcgQEAKIAkgKgogCSAqIFRoaXMgbWVhbnMgdGhhdCBpZiB3ZSBvbmx5IHdhbnQgdG8gYWJvcnQgYXNzb2NpYXRpb25zCiAJICogaW4gYW4gYXV0aGVudGljYXRlZCB3YXkgKGkuZSBBVVRIK0FCT1JUKSwgdGhlbiB3ZQotCSAqIGNhbid0IGRlc3Ryb3kgdGhpcyBhc3NvY2lhdGlvbiBqdXN0IGJlY3Vhc2UgdGhlIHBhY2tldAorCSAqIGNhbid0IGRlc3Ryb3kgdGhpcyBhc3NvY2lhdGlvbiBqdXN0IGJlY2F1c2UgdGhlIHBhY2tldAogCSAqIHdhcyBtYWxmb3JtZWQuCiAJICovCiAJaWYgKHNjdHBfYXV0aF9yZWN2X2NpZChTQ1RQX0NJRF9BQk9SVCwgYXNvYykpCkBAIC00NDAyLDkgKzQ0MDIsOSBAQAogfQogCiAvKiBIYW5kbGUgcHJvdG9jb2wgdmlvbGF0aW9uIG9mIGFuIGludmFsaWQgY2h1bmsgYnVuZGxpbmcuICBGb3IgZXhhbXBsZSwKLSAqIHdoZW4gd2UgaGF2ZSBhbiBhc3NvY2lhdGlvbiBhbmQgd2UgcmVjaWV2ZSBidW5kbGVkIElOSVQtQUNLLCBvcgorICogd2hlbiB3ZSBoYXZlIGFuIGFzc29jaWF0aW9uIGFuZCB3ZSByZWNlaXZlIGJ1bmRsZWQgSU5JVC1BQ0ssIG9yCiAgKiBTSFVET1dOLUNPTVBMRVRFLCBvdXIgcGVlciBpcyBjbGVhcmx5IHZpb2xhdGlvbmcgdGhlICJNVVNUIE5PVCBidW5kbGUiCi0gKiBzdGF0ZW1lbnQgZnJvbSB0aGUgc3BlY3MuICBBZGRpdGluYWxseSwgdGhlcmUgbWlnaHQgYmUgYW4gYXR0YWNrZXIKKyAqIHN0YXRlbWVudCBmcm9tIHRoZSBzcGVjcy4gIEFkZGl0aW9uYWxseSwgdGhlcmUgbWlnaHQgYmUgYW4gYXR0YWNrZXIKICAqIG9uIHRoZSBwYXRoIGFuZCB3ZSBtYXkgbm90IHdhbnQgdG8gY29udGludWUgdGhpcyBjb21tdW5pY2F0aW9uLgogICovCiBzdGF0aWMgc2N0cF9kaXNwb3NpdGlvbl90IHNjdHBfc2ZfdmlvbGF0aW9uX2NodW5rKApkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc29ja2V0LmMgYi9uZXQvc2N0cC9zb2NrZXQuYwppbmRleCAzOTUxYTEwLi5kZWI4MmUzIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zb2NrZXQuYworKysgYi9uZXQvc2N0cC9zb2NrZXQuYwpAQCAtMTE5Myw3ICsxMTkzLDcgQEAKICAqIGFuIGVuZHBvaW50IHRoYXQgaXMgbXVsdGktaG9tZWQuICBNdWNoIGxpa2Ugc2N0cF9iaW5keCgpIHRoaXMgY2FsbAogICogYWxsb3dzIGEgY2FsbGVyIHRvIHNwZWNpZnkgbXVsdGlwbGUgYWRkcmVzc2VzIGF0IHdoaWNoIGEgcGVlciBjYW4gYmUKICAqIHJlYWNoZWQuICBUaGUgd2F5IHRoZSBTQ1RQIHN0YWNrIHVzZXMgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIHRvIHNldCB1cAotICogdGhlIGFzc29jaWF0aW9uIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGFudC4gIFRoaXMgZnVuY3Rpb24gb25seQorICogdGhlIGFzc29jaWF0aW9uIGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gIFRoaXMgZnVuY3Rpb24gb25seQogICogc3BlY2lmaWVzIHRoYXQgdGhlIHN0YWNrIHdpbGwgdHJ5IHRvIG1ha2UgdXNlIG9mIGFsbCB0aGUgYWRkcmVzc2VzIGluCiAgKiB0aGUgbGlzdCB3aGVuIG5lZWRlZC4KICAqCmRpZmYgLS1naXQgYS9uZXQvc2N0cC91bHBldmVudC5jIGIvbmV0L3NjdHAvdWxwZXZlbnQuYwppbmRleCBhYTcyZTg5Li5kZmYyN2Q1IDEwMDY0NAotLS0gYS9uZXQvc2N0cC91bHBldmVudC5jCisrKyBiL25ldC9zY3RwL3VscGV2ZW50LmMKQEAgLTU1NCw3ICs1NTQsNyBAQAogCW1lbWNweSgmc3NmLT5zc2ZfaW5mbywgJmNodW5rLT5zaW5mbywgc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZHJjdmluZm8pKTsKIAogCS8qIFBlciBUU1ZXRyBkaXNjdXNzaW9uIHdpdGggUmFuZHkuIEFsbG93IHRoZSBhcHBsaWNhdGlvbiB0bwotCSAqIHJlc3NlbWJsZSBhIGZyYWdtZW50ZWQgbWVzc2FnZS4KKwkgKiByZXNlbWJsZSBhIGZyYWdtZW50ZWQgbWVzc2FnZS4KIAkgKi8KIAlzc2YtPnNzZl9pbmZvLnNpbmZvX2ZsYWdzID0gY2h1bmstPmNodW5rX2hkci0+ZmxhZ3M7CiAKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3VscHF1ZXVlLmMgYi9uZXQvc2N0cC91bHBxdWV1ZS5jCmluZGV4IDE3Njc4MTguLmYyZDFkZTcgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3VscHF1ZXVlLmMKKysrIGIvbmV0L3NjdHAvdWxwcXVldWUuYwpAQCAtMjQwLDcgKzI0MCw3IEBACiAJCX0gZWxzZSB7CiAJCQkvKgogCQkJICogSWYgZnJhZ21lbnQgaW50ZXJsZWF2ZSBpcyBlbmFibGVkLCB3ZQotCQkJICogY2FuIHF1ZXVlIHRoaXMgdG8gdGhlIHJlY2lldmUgcXVldWUgaW5zdGVhZAorCQkJICogY2FuIHF1ZXVlIHRoaXMgdG8gdGhlIHJlY2VpdmUgcXVldWUgaW5zdGVhZAogCQkJICogb2YgdGhlIGxvYmJ5LgogCQkJICovCiAJCQlpZiAoc2N0cF9zayhzayktPmZyYWdfaW50ZXJsZWF2ZSkKZGlmZiAtLWdpdCBhL25ldC9zb2NrZXQuYyBiL25ldC9zb2NrZXQuYwppbmRleCA1MjEyNDQ3Li4zMTBkMTZiIDEwMDY0NAotLS0gYS9uZXQvc29ja2V0LmMKKysrIGIvbmV0L3NvY2tldC5jCkBAIC0yOTg2LDcgKzI5ODYsNyBAQAogCiAvKiBTaW5jZSBvbGQgc3R5bGUgYnJpZGdlIGlvY3RsJ3MgZW5kdXAgdXNpbmcgU0lPQ0RFVlBSSVZBVEUKICAqIGZvciBzb21lIG9wZXJhdGlvbnM7IHRoaXMgZm9yY2VzIHVzZSBvZiB0aGUgbmV3ZXIgYnJpZGdlLXV0aWxzIHRoYXQKLSAqIHVzZSBjb21wYXRpYWJsZSBpb2N0bHMKKyAqIHVzZSBjb21wYXRpYmxlIGlvY3RscwogICovCiBzdGF0aWMgaW50IG9sZF9icmlkZ2VfaW9jdGwoY29tcGF0X3Vsb25nX3QgX191c2VyICphcmdwKQogewpkaWZmIC0tZ2l0IGEvbmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jIGIvbmV0L3N1bnJwYy9hdXRoX2dzcy9zdmNhdXRoX2dzcy5jCmluZGV4IGJjZGFlNzguLjhkMGY3ZDMgMTAwNjQ0Ci0tLSBhL25ldC9zdW5ycGMvYXV0aF9nc3Mvc3ZjYXV0aF9nc3MuYworKysgYi9uZXQvc3VucnBjL2F1dGhfZ3NzL3N2Y2F1dGhfZ3NzLmMKQEAgLTExMDEsNyArMTEwMSw3IEBACiAKIAkvKiBjcmVkZW50aWFsIGlzOgogCSAqICAgdmVyc2lvbig9PTEpLCBwcm9jKDAsMSwyLDMpLCBzZXEsIHNlcnZpY2UgKDEsMiwzKSwgaGFuZGxlCi0JICogYXQgbGVhc3QgNSB1MzJzLCBhbmQgaXMgcHJlY2VlZGVkIGJ5IGxlbmd0aCwgc28gdGhhdCBtYWtlcyA2LgorCSAqIGF0IGxlYXN0IDUgdTMycywgYW5kIGlzIHByZWNlZGVkIGJ5IGxlbmd0aCwgc28gdGhhdCBtYWtlcyA2LgogCSAqLwogCiAJaWYgKGFyZ3YtPmlvdl9sZW4gPCA1ICogNCkKZGlmZiAtLWdpdCBhL25ldC9zdW5ycGMveHBydHNvY2suYyBiL25ldC9zdW5ycGMveHBydHNvY2suYwppbmRleCAxZTMzNmEwLi5iZjAwNWQzIDEwMDY0NAotLS0gYS9uZXQvc3VucnBjL3hwcnRzb2NrLmMKKysrIGIvbmV0L3N1bnJwYy94cHJ0c29jay5jCkBAIC01MDQsNyArNTA0LDcgQEAKICAqICAgRUFHQUlOOglUaGUgc29ja2V0IHdhcyBibG9ja2VkLCBwbGVhc2UgY2FsbCBhZ2FpbiBsYXRlciB0bwogICoJCWNvbXBsZXRlIHRoZSByZXF1ZXN0CiAgKiBFTk9UQ09OTjoJQ2FsbGVyIG5lZWRzIHRvIGludm9rZSBjb25uZWN0IGxvZ2ljIHRoZW4gY2FsbCBhZ2FpbgotICogICAgb3RoZXI6CVNvbWUgb3RoZXIgZXJyb3Igb2NjdXJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CisgKiAgICBvdGhlcjoJU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CiAgKi8KIHN0YXRpYyBpbnQgeHNfdWRwX3NlbmRfcmVxdWVzdChzdHJ1Y3QgcnBjX3Rhc2sgKnRhc2spCiB7CkBAIC01OTAsNyArNTkwLDcgQEAKICAqICAgRUFHQUlOOglUaGUgc29ja2V0IHdhcyBibG9ja2VkLCBwbGVhc2UgY2FsbCBhZ2FpbiBsYXRlciB0bwogICoJCWNvbXBsZXRlIHRoZSByZXF1ZXN0CiAgKiBFTk9UQ09OTjoJQ2FsbGVyIG5lZWRzIHRvIGludm9rZSBjb25uZWN0IGxvZ2ljIHRoZW4gY2FsbCBhZ2FpbgotICogICAgb3RoZXI6CVNvbWUgb3RoZXIgZXJyb3Igb2NjdXJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CisgKiAgICBvdGhlcjoJU29tZSBvdGhlciBlcnJvciBvY2N1cnJlZCwgdGhlIHJlcXVlc3Qgd2FzIG5vdCBzZW50CiAgKgogICogWFhYOiBJbiB0aGUgY2FzZSBvZiBzb2Z0IHRpbWVvdXRzLCBzaG91bGQgd2UgZXZlbnR1YWxseSBnaXZlIHVwCiAgKglpZiBzZW5kbXNnIGlzIG5vdCBhYmxlIHRvIG1ha2UgcHJvZ3Jlc3M/CmRpZmYgLS1naXQgYS9uZXQvdGlwYy9saW5rLmMgYi9uZXQvdGlwYy9saW5rLmMKaW5kZXggNDM2MzlmZi4uZWJmMzM4ZiAxMDA2NDQKLS0tIGEvbmV0L3RpcGMvbGluay5jCisrKyBiL25ldC90aXBjL2xpbmsuYwpAQCAtMjQ3MSw3ICsyNDcxLDcgQEAKICAqIEEgcGVuZGluZyBtZXNzYWdlIGJlaW5nIHJlLWFzc2VtYmxlZCBtdXN0IHN0b3JlIGNlcnRhaW4gdmFsdWVzCiAgKiB0byBoYW5kbGUgc3Vic2VxdWVudCBmcmFnbWVudHMgY29ycmVjdGx5LiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucwogICogaGVscCBzdG9yaW5nIHRoZXNlIHZhbHVlcyBpbiB1bnVzZWQsIGF2YWlsYWJsZSBmaWVsZHMgaW4gdGhlCi0gKiBwZW5kaW5nIG1lc3NhZ2UuIFRoaXMgbWFrZXMgZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB1bmVjZXNzYXJ5LgorICogcGVuZGluZyBtZXNzYWdlLiBUaGlzIG1ha2VzIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gdW5uZWNlc3NhcnkuCiAgKi8KIAogc3RhdGljIHZvaWQgc2V0X2xvbmdfbXNnX3NlcW5vKHN0cnVjdCBza19idWZmICpidWYsIHUzMiBzZXFubykKZGlmZiAtLWdpdCBhL25ldC90aXBjL25hbWVfZGlzdHIuYyBiL25ldC90aXBjL25hbWVfZGlzdHIuYwppbmRleCBjOWZhNmRmLi44MDAyNWExIDEwMDY0NAotLS0gYS9uZXQvdGlwYy9uYW1lX2Rpc3RyLmMKKysrIGIvbmV0L3RpcGMvbmFtZV9kaXN0ci5jCkBAIC0xNjAsNyArMTYwLDcgQEAKIAogCWJ1ZiA9IG5hbWVkX3ByZXBhcmVfYnVmKFdJVEhEUkFXQUwsIElURU1fU0laRSwgMCk7CiAJaWYgKCFidWYpIHsKLQkJd2FybigiV2l0aGRyYXdsIGRpc3RyaWJ1dGlvbiBmYWlsdXJlXG4iKTsKKwkJd2FybigiV2l0aGRyYXdhbCBkaXN0cmlidXRpb24gZmFpbHVyZVxuIik7CiAJCXJldHVybjsKIAl9CiAKZGlmZiAtLWdpdCBhL25ldC91bml4L2FmX3VuaXguYyBiL25ldC91bml4L2FmX3VuaXguYwppbmRleCAxNjYzZTFhLi4zYTQzYTgzIDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBAIC0yMDcsNyArMjA3LDcgQEAKIAkJLyoKIAkJICogVGhpcyBtYXkgbG9vayBsaWtlIGFuIG9mZiBieSBvbmUgZXJyb3IgYnV0IGl0IGlzIGEgYml0IG1vcmUKIAkJICogc3VidGxlLiAxMDggaXMgdGhlIGxvbmdlc3QgdmFsaWQgQUZfVU5JWCBwYXRoIGZvciBhIGJpbmRpbmcuCi0JCSAqIHN1bl9wYXRoWzEwOF0gZG9lc250IGFzIHN1Y2ggZXhpc3QuICBIb3dldmVyIGluIGtlcm5lbCBzcGFjZQorCQkgKiBzdW5fcGF0aFsxMDhdIGRvZXNuJ3QgYXMgc3VjaCBleGlzdC4gIEhvd2V2ZXIgaW4ga2VybmVsIHNwYWNlCiAJCSAqIHdlIGFyZSBndWFyYW50ZWVkIHRoYXQgaXQgaXMgYSB2YWxpZCBtZW1vcnkgbG9jYXRpb24gaW4gb3VyCiAJCSAqIGtlcm5lbCBhZGRyZXNzIGJ1ZmZlci4KIAkJICovCmRpZmYgLS1naXQgYS9uZXQvd2Fucm91dGVyL3dhbnByb2MuYyBiL25ldC93YW5yb3V0ZXIvd2FucHJvYy5jCmluZGV4IDExZjI1YzcuLmYzNDYzOTUgMTAwNjQ0Ci0tLSBhL25ldC93YW5yb3V0ZXIvd2FucHJvYy5jCisrKyBiL25ldC93YW5yb3V0ZXIvd2FucHJvYy5jCkBAIC01MSw3ICs1MSw3IEBACiAKIC8qCiAgKglTdHJ1Y3R1cmVzIGZvciBpbnRlcmZhY2luZyB3aXRoIHRoZSAvcHJvYyBmaWxlc3lzdGVtLgotICoJUm91dGVyIGNyZWF0ZXMgaXRzIG93biBkaXJlY3RvcnkgL3Byb2MvbmV0L3JvdXRlciB3aXRoIHRoZSBmb2xvd2luZworICoJUm91dGVyIGNyZWF0ZXMgaXRzIG93biBkaXJlY3RvcnkgL3Byb2MvbmV0L3JvdXRlciB3aXRoIHRoZSBmb2xsb3dpbmcKICAqCWVudHJpZXM6CiAgKgljb25maWcJCWRldmljZSBjb25maWd1cmF0aW9uCiAgKglzdGF0dXMJCWdsb2JhbCBkZXZpY2Ugc3RhdGlzdGljcwpkaWZmIC0tZ2l0IGEvbmV0L3dpcmVsZXNzL3JlZy5jIGIvbmV0L3dpcmVsZXNzL3JlZy5jCmluZGV4IDMzMzJkNWIuLmFiODAxYTEgMTAwNjQ0Ci0tLSBhL25ldC93aXJlbGVzcy9yZWcuYworKysgYi9uZXQvd2lyZWxlc3MvcmVnLmMKQEAgLTgwOSw3ICs4MDksNyBAQAogCWlmIChyKSB7CiAJCS8qCiAJCSAqIFdlIHdpbGwgZGlzYWJsZSBhbGwgY2hhbm5lbHMgdGhhdCBkbyBub3QgbWF0Y2ggb3VyCi0JCSAqIHJlY2lldmVkIHJlZ3VsYXRvcnkgcnVsZSB1bmxlc3MgdGhlIGhpbnQgaXMgY29taW5nCisJCSAqIHJlY2VpdmVkIHJlZ3VsYXRvcnkgcnVsZSB1bmxlc3MgdGhlIGhpbnQgaXMgY29taW5nCiAJCSAqIGZyb20gYSBDb3VudHJ5IElFIGFuZCB0aGUgQ291bnRyeSBJRSBoYWQgbm8gaW5mb3JtYXRpb24KIAkJICogYWJvdXQgYSBiYW5kLiBUaGUgSUVFRSA4MDIuMTEgc3BlYyBhbGxvd3MgZm9yIGFuIEFQCiAJCSAqIHRvIHNlbmQgb25seSBhIHN1YnNldCBvZiB0aGUgcmVndWxhdG9yeSBydWxlcyBhbGxvd2VkLApAQCAtODM4LDcgKzgzOCw3IEBACiAJICAgIHJlcXVlc3Rfd2lwaHkgJiYgcmVxdWVzdF93aXBoeSA9PSB3aXBoeSAmJgogCSAgICByZXF1ZXN0X3dpcGh5LT5mbGFncyAmIFdJUEhZX0ZMQUdfU1RSSUNUX1JFR1VMQVRPUlkpIHsKIAkJLyoKLQkJICogVGhpcyBnYXVyYW50ZWVzIHRoZSBkcml2ZXIncyByZXF1ZXN0ZWQgcmVndWxhdG9yeSBkb21haW4KKwkJICogVGhpcyBndWFyYW50ZWVzIHRoZSBkcml2ZXIncyByZXF1ZXN0ZWQgcmVndWxhdG9yeSBkb21haW4KIAkJICogd2lsbCBhbHdheXMgYmUgdXNlZCBhcyBhIGJhc2UgZm9yIGZ1cnRoZXIgcmVndWxhdG9yeQogCQkgKiBzZXR0aW5ncwogCQkgKi8KZGlmZiAtLWdpdCBhL25ldC94MjUveDI1X2ZhY2lsaXRpZXMuYyBiL25ldC94MjUveDI1X2ZhY2lsaXRpZXMuYwppbmRleCA0MDYyMDc1Li5mNzdlNGU3IDEwMDY0NAotLS0gYS9uZXQveDI1L3gyNV9mYWNpbGl0aWVzLmMKKysrIGIvbmV0L3gyNS94MjVfZmFjaWxpdGllcy5jCkBAIC0zMSw3ICszMSw3IEBACiAgKiB4MjVfcGFyc2VfZmFjaWxpdGllcyAtIFBhcnNlIGZhY2lsaXRpZXMgZnJvbSBza2IgaW50byB0aGUgZmFjaWxpdGllcyBzdHJ1Y3RzCiAgKgogICogQHNrYjogc2tfYnVmZiB0byBwYXJzZQotICogQGZhY2lsaXRpZXM6IFJlZ3VsYXIgZmFjaWxpdGVzLCB1cGRhdGVkIGFzIGZhY2lsaXRpZXMgYXJlIGZvdW5kCisgKiBAZmFjaWxpdGllczogUmVndWxhciBmYWNpbGl0aWVzLCB1cGRhdGVkIGFzIGZhY2lsaXRpZXMgYXJlIGZvdW5kCiAgKiBAZHRlX2ZhY3M6IElUVSBEVEUgZmFjaWxpdGllcywgdXBkYXRlZCBhcyBEVEUgZmFjaWxpdGllcyBhcmUgZm91bmQKICAqIEB2Y19mYWNfbWFzazogbWFzayBpcyB1cGRhdGVkIHdpdGggYWxsIGZhY2lsaXRpZXMgZm91bmQKICAqCmRpZmYgLS1naXQgYS9uZXQveDI1L3gyNV9mb3J3YXJkLmMgYi9uZXQveDI1L3gyNV9mb3J3YXJkLmMKaW5kZXggMjVhODEwNy4uYzU0MWI2MiAxMDA2NDQKLS0tIGEvbmV0L3gyNS94MjVfZm9yd2FyZC5jCisrKyBiL25ldC94MjUveDI1X2ZvcndhcmQuYwpAQCAtMzEsNyArMzEsNyBAQAogCQlnb3RvIG91dF9ub19yb3V0ZTsKIAogCWlmICgobmVpZ2hfbmV3ID0geDI1X2dldF9uZWlnaChydC0+ZGV2KSkgPT0gTlVMTCkgewotCQkvKiBUaGlzIHNob3VsZG50IGhhcHBlbiwgaWYgaXQgb2NjdXJzIHNvbWVob3cKKwkJLyogVGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBpZiBpdCBvY2N1cnMgc29tZWhvdwogCQkgKiBkbyBzb21ldGhpbmcgc2Vuc2libGUKIAkJICovCiAJCWdvdG8gb3V0X3B1dF9yb3V0ZTsKQEAgLTQ1LDcgKzQ1LDcgQEAKIAl9CiAKIAkvKiBSZW1vdGUgZW5kIHNlbmRpbmcgYSBjYWxsIHJlcXVlc3Qgb24gYW4gYWxyZWFkeQotCSAqIGVzdGFibGlzaGVkIExDST8gSXQgc2hvdWxkbnQgaGFwcGVuLCBqdXN0IGluIGNhc2UuLgorCSAqIGVzdGFibGlzaGVkIExDST8gSXQgc2hvdWxkbid0IGhhcHBlbiwganVzdCBpbiBjYXNlLi4KIAkgKi8KIAlyZWFkX2xvY2tfYmgoJngyNV9mb3J3YXJkX2xpc3RfbG9jayk7CiAJbGlzdF9mb3JfZWFjaChlbnRyeSwgJngyNV9mb3J3YXJkX2xpc3QpIHsKZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmMKaW5kZXggM2QxNWQzZS4uNWQxZDYwZCAxMDA2NDQKLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmMKKysrIGIvbmV0L3hmcm0veGZybV91c2VyLmMKQEAgLTg5NCw3ICs4OTQsNyBAQAogCXUzMiAqZjsKIAogCW5saCA9IG5sbXNnX3B1dChza2IsIHBpZCwgc2VxLCBYRlJNX01TR19ORVdTUERJTkZPLCBzaXplb2YodTMyKSwgMCk7Ci0JaWYgKG5saCA9PSBOVUxMKSAvKiBzaG91bGRudCByZWFsbHkgaGFwcGVuIC4uLiAqLworCWlmIChubGggPT0gTlVMTCkgLyogc2hvdWxkbid0IHJlYWxseSBoYXBwZW4gLi4uICovCiAJCXJldHVybiAtRU1TR1NJWkU7CiAKIAlmID0gbmxtc2dfZGF0YShubGgpOwpAQCAtOTU0LDcgKzk1NCw3IEBACiAJdTMyICpmOwogCiAJbmxoID0gbmxtc2dfcHV0KHNrYiwgcGlkLCBzZXEsIFhGUk1fTVNHX05FV1NBRElORk8sIHNpemVvZih1MzIpLCAwKTsKLQlpZiAobmxoID09IE5VTEwpIC8qIHNob3VsZG50IHJlYWxseSBoYXBwZW4gLi4uICovCisJaWYgKG5saCA9PSBOVUxMKSAvKiBzaG91bGRuJ3QgcmVhbGx5IGhhcHBlbiAuLi4gKi8KIAkJcmV0dXJuIC1FTVNHU0laRTsKIAogCWYgPSBubG1zZ19kYXRhKG5saCk7CkBAIC0xMzYxLDcgKzEzNjEsNyBAQAogCWlmICgheHApCiAJCXJldHVybiBlcnI7CiAKLQkvKiBzaG91bGRudCBleGNsIGJlIGJhc2VkIG9uIG5saCBmbGFncz8/CisJLyogc2hvdWxkbid0IGV4Y2wgYmUgYmFzZWQgb24gbmxoIGZsYWdzPz8KIAkgKiBBaGEhIHRoaXMgaXMgYW50aS1uZXRsaW5rIHJlYWxseSBpLmUgIG1vcmUgcGZrZXkgZGVyaXZlZAogCSAqIGluIG5ldGxpbmsgZXhjbCBpcyBhIGZsYWcgYW5kIHlvdSB3b3VsZG50IG5lZWQKIAkgKiBhIHR5cGUgWEZSTV9NU0dfVVBEUE9MSUNZIC0gSkhTICovCmRpZmYgLS1naXQgYS9zYW1wbGVzL0tjb25maWcgYi9zYW1wbGVzL0tjb25maWcKaW5kZXggZTAzY2YwZS4uNDEwNjNlNyAxMDA2NDQKLS0tIGEvc2FtcGxlcy9LY29uZmlnCisrKyBiL3NhbXBsZXMvS2NvbmZpZwpAQCAtNTUsNyArNTUsNyBAQAogCSAgSWYgaW4gZG91YnQsIHNheSAiTiIgaGVyZS4KIAogY29uZmlnIFNBTVBMRV9LREIKLQl0cmlzdGF0ZSAiQnVpbGQga2RiIGNvbW1hbmQgZXhtYXBsZSAtLSBsb2FkYWJsZSBtb2R1bGVzIG9ubHkiCisJdHJpc3RhdGUgIkJ1aWxkIGtkYiBjb21tYW5kIGV4YW1wbGUgLS0gbG9hZGFibGUgbW9kdWxlcyBvbmx5IgogCWRlcGVuZHMgb24gS0dEQl9LREIgJiYgbQogCWhlbHAKIAkgIEJ1aWxkIGFuIGV4YW1wbGUgb2YgaG93IHRvIGR5bmFtaWNhbGx5IGFkZCB0aGUgaGVsbG8KZGlmZiAtLWdpdCBhL3NhbXBsZXMvaHdfYnJlYWtwb2ludC9kYXRhX2JyZWFrcG9pbnQuYyBiL3NhbXBsZXMvaHdfYnJlYWtwb2ludC9kYXRhX2JyZWFrcG9pbnQuYwppbmRleCBiZDBmMzM3Li4wNjM2NTM5IDEwMDY0NAotLS0gYS9zYW1wbGVzL2h3X2JyZWFrcG9pbnQvZGF0YV9icmVha3BvaW50LmMKKysrIGIvc2FtcGxlcy9od19icmVha3BvaW50L2RhdGFfYnJlYWtwb2ludC5jCkBAIC0xOSw3ICsxOSw3IEBACiAgKgogICogVGhpcyBmaWxlIGlzIGEga2VybmVsIG1vZHVsZSB0aGF0IHBsYWNlcyBhIGJyZWFrcG9pbnQgb3ZlciBrc3ltX25hbWUga2VybmVsCiAgKiB2YXJpYWJsZSB1c2luZyBIYXJkd2FyZSBCcmVha3BvaW50IHJlZ2lzdGVyLiBUaGUgY29ycmVzcG9uZGluZyBoYW5kbGVyIHdoaWNoCi0gKiBwcmludHMgYSBiYWNrdHJhY2UgaXMgaW52b2tlZCBldmVyeXRpbWUgYSB3cml0ZSBvcGVyYXRpb24gaXMgcGVyZm9ybWVkIG9uCisgKiBwcmludHMgYSBiYWNrdHJhY2UgaXMgaW52b2tlZCBldmVyeSB0aW1lIGEgd3JpdGUgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCBvbgogICogdGhhdCB2YXJpYWJsZS4KICAqCiAgKiBDb3B5cmlnaHQgKEMpIElCTSBDb3Jwb3JhdGlvbiwgMjAwOQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9NYWtlZmlsZS5tb2Rwb3N0IGIvc2NyaXB0cy9NYWtlZmlsZS5tb2Rwb3N0CmluZGV4IDdkMjIwNTYuLjU2ZGZhZmMgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvTWFrZWZpbGUubW9kcG9zdAorKysgYi9zY3JpcHRzL01ha2VmaWxlLm1vZHBvc3QKQEAgLTM1LDE0ICszNSwxNCBAQAogIyBLQlVJTERfTU9EUE9TVF9XQVJOIGNhbiBiZSBzZXQgdG8gYXZvaWQgZXJyb3Igb3V0IGluIGNhc2Ugb2YgdW5kZWZpbmVkCiAjIHN5bWJvbHMgaW4gdGhlIGZpbmFsIG1vZHVsZSBsaW5raW5nIHN0YWdlCiAjIEtCVUlMRF9NT0RQT1NUX05PRklOQUwgY2FuIGJlIHNldCB0byBza2lwIHRoZSBmaW5hbCBsaW5rIG9mIG1vZHVsZXMuCi0jIFRoaXMgaXMgc29sZWx5IHVzZWZ1bGwgdG8gc3BlZWQgdXAgdGVzdCBjb21waWxlcworIyBUaGlzIGlzIHNvbGVseSB1c2VmdWwgdG8gc3BlZWQgdXAgdGVzdCBjb21waWxlcwogUEhPTlkgOj0gX21vZHBvc3QKIF9tb2Rwb3N0OiBfX21vZHBvc3QKIAogaW5jbHVkZSBpbmNsdWRlL2NvbmZpZy9hdXRvLmNvbmYKIGluY2x1ZGUgc2NyaXB0cy9LYnVpbGQuaW5jbHVkZQogCi0jIFdoZW4gYnVpbGRpbmcgZXh0ZXJuYWwgbW9kdWxlcyBsb2FkIHRoZSBLYnVpbGQgZmlsZSB0byByZXRyZWl2ZSBFWFRSQV9TWU1CT0xTIGluZm8KKyMgV2hlbiBidWlsZGluZyBleHRlcm5hbCBtb2R1bGVzIGxvYWQgdGhlIEtidWlsZCBmaWxlIHRvIHJldHJpZXZlIEVYVFJBX1NZTUJPTFMgaW5mbwogaWZuZXEgKCQoS0JVSUxEX0VYVE1PRCksKQogCiAjIHNldCBzcmMgKyBvYmogLSB0aGV5IG1heSBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgdGhlIC5tb2QuYyBmaWxlCmRpZmYgLS1naXQgYS9zY3JpcHRzL2NoZWNrcGF0Y2gucGwgYi9zY3JpcHRzL2NoZWNrcGF0Y2gucGwKaW5kZXggOGY5ZTM5NC4uZDg2NzA4MSAxMDA3NTUKLS0tIGEvc2NyaXB0cy9jaGVja3BhdGNoLnBsCisrKyBiL3NjcmlwdHMvY2hlY2twYXRjaC5wbApAQCAtMTk0NiwxMyArMTk0NiwxMyBAQAogIyBwcmludGsgc2hvdWxkIHVzZSBLRVJOXyogbGV2ZWxzLiAgTm90ZSB0aGF0IGZvbGxvdyBvbiBwcmludGsncyBvbiB0aGUKICMgc2FtZSBsaW5lIGRvIG5vdCBuZWVkIGEgbGV2ZWwsIHNvIHdlIHVzZSB0aGUgY3VycmVudCBibG9jayBjb250ZXh0CiAjIHRvIHRyeSBhbmQgZmluZCBhbmQgdmFsaWRhdGUgdGhlIGN1cnJlbnQgcHJpbnRrLiAgSW4gc3VtbWFyeSB0aGUgY3VycmVudAotIyBwcmludGsgaW5jbHVkZXMgYWxsIHByZWNlZWRpbmcgcHJpbnRrJ3Mgd2hpY2ggaGF2ZSBubyBuZXdsaW5lIG9uIHRoZSBlbmQuCisjIHByaW50ayBpbmNsdWRlcyBhbGwgcHJlY2VkaW5nIHByaW50aydzIHdoaWNoIGhhdmUgbm8gbmV3bGluZSBvbiB0aGUgZW5kLgogIyB3ZSBhc3N1bWUgdGhlIGZpcnN0IGJhZCBwcmludGsgaXMgdGhlIG9uZSB0byByZXBvcnQuCiAJCWlmICgkbGluZSA9fiAvXGJwcmludGtcKCg/IUtFUk5fKVxzKiIvKSB7CiAJCQlteSAkb2sgPSAwOwogCQkJZm9yIChteSAkbG4gPSAkbGluZW5yIC0gMTsgJGxuID49ICRmaXJzdF9saW5lOyAkbG4tLSkgewogCQkJCSNwcmludCAiQ0hFQ0s8JGxpbmVzWyRsbiAtIDFdXG4iOwotCQkJCSMgd2UgaGF2ZSBhIHByZWNlZWRpbmcgcHJpbnRrIGlmIGl0IGVuZHMKKwkJCQkjIHdlIGhhdmUgYSBwcmVjZWRpbmcgcHJpbnRrIGlmIGl0IGVuZHMKIAkJCQkjIHdpdGggIlxuIiBpZ25vcmUgaXQsIGVsc2UgaXQgaXMgdG8gYmxhbWUKIAkJCQlpZiAoJGxpbmVzWyRsbiAtIDFdID1+IG17XGJwcmludGtcKH0pIHsKIAkJCQkJaWYgKCRyYXdsaW5lc1skbG4gLSAxXSAhfiBte1xcbiJ9KSB7CkBAIC0yMDQ0LDcgKzIwNDQsNyBAQAogCQkJZm9yIChteSAkbiA9IDA7ICRuIDwgJCNlbGVtZW50czsgJG4gKz0gMikgewogCQkJCSRvZmYgKz0gbGVuZ3RoKCRlbGVtZW50c1skbl0pOwogCi0JCQkJIyBQaWNrIHVwIHRoZSBwcmVjZWVkaW5nIGFuZCBzdWNjZWVkaW5nIGNoYXJhY3RlcnMuCisJCQkJIyBQaWNrIHVwIHRoZSBwcmVjZWRpbmcgYW5kIHN1Y2NlZWRpbmcgY2hhcmFjdGVycy4KIAkJCQlteSAkY2EgPSBzdWJzdHIoJG9wbGluZSwgMCwgJG9mZik7CiAJCQkJbXkgJGNjID0gJyc7CiAJCQkJaWYgKGxlbmd0aCgkb3BsaW5lKSA+PSAoJG9mZiArIGxlbmd0aCgkZWxlbWVudHNbJG4gKyAxXSkpKSB7CmRpZmYgLS1naXQgYS9zY3JpcHRzL2R0Yy9saWJmZHQvbGliZmR0LmggYi9zY3JpcHRzL2R0Yy9saWJmZHQvbGliZmR0LmgKaW5kZXggY2U4MGU0Zi4uZmY2MjQ2ZiAxMDA2NDQKLS0tIGEvc2NyaXB0cy9kdGMvbGliZmR0L2xpYmZkdC5oCisrKyBiL3NjcmlwdHMvZHRjL2xpYmZkdC9saWJmZHQuaApAQCAtNjEsNyArNjEsNyBAQAogI2RlZmluZSBGRFRfRVJSX05PVEZPVU5ECTEKIAkvKiBGRFRfRVJSX05PVEZPVU5EOiBUaGUgcmVxdWVzdGVkIG5vZGUgb3IgcHJvcGVydHkgZG9lcyBub3QgZXhpc3QgKi8KICNkZWZpbmUgRkRUX0VSUl9FWElTVFMJCTIKLQkvKiBGRFRfRVJSX0VYSVNUUzogQXR0ZW1wZWQgdG8gY3JlYXRlIGEgbm9kZSBvciBwcm9wZXJ0eSB3aGljaAorCS8qIEZEVF9FUlJfRVhJU1RTOiBBdHRlbXB0ZWQgdG8gY3JlYXRlIGEgbm9kZSBvciBwcm9wZXJ0eSB3aGljaAogCSAqIGFscmVhZHkgZXhpc3RzICovCiAjZGVmaW5lIEZEVF9FUlJfTk9TUEFDRQkJMwogCS8qIEZEVF9FUlJfTk9TUEFDRTogT3BlcmF0aW9uIG5lZWRlZCB0byBleHBhbmQgdGhlIGRldmljZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9kdGMvbGl2ZXRyZWUuYyBiL3NjcmlwdHMvZHRjL2xpdmV0cmVlLmMKaW5kZXggYzkyMDlkNS4uMjZkMGUxZSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9kdGMvbGl2ZXRyZWUuYworKysgYi9zY3JpcHRzL2R0Yy9saXZldHJlZS5jCkBAIC0xNTUsNyArMTU1LDcgQEAKIAkJCX0KIAkJfQogCi0JCS8qIGlmIG5vIGNvbGxpc2lvbiBvY2N1cmVkLCBhZGQgY2hpbGQgdG8gdGhlIG9sZCBub2RlLiAqLworCQkvKiBpZiBubyBjb2xsaXNpb24gb2NjdXJyZWQsIGFkZCBjaGlsZCB0byB0aGUgb2xkIG5vZGUuICovCiAJCWlmIChuZXdfY2hpbGQpCiAJCQlhZGRfY2hpbGQob2xkX25vZGUsIG5ld19jaGlsZCk7CiAJfQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9nZW5faW5pdHJhbWZzX2xpc3Quc2ggYi9zY3JpcHRzL2dlbl9pbml0cmFtZnNfbGlzdC5zaAppbmRleCA1NWNhZWNkLi5lMTJiMWE3IDEwMDY0NAotLS0gYS9zY3JpcHRzL2dlbl9pbml0cmFtZnNfbGlzdC5zaAorKysgYi9zY3JpcHRzL2dlbl9pbml0cmFtZnNfbGlzdC5zaApAQCAtMjg0LDcgKzI4NCw3IEBACiBkb25lCiAKICMgSWYgb3V0cHV0X2ZpbGUgaXMgc2V0IHdlIHdpbGwgZ2VuZXJhdGUgY3BpbyBhcmNoaXZlIGFuZCBjb21wcmVzcyBpdAotIyB3ZSBhcmUgY2FyZWZ1bGwgdG8gZGVsZXRlIHRtcCBmaWxlcworIyB3ZSBhcmUgY2FyZWZ1bCB0byBkZWxldGUgdG1wIGZpbGVzCiBpZiBbICEgLXogJHtvdXRwdXRfZmlsZX0gXTsgdGhlbgogCWlmIFsgLXogJHtjcGlvX2ZpbGV9IF07IHRoZW4KIAkJY3Bpb190ZmlsZT0iJChta3RlbXAgJHtUTVBESVI6LS90bXB9L2NwaW9maWxlLlhYWFhYWCkiCmRpZmYgLS1naXQgYS9zY3JpcHRzL2tlcm5lbC1kb2MgYi9zY3JpcHRzL2tlcm5lbC1kb2MKaW5kZXggOWY4NTAxMi4uZDc5MzAwMSAxMDA3NTUKLS0tIGEvc2NyaXB0cy9rZXJuZWwtZG9jCisrKyBiL3NjcmlwdHMva2VybmVsLWRvYwpAQCAtMTcwNSw3ICsxNzA1LDcgQEAKIAogCSRwYXJhbSA9IHhtbF9lc2NhcGUoJHBhcmFtKTsKIAotCSMgc3RyaXAgc3BhY2VzIGZyb20gJHBhcmFtIHNvIHRoYXQgaXQgaXMgb25lIGNvbnRpbm91cyBzdHJpbmcKKwkjIHN0cmlwIHNwYWNlcyBmcm9tICRwYXJhbSBzbyB0aGF0IGl0IGlzIG9uZSBjb250aW51b3VzIHN0cmluZwogCSMgb24gQHBhcmFtZXRlcmxpc3Q7CiAJIyB0aGlzIGZpeGVzIGEgcHJvYmxlbSB3aGVyZSBjaGVja19zZWN0aW9ucygpIGNhbm5vdCBmaW5kCiAJIyBhIHBhcmFtZXRlciBsaWtlICJhZGRyWzYgKyAyXSIgYmVjYXVzZSBpdCBhY3R1YWxseSBhcHBlYXJzCmRpZmYgLS1naXQgYS9zY3JpcHRzL3BhY2thZ2UvYnVpbGR0YXIgYi9zY3JpcHRzL3BhY2thZ2UvYnVpbGR0YXIKaW5kZXggODNjOWMwNC4uOGE3YjE1NSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9wYWNrYWdlL2J1aWxkdGFyCisrKyBiL3NjcmlwdHMvcGFja2FnZS9idWlsZHRhcgpAQCAtOTIsNyArOTIsNyBAQAogCQllY2hvICIiID4mMgogCQllY2hvICcqKiAqKiAqKiAgV0FSTklORyAgKiogKiogKionID4mMgogCQllY2hvICIiID4mMgotCQllY2hvICJZb3VyIGFyY2hpdGVjdHVyZSBkaWQgbm90IGRlZmluZSBhbnkgYXJjaGl0ZWN0dXJlLWRlcGVuZGFudCBmaWxlcyIgPiYyCisJCWVjaG8gIllvdXIgYXJjaGl0ZWN0dXJlIGRpZCBub3QgZGVmaW5lIGFueSBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IGZpbGVzIiA+JjIKIAkJZWNobyAidG8gYmUgcGxhY2VkIGludG8gdGhlIHRhcmJhbGwuIFBsZWFzZSBhZGQgdGhvc2UgdG8gJHswfSAuLi4iID4mMgogCQllY2hvICIiID4mMgogCQlzbGVlcCA1CmRpZmYgLS1naXQgYS9zY3JpcHRzL3J0LXRlc3Rlci9ydC10ZXN0ZXIucHkgYi9zY3JpcHRzL3J0LXRlc3Rlci9ydC10ZXN0ZXIucHkKaW5kZXggOGM4MWQ3Ni4uMzQxODZjYSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9ydC10ZXN0ZXIvcnQtdGVzdGVyLnB5CisrKyBiL3NjcmlwdHMvcnQtdGVzdGVyL3J0LXRlc3Rlci5weQpAQCAtMTgwLDcgKzE4MCw3IEBACiAgICAgICAgICAgICAgICAgZm9yIHMgaW4gc3RhdDoKIAkJICAgIHMgPSBzLnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKHRlc3RvcFswXSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFNlcGVyYXRlIHN0YXR1cyB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgIyBTZXBhcmF0ZSBzdGF0dXMgdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHNbMjpdLnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gYW5hbHlzZSh2YWwsIHRlc3RvcCwgZGF0KQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2FwcGFybW9yL21hdGNoLmMgYi9zZWN1cml0eS9hcHBhcm1vci9tYXRjaC5jCmluZGV4IDVjYjRkYzEuLjA2ZDc2NGMgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2FwcGFybW9yL21hdGNoLmMKKysrIGIvc2VjdXJpdHkvYXBwYXJtb3IvbWF0Y2guYwpAQCAtMTk1LDcgKzE5NSw3IEBACiAgKgogICogVW5wYWNrIGEgZGZhIHRoYXQgaGFzIGJlZW4gc2VyaWFsaXplZC4gIFRvIGZpbmQgaW5mb3JtYXRpb24gb24gdGhlIGRmYQogICogZm9ybWF0IGxvb2sgaW4gRG9jdW1lbnRhdGlvbi9hcHBhcm1vci50eHQKLSAqIEFzc3VtZXMgdGhlIGRmYSBAYmxvYiBzdHJlYW0gaGFzIGJlZW4gYWxpZ25lZCBvbiBhIDggYnl0ZSBib3VuZHJ5CisgKiBBc3N1bWVzIHRoZSBkZmEgQGJsb2Igc3RyZWFtIGhhcyBiZWVuIGFsaWduZWQgb24gYSA4IGJ5dGUgYm91bmRhcnkKICAqCiAgKiBSZXR1cm5zOiBhbiB1bnBhY2tlZCBkZmEgcmVhZHkgZm9yIG1hdGNoaW5nIG9yIEVSUl9QVFIgb24gZmFpbHVyZQogICovCmRpZmYgLS1naXQgYS9zZWN1cml0eS9hcHBhcm1vci9wb2xpY3lfdW5wYWNrLmMgYi9zZWN1cml0eS9hcHBhcm1vci9wb2xpY3lfdW5wYWNrLmMKaW5kZXggZWIzNzAwZS4uZTMzYWFmNyAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvYXBwYXJtb3IvcG9saWN5X3VucGFjay5jCisrKyBiL3NlY3VyaXR5L2FwcGFybW9yL3BvbGljeV91bnBhY2suYwpAQCAtMzU5LDcgKzM1OSw3IEBACiAgKiBAZTogc2VyaWFsaXplZCBkYXRhIGV4dGVudCBpbmZvcm1hdGlvbiAgKE5PVCBOVUxMKQogICogQHByb2ZpbGU6IHByb2ZpbGUgdG8gYWRkIHRoZSBhY2NlcHQgdGFibGUgdG8gKE5PVCBOVUxMKQogICoKLSAqIFJldHVybnM6IDEgaWYgdGFibGUgc3VjY2VzZnVsbHkgdW5wYWNrZWQKKyAqIFJldHVybnM6IDEgaWYgdGFibGUgc3VjY2Vzc2Z1bGx5IHVucGFja2VkCiAgKi8KIHN0YXRpYyBib29sIHVucGFja190cmFuc190YWJsZShzdHJ1Y3QgYWFfZXh0ICplLCBzdHJ1Y3QgYWFfcHJvZmlsZSAqcHJvZmlsZSkKIHsKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3NlbGludXgvbmV0bGFiZWwuYyBiL3NlY3VyaXR5L3NlbGludXgvbmV0bGFiZWwuYwppbmRleCAxYzJmYzQ2Li5jM2JmM2VkIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zZWxpbnV4L25ldGxhYmVsLmMKKysrIGIvc2VjdXJpdHkvc2VsaW51eC9uZXRsYWJlbC5jCkBAIC0xNTEsNyArMTUxLDcgQEAKICAqCiAgKiBEZXNjcmlwdGlvbjoKICAqIENhbGxlZCB3aGVuIHRoZSBOZXRMYWJlbCBzdGF0ZSBvZiBhIHNrX3NlY3VyaXR5X3N0cnVjdCBuZWVkcyB0byBiZSByZXNldC4KLSAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2liaWxlIGZvciBhbGwgdGhlIE5ldExhYmVsIHNrX3NlY3VyaXR5X3N0cnVjdCBsb2NraW5nLgorICogVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgYWxsIHRoZSBOZXRMYWJlbCBza19zZWN1cml0eV9zdHJ1Y3QgbG9ja2luZy4KICAqCiAgKi8KIHZvaWQgc2VsaW51eF9uZXRsYmxfc2tfc2VjdXJpdHlfcmVzZXQoc3RydWN0IHNrX3NlY3VyaXR5X3N0cnVjdCAqc2tzZWMpCmRpZmYgLS1naXQgYS9zZWN1cml0eS9zZWxpbnV4L3NzL3NlcnZpY2VzLmMgYi9zZWN1cml0eS9zZWxpbnV4L3NzL3NlcnZpY2VzLmMKaW5kZXggZWE3YzAxZi4uNmVmNGFmNCAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc2VsaW51eC9zcy9zZXJ2aWNlcy5jCisrKyBiL3NlY3VyaXR5L3NlbGludXgvc3Mvc2VydmljZXMuYwpAQCAtMjgwNiw3ICsyODA2LDcgQEAKIAljYXNlIEFVRElUX1NVQkpfQ0xSOgogCWNhc2UgQVVESVRfT0JKX0xFVl9MT1c6CiAJY2FzZSBBVURJVF9PQkpfTEVWX0hJR0g6Ci0JCS8qIHdlIGRvIG5vdCBhbGxvdyBhIHJhbmdlLCBpbmRpY2F0ZWQgYnkgdGhlIHByZXNlbnNlIG9mICctJyAqLworCQkvKiB3ZSBkbyBub3QgYWxsb3cgYSByYW5nZSwgaW5kaWNhdGVkIGJ5IHRoZSBwcmVzZW5jZSBvZiAnLScgKi8KIAkJaWYgKHN0cmNocihydWxlc3RyLCAnLScpKQogCQkJcmV0dXJuIC1FSU5WQUw7CiAJCWJyZWFrOwpAQCAtMzA3NSw3ICszMDc1LDcgQEAKICAqIERlc2NyaXB0aW9uOgogICogQ29udmVydCB0aGUgZ2l2ZW4gTmV0TGFiZWwgc2VjdXJpdHkgYXR0cmlidXRlcyBpbiBAc2VjYXR0ciBpbnRvIGEKICAqIFNFTGludXggU0lELiAgSWYgdGhlIEBzZWNhdHRyIGZpZWxkIGRvZXMgbm90IGNvbnRhaW4gYSBmdWxsIFNFTGludXgKLSAqIFNJRC9jb250ZXh0IHRoZW4gdXNlIFNFQ0lOSVRTSURfTkVUTVNHIGFzIHRoZSBmb3VuZGF0aW9uLiAgSWYgcG9zc2liaWxlIHRoZQorICogU0lEL2NvbnRleHQgdGhlbiB1c2UgU0VDSU5JVFNJRF9ORVRNU0cgYXMgdGhlIGZvdW5kYXRpb24uICBJZiBwb3NzaWJsZSB0aGUKICAqICdjYWNoZScgZmllbGQgb2YgQHNlY2F0dHIgaXMgc2V0IGFuZCB0aGUgQ0FDSEUgZmxhZyBpcyBzZXQ7IHRoaXMgaXMgdG8KICAqIGFsbG93IHRoZSBAc2VjYXR0ciB0byBiZSB1c2VkIGJ5IE5ldExhYmVsIHRvIGNhY2hlIHRoZSBzZWNhdHRyIHRvIFNJRAogICogY29udmVyc2lvbiBmb3IgZnV0dXJlIGxvb2t1cHMuICBSZXR1cm5zIHplcm8gb24gc3VjY2VzcywgbmVnYXRpdmUgdmFsdWVzIG9uCmRpZmYgLS1naXQgYS9zZWN1cml0eS9zbWFjay9zbWFja19hY2Nlc3MuYyBiL3NlY3VyaXR5L3NtYWNrL3NtYWNrX2FjY2Vzcy5jCmluZGV4IDg2NDUzZGIuLjk2MzdlMTAgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L3NtYWNrL3NtYWNrX2FjY2Vzcy5jCisrKyBiL3NlY3VyaXR5L3NtYWNrL3NtYWNrX2FjY2Vzcy5jCkBAIC00MzEsNyArNDMxLDcgQEAKICAqIHNtYWNrX2Zyb21fc2VjaWQgLSBmaW5kIHRoZSBTbWFjayBsYWJlbCBhc3NvY2lhdGVkIHdpdGggYSBzZWNpZAogICogQHNlY2lkOiBhbiBpbnRlZ2VyIHRoYXQgbWlnaHQgYmUgYXNzb2NpYXRlZCB3aXRoIGEgU21hY2sgbGFiZWwKICAqCi0gKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgYXBwcm9wcmFpdGUgU21hY2sgbGFiZWwgaWYgdGhlcmUgaXMgb25lLAorICogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGFwcHJvcHJpYXRlIFNtYWNrIGxhYmVsIGlmIHRoZXJlIGlzIG9uZSwKICAqIG90aGVyd2lzZSBhIHBvaW50ZXIgdG8gdGhlIGludmFsaWQgU21hY2sgbGFiZWwuCiAgKi8KIGNoYXIgKnNtYWNrX2Zyb21fc2VjaWQoY29uc3QgdTMyIHNlY2lkKQpkaWZmIC0tZ2l0IGEvc2VjdXJpdHkvc21hY2svc21hY2tfbHNtLmMgYi9zZWN1cml0eS9zbWFjay9zbWFja19sc20uYwppbmRleCAyM2M3YTZkLi5jNmY4ZmNhIDEwMDY0NAotLS0gYS9zZWN1cml0eS9zbWFjay9zbWFja19sc20uYworKysgYi9zZWN1cml0eS9zbWFjay9zbWFja19sc20uYwpAQCAtMTc5NCw3ICsxNzk0LDcgQEAKICAqIENhc2V5IHNheXMgdGhhdCBDSVBTTyBpcyBnb29kIGVub3VnaCBmb3Igbm93LgogICogSXQgY2FuIGJlIHVzZWQgdG8gZWZmZWN0LgogICogSXQgY2FuIGFsc28gYmUgYWJ1c2VkIHRvIGVmZmVjdCB3aGVuIG5lY2Vzc2FyeS4KLSAqIEFwcG9sb2dpZXMgdG8gdGhlIFRTSUcgZ3JvdXAgaW4gZ2VuZXJhbCBhbmQgR1cgaW4gcGFydGljdWxhci4KKyAqIEFwb2xvZ2llcyB0byB0aGUgVFNJRyBncm91cCBpbiBnZW5lcmFsIGFuZCBHVyBpbiBwYXJ0aWN1bGFyLgogICovCiBzdGF0aWMgdm9pZCBzbWFja190b19zZWNhdHRyKGNoYXIgKnNtYWNrLCBzdHJ1Y3QgbmV0bGJsX2xzbV9zZWNhdHRyICpubHNwKQogewpAQCAtMjUzMCw3ICsyNTMwLDcgQEAKIAlzd2l0Y2ggKHNicC0+c19tYWdpYykgewogCWNhc2UgU01BQ0tfTUFHSUM6CiAJCS8qCi0JCSAqIENhc2V5IHNheXMgdGhhdCBpdCdzIGEgbGl0dGxlIGVtYmFyYXNzaW5nCisJCSAqIENhc2V5IHNheXMgdGhhdCBpdCdzIGEgbGl0dGxlIGVtYmFycmFzc2luZwogCQkgKiB0aGF0IHRoZSBzbWFjayBmaWxlIHN5c3RlbSBkb2Vzbid0IGRvCiAJCSAqIGV4dGVuZGVkIGF0dHJpYnV0ZXMuCiAJCSAqLwpAQCAtMzA4NCw3ICszMDg0LDcgQEAKIAkvKgogCSAqIFdlIG5lZWQgdG8gZGVjaWRlIGlmIHdlIHdhbnQgdG8gbGFiZWwgdGhlIGluY29taW5nIGNvbm5lY3Rpb24gaGVyZQogCSAqIGlmIHdlIGRvIHdlIG9ubHkgbmVlZCB0byBsYWJlbCB0aGUgcmVxdWVzdF9zb2NrIGFuZCB0aGUgc3RhY2sgd2lsbAotCSAqIHByb3BvZ2F0ZSB0aGUgd2lyZS1sYWJlbCB0byB0aGUgc29jayB3aGVuIGl0IGlzIGNyZWF0ZWQuCisJICogcHJvcGFnYXRlIHRoZSB3aXJlLWxhYmVsIHRvIHRoZSBzb2NrIHdoZW4gaXQgaXMgY3JlYXRlZC4KIAkgKi8KIAloZHIgPSBpcF9oZHIoc2tiKTsKIAlhZGRyLnNpbl9hZGRyLnNfYWRkciA9IGhkci0+c2FkZHI7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9zbWFjay9zbWFja2ZzLmMgYi9zZWN1cml0eS9zbWFjay9zbWFja2ZzLmMKaW5kZXggOTBkMWJiYS4uZjkzNDYwMSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvc21hY2svc21hY2tmcy5jCisrKyBiL3NlY3VyaXR5L3NtYWNrL3NtYWNrZnMuYwpAQCAtMjA4LDcgKzIwOCw3IEBACiAJaWYgKCpwcG9zICE9IDApCiAJCXJldHVybiAtRUlOVkFMOwogCS8qCi0JICogTWlub3IgaGFjayBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eQorCSAqIE1pbm9yIGhhY2sgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIAkgKi8KIAlpZiAoY291bnQgPCAoU01LX09MT0FETEVOKSB8fCBjb3VudCA+IFNNS19MT0FETEVOKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTIyMyw3ICsyMjMsNyBAQAogCX0KIAogCS8qCi0JICogTW9yZSBvbiB0aGUgbWlub3IgaGFjayBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eQorCSAqIE1vcmUgb24gdGhlIG1pbm9yIGhhY2sgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKIAkgKi8KIAlpZiAoY291bnQgPT0gKFNNS19PTE9BRExFTikpCiAJCWRhdGFbU01LX09MT0FETEVOXSA9ICctJzsKQEAgLTkyNyw3ICs5MjcsNyBAQAogCQl9CiAJfSBlbHNlIHsKIAkJLyogd2UgZGVsZXRlIHRoZSB1bmxhYmVsZWQgZW50cnksIG9ubHkgaWYgdGhlIHByZXZpb3VzIGxhYmVsCi0JCSAqIHdhc250IHRoZSBzcGVjaWFsIENJUFNPIG9wdGlvbiAqLworCQkgKiB3YXNuJ3QgdGhlIHNwZWNpYWwgQ0lQU08gb3B0aW9uICovCiAJCWlmIChza3AtPnNta19sYWJlbCAhPSBzbWFja19jaXBzb19vcHRpb24pCiAJCQlyYyA9IG5ldGxibF9jZmdfdW5sYmxfc3RhdGljX2RlbCgmaW5pdF9uZXQsIE5VTEwsCiAJCQkJCSZza3AtPnNta19ob3N0LnNpbl9hZGRyLCAmc2twLT5zbWtfbWFzaywKZGlmZiAtLWdpdCBhL3NlY3VyaXR5L3RvbW95by9sb2FkX3BvbGljeS5jIGIvc2VjdXJpdHkvdG9tb3lvL2xvYWRfcG9saWN5LmMKaW5kZXggYmJhZGE3Yy4uMzMxMmU1NiAxMDA2NDQKLS0tIGEvc2VjdXJpdHkvdG9tb3lvL2xvYWRfcG9saWN5LmMKKysrIGIvc2VjdXJpdHkvdG9tb3lvL2xvYWRfcG9saWN5LmMKQEAgLTIzLDcgKzIzLDcgQEAKIAkgKiBJZiB0aGUgaW5pdHJkIGluY2x1ZGVzIC9zYmluL2luaXQgYnV0IHJlYWwtcm9vdC1kZXYgaGFzIG5vdAogCSAqIG1vdW50ZWQgb24gLyB5ZXQsIGFjdGl2YXRpbmcgTUFDIHdpbGwgYmxvY2sgdGhlIHN5c3RlbSBzaW5jZQogCSAqIHBvbGljaWVzIGFyZSBub3QgbG9hZGVkIHlldC4KLQkgKiBUaHVzLCBsZXQgZG9fZXhlY3ZlKCkgY2FsbCB0aGlzIGZ1bmN0aW9uIGV2ZXJ5dGltZS4KKwkgKiBUaHVzLCBsZXQgZG9fZXhlY3ZlKCkgY2FsbCB0aGlzIGZ1bmN0aW9uIGV2ZXJ5IHRpbWUuCiAJICovCiAJc3RydWN0IHBhdGggcGF0aDsKIApkaWZmIC0tZ2l0IGEvc291bmQvYW9hL2NvZGVjcy90YXMuYyBiL3NvdW5kL2FvYS9jb2RlY3MvdGFzLmMKaW5kZXggZmQyMTg4Yy4uNTg4MDRjNyAxMDA2NDQKLS0tIGEvc291bmQvYW9hL2NvZGVjcy90YXMuYworKysgYi9zb3VuZC9hb2EvY29kZWNzL3Rhcy5jCkBAIC0xNzAsNyArMTcwLDcgQEAKIAkvKiBhbmFseXNpbmcgdGhlIHZvbHVtZSBhbmQgbWl4ZXIgdGFibGVzIHNob3dzCiAJICogdGhhdCB0aGV5IGFyZSBzaW1pbGFyIGVub3VnaCB3aGVuIHdlIHNoaWZ0CiAJICogdGhlIG1peGVyIHRhYmxlIGRvd24gYnkgNCBiaXRzLiBUaGUgZXJyb3IKLQkgKiBpcyBtaW5pc2N1bGUsIGluIGp1c3Qgb25lIGl0ZW0gdGhlIGVycm9yCisJICogaXMgbWludXNjdWxlLCBpbiBqdXN0IG9uZSBpdGVtIHRoZSBlcnJvcgogCSAqIGlzIDEsIGF0IGEgdmFsdWUgb2YgMHgwN2YxN2IgKG1peGVyIHRhYmxlCiAJICogdmFsdWUgaXMgMHgwN2YxN2EpICovCiAJdG1wID0gdGFzX2dhaW50YWJsZVtsZWZ0XTsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvcGNtX21lbW9yeS5jIGIvc291bmQvY29yZS9wY21fbWVtb3J5LmMKaW5kZXggOTE3ZTQwNS4uMTUwY2I3ZSAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbWVtb3J5LmMKKysrIGIvc291bmQvY29yZS9wY21fbWVtb3J5LmMKQEAgLTI1Myw3ICsyNTMsNyBAQAogICogc25kX3BjbV9saWJfcHJlYWxsb2NhdGVfcGFnZXMgLSBwcmUtYWxsb2NhdGlvbiBmb3IgdGhlIGdpdmVuIERNQSB0eXBlCiAgKiBAc3Vic3RyZWFtOiB0aGUgcGNtIHN1YnN0cmVhbSBpbnN0YW5jZQogICogQHR5cGU6IERNQSB0eXBlIChTTkRSVl9ETUFfVFlQRV8qKQotICogQGRhdGE6IERNQSB0eXBlIGRlcGVuZGFudCBkYXRhCisgKiBAZGF0YTogRE1BIHR5cGUgZGVwZW5kZW50IGRhdGEKICAqIEBzaXplOiB0aGUgcmVxdWVzdGVkIHByZS1hbGxvY2F0aW9uIHNpemUgaW4gYnl0ZXMKICAqIEBtYXg6IHRoZSBtYXguIGFsbG93ZWQgcHJlLWFsbG9jYXRpb24gc2l6ZQogICoKQEAgLTI3OCwxMCArMjc4LDEwIEBACiBFWFBPUlRfU1lNQk9MKHNuZF9wY21fbGliX3ByZWFsbG9jYXRlX3BhZ2VzKTsKIAogLyoqCi0gKiBzbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlc19mb3JfYWxsIC0gcHJlLWFsbG9jYXRpb24gZm9yIGNvbnRpbm91cyBtZW1vcnkgdHlwZSAoYWxsIHN1YnN0cmVhbXMpCisgKiBzbmRfcGNtX2xpYl9wcmVhbGxvY2F0ZV9wYWdlc19mb3JfYWxsIC0gcHJlLWFsbG9jYXRpb24gZm9yIGNvbnRpbnVvdXMgbWVtb3J5IHR5cGUgKGFsbCBzdWJzdHJlYW1zKQogICogQHBjbTogdGhlIHBjbSBpbnN0YW5jZQogICogQHR5cGU6IERNQSB0eXBlIChTTkRSVl9ETUFfVFlQRV8qKQotICogQGRhdGE6IERNQSB0eXBlIGRlcGVuZGFudCBkYXRhCisgKiBAZGF0YTogRE1BIHR5cGUgZGVwZW5kZW50IGRhdGEKICAqIEBzaXplOiB0aGUgcmVxdWVzdGVkIHByZS1hbGxvY2F0aW9uIHNpemUgaW4gYnl0ZXMKICAqIEBtYXg6IHRoZSBtYXguIGFsbG93ZWQgcHJlLWFsbG9jYXRpb24gc2l6ZQogICoKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvcGNtX25hdGl2ZS5jIGIvc291bmQvY29yZS9wY21fbmF0aXZlLmMKaW5kZXggZmU1YzgwMy4uMWEwNzc1MCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9wY21fbmF0aXZlLmMKKysrIGIvc291bmQvY29yZS9wY21fbmF0aXZlLmMKQEAgLTQ2MCw3ICs0NjAsNyBAQAogCQkJCSAgIFBNX1FPU19DUFVfRE1BX0xBVEVOQ1ksIHVzZWNzKTsKIAlyZXR1cm4gMDsKICBfZXJyb3I6Ci0JLyogaGFyZHdhcmUgbWlnaHQgYmUgdW51c2VhYmxlIGZyb20gdGhpcyB0aW1lLAorCS8qIGhhcmR3YXJlIG1pZ2h0IGJlIHVudXNhYmxlIGZyb20gdGhpcyB0aW1lLAogCSAgIHNvIHdlIGZvcmNlIGFwcGxpY2F0aW9uIHRvIHJldHJ5IHRvIHNldAogCSAgIHRoZSBjb3JyZWN0IGhhcmR3YXJlIHBhcmFtZXRlciBzZXR0aW5ncyAqLwogCXJ1bnRpbWUtPnN0YXR1cy0+c3RhdGUgPSBTTkRSVl9QQ01fU1RBVEVfT1BFTjsKZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvc2VxL3NlcV9kdW1teS5jIGIvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMKaW5kZXggZjNiZGM1NC4uMWQ3ZDkwYyAxMDA2NDQKLS0tIGEvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMKKysrIGIvc291bmQvY29yZS9zZXEvc2VxX2R1bW15LmMKQEAgLTUwLDcgKzUwLDcgQEAKIAogCW9wdGlvbiBzbmQtc2VxLWR1bW15IHBvcnRzPTQKIAotICBUaGUgbW9kbGUgb3B0aW9uICJkdXBsZXg9MSIgZW5hYmxlcyBkdXBsZXggb3BlcmF0aW9uIHRvIHRoZSBwb3J0LgorICBUaGUgbW9kZWwgb3B0aW9uICJkdXBsZXg9MSIgZW5hYmxlcyBkdXBsZXggb3BlcmF0aW9uIHRvIHRoZSBwb3J0LgogICBJbiBkdXBsZXggbW9kZSwgYSBwYWlyIG9mIHBvcnRzIGFyZSBjcmVhdGVkIGluc3RlYWQgb2Ygc2luZ2xlIHBvcnQsCiAgIGFuZCBldmVudHMgYXJlIHR1bm5lbGVkIGJldHdlZW4gcGFpci1wb3J0cy4gIEZvciBleGFtcGxlLCBpbnB1dCB0bwogICBwb3J0IEEgaXMgc2VudCB0byBvdXRwdXQgcG9ydCBvZiBhbm90aGVyIHBvcnQgQiBhbmQgdmljZSB2ZXJzYS4KZGlmZiAtLWdpdCBhL3NvdW5kL2NvcmUvdm1hc3Rlci5jIGIvc291bmQvY29yZS92bWFzdGVyLmMKaW5kZXggYTg5OTQ4YS4uYTM5ZDNkOCAxMDA2NDQKLS0tIGEvc291bmQvY29yZS92bWFzdGVyLmMKKysrIGIvc291bmQvY29yZS92bWFzdGVyLmMKQEAgLTIzMyw3ICsyMzMsNyBAQAogICogQWRkIGEgc2xhdmUgY29udHJvbCB0byB0aGUgZ3JvdXAgd2l0aCB0aGUgZ2l2ZW4gbWFzdGVyIGNvbnRyb2wKICAqCiAgKiBBbGwgc2xhdmVzIG11c3QgYmUgdGhlIHNhbWUgdHlwZSAocmV0dXJuaW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uCi0gKiB2aWEgaW5mbyBjYWxsYmFjaykuICBUaGUgZnVjbnRpb24gZG9lc24ndCBjaGVjayBpdCwgc28gaXQncyB5b3VyCisgKiB2aWEgaW5mbyBjYWxsYmFjaykuICBUaGUgZnVuY3Rpb24gZG9lc24ndCBjaGVjayBpdCwgc28gaXQncyB5b3VyCiAgKiByZXNwb25zaWJpbGl0eS4KICAqCiAgKiBBbHNvLCBzb21lIGFkZGl0aW9uYWwgbGltaXRhdGlvbnM6CmRpZmYgLS1naXQgYS9zb3VuZC9kcml2ZXJzL3BjbS1pbmRpcmVjdDIuYyBiL3NvdW5kL2RyaXZlcnMvcGNtLWluZGlyZWN0Mi5jCmluZGV4IDNjOTNjMjMuLmU3M2ZhZmQgMTAwNjQ0Ci0tLSBhL3NvdW5kL2RyaXZlcnMvcGNtLWluZGlyZWN0Mi5jCisrKyBiL3NvdW5kL2RyaXZlcnMvcGNtLWluZGlyZWN0Mi5jCkBAIC0yNjQsNyArMjY0LDcgQEAKIAkJaWYgKGRpZmYgPCAtKHNuZF9wY21fc2ZyYW1lc190KSAocnVudGltZS0+Ym91bmRhcnkgLyAyKSkKIAkJCWRpZmYgKz0gcnVudGltZS0+Ym91bmRhcnk7CiAJCS8qIG51bWJlciBvZiBieXRlcyAiYWRkZWQiIGJ5IEFMU0EgaW5jcmVhc2VzIHRoZSBudW1iZXIgb2YKLQkJICogYnl0ZXMgd2hpY2ggYXJlIHJlYWR5IHRvICJiZSB0cmFuc2ZlcmVkIHRvIEhXIi8icGxheWVkIgorCQkgKiBieXRlcyB3aGljaCBhcmUgcmVhZHkgdG8gImJlIHRyYW5zZmVycmVkIHRvIEhXIi8icGxheWVkIgogCQkgKiBUaGVuLCBzZXQgcmVjLT5hcHBsX3B0ciB0byBub3QgY291bnQgYnl0ZXMgdHdpY2UgbmV4dCB0aW1lLgogCQkgKi8KIAkJcmVjLT5zd19yZWFkeSArPSAoaW50KWZyYW1lc190b19ieXRlcyhydW50aW1lLCBkaWZmKTsKQEAgLTMzMCw3ICszMzAsNyBAQAogCQkvKiBjb3B5IGJ5dGVzIGZyb20gaW50ZXJtZWRpYXRlIGJ1ZmZlciBwb3NpdGlvbiBzd19kYXRhIHRvIHRoZQogCQkgKiBIVyBhbmQgcmV0dXJuIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSB3cml0dGVuCiAJCSAqIEZ1cnRoZXJtb3JlLCBzZXQgaHdfcmVhZHkgdG8gMCwgaWYgdGhlIGZpZm8gaXNuJ3QgZW1wdHkKLQkJICogbm93ID0+IG1vcmUgY291bGQgYmUgdHJhbnNmZXJlZCB0byBmaWZvCisJCSAqIG5vdyA9PiBtb3JlIGNvdWxkIGJlIHRyYW5zZmVycmVkIHRvIGZpZm8KIAkJICovCiAJCWJ5dGVzID0gY29weShzdWJzdHJlYW0sIHJlYywgYnl0ZXMpOwogCQlyZWMtPmJ5dGVzMmh3ICs9IGJ5dGVzOwpkaWZmIC0tZ2l0IGEvc291bmQvZHJpdmVycy92eC92eF9wY20uYyBiL3NvdW5kL2RyaXZlcnMvdngvdnhfcGNtLmMKaW5kZXggMzVhMmY3MS4uNWU4OTdiMiAxMDA2NDQKLS0tIGEvc291bmQvZHJpdmVycy92eC92eF9wY20uYworKysgYi9zb3VuZC9kcml2ZXJzL3Z4L3Z4X3BjbS5jCkBAIC0xMTg5LDcgKzExODksNyBAQAogCiAKIC8qCi0gKiB2eF9pbml0X2F1ZGlvX2lvIC0gY2hlY2sgdGhlIGF2YWlsYWJlIGF1ZGlvIGkvbyBhbmQgYWxsb2NhdGUgcGlwZSBhcnJheXMKKyAqIHZ4X2luaXRfYXVkaW9faW8gLSBjaGVjayB0aGUgYXZhaWxhYmxlIGF1ZGlvIGkvbyBhbmQgYWxsb2NhdGUgcGlwZSBhcnJheXMKICAqLwogc3RhdGljIGludCB2eF9pbml0X2F1ZGlvX2lvKHN0cnVjdCB2eF9jb3JlICpjaGlwKQogewpkaWZmIC0tZ2l0IGEvc291bmQvaXNhL3NiL2VtdTgwMDAuYyBiL3NvdW5kL2lzYS9zYi9lbXU4MDAwLmMKaW5kZXggMGM0MDk1MS4uNWQ2MWY1YSAxMDA2NDQKLS0tIGEvc291bmQvaXNhL3NiL2VtdTgwMDAuYworKysgYi9zb3VuZC9pc2Evc2IvZW11ODAwMC5jCkBAIC0zNzAsNyArMzcwLDcgQEAKIAogLyoKICAqIFNpemUgdGhlIG9uYm9hcmQgbWVtb3J5LgotICogVGhpcyBpcyB3cml0dGVuIHNvIGFzIG5vdCB0byBuZWVkIGFyYml0YXJ5IGRlbGF5cyBhZnRlciB0aGUgd3JpdGUuIEl0CisgKiBUaGlzIGlzIHdyaXR0ZW4gc28gYXMgbm90IHRvIG5lZWQgYXJiaXRyYXJ5IGRlbGF5cyBhZnRlciB0aGUgd3JpdGUuIEl0CiAgKiBzZWVtcyB0aGF0IHRoZSBvbmx5IHdheSB0byBkbyB0aGlzIGlzIHRvIHVzZSB0aGUgb25lIGNoYW5uZWwgYW5kIGtlZXAKICAqIHJlYWxsb2NhdGluZyBiZXR3ZWVuIHJlYWQgYW5kIHdyaXRlLgogICovCmRpZmYgLS1naXQgYS9zb3VuZC9pc2Evd2F2ZWZyb250L3dhdmVmcm9udF9taWRpLmMgYi9zb3VuZC9pc2Evd2F2ZWZyb250L3dhdmVmcm9udF9taWRpLmMKaW5kZXggZjE0YTdjMC4uNjUzMjlmMyAxMDA2NDQKLS0tIGEvc291bmQvaXNhL3dhdmVmcm9udC93YXZlZnJvbnRfbWlkaS5jCisrKyBiL3NvdW5kL2lzYS93YXZlZnJvbnQvd2F2ZWZyb250X21pZGkuYwpAQCAtNTM3LDcgKzUzNyw3IEBACiAJfQogCiAJLyogVHVybiBvbiBWaXJ0dWFsIE1JREksIGJ1dCBmaXJzdCAqYWx3YXlzKiB0dXJuIGl0IG9mZiwKLQkgICBzaW5jZSBvdGhlcndpc2UgY29uc2VjdHV0aXZlIHJlbG9hZHMgb2YgdGhlIGRyaXZlciB3aWxsCisJICAgc2luY2Ugb3RoZXJ3aXNlIGNvbnNlY3V0aXZlIHJlbG9hZHMgb2YgdGhlIGRyaXZlciB3aWxsCiAJICAgbmV2ZXIgY2F1c2UgdGhlIGhhcmR3YXJlIHRvIGdlbmVyYXRlIHRoZSBpbml0aWFsICJpbnRlcm5hbCIgb3IgCiAJICAgImV4dGVybmFsIiBzb3VyY2UgYnl0ZXMgaW4gdGhlIE1JREkgZGF0YSBzdHJlYW0uIFRoaXMKIAkgICBpcyBwcmV0dHkgaW1wb3J0YW50LCBzaW5jZSB0aGUgaW50ZXJuYWwgaGFyZHdhcmUgZ2VuZXJhbGx5IHdpbGwKZGlmZiAtLWdpdCBhL3NvdW5kL2lzYS93c3Mvd3NzX2xpYi5jIGIvc291bmQvaXNhL3dzcy93c3NfbGliLmMKaW5kZXggOTE5MWIzMi4uMmE0MmNjMyAxMDA2NDQKLS0tIGEvc291bmQvaXNhL3dzcy93c3NfbGliLmMKKysrIGIvc291bmQvaXNhL3dzcy93c3NfbGliLmMKQEAgLTQyNCw3ICs0MjQsNyBAQAogCiAJLyoKIAkgKiBXYWl0IGZvciAocG9zc2libGUgLS0gZHVyaW5nIGluaXQgYXV0by1jYWxpYnJhdGlvbiBtYXkgbm90IGJlIHNldCkKLQkgKiBjYWxpYnJhdGlvbiBwcm9jZXNzIHRvIHN0YXJ0LiBOZWVkcyB1cHRvIDUgc2FtcGxlIHBlcmlvZHMgb24gQUQxODQ4CisJICogY2FsaWJyYXRpb24gcHJvY2VzcyB0byBzdGFydC4gTmVlZHMgdXAgdG8gNSBzYW1wbGUgcGVyaW9kcyBvbiBBRDE4NDgKIAkgKiB3aGljaCBhdCB0aGUgc2xvd2VzdCBwb3NzaWJsZSByYXRlIG9mIDUuNTEyNSBrSHogbWVhbnMgOTA3IHVzLgogCSAqLwogCW1zbGVlcCgxKTsKZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9hYzk3X2NvZGVjLmMgYi9zb3VuZC9vc3MvYWM5N19jb2RlYy5jCmluZGV4IDg1NGMzMDMuLjBjZDIzZDkgMTAwNjQ0Ci0tLSBhL3NvdW5kL29zcy9hYzk3X2NvZGVjLmMKKysrIGIvc291bmQvb3NzL2FjOTdfY29kZWMuYwpAQCAtMjgsNyArMjgsNyBAQAogICoKICAqIEhpc3RvcnkKICAqIE1heSAwMiwgMjAwMyBMaWFtIEdpcmR3b29kIDxscmdAc2xpbWxvZ2ljLmNvLnVrPgotICoJUmVtb3ZlZCBub24gZXhpc3RhbnQgV005NzAwCisgKglSZW1vdmVkIG5vbiBleGlzdGVudCBXTTk3MDAKICAqCUFkZGVkIHN1cHBvcnQgZm9yIFdNOTcwNSwgV005NzA4LCBXTTk3MDksIFdNOTcxMCwgV005NzExCiAgKglXTTk3MTIgYW5kIFdNOTcxNwogICogTWFyIDI4LCAyMDAyIFJhbmRvbHBoIEJlbnRzb24gPGJlbnRzb25AaG9sbXNqb2VuLmNvbT4KQEAgLTQ0MSw3ICs0NDEsNyBAQAogfQogCiAvKiByZWFkIG9yIHdyaXRlIHRoZSByZWNtYXNrLCB0aGUgYWM5NyBjYW4gcmVhbGx5IGhhdmUgbGVmdCBhbmQgcmlnaHQgcmVjb3JkaW5nCi0gICBpbnB1dHMgaW5kZXBlbmRhbnRseSBzZXQsIGJ1dCBPU1MgZG9lc24ndCBzZWVtIHRvIHdhbnQgdXMgdG8gZXhwcmVzcyB0aGF0IHRvCisgICBpbnB1dHMgaW5kZXBlbmRlbnRseSBzZXQsIGJ1dCBPU1MgZG9lc24ndCBzZWVtIHRvIHdhbnQgdXMgdG8gZXhwcmVzcyB0aGF0IHRvCiAgICB0aGUgdXNlci4gdGhlIGNhbGxlciBndWFyYW50ZWVzIHRoYXQgd2UgaGF2ZSBhIHN1cHBvcnRlZCBiaXQgc2V0LCBhbmQgdGhleQogICAgbXVzdCBiZSBob2xkaW5nIHRoZSBjYXJkJ3Mgc3BpbmxvY2sgKi8KIHN0YXRpYyBpbnQgYWM5N19yZWNtYXNrX2lvKHN0cnVjdCBhYzk3X2NvZGVjICpjb2RlYywgaW50IHJ3LCBpbnQgbWFzaykgCkBAIC03NTQsNyArNzU0LDcgQEAKIAlpZigoY29kZWMtPmNvZGVjX29wcyA9PSAmbnVsbF9vcHMpICYmIChmICYgNCkpCiAJCWNvZGVjLT5jb2RlY19vcHMgPSAmZGVmYXVsdF9kaWdpdGFsX29wczsKIAkKLQkvKiBBIGRldmljZSB3aGljaCB0aGlua3MgaXRzIGEgbW9kZW0gYnV0IGlzbnQgKi8KKwkvKiBBIGRldmljZSB3aGljaCB0aGlua3MgaXRzIGEgbW9kZW0gYnV0IGlzbid0ICovCiAJaWYoY29kZWMtPmZsYWdzICYgQUM5N19ERUxVREVEX01PREVNKQogCQljb2RlYy0+bW9kZW0gPSAwOwogCQkKZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9hdWRpby5jIGIvc291bmQvb3NzL2F1ZGlvLmMKaW5kZXggN2RmNDhhMi4uNGI5NThiMSAxMDA2NDQKLS0tIGEvc291bmQvb3NzL2F1ZGlvLmMKKysrIGIvc291bmQvb3NzL2F1ZGlvLmMKQEAgLTUxNCw3ICs1MTQsNyBAQAogCQkJCWNvdW50ICs9IGRtYXAtPmJ5dGVzX2luX3VzZTsJLyogUG9pbnRlciB3cmFwIG5vdCBoYW5kbGVkIHlldCAqLwogCQkJY291bnQgKz0gZG1hcC0+Ynl0ZV9jb3VudGVyOwogCQkKLQkJCS8qIFN1YnN0cmFjdCBjdXJyZW50IGNvdW50IGZyb20gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGJ5IGFwcCAqLworCQkJLyogU3VidHJhY3QgY3VycmVudCBjb3VudCBmcm9tIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBieSBhcHAgKi8KIAkJCWNvdW50ID0gZG1hcC0+dXNlcl9jb3VudGVyIC0gY291bnQ7CiAJCQlpZiAoY291bnQgPCAwKQogCQkJCWNvdW50ID0gMDsKQEAgLTkzMSw3ICs5MzEsNyBAQAogCQkJaWYgKGNvdW50IDwgZG1hcF9vdXQtPmZyYWdtZW50X3NpemUgJiYgZG1hcF9vdXQtPnFoZWFkICE9IDApCiAJCQkJY291bnQgKz0gZG1hcF9vdXQtPmJ5dGVzX2luX3VzZTsJLyogUG9pbnRlciB3cmFwIG5vdCBoYW5kbGVkIHlldCAqLwogCQkJY291bnQgKz0gZG1hcF9vdXQtPmJ5dGVfY291bnRlcjsKLQkJCS8qIFN1YnN0cmFjdCBjdXJyZW50IGNvdW50IGZyb20gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGJ5IGFwcCAqLworCQkJLyogU3VidHJhY3QgY3VycmVudCBjb3VudCBmcm9tIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiBieSBhcHAgKi8KIAkJCWNvdW50ID0gZG1hcF9vdXQtPnVzZXJfY291bnRlciAtIGNvdW50OwogCQkJaWYgKGNvdW50IDwgMCkKIAkJCQljb3VudCA9IDA7CmRpZmYgLS1naXQgYS9zb3VuZC9vc3MvZG1hc291bmQvZG1hc291bmRfY29yZS5jIGIvc291bmQvb3NzL2RtYXNvdW5kL2RtYXNvdW5kX2NvcmUuYwppbmRleCA4N2UyYzcyLi5jOTE4MzEzIDEwMDY0NAotLS0gYS9zb3VuZC9vc3MvZG1hc291bmQvZG1hc291bmRfY29yZS5jCisrKyBiL3NvdW5kL29zcy9kbWFzb3VuZC9kbWFzb3VuZF9jb3JlLmMKQEAgLTEwMjEsNyArMTAyMSw3IEBACiAJY2FzZSBTTkRDVExfRFNQX1NZTkM6CiAJCS8qIFRoaXMgY2FsbCwgZWZmZWN0aXZlbHksIGhhcyB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgU05EQ1RMX0RTUF9SRVNFVAogCQkgICBleGNlcHQgdGhhdCBpdCB3YWl0cyBmb3Igb3V0cHV0IHRvIGZpbmlzaCBiZWZvcmUgcmVzZXR0aW5nCi0JCSAgIGV2ZXJ5dGhpbmcgLSByZWFkLCBob3dldmVyLCBpcyBraWxsZWQgaW1lZGlhdGVseS4KKwkJICAgZXZlcnl0aGluZyAtIHJlYWQsIGhvd2V2ZXIsIGlzIGtpbGxlZCBpbW1lZGlhdGVseS4KIAkJKi8KIAkJcmVzdWx0ID0gMCA7CiAJCWlmIChmaWxlLT5mX21vZGUgJiBGTU9ERV9XUklURSkgewpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL21pZGlidWYuYyBiL3NvdW5kL29zcy9taWRpYnVmLmMKaW5kZXggY2VlZGIxZS4uOGNkYjJjZiAxMDA2NDQKLS0tIGEvc291bmQvb3NzL21pZGlidWYuYworKysgYi9zb3VuZC9vc3MvbWlkaWJ1Zi5jCkBAIC0yOTUsNyArMjk1LDcgQEAKIAogCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogCQl7Ci0JCQkvKiBCUk9LRSBCUk9LRSBCUk9LRSAtIENBTlQgRE8gVEhJUyBXSVRIIENMSSAhISAqLworCQkJLyogQlJPS0UgQlJPS0UgQlJPS0UgLSBDQU4nVCBETyBUSElTIFdJVEggQ0xJICEhICovCiAJCQkvKiB5ZXMsIHRoaW5rIHRoZSBzYW1lLCBzbyBJIHJlbW92ZWQgdGhlIGNsaSgpIGJyYWNrZXRzIAogCQkJCVFVRVVFX0JZVEUgaXMgcHJvdGVjdGVkIGFnYWluc3QgaW50ZXJydXB0cyAqLwogCQkJaWYgKGNvcHlfZnJvbV91c2VyKChjaGFyICopICZ0bXBfZGF0YSwgJihidWYpW2NdLCAxKSkgewpkaWZmIC0tZ2l0IGEvc291bmQvb3NzL3NiX2NhcmQuYyBiL3NvdW5kL29zcy9zYl9jYXJkLmMKaW5kZXggODRlZjRkMC4uZmI1ZDcyNSAxMDA2NDQKLS0tIGEvc291bmQvb3NzL3NiX2NhcmQuYworKysgYi9zb3VuZC9vc3Mvc2JfY2FyZC5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIHNvdW5kL29zcy9zYl9jYXJkLmMKICAqCi0gKiBEZXRlY3Rpb24gcm91dGluZSBmb3IgdGhlIElTQSBTb3VuZCBCbGFzdGVyIGFuZCBjb21wYXRhYmxlIHNvdW5kCisgKiBEZXRlY3Rpb24gcm91dGluZSBmb3IgdGhlIElTQSBTb3VuZCBCbGFzdGVyIGFuZCBjb21wYXRpYmxlIHNvdW5kCiAgKiBjYXJkcy4KICAqCiAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHRU5FUkFMIFBVQkxJQyBMSUNFTlNFIChHUEwpCmRpZmYgLS1naXQgYS9zb3VuZC9vc3Mvc2JfZXNzLmMgYi9zb3VuZC9vc3Mvc2JfZXNzLmMKaW5kZXggOTg5MGNmMi4uNWM3NzNkZiAxMDA2NDQKLS0tIGEvc291bmQvb3NzL3NiX2Vzcy5jCisrKyBiL3NvdW5kL29zcy9zYl9lc3MuYwpAQCAtMTY4LDcgKzE2OCw3IEBACiAgKiBjb3JyZXNwb25kaW5nIHBsYXliYWNrIGxldmVscywgdW5sZXNzIHJlY21hc2sgc2F5cyB0aGV5IGFyZW4ndCByZWNvcmRlZC4gSW4KICAqIHRoZSBsYXR0ZXIgY2FzZSB0aGUgcmVjb3JkaW5nIHZvbHVtZXMgYXJlIDAuCiAgKiBOb3cgcmVjb3JkaW5nIGxldmVscyBvZiBpbnB1dHMgY2FuIGJlIGNvbnRyb2xsZWQsIGJ5IGNoYW5naW5nIHRoZSBwbGF5YmFjawotICogbGV2ZWxzLiBGdXRoZXJtb3JlIHNldmVyYWwgZGV2aWNlcyBjYW4gYmUgcmVjb3JkZWQgdG9nZXRoZXIgKHdoaWNoIGlzIG5vdAorICogbGV2ZWxzLiBGdXJ0aGVybW9yZSBzZXZlcmFsIGRldmljZXMgY2FuIGJlIHJlY29yZGVkIHRvZ2V0aGVyICh3aGljaCBpcyBub3QKICAqIHBvc3NpYmxlIHdpdGggdGhlIEVTMTY4OCkuCiAgKiBCZXNpZGVzIHRoZSBzZXBhcmF0ZSByZWNvcmRpbmcgbGV2ZWwgY29udHJvbCBmb3IgZWFjaCBpbnB1dCwgdGhlIGNvbW1vbgogICogcmVjb3JkaW5nIGxldmVsIGNhbiBhbHNvIGJlIGNvbnRyb2xsZWQgYnkgUkVDTEVWIGFzIGRlc2NyaWJlZCBhYm92ZS4KZGlmZiAtLWdpdCBhL3NvdW5kL29zcy9zd2FybV9jczQyOTdhLmMgYi9zb3VuZC9vc3Mvc3dhcm1fY3M0Mjk3YS5jCmluZGV4IDQ0MzU3ZDguLjA5ZDQ2NDggMTAwNjQ0Ci0tLSBhL3NvdW5kL29zcy9zd2FybV9jczQyOTdhLmMKKysrIGIvc291bmQvb3NzL3N3YXJtX2NzNDI5N2EuYwpAQCAtODc1LDcgKzg3NSw3IEBACiAJCWlmIChzLT5wcm9wX2FkYy5mbXQgJiBBRk1UX1M4IHx8IHMtPnByb3BfYWRjLmZtdCAmIEFGTVRfVTgpIHsKIAkJCS8vIAogCQkJLy8gbm93IG9ubHkgdXNlIDE2IGJpdCBjYXB0dXJlLCBkdWUgdG8gdHJ1bmNhdGlvbiBpc3N1ZQotCQkJLy8gaW4gdGhlIGNoaXAsIG5vdGljYWJsZSBkaXN0b3J0aW9uIG9jY3Vycy4KKwkJCS8vIGluIHRoZSBjaGlwLCBub3RpY2VhYmxlIGRpc3RvcnRpb24gb2NjdXJzLgogCQkJLy8gYWxsb2NhdGUgYnVmZmVyIGFuZCB0aGVuIGNvbnZlcnQgZnJvbSAxNiBiaXQgdG8gCiAJCQkvLyA4IGJpdCBmb3IgdGhlIHVzZXIgYnVmZmVyLgogCQkJLy8KZGlmZiAtLWdpdCBhL3NvdW5kL29zcy92aWRjLmMgYi9zb3VuZC9vc3MvdmlkYy5jCmluZGV4IGYwZTBjYWEuLjEyYmEyOGUgMTAwNjQ0Ci0tLSBhL3NvdW5kL29zcy92aWRjLmMKKysrIGIvc291bmQvb3NzL3ZpZGMuYwpAQCAtMjI3LDcgKzIyNyw3IEBACiAJCX0gZWxzZSB7CiAJCQkvKnByaW50aygiVklEQzogaW50ZXJuYWwgJWQgJWQgJWRcbiIsIHJhdGUsIHJhdGVfaW50LCBod3JhdGUpOyovCiAJCQlod2N0cmw9MHgwMDAwMDAwMzsKLQkJCS8qIEFsbG93IHJvdWdseSAwLjQlIHRvbGVyYW5jZSAqLworCQkJLyogQWxsb3cgcm91Z2hseSAwLjQlIHRvbGVyYW5jZSAqLwogCQkJaWYgKGRpZmZfaW50ID4gKHJhdGUvMjU2KSkKIAkJCQlyYXRlPXJhdGVfaW50OwogCQl9CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWQxODg5LmMgYi9zb3VuZC9wY2kvYWQxODg5LmMKaW5kZXggNDM4MmQwZi4uZDhmNmZkNiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FkMTg4OS5jCisrKyBiL3NvdW5kL3BjaS9hZDE4ODkuYwpAQCAtMjksNyArMjksNyBAQAogICoJUE0gc3VwcG9ydAogICoJTUlESSBzdXBwb3J0CiAgKglHYW1lIFBvcnQgc3VwcG9ydAotICoJU0cgRE1BIHN1cHBvcnQgKHRoaXMgd2lsbCBuZWVkICphbG90KiBvZiB3b3JrKQorICoJU0cgRE1BIHN1cHBvcnQgKHRoaXMgd2lsbCBuZWVkICphIGxvdCogb2Ygd29yaykKICAqLwogCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FzaWhwaS9hc2locGkuYyBiL3NvdW5kL3BjaS9hc2locGkvYXNpaHBpLmMKaW5kZXggZjUzYTMxZS4uZjhjY2M5NiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FzaWhwaS9hc2locGkuYworKysgYi9zb3VuZC9wY2kvYXNpaHBpL2FzaWhwaS5jCkBAIC05NjMsNyArOTYzLDcgQEAKIAogCS8qPyBhbHNvIGNoZWNrIEFTSTUwMDAgc2FtcGxlcmF0ZSBzb3VyY2UKIAkgICAgSWYgZXh0ZXJuYWwsIG9ubHkgc3VwcG9ydCBleHRlcm5hbCByYXRlLgotCSAgICBJZiBpbnRlcm5hbCBhbmQgb3RoZXIgc3RyZWFtIHBsYXlpbmcsIGNhbnQgc3dpdGNoCisJICAgIElmIGludGVybmFsIGFuZCBvdGhlciBzdHJlYW0gcGxheWluZywgY2FuJ3Qgc3dpdGNoCiAJKi8KIAogCWluaXRfdGltZXIoJmRwY20tPnRpbWVyKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hc2locGkvaHBpLmggYi9zb3VuZC9wY2kvYXNpaHBpL2hwaS5oCmluZGV4IDZmYzAyNWMuLjI1NTQyOWMgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hc2locGkvaHBpLmgKKysrIGIvc291bmQvcGNpL2FzaWhwaS9ocGkuaApAQCAtNzI1LDcgKzcyNSw3IEBACiAjZGVmaW5lIEhQSV9QQURfVElUTEVfTEVOICAgICAgICAgICAgICAgNjQKIC8qKiBUaGUgdGV4dCBzdHJpbmcgY29udGFpbmluZyB0aGUgY29tbWVudC4gKi8KICNkZWZpbmUgSFBJX1BBRF9DT01NRU5UX0xFTiAgICAgICAgICAgICAyNTYKLS8qKiBUaGUgUFRZIHdoZW4gdGhlIHR1bmVyIGhhcyBub3QgcmVjaWV2ZWQgYW55IFBUWS4gKi8KKy8qKiBUaGUgUFRZIHdoZW4gdGhlIHR1bmVyIGhhcyBub3QgcmVjZWl2ZWQgYW55IFBUWS4gKi8KICNkZWZpbmUgSFBJX1BBRF9QUk9HUkFNX1RZUEVfSU5WQUxJRCAgICAweGZmZmYKIC8qKiBcfSAqLwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXNpaHBpL2hwaTYwMDAuYyBiL3NvdW5kL3BjaS9hc2locGkvaHBpNjAwMC5jCmluZGV4IDNlM2MyZWYuLjhjOGFhYzQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hc2locGkvaHBpNjAwMC5jCisrKyBiL3NvdW5kL3BjaS9hc2locGkvaHBpNjAwMC5jCkBAIC00MjMsNyArNDIzLDcgQEAKIAogCWFvLnByaXYgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgaHBpX2h3X29iaiksIEdGUF9LRVJORUwpOwogCWlmICghYW8ucHJpdikgewotCQlIUElfREVCVUdfTE9HKEVSUk9SLCAiY2FudCBnZXQgbWVtIGZvciBhZGFwdGVyIG9iamVjdFxuIik7CisJCUhQSV9ERUJVR19MT0coRVJST1IsICJjYW4ndCBnZXQgbWVtIGZvciBhZGFwdGVyIG9iamVjdFxuIik7CiAJCXBoci0+ZXJyb3IgPSBIUElfRVJST1JfTUVNT1JZX0FMTE9DOwogCQlyZXR1cm47CiAJfQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FzaWhwaS9ocGk2MjA1LmMgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYwppbmRleCA2MjA1MjViLi4yMmU5ZjA4IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYworKysgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaTYyMDUuYwpAQCAtNDY2LDcgKzQ2Niw3IEBACiAKIAlhby5wcml2ID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGhwaV9od19vYmopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWFvLnByaXYpIHsKLQkJSFBJX0RFQlVHX0xPRyhFUlJPUiwgImNhbnQgZ2V0IG1lbSBmb3IgYWRhcHRlciBvYmplY3RcbiIpOworCQlIUElfREVCVUdfTE9HKEVSUk9SLCAiY2FuJ3QgZ2V0IG1lbSBmb3IgYWRhcHRlciBvYmplY3RcbiIpOwogCQlwaHItPmVycm9yID0gSFBJX0VSUk9SX01FTU9SWV9BTExPQzsKIAkJcmV0dXJuOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hc2locGkvaHBpX2ludGVybmFsLmggYi9zb3VuZC9wY2kvYXNpaHBpL2hwaV9pbnRlcm5hbC5oCmluZGV4IGFmNjc4YmUuLjNiOWZkMTEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hc2locGkvaHBpX2ludGVybmFsLmgKKysrIGIvc291bmQvcGNpL2FzaWhwaS9ocGlfaW50ZXJuYWwuaApAQCAtNjA3LDcgKzYwNyw3IEBACiAjZW5kaWYKIAogc3RydWN0IGhwaV9idWZmZXIgewotICAvKiogcGxhY2Vob2RlciBmb3IgYmFja3dhcmQgY29tcGF0YWJpbGl0eSAoc2VlIGR3QnVmZmVyU2l6ZSkgKi8KKyAgLyoqIHBsYWNlaG9kZXIgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgKHNlZSBkd0J1ZmZlclNpemUpICovCiAJc3RydWN0IGhwaV9tc2dfZm9ybWF0IHJlc2VydmVkOwogCXUzMiBjb21tYW5kOyAvKio8IEhQSV9CVUZGRVJfQ01EX3h4eCovCiAJdTMyIHBjaV9hZGRyZXNzOyAvKio8IFBDSSBwaHlzaWNhbCBhZGRyZXNzIG9mIGJ1ZmZlciBmb3IgRFNQIERNQSAqLwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FzaWhwaS9ocGltc2d4LmMgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaW1zZ3guYwppbmRleCBiY2JkZjMwLi4zNjAwMjhiIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXNpaHBpL2hwaW1zZ3guYworKysgYi9zb3VuZC9wY2kvYXNpaHBpL2hwaW1zZ3guYwpAQCAtNzIyLDcgKzcyMiw3IEBACiAJCXJldHVybiBwaHItPmVycm9yOwogCX0KIAlpZiAoaHIuZXJyb3IgPT0gMCkgewotCQkvKiB0aGUgYWRhcHRlciB3YXMgY3JlYXRlZCBzdWNjZXNmdWxseQorCQkvKiB0aGUgYWRhcHRlciB3YXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkKIAkJICAgc2F2ZSB0aGUgbWFwcGluZyBmb3IgZnV0dXJlIHVzZSAqLwogCQlocGlfZW50cnlfcG9pbnRzW2hyLnUucy5hZGFwdGVyX2luZGV4XSA9IGVudHJ5X3BvaW50X2Z1bmM7CiAJCS8qIHByZXBhcmUgYWRhcHRlciAocHJlLW9wZW4gc3RyZWFtcyBldGMuKSAqLwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuaCBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmgKaW5kZXggZWNiOGY0ZC4uMDJmNmUwOCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuaAorKysgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5oCkBAIC0xMDQsNyArMTA0LDcgQEAKICNkZWZpbmUgTUlYX1BMQVlCKHgpICh2b3J0ZXgtPm1peHBsYXliW3hdKQogI2RlZmluZSBNSVhfU1BESUYoeCkgKHZvcnRleC0+bWl4c3BkaWZbeF0pCiAKLSNkZWZpbmUgTlJfV1RQQiAweDIwCQkvKiBXVCBjaGFubmVscyBwZXIgZWFoYyBiYW5rLiAqLworI2RlZmluZSBOUl9XVFBCIDB4MjAJCS8qIFdUIGNoYW5uZWxzIHBlciBlYWNoIGJhbmsuICovCiAKIC8qIFN0cnVjdHMgKi8KIHR5cGVkZWYgc3RydWN0IHsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX2EzZC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfYTNkLmMKaW5kZXggZjRhYThmZi4uOWFlOGIzYiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfYTNkLmMKKysrIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfYTNkLmMKQEAgLTUzLDcgKzUzLDcgQEAKIH0KIAogI2VuZGlmCi0vKiBBdG1vc3BoZXJpYyBhYnNvcmJ0aW9uLiAqLworLyogQXRtb3NwaGVyaWMgYWJzb3JwdGlvbi4gKi8KIAogc3RhdGljIHZvaWQKIGEzZHNyY19TZXRBdG1vc1RhcmdldChhM2RzcmNfdCAqIGEsIHNob3J0IGFhLCBzaG9ydCBiLCBzaG9ydCBjLCBzaG9ydCBkLApAQCAtODM1LDcgKzgzNSw3IEBACiAJCXBhcmFtc1tpXSA9IHVjb250cm9sLT52YWx1ZS5pbnRlZ2VyLnZhbHVlW2ldOwogCS8qIFRyYW5zbGF0ZSBnZW5lcmljIGZpbHRlciBwYXJhbXMgdG8gYTNkIGZpbHRlciBwYXJhbXMuICovCiAJdm9ydGV4X2EzZF90cmFuc2xhdGVfZmlsdGVyKGEtPmZpbHRlciwgcGFyYW1zKTsKLQkvKiBBdG1vc3BoZXJpYyBhYnNvcmJ0aW9uIGFuZCBmaWx0ZXJpbmcuICovCisJLyogQXRtb3NwaGVyaWMgYWJzb3JwdGlvbiBhbmQgZmlsdGVyaW5nLiAqLwogCWEzZHNyY19TZXRBdG1vc1RhcmdldChhLCBhLT5maWx0ZXJbMF0sCiAJCQkgICAgICBhLT5maWx0ZXJbMV0sIGEtPmZpbHRlclsyXSwKIAkJCSAgICAgIGEtPmZpbHRlclszXSwgYS0+ZmlsdGVyWzRdKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwX3BjbS5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfcGNtLmMKaW5kZXggNTQzOWQ2Ni4uMzNmMGJhNSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfcGNtLmMKKysrIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDBfcGNtLmMKQEAgLTUxNSw3ICs1MTUsNyBAQAogCQlyZXR1cm4gLUVOT0RFVjsKIAogCS8qIGlkeCBpbmRpY2F0ZXMgd2hpY2gga2luZCBvZiBQQ00gZGV2aWNlLiBBREIsIFNQRElGLCBJMlMgYW5kIEEzRCBzaGFyZSB0aGUgCi0JICogc2FtZSBkbWEgZW5naW5lLiBXVCB1c2VzIGl0IG93biBzZXBhcmF0ZSBkbWEgZW5naW5lIHdoY2loIGNhbnQgY2FwdHVyZS4gKi8KKwkgKiBzYW1lIGRtYSBlbmdpbmUuIFdUIHVzZXMgaXQgb3duIHNlcGFyYXRlIGRtYSBlbmdpbmUgd2hpY2ggY2FuJ3QgY2FwdHVyZS4gKi8KIAlpZiAoaWR4ID09IFZPUlRFWF9QQ01fQURCKQogCQlucl9jYXB0ID0gbnI7CiAJZWxzZQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F6dDMzMjguYyBiL3NvdW5kL3BjaS9henQzMzI4LmMKaW5kZXggNTcxNWM0ZDAuLjliN2E2MzQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9henQzMzI4LmMKKysrIGIvc291bmQvcGNpL2F6dDMzMjguYwpAQCAtMTQwLDcgKzE0MCw3IEBACiAgKiAgUG9zc2libGUgcmVtZWRpZXM6CiAgKiAgLSB1c2Ugc3BlYWtlciAoYW1wbGlmaWVyKSBvdXRwdXQgaW5zdGVhZCBvZiBoZWFkcGhvbmUgb3V0cHV0CiAgKiAgICAoaW4gY2FzZSBjcmFja2xpbmcgaXMgZHVlIHRvIG92ZXJsb2FkZWQgb3V0cHV0IGNsaXBwaW5nKQotICogIC0gcGx1ZyBjYXJkIGludG8gYSBkaWZmZXJlbnQgUENJIHNsb3QsIHByZWZlcnJhYmx5IG9uZSB0aGF0IGlzbid0IHNoYXJlZAorICogIC0gcGx1ZyBjYXJkIGludG8gYSBkaWZmZXJlbnQgUENJIHNsb3QsIHByZWZlcmFibHkgb25lIHRoYXQgaXNuJ3Qgc2hhcmVkCiAgKiAgICB0b28gbXVjaCAodGhpcyBoZWxwcyBhIGxvdCwgYnV0IG5vdCBjb21wbGV0ZWx5ISkKICAqICAtIGdldCByaWQgb2YgUENJIFZHQSBjYXJkLCB1c2UgQUdQIGluc3RlYWQKICAqICAtIHVwZ3JhZGUgb3IgZG93bmdyYWRlIEJJT1MKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2LmggYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNi5oCmluZGV4IGZjNTNiOWIuLmU4ZThjY2MgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2LmgKKysrIGIvc291bmQvcGNpL2NhMDEwNi9jYTAxMDYuaApAQCAtNTEsNyArNTEsNyBAQAogICogICAgQWRkIHN1cHBvcnQgZm9yIG11dGUgY29udHJvbCBvbiBTQiBMaXZlIDI0Yml0IChjYXJkcyB3LyBTUEkgREFDKQogICoKICAqCi0gKiAgVGhpcyBjb2RlIHdhcyBpbml0YWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CisgKiAgVGhpcyBjb2RlIHdhcyBpbml0aWFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgogICogIENvcHlyaWdodCAoYykgYnkgRnJhbmNpc2NvIE1vcmFlcyA8Zm1vcmFlc0BuYy5yci5jb20+CiAgKgogICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTc1LDcgKzE3NSw3IEBACiAvKiBDQTAxMDYgcG9pbnRlci1vZmZzZXQgcmVnaXN0ZXIgc2V0LCBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBQVFIgYW5kIERBVEEgcmVnaXN0ZXJzICAgICAgICAgICAgICAgICAgICAgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotLyogSW5pdGFsbHkgYWxsIHJlZ2lzdGVycyBmcm9tIDB4MDAgdG8gMHgzZiBoYXZlIHplcm8gY29udGVudHMuICovCisvKiBJbml0aWFsbHkgYWxsIHJlZ2lzdGVycyBmcm9tIDB4MDAgdG8gMHgzZiBoYXZlIHplcm8gY29udGVudHMuICovCiAjZGVmaW5lIFBMQVlCQUNLX0xJU1RfQUREUgkweDAwCQkvKiBCYXNlIERNQSBhZGRyZXNzIG9mIGEgbGlzdCBvZiBwb2ludGVycyB0byBlYWNoIHBlcmlvZC9zaXplICovCiAJCQkJCQkvKiBPbmUgbGlzdCBlbnRyeTogNCBieXRlcyBmb3IgRE1BIGFkZHJlc3MsIAogCQkJCQkJICogNCBieXRlcyBmb3IgcGVyaW9kX3NpemUgPDwgMTYuCkBAIC0yMjMsNyArMjIzLDcgQEAKICAqIFRoZSBqYWNrIGhhcyA0IHBvbGVzLiBJIHdpbGwgY2FsbCAxIC0gVGlwLCAyIC0gTmV4dCB0byAxLCAzIC0gTmV4dCB0byAyLCA0IC0gTmV4dCB0byAzCiAgKiBGb3IgQW5hbG9ndWU6IDEgLT4gQ2VudGVyIFNwZWFrZXIsIDIgLT4gU3ViIFdvb2ZlciwgMyAtPiBHcm91bmQsIDQgLT4gR3JvdW5kCiAgKiBGb3IgRGlnaXRhbDogMSAtPiBGcm9udCBTUERJRiwgMiAtPiBSZWFyIFNQRElGLCAzIC0+IENlbnRlci9TdWJ3b29mZXIgU1BESUYsIDQgLT4gR3JvdW5kLgotICogU3RhbmRhcmQgNCBwb2xlIFZpZGVvIEEvViBjYWJsZSB3aXRoIFJDQSBvdXRwdXRzOiAxIC0+IFdoaXRlLCAyIC0+IFllbGxvdywgMyAtPiBTaGVpbGQgb24gYWxsIHRocmVlLCA0IC0+IFJlZC4KKyAqIFN0YW5kYXJkIDQgcG9sZSBWaWRlbyBBL1YgY2FibGUgd2l0aCBSQ0Egb3V0cHV0czogMSAtPiBXaGl0ZSwgMiAtPiBZZWxsb3csIDMgLT4gU2hpZWxkIG9uIGFsbCB0aHJlZSwgNCAtPiBSZWQuCiAgKiBTbywgZnJvbSB0aGlzIHlvdSBjYW4gc2VlIHRoYXQgeW91IGNhbm5vdCB1c2UgYSBTdGFuZGFyZCA0IHBvbGUgVmlkZW8gQS9WIGNhYmxlIHdpdGggdGhlIFNCIEF1ZGlneSBMUyBjYXJkLgogICovCiAvKiBUaGUgRnJvbnQgU1BESUYgUENNIGdldHMgbWl4ZWQgd2l0aCBzYW1wbGVzIGZyb20gdGhlIEFDOTcgY29kZWMsIHNvIGNhbiBvbmx5IHdvcmsgZm9yIFN0ZXJlbyBQQ00gYW5kIG5vdCBBQzMvRFRTCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9tYWluLmMgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9tYWluLmMKaW5kZXggMDFiNDkzOC4uNDM3NzU5MiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWFpbi5jCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X21haW4uYwpAQCAtMTE3LDcgKzExNyw3IEBACiAgKiAgICBEQUM6IFVua25vd24KICAqICAgIFRyeWluZyB0byBoYW5kbGUgaXQgbGlrZSB0aGUgU0IwNDEwLgogICoKLSAqICBUaGlzIGNvZGUgd2FzIGluaXRhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKKyAqICBUaGlzIGNvZGUgd2FzIGluaXRpYWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CiAgKiAgQ29weXJpZ2h0IChjKSBieSBGcmFuY2lzY28gTW9yYWVzIDxmbW9yYWVzQG5jLnJyLmNvbT4KICAqCiAgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9taXhlci5jIGIvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfbWl4ZXIuYwppbmRleCA2MzBhYTQ5Li44NGYzZjkyIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9taXhlci5jCisrKyBiL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X21peGVyLmMKQEAgLTQyLDcgKzQyLDcgQEAKICAqICAwLjAuMTgKICAqICAgIEFkZCBzdXBwb3J0IGZvciBtdXRlIGNvbnRyb2wgb24gU0IgTGl2ZSAyNGJpdCAoY2FyZHMgdy8gU1BJIERBQykKICAqCi0gKiAgVGhpcyBjb2RlIHdhcyBpbml0YWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CisgKiAgVGhpcyBjb2RlIHdhcyBpbml0aWFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgogICogIENvcHlyaWdodCAoYykgYnkgRnJhbmNpc2NvIE1vcmFlcyA8Zm1vcmFlc0BuYy5yci5jb20+CiAgKgogICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfcHJvYy5jIGIvc291bmQvcGNpL2NhMDEwNi9jYTAxMDZfcHJvYy5jCmluZGV4IGJhOTY0MjguLmM2OTQ0NjQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jYTAxMDYvY2EwMTA2X3Byb2MuYworKysgYi9zb3VuZC9wY2kvY2EwMTA2L2NhMDEwNl9wcm9jLmMKQEAgLTQyLDcgKzQyLDcgQEAKICAqICAwLjAuMTgKICAqICAgIEltcGxlbWVudCBzdXBwb3J0IGZvciBMaW5lLWluIGNhcHR1cmUgb24gU0IgTGl2ZSAyNGJpdC4KICAqCi0gKiAgVGhpcyBjb2RlIHdhcyBpbml0YWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CisgKiAgVGhpcyBjb2RlIHdhcyBpbml0aWFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgogICogIENvcHlyaWdodCAoYykgYnkgRnJhbmNpc2NvIE1vcmFlcyA8Zm1vcmFlc0BuYy5yci5jb20+CiAgKgogICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NtaXBjaS5jIGIvc291bmQvcGNpL2NtaXBjaS5jCmluZGV4IGI1YmIwMzYuLmY0ZTU3MzUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jbWlwY2kuYworKysgYi9zb3VuZC9wY2kvY21pcGNpLmMKQEAgLTczLDcgKzczLDcgQEAKIG1vZHVsZV9wYXJhbV9hcnJheShmbV9wb3J0LCBsb25nLCBOVUxMLCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0MoZm1fcG9ydCwgIkZNIHBvcnQuIik7CiBtb2R1bGVfcGFyYW1fYXJyYXkoc29mdF9hYzMsIGJvb2wsIE5VTEwsIDA0NDQpOwotTU9EVUxFX1BBUk1fREVTQyhzb2Z0X2FjMywgIlNvZndhcmUtY29udmVyc2lvbiBvZiByYXcgU1BESUYgcGFja2V0cyAobW9kZWwgMDMzIG9ubHkpLiIpOworTU9EVUxFX1BBUk1fREVTQyhzb2Z0X2FjMywgIlNvZnR3YXJlLWNvbnZlcnNpb24gb2YgcmF3IFNQRElGIHBhY2tldHMgKG1vZGVsIDAzMyBvbmx5KS4iKTsKICNpZmRlZiBTVVBQT1JUX0pPWVNUSUNLCiBtb2R1bGVfcGFyYW1fYXJyYXkoam95c3RpY2tfcG9ydCwgaW50LCBOVUxMLCAwNDQ0KTsKIE1PRFVMRV9QQVJNX0RFU0Moam95c3RpY2tfcG9ydCwgIkpveXN0aWNrIHBvcnQgYWRkcmVzcy4iKTsKQEAgLTY1Niw4ICs2NTYsOCBAQAogfQogCiAvKgotICogUHJvZ3JhbSBwbGwgcmVnaXN0ZXIgYml0cywgSSBhc3N1bWUgdGhhdCB0aGUgOCByZWdpc3RlcnMgMHhmOCB1cHRvIDB4ZmYKLSAqIGFyZSBtYXBwZWQgb250byB0aGUgOCBBREMvREFDIHNhbXBsaW5nIGZyZXF1ZW5jeSB3aGljaCBjYW4gYmUgY2hvb3NlbgorICogUHJvZ3JhbSBwbGwgcmVnaXN0ZXIgYml0cywgSSBhc3N1bWUgdGhhdCB0aGUgOCByZWdpc3RlcnMgMHhmOCB1cCB0byAweGZmCisgKiBhcmUgbWFwcGVkIG9udG8gdGhlIDggQURDL0RBQyBzYW1wbGluZyBmcmVxdWVuY3kgd2hpY2ggY2FuIGJlIGNob3NlbgogICogYXQgdGhlIHJlZ2lzdGVyIENNX1JFR19GVU5DVFJMMSAoMHgwNCkuCiAgKiBQcm9ibGVtOiBvdGhlciB3YXlzIGFyZSBhbHNvIHBvc3NpYmxlIChhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhhdD8pCiAgKi8KQEAgLTY2Niw3ICs2NjYsNyBAQAogCXVuc2lnbmVkIGludCByZWcgPSBDTV9SRUdfUExMICsgc2xvdDsKIAkvKgogCSAqIEd1ZXNzIHRoYXQgdGhpcyBwcm9ncmFtcyBhdCByZWcuIDB4MDQgdGhlIHBvcyAxNToxMy8xMjoxMAotCSAqIGZvciBEU0ZDL0FTRkMgKDAwMCB1cHRvIDExMSkuCisJICogZm9yIERTRkMvQVNGQyAoMDAwIHVwIHRvIDExMSkuCiAJICovCiAKIAkvKiBGSVhNRTogSW5pdCAoRG8gd2UndmUgdG8gc2V0IGFuIG90aGVyIHJlZ2lzdGVyIGZpcnN0IGJlZm9yZSBwcm9ncmFtbWluZz8pICovCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3R4ZmkvY3RhdGMuYyBiL3NvdW5kL3BjaS9jdHhmaS9jdGF0Yy5jCmluZGV4IGI5MzIxNTQuLjEzZjMzYzAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jdHhmaS9jdGF0Yy5jCisrKyBiL3NvdW5kL3BjaS9jdHhmaS9jdGF0Yy5jCkBAIC0xNjI3LDcgKzE2MjcsNyBAQAogICogIENyZWF0ZXMgYW5kIGluaXRpYWxpemVzIGEgaGFyZHdhcmUgbWFuYWdlci4KICAqCiAgKiAgQ3JlYXRlcyBrbWFsbG9jYXRlZCBjdF9hdGMgc3RydWN0dXJlLiBJbml0aWFsaXplcyBoYXJkd2FyZS4KLSAqICBSZXR1cm5zIDAgaWYgc3VjZWVkcywgb3IgbmVnYXRpdmUgZXJyb3IgY29kZSBpZiBmYWlscy4KKyAqICBSZXR1cm5zIDAgaWYgc3VjY2VlZHMsIG9yIG5lZ2F0aXZlIGVycm9yIGNvZGUgaWYgZmFpbHMuCiAgKi8KIAogaW50IF9fZGV2aW5pdCBjdF9hdGNfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSwKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jdHhmaS9jdGh3MjBrMS5jIGIvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMKaW5kZXggMGNmNDAwZi4uYTVjOTU3ZCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMKKysrIGIvc291bmQvcGNpL2N0eGZpL2N0aHcyMGsxLmMKQEAgLTEyODUsNyArMTI4NSw3IEBACiAJaHdfd3JpdGVfMjBreChodywgUFRQQUxYLCBwdHBfcGh5c19sb3cpOwogCWh3X3dyaXRlXzIwa3goaHcsIFBUUEFIWCwgcHRwX3BoeXNfaGlnaCk7CiAJaHdfd3JpdGVfMjBreChodywgVFJOQ1RMLCB0cm5jdGwpOwotCWh3X3dyaXRlXzIwa3goaHcsIFRSTklTLCAweDIwMGMwMSk7IC8qIHJlYWx5IG5lZWRlZD8gKi8KKwlod193cml0ZV8yMGt4KGh3LCBUUk5JUywgMHgyMDBjMDEpOyAvKiByZWFsbHkgbmVlZGVkPyAqLwogCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvZW11MTBrMS9tZW1vcnkuYyBiL3NvdW5kL3BjaS9lbXUxMGsxL21lbW9yeS5jCmluZGV4IDk1N2EzMTEuLmMyNTA2MTQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lbXUxMGsxL21lbW9yeS5jCisrKyBiL3NvdW5kL3BjaS9lbXUxMGsxL21lbW9yeS5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKIC8qCiAgKiBtYXAgdGhlIGdpdmVuIG1lbW9yeSBibG9jayBvbiBQVEIuCiAgKiBpZiB0aGUgYmxvY2sgaXMgYWxyZWFkeSBtYXBwZWQsIHVwZGF0ZSB0aGUgbGluayBvcmRlci4KLSAqIGlmIG5vIGVtcHR5IHBhZ2VzIGFyZSBmb3VuZCwgdHJpZXMgdG8gcmVsZWFzZSB1bnNlZCBtZW1vcnkgYmxvY2tzCisgKiBpZiBubyBlbXB0eSBwYWdlcyBhcmUgZm91bmQsIHRyaWVzIHRvIHJlbGVhc2UgdW51c2VkIG1lbW9yeSBibG9ja3MKICAqIGFuZCByZXRyeSB0aGUgbWFwcGluZy4KICAqLwogaW50IHNuZF9lbXUxMGsxX21lbWJsa19tYXAoc3RydWN0IHNuZF9lbXUxMGsxICplbXUsIHN0cnVjdCBzbmRfZW11MTBrMV9tZW1ibGsgKmJsaykKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9lbXUxMGsxL3AxNnYuYyBiL3NvdW5kL3BjaS9lbXUxMGsxL3AxNnYuYwppbmRleCA2MWI4YWIzLi5hODFkYzQ0IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvZW11MTBrMS9wMTZ2LmMKKysrIGIvc291bmQvcGNpL2VtdTEwazEvcDE2di5jCkBAIC02OSw3ICs2OSw3IEBACiAgKiAgICBBREM6IFBoaWxpcHMgMTM2MVQgKFN0ZXJlbyAyNGJpdCkKICAqICAgIERBQzogQ1M0MzgyLUsgKDgtY2hhbm5lbCwgMjRiaXQsIDE5MktoeikKICAqCi0gKiAgVGhpcyBjb2RlIHdhcyBpbml0YWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CisgKiAgVGhpcyBjb2RlIHdhcyBpbml0aWFsbHkgYmFzZWQgb24gY29kZSBmcm9tIEFMU0EncyBlbXUxMGsxeC5jIHdoaWNoIGlzOgogICogIENvcHlyaWdodCAoYykgYnkgRnJhbmNpc2NvIE1vcmFlcyA8Zm1vcmFlc0BuYy5yci5jb20+CiAgKgogICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2VtdTEwazEvcDE2di5oIGIvc291bmQvcGNpL2VtdTEwazEvcDE2di5oCmluZGV4IDAwZjQ4MTcuLjRlMGVlMWEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9lbXUxMGsxL3AxNnYuaAorKysgYi9zb3VuZC9wY2kvZW11MTBrMS9wMTZ2LmgKQEAgLTU5LDcgKzU5LDcgQEAKICAqICAgIEFEQzogUGhpbGlwcyAxMzYxVCAoU3RlcmVvIDI0Yml0KQogICogICAgREFDOiBDUzQzODItSyAoOC1jaGFubmVsLCAyNGJpdCwgMTkyS2h6KQogICoKLSAqICBUaGlzIGNvZGUgd2FzIGluaXRhbGx5IGJhc2VkIG9uIGNvZGUgZnJvbSBBTFNBJ3MgZW11MTBrMXguYyB3aGljaCBpczoKKyAqICBUaGlzIGNvZGUgd2FzIGluaXRpYWxseSBiYXNlZCBvbiBjb2RlIGZyb20gQUxTQSdzIGVtdTEwazF4LmMgd2hpY2ggaXM6CiAgKiAgQ29weXJpZ2h0IChjKSBieSBGcmFuY2lzY28gTW9yYWVzIDxmbW9yYWVzQG5jLnJyLmNvbT4KICAqCiAgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC04Niw3ICs4Niw3IEBACiAgKiBUaGUgc2FtcGxlIHJhdGUgaXMgYWxzbyBjb250cm9sbGVkIGJ5IHRoZSBzYW1lIHJlZ2lzdGVycyB0aGF0IGNvbnRyb2wgdGhlIHJhdGUgb2YgdGhlIEVNVTEwSzIgc2FtcGxlIHJhdGUgY29udmVydGVycy4KICAqLwogCi0vKiBJbml0YWxseSBhbGwgcmVnaXN0ZXJzIGZyb20gMHgwMCB0byAweDNmIGhhdmUgemVybyBjb250ZW50cy4gKi8KKy8qIEluaXRpYWxseSBhbGwgcmVnaXN0ZXJzIGZyb20gMHgwMCB0byAweDNmIGhhdmUgemVybyBjb250ZW50cy4gKi8KICNkZWZpbmUgUExBWUJBQ0tfTElTVF9BRERSCTB4MDAJCS8qIEJhc2UgRE1BIGFkZHJlc3Mgb2YgYSBsaXN0IG9mIHBvaW50ZXJzIHRvIGVhY2ggcGVyaW9kL3NpemUgKi8KIAkJCQkJCS8qIE9uZSBsaXN0IGVudHJ5OiA0IGJ5dGVzIGZvciBETUEgYWRkcmVzcywgCiAJCQkJCQkgKiA0IGJ5dGVzIGZvciBwZXJpb2Rfc2l6ZSA8PCAxNi4KZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMgYi9zb3VuZC9wY2kvaGRhL2hkYV9jb2RlYy5jCmluZGV4IDJjNzllOTYuLjQzMGY0MWQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvaGRhX2NvZGVjLmMKKysrIGIvc291bmQvcGNpL2hkYS9oZGFfY29kZWMuYwpAQCAtMzY2MSw3ICszNjYxLDcgQEAKICAqIHdpdGggdGhlIHByb3BlciBwYXJhbWV0ZXJzIGZvciBzZXQgdXAuCiAgKiBvcHMuY2xlYW51cCBzaG91bGQgYmUgY2FsbGVkIGluIGh3X2ZyZWUgZm9yIGNsZWFuIHVwIG9mIHN0cmVhbXMuCiAgKgotICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bGwsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KKyAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZS4KICAqLwogaW50IF9fZGV2aW5pdCBzbmRfaGRhX2J1aWxkX3BjbXMoc3RydWN0IGhkYV9idXMgKmJ1cykKIHsKQEAgLTQ4NTEsNyArNDg1MSw3IEBACiAgKgogICogUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwuCiAgKgotICogVGhpcyBmdWNudGlvbiBpcyBkZWZpbmVkIG9ubHkgd2hlbiBQT1dFUl9TQVZFIGlzbid0IHNldC4KKyAqIFRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZCBvbmx5IHdoZW4gUE9XRVJfU0FWRSBpc24ndCBzZXQuCiAgKiBJbiB0aGUgcG93ZXItc2F2ZSBtb2RlLCB0aGUgY29kZWMgaXMgcmVzdW1lZCBkeW5hbWljYWxseS4KICAqLwogaW50IHNuZF9oZGFfcmVzdW1lKHN0cnVjdCBoZGFfYnVzICpidXMpCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3JlYWx0ZWsuYyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCmluZGV4IDEyYzZmNDUuLjdlMjhhNjQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCisrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfcmVhbHRlay5jCkBAIC01NDksNyArNTQ5LDcgQEAKIAogLyoKICAqIENvbnRyb2wgdGhlIG1vZGUgb2YgcGluIHdpZGdldCBzZXR0aW5ncyB2aWEgdGhlIG1peGVyLiAgInBjIiBpcyB1c2VkCi0gKiBpbnN0ZWFkIG9mICIlIiB0byBhdm9pZCBjb25zZXF1ZW5jZXMgb2YgYWNjaWRlbnRseSB0cmVhdGluZyB0aGUgJSBhcworICogaW5zdGVhZCBvZiAiJSIgdG8gYXZvaWQgY29uc2VxdWVuY2VzIG9mIGFjY2lkZW50YWxseSB0cmVhdGluZyB0aGUgJSBhcwogICogYmVpbmcgcGFydCBvZiBhIGZvcm1hdCBzcGVjaWZpZXIuICBNYXhpbXVtIGFsbG93ZWQgbGVuZ3RoIG9mIGEgdmFsdWUgaXMKICAqIDYzIGNoYXJhY3RlcnMgcGx1cyBOVUxMIHRlcm1pbmF0b3IuCiAgKgpAQCAtOTgzNiw3ICs5ODM2LDcgQEAKIAogCVNORF9QQ0lfUVVJUksoMHgxMDI4LCAweDAyMGQsICJEZWxsIEluc3Bpcm9uIDUzMCIsIEFMQzg4OF82U1RfREVMTCksCiAKLQlTTkRfUENJX1FVSVJLKDB4MTAzYywgMHgyYTNkLCAiSFAgUGF2aWxsaW9uIiwgQUxDODgzXzZTVF9ESUcpLAorCVNORF9QQ0lfUVVJUksoMHgxMDNjLCAweDJhM2QsICJIUCBQYXZpbGlvbiIsIEFMQzg4M182U1RfRElHKSwKIAlTTkRfUENJX1FVSVJLKDB4MTAzYywgMHgyYTRmLCAiSFAgU2FtYmEiLCBBTEM4ODhfM1NUX0hQKSwKIAlTTkRfUENJX1FVSVJLKDB4MTAzYywgMHgyYTYwLCAiSFAgTHVja25vdyIsIEFMQzg4OF8zU1RfSFApLAogCVNORF9QQ0lfUVVJUksoMHgxMDNjLCAweDJhNjEsICJIUCBOZXR0bGUiLCBBTEM4ODNfNlNUX0RJRyksCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaGRhL3BhdGNoX3NpZ21hdGVsLmMgYi9zb3VuZC9wY2kvaGRhL3BhdGNoX3NpZ21hdGVsLmMKaW5kZXggMDVmY2Q2MC4uMTM5NTk5MSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2hkYS9wYXRjaF9zaWdtYXRlbC5jCisrKyBiL3NvdW5kL3BjaS9oZGEvcGF0Y2hfc2lnbWF0ZWwuYwpAQCAtMjQ3NSw3ICsyNDc1LDcgQEAKICAKIAlzcGVjLT5ocF9zd2l0Y2ggPSB1Y29udHJvbC0+dmFsdWUuaW50ZWdlci52YWx1ZVswXSA/IG5pZCA6IDA7CiAKLQkvKiBjaGVjayB0byBiZSBzdXJlIHRoYXQgdGhlIHBvcnRzIGFyZSB1cHRvIGRhdGUgd2l0aAorCS8qIGNoZWNrIHRvIGJlIHN1cmUgdGhhdCB0aGUgcG9ydHMgYXJlIHVwIHRvIGRhdGUgd2l0aAogCSAqIHN3aXRjaCBjaGFuZ2VzCiAJICovCiAJc3RhY19pc3N1ZV91bnNvbF9ldmVudChjb2RlYywgbmlkKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pY2UxNzEyL2F1cmVvbi5jIGIvc291bmQvcGNpL2ljZTE3MTIvYXVyZW9uLmMKaW5kZXggMmY2MjUyMi4uM2U0ZjhjMSAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2ljZTE3MTIvYXVyZW9uLmMKKysrIGIvc291bmQvcGNpL2ljZTE3MTIvYXVyZW9uLmMKQEAgLTE0OCw3ICsxNDgsNyBAQAogCXVkZWxheSgxMDApOwogCS8qCiAJICogc2VuZCBkZXZpY2UgYWRkcmVzcywgY29tbWFuZCBhbmQgdmFsdWUsCi0JICogc2tpcHBpbmcgYWNrIGN5Y2xlcyBpbmJldHdlZW4KKwkgKiBza2lwcGluZyBhY2sgY3ljbGVzIGluIGJldHdlZW4KIAkgKi8KIAlmb3IgKGogPSAwOyBqIDwgMzsgaisrKSB7CiAJCXN3aXRjaCAoaikgewpAQCAtMjE0Myw3ICsyMTQzLDcgQEAKIAkJaWNlLT5udW1fdG90YWxfYWRjcyA9IDI7CiAJfQogCi0JLyogdG8gcmVtZWJlciB0aGUgcmVnaXN0ZXIgdmFsdWVzIG9mIENTODQxNSAqLworCS8qIHRvIHJlbWVtYmVyIHRoZSByZWdpc3RlciB2YWx1ZXMgb2YgQ1M4NDE1ICovCiAJaWNlLT5ha20gPSBremFsbG9jKHNpemVvZihzdHJ1Y3Qgc25kX2FrbTR4eHgpLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWljZS0+YWttKQogCQlyZXR1cm4gLUVOT01FTTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MTIuYyBiL3NvdW5kL3BjaS9pY2UxNzEyL2ljZTE3MTIuYwppbmRleCA0ZmM2ZDhiLi5mNDU5NGQ3IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvaWNlMTcxMi9pY2UxNzEyLmMKKysrIGIvc291bmQvcGNpL2ljZTE3MTIvaWNlMTcxMi5jCkBAIC0yNzU1LDcgKzI3NTUsNyBAQAogCQkJcmV0dXJuIGVycjsKIAkJfQogCQlpZiAoYy0+bXB1NDAxXzFfbmFtZSkKLQkJCS8qICBQcmVmZXJlZCBuYW1lIGF2YWlsYWJsZSBpbiBjYXJkX2luZm8gKi8KKwkJCS8qICBQcmVmZXJyZWQgbmFtZSBhdmFpbGFibGUgaW4gY2FyZF9pbmZvICovCiAJCQlzbnByaW50ZihpY2UtPnJtaWRpWzBdLT5uYW1lLAogCQkJCSBzaXplb2YoaWNlLT5ybWlkaVswXS0+bmFtZSksCiAJCQkJICIlcyAlZCIsIGMtPm1wdTQwMV8xX25hbWUsIGNhcmQtPm51bWJlcik7CkBAIC0yNzcyLDcgKzI3NzIsNyBAQAogCQkJCXJldHVybiBlcnI7CiAJCQl9CiAJCQlpZiAoYy0+bXB1NDAxXzJfbmFtZSkKLQkJCQkvKiAgUHJlZmVyZWQgbmFtZSBhdmFpbGFibGUgaW4gY2FyZF9pbmZvICovCisJCQkJLyogIFByZWZlcnJlZCBuYW1lIGF2YWlsYWJsZSBpbiBjYXJkX2luZm8gKi8KIAkJCQlzbnByaW50ZihpY2UtPnJtaWRpWzFdLT5uYW1lLAogCQkJCQkgc2l6ZW9mKGljZS0+cm1pZGlbMV0tPm5hbWUpLAogCQkJCQkgIiVzICVkIiwgYy0+bXB1NDAxXzJfbmFtZSwKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9pY2UxNzEyL3BvbnRpcy5jIGIvc291bmQvcGNpL2ljZTE3MTIvcG9udGlzLmMKaW5kZXggY2RiODczZi4uOTJjMTE2MCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2ljZTE3MTIvcG9udGlzLmMKKysrIGIvc291bmQvcGNpL2ljZTE3MTIvcG9udGlzLmMKQEAgLTc2OCw3ICs3NjgsNyBAQAogCWljZS0+bnVtX3RvdGFsX2RhY3MgPSAyOwogCWljZS0+bnVtX3RvdGFsX2FkY3MgPSAyOwogCi0JLyogdG8gcmVtZWJlciB0aGUgcmVnaXN0ZXIgdmFsdWVzICovCisJLyogdG8gcmVtZW1iZXIgdGhlIHJlZ2lzdGVyIHZhbHVlcyAqLwogCWljZS0+YWttID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNuZF9ha200eHh4KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCEgaWNlLT5ha20pCiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2ljZTE3MTIvcHJvZGlneV9oaWZpLmMgYi9zb3VuZC9wY2kvaWNlMTcxMi9wcm9kaWd5X2hpZmkuYwppbmRleCA2YTlmZWUzLi43NjRjYzkzZCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2ljZTE3MTIvcHJvZGlneV9oaWZpLmMKKysrIGIvc291bmQvcGNpL2ljZTE3MTIvcHJvZGlneV9oaWZpLmMKQEAgLTEwNDYsNyArMTA0Niw3IEBACiAJKiBkb24ndCBjYWxsIHNuZF9pY2UxNzEyX2dwaW9fZ2V0L3B1dCgpLCBvdGhlcndpc2UgaXQncyBvdmVyd3JpdHRlbgogCSovCiAJaWNlLT5ncGlvLnNhdmVkWzBdID0gMDsKLQkvKiB0byByZW1lYmVyIHRoZSByZWdpc3RlciB2YWx1ZXMgKi8KKwkvKiB0byByZW1lbWJlciB0aGUgcmVnaXN0ZXIgdmFsdWVzICovCiAKIAlpY2UtPmFrbSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBzbmRfYWttNHh4eCksIEdGUF9LRVJORUwpOwogCWlmICghIGljZS0+YWttKQpAQCAtMTEyOCw3ICsxMTI4LDcgQEAKIAkqIGRvbid0IGNhbGwgc25kX2ljZTE3MTJfZ3Bpb19nZXQvcHV0KCksIG90aGVyd2lzZSBpdCdzIG92ZXJ3cml0dGVuCiAJKi8KIAlpY2UtPmdwaW8uc2F2ZWRbMF0gPSAwOwotCS8qIHRvIHJlbWViZXIgdGhlIHJlZ2lzdGVyIHZhbHVlcyAqLworCS8qIHRvIHJlbWVtYmVyIHRoZSByZWdpc3RlciB2YWx1ZXMgKi8KIAogCWljZS0+YWttID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IHNuZF9ha200eHh4KSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCEgaWNlLT5ha20pCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvaW50ZWw4eDAuYyBiL3NvdW5kL3BjaS9pbnRlbDh4MC5jCmluZGV4IDYyOWE1NDkuLjZjODk2ZGIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pbnRlbDh4MC5jCisrKyBiL3NvdW5kL3BjaS9pbnRlbDh4MC5jCkBAIC01MzQsNyArNTM0LDcgQEAKIAkJdWRlbGF5KDEwKTsKIAl9IHdoaWxlICh0aW1lLS0pOwogCi0JLyogYWNjZXNzIHRvIHNvbWUgZm9yYmlkZGVuIChub24gZXhpc3RhbnQpIGFjOTcgcmVnaXN0ZXJzIHdpbGwgbm90CisJLyogYWNjZXNzIHRvIHNvbWUgZm9yYmlkZGVuIChub24gZXhpc3RlbnQpIGFjOTcgcmVnaXN0ZXJzIHdpbGwgbm90CiAJICogcmVzZXQgdGhlIHNlbWFwaG9yZS4gU28gZXZlbiBpZiB5b3UgZG9uJ3QgZ2V0IHRoZSBzZW1hcGhvcmUsIHN0aWxsCiAJICogY29udGludWUgdGhlIGFjY2Vzcy4gV2UgZG9uJ3QgbmVlZCB0aGUgc2VtYXBob3JlIGFueXdheS4gKi8KIAlzbmRfcHJpbnRrKEtFUk5fRVJSICJjb2RlY19zZW1hcGhvcmU6IHNlbWFwaG9yZSBpcyBub3QgcmVhZHkgWzB4JXhdWzB4JXhdXG4iLApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2ludGVsOHgwbS5jIGIvc291bmQvcGNpL2ludGVsOHgwbS5jCmluZGV4IDJhZThkMjkuLjI3NzA5ZjAgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9pbnRlbDh4MG0uYworKysgYi9zb3VuZC9wY2kvaW50ZWw4eDBtLmMKQEAgLTMzMSw3ICszMzEsNyBAQAogCQl1ZGVsYXkoMTApOwogCX0gd2hpbGUgKHRpbWUtLSk7CiAKLQkvKiBhY2Nlc3MgdG8gc29tZSBmb3JiaWRkZW4gKG5vbiBleGlzdGFudCkgYWM5NyByZWdpc3RlcnMgd2lsbCBub3QKKwkvKiBhY2Nlc3MgdG8gc29tZSBmb3JiaWRkZW4gKG5vbiBleGlzdGVudCkgYWM5NyByZWdpc3RlcnMgd2lsbCBub3QKIAkgKiByZXNldCB0aGUgc2VtYXBob3JlLiBTbyBldmVuIGlmIHlvdSBkb24ndCBnZXQgdGhlIHNlbWFwaG9yZSwgc3RpbGwKIAkgKiBjb250aW51ZSB0aGUgYWNjZXNzLiBXZSBkb24ndCBuZWVkIHRoZSBzZW1hcGhvcmUgYW55d2F5LiAqLwogCXNuZF9wcmludGsoS0VSTl9FUlIgImNvZGVjX3NlbWFwaG9yZTogc2VtYXBob3JlIGlzIG5vdCByZWFkeSBbMHgleF1bMHgleF1cbiIsCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvbWl4YXJ0L21peGFydF9jb3JlLmMgYi9zb3VuZC9wY2kvbWl4YXJ0L21peGFydF9jb3JlLmMKaW5kZXggZDMzNTBmMy4uM2RmMGY1MyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL21peGFydC9taXhhcnRfY29yZS5jCisrKyBiL3NvdW5kL3BjaS9taXhhcnQvbWl4YXJ0X2NvcmUuYwpAQCAtMjY1LDcgKzI2NSw3IEBACiAJaWYgKCEgdGltZW91dCkgewogCQkvKiBlcnJvciAtIG5vIGFjayAqLwogCQltdXRleF91bmxvY2soJm1nci0+bXNnX211dGV4KTsKLQkJc25kX3ByaW50ayhLRVJOX0VSUiAiZXJyb3I6IG5vIHJlcG9uc2Ugb24gbXNnICV4XG4iLCBtc2dfZnJhbWUpOworCQlzbmRfcHJpbnRrKEtFUk5fRVJSICJlcnJvcjogbm8gcmVzcG9uc2Ugb24gbXNnICV4XG4iLCBtc2dfZnJhbWUpOwogCQlyZXR1cm4gLUVJTzsKIAl9CiAKQEAgLTI3OCw3ICsyNzgsNyBAQAogCWVyciA9IGdldF9tc2cobWdyLCAmcmVzcCwgbXNnX2ZyYW1lKTsKIAogCWlmKCByZXF1ZXN0LT5tZXNzYWdlX2lkICE9IHJlc3AubWVzc2FnZV9pZCApCi0JCXNuZF9wcmludGsoS0VSTl9FUlIgIlJFUE9OU0UgRVJST1IhXG4iKTsKKwkJc25kX3ByaW50ayhLRVJOX0VSUiAiUkVTUE9OU0UgRVJST1IhXG4iKTsKIAogCW11dGV4X3VubG9jaygmbWdyLT5tc2dfbXV0ZXgpOwogCXJldHVybiBlcnI7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcGN4aHIvcGN4aHJfY29yZS5jIGIvc291bmQvcGNpL3BjeGhyL3BjeGhyX2NvcmUuYwppbmRleCA4MzNlNzE4Li4zMDQ0MTFjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvcGN4aHIvcGN4aHJfY29yZS5jCisrKyBiL3NvdW5kL3BjaS9wY3hoci9wY3hocl9jb3JlLmMKQEAgLTEwNDIsMTEgKzEwNDIsMTEgQEAKIAlpbnQgaSwgajsKIAogCWlmIChtZ3ItPnNyY19pdF9kc3AgJiBQQ1hIUl9JUlFfRlJFUV9DSEFOR0UpCi0JCXNuZF9wcmludGRkKCJUQVNLTEVUIDogUENYSFJfSVJRX0ZSRVFfQ0hBTkdFIGV2ZW50IG9jY3VyZWRcbiIpOworCQlzbmRfcHJpbnRkZCgiVEFTS0xFVCA6IFBDWEhSX0lSUV9GUkVRX0NIQU5HRSBldmVudCBvY2N1cnJlZFxuIik7CiAJaWYgKG1nci0+c3JjX2l0X2RzcCAmIFBDWEhSX0lSUV9USU1FX0NPREUpCi0JCXNuZF9wcmludGRkKCJUQVNLTEVUIDogUENYSFJfSVJRX1RJTUVfQ09ERSBldmVudCBvY2N1cmVkXG4iKTsKKwkJc25kX3ByaW50ZGQoIlRBU0tMRVQgOiBQQ1hIUl9JUlFfVElNRV9DT0RFIGV2ZW50IG9jY3VycmVkXG4iKTsKIAlpZiAobWdyLT5zcmNfaXRfZHNwICYgUENYSFJfSVJRX05PVElGWSkKLQkJc25kX3ByaW50ZGQoIlRBU0tMRVQgOiBQQ1hIUl9JUlFfTk9USUZZIGV2ZW50IG9jY3VyZWRcbiIpOworCQlzbmRfcHJpbnRkZCgiVEFTS0xFVCA6IFBDWEhSX0lSUV9OT1RJRlkgZXZlbnQgb2NjdXJyZWRcbiIpOwogCWlmIChtZ3ItPnNyY19pdF9kc3AgJiAoUENYSFJfSVJRX0ZSRVFfQ0hBTkdFIHwgUENYSFJfSVJRX1RJTUVfQ09ERSkpIHsKIAkJLyogY2xlYXIgZXZlbnRzIEZSRVFfQ0hBTkdFIGFuZCBUSU1FX0NPREUgKi8KIAkJcGN4aHJfaW5pdF9ybWgocHJtaCwgQ01EX1RFU1RfSVQpOwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAKIAkJCSAgICBlcnIsIHBybWgtPnN0YXRbMF0pOwogCX0KIAlpZiAobWdyLT5zcmNfaXRfZHNwICYgUENYSFJfSVJRX0FTWU5DKSB7Ci0JCXNuZF9wcmludGRkKCJUQVNLTEVUIDogUENYSFJfSVJRX0FTWU5DIGV2ZW50IG9jY3VyZWRcbiIpOworCQlzbmRfcHJpbnRkZCgiVEFTS0xFVCA6IFBDWEhSX0lSUV9BU1lOQyBldmVudCBvY2N1cnJlZFxuIik7CiAKIAkJcGN4aHJfaW5pdF9ybWgocHJtaCwgQ01EX0FTWU5DKTsKIAkJcHJtaC0+Y21kWzBdIHw9IDE7CS8qIGFkZCBTRUxfQVNZTkNfRVZFTlRTICovCkBAIC0xMjMzLDcgKzEyMzMsNyBAQAogCXJlZyA9IFBDWEhSX0lOUEwobWdyLCBQQ1hIUl9QTFhfTDJQQ0lEQik7CiAJUENYSFJfT1VUUEwobWdyLCBQQ1hIUl9QTFhfTDJQQ0lEQiwgcmVnKTsKIAotCS8qIHRpbWVyIGlycSBvY2N1cmVkICovCisJLyogdGltZXIgaXJxIG9jY3VycmVkICovCiAJaWYgKHJlZyAmIFBDWEhSX0lSUV9USU1FUikgewogCQlpbnQgdGltZXJfdG9nZ2xlID0gcmVnICYgUENYSFJfSVJRX1RJTUVSOwogCQkvKiBpcyBhIDI0IGJpdCBjb3VudGVyICovCkBAIC0xMjg4LDcgKzEyODgsNyBAQAogCWlmIChyZWcgJiBQQ1hIUl9JUlFfTUFTSykgewogCQlpZiAocmVnICYgUENYSFJfSVJRX0FTWU5DKSB7CiAJCQkvKiBhcyB3ZSBkaWRuJ3QgcmVxdWVzdCBhbnkgYXN5bmMgbm90aWZpY2F0aW9ucywKLQkJCSAqIHNvbWUga2luZCBvZiB4cnVuIGVycm9yIHdpbGwgcHJvYmFibHkgb2NjdXJlZAorCQkJICogc29tZSBraW5kIG9mIHhydW4gZXJyb3Igd2lsbCBwcm9iYWJseSBvY2N1cnJlZAogCQkJICovCiAJCQkvKiBiZXR0ZXIgcmVzeW5jaHJvbml6ZSBhbGwgc3RyZWFtcyBuZXh0IGludGVycnVwdCA6ICovCiAJCQltZ3ItPmRzcF90aW1lX2xhc3QgPSBQQ1hIUl9EU1BfVElNRV9JTlZBTElEOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2LmMgYi9zb3VuZC9wY2kvcm1lOTYuYwppbmRleCBkNWY1YjQ0Li45ZmYyNDdmIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvcm1lOTYuYworKysgYi9zb3VuZC9wY2kvcm1lOTYuYwpAQCAtMTUwLDcgKzE1MCw3IEBACiAjZGVmaW5lIFJNRTk2X1JDUl9CSVRQT1NfRjEgMjgKICNkZWZpbmUgUk1FOTZfUkNSX0JJVFBPU19GMiAyOQogCi0vKiBBZGRpdG9uYWwgcmVnaXN0ZXIgYml0cyAqLworLyogQWRkaXRpb25hbCByZWdpc3RlciBiaXRzICovCiAjZGVmaW5lIFJNRTk2X0FSX1dTRUwgICAgICAgKDEgPDwgMCkKICNkZWZpbmUgUk1FOTZfQVJfQU5BTE9HICAgICAoMSA8PCAxKQogI2RlZmluZSBSTUU5Nl9BUl9GUkVRUEFEXzAgICgxIDw8IDIpCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jIGIvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYwppbmRleCBhMzIzZWFmLi45NDk2OTFhIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCisrKyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKQEAgLTM5MSw3ICszOTEsNyBAQAogCiAvKiBTdGF0dXMyIFJlZ2lzdGVyIGJpdHMgKi8gLyogTUFESSBPTkxZICovCiAKLSNkZWZpbmUgSERTUE1fdmVyc2lvbjAgKDE8PDApCS8qIG5vdCByZWFseSBkZWZpbmVkIGJ1dCBJIGd1ZXNzICovCisjZGVmaW5lIEhEU1BNX3ZlcnNpb24wICgxPDwwKQkvKiBub3QgcmVhbGx5IGRlZmluZWQgYnV0IEkgZ3Vlc3MgKi8KICNkZWZpbmUgSERTUE1fdmVyc2lvbjEgKDE8PDEpCS8qIGluIGZvcm1lciBjYXJkcyBpdCB3YXMgPz8/ICovCiAjZGVmaW5lIEhEU1BNX3ZlcnNpb24yICgxPDwyKQogCkBAIC05MzYsNyArOTM2LDcgQEAKIAlzdHJ1Y3Qgc25kX2tjb250cm9sICpwbGF5YmFja19taXhlcl9jdGxzW0hEU1BNX01BWF9DSEFOTkVMU107CiAJLyogYnV0IGlucHV0IHRvIG11Y2gsIHNvIG5vdCB1c2VkICovCiAJc3RydWN0IHNuZF9rY29udHJvbCAqaW5wdXRfbWl4ZXJfY3Rsc1tIRFNQTV9NQVhfQ0hBTk5FTFNdOwotCS8qIGZ1bGwgbWl4ZXIgYWNjZXNzYWJsZSBvdmVyIG1peGVyIGlvY3RsIG9yIGh3ZGVwLWRldmljZSAqLworCS8qIGZ1bGwgbWl4ZXIgYWNjZXNzaWJsZSBvdmVyIG1peGVyIGlvY3RsIG9yIGh3ZGVwLWRldmljZSAqLwogCXN0cnVjdCBoZHNwbV9taXhlciAqbWl4ZXI7CiAKIAlzdHJ1Y3QgaGRzcG1fdGNvICp0Y287ICAvKiBOVUxMIGlmIG5vIFRDTyBkZXRlY3RlZCAqLwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3NpczcwMTkuYyBiL3NvdW5kL3BjaS9zaXM3MDE5LmMKaW5kZXggMWI4ZjY3NC4uMmI1YzdhOTUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9zaXM3MDE5LmMKKysrIGIvc291bmQvcGNpL3NpczcwMTkuYwpAQCAtMzA4LDcgKzMwOCw3IEBACiAJdTMyIGludHIsIHN0YXR1czsKIAogCS8qIFdlIG9ubHkgdXNlIHRoZSBETUEgaW50ZXJydXB0cywgYW5kIHdlIGRvbid0IGVuYWJsZSBhbnkgb3RoZXIKLQkgKiBzb3VyY2Ugb2YgaW50ZXJydXB0cy4gQnV0LCBpdCBpcyBwb3NzaWJsZSB0byBzZWUgYW4gaW50ZXJ1cHQKKwkgKiBzb3VyY2Ugb2YgaW50ZXJydXB0cy4gQnV0LCBpdCBpcyBwb3NzaWJsZSB0byBzZWUgYW4gaW50ZXJydXB0CiAJICogc3RhdHVzIHRoYXQgZGlkbid0IGFjdHVhbGx5IGludGVycnVwdCB1cywgc28gZWxpbWluYXRlIGFueXRoaW5nCiAJICogd2UncmUgbm90IGV4cGVjdGluZyB0byBhdm9pZCBmYWxzZWx5IGNsYWltaW5nIGFuIElSUSwgYW5kIGFuCiAJICogZW5zdWluZyBlbmRsZXNzIGxvb3AuCkBAIC03NzMsNyArNzczLDcgQEAKIAkJdnBlcmlvZCA9IDA7CiAJfQogCi0JLyogVGhlIGludGVycnVwdCBoYW5kbGVyIGltcGxlbWVudHMgdGhlIHRpbWluZyBzeW5jcm9uaXphdGlvbiwgc28KKwkvKiBUaGUgaW50ZXJydXB0IGhhbmRsZXIgaW1wbGVtZW50cyB0aGUgdGltaW5nIHN5bmNocm9uaXphdGlvbiwgc28KIAkgKiBzZXR1cCBpdHMgc3RhdGUuCiAJICovCiAJdGltaW5nLT5mbGFncyB8PSBWT0lDRV9TWU5DX1RJTUlORzsKQEAgLTExMzksNyArMTEzOSw3IEBACiAJICovCiAJb3V0bChTSVNfRE1BX0NTUl9QQ0lfU0VUVElOR1MsIGlvICsgU0lTX0RNQV9DU1IpOwogCi0JLyogUmVzZXQgdGhlIHN5bmNyb25pemF0aW9uIGdyb3VwcyBmb3IgYWxsIG9mIHRoZSBjaGFubmVscworCS8qIFJlc2V0IHRoZSBzeW5jaHJvbml6YXRpb24gZ3JvdXBzIGZvciBhbGwgb2YgdGhlIGNoYW5uZWxzCiAJICogdG8gYmUgYXN5bmNyb25vdXMuIElmIHdlIHN0YXJ0IGRvaW5nIFNQRElGIG9yIDUuMSBzb3VuZCwgZXRjLgogCSAqIHdlJ2xsIG5lZWQgdG8gY2hhbmdlIGhvdyB3ZSBoYW5kbGUgdGhlc2UuIFVudGlsIHRoZW4sIHdlIGp1c3QKIAkgKiBhc3NpZ24gc3ViLW1peGVyIDAgdG8gYWxsIHBsYXliYWNrIGNoYW5uZWxzLCBhbmQgYXZvaWQgYW55CmRpZmYgLS1naXQgYS9zb3VuZC9wcGMvc25kX3BzMy5jIGIvc291bmQvcHBjL3NuZF9wczMuYwppbmRleCBlZGNlOGEyLi5iYzgyM2E1IDEwMDY0NAotLS0gYS9zb3VuZC9wcGMvc25kX3BzMy5jCisrKyBiL3NvdW5kL3BwYy9zbmRfcHMzLmMKQEAgLTM1OCw3ICszNTgsNyBAQAogCQkgKiBmaWxsaW5nIGR1bW15IGRhdGEsIHNlcmlhbCBhdXRvbWF0aWNhbGx5IHN0YXJ0IHRvCiAJCSAqIGNvbnN1bWUgdGhlbSBhbmQgdGhlbiB3aWxsIGdlbmVyYXRlIG5vcm1hbCBidWZmZXIKIAkJICogZW1wdHkgaW50ZXJydXB0cy4KLQkJICogSWYgYm90aCBidWZmZXIgdW5kZXJmbG93IGFuZCBidWZmZXIgZW1wdHkgYXJlIG9jY3VyZWQsCisJCSAqIElmIGJvdGggYnVmZmVyIHVuZGVyZmxvdyBhbmQgYnVmZmVyIGVtcHR5IGFyZSBvY2N1cnJlZCwKIAkJICogaXQgaXMgYmV0dGVyIHRvIGRvIG5vbWFsIGRhdGEgdHJhbnNmZXIgdGhhbiBlbXB0eSBvbmUKIAkJICovCiAJCXNuZF9wczNfcHJvZ3JhbV9kbWEoY2FyZCwKZGlmZiAtLWdpdCBhL3NvdW5kL3BwYy9zbmRfcHMzX3JlZy5oIGIvc291bmQvcHBjL3NuZF9wczNfcmVnLmgKaW5kZXggMDNmZGVlNC4uMmU2MzAyMCAxMDA2NDQKLS0tIGEvc291bmQvcHBjL3NuZF9wczNfcmVnLmgKKysrIGIvc291bmQvcHBjL3NuZF9wczNfcmVnLmgKQEAgLTEyNSw3ICsxMjUsNyBAQAogICAgdHJhbnNmZXJzLiAgQW55IGludGVycnVwdHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYW5jZWxlZCB0cmFuc2ZlcnMKICAgIHdpbGwgb2NjdXIgYXMgaWYgdGhlIHRyYW5zZmVyIGhhZCBmaW5pc2hlZC4KICAgIFNpbmNlIHRoaXMgYml0IGlzIGRlc2lnbmVkIHRvIHJlY292ZXIgZnJvbSBETUEgcmVsYXRlZCBpc3N1ZXMKLSAgIHdoaWNoIGFyZSBjYXVzZWQgYnkgdW5wcmVkaWN0YWJsZSBzaXR1YXRpb25zLCBpdCBpcyBwcmVmZXJlZCB0byB3YWl0CisgICB3aGljaCBhcmUgY2F1c2VkIGJ5IHVucHJlZGljdGFibGUgc2l0dWF0aW9ucywgaXQgaXMgcHJlZmVycmVkIHRvIHdhaXQKICAgIGZvciBub3JtYWwgRE1BIHRyYW5zZmVyIGVuZCB3aXRob3V0IHVzaW5nIHRoaXMgYml0LgogKi8KICNkZWZpbmUgUFMzX0FVRElPX0NPTkZJR19DTEVBUiAgICAgICAgICAoMSA8PCA4KSAgLyogUldJVkYgKi8KQEAgLTMxNiwxMyArMzE2LDEzIEBACiAKIC8qCiBBdWRpbyBQb3J0IEludGVycnVwdCBTdGF0dXMgUmVnaXN0ZXIKLUluZGljYXRlcyBJbnRlcnJ1cHQgc3RhdHVzLCB3aGljaCBpbnRlcnJ1cHQgaGFzIG9jY3VyZWQsIGFuZCBjYW4gY2xlYXIKK0luZGljYXRlcyBJbnRlcnJ1cHQgc3RhdHVzLCB3aGljaCBpbnRlcnJ1cHQgaGFzIG9jY3VycmVkLCBhbmQgY2FuIGNsZWFyCiBlYWNoIGludGVycnVwdCBpbiB0aGlzIHJlZ2lzdGVyLgogV3JpdGluZyAxYiB0byBhIGZpZWxkIGNvbnRhaW5pbmcgMWIgY2xlYXJzIGZpZWxkIGFuZCBkZS1hc3NlcnRzIGludGVycnVwdC4KIFdyaXRpbmcgMGIgdG8gYSBmaWVsZCBoYXMgbm8gZWZmZWN0LgogRmllbGQgdmF1bGVzIGFyZSB0aGUgZm9sbG93aW5nOgotMCAtIEludGVycnVwdCBoYXNuJ3Qgb2NjdXJlZC4KLTEgLSBJbnRlcnJ1cHQgaGFzIG9jY3VyZWQuCiswIC0gSW50ZXJydXB0IGhhc24ndCBvY2N1cnJlZC4KKzEgLSBJbnRlcnJ1cHQgaGFzIG9jY3VycmVkLgogCiAKICAzMSAgICAgICAgICAgIDI0IDIzICAgICAgICAgICAxNiAxNSAgICAgICAgICAgIDggNyAgICAgICAgICAgICAwCkBAIC00NzMsNyArNDczLDcgQEAKIC8qCiBTYW1wbGluZyBSYXRlCiBTcGVjaWZpZXMgdGhlIGRpdmlkZSByYXRpbyBvZiB0aGUgYml0IGNsb2NrIChjbG9jayBvdXRwdXQKLWZyb20gYmNsa28pIHVzZWQgYnkgdGhlIDMtd2lyZSBBdWRpbyBPdXRwdXQgQ2xvY2ssIHdoY2loCitmcm9tIGJjbGtvKSB1c2VkIGJ5IHRoZSAzLXdpcmUgQXVkaW8gT3V0cHV0IENsb2NrLCB3aGljaAogaXMgYXBwbGllZCB0byB0aGUgbWFzdGVyIGNsb2NrIHNlbGVjdGVkIGJ5IG1ja3NlbC4KIERhdGEgb3V0cHV0IGlzIHN5bmNocm9uaXplZCB3aXRoIHRoaXMgY2xvY2suCiAqLwpAQCAtNzU2LDcgKzc1Niw3IEBACiBET05FIGluZGljYXRlcyB0aGUgcHJldmlvdXMgcmVxdWVzdCBoYXMgY29tcGxldGVkLgogRVZFTlQgaW5kaWNhdGVzIHRoYXQgdGhlIERNQSBlbmdpbmUgaXMgd2FpdGluZyBmb3IgdGhlIEVWRU5UIHRvIG9jY3VyLgogUEVORElORyBpbmRpY2F0ZXMgdGhhdCB0aGUgRE1BIGVuZ2luZSBoYXMgbm90IHN0YXJ0ZWQgcHJvY2Vzc2luZyB0aGlzCi1yZXF1ZXN0LCBidXQgdGhlIEVWRU5UIGhhcyBvY2N1cmVkLgorcmVxdWVzdCwgYnV0IHRoZSBFVkVOVCBoYXMgb2NjdXJyZWQuCiBETUEgaW5kaWNhdGVzIHRoYXQgdGhlIGRhdGEgdHJhbnNmZXIgaXMgaW4gcHJvZ3Jlc3MuCiBOT1RJRlkgaW5kaWNhdGVzIHRoYXQgdGhlIG5vdGlmaWVyIHNpZ25hbGxpbmcgZW5kIG9mIHRyYW5zZmVyIGlzIGJlaW5nIHdyaXR0ZW4uCiBDTEVBUiBpbmRpY2F0ZWQgdGhhdCB0aGUgcHJldmlvdXMgdHJhbnNmZXIgd2FzIGNsZWFyZWQuCkBAIC04MjQsNyArODI0LDcgQEAKIAogLyoKIFBTM19BVURJT19ETUFTSVpFIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIDEyOC1ieXRlIGJsb2NrcyArIDEgdG8gdHJhbnNmZXIuCi1TbyBhIHZhbHVlIG9mIDAgbWVhbnMgMTI4LWJ5dGVzIHdpbGwgZ2V0IHRyYW5zZmVyZWQuCitTbyBhIHZhbHVlIG9mIDAgbWVhbnMgMTI4LWJ5dGVzIHdpbGwgZ2V0IHRyYW5zZmVycmVkLgogCiAKICAzMSAgICAgICAgICAgIDI0IDIzICAgICAgICAgICAxNiAxNSAgICAgICAgICAgIDggNyAgICAgICAgICAgICAwCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvYXRtZWwvYXRtZWxfc3NjX2RhaS5jIGIvc291bmQvc29jL2F0bWVsL2F0bWVsX3NzY19kYWkuYwppbmRleCA1ZDIzMGNlLi43ZmJmYTA1IDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvYXRtZWwvYXRtZWxfc3NjX2RhaS5jCisrKyBiL3NvdW5kL3NvYy9hdG1lbC9hdG1lbF9zc2NfZGFpLmMKQEAgLTY3Miw3ICs2NzIsNyBAQAogCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzICovCiAJc3NjX3dyaXRlbChzc2NfcC0+c3NjLT5yZWdzLCBJRVIsIHNzY19wLT5zc2Nfc3RhdGUuc3NjX2ltcik7CiAKLQkvKiBSZS1lbmFibGUgcmVjaWV2ZSBhbmQgdHJhbnNtaXQgYXMgYXBwcm9wcmlhdGUgKi8KKwkvKiBSZS1lbmFibGUgcmVjZWl2ZSBhbmQgdHJhbnNtaXQgYXMgYXBwcm9wcmlhdGUgKi8KIAljciA9IDA7CiAJY3IgfD0KIAkgICAgKHNzY19wLT5zc2Nfc3RhdGUuc3NjX3NyICYgU1NDX0JJVChTUl9SWEVOKSkgPyBTU0NfQklUKENSX1JYRU4pIDogMDsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvYWxjNTYyMy5jIGIvc291bmQvc29jL2NvZGVjcy9hbGM1NjIzLmMKaW5kZXggNGYzNzdjOS4uZWVjZmZiNSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9hbGM1NjIzLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy9hbGM1NjIzLmMKQEAgLTQ4MSw3ICs0ODEsNyBAQAogfTsKIAogLyogTm90ZSA6IHBsbCBjb2RlIGZyb20gb3JpZ2luYWwgYWxjNTYyMyBkcml2ZXIuIE5vdCBzdXJlIG9mIGhvdyBnb29kIGl0IGlzICovCi0vKiB1c2VmdWxsIG9ubHkgZm9yIG1hc3RlciBtb2RlICovCisvKiB1c2VmdWwgb25seSBmb3IgbWFzdGVyIG1vZGUgKi8KIHN0YXRpYyBjb25zdCBzdHJ1Y3QgX3BsbF9kaXYgY29kZWNfbWFzdGVyX3BsbF9kaXZbXSA9IHsKIAogCXsgIDIwNDgwMDAsICA4MTkyMDAwLAkweDBlYTB9LApkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy9sbTQ4NTcuYyBiL3NvdW5kL3NvYy9jb2RlY3MvbG00ODU3LmMKaW5kZXggNzJkZTQ3ZS4uMmMyYTY4MSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy9sbTQ4NTcuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL2xtNDg1Ny5jCkBAIC0xNjEsNyArMTYxLDcgQEAKIAkJbG00ODU3X2dldF9tb2RlLCBsbTQ4NTdfc2V0X21vZGUpLAogfTsKIAotLyogVGhlcmUgaXMgYSBkZW11eCBpbmJldHdlZW4gdGhlIHRoZSBpbnB1dCBzaWduYWwgYW5kIHRoZSBvdXRwdXQgc2lnbmFscy4KKy8qIFRoZXJlIGlzIGEgZGVtdXggYmV0d2VlbiB0aGUgaW5wdXQgc2lnbmFsIGFuZCB0aGUgb3V0cHV0IHNpZ25hbHMuCiAgKiBDdXJyZW50bHkgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gbW9kZWwgaXQgaW4gQVNvQyBhbmQgc2luY2UgaXQgZG9lcyBub3QgbWFrZQogICogbXVjaCBvZiBhIGRpZmZlcmVuY2UgaW4gcHJhY3RpY2Ugc2ltcGx5IGNvbm5lY3QgdGhlIGlucHV0IGRpcmVjbHR5IHRvIHRoZQogICogb3V0cHV0cy4gKi8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljMjYuaCBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljMjYuaAppbmRleCA2MmIxZjIyLi42N2YxOWMzIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzI2LmgKKysrIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMyNi5oCkBAIC0xNCwxNCArMTQsMTQgQEAKICNkZWZpbmUgQUlDMjZfUEFHRV9BRERSKHBhZ2UsIG9mZnNldCkJKChwYWdlIDw8IDYpIHwgb2Zmc2V0KQogI2RlZmluZSBBSUMyNl9OVU1fUkVHUwkJCUFJQzI2X1BBR0VfQUREUigzLCAwKQogCi0vKiBQYWdlIDA6IEF1eGlsbGFyeSBkYXRhIHJlZ2lzdGVycyAqLworLyogUGFnZSAwOiBBdXhpbGlhcnkgZGF0YSByZWdpc3RlcnMgKi8KICNkZWZpbmUgQUlDMjZfUkVHX0JBVDEJCQlBSUMyNl9QQUdFX0FERFIoMCwgMHgwNSkKICNkZWZpbmUgQUlDMjZfUkVHX0JBVDIJCQlBSUMyNl9QQUdFX0FERFIoMCwgMHgwNikKICNkZWZpbmUgQUlDMjZfUkVHX0FVWAkJCUFJQzI2X1BBR0VfQUREUigwLCAweDA3KQogI2RlZmluZSBBSUMyNl9SRUdfVEVNUDEJCQlBSUMyNl9QQUdFX0FERFIoMCwgMHgwOSkKICNkZWZpbmUgQUlDMjZfUkVHX1RFTVAyCQkJQUlDMjZfUEFHRV9BRERSKDAsIDB4MEEpCiAKLS8qIFBhZ2UgMTogQXV4aWxsYXJ5IGNvbnRyb2wgcmVnaXN0ZXJzICovCisvKiBQYWdlIDE6IEF1eGlsaWFyeSBjb250cm9sIHJlZ2lzdGVycyAqLwogI2RlZmluZSBBSUMyNl9SRUdfQVVYX0FEQwkJQUlDMjZfUEFHRV9BRERSKDEsIDB4MDApCiAjZGVmaW5lIEFJQzI2X1JFR19TVEFUVVMJCUFJQzI2X1BBR0VfQUREUigxLCAweDAxKQogI2RlZmluZSBBSUMyNl9SRUdfUkVGRVJFTkNFCQlBSUMyNl9QQUdFX0FERFIoMSwgMHgwMykKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3guYyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwYWljM3guYwppbmRleCAzYmVkYWIyLi42YzQzYzEzIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGFpYzN4LmMKKysrIGIvc291bmQvc29jL2NvZGVjcy90bHYzMjBhaWMzeC5jCkBAIC04ODQsNyArODg0LDcgQEAKIAlpZiAoYnlwYXNzX3BsbCkKIAkJcmV0dXJuIDA7CiAKLQkvKiBVc2UgUExMLCBjb21wdXRlIGFwcm9wcmlhdGUgc2V0dXAgZm9yIGosIGQsIHIgYW5kIHAsIHRoZSBjbG9zZXN0CisJLyogVXNlIFBMTCwgY29tcHV0ZSBhcHByb3ByaWF0ZSBzZXR1cCBmb3IgaiwgZCwgciBhbmQgcCwgdGhlIGNsb3Nlc3QKIAkgKiBvbmUgd2lucyB0aGUgZ2FtZS4gVHJ5IHdpdGggZD09MCBmaXJzdCwgbmV4dCB3aXRoIGQhPTAuCiAJICogQ29uc3RyYWludHMgZm9yIGogYXJlIGFjY29yZGluZyB0byB0aGUgZGF0YXNoZWV0LgogCSAqIFRoZSBzeXNjbGsgaXMgZGl2aWRlZCBieSAxMDAwIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvd3MuCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGRhYzMzLmMgYi9zb3VuZC9zb2MvY29kZWNzL3RsdjMyMGRhYzMzLmMKaW5kZXggZWIxYTBiNC4uMDgyZTlkNSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy90bHYzMjBkYWMzMy5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3MvdGx2MzIwZGFjMzMuYwpAQCAtMTAyNyw3ICsxMDI3LDcgQEAKIAkJLyoKIAkJICogRm9yIEZJRk8gYnlwYXNzIG1vZGU6CiAJCSAqIEVuYWJsZSB0aGUgRklGTyBieXBhc3MgKERpc2FibGUgdGhlIEZJRk8gdXNlKQotCQkgKiBTZXQgdGhlIEJDTEsgYXMgY29udGlub3VzCisJCSAqIFNldCB0aGUgQkNMSyBhcyBjb250aW51b3VzCiAJCSAqLwogCQlmaWZvY3RybF9hIHw9IERBQzMzX0ZCWVBBUzsKIAkJYWljdHJsX2IgfD0gREFDMzNfQkNMS09OOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy90d2w0MDMwLmMgYi9zb3VuZC9zb2MvY29kZWNzL3R3bDQwMzAuYwppbmRleCA4NTEyODAwLi41NzUyMzhkIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3R3bDQwMzAuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3R3bDQwMzAuYwpAQCAtMjgxLDcgKzI4MSw3IEBACiAJCQkJIGksIHZhbCwgdHdsNDAzMF9yZWdbaV0pOwogCQl9CiAJfQotCWRldl9kYmcoY29kZWMtPmRldiwgIkZvdW5kICVkIG5vbiBtYWNoaW5nIHJlZ2lzdGVycy4gJXNcbiIsCisJZGV2X2RiZyhjb2RlYy0+ZGV2LCAiRm91bmQgJWQgbm9uLW1hdGNoaW5nIHJlZ2lzdGVycy4gJXNcbiIsCiAJCSBkaWZmZXJlbmNlLCBkaWZmZXJlbmNlID8gIk5vdCBPSyIgOiAiT0siKTsKIH0KIApAQCAtMjAxOCw3ICsyMDE4LDcgQEAKIAl1OCBtb2RlOwogCiAJLyogSWYgdGhlIHN5c3RlbSBtYXN0ZXIgY2xvY2sgaXMgbm90IDI2TUh6LCB0aGUgdm9pY2UgUENNIGludGVyZmFjZSBpcwotCSAqIG5vdCBhdmlsYWJsZS4KKwkgKiBub3QgYXZhaWxhYmxlLgogCSAqLwogCWlmICh0d2w0MDMwLT5zeXNjbGsgIT0gMjYwMDApIHsKIAkJZGV2X2Vycihjb2RlYy0+ZGV2LCAiVGhlIGJvYXJkIGlzIGNvbmZpZ3VyZWQgZm9yICV1IEh6LCB3aGlsZSIKQEAgLTIwMjgsNyArMjAyOCw3IEBACiAJfQogCiAJLyogSWYgdGhlIGNvZGVjIG1vZGUgaXMgbm90IG9wdGlvbjIsIHRoZSB2b2ljZSBQQ00gaW50ZXJmYWNlIGlzIG5vdAotCSAqIGF2aWxhYmxlLgorCSAqIGF2YWlsYWJsZS4KIAkgKi8KIAltb2RlID0gdHdsNDAzMF9yZWFkX3JlZ19jYWNoZShjb2RlYywgVFdMNDAzMF9SRUdfQ09ERUNfTU9ERSkKIAkJJiBUV0w0MDMwX09QVF9NT0RFOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg1ODAuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204NTgwLmMKaW5kZXggOGY2YjVlZS4uNGJiYzBhNyAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg1ODAuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODU4MC5jCkBAIC03NzIsNyArNzcyLDcgQEAKIAkJCXJlZyAmPSB+KFdNODU4MF9QV1JETjFfUFdETiB8IFdNODU4MF9QV1JETjFfQUxMREFDUEQpOwogCQkJc25kX3NvY193cml0ZShjb2RlYywgV004NTgwX1BXUkROMSwgcmVnKTsKIAotCQkJLyogTWFrZSBWTUlEIGhpZ2ggaW1wZWRlbmNlICovCisJCQkvKiBNYWtlIFZNSUQgaGlnaCBpbXBlZGFuY2UgKi8KIAkJCXJlZyA9IHNuZF9zb2NfcmVhZChjb2RlYywgIFdNODU4MF9BRENfQ09OVFJPTDEpOwogCQkJcmVnICY9IH4weDEwMDsKIAkJCXNuZF9zb2Nfd3JpdGUoY29kZWMsIFdNODU4MF9BRENfQ09OVFJPTDEsIHJlZyk7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODc1My5jIGIvc291bmQvc29jL2NvZGVjcy93bTg3NTMuYwppbmRleCAzZjA5ZGVlLi5mZmEyZmZlIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3dtODc1My5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204NzUzLmMKQEAgLTEzMTIsNyArMTMxMiw3IEBACiAJU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUpCiAKIC8qCi0gKiBUaGUgV004NzUzIHN1cHBvcnRzIHVwdG8gNCBkaWZmZXJlbnQgYW5kIG11dHVhbGx5IGV4Y2x1c2l2ZSBEQUkKKyAqIFRoZSBXTTg3NTMgc3VwcG9ydHMgdXAgdG8gNCBkaWZmZXJlbnQgYW5kIG11dHVhbGx5IGV4Y2x1c2l2ZSBEQUkKICAqIGNvbmZpZ3VyYXRpb25zLiBUaGlzIGdpdmVzIDIgUENNJ3MgYXZhaWxhYmxlIGZvciB1c2UsIGhpZmkgYW5kIHZvaWNlLgogICogTk9URTogVGhlIFZvaWNlIFBDTSBjYW5ub3QgcGxheSBvciBjYXB0dXJlIGF1ZGlvIHRvIHRoZSBDUFUgYXMgaXQncyBEQUkKICAqIGlzIGNvbm5lY3RlZCBiZXR3ZWVuIHRoZSB3bTg3NTMgYW5kIGEgQlQgY29kZWMgb3IgR1NNIG1vZGVtLgpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5MDQuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTA0LmMKaW5kZXggNDQzYWU1OC4uOWIzYmJhNCAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5MDQuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODkwNC5jCkBAIC0xODk1LDcgKzE4OTUsNyBAQAogCiAJcHJfZGVidWcoIkZ2Y289JWRIelxuIiwgdGFyZ2V0KTsKIAotCS8qIEZpbmQgYW4gYXBwcm9wcmFpdGUgRkxMX0ZSQVRJTyBhbmQgZmFjdG9yIGl0IG91dCBvZiB0aGUgdGFyZ2V0ICovCisJLyogRmluZCBhbiBhcHByb3ByaWF0ZSBGTExfRlJBVElPIGFuZCBmYWN0b3IgaXQgb3V0IG9mIHRoZSB0YXJnZXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmbGxfZnJhdGlvcyk7IGkrKykgewogCQlpZiAoZmxsX2ZyYXRpb3NbaV0ubWluIDw9IEZyZWYgJiYgRnJlZiA8PSBmbGxfZnJhdGlvc1tpXS5tYXgpIHsKIAkJCWZsbF9kaXYtPmZsbF9mcmF0aW8gPSBmbGxfZnJhdGlvc1tpXS5mbGxfZnJhdGlvOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5NTUuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTU1LmMKaW5kZXggNWUwMjE0ZC4uM2M3MTk4NyAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5NTUuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk1NS5jCkBAIC0xNzYsNyArMTc2LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogTG9va3VwIHRhYmxlIHNwZWNpZml5aW5nIFNSQVRFICh0YWJsZSAyNSBpbiBkYXRhc2hlZXQpOyBzb21lIG9mIHRoZQorLyogTG9va3VwIHRhYmxlIHNwZWNpZnlpbmcgU1JBVEUgKHRhYmxlIDI1IGluIGRhdGFzaGVldCk7IHNvbWUgb2YgdGhlCiAgKiBvdXRwdXQgZnJlcXVlbmNpZXMgaGF2ZSBiZWVuIHJvdW5kZWQgdG8gdGhlIHN0YW5kYXJkIGZyZXF1ZW5jaWVzCiAgKiB0aGV5IGFyZSBpbnRlbmRlZCB0byBtYXRjaCB3aGVyZSB0aGUgZXJyb3IgaXMgc2xpZ2h0LiAqLwogc3RhdGljIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODk2Mi5jIGIvc291bmQvc29jL2NvZGVjcy93bTg5NjIuYwppbmRleCAzYjcxZGQ2Li41MDAwMTFlIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3dtODk2Mi5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTYyLmMKQEAgLTMxMzcsNyArMzEzNyw3IEBACiAKIAlwcl9kZWJ1ZygiRkxMIEZ2Y289JWRIelxuIiwgdGFyZ2V0KTsKIAotCS8qIEZpbmQgYW4gYXBwcm9wcmFpdGUgRkxMX0ZSQVRJTyBhbmQgZmFjdG9yIGl0IG91dCBvZiB0aGUgdGFyZ2V0ICovCisJLyogRmluZCBhbiBhcHByb3ByaWF0ZSBGTExfRlJBVElPIGFuZCBmYWN0b3IgaXQgb3V0IG9mIHRoZSB0YXJnZXQgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmbGxfZnJhdGlvcyk7IGkrKykgewogCQlpZiAoZmxsX2ZyYXRpb3NbaV0ubWluIDw9IEZyZWYgJiYgRnJlZiA8PSBmbGxfZnJhdGlvc1tpXS5tYXgpIHsKIAkJCWZsbF9kaXYtPmZsbF9mcmF0aW8gPSBmbGxfZnJhdGlvc1tpXS5mbGxfZnJhdGlvOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTg5OTEuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkxLmMKaW5kZXggMjhmZGZkNi4uM2MyZWUxYiAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTg5OTEuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk5MS5jCkBAIC05ODEsNyArOTgxLDcgQEAKIAkJcmVnID0gc25kX3NvY19yZWFkKGNvZGVjLCBXTTg5OTFfQ0xPQ0tJTkdfMik7CiAJCXNuZF9zb2Nfd3JpdGUoY29kZWMsIFdNODk5MV9DTE9DS0lOR18yLCByZWcgfCBXTTg5OTFfU1lTQ0xLX1NSQyk7CiAKLQkJLyogc2V0IHVwIE4gLCBmcmFjdGlvbmFsIG1vZGUgYW5kIHByZS1kaXZpc29yIGlmIG5lY2Nlc3NhcnkgKi8KKwkJLyogc2V0IHVwIE4gLCBmcmFjdGlvbmFsIG1vZGUgYW5kIHByZS1kaXZpc29yIGlmIG5lY2Vzc2FyeSAqLwogCQlzbmRfc29jX3dyaXRlKGNvZGVjLCBXTTg5OTFfUExMMSwgcGxsX2Rpdi5uIHwgV004OTkxX1NETSB8CiAJCQkgICAgICAocGxsX2Rpdi5kaXYyID8gV004OTkxX1BSRVNDQUxFIDogMCkpOwogCQlzbmRfc29jX3dyaXRlKGNvZGVjLCBXTTg5OTFfUExMMiwgKHU4KShwbGxfZGl2Lms+PjgpKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkzLmMgYi9zb3VuZC9zb2MvY29kZWNzL3dtODk5My5jCmluZGV4IDM3OWZhMjIuLjA1NmFlZjkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9jb2RlY3Mvd204OTkzLmMKKysrIGIvc291bmQvc29jL2NvZGVjcy93bTg5OTMuYwpAQCAtMzI0LDcgKzMyNCw3IEBACiAKIAlwcl9kZWJ1ZygiRnZjbz0lZEh6XG4iLCB0YXJnZXQpOwogCi0JLyogRmluZCBhbiBhcHByb3ByYWl0ZSBGTExfRlJBVElPIGFuZCBmYWN0b3IgaXQgb3V0IG9mIHRoZSB0YXJnZXQgKi8KKwkvKiBGaW5kIGFuIGFwcHJvcHJpYXRlIEZMTF9GUkFUSU8gYW5kIGZhY3RvciBpdCBvdXQgb2YgdGhlIHRhcmdldCAqLwogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZsbF9mcmF0aW9zKTsgaSsrKSB7CiAJCWlmIChmbGxfZnJhdGlvc1tpXS5taW4gPD0gRnJlZiAmJiBGcmVmIDw9IGZsbF9mcmF0aW9zW2ldLm1heCkgewogCQkJZmxsX2Rpdi0+ZmxsX2ZyYXRpbyA9IGZsbF9mcmF0aW9zW2ldLmZsbF9mcmF0aW87CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvY29kZWNzL3dtODk5NC5jIGIvc291bmQvc29jL2NvZGVjcy93bTg5OTQuYwppbmRleCAzZGM2NGM4Li4zMjkwMzMzIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvY29kZWNzL3dtODk5NC5jCisrKyBiL3NvdW5kL3NvYy9jb2RlY3Mvd204OTk0LmMKQEAgLTgyLDE4ICs4MiwxOCBAQAogCiAJaW50IG1iY19lbmFbM107CiAKLQkvKiBQbGF0Zm9ybSBkZXBlbmRhbnQgRFJDIGNvbmZpZ3VyYXRpb24gKi8KKwkvKiBQbGF0Zm9ybSBkZXBlbmRlbnQgRFJDIGNvbmZpZ3VyYXRpb24gKi8KIAljb25zdCBjaGFyICoqZHJjX3RleHRzOwogCWludCBkcmNfY2ZnW1dNODk5NF9OVU1fRFJDXTsKIAlzdHJ1Y3Qgc29jX2VudW0gZHJjX2VudW07CiAKLQkvKiBQbGF0Zm9ybSBkZXBlbmRhbnQgUmVUdW5lIG1vYmlsZSBjb25maWd1cmF0aW9uICovCisJLyogUGxhdGZvcm0gZGVwZW5kZW50IFJlVHVuZSBtb2JpbGUgY29uZmlndXJhdGlvbiAqLwogCWludCBudW1fcmV0dW5lX21vYmlsZV90ZXh0czsKIAljb25zdCBjaGFyICoqcmV0dW5lX21vYmlsZV90ZXh0czsKIAlpbnQgcmV0dW5lX21vYmlsZV9jZmdbV004OTk0X05VTV9FUV07CiAJc3RydWN0IHNvY19lbnVtIHJldHVuZV9tb2JpbGVfZW51bTsKIAotCS8qIFBsYXRmb3JtIGRlcGVuZGFudCBNQkMgY29uZmlndXJhdGlvbiAqLworCS8qIFBsYXRmb3JtIGRlcGVuZGVudCBNQkMgY29uZmlndXJhdGlvbiAqLwogCWludCBtYmNfY2ZnOwogCWNvbnN0IGNoYXIgKiptYmNfdGV4dHM7CiAJc3RydWN0IHNvY19lbnVtIG1iY19lbnVtOwpkaWZmIC0tZ2l0IGEvc291bmQvc29jL2NvZGVjcy93bTkwODEuYyBiL3NvdW5kL3NvYy9jb2RlY3Mvd205MDgxLmMKaW5kZXggNTVjZGYyOS4uOTFjNmIzOSAxMDA2NDQKLS0tIGEvc291bmQvc29jL2NvZGVjcy93bTkwODEuYworKysgYi9zb3VuZC9zb2MvY29kZWNzL3dtOTA4MS5jCkBAIC0zMDUsNyArMzA1LDcgQEAKIC8qCiAgKiBTdG9wIGFueSBhdHRlbXB0cyB0byBjaGFuZ2Ugc3BlYWtlciBtb2RlIHdoaWxlIHRoZSBzcGVha2VyIGlzIGVuYWJsZWQuCiAgKgotICogV2UgYWxzbyBoYXZlIHNvbWUgc3BlY2lhbCBhbnRpLXBvcCBjb250cm9scyBkZXBlbmRhbnQgb24gc3BlYWtlcgorICogV2UgYWxzbyBoYXZlIHNvbWUgc3BlY2lhbCBhbnRpLXBvcCBjb250cm9scyBkZXBlbmRlbnQgb24gc3BlYWtlcgogICogbW9kZSB3aGljaCBtdXN0IGJlIGNoYW5nZWQgYWxvbmcgd2l0aCB0aGUgbW9kZS4KICAqLwogc3RhdGljIGludCBzcGVha2VyX21vZGVfcHV0KHN0cnVjdCBzbmRfa2NvbnRyb2wgKmtjb250cm9sLApAQCAtNDU2LDcgKzQ1Niw3IEBACiAKIAlwcl9kZWJ1ZygiRnZjbz0lZEh6XG4iLCB0YXJnZXQpOwogCi0JLyogRmluZCBhbiBhcHByb3ByYWl0ZSBGTExfRlJBVElPIGFuZCBmYWN0b3IgaXQgb3V0IG9mIHRoZSB0YXJnZXQgKi8KKwkvKiBGaW5kIGFuIGFwcHJvcHJpYXRlIEZMTF9GUkFUSU8gYW5kIGZhY3RvciBpdCBvdXQgb2YgdGhlIHRhcmdldCAqLwogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKGZsbF9mcmF0aW9zKTsgaSsrKSB7CiAJCWlmIChmbGxfZnJhdGlvc1tpXS5taW4gPD0gRnJlZiAmJiBGcmVmIDw9IGZsbF9mcmF0aW9zW2ldLm1heCkgewogCQkJZmxsX2Rpdi0+ZmxsX2ZyYXRpbyA9IGZsbF9mcmF0aW9zW2ldLmZsbF9mcmF0aW87CmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvaW14L2lteC1zc2kuYyBiL3NvdW5kL3NvYy9pbXgvaW14LXNzaS5jCmluZGV4IGJjOTJlYzYuLmFjMmRlZDkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy9pbXgvaW14LXNzaS5jCisrKyBiL3NvdW5kL3NvYy9pbXgvaW14LXNzaS5jCkBAIC0xNiw3ICsxNiw3IEBACiAgKiBzYW5lIHByb2Nlc3NvciB2ZW5kb3JzIGhhdmUgYSBGSUZPIHBlciBBQzk3IHNsb3QsIHRoZSBpLk1YIGhhcyBvbmx5CiAgKiBvbmUgRklGTyB3aGljaCBjb21iaW5lcyBhbGwgdmFsaWQgcmVjZWl2ZSBzbG90cy4gV2UgY2Fubm90IGV2ZW4gc2VsZWN0CiAgKiB3aGljaCBzbG90cyB3ZSB3YW50IHRvIHJlY2VpdmUuIFRoZSBXTTk3MTIgd2l0aCB3aGljaCB0aGlzIGRyaXZlcgotICogd2FzIGRldmVsb3BwZWQgd2l0aCBhbHdheXMgc2VuZHMgR1BJTyBzdGF0dXMgZGF0YSBpbiBzbG90IDEyIHdoaWNoCisgKiB3YXMgZGV2ZWxvcGVkIHdpdGggYWx3YXlzIHNlbmRzIEdQSU8gc3RhdHVzIGRhdGEgaW4gc2xvdCAxMiB3aGljaAogICogd2UgcmVjZWl2ZSBpbiBvdXIgKFBDTS0pIGRhdGEgc3RyZWFtLiBUaGUgb25seSBjaGFuY2Ugd2UgaGF2ZSBpcyB0bwogICogbWFudWFsbHkgc2tpcCB0aGlzIGRhdGEgaW4gdGhlIEZJUSBoYW5kbGVyLiBXaXRoIHNhbXBsaW5nIHJhdGVzIGRpZmZlcmVudAogICogZnJvbSA0ODAwMEh6IG5vdCBldmVyeSBmcmFtZSBoYXMgdmFsaWQgcmVjZWl2ZSBkYXRhLCBzbyB0aGUgcmF0aW8KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9raXJrd29vZC9raXJrd29vZC1kbWEuYyBiL3NvdW5kL3NvYy9raXJrd29vZC9raXJrd29vZC1kbWEuYwppbmRleCAwZmQ2YTYzLi5lMTNjNmNlIDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mva2lya3dvb2Qva2lya3dvb2QtZG1hLmMKKysrIGIvc291bmQvc29jL2tpcmt3b29kL2tpcmt3b29kLWRtYS5jCkBAIC0xMzIsNyArMTMyLDcgQEAKIAlwcml2ID0gc25kX3NvY19kYWlfZ2V0X2RtYV9kYXRhKGNwdV9kYWksIHN1YnN0cmVhbSk7CiAJc25kX3NvY19zZXRfcnVudGltZV9od3BhcmFtcyhzdWJzdHJlYW0sICZraXJrd29vZF9kbWFfc25kX2h3KTsKIAotCS8qIEVuc3VyZSB0aGF0IGFsbCBjb25zdHJhaW50cyBsaW5rZWQgdG8gZG1hIGJ1cnN0IGFyZSBmdWxsZmlsbGVkICovCisJLyogRW5zdXJlIHRoYXQgYWxsIGNvbnN0cmFpbnRzIGxpbmtlZCB0byBkbWEgYnVyc3QgYXJlIGZ1bGZpbGxlZCAqLwogCWVyciA9IHNuZF9wY21faHdfY29uc3RyYWludF9taW5tYXgocnVudGltZSwKIAkJCVNORFJWX1BDTV9IV19QQVJBTV9CVUZGRVJfQllURVMsCiAJCQlwcml2LT5idXJzdCAqIDIsCkBAIC0xNzAsNyArMTcwLDcgQEAKIAogCQkvKgogCQkgKiBFbmFibGUgRXJyb3IgaW50ZXJydXB0cy4gV2UncmUgb25seSBhY2snaW5nIHRoZW0gYnV0Ci0JCSAqIGl0J3MgdXNlZnVsbCBmb3IgZGlhZ25vc3RpY3MKKwkJICogaXQncyB1c2VmdWwgZm9yIGRpYWdub3N0aWNzCiAJCSAqLwogCQl3cml0ZWwoKHVuc2lnbmVkIGxvbmcpLTEsIHByaXYtPmlvICsgS0lSS1dPT0RfRVJSX01BU0spOwogCX0KZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9taWQteDg2L3NzdF9wbGF0Zm9ybS5jIGIvc291bmQvc29jL21pZC14ODYvc3N0X3BsYXRmb3JtLmMKaW5kZXggZWUyYzIyNC4uYjJlOTE5OCAxMDA2NDQKLS0tIGEvc291bmQvc29jL21pZC14ODYvc3N0X3BsYXRmb3JtLmMKKysrIGIvc291bmQvc29jL21pZC14ODYvc3N0X3BsYXRmb3JtLmMKQEAgLTQ0MCw3ICs0NDAsNyBAQAogCiAJc25kX3NvY191bnJlZ2lzdGVyX2RhaXMoJnBkZXYtPmRldiwgQVJSQVlfU0laRShzc3RfcGxhdGZvcm1fZGFpKSk7CiAJc25kX3NvY191bnJlZ2lzdGVyX3BsYXRmb3JtKCZwZGV2LT5kZXYpOwotCXByX2RlYnVnKCJzc3RfcGxhdGZvcm1fcmVtb3ZlIHN1Y2Vzc1xuIik7CisJcHJfZGVidWcoInNzdF9wbGF0Zm9ybV9yZW1vdmUgc3VjY2Vzc1xuIik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTQ2Myw3ICs0NjMsNyBAQAogc3RhdGljIHZvaWQgX19leGl0IHNzdF9zb2NfcGxhdGZvcm1fZXhpdCh2b2lkKQogewogCXBsYXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZzc3RfcGxhdGZvcm1fZHJpdmVyKTsKLQlwcl9kZWJ1Zygic3N0X3NvY19wbGF0Zm9ybV9leGl0IHN1Y2Vzc1xuIik7CisJcHJfZGVidWcoInNzdF9zb2NfcGxhdGZvcm1fZXhpdCBzdWNjZXNzXG4iKTsKIH0KIG1vZHVsZV9leGl0KHNzdF9zb2NfcGxhdGZvcm1fZXhpdCk7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9vbWFwL2Ftcy1kZWx0YS5jIGIvc291bmQvc29jL29tYXAvYW1zLWRlbHRhLmMKaW5kZXggMzE2N2JlNi4uNDYyY2JjYiAxMDA2NDQKLS0tIGEvc291bmQvc29jL29tYXAvYW1zLWRlbHRhLmMKKysrIGIvc291bmQvc29jL29tYXAvYW1zLWRlbHRhLmMKQEAgLTI0OCw3ICsyNDgsNyBAQAogICovCiAKIC8qIFRvIGFjdHVhbGx5IGFwcGx5IGFueSBtb2RlbSBjb250cm9sbGVkIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyB0byB0aGUgY29kZWMsCi0gKiB3ZSBtdXN0IGNvbm5lY3QgY29kZWMgREFJIHBpbnMgdG8gdGhlIG1vZGVtIGZvciBhIG1vbWVudC4gIEJlIGNhcmVmdWxsIG5vdAorICogd2UgbXVzdCBjb25uZWN0IGNvZGVjIERBSSBwaW5zIHRvIHRoZSBtb2RlbSBmb3IgYSBtb21lbnQuICBCZSBjYXJlZnVsIG5vdAogICogdG8gaW50ZXJmZXJlIHdpdGggb3VyIGRpZ2l0YWwgbXV0ZSBmdW5jdGlvbiB0aGF0IHNoYXJlcyB0aGUgc2FtZSBoYXJkd2FyZS4gKi8KIHN0YXRpYyBzdHJ1Y3QgdGltZXJfbGlzdCBjeDgxODAxX3RpbWVyOwogc3RhdGljIGJvb2wgY3g4MTgwMV9jbWRfcGVuZGluZzsKQEAgLTQwMiw5ICs0MDIsOSBAQAogCiAKIC8qCi0gKiBFdmVuIGlmIG5vdCB2ZXJ5IHVzZWZ1bGwsIHRoZSBzb3VuZCBjYXJkIGNhbiBzdGlsbCB3b3JrIHdpdGhvdXQgYW55IG9mIHRoZQorICogRXZlbiBpZiBub3QgdmVyeSB1c2VmdWwsIHRoZSBzb3VuZCBjYXJkIGNhbiBzdGlsbCB3b3JrIHdpdGhvdXQgYW55IG9mIHRoZQogICogYWJvdmUgZnVuY3RvbmFsaXR5IGFjdGl2YXRlZC4gIFlvdSBjYW4gc3RpbGwgY29udHJvbCBpdHMgYXVkaW8gaW5wdXQvb3V0cHV0Ci0gKiBjb25zdGVsbGF0aW9uIGFuZCBzcGVha2VycGhvbmUgZ2FpbiBmcm9tIHVzZXJzcGFjZSBieSBpc3N1ZWluZyBBVCBjb21tYW5kcworICogY29uc3RlbGxhdGlvbiBhbmQgc3BlYWtlcnBob25lIGdhaW4gZnJvbSB1c2Vyc3BhY2UgYnkgaXNzdWluZyBBVCBjb21tYW5kcwogICogb3ZlciB0aGUgbW9kZW0gcG9ydC4KICAqLwogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2Mvc2Ftc3VuZy9uZW8xOTczX3dtODc1My5jIGIvc291bmQvc29jL3NhbXN1bmcvbmVvMTk3M193bTg3NTMuYwppbmRleCA3OGJmZGIzLi40NTIyMzA5IDEwMDY0NAotLS0gYS9zb3VuZC9zb2Mvc2Ftc3VuZy9uZW8xOTczX3dtODc1My5jCisrKyBiL3NvdW5kL3NvYy9zYW1zdW5nL25lbzE5NzNfd204NzUzLmMKQEAgLTIyOCw3ICsyMjgsNyBAQAogCVNPQ19EQVBNX1BJTl9TV0lUQ0goIkhhbmRzZXQgTWljIiksCiB9OwogCi0vKiBHVEEwMiBzcGVjaWZpYyByb3V0ZXMgYW5kIGNvbnRyb2xscyAqLworLyogR1RBMDIgc3BlY2lmaWMgcm91dGVzIGFuZCBjb250cm9scyAqLwogCiAjaWZkZWYgQ09ORklHX01BQ0hfTkVPMTk3M19HVEEwMgogCkBAIC0zNzIsNyArMzcyLDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotLyogR1RBMDEgc3BlY2lmaWMgY29udHJvbGxzICovCisvKiBHVEEwMSBzcGVjaWZpYyBjb250cm9scyAqLwogCiAjaWZkZWYgQ09ORklHX01BQ0hfTkVPMTk3M19HVEEwMQogCmRpZmYgLS1naXQgYS9zb3VuZC91c2IvNmZpcmUvZmlybXdhcmUuYyBiL3NvdW5kL3VzYi82ZmlyZS9maXJtd2FyZS5jCmluZGV4IDkwODFhNTQuLjg2YzFhMzEgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi82ZmlyZS9maXJtd2FyZS5jCisrKyBiL3NvdW5kL3VzYi82ZmlyZS9maXJtd2FyZS5jCkBAIC03Niw3ICs3Niw3IEBACiAJdTE2IGFkZHJlc3M7CiAJdTggbGVuOwogCXU4IGRhdGFbMjU2XTsKLQljaGFyIGVycm9yOyAvKiB0cnVlIGlmIGFuIGVycm9yIG9jY3VyZWQgcGFyc2luZyB0aGlzIHJlY29yZCAqLworCWNoYXIgZXJyb3I7IC8qIHRydWUgaWYgYW4gZXJyb3Igb2NjdXJyZWQgcGFyc2luZyB0aGlzIHJlY29yZCAqLwogCiAJdTggbWF4X2xlbjsgLyogbWF4aW11bSByZWNvcmQgbGVuZ3RoIGluIHdob2xlIGloZXggKi8KIApAQCAtMTA3LDcgKzEwNyw3IEBACiAKIC8qCiAgKiByZXR1cm5zIHRydWUgaWYgcmVjb3JkIGlzIGF2YWlsYWJsZSwgZmFsc2Ugb3RoZXJ3aXNlLgotICogaWZmIGFuIGVycm9yIG9jY3VyZWQsIGZhbHNlIHdpbGwgYmUgcmV0dXJuZWQgYW5kIHJlY29yZC0+ZXJyb3Igd2lsbCBiZSB0cnVlLgorICogaWZmIGFuIGVycm9yIG9jY3VycmVkLCBmYWxzZSB3aWxsIGJlIHJldHVybmVkIGFuZCByZWNvcmQtPmVycm9yIHdpbGwgYmUgdHJ1ZS4KICAqLwogc3RhdGljIGJvb2wgdXNiNmZpcmVfZndfaWhleF9uZXh0X3JlY29yZChzdHJ1Y3QgaWhleF9yZWNvcmQgKnJlY29yZCkKIHsKZGlmZiAtLWdpdCBhL3NvdW5kL3VzYi9taXhlci5jIGIvc291bmQvdXNiL21peGVyLmMKaW5kZXggNWU0Nzc1Ny4uNmVjMzNiNiAxMDA2NDQKLS0tIGEvc291bmQvdXNiL21peGVyLmMKKysrIGIvc291bmQvdXNiL21peGVyLmMKQEAgLTExODIsNyArMTE4Miw3IEBACiAvKgogICogcGFyc2UgYSBmZWF0dXJlIHVuaXQKICAqCi0gKiBtb3N0IG9mIGNvbnRyb2xscyBhcmUgZGVmaW5lZCBoZXJlLgorICogbW9zdCBvZiBjb250cm9scyBhcmUgZGVmaW5lZCBoZXJlLgogICovCiBzdGF0aWMgaW50IHBhcnNlX2F1ZGlvX2ZlYXR1cmVfdW5pdChzdHJ1Y3QgbWl4ZXJfYnVpbGQgKnN0YXRlLCBpbnQgdW5pdGlkLCB2b2lkICpfZnRyKQogewpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3F1aXJrcy5jIGIvc291bmQvdXNiL3F1aXJrcy5jCmluZGV4IDM1NTc1OWIuLmVjMDdlNjIgMTAwNjQ0Ci0tLSBhL3NvdW5kL3VzYi9xdWlya3MuYworKysgYi9zb3VuZC91c2IvcXVpcmtzLmMKQEAgLTI2Niw3ICsyNjYsNyBAQAogICogYXVkaW8taW50ZXJmYWNlIHF1aXJrcwogICoKICAqIHJldHVybnMgemVybyBpZiBubyBzdGFuZGFyZCBhdWRpby9NSURJIHBhcnNpbmcgaXMgbmVlZGVkLgotICogcmV0dXJucyBhIHBvc3RpdmUgdmFsdWUgaWYgc3RhbmRhcmQgYXVkaW8vbWlkaSBpbnRlcmZhY2VzIGFyZSBwYXJzZWQKKyAqIHJldHVybnMgYSBwb3NpdGl2ZSB2YWx1ZSBpZiBzdGFuZGFyZCBhdWRpby9taWRpIGludGVyZmFjZXMgYXJlIHBhcnNlZAogICogYWZ0ZXIgdGhpcy4KICAqIHJldHVybnMgYSBuZWdhdGl2ZSB2YWx1ZSBhdCBlcnJvci4KICAqLwpkaWZmIC0tZ2l0IGEvc291bmQvdXNiL3VzeDJ5L3VzeDJ5aHdkZXBwY20uYyBiL3NvdW5kL3VzYi91c3gyeS91c3gyeWh3ZGVwcGNtLmMKaW5kZXggMjg3ZWY3My4uYTUxMzQwZiAxMDA2NDQKLS0tIGEvc291bmQvdXNiL3VzeDJ5L3VzeDJ5aHdkZXBwY20uYworKysgYi9zb3VuZC91c2IvdXN4MnkvdXN4Mnlod2RlcHBjbS5jCkBAIC0yMCw3ICsyMCw3IEBACiAgYXQgc3RhbmRhcmQgc2FtcGxlcmF0ZXMsCiAgd2hhdCBsZWQgdG8gdGhpcyBwYXJ0IG9mIHRoZSB1c3gyeSBtb2R1bGU6IAogIEl0IHByb3ZpZGVzIHRoZSBhbHNhIGtlcm5lbCBoYWxmIG9mIHRoZSB1c3gyeS1hbHNhLWphY2sgZHJpdmVyIHBhaXIuCi0gVGhlIHBhaXIgdXNlcyBhIGhhcmR3YXJlIGRlcGVuZGFudCBhbHNhLWRldmljZSBmb3IgbW1hcGVkIHBjbSB0cmFuc3BvcnQuCisgVGhlIHBhaXIgdXNlcyBhIGhhcmR3YXJlIGRlcGVuZGVudCBhbHNhLWRldmljZSBmb3IgbW1hcGVkIHBjbSB0cmFuc3BvcnQuCiAgQWR2YW50YWdlIGFjaGlldmVkOgogICAgICAgICAgVGhlIHVzYl9oYyBtb3ZlcyBwY20gZGF0YSBmcm9tL2ludG8gbWVtb3J5IHZpYSBETUEuCiAgICAgICAgICBUaGF0IG1lbW9yeSBpcyBtbWFwZWQgYnkgamFjaydzIHVzeDJ5IGRyaXZlci4KQEAgLTM4LDcgKzM4LDcgQEAKICAgICAgICAgIDJwZXJpb2RzIHdvcmtzIGJ1dCBpcyB1c2VsZXNzIGNhdXNlIG9mIGNyYWNrbGluZykuCiAKICBUaGlzIGlzIGEgZmlyc3QgInByb29mIG9mIGNvbmNlcHQiIGltcGxlbWVudGF0aW9uLgotIExhdGVyLCBmdW5jdGlvbmFsaXRpZXMgc2hvdWxkIG1pZ3JhdGUgdG8gbW9yZSBhcHJvcHJpYXRlIHBsYWNlczoKKyBMYXRlciwgZnVuY3Rpb25hbGl0aWVzIHNob3VsZCBtaWdyYXRlIHRvIG1vcmUgYXBwcm9wcmlhdGUgcGxhY2VzOgogIFVzZXJsYW5kOgogIC0gVGhlIGphY2tkIGNvdWxkIG1tYXAgaXRzIGZsb2F0LXBjbSBidWZmZXJzIGRpcmVjdGx5IGZyb20gYWxzYS1saWIuCiAgLSBhbHNhLWxpYiBjb3VsZCBwcm92aWRlIHBvd2VyIG9mIDIgcGVyaW9kIHNpemVkIHNoYXBpbmcgY29tYmluZWQgd2l0aCBpbnQvZmxvYXQKZGlmZiAtLWdpdCBhL3Rvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYyBiL3Rvb2xzL3BlcmYvdXRpbC9zdHJpbmcuYwppbmRleCA4ZmMwYmQzLi5iOWE5ODVkIDEwMDY0NAotLS0gYS90b29scy9wZXJmL3V0aWwvc3RyaW5nLmMKKysrIGIvdG9vbHMvcGVyZi91dGlsL3N0cmluZy5jCkBAIC04NSw3ICs4NSw3IEBACiAKIC8qCiAgKiBIZWxwZXIgZnVuY3Rpb24gZm9yIHNwbGl0dGluZyBhIHN0cmluZyBpbnRvIGFuIGFyZ3YtbGlrZSBhcnJheS4KLSAqIG9yaWdpbmFseSBjb3BpZWQgZnJvbSBsaWIvYXJndl9zcGxpdC5jCisgKiBvcmlnaW5hbGx5IGNvcGllZCBmcm9tIGxpYi9hcmd2X3NwbGl0LmMKICAqLwogc3RhdGljIGNvbnN0IGNoYXIgKnNraXBfc2VwKGNvbnN0IGNoYXIgKmNwKQogewpkaWZmIC0tZ2l0IGEvdG9vbHMvcG93ZXIveDg2L3g4Nl9lbmVyZ3lfcGVyZl9wb2xpY3kveDg2X2VuZXJneV9wZXJmX3BvbGljeS5jIGIvdG9vbHMvcG93ZXIveDg2L3g4Nl9lbmVyZ3lfcGVyZl9wb2xpY3kveDg2X2VuZXJneV9wZXJmX3BvbGljeS5jCmluZGV4IGQ5Njc4YTMuLjI2MThlZjIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL3Bvd2VyL3g4Ni94ODZfZW5lcmd5X3BlcmZfcG9saWN5L3g4Nl9lbmVyZ3lfcGVyZl9wb2xpY3kuYworKysgYi90b29scy9wb3dlci94ODYveDg2X2VuZXJneV9wZXJmX3BvbGljeS94ODZfZW5lcmd5X3BlcmZfcG9saWN5LmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICAqCiAgKiAgcGVyZm9ybWFuY2UKICAqCVBlcmZvcm1hbmNlIGlzIHBhcmFtb3VudC4KLSAqCVVud2lsbGluZyB0byBzYWNyYWZpY2UgYW55IHBlcmZvcm1hbmNlCisgKglVbndpbGxpbmcgdG8gc2FjcmlmaWNlIGFueSBwZXJmb3JtYW5jZQogICoJZm9yIHRoZSBzYWtlIG9mIGVuZXJneSBzYXZpbmcuIChoYXJkd2FyZSBkZWZhdWx0KQogICoKICAqICBub3JtYWwKZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL2V2ZW50ZmQuYyBiL3ZpcnQva3ZtL2V2ZW50ZmQuYwppbmRleCAwZDFmZDUxLi43MzM1OGQyIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9ldmVudGZkLmMKKysrIGIvdmlydC9rdm0vZXZlbnRmZC5jCkBAIC01NzgsNyArNTc4LDcgQEAKIAogCW11dGV4X2xvY2soJmt2bS0+c2xvdHNfbG9jayk7CiAKLQkvKiBWZXJpZnkgdGhhdCB0aGVyZSBpc250IGEgbWF0Y2ggYWxyZWFkeSAqLworCS8qIFZlcmlmeSB0aGF0IHRoZXJlIGlzbid0IGEgbWF0Y2ggYWxyZWFkeSAqLwogCWlmIChpb2V2ZW50ZmRfY2hlY2tfY29sbGlzaW9uKGt2bSwgcCkpIHsKIAkJcmV0ID0gLUVFWElTVDsKIAkJZ290byB1bmxvY2tfZmFpbDsK