--b1_a29efb8695a4791b02c111a9ea19dda9 Content-Type: text/plain; charset = "utf-8" Content-Transfer-Encoding: quoted-printable jyknight created this revision. jyknight added reviewers: bogner, majnemer, rsmith, rnk. jyknight added subscribers: rengolin, rnk, majnemer, cfe-commits. This initial commit serves as an example -- the remainder of the classes using pointer arithmetic for trailing objects will be converted in subsequent changes. http://reviews.llvm.org/D11298 Files: include/clang/AST/Decl.h include/clang/AST/DeclTemplate.h lib/AST/Decl.cpp lib/AST/DeclTemplate.cpp --b1_a29efb8695a4791b02c111a9ea19dda9 Content-Type: text/x-patch; charset=utf-8; name="D11298.30002.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="D11298.30002.patch" SW5kZXg6IGxpYi9BU1QvRGVjbFRlbXBsYXRlLmNwcAo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSBsaWIvQVNUL0RlY2xUZW1wbGF0ZS5jcHAKKysrIGxp Yi9BU1QvRGVjbFRlbXBsYXRlLmNwcApAQCAtNTcsMTEgKzU3LDggQEAKIFRl bXBsYXRlUGFyYW1ldGVyTGlzdDo6Q3JlYXRlKGNvbnN0IEFTVENvbnRleHQg JkMsIFNvdXJjZUxvY2F0aW9uIFRlbXBsYXRlTG9jLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24gTEFuZ2xlTG9jLCBO YW1lZERlY2wgKipQYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1bnNpZ25lZCBOdW1QYXJhbXMsIFNvdXJjZUxvY2F0aW9uIFJBbmds ZUxvYykgewotICB1bnNpZ25lZCBTaXplID0gc2l6ZW9mKFRlbXBsYXRlUGFy YW1ldGVyTGlzdCkgCi0gICAgICAgICAgICAgICAgKyBzaXplb2YoTmFtZWRE ZWNsICopICogTnVtUGFyYW1zOwotICB1bnNpZ25lZCBBbGlnbiA9IHN0ZDo6 bWF4KGxsdm06OmFsaWduT2Y8VGVtcGxhdGVQYXJhbWV0ZXJMaXN0PigpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmFsaWduT2Y8TmFt ZWREZWNsKj4oKSk7Ci0gIHZvaWQgKk1lbSA9IEMuQWxsb2NhdGUoU2l6ZSwg QWxpZ24pOworICB2b2lkICpNZW0gPSBDLkFsbG9jYXRlKHRvdGFsU2l6ZVRv QWxsb2M8TmFtZWREZWNsICo+KE51bVBhcmFtcyksCisgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6YWxpZ25PZjxUZW1wbGF0ZVBhcmFtZXRlckxp c3Q+KCkpOwogICByZXR1cm4gbmV3IChNZW0pIFRlbXBsYXRlUGFyYW1ldGVy TGlzdChUZW1wbGF0ZUxvYywgTEFuZ2xlTG9jLCBQYXJhbXMsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bVBhcmFtcywg UkFuZ2xlTG9jKTsKIH0KQEAgLTU1Miw3ICs1NDksNyBAQAogICAgIFRlbXBs YXRlUGFybVBvc2l0aW9uKEQsIFApLCBQYXJhbWV0ZXJQYWNrKHRydWUpLAog ICAgIEV4cGFuZGVkUGFyYW1ldGVyUGFjayh0cnVlKSwgTnVtRXhwYW5kZWRU eXBlcyhOdW1FeHBhbmRlZFR5cGVzKSB7CiAgIGlmIChFeHBhbmRlZFR5cGVz ICYmIEV4cGFuZGVkVEluZm9zKSB7Ci0gICAgdm9pZCAqKlR5cGVzQW5kSW5m b3MgPSByZWludGVycHJldF9jYXN0PHZvaWQgKio+KHRoaXMgKyAxKTsKKyAg ICB2b2lkICoqVHlwZXNBbmRJbmZvcyA9IGdldFRyYWlsaW5nT2JqZWN0czx2 b2lkICo+KCk7CiAgICAgZm9yICh1bnNpZ25lZCBJID0gMDsgSSAhPSBOdW1F eHBhbmRlZFR5cGVzOyArK0kpIHsKICAgICAgIFR5cGVzQW5kSW5mb3NbMipJ XSA9IEV4cGFuZGVkVHlwZXNbSV0uZ2V0QXNPcGFxdWVQdHIoKTsKICAgICAg IFR5cGVzQW5kSW5mb3NbMipJICsgMV0gPSBFeHBhbmRlZFRJbmZvc1tJXTsK QEAgLTU3OSwxMCArNTc2LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgUXVhbFR5cGUgKkV4cGFuZGVkVHlwZXMsIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1FeHBh bmRlZFR5cGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU eXBlU291cmNlSW5mbyAqKkV4cGFuZGVkVEluZm9zKSB7Ci0gIHVuc2lnbmVk IEV4dHJhID0gTnVtRXhwYW5kZWRUeXBlcyAqIDIgKiBzaXplb2Yodm9pZCop OwotICByZXR1cm4gbmV3IChDLCBEQywgRXh0cmEpIE5vblR5cGVUZW1wbGF0 ZVBhcm1EZWNsKAotICAgICAgREMsIFN0YXJ0TG9jLCBJZExvYywgRCwgUCwg SWQsIFQsIFRJbmZvLAotICAgICAgRXhwYW5kZWRUeXBlcywgTnVtRXhwYW5k ZWRUeXBlcywgRXhwYW5kZWRUSW5mb3MpOworICByZXR1cm4gbmV3IChDLCBE QywgYWRkaXRpb25hbFNpemVUb0FsbG9jPHZvaWQgKj4oTnVtRXhwYW5kZWRU eXBlcyAqIDIpKQorICAgICAgTm9uVHlwZVRlbXBsYXRlUGFybURlY2woREMs IFN0YXJ0TG9jLCBJZExvYywgRCwgUCwgSWQsIFQsIFRJbmZvLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgRXhwYW5kZWRUeXBlcywgTnVtRXhw YW5kZWRUeXBlcywgRXhwYW5kZWRUSW5mb3MpOwogfQogCiBOb25UeXBlVGVt cGxhdGVQYXJtRGVjbCAqCkBAIC01OTUsMTAgKzU5MSwxMCBAQAogTm9uVHlw ZVRlbXBsYXRlUGFybURlY2wgKgogTm9uVHlwZVRlbXBsYXRlUGFybURlY2w6 OkNyZWF0ZURlc2VyaWFsaXplZChBU1RDb250ZXh0ICZDLCB1bnNpZ25lZCBJ RCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdW5zaWduZWQgTnVtRXhwYW5kZWRUeXBlcykgewotICB1bnNpZ25lZCBF eHRyYSA9IE51bUV4cGFuZGVkVHlwZXMgKiAyICogc2l6ZW9mKHZvaWQqKTsK LSAgcmV0dXJuIG5ldyAoQywgSUQsIEV4dHJhKSBOb25UeXBlVGVtcGxhdGVQ YXJtRGVjbCgKLSAgICAgIG51bGxwdHIsIFNvdXJjZUxvY2F0aW9uKCksIFNv dXJjZUxvY2F0aW9uKCksIDAsIDAsIG51bGxwdHIsIFF1YWxUeXBlKCksCi0g ICAgICBudWxscHRyLCBudWxscHRyLCBOdW1FeHBhbmRlZFR5cGVzLCBudWxs cHRyKTsKKyAgcmV0dXJuIG5ldyAoQywgSUQsIGFkZGl0aW9uYWxTaXplVG9B bGxvYzx2b2lkICo+KE51bUV4cGFuZGVkVHlwZXMgKiAyKSkKKyAgICAgIE5v blR5cGVUZW1wbGF0ZVBhcm1EZWNsKG51bGxwdHIsIFNvdXJjZUxvY2F0aW9u KCksIFNvdXJjZUxvY2F0aW9uKCksIDAsIDAsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBudWxscHRyLCBRdWFsVHlwZSgpLCBudWxscHRyLCBu dWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVtRXhw YW5kZWRUeXBlcywgbnVsbHB0cik7CiB9CiAKIFNvdXJjZVJhbmdlIE5vblR5 cGVUZW1wbGF0ZVBhcm1EZWNsOjpnZXRTb3VyY2VSYW5nZSgpIGNvbnN0IHsK QEAgLTYyOCw4ICs2MjQsOCBAQAogICAgIFRlbXBsYXRlUGFybVBvc2l0aW9u KEQsIFApLCBQYXJhbWV0ZXJQYWNrKHRydWUpLAogICAgIEV4cGFuZGVkUGFy YW1ldGVyUGFjayh0cnVlKSwgTnVtRXhwYW5kZWRQYXJhbXMoTnVtRXhwYW5z aW9ucykgewogICBpZiAoRXhwYW5zaW9ucykKLSAgICBzdGQ6Om1lbWNweShy ZWludGVycHJldF9jYXN0PHZvaWQqPih0aGlzICsgMSksIEV4cGFuc2lvbnMs Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKFRlbXBsYXRlUGFyYW1ldGVyTGlz dCopICogTnVtRXhwYW5kZWRQYXJhbXMpOworICAgIHN0ZDo6dW5pbml0aWFs aXplZF9jb3B5KEV4cGFuc2lvbnMsIEV4cGFuc2lvbnMgKyBOdW1FeHBhbmRl ZFBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFp bGluZ09iamVjdHM8VGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICo+KCkpOwogfQog CiBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2wgKgpAQCAtNjQ3LDkgKzY0Mywx MCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSWRlbnRp ZmllckluZm8gKklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICpQYXJhbXMsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBBcnJheVJlZjxUZW1wbGF0ZVBhcmFt ZXRlckxpc3QgKj4gRXhwYW5zaW9ucykgewotICByZXR1cm4gbmV3IChDLCBE Qywgc2l6ZW9mKFRlbXBsYXRlUGFyYW1ldGVyTGlzdCopICogRXhwYW5zaW9u cy5zaXplKCkpCi0gICAgICBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2woREMs IEwsIEQsIFAsIElkLCBQYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRXhwYW5zaW9ucy5zaXplKCksIEV4cGFuc2lvbnMuZGF0YSgp KTsKKyAgcmV0dXJuIG5ldyAoQywgREMsCisgICAgICAgICAgICAgIGFkZGl0 aW9uYWxTaXplVG9BbGxvYzxUZW1wbGF0ZVBhcmFtZXRlckxpc3QgKj4oRXhw YW5zaW9ucy5zaXplKCkpKQorICAgICAgVGVtcGxhdGVUZW1wbGF0ZVBhcm1E ZWNsKERDLCBMLCBELCBQLCBJZCwgUGFyYW1zLCBFeHBhbnNpb25zLnNpemUo KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHBhbnNpb25z LmRhdGEoKSk7CiB9CiAKIFRlbXBsYXRlVGVtcGxhdGVQYXJtRGVjbCAqCkBA IC02NjEsNyArNjU4LDggQEAKIFRlbXBsYXRlVGVtcGxhdGVQYXJtRGVjbCAq CiBUZW1wbGF0ZVRlbXBsYXRlUGFybURlY2w6OkNyZWF0ZURlc2VyaWFsaXpl ZChBU1RDb250ZXh0ICZDLCB1bnNpZ25lZCBJRCwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIE51bUV4 cGFuc2lvbnMpIHsKLSAgcmV0dXJuIG5ldyAoQywgSUQsIHNpemVvZihUZW1w bGF0ZVBhcmFtZXRlckxpc3QqKSAqIE51bUV4cGFuc2lvbnMpCisgIHJldHVy biBuZXcgKEMsIElELAorICAgICAgICAgICAgICBhZGRpdGlvbmFsU2l6ZVRv QWxsb2M8VGVtcGxhdGVQYXJhbWV0ZXJMaXN0ICo+KE51bUV4cGFuc2lvbnMp KQogICAgICAgVGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsKG51bGxwdHIsIFNv dXJjZUxvY2F0aW9uKCksIDAsIDAsIG51bGxwdHIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgbnVsbHB0ciwgTnVtRXhwYW5zaW9ucywgbnVs bHB0cik7CiB9CkBAIC02ODIsMTggKzY4MCwxOSBAQAogLy89PT0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tPT09Ly8KIC8vIFRlbXBsYXRlQXJndW1lbnRM aXN0IEltcGxlbWVudGF0aW9uCiAvLz09PS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS09PT0vLworVGVtcGxhdGVBcmd1bWVudExpc3Q6OlRlbXBsYXRlQXJn dW1lbnRMaXN0KGNvbnN0IFRlbXBsYXRlQXJndW1lbnQgKkFyZ3MsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu ZWQgTnVtQXJncykKKyAgICA6IEFyZ3VtZW50cyhnZXRUcmFpbGluZ09iamVj dHM8VGVtcGxhdGVBcmd1bWVudD4oKSksIE51bUFyZ3VtZW50cyhOdW1Bcmdz KSB7CisgIHN0ZDo6dW5pbml0aWFsaXplZF9jb3B5KEFyZ3MsIEFyZ3MgKyBO dW1BcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRUcmFpbGlu Z09iamVjdHM8VGVtcGxhdGVBcmd1bWVudD4oKSk7Cit9CisKIFRlbXBsYXRl QXJndW1lbnRMaXN0ICoKIFRlbXBsYXRlQXJndW1lbnRMaXN0OjpDcmVhdGVD b3B5KEFTVENvbnRleHQgJkNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICpBcmdzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVt QXJncykgewotICBzdGQ6OnNpemVfdCBTaXplID0gc2l6ZW9mKFRlbXBsYXRl QXJndW1lbnRMaXN0KQotICAgICAgICAgICAgICAgICAgICsgTnVtQXJncyAq IHNpemVvZihUZW1wbGF0ZUFyZ3VtZW50KTsKLSAgdm9pZCAqTWVtID0gQ29u dGV4dC5BbGxvY2F0ZShTaXplKTsKLSAgVGVtcGxhdGVBcmd1bWVudCAqU3Rv cmVkQXJncyAKLSAgICA9IHJlaW50ZXJwcmV0X2Nhc3Q8VGVtcGxhdGVBcmd1 bWVudCAqPigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh dGljX2Nhc3Q8VGVtcGxhdGVBcmd1bWVudExpc3QgKj4oTWVtKSArIDEpOwot ICBzdGQ6OnVuaW5pdGlhbGl6ZWRfY29weShBcmdzLCBBcmdzICsgTnVtQXJn cywgU3RvcmVkQXJncyk7Ci0gIHJldHVybiBuZXcgKE1lbSkgVGVtcGxhdGVB cmd1bWVudExpc3QoU3RvcmVkQXJncywgTnVtQXJncywgdHJ1ZSk7CisgIHZv aWQgKk1lbSA9IENvbnRleHQuQWxsb2NhdGUodG90YWxTaXplVG9BbGxvYzxU ZW1wbGF0ZUFyZ3VtZW50PihOdW1BcmdzKSk7CisgIHJldHVybiBuZXcgKE1l bSkgVGVtcGxhdGVBcmd1bWVudExpc3QoQXJncywgTnVtQXJncyk7CiB9CiAK IEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm8gKgpJbmRleDog bGliL0FTVC9EZWNsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBs aWIvQVNUL0RlY2wuY3BwCisrKyBsaWIvQVNUL0RlY2wuY3BwCkBAIC0zMTE1 LDMzICszMTE1LDM1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBVbnJlc29sdmVkU2V0SW1wbCAmVGVtcGxhdGVzLAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBUZW1wbGF0ZUFy Z3VtZW50TGlzdEluZm8gJlRlbXBsYXRlQXJncykgewogICBhc3NlcnQoVGVt cGxhdGVPclNwZWNpYWxpemF0aW9uLmlzTnVsbCgpKTsKLSAgc2l6ZV90IFNp emUgPSBzaXplb2YoRGVwZW5kZW50RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxp emF0aW9uSW5mbyk7Ci0gIFNpemUgKz0gVGVtcGxhdGVBcmdzLnNpemUoKSAq IHNpemVvZihUZW1wbGF0ZUFyZ3VtZW50TG9jKTsKLSAgU2l6ZSArPSBUZW1w bGF0ZXMuc2l6ZSgpICogc2l6ZW9mKEZ1bmN0aW9uVGVtcGxhdGVEZWNsICop OwotICB2b2lkICpCdWZmZXIgPSBDb250ZXh0LkFsbG9jYXRlKFNpemUpOwog ICBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZv ICpJbmZvID0KLSAgICBuZXcgKEJ1ZmZlcikgRGVwZW5kZW50RnVuY3Rpb25U ZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5mbyhUZW1wbGF0ZXMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgVGVtcGxhdGVBcmdzKTsKKyAgICAgIERlcGVuZGVudEZ1bmN0 aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm86OkNyZWF0ZShDb250ZXh0 LCBUZW1wbGF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVBcmdzKTsKICAg VGVtcGxhdGVPclNwZWNpYWxpemF0aW9uID0gSW5mbzsKIH0KIAorRGVwZW5k ZW50RnVuY3Rpb25UZW1wbGF0ZVNwZWNpYWxpemF0aW9uSW5mbyAqCitEZXBl bmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZvOjpDcmVh dGUoCisgICAgQVNUQ29udGV4dCAmQ29udGV4dCwgY29uc3QgVW5yZXNvbHZl ZFNldEltcGwgJlRzLAorICAgIGNvbnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0 SW5mbyAmVEFyZ3MpIHsKKyAgdm9pZCAqQnVmZmVyID0gQ29udGV4dC5BbGxv Y2F0ZSgKKyAgICAgIHRvdGFsU2l6ZVRvQWxsb2M8VGVtcGxhdGVBcmd1bWVu dExvYywgRnVuY3Rpb25UZW1wbGF0ZURlY2wgKj4oCisgICAgICAgICAgVEFy Z3Muc2l6ZSgpLCBUcy5zaXplKCkpKTsKKyAgcmV0dXJuIG5ldyAoQnVmZmVy KSBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZv KFRzLCBUQXJncyk7Cit9CisKIERlcGVuZGVudEZ1bmN0aW9uVGVtcGxhdGVT cGVjaWFsaXphdGlvbkluZm86OgogRGVwZW5kZW50RnVuY3Rpb25UZW1wbGF0 ZVNwZWNpYWxpemF0aW9uSW5mbyhjb25zdCBVbnJlc29sdmVkU2V0SW1wbCAm VHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IFRlbXBsYXRlQXJndW1lbnRMaXN0SW5mbyAmVEFyZ3MpCiAgIDogQW5n bGVMb2NzKFRBcmdzLmdldExBbmdsZUxvYygpLCBUQXJncy5nZXRSQW5nbGVM b2MoKSkgewotICBzdGF0aWNfYXNzZXJ0KHNpemVvZigqdGhpcykgJSBsbHZt OjpBbGlnbk9mPHZvaWQgKj46OkFsaWdubWVudCA9PSAwLAotICAgICAgICAg ICAgICAgICJUcmFpbGluZyBkYXRhIGlzIHVuYWxpZ25lZCEiKTsKIAogICBO dW1UZW1wbGF0ZXMgPSBUcy5zaXplKCk7CiAgIE51bUFyZ3MgPSBUQXJncy5z aXplKCk7CiAKLSAgRnVuY3Rpb25UZW1wbGF0ZURlY2wgKipUc0FycmF5ID0K LSAgICBjb25zdF9jYXN0PEZ1bmN0aW9uVGVtcGxhdGVEZWNsKio+KGdldFRl bXBsYXRlcygpKTsKKyAgRnVuY3Rpb25UZW1wbGF0ZURlY2wgKipUc0FycmF5 ID0gZ2V0VHJhaWxpbmdPYmplY3RzPEZ1bmN0aW9uVGVtcGxhdGVEZWNsICo+ KCk7CiAgIGZvciAodW5zaWduZWQgSSA9IDAsIEUgPSBUcy5zaXplKCk7IEkg IT0gRTsgKytJKQogICAgIFRzQXJyYXlbSV0gPSBjYXN0PEZ1bmN0aW9uVGVt cGxhdGVEZWNsPihUc1tJXS0+Z2V0VW5kZXJseWluZ0RlY2woKSk7CiAKLSAg VGVtcGxhdGVBcmd1bWVudExvYyAqQXJnc0FycmF5ID0KLSAgICBjb25zdF9j YXN0PFRlbXBsYXRlQXJndW1lbnRMb2MqPihnZXRUZW1wbGF0ZUFyZ3MoKSk7 CisgIFRlbXBsYXRlQXJndW1lbnRMb2MgKkFyZ3NBcnJheSA9IGdldFRyYWls aW5nT2JqZWN0czxUZW1wbGF0ZUFyZ3VtZW50TG9jPigpOwogICBmb3IgKHVu c2lnbmVkIEkgPSAwLCBFID0gVEFyZ3Muc2l6ZSgpOyBJICE9IEU7ICsrSSkK ICAgICBuZXcgKCZBcmdzQXJyYXlbSV0pIFRlbXBsYXRlQXJndW1lbnRMb2Mo VEFyZ3NbSV0pOwogfQpAQCAtMzg5MSwxMyArMzg5MywxMyBAQAogCiBDYXB0 dXJlZERlY2wgKkNhcHR1cmVkRGVjbDo6Q3JlYXRlKEFTVENvbnRleHQgJkMs IERlY2xDb250ZXh0ICpEQywKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgTnVtUGFyYW1zKSB7Ci0gIHJldHVybiBuZXcg KEMsIERDLCBOdW1QYXJhbXMgKiBzaXplb2YoSW1wbGljaXRQYXJhbURlY2wg KikpCisgIHJldHVybiBuZXcgKEMsIERDLCBhZGRpdGlvbmFsU2l6ZVRvQWxs b2M8SW1wbGljaXRQYXJhbURlY2wgKj4oTnVtUGFyYW1zKSkKICAgICAgIENh cHR1cmVkRGVjbChEQywgTnVtUGFyYW1zKTsKIH0KIAogQ2FwdHVyZWREZWNs ICpDYXB0dXJlZERlY2w6OkNyZWF0ZURlc2VyaWFsaXplZChBU1RDb250ZXh0 ICZDLCB1bnNpZ25lZCBJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgTnVtUGFyYW1zKSB7Ci0g IHJldHVybiBuZXcgKEMsIElELCBOdW1QYXJhbXMgKiBzaXplb2YoSW1wbGlj aXRQYXJhbURlY2wgKikpCisgIHJldHVybiBuZXcgKEMsIElELCBhZGRpdGlv bmFsU2l6ZVRvQWxsb2M8SW1wbGljaXRQYXJhbURlY2wgKj4oTnVtUGFyYW1z KSkKICAgICAgIENhcHR1cmVkRGVjbChudWxscHRyLCBOdW1QYXJhbXMpOwog fQogCkBAIC00MDQyLDU3ICs0MDQ0LDU1IEBACiAgICAgTmV4dExvY2FsSW1w b3J0KCkKIHsKICAgYXNzZXJ0KGdldE51bU1vZHVsZUlkZW50aWZpZXJzKElt cG9ydGVkKSA9PSBJZGVudGlmaWVyTG9jcy5zaXplKCkpOwotICBTb3VyY2VM b2NhdGlvbiAqU3RvcmVkTG9jcyA9IHJlaW50ZXJwcmV0X2Nhc3Q8U291cmNl TG9jYXRpb24gKj4odGhpcyArIDEpOwotICBtZW1jcHkoU3RvcmVkTG9jcywg SWRlbnRpZmllckxvY3MuZGF0YSgpLCAKLSAgICAgICAgIElkZW50aWZpZXJM b2NzLnNpemUoKSAqIHNpemVvZihTb3VyY2VMb2NhdGlvbikpOworICBTb3Vy Y2VMb2NhdGlvbiAqU3RvcmVkTG9jcyA9IGdldFRyYWlsaW5nT2JqZWN0czxT b3VyY2VMb2NhdGlvbj4oKTsKKyAgc3RkOjp1bmluaXRpYWxpemVkX2NvcHko SWRlbnRpZmllckxvY3MuYmVnaW4oKSwgSWRlbnRpZmllckxvY3MuZW5kKCks CisgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3JlZExvY3MpOwogfQog CiBJbXBvcnREZWNsOjpJbXBvcnREZWNsKERlY2xDb250ZXh0ICpEQywgU291 cmNlTG9jYXRpb24gU3RhcnRMb2MsIAogICAgICAgICAgICAgICAgICAgICAg ICBNb2R1bGUgKkltcG9ydGVkLCBTb3VyY2VMb2NhdGlvbiBFbmRMb2MpCiAg IDogRGVjbChJbXBvcnQsIERDLCBTdGFydExvYyksIEltcG9ydGVkQW5kQ29t cGxldGUoSW1wb3J0ZWQsIGZhbHNlKSwKICAgICBOZXh0TG9jYWxJbXBvcnQo KQogewotICAqcmVpbnRlcnByZXRfY2FzdDxTb3VyY2VMb2NhdGlvbiAqPih0 aGlzICsgMSkgPSBFbmRMb2M7CisgICpnZXRUcmFpbGluZ09iamVjdHM8U291 cmNlTG9jYXRpb24+KCkgPSBFbmRMb2M7CiB9CiAKIEltcG9ydERlY2wgKklt cG9ydERlY2w6OkNyZWF0ZShBU1RDb250ZXh0ICZDLCBEZWNsQ29udGV4dCAq REMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9j YXRpb24gU3RhcnRMb2MsIE1vZHVsZSAqSW1wb3J0ZWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQXJyYXlSZWY8U291cmNlTG9jYXRpb24+ IElkZW50aWZpZXJMb2NzKSB7Ci0gIHJldHVybiBuZXcgKEMsIERDLCBJZGVu dGlmaWVyTG9jcy5zaXplKCkgKiBzaXplb2YoU291cmNlTG9jYXRpb24pKQor ICByZXR1cm4gbmV3IChDLCBEQywKKyAgICAgICAgICAgICAgYWRkaXRpb25h bFNpemVUb0FsbG9jPFNvdXJjZUxvY2F0aW9uPihJZGVudGlmaWVyTG9jcy5z aXplKCkpKQogICAgICAgSW1wb3J0RGVjbChEQywgU3RhcnRMb2MsIEltcG9y dGVkLCBJZGVudGlmaWVyTG9jcyk7CiB9CiAKIEltcG9ydERlY2wgKkltcG9y dERlY2w6OkNyZWF0ZUltcGxpY2l0KEFTVENvbnRleHQgJkMsIERlY2xDb250 ZXh0ICpEQywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFNvdXJjZUxvY2F0aW9uIFN0YXJ0TG9jLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTW9kdWxlICpJbXBvcnRlZCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUxv Y2F0aW9uIEVuZExvYykgewotICBJbXBvcnREZWNsICpJbXBvcnQgPQotICAg ICAgbmV3IChDLCBEQywgc2l6ZW9mKFNvdXJjZUxvY2F0aW9uKSkgSW1wb3J0 RGVjbChEQywgU3RhcnRMb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEltcG9ydGVkLCBFbmRMb2Mp OworICBJbXBvcnREZWNsICpJbXBvcnQgPSBuZXcgKEMsIERDLCBhZGRpdGlv bmFsU2l6ZVRvQWxsb2M8U291cmNlTG9jYXRpb24+KDEpKQorICAgICAgSW1w b3J0RGVjbChEQywgU3RhcnRMb2MsIEltcG9ydGVkLCBFbmRMb2MpOwogICBJ bXBvcnQtPnNldEltcGxpY2l0KCk7CiAgIHJldHVybiBJbXBvcnQ7CiB9CiAK IEltcG9ydERlY2wgKkltcG9ydERlY2w6OkNyZWF0ZURlc2VyaWFsaXplZChB U1RDb250ZXh0ICZDLCB1bnNpZ25lZCBJRCwKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBOdW1Mb2NhdGlv bnMpIHsKLSAgcmV0dXJuIG5ldyAoQywgSUQsIE51bUxvY2F0aW9ucyAqIHNp emVvZihTb3VyY2VMb2NhdGlvbikpCisgIHJldHVybiBuZXcgKEMsIElELCBh ZGRpdGlvbmFsU2l6ZVRvQWxsb2M8U291cmNlTG9jYXRpb24+KE51bUxvY2F0 aW9ucykpCiAgICAgICBJbXBvcnREZWNsKEVtcHR5U2hlbGwoKSk7CiB9CiAK IEFycmF5UmVmPFNvdXJjZUxvY2F0aW9uPiBJbXBvcnREZWNsOjpnZXRJZGVu dGlmaWVyTG9jcygpIGNvbnN0IHsKICAgaWYgKCFJbXBvcnRlZEFuZENvbXBs ZXRlLmdldEludCgpKQogICAgIHJldHVybiBOb25lOwogCi0gIGNvbnN0IFNv dXJjZUxvY2F0aW9uICpTdG9yZWRMb2NzCi0gICAgPSByZWludGVycHJldF9j YXN0PGNvbnN0IFNvdXJjZUxvY2F0aW9uICo+KHRoaXMgKyAxKTsKKyAgY29u c3QgU291cmNlTG9jYXRpb24gKlN0b3JlZExvY3MgPSBnZXRUcmFpbGluZ09i amVjdHM8U291cmNlTG9jYXRpb24+KCk7CiAgIHJldHVybiBsbHZtOjptYWtl QXJyYXlSZWYoU3RvcmVkTG9jcywKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZXROdW1Nb2R1bGVJZGVudGlmaWVycyhnZXRJbXBvcnRlZE1vZHVs ZSgpKSk7CiB9CiAKIFNvdXJjZVJhbmdlIEltcG9ydERlY2w6OmdldFNvdXJj ZVJhbmdlKCkgY29uc3QgewogICBpZiAoIUltcG9ydGVkQW5kQ29tcGxldGUu Z2V0SW50KCkpCi0gICAgcmV0dXJuIFNvdXJjZVJhbmdlKGdldExvY2F0aW9u KCksIAotICAgICAgICAgICAgICAgICAgICAgICAqcmVpbnRlcnByZXRfY2Fz dDxjb25zdCBTb3VyY2VMb2NhdGlvbiAqPih0aGlzICsgMSkpOwotICAKKyAg ICByZXR1cm4gU291cmNlUmFuZ2UoZ2V0TG9jYXRpb24oKSwgKmdldFRyYWls aW5nT2JqZWN0czxTb3VyY2VMb2NhdGlvbj4oKSk7CisKICAgcmV0dXJuIFNv dXJjZVJhbmdlKGdldExvY2F0aW9uKCksIGdldElkZW50aWZpZXJMb2NzKCku YmFjaygpKTsKIH0KSW5kZXg6IGluY2x1ZGUvY2xhbmcvQVNUL0RlY2xUZW1w bGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGluY2x1ZGUvY2xh bmcvQVNUL0RlY2xUZW1wbGF0ZS5oCisrKyBpbmNsdWRlL2NsYW5nL0FTVC9E ZWNsVGVtcGxhdGUuaApAQCAtMjAsNiArMjAsNyBAQAogI2luY2x1ZGUgImNs YW5nL0FTVC9UZW1wbGF0ZUJhc2UuaCIKICNpbmNsdWRlICJsbHZtL0FEVC9Q b2ludGVyVW5pb24uaCIKICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvQ29tcGls ZXIuaCIKKyNpbmNsdWRlICJsbHZtL1N1cHBvcnQvVHJhaWxpbmdPYmplY3Rz LmgiCiAjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2UgY2xhbmcgewpA QCAtNDMsNyArNDQsOSBAQAogCiAvLy8gXGJyaWVmIFN0b3JlcyBhIGxpc3Qg b2YgdGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgYSBUZW1wbGF0ZURlY2wgYW5k IGl0cwogLy8vIGRlcml2ZWQgY2xhc3Nlcy4KLWNsYXNzIExMVk1fQUxJR05B UygvKmFsaWdub2Yodm9pZCopKi8gTExWTV9QVFJfU0laRSkgVGVtcGxhdGVQ YXJhbWV0ZXJMaXN0IHsKK2NsYXNzIExMVk1fQUxJR05BUygvKmFsaWdub2Yo dm9pZCopKi8gTExWTV9QVFJfU0laRSkgVGVtcGxhdGVQYXJhbWV0ZXJMaXN0 CisgICAgOiBsbHZtOjpUcmFpbGluZ09iamVjdHMxPFRlbXBsYXRlUGFyYW1l dGVyTGlzdCwgTmFtZWREZWNsICo+IHsKKwogICAvLy8gVGhlIGxvY2F0aW9u IG9mIHRoZSAndGVtcGxhdGUnIGtleXdvcmQuCiAgIFNvdXJjZUxvY2F0aW9u IFRlbXBsYXRlTG9jOwogCkBAIC01OSw2ICs2MiwxMCBAQAogICB1bnNpZ25l ZCBDb250YWluc1VuZXhwYW5kZWRQYXJhbWV0ZXJQYWNrIDogMTsKIAogcHJv dGVjdGVkOgorICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2Fk VG9rZW48TmFtZWREZWNsICo+KSBjb25zdCB7CisgICAgcmV0dXJuIE51bVBh cmFtczsKKyAgfQorCiAgIFRlbXBsYXRlUGFyYW1ldGVyTGlzdChTb3VyY2VM b2NhdGlvbiBUZW1wbGF0ZUxvYywgU291cmNlTG9jYXRpb24gTEFuZ2xlTG9j LAogICAgICAgICAgICAgICAgICAgICAgICAgTmFtZWREZWNsICoqUGFyYW1z LCB1bnNpZ25lZCBOdW1QYXJhbXMsCiAgICAgICAgICAgICAgICAgICAgICAg ICBTb3VyY2VMb2NhdGlvbiBSQW5nbGVMb2MpOwpAQCAtNzcsMTAgKzg0LDkg QEAKICAgLy8vIFxicmllZiBJdGVyYXRlcyB0aHJvdWdoIHRoZSB0ZW1wbGF0 ZSBwYXJhbWV0ZXJzIGluIHRoaXMgbGlzdC4KICAgdHlwZWRlZiBOYW1lZERl Y2wqIGNvbnN0KiBjb25zdF9pdGVyYXRvcjsKIAotICBpdGVyYXRvciBiZWdp bigpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmFtZWREZWNsICoqPih0 aGlzICsgMSk7IH0KLSAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7 Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmFtZWREZWNsICogY29u c3QgKj4odGhpcyArIDEpOwotICB9CisgIGl0ZXJhdG9yIGJlZ2luKCkgeyBy ZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPE5hbWVkRGVjbCAqPigpOyB9CisK KyAgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7IHJldHVybiBnZXRU cmFpbGluZ09iamVjdHM8TmFtZWREZWNsICo+KCk7IH0KICAgaXRlcmF0b3Ig ZW5kKCkgeyByZXR1cm4gYmVnaW4oKSArIE51bVBhcmFtczsgfQogICBjb25z dF9pdGVyYXRvciBlbmQoKSBjb25zdCB7IHJldHVybiBiZWdpbigpICsgTnVt UGFyYW1zOyB9CiAKQEAgLTEzMCw2ICsxMzYsOCBAQAogICBTb3VyY2VSYW5n ZSBnZXRTb3VyY2VSYW5nZSgpIGNvbnN0IExMVk1fUkVBRE9OTFkgewogICAg IHJldHVybiBTb3VyY2VSYW5nZShUZW1wbGF0ZUxvYywgUkFuZ2xlTG9jKTsK ICAgfQorCisgIGZyaWVuZCBjbGFzcyBUcmFpbGluZ09iamVjdHMxOwogfTsK IAogLy8vIFxicmllZiBTdG9yZXMgYSBsaXN0IG9mIHRlbXBsYXRlIHBhcmFt ZXRlcnMgZm9yIGEgVGVtcGxhdGVEZWNsIGFuZCBpdHMKQEAgLTE0NywyMyAr MTU1LDIxIEBACiB9OwogCiAvLy8gXGJyaWVmIEEgdGVtcGxhdGUgYXJndW1l bnQgbGlzdC4KLWNsYXNzIFRlbXBsYXRlQXJndW1lbnRMaXN0IHsKK2NsYXNz IFRlbXBsYXRlQXJndW1lbnRMaXN0CisgICAgOiBsbHZtOjpUcmFpbGluZ09i amVjdHMxPFRlbXBsYXRlQXJndW1lbnRMaXN0LCBUZW1wbGF0ZUFyZ3VtZW50 PiB7CiAgIC8vLyBcYnJpZWYgVGhlIHRlbXBsYXRlIGFyZ3VtZW50IGxpc3Qu Ci0gIC8vLwotICAvLy8gVGhlIGludGVnZXIgdmFsdWUgd2lsbCBiZSBub24t emVybyB0byBpbmRpY2F0ZSB0aGF0IHRoaXMKLSAgLy8vIHRlbXBsYXRlIGFy Z3VtZW50IGxpc3QgZG9lcyBvd24gdGhlIHBvaW50ZXIuCi0gIGxsdm06OlBv aW50ZXJJbnRQYWlyPGNvbnN0IFRlbXBsYXRlQXJndW1lbnQgKiwgMT4gQXJn dW1lbnRzOworICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICpBcmd1bWVudHM7 CiAKICAgLy8vIFxicmllZiBUaGUgbnVtYmVyIG9mIHRlbXBsYXRlIGFyZ3Vt ZW50cyBpbiB0aGlzIHRlbXBsYXRlCiAgIC8vLyBhcmd1bWVudCBsaXN0Lgog ICB1bnNpZ25lZCBOdW1Bcmd1bWVudHM7CiAKICAgVGVtcGxhdGVBcmd1bWVu dExpc3QoY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3QgJk90aGVyKSA9IGRl bGV0ZTsKICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgVGVtcGxhdGVBcmd1bWVu dExpc3QgJk90aGVyKSA9IGRlbGV0ZTsKIAotICBUZW1wbGF0ZUFyZ3VtZW50 TGlzdChjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICpBcmdzLCB1bnNpZ25lZCBO dW1BcmdzLAotICAgICAgICAgICAgICAgICAgICAgICBib29sIE93bmVkKQot ICAgIDogQXJndW1lbnRzKEFyZ3MsIE93bmVkKSwgTnVtQXJndW1lbnRzKE51 bUFyZ3MpIHsgfQorICAvLyBDb25zdHJ1Y3RzIGFuIGluc3RhbmNlIHdpdGgg YW4gaW50ZXJuYWwgQXJndW1lbnQgbGlzdCwgY29udGFpbmluZworICAvLyBh IGNvcHkgb2YgdGhlIEFyZ3MgYXJyYXkuIChDYWxsZWQgYnkgQ3JlYXRlQ29w eSkKKyAgVGVtcGxhdGVBcmd1bWVudExpc3QoY29uc3QgVGVtcGxhdGVBcmd1 bWVudCAqQXJncywgdW5zaWduZWQgTnVtQXJncyk7CiAKIHB1YmxpYzoKICAg Ly8vIFxicmllZiBUeXBlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdGVt cGxhdGUgYXJndW1lbnQgbGlzdCBpdHNlbGYgaXMgYQpAQCAtMTgwLDE4ICsx ODYsMTggQEAKICAgLy8vCiAgIC8vLyBUaGUgdGVtcGxhdGUgYXJndW1lbnQg bGlzdCBkb2VzIG5vdCBvd24gdGhlIHRlbXBsYXRlIGFyZ3VtZW50cwogICAv Ly8gcHJvdmlkZWQuCi0gIGV4cGxpY2l0IFRlbXBsYXRlQXJndW1lbnRMaXN0 KE9uU3RhY2tUeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICpBcmdzLCB1bnNpZ25lZCBOdW1B cmdzKQotICAgIDogQXJndW1lbnRzKEFyZ3MsIGZhbHNlKSwgTnVtQXJndW1l bnRzKE51bUFyZ3MpIHsgfQorICBleHBsaWNpdCBUZW1wbGF0ZUFyZ3VtZW50 TGlzdChPblN0YWNrVHlwZSwgY29uc3QgVGVtcGxhdGVBcmd1bWVudCAqQXJn cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg TnVtQXJncykKKyAgICAgIDogQXJndW1lbnRzKEFyZ3MpLCBOdW1Bcmd1bWVu dHMoTnVtQXJncykge30KIAogICAvLy8gXGJyaWVmIFByb2R1Y2VzIGEgc2hh bGxvdyBjb3B5IG9mIHRoZSBnaXZlbiB0ZW1wbGF0ZSBhcmd1bWVudCBsaXN0 LgogICAvLy8KICAgLy8vIFRoaXMgb3BlcmF0aW9uIGFzc3VtZXMgdGhhdCB0 aGUgaW5wdXQgYXJndW1lbnQgbGlzdCBvdXRsaXZlcyBpdC4KICAgLy8vIFRo aXMgdGFrZXMgdGhlIGxpc3QgYXMgYSBwb2ludGVyIHRvIGF2b2lkIGxvb2tp bmcgbGlrZSBhIGNvcHkKICAgLy8vIGNvbnN0cnVjdG9yLCBzaW5jZSB0aGlz IHJlYWxseSByZWFsbHkgaXNuJ3Qgc2FmZSB0byB1c2UgdGhhdAogICAvLy8g d2F5LgogICBleHBsaWNpdCBUZW1wbGF0ZUFyZ3VtZW50TGlzdChjb25zdCBU ZW1wbGF0ZUFyZ3VtZW50TGlzdCAqT3RoZXIpCi0gICAgOiBBcmd1bWVudHMo T3RoZXItPmRhdGEoKSwgZmFsc2UpLCBOdW1Bcmd1bWVudHMoT3RoZXItPnNp emUoKSkgeyB9CisgICAgICA6IEFyZ3VtZW50cyhPdGhlci0+ZGF0YSgpKSwg TnVtQXJndW1lbnRzKE90aGVyLT5zaXplKCkpIHt9CiAKICAgLy8vIFxicmll ZiBSZXRyaWV2ZSB0aGUgdGVtcGxhdGUgYXJndW1lbnQgYXQgYSBnaXZlbiBp bmRleC4KICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudCAmZ2V0KHVuc2lnbmVk IElkeCkgY29uc3QgewpAQCAtMjEyLDkgKzIxOCw5IEBACiAgIHVuc2lnbmVk IHNpemUoKSBjb25zdCB7IHJldHVybiBOdW1Bcmd1bWVudHM7IH0KIAogICAv Ly8gXGJyaWVmIFJldHJpZXZlIGEgcG9pbnRlciB0byB0aGUgdGVtcGxhdGUg YXJndW1lbnQgbGlzdC4KLSAgY29uc3QgVGVtcGxhdGVBcmd1bWVudCAqZGF0 YSgpIGNvbnN0IHsKLSAgICByZXR1cm4gQXJndW1lbnRzLmdldFBvaW50ZXIo KTsKLSAgfQorICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50ICpkYXRhKCkgY29u c3QgeyByZXR1cm4gQXJndW1lbnRzOyB9CisKKyAgZnJpZW5kIGNsYXNzIFRy YWlsaW5nT2JqZWN0czE7CiB9OwogCiB2b2lkICphbGxvY2F0ZURlZmF1bHRB cmdTdG9yYWdlQ2hhaW4oY29uc3QgQVNUQ29udGV4dCAmQyk7CkBAIC01NDMs NyArNTQ5LDkgQEAKIC8vLyAgIH07CiAvLy8gXGVuZGNvZGUKIGNsYXNzIExM Vk1fQUxJR05BUygvKmFsaWdub2YodWludDY0X3QpKi8gOCkKLSAgICBEZXBl bmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZvIHsKKyAg ICBEZXBlbmRlbnRGdW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZv CisgICAgOiBsbHZtOjpUcmFpbGluZ09iamVjdHMyPERlcGVuZGVudEZ1bmN0 aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm8sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFRlbXBsYXRlQXJndW1lbnRMb2MsIEZ1bmN0aW9u VGVtcGxhdGVEZWNsICo+IHsKICAgLy8vIFRoZSBudW1iZXIgb2YgcG90ZW50 aWFsIHRlbXBsYXRlIGNhbmRpZGF0ZXMuCiAgIHVuc2lnbmVkIE51bVRlbXBs YXRlczsKIApAQCAtNTUzLDI5ICs1NjEsMzUgQEAKICAgLy8vIFRoZSBsb2Nh dGlvbnMgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IGFuZ2xlIGJyYWNrZXRzLgog ICBTb3VyY2VSYW5nZSBBbmdsZUxvY3M7CiAKLSAgRnVuY3Rpb25UZW1wbGF0 ZURlY2wgKiBjb25zdCAqZ2V0VGVtcGxhdGVzKCkgY29uc3QgewotICAgIHJl dHVybiByZWludGVycHJldF9jYXN0PEZ1bmN0aW9uVGVtcGxhdGVEZWNsICpj b25zdCAqPigKLSAgICAgICAgJmdldFRlbXBsYXRlQXJncygpW051bUFyZ3Nd KTsKKyAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVybG9hZFRva2Vu PFRlbXBsYXRlQXJndW1lbnRMb2M+KSBjb25zdCB7CisgICAgcmV0dXJuIE51 bUFyZ3M7CisgIH0KKyAgc2l6ZV90IG51bVRyYWlsaW5nT2JqZWN0cyhPdmVy bG9hZFRva2VuPEZ1bmN0aW9uVGVtcGxhdGVEZWNsICo+KSBjb25zdCB7Cisg ICAgcmV0dXJuIE51bVRlbXBsYXRlczsKICAgfQogCi1wdWJsaWM6CiAgIERl cGVuZGVudEZ1bmN0aW9uVGVtcGxhdGVTcGVjaWFsaXphdGlvbkluZm8oCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVbnJlc29s dmVkU2V0SW1wbCAmVGVtcGxhdGVzLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgVGVtcGxhdGVBcmd1bWVudExpc3RJbmZvICZU ZW1wbGF0ZUFyZ3MpOwogCitwdWJsaWM6CisgIHN0YXRpYyBEZXBlbmRlbnRG dW5jdGlvblRlbXBsYXRlU3BlY2lhbGl6YXRpb25JbmZvICoKKyAgQ3JlYXRl KEFTVENvbnRleHQgJkNvbnRleHQsIGNvbnN0IFVucmVzb2x2ZWRTZXRJbXBs ICZUZW1wbGF0ZXMsCisgICAgICAgICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50 TGlzdEluZm8gJlRlbXBsYXRlQXJncyk7CisKICAgLy8vIFxicmllZiBSZXR1 cm5zIHRoZSBudW1iZXIgb2YgZnVuY3Rpb24gdGVtcGxhdGVzIHRoYXQgdGhp cyBtaWdodAogICAvLy8gYmUgYSBzcGVjaWFsaXphdGlvbiBvZi4KICAgdW5z aWduZWQgZ2V0TnVtVGVtcGxhdGVzKCkgY29uc3QgeyByZXR1cm4gTnVtVGVt cGxhdGVzOyB9CiAKICAgLy8vIFxicmllZiBSZXR1cm5zIHRoZSBpJ3RoIHRl bXBsYXRlIGNhbmRpZGF0ZS4KICAgRnVuY3Rpb25UZW1wbGF0ZURlY2wgKmdl dFRlbXBsYXRlKHVuc2lnbmVkIEkpIGNvbnN0IHsKICAgICBhc3NlcnQoSSA8 IGdldE51bVRlbXBsYXRlcygpICYmICJ0ZW1wbGF0ZSBpbmRleCBvdXQgb2Yg cmFuZ2UiKTsKLSAgICByZXR1cm4gZ2V0VGVtcGxhdGVzKClbSV07CisgICAg cmV0dXJuIGdldFRyYWlsaW5nT2JqZWN0czxGdW5jdGlvblRlbXBsYXRlRGVj bCAqPigpW0ldOwogICB9CiAKICAgLy8vIFxicmllZiBSZXR1cm5zIHRoZSBl eHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudHMgdGhhdCB3ZXJlIGdpdmVuLgog ICBjb25zdCBUZW1wbGF0ZUFyZ3VtZW50TG9jICpnZXRUZW1wbGF0ZUFyZ3Mo KSBjb25zdCB7Ci0gICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg VGVtcGxhdGVBcmd1bWVudExvYyAqPih0aGlzICsgMSk7CisgICAgcmV0dXJu IGdldFRyYWlsaW5nT2JqZWN0czxUZW1wbGF0ZUFyZ3VtZW50TG9jPigpOwog ICB9CiAKICAgLy8vIFxicmllZiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZXhw bGljaXQgdGVtcGxhdGUgYXJndW1lbnRzIHRoYXQgd2VyZSBnaXZlbi4KQEAg LTU5NCw2ICs2MDgsOCBAQAogICBTb3VyY2VMb2NhdGlvbiBnZXRSQW5nbGVM b2MoKSBjb25zdCB7CiAgICAgcmV0dXJuIEFuZ2xlTG9jcy5nZXRFbmQoKTsK ICAgfQorCisgIGZyaWVuZCBjbGFzcyBUcmFpbGluZ09iamVjdHMyOwogfTsK IAogLy8vIERlY2xhcmF0aW9uIG9mIGEgcmVkZWNsYXJhYmxlIHRlbXBsYXRl LgpAQCAtMTEwOSw3ICsxMTI1LDkgQEAKIC8vLyB0ZW1wbGF0ZTxpbnQgU2l6 ZT4gY2xhc3MgYXJyYXkgeyB9OwogLy8vIEBlbmRjb2RlCiBjbGFzcyBOb25U eXBlVGVtcGxhdGVQYXJtRGVjbAotICA6IHB1YmxpYyBEZWNsYXJhdG9yRGVj bCwgcHJvdGVjdGVkIFRlbXBsYXRlUGFybVBvc2l0aW9uIHsKKyAgICA6IHB1 YmxpYyBEZWNsYXJhdG9yRGVjbCwKKyAgICAgIHByb3RlY3RlZCBUZW1wbGF0 ZVBhcm1Qb3NpdGlvbiwKKyAgICAgIGxsdm06OlRyYWlsaW5nT2JqZWN0czE8 Tm9uVHlwZVRlbXBsYXRlUGFybURlY2wsIHZvaWQgKj4gewogICAvLy8gXGJy aWVmIFRoZSBkZWZhdWx0IHRlbXBsYXRlIGFyZ3VtZW50LCBpZiBhbnksIGFu ZCB3aGV0aGVyIG9yIG5vdAogICAvLy8gaXQgd2FzIGluaGVyaXRlZC4KICAg dHlwZWRlZiBEZWZhdWx0QXJnU3RvcmFnZTxOb25UeXBlVGVtcGxhdGVQYXJt RGVjbCwgRXhwcio+IERlZkFyZ1N0b3JhZ2U7CkBAIC0xMTI5LDYgKzExNDcs MTAgQEAKICAgLy8vIFxicmllZiBUaGUgbnVtYmVyIG9mIHR5cGVzIGluIGFu IGV4cGFuZGVkIHBhcmFtZXRlciBwYWNrLgogICB1bnNpZ25lZCBOdW1FeHBh bmRlZFR5cGVzOwogCisgIHNpemVfdCBudW1UcmFpbGluZ09iamVjdHMoT3Zl cmxvYWRUb2tlbjx2b2lkICo+KSBjb25zdCB7CisgICAgcmV0dXJuIE51bUV4 cGFuZGVkVHlwZXMgKiAyOworICB9CisKICAgTm9uVHlwZVRlbXBsYXRlUGFy bURlY2woRGVjbENvbnRleHQgKkRDLCBTb3VyY2VMb2NhdGlvbiBTdGFydExv YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlTG9jYXRpb24g SWRMb2MsIHVuc2lnbmVkIEQsIHVuc2lnbmVkIFAsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgIElkZW50aWZpZXJJbmZvICpJZCwgUXVhbFR5cGUgVCwK QEAgLTExNDcsNiArMTE2OSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAg ICAgIFR5cGVTb3VyY2VJbmZvICoqRXhwYW5kZWRUSW5mb3MpOwogCiAgIGZy aWVuZCBjbGFzcyBBU1REZWNsUmVhZGVyOworICBmcmllbmQgY2xhc3MgVHJh aWxpbmdPYmplY3RzMTsKIAogcHVibGljOgogICBzdGF0aWMgTm9uVHlwZVRl bXBsYXRlUGFybURlY2wgKgpAQCAtMTI2MiwxNSArMTI4NSwxNSBAQAogICAv Ly8gcGFjay4KICAgUXVhbFR5cGUgZ2V0RXhwYW5zaW9uVHlwZSh1bnNpZ25l ZCBJKSBjb25zdCB7CiAgICAgYXNzZXJ0KEkgPCBOdW1FeHBhbmRlZFR5cGVz ICYmICJPdXQtb2YtcmFuZ2UgZXhwYW5zaW9uIHR5cGUgaW5kZXgiKTsKLSAg ICB2b2lkICogY29uc3QgKlR5cGVzQW5kSW5mb3MgPSByZWludGVycHJldF9j YXN0PHZvaWQgKiBjb25zdCo+KHRoaXMgKyAxKTsKKyAgICB2b2lkICpjb25z dCAqVHlwZXNBbmRJbmZvcyA9IGdldFRyYWlsaW5nT2JqZWN0czx2b2lkICo+ KCk7CiAgICAgcmV0dXJuIFF1YWxUeXBlOjpnZXRGcm9tT3BhcXVlUHRyKFR5 cGVzQW5kSW5mb3NbMipJXSk7CiAgIH0KIAogICAvLy8gXGJyaWVmIFJldHJp ZXZlIGEgcGFydGljdWxhciBleHBhbnNpb24gdHlwZSBzb3VyY2UgaW5mbyB3 aXRoaW4gYW4KICAgLy8vIGV4cGFuZGVkIHBhcmFtZXRlciBwYWNrLgogICBU eXBlU291cmNlSW5mbyAqZ2V0RXhwYW5zaW9uVHlwZVNvdXJjZUluZm8odW5z aWduZWQgSSkgY29uc3QgewogICAgIGFzc2VydChJIDwgTnVtRXhwYW5kZWRU eXBlcyAmJiAiT3V0LW9mLXJhbmdlIGV4cGFuc2lvbiB0eXBlIGluZGV4Iik7 Ci0gICAgdm9pZCAqIGNvbnN0ICpUeXBlc0FuZEluZm9zID0gcmVpbnRlcnBy ZXRfY2FzdDx2b2lkICogY29uc3QqPih0aGlzICsgMSk7CisgICAgdm9pZCAq Y29uc3QgKlR5cGVzQW5kSW5mb3MgPSBnZXRUcmFpbGluZ09iamVjdHM8dm9p ZCAqPigpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxUeXBlU291cmNlSW5m byAqPihUeXBlc0FuZEluZm9zWzIqSSsxXSk7CiAgIH0KIApAQCAtMTI4Niw5 ICsxMzA5LDExIEBACiAvLy8gQGVuZGNvZGUKIC8vLyBBIHRlbXBsYXRlIHRl bXBsYXRlIHBhcmFtZXRlciBpcyBhIFRlbXBsYXRlRGVjbCBiZWNhdXNlIGl0 IGRlZmluZXMgdGhlCiAvLy8gbmFtZSBvZiBhIHRlbXBsYXRlIGFuZCB0aGUg dGVtcGxhdGUgcGFyYW1ldGVycyBhbGxvd2FibGUgZm9yIHN1YnN0aXR1dGlv bi4KLWNsYXNzIFRlbXBsYXRlVGVtcGxhdGVQYXJtRGVjbCA6IHB1YmxpYyBU ZW1wbGF0ZURlY2wsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcHJvdGVjdGVkIFRlbXBsYXRlUGFybVBvc2l0aW9uIAoteworY2xhc3Mg VGVtcGxhdGVUZW1wbGF0ZVBhcm1EZWNsCisgICAgOiBwdWJsaWMgVGVtcGxh dGVEZWNsLAorICAgICAgcHJvdGVjdGVkIFRlbXBsYXRlUGFybVBvc2l0aW9u LAorICAgICAgbGx2bTo6VHJhaWxpbmdPYmplY3RzMTxUZW1wbGF0ZVRlbXBs YXRlUGFybURlY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRl bXBsYXRlUGFyYW1ldGVyTGlzdCAqPiB7CiAgIHZvaWQgYW5jaG9yKCkgb3Zl cnJpZGU7CiAKICAgLy8vIFxicmllZiBUaGUgZGVmYXVsdCB0ZW1wbGF0ZSBh cmd1bWVudCwgaWYgYW55LgpAQCAtMTM5Miw3ICsxNDE3LDcgQEAKICAgLy8v IHBhY2suCiAgIFRlbXBsYXRlUGFyYW1ldGVyTGlzdCAqZ2V0RXhwYW5zaW9u VGVtcGxhdGVQYXJhbWV0ZXJzKHVuc2lnbmVkIEkpIGNvbnN0IHsKICAgICBh c3NlcnQoSSA8IE51bUV4cGFuZGVkUGFyYW1zICYmICJPdXQtb2YtcmFuZ2Ug ZXhwYW5zaW9uIHR5cGUgaW5kZXgiKTsKLSAgICByZXR1cm4gcmVpbnRlcnBy ZXRfY2FzdDxUZW1wbGF0ZVBhcmFtZXRlckxpc3QgKmNvbnN0ICo+KHRoaXMg KyAxKVtJXTsKKyAgICByZXR1cm4gZ2V0VHJhaWxpbmdPYmplY3RzPFRlbXBs YXRlUGFyYW1ldGVyTGlzdCAqPigpW0ldOwogICB9CiAKICAgY29uc3QgRGVm QXJnU3RvcmFnZSAmZ2V0RGVmYXVsdEFyZ1N0b3JhZ2UoKSBjb25zdCB7IHJl dHVybiBEZWZhdWx0QXJndW1lbnQ7IH0KQEAgLTE0NDIsNiArMTQ2Nyw3IEBA CiAKICAgZnJpZW5kIGNsYXNzIEFTVERlY2xSZWFkZXI7CiAgIGZyaWVuZCBj bGFzcyBBU1REZWNsV3JpdGVyOworICBmcmllbmQgY2xhc3MgVHJhaWxpbmdP YmplY3RzMTsKIH07CiAKIC8vLyBcYnJpZWYgUmVwcmVzZW50cyBhIGNsYXNz IHRlbXBsYXRlIHNwZWNpYWxpemF0aW9uLCB3aGljaCByZWZlcnMgdG8KSW5k ZXg6IGluY2x1ZGUvY2xhbmcvQVNUL0RlY2wuaAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLSBpbmNsdWRlL2NsYW5nL0FTVC9EZWNsLmgKKysrIGluY2x1 ZGUvY2xhbmcvQVNUL0RlY2wuaApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1 ZGUgImxsdm0vQURUL09wdGlvbmFsLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBw b3J0L0NvbXBpbGVyLmgiCiAjaW5jbHVkZSAibGx2bS9TdXBwb3J0L3Jhd19v c3RyZWFtLmgiCisjaW5jbHVkZSAibGx2bS9TdXBwb3J0L1RyYWlsaW5nT2Jq ZWN0cy5oIgogCiBuYW1lc3BhY2UgY2xhbmcgewogc3RydWN0IEFTVFRlbXBs YXRlQXJndW1lbnRMaXN0SW5mbzsKQEAgLTM2MTMsNyArMzYxNCwxNCBAQAog CiAvLy8gXGJyaWVmIFRoaXMgcmVwcmVzZW50cyB0aGUgYm9keSBvZiBhIENh cHR1cmVkU3RtdCwgYW5kIHNlcnZlcyBhcyBpdHMKIC8vLyBEZWNsQ29udGV4 dC4KLWNsYXNzIENhcHR1cmVkRGVjbCA6IHB1YmxpYyBEZWNsLCBwdWJsaWMg RGVjbENvbnRleHQgeworY2xhc3MgQ2FwdHVyZWREZWNsIDogcHVibGljIERl Y2wsCisgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRGVjbENvbnRleHQs CisgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUcmFpbGluZ09iamVjdHMx PENhcHR1cmVkRGVjbCwgSW1wbGljaXRQYXJhbURlY2wgKj4geworcHJvdGVj dGVkOgorICBzaXplX3QgbnVtVHJhaWxpbmdPYmplY3RzKE92ZXJsb2FkVG9r ZW48SW1wbGljaXRQYXJhbURlY2w+KSB7CisgICAgcmV0dXJuIE51bVBhcmFt czsKKyAgfQorCiBwcml2YXRlOgogICAvLy8gXGJyaWVmIFRoZSBudW1iZXIg b2YgcGFyYW1ldGVycyB0byB0aGUgb3V0bGluZWQgZnVuY3Rpb24uCiAgIHVu c2lnbmVkIE51bVBhcmFtczsKQEAgLTM2MjcsOCArMzYzNSw5IEBACiAgICAg ICBOdW1QYXJhbXMoTnVtUGFyYW1zKSwgQ29udGV4dFBhcmFtKDApLCBCb2R5 QW5kTm90aHJvdyhudWxscHRyLCBmYWxzZSkgeyB9CiAKICAgSW1wbGljaXRQ YXJhbURlY2wgKipnZXRQYXJhbXMoKSBjb25zdCB7Ci0gICAgcmV0dXJuIHJl aW50ZXJwcmV0X2Nhc3Q8SW1wbGljaXRQYXJhbURlY2wgKio+KAotICAgICAg ICAgICAgIGNvbnN0X2Nhc3Q8Q2FwdHVyZWREZWNsICo+KHRoaXMpICsgMSk7 CisgICAgLy8gRklYTUU6IGRvZXNuJ3Qgc2VlbSBsaWtlIGl0IHNob3VsZCBi ZSB1c2luZyBhIGNvbnN0X2Nhc3QuCisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8 Q2FwdHVyZWREZWNsICo+KHRoaXMpCisgICAgICAgIC0+Z2V0VHJhaWxpbmdP YmplY3RzPEltcGxpY2l0UGFyYW1EZWNsICo+KCk7CiAgIH0KIAogcHVibGlj OgpAQCAtMzY4OSw2ICszNjk4LDcgQEAKIAogICBmcmllbmQgY2xhc3MgQVNU RGVjbFJlYWRlcjsKICAgZnJpZW5kIGNsYXNzIEFTVERlY2xXcml0ZXI7Cisg IGZyaWVuZCBjbGFzcyBUcmFpbGluZ09iamVjdHMxOwogfTsKIAogLy8vIFxi cmllZiBEZXNjcmliZXMgYSBtb2R1bGUgaW1wb3J0IGRlY2xhcmF0aW9uLCB3 aGljaCBtYWtlcyB0aGUgY29udGVudHMKQEAgLTM3MDEsNyArMzcxMSw4IEBA CiAvLy8KIC8vLyBJbXBvcnQgZGVjbGFyYXRpb25zIGNhbiBhbHNvIGJlIGlt cGxpY2l0bHkgZ2VuZXJhdGVkIGZyb20KIC8vLyBcI2luY2x1ZGUvXCNpbXBv cnQgZGlyZWN0aXZlcy4KLWNsYXNzIEltcG9ydERlY2wgOiBwdWJsaWMgRGVj bCB7CitjbGFzcyBJbXBvcnREZWNsIDogcHVibGljIERlY2wsCisgICAgICAg ICAgICAgICAgICAgbGx2bTo6VHJhaWxpbmdPYmplY3RzMTxJbXBvcnREZWNs LCBTb3VyY2VMb2NhdGlvbj4gewogICAvLy8gXGJyaWVmIFRoZSBpbXBvcnRl ZCBtb2R1bGUsIGFsb25nIHdpdGggYSBiaXQgdGhhdCBpbmRpY2F0ZXMgd2hl dGhlcgogICAvLy8gd2UgaGF2ZSBzb3VyY2UtbG9jYXRpb24gaW5mb3JtYXRp b24gZm9yIGVhY2ggaWRlbnRpZmllciBpbiB0aGUgbW9kdWxlCiAgIC8vLyBu YW1lLiAKQEAgLTM3MTcsNyArMzcyOCw4IEBACiAgIGZyaWVuZCBjbGFzcyBB U1RSZWFkZXI7CiAgIGZyaWVuZCBjbGFzcyBBU1REZWNsUmVhZGVyOwogICBm cmllbmQgY2xhc3MgQVNUQ29udGV4dDsKLSAgCisgIGZyaWVuZCBjbGFzcyBU cmFpbGluZ09iamVjdHMxOworCiAgIEltcG9ydERlY2woRGVjbENvbnRleHQg KkRDLCBTb3VyY2VMb2NhdGlvbiBTdGFydExvYywgTW9kdWxlICpJbXBvcnRl ZCwKICAgICAgICAgICAgICBBcnJheVJlZjxTb3VyY2VMb2NhdGlvbj4gSWRl bnRpZmllckxvY3MpOwogCg== --b1_a29efb8695a4791b02c111a9ea19dda9 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ cfe-commits mailing list cfe-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits --b1_a29efb8695a4791b02c111a9ea19dda9--