ZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvbmV0cndGaWxlSGFuZGxlcnMudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRyd0ZpbGVIYW5kbGVycy52aW0KaW5kZXggYmFkNmQ4MS4uY2Q2ZGU2NiAxMDA2NDQKLS0tIGEvcnVudGltZS9hdXRvbG9hZC9uZXRyd0ZpbGVIYW5kbGVycy52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC9uZXRyd0ZpbGVIYW5kbGVycy52aW0KQEAgLTEsOCArMSw4IEBACiAiIG5ldHJ3RmlsZUhhbmRsZXJzOiBjb250YWlucyB2YXJpb3VzIGV4dGVuc2lvbi1iYXNlZCBmaWxlIGhhbmRsZXJzIGZvcgogIiAgICAgICAgICAgICAgICAgICAgbmV0cncncyBicm93c2VycycgeCBjb21tYW5kICgiZVhlY3V0ZSBsYXVuY2hlciIpCiAiIEF1dGhvcjoJQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCi0iIERhdGU6CQlGZWIgMTUsIDIwMDYKLSIgVmVyc2lvbjoJOGEJQVNUUk8tT05MWQorIiBEYXRlOgkJTWFyIDIyLCAyMDA2CisiIFZlcnNpb246CTgKICIgQ29weXJpZ2h0OiAgICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwNSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4ge3t7MQogIiAgICAgICAgICAgICAgIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQgdG8gdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgY29kZSwKICIgICAgICAgICAgICAgICB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodApAQCAtMjIsNyArMjIsNyBAQAogZW5kaWYKIGxldCBzOmtlZXBjcG89ICZjcG8KIHNldCBjcG8mdmltCi1sZXQgZzpsb2FkZWRfbmV0cndGaWxlSGFuZGxlcnM9ICJ2OGEiCitsZXQgZzpsb2FkZWRfbmV0cndGaWxlSGFuZGxlcnM9ICJ2OCIKIAogIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICIgbmV0cndGaWxlSGFuZGxlcnMjSW52b2tlOiB7e3syCmRpZmYgLS1naXQgYS9ydW50aW1lL2F1dG9sb2FkL25ldHJ3U2V0dGluZ3MudmltIGIvcnVudGltZS9hdXRvbG9hZC9uZXRyd1NldHRpbmdzLnZpbQppbmRleCBlOGQ2YmQyLi5mNTFhMzI4IDEwMDY0NAotLS0gYS9ydW50aW1lL2F1dG9sb2FkL25ldHJ3U2V0dGluZ3MudmltCisrKyBiL3J1bnRpbWUvYXV0b2xvYWQvbmV0cndTZXR0aW5ncy52aW0KQEAgLTEsNyArMSw3IEBACiAiIG5ldHJ3U2V0dGluZ3MudmltOiBtYWtlcyBuZXRydyBzZXR0aW5ncyBzaW1wbGVyCi0iIERhdGU6CQlKYW4gMjYsIDIwMDYKKyIgRGF0ZToJCU1hciAyMiwgMjAwNgogIiBNYWludGFpbmVyOglDaGFybGVzIEUgQ2FtcGJlbGwsIEpyIDxkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkgZG90IGJpej4KLSIgVmVyc2lvbjoJNmEJQVNUUk8tT05MWQorIiBWZXJzaW9uOgk2CiAiIENvcHlyaWdodDogICAgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDUgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuIHt7ezEKICIgICAgICAgICAgICAgICBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkIHRvIHVzZSBhbmQgZGlzdHJpYnV0ZSB0aGlzIGNvZGUsCiAiICAgICAgICAgICAgICAgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQKQEAgLTE5LDcgKzE5LDcgQEAKIGlmIGV4aXN0cygiZzpsb2FkZWRfbmV0cndTZXR0aW5ncyIpIHx8ICZjcAogICBmaW5pc2gKIGVuZGlmCi1sZXQgZzpsb2FkZWRfbmV0cndTZXR0aW5ncyAgPSAidjZhIgorbGV0IGc6bG9hZGVkX25ldHJ3U2V0dGluZ3MgID0gInY2IgogCiAiIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIiBOZXRyd1NldHRpbmdzOiB7e3sxCkBAIC01NiwxMCArNTYsMTAgQEAKICAgIGxldCBnOm5ldHJ3X2lnbm9yZW5ldHJjPSAwCiAgIGVuZGlmCiAKLSAgcHV0ID0nKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKLSAgcHV0ID0nKyBOZXRyd1NldHRpbmdzOiAgYnkgQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuJwotICBwdXQgPScrICBQcmVzcyA/IHdpdGggY3Vyc29yIGF0b3AgYW55IGxpbmUgZm9yIGhlbHAgICcKLSAgcHV0ID0nKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKKyAgcHV0ID0nKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nCisgIHB1dCA9JysgIE5ldHJ3U2V0dGluZ3M6ICBieSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4nCisgIHB1dCA9JysgUHJlc3MgPEYxPiB3aXRoIGN1cnNvciBhdG9wIGFueSBsaW5lIGZvciBoZWxwJworICBwdXQgPScrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScKICAgbGV0IHM6bmV0cndfc2V0dGluZ3Nfc3RvcD0gbGluZSgiLiIpCiAKICAgcHV0ID0nJwpAQCAtMTMyLDcgKzEzMiw3IEBACiAKICAgc2V0IG5vbW9kCiAKLSAgbWFwIDxidWZmZXI+IDxzaWxlbnQ+ID8gOmNhbGwgTmV0cndTZXR0aW5nSGVscCgpPGNyPgorICBtYXAgPGJ1ZmZlcj4gPHNpbGVudD4gPEYxPiA6Y2FsbCBOZXRyd1NldHRpbmdIZWxwKCk8Y3I+CiAgIGxldCB0bXBmaWxlPSB0ZW1wbmFtZSgpCiAgIGV4ZSAnYXUgQnVmV3JpdGVDbWQJTmV0cndcIFNldHRpbmdzCXNpbGVudCB3ISAnLnRtcGZpbGUuJ3xzbyAnLnRtcGZpbGUuJ3xjYWxsIGRlbGV0ZSgiJy50bXBmaWxlLiciKXxzZXQgbm9tb2QnCiBlbmRmdW4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvYXV0b2xvYWQvemlwLnZpbSBiL3J1bnRpbWUvYXV0b2xvYWQvemlwLnZpbQppbmRleCBiZTM5NzQwLi4yMjQzZWE4IDEwMDY0NAotLS0gYS9ydW50aW1lL2F1dG9sb2FkL3ppcC52aW0KKysrIGIvcnVudGltZS9hdXRvbG9hZC96aXAudmltCkBAIC0xLDcgKzEsNyBAQAogIiB6aXAudmltOiBIYW5kbGVzIGJyb3dzaW5nIHppcGZpbGVzCiAiICAgICAgICAgICAgQVVUT0xPQUQgUE9SVElPTgotIiBEYXRlOgkJCURlYyAyMSwgMjAwNQotIiBWZXJzaW9uOgkJNgorIiBEYXRlOgkJCU1hciAyMiwgMjAwNgorIiBWZXJzaW9uOgkJNwogIiBNYWludGFpbmVyOglDaGFybGVzIEUgQ2FtcGJlbGwsIEpyIDxkcmNoaXBOT1NQQU0gYXQgY2FtcGJlbGxmYW1pbHkgZG90IGJpej4KICIgTGljZW5zZToJCVZpbSBMaWNlbnNlICAoc2VlIHZpbSdzIDpoZWxwIGxpY2Vuc2UpCiAiIENvcHlyaWdodDogICAgQ29weXJpZ2h0IChDKSAyMDA1IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLiB7e3sxCkBAIC0yMiw3ICsyMiw4IEBACiAgZmluaXNoCiBlbmRpZgogCi1sZXQgZzpsb2FkZWRfemlwPSAidjYiCitsZXQgZzpsb2FkZWRfemlwICAgICA9ICJ2NyIKK2xldCBzOnppcGZpbGVfZXNjYXBlID0gJyA/JjtcJwogCiAiIC0tLS0tLS0tLS0tLS0tLS0KICIgIEZ1bmN0aW9uczoge3t7MQpAQCAtNTMsNiArNTQsNyBAQAogIiAgIGNhbGwgRHJldCgiemlwI0Jyb3dzZSA6IGZpbGU8Ii5hOnppcGZpbGUuIj4gbm90IHJlYWRhYmxlIikKICAgIHJldHVybgogICBlbmRpZgorIiAgY2FsbCBEZWNobygicGFzc2VkIHNhbml0eSBjaGVja3MiKQogICBpZiAmbWEgIT0gMQogICAgc2V0IG1hCiAgIGVuZGlmCkBAIC03Myw3ICs3NSw4IEBACiAgIDBkCiAgICQKIAotICBleGUgInNpbGVudCByISB1bnppcCAtbCAiLmE6emlwZmlsZQorICBjYWxsIERlY2hvKCJleGUgc2lsZW50IHIhIHVuemlwIC1sICciLmVzY2FwZShhOnppcGZpbGUsczp6aXBmaWxlX2VzY2FwZSkuIiciKQorICBleGUgInNpbGVudCByISB1bnppcCAtbCAnIi5lc2NhcGUoYTp6aXBmaWxlLHM6emlwZmlsZV9lc2NhcGUpLiInIgogICAkZAogICBzaWxlbnQgNCwkdi9eXHNcK1xkXCtcc1x7MCw1fVxkL2QKICAgc2lsZW50ICA0LCRzL15cJSguKlwpXHNcK1woXFNcKS9cMS8KQEAgLTExMSwxMiArMTE0LDE1IEBACiAKICAgIiBnZXQgemlwZmlsZSB0byB0aGUgbmV3LXdpbmRvdwogICBsZXQgemlwZmlsZT0gc3Vic3RpdHV0ZSh3OnppcGZpbGUsJy56aXAkJywnJywnZScpCi0gIGxldCBjdXJmaWxlPSBleHBhbmQoIiUiKQorICBsZXQgY3VyZmlsZT0gZXNjYXBlKGV4cGFuZCgiJSIpLHM6emlwZmlsZV9lc2NhcGUpCisiICBjYWxsIERlY2hvKCJ6aXBmaWxlPCIuemlwZmlsZS4iPiIpCisiICBjYWxsIERlY2hvKCJjdXJmaWxlPCIuY3VyZmlsZS4iPiIpCiAKICAgbmV3CiAgIHdpbmNtZCBfCiAgIGxldCBzOnppcGZpbGVfe3dpbm5yKCl9PSBjdXJmaWxlCi0gIGV4ZSAiZSB6aXBmaWxlOiIuemlwZmlsZS4nOicuZm5hbWUKKyIgIGNhbGwgRGVjaG8oImV4ZSBlIHppcGZpbGU6Ii5lc2NhcGUoemlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKS4nOicuZm5hbWUpCisgIGV4ZSAiZSB6aXBmaWxlOiIuZXNjYXBlKHppcGZpbGUsczp6aXBmaWxlX2VzY2FwZSkuJzonLmZuYW1lCiAgIGZpbGV0eXBlIGRldGVjdAogCiAgIGxldCAmcmVwb3J0PSByZXBrZWVwCkBAIC0xMzAsMTEgKzEzNiwxMiBAQAogICBsZXQgcmVwa2VlcD0gJnJlcG9ydAogICBzZXQgcmVwb3J0PTEwCiAKLSAgbGV0IHppcGZpbGUgPSBzdWJzdGl0dXRlKGE6Zm5hbWUsJ3ppcGZpbGU6XCguXHstfVwpOi4qJCcsJ1wxJywnJykKLSAgbGV0IGZuYW1lICAgPSBzdWJzdGl0dXRlKGE6Zm5hbWUsJ3ppcGZpbGU6Llx7LX06XCguKlwpJCcsJ1wxJywnJykKKyAgbGV0IHppcGZpbGUgPSBzdWJzdGl0dXRlKGE6Zm5hbWUsJ3ppcGZpbGU6XCguXHstfVwpOlteXFxdLiokJywnXDEnLCcnKQorICBsZXQgZm5hbWUgICA9IHN1YnN0aXR1dGUoYTpmbmFtZSwnemlwZmlsZTouXHstfTpcKFteXFxdLipcKSQnLCdcMScsJycpCiAiICBjYWxsIERlY2hvKCJ6aXBmaWxlPCIuemlwZmlsZS4iPiBmbmFtZTwiLmZuYW1lLiI+IikKIAotICBleGUgInIhIHVuemlwIC1wICIuemlwZmlsZS4iICIuZm5hbWUKKyIgIGNhbGwgRGVjaG8oImV4ZSByISB1bnppcCAtcCAnIi5lc2NhcGUoemlwZmlsZSxzOnppcGZpbGVfZXNjYXBlKS4iJyAiLmZuYW1lKQorICBleGUgInIhIHVuemlwIC1wICciLmVzY2FwZSh6aXBmaWxlLHM6emlwZmlsZV9lc2NhcGUpLiInICIuZm5hbWUKIAogICAiIGNsZWFudXAKICAgMGQKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2V2YWwudHh0IGIvcnVudGltZS9kb2MvZXZhbC50eHQKaW5kZXggMTgzNDJiOC4uYjI1YTg4ZSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZXZhbC50eHQKKysrIGIvcnVudGltZS9kb2MvZXZhbC50eHQKQEAgLTEsNCArMSw0IEBACi0qZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDIxCisqZXZhbC50eHQqICAgICAgRm9yIFZpbSB2ZXJzaW9uIDcuMGFhLiAgTGFzdCBjaGFuZ2U6IDIwMDYgTWFyIDIyCiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zNTkxLDcgKzM1OTEsNyBAQAogCQlUaGlzIGNhbiBiZSB1c2VkIHRvIHNhdmUgYW5kIHJlc3RvcmUgdGhlIGN1cnNvciBwb3NpdGlvbjogPgogCQkJbGV0IHNhdmVfY3Vyc29yID0gZ2V0cG9zKCIuIikKIAkJCU1vdmVUaGVDdXJzb3JBcm91bmQKLQkJCWNhbGwgc2V0cG9zKHNhdmVfY3Vyc29yKQorCQkJY2FsbCBzZXRwb3MoJy4nLCBzYXZlX2N1cnNvcikKIDwJCUFsc28gc2VlIHxzZXRwb3MoKXwuCiAKIHByZXZub25ibGFuayh7bG51bX0pCQkJCQkqcHJldm5vbmJsYW5rKCkqCkBAIC00MjI1LDYgKzQyMjUsNyBAQAogCQl0aGUgY3VycmVudCBidWZmZXIuICBUbyBzZXQgYSBtYXJrIGluIGFub3RoZXIgYnVmZmVyIHlvdSBjYW4KIAkJdXNlIHRoZSB8YnVmbnIoKXwgZnVuY3Rpb24gdG8gdHVybiBhIGZpbGUgbmFtZSBpbnRvIGEgYnVmZmVyCiAJCW51bWJlci4KKwkJRG9lcyBub3QgY2hhbmdlIHRoZSBqdW1wbGlzdC4KIAogCQkibG51bSIgYW5kICJjb2wiIGFyZSB0aGUgcG9zaXRpb24gaW4gdGhlIGJ1ZmZlci4gIFRoZSBmaXJzdAogCQljb2x1bW4gaXMgMS4gIFVzZSBhIHplcm8gImxudW0iIHRvIGRlbGV0ZSBhIG1hcmsuCkBAIC00OTE4LDggKzQ5MTksOCBAQAogCQlUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhIG1hcHBpbmcgdGhhdCBqdW1wcyBhcm91bmQgaW4gdGhlCiAJCWJ1ZmZlciBhbmQgeW91IHdhbnQgdG8gZ28gYmFjayB0byB0aGUgb3JpZ2luYWwgdmlldy4KIAkJVGhpcyBkb2VzIG5vdCBzYXZlIGZvbGQgaW5mb3JtYXRpb24uICBVc2UgdGhlICdmb2xkZW5hYmxlJwotCQlvcHRpb24gdG8gdGVtcG9yYXJpbHkgc3dpdGNoIG9mIGZvbGRpbmcsIHNvIHRoYXQgZm9sZHMgYXJlIG5vdAotCQlvcGVuZWQgd2hlbiBtb3ZpbmcgYXJvdW5kLgorCQlvcHRpb24gdG8gdGVtcG9yYXJpbHkgc3dpdGNoIG9mZiBmb2xkaW5nLCBzbyB0aGF0IGZvbGRzIGFyZQorCQlub3Qgb3BlbmVkIHdoZW4gbW92aW5nIGFyb3VuZC4KIAkJVGhlIHJldHVybiB2YWx1ZSBpbmNsdWRlczoKIAkJCWxudW0JCWN1cnNvciBsaW5lIG51bWJlcgogCQkJY29sCQljdXJzb3IgY29sdW1uCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy9maWxldHlwZS50eHQgYi9ydW50aW1lL2RvYy9maWxldHlwZS50eHQKaW5kZXggM2E4YjE2NC4uNzc4YjYzOSAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvZmlsZXR5cGUudHh0CisrKyBiL3J1bnRpbWUvZG9jL2ZpbGV0eXBlLnR4dApAQCAtMSw0ICsxLDQgQEAKLSpmaWxldHlwZS50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMDkKKypmaWxldHlwZS50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjEKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTE0OCw2ICsxNDgsNyBAQAogCSouaQkJZzpmaWxldHlwZV9pCXxmdC1wcm9ncmVzcy1zeW50YXh8CiAJKi5wCQlnOmZpbGV0eXBlX3AJfGZ0LXBhc2NhbC1zeW50YXh8CiAJKi5zaAkJZzpiYXNoX2lzX3NoCXxmdC1zaC1zeW50YXh8CisJKi50ZXgJCWc6dGV4X2ZsYXZvcgl8ZnQtdGV4LXBsdWdpbnwKIAogCQkJCQkJCSpmaWxldHlwZS1pZ25vcmUqCiBUbyBhdm9pZCB0aGF0IGNlcnRhaW4gZmlsZXMgYXJlIGJlaW5nIGluc3BlY3RlZCwgdGhlIGc6ZnRfaWdub3JlX3BhdCB2YXJpYWJsZQpAQCAtNTQyLDQgKzU0MywxNiBAQAogZmlsZTogfHNxbC50eHR8LgogCiAKK1RFWAkJCQkJCQkqZnQtdGV4LXBsdWdpbioKKworSWYgdGhlIGZpcnN0IGxpbmUgb2YgYSAqLnRleCBmaWxlIGhhcyB0aGUgZm9ybSA+CisJJSY8Zm9ybWF0PgordGhlbiB0aGlzIGRldGVybWluZWQgdGhlIGZpbGUgdHlwZTogIHBsYWludGV4IChmb3IgcGxhaW4gVGVYKSwgY29udGV4dCAoZm9yCitDb25UZVh0KSwgb3IgdGV4IChmb3IgTGFUZVgpLiAgT3RoZXJ3aXNlLCB0aGUgZmlsZSBpcyBzZWFyY2hlZCBmb3Iga2V5d29yZHMgdG8KK2Nob29zZSBjb250ZXh0IG9yIHRleC4gIElmIG5vIGtleXdvcmRzIGFyZSBmb3VuZCwgaXQgZGVmYXVsdHMgdG8gdGV4LiAgWW91IGNhbgorY2hhbmdlIHRoZSBkZWZhdWx0IGJ5IGRlZmluaW5nIHRoZSB2YXJpYWJsZSBnOnRleF9mbGF2b3IgdG8gdGhlIGZvcm1hdCAobm90Cit0aGUgZmlsZSB0eXBlKSB5b3UgdXNlIG1vc3Q6ICBwbGFpbiBvciBjb250ZXh0IG9yIGxhdGV4LiAgKEN1cnJlbnRseSBubyBvdGhlcgorZm9ybWF0cyBhcmUgcmVjb2duaXplZC4pCisKKwogIHZpbTp0dz03ODp0cz04OmZ0PWhlbHA6bm9ybDoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3F1aWNrZml4LnR4dCBiL3J1bnRpbWUvZG9jL3F1aWNrZml4LnR4dAppbmRleCA0ODE0YTA5Li44MWEzODIyIDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9xdWlja2ZpeC50eHQKKysrIGIvcnVudGltZS9kb2MvcXVpY2tmaXgudHh0CkBAIC0xLDQgKzEsNCBAQAotKnF1aWNrZml4LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyMAorKnF1aWNrZml4LnR4dCogIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyMwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTCAgICBieSBCcmFtIE1vb2xlbmFhcgpAQCAtMTg5LDYgKzE4OSwxNSBAQAogOmxiW3VmZmVyXSBbYnVmbnJdCVNhbWUgYXMgIjpjYnVmZmVyIiwgZXhjZXB0IHRoZSBsb2NhdGlvbiBsaXN0IGZvciB0aGUKIAkJCWN1cnJlbnQgd2luZG93IGlzIHVzZWQgaW5zdGVhZCBvZiB0aGUgcXVpY2tmaXggbGlzdC4KIAorCQkJCQkJKjpjZ2V0YiogKjpjZ2V0YnVmZmVyKgorOmNnZXRiW3VmZmVyXSBbYnVmbnJdCVJlYWQgdGhlIGVycm9yIGxpc3QgZnJvbSB0aGUgY3VycmVudCBidWZmZXIuICBKdXN0CisJCQlsaWtlICI6Y2J1ZmZlciIgYnV0IGRvbid0IGp1bXAgdG8gdGhlIGZpcnN0IGVycm9yLgorCisJCQkJCQkqOmxnZXRiKiAqOmxnZXRidWZmZXIqCis6bGdldGJbdWZmZXJdIFtidWZucl0JU2FtZSBhcyAiOmNnZXRidWZmZXIiLCBleGNlcHQgdGhlIGxvY2F0aW9uIGxpc3QgZm9yCisJCQl0aGUgY3VycmVudCB3aW5kb3cgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBxdWlja2ZpeAorCQkJbGlzdC4KKwogCQkJCQkJCSo6Y2FkZGIqICo6Y2FkZGJ1ZmZlcioKIDpjYWRkYlt1ZmZlcl0gW2J1Zm5yXQlSZWFkIHRoZSBlcnJvciBsaXN0IGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyIGFuZCBhZGQKIAkJCXRoZSBlcnJvcnMgdG8gdGhlIGN1cnJlbnQgcXVpY2tmaXggbGlzdC4gIElmIGEKQEAgLTIzMSw2ICsyNDAsMTQgQEAKIDpsYWRbZGV4cHJdWyFdIHtleHByfQlTYW1lIGFzICI6Y2FkZGV4cHIiLCBleGNlcHQgdGhlIGxvY2F0aW9uIGxpc3QgZm9yIHRoZQogCQkJY3VycmVudCB3aW5kb3cgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBxdWlja2ZpeCBsaXN0LgogCisJCQkJCQkJKjpjZ2V0ZSogKjpjZ2V0ZXhwcioKKzpjZ2V0ZVt4cHJdWyFdIHtleHByfQlDcmVhdGUgYSBxdWlja2ZpeCBsaXN0IHVzaW5nIHRoZSByZXN1bHQgb2Yge2V4cHJ9LgorCQkJSnVzdCBsaWtlICI6Y2V4cHIiLCBidXQgZG9uJ3QganVtcCB0byB0aGUgZmlyc3QgZXJyb3IuCisKKwkJCQkJCQkqOmxnZXRlKiAqOmxnZXRleHByKgorOmxnZXRlW3hwcl1bIV0ge2V4cHJ9CVNhbWUgYXMgIjpjZ2V0ZXhwciIsIGV4Y2VwdCB0aGUgbG9jYXRpb24gbGlzdCBmb3IgdGhlCisJCQljdXJyZW50IHdpbmRvdyBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIHF1aWNrZml4IGxpc3QuCisKIAkJCQkJCQkqOmNsKiAqOmNsaXN0KgogOmNsW2lzdF0gW2Zyb21dIFssIFt0b11dCiAJCQlMaXN0IGFsbCBlcnJvcnMgdGhhdCBhcmUgdmFsaWQgfHF1aWNrZml4LXZhbGlkfC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL3RhZ3MgYi9ydW50aW1lL2RvYy90YWdzCmluZGV4IDRkNmNjNjMuLjVhODA4NmYgMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RhZ3MKKysrIGIvcnVudGltZS9kb2MvdGFncwpAQCAtMTg0OSw2ICsxODQ5LDEwIEBACiA6Y2ZpcglxdWlja2ZpeC50eHQJLyo6Y2ZpcioKIDpjZmlyc3QJcXVpY2tmaXgudHh0CS8qOmNmaXJzdCoKIDpjZwlxdWlja2ZpeC50eHQJLyo6Y2cqCis6Y2dldGIJcXVpY2tmaXgudHh0CS8qOmNnZXRiKgorOmNnZXRidWZmZXIJcXVpY2tmaXgudHh0CS8qOmNnZXRidWZmZXIqCis6Y2dldGUJcXVpY2tmaXgudHh0CS8qOmNnZXRlKgorOmNnZXRleHByCXF1aWNrZml4LnR4dAkvKjpjZ2V0ZXhwcioKIDpjZ2V0ZmlsZQlxdWlja2ZpeC50eHQJLyo6Y2dldGZpbGUqCiA6Y2gJY2hhbmdlLnR4dAkvKjpjaCoKIDpjaGFuZ2UJY2hhbmdlLnR4dAkvKjpjaGFuZ2UqCkBAIC0yMTg4LDYgKzIxOTIsMTAgQEAKIDpsZmlyCXF1aWNrZml4LnR4dAkvKjpsZmlyKgogOmxmaXJzdAlxdWlja2ZpeC50eHQJLyo6bGZpcnN0KgogOmxnCXF1aWNrZml4LnR4dAkvKjpsZyoKKzpsZ2V0YglxdWlja2ZpeC50eHQJLyo6bGdldGIqCis6bGdldGJ1ZmZlcglxdWlja2ZpeC50eHQJLyo6bGdldGJ1ZmZlcioKKzpsZ2V0ZQlxdWlja2ZpeC50eHQJLyo6bGdldGUqCis6bGdldGV4cHIJcXVpY2tmaXgudHh0CS8qOmxnZXRleHByKgogOmxnZXRmaWxlCXF1aWNrZml4LnR4dAkvKjpsZ2V0ZmlsZSoKIDpsZ3IJcXVpY2tmaXgudHh0CS8qOmxncioKIDpsZ3JlcAlxdWlja2ZpeC50eHQJLyo6bGdyZXAqCkBAIC01Mjk5LDYgKzUzMDcsNyBAQAogZnQtc3ludGF4LW9tbmkJaW5zZXJ0LnR4dAkvKmZ0LXN5bnRheC1vbW5pKgogZnQtdGNzaC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXRjc2gtc3ludGF4KgogZnQtdGVybWNhcC1zeW50YXgJc3ludGF4LnR4dAkvKmZ0LXRlcm1jYXAtc3ludGF4KgorZnQtdGV4LXBsdWdpbglmaWxldHlwZS50eHQJLypmdC10ZXgtcGx1Z2luKgogZnQtdGV4LXN5bnRheAlzeW50YXgudHh0CS8qZnQtdGV4LXN5bnRheCoKIGZ0LXRmLXN5bnRheAlzeW50YXgudHh0CS8qZnQtdGYtc3ludGF4KgogZnQtdmItc3ludGF4CXN5bnRheC50eHQJLypmdC12Yi1zeW50YXgqCmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy90b2RvLnR4dCBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CmluZGV4IGZhYWYyYjIuLjIyZDA2MDggMTAwNjQ0Ci0tLSBhL3J1bnRpbWUvZG9jL3RvZG8udHh0CisrKyBiL3J1bnRpbWUvZG9jL3RvZG8udHh0CkBAIC0xLDQgKzEsNCBAQAotKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyMQorKnRvZG8udHh0KiAgICAgIEZvciBWaW0gdmVyc2lvbiA3LjBhYS4gIExhc3QgY2hhbmdlOiAyMDA2IE1hciAyMwogCiAKIAkJICBWSU0gUkVGRVJFTkNFIE1BTlVBTAkgIGJ5IEJyYW0gTW9vbGVuYWFyCkBAIC0zMCwxMSArMzAsOCBAQAogCQkJCQkJCSprbm93bi1idWdzKgogLS0tLS0tLS0tLS0tLS0tLS0tLS0gS25vd24gYnVncyBhbmQgY3VycmVudCB3b3JrIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUhUTUwgaW5kZW50aW5nIGNhbiBiZSBzbG93LCBmaW5kIG91dCB3aHkuCi0KLUFkanVzdCBzcmMvbWFpbi5hYXAgZm9yIGluc3RhbGxpbmcgbWFucGFnZXMgbGlrZSBpbiBNYWtlZmlsZS4KLSAgICBBbmQgZm9yIGdlbmVyYXRpbmcgVmltLmFwcCBmb3IgdGhlIE1hYy4KLSAgICBJbnN0YWxsIHNwZWxsIGZpbGVzIHdpdGggc3JjL21haW4uYWFwLgorSW5jbHVkZSBwYXRjaCBmb3IgcmVjb2duaXppbmcgVGVYIGZsYXZvci4gKEJlbmppIEZpc2hlcikKK0FuZCBuZXcgdGV4LnZpbSBhbmQgcGxhaW50ZXgudmltLgogCiBXaW4zMjogRGVzY3JpYmUgaG93IHRvIGRvIGRlYnVnZ2luZy4gKEdlb3JnZSBSZWlsbHkpCiAKQEAgLTUwLDYgKzQ3LDEyIEBACiBEYXJyZW4gaXMgaW5jbHVkaW5nIHRoZSBwYXRjaCBpbiBjdGFncy4gIFRlc3QgaXQgd2hlbiBpdCdzIHJlYWR5LiAgQ2hhbmdlCiAidHlwZW5hbWUiIHRvICJ0eXBlcmVmIiBpbiBDIGNvbXBsZXRlIGNvZGUuCiAKK0hUTUwgaW5kZW50aW5nIGNhbiBiZSBzbG93LiAgQ2F1c2VkIGJ5IHVzaW5nIHNlYXJjaHBhaXIoKS4gIENhbiBzZWFyY2goKSBiZQordXNlZCBpbnN0ZWFkPworCitjY29tcGxldGU6IHVzZSAic2lnbmF0dXJlOiIgZmllbGQgZnJvbSB0YWdzIGZpbGUgd2hlbiBpdCdzIHByZXNlbnQuCitPciBsaXN0IGFsbCB0aGUgZmllbGRzPyAoTWFydGluIFN0dWJlbnNjaHJvdHQpCisKIEFkZCBtb3JlIHRlc3RzIGZvciBhbGwgbmV3IGZ1bmN0aW9uYWxpdHkgaW4gVmltIDcuICBFc3BlY2lhbGx5IG5ldyBmdW5jdGlvbnMuCiAKIEFkZCB0ZXh0IGluIHVzZXIgbWFudWFsIGZvciB1c2luZyB0aGUgdW5kbyB0cmVlLiAgRXhhbXBsZSB3aXRoIGZpbmRpbmcgdGhlCkBAIC0xMTI5LDcgKzExMzIsNyBAQAogICAgIG1lYW5zIHRoZSBjb21wb3VuZCBmbGFncyBvZiB0aGUgd29yZCBhcmUgbm90IHVzZWQuCiAgICAgSW5zdGVhZCBvZiAiU0ZYIGEgMCBhZGQvRkxBR1MgLiIgd2UgY291bGQgdXNlICJTRlggYSAwIGFkZCAuIC9GTEFHUyIgKG9yCiAgICAgc3VwcG9ydCBib3RoKS4KLS0gICBTdXBwb3J0IGJyZWFrcG9pbnQgY2hhcmFjdGVyILcgMHhiNyBhbmQgaWdub3JlIGl0PyAgTWFrZXMgaXQgcG9zc2libGUgdG8KKy0gICBTdXBwb3J0IGJyZWFrcG9pbnQgY2hhcmFjdGVyID8gMHhiNyBhbmQgaWdub3JlIGl0PyAgTWFrZXMgaXQgcG9zc2libGUgdG8KICAgICB1c2Ugc2FtZSB3b3JkbGlzdCBmb3IgaHlwaGVuYXRpb24uCiAtICAgQ29tcG91bmQgd29yZCBpcyBhY2NlcHRlZCBpZiBuciBvZiB3b3JkcyBpcyA8PSBDT01QT1VORE1BWCBPUiBuciBvZgogICAgIHN5bGxhYmxlcyA8PSBDT01QT1VORFNZTE1BWC4gIFNwZWNpZnkgdXNpbmcgQU5EIGluIHRoZSBhZmZpeCBmaWxlPwpkaWZmIC0tZ2l0IGEvcnVudGltZS9kb2MvdmFyaW91cy50eHQgYi9ydW50aW1lL2RvYy92YXJpb3VzLnR4dAppbmRleCAzOTMwNTQxLi5lM2U4NjU1IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy92YXJpb3VzLnR4dAorKysgYi9ydW50aW1lL2RvYy92YXJpb3VzLnR4dApAQCAtNzU2LDYgKzc1NiwxMyBAQAogZmlsZXMuICBWaW0gd2lsbCBzZWFyY2ggZm9yIGFsbCBoZWxwIGluICJkb2MiIGRpcmVjdG9yaWVzIGluICdydW50aW1lcGF0aCcuCiBUaGlzIGlzIG9ubHkgYXZhaWxhYmxlIHdoZW4gY29tcGlsZWQgd2l0aCB0aGUgfCttdWx0aV9sYW5nfCBmZWF0dXJlLgogCitBdCB0aGlzIG1vbWVudCB0cmFuc2xhdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3I6CisJQ2hpbmVzZSAtIG11bHRpcGxlIGF1dGhvcnMKKwlGcmVuY2ggIC0gdHJhbnNsYXRlZCBieSBEYXZpZCBCbGFuY2hldAorCUl0YWxpYW4gLSB0cmFuc2xhdGVkIGJ5IEFudG9uaW8gQ29sb21ibworCVJ1c3NpYW4gLSB0cmFuc2xhdGVkIGJ5IFZhc3NpbHkgUmFnb3NpbgorU2VlIHRoZSBWaW0gd2Vic2l0ZSB0byBmaW5kIHRoZW06IGh0dHA6Ly93d3cudmltLm9yZy90cmFuc2xhdGlvbnMucGhwCisKIEEgc2V0IG9mIHRyYW5zbGF0ZWQgaGVscCBmaWxlcyBjb25zaXN0cyBvZiB0aGVzZSBmaWxlczoKIAogCWhlbHAuYWJ4CmRpZmYgLS1naXQgYS9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQgYi9ydW50aW1lL2RvYy92ZXJzaW9uNy50eHQKaW5kZXggMDVlZDdkMi4uNzc3ZGZmMCAxMDA2NDQKLS0tIGEvcnVudGltZS9kb2MvdmVyc2lvbjcudHh0CisrKyBiL3J1bnRpbWUvZG9jL3ZlcnNpb243LnR4dApAQCAtMSw0ICsxLDQgQEAKLSp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjEKKyp2ZXJzaW9uNy50eHQqICBGb3IgVmltIHZlcnNpb24gNy4wYWEuICBMYXN0IGNoYW5nZTogMjAwNiBNYXIgMjMKIAogCiAJCSAgVklNIFJFRkVSRU5DRSBNQU5VQUwgICAgYnkgQnJhbSBNb29sZW5hYXIKQEAgLTYwOSwyNCArNjA5LDI3IEBACiAKIHw6dml1c2FnZXwJCUhlbHAgZm9yIFZpIGNvbW1hbmRzIChOdmkgY29tbWFuZCkuCiAKLXw6Y2J1ZmZlcnwJCVJlYWQgZXJyb3IgbGluZXMgZnJvbSBhIGJ1ZmZlci4gKHBhcnRseSBieSBZZWdhcHBhbgotCQkJTGFrc2htYW5hbikKLQogfDpzb3J0fAkJCVNvcnQgbGluZXMgaW4gdGhlIGJ1ZmZlciB3aXRob3V0IGRlcGVuZGluZyBvbiBhbgogCQkJZXh0ZXJuYWwgY29tbWFuZC4KIAogfDpjYWRkZmlsZXwJCUFkZCBlcnJvciBtZXNzYWdlcyB0byBhbiBleGlzdGluZyBxdWlja2ZpeCBsaXN0CiAJCQkoWWVnYXBwYW4gTGFrc2htYW5hbikuCi0KLXw6Y2V4cHJ8CQlSZWFkIGVycm9yIG1lc3NhZ2VzIGZyb20gYSBWaW0gZXhwcmVzc2lvbiAoWWVnYXBwYW4KLQkJCUxha3NobWFuYW4pLgotCi18OmNhZGRleHByfAkJQWRkIGVycm9yIG1lc3NhZ2VzIGZyb20gYSBWaW0gZXhwcmVzc2lvbiB0byBhbgotCQkJZXhpc3RpbmcgcXVpY2tmaXggbGlzdC4gKFllZ2FwcGFuIExha3NobWFuYW4pLgorfDpjYnVmZmVyfAkJUmVhZCBlcnJvciBsaW5lcyBmcm9tIGEgYnVmZmVyLiAocGFydGx5IGJ5IFllZ2FwcGFuCisJCQlMYWtzaG1hbmFuKQorfDpjZ2V0YnVmZmVyfAkJQ3JlYXRlIGEgcXVpY2tmaXggbGlzdCBmcm9tIGEgYnVmZmVyIGJ1dCBkb24ndCBqdW1wIHRvCisJCQl0aGUgZmlyc3QgZXJyb3IuCiB8OmNhZGRidWZmZXJ8CQlBZGQgZXJyb3JzIGZyb20gdGhlIGN1cnJlbnQgYnVmZmVyIHRvIHRoZSBxdWlja2ZpeAogCQkJbGlzdC4KK3w6Y2V4cHJ8CQlSZWFkIGVycm9yIG1lc3NhZ2VzIGZyb20gYSBWaW0gZXhwcmVzc2lvbiAoWWVnYXBwYW4KKwkJCUxha3NobWFuYW4pLgorfDpjYWRkZXhwcnwJCUFkZCBlcnJvciBtZXNzYWdlcyBmcm9tIGEgVmltIGV4cHJlc3Npb24gdG8gYW4KKwkJCWV4aXN0aW5nIHF1aWNrZml4IGxpc3QuIChZZWdhcHBhbiBMYWtzaG1hbmFuKS4KK3w6Y2dldGV4cHJ8CQlDcmVhdGUgYSBxdWlja2ZpeCBsaXN0IGZyb20gYSBWaW0gZXhwcmVzc2lvbiwgYnV0CisJCQlkb24ndCBqdW1wIHRvIHRoZSBmaXJzdCBlcnJvci4gKFllZ2FwcGFuIExha3NobWFuYW4pLgogCiB8OmxmaWxlfAkJTGlrZSB8OmNmaWxlfCBidXQgdXNlIHRoZSBsb2NhdGlvbiBsaXN0LgorfDpsZ2V0YnVmZmVyfAkJTGlrZSB8OmNnZXRidWZmZXJ8IGJ1dCB1c2UgdGhlIGxvY2F0aW9uIGxpc3QuCit8OmxnZXRleHByfAkJTGlrZSB8OmNnZXRleHByfCBidXQgdXNlIHRoZSBsb2NhdGlvbiBsaXN0LgogfDpsZ2V0ZmlsZXwJCUxpa2UgfDpjZ2V0ZmlsZXwgYnV0IHVzZSB0aGUgbG9jYXRpb24gbGlzdC4KIHw6bGFkZGZpbGV8CQlMaWtlIHw6Y2FkZGZpbGV8IGJ1dCB1c2UgdGhlIGxvY2F0aW9uIGxpc3QuCiB8OmxidWZmZXJ8CQlMaWtlIHw6Y2J1ZmZlcnwgYnV0IHVzZSB0aGUgbG9jYXRpb24gbGlzdC4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvZmlsZXR5cGUudmltIGIvcnVudGltZS9maWxldHlwZS52aW0KaW5kZXggZjI0NWVlYy4uMmFiMDk4NyAxMDA2NDQKLS0tIGEvcnVudGltZS9maWxldHlwZS52aW0KKysrIGIvcnVudGltZS9maWxldHlwZS52aW0KQEAgLTEsNyArMSw3IEBACiAiIFZpbSBzdXBwb3J0IGZpbGUgdG8gZGV0ZWN0IGZpbGUgdHlwZXMKICIKICIgTWFpbnRhaW5lcjoJQnJhbSBNb29sZW5hYXIgPEJyYW1AdmltLm9yZz4KLSIgTGFzdCBDaGFuZ2U6CTIwMDYgTWFyIDIxCisiIExhc3QgQ2hhbmdlOgkyMDA2IE1hciAyMwogCiAiIExpc3RlbiB2ZXJ5IGNhcmVmdWxseSwgSSB3aWxsIHNheSB0aGlzIG9ubHkgb25jZQogaWYgZXhpc3RzKCJkaWRfbG9hZF9maWxldHlwZXMiKQpAQCAtNjM4LDcgKzYzOCw3IEBACiAiIEhUTUwgKC5zaHRtbCBhbmQgLnN0bSBmb3Igc2VydmVyIHNpZGUpCiBhdSBCdWZOZXdGaWxlLEJ1ZlJlYWQgKi5odG1sLCouaHRtLCouc2h0bWwsKi5zdG0gIGNhbGwgczpGVGh0bWwoKQogCi0iIERpc3Rpbmd1aXNoIGJldHdlZW4gSFRNTCBhbmQgWEhUTUwKKyIgRGlzdGluZ3Vpc2ggYmV0d2VlbiBIVE1MLCBYSFRNTCBhbmQgRGphbmdvCiBmdW4hIHM6RlRodG1sKCkKICAgbGV0IG4gPSAxCiAgIHdoaWxlIG4gPCAxMCAmJiBuIDwgbGluZSgiJCIpCkBAIC02NDYsNiArNjQ2LDEwIEBACiAgICAgICBzZXRmIHhodG1sCiAgICAgICByZXR1cm4KICAgICBlbmRpZgorICAgIGlmIGdldGxpbmUobikgPX4gJ3slXHMqXChleHRlbmRzXHxibG9ja1wpXD4nCisgICAgICBzZXRmIGh0bWxkamFuZ28KKyAgICAgIHJldHVybgorICAgIGVuZGlmCiAgICAgbGV0IG4gPSBuICsgMQogICBlbmR3aGlsZQogICBzZXRmIGh0bWwKZGlmZiAtLWdpdCBhL3J1bnRpbWUva2V5bWFwL2dyZWVrX2NwNzM3LnZpbSBiL3J1bnRpbWUva2V5bWFwL2dyZWVrX2NwNzM3LnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDExMTRlCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9rZXltYXAvZ3JlZWtfY3A3MzcudmltCkBAIC0wLDAgKzEsMTA0IEBACisiIFZpbSBLZXltYXAgZmlsZSBmb3IgZ3JlZWsgRE9TIGNwNzM3CisiIE1haW50YWluZXI6IFBhbmFnaW90aXMgTG91cmlkYXMgPGxvdXJpZGFzQGFjbS5vcmc+CisiIExhc3QgVXBkYXRlZDogVGh1IE1hciAyMyAxNDowNTo0NSBFRVQgMjAwNgorCisiIFRoaXMga2V5Ym9hcmQgbGF5b3V0IGFsbG93cyBhbGwgR3JlZWsgc3ltYm9scyB0byBiZSB0eXBlZCwKKyIgaW5jbHVkaW5nIGFjY2VudGVkIGNhcGl0YWxzIGFuZCBkaWFlcmVzaXMuIEl0IGRvZXMgbm90CisiIGluY2x1ZGUgZGlhZXJlc2lzIGFuZCBhY2NlbnQgb24gdGhlIHNhbWUgdm93ZWwsIG5vcgorIiB0aGUgZ3JlZWsgcXVvdGVzLCBhcyB0aGVzZSB3ZXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgY29kZXBhZ2UuIAorIiBJdCBpbmNsdWRlcyB0aGUgR3JlZWsgc2VtaWNvbG9uIHNpZ24uCisKKyIKKyIgYWNjZW50CQkJIjsiICsgbGV0dGVyCisiIGRpYWVyZXNpcwkJCSI6IiArIGxldHRlcgorIiBkaWFlcmVzaXMgKyBhY2NlbnQJCSI7IiArICI6IiAob3IgIjoiICsgIjsiKSArIGxldHRlcgorIiBzZW1pY29sb24JCQkicSIKKyIgY29sb24JCQkJIlEiCisiIGdyZWVrIHNlbWljb2xvbgkJIlciCisiIHNpZ21hIGF0IGVuZCBvZiB3b3JkCQkidyIKKworIiBVc2UgdGhpcyBzaG9ydCBuYW1lIGluIHRoZSBzdGF0dXMgbGluZS4KK2xldCBiOmtleW1hcF9uYW1lID0gImdyZWVrIgorCitsb2Fka2V5bWFwCisiIGNhcGl0YWwKK0EJPGNoYXItMTI4PgkiIIAKK0IJPGNoYXItMTI5PgkiIIEKK0cJPGNoYXItMTMwPgkiIIIKK0QJPGNoYXItMTMxPgkiIIMKK0UJPGNoYXItMTMyPgkiIIQKK1oJPGNoYXItMTMzPgkiIIUKK0gJPGNoYXItMTM0PgkiIIYKK1UJPGNoYXItMTM1PgkiIIcKK0kJPGNoYXItMTM2PgkiIIgKK0sJPGNoYXItMTM3PgkiIIkKK0wJPGNoYXItMTM4PgkiIIoKK00JPGNoYXItMTM5PgkiIIsKK04JPGNoYXItMTQwPgkiIIwKK0oJPGNoYXItMTQxPgkiII0KK08JPGNoYXItMTQyPgkiII4KK1AJPGNoYXItMTQzPgkiII8KK1IJPGNoYXItMTQ0PgkiIJAKK1MJPGNoYXItMTQ1PgkiIJEKK1QJPGNoYXItMTQ2PgkiIJIKK1kJPGNoYXItMTQ3PgkiIJMKK0YJPGNoYXItMTQ4PgkiIJQKK1gJPGNoYXItMTQ5PgkiIJUKK0MJPGNoYXItMTUwPgkiIJYKK1YJPGNoYXItMTUxPgkiIJcKKworIiBzbWFsbAorYQk8Y2hhci0xNTI+CSIgmAorYgk8Y2hhci0xNTM+CSIgmQorZwk8Y2hhci0xNTQ+CSIgmgorZAk8Y2hhci0xNTU+CSIgmworZQk8Y2hhci0xNTY+CSIgnAoregk8Y2hhci0xNTc+CSIgnQoraAk8Y2hhci0xNTg+CSIgngordQk8Y2hhci0xNTk+CSIgnworaQk8Y2hhci0xNjA+CSIgoAorawk8Y2hhci0xNjE+CSIgoQorbAk8Y2hhci0xNjI+CSIgogorbQk8Y2hhci0xNjM+CSIgoworbgk8Y2hhci0xNjQ+CSIgpAoragk8Y2hhci0xNjU+CSIgpQorbwk8Y2hhci0xNjY+CSIgpgorcAk8Y2hhci0xNjc+CSIgpworcgk8Y2hhci0xNjg+CSIgqAorcwk8Y2hhci0xNjk+CSIgqQordwk8Y2hhci0xNzA+CSIgqgordAk8Y2hhci0xNzE+CSIgqworeQk8Y2hhci0xNzI+CSIgrAorZgk8Y2hhci0xNzM+CSIgrQoreAk8Y2hhci0xNzQ+CSIgrgorYwk8Y2hhci0xNzU+CSIgrwordgk8Y2hhci0yMjQ+CSIg4AorCisiIGFjY2VudGVkIGNhcGl0YWwKKztBCTxjaGFyLTIzND4JIiDqCis7RQk8Y2hhci0yMzU+CSIg6worO0gJPGNoYXItMjM2PgkiIOwKKztJCTxjaGFyLTIzNz4JIiDtCis7Twk8Y2hhci0yMzg+CSIg7gorO1kJPGNoYXItMjM5PgkiIO8KKztWCTxjaGFyLTI0MD4JIiDwCisiCis6SQk8Y2hhci0yNDQ+CSIg9AorOlkJPGNoYXItMjQ1PgkiIPUKKworIiBhY2NlbnRlZCBzbWFsbAorO2EJPGNoYXItMjI1PgkiIOEKKztlCTxjaGFyLTIyNj4JIiDiCis7aAk8Y2hhci0yMjc+CSIg4worO2kJPGNoYXItMjI5PgkiIOUKKztvCTxjaGFyLTIzMD4JIiDmCis7eQk8Y2hhci0yMzE+CSIg5worO3YJPGNoYXItMjMzPgkiIOkKKyIKKzppCTxjaGFyLTIyOD4JIiDkCis6eQk8Y2hhci0yMzI+CSIg6AorIgorIiBzeW1ib2xzCitxCTsJCSIgOworUQk6CQkiIDoKK1cJPGNoYXItMjUwPgkiIPoKZGlmZiAtLWdpdCBhL3J1bnRpbWUvcGx1Z2luL3ZpbWJhbGwudmltIGIvcnVudGltZS9wbHVnaW4vdmltYmFsbC52aW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZDJlZTEuLjAwMDAwMDAKLS0tIGEvcnVudGltZS9wbHVnaW4vdmltYmFsbC52aW0KKysrIC9kZXYvbnVsbApAQCAtMSwyNTYgKzAsMCBAQAotIiB2aW1iYWxsIDogY29uc3RydWN0IGEgZmlsZSBjb250YWluaW5nIGJvdGggcGF0aHMgYW5kIGZpbGVzCi0iIEF1dGhvcjogQ2hhcmxlcyBFLiBDYW1wYmVsbCwgSnIuCi0iIERhdGU6ICAgTWFyIDIwLCAyMDA2Ci0iIFZlcnNpb246IDMKLSIgR2V0TGF0ZXN0VmltU2NyaXB0czogMTUwMiAxIDpBdXRvSW5zdGFsbDogdmltYmFsbC52aW0KLSIgQ29weXJpZ2h0OiAoYykgMjAwNC0yMDA2IGJ5IENoYXJsZXMgRS4gQ2FtcGJlbGwsIEpyLgotIiAgICAgICAgICAgIFRoZSBWSU0gTElDRU5TRSBhcHBsaWVzIHRvIFZpbWJhbGwudmltLCBhbmQgVmltYmFsbC50eHQKLSIgICAgICAgICAgICAoc2VlIHxjb3B5cmlnaHR8KSBleGNlcHQgdXNlICJWaW1iYWxsIiBpbnN0ZWFkIG9mICJWaW0iLgotIiAgICAgICAgICAgIE5vIHdhcnJhbnR5LCBleHByZXNzIG9yIGltcGxpZWQuCi0iICAqKiogKioqICAgVXNlIEF0LVlvdXItT3duLVJpc2shICAgKioqICoqKgotCi0iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiAgTG9hZCBPbmNlOiB7e3sxCi1pZiAmY3AgfHwgZXhpc3RzKCJnOmxvYWRlZF92aW1iYWxsIikKLSBmaW5pc2gKLWVuZGlmCi0KLWxldCBzOmtlZXBjcG8gICAgICAgID0gJmNwbwotbGV0IGc6bG9hZGVkX3ZpbWJhbGwgPSAidjMiCi1zZXQgY3BvJnZpbQotCi0iIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIiBQdWJsaWMgSW50ZXJmYWNlOiB7e3sxCi1jb20hIC1yYSAtbmE9KyAtYmFuZyBNa1ZpbWJhbGwgY2FsbCBzOk1rVmltYmFsbCg8bGluZTE+LDxsaW5lMj4sPGJhbmc+MCw8Zi1hcmdzPikKLWNvbSEgLW5hPTAgVXNlVmltYmFsbCAgY2FsbCBzOlZpbWJhbGwoMSkKLWNvbSEgLW5hPTAgVmltYmFsbExpc3QgY2FsbCBzOlZpbWJhbGwoMCkKLWF1IEJ1ZlJlYWRQb3N0ICoudmJhIGVjaG9obCBXYXJuaW5nTXNnIHwgZWNobyAiU291cmNlIHRoaXMgZmlsZSB0byBleHRyYWN0IGl0ISAoOnNvICUpIiB8IGVjaG9obCBOb25lCi0KLSIgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0iICBGdW5jdGlvbnM6IHt7ezEKLQotIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIgTWtWaW1iYWxsOiBjcmVhdGVzIGEgdmltYmFsbCBnaXZlbiBhIGxpc3Qgb2YgcGF0aHMgdG8gZmlsZXMge3t7MgotIiBWaW1iYWxsIEZvcm1hdDoKLSIgICAgIHBhdGgKLSIgICAgIGZpbGVzaXplCi0iICAgICBbZmlsZV0KLSIgICAgIHBhdGgKLSIgICAgIGZpbGVzaXplCi0iICAgICBbZmlsZV0KLWZ1biEgczpNa1ZpbWJhbGwobGluZTEsbGluZTIsd3JpdGVsZXZlbCx2aW1iYWxsbmFtZSkgcmFuZ2UKLSIgIGNhbGwgRGZ1bmMoIk1rVmltYmFsbChsaW5lMT0iLmE6bGluZTEuIiBsaW5lMj0iLmE6bGluZTIuIiB3cml0ZWxldmVsPSIuYTp3cml0ZWxldmVsLiIgdmltYmFsbG5hbWU8Ii5hOnZpbWJhbGxuYW1lLiI+IikKLSAgbGV0IHZibmFtZT0gc3Vic3RpdHV0ZShhOnZpbWJhbGxuYW1lLCdcLlteLl0qJCcsJycsJ2UnKS4nLnZiYScKLSAgaWYgIWE6d3JpdGVsZXZlbCAmJiBmaWxlcmVhZGFibGUodmJuYW1lKQotICAgZWNob2hsIEVycm9yIHwgZWNob2VyciAiKE1rVmltYmFsbCkgZmlsZTwiLnZibmFtZS4iPiBleGlzdHM7IHVzZSAhIHRvIGluc2lzdCIgfCBlY2hvaGwgTm9uZQotIiAgIGNhbGwgRHJldCgiTWtWaW1iYWxsIDogZmlsZTwiLnZibmFtZS4iPiBhbHJlYWR5IGV4aXN0czsgdXNlICEgdG8gaW5zaXN0IikKLSAgIHJldHVybgotICBlbmRpZgotCi0gICIgdXNlciBvcHRpb24gYnlwYXNzCi0gIGxldCBlaWtlZXA9ICZlaQotICBzZXQgZWk9YWxsCi0KLSAgbGV0IGhvbWUgICA9IHN1YnN0aXR1dGUoJnJ0cCwnLC4qJCcsJycsJycpCi0gIGxldCBjdXJkaXIgPSBnZXRjd2QoKQotICBleGUgImNkICIuaG9tZQotCi0gICIgcmVjb3JkIGN1cnJlbnQgdGFiLCBpbml0aWFsaXplIHdoaWxlIGxvb3AgaW5kZXgKLSAgbGV0IGN1cnRhYm5yID0gdGFicGFnZW5yKCkKLSAgbGV0IGxpbmVuciAgID0gYTpsaW5lMQotIiAgY2FsbCBEZWNobygiY3VydGFibnI9Ii5jdXJ0YWJucikKLQotICB3aGlsZSBsaW5lbnIgPD0gYTpsaW5lMgotICAgbGV0IHN2ZmlsZSAgPSBnZXRsaW5lKGxpbmVucikKLSIgICBjYWxsIERlY2hvKCJzdmZpbGU8Ii5zdmZpbGUuIj4iKQotIAotICAgaWYgIWZpbGVyZWFkYWJsZShzdmZpbGUpCi0gICAgZWNob2hsIEVycm9yIHwgZWNobyAidW5hYmxlIHRvIHJlYWQgZmlsZTwiLnN2ZmlsZS4iPiIgfCBlY2hvaGwgTm9uZQotICAgIGxldCAmZWk9IGVpa2VlcAotICAgIGV4ZSAiY2QgIi5jdXJkaXIKLSIgICAgY2FsbCBEcmV0KCJNa1ZpbWJhbGwiKQotICAgIHJldHVybgotICAgZW5kaWYKLSAKLSAgICIgY3JlYXRlL3N3aXRjaCB0byBta3ZpbWJhbGwgdGFiCi0gICBpZiAhZXhpc3RzKCJ2YnRhYm5yIikKLSAgICB0YWJuZXcKLSAgICBzaWxlbnQhIGZpbGUgVmltYmFsbAotICAgIGxldCB2YnRhYm5yPSB0YWJwYWdlbnIoKQotICAgZWxzZQotICAgIGV4ZSAidGFibiAiLnZidGFibnIKLSAgIGVuZGlmCi0gCi0gICBsZXQgbGFzdGxpbmU9IGxpbmUoIiQiKSArIDEKLSAgIGlmIGxhc3RsaW5lID09IDIgJiYgZ2V0bGluZSgiJCIpID09ICIiCi0JY2FsbCBzZXRsaW5lKDEsJyIgVmltYmFsbCBBcmNoaXZlciBieSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4sIFBoLkQuJykKLQljYWxsIHNldGxpbmUoMiwnVXNlVmltYmFsbCcpCi0JY2FsbCBzZXRsaW5lKDMsJ2ZpbmlzaCcpCi0JbGV0IGxhc3RsaW5lPSA0Ci0gICBlbmRpZgotICAgY2FsbCBzZXRsaW5lKGxhc3RsaW5lICAsc3ZmaWxlKQotICAgY2FsbCBzZXRsaW5lKGxhc3RsaW5lKzEsMCkKLSAgIGV4ZSAiJHIgIi5zdmZpbGUKLSAgIGNhbGwgc2V0bGluZShsYXN0bGluZSsxLGxpbmUoIiQiKSAtIGxhc3RsaW5lIC0gMSkKLSIgICBjYWxsIERlY2hvKCJsYXN0bGluZT0iLmxhc3RsaW5lLiIgbGluZSQ9Ii5saW5lKCIkIikpCi0KLSAgIiByZXN0b3JlIHRvIG5vcm1hbCB0YWIKLSAgIGV4ZSAidGFibiAiLmN1cnRhYm5yCi0gICBsZXQgbGluZW5yPSBsaW5lbnIgKyAxCi0gIGVuZHdoaWxlCi0KLSAgIiB3cml0ZSB0aGUgdmltYmFsbAotICBleGUgInRhYm4gIi52YnRhYm5yCi0gIGV4ZSAiY2QgIi5jdXJkaXIKLSAgaWYgYTpyZWFsbHkKLSAgIGlmIGE6d3JpdGVsZXZlbAotICAgIGV4ZSAidyEgIi52Ym5hbWUKLSAgIGVsc2UKLSAgICBleGUgIncgIi52Ym5hbWUKLSAgIGVuZGlmCi0gIGVuZGlmCi0iICBjYWxsIERlY2hvKCJWaW1iYWxsPCIudmJuYW1lLiI+IGNyZWF0ZWQiKQotICBlY2hvICJWaW1iYWxsPCIudmJuYW1lLiI+IGNyZWF0ZWQiCi0KLSAgIiByZW1vdmUgdGhlIGV2aWRlbmNlCi0gIHNldGxvY2FsIG5vbW9kIGJoPXdpcGUKLSAgZXhlICJ0YWJuICIuY3VydGFibnIKLSAgZXhlICJ0YWJjICIudmJ0YWJucgotCi0gICIgcmVzdG9yZSBvcHRpb25zCi0gIGxldCAmZWk9IGVpa2VlcAotCi0iICBjYWxsIERyZXQoIk1rVmltYmFsbCIpCi1lbmRmdW4KLQotIiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSIgVmltYmFsbDoge3t7MgotZnVuISBzOlZpbWJhbGwocmVhbGx5KQotIiAgY2FsbCBEZnVuYygiVmltYmFsbChyZWFsbHk9Ii5hOnJlYWxseS4iKSIpCi0KLSAgaWYgZ2V0bGluZSgxKSAhfiAnXiIgVmltYmFsbCBBcmNoaXZlciBieSBDaGFybGVzIEUuIENhbXBiZWxsLCBKci4sIFBoLkQuJCcKLSAgIGVjaG9lcnIgIihWaW1iYWxsKSBUaGUgY3VycmVudCBmaWxlIGRvZXMgbm90IGFwcGVhciB0byBiZSBhIFZpbWJhbGwhIgotIiAgIGNhbGwgRHJldCgiVmltYmFsbCIpCi0gICByZXR1cm4KLSAgZW5kaWYKLQotICAiIGluaXRpYWxpemUKLSAgbGV0IHJlZ2FrZWVwID0gQGEKLSAgbGV0IGVpa2VlcCAgID0gJmVpCi0gIGxldCB2ZWtlZXAgICA9ICZ2ZQotICBsZXQgbWFrZWVwICAgPSBnZXRwb3MoIidhIikKLSAgbGV0IGN1cnRhYm5yID0gdGFicGFnZW5yKCkKLSAgc2V0IGVpPWFsbCB2ZT1hbGwKLQotICAiIHNldCB1cCB2aW1iYWxsIHRhYgotICB0YWJuZXcKLSAgc2lsZW50ISBmaWxlIFZpbWJhbGwKLSAgbGV0IHZidGFibnI9IHRhYnBhZ2VucigpCi0gIGxldCBkaWRoZWxwPSAiIgotCi0gICIgZ28gdG8gdmltIHBsdWdpbiBob21lCi0gIGxldCBob21lICAgPSBzdWJzdGl0dXRlKCZydHAsJywuKiQnLCcnLCcnKQotICBsZXQgY3VyZGlyID0gZ2V0Y3dkKCkKLSIgIGNhbGwgRGVjaG8oImV4ZSBjZCAiLmhvbWUpCi0gIGV4ZSAiY2QgIi5ob21lCi0gIGxldCBsaW5lbnIgID0gNAotICBsZXQgZmlsZWNudCA9IDAKLQotICAiIGdpdmUgdGl0bGUgdG8gbGlzdGluZyBvZiAoZXh0cmFjdGVkKSBmaWxlcyBmcm9tIFZpbWJhbGwgQXJjaGl2ZQotICBpZiBhOnJlYWxseQotICAgZWNob2hsIFRpdGxlIHwgZWNob21zZyAiVmltYmFsbCBBcmNoaXZlIiB8IGVjaG9obCBOb25lCi0gIGVsc2UKLSAgIGVjaG9obCBUaXRsZSB8IGVjaG9tc2cgIlZpbWJhbGwgQXJjaGl2ZSBMaXN0aW5nIiB8IGVjaG9obCBOb25lCi0gIGVuZGlmCi0KLSAgIiBhcHBvcnRpb24gdmltYmFsbCBjb250ZW50cyB0byB2YXJpb3VzIGZpbGVzCi0iICBjYWxsIERlY2hvKCJleGUgdGFibiAiLmN1cnRhYm5yKQotICBleGUgInRhYm4gIi5jdXJ0YWJucgotIiAgY2FsbCBEZWNobygibGluZW5yPSIubGluZW5yLiIgbGluZSQ9Ii5saW5lKCIkIikpCi0gIHdoaWxlIDEgPCBsaW5lbnIgJiYgbGluZW5yIDwgbGluZSgiJCIpCi0gICBsZXQgZm5hbWUgICA9IGdldGxpbmUobGluZW5yKQotICAgbGV0IGZzaXplICAgPSBnZXRsaW5lKGxpbmVucisxKQotICAgbGV0IGZpbGVjbnQgPSBmaWxlY250ICsgMQotICAgaWYgYTpyZWFsbHkKLSAgICBlY2hvbXNnICJleHRyYWN0ZWQgPCIuZm5hbWUuIj46ICIuZnNpemUuIiBsaW5lcyIKLSAgIGVsc2UKLSAgICBlY2hvbXNnICJ3b3VsZCBleHRyYWN0IDwiLmZuYW1lLiI+OiAiLmZzaXplLiIgbGluZXMiCi0gICBlbmRpZgotIiAgIGNhbGwgRGVjaG8obGluZW5yLiI6IHdpbGwgZXh0cmFjdCBmaWxlPCIuZm5hbWUuIj4iKQotIiAgIGNhbGwgRGVjaG8oKGxpbmVucisxKS4iOiBmc2l6ZT0iLmZzaXplKQotCi0gICAiIG1ha2UgZGlyZWN0b3JpZXMgaWYgdGhleSBkb24ndCBleGlzdCB5ZXQKLSAgIGxldCBmbmFtZWJ1Zj0gZm5hbWUKLSAgIHdoaWxlIGZuYW1lYnVmID1+ICcvJwotICAgCWxldCBkaXJuYW1lICA9IHN1YnN0aXR1dGUoZm5hbWVidWYsJy8uKiQnLCcnLCdlJykKLSAgIAlsZXQgZm5hbWVidWYgPSBzdWJzdGl0dXRlKGZuYW1lYnVmLCdeLlx7LX0vXCguKlwpJCcsJ1wxJywnZScpCi0JaWYgIWlzZGlyZWN0b3J5KGRpcm5hbWUpCi0iCSBjYWxsIERlY2hvKCJtYWtpbmcgPCIuZGlybmFtZS4iPiIpCi0JIGNhbGwgbWtkaXIoZGlybmFtZSkKLQllbmRpZgotCWV4ZSAiY2QgIi5kaXJuYW1lCi0gICBlbmR3aGlsZQotICAgZXhlICJjZCAiLmhvbWUKLQotICAgIiBncmFiIHNwZWNpZmllZCBxdHkgb2YgbGluZXMgYW5kIHBsYWNlIGludG8gImEiIGJ1ZmZlcgotICAgZXhlIGxpbmVucgotICAgbm9ybSEgamptYQotICAgZXhlIChsaW5lbnIgKyBmc2l6ZSArIDEpCi0gICBzaWxlbnQgbm9ybSEgImF5J2EKLSIgICBjYWxsIERlY2hvKCJ5YW5rZWQgIi5mc2l6ZS4iIGxpbmVzIGludG8gcmVnaXN0ZXItYSIpCi0KLSIgICBjYWxsIERlY2hvKCJkaWRoZWxwPCIuZGlkaGVscC4iPiBmbmFtZTwiLmZuYW1lLiI+IikKLSAgIGlmIGRpZGhlbHAgPT0gIiIgJiYgZm5hbWUgPX4gJ2RvYy9bXi9dXCtcLnR4dCQnCi0gICAJbGV0IGRpZGhlbHA9IHN1YnN0aXR1dGUoZm5hbWUsJ15cKC4qXDxkb2NcKVsvXFxdW14uXSpcLnR4dCQnLCdcMScsJ2UnKQotIgljYWxsIERlY2hvKCJkaWRoZWxwPCIuZGlkaGVscC4iPiIpCi0gICBlbmRpZgotCi0gICAiIGNvcHkgImEiIGJ1ZmZlciBpbnRvIHRhYgotIiAgIGNhbGwgRGVjaG8oJ2NvcHkgImEgYnVmZmVyIGludG8gdGFiIycudmJ0YWJucikKLSAgIGV4ZSAidGFibiAiLnZidGFibnIKLSAgIHNpbGVudCEgJWQKLSAgIHNpbGVudCBub3JtISAiYVBHZGQxRwotIiAgIGNhbGwgRGVjaG8oInJlZ2E8Ii5AYS4iPiIpCi0KLSAgICIgd3JpdGUgdGFiIHRvIGZpbGUKLSIgICBjYWxsIERlY2hvKCJleGUgdyEgIi5mbmFtZSkKLSAgIGV4ZSAic2lsZW50IHchICIuZm5hbWUKLQotIiAgIGNhbGwgRGVjaG8oImV4ZSB0YWJuICIuY3VydGFibnIpCi0gICBleGUgInRhYm4gIi5jdXJ0YWJucgotIiAgIGxldCBvbGRsaW5lbnIgPSBsaW5lbnIgIiBEZWNobwotICAgbGV0IGxpbmVuciAgICA9IGxpbmVuciArIGZzaXplICsgMgotIiAgIGNhbGwgRGVjaG8oInVwZGF0ZSBsaW5lbnI9IFtsaW5lbnI9Ii5vbGRsaW5lbnIuIl0gKyBbZnNpemU9Ii5mc2l6ZS4iXSArIDIgPSAiLmxpbmVucikKLSAgZW5kd2hpbGUKLQotICAiIHNldCB1cCBoZWxwCi0iICBjYWxsIERlY2hvKCJhYm91dCB0byBzZXQgdXAgaGVscDogZGlkaGVscDwiLmRpZGhlbHAuIj4iKQotICBpZiBkaWRoZWxwICE9ICIiCi0iICAgY2FsbCBEZWNobygiZXhlIGhlbHB0YWdzICIuaG9tZS4iLyIuZGlkaGVscCkKLSAgIGV4ZSAiaGVscHRhZ3MgIi5ob21lLiIvIi5kaWRoZWxwCi0gICBlY2hvbXNnICJkaWQgaGVscHRhZ3MiCi0gIGVuZGlmCi0KLSAgIiBtYWtlIHN1cmUgYSAiUHJlc3MgRU5URVIuLi4iIHByb21wdCBhcHBlYXJzIHRvIGtlZXAgdGhlIG1lc3NhZ2VzIHNob3dpbmchCi0gIHdoaWxlIGZpbGVjbnQgPCAmY2gKLSAgIGVjaG9tc2cgIiAiCi0gICBsZXQgZmlsZWNudD0gZmlsZWNudCArIDEKLSAgZW5kd2hpbGUKLQotICAiIHJlc3RvcmUgZXZlbnRzLCBkZWxldGUgdGFiIGFuZCBidWZmZXIKLSAgZXhlICJ0YWJuICIudmJ0YWJucgotICBzZXRsb2NhbCBub21vZCBiaD13aXBlCi0gIGV4ZSAidGFibiAiLmN1cnRhYm5yCi0gIGV4ZSAidGFiYyAiLnZidGFibnIKLSAgbGV0ICZlaT0gZWlrZWVwCi0gIGxldCBAYSA9IHJlZ2FrZWVwCi0gIGlmIG1ha2VlcFswXSAhPSAwCi0gICAiIHJlc3RvcmUgbWFyayBhCi0iICAgY2FsbCBEZWNobygicmVzdG9yZSBtYXJrLWE6IG1ha2VlcD0iLnN0cmluZyhtYWtlZXApKQotICAgY2FsbCBzZXRwb3MoIidhIixtYWtlZXApCi0gICBrYQotICBlbmRpZgotICBleGUgImNkICIuY3VyZGlyCi0KLSIgIGNhbGwgRHJldCgiVmltYmFsbCIpCi1lbmRmdW4KZGlmZiAtLWdpdCBhL3J1bnRpbWUvc3ludGF4L2RqYW5nby52aW0gYi9ydW50aW1lL3N5bnRheC9kamFuZ28udmltCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNDhkMjYKLS0tIC9kZXYvbnVsbAorKysgYi9ydW50aW1lL3N5bnRheC9kamFuZ28udmltCkBAIC0wLDAgKzEsNzIgQEAKKyIgVmltIHN5bnRheCBmaWxlCisiIExhbmd1YWdlOglEamFuZ28gdGVtcGxhdGUKKyIgTWFpbnRhaW5lcjoJRGF2ZSBIb2RkZXIgPGRtaEBkbWgub3JnLnVrPgorIiBMYXN0IENoYW5nZToJMjAwNiBNYXIgMjMKKworIiBGb3IgdmVyc2lvbiA1Lng6IENsZWFyIGFsbCBzeW50YXggaXRlbXMKKyIgRm9yIHZlcnNpb24gNi54OiBRdWl0IHdoZW4gYSBzeW50YXggZmlsZSB3YXMgYWxyZWFkeSBsb2FkZWQKK2lmIHZlcnNpb24gPCA2MDAKKyAgc3ludGF4IGNsZWFyCitlbHNlaWYgZXhpc3RzKCJiOmN1cnJlbnRfc3ludGF4IikKKyAgZmluaXNoCitlbmRpZgorCitzeW50YXggY2FzZSBtYXRjaAorCisiIERqYW5nbyB0ZW1wbGF0ZSBidWlsdC1pbiB0YWdzIGFuZCBwYXJhbWV0ZXJzCisiICdjb21tZW50JyBkb2Vzbid0IGFwcGVhciBoZXJlIGJlY2F1c2UgaXQgZ2V0cyBzcGVjaWFsIHRyZWF0bWVudAorc3luIGtleXdvcmQgZGphbmdvU3RhdGVtZW50IGNvbnRhaW5lZCBhcyBibG9jayBlbmRibG9jayBieSBjeWNsZSBkZWJ1ZyBlbHNlCitzeW4ga2V5d29yZCBkamFuZ29TdGF0ZW1lbnQgY29udGFpbmVkIGV4dGVuZHMgZmlsdGVyIGVuZGZpbHRlciBmaXJzdG9mIGZvcgorc3luIGtleXdvcmQgZGphbmdvU3RhdGVtZW50IGNvbnRhaW5lZCBlbmRmb3IgaWYgZW5kaWYgaWZjaGFuZ2VkIGVuZGlmY2hhbmdlZAorc3luIGtleXdvcmQgZGphbmdvU3RhdGVtZW50IGNvbnRhaW5lZCBpZmVxdWFsIGVuZGlmZXF1YWwgaWZub3RlcXVhbAorc3luIGtleXdvcmQgZGphbmdvU3RhdGVtZW50IGNvbnRhaW5lZCBlbmRpZm5vdGVxdWFsIGluIGluY2x1ZGUgbG9hZCBub3Qgbm93IG9yCitzeW4ga2V5d29yZCBkamFuZ29TdGF0ZW1lbnQgY29udGFpbmVkIHBhcnNlZCByZWdyb3VwIHJldmVyc2VkIHNwYWNlbGVzcworc3luIGtleXdvcmQgZGphbmdvU3RhdGVtZW50IGNvbnRhaW5lZCBlbmRzcGFjZWxlc3Mgc3NpIHRlbXBsYXRldGFnIG9wZW5ibG9jaworc3luIGtleXdvcmQgZGphbmdvU3RhdGVtZW50IGNvbnRhaW5lZCBjbG9zZWJsb2NrIG9wZW52YXJpYWJsZSBjbG9zZXZhcmlhYmxlCitzeW4ga2V5d29yZCBkamFuZ29TdGF0ZW1lbnQgY29udGFpbmVkIHdpZHRocmF0aW8gd2l0aAorCisiIERqYW5nbyB0ZW1wbGV0ZSBidWlsdC1pbiBmaWx0ZXJzCitzeW4ga2V5d29yZCBkamFuZ29GaWx0ZXIgY29udGFpbmVkIGFkZCBhZGRzbGFzaGVzIGNhcGZpcnN0IGNlbnRlciBjdXQgZGF0ZQorc3luIGtleXdvcmQgZGphbmdvRmlsdGVyIGNvbnRhaW5lZCBkZWZhdWx0IGRlZmF1bHRfaWZfbm9uZSBkaWN0c29ydAorc3luIGtleXdvcmQgZGphbmdvRmlsdGVyIGNvbnRhaW5lZCBkaWN0c29ydHJldmVyc2VkIGRpdmlzaWJsZWJ5IGVzY2FwZQorc3luIGtleXdvcmQgZGphbmdvRmlsdGVyIGNvbnRhaW5lZCBmaWxlc2l6ZWZvcm1hdCBmaXJzdCBmaXhfYW1wZXJzYW5kcworc3luIGtleXdvcmQgZGphbmdvRmlsdGVyIGNvbnRhaW5lZCBmbG9hdGZvcm1hdCBnZXRfZGlnaXQgam9pbiBsZW5ndGggbGVuZ3RoX2lzCitzeW4ga2V5d29yZCBkamFuZ29GaWx0ZXIgY29udGFpbmVkIGxpbmVicmVha3MgbGluZWJyZWFrc2JyIGxpbmVudW1iZXJzIGxqdXN0CitzeW4ga2V5d29yZCBkamFuZ29GaWx0ZXIgY29udGFpbmVkIGxvd2VyIG1ha2VfbGlzdCBwaG9uZTJudW1lcmljIHBsdXJhbGl6ZQorc3luIGtleXdvcmQgZGphbmdvRmlsdGVyIGNvbnRhaW5lZCBwcHJpbnQgcmFuZG9tIHJlbW92ZXRhZ3Mgcmp1c3Qgc2xpY2Ugc2x1Z2lmeQorc3luIGtleXdvcmQgZGphbmdvRmlsdGVyIGNvbnRhaW5lZCBzdHJpbmdmb3JtYXQgc3RyaXB0YWdzIHRpbWUgdGltZXNpbmNlIHRpdGxlCitzeW4ga2V5d29yZCBkamFuZ29GaWx0ZXIgY29udGFpbmVkIHRydW5jYXRld29yZHMgdW5vcmRlcmVkX2xpc3QgdXBwZXIgdXJsZW5jb2RlCitzeW4ga2V5d29yZCBkamFuZ29GaWx0ZXIgY29udGFpbmVkIHVybGl6ZSB1cmxpemV0cnVuYyB3b3JkY291bnQgd29yZHdyYXAgeWVzbm8KKworIiBEamFuZ28gdGVtcGxhdGUgY29uc3RhbnRzIChhbHdheXMgc3Vycm91bmRlZCBieSBkb3VibGUgcXVvdGVzKQorc3luIHJlZ2lvbiBkamFuZ29Bcmd1bWVudCBjb250YWluZWQgc3RhcnQ9LyIvIHNraXA9L1xcIi8gZW5kPS8iLworCisiIERqYW5nbyB0ZW1wbGF0ZSB0YWcgYW5kIHZhcmlhYmxlIGJsb2Nrcworc3luIHJlZ2lvbiBkamFuZ29UYWdCbG9jayBzdGFydD0ieyUiIGVuZD0iJX0iIGNvbnRhaW5zPWRqYW5nb1N0YXRlbWVudCxkamFuZ29GaWx0ZXIsZGphbmdvQXJndW1lbnQgZGlzcGxheQorc3luIHJlZ2lvbiBkamFuZ29WYXJCbG9jayBzdGFydD0ie3siIGVuZD0ifX0iIGNvbnRhaW5zPWRqYW5nb0ZpbHRlcixkamFuZ29Bcmd1bWVudCBkaXNwbGF5CisKKyIgRGphbmdvIHRlbXBsYXRlICdjb21tZW50JyB0YWcKK3N5biByZWdpb24gZGphbmdvQ29tbWVudCBzdGFydD0ieyVccypjb21tZW50XHMqJX0iIGVuZD0ieyVccyplbmRjb21tZW50XHMqJX0iCisKKyIgRGVmaW5lIHRoZSBkZWZhdWx0IGhpZ2hsaWdodGluZy4KKyIgRm9yIHZlcnNpb24gNS43IGFuZCBlYXJsaWVyOiBvbmx5IHdoZW4gbm90IGRvbmUgYWxyZWFkeQorIiBGb3IgdmVyc2lvbiA1LjggYW5kIGxhdGVyOiBvbmx5IHdoZW4gYW4gaXRlbSBkb2Vzbid0IGhhdmUgaGlnaGxpZ2h0aW5nIHlldAoraWYgdmVyc2lvbiA+PSA1MDggfHwgIWV4aXN0cygiZGlkX2RqYW5nb19zeW5faW5pdHMiKQorICBpZiB2ZXJzaW9uIDwgNTA4CisgICAgbGV0IGRpZF9kamFuZ29fc3luX2luaXRzID0gMQorICAgIGNvbW1hbmQgLW5hcmdzPSsgSGlMaW5rIGhpIGxpbmsgPGFyZ3M+CisgIGVsc2UKKyAgICBjb21tYW5kIC1uYXJncz0rIEhpTGluayBoaSBkZWYgbGluayA8YXJncz4KKyAgZW5kaWYKKworICBIaUxpbmsgZGphbmdvVGFnQmxvY2sgUHJlUHJvYworICBIaUxpbmsgZGphbmdvVmFyQmxvY2sgUHJlUHJvYworICBIaUxpbmsgZGphbmdvU3RhdGVtZW50IFN0YXRlbWVudAorICBIaUxpbmsgZGphbmdvRmlsdGVyIElkZW50aWZpZXIKKyAgSGlMaW5rIGRqYW5nb0FyZ3VtZW50IENvbnN0YW50CisgIEhpTGluayBkamFuZ29Db21tZW50IENvbW1lbnQKKworICBkZWxjb21tYW5kIEhpTGluaworZW5kaWYKKworbGV0IGI6Y3VycmVudF9zeW50YXggPSAiZGphbmdvIgpkaWZmIC0tZ2l0IGEvcnVudGltZS9zeW50YXgvaHRtbGRqYW5nby52aW0gYi9ydW50aW1lL3N5bnRheC9odG1sZGphbmdvLnZpbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2M2NWZkCi0tLSAvZGV2L251bGwKKysrIGIvcnVudGltZS9zeW50YXgvaHRtbGRqYW5nby52aW0KQEAgLTAsMCArMSwzMCBAQAorIiBWaW0gc3ludGF4IGZpbGUKKyIgTGFuZ3VhZ2U6CURqYW5nbyBIVE1MIHRlbXBsYXRlCisiIE1haW50YWluZXI6CURhdmUgSG9kZGVyIDxkbWhAZG1oLm9yZy51az4KKyIgTGFzdCBDaGFuZ2U6CTIwMDYgTWFyIDA2CisKKyIgRm9yIHZlcnNpb24gNS54OiBDbGVhciBhbGwgc3ludGF4IGl0ZW1zCisiIEZvciB2ZXJzaW9uIDYueDogUXVpdCB3aGVuIGEgc3ludGF4IGZpbGUgd2FzIGFscmVhZHkgbG9hZGVkCitpZiB2ZXJzaW9uIDwgNjAwCisgIHN5bnRheCBjbGVhcgorZWxzZWlmIGV4aXN0cygiYjpjdXJyZW50X3N5bnRheCIpCisgIGZpbmlzaAorZW5kaWYKKworaWYgIWV4aXN0cygibWFpbl9zeW50YXgiKQorICBsZXQgbWFpbl9zeW50YXggPSAnaHRtbCcKK2VuZGlmCisKK2lmIHZlcnNpb24gPCA2MDAKKyAgc28gPHNmaWxlPjpwOmgvZGphbmdvLnZpbQorICBzbyA8c2ZpbGU+OnA6aC9odG1sLnZpbQorZWxzZQorICBydW50aW1lISBzeW50YXgvZGphbmdvLnZpbQorICBydW50aW1lISBzeW50YXgvaHRtbC52aW0KKyAgdW5sZXQgYjpjdXJyZW50X3N5bnRheAorZW5kaWYKKworc3ludGF4IGNsdXN0ZXIgaHRtbFByZXByb2MgYWRkPWRqYW5nb1BsYWNlSG9sZGVyCitzeW50YXggY2x1c3RlciBodG1sU3RyaW5nIGFkZD1kamFuZ29QbGFjZUhvbGRlcgorCitsZXQgYjpjdXJyZW50X3N5bnRheCA9ICJodG1sZGphbmdvIgpkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlIGIvc3JjL01ha2VmaWxlCmluZGV4IGVjZjdiZjguLjRjNDE1Y2IgMTAwNjQ0Ci0tLSBhL3NyYy9NYWtlZmlsZQorKysgYi9zcmMvTWFrZWZpbGUKQEAgLTE4NTcsOCArMTg1Nyw4IEBACiAjIHNwZWxsIGZpbGUgaXMgdGhlcmUuCiBpbnN0YWxsc3BlbGw6ICQoREVTVF9WSU0pICQoREVTVF9SVCkgJChERVNUX1NQRUxMKQogCWlmIHRlc3QgLWYgJChTUEVMTFNPVVJDRSkvZW4ubGF0aW4xLnNwbDsgdGhlbiBcCi0JICAkKElOU1RBTExfREFUQSkgJChTUEVMTFNPVVJDRSkvKi5zcGwgJChTUEVMTFNPVVJDRSkvKi52aW0gJChERVNUX1NQRUxMKTsgXAotCSAgY2htb2QgJChIRUxQTU9EKSAkKERFU1RfU1BFTEwpLyouc3BsICQoREVTVF9TUEVMTCkvKi52aW07IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkKFNQRUxMU09VUkNFKS8qLnNwbCAkKFNQRUxMU09VUkNFKS8qLnN1ZyAkKFNQRUxMU09VUkNFKS8qLnZpbSAkKERFU1RfU1BFTEwpOyBcCisJICBjaG1vZCAkKEhFTFBNT0QpICQoREVTVF9TUEVMTCkvKi5zcGwgJChERVNUX1NQRUxMKS8qLnN1ZyAkKERFU1RfU1BFTEwpLyoudmltOyBcCiAJZmkKIAogIyBpbnN0YWxsIGhlbHBlciBwcm9ncmFtIHh4ZApAQCAtMjAyOSw3ICsyMDI5LDcgQEAKICQoREVTVF9CSU4pLyQoRVZJRVdUQVJHRVQpOgogCWNkICQoREVTVF9CSU4pOyBsbiAtcyAkKFZJTVRBUkdFVCkgJChFVklFV1RBUkdFVCkKIAotIyBjcmVhdGUgbGlua3MgZm9yIHRoZSBtYW51YWwgcGFnZXMgd2l0aCB2YXJpb3VzIG5hbWVzIHRvIHZpbS4JVGhpcyBpcyBvbmx5CisjIENyZWF0ZSBsaW5rcyBmb3IgdGhlIG1hbnVhbCBwYWdlcyB3aXRoIHZhcmlvdXMgbmFtZXMgdG8gdmltLglUaGlzIGlzIG9ubHkKICMgZG9uZSB3aGVuIHRoZSBsaW5rcyAob3IgbWFucGFnZXMgd2l0aCB0aGUgc2FtZSBuYW1lKSBkb24ndCBleGlzdCB5ZXQuCiAKIElOU1RBTExNTEFSR1MgPSAkKFZJTU5BTUUpICQoVklNRElGRk5BTUUpICQoRVZJTU5BTUUpIFwKQEAgLTI1MjAsNiArMjUyMCw4IEBACiAjIFJlbW92ZSB0aGUgbGluayB0byB0aGUgcnVudGltZSBkaXIsIGRvbid0IHdhbnQgdG8gY29weSBhbGwgb2YgdGhhdC4KIAktcm0gJChSRVNESVIpL3ZpbS9ydW50aW1lCiAJJChJTlNUQUxMX0RBVEFfUikgJChBUFBESVIpICQoREVTVERJUikkKHByZWZpeCkKKyMgR2VuZXJhdGUgdGhlIGhlbHAgdGFncyBmaWxlIG5vdywgaXQgd29uJ3Qgd29yayB3aXRoICJtYWtlIGluc3RhbGxydW50aW1lIi4KKwktQHNyY2Rpcj1gcHdkYDsgY2QgJChIRUxQU09VUkNFKTsgJChNQUtFKSBWSU1FWEU9JCRzcmNkaXIvJChWSU1UQVJHRVQpIHZpbXRhZ3MKICMgSW5zdGFsbCB0aGUgcnVudGltZSBmaWxlcy4gIFJlY3Vyc2l2ZSEKIAktbWtkaXIgLXAgJChERVNURElSKSQocHJlZml4KS8kKFJFU0RJUikvdmltL3J1bnRpbWUKICMJLW1rZGlyICQoREVTVERJUikkKHByZWZpeCkvJChBUFBESVIpL2JpbgpAQCAtMjUzOCw3ICsyNTQwLDYgQEAKIAlta2RpciAtcCAkQAogCiBidW5kbGUtZGlyOiAkKEFQUERJUikvQ29udGVudHMgJChWSU1UQVJHRVQpCi0JLUBzcmNkaXI9YHB3ZGA7IGNkICQoSEVMUFNPVVJDRSk7ICQoTUFLRSkgVklNRVhFPSQkc3JjZGlyLyQoVklNVEFSR0VUKSB2aW10YWdzCiAjIE1ha2UgYSBsaW5rIHRvIHRoZSBydW50aW1lIGRpcmVjdG9yeSwgc28gdGhhdCB3ZSBjYW4gdHJ5IG91dCB0aGUgZXhlY3V0YWJsZQogIyB3aXRob3V0IGluc3RhbGxpbmcgaXQuCiAJbWtkaXIgLXAgJChSRVNESVIpL3ZpbQpkaWZmIC0tZ2l0IGEvc3JjL2NvbmZpZy5tay5pbiBiL3NyYy9jb25maWcubWsuaW4KaW5kZXggNDk5NmFmZC4uNzU5NTU5YSAxMDA2NDQKLS0tIGEvc3JjL2NvbmZpZy5tay5pbgorKysgYi9zcmMvY29uZmlnLm1rLmluCkBAIC0xMzUsOCArMTM1LDYgQEAKIEdVSV9YX0xJQlMJPSBAR1VJX1hfTElCU0AKIE1PVElGX0xJQk5BTUUJPSBATU9USUZfTElCTkFNRUAKIEdUS19MSUJOQU1FCT0gQEdUS19MSUJOQU1FQAotS0RFX1BSRUZJWAk9IEBLREVfUFJFRklYQAotTU9DICAgICAgICAgICAgID0gQE1PQ0AKIAogIyMjIEFueSBPUyBkZXBlbmRlbnQgZXh0cmEgc291cmNlIGFuZCBvYmplY3QgZmlsZQogT1NfRVhUUkFfU1JDCT0gQE9TX0VYVFJBX1NSQ0AKZGlmZiAtLWdpdCBhL3NyYy9jb25maWd1cmUuaW4gYi9zcmMvY29uZmlndXJlLmluCmluZGV4IDkwZWIzM2IuLmFhZTIwYjkgMTAwNjQ0Ci0tLSBhL3NyYy9jb25maWd1cmUuaW4KKysrIGIvc3JjL2NvbmZpZ3VyZS5pbgpAQCAtMTY5LDkgKzE2OSw5IEBACiAgICAgZmkKICAgZmkKIAotICBkbmwgQXZvaWQgYSBidWcgd2l0aCAtTzIgd2l0aCBnY2MgNC4wLiAgU3ltcHRvbTogbWFsbG9jKCkgcmVwb3J0cyBkb3VibGUKKyAgZG5sIEF2b2lkIGEgYnVnIHdpdGggLU8yIHdpdGggZ2NjIDQuMC4xLiAgU3ltcHRvbTogbWFsbG9jKCkgcmVwb3J0cyBkb3VibGUKICAgZG5sIGZyZWUuICBUaGlzIGhhcHBlbnMgaW4gZXhwYW5kX2ZpbGVuYW1lKCksIGJlY2F1c2UgdGhlIG9wdGltaXplciBzd2FwcwotICBkbmwgdHdvIGJsb2NrcyBvZiBjb2RlIHRoYXQgdXNlICJyZXBsIiB0aGF0IGNhbid0IGJlIHN3YXBwZWQuCisgIGRubCB0d28gYmxvY2tzIG9mIGNvZGUsIGJvdGggdXNpbmcgInJlcGwiLCB0aGF0IGNhbid0IGJlIHN3YXBwZWQuCiAgIGlmIHRlc3QgIiRNQUNBUkNIIiA9ICJpbnRlbCIgLW8gIiRNQUNBUkNIIiA9ICJib3RoIjsgdGhlbgogICAgIENGTEFHUz1gZWNobyAiJENGTEFHUyIgfCBzZWQgJ3MvLU9bWzIzNDU2Nzg5XV0vLU96LydgCiAgIGZpCmRpZmYgLS1naXQgYS9zcmMvZXZhbC5jIGIvc3JjL2V2YWwuYwppbmRleCBmNDdmMTZlLi5lZmEwNGJlIDEwMDY0NAotLS0gYS9zcmMvZXZhbC5jCisrKyBiL3NyYy9ldmFsLmMKQEAgLTE2NjEsMTEgKzE2NjEsMTIgQEAKICAgICBpbnQJCXZhcl9jb3VudCA9IDA7CiAgICAgaW50CQlzZW1pY29sb24gPSAwOwogICAgIGNoYXJfdQlvcFsyXTsKKyAgICBjaGFyX3UJKmFyZ2VuZDsKIAotICAgIGV4cHIgPSBza2lwX3Zhcl9saXN0KGFyZywgJnZhcl9jb3VudCwgJnNlbWljb2xvbik7Ci0gICAgaWYgKGV4cHIgPT0gTlVMTCkKKyAgICBhcmdlbmQgPSBza2lwX3Zhcl9saXN0KGFyZywgJnZhcl9jb3VudCwgJnNlbWljb2xvbik7CisgICAgaWYgKGFyZ2VuZCA9PSBOVUxMKQogCXJldHVybjsKLSAgICBleHByID0gdmltX3N0cmNocihleHByLCAnPScpOworICAgIGV4cHIgPSB2aW1fc3RyY2hyKGFyZ2VuZCwgJz0nKTsKICAgICBpZiAoZXhwciA9PSBOVUxMKQogICAgIHsKIAkvKgpAQCAtMTY5Miw3ICsxNjkzLDcgQEAKICAgICB7CiAJb3BbMF0gPSAnPSc7CiAJb3BbMV0gPSBOVUw7Ci0JaWYgKGV4cHIgPiBhcmcpCisJaWYgKGV4cHIgPiBhcmdlbmQpCiAJewogCSAgICBpZiAodmltX3N0cmNocigoY2hhcl91ICopIistLiIsIGV4cHJbLTFdKSAhPSBOVUxMKQogCQlvcFswXSA9IGV4cHJbLTFdOyAgIC8qICs9LCAtPSBvciAuPSAqLwpAQCAtMTI2NjQsNyArMTI2NjUsOCBAQAogICAgIG4xID0gbGlzdF9maW5kX25yKGFyZy0+dnZhbC52X2xpc3QsIDBMLCAmZXJyb3IpOwogICAgIG4yID0gbGlzdF9maW5kX25yKGFyZy0+dnZhbC52X2xpc3QsIDFMLCAmZXJyb3IpOwogIyBpZmRlZiBXSU4zMjY0Ci0gICAgdG0tPlF1YWRQYXJ0ID0gKG4xIDw8IDMyKSArIG4yOworICAgIHRtLT5IaWdoUGFydCA9IG4xOworICAgIHRtLT5Mb3dQYXJ0ID0gbjI7CiAjIGVsc2UKICAgICB0bS0+dHZfc2VjID0gbjE7CiAgICAgdG0tPnR2X3VzZWMgPSBuMjsKQEAgLTEyNzEwLDggKzEyNzEyLDggQEAKIAlsb25nCW4xLCBuMjsKIAogIyBpZmRlZiBXSU4zMjY0Ci0JbjEgPSByZXMuUXVhZFBhcnQgPj4gMzI7Ci0JbjIgPSByZXMuUXVhZFBhcnQgJiAweGZmZmZmZmZmOworCW4xID0gcmVzLkhpZ2hQYXJ0OworCW4yID0gcmVzLkxvd1BhcnQ7CiAjIGVsc2UKIAluMSA9IHJlcy50dl9zZWM7CiAJbjIgPSByZXMudHZfdXNlYzsKZGlmZiAtLWdpdCBhL3NyYy9leF9jbWRzLmggYi9zcmMvZXhfY21kcy5oCmluZGV4IGZhOGY0ZWYuLmRkMTYyMmEgMTAwNjQ0Ci0tLSBhL3NyYy9leF9jbWRzLmgKKysrIGIvc3JjL2V4X2NtZHMuaApAQCAtMjEzLDggKzIxMywxMiBAQAogCQkJVFJMQkFSfEZJTEUxfEJBTkcpLAogRVgoQ01EX2NmaXJzdCwJCSJjZmlyc3QiLAlleF9jYywKIAkJCVJBTkdFfE5PVEFEUnxDT1VOVHxUUkxCQVJ8QkFORyksCitFWChDTURfY2dldGJ1ZmZlciwJImNnZXRidWZmZXIiLAlleF9jYnVmZmVyLAorCQkJUkFOR0V8Tk9UQURSfFdPUkQxfFRSTEJBUiksCiBFWChDTURfY2dldGZpbGUsCSJjZ2V0ZmlsZSIsCWV4X2NmaWxlLAogCQkJVFJMQkFSfEZJTEUxfEJBTkcpLAorRVgoQ01EX2NnZXRleHByLAkiY2dldGV4cHIiLAlleF9jZXhwciwKKwkJCU5FRURBUkd8V09SRDF8Tk9UUkxDT018VFJMQkFSfEJBTkcpLAogRVgoQ01EX2NoZGlyLAkJImNoZGlyIiwJZXhfY2QsCiAJCQlCQU5HfEZJTEUxfFRSTEJBUnxDTURXSU4pLAogRVgoQ01EX2NoYW5nZXMsCQkiY2hhbmdlcyIsCWV4X2NoYW5nZXMsCkBAIC01MTcsNiArNTIxLDEwIEBACiAJCQlSQU5HRXxOT1RBRFJ8Q09VTlR8VFJMQkFSfEJBTkcpLAogRVgoQ01EX2xnZXRmaWxlLAkibGdldGZpbGUiLAlleF9jZmlsZSwKIAkJCVRSTEJBUnxGSUxFMXxCQU5HKSwKK0VYKENNRF9sZ2V0YnVmZmVyLAkibGdldGJ1ZmZlciIsCWV4X2NidWZmZXIsCisJCQlSQU5HRXxOT1RBRFJ8V09SRDF8VFJMQkFSKSwKK0VYKENNRF9sZ2V0ZXhwciwJImxnZXRleHByIiwJZXhfY2V4cHIsCisJCQlORUVEQVJHfFdPUkQxfE5PVFJMQ09NfFRSTEJBUnxCQU5HKSwKIEVYKENNRF9sZ3JlcCwJCSJsZ3JlcCIsCWV4X21ha2UsCiAJCQlSQU5HRXxOT1RBRFJ8QkFOR3xORUVEQVJHfEVYVFJBfE5PVFJMQ09NfFRSTEJBUnxYRklMRSksCiBFWChDTURfbGdyZXBhZGQsCSJsZ3JlcGFkZCIsCWV4X21ha2UsCmRpZmYgLS1naXQgYS9zcmMvZXhfZ2V0bG4uYyBiL3NyYy9leF9nZXRsbi5jCmluZGV4IDU4Y2ZlYzguLmVjNmVlNTYgMTAwNjQ0Ci0tLSBhL3NyYy9leF9nZXRsbi5jCisrKyBiL3NyYy9leF9nZXRsbi5jCkBAIC0xNzQ5LDYgKzE3NDksOCBAQAogCQllbmRfcG9zID0gY3Vyd2luLT53X2N1cnNvcjsKIAkJY3Vyd2luLT53X2N1cnNvciA9IHNhdmVfcG9zOwogCSAgICB9CisJICAgIGVsc2UKKwkJZW5kX3BvcyA9IGN1cndpbi0+d19jdXJzb3I7IC8qIHNodXR1cCBnY2MgNCAqLwogCiAJICAgIHZhbGlkYXRlX2N1cnNvcigpOwogCmRpZmYgLS1naXQgYS9zcmMvZ3VpX2d0a194MTEuYyBiL3NyYy9ndWlfZ3RrX3gxMS5jCmluZGV4IGYxNjYxYjQuLjM1ZTE4YzkgMTAwNjQ0Ci0tLSBhL3NyYy9ndWlfZ3RrX3gxMS5jCisrKyBiL3NyYy9ndWlfZ3RrX3gxMS5jCkBAIC00MSw2ICs0MSwxMCBAQAogIyBlbmRpZgogIyBpbmNsdWRlIDxnbm9tZS5oPgogIyBpbmNsdWRlICJ2ZXJzaW9uLmgiCisjICBpZmRlZiBIQVZFX0dUSzIKKy8qIG1pc3NpbmcgcHJvdG90eXBlIGluIGJvbm9iby1kb2NrLWl0ZW0uaCAqLworZXh0ZXJuIHZvaWQgYm9ub2JvX2RvY2tfaXRlbV9zZXRfYmVoYXZpb3IoQm9ub2JvRG9ja0l0ZW0gKmRvY2tfaXRlbSwgQm9ub2JvRG9ja0l0ZW1CZWhhdmlvciBiZWgpOworIyAgZW5kaWYKICNlbmRpZgogCiAjaWYgIWRlZmluZWQoRkVBVF9HVUlfR1RLKSAmJiBkZWZpbmVkKFBST1RPKQpAQCAtMzU0MSw4ICszNTQ1LDEwIEBACiAJZ25vbWVfYXBwX3NldF9tZW51cyhHTk9NRV9BUFAoZ3VpLm1haW53aW4pLCBHVEtfTUVOVV9CQVIoZ3VpLm1lbnViYXIpKTsKIAlkb2NraXRlbSA9IGdub21lX2FwcF9nZXRfZG9ja19pdGVtX2J5X25hbWUoR05PTUVfQVBQKGd1aS5tYWlud2luKSwKIAkJCQkJCSAgIEdOT01FX0FQUF9NRU5VQkFSX05BTUUpOwotCS8vIGJvbm9ib19kb2NrX2l0ZW1fc2V0X2JlaGF2aW9yKGRvY2tpdGVtLAotCS8vCQkJCSBCT05PQk9fRE9DS19JVEVNX0JFSF9ORVZFUl9GTE9BVElORyk7CisJLyogV2UgZG9uJ3Qgd2FudCB0aGUgbWVudSB0byBmbG9hdC4gKi8KKwlib25vYm9fZG9ja19pdGVtX3NldF9iZWhhdmlvcihkb2NraXRlbSwKKwkJYm9ub2JvX2RvY2tfaXRlbV9nZXRfYmVoYXZpb3IoZG9ja2l0ZW0pCisJCQkJICAgICAgIHwgQk9OT0JPX0RPQ0tfSVRFTV9CRUhfTkVWRVJfRkxPQVRJTkcpOwogCWd1aS5tZW51YmFyX2ggPSBHVEtfV0lER0VUKGRvY2tpdGVtKTsKICMgIGVsc2UKIAlndWkubWVudWJhcl9oID0gZ25vbWVfZG9ja19pdGVtX25ldygiVmltTWFpbk1lbnUiLApAQCAtMzYwMCw5ICszNjA2LDEwIEBACiAJCQkJCQkgICBHTk9NRV9BUFBfVE9PTEJBUl9OQU1FKTsKIAlndWkudG9vbGJhcl9oID0gR1RLX1dJREdFVChkb2NraXRlbSk7CiAJLyogV2hlbiB0aGUgdG9vbGJhciBpcyBmbG9hdGluZyBpdCBnZXRzIHN0dWNrLiAgU28gbG9uZyBhcyB0aGF0IGlzbid0Ci0JICogZml4ZWQgbGV0J3MgZGlzYWxsb3cgZmxvYXRpbmcuICBBbHNvIGNoYW5nZXMgaXQgYXBwZWFyYW5jZS4uLiAqLworCSAqIGZpeGVkIGxldCdzIGRpc2FsbG93IGZsb2F0aW5nLiAqLwogCWJvbm9ib19kb2NrX2l0ZW1fc2V0X2JlaGF2aW9yKGRvY2tpdGVtLAotCQkJCQkgQk9OT0JPX0RPQ0tfSVRFTV9CRUhfTkVWRVJfRkxPQVRJTkcpOworCQlib25vYm9fZG9ja19pdGVtX2dldF9iZWhhdmlvcihkb2NraXRlbSkKKwkJCQkgICAgICAgfCBCT05PQk9fRE9DS19JVEVNX0JFSF9ORVZFUl9GTE9BVElORyk7CiAJZ3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZ3VpLnRvb2xiYXIpLCAwKTsKICMgIGVsc2UKIAlHdGtXaWRnZXQgKmRvY2tpdGVtOwpkaWZmIC0tZ2l0IGEvc3JjL29wdGlvbi5jIGIvc3JjL29wdGlvbi5jCmluZGV4IDczOTMzYjQuLmZmMzNlMGYgMTAwNjQ0Ci0tLSBhL3NyYy9vcHRpb24uYworKysgYi9zcmMvb3B0aW9uLmMKQEAgLTYwNTMsNyArNjA1Myw3IEBACiAjaWYgZGVmaW5lZChGRUFUX0dVSV9UQUJMSU5FKQogICAgIC8qICdndWl0YWJsYWJlbCcgKi8KICAgICBlbHNlIGlmICh2YXJwID09ICZwX2d0bCkKLQlndWlfdXBkYXRlX3RhYmxpbmUoKTsKKwlndWlfaW5pdF93aGljaF9jb21wb25lbnRzKE5VTEwpOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKEZFQVRfTU9VU0VfVFRZKSAmJiAoZGVmaW5lZChVTklYKSB8fCBkZWZpbmVkKFZNUykpCmRpZmYgLS1naXQgYS9zcmMvcXVpY2tmaXguYyBiL3NyYy9xdWlja2ZpeC5jCmluZGV4IDdkNGEwMDYuLmYyMmM4NjAgMTAwNjQ0Ci0tLSBhL3NyYy9xdWlja2ZpeC5jCisrKyBiL3NyYy9xdWlja2ZpeC5jCkBAIC0zNDk3LDggKzM0OTcsMTAgQEAKIC8qCiAgKiAiOltyYW5nZV1jYnVmZmVyIFtidWZucl0iIGNvbW1hbmQuCiAgKiAiOltyYW5nZV1jYWRkYnVmZmVyIFtidWZucl0iIGNvbW1hbmQuCisgKiAiOltyYW5nZV1jZ2V0YnVmZmVyIFtidWZucl0iIGNvbW1hbmQuCiAgKiAiOltyYW5nZV1sYnVmZmVyIFtidWZucl0iIGNvbW1hbmQuCiAgKiAiOltyYW5nZV1sYWRkYnVmZmVyIFtidWZucl0iIGNvbW1hbmQuCisgKiAiOltyYW5nZV1sZ2V0YnVmZmVyIFtidWZucl0iIGNvbW1hbmQuCiAgKi8KICAgICB2b2lkCiBleF9jYnVmZmVyKGVhcCkKQEAgLTM1MDcsNyArMzUwOSw4IEBACiAgICAgYnVmX1QJKmJ1ZiA9IE5VTEw7CiAgICAgcWZfaW5mb19UCSpxaSA9ICZxbF9pbmZvOwogCi0gICAgaWYgKGVhcC0+Y21kaWR4ID09IENNRF9sYnVmZmVyIHx8IGVhcC0+Y21kaWR4ID09IENNRF9sYWRkYnVmZmVyKQorICAgIGlmIChlYXAtPmNtZGlkeCA9PSBDTURfbGJ1ZmZlciB8fCBlYXAtPmNtZGlkeCA9PSBDTURfbGdldGJ1ZmZlcgorCSAgICB8fCBlYXAtPmNtZGlkeCA9PSBDTURfbGFkZGJ1ZmZlcikKICAgICB7CiAJcWkgPSBsbF9nZXRfb3JfYWxsb2NfbGlzdChjdXJ3aW4pOwogCWlmIChxaSA9PSBOVUxMKQpAQCAtMzUzNCwxMiArMzUzNywxMiBAQAogCSAgICBFTVNHKF8oZV9pbnZyYW5nZSkpOwogCWVsc2UKIAl7Ci0JICAgIGludAkJYnVmZmVyX2NtZCA9IChlYXAtPmNtZGlkeCA9PSBDTURfY2J1ZmZlcgotCQkJCQkgICAgICAgfHwgZWFwLT5jbWRpZHggPT0gQ01EX2xidWZmZXIpOwotCi0JICAgIGlmIChxZl9pbml0X2V4dChxaSwgTlVMTCwgYnVmLCBOVUxMLCBwX2VmbSwgYnVmZmVyX2NtZCwKKwkgICAgaWYgKHFmX2luaXRfZXh0KHFpLCBOVUxMLCBidWYsIE5VTEwsIHBfZWZtLAorCQkJICAgIChlYXAtPmNtZGlkeCAhPSBDTURfY2FkZGJ1ZmZlcgorCQkJICAgICAmJiBlYXAtPmNtZGlkeCAhPSBDTURfbGFkZGJ1ZmZlciksCiAJCQkJCQkgICBlYXAtPmxpbmUxLCBlYXAtPmxpbmUyKSA+IDAKLQkJICAgICYmIGJ1ZmZlcl9jbWQpCisJCSAgICAmJiAoZWFwLT5jbWRpZHggPT0gQ01EX2NidWZmZXIKKwkJCXx8IGVhcC0+Y21kaWR4ID09IENNRF9sYnVmZmVyKSkKIAkJcWZfanVtcChxaSwgMCwgMCwgZWFwLT5mb3JjZWl0KTsgIC8qIGRpc3BsYXkgZmlyc3QgZXJyb3IgKi8KIAl9CiAgICAgfQpAQCAtMzU0Nyw4ICszNTUwLDggQEAKIAogI2lmIGRlZmluZWQoRkVBVF9FVkFMKSB8fCBkZWZpbmVkKFBST1RPKQogLyoKLSAqICI6Y2V4cHIge2V4cHJ9IiBhbmQgIjpjYWRkZXhwciB7ZXhwcn0iIGNvbW1hbmQuCi0gKiAiOmxleHByIHtleHByfSIgYW5kICI6bGFkZGV4cHIge2V4cHJ9IiBjb21tYW5kLgorICogIjpjZXhwciB7ZXhwcn0iLCAiOmNnZXRleHByIHtleHByfSIsICI6Y2FkZGV4cHIge2V4cHJ9IiBjb21tYW5kLgorICogIjpsZXhwciB7ZXhwcn0iLCAiOmxnZXRleHByIHtleHByfSIsICI6bGFkZGV4cHIge2V4cHJ9IiBjb21tYW5kLgogICovCiAgICAgdm9pZAogZXhfY2V4cHIoZWFwKQpAQCAtMzU1Nyw3ICszNTYwLDggQEAKICAgICB0eXB2YWxfVAkqdHY7CiAgICAgcWZfaW5mb19UCSpxaSA9ICZxbF9pbmZvOwogCi0gICAgaWYgKGVhcC0+Y21kaWR4ID09IENNRF9sZXhwciB8fCBlYXAtPmNtZGlkeCA9PSBDTURfbGFkZGV4cHIpCisgICAgaWYgKGVhcC0+Y21kaWR4ID09IENNRF9sZXhwciB8fCBlYXAtPmNtZGlkeCA9PSBDTURfbGdldGV4cHIKKwkgICAgfHwgZWFwLT5jbWRpZHggPT0gQ01EX2xhZGRleHByKQogICAgIHsKIAlxaSA9IGxsX2dldF9vcl9hbGxvY19saXN0KGN1cndpbik7CiAJaWYgKHFpID09IE5VTEwpCkBAIC0zNTcyLDExICszNTc2LDEyIEBACiAJaWYgKCh0di0+dl90eXBlID09IFZBUl9TVFJJTkcgJiYgdHYtPnZ2YWwudl9zdHJpbmcgIT0gTlVMTCkKIAkJfHwgKHR2LT52X3R5cGUgPT0gVkFSX0xJU1QgJiYgdHYtPnZ2YWwudl9saXN0ICE9IE5VTEwpKQogCXsKLQkgICAgaW50CSAgICBleHByX2NtZCA9IChlYXAtPmNtZGlkeCA9PSBDTURfY2V4cHIKLQkJCQl8fCBlYXAtPmNtZGlkeCA9PSBDTURfbGV4cHIpOwotCSAgICBpZiAocWZfaW5pdF9leHQocWksIE5VTEwsIE5VTEwsIHR2LCBwX2VmbSwgZXhwcl9jbWQsCisJICAgIGlmIChxZl9pbml0X2V4dChxaSwgTlVMTCwgTlVMTCwgdHYsIHBfZWZtLAorCQkJICAgIChlYXAtPmNtZGlkeCAhPSBDTURfY2FkZGV4cHIKKwkJCSAgICAgJiYgZWFwLT5jbWRpZHggIT0gQ01EX2xhZGRleHByKSwKIAkJCQkJCSAobGluZW5yX1QpMCwgKGxpbmVucl9UKTApID4gMAotCQkgICAgJiYgZXhwcl9jbWQpCisJCSAgICAmJiAoZWFwLT5jbWRpZHggPT0gQ01EX2NleHByCisJCQl8fCBlYXAtPmNtZGlkeCA9PSBDTURfbGV4cHIpKQogCQlxZl9qdW1wKHFpLCAwLCAwLCBlYXAtPmZvcmNlaXQpOyAgLyogZGlzcGxheSBmaXJzdCBlcnJvciAqLwogCX0KIAllbHNlCmRpZmYgLS1naXQgYS9zcmMvcmVnZXhwLmMgYi9zcmMvcmVnZXhwLmMKaW5kZXggZGQwN2VhNy4uZTBiZmIwMyAxMDA2NDQKLS0tIGEvc3JjL3JlZ2V4cC5jCisrKyBiL3NyYy9yZWdleHAuYwpAQCAtNjg1NCw2ICs2ODU0LDIzIEBACiAJfQogCWlmIChubyA8IDApCSAgICAgIC8qIE9yZGluYXJ5IGNoYXJhY3Rlci4gKi8KIAl7CisJICAgIGlmIChjID09IEtfU1BFQ0lBTCAmJiBzcmNbMF0gIT0gTlVMICYmIHNyY1sxXSAhPSBOVUwpCisJICAgIHsKKwkJLyogQ29weSBhIHNwZWNpYWx5IGtleSBhcy1pcy4gKi8KKwkJaWYgKGNvcHkpCisJCXsKKwkJICAgICpkc3QrKyA9IGM7CisJCSAgICAqZHN0KysgPSAqc3JjKys7CisJCSAgICAqZHN0KysgPSAqc3JjKys7CisJCX0KKwkJZWxzZQorCQl7CisJCSAgICBkc3QgKz0gMzsKKwkJICAgIHNyYyArPSAyOworCQl9CisJCWNvbnRpbnVlOworCSAgICB9CisKIAkgICAgaWYgKGMgPT0gJ1xcJyAmJiAqc3JjICE9IE5VTCkKIAkgICAgewogCQkvKiBDaGVjayBmb3IgYWJicmV2aWF0aW9ucyAtLSB3ZWJiICovCkBAIC02ODc3LDEzICs2ODk0LDEyIEBACiAJCQkJYyA9ICpzcmMrKzsKIAkJfQogCSAgICB9Ci0KLQkgICAgLyogV3JpdGUgdG8gYnVmZmVyLCBpZiBjb3B5IGlzIHNldC4gKi8KICNpZmRlZiBGRUFUX01CWVRFCi0JICAgIGlmIChoYXNfbWJ5dGUpCisJICAgIGVsc2UgaWYgKGhhc19tYnl0ZSkKIAkJYyA9IG1iX3B0cjJjaGFyKHNyYyAtIDEpOwogI2VuZGlmCiAKKwkgICAgLyogV3JpdGUgdG8gYnVmZmVyLCBpZiBjb3B5IGlzIHNldC4gKi8KIAkgICAgaWYgKGZ1bmMgPT0gKGZwdHJfVClOVUxMKQkvKiBqdXN0IGNvcHkgKi8KIAkJY2MgPSBjOwogCSAgICBlbHNlCmRpZmYgLS1naXQgYS9zcmMvc2NyZWVuLmMgYi9zcmMvc2NyZWVuLmMKaW5kZXggZmJjM2ZlZS4uMGU4Yjg2NyAxMDA2NDQKLS0tIGEvc3JjL3NjcmVlbi5jCisrKyBiL3NyYy9zY3JlZW4uYwpAQCAtODc5MSw3ICs4NzkxLDcgQEAKICAgICByZWRyYXdfdGFibGluZSA9IEZBTFNFOwogCiAjaWZkZWYgRkVBVF9HVUlfVEFCTElORQotICAgIC8qIFdoZW4gdGhlIEdVSSBoYXMgdGhlIHRhYmxpbmUgdGhlbiB0aGlzIGFsd2F5cyByZXR1cm5zIHplcm8uICovCisgICAgLyogVGFrZSBjYXJlIG9mIGEgR1VJIHRhYmxpbmUuICovCiAgICAgaWYgKGd1aV91c2VfdGFibGluZSgpKQogICAgIHsKIAlndWlfdXBkYXRlX3RhYmxpbmUoKTsKZGlmZiAtLWdpdCBhL3NyYy91bmRvLmMgYi9zcmMvdW5kby5jCmluZGV4IGVkMTA2YzEuLjhkMjNlNzcgMTAwNjQ0Ci0tLSBhL3NyYy91bmRvLmMKKysrIGIvc3JjL3VuZG8uYwpAQCAtODgsNyArODgsNyBAQAogc3RhdGljIGludCB1X3NhdmVjb21tb24gX19BUkdTKChsaW5lbnJfVCwgbGluZW5yX1QsIGxpbmVucl9UKSk7CiBzdGF0aWMgdm9pZCB1X2RvaXQgX19BUkdTKChpbnQgY291bnQpKTsKIHN0YXRpYyB2b2lkIHVfdW5kb3JlZG8gX19BUkdTKChpbnQgdW5kbykpOwotc3RhdGljIHZvaWQgdV91bmRvX2VuZCBfX0FSR1MoKGludCBkaWRfdW5kbykpOworc3RhdGljIHZvaWQgdV91bmRvX2VuZCBfX0FSR1MoKGludCBkaWRfdW5kbywgaW50IGFic29sdXRlKSk7CiBzdGF0aWMgdm9pZCB1X2FkZF90aW1lIF9fQVJHUygoY2hhcl91ICpidWYsIHNpemVfdCBidWZsZW4sIHRpbWVfdCB0dCkpOwogc3RhdGljIHZvaWQgdV9mcmVlaGVhZGVyIF9fQVJHUygoYnVmX1QgKmJ1ZiwgdV9oZWFkZXJfVCAqdWhwLCB1X2hlYWRlcl9UICoqdWhwcCkpOwogc3RhdGljIHZvaWQgdV9mcmVlYnJhbmNoIF9fQVJHUygoYnVmX1QgKmJ1ZiwgdV9oZWFkZXJfVCAqdWhwLCB1X2hlYWRlcl9UICoqdWhwcCkpOwpAQCAtNjM4LDcgKzYzOCw3IEBACiAJICAgIGN1cmJ1Zi0+Yl91X2N1cmhlYWQgPSBjdXJidWYtPmJfdV9jdXJoZWFkLT51aF9wcmV2OwogCX0KICAgICB9Ci0gICAgdV91bmRvX2VuZCh1bmRvX3VuZG9lcyk7CisgICAgdV91bmRvX2VuZCh1bmRvX3VuZG9lcywgRkFMU0UpOwogfQogCiBzdGF0aWMgaW50IGxhc3RtYXJrID0gMDsKQEAgLTcwNCw3ICs3MDQsNyBAQAogCWVsc2UKIAl7CiAJICAgIGlmIChzZWMpCi0JCWNsb3Nlc3QgPSB0aW1lKE5VTEwpIC0gc3RhcnR0aW1lICsgMTsKKwkJY2xvc2VzdCA9IChsb25nKSh0aW1lKE5VTEwpIC0gc3RhcnR0aW1lICsgMSk7CiAJICAgIGVsc2UKIAkJY2xvc2VzdCA9IGN1cmJ1Zi0+Yl91X3NlcV9sYXN0ICsgMjsKIAkgICAgaWYgKHRhcmdldCA+PSBjbG9zZXN0KQpAQCAtNzM5LDcgKzczOSw3IEBACiAJd2hpbGUgKHVocCAhPSBOVUxMKQogCXsKIAkgICAgdWhwLT51aF93YWxrID0gbWFyazsKLQkgICAgdmFsID0gKGRvc2VjID8gKHVocC0+dWhfdGltZSAtIHN0YXJ0dGltZSkgOiB1aHAtPnVoX3NlcSk7CisJICAgIHZhbCA9IChsb25nKShkb3NlYyA/ICh1aHAtPnVoX3RpbWUgLSBzdGFydHRpbWUpIDogdWhwLT51aF9zZXEpOwogCiAJICAgIGlmIChyb3VuZCA9PSAxKQogCSAgICB7CkBAIC03ODgsNyArNzg4LDEyIEBACiAJICAgIGVsc2UgaWYgKHVocC0+dWhfbmV4dCAhPSBOVUxMICYmIHVocC0+dWhfYWx0X3ByZXYgPT0gTlVMTAogCQkgICAgJiYgdWhwLT51aF9uZXh0LT51aF93YWxrICE9IG5vbWFyawogCQkgICAgJiYgdWhwLT51aF9uZXh0LT51aF93YWxrICE9IG1hcmspCisJICAgIHsKKwkJLyogSWYgc3RpbGwgYXQgdGhlIHN0YXJ0IHdlIGRvbid0IGdvIHRocm91Z2ggdGhpcyBjaGFuZ2UuICovCisJCWlmICh1aHAgPT0gY3VyYnVmLT5iX3VfY3VyaGVhZCkKKwkJICAgIHVocC0+dWhfd2FsayA9IG5vbWFyazsKIAkJdWhwID0gdWhwLT51aF9uZXh0OworCSAgICB9CiAKIAkgICAgZWxzZQogCSAgICB7CkBAIC04ODAsNyArODg1LDEwIEBACiAJICAgIC8qIFN0b3Agd2hlbiBnb2luZyBiYWNrd2FyZHMgaW4gdGltZSBhbmQgZGlkbid0IGZpbmQgdGhlIGV4YWN0CiAJICAgICAqIGhlYWRlciB3ZSB3ZXJlIGxvb2tpbmcgZm9yLiAqLwogCSAgICBpZiAodWhwLT51aF9zZXEgPT0gdGFyZ2V0ICYmIGFib3ZlKQorCSAgICB7CisJCWN1cmJ1Zi0+Yl91X3NlcV9jdXIgPSB0YXJnZXQgLSAxOwogCQlicmVhazsKKwkgICAgfQogCiAJICAgIHVfdW5kb3JlZG8oRkFMU0UpOwogCkBAIC05MDMsNyArOTExLDcgQEAKIAkgICAgfQogCX0KICAgICB9Ci0gICAgdV91bmRvX2VuZChkaWRfdW5kbyk7CisgICAgdV91bmRvX2VuZChkaWRfdW5kbywgYWJzb2x1dGUpOwogfQogCiAvKgpAQCAtMTE3Niw4ICsxMTg0LDkgQEAKICAqIGluIHNvbWUgY2FzZXMsIGJ1dCBpdCdzIGJldHRlciB0aGFuIG5vdGhpbmcpLgogICovCiAgICAgc3RhdGljIHZvaWQKLXVfdW5kb19lbmQoZGlkX3VuZG8pCit1X3VuZG9fZW5kKGRpZF91bmRvLCBhYnNvbHV0ZSkKICAgICBpbnQJCWRpZF91bmRvOwkvKiBqdXN0IGRpZCBhbiB1bmRvICovCisgICAgaW50CQlhYnNvbHV0ZTsJLyogdXNlZCAiOnVuZG8gTiIgKi8KIHsKICAgICBjaGFyCSptc2c7CiAgICAgdV9oZWFkZXJfVAkqdWhwOwpAQCAtMTIxNSw3ICsxMjI0LDEzIEBACiAKICAgICBpZiAoY3VyYnVmLT5iX3VfY3VyaGVhZCAhPSBOVUxMKQogICAgIHsKLQlpZiAoZGlkX3VuZG8pCisJLyogRm9yICI6dW5kbyBOIiB3ZSBwcmVmZXIgYSAiYWZ0ZXIgI04iIG1lc3NhZ2UuICovCisJaWYgKGFic29sdXRlICYmIGN1cmJ1Zi0+Yl91X2N1cmhlYWQtPnVoX25leHQgIT0gTlVMTCkKKwl7CisJICAgIHVocCA9IGN1cmJ1Zi0+Yl91X2N1cmhlYWQtPnVoX25leHQ7CisJICAgIGRpZF91bmRvID0gRkFMU0U7CisJfQorCWVsc2UgaWYgKGRpZF91bmRvKQogCSAgICB1aHAgPSBjdXJidWYtPmJfdV9jdXJoZWFkOwogCWVsc2UKIAkgICAgdWhwID0gY3VyYnVmLT5iX3VfY3VyaGVhZC0+dWhfbmV4dDsKZGlmZiAtLWdpdCBhL3NyYy92ZXJzaW9uLmggYi9zcmMvdmVyc2lvbi5oCmluZGV4IDZiYTU0OGIuLmYzYTg3ZjcgMTAwNjQ0Ci0tLSBhL3NyYy92ZXJzaW9uLmgKKysrIGIvc3JjL3ZlcnNpb24uaApAQCAtMzYsNSArMzYsNSBAQAogI2RlZmluZSBWSU1fVkVSU0lPTl9OT0RPVAkidmltNzBhYSIKICNkZWZpbmUgVklNX1ZFUlNJT05fU0hPUlQJIjcuMGFhIgogI2RlZmluZSBWSU1fVkVSU0lPTl9NRURJVU0JIjcuMGFhIEFMUEhBIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNiBNYXIgMjEpIgotI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA2IE1hciAyMSwgY29tcGlsZWQgIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HCSJWSU0gLSBWaSBJTXByb3ZlZCA3LjBhYSBBTFBIQSAoMjAwNiBNYXIgMjMpIgorI2RlZmluZSBWSU1fVkVSU0lPTl9MT05HX0RBVEUJIlZJTSAtIFZpIElNcHJvdmVkIDcuMGFhIEFMUEhBICgyMDA2IE1hciAyMywgY29tcGlsZWQgIgo=