ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggMDM0Mjc2Yi4uYzAwMzFlOCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgRmViIDAyCisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDUgRmViIDA1CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0xNDc2LDYgKzE0NzYsOCBAQAogCQkJCU51bWJlcglwb3NpdGlvbiB3aGVyZSB7cGF0fSBtYXRjaGVzIGluIHtleHByfQogbWF0Y2hlbmQoIHtleHByfSwge3BhdH1bLCB7c3RhcnR9Wywge2NvdW50fV1dKQogCQkJCU51bWJlcglwb3NpdGlvbiB3aGVyZSB7cGF0fSBlbmRzIGluIHtleHByfQorbWF0Y2hsaXN0KCB7ZXhwcn0sIHtwYXR9Wywge3N0YXJ0fVssIHtjb3VudH1dXSkKKwkJCQlMaXN0CW1hdGNoIGFuZCBzdWJtYXRjaGVzIG9mIHtwYXR9IGluIHtleHByfQogbWF0Y2hzdHIoIHtleHByfSwge3BhdH1bLCB7c3RhcnR9Wywge2NvdW50fV1dKQogCQkJCVN0cmluZwl7Y291bnR9J3RoIG1hdGNoIG9mIHtwYXR9IGluIHtleHByfQogbWF4KHtsaXN0fSkJCQlOdW1iZXIJbWF4aW11bSB2YWx1ZSBvZiBpdGVtcyBpbiB7bGlzdH0KQEAgLTE0ODYsNiArMTQ4OCw3IEBACiBwcmV2bm9uYmxhbmsoIHtsbnVtfSkJCU51bWJlcglsaW5lIG5yIG9mIG5vbi1ibGFuayBsaW5lIDw9IHtsbnVtfQogcmFuZ2UoIHtleHByfSBbLCB7bWF4fSBbLCB7c3RyaWRlfV1dKQogCQkJCUxpc3QJaXRlbXMgZnJvbSB7ZXhwcn0gdG8ge21heH0KK3JlYWRmaWxlKHtmbmFtZX0gWywge2JpbmFyeX1dKQlMaXN0CWdldCBsaXN0IG9mIGxpbmVzIGZyb20gZmlsZSB7Zm5hbWV9CiByZW1vdGVfZXhwcigge3NlcnZlcn0sIHtzdHJpbmd9IFssIHtpZHZhcn1dKQogCQkJCVN0cmluZwlzZW5kIGV4cHJlc3Npb24KIHJlbW90ZV9mb3JlZ3JvdW5kKCB7c2VydmVyfSkJTnVtYmVyCWJyaW5nIFZpbSBzZXJ2ZXIgdG8gdGhlIGZvcmVncm91bmQKQEAgLTE1NDgsNiArMTU1MSw4IEBACiB3aW5ucigpCQkJCU51bWJlcgludW1iZXIgb2YgY3VycmVudCB3aW5kb3cKIHdpbnJlc3RjbWQoKQkJCVN0cmluZwlyZXR1cm5zIGNvbW1hbmQgdG8gcmVzdG9yZSB3aW5kb3cgc2l6ZXMKIHdpbndpZHRoKCB7bnJ9KQkJCU51bWJlcgl3aWR0aCBvZiB3aW5kb3cge25yfQord3JpdGVmaWxlKHtsaXN0fSwge2ZuYW1lfSBbLCB7YmluYXJ5fV0pCisJCQkJTnVtYmVyCXdyaXRlIGxpc3Qgb2YgbGluZXMgdG8gZmlsZSB7Zm5hbWV9CiAKIGFkZCh7bGlzdH0sIHtleHByfSkJCQkJCSphZGQoKSoKIAkJQXBwZW5kIHRoZSBpdGVtIHtleHByfSB0byBMaXN0IHtsaXN0fS4gIFJldHVybnMgdGhlIHJlc3VsdGluZwpAQCAtMjAwNCw4ICsyMDA5LDEyIEBACiAJCQkJCW9yIHVzZXIgZGVmaW5lZCBmdW5jdGlvbiAoc2VlCiAJCQkJCXx1c2VyLWZ1bmN0aW9uc3wpLgogCQkJdmFybmFtZQkJaW50ZXJuYWwgdmFyaWFibGUgKHNlZQotCQkJCQl8aW50ZXJuYWwtdmFyaWFibGVzfCkuICBEb2VzIG5vdCB3b3JrCi0JCQkJCWZvciB8Y3VybHktYnJhY2VzLW5hbWVzfC4KKwkJCQkJfGludGVybmFsLXZhcmlhYmxlc3wpLiAgQWxzbyB3b3JrcworCQkJCQlmb3IgfGN1cmx5LWJyYWNlcy1uYW1lc3wsIERpY3Rpb25hcnkKKwkJCQkJZW50cmllcywgTGlzdCBpdGVtcywgZXRjLiAgQmV3YXJlIHRoYXQKKwkJCQkJdGhpcyBtYXkgY2F1c2UgZnVuY3Rpb25zIHRvIGJlCisJCQkJCWludm9rZWQgY2F1c2UgYW4gZXJyb3IgbWVzc2FnZSBmb3IgYW4KKwkJCQkJaW52YWxpZCBleHByZXNzaW9uLgogCQkJOmNtZG5hbWUJRXggY29tbWFuZDogYnVpbHQtaW4gY29tbWFuZCwgdXNlcgogCQkJCQljb21tYW5kIG9yIGNvbW1hbmQgbW9kaWZpZXIgfDpjb21tYW5kfC4KIAkJCQkJUmV0dXJuczoKQEAgLTI5MzksOSArMjk0OCwxMCBAQAogCQkJOmNhbGwgbWFwKG15bGlzdCwgJyI+ICIgLiB2OnZhbCAuICIgPCInKQogPAkJVGhpcyBwdXRzICI+ICIgYmVmb3JlIGFuZCAiIDwiIGFmdGVyIGVhY2ggaXRlbSBpbiAibXlsaXN0Ii4KIAotCQlOb3RlIHRoYXQge3N0cmluZ30gaXMgdGhlIHJlc3VsdCBvZiBleHByZXNzaW9uIGFuZCBpcyB0aGVuCisJCU5vdGUgdGhhdCB7c3RyaW5nfSBpcyB0aGUgcmVzdWx0IG9mIGFuIGV4cHJlc3Npb24gYW5kIGlzIHRoZW4KIAkJdXNlZCBhcyBhbiBleHByZXNzaW9uIGFnYWluLiAgT2Z0ZW4gaXQgaXMgZ29vZCB0byB1c2UgYQotCQl8bGl0ZXJhbC1zdHJpbmd8IHRvIGF2b2lkIGhhdmluZyB0byBkb3VibGUgYmFja3NsYXNoZXMuCisJCXxsaXRlcmFsLXN0cmluZ3wgdG8gYXZvaWQgaGF2aW5nIHRvIGRvdWJsZSBiYWNrc2xhc2hlcy4gIFlvdQorCQlzdGlsbCBoYXZlIHRvIGRvdWJsZSAnIHF1b3RlcwogCiAJCVRoZSBvcGVyYXRpb24gaXMgZG9uZSBpbi1wbGFjZS4gIElmIHlvdSB3YW50IGEgTGlzdCBvcgogCQlEaWN0aW9uYXJ5IHRvIHJlbWFpbiB1bm1vZGlmaWVkIG1ha2UgYSBjb3B5IGZpcnN0OiA+CkBAIC0zMDUwLDYgKzMwNjAsMTMgQEAKIDwJCXJlc3VsdCBpcyAiLTEiLgogCQlXaGVuIHtleHByfSBpcyBhIExpc3QgdGhlIHJlc3VsdCBpcyBlcXVhbCB0byBtYXRjaCgpLgogCittYXRjaGxpc3Qoe2V4cHJ9LCB7cGF0fVssIHtzdGFydH1bLCB7Y291bnR9XV0pCQkJKm1hdGNobGlzdCgpKgorCQlTYW1lIGFzIG1hdGNoKCksIGJ1dCByZXR1cm4gYSBMaXN0LiAgVGhlIGZpcnN0IGl0ZW0gaW4gdGhlCisJCWxpc3QgaXMgdGhlIG1hdGNoZWQgc3RyaW5nLCBzYW1lIGFzIHdoYXQgbWF0Y2hzdHIoKSB3b3VsZAorCQlyZXR1cm4uICBGb2xsb3dpbmcgaXRlbXMgYXJlIHN1Ym1hdGNoZXMsIGxpa2UgIlwxIiwgIlwyIiwgZXRjLgorCQlpbiB8OnN1YnN0aXR1dGV8LgorCQlXaGVuIHRoZXJlIGlzIG5vIG1hdGNoIGFuIGVtcHR5IGxpc3QgaXMgcmV0dXJuZWQuCisKIG1hdGNoc3RyKHtleHByfSwge3BhdH1bLCB7c3RhcnR9Wywge2NvdW50fV1dKQkJCSptYXRjaHN0cigpKgogCQlTYW1lIGFzIG1hdGNoKCksIGJ1dCByZXR1cm4gdGhlIG1hdGNoZWQgc3RyaW5nLiAgRXhhbXBsZTogPgogCQkJOmVjaG8gbWF0Y2hzdHIoInRlc3RpbmciLCAiaW5nIikKQEAgLTMxMzMsNiArMzE1MCwyNyBAQAogCQkJcmFuZ2UoMiwgOSwgMykJCSIgWzIsIDUsIDhdCiAJCQlyYW5nZSgyLCAtMiwgLTEpIAkiIFsyLCAxLCAwLCAtMSwgLTJdCiA8CisJCQkJCQkJKnJlYWRmaWxlKCkqCityZWFkZmlsZSh7Zm5hbWV9IFssIHtiaW5hcnl9XSkKKwkJUmVhZCBmaWxlIHtmbmFtZX0gYW5kIHJldHVybiBhIExpc3QsIGVhY2ggbGluZSBvZiB0aGUgZmlsZSBhcworCQlhbiBpdGVtLiAgTGluZXMgYnJva2VuIGF0IE5MIGNoYXJhY3RlcnMuICBNYWNpbnRvc2ggZmlsZXMKKwkJc2VwYXJhdGVkIHdpdGggQ1Igd2lsbCByZXN1bHQgaW4gYSBzaW5nbGUgbG9uZyBsaW5lICh1bmxlc3MgYQorCQlOTCBhcHBlYXJzIHNvbWV3aGVyZSkuCisJCVdoZW4ge2JpbmFyeX0gaXMgZXF1YWwgdG8gImIiIGJpbmFyeSBtb2RlIGlzIHVzZWQ6CisJCS0gV2hlbiB0aGUgbGFzdCBsaW5lIGVuZHMgaW4gYSBOTCBhbiBleHRyYSBlbXB0eSBsaXN0IGl0ZW0gaXMKKwkJICBhZGRlZC4KKwkJLSBObyBDUiBjaGFyYWN0ZXJzIGFyZSByZW1vdmVkLgorCQlPdGhlcndpc2U6CisJCS0gQ1IgY2hhcmFjdGVycyB0aGF0IGFwcGVhciBiZWZvcmUgYSBOTCBhcmUgcmVtb3ZlZC4KKwkJLSBXaGV0aGVyIHRoZSBsYXN0IGxpbmUgZW5kcyBpbiBhIE5MIG9yIG5vdCBkb2VzIG5vdCBtYXR0ZXIuCisJCUFsbCBOVUwgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgd2l0aCBhIE5MIGNoYXJhY3Rlci4KKwkJTm90ZSB0aGF0IHRoZSB3aG9sZSBmaWxlIGlzIHJlYWQgaW50byBtZW1vcnkgYW5kIHRoZXJlIGlzIG5vCisJCXJlY29nbml0aW9uIG9mIGVuY29kaW5nLiAgUmVhZCBhIGZpbGUgaW50byBhIGJ1ZmZlciBpZiB5b3UKKwkJbmVlZCB0by4KKwkJV2hlbiB0aGUgZmlsZSBjYW4ndCBiZSBvcGVuZWQgYW4gZXJyb3IgbWVzc2FnZSBpcyBnaXZlbiBhbmQKKwkJdGhlIHJlc3VsdCBpcyBhbiBlbXB0eSBsaXN0LgorCQlBbHNvIHNlZSB8d3JpdGVmaWxlKCl8LgorCiAJCQkJCQkJKnJlbW90ZV9leHByKCkqICpFNDQ5KgogcmVtb3RlX2V4cHIoe3NlcnZlcn0sIHtzdHJpbmd9IFssIHtpZHZhcn1dKQogCQlTZW5kIHRoZSB7c3RyaW5nfSB0byB7c2VydmVyfS4gIFRoZSBzdHJpbmcgaXMgc2VudCBhcyBhbgpAQCAtMzg3OSw2ICszOTE3LDI2IEBACiAgIDogIGV4ZSAibm9ybWFsIDUwXDxDLVc+fCIKICAgOmVuZGlmCiA8CisJCQkJCQkJKndyaXRlZmlsZSgpKgord3JpdGVmaWxlKHtsaXN0fSwge2ZuYW1lfSBbLCB7YmluYXJ5fV0pCisJCVdyaXRlIExpc3Qge2xpc3R9IHRvIGZpbGUge2ZuYW1lfS4gIEVhY2ggbGlzdCBpdGVtIGlzCisJCXNlcGFyYXRlZCB3aXRoIGEgTkwuICBFYWNoIGxpc3QgaXRlbSBtdXN0IGJlIGEgU3RyaW5nIG9yCisJCU51bWJlci4KKwkJV2hlbiB7YmluYXJ5fSBpcyBlcXVhbCB0byAiYiIgYmluYXJ5IG1vZGUgaXMgdXNlZDogVGhlcmUgd2lsbAorCQlub3QgYmUgYSBOTCBhZnRlciB0aGUgbGFzdCBsaXN0IGl0ZW0uICBBbiBlbXB0eSBpdGVtIGF0IHRoZQorCQllbmQgZG9lcyBjYXVzZSB0aGUgbGFzdCBsaW5lIGluIHRoZSBmaWxlIHRvIGVuZCBpbiBhIE5MLgorCQlBbGwgTkwgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWQgd2l0aCBhIE5VTCBjaGFyYWN0ZXIuCisJCUluc2VydGluZyBDUiBjaGFyYWN0ZXJzIG5lZWRzIHRvIGJlIGRvbmUgYmVmb3JlIHBhc3Npbmcge2xpc3R9CisJCXRvIHdyaXRlZmlsZSgpLgorCQlBbiBleGlzdGluZyBmaWxlIGlzIG92ZXJ3cml0dGVuLCBpZiBwb3NzaWJsZS4KKwkJV2hlbiB0aGUgd3JpdGUgZmFpbHMgLTEgaXMgcmV0dXJuZWQsIG90aGVyd2lzZSAwLiAgVGhlcmUgaXMgYW4KKwkJZXJyb3IgbWVzc2FnZSBpZiB0aGUgZmlsZSBjYW4ndCBiZSBjcmVhdGVkIG9yIHdoZW4gd3JpdGluZworCQlmYWlscy4KKwkJQWxzbyBzZWUgfHJlYWRmaWxlKCl8LgorCQlUbyBjb3B5IGEgZmlsZSBieXRlIGZvciBieXRlOiA+CisJCQk6bGV0IGZsID0gcmVhZGZpbGUoImZvbyIsICJiIikKKwkJCTpjYWxsIHdyaXRlZmlsZShmbCwgImZvb2NvcHkiLCAiYiIpCis8CiAKIAkJCQkJCQkqZmVhdHVyZS1saXN0KgogVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIGZlYXR1cmVzOgpAQCAtNDU5Nyw3ICs0NjU1LDcgQEAKIDpmb3Ige3Zhcn0gaW4ge2xpc3R9CQkJCQkqOmZvciogKkU2OTAqICpFNzMyKgogOmVuZGZvW3JdCQkJCQkJKjplbmRmbyogKjplbmRmb3IqCiAJCQlSZXBlYXQgdGhlIGNvbW1hbmRzIGJldHdlZW4gIjpmb3IiIGFuZCAiOmVuZGZvciIgZm9yCi0JCQllYWNoIGl0ZW0gaW4ge2xpc3R9LiAgdmFyaWFibGUge3Zhcn0gaXMgc2V0IHRvIHRoZQorCQkJZWFjaCBpdGVtIGluIHtsaXN0fS4gIFZhcmlhYmxlIHt2YXJ9IGlzIHNldCB0byB0aGUKIAkJCXZhbHVlIG9mIGVhY2ggaXRlbS4KIAkJCVdoZW4gYW4gZXJyb3IgaXMgZGV0ZWN0ZWQgZm9yIGEgY29tbWFuZCBpbnNpZGUgdGhlCiAJCQlsb29wLCBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSAiZW5kZm9yIi4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3MgYi9ydW50aW1lL2RvYy90YWdzCmluZGV4IGM4ZTc2NWYuLjhhZDY0NTMgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhZ3MKKysrIGIvcnVudGltZS9kb2MvdGFncwpAQCAtNTkzNyw2ICs1OTM3LDcgQEAKIHJlYWQtbWVzc2FnZXMJaW5zZXJ0LnR4dAkvKnJlYWQtbWVzc2FnZXMqCiByZWFkLW9ubHktc2hhcmUJZWRpdGluZy50eHQJLypyZWFkLW9ubHktc2hhcmUqCiByZWFkLXN0ZGluCXZlcnNpb241LnR4dAkvKnJlYWQtc3RkaW4qCityZWFkZmlsZSgpCWV2YWwudHh0CS8qcmVhZGZpbGUoKSoKIHJlYWRsaW5lLXN5bnRheAlzeW50YXgudHh0CS8qcmVhZGxpbmUtc3ludGF4KgogcmVhZGxpbmUudmltCXN5bnRheC50eHQJLypyZWFkbGluZS52aW0qCiByZWNvcmRpbmcJcmVwZWF0LnR4dAkvKnJlY29yZGluZyoKQEAgLTY4NjMsNiArNjg2NCw3IEBACiB3cml0ZS1wbHVnaW4JdXNyXzQxLnR4dAkvKndyaXRlLXBsdWdpbioKIHdyaXRlLXF1aXQJZWRpdGluZy50eHQJLyp3cml0ZS1xdWl0Kgogd3JpdGUtcmVhZG9ubHkJZWRpdGluZy50eHQJLyp3cml0ZS1yZWFkb25seSoKK3dyaXRlZmlsZSgpCWV2YWwudHh0CS8qd3JpdGVmaWxlKCkqCiB3cml0aW5nCWVkaXRpbmcudHh0CS8qd3JpdGluZyoKIHd3dwlpbnRyby50eHQJLyp3d3cqCiB4CWNoYW5nZS50eHQJLyp4KgpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdXNyXzQxLnR4dCBiL3J1bnRpbWUvZG9jL3Vzcl80MS50eHQKaW5kZXggNGE3ZjNkMS4uZDkwYzI0YSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdXNyXzQxLnR4dAorKysgYi9ydW50aW1lL2RvYy91c3JfNDEudHh0CkBAIC0xLDQgKzEsNCBAQAotKnVzcl80MS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEphbiAyNQorKnVzcl80MS50eHQqCUZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA1IEZlYiAwNAogCiAJCSAgICAgVklNIFVTRVIgTUFOVUFMIC0gYnkgQnJhbSBNb29sZW5hYXIKIApAQCAtNjUzLDYgKzY1Myw4IEBACiAJcmVuYW1lKCkJCXJlbmFtZSBhIGZpbGUKIAlzeXN0ZW0oKQkJZ2V0IHRoZSByZXN1bHQgb2YgYSBzaGVsbCBjb21tYW5kCiAJaG9zdG5hbWUoKQkJbmFtZSBvZiB0aGUgc3lzdGVtCisJcmVhZGZpbGUoKQkJcmVhZCBhIGZpbGUgaW50byBhIExpc3Qgb2YgbGluZXMKKwl3cml0ZWZpbGUoKQkJd3JpdGUgYSBMaXN0IG9mIGxpbmVzIGludG8gYSBmaWxlCiAKIEJ1ZmZlcnMsIHdpbmRvd3MgYW5kIHRoZSBhcmd1bWVudCBsaXN0OgogCWFyZ2MoKQkJCW51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBhcmd1bWVudCBsaXN0CmRpZmYgLS1naXQgYS9ydW50aW1lL21lbnUudmltIGIvcnVudGltZS9tZW51LnZpbQppbmRleCBlODkyOTFiLi42ZjMwMDE4IDEwMDY0NAotLS0gYS9ydW50aW1lL21lbnUudmltCisrKyBiL3J1bnRpbWUvbWVudS52aW0KQEAgLTIsNyArMiw3IEBACiAiIFlvdSBjYW4gYWxzbyB1c2UgdGhpcyBhcyBhIHN0YXJ0IGZvciB5b3VyIG93biBzZXQgb2YgbWVudXMuCiAiCiAiIE1haW50YWluZXI6CUJyYW0gTW9vbGVuYWFyIDxCcmFtQHZpbS5vcmc+Ci0iIExhc3QgQ2hhbmdlOgkyMDA1IEphbiAzMAorIiBMYXN0IENoYW5nZToJMjAwNSBGZWIgMDMKIAogIiBOb3RlIHRoYXQgIjphbiIgKHNob3J0IGZvciAiOmFub3JlbWVudSIpIGlzIG9mdGVuIHVzZWQgdG8gbWFrZSBhIG1lbnUgd29yawogIiBpbiBhbGwgbW9kZXMgYW5kIGF2b2lkIHNpZGUgZWZmZWN0cyBmcm9tIG1hcHBpbmdzIGRlZmluZWQgYnkgdGhlIHVzZXIuCkBAIC0xMzYsNyArMTM2LDcgQEAKICIgdGhlIHJpZ2h0IHBvc2l0aW9uLCBhbHNvIGZvciAiZ2kiLgogIiBOb3RlOiB0aGUgc2FtZSBzdHVmZiBhcHBlYXJzIGluIG1zd2luLnZpbS4KIGlmIGhhcygidmlydHVhbGVkaXQiKQotICBubm9yZW1hcCA8c2lsZW50PiA8c2NyaXB0PiA8U0lEPlBhc3RlIDpjYWxsIDxTSUQ+UGFzdGUoKTxDUj4KKyAgbGV0IHM6cGFzdGVfY21kID0gIjpjYWxsIDxTSUQ+UGFzdGUoKTxDUj4iCiAgIGZ1bmMhIDxTSUQ+UGFzdGUoKQogICAgIGxldCBvdmUgPSAmdmUKICAgICBzZXQgdmU9YWxsCkBAIC0xNTIsMTYgKzE1MiwxNyBAQAogICAgIGxldCAmdmUgPSBvdmUKICAgZW5kZnVuYwogZWxzZQotICBubm9yZW1hcCA8c2lsZW50PiA8c2NyaXB0PiA8U0lEPlBhc3RlICI9QCsuJ3h5JzxDUj5nUEZ4Il8yeAorICBsZXQgczpwYXN0ZV9jbWQgPSAiXCI9QCsuJ3h5JzxDUj5nUEZ4XCJfMngiCiBlbmRpZgogCi0iIFVzZSBtYXBzIGZvciBpdGVtcyB0aGF0IGFyZSBwcmVzZW50IGJvdGggaW4gRWRpdCwgUG9wdXAgYW5kIFRvb2xiYXIgbWVudS4KKyIgRGVmaW5lIHRoZSBzdHJpbmcgdG8gdXNlIGZvciBpdGVtcyB0aGF0IGFyZSBwcmVzZW50IGJvdGggaW4gRWRpdCwgUG9wdXAgYW5kCisiIFRvb2xiYXIgbWVudS4KIGlmIGhhcygidmlydHVhbGVkaXQiKQotICB2bm9yZW1hcCA8c2NyaXB0PiA8U0lEPnZQYXN0ZQkiLWM8RXNjPjxTSUQ+UGFzdGUKLSAgaW5vcmVtYXAgPHNjcmlwdD4gPFNJRD5pUGFzdGUJPEVzYz48U0lEPlBhc3RlZ2kKKyAgbGV0IHM6cGFzdGVfdl9jbWQgPSAnIi1jPEVzYz4nIC4gczpwYXN0ZV9jbWQKKyAgbGV0IHM6cGFzdGVfaV9jbWQgPSAnPEVzYz4nIC4gczpwYXN0ZV9jbWQgLiAnZ2knCiBlbHNlCi0gIHZub3JlbWFwIDxzY3JpcHQ+IDxTSUQ+dlBhc3RlCSItYzxFc2M+Z2l4PEVzYz48U0lEPlBhc3RlIl94Ci0gIGlub3JlbWFwIDxzY3JpcHQ+IDxTSUQ+aVBhc3RlCXg8RXNjPjxTSUQ+UGFzdGUiX3MKKyAgbGV0IHM6cGFzdGVfdl9jbWQgPSAnIi1jPEVzYz5naXg8RXNjPicgLiBzOnBhc3RlX2NtZCAuICciX3gnCisgIGxldCBzOnBhc3RlX2lfY21kID0gJ3g8RXNjPicgLiBzOnBhc3RlX2NtZCAuICciX3MnCiBlbmRpZgogCiBmdW5jISA8U0lEPlNlbGVjdEFsbCgpCkBAIC0xODAsOCArMTgxLDggQEAKIGNub3JlbWVudSAyMC4zNTAgJkVkaXQuJkNvcHk8VGFiPiIreQkJPEMtWT4KIG5ub3JlbWVudSAyMC4zNjAgJkVkaXQuJlBhc3RlPFRhYj4iK2dQCQkiK2dQCiBjbm9yZW1lbnUJICZFZGl0LiZQYXN0ZTxUYWI+IitnUAkJPEMtUj4rCi12bm9yZW1lbnUgPHNjcmlwdD4gJkVkaXQuJlBhc3RlPFRhYj4iK2dQCTxTSUQ+dlBhc3RlCi1pbm9yZW1lbnUgPHNjcmlwdD4gJkVkaXQuJlBhc3RlPFRhYj4iK2dQCTxTSUQ+aVBhc3RlCitleGUgJ3Zub3JlbWVudSA8c2NyaXB0PiAmRWRpdC4mUGFzdGU8VGFiPiIrZ1AJJyAuIHM6cGFzdGVfdl9jbWQKK2V4ZSAnaW5vcmVtZW51IDxzY3JpcHQ+ICZFZGl0LiZQYXN0ZTxUYWI+IitnUAknIC4gczpwYXN0ZV9pX2NtZAogbm5vcmVtZW51IDIwLjM3MCAmRWRpdC5QdXRcICZCZWZvcmU8VGFiPltwCVtwCiBpbm9yZW1lbnUJICZFZGl0LlB1dFwgJkJlZm9yZTxUYWI+W3AJPEMtTz5bcAogbm5vcmVtZW51IDIwLjM4MCAmRWRpdC5QdXRcICZBZnRlcjxUYWI+XXAJXXAKQEAgLTc4MSw4ICs3ODIsOCBAQAogY25vcmVtZW51IDEuMzAgUG9wVXAuJkNvcHkJCTxDLVk+CiBubm9yZW1lbnUgMS40MCBQb3BVcC4mUGFzdGUJCSIrZ1AKIGNub3JlbWVudSAxLjQwIFBvcFVwLiZQYXN0ZQkJPEMtUj4rCi12bm9yZW1lbnUgPHNjcmlwdD4gMS40MCBQb3BVcC4mUGFzdGUJPFNJRD52UGFzdGUKLWlub3JlbWVudSA8c2NyaXB0PiAxLjQwIFBvcFVwLiZQYXN0ZQk8U0lEPmlQYXN0ZQorZXhlICd2bm9yZW1lbnUgPHNjcmlwdD4gMS40MCBQb3BVcC4mUGFzdGUJJyAuIHM6cGFzdGVfdl9jbWQKK2V4ZSAnaW5vcmVtZW51IDxzY3JpcHQ+IDEuNDAgUG9wVXAuJlBhc3RlCScgLiBzOnBhc3RlX2lfY21kCiB2bm9yZW1lbnUgMS41MCBQb3BVcC4mRGVsZXRlCQl4CiBhbiAxLjU1IFBvcFVwLi1TRVAyLQkJCTxOb3A+CiB2bm9yZW1lbnUgMS42MCBQb3BVcC5TZWxlY3RcIEJsb2Nrd2lzZQk8Qy1WPgpAQCAtODQ4LDggKzg0OSw4IEBACiAgIGNub3JlbWVudSAxLjgwIFRvb2xCYXIuQ29weQkJPEMtWT4KICAgbm5vcmVtZW51IDEuOTAgVG9vbEJhci5QYXN0ZQkJIitnUAogICBjbm9yZW1lbnUJIFRvb2xCYXIuUGFzdGUJCTxDLVI+KwotICB2bm9yZW1lbnUgPHNjcmlwdD4JIFRvb2xCYXIuUGFzdGUJPFNJRD52UGFzdGUKLSAgaW5vcmVtZW51IDxzY3JpcHQ+CSBUb29sQmFyLlBhc3RlCTxTSUQ+aVBhc3RlCisgIGV4ZSAndm5vcmVtZW51IDxzY3JpcHQ+CSBUb29sQmFyLlBhc3RlCScgLiBzOnBhc3RlX3ZfY21kCisgIGV4ZSAnaW5vcmVtZW51IDxzY3JpcHQ+CSBUb29sQmFyLlBhc3RlCScgLiBzOnBhc3RlX2lfY21kCiAKICAgaWYgIWhhcygiZ3VpX2F0aGVuYSIpCiAgICAgYW4gMS45NSAgIFRvb2xCYXIuLXNlcDMtCQk8Tm9wPgpAQCAtOTk2LDYgKzk5Nyw4IEBACiAKIGVuZGlmICIgIWV4aXN0cygiZGlkX2luc3RhbGxfc3ludGF4X21lbnUiKQogCit1bmxldCEgczpwYXN0ZV9pX2NtZCBzOnBhc3RlX3ZfY21kIHM6cGFzdGVfY21kCisKICIgUmVzdG9yZSB0aGUgcHJldmlvdXMgdmFsdWUgb2YgJ2Nwb3B0aW9ucycuCiBsZXQgJmNwbyA9IHM6Y3BvX3NhdmUKIHVubGV0IHM6Y3BvX3NhdmUKZGlmZiAtLWdpdCBhL3J1bnRpbWUvdG9vbHMvdmltc3BlbGwuc2ggYi9ydW50aW1lL3Rvb2xzL3ZpbXNwZWxsLnNoCmluZGV4IDQyMDcyMjIuLmI0MDViN2EgMTAwNzU1Ci0tLSBhL3J1bnRpbWUvdG9vbHMvdmltc3BlbGwuc2gKKysrIGIvcnVudGltZS90b29scy92aW1zcGVsbC5zaApAQCAtMTEsMTEgKzExLDI0IEBACiAjCiAjIE5laWwgU2NoZW1lbmF1ZXIgPG5hc2NoZW1lQHVjYWxnYXJ5LmNhPgogIyBNYXJjaCAxOTk5CisjCisjIFNhZmUgbWV0aG9kIGZvciB0aGUgdGVtcCBmaWxlIGJ5IEphdmllciBGZXJu4W5kZXotU2FuZ3Vpbm9fUGXxYQogCiBJTkZJTEU9JDEKLU9VVEZJTEU9L3RtcC92aW1zcGVsbC4kJAotIyBpZiB5b3UgaGF2ZSAidGVtcGZpbGUiLCB1c2UgdGhlIGZvbGxvd2luZyBsaW5lCi0jT1VURklMRT1gdGVtcGZpbGVgCit0bXA9IiR7VE1QRElSLS90bXB9IgorT1VURklMRT1gbWt0ZW1wIC10IHZpbXNwZWxsWFhYWFhYIHx8IHRlbXBmaWxlIC1wIHZpbXNwZWxsIHx8IGVjaG8gbm9uZWAKKyMgSWYgdGhlIHN0YW5kYXJkIGNvbW1hbmRzIGZhaWxlZCB0aGVuIGNyZWF0ZSB0aGUgZmlsZQorIyBzaW5jZSB3ZSBjYW5ub3QgY3JlYXRlIGEgZGlyZWN0b3J5ICh3ZSBjYW5ub3QgcmVtb3ZlIGl0IG9uIGV4aXQpCisjIGNyZWF0ZSBhIGZpbGUgaW4gdGhlIHNhZmVzdCB3YXkgcG9zc2libGUuCitpZiB0ZXN0ICIkT1VURklMRSIgPSBub25lOyB0aGVuCisgICAgICAgIE9VVEZJTEU9JHRtcC92aW1zcGVsbCQkCisJWyAtZSAkT1VURklMRSBdICYmIHsgZWNobyAiQ2Fubm90IHVzZSB0ZW1wb3JhcnkgZmlsZSAkT1VURklMRSwgaXQgYWxyZWFkeSBleGlzdHMhOyBleGl0IDEgOyB9IAorICAgICAgICAodW1hc2sgMDc3OyB0b3VjaCAkT1VURklMRSkKK2ZpCisjIE5vdGUgdGhlIGNvcHkgb2Ygdmltc3BlbGwgY2Fubm90IGJlIGRlbGV0ZWQgb24gZXhpdCBzaW5jZSBpdCBpcworIyB1c2VkIGJ5IHZpbSwgb3RoZXJ3aXNlIGl0IHNob3VsZCBkbyB0aGlzOgorIyB0cmFwICJybSAtZiAkT1VURklMRSIgMCAxIDIgMyA5IDExIDEzIDE1CisKIAogIwogIyBsb2NhbCBzcGVsbGluZ3MKZGlmZiAtLWdpdCBhL3NyYy9ndWlfdzMyLmMgYi9zcmMvZ3VpX3czMi5jCmluZGV4IGEyOWRlOWQuLjIzZmViNmYgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfdzMyLmMKKysrIGIvc3JjL2d1aV93MzIuYwpAQCAtMjUzMiw2ICsyNTMyLDcgQEAKICAgICBpbnQJCW1zZ2hlaWdodDsKICAgICBjaGFyX3UJKnBzdGFydDsKICAgICBjaGFyX3UJKnBlbmQ7CisgICAgY2hhcl91CSpsYXN0X3doaXRlOwogICAgIGNoYXJfdQkqdGJ1ZmZlcjsKICAgICBSRUNUCXJlY3Q7CiAgICAgSFdORAlod25kOwpAQCAtMjU1MCw2ICsyNTUxLDggQEAKICAgICBMT0dGT05UCWxmU3lzbWVudTsKICAgICBpbnQJCXVzZV9sZlN5c21lbnUgPSBGQUxTRTsKICNlbmRpZgorICAgIGdhcnJheV9UCWdhOworICAgIGludAkJbDsKIAogI2lmbmRlZiBOT19DT05TT0xFCiAgICAgLyogRG9uJ3Qgb3V0cHV0IGFueXRoaW5nIGluIHNpbGVudCBtb2RlICgiZXggLXMiKSAqLwpAQCAtMjU3MSw3ICsyNTc0LDggQEAKIAogICAgIC8qIGFsbG9jYXRlIHNvbWUgbWVtb3J5IGZvciBkaWFsb2cgdGVtcGxhdGUgKi8KICAgICAvKiBUT0RPIHNob3VsZCBjb21wdXRlIHRoaXMgcmVhbGx5ICovCi0gICAgcGRsZ3RlbXBsYXRlID0gcCA9IChQV09SRClMb2NhbEFsbG9jKExQVFIsIERMR19BTExPQ19TSVpFKTsKKyAgICBwZGxndGVtcGxhdGUgPSBwID0gKFBXT1JEKUxvY2FsQWxsb2MoTFBUUiwKKwkJCQkJICAgIERMR19BTExPQ19TSVpFICsgU1RSTEVOKG1lc3NhZ2UpKTsKIAogICAgIGlmIChwID09IE5VTEwpCiAJcmV0dXJuIC0xOwpAQCAtMjY0MSw0MyArMjY0NSw5MiBAQAogICAgIG1pbkJ1dHRvbldpZHRoID0gR2V0VGV4dFdpZHRoKGhkYywgIkNhbmNlbCIsIDYpOwogCiAgICAgLyogTWF4aW11bSB3aWR0aCBvZiBhIGRpYWxvZywgaWYgcG9zc2libGUgKi8KLSAgICBHZXRXaW5kb3dSZWN0KHNfaHduZCwgJnJlY3QpOwotICAgIG1heERpYWxvZ1dpZHRoID0gcmVjdC5yaWdodCAtIHJlY3QubGVmdAotCQkgICAgIC0gR2V0U3lzdGVtTWV0cmljcyhTTV9DWEZSQU1FKSAqIDI7Ci0gICAgaWYgKG1heERpYWxvZ1dpZHRoIDwgRExHX01JTl9NQVhfV0lEVEgpCi0JbWF4RGlhbG9nV2lkdGggPSBETEdfTUlOX01BWF9XSURUSDsKKyAgICBpZiAoc19od25kID09IE5VTEwpCisgICAgeworCVJFQ1QJd29ya2FyZWFfcmVjdDsKIAotICAgIG1heERpYWxvZ0hlaWdodCA9IHJlY3QuYm90dG9tIC0gcmVjdC50b3AgLSBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYRlJBTUUpICogMjsKLSAgICBpZiAobWF4RGlhbG9nSGVpZ2h0IDwgRExHX01JTl9NQVhfSEVJR0hUKQotCW1heERpYWxvZ0hlaWdodCA9IERMR19NSU5fTUFYX0hFSUdIVDsKKwkvKiBXZSBkb24ndCBoYXZlIGEgd2luZG93LCB1c2UgdGhlIGRlc2t0aXAgYXJlYS4gKi8KKwlnZXRfd29ya19hcmVhKCZ3b3JrYXJlYV9yZWN0KTsKKwltYXhEaWFsb2dXaWR0aCA9IHdvcmthcmVhX3JlY3QucmlnaHQgLSB3b3JrYXJlYV9yZWN0LmxlZnQgLSAxMDA7CisJaWYgKG1heERpYWxvZ1dpZHRoID4gNjAwKQorCSAgICBtYXhEaWFsb2dXaWR0aCA9IDYwMDsKKwltYXhEaWFsb2dIZWlnaHQgPSB3b3JrYXJlYV9yZWN0LmJvdHRvbSAtIHdvcmthcmVhX3JlY3QudG9wIC0gMTAwOworICAgIH0KKyAgICBlbHNlCisgICAgeworCS8qIFVzZSBvdXIgb3duIHdpbmRvdyBmb3IgdGhlIHNpemUsIHVubGVzcyBpdCdzIHZlcnkgc21hbGwuICovCisJR2V0V2luZG93UmVjdChzX2h3bmQsICZyZWN0KTsKKwltYXhEaWFsb2dXaWR0aCA9IHJlY3QucmlnaHQgLSByZWN0LmxlZnQKKwkJCQkJICAgLSBHZXRTeXN0ZW1NZXRyaWNzKFNNX0NYRlJBTUUpICogMjsKKwlpZiAobWF4RGlhbG9nV2lkdGggPCBETEdfTUlOX01BWF9XSURUSCkKKwkgICAgbWF4RGlhbG9nV2lkdGggPSBETEdfTUlOX01BWF9XSURUSDsKIAotICAgIC8qIFNldCBkbGd3aWR0aCB0byB3aWR0aCBvZiBtZXNzYWdlICovCisJbWF4RGlhbG9nSGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0LnRvcAorCQkJCQkgICAtIEdldFN5c3RlbU1ldHJpY3MoU01fQ1hGUkFNRSkgKiAyOworCWlmIChtYXhEaWFsb2dIZWlnaHQgPCBETEdfTUlOX01BWF9IRUlHSFQpCisJICAgIG1heERpYWxvZ0hlaWdodCA9IERMR19NSU5fTUFYX0hFSUdIVDsKKyAgICB9CisKKyAgICAvKiBTZXQgZGxnd2lkdGggdG8gd2lkdGggb2YgbWVzc2FnZS4KKyAgICAgKiBDb3B5IHRoZSBtZXNzYWdlIGludG8gImdhIiwgY2hhbmdpbmcgTkwgdG8gQ1ItTkwgYW5kIGluc2VydGluZyBsaW5lCisgICAgICogYnJlYWtzIHdoZXJlIG5lZWRlZC4gKi8KICAgICBwc3RhcnQgPSBtZXNzYWdlOwogICAgIG1lc3NhZ2VXaWR0aCA9IDA7Ci0gICAgbXNnaGVpZ2h0ID0gZm9udEhlaWdodDsKKyAgICBtc2doZWlnaHQgPSAwOworICAgIGdhX2luaXQyKCZnYSwgc2l6ZW9mKGNoYXIpLCA1MDApOwogICAgIGRvCiAgICAgewotCXBlbmQgPSB2aW1fc3RyY2hyKHBzdGFydCwgRExHX0JVVFRPTl9TRVApOwotCWlmIChwZW5kID09IE5VTEwpCi0JICAgIHBlbmQgPSBwc3RhcnQgKyBTVFJMRU4ocHN0YXJ0KTsJLyogTGFzdCBsaW5lIG9mIG1lc3NhZ2UuICovCi0JbXNnaGVpZ2h0ICs9IGZvbnRIZWlnaHQ7Ci0JdGV4dFdpZHRoID0gR2V0VGV4dFdpZHRoKGhkYywgcHN0YXJ0LCAoaW50KShwZW5kIC0gcHN0YXJ0KSk7Ci0JaWYgKHRleHRXaWR0aCA+PSBtYXhEaWFsb2dXaWR0aCkKKwltc2doZWlnaHQgKz0gZm9udEhlaWdodDsgICAgLyogYXQgbGVhc3Qgb25lIGxpbmUgKi8KKworCS8qIE5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0byBicmVhayB0aGUgc3RyaW5nLiAgVGhlIHN5c3RlbSBkb2VzIGl0CisJICogYXQgYSB3b3JkIGJvdW5kYXJ5LCB3aGljaCB3b3VsZCBtZWFuIHdlIGNhbid0IGNvbXB1dGUgdGhlIG51bWJlciBvZgorCSAqIHdyYXBwZWQgbGluZXMuICovCisJdGV4dFdpZHRoID0gMDsKKwlsYXN0X3doaXRlID0gTlVMTDsKKwlmb3IgKHBlbmQgPSBwc3RhcnQ7ICpwZW5kICE9IE5VTCAmJiAqcGVuZCAhPSAnXG4nOyApCiAJewotCSAgICAvKiBMaW5lIHdpbGwgd3JhcC4gIFRoaXMgZG9lc24ndCB3b3JrIGNvcnJlY3RseSwgYmVjYXVzZSB0aGUgd3JhcAotCSAgICAgKiBoYXBwZW5zIGF0IGEgd29yZCBib3VuZGFyeSEgKi8KLQkgICAgbWVzc2FnZVdpZHRoID0gbWF4RGlhbG9nV2lkdGg7Ci0JICAgIHdoaWxlICh0ZXh0V2lkdGggPj0gbWF4RGlhbG9nV2lkdGgpCisjaWZkZWYgRkVBVF9NQllURQorCSAgICBsID0gbWJfcHRyMmxlbl9jaGVjayhwZW5kKTsKKyNlbHNlCisJICAgIGwgPSAxOworI2VuZGlmCisJICAgIGlmIChsID09IDEgJiYgdmltX2lzd2hpdGUoKnBlbmQpCisJCQkJCSYmIHRleHRXaWR0aCA+IG1heERpYWxvZ1dpZHRoICogMyAvIDQpCisJCWxhc3Rfd2hpdGUgPSBwZW5kOworCSAgICB0ZXh0V2lkdGggKz0gR2V0VGV4dFdpZHRoKGhkYywgcGVuZCwgbCk7CisJICAgIGlmICh0ZXh0V2lkdGggPj0gbWF4RGlhbG9nV2lkdGgpCiAJICAgIHsKKwkJLyogTGluZSB3aWxsIHdyYXAuICovCisJCW1lc3NhZ2VXaWR0aCA9IG1heERpYWxvZ1dpZHRoOwogCQltc2doZWlnaHQgKz0gZm9udEhlaWdodDsKLQkJdGV4dFdpZHRoIC09IG1heERpYWxvZ1dpZHRoOworCQl0ZXh0V2lkdGggPSAwOworCisJCWlmIChsYXN0X3doaXRlICE9IE5VTEwpCisJCXsKKwkJICAgIC8qIGJyZWFrIHRoZSBsaW5lIGp1c3QgYWZ0ZXIgYSBzcGFjZSAqLworCQkgICAgZ2EuZ2FfbGVuIC09IHBlbmQgLSAobGFzdF93aGl0ZSArIDEpOworCQkgICAgcGVuZCA9IGxhc3Rfd2hpdGUgKyAxOworCQkgICAgbGFzdF93aGl0ZSA9IE5VTEw7CisJCX0KKwkJZ2FfYXBwZW5kKCZnYSwgJ1xyJyk7CisJCWdhX2FwcGVuZCgmZ2EsICdcbicpOworCQljb250aW51ZTsKIAkgICAgfQorCisJICAgIHdoaWxlICgtLWwgPj0gMCkKKwkJZ2FfYXBwZW5kKCZnYSwgKnBlbmQrKyk7CiAJfQotCWVsc2UgaWYgKHRleHRXaWR0aCA+IG1lc3NhZ2VXaWR0aCkKKwlpZiAodGV4dFdpZHRoID4gbWVzc2FnZVdpZHRoKQogCSAgICBtZXNzYWdlV2lkdGggPSB0ZXh0V2lkdGg7CisKKwlnYV9hcHBlbmQoJmdhLCAnXHInKTsKKwlnYV9hcHBlbmQoJmdhLCAnXG4nKTsKIAlwc3RhcnQgPSBwZW5kICsgMTsKICAgICB9IHdoaWxlICgqcGVuZCAhPSBOVUwpOwogCisgICAgaWYgKGdhLmdhX2RhdGEgIT0gTlVMTCkKKwltZXNzYWdlID0gZ2EuZ2FfZGF0YTsKKwogICAgIG1lc3NhZ2VXaWR0aCArPSAxMDsJCS8qIHJvdW5kb2ZmIHNwYWNlICovCiAKICAgICAvKiBSZXN0cmljdCB0aGUgc2l6ZSB0byBhIG1heGltdW0uICBDYXVzZXMgYSBzY3JvbGxiYXIgdG8gc2hvdyB1cC4gKi8KQEAgLTI2ODUsNiArMjczOCw3IEBACiAgICAgewogCW1zZ2hlaWdodCA9IG1heERpYWxvZ0hlaWdodDsKIAlzY3JvbGxfZmxhZyA9IFdTX1ZTQ1JPTEw7CisJbWVzc2FnZVdpZHRoICs9IEdldFN5c3RlbU1ldHJpY3MoU01fQ1hWU0NST0xMKTsKICAgICB9CiAKICAgICAvKiBBZGQgd2lkdGggb2YgaWNvbiB0byBkbGd3aWR0aCwgYW5kIHNvbWUgc3BhY2UgKi8KQEAgLTI5MzMsNiArMjk4Nyw3IEBACiAgICAgdmltX2ZyZWUodGJ1ZmZlcik7CiAgICAgdmltX2ZyZWUoYnV0dG9uV2lkdGhzKTsKICAgICB2aW1fZnJlZShidXR0b25Qb3NpdGlvbnMpOworICAgIHZpbV9mcmVlKGdhLmdhX2RhdGEpOwogCiAgICAgLyogRm9jdXMgYmFjayB0byBvdXIgd2luZG93IChmb3Igd2hlbiBNREkgaXMgdXNlZCkuICovCiAgICAgKHZvaWQpU2V0Rm9jdXMoc19od25kKTsKZGlmZiAtLWdpdCBhL3NyYy9ndWlfeG1lYncuYyBiL3NyYy9ndWlfeG1lYncuYwppbmRleCA2NDhlZWIzLi5hYTIyYTg4IDEwMDY0NAotLS0gYS9zcmMvZ3VpX3htZWJ3LmMKKysrIGIvc3JjL2d1aV94bWVidy5jCkBAIC0xOCwxMyArMTgsMTIgQEAKICAqLwogCiAvKgotICogRW5oYW5jZWQgTW90aWYgUHVzaEJ1dHRvbiB3aWRnZXQgd2l0aCBtb3ZlIG92ZXIgYmVoYXZpb3VyLgorICogRW5oYW5jZWQgTW90aWYgUHVzaEJ1dHRvbiB3aWRnZXQgd2l0aCBtb3ZlIG92ZXIgYmVoYXZpb3IuCiAgKi8KIAotI2luY2x1ZGUgPGN0eXBlLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxhdXRvL2NvbmZpZy5oPgorI2luY2x1ZGUgInZpbS5oIgorCisjaWZkZWYgRkVBVF9UT09MQkFSCiAKICNpbmNsdWRlIDxYbS9YbVAuaD4KICNpbmNsdWRlIDxYbS9EcmF3UC5oPgpAQCAtMTQwNywzICsxNDA2LDUgQEAKICAgICAoKih4bVB1c2hCdXR0b25DbGFzc1JlYy5wcmltaXRpdmVfY2xhc3MuYm9yZGVyX3VuaGlnaGxpZ2h0KSkodyk7CiAgICAgZHJhd19waXhtYXAoZWIsIE5VTEwsIE5VTEwpOwogfQorCisjZW5kaWYgLyogRkVBVF9UT09MQkFSICovCmRpZmYgLS1naXQgYS9zcmMvb3NfdW5peC5jIGIvc3JjL29zX3VuaXguYwppbmRleCBhYmZjZGNjLi40ZGQzOGNlIDEwMDY0NAotLS0gYS9zcmMvb3NfdW5peC5jCisrKyBiL3NyYy9vc191bml4LmMKQEAgLTE5NzQsNiArMTk3NCw3IEBACiAKIC8qCiAgKiBSZXR1cm4gVFJVRSBpZiAibmFtZSIgbG9va3MgbGlrZSBzb21lIHh0ZXJtIG5hbWUuCisgKiBTZWlpY2hpIFNhdG8gbWVudGlvbmVkIHRoYXQgIm1sdGVybSIgd29ya3MgbGlrZSB4dGVybS4KICAqLwogICAgIGludAogdmltX2lzX3h0ZXJtKG5hbWUpCkBAIC0xOTg0LDYgKzE5ODUsNyBAQAogICAgIHJldHVybiAoU1RSTklDTVAobmFtZSwgInh0ZXJtIiwgNSkgPT0gMAogCQl8fCBTVFJOSUNNUChuYW1lLCAibnh0ZXJtIiwgNikgPT0gMAogCQl8fCBTVFJOSUNNUChuYW1lLCAia3Rlcm0iLCA1KSA9PSAwCisJCXx8IFNUUk5JQ01QKG5hbWUsICJtbHRlcm0iLCA2KSA9PSAwCiAJCXx8IFNUUk5JQ01QKG5hbWUsICJyeHZ0IiwgNCkgPT0gMAogCQl8fCBTVFJDTVAobmFtZSwgImJ1aWx0aW5feHRlcm0iKSA9PSAwKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0ZGlyL3Rlc3Q0OS52aW0gYi9zcmMvdGVzdGRpci90ZXN0NDkudmltCmluZGV4IDk3ZGI2NmQuLjQ2YTI5ZmYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0ZGlyL3Rlc3Q0OS52aW0KKysrIGIvc3JjL3Rlc3RkaXIvdGVzdDQ5LnZpbQpAQCAtMSw2ICsxLDYgQEAKICIgVmltIHNjcmlwdCBsYW5ndWFnZSB0ZXN0cwogIiBBdXRob3I6CVNlcnZhdGl1cyBCcmFuZHQgPFNlcnZhdGl1cy5CcmFuZHRAZnVqaXRzdS1zaWVtZW5zLmNvbT4KLSIgTGFzdCBDaGFuZ2U6CTIwMDUgSmFuIDE4CisiIExhc3QgQ2hhbmdlOgkyMDA1IEZlYiAwMwogCiAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBUZXN0IGVudmlyb25tZW50CQkJCQkJCSAgICB7e3sxCmRpZmYgLS1naXQgYS9zcmMvdmVyc2lvbi5oIGIvc3JjL3ZlcnNpb24uaAppbmRleCA1YjJlN2QzLi4xODdiYWJiIDEwMDY0NAotLS0gYS9zcmMvdmVyc2lvbi5oCisrKyBiL3NyYy92ZXJzaW9uLmgKQEAgLTM2LDUgKzM2LDUgQEAKICNkZWZpbmUgVklNX1ZFUlNJT05fTk9ET1QJInZpbTcwYWEiCiAjZGVmaW5lIFZJTV9WRVJTSU9OX1NIT1JUCSI3LjBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fTUVESVVNCSI3LjBhYSBBTFBIQSIKLSNkZWZpbmUgVklNX1ZFUlNJT05fTE9ORwkiVklNIC0gVmkgSU1wcm92ZWQgNy4wYWEgQUxQSEEgKDIwMDUgRmViIDIpIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IEZlYiAyLCBjb21waWxlZCAiCisjZGVmaW5lIFZJTV9WRVJTSU9OX0xPTkcJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA1IEZlYiA1KSIKKyNkZWZpbmUgVklNX1ZFUlNJT05fTE9OR19EQVRFCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNSBGZWIgNSwgY29tcGlsZWQgIgo=