ZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CmluZGV4IGM5MDBlYTcuLjJjODVjODYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdApAQCAtNDQsNyArNDQsNyBAQAogbm90IGV4aXQgdW50aWwgYWxsIHRocmVhZHMgY3JlYXRlZCBieSA6Y2xhc3M6YFRocmVhZGluZ01peEluYCBoYXZlIGV4aXRlZC4KIAogU2VydmVyIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZSBleHRlcm5hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzLCBubyBtYXR0ZXIgd2hhdAotbmV0d29yayBwcm90b2NvbCB0aGV5IHVzZToKK25ldHdvcmsgcHJvdG9jb2wgdGhleSB1c2UuCiAKIAogU2VydmVyIENyZWF0aW9uIE5vdGVzCkBAIC0xOTMsNiArMTkzLDEzIEBACiAgICBUaGUgdHlwZSBvZiBzb2NrZXQgdXNlZCBieSB0aGUgc2VydmVyOyA6Y29uc3Q6YHNvY2tldC5TT0NLX1NUUkVBTWAgYW5kCiAgICA6Y29uc3Q6YHNvY2tldC5TT0NLX0RHUkFNYCBhcmUgdHdvIHBvc3NpYmxlIHZhbHVlcy4KIAorLi4gZGF0YTo6IHRpbWVvdXQKKworICAgVGltZW91dCBkdXJhdGlvbiwgbWVhc3VyZWQgaW4gc2Vjb25kcywgb3IgOmNvbnN0OmBOb25lYCBpZiBubyB0aW1lb3V0IGlzIGRlc2lyZWQuCisgICBJZiBubyBpbmNvbWluZyByZXF1ZXN0cyBhcmUgcmVjZWl2ZWQgd2l0aGluIHRoZSB0aW1lb3V0IHBlcmlvZCwgCisgICB0aGUgOm1ldGg6YGhhbmRsZV90aW1lb3V0YCBtZXRob2QgaXMgY2FsbGVkIGFuZCB0aGVuIHRoZSBzZXJ2ZXIgcmVzdW1lcyB3YWl0aW5nIGZvciAKKyAgIHJlcXVlc3RzLgorCiBUaGVyZSBhcmUgdmFyaW91cyBzZXJ2ZXIgbWV0aG9kcyB0aGF0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgb2YgYmFzZQogc2VydmVyIGNsYXNzZXMgbGlrZSA6Y2xhc3M6YFRDUFNlcnZlcmA7IHRoZXNlIG1ldGhvZHMgYXJlbid0IHVzZWZ1bCB0byBleHRlcm5hbAogdXNlcnMgb2YgdGhlIHNlcnZlciBvYmplY3QuCkBAIC0yMjAsNiArMjI3LDEzIEBACiAgICBtZXRob2QgcmFpc2VzIGFuIGV4Y2VwdGlvbi4gIFRoZSBkZWZhdWx0IGFjdGlvbiBpcyB0byBwcmludCB0aGUgdHJhY2ViYWNrIHRvCiAgICBzdGFuZGFyZCBvdXRwdXQgYW5kIGNvbnRpbnVlIGhhbmRsaW5nIGZ1cnRoZXIgcmVxdWVzdHMuCiAKKy4uIGZ1bmN0aW9uOjogaGFuZGxlX3RpbWVvdXQoKQorCisgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIHRoZSA6YXR0cjpgdGltZW91dGAgYXR0cmlidXRlIGhhcyBiZWVuIHNldCB0byBhIAorICAgdmFsdWUgb3RoZXIgdGhhbiA6Y29uc3Q6YE5vbmVgIGFuZCB0aGUgdGltZW91dCBwZXJpb2QgaGFzIHBhc3NlZCB3aXRoIG5vIAorICAgcmVxdWVzdHMgYmVpbmcgcmVjZWl2ZWQuICBUaGUgZGVmYXVsdCBhY3Rpb24gZm9yIGZvcmtpbmcgc2VydmVycyBpcworICAgdG8gY29sbGVjdCB0aGUgc3RhdHVzIG9mIGFueSBjaGlsZCBwcm9jZXNzZXMgdGhhdCBoYXZlIGV4aXRlZCwgd2hpbGUKKyAgIGluIHRocmVhZGluZyBzZXJ2ZXJzIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KIAogLi4gZnVuY3Rpb246OiBwcm9jZXNzX3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAKZGlmZiAtLWdpdCBhL0xpYi9Tb2NrZXRTZXJ2ZXIucHkgYi9MaWIvU29ja2V0U2VydmVyLnB5CmluZGV4IDU1MDZhYTUuLjJlZWQ5MTQgMTAwNjQ0Ci0tLSBhL0xpYi9Tb2NrZXRTZXJ2ZXIucHkKKysrIGIvTGliL1NvY2tldFNlcnZlci5weQpAQCAtMTU4LDYgKzE1OCw3IEBACiAgICAgLSBzZXJ2ZXJfYmluZCgpCiAgICAgLSBzZXJ2ZXJfYWN0aXZhdGUoKQogICAgIC0gZ2V0X3JlcXVlc3QoKSAtPiByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcworICAgIC0gaGFuZGxlX3RpbWVvdXQoKQogICAgIC0gdmVyaWZ5X3JlcXVlc3QocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgLSBzZXJ2ZXJfY2xvc2UoKQogICAgIC0gcHJvY2Vzc19yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQpAQCAtMTcxLDYgKzE3Miw3IEBACiAgICAgQ2xhc3MgdmFyaWFibGVzIHRoYXQgbWF5IGJlIG92ZXJyaWRkZW4gYnkgZGVyaXZlZCBjbGFzc2VzIG9yCiAgICAgaW5zdGFuY2VzOgogCisgICAgLSB0aW1lb3V0CiAgICAgLSBhZGRyZXNzX2ZhbWlseQogICAgIC0gc29ja2V0X3R5cGUKICAgICAtIGFsbG93X3JldXNlX2FkZHJlc3MKQEAgLTE4Miw2ICsxODQsOCBAQAogCiAgICAgIiIiCiAKKyAgICB0aW1lb3V0ID0gTm9uZQorCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9hZGRyZXNzLCBSZXF1ZXN0SGFuZGxlckNsYXNzKToKICAgICAgICAgIiIiQ29uc3RydWN0b3IuICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4iIiIKICAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkcmVzcyA9IHNlcnZlcl9hZGRyZXNzCkBAIC0yMDQsOCArMjA4LDkgQEAKICAgICAjIGZpbmlzaGluZyBhIHJlcXVlc3QgaXMgZmFpcmx5IGFyYml0cmFyeS4gIFJlbWVtYmVyOgogICAgICMKICAgICAjIC0gaGFuZGxlX3JlcXVlc3QoKSBpcyB0aGUgdG9wLWxldmVsIGNhbGwuICBJdCBjYWxscwotICAgICMgICBnZXRfcmVxdWVzdCgpLCB2ZXJpZnlfcmVxdWVzdCgpIGFuZCBwcm9jZXNzX3JlcXVlc3QoKQotICAgICMgLSBnZXRfcmVxdWVzdCgpIGlzIGRpZmZlcmVudCBmb3Igc3RyZWFtIG9yIGRhdGFncmFtIHNvY2tldHMKKyAgICAjICAgYXdhaXRfcmVxdWVzdCgpLCB2ZXJpZnlfcmVxdWVzdCgpIGFuZCBwcm9jZXNzX3JlcXVlc3QoKQorICAgICMgLSBnZXRfcmVxdWVzdCgpLCBjYWxsZWQgYnkgYXdhaXRfcmVxdWVzdCgpLCBpcyBkaWZmZXJlbnQgZm9yCisgICAgIyAgIHN0cmVhbSBvciBkYXRhZ3JhbSBzb2NrZXRzCiAgICAgIyAtIHByb2Nlc3NfcmVxdWVzdCgpIGlzIHRoZSBwbGFjZSB0aGF0IG1heSBmb3JrIGEgbmV3IHByb2Nlc3MKICAgICAjICAgb3IgY3JlYXRlIGEgbmV3IHRocmVhZCB0byBmaW5pc2ggdGhlIHJlcXVlc3QKICAgICAjIC0gZmluaXNoX3JlcXVlc3QoKSBpbnN0YW50aWF0ZXMgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzczsKQEAgLTIxNCw3ICsyMTksNyBAQAogICAgIGRlZiBoYW5kbGVfcmVxdWVzdChzZWxmKToKICAgICAgICAgIiIiSGFuZGxlIG9uZSByZXF1ZXN0LCBwb3NzaWJseSBibG9ja2luZy4iIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MgPSBzZWxmLmdldF9yZXF1ZXN0KCkKKyAgICAgICAgICAgIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzID0gc2VsZi5hd2FpdF9yZXF1ZXN0KCkKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBzZWxmLnZlcmlmeV9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKQEAgLTIyNCw2ICsyMjksMjggQEAKICAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKIAorICAgIGRlZiBhd2FpdF9yZXF1ZXN0KHNlbGYpOgorICAgICAgICAiIiJDYWxsIGdldF9yZXF1ZXN0IG9yIGhhbmRsZV90aW1lb3V0LCBvYnNlcnZpbmcgc2VsZi50aW1lb3V0LgorCisgICAgICAgIFJldHVybnMgdmFsdWUgZnJvbSBnZXRfcmVxdWVzdCgpIG9yIHJhaXNlcyBzb2NrZXQudGltZW91dCBleGNlcHRpb24gaWYKKyAgICAgICAgdGltZW91dCB3YXMgZXhjZWVkZWQuCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLnRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIElmIHRpbWVvdXQgPT0gMCwgeW91J3JlIHJlc3BvbnNpYmxlIGZvciB5b3VyIG93biBmZCBtYWdpYy4KKyAgICAgICAgICAgIGltcG9ydCBzZWxlY3QKKyAgICAgICAgICAgIGZkX3NldHMgPSBzZWxlY3Quc2VsZWN0KFtzZWxmXSwgW10sIFtdLCBzZWxmLnRpbWVvdXQpCisgICAgICAgICAgICBpZiBub3QgZmRfc2V0c1swXToKKyAgICAgICAgICAgICAgICBzZWxmLmhhbmRsZV90aW1lb3V0KCkKKyAgICAgICAgICAgICAgICByYWlzZSBzb2NrZXQudGltZW91dCgiTGlzdGVuaW5nIHRpbWVkIG91dCIpCisgICAgICAgIHJldHVybiBzZWxmLmdldF9yZXF1ZXN0KCkKKworICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKKyAgICAgICAgIiIiQ2FsbGVkIGlmIG5vIG5ldyByZXF1ZXN0IGFycml2ZXMgd2l0aGluIHNlbGYudGltZW91dC4KKworICAgICAgICBPdmVycmlkZGVuIGJ5IEZvcmtpbmdNaXhJbi4KKyAgICAgICAgIiIiCisgICAgICAgIHBhc3MKKwogICAgIGRlZiB2ZXJpZnlfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CiAgICAgICAgICIiIlZlcmlmeSB0aGUgcmVxdWVzdC4gIE1heSBiZSBvdmVycmlkZGVuLgogCkBAIC0yODksNiArMzE2LDcgQEAKICAgICAtIHNlcnZlcl9iaW5kKCkKICAgICAtIHNlcnZlcl9hY3RpdmF0ZSgpCiAgICAgLSBnZXRfcmVxdWVzdCgpIC0+IHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzCisgICAgLSBoYW5kbGVfdGltZW91dCgpCiAgICAgLSB2ZXJpZnlfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgICAtIHByb2Nlc3NfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKICAgICAtIGNsb3NlX3JlcXVlc3QocmVxdWVzdCkKQEAgLTMwMSw2ICszMjksNyBAQAogICAgIENsYXNzIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBvdmVycmlkZGVuIGJ5IGRlcml2ZWQgY2xhc3NlcyBvcgogICAgIGluc3RhbmNlczoKIAorICAgIC0gdGltZW91dAogICAgIC0gYWRkcmVzc19mYW1pbHkKICAgICAtIHNvY2tldF90eXBlCiAgICAgLSByZXF1ZXN0X3F1ZXVlX3NpemUgKG9ubHkgZm9yIHN0cmVhbSBzb2NrZXRzKQpAQCAtNDA1LDExICs0MzQsMTIgQEAKIAogICAgICIiIk1peC1pbiBjbGFzcyB0byBoYW5kbGUgZWFjaCByZXF1ZXN0IGluIGEgbmV3IHByb2Nlc3MuIiIiCiAKKyAgICB0aW1lb3V0ID0gMzAwCiAgICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQogICAgIG1heF9jaGlsZHJlbiA9IDQwCiAKICAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKLSAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBkaWVkIGNoaWxkcmVuLiIiIgorICAgICAgICAiIiJJbnRlcm5hbCByb3V0aW5lIHRvIHdhaXQgZm9yIGNoaWxkcmVuIHRoYXQgaGF2ZSBleGl0ZWQuIiIiCiAgICAgICAgIHdoaWxlIHNlbGYuYWN0aXZlX2NoaWxkcmVuOgogICAgICAgICAgICAgaWYgbGVuKHNlbGYuYWN0aXZlX2NoaWxkcmVuKSA8IHNlbGYubWF4X2NoaWxkcmVuOgogICAgICAgICAgICAgICAgIG9wdGlvbnMgPSBvcy5XTk9IQU5HCkBAIC00MjQsNiArNDU0LDEzIEBACiAgICAgICAgICAgICBpZiBub3QgcGlkOiBicmVhawogICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4ucmVtb3ZlKHBpZCkKIAorICAgIGRlZiBoYW5kbGVfdGltZW91dChzZWxmKToKKyAgICAgICAgIiIiV2FpdCBmb3Igem9tYmllcyBhZnRlciBzZWxmLnRpbWVvdXQgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgIE1heSBiZSBleHRlbmRlZCwgZG8gbm90IG92ZXJyaWRlLgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKwogICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgogICAgICAgICAiIiJGb3JrIGEgbmV3IHN1YnByb2Nlc3MgdG8gcHJvY2VzcyB0aGUgcmVxdWVzdC4iIiIKICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCAyYWU0NTI4Li5jZjY1NDI0IDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC01MjEsNiArNTIxLDcgQEAKIEZyYW7nb2lzIFBpbmFyZAogWmFjaCBQaW5jdXMKIE1pY2hhZWwgUGlvdHJvd3NraQorTWljaGFlbCBQb21yYW5pbmcKIEl1c3RpbiBQb3AKIEpvaG4gUG9wcGxld2VsbAogQW1yaXQgUHJlbQpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTIGIvTWlzYy9ORVdTCmluZGV4IDM1ZDk2MzQuLjllMjViOTYgMTAwNjQ0Ci0tLSBhL01pc2MvTkVXUworKysgYi9NaXNjL05FV1MKQEAgLTcwNCw2ICs3MDQsOSBAQAogICBiZSBlcXVhbCB0byBjYWxsaW5nIGdldHNvY2tuYW1lKCkgb24gdGhlIHNlcnZlcidzIHNvY2tldC4gRml4ZWQgYnkKICAgcGF0Y2ggIzE1NDUwMTEuCiAKKy0gUGF0Y2ggIzc0MjU5ODogQWRkIC50aW1lb3V0IGF0dHJpYnV0ZSB0byBTb2NrZXRTZXJ2ZXIgdGhhdCBjYWxscworICAuaGFuZGxlX3RpbWVvdXQoKSB3aGVuIG5vIHJlcXVlc3RzIGFyZSByZWNlaXZlZC4KKwogLSBCdWcgIzE2NTEyMzU6IFdoZW4gYSB0dXBsZSB3YXMgcGFzc2VkIHRvIGEgY3R5cGVzIGZ1bmN0aW9uIGNhbGwsCiAgIFB5dGhvbiB3b3VsZCBjcmFzaCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCiAK