ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2luZGV4LnR4dCBiL3J1bnRpbWUvZG9jL2luZGV4LnR4dAppbmRleCAzOGYyNjEyLi5iYmQxNzhkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbmRleC50eHQKKysrIGIvcnVudGltZS9kb2MvaW5kZXgudHh0CkBAIC0xLDQgKzEsNCBAQAotKmluZGV4LnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IERlYyAxMQorKmluZGV4LnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IERlYyAxMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtNzM2LDYgKzczNiw3IEBACiB8Z3V8CQlndXttb3Rpb259CTIgIG1ha2UgTm1vdmUgdGV4dCBsb3dlcmNhc2UKIHxndnwJCWd2CQkgICByZXNlbGVjdCB0aGUgcHJldmlvdXMgVmlzdWFsIGFyZWEKIHxnd3wJCWd3e21vdGlvbn0JMiAgZm9ybWF0IE5tb3ZlIHRleHQgYW5kIGtlZXAgY3Vyc29yCit8Z0B8ICAgICAgICAgICAgZ0B7bW90aW9ufSAgICAgICAgIGNhbGwgJ29wZXJhdG9yZnVuYycKIHxnfnwJCWd+e21vdGlvbn0JMiAgc3dhcCBjYXNlIGZvciBObW92ZSB0ZXh0CiB8ZzxEb3duPnwJZzxEb3duPgkJMSAgc2FtZSBhcyAiZ2oiCiB8ZzxFbmQ+fAlnPEVuZD4JCTEgIHNhbWUgYXMgImckIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvaW5zZXJ0LnR4dCBiL3J1bnRpbWUvZG9jL2luc2VydC50eHQKaW5kZXggOWQ4ZTRlNi4uYTYyNzcxZCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaW5zZXJ0LnR4dAorKysgYi9ydW50aW1lL2RvYy9pbnNlcnQudHh0CkBAIC0xLDQgKzEsNCBAQAotKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IE5vdiAyMgorKmluc2VydC50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IERlYyAxMgogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTA0MCw5ICsxMDQwLDkgQEAKIAogWE1MICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZnQteG1sLW9tbmkqCiAKLVZpbSA3IHByb3ZpZGVzIG1lY2hhbmlzbSB0byBjb250ZXh0IGF3YXJlIGNvbXBsZXRpb24gb2YgWE1MIGZpbGVzLiBJdCBkZXBlbmRzCi1vbiBzcGVjaWFsIHx4bWwtZGF0YS1maWxlfCBhbmQgdHdvIGNvbW1hbmRzOiB8OlhNTG5zfCBhbmQgfDpYTUxlbnR8LiBGZWF0dXJlcwotYXJlOgorVmltIDcgcHJvdmlkZXMgbWVjaGFuaXNtIHRvIGNvbnRleHQgYXdhcmUgY29tcGxldGlvbiBvZiBYTUwgZmlsZXMuICBJdCBkZXBlbmRzCitvbiBzcGVjaWFsIHx4bWwtb21uaS1kYXRhZmlsZXwgYW5kIHR3byBjb21tYW5kczogfDpYTUxuc3wgYW5kIHw6WE1MZW50fC4KK0ZlYXR1cmVzIGFyZToKIAogLSBhZnRlciAiPCIgY29tcGxldGUgdGFnIG5hbWUgZGVwZW5kaW5nIG9uIGNvbnRleHQgKG5vIGRpdiBzdWdnZXN0CiAgIGluc2lkZSBvZiBhbiBhIHRhZykKQEAgLTEwNTAsNyArMTA1MCw3IEBACiAgIGEgdGFnKQogLSB3aGVuIGF0dHJpYnV0ZSBoYXMgbGltaXRlZCBudW1iZXIgb2YgcG9zc2libGUgdmFsdWVzIGhlbHAgdG8gY29tcGxldGUKICAgdGhlbQotLSBjb21wbGV0ZSBuYW1lcyBvZiBlbnRpdGllcyAoZGVmaW5lZCBpbiB8eG1sLWRhdGEtZmlsZXwgYW5kIGluIGN1cnJlbnQgZmlsZQorLSBjb21wbGV0ZSBuYW1lcyBvZiBlbnRpdGllcyAoZGVmaW5lZCBpbiB8eG1sLW9tbmktZGF0YWZpbGV8IGFuZCBpbiBjdXJyZW50IGZpbGUKICAgd2l0aCAiPCFFTlRJVFkiIGRlY2xhcmF0aW9ucwogLSB3aGVuIHVzZWQgYWZ0ZXIgIjwvIiBDVFJMLVggQ1RSTC1PIHdpbGwgY2xvc2UgdGhlIGxhc3Qgb3BlbmVkIHRhZwogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9tYXAudHh0IGIvcnVudGltZS9kb2MvbWFwLnR4dAppbmRleCBlNmVjNDdhLi5kNzUzNDNhIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9tYXAudHh0CisrKyBiL3J1bnRpbWUvZG9jL21hcC50eHQKQEAgLTEsNCArMSw0IEBACi0qbWFwLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgRGVjIDExCisqbWFwLnR4dCogICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgRGVjIDEyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xMCw2ICsxMCwxNyBAQAogbWFudWFsLgogCiAxLiBLZXkgbWFwcGluZwkJCXxrZXktbWFwcGluZ3wKKyAgIDEuMSBNQVAgQ09NTUFORFMJCQl8Om1hcC1jb21tYW5kc3wKKyAgIDEuMiBTcGVjaWFsIGFyZ3VtZW50cwkJfDptYXAtYXJndW1lbnRzfAorICAgMS4zIE1hcHBpbmcgYW5kIG1vZGVzCQl8Om1hcC1tb2Rlc3wKKyAgIDEuNCBMaXN0aW5nIG1hcHBpbmdzCQkJfG1hcC1saXN0aW5nfAorICAgMS41IE1hcHBpbmcgc3BlY2lhbCBrZXlzCQl8Om1hcC1zcGVjaWFsLWtleXN8CisgICAxLjYgU3BlY2lhbCBjaGFyYWN0ZXJzCQl8Om1hcC1zcGVjaWFsLWNoYXJzfAorICAgMS43IFdoYXQga2V5cyB0byBtYXAJCQl8bWFwLXdoaWNoLWtleXN8CisgICAxLjggRXhhbXBsZXMJCQkJfG1hcC1leGFtcGxlc3wKKyAgIDEuOSBVc2luZyBtYXBwaW5ncwkJCXxtYXAtdHlwaW5nfAorICAgMS4xMCBNYXBwaW5nIGFsdC1rZXlzCQl8Om1hcC1hbHQta2V5c3wKKyAgIDEuMTEgTWFwcGluZyBhbiBvcGVyYXRvcgkJfDptYXAtb3BlcmF0b3J8CiAyLiBBYmJyZXZpYXRpb25zCQl8YWJicmV2aWF0aW9uc3wKIDMuIExvY2FsIG1hcHBpbmdzIGFuZCBmdW5jdGlvbnMJfHNjcmlwdC1sb2NhbHwKIDQuIFVzZXItZGVmaW5lZCBjb21tYW5kcwl8dXNlci1jb21tYW5kc3wKQEAgLTI0LDYgKzM1LDkgQEAKIAogVGhpcyBhcHBlbmRzIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgYWZ0ZXIgdGhlIGN1cnNvciAoaW4gPD4gbm90YXRpb24gfDw+fCkuCiAKKworMS4xIE1BUCBDT01NQU5EUwkJCQkJKjptYXAtY29tbWFuZHMqCisKIFRoZXJlIGFyZSBjb21tYW5kcyB0byBlbnRlciBuZXcgbWFwcGluZ3MsIHJlbW92ZSBtYXBwaW5ncyBhbmQgbGlzdCBtYXBwaW5ncy4KIFNlZSB8bWFwLW92ZXJ2aWV3fCBmb3IgdGhlIHZhcmlvdXMgZm9ybXMgb2YgIm1hcCIgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMgd2l0aAogbW9kZXMuCkBAIC0xMTYsNiArMTMwLDIxIEBACiB0cmFuc2xhdGUgb25lIGtleSBpbnRvIGFub3RoZXIsIGV0Yy4gIFNlZSB8Om1rZXhyY3wgZm9yIGhvdyB0byBzYXZlIGFuZAogcmVzdG9yZSB0aGUgY3VycmVudCBtYXBwaW5ncy4KIAorCQkJCQkJCSptYXAtYW1iaWd1b3VzKgorV2hlbiB0d28gbWFwcGluZ3Mgc3RhcnQgd2l0aCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLCB0aGV5IGFyZQorYW1iaWd1b3VzLiAgRXhhbXBsZTogPgorCTppbWFwIGFhIGZvbworCTppbWFwIGFhYSBiYXIKK1doZW4gVmltIGhhcyByZWFkICJhYSIsIGl0IHdpbGwgbmVlZCB0byBnZXQgYW5vdGhlciBjaGFyYWN0ZXIgdG8gYmUgYWJsZSB0bworZGVjaWRlIGlmICJhYSIgb3IgImFhYSIgc2hvdWxkIGJlIG1hcHBlZC4gIFRoaXMgbWVhbnMgdGhhdCBhZnRlciB0eXBpbmcgImFhIgordGhhdCBtYXBwaW5nIHdvbid0IGdldCBleHBhbmRlZCB5ZXQsIFZpbSBpcyB3YWl0aW5nIGZvciBhbm90aGVyIGNoYXJhY3Rlci4KK0lmIHlvdSB0eXBlIGEgc3BhY2UsIHRoZW4gImZvbyIgd2lsbCBnZXQgaW5zZXJ0ZWQsIHBsdXMgdGhlIHNwYWNlLiAgSWYgeW91Cit0eXBlICJhIiwgdGhlbiAiYmFyIiB3aWxsIGdldCBpbnNlcnRlZC4KK3tWaSBkb2VzIG5vdCBhbGxvdyBhbWJpZ3VvdXMgbWFwcGluZ3N9CisKKworMS4yIFNQRUNJQUwgQVJHVU1FTlRTCQkJCQkqOm1hcC1hcmd1bWVudHMqCisKIAkJCQkqOm1hcC1sb2NhbCogKjptYXAtPGJ1ZmZlcj4qICpFMjI0KiAqRTIyNSoKIElmIHRoZSBmaXJzdCBhcmd1bWVudCB0byBvbmUgb2YgdGhlc2UgY29tbWFuZHMgaXMgIjxidWZmZXI+IiBpdCB3aWxsIGFwcGx5IHRvCiBtYXBwaW5ncyBsb2NhbGx5IHRvIHRoZSBjdXJyZW50IGJ1ZmZlciBvbmx5LiAgRXhhbXBsZTogPgpAQCAtMTY3LDcgKzE5Niw3IEBACiBUaGV5IG11c3QgYXBwZWFyIHJpZ2h0IGFmdGVyIHRoZSBjb21tYW5kLCBiZWZvcmUgYW55IG90aGVyIGFyZ3VtZW50cy4KIAogCi1NQVBQSU5HIEFORCBNT0RFUworMS4zIE1BUFBJTkcgQU5EIE1PREVTCQkJCQkqOm1hcC1tb2RlcyoKIAogVGhlcmUgYXJlIGZpdmUgc2V0cyBvZiBtYXBwaW5ncwogLSBGb3IgTm9ybWFsIG1vZGU6IFdoZW4gdHlwaW5nIGNvbW1hbmRzLgpAQCAtMjM2LDE5ICsyNjUsOSBAQAogYXJlIG9ubHkgdXNlZCBmb3IgdHlwZWQgY2hhcmFjdGVycy4gIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSBsYW5ndWFnZSBtYXBwaW5nCiB3YXMgYWxyZWFkeSBkb25lIHdoZW4gdHlwaW5nIHRoZSBtYXBwaW5nLgogCi0JCQkJCQkJKm1hcC1tdWx0aWJ5dGUqCi1JdCBpcyBwb3NzaWJsZSB0byBtYXAgbXVsdGlieXRlIGNoYXJhY3RlcnMsIGJ1dCBvbmx5IHRoZSB3aG9sZSBjaGFyYWN0ZXIuICBZb3UKLWNhbm5vdCBtYXAgdGhlIGZpcnN0IGJ5dGUgb25seS4gIFRoaXMgd2FzIGRvbmUgdG8gcHJldmVudCBwcm9ibGVtcyBpbiB0aGlzCi1zY2VuYXJpbzogPgotCTpzZXQgZW5jb2Rpbmc9bGF0aW4xCi0JOmltYXAgPE0tQz4gZm9vCi0JOnNldCBlbmNvZGluZz11dGYtOAotVGhlIG1hcHBpbmcgZm9yIDxNLUM+IGlzIGRlZmluZWQgd2l0aCB0aGUgbGF0aW4xIGVuY29kaW5nLCByZXN1bHRpbmcgaW4gYSAweGMzCi1ieXRlLiAgSWYgeW91IHR5cGUgdGhlIGNoYXJhY3RlciDhICgweGVhIDxNLWE+KSBpbiBVVEYtOCBlbmNvZGluZyB0aGlzIGlzIHRoZQotdHdvIGJ5dGVzIDB4YzMgMHhhMS4gIFlvdSBkb24ndCB3YW50IHRoZSAweGMzIGJ5dGUgdG8gYmUgbWFwcGVkIHRoZW4sCi1vdGhlcndpc2UgaXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byB0eXBlIHRoZSDhIGNoYXJhY3Rlci4KIAotCQkJCQkJCSptYXAtbGlzdGluZyoKKzEuNCBMSVNUSU5HIE1BUFBJTkdTCQkJCQkqbWFwLWxpc3RpbmcqCisKIFdoZW4gbGlzdGluZyBtYXBwaW5ncyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgZmlyc3QgdHdvIGNvbHVtbnMgYXJlOgogCiAgICAgICBDSEFSCU1PREUJfgpAQCAtMjgzLDYgKzMwMiw0OCBAQAogCiBTZWUgfDp2ZXJib3NlLWNtZHwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKworMS41IE1BUFBJTkcgU1BFQ0lBTCBLRVlTCQkJCSo6bWFwLXNwZWNpYWwta2V5cyoKKworVGhlcmUgYXJlIHRocmVlIHdheXMgdG8gbWFwIGEgc3BlY2lhbCBrZXk6CisxLiBUaGUgVmktY29tcGF0aWJsZSBtZXRob2Q6IE1hcCB0aGUga2V5IGNvZGUuICBPZnRlbiB0aGlzIGlzIGEgc2VxdWVuY2UgdGhhdAorICAgc3RhcnRzIHdpdGggPEVzYz4uICBUbyBlbnRlciBhIG1hcHBpbmcgbGlrZSB0aGlzIHlvdSB0eXBlICI6bWFwICIgYW5kIHRoZW4KKyAgIHlvdSBoYXZlIHRvIHR5cGUgQ1RSTC1WIGJlZm9yZSBoaXR0aW5nIHRoZSBmdW5jdGlvbiBrZXkuICBOb3RlIHRoYXQgd2hlbgorICAgdGhlIGtleSBjb2RlIGZvciB0aGUga2V5IGlzIGluIHRoZSB0ZXJtY2FwICh0aGUgdF8gb3B0aW9ucyksIGl0IHdpbGwKKyAgIGF1dG9tYXRpY2FsbHkgYmUgdHJhbnNsYXRlZCBpbnRvIHRoZSBpbnRlcm5hbCBjb2RlIGFuZCBiZWNvbWUgdGhlIHNlY29uZAorICAgd2F5IG9mIG1hcHBpbmcgKHVubGVzcyB0aGUgJ2snIGZsYWcgaXMgaW5jbHVkZWQgaW4gJ2Nwb3B0aW9ucycpLgorMi4gVGhlIHNlY29uZCBtZXRob2QgaXMgdG8gdXNlIHRoZSBpbnRlcm5hbCBjb2RlIGZvciB0aGUgZnVuY3Rpb24ga2V5LiAgVG8KKyAgIGVudGVyIHN1Y2ggYSBtYXBwaW5nIHR5cGUgQ1RSTC1LIGFuZCB0aGVuIGhpdCB0aGUgZnVuY3Rpb24ga2V5LCBvciB1c2UKKyAgIHRoZSBmb3JtICIjMSIsICIjMiIsIC4uICIjOSIsICIjMCIsICI8VXA+IiwgIjxTLURvd24+IiwgIjxTLUY3PiIsIGV0Yy4KKyAgIChzZWUgdGFibGUgb2Yga2V5cyB8a2V5LW5vdGF0aW9ufCwgYWxsIGtleXMgZnJvbSA8VXA+IGNhbiBiZSB1c2VkKS4gIFRoZQorICAgZmlyc3QgdGVuIGZ1bmN0aW9uIGtleXMgY2FuIGJlIGRlZmluZWQgaW4gdHdvIHdheXM6IEp1c3QgdGhlIG51bWJlciwgbGlrZQorICAgIiMyIiwgYW5kIHdpdGggIjxGPiIsIGxpa2UgIjxGMj4iLiAgQm90aCBzdGFuZCBmb3IgZnVuY3Rpb24ga2V5IDIuICAiIzAiCisgICByZWZlcnMgdG8gZnVuY3Rpb24ga2V5IDEwLCBkZWZpbmVkIHdpdGggb3B0aW9uICd0X2YxMCcsIHdoaWNoIG1heSBiZQorICAgZnVuY3Rpb24ga2V5IHplcm8gb24gc29tZSBrZXlib2FyZHMuICBUaGUgPD4gZm9ybSBjYW5ub3QgYmUgdXNlZCB3aGVuCisgICAnY3BvcHRpb25zJyBpbmNsdWRlcyB0aGUgJzwnIGZsYWcuCiszLiBVc2UgdGhlIHRlcm1jYXAgZW50cnksIHdpdGggdGhlIGZvcm0gPHRfeHg+LCB3aGVyZSAieHgiIGlzIHRoZSBuYW1lIG9mIHRoZQorICAgdGVybWNhcCBlbnRyeS4gIEFueSBzdHJpbmcgZW50cnkgY2FuIGJlIHVzZWQuICBGb3IgZXhhbXBsZTogPgorICAgICA6bWFwIDx0X0YzPiBHCis8ICBNYXBzIGZ1bmN0aW9uIGtleSAxMyB0byAiRyIuICBUaGlzIGRvZXMgbm90IHdvcmsgaWYgJ2Nwb3B0aW9ucycgaW5jbHVkZXMKKyAgIHRoZSAnPCcgZmxhZy4KKworVGhlIGFkdmFudGFnZSBvZiB0aGUgc2Vjb25kIGFuZCB0aGlyZCBtZXRob2QgaXMgdGhhdCB0aGUgbWFwcGluZyB3aWxsIHdvcmsgb24KK2RpZmZlcmVudCB0ZXJtaW5hbHMgd2l0aG91dCBtb2RpZmljYXRpb24gKHRoZSBmdW5jdGlvbiBrZXkgd2lsbCBiZQordHJhbnNsYXRlZCBpbnRvIHRoZSBzYW1lIGludGVybmFsIGNvZGUgb3IgdGhlIGFjdHVhbCBrZXkgY29kZSwgbm8gbWF0dGVyIHdoYXQKK3Rlcm1pbmFsIHlvdSBhcmUgdXNpbmcuICBUaGUgdGVybWNhcCBtdXN0IGJlIGNvcnJlY3QgZm9yIHRoaXMgdG8gd29yaywgYW5kIHlvdQorbXVzdCB1c2UgdGhlIHNhbWUgbWFwcGluZ3MpLgorCitERVRBSUw6IFZpbSBmaXJzdCBjaGVja3MgaWYgYSBzZXF1ZW5jZSBmcm9tIHRoZSBrZXlib2FyZCBpcyBtYXBwZWQuICBJZiBpdAoraXNuJ3QgdGhlIHRlcm1pbmFsIGtleSBjb2RlcyBhcmUgdHJpZWQgKHNlZSB8dGVybWluYWwtb3B0aW9uc3wpLiAgSWYgYQordGVybWluYWwgY29kZSBpcyBmb3VuZCBpdCBpcyByZXBsYWNlZCB3aXRoIHRoZSBpbnRlcm5hbCBjb2RlLiAgVGhlbiB0aGUgY2hlY2sKK2ZvciBhIG1hcHBpbmcgaXMgZG9uZSBhZ2FpbiAoc28geW91IGNhbiBtYXAgYW4gaW50ZXJuYWwgY29kZSB0byBzb21ldGhpbmcKK2Vsc2UpLiAgV2hhdCBpcyB3cml0dGVuIGludG8gdGhlIHNjcmlwdCBmaWxlIGRlcGVuZHMgb24gd2hhdCBpcyByZWNvZ25pemVkLgorSWYgdGhlIHRlcm1pbmFsIGtleSBjb2RlIHdhcyByZWNvZ25pemVkIGFzIGEgbWFwcGluZyB0aGUga2V5IGNvZGUgaXRzZWxmIGlzCit3cml0dGVuIHRvIHRoZSBzY3JpcHQgZmlsZS4gIElmIGl0IHdhcyByZWNvZ25pemVkIGFzIGEgdGVybWluYWwgY29kZSB0aGUKK2ludGVybmFsIGNvZGUgaXMgd3JpdHRlbiB0byB0aGUgc2NyaXB0IGZpbGUuCisKKworMS42IFNQRUNJQUwgQ0hBUkFDVEVSUwkJCQkJKjptYXAtc3BlY2lhbC1jaGFycyoKIAkJCQkJCQkqbWFwX2JhY2tzbGFzaCoKIE5vdGUgdGhhdCBvbmx5IENUUkwtViBpcyBtZW50aW9uZWQgaGVyZSBhcyBhIHNwZWNpYWwgY2hhcmFjdGVyIGZvciBtYXBwaW5ncwogYW5kIGFiYnJldmlhdGlvbnMuICBXaGVuICdjcG9wdGlvbnMnIGRvZXMgbm90IGNvbnRhaW4gJ0InLCBhIGJhY2tzbGFzaCBjYW4KQEAgLTI5NCwxOCArMzU1LDYgQEAKIHNlcXVlbmNlICI8QnNsYXNoPiIgY2FuIGJlIHVzZWQuICBUaGlzIGF2b2lkcyB0aGUgbmVlZCB0byBkb3VibGUgYmFja3NsYXNoZXMKIHdoZW4gdXNpbmcgbmVzdGVkIG1hcHBpbmdzLgogCi0JCQkJCQkJKm1hcC1hbWJpZ3VvdXMqCi1XaGVuIHR3byBtYXBwaW5ncyBzdGFydCB3aXRoIHRoZSBzYW1lIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMsIHRoZXkgYXJlCi1hbWJpZ3VvdXMuICBFeGFtcGxlOiA+Ci0JOmltYXAgYWEgZm9vCi0JOmltYXAgYWFhIGJhcgotV2hlbiBWaW0gaGFzIHJlYWQgImFhIiwgaXQgd2lsbCBuZWVkIHRvIGdldCBhbm90aGVyIGNoYXJhY3RlciB0byBiZSBhYmxlIHRvCi1kZWNpZGUgaWYgImFhIiBvciAiYWFhIiBzaG91bGQgYmUgbWFwcGVkLiAgVGhpcyBtZWFucyB0aGF0IGFmdGVyIHR5cGluZyAiYWEiCi10aGF0IG1hcHBpbmcgd29uJ3QgZ2V0IGV4cGFuZGVkIHlldCwgVmltIGlzIHdhaXRpbmcgZm9yIGFub3RoZXIgY2hhcmFjdGVyLgotSWYgeW91IHR5cGUgYSBzcGFjZSwgdGhlbiAiZm9vIiB3aWxsIGdldCBpbnNlcnRlZCwgcGx1cyB0aGUgc3BhY2UuICBJZiB5b3UKLXR5cGUgImEiLCB0aGVuICJiYXIiIHdpbGwgZ2V0IGluc2VydGVkLgote1ZpIGRvZXMgbm90IGFsbG93IGFtYmlndW91cyBtYXBwaW5nc30KLQogCQkJCQkJCSptYXBfQ1RSTC1DKgogVXNpbmcgQ1RSTC1DIGluIHRoZSB7bGhzfSBpcyBwb3NzaWJsZSwgYnV0IGl0IHdpbGwgb25seSB3b3JrIHdoZW4gVmltIGlzCiB3YWl0aW5nIGZvciBhIGtleSwgbm90IHdoZW4gVmltIGlzIGJ1c3kgd2l0aCBzb21ldGhpbmcuICBXaGVuIFZpbSBpcyBidXN5CkBAIC0zMzEsNiArMzgwLDE4IEBACiAJOm1hcCAgPEY4PiAgPE5vcD4KIAk6bWFwISA8Rjg+ICA8Tm9wPgogPAorCQkJCQkJCSptYXAtbXVsdGlieXRlKgorSXQgaXMgcG9zc2libGUgdG8gbWFwIG11bHRpYnl0ZSBjaGFyYWN0ZXJzLCBidXQgb25seSB0aGUgd2hvbGUgY2hhcmFjdGVyLiAgWW91CitjYW5ub3QgbWFwIHRoZSBmaXJzdCBieXRlIG9ubHkuICBUaGlzIHdhcyBkb25lIHRvIHByZXZlbnQgcHJvYmxlbXMgaW4gdGhpcworc2NlbmFyaW86ID4KKwk6c2V0IGVuY29kaW5nPWxhdGluMQorCTppbWFwIDxNLUM+IGZvbworCTpzZXQgZW5jb2Rpbmc9dXRmLTgKK1RoZSBtYXBwaW5nIGZvciA8TS1DPiBpcyBkZWZpbmVkIHdpdGggdGhlIGxhdGluMSBlbmNvZGluZywgcmVzdWx0aW5nIGluIGEgMHhjMworYnl0ZS4gIElmIHlvdSB0eXBlIHRoZSBjaGFyYWN0ZXIg4SAoMHhlYSA8TS1hPikgaW4gVVRGLTggZW5jb2RpbmcgdGhpcyBpcyB0aGUKK3R3byBieXRlcyAweGMzIDB4YTEuICBZb3UgZG9uJ3Qgd2FudCB0aGUgMHhjMyBieXRlIHRvIGJlIG1hcHBlZCB0aGVuLAorb3RoZXJ3aXNlIGl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gdHlwZSB0aGUg4SBjaGFyYWN0ZXIuCisKIAkJCQkJKjxMZWFkZXI+KiAqbWFwbGVhZGVyKgogVG8gZGVmaW5lIGEgbWFwcGluZyB3aGljaCB1c2VzIHRoZSAibWFwbGVhZGVyIiB2YXJpYWJsZSwgdGhlIHNwZWNpYWwgc3RyaW5nCiAiPExlYWRlcj4iIGNhbiBiZSB1c2VkLiAgSXQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mICJtYXBsZWFkZXIiLgpAQCAtNDE4LDcgKzQ3OSw5IEBACiByZWdpc3RlcnMgYW5kIG1hcmtzLCBldmVuIHdoZW4gdGhlIGNvbW1hbmQgd2l0aCB0aGUgc2FtZSBuYW1lIGhhcyBiZWVuCiBtYXBwZWQuCiAKLQkJCQkJCQkqbWFwLXdoaWNoLWtleXMqCisKKzEuNyBXSEFUIEtFWVMgVE8gTUFQCQkJCQkqbWFwLXdoaWNoLWtleXMqCisKIElmIHlvdSBhcmUgZ29pbmcgdG8gbWFwIHNvbWV0aGluZywgeW91IHdpbGwgbmVlZCB0byBjaG9vc2Ugd2hpY2gga2V5KHMpIHRvIHVzZQogZm9yIHRoZSB7bGhzfS4gIFlvdSB3aWxsIGhhdmUgdG8gYXZvaWQga2V5cyB0aGF0IGFyZSB1c2VkIGZvciBWaW0gY29tbWFuZHMsCiBvdGhlcndpc2UgeW91IHdvdWxkIG5vdCBiZSBhYmxlIHRvIHVzZSB0aG9zZSBjb21tYW5kcyBhbnltb3JlLiAgSGVyZSBhcmUgYSBmZXcKQEAgLTQzNiw3ICs0OTksOSBAQAogYSBrZXkgaXMgdXNlZCBmb3Igc29tZSBjb21tYW5kLiAgKHtrZXl9IGlzIHRoZSBzcGVjaWZpYyBrZXkgeW91IHdhbnQgdG8gZmluZAogb3V0IGFib3V0LCBeRCBpcyBDVFJMLUQpLgogCi0JCQkJCQkJKm1hcC1leGFtcGxlcyoKKworMS44IEVYQU1QTEVTCQkJCQkJKm1hcC1leGFtcGxlcyoKKwogQSBmZXcgZXhhbXBsZXMgKGdpdmVuIGFzIHlvdSB0eXBlIHRoZW0sIGZvciAiPENSPiIgeW91IHR5cGUgZm91ciBjaGFyYWN0ZXJzOwogdGhlICc8JyBmbGFnIG11c3Qgbm90IGJlIHByZXNlbnQgaW4gJ2Nwb3B0aW9ucycgZm9yIHRoaXMgdG8gd29yaykuID4KIApAQCAtNDQ1LDcgKzUxMCw5IEBACiAgICA6bWFwIF94ICAgIGQvRU5EL2U8Q1I+CiAgICA6bWFwISBxcSAgIHF1YWRyaWxsaW9uIHF1ZXN0aW9ucwogPAotCQkJCQkJCSptYXAtdHlwaW5nKgorCisxLjkgVVNJTkcgTUFQUElOR1MJCQkJCSptYXAtdHlwaW5nKgorCiBWaW0gd2lsbCBjb21wYXJlIHdoYXQgeW91IHR5cGUgd2l0aCB0aGUgc3RhcnQgb2YgYSBtYXBwZWQgc2VxdWVuY2UuICBJZiB0aGVyZQogaXMgYW4gaW5jb21wbGV0ZSBtYXRjaCwgaXQgd2lsbCBnZXQgbW9yZSBjaGFyYWN0ZXJzIHVudGlsIHRoZXJlIGVpdGhlciBpcyBhCiBjb21wbGV0ZSBtYXRjaCBvciB1bnRpbCB0aGVyZSBpcyBubyBtYXRjaCBhdCBhbGwuICBFeGFtcGxlOiBJZiB5b3UgbWFwISAicXEiLApAQCAtNTIxLDQ2ICs1ODgsOCBAQAogc2VxdWVuY2UgKGhhdmluZyB0d28gdW5kbyBjb21tYW5kcyBpbiBhIG1hcHBlZCBzZXF1ZW5jZSBkaWQgbm90IG1ha2Ugc2Vuc2UKIGluIHRoZSBvcmlnaW5hbCBWaSwgeW91IHdvdWxkIGdldCBiYWNrIHRoZSB0ZXh0IGJlZm9yZSB0aGUgZmlyc3QgdW5kbykuCiAKLQkJCQkJCQkqOm1hcC1zcGVjaWFsLWtleXMqCi1UaGVyZSBhcmUgdGhyZWUgd2F5cyB0byBtYXAgYSBzcGVjaWFsIGtleToKLTEuIFRoZSBWaS1jb21wYXRpYmxlIG1ldGhvZDogTWFwIHRoZSBrZXkgY29kZS4gIE9mdGVuIHRoaXMgaXMgYSBzZXF1ZW5jZSB0aGF0Ci0gICBzdGFydHMgd2l0aCA8RXNjPi4gIFRvIGVudGVyIGEgbWFwcGluZyBsaWtlIHRoaXMgeW91IHR5cGUgIjptYXAgIiBhbmQgdGhlbgotICAgeW91IGhhdmUgdG8gdHlwZSBDVFJMLVYgYmVmb3JlIGhpdHRpbmcgdGhlIGZ1bmN0aW9uIGtleS4gIE5vdGUgdGhhdCB3aGVuCi0gICB0aGUga2V5IGNvZGUgZm9yIHRoZSBrZXkgaXMgaW4gdGhlIHRlcm1jYXAgKHRoZSB0XyBvcHRpb25zKSwgaXQgd2lsbAotICAgYXV0b21hdGljYWxseSBiZSB0cmFuc2xhdGVkIGludG8gdGhlIGludGVybmFsIGNvZGUgYW5kIGJlY29tZSB0aGUgc2Vjb25kCi0gICB3YXkgb2YgbWFwcGluZyAodW5sZXNzIHRoZSAnaycgZmxhZyBpcyBpbmNsdWRlZCBpbiAnY3BvcHRpb25zJykuCi0yLiBUaGUgc2Vjb25kIG1ldGhvZCBpcyB0byB1c2UgdGhlIGludGVybmFsIGNvZGUgZm9yIHRoZSBmdW5jdGlvbiBrZXkuICBUbwotICAgZW50ZXIgc3VjaCBhIG1hcHBpbmcgdHlwZSBDVFJMLUsgYW5kIHRoZW4gaGl0IHRoZSBmdW5jdGlvbiBrZXksIG9yIHVzZQotICAgdGhlIGZvcm0gIiMxIiwgIiMyIiwgLi4gIiM5IiwgIiMwIiwgIjxVcD4iLCAiPFMtRG93bj4iLCAiPFMtRjc+IiwgZXRjLgotICAgKHNlZSB0YWJsZSBvZiBrZXlzIHxrZXktbm90YXRpb258LCBhbGwga2V5cyBmcm9tIDxVcD4gY2FuIGJlIHVzZWQpLiAgVGhlCi0gICBmaXJzdCB0ZW4gZnVuY3Rpb24ga2V5cyBjYW4gYmUgZGVmaW5lZCBpbiB0d28gd2F5czogSnVzdCB0aGUgbnVtYmVyLCBsaWtlCi0gICAiIzIiLCBhbmQgd2l0aCAiPEY+IiwgbGlrZSAiPEYyPiIuICBCb3RoIHN0YW5kIGZvciBmdW5jdGlvbiBrZXkgMi4gICIjMCIKLSAgIHJlZmVycyB0byBmdW5jdGlvbiBrZXkgMTAsIGRlZmluZWQgd2l0aCBvcHRpb24gJ3RfZjEwJywgd2hpY2ggbWF5IGJlCi0gICBmdW5jdGlvbiBrZXkgemVybyBvbiBzb21lIGtleWJvYXJkcy4gIFRoZSA8PiBmb3JtIGNhbm5vdCBiZSB1c2VkIHdoZW4KLSAgICdjcG9wdGlvbnMnIGluY2x1ZGVzIHRoZSAnPCcgZmxhZy4KLTMuIFVzZSB0aGUgdGVybWNhcCBlbnRyeSwgd2l0aCB0aGUgZm9ybSA8dF94eD4sIHdoZXJlICJ4eCIgaXMgdGhlIG5hbWUgb2YgdGhlCi0gICB0ZXJtY2FwIGVudHJ5LiAgQW55IHN0cmluZyBlbnRyeSBjYW4gYmUgdXNlZC4gIEZvciBleGFtcGxlOiA+Ci0gICAgIDptYXAgPHRfRjM+IEcKLTwgIE1hcHMgZnVuY3Rpb24ga2V5IDEzIHRvICJHIi4gIFRoaXMgZG9lcyBub3Qgd29yayBpZiAnY3BvcHRpb25zJyBpbmNsdWRlcwotICAgdGhlICc8JyBmbGFnLgogCi1UaGUgYWR2YW50YWdlIG9mIHRoZSBzZWNvbmQgYW5kIHRoaXJkIG1ldGhvZCBpcyB0aGF0IHRoZSBtYXBwaW5nIHdpbGwgd29yayBvbgotZGlmZmVyZW50IHRlcm1pbmFscyB3aXRob3V0IG1vZGlmaWNhdGlvbiAodGhlIGZ1bmN0aW9uIGtleSB3aWxsIGJlCi10cmFuc2xhdGVkIGludG8gdGhlIHNhbWUgaW50ZXJuYWwgY29kZSBvciB0aGUgYWN0dWFsIGtleSBjb2RlLCBubyBtYXR0ZXIgd2hhdAotdGVybWluYWwgeW91IGFyZSB1c2luZy4gIFRoZSB0ZXJtY2FwIG11c3QgYmUgY29ycmVjdCBmb3IgdGhpcyB0byB3b3JrLCBhbmQgeW91Ci1tdXN0IHVzZSB0aGUgc2FtZSBtYXBwaW5ncykuCi0KLURFVEFJTDogVmltIGZpcnN0IGNoZWNrcyBpZiBhIHNlcXVlbmNlIGZyb20gdGhlIGtleWJvYXJkIGlzIG1hcHBlZC4gIElmIGl0Ci1pc24ndCB0aGUgdGVybWluYWwga2V5IGNvZGVzIGFyZSB0cmllZCAoc2VlIHx0ZXJtaW5hbC1vcHRpb25zfCkuICBJZiBhCi10ZXJtaW5hbCBjb2RlIGlzIGZvdW5kIGl0IGlzIHJlcGxhY2VkIHdpdGggdGhlIGludGVybmFsIGNvZGUuICBUaGVuIHRoZSBjaGVjawotZm9yIGEgbWFwcGluZyBpcyBkb25lIGFnYWluIChzbyB5b3UgY2FuIG1hcCBhbiBpbnRlcm5hbCBjb2RlIHRvIHNvbWV0aGluZwotZWxzZSkuICBXaGF0IGlzIHdyaXR0ZW4gaW50byB0aGUgc2NyaXB0IGZpbGUgZGVwZW5kcyBvbiB3aGF0IGlzIHJlY29nbml6ZWQuCi1JZiB0aGUgdGVybWluYWwga2V5IGNvZGUgd2FzIHJlY29nbml6ZWQgYXMgYSBtYXBwaW5nIHRoZSBrZXkgY29kZSBpdHNlbGYgaXMKLXdyaXR0ZW4gdG8gdGhlIHNjcmlwdCBmaWxlLiAgSWYgaXQgd2FzIHJlY29nbml6ZWQgYXMgYSB0ZXJtaW5hbCBjb2RlIHRoZQotaW50ZXJuYWwgY29kZSBpcyB3cml0dGVuIHRvIHRoZSBzY3JpcHQgZmlsZS4KLQotCi1NYXBwaW5nIEFMVC1rZXlzCQkJCQkqOm1hcC1hbHQta2V5cyoKKzEuMTAgTUFQUElORyBBTFQtS0VZUwkJCQkJKjptYXAtYWx0LWtleXMqCiAKIEluIHRoZSBHVUkgVmltIGhhbmRsZXMgdGhlIEFsdCBrZXkgaXRzZWxmLCB0aHVzIG1hcHBpbmcga2V5cyB3aXRoIEFMVCBzaG91bGQKIGFsd2F5cyB3b3JrLiAgQnV0IGluIGEgdGVybWluYWwgVmltIGdldHMgYSBzZXF1ZW5jZSBvZiBieXRlcyBhbmQgaGFzIHRvIGZpZ3VyZQpAQCAtNjAxLDYgKzYzMCw2MiBAQAogb24gdGhlIHRlcm1pbmFsOyB0aGF0J3MgYSBnb29kIGxhc3QgcmVzb3VyY2UgaW4gY2FzZSB5b3Ugd2FudCB0byBzZW5kIEVTQyB3aGVuCiB1c2luZyBvdGhlciBhcHBsaWNhdGlvbnMgYnV0IG5vdCB3aGVuIGluc2lkZSBWSU0uCiAKKworMS4xMSBNQVBQSU5HIEFOIE9QRVJBVE9SCQkJCSo6bWFwLW9wZXJhdG9yKgorCitBbiBvcGVyYXRvciBpcyB1c2VkIGJlZm9yZSBhIHttb3Rpb259IGNvbW1hbmQuICBUbyBkZWZpbmUgeW91ciBvd24gb3BlcmF0b3IKK3lvdSBtdXN0IGNyZWF0ZSBtYXBwaW5nIHRoYXQgZmlyc3Qgc2V0cyB0aGUgJ29wZXJhdG9yZnVuYycgb3B0aW9uIGFuZCB0aGVuCitpbnZva2UgdGhlIHxnQHwgb3BlcmF0b3IuICBBZnRlciB0aGUgdXNlciB0eXBlcyB0aGUge21vdGlvbn0gY29tbWFuZCB0aGUKK3NwZWNpZmllZCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZC4KKworCQkJCQkJCSpnQCoKK2dAe21vdGlvbn0JCUNhbGwgdGhlIGZ1bmN0aW9uIHNldCBieSB0aGUgJ29wZXJhdG9yZnVuYycgb3B0aW9uLgorCQkJVGhlICdbIG1hcmsgaXMgcG9zaXRpb25lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQKKwkJCW1vdmVkIG92ZXIgYnkge21vdGlvbn0sIHRoZSAnXSBtYXJrIG9uIHRoZSBsYXN0CisJCQljaGFyYWN0ZXIgb2YgdGhlIHRleHQuCisJCQlUaGUgZnVuY3Rpb24gaXMgY2FsbGVkIHdpdGggb25lIFN0cmluZyBhcmd1bWVudDoKKwkJCSAgICAibGluZSIJe21vdGlvbn0gd2FzIHxsaW5ld2lzZXwKKwkJCSAgICAiY2hhciIJe21vdGlvbn0gd2FzIHxjaGFyYWN0ZXJ3aXNlfAorCQkJICAgICJibG9jayIJe21vdGlvbn0gd2FzIHxibG9ja3dpc2UtdmlzdWFsfHwKKwkJCUFsdGhvdWdoICJibG9jayIgd291bGQgcmFyZWx5IGFwcGVhciwgc2luY2UgaXQgY2FuCisJCQlvbmx5IHJlc3VsdCBmcm9tIFZpc3VhbCBtb2RlIHdoZXJlICJnQCIgaXMgbm90IHVzZWZ1bC4KKwkJCXtub3QgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aG91dCB0aGUgK2V2YWwKKwkJCWZlYXR1cmV9CisKK0hlcmUgaXMgYW4gZXhhbXBsZSB0aGF0IGNvdW50cyB0aGUgbnVtYmVyIG9mIHNwYWNlcyB3aXRoIDxGND46ID4KKworCW5tYXAgPHNpbGVudD4gPEY0PiA6c2V0IG9wZnVuYz1Db3VudFNwYWNlczxDUj5nQAorCXZtYXAgPHNpbGVudD4gPEY0PiA6PEMtVT5jYWxsIENvdW50U3BhY2VzKHZpc3VhbG1vZGUoKSwgMSk8Q1I+CisKKwlmdW5jdGlvbiEgQ291bnRTcGFjZXModHlwZSwgLi4uKQorCSAgbGV0IHNlbF9zYXZlID0gJnNlbGVjdGlvbgorCSAgbGV0ICZzZWxlY3Rpb24gPSAiaW5jbHVzaXZlIgorCSAgbGV0IHJlZ19zYXZlID0gQEAKKworCSAgaWYgYTowICAiIEludm9rZWQgZnJvbSBWaXN1YWwgbW9kZSwgdXNlICc8IGFuZCAnPiBtYXJrcy4KKwkgICAgc2lsZW50IGV4ZSAibm9ybWFsISBgPCIgLiBhOnR5cGUgLiAiYD55IgorCSAgZWxzZWlmIGE6dHlwZSA9PSAnbGluZScKKwkgICAgc2lsZW50IGV4ZSAibm9ybWFsISAnW1YnXXkiCisJICBlbHNlaWYgYTp0eXBlID09ICdibG9jaycKKwkgICAgc2lsZW50IGV4ZSAibm9ybWFsISBgW1w8Qy1WPmBdeSIKKwkgIGVsc2UKKwkgICAgc2lsZW50IGV4ZSAibm9ybWFsISBgW3ZgXXkiCisJICBlbmRpZgorCisJICBlY2hvbXNnIHN0cmxlbihzdWJzdGl0dXRlKEBALCAnW14gXScsICcnLCAnZycpKQorCisJICBsZXQgJnNlbGVjdGlvbiA9IHNlbF9zYXZlCisJICBsZXQgQEAgPSByZWdfc2F2ZQorCWVuZGZ1bmN0aW9uCisKK05vdGUgdGhhdCB0aGUgJ3NlbGVjdGlvbicgb3B0aW9uIGlzIHRlbXBvcmFyaWx5IHNldCB0byAiaW5jbHVzaXZlIiB0byBiZSBhYmxlCit0byB5YW5rIGV4YWN0bHkgdGhlIHJpZ2h0IHRleHQgYnkgdXNpbmcgVmlzdWFsIG1vZGUgZnJvbSB0aGUgJ1sgdG8gdGhlICddCittYXJrLgorCitBbHNvIG5vdGUgdGhhdCB0aGVyZSBpcyBhIHNlcGFyYXRlIG1hcHBpbmcgZm9yIFZpc3VhbCBtb2RlLiAgSXQgcmVtb3ZlcyB0aGUKKyInPCwnPiIgcmFuZ2UgdGhhdCAiOiIgaW5zZXJ0cyBpbiBWaXN1YWwgbW9kZSBhbmQgaW52b2tlcyB0aGUgZnVuY3Rpb24gd2l0aAordmlzdWFsbW9kZSgpIGFuZCBhbiBleHRyYSBhcmd1bWVudC4KKwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAyLiBBYmJyZXZpYXRpb25zCQkJKmFiYnJldmlhdGlvbnMqICpBYmJyZXZpYXRpb25zKgogCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQgYi9ydW50aW1lL2RvYy9xdWlja3JlZi50eHQKaW5kZXggOWY0ZjdlNi4uNjg3ZTVjZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvcXVpY2tyZWYudHh0CisrKyBiL3J1bnRpbWUvZG9jL3F1aWNrcmVmLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpxdWlja3JlZi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBOb3YgMjUKKypxdWlja3JlZi50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNSBEZWMgMTIKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTc3NCw2ICs3NzQsNyBAQAogfCdudW1iZXInfAkgIHwnbnUnfCAgICAgcHJpbnQgdGhlIGxpbmUgbnVtYmVyIGluIGZyb250IG9mIGVhY2ggbGluZQogfCdudW1iZXJ3aWR0aCd8CSAgfCdudXcnfCAgICBudW1iZXIgb2YgY29sdW1ucyB1c2VkIGZvciB0aGUgbGluZSBudW1iZXIKIHwnb21uaWZ1bmMnfCAgICAgIHwnb2Z1J3wgICAgZnVuY3Rpb24gZm9yIGZpbGV0eXBlLXNwZWNpZmljIGNvbXBsZXRpb24KK3wnb3BlcmF0b3JmdW5jJ3wgIHwnb3BmdW5jJ3wgZnVudGlvbiB0byBiZSBjYWxsZWQgZm9yIHxnQHwgb3BlcmF0b3IKIHwnb3NmaWxldHlwZSd8CSAgfCdvZnQnfCAgICBvcGVyYXRpbmcgc3lzdGVtLXNwZWNpZmljIGZpbGV0eXBlIGluZm9ybWF0aW9uCiB8J3BhcmFncmFwaHMnfAkgIHwncGFyYSd8ICAgbnJvZmYgbWFjcm9zIHRoYXQgc2VwYXJhdGUgcGFyYWdyYXBocwogfCdwYXN0ZSd8CQkgICAgIGFsbG93IHBhc3RpbmcgdGV4dApkaWZmIC0tZ2l0IGEvc3JjL2ZlYXR1cmUuaCBiL3NyYy9mZWF0dXJlLmgKaW5kZXggNmFiYzBlZC4uNjlhNzg0ZSAxMDA2NDQKLS0tIGEvc3JjL2ZlYXR1cmUuaAorKysgYi9zcmMvZmVhdHVyZS5oCkBAIC05NzIsNyArOTcyLDcgQEAKICAqICttb3VzZQkJQW55IG1vdXNlIHN1cHBvcnQgKGFueSBvZiB0aGUgYWJvdmUgZW5hYmxlZCkuCiAgKi8KIC8qIE9TLzIgYW5kIEFtaWdhIGNvbnNvbGUgaGF2ZSBubyBtb3VzZSBzdXBwb3J0ICovCi0jaWYgKCFkZWZpbmVkKEFNSUdBKSAmJiAhZGVmaW5lZChPUzIpICYmICFkZWZpbmVkKE1BQ09TKSkKKyNpZiAhZGVmaW5lZChBTUlHQSkgJiYgIWRlZmluZWQoT1MyKQogIyBpZmRlZiBGRUFUX05PUk1BTAogIyAgZGVmaW5lIEZFQVRfTU9VU0VfWFRFUk0KICMgZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9maWxlaW8uYyBiL3NyYy9maWxlaW8uYwppbmRleCBhNTczYTViLi40YzQxNWFiIDEwMDY0NAotLS0gYS9zcmMvZmlsZWlvLmMKKysrIGIvc3JjL2ZpbGVpby5jCkBAIC01NTYsNyArNTU2LDExIEBACiAJCSAgICBpZiAoIWJ0X2RvbnR3cml0ZShjdXJidWYpKQogI2VuZGlmCiAJCQljaGVja19uZWVkX3N3YXAobmV3ZmlsZSk7Ci0JCSAgICBmaWxlbWVzcyhjdXJidWYsIHNmbmFtZSwgKGNoYXJfdSAqKV8oIltOZXcgRmlsZV0iKSwgMCk7CisJCSAgICBpZiAoZGlyX29mX2ZpbGVfZXhpc3RzKGZuYW1lKSkKKwkJCWZpbGVtZXNzKGN1cmJ1Ziwgc2ZuYW1lLCAoY2hhcl91ICopXygiW05ldyBGaWxlXSIpLCAwKTsKKwkJICAgIGVsc2UKKwkJCWZpbGVtZXNzKGN1cmJ1Ziwgc2ZuYW1lLAorCQkJCQkgICAoY2hhcl91ICopXygiW05ldyBESVJFQ1RPUlldIiksIDApOwogI2lmZGVmIEZFQVRfVklNSU5GTwogCQkgICAgLyogRXZlbiB0aG91Z2ggdGhpcyBpcyBhIG5ldyBmaWxlLCBpdCBtaWdodCBoYXZlIGJlZW4KIAkJICAgICAqIGVkaXRlZCBiZWZvcmUgYW5kIGRlbGV0ZWQuICBHZXQgdGhlIG9sZCBtYXJrcy4gKi8KZGlmZiAtLWdpdCBhL3NyYy9ub3JtYWwuYyBiL3NyYy9ub3JtYWwuYwppbmRleCA3MWVlZmM0Li4zNDZjYzhiIDEwMDY0NAotLS0gYS9zcmMvbm9ybWFsLmMKKysrIGIvc3JjL25vcm1hbC5jCkBAIC0zMiw2ICszMiw3IEBACiAJCW52X2NvbXBhcmUgX19BUkdTKChjb25zdCB2b2lkICpzMSwgY29uc3Qgdm9pZCAqczIpKTsKIHN0YXRpYyBpbnQJZmluZF9jb21tYW5kIF9fQVJHUygoaW50IGNtZGNoYXIpKTsKIHN0YXRpYyB2b2lkCW9wX2NvbG9uIF9fQVJHUygob3BhcmdfVCAqb2FwKSk7CitzdGF0aWMgdm9pZAlvcF9mdW5jdGlvbiBfX0FSR1MoKG9wYXJnX1QgKm9hcCkpOwogI2lmIGRlZmluZWQoRkVBVF9NT1VTRSkgJiYgZGVmaW5lZChGRUFUX1ZJU1VBTCkKIHN0YXRpYyB2b2lkCWZpbmRfc3RhcnRfb2Zfd29yZCBfX0FSR1MoKHBvc19UICopKTsKIHN0YXRpYyB2b2lkCWZpbmRfZW5kX29mX3dvcmQgX19BUkdTKChwb3NfVCAqKSk7CkBAIC0xNjk2LDYgKzE2OTcsNyBAQAogCSAgICB9CiAKIAkgICAgcmVkb19WSXN1YWxfYnVzeSA9IEZBTFNFOworCiAJICAgIC8qCiAJICAgICAqIFN3aXRjaCBWaXN1YWwgb2ZmIG5vdywgc28gc2NyZWVuIHVwZGF0aW5nIGRvZXMKIAkgICAgICogbm90IHNob3cgaW52ZXJ0ZWQgdGV4dCB3aGVuIHRoZSBzY3JlZW4gaXMgcmVkcmF3bi4KQEAgLTE3MTgsNiArMTcyMCw3IEBACiAjZW5kaWYKIAkJaWYgKChvYXAtPm9wX3R5cGUgPT0gT1BfWUFOSwogCQkJICAgIHx8IG9hcC0+b3BfdHlwZSA9PSBPUF9DT0xPTgorCQkJICAgIHx8IG9hcC0+b3BfdHlwZSA9PSBPUF9GVU5DVElPTgogCQkJICAgIHx8IG9hcC0+b3BfdHlwZSA9PSBPUF9GSUxURVIpCiAJCQkmJiBvYXAtPm1vdGlvbl9mb3JjZSA9PSBOVUwpCiAJCSAgICByZWRyYXdfY3VyYnVmX2xhdGVyKElOVkVSVEVEKTsKQEAgLTE5NDAsNiArMTk0MywxMCBAQAogCSAgICBvcF9mb3JtYXQob2FwLCBUUlVFKTsJLyogdXNlIGludGVybmFsIGZ1bmN0aW9uICovCiAJICAgIGJyZWFrOwogCisJY2FzZSBPUF9GVU5DVElPTjoKKwkgICAgb3BfZnVuY3Rpb24ob2FwKTsJCS8qIGNhbGwgJ29wZXJhdG9yZnVuYycgKi8KKwkgICAgYnJlYWs7CisKIAljYXNlIE9QX0lOU0VSVDoKIAljYXNlIE9QX0FQUEVORDoKICNpZmRlZiBGRUFUX1ZJU1VBTApAQCAtMjEwMCw2ICsyMTA3LDQwIEBACiAgICAgICovCiB9CiAKKy8qCisgKiBIYW5kbGUgdGhlICJneSIgb3BlcmF0b3I6IGNhbGwgJ29wZXJhdG9yZnVuYycuCisgKi8KKyAgICB2b2lkCitvcF9mdW5jdGlvbihvYXApCisgICAgb3BhcmdfVAkqb2FwOworeworI2lmZGVmIEZFQVRfRVZBTAorICAgIGNoYXJfdQkqKGFyZ3ZbMV0pOworCisgICAgaWYgKCpwX29wZnVuYyA9PSBOVUwpCisJRU1TRyhfKCJFNzc0OiAnb3BlcmF0b3JmdW5jJyBpcyBlbXB0eSIpKTsKKyAgICBlbHNlCisgICAgeworCS8qIFNldCAnWyBhbmQgJ10gbWFya3MgdG8gdGV4dCB0byBiZSBvcGVyYXRlZCBvbi4gKi8KKwljdXJidWYtPmJfb3Bfc3RhcnQgPSBvYXAtPnN0YXJ0OworCWN1cmJ1Zi0+Yl9vcF9lbmQgPSBvYXAtPmVuZDsKKwlpZiAob2FwLT5tb3Rpb25fdHlwZSAhPSBNTElORSAmJiAhb2FwLT5pbmNsdXNpdmUpCisJICAgIC8qIEV4Y2x1ZGUgdGhlIGVuZCBwb3NpdGlvbi4gKi8KKwkgICAgZGVjbCgmY3VyYnVmLT5iX29wX2VuZCk7CisKKwlpZiAob2FwLT5ibG9ja19tb2RlKQorCSAgICBhcmd2WzBdID0gKGNoYXJfdSAqKSJibG9jayI7CisJZWxzZSBpZiAob2FwLT5tb3Rpb25fdHlwZSA9PSBNTElORSkKKwkgICAgYXJndlswXSA9IChjaGFyX3UgKikibGluZSI7CisJZWxzZQorCSAgICBhcmd2WzBdID0gKGNoYXJfdSAqKSJjaGFyIjsKKwkodm9pZCljYWxsX2Z1bmNfcmV0bnIocF9vcGZ1bmMsIDEsIGFyZ3YsIEZBTFNFKTsKKyAgICB9CisjZWxzZQorICAgIEVNU0coXygiRTc3NTogRXZhbCBmZWF0dXJlIG5vdCBhdmFpbGFibGUiKSk7CisjZW5kaWYKK30KKwogI2lmIGRlZmluZWQoRkVBVF9NT1VTRSkgfHwgZGVmaW5lZChQUk9UTykKIC8qCiAgKiBEbyB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uIGZvciB0aGUgY3VycmVudCBtb3VzZSBjbGljayBpbiB0aGUgY3VycmVudCBtb2RlLgpAQCAtNzY2MCw2ICs3NzAxLDcgQEAKICAgICAgKgkgImd1IgkgICAgQ2hhbmdlIHRleHQgdG8gbG93ZXIgY2FzZS4KICAgICAgKgkgImdVIgkgICAgQ2hhbmdlIHRleHQgdG8gdXBwZXIgY2FzZS4KICAgICAgKiAgICJnPyIJICAgIHJvdDEzIGVuY29kaW5nCisgICAgICogICAiZ3kiCSAgICBjYWxsICdvcGVyYXRvcmZ1bmMnCiAgICAgICovCiAgICAgY2FzZSAncSc6CiAgICAgY2FzZSAndyc6CkBAIC03NjY5LDYgKzc3MTEsNyBAQAogICAgIGNhc2UgJ3UnOgogICAgIGNhc2UgJ1UnOgogICAgIGNhc2UgJz8nOgorICAgIGNhc2UgJ3knOgogCW52X29wZXJhdG9yKGNhcCk7CiAJYnJlYWs7CiAKZGlmZiAtLWdpdCBhL3NyYy9vc191bml4LmMgYi9zcmMvb3NfdW5peC5jCmluZGV4IDQ1MzVhZWYuLjg5YzQyMGQgMTAwNjQ0Ci0tLSBhL3NyYy9vc191bml4LmMKKysrIGIvc3JjL29zX3VuaXguYwpAQCAtMzk3MCwxNCArMzk3MCwyNSBAQAogCQl7CiAJCSAgICAvKgogCQkgICAgICogQ2hlY2sgaWYga2V5cyBoYXZlIGJlZW4gdHlwZWQsIHdyaXRlIHRoZW0gdG8gdGhlIGNoaWxkCi0JCSAgICAgKiBpZiB0aGVyZSBhcmUgYW55LiAgRG9uJ3QgZG8gdGhpcyBpZiB3ZSBhcmUgZXhwYW5kaW5nCi0JCSAgICAgKiB3aWxkIGNhcmRzICh3b3VsZCBlYXQgdHlwZWFoZWFkKS4gIERvbid0IGdldCBleHRyYQotCQkgICAgICogY2hhcmFjdGVycyB3aGVuIHdlIGFscmVhZHkgaGF2ZSBvbmUuCisJCSAgICAgKiBpZiB0aGVyZSBhcmUgYW55LgorCQkgICAgICogRG9uJ3QgZG8gdGhpcyBpZiB3ZSBhcmUgZXhwYW5kaW5nIHdpbGQgY2FyZHMgKHdvdWxkIGVhdAorCQkgICAgICogdHlwZWFoZWFkKS4KKwkJICAgICAqIERvbid0IGRvIHRoaXMgd2hlbiBmaWx0ZXJpbmcgYW5kIHRlcm1pbmFsIGlzIGluIGNvb2tlZAorCQkgICAgICogbW9kZSwgdGhlIHNoZWxsIGNvbW1hbmQgd2lsbCBoYW5kbGUgdGhlIEkvTy4gIEF2b2lkcworCQkgICAgICogdGhhdCBhIHR5cGVkIHBhc3N3b3JkIGlzIGVjaG9lZCBmb3Igc3NoIG9yIGdwZyBjb21tYW5kLgorCQkgICAgICogRG9uJ3QgZ2V0IGV4dHJhIGNoYXJhY3RlcnMgd2hlbiB3ZSBhbHJlYWR5IGhhdmUgb25lLgogCQkgICAgICogRG9uJ3QgcmVhZCBjaGFyYWN0ZXJzIHVubGVzcyB3ZSBkaWRuJ3QgZ2V0IG91dHB1dCBmb3IgYQogCQkgICAgICogd2hpbGUsIGF2b2lkcyB0aGF0ICI6ciAhbHMiIGVhdHMgdHlwZWFoZWFkLgogCQkgICAgICovCiAJCSAgICBsZW4gPSAwOwogCQkgICAgaWYgKCEob3B0aW9ucyAmIFNIRUxMX0VYUEFORCkKKwkJCSAgICAmJiAoKG9wdGlvbnMgJgorCQkJCQkgKFNIRUxMX1JFQUR8U0hFTExfV1JJVEV8U0hFTExfQ09PS0VEKSkKKwkJCQkgICAgICAhPSAoU0hFTExfUkVBRHxTSEVMTF9XUklURXxTSEVMTF9DT09LRUQpCisjaWZkZWYgRkVBVF9HVUkKKwkJCQkJCSAgICB8fCBndWkuaW5fdXNlCisjZW5kaWYKKwkJCQkJCSAgICApCiAJCQkgICAgJiYgKHRhX2xlbiA+IDAKIAkJCQl8fCAobm9yZWFkX2NudCA+IDQKIAkJCQkgICAgJiYgKGxlbiA9IHVpX2luY2hhcih0YV9idWYsCmRpZmYgLS1naXQgYS9zcmMvc3BlbGwuYyBiL3NyYy9zcGVsbC5jCmluZGV4IGMzZjQ2OTguLjMwM2VkNTggMTAwNjQ0Ci0tLSBhL3NyYy9zcGVsbC5jCisrKyBiL3NyYy9zcGVsbC5jCkBAIC03NzAzLDcgKzc3MDMsNiBAQAogICAgIEZJTEUJKmZkOwogICAgIGJ1Zl9UCSpidWYgPSBOVUxMOwogICAgIGludAkJbmV3X3NwZiA9IEZBTFNFOwotICAgIHN0cnVjdCBzdGF0CXN0OwogICAgIGNoYXJfdQkqZm5hbWU7CiAgICAgY2hhcl91CWZuYW1lYnVmW01BWFBBVEhMXTsKICAgICBjaGFyX3UJbGluZVtNQVhXTEVOICogMl07CkBAIC03Nzk3LDkgKzc3OTYsNyBAQAogCS8qIFdlIGp1c3QgaW5pdGlhbGl6ZWQgdGhlICdzcGVsbGZpbGUnIG9wdGlvbiBhbmQgY2FuJ3Qgb3BlbiB0aGUgZmlsZS4KIAkgKiBXZSBtYXkgbmVlZCB0byBjcmVhdGUgdGhlICJzcGVsbCIgZGlyZWN0b3J5IGZpcnN0LiAgV2UgYWxyZWFkeQogCSAqIGNoZWNrZWQgdGhlIHJ1bnRpbWUgZGlyZWN0b3J5IGlzIHdyaXRhYmxlIGluIGluaXRfc3BlbGxmaWxlKCkuICovCi0JU1RSQ1BZKE5hbWVCdWZmLCBmbmFtZSk7Ci0JKmdldHRhaWxfc2VwKE5hbWVCdWZmKSA9IE5VTDsKLQlpZiAobWNoX3N0YXQoKGNoYXIgKilOYW1lQnVmZiwgJnN0KSA8IDApCisJaWYgKCFkaXJfb2ZfZmlsZV9leGlzdHMoZm5hbWUpKQogCXsKIAkgICAgLyogVGhlIGRpcmVjdG9yeSBkb2Vzbid0IGV4aXN0LiAgVHJ5IGNyZWF0aW5nIGl0IGFuZCBvcGVuaW5nIHRoZQogCSAgICAgKiBmaWxlIGFnYWluLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL3ZpbS5oIGIvc3JjL3ZpbS5oCmluZGV4IGVjNjk0MzEuLjI3M2QxMGYgMTAwNjQ0Ci0tLSBhL3NyYy92aW0uaAorKysgYi9zcmMvdmltLmgKQEAgLTEyMDEsNiArMTIwMSw3IEBACiAjZGVmaW5lIE9QX0ZPTERERUwJMjQJLyogInpkIiBkZWxldGUgZm9sZHMgKi8KICNkZWZpbmUgT1BfRk9MRERFTFJFQwkyNQkvKiAiekQiIGRlbGV0ZSBmb2xkcyByZWN1cnNpdmVseSAqLwogI2RlZmluZSBPUF9GT1JNQVQyCTI2CS8qICJndyIgZm9ybWF0IG9wZXJhdG9yLCBrZWVwcyBjdXJzb3IgcG9zICovCisjZGVmaW5lIE9QX0ZVTkNUSU9OCTI3CS8qICJneSIgY2FsbCAnb3BlcmF0b3JmdW5jJyAqLwogCiAvKgogICogTW90aW9uIHR5cGVzLCB1c2VkIGZvciBvcGVyYXRvcnMgYW5kIGZvciB5YW5rL2RlbGV0ZSByZWdpc3RlcnMuCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggODViYzIyYS4uN2Q1MDE4MCAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5jCisrKyBiL3NyYy93aW5kb3cuYwpAQCAtNDc2NSw3ICs0NzY1LDcgQEAKIH0KIAogLyoKLSAqIEdldCBhYnNvbHV0ZSBmaWxlIG5hbWUgaW50byBidWZmZXIgJ2J1Zicgb2YgbGVuZ3RoICdsZW4nIGJ5dGVzLgorICogR2V0IGFic29sdXRlIGZpbGUgbmFtZSBpbnRvIGJ1ZmZlciAiYnVmW2xlbl0iLgogICoKICAqIHJldHVybiBGQUlMIGZvciBmYWlsdXJlLCBPSyBvdGhlcndpc2UKICAqLwpAQCAtNDc3Myw3ICs0NzczLDcgQEAKIHZpbV9GdWxsTmFtZShmbmFtZSwgYnVmLCBsZW4sIGZvcmNlKQogICAgIGNoYXJfdQkqZm5hbWUsICpidWY7CiAgICAgaW50CQlsZW47Ci0gICAgaW50CQlmb3JjZTsKKyAgICBpbnQJCWZvcmNlOwkgICAgLyogZm9yY2UgZXhwYW5zaW9uIGV2ZW4gd2hlbiBhbHJlYWR5IGFic29sdXRlICovCiB7CiAgICAgaW50CQlyZXR2YWwgPSBPSzsKICAgICBpbnQJCXVybDsK