--b1_a416cdbfe18eeceb014b43bac9e6f634 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: quoted-printable This revision was automatically updated to reflect the committed changes. Closed by commit rL244568: Propagate SourceLocations through to get a Loc o= n float_cast_overflow (authored by filcab). Changed prior to commit: http://reviews.llvm.org/D11757?vs=3D31429&id=3D31765#toc Repository: rL LLVM http://reviews.llvm.org/D11757 Files: cfe/trunk/lib/CodeGen/CGExpr.cpp cfe/trunk/lib/CodeGen/CGExprComplex.cpp cfe/trunk/lib/CodeGen/CGExprScalar.cpp cfe/trunk/lib/CodeGen/CGOpenMPRuntime.cpp cfe/trunk/lib/CodeGen/CGStmtOpenMP.cpp cfe/trunk/lib/CodeGen/CodeGenFunction.h cfe/trunk/test/CodeGen/catch-undef-behavior.c --b1_a416cdbfe18eeceb014b43bac9e6f634 Content-Type: text/x-patch; charset=utf-8; name="D11757.31765.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D11757.31765.patch" SW5kZXg6IGNmZS90cnVuay90ZXN0L0NvZGVHZW4vY2F0Y2gtdW5kZWYtYmVo YXZpb3IuYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjZmUvdHJ1bmsv dGVzdC9Db2RlR2VuL2NhdGNoLXVuZGVmLWJlaGF2aW9yLmMKKysrIGNmZS90 cnVuay90ZXN0L0NvZGVHZW4vY2F0Y2gtdW5kZWYtYmVoYXZpb3IuYwpAQCAt MTksNiArMTksMTcgQEAKIC8vIENIRUNLLVVCU0FOOiBAW1tMSU5FXzcwMDou Kl1dID0ge3suKn19LCBpMzIgNzAwLCBpMzIgMTQge3suKn19IEBbW1NUUlVD VF9TXV0sIGk2NCA0LCBpOCAzIH0KIC8vIENIRUNLLVVCU0FOOiBAW1tMSU5F XzgwMDouKl1dID0ge3suKn19LCBpMzIgODAwLCBpMzIgMTIge3suKn19IEB7 ey4qfX0gfQogLy8gQ0hFQ0stVUJTQU46IEBbW0xJTkVfOTAwOi4qXV0gPSB7 ey4qfX0sIGkzMiA5MDAsIGkzMiAxMSB7ey4qfX0gQHt7Lip9fSB9CisvLyBD SEVDSy1VQlNBTjogQFtbTElORV8xMDAwOi4qXV0gPSB7ey4qfX0sIGkzMiAx MDAwLCBpMzIgMTAge3suKn19IEB7ey4qfX0gfQorLy8gQ0hFQ0stVUJTQU46 IEBbW0ZQMTY6LipdXSA9IHByaXZhdGUgdW5uYW1lZF9hZGRyIGNvbnN0YW50 IHsgaTE2LCBpMTYsIFs5IHggaThdIH0geyBpMTYgMSwgaTE2IDE2LCBbOSB4 IGk4XSBjIidfX2ZwMTYnXDAwIiB9CisvLyBDSEVDSy1VQlNBTjogQFtbTElO RV8xMTAwOi4qXV0gPSB7ey4qfX0sIGkzMiAxMTAwLCBpMzIgOCB7ey4qfX0g QHt7Lip9fSB9CisvLyBDSEVDSy1VQlNBTjogQFtbTElORV8xMjAwOi4qXV0g PSB7ey4qfX0sIGkzMiAxMjAwLCBpMzIgMTAge3suKn19IEB7ey4qfX0gfQor Ly8gQ0hFQ0stVUJTQU46IEBbW0xJTkVfMTMwMDouKl1dID0ge3suKn19LCBp MzIgMTMwMCwgaTMyIDEwIHt7Lip9fSBAe3suKn19IH0KKy8vIENIRUNLLVVC U0FOOiBAW1tMSU5FXzE0MDA6LipdXSA9IHt7Lip9fSwgaTMyIDE0MDAsIGkz MiAxMCB7ey4qfX0gQHt7Lip9fSB9CisvLyBNYWtlIHN1cmUgd2UgY2hlY2sg dGhlIGZwMTYgdHlwZV9taXNtYXRjaCBkYXRhIHNvIHdlIGNhbiBlYXNpbHkg bWF0Y2ggdGhlIHNpZ25lZCBjaGFyIGZsb2F0X2Nhc3Rfb3ZlcmZsb3cKKy8v IENIRUNLLVVCU0FOOiBAW1tMSU5FXzE1MDA6LipdXSA9IHt7Lip9fSwgaTMy IDE1MDAsIGkzMiAxMCB7ey4qfX0gQFtbRlAxNl1dLCB7ey4qfX0gfQorLy8g Q0hFQ0stVUJTQU46IEBbW1NDSEFSOi4qXV0gPSBwcml2YXRlIHVubmFtZWRf YWRkciBjb25zdGFudCB7IGkxNiwgaTE2LCBbMTQgeCBpOF0gfSB7IGkxNiAw LCBpMTYgNywgWzE0IHggaThdIGMiJ3NpZ25lZCBjaGFyJ1wwMCIgfQorLy8g Q0hFQ0stVUJTQU46IEBbW0xJTkVfMTUwMDouKl1dID0ge3suKn19LCBpMzIg MTUwMCwgaTMyIDEwIHt7Lip9fSBAW1tGUDE2XV0sIHt7Lip9fSB9CisvLyBD SEVDSy1VQlNBTjogQFtbTElORV8xNjAwOi4qXV0gPSB7ey4qfX0sIGkzMiAx NjAwLCBpMzIgMTAge3suKn19IEB7ey4qfX0gfQogCiAvLyBDSEVDSy1OVUxM OiBAW1tMSU5FXzEwMDouKl1dID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIgZ2xv YmFsIHt7Lip9fSwgaTMyIDEwMCwgaTMyIDUge3suKn19CiAKQEAgLTIwOSwx MCArMjIwLDExIEBACiAgIC8vIENIRUNLLUNPTU1PTjogJVtbSU5CT1VORFM6 LipdXSA9IGljbXAgdWxlIGkxMjggJXt7Lip9fSwgLTIwMjgyNDA5NjAzNjUx NjcwNDIzOTQ3MjUxMjg2MDE2CiAgIC8vIENIRUNLLUNPTU1PTi1ORVhUOiBi ciBpMSAlW1tJTkJPVU5EU11dCiAKLSAgLy8gQ0hFQ0stVUJTQU46IGNhbGwg dm9pZCBAX191YnNhbl9oYW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdygKKyAg Ly8gQ0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNhbl9oYW5kbGVfZmxv YXRfY2FzdF9vdmVyZmxvdyhpOCogYml0Y2FzdCAoe3suKn19IEBbW0xJTkVf MTAwMF1dIHRvIGk4KiksCiAKICAgLy8gQ0hFQ0stVFJBUDogICAgICBjYWxs IHZvaWQgQGxsdm0udHJhcCgpIFtbTlJfTlVXXV0KICAgLy8gQ0hFQ0stVFJB UC1ORVhUOiB1bnJlYWNoYWJsZQorI2xpbmUgMTAwMAogICByZXR1cm4gbjsK IH0KIApAQCAtMjIzLDEwICsyMzUsMTEgQEAKICAgLy8gQ0hFQ0stQ09NTU9O OiAlW1tJTkJPVU5EUzouKl1dID0gYW5kIGkxICVbW0dFXV0sICVbW0xFXV0K ICAgLy8gQ0hFQ0stQ09NTU9OLU5FWFQ6IGJyIGkxICVbW0lOQk9VTkRTXV0K IAotICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRs ZV9mbG9hdF9jYXN0X292ZXJmbG93KAorICAvLyBDSEVDSy1VQlNBTjogY2Fs bCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KGk4 KiBiaXRjYXN0ICh7ey4qfX0gQFtbTElORV8xMTAwXV0gdG8gaTgqKSwKIAog ICAvLyBDSEVDSy1UUkFQOiAgICAgIGNhbGwgdm9pZCBAbGx2bS50cmFwKCkg W1tOUl9OVVddXQogICAvLyBDSEVDSy1UUkFQLU5FWFQ6IHVucmVhY2hhYmxl CisjbGluZSAxMTAwCiAgICpwID0gbjsKIH0KIApAQCAtMjM5LDEwICsyNTIs MTEgQEAKIAogICAvLyBDSEVDSy1VQlNBTjogJVtbQ0FTVDouKl1dID0gYml0 Y2FzdCBmbG9hdCAlW1tGXV0gdG8gaTMyCiAgIC8vIENIRUNLLVVCU0FOOiAl W1tBUkc6LipdXSA9IHpleHQgaTMyICVbW0NBU1RdXSB0byBpNjQKLSAgLy8g Q0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNhbl9oYW5kbGVfZmxvYXRf Y2FzdF9vdmVyZmxvdyh7ey4qfX0sIGk2NCAlW1tBUkddXQorICAvLyBDSEVD Sy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0 X292ZXJmbG93KGk4KiBiaXRjYXN0ICh7ey4qfX0gQFtbTElORV8xMjAwXV0g dG8gaTgqKSwgaTY0ICVbW0FSR11dCiAKICAgLy8gQ0hFQ0stVFJBUDogICAg ICBjYWxsIHZvaWQgQGxsdm0udHJhcCgpIFtbTlJfTlVXXV0KICAgLy8gQ0hF Q0stVFJBUC1ORVhUOiB1bnJlYWNoYWJsZQorI2xpbmUgMTIwMAogICByZXR1 cm4gZjsKIH0KIApAQCAtMjU3LDEwICsyNzEsMTEgQEAKIAogICAvLyBDSEVD Sy1VQlNBTjogc3RvcmUgeDg2X2ZwODAgJVtbRl1dLCB4ODZfZnA4MCogJVtb QUxMT0NBOi4qXV0sICFub3Nhbml0aXplCiAgIC8vIENIRUNLLVVCU0FOOiAl W1tBUkc6LipdXSA9IHB0cnRvaW50IHg4Nl9mcDgwKiAlW1tBTExPQ0FdXSB0 byBpNjQKLSAgLy8gQ0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNhbl9o YW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdyh7ey4qfX0sIGk2NCAlW1tBUkdd XQorICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRs ZV9mbG9hdF9jYXN0X292ZXJmbG93KGk4KiBiaXRjYXN0ICh7ey4qfX0gQFtb TElORV8xMzAwXV0gdG8gaTgqKSwgaTY0ICVbW0FSR11dCiAKICAgLy8gQ0hF Q0stVFJBUDogICAgICBjYWxsIHZvaWQgQGxsdm0udHJhcCgpIFtbTlJfTlVX XV0KICAgLy8gQ0hFQ0stVFJBUC1ORVhUOiB1bnJlYWNoYWJsZQorI2xpbmUg MTMwMAogICByZXR1cm4gbGQ7CiB9CiAKQEAgLTI3MSwxMCArMjg2LDExIEBA CiAgIC8vIENIRUNLLUNPTU1PTjogJVtbSU5CT1VORFM6LipdXSA9IGFuZCBp MSAlW1tHRV1dLCAlW1tMRV1dCiAgIC8vIENIRUNLLUNPTU1PTi1ORVhUOiBi ciBpMSAlW1tJTkJPVU5EU11dCiAKLSAgLy8gQ0hFQ0stVUJTQU46IGNhbGwg dm9pZCBAX191YnNhbl9oYW5kbGVfZmxvYXRfY2FzdF9vdmVyZmxvdygKKyAg Ly8gQ0hFQ0stVUJTQU46IGNhbGwgdm9pZCBAX191YnNhbl9oYW5kbGVfZmxv YXRfY2FzdF9vdmVyZmxvdyhpOCogYml0Y2FzdCAoe3suKn19IEBbW0xJTkVf MTQwMF1dIHRvIGk4KiksCiAKICAgLy8gQ0hFQ0stVFJBUDogICAgICBjYWxs IHZvaWQgQGxsdm0udHJhcCgpIFtbTlJfTlVXXV0KICAgLy8gQ0hFQ0stVFJB UC1ORVhUOiB1bnJlYWNoYWJsZQorI2xpbmUgMTQwMAogICByZXR1cm4gZjsK IH0KIApAQCAtMjg1LDEwICszMDEsMTEgQEAKICAgLy8gQ0hFQ0stQ09NTU9O OiAlW1tJTkJPVU5EUzouKl1dID0gYW5kIGkxICVbW0dFXV0sICVbW0xFXV0K ICAgLy8gQ0hFQ0stQ09NTU9OLU5FWFQ6IGJyIGkxICVbW0lOQk9VTkRTXV0K IAotICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRs ZV9mbG9hdF9jYXN0X292ZXJmbG93KAorICAvLyBDSEVDSy1VQlNBTjogY2Fs bCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KGk4 KiBiaXRjYXN0ICh7ey4qfX0gQFtbTElORV8xNTAwXV0gdG8gaTgqKSwKIAog ICAvLyBDSEVDSy1UUkFQOiAgICAgIGNhbGwgdm9pZCBAbGx2bS50cmFwKCkg W1tOUl9OVVddXQogICAvLyBDSEVDSy1UUkFQLU5FWFQ6IHVucmVhY2hhYmxl CisjbGluZSAxNTAwCiAgIHJldHVybiAqcDsKIH0KIApAQCAtMzAxLDEwICsz MTgsMTEgQEAKICAgLy8gQ0hFQ0stQ09NTU9OOiAlW1tJTkJPVU5EUzouKl1d ID0geG9yIGkxICVbW09VVE9GQk9VTkRTXV0sIHRydWUKICAgLy8gQ0hFQ0st Q09NTU9OLU5FWFQ6IGJyIGkxICVbW0lOQk9VTkRTXV0KIAotICAvLyBDSEVD Sy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vic2FuX2hhbmRsZV9mbG9hdF9jYXN0 X292ZXJmbG93KAorICAvLyBDSEVDSy1VQlNBTjogY2FsbCB2b2lkIEBfX3Vi c2FuX2hhbmRsZV9mbG9hdF9jYXN0X292ZXJmbG93KGk4KiBiaXRjYXN0ICh7 ey4qfX0gQFtbTElORV8xNjAwXV0gdG8gaTgqKSwKIAogICAvLyBDSEVDSy1U UkFQOiAgICAgIGNhbGwgdm9pZCBAbGx2bS50cmFwKCkgW1tOUl9OVVddXQog ICAvLyBDSEVDSy1UUkFQLU5FWFQ6IHVucmVhY2hhYmxlCisjbGluZSAxNjAw CiAgIHJldHVybiBmOwogfQogCkluZGV4OiBjZmUvdHJ1bmsvbGliL0NvZGVH ZW4vQ0dFeHByQ29tcGxleC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0gY2ZlL3RydW5rL2xpYi9Db2RlR2VuL0NHRXhwckNvbXBsZXguY3BwCisr KyBjZmUvdHJ1bmsvbGliL0NvZGVHZW4vQ0dFeHByQ29tcGxleC5jcHAKQEAg LTg1LDEwICs4NSwxMCBAQAogCiAgIC8vLyBFbWl0IGEgY2FzdCBmcm9tIGNv bXBsZXggdmFsdWUgVmFsIHRvIERlc3RUeXBlLgogICBDb21wbGV4UGFpclR5 IEVtaXRDb21wbGV4VG9Db21wbGV4Q2FzdChDb21wbGV4UGFpclR5IFZhbCwg UXVhbFR5cGUgU3JjVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUXVhbFR5cGUgRGVzdFR5cGUpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEZXN0 VHlwZSwgU291cmNlTG9jYXRpb24gTG9jKTsKICAgLy8vIEVtaXQgYSBjYXN0 IGZyb20gc2NhbGFyIHZhbHVlIFZhbCB0byBEZXN0VHlwZS4KICAgQ29tcGxl eFBhaXJUeSBFbWl0U2NhbGFyVG9Db21wbGV4Q2FzdChsbHZtOjpWYWx1ZSAq VmFsLCBRdWFsVHlwZSBTcmNUeXBlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERlc3RUeXBlKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBE ZXN0VHlwZSwgU291cmNlTG9jYXRpb24gTG9jKTsKIAogICAvLz09PS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KICAgLy8gICAgICAgICAgICAgICAg ICAgICAgICAgICAgVmlzaXRvciBNZXRob2RzCkBAIC0zOTQsMjUgKzM5NCwy NyBAQAogLy8vIEVtaXQgYSBjYXN0IGZyb20gY29tcGxleCB2YWx1ZSBWYWwg dG8gRGVzdFR5cGUuCiBDb21wbGV4UGFpclR5IENvbXBsZXhFeHByRW1pdHRl cjo6RW1pdENvbXBsZXhUb0NvbXBsZXhDYXN0KENvbXBsZXhQYWlyVHkgVmFs LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRdWFsVHlwZSBTcmNUeXBlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRdWFsVHlwZSBEZXN0VHlwZSkgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFs VHlwZSBEZXN0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24g TG9jKSB7CiAgIC8vIEdldCB0aGUgc3JjL2Rlc3QgZWxlbWVudCB0eXBlLgog ICBTcmNUeXBlID0gU3JjVHlwZS0+Y2FzdEFzPENvbXBsZXhUeXBlPigpLT5n ZXRFbGVtZW50VHlwZSgpOwogICBEZXN0VHlwZSA9IERlc3RUeXBlLT5jYXN0 QXM8Q29tcGxleFR5cGU+KCktPmdldEVsZW1lbnRUeXBlKCk7CiAKICAgLy8g Qzk5IDYuMy4xLjY6IFdoZW4gYSB2YWx1ZSBvZiBjb21wbGV4IHR5cGUgaXMg Y29udmVydGVkIHRvIGFub3RoZXIKICAgLy8gY29tcGxleCB0eXBlLCBib3Ro IHRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgZm9sbG93IHRoZSBjb252 ZXJzaW9uCiAgIC8vIHJ1bGVzIGZvciB0aGUgY29ycmVzcG9uZGluZyByZWFs IHR5cGVzLgotICBWYWwuZmlyc3QgPSBDR0YuRW1pdFNjYWxhckNvbnZlcnNp b24oVmFsLmZpcnN0LCBTcmNUeXBlLCBEZXN0VHlwZSk7Ci0gIFZhbC5zZWNv bmQgPSBDR0YuRW1pdFNjYWxhckNvbnZlcnNpb24oVmFsLnNlY29uZCwgU3Jj VHlwZSwgRGVzdFR5cGUpOworICBWYWwuZmlyc3QgPSBDR0YuRW1pdFNjYWxh ckNvbnZlcnNpb24oVmFsLmZpcnN0LCBTcmNUeXBlLCBEZXN0VHlwZSwgTG9j KTsKKyAgVmFsLnNlY29uZCA9IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihW YWwuc2Vjb25kLCBTcmNUeXBlLCBEZXN0VHlwZSwgTG9jKTsKICAgcmV0dXJu IFZhbDsKIH0KIAogQ29tcGxleFBhaXJUeSBDb21wbGV4RXhwckVtaXR0ZXI6 OkVtaXRTY2FsYXJUb0NvbXBsZXhDYXN0KGxsdm06OlZhbHVlICpWYWwsCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUXVhbFR5cGUgU3JjVHlwZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR dWFsVHlwZSBEZXN0VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERl c3RUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYykgewog ICAvLyBDb252ZXJ0IHRoZSBpbnB1dCBlbGVtZW50IHRvIHRoZSBlbGVtZW50 IHR5cGUgb2YgdGhlIGNvbXBsZXguCiAgIERlc3RUeXBlID0gRGVzdFR5cGUt PmNhc3RBczxDb21wbGV4VHlwZT4oKS0+Z2V0RWxlbWVudFR5cGUoKTsKLSAg VmFsID0gQ0dGLkVtaXRTY2FsYXJDb252ZXJzaW9uKFZhbCwgU3JjVHlwZSwg RGVzdFR5cGUpOworICBWYWwgPSBDR0YuRW1pdFNjYWxhckNvbnZlcnNpb24o VmFsLCBTcmNUeXBlLCBEZXN0VHlwZSwgTG9jKTsKIAogICAvLyBSZXR1cm4g KHJlYWx2YWwsIDApLgogICByZXR1cm4gQ29tcGxleFBhaXJUeShWYWwsIGxs dm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUoVmFsLT5nZXRUeXBlKCkpKTsK QEAgLTQ4OCwxNCArNDkwLDE1IEBACiAKICAgY2FzZSBDS19GbG9hdGluZ1Jl YWxUb0NvbXBsZXg6CiAgIGNhc2UgQ0tfSW50ZWdyYWxSZWFsVG9Db21wbGV4 OgotICAgIHJldHVybiBFbWl0U2NhbGFyVG9Db21wbGV4Q2FzdChDR0YuRW1p dFNjYWxhckV4cHIoT3ApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBPcC0+Z2V0VHlwZSgpLCBEZXN0VHkpOworICAgIHJldHVybiBF bWl0U2NhbGFyVG9Db21wbGV4Q2FzdChDR0YuRW1pdFNjYWxhckV4cHIoT3Ap LCBPcC0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEZXN0VHksIE9wLT5nZXRFeHByTG9jKCkpOwogCiAgIGNhc2Ug Q0tfRmxvYXRpbmdDb21wbGV4Q2FzdDoKICAgY2FzZSBDS19GbG9hdGluZ0Nv bXBsZXhUb0ludGVncmFsQ29tcGxleDoKICAgY2FzZSBDS19JbnRlZ3JhbENv bXBsZXhDYXN0OgogICBjYXNlIENLX0ludGVncmFsQ29tcGxleFRvRmxvYXRp bmdDb21wbGV4OgotICAgIHJldHVybiBFbWl0Q29tcGxleFRvQ29tcGxleENh c3QoVmlzaXQoT3ApLCBPcC0+Z2V0VHlwZSgpLCBEZXN0VHkpOworICAgIHJl dHVybiBFbWl0Q29tcGxleFRvQ29tcGxleENhc3QoVmlzaXQoT3ApLCBPcC0+ Z2V0VHlwZSgpLCBEZXN0VHksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBPcC0+Z2V0RXhwckxvYygpKTsKICAgfQogCiAgIGxsdm1f dW5yZWFjaGFibGUoInVua25vd24gY2FzdCByZXN1bHRpbmcgaW4gY29tcGxl eCB2YWx1ZSIpOwpAQCAtODQ2LDMzICs4NDksMzUgQEAKICAgTFZhbHVlIExI UyA9IENHRi5FbWl0TFZhbHVlKEUtPmdldExIUygpKTsKIAogICAvLyBMb2Fk IGZyb20gdGhlIGwtdmFsdWUgYW5kIGNvbnZlcnQgaXQuCisgIFNvdXJjZUxv Y2F0aW9uIExvYyA9IEUtPmdldEV4cHJMb2MoKTsKICAgaWYgKExIU1R5LT5p c0FueUNvbXBsZXhUeXBlKCkpIHsKLSAgICBDb21wbGV4UGFpclR5IExIU1Zh bCA9IEVtaXRMb2FkT2ZMVmFsdWUoTEhTLCBFLT5nZXRFeHByTG9jKCkpOwot ICAgIE9wSW5mby5MSFMgPSBFbWl0Q29tcGxleFRvQ29tcGxleENhc3QoTEhT VmFsLCBMSFNUeSwgT3BJbmZvLlR5KTsKKyAgICBDb21wbGV4UGFpclR5IExI U1ZhbCA9IEVtaXRMb2FkT2ZMVmFsdWUoTEhTLCBMb2MpOworICAgIE9wSW5m by5MSFMgPSBFbWl0Q29tcGxleFRvQ29tcGxleENhc3QoTEhTVmFsLCBMSFNU eSwgT3BJbmZvLlR5LCBMb2MpOwogICB9IGVsc2UgewotICAgIGxsdm06OlZh bHVlICpMSFNWYWwgPSBDR0YuRW1pdExvYWRPZlNjYWxhcihMSFMsIEUtPmdl dEV4cHJMb2MoKSk7CisgICAgbGx2bTo6VmFsdWUgKkxIU1ZhbCA9IENHRi5F bWl0TG9hZE9mU2NhbGFyKExIUywgTG9jKTsKICAgICAvLyBGb3IgZmxvYXRp bmcgcG9pbnQgcmVhbCBvcGVyYW5kcyB3ZSBjYW4gZGlyZWN0bHkgcGFzcyB0 aGUgc2NhbGFyIGZvcm0KICAgICAvLyB0byB0aGUgYmluYXJ5IG9wZXJhdG9y IGVtaXNzaW9uIGFuZCBwb3RlbnRpYWxseSBnZXQgbW9yZSBlZmZpY2llbnQg Y29kZS4KICAgICBpZiAoTEhTVHktPmlzUmVhbEZsb2F0aW5nVHlwZSgpKSB7 CiAgICAgICBpZiAoIUNHRi5nZXRDb250ZXh0KCkuaGFzU2FtZVVucXVhbGlm aWVkVHlwZShDb21wbGV4RWxlbWVudFR5LCBMSFNUeSkpCi0gICAgICAgIExI U1ZhbCA9IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihMSFNWYWwsIExIU1R5 LCBDb21wbGV4RWxlbWVudFR5KTsKKyAgICAgICAgTEhTVmFsID0gQ0dGLkVt aXRTY2FsYXJDb252ZXJzaW9uKExIU1ZhbCwgTEhTVHksIENvbXBsZXhFbGVt ZW50VHksIExvYyk7CiAgICAgICBPcEluZm8uTEhTID0gQ29tcGxleFBhaXJU eShMSFNWYWwsIG51bGxwdHIpOwogICAgIH0gZWxzZSB7Ci0gICAgICBPcElu Zm8uTEhTID0gRW1pdFNjYWxhclRvQ29tcGxleENhc3QoTEhTVmFsLCBMSFNU eSwgT3BJbmZvLlR5KTsKKyAgICAgIE9wSW5mby5MSFMgPSBFbWl0U2NhbGFy VG9Db21wbGV4Q2FzdChMSFNWYWwsIExIU1R5LCBPcEluZm8uVHksIExvYyk7 CiAgICAgfQogICB9CiAKICAgLy8gRXhwYW5kIHRoZSBiaW5hcnkgb3BlcmF0 b3IuCiAgIENvbXBsZXhQYWlyVHkgUmVzdWx0ID0gKHRoaXMtPipGdW5jKShP cEluZm8pOwogCiAgIC8vIFRydW5jYXRlIHRoZSByZXN1bHQgYW5kIHN0b3Jl IGl0IGludG8gdGhlIExIUyBsdmFsdWUuCiAgIGlmIChMSFNUeS0+aXNBbnlD b21wbGV4VHlwZSgpKSB7Ci0gICAgQ29tcGxleFBhaXJUeSBSZXNWYWwgPSBF bWl0Q29tcGxleFRvQ29tcGxleENhc3QoUmVzdWx0LCBPcEluZm8uVHksIExI U1R5KTsKKyAgICBDb21wbGV4UGFpclR5IFJlc1ZhbCA9CisgICAgICAgIEVt aXRDb21wbGV4VG9Db21wbGV4Q2FzdChSZXN1bHQsIE9wSW5mby5UeSwgTEhT VHksIExvYyk7CiAgICAgRW1pdFN0b3JlT2ZDb21wbGV4KFJlc1ZhbCwgTEhT LCAvKmlzSW5pdCovIGZhbHNlKTsKICAgICBWYWwgPSBSVmFsdWU6OmdldENv bXBsZXgoUmVzVmFsKTsKICAgfSBlbHNlIHsKICAgICBsbHZtOjpWYWx1ZSAq UmVzVmFsID0KLSAgICAgICAgQ0dGLkVtaXRDb21wbGV4VG9TY2FsYXJDb252 ZXJzaW9uKFJlc3VsdCwgT3BJbmZvLlR5LCBMSFNUeSk7CisgICAgICAgIENH Ri5FbWl0Q29tcGxleFRvU2NhbGFyQ29udmVyc2lvbihSZXN1bHQsIE9wSW5m by5UeSwgTEhTVHksIExvYyk7CiAgICAgQ0dGLkVtaXRTdG9yZU9mU2NhbGFy KFJlc1ZhbCwgTEhTLCAvKmlzSW5pdCovIGZhbHNlKTsKICAgICBWYWwgPSBS VmFsdWU6OmdldChSZXNWYWwpOwogICB9CkluZGV4OiBjZmUvdHJ1bmsvbGli L0NvZGVHZW4vQ0dTdG10T3Blbk1QLmNwcAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBjZmUvdHJ1bmsvbGliL0NvZGVHZW4vQ0dTdG10T3Blbk1QLmNw cAorKysgY2ZlL3RydW5rL2xpYi9Db2RlR2VuL0NHU3RtdE9wZW5NUC5jcHAK QEAgLTEwNjUsNyArMTA2NSw4IEBACiAgICAgICBpZiAoIUMtPmdldEhlbHBl ckNodW5rU2l6ZSgpIHx8ICFPdXRlclJlZ2lvbikgewogICAgICAgICBDaHVu ayA9IENHRi5FbWl0U2NhbGFyRXhwcihDaCk7CiAgICAgICAgIENodW5rID0g Q0dGLkVtaXRTY2FsYXJDb252ZXJzaW9uKENodW5rLCBDaC0+Z2V0VHlwZSgp LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT LmdldEl0ZXJhdGlvblZhcmlhYmxlKCktPmdldFR5cGUoKSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFMuZ2V0SXRlcmF0 aW9uVmFyaWFibGUoKS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBTLmdldExvY1N0YXJ0KCkpOwogICAg ICAgfQogICAgIH0KICAgfQpAQCAtMTY4MywzNyArMTY4NCwzOSBAQAogfQog CiBzdGF0aWMgbGx2bTo6VmFsdWUgKmNvbnZlcnRUb1NjYWxhclZhbHVlKENv ZGVHZW5GdW5jdGlvbiAmQ0dGLCBSVmFsdWUgVmFsLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBTcmNUeXBl LCBRdWFsVHlwZSBEZXN0VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBTcmNUeXBlLCBRdWFsVHlw ZSBEZXN0VHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jKSB7CiAgIGFzc2VydChDR0Yu aGFzU2NhbGFyRXZhbHVhdGlvbktpbmQoRGVzdFR5cGUpICYmCiAgICAgICAg ICAiRGVzdFR5cGUgbXVzdCBoYXZlIHNjYWxhciBldmFsdWF0aW9uIGtpbmQu Iik7CiAgIGFzc2VydCghVmFsLmlzQWdncmVnYXRlKCkgJiYgIk11c3QgYmUg YSBzY2FsYXIgb3IgY29tcGxleC4iKTsKICAgcmV0dXJuIFZhbC5pc1NjYWxh cigpCi0gICAgICAgICAgICAgPyBDR0YuRW1pdFNjYWxhckNvbnZlcnNpb24o VmFsLmdldFNjYWxhclZhbCgpLCBTcmNUeXBlLCBEZXN0VHlwZSkKKyAgICAg ICAgICAgICA/IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbihWYWwuZ2V0U2Nh bGFyVmFsKCksIFNyY1R5cGUsIERlc3RUeXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIExvYykKICAgICAgICAgICAgICA6 IENHRi5FbWl0Q29tcGxleFRvU2NhbGFyQ29udmVyc2lvbihWYWwuZ2V0Q29t cGxleFZhbCgpLCBTcmNUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERlc3RUeXBlKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXN0 VHlwZSwgTG9jKTsKIH0KIAogc3RhdGljIENvZGVHZW5GdW5jdGlvbjo6Q29t cGxleFBhaXJUeQogY29udmVydFRvQ29tcGxleFZhbHVlKENvZGVHZW5GdW5j dGlvbiAmQ0dGLCBSVmFsdWUgVmFsLCBRdWFsVHlwZSBTcmNUeXBlLAotICAg ICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIERlc3RUeXBlKSB7CisgICAg ICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRGVzdFR5cGUsIFNvdXJjZUxv Y2F0aW9uIExvYykgewogICBhc3NlcnQoQ0dGLmdldEV2YWx1YXRpb25LaW5k KERlc3RUeXBlKSA9PSBURUtfQ29tcGxleCAmJgogICAgICAgICAgIkRlc3RU eXBlIG11c3QgaGF2ZSBjb21wbGV4IGV2YWx1YXRpb24ga2luZC4iKTsKICAg Q29kZUdlbkZ1bmN0aW9uOjpDb21wbGV4UGFpclR5IENvbXBsZXhWYWw7CiAg IGlmIChWYWwuaXNTY2FsYXIoKSkgewogICAgIC8vIENvbnZlcnQgdGhlIGlu cHV0IGVsZW1lbnQgdG8gdGhlIGVsZW1lbnQgdHlwZSBvZiB0aGUgY29tcGxl eC4KICAgICBhdXRvIERlc3RFbGVtZW50VHlwZSA9IERlc3RUeXBlLT5jYXN0 QXM8Q29tcGxleFR5cGU+KCktPmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgYXV0 byBTY2FsYXJWYWwgPQotICAgICAgICBDR0YuRW1pdFNjYWxhckNvbnZlcnNp b24oVmFsLmdldFNjYWxhclZhbCgpLCBTcmNUeXBlLCBEZXN0RWxlbWVudFR5 cGUpOworICAgIGF1dG8gU2NhbGFyVmFsID0gQ0dGLkVtaXRTY2FsYXJDb252 ZXJzaW9uKFZhbC5nZXRTY2FsYXJWYWwoKSwgU3JjVHlwZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXN0RWxl bWVudFR5cGUsIExvYyk7CiAgICAgQ29tcGxleFZhbCA9IENvZGVHZW5GdW5j dGlvbjo6Q29tcGxleFBhaXJUeSgKICAgICAgICAgU2NhbGFyVmFsLCBsbHZt OjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKFNjYWxhclZhbC0+Z2V0VHlwZSgp KSk7CiAgIH0gZWxzZSB7CiAgICAgYXNzZXJ0KFZhbC5pc0NvbXBsZXgoKSAm JiAiTXVzdCBiZSBhIHNjYWxhciBvciBjb21wbGV4LiIpOwogICAgIGF1dG8g U3JjRWxlbWVudFR5cGUgPSBTcmNUeXBlLT5jYXN0QXM8Q29tcGxleFR5cGU+ KCktPmdldEVsZW1lbnRUeXBlKCk7CiAgICAgYXV0byBEZXN0RWxlbWVudFR5 cGUgPSBEZXN0VHlwZS0+Y2FzdEFzPENvbXBsZXhUeXBlPigpLT5nZXRFbGVt ZW50VHlwZSgpOwogICAgIENvbXBsZXhWYWwuZmlyc3QgPSBDR0YuRW1pdFNj YWxhckNvbnZlcnNpb24oCi0gICAgICAgIFZhbC5nZXRDb21wbGV4VmFsKCku Zmlyc3QsIFNyY0VsZW1lbnRUeXBlLCBEZXN0RWxlbWVudFR5cGUpOworICAg ICAgICBWYWwuZ2V0Q29tcGxleFZhbCgpLmZpcnN0LCBTcmNFbGVtZW50VHlw ZSwgRGVzdEVsZW1lbnRUeXBlLCBMb2MpOwogICAgIENvbXBsZXhWYWwuc2Vj b25kID0gQ0dGLkVtaXRTY2FsYXJDb252ZXJzaW9uKAotICAgICAgICBWYWwu Z2V0Q29tcGxleFZhbCgpLnNlY29uZCwgU3JjRWxlbWVudFR5cGUsIERlc3RF bGVtZW50VHlwZSk7CisgICAgICAgIFZhbC5nZXRDb21wbGV4VmFsKCkuc2Vj b25kLCBTcmNFbGVtZW50VHlwZSwgRGVzdEVsZW1lbnRUeXBlLCBMb2MpOwog ICB9CiAgIHJldHVybiBDb21wbGV4VmFsOwogfQpAQCAtMTczMCwxNiArMTcz MywxNiBAQAogfQogCiBzdGF0aWMgdm9pZCBlbWl0U2ltcGxlU3RvcmUoQ29k ZUdlbkZ1bmN0aW9uICZDR0YsIExWYWx1ZSBMVmFsLCBSVmFsdWUgUlZhbCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBSVmFsVHkp IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBSVmFs VHksIFNvdXJjZUxvY2F0aW9uIExvYykgewogICBzd2l0Y2ggKENHRi5nZXRF dmFsdWF0aW9uS2luZChMVmFsLmdldFR5cGUoKSkpIHsKICAgY2FzZSBURUtf U2NhbGFyOgotICAgIENHRi5FbWl0U3RvcmVUaHJvdWdoTFZhbHVlKAotICAg ICAgICBSVmFsdWU6OmdldChjb252ZXJ0VG9TY2FsYXJWYWx1ZShDR0YsIFJW YWwsIFJWYWxUeSwgTFZhbC5nZXRUeXBlKCkpKSwKLSAgICAgICAgTFZhbCk7 CisgICAgQ0dGLkVtaXRTdG9yZVRocm91Z2hMVmFsdWUoUlZhbHVlOjpnZXQo Y29udmVydFRvU2NhbGFyVmFsdWUoCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIENHRiwgUlZhbCwgUlZhbFR5LCBMVmFsLmdldFR5cGUo KSwgTG9jKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFZh bCk7CiAgICAgYnJlYWs7CiAgIGNhc2UgVEVLX0NvbXBsZXg6CiAgICAgQ0dG LkVtaXRTdG9yZU9mQ29tcGxleCgKLSAgICAgICAgY29udmVydFRvQ29tcGxl eFZhbHVlKENHRiwgUlZhbCwgUlZhbFR5LCBMVmFsLmdldFR5cGUoKSksIExW YWwsCisgICAgICAgIGNvbnZlcnRUb0NvbXBsZXhWYWx1ZShDR0YsIFJWYWws IFJWYWxUeSwgTFZhbC5nZXRUeXBlKCksIExvYyksIExWYWwsCiAgICAgICAg IC8qaXNJbml0PSovZmFsc2UpOwogICAgIGJyZWFrOwogICBjYXNlIFRFS19B Z2dyZWdhdGU6CkBAIC0xNzY3LDcgKzE3NzAsNyBAQAogICAvLyBsaXN0Lgog ICBpZiAoSXNTZXFDc3QpCiAgICAgQ0dGLkNHTS5nZXRPcGVuTVBSdW50aW1l KCkuZW1pdEZsdXNoKENHRiwgbGx2bTo6Tm9uZSwgTG9jKTsKLSAgZW1pdFNp bXBsZVN0b3JlKENHRixWTFZhbHVlLCBSZXMsIFgtPmdldFR5cGUoKS5nZXRO b25SZWZlcmVuY2VUeXBlKCkpOworICBlbWl0U2ltcGxlU3RvcmUoQ0dGLCBW TFZhbHVlLCBSZXMsIFgtPmdldFR5cGUoKS5nZXROb25SZWZlcmVuY2VUeXBl KCksIExvYyk7CiB9CiAKIHN0YXRpYyB2b2lkIEVtaXRPTVBBdG9taWNXcml0 ZUV4cHIoQ29kZUdlbkZ1bmN0aW9uICZDR0YsIGJvb2wgSXNTZXFDc3QsCkBA IC0xOTM4LDEyICsxOTQxLDE0IEBACiB9CiAKIHN0YXRpYyBSVmFsdWUgY29u dmVydFRvVHlwZShDb2RlR2VuRnVuY3Rpb24gJkNHRiwgUlZhbHVlIFZhbHVl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFNvdXJj ZVR5cGUsIFF1YWxUeXBlIFJlc1R5cGUpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRdWFsVHlwZSBTb3VyY2VUeXBlLCBRdWFsVHlwZSBSZXNU eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0 aW9uIExvYykgewogICBzd2l0Y2ggKENHRi5nZXRFdmFsdWF0aW9uS2luZChS ZXNUeXBlKSkgewogICBjYXNlIFRFS19TY2FsYXI6Ci0gICAgcmV0dXJuIFJW YWx1ZTo6Z2V0KGNvbnZlcnRUb1NjYWxhclZhbHVlKENHRiwgVmFsdWUsIFNv dXJjZVR5cGUsIFJlc1R5cGUpKTsKKyAgICByZXR1cm4gUlZhbHVlOjpnZXQo CisgICAgICAgIGNvbnZlcnRUb1NjYWxhclZhbHVlKENHRiwgVmFsdWUsIFNv dXJjZVR5cGUsIFJlc1R5cGUsIExvYykpOwogICBjYXNlIFRFS19Db21wbGV4 OiB7Ci0gICAgYXV0byBSZXMgPSBjb252ZXJ0VG9Db21wbGV4VmFsdWUoQ0dG LCBWYWx1ZSwgU291cmNlVHlwZSwgUmVzVHlwZSk7CisgICAgYXV0byBSZXMg PSBjb252ZXJ0VG9Db21wbGV4VmFsdWUoQ0dGLCBWYWx1ZSwgU291cmNlVHlw ZSwgUmVzVHlwZSwgTG9jKTsKICAgICByZXR1cm4gUlZhbHVlOjpnZXRDb21w bGV4KFJlcy5maXJzdCwgUmVzLnNlY29uZCk7CiAgIH0KICAgY2FzZSBURUtf QWdncmVnYXRlOgpAQCAtMjAwOCw3ICsyMDEzLDcgQEAKICAgICAvLyAneCcg aXMgc2ltcGx5IHJld3JpdHRlbiB3aXRoIHNvbWUgJ2V4cHInLgogICAgIE5l d1ZWYWxUeXBlID0gWC0+Z2V0VHlwZSgpLmdldE5vblJlZmVyZW5jZVR5cGUo KTsKICAgICBFeHByUlZhbHVlID0gY29udmVydFRvVHlwZShDR0YsIEV4cHJS VmFsdWUsIEUtPmdldFR5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBYLT5nZXRUeXBlKCkuZ2V0Tm9uUmVmZXJlbmNlVHlwZSgpKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYLT5nZXRUeXBlKCku Z2V0Tm9uUmVmZXJlbmNlVHlwZSgpLCBMb2MpOwogICAgIGF1dG8gJiZHZW4g PSBbJkNHRiwgJk5ld1ZWYWwsIEV4cHJSVmFsdWVdKFJWYWx1ZSBYUlZhbHVl KSAtPiBSVmFsdWUgewogICAgICAgTmV3VlZhbCA9IFhSVmFsdWU7CiAgICAg ICByZXR1cm4gRXhwclJWYWx1ZTsKQEAgLTIwMjMsNyArMjAyOCw3IEBACiAg ICAgfQogICB9CiAgIC8vIEVtaXQgcG9zdC11cGRhdGUgc3RvcmUgdG8gJ3Yn IG9mIG9sZC9uZXcgJ3gnIHZhbHVlLgotICBlbWl0U2ltcGxlU3RvcmUoQ0dG LCBWTFZhbHVlLCBOZXdWVmFsLCBOZXdWVmFsVHlwZSk7CisgIGVtaXRTaW1w bGVTdG9yZShDR0YsIFZMVmFsdWUsIE5ld1ZWYWwsIE5ld1ZWYWxUeXBlLCBM b2MpOwogICAvLyBPcGVuTVAsIDIuMTIuNiwgYXRvbWljIENvbnN0cnVjdAog ICAvLyBBbnkgYXRvbWljIGNvbnN0cnVjdCB3aXRoIGEgc2VxX2NzdCBjbGF1 c2UgZm9yY2VzIHRoZSBhdG9taWNhbGx5CiAgIC8vIHBlcmZvcm1lZCBvcGVy YXRpb24gdG8gaW5jbHVkZSBhbiBpbXBsaWNpdCBmbHVzaCBvcGVyYXRpb24g d2l0aG91dCBhCkluZGV4OiBjZmUvdHJ1bmsvbGliL0NvZGVHZW4vQ29kZUdl bkZ1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gY2ZlL3Ry dW5rL2xpYi9Db2RlR2VuL0NvZGVHZW5GdW5jdGlvbi5oCisrKyBjZmUvdHJ1 bmsvbGliL0NvZGVHZW4vQ29kZUdlbkZ1bmN0aW9uLmgKQEAgLTI3MTAsMTMg KzI3MTAsMTMgQEAKICAgLy8vIEVtaXQgYSBjb252ZXJzaW9uIGZyb20gdGhl IHNwZWNpZmllZCB0eXBlIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGluYXRpb24K ICAgLy8vIHR5cGUsIGJvdGggb2Ygd2hpY2ggYXJlIExMVk0gc2NhbGFyIHR5 cGVzLgogICBsbHZtOjpWYWx1ZSAqRW1pdFNjYWxhckNvbnZlcnNpb24obGx2 bTo6VmFsdWUgKlNyYywgUXVhbFR5cGUgU3JjVHksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RU eSwgU291cmNlTG9jYXRpb24gTG9jKTsKIAogICAvLy8gRW1pdCBhIGNvbnZl cnNpb24gZnJvbSB0aGUgc3BlY2lmaWVkIGNvbXBsZXggdHlwZSB0byB0aGUg c3BlY2lmaWVkCiAgIC8vLyBkZXN0aW5hdGlvbiB0eXBlLCB3aGVyZSB0aGUg ZGVzdGluYXRpb24gdHlwZSBpcyBhbiBMTFZNIHNjYWxhciB0eXBlLgogICBs bHZtOjpWYWx1ZSAqRW1pdENvbXBsZXhUb1NjYWxhckNvbnZlcnNpb24oQ29t cGxleFBhaXJUeSBTcmMsIFF1YWxUeXBlIFNyY1R5LAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRHN0 VHkpOwotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRdWFsVHlwZSBEc3RUeSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYyk7 CiAKICAgLy8vIEVtaXRBZ2dFeHByIC0gRW1pdCB0aGUgY29tcHV0YXRpb24g b2YgdGhlIHNwZWNpZmllZCBleHByZXNzaW9uCiAgIC8vLyBvZiBhZ2dyZWdh dGUgdHlwZS4gIFRoZSByZXN1bHQgaXMgY29tcHV0ZWQgaW50byB0aGUgZ2l2 ZW4gc2xvdCwKSW5kZXg6IGNmZS90cnVuay9saWIvQ29kZUdlbi9DR0V4cHJT Y2FsYXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNmZS90cnVu ay9saWIvQ29kZUdlbi9DR0V4cHJTY2FsYXIuY3BwCisrKyBjZmUvdHJ1bmsv bGliL0NvZGVHZW4vQ0dFeHByU2NhbGFyLmNwcApAQCAtMTQzLDE3ICsxNDMs MTkgQEAKICAgLy8vIEVtaXQgYSBjaGVjayB0aGF0IGEgY29udmVyc2lvbiB0 byBvciBmcm9tIGEgZmxvYXRpbmctcG9pbnQgdHlwZSBkb2VzIG5vdAogICAv Ly8gb3ZlcmZsb3cuCiAgIHZvaWQgRW1pdEZsb2F0Q29udmVyc2lvbkNoZWNr KFZhbHVlICpPcmlnU3JjLCBRdWFsVHlwZSBPcmlnU3JjVHlwZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKlNyYywgUXVhbFR5 cGUgU3JjVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UXVhbFR5cGUgRHN0VHlwZSwgbGx2bTo6VHlwZSAqRHN0VHkpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAqU3JjLCBRdWFsVHlw ZSBTcmNUeXBlLCBRdWFsVHlwZSBEc3RUeXBlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpUeXBlICpEc3RUeSwgU291cmNlTG9j YXRpb24gTG9jKTsKIAogICAvLy8gRW1pdCBhIGNvbnZlcnNpb24gZnJvbSB0 aGUgc3BlY2lmaWVkIHR5cGUgdG8gdGhlIHNwZWNpZmllZCBkZXN0aW5hdGlv bgogICAvLy8gdHlwZSwgYm90aCBvZiB3aGljaCBhcmUgTExWTSBzY2FsYXIg dHlwZXMuCi0gIFZhbHVlICpFbWl0U2NhbGFyQ29udmVyc2lvbihWYWx1ZSAq U3JjLCBRdWFsVHlwZSBTcmNUeSwgUXVhbFR5cGUgRHN0VHkpOworICBWYWx1 ZSAqRW1pdFNjYWxhckNvbnZlcnNpb24oVmFsdWUgKlNyYywgUXVhbFR5cGUg U3JjVHksIFF1YWxUeXBlIERzdFR5LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU291cmNlTG9jYXRpb24gTG9jKTsKIAogICAvLy8gRW1pdCBh IGNvbnZlcnNpb24gZnJvbSB0aGUgc3BlY2lmaWVkIGNvbXBsZXggdHlwZSB0 byB0aGUgc3BlY2lmaWVkCiAgIC8vLyBkZXN0aW5hdGlvbiB0eXBlLCB3aGVy ZSB0aGUgZGVzdGluYXRpb24gdHlwZSBpcyBhbiBMTFZNIHNjYWxhciB0eXBl LgogICBWYWx1ZSAqRW1pdENvbXBsZXhUb1NjYWxhckNvbnZlcnNpb24oQ29k ZUdlbkZ1bmN0aW9uOjpDb21wbGV4UGFpclR5IFNyYywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1YWxUeXBlIFNyY1R5LCBR dWFsVHlwZSBEc3RUeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRdWFsVHlwZSBTcmNUeSwgUXVhbFR5cGUgRHN0VHksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VM b2NhdGlvbiBMb2MpOwogCiAgIC8vLyBFbWl0TnVsbFZhbHVlIC0gRW1pdCBh IHZhbHVlIHRoYXQgY29ycmVzcG9uZHMgdG8gbnVsbCBmb3IgdGhlIGdpdmVu IHR5cGUuCiAgIFZhbHVlICpFbWl0TnVsbFZhbHVlKFF1YWxUeXBlIFR5KTsK QEAgLTU5MywxMSArNTk1LDkgQEAKICAgcmV0dXJuIEVtaXRQb2ludGVyVG9C b29sQ29udmVyc2lvbihTcmMpOwogfQogCi12b2lkIFNjYWxhckV4cHJFbWl0 dGVyOjpFbWl0RmxvYXRDb252ZXJzaW9uQ2hlY2soVmFsdWUgKk9yaWdTcmMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUXVhbFR5cGUgT3JpZ1NyY1R5cGUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgKlNyYywg UXVhbFR5cGUgU3JjVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeXBlLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxsdm06OlR5cGUgKkRzdFR5KSB7Cit2b2lkIFNjYWxhckV4cHJFbWl0dGVy OjpFbWl0RmxvYXRDb252ZXJzaW9uQ2hlY2soCisgICAgVmFsdWUgKk9yaWdT cmMsIFF1YWxUeXBlIE9yaWdTcmNUeXBlLCBWYWx1ZSAqU3JjLCBRdWFsVHlw ZSBTcmNUeXBlLAorICAgIFF1YWxUeXBlIERzdFR5cGUsIGxsdm06OlR5cGUg KkRzdFR5LCBTb3VyY2VMb2NhdGlvbiBMb2MpIHsKICAgQ29kZUdlbkZ1bmN0 aW9uOjpTYW5pdGl6ZXJTY29wZSBTYW5TY29wZSgmQ0dGKTsKICAgdXNpbmcg bGx2bTo6QVBGbG9hdDsKICAgdXNpbmcgbGx2bTo6QVBTSW50OwpAQCAtNzIx LDE5ICs3MjEsMTggQEAKICAgICB9CiAgIH0KIAotICAvLyBGSVhNRTogUHJv dmlkZSBhIFNvdXJjZUxvY2F0aW9uLgotICBsbHZtOjpDb25zdGFudCAqU3Rh dGljQXJnc1tdID0gewotICAgIENHRi5FbWl0Q2hlY2tUeXBlRGVzY3JpcHRv cihPcmlnU3JjVHlwZSksCi0gICAgQ0dGLkVtaXRDaGVja1R5cGVEZXNjcmlw dG9yKERzdFR5cGUpCi0gIH07CisgIGxsdm06OkNvbnN0YW50ICpTdGF0aWNB cmdzW10gPSB7Q0dGLkVtaXRDaGVja1NvdXJjZUxvY2F0aW9uKExvYyksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0dGLkVtaXRDaGVj a1R5cGVEZXNjcmlwdG9yKE9yaWdTcmNUeXBlKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDR0YuRW1pdENoZWNrVHlwZURlc2NyaXB0 b3IoRHN0VHlwZSl9OwogICBDR0YuRW1pdENoZWNrKHN0ZDo6bWFrZV9wYWly KENoZWNrLCBTYW5pdGl6ZXJLaW5kOjpGbG9hdENhc3RPdmVyZmxvdyksCiAg ICAgICAgICAgICAgICAgImZsb2F0X2Nhc3Rfb3ZlcmZsb3ciLCBTdGF0aWNB cmdzLCBPcmlnU3JjKTsKIH0KIAogLy8vIEVtaXQgYSBjb252ZXJzaW9uIGZy b20gdGhlIHNwZWNpZmllZCB0eXBlIHRvIHRoZSBzcGVjaWZpZWQgZGVzdGlu YXRpb24gdHlwZSwKIC8vLyBib3RoIG9mIHdoaWNoIGFyZSBMTFZNIHNjYWxh ciB0eXBlcy4KIFZhbHVlICpTY2FsYXJFeHByRW1pdHRlcjo6RW1pdFNjYWxh ckNvbnZlcnNpb24oVmFsdWUgKlNyYywgUXVhbFR5cGUgU3JjVHlwZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UXVhbFR5cGUgRHN0VHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBEc3RUeXBlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT b3VyY2VMb2NhdGlvbiBMb2MpIHsKICAgU3JjVHlwZSA9IENHRi5nZXRDb250 ZXh0KCkuZ2V0Q2Fub25pY2FsVHlwZShTcmNUeXBlKTsKICAgRHN0VHlwZSA9 IENHRi5nZXRDb250ZXh0KCkuZ2V0Q2Fub25pY2FsVHlwZShEc3RUeXBlKTsK ICAgaWYgKFNyY1R5cGUgPT0gRHN0VHlwZSkgcmV0dXJuIFNyYzsKQEAgLTgw OCw3ICs4MDcsNyBAQAogICBpZiAoRHN0VHlwZS0+aXNFeHRWZWN0b3JUeXBl KCkgJiYgIVNyY1R5cGUtPmlzVmVjdG9yVHlwZSgpKSB7CiAgICAgLy8gQ2Fz dCB0aGUgc2NhbGFyIHRvIGVsZW1lbnQgdHlwZQogICAgIFF1YWxUeXBlIEVs dFR5ID0gRHN0VHlwZS0+Z2V0QXM8RXh0VmVjdG9yVHlwZT4oKS0+Z2V0RWxl bWVudFR5cGUoKTsKLSAgICBsbHZtOjpWYWx1ZSAqRWx0ID0gRW1pdFNjYWxh ckNvbnZlcnNpb24oU3JjLCBTcmNUeXBlLCBFbHRUeSk7CisgICAgbGx2bTo6 VmFsdWUgKkVsdCA9IEVtaXRTY2FsYXJDb252ZXJzaW9uKFNyYywgU3JjVHlw ZSwgRWx0VHksIExvYyk7CiAKICAgICAvLyBTcGxhdCB0aGUgZWxlbWVudCBh Y3Jvc3MgdG8gYWxsIGVsZW1lbnRzCiAgICAgdW5zaWduZWQgTnVtRWxlbWVu dHMgPSBjYXN0PGxsdm06OlZlY3RvclR5cGU+KERzdFR5KS0+Z2V0TnVtRWxl bWVudHMoKTsKQEAgLTgyOCw4ICs4MjcsOCBAQAogICAvLyBvciB0aGUgZGVz dGluYXRpb24gdHlwZSBpcyBhIGZsb2F0aW5nLXBvaW50IHR5cGUuCiAgIGlm IChDR0YuU2FuT3B0cy5oYXMoU2FuaXRpemVyS2luZDo6RmxvYXRDYXN0T3Zl cmZsb3cpICYmCiAgICAgICAoT3JpZ1NyY1R5cGUtPmlzRmxvYXRpbmdUeXBl KCkgfHwgRHN0VHlwZS0+aXNGbG9hdGluZ1R5cGUoKSkpCi0gICAgRW1pdEZs b2F0Q29udmVyc2lvbkNoZWNrKE9yaWdTcmMsIE9yaWdTcmNUeXBlLCBTcmMs IFNyY1R5cGUsIERzdFR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIERzdFR5KTsKKyAgICBFbWl0RmxvYXRDb252ZXJzaW9uQ2hlY2soT3Jp Z1NyYywgT3JpZ1NyY1R5cGUsIFNyYywgU3JjVHlwZSwgRHN0VHlwZSwgRHN0 VHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYyk7CiAKICAg Ly8gQ2FzdCB0byBoYWxmIHRocm91Z2ggZmxvYXQgaWYgaGFsZiBpc24ndCBh IG5hdGl2ZSB0eXBlLgogICBpZiAoRHN0VHlwZS0+aXNIYWxmVHlwZSgpICYm ICFDR0YuZ2V0Q29udGV4dCgpLmdldExhbmdPcHRzKCkuTmF0aXZlSGFsZlR5 cGUpIHsKQEAgLTg4NSwyNSArODg0LDI1IEBACiAKIC8vLyBFbWl0IGEgY29u dmVyc2lvbiBmcm9tIHRoZSBzcGVjaWZpZWQgY29tcGxleCB0eXBlIHRvIHRo ZSBzcGVjaWZpZWQKIC8vLyBkZXN0aW5hdGlvbiB0eXBlLCB3aGVyZSB0aGUg ZGVzdGluYXRpb24gdHlwZSBpcyBhbiBMTFZNIHNjYWxhciB0eXBlLgotVmFs dWUgKlNjYWxhckV4cHJFbWl0dGVyOjoKLUVtaXRDb21wbGV4VG9TY2FsYXJD b252ZXJzaW9uKENvZGVHZW5GdW5jdGlvbjo6Q29tcGxleFBhaXJUeSBTcmMs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBTcmNU eSwgUXVhbFR5cGUgRHN0VHkpIHsKK1ZhbHVlICpTY2FsYXJFeHByRW1pdHRl cjo6RW1pdENvbXBsZXhUb1NjYWxhckNvbnZlcnNpb24oCisgICAgQ29kZUdl bkZ1bmN0aW9uOjpDb21wbGV4UGFpclR5IFNyYywgUXVhbFR5cGUgU3JjVHks IFF1YWxUeXBlIERzdFR5LAorICAgIFNvdXJjZUxvY2F0aW9uIExvYykgewog ICAvLyBHZXQgdGhlIHNvdXJjZSBlbGVtZW50IHR5cGUuCiAgIFNyY1R5ID0g U3JjVHktPmNhc3RBczxDb21wbGV4VHlwZT4oKS0+Z2V0RWxlbWVudFR5cGUo KTsKIAogICAvLyBIYW5kbGUgY29udmVyc2lvbnMgdG8gYm9vbCBmaXJzdCwg dGhleSBhcmUgc3BlY2lhbDogY29tcGFyaXNvbnMgYWdhaW5zdCAwLgogICBp ZiAoRHN0VHktPmlzQm9vbGVhblR5cGUoKSkgewogICAgIC8vICBDb21wbGV4 ICE9IDAgIC0+IChSZWFsICE9IDApIHwgKEltYWcgIT0gMCkKLSAgICBTcmMu Zmlyc3QgID0gRW1pdFNjYWxhckNvbnZlcnNpb24oU3JjLmZpcnN0LCBTcmNU eSwgRHN0VHkpOwotICAgIFNyYy5zZWNvbmQgPSBFbWl0U2NhbGFyQ29udmVy c2lvbihTcmMuc2Vjb25kLCBTcmNUeSwgRHN0VHkpOworICAgIFNyYy5maXJz dCA9IEVtaXRTY2FsYXJDb252ZXJzaW9uKFNyYy5maXJzdCwgU3JjVHksIERz dFR5LCBMb2MpOworICAgIFNyYy5zZWNvbmQgPSBFbWl0U2NhbGFyQ29udmVy c2lvbihTcmMuc2Vjb25kLCBTcmNUeSwgRHN0VHksIExvYyk7CiAgICAgcmV0 dXJuIEJ1aWxkZXIuQ3JlYXRlT3IoU3JjLmZpcnN0LCBTcmMuc2Vjb25kLCAi dG9ib29sIik7CiAgIH0KIAogICAvLyBDOTkgNi4zLjEuN3AyOiAiV2hlbiBh IHZhbHVlIG9mIGNvbXBsZXggdHlwZSBpcyBjb252ZXJ0ZWQgdG8gYSByZWFs IHR5cGUsCiAgIC8vIHRoZSBpbWFnaW5hcnkgcGFydCBvZiB0aGUgY29tcGxl eCB2YWx1ZSBpcyBkaXNjYXJkZWQgYW5kIHRoZSB2YWx1ZSBvZiB0aGUKICAg Ly8gcmVhbCBwYXJ0IGlzIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIGNv bnZlcnNpb24gcnVsZXMgZm9yIHRoZQogICAvLyBjb3JyZXNwb25kaW5nIHJl YWwgdHlwZS4KLSAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKFNyYy5m aXJzdCwgU3JjVHksIERzdFR5KTsKKyAgcmV0dXJuIEVtaXRTY2FsYXJDb252 ZXJzaW9uKFNyYy5maXJzdCwgU3JjVHksIERzdFR5LCBMb2MpOwogfQogCiBW YWx1ZSAqU2NhbGFyRXhwckVtaXR0ZXI6OkVtaXROdWxsVmFsdWUoUXVhbFR5 cGUgVHkpIHsKQEAgLTE1NTksNyArMTU1OCw4IEBACiAgICAgbGx2bTo6VHlw ZSAqRHN0VHkgPSBDb252ZXJ0VHlwZShEZXN0VHkpOwogICAgIFZhbHVlICpF bHQgPSBWaXNpdChjb25zdF9jYXN0PEV4cHIqPihFKSk7CiAgICAgRWx0ID0g RW1pdFNjYWxhckNvbnZlcnNpb24oRWx0LCBFLT5nZXRUeXBlKCksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzdFR5LT5nZXRBczxWZWN0 b3JUeXBlPigpLT5nZXRFbGVtZW50VHlwZSgpKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEZXN0VHktPmdldEFzPFZlY3RvclR5cGU+KCkt PmdldEVsZW1lbnRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQ0UtPmdldEV4cHJMb2MoKSk7CiAKICAgICAvLyBTcGxhdCB0aGUg ZWxlbWVudCBhY3Jvc3MgdG8gYWxsIGVsZW1lbnRzCiAgICAgdW5zaWduZWQg TnVtRWxlbWVudHMgPSBjYXN0PGxsdm06OlZlY3RvclR5cGU+KERzdFR5KS0+ Z2V0TnVtRWxlbWVudHMoKTsKQEAgLTE1NzAsNyArMTU3MCw4IEBACiAgIGNh c2UgQ0tfSW50ZWdyYWxUb0Zsb2F0aW5nOgogICBjYXNlIENLX0Zsb2F0aW5n VG9JbnRlZ3JhbDoKICAgY2FzZSBDS19GbG9hdGluZ0Nhc3Q6Ci0gICAgcmV0 dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKFZpc2l0KEUpLCBFLT5nZXRUeXBl KCksIERlc3RUeSk7CisgICAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9u KFZpc2l0KEUpLCBFLT5nZXRUeXBlKCksIERlc3RUeSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ0UtPmdldEV4cHJMb2MoKSk7CiAgIGNh c2UgQ0tfSW50ZWdyYWxUb0Jvb2xlYW46CiAgICAgcmV0dXJuIEVtaXRJbnRU b0Jvb2xDb252ZXJzaW9uKFZpc2l0KEUpKTsKICAgY2FzZSBDS19Qb2ludGVy VG9Cb29sZWFuOgpAQCAtMTU5Miw3ICsxNTkzLDggQEAKICAgICBDb2RlR2Vu RnVuY3Rpb246OkNvbXBsZXhQYWlyVHkgViA9IENHRi5FbWl0Q29tcGxleEV4 cHIoRSk7CiAKICAgICAvLyBUT0RPOiBraWxsIHRoaXMgZnVuY3Rpb24gb2Zm LCBpbmxpbmUgYXBwcm9wcmlhdGUgY2FzZSBoZXJlCi0gICAgcmV0dXJuIEVt aXRDb21wbGV4VG9TY2FsYXJDb252ZXJzaW9uKFYsIEUtPmdldFR5cGUoKSwg RGVzdFR5KTsKKyAgICByZXR1cm4gRW1pdENvbXBsZXhUb1NjYWxhckNvbnZl cnNpb24oViwgRS0+Z2V0VHlwZSgpLCBEZXN0VHksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIENFLT5nZXRFeHByTG9jKCkp OwogICB9CiAKICAgY2FzZSBDS19aZXJvVG9PQ0xFdmVudDogewpAQCAtMjE2 OCw4ICsyMTcwLDEwIEBACiAgICAgICAgICAgbGx2bV91bnJlYWNoYWJsZSgi SW52YWxpZCBjb21wb3VuZCBhc3NpZ25tZW50IHR5cGUiKTsKICAgICAgIH0K ICAgICAgIGlmIChhb3AgIT0gbGx2bTo6QXRvbWljUk1XSW5zdDo6QkFEX0JJ Tk9QKSB7Ci0gICAgICAgIGxsdm06OlZhbHVlICphbXQgPSBDR0YuRW1pdFRv TWVtb3J5KEVtaXRTY2FsYXJDb252ZXJzaW9uKE9wSW5mby5SSFMsCi0gICAg ICAgICAgICAgIEUtPmdldFJIUygpLT5nZXRUeXBlKCksIExIU1R5KSwgTEhT VHkpOworICAgICAgICBsbHZtOjpWYWx1ZSAqYW10ID0gQ0dGLkVtaXRUb01l bW9yeSgKKyAgICAgICAgICAgIEVtaXRTY2FsYXJDb252ZXJzaW9uKE9wSW5m by5SSFMsIEUtPmdldFJIUygpLT5nZXRUeXBlKCksIExIU1R5LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRS0+Z2V0RXhwckxvYygpKSwK KyAgICAgICAgICAgIExIU1R5KTsKICAgICAgICAgQnVpbGRlci5DcmVhdGVB dG9taWNSTVcoYW9wLCBMSFNMVi5nZXRBZGRyZXNzKCksIGFtdCwKICAgICAg ICAgICAgIGxsdm06OlNlcXVlbnRpYWxseUNvbnNpc3RlbnQpOwogICAgICAg ICByZXR1cm4gTEhTTFY7CkBAIC0yMTkwLDE0ICsyMTk0LDE2IEBACiAgIGVs c2UKICAgICBPcEluZm8uTEhTID0gRW1pdExvYWRPZkxWYWx1ZShMSFNMViwg RS0+Z2V0RXhwckxvYygpKTsKIAotICBPcEluZm8uTEhTID0gRW1pdFNjYWxh ckNvbnZlcnNpb24oT3BJbmZvLkxIUywgTEhTVHksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFLT5nZXRDb21wdXRhdGlvbkxIU1R5 cGUoKSk7CisgIFNvdXJjZUxvY2F0aW9uIExvYyA9IEUtPmdldEV4cHJMb2Mo KTsKKyAgT3BJbmZvLkxIUyA9CisgICAgICBFbWl0U2NhbGFyQ29udmVyc2lv bihPcEluZm8uTEhTLCBMSFNUeSwgRS0+Z2V0Q29tcHV0YXRpb25MSFNUeXBl KCksIExvYyk7CiAKICAgLy8gRXhwYW5kIHRoZSBiaW5hcnkgb3BlcmF0b3Iu CiAgIFJlc3VsdCA9ICh0aGlzLT4qRnVuYykoT3BJbmZvKTsKIAogICAvLyBD b252ZXJ0IHRoZSByZXN1bHQgYmFjayB0byB0aGUgTEhTIHR5cGUuCi0gIFJl c3VsdCA9IEVtaXRTY2FsYXJDb252ZXJzaW9uKFJlc3VsdCwgRS0+Z2V0Q29t cHV0YXRpb25SZXN1bHRUeXBlKCksIExIU1R5KTsKKyAgUmVzdWx0ID0KKyAg ICAgIEVtaXRTY2FsYXJDb252ZXJzaW9uKFJlc3VsdCwgRS0+Z2V0Q29tcHV0 YXRpb25SZXN1bHRUeXBlKCksIExIU1R5LCBMb2MpOwogCiAgIGlmIChhdG9t aWNQSEkpIHsKICAgICBsbHZtOjpCYXNpY0Jsb2NrICpvcEJCID0gQnVpbGRl ci5HZXRJbnNlcnRCbG9jaygpOwpAQCAtMjkyMSw3ICsyOTI3LDggQEAKICAg ICAgIFZhbHVlICpDUjZQYXJhbSA9IEJ1aWxkZXIuZ2V0SW50MzIoQ1I2KTsK ICAgICAgIGxsdm06OkZ1bmN0aW9uICpGID0gQ0dGLkNHTS5nZXRJbnRyaW5z aWMoSUQpOwogICAgICAgUmVzdWx0ID0gQnVpbGRlci5DcmVhdGVDYWxsKEYs IHtDUjZQYXJhbSwgRmlyc3RWZWNBcmcsIFNlY29uZFZlY0FyZ30pOwotICAg ICAgcmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKFJlc3VsdCwgQ0dGLmdl dENvbnRleHQoKS5Cb29sVHksIEUtPmdldFR5cGUoKSk7CisgICAgICByZXR1 cm4gRW1pdFNjYWxhckNvbnZlcnNpb24oUmVzdWx0LCBDR0YuZ2V0Q29udGV4 dCgpLkJvb2xUeSwgRS0+Z2V0VHlwZSgpLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEUtPmdldEV4cHJMb2MoKSk7CiAgICAgfQogCiAg ICAgaWYgKExIUy0+Z2V0VHlwZSgpLT5pc0ZQT3JGUFZlY3RvclR5KCkpIHsK QEAgLTI5OTAsNyArMjk5Nyw4IEBACiAgICAgfQogICB9CiAKLSAgcmV0dXJu IEVtaXRTY2FsYXJDb252ZXJzaW9uKFJlc3VsdCwgQ0dGLmdldENvbnRleHQo KS5Cb29sVHksIEUtPmdldFR5cGUoKSk7CisgIHJldHVybiBFbWl0U2NhbGFy Q29udmVyc2lvbihSZXN1bHQsIENHRi5nZXRDb250ZXh0KCkuQm9vbFR5LCBF LT5nZXRUeXBlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBF LT5nZXRFeHByTG9jKCkpOwogfQogCiBWYWx1ZSAqU2NhbGFyRXhwckVtaXR0 ZXI6OlZpc2l0QmluQXNzaWduKGNvbnN0IEJpbmFyeU9wZXJhdG9yICpFKSB7 CkBAIC0zNDcyLDIxICszNDgwLDIzIEBACiAvLy8gRW1pdCBhIGNvbnZlcnNp b24gZnJvbSB0aGUgc3BlY2lmaWVkIHR5cGUgdG8gdGhlIHNwZWNpZmllZCBk ZXN0aW5hdGlvbiB0eXBlLAogLy8vIGJvdGggb2Ygd2hpY2ggYXJlIExMVk0g c2NhbGFyIHR5cGVzLgogVmFsdWUgKkNvZGVHZW5GdW5jdGlvbjo6RW1pdFNj YWxhckNvbnZlcnNpb24oVmFsdWUgKlNyYywgUXVhbFR5cGUgU3JjVHksCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR dWFsVHlwZSBEc3RUeSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUXVhbFR5cGUgRHN0VHksCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VMb2Nh dGlvbiBMb2MpIHsKICAgYXNzZXJ0KGhhc1NjYWxhckV2YWx1YXRpb25LaW5k KFNyY1R5KSAmJiBoYXNTY2FsYXJFdmFsdWF0aW9uS2luZChEc3RUeSkgJiYK ICAgICAgICAgICJJbnZhbGlkIHNjYWxhciBleHByZXNzaW9uIHRvIGVtaXQi KTsKLSAgcmV0dXJuIFNjYWxhckV4cHJFbWl0dGVyKCp0aGlzKS5FbWl0U2Nh bGFyQ29udmVyc2lvbihTcmMsIFNyY1R5LCBEc3RUeSk7CisgIHJldHVybiBT Y2FsYXJFeHByRW1pdHRlcigqdGhpcykuRW1pdFNjYWxhckNvbnZlcnNpb24o U3JjLCBTcmNUeSwgRHN0VHksIExvYyk7CiB9CiAKIC8vLyBFbWl0IGEgY29u dmVyc2lvbiBmcm9tIHRoZSBzcGVjaWZpZWQgY29tcGxleCB0eXBlIHRvIHRo ZSBzcGVjaWZpZWQKIC8vLyBkZXN0aW5hdGlvbiB0eXBlLCB3aGVyZSB0aGUg ZGVzdGluYXRpb24gdHlwZSBpcyBhbiBMTFZNIHNjYWxhciB0eXBlLgogVmFs dWUgKkNvZGVHZW5GdW5jdGlvbjo6RW1pdENvbXBsZXhUb1NjYWxhckNvbnZl cnNpb24oQ29tcGxleFBhaXJUeSBTcmMsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWFsVHlwZSBT cmNUeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFF1YWxUeXBlIERzdFR5KSB7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR dWFsVHlwZSBEc3RUeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxvY2F0aW9uIExvYykg ewogICBhc3NlcnQoU3JjVHktPmlzQW55Q29tcGxleFR5cGUoKSAmJiBoYXNT Y2FsYXJFdmFsdWF0aW9uS2luZChEc3RUeSkgJiYKICAgICAgICAgICJJbnZh bGlkIGNvbXBsZXggLT4gc2NhbGFyIGNvbnZlcnNpb24iKTsKLSAgcmV0dXJu IFNjYWxhckV4cHJFbWl0dGVyKCp0aGlzKS5FbWl0Q29tcGxleFRvU2NhbGFy Q29udmVyc2lvbihTcmMsIFNyY1R5LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERz dFR5KTsKKyAgcmV0dXJuIFNjYWxhckV4cHJFbWl0dGVyKCp0aGlzKQorICAg ICAgLkVtaXRDb21wbGV4VG9TY2FsYXJDb252ZXJzaW9uKFNyYywgU3JjVHks IERzdFR5LCBMb2MpOwogfQogCiAKSW5kZXg6IGNmZS90cnVuay9saWIvQ29k ZUdlbi9DR0V4cHIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNm ZS90cnVuay9saWIvQ29kZUdlbi9DR0V4cHIuY3BwCisrKyBjZmUvdHJ1bmsv bGliL0NvZGVHZW4vQ0dFeHByLmNwcApAQCAtOTYsMTAgKzk2LDEyIEBACiAg IH0KIAogICBRdWFsVHlwZSBCb29sVHkgPSBnZXRDb250ZXh0KCkuQm9vbFR5 OworICBTb3VyY2VMb2NhdGlvbiBMb2MgPSBFLT5nZXRFeHByTG9jKCk7CiAg IGlmICghRS0+Z2V0VHlwZSgpLT5pc0FueUNvbXBsZXhUeXBlKCkpCi0gICAg cmV0dXJuIEVtaXRTY2FsYXJDb252ZXJzaW9uKEVtaXRTY2FsYXJFeHByKEUp LCBFLT5nZXRUeXBlKCksIEJvb2xUeSk7CisgICAgcmV0dXJuIEVtaXRTY2Fs YXJDb252ZXJzaW9uKEVtaXRTY2FsYXJFeHByKEUpLCBFLT5nZXRUeXBlKCks IEJvb2xUeSwgTG9jKTsKIAotICByZXR1cm4gRW1pdENvbXBsZXhUb1NjYWxh ckNvbnZlcnNpb24oRW1pdENvbXBsZXhFeHByKEUpLCBFLT5nZXRUeXBlKCks Qm9vbFR5KTsKKyAgcmV0dXJuIEVtaXRDb21wbGV4VG9TY2FsYXJDb252ZXJz aW9uKEVtaXRDb21wbGV4RXhwcihFKSwgRS0+Z2V0VHlwZSgpLCBCb29sVHks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2Mp OwogfQogCiAvLy8gRW1pdElnbm9yZWRFeHByIC0gRW1pdCBjb2RlIHRvIGNv bXB1dGUgdGhlIHNwZWNpZmllZCBleHByZXNzaW9uLApJbmRleDogY2ZlL3Ry dW5rL2xpYi9Db2RlR2VuL0NHT3Blbk1QUnVudGltZS5jcHAKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0gY2ZlL3RydW5rL2xpYi9Db2RlR2VuL0NHT3Bl bk1QUnVudGltZS5jcHAKKysrIGNmZS90cnVuay9saWIvQ29kZUdlbi9DR09w ZW5NUFJ1bnRpbWUuY3BwCkBAIC0xMjg0LDEyICsxMjg0LDEyIEBACiB9CiAK IHN0YXRpYyB2b2lkIGVtaXRJZlN0bXQoQ29kZUdlbkZ1bmN0aW9uICZDR0Ys IGxsdm06OlZhbHVlICpJZkNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAg IE9wZW5NUERpcmVjdGl2ZUtpbmQgS2luZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgT3Blbk1QRGlyZWN0aXZlS2luZCBLaW5kLCBTb3VyY2VMb2NhdGlv biBMb2MsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlZ2lvbkNv ZGVHZW5UeSAmQm9keU9wR2VuKSB7CiAgIGxsdm06OlZhbHVlICpDYWxsQm9v bCA9IENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbigKICAgICAgIElmQ29uZCwK ICAgICAgIENHRi5nZXRDb250ZXh0KCkuZ2V0SW50VHlwZUZvckJpdHdpZHRo KC8qRGVzdFdpZHRoPSovMzIsIC8qU2lnbmVkPSovdHJ1ZSksCi0gICAgICBD R0YuZ2V0Q29udGV4dCgpLkJvb2xUeSk7CisgICAgICBDR0YuZ2V0Q29udGV4 dCgpLkJvb2xUeSwgTG9jKTsKIAogICBhdXRvICpUaGVuQmxvY2sgPSBDR0Yu Y3JlYXRlQmFzaWNCbG9jaygib21wX2lmLnRoZW4iKTsKICAgYXV0byAqQ29u dEJsb2NrID0gQ0dGLmNyZWF0ZUJhc2ljQmxvY2soIm9tcF9pZi5lbmQiKTsK QEAgLTEzMTUsMTMgKzEzMTUsMTQgQEAKICAgICAgIENHRi5FbWl0UnVudGlt ZUNhbGwoY3JlYXRlUnVudGltZUZ1bmN0aW9uKE9NUFJUTF9fa21wY19tYXN0 ZXIpLCBBcmdzKTsKICAgdHlwZWRlZiBDYWxsRW5kQ2xlYW51cDxzdGQ6OmV4 dGVudDxkZWNsdHlwZShBcmdzKT46OnZhbHVlPgogICAgICAgTWFzdGVyQ2Fs bEVuZENsZWFudXA7Ci0gIGVtaXRJZlN0bXQoQ0dGLCBJc01hc3RlciwgT01Q RF9tYXN0ZXIsIFsmXShDb2RlR2VuRnVuY3Rpb24gJkNHRikgLT4gdm9pZCB7 Ci0gICAgQ29kZUdlbkZ1bmN0aW9uOjpSdW5DbGVhbnVwc1Njb3BlIFNjb3Bl KENHRik7Ci0gICAgQ0dGLkVIU3RhY2sucHVzaENsZWFudXA8TWFzdGVyQ2Fs bEVuZENsZWFudXA+KAotICAgICAgICBOb3JtYWxBbmRFSENsZWFudXAsIGNy ZWF0ZVJ1bnRpbWVGdW5jdGlvbihPTVBSVExfX2ttcGNfZW5kX21hc3Rlciks Ci0gICAgICAgIGxsdm06Om1ha2VBcnJheVJlZihBcmdzKSk7Ci0gICAgTWFz dGVyT3BHZW4oQ0dGKTsKLSAgfSk7CisgIGVtaXRJZlN0bXQoCisgICAgICBD R0YsIElzTWFzdGVyLCBPTVBEX21hc3RlciwgTG9jLCBbJl0oQ29kZUdlbkZ1 bmN0aW9uICZDR0YpIC0+IHZvaWQgeworICAgICAgICBDb2RlR2VuRnVuY3Rp b246OlJ1bkNsZWFudXBzU2NvcGUgU2NvcGUoQ0dGKTsKKyAgICAgICAgQ0dG LkVIU3RhY2sucHVzaENsZWFudXA8TWFzdGVyQ2FsbEVuZENsZWFudXA+KAor ICAgICAgICAgICAgTm9ybWFsQW5kRUhDbGVhbnVwLCBjcmVhdGVSdW50aW1l RnVuY3Rpb24oT01QUlRMX19rbXBjX2VuZF9tYXN0ZXIpLAorICAgICAgICAg ICAgbGx2bTo6bWFrZUFycmF5UmVmKEFyZ3MpKTsKKyAgICAgICAgTWFzdGVy T3BHZW4oQ0dGKTsKKyAgICAgIH0pOwogfQogCiB2b2lkIENHT3Blbk1QUnVu dGltZTo6ZW1pdFRhc2t5aWVsZENhbGwoQ29kZUdlbkZ1bmN0aW9uICZDR0Ys CkBAIC0xNDQ0LDE4ICsxNDQ1LDE5IEBACiAgICAgICBDR0YuRW1pdFJ1bnRp bWVDYWxsKGNyZWF0ZVJ1bnRpbWVGdW5jdGlvbihPTVBSVExfX2ttcGNfc2lu Z2xlKSwgQXJncyk7CiAgIHR5cGVkZWYgQ2FsbEVuZENsZWFudXA8c3RkOjpl eHRlbnQ8ZGVjbHR5cGUoQXJncyk+Ojp2YWx1ZT4KICAgICAgIFNpbmdsZUNh bGxFbmRDbGVhbnVwOwotICBlbWl0SWZTdG10KENHRiwgSXNTaW5nbGUsIE9N UERfc2luZ2xlLCBbJl0oQ29kZUdlbkZ1bmN0aW9uICZDR0YpIC0+IHZvaWQg ewotICAgIENvZGVHZW5GdW5jdGlvbjo6UnVuQ2xlYW51cHNTY29wZSBTY29w ZShDR0YpOwotICAgIENHRi5FSFN0YWNrLnB1c2hDbGVhbnVwPFNpbmdsZUNh bGxFbmRDbGVhbnVwPigKLSAgICAgICAgTm9ybWFsQW5kRUhDbGVhbnVwLCBj cmVhdGVSdW50aW1lRnVuY3Rpb24oT01QUlRMX19rbXBjX2VuZF9zaW5nbGUp LAotICAgICAgICBsbHZtOjptYWtlQXJyYXlSZWYoQXJncykpOwotICAgIFNp bmdsZU9wR2VuKENHRik7Ci0gICAgaWYgKERpZEl0KSB7Ci0gICAgICAvLyBk aWRfaXQgPSAxOwotICAgICAgQ0dGLkJ1aWxkZXIuQ3JlYXRlQWxpZ25lZFN0 b3JlKENHRi5CdWlsZGVyLmdldEludDMyKDEpLCBEaWRJdCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWRJdC0+Z2V0QWxpZ25t ZW50KCkpOwotICAgIH0KLSAgfSk7CisgIGVtaXRJZlN0bXQoCisgICAgICBD R0YsIElzU2luZ2xlLCBPTVBEX3NpbmdsZSwgTG9jLCBbJl0oQ29kZUdlbkZ1 bmN0aW9uICZDR0YpIC0+IHZvaWQgeworICAgICAgICBDb2RlR2VuRnVuY3Rp b246OlJ1bkNsZWFudXBzU2NvcGUgU2NvcGUoQ0dGKTsKKyAgICAgICAgQ0dG LkVIU3RhY2sucHVzaENsZWFudXA8U2luZ2xlQ2FsbEVuZENsZWFudXA+KAor ICAgICAgICAgICAgTm9ybWFsQW5kRUhDbGVhbnVwLCBjcmVhdGVSdW50aW1l RnVuY3Rpb24oT01QUlRMX19rbXBjX2VuZF9zaW5nbGUpLAorICAgICAgICAg ICAgbGx2bTo6bWFrZUFycmF5UmVmKEFyZ3MpKTsKKyAgICAgICAgU2luZ2xl T3BHZW4oQ0dGKTsKKyAgICAgICAgaWYgKERpZEl0KSB7CisgICAgICAgICAg Ly8gZGlkX2l0ID0gMTsKKyAgICAgICAgICBDR0YuQnVpbGRlci5DcmVhdGVB bGlnbmVkU3RvcmUoQ0dGLkJ1aWxkZXIuZ2V0SW50MzIoMSksIERpZEl0LAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaWRJ dC0+Z2V0QWxpZ25tZW50KCkpOworICAgICAgICB9CisgICAgICB9KTsKICAg Ly8gY2FsbCBfX2ttcGNfY29weXByaXZhdGUoaWRlbnRfdCAqLCBndGlkLCA8 YnVmX3NpemU+LCA8Y29weXByaXZhdGUgbGlzdD4sCiAgIC8vIDxjb3B5X2Z1 bmM+LCBkaWRfaXQpOwogICBpZiAoRGlkSXQpIHsKQEAgLTE3MTksNyArMTcy MSw3IEBACiAgICAgICBDR0YuRW1pdFJ1bnRpbWVDYWxsKGNyZWF0ZURpc3Bh dGNoTmV4dEZ1bmN0aW9uKElWU2l6ZSwgSVZTaWduZWQpLCBBcmdzKTsKICAg cmV0dXJuIENHRi5FbWl0U2NhbGFyQ29udmVyc2lvbigKICAgICAgIENhbGws IENHRi5nZXRDb250ZXh0KCkuZ2V0SW50VHlwZUZvckJpdHdpZHRoKDMyLCAv KiBTaWduZWQgKi8gdHJ1ZSksCi0gICAgICBDR0YuZ2V0Q29udGV4dCgpLkJv b2xUeSk7CisgICAgICBDR0YuZ2V0Q29udGV4dCgpLkJvb2xUeSwgTG9jKTsK IH0KIAogdm9pZCBDR09wZW5NUFJ1bnRpbWU6OmVtaXROdW1UaHJlYWRzQ2xh dXNlKENvZGVHZW5GdW5jdGlvbiAmQ0dGLAo= --b1_a416cdbfe18eeceb014b43bac9e6f634 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KY2ZlLWNvbW1p dHMgbWFpbGluZyBsaXN0CmNmZS1jb21taXRzQGxpc3RzLmxsdm0ub3JnCmh0dHA6Ly9saXN0cy5s bHZtLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vY2ZlLWNvbW1pdHMK --b1_a416cdbfe18eeceb014b43bac9e6f634--