ZGlmZiAtLWdpdCBhL2RvYy9oYXByb3h5LWVuLnR4dCBiL2RvYy9oYXByb3h5LWVuLnR4dAppbmRleCA5NTMwNzMxLi4xNDU1NGYyIDEwMDY0NAotLS0gYS9kb2MvaGFwcm94eS1lbi50eHQKKysrIGIvZG9jL2hhcHJveHktZW4udHh0CkBAIC05NTYsNiArOTU2LDIxIEBACiAgIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgICAgICAtPiA8TUVUSD4gPFVSST4gSFRUUC8xLjAKICAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSBWRVIgIC0+IDxNRVRIPiA8VVJJPiA8VkVSPgogCitTb21lIHBlb3BsZSBhcmUgdXNpbmcgSEFQcm94eSB0byByZWxheSB2YXJpb3VzIFRDUC1iYXNlZCBwcm90b2NvbHMgc3VjaCBhcworSFRUUFMsIFNNVFAgb3IgTERBUCwgd2l0aCB0aGUgbW9zdCBjb21tb24gb25lIGJlaW5nIEhUVFBTLiBPbmUgcHJvYmxlbSBjb21tb25seQorZW5jb3VudGVyZWQgaW4gZGF0YSBjZW50ZXJzIGlzIHRoZSBuZWVkIHRvIGZvcndhcmQgdGhlIHRyYWZmaWMgdG8gZmFyIHJlbW90ZQorc2VydmVycyB3aGlsZSBwcm92aWRpbmcgc2VydmVyIGZhaWwtb3Zlci4gT2Z0ZW4sIFRDUC1vbmx5IGNoZWNrcyBhcmUgbm90IGVub3VnaAorYmVjYXVzZSBpbnRlcm1lZGlhdGUgZmlyZXdhbGxzLCBsb2FkIGJhbGFuY2VycyBvciBwcm94aWVzIG1pZ2h0IGFja25vd2xlZGdlIHRoZQorY29ubmVjdGlvbiBiZWZvcmUgaXQgcmVhY2hlcyB0aGUgcmVhbCBzZXJ2ZXIuIFRoZSBvbmx5IHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbQoraXMgdG8gc2VuZCBhcHBsaWNhdGlvbi1sZXZlbCBoZWFsdGggY2hlY2tzLiBTaW5jZSB0aGUgZGVtYW5kIGZvciBIVFRQUyBjaGVja3MKK2lzIGhpZ2gsIGl0IGhhcyBiZWVuIGltcGxlbWVudGVkIGluIDEuMi4xNSBiYXNlZCBvbiBTU0x2MyBDbGllbnQgSGVsbG8gcGFja2V0cy4KK1RvIGVuYWJsZSBpdCwgdXNlICdvcHRpb24gc3NsLWhlbGxvLWNoaycuIEl0IHdpbGwgc2VuZCBTU0wgQ0xJRU5UIEhFTExPIHBhY2tldHMKK3RvIHRoZSBzZXJ2ZXJzLCBhbm5vdW5jaW5nIHN1cHBvcnQgZm9yIG1vc3QgY29tbW9uIGNpcGhlciBzdWl0ZXMuIElmIHRoZSBzZXJ2ZXIKK3Jlc3BvbmRzIHdoYXQgbG9va3MgbGlrZSBhIFNFUlZFUiBIRUxMTyBvciBhbiBBTEVSVCAocmVmdXNlcyB0aGUgY2lwaGVycykgdGhlbgordGhlIHJlc3BvbnNlIGlzIGNvbnNpZGVyZWQgYXMgdmFsaWQuIE5vdGUgdGhhdCBBcGFjaGUgZG9lcyBub3QgZ2VuZXJhdGUgYSBsb2cKK3doZW4gaXQgcmVjZWl2ZXMgb25seSBhbiBIRUxMTyBtZXNzYWdlLCB3aGljaCBtYWtlcyB0aGlzIHR5cGUgb2YgbWVzc2FnZQorcGVyZmVjdGx5IHN1aXQgdGhpcyBuZWVkLgorCiBTZWUgZXhhbXBsZXMgYmVsb3cuCiAKIFNpbmNlIHZlcnNpb24gMS4xLjE3LCBpdCBpcyBwb3NzaWJsZSB0byBzcGVjaWZ5IGJhY2t1cCBzZXJ2ZXJzLiBUaGVzZSBzZXJ2ZXJzCkBAIC0xMDY4LDYgKzEwODMsMTUgQEAKICAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCAyNSBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAogCisjIEhUVFBTIHJlbGF5aW5nIHdpdGggaGVhbHRoLWNoZWNrcyBhbmQgYmFja3VwIHNlcnZlcnMKKworICAgIGxpc3RlbiBodHRwX3Byb3h5IDo0NDMKKyAgICAgICAgbW9kZSB0Y3AKKwlvcHRpb24gc3NsLWhlbGxvLWNoaworICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KKyAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgorICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKKwogIyBMb2FkLWJhbGFuY2luZyB1c2luZyBhIGJhY2t1cCBwb29sIChyZXF1aXJlcyBoYXByb3h5IDEuMi45KQogICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICAgbW9kZSBodHRwCmRpZmYgLS1naXQgYS9kb2MvaGFwcm94eS1mci50eHQgYi9kb2MvaGFwcm94eS1mci50eHQKaW5kZXggZmQ0ZGMxYS4uZGQwMjg5MSAxMDA2NDQKLS0tIGEvZG9jL2hhcHJveHktZnIudHh0CisrKyBiL2RvYy9oYXByb3h5LWZyLnR4dApAQCAtOTU4LDYgKzk1OCwyNCBAQAogICAtIG9wdGlvbiBodHRwY2hrIE1FVEggVVJJICAgICAgLT4gPE1FVEg+IDxVUkk+IEhUVFAvMS4wCiAgIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgVkVSICAtPiA8TUVUSD4gPFVSST4gPFZFUj4KIAorSEFQcm94eSBlc3Qgc291dmVudCB1dGlsaXPpIHBvdXIgcmVsYXllciBkaXZlcnMgcHJvdG9jb2xlcyByZXBvc2FudCBzdXIgVENQLAordGVscyBxdWUgSFRUUFMsIFNNVFAgb3UgTERBUCwgbGUgcGx1cyBjb21tdW4g6XRhbnQgSFRUUFMuIFVuIHByb2Js6G1lIGFzc2V6Citjb3VyYW1tZW50IHJlbmNvbnRy6SBkYW5zIGxlcyBkYXRhIGNlbnRlcnMgZXN0IGxlIGJlc29pbiBkZSByZWxheWVyIGR1IHRyYWZpYwordmVycyBkZXMgc2VydmV1cnMgbG9pbnRhaW5zIHRvdXQgZW4gbWFpbnRlbmFudCBsYSBwb3NzaWJpbGl06SBkZSBiYXNjdWxlciBzdXIKK3VuIHNlcnZldXIgZGUgc2Vjb3Vycy4gTGVzIHRlc3RzIHB1cmVtZW50IFRDUCBuZSBzdWZmaXNlbnQgcGFzIHRvdWpvdXJzIGRhbnMKK2NlcyBzaXR1YXRpb25zIGNhciBsJ29uIHRyb3V2ZSBzb3V2ZW50LCBkYW5zIGxhIGNoYe5uZSwgZGVzIHByb3hpZXMsIGZpcmV3YWxscworb3UgculwYXJ0aXRldXJzIGRlIGNoYXJnZSBxdWkgcGV1dmVudCBhY3F1aXR0ZXIgbGEgY29ubmV4aW9uIGF2YW50IHF1J2VsbGUKK24nYXR0ZWlnbmUgbGUgc2VydmV1ci4gTGEgc2V1bGUgc29sdXRpb24g4CBjZSBwcm9ibOhtZSBlc3QgZCdlbnZveWVyIGRlcyB0ZXN0cworYXBwbGljYXRpZnMuIENvbW1lIGxhIGRlbWFuZGUgcG91ciBsZXMgdGVzdHMgSFRUUFMgZXN0IOlsZXbpZSwgY2UgdGVzdCBhIOl06QoraW1wbOltZW506SBlbiB2ZXJzaW9uIDEuMi4xNSBzdXIgbGEgYmFzZSBkZSBtZXNzYWdlcyBTU0x2MyBDTElFTlQgSEVMTE8uIFBvdXIKK2wnYWN0aXZlciwgdXRpbGlzZXIgIm9wdGlvbiBzc2wtaGVsbG8tY2hrIi4gQ2VjaSBlbnZlcnJhIGRlcyBtZXNzYWdlcyBTU0x2MworQ0xJRU5UIEhFTExPIGF1eCBzZXJ2ZXVycywgZW4gYW5ub27nYW50IHVuIHN1cHBvcnQgcG91ciBsYSBtYWpvcml06SBkZXMKK2FsZ29yaXRobWVzIGRlIGNoaWZmcmVtZW50LiBTaSBlbiByZXRvdXIsIGxlIHNlcnZldXIgZW52b2llIGNlIHF1aSByZXNzZW1ibGUg4AordW5lIHLpcG9uc2UgU1NMdjMgU0VSVkVSIEhFTExPIG91IEFMRVJUIChyZWZ1cyBkZXMgYWxnb3JpdGhtZXMpLCBhbG9ycyBsYQorculwb25zZSBzZXJhIGNvbnNpZOly6WUgY29tbWUgdmFsaWRlLiBOb3RlciBxdSdBcGFjaGUgbmUgcHJvZHVpdCBwYXMgZGUgbG9nCitsb3JzcXUnaWwgcmXnb2l0IGRlcyBtZXNzYWdlcyBIRUxMTywgY2UgcXVpIGVuIGZhaXQgdW4gdHlwZSBkZSBtZXNzYWdlCitwYXJmYWl0ZW1lbnQgYWRhcHTpIOAgY2UgYmVzb2luLgorCiBWb2lyIGxlcyBleGVtcGxlcyBjaS1hcHLocy4gICAgICAgIAogCiBEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTcsIGlsIGVzdCBwb3NzaWJsZSBkZSBk6WZpbmlyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzLApAQCAtMTA3OCw2ICsxMDk2LDE1IEBACiAgICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgMjUgaW50ZXIgMzAwMDAgcmlzZSAxIGZhbGwgMgogICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKIAorIyByZWxheWFnZSBIVFRQUyBhdmVjIHRlc3QgZHUgc2VydmV1ciBldCBzZXJ2ZXVyIGRlIGJhY2t1cAorCisgICAgbGlzdGVuIGh0dHBfcHJveHkgOjQ0MworICAgICAgICBtb2RlIHRjcAorCW9wdGlvbiBzc2wtaGVsbG8tY2hrCisgICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgorICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMSBjaGVjayBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCisgICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yIGJhY2t1cAorCiAjIFV0aWxpc2F0aW9uIGQndW4gZ3JvdXBlIGRlIHNlcnZldXJzIHBvdXIgbGUgYmFja3VwIChu6WNlc3NpdGUgaGFwcm94eSAxLjIuOSkKICAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgIG1vZGUgaHR0cApkaWZmIC0tZ2l0IGEvZXhhbXBsZXMvaGFwcm94eS5jZmcgYi9leGFtcGxlcy9oYXByb3h5LmNmZwppbmRleCBhZTcyMTUwLi4xYWRkN2ZmIDEwMDY0NAotLS0gYS9leGFtcGxlcy9oYXByb3h5LmNmZworKysgYi9leGFtcGxlcy9oYXByb3h5LmNmZwpAQCAtNTMsNiArNTMsMTMgQEAKIAlzZXJ2ZXIJaW5zdDEgMTkyLjE2OC4xMTQuNTY6ODAgY2hlY2sgaW50ZXIgMjAwMCBmYWxsIDMKIAlzZXJ2ZXIJaW5zdDIgMTkyLjE2OC4xMTQuNTY6ODEgY2hlY2sgaW50ZXIgMjAwMCBmYWxsIDMgYmFja3VwCiAKK2xpc3Rlbglzc2wtcmVsYXkgMC4wLjAuMDo4NDQzCisJb3B0aW9uCXNzbC1oZWxsby1jaGsKKwliYWxhbmNlCXNvdXJjZQorCXNlcnZlcglpbnN0MSAxOTIuMTY4LjExMC41Njo0NDMgY2hlY2sgaW50ZXIgMjAwMCBmYWxsIDMKKwlzZXJ2ZXIJaW5zdDIgMTkyLjE2OC4xMTAuNTc6NDQzIGNoZWNrIGludGVyIDIwMDAgZmFsbCAzCisJc2VydmVyCWJhY2sxIDE5Mi4xNjguMTIwLjU4OjQ0MyBiYWNrdXAKKwogbGlzdGVuCWFwcGxpNS1iYWNrdXAgMC4wLjAuMDoxMDAwNQogCW9wdGlvbglodHRwY2hrICoKIAliYWxhbmNlCXJvdW5kcm9iaW4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHlwZXMvYmFja2VuZC5oIGIvaW5jbHVkZS90eXBlcy9iYWNrZW5kLmgKaW5kZXggOWZhMTc5Zi4uYTZhMzkzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS90eXBlcy9iYWNrZW5kLmgKKysrIGIvaW5jbHVkZS90eXBlcy9iYWNrZW5kLmgKQEAgLTUxLDYgKzUxLDcgQEAKICNkZWZpbmUgUFJfT19CQUxBTkNFX1NIIDB4MDA0MDAwMDAgICAgICAvKiBiYWxhbmNlIG9uIHNvdXJjZSBJUCBoYXNoICovCiAjZGVmaW5lIFBSX09fQkFMQU5DRSAgICAoUFJfT19CQUxBTkNFX1JSIHwgUFJfT19CQUxBTkNFX1NIKQogI2RlZmluZSBQUl9PX0FCUlRfQ0xPU0UgMHgwMDgwMDAwMCAgICAgIC8qIGltbWVkaWF0ZWx5IGFib3J0IHJlcXVlc3Qgd2hlbiBjbGllbnQgY2xvc2VzICovCisjZGVmaW5lIFBSX09fU1NMM19DSEsgICAweDAxMDAwMDAwICAgICAgLyogdXNlIFNTTHYzIENMSUVOVF9IRUxMTyBwYWNrZXRzIGZvciBzZXJ2ZXIgaGVhbHRoICovCiAKICNlbmRpZiAvKiBfVFlQRVNfQkFDS0VORF9IICovCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdHlwZXMvcHJveHkuaCBiL2luY2x1ZGUvdHlwZXMvcHJveHkuaAppbmRleCAzMDZjMzFkLi41MGMxNmVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL3R5cGVzL3Byb3h5LmgKKysrIGIvaW5jbHVkZS90eXBlcy9wcm94eS5oCkBAIC0xMTQsOCArMTE0LDggQEAKIAl2b2lkICpyZXFfY2FwX3Bvb2wsICpyc3BfY2FwX3Bvb2w7CS8qIHBvb2xzIG9mIHByZS1hbGxvY2F0ZWQgY2hhciAqKiB1c2VkIHRvIGJ1aWxkIHRoZSBzZXNzaW9ucyAqLwogCWNoYXIgKnJlcV9hZGRbTUFYX05FV0hEUl0sICpyc3BfYWRkW01BWF9ORVdIRFJdOyAvKiBoZWFkZXJzIHRvIGJlIGFkZGVkICovCiAJaW50IGdyYWNlOwkJCQkvKiBncmFjZSB0aW1lIGFmdGVyIHN0b3AgcmVxdWVzdCAqLwotCWNoYXIgKmNoZWNrX3JlcTsJCQkvKiBIVFRQIHJlcXVlc3QgdG8gdXNlIGlmIFBSX09fSFRUUF9DSEsgaXMgc2V0LCBlbHNlIE5VTEwgKi8KLQlpbnQgY2hlY2tfbGVuOwkJCS8qIExlbmd0aCBvZiB0aGUgSFRUUCByZXF1ZXN0ICovCisJY2hhciAqY2hlY2tfcmVxOwkJCS8qIEhUVFAgb3IgU1NMIHJlcXVlc3QgdG8gdXNlIGZvciBQUl9PX0hUVFBfQ0hLfFBSX09fU1NMM19DSEsgKi8KKwlpbnQgY2hlY2tfbGVuOwkJCQkvKiBMZW5ndGggb2YgdGhlIEhUVFAgb3IgU1NMMyByZXF1ZXN0ICovCiAJc3RydWN0IHsKIAkJY2hhciAqbXNnNDAwOwkJCS8qIG1lc3NhZ2UgZm9yIGVycm9yIDQwMCAqLwogCQlpbnQgbGVuNDAwOwkJCS8qIG1lc3NhZ2UgbGVuZ3RoIGZvciBlcnJvciA0MDAgKi8KZGlmZiAtLWdpdCBhL3NyYy9jZmdwYXJzZS5jIGIvc3JjL2NmZ3BhcnNlLmMKaW5kZXggMDkxZjZkOS4uNWU0YWE1MSAxMDA2NDQKLS0tIGEvc3JjL2NmZ3BhcnNlLmMKKysrIGIvc3JjL2NmZ3BhcnNlLmMKQEAgLTEwNSw2ICsxMDUsMzYgQEAKIAkiXHJcbiIKIAkiPGh0bWw+PGJvZHk+PGgxPjUwNCBHYXRld2F5IFRpbWUtb3V0PC9oMT5cblRoZSBzZXJ2ZXIgZGlkbid0IHJlc3BvbmQgaW4gdGltZS5cbjwvYm9keT48L2h0bWw+XG4iOwogCisvKiBUaGlzIGlzIHRoZSBTU0x2MyBDTElFTlQgSEVMTE8gcGFja2V0IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCB0aGUKKyAqIHNzbC1oZWxsby1jaGsgb3B0aW9uIHRvIGVuc3VyZSB0aGF0IHRoZSByZW1vdGUgc2VydmVyIHNwZWFrcyBTU0wuCisgKgorICogQ2hlY2sgUkZDIDIyNDYgKFRMU3YxLjApIHNlY3Rpb25zIEEuMyBhbmQgQS40IGZvciBkZXRhaWxzLgorICovCitjb25zdCBjaGFyIHNzbHYzX2NsaWVudF9oZWxsb19wa3RbXSA9IHsKKwkiXHgxNiIgICAgICAgICAgICAgICAgLyogQ29udGVudFR5cGUgICAgICAgICA6IDB4MTYgPSBIYW5zaGFrZSAgICAgICAgICAgKi8KKwkiXHgwM1x4MDAiICAgICAgICAgICAgLyogUHJvdG9jb2xWZXJzaW9uICAgICA6IDB4MDMwMCA9IFNTTHYzICAgICAgICAgICAgKi8KKwkiXHgwMFx4NzkiICAgICAgICAgICAgLyogQ29udGVudExlbmd0aCAgICAgICA6IDB4NzkgYnl0ZXMgYWZ0ZXIgdGhpcyBvbmUgKi8KKwkiXHgwMSIgICAgICAgICAgICAgICAgLyogSGFuc2hha2VUeXBlICAgICAgICA6IDB4MDEgPSBDTElFTlQgSEVMTE8gICAgICAgKi8KKwkiXHgwMFx4MDBceDc1IiAgICAgICAgLyogSGFuZHNoYWtlTGVuZ3RoICAgICA6IDB4NzUgYnl0ZXMgYWZ0ZXIgdGhpcyBvbmUgKi8KKwkiXHgwM1x4MDAiICAgICAgICAgICAgLyogSGVsbG8gVmVyc2lvbiAgICAgICA6IDB4MDMwMCA9IHYzICAgICAgICAgICAgICAgKi8KKwkiXHgwMFx4MDBceDAwXHgwMCIgICAgLyogVW5peCBHTVQgVGltZSAocykgICA6IGZpbGxlZCB3aXRoIDxub3c+IChAMHgwQikgKi8KKwkiSEFQUk9YWVNTTENIS1xuSEFQUk9YWVNTTENIS1xuIiAvKiBSYW5kb20gICA6IG11c3QgYmUgZXhhY3RseSAyOCBieXRlcyAgKi8KKwkiXHgwMCIgICAgICAgICAgICAgICAgLyogU2Vzc2lvbiBJRCBsZW5ndGggICA6IGVtcHR5IChubyBzZXNzaW9uIElEKSAgICAgKi8KKwkiXHgwMFx4NEUiICAgICAgICAgICAgLyogQ2lwaGVyIFN1aXRlIExlbmd0aCA6IDc4IGJ5dGVzIGFmdGVyIHRoaXMgb25lICAgKi8KKwkiXHgwMFx4MDEiICJceDAwXHgwMiIgIlx4MDBceDAzIiAiXHgwMFx4MDQiIC8qIDM5IG1vc3QgY29tbW9uIGNpcGhlcnMgOiAgKi8KKwkiXHgwMFx4MDUiICJceDAwXHgwNiIgIlx4MDBceDA3IiAiXHgwMFx4MDgiIC8qIDB4MDEuLi4weDFCLCAweDJGLi4uMHgzQSAgKi8KKwkiXHgwMFx4MDkiICJceDAwXHgwQSIgIlx4MDBceDBCIiAiXHgwMFx4MEMiIC8qIFRoaXMgY292ZXJzIFJTQS9ESCwgICAgICAgKi8KKwkiXHgwMFx4MEQiICJceDAwXHgwRSIgIlx4MDBceDBGIiAiXHgwMFx4MTAiIC8qIHZhcmlvdXMgYml0IGxlbmd0aHMsICAgICAgKi8KKwkiXHgwMFx4MTEiICJceDAwXHgxMiIgIlx4MDBceDEzIiAiXHgwMFx4MTQiIC8qIFNIQTEvTUQ1LCBERVMvM0RFUy9BRVMuLi4gKi8KKwkiXHgwMFx4MTUiICJceDAwXHgxNiIgIlx4MDBceDE3IiAiXHgwMFx4MTgiCisJIlx4MDBceDE5IiAiXHgwMFx4MUEiICJceDAwXHgxQiIgIlx4MDBceDJGIgorCSJceDAwXHgzMCIgIlx4MDBceDMxIiAiXHgwMFx4MzIiICJceDAwXHgzMyIKKwkiXHgwMFx4MzQiICJceDAwXHgzNSIgIlx4MDBceDM2IiAiXHgwMFx4MzciCisJIlx4MDBceDM4IiAiXHgwMFx4MzkiICJceDAwXHgzQSIKKwkiXHgwMSIgICAgICAgICAgICAgICAgLyogQ29tcHJlc3Npb24gTGVuZ3RoICA6IDB4MDEgPSAxIGJ5dGUgZm9yIHR5cGVzICAgKi8KKwkiXHgwMCIgICAgICAgICAgICAgICAgLyogQ29tcHJlc3Npb24gVHlwZSAgICA6IDB4MDAgPSBOVUxMIGNvbXByZXNzaW9uICAgKi8KK307CisKIAogc3RhdGljIHN0cnVjdCBwcm94eSBkZWZwcm94eTsJCS8qIGZha2UgcHJveHkgdXNlZCB0byBhc3NpZ24gZGVmYXVsdCB2YWx1ZXMgb24gYWxsIGluc3RhbmNlcyAqLwogaW50IGNmZ19tYXhwY29ubiA9IERFRkFVTFRfTUFYQ09OTjsJLyogIyBvZiBzaW11bHRhbmVvdXMgY29ubmVjdGlvbnMgcGVyIHByb3h5ICgtTikgKi8KQEAgLTg4OCw2ICs5MTgsNyBAQAogCQkJCWZyZWUoY3VycHJveHktPmNoZWNrX3JlcSk7CiAJCQl9CiAJCQljdXJwcm94eS0+b3B0aW9ucyB8PSBQUl9PX0hUVFBfQ0hLOworCQkJY3VycHJveHktPm9wdGlvbnMgJj0gflBSX09fU1NMM19DSEs7CiAJCQlpZiAoISphcmdzWzJdKSB7IC8qIG5vIGFyZ3VtZW50ICovCiAJCQkJY3VycHJveHktPmNoZWNrX3JlcSA9IHN0cmR1cChERUZfQ0hFQ0tfUkVRKTsgLyogZGVmYXVsdCByZXF1ZXN0ICovCiAJCQkJY3VycHJveHktPmNoZWNrX2xlbiA9IHN0cmxlbihERUZfQ0hFQ0tfUkVRKTsKQEAgLTkwNyw2ICs5MzgsMTQgQEAKIAkJCQljdXJwcm94eS0+Y2hlY2tfbGVuID0gc25wcmludGYoY3VycHJveHktPmNoZWNrX3JlcSwgcmVxbGVuLAogCQkJCQkJCSAgICAgICAiJXMgJXMgJXNcclxuXHJcbiIsIGFyZ3NbMl0sIGFyZ3NbM10sICphcmdzWzRdP2FyZ3NbNF06IkhUVFAvMS4wIik7CiAJCQl9CisJCX0KKwkJZWxzZSBpZiAoIXN0cmNtcChhcmdzWzFdLCAic3NsLWhlbGxvLWNoayIpKSB7CisJCQkvKiB1c2UgU1NMdjMgQ0xJRU5UIEhFTExPIHRvIGNoZWNrIHNlcnZlcnMnIGhlYWx0aCAqLworCQkJaWYgKGN1cnByb3h5LT5jaGVja19yZXEgIT0gTlVMTCkgeworCQkJCWZyZWUoY3VycHJveHktPmNoZWNrX3JlcSk7CisJCQl9CisJCQljdXJwcm94eS0+b3B0aW9ucyAmPSB+UFJfT19IVFRQX0NISzsKKwkJCWN1cnByb3h5LT5vcHRpb25zIHw9IFBSX09fU1NMM19DSEs7CiAJCX0KIAkJZWxzZSBpZiAoIXN0cmNtcChhcmdzWzFdLCAicGVyc2lzdCIpKSB7CiAJCQkvKiBwZXJzaXN0IG9uIHVzaW5nIHRoZSBzZXJ2ZXIgc3BlY2lmaWVkIGJ5IHRoZSBjb29raWUsIGV2ZW4gd2hlbiBpdCdzIGRvd24gKi8KQEAgLTE4ODEsNyArMTkyMCwxMyBAQAogCQkJCSIgICB8IHZhbHVlcyBhcmUgc2V0IHRvIGEgbm9uLXplcm8gdmFsdWU6IGNsaXRpbWVvdXQsIGNvbnRpbWVvdXQsIHNydnRpbWVvdXQuXG4iLAogCQkJCWZpbGUsIGN1cnByb3h5LT5pZCk7CiAJCX0KLQkJCisKKwkJaWYgKGN1cnByb3h5LT5vcHRpb25zICYgUFJfT19TU0wzX0NISykgeworCQkJY3VycHJveHktPmNoZWNrX2xlbiA9IHNpemVvZihzc2x2M19jbGllbnRfaGVsbG9fcGt0KTsKKwkJCWN1cnByb3h5LT5jaGVja19yZXEgPSAoY2hhciAqKW1hbGxvYyhzaXplb2Yoc3NsdjNfY2xpZW50X2hlbGxvX3BrdCkpOworCQkJbWVtY3B5KGN1cnByb3h5LT5jaGVja19yZXEsIHNzbHYzX2NsaWVudF9oZWxsb19wa3QsIHNpemVvZihzc2x2M19jbGllbnRfaGVsbG9fcGt0KSk7CisJCX0KKwogCQkvKiBmaXJzdCwgd2Ugd2lsbCBpbnZlcnQgdGhlIHNlcnZlcnMgbGlzdCBvcmRlciAqLwogCQluZXdzcnYgPSBOVUxMOwogCQl3aGlsZSAoY3VycHJveHktPnNydikgewpkaWZmIC0tZ2l0IGEvc3JjL2NoZWNrcy5jIGIvc3JjL2NoZWNrcy5jCmluZGV4IGZkMGYxMDYuLjgxN2FmYzIgMTAwNjQ0Ci0tLSBhL3NyYy9jaGVja3MuYworKysgYi9zcmMvY2hlY2tzLmMKQEAgLTExOSwxMSArMTE5LDE5IEBACiAJfQogCWVsc2UgaWYgKHMtPnJlc3VsdCAhPSAtMSkgewogCQkvKiB3ZSBkb24ndCB3YW50IHRvIG1hcmsgJ1VQJyBhIHNlcnZlciBvbiB3aGljaCB3ZSBkZXRlY3RlZCBhbiBlcnJvciBlYXJsaWVyICovCi0JCWlmIChzLT5wcm94eS0+b3B0aW9ucyAmIFBSX09fSFRUUF9DSEspIHsKKwkJaWYgKChzLT5wcm94eS0+b3B0aW9ucyAmIFBSX09fSFRUUF9DSEspIHx8CisJCSAgICAocy0+cHJveHktPm9wdGlvbnMgJiBQUl9PX1NTTDNfQ0hLKSkgewogCQkJaW50IHJldDsKLQkJCS8qIHdlIHdhbnQgdG8gY2hlY2sgaWYgdGhpcyBob3N0IHJlcGxpZXMgdG8gIk9QVElPTlMgLyBIVFRQLzEuMCIKKwkJCS8qIHdlIHdhbnQgdG8gY2hlY2sgaWYgdGhpcyBob3N0IHJlcGxpZXMgdG8gSFRUUCBvciBTU0x2MyByZXF1ZXN0cwogCQkJICogc28gd2UnbGwgc2VuZCB0aGUgcmVxdWVzdCwgYW5kIHdvbid0IHdha2UgdGhlIGNoZWNrZXIgdXAgbm93LgogCQkJICovCisKKwkJCWlmIChzLT5wcm94eS0+b3B0aW9ucyAmIFBSX09fU1NMM19DSEspIHsKKwkJCQkvKiBTU0wgcmVxdWlyZXMgdGhhdCB3ZSBwdXQgVW5peCB0aW1lIGluIHRoZSByZXF1ZXN0ICovCisJCQkJaW50IGdtdF90aW1lID0gaHRvbmwobm93LnR2X3NlYyk7CisJCQkJbWVtY3B5KHMtPnByb3h5LT5jaGVja19yZXEgKyAxMSwgJmdtdF90aW1lLCA0KTsKKwkJCX0KKwogI2lmbmRlZiBNU0dfTk9TSUdOQUwKIAkJCXJldCA9IHNlbmQoZmQsIHMtPnByb3h5LT5jaGVja19yZXEsIHMtPnByb3h5LT5jaGVja19sZW4sIE1TR19ET05UV0FJVCk7CiAjZWxzZQpAQCAtMTUxLDkgKzE1OSwxMiBAQAogCiAKIC8qCi0gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgb25seSBmb3Igc2VydmVyIGhlYWx0aC1jaGVja3MuIEl0IGhhbmRsZXMKLSAqIHRoZSBzZXJ2ZXIncyByZXBseSB0byBhbiBIVFRQIHJlcXVlc3QuIEl0IHJldHVybnMgMSBpZiB0aGUgc2VydmVyIHJlcGxpZXMKLSAqIDJ4eCBvciAzeHggKHZhbGlkIHJlc3BvbnNlcyksIG9yIC0xIGluIG90aGVyIGNhc2VzLgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9ubHkgZm9yIHNlcnZlciBoZWFsdGgtY2hlY2tzLiBJdCBoYW5kbGVzIHRoZSBzZXJ2ZXIncworICogcmVwbHkgdG8gYW4gSFRUUCByZXF1ZXN0IG9yIFNTTCBIRUxMTy4gSXQgcmV0dXJucyAxIGluIHMtPnJlc3VsdCBpZiB0aGUKKyAqIHNlcnZlciByZXBsaWVzIEhUVFAgMnh4IG9yIDN4eCAodmFsaWQgcmVzcG9uc2VzKSwgb3IgaWYgaXQgcmV0dXJucyBhdCBsZWFzdAorICogNSBieXRlcyBpbiByZXNwb25zZSB0byBTU0wgSEVMTE8uIFRoZSBwcmluY2lwbGUgaXMgdGhhdCB0aGlzIGlzIGVub3VnaCB0bworICogZGlzdGluZ3Vpc2ggYmV0d2VlbiBhbiBTU0wgc2VydmVyIGFuZCBhIHB1cmUgVENQIHJlbGF5LiBBbGwgb3RoZXIgY2FzZXMgd2lsbAorICogcmV0dXJuIC0xLiBUaGUgZnVuY3Rpb24gcmV0dXJucyAwLgogICovCiBpbnQgZXZlbnRfc3J2X2Noa19yKGludCBmZCkKIHsKQEAgLTE3NywxMCArMTg4LDEyIEBACiAJCSAqLwogCQlsZW4gPSByZWN2KGZkLCByZXBseSwgc2l6ZW9mKHJlcGx5KSwgTVNHX05PU0lHTkFMKTsKICNlbmRpZgotCi0JCWlmICgobGVuID49IHNpemVvZigiSFRUUC8xLjAgMDAwIikpICYmCisJCWlmICgoKHMtPnByb3h5LT5vcHRpb25zICYgUFJfT19IVFRQX0NISykgJiYKKwkJICAgICAobGVuID49IHNpemVvZigiSFRUUC8xLjAgMDAwIikpICYmCiAJCSAgICAhbWVtY21wKHJlcGx5LCAiSFRUUC8xLiIsIDcpICYmCiAJCSAgICAocmVwbHlbOV0gPT0gJzInIHx8IHJlcGx5WzldID09ICczJykpIC8qIDJ4eCBvciAzeHggKi8KKwkJICAgIHx8ICgocy0+cHJveHktPm9wdGlvbnMgJiBQUl9PX1NTTDNfQ0hLKSAmJiAobGVuID49IDUpICYmCisJCQkocmVwbHlbMF0gPT0gMHgxNSB8fCByZXBseVswXSA9PSAweDE2KSkpIC8qIGFsZXJ0IG9yIGhhbmRzaGFrZSAqLwogCQkJcmVzdWx0ID0gMTsKIAl9CiAK