ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQgYi9ydW50aW1lL2RvYy9jaGFuZ2UudHh0CmluZGV4IGFiYjUyOGUuLjRhMzIxNzUgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL2NoYW5nZS50eHQKKysrIGIvcnVudGltZS9kb2MvY2hhbmdlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpjaGFuZ2UudHh0KiAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAxNgorKmNoYW5nZS50eHQqICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNTQyLDYgKzE1NDIsOSBAQAogPAkJCVRvIHNvcnQgb24gdGhlIHRleHQgYXQgdmlydHVhbCBjb2x1bW4gMTAgKHRodXMKIAkJCWlnbm9yaW5nIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGFicyBhbmQgc3BhY2VzKTogPgogCQkJCTpzb3J0IC8uKlwlMTB2LworPAkJCVRvIHNvcnQgb24gdGhlIGZpcnN0IG51bWJlciBpbiB0aGUgbGluZSwgbm8gbWF0dGVyCisJCQl3aGF0IGlzIGluIGZyb250IG9mIGl0OiA+CisJCQkJOnNvcnQgLy4qXHplXGQvCiA8CiBOb3RlIHRoYXQgdXNpbmcgIjpzb3J0IiB3aXRoICI6Z2xvYmFsIiBkb2Vzbid0IHNvcnQgdGhlIG1hdGNoaW5nIGxpbmVzLCBpdCdzCiBxdWl0ZSB1c2VsZXNzLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvZXZhbC50eHQgYi9ydW50aW1lL2RvYy9ldmFsLnR4dAppbmRleCAwNDAwMDdhLi43MTFkZTM1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9ldmFsLnR4dAorKysgYi9ydW50aW1lL2RvYy9ldmFsLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpldmFsLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwNgorKmV2YWwudHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNTQ5LDI5ICsxNTQ5LDMzIEBACiBldmVudGhhbmRsZXIoICkJCQlOdW1iZXIJVFJVRSBpZiBpbnNpZGUgYW4gZXZlbnQgaGFuZGxlcgogZXhlY3V0YWJsZSgge2V4cHJ9KQkJTnVtYmVyCTEgaWYgZXhlY3V0YWJsZSB7ZXhwcn0gZXhpc3RzCiBleGlzdHMoIHtleHByfSkJCQlOdW1iZXIJVFJVRSBpZiB7ZXhwcn0gZXhpc3RzCitleHRlbmQoe2V4cHIxfSwge2V4cHIyfSBbLCB7ZXhwcjN9XSkKKwkJCQlMaXN0L0RpY3QgaW5zZXJ0IGl0ZW1zIG9mIHtleHByMn0gaW50byB7ZXhwcjF9CiBleHBhbmQoIHtleHByfSkJCQlTdHJpbmcJZXhwYW5kIHNwZWNpYWwga2V5d29yZHMgaW4ge2V4cHJ9CiBmaWxlcmVhZGFibGUoIHtmaWxlfSkJCU51bWJlcglUUlVFIGlmIHtmaWxlfSBpcyBhIHJlYWRhYmxlIGZpbGUKK2ZpbGV3cml0YWJsZSgge2ZpbGV9KQkJTnVtYmVyCVRSVUUgaWYge2ZpbGV9IGlzIGEgd3JpdGFibGUgZmlsZQogZmlsdGVyKCB7ZXhwcn0sIHtzdHJpbmd9KQlMaXN0L0RpY3QgIHJlbW92ZSBpdGVtcyBmcm9tIHtleHByfSB3aGVyZQogCQkJCQl7c3RyaW5nfSBpcyAwCiBmaW5kZGlyKCB7bmFtZX1bLCB7cGF0aH1bLCB7Y291bnR9XV0pCi0JCQkJU3RyaW5nCUZpbmQgZGlyZWN0b3J5IHtuYW1lfSBpbiB7cGF0aH0KKwkJCQlTdHJpbmcJZmluZCBkaXJlY3Rvcnkge25hbWV9IGluIHtwYXRofQogZmluZGZpbGUoIHtuYW1lfVssIHtwYXRofVssIHtjb3VudH1dXSkKLQkJCQlTdHJpbmcJRmluZCBmaWxlIHtuYW1lfSBpbiB7cGF0aH0KLWZpbGV3cml0YWJsZSgge2ZpbGV9KQkJTnVtYmVyCVRSVUUgaWYge2ZpbGV9IGlzIGEgd3JpdGFibGUgZmlsZQorCQkJCVN0cmluZwlmaW5kIGZpbGUge25hbWV9IGluIHtwYXRofQogZm5hbWVtb2RpZnkoIHtmbmFtZX0sIHttb2RzfSkJU3RyaW5nCW1vZGlmeSBmaWxlIG5hbWUKIGZvbGRjbG9zZWQoIHtsbnVtfSkJCU51bWJlcglmaXJzdCBsaW5lIG9mIGZvbGQgYXQge2xudW19IGlmIGNsb3NlZAogZm9sZGNsb3NlZGVuZCgge2xudW19KQkJTnVtYmVyCWxhc3QgbGluZSBvZiBmb2xkIGF0IHtsbnVtfSBpZiBjbG9zZWQKIGZvbGRsZXZlbCgge2xudW19KQkJTnVtYmVyCWZvbGQgbGV2ZWwgYXQge2xudW19CiBmb2xkdGV4dCggKQkJCVN0cmluZwlsaW5lIGRpc3BsYXllZCBmb3IgY2xvc2VkIGZvbGQKK2ZvbGR0ZXh0cmVzdWx0KCB7bG51bX0pCQlTdHJpbmcJdGV4dCBmb3IgY2xvc2VkIGZvbGQgYXQge2xudW19CiBmb3JlZ3JvdW5kKCApCQkJTnVtYmVyCWJyaW5nIHRoZSBWaW0gd2luZG93IHRvIHRoZSBmb3JlZ3JvdW5kCiBmdW5jdGlvbigge25hbWV9KQkJRnVuY3JlZiByZWZlcmVuY2UgdG8gZnVuY3Rpb24ge25hbWV9CitnYXJiYWdlY29sbGVjdCgpCQlub25lCWZyZWUgbWVtb3J5LCBicmVha2luZyBjeWNsaWMgcmVmZXJlbmNlcwogZ2V0KCB7bGlzdH0sIHtpZHh9IFssIHtkZWZ9XSkJYW55CWdldCBpdGVtIHtpZHh9IGZyb20ge2xpc3R9IG9yIHtkZWZ9CiBnZXQoIHtkaWN0fSwge2tleX0gWywge2RlZn1dKQlhbnkJZ2V0IGl0ZW0ge2tleX0gZnJvbSB7ZGljdH0gb3Ige2RlZn0KIGdldGJ1ZmxpbmUoIHtleHByfSwge2xudW19IFssIHtlbmR9XSkKIAkJCQlMaXN0CWxpbmVzIHtsbnVtfSB0byB7ZW5kfSBvZiBidWZmZXIge2V4cHJ9CitnZXRidWZ2YXIoIHtleHByfSwge3Zhcm5hbWV9KQlhbnkJdmFyaWFibGUge3Zhcm5hbWV9IGluIGJ1ZmZlciB7ZXhwcn0KIGdldGNoYXIoIFtleHByXSkJCU51bWJlcglnZXQgb25lIGNoYXJhY3RlciBmcm9tIHRoZSB1c2VyCiBnZXRjaGFybW9kKCApCQkJTnVtYmVyCW1vZGlmaWVycyBmb3IgdGhlIGxhc3QgdHlwZWQgY2hhcmFjdGVyCi1nZXRidWZ2YXIoIHtleHByfSwge3Zhcm5hbWV9KQkJdmFyaWFibGUge3Zhcm5hbWV9IGluIGJ1ZmZlciB7ZXhwcn0KIGdldGNtZGxpbmUoKQkJCVN0cmluZwlyZXR1cm4gdGhlIGN1cnJlbnQgY29tbWFuZC1saW5lCiBnZXRjbWRwb3MoKQkJCU51bWJlcglyZXR1cm4gY3Vyc29yIHBvc2l0aW9uIGluIGNvbW1hbmQtbGluZQogZ2V0Y21kdHlwZSgpCQkJU3RyaW5nCXJldHVybiB0aGUgY3VycmVudCBjb21tYW5kLWxpbmUgdHlwZQpAQCAtMTU5MCw3ICsxNTk0LDcgQEAKIGdldHJlZ3R5cGUoIFt7cmVnbmFtZX1dKQlTdHJpbmcJdHlwZSBvZiByZWdpc3RlcgogZ2V0d2lucG9zeCgpCQkJTnVtYmVyCVggY29vcmQgaW4gcGl4ZWxzIG9mIEdVSSBWaW0gd2luZG93CiBnZXR3aW5wb3N5KCkJCQlOdW1iZXIJWSBjb29yZCBpbiBwaXhlbHMgb2YgR1VJIFZpbSB3aW5kb3cKLWdldHdpbnZhcigge25yfSwge3Zhcm5hbWV9KQkJdmFyaWFibGUge3Zhcm5hbWV9IGluIHdpbmRvdyB7bnJ9CitnZXR3aW52YXIoIHtucn0sIHt2YXJuYW1lfSkJYW55CXZhcmlhYmxlIHt2YXJuYW1lfSBpbiB3aW5kb3cge25yfQogZ2xvYigge2V4cHJ9KQkJCVN0cmluZwlleHBhbmQgZmlsZSB3aWxkY2FyZHMgaW4ge2V4cHJ9CiBnbG9icGF0aCgge3BhdGh9LCB7ZXhwcn0pCVN0cmluZwlkbyBnbG9iKHtleHByfSkgZm9yIGFsbCBkaXJzIGluIHtwYXRofQogaGFzKCB7ZmVhdHVyZX0pCQkJTnVtYmVyCVRSVUUgaWYgZmVhdHVyZSB7ZmVhdHVyZX0gc3VwcG9ydGVkCkBAIC0xNjExLDYgKzE2MTUsNyBAQAogaW5wdXQoIHtwcm9tcHR9IFssIHt0ZXh0fSBbLCB7Y29tcGxldGlvbn1dXSkKIAkJCQlTdHJpbmcJZ2V0IGlucHV0IGZyb20gdGhlIHVzZXIKIGlucHV0ZGlhbG9nKCB7cH0gWywge3R9IFssIHtjfV1dKSBTdHJpbmcgIGxpa2UgaW5wdXQoKSBidXQgaW4gYSBHVUkgZGlhbG9nCitpbnB1dGxpc3QoIHt0ZXh0bGlzdH0pCQlOdW1iZXIJbGV0IHRoZSB1c2VyIHBpY2sgZnJvbSBhIGNob2ljZSBsaXN0CiBpbnB1dHJlc3RvcmUoKQkJCU51bWJlcglyZXN0b3JlIHR5cGVhaGVhZAogaW5wdXRzYXZlKCkJCQlOdW1iZXIJc2F2ZSBhbmQgY2xlYXIgdHlwZWFoZWFkCiBpbnB1dHNlY3JldCgge3Byb21wdH0gWywge3RleHR9XSkgU3RyaW5nICBsaWtlIGlucHV0KCkgYnV0IGhpZGluZyB0aGUgdGV4dApAQCAtMTY4OSw2ICsxNjk0LDcgQEAKIHNldGxpbmUoIHtsbnVtfSwge2xpbmV9KQlOdW1iZXIJc2V0IGxpbmUge2xudW19IHRvIHtsaW5lfQogc2V0bG9jbGlzdCgge25yfSwge2xpc3R9Wywge2FjdGlvbn1dKQogCQkJCU51bWJlcgltb2RpZnkgbG9jYXRpb24gbGlzdCB1c2luZyB7bGlzdH0KK3NldHBvcygge2V4cHJ9LCB7bGlzdH0pCQlub25lCXNldCB0aGUge2V4cHJ9IHBvc2l0aW9uIHRvIHtsaXN0fQogc2V0cWZsaXN0KCB7bGlzdH1bLCB7YWN0aW9ufV0pCU51bWJlcgltb2RpZnkgcXVpY2tmaXggbGlzdCB1c2luZyB7bGlzdH0KIHNldHJlZygge259LCB7dn1bLCB7b3B0fV0pCU51bWJlcglzZXQgcmVnaXN0ZXIgdG8gdmFsdWUgYW5kIHR5cGUKIHNldHdpbnZhcigge25yfSwge3Zhcm5hbWV9LCB7dmFsfSkJc2V0IHt2YXJuYW1lfSBpbiB3aW5kb3cge25yfSB0byB7dmFsfQpAQCAtMjczMCw3ICsyNzM2LDcgQEAKIAkJZm9udCBuYW1lLiAgSWYgbm90IHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgogCQlPdGhlcndpc2UgdGhlIGFjdHVhbCBmb250IG5hbWUgaXMgcmV0dXJuZWQsIG9yIHtuYW1lfSBpZiB0aGUKIAkJR1VJIGRvZXMgbm90IHN1cHBvcnQgb2J0YWluaW5nIHRoZSByZWFsIG5hbWUuCi0JCU9ubHkgd29ya3Mgd2hlbiB0aGUgR1VJIGlzIHJ1bm5pbmcsIHRodXMgbm90IHlvdSB5b3VyIHZpbXJjIG9yCisJCU9ubHkgd29ya3Mgd2hlbiB0aGUgR1VJIGlzIHJ1bm5pbmcsIHRodXMgbm90IGluIHlvdXIgdmltcmMgb3IKIAkJZ3ZpbXJjIGZpbGUuICBVc2UgdGhlIHxHVUlFbnRlcnwgYXV0b2NvbW1hbmQgdG8gdXNlIHRoaXMKIAkJZnVuY3Rpb24ganVzdCBhZnRlciB0aGUgR1VJIGhhcyBzdGFydGVkLgogCQlOb3RlIHRoYXQgdGhlIEdUSyAyIEdVSSBhY2NlcHRzIGFueSBmb250IG5hbWUsIHRodXMgY2hlY2tpbmcKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2hlbHAudHh0IGIvcnVudGltZS9kb2MvaGVscC50eHQKaW5kZXggMjI5MjIwZi4uZjZhOWUyYiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvaGVscC50eHQKKysrIGIvcnVudGltZS9kb2MvaGVscC50eHQKQEAgLTE3MSw2ICsxNzEsNyBAQAogfHZlcnNpb240LnR4dHwJRGlmZmVyZW5jZXMgYmV0d2VlbiBWaW0gdmVyc2lvbiAzLjAgYW5kIDQueAogfHZlcnNpb241LnR4dHwJRGlmZmVyZW5jZXMgYmV0d2VlbiBWaW0gdmVyc2lvbiA0LjYgYW5kIDUueAogfHZlcnNpb242LnR4dHwJRGlmZmVyZW5jZXMgYmV0d2VlbiBWaW0gdmVyc2lvbiA1LjcgYW5kIDYueAorfHZlcnNpb243LnR4dHwJRGlmZmVyZW5jZXMgYmV0d2VlbiBWaW0gdmVyc2lvbiA2LjQgYW5kIDcueAogCQkJCQkJKnN5cy1maWxlLWxpc3QqCiBSZW1hcmtzIGFib3V0IHNwZWNpZmljIHN5c3RlbXMgfgogfG9zXzM5MC50eHR8CU9TLzM5MCBVbml4CkBAIC0xOTUsMTIgKzE5Niw2IEBACiB8cGlfemlwLnR4dHwJWmlwIGFyY2hpdmUgZXhwbG9yZXIKIAogTE9DQUwgQURESVRJT05TOgkJCQkqbG9jYWwtYWRkaXRpb25zKgotfGNlY3V0aWwudHh0fAlEckNoaXAncyBVdGlsaXRpZXMJCQkJSnVuIDExLCAyMDA0Ci18ZXhhbXBsZS50eHR8CUV4YW1wbGUgZm9yIGEgbG9jYWxseSBhZGRlZCBoZWxwIGZpbGUKLXxtYXRjaGl0LnR4dHwgICBFeHRlbmRlZCAiJSIgbWF0Y2hpbmcKLXx0ZXN0LnR4dHwJVGVzdGluZyB0aGUgaOlscCBj9m1t5W5kIG70dwotfHR5cGVjb3JyLnR4dHwJUGx1Z2luIGZvciBjb3JyZWN0aW5nIHR5cGluZyBtaXN0YWtlcwotfGhlbHBwLnR4dHwJRHVtbXkgbGluZSB0byBhdm9pZCBhbiBlcnJvciBtZXNzYWdlCiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKmJhcnMqCQlCYXJzIGV4YW1wbGUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ludHJvLnR4dCBiL3J1bnRpbWUvZG9jL2ludHJvLnR4dAppbmRleCBlOWZlMzY5Li5kMjNmZTdjIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9pbnRyby50eHQKKysrIGIvcnVudGltZS9kb2MvaW50cm8udHh0CkBAIC0xLDQgKzEsNCBAQAotKmludHJvLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDUgU2VwIDAxCisqaW50cm8udHh0KiAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTk0LDEzICs5NCwxNSBAQAogVGhlcmUgYXJlIHNldmVyYWwgbWFpbGluZyBsaXN0cyBmb3IgVmltOgogPHZpbUB2aW0ub3JnPgogCUZvciBkaXNjdXNzaW9ucyBhYm91dCB1c2luZyBleGlzdGluZyB2ZXJzaW9ucyBvZiBWaW06IFVzZWZ1bCBtYXBwaW5ncywKLQlxdWVzdGlvbnMsIGFuc3dlcnMsIHdoZXJlIHRvIGdldCBhIHNwZWNpZmljIHZlcnNpb24sIGV0Yy4KKwlxdWVzdGlvbnMsIGFuc3dlcnMsIHdoZXJlIHRvIGdldCBhIHNwZWNpZmljIHZlcnNpb24sIGV0Yy4gIFRoZXJlIGFyZQorCXF1aXRlIGEgZmV3IHBlb3BsZSB3YXRjaGluZyB0aGlzIGxpc3QgYW5kIGFuc3dlcmluZyBxdWVzdGlvbnMsIGFsc28KKwlmb3IgYmVnaW5uZXJzLiAgRG9uJ3QgaGVzaXRhdGUgdG8gYXNrIHlvdXIgcXVlc3Rpb24gaGVyZS4KIDx2aW0tZGV2QHZpbS5vcmc+CQkJCSp2aW0tZGV2KiAqdmltZGV2KgogCUZvciBkaXNjdXNzaW9ucyBhYm91dCBjaGFuZ2luZyBWaW06IE5ldyBmZWF0dXJlcywgcG9ydGluZywgcGF0Y2hlcywKIAliZXRhLXRlc3QgdmVyc2lvbnMsIGV0Yy4KIDx2aW0tYW5ub3VuY2VAdmltLm9yZz4JCQkJKnZpbS1hbm5vdW5jZSoKIAlBbm5vdW5jZW1lbnRzIGFib3V0IG5ldyB2ZXJzaW9ucyBvZiBWaW07IGFsc28gZm9yIGJldGEtdGVzdCB2ZXJzaW9ucwotCWFuZCBwb3J0cyB0byBkaWZmZXJlbnQgc3lzdGVtcy4KKwlhbmQgcG9ydHMgdG8gZGlmZmVyZW50IHN5c3RlbXMuICBUaGlzIGlzIGEgcmVhZC1vbmx5IGxpc3QuCiA8dmltLW11bHRpYnl0ZUB2aW0ub3JnPgkJCQkqdmltLW11bHRpYnl0ZSoKIAlGb3IgZGlzY3Vzc2lvbnMgYWJvdXQgdXNpbmcgYW5kIGltcHJvdmluZyB0aGUgbXVsdGktYnl0ZSBhc3BlY3RzIG9mCiAJVmltLgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2Mvb3B0aW9ucy50eHQgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAppbmRleCBiMDRiYjU1Li4xYzVmNWRlIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9vcHRpb25zLnR4dAorKysgYi9ydW50aW1lL2RvYy9vcHRpb25zLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDUKKypvcHRpb25zLnR4dCoJRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDkKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwJICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTQ0Miw2ICsxNDQyLDggQEAKIAkJCXtub3QgaW4gVml9CiAJTnVtYmVyIG9mIHNjcmVlbiBsaW5lcyB0byB1c2UgZm9yIHRoZSBjb21tYW5kLWxpbmUuICBIZWxwcyBhdm9pZGluZwogCXxoaXQtZW50ZXJ8IHByb21wdHMuCisJVGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uIGlzIHN0b3JlZCB3aXRoIHRoZSB0YWIgcGFnZSwgc28gdGhhdCBlYWNoIHRhYgorCXBhZ2UgY2FuIGhhdmUgYSBkaWZmZXJlbnQgdmFsdWUuCiAKIAkJCQkJCSonY21kd2luaGVpZ2h0JyogKidjd2gnKgogJ2NtZHdpbmhlaWdodCcgJ2N3aCcJbnVtYmVyCShkZWZhdWx0IDcpCkBAIC02NTIyLDggKzY1MjQsOCBAQAogJ3RhZ3JlbGF0aXZlJyAndHInCWJvb2xlYW4JKFZpbSBkZWZhdWx0OiBvbiwgVmkgZGVmYXVsdDogb2ZmKQogCQkJZ2xvYmFsCiAJCQl7bm90IGluIFZpfQotCUlmIG9uIGFuZCB1c2luZyBhIHRhZyBmaWxlIGluIGFub3RoZXIgZGlyZWN0b3J5LCBmaWxlIG5hbWVzIGluIHRoYXQKLQl0YWcgZmlsZSBhcmUgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgdGFnIGZpbGUgaXMuCisJSWYgb24gYW5kIHVzaW5nIGEgdGFncyBmaWxlIGluIGFub3RoZXIgZGlyZWN0b3J5LCBmaWxlIG5hbWVzIGluIHRoYXQKKwl0YWdzIGZpbGUgYXJlIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHRhZ3MgZmlsZSBpcy4KIAlOT1RFOiBUaGlzIG9wdGlvbiBpcyBzZXQgdG8gdGhlIFZpIGRlZmF1bHQgdmFsdWUgd2hlbiAnY29tcGF0aWJsZScgaXMKIAlzZXQgYW5kIHRvIHRoZSBWaW0gZGVmYXVsdCB2YWx1ZSB3aGVuICdjb21wYXRpYmxlJyBpcyByZXNldC4KIApkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdGFicGFnZS50eHQgYi9ydW50aW1lL2RvYy90YWJwYWdlLnR4dAppbmRleCA1NDM5ZmQ0Li41NWYxMmQ5IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWJwYWdlLnR4dAorKysgYi9ydW50aW1lL2RvYy90YWJwYWdlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp0YWJwYWdlLnR4dCogICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwNgorKnRhYnBhZ2UudHh0KiAgIEZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA5CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0yMDUsNiArMjA1LDggQEAKIAogVmFyaWFibGVzIGxvY2FsIHRvIGEgdGFiIHBhZ2Ugc3RhcnQgd2l0aCAidDoiLiB8dGFicGFnZS12YXJpYWJsZXwKIAorQ3VycmVudGx5IHRoZXJlIGlzIG9ubHkgb25lIG9wdGlvbiBsb2NhbCB0byBhIHRhYiBwYWdlOiAnY21kaGVpZ2h0Jy4KKwogVGhlIFRhYkxlYXZlIGFuZCBUYWJFbnRlciBhdXRvY29tbWFuZCBldmVudHMgY2FuIGJlIHVzZWQgdG8gZG8gc29tZXRoaW5nIHdoZW4KIHN3aXRjaGluZyBmcm9tIG9uZSB0YWIgcGFnZSB0byBhbm90aGVyLiAgVGhlIGV4YWN0IG9yZGVyIGRlcGVuZHMgb24gd2hhdCB5b3UKIGFyZSBkb2luZy4gIFdoZW4gY3JlYXRpbmcgYSBuZXcgdGFiIHBhZ2UgdGhpcyB3b3JrcyBhcyBpZiB5b3UgY3JlYXRlIGEgbmV3CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90YWdzIGIvcnVudGltZS9kb2MvdGFncwppbmRleCAzZGFmM2JhLi40MTM0YTFkIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy90YWdzCisrKyBiL3J1bnRpbWUvZG9jL3RhZ3MKQEAgLTU2MTEsNiArNTYxMSw3IEBACiBoZWJyZXcudHh0CWhlYnJldy50eHQJLypoZWJyZXcudHh0KgogaGVscAl2YXJpb3VzLnR4dAkvKmhlbHAqCiBoZWxwLWNvbnRleHQJaGVscC50eHQJLypoZWxwLWNvbnRleHQqCitoZWxwLXRhZ3MJdGFncwkxCiBoZWxwLXRyYW5zbGF0ZWQJdmFyaW91cy50eHQJLypoZWxwLXRyYW5zbGF0ZWQqCiBoZWxwLXh0ZXJtLXdpbmRvdwl2YXJpb3VzLnR4dAkvKmhlbHAteHRlcm0td2luZG93KgogaGVscC50eHQJaGVscC50eHQJLypoZWxwLnR4dCoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RvZG8udHh0IGIvcnVudGltZS9kb2MvdG9kby50eHQKaW5kZXggYmY3ZjQyOC4uOGRkZjUyZiAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdG9kby50eHQKKysrIGIvcnVudGltZS9kb2MvdG9kby50eHQKQEAgLTEsNCArMSw0IEBACi0qdG9kby50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDcKKyp0b2RvLnR4dCogICAgICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zMyw3ICszMyw3IEBACiBIYW5kbGUgcG9zdHBvbmVkIHByZWZpeCB3aXRoIENPTVBPVU5EUEVSTUlURkxBRyBvciBDT01QT1VOREZPUkJJREZMQUcuCiAgICAgV0ZQX0NPTVBQRVJNSVQgYW5kIFdGUF9DT01QRk9SQklECiAKLSI6bWtzcGVsbCIgc3RpbGwgdGFrZXMgdG9vIGxvbmcgaW4gSHVuZ2FyaWFuIGRpY3Rpb25hcnkuCisiOm1rc3BlbGwiIHN0aWxsIHRha2VzIG11Y2ggdG9vIGxvbmcgaW4gSHVuZ2FyaWFuIGRpY3Rpb25hcnkuCiAKIFVzZSB+L3RtcC9odW5nYXJpYW4qLnR4dCB0byB0ZXN0IGRpY3Rpb25hcnkgd2l0aC4KIApAQCAtMTgwNSw2ICsxODA1LDExIEBACiAKIAogVGFnczoKKzkgICBXaXRoICI6c2V0IHRhZ3M9Li90YWdzLC4uL3RhZ3MiIGFuZCBhIHRhZyBhcHBlYXJzIGluIGJvdGggdGFncyBmaWxlcyBpdCBpcworICAgIGFkZGVkIHR3aWNlLiAgUmVxdWlyZXMgZmlndXJpbmcgb3V0IHRoZSBhY3R1YWwgZmlsZSBuYW1lIGZvciBlYWNoIGZvdW5kCisgICAgbWF0Y2guICBSZW1vdmUgdGFnX2ZuYW1lIGZyb20gdGhlIG1hdGNoIGFuZCBjb21iaW5lIGl0IHdpdGggdGhlIGZuYW1lIGluCisgICAgdGhlIG1hdGNoICh3aXRob3V0IGV4cGFuZGluZyBvciBvdGhlciB0aGluZ3MgdGhhdCB0YWtlIHRpbWUpLiAgV2hlbgorICAgICd0YWdyZWxhdGl2ZScgaXMgb2ZmIHRhZ19mbmFtZSBpc24ndCBuZWVkZWQgYXQgYWxsLgogNyAgIENhbiBDVFJMLV0gKGp1bXAgdG8gdGFnKSBpbmNsdWRlIGEgZm9sbG93aW5nICIuIiBhbmQgIi0+IiB0byByZXN0cmljdCB0aGUKICAgICBudW1iZXIgb2YgcG9zc2libGUgbWF0Y2hlcz8gQ2hlY2sgdGFncyBmaWxlIGZvciBhbiBpdGVtIHRoYXQgaGFzIG1lbWJlcnMuCiAgICAgKEZsZW1taW5nIE1hZHNlbikKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQgYi9ydW50aW1lL2RvYy91c3JfNDEudHh0CmluZGV4IDNmZjEzNDAuLjViN2ZiYjAgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKKysrIGIvcnVudGltZS9kb2MvdXNyXzQxLnR4dApAQCAtMSw0ICsxLDQgQEAKLSp1c3JfNDEudHh0KglGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyNAorKnVzcl80MS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBjLiAgTGFzdCBjaGFuZ2U6IDIwMDYgQXByIDA5CiAKIAkJICAgICBWSU0gVVNFUiBNQU5VQUwgLSBieSBCcmFtIE1vb2xlbmFhcgogCkBAIC01NzcsMTUgKzU3NywxOSBAQAogdGhlIGZ1bmN0aW9uIG5hbWUgdG8ganVtcCB0byBkZXRhaWxlZCBoZWxwIG9uIGl0LgogCiBTdHJpbmcgbWFuaXB1bGF0aW9uOgotCWNoYXIybnIoKQkJZ2V0IEFTQ0lJIHZhbHVlIG9mIGEgY2hhcmFjdGVyCiAJbnIyY2hhcigpCQlnZXQgYSBjaGFyYWN0ZXIgYnkgaXRzIEFTQ0lJIHZhbHVlCisJY2hhcjJucigpCQlnZXQgQVNDSUkgdmFsdWUgb2YgYSBjaGFyYWN0ZXIKKwlzdHIybnIoKQkJY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlcgorCXByaW50ZigpCQlmb3JtYXQgYSBzdHJpbmcgYWNjb3JkaW5nIHRvICUgaXRlbXMKIAllc2NhcGUoKQkJZXNjYXBlIGNoYXJhY3RlcnMgaW4gYSBzdHJpbmcgd2l0aCBhICdcJworCXRyKCkJCQl0cmFuc2xhdGUgY2hhcmFjdGVycyBmcm9tIG9uZSBzZXQgdG8gYW5vdGhlcgogCXN0cnRyYW5zKCkJCXRyYW5zbGF0ZSBhIHN0cmluZyB0byBtYWtlIGl0IHByaW50YWJsZQogCXRvbG93ZXIoKQkJdHVybiBhIHN0cmluZyB0byBsb3dlcmNhc2UKIAl0b3VwcGVyKCkJCXR1cm4gYSBzdHJpbmcgdG8gdXBwZXJjYXNlCiAJbWF0Y2goKQkJCXBvc2l0aW9uIHdoZXJlIGEgcGF0dGVybiBtYXRjaGVzIGluIGEgc3RyaW5nCiAJbWF0Y2hlbmQoKQkJcG9zaXRpb24gd2hlcmUgYSBwYXR0ZXJuIG1hdGNoIGVuZHMgaW4gYSBzdHJpbmcKIAltYXRjaHN0cigpCQltYXRjaCBvZiBhIHBhdHRlcm4gaW4gYSBzdHJpbmcKKwltYXRjaGxpc3QoKQkJbGlrZSBtYXRjaHN0cigpIGFuZCBhbHNvIHJldHVybiBzdWJtYXRjaGVzCiAJc3RyaWR4KCkJCWZpcnN0IGluZGV4IG9mIGEgc2hvcnQgc3RyaW5nIGluIGEgbG9uZyBzdHJpbmcKIAlzdHJyaWR4KCkJCWxhc3QgaW5kZXggb2YgYSBzaG9ydCBzdHJpbmcgaW4gYSBsb25nIHN0cmluZwogCXN0cmxlbigpCQlsZW5ndGggb2YgYSBzdHJpbmcKQEAgLTU5NCw2ICs1OTgsOSBAQAogCXN0cnBhcnQoKQkJZ2V0IHBhcnQgb2YgYSBzdHJpbmcKIAlleHBhbmQoKQkJZXhwYW5kIHNwZWNpYWwga2V5d29yZHMKIAlpY29udigpCQkJY29udmVydCB0ZXh0IGZyb20gb25lIGVuY29kaW5nIHRvIGFub3RoZXIKKwlieXRlaWR4KCkJCWJ5dGUgaW5kZXggb2YgYSBjaGFyYWN0ZXIgaW4gYSBzdHJpbmcKKwlyZXBlYXQoKQkJcmVwZWF0IGEgc3RyaW5nIG11bHRpcGxlIHRpbWVzCisJZXZhbCgpCQkJZXZhbHVhdGUgYSBzdHJpbmcgZXhwcmVzc2lvbgogCiBMaXN0IG1hbmlwdWxhdGlvbjoKIAlnZXQoKQkJCWdldCBhbiBpdGVtIHdpdGhvdXQgZXJyb3IgZm9yIHdyb25nIGluZGV4CkBAIC02MTEsMTIgKzYxOCwxNCBAQAogCXJldmVyc2UoKQkJcmV2ZXJzZSB0aGUgb3JkZXIgb2YgYSBMaXN0CiAJc3BsaXQoKQkJCXNwbGl0IGEgU3RyaW5nIGludG8gYSBMaXN0CiAJam9pbigpCQkJam9pbiBMaXN0IGl0ZW1zIGludG8gYSBTdHJpbmcKKwlyYW5nZSgpCQkJcmV0dXJuIGEgTGlzdCB3aXRoIGEgc2VxdWVuY2Ugb2YgbnVtYmVycwogCXN0cmluZygpCQlTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYSBMaXN0CiAJY2FsbCgpCQkJY2FsbCBhIGZ1bmN0aW9uIHdpdGggTGlzdCBhcyBhcmd1bWVudHMKIAlpbmRleCgpCQkJaW5kZXggb2YgYSB2YWx1ZSBpbiBhIExpc3QKIAltYXgoKQkJCW1heGltdW0gdmFsdWUgaW4gYSBMaXN0CiAJbWluKCkJCQltaW5pbXVtIHZhbHVlIGluIGEgTGlzdAogCWNvdW50KCkJCQljb3VudCBudW1iZXIgb2YgdGltZXMgYSB2YWx1ZSBhcHBlYXJzIGluIGEgTGlzdAorCXJlcGVhdCgpCQlyZXBlYXQgYSBMaXN0IG11bHRpcGxlIHRpbWVzCiAKIERpY3Rpb25hcnkgbWFuaXB1bGF0aW9uOgogCWdldCgpCQkJZ2V0IGFuIGVudHJ5IHdpdGhvdXQgYW4gZXJyb3IgZm9yIGEgd3Jvbmcga2V5CkBAIC02MzcsMTUgKzY0NiwzMCBAQAogCW1pbigpCQkJbWluaW11bSB2YWx1ZSBpbiBhIERpY3Rpb25hcnkKIAljb3VudCgpCQkJY291bnQgbnVtYmVyIG9mIHRpbWVzIGEgdmFsdWUgYXBwZWFycwogCi1Xb3JraW5nIHdpdGggdGV4dCBpbiB0aGUgY3VycmVudCBidWZmZXI6Ci0JYnl0ZTJsaW5lKCkJCWdldCBsaW5lIG51bWJlciBhdCBhIHNwZWNpZmljIGJ5dGUgY291bnQKLQlsaW5lMmJ5dGUoKQkJYnl0ZSBjb3VudCBhdCBhIHNwZWNpZmljIGxpbmUKK1ZhcmlhYmxlczoKKwl0eXBlKCkJCQl0eXBlIG9mIGEgdmFyaWFibGUKKwlpc2xvY2tlZCgpCQljaGVjayBpZiBhIHZhcmlhYmxlIGlzIGxvY2tlZAorCWZ1bmN0aW9uKCkJCWdldCBhIEZ1bmNyZWYgZm9yIGEgZnVuY3Rpb24gbmFtZQorCWdldGJ1ZnZhcigpCQlnZXQgYSB2YXJpYWJsZSB2YWx1ZSBmcm9tIGEgc3BlY2lmaWMgYnVmZmVyCisJc2V0YnVmdmFyKCkJCXNldCBhIHZhcmlhYmxlIGluIGEgc3BlY2lmaWMgYnVmZmVyCisJZ2V0d2ludmFyKCkJCWdldCBhIHZhcmlhYmxlIHZhbHVlIGZyb20gYSBzcGVjaWZpYyB3aW5kb3cKKwlzZXR3aW52YXIoKQkJc2V0IGEgdmFyaWFibGUgaW4gYSBzcGVjaWZpYyB3aW5kb3cKKwlnYXJiYWdlY29sbGVjdCgpCXBvc3NpYmx5IGZyZWUgbWVtb3J5CisKK0N1cnNvciBhbmQgbWFyayBwb3NpdGlvbjoKIAljb2woKQkJCWNvbHVtbiBudW1iZXIgb2YgdGhlIGN1cnNvciBvciBhIG1hcmsKIAl2aXJ0Y29sKCkJCXNjcmVlbiBjb2x1bW4gb2YgdGhlIGN1cnNvciBvciBhIG1hcmsKIAlsaW5lKCkJCQlsaW5lIG51bWJlciBvZiB0aGUgY3Vyc29yIG9yIG1hcmsKIAl3aW5jb2woKQkJd2luZG93IGNvbHVtbiBudW1iZXIgb2YgdGhlIGN1cnNvcgogCXdpbmxpbmUoKQkJd2luZG93IGxpbmUgbnVtYmVyIG9mIHRoZSBjdXJzb3IKIAljdXJzb3IoKQkJcG9zaXRpb24gdGhlIGN1cnNvciBhdCBhIGxpbmUvY29sdW1uCisJZ2V0cG9zKCkJCWdldCBwb3NpdGlvbiBvZiBjdXJzb3IsIG1hcmssIGV0Yy4KKwlzZXRwb3MoKQkJc2V0IHBvc2l0aW9uIG9mIGN1cnNvciwgbWFyaywgZXRjLgorCWJ5dGUybGluZSgpCQlnZXQgbGluZSBudW1iZXIgYXQgYSBzcGVjaWZpYyBieXRlIGNvdW50CisJbGluZTJieXRlKCkJCWJ5dGUgY291bnQgYXQgYSBzcGVjaWZpYyBsaW5lCisJZGlmZl9maWxsZXIoKQkJZ2V0IHRoZSBudW1iZXIgb2YgZmlsbGVyIGxpbmVzIGFib3ZlIGEgbGluZQorCitXb3JraW5nIHdpdGggdGV4dCBpbiB0aGUgY3VycmVudCBidWZmZXI6CiAJZ2V0bGluZSgpCQlnZXQgYSBsaW5lIG9yIGxpc3Qgb2YgbGluZXMgZnJvbSB0aGUgYnVmZmVyCiAJc2V0bGluZSgpCQlyZXBsYWNlIGEgbGluZSBpbiB0aGUgYnVmZmVyCiAJYXBwZW5kKCkJCWFwcGVuZCBsaW5lIG9yIGxpc3Qgb2YgbGluZXMgaW4gdGhlIGJ1ZmZlcgpAQCAtNjU4LDI0ICs2ODIsMjcgQEAKIAlzZWFyY2hwb3MoKQkJZmluZCBhIG1hdGNoIGZvciBhIHBhdHRlcm4KIAlzZWFyY2hwYWlyKCkJCWZpbmQgdGhlIG90aGVyIGVuZCBvZiBhIHN0YXJ0L3NraXAvZW5kCiAJc2VhcmNocGFpcnBvcygpCQlmaW5kIHRoZSBvdGhlciBlbmQgb2YgYSBzdGFydC9za2lwL2VuZAorCXNlYXJjaGRlY2woKQkJc2VhcmNoIGZvciB0aGUgZGVjbGFyYXRpb24gb2YgYSBuYW1lCiAKIFN5c3RlbSBmdW5jdGlvbnMgYW5kIG1hbmlwdWxhdGlvbiBvZiBmaWxlczoKLQlicm93c2UoKQkJcHV0IHVwIGEgZmlsZSByZXF1ZXN0ZXIKIAlnbG9iKCkJCQlleHBhbmQgd2lsZGNhcmRzCiAJZ2xvYnBhdGgoKQkJZXhwYW5kIHdpbGRjYXJkcyBpbiBhIG51bWJlciBvZiBkaXJlY3RvcmllcworCWZpbmRmaWxlKCkJCWZpbmQgYSBmaWxlIGluIGEgbGlzdCBvZiBkaXJlY3RvcmllcworCWZpbmRkaXIoKQkJZmluZCBhIGRpcmVjdG9yeSBpbiBhIGxpc3Qgb2YgZGlyZWN0b3JpZXMKIAlyZXNvbHZlKCkJCWZpbmQgb3V0IHdoZXJlIGEgc2hvcnRjdXQgcG9pbnRzIHRvCiAJZm5hbWVtb2RpZnkoKQkJbW9kaWZ5IGEgZmlsZSBuYW1lCisJcGF0aHNob3J0ZW4oKQkJc2hvcnRlbiBkaXJlY3RvcnkgbmFtZXMgaW4gYSBwYXRoCisJc2ltcGxpZnkoKQkJc2ltcGxpZnkgYSBwYXRoIHdpdGhvdXQgY2hhbmdpbmcgaXRzIG1lYW5pbmcKIAlleGVjdXRhYmxlKCkJCWNoZWNrIGlmIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBleGlzdHMKIAlmaWxlcmVhZGFibGUoKQkJY2hlY2sgaWYgYSBmaWxlIGNhbiBiZSByZWFkCiAJZmlsZXdyaXRhYmxlKCkJCWNoZWNrIGlmIGEgZmlsZSBjYW4gYmUgd3JpdHRlbiB0bwotCW1rZGlyKCkJCQljcmVhdGUgYSBuZXcgZGlyZWN0b3J5CisJZ2V0ZnBlcm0oKQkJZ2V0IHRoZSBwZXJtaXNzaW9ucyBvZiBhIGZpbGUKKwlnZXRmdHlwZSgpCQlnZXQgdGhlIGtpbmQgb2YgYSBmaWxlCiAJaXNkaXJlY3RvcnkoKQkJY2hlY2sgaWYgYSBkaXJlY3RvcnkgZXhpc3RzCi0JZ2V0Y3dkKCkJCWdldCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQogCWdldGZzaXplKCkJCWdldCB0aGUgc2l6ZSBvZiBhIGZpbGUKLQlnZXRmdGltZSgpCQlnZXQgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiBhIGZpbGUKLQlsb2NhbHRpbWUoKQkJZ2V0IGN1cnJlbnQgdGltZQotCXN0cmZ0aW1lKCkJCWNvbnZlcnQgdGltZSB0byBhIHN0cmluZworCWdldGN3ZCgpCQlnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkKIAl0ZW1wbmFtZSgpCQlnZXQgdGhlIG5hbWUgb2YgYSB0ZW1wb3JhcnkgZmlsZQorCW1rZGlyKCkJCQljcmVhdGUgYSBuZXcgZGlyZWN0b3J5CiAJZGVsZXRlKCkJCWRlbGV0ZSBhIGZpbGUKIAlyZW5hbWUoKQkJcmVuYW1lIGEgZmlsZQogCXN5c3RlbSgpCQlnZXQgdGhlIHJlc3VsdCBvZiBhIHNoZWxsIGNvbW1hbmQKQEAgLTY4Myw2ICs3MTAsMTMgQEAKIAlyZWFkZmlsZSgpCQlyZWFkIGEgZmlsZSBpbnRvIGEgTGlzdCBvZiBsaW5lcwogCXdyaXRlZmlsZSgpCQl3cml0ZSBhIExpc3Qgb2YgbGluZXMgaW50byBhIGZpbGUKIAorRGF0ZSBhbmQgVGltZToKKwlnZXRmdGltZSgpCQlnZXQgbGFzdCBtb2RpZmljYXRpb24gdGltZSBvZiBhIGZpbGUKKwlsb2NhbHRpbWUoKQkJZ2V0IGN1cnJlbnQgdGltZSBpbiBzZWNvbmRzCisJc3RyZnRpbWUoKQkJY29udmVydCB0aW1lIHRvIGEgc3RyaW5nCisJcmVsdGltZSgpCQlnZXQgdGhlIGN1cnJlbnQgb3IgZWxhcHNlZCB0aW1lIGFjY3VyYXRlbHkKKwlyZWx0aW1lc3RyKCkJCWNvbnZlcnQgcmVsdGltZSgpIHJlc3VsdCB0byBhIHN0cmluZworCiBCdWZmZXJzLCB3aW5kb3dzIGFuZCB0aGUgYXJndW1lbnQgbGlzdDoKIAlhcmdjKCkJCQludW1iZXIgb2YgZW50cmllcyBpbiB0aGUgYXJndW1lbnQgbGlzdAogCWFyZ2lkeCgpCQljdXJyZW50IHBvc2l0aW9uIGluIHRoZSBhcmd1bWVudCBsaXN0CkBAIC02OTIsMjcgKzcyNiw1MiBAQAogCWJ1ZmxvYWRlZCgpCQljaGVjayBpZiBhIGJ1ZmZlciBleGlzdHMgYW5kIGlzIGxvYWRlZAogCWJ1Zm5hbWUoKQkJZ2V0IHRoZSBuYW1lIG9mIGEgc3BlY2lmaWMgYnVmZmVyCiAJYnVmbnIoKQkJCWdldCB0aGUgYnVmZmVyIG51bWJlciBvZiBhIHNwZWNpZmljIGJ1ZmZlcgorCXRhYnBhZ2VidWZsaXN0KCkJcmV0dXJuIExpc3Qgb2YgYnVmZmVycyBpbiBhIHRhYiBwYWdlCisJdGFicGFnZW5yKCkJCWdldCB0aGUgbnVtYmVyIG9mIGEgdGFiIHBhZ2UKKwl0YWJwYWdld2lubnIoKQkJbGlrZSB3aW5ucigpIGZvciBhIHNwZWNpZmllZCB0YWIgcGFnZQogCXdpbm5yKCkJCQlnZXQgdGhlIHdpbmRvdyBudW1iZXIgZm9yIHRoZSBjdXJyZW50IHdpbmRvdwogCWJ1Zndpbm5yKCkJCWdldCB0aGUgd2luZG93IG51bWJlciBvZiBhIHNwZWNpZmljIGJ1ZmZlcgogCXdpbmJ1Zm5yKCkJCWdldCB0aGUgYnVmZmVyIG51bWJlciBvZiBhIHNwZWNpZmljIHdpbmRvdwogCWdldGJ1ZmxpbmUoKQkJZ2V0IGEgbGlzdCBvZiBsaW5lcyBmcm9tIHRoZSBzcGVjaWZpZWQgYnVmZmVyCi0JZ2V0YnVmdmFyKCkJCWdldCBhIHZhcmlhYmxlIHZhbHVlIGZyb20gYSBzcGVjaWZpYyBidWZmZXIKLQlzZXRidWZ2YXIoKQkJc2V0IGEgdmFyaWFibGUgaW4gYSBzcGVjaWZpYyBidWZmZXIKLQlnZXR3aW52YXIoKQkJZ2V0IGEgdmFyaWFibGUgdmFsdWUgZnJvbSBhIHNwZWNpZmljIHdpbmRvdwotCXNldHdpbnZhcigpCQlzZXQgYSB2YXJpYWJsZSBpbiBhIHNwZWNpZmljIHdpbmRvdworCitDb21tYW5kIGxpbmU6CisJZ2V0Y21kbGluZSgpCQlnZXQgdGhlIGN1cnJlbnQgY29tbWFuZCBsaW5lCisJZ2V0Y21kcG9zKCkJCWdldCBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIGluIHRoZSBjb21tYW5kIGxpbmUKKwlzZXRjbWRwb3MoKQkJc2V0IHBvc2l0aW9uIG9mIHRoZSBjdXJzb3IgaW4gdGhlIGNvbW1hbmQgbGluZQorCWdldGNtZHR5cGUoKQkJcmV0dXJuIHRoZSBjdXJyZW50IGNvbW1hbmQtbGluZSB0eXBlCisKK1F1aWNrZml4IGFuZCBsb2NhdGlvbiBsaXN0czoKKwlnZXRxZmxpc3QoKQkJbGlzdCBvZiBxdWlja2ZpeCBlcnJvcnMKKwlzZXRxZmxpc3QoKQkJbW9kaWZ5IGEgcXVpY2tmaXggbGlzdAorCWdldGxvY2xpc3QoKQkJbGlzdCBvZiBsb2NhdGlvbiBsaXN0IGl0ZW1zCisJc2V0bG9jbGlzdCgpCQltb2RpZnkgYSBsb2NhdGlvbiBsaXN0CisKK0luc2VydCBtb2RlIGNvbXBsZXRpb246CisJY29tcGxldGUoKQkJc2V0IGZvdW5kIG1hdGNoZXMKKwljb21wbGV0ZV9hZGQoKQkJYWRkIHRvIGZvdW5kIG1hdGNoZXMKKwljb21wbGV0ZV9jaGVjaygpCWNoZWNrIGlmIGNvbXBsZXRpb24gc2hvdWxkIGJlIGFib3J0ZWQKKwlwdW12aXNpYmxlKCkJCWNoZWNrIGlmIHRoZSBwb3B1cCBtZW51IGlzIGRpc3BsYXllZAogCiBGb2xkaW5nOgogCWZvbGRjbG9zZWQoKQkJY2hlY2sgZm9yIGEgY2xvc2VkIGZvbGQgYXQgYSBzcGVjaWZpYyBsaW5lCiAJZm9sZGNsb3NlZGVuZCgpCQlsaWtlIGZvbGRjbG9zZWQoKSBidXQgcmV0dXJuIHRoZSBsYXN0IGxpbmUKIAlmb2xkbGV2ZWwoKQkJY2hlY2sgZm9yIHRoZSBmb2xkIGxldmVsIGF0IGEgc3BlY2lmaWMgbGluZQogCWZvbGR0ZXh0KCkJCWdlbmVyYXRlIHRoZSBsaW5lIGRpc3BsYXllZCBmb3IgYSBjbG9zZWQgZm9sZAorCWZvbGR0ZXh0cmVzdWx0KCkJZ2V0IHRoZSB0ZXh0IGRpc3BsYXllZCBmb3IgYSBjbG9zZWQgZm9sZAogCi1TeW50YXggaGlnaGxpZ2h0aW5nOgorU3ludGF4IGFuZCBoaWdobGlnaHRpbmc6CiAJaGxleGlzdHMoKQkJY2hlY2sgaWYgYSBoaWdobGlnaHQgZ3JvdXAgZXhpc3RzCiAJaGxJRCgpCQkJZ2V0IElEIG9mIGEgaGlnaGxpZ2h0IGdyb3VwCiAJc3luSUQoKQkJCWdldCBzeW50YXggSUQgYXQgYSBzcGVjaWZpYyBwb3NpdGlvbgogCXN5bklEYXR0cigpCQlnZXQgYSBzcGVjaWZpYyBhdHRyaWJ1dGUgb2YgYSBzeW50YXggSUQKIAlzeW5JRHRyYW5zKCkJCWdldCB0cmFuc2xhdGVkIHN5bnRheCBJRAorCWRpZmZfaGxJRCgpCQlnZXQgaGlnaGxpZ2h0IElEIGZvciBkaWZmIG1vZGUgYXQgYSBwb3NpdGlvbgorCW1hdGNoYXJnKCkJCWdldCBpbmZvIGFib3V0IHw6bWF0Y2h8IGFyZ3VtZW50cworCitTcGVsbGluZzoKKwlzcGVsbGJhZHdvcmQoKQkJbG9jYXRlIGJhZGx5IHNwZWxsZWQgd29yZCBhdCBvciBhZnRlciBjdXJzb3IKKwlzcGVsbHN1Z2dlc3QoKQkJcmV0dXJuIHN1Z2dlc3RlZCBzcGVsbGluZyBjb3JyZWN0aW9ucworCXNvdW5kZm9sZCgpCQlyZXR1cm4gdGhlIHNvdW5kLWEtbGlrZSBlcXVpdmFsZW50IG9mIGEgd29yZAogCiBIaXN0b3J5OgogCWhpc3RhZGQoKQkJYWRkIGFuIGl0ZW0gdG8gYSBoaXN0b3J5CkBAIC03MjEsMTUgKzc4MCwyMyBAQAogCWhpc3RucigpCQlnZXQgaGlnaGVzdCBpbmRleCBvZiBhIGhpc3RvcnkgbGlzdAogCiBJbnRlcmFjdGl2ZToKKwlicm93c2UoKQkJcHV0IHVwIGEgZmlsZSByZXF1ZXN0ZXIKKwlicm93c2VkaXIoKQkJcHV0IHVwIGEgZGlyZWN0b3J5IHJlcXVlc3RlcgogCWNvbmZpcm0oKQkJbGV0IHRoZSB1c2VyIG1ha2UgYSBjaG9pY2UKIAlnZXRjaGFyKCkJCWdldCBhIGNoYXJhY3RlciBmcm9tIHRoZSB1c2VyCiAJZ2V0Y2hhcm1vZCgpCQlnZXQgbW9kaWZpZXJzIGZvciB0aGUgbGFzdCB0eXBlZCBjaGFyYWN0ZXIKIAlpbnB1dCgpCQkJZ2V0IGEgbGluZSBmcm9tIHRoZSB1c2VyCisJaW5wdXRsaXN0KCkJCWxldCB0aGUgdXNlciBwaWNrIGFuIGVudHJ5IGZyb20gYSBsaXN0CiAJaW5wdXRzZWNyZXQoKQkJZ2V0IGEgbGluZSBmcm9tIHRoZSB1c2VyIHdpdGhvdXQgc2hvd2luZyBpdAogCWlucHV0ZGlhbG9nKCkJCWdldCBhIGxpbmUgZnJvbSB0aGUgdXNlciBpbiBhIGRpYWxvZwogCWlucHV0c2F2ZSgpCQlzYXZlIGFuZCBjbGVhciB0eXBlYWhlYWQKIAlpbnB1dHJlc3RvcmUoKQkJcmVzdG9yZSB0eXBlYWhlYWQKIAorR1VJOgorCWdldGZvbnRuYW1lKCkJCWdldCBuYW1lIG9mIGN1cnJlbnQgZm9udCBiZWluZyB1c2VkCisJZ2V0d2lucG9zeCgpCQlYIHBvc2l0aW9uIG9mIHRoZSBHVUkgVmltIHdpbmRvdworCWdldHdpbnBvc3koKQkJWSBwb3NpdGlvbiBvZiB0aGUgR1VJIFZpbSB3aW5kb3cKKwogVmltIHNlcnZlcjoKIAlzZXJ2ZXJsaXN0KCkJCXJldHVybiB0aGUgbGlzdCBvZiBzZXJ2ZXIgbmFtZXMKIAlyZW1vdGVfc2VuZCgpCQlzZW5kIGNvbW1hbmQgY2hhcmFjdGVycyB0byBhIFZpbSBzZXJ2ZXIKQEAgLTc0MCw4ICs4MDcsMTQgQEAKIAlmb3JlZ3JvdW5kKCkJCW1vdmUgdGhlIFZpbSB3aW5kb3cgdG8gdGhlIGZvcmVncm91bmQKIAlyZW1vdGVfZm9yZWdyb3VuZCgpCW1vdmUgdGhlIFZpbSBzZXJ2ZXIgd2luZG93IHRvIHRoZSBmb3JlZ3JvdW5kCiAKK1dpbmRvdyBzaXplIGFuZCBwb3NpdGlvbjoKKwl3aW5oZWlnaHQoKQkJZ2V0IGhlaWdodCBvZiBhIHNwZWNpZmljIHdpbmRvdworCXdpbndpZHRoKCkJCWdldCB3aWR0aCBvZiBhIHNwZWNpZmljIHdpbmRvdworCXdpbnJlc3RjbWQoKQkJcmV0dXJuIGNvbW1hbmQgdG8gcmVzdG9yZSB3aW5kb3cgc2l6ZXMKKwl3aW5zYXZldmlldygpCQlnZXQgdmlldyBvZiBjdXJyZW50IHdpbmRvdworCXdpbnJlc3R2aWV3KCkJCXJlc3RvcmUgc2F2ZWQgdmlldyBvZiBjdXJyZW50IHdpbmRvdworCiBWYXJpb3VzOgotCXR5cGUoKQkJCXR5cGUgb2YgYSB2YXJpYWJsZQogCW1vZGUoKQkJCWdldCBjdXJyZW50IGVkaXRpbmcgbW9kZQogCXZpc3VhbG1vZGUoKQkJbGFzdCB2aXN1YWwgbW9kZSB1c2VkCiAJaGFzbWFwdG8oKQkJY2hlY2sgaWYgYSBtYXBwaW5nIGV4aXN0cwpAQCAtNzQ5LDIzICs4MjIsMjAgQEAKIAltYXBhcmcoKQkJZ2V0IHJocyBvZiBhIG1hcHBpbmcKIAlleGlzdHMoKQkJY2hlY2sgaWYgYSB2YXJpYWJsZSwgZnVuY3Rpb24sIGV0Yy4gZXhpc3RzCiAJaGFzKCkJCQljaGVjayBpZiBhIGZlYXR1cmUgaXMgc3VwcG9ydGVkIGluIFZpbQotCWdldHFmbGlzdCgpCQlsaXN0IG9mIHF1aWNrZml4IGVycm9ycwotCWdldGxvY2xpc3QoKQkJbGlzdCBvZiBsb2NhdGlvbiBsaXN0IGl0ZW1zCisJY2hhbmdlbnIoKQkJcmV0dXJuIG51bWJlciBvZiBtb3N0IHJlY2VudCBjaGFuZ2UKIAljc2NvcGVfY29ubmVjdGlvbigpCWNoZWNrIGlmIGEgY3Njb3BlIGNvbm5lY3Rpb24gZXhpc3RzCiAJZGlkX2ZpbGV0eXBlKCkJCWNoZWNrIGlmIGEgRmlsZVR5cGUgYXV0b2NvbW1hbmQgd2FzIHVzZWQKIAlldmVudGhhbmRsZXIoKQkJY2hlY2sgaWYgaW52b2tlZCBieSBhbiBldmVudCBoYW5kbGVyCi0JZ2V0d2lucG9zeCgpCQlYIHBvc2l0aW9uIG9mIHRoZSBHVUkgVmltIHdpbmRvdwotCWdldHdpbnBvc3koKQkJWSBwb3NpdGlvbiBvZiB0aGUgR1VJIFZpbSB3aW5kb3cKLQl3aW5oZWlnaHQoKQkJZ2V0IGhlaWdodCBvZiBhIHNwZWNpZmljIHdpbmRvdwotCXdpbndpZHRoKCkJCWdldCB3aWR0aCBvZiBhIHNwZWNpZmljIHdpbmRvdworCiAJbGliY2FsbCgpCQljYWxsIGEgZnVuY3Rpb24gaW4gYW4gZXh0ZXJuYWwgbGlicmFyeQogCWxpYmNhbGxucigpCQlpZGVtLCByZXR1cm5pbmcgYSBudW1iZXIKKwogCWdldHJlZygpCQlnZXQgY29udGVudHMgb2YgYSByZWdpc3RlcgogCWdldHJlZ3R5cGUoKQkJZ2V0IHR5cGUgb2YgYSByZWdpc3RlcgotCXNldHFmbGlzdCgpCQltb2RpZnkgYSBxdWlja2ZpeCBsaXN0Ci0Jc2V0bG9jbGlzdCgpCQltb2RpZnkgYSBsb2NhdGlvbiBsaXN0CiAJc2V0cmVnKCkJCXNldCBjb250ZW50cyBhbmQgdHlwZSBvZiBhIHJlZ2lzdGVyCisKIAl0YWdsaXN0KCkJCWdldCBsaXN0IG9mIG1hdGNoaW5nIHRhZ3MKKwl0YWdmaWxlcygpCQlnZXQgYSBsaXN0IG9mIHRhZ3MgZmlsZXMKIAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqNDEuNyoJRGVmaW5pbmcgYSBmdW5jdGlvbgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0IGIvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CmluZGV4IDFjYWM4ODEuLjhiZDlkYWQgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dAorKysgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKQEAgLTEsNCArMSw0IEBACi0qdmVyc2lvbjcudHh0KiAgRm9yIFZpbSB2ZXJzaW9uIDcuMGMuICBMYXN0IGNoYW5nZTogMjAwNiBBcHIgMDcKKyp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYy4gIExhc3QgY2hhbmdlOiAyMDA2IEFwciAwOQogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMjQxMSw0ICsyNDExLDcgQEAKIAogZ2xvYignL2Rpci9cJEFCQy8qJykgZGlkbid0IHdvcmsuCiAKK1doZW4gdXNpbmcgc2V2ZXJhbCB0YWIgcGFnZXMgYW5kIGNoYW5naW5nICdjbWRoZWlnaHQnIHRoZSBkaXNwbGF5IGNvdWxkIGJlY29tZQorbWVzc2VkIHVwLiAgTm93IHN0b3JlIHRoZSB2YWx1ZSBvZiAnY21kaGVpZ2h0JyBzZXBhcmF0ZWx5IGZvciBlYWNoIHRhYiBwYWdlLgorCiAgdmltOnR3PTc4OnRzPTg6ZnQ9aGVscDpub3JsOgo=