From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Takao Fujiwara To: git-commits@fedoraproject.org Subject: [rpms/ibus] autotool: Moved input focus on Emojier to engines' preedit Date: Sun, 31 May 2026 02:06:51 GMT Message-ID: <178019321180.1.9681944304768863712.rpms-ibus-6784864abcdb@fedoraproject.org> List-ID: X-Git-Repo: rpms/ibus X-Git-Branch: autotool X-Git-Rev: 6784864abcdbe87432235b803ed5a7a4484b5a8e ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvaWJ1cwogICAgICAgICAgICBCcmFuY2ggOiBhdXRvdG9vbAogICAgICAgICAg ICBDb21taXQgOiA2Nzg0ODY0YWJjZGJlODc0MzIyMzViODAzZWQ1YTdhNDQ4NGI1YThlCiAgICAg ICAgICAgIEF1dGhvciA6IFRha2FvIEZ1aml3YXJhIDx0ZnVqaXdhckByZWRoYXQuY29tPgogICAg ICAgICAgICBEYXRlICAgOiAyMDE4LTA2LTIwVDE5OjA3OjM5KzA5OjAwCiAgICAgICAgICAgIFN0 YXRzICA6ICs3Nzg5Ly0zNCBpbiAzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDogaHR0cHM6 Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9pYnVzL2MvNjc4NDg2NGFiY2RiZTg3NDMyMjM1 YjgwM2VkNWE3YTQ0ODRiNWE4ZT9icmFuY2g9YXV0b3Rvb2wKCiAgICAgICAgICAgIExvZzoKICAg ICAgICAgICAgTW92ZWQgaW5wdXQgZm9jdXMgb24gRW1vamllciB0byBlbmdpbmVzJyBwcmVlZGl0 CgotIFJlbW92ZWQgaWJ1cy14eC1lbW9qaS1oYXJmYnV6ei5wYXRjaCBub3QgdG8gY2hhbmdlIHNl c3Npb24gZW1vamkgZm9udAoKLS0tCmRpZmYgLS1naXQgYS9pYnVzLTEzODUzNDktc2Vndi1idXMt cHJveHkucGF0Y2ggYi9pYnVzLTEzODUzNDktc2Vndi1idXMtcHJveHkucGF0Y2gKaW5kZXggMDI5 MTJhNS4uOTk1YWNkZCAxMDA2NDQKLS0tIGEvaWJ1cy0xMzg1MzQ5LXNlZ3YtYnVzLXByb3h5LnBh dGNoCisrKyBiL2lidXMtMTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaApAQCAtMSw2ICsxLDYg QEAKLUZyb20gNGFkMmYxNjBlMmFmMGI3MTE0OGIzZjc3MjZlNzFmMjZhMTA3ZmYxYyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGM1Y2NkMmM5OTAwODBlNTgxZjZjZjVjNzFkOGY1NjAz YTg3YmYxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IGZ1aml3YXJhdCA8dGFrYW8u ZnVqaXdhcmExQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjEgRmViIDIwMTggMTU6MDU6MTggKzA5 MDAKK0RhdGU6IFdlZCwgMjAgSnVuIDIwMTggMTc6NDA6MTUgKzA5MDAKIFN1YmplY3Q6IFtQQVRD SF0gYnVzOiBGaXggU0VHViBpbiBidXNfcGFuZWxfcHJveHlfZm9jdXNfaW4oKQogCiBCVUc9cmhi eiMxMzQ5MTQ4CkBAIC0xMjQsMTIgKzEyNCwxMiBAQCBpbmRleCBiNTRlZjgxNy4uZTRkZDg2ODMg MTAwNjQ0CiAgICAgIGlmIChpbmNvbWluZykgewogICAgICAgICAgLyogaXMgaW5jb21pbmcgbWVz c2FnZSAqLwogZGlmZiAtLWdpdCBhL2J1cy9pYnVzaW1wbC5jIGIvYnVzL2lidXNpbXBsLmMKLWlu ZGV4IDU4ZDIwNWNmLi4zNGY2YzkwOSAxMDA2NDQKK2luZGV4IGVjMWNhZWE4Li45YWUzNzUxYiAx MDA2NDQKIC0tLSBhL2J1cy9pYnVzaW1wbC5jCiArKysgYi9idXMvaWJ1c2ltcGwuYwotQEAgLTM1 NywxMyArMzU3LDE2IEBAIF9kYnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0ltcGwg ICAqZGJ1cywKLSAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAobmFtZSwgSUJVU19TRVJWSUNFX1BB TkVMX0VYVEVOU0lPTikpCi0gICAgICAgICBwYW5lbF90eXBlID0gUEFORUxfVFlQRV9FWFRFTlNJ T047CitAQCAtNDg0LDEzICs0ODQsMTYgQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChC dXNEQnVzSW1wbCAgICpkYnVzLAorICAgICBlbHNlIGlmICghZ19zdHJjbXAwIChuYW1lLCBJQlVT X1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OX0VNT0pJKSkKKyAgICAgICAgIHBhbmVsX3R5cGUgPSBQ QU5FTF9UWVBFX0VYVEVOU0lPTl9FTU9KSTsKICAKIC0gICAgaWYgKHBhbmVsX3R5cGUgIT0gUEFO RUxfVFlQRV9OT05FKSB7CiArICAgIGRvIHsKQEAgLTE0MCwxMiArMTQwLDEyIEBAIGluZGV4IDU4 ZDIwNWNmLi4zNGY2YzkwOSAxMDA2NDQKICAgICAgICAgICAgICBCdXNDb25uZWN0aW9uICpjb25u ZWN0aW9uOwogICAgICAgICAgICAgIEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCA9IE5VTEw7CiAg ICAgICAgICAgICAgQnVzUGFuZWxQcm94eSAgICoqcGFuZWwgPSAocGFuZWxfdHlwZSA9PSBQQU5F TF9UWVBFX1BBTkVMKSA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg JmlidXMtPnBhbmVsIDogJmlidXMtPmV4dGVuc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICZpYnVzLT5wYW5lbCA6ICZpYnVzLT5lbW9qaV9leHRlbnNpb247CiAr ICAgICAgICAgICAgR0RCdXNDb25uZWN0aW9uICpkYnVzX2Nvbm5lY3Rpb24gPSBOVUxMOwogIAog ICAgICAgICAgICAgIGlmICgqcGFuZWwgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgICBpYnVz X3Byb3h5X2Rlc3Ryb3kgKChJQnVzUHJveHkgKikoKnBhbmVsKSk7Ci1AQCAtMzcyLDkgKzM3NSwy MSBAQCBfZGJ1c19uYW1lX293bmVyX2NoYW5nZWRfY2IgKEJ1c0RCdXNJbXBsICAgKmRidXMsCitA QCAtNDk5LDkgKzUwMiwyMSBAQCBfZGJ1c19uYW1lX293bmVyX2NoYW5nZWRfY2IgKEJ1c0RCdXNJ bXBsICAgKmRidXMsCiAgICAgICAgICAgICAgICAgIGdfYXNzZXJ0ICgqcGFuZWwgPT0gTlVMTCk7 CiAgICAgICAgICAgICAgfQogIApAQCAtMTY2LDkgKzE2Niw5IEBAIGluZGV4IDU4ZDIwNWNmLi4z NGY2YzkwOSAxMDA2NDQKICsgICAgICAgICAgICB9CiArCiAgICAgICAgICAgICAgKnBhbmVsID0g YnVzX3BhbmVsX3Byb3h5X25ldyAoY29ubmVjdGlvbiwgcGFuZWxfdHlwZSk7Ci0gCi0gICAgICAg ICAgICAgZ19zaWduYWxfY29ubmVjdCAoKnBhbmVsLAotQEAgLTQwNiw3ICs0MjEsNyBAQCBfZGJ1 c19uYW1lX293bmVyX2NoYW5nZWRfY2IgKEJ1c0RCdXNJbXBsICAgKmRidXMsCisgICAgICAgICAg ICAgaWYgKHBhbmVsX3R5cGUgPT0gUEFORUxfVFlQRV9FWFRFTlNJT05fRU1PSkkpCisgICAgICAg ICAgICAgICAgIGlidXMtPmVuYWJsZV9lbW9qaV9leHRlbnNpb24gPSBGQUxTRTsKK0BAIC01NTUs NyArNTcwLDcgQEAgX2RidXNfbmFtZV9vd25lcl9jaGFuZ2VkX2NiIChCdXNEQnVzSW1wbCAgICpk YnVzLAogICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgfQoKZGlm ZiAtLWdpdCBhL2lidXMtSEVBRC5wYXRjaCBiL2lidXMtSEVBRC5wYXRjaAppbmRleCA5OTM5ZmQ2 Li5lOTVjMzQ0IDEwMDY0NAotLS0gYS9pYnVzLUhFQUQucGF0Y2gKKysrIGIvaWJ1cy1IRUFELnBh dGNoCkBAIC0xMjA2LDMgKzEyMDYsNzc3MyBAQCBpbmRleCA5YTBiMWE4YS4uZmQ2MTEwMmEgMTAw NjQ0CiAtLSAKIDIuMTQuMwogCitGcm9tIDE5NjIxNmE4OWE5MTY3NDI1ZGQ5YjQxZjRmMWQ4YTQ5 NGQzNzAyNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQgPHRha2Fv LmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDExIE1heSAyMDE4IDE5OjEzOjAzICsw OTAwCitTdWJqZWN0OiBbUEFUQ0hdIHNyYzogQWRkIGlidXMta2V5cHJlc3MKKworLS0tCisgY29u ZmlndXJlLmFjICAgICAgICAgICAgICB8ICAgOCArKworIHNyYy90ZXN0cy9NYWtlZmlsZS5hbSAg ICAgfCAgIDcgKysKKyBzcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jIHwgMjk4ICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvdGVzdHMvcnVudGVzdCAg ICAgICAgIHwgICAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDMxNCBpbnNlcnRpb25zKCspCisgY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0cy9pYnVzLWtleXByZXNzLmMKKworZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDg1Y2VjYjguLmYzMzJhNzc1IDEw MDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC02MjEsNiAr NjIxLDE0IEBAIGlmIHRlc3QgeCIkZW5hYmxlX2xpYm5vdGlmeSIgPSB4InllcyI7IHRoZW4KKyAg ICAgZW5hYmxlX2xpYm5vdGlmeT0ieWVzIChlbmFibGVkLCB1c2UgLS1kaXNhYmxlLWxpYm5vdGlm eSB0byBkaXNhYmxlKSIKKyBmaQorIAorK1BLR19DSEVDS19NT0RVTEVTKFhURVNULAorKyAgICBb eDExIHh0c3RdLAorKyAgICBbZW5hYmxlX3h0ZXN0PXllc10sCisrICAgIFtlbmFibGVfeHRlc3Q9 bm9dCisrKQorK0FNX0NPTkRJVElPTkFMKFtFTkFCTEVfWFRFU1RdLCBbdGVzdCB4IiRlbmFibGVf eHRlc3QiID0geCJ5ZXMiXSkKKysKKysKKyAjIC0tZGlzYWJsZS1lbW9qaS1kaWN0IG9wdGlvbi4K KyBBQ19BUkdfRU5BQkxFKGVtb2ppLWRpY3QsCisgICAgIEFTX0hFTFBfU1RSSU5HKFstLWRpc2Fi bGUtZW1vamktZGljdF0sCitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL01ha2VmaWxlLmFtIGIvc3Jj L3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCAxMWViYjUzMS4uNWYyMWViY2QgMTAwNjQ0CistLS0g YS9zcmMvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3NyYy90ZXN0cy9NYWtlZmlsZS5hbQorQEAg LTYxLDYgKzYxLDkgQEAgZW5kaWYKKyAKKyBpZiBFTkFCTEVfR1RLMworIFRFU1RTICs9IGlidXMt Y29tcG9zZQorK2lmIEVOQUJMRV9YVEVTVAorK1RFU1RTICs9IGlidXMta2V5cHJlc3MKKytlbmRp ZgorIGVuZGlmCisgCisgVEVTVFNfRU5WSVJPTk1FTlQgPSBcCitAQCAtMTAzLDYgKzEwNiwxMCBA QCBpYnVzX2lucHV0Y29udGV4dF9jcmVhdGVfTERBREQgPSAkKHByb2dfbGRhZGQpCisgaWJ1c19r ZXluYW1lc19TT1VSQ0VTID0gaWJ1cy1rZXluYW1lcy5jCisgaWJ1c19rZXluYW1lc19MREFERCA9 ICQocHJvZ19sZGFkZCkKKyAKKytpYnVzX2tleXByZXNzX1NPVVJDRVMgPSBpYnVzLWtleXByZXNz LmMKKytpYnVzX2tleXByZXNzX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AgQFhURVNUX0NGTEFHU0AK KytpYnVzX2tleXByZXNzX0xEQUREID0gJChwcm9nX2xkYWRkKSBAR1RLM19MSUJTQCBAWFRFU1Rf TElCU0AKKysKKyBpYnVzX3JlZ2lzdHJ5X1NPVVJDRVMgPSBpYnVzLXJlZ2lzdHJ5LmMKKyBpYnVz X3JlZ2lzdHJ5X0xEQUREID0gJChwcm9nX2xkYWRkKQorIAorZGlmZiAtLWdpdCBhL3NyYy90ZXN0 cy9pYnVzLWtleXByZXNzLmMgYi9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLjM0ODY1MjNiCistLS0gL2Rldi9udWxsCisrKysg Yi9zcmMvdGVzdHMvaWJ1cy1rZXlwcmVzcy5jCitAQCAtMCwwICsxLDI5OCBAQAorKyNpbmNsdWRl IDxndGsvZ3RrLmg+CisrI2luY2x1ZGUgPGdkay9nZGt4Lmg+CisrI2luY2x1ZGUgImlidXMuaCIK KysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPFgxMS9YbGliLmg+CisrI2luY2x1ZGUg PFgxMS9leHRlbnNpb25zL1hUZXN0Lmg+CisrCisrI2RlZmluZSBHUkVFTiAiXDAzM1swOzMybSIK KysjZGVmaW5lIFJFRCAgICJcMDMzWzA7MzFtIgorKyNkZWZpbmUgTkMgICAgIlwwMzNbMG0iCisr CisrdHlwZWRlZiBzdHJ1Y3QgX0tleURhdGEgeworKyAgICBndWludCBrZXl2YWw7CisrICAgIGd1 aW50IG1vZGlmaWVyczsKKyt9IEtleURhdGE7CisrCisrc3RhdGljIGNvbnN0IEtleURhdGEgdGVz dF9jYXNlc1tdWzMwXSA9IHsKKysgICB7IHsgSUJVU19LRVlfYSwgMCB9LCB7IElCVVNfS0VZX2Nv bW1hLCBJQlVTX1NISUZUX01BU0sgfSwKKysgICAgIHsgSUJVU19LRVlfYiwgMCB9LCB7IElCVVNf S0VZX3BlcmlvZCwgSUJVU19TSElGVF9NQVNLIH0sCisrICAgICB7IElCVVNfS0VZX2MsIDAgfSwg eyBJQlVTX0tFWV9zbGFzaCwgSUJVU19TSElGVF9NQVNLIH0sCisrICAgICB7IElCVVNfS0VZX2Qs IDAgfSwgeyBJQlVTX0tFWV9zZW1pY29sb24sIElCVVNfU0hJRlRfTUFTSyB9LAorKyAgICAgeyBJ QlVTX0tFWV9lLCAwIH0sIHsgSUJVU19LRVlfYXBvc3Ryb3BoZSwgSUJVU19TSElGVF9NQVNLIH0s CisrICAgICB7IElCVVNfS0VZX2YsIDAgfSwgeyBJQlVTX0tFWV9icmFja2V0bGVmdCwgSUJVU19T SElGVF9NQVNLIH0sCisrICAgICB7IElCVVNfS0VZX2csIDAgfSwgeyBJQlVTX0tFWV9iYWNrc2xh c2gsIElCVVNfU0hJRlRfTUFTSyB9LAorKyAgICAgeyAwLCAwIH0gfSwKKysgICB7IHsgSUJVU19L RVlfZ3JhdmUsIElCVVNfU0hJRlRfTUFTSyB9LCB7IElCVVNfS0VZX2EsIElCVVNfU0hJRlRfTUFT SyB9LAorKyAgICAgeyBJQlVTX0tFWV8xLCBJQlVTX1NISUZUX01BU0sgfSwgeyBJQlVTX0tFWV9i LCBJQlVTX1NISUZUX01BU0sgIH0sCisrICAgICB7IElCVVNfS0VZXzIsIElCVVNfU0hJRlRfTUFT SyB9LCB7IElCVVNfS0VZX2MsIElCVVNfU0hJRlRfTUFTSyAgfSwKKysgICAgIHsgSUJVU19LRVlf MywgSUJVU19TSElGVF9NQVNLIH0sIHsgSUJVU19LRVlfZCwgSUJVU19TSElGVF9NQVNLIH0sCisr ICAgICB7IElCVVNfS0VZXzksIElCVVNfU0hJRlRfTUFTSyB9LCB7IElCVVNfS0VZX2UsIElCVVNf U0hJRlRfTUFTSyB9LAorKyAgICAgeyBJQlVTX0tFWV8wLCBJQlVTX1NISUZUX01BU0sgfSwgeyBJ QlVTX0tFWV9mLCBJQlVTX1NISUZUX01BU0sgfSwKKysgICAgIHsgSUJVU19LRVlfZXF1YWwsIElC VVNfU0hJRlRfTUFTSyB9LCB7IElCVVNfS0VZX2csIElCVVNfU0hJRlRfTUFTSyB9LAorKyAgICAg eyAwLCAwIH0gfSwKKysgICB7IHsgMCwgMCB9IH0KKyt9OworKworK0tleURhdGEgdGVzdF9lbmRf a2V5ID0geyBJQlVTX0tFWV96LCBJQlVTX1NISUZUX01BU0sgfTsKKysKKytzdGF0aWMgY29uc3Qg Z3VuaWNoYXIgdGVzdF9yZXN1bHRzW11bNjBdID0geworKyAgIHsgJ2EnLCAnPCcsICdiJywgJz4n LCAnYycsICc/JywgJ2QnLCAnOicsICdlJywgJyInLCAnZicsICd7JywgJ2cnLCAnfCcsIDAgfSwK KysgICB7ICd+JywgJ0EnLCAnIScsICdCJywgJ0AnLCAnQycsICcjJywgJ0QnLCAnKCcsICdFJywg JyknLCAnRicsICcrJywgJ0cnLCAwIH0sCisrICAgeyAwIH0KKyt9OworKworKworK0lCdXNCdXMg Km1fYnVzOworK0lCdXNFbmdpbmUgKm1fZW5naW5lOworKworK3N0YXRpYyBnYm9vbGVhbiB3aW5k b3dfZm9jdXNfaW5fZXZlbnRfY2IgKEd0a1dpZGdldCAgICAgKmVudHJ5LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdka0V2ZW50Rm9jdXMgKmV2ZW50LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyICAgICAgIGRh dGEpOworKworK3N0YXRpYyBJQnVzRW5naW5lICoKKytjcmVhdGVfZW5naW5lX2NiIChJQnVzRmFj dG9yeSAqZmFjdG9yeSwgY29uc3QgZ2NoYXIgKm5hbWUsIGdwb2ludGVyIGRhdGEpCisreworKyAg ICBzdGF0aWMgaW50IGkgPSAxOworKyAgICBnY2hhciAqZW5naW5lX3BhdGggPQorKyAgICAgICAg ICAgIGdfc3RyZHVwX3ByaW50ZiAoIi9vcmcvZnJlZWRlc2t0b3AvSUJ1cy9lbmdpbmUvc2ltcGxl dGVzdC8lZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKyspOworKworKyAgICBt X2VuZ2luZSA9IGlidXNfZW5naW5lX25ld193aXRoX3R5cGUgKElCVVNfVFlQRV9FTkdJTkVfU0lN UExFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lX3BhdGgsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1c19idXNfZ2V0X2Nv bm5lY3Rpb24gKG1fYnVzKSk7CisrICAgIGdfZnJlZSAoZW5naW5lX3BhdGgpOworKyAgICByZXR1 cm4gbV9lbmdpbmU7CisrfQorKworK3N0YXRpYyBnYm9vbGVhbgorK3JlZ2lzdGVyX2lidXNfZW5n aW5lICgpCisreworKyAgICBJQnVzRmFjdG9yeSAqZmFjdG9yeTsKKysgICAgSUJ1c0NvbXBvbmVu dCAqY29tcG9uZW50OworKyAgICBJQnVzRW5naW5lRGVzYyAqZGVzYzsKKysKKysgICAgbV9idXMg PSBpYnVzX2J1c19uZXcgKCk7CisrICAgIGlmICghaWJ1c19idXNfaXNfY29ubmVjdGVkIChtX2J1 cykpIHsKKysgICAgICAgIGdfY3JpdGljYWwgKCJpYnVzLWRhZW1vbiBpcyBub3QgcnVubmluZy4i KTsKKysgICAgICAgIHJldHVybiBGQUxTRTsKKysgICAgfQorKyAgICBmYWN0b3J5ID0gaWJ1c19m YWN0b3J5X25ldyAoaWJ1c19idXNfZ2V0X2Nvbm5lY3Rpb24gKG1fYnVzKSk7CisrICAgIGdfc2ln bmFsX2Nvbm5lY3QgKGZhY3RvcnksICJjcmVhdGUtZW5naW5lIiwKKysgICAgICAgICAgICAgICAg ICAgICAgR19DQUxMQkFDSyAoY3JlYXRlX2VuZ2luZV9jYiksIE5VTEwpOworKworKyAgICBjb21w b25lbnQgPSBpYnVzX2NvbXBvbmVudF9uZXcgKAorKyAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0 b3AuSUJ1cy5TaW1wbGVUZXN0IiwKKysgICAgICAgICAgICAiU2ltcGxlIEVuZ2luZSBUZXN0IiwK KysgICAgICAgICAgICAiMC4wLjEiLAorKyAgICAgICAgICAgICJHUEwiLAorKyAgICAgICAgICAg ICJUYWthbyBGdWppd2FyYSA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4iLAorKyAgICAgICAg ICAgICJodHRwczovL2dpdGh1Yi5jb20vaWJ1cy9pYnVzL3dpa2kiLAorKyAgICAgICAgICAgICIi LAorKyAgICAgICAgICAgICJpYnVzIik7CisrICAgIGRlc2MgPSBpYnVzX2VuZ2luZV9kZXNjX25l dyAoCisrICAgICAgICAgICAgInhrYnRlc3Q6dXM6OmVuZyIsCisrICAgICAgICAgICAgIlhLQiBU ZXN0IiwKKysgICAgICAgICAgICAiWEtCIFRlc3QiLAorKyAgICAgICAgICAgICJlbiIsCisrICAg ICAgICAgICAgIkdQTCIsCisrICAgICAgICAgICAgIlRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPiIsCisrICAgICAgICAgICAgImlidXMtZW5naW5lIiwKKysgICAgICAg ICAgICAidXMiKTsKKysgICAgaWJ1c19jb21wb25lbnRfYWRkX2VuZ2luZSAoY29tcG9uZW50LCBk ZXNjKTsKKysgICAgaWJ1c19idXNfcmVnaXN0ZXJfY29tcG9uZW50IChtX2J1cywgY29tcG9uZW50 KTsKKysKKysgICAgcmV0dXJuIFRSVUU7CisrfQorKworK3N0YXRpYyBnYm9vbGVhbgorK2Zpbml0 IChncG9pbnRlciBkYXRhKQorK3sKKysgICAgZ19jcml0aWNhbCAoInRpbWUgb3V0Iik7CisrICAg IGd0a19tYWluX3F1aXQgKCk7CisrICAgIHJldHVybiBGQUxTRTsKKyt9CisrCisrc3RhdGljIHZv aWQKKytzZW5kX2tleV9ldmVudCAoRGlzcGxheSAqeGRpc3BsYXksCisrICAgICAgICAgICAgICAg IGd1aW50ICAgIGtleXZhbCwKKysgICAgICAgICAgICAgICAgZ3VpbnQgICAgbW9kaWZpZXJzKQor K3sKKysgICAgc3RhdGljIHN0cnVjdCB7CisrICAgICAgICBndWludCAgIHN0YXRlOworKyAgICAg ICAgS2V5U3ltICBrZXlzeW07CisrICAgIH0gc3RhdGUya2V5c3ltW10gPSB7CisrICAgICAgICB7 IElCVVNfQ09OVFJPTF9NQVNLLCBYS19Db250cm9sX0wgfSAsCisrICAgICAgICB7IElCVVNfTU9E MV9NQVNLLCAgICBYS19BbHRfTCB9LAorKyAgICAgICAgeyBJQlVTX01PRDRfTUFTSywgICAgWEtf U3VwZXJfTCB9LAorKyAgICAgICAgeyBJQlVTX1NISUZUX01BU0ssICAgWEtfU2hpZnRfTCB9LAor KyAgICAgICAgeyBJQlVTX0xPQ0tfTUFTSywgICAgWEtfQ2Fwc19Mb2NrIH0sCisrICAgICAgICB7 IDAsICAgICAgICAgICAwTCB9CisrICAgIH07CisrICAgIGludCBpOworKyAgICBndWludCBrZXlj b2RlOworKyAgICBndWludCBzdGF0ZSA9IG1vZGlmaWVyczsKKysKKysgICAgd2hpbGUgKHN0YXRl KSB7CisrICAgICAgICBmb3IgKGkgPSAwOyBzdGF0ZTJrZXlzeW1baV0uc3RhdGU7IGkrKykgewor KyAgICAgICAgICAgIGlmICgoc3RhdGUya2V5c3ltW2ldLnN0YXRlICYgc3RhdGUpICE9IDApIHsK KysgICAgICAgICAgICAgICAga2V5Y29kZSA9IFhLZXlzeW1Ub0tleWNvZGUgKHhkaXNwbGF5LCBz dGF0ZTJrZXlzeW1baV0ua2V5c3ltKTsKKysgICAgICAgICAgICAgICAgWFRlc3RGYWtlS2V5RXZl bnQgKHhkaXNwbGF5LCBrZXljb2RlLCBUcnVlLCBDdXJyZW50VGltZSk7CisrICAgICAgICAgICAg ICAgIFhTeW5jICh4ZGlzcGxheSwgRmFsc2UpOworKyAgICAgICAgICAgICAgICBzdGF0ZSBePSBz dGF0ZTJrZXlzeW1baV0uc3RhdGU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAg ICAgIH0KKysgICAgICAgIH0KKysgICAgfQorKyAgICBrZXljb2RlID0gWEtleXN5bVRvS2V5Y29k ZSAoeGRpc3BsYXksIGtleXZhbCk7CisrICAgIFhUZXN0RmFrZUtleUV2ZW50ICh4ZGlzcGxheSwg a2V5Y29kZSwgVHJ1ZSwgQ3VycmVudFRpbWUpOworKyAgICBYU3luYyAoeGRpc3BsYXksIEZhbHNl KTsKKysgICAgWFRlc3RGYWtlS2V5RXZlbnQgKHhkaXNwbGF5LCBrZXljb2RlLCBGYWxzZSwgQ3Vy cmVudFRpbWUpOworKyAgICBYU3luYyAoeGRpc3BsYXksIEZhbHNlKTsKKysKKysgICAgc3RhdGUg PSBtb2RpZmllcnM7CisrICAgIHdoaWxlIChzdGF0ZSkgeworKyAgICAgICAgZm9yIChpID0gR19O X0VMRU1FTlRTIChzdGF0ZTJrZXlzeW0pIC0gMTsgaSA+PSAwOyBpLS0pIHsKKysgICAgICAgICAg ICBpZiAoKHN0YXRlMmtleXN5bVtpXS5zdGF0ZSAmIHN0YXRlKSAhPSAwKSB7CisrICAgICAgICAg ICAgICAgIGtleWNvZGUgPSBYS2V5c3ltVG9LZXljb2RlICh4ZGlzcGxheSwgc3RhdGUya2V5c3lt W2ldLmtleXN5bSk7CisrICAgICAgICAgICAgICAgIFhUZXN0RmFrZUtleUV2ZW50ICh4ZGlzcGxh eSwga2V5Y29kZSwgRmFsc2UsIEN1cnJlbnRUaW1lKTsKKysgICAgICAgICAgICAgICAgWFN5bmMg KHhkaXNwbGF5LCBGYWxzZSk7CisrICAgICAgICAgICAgICAgIHN0YXRlIF49IHN0YXRlMmtleXN5 bVtpXS5zdGF0ZTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgfQorKyAgICB9CisrfQorKworK3N0YXRpYyB2b2lkCisrc2V0X2VuZ2luZV9jYiAoR09i amVjdCAgICAgICpvYmplY3QsCisrICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICpyZXMsCisr ICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICBkYXRhKQorK3sKKysgICAgSUJ1c0J1cyAqYnVz ID0gSUJVU19CVVMgKG9iamVjdCk7CisrICAgIEd0a1dpZGdldCAqZW50cnkgPSBHVEtfV0lER0VU IChkYXRhKTsKKysgICAgR2RrRGlzcGxheSAqZGlzcGxheTsKKysgICAgRGlzcGxheSAqeGRpc3Bs YXk7CisrICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKyAgICBpbnQgaSwgajsKKysKKysgICAg Z19hc3NlcnQgKEdUS19JU19FTlRSWSAoZW50cnkpKTsKKysKKysgICAgaWYgKCFpYnVzX2J1c19z ZXRfZ2xvYmFsX2VuZ2luZV9hc3luY19maW5pc2ggKGJ1cywgcmVzLCAmZXJyb3IpKSB7CisrICAg ICAgICBnX2NyaXRpY2FsICgic2V0IGVuZ2luZSBmYWlsZWQ6ICVzIiwgZXJyb3ItPm1lc3NhZ2Up OworKyAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisrICAgICAgICByZXR1cm47CisrICAg IH0KKysKKysgICAgZGlzcGxheSA9IGd0a193aWRnZXRfZ2V0X2Rpc3BsYXkgKGVudHJ5KTsKKysg ICAgaWYgKEdES19JU19YMTFfRElTUExBWSAoZGlzcGxheSkpIHsKKysgICAgICAgIHhkaXNwbGF5 ID0gZ2RrX3gxMV9kaXNwbGF5X2dldF94ZGlzcGxheSAoZGlzcGxheSk7CisrICAgIH0gZWxzZSB7 CisrI2lmIDAKKysgICAgICAgIHhkaXNwbGF5ID0gWE9wZW5EaXNwbGF5IChOVUxMKTsKKysjZWxz ZQorKyAgICAgICAgZ19jcml0aWNhbCAoIk5vIGlkZWEgdG8gc2ltdWxhdGUga2V5IGV2ZW50cyBp biBXYXlsYW5kXG4iKTsKKysjZW5kaWYKKysgICAgfQorKyAgICBnX3JldHVybl9pZl9mYWlsICh4 ZGlzcGxheSk7CisrCisrICAgIGZvciAoaSA9IDA7IHRlc3RfY2FzZXNbaV1bMF0ua2V5dmFsOyBp KyspIHsKKysgICAgICAgIGZvciAoaiA9IDA7IHRlc3RfY2FzZXNbaV1bal0ua2V5dmFsOyBqKysp IHsKKysgICAgICAgICAgICBzZW5kX2tleV9ldmVudCAoeGRpc3BsYXksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRlc3RfY2FzZXNbaV1bal0ua2V5dmFsLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0ZXN0X2Nhc2VzW2ldW2pdLm1vZGlmaWVycyk7CisrICAgICAgICB9Cisr ICAgICAgICBzZW5kX2tleV9ldmVudCAoeGRpc3BsYXksIHRlc3RfZW5kX2tleS5rZXl2YWwsIHRl c3RfZW5kX2tleS5tb2RpZmllcnMpOworKyAgICB9CisrCisrICAgIGdfdGltZW91dF9hZGRfc2Vj b25kcyAoMTAsIGZpbml0LCBOVUxMKTsKKyt9CisrCisrc3RhdGljIGdib29sZWFuCisrd2luZG93 X2ZvY3VzX2luX2V2ZW50X2NiIChHdGtXaWRnZXQgKmVudHJ5LCBHZGtFdmVudEZvY3VzICpldmVu dCwgZ3BvaW50ZXIgZGF0YSkKKyt7CisrICAgIGdfYXNzZXJ0IChtX2J1cyAhPSBOVUxMKTsKKysg ICAgaWJ1c19idXNfc2V0X2dsb2JhbF9lbmdpbmVfYXN5bmMgKG1fYnVzLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgInhrYnRlc3Q6dXM6OmVuZyIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzZXRfZW5naW5lX2NiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZW50cnkpOworKyAgICByZXR1cm4gRkFMU0U7CisrfQorKworK3N0YXRpYyB2b2lkCisrd2lu ZG93X2luc2VydGVkX3RleHRfY2IgKEd0a0VudHJ5QnVmZmVyICpidWZmZXIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBwb3NpdGlvbiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgKmNoYXJzLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICBndWludCAgICAgICAgICAgbmNoYXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBn cG9pbnRlciAgICAgICAgZGF0YSkKKyt7CisrICAgIEd0a1dpZGdldCAqZW50cnkgPSBkYXRhOwor KyAgICBzdGF0aWMgaW50IGkgPSAwOworKyAgICBzdGF0aWMgaW50IGogPSAwOworKworKyAgICBp ZiAoZ191dGY4X2dldF9jaGFyIChjaGFycykgPT0gJ1onKSB7CisrICAgICAgICBpbnQgazsKKysg ICAgICAgIGdfcHJpbnQgKCJcbiIgR1JFRU4gIlBBU1MiIE5DICI6ICIpOworKyAgICAgICAgZm9y IChrID0gMDsgayA8IGo7IGsrKykKKysgICAgICAgICAgICBnX3ByaW50ICgiJWxjKCVYKSAiLCB0 ZXN0X3Jlc3VsdHNbaV1ba10sIHRlc3RfcmVzdWx0c1tpXVtrXSk7CisrICAgICAgICBnX3ByaW50 ICgiXG4iKTsKKysgICAgICAgIGkrKzsKKysgICAgICAgIGogPSAwOworKyAgICAgICAgaWYgKHRl c3RfcmVzdWx0c1tpXVswXSA9PSAwKQorKyAgICAgICAgICAgIGd0a19tYWluX3F1aXQgKCk7Cisr ICAgICAgICBlbHNlCisrICAgICAgICAgICAgZ3RrX2VudHJ5X3NldF90ZXh0IChHVEtfRU5UUlkg KGVudHJ5KSwgIiIpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrICAgIGdfYXNzZXJ0IChn X3V0ZjhfZ2V0X2NoYXIgKGNoYXJzKSA9PSB0ZXN0X3Jlc3VsdHNbaV1bal0pOworKyAgICBqKys7 CisrfQorKworK3N0YXRpYyB2b2lkCisrY3JlYXRlX3dpbmRvdyAoKQorK3sKKysgICAgR3RrV2lk Z2V0ICp3aW5kb3cgPSBndGtfd2luZG93X25ldyAoR1RLX1dJTkRPV19UT1BMRVZFTCk7CisrICAg IEd0a1dpZGdldCAqZW50cnkgPSBndGtfZW50cnlfbmV3ICgpOworKyAgICBHdGtFbnRyeUJ1ZmZl ciAqYnVmZmVyOworKworKyAgICBnX3NpZ25hbF9jb25uZWN0ICh3aW5kb3csICJkZXN0cm95IiwK KysgICAgICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAoZ3RrX21haW5fcXVpdCksIE5VTEwp OworKyAgICBnX3NpZ25hbF9jb25uZWN0IChlbnRyeSwgImZvY3VzLWluLWV2ZW50IiwKKysgICAg ICAgICAgICAgICAgICAgICAgR19DQUxMQkFDSyAod2luZG93X2ZvY3VzX2luX2V2ZW50X2NiKSwg TlVMTCk7CisrICAgIGJ1ZmZlciA9IGd0a19lbnRyeV9nZXRfYnVmZmVyIChHVEtfRU5UUlkgKGVu dHJ5KSk7CisrICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1ZmZlciwgImluc2VydGVkLXRleHQiLAor KyAgICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLICh3aW5kb3dfaW5zZXJ0ZWRfdGV4dF9j YiksIGVudHJ5KTsKKysgICAgZ3RrX2NvbnRhaW5lcl9hZGQgKEdUS19DT05UQUlORVIgKHdpbmRv dyksIGVudHJ5KTsKKysgICAgZ3RrX3dpZGdldF9zaG93X2FsbCAod2luZG93KTsKKyt9CisrCisr c3RhdGljIHZvaWQKKyt0ZXN0X2tleXByZXNzICh2b2lkKQorK3sKKysgICAgaW50IHN0YXR1cyA9 IDA7CisrICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworKworKyAgICBnX3NwYXduX2NvbW1hbmRf bGluZV9zeW5jICgic2V0eGtibWFwIC1sYXlvdXQgdXMiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBOVUxMLCBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm c3RhdHVzLCAmZXJyb3IpOworKyAgICBnX2Fzc2VydCAocmVnaXN0ZXJfaWJ1c19lbmdpbmUgKCkp OworKworKyAgICBjcmVhdGVfd2luZG93ICgpOworKyAgICBndGtfbWFpbiAoKTsKKyt9CisrCisr aW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyt7CisrICAgIGlidXNfaW5pdCAo KTsKKysgICAgZ190ZXN0X2luaXQgKCZhcmdjLCAmYXJndiwgTlVMTCk7CisrICAgIGd0a19pbml0 ICgmYXJnYywgJmFyZ3YpOworKworKyAgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvaWJ1cy9rZXlyZXBz cyIsIHRlc3Rfa2V5cHJlc3MpOworKworKworKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKKyt9 CitkaWZmIC0tZ2l0IGEvc3JjL3Rlc3RzL3J1bnRlc3QgYi9zcmMvdGVzdHMvcnVudGVzdAoraW5k ZXggMzU4MjViMWIuLmI2Yjg0NWQ2IDEwMDc1NQorLS0tIGEvc3JjL3Rlc3RzL3J1bnRlc3QKKysr KyBiL3NyYy90ZXN0cy9ydW50ZXN0CitAQCAtMzIsNiArMzIsNyBAQCBpYnVzLWlucHV0Y29udGV4 dAorIGlidXMtaW5wdXRjb250ZXh0LWNyZWF0ZQorIGlidXMtZW5naW5lLXN3aXRjaAorIGlidXMt Y29tcG9zZQorK2lidXMta2V5cHJlc3MKKyB0ZXN0LXN0cmVzcworICIKKyBJQlVTX1NDSEVNQV9G SUxFPSdvcmcuZnJlZWRlc2t0b3AuaWJ1cy5nc2NoZW1hLnhtbCcKKy0tIAorMi4xNC4zCisKK0Zy b20gOGFiMGI2MDNiYTFjZDg3MDE1ODNhZWU0NmM3MTI4OThkNTIwMDVmMSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNvbT4K K0RhdGU6IFdlZCwgMjMgTWF5IDIwMTggMTk6MjA6MTAgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0g YnVzOiBGaXggYSBTRUdWIGluIGJ1c19pbnB1dF9jb250ZXh0X2VtaXRfc2lnbmFsCisKK0lCdXMg ZW5naW5lcyBjYW4gY2FsbCAnUmVxdWlyZVN1cnJvdW5kaW5nVGV4dCcgZm9yIGEgZmFrZSBpbnB1 dCBjb250ZXh0CitpZiB0aGVyZSBpcyBubyBpbnB1dCBmb2N1cy4KKy0tLQorIGJ1cy9pbnB1dGNv bnRleHQuYyB8IDQgKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2J1cy9pbnB1dGNvbnRleHQuYyBiL2J1cy9pbnB1dGNv bnRleHQuYworaW5kZXggYTk1N2QxMDcuLmRmYjk4YzM2IDEwMDY0NAorLS0tIGEvYnVzL2lucHV0 Y29udGV4dC5jCisrKysgYi9idXMvaW5wdXRjb250ZXh0LmMKK0BAIC03MTYsNyArNzE2LDkgQEAg YnVzX2lucHV0X2NvbnRleHRfZW1pdF9zaWduYWwgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICAgICAgICAgKiplcnJvcikK KyB7CisgICAgIGlmIChjb250ZXh0LT5jb25uZWN0aW9uID09IE5VTEwpIHsKKy0gICAgICAgIGdf dmFyaWFudF91bnJlZiAocGFyYW1ldGVycyk7CisrICAgICAgICAvKiBmYWtlIGNvbnRleHQgaGFz IG5vIGNvbm5lY3Rpb25zLiAqLworKyAgICAgICAgaWYgKHBhcmFtZXRlcnMpCisrICAgICAgICAg ICAgZ192YXJpYW50X3VucmVmIChwYXJhbWV0ZXJzKTsKKyAgICAgICAgIHJldHVybiBUUlVFOwor ICAgICB9CisgCistLSAKKzIuMTQuMworCitGcm9tIGExZjkxYjI3MTQ1YjA0NmExMTJiYjVlYmEy NTYxODgwZGFlNWQ2YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBmdWppd2FyYXQg PHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDQgSnVuIDIwMTggMTc6NDQ6 MTcgKzA5MDAKK1N1YmplY3Q6IFtQQVRDSF0gdWkvZ3RrMzogR2V0IFBhbmdvQXR0ckxpc3Qgb2Yg YXV4aWxpYXJ5IHRleHQgZnJvbQorIElCdXNUZXh0CisKK1NpbmNlIElCdXMgYXV4aWxpYXJ5IHRl eHQgd291bGQgYmUgb25lIGxpbmUsIGl0J3MgYmV0dGVyIHRvIHNob3cgdGhlCitjaGFyYWN0ZXIg YXR0cmlidXRlcyBsaWtlcyBjb2xvciwgaXRhbGljLCBib2xkLCBvbiB0aGUgYXV4aWxpYXJ5IHRl eHQuCisKK0Fsc28gZGVsZXRlZCB0aGUgY3Vyc29yIHdpZHRoIGZyb20gdGhlIFggcG9zaXRpb24g b2YgQ2FuZGlkYXRlUGFuZWwKK2JlY2F1c2UgSUJ1cyBwcmVlZGl0IG92ZXJyaWRlcyB0aGUgb3Jp Z2luYWwgY3Vyc29yIG9mIHRoZSBhcHBsaWNhdGlvbnMuCistLS0KKyB1aS9ndGszL2NhbmRpZGF0 ZXBhbmVsLnZhbGEgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZh bGEgYi91aS9ndGszL2NhbmRpZGF0ZXBhbmVsLnZhbGEKK2luZGV4IGVjMmQzZGI0Li5kNDA0YzY1 OSAxMDA2NDQKKy0tLSBhL3VpL2d0azMvY2FuZGlkYXRlcGFuZWwudmFsYQorKysrIGIvdWkvZ3Rr My9jYW5kaWRhdGVwYW5lbC52YWxhCitAQCAtMyw3ICszLDcgQEAKKyAgKiBpYnVzIC0gVGhlIElu cHV0IEJ1cworICAqCisgICogQ29weXJpZ2h0KGMpIDIwMTEtMjAxNSBQZW5nIEh1YW5nIDxzaGF3 bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0gKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE3IFRha2FvIEZ1 aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodChjKSAyMDE1 LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisgICoKKyAg KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yCisgICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH ZW5lcmFsIFB1YmxpYworQEAgLTE1Myw2ICsxNTMsOCBAQCBwdWJsaWMgY2xhc3MgQ2FuZGlkYXRl UGFuZWwgOiBHdGsuQm94eworICAgICBwdWJsaWMgdm9pZCBzZXRfYXV4aWxpYXJ5X3RleHQoSUJ1 cy5UZXh0PyB0ZXh0KSB7CisgICAgICAgICBpZiAodGV4dCAhPSBudWxsKSB7CisgICAgICAgICAg ICAgbV9hdXhfbGFiZWwuc2V0X3RleHQodGV4dC5nZXRfdGV4dCgpKTsKKysgICAgICAgICAgICBQ YW5nby5BdHRyTGlzdCBhdHRycyA9IGdldF9wYW5nb19hdHRyX2xpc3RfZnJvbV9pYnVzX3RleHQo dGV4dCk7CisrICAgICAgICAgICAgbV9hdXhfbGFiZWwuc2V0X2F0dHJpYnV0ZXMoYXR0cnMpOwor ICAgICAgICAgICAgIG1fYXV4X2xhYmVsLnNob3coKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAg ICAgICAgICAgbV9hdXhfbGFiZWwuc2V0X3RleHQoIiIpOworQEAgLTMxNCw3ICszMTYsNyBAQCBw dWJsaWMgY2xhc3MgQ2FuZGlkYXRlUGFuZWwgOiBHdGsuQm94eworIAorICAgICBwcml2YXRlIHZv aWQgYWRqdXN0X3dpbmRvd19wb3NpdGlvbl9ob3Jpem9udGFsKCkgeworICAgICAgICAgR2RrLlBv aW50IGN1cnNvcl9yaWdodF9ib3R0b20gPSB7CistICAgICAgICAgICAgICAgIG1fY3Vyc29yX2xv Y2F0aW9uLnggKyBtX2N1cnNvcl9sb2NhdGlvbi53aWR0aCwKKysgICAgICAgICAgICAgICAgbV9j dXJzb3JfbG9jYXRpb24ueCwKKyAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSAr IG1fY3Vyc29yX2xvY2F0aW9uLmhlaWdodAorICAgICAgICAgfTsKKyAKKy0tIAorMi4xNC4zCisK K0Zyb20gY2Y0ZTJmMWQ4MTViNzAwYjA0NzAzODBlMGZmNDI4ZmYyNjZjYzE4YSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmExQGdtYWlsLmNv bT4KK0RhdGU6IFRodSwgMTQgSnVuIDIwMTggMTc6Mjk6MDYgKzA5MDAKK1N1YmplY3Q6IFtQQVRD SF0gYnVzOiBSZW5hbWUgcGFuZWwtZXh0ZW5zaW9uIHRvIGVtb2ppLWV4dGVuc2lvbiBmb3IgQ0xJ CisKKy0tLQorIGJ1cy9tYWluLmMgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idXMvbWFp bi5jIGIvYnVzL21haW4uYworaW5kZXggZTFjYzQyM2IuLjJmYjM3YjY5IDEwMDY0NAorLS0tIGEv YnVzL21haW4uYworKysrIGIvYnVzL21haW4uYworQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGdi b29sZWFuIHhpbSA9IEZBTFNFOworIHN0YXRpYyBnYm9vbGVhbiByZXBsYWNlID0gRkFMU0U7Cisg c3RhdGljIGdib29sZWFuIHJlc3RhcnQgPSBGQUxTRTsKKyBzdGF0aWMgZ2NoYXIgKnBhbmVsID0g ImRlZmF1bHQiOworLXN0YXRpYyBnY2hhciAqcGFuZWxfZXh0ZW5zaW9uID0gImRlZmF1bHQiOwor K3N0YXRpYyBnY2hhciAqZW1vamlfZXh0ZW5zaW9uID0gImRlZmF1bHQiOworIHN0YXRpYyBnY2hh ciAqY29uZmlnID0gImRlZmF1bHQiOworIHN0YXRpYyBnY2hhciAqZGVza3RvcCA9ICJnbm9tZSI7 CisgCitAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgY29uc3QgR09wdGlvbkVudHJ5IGVudHJpZXNb XSA9CisgICAgIHsgInhpbSIsICAgICAgICd4JywgMCwgR19PUFRJT05fQVJHX05PTkUsICAgJnhp bSwgICAgICAgImV4ZWN1dGUgaWJ1cyBYSU0gc2VydmVyLiIsIE5VTEwgfSwKKyAgICAgeyAiZGVz a3RvcCIsICAgJ24nLCAwLCBHX09QVElPTl9BUkdfU1RSSU5HLCAmZGVza3RvcCwgICAic3BlY2lm eSB0aGUgbmFtZSBvZiBkZXNrdG9wIHNlc3Npb24uIFtkZWZhdWx0PWdub21lXSIsICJuYW1lIiB9 LAorICAgICB7ICJwYW5lbCIsICAgICAncCcsIDAsIEdfT1BUSU9OX0FSR19TVFJJTkcsICZwYW5l bCwgICAgICJzcGVjaWZ5IHRoZSBjbWRsaW5lIG9mIHBhbmVsIHByb2dyYW0uIHBhc3MgJ2Rpc2Fi bGUnIG5vdCB0byBzdGFydCBhIHBhbmVsIHByb2dyYW0uIiwgImNtZGxpbmUiIH0sCistICAgIHsg InBhbmVsLWV4dGVuc2lvbiIsICdFJywgMCwgR19PUFRJT05fQVJHX1NUUklORywgJnBhbmVsX2V4 dGVuc2lvbiwgInNwZWNpZnkgdGhlIGNtZGxpbmUgb2YgcGFuZWwgZXh0ZW5zaW9uIHByb2dyYW0u IHBhc3MgJ2Rpc2FibGUnIG5vdCB0byBzdGFydCBhbiBleHRlbnNpb24gcHJvZ3JhbS4iLCAiY21k bGluZSIgfSwKKysgICAgeyAiZW1vamktZXh0ZW5zaW9uIiwgJ0UnLCAwLCBHX09QVElPTl9BUkdf U1RSSU5HLCAmZW1vamlfZXh0ZW5zaW9uLCAic3BlY2lmeSB0aGUgY21kbGluZSBvZiBlbW9qaSBl eHRlbnNpb24gcHJvZ3JhbS4gcGFzcyAnZGlzYWJsZScgbm90IHRvIHN0YXJ0IGFuIGV4dGVuc2lv biBwcm9ncmFtLiIsICJjbWRsaW5lIiB9LAorICAgICB7ICJjb25maWciLCAgICAnYycsIDAsIEdf T1BUSU9OX0FSR19TVFJJTkcsICZjb25maWcsICAgICJzcGVjaWZ5IHRoZSBjbWRsaW5lIG9mIGNv bmZpZyBwcm9ncmFtLiBwYXNzICdkaXNhYmxlJyBub3QgdG8gc3RhcnQgYSBjb25maWcgcHJvZ3Jh bS4iLCAiY21kbGluZSIgfSwKKyAgICAgeyAiYWRkcmVzcyIsICAgJ2EnLCAwLCBHX09QVElPTl9B UkdfU1RSSU5HLCAmZ19hZGRyZXNzLCAgICJzcGVjaWZ5IHRoZSBhZGRyZXNzIG9mIGlidXMgZGFl bW9uLiIsICJhZGRyZXNzIiB9LAorICAgICB7ICJyZXBsYWNlIiwgICAncicsIDAsIEdfT1BUSU9O X0FSR19OT05FLCAgICZyZXBsYWNlLCAgICJpZiB0aGVyZSBpcyBhbiBvbGQgaWJ1cy1kYWVtb24g aXMgcnVubmluZywgaXQgd2lsbCBiZSByZXBsYWNlZC4iLCBOVUxMIH0sCitAQCAtMjQ1LDcgKzI0 NSw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQorICAgICBidXNfc2VydmVyX2lu aXQgKCk7CisgICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMocGFuZWxfZXh0ZW5zaW9u X2Rpc2FibGVfdXNlcnMpOyBpKyspIHsKKyAgICAgICAgIGlmICghZ19zdHJjbXAwICh1c2VybmFt ZSwgcGFuZWxfZXh0ZW5zaW9uX2Rpc2FibGVfdXNlcnNbaV0pICE9IDApIHsKKy0gICAgICAgICAg ICBwYW5lbF9leHRlbnNpb24gPSAiZGlzYWJsZSI7CisrICAgICAgICAgICAgZW1vamlfZXh0ZW5z aW9uID0gImRpc2FibGUiOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgfQorICAgICB9 CitAQCAtMjg2LDcgKzI4Niw3IEBAIG1haW4gKGdpbnQgYXJnYywgZ2NoYXIgKiphcmd2KQorICAg ICB9CisgCisgI2lmZGVmIEVNT0pJX0RJQ1QKKy0gICAgaWYgKGdfc3RyY21wMCAocGFuZWxfZXh0 ZW5zaW9uLCAiZGVmYXVsdCIpID09IDApIHsKKysgICAgaWYgKGdfc3RyY21wMCAoZW1vamlfZXh0 ZW5zaW9uLCAiZGVmYXVsdCIpID09IDApIHsKKyAgICAgICAgIEJ1c0NvbXBvbmVudCAqY29tcG9u ZW50OworICAgICAgICAgY29tcG9uZW50ID0gYnVzX2lidXNfaW1wbF9sb29rdXBfY29tcG9uZW50 X2J5X25hbWUgKAorICAgICAgICAgICAgICAgICBCVVNfREVGQVVMVF9JQlVTLCBJQlVTX1NFUlZJ Q0VfUEFORUxfRVhURU5TSU9OKTsKK0BAIC0yOTgsOSArMjk4LDkgQEAgbWFpbiAoZ2ludCBhcmdj LCBnY2hhciAqKmFyZ3YpCisgICAgICAgICAgICAgZ19wcmludGVyciAoIkNhbiBub3QgZXhlY3V0 ZSBkZWZhdWx0IHBhbmVsIHByb2dyYW1cbiIpOworICAgICAgICAgICAgIGV4aXQgKC0xKTsKKyAg ICAgICAgIH0KKy0gICAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKHBhbmVsX2V4dGVuc2lvbiwgImRp c2FibGUiKSAhPSAwICYmCistICAgICAgICAgICAgICAgZ19zdHJjbXAwIChwYW5lbF9leHRlbnNp b24sICIiKSAhPSAwKSB7CistICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAocGFuZWxfZXh0 ZW5zaW9uKSkKKysgICAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKGVtb2ppX2V4dGVuc2lvbiwgImRp c2FibGUiKSAhPSAwICYmCisrICAgICAgICAgICAgICAgZ19zdHJjbXAwIChlbW9qaV9leHRlbnNp b24sICIiKSAhPSAwKSB7CisrICAgICAgICBpZiAoIWV4ZWN1dGVfY21kbGluZSAoZW1vamlfZXh0 ZW5zaW9uKSkKKyAgICAgICAgICAgICBleGl0ICgtMSk7CisgICAgIH0KKyAjZW5kaWYKKy0tIAor Mi4xNC4zCisKK0Zyb20gZGRjMjI4NDIwMDk3MTE0MTk0N2EzNzA1NzM1NmI0YmJkODRiZTdjZSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IGZ1aml3YXJhdCA8dGFrYW8uZnVqaXdhcmEx QGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTQgSnVuIDIwMTggMTg6MzA6NDYgKzA5MDAKK1N1Ympl Y3Q6IFtQQVRDSF0gdG9vbHM6IEFkZCBpYnVzIHJlYWQtY29uZmlnIC0tZW5naW5lLWlkIG9wdGlv biBmb3IgZW5naW5lCisgc2NoZW1hcworCitGaXhlZCBpYnVzIHJlYWQtY29uZmlnIGFuZCByZXNl dC1jb25maWcgb3B0aW9ucyBhbmQgYWxzbyBhZGRlZCAtLWVuZ2luZS1pZAorc3ViIG9wdGlvbiBm b3IgZW5naW5lIHNjaGVtYXMuCitFLmcuCislIGlidXMgcmVhZC1jb25maWcgLS1lbmdpbmUtaWQg YW50aHkKKyUgaWJ1cyByZWFkLWNvbmZpZyAtLWVuZ2luZS1pZCBjb20uZ2l0aHViLmxpYnBpbnlp bi5pYnVzLWxpYnBpbnlpbi5saWJwaW55aW4KKy0tLQorIHRvb2xzL21haW4udmFsYSB8IDk5ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQor IDEgZmlsZSBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlm ZiAtLWdpdCBhL3Rvb2xzL21haW4udmFsYSBiL3Rvb2xzL21haW4udmFsYQoraW5kZXggOGMwYjY0 ZDMuLjZlMjAxZjMwIDEwMDY0NAorLS0tIGEvdG9vbHMvbWFpbi52YWxhCisrKysgYi90b29scy9t YWluLnZhbGEKK0BAIC0zLDcgKzMsNyBAQAorICAqIGlidXMgLSBUaGUgSW5wdXQgQnVzCisgICoK KyAgKiBDb3B5cmlnaHQoYykgMjAxMyBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNv bT4KKy0gKiBDb3B5cmlnaHQoYykgMjAxNS0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWpp d2FyYTFAZ21haWwuY29tPgorKyAqIENvcHlyaWdodChjKSAyMDE1LTIwMTggVGFrYW8gRnVqaXdh cmEgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5 IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAg LTIyLDIwICsyMiwxNyBAQAorICAqLworIAorIHByaXZhdGUgY29uc3Qgc3RyaW5nIElCVVNfU0NI RU1BU19HRU5FUkFMID0gIm9yZy5mcmVlZGVza3RvcC5pYnVzLmdlbmVyYWwiOworLXByaXZhdGUg Y29uc3Qgc3RyaW5nIElCVVNfU0NIRU1BU19HRU5FUkFMX1BBTkVMID0KKy0gICAgICAgICJvcmcu ZnJlZWRlc2t0b3AuaWJ1cy5nZW5lcmFsLnBhbmVsIjsKKytwcml2YXRlIGNvbnN0IHN0cmluZyBJ QlVTX1NDSEVNQVNfR0VORVJBTF9IT1RLRVkgPQorKyAgICAgICAgIm9yZy5mcmVlZGVza3RvcC5p YnVzLmdlbmVyYWwuaG90a2V5IjsKKyBwcml2YXRlIGNvbnN0IHN0cmluZyBJQlVTX1NDSEVNQVNf UEFORUwgPSAib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwiOworLQorLXByaXZhdGUgY29uc3Qg c3RyaW5nW10gSUJVU19TQ0hFTUFTID0geworLSAgICBJQlVTX1NDSEVNQVNfR0VORVJBTCwKKy0g ICAgSUJVU19TQ0hFTUFTX0dFTkVSQUxfUEFORUwsCistICAgIElCVVNfU0NIRU1BU19QQU5FTCwK Ky19OworK3ByaXZhdGUgY29uc3Qgc3RyaW5nIElCVVNfU0NIRU1BU19QQU5FTF9FTU9KSSA9Cisr ICAgICAgICAib3JnLmZyZWVkZXNrdG9wLmlidXMucGFuZWwuZW1vamkiOworIAorIGJvb2wgbmFt ZV9vbmx5ID0gZmFsc2U7CisgLyogc3lzdGVtKCkgZXhpc3RzIGFzIGEgcHVibGljIEFQSS4gKi8K KyBib29sIGlzX3N5c3RlbSA9IGZhbHNlOworIHN0cmluZyBjYWNoZV9maWxlID0gbnVsbDsKKytz dHJpbmcgZW5naW5lX2lkID0gbnVsbDsKKyAKKyBjbGFzcyBFbmdpbmVMaXN0IHsKKyAgICAgcHVi bGljIElCdXMuRW5naW5lRGVzY1tdIGRhdGEgPSB7fTsKK0BAIC0yOTIsMTUgKzI4OSw3OCBAQCBp bnQgcHJpbnRfYWRkcmVzcyhzdHJpbmdbXSBhcmd2KSB7CisgICAgIHJldHVybiBQb3NpeC5FWElU X1NVQ0NFU1M7CisgfQorIAorK3ByaXZhdGUgaW50IHJlYWRfY29uZmlnX29wdGlvbnMoc3RyaW5n W10gYXJndikgeworKyAgICBjb25zdCBPcHRpb25FbnRyeVtdIG9wdGlvbnMgPSB7CisrICAgICAg ICB7ICJlbmdpbmUtaWQiLCAwLCAwLCBPcHRpb25BcmcuU1RSSU5HLCBvdXQgZW5naW5lX2lkLAor KyAgICAgICAgICBOXygiVXNlIGVuZ2luZSBzY2hlbWEgcGF0aHMgaW5zdGVhZCBvZiBpYnVzIGNv cmUsICIgKworKyAgICAgICAgICAgICAid2hpY2ggY2FuIGJlIGNvbW1hLXNlcGFyYXRlZCB2YWx1 ZXMuIiksICJFTkdJTkVfSUQiIH0sCisrICAgICAgICB7IG51bGwgfQorKyAgICB9OworKworKyAg ICB2YXIgb3B0aW9uID0gbmV3IE9wdGlvbkNvbnRleHQoKTsKKysgICAgb3B0aW9uLmFkZF9tYWlu X2VudHJpZXMob3B0aW9ucywgQ29uZmlnLkdFVFRFWFRfUEFDS0FHRSk7CisrCisrICAgIHRyeSB7 CisrICAgICAgICBvcHRpb24ucGFyc2UocmVmIGFyZ3YpOworKyAgICB9IGNhdGNoIChPcHRpb25F cnJvciBlKSB7CisrICAgICAgICBzdGRlcnIucHJpbnRmKCIlc1xuIiwgZS5tZXNzYWdlKTsKKysg ICAgICAgIHJldHVybiBQb3NpeC5FWElUX0ZBSUxVUkU7CisrICAgIH0KKysgICAgcmV0dXJuIFBv c2l4LkVYSVRfU1VDQ0VTUzsKKyt9CisrCisrcHJpdmF0ZSBHTGliLlNMaXN0PHN0cmluZz4gZ2V0 X2lidXNfc2NoZW1hcygpIHsKKysgICAgc3RyaW5nW10gaWRzID0ge307CisrICAgIGlmIChlbmdp bmVfaWQgIT0gbnVsbCkgeworKyAgICAgICAgaWRzID0gZW5naW5lX2lkLnNwbGl0KCIsIik7Cisr ICAgIH0KKysgICAgR0xpYi5TTGlzdDxzdHJpbmc+IGlidXNfc2NoZW1hcyA9IG5ldyBHTGliLlNM aXN0PHN0cmluZz4oKTsKKysgICAgR0xpYi5TZXR0aW5nc1NjaGVtYVNvdXJjZSBzY2hlbWFfc291 cmNlID0KKysgICAgICAgICAgICBHTGliLlNldHRpbmdzU2NoZW1hU291cmNlLmdldF9kZWZhdWx0 KCk7CisrICAgIHN0cmluZ1tdIGxpc3Rfc2NoZW1hcyA9IHt9OworKyAgICBzY2hlbWFfc291cmNl Lmxpc3Rfc2NoZW1hcyh0cnVlLCBvdXQgbGlzdF9zY2hlbWFzLCBudWxsKTsKKysgICAgZm9yZWFj aCAoc3RyaW5nIHNjaGVtYSBpbiBsaXN0X3NjaGVtYXMpIHsKKysgICAgICAgIGlmIChpZHMubGVu Z3RoICE9IDApIHsKKysgICAgICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBpZCBpbiBp ZHMpIHsKKysgICAgICAgICAgICAgICAgaWYgKGlkID09IHNjaGVtYSB8fAorKyAgICAgICAgICAg ICAgICAgICAgc2NoZW1hLmhhc19wcmVmaXgoIm9yZy5mcmVlZGVza3RvcC5pYnVzLmVuZ2luZS4i ICsgaWQpKSB7CisrICAgICAgICAgICAgICAgICAgICBpYnVzX3NjaGVtYXMucHJlcGVuZChzY2hl bWEpOworKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIH0KKysg ICAgICAgICAgICB9CisrICAgICAgICB9IGVsc2UgaWYgKHNjaGVtYS5oYXNfcHJlZml4KCJvcmcu ZnJlZWRlc2t0b3AuaWJ1cyIpICYmCisrICAgICAgICAgICAgIXNjaGVtYS5oYXNfcHJlZml4KCJv cmcuZnJlZWRlc2t0b3AuaWJ1cy5lbmdpbmUiKSkgeworKyAgICAgICAgICAgIGlidXNfc2NoZW1h cy5wcmVwZW5kKHNjaGVtYSk7CisrICAgICAgICB9CisrICAgIH0KKysgICAgaWYgKGlidXNfc2No ZW1hcy5sZW5ndGgoKSA9PSAwKSB7CisrICAgICAgICBwcmludGVycigiTm90IGZvdW5kIHNjaGVt YXMgb2YgXCJvcmcuZnJlZWRlc2t0b3AuaWJ1c1wiXG4iKTsKKysgICAgICAgIHJldHVybiBpYnVz X3NjaGVtYXM7CisrICAgIH0KKysgICAgaWJ1c19zY2hlbWFzLnNvcnQoR0xpYi5zdHJjbXApOwor KworKyAgICByZXR1cm4gaWJ1c19zY2hlbWFzOworK30KKysKKyBpbnQgcmVhZF9jb25maWcoc3Ry aW5nW10gYXJndikgeworLSAgICB2YXIgb3V0cHV0ID0gbmV3IEdMaWIuU3RyaW5nQnVpbGRlcigp OworKyAgICBpZiAocmVhZF9jb25maWdfb3B0aW9ucyhhcmd2KSA9PSBQb3NpeC5FWElUX0ZBSUxV UkUpCisrICAgICAgICByZXR1cm4gUG9zaXguRVhJVF9GQUlMVVJFOworKworKyAgICBHTGliLlNM aXN0PHN0cmluZz4gaWJ1c19zY2hlbWFzID0gZ2V0X2lidXNfc2NoZW1hcygpOworKyAgICBpZiAo aWJ1c19zY2hlbWFzLmxlbmd0aCgpID09IDApCisrICAgICAgICByZXR1cm4gUG9zaXguRVhJVF9G QUlMVVJFOworIAorLSAgICBmb3JlYWNoIChzdHJpbmcgc2NoZW1hIGluIElCVVNfU0NIRU1BUykg eworKyAgICBHTGliLlNldHRpbmdzU2NoZW1hU291cmNlIHNjaGVtYV9zb3VyY2UgPQorKyAgICAg ICAgICAgIEdMaWIuU2V0dGluZ3NTY2hlbWFTb3VyY2UuZ2V0X2RlZmF1bHQoKTsKKysgICAgdmFy IG91dHB1dCA9IG5ldyBHTGliLlN0cmluZ0J1aWxkZXIoKTsKKysgICAgZm9yZWFjaCAoc3RyaW5n IHNjaGVtYSBpbiBpYnVzX3NjaGVtYXMpIHsKKysgICAgICAgIEdMaWIuU2V0dGluZ3NTY2hlbWEg c2V0dGluZ3Nfc2NoZW1hID0gc2NoZW1hX3NvdXJjZS5sb29rdXAoc2NoZW1hLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBmYWxzZSk7CisgICAgICAgICBHTGliLlNldHRpbmdzIHNldHRpbmdzID0gbmV3IEdMaWIuU2V0 dGluZ3Moc2NoZW1hKTsKKyAKKyAgICAgICAgIG91dHB1dC5hcHBlbmRfcHJpbnRmKCJTQ0hFTUE6 ICVzXG4iLCBzY2hlbWEpOworIAorLSAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGtleSBpbiBzZXR0 aW5ncy5saXN0X2tleXMoKSkgeworKyAgICAgICAgZm9yZWFjaCAoc3RyaW5nIGtleSBpbiBzZXR0 aW5nc19zY2hlbWEubGlzdF9rZXlzKCkpIHsKKyAgICAgICAgICAgICBHTGliLlZhcmlhbnQgdmFy aWFudCA9IHNldHRpbmdzLmdldF92YWx1ZShrZXkpOworICAgICAgICAgICAgIG91dHB1dC5hcHBl bmRfcHJpbnRmKCIgICVzOiAlc1xuIiwga2V5LCB2YXJpYW50LnByaW50KHRydWUpKTsKKyAgICAg ICAgIH0KK0BAIC0zMTEsMTQgKzM3MSwyNSBAQCBpbnQgcmVhZF9jb25maWcoc3RyaW5nW10gYXJn dikgeworIH0KKyAKKyBpbnQgcmVzZXRfY29uZmlnKHN0cmluZ1tdIGFyZ3YpIHsKKysgICAgaWYg KHJlYWRfY29uZmlnX29wdGlvbnMoYXJndikgPT0gUG9zaXguRVhJVF9GQUlMVVJFKQorKyAgICAg ICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKKysKKysgICAgR0xpYi5TTGlzdDxzdHJpbmc+ IGlidXNfc2NoZW1hcyA9IGdldF9pYnVzX3NjaGVtYXMoKTsKKysgICAgaWYgKGlidXNfc2NoZW1h cy5sZW5ndGgoKSA9PSAwKQorKyAgICAgICAgcmV0dXJuIFBvc2l4LkVYSVRfRkFJTFVSRTsKKysK KyAgICAgcHJpbnQoIiVzXG4iLCBfKCJSZXNldHRpbmfigKYiKSk7CisgCistICAgIGZvcmVhY2gg KHN0cmluZyBzY2hlbWEgaW4gSUJVU19TQ0hFTUFTKSB7CisrICAgIEdMaWIuU2V0dGluZ3NTY2hl bWFTb3VyY2Ugc2NoZW1hX3NvdXJjZSA9CisrICAgICAgICAgICAgR0xpYi5TZXR0aW5nc1NjaGVt YVNvdXJjZS5nZXRfZGVmYXVsdCgpOworKyAgICBmb3JlYWNoIChzdHJpbmcgc2NoZW1hIGluIGli dXNfc2NoZW1hcykgeworKyAgICAgICAgR0xpYi5TZXR0aW5nc1NjaGVtYSBzZXR0aW5nc19zY2hl bWEgPSBzY2hlbWFfc291cmNlLmxvb2t1cChzY2hlbWEsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAg ICAgICAgIEdMaWIuU2V0dGluZ3Mgc2V0dGluZ3MgPSBuZXcgR0xpYi5TZXR0aW5ncyhzY2hlbWEp OworIAorICAgICAgICAgcHJpbnQoIlNDSEVNQTogJXNcbiIsIHNjaGVtYSk7CisgCistICAgICAg ICBmb3JlYWNoIChzdHJpbmcga2V5IGluIHNldHRpbmdzLmxpc3Rfa2V5cygpKSB7CisrICAgICAg ICBmb3JlYWNoIChzdHJpbmcga2V5IGluIHNldHRpbmdzX3NjaGVtYS5saXN0X2tleXMoKSkgewor ICAgICAgICAgICAgIHByaW50KCIgICVzXG4iLCBrZXkpOworICAgICAgICAgICAgIHNldHRpbmdz LnJlc2V0KGtleSk7CisgICAgICAgICB9CistLSAKKzIuMTQuMworCitGcm9tIDM3YWE5NWYxYWRj ZGRlODJlZjQ3MzkzNmNhZGMwZmEzZmU4YTRlNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBmdWppd2FyYXQgPHRha2FvLmZ1aml3YXJhMUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE1 IEp1biAyMDE4IDE5OjIzOjI3ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIHNldHVwOiBSZXBsYWNl IEd0a1RhYmxlIC93IEd0a0dyaWQKKworLS0tCisgc2V0dXAvc2V0dXAudWkgfCAxMTMgKysrKysr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBm aWxlIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDcyIGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvc2V0dXAvc2V0dXAudWkgYi9zZXR1cC9zZXR1cC51aQoraW5kZXggMzIyZjUxNDYuLmU2 NGIxMDQ2IDEwMDY0NAorLS0tIGEvc2V0dXAvc2V0dXAudWkKKysrKyBiL3NldHVwL3NldHVwLnVp CitAQCAtOTksMTEgKzk5LDkgQEAKKyAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJsYWJlbF94YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9InNoYWRvd190eXBlIj5ub25lPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAg ICAgIDxjaGlsZD4KKy0gICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVGFi bGUiIGlkPSJ0YWJsZTEiPgorKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJH dGtHcmlkIiBpZD0idGFibGUxIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorLSAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJuX3Jvd3MiPjU8L3Byb3BlcnR5PgorLSAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJuX2NvbHVtbnMiPjI8L3Byb3BlcnR5 PgorICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjb2x1bW5fc3BhY2lu ZyI+MTI8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJyb3dfc3BhY2luZyI+NjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9Im1hcmdpbl90b3AiPjY8L3Byb3BlcnR5PgorQEAgLTExNyw4ICsxMTUsOCBA QAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRy YW5zbGF0YWJsZT0ieWVzIj5OZXh0IGlucHV0IG1ldGhvZDo8L3Byb3BlcnR5PgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cGFja2luZz4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inhf b3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJv cGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3Bf YXR0YWNoIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2lu Zz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAg ICAgICAgIDxjaGlsZD4KK0BAIC0xMzEsMTAgKzEyOSw4IEBACisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlByZXZp b3VzIGlucHV0IG1ldGhvZDo8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9w ZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9h dHRhY2giPjE8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+MjwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4K Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+ R1RLX0ZJTEw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5n PgorICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAg ICAgICAgPGNoaWxkPgorQEAgLTE0Myw2ICsxMzksNyBAQAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9w cm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNw YWNpbmciPjY8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iaGV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNs YXNzPSJHdGtFbnRyeSIgaWQ9ImVudHJ5X3N3aXRjaF9lbmdpbmUiPgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5 PgorQEAgLTE3NCw4ICsxNzEsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmpl Y3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4K Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFj aCI+MjwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjA8L3Byb3BlcnR5PgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAg IDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorQEAgLTE4NCw2ICsx ODAsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibm9f c2hvd19hbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzcGFjaW5nIj42PC9wcm9wZXJ0eT4KKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8 L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrRW50cnkiIGlkPSJlbnRy eV9wcmV2X2VuZ2luZSI+CisgICA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJub19zaG93X2FsbCI+VHJ1ZTwvcHJvcGVydHk+CitAQCAtMjE3LDEw ICsyMTQsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVy dHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0 YWNoIj4xPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImJvdHRvbV9hdHRhY2giPjI8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAg ICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CitAQCAtMjMy LDEwICsyMjYsOCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5FbmFibGUgb3IgZGlzYWJsZTo8L3Byb3BlcnR5 PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjI8L3Byb3BlcnR5PgorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+Mzwv cHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4 X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAg IDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorQEAgLTI0NiwxMCAr MjM4LDggQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imxh YmVsIiB0cmFuc2xhdGFibGU9InllcyI+RW5hYmxlOjwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNr aW5nPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9h dHRhY2giPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0idG9wX2F0dGFjaCI+MzwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJib3R0b21fYXR0YWNoIj40PC9wcm9wZXJ0eT4KKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RLX0ZJ TEw8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAg ICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CitAQCAtMjU4LDYgKzI0OCw3IEBACisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJub19zaG93X2FsbCI+VHJ1ZTwv cHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJj YW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9InNwYWNpbmciPjY8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtFbnRyeSIgaWQ9ImVudHJ5X2VuYWJsZV91bmNvbmRp dGlvbmFsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KK0BAIC0yODksMTAgKzI4MCw3IEBACisgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i bGVmdF9hdHRhY2giPjE8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0icmlnaHRfYXR0YWNoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjM8L3Byb3BlcnR5Pgor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFj aCI+NDwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAg ICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BAIC0zMDMsMTAgKzI5MSw4IEBACisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRh YmxlPSJ5ZXMiPkRpc2FibGU6PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg IDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJv cGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3Bf YXR0YWNoIj40PC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjU8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+ CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMi PkdUS19GSUxMPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2lu Zz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAg ICAgICAgIDxjaGlsZD4KK0BAIC0zMTUsNiArMzAxLDcgQEAKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5vX3Nob3dfYWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFs c2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0ic3BhY2luZyI+NjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJoZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmpl Y3QgY2xhc3M9Ikd0a0VudHJ5IiBpZD0iZW50cnlfZGlzYWJsZV91bmNvbmRpdGlvbmFsIj4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5U cnVlPC9wcm9wZXJ0eT4KK0BAIC0zNDYsMTAgKzMzMyw3IEBACisgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGVmdF9hdHRhY2gi PjE8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0icmlnaHRfYXR0YWNoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjQ8L3Byb3BlcnR5PgorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+NTwvcHJvcGVy dHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlv bnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFj a2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAg ICAgICAgICA8L29iamVjdD4KK0BAIC0zNzYsMTEgKzM2MCw5IEBACisgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWxfeGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+bm9uZTwvcHJvcGVydHk+ CisgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CistICAgICAgICAgICAgICAgICAgICAgIDxv YmplY3QgY2xhc3M9Ikd0a1RhYmxlIiBpZD0idGFibGUyIj4KKysgICAgICAgICAgICAgICAgICAg ICAgPG9iamVjdCBjbGFzcz0iR3RrR3JpZCIgaWQ9InRhYmxlMiI+CisgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9w ZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibl9yb3dzIj43 PC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibl9j b2x1bW5zIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0iY29sdW1uX3NwYWNpbmciPjEyPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0icm93X3NwYWNpbmciPjY8L3Byb3BlcnR5PgorICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fdG9wIj42PC9wcm9wZXJ0eT4K K0BAIC0zOTMsMTAgKzM3NSwxMSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0iaGFsaWduIj5zdGFydDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPkNhbmRp ZGF0ZXMgb3JpZW50YXRpb246PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9Imp1c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0eT4KKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5 PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cGFja2luZz4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0 dGFjaCI+MDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJ0b3BfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAg ICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BAIC00MDQsNiArMzg3LDcgQEAKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3Bl cnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2Zv Y3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJtb2RlbCI+bW9kZWxfY2FuZGlkYXRlc19vcmllbnRhdGlvbjwvcHJvcGVydHk+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoZXhwYW5kIj5U cnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJl clRleHQiIGlkPSJyZW5kZXJlcjEiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 YXR0cmlidXRlcz4KK0BAIC00MTMsOCArMzk3LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MTwv cHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJy aWdodF9hdHRhY2giPjI8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4wPC9wcm9wZXJ0 eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAg ICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BA IC00MjUsMTIgKzQwOCwxMSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iaGFsaWduIj5zdGFydDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlNob3cgcHJv cGVydHkgcGFuZWw6PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9Imp1c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAg ICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cGFja2luZz4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjE8L3Byb3BlcnR5PgorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+MjwvcHJvcGVy dHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlv bnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hp bGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorQEAgLTQ0MCwxMiArNDIyLDEx IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24i PnN0YXJ0PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+TGFuZ3VhZ2UgcGFuZWwgcG9zaXRpb246 PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 Imp1c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2lu Zz4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0 YWNoIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9InRvcF9hdHRhY2giPjI8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iYm90dG9tX2F0dGFjaCI+MzwvcHJvcGVydHk+CistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxM PC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAg ICAgICAgICAgICAgICAgICAgPGNoaWxkPgorQEAgLTQ1Myw2ICs0MzQsNyBAQAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVy dHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9j dXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9Im1vZGVsIj5tb2RlbF9wYW5lbF9zaG93X21vZGU8L3Byb3BlcnR5PgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGV4cGFuZCI+VHJ1ZTwvcHJv cGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBp ZD0icmVuZGVyZXIyIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0 ZXM+CitAQCAtNDYyLDEwICs0NDQsNyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9v YmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0 eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0 dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjI8L3Byb3BlcnR5PgorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieV9vcHRpb25zIj5HVEtfRklM TDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAg ICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8 Y2hpbGQ+CitAQCAtNDczLDYgKzQ1Miw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5vX3Nob3dfYWxsIj5UcnVlPC9wcm9w ZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im1vZGVs Ij5tb2RlbF9wYW5lbF9wb3NpdGlvbjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJyZW5kZXJlcjMiLz4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KK0BAIC00ODIsMTAg KzQ2Miw3IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cHJvcGVydHkgbmFtZT0ibGVmdF9hdHRhY2giPjE8L3Byb3BlcnR5PgorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmlnaHRfYXR0YWNoIj4yPC9wcm9wZXJ0 eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRh Y2giPjI8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0iYm90dG9tX2F0dGFjaCI+MzwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAg ICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BAIC00OTks MTMgKzQ3NiwxMiBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4K KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRyYXdfaW5kaWNh dG9yIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3Bl cnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+ MjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1l PSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg IDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4zPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjQ8L3Byb3BlcnR5 PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25z Ij5HVEtfRklMTDwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRoIj4yPC9wcm9wZXJ0eT4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAg ICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BAIC01MTksMTMg KzQ5NSwxMiBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i dXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRyYXdfaW5kaWNhdG9y Ij5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+Mjwv cHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJs ZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj40PC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjU8L3Byb3BlcnR5Pgor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25zIj5H VEtfRklMTDwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0 eSBuYW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8 L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BAIC01MzksMTMgKzUx NCwxMiBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNl X2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRyYXdfaW5kaWNhdG9yIj5U cnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJv cGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0 X2F0dGFjaCI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj41PC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRhY2giPjY8L3Byb3BlcnR5PgorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieF9vcHRpb25zIj5HVEtf RklMTDwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJ5X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRoIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8L2No aWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BAIC01NTksMTIgKzUzMywx MSBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX3Vu ZGVybGluZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRyYXdfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQi PlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4wPC9wcm9wZXJ0eT4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRvcF9hdHRhY2giPjY8L3By b3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYm90 dG9tX2F0dGFjaCI+NzwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJ4X29wdGlvbnMiPkdUS19GSUxMPC9wcm9wZXJ0eT4KKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inlfb3B0aW9ucyI+R1RLX0ZJTEw8L3By b3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAg ICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxk PgorQEAgLTU3MywxMyArNTQ2LDExIEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxw cm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjZWl2ZXNfZGVmYXVsdCI+VHJ1ZTwvcHJv cGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2Vf YWN0aW9uX2FwcGVhcmFuY2UiPkZhbHNlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQiPlRydWU8L3Byb3BlcnR5PgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAg ICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9 ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj42PC9wcm9wZXJ0eT4K Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJvdHRvbV9hdHRh Y2giPjc8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0ieV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAg ICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAg ICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CitAQCAtODg4LDExICs4NTksOSBAQAorICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsX3hhbGlnbiI+MDwvcHJvcGVy dHk+CisgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hhZG93X3R5cGUiPm5v bmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorLSAgICAgICAgICAg ICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUYWJsZSIgaWQ9InRhYmxlX2Vtb2ppMSI+Cisr ICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0dyaWQiIGlkPSJ0YWJsZV9l bW9qaTEiPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxl Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9Im5fcm93cyI+NTwvcHJvcGVydHk+CistICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9Im5fY29sdW1ucyI+MjwvcHJvcGVydHk+CisgICAgICAgICAg ICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNvbHVtbl9zcGFjaW5nIj4xMjwvcHJvcGVy dHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJvd19zcGFjaW5n Ij42PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i bWFyZ2luX3RvcCI+NjwvcHJvcGVydHk+CitAQCAtOTA2LDggKzg3NSw4IEBACisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5 ZXMiPkVtb2ppIGNob2ljZTo8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAg PC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Inhfb3B0aW9ucyI+R1RLX0ZJTEw8 L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i eV9vcHRpb25zIj5HVEtfRklMTDwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4wPC9wcm9wZXJ0 eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAg ICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KK0BA IC05MTYsNiArODg1LDcgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzcGFjaW5nIj42PC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImhleHBhbmQi PnRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrRW50cnkiIGlk PSJlbnRyeV9lbW9qaV9kaWFsb2ciPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorQEAgLTk0Nyw4ICs5MTcs NyBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAg ICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBy b3BlcnR5IG5hbWU9ImxlZnRfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJpZ2h0X2F0dGFjaCI+MjwvcHJvcGVydHk+Cist ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ5X29wdGlvbnMiPkdU S19GSUxMPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5 IG5hbWU9InRvcF9hdHRhY2giPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAg ICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAg ICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorLS0gCisyLjE0LjMKKworRnJvbSA1ZWUzZjQ4MDQ5 ZWNmMTI4MzkxZGE2NDQ4YWU3ZTc0Nzg2YmQxNzFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogTW9uLCAx OCBKdW4gMjAxOCAxMjo0NjoxMSArMDkwMAorU3ViamVjdDogW1BBVENIXSBNb3ZlIGlucHV0IGZv Y3VzIG9uIEVtb2ppZXIgdG8gZW5naW5lcycgcHJlZWRpdAorCistLS0KKyBiaW5kaW5ncy92YWxh L0lCdXMtMS4wLWN1c3RvbS52YWxhIHwgICA3ICsKKyBiaW5kaW5ncy92YWxhL01ha2VmaWxlLmFt ICAgICAgICAgIHwgICAzICstCisgYmluZGluZ3MvdmFsYS9nZGstd2F5bGFuZC52YXBpICAgICB8 ICAgNyArCisgYnVzL2VuZ2luZXByb3h5LmMgICAgICAgICAgICAgICAgICB8ICA1MyArLQorIGJ1 cy9lbmdpbmVwcm94eS5oICAgICAgICAgICAgICAgICAgfCAgMjUgKy0KKyBidXMvaWJ1c2ltcGwu YyAgICAgICAgICAgICAgICAgICAgIHwgMjQ3ICsrKysrKystLQorIGJ1cy9pbnB1dGNvbnRleHQu YyAgICAgICAgICAgICAgICAgfCAzOTkgKysrKysrKysrKystLS0tCisgYnVzL2lucHV0Y29udGV4 dC5oICAgICAgICAgICAgICAgICB8IDExMCArKystCisgYnVzL3BhbmVscHJveHkuYyAgICAgICAg ICAgICAgICAgICB8IDIxMCArKysrKysrLQorIGJ1cy9wYW5lbHByb3h5LmggICAgICAgICAgICAg ICAgICAgfCAgMjMgKy0KKyBkYXRhL2lidXMuc2NoZW1hcy5pbiAgICAgICAgICAgICAgIHwgIDEy ICsKKyBzZXR1cC9tYWluLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstCisgc2V0dXAv c2V0dXAudWkgICAgICAgICAgICAgICAgICAgICB8ICA1OCArKy0KKyBzcmMvaWJ1c2VuZ2luZS5j ICAgICAgICAgICAgICAgICAgIHwgMzA1ICsrKysrKysrLS0tLQorIHNyYy9pYnVzcGFuZWxzZXJ2 aWNlLmMgICAgICAgICAgICAgfCAzMTggKysrKysrKysrKystCisgc3JjL2lidXNwYW5lbHNlcnZp Y2UuaCAgICAgICAgICAgICB8IDExNyArKysrLQorIHNyYy9pYnVzc2hhcmUuaCAgICAgICAgICAg ICAgICAgICAgfCAgMTcgKy0KKyBzcmMvaWJ1c3hldmVudC5jICAgICAgICAgICAgICAgICAgIHwg Mzc1ICsrKysrKysrKysrKystCisgc3JjL2lidXN4ZXZlbnQuaCAgICAgICAgICAgICAgICAgICB8 IDE0MyArKysrKy0KKyB1aS9ndGszL01ha2VmaWxlLmFtICAgICAgICAgICAgICAgIHwgICAzICsK KyB1aS9ndGszL2Vtb2ppZXIudmFsYSAgICAgICAgICAgICAgIHwgOTkxICsrKysrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0KKyB1aS9ndGszL2Vtb2ppZXJhcHAudmFsYSAgICAgICAg ICAgIHwgIDc0ICsrLQorIHVpL2d0azMvZXh0ZW5zaW9uLnZhbGEgICAgICAgICAgICAgfCAgIDYg Ky0KKyB1aS9ndGszL3BhbmVsLnZhbGEgICAgICAgICAgICAgICAgIHwgIDIzICstCisgdWkvZ3Rr My9wYW5lbGJpbmRpbmcudmFsYSAgICAgICAgICB8IDg1OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLQorIDI1IGZpbGVzIGNoYW5nZWQsIDM2OTUgaW5zZXJ0aW9ucygrKSwgNzAwIGRl bGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBiaW5kaW5ncy92YWxhL2dkay13YXlsYW5k LnZhcGkKKworZGlmZiAtLWdpdCBhL2JpbmRpbmdzL3ZhbGEvSUJ1cy0xLjAtY3VzdG9tLnZhbGEg Yi9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhCitpbmRleCBjZjFmYzNmYS4uN2Qz NGE4YmQgMTAwNjQ0CistLS0gYS9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhCisr KysgYi9iaW5kaW5ncy92YWxhL0lCdXMtMS4wLWN1c3RvbS52YWxhCitAQCAtNiw4ICs2LDE1IEBA IG5hbWVzcGFjZSBJQnVzIHsKKyAJCVtDQ29kZSAoY25hbWUgPSAiaWJ1c190ZXh0X25ld19mcm9t X3N0YXRpY19zdHJpbmciLCBoYXNfY29uc3RydWN0X2Z1bmN0aW9uID0gZmFsc2UpXQorIAkJcHVi bGljIFRleHQuZnJvbV9zdGF0aWNfc3RyaW5nIChzdHJpbmcgc3RyKTsKKyAJfQorKwlwdWJsaWMg Y2xhc3MgRXh0ZW5zaW9uRXZlbnQgOiBJQnVzLlNlcmlhbGl6YWJsZSB7CisrCQlbQ0NvZGUgKGNu YW1lID0gImlidXNfZXh0ZW5zaW9uX2V2ZW50X25ldyIsIGhhc19jb25zdHJ1Y3RfZnVuY3Rpb24g PSB0cnVlKV0KKysJCXB1YmxpYyBFeHRlbnNpb25FdmVudCAoc3RyaW5nIGZpcnN0X3Byb3BlcnR5 X25hbWUsIC4uLik7CisrCX0KKyAJcHVibGljIGNsYXNzIFhFdmVudCA6IElCdXMuU2VyaWFsaXph YmxlIHsKKyAJCVtDQ29kZSAoY25hbWUgPSAiaWJ1c194X2V2ZW50X25ldyIsIGhhc19jb25zdHJ1 Y3RfZnVuY3Rpb24gPSB0cnVlKV0KKyAJCXB1YmxpYyBYRXZlbnQgKHN0cmluZyBmaXJzdF9wcm9w ZXJ0eV9uYW1lLCAuLi4pOworIAl9CisrCXB1YmxpYyBjbGFzcyBQYW5lbFNlcnZpY2UgOiBJQnVz LlNlcnZpY2UgeworKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBwYW5lbF9leHRlbnNpb25f cmVnaXN0ZXJfa2V5cyhzdHJpbmcgZmlyc3RfcHJvcGVydHlfbmFtZSwgLi4uKTsKKysJfQorIH0K K2RpZmYgLS1naXQgYS9iaW5kaW5ncy92YWxhL01ha2VmaWxlLmFtIGIvYmluZGluZ3MvdmFsYS9N YWtlZmlsZS5hbQoraW5kZXggZmM4ZTJmMDEuLmU0ZWNhYjk3IDEwMDY0NAorLS0tIGEvYmluZGlu Z3MvdmFsYS9NYWtlZmlsZS5hbQorKysrIGIvYmluZGluZ3MvdmFsYS9NYWtlZmlsZS5hbQorQEAg LTMsNyArMyw3IEBACisgIyBpYnVzIC0gVGhlIElucHV0IEJ1cworICMKKyAjIENvcHlyaWdodCAo YykgMjAwNy0yMDE2IFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgorLSMgQ29w eXJpZ2h0IChjKSAyMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29t PgorKyMgQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3 YXJhMUBnbWFpbC5jb20+CisgIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNyBSZWQgSGF0LCBJbmMu CisgIworICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vcgorQEAgLTg2LDYgKzg2LDcgQEAgRVhUUkFfRElTVCA9ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpYnVzLTEuMC5kZXBzICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgaWJ1cy1lbW9qaS1kaWFsb2ctMS4wLmRlcHMgICAg ICAgICAgICAgICAgICBcCisgICAgIGNvbmZpZy52YXBpICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorKyAgICBnZGstd2F5bGFuZC52YXBpICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgeGkudmFwaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisgICAgICQoTlVMTCkKKyAKK2RpZmYgLS1naXQgYS9iaW5kaW5ncy92YWxhL2dkay13YXlsYW5k LnZhcGkgYi9iaW5kaW5ncy92YWxhL2dkay13YXlsYW5kLnZhcGkKK25ldyBmaWxlIG1vZGUgMTAw NjQ0CitpbmRleCAwMDAwMDAwMC4uYzY1ZjJiZTQKKy0tLSAvZGV2L251bGwKKysrKyBiL2JpbmRp bmdzL3ZhbGEvZ2RrLXdheWxhbmQudmFwaQorQEAgLTAsMCArMSw3IEBACisrW0NDb2RlIChjcHJl Zml4ID0gIiIsIGxvd2VyX2Nhc2VfY3ByZWZpeCA9ICIiLCBjaGVhZGVyX2ZpbGVuYW1lID0gImdk ay9nZGt3YXlsYW5kLmgiKV0KKytuYW1lc3BhY2UgR2RrV2F5bGFuZAorK3sKKysgICAgW0NDb2Rl ICh0eXBlX2lkID0gImdka193YXlsYW5kX2Rpc3BsYXlfZ2V0X3R5cGUgKCkiKV0KKysgICAgcHVi bGljIGNsYXNzIERpc3BsYXkgOiBHZGsuRGlzcGxheSB7CisrICAgIH0KKyt9CitkaWZmIC0tZ2l0 IGEvYnVzL2VuZ2luZXByb3h5LmMgYi9idXMvZW5naW5lcHJveHkuYworaW5kZXggMTc1YWVjNTYu LjJkOTg5OTVjIDEwMDY0NAorLS0tIGEvYnVzL2VuZ2luZXByb3h5LmMKKysrKyBiL2J1cy9lbmdp bmVwcm94eS5jCitAQCAtMzc3LDEwICszNzcsMTAgQEAgYnVzX2VuZ2luZV9wcm94eV9jbGFzc19p bml0IChCdXNFbmdpbmVQcm94eUNsYXNzICpjbGFzcykKKyAgICAgICAgICAgICBHX1NJR05BTF9S VU5fTEFTVCwKKyAgICAgICAgICAgICAwLAorICAgICAgICAgICAgIE5VTEwsIE5VTEwsCistICAg ICAgICAgICAgYnVzX21hcnNoYWxfVk9JRF9fVkFSSUFOVCwKKysgICAgICAgICAgICBidXNfbWFy c2hhbF9WT0lEX19PQkpFQ1QsCisgICAgICAgICAgICAgR19UWVBFX05PTkUsCisgICAgICAgICAg ICAgMSwKKy0gICAgICAgICAgICBHX1RZUEVfVkFSSUFOVCk7CisrICAgICAgICAgICAgSUJVU19U WVBFX0VYVEVOU0lPTl9FVkVOVCk7CisgCisgICAgIHRleHRfZW1wdHkgPSBpYnVzX3RleHRfbmV3 X2Zyb21fc3RhdGljX3N0cmluZyAoIiIpOworICAgICBnX29iamVjdF9yZWZfc2luayAodGV4dF9l bXB0eSk7CitAQCAtNjQ0LDcgKzY0NCwxNiBAQCBidXNfZW5naW5lX3Byb3h5X2dfc2lnbmFsIChH REJ1c1Byb3h5ICAqcHJveHksCisgICAgIH0KKyAKKyAgICAgaWYgKGdfc3RyY21wMCAoc2lnbmFs X25hbWUsICJQYW5lbEV4dGVuc2lvbiIpID09IDApIHsKKy0gICAgICAgIGdfc2lnbmFsX2VtaXQg KGVuZ2luZSwgZW5naW5lX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgcGFyYW1ldGVycyk7 CisrICAgICAgICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7CisrICAgICAgICBnX3ZhcmlhbnRfZ2V0 IChwYXJhbWV0ZXJzLCAiKHYpIiwgJmFyZzApOworKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAo YXJnMCAhPSBOVUxMKTsKKysKKysgICAgICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQgPSBJ QlVTX0VYVEVOU0lPTl9FVkVOVCAoCisrICAgICAgICAgICAgICAgIGlidXNfc2VyaWFsaXphYmxl X2Rlc2VyaWFsaXplIChhcmcwKSk7CisrICAgICAgICBnX3ZhcmlhbnRfdW5yZWYgKGFyZzApOwor KyAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoZXZlbnQgIT0gTlVMTCk7CisrICAgICAgICBnX3Np Z25hbF9lbWl0IChlbmdpbmUsIGVuZ2luZV9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0sIDAsIGV2 ZW50KTsKKysgICAgICAgIF9nX29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAoZXZlbnQpOworICAg ICAgICAgcmV0dXJuOworICAgICB9CisgCitAQCAtMTMyMyw2ICsxMzMyLDQ0IEBAIGJ1c19lbmdp bmVfcHJveHlfaXNfZW5hYmxlZCAoQnVzRW5naW5lUHJveHkgKmVuZ2luZSkKKyAgICAgcmV0dXJu IGVuZ2luZS0+ZW5hYmxlZDsKKyB9CisgCisrdm9pZAorK2J1c19lbmdpbmVfcHJveHlfcGFuZWxf ZXh0ZW5zaW9uX3JlY2VpdmVkIChCdXNFbmdpbmVQcm94eSAgICAgKmVuZ2luZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpl dmVudCkKKyt7CisrICAgIEdWYXJpYW50ICp2YXJpYW50OworKyAgICBnX2Fzc2VydCAoQlVTX0lT X0VOR0lORV9QUk9YWSAoZW5naW5lKSk7CisrICAgIGdfYXNzZXJ0IChJQlVTX0lTX0VYVEVOU0lP Tl9FVkVOVCAoZXZlbnQpKTsKKysKKysgICAgdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxlX3Nl cmlhbGl6ZV9vYmplY3QgKAorKyAgICAgICAgICAgIElCVVNfU0VSSUFMSVpBQkxFIChldmVudCkp OworKyAgICBnX3JldHVybl9pZl9mYWlsICh2YXJpYW50ICE9IE5VTEwpOworKyAgICBnX2RidXNf cHJveHlfY2FsbCAoKEdEQnVzUHJveHkgKillbmdpbmUsCisrICAgICAgICAgICAgICAgICAgICAg ICAiUGFuZWxFeHRlbnNpb25SZWNlaXZlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICBnX3Zh cmlhbnRfbmV3ICgiKHYpIiwgdmFyaWFudCksCisrICAgICAgICAgICAgICAgICAgICAgICBHX0RC VVNfQ0FMTF9GTEFHU19OT05FLAorKyAgICAgICAgICAgICAgICAgICAgICAgLTEsCisrICAgICAg ICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKysg ICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworK30KKysKKyt2b2lkCisrYnVzX2VuZ2luZV9w cm94eV9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cyAoQnVzRW5naW5lUHJveHkgKmVuZ2lu ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFy aWFudCAgICAgICAqcGFyYW1ldGVycykKKyt7CisrICAgIGdfYXNzZXJ0IChCVVNfSVNfRU5HSU5F X1BST1hZIChlbmdpbmUpKTsKKysgICAgZ19hc3NlcnQgKHBhcmFtZXRlcnMpOworKworKyAgICBn X2RidXNfcHJveHlfY2FsbCAoKEdEQnVzUHJveHkgKillbmdpbmUsCisrICAgICAgICAgICAgICAg ICAgICAgICAiUGFuZWxFeHRlbnNpb25SZWdpc3RlcktleXMiLAorKyAgICAgICAgICAgICAgICAg ICAgICAgZ192YXJpYW50X25ldyAoIih2KSIsIGdfdmFyaWFudF9yZWYgKHBhcmFtZXRlcnMpKSwK KysgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisrICAgICAg ICAgICAgICAgICAgICAgICAtMSwKKysgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisrICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7 CisrfQorKworIHN0YXRpYyBnYm9vbGVhbgorIGluaXRhYmxlX2luaXQgKEdJbml0YWJsZSAgICAg KmluaXRhYmxlLAorICAgICAgICAgICAgICAgIEdDYW5jZWxsYWJsZSAgKmNhbmNlbGxhYmxlLAor ZGlmZiAtLWdpdCBhL2J1cy9lbmdpbmVwcm94eS5oIGIvYnVzL2VuZ2luZXByb3h5LmgKK2luZGV4 IDUyOGU2MWI3Li5hMzAwNmI0NyAxMDA2NDQKKy0tLSBhL2J1cy9lbmdpbmVwcm94eS5oCisrKysg Yi9idXMvZW5naW5lcHJveHkuaAorQEAgLTIsNyArMiw4IEBACisgLyogdmltOnNldCBldCBzdHM9 NDogKi8KKyAvKiBpYnVzIC0gVGhlIElucHV0IEJ1cworICAqIENvcHlyaWdodCAoQykgMjAwOC0y MDEzIFBlbmcgSHVhbmcgPHNoYXduLnAuaHVhbmdAZ21haWwuY29tPgorLSAqIENvcHlyaWdodCAo QykgMjAwOC0yMDEzIFJlZCBIYXQsIEluYy4KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggVGFrYW8g RnVqaXdhcmEgPHRha2FvLmZ1aml3YXJhQGdtYWlsLmNvbT4KKysgKiBDb3B5cmlnaHQgKEMpIDIw MDgtMjAxOCBSZWQgSGF0LCBJbmMuCisgICoKKyAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICogbW9kaWZ5IGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworQEAgLTMyNSw1ICsz MjYsMjcgQEAgdm9pZCAgICAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfc2V0X2NvbnRlbnRfdHlw ZQorIElCdXNQcm9wTGlzdCAgICpidXNfZW5naW5lX3Byb3h5X2dldF9wcm9wZXJ0aWVzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c0VuZ2luZVByb3h5 ICAgICAqZW5naW5lKTsKKyAKKysvKioKKysgKiBidXNfZW5naW5lX3Byb3h5X3BhbmVsX2V4dGVu c2lvbl9yZWNlaXZlZDoKKysgKiBAZW5naW5lOiBBICNCdXNFbmdpbmVQcm94eS4KKysgKiBAZXZl bnQ6IEFuICNJQnVzRXh0ZW5zaW9uRXZlbnQuCisrICoKKysgKiBTZW5kIGFuICNJQnVzRXh0ZW5z aW9uRXZlbnQgdG8gdGhlIGVuZ2luZS4KKysgKi8KKyt2b2lkICAgICAgICAgICAgYnVzX2VuZ2lu ZV9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoQnVzRW5naW5lUHJveHkgICAgICplbmdpbmUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNFeHRlbnNpb25F dmVudCAqZXZlbnQpOworKworKy8qKgorKyAqIGJ1c19lbmdpbmVfcHJveHlfcGFuZWxfZXh0ZW5z aW9uX3JlZ2lzdGVyX2tleXM6CisrICogQGVuZ2luZTogQSAjQnVzRW5naW5lUHJveHkuCisrICog QHBhcmFtZXRlcnM6IEEgI0dWYXJpYW50IGFycmF5IHdoaWNoIGluY2x1ZGVzIHRoZSBuYW1lIGFu ZCBzaG9ydGN1dCBrZXlzLgorKyAqCisrICogU2VuZCBzaG9ydGN1dCBrZXlzIHRvIHRoZSBlbmdp bmUgdG8gZW5hYmxlIHRoZSBleHRlbnNpb24uCisrICovCisrdm9pZCAgICAgICAgICAgIGJ1c19l bmdpbmVfcHJveHlfcGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzRW5naW5lUHJveHkgICAgICplbmdp bmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJp YW50ICAgICAgICAgICAqcGFyYW1ldGVycyk7CisrCisgR19FTkRfREVDTFMKKyAjZW5kaWYKK2Rp ZmYgLS1naXQgYS9idXMvaWJ1c2ltcGwuYyBiL2J1cy9pYnVzaW1wbC5jCitpbmRleCBhNGNlM2Q5 ZC4uZWMxY2FlYTggMTAwNjQ0CistLS0gYS9idXMvaWJ1c2ltcGwuYworKysrIGIvYnVzL2lidXNp bXBsLmMKK0BAIC03NCw3ICs3NCw4IEBAIHN0cnVjdCBfQnVzSUJ1c0ltcGwgeworIAorICAgICBC dXNJbnB1dENvbnRleHQgKmZvY3VzZWRfY29udGV4dDsKKyAgICAgQnVzUGFuZWxQcm94eSAgICpw YW5lbDsKKy0gICAgQnVzUGFuZWxQcm94eSAgICpleHRlbnNpb247CisrICAgIEJ1c1BhbmVsUHJv eHkgICAqZW1vamlfZXh0ZW5zaW9uOworKyAgICBnYm9vbGVhbiAgICAgICAgIGVuYWJsZV9lbW9q aV9leHRlbnNpb247CisgCisgICAgIC8qIGEgZGVmYXVsdCBrZXltYXAgb2YgaWJ1cy1kYWVtb24g KHVzdWFsbHkgInVzIikgd2hpY2ggaXMgdXNlZCBvbmx5CisgICAgICAqIHdoZW4gdXNlX3N5c19s YXlvdXQgaXMgRkFMU0UuICovCitAQCAtODMsNiArODQsNyBAQCBzdHJ1Y3QgX0J1c0lCdXNJbXBs IHsKKyAgICAgZ2Jvb2xlYW4gdXNlX2dsb2JhbF9lbmdpbmU7CisgICAgIGdjaGFyICpnbG9iYWxf ZW5naW5lX25hbWU7CisgICAgIGdjaGFyICpnbG9iYWxfcHJldmlvdXNfZW5naW5lX25hbWU7Cisr ICAgIEdWYXJpYW50ICpleHRlbnNpb25fcmVnaXN0ZXJfa2V5czsKKyB9OworIAorIHN0cnVjdCBf QnVzSUJ1c0ltcGxDbGFzcyB7CitAQCAtMjk0LDQwICsyOTYsMTU4IEBAIF9wYW5lbF9kZXN0cm95 X2NiIChCdXNQYW5lbFByb3h5ICpwYW5lbCwKKyAKKyAgICAgaWYgKGlidXMtPnBhbmVsID09IHBh bmVsKQorICAgICAgICAgaWJ1cy0+cGFuZWwgPSBOVUxMOworLSAgICBlbHNlIGlmIChpYnVzLT5l eHRlbnNpb24gPT0gcGFuZWwpCistICAgICAgICBpYnVzLT5leHRlbnNpb24gPSBOVUxMOworKyAg ICBlbHNlIGlmIChpYnVzLT5lbW9qaV9leHRlbnNpb24gPT0gcGFuZWwpCisrICAgICAgICBpYnVz LT5lbW9qaV9leHRlbnNpb24gPSBOVUxMOworICAgICBlbHNlCisgICAgICAgICBnX3JldHVybl9p Zl9yZWFjaGVkICgpOworICAgICBnX29iamVjdF91bnJlZiAocGFuZWwpOworIH0KKyAKKyBzdGF0 aWMgdm9pZAorLWJ1c19pYnVzX2ltcGxfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChCdXNJQnVz SW1wbCAqaWJ1cywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Zh cmlhbnQgICAgKnBhcmFtZXRlcnMpCisrYnVzX2lidXNfaW1wbF9zZXRfcGFuZWxfZXh0ZW5zaW9u X21vZGUgKEJ1c0lCdXNJbXBsICAgICAgICAqaWJ1cywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCkKKyB7CistICAgIGlm ICghaWJ1cy0+ZXh0ZW5zaW9uKSB7CisrICAgIGdib29sZWFuIGlzX2V4dGVuc2lvbiA9IEZBTFNF OworKyAgICBnX3JldHVybl9pZl9mYWlsIChCVVNfSVNfSUJVU19JTVBMIChpYnVzKSk7CisrICAg IGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfRVhURU5TSU9OX0VWRU5UIChldmVudCkpOworKwor KyAgICBpZiAoIWlidXMtPmVtb2ppX2V4dGVuc2lvbikgeworICAgICAgICAgZ193YXJuaW5nICgi UGFuZWwgZXh0ZW5zaW9uIGlzIG5vdCBydW5uaW5nLiIpOworICAgICAgICAgcmV0dXJuOworICAg ICB9CisgCistICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19JU19JQlVTX0lNUEwgKGlidXMpKTsK Ky0gICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX1BBTkVMX1BST1hZIChpYnVzLT5leHRlbnNp b24pKTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX1BBTkVMX1BST1hZIChpYnVzLT5l bW9qaV9leHRlbnNpb24pKTsKKysKKysgICAgaWJ1cy0+ZW5hYmxlX2Vtb2ppX2V4dGVuc2lvbiA9 IGlidXNfZXh0ZW5zaW9uX2V2ZW50X2lzX2VuYWJsZWQgKGV2ZW50KTsKKysgICAgaXNfZXh0ZW5z aW9uID0gaWJ1c19leHRlbnNpb25fZXZlbnRfaXNfZXh0ZW5zaW9uIChldmVudCk7CisrICAgIGlm IChpYnVzLT5mb2N1c2VkX2NvbnRleHQgIT0gTlVMTCkgeworKyAgICAgICAgaWYgKGlidXMtPmVu YWJsZV9lbW9qaV9leHRlbnNpb24pIHsKKysgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9z ZXRfZW1vamlfZXh0ZW5zaW9uIChpYnVzLT5mb2N1c2VkX2NvbnRleHQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1cy0+ZW1vamlfZXh0ZW5z aW9uKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRf c2V0X2Vtb2ppX2V4dGVuc2lvbiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0LCBOVUxMKTsKKysgICAg ICAgIH0KKysgICAgICAgIGlmIChpc19leHRlbnNpb24pCisrICAgICAgICAgICAgYnVzX2lucHV0 X2NvbnRleHRfcGFuZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChpYnVzLT5mb2N1c2VkX2NvbnRleHQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBldmVudCk7CisrICAgIH0KKysgICAgaWYgKGlzX2V4dGVuc2lvbikKKysgICAgICAgIHJldHVy bjsKKyAKKyAgICAgLyogVXNlIHRoZSBEQnVzIG1ldGhvZCBiZWNhdXNlIGl0IHNlZW1zIGFueSBE QnVzIHNpZ25hbCwKKyAgICAgICogZ19kYnVzX21lc3NhZ2VfbmV3X3NpZ25hbCgpLCBjYW5ub3Qg YmUgcmVhY2hlZCB0byB0aGUgc2VydmVyLiAqLworLSAgICBnX2RidXNfcHJveHlfY2FsbCAoR19E QlVTX1BST1hZIChpYnVzLT5leHRlbnNpb24pLAorLSAgICAgICAgICAgICAgICAgICAgICAgIlBh bmVsRXh0ZW5zaW9uUmVjZWl2ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1ldGVy cywKKy0gICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCistICAg ICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwgTlVMTCk7CisrICAgIGJ1c19wYW5l bF9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQgKGlidXMtPmVtb2ppX2V4dGVuc2lvbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQpOwor K30KKysKKytzdGF0aWMgdm9pZAorK2J1c19pYnVzX2ltcGxfc2V0X3BhbmVsX2V4dGVuc2lvbl9r ZXlzIChCdXNJQnVzSW1wbCAqaWJ1cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgR1ZhcmlhbnQgICAgKnBhcmFtZXRlcnMpCisreworKyAgICBCdXNFbmdpbmVQcm94 eSAqZW5naW5lID0gTlVMTDsKKysKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX0lCVVNf SU1QTCAoaWJ1cykpOworKyAgICBnX3JldHVybl9pZl9mYWlsIChwYXJhbWV0ZXJzKTsKKysKKysg ICAgaWYgKCFpYnVzLT5lbW9qaV9leHRlbnNpb24pIHsKKysgICAgICAgIGdfd2FybmluZyAoIlBh bmVsIGV4dGVuc2lvbiBpcyBub3QgcnVubmluZy4iKTsKKysgICAgICAgIHJldHVybjsKKysgICAg fQorKworKyAgICBpZiAoaWJ1cy0+ZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMpCisrICAgICAgICBn X3ZhcmlhbnRfdW5yZWYgKGlidXMtPmV4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzKTsKKysgICAgaWJ1 cy0+ZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMgPSBnX3ZhcmlhbnRfcmVmX3NpbmsgKHBhcmFtZXRl cnMpOworKyAgICBpZiAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0ICE9IE5VTEwpIHsKKysgICAgICAg ICAgICBlbmdpbmUgPSBidXNfaW5wdXRfY29udGV4dF9nZXRfZW5naW5lIChpYnVzLT5mb2N1c2Vk X2NvbnRleHQpOworKyAgICB9CisrICAgIGlmICghZW5naW5lKQorKyAgICAgICAgcmV0dXJuOwor KyAgICBidXNfZW5naW5lX3Byb3h5X3BhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzIChlbmdp bmUsIHBhcmFtZXRlcnMpOworIH0KKyAKKyBzdGF0aWMgdm9pZAorLV9wYW5lbF9wYW5lbF9leHRl bnNpb25fY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgIEdWYXJpYW50ICAgICAgKnBhcmFtZXRlcnMsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgQnVzSUJ1c0ltcGwgICppYnVzKQorK19wYW5lbF9wYW5lbF9leHRlbnNpb25fY2IgKEJ1c1Bh bmVsUHJveHkgICAgICAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4 dGVuc2lvbkV2ZW50ICpldmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVz SW1wbCAgICAgICAgKmlidXMpCisgeworLSAgICBidXNfaWJ1c19pbXBsX3BhbmVsX2V4dGVuc2lv bl9yZWNlaXZlZCAoaWJ1cywgcGFyYW1ldGVycyk7CisrICAgIGJ1c19pYnVzX2ltcGxfc2V0X3Bh bmVsX2V4dGVuc2lvbl9tb2RlIChpYnVzLCBldmVudCk7CisrfQorKworK3N0YXRpYyB2b2lkCisr X3BhbmVsX3BhbmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzX2NiIChCdXNJbnB1dENvbnRleHQg KmNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFy aWFudCAgICAgICAgKnBhcmFtZXRlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBCdXNJQnVzSW1wbCAgICAgKmlidXMpCisreworKyAgICBidXNfaWJ1c19pbXBs X3NldF9wYW5lbF9leHRlbnNpb25fa2V5cyAoaWJ1cywgcGFyYW1ldGVycyk7CisrfQorKworK3N0 YXRpYyB2b2lkCisrX3BhbmVsX3VwZGF0ZV9wcmVlZGl0X3RleHRfcmVjZWl2ZWRfY2IgKEJ1c1Bh bmVsUHJveHkgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQnVzVGV4dCAgICAgICp0ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBndWludCAgICAgICAgICBjdXJzb3JfcG9zLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICB2aXNpYmxlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICppYnVzKQorK3sKKysg ICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOworKworKyAgICBp ZiAoIWlidXMtPmZvY3VzZWRfY29udGV4dCkKKysgICAgICAgIHJldHVybjsKKysgICAgYnVzX2lu cHV0X2NvbnRleHRfdXBkYXRlX3ByZWVkaXRfdGV4dCAoaWJ1cy0+Zm9jdXNlZF9jb250ZXh0LAor KyAgICAgICAgdGV4dCwgY3Vyc29yX3BvcywgdmlzaWJsZSwgSUJVU19FTkdJTkVfUFJFRURJVF9D TEVBUiwgRkFMU0UpOworK30KKysKKytzdGF0aWMgdm9pZAorK19wYW5lbF91cGRhdGVfbG9va3Vw X3RhYmxlX3JlY2VpdmVkX2NiIChCdXNQYW5lbFByb3h5ICAgKnBhbmVsLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTG9va3VwVGFibGUgKnRhYmxlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgIHZp c2libGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c0lCdXNJ bXBsICAgICAqaWJ1cykKKyt7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKEJVU19JU19JQlVTX0lN UEwgKGlidXMpKTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoSUJVU19JU19MT09LVVBfVEFCTEUg KHRhYmxlKSk7CisrCisrICAgIGlmICghaWJ1cy0+Zm9jdXNlZF9jb250ZXh0KQorKyAgICAgICAg cmV0dXJuOworKyAgICAvKiBDYWxsIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9sb29rdXBfdGFi bGUoKSBpbnN0ZWFkIG9mCisrICAgICAqIGJ1c19wYW5lbF9wcm94eV91cGRhdGVfbG9va3VwX3Rh YmxlKCkgZm9yIHBhbmVsIGV4dGVuc2lvbnMgYmVjYXVzZQorKyAgICAgKiBidXNfaW5wdXRfY29u dGV4dF9wYWdlX3VwKCkgY2FuIGNhbGwgYnVzX3BhbmVsX3Byb3h5X3BhZ2VfdXBfcmVjZWl2ZWQo KS4KKysgICAgICovCisrICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9sb29rdXBfdGFibGUg KAorKyAgICAgICAgICAgIGlidXMtPmZvY3VzZWRfY29udGV4dCwgdGFibGUsIHZpc2libGUsIFRS VUUpOworK30KKysKKytzdGF0aWMgdm9pZAorK19wYW5lbF91cGRhdGVfYXV4aWxpYXJ5X3RleHRf cmVjZWl2ZWRfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgKnRleHQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgdmlzaWJsZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICpp YnVzKQorK3sKKysgICAgZ19yZXR1cm5faWZfZmFpbCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykp OworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1RFWFQgKHRleHQpKTsKKysKKysgICAg aWYgKCFpYnVzLT5wYW5lbCkKKysgICAgICAgIHJldHVybjsKKysgICAgYnVzX3BhbmVsX3Byb3h5 X3VwZGF0ZV9hdXhpbGlhcnlfdGV4dCAoCisrICAgICAgICAgICAgaWJ1cy0+cGFuZWwsIHRleHQs IHZpc2libGUpOworK30KKysKKytzdGF0aWMgdm9pZAorK19wYW5lbF9zaG93X2xvb2t1cF90YWJs ZV9yZWNlaXZlZF9jYiAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICppYnVzKQorK3sKKysgICAgZ19yZXR1 cm5faWZfZmFpbCAoQlVTX0lTX0lCVVNfSU1QTCAoaWJ1cykpOworKworKyAgICBpZiAoaWJ1cy0+ cGFuZWwpCisrICAgICAgICBidXNfcGFuZWxfcHJveHlfc2hvd19sb29rdXBfdGFibGUgKGlidXMt PnBhbmVsKTsKKyt9CisrCisrc3RhdGljIHZvaWQKKytfcGFuZWxfaGlkZV9sb29rdXBfdGFibGVf cmVjZWl2ZWRfY2IgKEJ1c1BhbmVsUHJveHkgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQnVzSUJ1c0ltcGwgICAqaWJ1cykKKyt7CisrICAgIGdfcmV0dXJu X2lmX2ZhaWwgKEJVU19JU19JQlVTX0lNUEwgKGlidXMpKTsKKysKKysgICAgaWYgKGlidXMtPnBh bmVsKQorKyAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2hpZGVfbG9va3VwX3RhYmxlIChpYnVzLT5w YW5lbCk7CisgfQorIAorIHN0YXRpYyB2b2lkCitAQCAtMzYxLDggKzQ4MSw4IEBAIF9kYnVzX25h bWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0ltcGwgICAqZGJ1cywKKyAKKyAgICAgaWYgKCFn X3N0cmNtcDAgKG5hbWUsIElCVVNfU0VSVklDRV9QQU5FTCkpCisgICAgICAgICBwYW5lbF90eXBl ID0gUEFORUxfVFlQRV9QQU5FTDsKKy0gICAgZWxzZSBpZiAoIWdfc3RyY21wMCAobmFtZSwgSUJV U19TRVJWSUNFX1BBTkVMX0VYVEVOU0lPTikpCistICAgICAgICBwYW5lbF90eXBlID0gUEFORUxf VFlQRV9FWFRFTlNJT047CisrICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKG5hbWUsIElCVVNfU0VS VklDRV9QQU5FTF9FWFRFTlNJT05fRU1PSkkpKQorKyAgICAgICAgcGFuZWxfdHlwZSA9IFBBTkVM X1RZUEVfRVhURU5TSU9OX0VNT0pJOworIAorICAgICBpZiAocGFuZWxfdHlwZSAhPSBQQU5FTF9U WVBFX05PTkUpIHsKKyAgICAgICAgIGlmIChnX3N0cmNtcDAgKG5ld19uYW1lLCAiIikgIT0gMCkg eworQEAgLTM3MCw3ICs0OTAsNyBAQCBfZGJ1c19uYW1lX293bmVyX2NoYW5nZWRfY2IgKEJ1c0RC dXNJbXBsICAgKmRidXMsCisgICAgICAgICAgICAgQnVzQ29ubmVjdGlvbiAqY29ubmVjdGlvbjsK KyAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgKmNvbnRleHQgPSBOVUxMOworICAgICAgICAg ICAgIEJ1c1BhbmVsUHJveHkgICAqKnBhbmVsID0gKHBhbmVsX3R5cGUgPT0gUEFORUxfVFlQRV9Q QU5FTCkgPworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpYnVzLT5w YW5lbCA6ICZpYnVzLT5leHRlbnNpb247CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmaWJ1cy0+cGFuZWwgOiAmaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uOworIAorICAgICAg ICAgICAgIGlmICgqcGFuZWwgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICBpYnVzX3Byb3h5 X2Rlc3Ryb3kgKChJQnVzUHJveHkgKikoKnBhbmVsKSk7CitAQCAtMzgzLDYgKzUwMyw4IEBAIF9k YnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0ltcGwgICAqZGJ1cywKKyAgICAgICAg ICAgICBnX3JldHVybl9pZl9mYWlsIChjb25uZWN0aW9uICE9IE5VTEwpOworIAorICAgICAgICAg ICAgICpwYW5lbCA9IGJ1c19wYW5lbF9wcm94eV9uZXcgKGNvbm5lY3Rpb24sIHBhbmVsX3R5cGUp OworKyAgICAgICAgICAgIGlmIChwYW5lbF90eXBlID09IFBBTkVMX1RZUEVfRVhURU5TSU9OX0VN T0pJKQorKyAgICAgICAgICAgICAgICBpYnVzLT5lbmFibGVfZW1vamlfZXh0ZW5zaW9uID0gRkFM U0U7CisgCisgICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAoKnBhbmVsLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJkZXN0cm95IiwKK0BAIC0zOTIsNiArNTE0LDI2IEBAIF9k YnVzX25hbWVfb3duZXJfY2hhbmdlZF9jYiAoQnVzREJ1c0ltcGwgICAqZGJ1cywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicGFuZWwtZXh0ZW5zaW9uIiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxfcGFuZWxfZXh0ZW5zaW9uX2NiKSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzKTsKKysgICAgICAgICAgICBnX3Np Z25hbF9jb25uZWN0ICgqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBh bmVsLWV4dGVuc2lvbi1yZWdpc3Rlci1rZXlzIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBHX0NBTExCQUNLICgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF9wYW5lbF9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5c19jYiksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgaWJ1cyk7CisrICAgICAgICAgICAgZ19zaWduYWxfY29ubmVjdCAo CisrICAgICAgICAgICAgICAgICAgICAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAidXBk YXRlLXByZWVkaXQtdGV4dC1yZWNlaXZlZCIsCisrICAgICAgICAgICAgICAgICAgICBHX0NBTExC QUNLIChfcGFuZWxfdXBkYXRlX3ByZWVkaXRfdGV4dF9yZWNlaXZlZF9jYiksCisrICAgICAgICAg ICAgICAgICAgICBpYnVzKTsKKysgICAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0ICgKKysgICAg ICAgICAgICAgICAgICAgICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICJ1cGRhdGUtbG9v a3VwLXRhYmxlLXJlY2VpdmVkIiwKKysgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sgKF9w YW5lbF91cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVkX2NiKSwKKysgICAgICAgICAgICAgICAg ICAgIGlidXMpOworKyAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QgKAorKyAgICAgICAgICAg ICAgICAgICAgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgInVwZGF0ZS1hdXhpbGlhcnkt dGV4dC1yZWNlaXZlZCIsCisrICAgICAgICAgICAgICAgICAgICBHX0NBTExCQUNLIChfcGFuZWxf dXBkYXRlX2F1eGlsaWFyeV90ZXh0X3JlY2VpdmVkX2NiKSwKKysgICAgICAgICAgICAgICAgICAg IGlidXMpOworIAorICAgICAgICAgICAgIGlmIChpYnVzLT5mb2N1c2VkX2NvbnRleHQgIT0gTlVM TCkgeworICAgICAgICAgICAgICAgICBjb250ZXh0ID0gaWJ1cy0+Zm9jdXNlZF9jb250ZXh0Owor QEAgLTQ1MCw3ICs1OTIsNyBAQCBidXNfaWJ1c19pbXBsX2luaXQgKEJ1c0lCdXNJbXBsICppYnVz KQorICAgICBpYnVzLT5jb250ZXh0cyA9IE5VTEw7CisgICAgIGlidXMtPmZvY3VzZWRfY29udGV4 dCA9IE5VTEw7CisgICAgIGlidXMtPnBhbmVsID0gTlVMTDsKKy0gICAgaWJ1cy0+ZXh0ZW5zaW9u ID0gTlVMTDsKKysgICAgaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uID0gTlVMTDsKKyAKKyAgICAgaWJ1 cy0+a2V5bWFwID0gaWJ1c19rZXltYXBfZ2V0ICgidXMiKTsKKyAKK0BAIC02NTAsMTEgKzc5Miwx MSBAQCBidXNfaWJ1c19pbXBsX3NldF9jb250ZXh0X2VuZ2luZV9mcm9tX2Rlc2MgKEJ1c0lCdXNJ bXBsICAgICAqaWJ1cywKKyB9CisgCisgc3RhdGljIHZvaWQKKy1fY29udGV4dF9wYW5lbF9leHRl bnNpb25fY2IgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEdWYXJpYW50ICAgICAgICAqcGFyYW1ldGVycywKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEJ1c0lCdXNJbXBsICAgICAqaWJ1cykKKytfY29udGV4dF9wYW5lbF9leHRl bnNpb25fY2IgKEJ1c0lucHV0Q29udGV4dCAgICAqY29udGV4dCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBCdXNJQnVzSW1wbCAgICAgICAgKmlidXMpCisgeworLSAgICBidXNfaWJ1 c19pbXBsX3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoaWJ1cywgcGFyYW1ldGVycyk7CisrICAg IGJ1c19pYnVzX2ltcGxfc2V0X3BhbmVsX2V4dGVuc2lvbl9tb2RlIChpYnVzLCBldmVudCk7Cisg fQorIAorIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgeworQEAgLTY5NCwxMyArODM2LDE4IEBAIGJ1c19p YnVzX2ltcGxfc2V0X2ZvY3VzZWRfY29udGV4dCAoQnVzSUJ1c0ltcGwgICAgICppYnVzLAorICAg ICAgICAgICAgIGlmIChlbmdpbmUpIHsKKyAgICAgICAgICAgICAgICAgZ19vYmplY3RfcmVmIChl bmdpbmUpOworICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lIChp YnVzLT5mb2N1c2VkX2NvbnRleHQsIE5VTEwpOworKyAgICAgICAgICAgICAgICBidXNfaW5wdXRf Y29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uIChpYnVzLT5mb2N1c2VkX2NvbnRleHQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwp OworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKyAgICAgICAgIGlmIChpYnVzLT5wYW5l bCAhPSBOVUxMKQorICAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19vdXQgKGlidXMt PnBhbmVsLCBpYnVzLT5mb2N1c2VkX2NvbnRleHQpOworLSAgICAgICAgaWYgKGlidXMtPmV4dGVu c2lvbiAhPSBOVUxMKQorLSAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9mb2N1c19vdXQgKGli dXMtPmV4dGVuc2lvbiwgaWJ1cy0+Zm9jdXNlZF9jb250ZXh0KTsKKysgICAgICAgIGlmIChpYnVz LT5lbW9qaV9leHRlbnNpb24gIT0gTlVMTCkgeworKyAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94 eV9mb2N1c19vdXQgKGlidXMtPmVtb2ppX2V4dGVuc2lvbiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBpYnVzLT5mb2N1c2VkX2NvbnRleHQpOworKyAgICAgICAgfQor KyAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbiAoaWJ1cy0+Zm9j dXNlZF9jb250ZXh0LCBOVUxMKTsKKyAKKyAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2dldF9j b250ZW50X3R5cGUgKGlidXMtPmZvY3VzZWRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICZwdXJwb3NlLCAmaGludHMpOworQEAgLTcyNCw2ICs4 NzEsMTIgQEAgYnVzX2lidXNfaW1wbF9zZXRfZm9jdXNlZF9jb250ZXh0IChCdXNJQnVzSW1wbCAg ICAgKmlidXMsCisgICAgICAgICBpZiAoZW5naW5lICE9IE5VTEwpIHsKKyAgICAgICAgICAgICBi dXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lIChjb250ZXh0LCBlbmdpbmUpOworICAgICAgICAg ICAgIGJ1c19pbnB1dF9jb250ZXh0X2VuYWJsZSAoY29udGV4dCk7CisrICAgICAgICAgICAgaWYg KGlidXMtPmVuYWJsZV9lbW9qaV9leHRlbnNpb24pIHsKKysgICAgICAgICAgICAgICAgYnVzX2lu cHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbiAoY29udGV4dCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1cy0+ZW1vamlfZXh0 ZW5zaW9uKTsKKysgICAgICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBidXNfaW5w dXRfY29udGV4dF9zZXRfZW1vamlfZXh0ZW5zaW9uIChjb250ZXh0LCBOVUxMKTsKKysgICAgICAg ICAgICB9CisgICAgICAgICB9CisgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRT KGNvbnRleHRfc2lnbmFscyk7IGkrKykgeworICAgICAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qg KGlidXMtPmZvY3VzZWRfY29udGV4dCwKK0BAIC03MzQsOCArODg3LDggQEAgYnVzX2lidXNfaW1w bF9zZXRfZm9jdXNlZF9jb250ZXh0IChCdXNJQnVzSW1wbCAgICAgKmlidXMsCisgCisgICAgICAg ICBpZiAoaWJ1cy0+cGFuZWwgIT0gTlVMTCkKKyAgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlf Zm9jdXNfaW4gKGlidXMtPnBhbmVsLCBjb250ZXh0KTsKKy0gICAgICAgIGlmIChpYnVzLT5leHRl bnNpb24gIT0gTlVMTCkKKy0gICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfZm9jdXNfaW4gKGli dXMtPmV4dGVuc2lvbiwgY29udGV4dCk7CisrICAgICAgICBpZiAoaWJ1cy0+ZW1vamlfZXh0ZW5z aW9uICE9IE5VTEwpCisrICAgICAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2ZvY3VzX2luIChpYnVz LT5lbW9qaV9leHRlbnNpb24sIGNvbnRleHQpOworICAgICB9CisgCisgICAgIGlmIChlbmdpbmUg IT0gTlVMTCkKK0BAIC03NTEsNiArOTA0LDEyIEBAIGJ1c19pYnVzX2ltcGxfc2V0X2dsb2JhbF9l bmdpbmUgKEJ1c0lCdXNJbXBsICAgICppYnVzLAorIAorICAgICBpZiAoaWJ1cy0+Zm9jdXNlZF9j b250ZXh0KSB7CisgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lIChpYnVzLT5m b2N1c2VkX2NvbnRleHQsIGVuZ2luZSk7CisrICAgICAgICBpZiAoaWJ1cy0+ZW5hYmxlX2Vtb2pp X2V4dGVuc2lvbikgeworKyAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbW9qaV9l eHRlbnNpb24gKGlidXMtPmZvY3VzZWRfY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzLT5lbW9qaV9leHRlbnNpb24pOworKyAg ICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW1vamlf ZXh0ZW5zaW9uIChpYnVzLT5mb2N1c2VkX2NvbnRleHQsIE5VTEwpOworKyAgICAgICAgfQorICAg ICB9IGVsc2UgaWYgKGlidXMtPmZha2VfY29udGV4dCkgeworICAgICAgICAgYnVzX2lucHV0X2Nv bnRleHRfc2V0X2VuZ2luZSAoaWJ1cy0+ZmFrZV9jb250ZXh0LCBlbmdpbmUpOworICAgICB9CitA QCAtOTI3LDkgKzEwODYsOSBAQCBfY29udGV4dF9kZXN0cm95X2NiIChCdXNJbnB1dENvbnRleHQg ICAgKmNvbnRleHQsCisgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9nZXRfY2FwYWJpbGl0aWVz IChjb250ZXh0KSAmIElCVVNfQ0FQX0ZPQ1VTKSB7CisgICAgICAgICBidXNfcGFuZWxfcHJveHlf ZGVzdHJveV9jb250ZXh0IChpYnVzLT5wYW5lbCwgY29udGV4dCk7CisgICAgIH0KKy0gICAgaWYg KGlidXMtPmV4dGVuc2lvbiAmJgorKyAgICBpZiAoaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uICYmCisg ICAgICAgICBidXNfaW5wdXRfY29udGV4dF9nZXRfY2FwYWJpbGl0aWVzIChjb250ZXh0KSAmIElC VVNfQ0FQX0ZPQ1VTKSB7CistICAgICAgICBidXNfcGFuZWxfcHJveHlfZGVzdHJveV9jb250ZXh0 IChpYnVzLT5leHRlbnNpb24sIGNvbnRleHQpOworKyAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2Rl c3Ryb3lfY29udGV4dCAoaWJ1cy0+ZW1vamlfZXh0ZW5zaW9uLCBjb250ZXh0KTsKKyAgICAgfQor IAorICAgICBpYnVzLT5jb250ZXh0cyA9IGdfbGlzdF9yZW1vdmUgKGlidXMtPmNvbnRleHRzLCBj b250ZXh0KTsKK0BAIC0xNDg5LDYgKzE2NDgsNyBAQCBfaWJ1c19zZXRfZ2xvYmFsX2VuZ2luZV9y ZWFkeV9jYiAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0LAorICAgICBlbHNlIHsKKyAg ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGRhdGEtPmludm9j YXRpb24sIE5VTEwpOworIAorKyAgICAgICAgQnVzRW5naW5lUHJveHkgKmVuZ2luZSA9IGJ1c19p bnB1dF9jb250ZXh0X2dldF9lbmdpbmUgKGNvbnRleHQpOworICAgICAgICAgaWYgKGlidXMtPnVz ZV9nbG9iYWxfZW5naW5lICYmIChjb250ZXh0ICE9IGlidXMtPmZvY3VzZWRfY29udGV4dCkpIHsK KyAgICAgICAgICAgICAvKiBjb250ZXh0IGFuZCBpYnVzLT5mb2N1c2VkX2NvbnRleHQgZG9uJ3Qg bWF0Y2guIFRoaXMgbWVhbnMgdGhhdAorICAgICAgICAgICAgICAqIHRoZSBmb2N1cyBpcyBtb3Zl ZCBiZWZvcmUgX2lidXNfc2V0X2dsb2JhbF9lbmdpbmUoKSBhc3luY2hyb25vdXMKK0BAIC0xNDk2 LDE0ICsxNjU2LDI4IEBAIF9pYnVzX3NldF9nbG9iYWxfZW5naW5lX3JlYWR5X2NiIChCdXNJbnB1 dENvbnRleHQgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICogYmVpbmcgZm9jdXNlZCBo YXNuJ3QgYmVlbiB1cGRhdGVkLiBVcGRhdGUgdGhlIGVuZ2luZSBoZXJlIHNvIHRoYXQKKyAgICAg ICAgICAgICAgKiBzdWJzZXF1ZW50IF9pYnVzX2dldF9nbG9iYWxfZW5naW5lKCkgY2FsbCBjb3Vs ZCByZXR1cm4gYQorICAgICAgICAgICAgICAqIGNvbnNpc3RlbnQgZW5naW5lIG5hbWUuICovCist ICAgICAgICAgICAgQnVzRW5naW5lUHJveHkgKmVuZ2luZSA9IGJ1c19pbnB1dF9jb250ZXh0X2dl dF9lbmdpbmUgKGNvbnRleHQpOworICAgICAgICAgICAgIGlmIChlbmdpbmUgJiYgaWJ1cy0+Zm9j dXNlZF9jb250ZXh0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgZ19vYmplY3RfcmVmIChl bmdpbmUpOworICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lIChj b250ZXh0LCBOVUxMKTsKKysgICAgICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vt b2ppX2V4dGVuc2lvbiAoY29udGV4dCwgTlVMTCk7CisgICAgICAgICAgICAgICAgIGJ1c19pbnB1 dF9jb250ZXh0X3NldF9lbmdpbmUgKGlidXMtPmZvY3VzZWRfY29udGV4dCwgZW5naW5lKTsKKysg ICAgICAgICAgICAgICAgaWYgKGlidXMtPmVuYWJsZV9lbW9qaV9leHRlbnNpb24pIHsKKysgICAg ICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbW9qaV9leHRlbnNpb24gKAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYnVzLT5mb2N1c2VkX2NvbnRleHQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlidXMtPmVtb2ppX2V4dGVuc2lvbik7CisrICAgICAg ICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4 dF9zZXRfZW1vamlfZXh0ZW5zaW9uICgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWJ1 cy0+Zm9jdXNlZF9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsK KysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZiAoZW5n aW5lKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisrICAgICAgICBpZiAoZW5naW5lICYm IGlidXMtPmV4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzKSB7CisrICAgICAgICAgICAgYnVzX2VuZ2lu ZV9wcm94eV9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJfa2V5cyAoCisrICAgICAgICAgICAgICAg ICAgICBlbmdpbmUsCisrICAgICAgICAgICAgICAgICAgICBpYnVzLT5leHRlbnNpb25fcmVnaXN0 ZXJfa2V5cyk7CisrICAgICAgICB9CisgICAgIH0KKyAKKyAgICAgZ19vYmplY3RfdW5yZWYgKGli dXMpOworQEAgLTIwMTMsMTEgKzIxODcsMTIgQEAgYnVzX2lidXNfaW1wbF9yZWdpc3RyeV9kZXN0 cm95IChCdXNJQnVzSW1wbCAqaWJ1cykKKyAgICAgZ19saXN0X2ZyZWVfZnVsbCAoaWJ1cy0+Y29t cG9uZW50cywgZ19vYmplY3RfdW5yZWYpOworICAgICBpYnVzLT5jb21wb25lbnRzID0gTlVMTDsK KyAKKy0gICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKGlidXMtPmVuZ2luZV90YWJsZSk7CistICAg IGlidXMtPmVuZ2luZV90YWJsZSA9IE5VTEw7CisrICAgIGdfY2xlYXJfcG9pbnRlciAoJmlidXMt PmVuZ2luZV90YWJsZSwgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kpOworIAorLSAgICBpYnVzX29iamVj dF9kZXN0cm95IChJQlVTX09CSkVDVCAoaWJ1cy0+cmVnaXN0cnkpKTsKKy0gICAgaWJ1cy0+cmVn aXN0cnkgPSBOVUxMOworKyAgICBnX2NsZWFyX3BvaW50ZXIgKCZpYnVzLT5yZWdpc3RyeSwgaWJ1 c19vYmplY3RfZGVzdHJveSk7CisrCisrICAgIGlmIChpYnVzLT5leHRlbnNpb25fcmVnaXN0ZXJf a2V5cykKKysgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJmlidXMtPmV4dGVuc2lvbl9yZWdpc3Rl cl9rZXlzLCBnX3ZhcmlhbnRfdW5yZWYpOworIH0KKyAKKyBzdGF0aWMgZ2ludAorZGlmZiAtLWdp dCBhL2J1cy9pbnB1dGNvbnRleHQuYyBiL2J1cy9pbnB1dGNvbnRleHQuYworaW5kZXggZGZiOThj MzYuLmJmOWVhZmNmIDEwMDY0NAorLS0tIGEvYnVzL2lucHV0Y29udGV4dC5jCisrKysgYi9idXMv aW5wdXRjb250ZXh0LmMKK0BAIC05NCw2ICs5NCw5IEBAIHN0cnVjdCBfQnVzSW5wdXRDb250ZXh0 IHsKKyAgICAgLyogY29udGVudC10eXBlIChwcmltYXJ5IHB1cnBvc2UgYW5kIGhpbnRzKSAqLwor ICAgICBndWludCAgICBwdXJwb3NlOworICAgICBndWludCAgICBoaW50czsKKysKKysgICAgQnVz UGFuZWxQcm94eSAqZW1vamlfZXh0ZW5zaW9uOworKyAgICBnYm9vbGVhbiBpc19leHRlbnNpb25f bG9va3VwX3RhYmxlOworIH07CisgCisgc3RydWN0IF9CdXNJbnB1dENvbnRleHRDbGFzcyB7CitA QCAtMTYyLDE2ICsxNjUsMTIgQEAgc3RhdGljIGdib29sZWFuIGJ1c19pbnB1dF9jb250ZXh0X3Nl cnZpY2Vfc2V0X3Byb3BlcnR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R0Vycm9yICAgICAgICAgICAgICAgKiplcnJvcik7Cisgc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1 dF9jb250ZXh0X3Vuc2V0X2VuZ2luZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKEJ1c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dCk7Cistc3RhdGljIHZvaWQgICAgIGJ1 c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcmVlZGl0X3RleHQKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICAgICAgICp0ZXh0 LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAg ICAgICAgY3Vyc29yX3BvcywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn Ym9vbGVhbiAgICAgICAgICAgICAgIHZpc2libGUsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICBtb2RlKTsKKyBzdGF0aWMgdm9pZCAg ICAgYnVzX2lucHV0X2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHQKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQpOworKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c0lucHV0Q29udGV4dCAgICAgICAq Y29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAg ICAgICAgICAgICAgIGlzX2V4dGVuc2lvbik7Cisgc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1dF9j b250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0KTsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICAgICBp c19leHRlbnNpb24pOworIHN0YXRpYyB2b2lkICAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVf YXV4aWxpYXJ5X3RleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJ bnB1dENvbnRleHQgICAgICAgKmNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSUJ1c1RleHQgICAgICAgICAgICAgICp0ZXh0LAorQEAgLTE4MCwxMCArMTc5LDYg QEAgc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1dF9jb250ZXh0X3Nob3dfYXV4aWxpYXJ5X3RleHQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAg ICAgKmNvbnRleHQpOworIHN0YXRpYyB2b2lkICAgICBidXNfaW5wdXRfY29udGV4dF9oaWRlX2F1 eGlsaWFyeV90ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzSW5w dXRDb250ZXh0ICAgICAgICpjb250ZXh0KTsKKy1zdGF0aWMgdm9pZCAgICAgYnVzX2lucHV0X2Nv bnRleHRfdXBkYXRlX2xvb2t1cF90YWJsZQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKEJ1c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQnVzTG9va3VwVGFibGUgICAgICAgKnRhYmxlLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAgICAgdmlz aWJsZSk7Cisgc3RhdGljIHZvaWQgICAgIGJ1c19pbnB1dF9jb250ZXh0X3Nob3dfbG9va3VwX3Rh YmxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzSW5wdXRDb250ZXh0 ICAgICAgICpjb250ZXh0KTsKKyBzdGF0aWMgdm9pZCAgICAgYnVzX2lucHV0X2NvbnRleHRfaGlk ZV9sb29rdXBfdGFibGUKK0BAIC02MDUsMTAgKzYwMCwxMCBAQCBidXNfaW5wdXRfY29udGV4dF9j bGFzc19pbml0IChCdXNJbnB1dENvbnRleHRDbGFzcyAqY2xhc3MpCisgICAgICAgICAgICAgR19T SUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICBOVUxMLCBOVUxM LAorLSAgICAgICAgICAgIGJ1c19tYXJzaGFsX1ZPSURfX1ZBUklBTlQsCisrICAgICAgICAgICAg YnVzX21hcnNoYWxfVk9JRF9fT0JKRUNULAorICAgICAgICAgICAgIEdfVFlQRV9OT05FLAorICAg ICAgICAgICAgIDEsCistICAgICAgICAgICAgR19UWVBFX1ZBUklBTlQpOworKyAgICAgICAgICAg IElCVVNfVFlQRV9FWFRFTlNJT05fRVZFTlQpOworIAorICAgICB0ZXh0X2VtcHR5ID0gaWJ1c190 ZXh0X25ld19mcm9tX3N0cmluZyAoIiIpOworICAgICBnX29iamVjdF9yZWZfc2luayAodGV4dF9l bXB0eSk7CitAQCAtNzYwLDI4ICs3NTUsODUgQEAgYnVzX2lucHV0X2NvbnRleHRfcHJvcGVydHlf Y2hhbmdlZCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGVycm9yKTsKKyB9CisgCisrCisrLyoqCisrICogX3BhbmVs X3Byb2Nlc3Nfa2V5X2V2ZW50X2NiOgorKyAqCisrICogQSBHQXN5bmNSZWFkeUNhbGxiYWNrIGZ1 bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuCisrICogYnVzX3BhbmVsX3Byb3h5X3Byb2Nlc3Nfa2V5 X2V2ZW50KCkgaXMgZmluaXNoZWQuCisrICovCisrc3RhdGljIHZvaWQKKytfcGFuZWxfcHJvY2Vz c19rZXlfZXZlbnRfY2IgKEdPYmplY3QgICAgICAgICAgICAgICAqc291cmNlLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0FzeW5jUmVzdWx0ICAgICAgICAgICpyZXMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb24p CisreworKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKysgICAgR1ZhcmlhbnQgKnZhbHVlID0g Z19kYnVzX3Byb3h5X2NhbGxfZmluaXNoICgoR0RCdXNQcm94eSAqKXNvdXJjZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXJyb3IpOworKyAgICBp ZiAodmFsdWUgIT0gTlVMTCkgeworKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3Jl dHVybl92YWx1ZSAoaW52b2NhdGlvbiwgdmFsdWUpOworKyAgICAgICAgZ192YXJpYW50X3VucmVm ICh2YWx1ZSk7CisrICAgIH0KKysgICAgZWxzZSB7CisrICAgICAgICBnX2RidXNfbWV0aG9kX2lu dm9jYXRpb25fcmV0dXJuX2dlcnJvciAoaW52b2NhdGlvbiwgZXJyb3IpOworKyAgICAgICAgZ19l cnJvcl9mcmVlIChlcnJvcik7CisrICAgIH0KKyt9CisrCisrdHlwZWRlZiBzdHJ1Y3QgX1Byb2Nl c3NLZXlFdmVudERhdGEgUHJvY2Vzc0tleUV2ZW50RGF0YTsKKytzdHJ1Y3QgX1Byb2Nlc3NLZXlF dmVudERhdGEgeworKyAgICBHREJ1c01ldGhvZEludm9jYXRpb24gKmludm9jYXRpb247CisrICAg IEJ1c0lucHV0Q29udGV4dCAgICAgICAqY29udGV4dDsKKysgICAgZ3VpbnQga2V5dmFsOworKyAg ICBndWludCBrZXljb2RlOworKyAgICBndWludCBtb2RpZmllcnM7CisrfTsKKysKKyAvKioKKyAg KiBfaWNfcHJvY2Vzc19rZXlfZXZlbnRfcmVwbHlfY2I6CisgICoKKy0gKiBBIEdBc3luY1JlYWR5 Q2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gYnVzX2VuZ2luZV9wcm94eV9wcm9j ZXNzX2tleV9ldmVudCgpIGlzIGZpbmlzaGVkLgorKyAqIEEgR0FzeW5jUmVhZHlDYWxsYmFjayBm dW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbgorKyAqIGJ1c19lbmdpbmVfcHJveHlfcHJvY2Vzc19r ZXlfZXZlbnQoKSBpcyBmaW5pc2hlZC4KKyAgKi8KKyBzdGF0aWMgdm9pZAorIF9pY19wcm9jZXNz X2tleV9ldmVudF9yZXBseV9jYiAoR09iamVjdCAgICAgICAgICAgICAgICpzb3VyY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQXN5bmNSZXN1bHQgICAgICAgICAgKnJlcywK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAq aW52b2NhdGlvbikKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NLZXlF dmVudERhdGEgICAqZGF0YSkKKyB7CisrICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2Nh dGlvbiA9IGRhdGEtPmludm9jYXRpb247CisrICAgIEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCA9 IGRhdGEtPmNvbnRleHQ7CisrICAgIGd1aW50IGtleXZhbCA9IGRhdGEtPmtleXZhbDsKKysgICAg Z3VpbnQga2V5Y29kZSA9IGRhdGEtPmtleWNvZGU7CisrICAgIGd1aW50IG1vZGlmaWVycyA9IGRh dGEtPm1vZGlmaWVyczsKKyAgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgICAgIEdWYXJpYW50 ICp2YWx1ZSA9IGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaCAoKEdEQnVzUHJveHkgKilzb3VyY2Us CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9y KTsKKysKKyAgICAgaWYgKHZhbHVlICE9IE5VTEwpIHsKKy0gICAgICAgIGdfZGJ1c19tZXRob2Rf aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIHZhbHVlKTsKKysgICAgICAgIGdi b29sZWFuIHJldHZhbCA9IEZBTFNFOworKyAgICAgICAgZ192YXJpYW50X2dldCAodmFsdWUsICIo YikiLCAmcmV0dmFsKTsKKysgICAgICAgIGlmIChjb250ZXh0LT5lbW9qaV9leHRlbnNpb24gJiYg IXJldHZhbCkgeworKyAgICAgICAgICAgIGJ1c19wYW5lbF9wcm94eV9wcm9jZXNzX2tleV9ldmVu dCAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2V5dmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycywKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChHQXN5bmNSZWFkeUNhbGxiYWNrKQorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcGFuZWxfcHJvY2Vz c19rZXlfZXZlbnRfY2IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpbnZvY2F0aW9uKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgZ19k YnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZSAoaW52b2NhdGlvbiwgdmFsdWUpOwor KyAgICAgICAgfQorICAgICAgICAgZ192YXJpYW50X3VucmVmICh2YWx1ZSk7CisgICAgIH0KKyAg ICAgZWxzZSB7CisgICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX2dlcnJv ciAoaW52b2NhdGlvbiwgZXJyb3IpOworICAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Cisg ICAgIH0KKysKKysgICAgZ19vYmplY3RfdW5yZWYgKGNvbnRleHQpOworKyAgICBnX3NsaWNlX2Zy ZWUgKFByb2Nlc3NLZXlFdmVudERhdGEsIGRhdGEpOworIH0KKyAKKyAvKioKK0BAIC04NDAsMTIg Kzg5MiwxOSBAQCBfaWNfcHJvY2Vzc19rZXlfZXZlbnQgIChCdXNJbnB1dENvbnRleHQgICAgICAg KmNvbnRleHQsCisgCisgICAgIC8qIGlnbm9yZSBrZXkgZXZlbnRzLCBpZiBpdCBpcyBhIGZha2Ug aW5wdXQgY29udGV4dCAqLworICAgICBpZiAoY29udGV4dC0+aGFzX2ZvY3VzICYmIGNvbnRleHQt PmVuZ2luZSAmJiBjb250ZXh0LT5mYWtlID09IEZBTFNFKSB7CisrICAgICAgICBQcm9jZXNzS2V5 RXZlbnREYXRhICpkYXRhID0gZ19zbGljZV9uZXcwIChQcm9jZXNzS2V5RXZlbnREYXRhKTsKKysg ICAgICAgIGRhdGEtPmludm9jYXRpb24gPSBpbnZvY2F0aW9uOworKyAgICAgICAgZGF0YS0+Y29u dGV4dCA9IGdfb2JqZWN0X3JlZiAoY29udGV4dCk7CisrICAgICAgICBkYXRhLT5rZXl2YWwgPSBr ZXl2YWw7CisrICAgICAgICBkYXRhLT5rZXljb2RlID0ga2V5Y29kZTsKKysgICAgICAgIGRhdGEt Pm1vZGlmaWVycyA9IG1vZGlmaWVyczsKKyAgICAgICAgIGJ1c19lbmdpbmVfcHJveHlfcHJvY2Vz c19rZXlfZXZlbnQgKGNvbnRleHQtPmVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGtleXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGtleWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBtb2RpZmllcnMsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoR0FzeW5jUmVhZHlDYWxsYmFjaykgX2ljX3Byb2Nlc3Nfa2V5X2V2ZW50 X3JlcGx5X2NiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW52b2NhdGlvbik7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoR0FzeW5jUmVhZHlDYWxsYmFjaykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBfaWNfcHJvY2Vzc19rZXlfZXZlbnRfcmVwbHlfY2IsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKKyAgICAgfQorICAg ICBlbHNlIHsKKyAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fdmFsdWUg KGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcgKCIoYikiLCBGQUxTRSkpOworQEAgLTg4MCw2ICs5 MzksMTMgQEAgX2ljX3NldF9jdXJzb3JfbG9jYXRpb24gKEJ1c0lucHV0Q29udGV4dCAgICAgICAq Y29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQtPnksCisgICAgICAgICAg ICAgICAgICAgICAgICBjb250ZXh0LT53LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4 dC0+aCk7CisrICAgICAgICBpZiAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uKSB7CisrICAgICAg ICAgICAgYnVzX3BhbmVsX3Byb3h5X3NldF9jdXJzb3JfbG9jYXRpb24gKGNvbnRleHQtPmVtb2pp X2V4dGVuc2lvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29udGV4dC0+eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGV4dC0+eSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29udGV4dC0+dywKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+aCk7CisrICAgICAgICB9CisgICAgIH0K KyB9CisgCitAQCAtOTEyLDYgKzk3OCwxNCBAQCBfaWNfc2V0X2N1cnNvcl9sb2NhdGlvbl9yZWxh dGl2ZSAoQnVzSW5wdXRDb250ZXh0ICAgICAgICpjb250ZXh0LAorICAgICAgICAgICAgICAgICAg ICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHcsCisgICAgICAgICAgICAgICAgICAg ICAgICBoKTsKKysgICAgICAgIGlmIChjb250ZXh0LT5lbW9qaV9leHRlbnNpb24pIHsKKysgICAg ICAgICAgICBidXNfcGFuZWxfcHJveHlfc2V0X2N1cnNvcl9sb2NhdGlvbl9yZWxhdGl2ZSAoCisr ICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5lbW9qaV9leHRlbnNpb24sCisrICAgICAgICAg ICAgICAgICAgICB4LAorKyAgICAgICAgICAgICAgICAgICAgeSwKKysgICAgICAgICAgICAgICAg ICAgIHcsCisrICAgICAgICAgICAgICAgICAgICBoKTsKKysgICAgICAgIH0KKyAgICAgfQorIH0K KyAKK0BAIC0xMzk0LDcgKzE0NjgsNyBAQCBidXNfaW5wdXRfY29udGV4dF9jbGVhcl9wcmVlZGl0 X3RleHQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCkKKyAKKyAgICAgLyogYWx3YXlzIGNsZWFy IHByZWVkaXQgdGV4dCAqLworICAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfcHJlZWRpdF90 ZXh0IChjb250ZXh0LAorLSAgICAgICAgdGV4dF9lbXB0eSwgMCwgRkFMU0UsIElCVVNfRU5HSU5F X1BSRUVESVRfQ0xFQVIpOworKyAgICAgICAgdGV4dF9lbXB0eSwgMCwgRkFMU0UsIElCVVNfRU5H SU5FX1BSRUVESVRfQ0xFQVIsIFRSVUUpOworIH0KKyAKKyB2b2lkCitAQCAtMTQwNyw3ICsxNDgx LDEwIEBAIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX291dCAoQnVzSW5wdXRDb250ZXh0ICpjb250 ZXh0KQorIAorICAgICBidXNfaW5wdXRfY29udGV4dF9jbGVhcl9wcmVlZGl0X3RleHQgKGNvbnRl eHQpOworICAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfYXV4aWxpYXJ5X3RleHQgKGNvbnRl eHQsIHRleHRfZW1wdHksIEZBTFNFKTsKKy0gICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xv b2t1cF90YWJsZSAoY29udGV4dCwgbG9va3VwX3RhYmxlX2VtcHR5LCBGQUxTRSk7CisrICAgIGJ1 c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9sb29rdXBfdGFibGUgKGNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2t1cF90YWJsZV9lbXB0eSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsKKyAgICAgYnVzX2lu cHV0X2NvbnRleHRfcmVnaXN0ZXJfcHJvcGVydGllcyAoY29udGV4dCwgcHJvcHNfZW1wdHkpOwor IAorICAgICBpZiAoY29udGV4dC0+ZW5naW5lKSB7CitAQCAtMTQyNyw3ICsxNTA0LDEyIEBAIGJ1 c19pbnB1dF9jb250ZXh0X2ZvY3VzX291dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0KQorICAg ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgICAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NPTlRF WFQgKGNvbnRleHQpKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXAorLSAgICAgICAgaWYgKGNvbnRleHQtPmhhc19mb2N1cyAmJiBjb250ZXh0LT5lbmdp bmUpIHsgICAgXAorKyAgICAgICAgaWYgKGNvbnRleHQtPmlzX2V4dGVuc2lvbl9sb29rdXBfdGFi bGUgJiYgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgY29udGV4dC0+ ZW1vamlfZXh0ZW5zaW9uKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK KysgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfIyNuYW1lIyNfbG9va3VwX3RhYmxlIChjb250 ZXh0LT5lbW9qaV9leHRlbnNpb24pOyBcCisrICAgICAgICAgICAgcmV0dXJuOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXAorKyAgICAgICAgaWYgKGNvbnRleHQtPmhhc19mb2N1cyAmJiBjb250ZXh0 LT5lbmdpbmUpIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgYnVzX2Vu Z2luZV9wcm94eV8jI25hbWUgKGNvbnRleHQtPmVuZ2luZSk7ICAgICAgICAgICAgICAgICAgICAg IFwKKyAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICB9CitAQCAtMTQ0Nyw2ICsxNTI5LDE0IEBA IGJ1c19pbnB1dF9jb250ZXh0X2NhbmRpZGF0ZV9jbGlja2VkIChCdXNJbnB1dENvbnRleHQgKmNv bnRleHQsCisgeworICAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQp KTsKKyAKKysgICAgaWYgKGNvbnRleHQtPmlzX2V4dGVuc2lvbl9sb29rdXBfdGFibGUgJiYgY29u dGV4dC0+ZW1vamlfZXh0ZW5zaW9uKSB7CisrICAgICAgICBidXNfcGFuZWxfcHJveHlfY2FuZGlk YXRlX2NsaWNrZWRfbG9va3VwX3RhYmxlICgKKysgICAgICAgICAgICAgICAgY29udGV4dC0+ZW1v amlfZXh0ZW5zaW9uLAorKyAgICAgICAgICAgICAgICBpbmRleCwKKysgICAgICAgICAgICAgICAg YnV0dG9uLAorKyAgICAgICAgICAgICAgICBzdGF0ZSk7CisrICAgICAgICAgICAgcmV0dXJuOwor KyAgICB9CisgICAgIGlmIChjb250ZXh0LT5lbmdpbmUpIHsKKyAgICAgICAgIGJ1c19lbmdpbmVf cHJveHlfY2FuZGlkYXRlX2NsaWNrZWQgKGNvbnRleHQtPmVuZ2luZSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LAorQEAgLTE0NjcsNjEgKzE1NTcs MzMgQEAgYnVzX2lucHV0X2NvbnRleHRfcHJvcGVydHlfYWN0aXZhdGUgKEJ1c0lucHV0Q29udGV4 dCAqY29udGV4dCwKKyAgICAgfQorIH0KKyAKKy0vKioKKy0gKiBidXNfaW5wdXRfY29udGV4dF91 cGRhdGVfcHJlZWRpdF90ZXh0OgorLSAqCistICogVXBkYXRlIGEgcHJlZWRpdCB0ZXh0LiBTZW5k IEQtQnVzIHNpZ25hbCB0byB1cGRhdGUgc3RhdHVzIG9mIGNsaWVudCBvciBzZW5kIGdsaWIgc2ln bmFsIHRvIHRoZSBwYW5lbCwgZGVwZW5kaW5nIG9uIGNhcGFiaWxpdGllcyBvZiB0aGUgY2xpZW50 LgorLSAqLworLXN0YXRpYyB2b2lkCistYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX3ByZWVkaXRf dGV4dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAqdGV4dCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgIGN1cnNvcl9wb3MsCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICB2aXNp YmxlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg ICAgICAgbW9kZSkKKy17CistICAgIGdfYXNzZXJ0IChCVVNfSVNfSU5QVVRfQ09OVEVYVCAoY29u dGV4dCkpOworLQorLSAgICBpZiAoY29udGV4dC0+cHJlZWRpdF90ZXh0KSB7CistICAgICAgICBn X29iamVjdF91bnJlZiAoY29udGV4dC0+cHJlZWRpdF90ZXh0KTsKKy0gICAgfQorLQorLSAgICBj b250ZXh0LT5wcmVlZGl0X3RleHQgPSAoSUJ1c1RleHQgKikgZ19vYmplY3RfcmVmX3NpbmsgKHRl eHQgPyB0ZXh0IDogdGV4dF9lbXB0eSk7CistICAgIGNvbnRleHQtPnByZWVkaXRfY3Vyc29yX3Bv cyA9IGN1cnNvcl9wb3M7CistICAgIGNvbnRleHQtPnByZWVkaXRfdmlzaWJsZSA9IHZpc2libGU7 CistICAgIGNvbnRleHQtPnByZWVkaXRfbW9kZSA9IG1vZGU7CistCistICAgIGlmIChQUkVFRElU X0NPTkRJVElPTikgeworLSAgICAgICAgR1ZhcmlhbnQgKnZhcmlhbnQgPSBpYnVzX3NlcmlhbGl6 YWJsZV9zZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICopY29udGV4dC0+cHJlZWRpdF90ZXh0 KTsKKy0gICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2VtaXRfc2lnbmFsIChjb250ZXh0LAorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcGRhdGVQcmVlZGl0VGV4dCIs CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ldyAo Iih2dWIpIiwgdmFyaWFudCwgY29udGV4dC0+cHJlZWRpdF9jdXJzb3JfcG9zLCBjb250ZXh0LT5w cmVlZGl0X3Zpc2libGUpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IE5VTEwpOworLSAgICB9CistICAgIGVsc2UgeworLSAgICAgICAgZ19zaWduYWxfZW1pdCAoY29u dGV4dCwKKy0gICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfc2lnbmFsc1tVUERBVEVfUFJF RURJVF9URVhUXSwKKy0gICAgICAgICAgICAgICAgICAgICAgIDAsCistICAgICAgICAgICAgICAg ICAgICAgICBjb250ZXh0LT5wcmVlZGl0X3RleHQsCistICAgICAgICAgICAgICAgICAgICAgICBj b250ZXh0LT5wcmVlZGl0X2N1cnNvcl9wb3MsCistICAgICAgICAgICAgICAgICAgICAgICBjb250 ZXh0LT5wcmVlZGl0X3Zpc2libGUpOworLSAgICB9CistfQorLQorIC8qKgorICAqIGJ1c19pbnB1 dF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0OgorICAqCisgICogU2hvdyBhIHByZWVkaXQgdGV4 dC4gU2VuZCBELUJ1cyBzaWduYWwgdG8gdXBkYXRlIHN0YXR1cyBvZiBjbGllbnQgb3Igc2VuZCBn bGliIHNpZ25hbCB0byB0aGUgcGFuZWwsIGRlcGVuZGluZyBvbiBjYXBhYmlsaXRpZXMgb2YgdGhl IGNsaWVudC4KKyAgKi8KKyBzdGF0aWMgdm9pZAorLWJ1c19pbnB1dF9jb250ZXh0X3Nob3dfcHJl ZWRpdF90ZXh0IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCisrYnVzX2lucHV0X2NvbnRleHRf c2hvd19wcmVlZGl0X3RleHQgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICBpc19leHRlbnNpb24p CisgeworICAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAK Ky0gICAgaWYgKGNvbnRleHQtPnByZWVkaXRfdmlzaWJsZSkgeworKyAgICBpZiAoY29udGV4dC0+ cHJlZWRpdF92aXNpYmxlKQorICAgICAgICAgcmV0dXJuOworLSAgICB9CisrICAgIGlmICghaXNf ZXh0ZW5zaW9uICYmIGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbikKKysgICAgICAgIHJldHVybjsK KysKKysgICAgaWYgKCFpc19leHRlbnNpb24pCisrICAgICAgICBjb250ZXh0LT5wcmVlZGl0X3Zp c2libGUgPSBUUlVFOworIAorLSAgICBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUgPSBUUlVFOwor KyAgICBpZiAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uICYmICFpc19leHRlbnNpb24pIHsKKysg ICAgICAgIC8qIERvIG5vdCB1c2UgSElERV9QUkVFRElUX1RFWFQgc2lnbmFsIGJlbG93IGJ1dCBj YWxsCisrICAgICAgICAgKiBidXNfcGFuZWxfcHJveHlfaGlkZV9wcmVlZGl0X3RleHQoKSBkaXJl Y3RseSBmb3IgdGhlIGV4dGVuc2lvbiBvbmx5CisrICAgICAgICAgKiBidXQgbm90IGZvciB0aGUg bm9ybWFsIHBhbmVsLgorKyAgICAgICAgICovCisrICAgICAgICBidXNfcGFuZWxfcHJveHlfc2hv d19wcmVlZGl0X3RleHQgKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbik7CisrICAgICAgICByZXR1 cm47CisrICAgIH0KKyAKKyAgICAgaWYgKFBSRUVESVRfQ09ORElUSU9OKSB7CisgICAgICAgICBi dXNfaW5wdXRfY29udGV4dF9lbWl0X3NpZ25hbCAoY29udGV4dCwKK0BAIC0xNTQyLDE1ICsxNjA0 LDI1IEBAIGJ1c19pbnB1dF9jb250ZXh0X3Nob3dfcHJlZWRpdF90ZXh0IChCdXNJbnB1dENvbnRl eHQgKmNvbnRleHQpCisgICogSGlkZSBhIHByZWVkaXQgdGV4dC4gU2VuZCBELUJ1cyBzaWduYWwg dG8gdXBkYXRlIHN0YXR1cyBvZiBjbGllbnQgb3Igc2VuZCBnbGliIHNpZ25hbCB0byB0aGUgcGFu ZWwsIGRlcGVuZGluZyBvbiBjYXBhYmlsaXRpZXMgb2YgdGhlIGNsaWVudC4KKyAgKi8KKyBzdGF0 aWMgdm9pZAorLWJ1c19pbnB1dF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0IChCdXNJbnB1dENv bnRleHQgKmNvbnRleHQpCisrYnVzX2lucHV0X2NvbnRleHRfaGlkZV9wcmVlZGl0X3RleHQgKEJ1 c0lucHV0Q29udGV4dCAqY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2Jvb2xlYW4gICAgICAgICBpc19leHRlbnNpb24pCisgeworICAgICBnX2Fzc2VydCAo QlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAKKy0gICAgaWYgKCFjb250ZXh0LT5w cmVlZGl0X3Zpc2libGUpIHsKKysgICAgaWYgKCFpc19leHRlbnNpb24gJiYgIWNvbnRleHQtPnBy ZWVkaXRfdmlzaWJsZSkKKyAgICAgICAgIHJldHVybjsKKy0gICAgfQorIAorLSAgICBjb250ZXh0 LT5wcmVlZGl0X3Zpc2libGUgPSBGQUxTRTsKKysgICAgaWYgKCFpc19leHRlbnNpb24pCisrICAg ICAgICBjb250ZXh0LT5wcmVlZGl0X3Zpc2libGUgPSBGQUxTRTsKKysKKysgICAgaWYgKGNvbnRl eHQtPmVtb2ppX2V4dGVuc2lvbiAmJiAhaXNfZXh0ZW5zaW9uKSB7CisrICAgICAgICAvKiBEbyBu b3QgdXNlIEhJREVfUFJFRURJVF9URVhUIHNpZ25hbCBiZWxvdyBidXQgY2FsbAorKyAgICAgICAg ICogYnVzX3BhbmVsX3Byb3h5X2hpZGVfcHJlZWRpdF90ZXh0KCkgZGlyZWN0bHkgZm9yIHRoZSBl eHRlbnNpb24gb25seQorKyAgICAgICAgICogYnV0IG5vdCBmb3IgdGhlIG5vcm1hbCBwYW5lbC4K KysgICAgICAgICAqLworKyAgICAgICAgYnVzX3BhbmVsX3Byb3h5X2hpZGVfcHJlZWRpdF90ZXh0 IChjb250ZXh0LT5lbW9qaV9leHRlbnNpb24pOworKyAgICAgICAgcmV0dXJuOworKyAgICB9Cisg CisgICAgIGlmIChQUkVFRElUX0NPTkRJVElPTikgeworICAgICAgICAgYnVzX2lucHV0X2NvbnRl eHRfZW1pdF9zaWduYWwgKGNvbnRleHQsCitAQCAtMTY1OCwxOSArMTczMCwxNSBAQCBidXNfaW5w dXRfY29udGV4dF9oaWRlX2F1eGlsaWFyeV90ZXh0IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQp CisgICAgIH0KKyB9CisgCistLyoqCistICogYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1 cF90YWJsZToKKy0gKgorLSAqIFVwZGF0ZSBjb250ZW50cyBpbiB0aGUgbG9va3VwIHRhYmxlLgor LSAqIFNlbmQgRC1CdXMgc2lnbmFsIHRvIHVwZGF0ZSBzdGF0dXMgb2YgY2xpZW50IG9yIHNlbmQg Z2xpYiBzaWduYWwgdG8gdGhlIHBhbmVsLCBkZXBlbmRpbmcgb24gY2FwYWJpbGl0aWVzIG9mIHRo ZSBjbGllbnQuCistICovCistc3RhdGljIHZvaWQKKyt2b2lkCisgYnVzX2lucHV0X2NvbnRleHRf dXBkYXRlX2xvb2t1cF90YWJsZSAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNMb29rdXBUYWJsZSAqdGFibGUsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICB2 aXNpYmxlKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu ICAgICAgICAgdmlzaWJsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnYm9vbGVhbiAgICAgICAgIGlzX2V4dGVuc2lvbikKKyB7CisgICAgIGdfYXNzZXJ0IChCVVNf SVNfSU5QVVRfQ09OVEVYVCAoY29udGV4dCkpOworIAorKyAgICBjb250ZXh0LT5pc19leHRlbnNp b25fbG9va3VwX3RhYmxlID0gaXNfZXh0ZW5zaW9uOworICAgICBpZiAoY29udGV4dC0+bG9va3Vw X3RhYmxlKSB7CisgICAgICAgICBnX29iamVjdF91bnJlZiAoY29udGV4dC0+bG9va3VwX3RhYmxl KTsKKyAgICAgfQorQEAgLTIwMzUsNyArMjEwMyw5IEBAIF9lbmdpbmVfdXBkYXRlX3ByZWVkaXRf dGV4dF9jYiAoQnVzRW5naW5lUHJveHkgICplbmdpbmUsCisgCisgICAgIGdfYXNzZXJ0IChjb250 ZXh0LT5lbmdpbmUgPT0gZW5naW5lKTsKKyAKKy0gICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRl X3ByZWVkaXRfdGV4dCAoY29udGV4dCwgdGV4dCwgY3Vyc29yX3BvcywgdmlzaWJsZSwgbW9kZSk7 CisrICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcmVlZGl0X3RleHQgKGNvbnRleHQsIHRl eHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9w b3MsIHZpc2libGUsIG1vZGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFRSVUUpOworIH0KKyAKKyAvKioKK0BAIC0yMDc1LDcgKzIxNDUsNyBAQCBfZW5naW5l X3VwZGF0ZV9sb29rdXBfdGFibGVfY2IgKEJ1c0VuZ2luZVByb3h5ICAgKmVuZ2luZSwKKyAKKyAg ICAgZ19hc3NlcnQgKGNvbnRleHQtPmVuZ2luZSA9PSBlbmdpbmUpOworIAorLSAgICBidXNfaW5w dXRfY29udGV4dF91cGRhdGVfbG9va3VwX3RhYmxlIChjb250ZXh0LCB0YWJsZSwgdmlzaWJsZSk7 CisrICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9sb29rdXBfdGFibGUgKGNvbnRleHQsIHRh YmxlLCB2aXNpYmxlLCBGQUxTRSk7CisgfQorIAorIC8qKgorQEAgLTIxMjMsMTEgKzIxOTMsMzUg QEAgX2VuZ2luZV91cGRhdGVfcHJvcGVydHlfY2IgKEJ1c0VuZ2luZVByb3h5ICAqZW5naW5lLAor ICAqIGZyb20gdGhlIGVuZ2luZSBvYmplY3QuCisgICovCisgc3RhdGljIHZvaWQKKy1fZW5naW5l X3BhbmVsX2V4dGVuc2lvbl9jYiAoQnVzRW5naW5lUHJveHkgICplbmdpbmUsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAqcGFyYW1ldGVycywKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0KQorK19lbmdpbmVf cGFuZWxfZXh0ZW5zaW9uX2NiIChCdXNFbmdpbmVQcm94eSAgICAgKmVuZ2luZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQnVzSW5wdXRDb250ZXh0ICAgICpjb250ZXh0KQorIHsKKy0g ICAgZ19zaWduYWxfZW1pdCAoY29udGV4dCwgY29udGV4dF9zaWduYWxzW1BBTkVMX0VYVEVOU0lP Tl0sIDAsIHBhcmFtZXRlcnMpOworKyAgICBnX3NpZ25hbF9lbWl0IChjb250ZXh0LCBjb250ZXh0 X3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgZXZlbnQpOworK30KKysKKytzdGF0aWMgdm9p ZAorK19lbmdpbmVfc2hvd19wcmVlZGl0X3RleHRfY2IgKEJ1c0VuZ2luZVByb3h5ICAqZW5naW5l LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c0lucHV0Q29udGV4dCAqY29udGV4 dCkKKyt7CisrICAgIGdfYXNzZXJ0IChCVVNfSVNfRU5HSU5FX1BST1hZIChlbmdpbmUpKTsKKysg ICAgZ19hc3NlcnQgKEJVU19JU19JTlBVVF9DT05URVhUIChjb250ZXh0KSk7CisrCisrICAgIGdf YXNzZXJ0IChjb250ZXh0LT5lbmdpbmUgPT0gZW5naW5lKTsKKysKKysgICAgYnVzX2lucHV0X2Nv bnRleHRfc2hvd19wcmVlZGl0X3RleHQgKGNvbnRleHQsIEZBTFNFKTsKKyt9CisrCisrc3RhdGlj IHZvaWQKKytfZW5naW5lX2hpZGVfcHJlZWRpdF90ZXh0X2NiIChCdXNFbmdpbmVQcm94eSAgKmVu Z2luZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNJbnB1dENvbnRleHQgKmNv bnRleHQpCisreworKyAgICBnX2Fzc2VydCAoQlVTX0lTX0VOR0lORV9QUk9YWSAoZW5naW5lKSk7 CisrICAgIGdfYXNzZXJ0IChCVVNfSVNfSU5QVVRfQ09OVEVYVCAoY29udGV4dCkpOworKworKyAg ICBnX2Fzc2VydCAoY29udGV4dC0+ZW5naW5lID09IGVuZ2luZSk7CisrCisrICAgIGJ1c19pbnB1 dF9jb250ZXh0X2hpZGVfcHJlZWRpdF90ZXh0IChjb250ZXh0LCBGQUxTRSk7CisgfQorIAorICNk ZWZpbmUgREVGSU5FX0ZVTkNUSU9OKG5hbWUpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcCitAQCAtMjE0Myw4ICsyMjM3LDYgQEAgX2VuZ2luZV9wYW5lbF9leHRlbnNpb25fY2Ig KEJ1c0VuZ2luZVByb3h5ICAqZW5naW5lLAorICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfIyNu YW1lIChjb250ZXh0KTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgIH0KKyAKKy1ERUZJTkVf RlVOQ1RJT04gKHNob3dfcHJlZWRpdF90ZXh0KQorLURFRklORV9GVU5DVElPTiAoaGlkZV9wcmVl ZGl0X3RleHQpCisgREVGSU5FX0ZVTkNUSU9OIChzaG93X2F1eGlsaWFyeV90ZXh0KQorIERFRklO RV9GVU5DVElPTiAoaGlkZV9hdXhpbGlhcnlfdGV4dCkKKyBERUZJTkVfRlVOQ1RJT04gKHNob3df bG9va3VwX3RhYmxlKQorQEAgLTIyMzksNyArMjMzMSwxMCBAQCBidXNfaW5wdXRfY29udGV4dF9k aXNhYmxlIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCisgCisgICAgIGJ1c19pbnB1dF9jb250 ZXh0X2NsZWFyX3ByZWVkaXRfdGV4dCAoY29udGV4dCk7CisgICAgIGJ1c19pbnB1dF9jb250ZXh0 X3VwZGF0ZV9hdXhpbGlhcnlfdGV4dCAoY29udGV4dCwgdGV4dF9lbXB0eSwgRkFMU0UpOworLSAg ICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfbG9va3VwX3RhYmxlIChjb250ZXh0LCBsb29rdXBf dGFibGVfZW1wdHksIEZBTFNFKTsKKysgICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1 cF90YWJsZSAoY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbG9va3VwX3RhYmxlX2VtcHR5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBGQUxTRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRkFMU0UpOworICAgICBidXNfaW5wdXRfY29udGV4dF9yZWdpc3Rlcl9wcm9wZXJ0 aWVzIChjb250ZXh0LCBwcm9wc19lbXB0eSk7CisgCisgICAgIGlmIChjb250ZXh0LT5lbmdpbmUp IHsKK0BAIC0yMjgzLDcgKzIzNzgsMTAgQEAgYnVzX2lucHV0X2NvbnRleHRfdW5zZXRfZW5naW5l IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQpCisgCisgICAgIGJ1c19pbnB1dF9jb250ZXh0X2Ns ZWFyX3ByZWVkaXRfdGV4dCAoY29udGV4dCk7CisgICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0 ZV9hdXhpbGlhcnlfdGV4dCAoY29udGV4dCwgdGV4dF9lbXB0eSwgRkFMU0UpOworLSAgICBidXNf aW5wdXRfY29udGV4dF91cGRhdGVfbG9va3VwX3RhYmxlIChjb250ZXh0LCBsb29rdXBfdGFibGVf ZW1wdHksIEZBTFNFKTsKKysgICAgYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX2xvb2t1cF90YWJs ZSAoY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bG9va3VwX3RhYmxlX2VtcHR5LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBGQUxTRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgRkFMU0UpOworICAgICBidXNfaW5wdXRfY29udGV4dF9yZWdpc3Rlcl9wcm9wZXJ0aWVzIChj b250ZXh0LCBwcm9wc19lbXB0eSk7CisgCisgICAgIGlmIChjb250ZXh0LT5lbmdpbmUpIHsKK0BA IC0yNjM5LDE3ICsyNzM3LDEyOCBAQCBidXNfaW5wdXRfY29udGV4dF9zZXRfY29udGVudF90eXBl IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCisgfQorIAorIHZvaWQKKy1idXNfaW5wdXRfY29u dGV4dF9jb21taXRfdGV4dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgKnRleHQpCisrYnVzX2lucHV0X2Nv bnRleHRfY29tbWl0X3RleHRfdXNlX2V4dGVuc2lvbiAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0 ICAgICAgICAqdGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnYm9vbGVhbiAgICAgICAgIHVzZV9leHRlbnNpb24pCisgeworICAgICBnX2Fzc2VydCAo QlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAKKyAgICAgaWYgKHRleHQgPT0gdGV4 dF9lbXB0eSB8fCB0ZXh0ID09IE5VTEwpCisgICAgICAgICByZXR1cm47CisgCistICAgIEdWYXJp YW50ICp2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6 YWJsZSAqKXRleHQpOworLSAgICBidXNfaW5wdXRfY29udGV4dF9lbWl0X3NpZ25hbCAoY29udGV4 dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21taXRUZXh0IiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodikiLCB2 YXJpYW50KSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworKyAg ICBpZiAodXNlX2V4dGVuc2lvbiAmJiBjb250ZXh0LT5lbW9qaV9leHRlbnNpb24pIHsKKysgICAg ICAgIGJ1c19wYW5lbF9wcm94eV9jb21taXRfdGV4dF9yZWNlaXZlZCAoY29udGV4dC0+ZW1vamlf ZXh0ZW5zaW9uLCB0ZXh0KTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIEdWYXJpYW50ICp2YXJp YW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgKKysgICAgICAgICAgICAgICAgKElC dXNTZXJpYWxpemFibGUgKil0ZXh0KTsKKysgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2VtaXRf c2lnbmFsIChjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJDb21taXRUZXh0IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn X3ZhcmlhbnRfbmV3ICgiKHYpIiwgdmFyaWFudCksCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTlVMTCk7CisrICAgIH0KKyt9CisrCisrdm9pZAorK2J1c19pbnB1dF9j b250ZXh0X2NvbW1pdF90ZXh0IChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAqdGV4dCkKKyt7CisrICAgIGJ1 c19pbnB1dF9jb250ZXh0X2NvbW1pdF90ZXh0X3VzZV9leHRlbnNpb24gKGNvbnRleHQsIHRleHQs IFRSVUUpOworK30KKysKKyt2b2lkCisrYnVzX2lucHV0X2NvbnRleHRfdXBkYXRlX3ByZWVkaXRf dGV4dCAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAqdGV4dCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgIGN1cnNvcl9wb3MsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICB2aXNp YmxlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAg ICAgICAgbW9kZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9v bGVhbiAgICAgICAgIHVzZV9leHRlbnNpb24pCisreworKyAgICBnYm9vbGVhbiBleHRlbnNpb25f dmlzaWJsZSA9IEZBTFNFOworKyAgICBnX2Fzc2VydCAoQlVTX0lTX0lOUFVUX0NPTlRFWFQgKGNv bnRleHQpKTsKKysKKysgICAgaWYgKGNvbnRleHQtPnByZWVkaXRfdGV4dCkgeworKyAgICAgICAg Z19vYmplY3RfdW5yZWYgKGNvbnRleHQtPnByZWVkaXRfdGV4dCk7CisrICAgIH0KKysKKysgICAg Y29udGV4dC0+cHJlZWRpdF90ZXh0ID0gKElCdXNUZXh0ICopIGdfb2JqZWN0X3JlZl9zaW5rICh0 ZXh0ID8gdGV4dCA6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdGV4dF9lbXB0eSk7CisrICAgIGNvbnRleHQtPnByZWVkaXRfY3Vy c29yX3BvcyA9IGN1cnNvcl9wb3M7CisrICAgIGlmICh1c2VfZXh0ZW5zaW9uKQorKyAgICAgICAg Y29udGV4dC0+cHJlZWRpdF92aXNpYmxlID0gdmlzaWJsZTsKKysgICAgaWYgKHVzZV9leHRlbnNp b24pCisrICAgICAgICBjb250ZXh0LT5wcmVlZGl0X21vZGUgPSBtb2RlOworKyAgICBleHRlbnNp b25fdmlzaWJsZSA9IGNvbnRleHQtPnByZWVkaXRfdmlzaWJsZSB8CisrICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbiAhPSBOVUxMKTsKKysKKysgICAgaWYg KHVzZV9leHRlbnNpb24gJiYgY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uKSB7CisrICAgICAgICBi dXNfcGFuZWxfcHJveHlfdXBkYXRlX3ByZWVkaXRfdGV4dCAoY29udGV4dC0+ZW1vamlfZXh0ZW5z aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl eHQtPnByZWVkaXRfdGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250ZXh0LT5wcmVlZGl0X2N1cnNvcl9wb3MsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC0+cHJlZWRpdF92aXNpYmxlKTsKKysg ICAgfSBlbHNlIGlmIChQUkVFRElUX0NPTkRJVElPTikgeworKyAgICAgICAgR1ZhcmlhbnQgKnZh cmlhbnQgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKAorKyAgICAgICAgICAgICAgICAo SUJ1c1NlcmlhbGl6YWJsZSAqKWNvbnRleHQtPnByZWVkaXRfdGV4dCk7CisrICAgICAgICBidXNf aW5wdXRfY29udGV4dF9lbWl0X3NpZ25hbCAoY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAiVXBkYXRlUHJlZWRpdFRleHQiLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIih2dWIpIiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LT5wcmVlZGl0X2N1cnNv cl9wb3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl eHRlbnNpb25fdmlzaWJsZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTlVMTCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgICBnX3NpZ25hbF9lbWl0IChjb250ZXh0 LAorKyAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dF9zaWduYWxzW1VQREFURV9QUkVFRElU X1RFWFRdLAorKyAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRleHQtPnByZWVkaXRfdGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgIGNvbnRl eHQtPnByZWVkaXRfY3Vyc29yX3BvcywKKysgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv bl92aXNpYmxlKTsKKysgICAgfQorK30KKysKKyt2b2lkCisrYnVzX2lucHV0X2NvbnRleHRfc2V0 X2Vtb2ppX2V4dGVuc2lvbiAoQnVzSW5wdXRDb250ZXh0ICpjb250ZXh0LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1BhbmVsUHJveHkgICAqZW1vamlfZXh0ZW5z aW9uKQorK3sKKysgICAgZ19hc3NlcnQgKEJVU19JU19JTlBVVF9DT05URVhUIChjb250ZXh0KSk7 CisrCisrICAgIGlmIChjb250ZXh0LT5lbW9qaV9leHRlbnNpb24pCisrICAgICAgICBnX29iamVj dF91bnJlZiAoY29udGV4dC0+ZW1vamlfZXh0ZW5zaW9uKTsKKysgICAgY29udGV4dC0+ZW1vamlf ZXh0ZW5zaW9uID0gZW1vamlfZXh0ZW5zaW9uOworKyAgICBpZiAoZW1vamlfZXh0ZW5zaW9uKSB7 CisrICAgICAgICBnX29iamVjdF9yZWYgKGNvbnRleHQtPmVtb2ppX2V4dGVuc2lvbik7CisrICAg ICAgICBpZiAoIWNvbnRleHQtPmNvbm5lY3Rpb24pCisrICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2hvd19wcmVlZGl0X3RleHQgKGNvbnRleHQsIFRSVUUp OworKyAgICAgICAgYnVzX3BhbmVsX3Byb3h5X3NldF9jdXJzb3JfbG9jYXRpb24gKGNvbnRleHQt PmVtb2ppX2V4dGVuc2lvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb250ZXh0LT54LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnRleHQtPnksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGV4dC0+dywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250ZXh0LT5oKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGlmICgh Y29udGV4dC0+Y29ubmVjdGlvbikKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAvKiBo dHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ25vbWUtc2hlbGwvbWVyZ2VfcmVxdWVzdHMv MTEzCisrICAgICAgICAgKiBDYW5ub3QgdXNlIGJ1c19pbnB1dF9jb250ZXh0X2hpZGVfcHJlZWRp dF90ZXh0ICgpIHlldC4KKysgICAgICAgICAqLworKyAgICAgICAgaWYgKCFjb250ZXh0LT5wcmVl ZGl0X3Zpc2libGUpIHsKKysgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfcHJl ZWRpdF90ZXh0IChjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHRleHRfZW1wdHksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0VOR0lORV9QUkVFRElUX0NMRUFSLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFKTsK KysgICAgICAgIH0KKysgICAgfQorK30KKysKKyt2b2lkCisrYnVzX2lucHV0X2NvbnRleHRfcGFu ZWxfZXh0ZW5zaW9uX3JlY2VpdmVkIChCdXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZl bnQgKmV2ZW50KQorK3sKKysgICAgZ19hc3NlcnQgKEJVU19JU19JTlBVVF9DT05URVhUIChjb250 ZXh0KSk7CisrCisrICAgIGlmICghY29udGV4dC0+ZW5naW5lKQorKyAgICAgICAgcmV0dXJuOwor KyAgICBidXNfZW5naW5lX3Byb3h5X3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoY29udGV4dC0+ ZW5naW5lLCBldmVudCk7CisgfQorZGlmZiAtLWdpdCBhL2J1cy9pbnB1dGNvbnRleHQuaCBiL2J1 cy9pbnB1dGNvbnRleHQuaAoraW5kZXggNzY3NGFiZDguLmE0NmQ1YzA2IDEwMDY0NAorLS0tIGEv YnVzL2lucHV0Y29udGV4dC5oCisrKysgYi9idXMvaW5wdXRjb250ZXh0LmgKK0BAIC0yOCw2ICsy OCwxMSBAQAorICNpbmNsdWRlICJjb25uZWN0aW9uLmgiCisgI2luY2x1ZGUgImZhY3Rvcnlwcm94 eS5oIgorIAorKyNpZm5kZWYgX19CVVNfUEFORUxfUFJPWFlfREVGSU5FRAorKyNkZWZpbmUgX19C VVNfUEFORUxfUFJPWFlfREVGSU5FRAorK3R5cGVkZWYgc3RydWN0IF9CdXNQYW5lbFByb3h5IEJ1 c1BhbmVsUHJveHk7CisrI2VuZGlmCisrCisgLyoKKyAgKiBUeXBlIG1hY3Jvcy4KKyAgKi8KK0BA IC02Myw2ICs2OCw3IEBAIEJ1c0lucHV0Q29udGV4dCAgICAgKmJ1c19pbnB1dF9jb250ZXh0X25l dyAgICAgIChCdXNDb25uZWN0aW9uICAgICAgKmNvbm5lY3Rpb24sCisgCisgLyoqCisgICogYnVz X2lucHV0X2NvbnRleHRfZm9jdXNfaW46CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4 dC4KKyAgKgorICAqIEdpdmUgYSBmb2N1cyB0byB0aGUgY29udGV4dC4gQ2FsbCBGb2N1c0luLCBF bmFibGUsIFNldENhcGFiaWxpdGllcywKKyAgKiBhbmQgU2V0Q3Vyc29yTG9jYXRpb24gbWV0aG9k cyBvZiB0aGUgZW5naW5lIGZvciB0aGUgY29udGV4dCwKK0BAIC03Myw2ICs3OSw3IEBAIHZvaWQg ICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX2luIChCdXNJbnB1dENvbnRl eHQgICAgKmNvbnRleHQpOworIAorIC8qKgorICAqIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX291 dDoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorICAqCisgICogUmVtb3ZlIGEg Zm9jdXMgZnJvbSB0aGUgY29udGV4dC4gQ2FsbCBGb2N1c091dCBtZXRob2Qgb2YgdGhlIGVuZ2lu ZSBmb3IKKyAgKiB0aGUgY29udGV4dC4KK0BAIC04Myw2ICs5MCw3IEBAIHZvaWQgICAgICAgICAg ICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2ZvY3VzX291dAorIAorIC8qKgorICAqIGJ1c19pbnB1 dF9jb250ZXh0X2hhc19mb2N1czoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0Lgor ICAqIEByZXR1cm5zOiBjb250ZXh0LT5oYXNfZm9jdXMuCisgICovCisgZ2Jvb2xlYW4gICAgICAg ICAgICAgYnVzX2lucHV0X2NvbnRleHRfaGFzX2ZvY3VzCitAQCAtOTAsNiArOTgsNyBAQCBnYm9v bGVhbiAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9oYXNfZm9jdXMKKyAKKyAvKioKKyAg KiBidXNfaW5wdXRfY29udGV4dF9lbmFibGU6CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29u dGV4dC4KKyAgKgorICAqIEVuYWJsZSB0aGUgY3VycmVudCBlbmdpbmUgZm9yIHRoZSBjb250ZXh0 LiBSZXF1ZXN0IGFuIGVuZ2luZSAoaWYgbmVlZGVkKSwKKyAgKiBjYWxsIEZvY3VzSW4sIEVuYWJs ZSwgU2V0Q2FwYWJpbGl0aWVzLCBhbmQgU2V0Q3Vyc29yTG9jYXRpb24gbWV0aG9kcworQEAgLTEw MCw2ICsxMDksNyBAQCB2b2lkICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9lbmFi bGUgICAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250ZXh0KTsKKyAKKyAvKioKKyAgKiBidXNfaW5w dXRfY29udGV4dF9kaXNhYmxlOgorKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCisg ICoKKyAgKiBEaXNhYmxlIHRoZSBjdXJyZW50IGVuZ2luZSBmb3IgdGhlIGNvbnRleHQuIFJlcXVl c3QgYW4gZW5naW5lIChpZiBuZWVkZWQpLAorICAqIGNhbGwgRm9jdXNJbiwgRW5hYmxlLCBTZXRD YXBhYmlsaXRpZXMsIGFuZCBTZXRDdXJzb3JMb2NhdGlvbiBtZXRob2RzCitAQCAtMTEwLDYgKzEy MCw3IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2Rpc2FibGUgIChC dXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQpOworIAorIC8qKgorICAqIGJ1c19pbnB1dF9jb250 ZXh0X3BhZ2VfdXA6CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KKyAgKgorICAq IENhbGwgcGFnZV91cCBtZXRob2Qgb2YgdGhlIGN1cnJlbnQgZW5naW5lIHByb3h5LgorICAqLwor QEAgLTExNyw2ICsxMjgsNyBAQCB2b2lkICAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4 dF9wYWdlX3VwICAoQnVzSW5wdXRDb250ZXh0ICAgICpjb250ZXh0KTsKKyAKKyAvKioKKyAgKiBi dXNfaW5wdXRfY29udGV4dF9wYWdlX2Rvd246CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29u dGV4dC4KKyAgKgorICAqIENhbGwgcGFnZV9kb3duIG1ldGhvZCBvZiB0aGUgY3VycmVudCBlbmdp bmUgcHJveHkuCisgICovCitAQCAtMTI1LDYgKzEzNyw3IEBAIHZvaWQgICAgICAgICAgICAgICAg IGJ1c19pbnB1dF9jb250ZXh0X3BhZ2VfZG93bgorIAorIC8qKgorICAqIGJ1c19pbnB1dF9jb250 ZXh0X2N1cnNvcl91cDoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorICAqCisg ICogQ2FsbCBjdXJzb3JfdXAgbWV0aG9kIG9mIHRoZSBjdXJyZW50IGVuZ2luZSBwcm94eS4KKyAg Ki8KK0BAIC0xMzMsNiArMTQ2LDcgQEAgdm9pZCAgICAgICAgICAgICAgICAgYnVzX2lucHV0X2Nv bnRleHRfY3Vyc29yX3VwCisgCisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfY3Vyc29yX2Rv d246CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KKyAgKgorICAqIENhbGwgY3Vy c29yX2Rvd24gbWV0aG9kIG9mIHRoZSBjdXJyZW50IGVuZ2luZSBwcm94eS4KKyAgKi8KK0BAIC0x NDEsNiArMTU1LDEwIEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2N1 cnNvcl9kb3duCisgCisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfY2FuZGlkYXRlX2NsaWNr ZWQ6CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KKysgKiBAaW5kZXg6IEFuIGlu ZGV4LgorKyAqIEBidXR0b246IEEgYnV0dG9uIG51bWJlci4KKysgKiBAc3RhdGU6IEEgYnV0dG9u IHN0YXRlLgorICAqCisgICogQ2FsbCBjYW5kaWRhdGVfY2xpY2tlZCBtZXRob2Qgb2YgdGhlIGN1 cnJlbnQgZW5naW5lIHByb3h5LgorICAqLworQEAgLTE1Miw2ICsxNzAsOCBAQCB2b2lkICAgICAg ICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9jYW5kaWRhdGVfY2xpY2tlZAorIAorIC8qKgor ICAqIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmU6CisrICogQGNvbnRleHQ6IEEgI0J1c0lu cHV0Q29udGV4dC4KKysgKiBAZW5naW5lOiBBICNCdXNFbmdpbmVQcm94eS4KKyAgKgorICAqIFVz ZSB0aGUgZW5naW5lIG9uIHRoZSBjb250ZXh0LgorICAqLworQEAgLTE2MSwxMiArMTgxLDE0IEBA IHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmUKKyAKKyAv KioKKyAgKiBidXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lX2J5X2Rlc2M6CisrICogQGNvbnRl eHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KKyAgKiBAZGVzYzogdGhlIGVuZ2luZSB0byB1c2Ugb24g dGhlIGNvbnRleHQuCisgICogQHRpbWVvdXQ6IHRpbWVvdXQgKGluIG1zKSBmb3IgRC1CdXMgY2Fs bHMuCisgICogQGNhbGxiYWNrOiBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGJ1c19pbnB1 dF9jb250ZXh0X3NldF9lbmdpbmVfYnlfZGVzYworICAqICAgICAgICAgICAgaXMgZmluaXNoZWQu IGlmIE5VTEwsIHRoZSBkZWZhdWx0IGNhbGxiYWNrCisgICogICAgICAgICAgICBmdW5jdGlvbiwg d2hpY2gganVzdCBjYWxscworICAqICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vu Z2luZV9ieV9kZXNjX2ZpbmlzaCwgaXMgdXNlZC4KKysgKiBAdXNlcl9kYXRhOiBhbiBhcmd1bWVu dCBvZiBAY2FsbGJhY2suCisgICoKKyAgKiBDcmVhdGUgYSBuZXcgQnVzRW5naW5lUHJveHkgb2Jq ZWN0IGFuZCB1c2UgaXQgb24gdGhlIGNvbnRleHQuCisgICovCitAQCAtMTgxLDYgKzIwMyw5IEBA IHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmVfYnlfZGVz YworIAorIC8qKgorICAqIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmVfYnlfZGVzY19maW5p c2g6CisrICogQGNvbnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KKysgKiBAcmVzOiBBICNHQXN5 bmNSZXN1bHQuCisrICogQGVycm9yOiBBICNHRXJyb3IuCisgICoKKyAgKiBBIGZ1bmN0aW9uIHRv IGJlIGNhbGxlZCBieSB0aGUgR0FzeW5jUmVhZHlDYWxsYmFjayBmdW5jdGlvbiBmb3IKKyAgKiBi dXNfaW5wdXRfY29udGV4dF9zZXRfZW5naW5lX2J5X2Rlc2MuCitAQCAtMTkyLDYgKzIxNyw3IEBA IGdib29sZWFuICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3NldF9lbmdpbmVfYnlfZGVz Y19maW5pc2gKKyAKKyAvKioKKyAgKiBidXNfaW5wdXRfY29udGV4dF9nZXRfZW5naW5lOgorKyAq IEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCisgICoKKyAgKiBHZXQgYSBCdXNFbmdpbmVQ cm94eSBvYmplY3Qgb2YgdGhlIGN1cnJlbnQgZW5naW5lLgorICAqLworQEAgLTIwMCw2ICsyMjYs NyBAQCBCdXNFbmdpbmVQcm94eSAgICAgICpidXNfaW5wdXRfY29udGV4dF9nZXRfZW5naW5lCisg CisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfZ2V0X2VuZ2luZV9kZXNjOgorKyAqIEBjb250 ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCisgICoKKyAgKiBHZXQgYW4gSUJ1c0VuZ2luZURlc2Mg b2JqZWN0IG9mIHRoZSBjdXJyZW50IGVuZ2luZS4KKyAgKi8KK0BAIC0yMDgsNiArMjM1LDkgQEAg SUJ1c0VuZ2luZURlc2MgICAgICAqYnVzX2lucHV0X2NvbnRleHRfZ2V0X2VuZ2luZV9kZXNjCisg CisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfcHJvcGVydHlfYWN0aXZhdGU6CisrICogQGNv bnRleHQ6IEEgI0J1c0lucHV0Q29udGV4dC4KKysgKiBAcHJvcF9uYW1lOiBBIHByb3BlcnR5IG5h bWUuCisrICogQHByb3Bfc3RhdGU6IEEgcHJvcGVydHkgc3RhdGUuCisgICoKKyAgKiBDYWxsIHBy b3BlcnR5X2FjdGl2YXRlIG1ldGhvZCBvZiB0aGUgY3VycmVudCBlbmdpbmUgcHJveHkuCisgICov CitAQCAtMjE5LDYgKzI0OSw3IEBAIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250 ZXh0X3Byb3BlcnR5X2FjdGl2YXRlCisgCisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfZ2V0 X2NhcGFiaWxpdGllczoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorICAqIEBy ZXR1cm5zOiBjb250ZXh0LT5jYXBhYmlsaXRpZXMuCisgICovCisgZ3VpbnQgICAgICAgICAgICAg ICAgYnVzX2lucHV0X2NvbnRleHRfZ2V0X2NhcGFiaWxpdGllcworQEAgLTIyNiw2ICsyNTcsOCBA QCBndWludCAgICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9nZXRfY2FwYWJpbGl0aWVz CisgCisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfc2V0X2NhcGFiaWxpdGllczoKKysgKiBA Y29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorKyAqIEBjYXBhYmlsaXRpZXM6IGNhcGFiaWxp dGllcy4KKyAgKgorICAqIENhbGwgc2V0X2NhcGFiaWxpdGllcyBtZXRob2Qgb2YgdGhlIGN1cnJl bnQgZW5naW5lIHByb3h5LgorICAqLworQEAgLTIzNiw2ICsyNjksNyBAQCB2b2lkICAgICAgICAg ICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfY2FwYWJpbGl0aWVzCisgCisgLyoqCisgICog YnVzX2lucHV0X2NvbnRleHRfZ2V0X2NsaWVudDoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRD b250ZXh0LgorICAqIEByZXR1cm5zOiBjb250ZXh0LT5jbGllbnQuCisgICovCisgY29uc3QgZ2No YXIgICAgICAgICAqYnVzX2lucHV0X2NvbnRleHRfZ2V0X2NsaWVudAorQEAgLTI0Myw2ICsyNzcs NyBAQCBjb25zdCBnY2hhciAgICAgICAgICpidXNfaW5wdXRfY29udGV4dF9nZXRfY2xpZW50Cisg CisgLyoqCisgICogYnVzX2lucHV0X2NvbnRleHRfZ2V0X2NvbnRlbnRfdHlwZToKKysgKiBAY29u dGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorICAqIEBwdXJwb3NlOiBJbnB1dCBwdXJwb3NlLgor ICAqIEBoaW50czogSW5wdXQgaGludHMuCisgICovCitAQCAtMjUzLDYgKzI4OCw3IEBAIHZvaWQg ICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2dldF9jb250ZW50X3R5cGUKKyAKKyAv KioKKyAgKiBidXNfaW5wdXRfY29udGV4dF9zZXRfY29udGVudF90eXBlOgorKyAqIEBjb250ZXh0 OiBBICNCdXNJbnB1dENvbnRleHQuCisgICogQHB1cnBvc2U6IElucHV0IHB1cnBvc2UuCisgICog QGhpbnRzOiBJbnB1dCBoaW50cy4KKyAgKi8KK0BAIC0yNjMsMTEgKzI5OSw4MyBAQCB2b2lkICAg ICAgICAgICAgICAgICBidXNfaW5wdXRfY29udGV4dF9zZXRfY29udGVudF90eXBlCisgCisgLyoq CisgICogYnVzX2lucHV0X2NvbnRleHRfY29tbWl0X3RleHQ6CistICogQHRleHQ6IGEgY29tbWl0 ZWQgdGV4dC4KKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorKyAqIEB0ZXh0OiBB IGNvbW1pdHRlZCB0ZXh0LgorICAqLworIHZvaWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9j b250ZXh0X2NvbW1pdF90ZXh0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKEJ1c0lucHV0Q29udGV4dCAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICp0ZXh0KTsK KyAKKysvKioKKysgKiBidXNfaW5wdXRfY29udGV4dF9jb21taXRfdGV4dDoKKysgKiBAY29udGV4 dDogQSAjQnVzSW5wdXRDb250ZXh0LgorKyAqIEB0ZXh0OiBBIGNvbW1pdHRlZCB0ZXh0LgorKyAq IEB1c2VfZXh0ZW5zaW9uOiBVc2UgYW4gZXh0ZW5zaW9uIGlmIGl0J3MgJVRSVUUgYW5kIHRoZSBl eHRlbnNpb24gaXMKKysgKiAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLgorKyAqLworK3ZvaWQg ICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X2NvbW1pdF90ZXh0X3VzZV9leHRlbnNp b24KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNJ bnB1dENvbnRleHQgKmNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICp0ZXh0LAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgdXNlX2V4dGVu c2lvbik7CisrCisrLyoqCisrICogYnVzX2lucHV0X2NvbnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lv bjoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorKyAqIEBleHRlbnNpb246IEEg I0J1c1BhbmVsUHJveHkuCisrICovCisrdm9pZCAgICAgICAgICAgICAgICAgYnVzX2lucHV0X2Nv bnRleHRfc2V0X2Vtb2ppX2V4dGVuc2lvbgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgKmNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1BhbmVsUHJveHkgICAq ZXh0ZW5zaW9uKTsKKysKKysvKioKKysgKiBidXNfaW5wdXRfY29udGV4dF91cGRhdGVfcHJlZWRp dF90ZXh0OgorKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQuCisrICogQHRleHQ6IEFu ICNJQnVzVGV4dC4KKysgKiBAY3Vyc29yX3BvczogVGhlIGN1cnNvciBwb3NpdGlvbi4KKysgKiBA dmlzaWJsZTogJVRSVUUgaWYgdGhlIHByZWVkaXQgaXMgdmlzaWJsZS4gT3RoZXJ3aXNlICVGQUxT RS4KKysgKiBAbW9kZTogVGhlIHByZWVkaXQgY29tbWl0IG1vZGUuCisrICogQHVzZV9leHRlbnNp b246ICVUUlVFIGlmIHByZWVkaXQgdGV4dCBpcyBzZW50IHRvIHRoZSBleHRlc2lvbiBhdCBmaXJz dC4KKysgKgorKyAqIFVwZGF0ZSBhIHByZWVkaXQgdGV4dC4gU2VuZCBELUJ1cyBzaWduYWwgdG8g dXBkYXRlIHN0YXR1cyBvZiBjbGllbnQgb3IKKysgKiBzZW5kIGdsaWIgc2lnbmFsIHRvIHRoZSBw YW5lbCwgZGVwZW5kaW5nIG9uIGNhcGFiaWxpdGllcyBvZiB0aGUgY2xpZW50LgorKyAqLworK3Zv aWQgICAgICAgICAgICAgICAgIGJ1c19pbnB1dF9jb250ZXh0X3VwZGF0ZV9wcmVlZGl0X3RleHQK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzSW5w dXRDb250ZXh0ICAgICpjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAgICAgKnRleHQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAg Y3Vyc29yX3BvcywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2Jvb2xlYW4gICAgICAgICAgICB2aXNpYmxlLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgIG1vZGUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFu CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB1c2VfZXh0ZW5zaW9uKTsKKysKKysvKioKKysgKiBidXNfaW5wdXRfY29udGV4 dF91cGRhdGVfbG9va3VwX3RhYmxlOgorKyAqIEBjb250ZXh0OiBBICNCdXNJbnB1dENvbnRleHQu CisrICogQHRhYmxlOiBBbiAjSUJ1c1RhYmxlLgorKyAqIEB2aXNpYmxlOiAlVFJVRSBpZiB0aGUg bG9va3VwIHRhYmxlIGlzIHZpc2libGUuIE90aGVyd2lzZSAlRkFMU0UuCisrICogQGlzX2V4dGVu c2lvbjogJVRSVUUgaWYgdGhlIGxvb2t1cCB0YWJsZSBpcyBjcmVhdGVkIGJ5IHBhbmVsIGV4dGVu c2lvbnMuCisrICoKKysgKiBVcGRhdGUgY29udGVudHMgaW4gdGhlIGxvb2t1cCB0YWJsZS4KKysg KiBTZW5kIEQtQnVzIHNpZ25hbCB0byB1cGRhdGUgc3RhdHVzIG9mIGNsaWVudCBvciBzZW5kIGds aWIgc2lnbmFsIHRvIHRoZQorKyAqIHBhbmVsLCBkZXBlbmRpbmcgb24gY2FwYWJpbGl0aWVzIG9m IHRoZSBjbGllbnQuCisrICovCisrdm9pZCAgICAgICAgICAgICAgICAgYnVzX2lucHV0X2NvbnRl eHRfdXBkYXRlX2xvb2t1cF90YWJsZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdXNJbnB1dENvbnRleHQgICAgKmNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNMb29rdXBUYWJsZSAg ICAqdGFibGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGdib29sZWFuICAgICAgICAgICAgdmlzaWJsZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4KKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19leHRlbnNp b24pOworKworKworKy8qKgorKyAqIGJ1c19pbnB1dF9jb250ZXh0X3BhbmVsX2V4dGVuc2lvbl9y ZWNlaXZlZDoKKysgKiBAY29udGV4dDogQSAjQnVzSW5wdXRDb250ZXh0LgorKyAqIEBldmVudDog QW4gI0lCdXNFeHRlbnNpb25FdmVudC4KKysgKgorKyAqIFNlbmQgQW4gI0lCdXNFeHRlbnNpb25F dmVudCBjYWxsYmFjayBmcm9tIGFuIGV4dGVuc2lvbi4KKysgKi8KKyt2b2lkICAgICAgICAgICAg ICAgICBidXNfaW5wdXRfY29udGV4dF9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzSW5wdXRDb250ZXh0 ICAgICpjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KTsKKyBHX0VORF9ERUNMUworICNlbmRp ZgorZGlmZiAtLWdpdCBhL2J1cy9wYW5lbHByb3h5LmMgYi9idXMvcGFuZWxwcm94eS5jCitpbmRl eCBjMzkwOGZjZi4uMWMwZmNjYTIgMTAwNjQ0CistLS0gYS9idXMvcGFuZWxwcm94eS5jCisrKysg Yi9idXMvcGFuZWxwcm94eS5jCitAQCAtNTIsNiArNTIsMTAgQEAgZW51bSB7CisgICAgIFBST1BF UlRZX0hJREUsCisgICAgIENPTU1JVF9URVhULAorICAgICBQQU5FTF9FWFRFTlNJT04sCisrICAg IFBBTkVMX0VYVEVOU0lPTl9SRUdJU1RFUl9LRVlTLAorKyAgICBVUERBVEVfUFJFRURJVF9URVhU X1JFQ0VJVkVELAorKyAgICBVUERBVEVfTE9PS1VQX1RBQkxFX1JFQ0VJVkVELAorKyAgICBVUERB VEVfQVVYSUxJQVJZX1RFWFRfUkVDRUlWRUQsCisgICAgIExBU1RfU0lHTkFMLAorIH07CisgCitA QCAtMTI1LDggKzEyOSw4IEBAIGJ1c19wYW5lbF9wcm94eV9uZXcgKEJ1c0Nvbm5lY3Rpb24gKmNv bm5lY3Rpb24sCisgICAgIGNhc2UgUEFORUxfVFlQRV9QQU5FTDoKKyAgICAgICAgIHBhdGggPSBJ QlVTX1BBVEhfUEFORUw7CisgICAgICAgICBicmVhazsKKy0gICAgY2FzZSBQQU5FTF9UWVBFX0VY VEVOU0lPTjoKKy0gICAgICAgIHBhdGggPSBJQlVTX1BBVEhfUEFORUxfRVhURU5TSU9OOworKyAg ICBjYXNlIFBBTkVMX1RZUEVfRVhURU5TSU9OX0VNT0pJOgorKyAgICAgICAgcGF0aCA9IElCVVNf UEFUSF9QQU5FTF9FWFRFTlNJT05fRU1PSkk7CisgICAgICAgICBicmVhazsKKyAgICAgZGVmYXVs dDoKKyAgICAgICAgIGdfcmV0dXJuX3ZhbF9pZl9yZWFjaGVkIChOVUxMKTsKK0BAIC0yNTMsNiAr MjU3LDE2IEBAIGJ1c19wYW5lbF9wcm94eV9jbGFzc19pbml0IChCdXNQYW5lbFByb3h5Q2xhc3Mg KmNsYXNzKQorIAorICAgICBwYW5lbF9zaWduYWxzW1BBTkVMX0VYVEVOU0lPTl0gPQorICAgICAg ICAgZ19zaWduYWxfbmV3IChJXygicGFuZWwtZXh0ZW5zaW9uIiksCisrICAgICAgICAgICAgR19U WVBFX0ZST01fQ0xBU1MgKGNsYXNzKSwKKysgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwK KysgICAgICAgICAgICAwLAorKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAg YnVzX21hcnNoYWxfVk9JRF9fT0JKRUNULAorKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAxLAor KyAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZFTlQpOworKworKyAgICBwYW5lbF9z aWduYWxzW1BBTkVMX0VYVEVOU0lPTl9SRUdJU1RFUl9LRVlTXSA9CisrICAgICAgICBnX3NpZ25h bF9uZXcgKElfKCJwYW5lbC1leHRlbnNpb24tcmVnaXN0ZXIta2V5cyIpLAorICAgICAgICAgICAg IEdfVFlQRV9GUk9NX0NMQVNTIChjbGFzcyksCisgICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xB U1QsCisgICAgICAgICAgICAgMCwKK0BAIC0yNjAsNiArMjc0LDQwIEBAIGJ1c19wYW5lbF9wcm94 eV9jbGFzc19pbml0IChCdXNQYW5lbFByb3h5Q2xhc3MgKmNsYXNzKQorICAgICAgICAgICAgIGJ1 c19tYXJzaGFsX1ZPSURfX1ZBUklBTlQsCisgICAgICAgICAgICAgR19UWVBFX05PTkUsIDEsCisg ICAgICAgICAgICAgR19UWVBFX1ZBUklBTlQpOworKworKyAgICBwYW5lbF9zaWduYWxzW1VQREFU RV9QUkVFRElUX1RFWFRfUkVDRUlWRURdID0KKysgICAgICAgIGdfc2lnbmFsX25ldyAoSV8oInVw ZGF0ZS1wcmVlZGl0LXRleHQtcmVjZWl2ZWQiKSwKKysgICAgICAgICAgICBHX1RZUEVfRlJPTV9D TEFTUyAoY2xhc3MpLAorKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorKyAgICAgICAg ICAgIDAsCisrICAgICAgICAgICAgTlVMTCwgTlVMTCwKKysgICAgICAgICAgICBidXNfbWFyc2hh bF9WT0lEX19PQkpFQ1RfVUlOVF9CT09MRUFOLAorKyAgICAgICAgICAgIEdfVFlQRV9OT05FLCAz LAorKyAgICAgICAgICAgIElCVVNfVFlQRV9URVhULAorKyAgICAgICAgICAgIEdfVFlQRV9VSU5U LAorKyAgICAgICAgICAgIEdfVFlQRV9CT09MRUFOKTsKKysKKysgICAgcGFuZWxfc2lnbmFsc1tV UERBVEVfTE9PS1VQX1RBQkxFX1JFQ0VJVkVEXSA9CisrICAgICAgICBnX3NpZ25hbF9uZXcgKElf KCJ1cGRhdGUtbG9va3VwLXRhYmxlLXJlY2VpdmVkIiksCisrICAgICAgICAgICAgR19UWVBFX0ZS T01fQ0xBU1MgKGNsYXNzKSwKKysgICAgICAgICAgICBHX1NJR05BTF9SVU5fTEFTVCwKKysgICAg ICAgICAgICAwLAorKyAgICAgICAgICAgIE5VTEwsIE5VTEwsCisrICAgICAgICAgICAgYnVzX21h cnNoYWxfVk9JRF9fT0JKRUNUX0JPT0xFQU4sCisrICAgICAgICAgICAgR19UWVBFX05PTkUsIDIs CisrICAgICAgICAgICAgSUJVU19UWVBFX0xPT0tVUF9UQUJMRSwKKysgICAgICAgICAgICBHX1RZ UEVfQk9PTEVBTik7CisrCisrICAgIHBhbmVsX3NpZ25hbHNbVVBEQVRFX0FVWElMSUFSWV9URVhU X1JFQ0VJVkVEXSA9CisrICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJ1cGRhdGUtYXV4aWxpYXJ5 LXRleHQtcmVjZWl2ZWQiKSwKKysgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoY2xhc3Mp LAorKyAgICAgICAgICAgIEdfU0lHTkFMX1JVTl9MQVNULAorKyAgICAgICAgICAgIDAsCisrICAg ICAgICAgICAgTlVMTCwgTlVMTCwKKysgICAgICAgICAgICBidXNfbWFyc2hhbF9WT0lEX19PQkpF Q1RfQk9PTEVBTiwKKysgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMiwKKysgICAgICAgICAgICBJ QlVTX1RZUEVfVEVYVCwKKysgICAgICAgICAgICBHX1RZUEVfQk9PTEVBTik7CisgfQorIAorIHN0 YXRpYyB2b2lkCitAQCAtMzU1LDIzICs0MDMsODMgQEAgYnVzX3BhbmVsX3Byb3h5X2dfc2lnbmFs IChHREJ1c1Byb3h5ICAqcHJveHksCisgCisgICAgIGlmIChnX3N0cmNtcDAgKCJDb21taXRUZXh0 Iiwgc2lnbmFsX25hbWUpID09IDApIHsKKyAgICAgICAgIEdWYXJpYW50ICphcmcwID0gTlVMTDsK Ky0gICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodikiLCAmYXJnMCk7CistICAg ICAgICBnX3JldHVybl9pZl9mYWlsIChhcmcwICE9IE5VTEwpOworIAorKyAgICAgICAgZ192YXJp YW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKKysgICAgICAgIGdfcmV0dXJuX2lm X2ZhaWwgKGFyZzApOworICAgICAgICAgSUJ1c1RleHQgKnRleHQgPSBJQlVTX1RFWFQgKGlidXNf c2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplIChhcmcwKSk7CisgICAgICAgICBnX3ZhcmlhbnRfdW5y ZWYgKGFyZzApOworLSAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAodGV4dCAhPSBOVUxMKTsKKysg ICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRleHQpOworICAgICAgICAgZ19zaWduYWxfZW1pdCAo cGFuZWwsIHBhbmVsX3NpZ25hbHNbQ09NTUlUX1RFWFRdLCAwLCB0ZXh0KTsKKyAgICAgICAgIF9n X29iamVjdF91bnJlZl9pZl9mbG9hdGluZyAodGV4dCk7CisgICAgICAgICByZXR1cm47CisgICAg IH0KKyAKKyAgICAgaWYgKGdfc3RyY21wMCAoIlBhbmVsRXh0ZW5zaW9uIiwgc2lnbmFsX25hbWUp ID09IDApIHsKKy0gICAgICAgIGlmIChwYW5lbC0+cGFuZWxfdHlwZSAhPSBQQU5FTF9UWVBFX1BB TkVMKSB7CistICAgICAgICAgICAgZ193YXJuaW5nICgiV3Jvbmcgc2lnbmFsIik7CistICAgICAg ICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAgZ19zaWduYWxfZW1pdCAocGFuZWws IHBhbmVsX3NpZ25hbHNbUEFORUxfRVhURU5TSU9OXSwgMCwgcGFyYW1ldGVycyk7CisrICAgICAg ICBHVmFyaWFudCAqYXJnMCA9IE5VTEw7CisrCisrICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJh bWV0ZXJzLCAiKHYpIiwgJmFyZzApOworKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYXJnMCk7 CisrICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50ID0gSUJVU19FWFRFTlNJT05fRVZF TlQgKAorKyAgICAgICAgICAgICAgICBpYnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoYXJn MCkpOworKyAgICAgICAgZ192YXJpYW50X3VucmVmIChhcmcwKTsKKysgICAgICAgIGdfcmV0dXJu X2lmX2ZhaWwgKGV2ZW50KTsKKysgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBhbmVsLCBwYW5lbF9z aWduYWxzW1BBTkVMX0VYVEVOU0lPTl0sIDAsIGV2ZW50KTsKKysgICAgICAgIF9nX29iamVjdF91 bnJlZl9pZl9mbG9hdGluZyAoZXZlbnQpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisr ICAgIGlmIChnX3N0cmNtcDAgKCJQYW5lbEV4dGVuc2lvblJlZ2lzdGVyS2V5cyIsIHNpZ25hbF9u YW1lKSA9PSAwKSB7CisrICAgICAgICBnX3NpZ25hbF9lbWl0IChwYW5lbCwgcGFuZWxfc2lnbmFs c1tQQU5FTF9FWFRFTlNJT05fUkVHSVNURVJfS0VZU10sIDAsCisrICAgICAgICAgICAgICAgICAg ICAgICBwYXJhbWV0ZXJzKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBpZiAo Z19zdHJjbXAwICgiVXBkYXRlUHJlZWRpdFRleHRSZWNlaXZlZCIsIHNpZ25hbF9uYW1lKSA9PSAw KSB7CisrICAgICAgICBHVmFyaWFudCAqdmFyaWFudCA9IE5VTEw7CisrICAgICAgICBndWludCBj dXJzb3JfcG9zID0gMDsKKysgICAgICAgIGdib29sZWFuIHZpc2libGUgPSBGQUxTRTsKKysgICAg ICAgIElCdXNUZXh0ICp0ZXh0ID0gTlVMTDsKKysKKysgICAgICAgIGdfdmFyaWFudF9nZXQgKHBh cmFtZXRlcnMsICIodnViKSIsICZ2YXJpYW50LCAmY3Vyc29yX3BvcywgJnZpc2libGUpOworKyAg ICAgICAgZ19yZXR1cm5faWZfZmFpbCAodmFyaWFudCk7CisrICAgICAgICB0ZXh0ID0gKElCdXNU ZXh0ICopIGlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplICh2YXJpYW50KTsKKysgICAgICAg IGdfdmFyaWFudF91bnJlZiAodmFyaWFudCk7CisrICAgICAgICBnX3JldHVybl9pZl9mYWlsICh0 ZXh0KTsKKysgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBhbmVsLCBwYW5lbF9zaWduYWxzW1VQREFU RV9QUkVFRElUX1RFWFRfUkVDRUlWRURdLCAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgdGV4 dCwgY3Vyc29yX3BvcywgdmlzaWJsZSk7CisrICAgICAgICBfZ19vYmplY3RfdW5yZWZfaWZfZmxv YXRpbmcgKHRleHQpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGlmIChnX3N0 cmNtcDAgKCJVcGRhdGVMb29rdXBUYWJsZVJlY2VpdmVkIiwgc2lnbmFsX25hbWUpID09IDApIHsK KysgICAgICAgIEdWYXJpYW50ICp2YXJpYW50ID0gTlVMTDsKKysgICAgICAgIGdib29sZWFuIHZp c2libGUgPSBGQUxTRTsKKysgICAgICAgIElCdXNMb29rdXBUYWJsZSAqdGFibGUgPSBOVUxMOwor KworKyAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2YikiLCAmdmFyaWFudCwg JnZpc2libGUpOworKyAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAodmFyaWFudCk7CisrICAgICAg ICB0YWJsZSA9IChJQnVzTG9va3VwVGFibGUgKikgaWJ1c19zZXJpYWxpemFibGVfZGVzZXJpYWxp emUgKHZhcmlhbnQpOworKyAgICAgICAgZ192YXJpYW50X3VucmVmICh2YXJpYW50KTsKKysgICAg ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRhYmxlKTsKKysgICAgICAgIGdfc2lnbmFsX2VtaXQgKHBh bmVsLCBwYW5lbF9zaWduYWxzW1VQREFURV9MT09LVVBfVEFCTEVfUkVDRUlWRURdLCAwLAorKyAg ICAgICAgICAgICAgICAgICAgICAgdGFibGUsIHZpc2libGUpOworKyAgICAgICAgX2dfb2JqZWN0 X3VucmVmX2lmX2Zsb2F0aW5nICh0YWJsZSk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysK KysgICAgaWYgKGdfc3RyY21wMCAoIlVwZGF0ZUF1eGlsaWFyeVRleHRSZWNlaXZlZCIsIHNpZ25h bF9uYW1lKSA9PSAwKSB7CisrICAgICAgICBHVmFyaWFudCAqdmFyaWFudCA9IE5VTEw7CisrICAg ICAgICBnYm9vbGVhbiB2aXNpYmxlID0gRkFMU0U7CisrICAgICAgICBJQnVzVGV4dCAqdGV4dCA9 IE5VTEw7CisrCisrICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHZiKSIsICZ2 YXJpYW50LCAmdmlzaWJsZSk7CisrICAgICAgICBnX3JldHVybl9pZl9mYWlsICh2YXJpYW50KTsK KysgICAgICAgIHRleHQgPSAoSUJ1c1RleHQgKikgaWJ1c19zZXJpYWxpemFibGVfZGVzZXJpYWxp emUgKHZhcmlhbnQpOworKyAgICAgICAgZ192YXJpYW50X3VucmVmICh2YXJpYW50KTsKKysgICAg ICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHRleHQpOworKyAgICAgICAgZ19zaWduYWxfZW1pdCAocGFu ZWwsIHBhbmVsX3NpZ25hbHNbVVBEQVRFX0FVWElMSUFSWV9URVhUX1JFQ0VJVkVEXSwgMCwKKysg ICAgICAgICAgICAgICAgICAgICAgIHRleHQsIHZpc2libGUpOworKyAgICAgICAgX2dfb2JqZWN0 X3VucmVmX2lmX2Zsb2F0aW5nICh0ZXh0KTsKKyAgICAgICAgIHJldHVybjsKKyAgICAgfQorIAor QEAgLTU1MiwxMiArNjYwLDE3IEBAIHN0YXRpYyB2b2lkCisgYnVzX3BhbmVsX3Byb3h5X2NvbW1p dF90ZXh0IChCdXNQYW5lbFByb3h5ICpwYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElCdXNUZXh0ICAgICAgKnRleHQpCisgeworKyAgICBnYm9vbGVhbiB1c2VfZXh0ZW5zaW9u ID0gVFJVRTsKKyAgICAgZ19hc3NlcnQgKEJVU19JU19QQU5FTF9QUk9YWSAocGFuZWwpKTsKKyAg ICAgZ19hc3NlcnQgKHRleHQgIT0gTlVMTCk7CisgCistICAgIGlmIChwYW5lbC0+Zm9jdXNlZF9j b250ZXh0KSB7CistICAgICAgICBidXNfaW5wdXRfY29udGV4dF9jb21taXRfdGV4dCAocGFuZWwt PmZvY3VzZWRfY29udGV4dCwgdGV4dCk7CistICAgIH0KKysgICAgaWYgKCFwYW5lbC0+Zm9jdXNl ZF9jb250ZXh0KQorKyAgICAgICAgcmV0dXJuOworKyAgICBpZiAocGFuZWwtPnBhbmVsX3R5cGUg IT0gUEFORUxfVFlQRV9QQU5FTCkKKysgICAgICAgIHVzZV9leHRlbnNpb24gPSBGQUxTRTsKKysg ICAgYnVzX2lucHV0X2NvbnRleHRfY29tbWl0X3RleHRfdXNlX2V4dGVuc2lvbiAocGFuZWwtPmZv Y3VzZWRfY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdXNlX2V4dGVuc2lvbik7CisgfQorIAorICNkZWZpbmUgREVGSU5FX0ZVTkNUSU9O KE5hbWUsIG5hbWUpICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTg3NywzICs5OTAsNzQgQEAg YnVzX3BhbmVsX3Byb3h5X2dldF9wYW5lbF90eXBlIChCdXNQYW5lbFByb3h5ICAgICpwYW5lbCkK KyAgICAgZ19hc3NlcnQgKEJVU19JU19QQU5FTF9QUk9YWSAocGFuZWwpKTsKKyAgICAgcmV0dXJu IHBhbmVsLT5wYW5lbF90eXBlOworIH0KKysKKyt2b2lkCisrYnVzX3BhbmVsX3Byb3h5X3BhbmVs X2V4dGVuc2lvbl9yZWNlaXZlZCAoQnVzUGFuZWxQcm94eSAgICAgICpwYW5lbCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2 ZW50KQorK3sKKysgICAgR1ZhcmlhbnQgKmRhdGE7CisrCisrICAgIGdfYXNzZXJ0IChCVVNfSVNf UEFORUxfUFJPWFkgKHBhbmVsKSk7CisrICAgIGdfYXNzZXJ0IChldmVudCk7CisrCisrICAgIGRh dGEgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKElCVVNfU0VSSUFMSVpBQkxFIChldmVu dCkpOworKyAgICBnX3JldHVybl9pZl9mYWlsIChkYXRhKTsKKysgICAgZ19kYnVzX3Byb3h5X2Nh bGwgKChHREJ1c1Byb3h5ICopcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAiUGFuZWxF eHRlbnNpb25SZWNlaXZlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3 ICgiKHYpIiwgZGF0YSksCisrICAgICAgICAgICAgICAgICAgICAgICBHX0RCVVNfQ0FMTF9GTEFH U19OT05FLAorKyAgICAgICAgICAgICAgICAgICAgICAgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOwor K30KKysKKyt2b2lkCisrYnVzX3BhbmVsX3Byb3h5X3Byb2Nlc3Nfa2V5X2V2ZW50IChCdXNQYW5l bFByb3h5ICAgICAgICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGd1aW50ICAgICAgICAgICAgICAgIGtleXZhbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgIGtleWNvZGUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgICBzdGF0ZSwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3luY1JlYWR5Q2FsbGJhY2sgIGNhbGxiYWNr LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAg ICAgdXNlcl9kYXRhKQorK3sKKysgICAgZ19hc3NlcnQgKEJVU19JU19QQU5FTF9QUk9YWSAocGFu ZWwpKTsKKysKKysgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICopcGFuZWwsCisr ICAgICAgICAgICAgICAgICAgICAgICAiUHJvY2Vzc0tleUV2ZW50IiwKKysgICAgICAgICAgICAg ICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodXV1KSIsIGtleXZhbCwga2V5Y29kZSwgc3RhdGUp LAorKyAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX0NBTExfRkxBR1NfTk9ORSwKKysgICAg ICAgICAgICAgICAgICAgICAgIC0xLAorKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKysg ICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLAorKyAgICAgICAgICAgICAgICAgICAgICAg dXNlcl9kYXRhKTsKKyt9CisrCisrdm9pZAorK2J1c19wYW5lbF9wcm94eV9jb21taXRfdGV4dF9y ZWNlaXZlZCAoQnVzUGFuZWxQcm94eSAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICp0ZXh0KQorK3sKKysgICAgR1ZhcmlhbnQgKnZh cmlhbnQ7CisrCisrICAgIGdfYXNzZXJ0IChCVVNfSVNfUEFORUxfUFJPWFkgKHBhbmVsKSk7Cisr ICAgIGdfYXNzZXJ0IChJQlVTX0lTX1RFWFQgKHRleHQpKTsKKysKKysgICAgdmFyaWFudCA9IGli dXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoSUJVU19TRVJJQUxJWkFCTEUgKHRleHQpKTsKKysg ICAgZ19kYnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICopcGFuZWwsCisrICAgICAgICAgICAg ICAgICAgICAgICAiQ29tbWl0VGV4dFJlY2VpdmVkIiwKKysgICAgICAgICAgICAgICAgICAgICAg IGdfdmFyaWFudF9uZXcgKCIodikiLCB2YXJpYW50KSwKKysgICAgICAgICAgICAgICAgICAgICAg IEdfREJVU19DQUxMX0ZMQUdTX05PTkUsCisrICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVM TCwgTlVMTCwgTlVMTCk7CisrfQorKworK3ZvaWQKKytidXNfcGFuZWxfcHJveHlfY2FuZGlkYXRl X2NsaWNrZWRfbG9va3VwX3RhYmxlIChCdXNQYW5lbFByb3h5ICpwYW5lbCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICBpbmRl eCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlu dCAgICAgICAgICBidXR0b24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgc3RhdGUpCisreworKyAgICBnYm9vbGVhbiB1c2Vf ZXh0ZW5zaW9uID0gVFJVRTsKKysgICAgZ19hc3NlcnQgKEJVU19JU19QQU5FTF9QUk9YWSAocGFu ZWwpKTsKKysKKysgICAgZ19kYnVzX3Byb3h5X2NhbGwgKChHREJ1c1Byb3h5ICopcGFuZWwsCisr ICAgICAgICAgICAgICAgICAgICAgICAiQ2FuZGlkYXRlQ2xpY2tlZExvb2t1cFRhYmxlIiwKKysg ICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodXV1KSIsIGluZGV4LCBidXR0 b24sIHN0YXRlKSwKKysgICAgICAgICAgICAgICAgICAgICAgIEdfREJVU19DQUxMX0ZMQUdTX05P TkUsCisrICAgICAgICAgICAgICAgICAgICAgICAtMSwgTlVMTCwgTlVMTCwgTlVMTCk7CisrfQor ZGlmZiAtLWdpdCBhL2J1cy9wYW5lbHByb3h5LmggYi9idXMvcGFuZWxwcm94eS5oCitpbmRleCBi NWE3YWYxNy4uNGQ4YWZiOTggMTAwNjQ0CistLS0gYS9idXMvcGFuZWxwcm94eS5oCisrKysgYi9i dXMvcGFuZWxwcm94eS5oCitAQCAtNTUsNyArNTUsNyBAQCB0eXBlZGVmIGVudW0KKyB7CisgICAg IFBBTkVMX1RZUEVfTk9ORSwKKyAgICAgUEFORUxfVFlQRV9QQU5FTCwKKy0gICAgUEFORUxfVFlQ RV9FWFRFTlNJT04KKysgICAgUEFORUxfVFlQRV9FWFRFTlNJT05fRU1PSkkKKyB9IFBhbmVsVHlw ZTsKKyAKKyB0eXBlZGVmIHN0cnVjdCBfQnVzUGFuZWxQcm94eSBCdXNQYW5lbFByb3h5OworQEAg LTEzNSw2ICsxMzUsMjcgQEAgdm9pZCAgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfc2V0X2Nv bnRlbnRfdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGd1aW50ICAgICAgICAgICAgICBoaW50cyk7CisgUGFuZWxUeXBlICAgICAgICBidXNfcGFu ZWxfcHJveHlfZ2V0X3BhbmVsX3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChCdXNQYW5lbFByb3h5ICAgICAqcGFuZWwpOworK3ZvaWQgICAgICAg ICAgICAgYnVzX3BhbmVsX3Byb3h5X3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c1BhbmVsUHJveHkgICAg ICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQnVzRXh0ZW5zaW9uRXZlbnQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZXZlbnQpOworK3ZvaWQgICAgICAgICAg ICAgYnVzX3BhbmVsX3Byb3h5X3Byb2Nlc3Nfa2V5X2V2ZW50CisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQnVzUGFuZWxQcm94eSAgICAgKnBhbmVsLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAg ICAgICAgICAgICBrZXl2YWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIGtleWNvZGUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIHN0YXRl LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdBc3lu Y1JlYWR5Q2FsbGJhY2sKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgIHVzZXJfZGF0 YSk7Cisrdm9pZCAgICAgICAgICAgICBidXNfcGFuZWxfcHJveHlfY29tbWl0X3RleHRfcmVjZWl2 ZWQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCdXNQ YW5lbFByb3h5ICAgICAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgSUJ1c1RleHQgICAgICAgICAgKnRleHQpOworK3ZvaWQgICAgICAgICAg ICAgYnVzX3BhbmVsX3Byb3h5X2NhbmRpZGF0ZV9jbGlja2VkX2xvb2t1cF90YWJsZQorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJ1c1BhbmVsUHJveHkg ICAgICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndWludCAgICAgICAgICAgICAgaW5kZXgsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgIGJ1dHRvbiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAg ICAgICAgc3RhdGUpOworKworIEdfRU5EX0RFQ0xTCisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IGEv ZGF0YS9pYnVzLnNjaGVtYXMuaW4gYi9kYXRhL2lidXMuc2NoZW1hcy5pbgoraW5kZXggM2M2YjZm NjkuLmY0YTAxOWQwIDEwMDY0NAorLS0tIGEvZGF0YS9pYnVzLnNjaGVtYXMuaW4KKysrKyBiL2Rh dGEvaWJ1cy5zY2hlbWFzLmluCitAQCAtMzUzLDYgKzM1MywxOCBAQAorIAkgICAgPGxvbmc+Q3Vz dG9tIGZvbnQgbmFtZSBmb3IgbGFuZ3VhZ2UgcGFuZWw8L2xvbmc+CisgICAgICAgPC9sb2NhbGU+ CisgICAgIDwvc2NoZW1hPgorKyAgICA8c2NoZW1hPgorKyAgICAgIDxrZXk+L3NjaGVtYXMvZGVz a3RvcC9pYnVzL3BhbmVsL2Vtb2ppL3VuaWNvZGUtaG90a2V5PC9rZXk+CisrICAgICAgPGFwcGx5 dG8+L2Rlc2t0b3AvaWJ1cy9wYW5lbC9lbW9qaS91bmljb2RlLWhvdGtleTwvYXBwbHl0bz4KKysg ICAgICA8b3duZXI+aWJ1czwvb3duZXI+CisrICAgICAgPHR5cGU+bGlzdDwvdHlwZT4KKysgICAg ICA8bGlzdF90eXBlPnN0cmluZzwvbGlzdF90eXBlPgorKyAgICAgIDxkZWZhdWx0PlsmbHQ7Q29u dHJvbCZndDsmbHQ7U2hpZnQmZ3Q7dV08L2RlZmF1bHQ+CisrICAgICAgPGxvY2FsZSBuYW1lPSJD Ij4KKysgICAgICAgIDxzaG9ydD5Vbmljb2RlIHNob3J0Y3V0IGtleXMgZm9yIGd0a19hY2NlbGVy YXRvcl9wYXJzZTwvc2hvcnQ+CisrICAgICAgICAgIDxsb25nPlRoZSBzaG9ydGN1dCBrZXlzIGZv ciB0dXJuaW5nIFVuaWNvZGUgdHlwaW5nIG9uIG9yIG9mZjwvbG9uZz4KKysgICAgICA8L2xvY2Fs ZT4KKysgICAgPC9zY2hlbWE+CisgICAgIDxzY2hlbWE+CisgICAgICAgPGtleT4vc2NoZW1hcy9k ZXNrdG9wL2lidXMvcGFuZWwvZW1vamkvaG90a2V5PC9rZXk+CisgICAgICAgPGFwcGx5dG8+L2Rl c2t0b3AvaWJ1cy9wYW5lbC9lbW9qaS9ob3RrZXk8L2FwcGx5dG8+CitkaWZmIC0tZ2l0IGEvc2V0 dXAvbWFpbi5weSBiL3NldHVwL21haW4ucHkKK2luZGV4IGYwZWVlOTk2Li5mNmFkYjA5OCAxMDA2 NDQKKy0tLSBhL3NldHVwL21haW4ucHkKKysrKyBiL3NldHVwL21haW4ucHkKK0BAIC00LDcgKzQs NyBAQAorICMgaWJ1cyAtIFRoZSBJbnB1dCBCdXMKKyAjCisgIyBDb3B5cmlnaHQgKGMpIDIwMDct MjAxNiBQZW5nIEh1YW5nIDxzaGF3bi5wLmh1YW5nQGdtYWlsLmNvbT4KKy0jIENvcHlyaWdodCAo YykgMjAxMC0yMDE3IFRha2FvIEZ1aml3YXJhIDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgor KyMgQ29weXJpZ2h0IChjKSAyMDEwLTIwMTggVGFrYW8gRnVqaXdhcmEgPHRha2FvLmZ1aml3YXJh MUBnbWFpbC5jb20+CisgIyBDb3B5cmlnaHQgKGMpIDIwMDctMjAxNiBSZWQgSGF0LCBJbmMuCisg IworICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vcgorQEAgLTEyMywxMCArMTIzLDE1IEBAIGNsYXNzIFNldHVwKG9iamVjdCk6Cisg ICAgICAgICBuYW1lID0gJ2Vtb2ppJworICAgICAgICAgbGFiZWwgPSAnZW1vamlfZGlhbG9nJwor ICAgICAgICAgc2VsZi5fX2luaXRfaG90a2V5KG5hbWUsIGxhYmVsKQorKyAgICAgICAgbmFtZSA9 ICd1bmljb2RlJworKyAgICAgICAgbGFiZWwgPSAndW5pY29kZV9kaWFsb2cnCisrICAgICAgICBz ZWxmLl9faW5pdF9ob3RrZXkobmFtZSwgbGFiZWwpCisgCisgICAgIGRlZiBfX2luaXRfaG90a2V5 KHNlbGYsIG5hbWUsIGxhYmVsLCBjb21tZW50PU5vbmUpOgorICAgICAgICAgaWYgbmFtZSA9PSAn ZW1vamknOgorICAgICAgICAgICAgIHNob3J0Y3V0cyA9IHNlbGYuX19zZXR0aW5nc19lbW9qaS5n ZXRfc3RydignaG90a2V5JykKKysgICAgICAgIGVsaWYgbmFtZSA9PSAndW5pY29kZSc6CisrICAg ICAgICAgICAgc2hvcnRjdXRzID0gc2VsZi5fX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJ2KCd1bmlj b2RlLWhvdGtleScpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHNob3J0Y3V0cyA9IHNl bGYuX19zZXR0aW5nc19ob3RrZXkuZ2V0X3N0cnYobmFtZSkKKyAgICAgICAgIGJ1dHRvbiA9IHNl bGYuX19idWlsZGVyLmdldF9vYmplY3QoImJ1dHRvbl8lcyIgJSBsYWJlbCkKK0BAIC0xMzksNiAr MTQ0LDkgQEAgY2xhc3MgU2V0dXAob2JqZWN0KToKKyAgICAgICAgIGlmIG5hbWUgPT0gJ2Vtb2pp JzoKKyAgICAgICAgICAgICBidXR0b24uY29ubmVjdCgiY2xpY2tlZCIsIHNlbGYuX19zaG9ydGN1 dF9idXR0b25fY2xpY2tlZF9jYiwKKyAgICAgICAgICAgICAgICAgICAgICdob3RrZXknLCAncGFu ZWwvJyArIG5hbWUsIGxhYmVsLCBlbnRyeSkKKysgICAgICAgIGVsaWYgbmFtZSA9PSAndW5pY29k ZSc6CisrICAgICAgICAgICAgYnV0dG9uLmNvbm5lY3QoImNsaWNrZWQiLCBzZWxmLl9fc2hvcnRj dXRfYnV0dG9uX2NsaWNrZWRfY2IsCisrICAgICAgICAgICAgICAgICAgICAndW5pY29kZS1ob3Rr ZXknLCAncGFuZWwvZW1vamknLCBsYWJlbCwgZW50cnkpCisgICAgICAgICBlbHNlOgorICAgICAg ICAgICAgIGJ1dHRvbi5jb25uZWN0KCJjbGlja2VkIiwgc2VsZi5fX3Nob3J0Y3V0X2J1dHRvbl9j bGlja2VkX2NiLAorICAgICAgICAgICAgICAgICAgICAgbmFtZSwgImdlbmVyYWwvaG90a2V5Iiwg bGFiZWwsIGVudHJ5KQorZGlmZiAtLWdpdCBhL3NldHVwL3NldHVwLnVpIGIvc2V0dXAvc2V0dXAu dWkKK2luZGV4IGU2NGIxMDQ2Li5mMWJlYjFkZSAxMDA2NDQKKy0tLSBhL3NldHVwL3NldHVwLnVp CisrKysgYi9zZXR1cC9zZXR1cC51aQorQEAgLTg3MCw5ICs4NzAsOSBAQAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJsYWJlbF9lbW9qaTEi PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+ VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBu YW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgPHByb3BlcnR5IG5hbWU9InRvb2x0aXBfdGV4dCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlRo ZSBzaG9ydGN1dCBrZXlzIGZvciBzaG93aW5nIGVtb2ppIGRpYWxvZzwvcHJvcGVydHk+CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRy YW5zbGF0YWJsZT0ieWVzIj5UaGUgc2hvcnRjdXQga2V5cyB0byBlbmFibGUgY29udmVyc2lvbnMg b2YgZW1vamkgYW5ub3RhdGlvbnMgb3IgVW5pY29kZSBuYW1lczwvcHJvcGVydHk+CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9w ZXJ0eT4KKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVs IiB0cmFuc2xhdGFibGU9InllcyI+RW1vamkgY2hvaWNlOjwvcHJvcGVydHk+CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5 ZXMiPkVtb2ppIGFubm90YXRpb246PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwv cHJvcGVydHk+CitAQCAtOTIwLDYgKzkyMCw2MCBAQAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0idG9wX2F0dGFjaCI+MDwvcHJvcGVydHk+CisgICAgICAgICAg ICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICAgPC9j aGlsZD4KKysgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisrICAgICAgICAgICAgICAg ICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImxhYmVsX3VuaWNvZGUxIj4K KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRy dWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b29sdGlwX3RleHQiIHRyYW5zbGF0YWJsZT0ieWVzIj5UaGUg c2hvcnRjdXQga2V5cyB0byBlbmFibGUgVW5pY29kZSBjb2RlIHBvaW50IGNvbnZlcnNpb25zPC9w cm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imhh bGlnbiI+c3RhcnQ8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJv cGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5Vbmljb2RlIGNvZGUgcG9pbnQ6 PC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0X2F0dGFjaCI+MDwvcHJvcGVydHk+CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKysgICAgICAgICAgICAg ICAgICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKysg ICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0JveCIgaWQ9Imhib3hf dW5pY29kZTEiPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0i b3JpZW50YXRpb24iPmhvcml6b250YWw8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9w cm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNw YWNpbmciPjY8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0iaGV4cGFuZCI+dHJ1ZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxjaGlsZD4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNs YXNzPSJHdGtFbnRyeSIgaWQ9ImVudHJ5X3VuaWNvZGVfZGlhbG9nIj4KKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0 eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5f Zm9jdXMiPlRydWU8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg PHByb3BlcnR5IG5hbWU9ImVkaXRhYmxlIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgPHBhY2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkg bmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8Y2hpbGQ+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0i R3RrQnV0dG9uIiBpZD0iYnV0dG9uX3VuaWNvZGVfZGlhbG9nIj4KKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMi Pi4uLjwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVy dHkgbmFtZT0idXNlX2FjdGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwv cHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFt ZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5GYWxzZTwvcHJvcGVydHk+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX2Fj dGlvbl9hcHBlYXJhbmNlIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlX3VuZGVybGluZSI+VHJ1ZTwvcHJvcGVydHk+ CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVy dHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9z aXRpb24iPjE8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFj a2luZz4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKysgICAgICAgICAg ICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgPHBh Y2tpbmc+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsZWZ0 X2F0dGFjaCI+MTwvcHJvcGVydHk+CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9w ZXJ0eSBuYW1lPSJ0b3BfYXR0YWNoIj4xPC9wcm9wZXJ0eT4KKysgICAgICAgICAgICAgICAgICAg ICAgICAgIDwvcGFja2luZz4KKysgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAg ICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgIDwvY2hp bGQ+CisgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQgdHlwZT0ibGFiZWwiPgorZGlmZiAtLWdp dCBhL3NyYy9pYnVzZW5naW5lLmMgYi9zcmMvaWJ1c2VuZ2luZS5jCitpbmRleCBmZDYxMTAyYS4u YTNjY2Q3ZGQgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c2VuZ2luZS5jCisrKysgYi9zcmMvaWJ1c2Vu Z2luZS5jCitAQCAtNjQsOCArNjQsNiBAQCBlbnVtIHsKKyB9OworIAorIAorLXR5cGVkZWYgc3Ry dWN0IF9JQnVzRW5naW5lS2V5YmluZGluZyBJQnVzRW5naW5lS2V5YmluZGluZzsKKy0KKyAvKiBJ QnVzRW5naW5lUHJpdiAqLworIHN0cnVjdCBfSUJ1c0VuZ2luZVByaXZhdGUgeworICAgICBnY2hh ciAqZW5naW5lX25hbWU7CitAQCAtODEsMTQgKzc5LDExIEBAIHN0cnVjdCBfSUJ1c0VuZ2luZVBy aXZhdGUgeworICAgICBndWludCBjb250ZW50X3B1cnBvc2U7CisgICAgIGd1aW50IGNvbnRlbnRf aGludHM7CisgCistICAgIEdTZXR0aW5ncyAgICAgICAgICAgICAqc2V0dGluZ3NfZW1vamk7Cist ICAgIElCdXNFbmdpbmVLZXliaW5kaW5nICoqZW1vamlfa2V5YmluZGluZ3M7CisrICAgIEdIYXNo VGFibGUgICAgICAgICAgICAqZXh0ZW5zaW9uX2tleWJpbmRpbmdzOworKyAgICBnYm9vbGVhbiAg ICAgICAgICAgICAgIGVuYWJsZV9leHRlbnNpb247CisrICAgIGdjaGFyICAgICAgICAgICAgICAg ICAqY3VycmVudF9leHRlbnNpb25fbmFtZTsKKyB9OworIAorLXN0cnVjdCBfSUJ1c0VuZ2luZUtl eWJpbmRpbmcgeworLSAgICBndWludCAgICAgICAgICAgIGtleXZhbDsKKy0gICAgSUJ1c01vZGlm aWVyVHlwZSBtb2RpZmllcnM7CistfTsKKyAKKyBzdGF0aWMgZ3VpbnQgICAgICAgICAgICBlbmdp bmVfc2lnbmFsc1tMQVNUX1NJR05BTF0gPSB7IDAgfTsKKyAKK0BAIC0xOTEsMTAgKzE4Niw2IEBA IHN0YXRpYyB2b2lkICAgICAgaWJ1c19lbmdpbmVfZGJ1c19wcm9wZXJ0eV9jaGFuZ2VkCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAg ICAgICAqcHJvcGVydHlfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR1ZhcmlhbnQgICAgICAgICAgICp2YWx1ZSk7Cisgc3RhdGljIHZvaWQgICAg ICBpYnVzX2VuZ2luZV9rZXliaW5kaW5nX2ZyZWUgKElCdXNFbmdpbmUgICAgICAgICAqZW5naW5l KTsKKy1zdGF0aWMgdm9pZCAgICAgIHNldHRpbmdzX2Vtb2ppX2hvdGtleV9jaGFuZ2VkX2NiIAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHU2V0dGluZ3Mg ICAgICAgICAgKnNldHRpbmdzLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBnY2hhciAgICAgICAgKmtleSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICBkYXRhKTsKKyAK KyAKKyBHX0RFRklORV9UWVBFIChJQnVzRW5naW5lLCBpYnVzX2VuZ2luZSwgSUJVU19UWVBFX1NF UlZJQ0UpCitAQCAtMjUzLDYgKzI0NCwxMiBAQCBzdGF0aWMgY29uc3QgZ2NoYXIgaW50cm9zcGVj dGlvbl94bWxbXSA9CisgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nICB0eXBlPSd1JyBu YW1lPSdjdXJzb3JfcG9zJyAvPiIKKyAgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5 cGU9J3UnIG5hbWU9J2FuY2hvcl9wb3MnIC8+IgorICAgICAiICAgIDwvbWV0aG9kPiIKKysgICAg IiAgICA8bWV0aG9kIG5hbWU9J1BhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQnPiIKKysgICAgIiAgICAg IDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9J3YnIG5hbWU9J2V2ZW50JyAvPiIKKysgICAgIiAg ICA8L21ldGhvZD4iCisrICAgICIgICAgPG1ldGhvZCBuYW1lPSdQYW5lbEV4dGVuc2lvblJlZ2lz dGVyS2V5cyc+IgorKyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyAgdHlwZT0ndicgbmFt ZT0nZGF0YScgLz4iCisrICAgICIgICAgPC9tZXRob2Q+IgorICAgICAvKiBGSVhNRSBzaWduYWxz ICovCisgICAgICIgICAgPHNpZ25hbCBuYW1lPSdDb21taXRUZXh0Jz4iCisgICAgICIgICAgICA8 YXJnIHR5cGU9J3YnIG5hbWU9J3RleHQnIC8+IgorQEAgLTMwOSwxNiArMzA2LDIyIEBAIGlidXNf ZW5naW5lX2NsYXNzX2luaXQgKElCdXNFbmdpbmVDbGFzcyAqY2xhc3MpCisgICAgIEdPYmplY3RD bGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChjbGFzcyk7CisgICAgIElCdXNP YmplY3RDbGFzcyAqaWJ1c19vYmplY3RfY2xhc3MgPSBJQlVTX09CSkVDVF9DTEFTUyAoY2xhc3Mp OworIAorLSAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSAoR09iamVjdFNldFByb3Bl cnR5RnVuYykgaWJ1c19lbmdpbmVfc2V0X3Byb3BlcnR5OworLSAgICBnb2JqZWN0X2NsYXNzLT5n ZXRfcHJvcGVydHkgPSAoR09iamVjdEdldFByb3BlcnR5RnVuYykgaWJ1c19lbmdpbmVfZ2V0X3By b3BlcnR5OworKyAgICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPQorKyAgICAgICAgICAg IChHT2JqZWN0U2V0UHJvcGVydHlGdW5jKSBpYnVzX2VuZ2luZV9zZXRfcHJvcGVydHk7CisrICAg IGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RHZXRQ cm9wZXJ0eUZ1bmMpIGlidXNfZW5naW5lX2dldF9wcm9wZXJ0eTsKKyAKKyAgICAgaWJ1c19vYmpl Y3RfY2xhc3MtPmRlc3Ryb3kgPSAoSUJ1c09iamVjdERlc3Ryb3lGdW5jKSBpYnVzX2VuZ2luZV9k ZXN0cm95OworIAorLSAgICBJQlVTX1NFUlZJQ0VfQ0xBU1MgKGNsYXNzKS0+c2VydmljZV9tZXRo b2RfY2FsbCAgPSBpYnVzX2VuZ2luZV9zZXJ2aWNlX21ldGhvZF9jYWxsOworLSAgICBJQlVTX1NF UlZJQ0VfQ0xBU1MgKGNsYXNzKS0+c2VydmljZV9nZXRfcHJvcGVydHkgPSBpYnVzX2VuZ2luZV9z ZXJ2aWNlX2dldF9wcm9wZXJ0eTsKKy0gICAgSUJVU19TRVJWSUNFX0NMQVNTIChjbGFzcyktPnNl cnZpY2Vfc2V0X3Byb3BlcnR5ID0gaWJ1c19lbmdpbmVfc2VydmljZV9zZXRfcHJvcGVydHk7Cisr ICAgIElCVVNfU0VSVklDRV9DTEFTUyAoY2xhc3MpLT5zZXJ2aWNlX21ldGhvZF9jYWxsICA9Cisr ICAgICAgICAgICAgaWJ1c19lbmdpbmVfc2VydmljZV9tZXRob2RfY2FsbDsKKysgICAgSUJVU19T RVJWSUNFX0NMQVNTIChjbGFzcyktPnNlcnZpY2VfZ2V0X3Byb3BlcnR5ID0KKysgICAgICAgICAg ICBpYnVzX2VuZ2luZV9zZXJ2aWNlX2dldF9wcm9wZXJ0eTsKKysgICAgSUJVU19TRVJWSUNFX0NM QVNTIChjbGFzcyktPnNlcnZpY2Vfc2V0X3Byb3BlcnR5ID0KKysgICAgICAgICAgICBpYnVzX2Vu Z2luZV9zZXJ2aWNlX3NldF9wcm9wZXJ0eTsKKyAKKy0gICAgaWJ1c19zZXJ2aWNlX2NsYXNzX2Fk ZF9pbnRlcmZhY2VzIChJQlVTX1NFUlZJQ0VfQ0xBU1MgKGNsYXNzKSwgaW50cm9zcGVjdGlvbl94 bWwpOworKyAgICBpYnVzX3NlcnZpY2VfY2xhc3NfYWRkX2ludGVyZmFjZXMgKElCVVNfU0VSVklD RV9DTEFTUyAoY2xhc3MpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludHJvc3BlY3Rpb25feG1sKTsKKyAKKyAgICAgY2xhc3MtPnByb2Nlc3Nfa2V5X2V2ZW50ID0g aWJ1c19lbmdpbmVfcHJvY2Vzc19rZXlfZXZlbnQ7CisgICAgIGNsYXNzLT5mb2N1c19pbiAgICAg PSBpYnVzX2VuZ2luZV9mb2N1c19pbjsKK0BAIC04MzksMjYgKzg0MiwyNSBAQCBpYnVzX2VuZ2lu ZV9pbml0IChJQnVzRW5naW5lICplbmdpbmUpCisgeworICAgICBJQnVzRW5naW5lUHJpdmF0ZSAq cHJpdjsKKyAgICAgZW5naW5lLT5wcml2ID0gcHJpdiA9IElCVVNfRU5HSU5FX0dFVF9QUklWQVRF IChlbmdpbmUpOworLQorICAgICBwcml2LT5zdXJyb3VuZGluZ190ZXh0ID0gZ19vYmplY3RfcmVm X3NpbmsgKHRleHRfZW1wdHkpOworLSAgICBwcml2LT5zZXR0aW5nc19lbW9qaSA9CistICAgICAg ICAgICAgZ19zZXR0aW5nc19uZXcgKCJvcmcuZnJlZWRlc2t0b3AuaWJ1cy5wYW5lbC5lbW9qaSIp OworLSAgICBzZXR0aW5nc19lbW9qaV9ob3RrZXlfY2hhbmdlZF9jYiAocHJpdi0+c2V0dGluZ3Nf ZW1vamksICJob3RrZXkiLCBlbmdpbmUpOworLSAgICBnX3NpZ25hbF9jb25uZWN0IChwcml2LT5z ZXR0aW5nc19lbW9qaSwgImNoYW5nZWQ6OmhvdGtleSIsCistICAgICAgICAgICAgICAgICAgICAg IEdfQ0FMTEJBQ0sgKHNldHRpbmdzX2Vtb2ppX2hvdGtleV9jaGFuZ2VkX2NiKSwgZW5naW5lKTsK KysgICAgcHJpdi0+ZXh0ZW5zaW9uX2tleWJpbmRpbmdzID0gZ19oYXNoX3RhYmxlX25ld19mdWxs ICgKKysgICAgICAgICAgICBnX3N0cl9oYXNoLAorKyAgICAgICAgICAgIGdfc3RyX2VxdWFsLAor KyAgICAgICAgICAgIGdfZnJlZSwKKysgICAgICAgICAgICBnX2ZyZWUpOworIH0KKyAKKyBzdGF0 aWMgdm9pZAorIGlidXNfZW5naW5lX2Rlc3Ryb3kgKElCdXNFbmdpbmUgKmVuZ2luZSkKKyB7Cist ICAgIGdfZnJlZSAoZW5naW5lLT5wcml2LT5lbmdpbmVfbmFtZSk7CistICAgIGVuZ2luZS0+cHJp di0+ZW5naW5lX25hbWUgPSBOVUxMOworKyAgICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdiA9IGVu Z2luZS0+cHJpdjsKKyAKKy0gICAgaWYgKGVuZ2luZS0+cHJpdi0+c3Vycm91bmRpbmdfdGV4dCkg eworLSAgICAgICAgZ19vYmplY3RfdW5yZWYgKGVuZ2luZS0+cHJpdi0+c3Vycm91bmRpbmdfdGV4 dCk7CistICAgICAgICBlbmdpbmUtPnByaXYtPnN1cnJvdW5kaW5nX3RleHQgPSBOVUxMOworLSAg ICB9CistICAgIGlidXNfZW5naW5lX2tleWJpbmRpbmdfZnJlZSAoZW5naW5lKTsKKysgICAgZ19j bGVhcl9wb2ludGVyICgmcHJpdi0+ZW5naW5lX25hbWUsIGdfZnJlZSk7CisrICAgIGdfY2xlYXJf cG9pbnRlciAoJnByaXYtPmN1cnJlbnRfZXh0ZW5zaW9uX25hbWUsIGdfZnJlZSk7CisrICAgIGlm IChwcml2LT5zdXJyb3VuZGluZ190ZXh0KQorKyAgICAgICAgZ19jbGVhcl9vYmplY3QgKCZwcml2 LT5zdXJyb3VuZGluZ190ZXh0KTsKKysgICAgaWYgKHByaXYtPmV4dGVuc2lvbl9rZXliaW5kaW5n cykKKysgICAgICAgIGdfY2xlYXJfcG9pbnRlciAoJnByaXYtPmV4dGVuc2lvbl9rZXliaW5kaW5n cywgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kpOworIAorICAgICBJQlVTX09CSkVDVF9DTEFTUyhpYnVz X2VuZ2luZV9wYXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVTX09CSkVDVCAoZW5naW5lKSk7Cisg fQorQEAgLTg5NSwxOSArODk3LDM4IEBAIGlidXNfZW5naW5lX2dldF9wcm9wZXJ0eSAoSUJ1c0Vu Z2luZSAqZW5naW5lLAorIH0KKyAKKyBzdGF0aWMgdm9pZAorLWlidXNfZW5naW5lX3BhbmVsX2V4 dGVuc2lvbiAoSUJ1c0VuZ2luZSAqZW5naW5lKQorK2lidXNfZW5naW5lX3BhbmVsX2V4dGVuc2lv biAoSUJ1c0VuZ2luZSAgKmVuZ2luZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGdjaGFyICpuYW1lKQorIHsKKy0gICAgSUJ1c1hFdmVudCAqeGV2ZW50ID0gaWJ1c194X2V2 ZW50X25ldyAoCistICAgICAgICAgICAgImV2ZW50LXR5cGUiLCBJQlVTX1hfRVZFTlRfS0VZX1BS RVNTLAorLSAgICAgICAgICAgICJwdXJwb3NlIiwgImVtb2ppIiwKKysgICAgSUJ1c0VuZ2luZVBy aXZhdGUgKnByaXY7CisrICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQ7CisrICAgIEdWYXJp YW50ICpkYXRhOworKworKyAgICBnX2Fzc2VydCAoSUJVU19JU19FTkdJTkUgKGVuZ2luZSkpOwor KyAgICBnX2Fzc2VydCAobmFtZSk7CisrCisrICAgIHByaXYgPSBlbmdpbmUtPnByaXY7CisrICAg IGlmICghZ19zdHJjbXAwIChuYW1lLCBwcml2LT5jdXJyZW50X2V4dGVuc2lvbl9uYW1lKSkKKysg ICAgICAgIHByaXYtPmVuYWJsZV9leHRlbnNpb24gPSAhcHJpdi0+ZW5hYmxlX2V4dGVuc2lvbjsK KysgICAgZWxzZQorKyAgICAgICAgcHJpdi0+ZW5hYmxlX2V4dGVuc2lvbiA9IFRSVUU7CisrICAg IGlmIChwcml2LT5lbmFibGVfZXh0ZW5zaW9uKSB7CisrICAgICAgICBnX2ZyZWUgKHByaXYtPmN1 cnJlbnRfZXh0ZW5zaW9uX25hbWUpOworKyAgICAgICAgcHJpdi0+Y3VycmVudF9leHRlbnNpb25f bmFtZSA9IGdfc3RyZHVwIChuYW1lKTsKKysgICAgfQorKyAgICBldmVudCA9IGlidXNfZXh0ZW5z aW9uX2V2ZW50X25ldyAoCisrICAgICAgICAgICAgIm5hbWUiLCBuYW1lLAorKyAgICAgICAgICAg ICJpcy1lbmFibGVkIiwgcHJpdi0+ZW5hYmxlX2V4dGVuc2lvbiwKKyAgICAgICAgICAgICBOVUxM KTsKKy0gICAgR1ZhcmlhbnQgKmRhdGEgPSBpYnVzX3NlcmlhbGl6YWJsZV9zZXJpYWxpemVfb2Jq ZWN0ICgKKy0gICAgICAgICAgICBJQlVTX1NFUklBTElaQUJMRSAoeGV2ZW50KSk7CisrICAgIGdf YXNzZXJ0IChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQpKTsKKysgICAgZGF0YSA9IGli dXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZV9vYmplY3QgKAorKyAgICAgICAgICAgIElCVVNfU0VS SUFMSVpBQkxFIChldmVudCkpOworIAorICAgICBnX2Fzc2VydCAoZGF0YSAhPSBOVUxMKTsKKyAg ICAgaWJ1c19lbmdpbmVfZW1pdF9zaWduYWwgKGVuZ2luZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJQYW5lbEV4dGVuc2lvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgZGF0YSkpOworKyAgICBnX29iamVjdF91bnJlZiAoZXZl bnQpOworIH0KKyAKKyBzdGF0aWMgZ2Jvb2xlYW4KK0BAIC05MTcsNyArOTM4LDggQEAgaWJ1c19l bmdpbmVfZmlsdGVyX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5naW5lLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgIHN0YXRlKQorIHsKKyAgICAgSUJ1c0VuZ2lu ZVByaXZhdGUgKnByaXY7CistICAgIGludCBpOworKyAgICBHTGlzdCAqbmFtZXMsICpuOworKyAg ICBJQnVzUHJvY2Vzc0tleUV2ZW50RGF0YSAqa2V5czsKKyAgICAgZ3VpbnQgbW9kaWZpZXJzOwor IAorICAgICBpZiAoKHN0YXRlICYgSUJVU19SRUxFQVNFX01BU0spICE9IDApCitAQCAtOTI1LDIy ICs5NDcsMjkgQEAgaWJ1c19lbmdpbmVfZmlsdGVyX2tleV9ldmVudCAoSUJ1c0VuZ2luZSAqZW5n aW5lLAorICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FTkdJTkUgKGVuZ2luZSks IEZBTFNFKTsKKyAKKyAgICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKKy0gICAgaWYgKCFwcml2LT5l bW9qaV9rZXliaW5kaW5ncykKKy0gICAgICAgIHJldHVybiBGQUxTRTsKKy0KKyAgICAgbW9kaWZp ZXJzID0gc3RhdGUgJiBJQlVTX01PRElGSUVSX0ZJTFRFUjsKKyAgICAgaWYgKGtleXZhbCA+PSBJ QlVTX0tFWV9BICYmIGtleXZhbCA8PSBJQlVTX0tFWV9aICYmCisgICAgICAgICAobW9kaWZpZXJz ICYgSUJVU19TSElGVF9NQVNLKSAhPSAwKSB7CisgICAgICAgICBrZXl2YWwgPSBrZXl2YWwgLSBJ QlVTX0tFWV9BICsgSUJVU19LRVlfYTsKKyAgICAgfQorLSAgICBmb3IgKGkgPSAwOyBwcml2LT5l bW9qaV9rZXliaW5kaW5nc1tpXTsgaSsrKSB7CistICAgICAgICBJQnVzRW5naW5lS2V5YmluZGlu ZyAqYmluZGluZyA9IHByaXYtPmVtb2ppX2tleWJpbmRpbmdzW2ldOworLSAgICAgICAgaWYgKGJp bmRpbmctPmtleXZhbCA9PSBrZXl2YWwgJiYKKy0gICAgICAgICAgICBiaW5kaW5nLT5tb2RpZmll cnMgPT0gbW9kaWZpZXJzKSB7CistICAgICAgICAgICAgaWJ1c19lbmdpbmVfcGFuZWxfZXh0ZW5z aW9uIChlbmdpbmUpOworLSAgICAgICAgICAgIHJldHVybiBUUlVFOworKyAgICBuYW1lcyA9IGdf aGFzaF90YWJsZV9nZXRfa2V5cyAocHJpdi0+ZXh0ZW5zaW9uX2tleWJpbmRpbmdzKTsKKysgICAg aWYgKCFuYW1lcykKKysgICAgICAgIHJldHVybiBGQUxTRTsKKysgICAgZm9yIChuID0gbmFtZXM7 IG47IG4gPSBuLT5uZXh0KSB7CisrICAgICAgICBjb25zdCBnY2hhciAqbmFtZSA9IChjb25zdCBn Y2hhciAqKW4tPmRhdGE7CisrICAgICAgICBrZXlzID0gZ19oYXNoX3RhYmxlX2xvb2t1cCAocHJp di0+ZXh0ZW5zaW9uX2tleWJpbmRpbmdzLCBuYW1lKTsKKysgICAgICAgIGZvciAoOyBrZXlzOyBr ZXlzKyspIHsKKysgICAgICAgICAgICBpZiAoa2V5cy0+a2V5dmFsID09IDAgJiYga2V5cy0+a2V5 Y29kZSA9PSAwICYmIGtleXMtPnN0YXRlID09IDApCisrICAgICAgICAgICAgICAgIGJyZWFrOwor KyAgICAgICAgICAgIGlmIChrZXlzLT5rZXl2YWwgPT0ga2V5dmFsICYmCisrICAgICAgICAgICAg ICAgIGtleXMtPnN0YXRlID09IG1vZGlmaWVycyAmJgorKyAgICAgICAgICAgICAgICAoa2V5cy0+ a2V5Y29kZSA9PSAwIHx8IGtleXMtPmtleWNvZGUgPT0ga2V5Y29kZSkpIHsKKysgICAgICAgICAg ICAgICAgaWJ1c19lbmdpbmVfcGFuZWxfZXh0ZW5zaW9uIChlbmdpbmUsIG5hbWUpOworKyAgICAg ICAgICAgICAgICByZXR1cm4gVFJVRTsKKysgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAg IH0KKysgICAgZ19saXN0X2ZyZWUgKG5hbWVzKTsKKyAgICAgcmV0dXJuIEZBTFNFOworIH0KKyAK K0BAIC05NTMsNiArOTgyLDk3IEBAIGlidXNfZW5naW5lX3NlcnZpY2VfYXV0aG9yaXplZF9tZXRo b2QgKElCdXNTZXJ2aWNlICAgICAqc2VydmljZSwKKyAgICAgcmV0dXJuIEZBTFNFOworIH0KKyAK KytzdGF0aWMgdm9pZAorK2lidXNfZW5naW5lX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uX3JlZ2lz dGVyX2tleXMgKElCdXNFbmdpbmUgICAgICAqZW5naW5lLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAqcGFyYW1ldGVy cywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBH REJ1c01ldGhvZEludm9jYXRpb24KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmludm9jYXRpb24pCisreworKyAgICBJ QnVzRW5naW5lUHJpdmF0ZSAqcHJpdiA9IGVuZ2luZS0+cHJpdjsKKysgICAgR1ZhcmlhbnQgKnYx ID0gTlVMTDsKKysgICAgR1ZhcmlhbnQgKnYyID0gTlVMTDsKKysgICAgR1ZhcmlhbnQgKnYzID0g TlVMTDsKKysgICAgR1ZhcmlhbnQgKnZrZXlzID0gTlVMTDsKKysgICAgR1ZhcmlhbnRJdGVyICpp dGVyMSA9IE5VTEw7CisrICAgIEdWYXJpYW50SXRlciAqaXRlcjIgPSBOVUxMOworKyAgICBjb25z dCBnY2hhciAqbmFtZSA9IE5VTEw7CisrICAgIGd1aW50IGZhaWx1cmVfaWQgPSAwOworKworKyAg ICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0ZXJzLCAiKHYpIiwgJnYxKTsKKysgICAgaWYgKHYxKQor KyAgICAgICAgZ192YXJpYW50X2dldCAodjEsICIodikiLCAmdjIpOworKyAgICBlbHNlCisrICAg ICAgICBmYWlsdXJlX2lkID0gMTsKKysgICAgaWYgKHYyKQorKyAgICAgICAgZ192YXJpYW50X2dl dCAodjIsICJhe3N2fSIsICZpdGVyMSk7CisrICAgIGVsc2UKKysgICAgICAgIGZhaWx1cmVfaWQg PSAyOworKyAgICBpZiAoaXRlcjEpIHsKKysgICAgICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9s b29wIChpdGVyMSwgInsmc3Z9IiwgJm5hbWUsICZ2a2V5cykpIHsKKysgICAgICAgICAgICBpZiAo dmtleXMpCisrICAgICAgICAgICAgICAgIGdfdmFyaWFudF9nZXQgKHZrZXlzLCAiYXYiLCAmaXRl cjIpOworKyAgICAgICAgICAgIGlmIChuYW1lICYmIGl0ZXIyKSB7CisrICAgICAgICAgICAgICAg IElCdXNQcm9jZXNzS2V5RXZlbnREYXRhICprZXlzID0gTlVMTDsKKysgICAgICAgICAgICAgICAg Z2ludCBudW0gPSAwOworKyAgICAgICAgICAgICAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbG9v cCAoaXRlcjIsICJ2IiwgJnYzKSkgeworKyAgICAgICAgICAgICAgICAgICAgaWYgKHYzKSB7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQga2V5dmFsID0gMDsKKysgICAgICAgICAgICAg ICAgICAgICAgICBndWludCBrZXljb2RlID0gMDsKKysgICAgICAgICAgICAgICAgICAgICAgICBn dWludCBzdGF0ZSA9IDA7CisrICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X2dldCAo djMsICIoaWlpKSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtl eXZhbCwgJmtleWNvZGUsICZzdGF0ZSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFr ZXlzKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gZ19uZXcwIChJQnVzUHJv Y2Vzc0tleUV2ZW50RGF0YSwgMik7CisrICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzID0gZ19yZW5ldyAoSUJ1c1Byb2Nlc3NLZXlF dmVudERhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBr ZXlzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtICsg Mik7CisrICAgICAgICAgICAgICAgICAgICAgICAga2V5c1tudW1dLmtleXZhbCA9IGtleXZhbDsK KysgICAgICAgICAgICAgICAgICAgICAgICBrZXlzW251bV0ua2V5Y29kZSA9IGtleWNvZGU7Cisr ICAgICAgICAgICAgICAgICAgICAgICAga2V5c1tudW1dLnN0YXRlID0gc3RhdGU7CisrICAgICAg ICAgICAgICAgICAgICAgICAga2V5c1tudW0gKyAxXS5rZXl2YWwgPSAwOworKyAgICAgICAgICAg ICAgICAgICAgICAgIGtleXNbbnVtICsgMV0ua2V5Y29kZSA9IDA7CisrICAgICAgICAgICAgICAg ICAgICAgICAga2V5c1tudW0gKyAxXS5zdGF0ZSA9IDA7CisrICAgICAgICAgICAgICAgICAgICAg ICAgZ19jbGVhcl9wb2ludGVyICgmdjMsIGdfdmFyaWFudF91bnJlZik7CisrICAgICAgICAgICAg ICAgICAgICAgICAgbnVtKys7CisrICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworKyAgICAg ICAgICAgICAgICAgICAgICAgIGZhaWx1cmVfaWQgPSA1OworKyAgICAgICAgICAgICAgICAgICAg fQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIGlmIChudW0gPiAwKSB7Cisr ICAgICAgICAgICAgICAgICAgICBnX2hhc2hfdGFibGVfcmVwbGFjZSAocHJpdi0+ZXh0ZW5zaW9u X2tleWJpbmRpbmdzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdfc3RyZHVwIChuYW1lKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBrZXlzKTsKKysgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAg ICAgIGdfaGFzaF90YWJsZV9yZW1vdmUgKHByaXYtPmV4dGVuc2lvbl9rZXliaW5kaW5ncywgbmFt ZSk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgZ19jbGVhcl9wb2ludGVy ICgmaXRlcjIsIGdfdmFyaWFudF9pdGVyX2ZyZWUpOworKyAgICAgICAgICAgIH0gZWxzZSB7Cisr ICAgICAgICAgICAgICAgIGZhaWx1cmVfaWQgPSA0OworKyAgICAgICAgICAgIH0KKysgICAgICAg ICAgICBnX2NsZWFyX3BvaW50ZXIgKCZ2a2V5cywgZ192YXJpYW50X3VucmVmKTsKKysgICAgICAg ICAgICBuYW1lID0gTlVMTDsKKysgICAgICAgIH0KKysgICAgICAgIGdfdmFyaWFudF9pdGVyX2Zy ZWUgKGl0ZXIxKTsKKysgICAgfSBlbHNlIHsKKysgICAgICAgIGZhaWx1cmVfaWQgPSAzOworKyAg ICB9CisrICAgIGlmIChmYWlsdXJlX2lkID09IDApIHsKKysgICAgICAgIGdfZGJ1c19tZXRob2Rf aW52b2NhdGlvbl9yZXR1cm5fdmFsdWUgKGludm9jYXRpb24sIE5VTEwpOworKyAgICB9IGVsc2Ug eworKyAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl9lcnJvciAoCisrICAg ICAgICAgICAgICAgIGludm9jYXRpb24sCisrICAgICAgICAgICAgICAgIEdfREJVU19FUlJPUiwK KysgICAgICAgICAgICAgICAgR19EQlVTX0VSUk9SX0ZBSUxFRCwKKysgICAgICAgICAgICAgICAg IlBhbmVsRXh0ZW5zaW9uUmVnaXN0ZXJLZXlzIG1ldGhvZCBnaXZlcyBOVUxMOiAlZCIsCisrICAg ICAgICAgICAgICAgIGZhaWx1cmVfaWQpOworKyAgICB9CisrICAgIGlmICh2MikKKysgICAgICAg IGdfdmFyaWFudF91bnJlZiAodjIpOworKyAgICBpZiAodjEpCisrICAgICAgICBnX3ZhcmlhbnRf dW5yZWYgKHYxKTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBpYnVzX2VuZ2luZV9zZXJ2aWNlX21l dGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAgICAgKnNlcnZpY2UsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR0RCdXNDb25uZWN0aW9uICAgICAgICpjb25uZWN0aW9uLAor QEAgLTk2NCw2ICsxMDg0LDcgQEAgaWJ1c19lbmdpbmVfc2VydmljZV9tZXRob2RfY2FsbCAoSUJ1 c1NlcnZpY2UgICAgICAgICAgICpzZXJ2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEdEQnVzTWV0aG9kSW52b2NhdGlvbiAqaW52b2NhdGlvbikKKyB7CisgICAgIElCdXNF bmdpbmUgKmVuZ2luZSA9IElCVVNfRU5HSU5FIChzZXJ2aWNlKTsKKysgICAgSUJ1c0VuZ2luZVBy aXZhdGUgKnByaXYgPSBlbmdpbmUtPnByaXY7CisgCisgICAgIGlmIChnX3N0cmNtcDAgKGludGVy ZmFjZV9uYW1lLCBJQlVTX0lOVEVSRkFDRV9FTkdJTkUpICE9IDApIHsKKyAgICAgICAgIElCVVNf U0VSVklDRV9DTEFTUyAoaWJ1c19lbmdpbmVfcGFyZW50X2NsYXNzKS0+CitAQCAtMTAwMiw2ICsx MTIzLDMzIEBAIGlidXNfZW5naW5lX3NlcnZpY2VfbWV0aG9kX2NhbGwgKElCdXNTZXJ2aWNlICAg ICAgICAgICAqc2VydmljZSwKKyAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1 cm5fdmFsdWUgKGludm9jYXRpb24sIGdfdmFyaWFudF9uZXcgKCIoYikiLCByZXR2YWwpKTsKKyAg ICAgICAgIHJldHVybjsKKyAgICAgfQorKyAgICBpZiAoZ19zdHJjbXAwIChtZXRob2RfbmFtZSwg IlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQiKSA9PSAwKSB7CisrICAgICAgICBHVmFyaWFudCAqYXJn MCA9IE5VTEw7CisrICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50ID0gTlVMTDsKKysK KysgICAgICAgIGdfdmFyaWFudF9nZXQgKHBhcmFtZXRlcnMsICIodikiLCAmYXJnMCk7CisrICAg ICAgICBpZiAoYXJnMCkgeworKyAgICAgICAgICAgIGV2ZW50ID0gKElCdXNFeHRlbnNpb25FdmVu dCAqKWlidXNfc2VyaWFsaXphYmxlX2Rlc2VyaWFsaXplX29iamVjdCAoCisrICAgICAgICAgICAg ICAgICAgICBhcmcwKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICghZXZlbnQpIHsKKysgICAg ICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX2Vycm9yICgKKysgICAgICAg ICAgICAgICAgICAgIGludm9jYXRpb24sCisrICAgICAgICAgICAgICAgICAgICBHX0RCVVNfRVJS T1IsCisrICAgICAgICAgICAgICAgICAgICBHX0RCVVNfRVJST1JfRkFJTEVELAorKyAgICAgICAg ICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uUmVjZWl2ZWQgbWV0aG9kIGdpdmVzIE5VTEwiKTsK KysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAgICAgICBwcml2LT5lbmFibGVf ZXh0ZW5zaW9uID0gaWJ1c19leHRlbnNpb25fZXZlbnRfaXNfZW5hYmxlZCAoZXZlbnQpOworKyAg ICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3JldHVybl92YWx1ZSAoaW52b2NhdGlvbiwg TlVMTCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAgaWYgKGdfc3RyY21wMCAobWV0 aG9kX25hbWUsICJQYW5lbEV4dGVuc2lvblJlZ2lzdGVyS2V5cyIpID09IDApIHsKKysgICAgICAg IGlidXNfZW5naW5lX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uX3JlZ2lzdGVyX2tleXMgKGVuZ2lu ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBhcmFtZXRlcnMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnZvY2F0aW9uKTsKKysgICAgICAgIHJldHVybjsKKysg ICAgfQorIAorICAgICBzdGF0aWMgY29uc3Qgc3RydWN0IHsKKyAgICAgICAgIGdjaGFyICptZW1i ZXI7CitAQCAtMTQ0MSw3MyArMTU4OSwxMCBAQCBzdGF0aWMgdm9pZAorIGlidXNfZW5naW5lX2tl eWJpbmRpbmdfZnJlZSAoSUJ1c0VuZ2luZSAqZW5naW5lKQorIHsKKyAgICAgSUJ1c0VuZ2luZVBy aXZhdGUgKnByaXY7CistICAgIGludCBpOworIAorICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVT X0lTX0VOR0lORSAoZW5naW5lKSk7CisgCisgICAgIHByaXYgPSBlbmdpbmUtPnByaXY7CistICAg IGlmIChwcml2LT5lbW9qaV9rZXliaW5kaW5ncykgeworLSAgICAgICAgZm9yIChpID0gMDsgcHJp di0+ZW1vamlfa2V5YmluZGluZ3NbaV07IGkrKykKKy0gICAgICAgICAgICBnX3NsaWNlX2ZyZWUg KElCdXNFbmdpbmVLZXliaW5kaW5nLCBwcml2LT5lbW9qaV9rZXliaW5kaW5nc1tpXSk7CistICAg ICAgICBnX2NsZWFyX3BvaW50ZXIgKCZwcml2LT5lbW9qaV9rZXliaW5kaW5ncywgZ19mcmVlKTsK Ky0gICAgfQorLX0KKy0KKy1zdGF0aWMgSUJ1c0VuZ2luZUtleWJpbmRpbmcgKgorLWlidXNfZW5n aW5lX2tleWJpbmRpbmdfbmV3IChJQnVzRW5naW5lICAqZW5naW5lLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBnY2hhciAqYWNjZWxlcmF0b3IpCisteworLSAgICBndWludCBr ZXl2YWwgPSAwVTsKKy0gICAgSUJ1c01vZGlmaWVyVHlwZSBtb2RpZmllcnMgPSAwOworLSAgICBJ QnVzRW5naW5lS2V5YmluZGluZyAqYmluZGluZyA9IE5VTEw7CistCistICAgIGlidXNfYWNjZWxl cmF0b3JfcGFyc2UgKGFjY2VsZXJhdG9yLCAma2V5dmFsLCAmbW9kaWZpZXJzKTsKKy0gICAgaWYg KGtleXZhbCA9PSAwVSAmJiBtb2RpZmllcnMgPT0gMCkgeworLSAgICAgICAgZ193YXJuaW5nICgi RmFpbGVkIHRvIHBhcnNlIHNob3J0Y3V0IGtleSAnJXMnIiwgYWNjZWxlcmF0b3IpOworLSAgICAg ICAgcmV0dXJuIE5VTEw7CistICAgIH0KKy0gICAgaWYgKG1vZGlmaWVycyAmIElCVVNfU1VQRVJf TUFTSykgeworLSAgICAgICAgbW9kaWZpZXJzXj1JQlVTX1NVUEVSX01BU0s7CistICAgICAgICBt b2RpZmllcnN8PUlCVVNfTU9ENF9NQVNLOworLSAgICB9CistCistICAgIGJpbmRpbmcgPSBnX3Ns aWNlX25ldzAgKElCdXNFbmdpbmVLZXliaW5kaW5nKTsKKy0gICAgYmluZGluZy0+a2V5dmFsID0g a2V5dmFsOworLSAgICBiaW5kaW5nLT5tb2RpZmllcnMgPSBtb2RpZmllcnM7CistICAgIHJldHVy biBiaW5kaW5nOworLX0KKy0KKy1zdGF0aWMgdm9pZAorLXNldHRpbmdzX2Vtb2ppX2hvdGtleV9j aGFuZ2VkX2NiIChHU2V0dGluZ3MgICAqc2V0dGluZ3MsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGdjaGFyICprZXksCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdwb2ludGVyICAgICBkYXRhKQorLXsKKy0gICAgSUJ1c0VuZ2luZSAqZW5naW5l OworLSAgICBJQnVzRW5naW5lUHJpdmF0ZSAqcHJpdjsKKy0gICAgZ2NoYXIgKiphY2NlbGVyYXRv cnM7CistICAgIGludCBpLCBqLCBsZW5ndGg7CistICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNf SVNfRU5HSU5FIChkYXRhKSk7CistICAgIGVuZ2luZSA9IElCVVNfRU5HSU5FIChkYXRhKTsKKy0g ICAgcHJpdiA9IGVuZ2luZS0+cHJpdjsKKy0KKy0gICAgaWYgKGdfc3RyY21wMCAoa2V5LCAiaG90 a2V5IikgIT0gMCkKKy0gICAgICAgIHJldHVybjsKKy0gICAgYWNjZWxlcmF0b3JzID0gZ19zZXR0 aW5nc19nZXRfc3RydiAoc2V0dGluZ3MsIGtleSk7CistICAgIGxlbmd0aCA9IGdfc3Rydl9sZW5n dGggKGFjY2VsZXJhdG9ycyk7CistICAgIGlidXNfZW5naW5lX2tleWJpbmRpbmdfZnJlZSAoZW5n aW5lKTsKKy0gICAgaWYgKGxlbmd0aCA9PSAwKSB7CistICAgICAgICBnX3N0cmZyZWV2IChhY2Nl bGVyYXRvcnMpOworLSAgICAgICAgcmV0dXJuOworLSAgICB9CistICAgIHByaXYtPmVtb2ppX2tl eWJpbmRpbmdzID0gZ19uZXcwIChJQnVzRW5naW5lS2V5YmluZGluZyosIGxlbmd0aCArIDEpOwor LSAgICBmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CistICAgICAgICBJQnVz RW5naW5lS2V5YmluZGluZyAqYmluZGluZyA9CistICAgICAgICAgICAgICAgIGlidXNfZW5naW5l X2tleWJpbmRpbmdfbmV3IChlbmdpbmUsIGFjY2VsZXJhdG9yc1tpXSk7CistICAgICAgICBpZiAo IWJpbmRpbmcpCistICAgICAgICAgICAgY29udGludWU7CistICAgICAgICBwcml2LT5lbW9qaV9r ZXliaW5kaW5nc1tqKytdID0gYmluZGluZzsKKy0gICAgfQorLSAgICBnX3N0cmZyZWV2IChhY2Nl bGVyYXRvcnMpOworIH0KKyAKKyBJQnVzRW5naW5lICoKK2RpZmYgLS1naXQgYS9zcmMvaWJ1c3Bh bmVsc2VydmljZS5jIGIvc3JjL2lidXNwYW5lbHNlcnZpY2UuYworaW5kZXggZjM3YjkxYzMuLjcx MDI4ZWJmIDEwMDY0NAorLS0tIGEvc3JjL2lidXNwYW5lbHNlcnZpY2UuYworKysrIGIvc3JjL2li dXNwYW5lbHNlcnZpY2UuYworQEAgLTU3LDYgKzU3LDkgQEAgZW51bSB7CisgICAgIERFU1RST1lf Q09OVEVYVCwKKyAgICAgU0VUX0NPTlRFTlRfVFlQRSwKKyAgICAgUEFORUxfRVhURU5TSU9OX1JF Q0VJVkVELAorKyAgICBQUk9DRVNTX0tFWV9FVkVOVCwKKysgICAgQ09NTUlUX1RFWFRfUkVDRUlW RUQsCisrICAgIENBTkRJREFURV9DTElDS0VEX0xPT0tVUF9UQUJMRSwKKyAgICAgTEFTVF9TSUdO QUwsCisgfTsKKyAKK0BAIC0xNTMsNyArMTU2LDcgQEAgc3RhdGljIHZvaWQgICAgICBpYnVzX3Bh bmVsX3NlcnZpY2Vfc2V0X2NvbnRlbnRfdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgIGhpbnRzKTsKKyBzdGF0aWMgdm9pZCAg ICAgIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFuZWxTZXJ2aWNlICAgICAgICpwYW5l bCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAg ICAgICAgICpkYXRhKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVz RXh0ZW5zaW9uRXZlbnQgICAgICpldmVudCk7CisgCisgR19ERUZJTkVfVFlQRSAoSUJ1c1BhbmVs U2VydmljZSwgaWJ1c19wYW5lbF9zZXJ2aWNlLCBJQlVTX1RZUEVfU0VSVklDRSkKKyAKK0BAIC0x ODQsNiArMTg3LDExIEBAIHN0YXRpYyBjb25zdCBnY2hhciBpbnRyb3NwZWN0aW9uX3htbFtdID0K KyAgICAgIiAgICA8bWV0aG9kIG5hbWU9J0N1cnNvckRvd25Mb29rdXBUYWJsZScgLz4iCisgICAg ICIgICAgPG1ldGhvZCBuYW1lPSdQYWdlVXBMb29rdXBUYWJsZScgLz4iCisgICAgICIgICAgPG1l dGhvZCBuYW1lPSdQYWdlRG93bkxvb2t1cFRhYmxlJyAvPiIKKysgICAgIiAgICA8bWV0aG9kIG5h bWU9J0NhbmRpZGF0ZUNsaWNrZWRMb29rdXBUYWJsZSc+IgorKyAgICAiICAgICAgPGFyZyBkaXJl Y3Rpb249J2luJyB0eXBlPSd1JyBuYW1lPSdpbmRleCcgLz4iCisrICAgICIgICAgICA8YXJnIGRp cmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J2J1dHRvbicgLz4iCisrICAgICIgICAgICA8YXJn IGRpcmVjdGlvbj0naW4nIHR5cGU9J3UnIG5hbWU9J3N0YXRlJyAvPiIKKysgICAgIiAgICA8L21l dGhvZD4iCisgICAgICIgICAgPG1ldGhvZCBuYW1lPSdSZWdpc3RlclByb3BlcnRpZXMnPiIKKyAg ICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9J3YnIG5hbWU9J3Byb3BzJyAvPiIK KyAgICAgIiAgICA8L21ldGhvZD4iCitAQCAtMjIxLDcgKzIyOSwxNiBAQCBzdGF0aWMgY29uc3Qg Z2NoYXIgaW50cm9zcGVjdGlvbl94bWxbXSA9CisgICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj0n aW4nICB0eXBlPSd1JyBuYW1lPSdoaW50cycgLz4iCisgICAgICIgICAgPC9tZXRob2Q+IgorICAg ICAiICAgIDxtZXRob2QgbmFtZT0nUGFuZWxFeHRlbnNpb25SZWNlaXZlZCc+IgorLSAgICAiICAg ICAgPGFyZyBkaXJlY3Rpb249J2luJyB0eXBlPSd2JyBuYW1lPSdkYXRhJyAvPiIKKysgICAgIiAg ICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgdHlwZT0ndicgbmFtZT0nZXZlbnQnIC8+IgorKyAgICAi ICAgIDwvbWV0aG9kPiIKKysgICAgIiAgICA8bWV0aG9kIG5hbWU9J1Byb2Nlc3NLZXlFdmVudCc+ IgorKyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyAgdHlwZT0ndScgbmFtZT0na2V5dmFs JyAvPiIKKysgICAgIiAgICAgIDxhcmcgZGlyZWN0aW9uPSdpbicgIHR5cGU9J3UnIG5hbWU9J2tl eWNvZGUnIC8+IgorKyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J2luJyAgdHlwZT0ndScgbmFt ZT0nc3RhdGUnIC8+IgorKyAgICAiICAgICAgPGFyZyBkaXJlY3Rpb249J291dCcgdHlwZT0nYicg Lz4iCisrICAgICIgICAgPC9tZXRob2Q+IgorKyAgICAiICAgIDxtZXRob2QgbmFtZT0nQ29tbWl0 VGV4dFJlY2VpdmVkJz4iCisrICAgICIgICAgICA8YXJnIGRpcmVjdGlvbj0naW4nIHR5cGU9J3Yn IG5hbWU9J3RleHQnIC8+IgorICAgICAiICAgIDwvbWV0aG9kPiIKKyAgICAgLyogU2lnbmFscyAq LworICAgICAiICAgIDxzaWduYWwgbmFtZT0nQ3Vyc29yVXAnIC8+IgorQEAgLTI0Nyw3ICsyNjQs MjMgQEAgc3RhdGljIGNvbnN0IGdjaGFyIGludHJvc3BlY3Rpb25feG1sW10gPQorICAgICAiICAg ICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKKyAgICAgIiAgICA8L3NpZ25hbD4iCisg ICAgICIgICAgPHNpZ25hbCBuYW1lPSdQYW5lbEV4dGVuc2lvbic+IgorKyAgICAiICAgICAgPGFy ZyB0eXBlPSd2JyBuYW1lPSdldmVudCcgLz4iCisrICAgICIgICAgPC9zaWduYWw+IgorKyAgICAi ICAgIDxtZXRob2QgbmFtZT0nUGFuZWxFeHRlbnNpb25SZWdpc3RlcktleXMnPiIKKyAgICAgIiAg ICAgIDxhcmcgdHlwZT0ndicgbmFtZT0nZGF0YScgLz4iCisrICAgICIgICAgPC9tZXRob2Q+Igor KyAgICAiICAgIDxzaWduYWwgbmFtZT0nVXBkYXRlUHJlZWRpdFRleHRSZWNlaXZlZCc+IgorKyAg ICAiICAgICAgPGFyZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKKysgICAgIiAgICAgIDxhcmcg dHlwZT0ndScgbmFtZT0nY3Vyc29yX3BvcycgLz4iCisrICAgICIgICAgICA8YXJnIHR5cGU9J2In IG5hbWU9J3Zpc2libGUnIC8+IgorKyAgICAiICAgIDwvc2lnbmFsPiIKKysgICAgIiAgICA8c2ln bmFsIG5hbWU9J1VwZGF0ZUF1eGlsaWFyeVRleHRSZWNlaXZlZCc+IgorKyAgICAiICAgICAgPGFy ZyB0eXBlPSd2JyBuYW1lPSd0ZXh0JyAvPiIKKysgICAgIiAgICAgIDxhcmcgdHlwZT0nYicgbmFt ZT0ndmlzaWJsZScgLz4iCisrICAgICIgICAgPC9zaWduYWw+IgorKyAgICAiICAgIDxzaWduYWwg bmFtZT0nVXBkYXRlTG9va3VwVGFibGVSZWNlaXZlZCc+IgorKyAgICAiICAgICAgPGFyZyB0eXBl PSd2JyBuYW1lPSd0YWJsZScgLz4iCisrICAgICIgICAgICA8YXJnIHR5cGU9J2InIG5hbWU9J3Zp c2libGUnIC8+IgorICAgICAiICAgIDwvc2lnbmFsPiIKKyAgICAgIiAgPC9pbnRlcmZhY2U+Igor ICAgICAiPC9ub2RlPiI7CitAQCAtOTI3LDEwICs5NjAsODEgQEAgaWJ1c19wYW5lbF9zZXJ2aWNl X2NsYXNzX2luaXQgKElCdXNQYW5lbFNlcnZpY2VDbGFzcyAqY2xhc3MpCisgICAgICAgICAgICAg R19TSUdOQUxfUlVOX0xBU1QsCisgICAgICAgICAgICAgR19TVFJVQ1RfT0ZGU0VUIChJQnVzUGFu ZWxTZXJ2aWNlQ2xhc3MsIHBhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCksCisgICAgICAgICAgICAg TlVMTCwgTlVMTCwKKy0gICAgICAgICAgICBfaWJ1c19tYXJzaGFsX1ZPSURfX1ZBUklBTlQsCisr ICAgICAgICAgICAgX2lidXNfbWFyc2hhbF9WT0lEX19PQkpFQ1QsCisrICAgICAgICAgICAgR19U WVBFX05PTkUsCisrICAgICAgICAgICAgMSwKKysgICAgICAgICAgICBJQlVTX1RZUEVfRVhURU5T SU9OX0VWRU5UKTsKKysKKysgICAgLyoqCisrICAgICAqIElCdXNQYW5lbFNlcnZpY2U6OnByb2Nl c3Mta2V5LWV2ZW50OgorKyAgICAgKiBAcGFuZWw6IEFuICNJQnVzUGFuZWxTZXJ2aWNlCisrICAg ICAqIEBrZXl2YWw6IEtleSBzeW1ib2wgb2YgdGhlIGtleSBwcmVzcy4KKysgICAgICogQGtleWNv ZGU6IEtleUNvZGUgb2YgdGhlIGtleSBwcmVzcy4KKysgICAgICogQHN0YXRlOiBLZXkgbW9kaWZp ZXIgZmxhZ3MuCisrICAgICAqCisrICAgICAqIEVtaXR0ZWQgd2hlbiBhIGtleSBldmVudCBpcyBy ZWNlaXZlZC4KKysgICAgICogSW1wbGVtZW50IHRoZSBtZW1iZXIgZnVuY3Rpb24gSUJ1c1BhbmVs U2VydmljZUNsYXNzOjpwcm9jZXNzX2tleV9ldmVudAorKyAgICAgKiBpbiBleHRlbmRlZCBjbGFz cyB0byByZWNlaXZlIHRoaXMgc2lnbmFsLgorKyAgICAgKiBCb3RoIHRoZSBrZXkgc3ltYm9sIGFu ZCBrZXljb2RlIGFyZSBwYXNzZWQgdG8gdGhlIG1lbWJlciBmdW5jdGlvbi4KKysgICAgICogU2Vl IGlidXNfaW5wdXRfY29udGV4dF9wcm9jZXNzX2tleV9ldmVudCgpIGZvciBmdXJ0aGVyIGV4cGxh bmF0aW9uIG9mCisrICAgICAqIGtleSBzeW1ib2wsIGtleWNvZGUgYW5kIHdoaWNoIHRvIHVzZS4K KysgICAgICoKKysgICAgICogUmV0dXJuczogJVRSVUUgZm9yIHN1Y2Nlc3NmdWxseSBwcm9jZXNz IHRoZSBrZXk7ICVGQUxTRSBvdGhlcndpc2UuCisrICAgICAqIFNlZSBhbHNvOiAgaWJ1c19pbnB1 dF9jb250ZXh0X3Byb2Nlc3Nfa2V5X2V2ZW50KCkuCisrICAgICAqCisrICAgICAqIDxub3RlPjxw YXJhPkFyZ3VtZW50IEB1c2VyX2RhdGEgaXMgaWdub3JlZCBpbiB0aGlzIGZ1bmN0aW9uLjwvcGFy YT4KKysgICAgICogPC9ub3RlPgorKyAgICAgKi8KKysgICAgcGFuZWxfc2lnbmFsc1tQUk9DRVNT X0tFWV9FVkVOVF0gPQorKyAgICAgICAgZ19zaWduYWxfbmV3IChJXygicHJvY2Vzcy1rZXktZXZl bnQiKSwKKysgICAgICAgICAgICBHX1RZUEVfRlJPTV9DTEFTUyAoZ29iamVjdF9jbGFzcyksCisr ICAgICAgICAgICAgR19TSUdOQUxfUlVOX0xBU1QsCisrICAgICAgICAgICAgR19TVFJVQ1RfT0ZG U0VUIChJQnVzUGFuZWxTZXJ2aWNlQ2xhc3MsIHByb2Nlc3Nfa2V5X2V2ZW50KSwKKysgICAgICAg ICAgICBnX3NpZ25hbF9hY2N1bXVsYXRvcl90cnVlX2hhbmRsZWQsIE5VTEwsCisrICAgICAgICAg ICAgX2lidXNfbWFyc2hhbF9CT09MX19VSU5UX1VJTlRfVUlOVCwKKysgICAgICAgICAgICBHX1RZ UEVfQk9PTEVBTiwKKysgICAgICAgICAgICAzLAorKyAgICAgICAgICAgIEdfVFlQRV9VSU5ULAor KyAgICAgICAgICAgIEdfVFlQRV9VSU5ULAorKyAgICAgICAgICAgIEdfVFlQRV9VSU5UKTsKKysK KysgICAgLyoqCisrICAgICAqIElCdXNQYW5lbFNlcnZpY2U6OmNvbW1pdC10ZXh0LXJlY2VpdmVk OgorKyAgICAgKiBAcGFuZWw6IEFuICNJQnVzUGFuZWxTZXJ2aWNlCisrICAgICAqIEB0ZXh0OiBB ICNJQnVzVGV4dAorKyAgICAgKgorKyAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIGNsaWVudCBhcHBs aWNhdGlvbiBnZXQgdGhlIDo6Y29tbWl0LXRleHQtcmVjZWl2ZWQuCisrICAgICAqIEltcGxlbWVu dCB0aGUgbWVtYmVyIGZ1bmN0aW9uCisrICAgICAqIElCdXNQYW5lbFNlcnZpY2VDbGFzczo6Y29t bWl0X3RleHRfcmVjZWl2ZWQgaW4gZXh0ZW5kZWQgY2xhc3MgdG8KKysgICAgICogcmVjZWl2ZSB0 aGlzIHNpZ25hbC4KKysgICAgICoKKysgICAgICogPG5vdGU+PHBhcmE+QXJndW1lbnQgQHVzZXJf ZGF0YSBpcyBpZ25vcmVkIGluIHRoaXMgZnVuY3Rpb24uPC9wYXJhPgorKyAgICAgKiA8L25vdGU+ CisrICAgICAqLworKyAgICBwYW5lbF9zaWduYWxzW0NPTU1JVF9URVhUX1JFQ0VJVkVEXSA9Cisr ICAgICAgICBnX3NpZ25hbF9uZXcgKElfKCJjb21taXQtdGV4dC1yZWNlaXZlZCIpLAorKyAgICAg ICAgICAgIEdfVFlQRV9GUk9NX0NMQVNTIChnb2JqZWN0X2NsYXNzKSwKKysgICAgICAgICAgICBH X1NJR05BTF9SVU5fTEFTVCwKKysgICAgICAgICAgICBHX1NUUlVDVF9PRkZTRVQgKElCdXNQYW5l bFNlcnZpY2VDbGFzcywgY29tbWl0X3RleHRfcmVjZWl2ZWQpLAorKyAgICAgICAgICAgIE5VTEws IE5VTEwsCisrICAgICAgICAgICAgX2lidXNfbWFyc2hhbF9WT0lEX19PQkpFQ1QsCisgICAgICAg ICAgICAgR19UWVBFX05PTkUsCisgICAgICAgICAgICAgMSwKKy0gICAgICAgICAgICBHX1RZUEVf VkFSSUFOVCk7CisrICAgICAgICAgICAgSUJVU19UWVBFX1RFWFQpOworKworKyAgICBwYW5lbF9z aWduYWxzW0NBTkRJREFURV9DTElDS0VEX0xPT0tVUF9UQUJMRV0gPQorKyAgICAgICAgZ19zaWdu YWxfbmV3IChJXygiY2FuZGlkYXRlLWNsaWNrZWQtbG9va3VwLXRhYmxlIiksCisrICAgICAgICAg ICAgR19UWVBFX0ZST01fQ0xBU1MgKGdvYmplY3RfY2xhc3MpLAorKyAgICAgICAgICAgIEdfU0lH TkFMX1JVTl9MQVNULAorKyAgICAgICAgICAgIEdfU1RSVUNUX09GRlNFVCAoSUJ1c1BhbmVsU2Vy dmljZUNsYXNzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlX2NsaWNr ZWRfbG9va3VwX3RhYmxlKSwKKysgICAgICAgICAgICBOVUxMLCBOVUxMLAorKyAgICAgICAgICAg IF9pYnVzX21hcnNoYWxfVk9JRF9fVUlOVF9VSU5UX1VJTlQsCisrICAgICAgICAgICAgR19UWVBF X05PTkUsCisrICAgICAgICAgICAgMywKKysgICAgICAgICAgICBHX1RZUEVfVUlOVCwKKysgICAg ICAgICAgICBHX1RZUEVfVUlOVCwKKysgICAgICAgICAgICBHX1RZUEVfVUlOVCk7CisgfQorIAor IHN0YXRpYyB2b2lkCitAQCAtMTEyOSw5ICsxMjMzLDE0IEBAIGlidXNfcGFuZWxfc2VydmljZV9z ZXJ2aWNlX21ldGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAgICAgKnNlcnZpY2UsCisgICAg IH0KKyAKKyAgICAgaWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJQYW5lbEV4dGVuc2lvblJl Y2VpdmVkIikgPT0gMCkgeworLSAgICAgICAgR1ZhcmlhbnQgKnZhcmlhbnQgPSBOVUxMOworLSAg ICAgICAgZ192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZ2YXJpYW50KTsKKy0gICAg ICAgIGlmICh2YXJpYW50ID09IE5VTEwpIHsKKysgICAgICAgIEdWYXJpYW50ICphcmcwID0gTlVM TDsKKysgICAgICAgIElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQgPSBOVUxMOworKyAgICAgICAg Z192YXJpYW50X2dldCAocGFyYW1ldGVycywgIih2KSIsICZhcmcwKTsKKysgICAgICAgIGlmIChh cmcwKSB7CisrICAgICAgICAgICAgZXZlbnQgPSBJQlVTX0VYVEVOU0lPTl9FVkVOVCAoaWJ1c19z ZXJpYWxpemFibGVfZGVzZXJpYWxpemUgKGFyZzApKTsKKysgICAgICAgICAgICBnX3ZhcmlhbnRf dW5yZWYgKGFyZzApOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFldmVudCkgeworICAgICAg ICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9yZXR1cm5fZXJyb3IgKAorICAgICAgICAg ICAgICAgICAgICAgaW52b2NhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgIEdfREJVU19FUlJP UiwKK0BAIC0xMTQwLDExICsxMjQ5LDYzIEBAIGlidXNfcGFuZWxfc2VydmljZV9zZXJ2aWNlX21l dGhvZF9jYWxsIChJQnVzU2VydmljZSAgICAgICAgICAgKnNlcnZpY2UsCisgICAgICAgICAgICAg cmV0dXJuOworICAgICAgICAgfQorICAgICAgICAgZ19zaWduYWxfZW1pdCAocGFuZWwsIHBhbmVs X3NpZ25hbHNbUEFORUxfRVhURU5TSU9OX1JFQ0VJVkVEXSwgMCwKKy0gICAgICAgICAgICAgICAg ICAgICAgIHZhcmlhbnQpOworLSAgICAgICAgZ192YXJpYW50X3VucmVmICh2YXJpYW50KTsKKysg ICAgICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKKysgICAgICAgIF9nX29iamVjdF91bnJlZl9p Zl9mbG9hdGluZyAoZXZlbnQpOworICAgICAgICAgZ19kYnVzX21ldGhvZF9pbnZvY2F0aW9uX3Jl dHVybl92YWx1ZSAoaW52b2NhdGlvbiwgTlVMTCk7CisgICAgICAgICByZXR1cm47CisgICAgIH0K KysgICAgaWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJQcm9jZXNzS2V5RXZlbnQiKSA9PSAw KSB7CisrICAgICAgICBndWludCBrZXl2YWwsIGtleWNvZGUsIHN0YXRlOworKyAgICAgICAgZ2Jv b2xlYW4gcmV0dmFsID0gRkFMU0U7CisrCisrICAgICAgICBnX3ZhcmlhbnRfZ2V0IChwYXJhbWV0 ZXJzLCAiKHV1dSkiLCAma2V5dmFsLCAma2V5Y29kZSwgJnN0YXRlKTsKKysgICAgICAgIGdfc2ln bmFsX2VtaXQgKHBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxfc2lnbmFsc1tQ Uk9DRVNTX0tFWV9FVkVOVF0sCisrICAgICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAg ICAgICAgICAgICAgICAga2V5dmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSwK KysgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLAorKyAgICAgICAgICAgICAgICAgICAgICAg JnJldHZhbCk7CisrICAgICAgICBnX2RidXNfbWV0aG9kX2ludm9jYXRpb25fcmV0dXJuX3ZhbHVl IChpbnZvY2F0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ192YXJpYW50X25ldyAoIihiKSIsIHJldHZhbCkpOworKyAgICAgICAgcmV0dXJuOwor KyAgICB9CisrICAgIGlmIChnX3N0cmNtcDAgKG1ldGhvZF9uYW1lLCAiQ29tbWl0VGV4dFJlY2Vp dmVkIikgPT0gMCkgeworKyAgICAgICAgR1ZhcmlhbnQgKmFyZzAgPSBOVUxMOworKyAgICAgICAg SUJ1c1RleHQgKnRleHQgPSBOVUxMOworKworKyAgICAgICAgZ192YXJpYW50X2dldCAocGFyYW1l dGVycywgIih2KSIsICZhcmcwKTsKKysgICAgICAgIGlmIChhcmcwKSB7CisrICAgICAgICAgICAg dGV4dCA9IChJQnVzVGV4dCAqKSBpYnVzX3NlcmlhbGl6YWJsZV9kZXNlcmlhbGl6ZSAoYXJnMCk7 CisrICAgICAgICAgICAgZ192YXJpYW50X3VucmVmIChhcmcwKTsKKysgICAgICAgIH0KKysgICAg ICAgIGlmICghdGV4dCkgeworKyAgICAgICAgICAgIGdfZGJ1c19tZXRob2RfaW52b2NhdGlvbl9y ZXR1cm5fZXJyb3IgKAorKyAgICAgICAgICAgICAgICAgICAgaW52b2NhdGlvbiwKKysgICAgICAg ICAgICAgICAgICAgIEdfREJVU19FUlJPUiwKKysgICAgICAgICAgICAgICAgICAgIEdfREJVU19F UlJPUl9GQUlMRUQsCisrICAgICAgICAgICAgICAgICAgICAiQ29tbWl0VGV4dFJlY2VpdmVkIG1l dGhvZCBnaXZlcyBOVUxMIik7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAg ICAgICAgZ19zaWduYWxfZW1pdCAocGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICBwYW5l bF9zaWduYWxzW0NPTU1JVF9URVhUX1JFQ0VJVkVEXSwKKysgICAgICAgICAgICAgICAgICAgICAg IDAsCisrICAgICAgICAgICAgICAgICAgICAgICB0ZXh0KTsKKysgICAgICAgIF9nX29iamVjdF91 bnJlZl9pZl9mbG9hdGluZyAodGV4dCk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysgICAg aWYgKGdfc3RyY21wMCAobWV0aG9kX25hbWUsICJDYW5kaWRhdGVDbGlja2VkTG9va3VwVGFibGUi KSA9PSAwKSB7CisrICAgICAgICBndWludCBpbmRleCA9IDA7CisrICAgICAgICBndWludCBidXR0 b24gPSAwOworKyAgICAgICAgZ3VpbnQgc3RhdGUgPSAwOworKyAgICAgICAgZ192YXJpYW50X2dl dCAocGFyYW1ldGVycywgIih1dXUpIiwgJmluZGV4LCAmYnV0dG9uLCAmc3RhdGUpOworKyAgICAg ICAgZ19zaWduYWxfZW1pdCAocGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICBwYW5lbF9z aWduYWxzW0NBTkRJREFURV9DTElDS0VEX0xPT0tVUF9UQUJMRV0sCisrICAgICAgICAgICAgICAg ICAgICAgICAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIGJ1dHRvbiwgc3RhdGUp OworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisgCisgICAgIGNvbnN0IHN0YXRpYyBzdHJ1 Y3QgeworICAgICAgICAgY29uc3QgZ2NoYXIgKm5hbWU7CitAQCAtMTMxOCw4ICsxNDc5LDggQEAg aWJ1c19wYW5lbF9zZXJ2aWNlX3NldF9jb250ZW50X3R5cGUgKElCdXNQYW5lbFNlcnZpY2UgKnBh bmVsLAorIH0KKyAKKyBzdGF0aWMgdm9pZAorLWlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRl bnNpb25fcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAorLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgKmRhdGEpCisr aWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZCAoSUJ1c1BhbmVsU2Vy dmljZSAgICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KQorIHsKKyAgICAgaWJ1c19wYW5lbF9zZXJ2 aWNlX25vdF9pbXBsZW1lbnRlZChwYW5lbCk7CisgfQorQEAgLTEzOTYsMTAgKzE1NTcsMTEgQEAg dm9pZAorIGlidXNfcGFuZWxfc2VydmljZV9jb21taXRfdGV4dCAoSUJ1c1BhbmVsU2VydmljZSAq cGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzVGV4dCAgICAgICAg ICp0ZXh0KQorIHsKKysgICAgR1ZhcmlhbnQgKnZhcmlhbnQ7CisgICAgIGdfcmV0dXJuX2lmX2Zh aWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsKKyAgICAgZ19yZXR1cm5faWZfZmFp bCAoSUJVU19JU19URVhUICh0ZXh0KSk7CisgCistICAgIEdWYXJpYW50ICp2YXJpYW50ID0gaWJ1 c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRleHQpOworKyAg ICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJs ZSAqKXRleHQpOworICAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAq KSBwYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BBTkVMLAorQEAgLTE0MTMsMTgg KzE1NzUsMTQ0IEBAIGlidXNfcGFuZWxfc2VydmljZV9jb21taXRfdGV4dCAoSUJ1c1BhbmVsU2Vy dmljZSAqcGFuZWwsCisgfQorIAorIHZvaWQKKy1pYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxfZXh0 ZW5zaW9uIChJQnVzUGFuZWxTZXJ2aWNlICpwYW5lbCwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBHVmFyaWFudCAgICAgICAgICp2YXJpYW50KQorK2lidXNfcGFuZWxfc2Vy dmljZV9wYW5lbF9leHRlbnNpb24gKElCdXNQYW5lbFNlcnZpY2UgICAqcGFuZWwsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCkK KyB7CisrICAgIEdWYXJpYW50ICp2YXJpYW50OworICAgICBnX3JldHVybl9pZl9mYWlsIChJQlVT X0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7CistICAgIGdfcmV0dXJuX2lmX2ZhaWwgKHZhcmlh bnQpOworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZl bnQpKTsKKyAKKysgICAgdmFyaWFudCA9IGlidXNfc2VyaWFsaXphYmxlX3NlcmlhbGl6ZSAoKElC dXNTZXJpYWxpemFibGUgKilldmVudCk7CisgICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAo KElCdXNTZXJ2aWNlICopIHBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5V TEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUws CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhbmVsRXh0ZW5zaW9uIiwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHYpIiwgdmFyaWFudCks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisrCisrICAgIGlmIChnX29i amVjdF9pc19mbG9hdGluZyAoZXZlbnQpKSB7CisrICAgICAgICBnX29iamVjdF91bnJlZiAoZXZl bnQpOworKyAgICB9CisrfQorKworK3ZvaWQKKytpYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxfZXh0 ZW5zaW9uX3JlZ2lzdGVyX2tleXMgKElCdXNQYW5lbFNlcnZpY2UgICAqcGFuZWwsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhcgor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKmZpcnN0X3Byb3BlcnR5X25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAuLi4pCisreworKyAgICBHVmFyaWFudEJ1aWxkZXIgYnVpbGRl cjsKKysgICAgR1ZhcmlhbnRCdWlsZGVyIGNoaWxkOworKyAgICBjb25zdCBnY2hhciAqbmFtZTsK KysgICAgdmFfbGlzdCB2YXJfYXJnczsKKysgICAgSUJ1c1Byb2Nlc3NLZXlFdmVudERhdGEgKmtl eXM7CisrCisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGZpcnN0X3Byb3BlcnR5X25hbWUpOworKwor KyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0ICgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEUgKCJh e3N2fSIpKTsKKysgICAgbmFtZSA9IGZpcnN0X3Byb3BlcnR5X25hbWU7CisrCisrICAgIHZhX3N0 YXJ0ICh2YXJfYXJncywgZmlyc3RfcHJvcGVydHlfbmFtZSk7CisrICAgIGRvIHsKKysgICAgICAg IGtleXMgPSB2YV9hcmcgKHZhcl9hcmdzLCBJQnVzUHJvY2Vzc0tleUV2ZW50RGF0YSAqKTsKKysg ICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGtleXMgIT0gTlVMTCk7CisrICAgICAgICBnX3Zhcmlh bnRfYnVpbGRlcl9pbml0ICgmY2hpbGQsIEdfVkFSSUFOVF9UWVBFICgiYXYiKSk7CisrICAgICAg ICBmb3IgKDsga2V5czsga2V5cysrKSB7CisrICAgICAgICAgICAgaWYgKGtleXMtPmtleXZhbCA9 PSAwICYmIGtleXMtPmtleWNvZGUgPT0gMCAmJiBrZXlzLT5zdGF0ZSA9PSAwKQorKyAgICAgICAg ICAgICAgICBicmVhazsKKysgICAgICAgICAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKCZjaGls ZCwgInYiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25l dyAoIihpaWkpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGtleXMtPmtleXZhbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGtleXMtPmtleWNvZGUsIAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cy0+c3RhdGUpKTsKKysgICAgICAgIH0KKysg ICAgICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoJmJ1aWxkZXIsICJ7c3Z9IiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ19zdHJkdXAgKG5hbWUpLCBnX3ZhcmlhbnRfYnVpbGRl cl9lbmQgKCZjaGlsZCkpOworKyAgICB9IHdoaWxlICgobmFtZSA9IHZhX2FyZyAodmFyX2FyZ3Ms IGNvbnN0IGdjaGFyICopKSk7CisrICAgIHZhX2VuZCAodmFyX2FyZ3MpOworKworKyAgICBpYnVz X3NlcnZpY2VfZW1pdF9zaWduYWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElCVVNfSU5URVJGQUNFX1BBTkVMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQ YW5lbEV4dGVuc2lvblJlZ2lzdGVyS2V5cyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ192YXJpYW50X25ldyAoIih2KSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ192YXJpYW50X2J1aWxkZXJfZW5kICgmYnVpbGRlcikpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworK30KKysKKyt2b2lkCisraWJ1c19wYW5l bF9zZXJ2aWNlX3VwZGF0ZV9wcmVlZGl0X3RleHRfcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2Ug KnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBJQnVzVGV4dCAgICAgICAgICp0ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBjdXJzb3JfcG9zLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAg ICAgICB2aXNpYmxlKQorK3sKKysgICAgR1ZhcmlhbnQgKnZhcmlhbnQ7CisrCisrICAgIGdfcmV0 dXJuX2lmX2ZhaWwgKElCVVNfSVNfUEFORUxfU0VSVklDRSAocGFuZWwpKTsKKysgICAgZ19yZXR1 cm5faWZfZmFpbCAoSUJVU19JU19URVhUICh0ZXh0KSk7CisrCisrICAgIHZhcmlhbnQgPSBpYnVz X3NlcmlhbGl6YWJsZV9zZXJpYWxpemUgKChJQnVzU2VyaWFsaXphYmxlICopdGV4dCk7CisrICAg IGdfcmV0dXJuX2lmX2ZhaWwgKHZhcmlhbnQpOworKyAgICBpYnVzX3NlcnZpY2VfZW1pdF9zaWdu YWwgKChJQnVzU2VydmljZSAqKSBwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBOVUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfSU5URVJGQUNFX1BB TkVMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcGRhdGVQcmVlZGl0VGV4dFJl Y2VpdmVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgi KHZ1YikiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZh cmlhbnQsIGN1cnNvcl9wb3MsIHZpc2libGUpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIE5VTEwpOworKworKyAgICBpZiAoZ19vYmplY3RfaXNfZmxvYXRpbmcgKHRleHQpKSB7Cisr ICAgICAgICBnX29iamVjdF91bnJlZiAodGV4dCk7CisrICAgIH0KKyt9CisrCisrdm9pZAorK2li dXNfcGFuZWxfc2VydmljZV91cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWQgKElCdXNQYW5l bFNlcnZpY2UgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIElCdXNUZXh0ICAgICAgICAgKnRleHQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgdmlzaWJs ZSkKKyt7CisrICAgIEdWYXJpYW50ICp2YXJpYW50OworKyAgICBnX3JldHVybl9pZl9mYWlsIChJ QlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVsKSk7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElC VVNfSVNfVEVYVCAodGV4dCkpOworKworKyAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVf c2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKXRleHQpOworKyAgICBnX3JldHVybl9pZl9m YWlsICh2YXJpYW50KTsKKysgICAgaWJ1c19zZXJ2aWNlX2VtaXRfc2lnbmFsICgoSUJ1c1NlcnZp Y2UgKikgcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBJQlVTX0lOVEVSRkFDRV9QQU5FTCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiVXBkYXRlQXV4aWxpYXJ5VGV4dFJlY2VpdmVkIiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3ICgiKHZiKSIsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudCwgdmlzaWJs ZSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CisrCisrICAgIGlmIChn X29iamVjdF9pc19mbG9hdGluZyAodGV4dCkpIHsKKysgICAgICAgIGdfb2JqZWN0X3VucmVmICh0 ZXh0KTsKKysgICAgfQorK30KKysKKyt2b2lkCisraWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9s b29rdXBfdGFibGVfcmVjZWl2ZWQgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzTG9va3VwVGFibGUg ICp0YWJsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ2Jvb2xlYW4gICAgICAgICAgdmlzaWJsZSkKKyt7CisrICAgIEdWYXJpYW50ICp2YXJpYW50 OworKworKyAgICBnX3JldHVybl9pZl9mYWlsIChJQlVTX0lTX1BBTkVMX1NFUlZJQ0UgKHBhbmVs KSk7CisrICAgIGdfcmV0dXJuX2lmX2ZhaWwgKElCVVNfSVNfTE9PS1VQX1RBQkxFICh0YWJsZSkp OworKworKyAgICB2YXJpYW50ID0gaWJ1c19zZXJpYWxpemFibGVfc2VyaWFsaXplICgoSUJ1c1Nl cmlhbGl6YWJsZSAqKXRhYmxlKTsKKysgICAgZ19yZXR1cm5faWZfZmFpbCAodmFyaWFudCk7Cisr ICAgIGlidXNfc2VydmljZV9lbWl0X3NpZ25hbCAoKElCdXNTZXJ2aWNlICopIHBhbmVsLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgSUJVU19JTlRFUkZBQ0VfUEFORUwsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIlVwZGF0ZUxvb2t1cFRhYmxlUmVjZWl2ZWQiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGdfdmFyaWFudF9uZXcgKCIodmIpIiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50LCB2aXNpYmxlKSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOVUxMKTsKKysKKysgICAgaWYgKGdfb2JqZWN0X2lzX2Zsb2F0aW5n ICh0YWJsZSkpIHsKKysgICAgICAgIGdfb2JqZWN0X3VucmVmICh0YWJsZSk7CisrICAgIH0KKyB9 CisgCisgI2RlZmluZSBERUZJTkVfRlVOQyhuYW1lLCBOYW1lKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorZGlmZiAtLWdpdCBhL3NyYy9pYnVzcGFuZWxzZXJ2aWNlLmggYi9zcmMvaWJ1 c3BhbmVsc2VydmljZS5oCitpbmRleCA2MGVmODQyYi4uZDkxZjIzMDkgMTAwNjQ0CistLS0gYS9z cmMvaWJ1c3BhbmVsc2VydmljZS5oCisrKysgYi9zcmMvaWJ1c3BhbmVsc2VydmljZS5oCitAQCAt MzgsNiArMzgsNyBAQAorICNpbmNsdWRlICJpYnVzbG9va3VwdGFibGUuaCIKKyAjaW5jbHVkZSAi aWJ1c3NlcnZpY2UuaCIKKyAjaW5jbHVkZSAiaWJ1c3Byb3BsaXN0LmgiCisrI2luY2x1ZGUgImli dXN4ZXZlbnQuaCIKKyAKKyAvKgorICAqIFR5cGUgbWFjcm9zLgorQEAgLTEzMCwxMSArMTMxLDI0 IEBAIHN0cnVjdCBfSUJ1c1BhbmVsU2VydmljZUNsYXNzIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgICAgICAgICAgICAgICAgICAgIGgpOworICAg ICB2b2lkICAgICAoKiBwYW5lbF9leHRlbnNpb25fcmVjZWl2ZWQpCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFuZWxTZXJ2aWNlICAgICAgICpwYW5l bCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50 ICAgICAgICAgICAgICAgKmRhdGEpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICAgICAqZXZlbnQpOworKyAgICBnYm9vbGVh biAoKiBwcm9jZXNzX2tleV9ldmVudCkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgICAgICAgKnBhbmVsLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICAgICAg a2V5dmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3Vp bnQgICAgICAgICAgICAgICAgICAga2V5Y29kZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgIHN0YXRlKTsKKysgICAg dm9pZCAgICAgKCogY29tbWl0X3RleHRfcmVjZWl2ZWQpCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChJQnVzUGFuZWxTZXJ2aWNlICAgICAgICpwYW5lbCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNUZXh0ICAgICAg ICAgICAgICAgKnRleHQpOworKyAgICB2b2lkICAgICAoKiBjYW5kaWRhdGVfY2xpY2tlZF9sb29r dXBfdGFibGUpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJ QnVzUGFuZWxTZXJ2aWNlICAgICAgICpwYW5lbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgICAgIGluZGV4LAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAg ICAgICAgYnV0dG9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3VpbnQgICAgICAgICAgICAgICAgICAgc3RhdGUpOworIAorICAgICAvKjwgcHJpdmF0ZSA+ Ki8KKyAgICAgLyogcGFkZGluZyAqLworLSAgICBncG9pbnRlciBwZHVtbXlbNV07ICAvLyBXZSBj YW4gYWRkIDggcG9pbnRlcnMgd2l0aG91dCBicmVha2luZyB0aGUgQUJJLgorKyAgICBncG9pbnRl ciBwZHVtbXlbMl07ICAvLyBXZSBjYW4gYWRkIDggcG9pbnRlcnMgd2l0aG91dCBicmVha2luZyB0 aGUgQUJJLgorIH07CisgCisgR1R5cGUgICAgICAgICAgICBpYnVzX3BhbmVsX3NlcnZpY2VfZ2V0 X3R5cGUgICh2b2lkKTsKK0BAIC0yNDgsMTIgKzI2MiwxMDUgQEAgdm9pZCBpYnVzX3BhbmVsX3Nl cnZpY2VfY29tbWl0X3RleHQgICAgICAgKElCdXNQYW5lbFNlcnZpY2UgKnBhbmVsLAorIC8qKgor ICAqIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb246CisgICogQHBhbmVsOiBBbiAj SUJ1c1BhbmVsU2VydmljZQorLSAqIEBkYXRhOiAodHJhbnNmZXIgZnVsbCk6IEEgI0dWYXJpYW50 IGRhdGEgd2hpY2ggaXMgc2VudCB0byBhIHBhbmVsIGV4dGVuc2lvbi4gCisrICogQGV2ZW50OiAo dHJhbnNmZXIgZnVsbCk6IEEgI1BhbmVsRXh0ZW5zaW9uRXZlbnQgd2hpY2ggaXMgc2VudCB0byBh CisrICogICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsIGV4dGVuc2lvbi4gCisgICoKKysg KiBFbmFibGUgb3IgZGlzYWJsZSBhIHBhbmVsIGV4dGVuc2lvbiB3aXRoICNJQnVzRXh0ZW5zaW9u RXZlbnQuCisgICogTm90aWZ5IHRoYXQgYSBkYXRhIGlzIHNlbnQKKyAgKiBieSBzZW5kaW5nIGEg IlBhbmVsRXh0ZW5zaW9uIiBtZXNzYWdlIHRvIElCdXMgcGFuZWwgZXh0ZW5zaW9uIHNlcnZpY2Uu CisgICovCistdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfcGFuZWxfZXh0ZW5zaW9uICAgKElCdXNQ YW5lbFNlcnZpY2UgKnBhbmVsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHVmFyaWFudCAgICAgICAgICpkYXRhKTsKKyt2b2lkIGlidXNfcGFuZWxfc2Vydmlj ZV9wYW5lbF9leHRlbnNpb24gICAoSUJ1c1BhbmVsU2VydmljZSAgICpwYW5lbCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpl dmVudCk7CisrCisrLyoqCisrICogaWJ1c19wYW5lbF9zZXJ2aWNlX3BhbmVsX2V4dGVuc2lvbl9y ZWdpc3Rlcl9rZXlzOgorKyAqIEBwYW5lbDogQW4gI0lCdXNQYW5lbFNlcnZpY2UKKysgKiBAZmly c3RfcHJvcGVydHlfbmFtZTogdGhlIGZpcnN0IG5hbWUgb2YgdGhlIHNob3J0Y3V0IGtleXMuIFRo aXMgaXMgJU5VTEwKKysgIiB0ZXJtaW5hdGVkLgorKyAqCisrICogUmVnaXN0ZXIgc2hvcnRjdXQg a2V5cyB0byBlbmFibGUgcGFuZWwgZXh0ZW5zaW9ucyB3aXRoICNJQnVzRXh0ZW5zaW9uRXZlbnQu CisrICogTm90aWZ5IHRoYXQgYSBkYXRhIGlzIHNlbnQKKysgKiBieSBzZW5kaW5nIGEgIlBhbmVs RXh0ZW5zaW9uUmVnaXN0ZXJLZXlzIiBtZXNzYWdlIHRvIElCdXMgcGFuZWwgZXh0ZW5zaW9uCisr ICogc2VydmljZS4gU2VlbXMgVmFsYSBkb2VzIG5vdCBzdXBwb3J0IHVpbnRbXVszXSBhbmQgdXNl CisrICogSUJ1c1Byb2Nlc3NLZXlFdmVudERhdGFbXS4gRS5nLgorKyAqIElCdXNQcm9jZXNzS2V5 RXZlbnREYXRhW10ga2V5cyA9IHt7CisrICogICAgICAgICBJQlVTX0tFWV9lLCAwLCBJQlVTX1NI SUZUX01BU0sgfCBJQlVTX1NVUEVSX01BU0sgfX07CisrICogaWJ1c19wYW5lbF9zZXJ2aWNlX3Bh bmVsX2V4dGVuc2lvbl9yZWdpc3Rlcl9rZXlzKHBhbmVsLCAiZW1vamkiLCBrZXlzLCBOVUxMKTsK KysgKi8KKyt2b2lkIGlidXNfcGFuZWxfc2VydmljZV9wYW5lbF9leHRlbnNpb25fcmVnaXN0ZXJf a2V5cworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1Bh bmVsU2VydmljZSAgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAgKmZpcnN0X3Byb3BlcnR5X25hbWUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworKworKy8qKgorKyAq IGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfcHJlZWRpdF90ZXh0X3JlY2VpdmVkOgorKyAqIEBw YW5lbDogQW4gI0lCdXNQYW5lbFNlcnZpY2UKKysgKiBAdGV4dDogVXBkYXRlIGNvbnRlbnQuCisr ICogQGN1cnNvcl9wb3M6IEN1cnJlbnQgcG9zaXRpb24gb2YgY3Vyc29yCisrICogQHZpc2libGU6 IFdoZXRoZXIgdGhlIHByZS1lZGl0IGJ1ZmZlciBpcyB2aXNpYmxlLgorKyAqCisrICogTm90aWZ5 IHRoYXQgdGhlIHByZWVkaXQgaXMgdXBkYXRlZCBieSB0aGUgcGFuZWwgZXh0ZW5zaW9uCisrICoK KysgKiAoTm90ZTogVGhlIHRhYmxlIG9iamVjdCB3aWxsIGJlIHJlbGVhc2VkLCBpZiBpdCBpcyBm bG9hdGluZy4KKysgKiAgSWYgY2FsbGVyIHdhbnQgdG8ga2VlcCB0aGUgb2JqZWN0LCBjYWxsZXIg c2hvdWxkIG1ha2UgdGhlIG9iamVjdAorKyAqICBzaW5rIGJ5IGdfb2JqZWN0X3JlZl9zaW5rLikK KysgKi8KKyt2b2lkIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfcHJlZWRpdF90ZXh0X3JlY2Vp dmVkCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElCdXNQYW5l bFNlcnZpY2UgKnBhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJQnVzVGV4dCAgICAgICAgICp0ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBjdXJzb3JfcG9zLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICB2aXNp YmxlKTsKKysKKysvKioKKysgKiBpYnVzX3BhbmVsX3NlcnZpY2Vfc2hvd19wcmVlZGl0X3RleHRf cmVjZWl2ZWQ6CisrICogQHBhbmVsOiBBbiBJQnVzUGFuZWxTZXJ2aWNlCisrICoKKysgKiBOb3Rp ZnkgdGhhdCB0aGUgcHJlZWRpdCBpcyBzaG93biBieSB0aGUgcGFuZWwgZXh0ZW5zaW9uCisrICov Cisrdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2Vfc2hvd19wcmVlZGl0X3RleHRfcmVjZWl2ZWQKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1BhbmVsU2Vydmlj ZSAqcGFuZWwpOworKworKy8qKgorKyAqIGlidXNfcGFuZWxfc2VydmljZV9oaWRlX3ByZWVkaXRf dGV4dF9yZWNlaXZlZDoKKysgKiBAcGFuZWw6IEFuIElCdXNQYW5lbFNlcnZpY2UKKysgKgorKyAq IE5vdGlmeSB0aGF0IHRoZSBwcmVlZGl0IGlzIGhpZGRlbiBieSB0aGUgcGFuZWwgZXh0ZW5zaW9u CisrICovCisrdm9pZCBpYnVzX3BhbmVsX3NlcnZpY2VfaGlkZV9wcmVlZGl0X3RleHRfcmVjZWl2 ZWQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1BhbmVs U2VydmljZSAqcGFuZWwpOworKworKy8qKgorKyAqIGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVf YXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWQ6CisrICogQHBhbmVsOiBBbiAjSUJ1c1BhbmVsU2Vydmlj ZQorKyAqIEB0ZXh0OiBBbiAjSUJ1c1RleHQKKysgKiBAdmlzaWJsZTogV2hldGhlciB0aGUgYXV4 aWxpcmFyeSB0ZXh0IGlzIHZpc2libGUuCisrICoKKysgKiBOb3RpZnkgdGhhdCB0aGUgYXV4aWxp cmFyeSBpcyB1cGRhdGVkIGJ5IHRoZSBwYW5lbCBleHRlbnNpb24uCisrICoKKysgKiAoTm90ZTog VGhlIHRhYmxlIG9iamVjdCB3aWxsIGJlIHJlbGVhc2VkLCBpZiBpdCBpcyBmbG9hdGluZy4KKysg KiAgSWYgY2FsbGVyIHdhbnQgdG8ga2VlcCB0aGUgb2JqZWN0LCBjYWxsZXIgc2hvdWxkIG1ha2Ug dGhlIG9iamVjdAorKyAqICBzaW5rIGJ5IGdfb2JqZWN0X3JlZl9zaW5rLikKKysgKi8KKyt2b2lk IGlidXNfcGFuZWxfc2VydmljZV91cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWQKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSUJ1c1BhbmVsU2VydmljZSAq cGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCdXNU ZXh0ICAgICAgICAgKnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGdib29sZWFuICAgICAgICAgIHZpc2libGUpOworKworKy8qKgorKyAqIGlidXNfcGFu ZWxfc2VydmljZV91cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVkOgorKyAqIEBwYW5lbDogQW4g I0lCdXNQYW5lbFNlcnZpY2UKKysgKiBAdGFibGU6IEFuICNJQnVzTG9va3VwVGFibGUKKysgKiBA dmlzaWJsZTogV2hldGhlciB0aGUgbG9va3VwIHRhYmxlIGlzIHZpc2libGUuCisrICoKKysgKiBO b3RpZnkgdGhhdCB0aGUgbG9va3VwIHRhYmxlIGlzIHVwZGF0ZWQgYnkgdGhlIHBhbmVsIGV4dGVu c2lvbi4KKysgKgorKyAqIChOb3RlOiBUaGUgdGFibGUgb2JqZWN0IHdpbGwgYmUgcmVsZWFzZWQs IGlmIGl0IGlzIGZsb2F0aW5nLgorKyAqICBJZiBjYWxsZXIgd2FudCB0byBrZWVwIHRoZSBvYmpl Y3QsIGNhbGxlciBzaG91bGQgbWFrZSB0aGUgb2JqZWN0CisrICogIHNpbmsgYnkgZ19vYmplY3Rf cmVmX3NpbmsuKQorKyAqLworK3ZvaWQgaWJ1c19wYW5lbF9zZXJ2aWNlX3VwZGF0ZV9sb29rdXBf dGFibGVfcmVjZWl2ZWQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoSUJ1c1BhbmVsU2VydmljZSAqcGFuZWwsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElCdXNMb29rdXBUYWJsZSAgKnRhYmxlLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICB2aXNpYmxlKTsK KyBHX0VORF9ERUNMUworICNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy9pYnVzc2hhcmUuaCBiL3Ny Yy9pYnVzc2hhcmUuaAoraW5kZXggNzU3ZDkxNWIuLjRmNWEzMDZiIDEwMDY0NAorLS0tIGEvc3Jj L2lidXNzaGFyZS5oCisrKysgYi9zcmMvaWJ1c3NoYXJlLmgKK0BAIC03Myw2ICs3MywxNSBAQAor ICAqLworICNkZWZpbmUgSUJVU19TRVJWSUNFX1BBTkVMX0VYVEVOU0lPTiAib3JnLmZyZWVkZXNr dG9wLklCdXMuUGFuZWwuRXh0ZW5zaW9uIgorIAorKy8qKgorKyAqIElCVVNfU0VSVklDRV9QQU5F TF9FWFRFTlNJT05fRU1PSkk6CisrICoKKysgKiBBZGRyZXNzIG9mIElCdXMgcGFuZWwgZXh0ZW5z aW9uIHNlcnZpY2UgZm9yIGVtb2ppLgorKyAqIFRoaXMgc2VydmljZSBwcm92aWRlcyBlbW9qaSwg VW5pY29kZSBjb2RlIHBvaW50LCBVbmljb2RlIG5hbWUgZmVhdHVyZXMuCisrICovCisrI2RlZmlu ZSBJQlVTX1NFUlZJQ0VfUEFORUxfRVhURU5TSU9OX0VNT0pJIFwKKysgICAgICAgICJvcmcuZnJl ZWRlc2t0b3AuSUJ1cy5QYW5lbC5FeHRlbnNpb24uRW1vamkiCisrCisgLyoqCisgICogSUJVU19T RVJWSUNFX0NPTkZJRzoKKyAgKgorQEAgLTEwOSwxMSArMTE4LDEzIEBACisgI2RlZmluZSBJQlVT X1BBVEhfUEFORUwgICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9JQnVzL1BhbmVsIgorIAorIC8q KgorLSAqIElCVVNfUEFUSF9QQU5FTF9FWFRFTlNJT046CisrICogSUJVU19QQVRIX1BBTkVMX0VY VEVOU0lPTl9FTU9KSToKKyAgKgorLSAqIEQtQnVzIHBhdGggZm9yIElCdXMgcGFuZWwuCisrICog RC1CdXMgcGF0aCBmb3IgSUJ1cyBleHRlbnNpb24gcGFuZWwgZm9yIGVtb2ppLgorKyAqIFRoaXMg c2VydmljZSBwcm92aWRlcyBlbW9qaSwgVW5pY29kZSBjb2RlIHBvaW50LCBVbmljb2RlIG5hbWUg ZmVhdHVyZXMuCisgICovCistI2RlZmluZSBJQlVTX1BBVEhfUEFORUxfRVhURU5TSU9OICIvb3Jn L2ZyZWVkZXNrdG9wL0lCdXMvUGFuZWwvRXh0ZW5zaW9uIgorKyNkZWZpbmUgSUJVU19QQVRIX1BB TkVMX0VYVEVOU0lPTl9FTU9KSSBcCisrICAgICAgICAiL29yZy9mcmVlZGVza3RvcC9JQnVzL1Bh bmVsL0V4dGVuc2lvbi9FbW9qaSIKKyAKKyAvKioKKyAgKiBJQlVTX1BBVEhfQ09ORklHOgorZGlm ZiAtLWdpdCBhL3NyYy9pYnVzeGV2ZW50LmMgYi9zcmMvaWJ1c3hldmVudC5jCitpbmRleCBkZWE4 MDI3Mi4uMjg3YmI5OWIgMTAwNjQ0CistLS0gYS9zcmMvaWJ1c3hldmVudC5jCisrKysgYi9zcmMv aWJ1c3hldmVudC5jCitAQCAtMjIsMTMgKzIyLDIzIEBACisgI2luY2x1ZGUgImlidXNpbnRlcm5h bC5oIgorICNpbmNsdWRlICJpYnVzeGV2ZW50LmgiCisgCisrI2RlZmluZSBJQlVTX0VYVEVOU0lP Tl9FVkVOVF9WRVJTSU9OIDEKKysjZGVmaW5lIElCVVNfRVhURU5TSU9OX0VWRU5UX0dFVF9QUklW QVRFKG8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgKEdfVFlQRV9JTlNUQU5D RV9HRVRfUFJJVkFURSAoKG8pLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZF TlQsICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVz RXh0ZW5zaW9uRXZlbnRQcml2YXRlKSkKKysKKyAjZGVmaW5lIElCVVNfWF9FVkVOVF9WRVJTSU9O IDEKKy0jZGVmaW5lIElCVVNfWF9FVkVOVF9HRVRfUFJJVkFURShvKSAgXAorKyNkZWZpbmUgSUJV U19YX0VWRU5UX0dFVF9QUklWQVRFKG8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgobyksIElCVVNfVFlQRV9Y X0VWRU5ULCBJQnVzWEV2ZW50UHJpdmF0ZSkpCisgCisgZW51bSB7CisgICAgIFBST1BfMCwKKyAg ICAgUFJPUF9WRVJTSU9OLAorKyAgICBQUk9QX05BTUUsCisrICAgIFBST1BfSVNfRU5BQkxFRCwK KysgICAgUFJPUF9JU19FWFRFTlNJT04sCisrICAgIFBST1BfUEFSQU1TLAorICAgICBQUk9QX0VW RU5UX1RZUEUsCisgICAgIFBST1BfV0lORE9XLAorICAgICBQUk9QX1NFTkRfRVZFTlQsCitAQCAt NTIsNiArNjIsMTQgQEAgZW51bSB7CisgfTsKKyAKKyAKKytzdHJ1Y3QgX0lCdXNFeHRlbnNpb25F dmVudFByaXZhdGUgeworKyAgICBndWludCAgICAgdmVyc2lvbjsKKysgICAgZ2NoYXIgICAgKm5h bWU7CisrICAgIGdib29sZWFuICBpc19lbmFibGVkOworKyAgICBnYm9vbGVhbiAgaXNfZXh0ZW5z aW9uOworKyAgICBnY2hhciAgICAqcGFyYW1zOworK307CisrCisgc3RydWN0IF9JQnVzWEV2ZW50 UHJpdmF0ZSB7CisgICAgIGd1aW50ICAgIHZlcnNpb247CisgICAgIGd1aW50MzIgIHRpbWU7CitA QCAtNzMsMjQgKzkxLDM0NiBAQCBzdHJ1Y3QgX0lCdXNYRXZlbnRQcml2YXRlIHsKKyB9OworIAor IC8qIGZ1bmN0aW9ucyBwcm90b3R5cGUgKi8KKy1zdGF0aWMgdm9pZCAgICAgIGlidXNfeF9ldmVu dF9kZXN0cm95ICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCk7Cistc3RhdGljIHZv aWQgICAgICBpYnVzX3hfZXZlbnRfc2V0X3Byb3BlcnR5ICAgKElCdXNYRXZlbnQgICAgICAgICAq ZXZlbnQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1 aW50ICAgICAgICAgICAgICAgcHJvcF9pZCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgR1ZhbHVlICAgICAgICp2YWx1ZSwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFtU3BlYyAgICAgICAgICpw c3BlYyk7Cistc3RhdGljIHZvaWQgICAgICBpYnVzX3hfZXZlbnRfZ2V0X3Byb3BlcnR5ICAgKElC dXNYRXZlbnQgICAgICAgICAqZXZlbnQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICAgICAgcHJvcF9pZCwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhbHVlICAgICAgICAgICAgICp2 YWx1ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1Bh cmFtU3BlYyAgICAgICAgICpwc3BlYyk7Cistc3RhdGljIGdib29sZWFuICBpYnVzX3hfZXZlbnRf c2VyaWFsaXplICAgICAgKElCdXNYRXZlbnQgICAgICAgICAqZXZlbnQsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50QnVpbGRlciAgICAqYnVp bGRlcik7Cistc3RhdGljIGdpbnQgICAgICBpYnVzX3hfZXZlbnRfZGVzZXJpYWxpemUgICAgKElC dXNYRXZlbnQgICAgICAgICAqZXZlbnQsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAqdmFyaWFudCk7Cistc3RhdGljIGdi b29sZWFuICBpYnVzX3hfZXZlbnRfY29weSAgICAgICAgICAgKElCdXNYRXZlbnQgICAgICAgICAq ZGVzdCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3QgSUJ1c1hFdmVudCAgICpzcmMpOworLQorK3N0YXRpYyB2b2lkICAgICAgaWJ1c19leHRlbnNp b25fZXZlbnRfZGVzdHJveSAgICAgIChJQnVzRXh0ZW5zaW9uRXZlbnQgKmV2ZW50KTsKKytzdGF0 aWMgdm9pZCAgICAgIGlidXNfZXh0ZW5zaW9uX2V2ZW50X3NldF9wcm9wZXJ0eSAoSUJ1c0V4dGVu c2lvbkV2ZW50ICpldmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICBwcm9wX2lkLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgICAg ICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgKnBzcGVjKTsKKytzdGF0aWMgdm9pZCAgICAgIGli dXNfZXh0ZW5zaW9uX2V2ZW50X2dldF9wcm9wZXJ0eSAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVu dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z3VpbnQgICAgICAgICAgICAgICBwcm9wX2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAgICAgICAgKnZhbHVlLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1T cGVjICAgICAgICAgKnBzcGVjKTsKKytzdGF0aWMgZ2Jvb2xlYW4gIGlidXNfZXh0ZW5zaW9uX2V2 ZW50X3NlcmlhbGl6ZSAgICAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVy CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICpidWlsZGVyKTsKKytzdGF0aWMgZ2ludCAgICAgIGlidXNfZXh0ZW5z aW9uX2V2ZW50X2Rlc2VyaWFsaXplICAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKnZhcmlhbnQpOworK3N0YXRpYyBnYm9vbGVhbiAgaWJ1c19leHRlbnNp b25fZXZlbnRfY29weSAgICAgICAgIChJQnVzRXh0ZW5zaW9uRXZlbnQKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICpkZXN0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBJQnVzRXh0ZW5zaW9uRXZlbnQKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzcmMp OworK3N0YXRpYyB2b2lkICAgICAgaWJ1c194X2V2ZW50X2Rlc3Ryb3kgICAgICAgICAgICAgIChJ QnVzWEV2ZW50ICAgICAgICAgKmV2ZW50KTsKKytzdGF0aWMgdm9pZCAgICAgIGlidXNfeF9ldmVu dF9zZXRfcHJvcGVydHkgICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAg ICAgICAgICAgICBwcm9wX2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBHVmFsdWUgICAgICAgKnZhbHVlLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAg ICAgKnBzcGVjKTsKKytzdGF0aWMgdm9pZCAgICAgIGlidXNfeF9ldmVudF9nZXRfcHJvcGVydHkg ICAgICAgICAoSUJ1c1hFdmVudCAgICAgICAgICpldmVudCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgICAgICBwcm9w X2lkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBHVmFsdWUgICAgICAgICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBHUGFyYW1TcGVjICAgICAgICAgKnBzcGVjKTsKKytz dGF0aWMgZ2Jvb2xlYW4gIGlidXNfeF9ldmVudF9zZXJpYWxpemUgICAgICAgICAgICAoSUJ1c1hF dmVudCAgICAgICAgICpldmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgR1ZhcmlhbnRCdWlsZGVyCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpidWlsZGVy KTsKKytzdGF0aWMgZ2ludCAgICAgIGlidXNfeF9ldmVudF9kZXNlcmlhbGl6ZSAgICAgICAgICAo SUJ1c1hFdmVudCAgICAgICAgICpldmVudCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR1ZhcmlhbnQKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZhcmlhbnQp OworK3N0YXRpYyBnYm9vbGVhbiAgaWJ1c194X2V2ZW50X2NvcHkgICAgICAgICAgICAgICAgIChJ QnVzWEV2ZW50ICAgICAgICAgKmRlc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IElCdXNYRXZlbnQgICAqc3JjKTsKKysKKytHX0RF RklORV9UWVBFIChJQnVzRXh0ZW5zaW9uRXZlbnQsIGlidXNfZXh0ZW5zaW9uX2V2ZW50LCBJQlVT X1RZUEVfU0VSSUFMSVpBQkxFKQorIEdfREVGSU5FX1RZUEUgKElCdXNYRXZlbnQsIGlidXNfeF9l dmVudCwgSUJVU19UWVBFX1NFUklBTElaQUJMRSkKKyAKKytzdGF0aWMgdm9pZAorK2lidXNfZXh0 ZW5zaW9uX2V2ZW50X2NsYXNzX2luaXQgKElCdXNFeHRlbnNpb25FdmVudENsYXNzICpjbGFzcykK Kyt7CisrICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChj bGFzcyk7CisrICAgIElCdXNPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gSUJVU19PQkpFQ1Rf Q0xBU1MgKGNsYXNzKTsKKysgICAgSUJ1c1NlcmlhbGl6YWJsZUNsYXNzICpzZXJpYWxpemFibGVf Y2xhc3MgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoY2xhc3MpOworKworKyAgICBnb2JqZWN0 X2NsYXNzLT5zZXRfcHJvcGVydHkgPQorKyAgICAgICAgICAgIChHT2JqZWN0U2V0UHJvcGVydHlG dW5jKSBpYnVzX2V4dGVuc2lvbl9ldmVudF9zZXRfcHJvcGVydHk7CisrICAgIGdvYmplY3RfY2xh c3MtPmdldF9wcm9wZXJ0eSA9CisrICAgICAgICAgICAgKEdPYmplY3RHZXRQcm9wZXJ0eUZ1bmMp IGlidXNfZXh0ZW5zaW9uX2V2ZW50X2dldF9wcm9wZXJ0eTsKKysKKysgICAgb2JqZWN0X2NsYXNz LT5kZXN0cm95ID0KKysgICAgICAgICAgICAoSUJ1c09iamVjdERlc3Ryb3lGdW5jKSBpYnVzX2V4 dGVuc2lvbl9ldmVudF9kZXN0cm95OworKworKyAgICBzZXJpYWxpemFibGVfY2xhc3MtPnNlcmlh bGl6ZSAgID0KKysgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZVNlcmlhbGl6ZUZ1bmMpIGli dXNfZXh0ZW5zaW9uX2V2ZW50X3NlcmlhbGl6ZTsKKysgICAgc2VyaWFsaXphYmxlX2NsYXNzLT5k ZXNlcmlhbGl6ZSA9CisrICAgICAgICAgICAgKElCdXNTZXJpYWxpemFibGVEZXNlcmlhbGl6ZUZ1 bmMpIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2Rlc2VyaWFsaXplOworKyAgICBzZXJpYWxpemFibGVf Y2xhc3MtPmNvcHkgICAgICAgID0KKysgICAgICAgICAgICAoSUJ1c1NlcmlhbGl6YWJsZUNvcHlG dW5jKSBpYnVzX2V4dGVuc2lvbl9ldmVudF9jb3B5OworKworKyAgICAvKiBpbnN0YWxsIHByb3Bl cnRpZXMgKi8KKysgICAgLyoqCisrICAgICAqIElCdXNFeHRlbnNpb25FdmVudDp2ZXJzaW9uOgor KyAgICAgKgorKyAgICAgKiBWZXJzaW9uIG9mIHRoZSAjSUJ1c0V4dGVuc2lvbkV2ZW50LgorKyAg ICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFz cywKKysgICAgICAgICAgICAgICAgICAgIFBST1BfVkVSU0lPTiwKKysgICAgICAgICAgICAgICAg ICAgIGdfcGFyYW1fc3BlY191aW50ICgidmVyc2lvbiIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgInZlcnNpb24iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAwLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfTUFYVUlO VDMyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfRVhURU5TSU9OX0VWRU5UX1ZFUlNJ T04sCisrICAgICAgICAgICAgICAgICAgICAgICAgR19QQVJBTV9SRUFEQUJMRSkpOworKworKyAg ICAvKioKKysgICAgICogSUJ1c0V4dGVuc2lvbkV2ZW50Om5hbWU6CisrICAgICAqCisrICAgICAq IE5hbWUgb2YgdGhlIGV4dGVuc2lvbiBpbiB0aGUgI0lCdXNFeHRlbnNpb25FdmVudC4KKysgICAg ICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3Ms CisrICAgICAgICAgICAgICAgICAgICBQUk9QX05BTUUsCisrICAgICAgICAgICAgICAgICAgICBn X3BhcmFtX3NwZWNfc3RyaW5nICgibmFtZSIsCisrICAgICAgICAgICAgICAgICAgICAgICAgIm5h bWUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJuYW1lIG9mIHRoZSBleHRlbnNpb24iLAor KyAgICAgICAgICAgICAgICAgICAgICAgICIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdf UEFSQU1fUkVBRFdSSVRFIHwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNU UlVDVF9PTkxZKSk7CisrCisrICAgIC8qKgorKyAgICAgKiBJQnVzRXh0ZW5zaW9uRXZlbnQ6aXMt ZW5hYmxlZDoKKysgICAgICoKKysgICAgICogJVRSVUUgaWYgdGhlIGV4dGVuc2lvbiBpcyBlbmFi bGVkIGluIHRoZSAjSUJ1c0V4dGVuc2lvbkV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3Rf Y2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAg ICAgIFBST1BfSVNfRU5BQkxFRCwKKysgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19i b29sZWFuICgiaXMtZW5hYmxlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgImlzIGVuYWJs ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICJpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJs ZWQiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAorKyAgICAgICAgICAgICAgICAg ICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BB UkFNX0NPTlNUUlVDVF9PTkxZKSk7CisrCisrICAgIC8qKgorKyAgICAgKiBJQnVzRXh0ZW5zaW9u RXZlbnQ6aXMtZXh0ZW5zaW9uOgorKyAgICAgKgorKyAgICAgKiAlVFJVRSBpZiB0aGUgI0lCdXNF eHRlbnNpb25FdmVudCBpcyBjYWxsZWQgYnkgYW4gZXh0ZW5zaW9uLgorKyAgICAgKiAlRkFMU0Ug aWYgdGhlICNJQnVzRXh0ZW5zaW9uRXZlbnQgaXMgY2FsbGVkIGJ5IGFuIGFjdGl2ZSBlbmdpbmUg b3IKKysgICAgICogcGFuZWwuCisrICAgICAqIElmIHRoaXMgdmFsdWUgaXMgJVRSVUUsIHRoZSBl dmVudCBpcyBzZW5kIHRvIGlidXMtZGFlbW9uLCBhbiBhY3RpdmUKKysgICAgICogZW5naW5lLiBJ ZiBpdCdzICVGQUxTRSwgdGhlIGV2ZW50IGlzIHNuZWQgdG8gaWJ1cy1kYWVtb24sIHBhbmVscy4K KysgICAgICovCisrICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3Rf Y2xhc3MsCisrICAgICAgICAgICAgICAgICAgICBQUk9QX0lTX0VYVEVOU0lPTiwKKysgICAgICAg ICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiaXMtZXh0ZW5zaW9uIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAiaXMgZXh0ZW5zaW9uIiwKKysgICAgICAgICAgICAgICAgICAg ICAgICAiaWYgdGhlIGV2ZW50IGlzIGNhbGxlZCBieSBhbiBleHRlbnNpb24iLAorKyAgICAgICAg ICAgICAgICAgICAgICAgIEZBTFNFLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1f UkVBRFdSSVRFIHwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9P TkxZKSk7CisrCisrICAgIC8qKgorKyAgICAgKiBJQnVzRXh0ZW5zaW9uRXZlbnQ6cGFyYW1zOgor KyAgICAgKgorKyAgICAgKiBQYXJhbWV0ZXJzIHRvIGVuYWJsZSB0aGUgZXh0ZW5zaW9uIGluIHRo ZSAjSUJ1c0V4dGVuc2lvbkV2ZW50LgorKyAgICAgKi8KKysgICAgZ19vYmplY3RfY2xhc3NfaW5z dGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKysgICAgICAgICAgICAgICAgICAgIFBST1Bf UEFSQU1TLAorKyAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInBhcmFt cyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtcyIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgIlBhcmFtZXRlcnMgdG8gZW5hYmxlIHRoZSBleHRlbnNpb24iLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICIiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIEdfUEFSQU1fUkVB RFdSSVRFIHwKKysgICAgICAgICAgICAgICAgICAgICAgICBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZ KSk7CisrCisrICAgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoY2xhc3MsIHNpemVvZiAoSUJ1 c0V4dGVuc2lvbkV2ZW50UHJpdmF0ZSkpOworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNfZXh0 ZW5zaW9uX2V2ZW50X2luaXQgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpCisreworKyAgICBl dmVudC0+cHJpdiA9IElCVVNfRVhURU5TSU9OX0VWRU5UX0dFVF9QUklWQVRFIChldmVudCk7Cisr ICAgIGV2ZW50LT5wcml2LT52ZXJzaW9uID0gSUJVU19FWFRFTlNJT05fRVZFTlRfVkVSU0lPTjsK Kyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX2V4dGVuc2lvbl9ldmVudF9kZXN0cm95IChJQnVz RXh0ZW5zaW9uRXZlbnQgKmV2ZW50KQorK3sKKysgICAgZ19jbGVhcl9wb2ludGVyICgmZXZlbnQt PnByaXYtPm5hbWUsIGdfZnJlZSk7CisrCisrICAgIElCVVNfT0JKRUNUX0NMQVNTKGlidXNfZXh0 ZW5zaW9uX2V2ZW50X3BhcmVudF9jbGFzcyktPgorKyAgICAgICAgICAgIGRlc3Ryb3kgKElCVVNf T0JKRUNUIChldmVudCkpOworK30KKysKKytzdGF0aWMgdm9pZAorK2lidXNfZXh0ZW5zaW9uX2V2 ZW50X3NldF9wcm9wZXJ0eSAoSUJ1c0V4dGVuc2lvbkV2ZW50ICAgKmV2ZW50LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICBwcm9wX2lkLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR1ZhbHVlICp2YWx1ZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdQYXJhbVNwZWMgICAqcHNwZWMpCisrewor KyAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2ID0gZXZlbnQtPnByaXY7CisrCisr ICAgIHN3aXRjaCAocHJvcF9pZCkgeworKyAgICBjYXNlIFBST1BfTkFNRToKKysgICAgICAgIGdf ZnJlZSAocHJpdi0+bmFtZSk7CisrICAgICAgICBwcml2LT5uYW1lID0gZ192YWx1ZV9kdXBfc3Ry aW5nICh2YWx1ZSk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX0lTX0VOQUJMRUQ6 CisrICAgICAgICBwcml2LT5pc19lbmFibGVkID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUp OworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9JU19FWFRFTlNJT046CisrICAgICAg ICBwcml2LT5pc19leHRlbnNpb24gPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisrICAg ICAgICBicmVhazsKKysgICAgY2FzZSBQUk9QX1BBUkFNUzoKKysgICAgICAgIHByaXYtPnBhcmFt cyA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOworKyAgICAgICAgYnJlYWs7CisrICAgIGRl ZmF1bHQ6CisrICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKGV2ZW50 LCBwcm9wX2lkLCBwc3BlYyk7CisrICAgIH0KKyt9CisrCisrc3RhdGljIHZvaWQKKytpYnVzX2V4 dGVuc2lvbl9ldmVudF9nZXRfcHJvcGVydHkgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICAgIHBy b3BfaWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVmFsdWUgICAgICAg ICAgICAgKnZhbHVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1BhcmFt U3BlYyAgICAgICAgICpwc3BlYykKKyt7CisrICAgIElCdXNFeHRlbnNpb25FdmVudFByaXZhdGUg KnByaXYgPSBldmVudC0+cHJpdjsKKysgICAgc3dpdGNoIChwcm9wX2lkKSB7CisrICAgIGNhc2Ug UFJPUF9WRVJTSU9OOgorKyAgICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHByaXYtPnZl cnNpb24pOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9OQU1FOgorKyAgICAgICAg Z192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcHJpdi0+bmFtZSk7CisrICAgICAgICBicmVhazsK KysgICAgY2FzZSBQUk9QX0lTX0VOQUJMRUQ6CisrICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFu ICh2YWx1ZSwgcHJpdi0+aXNfZW5hYmxlZCk7CisrICAgICAgICBicmVhazsKKysgICAgY2FzZSBQ Uk9QX0lTX0VYVEVOU0lPTjoKKysgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBw cml2LT5pc19leHRlbnNpb24pOworKyAgICAgICAgYnJlYWs7CisrICAgIGNhc2UgUFJPUF9QQVJB TVM6CisrICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBwcml2LT5wYXJhbXMpOwor KyAgICAgICAgYnJlYWs7CisrICAgIGRlZmF1bHQ6CisrICAgICAgICBHX09CSkVDVF9XQVJOX0lO VkFMSURfUFJPUEVSVFlfSUQgKGV2ZW50LCBwcm9wX2lkLCBwc3BlYyk7CisrICAgIH0KKyt9Cisr Cisrc3RhdGljIGdib29sZWFuCisraWJ1c19leHRlbnNpb25fZXZlbnRfc2VyaWFsaXplIChJQnVz RXh0ZW5zaW9uRXZlbnQgKmV2ZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg R1ZhcmlhbnRCdWlsZGVyICAgICpidWlsZGVyKQorK3sKKysgICAgZ2Jvb2xlYW4gcmV0dmFsOwor KyAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2OworKworKyAgICByZXR2YWwgPSBJ QlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c19leHRlbnNpb25fZXZlbnRfcGFyZW50X2NsYXNz KS0+CisrICAgICAgICAgICAgc2VyaWFsaXplICgoSUJ1c1NlcmlhbGl6YWJsZSAqKWV2ZW50LCBi dWlsZGVyKTsKKysgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHJldHZhbCwgRkFMU0UpOworKyAg ICAvKiBFbmQgZGljdCBpdGVyICovCisrCisrICAgIHByaXYgPSBldmVudC0+cHJpdjsKKysjZGVm aW5lIE5PVE5VTEwocykgKChzKSAhPSBOVUxMID8gKHMpIDogIiIpCisrICAgIC8qIElmIHlvdSB3 aWxsIGFkZCBhIG5ldyBwcm9wZXJ0eSwgeW91IGNhbiBhcHBlbmQgaXQgYXQgdGhlIGVuZCBhbmQK KysgICAgICogeW91IHNob3VsZCBub3QgY2hhbmdlIHRoZSBzZXJpYWxpemVkIG9yZGVyIG9mIG5h bWUsIGxvbmduYW1lLAorKyAgICAgKiBkZXNjcmlwdGlvbiwgLi4uIGJlY2F1c2UgdGhlIG9yZGVy IGlzIGFsc28gdXNlZCBpbiBvdGhlciBhcHBsaWNhdGlvbnMKKysgICAgICogbGlrZXMgaWJ1cy1x dC4gKi8KKysgICAgZ192YXJpYW50X2J1aWxkZXJfYWRkIChidWlsZGVyLCAidSIsIHByaXYtPnZl cnNpb24pOworKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJzIiwgTk9UTlVM TCAocHJpdi0+bmFtZSkpOworKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQgKGJ1aWxkZXIsICJi IiwgcHJpdi0+aXNfZW5hYmxlZCk7CisrICAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCAoYnVpbGRl ciwgImIiLCBwcml2LT5pc19leHRlbnNpb24pOworKyAgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQg KGJ1aWxkZXIsICJzIiwgTk9UTlVMTCAocHJpdi0+cGFyYW1zKSk7CisrI3VuZGVmIE5PVE5VTEwK KysKKysgICAgcmV0dXJuIFRSVUU7CisrfQorKworK3N0YXRpYyBnaW50CisraWJ1c19leHRlbnNp b25fZXZlbnRfZGVzZXJpYWxpemUgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdWYXJpYW50ICAgICAgICAgICAqdmFyaWFudCkK Kyt7CisrICAgIGdpbnQgcmV0dmFsOworKyAgICBJQnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpw cml2OworKworKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFTUyAoaWJ1c19leHRl bnNpb25fZXZlbnRfcGFyZW50X2NsYXNzKS0+CisrICAgICAgICAgICAgZGVzZXJpYWxpemUgKChJ QnVzU2VyaWFsaXphYmxlICopZXZlbnQsIHZhcmlhbnQpOworKyAgICBnX3JldHVybl92YWxfaWZf ZmFpbCAocmV0dmFsLCAwKTsKKysKKysgICAgcHJpdiA9IGV2ZW50LT5wcml2OworKyAgICAvKiBJ ZiB5b3Ugd2lsbCBhZGQgYSBuZXcgcHJvcGVydHksIHlvdSBjYW4gYXBwZW5kIGl0IGF0IHRoZSBl bmQgYW5kCisrICAgICAqIHlvdSBzaG91bGQgbm90IGNoYW5nZSB0aGUgc2VyaWFsaXplZCBvcmRl ciBvZiBuYW1lLCBsb25nbmFtZSwKKysgICAgICogZGVzY3JpcHRpb24sIC4uLiBiZWNhdXNlIHRo ZSBvcmRlciBpcyBhbHNvIHVzZWQgaW4gb3RoZXIgYXBwbGljYXRpb25zCisrICAgICAqIGxpa2Vz IGlidXMtcXQuICovCisrICAgIGdfdmFyaWFudF9nZXRfY2hpbGQgKHZhcmlhbnQsIHJldHZhbCsr LCAidSIsICZwcml2LT52ZXJzaW9uKTsKKysgICAgaWJ1c19nX3ZhcmlhbnRfZ2V0X2NoaWxkX3N0 cmluZyAodmFyaWFudCwgcmV0dmFsKyssCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICZwcml2LT5uYW1lKTsKKysgICAgZ192YXJpYW50X2dldF9jaGlsZCAodmFyaWFudCwg cmV0dmFsKyssICJiIiwgJnByaXYtPmlzX2VuYWJsZWQpOworKyAgICBnX3ZhcmlhbnRfZ2V0X2No aWxkICh2YXJpYW50LCByZXR2YWwrKywgImIiLCAmcHJpdi0+aXNfZXh0ZW5zaW9uKTsKKysgICAg aWJ1c19nX3ZhcmlhbnRfZ2V0X2NoaWxkX3N0cmluZyAodmFyaWFudCwgcmV0dmFsKyssCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcml2LT5wYXJhbXMpOworKworKyAg ICByZXR1cm4gcmV0dmFsOworK30KKysKKytzdGF0aWMgZ2Jvb2xlYW4KKytpYnVzX2V4dGVuc2lv bl9ldmVudF9jb3B5IChJQnVzRXh0ZW5zaW9uRXZlbnQgICAgICAgKmRlc3QsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3QgSUJ1c0V4dGVuc2lvbkV2ZW50ICpzcmMpCisreworKyAg ICBnYm9vbGVhbiByZXR2YWw7CisrICAgIElCdXNFeHRlbnNpb25FdmVudFByaXZhdGUgKmRlc3Rf cHJpdiA9IGRlc3QtPnByaXY7CisrICAgIElCdXNFeHRlbnNpb25FdmVudFByaXZhdGUgKnNyY19w cml2ID0gc3JjLT5wcml2OworKworKyAgICByZXR2YWwgPSBJQlVTX1NFUklBTElaQUJMRV9DTEFT UyAoaWJ1c19leHRlbnNpb25fZXZlbnRfcGFyZW50X2NsYXNzKS0+CisrICAgICAgICAgICAgY29w eSAoKElCdXNTZXJpYWxpemFibGUgKilkZXN0LCAoSUJ1c1NlcmlhbGl6YWJsZSAqKXNyYyk7Cisr ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChyZXR2YWwsIEZBTFNFKTsKKysKKysgICAgZGVzdF9w cml2LT52ZXJzaW9uICAgICAgICAgICA9IHNyY19wcml2LT52ZXJzaW9uOworKyAgICBkZXN0X3By aXYtPm5hbWUgICAgICAgICAgICAgID0gZ19zdHJkdXAgKHNyY19wcml2LT5uYW1lKTsKKysgICAg ZGVzdF9wcml2LT5pc19lbmFibGVkICAgICAgICA9IHNyY19wcml2LT5pc19lbmFibGVkOworKyAg ICBkZXN0X3ByaXYtPmlzX2V4dGVuc2lvbiAgICAgID0gc3JjX3ByaXYtPmlzX2V4dGVuc2lvbjsK KysgICAgZGVzdF9wcml2LT5wYXJhbXMgICAgICAgICAgICA9IGdfc3RyZHVwIChzcmNfcHJpdi0+ cGFyYW1zKTsKKysgICAgcmV0dXJuIFRSVUU7CisrfQorKworK0lCdXNFeHRlbnNpb25FdmVudCAq CisraWJ1c19leHRlbnNpb25fZXZlbnRfbmV3IChjb25zdCBnY2hhciAgICpmaXJzdF9wcm9wZXJ0 eV9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKQorK3sKKysgICAgdmFfbGlz dCB2YXJfYXJnczsKKysgICAgSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudDsKKysKKysgICAgdmFf c3RhcnQgKHZhcl9hcmdzLCBmaXJzdF9wcm9wZXJ0eV9uYW1lKTsKKysgICAgZXZlbnQgPSAoSUJ1 c0V4dGVuc2lvbkV2ZW50ICopIGdfb2JqZWN0X25ld192YWxpc3QgKAorKyAgICAgICAgICAgIElC VVNfVFlQRV9FWFRFTlNJT05fRVZFTlQsCisrICAgICAgICAgICAgZmlyc3RfcHJvcGVydHlfbmFt ZSwKKysgICAgICAgICAgICB2YXJfYXJncyk7CisrICAgIHZhX2VuZCAodmFyX2FyZ3MpOworKyAg ICBnX2Fzc2VydCAoZXZlbnQtPnByaXYtPnZlcnNpb24gIT0gMCk7CisrICAgIHJldHVybiBldmVu dDsKKyt9CisrCisrZ3VpbnQKKytpYnVzX2V4dGVuc2lvbl9ldmVudF9nZXRfdmVyc2lvbiAoSUJ1 c0V4dGVuc2lvbkV2ZW50ICpldmVudCkKKyt7CisrICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJ QlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQpLCAwKTsKKysgICAgcmV0dXJuIGV2ZW50LT5w cml2LT52ZXJzaW9uOworK30KKysKKytjb25zdCBnY2hhciAqCisraWJ1c19leHRlbnNpb25fZXZl bnRfZ2V0X25hbWUgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVy bl92YWxfaWZfZmFpbCAoSUJVU19JU19FWFRFTlNJT05fRVZFTlQgKGV2ZW50KSwgIiIpOworKyAg ICByZXR1cm4gZXZlbnQtPnByaXYtPm5hbWU7CisrfQorKworK2dib29sZWFuCisraWJ1c19leHRl bnNpb25fZXZlbnRfaXNfZW5hYmxlZCAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCkKKyt7Cisr ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVCAoZXZlbnQp LCBGQUxTRSk7CisrICAgIHJldHVybiBldmVudC0+cHJpdi0+aXNfZW5hYmxlZDsKKyt9CisrCisr Z2Jvb2xlYW4KKytpYnVzX2V4dGVuc2lvbl9ldmVudF9pc19leHRlbnNpb24gKElCdXNFeHRlbnNp b25FdmVudCAqZXZlbnQpCisreworKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19F WFRFTlNJT05fRVZFTlQgKGV2ZW50KSwgRkFMU0UpOworKyAgICByZXR1cm4gZXZlbnQtPnByaXYt PmlzX2V4dGVuc2lvbjsKKyt9CisrCisrY29uc3QgZ2NoYXIgKgorK2lidXNfZXh0ZW5zaW9uX2V2 ZW50X2dldF9wYXJhbXMgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpCisreworKyAgICBnX3Jl dHVybl92YWxfaWZfZmFpbCAoSUJVU19JU19FWFRFTlNJT05fRVZFTlQgKGV2ZW50KSwgIiIpOwor KyAgICByZXR1cm4gZXZlbnQtPnByaXYtPnBhcmFtczsKKyt9CisrCisrCisgc3RhdGljIHZvaWQK KyBpYnVzX3hfZXZlbnRfY2xhc3NfaW5pdCAoSUJ1c1hFdmVudENsYXNzICpjbGFzcykKKyB7CitA QCAtNDU0LDYgKzc5NCw3IEBAIHN0YXRpYyB2b2lkCisgaWJ1c194X2V2ZW50X2Rlc3Ryb3kgKElC dXNYRXZlbnQgKmV2ZW50KQorIHsKKyAgICAgZ19jbGVhcl9wb2ludGVyICgmZXZlbnQtPnByaXYt PnN0cmluZywgZ19mcmVlKTsKKysgICAgZ19jbGVhcl9wb2ludGVyICgmZXZlbnQtPnByaXYtPnB1 cnBvc2UsIGdfZnJlZSk7CisgCisgICAgIElCVVNfT0JKRUNUX0NMQVNTKGlidXNfeF9ldmVudF9w YXJlbnRfY2xhc3MpLT5kZXN0cm95IChJQlVTX09CSkVDVCAoZXZlbnQpKTsKKyB9CitkaWZmIC0t Z2l0IGEvc3JjL2lidXN4ZXZlbnQuaCBiL3NyYy9pYnVzeGV2ZW50LmgKK2luZGV4IGYzNWYxNGU0 Li5kNDRjYzhmNCAxMDA2NDQKKy0tLSBhL3NyYy9pYnVzeGV2ZW50LmgKKysrKyBiL3NyYy9pYnVz eGV2ZW50LmgKK0BAIC0yOSw4ICsyOSw4IEBACisgCisgLyoqCisgICogU0VDVElPTjogaWJ1c3hl dmVudAorLSAqIEBzaG9ydF9kZXNjcmlwdGlvbjogWEV2ZW50IHdyYXBwZXIgb2JqZWN0CistICog QHRpdGxlOiBJQnVzWEV2ZW50CisrICogQHNob3J0X2Rlc2NyaXB0aW9uOiBFeHRlbnNpb24gRXZl bnQgd3JhcHBlciBvYmplY3QKKysgKiBAdGl0bGU6IElCdXNFeHRlbnNpb25FdmVudAorICAqIEBz dGFiaWxpdHk6IFVuc3RhYmxlCisgICoKKyAgKiBBbiBJQnVzWEV2ZW50IHByb3ZpZGVzIGEgd3Jh cHBlciBvZiBYRXZlbnQuCitAQCAtNDUsMjUgKzQ1LDE1MCBAQAorICAqLworIAorIC8qIGRlZmlu ZSBHT0JKRUNUIG1hY3JvcyAqLworLSNkZWZpbmUgSUJVU19UWVBFX1hfRVZFTlQgICAgICAgICAg ICBcCisrI2RlZmluZSBJQlVTX1RZUEVfRVhURU5TSU9OX0VWRU5UICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAoaWJ1c19leHRlbnNpb25fZXZlbnRfZ2V0X3R5 cGUgKCkpCisrI2RlZmluZSBJQlVTX0VYVEVOU0lPTl9FVkVOVChvYmopICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NB U1QgKChvYmopLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJQlVTX1RZUEVfRVhURU5TSU9OX0VWRU5ULCAgICAgICAg ICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUJ1c0V4dGVuc2lvbkV2 ZW50KSkKKysjZGVmaW5lIElCVVNfRVhURU5TSU9OX0VWRU5UX0NMQVNTKGtsYXNzKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAo KGtsYXNzKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZFTlQsICAgICAgICAgICAg ICAgIFwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5zaW9uRXZlbnRD bGFzcykpCisrI2RlZmluZSBJQlVTX0lTX0VYVEVOU0lPTl9FVkVOVChvYmopICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZ UEUgKChvYmopLCBJQlVTX1RZUEVfRVhURU5TSU9OX0VWRU5UKSkKKysjZGVmaW5lIElCVVNfSVNf RVhURU5TSU9OX0VWRU5UX0NMQVNTKGtsYXNzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgSUJVU19UWVBFX0VYVEVO U0lPTl9FVkVOVCkpCisrI2RlZmluZSBJQlVTX0VYVEVOU0lPTl9FVkVOVF9HRVRfQ0xBU1Mob2Jq KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAoR19UWVBFX0lOU1RBTkNFX0dF VF9DTEFTUyAoKG9iaiksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElCVVNfVFlQRV9FWFRFTlNJT05fRVZFTlQsICAg ICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzRXh0ZW5z aW9uRXZlbnRDbGFzcykpCisrCisrI2RlZmluZSBJQlVTX1RZUEVfWF9FVkVOVCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoaWJ1c194X2V2ZW50 X2dldF90eXBlICgpKQorLSNkZWZpbmUgSUJVU19YX0VWRU5UKG9iaikgICAgICAgICAgICBcCisr I2RlZmluZSBJQlVTX1hfRVZFTlQob2JqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXAorICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmop LCBJQlVTX1RZUEVfWF9FVkVOVCwgSUJ1c1hFdmVudCkpCistI2RlZmluZSBJQlVTX1hfRVZFTlRf Q0xBU1Moa2xhc3MpICAgIFwKKysjZGVmaW5lIElCVVNfWF9FVkVOVF9DTEFTUyhrbGFzcykgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIChHX1RZUEVfQ0hFQ0tf Q0xBU1NfQ0FTVCAoKGtsYXNzKSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNYRXZlbnRDbGFzcykp CistI2RlZmluZSBJQlVTX0lTX1hfRVZFTlQob2JqKSAgICAgICAgIFwKKysjZGVmaW5lIElCVVNf SVNfWF9FVkVOVChvYmopICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcCisgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIElCVVNfVFlQRV9Y X0VWRU5UKSkKKy0jZGVmaW5lIElCVVNfSVNfWF9FVkVOVF9DTEFTUyhrbGFzcykgXAorKyNkZWZp bmUgSUJVU19JU19YX0VWRU5UX0NMQVNTKGtsYXNzKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwKKyAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBJQlVT X1RZUEVfWF9FVkVOVCkpCistI2RlZmluZSBJQlVTX1hfRVZFTlRfR0VUX0NMQVNTKG9iaikgIFwK KysjZGVmaW5lIElCVVNfWF9FVkVOVF9HRVRfQ0xBU1Mob2JqKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2Jq KSwgSUJVU19UWVBFX1hfRVZFTlQsIElCdXNYRXZlbnRDbGFzcykpCisgCisgR19CRUdJTl9ERUNM UworIAorK3R5cGVkZWYgc3RydWN0IF9JQnVzUHJvY2Vzc0tleUV2ZW50RGF0YSBJQnVzUHJvY2Vz c0tleUV2ZW50RGF0YTsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0V4dGVuc2lvbkV2ZW50IElCdXNF eHRlbnNpb25FdmVudDsKKyt0eXBlZGVmIHN0cnVjdCBfSUJ1c0V4dGVuc2lvbkV2ZW50Q2xhc3Mg SUJ1c0V4dGVuc2lvbkV2ZW50Q2xhc3M7CisrdHlwZWRlZiBzdHJ1Y3QgX0lCdXNFeHRlbnNpb25F dmVudFByaXZhdGUgSUJ1c0V4dGVuc2lvbkV2ZW50UHJpdmF0ZTsKKyB0eXBlZGVmIHN0cnVjdCBf SUJ1c1hFdmVudCBJQnVzWEV2ZW50OworIHR5cGVkZWYgc3RydWN0IF9JQnVzWEV2ZW50Q2xhc3Mg SUJ1c1hFdmVudENsYXNzOworIHR5cGVkZWYgc3RydWN0IF9JQnVzWEV2ZW50UHJpdmF0ZSBJQnVz WEV2ZW50UHJpdmF0ZTsKKyAKKysvKioKKysgKiBJQnVzUHJvY2Vzc0tleUV2ZW50RGF0YToKKysg KgorKyAqIElCdVByb2Nlc3NLZXlFdmVudERhdGEgcHJvcGVydGllcy4KKysgKi8KKytzdHJ1Y3Qg X0lCdXNQcm9jZXNzS2V5RXZlbnREYXRhIHsKKysgICAgLyo8IHB1YmxpYyA+Ki8KKysgICAgZ3Vp bnQga2V5dmFsOworKyAgICBndWludCBrZXljb2RlOworKyAgICBndWludCBzdGF0ZTsKKyt9Owor KworKy8qKgorKyAqIElCdXNFeHRlbnNpb25FdmVudDoKKysgKgorKyAqIElCdXNFeHRlbnNpb25F dmVudCBwcm9wZXJ0aWVzLgorKyAqLworK3N0cnVjdCBfSUJ1c0V4dGVuc2lvbkV2ZW50IHsKKysg ICAgLyo8IHByaXZhdGUgPiovCisrICAgIElCdXNTZXJpYWxpemFibGUgcGFyZW50OworKyAgICBJ QnVzRXh0ZW5zaW9uRXZlbnRQcml2YXRlICpwcml2OworKworKyAgICAvKiBpbnN0YW5jZSBtZW1i ZXJzICovCisrICAgIC8qPCBwdWJsaWMgPiovCisrfTsKKysKKytzdHJ1Y3QgX0lCdXNFeHRlbnNp b25FdmVudENsYXNzIHsKKysgICAgLyo8IHByaXZhdGUgPiovCisrICAgIElCdXNTZXJpYWxpemFi bGVDbGFzcyBwYXJlbnQ7CisrCisrICAgIC8qIGNsYXNzIG1lbWJlcnMgKi8KKysgICAgLyo8IHB1 YmxpYyA+Ki8KKysKKysgICAgLyo8IHByaXZhdGUgPiovCisrICAgIC8qIHBhZGRpbmcgKi8KKysg ICAgZ3BvaW50ZXIgcGR1bW15WzEwXTsKKyt9OworKworKworK0dUeXBlICAgICAgICAgICAgICBp YnVzX2V4dGVuc2lvbl9ldmVudF9nZXRfdHlwZSAgICAodm9pZCk7CisrCisrLyoqCisrICogaWJ1 c19leHRlbnNpb25fZXZlbnRfbmV3OgorKyAqIEBmaXJzdF9wcm9wZXJ0eV9uYW1lOiBOYW1lIG9m IHRoZSBmaXJzdCBwcm9wZXJ0eS4KKysgKiBALi4uOiB0aGUgTlVMTC10ZXJtaW5hdGVkIGFyZ3Vt ZW50cyBvZiB0aGUgcHJvcGVydGllcyBhbmQgdmFsdWVzLgorKyAqCisrICogQ3JlYXRlIGEgbmV3 ICNJQnVzRXh0ZW5zaW9uRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiBBIG5ld2x5IGFsbG9jYXRl ZCAjSUJ1c0V4dGVuc2lvbkV2ZW50LiBFLmcuCisrICogaWJ1c19leHRlbnNpb25fZXZlbnRfbmV3 ICgibmFtZSIsICJlbW9qaSIsICJpcy1lbmFibGVkIiwgVFJVRSwgTlVMTCk7CisrICovCisrSUJ1 c0V4dGVuc2lvbkV2ZW50ICppYnVzX2V4dGVuc2lvbl9ldmVudF9uZXcgICAgICAgIChjb25zdCBn Y2hhcgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKmZpcnN0X3Byb3BlcnR5X25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOworKworKy8qKgorKyAqIGlidXNfZXh0 ZW5zaW9uX2V2ZW50X2dldF92ZXJzaW9uOgorKyAqIEBldmVudDogQW4gI0lCdXNFeHRlbnNpb25F dmVudC4KKysgKgorKyAqIFJldHVybnM6IFZlcnNpb24gb2YgI0lCdXNFeHRlbnNpb25FdmVudAor KyAqLworK2d1aW50ICAgICAgICAgICAgICBpYnVzX2V4dGVuc2lvbl9ldmVudF9nZXRfdmVyc2lv biAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCk7CisrCisrLyoqCisrICogaWJ1c19leHRlbnNp b25fZXZlbnRfZ2V0X3B1cnBvc2U6CisrICogQGV2ZW50OiBBbiAjSUJ1c0V4dGVuc2lvbkV2ZW50 LgorKyAqCisrICogUmV0dXJuczogbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIGZvciAjSUJ1c1hFdmVu dAorKyAqLworK2NvbnN0IGdjaGFyICogICAgICBpYnVzX2V4dGVuc2lvbl9ldmVudF9nZXRfbmFt ZSAgICAoSUJ1c0V4dGVuc2lvbkV2ZW50ICpldmVudCk7CisrCisrLyoqCisrICogaWJ1c19leHRl bnNpb25fZXZlbnRfaXNfZW5hYmxlZDoKKysgKiBAZXZlbnQ6IEFuICNJQnVzRXh0ZW5zaW9uRXZl bnQuCisrICoKKysgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgZXh0ZW5zaW9uIGlzIGVuYWJsZWQg Zm9yICNJQnVzRXh0ZW5zaW9uRXZlbnQKKysgKi8KKytnYm9vbGVhbiAgICAgICAgICAgaWJ1c19l eHRlbnNpb25fZXZlbnRfaXNfZW5hYmxlZCAgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpOwor KworKy8qKgorKyAqIGlidXNfZXh0ZW5zaW9uX2V2ZW50X2lzX2V4dGVuc2lvbjoKKysgKiBAZXZl bnQ6IEFuICNJQnVzRXh0ZW5zaW9uRXZlbnQuCisrICoKKysgKiBSZXR1cm5zOiAlVFJVRSBpZiB0 aGUgI0lCdXNFeHRlbnNpb25FdmVudCBpcyBjYWxsZWQgYnkgYW4gZXh0ZW5zaW9uLgorKyAqICVG QUxTRSBpZiB0aGUgI0lCdXNFeHRlbnNpb25FdmVudCBpcyBjYWxsZWQgYnkgYW4gYWN0aXZlIGVu Z2luZSBvcgorKyAqIHBhbmVsLgorKyAqIElmIHRoaXMgdmFsdWUgaXMgJVRSVUUsIHRoZSBldmVu dCBpcyBzZW5kIHRvIGlidXMtZGFlbW9uLCBhbiBhY3RpdmUKKysgKiBlbmdpbmUuIElmIGl0J3Mg JUZBTFNFLCB0aGUgZXZlbnQgaXMgc25lZCB0byBpYnVzLWRhZW1vbiwgcGFuZWxzLgorKyAqLwor K2dib29sZWFuICAgICAgICAgICBpYnVzX2V4dGVuc2lvbl9ldmVudF9pc19leHRlbnNpb24KKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKElCdXNF eHRlbnNpb25FdmVudCAqZXZlbnQpOworKworKy8qKgorKyAqIGlidXNfZXh0ZW5zaW9uX2V2ZW50 X2dldF9wYXJhbXM6CisrICogQGV2ZW50OiBBbiAjSUJ1c0V4dGVuc2lvbkV2ZW50LgorKyAqCisr ICogUmV0dXJuczogUGFyYW1ldGVycyB0byBlbmFibGUgdGhlIGV4dGVuc2lvbiBmb3IgI0lCdXNY RXZlbnQKKysgKi8KKytjb25zdCBnY2hhciAqICAgICAgaWJ1c19leHRlbnNpb25fZXZlbnRfZ2V0 X3BhcmFtcyAgKElCdXNFeHRlbnNpb25FdmVudCAqZXZlbnQpOworKworKworKworIHR5cGVkZWYg ZW51bSB7CisgICAgIElCVVNfWF9FVkVOVF9OT1RISU5HICAgICAgICAgICA9IC0xLAorICAgICBJ QlVTX1hfRVZFTlRfS0VZX1BSRVNTICAgICAgICAgPSAwLAorQEAgLTc2LDcgKzIwMSw3IEBAIHR5 cGVkZWYgZW51bSB7CisgICogSUJ1c1hFdmVudDoKKyAgKiBAdHlwZTogZXZlbnQgdHlwZQorICAq CistICogSUJ1c0VuZ2luZSBwcm9wZXJ0aWVzLgorKyAqIElCdXNYRXZlbnQgcHJvcGVydGllcy4K KyAgKi8KKyBzdHJ1Y3QgX0lCdXNYRXZlbnQgeworICAgICAvKjwgcHJpdmF0ZSA+Ki8KK2RpZmYg LS1naXQgYS91aS9ndGszL01ha2VmaWxlLmFtIGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQoraW5kZXgg YmY5Zjk4ZDcuLmFhYmE3YTRkIDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9NYWtlZmlsZS5hbQorKysr IGIvdWkvZ3RrMy9NYWtlZmlsZS5hbQorQEAgLTc4LDYgKzc4LDcgQEAgQU1fVkFMQUZMQUdTID0g XAorIAktLXBrZz1pYnVzLTEuMCBcCisgCS0tcGtnPWNvbmZpZyBcCisgCS0tcGtnPXhpIFwKKysJ LS1wa2c9Z2RrLXdheWxhbmQgXAorIAktLXRhcmdldC1nbGliPSIkKFZBTEFfVEFSR0VUX0dMSUJf VkVSU0lPTikiIFwKKyAJJChOVUxMKQorIAorQEAgLTE3Niw2ICsxNzcsNyBAQCBpYnVzX3VpX2Vt b2ppZXJfVkFMQVNPVVJDRVMgPSAgICAgICAgICAgICAgICAgICBcCisgICAgIGVtb2ppZXIudmFs YSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICBpY29ud2lkZ2V0LnZhbGEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgc2VwYXJhdG9yLnZhbGEgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgIHBhbmdvLnZhbGEgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAkKE5VTEwpCisgaWJ1c191aV9lbW9qaWVyX1NPVVJD RVMgPSAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAkKGlidXNfdWlfZW1vamllcl9WQUxB U09VUkNFUzoudmFsYT0uYykgICAgIFwKK0BAIC0yMTMsNiArMjE1LDcgQEAgaWJ1c19leHRlbnNp b25fZ3RrM19WQUxBU09VUkNFUyA9ICAgICAgICAgICAgICAgXAorICAgICBpY29ud2lkZ2V0LnZh bGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAga2V5YmluZGluZ21hbmFnZXIu dmFsYSAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIHBhbmVsYmluZGluZy52YWxhICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBwYW5nby52YWxhICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKKyAgICAgJChOVUxMKQorIGlidXNfZXh0ZW5zaW9uX2d0azNfU09V UkNFUyA9ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgJChpYnVzX2V4dGVuc2lvbl9ndGszX1ZB TEFTT1VSQ0VTOi52YWxhPS5jKSBcCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEg Yi91aS9ndGszL2Vtb2ppZXIudmFsYQoraW5kZXggMGMwODY1ZjEuLmNkOThjOWQ3IDEwMDY0NAor LS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKKysrKyBiL3VpL2d0azMvZW1vamllci52YWxhCitA QCAtMjI2LDQzICsyMjYsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgeworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorLSAgICBw cml2YXRlIGNsYXNzIEVUaXRsZUxhYmVsQm94IDogR3RrLkhlYWRlckJhciB7CistICAgICAgICBw cml2YXRlIEd0ay5MYWJlbCBtX2xhbmdfbGFiZWw7CistICAgICAgICBwcml2YXRlIEd0ay5MYWJl bCBtX3RpdGxlX2xhYmVsOworLQorLSAgICAgICAgcHVibGljIEVUaXRsZUxhYmVsQm94KHN0cmlu ZyB0aXRsZSkgeworLSAgICAgICAgICAgIEdMaWIuT2JqZWN0KAorLSAgICAgICAgICAgICAgICBu YW1lIDogIklCdXNFbW9qaWVyVGl0bGVMYWJlbEJveCIsCistICAgICAgICAgICAgICAgIHNob3df Y2xvc2VfYnV0dG9uOiB0cnVlLAorLSAgICAgICAgICAgICAgICBkZWNvcmF0aW9uX2xheW91dDog IjpjbG9zZSIsCistICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZQorLSAgICAgICAgICAgICk7 CistICAgICAgICAgICAgdmFyIHZib3ggPSBuZXcgR3RrLkJveChHdGsuT3JpZW50YXRpb24uVkVS VElDQUwsIDApOworLSAgICAgICAgICAgIHNldF9jdXN0b21fdGl0bGUodmJveCk7CistICAgICAg ICAgICAgbV90aXRsZV9sYWJlbCA9IG5ldyBHdGsuTGFiZWwodGl0bGUpOworLSAgICAgICAgICAg IG1fdGl0bGVfbGFiZWwuZ2V0X3N0eWxlX2NvbnRleHQoKS5hZGRfY2xhc3MoR3RrLlNUWUxFX0NM QVNTX1RJVExFKTsKKy0gICAgICAgICAgICB2Ym94LnBhY2tfc3RhcnQobV90aXRsZV9sYWJlbCwg dHJ1ZSwgZmFsc2UsIDApOworLSAgICAgICAgICAgIG1fbGFuZ19sYWJlbCA9IG5ldyBHdGsuTGFi ZWwobnVsbCk7CistICAgICAgICAgICAgbV9sYW5nX2xhYmVsLmdldF9zdHlsZV9jb250ZXh0KCku YWRkX2NsYXNzKAorLSAgICAgICAgICAgICAgICAgICAgR3RrLlNUWUxFX0NMQVNTX1NVQlRJVExF KTsKKy0gICAgICAgICAgICB2Ym94LnBhY2tfc3RhcnQobV9sYW5nX2xhYmVsLCB0cnVlLCBmYWxz ZSwgMCk7CistCistICAgICAgICAgICAgdmFyIG1lbnUgPSBuZXcgR0xpYi5NZW51KCk7CistICAg ICAgICAgICAgbWVudS5hcHBlbmQoXygiU2hvdyBlbW9qaSB2YXJpYW50cyIpLCAid2luLnZhcmlh bnQiKTsKKy0gICAgICAgICAgICB2YXIgbWVudV9idXR0b24gPSBuZXcgR3RrLk1lbnVCdXR0b24o KTsKKy0gICAgICAgICAgICBtZW51X2J1dHRvbi5zZXRfZGlyZWN0aW9uKEd0ay5BcnJvd1R5cGUu Tk9ORSk7CistICAgICAgICAgICAgbWVudV9idXR0b24uc2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VO VEVSKTsKKy0gICAgICAgICAgICBtZW51X2J1dHRvbi5zZXRfbWVudV9tb2RlbChtZW51KTsKKy0g ICAgICAgICAgICBtZW51X2J1dHRvbi5zZXRfdG9vbHRpcF90ZXh0KF8oIk1lbnUiKSk7CistICAg ICAgICAgICAgcGFja19lbmQobWVudV9idXR0b24pOworLSAgICAgICAgfQorLSAgICAgICAgcHVi bGljIG5ldyB2b2lkIHNldF90aXRsZShzdHJpbmcgdGl0bGUpIHsKKy0gICAgICAgICAgICBtX3Rp dGxlX2xhYmVsLnNldF90ZXh0KHRpdGxlKTsKKy0gICAgICAgIH0KKy0gICAgICAgIHB1YmxpYyB2 b2lkIHNldF9sYW5nX2xhYmVsKHN0cmluZyBzdHIpIHsKKy0gICAgICAgICAgICBtX2xhbmdfbGFi ZWwuc2V0X3RleHQoc3RyKTsKKy0gICAgICAgIH0KKy0gICAgfQorICAgICBwcml2YXRlIGNsYXNz IExvYWRQcm9ncmVzc09iamVjdCA6IEdMaWIuT2JqZWN0IHsKKyAgICAgICAgIHB1YmxpYyBMb2Fk UHJvZ3Jlc3NPYmplY3QoKSB7CisgICAgICAgICB9CitAQCAtMjc1LDYgKzIzOCw4IEBAIHB1Ymxp YyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICBC QUNLV0FSRCwKKyAgICAgfQorIAorKyAgICBwdWJsaWMgY29uc3QgdWludCBCVVRUT05fQ0xPU0Vf QlVUVE9OID0gMTAwMDsKKysKKyAgICAgcHJpdmF0ZSBjb25zdCB1aW50IEVNT0pJX0dSSURfUEFH RSA9IDEwOworICAgICBwcml2YXRlIGNvbnN0IHN0cmluZyBFTU9KSV9DQVRFR09SWV9GQVZPUklU RVMgPSBOXygiRmF2b3JpdGVzIik7CisgICAgIHByaXZhdGUgY29uc3Qgc3RyaW5nIEVNT0pJX0NB VEVHT1JZX09USEVSUyA9IE5fKCJPdGhlcnMiKTsKK0BAIC0zMTMsMTEgKzI3OCwxOSBAQCBwdWJs aWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICBwcml2 YXRlIHN0YXRpYyBib29sIG1fc2hvd191bmljb2RlID0gZmFsc2U7CisgICAgIHByaXZhdGUgc3Rh dGljIExvYWRQcm9ncmVzc09iamVjdCBtX3VuaWNvZGVfcHJvZ3Jlc3Nfb2JqZWN0OworICAgICBw cml2YXRlIHN0YXRpYyBib29sIG1fbG9hZGVkX3VuaWNvZGUgPSBmYWxzZTsKKysgICAgcHJpdmF0 ZSBzdGF0aWMgc3RyaW5nIG1fd2FybmluZ19tZXNzYWdlID0gIiI7CisgCisgICAgIHByaXZhdGUg VGhlbWVkUkdCQSBtX3JnYmE7CisgICAgIHByaXZhdGUgR3RrLkJveCBtX3Zib3g7CistICAgIHBy aXZhdGUgRVRpdGxlTGFiZWxCb3ggbV90aXRsZTsKKyAgICAgcHJpdmF0ZSBFRW50cnkgbV9lbnRy eTsKKysgICAgLyogSWYgZW1vamllciBpcyBlbW9qaSBjYXRlZ29yeSBsaXN0IG9yIFVuaWNvZGUg Y2F0ZWdvcnkgbGlzdCwKKysgICAgICogbV9hbm5vdGF0aW9uIGlzICIiIGFuZCBwcmVlZGl0IGlz IGFsc28gIiIuCisrICAgICAqIElmIGVtb2ppZXIgaXMgY2FuZGlkYXRlIG1vZGUsIG1fYW5ub3Rh dGlvbiBpcyBhbiBhbm5vdGF0aW9uIGFuZAorKyAgICAgKiBnZXRfY3VycmVudF9jYW5kaWRhdGUo KSByZXR1cm5zIHRoZSBjdXJyZW50IGVtb2ppLgorKyAgICAgKiBCdXQgdGhlIGN1cnJlbnQgcHJl ZWRpdCBjYW4gYmUgIiIgaW4gY2FuZGlkYXRlIG1vZGUgaW4gY2FzZSB0aGF0CisrICAgICAqIFVu aWNvZGUgY2FuZGlkYXRlIHdpbmRvdyBoYXMgVSswMDAwLgorKyAgICAgKi8KKysgICAgcHJpdmF0 ZSBzdHJpbmcgbV9hbm5vdGF0aW9uID0gIiI7CisgICAgIHByaXZhdGUgc3RyaW5nPyBtX2JhY2t3 YXJkOworICAgICBwcml2YXRlIGludCBtX2JhY2t3YXJkX2luZGV4ID0gLTE7CisgICAgIHByaXZh dGUgRVNjcm9sbGVkV2luZG93PyBtX3Njcm9sbGVkX3dpbmRvdyA9IG51bGw7CitAQCAtMzI2LDgg KzI5OSwyMCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5k b3cgeworICAgICBwcml2YXRlIHN0cmluZyBtX2lucHV0X2NvbnRleHRfcGF0aCA9ICIiOworICAg ICBwcml2YXRlIEdMaWIuTWFpbkxvb3A/IG1fbG9vcDsKKyAgICAgcHJpdmF0ZSBzdHJpbmc/IG1f cmVzdWx0OworLSAgICBwcml2YXRlIHN0cmluZz8gbV91bmljb2RlX3BvaW50ID0gbnVsbDsKKysg ICAgLyogSWYgbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSBpcyB0cnVlLCBlbW9qaWVyIGlz IGNhbmRpZGF0ZSBtb2RlIGFuZAorKyAgICAgKiB0aGUgZW1vamkgbG9va3VwIHdpbmRvdyBpcyB2 aXNpYmxlLgorKyAgICAgKiBJZiBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlIGlzIGZhbHNl LCB0aGUgZW1vamkgbG9va3VwIHdpbmRvdyBpcworKyAgICAgKiBub3QgdmlzaWJsZSBidXQgdGhl IG1vZGUgaXMgbm90IGNsZWFyLgorKyAgICAgKi8KKyAgICAgcHJpdmF0ZSBib29sIG1fY2FuZGlk YXRlX3BhbmVsX2lzX3Zpc2libGU7CisrICAgIC8qIElmIG1fY2FuZGlkYXRlX3BhbmVsX21vZGUg aXMgdHJ1ZSwgZW1vamllciBpcyBjYW5kaWRhdGUgbW9kZSBhbmQKKysgICAgICogaXQgZG9lcyBu b3QgZGVwZW5kIG9uIHdoZXRoZXIgdGhlIHdpbmRvdyBpcyB2aXNpYmxlIG9yIG5vdC4KKysgICAg ICogSS5FLiB0aGUgZmlyc3QgY2FuZGlkYXRlIGRvZXMgbm90IHNob3cgdGhlIGxvb2t1cCB3aW5k b3cgYW5kIHRoZQorKyAgICAgKiBzZWNvbmQgb25lIHNob3dzIHRoZSB3aW5kb3cuCisrICAgICAq IElmIG1fY2FuZGlkYXRlX3BhbmVsX21vZGUgaXMgZmFsc2UsIGVtb2ppZXIgaXMgZW1vamkgY2F0 ZWdvcnkgbGlzdCBvcgorKyAgICAgKiBVbmljb2RlIGNhdGVnb3J5IGxpc3QuCisrICAgICAqLwor KyAgICBwcml2YXRlIGJvb2wgbV9jYW5kaWRhdGVfcGFuZWxfbW9kZTsKKyAgICAgcHJpdmF0ZSBp bnQgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPSAtMTsKKyAgICAgcHJpdmF0ZSBJQnVzLkxvb2t1 cFRhYmxlIG1fbG9va3VwX3RhYmxlOworICAgICBwcml2YXRlIEd0ay5MYWJlbFtdIG1fY2FuZGlk YXRlczsKK0BAIC0zMzcsMjMgKzMyMiwxOCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBH dGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICBwcm90ZWN0ZWQgc3RhdGljIGRvdWJsZSBtX21v dXNlX3g7CisgICAgIHByb3RlY3RlZCBzdGF0aWMgZG91YmxlIG1fbW91c2VfeTsKKyAgICAgcHJp dmF0ZSBHdGsuUHJvZ3Jlc3NCYXIgbV91bmljb2RlX3Byb2dyZXNzX2JhcjsKKysgICAgcHJpdmF0 ZSB1aW50IG1fdW5pY29kZV9wcm9ncmVzc19pZDsKKyAgICAgcHJpdmF0ZSBHdGsuTGFiZWwgbV91 bmljb2RlX3BlcmNlbnRfbGFiZWw7CisgICAgIHByaXZhdGUgZG91YmxlIG1fdW5pY29kZV9wZXJj ZW50OworKyAgICBwcml2YXRlIEdkay5SZWN0YW5nbGUgbV9jdXJzb3JfbG9jYXRpb247CisrICAg IHByaXZhdGUgYm9vbCBtX2lzX3VwX3NpZGVfZG93biA9IGZhbHNlOworKyAgICBwcml2YXRlIHVp bnQgbV9yZWRyYXdfd2luZG93X2lkOworIAorICAgICBwdWJsaWMgc2lnbmFsIHZvaWQgY2FuZGlk YXRlX2NsaWNrZWQodWludCBpbmRleCwgdWludCBidXR0b24sIHVpbnQgc3RhdGUpOworIAorICAg ICBwdWJsaWMgSUJ1c0Vtb2ppZXIoKSB7CisgICAgICAgICBHTGliLk9iamVjdCgKKy0gICAgICAg ICAgICB0eXBlIDogR3RrLldpbmRvd1R5cGUuVE9QTEVWRUwsCistICAgICAgICAgICAgZXZlbnRz IDogR2RrLkV2ZW50TWFzay5LRVlfUFJFU1NfTUFTSyB8CistICAgICAgICAgICAgICAgICAgICAg R2RrLkV2ZW50TWFzay5LRVlfUkVMRUFTRV9NQVNLIHwKKy0gICAgICAgICAgICAgICAgICAgICBH ZGsuRXZlbnRNYXNrLkJVVFRPTl9QUkVTU19NQVNLIHwKKy0gICAgICAgICAgICAgICAgICAgICBH ZGsuRXZlbnRNYXNrLkJVVFRPTl9SRUxFQVNFX01BU0ssCistICAgICAgICAgICAgd2luZG93X3Bv c2l0aW9uIDogR3RrLldpbmRvd1Bvc2l0aW9uLkNFTlRFUiwKKy0gICAgICAgICAgICBpY29uX25h bWU6ICJpYnVzLXNldHVwIiwKKy0gICAgICAgICAgICBhY2NlcHRfZm9jdXMgOiB0cnVlLAorLSAg ICAgICAgICAgIHJlc2l6YWJsZSA6IHRydWUsCistICAgICAgICAgICAgZm9jdXNfdmlzaWJsZSA6 IHRydWUKKysgICAgICAgICAgICB0eXBlIDogR3RrLldpbmRvd1R5cGUuUE9QVVAKKyAgICAgICAg ICk7CisgCisgICAgICAgICAvLyBHTGliLkFjdGlvbkVudHJ5IGFjY2VwdHMgY29uc3QgdmFyaWFi bGVzIG9ubHkuCitAQCAtMzYzLDYgKzM0Myw5IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6 IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgICAgIG5ldyBHTGliLlZhcmlh bnQuYm9vbGVhbihtX3Nob3dfZW1vamlfdmFyaWFudCkpOworICAgICAgICAgYWN0aW9uLmFjdGl2 YXRlLmNvbm5lY3QoY2hlY2tfYWN0aW9uX3ZhcmlhbnRfY2IpOworICAgICAgICAgYWRkX2FjdGlv bihhY3Rpb24pOworKyAgICAgICAgYWN0aW9uID0gbmV3IEdMaWIuU2ltcGxlQWN0aW9uKCJjbG9z ZSIsIG51bGwpOworKyAgICAgICAgYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QoYWN0aW9uX2Nsb3Nl X2NiKTsKKysgICAgICAgIGFkZF9hY3Rpb24oYWN0aW9uKTsKKyAgICAgICAgIGlmIChtX2N1cnJl bnRfbGFuZ19pZCA9PSBudWxsKQorICAgICAgICAgICAgIG1fY3VycmVudF9sYW5nX2lkID0gImVu IjsKKyAgICAgICAgIGlmIChtX2Vtb2ppX2ZvbnRfZmFtaWx5ID09IG51bGwpCitAQCAtNDQ4LDE0 ICs0MzEsMTIgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2lu ZG93IHsKKyAgICAgICAgICAgICAgICAgY3NzX3Byb3ZpZGVyLAorICAgICAgICAgICAgICAgICBH dGsuU1RZTEVfUFJPVklERVJfUFJJT1JJVFlfQVBQTElDQVRJT04pOworIAorLSAgICAgICAgbV90 aXRsZSA9IG5ldyBFVGl0bGVMYWJlbEJveChfKCJFbW9qaSBDaG9pY2UiKSk7CistICAgICAgICBz ZXRfdGl0bGViYXIobV90aXRsZSk7CisgICAgICAgICBtX3Zib3ggPSBuZXcgR3RrLkJveChHdGsu T3JpZW50YXRpb24uVkVSVElDQUwsIDApOworICAgICAgICAgYWRkKG1fdmJveCk7CisgCisgICAg ICAgICBtX2VudHJ5ID0gbmV3IEVFbnRyeSgpOworICAgICAgICAgbV9lbnRyeS5zZXRfcGxhY2Vo b2xkZXJfdGV4dChfKCJUeXBlIGFubm90YXRpb24gb3IgY2hvb3NlIGVtb2ppIikpOworLSAgICAg ICAgbV92Ym94LmFkZChtX2VudHJ5KTsKKysgICAgICAgIC8vbV92Ym94LmFkZChtX2VudHJ5KTsK KyAgICAgICAgIG1fZW50cnkuY2hhbmdlZC5jb25uZWN0KCgpID0+IHsKKyAgICAgICAgICAgICB1 cGRhdGVfY2FuZGlkYXRlX3dpbmRvdygpOworICAgICAgICAgfSk7CitAQCAtNDgwLDEwICs0NjEs MTYgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK KyAgICAgICAgICAgICAgICAgbV9sb29wLnF1aXQoKTsKKyAgICAgICAgIH0pOworIAorKyAgICAg ICAgc2l6ZV9hbGxvY2F0ZS5jb25uZWN0KCh3LCBhKSA9PiB7CisrICAgICAgICAgICAgYWRqdXN0 X3dpbmRvd19wb3NpdGlvbigpOworKyAgICAgICAgfSk7CisrCisgICAgICAgICBjYW5kaWRhdGVf Y2xpY2tlZC5jb25uZWN0KChpLCBiLCBzKSA9PiB7CistICAgICAgICAgICAgY2FuZGlkYXRlX3Bh bmVsX3NlbGVjdF9pbmRleChpKTsKKysgICAgICAgICAgICBpZiAobV9pbnB1dF9jb250ZXh0X3Bh dGggIT0gIiIpCisrICAgICAgICAgICAgICAgIGNhbmRpZGF0ZV9wYW5lbF9zZWxlY3RfaW5kZXgo aSwgYik7CisgICAgICAgICB9KTsKKyAKKysKKyAgICAgICAgIGlmIChtX2Fubm90YXRpb25fdG9f ZW1vamlzX2RpY3QgPT0gbnVsbCkgeworICAgICAgICAgICAgIHJlbG9hZF9lbW9qaV9kaWN0KCk7 CisgICAgICAgICB9CitAQCAtODE0LDYgKzgwMSwxMiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2pp ZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworIAorIAorICAgICBwcml2YXRlIHZvaWQgcmVt b3ZlX2FsbF9jaGlsZHJlbigpIHsKKysgICAgICAgIGlmIChtX2xpc3RfYm94ICE9IG51bGwpIHsK KysgICAgICAgICAgICBmb3JlYWNoIChHdGsuV2lkZ2V0IHcgaW4gbV9saXN0X2JveC5nZXRfY2hp bGRyZW4oKSkgeworKyAgICAgICAgICAgICAgICB3LmRlc3Ryb3koKTsKKysgICAgICAgICAgICB9 CisrICAgICAgICAgICAgbV9saXN0X2JveCA9IG51bGw7CisrICAgICAgICB9CisgICAgICAgICBm b3JlYWNoIChHdGsuV2lkZ2V0IHcgaW4gbV92Ym94LmdldF9jaGlsZHJlbigpKSB7CisgICAgICAg ICAgICAgaWYgKHcubmFtZSA9PSAiSUJ1c0Vtb2ppZXJFbnRyeSIgfHwKKyAgICAgICAgICAgICAg ICAgdy5uYW1lID09ICJJQnVzRW1vamllclRpdGxlTGFiZWxCb3giKSB7CitAQCAtODI0LDE1ICs4 MTcsNDAgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93 IHsKKyAgICAgfQorIAorIAorKyAgICBwcml2YXRlIHZvaWQgY2xhbXBfcGFnZSgpIHsKKysgICAg ICAgIEd0ay5MaXN0Qm94Um93IHJvdzsKKysgICAgICAgIGlmIChtX2NhdGVnb3J5X2FjdGl2ZV9p bmRleCA+PSAwKSB7CisrICAgICAgICAgICAgcm93ID0gbV9saXN0X2JveC5nZXRfcm93X2F0X2lu ZGV4KG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KTsKKysgICAgICAgICAgICBtX2xpc3RfYm94LnNl bGVjdF9yb3cocm93KTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgcm93ID0gbV9s aXN0X2JveC5nZXRfcm93X2F0X2luZGV4KDApOworKyAgICAgICAgfQorKyAgICAgICAgR3RrLkFs bG9jYXRpb24gYWxsb2MgPSB7IDAsIDAsIDAsIDAgfTsKKysgICAgICAgIHJvdy5nZXRfYWxsb2Nh dGlvbihvdXQgYWxsb2MpOworKyAgICAgICAgdmFyIGFkanVzdG1lbnQgPSBtX3Njcm9sbGVkX3dp bmRvdy5nZXRfdmFkanVzdG1lbnQoKTsKKysgICAgICAgIGFkanVzdG1lbnQuY2xhbXBfcGFnZShh bGxvYy55LCBhbGxvYy55ICsgYWxsb2MuaGVpZ2h0KTsKKysgICAgICAgIHJldHVybl92YWxfaWZf ZmFpbChtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA+PSAwLCBmYWxzZSk7CisrICAgICAgICBtX2xv b2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygodWludCltX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCk7 CisrICAgIH0KKysKKysKKyAgICAgcHJpdmF0ZSB2b2lkIHNob3dfY2F0ZWdvcnlfbGlzdCgpIHsK KysgICAgICAgIC8vIERvIG5vdCBjYWxsIHJlbW92ZV9hbGxfY2hpbGRyZW4oKSB0byB3b3JrIGFk anVzdG1lbnQuY2xhbXBfcGFnZSgpCisrICAgICAgICAvLyB3aXRoIFBhZ2VVcC9Eb3duLgorKyAg ICAgICAgLy8gQWZ0ZXIgc2hvd19jYW5kaWRhdGVfcGFuZWwoKSBpcyBjYWxsZWQsIG1fY2F0ZWdv cnlfYWN0aXZlX2luZGV4CisrICAgICAgICAvLyBpcyBzYXZlZCBmb3IgRXNjYXBlIGtleSBidXQg bV9saXN0X2JveCBpcyBudWxsIGJ5CisrICAgICAgICAvLyByZW1vdmVfYWxsX2NoaWxkcmVuKCku CisrICAgICAgICBpZiAobV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPj0gMCAmJiBtX2xpc3RfYm94 ICE9IG51bGwpIHsKKysgICAgICAgICAgICB2YXIgcm93ID0gbV9saXN0X2JveC5nZXRfcm93X2F0 X2luZGV4KG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KTsKKysgICAgICAgICAgICBtX2xpc3RfYm94 LnNlbGVjdF9yb3cocm93KTsKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrICAg ICAgICBpZiAobV9jYXRlZ29yeV9hY3RpdmVfaW5kZXggPCAwKQorKyAgICAgICAgICAgIG1fY2F0 ZWdvcnlfYWN0aXZlX2luZGV4ID0gMDsKKyAgICAgICAgIHJlbW92ZV9hbGxfY2hpbGRyZW4oKTsK KyAgICAgICAgIG1fc2Nyb2xsZWRfd2luZG93ID0gbmV3IEVTY3JvbGxlZFdpbmRvdygpOworICAg ICAgICAgc2V0X2ZpeGVkX3NpemUoKTsKKyAKKy0gICAgICAgIG1fdGl0bGUuc2V0X3RpdGxlKF8o IkVtb2ppIENob2ljZSIpKTsKKy0gICAgICAgIHN0cmluZyBsYW5ndWFnZSA9CistICAgICAgICAg ICAgSUJ1cy5nZXRfbGFuZ3VhZ2VfbmFtZShtX2N1cnJlbnRfbGFuZ19pZCk7CistICAgICAgICBt X3RpdGxlLnNldF9sYW5nX2xhYmVsKGxhbmd1YWdlKTsKKyAgICAgICAgIG1fdmJveC5hZGQobV9z Y3JvbGxlZF93aW5kb3cpOworICAgICAgICAgR3RrLlZpZXdwb3J0IHZpZXdwb3J0ID0gbmV3IEd0 ay5WaWV3cG9ydChudWxsLCBudWxsKTsKKyAgICAgICAgIG1fc2Nyb2xsZWRfd2luZG93LmFkZCh2 aWV3cG9ydCk7CitAQCAtODQyLDUzICs4NjAsMjEgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgIEd0ay5BZGp1c3RtZW50IGFkanVz dG1lbnQgPSBtX3Njcm9sbGVkX3dpbmRvdy5nZXRfdmFkanVzdG1lbnQoKTsKKyAgICAgICAgIG1f bGlzdF9ib3guc2V0X2FkanVzdG1lbnQoYWRqdXN0bWVudCk7CisgICAgICAgICBtX2xpc3RfYm94 LnJvd19hY3RpdmF0ZWQuY29ubmVjdCgoYm94LCBndGtyb3cpID0+IHsKKy0gICAgICAgICAgICBt X2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IC0xOworKyAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0 aXZlX2luZGV4ID0gZ3Rrcm93LmdldF9pbmRleCgpOworICAgICAgICAgICAgIEVCb3hSb3cgcm93 ID0gZ3Rrcm93IGFzIEVCb3hSb3c7CisgICAgICAgICAgICAgc2hvd19lbW9qaV9mb3JfY2F0ZWdv cnkocm93LnRleHQpOworKyAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAgICB9KTsKKyAK Ky0gICAgICAgIHVpbnQgbiA9IDA7CistICAgICAgICBpZiAobV9mYXZvcml0ZXMubGVuZ3RoID4g MCkgeworLSAgICAgICAgICAgIEVCb3hSb3cgcm93ID0gbmV3IEVCb3hSb3coRU1PSklfQ0FURUdP UllfRkFWT1JJVEVTKTsKKy0gICAgICAgICAgICBFUGFkZGVkTGFiZWxCb3ggd2lkZ2V0ID0KKy0g ICAgICAgICAgICAgICAgICAgIG5ldyBFUGFkZGVkTGFiZWxCb3goXyhFTU9KSV9DQVRFR09SWV9G QVZPUklURVMpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsu QWxpZ24uQ0VOVEVSKTsKKy0gICAgICAgICAgICByb3cuYWRkKHdpZGdldCk7CistICAgICAgICAg ICAgbV9saXN0X2JveC5hZGQocm93KTsKKy0gICAgICAgICAgICBpZiAobisrID09IG1fY2F0ZWdv cnlfYWN0aXZlX2luZGV4KQorLSAgICAgICAgICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3co cm93KTsKKy0gICAgICAgIH0KKy0gICAgICAgIEdMaWIuTGlzdDx1bm93bmVkIHN0cmluZz4gY2F0 ZWdvcmllcyA9CistICAgICAgICAgICAgICAgIG1fY2F0ZWdvcnlfdG9fZW1vamlzX2RpY3QuZ2V0 X2tleXMoKTsKKy0gICAgICAgIC8vIEZJWE1FOiBIb3cgdG8gY2FzdCBHTGliLkNvbXBhcmVGdW5j PHN0cmluZz4gdG8gc3RyY21wPworLSAgICAgICAgY2F0ZWdvcmllcy5zb3J0KChhLCBiKSA9PiB7 CistICAgICAgICAgICAgaWYgKGEgPT0gRU1PSklfQ0FURUdPUllfT1RIRVJTICYmIGIgIT0gRU1P SklfQ0FURUdPUllfT1RIRVJTKQorLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKKy0gICAgICAg ICAgICBlbHNlIGlmIChhICE9IEVNT0pJX0NBVEVHT1JZX09USEVSUyAmJiBiID09IEVNT0pJX0NB VEVHT1JZX09USEVSUykKKy0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOworLSAgICAgICAgICAg IHJldHVybiBHTGliLnN0cmNtcChfKGEpLCBfKGIpKTsKKy0gICAgICAgIH0pOworLSAgICAgICAg Zm9yZWFjaCAodW5vd25lZCBzdHJpbmcgY2F0ZWdvcnkgaW4gY2F0ZWdvcmllcykgeworLSAgICAg ICAgICAgIC8vICJPdGhlcnMiIGNhdGVnb3J5IGluY2x1ZGVzIG5leHQgdW5pY29kZSBjaGFycyBh bmQgZm9udHMgZG8gbm90IHN1cHBvcnQKKy0gICAgICAgICAgICAvLyB0aGUgYmFzZSBhbmQgdmFy aW50cyB5ZXQuCistICAgICAgICAgICAgaWYgKGNhdGVnb3J5ID09IEVNT0pJX0NBVEVHT1JZX09U SEVSUykKKy0gICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIHVpbnQgbmNhbmRpZGF0 ZXMgPSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKKysgICAgICAg IGZvciAodWludCBpID0gMDsgaSA8IG5jYW5kaWRhdGVzOyBpKyspIHsKKysgICAgICAgICAgICBz dHJpbmcgY2F0ZWdvcnkgPSBtX2xvb2t1cF90YWJsZS5nZXRfY2FuZGlkYXRlKGkpLnRleHQ7Cisg ICAgICAgICAgICAgRUJveFJvdyByb3cgPSBuZXcgRUJveFJvdyhjYXRlZ29yeSk7CisgICAgICAg ICAgICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9CisgICAgICAgICAgICAgICAgICAgICBuZXcg RVBhZGRlZExhYmVsQm94KF8oY2F0ZWdvcnkpLCBHdGsuQWxpZ24uQ0VOVEVSKTsKKyAgICAgICAg ICAgICByb3cuYWRkKHdpZGdldCk7CisgICAgICAgICAgICAgbV9saXN0X2JveC5hZGQocm93KTsK Ky0gICAgICAgICAgICBpZiAobisrID09IG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KQorLSAgICAg ICAgICAgICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKKy0gICAgICAgIH0KKy0gICAg ICAgIGlmIChtX3VuaWNvZGVfYmxvY2tfbGlzdC5sZW5ndGgoKSA+IDApIHsKKy0gICAgICAgICAg ICBFQm94Um93IHJvdyA9IG5ldyBFQm94Um93KEVNT0pJX0NBVEVHT1JZX1VOSUNPREUpOworLSAg ICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPQorLSAgICAgICAgICAgICAgICAgICAg bmV3IEVQYWRkZWRMYWJlbEJveChfKEVNT0pJX0NBVEVHT1JZX1VOSUNPREUpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuQWxpZ24uQ0VOVEVSKTsKKy0gICAg ICAgICAgICByb3cuYWRkKHdpZGdldCk7CistICAgICAgICAgICAgbV9saXN0X2JveC5hZGQocm93 KTsKKy0gICAgICAgICAgICBpZiAobisrID09IG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KQorKyAg ICAgICAgICAgIGlmIChpID09IG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4KQorICAgICAgICAgICAg ICAgICBtX2xpc3RfYm94LnNlbGVjdF9yb3cocm93KTsKKyAgICAgICAgIH0KKyAKK0BAIC05MDMs NiArODg5LDcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2lu ZG93IHsKKyAgICAgcHJpdmF0ZSB2b2lkIHNob3dfZW1vamlfZm9yX2NhdGVnb3J5KHN0cmluZyBj YXRlZ29yeSkgeworICAgICAgICAgaWYgKGNhdGVnb3J5ID09IEVNT0pJX0NBVEVHT1JZX0ZBVk9S SVRFUykgeworICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmNsZWFyKCk7CisrICAgICAgICAg ICAgbV9jYW5kaWRhdGVfcGFuZWxfbW9kZSA9IHRydWU7CisgICAgICAgICAgICAgZm9yZWFjaCAo dW5vd25lZCBzdHJpbmcgZmF2b3JhdGUgaW4gbV9mYXZvcml0ZXMpIHsKKyAgICAgICAgICAgICAg ICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKGZhdm9yYXRlKTsK KyAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuYXBwZW5kX2NhbmRpZGF0ZSh0ZXh0KTsK K0BAIC05MTEsMjUgKzg5OCwyNiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgeworICAgICAgICAgfSBlbHNlIGlmIChjYXRlZ29yeSA9PSBFTU9KSV9D QVRFR09SWV9VTklDT0RFKSB7CisgICAgICAgICAgICAgbV9jYXRlZ29yeV9hY3RpdmVfaW5kZXgg PSAtMTsKKyAgICAgICAgICAgICBtX3Nob3dfdW5pY29kZSA9IHRydWU7CistICAgICAgICAgICAg c2hvd191bmljb2RlX2Jsb2NrcygpOworKyAgICAgICAgICAgIHVwZGF0ZV91bmljb2RlX2Jsb2Nr cygpOworICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg ICAgdW5vd25lZCBHTGliLlNMaXN0PHVub3duZWQgc3RyaW5nPiBlbW9qaXMgPQorICAgICAgICAg ICAgICAgICAgICAgbV9jYXRlZ29yeV90b19lbW9qaXNfZGljdC5sb29rdXAoY2F0ZWdvcnkpOwor ICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmNsZWFyKCk7CisrICAgICAgICAgICAgbV9jYW5k aWRhdGVfcGFuZWxfbW9kZSA9IHRydWU7CisgICAgICAgICAgICAgZm9yZWFjaCAodW5vd25lZCBz dHJpbmcgZW1vamkgaW4gZW1vamlzKSB7CisgICAgICAgICAgICAgICAgIElCdXMuVGV4dCB0ZXh0 ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZyhlbW9qaSk7CisgICAgICAgICAgICAgICAgIG1f bG9va3VwX3RhYmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7CisgICAgICAgICAgICAgfQorICAg ICAgICAgICAgIG1fYmFja3dhcmQgPSBjYXRlZ29yeTsKKyAgICAgICAgIH0KKysgICAgICAgIG1f YW5ub3RhdGlvbiA9IG1fbG9va3VwX3RhYmxlLmdldF9jYW5kaWRhdGUoMCkudGV4dDsKKyAgICAg ICAgIC8vIFJlc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbiBiZWZvcmUgdGhlIHNwZWNpYWwgdGFi bGUgb2YKKyAgICAgICAgIC8vIGVtb2ppIHZhcmlhbnRzIGlzIHNob3duLgorICAgICAgICAgaWYg KG1fYmFja3dhcmRfaW5kZXggPj0gMCkgeworICAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLnNl dF9jdXJzb3JfcG9zKCh1aW50KW1fYmFja3dhcmRfaW5kZXgpOworICAgICAgICAgICAgIG1fYmFj a3dhcmRfaW5kZXggPSAtMTsKKyAgICAgICAgIH0KKy0gICAgICAgIHNob3dfY2FuZGlkYXRlX3Bh bmVsKCk7CisgICAgIH0KKyAKKyAKK0BAIC05NDAsMTggKzkyOCwyOCBAQCBwdWJsaWMgY2xhc3Mg SUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgIElCdXMu VGV4dCB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZyhlbW9qaSk7CisgICAgICAgICAg ICAgbV9sb29rdXBfdGFibGUuYXBwZW5kX2NhbmRpZGF0ZSh0ZXh0KTsKKyAgICAgICAgIH0KKy0g ICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7CisgICAgIH0KKyAKKyAKKyAgICAgcHJpdmF0 ZSB2b2lkIHNob3dfdW5pY29kZV9ibG9ja3MoKSB7CisrICAgICAgICAvLyBEbyBub3QgY2FsbCBy ZW1vdmVfYWxsX2NoaWxkcmVuKCkgdG8gd29yayBhZGp1c3RtZW50LmNsYW1wX3BhZ2UoKQorKyAg ICAgICAgLy8gd2l0aCBQYWdlVXAvRG93bi4KKysgICAgICAgIC8vIEFmdGVyIHNob3dfY2FuZGlk YXRlX3BhbmVsKCkgaXMgY2FsbGVkLCBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleAorKyAgICAgICAg Ly8gaXMgc2F2ZWQgZm9yIEVzY2FwZSBrZXkgYnV0IG1fbGlzdF9ib3ggaXMgbnVsbCBieQorKyAg ICAgICAgLy8gcmVtb3ZlX2FsbF9jaGlsZHJlbigpLgorKyAgICAgICAgaWYgKG1fY2F0ZWdvcnlf YWN0aXZlX2luZGV4ID49IDAgJiYgbV9saXN0X2JveCAhPSBudWxsKSB7CisrICAgICAgICAgICAg dmFyIHJvdyA9IG1fbGlzdF9ib3guZ2V0X3Jvd19hdF9pbmRleChtX2NhdGVnb3J5X2FjdGl2ZV9p bmRleCk7CisrICAgICAgICAgICAgbV9saXN0X2JveC5zZWxlY3Rfcm93KHJvdyk7CisrICAgICAg ICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKG1fY2F0ZWdvcnlfYWN0aXZl X2luZGV4IDwgMCkKKysgICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCA9IDA7Cisg ICAgICAgICBtX3Nob3dfdW5pY29kZSA9IHRydWU7CisgICAgICAgICBpZiAobV9kZWZhdWx0X3dp bmRvd193aWR0aCA9PSAwICYmIG1fZGVmYXVsdF93aW5kb3dfaGVpZ2h0ID09IDApCisgICAgICAg ICAgICAgZ2V0X3NpemUob3V0IG1fZGVmYXVsdF93aW5kb3dfd2lkdGgsIG91dCBtX2RlZmF1bHRf d2luZG93X2hlaWdodCk7CisgICAgICAgICByZW1vdmVfYWxsX2NoaWxkcmVuKCk7CisgICAgICAg ICBzZXRfZml4ZWRfc2l6ZSgpOworIAorLSAgICAgICAgbV90aXRsZS5zZXRfdGl0bGUoXygiVW5p Y29kZSBDaG9pY2UiKSk7CisgICAgICAgICBFUGFkZGVkTGFiZWxCb3ggbGFiZWwgPQorICAgICAg ICAgICAgICAgICBuZXcgRVBhZGRlZExhYmVsQm94KF8oIkJyaW5nIGJhY2sgZW1vamkgY2hvaWNl IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3RrLkFsaWduLkNFTlRF UiwKK0BAIC05NjQsMTAgKzk2MiwxMCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsu QXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4 ID0gLTE7CisgICAgICAgICAgICAgbV9zaG93X3VuaWNvZGUgPSBmYWxzZTsKKyAgICAgICAgICAg ICBoaWRlX2NhbmRpZGF0ZV9wYW5lbCgpOworKyAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICB9KTsKKyAgICAgICAgIG1fc2Nyb2xsZWRf d2luZG93ID0gbmV3IEVTY3JvbGxlZFdpbmRvdygpOworLSAgICAgICAgbV90aXRsZS5zZXRfbGFu Z19sYWJlbCgiIik7CisgICAgICAgICBtX3Zib3guYWRkKG1fc2Nyb2xsZWRfd2luZG93KTsKKyAg ICAgICAgIEd0ay5WaWV3cG9ydCB2aWV3cG9ydCA9IG5ldyBHdGsuVmlld3BvcnQobnVsbCwgbnVs bCk7CisgICAgICAgICBtX3Njcm9sbGVkX3dpbmRvdy5hZGQodmlld3BvcnQpOworQEAgLTk3Nyw5 ICs5NzUsMTAgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2lu ZG93IHsKKyAgICAgICAgIEd0ay5BZGp1c3RtZW50IGFkanVzdG1lbnQgPSBtX3Njcm9sbGVkX3dp bmRvdy5nZXRfdmFkanVzdG1lbnQoKTsKKyAgICAgICAgIG1fbGlzdF9ib3guc2V0X2FkanVzdG1l bnQoYWRqdXN0bWVudCk7CisgICAgICAgICBtX2xpc3RfYm94LnJvd19hY3RpdmF0ZWQuY29ubmVj dCgoYm94LCBndGtyb3cpID0+IHsKKy0gICAgICAgICAgICBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRl eCA9IC0xOworKyAgICAgICAgICAgIG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID0gZ3Rrcm93Lmdl dF9pbmRleCgpOworICAgICAgICAgICAgIEVCb3hSb3cgcm93ID0gZ3Rrcm93IGFzIEVCb3hSb3c7 CisgICAgICAgICAgICAgc2hvd191bmljb2RlX2Zvcl9ibG9jayhyb3cudGV4dCk7CisrICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKKyAgICAgICAgIH0pOworIAorICAgICAgICAg dWludCBuID0gMDsKK0BAIC0xMDA3LDQ0ICsxMDA2LDE4IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1v amllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgbV9saXN0X2JveC51 bnNlbGVjdF9hbGwoKTsKKyAgICAgICAgIG1fbGlzdF9ib3guaW52YWxpZGF0ZV9maWx0ZXIoKTsK KyAgICAgICAgIG1fbGlzdF9ib3guc2V0X3NlbGVjdGlvbl9tb2RlKEd0ay5TZWxlY3Rpb25Nb2Rl LlNJTkdMRSk7CisrICAgICAgICBHdGsuTGlzdEJveFJvdyByb3cgPSBtX2xpc3RfYm94LmdldF9y b3dfYXRfaW5kZXgoKGludCluIC0gMSk7CisrCisrICAgICAgICAvLyBJZiBjbGFtcF9wYWdlKCkg d291bGQgYmUgY2FsbGVkIHdpdGhvdXQgdGhlIGFsbG9jYXRpb24gc2lnbmFsLAorKyAgICAgICAg Ly8gdGhlIGp1bXBpbmcgcGFnZSBjb3VsZCBiZSBmYWlsZWQgd2hlbiByZXR1cm5zIGZyb20gCisr ICAgICAgICAvLyBzaG93X3VuaWNvZGVfZm9yX2Jsb2NrKCkgd2l0aCBFc2NhcGUga2V5LgorKyAg ICAgICAgcm93LnNpemVfYWxsb2NhdGUuY29ubmVjdCgodywgYSkgPT4geworKyAgICAgICAgICAg IGNsYW1wX3BhZ2UoKTsKKysgICAgICAgIH0pOworICAgICB9CisgCisrCisgICAgIHByaXZhdGUg dm9pZCBzaG93X3VuaWNvZGVfZm9yX2Jsb2NrKHN0cmluZyBibG9ja19uYW1lKSB7CistICAgICAg ICBpZiAoIW1fbG9hZGVkX3VuaWNvZGUpIHsKKy0gICAgICAgICAgICByZW1vdmVfYWxsX2NoaWxk cmVuKCk7CistICAgICAgICAgICAgc2V0X2ZpeGVkX3NpemUoKTsKKy0gICAgICAgICAgICBtX3Vu aWNvZGVfcHJvZ3Jlc3NfYmFyID0gbmV3IEd0ay5Qcm9ncmVzc0JhcigpOworLSAgICAgICAgICAg IG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2V0X2VsbGlwc2l6ZShQYW5nby5FbGxpcHNpemVNb2Rl Lk1JRERMRSk7CistICAgICAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX2Jhci5zZXRfaGFsaWdu KEd0ay5BbGlnbi5DRU5URVIpOworLSAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIu c2V0X3ZhbGlnbihHdGsuQWxpZ24uQ0VOVEVSKTsKKy0gICAgICAgICAgICBtX3Zib3guYWRkKG1f dW5pY29kZV9wcm9ncmVzc19iYXIpOworLSAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19i YXIuc2hvdygpOworLSAgICAgICAgICAgIHZhciBoYm94ID0gbmV3IEd0ay5Cb3goR3RrLk9yaWVu dGF0aW9uLkhPUklaT05UQUwsIDUpOworLSAgICAgICAgICAgIGhib3guc2V0X2hhbGlnbihHdGsu QWxpZ24uQ0VOVEVSKTsKKy0gICAgICAgICAgICBoYm94LnNldF92YWxpZ24oR3RrLkFsaWduLkNF TlRFUik7CistICAgICAgICAgICAgbV92Ym94LmFkZChoYm94KTsKKy0gICAgICAgICAgICB2YXIg bGFiZWwgPSBuZXcgR3RrLkxhYmVsKF8oIkxvYWRpbmcgYSBVbmljb2RlIGRpY3Rpb25hcnk6Iikp OworLSAgICAgICAgICAgIGhib3gucGFja19zdGFydChsYWJlbCwgZmFsc2UsIHRydWUsIDApOwor LSAgICAgICAgICAgIG1fdW5pY29kZV9wZXJjZW50X2xhYmVsID0gbmV3IEd0ay5MYWJlbCgiIik7 CistICAgICAgICAgICAgaGJveC5wYWNrX3N0YXJ0KG1fdW5pY29kZV9wZXJjZW50X2xhYmVsLCBm YWxzZSwgdHJ1ZSwgMCk7CistICAgICAgICAgICAgaGJveC5zaG93X2FsbCgpOworLQorLSAgICAg ICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19vYmplY3QuZGVzZXJpYWxpemVfdW5pY29kZS5jb25u ZWN0KChpLCBuKSA9PiB7CistICAgICAgICAgICAgICAgIG1fdW5pY29kZV9wZXJjZW50ID0gKGRv dWJsZSlpIC8gbjsKKy0gICAgICAgICAgICB9KTsKKy0gICAgICAgICAgICBHTGliLlRpbWVvdXQu YWRkKDEwMCwgKCkgPT4geworLSAgICAgICAgICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFy LnNldF9mcmFjdGlvbihtX3VuaWNvZGVfcGVyY2VudCk7CistICAgICAgICAgICAgICAgIG1fdW5p Y29kZV9wZXJjZW50X2xhYmVsLnNldF90ZXh0KAorLSAgICAgICAgICAgICAgICAgICAgICAgICIl LjBmJSVcbiIucHJpbnRmKG1fdW5pY29kZV9wZXJjZW50ICogMTAwKSk7CistICAgICAgICAgICAg ICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2hvdygpOworLSAgICAgICAgICAgICAgICBtX3Vu aWNvZGVfcGVyY2VudF9sYWJlbC5zaG93KCk7CistICAgICAgICAgICAgICAgIGlmIChtX2xvYWRl ZF91bmljb2RlKSB7CistICAgICAgICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfZm9yX2Jsb2Nr KGJsb2NrX25hbWUpOworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIHJldHVy biAhbV9sb2FkZWRfdW5pY29kZTsKKy0gICAgICAgICAgICB9KTsKKy0gICAgICAgICAgICByZXR1 cm47CistICAgICAgICB9CisgICAgICAgICB1bmljaGFyIHN0YXJ0ID0gMDsKKyAgICAgICAgIHVu aWNoYXIgZW5kID0gMDsKKyAgICAgICAgIGZvcmVhY2ggKHVub3duZWQgSUJ1cy5Vbmljb2RlQmxv Y2sgYmxvY2sgaW4gbV91bmljb2RlX2Jsb2NrX2xpc3QpIHsKK0BAIC0xMDU1LDYgKzEwMjgsNyBA QCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAg ICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIG1fbG9va3VwX3RhYmxlLmNsZWFyKCk7 CisrICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlID0gdHJ1ZTsKKyAgICAgICAgIGZvciAo dW5pY2hhciBjaCA9IHN0YXJ0OyBjaCA8IGVuZDsgY2grKykgeworICAgICAgICAgICAgIHVub3du ZWQgSUJ1cy5Vbmljb2RlRGF0YT8gZGF0YSA9CisgICAgICAgICAgICAgICAgICAgICBtX3VuaWNv ZGVfdG9fZGF0YV9kaWN0Lmxvb2t1cChjaCk7CitAQCAtMTA2NCw3ICsxMDM4LDcgQEAgcHVibGlj IGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgICAg ICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOworICAgICAgICAgfQorICAg ICAgICAgbV9iYWNrd2FyZCA9IGJsb2NrX25hbWU7CistICAgICAgICBzaG93X2NhbmRpZGF0ZV9w YW5lbCgpOworKyAgICAgICAgbV9hbm5vdGF0aW9uID0gbV9sb29rdXBfdGFibGUuZ2V0X2NhbmRp ZGF0ZSgwKS50ZXh0OworICAgICB9CisgCisgCitAQCAtMTA5MSw2ICsxMDY1LDQxIEBAIHB1Ymxp YyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICBw cmV2X2J1dHRvbi5zZXRfcmVsaWVmKEd0ay5SZWxpZWZTdHlsZS5OT05FKTsKKyAgICAgICAgIHBy ZXZfYnV0dG9uLnNldF90b29sdGlwX3RleHQoXygiUGFnZSBVcCIpKTsKKyAKKysgICAgICAgIHZh ciBtZW51ID0gbmV3IEdMaWIuTWVudSgpOworKyAgICAgICAgbWVudS5hcHBlbmQoXygiU2hvdyBl bW9qaSB2YXJpYW50cyIpLCAid2luLnZhcmlhbnQiKTsKKysgICAgICAgIG1lbnUuYXBwZW5kKF8o IkNsb3NlIiksICJ3aW4uY2xvc2UiKTsKKysgICAgICAgIHZhciBtZW51X2J1dHRvbiA9IG5ldyBH dGsuTWVudUJ1dHRvbigpOworKyAgICAgICAgbWVudV9idXR0b24uc2V0X2RpcmVjdGlvbihHdGsu QXJyb3dUeXBlLk5PTkUpOworKyAgICAgICAgbWVudV9idXR0b24uc2V0X3ZhbGlnbihHdGsuQWxp Z24uQ0VOVEVSKTsKKysgICAgICAgIG1lbnVfYnV0dG9uLnNldF9tZW51X21vZGVsKG1lbnUpOwor KyAgICAgICAgbWVudV9idXR0b24uc2V0X3JlbGllZihHdGsuUmVsaWVmU3R5bGUuTk9ORSk7Cisr ICAgICAgICBtZW51X2J1dHRvbi5zZXRfdG9vbHRpcF90ZXh0KF8oIk1lbnUiKSk7CisrCisrICAg ICAgICBJQnVzLlRleHQgdGV4dCA9IHRoaXMuZ2V0X3RpdGxlX3RleHQoKTsKKysgICAgICAgIFBh bmdvLkF0dHJMaXN0IGF0dHJzID0gZ2V0X3BhbmdvX2F0dHJfbGlzdF9mcm9tX2lidXNfdGV4dCh0 ZXh0KTsKKysgICAgICAgIEd0ay5MYWJlbCB0aXRsZV9sYWJlbCA9IG5ldyBHdGsuTGFiZWwodGV4 dC5nZXRfdGV4dCgpKTsKKysgICAgICAgIHRpdGxlX2xhYmVsLnNldF9hdHRyaWJ1dGVzKGF0dHJz KTsKKysKKysgICAgICAgIEd0ay5CdXR0b24/IHdhcm5pbmdfYnV0dG9uID0gbnVsbDsKKysgICAg ICAgIGlmIChtX3dhcm5pbmdfbWVzc2FnZSAhPSAiIikgeyAKKysgICAgICAgICAgICB3YXJuaW5n X2J1dHRvbiA9IG5ldyBHdGsuQnV0dG9uKCk7CisrICAgICAgICAgICAgd2FybmluZ19idXR0b24u c2V0X3Rvb2x0aXBfdGV4dCgKKysgICAgICAgICAgICAgICAgICAgIF8oIkNsaWNrIHRvIHZpZXcg YSB3YXJuaW5nIG1lc3NhZ2UiKSk7CisrICAgICAgICAgICAgd2FybmluZ19idXR0b24uc2V0X2lt YWdlKG5ldyBHdGsuSW1hZ2UuZnJvbV9pY29uX25hbWUoCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJkaWFsb2ctd2FybmluZyIsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIEd0ay5JY29uU2l6ZS5NRU5VKSk7CisrICAgICAgICAgICAgd2FybmluZ19idXR0 b24uc2V0X3JlbGllZihHdGsuUmVsaWVmU3R5bGUuTk9ORSk7CisrICAgICAgICAgICAgd2Fybmlu Z19idXR0b24uY2xpY2tlZC5jb25uZWN0KCgpID0+IHsKKysgICAgICAgICAgICAgICAgR3RrLkxh YmVsIHdhcm5pbmdfbGFiZWwgPSBuZXcgR3RrLkxhYmVsKG1fd2FybmluZ19tZXNzYWdlKTsKKysg ICAgICAgICAgICAgICAgd2FybmluZ19sYWJlbC5zZXRfbGluZV93cmFwKHRydWUpOworKyAgICAg ICAgICAgICAgICB3YXJuaW5nX2xhYmVsLnNldF9tYXhfd2lkdGhfY2hhcnMoNDApOworKyAgICAg ICAgICAgICAgICBHdGsuUG9wb3ZlciBwb3BvdmVyID0gbmV3IEd0ay5Qb3BvdmVyKHdhcm5pbmdf YnV0dG9uKTsKKysgICAgICAgICAgICAgICAgcG9wb3Zlci5hZGQod2FybmluZ19sYWJlbCk7Cisr ICAgICAgICAgICAgICAgIHBvcG92ZXIuc2hvd19hbGwoKTsKKysgICAgICAgICAgICAgICAgcG9w b3Zlci5wb3B1cCgpOworKyAgICAgICAgICAgIH0pOworKyAgICAgICAgfQorKworICAgICAgICAg R3RrLkJveCBidXR0b25zX2hib3ggPSBuZXcgR3RrLkJveChHdGsuT3JpZW50YXRpb24uSE9SSVpP TlRBTCwgMCk7CisgICAgICAgICBHdGsuTGFiZWwgc3RhdGVfbGFiZWwgPSBuZXcgR3RrLkxhYmVs KG51bGwpOworICAgICAgICAgc3RhdGVfbGFiZWwuc2V0X3NpemVfcmVxdWVzdCgxMCwgLTEpOwor QEAgLTEwOTksMTQgKzExMDgsNTUgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFw cGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgIGJ1dHRvbnNfaGJveC5wYWNrX3N0YXJ0KHN0YXRl X2xhYmVsLCBmYWxzZSwgdHJ1ZSwgMCk7CisgICAgICAgICBidXR0b25zX2hib3gucGFja19zdGFy dChwcmV2X2J1dHRvbiwgZmFsc2UsIGZhbHNlLCAwKTsKKyAgICAgICAgIGJ1dHRvbnNfaGJveC5w YWNrX3N0YXJ0KG5leHRfYnV0dG9uLCBmYWxzZSwgZmFsc2UsIDApOworKyAgICAgICAgYnV0dG9u c19oYm94LnBhY2tfc3RhcnQodGl0bGVfbGFiZWwsIGZhbHNlLCBmYWxzZSwgMCk7CisrICAgICAg ICBpZiAod2FybmluZ19idXR0b24gIT0gbnVsbCkKKysgICAgICAgICAgICBidXR0b25zX2hib3gu cGFja19zdGFydCh3YXJuaW5nX2J1dHRvbiwgZmFsc2UsIGZhbHNlLCAwKTsKKysgICAgICAgIGJ1 dHRvbnNfaGJveC5wYWNrX2VuZChtZW51X2J1dHRvbiwgZmFsc2UsIGZhbHNlLCAwKTsKKyAgICAg ICAgIG1fdmJveC5wYWNrX3N0YXJ0KGJ1dHRvbnNfaGJveCwgZmFsc2UsIGZhbHNlLCAwKTsKKyAg ICAgICAgIGJ1dHRvbnNfaGJveC5zaG93X2FsbCgpOworICAgICB9CisgCisgCistICAgIHByaXZh dGUgYm9vbCBjaGVja191bmljb2RlX3BvaW50KCkgeworLSAgICAgICAgc3RyaW5nIGFubm90YXRp b24gPSBtX2VudHJ5LmdldF90ZXh0KCk7CistICAgICAgICBtX3VuaWNvZGVfcG9pbnQgPSBudWxs OworKyAgICBwcml2YXRlIHZvaWQgc2hvd191bmljb2RlX3Byb2dyZXNzX2JhcigpIHsKKysgICAg ICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIgPSBuZXcgR3RrLlByb2dyZXNzQmFyKCk7CisrICAg ICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfYmFyLnNldF9lbGxpcHNpemUoUGFuZ28uRWxsaXBzaXpl TW9kZS5NSURETEUpOworKyAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX2Jhci5zZXRfaGFsaWdu KEd0ay5BbGlnbi5DRU5URVIpOworKyAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX2Jhci5zZXRf dmFsaWduKEd0ay5BbGlnbi5DRU5URVIpOworKyAgICAgICAgbV92Ym94LmFkZChtX3VuaWNvZGVf cHJvZ3Jlc3NfYmFyKTsKKysgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19iYXIuc2hvdygpOwor KyAgICAgICAgdmFyIGhib3ggPSBuZXcgR3RrLkJveChHdGsuT3JpZW50YXRpb24uSE9SSVpPTlRB TCwgNSk7CisrICAgICAgICBoYm94LnNldF9oYWxpZ24oR3RrLkFsaWduLkNFTlRFUik7CisrICAg ICAgICBoYm94LnNldF92YWxpZ24oR3RrLkFsaWduLkNFTlRFUik7CisrICAgICAgICBtX3Zib3gu YWRkKGhib3gpOworKyAgICAgICAgdmFyIGxhYmVsID0gbmV3IEd0ay5MYWJlbChfKCJMb2FkaW5n IGEgVW5pY29kZSBkaWN0aW9uYXJ5OiIpKTsKKysgICAgICAgIGhib3gucGFja19zdGFydChsYWJl bCwgZmFsc2UsIHRydWUsIDApOworKyAgICAgICAgbV91bmljb2RlX3BlcmNlbnRfbGFiZWwgPSBu ZXcgR3RrLkxhYmVsKCIiKTsKKysgICAgICAgIGhib3gucGFja19zdGFydChtX3VuaWNvZGVfcGVy Y2VudF9sYWJlbCwgZmFsc2UsIHRydWUsIDApOworKyAgICAgICAgaGJveC5zaG93X2FsbCgpOwor KworKyAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX29iamVjdC5kZXNlcmlhbGl6ZV91bmljb2Rl LmNvbm5lY3QoKGksIG4pID0+IHsKKysgICAgICAgICAgICBtX3VuaWNvZGVfcGVyY2VudCA9IChk b3VibGUpaSAvIG47CisrICAgICAgICB9KTsKKysgICAgICAgIGlmIChtX3VuaWNvZGVfcHJvZ3Jl c3NfaWQgPiAwKSB7CisrICAgICAgICAgICAgR0xpYi5Tb3VyY2UucmVtb3ZlKG1fdW5pY29kZV9w cm9ncmVzc19pZCk7CisrICAgICAgICB9CisrICAgICAgICBtX3VuaWNvZGVfcHJvZ3Jlc3NfaWQg PSBHTGliLlRpbWVvdXQuYWRkKDEwMCwgKCkgPT4geworKyAgICAgICAgICAgIG1fdW5pY29kZV9w cm9ncmVzc19pZCA9IDA7CisrICAgICAgICAgICAgbV91bmljb2RlX3Byb2dyZXNzX2Jhci5zZXRf ZnJhY3Rpb24obV91bmljb2RlX3BlcmNlbnQpOworKyAgICAgICAgICAgIG1fdW5pY29kZV9wZXJj ZW50X2xhYmVsLnNldF90ZXh0KAorKyAgICAgICAgICAgICAgICAgICAgIiUuMGYlJVxuIi5wcmlu dGYobV91bmljb2RlX3BlcmNlbnQgKiAxMDApKTsKKysgICAgICAgICAgICBtX3VuaWNvZGVfcHJv Z3Jlc3NfYmFyLnNob3coKTsKKysgICAgICAgICAgICBtX3VuaWNvZGVfcGVyY2VudF9sYWJlbC5z aG93KCk7CisrICAgICAgICAgICAgaWYgKG1fbG9hZGVkX3VuaWNvZGUpIHsKKysgICAgICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgcmV0dXJuICFtX2xvYWRlZF91bmljb2RlOworKyAgICAgICAgfSk7CisrICAgIH0KKysKKysK KysgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nPyBjaGVja191bmljb2RlX3BvaW50KHN0cmluZyBh bm5vdGF0aW9uKSB7CisrICAgICAgICBzdHJpbmcgdW5pY29kZV9wb2ludCA9IG51bGw7CisgICAg ICAgICAvLyBBZGQgIjB4IiBiZWNhdXNlIHVpbnQ2NC5hc2NpaV9zdHJ0b3VsbCgpIGlzIG5vdCBh Y2Nlc3NpYmxlCisgICAgICAgICAvLyBhbmQgbmVlZCB0byB1c2UgdWludDY0LnBhcnNlKCkKKyAg ICAgICAgIHZhciBidWZmID0gbmV3IEdMaWIuU3RyaW5nQnVpbGRlcigiMHgiKTsKK0BAIC0xMTE0 LDMzICsxMTY0LDMxIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7CisgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFubm90YXRpb24uY2hhcl9j b3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgICB1bmljaGFyIGNoID0gYW5ub3RhdGlvbi5nZXRf Y2hhcihpKTsKKyAgICAgICAgICAgICBpZiAoY2ggPT0gMCkKKy0gICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICBp ZiAoY2guaXNzcGFjZSgpKSB7CisgICAgICAgICAgICAgICAgIHVuaWNoYXIgY29kZSA9ICh1bmlj aGFyKXVpbnQ2NC5wYXJzZShidWZmLnN0cik7CisgICAgICAgICAgICAgICAgIGJ1ZmYuYXNzaWdu KCIweCIpOworICAgICAgICAgICAgICAgICBpZiAoIWNvZGUudmFsaWRhdGUoKSkKKy0gICAgICAg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBu dWxsOworICAgICAgICAgICAgICAgICByZXR2YWwuYXBwZW5kKGNvZGUudG9fc3RyaW5nKCkpOwor ICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAg aWYgKCFjaC5pc3hkaWdpdCgpKQorLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAg ICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgIGJ1ZmYuYXBwZW5kX3VuaWNo YXIoY2gpOworICAgICAgICAgfQorICAgICAgICAgdW5pY2hhciBjb2RlID0gKHVuaWNoYXIpdWlu dDY0LnBhcnNlKGJ1ZmYuc3RyKTsKKyAgICAgICAgIGlmICghY29kZS52YWxpZGF0ZSgpKQorLSAg ICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAg ICAgIHJldHZhbC5hcHBlbmQoY29kZS50b19zdHJpbmcoKSk7CistICAgICAgICBtX3VuaWNvZGVf cG9pbnQgPSByZXR2YWwuc3RyOworLSAgICAgICAgaWYgKG1fdW5pY29kZV9wb2ludCA9PSBudWxs KQorLSAgICAgICAgICAgIHJldHVybiB0cnVlOworLSAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBu ZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKG1fdW5pY29kZV9wb2ludCk7CistICAgICAgICBtX2xv b2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOworLSAgICAgICAgcmV0dXJuIHRydWU7 CisrICAgICAgICB1bmljb2RlX3BvaW50ID0gcmV0dmFsLnN0cjsKKysgICAgICAgIGlmICh1bmlj b2RlX3BvaW50ID09IG51bGwpCisrICAgICAgICAgICAgcmV0dXJuIG51bGw7CisrICAgICAgICBy ZXR1cm4gdW5pY29kZV9wb2ludDsKKyAgICAgfQorIAorIAorLSAgICBwcml2YXRlIEdMaWIuU0xp c3Q8c3RyaW5nPj8KKysgICAgcHJpdmF0ZSBzdGF0aWMgR0xpYi5TTGlzdDxzdHJpbmc+PworICAg ICBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihzdHJpbmcgYW5ub3RhdGlvbikgeworICAg ICAgICAgR0xpYi5TTGlzdDxzdHJpbmc+PyB0b3RhbF9lbW9qaXMgPSBudWxsOworICAgICAgICAg dW5vd25lZCBHTGliLlNMaXN0PHN0cmluZz4/IHN1Yl9lbW9qaXMgPSBudWxsOworQEAgLTEyMjEs MTkgKzEyNjksMTkgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9u V2luZG93IHsKKyAgICAgICAgIHJldHVybiB0b3RhbF9lbW9qaXM7CisgICAgIH0KKyAKKysKKyAg ICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZV9jYW5kaWRhdGVfd2luZG93KCkgeworLSAgICAgICAgc3Ry aW5nIGFubm90YXRpb24gPSBtX2VudHJ5LmdldF90ZXh0KCk7CisrICAgICAgICBzdHJpbmcgYW5u b3RhdGlvbiA9IG1fYW5ub3RhdGlvbjsKKyAgICAgICAgIGlmIChhbm5vdGF0aW9uLmxlbmd0aCA9 PSAwKSB7CistICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsKKyAgICAgICAgICAg ICBtX2JhY2t3YXJkID0gbnVsbDsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9Cisr ICAgICAgICBtX2xvb2t1cF90YWJsZS5jbGVhcigpOworKyAgICAgICAgbV9jYXRlZ29yeV9hY3Rp dmVfaW5kZXggPSAtMTsKKyAgICAgICAgIGlmIChhbm5vdGF0aW9uLmxlbmd0aCA+IG1fZW1vamlf bWF4X3NlcV9sZW4pIHsKKy0gICAgICAgICAgICBoaWRlX2NhbmRpZGF0ZV9wYW5lbCgpOworICAg ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgIH0KKy0gICAgICAgIC8vIENhbGwgY2hlY2tfdW5p Y29kZV9wb2ludCgpIHRvIGdldCBtX3VuaWNvZGVfcG9pbnQKKy0gICAgICAgIGNoZWNrX3VuaWNv ZGVfcG9pbnQoKTsKKysgICAgICAgIHN0cmluZz8gdW5pY29kZV9wb2ludCA9IGNoZWNrX3VuaWNv ZGVfcG9pbnQoYW5ub3RhdGlvbik7CisgICAgICAgICBHTGliLlNMaXN0PHN0cmluZz4/IHRvdGFs X2Vtb2ppcyA9CisgICAgICAgICAgICAgbG9va3VwX2Vtb2ppc19mcm9tX2Fubm90YXRpb24oYW5u b3RhdGlvbik7CisgICAgICAgICBpZiAodG90YWxfZW1vamlzID09IG51bGwpIHsKK0BAIC0xMjQ2 LDE4ICsxMjk0LDc1IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlv bldpbmRvdyB7CisgICAgICAgICAgICAgYW5ub3RhdGlvbiA9IGFubm90YXRpb24uZG93bigpOwor ICAgICAgICAgICAgIHRvdGFsX2Vtb2ppcyA9IGxvb2t1cF9lbW9qaXNfZnJvbV9hbm5vdGF0aW9u KGFubm90YXRpb24pOworICAgICAgICAgfQorLSAgICAgICAgaWYgKHRvdGFsX2Vtb2ppcyA9PSBu dWxsICYmIG1fdW5pY29kZV9wb2ludCA9PSBudWxsKSB7CistICAgICAgICAgICAgaGlkZV9jYW5k aWRhdGVfcGFuZWwoKTsKKysgICAgICAgIGlmICh0b3RhbF9lbW9qaXMgPT0gbnVsbCAmJiB1bmlj b2RlX3BvaW50ID09IG51bGwpIHsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9Cist ICAgICAgICBtX2xvb2t1cF90YWJsZS5jbGVhcigpOworLSAgICAgICAgLy8gQ2FsbCBjaGVja191 bmljb2RlX3BvaW50KCkgdG8gdXBkYXRlIG1fbG9va3VwX3RhYmxlCistICAgICAgICBjaGVja191 bmljb2RlX3BvaW50KCk7CisrICAgICAgICBpZiAodW5pY29kZV9wb2ludCAhPSBudWxsKSB7Cisr ICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKHVu aWNvZGVfcG9pbnQpOworKyAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmFwcGVuZF9jYW5kaWRh dGUodGV4dCk7CisrICAgICAgICB9CisgICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBl bW9qaSBpbiB0b3RhbF9lbW9qaXMpIHsKKyAgICAgICAgICAgICBJQnVzLlRleHQgdGV4dCA9IG5l dyBJQnVzLlRleHQuZnJvbV9zdHJpbmcoZW1vamkpOworICAgICAgICAgICAgIG1fbG9va3VwX3Rh YmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7CisgICAgICAgICB9CistICAgICAgICBzaG93X2Nh bmRpZGF0ZV9wYW5lbCgpOworKyAgICAgICAgbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSA9 CisrICAgICAgICAgICAgKG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygp ID4gMCkgPyB0cnVlIDogZmFsc2U7CisrICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlID0g dHJ1ZTsKKysgICAgfQorKworKworKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlX2NhdGVnb3J5X2xp c3QoKSB7CisrICAgICAgICAvLyBBbHdheXMgdXBkYXRlIG1fbG9va3VwX3RhYmxlIGV2ZW4gaWYg dGhlIGNvbnRlbnRzIGFyZSBzYW1lCisrICAgICAgICAvLyBiZWNhdXNlIG1fY2F0ZWdvcnlfYWN0 aXZlX2luZGV4IG5lZWRzIHRvIGJlIGtlcHQgYWZ0ZXIKKysgICAgICAgIC8vIGJyaW5nIGJhY2sg dGhpcyBBUEkgZnJvbSBzaG93X2Vtb2ppX2Zvcl9jYXRlZ29yeSgpLgorKyAgICAgICAgcmVzZXRf d2luZG93X21vZGUoKTsKKysgICAgICAgIG1fbG9va3VwX3RhYmxlLmNsZWFyKCk7CisrICAgICAg ICBJQnVzLlRleHQgdGV4dDsKKysgICAgICAgIGlmIChtX2Zhdm9yaXRlcy5sZW5ndGggPiAwKSB7 CisrICAgICAgICAgICAgdGV4dCA9IG5ldyBJQnVzLlRleHQuZnJvbV9zdHJpbmcoRU1PSklfQ0FU RUdPUllfRkFWT1JJVEVTKTsKKysgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2Fu ZGlkYXRlKHRleHQpOworKyAgICAgICAgfQorKyAgICAgICAgR0xpYi5MaXN0PHVub3duZWQgc3Ry aW5nPiBjYXRlZ29yaWVzID0KKysgICAgICAgICAgICAgICAgbV9jYXRlZ29yeV90b19lbW9qaXNf ZGljdC5nZXRfa2V5cygpOworKyAgICAgICAgLy8gRklYTUU6IEhvdyB0byBjYXN0IEdMaWIuQ29t cGFyZUZ1bmM8c3RyaW5nPiB0byBzdHJjbXA/CisrICAgICAgICBjYXRlZ29yaWVzLnNvcnQoKGEs IGIpID0+IHsKKysgICAgICAgICAgICBpZiAoYSA9PSBFTU9KSV9DQVRFR09SWV9PVEhFUlMgJiYg YiAhPSBFTU9KSV9DQVRFR09SWV9PVEhFUlMpCisrICAgICAgICAgICAgICAgIHJldHVybiAxOwor KyAgICAgICAgICAgIGVsc2UgaWYgKGEgIT0gRU1PSklfQ0FURUdPUllfT1RIRVJTICYmIGIgPT0g RU1PSklfQ0FURUdPUllfT1RIRVJTKQorKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisrICAg ICAgICAgICAgcmV0dXJuIEdMaWIuc3RyY21wKF8oYSksIF8oYikpOworKyAgICAgICAgfSk7Cisr ICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBjYXRlZ29yeSBpbiBjYXRlZ29yaWVzKSB7 CisrICAgICAgICAgICAgLy8gIk90aGVycyIgY2F0ZWdvcnkgaW5jbHVkZXMgbmV4dCB1bmljb2Rl IGNoYXJzIGFuZCBmb250cyBkbyBub3QKKysgICAgICAgICAgICAvLyBzdXBwb3J0IHRoZSBiYXNl IGFuZCB2YXJpbnRzIHlldC4KKysgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgPT0gRU1PSklfQ0FU RUdPUllfT1RIRVJTKQorKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgIHRl eHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKGNhdGVnb3J5KTsKKysgICAgICAgICAgICBt X2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOworKyAgICAgICAgfQorKyAgICAg ICAgaWYgKG1fdW5pY29kZV9ibG9ja19saXN0Lmxlbmd0aCgpID4gMCkgeworKyAgICAgICAgICAg IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKEVNT0pJX0NBVEVHT1JZX1VOSUNPREUp OworKyAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmFwcGVuZF9jYW5kaWRhdGUodGV4dCk7Cisr ICAgICAgICB9CisrICAgICAgICAvLyBEbyBub3Qgc2V0IG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4 IHRvIDAgaGVyZSBzbyB0aGF0CisrICAgICAgICAvLyBzaG93X2NhdGVnb3J5X2xpc3QoKSBoYW5k bGVzIGl0LgorKyAgICB9CisrCisrCisrICAgIHByaXZhdGUgdm9pZCB1cGRhdGVfdW5pY29kZV9i bG9ja3MoKSB7CisrICAgICAgICAvLyBBbHdheXMgdXBkYXRlIG1fbG9va3VwX3RhYmxlIGV2ZW4g aWYgdGhlIGNvbnRlbnRzIGFyZSBzYW1lCisrICAgICAgICAvLyBiZWNhdXNlIG1fY2F0ZWdvcnlf YWN0aXZlX2luZGV4IG5lZWRzIHRvIGJlIGtlcHQgYWZ0ZXIKKysgICAgICAgIC8vIGJyaW5nIGJh Y2sgdGhpcyBBUEkgZnJvbSBzaG93X2Vtb2ppX2Zvcl9jYXRlZ29yeSgpLgorKyAgICAgICAgcmVz ZXRfd2luZG93X21vZGUoKTsKKysgICAgICAgIG1fbG9va3VwX3RhYmxlLmNsZWFyKCk7CisrICAg ICAgICBtX3Nob3dfdW5pY29kZSA9IHRydWU7CisrICAgICAgICBmb3JlYWNoICh1bm93bmVkIElC dXMuVW5pY29kZUJsb2NrIGJsb2NrIGluIG1fdW5pY29kZV9ibG9ja19saXN0KSB7CisrICAgICAg ICAgICAgc3RyaW5nIG5hbWUgPSBibG9jay5nZXRfbmFtZSgpOworKyAgICAgICAgICAgIElCdXMu VGV4dCB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZyhuYW1lKTsKKysgICAgICAgICAg ICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOworKyAgICAgICAgfQorKyAg ICAgICAgLy8gRG8gbm90IHNldCBtX2NhdGVnb3J5X2FjdGl2ZV9pbmRleCB0byAwIGhlcmUgc28g dGhhdAorKyAgICAgICAgLy8gc2hvd191bmljb2RlX2Jsb2NrcygpIGhhbmRsZXMgaXQuCisgICAg IH0KKyAKKyAKK0BAIC0xMjgzLDI3ICsxMzg4LDI3IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICB1aW50IHBhZ2Vfc2l6ZSA9IG1f bG9va3VwX3RhYmxlLmdldF9wYWdlX3NpemUoKTsKKyAgICAgICAgIHVpbnQgbmNhbmRpZGF0ZXMg PSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKKyAgICAgICAgIHVp bnQgY3Vyc29yID0gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNvcl9wb3MoKTsKKy0KKyAgICAgICAg IHVpbnQgcGFnZV9zdGFydF9wb3MgPSBjdXJzb3IgLyBwYWdlX3NpemUgKiBwYWdlX3NpemU7Cisg ICAgICAgICB1aW50IHBhZ2VfZW5kX3BvcyA9IHVpbnQubWluKHBhZ2Vfc3RhcnRfcG9zICsgcGFn ZV9zaXplLCBuY2FuZGlkYXRlcyk7CisrICAgICAgICBHdGsuQnV0dG9uPyBiYWNrd2FyZF9idXR0 b24gPSBudWxsOworICAgICAgICAgaWYgKG1fYmFja3dhcmQgIT0gbnVsbCkgeworLSAgICAgICAg ICAgIHN0cmluZyBiYWNrd2FyZF9kZXNjID0KKy0gICAgICAgICAgICAgICAgICAgICIlcyAoJXUg LyAldSkiLnByaW50ZihfKG1fYmFja3dhcmQpLCBjdXJzb3IsIG5jYW5kaWRhdGVzIC0gMSk7Cisr ICAgICAgICAgICAgc3RyaW5nIGJhY2t3YXJkX2Rlc2MgPSBfKG1fYmFja3dhcmQpOworICAgICAg ICAgICAgIEVQYWRkZWRMYWJlbEJveCBsYWJlbCA9CisgICAgICAgICAgICAgICAgICAgICBuZXcg RVBhZGRlZExhYmVsQm94KGJhY2t3YXJkX2Rlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEd0ay5BbGlnbi5DRU5URVIsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRyYXZlbERpcmVjdGlvbi5CQUNLV0FSRCk7CistICAgICAgICAg ICAgR3RrLkJ1dHRvbiBidXR0b24gPSBuZXcgR3RrLkJ1dHRvbigpOworLSAgICAgICAgICAgIGJ1 dHRvbi5hZGQobGFiZWwpOworLSAgICAgICAgICAgIG1fdmJveC5hZGQoYnV0dG9uKTsKKy0gICAg ICAgICAgICBidXR0b24uc2hvd19hbGwoKTsKKy0gICAgICAgICAgICBidXR0b24uYnV0dG9uX3By ZXNzX2V2ZW50LmNvbm5lY3QoKHcsIGUpID0+IHsKKysgICAgICAgICAgICBiYWNrd2FyZF9idXR0 b24gPSBuZXcgR3RrLkJ1dHRvbigpOworKyAgICAgICAgICAgIGJhY2t3YXJkX2J1dHRvbi5hZGQo bGFiZWwpOworKyAgICAgICAgICAgIGJhY2t3YXJkX2J1dHRvbi5idXR0b25fcHJlc3NfZXZlbnQu Y29ubmVjdCgodywgZSkgPT4geworICAgICAgICAgICAgICAgICAvLyBCcmluZyBiYWNrIHRvIGVt b2ppIGNhbmRpZGF0ZSBwYW5lbCBpbiBjYXNlCisgICAgICAgICAgICAgICAgIC8vIG1fc2hvd19l bW9qaV92YXJpYW50IGlzIGVuYWJsZWQgYW5kIHNob3dzIHZhcmlhbnRzLgorLSAgICAgICAgICAg ICAgICBpZiAobV9iYWNrd2FyZF9pbmRleCA+PSAwICYmIG1fYmFja3dhcmQgIT0gbnVsbCkKKysg ICAgICAgICAgICAgICAgaWYgKG1fYmFja3dhcmRfaW5kZXggPj0gMCAmJiBtX2JhY2t3YXJkICE9 IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgIHNob3dfZW1vamlfZm9yX2NhdGVnb3J5KG1f YmFja3dhcmQpOworLSAgICAgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgICAgICAgICBz aG93X2NhbmRpZGF0ZV9wYW5lbCgpOworKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg ICAgICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsKKysgICAgICAgICAgICAgICAg ICAgIHNob3dfYWxsKCk7CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgcmV0 dXJuIHRydWU7CisgICAgICAgICAgICAgfSk7CisgICAgICAgICB9CitAQCAtMTM4NSwzNCArMTQ5 MCw2MCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cg eworICAgICAgICAgfQorICAgICAgICAgaWYgKG4gPiAwKSB7CisgICAgICAgICAgICAgbV9jYW5k aWRhdGVfcGFuZWxfaXNfdmlzaWJsZSA9IHRydWU7CistICAgICAgICAgICAgc2hvd19hcnJvd19i dXR0b25zKCk7CistICAgICAgICAgICAgbV92Ym94LmFkZChncmlkKTsKKy0gICAgICAgICAgICBn cmlkLnNob3dfYWxsKCk7CistICAgICAgICAgICAgc3RyaW5nIHRleHQgPSBtX2xvb2t1cF90YWJs ZS5nZXRfY2FuZGlkYXRlKGN1cnNvcikudGV4dDsKKy0gICAgICAgICAgICB1bm93bmVkIElCdXMu RW1vamlEYXRhPyBkYXRhID0gbV9lbW9qaV90b19kYXRhX2RpY3QubG9va3VwKHRleHQpOworLSAg ICAgICAgICAgIGlmIChkYXRhICE9IG51bGwpIHsKKy0gICAgICAgICAgICAgICAgc2hvd19lbW9q aV9kZXNjcmlwdGlvbihkYXRhLCB0ZXh0KTsKKy0gICAgICAgICAgICAgICAgcmV0dXJuOworKyAg ICAgICAgICAgIGlmICghbV9pc191cF9zaWRlX2Rvd24pIHsKKysgICAgICAgICAgICAgICAgc2hv d19hcnJvd19idXR0b25zKCk7CisrICAgICAgICAgICAgICAgIGlmIChiYWNrd2FyZF9idXR0b24g IT0gbnVsbCkgeworKyAgICAgICAgICAgICAgICAgICAgbV92Ym94LmFkZChiYWNrd2FyZF9idXR0 b24pOworKyAgICAgICAgICAgICAgICAgICAgYmFja3dhcmRfYnV0dG9uLnNob3dfYWxsKCk7Cisr ICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbV92Ym94LmFkZChncmlkKTsKKysg ICAgICAgICAgICAgICAgZ3JpZC5zaG93X2FsbCgpOworKyAgICAgICAgICAgICAgICBzaG93X2Rl c2NyaXB0aW9uKCk7CisrICAgICAgICAgICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSkKKysg ICAgICAgICAgICAgICAgICAgIHNob3dfdW5pY29kZV9wcm9ncmVzc19iYXIoKTsKKyAgICAgICAg ICAgICB9CistICAgICAgICAgICAgaWYgKHRleHQuY2hhcl9jb3VudCgpIDw9IDEpIHsKKy0gICAg ICAgICAgICAgICAgdW5pY2hhciBjb2RlID0gdGV4dC5nZXRfY2hhcigpOworLSAgICAgICAgICAg ICAgICB1bm93bmVkIElCdXMuVW5pY29kZURhdGE/IHVkYXRhID0KKy0gICAgICAgICAgICAgICAg ICAgICAgICBtX3VuaWNvZGVfdG9fZGF0YV9kaWN0Lmxvb2t1cChjb2RlKTsKKy0gICAgICAgICAg ICAgICAgaWYgKHVkYXRhICE9IG51bGwpIHsKKy0gICAgICAgICAgICAgICAgICAgIHNob3dfdW5p Y29kZV9kZXNjcmlwdGlvbih1ZGF0YSwgdGV4dCk7CistICAgICAgICAgICAgICAgICAgICByZXR1 cm47CisrICAgICAgICAgICAgaWYgKG1faXNfdXBfc2lkZV9kb3duKSB7CisrICAgICAgICAgICAg ICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSkKKysgICAgICAgICAgICAgICAgICAgIHNob3dfdW5p Y29kZV9wcm9ncmVzc19iYXIoKTsKKysgICAgICAgICAgICAgICAgc2hvd19kZXNjcmlwdGlvbigp OworKyAgICAgICAgICAgICAgICBtX3Zib3guYWRkKGdyaWQpOworKyAgICAgICAgICAgICAgICBn cmlkLnNob3dfYWxsKCk7CisrICAgICAgICAgICAgICAgIGlmIChiYWNrd2FyZF9idXR0b24gIT0g bnVsbCkgeworKyAgICAgICAgICAgICAgICAgICAgbV92Ym94LmFkZChiYWNrd2FyZF9idXR0b24p OworKyAgICAgICAgICAgICAgICAgICAgYmFja3dhcmRfYnV0dG9uLnNob3dfYWxsKCk7CisgICAg ICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgc2hvd19hcnJvd19idXR0b25zKCk7Cisg ICAgICAgICAgICAgfQorLSAgICAgICAgICAgIEVQYWRkZWRMYWJlbEJveCB3aWRnZXQgPSBuZXcg RVBhZGRlZExhYmVsQm94KAorLSAgICAgICAgICAgICAgICAgICAgICAgIF8oIkRlc2NyaXB0aW9u OiAlcyIpLnByaW50ZihfKCJOb25lIikpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIEd0ay5B bGlnbi5TVEFSVCk7CistICAgICAgICAgICAgbV92Ym94LmFkZCh3aWRnZXQpOworLSAgICAgICAg ICAgIHdpZGdldC5zaG93X2FsbCgpOworLSAgICAgICAgICAgIHNob3dfY29kZV9wb2ludF9kZXNj cmlwdGlvbih0ZXh0KTsKKyAgICAgICAgIH0KKyAgICAgfQorIAorIAorKyAgICBwcml2YXRlIHZv aWQgc2hvd19kZXNjcmlwdGlvbigpIHsKKysgICAgICAgIHVpbnQgY3Vyc29yID0gbV9sb29rdXBf dGFibGUuZ2V0X2N1cnNvcl9wb3MoKTsKKysgICAgICAgIHN0cmluZyB0ZXh0ID0gbV9sb29rdXBf dGFibGUuZ2V0X2NhbmRpZGF0ZShjdXJzb3IpLnRleHQ7CisrICAgICAgICB1bm93bmVkIElCdXMu RW1vamlEYXRhPyBkYXRhID0gbV9lbW9qaV90b19kYXRhX2RpY3QubG9va3VwKHRleHQpOworKyAg ICAgICAgaWYgKGRhdGEgIT0gbnVsbCkgeworKyAgICAgICAgICAgIHNob3dfZW1vamlfZGVzY3Jp cHRpb24oZGF0YSwgdGV4dCk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAg ICAgICAgaWYgKHRleHQuY2hhcl9jb3VudCgpIDw9IDEpIHsKKysgICAgICAgICAgICB1bmljaGFy IGNvZGUgPSB0ZXh0LmdldF9jaGFyKCk7CisrICAgICAgICAgICAgdW5vd25lZCBJQnVzLlVuaWNv ZGVEYXRhPyB1ZGF0YSA9CisrICAgICAgICAgICAgICAgICAgICBtX3VuaWNvZGVfdG9fZGF0YV9k aWN0Lmxvb2t1cChjb2RlKTsKKysgICAgICAgICAgICBpZiAodWRhdGEgIT0gbnVsbCkgeworKyAg ICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfZGVzY3JpcHRpb24odWRhdGEsIHRleHQpOworKyAg ICAgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAg ICAgRVBhZGRlZExhYmVsQm94IHdpZGdldCA9IG5ldyBFUGFkZGVkTGFiZWxCb3goCisrICAgICAg ICAgICAgICAgIF8oIkRlc2NyaXB0aW9uOiAlcyIpLnByaW50ZihfKCJOb25lIikpLAorKyAgICAg ICAgICAgICAgICBHdGsuQWxpZ24uU1RBUlQpOworKyAgICAgICAgbV92Ym94LmFkZCh3aWRnZXQp OworKyAgICAgICAgd2lkZ2V0LnNob3dfYWxsKCk7CisrICAgICAgICBzaG93X2NvZGVfcG9pbnRf ZGVzY3JpcHRpb24odGV4dCk7CisrICAgIH0KKysKKysKKyAgICAgcHJpdmF0ZSB2b2lkIHNob3df ZW1vamlfZGVzY3JpcHRpb24oSUJ1cy5FbW9qaURhdGEgZGF0YSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nICAgICAgICAgdGV4dCkgeworICAgICAgICAg dW5vd25lZCBzdHJpbmcgZGVzY3JpcHRpb24gPSBkYXRhLmdldF9kZXNjcmlwdGlvbigpOworQEAg LTE0NzMsMTQgKzE2MDQsMTcgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxp Y2F0aW9uV2luZG93IHsKKyAKKyAKKyAgICAgcHJpdmF0ZSB2b2lkIGhpZGVfY2FuZGlkYXRlX3Bh bmVsKCkgeworKyAgICAgICAgaGlkZSgpOworICAgICAgICAgbV9lbnRlcl9ub3RpZnlfZW5hYmxl ID0gdHJ1ZTsKKy0gICAgICAgIG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUgPSBmYWxzZTsK Ky0gICAgICAgIGlmIChtX2xvb3AuaXNfcnVubmluZygpKSB7CistICAgICAgICAgICAgaWYgKG1f c2hvd191bmljb2RlKQorLSAgICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfYmxvY2tzKCk7Cist ICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBzaG93X2NhdGVnb3J5X2xpc3QoKTsK Ky0gICAgICAgIH0KKysgICAgICAgIG1fYW5ub3RhdGlvbiA9ICIiOworKyAgICAgICAgLy8gQ2Fs bCByZW1vdmVfYWxsX2NoaWxkcmVuKCkgaW5zdGVhZCBvZiBzaG93X2NhdGVnb3J5X2xpc3QoKQor KyAgICAgICAgLy8gc28gdGhhdCBzaG93X2NhdGVnb3J5X2xpc3QgZG8gbm90IHJlbW92ZSBjaGls ZHJlbiB3aXRoCisrICAgICAgICAvLyBQYWdlVXAvUGFnZURvd24uCisrICAgICAgICByZW1vdmVf YWxsX2NoaWxkcmVuKCk7CisrICAgICAgICBpZiAobV9zaG93X3VuaWNvZGUpCisrICAgICAgICAg ICAgdXBkYXRlX3VuaWNvZGVfYmxvY2tzKCk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAg dXBkYXRlX2NhdGVnb3J5X2xpc3QoKTsKKyAgICAgfQorIAorIAorQEAgLTE0OTgsMjAgKzE2MzIs MzQgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsK KyAgICAgfQorIAorIAorLSAgICBwcml2YXRlIHZvaWQgY2FuZGlkYXRlX3BhbmVsX3NlbGVjdF9p bmRleCh1aW50IGluZGV4KSB7CisrICAgIHByaXZhdGUgdm9pZCBjYW5kaWRhdGVfcGFuZWxfc2Vs ZWN0X2luZGV4KHVpbnQgaW5kZXgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVpbnQgYnV0dG9uKSB7CisrICAgICAgICBpZiAoYnV0dG9uID09IEJVVFRP Tl9DTE9TRV9CVVRUT04pIHsKKysgICAgICAgICAgICBoaWRlKCk7CisrICAgICAgICAgICAgaWYg KG1fY2FuZGlkYXRlX3BhbmVsX21vZGUgJiYKKysgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFi bGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCkgPiAwKSB7CisrICAgICAgICAgICAgICAgIC8v IENhbGwgcmVtb3ZlX2FsbF9jaGlsZHJlbigpIGluc3RlYWQgb2Ygc2hvd19jYXRlZ29yeV9saXN0 KCkKKysgICAgICAgICAgICAgICAgLy8gc28gdGhhdCBzaG93X2NhdGVnb3J5X2xpc3QgZG8gbm90 IHJlbW92ZSBjaGlsZHJlbiB3aXRoCisrICAgICAgICAgICAgICAgIC8vIFBhZ2VVcC9QYWdlRG93 bi4KKysgICAgICAgICAgICAgICAgcmVtb3ZlX2FsbF9jaGlsZHJlbigpOworKyAgICAgICAgICAg IH0KKysgICAgICAgICAgICBtX3Jlc3VsdCA9ICIiOworKyAgICAgICAgICAgIHJldHVybjsKKysg ICAgICAgIH0KKyAgICAgICAgIHN0cmluZyB0ZXh0ID0gbV9sb29rdXBfdGFibGUuZ2V0X2NhbmRp ZGF0ZShpbmRleCkudGV4dDsKKyAgICAgICAgIHVub3duZWQgR0xpYi5TTGlzdDxzdHJpbmc+PyBl bW9qaXMgPQorICAgICAgICAgICAgICAgICBtX2Vtb2ppX3RvX2Vtb2ppX3ZhcmlhbnRzX2RpY3Qu bG9va3VwKHRleHQpOworICAgICAgICAgaWYgKG1fc2hvd19lbW9qaV92YXJpYW50ICYmIGVtb2pp cyAhPSBudWxsICYmCisgICAgICAgICAgICAgbV9iYWNrd2FyZF9pbmRleCA8IDApIHsKKyAgICAg ICAgICAgICBzaG93X2Vtb2ppX3ZhcmlhbnRzKGVtb2ppcyk7CisrICAgICAgICAgICAgc2hvd19h bGwoKTsKKyAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgbV9yZXN1bHQgPSB0ZXh0Owor LSAgICAgICAgICAgIG1fbG9vcC5xdWl0KCk7CistICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVf cGFuZWwoKTsKKysgICAgICAgICAgICBoaWRlKCk7CisgICAgICAgICB9CisgICAgIH0KKyAKKysK KyAgICAgcHJpdmF0ZSB2b2lkIGNhbmRpZGF0ZV9wYW5lbF9jdXJzb3JfZG93bigpIHsKKyAgICAg ICAgIGVudGVyX25vdGlmeV9kaXNhYmxlX3dpdGhfdGltZXIoKTsKKyAgICAgICAgIHVpbnQgbmNh bmRpZGF0ZXMgPSBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKTsKK0BA IC0xNTIzLDcgKzE2NzEsNiBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGlj YXRpb25XaW5kb3cgeworICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBtX2xvb2t1cF90 YWJsZS5zZXRfY3Vyc29yX3BvcygwKTsKKyAgICAgICAgIH0KKy0gICAgICAgIHNob3dfY2FuZGlk YXRlX3BhbmVsKCk7CisgICAgIH0KKyAKKyAKK0BAIC0xNTQxLDcgKzE2ODgsNiBAQCBwdWJsaWMg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgfSBl bHNlIHsKKyAgICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygwKTsKKyAg ICAgICAgIH0KKy0gICAgICAgIHNob3dfY2FuZGlkYXRlX3BhbmVsKCk7CisgICAgIH0KKyAKKyAK K0BAIC0xNTU4LDcgKzE3MDQsOSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBw bGljYXRpb25XaW5kb3cgeworICAgICAgICAgcmV0dXJuIHBhZ2VfbnVtOworICAgICB9CisgCisr CisgICAgIHByaXZhdGUgYm9vbCBjYXRlZ29yeV9saXN0X2N1cnNvcl9tb3ZlKHVpbnQga2V5dmFs KSB7CisrICAgICAgICByZXR1cm5fdmFsX2lmX2ZhaWwgKG1fbGlzdF9ib3ggIT0gbnVsbCwgZmFs c2UpOworICAgICAgICAgR0xpYi5MaXN0PHdlYWsgR3RrLldpZGdldD4gbGlzdCA9IG1fbGlzdF9i b3guZ2V0X2NoaWxkcmVuKCk7CisgICAgICAgICBpbnQgbGVuZ3RoID0gKGludClsaXN0Lmxlbmd0 aCgpOworICAgICAgICAgaWYgKGxlbmd0aCA9PSAwKQorQEAgLTE2MDAsMzIgKzE3NDgsMzcgQEAg cHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAg ICAgIHZhciByb3cgPSBtX2xpc3RfYm94LmdldF9zZWxlY3RlZF9yb3coKTsKKyAgICAgICAgIGlm IChyb3cgIT0gbnVsbCkKKyAgICAgICAgICAgICBtX2xpc3RfYm94LnVuc2VsZWN0X3Jvdyhyb3cp OworLSAgICAgICAgaWYgKG1fY2F0ZWdvcnlfYWN0aXZlX2luZGV4ID49IDApIHsKKy0gICAgICAg ICAgICByb3cgPSBtX2xpc3RfYm94LmdldF9yb3dfYXRfaW5kZXgobV9jYXRlZ29yeV9hY3RpdmVf aW5kZXgpOworLSAgICAgICAgICAgIG1fbGlzdF9ib3guc2VsZWN0X3Jvdyhyb3cpOworLSAgICAg ICAgfSBlbHNlIHsKKy0gICAgICAgICAgICByb3cgPSBtX2xpc3RfYm94LmdldF9yb3dfYXRfaW5k ZXgoMCk7CistICAgICAgICB9CistICAgICAgICBHdGsuQWxsb2NhdGlvbiBhbGxvYyA9IHsgMCwg MCwgMCwgMCB9OworLSAgICAgICAgcm93LmdldF9hbGxvY2F0aW9uKG91dCBhbGxvYyk7CistICAg ICAgICB2YXIgYWRqdXN0bWVudCA9IG1fc2Nyb2xsZWRfd2luZG93LmdldF92YWRqdXN0bWVudCgp OworLSAgICAgICAgYWRqdXN0bWVudC5jbGFtcF9wYWdlKGFsbG9jLnksIGFsbG9jLnkgKyBhbGxv Yy5oZWlnaHQpOworKyAgICAgICAgY2xhbXBfcGFnZSAoKTsKKyAgICAgICAgIHJldHVybiB0cnVl OworICAgICB9CisgCisgCistICAgIHByaXZhdGUgYm9vbCBrZXlfcHJlc3NfY3Vyc29yX2hvcml6 b250YWwodWludCBrZXl2YWwsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdWludCBtb2RpZmllcnMpIHsKKysgICAgcHVibGljIGJvb2wgaGFzX3ZhcmlhbnRz KHVpbnQgaW5kZXgpIHsKKysgICAgICAgIGlmIChpbmRleCA+PSBtX2xvb2t1cF90YWJsZS5nZXRf bnVtYmVyX29mX2NhbmRpZGF0ZXMoKSkKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAg ICAgICBzdHJpbmcgdGV4dCA9IG1fbG9va3VwX3RhYmxlLmdldF9jYW5kaWRhdGUoaW5kZXgpLnRl eHQ7CisrICAgICAgICB1bm93bmVkIEdMaWIuU0xpc3Q8c3RyaW5nPj8gZW1vamlzID0KKysgICAg ICAgICAgICAgICAgbV9lbW9qaV90b19lbW9qaV92YXJpYW50c19kaWN0Lmxvb2t1cCh0ZXh0KTsK KysgICAgICAgIGlmIChtX3Nob3dfZW1vamlfdmFyaWFudCAmJiBlbW9qaXMgIT0gbnVsbCAmJgor KyAgICAgICAgICAgIG1fYmFja3dhcmRfaW5kZXggPCAwKSB7CisrICAgICAgICAgICAgc2hvd19l bW9qaV92YXJpYW50cyhlbW9qaXMpOworKyAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAg ICAgfQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyBi b29sIGtleV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbCh1aW50IGtleXZhbCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgbW9kaWZpZXJzKSB7CisgICAg ICAgICBhc3NlcnQgKGtleXZhbCA9PSBHZGsuS2V5LkxlZnQgfHwga2V5dmFsID09IEdkay5LZXku UmlnaHQpOworIAorLSAgICAgICAgdWludCBuY2FuZGlkYXRlcyA9IG1fbG9va3VwX3RhYmxlLmdl dF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpOworLSAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3BhbmVs X2lzX3Zpc2libGUgJiYgbmNhbmRpZGF0ZXMgPiAxKSB7CisrICAgICAgICBpZiAobV9jYW5kaWRh dGVfcGFuZWxfbW9kZSAmJgorKyAgICAgICAgICAgIG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJf b2ZfY2FuZGlkYXRlcygpID4gMCkgeworICAgICAgICAgICAgIGVudGVyX25vdGlmeV9kaXNhYmxl X3dpdGhfdGltZXIoKTsKKyAgICAgICAgICAgICBpZiAoa2V5dmFsID09IEdkay5LZXkuTGVmdCkK KyAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUuY3Vyc29yX3VwKCk7CisgICAgICAgICAg ICAgZWxzZSBpZiAoa2V5dmFsID09IEdkay5LZXkuUmlnaHQpCisgICAgICAgICAgICAgICAgIG1f bG9va3VwX3RhYmxlLmN1cnNvcl9kb3duKCk7CistICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVf cGFuZWwoKTsKKyAgICAgICAgIH0gZWxzZSBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+ IDApIHsKKyAgICAgICAgICAgICBpbnQgc3RlcCA9IDA7CisgICAgICAgICAgICAgaWYgKGtleXZh bCA9PSBHZGsuS2V5LkxlZnQpCitAQCAtMTY1MCw4ICsxODAzLDggQEAgcHVibGljIGNsYXNzIElC dXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgfQorIAorIAorLSAgICBw cml2YXRlIGJvb2wga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbCh1aW50IGtleXZhbCwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBtb2RpZmllcnMpIHsK KysgICAgcHVibGljIGJvb2wga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbCh1aW50IGtleXZhbCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1vZGlmaWVy cykgeworICAgICAgICAgYXNzZXJ0IChrZXl2YWwgPT0gR2RrLktleS5Eb3duIHx8IGtleXZhbCA9 PSBHZGsuS2V5LlVwIHx8CisgICAgICAgICAgICAgICAgIGtleXZhbCA9PSBHZGsuS2V5LlBhZ2Vf RG93biB8fCBrZXl2YWwgPT0gR2RrLktleS5QYWdlX1VwKTsKKyAKK0BAIC0xNjYxLDggKzE4MTQs OCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgewor ICAgICAgICAgICAgIGVsc2UgaWYgKGtleXZhbCA9PSBHZGsuS2V5LlVwKQorICAgICAgICAgICAg ICAgICBrZXl2YWwgPSBHZGsuS2V5LlBhZ2VfVXA7CisgICAgICAgICB9CistICAgICAgICB1aW50 IG5jYW5kaWRhdGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7 CistICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSAmJiBuY2FuZGlkYXRl cyA+IDEpIHsKKysgICAgICAgIGlmICgobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSB8fCBt X2Fubm90YXRpb24ubGVuZ3RoID4gMCkKKysgICAgICAgICAgICAmJiBtX2xvb2t1cF90YWJsZS5n ZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKSA+IDApIHsKKyAgICAgICAgICAgICBzd2l0Y2ggKGtl eXZhbCkgeworICAgICAgICAgICAgIGNhc2UgR2RrLktleS5Eb3duOgorICAgICAgICAgICAgICAg ICBjYW5kaWRhdGVfcGFuZWxfY3Vyc29yX2Rvd24oKTsKK0BAIC0xNjczLDEyICsxODI2LDEwIEBA IHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAg ICAgICAgICAgY2FzZSBHZGsuS2V5LlBhZ2VfRG93bjoKKyAgICAgICAgICAgICAgICAgZW50ZXJf bm90aWZ5X2Rpc2FibGVfd2l0aF90aW1lcigpOworICAgICAgICAgICAgICAgICBtX2xvb2t1cF90 YWJsZS5wYWdlX2Rvd24oKTsKKy0gICAgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwo KTsKKyAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgY2FzZSBHZGsuS2V5LlBh Z2VfVXA6CisgICAgICAgICAgICAgICAgIGVudGVyX25vdGlmeV9kaXNhYmxlX3dpdGhfdGltZXIo KTsKKyAgICAgICAgICAgICAgICAgbV9sb29rdXBfdGFibGUucGFnZV91cCgpOworLSAgICAgICAg ICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOworICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICB9CisgICAgICAgICB9IGVsc2UgeworQEAgLTE2ODgsMTkgKzE4MzksMTgg QEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAg ICAgfQorIAorIAorLSAgICBwcml2YXRlIGJvb2wga2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZCh1 aW50IGtleXZhbCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dWludCBtb2RpZmllcnMpIHsKKysgICAgcHVibGljIGJvb2wga2V5X3ByZXNzX2N1cnNvcl9ob21l X2VuZCh1aW50IGtleXZhbCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB1aW50IG1vZGlmaWVycykgeworICAgICAgICAgYXNzZXJ0IChrZXl2YWwgPT0gR2RrLktl eS5Ib21lIHx8IGtleXZhbCA9PSBHZGsuS2V5LkVuZCk7CisgCisgICAgICAgICB1aW50IG5jYW5k aWRhdGVzID0gbV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7CistICAg ICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlzaWJsZSAmJiBuY2FuZGlkYXRlcyA+IDEp IHsKKysgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlICYmIG5jYW5kaWRhdGVzID4g MCkgeworICAgICAgICAgICAgIGVudGVyX25vdGlmeV9kaXNhYmxlX3dpdGhfdGltZXIoKTsKKyAg ICAgICAgICAgICBpZiAoa2V5dmFsID09IEdkay5LZXkuSG9tZSkgeworICAgICAgICAgICAgICAg ICBtX2xvb2t1cF90YWJsZS5zZXRfY3Vyc29yX3BvcygwKTsKKyAgICAgICAgICAgICB9IGVsc2Ug aWYgKGtleXZhbCA9PSBHZGsuS2V5LkVuZCkgeworICAgICAgICAgICAgICAgICBtX2xvb2t1cF90 YWJsZS5zZXRfY3Vyc29yX3BvcyhuY2FuZGlkYXRlcyAtIDEpOworICAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICBzaG93X2NhbmRpZGF0ZV9wYW5lbCgpOworICAgICAgICAgICAgIHJldHVybiB0 cnVlOworICAgICAgICAgfQorICAgICAgICAgaWYgKG1fZW50cnkuZ2V0X3RleHQoKS5sZW5ndGgg PiAwKSB7CitAQCAtMTcxNyw0NCArMTg2Nyw0MSBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIg OiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ IHRydWUgOiBmYWxzZSk7CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICB9Cist ICAgICAgICBpZiAoIW1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUpCistICAgICAgICAgICAg cmV0dXJuIGNhdGVnb3J5X2xpc3RfY3Vyc29yX21vdmUoa2V5dmFsKTsKKy0gICAgICAgIHJldHVy biBmYWxzZTsKKysgICAgICAgIHJldHVybiBjYXRlZ29yeV9saXN0X2N1cnNvcl9tb3ZlKGtleXZh bCk7CisgICAgIH0KKyAKKyAKKy0gICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19lc2NhcGUoKSB7 CisrICAgIHB1YmxpYyBib29sIGtleV9wcmVzc19lc2NhcGUoKSB7CisgICAgICAgICBpZiAobV9z aG93X3VuaWNvZGUpIHsKKy0gICAgICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlz aWJsZSkgeworLSAgICAgICAgICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlID0g ZmFsc2U7CistICAgICAgICAgICAgICAgIHNob3dfdW5pY29kZV9ibG9ja3MoKTsKKy0gICAgICAg ICAgICAgICAgcmV0dXJuIHRydWU7CistICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAg ICBpZiAoIW1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICAg bV9zaG93X3VuaWNvZGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgbV9jYXRlZ29yeV9hY3Rp dmVfaW5kZXggPSAtMTsKKy0gICAgICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwoKTsK Ky0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgfQorKyAgICAgICAg ICAgIGhpZGVfY2FuZGlkYXRlX3BhbmVsKCk7CisrICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg ICAgICAgICB9IGVsc2UgaWYgKG1fYmFja3dhcmRfaW5kZXggPj0gMCAmJiBtX2JhY2t3YXJkICE9 IG51bGwpIHsKKyAgICAgICAgICAgICBzaG93X2Vtb2ppX2Zvcl9jYXRlZ29yeShtX2JhY2t3YXJk KTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKy0gICAgICAgIH0gZWxzZSBpZiAobV9jYW5k aWRhdGVfcGFuZWxfaXNfdmlzaWJsZSkgeworLSAgICAgICAgICAgIGhpZGVfY2FuZGlkYXRlX3Bh bmVsKCk7CistICAgICAgICAgICAgcmV0dXJuIHRydWU7CistICAgICAgICB9IGVsc2UgaWYgKG1f ZW50cnkuZ2V0X3RleHQoKS5sZW5ndGggPT0gMCkgeworLSAgICAgICAgICAgIG1fbG9vcC5xdWl0 KCk7CisrICAgICAgICB9IGVsc2UgaWYgKG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUgJiYg bV9iYWNrd2FyZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgaGlkZV9jYW5kaWRhdGVfcGFuZWwo KTsKKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIH0KKy0gICAgICAgIG1fZW50 cnkuZGVsZXRlX3RleHQoMCwgLTEpOworLSAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICBo aWRlKCk7CisrICAgICAgICBpZiAobV9jYW5kaWRhdGVfcGFuZWxfbW9kZSAmJgorKyAgICAgICAg ICAgIG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpID4gMCkgeworKyAg ICAgICAgICAgIC8vIENhbGwgcmVtb3ZlX2FsbF9jaGlsZHJlbigpIGluc3RlYWQgb2Ygc2hvd19j YXRlZ29yeV9saXN0KCkKKysgICAgICAgICAgICAvLyBzbyB0aGF0IHNob3dfY2F0ZWdvcnlfbGlz dCBkbyBub3QgcmVtb3ZlIGNoaWxkcmVuIHdpdGgKKysgICAgICAgICAgICAvLyBQYWdlVXAvUGFn ZURvd24uCisrICAgICAgICAgICAgcmVtb3ZlX2FsbF9jaGlsZHJlbigpOworKyAgICAgICAgfQor KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgCisgCistICAgIHByaXZhdGUgYm9vbCBr ZXlfcHJlc3NfZW50ZXIoKSB7CisrICAgIHB1YmxpYyBib29sIGtleV9wcmVzc19lbnRlcigpIHsK KyAgICAgICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlKSB7CisgICAgICAgICAg ICAgdWludCBpbmRleCA9IG1fbG9va3VwX3RhYmxlLmdldF9jdXJzb3JfcG9zKCk7CistICAgICAg ICAgICAgY2FuZGlkYXRlX3BhbmVsX3NlbGVjdF9pbmRleChpbmRleCk7CisrICAgICAgICAgICAg cmV0dXJuIGhhc192YXJpYW50cyhpbmRleCk7CisgICAgICAgICB9IGVsc2UgaWYgKG1fY2F0ZWdv cnlfYWN0aXZlX2luZGV4ID49IDApIHsKKyAgICAgICAgICAgICBHdGsuTGlzdEJveFJvdyBndGty b3cgPSBtX2xpc3RfYm94LmdldF9zZWxlY3RlZF9yb3coKTsKKyAgICAgICAgICAgICBFQm94Um93 IHJvdyA9IGd0a3JvdyBhcyBFQm94Um93OworQEAgLTE3ODksMTMgKzE5MzYsMTExIEBAIHB1Ymxp YyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgIH0KKyAK KyAKKysgICAgcHJpdmF0ZSBHZGsuUmVjdGFuZ2xlIGdldF9tb25pdG9yX2dlb21ldHJ5KCkgewor KyAgICAgICAgR2RrLlJlY3RhbmdsZSBtb25pdG9yX2FyZWEgPSB7IDAsIH07CisrCisrICAgICAg ICAvLyBVc2UgZ2V0X21vbml0b3JfZ2VvbWV0cnkoKSBpbnN0ZWFkIG9mIGdldF9tb25pdG9yX2Fy ZWEoKS4KKysgICAgICAgIC8vIGdldF9tb25pdG9yX2FyZWEoKSBleGNsdWRlcyBkb2NrcywgYnV0 IHRoZSBsb29rdXAgd2luZG93IHNob3VsZCBiZQorKyAgICAgICAgLy8gc2hvd24gb3ZlciB0aGVt LgorKyNpZiBWQUxBXzBfMzQKKysgICAgICAgIEdkay5Nb25pdG9yIG1vbml0b3IgPSBHZGsuRGlz cGxheS5nZXRfZGVmYXVsdCgpLmdldF9tb25pdG9yX2F0X3BvaW50KAorKyAgICAgICAgICAgICAg ICBtX2N1cnNvcl9sb2NhdGlvbi54LAorKyAgICAgICAgICAgICAgICBtX2N1cnNvcl9sb2NhdGlv bi55KTsKKysgICAgICAgIG1vbml0b3JfYXJlYSA9IG1vbml0b3IuZ2V0X2dlb21ldHJ5KCk7Cisr I2Vsc2UKKysgICAgICAgIEdkay5TY3JlZW4gc2NyZWVuID0gR2RrLlNjcmVlbi5nZXRfZGVmYXVs dCgpOworKyAgICAgICAgaW50IG1vbml0b3JfbnVtID0gc2NyZWVuLmdldF9tb25pdG9yX2F0X3Bv aW50KG1fY3Vyc29yX2xvY2F0aW9uLngsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbV9jdXJzb3JfbG9jYXRpb24ueSk7CisrICAgICAgICBz Y3JlZW4uZ2V0X21vbml0b3JfZ2VvbWV0cnkobW9uaXRvcl9udW0sIG91dCBtb25pdG9yX2FyZWEp OworKyNlbmRpZgorKyAgICAgICAgcmV0dXJuIG1vbml0b3JfYXJlYTsKKysgICAgfQorKworKwor KyAgICBwcml2YXRlIHZvaWQgYWRqdXN0X3dpbmRvd19wb3NpdGlvbigpIHsKKysgICAgICAgIEdk ay5Qb2ludCBjdXJzb3JfcmlnaHRfYm90dG9tID0geworKyAgICAgICAgICAgICAgICBtX2N1cnNv cl9sb2NhdGlvbi54ICsgbV9jdXJzb3JfbG9jYXRpb24ud2lkdGgsCisrICAgICAgICAgICAgICAg IG1fY3Vyc29yX2xvY2F0aW9uLnkgKyBtX2N1cnNvcl9sb2NhdGlvbi5oZWlnaHQKKysgICAgICAg IH07CisrCisrICAgICAgICBHdGsuQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworKyAgICAgICAgZ2V0 X2FsbG9jYXRpb24ob3V0IGFsbG9jYXRpb24pOworKyAgICAgICAgR2RrLlBvaW50IHdpbmRvd19y aWdodF9ib3R0b20gPSB7CisrICAgICAgICAgICAgY3Vyc29yX3JpZ2h0X2JvdHRvbS54ICsgYWxs b2NhdGlvbi53aWR0aCwKKysgICAgICAgICAgICBjdXJzb3JfcmlnaHRfYm90dG9tLnkgKyBhbGxv Y2F0aW9uLmhlaWdodAorKyAgICAgICAgfTsKKysKKysgICAgICAgIEdkay5SZWN0YW5nbGUgbW9u aXRvcl9hcmVhID0gZ2V0X21vbml0b3JfZ2VvbWV0cnkoKTsKKysgICAgICAgIGludCBtb25pdG9y X3JpZ2h0ID0gbW9uaXRvcl9hcmVhLnggKyBtb25pdG9yX2FyZWEud2lkdGg7CisrICAgICAgICBp bnQgbW9uaXRvcl9ib3R0b20gPSBtb25pdG9yX2FyZWEueSArIG1vbml0b3JfYXJlYS5oZWlnaHQ7 CisrCisrICAgICAgICBpbnQgeCwgeTsKKysgICAgICAgIGlmICh3aW5kb3dfcmlnaHRfYm90dG9t LnggPiBtb25pdG9yX3JpZ2h0KQorKyAgICAgICAgICAgIHggPSBtb25pdG9yX3JpZ2h0IC0gYWxs b2NhdGlvbi53aWR0aDsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICB4ID0gY3Vyc29yX3Jp Z2h0X2JvdHRvbS54OworKyAgICAgICAgaWYgKHggPCAwKQorKyAgICAgICAgICAgIHggPSAwOwor KworKyAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CisrICAgICAgICBpZiAod2luZG93X3Jp Z2h0X2JvdHRvbS55ID4gbW9uaXRvcl9ib3R0b20pIHsKKysgICAgICAgICAgICB5ID0gbV9jdXJz b3JfbG9jYXRpb24ueSAtIGFsbG9jYXRpb24uaGVpZ2h0OworKyAgICAgICAgICAgIC8vIERvIG5v dCB1cCBzaWRlIGRvd24gaW4gV2F5bGFuZAorKyAgICAgICAgICAgIGlmIChtX2lucHV0X2NvbnRl eHRfcGF0aCA9PSAiIikgeworKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gKG1faXNfdXBfc2lk ZV9kb3duID09IGZhbHNlKTsKKysgICAgICAgICAgICAgICAgbV9pc191cF9zaWRlX2Rvd24gPSB0 cnVlOworKyAgICAgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgIGNoYW5nZWQgPSAo bV9pc191cF9zaWRlX2Rvd24gPT0gdHJ1ZSk7CisrICAgICAgICAgICAgICAgIG1faXNfdXBfc2lk ZV9kb3duID0gZmFsc2U7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfSBlbHNlIHsKKysgICAg ICAgICAgICB5ID0gY3Vyc29yX3JpZ2h0X2JvdHRvbS55OworKyAgICAgICAgICAgIGNoYW5nZWQg PSAobV9pc191cF9zaWRlX2Rvd24gPT0gdHJ1ZSk7CisrICAgICAgICAgICAgbV9pc191cF9zaWRl X2Rvd24gPSBmYWxzZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICh5IDwgMCkKKysgICAgICAg ICAgICB5ID0gMDsKKysKKysgICAgICAgIG1vdmUoeCwgeSk7CisrICAgICAgICBpZiAoY2hhbmdl ZCkgeworKyAgICAgICAgICAgIGlmIChtX3JlZHJhd193aW5kb3dfaWQgPiAwKQorKyAgICAgICAg ICAgICAgICBHTGliLlNvdXJjZS5yZW1vdmUobV9yZWRyYXdfd2luZG93X2lkKTsKKysgICAgICAg ICAgICBtX3JlZHJhd193aW5kb3dfaWQgPSBHTGliLlRpbWVvdXQuYWRkKDEwMCwgKCkgPT4gewor KyAgICAgICAgICAgICAgICBtX3JlZHJhd193aW5kb3dfaWQgPSAwOworKyAgICAgICAgICAgICAg ICB0aGlzLnNob3dfYWxsKCk7CisrICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAg ICAgICAgICB9KTsKKysgICAgICAgIH0KKysgICAgfQorKworKworKyNpZiAwCisrICAgIHByaXZh dGUgdm9pZCBjaGVja19hY3Rpb25fdmFyaWFudF9jYihHdGsuTWVudUl0ZW0gaXRlbSkgeworKyAg ICAgICAgR3RrLkNoZWNrTWVudUl0ZW0gY2hlY2sgPSBpdGVtIGFzIEd0ay5DaGVja01lbnVJdGVt OworKyAgICAgICAgbV9zaG93X2Vtb2ppX3ZhcmlhbnQgPSBjaGVjay5nZXRfYWN0aXZlKCk7Cisr ICAgICAgICAvLyBSZWRyYXcgZW1vamkgY2FuZGlkYXRlIHBhbmVsIGZvciBtX3Nob3dfZW1vamlf dmFyaWFudAorKyAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3BhbmVsX2lzX3Zpc2libGUpIHsKKysg ICAgICAgICAgICAvLyBET1RPOiBxdWV1ZV9kcmF3KCkgZG9lcyBub3QgZWZmZWN0IGF0IHRoZSBy ZWFsIHRpbWUuCisrICAgICAgICAgICAgdGhpcy5xdWV1ZV9kcmF3KCk7CisrICAgICAgICB9Cisr ICAgIH0KKysjZWxzZQorICAgICBwcml2YXRlIHZvaWQgY2hlY2tfYWN0aW9uX3ZhcmlhbnRfY2Io R0xpYi5TaW1wbGVBY3Rpb24gYWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgR0xpYi5WYXJpYW50PyAgICAgcGFyYW1ldGVyKSB7CisgICAgICAgICBtX3No b3dfZW1vamlfdmFyaWFudCA9ICFhY3Rpb24uZ2V0X3N0YXRlKCkuZ2V0X2Jvb2xlYW4oKTsKKyAg ICAgICAgIGFjdGlvbi5zZXRfc3RhdGUobmV3IEdMaWIuVmFyaWFudC5ib29sZWFuKG1fc2hvd19l bW9qaV92YXJpYW50KSk7CisgICAgICAgICAvLyBSZWRyYXcgZW1vamkgY2FuZGlkYXRlIHBhbmVs IGZvciBtX3Nob3dfZW1vamlfdmFyaWFudAorLSAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3BhbmVs X2lzX3Zpc2libGUpCistICAgICAgICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKKysgICAg ICAgIGlmIChtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlKSB7CisrICAgICAgICAgICAgLy8g RE9UTzogcXVldWVfZHJhdygpIGRvZXMgbm90IGVmZmVjdCBhdCB0aGUgcmVhbCB0aW1lLgorKyAg ICAgICAgICAgIHRoaXMucXVldWVfZHJhdygpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlm CisrCisrCisrICAgIHByaXZhdGUgdm9pZCBhY3Rpb25fY2xvc2VfY2IoR0xpYi5TaW1wbGVBY3Rp b24gYWN0aW9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMaWIuVmFyaWFu dD8gICAgIHBhcmFtZXRlcikgeworKyAgICAgICAgY2FuZGlkYXRlX2NsaWNrZWQoMCwgQlVUVE9O X0NMT1NFX0JVVFRPTiwgMCk7CisgICAgIH0KKyAKKyAKK0BAIC0xODQyLDYgKzIwODcsMTIzIEBA IHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAg IH0KKyAKKyAKKysgICAgcHVibGljIHZvaWQgc2V0X2Fubm90YXRpb24oc3RyaW5nIGFubm90YXRp b24pIHsKKysgICAgICAgIG1fYW5ub3RhdGlvbiA9IGFubm90YXRpb247CisrICAgICAgICByZW1v dmVfYWxsX2NoaWxkcmVuKCk7CisrICAgICAgICBpZiAoYW5ub3RhdGlvbi5sZW5ndGggPiAwKSB7 CisrICAgICAgICAgICAgdXBkYXRlX2NhbmRpZGF0ZV93aW5kb3coKTsKKysgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgaWYgKG1fc2hvd191bmljb2RlKQorKyAgICAgICAgICAgICAgICB1 cGRhdGVfdW5pY29kZV9ibG9ja3MoKTsKKysgICAgICAgICAgICBlbHNlCisrICAgICAgICAgICAg ICAgIHVwZGF0ZV9jYXRlZ29yeV9saXN0KCk7CisrICAgICAgICB9CisrICAgIH0KKysKKysKKysg ICAgcHVibGljIElCdXMuTG9va3VwVGFibGUgZ2V0X29uZV9kaW1lbnNpb25fbG9va3VwX3RhYmxl KCkgeworKyAgICAgICAgdmFyIGxvb2t1cF90YWJsZSA9IG5ldyBJQnVzLkxvb2t1cFRhYmxlKEVN T0pJX0dSSURfUEFHRSwgMCwgdHJ1ZSwgdHJ1ZSk7CisrICAgICAgICB1aW50IGkgPSAwOworKyAg ICAgICAgZm9yICg7IGkgPCBtX2xvb2t1cF90YWJsZS5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMo KTsgaSsrKSB7CisrICAgICAgICAgICAgSUJ1cy5UZXh0IHRleHQgPSBuZXcgSUJ1cy5UZXh0LmZy b21fc3RyaW5nKCIiKTsKKysgICAgICAgICAgICB0ZXh0LmNvcHkobV9sb29rdXBfdGFibGUuZ2V0 X2NhbmRpZGF0ZShpKSk7CisrICAgICAgICAgICAgbG9va3VwX3RhYmxlLmFwcGVuZF9jYW5kaWRh dGUodGV4dCk7CisrICAgICAgICB9CisrICAgICAgICBpZiAoaSA+IDApCisrICAgICAgICAgICAg bG9va3VwX3RhYmxlLnNldF9jdXJzb3JfcG9zKG1fbG9va3VwX3RhYmxlLmdldF9jdXJzb3JfcG9z KCkpOworKyAgICAgICAgcmV0dXJuIGxvb2t1cF90YWJsZTsKKysgICAgfQorKworKworKyAgICBw dWJsaWMgdWludCBnZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMoKSB7CisrICAgICAgICByZXR1cm4g bV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCk7CisrICAgIH0KKysKKysK KysgICAgcHVibGljIHVpbnQgZ2V0X2N1cnNvcl9wb3MoKSB7CisrICAgICAgICByZXR1cm4gbV9s b29rdXBfdGFibGUuZ2V0X2N1cnNvcl9wb3MoKTsKKysgICAgfQorKworKworKyAgICBwdWJsaWMg dm9pZCBzZXRfY3Vyc29yX3Bvcyh1aW50IGN1cnNvcl9wb3MpIHsKKysgICAgICAgIG1fbG9va3Vw X3RhYmxlLnNldF9jdXJzb3JfcG9zKGN1cnNvcl9wb3MpOworKyAgICB9CisrCisrCisrICAgIHB1 YmxpYyBzdHJpbmcgZ2V0X2N1cnJlbnRfY2FuZGlkYXRlKCkgeworKyAgICAgICAgLy8gSWYgY2F0 ZWdvcnlfbGlzdCBtb2RlLCBkbyBub3Qgc2hvdyB0aGUgY2F0ZWdvcnkgbmFtZSBvbiBwcmVlZGl0 LgorKyAgICAgICAgLy8gSWYgY2FuZGlkYXRlX3BhbmVsIG1vZGUsIHRoZSBmaXJzdCBzcGFjZSBr ZXkgZG9lcyBub3Qgc2hvdyB0aGUKKysgICAgICAgIC8vIGxvb2t1cCB0YWJsZSBidXQgdGhlIGZp cnN0IGNhbmRpZGF0ZSBpcyBhdmFpYWJsZSBvbiBwcmVlZGl0LgorKyAgICAgICAgaWYgKCFtX2Nh bmRpZGF0ZV9wYW5lbF9tb2RlKQorKyAgICAgICAgICAgIHJldHVybiAiIjsKKysgICAgICAgIHVp bnQgY3Vyc29yID0gbV9sb29rdXBfdGFibGUuZ2V0X2N1cnNvcl9wb3MoKTsKKysgICAgICAgIHJl dHVybiBtX2xvb2t1cF90YWJsZS5nZXRfY2FuZGlkYXRlKGN1cnNvcikudGV4dDsKKysgICAgfQor KworKworKyAgICBwdWJsaWMgSUJ1cy5UZXh0IGdldF90aXRsZV90ZXh0KCkgeworKyAgICAgICAg dmFyIGxhbmd1YWdlID0gXyhJQnVzLmdldF9sYW5ndWFnZV9uYW1lKG1fY3VycmVudF9sYW5nX2lk KSk7CisrICAgICAgICB1aW50IG5jYW5kaWRhdGVzID0gdGhpcy5nZXRfbnVtYmVyX29mX2NhbmRp ZGF0ZXMoKTsKKysgICAgICAgIHN0cmluZyBtYWluX3RpdGxlID0gXygiRW1vamkgQ2hvaWNlIik7 CisrICAgICAgICBpZiAobV9zaG93X3VuaWNvZGUpCisrICAgICAgICAgICAgbWFpbl90aXRsZSA9 IF8oIlVuaWNvZGUgQ2hvaWNlIik7CisrICAgICAgICB2YXIgdGV4dCA9IG5ldyBJQnVzLlRleHQu ZnJvbV9zdHJpbmcoCisrICAgICAgICAgICAgICAgICIlcyAoJXMpICgldSAvICV1KSIucHJpbnRm KAorKyAgICAgICAgICAgICAgICAgICAgICAgIG1haW5fdGl0bGUsCisrICAgICAgICAgICAgICAg ICAgICAgICAgbGFuZ3VhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRfY3Vy c29yX3BvcygpICsgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICBuY2FuZGlkYXRlcykpOwor KyAgICAgICAgaW50IGNoYXJfY291bnQgPSB0ZXh0LnRleHQuY2hhcl9jb3VudCgpOworKyAgICAg ICAgaW50IHN0YXJ0X2luZGV4ID0gLTE7CisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNo YXJfY291bnQ7IGkrKykgeworKyAgICAgICAgICAgIGlmICh0ZXh0LnRleHQudXRmOF9vZmZzZXQo aSkuaGFzX3ByZWZpeChsYW5ndWFnZSkpIHsKKysgICAgICAgICAgICAgICAgc3RhcnRfaW5kZXgg PSBpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9 CisrICAgICAgICBpZiAoc3RhcnRfaW5kZXggPj0gMCkgeworKyAgICAgICAgICAgIHZhciBhdHRy ID0gbmV3IElCdXMuQXR0cmlidXRlKAorKyAgICAgICAgICAgICAgICAgICAgSUJ1cy5BdHRyVHlw ZS5GT1JFR1JPVU5ELAorKyAgICAgICAgICAgICAgICAgICAgMHg4MDgwODAsCisrICAgICAgICAg ICAgICAgICAgICBzdGFydF9pbmRleCwKKysgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2luZGV4 ICsgbGFuZ3VhZ2UuY2hhcl9jb3VudCgpKTsKKysgICAgICAgICAgICB2YXIgYXR0cnMgPSBuZXcg SUJ1cy5BdHRyTGlzdCgpOworKyAgICAgICAgICAgIGF0dHJzLmFwcGVuZChhdHRyKTsKKysgICAg ICAgICAgICB0ZXh0LnNldF9hdHRyaWJ1dGVzKGF0dHJzKTsKKysgICAgICAgIH0KKysgICAgICAg IHJldHVybiB0ZXh0OworKyAgICB9CisrCisrCisrI2lmIDAKKysgICAgcHVibGljIEdMaWIuU0xp c3Q8c3RyaW5nPj8gZ2V0X2NhbmRpZGF0ZXMoKSB7CisrICAgICAgICBpZiAobV9hbm5vdGF0aW9u Lmxlbmd0aCA9PSAwKSB7CisrICAgICAgICAgICAgcmV0dXJuIG51bGw7CisrICAgICAgICB9Cisr ICAgICAgICBpZiAobV9hbm5vdGF0aW9uLmxlbmd0aCA+IG1fZW1vamlfbWF4X3NlcV9sZW4pIHsK KysgICAgICAgICAgICByZXR1cm4gbnVsbDsKKysgICAgICAgIH0KKysgICAgICAgIHN0cmluZz8g dW5pY29kZV9wb2ludCA9IGNoZWNrX3VuaWNvZGVfcG9pbnQobV9hbm5vdGF0aW9uKTsKKysgICAg ICAgIEdMaWIuU0xpc3Q8c3RyaW5nPj8gdG90YWxfZW1vamlzID0KKysgICAgICAgICAgICBsb29r dXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihtX2Fubm90YXRpb24pOworKyAgICAgICAgaWYgKHRv dGFsX2Vtb2ppcyA9PSBudWxsKSB7CisrICAgICAgICAgICAgLyogVXNlcnMgY2FuIHR5cGUgdGl0 bGUgc3RyaW5ncyBhZ2FpbnN0IGxvd2VyIGNhc2UuCisrICAgICAgICAgICAgICogRS5nLiAiU21p bGUiIGFnYWluc3QgInNtaWxlIgorKyAgICAgICAgICAgICAqIEJ1dCB0aGUgZGljdGlvbmFyeSBo YXMgdGhlIGNhc2Ugc2Vuc2l0aXZlIGFubm90YXRpb25zLgorKyAgICAgICAgICAgICAqIEUuZy4g IjpEIiBhbmQgIjpxIgorKyAgICAgICAgICAgICAqIFNvIG5lZWQgdG8gY2FsbCBsb29rdXBfZW1v amlzX2Zyb21fYW5ub3RhdGlvbigpIHR3aWNlLgorKyAgICAgICAgICAgICAqLworKyAgICAgICAg ICAgIHN0cmluZyBsb3dlcl9hbm5vdGF0aW9uID0gbV9hbm5vdGF0aW9uLmRvd24oKTsKKysgICAg ICAgICAgICB0b3RhbF9lbW9qaXMgPSBsb29rdXBfZW1vamlzX2Zyb21fYW5ub3RhdGlvbihsb3dl cl9hbm5vdGF0aW9uKTsKKysgICAgICAgIH0KKysgICAgICAgIGlmICh1bmljb2RlX3BvaW50ICE9 IG51bGwpCisrICAgICAgICAgICAgdG90YWxfZW1vamlzLnByZXBlbmQodW5pY29kZV9wb2ludCk7 CisrICAgICAgICByZXR1cm4gdG90YWxfZW1vamlzOworKyAgICB9CisrI2VuZGlmCisrCisrCisr I2lmIDAKKyAgICAgcHVibGljIHN0cmluZyBydW4oc3RyaW5nICAgIGlucHV0X2NvbnRleHRfcGF0 aCwKKyAgICAgICAgICAgICAgICAgICAgICAgR2RrLkV2ZW50IGV2ZW50KSB7CisgICAgICAgICBh c3NlcnQgKG1fbG9vcCA9PSBudWxsKTsKK0BAIC0xOTE1LDEyICsyMjc3LDM0IEBAIHB1YmxpYyBj bGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgCisgICAgICAgICBy ZXR1cm4gbV9yZXN1bHQ7CisgICAgIH0KKysjZW5kaWYKKyAKKyAKKyAgICAgLyogb3ZlcnJpZGUg dmlydHVhbCBmdW5jdGlvbnMgKi8KKy0gICAgcHVibGljIG92ZXJyaWRlIHZvaWQgc2hvdygpIHsK Ky0gICAgICAgIGJhc2Uuc2hvdygpOworLSAgICAgICAgc2V0X2ZvY3VzX3Zpc2libGUodHJ1ZSk7 CisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHNob3dfYWxsKCkgeworKyAgICAgICAgYmFzZS5z aG93X2FsbCgpOworKyAgICAgICAgaWYgKG1fY2FuZGlkYXRlX3BhbmVsX21vZGUpCisrICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGVfcGFuZWwoKTsKKysgICAgICAgIGVsc2UgaWYgKG1fc2hvd191 bmljb2RlKQorKyAgICAgICAgICAgIHNob3dfdW5pY29kZV9ibG9ja3MoKTsKKysgICAgICAgIGVs c2UKKysgICAgICAgICAgICBzaG93X2NhdGVnb3J5X2xpc3QoKTsKKysgICAgfQorKworKworKyAg ICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBoaWRlKCkgeworKyAgICAgICAgYmFzZS5oaWRlKCk7Cisr ICAgICAgICBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlID0gZmFsc2U7CisrICAgICAgICAv LyBtX2NhbmRpZGF0ZV9wYW5lbF9tb2RlIGlzIG5vdCBmYWxzZSBpbiB3aGVuIHlvdSB0eXBlIHNv bWV0aGluZworKyAgICAgICAgLy8gZHVyaW5nIGVuYWJsaW5nIHRoZSBjYW5kaWRhdGUgcGFuZWwu CisrICAgICAgICBpZiAobV9yZWRyYXdfd2luZG93X2lkID4gMCkgeworKyAgICAgICAgICAgIEdM aWIuU291cmNlLnJlbW92ZShtX3JlZHJhd193aW5kb3dfaWQpOworKyAgICAgICAgICAgIG1fcmVk cmF3X3dpbmRvd19pZCA9IDA7CisrICAgICAgICB9CisrICAgICAgICBpZiAobV91bmljb2RlX3By b2dyZXNzX2lkID4gMCkgeworKyAgICAgICAgICAgIEdMaWIuU291cmNlLnJlbW92ZShtX3VuaWNv ZGVfcHJvZ3Jlc3NfaWQpOworKyAgICAgICAgICAgIG1fdW5pY29kZV9wcm9ncmVzc19pZCA9IDA7 CisrICAgICAgICB9CisgICAgIH0KKyAKKyAKK0BAIC0xOTM1LDExICsyMzE5LDE2IEBAIHB1Ymxp YyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgICBz d2l0Y2ggKGtleXZhbCkgeworICAgICAgICAgY2FzZSBHZGsuS2V5LkVzY2FwZToKKyAgICAgICAg ICAgICBpZiAoa2V5X3ByZXNzX2VzY2FwZSgpKQorLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKy0gICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgc2hvd19hbGwoKTsKKysg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIGNhc2UgR2RrLktleS5SZXR1cm46Cisg ICAgICAgICBjYXNlIEdkay5LZXkuS1BfRW50ZXI6CistICAgICAgICAgICAga2V5X3ByZXNzX2Vu dGVyKCk7CisrICAgICAgICAgICAgaWYgKGtleV9wcmVzc19lbnRlcigpKSB7CisrICAgICAgICAg ICAgICAgIHNob3dfYWxsKCk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAg ICAgbV9yZXN1bHQgPSBnZXRfY3VycmVudF9jYW5kaWRhdGUoKTsKKysgICAgICAgICAgICAgICAg aGlkZSgpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ICAgIGNhc2UgR2RrLktleS5CYWNrU3BhY2U6CisgICAgICAgICAgICAgaWYgKG1fZW50cnkuZ2V0 X3RleHQoKS5sZW5ndGggPiAwKSB7CitAQCAtMTk3Nyw0MiArMjM2Niw0OSBAQCBwdWJsaWMgY2xh c3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgICAgIH0K KyAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgY2F0ZWdvcnlfbGlzdF9jdXJz b3JfbW92ZShHZGsuS2V5LkRvd24pOworKyAgICAgICAgICAgICAgICBzaG93X2FsbCgpOworICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIGNhc2UgR2Rr LktleS5SaWdodDoKKyAgICAgICAgIGNhc2UgR2RrLktleS5LUF9SaWdodDoKKyAgICAgICAgICAg ICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5SaWdodCwgbW9kaWZpZXJzKTsK KysgICAgICAgICAgICBzaG93X2FsbCgpOworICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgY2FzZSBHZGsuS2V5LkxlZnQ6CisgICAgICAgICBjYXNlIEdkay5LZXkuS1BfTGVmdDoK KyAgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5MZWZ0LCBt b2RpZmllcnMpOworKyAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICBjYXNlIEdkay5LZXkuRG93bjoKKyAgICAgICAgIGNhc2UgR2RrLktl eS5LUF9Eb3duOgorICAgICAgICAgICAgIGtleV9wcmVzc19jdXJzb3JfdmVydGljYWwoR2RrLktl eS5Eb3duLCBtb2RpZmllcnMpOworKyAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgICAgICBjYXNlIEdkay5LZXkuVXA6CisgICAgICAgICBjYXNl IEdkay5LZXkuS1BfVXA6CisgICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChH ZGsuS2V5LlVwLCBtb2RpZmllcnMpOworKyAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAg ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICBjYXNlIEdkay5LZXkuUGFnZV9Eb3duOgorICAg ICAgICAgY2FzZSBHZGsuS2V5LktQX1BhZ2VfRG93bjoKKyAgICAgICAgICAgICBrZXlfcHJlc3Nf Y3Vyc29yX3ZlcnRpY2FsKEdkay5LZXkuUGFnZV9Eb3duLCBtb2RpZmllcnMpOworKyAgICAgICAg ICAgIHNob3dfYWxsKCk7CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICBjYXNl IEdkay5LZXkuUGFnZV9VcDoKKyAgICAgICAgIGNhc2UgR2RrLktleS5LUF9QYWdlX1VwOgorICAg ICAgICAgICAgIGtleV9wcmVzc19jdXJzb3JfdmVydGljYWwoR2RrLktleS5QYWdlX1VwLCBtb2Rp ZmllcnMpOworKyAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAgICAgICAgcmV0dXJuIHRy dWU7CisgICAgICAgICBjYXNlIEdkay5LZXkuSG9tZToKKyAgICAgICAgIGNhc2UgR2RrLktleS5L UF9Ib21lOgorLSAgICAgICAgICAgIGlmIChrZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKEdkay5L ZXkuSG9tZSwgbW9kaWZpZXJzKSkKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CistICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChH ZGsuS2V5LkhvbWUsIG1vZGlmaWVycyk7CisrICAgICAgICAgICAgc2hvd19hbGwoKTsKKysgICAg ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgIGNhc2UgR2RrLktleS5FbmQ6CisgICAgICAg ICBjYXNlIEdkay5LZXkuS1BfRW5kOgorLSAgICAgICAgICAgIGlmIChrZXlfcHJlc3NfY3Vyc29y X2hvbWVfZW5kKEdkay5LZXkuRW5kLCBtb2RpZmllcnMpKQorLSAgICAgICAgICAgICAgICByZXR1 cm4gdHJ1ZTsKKy0gICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICBrZXlfcHJlc3NfY3Vy c29yX2hvbWVfZW5kKEdkay5LZXkuRW5kLCBtb2RpZmllcnMpOworKyAgICAgICAgICAgIHNob3df YWxsKCk7CisrICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICBjYXNlIEdkay5LZXku SW5zZXJ0OgorICAgICAgICAgY2FzZSBHZGsuS2V5LktQX0luc2VydDoKKyAgICAgICAgICAgICBH TGliLlNpZ25hbC5lbWl0X2J5X25hbWUobV9lbnRyeSwgInRvZ2dsZS1vdmVyd3JpdGUiKTsKK0BA IC0yMDIzLDI2ICsyNDE5LDMwIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBs aWNhdGlvbldpbmRvdyB7CisgICAgICAgICAgICAgc3dpdGNoIChrZXl2YWwpIHsKKyAgICAgICAg ICAgICBjYXNlIEdkay5LZXkuZjoKKyAgICAgICAgICAgICAgICAga2V5X3ByZXNzX2N1cnNvcl9o b3Jpem9udGFsKEdkay5LZXkuUmlnaHQsIG1vZGlmaWVycyk7CisrICAgICAgICAgICAgICAgIHNo b3dfYWxsKCk7CisgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGNh c2UgR2RrLktleS5iOgorICAgICAgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250 YWwoR2RrLktleS5MZWZ0LCBtb2RpZmllcnMpOworKyAgICAgICAgICAgICAgICBzaG93X2FsbCgp OworICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICBjYXNlIEdkay5L ZXkubjoKKyAgICAgICAgICAgICBjYXNlIEdkay5LZXkuTjoKKyAgICAgICAgICAgICAgICAga2V5 X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sIG1vZGlmaWVycyk7CisrICAgICAg ICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgIGNhc2UgR2RrLktleS5wOgorICAgICAgICAgICAgIGNhc2UgR2RrLktleS5QOgor ICAgICAgICAgICAgICAgICBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5LZXkuVXAsIG1v ZGlmaWVycyk7CisrICAgICAgICAgICAgICAgIHNob3dfYWxsKCk7CisgICAgICAgICAgICAgICAg IHJldHVybiB0cnVlOworICAgICAgICAgICAgIGNhc2UgR2RrLktleS5oOgorLSAgICAgICAgICAg ICAgICBpZiAoa2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChHZGsuS2V5LkhvbWUsIG1vZGlmaWVy cykpCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKy0gICAgICAgICAgICAgICAg YnJlYWs7CisrICAgICAgICAgICAgICAgIGtleV9wcmVzc19jdXJzb3JfaG9tZV9lbmQoR2RrLktl eS5Ib21lLCBtb2RpZmllcnMpOworKyAgICAgICAgICAgICAgICBzaG93X2FsbCgpOworKyAgICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICBjYXNlIEdkay5LZXkuZToKKy0g ICAgICAgICAgICAgICAgaWYgKGtleV9wcmVzc19jdXJzb3JfaG9tZV9lbmQoR2RrLktleS5FbmQs IG1vZGlmaWVycykpCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKy0gICAgICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgICAgIGtleV9wcmVzc19jdXJzb3JfaG9tZV9l bmQoR2RrLktleS5FbmQsIG1vZGlmaWVycyk7CisrICAgICAgICAgICAgICAgIHNob3dfYWxsKCk7 CisrICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgIGNhc2UgR2RrLktl eS51OgorICAgICAgICAgICAgICAgICBpZiAobV9lbnRyeS5nZXRfdGV4dCgpLmxlbmd0aCA+IDAp IHsKKyAgICAgICAgICAgICAgICAgICAgIEdMaWIuU2lnbmFsLmVtaXRfYnlfbmFtZShtX2VudHJ5 LAorQEAgLTIxMDMsMTQgKzI1MDMsNDEgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3Rr LkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgfQorIAorIAorKyAgICBwdWJsaWMgdm9pZCBzZXRf aW5wdXRfY29udGV4dF9wYXRoKHN0cmluZyBpbnB1dF9jb250ZXh0X3BhdGgpIHsKKysgICAgICAg IG1faW5wdXRfY29udGV4dF9wYXRoID0gaW5wdXRfY29udGV4dF9wYXRoOworKyAgICAgICAgaWYg KGlucHV0X2NvbnRleHRfcGF0aCA9PSAiIikgeworKyAgICAgICAgICAgIG1fd2FybmluZ19tZXNz YWdlID0gXygiIiArCisrICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZ2V0IHRoZSBjdXJyZW50 IHRleHQgYXBwbGljYXRpb24uICIgKworKyAgICAgICAgICAgICAgICAiUGxlYXNlIHJlLWZvY3Vz IHlvdXIgYXBwbGljYXRpb24uIEUuZy4gUHJlc3MgRXNjIGtleSAiICsKKysgICAgICAgICAgICAg ICAgInNldmVyYWwgdGltZXMgdG8gcmVsZWFzZSB0aGUgZW1vamkgdHlwaW5nIG1vZGUsICIgKwor KyAgICAgICAgICAgICAgICAiY2xpY2sgeW91ciBkZXNrdG9wIGFuZCBjbGljayB5b3VyIHRleHQg YXBwbGljYXRpb24gYWdhaW4uIgorKyAgICAgICAgICAgICk7CisrICAgICAgICB9IGVsc2Ugewor KyAgICAgICAgICAgIG1fd2FybmluZ19tZXNzYWdlID0gIiI7CisrICAgICAgICB9CisrICAgIH0K KysKKysKKyAgICAgcHVibGljIHN0cmluZyBnZXRfc2VsZWN0ZWRfc3RyaW5nKCkgeworICAgICAg ICAgcmV0dXJuIG1fcmVzdWx0OworICAgICB9CisgCisgCisrICAgIHByaXZhdGUgdm9pZCByZXNl dF93aW5kb3dfbW9kZSgpIHsKKysgICAgICAgIG1fYmFja3dhcmRfaW5kZXggPSAtMTsKKysgICAg ICAgIG1fYmFja3dhcmQgPSBudWxsOworKyAgICAgICAgbV9jYW5kaWRhdGVfcGFuZWxfaXNfdmlz aWJsZSA9IGZhbHNlOworKyAgICAgICAgbV9jYW5kaWRhdGVfcGFuZWxfbW9kZSA9IGZhbHNlOwor KyAgICAgICAgLy8gRG8gbm90IGNsZWFyIG1fbG9va3VwX3RhYmxlIHRvIHdvcmsgd2l0aCBzcGFj ZSBrZXkgbGF0ZXIuCisrICAgIH0KKysKKysKKyAgICAgcHVibGljIHZvaWQgcmVzZXQoKSB7Cisr ICAgICAgICByZXNldF93aW5kb3dfbW9kZSgpOworICAgICAgICAgbV9pbnB1dF9jb250ZXh0X3Bh dGggPSAiIjsKKyAgICAgICAgIG1fcmVzdWx0ID0gbnVsbDsKKysgICAgICAgIG1fY2F0ZWdvcnlf YWN0aXZlX2luZGV4ID0gLTE7CisrICAgICAgICBtX3Nob3dfdW5pY29kZSA9IGZhbHNlOworICAg ICB9CisgCisgCitAQCAtMjE0NSw2ICsyNTcyLDIzIEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamll ciA6IEd0ay5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgIH0KKyAKKyAKKysgICAgcHVibGljIHZv aWQgc2V0X2N1cnNvcl9sb2NhdGlvbihpbnQgeCwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgeSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgd2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdo dCkgeworKyAgICAgICAgR2RrLlJlY3RhbmdsZSBsb2NhdGlvbiA9IEdkay5SZWN0YW5nbGUoKXsK KysgICAgICAgICAgICB4ID0geCwgeSA9IHksIHdpZHRoID0gd2lkdGgsIGhlaWdodCA9IGhlaWdo dCB9OworKyAgICAgICAgaWYgKG1fY3Vyc29yX2xvY2F0aW9uID09IGxvY2F0aW9uKQorKyAgICAg ICAgICAgIHJldHVybjsKKysgICAgICAgIG1fY3Vyc29yX2xvY2F0aW9uID0gbG9jYXRpb247Cisr ICAgIH0KKysKKysKKysgICAgcHVibGljIGJvb2wgaXNfY2FuZGlkYXRlX3BhbmVsX21vZGUoKSB7 CisrICAgICAgICByZXR1cm4gbV9jYW5kaWRhdGVfcGFuZWxfbW9kZTsKKysgICAgfQorKworKwor ICAgICBwdWJsaWMgc3RhdGljIGJvb2wgaGFzX2xvYWRlZF9lbW9qaV9kaWN0KCkgeworICAgICAg ICAgaWYgKG1fZW1vamlfdG9fZGF0YV9kaWN0ID09IG51bGwpCisgICAgICAgICAgICAgcmV0dXJu IGZhbHNlOworQEAgLTIxNjUsNiArMjYwOSwxMCBAQCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIg OiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICB9CisgCisgCisrICAgIHB1YmxpYyBzdGF0 aWMgc3RyaW5nIGdldF9hbm5vdGF0aW9uX2xhbmcoKSB7CisrICAgICAgICByZXR1cm4gbV9jdXJy ZW50X2xhbmdfaWQ7CisrICAgIH0KKysKKyAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldF9lbW9q aV9mb250KHN0cmluZz8gZW1vamlfZm9udCkgeworICAgICAgICAgcmV0dXJuX2lmX2ZhaWwoZW1v amlfZm9udCAhPSBudWxsICYmIGVtb2ppX2ZvbnQgIT0gIiIpOworICAgICAgICAgUGFuZ28uRm9u dERlc2NyaXB0aW9uIGZvbnRfZGVzYyA9CitAQCAtMjE4MiwxOCArMjYzMCwyMSBAQCBwdWJsaWMg Y2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICAgICAgbV9o YXNfcGFydGlhbF9tYXRjaCA9IGhhc19wYXJ0aWFsX21hdGNoOworICAgICB9CisgCisrCisgICAg IHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRfcGFydGlhbF9tYXRjaF9sZW5ndGgoaW50IGxlbmd0aCkg eworICAgICAgICAgaWYgKGxlbmd0aCA8IDEpCisgICAgICAgICAgICAgcmV0dXJuOworICAgICAg ICAgbV9wYXJ0aWFsX21hdGNoX2xlbmd0aCA9IGxlbmd0aDsKKyAgICAgfQorIAorKworICAgICBw dWJsaWMgc3RhdGljIHZvaWQgc2V0X3BhcnRpYWxfbWF0Y2hfY29uZGl0aW9uKGludCBjb25kaXRp b24pIHsKKyAgICAgICAgIGlmIChjb25kaXRpb24gPCAwKQorICAgICAgICAgICAgIHJldHVybjsK KyAgICAgICAgIG1fcGFydGlhbF9tYXRjaF9jb25kaXRpb24gPSBjb25kaXRpb247CisgICAgIH0K KyAKKysKKyAgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldF9mYXZvcml0ZXMoc3RyaW5nW10/IHVu b3duZWRfZmF2b3JpdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJpbmdbXT8gdW5vd25lZF9mYXZvcml0ZV9hbm5vdGF0aW9ucykgeworICAgICAgICAgbV9mYXZv cml0ZXMgPSB7fTsKK2RpZmYgLS1naXQgYS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYSBiL3VpL2d0 azMvZW1vamllcmFwcC52YWxhCitpbmRleCA5NTA2YTk0NS4uNzg3ZDQ0OGYgMTAwNjQ0CistLS0g YS91aS9ndGszL2Vtb2ppZXJhcHAudmFsYQorKysrIGIvdWkvZ3RrMy9lbW9qaWVyYXBwLnZhbGEK K0BAIC0yOCw4ICsyOCw5IEBAIGludCBwYXJ0aWFsX21hdGNoX2NvbmRpdGlvbiA9IC0xOworIAor IHB1YmxpYyBjbGFzcyBFbW9qaUFwcGxpY2F0aW9uIDogR3RrLkFwcGxpY2F0aW9uIHsKKyAgICAg cHJpdmF0ZSBJQnVzRW1vamllcj8gbV9lbW9qaWVyOworLSAgICBHTGliLlNldHRpbmdzIG1fc2V0 dGluZ3NfZW1vamkgPQorKyAgICBwcml2YXRlIEdMaWIuU2V0dGluZ3MgbV9zZXR0aW5nc19lbW9q aSA9CisgICAgICAgICAgICAgbmV3IEdMaWIuU2V0dGluZ3MoIm9yZy5mcmVlZGVza3RvcC5pYnVz LnBhbmVsLmVtb2ppIik7CisrICAgIHByaXZhdGUgQXBwbGljYXRpb25Db21tYW5kTGluZT8gbV9j b21tYW5kX2xpbmUgPSBudWxsOworIAorIAorICAgICBwcml2YXRlIEVtb2ppQXBwbGljYXRpb24o KSB7CitAQCAtNDAsMjUgKzQxLDM5IEBAIHB1YmxpYyBjbGFzcyBFbW9qaUFwcGxpY2F0aW9uIDog R3RrLkFwcGxpY2F0aW9uIHsKKyAKKyAKKyAgICAgcHJpdmF0ZSB2b2lkIHNob3dfZGlhbG9nKEFw cGxpY2F0aW9uQ29tbWFuZExpbmUgY29tbWFuZF9saW5lKSB7CistICAgICAgICBtX2Vtb2ppZXIg PSBuZXcgSUJ1c0Vtb2ppZXIoKTsKKy0gICAgICAgIC8vIEZvciB0aXRsZSBoYW5kbGluZyBpbiBn bm9tZS1zaGVsbAorLSAgICAgICAgYWRkX3dpbmRvdyhtX2Vtb2ppZXIpOworLSAgICAgICAgR2Rr LkV2ZW50IGV2ZW50ID0gR3RrLmdldF9jdXJyZW50X2V2ZW50KCk7CistICAgICAgICAvLyBQbGFz bWEgYW5kIEdOT01FMyBkZXNrdG9wIHJldHVybnMgbnVsbCBldmVudAorLSAgICAgICAgaWYgKGV2 ZW50ID09IG51bGwpIHsKKy0gICAgICAgICAgICBldmVudCA9IG5ldyBHZGsuRXZlbnQoR2RrLkV2 ZW50VHlwZS5LRVlfUFJFU1MpOworLSAgICAgICAgICAgIGV2ZW50LmtleS50aW1lID0gR2RrLkNV UlJFTlRfVElNRTsKKy0gICAgICAgICAgICAvLyBldmVudC5nZXRfc2VhdCgpIHJlZmVycyBldmVu dC5hbnkud2luZG93CistICAgICAgICAgICAgZXZlbnQua2V5LndpbmRvdyA9IEdkay5nZXRfZGVm YXVsdF9yb290X3dpbmRvdygpOworLSAgICAgICAgICAgIGV2ZW50LmtleS53aW5kb3cucmVmKCk7 CisrICAgICAgICBtX2NvbW1hbmRfbGluZSA9IGNvbW1hbmRfbGluZTsKKysgICAgICAgIG1fZW1v amllci5yZXNldCgpOworKyAgICAgICAgbV9lbW9qaWVyLnNldF9hbm5vdGF0aW9uKCIiKTsKKysg ICAgICAgIG1fZW1vamllci5zaG93X2FsbCgpOworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyB2 b2lkIGNhbmRpZGF0ZV9jbGlja2VkX2xvb2t1cF90YWJsZSh1aW50IGluZGV4LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBidXR0b24sCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IHN0YXRlKSB7 CisrICAgICAgICBpZiAobV9jb21tYW5kX2xpbmUgPT0gbnVsbCkKKysgICAgICAgICAgICByZXR1 cm47CisrICAgICAgICBpZiAoYnV0dG9uID09IElCdXNFbW9qaWVyLkJVVFRPTl9DTE9TRV9CVVRU T04pIHsKKysgICAgICAgICAgICBtX2Vtb2ppZXIuaGlkZSgpOworKyAgICAgICAgICAgIG1fY29t bWFuZF9saW5lLnByaW50KCIlc1xuIiwgXygiQ2FuY2VsZWQgdG8gY2hvb3NlIGFuIGVtb2ppLiIp KTsKKysgICAgICAgICAgICBtX2NvbW1hbmRfbGluZSA9IG51bGw7CisrICAgICAgICAgICAgcmV0 dXJuOworICAgICAgICAgfQorLSAgICAgICAgc3RyaW5nIGVtb2ppID0gbV9lbW9qaWVyLnJ1bigi IiwgZXZlbnQpOworLSAgICAgICAgcmVtb3ZlX3dpbmRvdyhtX2Vtb2ppZXIpOworLSAgICAgICAg aWYgKGVtb2ppID09IG51bGwpIHsKKy0gICAgICAgICAgICBtX2Vtb2ppZXIgPSBudWxsOworLSAg ICAgICAgICAgIGNvbW1hbmRfbGluZS5wcmludCgiJXNcbiIsIF8oIkNhbmNlbGVkIHRvIGNob29z ZSBhbiBlbW9qaS4iKSk7CisrICAgICAgICBpZiAobV9lbW9qaWVyID09IG51bGwpCisrICAgICAg ICAgICAgcmV0dXJuOworKyAgICAgICAgYm9vbCBzaG93X2NhbmRpZGF0ZSA9IGZhbHNlOworKyAg ICAgICAgdWludCBuY2FuZGlkYXRlcyA9IG1fZW1vamllci5nZXRfbnVtYmVyX29mX2NhbmRpZGF0 ZXMoKTsKKysgICAgICAgIGlmIChuY2FuZGlkYXRlcyA+IDAgJiYgbmNhbmRpZGF0ZXMgPj0gaW5k ZXgpIHsKKysgICAgICAgICAgICBtX2Vtb2ppZXIuc2V0X2N1cnNvcl9wb3MoaW5kZXgpOworKyAg ICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0gbV9lbW9qaWVyLmhhc192YXJpYW50cyhpbmRleCk7 CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysg ICAgICAgIGlmIChzaG93X2NhbmRpZGF0ZSkgeworICAgICAgICAgICAgIHJldHVybjsKKyAgICAg ICAgIH0KKysgICAgICAgIHN0cmluZyBlbW9qaSA9IG1fZW1vamllci5nZXRfY3VycmVudF9jYW5k aWRhdGUoKTsKKysgICAgICAgIG1fZW1vamllci5oaWRlKCk7CisgICAgICAgICBHdGsuQ2xpcGJv YXJkIGNsaXBib2FyZCA9IEd0ay5DbGlwYm9hcmQuZ2V0KEdkay5TRUxFQ1RJT05fQ0xJUEJPQVJE KTsKKyAgICAgICAgIGNsaXBib2FyZC5zZXRfdGV4dChlbW9qaSwgLTEpOworICAgICAgICAgY2xp cGJvYXJkLnN0b3JlKCk7CitAQCAtNzUsOSArOTAsOCBAQCBwdWJsaWMgY2xhc3MgRW1vamlBcHBs aWNhdGlvbiA6IEd0ay5BcHBsaWNhdGlvbiB7CisgICAgICAgICAgICAgZW1vamllcl9mYXZvcml0 ZXMgKz0gZW1vamk7CisgICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5zZXRfc3RydigiZmF2 b3JpdGVzIiwgZW1vamllcl9mYXZvcml0ZXMpOworICAgICAgICAgfQorLQorLSAgICAgICAgbV9l bW9qaWVyID0gbnVsbDsKKy0gICAgICAgIGNvbW1hbmRfbGluZS5wcmludCgiJXNcbiIsIF8oIkNv cGllZCBhbiBlbW9qaSB0byB5b3VyIGNsaXBib2FyZC4iKSk7CisrICAgICAgICBtX2NvbW1hbmRf bGluZS5wcmludCgiJXNcbiIsIF8oIkNvcGllZCBhbiBlbW9qaSB0byB5b3VyIGNsaXBib2FyZC4i KSk7CisrICAgICAgICBtX2NvbW1hbmRfbGluZSA9IG51bGw7CisgICAgIH0KKyAKKyAKK0BAIC04 OCw3ICsxMDIsNyBAQCBwdWJsaWMgY2xhc3MgRW1vamlBcHBsaWNhdGlvbiA6IEd0ay5BcHBsaWNh dGlvbiB7CisgICAgIH0KKyAKKyAKKy0gICAgcHJpdmF0ZSBpbnQgX2NvbW1hbmRfbGluZSAoQXBw bGljYXRpb25Db21tYW5kTGluZSBjb21tYW5kX2xpbmUpIHsKKysgICAgcHJpdmF0ZSBpbnQgX2Nv bW1hbmRfbGluZShBcHBsaWNhdGlvbkNvbW1hbmRMaW5lIGNvbW1hbmRfbGluZSkgeworICAgICAg ICAgLy8gU2V0IGRlZmF1bHQgZm9udCBzaXplCisgICAgICAgICBJQnVzRW1vamllci5zZXRfZW1v amlfZm9udChtX3NldHRpbmdzX2Vtb2ppLmdldF9zdHJpbmcoImZvbnQiKSk7CisgCitAQCAtMTgx LDEzICsxOTUsMjIgQEAgcHVibGljIGNsYXNzIEVtb2ppQXBwbGljYXRpb24gOiBHdGsuQXBwbGlj YXRpb24geworIAorICAgICAgICAgSUJ1c0Vtb2ppZXIubG9hZF91bmljb2RlX2RpY3QoKTsKKyAK KysgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkgeworKyAgICAgICAgICAgIG1fZW1vamll ciA9IG5ldyBJQnVzRW1vamllcigpOworKyAgICAgICAgICAgIC8vIEZvciB0aXRsZSBoYW5kbGlu ZyBpbiBnbm9tZS1zaGVsbAorKyAgICAgICAgICAgIGFkZF93aW5kb3cobV9lbW9qaWVyKTsKKysg ICAgICAgICAgICBtX2Vtb2ppZXIuY2FuZGlkYXRlX2NsaWNrZWQuY29ubmVjdCgoaSwgYiwgcykg PT4geworKyAgICAgICAgICAgICAgICBjYW5kaWRhdGVfY2xpY2tlZF9sb29rdXBfdGFibGUoaSwg Yiwgcyk7CisrICAgICAgICAgICAgfSk7CisrICAgICAgICB9CisrCisgICAgICAgICBhY3RpdmF0 ZV9kaWFsb2coY29tbWFuZF9saW5lKTsKKyAKKyAgICAgICAgIHJldHVybiBQb3NpeC5FWElUX1NV Q0NFU1M7CisgICAgIH0KKyAKKyAKKy0gICAgcHVibGljIG92ZXJyaWRlIGludCBjb21tYW5kX2xp bmUgKEFwcGxpY2F0aW9uQ29tbWFuZExpbmUgY29tbWFuZF9saW5lKSB7CisrICAgIHB1YmxpYyBv dmVycmlkZSBpbnQgY29tbWFuZF9saW5lKEFwcGxpY2F0aW9uQ29tbWFuZExpbmUgY29tbWFuZF9s aW5lKSB7CisgICAgICAgICAvLyBrZWVwIHRoZSBhcHBsaWNhdGlvbiBydW5uaW5nIHVudGlsIHdl IGFyZSBkb25lIHdpdGggdGhpcyBjb21tYW5kbGluZQorICAgICAgICAgdGhpcy5ob2xkKCk7Cisg ICAgICAgICBpbnQgcmVzdWx0ID0gX2NvbW1hbmRfbGluZShjb21tYW5kX2xpbmUpOworQEAgLTE5 Niw2ICsyMTksMTMgQEAgcHVibGljIGNsYXNzIEVtb2ppQXBwbGljYXRpb24gOiBHdGsuQXBwbGlj YXRpb24geworICAgICB9CisgCisgCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHNodXRkb3du KCkgeworKyAgICAgICAgYmFzZS5zaHV0ZG93bigpOworKyAgICAgICAgcmVtb3ZlX3dpbmRvdyht X2Vtb2ppZXIpOworKyAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsKKysgICAgfQorKworKworICAg ICBwdWJsaWMgc3RhdGljIGludCBtYWluIChzdHJpbmdbXSBhcmdzKSB7CisgICAgICAgICBHTGli LkludGwuYmluZHRleHRkb21haW4oQ29uZmlnLkdFVFRFWFRfUEFDS0FHRSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBDb25maWcuR0xJQl9MT0NBTEVfRElSKTsKK2RpZmYgLS1n aXQgYS91aS9ndGszL2V4dGVuc2lvbi52YWxhIGIvdWkvZ3RrMy9leHRlbnNpb24udmFsYQoraW5k ZXggN2Q2ZDc2ZTcuLmM3MjlmZDdlIDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9leHRlbnNpb24udmFs YQorKysrIGIvdWkvZ3RrMy9leHRlbnNpb24udmFsYQorQEAgLTUwLDIwICs1MCwyMCBAQCBjbGFz cyBFeHRlbnNpb25HdGsgOiBHdGsuQXBwbGljYXRpb24geworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cyIsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIk5hbWVBY3F1aXJlZCIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIi9vcmcvZnJlZWRlc2t0b3AvREJ1cyIsCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSUJ1cy5TRVJWSUNFX1BBTkVMX0VYVEVOU0lPTiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzLlNFUlZJQ0VfUEFORUxfRVhU RU5TSU9OX0VNT0pJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERCdXNT aWduYWxGbGFncy5OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1 c19uYW1lX2FjcXVpcmVkX2NiKTsKKyAgICAgICAgIGNvbm5lY3Rpb24uc2lnbmFsX3N1YnNjcmli ZSgib3JnLmZyZWVkZXNrdG9wLkRCdXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJvcmcuZnJlZWRlc2t0b3AuREJ1cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIk5hbWVMb3N0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAiL29yZy9mcmVlZGVza3RvcC9EQnVzIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBJQnVzLlNFUlZJQ0VfUEFORUxfRVhURU5TSU9OLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIElCdXMuU0VSVklDRV9QQU5FTF9FWFRFTlNJT05fRU1PSkks CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREJ1c1NpZ25hbEZsYWdzLk5P TkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVzX25hbWVfbG9zdF9j Yik7CisgICAgICAgICB2YXIgZmxhZ3MgPQorICAgICAgICAgICAgICAgICBJQnVzLkJ1c05hbWVG bGFnLkFMTE9XX1JFUExBQ0VNRU5UIHwKKyAgICAgICAgICAgICAgICAgSUJ1cy5CdXNOYW1lRmxh Zy5SRVBMQUNFX0VYSVNUSU5HOworLSAgICAgICAgbV9idXMucmVxdWVzdF9uYW1lKElCdXMuU0VS VklDRV9QQU5FTF9FWFRFTlNJT04sIGZsYWdzKTsKKysgICAgICAgIG1fYnVzLnJlcXVlc3RfbmFt ZShJQnVzLlNFUlZJQ0VfUEFORUxfRVhURU5TSU9OX0VNT0pJLCBmbGFncyk7CisgICAgIH0KKyAK KyAKK2RpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsLnZhbGEgYi91aS9ndGszL3BhbmVsLnZhbGEK K2luZGV4IGQ5MjM4Yzg5Li40YzNiMDBjYSAxMDA2NDQKKy0tLSBhL3VpL2d0azMvcGFuZWwudmFs YQorKysrIGIvdWkvZ3RrMy9wYW5lbC52YWxhCitAQCAtMTE0OCwyNiArMTE0OCwxNSBAQCBjbGFz cyBQYW5lbCA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAjaWYgRU1PSklfRElDVAorICAgICAgICAg ICAgIGl0ZW0gPSBuZXcgR3RrLk1lbnVJdGVtLndpdGhfbGFiZWwoXygiRW1vamkgQ2hvaWNlIikp OworICAgICAgICAgICAgIGl0ZW0uYWN0aXZhdGUuY29ubmVjdCgoaSkgPT4geworLSAgICAgICAg ICAgICAgICBHZGsuRXZlbnQgZXZlbnQgPSBHdGsuZ2V0X2N1cnJlbnRfZXZlbnQoKTsKKy0gICAg ICAgICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKKy0gICAgICAgICAgICAgICAgICAgIGV2 ZW50ID0gbmV3IEdkay5FdmVudChHZGsuRXZlbnRUeXBlLktFWV9QUkVTUyk7CistICAgICAgICAg ICAgICAgICAgICBldmVudC5rZXkudGltZSA9IEdkay5DVVJSRU5UX1RJTUU7CistICAgICAgICAg ICAgICAgICAgICAvLyBldmVudC5nZXRfc2VhdCgpIHJlZmVycyBldmVudC5hbnkud2luZG93Cist ICAgICAgICAgICAgICAgICAgICBldmVudC5rZXkud2luZG93ID0gR2RrLmdldF9kZWZhdWx0X3Jv b3Rfd2luZG93KCk7CistICAgICAgICAgICAgICAgICAgICBldmVudC5rZXkud2luZG93LnJlZigp OworLSAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIElCdXMuWEV2ZW50IHhldmVu dCA9IG5ldyBJQnVzLlhFdmVudCgKKy0gICAgICAgICAgICAgICAgICAgICAgICAiZXZlbnQtdHlw ZSIsIElCdXMuWEV2ZW50VHlwZS5LRVlfUFJFU1MsCistICAgICAgICAgICAgICAgICAgICAgICAg IndpbmRvdyIsCistICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZW50LmtleS53aW5kb3cgYXMg R2RrLlgxMS5XaW5kb3cpLmdldF94aWQoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAidGlt ZSIsIGV2ZW50LmtleS50aW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJwdXJwb3NlIiwg ImVtb2ppIik7CistICAgICAgICAgICAgICAgIC8qIG5ldyBHTGliLlZhcmlhbnQoIihzdikiLCAi ZW1vamkiLCB4ZXZlbnQuc2VyaWFsaXplX29iamVjdCgpKQorKyAgICAgICAgICAgICAgICBJQnVz LkV4dGVuc2lvbkV2ZW50IGV2ZW50ID0gbmV3IElCdXMuRXh0ZW5zaW9uRXZlbnQoCisrICAgICAg ICAgICAgICAgICAgICAgICAgIm5hbWUiLCAiZW1vamkiLCAiaXMtZW5hYmxlZCIsIHRydWUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtcyIsICJjYXRlZ29yeS1saXN0Iik7CisrICAg ICAgICAgICAgICAgIC8qIG5ldyBHTGliLlZhcmlhbnQoIihzdikiLCAiZW1vamkiLCBldmVudC5z ZXJpYWxpemVfb2JqZWN0KCkpCisgICAgICAgICAgICAgICAgICAqIHdpbGwgY2FsbCBnX3Zhcmlh bnRfdW5yZWYoKSBmb3IgdGhlIGNoaWxkIHZhcmlhbnQgYnkgdmFsYS4KKyAgICAgICAgICAgICAg ICAgICogSSBoYXZlIG5vIGlkZWEgbm90IHRvIHVucmVmIHRoZSBvYmplY3Qgc28gaW50ZWdyYXRl ZAorLSAgICAgICAgICAgICAgICAgKiB0aGUgcHVycG9zZSB0byBJQnVzLlhFdmVudCBhYm92ZS4K KysgICAgICAgICAgICAgICAgICogdGhlIHB1cnBvc2UgdG8gSUJ1cy5FeHRlbnNpb25FdmVudCBh Ym92ZS4KKyAgICAgICAgICAgICAgICAgICovCistICAgICAgICAgICAgICAgIHBhbmVsX2V4dGVu c2lvbih4ZXZlbnQuc2VyaWFsaXplX29iamVjdCgpKTsKKysgICAgICAgICAgICAgICAgcGFuZWxf ZXh0ZW5zaW9uKGV2ZW50KTsKKyAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICBtX3N5c19t ZW51LmFwcGVuZChpdGVtKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS91aS9ndGszL3BhbmVsYmlu ZGluZy52YWxhIGIvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQoraW5kZXggNTgxZjcyMWUuLjUy Yjc4YzE3IDEwMDY0NAorLS0tIGEvdWkvZ3RrMy9wYW5lbGJpbmRpbmcudmFsYQorKysrIGIvdWkv Z3RrMy9wYW5lbGJpbmRpbmcudmFsYQorQEAgLTIxLDcgKzIxLDE5MyBAQAorICAqIFVTQQorICAq LworIAorK2NsYXNzIFByZWVkaXQgOiBHdGsuV2luZG93IHsKKysgICAgcHJpdmF0ZSBHdGsuTGFi ZWwgbV9leHRlbnNpb25fcHJlZWRpdF90ZXh0OworKyAgICBwcml2YXRlIEd0ay5MYWJlbCBtX2V4 dGVuc2lvbl9wcmVlZGl0X2Vtb2ppOworKyAgICBwcml2YXRlIElCdXMuVGV4dD8gbV9lbmdpbmVf cHJlZWRpdF90ZXh0OworKyAgICBwcml2YXRlIGJvb2wgbV9lbmdpbmVfcHJlZWRpdF90ZXh0X3No b3c7CisrICAgIHByaXZhdGUgdWludCBtX2VuZ2luZV9wcmVlZGl0X2N1cnNvcl9wb3M7CisrICAg IHByaXZhdGUgc3RyaW5nIG1fcHJlZml4ID0gIkAiOworKyAgICBwcml2YXRlIGJvb2wgbV9pc19z aG93biA9IHRydWU7CisrCisrCisrICAgIHB1YmxpYyBQcmVlZGl0KCkgeworKyAgICAgICAgR0xp Yi5PYmplY3QoCisrICAgICAgICAgICAgbmFtZSA6ICJJQnVzUHJlZWRpdCIsCisrICAgICAgICAg ICAgdHlwZTogR3RrLldpbmRvd1R5cGUuUE9QVVAKKysgICAgICAgICk7CisrICAgICAgICBtX2V4 dGVuc2lvbl9wcmVlZGl0X3RleHQgID0gbmV3IEd0ay5MYWJlbCgiIik7CisrICAgICAgICBtX2V4 dGVuc2lvbl9wcmVlZGl0X2Vtb2ppICA9IG5ldyBHdGsuTGFiZWwoIiIpOworKyAgICB9CisrCisr CisrICAgIHB1YmxpYyBuZXcgdm9pZCBoaWRlKCkgeworKyAgICAgICAgcmVzZXQoKTsKKysgICAg ICAgIGJhc2UuaGlkZSgpOworKyAgICAgICAgbV9pc19zaG93biA9IGZhbHNlOworKyAgICB9Cisr CisrCisrICAgIHB1YmxpYyBib29sIGlzX3Nob3duKCkgeworKyAgICAgICAgcmV0dXJuIG1faXNf c2hvd247CisrICAgIH0KKysKKysKKysgICAgcHVibGljIHZvaWQgcmVzZXQoKSB7CisrICAgICAg ICBzZXRfZW1vamkoIiIpOworKyAgICAgICAgc2V0X3RleHQoIiIpOworKyAgICAgICAgcmVzaXpl KDEsIDEpOworKyAgICAgICAgbV9pc19zaG93biA9IHRydWU7CisrICAgIH0KKysKKysgICAgcHVi bGljIHZvaWQgYXBwZW5kX3RleHQoc3RyaW5nIHRleHQpIHsKKysgICAgICAgIGlmICh0ZXh0Lmxl bmd0aCA9PSAwKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIHN0cmluZyB0b3RhbCA9 IG1fZXh0ZW5zaW9uX3ByZWVkaXRfdGV4dC5nZXRfdGV4dCgpOworKyAgICAgICAgdG90YWwgKz0g dGV4dDsKKysgICAgICAgIG1fZXh0ZW5zaW9uX3ByZWVkaXRfdGV4dC5zZXRfdGV4dCh0b3RhbCk7 CisrICAgIH0KKysKKysKKysgICAgcHVibGljIHN0cmluZyBnZXRfdGV4dCgpIHsKKysgICAgICAg IHJldHVybiBtX2V4dGVuc2lvbl9wcmVlZGl0X3RleHQuZ2V0X3RleHQoKTsKKysgICAgfQorKwor KworKyAgICBwdWJsaWMgdm9pZCBzZXRfdGV4dChzdHJpbmcgdGV4dCkgeworKyAgICAgICAgbV9l eHRlbnNpb25fcHJlZWRpdF90ZXh0LnNldF90ZXh0KHRleHQpOworKyAgICB9CisrCisrCisrICAg IHB1YmxpYyBzdHJpbmcgZ2V0X2Vtb2ppKCkgeworKyAgICAgICAgcmV0dXJuIG1fZXh0ZW5zaW9u X3ByZWVkaXRfZW1vamkuZ2V0X3RleHQoKTsKKysgICAgfQorKworKworKyAgICBwdWJsaWMgdm9p ZCBzZXRfZW1vamkoc3RyaW5nIHRleHQpIHsKKysgICAgICAgIG1fZXh0ZW5zaW9uX3ByZWVkaXRf ZW1vamkuc2V0X3RleHQodGV4dCk7CisrICAgIH0KKysKKysKKysgICAgcHVibGljIGJvb2wgYmFj a3NwYWNlKCkgeworKyAgICAgICAgc3RyaW5nIHRvdGFsID0gbV9leHRlbnNpb25fcHJlZWRpdF9l bW9qaS5nZXRfdGV4dCgpOworKyAgICAgICAgaWYgKHRvdGFsLmxlbmd0aCA+IDApIHsKKysgICAg ICAgICAgICBtX2V4dGVuc2lvbl9wcmVlZGl0X2Vtb2ppLnNldF90ZXh0KCIiKTsKKysgICAgICAg ICAgICByZXNpemUoMSwgMSk7CisrICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICAgICAg fQorKyAgICAgICAgdG90YWwgPSBtX2V4dGVuc2lvbl9wcmVlZGl0X3RleHQuZ2V0X3RleHQoKTsK KysgICAgICAgIGludCBjaGFyX2NvdW50ID0gdG90YWwuY2hhcl9jb3VudCgpOworKyAgICAgICAg aWYgKGNoYXJfY291bnQgPT0gMCkKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAg IHRvdGFsID0gdG90YWxbMDp0b3RhbC5pbmRleF9vZl9udGhfY2hhcihjaGFyX2NvdW50IC0gMSld OworKyAgICAgICAgcmVzaXplKDEsIDEpOworKyAgICAgICAgbV9leHRlbnNpb25fcHJlZWRpdF90 ZXh0LnNldF90ZXh0KHRvdGFsKTsKKysgICAgICAgIGlmICh0b3RhbC5sZW5ndGggPT0gMCkKKysg ICAgICAgICAgICByZXNpemUoMSwgMSk7CisrICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgfQor KworKworKyAgICBwcml2YXRlIHN0cmluZyBnZXRfZXh0ZW5zaW9uX3RleHQgKCkgeworKyAgICAg ICAgc3RyaW5nIGV4dGVuc2lvbl90ZXh0ID0gbV9leHRlbnNpb25fcHJlZWRpdF9lbW9qaS5nZXRf dGV4dCgpOworKyAgICAgICAgaWYgKGV4dGVuc2lvbl90ZXh0Lmxlbmd0aCA9PSAwKQorKyAgICAg ICAgICAgIGV4dGVuc2lvbl90ZXh0ID0gbV9leHRlbnNpb25fcHJlZWRpdF90ZXh0LmdldF90ZXh0 KCk7CisrICAgICAgICByZXR1cm4gbV9wcmVmaXggKyBleHRlbnNpb25fdGV4dDsKKysgICAgfQor KworKworKyAgICBwcml2YXRlIHZvaWQgc2V0X3ByZWVkaXRfY29sb3IoSUJ1cy5UZXh0IHRleHQs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IHN0YXJ0X2luZGV4LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBlbmRfaW5kZXgpIHsKKysg ICAgICAgIHRleHQuYXBwZW5kX2F0dHJpYnV0ZShJQnVzLkF0dHJUeXBlLlVOREVSTElORSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJQnVzLkF0dHJVbmRlcmxpbmUuU0lOR0xFLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0X2luZGV4LCAoaW50KWVuZF9pbmRl eCk7CisrICAgIH0KKysKKysKKysgICAgcHVibGljIElCdXMuVGV4dCBnZXRfZW5naW5lX3ByZWVk aXRfdGV4dCgpIHsKKysgICAgICAgIHN0cmluZyBleHRlbnNpb25fdGV4dCA9IGdldF9leHRlbnNp b25fdGV4dCgpOworKyAgICAgICAgdWludCBjaGFyX2NvdW50ID0gZXh0ZW5zaW9uX3RleHQuY2hh cl9jb3VudCgpOworKyAgICAgICAgSUJ1cy5UZXh0IHJldHZhbDsKKysgICAgICAgIGlmIChtX2Vu Z2luZV9wcmVlZGl0X3RleHQgPT0gbnVsbCB8fCAhbV9lbmdpbmVfcHJlZWRpdF90ZXh0X3Nob3cp IHsKKysgICAgICAgICAgICByZXR2YWwgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKGV4dGVu c2lvbl90ZXh0KTsKKysgICAgICAgICAgICBzZXRfcHJlZWRpdF9jb2xvcihyZXR2YWwsIDAsIGNo YXJfY291bnQpOworKyAgICAgICAgICAgIHJldHVybiByZXR2YWw7CisrICAgICAgICB9CisrICAg ICAgICByZXR2YWwgPSBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKAorKyAgICAgICAgICAgICAg ICBleHRlbnNpb25fdGV4dCArIG1fZW5naW5lX3ByZWVkaXRfdGV4dC5nZXRfdGV4dCgpKTsKKysg ICAgICAgIHNldF9wcmVlZGl0X2NvbG9yKHJldHZhbCwgMCwgY2hhcl9jb3VudCk7CisrCisrICAg ICAgICB1bm93bmVkIElCdXMuQXR0ckxpc3QgYXR0cnMgPSBtX2VuZ2luZV9wcmVlZGl0X3RleHQu Z2V0X2F0dHJpYnV0ZXMoKTsKKysKKysgICAgICAgIGlmIChhdHRycyA9PSBudWxsKQorKyAgICAg ICAgICAgIHJldHVybiByZXR2YWw7CisrCisrICAgICAgICBpbnQgaSA9IDA7CisrICAgICAgICB3 aGlsZSAodHJ1ZSkgeworKyAgICAgICAgICAgIElCdXMuQXR0cmlidXRlIGF0dHIgPSBhdHRycy5n ZXQoaSsrKTsKKysgICAgICAgICAgICBpZiAoYXR0ciA9PSBudWxsKQorKyAgICAgICAgICAgICAg ICBicmVhazsKKysgICAgICAgICAgICBsb25nIHN0YXJ0X2luZGV4ID0gYXR0ci5zdGFydF9pbmRl eDsKKysgICAgICAgICAgICBsb25nIGVuZF9pbmRleCA9IGF0dHIuZW5kX2luZGV4OworKyAgICAg ICAgICAgIGlmIChzdGFydF9pbmRleCA8IDApCisrICAgICAgICAgICAgICAgIHN0YXJ0X2luZGV4 ID0gMDsKKysgICAgICAgICAgICBpZiAoZW5kX2luZGV4IDwgMCkKKysgICAgICAgICAgICAgICAg ZW5kX2luZGV4ID0gbV9lbmdpbmVfcHJlZWRpdF90ZXh0LmdldF9sZW5ndGgoKTsKKysgICAgICAg ICAgICByZXR2YWwuYXBwZW5kX2F0dHJpYnV0ZShhdHRyLnR5cGUsIGF0dHIudmFsdWUsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcl9jb3VudCArICh1aW50KXN0YXJ0 X2luZGV4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpY2hhcl9j b3VudCArIChpbnQpZW5kX2luZGV4KTsKKysgICAgICAgIH0KKysgICAgICAgIHJldHVybiByZXR2 YWw7CisrICAgIH0KKysKKysKKysgICAgcHVibGljIHZvaWQgc2V0X2VuZ2luZV9wcmVlZGl0X3Rl eHQoSUJ1cy5UZXh0PyB0ZXh0KSB7CisrICAgICAgICBtX2VuZ2luZV9wcmVlZGl0X3RleHQgPSB0 ZXh0OworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyB2b2lkIHNob3dfZW5naW5lX3ByZWVkaXRf dGV4dCgpIHsKKysgICAgICAgIG1fZW5naW5lX3ByZWVkaXRfdGV4dF9zaG93ID0gdHJ1ZTsKKysg ICAgfQorKworKworKyAgICBwdWJsaWMgdm9pZCBoaWRlX2VuZ2luZV9wcmVlZGl0X3RleHQoKSB7 CisrICAgICAgICBtX2VuZ2luZV9wcmVlZGl0X3RleHRfc2hvdyA9IGZhbHNlOworKyAgICB9Cisr CisrCisrICAgIHB1YmxpYyB1aW50IGdldF9lbmdpbmVfcHJlZWRpdF9jdXJzb3JfcG9zKCkgewor KyAgICAgICAgcmV0dXJuIGdldF9leHRlbnNpb25fdGV4dCgpLmNoYXJfY291bnQoKSArIG1fZW5n aW5lX3ByZWVkaXRfY3Vyc29yX3BvczsKKysgICAgfQorKworKworKyAgICBwdWJsaWMgdm9pZCBz ZXRfZW5naW5lX3ByZWVkaXRfY3Vyc29yX3Bvcyh1aW50IGN1cnNvcl9wb3MpIHsKKysgICAgICAg IG1fZW5naW5lX3ByZWVkaXRfY3Vyc29yX3BvcyA9IGN1cnNvcl9wb3M7CisrICAgIH0KKysKKysK KysgICAgcHVibGljIElCdXMuVGV4dCBnZXRfY29tbWl0X3RleHQoKSB7CisrICAgICAgICBzdHJp bmcgZXh0ZW5zaW9uX3RleHQgPSBtX2V4dGVuc2lvbl9wcmVlZGl0X2Vtb2ppLmdldF90ZXh0KCk7 CisrICAgICAgICBpZiAoZXh0ZW5zaW9uX3RleHQubGVuZ3RoID09IDApCisrICAgICAgICAgICAg ZXh0ZW5zaW9uX3RleHQgPSBtX2V4dGVuc2lvbl9wcmVlZGl0X3RleHQuZ2V0X3RleHQoKTsKKysg ICAgICAgIHJldHVybiBuZXcgSUJ1cy5UZXh0LmZyb21fc3RyaW5nKGV4dGVuc2lvbl90ZXh0KTsK KysgICAgfQorKworKworKyAgICBwdWJsaWMgdm9pZCBzZXRfZXh0ZW5zaW9uX25hbWUoc3RyaW5n IGV4dGVuc2lvbl9uYW1lKSB7CisrICAgICAgICBpZiAoZXh0ZW5zaW9uX25hbWUubGVuZ3RoID09 IDApCisrICAgICAgICAgICAgbV9wcmVmaXggPSAiQCI7CisrICAgICAgICBlbHNlCisrICAgICAg ICAgICAgbV9wcmVmaXggPSBleHRlbnNpb25fbmFtZVswOjFdOworKyAgICB9CisrfQorKworKwor IGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKysgICAgcHJpdmF0ZSBi b29sIG1faXNfd2F5bGFuZDsKKysgICAgcHJpdmF0ZSBib29sIG1fd2F5bGFuZF9sb29rdXBfdGFi bGVfaXNfdmlzaWJsZTsKKyAgICAgcHJpdmF0ZSBJQnVzLkJ1cyBtX2J1czsKKyAgICAgcHJpdmF0 ZSBHdGsuQXBwbGljYXRpb24gbV9hcHBsaWNhdGlvbjsKKyAgICAgcHJpdmF0ZSBHTGliLlNldHRp bmdzIG1fc2V0dGluZ3NfcGFuZWwgPSBudWxsOworQEAgLTM4LDE4ICsyMjQsMjYgQEAgY2xhc3Mg UGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICBwcml2YXRlIGJvb2wgbV9s b2FkZWRfZW1vamkgPSBmYWxzZTsKKyAgICAgcHJpdmF0ZSBib29sIG1fbG9hZF91bmljb2RlX2F0 X3N0YXJ0dXA7CisgICAgIHByaXZhdGUgYm9vbCBtX2xvYWRlZF91bmljb2RlID0gZmFsc2U7Cisr ICAgIHByaXZhdGUgYm9vbCBtX2VuYWJsZV9leHRlbnNpb247CisrICAgIHByaXZhdGUgc3RyaW5n IG1fZXh0ZW5zaW9uX25hbWUgPSAiIjsKKysgICAgcHJpdmF0ZSBQcmVlZGl0IG1fcHJlZWRpdDsK KyAKKyAgICAgcHVibGljIFBhbmVsQmluZGluZyhJQnVzLkJ1cyBidXMsCisgICAgICAgICAgICAg ICAgICAgICAgICAgR3RrLkFwcGxpY2F0aW9uIGFwcGxpY2F0aW9uKSB7CisgICAgICAgICBHTGli LmFzc2VydChidXMuaXNfY29ubmVjdGVkKCkpOworICAgICAgICAgLy8gQ2hhaW4gdXAgYmFzZSBj bGFzcyBjb25zdHJ1Y3RvcgorICAgICAgICAgR0xpYi5PYmplY3QoY29ubmVjdGlvbiA6IGJ1cy5n ZXRfY29ubmVjdGlvbigpLAorLSAgICAgICAgICAgICAgICAgICAgb2JqZWN0X3BhdGggOiBJQnVz LlBBVEhfUEFORUxfRVhURU5TSU9OKTsKKysgICAgICAgICAgICAgICAgICAgIG9iamVjdF9wYXRo IDogSUJ1cy5QQVRIX1BBTkVMX0VYVEVOU0lPTl9FTU9KSSk7CisrCisrICAgICAgICBUeXBlIGlu c3RhbmNlX3R5cGUgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpLmdldF90eXBlKCk7CisrICAg ICAgICBUeXBlIHdheWxhbmRfdHlwZSA9IHR5cGVvZihHZGtXYXlsYW5kLkRpc3BsYXkpOworKyAg ICAgICAgbV9pc193YXlsYW5kID0gaW5zdGFuY2VfdHlwZS5pc19hKHdheWxhbmRfdHlwZSk7Cisg CisgICAgICAgICBtX2J1cyA9IGJ1czsKKyAgICAgICAgIG1fYXBwbGljYXRpb24gPSBhcHBsaWNh dGlvbjsKKyAKKyAgICAgICAgIGluaXRfc2V0dGluZ3MoKTsKKysgICAgICAgIG1fcHJlZWRpdCA9 IG5ldyBQcmVlZGl0KCk7CisgICAgIH0KKyAKKyAKK0BAIC02OSwxMiArMjYzLDIwIEBAIGNsYXNz IFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmIG1fY3NzX3Byb3ZpZGVyKTsKKyAgICAgICAg IH0pOworIAorKyAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5jaGFuZ2VkWyJ1bmljb2RlLWhvdGtl eSJdLmNvbm5lY3QoKGtleSkgPT4geworKyAgICAgICAgICAgICAgICBzZXRfZW1vamlfaG90a2V5 KCk7CisrICAgICAgICB9KTsKKysKKyAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsi Zm9udCJdLmNvbm5lY3QoKGtleSkgPT4geworICAgICAgICAgICAgICAgICBCaW5kaW5nQ29tbW9u LnNldF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYgbV9jc3NfcHJvdmlkZXIpOwor ICAgICAgICAgfSk7CisgCisrICAgICAgICBtX3NldHRpbmdzX2Vtb2ppLmNoYW5nZWRbImhvdGtl eSJdLmNvbm5lY3QoKGtleSkgPT4geworKyAgICAgICAgICAgICAgICBzZXRfZW1vamlfaG90a2V5 KCk7CisrICAgICAgICB9KTsKKysKKyAgICAgICAgIG1fc2V0dGluZ3NfZW1vamkuY2hhbmdlZFsi ZmF2b3JpdGVzIl0uY29ubmVjdCgoa2V5KSA9PiB7CisgICAgICAgICAgICAgICAgIHNldF9lbW9q aV9mYXZvcml0ZXMoKTsKKyAgICAgICAgIH0pOworQEAgLTEwOSw2ICszMTEsNTQgQEAgY2xhc3Mg UGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworICAgICB9CisgCisgCisrICAgIHBy aXZhdGUgdW5vd25lZAorKyAgICBJQnVzLlByb2Nlc3NLZXlFdmVudERhdGE/IHBhcnNlX2FjY2Vs ZXJhdG9yKHN0cmluZyBhY2NlbGVyYXRvcikgeworKyAgICAgICAgSUJ1cy5Qcm9jZXNzS2V5RXZl bnREYXRhIGtleSA9IHt9OworKyAgICAgICAgdWludCBrZXlzeW0gPSAwOworKyAgICAgICAgSUJ1 cy5Nb2RpZmllclR5cGUgbW9kaWZpZXJzID0gMDsKKysgICAgICAgIElCdXMuYWNjZWxlcmF0b3Jf cGFyc2UoYWNjZWxlcmF0b3IsCisrICAgICAgICAgICAgICAgIG91dCBrZXlzeW0sIG91dCBtb2Rp ZmllcnMpOworKyAgICAgICAgaWYgKGtleXN5bSA9PSAwVSAmJiBtb2RpZmllcnMgPT0gMCkgewor KyAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCB0byBwYXJzZSBzaG9ydGN1dCBrZXkgJyVzJyIu cHJpbnRmKGFjY2VsZXJhdG9yKSk7CisrICAgICAgICAgICAgcmV0dXJuIG51bGw7CisrICAgICAg ICB9CisrICAgICAgICBpZiAoKG1vZGlmaWVycyAmIElCdXMuTW9kaWZpZXJUeXBlLlNVUEVSX01B U0spICE9IDApIHsKKysgICAgICAgICAgICBtb2RpZmllcnMgXj0gSUJ1cy5Nb2RpZmllclR5cGUu U1VQRVJfTUFTSzsKKysgICAgICAgICAgICBtb2RpZmllcnMgfD0gSUJ1cy5Nb2RpZmllclR5cGUu TU9ENF9NQVNLOworKyAgICAgICAgfQorKyAgICAgICAga2V5LmtleXZhbCA9IGtleXN5bTsKKysg ICAgICAgIGtleS5zdGF0ZSA9IG1vZGlmaWVyczsKKysgICAgICAgIHJldHVybiBrZXk7CisrICAg IH0KKysKKysKKysgICAgcHJpdmF0ZSB2b2lkIHNldF9lbW9qaV9ob3RrZXkoKSB7CisrICAgICAg ICBJQnVzLlByb2Nlc3NLZXlFdmVudERhdGFbXSBlbW9qaV9rZXlzID0ge307CisrICAgICAgICBJ QnVzLlByb2Nlc3NLZXlFdmVudERhdGEga2V5OworKyAgICAgICAgc3RyaW5nW10gYWNjZWxlcmF0 b3JzID0gbV9zZXR0aW5nc19lbW9qaS5nZXRfc3RydigiaG90a2V5Iik7CisrICAgICAgICBmb3Jl YWNoICh2YXIgYWNjZWxlcmF0b3IgaW4gYWNjZWxlcmF0b3JzKSB7CisrICAgICAgICAgICAga2V5 ID0gcGFyc2VfYWNjZWxlcmF0b3IoYWNjZWxlcmF0b3IpOworKyAgICAgICAgICAgIGVtb2ppX2tl eXMgKz0ga2V5OworKyAgICAgICAgfQorKworKyAgICAgICAgLyogU2luY2Uge30gaXMgbm90IGFs bG9jYXRlZCwgcGFyc2VfYWNjZWxlcmF0b3IoKSBzaG91bGQgYmUgdW5vd25lZC4gKi8KKysgICAg ICAgIGtleSA9IHt9OworKyAgICAgICAgZW1vamlfa2V5cyArPSBrZXk7CisrCisrICAgICAgICBJ QnVzLlByb2Nlc3NLZXlFdmVudERhdGFbXSB1bmljb2RlX2tleXMgPSB7fTsKKysgICAgICAgIGFj Y2VsZXJhdG9ycyA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cnYoInVuaWNvZGUtaG90a2V5Iik7 CisrICAgICAgICBmb3JlYWNoICh2YXIgYWNjZWxlcmF0b3IgaW4gYWNjZWxlcmF0b3JzKSB7Cisr ICAgICAgICAgICAga2V5ID0gcGFyc2VfYWNjZWxlcmF0b3IoYWNjZWxlcmF0b3IpOworKyAgICAg ICAgICAgIHVuaWNvZGVfa2V5cyArPSBrZXk7CisrICAgICAgICB9CisrICAgICAgICBrZXkgPSB7 fTsKKysgICAgICAgIHVuaWNvZGVfa2V5cyArPSBrZXk7CisrCisrICAgICAgICBwYW5lbF9leHRl bnNpb25fcmVnaXN0ZXJfa2V5cygiZW1vamkiLCBlbW9qaV9rZXlzLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLCB1bmljb2RlX2tleXMpOworKyAgICB9 CisrCisrCisgICAgIHByaXZhdGUgdm9pZCBzZXRfZW1vamlfZmF2b3JpdGVzKCkgeworICAgICAg ICAgbV9lbW9qaWVyX2Zhdm9yaXRlcyA9IG1fc2V0dGluZ3NfZW1vamkuZ2V0X3N0cnYoImZhdm9y aXRlcyIpOworICAgICAgICAgSUJ1c0Vtb2ppZXIuc2V0X2Zhdm9yaXRlcygKK0BAIC0xNTksNiAr NDA5LDcgQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5lbFNlcnZpY2UgeworIAorICAg ICBwdWJsaWMgdm9pZCBsb2FkX3NldHRpbmdzKCkgeworIAorKyAgICAgICAgc2V0X2Vtb2ppX2hv dGtleSgpOworICAgICAgICAgc2V0X2xvYWRfZW1vamlfYXRfc3RhcnR1cCgpOworICAgICAgICAg c2V0X2xvYWRfdW5pY29kZV9hdF9zdGFydHVwKCk7CisgICAgICAgICBCaW5kaW5nQ29tbW9uLnNl dF9jdXN0b21fZm9udChtX3NldHRpbmdzX3BhbmVsLAorQEAgLTE4MSwzNiArNDMyLDM3IEBAIGNs YXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAgICAgICBHTGli LlNvdXJjZS5yZW1vdmUobV9lbW9qaWVyX3NldF9lbW9qaV9sYW5nX2lkKTsKKyAgICAgICAgICAg ICBtX2Vtb2ppZXJfc2V0X2Vtb2ppX2xhbmdfaWQgPSAwOworICAgICAgICAgfQorLSAgICAgICAg bV9hcHBsaWNhdGlvbiA9IG51bGw7CistICAgIH0KKy0KKy0KKy0gICAgcHJpdmF0ZSB2b2lkIHNo b3dfZW1vamllcihHZGsuRXZlbnQgZXZlbnQpIHsKKy0gICAgICAgIGlmICghbV9sb2FkZWRfZW1v amkpCistICAgICAgICAgICAgc2V0X2Vtb2ppX2xhbmcoKTsKKy0gICAgICAgIGlmICghbV9sb2Fk ZWRfdW5pY29kZSAmJiBtX2xvYWRlZF9lbW9qaSkgeworLSAgICAgICAgICAgIElCdXNFbW9qaWVy LmxvYWRfdW5pY29kZV9kaWN0KCk7CistICAgICAgICAgICAgbV9sb2FkZWRfdW5pY29kZSA9IHRy dWU7CistICAgICAgICB9CistICAgICAgICBtX2Vtb2ppZXIgPSBuZXcgSUJ1c0Vtb2ppZXIoKTsK Ky0gICAgICAgIC8vIEZvciB0aXRsZSBoYW5kbGluZyBpbiBnbm9tZS1zaGVsbAorLSAgICAgICAg bV9hcHBsaWNhdGlvbi5hZGRfd2luZG93KG1fZW1vamllcik7CistICAgICAgICBzdHJpbmcgZW1v amkgPSBtX2Vtb2ppZXIucnVuKG1fcmVhbF9jdXJyZW50X2NvbnRleHRfcGF0aCwgZXZlbnQpOwor LSAgICAgICAgbV9hcHBsaWNhdGlvbi5yZW1vdmVfd2luZG93KG1fZW1vamllcik7CistICAgICAg ICBpZiAoZW1vamkgPT0gbnVsbCkgeworKyAgICAgICAgaWYgKG1fZW1vamllciAhPSBudWxsKSB7 CisrICAgICAgICAgICAgbV9hcHBsaWNhdGlvbi5yZW1vdmVfd2luZG93KG1fZW1vamllcik7Cisg ICAgICAgICAgICAgbV9lbW9qaWVyID0gbnVsbDsKKy0gICAgICAgICAgICByZXR1cm47CisgICAg ICAgICB9CistICAgICAgICB0aGlzLmVtb2ppZXJfZm9jdXNfY29tbWl0KCk7CisrICAgICAgICBt X2FwcGxpY2F0aW9uID0gbnVsbDsKKyAgICAgfQorIAorIAorLSAgICBwcml2YXRlIHZvaWQgaGFu ZGxlX2Vtb2ppX3R5cGluZyhHZGsuRXZlbnQgZXZlbnQpIHsKKy0gICAgICAgIGlmIChtX2Vtb2pp ZXIgIT0gbnVsbCAmJiBtX2Vtb2ppZXIuaXNfcnVubmluZygpKSB7CistICAgICAgICAgICAgbV9l bW9qaWVyLnByZXNlbnRfY2VudHJhbGl6ZShldmVudCk7CisrICAgIHByaXZhdGUgdm9pZCBjb21t aXRfdGV4dF91cGRhdGVfZmF2b3JpdGVzKElCdXMuVGV4dCB0ZXh0KSB7CisrICAgICAgICBjb21t aXRfdGV4dCh0ZXh0KTsKKysgICAgICAgIElCdXMuRXh0ZW5zaW9uRXZlbnQgZXZlbnQgPSBuZXcg SUJ1cy5FeHRlbnNpb25FdmVudCgKKysgICAgICAgICAgICAgICAgICAgICJuYW1lIiwgbV9leHRl bnNpb25fbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICJpcy1lbmFibGVkIiwgZmFsc2UsCisr ICAgICAgICAgICAgICAgICAgICAiaXMtZXh0ZW5zaW9uIiwgdHJ1ZSk7CisrICAgICAgICBwYW5l bF9leHRlbnNpb24oZXZlbnQpOworKyAgICAgICAgc3RyaW5nIGNvbW1pdHRlZF9zdHJpbmcgPSB0 ZXh0LnRleHQ7CisrICAgICAgICBzdHJpbmcgcHJlZWRpdF9zdHJpbmcgPSBtX3ByZWVkaXQuZ2V0 X3RleHQoKTsKKysgICAgICAgIG1fcHJlZWRpdC5oaWRlKCk7CisrICAgICAgICBpZiAocHJlZWRp dF9zdHJpbmcgPT0gY29tbWl0dGVkX3N0cmluZykKKyAgICAgICAgICAgICByZXR1cm47CisrICAg ICAgICBib29sIGhhc19mYXZvcml0ZSA9IGZhbHNlOworKyAgICAgICAgZm9yZWFjaCAodW5vd25l ZCBzdHJpbmcgZmF2b3JpdGUgaW4gbV9lbW9qaWVyX2Zhdm9yaXRlcykgeworKyAgICAgICAgICAg IGlmIChmYXZvcml0ZSA9PSBjb21taXR0ZWRfc3RyaW5nKSB7CisrICAgICAgICAgICAgICAgIGhh c19mYXZvcml0ZSA9IHRydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAg IH0KKysgICAgICAgIH0KKysgICAgICAgIGlmICghaGFzX2Zhdm9yaXRlKSB7CisrICAgICAgICAg ICAgbV9lbW9qaWVyX2Zhdm9yaXRlcyArPSBjb21taXR0ZWRfc3RyaW5nOworKyAgICAgICAgICAg IG1fc2V0dGluZ3NfZW1vamkuc2V0X3N0cnYoImZhdm9yaXRlcyIsIG1fZW1vamllcl9mYXZvcml0 ZXMpOworICAgICAgICAgfQorLSAgICAgICAgc2hvd19lbW9qaWVyKGV2ZW50KTsKKyAgICAgfQor IAorIAorQEAgLTIyMywxOSArNDc1LDggQEAgY2xhc3MgUGFuZWxCaW5kaW5nIDogSUJ1cy5QYW5l bFNlcnZpY2UgeworICAgICAgICAgICAgIHByZXZfY29udGV4dF9wYXRoICE9ICIiICYmCisgICAg ICAgICAgICAgcHJldl9jb250ZXh0X3BhdGggPT0gbV9jdXJyZW50X2NvbnRleHRfcGF0aCkgewor ICAgICAgICAgICAgIElCdXMuVGV4dCB0ZXh0ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZyhz ZWxlY3RlZF9zdHJpbmcpOworLSAgICAgICAgICAgIGNvbW1pdF90ZXh0KHRleHQpOworLSAgICAg ICAgICAgIG1fZW1vamllciA9IG51bGw7CistICAgICAgICAgICAgYm9vbCBoYXNfZmF2b3JpdGUg PSBmYWxzZTsKKy0gICAgICAgICAgICBmb3JlYWNoICh1bm93bmVkIHN0cmluZyBmYXZvcml0ZSBp biBtX2Vtb2ppZXJfZmF2b3JpdGVzKSB7CistICAgICAgICAgICAgICAgIGlmIChmYXZvcml0ZSA9 PSBzZWxlY3RlZF9zdHJpbmcpIHsKKy0gICAgICAgICAgICAgICAgICAgIGhhc19mYXZvcml0ZSA9 IHRydWU7CistICAgICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICAgICAgfQor LSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBpZiAoIWhhc19mYXZvcml0ZSkgeworLSAgICAg ICAgICAgICAgICBtX2Vtb2ppZXJfZmF2b3JpdGVzICs9IHNlbGVjdGVkX3N0cmluZzsKKy0gICAg ICAgICAgICAgICAgbV9zZXR0aW5nc19lbW9qaS5zZXRfc3RydigiZmF2b3JpdGVzIiwgbV9lbW9q aWVyX2Zhdm9yaXRlcyk7CistICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNvbW1pdF90ZXh0 X3VwZGF0ZV9mYXZvcml0ZXModGV4dCk7CisrICAgICAgICAgICAgbV9lbW9qaWVyLnJlc2V0KCk7 CisgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICB9CisgCitAQCAtMjQ5LDggKzQ5 MCw3IEBAIGNsYXNzIFBhbmVsQmluZGluZyA6IElCdXMuUGFuZWxTZXJ2aWNlIHsKKyAgICAgICAg IHN0cmluZyBzZWxlY3RlZF9zdHJpbmcgPSBtX2Vtb2ppZXIuZ2V0X3NlbGVjdGVkX3N0cmluZygp OworICAgICAgICAgc3RyaW5nIHByZXZfY29udGV4dF9wYXRoID0gbV9lbW9qaWVyLmdldF9pbnB1 dF9jb250ZXh0X3BhdGgoKTsKKyAgICAgICAgIGlmIChzZWxlY3RlZF9zdHJpbmcgPT0gbnVsbCAm JgorLSAgICAgICAgICAgIHByZXZfY29udGV4dF9wYXRoICE9ICIiICYmCistICAgICAgICAgICAg bV9lbW9qaWVyLmlzX3J1bm5pbmcoKSkgeworKyAgICAgICAgICAgIHByZXZfY29udGV4dF9wYXRo ICE9ICIiKSB7CisgICAgICAgICAgICAgdmFyIGNvbnRleHQgPSBHTGliLk1haW5Db250ZXh0LmRl ZmF1bHQoKTsKKyAgICAgICAgICAgICBpZiAobV9lbW9qaWVyX2ZvY3VzX2NvbW1pdF90ZXh0X2lk ID4gMCAmJgorICAgICAgICAgICAgICAgICBjb250ZXh0LmZpbmRfc291cmNlX2J5X2lkKG1fZW1v amllcl9mb2N1c19jb21taXRfdGV4dF9pZCkKK0BAIC0yNzcsNiArNTE3LDI0MyBAQCBjbGFzcyBQ YW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAgIH0KKyAKKyAKKysgICAgcHJp dmF0ZSBib29sIGtleV9wcmVzc19lc2NhcGUoKSB7CisrICAgICAgICBpZiAoaXNfZW1vamlfbG9v a3VwX3RhYmxlKCkpIHsKKysgICAgICAgICAgICBib29sIHNob3dfY2FuZGlkYXRlID0gbV9lbW9q aWVyLmtleV9wcmVzc19lc2NhcGUoKTsKKysgICAgICAgICAgICBjb252ZXJ0X3ByZWVkaXRfdGV4 dCgpOworKyAgICAgICAgICAgIHJldHVybiBzaG93X2NhbmRpZGF0ZTsKKysgICAgICAgIH0KKysg ICAgICAgIGlmIChtX3ByZWVkaXQuZ2V0X2Vtb2ppKCkgIT0gIiIpIHsKKysgICAgICAgICAgICBt X3ByZWVkaXQuc2V0X2Vtb2ppKCIiKTsKKysgICAgICAgICAgICBzdHJpbmcgYW5ub3RhdGlvbiA9 IG1fcHJlZWRpdC5nZXRfdGV4dCgpOworKyAgICAgICAgICAgIG1fZW1vamllci5zZXRfYW5ub3Rh dGlvbihhbm5vdGF0aW9uKTsKKysgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgICAgICB9 CisrICAgICAgICBtX2VuYWJsZV9leHRlbnNpb24gPSBmYWxzZTsKKysgICAgICAgIGhpZGVfZW1v amlfbG9va3VwX3RhYmxlKCk7CisrICAgICAgICBtX3ByZWVkaXQuaGlkZSgpOworKyAgICAgICAg SUJ1cy5FeHRlbnNpb25FdmVudCBldmVudCA9IG5ldyBJQnVzLkV4dGVuc2lvbkV2ZW50KAorKyAg ICAgICAgICAgICAgICAibmFtZSIsIG1fZXh0ZW5zaW9uX25hbWUsCisrICAgICAgICAgICAgICAg ICJpcy1lbmFibGVkIiwgZmFsc2UsCisrICAgICAgICAgICAgICAgICJpcy1leHRlbnNpb24iLCB0 cnVlKTsKKysgICAgICAgIHBhbmVsX2V4dGVuc2lvbihldmVudCk7CisrICAgICAgICByZXR1cm4g ZmFsc2U7CisrICAgIH0KKysKKysKKysgICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19lbnRlcigp IHsKKysgICAgICAgIGlmIChtX2V4dGVuc2lvbl9uYW1lICE9ICJ1bmljb2RlIiAmJiBpc19lbW9q aV9sb29rdXBfdGFibGUoKSkgeworKyAgICAgICAgICAgIC8vIENoZWNrIGlmIHZhcmlhdHMgZXhp c3QKKysgICAgICAgICAgICBpZiAobV9lbW9qaWVyLmtleV9wcmVzc19lbnRlcigpKQorKyAgICAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgIH0KKysgICAgICAgIElCdXMuVGV4dCB0 ZXh0ID0gbV9wcmVlZGl0LmdldF9jb21taXRfdGV4dCgpOworKyAgICAgICAgY29tbWl0X3RleHRf dXBkYXRlX2Zhdm9yaXRlcyh0ZXh0KTsKKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQor KworKworKyAgICBwcml2YXRlIHZvaWQgY29udmVydF9wcmVlZGl0X3RleHQoKSB7CisrICAgICAg ICBpZiAobV9lbW9qaWVyLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpID4gMCkKKysgICAgICAg ICAgICBtX3ByZWVkaXQuc2V0X2Vtb2ppKG1fZW1vamllci5nZXRfY3VycmVudF9jYW5kaWRhdGUo KSk7CisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgbV9wcmVlZGl0LnNldF9lbW9qaSgiIik7 CisrICAgIH0KKysKKysKKysgICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19zcGFjZSgpIHsKKysg ICAgICAgIGJvb2wgc2hvd19jYW5kaWRhdGUgPSBmYWxzZTsKKysgICAgICAgIGlmIChtX3ByZWVk aXQuZ2V0X2Vtb2ppKCkgIT0gIiIpIHsKKysgICAgICAgICAgICBtX2Vtb2ppZXIua2V5X3ByZXNz X2N1cnNvcl9ob3Jpem9udGFsKEdkay5LZXkuUmlnaHQsIDApOworKyAgICAgICAgICAgIHNob3df Y2FuZGlkYXRlID0gdHJ1ZTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgc3RyaW5n IGFubm90YXRpb24gPSBtX3ByZWVkaXQuZ2V0X3RleHQoKTsKKysgICAgICAgICAgICBpZiAoYW5u b3RhdGlvbi5sZW5ndGggPT0gMCkgeworKyAgICAgICAgICAgICAgICBzaG93X2NhbmRpZGF0ZSA9 IHRydWU7CisrICAgICAgICAgICAgICAgIGlmIChpc19lbW9qaV9sb29rdXBfdGFibGUoKSkKKysg ICAgICAgICAgICAgICAgICAgIG1fZW1vamllci5rZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwo R2RrLktleS5SaWdodCwgMCk7CisrICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAg ICAgbV9lbW9qaWVyLnNldF9hbm5vdGF0aW9uKGFubm90YXRpb24pOworKyAgICAgICAgICAgIH0K KysgICAgICAgIH0KKysgICAgICAgIGNvbnZlcnRfcHJlZWRpdF90ZXh0KCk7CisrICAgICAgICBy ZXR1cm4gc2hvd19jYW5kaWRhdGU7CisrICAgIH0KKysKKysKKysgICAgcHJpdmF0ZSBib29sIGtl eV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbCh1aW50IGtleXZhbCwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1vZGlmaWVycykgeworKyAgICAgICAg aWYgKGlzX2Vtb2ppX2xvb2t1cF90YWJsZSgpKSB7CisrICAgICAgICAgICAgbV9lbW9qaWVyLmtl eV9wcmVzc19jdXJzb3JfaG9yaXpvbnRhbChrZXl2YWwsIG1vZGlmaWVycyk7CisrICAgICAgICAg ICAgY29udmVydF9wcmVlZGl0X3RleHQoKTsKKysgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysg ICAgICAgIH0KKysgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgfQorKworKworKyAgICBwcml2 YXRlIGJvb2wga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbCh1aW50IGtleXZhbCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludCBtb2RpZmllcnMpIHsKKysg ICAgICAgIGlmIChpc19lbW9qaV9sb29rdXBfdGFibGUoKSkgeworKyAgICAgICAgICAgIG1fZW1v amllci5rZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKGtleXZhbCwgbW9kaWZpZXJzKTsKKysgICAg ICAgICAgICBjb252ZXJ0X3ByZWVkaXRfdGV4dCgpOworKyAgICAgICAgICAgIHJldHVybiB0cnVl OworKyAgICAgICAgfQorKyAgICAgICAgcmV0dXJuIGZhbHNlOworKyAgICB9CisrCisrCisrICAg IHByaXZhdGUgYm9vbCBrZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKHVpbnQga2V5dmFsLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1vZGlmaWVycykg eworKyAgICAgICAgaWYgKGlzX2Vtb2ppX2xvb2t1cF90YWJsZSgpKSB7CisrICAgICAgICAgICAg bV9lbW9qaWVyLmtleV9wcmVzc19jdXJzb3JfaG9tZV9lbmQoa2V5dmFsLCBtb2RpZmllcnMpOwor KyAgICAgICAgICAgIGNvbnZlcnRfcHJlZWRpdF90ZXh0KCk7CisrICAgICAgICAgICAgcmV0dXJu IHRydWU7CisrICAgICAgICB9CisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysKKysK KysgICAgcHJpdmF0ZSBib29sIGtleV9wcmVzc19jb250cm9sX2tleXZhbCh1aW50IGtleXZhbCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50IG1vZGlmaWVy cykgeworKyAgICAgICAgYm9vbCBzaG93X2NhbmRpZGF0ZSA9IGZhbHNlOworKyAgICAgICAgc3dp dGNoKGtleXZhbCkgeworKyAgICAgICAgY2FzZSBHZGsuS2V5LmY6CisrICAgICAgICAgICAgc2hv d19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX2hvcml6b250YWwoR2RrLktleS5SaWdodCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtb2RpZmllcnMpOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5 LmI6CisrICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX2hvcml6 b250YWwoR2RrLktleS5MZWZ0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisrICAgICAgICAgICAgYnJlYWs7Cisr ICAgICAgICBjYXNlIEdkay5LZXkubjoKKysgICAgICAgIGNhc2UgR2RrLktleS5OOgorKyAgICAg ICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5 LkRvd24sIG1vZGlmaWVycyk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIEdk ay5LZXkucDoKKysgICAgICAgIGNhc2UgR2RrLktleS5QOgorKyAgICAgICAgICAgIHNob3dfY2Fu ZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlVwLCBtb2RpZmllcnMp OworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5Lmg6CisrICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX2hvbWVfZW5kKEdkay5LZXku SG9tZSwgbW9kaWZpZXJzKTsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgR2Rr LktleS5lOgorKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl9o b21lX2VuZChHZGsuS2V5LkVuZCwgbW9kaWZpZXJzKTsKKysgICAgICAgICAgICBicmVhazsKKysg ICAgICAgIGNhc2UgR2RrLktleS51OgorKyAgICAgICAgICAgIG1fcHJlZWRpdC5yZXNldCgpOwor KyAgICAgICAgICAgIG1fZW1vamllci5zZXRfYW5ub3RhdGlvbigiIik7CisrICAgICAgICAgICAg aGlkZV9lbW9qaV9sb29rdXBfdGFibGUoKTsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAg IGNhc2UgR2RrLktleS5DOgorKyAgICAgICAgY2FzZSBHZGsuS2V5LmM6CisrICAgICAgICAgICAg aWYgKChtb2RpZmllcnMgJiBHZGsuTW9kaWZpZXJUeXBlLlNISUZUX01BU0spICE9IDApIHsKKysg ICAgICAgICAgICAgICAgaWYgKCFtX2lzX3dheWxhbmQgJiYgbV9lbW9qaWVyICE9IG51bGwgJiYK KysgICAgICAgICAgICAgICAgICAgIG1fZW1vamllci5nZXRfbnVtYmVyX29mX2NhbmRpZGF0ZXMo KSA+IDApIHsKKysgICAgICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gbV9lbW9qaWVyLmdldF9j dXJyZW50X2NhbmRpZGF0ZSgpOworKyAgICAgICAgICAgICAgICAgICAgR3RrLkNsaXBib2FyZCBj bGlwYm9hcmQgPQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHdGsuQ2xpcGJvYXJkLmdl dChHZGsuU0VMRUNUSU9OX0NMSVBCT0FSRCk7CisrICAgICAgICAgICAgICAgICAgICBjbGlwYm9h cmQuc2V0X3RleHQodGV4dCwgLTEpOworKyAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLnN0 b3JlKCk7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgc2hvd19jYW5kaWRh dGUgPSBpc19lbW9qaV9sb29rdXBfdGFibGUoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAg ICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRl ID0gaXNfZW1vamlfbG9va3VwX3RhYmxlKCk7CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAg ICB9CisrICAgICAgICByZXR1cm4gc2hvd19jYW5kaWRhdGU7CisrICAgIH0KKysKKysKKysgICAg cHJpdmF0ZSB2b2lkIGhpZGVfd2F5bGFuZF9sb29rdXBfdGFibGUoKSB7CisrICAgICAgICBtX3dh eWxhbmRfbG9va3VwX3RhYmxlX2lzX3Zpc2libGUgPSBmYWxzZTsKKysgICAgICAgIHZhciB0ZXh0 ID0gbmV3IElCdXMuVGV4dC5mcm9tX3N0cmluZygiIik7CisrICAgICAgICB1cGRhdGVfYXV4aWxp YXJ5X3RleHRfcmVjZWl2ZWQodGV4dCwgZmFsc2UpOworKyAgICAgICAgdXBkYXRlX2xvb2t1cF90 YWJsZV9yZWNlaXZlZCgKKysgICAgICAgICAgICAgICAgbmV3IElCdXMuTG9va3VwVGFibGUoMSwg MCwgZmFsc2UsIHRydWUpLAorKyAgICAgICAgICAgICAgICBmYWxzZSk7CisrICAgIH0KKysKKysK KysgICAgcHJpdmF0ZSB2b2lkIHNob3dfd2F5bGFuZF9sb29rdXBfdGFibGUoSUJ1cy5UZXh0IHRl eHQpIHsKKysgICAgICAgIG1fd2F5bGFuZF9sb29rdXBfdGFibGVfaXNfdmlzaWJsZSA9IHRydWU7 CisrICAgICAgICB2YXIgdGFibGUgPSBtX2Vtb2ppZXIuZ2V0X29uZV9kaW1lbnNpb25fbG9va3Vw X3RhYmxlKCk7CisrICAgICAgICB1aW50IG5jYW5kaWRhdGVzID0gdGFibGUuZ2V0X251bWJlcl9v Zl9jYW5kaWRhdGVzKCk7CisrICAgICAgICB1cGRhdGVfYXV4aWxpYXJ5X3RleHRfcmVjZWl2ZWQo CisrICAgICAgICAgICAgICAgIHRleHQsCisrICAgICAgICAgICAgICAgIG5jYW5kaWRhdGVzID4g MCA/IHRydWUgOiBmYWxzZSk7CisrICAgICAgICB1cGRhdGVfbG9va3VwX3RhYmxlX3JlY2VpdmVk KAorKyAgICAgICAgICAgICAgICB0YWJsZSwKKysgICAgICAgICAgICAgICAgbmNhbmRpZGF0ZXMg PiAwID8gdHJ1ZSA6IGZhbHNlKTsKKysgICAgfQorKworKworKyAgICBwcml2YXRlIGJvb2wgaXNf dmlzaWJsZV93YXlsYW5kX2xvb2t1cF90YWJsZSgpIHsKKysgICAgICAgIHJldHVybiBtX3dheWxh bmRfbG9va3VwX3RhYmxlX2lzX3Zpc2libGU7CisrICAgIH0KKysKKysKKysgICAgcHJpdmF0ZSB2 b2lkIGhpZGVfZW1vamlfbG9va3VwX3RhYmxlKCkgeworKyAgICAgICAgaWYgKG1fZW1vamllciA9 PSBudWxsKQorKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIGlmIChtX2lzX3dheWxhbmQp CisrICAgICAgICAgICAgaGlkZV93YXlsYW5kX2xvb2t1cF90YWJsZSgpOworKyAgICAgICAgZWxz ZQorKyAgICAgICAgICAgIG1fZW1vamllci5oaWRlKCk7CisrICAgIH0KKysKKysKKysgICAgcHJp dmF0ZSB2b2lkIHNob3dfZW1vamlfbG9va3VwX3RhYmxlKCkgeworKyAgICAgICAgLyogRW1vamll ciBjYXRlZ29yeV9saXN0IGlzIHNob3duIGluIGJvdGggWG9yZyBhbmQgV2F5bGFuZAorKyAgICAg ICAgICogYmVjYXVzZSB0aGUgYW5ub3RhdGlvbiBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgYnV0IHRo ZSBXYXlsYW5kIGxvb2t1cAorKyAgICAgICAgICogd2luZG93IGlzIGFsd2F5IG9uZSBkaW1lbnNp b24uIFNvIHRoZSBjYXRlZ29yeV9saXN0IGlzIHNob3duCisrICAgICAgICAgKiB3aGVuIHRoZSB1 c2VyIGFubm90YXRpb24gaXMgbnVsbC4KKysgICAgICAgICAqLworKyAgICAgICAgaWYgKG1faXNf d2F5bGFuZCAmJiBtX3ByZWVkaXQuZ2V0X3RleHQoKSAhPSAiIikgeworKyAgICAgICAgICAgIHZh ciB0ZXh0ID0gbV9lbW9qaWVyLmdldF90aXRsZV90ZXh0KCk7CisrICAgICAgICAgICAgc2hvd193 YXlsYW5kX2xvb2t1cF90YWJsZSh0ZXh0KTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAg ICAgLy8gUE9QVVAgd2luZG93IHRha2VzIHRoZSBmb2N1cyBpbiBXYXlsYW5kLgorKyAgICAgICAg ICAgIGlmIChtX2lzX3dheWxhbmQpCisrICAgICAgICAgICAgICAgIG1fZW1vamllci5zZXRfaW5w dXRfY29udGV4dF9wYXRoKG1fcmVhbF9jdXJyZW50X2NvbnRleHRfcGF0aCk7CisrICAgICAgICAg ICAgbV9lbW9qaWVyLnNob3dfYWxsKCk7CisrICAgICAgICB9CisrICAgIH0KKysKKysKKysgICAg cHJpdmF0ZSBib29sIGlzX2Vtb2ppX2xvb2t1cF90YWJsZSgpIHsKKysgICAgICAgIGlmIChtX2lz X3dheWxhbmQpCisrICAgICAgICAgICAgcmV0dXJuIGlzX3Zpc2libGVfd2F5bGFuZF9sb29rdXBf dGFibGUoKTsKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICByZXR1cm4gbV9lbW9qaWVyLmdl dF92aXNpYmxlKCk7CisrICAgIH0KKysKKysKKysgICAgcHJpdmF0ZSB2b2lkIHNob3dfcHJlZWRp dF9hbmRfY2FuZGlkYXRlKGJvb2wgc2hvd19jYW5kaWRhdGUpIHsKKysgICAgICAgIHVpbnQgY3Vy c29yX3BvcyA9IDA7CisrICAgICAgICBpZiAoIXNob3dfY2FuZGlkYXRlKQorKyAgICAgICAgICAg IGN1cnNvcl9wb3MgPSBtX3ByZWVkaXQuZ2V0X2VuZ2luZV9wcmVlZGl0X2N1cnNvcl9wb3MoKTsK KysgICAgICAgIHVwZGF0ZV9wcmVlZGl0X3RleHRfcmVjZWl2ZWQoCisrICAgICAgICAgICAgICAg IG1fcHJlZWRpdC5nZXRfZW5naW5lX3ByZWVkaXRfdGV4dCgpLAorKyAgICAgICAgICAgICAgICBj dXJzb3JfcG9zLAorKyAgICAgICAgICAgICAgICB0cnVlKTsKKysgICAgICAgIGlmICghc2hvd19j YW5kaWRhdGUpIHsKKysgICAgICAgICAgICBoaWRlX2Vtb2ppX2xvb2t1cF90YWJsZSgpOworKyAg ICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0g bnVsbCkKKysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICAvKiBXYXlsYW5kIGdpdmVzIHRo ZSBmb2N1cyBvbiBFbW9qaXIgd2hpY2ggaXMgYSBHVEsgcG9wdXAgd2luZG93CisrICAgICAgICAg KiBhbmQgbW92ZSB0aGUgZm9jdXMgZm9tIHRoZSBjdXJyZW50IGlucHV0IGNvbnRleHQgdG8gRW1v amllci4KKysgICAgICAgICAqIFRoaXMgZm9yd2FyZHMgdGhlIGxvb2t1cCB0YWJsZSB0byBnbm9t ZS1zaGVsbCdzIGxvb2t1cCB0YWJsZQorKyAgICAgICAgICogYnV0IGl0IGVuYWJsZXMgb25lIGRp bWVuc2lvbiBsb29rdXAgdGFibGUgb25seS4KKysgICAgICAgICAqLworKyAgICAgICAgc2hvd19l bW9qaV9sb29rdXBfdGFibGUoKTsKKysgICAgfQorKworKworICAgICBwdWJsaWMgb3ZlcnJpZGUg dm9pZCBmb2N1c19pbihzdHJpbmcgaW5wdXRfY29udGV4dF9wYXRoKSB7CisgICAgICAgICBtX2N1 cnJlbnRfY29udGV4dF9wYXRoID0gaW5wdXRfY29udGV4dF9wYXRoOworIAorQEAgLTI5OSw0OCAr Nzc2LDI4MCBAQCBjbGFzcyBQYW5lbEJpbmRpbmcgOiBJQnVzLlBhbmVsU2VydmljZSB7CisgICAg IH0KKyAKKyAKKy0gICAgcHVibGljIG92ZXJyaWRlIHZvaWQgcGFuZWxfZXh0ZW5zaW9uX3JlY2Vp dmVkKEdMaWIuVmFyaWFudCBkYXRhKSB7CistICAgICAgICBJQnVzLlhFdmVudD8geGV2ZW50ID0g SUJ1cy5TZXJpYWxpemFibGUuZGVzZXJpYWxpemVfb2JqZWN0KGRhdGEpCistICAgICAgICAgICAg ICAgIGFzIElCdXMuWEV2ZW50OworLSAgICAgICAgaWYgKHhldmVudCA9PSBudWxsKSB7CistICAg ICAgICAgICAgd2FybmluZyAoIkZhaWxlZCB0byBkZXNlcmlhbGl6ZSBJQnVzWEV2ZW50Iik7Cisr ICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHBhbmVsX2V4dGVuc2lvbl9yZWNlaXZlZChJQnVzLkV4 dGVuc2lvbkV2ZW50IGV2ZW50KSB7CisrICAgICAgICBtX2V4dGVuc2lvbl9uYW1lID0gZXZlbnQu Z2V0X25hbWUoKTsKKysgICAgICAgIGlmIChtX2V4dGVuc2lvbl9uYW1lICE9ICJlbW9qaSIgJiYg bV9leHRlbnNpb25fbmFtZSAhPSAidW5pY29kZSIpIHsKKysgICAgICAgICAgICBzdHJpbmcgZm9y bWF0ID0gIlRoZSBuYW1lICVzIGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBQYW5lbEV4dGVuc2lvbiI7 CisrICAgICAgICAgICAgd2FybmluZyAoZm9ybWF0LnByaW50ZihtX2V4dGVuc2lvbl9uYW1lKSk7 CisrICAgICAgICAgICAgbV9leHRlbnNpb25fbmFtZSA9ICIiOworICAgICAgICAgICAgIHJldHVy bjsKKyAgICAgICAgIH0KKy0gICAgICAgIGlmICh4ZXZlbnQuZ2V0X3B1cnBvc2UoKSAhPSAiZW1v amkiKSB7CistICAgICAgICAgICAgc3RyaW5nIGZvcm1hdCA9ICJUaGUgcHVycG9zZSAlcyBpcyBu b3QgaW1wbGVtZW50ZWQgaW4gUGFuZWxFeHRlbnNpb24iOworLSAgICAgICAgICAgIHdhcm5pbmcg KGZvcm1hdC5wcmludGYoeGV2ZW50LmdldF9wdXJwb3NlKCkpKTsKKysgICAgICAgIG1fZW5hYmxl X2V4dGVuc2lvbiA9IGV2ZW50LmlzX2VuYWJsZWQ7CisrICAgICAgICBpZiAoIW1fZW5hYmxlX2V4 dGVuc2lvbikgeworKyAgICAgICAgICAgIGhpZGVfZW1vamlfbG9va3VwX3RhYmxlKCk7CisrICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKCFtX2xvYWRlZF9lbW9q aSkKKysgICAgICAgICAgICBzZXRfZW1vamlfbGFuZygpOworKyAgICAgICAgaWYgKCFtX2xvYWRl ZF91bmljb2RlICYmIG1fbG9hZGVkX2Vtb2ppKSB7CisrICAgICAgICAgICAgSUJ1c0Vtb2ppZXIu bG9hZF91bmljb2RlX2RpY3QoKTsKKysgICAgICAgICAgICBtX2xvYWRlZF91bmljb2RlID0gdHJ1 ZTsKKysgICAgICAgIH0KKysgICAgICAgIGlmIChtX2Vtb2ppZXIgPT0gbnVsbCkgeworKyAgICAg ICAgICAgIG1fZW1vamllciA9IG5ldyBJQnVzRW1vamllcigpOworKyAgICAgICAgICAgIC8vIEZv ciB0aXRsZSBoYW5kbGluZyBpbiBnbm9tZS1zaGVsbAorKyAgICAgICAgICAgIG1fYXBwbGljYXRp b24uYWRkX3dpbmRvdyhtX2Vtb2ppZXIpOworKyAgICAgICAgICAgIG1fZW1vamllci5jYW5kaWRh dGVfY2xpY2tlZC5jb25uZWN0KChpLCBiLCBzKSA9PiB7CisrICAgICAgICAgICAgICAgIGlmICgh bV9pc193YXlsYW5kKQorKyAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlX2NsaWNrZWRfbG9v a3VwX3RhYmxlKGksIGIsIHMpOworKyAgICAgICAgICAgIH0pOworKyAgICAgICAgfQorKyAgICAg ICAgbV9lbW9qaWVyLnJlc2V0KCk7CisrICAgICAgICBtX2Vtb2ppZXIuc2V0X2Fubm90YXRpb24o IiIpOworKyAgICAgICAgbV9wcmVlZGl0LnNldF9leHRlbnNpb25fbmFtZShtX2V4dGVuc2lvbl9u YW1lKTsKKysgICAgICAgIG1fcHJlZWRpdC5yZXNldCgpOworKyAgICAgICAgdXBkYXRlX3ByZWVk aXRfdGV4dF9yZWNlaXZlZCgKKysgICAgICAgICAgICAgICAgbV9wcmVlZGl0LmdldF9lbmdpbmVf cHJlZWRpdF90ZXh0KCksCisrICAgICAgICAgICAgICAgIG1fcHJlZWRpdC5nZXRfZW5naW5lX3By ZWVkaXRfY3Vyc29yX3BvcygpLAorKyAgICAgICAgICAgICAgICB0cnVlKTsKKysgICAgICAgIHN0 cmluZyBwYXJhbXMgPSBldmVudC5nZXRfcGFyYW1zKCk7CisrICAgICAgICBpZiAocGFyYW1zID09 ICJjYXRlZ29yeS1saXN0IikgeworKyAgICAgICAgICAgIGtleV9wcmVzc19zcGFjZSgpOworKyAg ICAgICAgICAgIHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRlKHRydWUpOworKyAgICAgICAgfQor KyAgICB9CisrCisrCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHNldF9jdXJzb3JfbG9jYXRp b24oaW50IHgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW50IHksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHdpZHRoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu dCBoZWlnaHQpIHsKKysgICAgICAgIGlmIChtX2Vtb2ppZXIgIT0gbnVsbCkKKysgICAgICAgICAg ICBtX2Vtb2ppZXIuc2V0X2N1cnNvcl9sb2NhdGlvbih4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKysg ICAgfQorKworKworKyAgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCB1cGRhdGVfcHJlZWRpdF90ZXh0 KElCdXMuVGV4dCB0ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQgICAgICBjdXJzb3JfcG9zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICB2aXNpYmxlKSB7CisrICAgICAgICBtX3ByZWVk aXQuc2V0X2VuZ2luZV9wcmVlZGl0X3RleHQodGV4dCk7CisrICAgICAgICBpZiAodmlzaWJsZSkK KysgICAgICAgICAgICBtX3ByZWVkaXQuc2hvd19lbmdpbmVfcHJlZWRpdF90ZXh0KCk7CisrICAg ICAgICBlbHNlCisrICAgICAgICAgICAgbV9wcmVlZGl0LmhpZGVfZW5naW5lX3ByZWVkaXRfdGV4 dCgpOworKyAgICAgICAgbV9wcmVlZGl0LnNldF9lbmdpbmVfcHJlZWRpdF9jdXJzb3JfcG9zKGN1 cnNvcl9wb3MpOworKyAgICAgICAgdXBkYXRlX3ByZWVkaXRfdGV4dF9yZWNlaXZlZChtX3ByZWVk aXQuZ2V0X2VuZ2luZV9wcmVlZGl0X3RleHQoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbV9wcmVlZGl0LmdldF9lbmdpbmVfcHJlZWRpdF9jdXJzb3JfcG9zKCksCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpc2libGUpOworKyAgICB9Cisr CisrCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHNob3dfcHJlZWRpdF90ZXh0KCkgeworKyAg ICAgICAgbV9wcmVlZGl0LnNob3dfZW5naW5lX3ByZWVkaXRfdGV4dCgpOworKyAgICAgICAgc2hv d19wcmVlZGl0X2FuZF9jYW5kaWRhdGUoZmFsc2UpOworKyAgICB9CisrCisrCisrICAgIHB1Ymxp YyBvdmVycmlkZSB2b2lkIGhpZGVfcHJlZWRpdF90ZXh0KCkgeworKyAgICAgICAgbV9wcmVlZGl0 LmhpZGVfZW5naW5lX3ByZWVkaXRfdGV4dCgpOworKyAgICAgICAgc2hvd19wcmVlZGl0X2FuZF9j YW5kaWRhdGUoZmFsc2UpOworKyAgICB9CisrCisrCisrICAgIHB1YmxpYyBvdmVycmlkZSBib29s IHByb2Nlc3Nfa2V5X2V2ZW50KHVpbnQga2V5dmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50IGtleWNvZGUsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVpbnQgc3RhdGUpIHsKKysgICAgICAgIGlmICgoc3RhdGUg JiBJQnVzLk1vZGlmaWVyVHlwZS5SRUxFQVNFX01BU0spICE9IDApCisrICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOworKyAgICAgICAgdWludCBtb2RpZmllcnMgPSBzdGF0ZTsKKysgICAgICAgIGJv b2wgc2hvd19jYW5kaWRhdGUgPSBmYWxzZTsKKysgICAgICAgIHN3aXRjaChrZXl2YWwpIHsKKysg ICAgICAgIGNhc2UgR2RrLktleS5Fc2NhcGU6CisrICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUg PSBrZXlfcHJlc3NfZXNjYXBlKCk7CisrICAgICAgICAgICAgaWYgKCFtX3ByZWVkaXQuaXNfc2hv d24oKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisrICAgICAgICAgICAgYnJlYWs7 CisrICAgICAgICBjYXNlIEdkay5LZXkuUmV0dXJuOgorKyAgICAgICAgY2FzZSBHZGsuS2V5LktQ X0VudGVyOgorKyAgICAgICAgICAgIGlmIChtX2V4dGVuc2lvbl9uYW1lID09ICJ1bmljb2RlIikK KysgICAgICAgICAgICAgICAga2V5X3ByZXNzX3NwYWNlKCk7CisrICAgICAgICAgICAgc2hvd19j YW5kaWRhdGUgPSBrZXlfcHJlc3NfZW50ZXIoKTsKKysgICAgICAgICAgICBpZiAoIW1fcHJlZWRp dC5pc19zaG93bigpKSB7CisrICAgICAgICAgICAgICAgIGhpZGVfZW1vamlfbG9va3VwX3RhYmxl KCk7CisrICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworKyAgICAgICAgICAgIH0KKysgICAg ICAgICAgICBicmVhazsKKysgICAgICAgIGNhc2UgR2RrLktleS5CYWNrU3BhY2U6CisrICAgICAg ICAgICAgbV9wcmVlZGl0LmJhY2tzcGFjZSgpOworKyAgICAgICAgICAgIHN0cmluZyBhbm5vdGF0 aW9uID0gbV9wcmVlZGl0LmdldF90ZXh0KCk7CisrICAgICAgICAgICAgaWYgKGFubm90YXRpb24g PT0gIiIgJiYgbV9leHRlbnNpb25fbmFtZSA9PSAidW5pY29kZSIpIHsKKysgICAgICAgICAgICAg ICAga2V5X3ByZXNzX2VzY2FwZSgpOworKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysg ICAgICAgICAgICB9CisrICAgICAgICAgICAgbV9lbW9qaWVyLnNldF9hbm5vdGF0aW9uKGFubm90 YXRpb24pOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5LnNwYWNl OgorKyAgICAgICAgY2FzZSBHZGsuS2V5LktQX1NwYWNlOgorKyAgICAgICAgICAgIHNob3dfY2Fu ZGlkYXRlID0ga2V5X3ByZXNzX3NwYWNlKCk7CisrICAgICAgICAgICAgaWYgKG1fZXh0ZW5zaW9u X25hbWUgPT0gInVuaWNvZGUiKSB7CisrICAgICAgICAgICAgICAgIGtleV9wcmVzc19lbnRlcigp OworKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKysgICAgICAgICAgICB9CisrICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIEdkay5LZXkuUmlnaHQ6CisrICAgICAgICBjYXNl IEdkay5LZXkuS1BfUmlnaHQ6CisrICAgICAgICAgICAgLyogb25lIGRpbWVuc2lvbiBpbiBXYXls YW5kLCB0d28gZGltZW5zaW9ucyBpbiBYMTEgKi8KKysgICAgICAgICAgICBpZiAobV9pc193YXls YW5kKSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNv cl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOworKyAgICAgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNv cl9ob3Jpem9udGFsKEdkay5LZXkuUmlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5LkxlZnQ6Cisr ICAgICAgICBjYXNlIEdkay5LZXkuS1BfTGVmdDoKKysgICAgICAgICAgICBpZiAobV9pc193YXls YW5kKSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNv cl92ZXJ0aWNhbChHZGsuS2V5LlVwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKKysgICAgICAgICAgICB9IGVs c2UgeworKyAgICAgICAgICAgICAgICBzaG93X2NhbmRpZGF0ZSA9IGtleV9wcmVzc19jdXJzb3Jf aG9yaXpvbnRhbChHZGsuS2V5LkxlZnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisrICAgICAgICAgICAg fQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5LkRvd246CisrICAg ICAgICBjYXNlIEdkay5LZXkuS1BfRG93bjoKKysgICAgICAgICAgICBpZiAobV9pc193YXlsYW5k KSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl9o b3Jpem9udGFsKEdkay5LZXkuUmlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisrICAgICAgICAgICAg fSBlbHNlIHsKKysgICAgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vy c29yX3ZlcnRpY2FsKEdkay5LZXkuRG93biwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisrICAgICAgICAgICAg fQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5LlVwOgorKyAgICAg ICAgY2FzZSBHZGsuS2V5LktQX1VwOgorKyAgICAgICAgICAgIGlmIChtX2lzX3dheWxhbmQpIHsK KysgICAgICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX2hvcml6 b250YWwoR2RrLktleS5MZWZ0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOworKyAgICAgICAgICAgIH0gZWxz ZSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl92 ZXJ0aWNhbChHZGsuS2V5LlVwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIEdkay5LZXkuUGFnZV9Eb3duOgorKyAgICAg ICAgY2FzZSBHZGsuS2V5LktQX1BhZ2VfRG93bjoKKysgICAgICAgICAgICBpZiAobV9pc193YXls YW5kKSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNv cl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnMpOworKyAgICAgICAgICAgIH0g ZWxzZSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNv cl92ZXJ0aWNhbChHZGsuS2V5LlBhZ2VfRG93biwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVycyk7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgY2FzZSBHZGsuS2V5LlBhZ2VfVXA6 CisrICAgICAgICBjYXNlIEdkay5LZXkuS1BfUGFnZV9VcDoKKysgICAgICAgICAgICBpZiAobV9p c193YXlsYW5kKSB7CisrICAgICAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNz X2N1cnNvcl92ZXJ0aWNhbChHZGsuS2V5LlVwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKKysgICAgICAgICAg ICB9IGVsc2UgeworKyAgICAgICAgICAgICAgICBzaG93X2NhbmRpZGF0ZSA9IGtleV9wcmVzc19j dXJzb3JfdmVydGljYWwoR2RrLktleS5QYWdlX1VwLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzKTsKKysgICAgICAg ICAgICB9CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIEdkay5LZXkuSG9tZToK KysgICAgICAgIGNhc2UgR2RrLktleS5LUF9Ib21lOgorKyAgICAgICAgICAgIHNob3dfY2FuZGlk YXRlID0ga2V5X3ByZXNzX2N1cnNvcl9ob21lX2VuZChHZGsuS2V5LkhvbWUsIG1vZGlmaWVycyk7 CisrICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICBjYXNlIEdkay5LZXkuRW5kOgorKyAgICAg ICAgY2FzZSBHZGsuS2V5LktQX0VuZDoKKysgICAgICAgICAgICBzaG93X2NhbmRpZGF0ZSA9IGtl eV9wcmVzc19jdXJzb3JfaG9tZV9lbmQoR2RrLktleS5FbmQsIG1vZGlmaWVycyk7CisrICAgICAg ICAgICAgYnJlYWs7CisrICAgICAgICBkZWZhdWx0OgorKyAgICAgICAgICAgIGlmICgobW9kaWZp ZXJzICYgR2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0spICE9IDApIHsKKysgICAgICAgICAg ICAgICAgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY29udHJvbF9rZXl2YWwoa2V5dmFsLCBt b2RpZmllcnMpOworKyAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAg ICAgICAgICAgdW5pY2hhciBjaCA9IElCdXMua2V5dmFsX3RvX3VuaWNvZGUoa2V5dmFsKTsKKysg ICAgICAgICAgICBpZiAoY2guaXNjbnRybCgpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1 ZTsKKysgICAgICAgICAgICBzdHJpbmcgc3RyID0gY2gudG9fc3RyaW5nKCk7CisrICAgICAgICAg ICAgbV9wcmVlZGl0LmFwcGVuZF90ZXh0KHN0cik7CisrICAgICAgICAgICAgc3RyaW5nIGFubm90 YXRpb24gPSBtX3ByZWVkaXQuZ2V0X3RleHQoKTsKKysgICAgICAgICAgICBtX2Vtb2ppZXIuc2V0 X2Fubm90YXRpb24oYW5ub3RhdGlvbik7CisrICAgICAgICAgICAgbV9wcmVlZGl0LnNldF9lbW9q aSgiIik7CisrICAgICAgICAgICAgc2hvd19jYW5kaWRhdGUgPSBpc19lbW9qaV9sb29rdXBfdGFi bGUoKTsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIHNob3dfcHJl ZWRpdF9hbmRfY2FuZGlkYXRlKHNob3dfY2FuZGlkYXRlKTsKKysgICAgICAgIHJldHVybiB0cnVl OworKyAgICB9CisrCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIGNvbW1pdF90ZXh0X3JlY2Vp dmVkKElCdXMuVGV4dCB0ZXh0KSB7CisrICAgICAgICB1bm93bmVkIHN0cmluZz8gc3RyID0gdGV4 dC50ZXh0OworKyAgICAgICAgaWYgKHN0ciA9PSBudWxsKQorKyAgICAgICAgICAgIHJldHVybjsK KysgICAgICAgIC8qIERvIG5vdCBjYWxsIGNvbnZlcnRfcHJlZWRpdF90ZXh0KCkgYmVjYXVzZSBp dCBkZXBlbmRzIG9uCisrICAgICAgICAgKiBlYWNoIElNRSB3aGV0aGVyIHByb2Nlc3Nfa2V5X2V2 ZW50KCkgcmVjZWl2ZXMgU2hpZnQtc3BhY2Ugb3Igbm90LgorKyAgICAgICAgICovCisrICAgICAg ICBtX3ByZWVkaXQuYXBwZW5kX3RleHQoc3RyKTsKKysgICAgICAgIG1fcHJlZWRpdC5zZXRfZW1v amkoIiIpOworKyAgICAgICAgc3RyaW5nIGFubm90YXRpb24gPSBtX3ByZWVkaXQuZ2V0X3RleHQo KTsKKysgICAgICAgIG1fZW1vamllci5zZXRfYW5ub3RhdGlvbihhbm5vdGF0aW9uKTsKKysgICAg ICAgIHNob3dfcHJlZWRpdF9hbmRfY2FuZGlkYXRlKGZhbHNlKTsKKysgICAgfQorKworKyAgICBw dWJsaWMgb3ZlcnJpZGUgdm9pZCBwYWdlX3VwX2xvb2t1cF90YWJsZSgpIHsKKysgICAgICAgIGJv b2wgc2hvd19jYW5kaWRhdGUgPSBrZXlfcHJlc3NfY3Vyc29yX3ZlcnRpY2FsKEdkay5LZXkuVXAs IDApOworKyAgICAgICAgc2hvd19wcmVlZGl0X2FuZF9jYW5kaWRhdGUoc2hvd19jYW5kaWRhdGUp OworKyAgICB9CisrCisrICAgIHB1YmxpYyBvdmVycmlkZSB2b2lkIHBhZ2VfZG93bl9sb29rdXBf dGFibGUoKSB7CisrICAgICAgICBib29sIHNob3dfY2FuZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNv cl92ZXJ0aWNhbChHZGsuS2V5LkRvd24sIDApOworKyAgICAgICAgc2hvd19wcmVlZGl0X2FuZF9j YW5kaWRhdGUoc2hvd19jYW5kaWRhdGUpOworKyAgICB9CisrCisrICAgIHB1YmxpYyBvdmVycmlk ZSB2b2lkIGN1cnNvcl91cF9sb29rdXBfdGFibGUoKSB7CisrICAgICAgICBib29sIHNob3dfY2Fu ZGlkYXRlID0ga2V5X3ByZXNzX2N1cnNvcl9ob3Jpem9udGFsKEdkay5LZXkuTGVmdCwgMCk7Cisr ICAgICAgICBzaG93X3ByZWVkaXRfYW5kX2NhbmRpZGF0ZShzaG93X2NhbmRpZGF0ZSk7CisrICAg IH0KKysKKysgICAgcHVibGljIG92ZXJyaWRlIHZvaWQgY3Vyc29yX2Rvd25fbG9va3VwX3RhYmxl KCkgeworKyAgICAgICAgYm9vbCBzaG93X2NhbmRpZGF0ZSA9IGtleV9wcmVzc19jdXJzb3JfaG9y aXpvbnRhbChHZGsuS2V5LlJpZ2h0LCAwKTsKKysgICAgICAgIHNob3dfcHJlZWRpdF9hbmRfY2Fu ZGlkYXRlKHNob3dfY2FuZGlkYXRlKTsKKysgICAgfQorKworKyAgICBwdWJsaWMgb3ZlcnJpZGUg dm9pZCBjYW5kaWRhdGVfY2xpY2tlZF9sb29rdXBfdGFibGUodWludCBpbmRleCwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQgYnV0 dG9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdWludCBzdGF0ZSkgeworKyAgICAgICAgaWYgKGJ1dHRvbiA9PSBJQnVzRW1vamllci5C VVRUT05fQ0xPU0VfQlVUVE9OKSB7CisrICAgICAgICAgICAgbV9lbmFibGVfZXh0ZW5zaW9uID0g ZmFsc2U7CisrICAgICAgICAgICAgaGlkZV9lbW9qaV9sb29rdXBfdGFibGUoKTsKKysgICAgICAg ICAgICBtX3ByZWVkaXQuaGlkZSgpOworKyAgICAgICAgICAgIElCdXMuRXh0ZW5zaW9uRXZlbnQg ZXZlbnQgPSBuZXcgSUJ1cy5FeHRlbnNpb25FdmVudCgKKysgICAgICAgICAgICAgICAgICAgICJu YW1lIiwgbV9leHRlbnNpb25fbmFtZSwKKysgICAgICAgICAgICAgICAgICAgICJpcy1lbmFibGVk IiwgZmFsc2UsCisrICAgICAgICAgICAgICAgICAgICAiaXMtZXh0ZW5zaW9uIiwgdHJ1ZSk7Cisr ICAgICAgICAgICAgcGFuZWxfZXh0ZW5zaW9uKGV2ZW50KTsKKyAgICAgICAgICAgICByZXR1cm47 CisgICAgICAgICB9CistICAgICAgICBHZGsuRXZlbnRUeXBlIGV2ZW50X3R5cGU7CistICAgICAg ICBpZiAoeGV2ZW50LmdldF9ldmVudF90eXBlKCkgPT0gSUJ1cy5YRXZlbnRUeXBlLktFWV9QUkVT UykgeworLSAgICAgICAgICAgIGV2ZW50X3R5cGUgPSBHZGsuRXZlbnRUeXBlLktFWV9QUkVTUzsK Ky0gICAgICAgIH0gZWxzZSBpZiAoeGV2ZW50LmdldF9ldmVudF90eXBlKCkgPT0gSUJ1cy5YRXZl bnRUeXBlLktFWV9SRUxFQVNFKSB7CistICAgICAgICAgICAgZXZlbnRfdHlwZSA9IEdkay5FdmVu dFR5cGUuS0VZX1JFTEVBU0U7CisrICAgICAgICBpZiAobV9lbW9qaWVyID09IG51bGwpCisrICAg ICAgICAgICAgcmV0dXJuOworKyAgICAgICAgYm9vbCBzaG93X2NhbmRpZGF0ZSA9IGZhbHNlOwor KyAgICAgICAgdWludCBuY2FuZGlkYXRlcyA9IG1fZW1vamllci5nZXRfbnVtYmVyX29mX2NhbmRp ZGF0ZXMoKTsKKysgICAgICAgIGlmIChuY2FuZGlkYXRlcyA+IDAgJiYgbmNhbmRpZGF0ZXMgPj0g aW5kZXgpIHsKKysgICAgICAgICAgICBtX2Vtb2ppZXIuc2V0X2N1cnNvcl9wb3MoaW5kZXgpOwor KyAgICAgICAgICAgIHNob3dfY2FuZGlkYXRlID0gbV9lbW9qaWVyLmhhc192YXJpYW50cyhpbmRl eCk7CisrICAgICAgICAgICAgbV9wcmVlZGl0LnNldF9lbW9qaShtX2Vtb2ppZXIuZ2V0X2N1cnJl bnRfY2FuZGlkYXRlKCkpOworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICB3YXJuaW5n ICgiTm90IHN1cHBvcnRlZCB0eXBlICVkIi5wcmludGYoeGV2ZW50LmdldF9ldmVudF90eXBlKCkp KTsKKyAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICB9CistICAgICAgICBHZGsuRXZlbnQg ZXZlbnQgPSBuZXcgR2RrLkV2ZW50KGV2ZW50X3R5cGUpOworLSAgICAgICAgdWludDMyIHRpbWUg PSB4ZXZlbnQuZ2V0X3RpbWUoKTsKKy0gICAgICAgIGlmICh0aW1lID09IDApCistICAgICAgICAg ICAgdGltZSA9IEd0ay5nZXRfY3VycmVudF9ldmVudF90aW1lKCk7CistICAgICAgICBldmVudC5r ZXkudGltZSA9IHRpbWU7CistICAgICAgICBYLldpbmRvdyB4aWQgPSB4ZXZlbnQuZ2V0X3dpbmRv dygpOworLSAgICAgICAgR2RrLkRpc3BsYXk/IGRpc3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVm YXVsdCgpOworLSAgICAgICAgR2RrLldpbmRvdz8gd2luZG93ID0gbnVsbDsKKy0gICAgICAgIGlm ICh3aW5kb3cgPT0gbnVsbCAmJiB4aWQgIT0gMCkgeworLSAgICAgICAgICAgIHdpbmRvdyA9IEdk ay5YMTEuV2luZG93Lmxvb2t1cF9mb3JfZGlzcGxheSgKKy0gICAgICAgICAgICAgICAgICAgIGRp c3BsYXkgYXMgR2RrLlgxMS5EaXNwbGF5LCB4aWQpOworLSAgICAgICAgfQorLSAgICAgICAgaWYg KHdpbmRvdyA9PSBudWxsICYmIHhpZCAhPSAwKSB7CistICAgICAgICAgICAgd2luZG93ID0gbmV3 IEdkay5YMTEuV2luZG93LmZvcmVpZ25fZm9yX2Rpc3BsYXkoCistICAgICAgICAgICAgICAgICAg ICBkaXNwbGF5IGFzIEdkay5YMTEuRGlzcGxheSwgeGlkKTsKKy0gICAgICAgIH0KKy0gICAgICAg IGlmICh3aW5kb3cgPT0gbnVsbCkgeworLSAgICAgICAgICAgIHdpbmRvdyA9IEdkay5nZXRfZGVm YXVsdF9yb290X3dpbmRvdygpOworLSAgICAgICAgICAgIHdpbmRvdy5yZWYoKTsKKy0gICAgICAg IH0KKy0gICAgICAgIGV2ZW50LmtleS53aW5kb3cgPSB3aW5kb3c7CistICAgICAgICBoYW5kbGVf ZW1vamlfdHlwaW5nKGV2ZW50KTsKKysgICAgICAgIGlmICghc2hvd19jYW5kaWRhdGUpIHsKKysg ICAgICAgICAgICBJQnVzLlRleHQgdGV4dCA9IG1fcHJlZWRpdC5nZXRfY29tbWl0X3RleHQoKTsK KysgICAgICAgICAgICBjb21taXRfdGV4dF91cGRhdGVfZmF2b3JpdGVzKHRleHQpOworKyAgICAg ICAgICAgIGhpZGVfZW1vamlfbG9va3VwX3RhYmxlKCk7CisrICAgICAgICAgICAgcmV0dXJuOwor KyAgICAgICAgfQorKyAgICAgICAgc2hvd19wcmVlZGl0X2FuZF9jYW5kaWRhdGUoc2hvd19jYW5k aWRhdGUpOworICAgICB9CisgfQorLS0gCisyLjE0LjMKKworRnJvbSA3Y2VmNWJmNTcyNTk2MzYx YmM1MDJlOGZhOTE3NTY5Njc2YTgwMzcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog ZnVqaXdhcmF0IDx0YWthby5mdWppd2FyYTFAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMCBKdW4g MjAxOCAxOTowMTo1OSArMDkwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cDogUmVwbGFjZSBlbW9q aSBmb250IHdpdGggVW5pY29kZSBmb250CisKK05vdyB0aGUgZm9udCBzZXR0aW5ncyBvZiBlbW9q aSBpcyBjb25maWd1cmFibGUgaW4gdGhlIHNlc3Npb24gYmFzZQorYnV0IG5vdCB0aGUgYXBwbGlj YXRpb24gYmFzZSBhbmQgdGhlIGN1cnJlbnQgZm9udCBzZXR0aW5nIG9uIGlidXMtc2V0dXAKK2Vm ZmVjdHMgb24gVW5pY29kZSBjaGFyYWN0ZXJzLgorQWxzbyBmaXhlZCB0aGUgcHJvZ3Jlc3MgYmFy IG9uIFVuaWNvZGUgY2FuZGlkYXRlIHRhYmxlLgorLS0tCisgc2V0dXAvc2V0dXAudWkgICAgICAg fCAgIDQgKy0KKyBzcmMvdGVzdHMvcnVudGVzdCAgICB8ICAgMiArLQorIHVpL2d0azMvZW1vamll ci52YWxhIHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIDMgZmlsZXMgY2hhbmdlZCwgMTIwIGluc2VydGlvbnMoKyksIDk5IGRlbGV0aW9u cygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAvc2V0dXAudWkgYi9zZXR1cC9zZXR1cC51aQoraW5k ZXggZjFiZWIxZGUuLjlkOWQ3ZWU5IDEwMDY0NAorLS0tIGEvc2V0dXAvc2V0dXAudWkKKysrKyBi L3NldHVwL3NldHVwLnVpCitAQCAtMTAxMCw5ICsxMDEwLDkgQEAKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ibGFiZWxfZW1vamlfZm9udCI+ CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5U cnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5h bWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8cHJvcGVydHkgbmFtZT0idG9vbHRpcF90ZXh0IiB0cmFuc2xhdGFibGU9InllcyI+U2V0 IGEgZm9udCBvZiBlbW9qaSBjYW5kaWRhdGVzIG9uIHRoZSBlbW9qaSBkaWFsb2c8L3Byb3BlcnR5 PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idG9vbHRpcF90 ZXh0IiB0cmFuc2xhdGFibGU9InllcyI+U2V0IGEgZm9udCBvZiBVbmljb2RlIGNhbmRpZGF0ZXMg b24gdGhlIGVtb2ppIGRpYWxvZzwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxwcm9wZXJ0eSBuYW1lPSJoYWxpZ24iPnN0YXJ0PC9wcm9wZXJ0eT4KKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9Inll cyI+RW1vamkgZm9udDo8L3Byb3BlcnR5PgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5Vbmljb2RlIGZvbnQ6PC9w cm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Imp1 c3RpZnkiPnJpZ2h0PC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2Jq ZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CitkaWZmIC0tZ2l0IGEv c3JjL3Rlc3RzL3J1bnRlc3QgYi9zcmMvdGVzdHMvcnVudGVzdAoraW5kZXggYjZiODQ1ZDYuLjVj MTYzMDgzIDEwMDc1NQorLS0tIGEvc3JjL3Rlc3RzL3J1bnRlc3QKKysrKyBiL3NyYy90ZXN0cy9y dW50ZXN0CitAQCAtMTQyLDcgKzE0Miw3IEBAIHJ1bl90ZXN0X2Nhc2UoKQorICAgICAgICAgLS1k YWVtb25pemUgXAorICAgICAgICAgLS1jYWNoZT1ub25lIFwKKyAgICAgICAgIC0tcGFuZWw9ZGlz YWJsZSBcCistICAgICAgICAtLXBhbmVsLWV4dGVuc2lvbj1kaXNhYmxlIFwKKysgICAgICAgIC0t ZW1vamktZXh0ZW5zaW9uPWRpc2FibGUgXAorICAgICAgICAgLS1jb25maWc9ZGVmYXVsdCBcCisg ICAgICAgICAtLXZlcmJvc2U7CisgCitkaWZmIC0tZ2l0IGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEg Yi91aS9ndGszL2Vtb2ppZXIudmFsYQoraW5kZXggY2Q5OGM5ZDcuLjdiZWI2ZjBhIDEwMDY0NAor LS0tIGEvdWkvZ3RrMy9lbW9qaWVyLnZhbGEKKysrKyBiL3VpL2d0azMvZW1vamllci52YWxhCitA QCAtMjUzLDYgKzI1Myw3IEBAIHB1YmxpYyBjbGFzcyBJQnVzRW1vamllciA6IEd0ay5BcHBsaWNh dGlvbldpbmRvdyB7CisgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBtX2N1cnJlbnRfbGFuZ19p ZDsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nIG1fZW1vamlfZm9udF9mYW1pbHk7CisgICAg IHByaXZhdGUgc3RhdGljIGludCBtX2Vtb2ppX2ZvbnRfc2l6ZTsKKysgICAgcHJpdmF0ZSBzdGF0 aWMgYm9vbCBtX2Vtb2ppX2ZvbnRfY2hhbmdlZCA9IGZhbHNlOworICAgICBwcml2YXRlIHN0YXRp YyBzdHJpbmdbXSBtX2Zhdm9yaXRlczsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgc3RyaW5nW10gbV9m YXZvcml0ZV9hbm5vdGF0aW9uczsKKyAgICAgcHJpdmF0ZSBzdGF0aWMgaW50IG1fZW1vamlfbWF4 X3NlcV9sZW47CitAQCAtMzQ4LDg4ICszNDksMjAgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVy IDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgICAgIGFkZF9hY3Rpb24oYWN0aW9uKTsK KyAgICAgICAgIGlmIChtX2N1cnJlbnRfbGFuZ19pZCA9PSBudWxsKQorICAgICAgICAgICAgIG1f Y3VycmVudF9sYW5nX2lkID0gImVuIjsKKy0gICAgICAgIGlmIChtX2Vtb2ppX2ZvbnRfZmFtaWx5 ID09IG51bGwpCisrICAgICAgICBpZiAobV9lbW9qaV9mb250X2ZhbWlseSA9PSBudWxsKSB7Cisg ICAgICAgICAgICAgbV9lbW9qaV9mb250X2ZhbWlseSA9ICJNb25vc3BhY2UiOworLSAgICAgICAg aWYgKG1fZW1vamlfZm9udF9zaXplID09IDApCisrICAgICAgICAgICAgbV9lbW9qaV9mb250X2No YW5nZWQgPSB0cnVlOworKyAgICAgICAgfQorKyAgICAgICAgaWYgKG1fZW1vamlfZm9udF9zaXpl ID09IDApIHsKKyAgICAgICAgICAgICBtX2Vtb2ppX2ZvbnRfc2l6ZSA9IDE2OworKyAgICAgICAg ICAgIG1fZW1vamlfZm9udF9jaGFuZ2VkID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAgICAgIGlm IChtX2Zhdm9yaXRlcyA9PSBudWxsKQorICAgICAgICAgICAgIG1fZmF2b3JpdGVzID0ge307Cisg ICAgICAgICBpZiAobV9mYXZvcml0ZV9hbm5vdGF0aW9ucyA9PSBudWxsKQorICAgICAgICAgICAg IG1fZmF2b3JpdGVfYW5ub3RhdGlvbnMgPSB7fTsKKyAKKy0gICAgICAgIEdkay5EaXNwbGF5IGRp c3BsYXkgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCgpOworLSAgICAgICAgR2RrLlNjcmVlbiBz Y3JlZW4gPSAoZGlzcGxheSAhPSBudWxsKSA/CistICAgICAgICAgICAgICAgIGRpc3BsYXkuZ2V0 X2RlZmF1bHRfc2NyZWVuKCkgOiBudWxsOworLQorLSAgICAgICAgaWYgKHNjcmVlbiA9PSBudWxs KSB7CistICAgICAgICAgICAgd2FybmluZygiQ291bGQgbm90IG9wZW4gZGlzcGxheS4iKTsKKy0g ICAgICAgICAgICByZXR1cm47CistICAgICAgICB9CistICAgICAgICAvLyBTZXQgZW4gbG9jYWxl IGJlY2F1c2UgZGVfREUncyBkZWNpbWFsX3BvaW50IGlzICcsJyBpbnN0ZWFkIG9mICcuJworLSAg ICAgICAgc3RyaW5nPyBiYWNrdXBfbG9jYWxlID0KKy0gICAgICAgICAgICBJbnRsLnNldGxvY2Fs ZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCBudWxsKS5kdXAoKTsKKy0gICAgICAgIGlmIChJbnRs LnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiZW5fVVMuVVRGLTgiKSA9PSBudWxs KSB7CistICAgICAgICAgIGlmIChJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklD LCAiQy5VVEYtOCIpID09IG51bGwpIHsKKy0gICAgICAgICAgICAgIGlmIChJbnRsLnNldGxvY2Fs ZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiQyIpID09IG51bGwpIHsKKy0gICAgICAgICAgICAg ICAgICB3YXJuaW5nKCJZb3UgZG9uJ3QgaW5zdGFsbCBlaXRoZXIgZW5fVVMuVVRGLTggb3IgQy5V VEYtOCAiICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICJvciBDIGxvY2FsZSIpOworLSAg ICAgICAgICAgICAgfQorLSAgICAgICAgICB9CistICAgICAgICB9CistICAgICAgICBtX3JnYmEg PSBuZXcgVGhlbWVkUkdCQSh0aGlzKTsKKy0gICAgICAgIHVpbnQgYmdfcmVkID0gKHVpbnQpKG1f cmdiYS5ub3JtYWxfYmcucmVkICogMjU1KTsKKy0gICAgICAgIHVpbnQgYmdfZ3JlZW4gPSAodWlu dCkobV9yZ2JhLm5vcm1hbF9iZy5ncmVlbiAqIDI1NSk7CistICAgICAgICB1aW50IGJnX2JsdWUg PSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5ibHVlICogMjU1KTsKKy0gICAgICAgIGRvdWJsZSBi Z19hbHBoYSA9IG1fcmdiYS5ub3JtYWxfYmcuYWxwaGE7CistICAgICAgICBzdHJpbmcgZGF0YSA9 CistICAgICAgICAgICAgICAgICIjSUJ1c0Vtb2ppZXJXaGl0ZUxhYmVsIHsgYmFja2dyb3VuZC1j b2xvcjogIiArCistICAgICAgICAgICAgICAgICAgICAgICAgInJnYmEoJXUsICV1LCAldSwgJWxm KTsgIi5wcmludGYoCistICAgICAgICAgICAgICAgICAgICAgICAgYmdfcmVkLCBiZ19ncmVlbiwg YmdfYmx1ZSwgYmdfYWxwaGEpICsKKy0gICAgICAgICAgICAgICAgImZvbnQtZmFtaWx5OiAlczsg Zm9udC1zaXplOiAlZHB0OyAiLnByaW50ZigKKy0gICAgICAgICAgICAgICAgICAgICAgICBtX2Vt b2ppX2ZvbnRfZmFtaWx5LCBtX2Vtb2ppX2ZvbnRfc2l6ZSkgKworLSAgICAgICAgICAgICAgICAi Ym9yZGVyLXdpZHRoOiA0cHg7IGJvcmRlci1yYWRpdXM6IDNweDsgfSAiOworLQorLSAgICAgICAg dWludCBmZ19yZWQgPSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2ZnLnJlZCAqIDI1NSk7CistICAg ICAgICB1aW50IGZnX2dyZWVuID0gKHVpbnQpKG1fcmdiYS5zZWxlY3RlZF9mZy5ncmVlbiAqIDI1 NSk7CistICAgICAgICB1aW50IGZnX2JsdWUgPSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2ZnLmJs dWUgKiAyNTUpOworLSAgICAgICAgZG91YmxlIGZnX2FscGhhID0gbV9yZ2JhLnNlbGVjdGVkX2Zn LmFscGhhOworLSAgICAgICAgYmdfcmVkID0gKHVpbnQpKG1fcmdiYS5zZWxlY3RlZF9iZy5yZWQg KiAyNTUpOworLSAgICAgICAgYmdfZ3JlZW4gPSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2JnLmdy ZWVuICogMjU1KTsKKy0gICAgICAgIGJnX2JsdWUgPSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2Jn LmJsdWUgKiAyNTUpOworLSAgICAgICAgYmdfYWxwaGEgPSBtX3JnYmEuc2VsZWN0ZWRfYmcuYWxw aGE7CistICAgICAgICBkYXRhICs9ICIjSUJ1c0Vtb2ppZXJTZWxlY3RlZExhYmVsIHsgY29sb3I6 ICIgKworLSAgICAgICAgICAgICAgICAgICAgICAgICJyZ2JhKCV1LCAldSwgJXUsICVsZik7ICIu cHJpbnRmKAorLSAgICAgICAgICAgICAgICAgICAgICAgIGZnX3JlZCwgZmdfZ3JlZW4sIGZnX2Js dWUsIGZnX2FscGhhKSArCistICAgICAgICAgICAgICAgICJmb250LWZhbWlseTogJXM7IGZvbnQt c2l6ZTogJWRwdDsgIi5wcmludGYoCistICAgICAgICAgICAgICAgICAgICAgICAgbV9lbW9qaV9m b250X2ZhbWlseSwgbV9lbW9qaV9mb250X3NpemUpICsKKy0gICAgICAgICAgICAgICAgImJhY2tn cm91bmQtY29sb3I6ICIgKworLSAgICAgICAgICAgICAgICAgICAgICAgICJyZ2JhKCV1LCAldSwg JXUsICVsZik7ICIucHJpbnRmKAorLSAgICAgICAgICAgICAgICAgICAgICAgIGJnX3JlZCwgYmdf Z3JlZW4sIGJnX2JsdWUsIGJnX2FscGhhKSArCistICAgICAgICAgICAgICAgICJib3JkZXItd2lk dGg6IDRweDsgYm9yZGVyLXJhZGl1czogM3B4OyB9IjsKKy0gICAgICAgIGRhdGEgKz0gIiNJQnVz RW1vamllckdvbGRMYWJlbCB7IGNvbG9yOiAiICsKKy0gICAgICAgICAgICAgICAgICAgICAgICAi cmdiYSgldSwgJXUsICV1LCAlbGYpOyAiLnByaW50ZigKKy0gICAgICAgICAgICAgICAgICAgICAg ICBmZ19yZWQsIGZnX2dyZWVuLCBmZ19ibHVlLCBmZ19hbHBoYSkgKworLSAgICAgICAgICAgICAg ICAiZm9udC1mYW1pbHk6ICVzOyBmb250LXNpemU6ICVkcHQ7ICIucHJpbnRmKAorLSAgICAgICAg ICAgICAgICAgICAgICAgIG1fZW1vamlfZm9udF9mYW1pbHksIG1fZW1vamlfZm9udF9zaXplKSAr CistICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWNvbG9yOiAjYjA5YzVmOyAiICsKKy0gICAg ICAgICAgICAgICAgImJvcmRlci13aWR0aDogNHB4OyBib3JkZXItcmFkaXVzOiAzcHg7IH0iOwor LQorLSAgICAgICAgR3RrLkNzc1Byb3ZpZGVyIGNzc19wcm92aWRlciA9IG5ldyBHdGsuQ3NzUHJv dmlkZXIoKTsKKy0gICAgICAgIHRyeSB7CistICAgICAgICAgICAgY3NzX3Byb3ZpZGVyLmxvYWRf ZnJvbV9kYXRhKGRhdGEsIC0xKTsKKy0gICAgICAgIH0gY2F0Y2ggKEdMaWIuRXJyb3IgZSkgewor LSAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCBjc3NfcHJvdmlkZXJfZnJvbV9kYXRhOiAlcyIs IGUubWVzc2FnZSk7CistICAgICAgICAgICAgcmV0dXJuOworLSAgICAgICAgfQorLSAgICAgICAg aWYgKGJhY2t1cF9sb2NhbGUgIT0gbnVsbCkKKy0gICAgICAgICAgICBJbnRsLnNldGxvY2FsZShM b2NhbGVDYXRlZ29yeS5OVU1FUklDLCBiYWNrdXBfbG9jYWxlKTsKKy0gICAgICAgIGVsc2UKKy0g ICAgICAgICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCAiIik7Cist CistICAgICAgICBHdGsuU3R5bGVDb250ZXh0LmFkZF9wcm92aWRlcl9mb3Jfc2NyZWVuKAorLSAg ICAgICAgICAgICAgICBzY3JlZW4sCistICAgICAgICAgICAgICAgIGNzc19wcm92aWRlciwKKy0g ICAgICAgICAgICAgICAgR3RrLlNUWUxFX1BST1ZJREVSX1BSSU9SSVRZX0FQUExJQ0FUSU9OKTsK KysgICAgICAgIHNldF9jc3NfZGF0YSgpOworIAorICAgICAgICAgbV92Ym94ID0gbmV3IEd0ay5C b3goR3RrLk9yaWVudGF0aW9uLlZFUlRJQ0FMLCAwKTsKKyAgICAgICAgIGFkZChtX3Zib3gpOwor QEAgLTc5NSw2ICs3MjgsODQgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxp Y2F0aW9uV2luZG93IHsKKyAgICAgfQorIAorIAorKyAgICBwcml2YXRlIHZvaWQgc2V0X2Nzc19k YXRhKCkgeworKyAgICAgICAgR2RrLkRpc3BsYXkgZGlzcGxheSA9IEdkay5EaXNwbGF5LmdldF9k ZWZhdWx0KCk7CisrICAgICAgICBHZGsuU2NyZWVuIHNjcmVlbiA9IChkaXNwbGF5ICE9IG51bGwp ID8KKysgICAgICAgICAgICAgICAgZGlzcGxheS5nZXRfZGVmYXVsdF9zY3JlZW4oKSA6IG51bGw7 CisrCisrICAgICAgICBpZiAoc2NyZWVuID09IG51bGwpIHsKKysgICAgICAgICAgICB3YXJuaW5n KCJDb3VsZCBub3Qgb3BlbiBkaXNwbGF5LiIpOworKyAgICAgICAgICAgIHJldHVybjsKKysgICAg ICAgIH0KKysgICAgICAgIC8vIFNldCBlbiBsb2NhbGUgYmVjYXVzZSBkZV9ERSdzIGRlY2ltYWxf cG9pbnQgaXMgJywnIGluc3RlYWQgb2YgJy4nCisrICAgICAgICBzdHJpbmc/IGJhY2t1cF9sb2Nh bGUgPQorKyAgICAgICAgICAgIEludGwuc2V0bG9jYWxlKExvY2FsZUNhdGVnb3J5Lk5VTUVSSUMs IG51bGwpLmR1cCgpOworKyAgICAgICAgaWYgKEludGwuc2V0bG9jYWxlKExvY2FsZUNhdGVnb3J5 Lk5VTUVSSUMsICJlbl9VUy5VVEYtOCIpID09IG51bGwpIHsKKysgICAgICAgICAgaWYgKEludGwu c2V0bG9jYWxlKExvY2FsZUNhdGVnb3J5Lk5VTUVSSUMsICJDLlVURi04IikgPT0gbnVsbCkgewor KyAgICAgICAgICAgICAgaWYgKEludGwuc2V0bG9jYWxlKExvY2FsZUNhdGVnb3J5Lk5VTUVSSUMs ICJDIikgPT0gbnVsbCkgeworKyAgICAgICAgICAgICAgICAgIHdhcm5pbmcoIllvdSBkb24ndCBp bnN0YWxsIGVpdGhlciBlbl9VUy5VVEYtOCBvciBDLlVURi04ICIgKworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgIm9yIEMgbG9jYWxlIik7CisrICAgICAgICAgICAgICB9CisrICAgICAgICAg IH0KKysgICAgICAgIH0KKysgICAgICAgIGlmIChtX3JnYmEgPT0gbnVsbCkKKysgICAgICAgICAg ICBtX3JnYmEgPSBuZXcgVGhlbWVkUkdCQSh0aGlzKTsKKysgICAgICAgIHVpbnQgYmdfcmVkID0g KHVpbnQpKG1fcmdiYS5ub3JtYWxfYmcucmVkICogMjU1KTsKKysgICAgICAgIHVpbnQgYmdfZ3Jl ZW4gPSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5ncmVlbiAqIDI1NSk7CisrICAgICAgICB1aW50 IGJnX2JsdWUgPSAodWludCkobV9yZ2JhLm5vcm1hbF9iZy5ibHVlICogMjU1KTsKKysgICAgICAg IGRvdWJsZSBiZ19hbHBoYSA9IG1fcmdiYS5ub3JtYWxfYmcuYWxwaGE7CisrICAgICAgICBzdHJp bmcgZGF0YSA9CisrICAgICAgICAgICAgICAgICIjSUJ1c0Vtb2ppZXJXaGl0ZUxhYmVsIHsgYmFj a2dyb3VuZC1jb2xvcjogIiArCisrICAgICAgICAgICAgICAgICAgICAgICAgInJnYmEoJXUsICV1 LCAldSwgJWxmKTsgIi5wcmludGYoCisrICAgICAgICAgICAgICAgICAgICAgICAgYmdfcmVkLCBi Z19ncmVlbiwgYmdfYmx1ZSwgYmdfYWxwaGEpICsKKysgICAgICAgICAgICAgICAgImZvbnQtZmFt aWx5OiAlczsgZm9udC1zaXplOiAlZHB0OyAiLnByaW50ZigKKysgICAgICAgICAgICAgICAgICAg ICAgICBtX2Vtb2ppX2ZvbnRfZmFtaWx5LCBtX2Vtb2ppX2ZvbnRfc2l6ZSkgKworKyAgICAgICAg ICAgICAgICAiYm9yZGVyLXdpZHRoOiA0cHg7IGJvcmRlci1yYWRpdXM6IDNweDsgfSAiOworKwor KyAgICAgICAgdWludCBmZ19yZWQgPSAodWludCkobV9yZ2JhLnNlbGVjdGVkX2ZnLnJlZCAqIDI1 NSk7CisrICAgICAgICB1aW50IGZnX2dyZWVuID0gKHVpbnQpKG1fcmdiYS5zZWxlY3RlZF9mZy5n cmVlbiAqIDI1NSk7CisrICAgICAgICB1aW50IGZnX2JsdWUgPSAodWludCkobV9yZ2JhLnNlbGVj dGVkX2ZnLmJsdWUgKiAyNTUpOworKyAgICAgICAgZG91YmxlIGZnX2FscGhhID0gbV9yZ2JhLnNl bGVjdGVkX2ZnLmFscGhhOworKyAgICAgICAgYmdfcmVkID0gKHVpbnQpKG1fcmdiYS5zZWxlY3Rl ZF9iZy5yZWQgKiAyNTUpOworKyAgICAgICAgYmdfZ3JlZW4gPSAodWludCkobV9yZ2JhLnNlbGVj dGVkX2JnLmdyZWVuICogMjU1KTsKKysgICAgICAgIGJnX2JsdWUgPSAodWludCkobV9yZ2JhLnNl bGVjdGVkX2JnLmJsdWUgKiAyNTUpOworKyAgICAgICAgYmdfYWxwaGEgPSBtX3JnYmEuc2VsZWN0 ZWRfYmcuYWxwaGE7CisrICAgICAgICBkYXRhICs9ICIjSUJ1c0Vtb2ppZXJTZWxlY3RlZExhYmVs IHsgY29sb3I6ICIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICJyZ2JhKCV1LCAldSwgJXUs ICVsZik7ICIucHJpbnRmKAorKyAgICAgICAgICAgICAgICAgICAgICAgIGZnX3JlZCwgZmdfZ3Jl ZW4sIGZnX2JsdWUsIGZnX2FscGhhKSArCisrICAgICAgICAgICAgICAgICJmb250LWZhbWlseTog JXM7IGZvbnQtc2l6ZTogJWRwdDsgIi5wcmludGYoCisrICAgICAgICAgICAgICAgICAgICAgICAg bV9lbW9qaV9mb250X2ZhbWlseSwgbV9lbW9qaV9mb250X3NpemUpICsKKysgICAgICAgICAgICAg ICAgImJhY2tncm91bmQtY29sb3I6ICIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICJyZ2Jh KCV1LCAldSwgJXUsICVsZik7ICIucHJpbnRmKAorKyAgICAgICAgICAgICAgICAgICAgICAgIGJn X3JlZCwgYmdfZ3JlZW4sIGJnX2JsdWUsIGJnX2FscGhhKSArCisrICAgICAgICAgICAgICAgICJi b3JkZXItd2lkdGg6IDRweDsgYm9yZGVyLXJhZGl1czogM3B4OyB9IjsKKysgICAgICAgIGRhdGEg Kz0gIiNJQnVzRW1vamllckdvbGRMYWJlbCB7IGNvbG9yOiAiICsKKysgICAgICAgICAgICAgICAg ICAgICAgICAicmdiYSgldSwgJXUsICV1LCAlbGYpOyAiLnByaW50ZigKKysgICAgICAgICAgICAg ICAgICAgICAgICBmZ19yZWQsIGZnX2dyZWVuLCBmZ19ibHVlLCBmZ19hbHBoYSkgKworKyAgICAg ICAgICAgICAgICAiZm9udC1mYW1pbHk6ICVzOyBmb250LXNpemU6ICVkcHQ7ICIucHJpbnRmKAor KyAgICAgICAgICAgICAgICAgICAgICAgIG1fZW1vamlfZm9udF9mYW1pbHksIG1fZW1vamlfZm9u dF9zaXplKSArCisrICAgICAgICAgICAgICAgICJiYWNrZ3JvdW5kLWNvbG9yOiAjYjA5YzVmOyAi ICsKKysgICAgICAgICAgICAgICAgImJvcmRlci13aWR0aDogNHB4OyBib3JkZXItcmFkaXVzOiAz cHg7IH0iOworKworKyAgICAgICAgR3RrLkNzc1Byb3ZpZGVyIGNzc19wcm92aWRlciA9IG5ldyBH dGsuQ3NzUHJvdmlkZXIoKTsKKysgICAgICAgIHRyeSB7CisrICAgICAgICAgICAgY3NzX3Byb3Zp ZGVyLmxvYWRfZnJvbV9kYXRhKGRhdGEsIC0xKTsKKysgICAgICAgIH0gY2F0Y2ggKEdMaWIuRXJy b3IgZSkgeworKyAgICAgICAgICAgIHdhcm5pbmcoIkZhaWxlZCBjc3NfcHJvdmlkZXJfZnJvbV9k YXRhOiAlcyIsIGUubWVzc2FnZSk7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQor KyAgICAgICAgaWYgKGJhY2t1cF9sb2NhbGUgIT0gbnVsbCkKKysgICAgICAgICAgICBJbnRsLnNl dGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklDLCBiYWNrdXBfbG9jYWxlKTsKKysgICAgICAg IGVsc2UKKysgICAgICAgICAgICBJbnRsLnNldGxvY2FsZShMb2NhbGVDYXRlZ29yeS5OVU1FUklD LCAiIik7CisrCisrICAgICAgICBHdGsuU3R5bGVDb250ZXh0LmFkZF9wcm92aWRlcl9mb3Jfc2Ny ZWVuKAorKyAgICAgICAgICAgICAgICBzY3JlZW4sCisrICAgICAgICAgICAgICAgIGNzc19wcm92 aWRlciwKKysgICAgICAgICAgICAgICAgR3RrLlNUWUxFX1BST1ZJREVSX1BSSU9SSVRZX0FQUExJ Q0FUSU9OKTsKKysgICAgfQorKworKworICAgICBwcml2YXRlIHZvaWQgc2V0X2ZpeGVkX3NpemUo KSB7CisgICAgICAgICByZXNpemUoMjAsIDEpOworICAgICB9CitAQCAtMTAzOCw3ICsxMDQ5LDgg QEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxpY2F0aW9uV2luZG93IHsKKyAg ICAgICAgICAgICBtX2xvb2t1cF90YWJsZS5hcHBlbmRfY2FuZGlkYXRlKHRleHQpOworICAgICAg ICAgfQorICAgICAgICAgbV9iYWNrd2FyZCA9IGJsb2NrX25hbWU7CistICAgICAgICBtX2Fubm90 YXRpb24gPSBtX2xvb2t1cF90YWJsZS5nZXRfY2FuZGlkYXRlKDApLnRleHQ7CisrICAgICAgICBp ZiAobV9sb29rdXBfdGFibGUuZ2V0X251bWJlcl9vZl9jYW5kaWRhdGVzKCkgPiAwKQorKyAgICAg ICAgICAgIG1fYW5ub3RhdGlvbiA9IG1fbG9va3VwX3RhYmxlLmdldF9jYW5kaWRhdGUoMCkudGV4 dDsKKyAgICAgfQorIAorIAorQEAgLTEzODUsNiArMTM5NywxMCBAQCBwdWJsaWMgY2xhc3MgSUJ1 c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAgICBwcml2YXRlIHZvaWQgc2hv d19jYW5kaWRhdGVfcGFuZWwoKSB7CisgICAgICAgICByZW1vdmVfYWxsX2NoaWxkcmVuKCk7Cisg ICAgICAgICBzZXRfZml4ZWRfc2l6ZSgpOworKyAgICAgICAgaWYgKG1fZW1vamlfZm9udF9jaGFu Z2VkKSB7CisrICAgICAgICAgICAgc2V0X2Nzc19kYXRhKCk7CisrICAgICAgICAgICAgbV9lbW9q aV9mb250X2NoYW5nZWQgPSBmYWxzZTsKKysgICAgICAgIH0KKyAgICAgICAgIHVpbnQgcGFnZV9z aXplID0gbV9sb29rdXBfdGFibGUuZ2V0X3BhZ2Vfc2l6ZSgpOworICAgICAgICAgdWludCBuY2Fu ZGlkYXRlcyA9IG1fbG9va3VwX3RhYmxlLmdldF9udW1iZXJfb2ZfY2FuZGlkYXRlcygpOworICAg ICAgICAgdWludCBjdXJzb3IgPSBtX2xvb2t1cF90YWJsZS5nZXRfY3Vyc29yX3BvcygpOworQEAg LTE0ODgsMzIgKzE1MDQsMzMgQEAgcHVibGljIGNsYXNzIElCdXNFbW9qaWVyIDogR3RrLkFwcGxp Y2F0aW9uV2luZG93IHsKKyAKKyAgICAgICAgICAgICBtX2NhbmRpZGF0ZXMgKz0gbGFiZWw7Cisg ICAgICAgICB9CistICAgICAgICBpZiAobiA+IDApIHsKKy0gICAgICAgICAgICBtX2NhbmRpZGF0 ZV9wYW5lbF9pc192aXNpYmxlID0gdHJ1ZTsKKy0gICAgICAgICAgICBpZiAoIW1faXNfdXBfc2lk ZV9kb3duKSB7CistICAgICAgICAgICAgICAgIHNob3dfYXJyb3dfYnV0dG9ucygpOworLSAgICAg ICAgICAgICAgICBpZiAoYmFja3dhcmRfYnV0dG9uICE9IG51bGwpIHsKKy0gICAgICAgICAgICAg ICAgICAgIG1fdmJveC5hZGQoYmFja3dhcmRfYnV0dG9uKTsKKy0gICAgICAgICAgICAgICAgICAg IGJhY2t3YXJkX2J1dHRvbi5zaG93X2FsbCgpOworLSAgICAgICAgICAgICAgICB9CisrICAgICAg ICBtX2NhbmRpZGF0ZV9wYW5lbF9pc192aXNpYmxlID0gdHJ1ZTsKKysgICAgICAgIGlmICghbV9p c191cF9zaWRlX2Rvd24pIHsKKysgICAgICAgICAgICBzaG93X2Fycm93X2J1dHRvbnMoKTsKKysg ICAgICAgICAgICBpZiAoYmFja3dhcmRfYnV0dG9uICE9IG51bGwpIHsKKysgICAgICAgICAgICAg ICAgbV92Ym94LmFkZChiYWNrd2FyZF9idXR0b24pOworKyAgICAgICAgICAgICAgICBiYWNrd2Fy ZF9idXR0b24uc2hvd19hbGwoKTsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgaWYgKG4g PiAwKSB7CisgICAgICAgICAgICAgICAgIG1fdmJveC5hZGQoZ3JpZCk7CisgICAgICAgICAgICAg ICAgIGdyaWQuc2hvd19hbGwoKTsKKyAgICAgICAgICAgICAgICAgc2hvd19kZXNjcmlwdGlvbigp OworLSAgICAgICAgICAgICAgICBpZiAoIW1fbG9hZGVkX3VuaWNvZGUpCistICAgICAgICAgICAg ICAgICAgICBzaG93X3VuaWNvZGVfcHJvZ3Jlc3NfYmFyKCk7CisgICAgICAgICAgICAgfQorLSAg ICAgICAgICAgIGlmIChtX2lzX3VwX3NpZGVfZG93bikgeworLSAgICAgICAgICAgICAgICBpZiAo IW1fbG9hZGVkX3VuaWNvZGUpCistICAgICAgICAgICAgICAgICAgICBzaG93X3VuaWNvZGVfcHJv Z3Jlc3NfYmFyKCk7CisrICAgICAgICAgICAgaWYgKCFtX2xvYWRlZF91bmljb2RlKQorKyAgICAg ICAgICAgICAgICBzaG93X3VuaWNvZGVfcHJvZ3Jlc3NfYmFyKCk7CisrICAgICAgICB9IGVsc2Ug eworKyAgICAgICAgICAgIGlmICghbV9sb2FkZWRfdW5pY29kZSkKKysgICAgICAgICAgICAgICAg c2hvd191bmljb2RlX3Byb2dyZXNzX2JhcigpOworKyAgICAgICAgICAgIGlmIChuID4gMCkgewor ICAgICAgICAgICAgICAgICBzaG93X2Rlc2NyaXB0aW9uKCk7CisgICAgICAgICAgICAgICAgIG1f dmJveC5hZGQoZ3JpZCk7CisgICAgICAgICAgICAgICAgIGdyaWQuc2hvd19hbGwoKTsKKy0gICAg ICAgICAgICAgICAgaWYgKGJhY2t3YXJkX2J1dHRvbiAhPSBudWxsKSB7CistICAgICAgICAgICAg ICAgICAgICBtX3Zib3guYWRkKGJhY2t3YXJkX2J1dHRvbik7CistICAgICAgICAgICAgICAgICAg ICBiYWNrd2FyZF9idXR0b24uc2hvd19hbGwoKTsKKy0gICAgICAgICAgICAgICAgfQorLSAgICAg ICAgICAgICAgICBzaG93X2Fycm93X2J1dHRvbnMoKTsKKyAgICAgICAgICAgICB9CisrICAgICAg ICAgICAgaWYgKGJhY2t3YXJkX2J1dHRvbiAhPSBudWxsKSB7CisrICAgICAgICAgICAgICAgIG1f dmJveC5hZGQoYmFja3dhcmRfYnV0dG9uKTsKKysgICAgICAgICAgICAgICAgYmFja3dhcmRfYnV0 dG9uLnNob3dfYWxsKCk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHNob3dfYXJyb3df YnV0dG9ucygpOworICAgICAgICAgfQorICAgICB9CisgCitAQCAtMjYxOCwxMSArMjYzNSwxNSBA QCBwdWJsaWMgY2xhc3MgSUJ1c0Vtb2ppZXIgOiBHdGsuQXBwbGljYXRpb25XaW5kb3cgeworICAg ICAgICAgUGFuZ28uRm9udERlc2NyaXB0aW9uIGZvbnRfZGVzYyA9CisgICAgICAgICAgICAgICAg IFBhbmdvLkZvbnREZXNjcmlwdGlvbi5mcm9tX3N0cmluZyhlbW9qaV9mb250KTsKKyAgICAgICAg IHN0cmluZyBmb250X2ZhbWlseSA9IGZvbnRfZGVzYy5nZXRfZmFtaWx5KCk7CistICAgICAgICBp ZiAoZm9udF9mYW1pbHkgIT0gbnVsbCkKKysgICAgICAgIGlmIChmb250X2ZhbWlseSAhPSBudWxs KSB7CisgICAgICAgICAgICAgbV9lbW9qaV9mb250X2ZhbWlseSA9IGZvbnRfZmFtaWx5OworKyAg ICAgICAgICAgIG1fZW1vamlfZm9udF9jaGFuZ2VkID0gdHJ1ZTsKKysgICAgICAgIH0KKyAgICAg ICAgIGludCBmb250X3NpemUgPSBmb250X2Rlc2MuZ2V0X3NpemUoKSAvIFBhbmdvLlNDQUxFOwor LSAgICAgICAgaWYgKGZvbnRfc2l6ZSAhPSAwKQorKyAgICAgICAgaWYgKGZvbnRfc2l6ZSAhPSAw KSB7CisgICAgICAgICAgICAgbV9lbW9qaV9mb250X3NpemUgPSBmb250X3NpemU7CisrICAgICAg ICAgICAgbV9lbW9qaV9mb250X2NoYW5nZWQgPSB0cnVlOworKyAgICAgICAgfQorICAgICB9Cisg CisgCistLSAKKzIuMTQuMworCgpkaWZmIC0tZ2l0IGEvaWJ1cy5zcGVjIGIvaWJ1cy5zcGVjCmlu ZGV4IDZkMjc1OWYuLjhjY2M5OGUgMTAwNjQ0Ci0tLSBhL2lidXMuc3BlYworKysgYi9pYnVzLnNw ZWMKQEAgLTIwLDggKzIwLDYgQEAKICVnbG9iYWwgd2l0aF9rZGU1IDAKICVlbmRpZgogCi0lZ2xv YmFsIHdpdGhfZW1vamlfaGFyZmJ1enogMQotCiAlZ2xvYmFsIGlidXNfYXBpX3ZlcnNpb24gMS4w CiAKICMgZm9yIGJ5dGVjb21waWxlIGluICUle19kYXRhZGlyfS9pYnVzL3NldHVwCkBAIC00MSw3 ICszOSw3IEBACiAKIE5hbWU6ICAgICAgICAgICBpYnVzCiBWZXJzaW9uOiAgICAgICAgMS41LjE4 Ci1SZWxlYXNlOiAgICAgICAgNiV7P2Rpc3R9CitSZWxlYXNlOiAgICAgICAgNyV7P2Rpc3R9CiBT dW1tYXJ5OiAgICAgICAgSW50ZWxsaWdlbnQgSW5wdXQgQnVzIGZvciBMaW51eCBPUwogTGljZW5z ZTogICAgICAgIExHUEx2MisKIEdyb3VwOiAgICAgICAgICBTeXN0ZW0gRW52aXJvbm1lbnQvTGli cmFyaWVzCkBAIC01MywxMiArNTEsOCBAQCBTb3VyY2UyOiAgICAgICAgJXtuYW1lfS5jb25mLjUK ICMgVXBzdHJlYW1lZCBwYXRjaGVzLgogIyBQYXRjaDA6ICAgICAgICAgJSV7bmFtZX0tSEVBRC5w YXRjaAogUGF0Y2gwOiAgICAgICAgICV7bmFtZX0tSEVBRC5wYXRjaAotJWlmICV3aXRoX2Vtb2pp X2hhcmZidXp6Ci0jIFVuZGVyIHRlc3Rpbmcgc2VsZiByZW5kZXJpbmcgdW50aWwgUGFuZ28sIEZv bnRjb25maWcsIENhaXJvIGFyZSBzdGFibGUKLVBhdGNoMTogICAgICAgICAle25hbWV9LXh4LWVt b2ppLWhhcmZidXp6LnBhdGNoCi0lZW5kaWYKICMgVW5kZXIgdGVzdGluZyAjMTM0OTE0OCAjMTM4 NTM0OSAjMTM1MDI5MSAjMTQwNjY5OSAjMTQzMjI1MgotUGF0Y2gyOiAgICAgICAgICV7bmFtZX0t MTM4NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAorUGF0Y2gxOiAgICAgICAgICV7bmFtZX0tMTM4 NTM0OS1zZWd2LWJ1cy1wcm94eS5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOiAgZ2V0dGV4dC1kZXZl bAogQnVpbGRSZXF1aXJlczogIGxpYnRvb2wKQEAgLTgyLDYgKzc2LDcgQEAgQnVpbGRSZXF1aXJl czogIHZhbGEtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6ICB2YWxhLXRvb2xzCiAjIGZvciBBTV9HQ09O Rl9TT1VSQ0VfMiBpbiBjb25maWd1cmUuYWMKIEJ1aWxkUmVxdWlyZXM6ICBHQ29uZjItZGV2ZWwK K0J1aWxkUmVxdWlyZXM6ICBnaXQKIEJ1aWxkUmVxdWlyZXM6ICBpbnRsdG9vbAogQnVpbGRSZXF1 aXJlczogIGlzby1jb2Rlcy1kZXZlbAogQnVpbGRSZXF1aXJlczogIGxpYm5vdGlmeS1kZXZlbApA QCAtOTIsMTEgKzg3LDYgQEAgQnVpbGRSZXF1aXJlczogIHF0NS1xdGJhc2UtZGV2ZWwKIEJ1aWxk UmVxdWlyZXM6ICBjbGRyLWVtb2ppLWFubm90YXRpb24KIEJ1aWxkUmVxdWlyZXM6ICB1bmljb2Rl LWVtb2ppCiBCdWlsZFJlcXVpcmVzOiAgdW5pY29kZS11Y2QKLSVpZiAld2l0aF9lbW9qaV9oYXJm YnV6egotQnVpbGRSZXF1aXJlczogIGNhaXJvLWRldmVsCi1CdWlsZFJlcXVpcmVzOiAgZm9udGNv bmZpZy1kZXZlbAotQnVpbGRSZXF1aXJlczogIGhhcmZidXp6LWRldmVsCi0lZW5kaWYKIAogUmVx dWlyZXM6ICAgICAgICV7bmFtZX0tbGlicyV7P19pc2F9ICAgPSAle3ZlcnNpb259LSV7cmVsZWFz ZX0KIFJlcXVpcmVzOiAgICAgICAle25hbWV9LWd0azIlez9faXNhfSAgID0gJXt2ZXJzaW9ufS0l e3JlbGVhc2V9CkBAIC0yNjAsMTQgKzI1MCw4IEBAIFRoZSBpYnVzLWRldmVsLWRvY3MgcGFja2Fn ZSBjb250YWlucyBkZXZlbG9wZXIgZG9jdW1lbnRhdGlvbiBmb3IgSUJ1cwogCiAKICVwcmVwCi0l c2V0dXAgLXEKLSMgJSVwYXRjaDAgLXAxCi0lcGF0Y2gwIC1wMQorJWF1dG9zZXR1cCAtUyBnaXQK ICMgY3AgY2xpZW50L2d0azIvaWJ1c2ltY29udGV4dC5jIGNsaWVudC9ndGszL2lidXNpbWNvbnRl eHQuYyB8fAotJWlmICV3aXRoX2Vtb2ppX2hhcmZidXp6Ci0lcGF0Y2gxIC1wMSAteiAuaGIKLSVl bmRpZgotJXBhdGNoMiAtcDEgLXogLnNlZ3YKIAogIyBwcmVwIHRlc3QKIGRpZmYgY2xpZW50L2d0 azIvaWJ1c2ltY29udGV4dC5jIGNsaWVudC9ndGszL2lidXNpbWNvbnRleHQuYwpAQCAtMjk5LDkg KzI4Myw2IEBAIGF1dG9yZWNvbmYgLWYgLWkgLXYKICVpZiAhICV3aXRoX2tkZTUKICAgICAtLWRp c2FibGUtYXBwaW5kaWNhdG9yIFwKICVlbmRpZgotJWlmICV3aXRoX2Vtb2ppX2hhcmZidXp6Ci0g ICAgLS1lbmFibGUtaGFyZmJ1enotZm9yLWVtb2ppIFwKLSVlbmRpZgogICAgIC0tZW5hYmxlLWlu dHJvc3BlY3Rpb24gXAogICAgICV7bmlsfQogCkBAIC00NTIsNiArNDMzLDEwIEBAIGRjb25mIHVw ZGF0ZSB8fCA6CiAle19kYXRhZGlyfS9ndGstZG9jL2h0bWwvKgogCiAlY2hhbmdlbG9nCisqIFdl ZCBKdW4gMjAgMjAxOCBUYWthbyBGdWppd2FyYSA8dGZ1aml3YXJAcmVkaGF0LmNvbT4gLSAxLjUu MTgtNworLSBNb3ZlZCBpbnB1dCBmb2N1cyBvbiBFbW9qaWVyIHRvIGVuZ2luZXMnIHByZWVkaXQK Ky0gUmVtb3ZlZCBpYnVzLXh4LWVtb2ppLWhhcmZidXp6LnBhdGNoIG5vdCB0byBjaGFuZ2Ugc2Vz c2lvbiBlbW9qaSBmb250CisKICogVHVlIEp1biAxOSAyMDE4IE1pcm8gSHJvbsSNb2sgPG1ocm9u Y29rQHJlZGhhdC5jb20+IC0gMS41LjE4LTYKIC0gUmVidWlsdCBmb3IgUHl0aG9uIDMuNwogCg==