ZGlmZiAtLWdpdCBhL3Bva3kvUkVBRE1FLkxTQiBiL3Bva3kvUkVBRE1FLkxTQgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjYmU1NC4uMDAwMDAwMAotLS0gYS9wb2t5L1JFQURNRS5MU0IKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1PRS1Db3JlIGFpbXMgdG8gYmUgYWJsZSB0byBwcm92aWRlIGJhc2ljIExTQiBjb21wYXRpYmxlIGltYWdlcy4gVGhlcmUKLWFyZSBzb21lIGNoYWxsZW5nZXMgZm9yIE9FIGFzIExTQiBpc24ndCBhbHdheXMgMTAwJSByZWxldmFudCB0byBpdHMKLXRhcmdldCBlbWJlZGRlZCBhbmQgSW9UIGF1ZGllbmNlcy4gCi0KLU9uZSBjaGFsbGVuZ2UgaXMgdGhhdCB0aGUgTFNCIHNwZWMgaXMgbm8gbG9uZ2VyIGJlaW5nIGFjdGl2ZWx5Ci1kZXZlbG9wZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9MaW51eFN0YW5kYXJkQmFzZS9sc2JdIGFuZCBoYXMgCi1jb21wb25lbnRzIHdoaWNoIGFyZSBlbmQgb2YgbGlmZSBvciBzaWduaWZpY2FudGx5IGRhdGVkLiBPRSAKLXRoZXJlZm9yZSBwcm92aWRlcyBjb21wYXRpYmlsaXR5IHdpdGggdGhlIGZvbGxvd2luZyBjYXZlYXRzOgotCi0qIFF0NCBpcyBwcm92aWRlZCBieSB0aGUgc2VwYXJhdGUgbWV0YS1xdDQgbGF5ZXIuIEl0cyBub3RlZCB0aGF0IFF0NCAKLSAgaXMgZW5kIG9mIGxpZmUgYW5kIHRoaXMgaXNuJ3Qgc29tZXRoaW5nIHRoZSBjb3JlIHByb2plY3QgcmVndWxhcmx5IAotICB0ZXN0cyBhbnkgbG9uZ2VyLiBVc2VycyBhcmUgcmVjb21tZW5kZWQgdG8gZ3JvdXAgdG9nZXRoZXIgdG8gc3VwcG9ydAotICBtYWludGVuYW5jZSBvZiB0aGF0IGxheWVyLiBbaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvbWV0YS1xdDQvXQotCi0qIEdUSysgMiBpcyBwcm92aWRlZCBieSBtZXRhLW9lLiAgSXQgaXMgbm90ZWQgdGhhdCBHVEsrIDIgaXMgZW5kIG9mIGxpZmUKLSAgYW5kIHVzZSBvZiBHVEsrIDIgaXNuJ3QgcmVjb21tZW5kZWQuCi0KLSogbWFpbHggaGFzIGJlZW4gZHJvcHBlZCBzaW5jZSBpdHMgbm8gbG9uZ2VyIGJlaW5nIGRldmVsb3BlZCB1cHN0cmVhbSAKLSAgYW5kIHRoZXJlIGFyZSBiZXR0ZXIsIG1vcmUgbW9kZXJuIHJlcGxhY2VtZW50cyBzdWNoIGFzIHMtbmFpbCAKLSAgKGh0dHA6Ly9zZGFvZGVuLmV1L2NvZGUuaHRtbCkgb3IgbWFpbHV0aWxzIChodHRwOi8vbWFpbHV0aWxzLm9yZy8pLgotCi0qIEEgZmV3IHBlcmwgbW9kdWxlcyB0aGF0IHdlcmUgcmVxdWlyZWQgYnkgTFNCIDQueCBhcmVuJ3QgcHJvdmlkZWQ6Ci0gIGxpYmNsYXNzLWlzYSwgbGliZW52LCBsaWJkdW1wdmFsdWUsIGxpYmZpbGUtY2hlY2t0cmVlLAotICBsaWJpMThuLWNvbGxhdGUsIGxpYnBvZC1wbGFpbmVyLgotCi0qIGxpYnBuZyAxLjIgaXNuJ3QgcHJvdmlkZWQ7IG9lLWNvcmUgaW5jbHVkZXMgdGhlIGxhdGVzdCByZWxlYXNlIG9mIGxpYnBuZwotICBpbnN0ZWFkLgotCi0qIHBheCAoUE9TSVggc3RhbmRhcmQgYXJjaGl2ZSkgdG9vbCBpcyBub3QgcHJvdmlkZWQuCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKaW5kZXggYTEyNWFkMy4uODg2MjI0MiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbApAQCAtNDIwLDEzICs0MjAsMTcgQEAKICAgICAgRk9PID0gIjEyMyA0NTYgNzg5IDEyMzQ1NiAxMjMgNDU2IDEyMyA0NTYiCiAgICAgIEZPT19yZW1vdmUgPSAiMTIzIgogICAgICBGT09fcmVtb3ZlID0gIjQ1NiIKLSAgICAgRk9PMiA9ICJhYmMgZGVmIGdoaSBhYmNkZWYgYWJjIGRlZiBhYmMgZGVmIgotICAgICBGT08yX3JlbW92ZSA9ICJhYmMgZGVmIgorICAgICBGT08yID0gIiBhYmMgIGRlZiBnaGkgYWJjZGVmIGFiYyBkZWYgYWJjICBkZWYgZGVmIgorICAgICBGT08yX3JlbW92ZSA9ICIgXAorICAgICAgICAgZGVmIFwKKyAgICAgICAgIGFiYyBcCisgICAgICAgICBnaGkgXAorICAgICAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+Rk9PPC9maWxlbmFtZT4gYmVjb21lcwotICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDs3ODkgMTIzNDU2Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IgorICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDs3ODkmbmJzcDsxMjM0NTYmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsiCiAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5GT08yPC9maWxlbmFtZT4gYmVjb21lcwotICAgICAgICAgICAgICAgICImbmJzcDsmbmJzcDtnaGkgYWJjZGVmJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ii4KKyAgICAgICAgICAgICAgICAiJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7amtsJm5ic3A7Jm5ic3A7YWJjZGVmJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Ii4KICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgPHBhcmE+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CmluZGV4IDA2MDdmY2MuLjU4NDBhYTcgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CkBAIC05MTksNiArOTE5LDEwIEBACiAgICAgICAgICAgICBvcy51bmxpbmsoJ3BhY2thZ2UtZGVwZW5kcy5kb3QnKQogICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3I6CiAgICAgICAgICAgICBwYXNzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnVubGluaygncmVjaXBlLWRlcGVuZHMuZG90JykKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgcGFzcwogCiAgICAgICAgIHdpdGggb3BlbigndGFzay1kZXBlbmRzLmRvdCcsICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoImRpZ3JhcGggZGVwZW5kcyB7XG4iKQpAQCAtOTMyLDI3ICs5MzYsNiBAQAogICAgICAgICAgICAgZi53cml0ZSgifVxuIikKICAgICAgICAgbG9nZ2VyLmluZm8oIlRhc2sgZGVwZW5kZW5jaWVzIHNhdmVkIHRvICd0YXNrLWRlcGVuZHMuZG90JyIpCiAKLSAgICAgICAgd2l0aCBvcGVuKCdyZWNpcGUtZGVwZW5kcy5kb3QnLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCJkaWdyYXBoIGRlcGVuZHMge1xuIikKLSAgICAgICAgICAgIHBuZGVwcyA9IHt9Ci0gICAgICAgICAgICBmb3IgdGFzayBpbiBzb3J0ZWQoZGVwZ3JhcGhbInRkZXBlbmRzIl0pOgotICAgICAgICAgICAgICAgIChwbiwgdGFza25hbWUpID0gdGFzay5yc3BsaXQoIi4iLCAxKQotICAgICAgICAgICAgICAgIGlmIHBuIG5vdCBpbiBwbmRlcHM6Ci0gICAgICAgICAgICAgICAgICAgIHBuZGVwc1twbl0gPSBzZXQoKQotICAgICAgICAgICAgICAgIGZvciBkZXAgaW4gc29ydGVkKGRlcGdyYXBoWyJ0ZGVwZW5kcyJdW3Rhc2tdKToKLSAgICAgICAgICAgICAgICAgICAgKGRlcHBuLCBkZXB0YXNrbmFtZSkgPSBkZXAucnNwbGl0KCIuIiwgMSkKLSAgICAgICAgICAgICAgICAgICAgcG5kZXBzW3BuXS5hZGQoZGVwcG4pCi0gICAgICAgICAgICBmb3IgcG4gaW4gc29ydGVkKHBuZGVwcyk6Ci0gICAgICAgICAgICAgICAgZm4gPSBkZXBncmFwaFsicG4iXVtwbl1bImZpbGVuYW1lIl0KLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gZGVwZ3JhcGhbInBuIl1bcG5dWyJ2ZXJzaW9uIl0KLSAgICAgICAgICAgICAgICBmLndyaXRlKCciJXMiIFtsYWJlbD0iJXNcXG4lc1xcbiVzIl1cbicgJSAocG4sIHBuLCB2ZXJzaW9uLCBmbikpCi0gICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzb3J0ZWQocG5kZXBzW3BuXSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGRlcCA9PSBwbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgICAgIGYud3JpdGUoJyIlcyIgLT4gIiVzIlxuJyAlIChwbiwgZGVwKSkKLSAgICAgICAgICAgIGYud3JpdGUoIn1cbiIpCi0gICAgICAgIGxvZ2dlci5pbmZvKCJGbGF0dGVuZWQgcmVjaXBlIGRlcGVuZGVuY2llcyBzYXZlZCB0byAncmVjaXBlLWRlcGVuZHMuZG90JyIpCi0KICAgICBkZWYgc2hvd19hcHBlbmRzX3dpdGhfbm9fcmVjaXBlcyhzZWxmKToKICAgICAgICAgIyBEZXRlcm1pbmUgd2hpY2ggYmJhcHBlbmRzIGhhdmVuJ3QgYmVlbiBhcHBsaWVkCiAKQEAgLTE4NjksNiArMTg1Miw3IEBACiAgICAgICAgICAgICAoYmJhcHBlbmQsIGZpbGVuYW1lKSA9IGIKICAgICAgICAgICAgIGlmIChiYmFwcGVuZCA9PSBmKSBvciAoJyUnIGluIGJiYXBwZW5kIGFuZCBiYmFwcGVuZC5zdGFydHN3aXRoKGZbOmJiYXBwZW5kLmluZGV4KCclJyldKSk6CiAgICAgICAgICAgICAgICAgZmlsZWxpc3QuYXBwZW5kKGZpbGVuYW1lKQorICAgICAgICBmaWxlbGlzdC5zb3J0KCkKICAgICAgICAgcmV0dXJuIGZpbGVsaXN0CiAKICAgICBkZWYgY29sbGVjdGlvbl9wcmlvcml0aWVzKHNlbGYsIHBrZ2ZucywgZCk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CmluZGV4IGY2YjU1MjkuLjFmNWY4ZjEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL19faW5pdF9fLnB5CkBAIC05NjIsNyArOTYyLDggQEAKIAogICAgIG5ld19sb2NhbHBhdGggPSAiJXNfYmFkLWNoZWNrc3VtXyVzIiAlICh1ZC5sb2NhbHBhdGgsIHN1ZmZpeCkKICAgICBiYi53YXJuKCJSZW5hbWluZyAlcyB0byAlcyIgJSAodWQubG9jYWxwYXRoLCBuZXdfbG9jYWxwYXRoKSkKLSAgICBiYi51dGlscy5tb3ZlZmlsZSh1ZC5sb2NhbHBhdGgsIG5ld19sb2NhbHBhdGgpCisgICAgaWYgbm90IGJiLnV0aWxzLm1vdmVmaWxlKHVkLmxvY2FscGF0aCwgbmV3X2xvY2FscGF0aCk6CisgICAgICAgIGJiLndhcm4oIlJlbmFtaW5nICVzIHRvICVzIGZhaWxlZCwgZ3JlcCBtb3ZlZmlsZSBpbiBsb2cuZG9fZmV0Y2ggdG8gc2VlIHdoeSIgJSAodWQubG9jYWxwYXRoLCBuZXdfbG9jYWxwYXRoKSkKIAogCiBkZWYgdHJ5X21pcnJvcl91cmwoZmV0Y2gsIG9yaWd1ZCwgdWQsIGxkLCBjaGVjayA9IEZhbHNlKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CmluZGV4IDRmNjk1NzguLmFkZGIyYmIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQpAQCAtODQ5LDYgKzg0OSwyMCBAQAogICAgICAgICAgICAgZm9yIGRlcGVuZCBpbiBkZXBlbmRzOgogICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKGRlcGVuZCwgZGVwdGgrMSkKIAorICAgICAgICBkZWYgaW52YWxpZGF0ZV90YXNrKHRpZCwgZXJyb3Jfbm9zdGFtcCk6CisgICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgdGFza2ZuKSA9IHNwbGl0X3RpZF9tY2ZuKHRpZCkKKyAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLmRhdGFDYWNoZXNbbWNdLnRhc2tfZGVwc1t0YXNrZm5dCisgICAgICAgICAgICBpZiBmbiArICI6IiArIHRhc2tuYW1lIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6CisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlRhc2sgJXMgZG9lcyBub3QgZXhpc3QsIGludmFsaWRhdGluZyB0aGlzIHRhc2sgd2lsbCBoYXZlIG5vIGVmZmVjdCIgJSB0YXNrbmFtZSkKKyAgICAgICAgICAgIGlmICdub3N0YW1wJyBpbiB0YXNrZGVwIGFuZCB0YXNrbmFtZSBpbiB0YXNrZGVwWydub3N0YW1wJ106CisgICAgICAgICAgICAgICAgaWYgZXJyb3Jfbm9zdGFtcDoKKyAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRhc2sgJXMgaXMgbWFya2VkIG5vc3RhbXAsIGNhbm5vdCBpbnZhbGlkYXRlIHRoaXMgdGFzayIgJSB0YXNrbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiVGFzayAlcyBpcyBtYXJrZWQgbm9zdGFtcCwgY2Fubm90IGludmFsaWRhdGUgdGhpcyB0YXNrIiAlIHRhc2tuYW1lKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIudmVyYm9zZSgiSW52YWxpZGF0ZSB0YXNrICVzLCAlcyIsIHRhc2tuYW1lLCBmbikKKyAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4uaW52YWxpZGF0ZV90YXNrKHRhc2tuYW1lLCBzZWxmLmRhdGFDYWNoZXNbbWNdLCB0YXNrZm4pCisKICAgICAgICAgc2VsZi50YXJnZXRfdGlkcyA9IFtdCiAgICAgICAgIGZvciAobWMsIHRhcmdldCwgdGFzaywgZm4pIGluIHNlbGYudGFyZ2V0czoKIApAQCAtOTE3LDYgKzkzMSw4IEBACiAKICAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3QocnVuYWxsX3RpZHMpOgogICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jb29rZXIuY29uZmlndXJhdGlvbi5mb3JjZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVfdGFzayh0aWQsIEZhbHNlKQogCiAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3Qoc2VsZi5ydW50YXNrZW50cmllcy5rZXlzKCkpOgogICAgICAgICAgICAgICAgIGlmIHRpZCBub3QgaW4gcnVucV9idWlsZDoKQEAgLTkzOCw2ICs5NTQsOCBAQAogCiAgICAgICAgICAgICAgICAgZm9yIHRpZCBpbiBsaXN0KHJ1bm9ubHlfdGlkcyk6CiAgICAgICAgICAgICAgICAgICAgIG1hcmtfYWN0aXZlKHRpZCwxKQorICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLmZvcmNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZV90YXNrKHRpZCwgRmFsc2UpCiAKICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChzZWxmLnJ1bnRhc2tlbnRyaWVzLmtleXMoKSk6CiAgICAgICAgICAgICAgICAgaWYgdGlkIG5vdCBpbiBydW5xX2J1aWxkOgpAQCAtMTExNCwyMCArMTEzMiw2IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMuYXBwZW5kKHRpZCkKIAotICAgICAgICBkZWYgaW52YWxpZGF0ZV90YXNrKHRpZCwgZXJyb3Jfbm9zdGFtcCk6Ci0gICAgICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgdGFza2ZuKSA9IHNwbGl0X3RpZF9tY2ZuKHRpZCkKLSAgICAgICAgICAgIHRhc2tkZXAgPSBzZWxmLmRhdGFDYWNoZXNbbWNdLnRhc2tfZGVwc1t0YXNrZm5dCi0gICAgICAgICAgICBpZiBmbiArICI6IiArIHRhc2tuYW1lIG5vdCBpbiB0YXNrRGF0YVttY10udGFza2VudHJpZXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlRhc2sgJXMgZG9lcyBub3QgZXhpc3QsIGludmFsaWRhdGluZyB0aGlzIHRhc2sgd2lsbCBoYXZlIG5vIGVmZmVjdCIgJSB0YXNrbmFtZSkKLSAgICAgICAgICAgIGlmICdub3N0YW1wJyBpbiB0YXNrZGVwIGFuZCB0YXNrbmFtZSBpbiB0YXNrZGVwWydub3N0YW1wJ106Ci0gICAgICAgICAgICAgICAgaWYgZXJyb3Jfbm9zdGFtcDoKLSAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlRhc2sgJXMgaXMgbWFya2VkIG5vc3RhbXAsIGNhbm5vdCBpbnZhbGlkYXRlIHRoaXMgdGFzayIgJSB0YXNrbmFtZSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiVGFzayAlcyBpcyBtYXJrZWQgbm9zdGFtcCwgY2Fubm90IGludmFsaWRhdGUgdGhpcyB0YXNrIiAlIHRhc2tuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsb2dnZXIudmVyYm9zZSgiSW52YWxpZGF0ZSB0YXNrICVzLCAlcyIsIHRhc2tuYW1lLCBmbikKLSAgICAgICAgICAgICAgICBiYi5wYXJzZS5zaWdnZW4uaW52YWxpZGF0ZV90YXNrKHRhc2tuYW1lLCBzZWxmLmRhdGFDYWNoZXNbbWNdLCB0YXNrZm4pCi0KICAgICAgICAgc2VsZi5pbml0X3Byb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQogCiAgICAgICAgICMgSW52YWxpZGF0ZSB0YXNrIGlmIGZvcmNlIG1vZGUgYWN0aXZlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQppbmRleCAyM2M2MzM4Li4yZWUwMzA1IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKQEAgLTEyMDAsOCArMTIwMCw4IEBACiAgICAgICAgICMgcGFja2FnZXMgd2l0aCB2YWxpZCBVUFNUUkVBTV9DSEVDS19VUkkgYW5kIFVQU1RSRUFNX0NIRUNLX1JFR0VYCiAgICAgICAgICgiY3VwcyIsICJodHRwOi8vd3d3LmN1cHMub3JnL3NvZnR3YXJlLzEuNy4yL2N1cHMtMS43LjItc291cmNlLnRhci5iejIiLCAiaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMiLCAiKD9QPG5hbWU+Y3Vwc1wtKSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykpXC1zb3VyY2VcLnRhclwuZ3oiKQogICAgICAgICAgICAgOiAiMi4wLjAiLAotICAgICAgICAoImRiIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2JlcmtlbGV5LWRiL2RiLTUuMy4yMS50YXIuZ3oiLCAiaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL3Byb2R1Y3RzL2JlcmtlbGV5ZGIvZG93bmxvYWRzL2luZGV4LTA4Mjk0NC5odG1sIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL290bi9iZXJrZWxleS1kYi8oP1A8bmFtZT5kYi0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLnRhclwuZ3oiKQotICAgICAgICAgICAgOiAiNi4xLjE5IiwKKyAgICAgICAgKCJkYiIsICJodHRwOi8vZG93bmxvYWQub3JhY2xlLmNvbS9iZXJrZWxleS1kYi9kYi01LjMuMjEudGFyLmd6IiwgImh0dHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvIiwgIig/UDxuYW1lPmRiNVwuM18pKD9QPHB2ZXI+XGQrKFwuXGQrKSspLitcLm9yaWdcLnRhclwueHoiKQorICAgICAgICAgICAgOiAiNS4zLjEwIiwKICAgICB9CiAKICAgICBAc2tpcElmTm9OZXR3b3JrKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CmluZGV4IDA2MThlNDYuLjNlOTBiNmEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQpAQCAtNzgwLDcgKzc4MCw3IEBACiAgICAgICAgICAgICBvcy5yZW5hbWUoc3JjLCBkZXN0cGF0aCkKICAgICAgICAgICAgIHJlbmFtZWZhaWxlZCA9IDAKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgaWYgZVswXSAhPSBlcnJuby5FWERFVjoKKyAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRVhERVY6CiAgICAgICAgICAgICAgICAgIyBTb21lIHJhbmRvbSBlcnJvci4KICAgICAgICAgICAgICAgICBwcmludCgibW92ZWZpbGU6IEZhaWxlZCB0byBtb3ZlIiwgc3JjLCAidG8iLCBkZXN0LCBlKQogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IDU2MjVkZmMuLjU5ZmZhNDkgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCkBAIC0yMyw5ICsyMyw4IEBACiAgICAgICAgIEl0IG1pZ2h0IG5vdCBiZSBpbW1lZGlhdGVseSBjbGVhciBob3cgeW91IGNhbiB1c2UgdGhlIFlvY3RvCiAgICAgICAgIFByb2plY3QgaW4gYSB0ZWFtIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBvciBob3cgdG8gc2NhbGUgaXQgZm9yIGEKICAgICAgICAgbGFyZ2UgdGVhbSBvZiBkZXZlbG9wZXJzLgotICAgICAgICBPbmUgb2YgdGhlIHN0cmVuZ3RocyBvZiB0aGUgWW9jdG8gUHJvamVjdCBpcyB0aGF0IGl0IGlzIGV4dHJlbWVseQotICAgICAgICBmbGV4aWJsZS4KLSAgICAgICAgVGh1cywgeW91IGNhbiBhZGFwdCBpdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kIHNjZW5hcmlvcy4KKyAgICAgICAgWW91IGNhbiBhZGFwdCB0aGUgWW9jdG8gUHJvamVjdCB0byBtYW55IGRpZmZlcmVudCB1c2UgY2FzZXMgYW5kCisgICAgICAgIHNjZW5hcmlvcy4KICAgICAgICAgSG93ZXZlciwgdGhpcyBmbGV4aWJpbGl0eSBjb3VsZCBjYXVzZSBkaWZmaWN1bHRpZXMgaWYgeW91IGFyZSB0cnlpbmcKICAgICAgICAgdG8gY3JlYXRlIGEgd29ya2luZyBzZXR1cCB0aGF0IHNjYWxlcyBhY3Jvc3MgYSBsYXJnZSB0ZWFtLgogICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9wb2t5LmVudAppbmRleCBiNWY2MDA5Li4xOTJiOTQxIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50CkBAIC02MCw3ICs2MCw3IEBACiA8IUVOVElUWSBVQlVOVFVfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgImdhd2sgd2dldCBnaXQtY29yZSBkaWZmc3RhdCB1bnppcCB0ZXhpbmZvIGdjYy1tdWx0aWxpYiBcCiAgICAgIGJ1aWxkLWVzc2VudGlhbCBjaHJwYXRoIHNvY2F0IGNwaW8gcHl0aG9uIHB5dGhvbjMgcHl0aG9uMy1waXAgcHl0aG9uMy1wZXhwZWN0IFwKICAgICAgeHotdXRpbHMgZGViaWFudXRpbHMgaXB1dGlscy1waW5nIHB5dGhvbjMtZ2l0IHB5dGhvbjMtamluamEyIGxpYmVnbDEtbWVzYSBsaWJzZGwxLjItZGV2IFwKLSAgICAgeHRlcm0iPgorICAgICBweWxpbnQzIHh0ZXJtIj4KIDwhRU5USVRZIEZFRE9SQV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKICAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIFwKICAgICAgY2NhY2hlIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcGVybC1iaWdudW0gc29jYXQgXApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWNsYXNzZXMueG1sCmluZGV4IGVjZTQ3ZTcuLjU0MDNmMjAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1jbGFzc2VzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtY2xhc3Nlcy54bWwKQEAgLTMxOCwyMyArMzE4LDYgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1ibHVldG9vdGgnPgotICAgIDx0aXRsZT48ZmlsZW5hbWU+Ymx1ZXRvb3RoLmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgVGhlIDxmaWxlbmFtZT5ibHVldG9vdGg8L2ZpbGVuYW1lPiBjbGFzcyBkZWZpbmVzIGEgdmFyaWFibGUgdGhhdAotICAgICAgICBleHBhbmRzIHRvIHRoZSByZWNpcGUgKHBhY2thZ2UpIHByb3ZpZGluZyBjb3JlCi0gICAgICAgIGJsdWV0b290aCBzdXBwb3J0IG9uIHRoZSBwbGF0Zm9ybS4KLSAgICA8L3BhcmE+Ci0KLSAgICA8cGFyYT4KLSAgICAgICAgRm9yIGRldGFpbHMgb24gaG93IHRoZSBjbGFzcyB3b3Jrcywgc2VlIHRoZQotICAgICAgICA8ZmlsZW5hbWU+bWV0YS9jbGFzc2VzL2JsdWV0b290aC5iYmNsYXNzPC9maWxlbmFtZT4gZmlsZSBpbiB0aGUgWW9jdG8KLSAgICAgICAgUHJvamVjdAotICAgICAgICA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPi4KLSAgICA8L3BhcmE+Ci08L3NlY3Rpb24+Ci0KIDxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1idWlsZGhpc3RvcnknPgogICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGRoaXN0b3J5LmJiY2xhc3M8L2ZpbGVuYW1lPjwvdGl0bGU+CiAKQEAgLTkzNywyMSArOTIwLDYgQEAKICAgICA8L3BhcmE+CiA8L3NlY3Rpb24+CiAKLTxzZWN0aW9uIGlkPSdyZWYtY2xhc3Nlcy1nbm9tZSc+Ci0gICAgPHRpdGxlPjxmaWxlbmFtZT5nbm9tZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgotCi0gICAgPHBhcmE+Ci0gICAgICAgIFRoZSA8ZmlsZW5hbWU+Z25vbWU8L2ZpbGVuYW1lPiBjbGFzcyBzdXBwb3J0cyByZWNpcGVzIHRoYXQKLSAgICAgICAgYnVpbGQgc29mdHdhcmUgZnJvbSB0aGUgR05PTUUgc3RhY2suCi0gICAgICAgIFRoaXMgY2xhc3MgaW5oZXJpdHMgdGhlCi0gICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWdub21lYmFzZSc+PGZpbGVuYW1lPmdub21lYmFzZTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZ3RrLWljb24tY2FjaGUnPjxmaWxlbmFtZT5ndGstaWNvbi1jYWNoZTwvZmlsZW5hbWU+PC9saW5rPiwKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtZ2NvbmYnPjxmaWxlbmFtZT5nY29uZjwvZmlsZW5hbWU+PC9saW5rPiBhbmQKLSAgICAgICAgPGxpbmsgbGlua2VuZD0ncmVmLWNsYXNzZXMtbWltZSc+PGZpbGVuYW1lPm1pbWU8L2ZpbGVuYW1lPjwvbGluaz4gY2xhc3Nlcy4KLSAgICAgICAgVGhlIGNsYXNzIGFsc28gZGlzYWJsZXMgR09iamVjdCBpbnRyb3NwZWN0aW9uIHdoZXJlIGFwcGxpY2FibGUuCi0gICAgPC9wYXJhPgotPC9zZWN0aW9uPgotCiA8c2VjdGlvbiBpZD0ncmVmLWNsYXNzZXMtZ25vbWViYXNlJz4KICAgICA8dGl0bGU+PGZpbGVuYW1lPmdub21lYmFzZS5iYmNsYXNzPC9maWxlbmFtZT48L3RpdGxlPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWRldnRvb2wtcmVmZXJlbmNlLnhtbAppbmRleCA0ODEwZDI4Li4xMWY3Mzk5IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZGV2dG9vbC1yZWZlcmVuY2UueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1kZXZ0b29sLXJlZmVyZW5jZS54bWwKQEAgLTYyOSwxOCArNjI5LDE4IEBACiAgICAgICAgIDx0aXRsZT5CdWlsZGluZyBZb3VyIFJlY2lwZTwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gY29tbWFuZCB0byBjYXVzZSB0aGUKLSAgICAgICAgICAgIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gYnVpbGQgeW91ciByZWNpcGUuCisgICAgICAgICAgICBVc2UgdGhlIDxmaWxlbmFtZT5kZXZ0b29sIGJ1aWxkPC9maWxlbmFtZT4gY29tbWFuZCB0byBidWlsZCB5b3VyCisgICAgICAgICAgICByZWNpcGUuCiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmRldnRvb2wgYnVpbGQ8L2ZpbGVuYW1lPiBjb21tYW5kIGlzIGVxdWl2YWxlbnQgdG8KLSAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlIC1jIHBvcHVsYXRlX3N5c3Jvb3Q8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZSAtYyBwb3B1bGF0ZV9zeXNyb290PC9maWxlbmFtZT4gY29tbWFuZC4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgV2hlbiB5b3UgdXNlIHRoZSA8ZmlsZW5hbWU+ZGV2dG9vbCBidWlsZDwvZmlsZW5hbWU+IGNvbW1hbmQsCi0gICAgICAgICAgICB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZSBvZiB0aGUgcmVjaXBlIChpLmUuIG5vIHZlcnNpb24sCi0gICAgICAgICAgICBwYXRocywgb3IgZXh0ZW5zaW9ucykuCisgICAgICAgICAgICB5b3UgbXVzdCBzdXBwbHkgdGhlIHJvb3QgbmFtZSBvZiB0aGUgcmVjaXBlIChpLmUuIGRvIG5vdCBwcm92aWRlCisgICAgICAgICAgICB2ZXJzaW9ucywgcGF0aHMsIG9yIGV4dGVuc2lvbnMpLgogICAgICAgICAgICAgWW91IGNhbiB1c2UgZWl0aGVyIHRoZSAiLXMiIG9yIHRoZSAiLS1kaXNhYmxlLXBhcmFsbGVsLW1ha2UiCi0gICAgICAgICAgICBvcHRpb24gdG8gZGlzYWJsZSBwYXJhbGxlbCBtYWtlcyBkdXJpbmcgdGhlIGJ1aWxkLgorICAgICAgICAgICAgb3B0aW9ucyB0byBkaXNhYmxlIHBhcmFsbGVsIG1ha2VzIGR1cmluZyB0aGUgYnVpbGQuCiAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgICQgZGV2dG9vbCBidWlsZCA8cmVwbGFjZWFibGU+cmVjaXBlPC9yZXBsYWNlYWJsZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCmluZGV4IGIwNTdkMmQuLjQ0YmE2N2MgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbApAQCAtMTU0LDI3ICsxNTQsNiBAQAogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmJsdWV0b290aDo8L2VtcGhhc2lzPiBJbmNsdWRlCiAgICAgICAgICAgICAgICAgICAgIGJsdWV0b290aCBzdXBwb3J0IChpbnRlZ3JhdGVkIEJUIG9ubHkpLjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+Ymx1ZXo1OjwvZW1waGFzaXM+IEluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgQmx1ZVogVmVyc2lvbiA1LCB3aGljaCBwcm92aWRlcyBjb3JlIEJsdWV0b290aCBsYXllcnMgYW5kCi0gICAgICAgICAgICAgICAgICAgIHByb3RvY29scyBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ESVNUUk8gRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBpbmNsdWRlcwotICAgICAgICAgICAgICAgICAgICAgICAgImJsdWV0b290aCIsIHdoaWNoIGNhdXNlcyBibHVlejUgdG8gYmUgYmFja2ZpbGxlZCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGJsdWV0b290aCBzdXBwb3J0LgotICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGRvIG5vdCB3YW50IGJsdWV6NSBiYWNrZmlsbGVkIGFuZCB3b3VsZCByYXRoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZSBibHVlejQsIHlvdSBuZWVkIHRvIHVzZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1ESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCc+PGZpbGVuYW1lPkRJU1RST19GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEPC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBhcyBmb2xsb3dzOgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJibHVlejUiCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5nIHRoaXMgdmFyaWFibGUgdGVsbHMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZAotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHRoYXQgeW91IGhhdmUgY29uc2lkZXJlZCBidXQgcnVsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dCB1c2luZyB0aGUgYmx1ZXo1IGZlYXR1cmUgYW5kIHRoYXQgYmx1ZXo0IHdpbGwgYmUKLSAgICAgICAgICAgICAgICAgICAgICAgIHVzZWQuCi0gICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5jcmFtZnM6PC9lbXBoYXNpcz4gSW5jbHVkZSBDcmFtRlMKICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPmRpcmVjdGZiOjwvZW1waGFzaXM+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKaW5kZXggMjM5ZGQ4NC4uNTE5OTUzMCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbApAQCAtOTUsNiArOTUsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5DZW50T1MgNy54PC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggOC54IChKZXNzaWUpPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkRlYmlhbiBHTlUvTGludXggOS54IChTdHJldGNoKTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5EZWJpYW4gR05VL0xpbnV4IDEwLnggKEJ1c3Rlcik8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+T3BlblNVU0UgNDIuMzwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi12YXJpYWJsZXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKaW5kZXggMDA4MDM2NC4uOTNiNzU4OCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwKQEAgLTMzNSw3ICszMzUsNyBAQAogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgVGhlIG1pbmltYWwgY29tbWFuZCBhbmQgYXJndW1lbnRzIHVzZWQgdG8gcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICBNaW5pbWFsIGNvbW1hbmQgYW5kIGFyZ3VtZW50cyBuZWVkZWQgdG8gcnVuIHRoZQogICAgICAgICAgICAgICAgICAgICBhc3NlbWJsZXIuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KQEAgLTY2MDYsNiArNjYwNiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgYnRyZnMKKyAgICAgY29udGFpbmVyCiAgICAgIGNwaW8KICAgICAgY3Bpby5negogICAgICBjcGlvLmx6NApAQCAtNjYyMSwxMyArNjYyMiwxNCBAQAogICAgICBleHQzLmd6CiAgICAgIGV4dDQKICAgICAgZXh0NC5negotICAgICBoZGRkaXJlY3QKKyAgICAgZjJmcwogICAgICBoZGRpbWcKICAgICAgaXNvCiAgICAgIGpmZnMyCiAgICAgIGpmZnMyLnN1bQogICAgICBtdWx0aXViaQogICAgICBzcXVhc2hmcworICAgICBzcXVhc2hmcy1sejQKICAgICAgc3F1YXNoZnMtbHpvCiAgICAgIHNxdWFzaGZzLXh6CiAgICAgIHRhcgpAQCAtNzU4MCwxNSArNzU4Miw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCBwcm92aWRpbmcganVzdCB0aGUgPGZpbGVuYW1lPi5kdGI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICAgICAgZmlsZSBpcyBwcmVmZXJyZWQuCiAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgSW4gb3JkZXIgdG8gdXNlIHRoaXMgdmFyaWFibGUsIHlvdSBtdXN0IGhhdmUgdGhlIGluY2x1ZGUKLSAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4geW91ciBrZXJuZWwgcmVjaXBlOgotICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYwotICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICAgICAgICAgIG9yCi0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLSAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJbiBvcmRlciB0byB1c2UgdGhpcyB2YXJpYWJsZSwgdGhlCisgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWtlcm5lbC1kZXZpY2V0cmVlJz48ZmlsZW5hbWU+a2VybmVsLWRldmljZXRyZWU8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgY2xhc3MgbXVzdCBiZSBpbmhlcml0ZWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jCmluZGV4IDA4MTU4NGYuLjk5MjZjMWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYworKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMKQEAgLTEsMiArMSw4IEBACisjIEFkZCBhbiBleHRyYSBESVNUUk9fRkVBVFVSRQogRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgcGFtIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fbGludXhzdGRiYXNlID89ICI0LjE5JSIKKworIyBVc2UgdGhlIExUU0kgS2VybmVsCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNC4xOSUiCisKKyMgRW5zdXJlIHRoZSBrZXJuZWwgbmZzIHNlcnZlciBpcyBlbmFibGVkCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktYWx0Y2ZnLmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWFsdGNmZy5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3N2JmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LWFsdGNmZy5jb25mCkBAIC0wLDAgKzEsMTUgQEAKKyMKKyMgQW4gZXhhbXBsZSBvZiBzdWJjbGFzc2luZyBhIGRpc3RybywgcHJpbWFyaWx5IHVzZWQgZm9yIHRlc3RpbmcgYWx0ZXJuYXRlIGNvbmZpZ3VyYXRpb24KKyMgY29tYmluYXRpb25zIG9uIHRoZSBZb2N0byBQcm9qZWN0IGF1dG9idWlsZGVyCisjCityZXF1aXJlIGNvbmYvZGlzdHJvL3Bva3kuY29uZgorCitESVNUUk8gPSAicG9reS1hbHRjZmciCitESVNUUk9PVkVSUklERVMgPSAicG9reTpwb2t5LWFsdGNmZyIKKyNESVNUUk9PVkVSUklERVMgPSAicG9reTpsaW51eHN0ZGJhc2UiCisKK0lOSVRfTUFOQUdFUiA/PSAic3lzdGVtZCIKKyMgc3lzdGVtZCBpc24ndCBzdWl0YWJsZSB3aXRoIG11c2wKK0lOSVRfTUFOQUdFUl9saWJjLW11c2wgPz0gInN5c3Zpbml0IgorCityZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZiBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktbHNiLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMzZjODcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS1sc2IuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLQotcmVxdWlyZSBjb25mL2Rpc3Ryby9wb2t5LmNvbmYKLQotRElTVFJPID0gInBva3ktbHNiIgotRElTVFJPT1ZFUlJJREVTID0gInBva3k6bGludXhzdGRiYXNlIgotCi1ESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBwYW0iCi0KLSMgRW5zdXJlIHRoZSBrZXJuZWwgbmZzIHNlcnZlciBpcyBlbmFibGVkCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKLQotIyBVc2UgdGhlIExUU0kgS2VybmVsIGZvciBMU0IgVGVzdGluZwotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG9fbGludXhzdGRiYXNlID89ICI0LjE5JSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3ktdGlueS5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKaW5kZXggMWY4YjZlOC4uYzZkNGI4OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS10aW55LmNvbmYKQEAgLTgyLDEyICs4Miw3IEBACiBESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlc2RrID0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9ICR7UE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFU30iCiAKICMgZW5hYmxlIG1kZXYvYnVzeWJveCBmb3IgaW5pdAotVklSVFVBTC1SVU5USU1FX2Rldl9tYW5hZ2VyID0gImJ1c3lib3gtbWRldiIKLVZJUlRVQUwtUlVOVElNRV9sb2dpbl9tYW5hZ2VyID0gImJ1c3lib3giCi1WSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyID0gImJ1c3lib3giCi1WSVJUVUFMLVJVTlRJTUVfaW5pdHNjcmlwdHMgPSAiaW5pdHNjcmlwdHMiCi1WSVJUVUFMLVJVTlRJTUVfa2V5bWFwcyA9ICJrZXltYXBzIgotRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgKz0gInN5c3Zpbml0IgorSU5JVF9NQU5BR0VSID89ICJtZGV2LWJ1c3lib3giCiAKICMgRklYTUU6IENvbnNpZGVyIGFkZGluZyAibW9kdWxlcyIgdG8gTUFDSElORV9GRUFUVVJFUyBhbmQgdXNpbmcgdGhhdCBpbgogIyBwYWNrYWdlZ3JvdXAtY29yZS1iYXNlIHRvIHNlbGVjdCBtb2R1dGlscy1pbml0c2NyaXB0cyBvciBub3QuICBTaW1pbGFyIHdpdGggIm5ldCIgYW5kCkBAIC0xMTcsOSArMTEyLDYgQEAKIFBOQkxBQ0tMSVNUW2NvcmUtaW1hZ2UtYmFzZV0gPSAibm90IGJ1aWxkYWJsZSB3aXRoIHBva3ktdGlueSIKIFBOQkxBQ0tMSVNUW2NvcmUtaW1hZ2UtY2x1dHRlcl0gPSAibm90IGJ1aWxkYWJsZSB3aXRoIHBva3ktdGlueSIKIFBOQkxBQ0tMSVNUW2NvcmUtaW1hZ2UtZnVsbC1jbWRsaW5lXSA9ICJub3QgYnVpbGRhYmxlIHdpdGggcG9reS10aW55IgotUE5CTEFDS0xJU1RbY29yZS1pbWFnZS1sc2JdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCi1QTkJMQUNLTElTVFtjb3JlLWltYWdlLWxzYi1kZXZdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCi1QTkJMQUNLTElTVFtjb3JlLWltYWdlLWxzYi1zZGtdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCiBQTkJMQUNLTElTVFtjb3JlLWltYWdlLXJ0XSA9ICJub3QgYnVpbGRhYmxlIHdpdGggcG9reS10aW55IgogUE5CTEFDS0xJU1RbY29yZS1pbWFnZS1ydC1zZGtdID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCiBQTkJMQUNLTElTVFtjb3JlLWltYWdlLXNhdG9dID0gIm5vdCBidWlsZGFibGUgd2l0aCBwb2t5LXRpbnkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKaW5kZXggYWEwNDFlMi4uZjk5OTk5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgpAQCAtMjEsNyArMjEsNyBAQAogCiBESVNUUk9fRkVBVFVSRVMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9ICR7UE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFU30iCiAKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjAlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtNQUNISU5FfS0ke0lNQUdFX0JBU0VOQU1FfS0ke1RVTkVfUEtHQVJDSH0tJHtNQUNISU5FfSIKIFNES1BBVEggPSAiL29wdC8ke0RJU1RST30vJHtTREtfVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQppbmRleCBiMzY1MzBkLi5jODZlZWU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKQEAgLTIzOCwxMiArMjM4LDE2IEBACiAjIFFlbXUgY29uZmlndXJhdGlvbgogIwogIyBCeSBkZWZhdWx0IG5hdGl2ZSBxZW11IHdpbGwgYnVpbGQgd2l0aCBhIGJ1aWx0aW4gVk5DIHNlcnZlciB3aGVyZSBncmFwaGljYWwgb3V0cHV0IGNhbiBiZQotIyBzZWVuLiBUaGUgbGluZSBiZWxvdyBlbmFibGUgdGhlIFNETCBiYWNrZW5kIHRvby4gQnkgZGVmYXVsdCBsaWJzZGwyLW5hdGl2ZSB3aWxsCi0jIGJlIGJ1aWx0LCBpZiB5b3Ugd2FudCB0byB1c2UgeW91ciBob3N0J3MgbGliU0RMIGluc3RlYWQgb2YgdGhlIG1pbmltYWwgbGlic2RsIGJ1aWx0Ci0jIGJ5IGxpYnNkbDItbmF0aXZlIHRoZW4gdW5jb21tZW50IHRoZSBBU1NVTUVfUFJPVklERUQgbGluZSBiZWxvdy4KKyMgc2Vlbi4gVGhlIGxpbmUgYmVsb3cgZW5hYmxlcyB0aGUgU0RMIFVJIGZyb250ZW5kIHRvby4KIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgc2RsIgorIyBCeSBkZWZhdWx0IGxpYnNkbDItbmF0aXZlIHdpbGwgYmUgYnVpbHQsIGlmIHlvdSB3YW50IHRvIHVzZSB5b3VyIGhvc3QncyBsaWJTREwgaW5zdGVhZCBvZiAKKyMgdGhlIG1pbmltYWwgbGlic2RsIGJ1aWx0IGJ5IGxpYnNkbDItbmF0aXZlIHRoZW4gdW5jb21tZW50IHRoZSBBU1NVTUVfUFJPVklERUQgbGluZSBiZWxvdy4KICNBU1NVTUVfUFJPVklERUQgKz0gImxpYnNkbDItbmF0aXZlIgogCisjIFlvdSBjYW4gYWxzbyBlbmFibGUgdGhlIEd0ayBVSSBmcm9udGVuZCwgd2hpY2ggdGFrZXMgc29tZXdoYXQgbG9uZ2VyIHRvIGJ1aWxkLCBidXQgYWRkcworIyBhIGhhbmR5IHNldCBvZiBtZW51cyBmb3IgY29udHJvbGxpbmcgdGhlIGVtdWxhdG9yLgorI1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgZ3RrKyIKKwogIyBDT05GX1ZFUlNJT04gaXMgaW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mLyBjaGFuZ2VzIGluY29tcGF0aWJseSBhbmQgaXMgdXNlZCB0bwogIyB0cmFjayB0aGUgdmVyc2lvbiBvZiB0aGlzIGZpbGUgd2hlbiBpdCB3YXMgZ2VuZXJhdGVkLiBUaGlzIGNhbiBzYWZlbHkgYmUgaWdub3JlZCBpZgogIyB0aGlzIGRvZXNuJ3QgbWVhbiBhbnl0aGluZyB0byB5b3UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkIGIvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZAppbmRleCA3N2U4YmUyLi5kYzkyYTE2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlLmV4dGVuZGVkCisrKyBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQKQEAgLTI3MCw3ICsyNzAsNyBAQAogIwogIyBCeSBpbmNsdWRpbmcgdGhlIHNlY3VyaXR5X2ZsYWdzIGluY2x1ZGUgZmlsZSB5b3UgZW5hYmxlIGZsYWdzCiAjIHRvIHRoZSBjb21waWxlciBhbmQgbGlua2VyIHRoYXQgY2F1c2UgdGhlbSB0byBnZW5lcmF0ZSBtb3JlIHNlY3VyZQotIyBjb2RlLCB0aGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgcG9reS1sc2IgZGlzdHJvLgorIyBjb2RlLgogIyBUaGlzIGRvZXMgYWZmZWN0IGNvbXBpbGUgc3BlZWQgc2xpZ2h0bHkuCiAjCiAjIFVzZSB0aGUgZm9sbG93aW5nIGxpbmUgdG8gZW5hYmxlIHRoZSBzZWN1cml0eSBjb21waWxlciBhbmQgbGlua2VyIGZsYWdzIHRvIHlvdXIgYnVpbGQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgppbmRleCA3YzdiMzA1Li4wOGRkM2E1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCkBAIC0yNCw3ICsyNCw3IEBACiBTRVJJQUxfQ09OU09MRVNfQ0hFQ0sgPSAiJHtTRVJJQUxfQ09OU09MRVN9IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKIAogS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCiBLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCkBAIC00Nyw3ICs0Nyw2IEBACiBRQl9GU0lORk8gPSAid2ljOm5vLWtlcm5lbC1pbi1mcyIKIFFCX0tFUk5FTF9ST09UID0gIi9kZXYvdmRhMiIKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLWFybSIKLVFCX01FTSA9ICItbSA1MTIiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTE1IgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCBzeXN0ZW1kLm1hc2s9c3lzdGVtZC1uZXR3b3JrZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgppbmRleCA4ODU5MmRiLi42MzMxMzY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCkBAIC0xMSw3ICsxMSw3IEBACiBLRVJORUxfSU1BR0VfU1RSSVBfRVhUUkFfU0VDVElPTlMgID0gIi5jb21tZW50IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKIAogU0VSSUFMX0NPTlNPTEVTID0gIjExNTIwMDt0dHlTMCIKIFVTRV9WVCA/PSAiMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKaW5kZXggZTJkY2U1Ni4uNTM4Mjc5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvbXBjODMxNWUtcmRiLmNvbmYKQEAgLTE1LDcgKzE1LDcgQEAKIAogTUFDSElORV9GRUFUVVJFUyA9ICJrZXlib2FyZCBwY2kgZXh0MiBleHQzIHNlcmlhbCIKIAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS4yJSIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCA/PSAibGludXgteW9jdG8iCiAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3hzZXJ2ZXIgPz0gInhzZXJ2ZXIteG9yZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4wLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjAuYmJhcHBlbmQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Y2YxMjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjAuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInY1LjAvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjUuMC9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjAvc3RhbmRhcmQvZWRnZXJvdXRlciIKLUtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4wL3N0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJ2NS4wL3N0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCi0KLUtNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKLUtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKLUtNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCi0KLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgICAgPz0gImY5OTBmZDBjZTEyM2FhNjAzNTA0MmVmYWQwOWIyZGRjM2U3ZDQ4ZjQiCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmOTkwZmQwY2UxMjNhYTYwMzUwNDJlZmFkMDliMmRkYzNlN2Q0OGY0IgotU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjk5MGZkMGNlMTIzYWE2MDM1MDQyZWZhZDA5YjJkZGMzZTdkNDhmNCIKLVNSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY5OTBmZDBjZTEyM2FhNjAzNTA0MmVmYWQwOWIyZGRjM2U3ZDQ4ZjQiCi1TUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjY3MGNlN2U5ZGI2MjdkMGMyMDY3Y2ZkYjU3MWRkYzFmMTE3ODE4ZDgiCi0KLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgotQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKLUNPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKLQotTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2ID0gIjUuMC4xMyIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI1LjAuMTMiCi1MSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4wLjEzIgotTElOVVhfVkVSU0lPTl9iZWFnbGVib25lLXlvY3RvID0gIjUuMC4xMyIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjUuMC4xMyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmJhcHBlbmQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdjZWZkMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kCkBAIC0wLDAgKzEsMjcgQEAKK0tCUkFOQ0hfZ2VuZXJpY3g4NiAgPSAidjUuMi9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCitLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAidjUuMi9zdGFuZGFyZC9lZGdlcm91dGVyIgorS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInY1LjIvc3RhbmRhcmQvYmVhZ2xlYm9uZSIKK0tCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY1LjIvc3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKKworS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgorS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgorS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKKworU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiNzdjMjhlYTBlNTVjYWJiMGIyMmI0N2Q0ZWIyY2M5NGIwOTQwZGZlNiIKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjM1Mjc2ZDIwYzAxYTc4ZWUzNjQwYTA3NDQ0NmIwYzE1YzQ4NmM1ZDAiCitTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICIzNTI3NmQyMGMwMWE3OGVlMzY0MGEwNzQ0NDZiMGMxNWM0ODZjNWQwIgorU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiNzdjMjhlYTBlNTVjYWJiMGIyMmI0N2Q0ZWIyY2M5NGIwOTQwZGZlNiIKK1NSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiY2FlMDFkNzFlZjY3ZWFhZmVjNzVjZTI0ZjQ5YjAzOGI3MDViODcxMSIKKworQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCitDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgorQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKK0NPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgorCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNS4yLjEwIgorTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuMi4xMCIKK0xJTlVYX1ZFUlNJT05fZWRnZXJvdXRlciA9ICI1LjIuMTAiCitMSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNS4yLjEwIgorTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNS4yLjEwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggYWY5ZjAxMC4uMTNiMDViYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC03OCw2ICs3OCw5IEBACiAgICAgICAgIGJiLmRlYnVnKDEsICdhcmNoaXZlcjogJXMgaXMgZXhjbHVkZWQsIGNvdmVyZWQgYnkgZ2NjLXNvdXJjZScgJSBwbikKICAgICAgICAgcmV0dXJuCiAKKyAgICBkZWYgaGFzVGFzayh0YXNrKToKKyAgICAgICAgcmV0dXJuIGJvb2woZC5nZXRWYXJGbGFnKHRhc2ssICJ0YXNrIiwgRmFsc2UpKSBhbmQgbm90IGJvb2woZC5nZXRWYXJGbGFnKHRhc2ssICJub2V4ZWMiLCBGYWxzZSkpCisKICAgICBhcl9zcmMgPSBkLmdldFZhckZsYWcoJ0FSQ0hJVkVSX01PREUnLCAnc3JjJykKICAgICBhcl9kdW1wZGF0YSA9IGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdkdW1wZGF0YScpCiAgICAgYXJfcmVjaXBlID0gZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ3JlY2lwZScpCkBAIC05OCw5ICsxMDEsNiBAQAogCiAgICAgICAgICMgVGhlcmUgaXMgYSBjb3JuZXIgY2FzZSB3aXRoICJnY2Mtc291cmNlLSR7UFZ9IiByZWNpcGVzLCB0aGV5IGRvbid0IGhhdmUKICAgICAgICAgIyB0aGUgImRvX2NvbmZpZ3VyZSIgdGFzaywgc28gd2UgbmVlZCB0byB1c2UgImRvX3ByZWNvbmZpZ3VyZSIKLSAgICAgICAgZGVmIGhhc1Rhc2sodGFzayk6Ci0gICAgICAgICAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcodGFzaywgInRhc2siLCBGYWxzZSkpIGFuZCBub3QgYm9vbChkLmdldFZhckZsYWcodGFzaywgIm5vZXhlYyIsIEZhbHNlKSkKLQogICAgICAgICBpZiBoYXNUYXNrKCJkb19wcmVjb25maWd1cmUiKToKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYXJfY29uZmlndXJlZCcsICdkZXBlbmRzJywgJyAlczpkb19wcmVjb25maWd1cmUnICUgcG4pCiAgICAgICAgIGVsaWYgaGFzVGFzaygiZG9fY29uZmlndXJlIik6CkBAIC0xMTgsNyArMTE4LDExIEBACiAKICAgICAjIE91dHB1dCB0aGUgU1JQTSBwYWNrYWdlCiAgICAgaWYgZC5nZXRWYXJGbGFnKCdBUkNISVZFUl9NT0RFJywgJ3NycG0nKSA9PSAiMSIgYW5kIGQuZ2V0VmFyKCdQQUNLQUdFUycpOgotICAgICAgICBpZiAicGFja2FnZV9ycG0iIGluIGQuZ2V0VmFyKCdQQUNLQUdFX0NMQVNTRVMnKToKKyAgICAgICAgaWYgInBhY2thZ2VfcnBtIiBub3QgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VfQ0xBU1NFUycpOgorICAgICAgICAgICAgYmIuZmF0YWwoIkFSQ0hJVkVSX01PREVbc3JwbV0gbmVlZHMgcGFja2FnZV9ycG0gaW4gUEFDS0FHRV9DTEFTU0VTIikKKworICAgICAgICAjIFNvbWUgcmVjaXBlcyBkbyBub3QgaGF2ZSBhbnkgcGFja2FnaW5nIHRhc2tzCisgICAgICAgIGlmIGhhc1Rhc2soImRvX3BhY2thZ2Vfd3JpdGVfcnBtIik6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyAlczpkb19wYWNrYWdlX3dyaXRlX3JwbScgJSBwbikKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGlycycsICcgJHtBUkNISVZFUl9SUE1UT1BESVJ9JykKICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnc3N0YXRlLWlucHV0ZGlycycsICcgJHtBUkNISVZFUl9SUE1UT1BESVJ9JykKQEAgLTEzMyw4ICsxMzcsNiBAQAogICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZV93cml0ZV9ycG0nLCAnZGVwZW5kcycsICcgJXM6ZG9fYXJfcGF0Y2hlZCcgJSBwbikKICAgICAgICAgICAgIGVsaWYgYXJfc3JjID09ICJjb25maWd1cmVkIjoKICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX3BhY2thZ2Vfd3JpdGVfcnBtJywgJ2RlcGVuZHMnLCAnICVzOmRvX2FyX2NvbmZpZ3VyZWQnICUgcG4pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiQVJDSElWRVJfTU9ERVtzcnBtXSBuZWVkcyBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMiKQogfQogCiAjIFRha2UgYWxsIHRoZSBzb3VyY2VzIGZvciBhIHJlY2lwZSBhbmQgcHV0cyB0aGVtIGluIFdPUktESVIvYXJjaGl2ZXItd29yay8uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9hdXRvdG9vbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCmluZGV4IDg3NjhhNmEuLjNkMjJhZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzCkBAIC0yNSw3ICsyNSw5IEBACiAKICMgU3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygc2hlbGwgc2NyaXB0cyB3aXRoIHZhcmlhYmxlcyBkZWZpbmVkIHRvIHN1cHBseSB0ZXN0CiAjIHJlc3VsdHMgZm9yIGF1dG9jb25mIHRlc3RzIHdlIGNhbm5vdCBydW4gYXQgYnVpbGQgdGltZS4KLWV4cG9ydCBDT05GSUdfU0lURSA9ICIke0BzaXRlaW5mb19nZXRfZmlsZXMoZCl9IgorIyBUaGUgdmFsdWUgb2YgdGhpcyB2YXJpYWJsZSBpcyBmaWxsZWQgaW4gaW4gYSBwcmVmdW5jIGJlY2F1c2UgaXQgZGVwZW5kcyBvbgorIyB0aGUgY29udGVudHMgb2YgdGhlIHN5c3Jvb3QuCitleHBvcnQgQ09ORklHX1NJVEUKIAogYWNwYXRocyA/PSAiZGVmYXVsdCIKIEVYVFJBX0FVVE9SRUNPTkYgPSAiLS1leGNsdWRlPWF1dG9wb2ludCIKQEAgLTEzMiw2ICsxMzQsOCBAQAogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAogZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiYXV0b3Rvb2xzX3ByZWNvbmZpZ3VyZSBhdXRvdG9vbHNfYWNsb2NhbHMgJHtFWFRSQUNPTkZGVU5DU30iCitkb19jb21waWxlW3ByZWZ1bmNzXSArPSAiYXV0b3Rvb2xzX2FjbG9jYWxzIgorZG9faW5zdGFsbFtwcmVmdW5jc10gKz0gImF1dG90b29sc19hY2xvY2FscyIKIGRvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJhdXRvdG9vbHNfcG9zdGNvbmZpZ3VyZSIKIAogQUNMT0NBTERJUiA9ICIke1NUQUdJTkdfREFUQURJUn0vYWNsb2NhbCIKQEAgLTE0MCw3ICsxNDQsNiBAQAogQUNMT0NBTEVYVFJBUEFUSF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1JICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC8iCiAKIHB5dGhvbiBhdXRvdG9vbHNfYWNsb2NhbHMgKCkgewotICAgICMgUmVmcmVzaCB2YXJpYWJsZSB3aXRoIGNhY2hlIGZpbGVzCiAgICAgZC5zZXRWYXIoIkNPTkZJR19TSVRFIiwgc2l0ZWluZm9fZ2V0X2ZpbGVzKGQsIHN5c3Jvb3RjYWNoZT1UcnVlKSkKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKaW5kZXggNzhhMmY3Ni4uZmM4MmY4ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCkBAIC03MywxMCArNzMsMTMgQEAKICMKICMgbGliZ2NjLWluaXRpYWwgLSBmYWlscyB3aXRoIENQUCBzYW5pdHkgY2hlY2sgZXJyb3IgaWYgaG9zdCBzeXNyb290IGNvbnRhaW5zCiAjICAgICAgICAgICAgICAgICAgY3Jvc3MgZ2NjIGJ1aWx0IGZvciBhbm90aGVyIHRhcmdldCB0dW5lL3ZhcmlhbnQKKyMgc3lzdGVtdGFwIC0gX0hlbHBlclNEVC5jIHVuZGVmcyBtYWNyb3MgYW5kIHVzZXMgdGhlIGlkZW50aWZpZXJzIGluIG1hY3JvcyBlbWl0dGluZworIyAgICAgICAgICAgICBpbmxpbmUgYXNzZW1ibHkKICMgdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSAtICR7SE9TVF9QUkVGSVh9IGlzIGVtcHR5IHdoaWNoIHRyaWdnZXJzIHRoZSAiTlVMTAogIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4IiBlcnJvci4KIElDRUNDX1NZU1RFTV9QQUNLQUdFX0JMICs9ICJcCiAgICAgbGliZ2NjLWluaXRpYWwgXAorICAgIHN5c3RlbXRhcCBcCiAgICAgdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teSBcCiAgICAgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwppbmRleCA3ZmE0ZmYyLi5mNDYzM2RhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKQEAgLTUyNiw3ICs1MjYsNyBAQAogICAgIGJhc2Vfc2l6ZSA9IHNpemVfa2IgKiBvdmVyaGVhZF9mYWN0b3IKICAgICBiYi5kZWJ1ZygxLCAnJWYgPSAlZCAqICVmJyAlIChiYXNlX3NpemUsIHNpemVfa2IsIG92ZXJoZWFkX2ZhY3RvcikpCiAgICAgYmFzZV9zaXplMiA9IG1heChiYXNlX3NpemUsIHJvb3Rmc19yZXFfc2l6ZSkgKyByb290ZnNfZXh0cmFfc3BhY2UKLSAgICBiYi5kZWJ1ZygxLCAnJWYgPSBtYXgoJWYsICVkKVslZl0gKyAlZCcgJSAoYmFzZV9zaXplMiwgYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUsIG1heChiYXNlX3NpemUsIHJvb3Rmc19yZXFfc2l6ZSksIG92ZXJoZWFkX2ZhY3RvcikpCisgICAgYmIuZGVidWcoMSwgJyVmID0gbWF4KCVmLCAlZClbJWZdICsgJWQnICUgKGJhc2Vfc2l6ZTIsIGJhc2Vfc2l6ZSwgcm9vdGZzX3JlcV9zaXplLCBtYXgoYmFzZV9zaXplLCByb290ZnNfcmVxX3NpemUpLCByb290ZnNfZXh0cmFfc3BhY2UpKQogCiAgICAgYmFzZV9zaXplID0gYmFzZV9zaXplMgogICAgIGlmIGJhc2Vfc2l6ZSAhPSBpbnQoYmFzZV9zaXplKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKaW5kZXggYmYzNjc0Mi4uZWJjYjc5YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MKQEAgLTk2LDggKzk2LDEwIEBACiAgICAgICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8lcy1pbWFnZS0lcycgJSAoa25hbWUsIHR5cGVsb3dlciksICcxJykKIAogICAgIGltYWdlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRScpCi0gICAgaW1hZ2VfYnVuZGxlID0gZC5nZXRWYXIoJ0lOSVRSQU1GU19JTUFHRV9CVU5ETEUnKQotICAgIGlmIGltYWdlIGFuZCBiYi51dGlscy50b19ib29sZWFuKGltYWdlX2J1bmRsZSwgRmFsc2UpOgorICAgICMgSWYgdGhlIElOVElSQU1GU19JTUFHRSBpcyBzZXQgYnV0IHRoZSBJTklUUkFNRlNfSU1BR0VfQlVORExFIGlzIHNldCB0byAwLAorICAgICMgdGhlIGRvX2J1bmRsZV9pbml0cmFtZnMgZG9lcyBub3RoaW5nLCBidXQgdGhlIElOSVRSQU1GU19JTUFHRSBpcyBidWlsdAorICAgICMgc3RhbmRhbG9uZSBmb3IgdXNlIGJ5IHdpYyBhbmQgb3RoZXIgdG9vbHMuCisgICAgaWYgaW1hZ2U6CiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fYnVuZGxlX2luaXRyYW1mcycsICdkZXBlbmRzJywgJyAke0lOSVRSQU1GU19JTUFHRX06ZG9faW1hZ2VfY29tcGxldGUnKQogCiAgICAgIyBOT1RFOiBzZXR0aW5nIElOSVRSQU1GU19UQVNLIGlzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKaW5kZXggMTE0ZDY1NS4uYWE4NDUxZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcwpAQCAtMTY0Niw3ICsxNjQ2LDggQEAKICAgICAgICAgICAgICAgICBwcm92ID0gKHRoaXNfc29uYW1lLCBsZGlyLCBwa2d2ZXIpCiAgICAgICAgICAgICAgICAgaWYgbm90IHByb3YgaW4gc29uYW1lczoKICAgICAgICAgICAgICAgICAgICAgIyBpZiBsaWJyYXJ5IGlzIHByaXZhdGUgKG9ubHkgdXNlZCBieSBwYWNrYWdlKSB0aGVuIGRvIG5vdCBidWlsZCBzaGxpYiBmb3IgaXQKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IHByaXZhdGVfbGlicyBvciB0aGlzX3NvbmFtZSBub3QgaW4gcHJpdmF0ZV9saWJzOgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZm5tYXRjaAorICAgICAgICAgICAgICAgICAgICBpZiBub3QgcHJpdmF0ZV9saWJzIG9yIGxlbihbaSBmb3IgaSBpbiBwcml2YXRlX2xpYnMgaWYgZm5tYXRjaC5mbm1hdGNoKHRoaXNfc29uYW1lLCBpKV0pID09IDA6CiAgICAgICAgICAgICAgICAgICAgICAgICBzb25hbWVzLmFkZChwcm92KQogICAgICAgICAgICAgICAgIGlmIGxpYmRpcl9yZS5tYXRjaChvcy5wYXRoLmRpcm5hbWUoZmlsZSkpOgogICAgICAgICAgICAgICAgICAgICBuZWVkc19sZGNvbmZpZyA9IFRydWUKQEAgLTE4MjksNyArMTgzMCw4IEBACiAgICAgICAgICAgICAjIC9vcHQvYWJjL2xpYi9saWJmb28uc28uMSBhbmQgY29udGFpbnMgL3Vzci9iaW4vYWJjIGRlcGVuZGluZyBvbiBzeXN0ZW0gbGlicmFyeSBsaWJmb28uc28uMQogICAgICAgICAgICAgIyBidXQgc2tpcHBpbmcgaXQgaXMgc3RpbGwgYmV0dGVyIGFsdGVybmF0aXZlIHRoYW4gcHJvdmlkaW5nIG93bgogICAgICAgICAgICAgIyB2ZXJzaW9uIGFuZCB0aGVuIGFkZGluZyBydW50aW1lIGRlcGVuZGVuY3kgZm9yIHRoZSBzYW1lIHN5c3RlbSBsaWJyYXJ5Ci0gICAgICAgICAgICBpZiBwcml2YXRlX2xpYnMgYW5kIG5bMF0gaW4gcHJpdmF0ZV9saWJzOgorICAgICAgICAgICAgaW1wb3J0IGZubWF0Y2gKKyAgICAgICAgICAgIGlmIHByaXZhdGVfbGlicyBhbmQgbGVuKFtpIGZvciBpIGluIHByaXZhdGVfbGlicyBpZiBmbm1hdGNoLmZubWF0Y2goblswXSwgaSldKSA+IDA6CiAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgJyVzOiBEZXBlbmRlbmN5ICVzIGNvdmVyZWQgYnkgUFJJVkFURV9MSUJTJyAlIChwa2csIG5bMF0pKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBuWzBdIGluIHNobGliX3Byb3ZpZGVyLmtleXMoKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjNuYXRpdmUuYmJjbGFzcwppbmRleCBhM2FjYWY2Li5kOThmYjRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uM25hdGl2ZS5iYmNsYXNzCkBAIC05LDYgKzksMTQgQEAKIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUgogZXhwb3J0IFNUQUdJTkdfTElCRElSCiAKKyMgUGFja2FnZXMgY2FuIHVzZQorIyBmaW5kX3BhY2thZ2UoUHl0aG9uSW50ZXJwIFJFUVVJUkVEKQorIyBmaW5kX3BhY2thZ2UoUHl0aG9uTGlicyBSRVFVSVJFRCkKKyMgd2hpY2ggZW5kcyB1cCB1c2luZyBsaWJzL2luY2x1ZGVzIGZyb20gYnVpbGQgaG9zdAorIyBUaGVyZWZvcmUgcHJlLWVtcHQgdGhhdCBlZmZvcnQKK2V4cG9ydCBQWVRIT05fTElCUkFSWT0iJHtTVEFHSU5HX0xJQkRJUn0vbGliJHtQWVRIT05fRElSfSR7UFlUSE9OX0FCSX0uc28iCitleHBvcnQgUFlUSE9OX0lOQ0xVREVfRElSPSIke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfSIKKwogZXhwb3J0IF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPSJfc3lzY29uZmlnZGF0YSIKIAogIyBzdXBwcmVzcyBob3N0IHVzZXIncyBzaXRlLXBhY2thZ2VzIGRpcnMuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCmluZGV4IGFlNjYwMGMuLjBlOTAxOWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCkBAIC0xMiw2ICsxMiwxNCBAQAogZXhwb3J0IFNUQUdJTkdfSU5DRElSCiBleHBvcnQgU1RBR0lOR19MSUJESVIKIAorIyBQYWNrYWdlcyBjYW4gdXNlCisjIGZpbmRfcGFja2FnZShQeXRob25JbnRlcnAgUkVRVUlSRUQpCisjIGZpbmRfcGFja2FnZShQeXRob25MaWJzIFJFUVVJUkVEKQorIyB3aGljaCBlbmRzIHVwIHVzaW5nIGxpYnMvaW5jbHVkZXMgZnJvbSBidWlsZCBob3N0CisjIFRoZXJlZm9yZSBwcmUtZW1wdCB0aGF0IGVmZm9ydAorZXhwb3J0IFBZVEhPTl9MSUJSQVJZPSIke1NUQUdJTkdfTElCRElSfS9saWIke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS5zbyIKK2V4cG9ydCBQWVRIT05fSU5DTFVERV9ESVI9IiR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9IgorCiAjIHN1cHByZXNzIGhvc3QgdXNlcidzIHNpdGUtcGFja2FnZXMgZGlycy4KIGV4cG9ydCBQWVRIT05OT1VTRVJTSVRFID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JtX3dvcmsuYmJjbGFzcwppbmRleCBjNDc4ZjRhLi5hNmJkM2Y3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9ybV93b3JrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcm1fd29yay5iYmNsYXNzCkBAIC0xMjEsNyArMTIxLDcgQEAKIH0KIGRvX3JtX3dvcmtfYWxsW3JlY3JkZXB0YXNrXSA9ICJkb19ybV93b3JrIgogZG9fcm1fd29ya19hbGxbbm9leGVjXSA9ICIxIgotYWRkdGFzayBybV93b3JrX2FsbCBhZnRlciBiZWZvcmUgZG9fYnVpbGQKK2FkZHRhc2sgcm1fd29ya19hbGwgYmVmb3JlIGRvX2J1aWxkCiAKIGRvX3BvcHVsYXRlX3Nka1twb3N0ZnVuY3NdICs9ICJybV93b3JrX3BvcHVsYXRlc2RrIgogcm1fd29ya19wb3B1bGF0ZXNkayAoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yb290ZnMtcG9zdGNvbW1hbmRzLmJiY2xhc3MKaW5kZXggNmNlYzIzZS4uZmMzMzgxNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcm9vdGZzLXBvc3Rjb21tYW5kcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Jvb3Rmcy1wb3N0Y29tbWFuZHMuYmJjbGFzcwpAQCAtOTUsNiArOTUsMTEgQEAKIAkJc2VkIC1pIC1lICcvXlsjWzpzcGFjZTpdXSpcL2Rldlwvcm9vdC97cy9kZWZhdWx0cy9yby87cy9cKFtbOnNwYWNlOl1dKltbOmRpZ2l0Ol1dXClcKFtbOnNwYWNlOl1dKlwpW1s6ZGlnaXQ6XV0kL1wxXDIwL30nICR7SU1BR0VfUk9PVEZTfS9ldGMvZnN0YWIKIAlmaQogCisJIyBUd2VhayB0aGUgIm1vdW50IC1vIHJlbW91bnQscncgLyIgY29tbWFuZCBpbiBidXN5Ym94LWluaXR0YWIgaW5pdHRhYgorCWlmIFsgLWYgJHtJTUFHRV9ST09URlN9L2V0Yy9pbml0dGFiIF07IHRoZW4KKwkJc2VkIC1pICdzfC9iaW4vbW91bnQgLW8gcmVtb3VudCxydyAvfC9iaW4vbW91bnQgLW8gcmVtb3VudCxybyAvfCcgJHtJTUFHRV9ST09URlN9L2V0Yy9pbml0dGFiCisJZmkKKwogCSMgSWYgd2UncmUgdXNpbmcgb3BlbnNzaCBhbmQgdGhlIC9ldGMvc3NoIGRpcmVjdG9yeSBoYXMgbm8gcHJlLWdlbmVyYXRlZCBrZXlzLAogCSMgd2Ugc2hvdWxkIGNvbmZpZ3VyZSBvcGVuc3NoIHRvIHVzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIC9ldGMvc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CiAJIyBhbmQgdGhlIGtleXMgdW5kZXIgL3Zhci9ydW4vc3NoLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCmluZGV4IGNkYzM0MmQuLjU1YTliNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKQEAgLTE5Nyw3ICsxOTcsNyBAQAogICAgIGZvciBwa2dhcmNoIGluIHBrZ2FyY2hzOgogICAgICAgICBmb3IgbWFuaWZlc3QgaW4gZ2xvYi5nbG9iKGQuZXhwYW5kKCIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSVzLSoucG9wdWxhdGVfc3lzcm9vdCIgJSBwa2dhcmNoKSk6CiAgICAgICAgICAgICBpZiBtYW5pZmVzdC5lbmRzd2l0aCgiLWluaXRpYWwucG9wdWxhdGVfc3lzcm9vdCIpOgotICAgICAgICAgICAgICAgICMgc2tpcCBnbGliYy1pbml0aWFsIGFuZCBsaWJnY2MtaW5pdGlhbCBkdWUgdG8gZmlsZSBvdmVybGFwCisgICAgICAgICAgICAgICAgIyBza2lwIGxpYmdjYy1pbml0aWFsIGR1ZSB0byBmaWxlIG92ZXJsYXAKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgbm90IG5hdGl2ZSBhbmQgKG1hbmlmZXN0LmVuZHN3aXRoKCItbmF0aXZlLnBvcHVsYXRlX3N5c3Jvb3QiKSBvciAibmF0aXZlc2RrLSIgaW4gbWFuaWZlc3QpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYgYi9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKaW5kZXggMTMxMWU2Yi4uYTBhN2Y0OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgpAQCAtMzYwLDEyICszNjAsNiBAQAogIyBUaGUgcGVyc2lzdGVudCBjYWNoZSBzaG91bGQgYmUgc2hhcmVkIGJ5IGFsbCBidWlsZHMKIFBFUlNJU1RFTlRfRElSID0gIiR7VE9QRElSfS9jYWNoZSIKIExPR19ESVIgPSAiJHtUTVBESVJ9L2xvZyIKLUNPX0RJUiA9ICIke0RMX0RJUn0iCi1DVlNESVIgPSAiJHtDT19ESVJ9L2N2cyIKLVNWTkRJUiA9ICIke0NPX0RJUn0vc3ZuIgotR0lURElSID0gIiR7Q09fRElSfS9naXQyIgotQlpSRElSID0gIiR7Q09fRElSfS9ienIiCi1IR0RJUiA9ICIke0NPX0RJUn0vaGciCiAKIFNUQU1QU19ESVIgPz0gIiR7VE1QRElSfS9zdGFtcHMiCiBTVEFNUCA9ICIke1NUQU1QU19ESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9LyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0iCkBAIC02NzYsMTIgKzY3MCw2IEBACiAjICBleHBvcnQgREVCSUFOX01JUlJPUiA9ICJodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wiCiAjICAgICBpbnRvIHlvdXIgbG9jYWwuY29uZgogCi1GRVRDSENNRF9zdm4gPSAiL3Vzci9iaW4vZW52IHN2biAtLW5vbi1pbnRlcmFjdGl2ZSAtLXRydXN0LXNlcnZlci1jZXJ0IgotRkVUQ0hDTURfY3ZzID0gIi91c3IvYmluL2VudiBjdnMiCi1GRVRDSENNRF93Z2V0ID0gIi91c3IvYmluL2VudiB3Z2V0IC10IDIgLVQgMzAgLS1wYXNzaXZlLWZ0cCAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIgotRkVUQ0hDTURfYnpyID0gIi91c3IvYmluL2VudiBienIiCi1GRVRDSENNRF9oZyA9ICIvdXNyL2Jpbi9lbnYgaGciCi0KIFNSQ0RBVEUgPSAiJHtEQVRFfSIKIFNSQ1JFViA/Pz0gIklOVkFMSUQiCiBBVVRPUkVWID0gIiR7QGJiLmZldGNoMi5nZXRfYXV0b3JldihkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vZGVmYXVsdHNldHVwLmNvbmYgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vZGVmYXVsdHNldHVwLmNvbmYKaW5kZXggOWIxZWUyMC4uNjZmZDI0NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2RlZmF1bHRzZXR1cC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9kZWZhdWx0c2V0dXAuY29uZgpAQCAtMSw3ICsxLDYgQEAKIGluY2x1ZGUgY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKIGluY2x1ZGUgY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXZlcnNpb25zLmluYwogaW5jbHVkZSBjb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKLWluY2x1ZGUgY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jCiBpbmNsdWRlIGNvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCiAKIFRDTU9ERSA/PSAiZGVmYXVsdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtcHJvdmlkZXJzLmluYwppbmRleCA4ZjRkNDRkLi5lYTg4YmQ0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LXByb3ZpZGVycy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1wcm92aWRlcnMuaW5jCkBAIC01LDYgKzUsOCBAQAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlci14Zjg2ID89ICJ4c2VydmVyLXhvcmciCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9lZ2wgPz0gIm1lc2EiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbCA/PSAibWVzYSIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmdsLW5hdGl2ZSA/PSAibWVzYS1uYXRpdmUiCitQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstbGliZ2wgPz0gIm5hdGl2ZXNkay1tZXNhIgogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliZ2xlczEgPz0gIm1lc2EiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJnbGVzMiA/PSAibWVzYSIKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL21lc2EgPz0gIm1lc2EiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwppbmRleCBhYjZlYmRiLi5lMzE0NjQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKQEAgLTQzLDkgKzQzLDYgQEAKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWNsdXR0ZXIgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1jb3JlLWltYWdlLWZ1bGwtY21kbGluZSA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2Uta2VybmVsLWRldiA9ICJPRS1Db3JlIgotRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtbHNiID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1sc2ItZGV2ID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1sc2Itc2RrID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1taW5pbWFsID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tY29yZS1pbWFnZS1taW5pbWFsLWRldiA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWNvcmUtaW1hZ2UtbWluaW1hbC1pbml0cmFtZnMgPSAiT0UtQ29yZSIKQEAgLTgwLDggKzc3LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1kb2Nib29rLXhzbC1zdHlsZXNoZWV0cyA9ICJGZWRvcmE9ZG9jYm9vay14c2wtc3R5bGVzaGVldHMgT3BlbnN1c2U9ZG9jYm9vay14c2wtc3R5bGVzaGVldHMiCiBESVNUUk9fUE5fQUxJQVNfcG4tZHJvcGJlYXIgPSAiRGViaWFuPWRyb3BiZWFyIFVidW50dT1kcm9wYmVhciIKIERJU1RST19QTl9BTElBU19wbi1kdGMgPSAiRmVkb3JhPWR0YyBVYnVudHU9ZHRjIgotRElTVFJPX1BOX0FMSUFTX3BuLWVnbGluZm8tZmIgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1lZ2xpbmZvLXgxMSA9ICJPRS1Db3JlIgogRElTVFJPX1BOX0FMSUFTX3BuLWVuY29kaW5ncyA9ICJVYnVudHU9eGZvbnRzLWVuY29kaW5ncyBNYW5kcml2YT14MTEtZm9udC1lbmNvZGluZ3MgRGViaWFuPXhmb250cy1lbmNvZGluZ3MiCiBESVNUUk9fUE5fQUxJQVNfcG4tZm9udC1hbGlhcyA9ICJGZWRvcmE9eG9yZy14MTEtZm9udHMtYmFzZSBNYW5kcml2YT14MTEtZm9udC1hbGlhcyBNZWVnbz14b3JnLXgxMS1mb250cyIKIERJU1RST19QTl9BTElBU19wbi1mb250LXV0aWwgPSAiTWVlZ289eG9yZy14MTEtZm9udC11dGlscyBGZWRvcmE9eG9yZy14MTEtZm9udC11dGlscyBVYnVudHU9eGZvbnRzLXV0aWxzIE1hbmRyaXZhPXgxMS1mb250LXV0aWwgRGViaWFuPXhmb250cy11dGlscyIKQEAgLTIwMiw4ICsxOTcsNiBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWxpbnV4LXlvY3RvID0gIkRlYmlhbj1saW51eC1iYXNlIFVidW50dT1saW51eCIKIERJU1RST19QTl9BTElBU19wbi1saW51eC15b2N0by1ydCA9ICJEZWJpYW49bGludXgtYmFzZSBVYnVudHU9bGludXgiCiBESVNUUk9fUE5fQUxJQVNfcG4tbGludXgteW9jdG8tdGlueSA9ICJPU1BEVCIKLURJU1RST19QTl9BTElBU19wbi1sc2Jpbml0c2NyaXB0cyA9ICJXaW5kcml2ZXIiCi1ESVNUUk9fUE5fQUxJQVNfcG4tbHNidGVzdCA9ICJXaW5kcml2ZXIiCiBESVNUUk9fUE5fQUxJQVNfcG4tbHRwID0gIk1hbmRyaXZhPWx0cCBVYnVudHU9bHRwIgogRElTVFJPX1BOX0FMSUFTX3BuLWx0dG5nLW1vZHVsZXMgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2x0dG5nLm9yZy8iCiBESVNUUk9fUE5fQUxJQVNfcG4tbHR0bmctdG9vbHMgPSAiT1NQRFQgdXBzdHJlYW09aHR0cDovL2x0dG5nLm9yZy8iCkBAIC0yNjUsNyArMjU4LDYgQEAKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZS1kZXZpY2UtZGV2ZWwgPSAiT0UtQ29yZSIKIERJU1RST19QTl9BTElBU19wbi1wYWNrYWdlZ3JvdXAtY29yZS1lY2xpcHNlLWRlYnVnID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtZnVsbC1jbWRsaW5lID0gIk9FLUNvcmUiCi1ESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtbHNiID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtbmZzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtc2RrID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4tcGFja2FnZWdyb3VwLWNvcmUtc3NoLWRyb3BiZWFyID0gIk9FLUNvcmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKaW5kZXggNmEyMzA4ZC4uNWYyMWY5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwpAQCAtNjYsNiArNjYsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYmludXRpbHMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJpbnV0aWxzLWNyb3NzLWNhbmFkaWFuLSR7VFJBTlNMQVRFRF9UQVJHRVRfQVJDSH0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zcy10ZXN0c3VpdGUgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iaW51dGlscy1jcm9zc3Nkay0ke1NES19TWVN9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmlzb24gPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJqYW0tbmF0aXZlID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKQEAgLTExNCw4ICsxMTUsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1rZXJuZWwtZGV2ID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2Utc2F0byA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXNhdG8tc2RrID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbHNiID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtbHNiLXNkayA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLXRlc3RtYXN0ZXItaW5pdHJhbWZzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvcmUtaW1hZ2UtdGVzdG1hc3RlciA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWNsdXR0ZXIgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgpAQCAtMTQ0LDYgKzE0Myw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kYnVzLXRlc3QgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRidXMtd2FpdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGViaWFudXRpbHMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlamFnbnUgPSAiTmF0aGFuIFJvc3NpIDxuYXRoYW5AbmF0aGFucm9zc2kuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlcG1vZHdyYXBwZXItY3Jvc3MgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRlc2t0b3AtZmlsZS11dGlscyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaGNwID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCkBAIC0xNjUsOSArMTY1LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVkID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaXZhciA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVmaWJvb3RtZ3IgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1lZ2xpbmZvLWZiID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8teDExID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVnbGluZm8td2F5bGFuZCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbGZ1dGlscyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWxsID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lbmNoYW50ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgpAQCAtMjE3LDEwICsyMTQsMTAgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWItMi4wID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYi1uZXR3b3JraW5nID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbGliYy1pbml0aWFsID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbG9jYWxlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtbXRyYWNlID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpYmMtc2NyaXB0cyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWJjLXRlc3RzdWl0ZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdsaWRlID0gIk90YXZpbyBTYWx2YWRvciA8b3RhdmlvLnNhbHZhZG9yQG9zc3lzdGVtcy5jb20uYnI+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ21wID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ25vbWUtZGVza3RvcC10ZXN0aW5nID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtNDU1LDkgKzQ1Miw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1sbHZtID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbG9ncm90YXRlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1scnpzeiA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxzYiA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbHNiaW5pdHNjcmlwdHMgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2J0ZXN0ID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1sc2ItcmVsZWFzZSA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHNvZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWx0cCA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbHR0bmctbW9kdWxlcyA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKaW5kZXggNjIwOTc4YS4uYWFmMDRlOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwpAQCAtMzYsNyArMzYsNyBAQAogU0VDVVJJVFlfQ0ZMQUdTX3BuLWxpYmdjY19wb3dlcnBjID0gIiIKIAogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdsaWJjID0gIiIKLVNFQ1VSSVRZX0NGTEFHU19wbi1nbGliYy1pbml0aWFsID0gIiIKK1NFQ1VSSVRZX0NGTEFHU19wbi1nbGliYy10ZXN0c3VpdGUgPSAiIgogU0VDVVJJVFlfQ0ZMQUdTX3BuLWdjYy1ydW50aW1lID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViID0gIiIKIFNFQ1VSSVRZX0NGTEFHU19wbi1ncnViLWVmaSA9ICIiCkBAIC02MCw3ICs2MCw3IEBACiAKIFNFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nY2MtcnVudGltZSA9ICIiCiBTRUNVUklUWV9TVEFDS19QUk9URUNUT1JfcG4tZ2xpYmMgPSAiIgotU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdsaWJjLWluaXRpYWwgPSAiIgorU0VDVVJJVFlfU1RBQ0tfUFJPVEVDVE9SX3BuLWdsaWJjLXRlc3RzdWl0ZSA9ICIiCiAjIEFsbCB4b3JnIG1vZHVsZSBkcml2ZXJzIG5lZWQgdG8gYmUgbGlua2VkIHRoaXMgd2F5IGFzIHdlbGwgYW5kIGFyZQogIyBoYW5kbGVkIGluIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwogU0VDVVJJVFlfTERGTEFHU19wbi14c2VydmVyLXhvcmcgPSAiJHtTRUNVUklUWV9YX0xERkxBR1N9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCmluZGV4IGM4OWI4ZTAuLmQ4ZjQzNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKQEAgLTE0LDggKzE0LDYgQEAKIFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7U0RLX1BSRUZJWH1jb21waWxlcmxpYnMgPSAibmF0aXZlc2RrLWdjYy1ydW50aW1lIgogCiAjIERlZmF1bHQgbGliYyBjb25maWcKLVBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1saWJjLWluaXRpYWwgPSAiJHtUQ0xJQkN9LWluaXRpYWwiCi1QUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9uYXRpdmVzZGstJHtTREtfUFJFRklYfWxpYmMtaW5pdGlhbCA/PSAibmF0aXZlc2RrLWdsaWJjLWluaXRpYWwiCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9nZXR0ZXh0ID8/PSAiZ2V0dGV4dCIKIAogR0NDVkVSU0lPTiA/PSAiOS4lIgpAQCAtMjMsNyArMjEsNyBAQAogQklOVVZFUlNJT04gPz0gIjIuMzIlIgogR0RCVkVSU0lPTiA/PSAiOC4zJSIKIEdMSUJDVkVSU0lPTiA/PSAiMi4zMCUiCi1MSU5VWExJQkNWRVJTSU9OID89ICI1LjAlIgorTElOVVhMSUJDVkVSU0lPTiA/PSAiNS4yJSIKIFFFTVVWRVJTSU9OID89ICI0LjElIgogR09WRVJTSU9OID89ICIxLjEyJSIKICMgVGhpcyBjYW4gbm90IHVzZSB3aWxkY2FyZHMgbGlrZSA4LjAuJSBzaW5jZSBpdCBpcyBhbHNvIHVzZWQgaW4gbWVzYSB0byBkZW5vdGUKQEAgLTYyLDggKzYwLDYgQEAKIFBSRUZFUlJFRF9WRVJTSU9OX2dsaWJjLW10cmFjZSAgICAgICAgICAgICA/PSAiJHtHTElCQ1ZFUlNJT059IgogUFJFRkVSUkVEX1ZFUlNJT05fZ2xpYmMtc2NyaXB0cyAgICAgICAgICAgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9uYXRpdmVzZGstZ2xpYmMgICAgICAgICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKLVBSRUZFUlJFRF9WRVJTSU9OX2dsaWJjLWluaXRpYWwgICAgICAgICAgICA/PSAiJHtHTElCQ1ZFUlNJT059IgotUFJFRkVSUkVEX1ZFUlNJT05fbmF0aXZlc2RrLWdsaWJjLWluaXRpYWwgID89ICIke0dMSUJDVkVSU0lPTn0iCiBQUkVGRVJSRURfVkVSU0lPTl9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlICAgPz0gIiR7R0xJQkNWRVJTSU9OfSIKIAogUFJFRkVSUkVEX1ZFUlNJT05fcWVtdSA/PSAiJHtRRU1VVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvd29ybGQtYnJva2VuLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJjYWNmZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS93b3JsZC1icm9rZW4uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotIwotIyBFeGNsdWRlIGtub3duIGJyb2tlbiBwYWNrYWdlcwotIwotCi0jIHJ0LXRlc3RzIG5lZWRzIFBJIG11dGV4IHN1cHBvcnQgaW4gbGliYwotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXJ0LXRlc3RzX2xpYmMtbXVzbCA9ICIxIgotCi0jIGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdfU1RBVF9WRVInCi1FWENMVURFX0ZST01fV09STERfcG4tcHNldWRvX2xpYmMtbXVzbCA9ICIxIgotCi0jIGVycm9yOiBlcnJvci5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1FWENMVURFX0ZST01fV09STERfcG4tcHJlbGlua19saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogb2JzdGFjay5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1FWENMVURFX0ZST01fV09STERfcG4tc3lzdGVtdGFwX2xpYmMtbXVzbCA9ICIxIgotRVhDTFVERV9GUk9NX1dPUkxEX3BuLXN5c3RlbXRhcC11cHJvYmVzX2xpYmMtbXVzbCA9ICIxIgotCi0jIGVycm9yOiBhIHBhcmFtZXRlciBsaXN0IHdpdGhvdXQgdHlwZXMgaXMgb25seSBhbGxvd2VkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbgotIyAgICAgICAgICAgIHZvaWQgKCpfZnVuY3Rpb24pKHNpZ3ZhbF90KTsKLUVYQ0xVREVfRlJPTV9XT1JMRF9wbi1xZW11X2xpYmMtbXVzbCA9ICIxIgotCi0jIGVycm9yOiBmb3JtYXQgJyVzJyBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUgJ2NoYXIgKicsIGJ1dCBhcmd1bWVudCA0IGhhcyB0eXBlICdpbnQnIFstV2Vycm9yPWZvcm1hdD1dCi0jICAgc25wcmludGYoYnVmLCBzaXplLCAiJXMiLCBzdHJlcnJvcl9yKGVyciwgc2J1Ziwgc2l6ZW9mKHNidWYpKSk7Ci1FWENMVURFX0ZST01fV09STERfcG4tcGVyZl9saWJjLW11c2wgPSAiMSIKLQotIyBlcnJvcjogJ1JUTERfTkVYVCcgd2FzIG5vdCBkZWNsYXJlZCBpbiB0aGlzIHNjb3BlCi1FWENMVURFX0ZST01fV09STERfcG4tZ2NjLXNhbml0aXplcnNfbGliYy1tdXNsID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2ZlYXR1cmUtYXJtLXRodW1iLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdGh1bWIuaW5jCmluZGV4IDBiNDdjY2EuLmJhZTE2OWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdGh1bWIuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9hcm0vZmVhdHVyZS1hcm0tdGh1bWIuaW5jCkBAIC0xLDggKzEsNiBAQAogCiBUVU5FVkFMSURbdGh1bWJdID0gIlN1cHBvcnQgVGh1bWIgaW5zdHJ1Y3Rpb25zIgogCi1BUk1fVEhVTUJfU1VGRklYID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnVFVORV9GRUFUVVJFUycsICdhcm12NCBhcm12NSBhcm12NicsICd0JywgJ3QyJywgZCl9IgotCiAjIElmIHRoZSBkZXZpY2Ugc3VwcG9ydHMgQVJNLCB0aGVuIHJlc3BlY3QgQVJNX1RIVU1CX09QVCAod2hpY2ggY2FuIGJlICJhcm0iIG9yICJ0aHVtYiIpCiAjIElmIHRoZSBkZXZpY2UgZG9lc24ndCBzdXBwb3J0IEFSTSwgdGhlbiBhbHdheXMgc2V0ICJ0aHVtYiIgZXZlbiB3aGVuCiAjIHNvbWUgcmVjaXBlIGV4cGxpY2l0bHkgc2V0cyBBUk1fSU5TVFJVQ1RJT05fU0VUIHRvICJhcm0iCkBAIC0yMyw2ICsyMSwxMSBAQAogCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndGh1bWInLCAnIC1tJHtBUk1fTV9PUFR9JywgJycsIGQpfSIKIAorQVJNX1RIVU1CX1NVRkZJWCA9ICJ0MiIKK0FSTV9USFVNQl9TVUZGSVhfYXJtdjQgPSAidCIKK0FSTV9USFVNQl9TVUZGSVhfYXJtdjUgPSAidCIKK0FSTV9USFVNQl9TVUZGSVhfYXJtdjYgPSAidCIKKwogIyBBZGQgc3VmZml4IGZyb20gQVJNX1RIVU1CX1NVRkZJWCBvbmx5IGlmIGFmdGVyIGFsbCB0aGlzIHdlIHN0aWxsIHNldCBBUk1fTV9PUFQgdG8gdGh1bWIKIEFSTVBLR1NGWF9USFVNQiAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndGh1bWInLCAnJHtBUk1fVEhVTUJfU1VGRklYfScsICcnLCBkKSBpZiBkLmdldFZhcignQVJNX01fT1BUJykgPT0gJ3RodW1iJyBlbHNlICcnfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMKaW5kZXggOWNmNmI4OC4uOGMwYzk0MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jCkBAIC04LDYgKzgsMTEgQEAKIFRVTkVfUEtHQVJDSCA9ICIke1RVTkVfUEtHQVJDSF90dW5lLSR7REVGQVVMVFRVTkV9fSIKIEFCSUVYVEVOU0lPTiA/PSAiIgogCisjIEVuZGlhbgorVFVORVZBTElEW2JpZ2VuZGlhbl0gPSAiVXNlIFBvd2VyUEMgQmlnIEVuZGlhbiIKKworVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJpZ2VuZGlhbiIsICIgLW1iaWctZW5kaWFuIiwgIiAtbWxpdHRsZS1lbmRpYW4iLCBkKX0iCisKIFRVTkVWQUxJRFttMzJdID0gIlBvd2VyIEVMRjMyIHN0YW5kYXJkIEFCSSIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtMzInLCAnIC1tMzInLCAnJywgZCl9IgogVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtMzInLCAncG93ZXJwYycsICcnLCBkKX0iCkBAIC0yMiwxMyArMjcsMjQgQEAKIFRVTkVWQUxJRFthbHRpdmVjXSA9ICJBbHRpdmVjIgogCiAjIEJhc2ljIHR1bmUgZGVmaW5pdGlvbnMKLUFWQUlMVFVORVMgKz0gInBvd2VycGMgcG93ZXJwYy1uZiIgCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcG93ZXJwYy1uZiA9ICJtMzIgZnB1LXNvZnQiCitBVkFJTFRVTkVTICs9ICJwb3dlcnBjIHBvd2VycGMtbmYgcG93ZXJwY2xlIHBvd2VycGNsZS1uZiIgCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjLW5mID0gIm0zMiBmcHUtc29mdCBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBvd2VycGMtbmYgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtcG93ZXJwYy1uZiA9ICJwb3dlcnBjLW5mIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGMtbmYgPSAicG93ZXJwYy1uZiIKIAotVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGMgPSAibTMyIGZwdS1oYXJkIgorVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGMgPSAibTMyIGZwdS1oYXJkIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcG93ZXJwYyA9ICJsaWIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wb3dlcnBjID0gInBvd2VycGMiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYyA9ICJwb3dlcnBjIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcG93ZXJwY2xlLW5mID0gIm0zMiBmcHUtc29mdCIKK0JBU0VfTElCX3R1bmUtcG93ZXJwY2xlLW5mID0gImxpYiIKK1RVTkVfUEtHQVJDSF90dW5lLXBvd2VycGNsZS1uZiA9ICJwb3dlcnBjbGUtbmYiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY2xlLW5mID0gInBvd2VycGNsZS1uZiIKKworVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGNsZSA9ICJtMzIgZnB1LWhhcmQiCitCQVNFX0xJQl90dW5lLXBvd2VycGNsZSA9ICJsaWIiCitUVU5FX1BLR0FSQ0hfdHVuZS1wb3dlcnBjbGUgPSAicG93ZXJwY2xlIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGNsZSA9ICJwb3dlcnBjbGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKaW5kZXggZDk5MTZkNC4uNGJjNTk4MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYwpAQCAtMTMsOCArMTMsMTQgQEAKICMgdXNlciBtb2RlIHFlbXUgZG9lc24ndCBzdXBwb3J0IHBwYzY0CiBNQUNISU5FX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRURfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtNjQnLCAncWVtdS11c2VybW9kZScsICcnLCBkKX0iCiAKLUFWQUlMVFVORVMgKz0gInBvd2VycGM2NCIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wb3dlcnBjNjQgPSAibTY0IGZwdS1oYXJkIgorQVZBSUxUVU5FUyArPSAicG93ZXJwYzY0IHBvd2VycGM2NGxlIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcG93ZXJwYzY0ID0gIm02NCBmcHUtaGFyZCBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBvd2VycGM2NCA9ICJsaWI2NCIKIFRVTkVfUEtHQVJDSF90dW5lLXBvd2VycGM2NCA9ICJwb3dlcnBjNjQiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0ID0gInBvd2VycGM2NCIKKworVFVORV9GRUFUVVJFU190dW5lLXBvd2VycGM2NGxlID0gIm02NCBmcHUtaGFyZCIKK0JBU0VfTElCX3R1bmUtcG93ZXJwYzY0bGUgPSAibGliNjQiCitUVU5FX1BLR0FSQ0hfdHVuZS1wb3dlcnBjNjRsZSA9ICJwb3dlcnBjNjRsZSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjRsZSA9ICJwb3dlcnBjNjRsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYwppbmRleCBhNWY5ZWQ4Li45Nzg4MjBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCkBAIC0xLDggKzEsNyBAQAogIyBGb3IgcnVucWVtdQogSU1BR0VfQ0xBU1NFUyArPSAicWVtdWJvb3QiCi1RQl9NRU0gPSAiLW0gMjU2IgogUUJfTUFDSElORSA9ICItbWFjaGluZSBtYWx0YSIKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eVMwIGNvbnNvbGU9dHR5IgotUUJfT1BUX0FQUEVORCA9ICItdmdhIGNpcnJ1cyAtc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCitRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LXg4Ni5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwppbmRleCAzOTMxYjBmLi40OTU0MThmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYwpAQCAtOSw3ICs5LDcgQEAKIFFCX0FVRElPX0RSViA9ICJhbHNhIgogUUJfQVVESU9fT1BUID0gIi1zb3VuZGh3IGFjOTcsZXMxMzcwIgogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gInZnYT0wIHV2ZXNhZmIubW9kZV9vcHRpb249JHtVVkVTQV9NT0RFfSBvcHJvZmlsZS50aW1lcj0xIHV2ZXNhZmIudGFza190aW1lb3V0PS0xIgotUUJfT1BUX0FQUEVORCA9ICItdmdhIHZtd2FyZSAtc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCitRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvcWVtdXJpc2N2LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9xZW11cmlzY3YuaW5jCmluZGV4IGYxY2I2MjguLmRmMzVmMjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9xZW11cmlzY3YuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9xZW11cmlzY3YuaW5jCkBAIC0xMSw3ICsxMSw5IEBACiAKIFNFUklBTF9DT05TT0xFUyA/PSAiMTE1MjAwO3R0eVMwIDExNTIwMDtodmMwIgogCi1JTUFHRV9GU1RZUEVTX2FwcGVuZCA9ICIgZXh0NCIKK0lNQUdFX0ZTVFlQRVMgKz0gImV4dDQgd2ljLnFjb3cyIgorCitXS1NfRklMRSA/PSAicWVtdXJpc2N2LndrcyIKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyArPSAiIGtlcm5lbC1tb2R1bGVzIgogCkBAIC0yNCw3ICsyNiw2IEBACiAKICMgcWVtdWJvb3Qgb3B0aW9ucwogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImVhcmx5Y29uPXNiaSIKLVFCX01FTSA9ICItbSA1MTIiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCiBRQl9ERUZBVUxUX0JJT1MgPSAiZndfanVtcC5lbGYiCiBRQl9UQVBfT1BUID0gIi1uZXRkZXYgdGFwLGlkPW5ldDAsaWZuYW1lPUBUQVBALHNjcmlwdD1ubyxkb3duc2NyaXB0PW5vIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jCmluZGV4IDFlM2ExMDguLjI1ZDA0NjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMKQEAgLTMsMTYgKzMsMTYgQEAKIFRVTkVWQUxJRFtyaXNjdjY0XSA9ICJFbmFibGUgNjQtYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIgogVFVORVZBTElEW3Jpc2N2MzJdID0gIkVuYWJsZSAzMi1iaXQgUklTQy1WIG9wdGltaXphdGlvbnMiCiAKLVRVTkVWQUxJRFtsaXR0bGVlbmRpYW5dID0gIkxpdHRsZSBlbmRpYW4gbW9kZSIKK1RVTkVWQUxJRFtiaWdlbmRpYW5dID0gIkJpZyBlbmRpYW4gbW9kZSIKIAogQVZBSUxUVU5FUyArPSAicmlzY3Y2NCByaXNjdjMyIgogCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IGxpdHRsZWVuZGlhbiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBUVU5FX0FSQ0hfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjY0ID0gInJpc2N2NjQiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgogCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIGxpdHRsZWVuZGlhbiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjMyID0gInJpc2N2MzIiCiBUVU5FX0FSQ0hfdHVuZS1yaXNjdjMyID0gInJpc2N2MzIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjMyID0gInJpc2N2MzIiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcmlzY3YzMiA9ICJyaXNjdjMyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCmluZGV4IGQ4ODNlYmEuLmIyNTk5NWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKQEAgLTYsOCArNiwxMSBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FybTExMzZqZnMnLCAnIC1tY3B1PWFybTExMzZqZi1zJywgJycsIGQpfSIKIE1BQ0hJTkVPVkVSUklERVMgPS4gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2FybTExMzZqZnMnLCAnYXJtdjY6JywgJycgLGQpfSIKIAotQVZBSUxUVU5FUyArPSAiYXJtMTEzNmpmcyIKK0FWQUlMVFVORVMgKz0gImFybTExMzZqZnMgYXJtMTEzNmpmc2hmIgogQVJNUEtHQVJDSF90dW5lLWFybTExMzZqZnMgPSAiYXJtMTEzNmpmcyIKK0FSTVBLR0FSQ0hfdHVuZS1hcm0xMTM2amZzaGYgPSAiYXJtMTEzNmpmcyIKICMgbWNwdSBpcyB1c2VkIHNvIGRvbid0IHVzZSBhcm12NiBhcyB3ZSBkb24ndCB3YW50IG1hcmNoCiBUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmcyA9ICJhcm0gYXJtMTEzNmpmcyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTM2amZzaGYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTEzNmpmc30gY2FsbGNvbnZlbnRpb24taGFyZCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTM2amZzID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2fSBhcm0xMTM2amZzLXZmcCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTM2amZzaGYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZoZn0gYXJtMTEzNmpmc2hmLXZmcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzQxZTgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6LXMuaW5jCkBAIC0wLDAgKzEsMTcgQEAKK0RFRkFVTFRUVU5FID89ICJhcm0xMTc2anpzIgorCityZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY2LmluYworCitUVU5FVkFMSURbYXJtMTE3Nmp6c10gPSAiRW5hYmxlIGFybTExNzZqenMgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYXJtMTE3Nmp6cycsICcgLW1jcHU9YXJtMTE3Nmp6LXMnLCAnJywgZCl9IgorTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYXJtMTE3Nmp6cycsICdhcm12NjonLCAnJyAsZCl9IgorCitBVkFJTFRVTkVTICs9ICJhcm0xMTc2anpzIgorQVJNUEtHQVJDSF90dW5lLWFybTExNzZqenMgPSAiYXJtMTE3Nmp6cyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTc2anpzID0gImFybSB0aHVtYiBhcm0xMTc2anpzIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExNzZqenMgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ0Yi1ub3ZmcH0gYXJtMTE3Nmp6cyBhcm0xMTc2anpzdCIKKworQVZBSUxUVU5FUyArPSAiYXJtMTE3Nmp6cy1iZSIKK0FSTVBLR0FSQ0hfdHVuZS1hcm0xMTc2anpzLWJlID0gIiR7QVJNUEtHQVJDSF90dW5lLWFybTExNzZqenN9IgorVFVORV9GRUFUVVJFU190dW5lLWFybTExNzZqenMtYmUgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtYXJtMTE3Nmp6c30gYmlnZW5kaWFuIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExNzZqenMtYmUgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ0Yi1ub3ZmcH0gYXJtMTE3Nmp6c2IgYXJtMTE3Nmp6c3RiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtZXA5MzEyLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWVwOTMxMi5pbmMKaW5kZXggNGQ5MjgyMS4uYmUyMGViMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtZXA5MzEyLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1lcDkzMTIuaW5jCkBAIC0yLDcgKzIsNyBAQAogCiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL2FybS9hcmNoLWFybXY0LmluYwogCi1UVU5FVkFMSURbZXA5MzEyXSA9ICJFbmFibGUgSW50ZWwgUFhBMjd4IHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorVFVORVZBTElEW2VwOTMxMl0gPSAiRW5hYmxlIENpcnJ1cyBMb2dpYyBFUDkzMTIgc3BlY2lmaWMgcHJvY2Vzc29yIG9wdGltaXphdGlvbnMiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZXA5MzEyJywgJyAtbWFyY2g9ZXA5MzEyIC1tY3B1PWVwOTMxMicsICcnLCBkKX0iCiBNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdlcDkzMTInLCAnYXJtdjQ6JywgJycgLGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI1LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNS5pbmMKaW5kZXggMzk1MDFiZC4uNDhjMzNmYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI1LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjUuaW5jCkBAIC02LDEyICs2LDEyIEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI1JywgJyAtbWNwdT1wb3dlcjUnLCAnJywgZCl9IgogCiBBVkFJTFRVTkVTICs9ICJwcGNwNSBwcGM2NHA1IgotVFVORV9GRUFUVVJFU190dW5lLXBwY3A1ID0gIm0zMiBmcHUtaGFyZCBwb3dlcjUgYWx0aXZlYyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNwNSA9ICJtMzIgZnB1LWhhcmQgcG93ZXI1IGFsdGl2ZWMgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGNwNSA9ICJsaWIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNwNSA9ICJwcGNwNSIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNwNSA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGNwNSIKIAotVFVORV9GRUFUVVJFU190dW5lLXBwYzY0cDUgPSAibTY0IGZwdS1oYXJkIHBvd2VyNSBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwYzY0cDUgPSAibTY0IGZwdS1oYXJkIHBvd2VyNSBhbHRpdmVjIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcHBjNjRwNSA9ICJsaWI2NCIKIFRVTkVfUEtHQVJDSF90dW5lLXBwYzY0cDUgPSAicHBjNjRwNSIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM2NHA1ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGM2NH0gcHBjNjRwNSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjYuaW5jCmluZGV4IDFkNWU4ZWMuLmI3MDg2NjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI2LmluYwpAQCAtNiwxMiArNiwxMiBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyNicsICcgLW1jcHU9cG93ZXI2JywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjcDYgcHBjNjRwNiIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNwNiA9ICJtMzIgZnB1LWhhcmQgcG93ZXI2IGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDYgPSAibTMyIGZwdS1oYXJkIHBvd2VyNiBhbHRpdmVjIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcHBjcDYgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjcDYgPSAicHBjcDYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjcDYgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY30gcHBjcDYiCiAKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NHA2ID0gIm02NCBmcHUtaGFyZCBwb3dlcjYgYWx0aXZlYyIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NHA2ID0gIm02NCBmcHUtaGFyZCBwb3dlcjYgYWx0aXZlYyBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwYzY0cDYgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGM2NHA2ID0gInBwYzY0cDYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNjRwNiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjR9IHBwYzY0cDYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjcuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI3LmluYwppbmRleCA4ZjNmMDM3Li5lOTc2Y2MwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wb3dlcjcuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyNy5pbmMKQEAgLTYsMTIgKzYsMTIgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjcnLCAnIC1tY3B1PXBvd2VyNycsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwY3A3IHBwYzY0cDciCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjcDcgPSAibTMyIGZwdS1oYXJkIHBvd2VyNyBhbHRpdmVjIgorVFVORV9GRUFUVVJFU190dW5lLXBwY3A3ID0gIm0zMiBmcHUtaGFyZCBwb3dlcjcgYWx0aXZlYyBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwY3A3ID0gImxpYiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwY3A3ID0gInBwY3A3IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY3A3ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwY3A3IgogCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwNyA9ICJtNjQgZnB1LWhhcmQgcG93ZXI3IGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRwNyA9ICJtNjQgZnB1LWhhcmQgcG93ZXI3IGFsdGl2ZWMgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGM2NHA3ID0gImxpYjY0IgogVFVORV9QS0dBUkNIX3R1bmUtcHBjNjRwNyA9ICJwcGM2NHA3IgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzY0cDcgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwYzY0fSBwcGM2NHA3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNDc2LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwYzQ3Ni5pbmMKaW5kZXggZDAwMTFmZi4uMzFlZWNjNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNDc2LmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM0NzYuaW5jCkBAIC02LDcgKzYsNyBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3BwYzQ3NicsICcgLW1jcHU9NDc2JywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjNDc2IgotVFVORV9GRUFUVVJFU190dW5lLXBwYzQ3NiA9ICJtMzIgZnB1LWhhcmQgcHBjNDc2IgorVFVORV9GRUFUVVJFU190dW5lLXBwYzQ3NiA9ICJtMzIgZnB1LWhhcmQgcHBjNDc2IGJpZ2VuZGlhbiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwYzQ3NiA9ICJwcGM0NzYiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNDc2ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwYzQ3NiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNjAzZS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM2MDNlLmluYwppbmRleCAxM2Y2MGRkLi5iMTEwZjEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM2MDNlLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM2MDNlLmluYwpAQCAtNiw3ICs2LDcgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwcGM2MDNlJywgJyAtbWNwdT02MDNlJywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjNjAzZSIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM2MDNlID0gIm0zMiBmcHUtaGFyZCBwcGM2MDNlIgorVFVORV9GRUFUVVJFU190dW5lLXBwYzYwM2UgPSAibTMyIGZwdS1oYXJkIHBwYzYwM2UgYmlnZW5kaWFuIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjNjAzZSA9ICJwcGM2MDNlIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwYzYwM2UgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY30gcHBjNjAzZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjNzQwMC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM3NDAwLmluYwppbmRleCA0MjVlOGJkLi45MmQ5MDI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM3NDAwLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGM3NDAwLmluYwpAQCAtNiw3ICs2LDcgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwcGM3NDAwJywgJyAtbWNwdT03NDAwIC1tbm8tc3BlJywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjNzQwMCIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM3NDAwID0gIm0zMiBmcHUtaGFyZCBwcGM3NDAwIGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNzQwMCA9ICJtMzIgZnB1LWhhcmQgcHBjNzQwMCBhbHRpdmVjIGJpZ2VuZGlhbiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwYzc0MDAgPSAicHBjNzQwMCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM3NDAwID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwYzc0MDAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2UzMDBjMi5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlMzAwYzIuaW5jCmluZGV4IGFmMjFmNjAuLjZhZGViNGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2UzMDBjMi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTMwMGMyLmluYwpAQCAtNiw2ICs2LDYgQEAKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwcGNlMzAwYzInLCAnIC1tY3B1PWUzMDBjMicsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwY2UzMDBjMiIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNlMzAwYzIgPSAibTMyIGZwdS1zb2Z0IHBwY2UzMDBjMiIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNlMzAwYzIgPSAibTMyIGZwdS1zb2Z0IHBwY2UzMDBjMiBiaWdlbmRpYW4iCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNlMzAwYzIgPSAicHBjZTMwMGMyIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBwY2UzMDBjMiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjLW5mfSBwcGNlMzAwYzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDAuaW5jCmluZGV4IDg5ZWMzZjMuLmFiZjgxYjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDAuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDAuaW5jCkBAIC0xNSw2ICsxNSw2IEBACiBBQklFWFRFTlNJT04gLj0gIiR7U1BFQUJJRVhURU5TSU9OfSIKIAogQVZBSUxUVU5FUyArPSAicHBjZTUwMCIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTAwID0gIm0zMiBzcGUgcHBjZTUwMCIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTAwID0gIm0zMiBzcGUgcHBjZTUwMCBiaWdlbmRpYW4iCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNlNTAwID0gInBwY2U1MDAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjZTUwMCA9ICJwcGNlNTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMG1jLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDBtYy5pbmMKaW5kZXggYmMyNmEwZi4uOWY4YTE3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMG1jLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwbWMuaW5jCkBAIC02LDcgKzYsNyBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3BwY2U1MDBtYycsICcgLW1jcHU9ZTUwMG1jJywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjZTUwMG1jIgotVFVORV9GRUFUVVJFU190dW5lLXBwY2U1MDBtYyA9ICJtMzIgZnB1LWhhcmQgcHBjZTUwMG1jIgorVFVORV9GRUFUVVJFU190dW5lLXBwY2U1MDBtYyA9ICJtMzIgZnB1LWhhcmQgcHBjZTUwMG1jIGJpZ2VuZGlhbiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwY2U1MDBtYyA9ICJwcGNlNTAwbWMiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjZTUwMG1jID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGN9IHBwY2U1MDBtYyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMHYyLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1MDB2Mi5pbmMKaW5kZXggZDMxOGJiYS4uZjZjN2MxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTUwMHYyLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTAwdjIuaW5jCkBAIC0xNSw2ICsxNSw2IEBACiBBQklFWFRFTlNJT04gLj0gIiR7U1BFQUJJRVhURU5TSU9OfSIKIAogQVZBSUxUVU5FUyArPSAicHBjZTUwMHYyIgotVFVORV9GRUFUVVJFU190dW5lLXBwY2U1MDB2MiA9ICJtMzIgcHBjZTUwMHYyIgorVFVORV9GRUFUVVJFU190dW5lLXBwY2U1MDB2MiA9ICJtMzIgcHBjZTUwMHYyIGJpZ2VuZGlhbiIKIFRVTkVfUEtHQVJDSF90dW5lLXBwY2U1MDB2MiA9ICJwcGNlNTAwdjIiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjZTUwMHYyID0gInBwY2U1MDB2MiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1NTAwLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U1NTAwLmluYwppbmRleCBjZWJiMjQ0Li5hY2M2YTUwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNTUwMC5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTU1MDAuaW5jCkBAIC02LDEyICs2LDEyIEBACiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZTU1MDAnLCAnIC1tY3B1PWU1NTAwJywgJycsIGQpfSIKIAogQVZBSUxUVU5FUyArPSAicHBjZTU1MDAgcHBjNjRlNTUwMCIKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGNlNTUwMCA9ICJtMzIgZnB1LWhhcmQgZTU1MDAiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTU1MDAgPSAibTMyIGZwdS1oYXJkIGU1NTAwIGJpZ2VuZGlhbiIKIEJBU0VfTElCX3R1bmUtcHBjZTU1MDAgPSAibGliIgogVFVORV9QS0dBUkNIX3R1bmUtcHBjZTU1MDAgPSAicHBjZTU1MDAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjZTU1MDAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcG93ZXJwY30gcHBjZTU1MDAiCiAKLVRVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NGU1NTAwID0gIm02NCBmcHUtaGFyZCBlNTUwMCIKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGM2NGU1NTAwID0gIm02NCBmcHUtaGFyZCBlNTUwMCBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwYzY0ZTU1MDAgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGM2NGU1NTAwID0gInBwYzY0ZTU1MDAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNjRlNTUwMCA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjR9IHBwYzY0ZTU1MDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNjUwMC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1wcGNlNjUwMC5pbmMKaW5kZXggNWRiN2U3Ni4uZDEyZDIxOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcHBjZTY1MDAuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2U2NTAwLmluYwpAQCAtNiwxMiArNiwxMiBAQAogVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2U2NTAwJywgJyAtbWNwdT1lNjUwMCcsICcnLCBkKX0iCiAKIEFWQUlMVFVORVMgKz0gInBwY2U2NTAwIHBwYzY0ZTY1MDAiCi1UVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTY1MDAgPSAibTMyIGZwdS1oYXJkIGU2NTAwIGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjZTY1MDAgPSAibTMyIGZwdS1oYXJkIGU2NTAwIGFsdGl2ZWMgYmlnZW5kaWFuIgogQkFTRV9MSUJfdHVuZS1wcGNlNjUwMCA9ICJsaWIiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGNlNjUwMCA9ICJwcGNlNjUwMCIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNlNjUwMCA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGNlNjUwMCIKIAotVFVORV9GRUFUVVJFU190dW5lLXBwYzY0ZTY1MDAgPSAibTY0IGZwdS1oYXJkIGU2NTAwIGFsdGl2ZWMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtcHBjNjRlNjUwMCA9ICJtNjQgZnB1LWhhcmQgZTY1MDAgYWx0aXZlYyBiaWdlbmRpYW4iCiBCQVNFX0xJQl90dW5lLXBwYzY0ZTY1MDAgPSAibGliNjQiCiBUVU5FX1BLR0FSQ0hfdHVuZS1wcGM2NGU2NTAwID0gInBwYzY0ZTY1MDAiCiBQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNjRlNjUwMCA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjNjR9IHBwYzY0ZTY1MDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwppbmRleCA2ODZmOTM4Li4wMjI3ZjNjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKQEAgLTE4LDcgKzE4LDcgQEAKICMga2VybmVsLXJlbGF0ZWQgdmFyaWFibGVzCiAjCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNS4wJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNS4yJSIKIAogIwogIyBYU0VSVkVSIHN1YmNvbXBvbmVudHMsIHVzZWQgdG8gYnVpbGQgdGhlIFhTRVJWRVIgdmFyaWFibGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKaW5kZXggMGEyYzk5NS4uMjZmNDBiMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKQEAgLTExLDcgKzExLDYgQEAKIAogIyBGb3IgcnVucWVtdQogUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYXJtIgotUUJfTUVNID0gIi1tIDUxMiIKIFFCX01BQ0hJTkUgPSAiLW1hY2hpbmUgdmlydCIKIFFCX0NQVSA9ICItY3B1IGNvcnRleC1hMTUiCiAjIFN0YW5kYXJkIFNlcmlhbCBjb25zb2xlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgppbmRleCAzNTNhYzkyLi5lYzJhODg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKQEAgLTExLDcgKzExLDYgQEAKIAogIyBGb3IgcnVucWVtdQogUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYWFyY2g2NCIKLVFCX01FTSA9ICItbSA1MTIiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTU3IgogUUJfQ1BVX0tWTSA9ICItY3B1IGhvc3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZgppbmRleCAxYzIxZDMzLi5mYjQ3ODlmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYKQEAgLTE3LDcgKzE3LDcgQEAKIFFCX09QVF9BUFBFTkQgPSAiLXNob3ctY3Vyc29yIC11c2IgLWRldmljZSB1c2ItdGFibGV0IgogIyBBZGQgdGhlICd2aXJ0aW8tcm5nLXBjaScgZGV2aWNlIG90aGVyd2lzZSB0aGUgZ3Vlc3QgbWF5IHJ1biBvdXQgb2YgZW50cm9weQogUUJfT1BUX0FQUEVORCArPSAiLW9iamVjdCBybmctcmFuZG9tLGZpbGVuYW1lPS9kZXYvdXJhbmRvbSxpZD1ybmcwIC1kZXZpY2UgdmlydGlvLXJuZy1wY2kscm5nPXJuZzAiCi1QUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuMCUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/Pz0gIjUuMiUiCiBRQl9EVEIgPSAiJHtAb2UudXRpbHMudmVyc2lvbl9sZXNzX29yX2VxdWFsKCdQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0bycsICc0LjcnLCAnJywgJ3pJbWFnZS12ZXJzYXRpbGUtcGIuZHRiJywgZCl9IgogCiBLTUFDSElORV9xZW11YXJtdjUgPSAicWVtdWFybSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKaW5kZXggNGI1MGU2Ni4uNjQ4Y2YyZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKQEAgLTE4LDEyICsxOCwxNiBAQAogCiBTRVJJQUxfQ09OU09MRVMgPz0gIjExNTIwMDt0dHlTMCAxMTUyMDA7dHR5UzEiCiAKKyMgSW5zdGFsbCBzd3Jhc3QgYW5kIGdseCBpZiBvcGVuZ2wgaXMgaW4gRElTVFJPX0ZFQVRVUkVTIGFuZCB4MzIgaXMgbm90IGluIHVzZS4KKyMgVGhpcyBpcyBiZWNhdXNlIGdhbGxpdW0gc3dyYXN0IGRyaXZlciB3YXMgZm91bmQgdG8gY3Jhc2ggWCBzZXJ2ZXIgb24gc3RhcnR1cCBpbiBxZW11IHgzMi4KIFhTRVJWRVIgPSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnbWVzYS1kcml2ZXItc3dyYXN0IHhzZXJ2ZXIteG9yZy1leHRlbnNpb24tZ2x4JywgJycsIGQpfSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgXAorICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdteDMyJywgJycsICdtZXNhLWRyaXZlci1zd3Jhc3QgeHNlcnZlci14b3JnLWV4dGVuc2lvbi1nbHgnLCBkKSwgJycsIGQpfSBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tY2lycnVzIFwKICAgICAgICAgICAgeGY4Ni12aWRlby1mYmRldiBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tdm13YXJlIFwKICAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgIHhmODYtdmlkZW8tdmVzYSBcCiAgICAgICAgICAgIHhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAgXAogICAgICAgICAgICAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKaW5kZXggMzgzMjMwMi4uOGUwZGE4MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAgICAgICAgeGY4Ni12aWRlby1mYmRldiBcCiAgICAgICAgICAgIHhmODYtdmlkZW8tdm13YXJlIFwKICAgICAgICAgICAgeGY4Ni12aWRlby1tb2Rlc2V0dGluZyBcCisgICAgICAgICAgIHhmODYtdmlkZW8tdmVzYSBcCiAgICAgICAgICAgIHhzZXJ2ZXIteG9yZy1tb2R1bGUtbGliaW50MTAgXAogICAgICAgICAgICAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQlNELTItQ2xhdXNlIGIvcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMi1DbGF1c2UKaW5kZXggYWRlMGYzNC4uZjE5MTdkNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMi1DbGF1c2UKKysrIGIvcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9CU0QtMi1DbGF1c2UKQEAgLTEsMTMgKzEsMTAgQEAKIAotVGhlIEZyZWVCU0QgQ29weXJpZ2h0Ci0KLUNvcHlyaWdodCAxOTkyLTIwMTAgVGhlIEZyZWVCU0QgUHJvamVjdC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0NvcHlyaWdodCA8WUVBUj4gPENPUFlSSUdIVCBIT0xERVI+CiAKIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKIAotUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgRlJFRUJTRCBQUk9KRUNUIGBgQVMgSVNgYCBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgRlJFRUJTRCBQUk9KRUNUIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KIAotVGhlIHZpZXdzIGFuZCBjb25jbHVzaW9ucyBjb250YWluZWQgaW4gdGhlIHNvZnR3YXJlIGFuZCBkb2N1bWVudGF0aW9uIGFyZSB0aG9zZSBvZiB0aGUgYXV0aG9ycyBhbmQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyByZXByZXNlbnRpbmcgb2ZmaWNpYWwgcG9saWNpZXMsIGVpdGhlciBleHByZXNzZWQgb3IgaW1wbGllZCwgb2YgdGhlIEZyZWVCU0QgUHJvamVjdC4KKzIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KIAorVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkgYi9wb2t5L21ldGEvbGliL29lL2dwZ19zaWduLnB5CmluZGV4IGQ3NjI0ODAuLjc2MzRkN2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvZ3BnX3NpZ24ucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9ncGdfc2lnbi5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCBvcwogCiBpbXBvcnQgYmIKLWltcG9ydCBvZS51dGlscwogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzaGxleAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQppbmRleCA2ODgxOWNjLi4xNGZjNmE1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKQEAgLTY0LDEyICs2NCwxMiBAQAogICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKHRjbGFzcywgJ3NldFVwSG9va2VyJywgc2tpcGZ1bmNnZW4oJ1NraXAgYnkgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCAiJXMiJyAlIHNraXApKQogCiAgICAgZGVmIGxvYWRUZXN0cyhzZWxmLCBtb2R1bGVfcGF0aHMsIG1vZHVsZXM9W10sIHRlc3RzPVtdLAotICAgICAgICAgICAgbW9kdWxlc19tYW5pZmVzdD0iIiwgbW9kdWxlc19yZXF1aXJlZD1bXSwgZmlsdGVycz17fSk6CisgICAgICAgICAgICBtb2R1bGVzX21hbmlmZXN0PSIiLCBtb2R1bGVzX3JlcXVpcmVkPVtdLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIG1vZHVsZXNfbWFuaWZlc3Q6CiAgICAgICAgICAgICBtb2R1bGVzID0gc2VsZi5fcmVhZF9tb2R1bGVzX2Zyb21fbWFuaWZlc3QobW9kdWxlc19tYW5pZmVzdCkKIAogICAgICAgICBzZWxmLmxvYWRlciA9IHNlbGYubG9hZGVyQ2xhc3Moc2VsZiwgbW9kdWxlX3BhdGhzLCBtb2R1bGVzLCB0ZXN0cywKLSAgICAgICAgICAgICAgICBtb2R1bGVzX3JlcXVpcmVkLCBmaWx0ZXJzKQorICAgICAgICAgICAgICAgIG1vZHVsZXNfcmVxdWlyZWQsICoqa3dhcmdzKQogICAgICAgICBzZWxmLnN1aXRlcyA9IHNlbGYubG9hZGVyLmRpc2NvdmVyKCkKIAogICAgIGRlZiBydW5UZXN0cyhzZWxmLCBwcm9jZXNzZXM9Tm9uZSwgc2tpcHM9W10pOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL19faW5pdF9fLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL19faW5pdF9fLnB5CmluZGV4IDkyM2IyMTguLjFhODI1MTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9fX2luaXRfXy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9kZWNvcmF0b3IvX19pbml0X18ucHkKQEAgLTYsNiArNiw3IEBACiAKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogZnJvbSBhYmMgaW1wb3J0IGFic3RyYWN0bWV0aG9kLCBBQkNNZXRhCitmcm9tIG9lcWEuY29yZS51dGlscy5taXNjIGltcG9ydCBzdHJUb0xpc3QKIAogZGVjb3JhdG9yQ2xhc3NlcyA9IHNldCgpCiAKQEAgLTYzLDEyICs2NCwxNiBAQAogICAgIGRlZiBkaXNjb3ZlcihyZWdpc3RyeSk6CiAgICAgICAgIHJldHVybiByZWdpc3RyeVsnY2FzZXMnXQogCi1jbGFzcyBPRVRlc3RGaWx0ZXIoT0VUZXN0RGVjb3JhdG9yKToKK2RlZiBPRVRlc3RUYWcoKnRhZ3MpOgorICAgIGV4cGFuZGVkdGFncyA9IFtdCisgICAgZm9yIHRhZyBpbiB0YWdzOgorICAgICAgICBleHBhbmRlZHRhZ3MgKz0gc3RyVG9MaXN0KHRhZykKKyAgICBkZWYgZGVjb3JhdG9yKGl0ZW0pOgorICAgICAgICBpZiBoYXNhdHRyKGl0ZW0sICJfX29lcWFfdGVzdHRhZ3MiKToKKyAgICAgICAgICAgICMgZG8gbm90IGFwcGVuZCwgY3JlYXRlIGEgbmV3IGxpc3QgKHRvIGhhbmRsZSBjbGFzc2VzIHdpdGggaW5oZXJpdGFuY2UpCisgICAgICAgICAgICBpdGVtLl9fb2VxYV90ZXN0dGFncyA9IGxpc3QoaXRlbS5fX29lcWFfdGVzdHRhZ3MpICsgZXhwYW5kZWR0YWdzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpdGVtLl9fb2VxYV90ZXN0dGFncyA9IGV4cGFuZGVkdGFncworICAgICAgICByZXR1cm4gaXRlbQorICAgIHJldHVybiBkZWNvcmF0b3IKIAotICAgICMgT0VUZXN0TG9hZGVyIGNhbGwgaXQgd2hpbGUgbG9hZGluZyB0aGUgdGVzdHMKLSAgICAjIGluIGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSBtZXRob2QsIGl0IG5lZWRzIHRvCi0gICAgIyByZXR1cm4gYSBib29sLCBUcnVlIGlmIG5lZWRzIHRvIGJlIGZpbHRlcmVkLgotICAgICMgVGhpcyBtZXRob2QgbXVzdCBjb25zdW1lIHRoZSBmaWx0ZXIgdXNlZC4KLSAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZmlsdHJhdGUoc2VsZiwgZmlsdGVycyk6Ci0gICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL29ldGFnLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvZGVjb3JhdG9yL29ldGFnLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzMxMTM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2RlY29yYXRvci9vZXRhZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCi0jCi0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKLSMKLQotZnJvbSAuIGltcG9ydCBPRVRlc3RGaWx0ZXIsIHJlZ2lzdGVyRGVjb3JhdG9yCi1mcm9tIG9lcWEuY29yZS51dGlscy5taXNjIGltcG9ydCBzdHJUb0xpc3QKLQotZGVmIF90YWdGaWx0ZXIodGFncywgZmlsdGVycyk6Ci0gICAgcmV0dXJuIEZhbHNlIGlmIHNldCh0YWdzKSAmIHNldChmaWx0ZXJzKSBlbHNlIFRydWUKLQotQHJlZ2lzdGVyRGVjb3JhdG9yCi1jbGFzcyBPRVRlc3RUYWcoT0VUZXN0RmlsdGVyKToKLSAgICBhdHRycyA9ICgnb2V0YWcnLCkKLQotICAgIGRlZiBiaW5kKHNlbGYsIHJlZ2lzdHJ5LCBjYXNlKToKLSAgICAgICAgc3VwZXIoT0VUZXN0VGFnLCBzZWxmKS5iaW5kKHJlZ2lzdHJ5LCBjYXNlKQotICAgICAgICBzZWxmLm9ldGFnID0gc3RyVG9MaXN0KHNlbGYub2V0YWcsICdvZXRhZycpCi0KLSAgICBkZWYgZmlsdHJhdGUoc2VsZiwgZmlsdGVycyk6Ci0gICAgICAgIGlmIGZpbHRlcnMuZ2V0KCdvZXRhZycpOgotICAgICAgICAgICAgZmlsdGVyeCA9IHN0clRvTGlzdChmaWx0ZXJzWydvZXRhZyddLCAnb2V0YWcnKQotICAgICAgICAgICAgZGVsIGZpbHRlcnNbJ29ldGFnJ10KLSAgICAgICAgICAgIGlmIF90YWdGaWx0ZXIoc2VsZi5vZXRhZywgZmlsdGVyeCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9sb2FkZXIucHkKaW5kZXggN2ZlYTA1OC4uMGQ3OTcwZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvbG9hZGVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2xvYWRlci5weQpAQCAtMTYsNyArMTYsNyBAQAogZnJvbSBvZXFhLmNvcmUuZXhjZXB0aW9uIGltcG9ydCBPRVFBVGVzdE5vdEZvdW5kCiBmcm9tIG9lcWEuY29yZS5jYXNlIGltcG9ydCBPRVRlc3RDYXNlCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IGRlY29yYXRvckNsYXNzZXMsIE9FVGVzdERlY29yYXRvciwgXAotICAgICAgICBPRVRlc3RGaWx0ZXIsIE9FVGVzdERpc2NvdmVyCisgICAgICAgIE9FVGVzdERpc2NvdmVyCiAKICMgV2hlbiBsb2FkaW5nIHRlc3RzLCB0aGUgdW5pdHRlc3QgZnJhbWV3b3JrIHN0b3JlcyBhbnkgZXhjZXB0aW9ucyBhbmQKICMgZGlzcGxheXMgdGhlbSBvbmx5IHdoZW4gdGhlIHJ1biBtZXRob2QgaXMgY2FsbGVkLgpAQCAtNjgsNyArNjgsNyBAQAogICAgICAgICAgICAgJ190b3BfbGV2ZWxfZGlyJ10KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YywgbW9kdWxlX3BhdGhzLCBtb2R1bGVzLCB0ZXN0cywgbW9kdWxlc19yZXF1aXJlZCwKLSAgICAgICAgICAgIGZpbHRlcnMsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBzZWxmLnRjID0gdGMKIAogICAgICAgICBzZWxmLm1vZHVsZXMgPSBfYnVpbHRfbW9kdWxlc19kaWN0KG1vZHVsZXMpCkBAIC03NiwxMyArNzYsNyBAQAogICAgICAgICBzZWxmLnRlc3RzID0gdGVzdHMKICAgICAgICAgc2VsZi5tb2R1bGVzX3JlcXVpcmVkID0gbW9kdWxlc19yZXF1aXJlZAogCi0gICAgICAgIHNlbGYuZmlsdGVycyA9IGZpbHRlcnMKLSAgICAgICAgc2VsZi5kZWNvcmF0b3JfZmlsdGVycyA9IFtkIGZvciBkIGluIGRlY29yYXRvckNsYXNzZXMgaWYgXAotICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoZCwgT0VUZXN0RmlsdGVyKV0KLSAgICAgICAgc2VsZi5fdmFsaWRhdGVGaWx0ZXJzKHNlbGYuZmlsdGVycywgc2VsZi5kZWNvcmF0b3JfZmlsdGVycykKLSAgICAgICAgc2VsZi51c2VkX2ZpbHRlcnMgPSBbZCBmb3IgZCBpbiBzZWxmLmRlY29yYXRvcl9maWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluIHNlbGYuZmlsdGVycwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmIGluIGQuYXR0cnNdCisgICAgICAgIHNlbGYudGFnc19maWx0ZXIgPSBrd2FyZ3MuZ2V0KCJ0YWdzX2ZpbHRlciIsIE5vbmUpCiAKICAgICAgICAgaWYgaXNpbnN0YW5jZShtb2R1bGVfcGF0aHMsIHN0cik6CiAgICAgICAgICAgICBtb2R1bGVfcGF0aHMgPSBbbW9kdWxlX3BhdGhzXQpAQCAtMTA0LDI4ICs5OCw2IEBACiAgICAgICAgIHNldGF0dHIodGVzdENhc2VDbGFzcywgJ3RkJywgc2VsZi50Yy50ZCkKICAgICAgICAgc2V0YXR0cih0ZXN0Q2FzZUNsYXNzLCAnbG9nZ2VyJywgc2VsZi50Yy5sb2dnZXIpCiAKLSAgICBkZWYgX3ZhbGlkYXRlRmlsdGVycyhzZWxmLCBmaWx0ZXJzLCBkZWNvcmF0b3JfZmlsdGVycyk6Ci0gICAgICAgICMgVmFsaWRhdGUgaWYgZmlsdGVyIGlzbid0IGVtcHR5Ci0gICAgICAgIGZvciBrZXksdmFsdWUgaW4gZmlsdGVycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgbm90IHZhbHVlOgotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiRmlsdGVyICVzIHNwZWNpZmllZCBpcyBlbXB0eSIgJSBrZXkpCi0KLSAgICAgICAgIyBWYWxpZGF0ZSB1bmlxdWUgYXR0cmlidXRlcwotICAgICAgICBhdHRyX2ZpbHRlcnMgPSBbYXR0ciBmb3IgY2xzcyBpbiBkZWNvcmF0b3JfZmlsdGVycyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhdHRyIGluIGNsc3MuYXR0cnNdCi0gICAgICAgIGR1cF9hdHRyID0gW2F0dHIgZm9yIGF0dHIgaW4gYXR0cl9maWx0ZXJzCi0gICAgICAgICAgICAgICAgICAgIGlmIGF0dHJfZmlsdGVycy5jb3VudChhdHRyKSA+IDFdCi0gICAgICAgIGlmIGR1cF9hdHRyOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdEZXRlY3RlZCBkdXBsaWNhdGVkIGF0dHJpYnV0ZShzKSAlcyBpbiBmaWx0ZXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBkZWNvcmF0b3JzJyAlICcgLCcuam9pbihkdXBfYXR0cikpCi0KLSAgICAgICAgIyBWYWxpZGF0ZSBpZiBmaWx0ZXIgaXMgc3VwcG9ydGVkCi0gICAgICAgIGZvciBmIGluIGZpbHRlcnM6Ci0gICAgICAgICAgICBpZiBmIG5vdCBpbiBhdHRyX2ZpbHRlcnM6Ci0gICAgICAgICAgICAgICAgY2xhc3NlcyA9ICcsICcuam9pbihbZC5fX25hbWVfXyBmb3IgZCBpbiBkZWNvcmF0b3JfZmlsdGVyc10pCi0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdGb3VuZCAiJXMiIGZpbHRlciBidXQgbm90IGRlY2xhcmVkIGluIGFueSBvZiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcyBkZWNvcmF0b3JzJyAlIChmLCBjbGFzc2VzKSkKLQogICAgIGRlZiBfcmVnaXN0ZXJUZXN0Q2FzZShzZWxmLCBjYXNlKToKICAgICAgICAgY2FzZV9pZCA9IGNhc2UuaWQoKQogICAgICAgICBzZWxmLnRjLl9yZWdpc3RyeVsnY2FzZXMnXVtjYXNlX2lkXSA9IGNhc2UKQEAgLTE4OCwxOSArMTYwLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICMgRGVjb3JhdG9yIGZpbHRlcnMKLSAgICAgICAgaWYgc2VsZi5maWx0ZXJzIGFuZCBpc2luc3RhbmNlKGNhc2UsIE9FVGVzdENhc2UpOgotICAgICAgICAgICAgZmlsdGVycyA9IHNlbGYuZmlsdGVycy5jb3B5KCkKLSAgICAgICAgICAgIGNhc2VfZGVjb3JhdG9ycyA9IFtjZCBmb3IgY2QgaW4gY2FzZS5kZWNvcmF0b3JzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2QuX19jbGFzc19fIGluIHNlbGYudXNlZF9maWx0ZXJzXQorICAgICAgICBpZiBzZWxmLnRhZ3NfZmlsdGVyIGlzIG5vdCBOb25lIGFuZCBjYWxsYWJsZShzZWxmLnRhZ3NfZmlsdGVyKToKKyAgICAgICAgICAgIGFsbHRhZ3MgPSBzZXQoKQorICAgICAgICAgICAgIyBwdWxsIHRhZ3MgZnJvbSB0aGUgY2FzZSBjbGFzcworICAgICAgICAgICAgaWYgaGFzYXR0cihjYXNlLCAiX19vZXFhX3Rlc3R0YWdzIik6CisgICAgICAgICAgICAgICAgZm9yIHQgaW4gZ2V0YXR0cihjYXNlLCAiX19vZXFhX3Rlc3R0YWdzIik6CisgICAgICAgICAgICAgICAgICAgIGFsbHRhZ3MuYWRkKHQpCisgICAgICAgICAgICAjIHB1bGwgdGFncyBmcm9tIHRoZSBtZXRob2QgaXRzZWxmCisgICAgICAgICAgICBpZiBoYXNhdHRyKGNhc2UsIHRlc3RfbmFtZSk6CisgICAgICAgICAgICAgICAgbWV0aG9kID0gZ2V0YXR0cihjYXNlLCB0ZXN0X25hbWUpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihtZXRob2QsICJfX29lcWFfdGVzdHRhZ3MiKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHQgaW4gZ2V0YXR0cihtZXRob2QsICJfX29lcWFfdGVzdHRhZ3MiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsbHRhZ3MuYWRkKHQpCiAKLSAgICAgICAgICAgICMgSXRlcmF0ZSBvdmVyIGNhc2UgZGVjb3JhdG9ycyB0byBjaGVjayBpZiBuZWVkcyB0byBiZSBmaWx0ZXJlZC4KLSAgICAgICAgICAgIGZvciBjZCBpbiBjYXNlX2RlY29yYXRvcnM6Ci0gICAgICAgICAgICAgICAgaWYgY2QuZmlsdHJhdGUoZmlsdGVycyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgICAgICMgQ2FzZSBpcyBtaXNzaW5nIG9uZSBvciBtb3JlIGRlY29yYXRvcnMgZm9yIGFsbCB0aGUgZmlsdGVycwotICAgICAgICAgICAgIyBiZWluZyB1c2VkLCBzbyBmaWx0ZXIgdGVzdCBjYXNlLgotICAgICAgICAgICAgaWYgZmlsdGVyczoKKyAgICAgICAgICAgIGlmIHNlbGYudGFnc19maWx0ZXIoYWxsdGFncyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQppbmRleCA5MzA2MjBlLi5mNjU2ZTFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CkBAIC00Myw2ICs0Myw3IEBACiAgICAgICAgIHNlbGYuc3RhcnR0aW1lID0ge30KICAgICAgICAgc2VsZi5lbmR0aW1lID0ge30KICAgICAgICAgc2VsZi5wcm9ncmVzc2luZm8gPSB7fQorICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cyA9IHt9CiAKICAgICAgICAgIyBJbmplY3QgaW50byB0YyBzbyB0aGF0IFRlc3REZXBlbmRzIGRlY29yYXRvciBjYW4gc2VlIHJlc3VsdHMKICAgICAgICAgdGMucmVzdWx0cyA9IHNlbGYKQEAgLTEyOSwxOSArMTMwLDUxIEBACiAKICAgICAgICAgcmV0dXJuICdVTktOT1dOJywgTm9uZQogCi0gICAgZGVmIGFkZFN1Y2Nlc3Moc2VsZiwgdGVzdCk6CisgICAgZGVmIGV4dHJhY3RFeHRyYVJlc3VsdHMoc2VsZiwgdGVzdCwgZGV0YWlscyA9IE5vbmUpOgorICAgICAgICBleHRyYXJlc3VsdHMgPSBOb25lCisgICAgICAgIGlmIGRldGFpbHMgaXMgbm90IE5vbmUgYW5kICJleHRyYXJlc3VsdHMiIGluIGRldGFpbHM6CisgICAgICAgICAgICBleHRyYXJlc3VsdHMgPSBkZXRhaWxzLmdldCgiZXh0cmFyZXN1bHRzIiwge30pCisgICAgICAgIGVsaWYgaGFzYXR0cih0ZXN0LCAiZXh0cmFyZXN1bHRzIik6CisgICAgICAgICAgICBleHRyYXJlc3VsdHMgPSB0ZXN0LmV4dHJhcmVzdWx0cworCisgICAgICAgIGlmIGV4dHJhcmVzdWx0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciBrLCB2IGluIGV4dHJhcmVzdWx0cy5pdGVtcygpOgorICAgICAgICAgICAgICAgICMgaGFuZGxlIHVwZGF0aW5nIGFscmVhZHkgZXhpc3RpbmcgZW50cmllcyAoZS5nLiBwdGVzdHJlc3VsdHMuc2VjdGlvbnMpCisgICAgICAgICAgICAgICAgaWYgayBpbiBzZWxmLmV4dHJhcmVzdWx0czoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNba10udXBkYXRlKHYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNba10gPSB2CisKKyAgICBkZWYgYWRkRXJyb3Ioc2VsZiwgdGVzdCwgKmFyZ3MsIGRldGFpbHMgPSBOb25lKToKKyAgICAgICAgc2VsZi5leHRyYWN0RXh0cmFSZXN1bHRzKHRlc3QsIGRldGFpbHMgPSBkZXRhaWxzKQorICAgICAgICByZXR1cm4gc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5hZGRFcnJvcih0ZXN0LCAqYXJncykKKworICAgIGRlZiBhZGRGYWlsdXJlKHNlbGYsIHRlc3QsICphcmdzLCBkZXRhaWxzID0gTm9uZSk6CisgICAgICAgIHNlbGYuZXh0cmFjdEV4dHJhUmVzdWx0cyh0ZXN0LCBkZXRhaWxzID0gZGV0YWlscykKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuYWRkRmFpbHVyZSh0ZXN0LCAqYXJncykKKworICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3QsIGRldGFpbHMgPSBOb25lKToKICAgICAgICAgI0FkZGVkIHNvIHdlIGNhbiBrZWVwIHRyYWNrIG9mIHN1Y2Nlc3NlcyB0b28KICAgICAgICAgc2VsZi5zdWNjZXNzZXMuYXBwZW5kKCh0ZXN0LCBOb25lKSkKLSAgICAgICAgc3VwZXIoT0VUZXN0UmVzdWx0LCBzZWxmKS5hZGRTdWNjZXNzKHRlc3QpCisgICAgICAgIHNlbGYuZXh0cmFjdEV4dHJhUmVzdWx0cyh0ZXN0LCBkZXRhaWxzID0gZGV0YWlscykKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuYWRkU3VjY2Vzcyh0ZXN0KQorCisgICAgZGVmIGFkZEV4cGVjdGVkRmFpbHVyZShzZWxmLCB0ZXN0LCAqYXJncywgZGV0YWlscyA9IE5vbmUpOgorICAgICAgICBzZWxmLmV4dHJhY3RFeHRyYVJlc3VsdHModGVzdCwgZGV0YWlscyA9IGRldGFpbHMpCisgICAgICAgIHJldHVybiBzdXBlcihPRVRlc3RSZXN1bHQsIHNlbGYpLmFkZEV4cGVjdGVkRmFpbHVyZSh0ZXN0LCAqYXJncykKKworICAgIGRlZiBhZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmLCB0ZXN0LCBkZXRhaWxzID0gTm9uZSk6CisgICAgICAgIHNlbGYuZXh0cmFjdEV4dHJhUmVzdWx0cyh0ZXN0LCBkZXRhaWxzID0gZGV0YWlscykKKyAgICAgICAgcmV0dXJuIHN1cGVyKE9FVGVzdFJlc3VsdCwgc2VsZikuYWRkVW5leHBlY3RlZFN1Y2Nlc3ModGVzdCkKIAogICAgIGRlZiBsb2dEZXRhaWxzKHNlbGYsIGpzb25fZmlsZV9kaXI9Tm9uZSwgY29uZmlndXJhdGlvbj1Ob25lLCByZXN1bHRfaWQ9Tm9uZSwKICAgICAgICAgICAgIGR1bXBfc3RyZWFtcz1GYWxzZSk6CiAgICAgICAgIHNlbGYudGMubG9nZ2VyLmluZm8oIlJFU1VMVFM6IikKIAotICAgICAgICByZXN1bHQgPSB7fQorICAgICAgICByZXN1bHQgPSBzZWxmLmV4dHJhcmVzdWx0cwogICAgICAgICBsb2dzID0ge30KICAgICAgICAgaWYgaGFzYXR0cihzZWxmLnRjLCAiZXh0cmFyZXN1bHRzIik6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLnRjLmV4dHJhcmVzdWx0cworICAgICAgICAgICAgcmVzdWx0LnVwZGF0ZShzZWxmLnRjLmV4dHJhcmVzdWx0cykKIAogICAgICAgICBmb3IgY2FzZV9uYW1lIGluIHNlbGYudGMuX3JlZ2lzdHJ5WydjYXNlcyddOgogICAgICAgICAgICAgY2FzZSA9IHNlbGYudGMuX3JlZ2lzdHJ5WydjYXNlcyddW2Nhc2VfbmFtZV0KQEAgLTIwNSwyMyArMjM4LDIwIEBACiAgICAgICAgICAgICAgICAgc2VsZi5fd2Fsa2VkX2Nhc2VzID0gc2VsZi5fd2Fsa2VkX2Nhc2VzICsgMQogCiAgICAgZGVmIF9saXN0X3Rlc3RzX25hbWUoc2VsZiwgc3VpdGUpOgotICAgICAgICBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3Iub2V0YWcgaW1wb3J0IE9FVGVzdFRhZwotCiAgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IDAKIAogICAgICAgICBkZWYgX2xpc3RfY2FzZXMobG9nZ2VyLCBjYXNlKToKLSAgICAgICAgICAgIG9ldGFnID0gTm9uZQotCi0gICAgICAgICAgICBpZiBoYXNhdHRyKGNhc2UsICdkZWNvcmF0b3JzJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGQgaW4gY2FzZS5kZWNvcmF0b3JzOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGQsIE9FVGVzdFRhZyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZXRhZyA9IGQub2V0YWcKLQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIiVzXHRcdCVzIiAlIChvZXRhZywgY2FzZS5pZCgpKSkKKyAgICAgICAgICAgIG9ldGFncyA9IFtdCisgICAgICAgICAgICBpZiBoYXNhdHRyKGNhc2UsICdfX29lcWFfdGVzdHRhZ3MnKToKKyAgICAgICAgICAgICAgICBvZXRhZ3MgPSBnZXRhdHRyKGNhc2UsICdfX29lcWFfdGVzdHRhZ3MnKQorICAgICAgICAgICAgaWYgb2V0YWdzOgorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCIlcyAoJXMpIiAlIChjYXNlLmlkKCksICIsIi5qb2luKG9ldGFncykpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiJXMiICUgKGNhc2UuaWQoKSkpCiAKICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiTGlzdGluZyBhbGwgYXZhaWxhYmxlIHRlc3RzOiIpCiAgICAgICAgIHNlbGYuX3dhbGtlZF9jYXNlcyA9IDAKLSAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiaWRcdHRhZ1x0XHR0ZXN0IikKKyAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygidGVzdCAodGFncykiKQogICAgICAgICBzZWxmLnRjLmxvZ2dlci5pbmZvKCItIiAqIDgwKQogICAgICAgICBzZWxmLl93YWxrX3N1aXRlKHN1aXRlLCBfbGlzdF9jYXNlcykKICAgICAgICAgc2VsZi50Yy5sb2dnZXIuaW5mbygiLSIgKiA4MCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2RhdGEucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9kYXRhLnB5CmluZGV4IDBkOGRlODcuLjYxZjg4NTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL2RhdGEucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY2FzZXMvZGF0YS5weQpAQCAtNSw3ICs1LDcgQEAKICMKIAogZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9ldGFnIGltcG9ydCBPRVRlc3RUYWcKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgT0VUZXN0VGFnCiBmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgT0VUZXN0RGF0YURlcGVuZHMKIAogY2xhc3MgRGF0YVRlc3QoT0VUZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jYXNlcy9vZXRhZy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL29ldGFnLnB5CmluZGV4IDRlMWQwODAuLjUyZjk3ZGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL29ldGFnLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2Nhc2VzL29ldGFnLnB5CkBAIC01LDEwICs1LDkgQEAKICMKIAogZnJvbSBvZXFhLmNvcmUuY2FzZSBpbXBvcnQgT0VUZXN0Q2FzZQotZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLm9ldGFnIGltcG9ydCBPRVRlc3RUYWcKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgT0VUZXN0VGFnCiAKIGNsYXNzIFRhZ1Rlc3QoT0VUZXN0Q2FzZSk6Ci0KICAgICBAT0VUZXN0VGFnKCdnb29kVGFnJykKICAgICBkZWYgdGVzdFRhZ0dvb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCkBAIC0xNyw1ICsxNiwyMyBAQAogICAgIGRlZiB0ZXN0VGFnT3RoZXIoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCiAKKyAgICBAT0VUZXN0VGFnKCdvdGhlclRhZycsICdtdWx0aVRhZycpCisgICAgZGVmIHRlc3RUYWdPdGhlck11bHRpKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCiAgICAgZGVmIHRlc3RUYWdOb25lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCitAT0VUZXN0VGFnKCdjbGFzc1RhZycpCitjbGFzcyBUYWdDbGFzc1Rlc3QoT0VUZXN0Q2FzZSk6CisgICAgQE9FVGVzdFRhZygnb3RoZXJUYWcnKQorICAgIGRlZiB0ZXN0VGFnT3RoZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShUcnVlLCBtc2c9J0hvdyBpcyB0aGlzIHBvc3NpYmxlPycpCisKKyAgICBAT0VUZXN0VGFnKCdvdGhlclRhZycsICdtdWx0aVRhZycpCisgICAgZGVmIHRlc3RUYWdPdGhlck11bHRpKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCisgICAgZGVmIHRlc3RUYWdOb25lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFRydWUoVHJ1ZSwgbXNnPSdIb3cgaXMgdGhpcyBwb3NzaWJsZT8nKQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy9jb21tb24ucHkKaW5kZXggMzllZmQ1MC4uODhjYzc1OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvY29tbW9uLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL2NvbW1vbi5weQpAQCAtMzAsOSArMzAsOSBAQAogICAgICAgICBkaXJlY3RvcnkgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKICAgICAgICAgc2VsZi5jYXNlc19wYXRoID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgJ2Nhc2VzJykKIAotICAgIGRlZiBfdGVzdExvYWRlcihzZWxmLCBkPXt9LCBtb2R1bGVzPVtdLCB0ZXN0cz1bXSwgZmlsdGVycz17fSk6CisgICAgZGVmIF90ZXN0TG9hZGVyKHNlbGYsIGQ9e30sIG1vZHVsZXM9W10sIHRlc3RzPVtdLCAqKmt3YXJncyk6CiAgICAgICAgIGZyb20gb2VxYS5jb3JlLmNvbnRleHQgaW1wb3J0IE9FVGVzdENvbnRleHQKICAgICAgICAgdGMgPSBPRVRlc3RDb250ZXh0KGQsIHNlbGYubG9nZ2VyKQogICAgICAgICB0Yy5sb2FkVGVzdHMoc2VsZi5jYXNlc19wYXRoLCBtb2R1bGVzPW1vZHVsZXMsIHRlc3RzPXRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgZmlsdGVycz1maWx0ZXJzKQorICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAgICAgICAgIHJldHVybiB0YwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kYXRhLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kYXRhLnB5CmluZGV4IDUwODExYmIuLmFjNzQwOTggMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGF0YS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RhdGEucHkKQEAgLTIyLDggKzIyLDkgQEAKICAgICAgICAgZXhwZWN0ZWRFeGNlcHRpb24gPSAib2VxYS5jb3JlLmV4Y2VwdGlvbi5PRVFBTWlzc2luZ1ZhcmlhYmxlIgogCiAgICAgICAgIHRjID0gc2VsZi5fdGVzdExvYWRlcihtb2R1bGVzPXNlbGYubW9kdWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgdGMucnVuVGVzdHMoKS53YXNTdWNjZXNzZnVsKCkpCi0gICAgICAgIGZvciB0ZXN0LCBkYXRhIGluIHRjLmVycm9yczoKKyAgICAgICAgcmVzdWx0cyA9IHRjLnJ1blRlc3RzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZXN1bHRzLndhc1N1Y2Nlc3NmdWwoKSkKKyAgICAgICAgZm9yIHRlc3QsIGRhdGEgaW4gcmVzdWx0cy5lcnJvcnM6CiAgICAgICAgICAgICBleHBlY3QgPSBGYWxzZQogICAgICAgICAgICAgaWYgZXhwZWN0ZWRFeGNlcHRpb24gaW4gZGF0YToKICAgICAgICAgICAgICAgICBleHBlY3QgPSBUcnVlCkBAIC0zNSw4ICszNiw5IEBACiAgICAgICAgIGQgPSB7J0lNQUdFJyA6ICdjb3JlLWltYWdlLXNhdG8nLCAnQVJDSCcgOiAnYXJtJ30KIAogICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXIoZD1kLCBtb2R1bGVzPXNlbGYubW9kdWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChGYWxzZSwgdGMucnVuVGVzdHMoKS53YXNTdWNjZXNzZnVsKCkpCi0gICAgICAgIGZvciB0ZXN0LCBkYXRhIGluIHRjLmZhaWx1cmVzOgorICAgICAgICByZXN1bHRzID0gdGMucnVuVGVzdHMoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlc3VsdHMud2FzU3VjY2Vzc2Z1bCgpKQorICAgICAgICBmb3IgdGVzdCwgZGF0YSBpbiByZXN1bHRzLmZhaWx1cmVzOgogICAgICAgICAgICAgZXhwZWN0ID0gRmFsc2UKICAgICAgICAgICAgIGlmIGV4cGVjdGVkRXJyb3IgaW4gZGF0YToKICAgICAgICAgICAgICAgICBleHBlY3QgPSBUcnVlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90ZXN0cy90ZXN0X2RlY29yYXRvcnMucHkKaW5kZXggNDk5Y2Q2Ni4uYjc5OGJmNyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9kZWNvcmF0b3JzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfZGVjb3JhdG9ycy5weQpAQCAtMTQsMzUgKzE0LDU4IEBACiBmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFEZXBlbmRlbmN5CiBmcm9tIG9lcWEuY29yZS51dGlscy50ZXN0IGltcG9ydCBnZXRDYXNlTWV0aG9kLCBnZXRTdWl0ZUNhc2VzTmFtZXMsIGdldFN1aXRlQ2FzZXNJRHMKIAotY2xhc3MgVGVzdEZpbHRlckRlY29yYXRvcihUZXN0QmFzZSk6Ci0KLSAgICBkZWYgX3J1bkZpbHRlclRlc3Qoc2VsZiwgbW9kdWxlcywgZmlsdGVycywgZXhwZWN0LCBtc2cpOgotICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXIobW9kdWxlcz1tb2R1bGVzLCBmaWx0ZXJzPWZpbHRlcnMpCi0gICAgICAgIHRlc3RfbG9hZGVkID0gc2V0KGdldFN1aXRlQ2FzZXNOYW1lcyh0Yy5zdWl0ZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgdGVzdF9sb2FkZWQsIG1zZz1tc2cpCitjbGFzcyBUZXN0VGFnRGVjb3JhdG9yKFRlc3RCYXNlKToKKyAgICBkZWYgX3J1blRlc3Qoc2VsZiwgbW9kdWxlcywgZmlsdGVyZm4sIGV4cGVjdCk6CisgICAgICAgIHRjID0gc2VsZi5fdGVzdExvYWRlcihtb2R1bGVzID0gbW9kdWxlcywgdGFnc19maWx0ZXIgPSBmaWx0ZXJmbikKKyAgICAgICAgdGVzdF9sb2FkZWQgPSBzZXQoZ2V0U3VpdGVDYXNlc0lEcyh0Yy5zdWl0ZXMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdCwgdGVzdF9sb2FkZWQpCiAKICAgICBkZWYgdGVzdF9vZXRhZyhzZWxmKToKLSAgICAgICAgIyBHZXQgYWxsIGNhc2VzIHdpdGhvdXQgZmlsdGVyaW5nLgotICAgICAgICBmaWx0ZXJfYWxsID0ge30KLSAgICAgICAgdGVzdF9hbGwgPSB7J3Rlc3RUYWdHb29kJywgJ3Rlc3RUYWdPdGhlcicsICd0ZXN0VGFnTm9uZSd9Ci0gICAgICAgIG1zZ19hbGwgPSAnRmFpbGVkIHRvIGdldCBhbGwgb2V0YWcgY2FzZXMgd2l0aG91dCBmaWx0ZXJpbmcuJworICAgICAgICAjIGdldCBhbGwgY2FzZXMgd2l0aG91dCBhbnkgZmlsdGVyaW5nCisgICAgICAgIHNlbGYuX3J1blRlc3QoWydvZXRhZyddLCBOb25lLCB7CisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ0dvb2QnLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdPdGhlcicsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ090aGVyTXVsdGknLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdUZXN0LnRlc3RUYWdOb25lJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnQ2xhc3NUZXN0LnRlc3RUYWdPdGhlcicsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ0NsYXNzVGVzdC50ZXN0VGFnT3RoZXJNdWx0aScsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ0NsYXNzVGVzdC50ZXN0VGFnTm9uZScsCisgICAgICAgICAgICAgICAgfSkKIAotICAgICAgICAjIEdldCBjYXNlcyB3aXRoICdnb29kVGFnJy4KLSAgICAgICAgZmlsdGVyX2dvb2QgPSB7J29ldGFnJzonZ29vZFRhZyd9Ci0gICAgICAgIHRlc3RfZ29vZCA9IHsndGVzdFRhZ0dvb2QnfQotICAgICAgICBtc2dfZ29vZCA9ICdGYWlsZWQgdG8gZ2V0IGp1c3Qgb25lIHRlc3QgZmlsdGVyaW5nIHdpdGggImdvb2RUYWciIG9ldGFnLicKKyAgICAgICAgIyBleGNsdWRlIGFueSBjYXNlIHdpdGggdGFncworICAgICAgICBzZWxmLl9ydW5UZXN0KFsnb2V0YWcnXSwgbGFtYmRhIHRhZ3M6IHRhZ3MsIHsKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnTm9uZScsCisgICAgICAgICAgICAgICAgfSkKIAotICAgICAgICAjIEdldCBjYXNlcyB3aXRoIGFuIGludmFsaWQgdGFnLgotICAgICAgICBmaWx0ZXJfaW52YWxpZCA9IHsnb2V0YWcnOidpbnZhbGlkVGFnJ30KLSAgICAgICAgdGVzdF9pbnZhbGlkID0gc2V0KCkKLSAgICAgICAgbXNnX2ludmFsaWQgPSAnRmFpbGVkIHRvIGZpbHRlciBhbGwgdGVzdCB1c2luZyBhbiBpbnZhbGlkIG9ldGFnLicKKyAgICAgICAgIyBleGNsdWRlIGFueSBjYXNlIHdpdGggb3RoZXJUYWcKKyAgICAgICAgc2VsZi5fcnVuVGVzdChbJ29ldGFnJ10sIGxhbWJkYSB0YWdzOiAib3RoZXJUYWciIGluIHRhZ3MsIHsKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnR29vZCcsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgIH0pCiAKLSAgICAgICAgdGVzdHMgPSAoKGZpbHRlcl9hbGwsIHRlc3RfYWxsLCBtc2dfYWxsKSwKLSAgICAgICAgICAgICAgICAgKGZpbHRlcl9nb29kLCB0ZXN0X2dvb2QsIG1zZ19nb29kKSwKLSAgICAgICAgICAgICAgICAgKGZpbHRlcl9pbnZhbGlkLCB0ZXN0X2ludmFsaWQsIG1zZ19pbnZhbGlkKSkKKyAgICAgICAgIyBleGNsdWRlIGFueSBjYXNlIHdpdGggY2xhc3NUYWcKKyAgICAgICAgc2VsZi5fcnVuVGVzdChbJ29ldGFnJ10sIGxhbWJkYSB0YWdzOiAiY2xhc3NUYWciIGluIHRhZ3MsIHsKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnR29vZCcsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ090aGVyJywKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnT3RoZXJNdWx0aScsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgIH0pCiAKLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICBzZWxmLl9ydW5GaWx0ZXJUZXN0KFsnb2V0YWcnXSwgdGVzdFswXSwgdGVzdFsxXSwgdGVzdFsyXSkKKyAgICAgICAgIyBpbmNsdWRlIGFueSBjYXNlIHdpdGggY2xhc3NUYWcKKyAgICAgICAgc2VsZi5fcnVuVGVzdChbJ29ldGFnJ10sIGxhbWJkYSB0YWdzOiAiY2xhc3NUYWciIG5vdCBpbiB0YWdzLCB7CisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ0NsYXNzVGVzdC50ZXN0VGFnT3RoZXInLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ090aGVyTXVsdGknLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgIH0pCisKKyAgICAgICAgIyBpbmNsdWRlIGFueSBjYXNlIHdpdGggY2xhc3NUYWcgb3Igbm8gdGFncworICAgICAgICBzZWxmLl9ydW5UZXN0KFsnb2V0YWcnXSwgbGFtYmRhIHRhZ3M6IHRhZ3MgYW5kICJjbGFzc1RhZyIgbm90IGluIHRhZ3MsIHsKKyAgICAgICAgICAgICAgICAnb2V0YWcuVGFnVGVzdC50ZXN0VGFnTm9uZScsCisgICAgICAgICAgICAgICAgJ29ldGFnLlRhZ0NsYXNzVGVzdC50ZXN0VGFnT3RoZXInLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ090aGVyTXVsdGknLAorICAgICAgICAgICAgICAgICdvZXRhZy5UYWdDbGFzc1Rlc3QudGVzdFRhZ05vbmUnLAorICAgICAgICAgICAgICAgIH0pCiAKIGNsYXNzIFRlc3REZXBlbmRzRGVjb3JhdG9yKFRlc3RCYXNlKToKICAgICBtb2R1bGVzID0gWydkZXBlbmRzJ10KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3Rlc3RzL3Rlc3RfbG9hZGVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkKaW5kZXggNTE5YmE5Ni4uY2IzOGFjOCAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGVzdHMvdGVzdF9sb2FkZXIucHkKQEAgLTE1LDMxICsxNSw3IEBACiBmcm9tIG9lcWEuY29yZS51dGlscy50ZXN0IGltcG9ydCBnZXRTdWl0ZU1vZHVsZXMsIGdldFN1aXRlQ2FzZXNJRHMKIAogY2xhc3MgVGVzdExvYWRlcihUZXN0QmFzZSk6Ci0KLSAgICBkZWYgdGVzdF9mYWlsX2VtcHR5X2ZpbHRlcihzZWxmKToKLSAgICAgICAgZmlsdGVycyA9IHsnb2V0YWcnIDogJyd9Ci0gICAgICAgIGV4cGVjdCA9ICdGaWx0ZXIgb2V0YWcgc3BlY2lmaWVkIGlzIGVtcHR5JwotICAgICAgICBtc2cgPSAnRXhwZWN0ZWQgVHlwZUVycm9yIGV4Y2VwdGlvbiBmb3IgaGF2aW5nIGludmFsaWQgZmlsdGVyJwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE11c3QgdGhyb3cgVHlwZUVycm9yIGJlY2F1c2UgZW1wdHkgZmlsdGVyCi0gICAgICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXIoZmlsdGVycz1maWx0ZXJzKQotICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZSBpZiBleHBlY3QgaW4gc3RyKGUpIGVsc2UgRmFsc2UKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQsIG1zZz1tc2cpCi0KLSAgICBkZWYgdGVzdF9mYWlsX2ludmFsaWRfZmlsdGVyKHNlbGYpOgotICAgICAgICBmaWx0ZXJzID0geydpbnZhbGlkJyA6ICdnb29kJ30KLSAgICAgICAgZXhwZWN0ID0gJ2ZpbHRlciBidXQgbm90IGRlY2xhcmVkIGluIGFueSBvZicKLSAgICAgICAgbXNnID0gJ0V4cGVjdGVkIFR5cGVFcnJvciBleGNlcHRpb24gZm9yIGhhdmluZyBpbnZhbGlkIGZpbHRlcicKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBNdXN0IHRocm93IFR5cGVFcnJvciBiZWNhdXNlIGludmFsaWQgZmlsdGVyCi0gICAgICAgICAgICB0YyA9IHNlbGYuX3Rlc3RMb2FkZXIoZmlsdGVycz1maWx0ZXJzKQotICAgICAgICAgICAgc2VsZi5mYWlsKG1zZykKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgotICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZSBpZiBleHBlY3QgaW4gc3RyKGUpIGVsc2UgRmFsc2UKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXN1bHQsIG1zZz1tc2cpCi0KKyAgICBAdW5pdHRlc3Quc2tpcCgiaW52YWxpZCBkaXJlY3RvcnkgaXMgbWlzc2luZyBvZXRhZy5weSIpCiAgICAgZGVmIHRlc3RfZmFpbF9kdXBsaWNhdGVkX21vZHVsZShzZWxmKToKICAgICAgICAgY2FzZXNfcGF0aCA9IHNlbGYuY2FzZXNfcGF0aAogICAgICAgICBpbnZhbGlkX3BhdGggPSBvcy5wYXRoLmpvaW4oY2FzZXNfcGF0aCwgJ2xvYWRlcicsICdpbnZhbGlkJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQppbmRleCA2YmY3NzE4Li5mYTZmYTM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgdGhyZWFkaW5nCiBpbXBvcnQgdGltZQogaW1wb3J0IGlvCitpbXBvcnQganNvbgogaW1wb3J0IHN1YnVuaXQKIAogZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUKQEAgLTI4LDYgKzI5LDggQEAKIGZyb20gc3VidW5pdCBpbXBvcnQgUHJvdG9jb2xUZXN0Q2FzZSwgVGVzdFByb3RvY29sQ2xpZW50CiBmcm9tIHN1YnVuaXQudGVzdF9yZXN1bHRzIGltcG9ydCBBdXRvVGltaW5nVGVzdFJlc3VsdERlY29yYXRvcgogZnJvbSB0ZXN0dG9vbHMgaW1wb3J0IFRocmVhZHNhZmVGb3J3YXJkaW5nUmVzdWx0LCBpdGVyYXRlX3Rlc3RzCitmcm9tIHRlc3R0b29scy5jb250ZW50IGltcG9ydCBDb250ZW50Citmcm9tIHRlc3R0b29scy5jb250ZW50X3R5cGUgaW1wb3J0IENvbnRlbnRUeXBlCiBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGdldF90ZXN0X2xheWVyCiAKIGltcG9ydCBiYi51dGlscwpAQCAtNzAsNiArNzMsNTggQEAKICAgICAgICAgICAgIHNlbGYuc2VtYXBob3JlLnJlbGVhc2UoKQogICAgICAgICBzdXBlcihCQlRocmVhZHNhZmVGb3J3YXJkaW5nUmVzdWx0LCBzZWxmKS5fYWRkX3Jlc3VsdF93aXRoX3NlbWFwaG9yZShtZXRob2QsIHRlc3QsICphcmdzLCAqKmt3YXJncykKIAorY2xhc3MgUHJveHlUZXN0UmVzdWx0OgorICAgICMgYSB2ZXJ5IGJhc2ljIFRlc3RSZXN1bHQgcHJveHksIGluIG9yZGVyIHRvIG1vZGlmeSBhZGQqIGNhbGxzCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhcmdldCk6CisgICAgICAgIHNlbGYucmVzdWx0ID0gdGFyZ2V0CisKKyAgICBkZWYgX2FkZFJlc3VsdChzZWxmLCBtZXRob2QsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHJldHVybiBtZXRob2QodGVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGFkZEVycm9yKHNlbGYsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX2FkZFJlc3VsdChzZWxmLnJlc3VsdC5hZGRFcnJvciwgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGFkZEZhaWx1cmUoc2VsZiwgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fYWRkUmVzdWx0KHNlbGYucmVzdWx0LmFkZEZhaWx1cmUsIHRlc3QsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhZGRTdWNjZXNzKHNlbGYsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX2FkZFJlc3VsdChzZWxmLnJlc3VsdC5hZGRTdWNjZXNzLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpCisKKyAgICBkZWYgYWRkRXhwZWN0ZWRGYWlsdXJlKHNlbGYsIHRlc3QsICphcmdzLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuX2FkZFJlc3VsdChzZWxmLnJlc3VsdC5hZGRFeHBlY3RlZEZhaWx1cmUsIHRlc3QsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBhZGRVbmV4cGVjdGVkU3VjY2VzcyhzZWxmLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBzZWxmLl9hZGRSZXN1bHQoc2VsZi5yZXN1bHQuYWRkVW5leHBlY3RlZFN1Y2Nlc3MsIHRlc3QsICphcmdzLCAqKmt3YXJncykKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5yZXN1bHQsIGF0dHIpCisKK2NsYXNzIEV4dHJhUmVzdWx0c0RlY29kZXJUZXN0UmVzdWx0KFByb3h5VGVzdFJlc3VsdCk6CisgICAgZGVmIF9hZGRSZXN1bHQoc2VsZiwgbWV0aG9kLCB0ZXN0LCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICBpZiAiZGV0YWlscyIgaW4ga3dhcmdzIGFuZCAiZXh0cmFyZXN1bHRzIiBpbiBrd2FyZ3NbImRldGFpbHMiXToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoa3dhcmdzWyJkZXRhaWxzIl1bImV4dHJhcmVzdWx0cyJdLCBDb250ZW50KToKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBrd2FyZ3MuY29weSgpCisgICAgICAgICAgICAgICAga3dhcmdzWyJkZXRhaWxzIl0gPSBrd2FyZ3NbImRldGFpbHMiXS5jb3B5KCkKKyAgICAgICAgICAgICAgICBleHRyYXJlc3VsdHMgPSBrd2FyZ3NbImRldGFpbHMiXVsiZXh0cmFyZXN1bHRzIl0KKyAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZWFycmF5KCkKKyAgICAgICAgICAgICAgICBmb3IgYiBpbiBleHRyYXJlc3VsdHMuaXRlcl9ieXRlcygpOgorICAgICAgICAgICAgICAgICAgICBkYXRhICs9IGIKKyAgICAgICAgICAgICAgICBleHRyYXJlc3VsdHMgPSBqc29uLmxvYWRzKGRhdGEuZGVjb2RlKCkpCisgICAgICAgICAgICAgICAga3dhcmdzWyJkZXRhaWxzIl1bImV4dHJhcmVzdWx0cyJdID0gZXh0cmFyZXN1bHRzCisgICAgICAgIHJldHVybiBtZXRob2QodGVzdCwgKmFyZ3MsICoqa3dhcmdzKQorCitjbGFzcyBFeHRyYVJlc3VsdHNFbmNvZGVyVGVzdFJlc3VsdChQcm94eVRlc3RSZXN1bHQpOgorICAgIGRlZiBfYWRkUmVzdWx0KHNlbGYsIG1ldGhvZCwgdGVzdCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgaWYgaGFzYXR0cih0ZXN0LCAiZXh0cmFyZXN1bHRzIik6CisgICAgICAgICAgICBleHRyYXMgPSBsYW1iZGEgOiBbanNvbi5kdW1wcyh0ZXN0LmV4dHJhcmVzdWx0cykuZW5jb2RlKCldCisgICAgICAgICAgICBrd2FyZ3MgPSBrd2FyZ3MuY29weSgpCisgICAgICAgICAgICBpZiAiZGV0YWlscyIgbm90IGluIGt3YXJnczoKKyAgICAgICAgICAgICAgICBrd2FyZ3NbImRldGFpbHMiXSA9IHt9CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGt3YXJnc1siZGV0YWlscyJdID0ga3dhcmdzWyJkZXRhaWxzIl0uY29weSgpCisgICAgICAgICAgICBrd2FyZ3NbImRldGFpbHMiXVsiZXh0cmFyZXN1bHRzIl0gPSBDb250ZW50KENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbiIsICJqc29uIiwgeydjaGFyc2V0JzogJ3V0ZjgnfSksIGV4dHJhcykKKyAgICAgICAgcmV0dXJuIG1ldGhvZCh0ZXN0LCAqYXJncywgKiprd2FyZ3MpCisKICMKICMgV2UgaGF2ZSB0byBwYXRjaCBzdWJ1bml0IHNpbmNlIGl0IGRvZXNuJ3QgdW5kZXJzdGFuZCBob3cgdG8gaGFuZGxlIGFkZEVycm9yCiAjIG91dHNpZGUgb2YgYSBydW5uaW5nIHRlc3QgY2FzZS4gVGhpcyBjYW4gaGFwcGVuIGlmIGNsYXNzU2V0VXAoKSBmYWlscwpAQCAtMTE2LDcgKzE3MSw5IEBACiAgICAgICAgICAgICByZXN1bHQudGhyZWFkcHJvZ3Jlc3MgPSB7fQogICAgICAgICAgICAgZm9yIGksICh0ZXN0LCB0ZXN0bnVtKSBpbiBlbnVtZXJhdGUodGVzdHMpOgogICAgICAgICAgICAgICAgIHJlc3VsdC50aHJlYWRwcm9ncmVzc1tpXSA9IFtdCi0gICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQgPSBCQlRocmVhZHNhZmVGb3J3YXJkaW5nUmVzdWx0KHJlc3VsdCwgc2VtYXBob3JlLCBpLCB0ZXN0bnVtLCB0b3RhbHRlc3RzKQorICAgICAgICAgICAgICAgIHByb2Nlc3NfcmVzdWx0ID0gQkJUaHJlYWRzYWZlRm9yd2FyZGluZ1Jlc3VsdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhUmVzdWx0c0RlY29kZXJUZXN0UmVzdWx0KHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICBzZW1hcGhvcmUsIGksIHRlc3RudW0sIHRvdGFsdGVzdHMpCiAgICAgICAgICAgICAgICAgIyBGb3JjZSBidWZmZXJpbmcgb2Ygc3Rkb3V0L3N0ZGVyciBzbyB0aGUgY29uc29sZSBkb2Vzbid0IGdldCBjb3JydXB0ZWQgYnkgdGVzdCBvdXRwdXQKICAgICAgICAgICAgICAgICAjIGFzIHBlciBkZWZhdWx0IGluIHBhcmVudCBjb2RlCiAgICAgICAgICAgICAgICAgcHJvY2Vzc19yZXN1bHQuYnVmZmVyID0gVHJ1ZQpAQCAtMjMxLDcgKzI4OCw3IEBACiAgICAgICAgICAgICAgICAgIyBhcyBwZXIgZGVmYXVsdCBpbiBwYXJlbnQgY29kZQogICAgICAgICAgICAgICAgIHN1YnVuaXRfY2xpZW50LmJ1ZmZlciA9IFRydWUKICAgICAgICAgICAgICAgICBzdWJ1bml0X3Jlc3VsdCA9IEF1dG9UaW1pbmdUZXN0UmVzdWx0RGVjb3JhdG9yKHN1YnVuaXRfY2xpZW50KQotICAgICAgICAgICAgICAgIHByb2Nlc3Nfc3VpdGUucnVuKHN1YnVuaXRfcmVzdWx0KQorICAgICAgICAgICAgICAgIHByb2Nlc3Nfc3VpdGUucnVuKEV4dHJhUmVzdWx0c0VuY29kZXJUZXN0UmVzdWx0KHN1YnVuaXRfcmVzdWx0KSkKICAgICAgICAgICAgICAgICBpZiBvdXJwaWQgIT0gb3MuZ2V0cGlkKCk6CiAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCiAgICAgICAgICAgICAgICAgaWYgbmV3YnVpbGRkaXI6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgppbmRleCA0YjdjNzZmLi4xOGNlYzIyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KQEAgLTUyNiw3ICs1MjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAiNCI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJjaGVjayBwaW5nIHN0YXR1cyAgXG5cbk5vdGU6IFRoaXMgVEMgYXBwbHkgb25seSBmb3IgY29yZS1pbWFnZS1mdWxsLWNtZCBhbmQgY29yZS1pbWFnZS1sc2IgLiIsCisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiY2hlY2sgcGluZyBzdGF0dXMgIFxuXG5Ob3RlOiBUaGlzIFRDIGFwcGx5IG9ubHkgZm9yIGNvcmUtaW1hZ2UtZnVsbC1jbWQuIiwKICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAicGluZyBzaG91bGQgYWx3YXlzIHdvcmsgYmVmb3JlL2FmdGVyIHN0YW5kYnkiCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY29tcGxpYW5jZS10ZXN0Lmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2NvbXBsaWFuY2UtdGVzdC5qc29uCmluZGV4IDhjMTNiNjguLjM2N2E0MTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY29tcGxpYW5jZS10ZXN0Lmpzb24KKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9jb21wbGlhbmNlLXRlc3QuanNvbgpAQCAtMSwzNiArMSw2IEBACiBbCiAgICAgewogICAgICAgICAidGVzdCI6IHsKLSAgICAgICAgICAgICJAYWxpYXMiOiAiY29tcGxpYW5jZS10ZXN0LmNvbXBsaWFuY2UtdGVzdC5MU0Jfc3Vic2V0X3Rlc3Rfc3VpdGUiLAotICAgICAgICAgICAgImF1dGhvciI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJjb3JuZWxpdXguc3RvaWNlc2N1QGludGVsLmNvbSIsCi0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogImNvcm5lbGl1eC5zdG9pY2VzY3VAaW50ZWwuY29tIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAiZXhlY3V0aW9uIjogewotICAgICAgICAgICAgICAgICIxIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkdldCBsc2Qtc2RrIGltYWdlIGFuZCBpbnN0YWxsIGl0IG9uIHRhcmdldCBkZXZpY2Ugb3Igc3RhcnQgdGhlIGltYWdlKGlmIGl0IGlzIFFFTVUpIHdpdGggb3B0aW9uIFwiLW0gNTEyTVwiIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgIjIiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiQ29tbWVudCBpbiAvb3B0L2xzYi10ZXN0L3Nlc3Npb24gYW55IHRlc3RzIHlvdSBkb24ndCB3YW50IHRvIHJ1bi4iLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiMyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSdW4gL3Vzci9iaW4vTFNCX1Rlc3Quc2ggd2hpY2ggc2hvdWxkIGRvd25sb2FkIHRoZSBMU0Igc3VpdGUgYW5kIHNldCBpdCB1cC4gU29tZSBwYWNrYWdlcyBtYXkgZmFpbCB0byBkb3dubG9hZCBiZWNhdXNlIHRoZWlyIGxvY2F0aW9uIGNoYW5nZWQgb24gZnRwLmxpbnV4Zm91bmRhdGlvbi5vcmcuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwZGF0ZSAvb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiNCI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJUZXN0cyBzaG91bGQgc3RhcnQgYXV0b21hdGljYWxseSwgeW91IGNhbiB1c2UgdGhlIHdlYiBpbnRlcmZhY2UgdG8gcmVjb25maWd1cmUgdGhlIHNldHVwLiAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJDaGVjayB0aGUgcmVzdWx0IG9uIHdpa2kgaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9MU0JfUmVzdWx0IE5vIHJlZ3Jlc3Npb24gZmFpbHVyZXMgc2hvdWxkIGJlIG1ldC4iCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICJzdW1tYXJ5IjogIkxTQl9zdWJzZXRfdGVzdF9zdWl0ZSIKLSAgICAgICAgfQotICAgIH0sCi0gICAgewotICAgICAgICAidGVzdCI6IHsKICAgICAgICAgICAgICJAYWxpYXMiOiAiY29tcGxpYW5jZS10ZXN0LmNvbXBsaWFuY2UtdGVzdC5zdHJlc3NfdGVzdF8tX0dlbmVyaWN4ODYtNjQiLAogICAgICAgICAgICAgImF1dGhvciI6IFsKICAgICAgICAgICAgICAgICB7CkBAIC00MCw3ICsxMCw3IEBACiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKICAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJCb290dXAgd2l0aCBjb3JlLWltYWdlLWxzYi1zZGsgaW1hZ2UiLAorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkJvb3R1cCB3aXRoIGNvcmUtaW1hZ2Utc2F0by1zZGsgaW1hZ2UiLAogICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAiMiI6IHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY3JvcHMuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvY3JvcHMuanNvbgppbmRleCAxY2YzYzhmLi41Y2ZhNjUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2Nyb3BzLmpzb24KKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9jcm9wcy5qc29uCkBAIC0yMzQsMTYgKzIzNCwxNiBAQAogICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJ0aGlzIHNob3VsZCBvdXRwdXQgdGhlIGRpcmVjdG9yeSBvZiB0aGUgZGV2dG9vbCBzY3JpcHQgYW5kIGl0IHNob3VsZCBiZSB3aXRoaW4gdGhlIHNkayB3b3JrZGlyIHlvdSBhcmUgd29ya2luZyBpbi4gICBcblxuIgogICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgIjUiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBhZGQgdjRsMmxvb3BiYWNrLWRyaXZlciAgaHR0cHM6Ly9naXRodWIuY29tL3VtbGFldXRlL3Y0bDJsb29wYmFjay5naXQgICBcblxuIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhpcyBzaG91bGQgYXV0b21hdGljYWxseSBjcmVhdGUgdGhlIHJlY2lwZSB2NGwybG9vcGJhY2stZHJpdmVyLmJiIHVuZGVyIDxjcm9wcy1lc2RrLXdvcmtkaXItd29ya3NwYWNlPi9yZWNpcGVzL3Y0bDJsb29wYmFjay1kcml2ZXIvdjRsMmxvb3BiYWNrLWRyaXZlci5iYiAiCisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiZGV2dG9vbCBhZGQga2VybmVsLW1vZHVsZS1oZWxsby13b3JsZCBodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9rZXJuZWwtbW9kdWxlLWhlbGxvLXdvcmxkIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgcmVjaXBlIGtlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQuYmIgdW5kZXIgPGNyb3BzLWVzZGstd29ya2Rpci13b3Jrc3BhY2U+L3JlY2lwZXMva2VybmVsLW1vZHVsZS1oZWxsby13b3JsZC9rZXJuZWwtbW9kdWxlLWhlbGxvLXdvcmxkLmJiICIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICI2IjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYnVpbGQgdjRsMmxvb3BiYWNrLWRyaXZlciAgIFxuXG4iLAorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgYnVpbGQga2VybmVsLW1vZHVsZS1oZWxsby13b3JsZCAgIFxuXG4iLAogICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJUaGlzIHNob3VsZCBjb21waWxlIGFuIGltYWdlICAgXG5cbiIKICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICI3IjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgcmVzZXQgdjRsMmxvb3BiYWNrLWRyaXZlciAgICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgY2xlYW5zIHN5c3Jvb3Qgb2YgdGhlIHY0bDJsb29wYmFjay1kcml2ZXIgcmVjaXBlLCBidXQgaXQgbGVhdmVzIHRoZSBzb3VyY2UgdHJlZSBpbnRhY3QuIG1lYW5pbmcgaXQgZG9lcyBub3QgZXJhc2UuIgorICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogImRldnRvb2wgcmVzZXQga2VybmVsLW1vZHVsZS1oZWxsby13b3JsZCAgICIsCisgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIlRoaXMgY2xlYW5zIHN5c3Jvb3Qgb2YgdGhlIGtlcm5lbC1tb2R1bGUtaGVsbG8td29ybGQgcmVjaXBlLCBidXQgaXQgbGVhdmVzIHRoZSBzb3VyY2UgdHJlZSBpbnRhY3QuIG1lYW5pbmcgaXQgZG9lcyBub3QgZXJhc2UuIgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAic3VtbWFyeSI6ICJzZGtleHRfZGV2dG9vbF9rZXJuZWxtb2R1bGUiCkBAIC0yOTEsNCArMjkxLDQgQEAKICAgICAgICAgICAgICJzdW1tYXJ5IjogInNka2V4dF9yZWNpcGVzX2Zvcl9ub2RlanMiCiAgICAgICAgIH0KICAgICB9Ci1dClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC90b2FzdGVyLW1hbmFnZWQtbW9kZS5qc29uIGIvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC90b2FzdGVyLW1hbmFnZWQtbW9kZS5qc29uCmluZGV4IDgxMmY1N2QuLjEyMzc0YzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvdG9hc3Rlci1tYW5hZ2VkLW1vZGUuanNvbgorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL3RvYXN0ZXItbWFuYWdlZC1tb2RlLmpzb24KQEAgLTE0OTQsNyArMTQ5NCw3IEBACiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQSB0eXBlIGluIGZvcm0gYXBwZWFycy4gXG5cblx0IgogICAgICAgICB9LAogICAgICAgICAiNiI6IHsKLSAgICAgICAgICAiYWN0aW9uIjogIkNoYW5nZSBkaXN0cm8gKGV4OiBwb2t5LWxzYikuIFxuXG5cdCIsCisgICAgICAgICAgImFjdGlvbiI6ICJDaGFuZ2UgZGlzdHJvIChleDogcG9reS10aW55KS4gXG5cblx0IiwKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJEaXN0cm8gaGFzIGNoYW5nZWQuIFxuXG5cdCIKICAgICAgICAgfSwKICAgICAgICAgIjciOiB7CkBAIC0xNTAzLDcgKzE1MDMsNyBAQAogICAgICAgICB9LAogICAgICAgICAiOCI6IHsKICAgICAgICAgICAiYWN0aW9uIjogIiBCdWlsZCBhIHJlY2lwZSAoZXg6IGNvcmUtaW1hZ2UtbWluaW1hbCkgYW5kIHdhaXQgdW50aWwgYnVpbGQgZmluaXNoLiIsCi0gICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiQnVpbGQgZmluaXNoZXMgc3VjY2Vzc2Z1bGx5LiBcblxuVGhlICdzdWNjZXNzJyBjcml0ZXJpYSBmb3IgdGhpcyBvbmUgc2hvdWxkIGJlIHRoYXQgdGhlIGJ1aWxkIGlzIHJlcG9ydGVkIGFzIHVzaW5nIHRoZSBwb2t5LWxzYiBkaXN0cm8gaW4gdGhlIGJ1aWxkIHN1bW1hcnkgcGFnZSwgYW5kIHRoYXQgdGhlIERJU1RSTyB2YXJpYWJsZSB2YWx1ZSBpbiB0aGUgYml0YmFrZSB2YXJpYWJsZXMgdGFibGUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdG9hc3RlciAocG9reS1sc2IgYWdhaW4pLiIKKyAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJCdWlsZCBmaW5pc2hlcyBzdWNjZXNzZnVsbHkuIFxuXG5UaGUgJ3N1Y2Nlc3MnIGNyaXRlcmlhIGZvciB0aGlzIG9uZSBzaG91bGQgYmUgdGhhdCB0aGUgYnVpbGQgaXMgcmVwb3J0ZWQgYXMgdXNpbmcgdGhlIHBva3ktdGlueSBkaXN0cm8gaW4gdGhlIGJ1aWxkIHN1bW1hcnkgcGFnZSwgYW5kIHRoYXQgdGhlIERJU1RSTyB2YXJpYWJsZSB2YWx1ZSBpbiB0aGUgYml0YmFrZSB2YXJpYWJsZXMgdGFibGUgaXMgc2V0IHRvIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdG9hc3RlciAocG9reS10aW55IGFnYWluKS4iCiAgICAgICAgIH0KICAgICAgIH0sCiAgICAgICAic3VtbWFyeSI6ICJCdWlsZF9hX3JlY2lwZV93aXRoX2RpZmZlcmVudF9kaXN0cm8iCkBAIC0xNjEyLDcgKzE2MTIsNyBAQAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgfSwKICAgICAgICAgIjMiOiB7Ci0gICAgICAgICAgImFjdGlvbiI6ICJDaGVjayB0aGF0IHRoZSB0YWJsZSBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgbGlzdCBvZiBpbWFnZSByZWNpcGVzIChlZy4gY29yZS1pbWFnZSBtaW5pbWFsLCBjb3JlLWltYWdlLWxzYikgXG5cblxuIiwKKyAgICAgICAgICAiYWN0aW9uIjogIkNoZWNrIHRoYXQgdGhlIHRhYmxlIGlzIHBvcHVsYXRlZCB3aXRoIHRoZSBsaXN0IG9mIGltYWdlIHJlY2lwZXMgKGVnLiBjb3JlLWltYWdlIG1pbmltYWwpIFxuXG5cbiIsCiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICB9LAogICAgICAgICAiNCI6IHsKQEAgLTE2NzAsNyArMTY3MCw3IEBACiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgogICAgICAgICB9LAogICAgICAgICAiNyI6IHsKLSAgICAgICAgICAiYWN0aW9uIjogIlNvcnQgdGhlIHRhYmxlIGJ5IFwiTGF5ZXJcIiBhbmQgdGhlbiBuYXZpZ2F0ZSBhd2F5IGJ5IHNlbGVjdGluZyBhbiBpbWFnZSAoc3VjaCBhcyBjb3JlLWltYWdlLWxzYikuIFdoZW4geW91IGNsaWNrIHRoZSBcImJhY2tcIiBidXR0b24gaW4gdGhlIHdlYi1icm93c2VyIHRvIGdvIGJhY2ssIHRoZSBcIk5ldyBjdXN0b20gaW1hZ2VcIiB0YWJsZSBzaG91bGQgc3RpbGwgYmUgc29ydGVkIGJ5IFwiTGF5ZXJcIi4gIFxuVGhpcyBzaG91bGQgYXBwbHkgYWxzbyBieSBuYXZpZ2F0aW5nIGJhY2sgdG8gdGhlIHBhZ2UgYnkgYW55IG90aGVyIG1lYW5zLiBcblxuIiwKKyAgICAgICAgICAiYWN0aW9uIjogIlNvcnQgdGhlIHRhYmxlIGJ5IFwiTGF5ZXJcIiBhbmQgdGhlbiBuYXZpZ2F0ZSBhd2F5IGJ5IHNlbGVjdGluZyBhbiBpbWFnZS4gV2hlbiB5b3UgY2xpY2sgdGhlIFwiYmFja1wiIGJ1dHRvbiBpbiB0aGUgd2ViLWJyb3dzZXIgdG8gZ28gYmFjaywgdGhlIFwiTmV3IGN1c3RvbSBpbWFnZVwiIHRhYmxlIHNob3VsZCBzdGlsbCBiZSBzb3J0ZWQgYnkgXCJMYXllclwiLiAgXG5UaGlzIHNob3VsZCBhcHBseSBhbHNvIGJ5IG5hdmlnYXRpbmcgYmFjayB0byB0aGUgcGFnZSBieSBhbnkgb3RoZXIgbWVhbnMuIFxuXG4iLAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgfSwKICAgICAgICAgIjgiOiB7CkBAIC0yMzQ4LDcgKzIzNDgsNyBAQAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgfSwKICAgICAgICAgIjMiOiB7Ci0gICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCA2IHJlY2lwZXMgZXhhbXBsZSAoY29yZS1pbWFnZS1zYXRvLCBjb3JlLWltYWdlLW1pbmltYWwsIGNvcmUtaW1hZ2UtYmFzZSwgY29yZS1pbWFnZS1sc2IsIGNvcmUtaW1hZ2UtY2x1dHRlcikgdG8gbmFtZSBhIGZldy4gIiwKKyAgICAgICAgICAiYWN0aW9uIjogIkJ1aWxkIDYgcmVjaXBlcyBleGFtcGxlIChjb3JlLWltYWdlLXNhdG8sIGNvcmUtaW1hZ2UtbWluaW1hbCwgY29yZS1pbWFnZS1iYXNlLCBjb3JlLWltYWdlLWNsdXR0ZXIpIHRvIG5hbWUgYSBmZXcuICIsCiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIEFsbCByZWNpcGVzIGFyZSBidWlsdCBjb3JyZWN0bHkgXG5cbiIKICAgICAgICAgfSwKICAgICAgICAgIjQiOiB7CkBAIC0yMzgyLDcgKzIzODIsNyBAQAogICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKICAgICAgICAgfSwKICAgICAgICAgIjMiOiB7Ci0gICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCA2IHJlY2lwZXMgZXhhbXBsZSAoY29yZS1pbWFnZS1zYXRvLCBjb3JlLWltYWdlLW1pbmltYWwsIGNvcmUtaW1hZ2UtYmFzZSwgY29yZS1pbWFnZS1sc2IsIGNvcmUtaW1hZ2UtY2x1dHRlcikgdG8gbmFtZSBhIGZldy4gXG5cbiIsCisgICAgICAgICAgImFjdGlvbiI6ICJCdWlsZCA2IHJlY2lwZXMgZXhhbXBsZSAoY29yZS1pbWFnZS1zYXRvLCBjb3JlLWltYWdlLW1pbmltYWwsIGNvcmUtaW1hZ2UtYmFzZSwgY29yZS1pbWFnZS1jbHV0dGVyKSB0byBuYW1lIGEgZmV3LiBcblxuIiwKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJBbGwgcmVjaXBlcyBhcmUgYnVpbHQgY29ycmVjdGx5IFxuXG4iCiAgICAgICAgIH0sCiAgICAgICAgICI0IjogewpAQCAtMjQyMCw3ICsyNDIwLDcgQEAKICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgIH0sCiAgICAgICAgICIzIjogewotICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgNCByZWNpcGVzIGV4YW1wbGUgKGNvcmUtaW1hZ2Utc2F0bywgY29yZS1pbWFnZS1taW5pbWFsLCBjb3JlLWltYWdlLWJhc2UsIGNvcmUtaW1hZ2UtbHNiLCBjb3JlLWltYWdlLWNsdXR0ZXIpIHRvIG5hbWUgYSBmZXcuIFxuXG4iLAorICAgICAgICAgICJhY3Rpb24iOiAiQnVpbGQgNCByZWNpcGVzIGV4YW1wbGUgKGNvcmUtaW1hZ2Utc2F0bywgY29yZS1pbWFnZS1taW5pbWFsLCBjb3JlLWltYWdlLWJhc2UsIGNvcmUtaW1hZ2UtY2x1dHRlcikgdG8gbmFtZSBhIGZldy4gXG5cbiIsCiAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIEFsbCByZWNpcGVzIGFyZSBidWlsdCBjb3JyZWN0bHkgXG5cbiIKICAgICAgICAgfSwKICAgICAgICAgIjQiOiB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKaW5kZXggNjI5YjlhZi4uODBjYzg2YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQpAQCAtOSw3ICs5LDcgQEAKIAogZnJvbSBvZXFhLnJ1bnRpbWUuY2FzZSBpbXBvcnQgT0VSdW50aW1lVGVzdENhc2UKIGZyb20gb2VxYS5jb3JlLmRlY29yYXRvci5kZXBlbmRzIGltcG9ydCBPRVRlc3REZXBlbmRzCi1mcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGF0YSBpbXBvcnQgc2tpcElmTm90RGF0YVZhciwgc2tpcElmTm90RmVhdHVyZQorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdERhdGFWYXIsIHNraXBJZk5vdEZlYXR1cmUsIHNraXBJZkluRGF0YVZhciwgc2tpcElmTm90SW5EYXRhVmFyCiBmcm9tIG9lcWEucnVudGltZS5kZWNvcmF0b3IucGFja2FnZSBpbXBvcnQgT0VIYXNQYWNrYWdlCiAKIGNsYXNzIERuZlRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgpAQCAtMTE2LDYgKzExNiw3IEBACiAgICAgICAgIHNlbGYuZG5mX3dpdGhfcmVwbygncmVpbnN0YWxsIC15IHJ1bi1wb3N0aW5zdHMtZGV2JykKIAogICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZlJlcG9UZXN0LnRlc3RfZG5mX21ha2VjYWNoZSddKQorICAgIEBza2lwSWZJbkRhdGFWYXIoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICdUZXN0IHJ1biB3aGVuIG5vdCBlbmFibGUgdXNybWVyZ2UnKQogICAgIGRlZiB0ZXN0X2RuZl9pbnN0YWxscm9vdChzZWxmKToKICAgICAgICAgcm9vdHBhdGggPSAnL2hvbWUvcm9vdC9jaHJvb3QvdGVzdCcKICAgICAgICAgI0NvcHkgbmVjZXNzYXJ5IGZpbGVzIHRvIGF2b2lkIGVycm9ycyB3aXRoIG5vdCB5ZXQgaW5zdGFsbGVkIHRvb2xzIG9uCkBAIC0xNDEsNiArMTQyLDM3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc3RhdHVzLCBvdXRwdXQpCiAKICAgICBAT0VUZXN0RGVwZW5kcyhbJ2RuZi5EbmZSZXBvVGVzdC50ZXN0X2RuZl9tYWtlY2FjaGUnXSkKKyAgICBAc2tpcElmTm90SW5EYXRhVmFyKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnVGVzdCBydW4gd2hlbiBlbmFibGUgdXNybWVnZScpCisgICAgZGVmIHRlc3RfZG5mX2luc3RhbGxyb290X3Vzcm1lcmdlKHNlbGYpOgorICAgICAgICByb290cGF0aCA9ICcvaG9tZS9yb290L2Nocm9vdC90ZXN0JworICAgICAgICAjQ29weSBuZWNlc3NhcnkgZmlsZXMgdG8gYXZvaWQgZXJyb3JzIHdpdGggbm90IHlldCBpbnN0YWxsZWQgdG9vbHMgb24KKyAgICAgICAgI2luc3RhbGxyb290IGRpcmVjdG9yeS4KKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy9ldGMnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvdXNyL2JpbiAlcy91c3Ivc2JpbicgJSAocm9vdHBhdGgsIHJvb3RwYXRoKSwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdsbiAtc2YgLXIgJXMvdXNyL2JpbiAlcy9iaW4nICAlIChyb290cGF0aCwgcm9vdHBhdGgpLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2xuIC1zZiAtciAlcy91c3Ivc2JpbiAlcy9zYmluJyAgJSAocm9vdHBhdGgsIHJvb3RwYXRoKSwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy9kZXYnICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgICNIYW5kbGUgZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgbGliIGRpcnMKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdta2RpciAtcCAlcy91c3IvbGliJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ21rZGlyIC1wICVzL3Vzci9saWJ4MzInICUgcm9vdHBhdGgsIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignbWtkaXIgLXAgJXMvdXNyL2xpYjY0JyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC9saWIvbGlidGluZm8uc28uNSAlcy91c3IvbGliJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC9saWJ4MzIvbGlidGluZm8uc28uNSAlcy91c3IvbGlieDMyJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC9saWI2NC9saWJ0aW5mby5zby41ICVzL3Vzci9saWI2NCcgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdsbiAtc2YgLXIgJXMvbGliICVzL3Vzci9saWInICUgKHJvb3RwYXRoLHJvb3RwYXRoKSwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdsbiAtc2YgLXIgJXMvbGlieDMyICVzL3Vzci9saWJ4MzInICUgKHJvb3RwYXRoLHJvb3RwYXRoKSwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdsbiAtc2YgLXIgJXMvbGliNjQgJXMvdXNyL2xpYjY0JyAlIChyb290cGF0aCxyb290cGF0aCksIDE1MDApCisgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignY3AgLXIgL2V0Yy9ycG0gJXMvZXRjJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2NwIC1yIC9ldGMvZG5mICVzL2V0YycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdjcCAvYmluL3NoICVzL2JpbicgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi50YXJnZXQucnVuKCdtb3VudCAtbyBiaW5kIC9kZXYgJXMvZGV2LycgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi5kbmZfd2l0aF9yZXBvKCdpbnN0YWxsIC0taW5zdGFsbHJvb3Q9JXMgLXYgLXkgLS1ycG12ZXJib3NpdHk9ZGVidWcgYnVzeWJveCBydW4tcG9zdGluc3RzJyAlIHJvb3RwYXRoKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigndGVzdCAtZSAlcy92YXIvY2FjaGUvZG5mJyAlIHJvb3RwYXRoLCAxNTAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHN0YXR1cywgb3V0cHV0KQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigndGVzdCAtZSAlcy9iaW4vYnVzeWJveCcgJSByb290cGF0aCwgMTUwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzdGF0dXMsIG91dHB1dCkKKworICAgIEBPRVRlc3REZXBlbmRzKFsnZG5mLkRuZlJlcG9UZXN0LnRlc3RfZG5mX21ha2VjYWNoZSddKQogICAgIGRlZiB0ZXN0X2RuZl9leGNsdWRlKHNlbGYpOgogICAgICAgICBleGNsdWRlcGtnID0gJ2N1cmwtZGV2JwogICAgICAgICBzZWxmLmRuZl93aXRoX3JlcG8oJ2luc3RhbGwgLXkgY3VybConKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb2Vfc3lzbG9nLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb2Vfc3lzbG9nLnB5CmluZGV4IDNhODI3MWEuLmYzYzJiZWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29lX3N5c2xvZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vZV9zeXNsb2cucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAgICAgbXNnID0gIkZhaWxlZCB0byBleGVjdXRlICVzIiAlIHNlbGYudGMudGFyZ2V0X2NtZHNbJ3BzJ10KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZz1tc2cpCiAgICAgICAgIG1zZyA9ICJObyBzeXNsb2cgZGFlbW9uIHByb2Nlc3M7ICVzIG91dHB1dDpcbiVzIiAlIChzZWxmLnRjLnRhcmdldF9jbWRzWydwcyddLCBvdXRwdXQpCi0gICAgICAgIGhhc2RhZW1vbiA9ICJzeXNsb2dkIiBpbiBvdXRwdXQgb3IgInN5c2xvZy1uZyIgaW4gb3V0cHV0CisgICAgICAgIGhhc2RhZW1vbiA9ICJzeXNsb2dkIiBpbiBvdXRwdXQgb3IgInN5c2xvZy1uZyIgaW4gb3V0cHV0IG9yICJzdmxvZ2QiIGluIG91dHB1dAogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzZGFlbW9uLCBtc2c9bXNnKQogCiBjbGFzcyBTeXNsb2dUZXN0Q29uZmlnKE9FUnVudGltZVRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQppbmRleCAxOWM5YzUyLi4xNTM0M2Q3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CkBAIC04Myw2ICs4MywxMCBAQAogICAgICdhbWRfbmI6IENhbm5vdCBlbnVtZXJhdGUgQU1EIG5vcnRoYnJpZGdlcycsCiAgICAgJ3V2ZXNhZmI6IDUwMDAgbXMgdGFzayB0aW1lb3V0LCBpbmZpbml0ZWx5IHdhaXRpbmcnLAogICAgICd0c2M6IEhQRVQvUE1USU1FUiBjYWxpYnJhdGlvbiBmYWlsZWQnLAorICAgICJtb2Rlc2V0KDApOiBGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgRFJJMiBleHRlbnNpb24iLAorICAgICJ1dmVzYWZiOiBjYW5ub3QgcmVzZXJ2ZSB2aWRlbyBtZW1vcnkgYXQiLAorICAgICJ1dmVzYWZiOiBwcm9iZSBvZiB1dmVzYWZiLjAgZmFpbGVkIHdpdGggZXJyb3IiLAorICAgICJnbGFtb3IgaW5pdGlhbGl6YXRpb24gZmFpbGVkIiwKIF0gKyBjb21tb25fZXJyb3JzCiAKIGlnbm9yZV9lcnJvcnMgPSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L2Nhc2VzL2RldnRvb2wucHkKaW5kZXggNWEwMmFkZC4uOGU5MmJmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC9jYXNlcy9kZXZ0b29sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvY2FzZXMvZGV2dG9vbC5weQpAQCAtNzMsOCArNzMsOCBAQAogICAgICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIHJlc2V0ICVzJyAlIHJlY2lwZSkKIAogICAgIGRlZiB0ZXN0X2RldnRvb2xfa2VybmVsbW9kdWxlKHNlbGYpOgotICAgICAgICBkb2NmaWxlID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS91bWxhZXV0ZS92NGwybG9vcGJhY2suZ2l0JwotICAgICAgICByZWNpcGUgPSAndjRsMmxvb3BiYWNrLWRyaXZlcicKKyAgICAgICAgZG9jZmlsZSA9ICdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2dpdC9rZXJuZWwtbW9kdWxlLWhlbGxvLXdvcmxkJworICAgICAgICByZWNpcGUgPSAna2VybmVsLW1vZHVsZS1oZWxsby13b3JsZCcKICAgICAgICAgc2VsZi5fcnVuKCdkZXZ0b29sIGFkZCAlcyAlcycgJSAocmVjaXBlLCBkb2NmaWxlKSApCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3J1bignZGV2dG9vbCBidWlsZCAlcycgJSByZWNpcGUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmJ0ZXN0cy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CmluZGV4IDA2OTNiYTguLjhlNTliYWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9iYnRlc3RzLnB5CkBAIC0xMTksNyArMTE5LDcgQEAKIAogICAgIGRlZiB0ZXN0X2JpdGJha2VfZyhzZWxmKToKICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnLWcgY29yZS1pbWFnZS1taW5pbWFsJykKLSAgICAgICAgZm9yIGYgaW4gWydwbi1idWlsZGxpc3QnLCAncmVjaXBlLWRlcGVuZHMuZG90JywgJ3Rhc2stZGVwZW5kcy5kb3QnXToKKyAgICAgICAgZm9yIGYgaW4gWydwbi1idWlsZGxpc3QnLCAndGFzay1kZXBlbmRzLmRvdCddOgogICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJlbW92ZSwgZikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCdUYXNrIGRlcGVuZGVuY2llcyBzYXZlZCB0byBcJ3Rhc2stZGVwZW5kcy5kb3RcJycgaW4gcmVzdWx0Lm91dHB1dCwgbXNnID0gIk5vIHRhc2sgZGVwZW5kZW5jeSBcInRhc2stZGVwZW5kcy5kb3RcIiBmaWxlIHdhcyBnZW5lcmF0ZWQgZm9yIHRoZSBnaXZlbiB0YXNrIHRhcmdldC4gYml0YmFrZSBvdXRwdXQ6ICVzIiAlIHJlc3VsdC5vdXRwdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnYnVzeWJveCcgaW4gZnRvb2xzLnJlYWRfZmlsZShvcy5wYXRoLmpvaW4oc2VsZi5idWlsZGRpciwgJ3Rhc2stZGVwZW5kcy5kb3QnKSksIG1zZyA9ICJObyBcImJ1c3lib3hcIiBkZXBlbmRlbmN5IGZvdW5kIGluIHRhc2stZGVwZW5kcy5kb3QgZmlsZS4iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JpbnV0aWxzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2JpbnV0aWxzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliYzc1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYmludXRpbHMucHkKQEAgLTAsMCArMSw0OSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCByZQoraW1wb3J0IGxvZ2dpbmcKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgT0VUZXN0VGFnCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIGdldF9iYl92YXIsIGdldF9iYl92YXJzCisKK2RlZiBwYXJzZV92YWx1ZXMoY29udGVudCk6CisgICAgZm9yIGkgaW4gY29udGVudDoKKyAgICAgICAgZm9yIHYgaW4gWyJQQVNTIiwgIkZBSUwiLCAiWFBBU1MiLCAiWEZBSUwiLCAiVU5SRVNPTFZFRCIsICJVTlNVUFBPUlRFRCIsICJVTlRFU1RFRCIsICJFUlJPUiIsICJXQVJOSU5HIl06CisgICAgICAgICAgICBpZiBpLnN0YXJ0c3dpdGgodiArICI6ICIpOgorICAgICAgICAgICAgICAgIHlpZWxkIGlbbGVuKHYpICsgMjpdLnN0cmlwKCksIHYKKyAgICAgICAgICAgICAgICBicmVhaworCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIsICJ0b29sY2hhaW4tc3lzdGVtIikKK2NsYXNzIEJpbnV0aWxzQ3Jvc3NTZWxmVGVzdChPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2JpbnV0aWxzKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9iaW51dGlscygiYmludXRpbHMiKQorCisgICAgZGVmIHRlc3RfZ2FzKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9iaW51dGlscygiZ2FzIikKKworICAgIGRlZiB0ZXN0X2xkKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9iaW51dGlscygibGQiKQorCisgICAgZGVmIHJ1bl9iaW51dGlscyhzZWxmLCBzdWl0ZSk6CisgICAgICAgIGZlYXR1cmVzID0gW10KKyAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdDSEVDS19UQVJHRVRTID0gInswfSInLmZvcm1hdChzdWl0ZSkpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJcbiIuam9pbihmZWF0dXJlcykpCisKKyAgICAgICAgcmVjaXBlID0gImJpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZSIKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsiQiIsICJUQVJHRVRfU1lTIiwgIlQiXSwgcmVjaXBlKQorICAgICAgICBidWlsZGRpciwgdGFyZ2V0X3N5cywgdGRpciA9IGJiX3ZhcnNbIkIiXSwgYmJfdmFyc1siVEFSR0VUX1NZUyJdLCBiYl92YXJzWyJUIl0KKworICAgICAgICBiaXRiYWtlKCJ7MH0gLWMgY2hlY2siLmZvcm1hdChyZWNpcGUpKQorCisgICAgICAgIHB0ZXN0c3VpdGUgPSAiYmludXRpbHMte30iLmZvcm1hdChzdWl0ZSkgaWYgc3VpdGUgIT0gImJpbnV0aWxzIiBlbHNlIHN1aXRlCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzID0geyJwdGVzdHJlc3VsdC5zZWN0aW9ucyIgOiB7cHRlc3RzdWl0ZSA6IHt9fX0KKworICAgICAgICBzdW1zcGF0aCA9IG9zLnBhdGguam9pbihidWlsZGRpciwgc3VpdGUsICJ7MH0uc3VtIi5mb3JtYXQoc3VpdGUpKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3Vtc3BhdGgpOgorICAgICAgICAgICAgc3Vtc3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsIHN1aXRlLCAidGVzdHN1aXRlIiwgInswfS5zdW0iLmZvcm1hdChzdWl0ZSkpCisKKyAgICAgICAgd2l0aCBvcGVuKHN1bXNwYXRoLCAiciIpIGFzIGY6CisgICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHBhcnNlX3ZhbHVlcyhmKToKKyAgICAgICAgICAgICAgICBzZWxmLmV4dHJhcmVzdWx0c1sicHRlc3RyZXN1bHQue30ue30iLmZvcm1hdChwdGVzdHN1aXRlLCB0ZXN0KV0gPSB7InN0YXR1cyIgOiByZXN1bHR9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMjViNTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5CkBAIC0wLDAgKzEsMTM5IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKK2ltcG9ydCBvcworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yIGltcG9ydCBPRVRlc3RUYWcKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUsIENvbW1hbmQKKworZGVmIHBhcnNlX3ZhbHVlcyhjb250ZW50KToKKyAgICBmb3IgaSBpbiBjb250ZW50OgorICAgICAgICBmb3IgdiBpbiBbIlBBU1MiLCAiRkFJTCIsICJYUEFTUyIsICJYRkFJTCIsICJVTlJFU09MVkVEIiwgIlVOU1VQUE9SVEVEIiwgIlVOVEVTVEVEIiwgIkVSUk9SIiwgIldBUk5JTkciXToKKyAgICAgICAgICAgIGlmIGkuc3RhcnRzd2l0aCh2ICsgIjogIik6CisgICAgICAgICAgICAgICAgeWllbGQgaVtsZW4odikgKyAyOl0uc3RyaXAoKSwgdgorICAgICAgICAgICAgICAgIGJyZWFrCisKK2NsYXNzIEdjY1NlbGZUZXN0QmFzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiBjaGVja19za2lwKHNlbGYsIHN1aXRlKToKKyAgICAgICAgdGFyZ2V0cyA9IGdldF9iYl92YXIoIlJVTlRJTUVUQVJHRVQiLCAiZ2NjLXJ1bnRpbWUiKS5zcGxpdCgpCisgICAgICAgIGlmIHN1aXRlIG5vdCBpbiB0YXJnZXRzOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiVGFyZ2V0IGRvZXMgbm90IHVzZSB7MH0iLmZvcm1hdChzdWl0ZSkpCisKKyAgICBkZWYgcnVuX2NoZWNrKHNlbGYsICpzdWl0ZXMsIHNzaCA9IE5vbmUpOgorICAgICAgICB0YXJnZXRzID0gc2V0KCkKKyAgICAgICAgZm9yIHMgaW4gc3VpdGVzOgorICAgICAgICAgICAgaWYgcyBpbiBbImdjYyIsICJnKysiXToKKyAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stZ2NjIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLXRhcmdldC17fSIuZm9ybWF0KHMpKQorCisgICAgICAgICMgY29uZmlndXJlIHNzaCB0YXJnZXQKKyAgICAgICAgZmVhdHVyZXMgPSBbXQorICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ01BS0VfQ0hFQ0tfVEFSR0VUUyA9ICJ7MH0iJy5mb3JtYXQoIiAiLmpvaW4odGFyZ2V0cykpKQorICAgICAgICBpZiBzc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCA9ICJzc2giJykKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnVE9PTENIQUlOX1RFU1RfSE9TVCA9ICJ7MH0iJy5mb3JtYXQoc3NoKSkKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnVE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSID0gInJvb3QiJykKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnVE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUID0gIjIyIicpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJcbiIuam9pbihmZWF0dXJlcykpCisKKyAgICAgICAgcmVjaXBlID0gImdjYy1ydW50aW1lIgorICAgICAgICBiaXRiYWtlKCJ7fSAtYyBjaGVjayIuZm9ybWF0KHJlY2lwZSkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsiQiIsICJUQVJHRVRfU1lTIl0sIHJlY2lwZSkKKyAgICAgICAgYnVpbGRkaXIsIHRhcmdldF9zeXMgPSBiYl92YXJzWyJCIl0sIGJiX3ZhcnNbIlRBUkdFVF9TWVMiXQorCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzID0geyJwdGVzdHJlc3VsdC5zZWN0aW9ucyIgOiB7fX0KKyAgICAgICAgZm9yIHN1aXRlIGluIHN1aXRlczoKKyAgICAgICAgICAgIHN1bXNwYXRoID0gb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiZ2NjIiwgInRlc3RzdWl0ZSIsIHN1aXRlLCAiezB9LnN1bSIuZm9ybWF0KHN1aXRlKSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzdW1zcGF0aCk6ICMgY2hlY2sgaW4gdGFyZ2V0IGRpcnMKKyAgICAgICAgICAgICAgICBzdW1zcGF0aCA9IG9zLnBhdGguam9pbihidWlsZGRpciwgdGFyZ2V0X3N5cywgc3VpdGUsICJ0ZXN0c3VpdGUiLCAiezB9LnN1bSIuZm9ybWF0KHN1aXRlKSkKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzdW1zcGF0aCk6ICMgaGFuZGxlIGxpYnN0ZGMrKy12MyAtPiBsaWJzdGRjKysKKyAgICAgICAgICAgICAgICBzdW1zcGF0aCA9IG9zLnBhdGguam9pbihidWlsZGRpciwgdGFyZ2V0X3N5cywgc3VpdGUsICJ0ZXN0c3VpdGUiLCAiezB9LnN1bSIuZm9ybWF0KHN1aXRlLnNwbGl0KCItIilbMF0pKQorCisgICAgICAgICAgICBwdGVzdHN1aXRlID0gImdjYy17fSIuZm9ybWF0KHN1aXRlKSBpZiBzdWl0ZSAhPSAiZ2NjIiBlbHNlIHN1aXRlCisgICAgICAgICAgICBwdGVzdHN1aXRlID0gcHRlc3RzdWl0ZSArICItdXNlciIgaWYgc3NoIGlzIE5vbmUgZWxzZSBwdGVzdHN1aXRlCisgICAgICAgICAgICBzZWxmLmV4dHJhcmVzdWx0c1sicHRlc3RyZXN1bHQuc2VjdGlvbnMiXVtwdGVzdHN1aXRlXSA9IHt9CisgICAgICAgICAgICB3aXRoIG9wZW4oc3Vtc3BhdGgsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHBhcnNlX3ZhbHVlcyhmKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNbInB0ZXN0cmVzdWx0Lnt9Lnt9Ii5mb3JtYXQocHRlc3RzdWl0ZSwgdGVzdCldID0geyJzdGF0dXMiIDogcmVzdWx0fQorCisgICAgZGVmIHJ1bl9jaGVja19lbXVsYXRlZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAjIGJ1aWxkIGNvcmUtaW1hZ2UtbWluaW1hbCB3aXRoIHJlcXVpcmVkIHBhY2thZ2VzCisgICAgICAgIGRlZmF1bHRfaW5zdGFsbGVkX3BhY2thZ2VzID0gWyJsaWJnY2MiLCAibGlic3RkYysrIiwgImxpYmF0b21pYyIsICJsaWJnb21wIl0KKyAgICAgICAgZmVhdHVyZXMgPSBbXQorICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giJykKKyAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgKz0gInswfSInLmZvcm1hdCgiICIuam9pbihkZWZhdWx0X2luc3RhbGxlZF9wYWNrYWdlcykpKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiXG4iLmpvaW4oZmVhdHVyZXMpKQorICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQorCisgICAgICAgICMgd3JhcCB0aGUgZXhlY3V0aW9uIHdpdGggYSBxZW11IGluc3RhbmNlCisgICAgICAgIHdpdGggcnVucWVtdSgiY29yZS1pbWFnZS1taW5pbWFsIiwgcnVucWVtdXBhcmFtcyA9ICJub2dyYXBoaWMiKSBhcyBxZW11OgorICAgICAgICAgICAgIyB2YWxpZGF0ZSB0aGF0IFNTSCBpcyB3b3JraW5nCisgICAgICAgICAgICBzdGF0dXMsIF8gPSBxZW11LnJ1bigidW5hbWUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCisKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jaGVjaygqYXJncywgc3NoPXFlbXUuaXAsICoqa3dhcmdzKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHY2NDcm9zc1NlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfY3Jvc3NfZ2NjKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVjaygiZ2NjIiwgImcrKyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKK2NsYXNzIEdjY0xpYkF0b21pY1NlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGliYXRvbWljKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVjaygibGliYXRvbWljIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQorY2xhc3MgR2NjTGliR29tcFNlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGliZ29tcChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImxpYmdvbXAiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHY2NMaWJTdGRDeHhTZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYnN0ZGN4eChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soImxpYnN0ZGMrKy12MyIpCisKK0BPRVRlc3RUYWcoInRvb2xjaGFpbi11c2VyIikKK2NsYXNzIEdjY0xpYlNzcFNlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGlic3NwKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NraXAoImxpYnNzcCIpCisgICAgICAgIHNlbGYucnVuX2NoZWNrKCJsaWJzc3AiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHY2NMaWJJdG1TZWxmVGVzdChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYml0bShzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19za2lwKCJsaWJpdG0iKQorICAgICAgICBzZWxmLnJ1bl9jaGVjaygibGliaXRtIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHY2NDcm9zc1NlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9jcm9zc19nY2Moc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJnY2MiLCAiZysrIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHY2NMaWJBdG9taWNTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGliYXRvbWljKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgibGliYXRvbWljIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHY2NMaWJHb21wU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2xpYmdvbXAoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJsaWJnb21wIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHY2NMaWJTdGRDeHhTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGlic3RkY3h4KHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgibGlic3RkYysrLXYzIikKKworQE9FVGVzdFRhZygidG9vbGNoYWluLXN5c3RlbSIpCitjbGFzcyBHY2NMaWJTc3BTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfbGlic3NwKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX3NraXAoImxpYnNzcCIpCisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJsaWJzc3AiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tc3lzdGVtIikKK2NsYXNzIEdjY0xpYkl0bVNlbGZUZXN0U3lzdGVtRW11bGF0ZWQoR2NjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9saWJpdG0oc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc2tpcCgibGliaXRtIikKKyAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImxpYml0bSIpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nbGliYy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nbGliYy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTQyNDg1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2dsaWJjLnB5CkBAIC0wLDAgKzEsODggQEAKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAoraW1wb3J0IG9zCitpbXBvcnQgY29udGV4dGxpYgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yIGltcG9ydCBPRVRlc3RUYWcKK2Zyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhciwgZ2V0X2JiX3ZhcnMsIHJ1bnFlbXUsIENvbW1hbmQKK2Zyb20gb2VxYS51dGlscy5uZnMgaW1wb3J0IHVuZnNfc2VydmVyCisKK2RlZiBwYXJzZV92YWx1ZXMoY29udGVudCk6CisgICAgZm9yIGkgaW4gY29udGVudDoKKyAgICAgICAgZm9yIHYgaW4gWyJQQVNTIiwgIkZBSUwiLCAiWFBBU1MiLCAiWEZBSUwiLCAiVU5SRVNPTFZFRCIsICJVTlNVUFBPUlRFRCIsICJVTlRFU1RFRCIsICJFUlJPUiIsICJXQVJOSU5HIl06CisgICAgICAgICAgICBpZiBpLnN0YXJ0c3dpdGgodiArICI6ICIpOgorICAgICAgICAgICAgICAgIHlpZWxkIGlbbGVuKHYpICsgMjpdLnN0cmlwKCksIHYKKyAgICAgICAgICAgICAgICBicmVhaworCitjbGFzcyBHbGliY1NlbGZUZXN0QmFzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgorICAgIGRlZiBydW5fY2hlY2soc2VsZiwgc3NoID0gTm9uZSk6CisgICAgICAgICMgY29uZmlndXJlIHNzaCB0YXJnZXQKKyAgICAgICAgZmVhdHVyZXMgPSBbXQorICAgICAgICBpZiBzc2ggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ1RPT0xDSEFJTl9URVNUX1RBUkdFVCA9ICJzc2giJykKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnVE9PTENIQUlOX1RFU1RfSE9TVCA9ICJ7MH0iJy5mb3JtYXQoc3NoKSkKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnVE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSID0gInJvb3QiJykKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnVE9PTENIQUlOX1RFU1RfSE9TVF9QT1JUID0gIjIyIicpCisgICAgICAgICAgICAjIGZvcmNlIHNpbmdsZSB0aHJlYWRlZCB0ZXN0IGV4ZWN1dGlvbgorICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCdFR0xJQkNQQVJBTExFTElTTV90YXNrLWNoZWNrX3BuLWdsaWJjLXRlc3RzdWl0ZSA9ICJQQVJBTExFTE1GTEFHUz0iLWoxIiInKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiXG4iLmpvaW4oZmVhdHVyZXMpKQorCisgICAgICAgIGJpdGJha2UoImdsaWJjLXRlc3RzdWl0ZSAtYyBjaGVjayIpCisKKyAgICAgICAgYnVpbGRkaXIgPSBnZXRfYmJfdmFyKCJCIiwgImdsaWJjLXRlc3RzdWl0ZSIpCisKKyAgICAgICAgcHRlc3RzdWl0ZSA9ICJnbGliYy11c2VyIiBpZiBzc2ggaXMgTm9uZSBlbHNlICJnbGliYyIKKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHMgPSB7InB0ZXN0cmVzdWx0LnNlY3Rpb25zIiA6IHtwdGVzdHN1aXRlIDoge319fQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGJ1aWxkZGlyLCAidGVzdHMuc3VtIiksICJyIikgYXMgZjoKKyAgICAgICAgICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcGFyc2VfdmFsdWVzKGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzWyJwdGVzdHJlc3VsdC57fS57fSIuZm9ybWF0KHB0ZXN0c3VpdGUsIHRlc3QpXSA9IHsic3RhdHVzIiA6IHJlc3VsdH0KKworICAgIGRlZiBydW5fY2hlY2tfZW11bGF0ZWQoc2VsZik6CisgICAgICAgIHdpdGggY29udGV4dGxpYi5FeGl0U3RhY2soKSBhcyBzOgorICAgICAgICAgICAgIyB1c2UgdGhlIGJhc2Ugd29yayBkaXIsIGFzIHRoZSBuZnMgbW91bnQsIHNpbmNlIHRoZSByZWNpcGUgZGlyZWN0b3J5IG1heSBub3QgZXhpc3QKKyAgICAgICAgICAgIHRtcGRpciA9IGdldF9iYl92YXIoIkJBU0VfV09SS0RJUiIpCisgICAgICAgICAgICBuZnNwb3J0LCBtb3VudHBvcnQgPSBzLmVudGVyX2NvbnRleHQodW5mc19zZXJ2ZXIodG1wZGlyKSkKKworICAgICAgICAgICAgIyBidWlsZCBjb3JlLWltYWdlLW1pbmltYWwgd2l0aCByZXF1aXJlZCBwYWNrYWdlcworICAgICAgICAgICAgZGVmYXVsdF9pbnN0YWxsZWRfcGFja2FnZXMgPSBbCisgICAgICAgICAgICAgICAgImdsaWJjLWNoYXJtYXBzIiwKKyAgICAgICAgICAgICAgICAibGliZ2NjIiwKKyAgICAgICAgICAgICAgICAibGlic3RkYysrIiwKKyAgICAgICAgICAgICAgICAibGliYXRvbWljIiwKKyAgICAgICAgICAgICAgICAibGliZ29tcCIsCisgICAgICAgICAgICAgICAgIyAicHl0aG9uMyIsCisgICAgICAgICAgICAgICAgIyAicHl0aG9uMy1wZXhwZWN0IiwKKyAgICAgICAgICAgICAgICAibmZzLXV0aWxzIiwKKyAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICBmZWF0dXJlcyA9IFtdCisgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQoJ0lNQUdFX0ZFQVRVUkVTICs9ICJzc2gtc2VydmVyLW9wZW5zc2giJykKKyAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMICs9ICJ7MH0iJy5mb3JtYXQoIiAiLmpvaW4oZGVmYXVsdF9pbnN0YWxsZWRfcGFja2FnZXMpKSkKKyAgICAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCJcbiIuam9pbihmZWF0dXJlcykpCisgICAgICAgICAgICBiaXRiYWtlKCJjb3JlLWltYWdlLW1pbmltYWwiKQorCisgICAgICAgICAgICAjIHN0YXJ0IHJ1bnFlbXUKKyAgICAgICAgICAgIHFlbXUgPSBzLmVudGVyX2NvbnRleHQocnVucWVtdSgiY29yZS1pbWFnZS1taW5pbWFsIiwgcnVucWVtdXBhcmFtcyA9ICJub2dyYXBoaWMiKSkKKworICAgICAgICAgICAgIyB2YWxpZGF0ZSB0aGF0IFNTSCBpcyB3b3JraW5nCisgICAgICAgICAgICBzdGF0dXMsIF8gPSBxZW11LnJ1bigidW5hbWUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDApCisKKyAgICAgICAgICAgICMgc2V0dXAgbmZzIG1vdW50CisgICAgICAgICAgICBpZiBxZW11LnJ1bigibWtkaXIgLXAgXCJ7MH1cIiIuZm9ybWF0KHRtcGRpcikpWzBdICE9IDA6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJGYWlsZWQgdG8gc2V0dXAgTkZTIG1vdW50IGRpcmVjdG9yeSBvbiB0YXJnZXQiKQorICAgICAgICAgICAgbW91bnRjbWQgPSAibW91bnQgLW8gbm9hYyxuZnN2ZXJzPTMscG9ydD17MH0sdWRwLG1vdW50cG9ydD17MX0gXCJ7Mn06ezN9XCIgXCJ7M31cIiIuZm9ybWF0KG5mc3BvcnQsIG1vdW50cG9ydCwgcWVtdS5zZXJ2ZXJfaXAsIHRtcGRpcikKKyAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW4obW91bnRjbWQpCisgICAgICAgICAgICBpZiBzdGF0dXMgIT0gMDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkZhaWxlZCB0byBzZXR1cCBORlMgbW91bnQgb24gdGFyZ2V0ICh7fSkiLmZvcm1hdChyZXByKG91dHB1dCkpKQorCisgICAgICAgICAgICBzZWxmLnJ1bl9jaGVjayhzc2ggPSBxZW11LmlwKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHbGliY1NlbGZUZXN0KEdsaWJjU2VsZlRlc3RCYXNlKToKKyAgICBkZWYgdGVzdF9nbGliYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2soKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tc3lzdGVtIikKK2NsYXNzIEdsaWJjU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHbGliY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfZ2xpYmMoc2VsZik6CisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCkKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2tlcm5lbGRldmVsb3BtZW50LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2tlcm5lbGRldmVsb3BtZW50LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MTg3NmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMva2VybmVsZGV2ZWxvcG1lbnQucHkKQEAgLTAsMCArMSw2NyBAQAoraW1wb3J0IG9zCitmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCitmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IHJ1bkNtZCwgZ2V0X2JiX3ZhcgorZnJvbSBvZXFhLnV0aWxzLmdpdCBpbXBvcnQgR2l0UmVwbworCitjbGFzcyBLZXJuZWxEZXYoT0VTZWxmdGVzdFRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cGVyKEtlcm5lbERldiwgY2xzKS5zZXRVcENsYXNzKCkKKyAgICAgICAgIyBDcmVhdGUgdGhlIHJlY2lwZSBkaXJlY3Rvcnkgc3RydWN0dXJlIGluc2lkZSB0aGUgY3JlYXRlZCBsYXllcgorICAgICAgICBjbHMubGF5ZXJuYW1lID0gJ21ldGEta2VybmVsdGVzdCcKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXIgJXMnICUgY2xzLmxheWVybmFtZSkKKyAgICAgICAgcnVuQ21kKCdta2RpciAtcCAlcy9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0bycgJSBjbHMubGF5ZXJuYW1lKQorICAgICAgICBjbHMucmVjaXBlc19saW51eHlvY3RvX2RpciA9IG9zLnBhdGguam9pbiBcCisgICAgICAgICAgICAoY2xzLmJ1aWxkZGlyLCBjbHMubGF5ZXJuYW1lLCAncmVjaXBlcy1rZXJuZWwnLCAnbGludXgnLCAnbGludXgteW9jdG8nKQorICAgICAgICBjbHMucmVjaXBlc2tlcm5lbF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoY2xzLnJlY2lwZXNfbGludXh5b2N0b19kaXIpCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZS1sYXllcnMgYWRkLWxheWVyICVzJyAlIGNscy5sYXllcm5hbWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBydW5DbWQoJ2JpdGJha2UtbGF5ZXJzIHJlbW92ZS1sYXllciAlcycgJSBjbHMubGF5ZXJuYW1lLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgIHJ1bkNtZCgncm0gLXJmICVzJyAlIGNscy5sYXllcm5hbWUpCisgICAgICAgIHN1cGVyKEtlcm5lbERldiwgY2xzKS50ZWFyRG93bkNsYXNzKCkKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc3VwZXIoS2VybmVsRGV2LCBzZWxmKS5zZXRVcCgpCisgICAgICAgIHNlbGYuc2V0X21hY2hpbmVfY29uZmlnKCdNQUNISU5FID0gInFlbXV4ODYtNjQiXG4nKQorCisgICAgZGVmIHRlc3RfYXBwbHlfcGF0Y2hlcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICBBYmxlIHRvIGFwcGx5IGEgc2luZ2xlIHBhdGNoIHRvIHRoZSBMaW51eCBrZXJuZWwgc291cmNlCisgICAgICAgIEV4cGVjdGVkOiAgICBUaGUgUkVBRE1FIGZpbGUgc2hvdWxkIGV4aXN0IGFuZCB0aGUgcGF0Y2ggY2hhbmdlcyBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXllZCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlLgorICAgICAgICBQcm9kdWN0OiAgICAgS2VybmVsIERldmVsb3BtZW50CisgICAgICAgIEF1dGhvcjogICAgICBZZW9oIEVlIFBlbmcgPGVlLnBlbmcueWVvaEBpbnRlbC5jb20+CisgICAgICAgIEF1dG9tYXRlZEJ5OiBNYXpsaWFuYSBNb2hhbWFkIDxtYXpsaWFuYS5tb2hhbWFkQGludGVsLmNvbT4KKyAgICAgICAgIiIiCisgICAgICAgIHJ1bkNtZCgnYml0YmFrZSB2aXJ0dWFsL2tlcm5lbCAtYyBwYXRjaCcpCisgICAgICAgIGtlcm5lbF9zb3VyY2UgPSBnZXRfYmJfdmFyKCdTVEFHSU5HX0tFUk5FTF9ESVInKQorICAgICAgICByZWFkbWUgPSBvcy5wYXRoLmpvaW4oa2VybmVsX3NvdXJjZSwgJ1JFQURNRScpCisKKyAgICAgICAgIyBUaGlzIHRlc3Qgc3RlcCBhZGRzIG1vZGlmaWVkIGZpbGUgJ1JFQURNRScgdG8gZ2l0IGFuZCBjcmVhdGVzIGEKKyAgICAgICAgIyBwYXRjaCBmaWxlICcwMDAxLUtFUk5FTF9ERVZfVEVTVF9DQVNFLnBhdGNoJyBhdCB0aGUgc2FtZSBsb2NhdGlvbiBhcyBmaWxlCisgICAgICAgIHBhdGNoX2NvbnRlbnQgPSAnVGhpcyBpcyBhIHRlc3QgdG8gYXBwbHkgYSBwYXRjaCB0byB0aGUga2VybmVsJworICAgICAgICB3aXRoIG9wZW4ocmVhZG1lLCAnYSsnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShwYXRjaF9jb250ZW50KQorICAgICAgICByZXBvID0gR2l0UmVwbygnJXMnICUga2VybmVsX3NvdXJjZSwgaXNfdG9wZGlyPVRydWUpCisgICAgICAgIHJlcG8ucnVuX2NtZCgnYWRkICVzJyAlIHJlYWRtZSkKKyAgICAgICAgcmVwby5ydW5fY21kKFsnY29tbWl0JywgJy1tJywgJ0tFUk5FTF9ERVZfVEVTVF9DQVNFJ10pCisgICAgICAgIHJlcG8ucnVuX2NtZChbJ2Zvcm1hdC1wYXRjaCcsICctMSddKQorICAgICAgICBwYXRjaF9uYW1lID0gJzAwMDEtS0VSTkVMX0RFVl9URVNUX0NBU0UucGF0Y2gnCisgICAgICAgIHBhdGNocGF0aCA9IG9zLnBhdGguam9pbihrZXJuZWxfc291cmNlLCBwYXRjaF9uYW1lKQorICAgICAgICBydW5DbWQoJ212ICVzICVzJyAlIChwYXRjaHBhdGgsIHNlbGYucmVjaXBlc19saW51eHlvY3RvX2RpcikpCisgICAgICAgIHJ1bkNtZCgncm0gJXMgJyAlIHJlYWRtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhyZWFkbWUpKQorCisgICAgICAgIHJlY2lwZV9hcHBlbmQgPSBvcy5wYXRoLmpvaW4oc2VsZi5yZWNpcGVza2VybmVsX2RpciwgJ2xpbnV4LXlvY3RvXyUuYmJhcHBlbmQnKQorICAgICAgICB3aXRoIG9wZW4ocmVjaXBlX2FwcGVuZCwgJ3crJykgYXMgZmg6CisgICAgICAgICAgICBmaC53cml0ZSgnU1JDX1VSSSArPSAiZmlsZTovLyVzIlxuJyAlIHBhdGNoX25hbWUpCisgICAgICAgICAgICBmaC53cml0ZSgnRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vJHtQTn06IicpCisKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlIHZpcnR1YWwva2VybmVsIC1jIGNsZWFuJykKKyAgICAgICAgcnVuQ21kKCdiaXRiYWtlIHZpcnR1YWwva2VybmVsIC1jIHBhdGNoJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHJlYWRtZSkpCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgndGFpbCAtbiAxICVzJyAlIHJlYWRtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQub3V0cHV0LCBwYXRjaF9jb250ZW50KQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CmluZGV4IGY0N2JjNzAuLjAzOTAxYTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKQEAgLTUsOSArNSwxMSBAQAogZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQogZnJvbSBvZXFhLnNkay51dGlscy5zZGtidWlsZHByb2plY3QgaW1wb3J0IFNES0J1aWxkUHJvamVjdAogZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCBiaXRiYWtlLCBnZXRfYmJfdmFycywgcnVuQ21kCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IgaW1wb3J0IE9FVGVzdFRhZwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgc2h1dGlsCiAKK0BPRVRlc3RUYWcoIm1hY2hpbmUiKQogY2xhc3MgTWV0YUlERShPRVNlbGZ0ZXN0VGVzdENhc2UpOgogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weQppbmRleCA2ZGM4M2QyLi5lZWUwOWQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCiBpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCBqc29uCiBpbXBvcnQgdW5pdHRlc3QKIAogTUlTU0lORyA9ICdNSVNTSU5HJwpAQCAtODEsMTQgKzgyLDEyIEBACiAgICAgICAgIGZvciB2IGluIG5lZWRlZF92YXJzOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCB2Lmxvd2VyKCksIGJiX3ZhcnNbdl0pCiAKLSAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZi50YywgImV4dHJhcmVzdWx0cyIpOgotICAgICAgICAgICAgc2VsZi50Yy5leHRyYXJlc3VsdHMgPSB7fQotICAgICAgICBzZWxmLmV4dHJhcyA9IHNlbGYudGMuZXh0cmFyZXN1bHRzCi0KLSAgICAgICAgc2VsZi5leHRyYXMuc2V0ZGVmYXVsdCgncmVwcm9kdWNpYmxlLnJhd2xvZ3MnLCB7fSlbJ2xvZyddID0gJycKKyAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzID0ge30KKyAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJywge30pWydsb2cnXSA9ICcnCisgICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0cy5zZXRkZWZhdWx0KCdyZXByb2R1Y2libGUnLCB7fSkuc2V0ZGVmYXVsdCgnZmlsZXMnLCB7fSkKIAogICAgIGRlZiBhcHBlbmRfdG9fbG9nKHNlbGYsIG1zZyk6Ci0gICAgICAgIHNlbGYuZXh0cmFzWydyZXByb2R1Y2libGUucmF3bG9ncyddWydsb2cnXSArPSBtc2cKKyAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzWydyZXByb2R1Y2libGUucmF3bG9ncyddWydsb2cnXSArPSBtc2cKIAogICAgIGRlZiBjb21wYXJlX3BhY2thZ2VzKHNlbGYsIHJlZmVyZW5jZV9kaXIsIHRlc3RfZGlyLCBkaWZmdXRpbHNfc3lzcm9vdCk6CiAgICAgICAgIHJlc3VsdCA9IFBhY2thZ2VDb21wYXJlUmVzdWx0cygpCkBAIC0xMTQsNDcgKzExMyw3MCBAQAogICAgICAgICByZXN1bHQuc29ydCgpCiAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgIEB1bml0dGVzdC5za2lwKCJSZXByb2R1Y2libGUgYnVpbGRzIGRvIG5vdCB5ZXQgcGFzcyIpCisgICAgZGVmIHdyaXRlX3BhY2thZ2VfbGlzdChzZWxmLCBwYWNrYWdlX2NsYXNzLCBuYW1lLCBwYWNrYWdlcyk6CisgICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0c1sncmVwcm9kdWNpYmxlJ11bJ2ZpbGVzJ10uc2V0ZGVmYXVsdChwYWNrYWdlX2NsYXNzLCB7fSlbbmFtZV0gPSBbCisgICAgICAgICAgICAgICAgeydyZWZlcmVuY2UnOiBwLnJlZmVyZW5jZSwgJ3Rlc3QnOiBwLnRlc3R9IGZvciBwIGluIHBhY2thZ2VzXQorCiAgICAgZGVmIHRlc3RfcmVwcm9kdWNpYmxlX2J1aWxkcyhzZWxmKToKICAgICAgICAgY2FwdHVyZV92YXJzID0gWydERVBMT1lfRElSXycgKyBjLnVwcGVyKCkgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXNdCiAKLSAgICAgICAgY29tbW9uX2NvbmZpZyA9IHRleHR3cmFwLmRlZGVudCgnJydcCi0gICAgICAgICAgICBJTkhFUklUICs9ICJyZXByb2R1Y2libGVfYnVpbGQiCi0gICAgICAgICAgICBQQUNLQUdFX0NMQVNTRVMgPSAiJXMiCi0gICAgICAgICAgICAnJycpICUgKCcgJy5qb2luKCdwYWNrYWdlXyVzJyAlIGMgZm9yIGMgaW4gc2VsZi5wYWNrYWdlX2NsYXNzZXMpKQotCi0gICAgICAgICMgRG8gYW4gaW5pdGlhbCBidWlsZC4gSXQncyBhY2NlcHRhYmxlIGZvciB0aGlzIGJ1aWxkIHRvIHVzZSBzc3RhdGUKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoY29tbW9uX2NvbmZpZykKLSAgICAgICAgdmFyc19yZWZlcmVuY2UgPSBnZXRfYmJfdmFycyhjYXB0dXJlX3ZhcnMpCi0gICAgICAgIGJpdGJha2UoJyAnLmpvaW4oc2VsZi5pbWFnZXMpKQotCiAgICAgICAgICMgQnVpbGQgbmF0aXZlIHV0aWxpdGllcworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygnJykKICAgICAgICAgYml0YmFrZSgiZGlmZnV0aWxzLW5hdGl2ZSAtYyBhZGR0b19yZWNpcGVfc3lzcm9vdCIpCiAgICAgICAgIGRpZmZ1dGlsc19zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgImRpZmZ1dGlscy1uYXRpdmUiKQogCi0gICAgICAgICMgUGVyZm9ybSBhbm90aGVyIGJ1aWxkLiBUaGlzIGJ1aWxkIHNob3VsZCAqbm90KiBzaGFyZSBzc3RhdGUgb3IgcHVsbAotICAgICAgICAjIGZyb20gYW55IG1pcnJvcnMsIGJ1dCBzaGFyaW5nIGEgRExfRElSIGlzIGZpbmUKLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcodGV4dHdyYXAuZGVkZW50KCcnJ1wKLSAgICAgICAgICAgIFRNUERJUiA9ICIke1RPUERJUn0vcmVwcm9kdWNpYmxlL3RtcCIKKyAgICAgICAgIyBSZXByb2R1Y2libGUgYnVpbGRzIHNob3VsZCBub3QgcHVsbCBmcm9tIHNzdGF0ZSBvciBtaXJyb3JzLCBidXQKKyAgICAgICAgIyBzaGFyaW5nIERMX0RJUiBpcyBmaW5lCisgICAgICAgIGNvbW1vbl9jb25maWcgPSB0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgSU5IRVJJVCArPSAicmVwcm9kdWNpYmxlX2J1aWxkIgorICAgICAgICAgICAgUEFDS0FHRV9DTEFTU0VTID0gIiVzIgogICAgICAgICAgICAgU1NUQVRFX0RJUiA9ICIke1RNUERJUn0vc3N0YXRlIgotICAgICAgICAgICAgU1NUQVRFX01JUlJPUiA9ICIiCi0gICAgICAgICAgICAnJycpICsgY29tbW9uX2NvbmZpZykKLSAgICAgICAgdmFyc190ZXN0ID0gZ2V0X2JiX3ZhcnMoY2FwdHVyZV92YXJzKQorICAgICAgICAgICAgJycnKSAlICgnICcuam9pbigncGFja2FnZV8lcycgJSBjIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzKSkKKworICAgICAgICAjIFBlcmZvcm0gYSBidWlsZC4KKyAgICAgICAgcmVwcm9kdWNpYmxlQV90bXAgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BkaXIsICdyZXByb2R1Y2libGVBJywgJ3RtcCcpCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHJlcHJvZHVjaWJsZUFfdG1wKToKKyAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShyZXByb2R1Y2libGVBX3RtcCwgcmVjdXJzZT1UcnVlKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCh0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgVE1QRElSID0gIiVzIgorICAgICAgICAgICAgJycnKSAlIHJlcHJvZHVjaWJsZUFfdG1wKSArIGNvbW1vbl9jb25maWcpCisgICAgICAgIHZhcnNfQSA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKICAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCiAKKyAgICAgICAgIyBQZXJmb3JtIGFub3RoZXIgYnVpbGQuCisgICAgICAgIHJlcHJvZHVjaWJsZUJfdG1wID0gb3MucGF0aC5qb2luKHNlbGYudG9wZGlyLCAncmVwcm9kdWNpYmxlQicsICd0bXAnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhyZXByb2R1Y2libGVCX3RtcCk6CisgICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVwcm9kdWNpYmxlQl90bXAsIHJlY3Vyc2U9VHJ1ZSkKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygodGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgIFNTVEFURV9NSVJST1IgPSAiIgorICAgICAgICAgICAgVE1QRElSID0gIiVzIgorICAgICAgICAgICAgJycnKSAlIHJlcHJvZHVjaWJsZUJfdG1wKSArIGNvbW1vbl9jb25maWcpCisgICAgICAgIHZhcnNfQiA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKKyAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCisKKyAgICAgICAgIyBOT1RFOiBUaGUgdGVtcCBkaXJlY3RvcmllcyBmcm9tIHRoZSByZXByb2R1Y2libGUgYnVpbGQgYXJlIHB1cnBvc2VseQorICAgICAgICAjIGtlcHQgYWZ0ZXIgdGhlIGJ1aWxkIHNvIGl0IGNhbiBiZSBkaWZmZWQgZm9yIGRlYnVnZ2luZy4KKwogICAgICAgICBmb3IgYyBpbiBzZWxmLnBhY2thZ2VfY2xhc3NlczoKLSAgICAgICAgICAgIHBhY2thZ2VfY2xhc3MgPSAncGFja2FnZV8nICsgYworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFja2FnZV9jbGFzcz1jKToKKyAgICAgICAgICAgICAgICBwYWNrYWdlX2NsYXNzID0gJ3BhY2thZ2VfJyArIGMKIAotICAgICAgICAgICAgZGVwbG95X3JlZmVyZW5jZSA9IHZhcnNfcmVmZXJlbmNlWydERVBMT1lfRElSXycgKyBjLnVwcGVyKCldCi0gICAgICAgICAgICBkZXBsb3lfdGVzdCA9IHZhcnNfdGVzdFsnREVQTE9ZX0RJUl8nICsgYy51cHBlcigpXQorICAgICAgICAgICAgICAgIGRlcGxveV9BID0gdmFyc19BWydERVBMT1lfRElSXycgKyBjLnVwcGVyKCldCisgICAgICAgICAgICAgICAgZGVwbG95X0IgPSB2YXJzX0JbJ0RFUExPWV9ESVJfJyArIGMudXBwZXIoKV0KIAotICAgICAgICAgICAgcmVzdWx0ID0gc2VsZi5jb21wYXJlX3BhY2thZ2VzKGRlcGxveV9yZWZlcmVuY2UsIGRlcGxveV90ZXN0LCBkaWZmdXRpbHNfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmNvbXBhcmVfcGFja2FnZXMoZGVwbG95X0EsIGRlcGxveV9CLCBkaWZmdXRpbHNfc3lzcm9vdCkKIAotICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnUmVwcm9kdWNpYmlsaXR5IHN1bW1hcnkgZm9yICVzOiAlcycgJSAoYywgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdSZXByb2R1Y2liaWxpdHkgc3VtbWFyeSBmb3IgJXM6ICVzJyAlIChjLCByZXN1bHQpKQogCi0gICAgICAgICAgICBzZWxmLmFwcGVuZF90b19sb2coJ1xuJy5qb2luKCIlczogJXMiICUgKHIuc3RhdHVzLCByLnRlc3QpIGZvciByIGluIHJlc3VsdC50b3RhbCkpCisgICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRfdG9fbG9nKCdcbicuam9pbigiJXM6ICVzIiAlIChyLnN0YXR1cywgci50ZXN0KSBmb3IgciBpbiByZXN1bHQudG90YWwpKQogCi0gICAgICAgICAgICBpZiByZXN1bHQubWlzc2luZyBvciByZXN1bHQuZGlmZmVyZW50OgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiVGhlIGZvbGxvd2luZyAlcyBwYWNrYWdlcyBhcmUgbWlzc2luZyBvciBkaWZmZXJlbnQ6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoYywgJyAnLmpvaW4oci50ZXN0IGZvciByIGluIChyZXN1bHQubWlzc2luZyArIHJlc3VsdC5kaWZmZXJlbnQpKSkpCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9wYWNrYWdlX2xpc3QocGFja2FnZV9jbGFzcywgJ21pc3NpbmcnLCByZXN1bHQubWlzc2luZykKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3BhY2thZ2VfbGlzdChwYWNrYWdlX2NsYXNzLCAnZGlmZmVyZW50JywgcmVzdWx0LmRpZmZlcmVudCkKKyAgICAgICAgICAgICAgICBzZWxmLndyaXRlX3BhY2thZ2VfbGlzdChwYWNrYWdlX2NsYXNzLCAnc2FtZScsIHJlc3VsdC5zYW1lKQorCisgICAgICAgICAgICAgICAgaWYgcmVzdWx0Lm1pc3Npbmcgb3IgcmVzdWx0LmRpZmZlcmVudDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJUaGUgZm9sbG93aW5nICVzIHBhY2thZ2VzIGFyZSBtaXNzaW5nIG9yIGRpZmZlcmVudDogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYywgJyAnLmpvaW4oci50ZXN0IGZvciByIGluIChyZXN1bHQubWlzc2luZyArIHJlc3VsdC5kaWZmZXJlbnQpKSkpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW5xZW11LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKaW5kZXggYjg4YWUzMC4uN2U2NzZiYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnFlbXUucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBvcnQgb2UudHlwZXMKK2Zyb20gb2VxYS5jb3JlLmRlY29yYXRvciBpbXBvcnQgT0VUZXN0VGFnCiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCiBmcm9tIG9lcWEudXRpbHMuY29tbWFuZHMgaW1wb3J0IGJpdGJha2UsIHJ1bnFlbXUsIGdldF9iYl92YXIsIHJ1bkNtZAogCkBAIC0xNDcsNiArMTQ4LDcgQEAKICMgZGVkaWNhdGVkIGZvciBNQUNISU5FPXFlbXV4ODYtNjQgd2hlcmUgaXQgdGVzdCB0aGF0IHFlbXV4ODYtNjQgd2lsbAogIyBib290dXAgdmFyaW91cyBmaWxlc3lzdGVtIHR5cGVzLCBpbmNsdWRpbmcgbGl2ZSBpbWFnZShpc28gYW5kIGhkZGltZykKICMgd2hlcmUgbGl2ZSBpbWFnZSB3YXMgbm90IHN1cHBvcnRlZCBvbiBhbGwgcWVtdSBhcmNoaXRlY3R1cmUuCitAT0VUZXN0VGFnKCJtYWNoaW5lIikKIGNsYXNzIFFlbXVUZXN0KE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKICAgICBAY2xhc3NtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKaW5kZXggZDI3OTk5NC4uMzEyNmFkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKQEAgLTc3LDcgKzc3LDE0IEBACiAKICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1tYWNoaW5lJywgcmVxdWlyZWQ9RmFsc2UsIGNob2ljZXM9WydyYW5kb20nLCAnYWxsJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVuIHRlc3RzIG9uIGRpZmZlcmVudCBtYWNoaW5lcyAocmFuZG9tL2FsbCkuJykKLSAgICAgICAgCisKKyAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS1zZWxlY3QtdGFncycsIGRlc3Q9InNlbGVjdF90YWdzIiwKKyAgICAgICAgICAgICAgICBuYXJncz0nKicsIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgICAgICAgICBoZWxwPSdGaWx0ZXIgYWxsICh1bmhpZGRlbikgdGVzdHMgdG8gYW55IHRoYXQgbWF0Y2ggYW55IG9mIHRoZSBzcGVjaWZpZWQgdGFncy4nKQorICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctVCcsICctLWV4Y2x1ZGUtdGFncycsIGRlc3Q9ImV4Y2x1ZGVfdGFncyIsCisgICAgICAgICAgICAgICAgbmFyZ3M9JyonLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgaGVscD0nRXhjbHVkZSBhbGwgKHVuaGlkZGVuKSB0ZXN0cyB0aGF0IG1hdGNoIGFueSBvZiB0aGUgc3BlY2lmaWVkIHRhZ3MuIChleGNsdWRlIGFwcGxpZXMgYmVmb3JlIHNlbGVjdCknKQorCiAgICAgICAgIHBhcnNlci5zZXRfZGVmYXVsdHMoZnVuYz1zZWxmLnJ1bikKIAogICAgIGRlZiBfZ2V0X2F2YWlsYWJsZV9tYWNoaW5lcyhzZWxmKToKQEAgLTE0OSw2ICsxNTYsMTggQEAKICAgICAgICAgY29weWZpbGUoc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzJ10sIAogICAgICAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19iYWNrdXAnXSkKIAorICAgICAgICBkZWYgdGFnX2ZpbHRlcih0YWdzKToKKyAgICAgICAgICAgIGlmIGFyZ3MuZXhjbHVkZV90YWdzOgorICAgICAgICAgICAgICAgIGlmIGFueSh0YWcgaW4gYXJncy5leGNsdWRlX3RhZ3MgZm9yIHRhZyBpbiB0YWdzKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIGlmIGFyZ3Muc2VsZWN0X3RhZ3M6CisgICAgICAgICAgICAgICAgaWYgbm90IHRhZ3Mgb3Igbm90IGFueSh0YWcgaW4gYXJncy5zZWxlY3RfdGFncyBmb3IgdGFnIGluIHRhZ3MpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgYXJncy5zZWxlY3RfdGFncyBvciBhcmdzLmV4Y2x1ZGVfdGFnczoKKyAgICAgICAgICAgIHNlbGYudGNfa3dhcmdzWydsb2FkJ11bJ3RhZ3NfZmlsdGVyJ10gPSB0YWdfZmlsdGVyCisKICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ3J1biddWydza2lwcyddID0gYXJncy5za2lwcwogICAgICAgICBzZWxmLnRjX2t3YXJnc1sncnVuJ11bJ3Byb2Nlc3NlcyddID0gYXJncy5wcm9jZXNzZXMKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CmluZGV4IDcxNDBiYzcuLmRjMWUyODYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKQEAgLTE3Miw4ICsxNzIsMTEgQEAKICAgICBpZiBuYXRpdmVfc3lzcm9vdDoKICAgICAgICAgZXh0cmFfcGF0aHMgPSAiJXMvc2Jpbjolcy91c3Ivc2Jpbjolcy91c3IvYmluIiAlIFwKICAgICAgICAgICAgICAgICAgICAgICAobmF0aXZlX3N5c3Jvb3QsIG5hdGl2ZV9zeXNyb290LCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgZXh0cmFfbGlicGF0aHMgPSAiJXMvbGliOiVzL3Vzci9saWIiICUgXAorICAgICAgICAgICAgICAgICAgICAgICAgIChuYXRpdmVfc3lzcm9vdCwgbmF0aXZlX3N5c3Jvb3QpCiAgICAgICAgIG5lbnYgPSBkaWN0KG9wdGlvbnMuZ2V0KCdlbnYnLCBvcy5lbnZpcm9uKSkKICAgICAgICAgbmVudlsnUEFUSCddID0gZXh0cmFfcGF0aHMgKyAnOicgKyBuZW52LmdldCgnUEFUSCcsICcnKQorICAgICAgICBuZW52WydMRF9MSUJSQVJZX1BBVEgnXSA9IGV4dHJhX2xpYnBhdGhzICsgJzonICsgbmVudi5nZXQoJ0xEX0xJQlJBUllfUEFUSCcsICcnKQogICAgICAgICBvcHRpb25zWydlbnYnXSA9IG5lbnYKIAogICAgIGNtZCA9IENvbW1hbmQoY29tbWFuZCwgdGltZW91dD10aW1lb3V0LCBvdXRwdXRfbG9nPW91dHB1dF9sb2csICoqb3B0aW9ucykKQEAgLTMzNyw3ICszNDAsNyBAQAogICAgICAgICBxZW11LmRlcGxveSgpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHFlbXUuc3RhcnQocGFyYW1zPXFlbXVwYXJhbXMsIHNzaD1zc2gsIHJ1bnFlbXVwYXJhbXM9cnVucWVtdXBhcmFtcywgbGF1bmNoX2NtZD1sYXVuY2hfY21kLCBkaXNjYXJkX3dyaXRlcz1kaXNjYXJkX3dyaXRlcykKLSAgICAgICAgZXhjZXB0IEVYY2VwdGlvbiBhcyBlOgorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICBtc2cgPSBzdHIoZSkgKyAnXG5GYWlsZWQgdG8gc3RhcnQgUUVNVSAtIHNlZSB0aGUgbG9ncyBpbiAlcycgJSBsb2dkaXIKICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHFlbXUucWVtdXJ1bm5lcmxvZyk6CiAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHFlbXUucWVtdXJ1bm5lcmxvZywgJ3InKSBhcyBmOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL25ldHdvcmsucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbmV0d29yay5weQppbmRleCA1OWNiYmM0Li41OWQwMTcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbmV0d29yay5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbmV0d29yay5weQpAQCAtNCw4ICs0LDggQEAKIAogaW1wb3J0IHNvY2tldAogCi1kZWYgZ2V0X2ZyZWVfcG9ydCgpOgotICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCitkZWYgZ2V0X2ZyZWVfcG9ydCh1ZHAgPSBGYWxzZSk6CisgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSBpZiBub3QgdWRwIGVsc2Ugc29ja2V0LlNPQ0tfREdSQU0pCiAgICAgcy5iaW5kKCgnJywgMCkpCiAgICAgYWRkciA9IHMuZ2V0c29ja25hbWUoKQogICAgIHMuY2xvc2UoKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL25mcy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9uZnMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM3Njg2YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9uZnMucHkKQEAgLTAsMCArMSwzOSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IGNvbnRleHRsaWIKK2ltcG9ydCBzb2NrZXQKK2Zyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgYml0YmFrZSwgZ2V0X2JiX3ZhciwgQ29tbWFuZAorZnJvbSBvZXFhLnV0aWxzLm5ldHdvcmsgaW1wb3J0IGdldF9mcmVlX3BvcnQKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiB1bmZzX3NlcnZlcihkaXJlY3RvcnksIGxvZ2dlciA9IE5vbmUpOgorICAgIHVuZnNfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJ1bmZzMy1uYXRpdmUiKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5mc19zeXNyb290LCAidXNyIiwgImJpbiIsICJ1bmZzZCIpKToKKyAgICAgICAgIyBidWlsZCBuYXRpdmUgdG9vbAorICAgICAgICBiaXRiYWtlKCJ1bmZzMy1uYXRpdmUgLWMgYWRkdG9fcmVjaXBlX3N5c3Jvb3QiKQorCisgICAgZXhwb3J0cyA9IE5vbmUKKyAgICBjbWQgPSBOb25lCisgICAgdHJ5OgorICAgICAgICAjIGNyZWF0ZSB0aGUgZXhwb3J0cyBmaWxlCisgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKGRlbGV0ZSA9IEZhbHNlKSBhcyBleHBvcnRzOgorICAgICAgICAgICAgZXhwb3J0cy53cml0ZSgiezB9IChydyxub19yb290X3NxdWFzaCxub19hbGxfc3F1YXNoLGluc2VjdXJlKVxuIi5mb3JtYXQoZGlyZWN0b3J5KS5lbmNvZGUoKSkKKworICAgICAgICAjIGZpbmQgc29tZSBwb3J0cyBmb3IgdGhlIHNlcnZlcgorICAgICAgICBuZnNwb3J0LCBtb3VudHBvcnQgPSBnZXRfZnJlZV9wb3J0KHVkcCA9IFRydWUpLCBnZXRfZnJlZV9wb3J0KHVkcCA9IFRydWUpCisKKyAgICAgICAgbmVudiA9IGRpY3Qob3MuZW52aXJvbikKKyAgICAgICAgbmVudlsnUEFUSCddID0gInswfS9zYmluOnswfS91c3Ivc2Jpbjp7MH0vdXNyL2JpbjoiLmZvcm1hdCh1bmZzX3N5c3Jvb3QpICsgbmVudi5nZXQoJ1BBVEgnLCAnJykKKyAgICAgICAgY21kID0gQ29tbWFuZChbInVuZnNkIiwgIi1kIiwgIi1wIiwgIi1OIiwgIi1lIiwgZXhwb3J0cy5uYW1lLCAiLW4iLCBzdHIobmZzcG9ydCksICItbSIsIHN0cihtb3VudHBvcnQpXSwKKyAgICAgICAgICAgICAgICBiZyA9IFRydWUsIGVudiA9IG5lbnYsIG91dHB1dF9sb2cgPSBsb2dnZXIpCisgICAgICAgIGNtZC5ydW4oKQorICAgICAgICB5aWVsZCBuZnNwb3J0LCBtb3VudHBvcnQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBjbWQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBjbWQuc3RvcCgpCisgICAgICAgIGlmIGV4cG9ydHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAjIGNsZWFuIHVwIGV4cG9ydHMgZmlsZQorICAgICAgICAgICAgb3MudW5saW5rKGV4cG9ydHMubmFtZSkKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaS11aV8wLjcuYmIKaW5kZXggYTc3NjUzYi4uMWM2ZTQ2YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpLXVpXzAuNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGktdWlfMC43LmJiCkBAIC0yMCw3ICsyMCwxMyBAQAogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAJcm0gJHtEfSR7c3lzY29uZmRpcn0gLXJmCi0Jcm0gJHtEfSR7YmFzZV9saWJkaXJ9IC1yZgorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgICAgICAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX2xpYmRpcn0iIF07dGhlbgorICAgICAgICAgICAgICAgICAgIHJtICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1yZgorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgZWxzZQorCQlybSAke0R9JHtiYXNlX2xpYmRpcn0gLXJmCisgICAgICAgIGZpCiAJcm0gJHtEfSR7c3lzdGVtZF91bml0ZGlyfSAtcmYKIAkjIFRoZSAke3N5c3RlbWRfdW5pdGRpcn0gaXMgL2xpYi9zeXN0ZW1kLCBzbyB3ZSBuZWVkIHJtZGlyIC9saWIsCiAJIyBidXQgbm90ICR7YmFzZV9saWJkaXJ9IGhlcmUuIEFuZCB0aGUgL2xpYiBtYXkgbm90IGV4aXN0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1GaXgtb3BlbmluZy1ldGMtcmVzb2x2LmNvbmYtZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvZmlsZXMvMDAwMS1GaXgtb3BlbmluZy1ldGMtcmVzb2x2LmNvbmYtZXJyb3IucGF0Y2gKaW5kZXggMTFlN2U4YS4uY2I4YjgzZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2ZpbGVzLzAwMDEtRml4LW9wZW5pbmctZXRjLXJlc29sdi5jb25mLWVycm9yLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9maWxlcy8wMDAxLUZpeC1vcGVuaW5nLWV0Yy1yZXNvbHYuY29uZi1lcnJvci5wYXRjaApAQCAtMTksNiArMTksMTEgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKworV2hlbiBjb25ubWFuIGluc3RhbGxlZCB0byBpbWFnZSwgL2V0Yy9yZXNvbHYuY29uZiBpcyBsaW5rIHRvCisvZXRjL3Jlc29sdi1jb25mLmNvbm5tYW4uIFNvIGxhdW5jaCBhdmFoaS1kYWVtb24gYWZ0ZXIgY29ubm1hbiB0b28uCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgogLS0tCiAgYXZhaGktZGFlbW9uL2F2YWhpLWRhZW1vbi5zZXJ2aWNlLmluIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCkBAIC0zMSw3ICszNiw3IEBACiAgW1VuaXRdCiAgRGVzY3JpcHRpb249QXZhaGkgbUROUy9ETlMtU0QgU3RhY2sKICBSZXF1aXJlcz1hdmFoaS1kYWVtb24uc29ja2V0Ci0rQWZ0ZXI9c3lzdGVtZC1yZXNvbHZlZC5zZXJ2aWNlCisrQWZ0ZXI9c3lzdGVtZC1yZXNvbHZlZC5zZXJ2aWNlIGNvbm5tYW4uc2VydmljZQogIAogIFtTZXJ2aWNlXQogIFR5cGU9ZGJ1cwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjUtUDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNS1QNC5iYgppbmRleCA5M2M0MDZmLi42OWIxMTc0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNS1QNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNS1QNC5iYgpAQCAtMzksNyArMzksNyBAQAogUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPS1scmVhZGxpbmUsLHJlYWRsaW5lIgogUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtcmVhZGxpbmU9LWxlZGl0LCxsaWJlZGl0IgogUEFDS0FHRUNPTkZJR1t1cmFuZG9tXSA9ICItLXdpdGgtcmFuZG9tZGV2PS9kZXYvdXJhbmRvbSwtLXdpdGgtcmFuZG9tZGV2PS9kZXYvcmFuZG9tLCwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob249JHtQWVRIT059IC0td2l0aC1weXRob24taW5zdGFsbC1kaXI9JHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSAsIC0td2l0aG91dC1weXRob24sIHB5dGhvbjMtcGx5LW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob249eWVzIC0td2l0aC1weXRob24taW5zdGFsbC1kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLCAtLXdpdGhvdXQtcHl0aG9uLCBweXRob24zLXBseS1uYXRpdmUsIgogCiBFTkFCTEVfSVBWNiA9ICItLWVuYWJsZS1pcHY2PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsICd5ZXMnLCAnbm8nLCBkKX0iCiBFWFRSQV9PRUNPTkYgPSAiICR7RU5BQkxFX0lQVjZ9IC0td2l0aC1saWJ0b29sIC0tZW5hYmxlLXRocmVhZHMgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCmluZGV4IGJmZmQxNzQuLjZjNzllZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKQEAgLTU3LDYgKzU3LDcgQEAKICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1GaXgtYS1yYWNlLWlzc3VlLWZvci10b29scy5wYXRjaCBcCiAgICAgZmlsZTovL0NWRS0yMDE4LTEwOTEwLnBhdGNoIFwKICAgICBmaWxlOi8vZ2NjOS1maXhlcy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2ggXAogIgogUyA9ICIke1dPUktESVJ9L2JsdWV6LSR7UFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLUZpeC1idWlsZC1hZnRlci15MjAzOC1jaGFuZ2VzLWluLWdsaWJjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2EyMGFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1GaXgtYnVpbGQtYWZ0ZXIteTIwMzgtY2hhbmdlcy1pbi1nbGliYy5wYXRjaApAQCAtMCwwICsxLDY4IEBACitGcm9tIGYzNmY3MWY2MGIxZTY4YzBmMTJlNjE1YjliMTI4ZDA4OWVjM2RkMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+CitEYXRlOiBGcmksIDcgSnVuIDIwMTkgMDk6NTE6MzMgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gdG9vbHM6IEZpeCBidWlsZCBhZnRlciB5MjAzOCBjaGFuZ2VzIGluIGdsaWJjCisKK1RoZSAzMi1iaXQgU0lPQ0dTVEFNUCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgdGhlIGRlcHJlY2F0ZWQgbmFtZQordG8gZml4IHRoZSBidWlsZC4KKworVXBzdHJlYW0tU3RhdHVzOiBiYWNrcG9ydCBjb21taXQgZjM2ZjcxZjYwYjFlNjhjMGYxMmU2MTViOWIxMjhkMDg5ZWMzZGQxOQorCitTaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPgorCistLS0KKyB0b29scy9sMnRlc3QuYyB8IDYgKysrKystCisgdG9vbHMvcmN0ZXN0LmMgfCA2ICsrKysrLQorIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2wydGVzdC5jIGIvdG9vbHMvbDJ0ZXN0LmMKK2luZGV4IGU3NTVhYzg4MS4uZTc4N2MyY2UyIDEwMDY0NAorLS0tIGEvdG9vbHMvbDJ0ZXN0LmMKKysrKyBiL3Rvb2xzL2wydGVzdC5jCitAQCAtNTUsNiArNTUsMTAgQEAKKyAjZGVmaW5lIEJSRURSX0RFRkFVTFRfUFNNCTB4MTAxMQorICNkZWZpbmUgTEVfREVGQVVMVF9QU00JCTB4MDA4MAorIAorKyNpZm5kZWYgU0lPQ0dTVEFNUF9PTEQKKysjZGVmaW5lIFNJT0NHU1RBTVBfT0xEIFNJT0NHU1RBTVAKKysjZW5kaWYKKysKKyAvKiBUZXN0IG1vZGVzICovCisgZW51bSB7CisgCVNFTkQsCitAQCAtOTA3LDcgKzkxMSw3IEBAIHN0YXRpYyB2b2lkIHJlY3ZfbW9kZShpbnQgc2spCisgCQkJaWYgKHRpbWVzdGFtcCkgeworIAkJCQlzdHJ1Y3QgdGltZXZhbCB0djsKKyAKKy0JCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QLCAmdHYpIDwgMCkgeworKwkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVBfT0xELCAmdHYpIDwgMCkgeworIAkJCQkJdGltZXN0YW1wID0gMDsKKyAJCQkJCW1lbXNldCh0cywgMCwgc2l6ZW9mKHRzKSk7CisgCQkJCX0gZWxzZSB7CitkaWZmIC0tZ2l0IGEvdG9vbHMvcmN0ZXN0LmMgYi90b29scy9yY3Rlc3QuYworaW5kZXggOTQ0OTBmNDYyLi5iYzhlZDg3NWQgMTAwNjQ0CistLS0gYS90b29scy9yY3Rlc3QuYworKysrIGIvdG9vbHMvcmN0ZXN0LmMKK0BAIC01MCw2ICs1MCwxMCBAQAorIAorICNpbmNsdWRlICJzcmMvc2hhcmVkL3V0aWwuaCIKKyAKKysjaWZuZGVmIFNJT0NHU1RBTVBfT0xECisrI2RlZmluZSBTSU9DR1NUQU1QX09MRCBTSU9DR1NUQU1QCisrI2VuZGlmCisrCisgLyogVGVzdCBtb2RlcyAqLworIGVudW0geworIAlTRU5ELAorQEAgLTUwNSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCByZWN2X21vZGUoaW50IHNrKQorIAkJCWlmICh0aW1lc3RhbXApIHsKKyAJCQkJc3RydWN0IHRpbWV2YWwgdHY7CisgCistCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUCwgJnR2KSA8IDApIHsKKysJCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QX09MRCwgJnR2KSA8IDApIHsKKyAJCQkJCXRpbWVzdGFtcCA9IDA7CisgCQkJCQltZW1zZXQodHMsIDAsIHNpemVvZih0cykpOworIAkJCQl9IGVsc2UgeworLS0gCisyLjE5LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1Eby1ub3QtcGFzcy1udWxsLXBvaW50ZXItdG8tZnJlZWFkZHJpbmZvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1Eby1ub3QtcGFzcy1udWxsLXBvaW50ZXItdG8tZnJlZWFkZHJpbmZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDRkMWJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRG8tbm90LXBhc3MtbnVsbC1wb2ludGVyLXRvLWZyZWVhZGRyaW5mby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gNGYxMTVmYzMxNDY0NjUwMGY3YjQxNzhkNzI0OGEwMjY1NGM3Y2QxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMwIE5vdiAyMDE4IDE2OjQ3OjU3IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBwYXNzIG51bGwgcG9pbnRlciB0byBmcmVlYWRkcmluZm8oKQotCi1QYXNzaW5nIG51bGwgcG9pbnRlciBhcyBpbnB1dCBwYXJhbWV0ZXIgdG8gZnJlZWFkZHJpbmZvKCkgaXMgdW5kZWZpbmVkCi1iZWhhdmlvdXIsIHNvbWUgbGliY3MgZS5nLiBnbGliYyBtaWdodCBqdXN0IGNhbGwgZnJlZSgpIHdoaWNoIGRvZXMKLWFjY2VwdCBudWxsIHBvaW50ZXIgYnV0IG90aGVyIGxpYmNzIGUuZy4gbXVzbCBtaWdodCBub3QgYW5kIGluc3RlYWQKLWNhdXNlIHRoZSBwcm9ncmFtIHRvIHNlZ2ZhdWx0LiBUaGVyZWZvcmUgZG8gbm90IHJlbHkgb24gdW5kZWZpbmVkCi1iZWhhdmlvdXIgaW5zdGVhZCBtYWtlIGl0IGRldGVybWluaXN0aWMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzdXBwb3J0L2V4cG9ydC9jbGllbnQuYyB8IDMgKystCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogbmZzLXV0aWxzLTIuMy4yL3N1cHBvcnQvZXhwb3J0L2NsaWVudC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4yLm9yaWcvc3VwcG9ydC9leHBvcnQvY2xpZW50LmMKLSsrKyBuZnMtdXRpbHMtMi4zLjIvc3VwcG9ydC9leHBvcnQvY2xpZW50LmMKLUBAIC0zMDksNyArMzA5LDggQEAgY2xpZW50X2xvb2t1cChjaGFyICpobmFtZSwgaW50IGNhbm9uaWNhbAotIAkJaW5pdF9hZGRybGlzdChjbHAsIGFpKTsKLSAKLSBvdXQ6Ci0tCWZyZWVhZGRyaW5mbyhhaSk7Ci0rCWlmIChhaSkKLSsJCWZyZWVhZGRyaW5mbyhhaSk7Ci0gCXJldHVybiBjbHA7Ci0gfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2gKaW5kZXggYWE1NTFlYi4uZmNiMGU5OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoCkBAIC0yMiwyNSArMjIsMjggQEAKIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vbWFyYy5pbmZvLz9sPWxpbnV4LW5mcyZtPTE1NDUwMjc4MDQyMzA1OCZ3PTJdCiAKIFNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSBpdC4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiAtLS0KICBzdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0gfCAgIDIgKy0KLSBzdXBwb3J0L21pc2MvZmlsZS5jICAgICAgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBzdXBwb3J0L21pc2MvbWlzYy5jICAgICAgfCAxMTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzdXBwb3J0L21pc2MvZmlsZS5jICAgICAgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgc3VwcG9ydC9taXNjL21pc2MuYyAgICAgIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIHN1cHBvcnQvbnNtL01ha2VmaWxlLmFtICB8ICAgMiArLQogIDQgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgc3VwcG9ydC9taXNjL2ZpbGUuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzdXBwb3J0L21pc2MvbWlzYy5jCiAKIGRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0gYi9zdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0KLWluZGV4IDg5MzZiMGQuLmQ0YzFmNzYgMTAwNjQ0CitpbmRleCBmOTk5M2UzLi44YjBlOWRiIDEwMDY0NAogLS0tIGEvc3VwcG9ydC9taXNjL01ha2VmaWxlLmFtCiArKysgYi9zdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNiBAQAorQEAgLTEsNyArMSw3IEBACiAgIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCiAgCiAgbm9pbnN0X0xJQlJBUklFUyA9IGxpYm1pc2MuYQotLWxpYm1pc2NfYV9TT1VSQ0VTID0gdGNwd3JhcHBlci5jIGZyb21fbG9jYWwuYyBtb3VudHBvaW50LmMgZmlsZS5jCi0rbGlibWlzY19hX1NPVVJDRVMgPSB0Y3B3cmFwcGVyLmMgZnJvbV9sb2NhbC5jIG1vdW50cG9pbnQuYyBtaXNjLmMKKy1saWJtaXNjX2FfU09VUkNFUyA9IHRjcHdyYXBwZXIuYyBmcm9tX2xvY2FsLmMgbW91bnRwb2ludC5jIGZpbGUuYyBcCisrbGlibWlzY19hX1NPVVJDRVMgPSB0Y3B3cmFwcGVyLmMgZnJvbV9sb2NhbC5jIG1vdW50cG9pbnQuYyBtaXNjLmMgXAorIAkJICAgIG5mc2RfcGF0aC5jIHdvcmtxdWV1ZS5jIHhzdGF0LmMKICAKICBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlLmluCiBkaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL2ZpbGUuYyBiL3N1cHBvcnQvbWlzYy9maWxlLmMKQEAgLTI5MCw2ICsyOTMsMyBAQAogIAogIEJVSUxUX1NPVVJDRVMgPSAkKEdFTkZJTEVTKQogIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLXVwZGF0ZS10aGUtcGF0aC1vZi1saWJuZnMuYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tdXBkYXRlLXRoZS1wYXRoLW9mLWxpYm5mcy5hLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDZhYzBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tdXBkYXRlLXRoZS1wYXRoLW9mLWxpYm5mcy5hLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBmY2VjZTY1ZDFiNzEzZWFlZWY0MTcwNjg5ODQ0MDMwMmY4Y2U5MmQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZ2xpIFl1IDxNaW5nbGkuWXVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTIgSnVsIDIwMTggMTU6MTk6NDEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IHVwZGF0ZSB0aGUgcGF0aCBvZiBsaWJuZnMuYQotCi1UaGUgbGlibmZzLmEgaXMgdW5kZXIgLi4vc3VwcG9ydC9uZnMvLmxpYnMvIG5vdywKLXVwZGF0ZSB0aGUgcmVmZXJlbmNlIHBhdGggYWNjb3JkaW5nbHkgdG8gZml4IGJlbG93Ci1idWlsZCBlcnJvciB3aGVuIHJ1biAibWFrZSAtQyB0ZXN0cyBzdGF0ZGJfZHVtcCI6Ci18IG1ha2U6ICoqKiBObyBydWxlIHRvIG1ha2UgdGFyZ2V0ICcuLi9zdXBwb3J0L25mcy9saWJuZnMuYScsIG5lZWRlZCBieSAnc3RhdGRiX2R1bXAnLiAgU3RvcC4KLQotQW5kIGJlbG93IGVycm9yIHdoZW4gcnVuICJtYWtlIC1DIHRlc3RzL25zbV9jbGllbnQgbnNtX2NsaWVudCIKLXwgbWFrZTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJy4uLy4uL3N1cHBvcnQvbmZzL2xpYm5mcy5hJywgbmVlZGVkIGJ5ICduc21fY2xpZW50Jy4gIFN0b3AuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vbWFyYy5pbmZvLz9sPWxpbnV4LW5mcyZtPTE1NDUwMjYzNjUyMjc0NSZ3PTJdCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgIHwgMiArLQotIHRlc3RzL25zbV9jbGllbnQvTWFrZWZpbGUuYW0gfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAxZjk2MjY0Li43NGFhNjI5IDEwMDY0NAotLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMyw3ICszLDcgQEAKLSBjaGVja19QUk9HUkFNUyA9IHN0YXRkYl9kdW1wCi0gc3RhdGRiX2R1bXBfU09VUkNFUyA9IHN0YXRkYl9kdW1wLmMKLSAKLS1zdGF0ZGJfZHVtcF9MREFERCA9IC4uL3N1cHBvcnQvbmZzL2xpYm5mcy5hIFwKLStzdGF0ZGJfZHVtcF9MREFERCA9IC4uL3N1cHBvcnQvbmZzLy5saWJzL2xpYm5mcy5hIFwKLSAJCSAgICAuLi9zdXBwb3J0L25zbS9saWJuc20uYSAkKExJQkNBUCkKLSAKLSBTVUJESVJTID0gbnNtX2NsaWVudAotZGlmZiAtLWdpdCBhL3Rlc3RzL25zbV9jbGllbnQvTWFrZWZpbGUuYW0gYi90ZXN0cy9uc21fY2xpZW50L01ha2VmaWxlLmFtCi1pbmRleCBhOGZjMTMxLi40M2RiOWMyIDEwMDY0NAotLS0tIGEvdGVzdHMvbnNtX2NsaWVudC9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvbnNtX2NsaWVudC9NYWtlZmlsZS5hbQotQEAgLTEzLDcgKzEzLDcgQEAgY2hlY2tfUFJPR1JBTVMJPSBuc21fY2xpZW50Ci0gbnNtX2NsaWVudF9TT1VSQ0VTID0gJChHRU5GSUxFUykgbnNtX2NsaWVudC5jCi0gCi0gQlVJTFRfU09VUkNFUyA9ICQoR0VORklMRVMpCi0tbnNtX2NsaWVudF9MREFERCA9IC4uLy4uL3N1cHBvcnQvbmZzL2xpYm5mcy5hIFwKLStuc21fY2xpZW50X0xEQUREID0gLi4vLi4vc3VwcG9ydC9uZnMvLmxpYnMvbGlibmZzLmEgXAotIAkJICAgLi4vLi4vc3VwcG9ydC9uc20vbGlibnNtLmEgJChMSUJDQVApICQoTElCVElSUEMpCi0gCi0gaWYgQ09ORklHX1JQQ0dFTgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoCmluZGV4IDE3YWFiYjkuLmQxNGYwNzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoCkBAIC0yNiwxOCArMjYsMTUgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggZTgyZmYxNC4uZDBjYzVkNSAxMDA2NDQKK2luZGV4IDUwMDAyYjQuLmFlYmZmMDEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU0OCw3ICs1NDgsNyBAQCBteV9hbV9jZmxhZ3M9IlwKK0BAIC01ODIsNyArNTgyLDcgQEAgbXlfYW1fY2ZsYWdzPSJcCiAgIC1XYWxsIFwKICAgLVdleHRyYSBcCi0gIC1XZXJyb3I9c3RyaWN0LXByb3RvdHlwZXMgXAorICAkcnBjZ2VuX2NmbGFncyBcCiAtIC1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzIFwKICsgLVdtaXNzaW5nLXByb3RvdHlwZXMgXAogICAtV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zIFwKICAgLVdlcnJvcj1mb3JtYXQ9MiBcCiAgIC1XZXJyb3I9dW5kZWYgXAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCmluZGV4IDgyMjkzOWYuLmYxM2Q3YjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2J1Z2ZpeC1hZGp1c3Qtc3RhdGQtc2VydmljZS1uYW1lLnBhdGNoCkBAIC0xMiwyMCArMTIsMjggQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb3RoZXJdCiAKIFNpZ25lZC1vZmYtYnk6IFVscmljaCDDlmxtYW5uIDx1Lm9lbG1hbm5AcGVuZ3V0cm9uaXguZGU+Ci0tLS0KLSB1dGlscy9zdGF0ZC9zdGFydC1zdGF0ZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IG5mcy11dGlscy0yLjEuMS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjEuMS5vcmlnL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCi0rKysgbmZzLXV0aWxzLTIuMS4xL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkCi1AQCAtMjgsNyArMjgsNyBAQCBmaQorUmViYXNlIGl0LgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHV0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3V0aWxzL3N0YXRkL3N0YXJ0LXN0YXRkIGIvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKK2luZGV4IGFmNWM5NTAuLmRmOWI5YmUgMTAwNzU1CistLS0gYS91dGlscy9zdGF0ZC9zdGFydC1zdGF0ZAorKysrIGIvdXRpbHMvc3RhdGQvc3RhcnQtc3RhdGQKK0BAIC0yOCwxMCArMjgsMTAgQEAgZmkKICAjIEZpcnN0IHRyeSBzeXN0ZW1kIGlmIGl0J3MgaW5zdGFsbGVkLgogIGlmIFsgLWQgL3J1bi9zeXN0ZW1kL3N5c3RlbSBdOyB0aGVuCiAgICAgICMgUXVpdCBvbmx5IGlmIHRoZSBjYWxsIHdvcmtlZC4KLS0gICAgc3lzdGVtY3RsIHN0YXJ0IHJwYy1zdGF0ZC5zZXJ2aWNlICYmIGV4aXQKLSsgICAgc3lzdGVtY3RsIHN0YXJ0IG5mcy1zdGF0ZC5zZXJ2aWNlICYmIGV4aXQKKy0gICAgaWYgc3lzdGVtY3RsIHN0YXJ0IHJwYy1zdGF0ZC5zZXJ2aWNlOyB0aGVuCisrICAgIGlmIHN5c3RlbWN0bCBzdGFydCBuZnMtc3RhdGQuc2VydmljZTsgdGhlbgorICAgICAgICAgIyBFbnN1cmUgc3lzdGVtZCBrbm93cyBub3QgdG8gc3RvcCBycGMuc3RhdGQgb3IgaXRzIGRlcGVuZGVuY2llcworICAgICAgICAgIyBvbiAnc3lzdGVtY3RsIGlzb2xhdGUgLi4nCistICAgICAgICBzeXN0ZW1jdGwgYWRkLXdhbnRzIC0tcnVudGltZSByZW1vdGUtZnMudGFyZ2V0IHJwYy1zdGF0ZC5zZXJ2aWNlCisrICAgICAgICBzeXN0ZW1jdGwgYWRkLXdhbnRzIC0tcnVudGltZSByZW1vdGUtZnMudGFyZ2V0IG5mcy1zdGF0ZC5zZXJ2aWNlCisgICAgICAgICBleGl0IDAKKyAgICAgZmkKICBmaQotIAotIGNkIC8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLWxpbWl0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLWxpbWl0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVjYTQxNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1saW1pdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotRml4ZWQ6Ci18IGZpbGUuYzogSW4gZnVuY3Rpb24gJ2dlbmVyaWNfbWFrZV9wYXRobmFtZSc6Ci18IGZpbGUuYzo0ODoxMzogZXJyb3I6ICdQQVRIX01BWCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1JBTkRfTUFYJz8KLXwgICBpZiAoc2l6ZSA+IFBBVEhfTUFYKQotfCAgICAgICAgICAgICAgXn5+fn5+fn4KLVtzbmlwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2h0dHBzOi8vZ2l0LmFscGluZWxpbnV4Lm9yZy9jZ2l0L2Fwb3J0cy90cmVlL21haW4vbmZzLXV0aWxzL2xpbWl0cy5wYXRjaD9pZD1mNjczNGE3N2QzY2FlZTczMzI1ZjhjYzFmNzdkMWI1MTE3YTc1MDk2XQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHN1cHBvcnQvZXhwb3J0L2V4cG9ydC5jICAgICAgICAgIHwgMSArCi0gc3VwcG9ydC9leHBvcnQveHRhYi5jICAgICAgICAgICAgfCAxICsKLSBzdXBwb3J0L21pc2MvZmlsZS5jICAgICAgICAgICAgICB8IDEgKwotIHN1cHBvcnQvbmZzL3hjb21tb24uYyAgICAgICAgICAgIHwgMSArCi0gc3VwcG9ydC9uc20vZmlsZS5jICAgICAgICAgICAgICAgfCAxICsKLSB1dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYyB8IDEgKwotIHV0aWxzL2dzc2Qva3JiNV91dGlsLmMgICAgICAgICAgIHwgMSArCi0gdXRpbHMvbW91bnRkL2NhY2hlLmMgICAgICAgICAgICAgfCAxICsKLSB1dGlscy9tb3VudGQvbW91bnRkLmMgICAgICAgICAgICB8IDEgKwotIHV0aWxzL21vdW50ZC9ybXRhYi5jICAgICAgICAgICAgIHwgMSArCi0gMTAgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMgYi9zdXBwb3J0L2V4cG9ydC9leHBvcnQuYwotLS0tIGEvc3VwcG9ydC9leHBvcnQvZXhwb3J0LmMKLSsrKyBiL3N1cHBvcnQvZXhwb3J0L2V4cG9ydC5jCi1AQCAtMTcsNiArMTcsNyBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlICJ4bWFsbG9jLmgiCi0gI2luY2x1ZGUgIm5mc2xpYi5oIgotICNpbmNsdWRlICJleHBvcnRmcy5oIgotZGlmZiAtLWdpdCBhL3N1cHBvcnQvZXhwb3J0L3h0YWIuYyBiL3N1cHBvcnQvZXhwb3J0L3h0YWIuYwotLS0tIGEvc3VwcG9ydC9leHBvcnQveHRhYi5jCi0rKysgYi9zdXBwb3J0L2V4cG9ydC94dGFiLmMKLUBAIC0xOCw2ICsxOCw3IEBACi0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGxpYmdlbi5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAibmZzbGliLmgiCi0gI2luY2x1ZGUgImV4cG9ydGZzLmgiCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL2ZpbGUuYyBiL3N1cHBvcnQvbWlzYy9maWxlLmMKLS0tLSBhL3N1cHBvcnQvbWlzYy9maWxlLmMKLSsrKyBiL3N1cHBvcnQvbWlzYy9maWxlLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkYm9vbC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAieGxvZy5oIgotICNpbmNsdWRlICJtaXNjLmgiCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9uZnMveGNvbW1vbi5jIGIvc3VwcG9ydC9uZnMveGNvbW1vbi5jCi0tLS0gYS9zdXBwb3J0L25mcy94Y29tbW9uLmMKLSsrKyBiL3N1cHBvcnQvbmZzL3hjb21tb24uYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAieGNvbW1vbi5oIgotICNpbmNsdWRlICJubHMuaCIJLyogXygpICovCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9uc20vZmlsZS5jIGIvc3VwcG9ydC9uc20vZmlsZS5jCi0tLS0gYS9zdXBwb3J0L25zbS9maWxlLmMKLSsrKyBiL3N1cHBvcnQvbnNtL2ZpbGUuYwotQEAgLTg1LDYgKzg1LDcgQEAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8ZGlyZW50Lmg+Ci0gI2luY2x1ZGUgPGdycC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAieGxvZy5oIgotICNpbmNsdWRlICJuc20uaCIKLWRpZmYgLS1naXQgYS91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYyBiL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jCi0tLS0gYS91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotKysrIGIvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKLUBAIC00OSw2ICs0OSw3IEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxsaWJnZW4uaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPGxpYmRldm1hcHBlci5oPgotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi1kaWZmIC0tZ2l0IGEvdXRpbHMvZ3NzZC9rcmI1X3V0aWwuYyBiL3V0aWxzL2dzc2Qva3JiNV91dGlsLmMKLS0tLSBhL3V0aWxzL2dzc2Qva3JiNV91dGlsLmMKLSsrKyBiL3V0aWxzL2dzc2Qva3JiNV91dGlsLmMKLUBAIC0xMjAsNiArMTIwLDcgQEAKLSAjZW5kaWYKLSAjaW5jbHVkZSA8a3JiNS5oPgotICNpbmNsdWRlIDxycGMvYXV0aF9nc3MuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgImdzc2QuaCIKLSAjaW5jbHVkZSAiZXJyX3V0aWwuaCIKLWRpZmYgLS1naXQgYS91dGlscy9tb3VudGQvY2FjaGUuYyBiL3V0aWxzL21vdW50ZC9jYWNoZS5jCi0tLS0gYS91dGlscy9tb3VudGQvY2FjaGUuYwotKysrIGIvdXRpbHMvbW91bnRkL2NhY2hlLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgPHB3ZC5oPgotICNpbmNsdWRlIDxncnAuaD4KLSAjaW5jbHVkZSA8bW50ZW50Lmg+Ci0rI2luY2x1ZGUgPGxpbWl0cy5oPgotICNpbmNsdWRlICJtaXNjLmgiCi0gI2luY2x1ZGUgIm5mc2xpYi5oIgotICNpbmNsdWRlICJleHBvcnRmcy5oIgotZGlmZiAtLWdpdCBhL3V0aWxzL21vdW50ZC9tb3VudGQuYyBiL3V0aWxzL21vdW50ZC9tb3VudGQuYwotLS0tIGEvdXRpbHMvbW91bnRkL21vdW50ZC5jCi0rKysgYi91dGlscy9tb3VudGQvbW91bnRkLmMKLUBAIC0yMiw2ICsyMiw3IEBACi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPHN5cy9yZXNvdXJjZS5oPgotICNpbmNsdWRlIDxzeXMvd2FpdC5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAKLSAjaW5jbHVkZSAiY29uZmZpbGUuaCIKLSAjaW5jbHVkZSAieG1hbGxvYy5oIgotZGlmZiAtLWdpdCBhL3V0aWxzL21vdW50ZC9ybXRhYi5jIGIvdXRpbHMvbW91bnRkL3JtdGFiLmMKLS0tLSBhL3V0aWxzL21vdW50ZC9ybXRhYi5jCi0rKysgYi91dGlscy9tb3VudGQvcm10YWIuYwotQEAgLTE2LDYgKzE2LDcgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSAjaW5jbHVkZSA8bmV0ZGIuaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gCi0gI2luY2x1ZGUgIm1pc2MuaCIKLSAjaW5jbHVkZSAiZXhwb3J0ZnMuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaAppbmRleCAyMjAwMmZhLi45MjFmNWVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvbmZzLXV0aWxzLW11c2wtcmVzX3F1ZXJ5ZG9tYWluLnBhdGNoCkBAIC0xMSwzMCArMTEsMTkgQEAKIFNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgogCiAtLS0KLSBjb25maWd1cmUuYWMgfCAxMyArKysrKystLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKyBjb25maWd1cmUuYWMgfCA5ICsrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDI3NmRlYzMuLjc2MDIzOGIgMTAwNjQ0CitpbmRleCA1MDAwMmI0Li5kY2FkYjIzIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC00MDgsNyArNDA4LDcgQEAgaWYgdGVzdCAiJGVuYWJsZV9nc3MiID0geWVzOyB0aGVuCi0gZmkKLSAKLSBkbmwgbGliZG5zaWRtYXAgc3BlY2lmaWMgY2hlY2tzCi0tQUNfQ0hFQ0tfTElCKFtyZXNvbHZdLCBbX19yZXNfcXVlcnlkb21haW5dLCAsIEFDX01TR19FUlJPUihyZXNfcXVlcnlkb21haW4gbmVlZGVkKSkKLStBQ19DSEVDS19MSUIoW3Jlc29sdl0sIFtyZXNfcXVlcnlkb21haW5dLCAsIEFDX01TR19FUlJPUihyZXNfcXVlcnlkb21haW4gbmVlZGVkKSkKLSAKLSBBQ19BUkdfRU5BQkxFKFtsZGFwXSwKLSAJW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGRhcF0sW0Rpc2FibGUgc3VwcG9ydCBmb3IgTERBUCBAPDpkZWZhdWx0PWRldGVjdEA6PkBdKV0pCi1AQCAtNTQ3LDExICs1NDcsMTEgQEAgbXlfYW1fY2ZsYWdzPSJcCi0gIC1waXBlIFwKK0BAIC01ODIsMTAgKzU4MiwxMCBAQCBteV9hbV9jZmxhZ3M9IlwKICAgLVdhbGwgXAogICAtV2V4dHJhIFwKLS0gLVdlcnJvcj1zdHJpY3QtcHJvdG90eXBlcyBcCisgICRycGNnZW5fY2ZsYWdzIFwKIC0gLVdlcnJvcj1taXNzaW5nLXByb3RvdHlwZXMgXAogLSAtV2Vycm9yPW1pc3NpbmctZGVjbGFyYXRpb25zIFwKLSsgLVdzdHJpY3QtcHJvdG90eXBlcyBcCiArIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKICsgLVdtaXNzaW5nLWRlY2xhcmF0aW9ucyBcCiAgIC1XZXJyb3I9Zm9ybWF0PTIgXApAQCAtNDMsNyArMzIsNyBAQAogICAtV2Vycm9yPW1pc3NpbmctaW5jbHVkZS1kaXJzIFwKICAgLVdlcnJvcj1zdHJpY3QtYWxpYXNpbmc9MiBcCiAgIC1XZXJyb3I9aW5pdC1zZWxmIFwKLUBAIC01NzksMTAgKzU3OSw5IEBAIEFDX0RFRlVOKFtDSEVDS19DQ1NVUFBPUlRdLCBbCitAQCAtNjE0LDEwICs2MTQsOSBAQCBBQ19ERUZVTihbQ0hFQ0tfQ0NTVVBQT1JUXSwgWwogIAogIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1mb3JtYXQtb3ZlcmZsb3c9Ml0sIFtmbGcxXSkKICBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9aW50LWNvbnZlcnNpb25dLCBbZmxnMl0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4xLmJiCnNpbWlsYXJpdHkgaW5kZXggOTIlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuMy4zLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMS5iYgppbmRleCAyOGY5ODk4Li44YjY3M2M4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjMuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMS5iYgpAQCAtMjgsMTkgKzI4LDE2IEBACiAgICAgICAgICAgIGZpbGU6Ly9wcm9jLWZzLW5mc2QubW91bnQgXAogICAgICAgICAgICBmaWxlOi8vbmZzLXV0aWxzLWRlYmlhbml6ZS1zdGFydC1zdGF0ZC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9idWdmaXgtYWRqdXN0LXN0YXRkLXNlcnZpY2UtbmFtZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtdXRpbHMtbXVzbC1saW1pdHMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWNoZWlvLXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLUlPLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXBhc3MtbnVsbC1wb2ludGVyLXRvLWZyZWVhZGRyaW5mby5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9jbGFuZy1mb3JtYXQtc3RyaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tdXBkYXRlLXRoZS1wYXRoLW9mLWxpYm5mcy5hLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1idWlsZC10b29scy13aXRoLUNDX0ZPUl9CVUlMRC5wYXRjaCBcCiAiCiBTUkNfVVJJX2FwcGVuZF9saWJjLWdsaWJjID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2giCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2giCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJiNmM5YzAzMjk5NWFmMWMwOGZlYTlmYmNjMWNlMzNlOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjhiMzQ3OTM4MzFiMDVmMWZkNTc2MGQ2YmRlYzkyNzcyYzc2ODQxNzc1ODZhOTlhNjFlN2I0NDRmMzM2MzIyIgorU1JDX1VSSVttZDVzdW1dID0gIjE2MWVmZTQ2OWVjMWIwNmYxYzc1MGJkODdmOGJhNmRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1Mjc0YWRhOTQ0NzliMWJlYmE5ZjhlZWZmZDE5ZjQ3N2M1M2E2NzEwYjk5OThkMTE5MmM4MDc4NTQwODc3MzYiCiAKICMgT25seSBrZXJuZWwtbW9kdWxlLW5mc2QgaXMgcmVxdWlyZWQgaGVyZSAoYnV0IGNhbiBiZSBidWlsdC1pbikgIC0gdGhlIG5mc2QgbW9kdWxlIHdpbGwKICMgcHVsbCBpbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMuCkBAIC0xMDgsOSArMTA1LDYgQEAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgICAgICBzZWQgLWkgLWUgJ3Msc2JpbmRpciA9IC9zYmluLHNiaW5kaXIgPSAke2Jhc2Vfc2JpbmRpcn0sZycgXAogICAgICAgICAgICAgJHtTfS91dGlscy9tb3VudC9NYWtlZmlsZS5hbQotCi0gICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAke1N9L3V0aWxzL29zZF9sb2dpbi9NYWtlZmlsZS5hbQogfQogCiAjIE1ha2UgY2xlYW4gbmVlZGVkIGJlY2F1c2UgdGhlIHBhY2thZ2UgY29tZXMgd2l0aApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXNfMy4wLjE0LmJiCmluZGV4IDRiNDAyN2YuLjJiMWYyMTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzXzMuMC4xNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtZmlsZXMvYmFzZS1maWxlc18zLjAuMTQuYmIKQEAgLTEyOSw3ICsxMjksNiBAQAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NoZWxscyAke0R9JHtzeXNjb25mZGlyfS9zaGVsbHMKIAlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9zaGFyZS9kb3QucHJvZmlsZSAke0R9JHtzeXNjb25mZGlyfS9za2VsLy5wcm9maWxlCiAJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2hhcmUvZG90LmJhc2hyYyAke0R9JHtzeXNjb25mZGlyfS9za2VsLy5iYXNocmMKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uc3N3aXRjaC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKIAlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9ob3N0LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vaG9zdC5jb25mCiAJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbW90ZCAke0R9JHtzeXNjb25mZGlyfS9tb3RkCiAKQEAgLTE0Miw2ICsxNDEsMTAgQEAKIAlmaQogfQogCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLWdsaWJjICgpIHsKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uc3N3aXRjaC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKK30KKwogRElTVFJPX1ZFUlNJT05bdmFyZGVwc2V4Y2x1ZGVdICs9ICJEQVRFIgogZG9faW5zdGFsbF9iYXNlZmlsZXNpc3N1ZSAoKSB7CiAJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9pc3N1ZSogICR7RH0ke3N5c2NvbmZkaXJ9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Ryb3BiZWFyL2Ryb3BiZWFyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIuaW5jCmluZGV4IGRjYmRhNzQuLjcyNjk4ODggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZHJvcGJlYXIvZHJvcGJlYXIuaW5jCkBAIC03MCw4ICs3MCwxMyBAQAogCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Ryb3BiZWFyLmRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9kcm9wYmVhcgogCiAJaW5zdGFsbCAtbSAwNzU1IGRyb3BiZWFybXVsdGkgJHtEfSR7c2JpbmRpcn0vCi0JbG4gLXMgJHtzYmluZGlyfS9kcm9wYmVhcm11bHRpICR7RH0ke2JpbmRpcn0vZGJjbGllbnQKIAorCWZvciBpIGluICR7QklOQ09NTUFORFN9CisJZG8KKwkJIyBzc2ggYW5kIHNjcCBzeW1saW5rcyBhcmUgY3JlYXRlZCBieSB1cGRhdGUtYWx0ZXJuYXRpdmVzCisJCWlmIFsgJGkgPSBzc2ggXSB8fCBbICRpID0gc2NwIF07IHRoZW4gY29udGludWU7IGZpCisJCWxuIC1zICR7c2JpbmRpcn0vZHJvcGJlYXJtdWx0aSAke0R9JHtiaW5kaXJ9LyRpCisJZG9uZQogCWZvciBpIGluICR7U0JJTkNPTU1BTkRTfQogCWRvCiAJCWxuIC1zIC4vZHJvcGJlYXJtdWx0aSAke0R9JHtzYmluZGlyfS8kaQpAQCAtMTAxLDcgKzEwNiw3IEBACiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAiCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzY3Agc3NoIgorQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdCSU5DT01NQU5EUycsICdzY3Agc3NoJywgZCl9IgogCiBBTFRFUk5BVElWRV9UQVJHRVQgPSAiJHtzYmluZGlyfS9kcm9wYmVhcm11bHRpIgogCkBAIC0xMTMsMyArMTE4LDUgQEAKICAgICAgICAgcm0gJHtzeXNjb25mZGlyfS9kcm9wYmVhci9kcm9wYmVhcl9kc3NfaG9zdF9rZXkKICAgZmkKIH0KKworRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjIxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjIuYmIKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMjEuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjIyLmJiCmluZGV4IDQ4N2ZiY2MuLmIzOTQyZmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjIxLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjIyLmJiCkBAIC0xNCw4ICsxNCw4IEBACiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogU1JDX1VSSSA9ICJodHRwczovL21pcnJvcnMuZWRnZS5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImY5NGY4YzgxMmIwNDI2YjBjMzBiNjUxZmE1MTQyZGQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwZGI0ZTMwNTdiYTQxMDM1NjM3MzU0YjZhZjJhYTRjNzRmODM1MDllMGMzZTU2M2Q2ODJkZjlkNzJlYWZmMTciCitTUkNfVVJJW21kNXN1bV0gPSAiYTRlN2Q3NDQwNGYxMWU3MTc3NWI4OWY1M2E4ZjFjMzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2MxZDZkOTk3ZTE3ZGZjYmU0ZWJjZDEzMzFkOWE3YmU1YzY0ZjJmMGEwODEzYmMyMjM3OTBlNTcwZDhkYTJlMyIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgIG1rZGlyIC1wICR7U30vYnVpbGQtYXV4CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42MC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjAuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42MC4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42MC4zLmJiCmluZGV4IDRkNGZlNjQuLmQ4OTNiN2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYwLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjAuMy5iYgpAQCAtOSw4ICs5LDggQEAKIFNFQ1RJT04gPSAibGlicyIKIERFUEVORFMgPSAiZ2xpYi0yLjAiCiAKLVNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImJmNDZkMTIwOGFjMDBkNzhhNDVmYmY2MjFkNDU5MDI1IgotU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYzAyMmYzZDEwZjU1YTViN2MzMTY3NmZiMDAxYjRjYjY0MDFkYjhhYjlmNmU4NDE4YzY5ZGUwMGQwZjI2ODczMiIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImU4ZmQwNDYyYTgyMjY5ZmI0YmJkNmMwN2ExZTdkMGY0IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiZDUwMTgzMDQ2YTRmZjk1NWQ4Y2M3ZTk1MzA2N2NkZmM5NGYxNGRiZmRhMzAyNGJmMzc3ZmYzN2EzMTIxZGNkNSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggZjc5Njg3Ni4uOWIxZTdiNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCkBAIC04OCwxNCArODgsNyBAQAogCQlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mCiAJCXJtIC1mICR7RH0ke2Jhc2Vfc2JpbmRpcn0vbGRjb25maWcKIAkJIyBUaGlzIGRpcmVjdG9yeSB3aWxsIGJlIGVtcHR5IG5vdyBzbyByZW1vdmUgaXQgdG9vLgotCQkjIEJ1dCBjaGVjayB3aGV0aGVyIGl0IGV4aXN0cyBmaXJzdCwgc2luY2UgaXQgd29uJ3QgZm9yIGdsaWJjLWluaXRpYWwuCi0JCWlmIFsgLWQgJHtEfSR7c3lzY29uZmRpcn0gXTsgdGhlbgotCQkJcm1kaXIgJHtEfSR7c3lzY29uZmRpcn0KLQkJZmkKLQlmaQotCi0JaWYgZWNobyAke1BOfXxncmVwIC1xICJnbGliYy1pbml0aWFsIjsgdGhlbgotCQlyZXR1cm4KKwkJcm1kaXIgJHtEfSR7c3lzY29uZmRpcn0KIAlmaQogCiAJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZmE4ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiCkBAIC0wLDAgKzEsNTMgQEAKK3JlcXVpcmUgZ2xpYmNfJHtQVn0uYmIKKworIyBoYW5kbGUgUE4gZGlmZmVyZW5jZXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2dsaWJjOiIKKworIyBzdHJpcCBwcm92aWRlcworUFJPVklERVMgPSAiIgorIyBzZXR1cCBkZXBlbmRzCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIiCisKK0RFUEVORFMgKz0gImdsaWJjLWxvY2FsZSBsaWJnY2MgZ2NjLXJ1bnRpbWUiCisKKyMgcmVtb3ZlIHRoZSBpbml0aWFsIGRlcGVuZHMKK0RFUEVORFNfcmVtb3ZlID0gImxpYmdjYy1pbml0aWFsIgorCitpbmhlcml0IHFlbXUKKworU1JDX1VSSSArPSAiZmlsZTovL2NoZWNrLXRlc3Qtd3JhcHBlciIKKworREVQRU5EUyArPSAiJHtAJ3FlbXUtbmF0aXZlJyBpZiBkLmdldFZhcignVE9PTENIQUlOX1RFU1RfVEFSR0VUJykgPT0gJ3VzZXInIGVsc2UgJyd9IgorCitUT09MQ0hBSU5fVEVTVF9UQVJHRVQgPz89ICJ1c2VyIgorVE9PTENIQUlOX1RFU1RfSE9TVCA/Pz0gImxvY2FsaG9zdCIKK1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA/Pz0gInJvb3QiCitUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlQgPz89ICIyMjIyIgorCitkb19jaGVja1tkaXJzXSArPSAiJHtCfSIKK2RvX2NoZWNrW25vc3RhbXBdID0gIjEiCitkb19jaGVjayAoKSB7CisgICAgY2htb2QgMDc1NSAke1dPUktESVJ9L2NoZWNrLXRlc3Qtd3JhcHBlcgorCisgICAgIyBjbGVhbiBvdXQgcHJldmlvdXMgdGVzdCByZXN1bHRzCisgICAgb2VfcnVubWFrZSB0ZXN0cy1jbGVhbgorICAgICMgbWFrZWZpbGVzIGRvbid0IGNsZWFuIGVudGlyZWx5IChhbmQgYWxzbyBzb21ldGltZXMgZmFpbHMgZHVlIHRvIHRvbyBtYW55IGFyZ3MpCisgICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioub3V0IiAtZGVsZXRlCisgICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioudGVzdC1yZXN1bHQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0vY2F0Z2V0cyAtbmFtZSAiKi5jYXQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0vY29uZm9ybSAtbmFtZSAic3ltbGlzdC0qIiAtZGVsZXRlCisgICAgWyAhIC1lICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEgXSB8fCBybSAtcmYgJHtCfS90aW1lem9uZS90ZXN0ZGF0YQorCisgICAgb2VfcnVubWFrZSAtaSBcCisgICAgICAgIFFFTVVfU1lTUk9PVD0iJHtSRUNJUEVfU1lTUk9PVH0iIFwKKyAgICAgICAgUUVNVV9PUFRJT05TPSIke0BxZW11X3RhcmdldF9iaW5hcnkoZCl9ICR7UUVNVV9PUFRJT05TfSIgXAorICAgICAgICBTU0hfSE9TVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUfSIgXAorICAgICAgICBTU0hfSE9TVF9VU0VSPSIke1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUn0iIFwKKyAgICAgICAgU1NIX0hPU1RfUE9SVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlR9IiBcCisgICAgICAgIHRlc3Qtd3JhcHBlcj0iJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIgJHtUT09MQ0hBSU5fVEVTVF9UQVJHRVR9IiBcCisgICAgICAgIGNoZWNrCit9CithZGR0YXNrIGRvX2NoZWNrIGFmdGVyIGRvX2NvbXBpbGUKKworaW5oZXJpdCBub3BhY2thZ2VzCitkZWx0YXNrIGRvX3N0YXNoX2xvY2FsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9jaGVjay10ZXN0LXdyYXBwZXIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL2NoZWNrLXRlc3Qtd3JhcHBlcgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOGUwNGUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9jaGVjay10ZXN0LXdyYXBwZXIKQEAgLTAsMCArMSw3MSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworaW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgc3VicHJvY2VzcworCitlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorYXJncyA9IHN5cy5hcmd2WzE6XQordGFyZ2V0dHlwZSA9IGFyZ3MucG9wKDApCisKK2lmIHRhcmdldHR5cGUgPT0gInVzZXIiOgorICAgIHFlbXVhcmdzID0gb3MuZW52aXJvbi5nZXQoIlFFTVVfT1BUSU9OUyIsICIiKS5zcGxpdCgpCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHFlbXVhcmdzWzBdKToKKyAgICAgICAgIyBlbnN1cmUgcWVtdSBhcmdzIGhhcyBhIHZhbGlkIGFic29sdXRlIHBhdGgKKyAgICAgICAgZm9yIGkgaW4gb3MuZW52aXJvbi5nZXQoIlBBVEgiLCAiIikuc3BsaXQoIjoiKToKKyAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihpLCBxZW11YXJnc1swXSkpOgorICAgICAgICAgICAgICAgIHFlbXVhcmdzWzBdID0gb3MucGF0aC5qb2luKGksIHFlbXVhcmdzWzBdKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgc3lzcm9vdCA9IG9zLmVudmlyb24uZ2V0KCJRRU1VX1NZU1JPT1QiLCBOb25lKQorICAgIGlmIG5vdCBzeXNyb290OgorICAgICAgICBzeXMuZXhpdCgtMSkKKyAgICBsaWJwYXRocyA9IFtzeXNyb290ICsgIi91c3IvbGliIiwgc3lzcm9vdCArICIvbGliIl0KKworICAgIGlmIGFyZ3NbMF0gPT0gImVudiI6CisgICAgICAgIGFyZ3MucG9wKDApCisgICAgICAgIGlmIGxlbihhcmdzKSA9PSAwOgorICAgICAgICAgICAgYXJncyA9IFsiZW52Il0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgcHJvY2VzcyBvcHRpb25zCisgICAgICAgICAgICB3aGlsZSBhcmdzWzBdLnN0YXJ0c3dpdGgoIi0iKToKKyAgICAgICAgICAgICAgICBvcHQgPSBhcmdzLnBvcCgwKS5sc3RyaXAoIi0iKQorICAgICAgICAgICAgICAgIGlmICJpIiBpbiBvcHQ6CisgICAgICAgICAgICAgICAgICAgIGVudi5jbGVhcigpCisgICAgICAgICAgICAjIHByb2Nlc3MgZW52aXJvbm1lbnQgdmFycworICAgICAgICAgICAgd2hpbGUgIj0iIGluIGFyZ3NbMF06CisgICAgICAgICAgICAgICAga2V5LCB2YWwgPSBhcmdzLnBvcCgwKS5zcGxpdCgiPSIsIDEpCisgICAgICAgICAgICAgICAgaWYga2V5ID09ICJMRF9MSUJSQVJZX1BBVEgiOgorICAgICAgICAgICAgICAgICAgICBsaWJwYXRocyArPSB2YWwuc3BsaXQoIjoiKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGVudltrZXldID0gdmFsCisgICAgaWYgYXJnc1swXSA9PSAiY3AiOgorICAgICAgICAjIGlnbm9yZSBjb3BpZXMsIHRoZSBmaWxlc3lzdGVtIGlzIHRoZSBzYW1lCisgICAgICAgIHN5cy5leGl0KDApCisKKyAgICBxZW11YXJncyArPSBbIi1MIiwgc3lzcm9vdF0KKyAgICBxZW11YXJncyArPSBbIi1FIiwgIkxEX0xJQlJBUllfUEFUSD17fSIuZm9ybWF0KCI6Ii5qb2luKGxpYnBhdGhzKSldCisgICAgY29tbWFuZCA9IHFlbXVhcmdzICsgYXJncworZWxpZiB0YXJnZXR0eXBlID09ICJzc2giOgorICAgIGhvc3QgPSBvcy5lbnZpcm9uLmdldCgiU1NIX0hPU1QiLCBOb25lKQorICAgIHVzZXIgPSBvcy5lbnZpcm9uLmdldCgiU1NIX0hPU1RfVVNFUiIsIE5vbmUpCisgICAgcG9ydCA9IG9zLmVudmlyb24uZ2V0KCJTU0hfSE9TVF9QT1JUIiwgTm9uZSkKKworICAgIGNvbW1hbmQgPSBbInNzaCIsICItbyIsICJVc2VyS25vd25Ib3N0c0ZpbGU9L2Rldi9udWxsIiwgIi1vIiwgIlN0cmljdEhvc3RLZXlDaGVja2luZz1ubyJdCisgICAgaWYgcG9ydDoKKyAgICAgICAgY29tbWFuZCArPSBbIi1wIiwgc3RyKHBvcnQpXQorICAgIGlmIG5vdCBob3N0OgorICAgICAgICBzeXMuZXhpdCgtMSkKKyAgICBjb21tYW5kICs9IFsie31Ae30iLmZvcm1hdCh1c2VyLCBob3N0KSBpZiB1c2VyIGVsc2UgaG9zdF0KKworICAgICMgd3JhcCBhbmQgcmVwbGFjZSBxdW90ZXMgZm9yIGNvcnJlY3QgdHJhbnNmb3JtYXRpb24gb24gc3NoCisgICAgd3JhcHBlZCA9ICIgIi5qb2luKFsiJ3swfSciLmZvcm1hdChpLnJlcGxhY2UoIiciLCByIidcJyciKSkgZm9yIGkgaW4gWyJjZCIsIG9zLmdldGN3ZCgpXV0pICsgIjsgIgorICAgIHdyYXBwZWQgKz0gIiAiLmpvaW4oWyInezB9JyIuZm9ybWF0KGkucmVwbGFjZSgiJyIsIHIiJ1wnJyIpKSBmb3IgaSBpbiBhcmdzXSkKKyAgICBjb21tYW5kICs9IFsic2giLCAiLWMiLCAiXCJ7fVwiIi5mb3JtYXQod3JhcHBlZCldCitlbHNlOgorICAgIHN5cy5leGl0KC0xKQorCit0cnk6CisgICAgciA9IHN1YnByb2Nlc3MucnVuKGNvbW1hbmQsIHRpbWVvdXQgPSAxODAwLCBlbnYgPSBlbnYpCisgICAgc3lzLmV4aXQoci5yZXR1cm5jb2RlKQorZXhjZXB0IHN1YnByb2Nlc3MuVGltZW91dEV4cGlyZWQ6CisgICAgc3lzLmV4aXQoLTEpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCmluZGV4IGU5Y2FjOTguLjNmMWIxYzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgpAQCAtMTEsNiArMTEsOCBAQAogCiBJTUFHRV9GRUFUVVJFUyArPSAieDExLWJhc2UgcGFja2FnZS1tYW5hZ2VtZW50IHNwbGFzaCIKIAorUUJfTUVNID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAib3BlbmdsIiwgIi1tIDUxMiIsICItbSAyNTYiLCBkKX0nCisKICMgRW5zdXJlIHRoZXJlJ3MgZW5vdWdoIHNwYWNlIHRvIGRvIGEgY29yZS1pbWFnZS1zYXRvIGJ1aWxkLCB3aXRoIHJtX3dvcmsgZW5hYmxlZAogSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjQxOTQzMDQwIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRzY3JpcHRzL2luaXRzY3JpcHRzLTEuMC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCmluZGV4IDZmOTY1YTYuLjFjNTI1YjcgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHNjcmlwdHMvaW5pdHNjcmlwdHMtMS4wL3BvcHVsYXRlLXZvbGF0aWxlLnNoCkBAIC04MCw3ICs4MCw3IEBACiBsaW5rX2ZpbGUoKSB7CiAJRVhFQz0iCiAJaWYgWyAtTCBcIiQyXCIgXTsgdGhlbgotCQlbIFwiXCQocmVhZGxpbmsgLWYgXCIkMlwiKVwiICE9IFwiJDFcIiBdICYmIHsgcm0gLWYgXCIkMlwiOyBsbiAtc2YgXCIkMVwiIFwiJDJcIjsgfTsKKwkJWyBcIlwkKHJlYWRsaW5rIFwiJDJcIilcIiAhPSBcIiQxXCIgXSAmJiB7IHJtIC1mIFwiJDJcIjsgbG4gLXNmIFwiJDFcIiBcIiQyXCI7IH07CiAJZWxpZiBbIC1kIFwiJDJcIiBdOyB0aGVuCiAJCWlmIGF3ayAnXCQyID09IFwiJDJcIiB7ZXhpdCAxfScgL3Byb2MvbW91bnRzOyB0aGVuCiAJCQljcCAtYSAkMi8qICQxIDI+L2Rldi9udWxsOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjYuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYgpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjYuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYgppbmRleCA4OTNmNWU3Li4xNzg3ZjY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHRfNC40LjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC44LmJiCkBAIC0zLDE2ICszLDE0IEBACiBIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0IgogU0VDVElPTiA9ICJsaWJzIgogTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNJTkc7bWQ1PWJlMjc1YmM3ZjkxNjQyZWZlNzcwOWE4YWU3YTE0MzNiIFwKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNJTkc7bWQ1PTNiYjY2MTRjZjU4ODBjYmYxYjlkYmQ5ZTNkMTQ1ZTJjIFwKICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAogIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAotUFYgPSAiNC40LjYiCi0KIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZXNzZXI4Mi9saWJ4Y3J5cHQuZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0iCi1TUkNSRVYgPSAiMzk4OTQzNzc0YzVmZjM4YmFmMWJjNWVlMDg4ODU1ZmQ4OTgzYmIwNSIKK1NSQ1JFViA9ICJhY2Q4NDk5N2E1YThiMmJhZGQyOGI3MGE2NDJhYmVlMTEyNzJmYWQyIgogU1JDQlJBTkNIID89ICJkZXZlbG9wIgogCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgpAQCAtMjYsOCArMjQsOCBAQAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogQlVJTERfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfSU5DRElSX05BVElWRX0iCi1UQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IC1Xbm8tZXJyb3I9bWlzc2luZy1hdHRyaWJ1dGVzIgotQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLVduby1lcnJvcj1taXNzaW5nLWF0dHJpYnV0ZXMiCitUQVJHRVRfQ1BQRkxBR1MgPSAiLUkke1NUQUdJTkdfRElSX1RBUkdFVH0ke2luY2x1ZGVkaXJ9IC1Xbm8tZXJyb3IiCitDUFBGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtV25vLWVycm9yIgogCiBBUEkgPSAiLS1kaXNhYmxlLW9ic29sZXRlLWFwaSIKIEVYVFJBX09FQ09ORiArPSAiJHtBUEl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCmluZGV4IDY0YWVlNmMuLjkzNDFiZjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKQEAgLTQsNyArNCw3IEBACiByZXF1aXJlIG11c2wuaW5jCiBpbmhlcml0IGxpbnV4bG9hZGVyCiAKLVNSQ1JFViA9ICIyOWU4NzM3ZjgxY2NjOWZiYWRjZjYxYTc1MzE4YWEzZDA1MTZhYWZhIgorU1JDUkVWID0gIjZhZDUxNGU0ZTI3OGYwYzNiMThlYjJkYjFkNDU2MzhjOWFmMWMwN2YiCiAKIEJBU0VWRVIgPSAiMS4xLjIzIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtYm9vdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCmluZGV4IDNhMmY1MGYuLmFiYmVlMTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1ib290LmJiCkBAIC0xMCwxMiArMTAsNiBAQAogCiBpbmhlcml0IHBhY2thZ2Vncm91cAogCi0jCi0jIFNldCBieSB0aGUgbWFjaGluZSBjb25maWd1cmF0aW9uIHdpdGggcGFja2FnZXMgZXNzZW50aWFsIGZvciBkZXZpY2UgYm9vdHVwCi0jCi1NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SREVQRU5EUyA/PSAiIgotTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgPz0gIiIKLQogIyBEaXN0cm8gY2FuIG92ZXJyaWRlIHRoZSBmb2xsb3dpbmcgVklSVFVBTC1SVU5USU1FIHByb3ZpZGVyczoKIFZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlciA/PSAidWRldiIKIFZJUlRVQUwtUlVOVElNRV9rZXltYXBzID89ICJrZXltYXBzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKaW5kZXggZjIwNmNlZS4uOWIwYWUwZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCkBAIC0zNyw3ICszNyw3IEBACiAgICAgZTJmc3Byb2dzLXR1bmUyZnMgXAogICAgIGhkcGFybSBcCiAgICAgaXB0YWJsZXMgXAotICAgIGxzYiBcCisgICAgbHNiLXJlbGVhc2UgXAogICAgIG1jIFwKICAgICBtYy1maXNoIFwKICAgICBtYy1oZWxwZXJzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5L3NlcmlhbC1nZXR0eUAuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXNlcmlhbGdldHR5L3NlcmlhbC1nZXR0eUAuc2VydmljZQppbmRleCBlOGIwMjdlLi4xNWFmMTZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zZXJpYWxnZXR0eS9zZXJpYWwtZ2V0dHlALnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc2VyaWFsZ2V0dHkvc2VyaWFsLWdldHR5QC5zZXJ2aWNlCkBAIC05LDcgKzksOCBAQAogRGVzY3JpcHRpb249U2VyaWFsIEdldHR5IG9uICVJCiBEb2N1bWVudGF0aW9uPW1hbjphZ2V0dHkoOCkgbWFuOnN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yKDgpCiBEb2N1bWVudGF0aW9uPWh0dHA6Ly8wcG9pbnRlci5kZS9ibG9nL3Byb2plY3RzL3NlcmlhbC1jb25zb2xlLmh0bWwKLUJpbmRzVG89ZGV2LSVpLmRldmljZQorUGFydE9mPWRldi0laS5kZXZpY2UKK0NvbmRpdGlvblBhdGhFeGlzdHM9L2Rldi8laQogQWZ0ZXI9ZGV2LSVpLmRldmljZSBzeXN0ZW1kLXVzZXItc2Vzc2lvbnMuc2VydmljZSBwbHltb3V0aC1xdWl0LXdhaXQuc2VydmljZQogQWZ0ZXI9cmMtbG9jYWwuc2VydmljZQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKaW5kZXggM2EzNTNiMC4uMTkxMjcxNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwpAQCAtMTQsNyArMTQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgogCi1TUkNSRVYgPSAiZGIyZTM2N2JmYzNiMTE5NjA5ZjgzN2ViOTczZDkxNWY2YzU1MGIyZiIKK1NSQ1JFViA9ICJmODc1ZGNlZDMzNDYyNjQxZTFmYjc4NzVkMmY5YThjZDhlOGMyZmNjIgogU1JDQlJBTkNIID0gInYyNDItc3RhYmxlIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1zdGFibGUuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtc2V0LWZzLmZpbGUtbWF4LXN5c2N0bC10by1MT05HX01BWC1yYXRoZXItdGhhbi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWNvcmUtc2V0LWZzLmZpbGUtbWF4LXN5c2N0bC10by1MT05HX01BWC1yYXRoZXItdGhhbi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNjRmNTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1jb3JlLXNldC1mcy5maWxlLW1heC1zeXNjdGwtdG8tTE9OR19NQVgtcmF0aGVyLXRoYW4tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA2ZTJmNzg5NDg0MDNhNGNjZTQ1YjllMzQzMTFjOTU3N2M2MjRmMDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVubmFydCBQb2V0dGVyaW5nIDxsZW5uYXJ0QHBvZXR0ZXJpbmcubmV0PgotRGF0ZTogTW9uLCAxNyBKdW4gMjAxOSAxMDo1MToyNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBjb3JlOiBzZXQgZnMuZmlsZS1tYXggc3lzY3RsIHRvIExPTkdfTUFYIHJhdGhlciB0aGFuCi0gVUxPTkdfTUFYCi0KLVNpbmNlIGtlcm5lbCA1LjIgdGhlIGtlcm5lbCB0aGFua2Z1bGx5IHJldHVybnMgcHJvcGVyIGVycm9ycyB3aGVuIHdlCi13cml0ZSBhIHZhbHVlIG91dCBvZiByYW5nZSB0byB0aGUgc3lzY3RsLiBXaGljaCBob3dldmVyIGJyZWFrcyB3cml0aW5nCi1VTE9OR19NQVggdG8gcmVxdWVzdCB0aGUgbWF4aW11bSB2YWx1ZS4gSGVuY2UgbGV0J3Mgd3JpdGUgdGhlIG5ldwotbWF4aW11bSB2YWx1ZSBpbnN0ZWFkLCBMT05HX01BWC4KLQotL2NjIEBicmF1bmVyCi0KLUZpeGVzOiAjMTI4MDMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBTY2hpZmZlciA8bWF0dGhpYXMuc2NoaWZmZXJAZXcudHEtZ3JvdXAuY29tPgotLS0tCi0gc3JjL2NvcmUvbWFpbi5jIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcmUvbWFpbi5jIGIvc3JjL2NvcmUvbWFpbi5jCi1pbmRleCBiMzNlYTFiNWI1Li5lN2Y1MTgxNWYwIDEwMDY0NAotLS0tIGEvc3JjL2NvcmUvbWFpbi5jCi0rKysgYi9zcmMvY29yZS9tYWluLmMKLUBAIC0xMjQ1LDkgKzEyNDUsOSBAQCBzdGF0aWMgdm9pZCBidW1wX2ZpbGVfbWF4X2FuZF9ucl9vcGVuKHZvaWQpIHsKLSAjZW5kaWYKLSAKLSAjaWYgQlVNUF9QUk9DX1NZU19GU19GSUxFX01BWAotLSAgICAgICAgLyogSSBzbyB3YW50ZWQgdG8gdXNlIFNUUklOR0lGWShVTE9OR19NQVgpIGhlcmUsIGJ1dCBhbGFzIHdlIGNhbid0IGFzIGdsaWJjL2djYyBkZWZpbmUgdGhhdCBhcwotLSAgICAgICAgICogIigweDdmZmZmZmZmZmZmZmZmZmZMICogMlVMICsgMVVMKSIuIFNlcmlvdXNseS4g8J+YoiAqLwotLSAgICAgICAgaWYgKGFzcHJpbnRmKCZ0LCAiJWx1XG4iLCBVTE9OR19NQVgpIDwgMCkgewotKyAgICAgICAgLyogVGhlIG1heGltdW0gdGhlIGtlcm5lbCBhbGxvd3MgZm9yIHRoaXMgc2luY2UgNS4yIGlzIExPTkdfTUFYLCB1c2UgdGhhdC4gKFByZXZpb3VzbHkgdGhpbmcgd2hlcmUKLSsgICAgICAgICAqIGRpZmZlcmVudCBidXQgdGhlIG9wZXJhdGlvbiB3b3VsZCBmYWlsIHNpbGVudGx5LikgKi8KLSsgICAgICAgIGlmIChhc3ByaW50ZigmdCwgIiVsaVxuIiwgTE9OR19NQVgpIDwgMCkgewotICAgICAgICAgICAgICAgICBsb2dfb29tKCk7Ci0gICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbmV0d29ya2QtZml4LWxpbmstdXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW5ldHdvcmtkLWZpeC1saW5rLXVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzdhMGEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtbmV0d29ya2QtZml4LWxpbmstdXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1Gcm9tIDZiZDc2ZDJkNGZmMTMwZGVjZDNhYTEzZTBjMmRiZmQ1NmZmOGQ3YjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTdXNhbnQgU2FoYW5pIDxzc2FoYW5pQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgOSBNYXkgMjAxOSAwNzozNTozNSArMDUzMAotU3ViamVjdDogW1BBVENIXSBuZXR3b3JrZDogZml4IGxpbmtfdXAoKSAoIzEyNTA1KQotCi1GaWxsdXAgSUZMQV9JTkVUNl9BRERSX0dFTl9NT0RFIHdoaWxlIHdlIGRvIGxpbmtfdXAuCi0KLUZpeGVzIHRoZSBmb2xsb3dpbmcgZXJyb3I6Ci1gYGAKLWR1bW15LXRlc3Q6IENvdWxkIG5vdCBicmluZyB1cCBpbnRlcmZhY2U6IEludmFsaWQgYXJndW1lbnQKLWBgYAotCi1BZnRlciByZWFkaW5nIHRoZSBrZXJuZWwgY29kZSB3aGVuIHdlIGRvIGEgbGluayB1cAotYGBgCi1uZXQvY29yZS9ydG5ldGxpbmsuYwotSUZMQV9BRl9TUEVDCi0gYWZfb3BzLT5zZXRfbGlua19hZihkZXYsIGFmKTsKLSAgaW5ldDZfc2V0X2xpbmtfYWYKLSAgIGlmICh0YltJRkxBX0lORVQ2X0FERFJfR0VOX01PREVdKQotICAgICAgICAgICAgIEhlcmUgaXQgbG9va3MgZm9yIElGTEFfSU5FVDZfQUREUl9HRU5fTU9ERQotYGBgCi1TaW5jZSBsaW5rIHVwIHdlIGRpZG4ndCBmaWxsaW5nIHVwIHRoYXQgaXQncyBmYWlsaW5nLgotCi1DbG9zZXMgIzEyNTA0LgotCi1TaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkb0ByaWJhbGRhLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC9jb21taXQvNGViMDg2YTM4NzEyZWE5OGZhZjQxZTA3NWI4NDU1NWIxMWI1NDM2Mi5wYXRjaF0KLQotLS0tCi0gc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIHwgMTUgKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwotaW5kZXggZTQ2NmI5Njc5Mi4uMDQyNDk2MTczYyAxMDA2NDQKLS0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwotKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCi1AQCAtMjAzNCw2ICsyMDM0LDggQEAgc3RhdGljIGludCBsaW5rX3VwKExpbmsgKmxpbmspIHsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIGlmIChsaW5rX2lwdjZfZW5hYmxlZChsaW5rKSkgewotKyAgICAgICAgICAgICAgICB1aW50OF90IGlwdjZsbF9tb2RlOwotKwotICAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX29wZW5fY29udGFpbmVyKHJlcSwgSUZMQV9BRl9TUEVDKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IG9wZW4gSUZMQV9BRl9TUEVDIGNvbnRhaW5lcjogJW0iKTsKLUBAIC0yMDQ5LDYgKzIwNTEsMTkgQEAgc3RhdGljIGludCBsaW5rX3VwKExpbmsgKmxpbmspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IGFwcGVuZCBJRkxBX0lORVQ2X1RPS0VOOiAlbSIpOwotICAgICAgICAgICAgICAgICB9Ci0gCi0rICAgICAgICAgICAgICAgIGlmICghbGlua19pcHY2bGxfZW5hYmxlZChsaW5rKSkKLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHY2bGxfbW9kZSA9IElONl9BRERSX0dFTl9NT0RFX05PTkU7Ci0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN5c2N0bF9yZWFkX2lwX3Byb3BlcnR5KEFGX0lORVQ2LCBsaW5rLT5pZm5hbWUsICJzdGFibGVfc2VjcmV0IiwgTlVMTCkgPCAwKQotKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBmaWxlIG1heSBub3QgZXhpc3QuIEFuZCBldmVudCBpZiBpdCBleGlzdHMsIHdoZW4gc3RhYmxlX3NlY3JldCBpcyB1bnNldCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgKiByZWFkaW5nIHRoZSBmaWxlIGZhaWxzIHdpdGggRUlPLiAqLwotKyAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZsbF9tb2RlID0gSU42X0FERFJfR0VOX01PREVfRVVJNjQ7Ci0rICAgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHY2bGxfbW9kZSA9IElONl9BRERSX0dFTl9NT0RFX1NUQUJMRV9QUklWQUNZOwotKwotKyAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX2FwcGVuZF91OChyZXEsIElGTEFfSU5FVDZfQUREUl9HRU5fTU9ERSwgaXB2NmxsX21vZGUpOwotKyAgICAgICAgICAgICAgICBpZiAociA8IDApCi0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3QgYXBwZW5kIElGTEFfSU5FVDZfQUREUl9HRU5fTU9ERTogJW0iKTsKLSsKLSAgICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9jbG9zZV9jb250YWluZXIocmVxKTsKLSAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfbGlua19lcnJvcl9lcnJubyhsaW5rLCByLCAiQ291bGQgbm90IGNsb3NlIEFGX0lORVQ2IGNvbnRhaW5lcjogJW0iKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcmVzb2x2ZWQtRml4LWluY29ycmVjdC11c2Utb2YtT3BlblNTTC1CVUZfTUVNLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1yZXNvbHZlZC1GaXgtaW5jb3JyZWN0LXVzZS1vZi1PcGVuU1NMLUJVRl9NRU0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYWUxZGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1yZXNvbHZlZC1GaXgtaW5jb3JyZWN0LXVzZS1vZi1PcGVuU1NMLUJVRl9NRU0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDE4YmRkZWFhZjIyNWQ1YmVjZmMxMGNkMmM2YTFkMDM3YzkwNTc0YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUb21hcyBNcmF6IDx0bXJhekBmZWRvcmFwcm9qZWN0Lm9yZz4KLURhdGU6IFR1ZSwgMTEgSnVuIDIwMTkgMTU6MTA6MjEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gcmVzb2x2ZWQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIE9wZW5TU0wgQlVGX01FTQotCi1GaXhlczogIzEyNzYzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtOb3QgeWV0IHJlbGVhc2VkXQotICBodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2NvbW1pdC8xOGJkZGVhYWYyMjVkNWJlY2ZjMTBjZDJjNmExZDAzN2M5MDU3NGEyCi1TaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvcmVzb2x2ZS9yZXNvbHZlZC1kbnN0bHMtb3BlbnNzbC5jIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9yZXNvbHZlL3Jlc29sdmVkLWRuc3Rscy1vcGVuc3NsLmMgYi9zcmMvcmVzb2x2ZS9yZXNvbHZlZC1kbnN0bHMtb3BlbnNzbC5jCi1pbmRleCBmMjY5ZTRkNjQ4N2YuLjVkOTIyMzAwNzU4MSAxMDA2NDQKLS0tLSBhL3NyYy9yZXNvbHZlL3Jlc29sdmVkLWRuc3Rscy1vcGVuc3NsLmMKLSsrKyBiL3NyYy9yZXNvbHZlL3Jlc29sdmVkLWRuc3Rscy1vcGVuc3NsLmMKLUBAIC02LDYgKzYsNyBAQAotIAotICNpbmNsdWRlIDxvcGVuc3NsL2Jpby5oPgotICNpbmNsdWRlIDxvcGVuc3NsL2Vyci5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAjaW5jbHVkZSAiaW8tdXRpbC5oIgotICNpbmNsdWRlICJyZXNvbHZlZC1kbnMtc3RyZWFtLmgiCi1AQCAtMzQsOSArMzUsMTEgQEAgc3RhdGljIGludCBkbnN0bHNfZmx1c2hfd3JpdGVfYnVmZmVyKERuc1N0cmVhbSAqc3RyZWFtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNzOwotICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+ZG5zdGxzX2RhdGEud3JpdGVfYnVmZmVyLT5sZW5ndGggLT0gc3M7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtLT5kbnN0bHNfZGF0YS53cml0ZV9idWZmZXItPmRhdGEgKz0gc3M7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cmVhbS0+ZG5zdGxzX2RhdGEud3JpdGVfYnVmZmVyLT5sZW5ndGggPiAwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKHN0cmVhbS0+ZG5zdGxzX2RhdGEud3JpdGVfYnVmZmVyLT5kYXRhLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmRuc3Rsc19kYXRhLndyaXRlX2J1ZmZlci0+ZGF0YSArIHNzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlYW0tPmRuc3Rsc19kYXRhLndyaXRlX2J1ZmZlci0+bGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS0+ZG5zdGxzX2V2ZW50cyB8PSBFUE9MTE9VVDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUFHQUlOOwotICAgICAgICAgICAgICAgICAgICAgICAgIH0KLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItbmV0d29yay1kby1ub3Qtc2VuZC1pcHY2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1uZXR3b3JrLWRvLW5vdC1zZW5kLWlwdjYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NjUzMTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1uZXR3b3JrLWRvLW5vdC1zZW5kLWlwdjYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1Gcm9tIGI1YzRlYjgxODEwMTEyN2E2MDY4NDllODIyOTM3YjE1Yjg0OTdjNzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZdSBXYXRhbmFiZSA8d2F0YW5hYmUueXUrZ2l0aHViQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgOSBNYXkgMjAxOSAxNDozOTo0NiArMDkwMAotU3ViamVjdDogW1BBVENIXSBuZXR3b3JrOiBkbyBub3Qgc2VuZCBpcHY2IHRva2VuIHRvIGtlcm5lbAotCi1XZSBkaXNhYmxlZCBrZXJuZWwgUkEgc3VwcG9ydC4gVGhlbiwgd2Ugc2hvdWxkIG5vdCBzZW5kCi1JRkxBX0lORVQ2X1RPS0VOLgotVGh1cywgd2UgZG8gbm90IG5lZWQgdG8gc2VuZCBJRkxBX0lORVQ2X0FERFJfR0VOX01PREUgdHdpY2UuCi0KLUZvbGxvdy11cCBmb3IgMGUyZmRiODNiYjVlMjIwNDdlMGM3Y2MwNThiNDE1ZDBlOTNmMDJjZiBhbmQKLTRlYjA4NmEzODcxMmVhOThmYWY0MWUwNzViODQ1NTViMTFiNTQzNjIuCi0KLVNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvQHJpYmFsZGEuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2NvbW1pdC85ZjZlODJlNmViM2I2ZTczZDY2ZDAwZDFkNmVlZTYwNjkxZmI3MDJmXQotCi0tLS0KLSBzcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgfCA1MSArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLWluZGV4IDA0MjQ5NjE3M2MuLmM0OWRiYTMzZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwotQEAgLTE5NDAsNiArMTk0MCw5IEBAIHN0YXRpYyBpbnQgbGlua19jb25maWd1cmVfYWRkcmdlbl9tb2RlKExpbmsgKmxpbmspIHsKLSAgICAgICAgIGFzc2VydChsaW5rLT5tYW5hZ2VyKTsKLSAgICAgICAgIGFzc2VydChsaW5rLT5tYW5hZ2VyLT5ydG5sKTsKLSAKLSsgICAgICAgIGlmICghc29ja2V0X2lwdjZfaXNfc3VwcG9ydGVkKCkpCi0rICAgICAgICAgICAgICAgIHJldHVybiAwOwotKwotICAgICAgICAgbG9nX2xpbmtfZGVidWcobGluaywgIlNldHRpbmcgYWRkcmVzcyBnZW5tb2RlIGZvciBsaW5rIik7Ci0gCi0gICAgICAgICByID0gc2RfcnRubF9tZXNzYWdlX25ld19saW5rKGxpbmstPm1hbmFnZXItPnJ0bmwsICZyZXEsIFJUTV9TRVRMSU5LLCBsaW5rLT5pZmluZGV4KTsKLUBAIC0yMDMzLDQ2ICsyMDM2LDYgQEAgc3RhdGljIGludCBsaW5rX3VwKExpbmsgKmxpbmspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2xpbmtfZXJyb3JfZXJybm8obGluaywgciwgIkNvdWxkIG5vdCBzZXQgTUFDIGFkZHJlc3M6ICVtIik7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBpZiAobGlua19pcHY2X2VuYWJsZWQobGluaykpIHsKLS0gICAgICAgICAgICAgICAgdWludDhfdCBpcHY2bGxfbW9kZTsKLS0KLS0gICAgICAgICAgICAgICAgciA9IHNkX25ldGxpbmtfbWVzc2FnZV9vcGVuX2NvbnRhaW5lcihyZXEsIElGTEFfQUZfU1BFQyk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2xpbmtfZXJyb3JfZXJybm8obGluaywgciwgIkNvdWxkIG5vdCBvcGVuIElGTEFfQUZfU1BFQyBjb250YWluZXI6ICVtIik7Ci0tCi0tICAgICAgICAgICAgICAgIC8qIGlmIHRoZSBrZXJuZWwgbGFja3MgaXB2NiBzdXBwb3J0IHNldHRpbmcgSUZGX1VQIGZhaWxzIGlmIGFueSBpcHY2IG9wdGlvbnMgYXJlIHBhc3NlZCAqLwotLSAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX29wZW5fY29udGFpbmVyKHJlcSwgQUZfSU5FVDYpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3Qgb3BlbiBBRl9JTkVUNiBjb250YWluZXI6ICVtIik7Ci0tCi0tICAgICAgICAgICAgICAgIGlmICghaW5fYWRkcl9pc19udWxsKEFGX0lORVQ2LCAmbGluay0+bmV0d29yay0+aXB2Nl90b2tlbikpIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX2FwcGVuZF9pbjZfYWRkcihyZXEsIElGTEFfSU5FVDZfVE9LRU4sICZsaW5rLT5uZXR3b3JrLT5pcHY2X3Rva2VuLmluNik7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3QgYXBwZW5kIElGTEFfSU5FVDZfVE9LRU46ICVtIik7Ci0tICAgICAgICAgICAgICAgIH0KLS0KLS0gICAgICAgICAgICAgICAgaWYgKCFsaW5rX2lwdjZsbF9lbmFibGVkKGxpbmspKQotLSAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZsbF9tb2RlID0gSU42X0FERFJfR0VOX01PREVfTk9ORTsKLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3lzY3RsX3JlYWRfaXBfcHJvcGVydHkoQUZfSU5FVDYsIGxpbmstPmlmbmFtZSwgInN0YWJsZV9zZWNyZXQiLCBOVUxMKSA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIGZpbGUgbWF5IG5vdCBleGlzdC4gQW5kIGV2ZW50IGlmIGl0IGV4aXN0cywgd2hlbiBzdGFibGVfc2VjcmV0IGlzIHVuc2V0LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHJlYWRpbmcgdGhlIGZpbGUgZmFpbHMgd2l0aCBFSU8uICovCi0tICAgICAgICAgICAgICAgICAgICAgICAgaXB2NmxsX21vZGUgPSBJTjZfQUREUl9HRU5fTU9ERV9FVUk2NDsKLS0gICAgICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZsbF9tb2RlID0gSU42X0FERFJfR0VOX01PREVfU1RBQkxFX1BSSVZBQ1k7Ci0tCi0tICAgICAgICAgICAgICAgIHIgPSBzZF9uZXRsaW5rX21lc3NhZ2VfYXBwZW5kX3U4KHJlcSwgSUZMQV9JTkVUNl9BRERSX0dFTl9NT0RFLCBpcHY2bGxfbW9kZSk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2xpbmtfZXJyb3JfZXJybm8obGluaywgciwgIkNvdWxkIG5vdCBhcHBlbmQgSUZMQV9JTkVUNl9BRERSX0dFTl9NT0RFOiAlbSIpOwotLQotLSAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX2Nsb3NlX2NvbnRhaW5lcihyZXEpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3QgY2xvc2UgQUZfSU5FVDYgY29udGFpbmVyOiAlbSIpOwotLQotLSAgICAgICAgICAgICAgICByID0gc2RfbmV0bGlua19tZXNzYWdlX2Nsb3NlX2NvbnRhaW5lcihyZXEpOwotLSAgICAgICAgICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19saW5rX2Vycm9yX2Vycm5vKGxpbmssIHIsICJDb3VsZCBub3QgY2xvc2UgSUZMQV9BRl9TUEVDIGNvbnRhaW5lcjogJW0iKTsKLS0gICAgICAgIH0KLS0KLSAgICAgICAgIHIgPSBuZXRsaW5rX2NhbGxfYXN5bmMobGluay0+bWFuYWdlci0+cnRubCwgTlVMTCwgcmVxLCBsaW5rX3VwX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmtfbmV0bGlua19kZXN0cm95X2NhbGxiYWNrLCBsaW5rKTsKLSAgICAgICAgIGlmIChyIDwgMCkKLUBAIC0zMjA4LDExICszMTcxLDkgQEAgc3RhdGljIGludCBsaW5rX2NvbmZpZ3VyZShMaW5rICpsaW5rKSB7Ci0gICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiByOwotIAotLSAgICAgICAgaWYgKHNvY2tldF9pcHY2X2lzX3N1cHBvcnRlZCgpKSB7Ci0tICAgICAgICAgICAgICAgIHIgPSBsaW5rX2NvbmZpZ3VyZV9hZGRyZ2VuX21vZGUobGluayk7Ci0tICAgICAgICAgICAgICAgIGlmIChyIDwgMCkKLS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKLS0gICAgICAgIH0KLSsgICAgICAgIHIgPSBsaW5rX2NvbmZpZ3VyZV9hZGRyZ2VuX21vZGUobGluayk7Ci0rICAgICAgICBpZiAociA8IDApCi0rICAgICAgICAgICAgICAgIHJldHVybiByOwotIAotICAgICAgICAgcmV0dXJuIGxpbmtfY29uZmlndXJlX2FmdGVyX3NldHRpbmdfbXR1KGxpbmspOwotIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtbmV0d29yay1yZW1vdmUtcmVkdW5hbnQtbGluay1uYW1lLWluLW1lc3NhZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LW5ldHdvcmstcmVtb3ZlLXJlZHVuYW50LWxpbmstbmFtZS1pbi1tZXNzYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzM2Y0ODJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtbmV0d29yay1yZW1vdmUtcmVkdW5hbnQtbGluay1uYW1lLWluLW1lc3NhZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDllNjk0MDg1OGM3ZGJkZDU2YjI5N2JkZjQ5ZjU4ZDYyM2UzNDMwYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/WmJpZ25pZXc9MjBKPUM0PTk5ZHJ6ZWpld3NraS1Tem1laz89IDx6YnlzemVrQGluLndhdy5wbD4KLURhdGU6IFR1ZSwgNyBNYXkgMjAxOSAxMzo0Njo1NSArMDIwMAotU3ViamVjdDogW1BBVENIXSBuZXR3b3JrOiByZW1vdmUgcmVkdW5hbnQgbGluayBuYW1lIGluIG1lc3NhZ2UKLQotRml4ZXMgIzEyNDU0LgotCi1nY2Mgd2FzIGNvbXBsYWluaW5nIHRoYXQgdGhlIGxpbmstPmlmbmFtZSBhcmd1bWVudCBpcyBOVUxMLiBBZGRpbmcKLWFzc2VydChsaW5rLT5pZm5hbWUpIHJpZ2h0IGJlZm9yZSB0aGUgY2FsbCBoYXMgbm8gZWZmZWN0LiBJdCBzZWVtcyB0aGF0Ci1nY2MgaXMgY29uZnVzZWQgYnkgdGhlIGZhY3QgdGhhdCBsb2dfbGlua193YXJuaW5nX2Vycm5vKCkgaW50ZXJuYWxseQotY2FsbHMgbG9nX29iamVjdCgpLCB3aXRoIGxpbmstPmlmbmFtZSBwYXNzZWQgYXMgdGhlIG9iamVjdC4gbG9nX29iamVjdCgpCi1pcyBhbHNvIGEgbWFjcm8gYW5kIGlzIGRvZXMgYSBjaGVjayB3aGV0aGVyIHRoZSBwYXNzZWQgb2JqZWN0IGlzIE5VTEwuCi1TbyB3ZSBoYXZlIGEgY2hlY2sgaWYgc29tZXRoaW5nIGlzIE5VTEwgcmlnaHQgbmV4dCBhbiB1bmNvbmRpdGlvbmFsIHVzZQotb2YgaXQgd2hlcmUgaXQgY2Fubm90IGJlIE5VTEwuIEkgdGhpbmsgaXQncyBhIGJ1ZyBpbiBnY2MuCi0KLUFueXdheSwgd2UgZG9uJ3QgbmVlZCB0byB1c2UgbGluay0+aWZuYW1lIGhlcmUuIGxvZ19vYmplY3QoKSBhbHJlYWR5IHByZXBlbmRzCi10aGUgb2JqZWN0IG5hbWUgdG8gdGhlIG1lc3NhZ2UuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IGJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL2NvbW1pdC9jOThiMzU0NTAwOGQ4ZTk4NGFiNDU2ZGNmNzk3ODc0MThmY2JmZTEzXQotLS0tCi0gc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jIHwgMyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLWluZGV4IDNlMzM0YzhkMjkuLmExNThjMDFiYmQgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLSsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwotQEAgLTMyMSw4ICszMjEsNyBAQCBzdGF0aWMgaW50IGxpbmtfZW5hYmxlX2lwdjYoTGluayAqbGluaykgewotIAotICAgICAgICAgciA9IHN5c2N0bF93cml0ZV9pcF9wcm9wZXJ0eV9ib29sZWFuKEFGX0lORVQ2LCBsaW5rLT5pZm5hbWUsICJkaXNhYmxlX2lwdjYiLCBkaXNhYmxlZCk7Ci0gICAgICAgICBpZiAociA8IDApCi0tICAgICAgICAgICAgICAgIGxvZ19saW5rX3dhcm5pbmdfZXJybm8obGluaywgciwgIkNhbm5vdCAlcyBJUHY2IGZvciBpbnRlcmZhY2UgJXM6ICVtIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfZGlzYWJsZSghZGlzYWJsZWQpLCBsaW5rLT5pZm5hbWUpOwotKyAgICAgICAgICAgICAgICBsb2dfbGlua193YXJuaW5nX2Vycm5vKGxpbmssIHIsICJDYW5ub3QgJXMgSVB2NjogJW0iLCBlbmFibGVfZGlzYWJsZSghZGlzYWJsZWQpKTsKLSAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgbG9nX2xpbmtfaW5mbyhsaW5rLCAiSVB2NiBzdWNjZXNzZnVsbHkgJXNkIiwgZW5hYmxlX2Rpc2FibGUoIWRpc2FibGVkKSk7Ci0gCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDIuYmIKaW5kZXggYjM2OGNhOC4uMmMxMDFjYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kXzI0Mi5iYgpAQCAtMjIsMTIgKzIyLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNS1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtbmV0d29yay1yZW1vdmUtcmVkdW5hbnQtbGluay1uYW1lLWluLW1lc3NhZ2UucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vOTktZGVmYXVsdC5wcmVzZXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXNvbHZlZC1GaXgtaW5jb3JyZWN0LXVzZS1vZi1PcGVuU1NMLUJVRl9NRU0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb3JlLXNldC1mcy5maWxlLW1heC1zeXNjdGwtdG8tTE9OR19NQVgtcmF0aGVyLXRoYW4tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbmV0d29ya2QtZml4LWxpbmstdXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1uZXR3b3JrLWRvLW5vdC1zZW5kLWlwdjYucGF0Y2ggXAogICAgICAgICAgICAiCiAKICMgcGF0Y2hlcyBuZWVkZWQgYnkgbXVzbApAQCAtODgsNiArODMsNyBAQAogICAgIHF1b3RhY2hlY2sgXAogICAgIHJhbmRvbXNlZWQgXAogICAgIHJlc29sdmVkIFwKKyAgICBzZXQtdGltZS1lcG9jaCBcCiAgICAgc21hY2sgXAogICAgIHN5c3VzZXJzIFwKICAgICB0aW1lZGF0ZWQgXApAQCAtMTcxLDcgKzE2NywxMiBAQAogUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgogUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCiBQQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGltZS1lcG9jaF0gPSAiLUR0aW1lLWVwb2NoPTAsLCIKKyMgV2hlbiBlbmFibGVkIHVzZSByZXByb2R1Y2JsZSBidWlsZCB0aW1lc3RhbXAgaWYgc2V0IGFzIHRpbWUgZXBvY2gsCisjIG9yIGJ1aWxkIHRpbWUgaWYgbm90LiBXaGVuIGRpc2FibGVkLCB0aW1lIGVwb2NoIGlzIHVuc2V0LgorZGVmIGJ1aWxkX2Vwb2NoKGQpOgorICAgIGVwb2NoID0gZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgb3IgIi0xIgorICAgIHJldHVybiAnLUR0aW1lLWVwb2NoPSVkJyAlIGludChlcG9jaCkKK1BBQ0tBR0VDT05GSUdbc2V0LXRpbWUtZXBvY2hdID0gIiR7QGJ1aWxkX2Vwb2NoKGQpfSwtRHRpbWUtZXBvY2g9MCIKIFBBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgogUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCiBQQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgpAQCAtMjEwLDYgKzIxMSw3IEBACiAgICAgICAgICAgICAgICAgICAtRHF1b3RhY2hlY2stcGF0aD0ke3NiaW5kaXJ9L3F1b3RhY2hlY2sgXAogICAgICAgICAgICAgICAgICAgLURxdW90YW9uLXBhdGg9JHtzYmluZGlyfS9xdW90YW9uIFwKICAgICAgICAgICAgICAgICAgIC1Ec3Vsb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIFwKKyAgICAgICAgICAgICAgICAgIC1Ebm9sb2dpbi1wYXRoPSR7YmFzZV9zYmluZGlyfS9ub2xvZ2luIFwKICAgICAgICAgICAgICAgICAgIC1EdW1vdW50LXBhdGg9JHtiYXNlX2JpbmRpcn0vdW1vdW50IgogCiBkb19pbnN0YWxsKCkgewpAQCAtNjE5LDYgKzYyMSwxMiBAQAogICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKIH0KIAorcHl0aG9uIGRvX3dhcm5fbXVzbCgpIHsKKyAgICBpZiBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgorICAgICAgICBiYi53YXJuKCJVc2luZyBzeXN0ZW1kIHdpdGggbXVzbCBpcyBub3QgcmVjb21tZW5kZWQgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB1cHN0cmVhbSBhbmQgc29tZSBwYXRjaGVzIGFyZSBrbm93biB0byBiZSBwcm9ibGVtYXRpYy4iKQorfQorYWRkdGFzayB3YXJuX211c2wgYmVmb3JlIGRvX2NvbmZpZ3VyZQorCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCByZXNvbHYtY29uZiIKIAogQUxURVJOQVRJVkVfVEFSR0VUW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZV8yLjMyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YThlN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zMi5iYgpAQCAtMCwwICsxLDg1IEBACityZXF1aXJlIGJpbnV0aWxzLmluYworcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKKworQlBOID0gImJpbnV0aWxzIgorCitERVBFTkRTICs9ICJkZWphZ251LW5hdGl2ZSBleHBlY3QtbmF0aXZlIgorREVQRU5EUyArPSAiYmludXRpbHMtbmF0aXZlIgorCitkZWx0YXNrIGRvX2NvbXBpbGUKK2RlbHRhc2sgZG9faW5zdGFsbAorCitpbmhlcml0IG5vcGFja2FnZXMKKworZG9fY29uZmlndXJlW2RpcnNdICs9ICIke0J9L2xkICR7Qn0vYmZkIgorZG9fY29uZmlndXJlKCkgeworICAgICMgY3JlYXRlIGNvbmZpZy5oLCBvZSBlbmFibGVzIGluaXRmaW5pLWFycmF5IGJ5IGRlZmF1bHQKKyAgICBlY2hvICIjZGVmaW5lIEhBVkVfSU5JVEZJTklfQVJSQVkiID4gJHtCfS9sZC9jb25maWcuaAorICAgICMgdXNlIHRoZSBiZmRfc3RkaW50LmggZnJvbSBiaW51dGlscy1uYXRpdmUsIHRoaXMgaXMgdGhlIHNhbWUgb2YgdGhlIG9uZQorICAgICMgZ2VuZXJhdGVkIGJ5IGJpbnV0aWxzLWNyb3NzCisgICAgY3AgJHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9L3Vzci9pbmNsdWRlL2JmZF9zdGRpbnQuaCAke0J9L2JmZC8KK30KKworIyB0YXJnZXQgZGVwZW5kcworREVQRU5EUyArPSAidmlydHVhbC8ke01MUFJFRklYfSR7VEFSR0VUX1BSRUZJWH1iaW51dGlscyIKK0RFUEVORFMgKz0gInZpcnR1YWwvJHtNTFBSRUZJWH0ke1RBUkdFVF9QUkVGSVh9Z2NjIgorREVQRU5EUyArPSAidmlydHVhbC8ke01MUFJFRklYfSR7VEFSR0VUX1BSRUZJWH1jb21waWxlcmxpYnMiCitERVBFTkRTICs9ICJ2aXJ0dWFsLyR7TUxQUkVGSVh9bGliYyIKKworcHl0aG9uIGNoZWNrX3ByZXBhcmUoKSB7CisgICAgZGVmIHN1ZmZpeF9zeXMoc3lzKToKKyAgICAgICAgaWYgc3lzLmVuZHN3aXRoKCItbGludXgiKToKKyAgICAgICAgICAgIHJldHVybiBzeXMgKyAiLWdudSIKKyAgICAgICAgcmV0dXJuIHN5cworCisgICAgZGVmIGdlbmVyYXRlX3NpdGVfZXhwKGQsIHN1aXRlKToKKyAgICAgICAgY29udGVudCA9IFtdCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXQgc3JjZGlyICJ7MH0vezF9IicuZm9ybWF0KGQuZ2V0VmFyKCJTIiksIHN1aXRlKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCBvYmpkaXIgInswfS97MX0iJy5mb3JtYXQoZC5nZXRWYXIoIkIiKSwgc3VpdGUpKQorICAgICAgICBjb250ZW50LmFwcGVuZCgnc2V0IGJ1aWxkX2FsaWFzICJ7MH0iJy5mb3JtYXQoZC5nZXRWYXIoIkJVSUxEX1NZUyIpKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCBidWlsZF90cmlwbGV0IHswfScuZm9ybWF0KGQuZ2V0VmFyKCJCVUlMRF9TWVMiKSkpCisgICAgICAgICMgdXNlIEJVSUxEIGhlcmUgc2luY2UgSE9TVD1UQVJHRVQKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCBob3N0X2FsaWFzICJ7MH0iJy5mb3JtYXQoZC5nZXRWYXIoIkJVSUxEX1NZUyIpKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCBob3N0X3RyaXBsZXQgezB9Jy5mb3JtYXQoZC5nZXRWYXIoIkJVSUxEX1NZUyIpKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCB0YXJnZXRfYWxpYXMgInswfSInLmZvcm1hdChkLmdldFZhcigiVEFSR0VUX1NZUyIpKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCB0YXJnZXRfdHJpcGxldCB7MH0nLmZvcm1hdChzdWZmaXhfc3lzKGQuZ2V0VmFyKCJUQVJHRVRfU1lTIikpKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoInNldCBkZXZlbG9wbWVudCB0cnVlIikKKyAgICAgICAgY29udGVudC5hcHBlbmQoInNldCBleHBlcmltZW50YWwgZmFsc2UiKQorCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKGQuZXhwYW5kKCdzZXQgQ1hYRklMVCAiJHtUQVJHRVRfUFJFRklYfWMrK2ZpbHQiJykpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKGQuZXhwYW5kKCdzZXQgQ0MgIiR7VEFSR0VUX1BSRUZJWH1nY2MgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke1RVTkVfQ0NBUkdTfSInKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoZC5leHBhbmQoJ3NldCBDWFggIiR7VEFSR0VUX1BSRUZJWH1nKysgLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke1RVTkVfQ0NBUkdTfSInKSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoZC5leHBhbmQoJ3NldCBDRkxBR1NfRk9SX1RBUkdFVCAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSAke1RVTkVfQ0NBUkdTfSInKSkKKworICAgICAgICBpZiBzdWl0ZSA9PSAibGQiIGFuZCBkLmdldFZhcigiVFVORV9BUkNIIikgPT0gIm1pcHM2NCI6CisgICAgICAgICAgICAjIG9lIHBhdGNoZXMgYmludXRpbHMgdG8gaGF2ZSB0aGUgZGVmYXVsdCBtaXBzNjQgYWJpIGFzIDY0Yml0LCBidXQKKyAgICAgICAgICAgICMgc2tpcHMgZ2FzIGNhdXNpbmcgaXNzdWVzIHdpdGggdGhlIGxkIHRlc3Qgc3VpdGUgKHdoaWNoIHVzZXMgZ2FzKQorICAgICAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldCBBU0ZMQUdTICItNjQiJykKKworICAgICAgICByZXR1cm4gIlxuIi5qb2luKGNvbnRlbnQpCisKKyAgICBmb3IgaSBpbiBbImJpbnV0aWxzIiwgImdhcyIsICJsZCJdOgorICAgICAgICBidWlsZGRpciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiQiIpLCBpKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihidWlsZGRpcik6CisgICAgICAgICAgICBvcy5tYWtlZGlycyhidWlsZGRpcikKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihidWlsZGRpciwgInNpdGUuZXhwIiksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZ2VuZXJhdGVfc2l0ZV9leHAoZCwgaSkpCit9CisKK0NIRUNLX1RBUkdFVFMgPz89ICJiaW51dGlscyBnYXMgbGQiCisKK2RvX2NoZWNrW2RpcnNdID0gIiR7Qn0gJHtCfS9iaW51dGlscyAke0J9L2dhcyAke0J9L2xkIgorZG9fY2hlY2tbcHJlZnVuY3NdICs9ICJjaGVja19wcmVwYXJlIgorZG9fY2hlY2tbbm9zdGFtcF0gPSAiMSIKK2RvX2NoZWNrKCkgeworICAgIGV4cG9ydCBMQ19BTEw9QworICAgIGZvciBpIGluICR7Q0hFQ0tfVEFSR0VUU307IGRvCisgICAgICAgIChjZCAke0J9LyRpOyBydW50ZXN0IFwKKyAgICAgICAgICAgIC0tdG9vbCAkaSBcCisgICAgICAgICAgICAtLXNyY2RpciAke1N9LyRpL3Rlc3RzdWl0ZSBcCisgICAgICAgICAgICAtLWlnbm9yZSAncGx1Z2luLmV4cCcgXAorICAgICAgICAgICAgfHwgdHJ1ZSkKKyAgICBkb25lCit9CithZGR0YXNrIGNoZWNrIGFmdGVyIGRvX2NvbmZpZ3VyZQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaAppbmRleCBiYTVlNGMyLi41ZjRhYzcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQ1NDBlOTVkMDVjZDdjNGI4OTI0YWM3YjI1N2MxNGFlMDEwNWQwYWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk1OGE0OTc0OWI3NzI2NjBkM2JhZmI4MDc0ODgyOWNiYTZiZWQwNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjQ0OjE0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0ggMTAvMTVdIENoYW5nZSBkZWZhdWx0IGVtdWxhdGlvbiBmb3IgbWlwczY0Ki0qLWxpbnV4CkBAIC0xNCw3ICsxNCw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCAwZTFkZGI2NTljLi5jYzY1NTQ3NTg4IDEwMDY0NAoraW5kZXggMGUxZGRiNjU5Yy4uZDRmNTBmMGE4ZCAxMDA2NDQKIC0tLSBhL2JmZC9jb25maWcuYmZkCiArKysgYi9iZmQvY29uZmlnLmJmZAogQEAgLTkxOSwxMiArOTE5LDEyIEBAIGNhc2UgIiR7dGFyZ30iIGluCkBAIC0zMCw3ICszMCw3IEBACiAtICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjCiAtICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKICsgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2JlX3ZlYwotKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgorKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgogICAgICA7OwogICAgbWlwcyplbC0qLWxpbnV4KikKICAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYwpAQCAtNTQsNiArNTQsMyBAQAogIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwogIG1pcHMqZWwtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJsdHNtaXAKICAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCIKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLWJvb3RjaGFydDItc3VwcG9ydC11c3JtZXJnZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Mi8wMDAxLWJvb3RjaGFydDItc3VwcG9ydC11c3JtZXJnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWU2NzIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyLzAwMDEtYm9vdGNoYXJ0Mi1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gYjZkMWExZmYyZGUzNjNiMWI3NmM4YzcwZjc3YWU1NmE0ZTRkNGI1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDUgU2VwIDIwMTkgMTg6Mzc6MzEgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gYm9vdGNoYXJ0Mjogc3VwcG9ydCB1c3JtZXJnZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBNYWtlZmlsZSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAxY2MyOTc0Li5mOTg4OTA0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzYsNyArMzYsNyBAQCBlbmRpZgorIFBZX1NJVEVESVIgPz0gJChQWV9MSUJESVIpL3NpdGUtcGFja2FnZXMKKyBMSUJDX0FfUEFUSCA9IC91c3IkKExJQkRJUikKKyAjIEFsd2F5cyBsaWIsIGV2ZW4gb24gc3lzdGVtcyB0aGF0IG90aGVyd2lzZSB1c2UgbGliNjQKKy1TWVNURU1EX1VOSVRfRElSID0gJChFQVJMWV9QUkVGSVgpL2xpYi9zeXN0ZW1kL3N5c3RlbQorK1NZU1RFTURfVU5JVF9ESVIgPz0gJChFQVJMWV9QUkVGSVgpL2xpYi9zeXN0ZW1kL3N5c3RlbQorIENPTExFQ1RPUiA9IFwKKyAJY29sbGVjdG9yL2NvbGxlY3Rvci5vIFwKKyAJY29sbGVjdG9yL291dHB1dC5vIFwKK0BAIC05OSw3ICs5OSw3IEBAIGluc3RhbGwtY2hyb290OgorIAlpbnN0YWxsIC1kICQoREVTVERJUikkKFBLR0xJQkRJUikvdG1wZnMKKyAKKyBpbnN0YWxsLWNvbGxlY3RvcjogYWxsIGluc3RhbGwtY2hyb290CistCWluc3RhbGwgLW0gNzU1IC1EIGJvb3RjaGFydGQgJChERVNURElSKSQoRUFSTFlfUFJFRklYKS9zYmluLyQoUFJPR1JBTV9QUkVGSVgpYm9vdGNoYXJ0ZCQoUFJPR1JBTV9TVUZGSVgpCisrCWluc3RhbGwgLW0gNzU1IC1EIGJvb3RjaGFydGQgJChERVNURElSKSR7QkFTRV9TQklORElSfS8kKFBST0dSQU1fUFJFRklYKWJvb3RjaGFydGQkKFBST0dSQU1fU1VGRklYKQorIAlpbnN0YWxsIC1tIDY0NCAtRCBib290Y2hhcnRkLmNvbmYgJChERVNURElSKS9ldGMvJChQUk9HUkFNX1BSRUZJWClib290Y2hhcnRkJChQUk9HUkFNX1NVRkZJWCkuY29uZgorIAlpbnN0YWxsIC1tIDc1NSAtRCBib290Y2hhcnQtY29sbGVjdG9yICQoREVTVERJUikkKFBLR0xJQkRJUikvJChQUk9HUkFNX1BSRUZJWClib290Y2hhcnQkKFBST0dSQU1fU1VGRklYKS1jb2xsZWN0b3IKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jvb3RjaGFydDIvYm9vdGNoYXJ0Ml8wLjE0LjguYmIKaW5kZXggMzk2ZDBlYy4uYTkzOGIyZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYm9vdGNoYXJ0Mi9ib290Y2hhcnQyXzAuMTQuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ib290Y2hhcnQyL2Jvb3RjaGFydDJfMC4xNC44LmJiCkBAIC05Myw2ICs5Myw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20veHJteC9ib290Y2hhcnQuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2Jvb3RjaGFydGRfc3RvcC5zaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbGxlY3Rvci1BbGxvY2F0ZS1zcGFjZS1vbi1oZWFwLWZvci1jaHVua3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ib290Y2hhcnQyLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTExNCw2ICsxMTUsOCBAQAogSU5JVFNDUklQVF9OQU1FID0gImJvb3RjaGFydGRfc3RvcC5zaCIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDIgMyA0IDUgLiIKIAorRVhUUkFfT0VNQUtFID0gJ0JBU0VfU0JJTkRJUj0iJHtiYXNlX3NiaW5kaXJ9IicKKwogZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKICAgICBleHBvcnQgUFlfTElCRElSPSIke2xpYmRpcn0vJHtQWVRIT05fRElSfSIKICAgICBleHBvcnQgQklORElSPSIke2JpbmRpcn0iCkBAIC0xMjYsNiArMTI5LDggQEAKICAgICBleHBvcnQgQklORElSPSIke2JpbmRpcn0iCiAgICAgZXhwb3J0IERFU1RESVI9IiR7RH0iCiAgICAgZXhwb3J0IExJQkRJUj0iJHtiYXNlX2xpYmRpcn0iCisgICAgZXhwb3J0IFBLR0xJQkRJUj0iJHtiYXNlX2xpYmRpcn0vYm9vdGNoYXJ0IgorICAgIGV4cG9ydCBTWVNURU1EX1VOSVRfRElSPSIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgogCiAgICAgb2VfcnVubWFrZSBpbnN0YWxsCiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKQEAgLTE0MSw3ICsxNDYsNyBAQAogRklMRVNfcHlib290Y2hhcnRndWkgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5Ym9vdGNoYXJ0Z3VpICR7YmluZGlyfS9weWJvb3RjaGFydGd1aSIKIFJERVBFTkRTX3B5Ym9vdGNoYXJ0Z3VpID0gInB5dGhvbjMtcHljYWlybyBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtaW1hZ2UgcHl0aG9uMy1zaGVsbCBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtY29kZWNzIgogUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3N5c3Zpbml0LXBpZG9mJywgJ3Byb2NwcycsIGQpfSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAibHNiIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJsc2ItcmVsZWFzZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgcHl0aG9uMy1weWNhaXJvLW5hdGl2ZSIKIAogUEFDS0FHRVMgPSsgImJvb3RjaGFydGQtc3RvcC1pbml0c2NyaXB0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjIuMS5iYgppbmRleCA2NDc1MTZjLi5hMzY0Y2Y1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjIuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjIuMS5iYgpAQCAtMTAsNyArMTAsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgogU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKK0RFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgogREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgogUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgogCkBAIC0xOSwxMyArMTksMTYgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaCBcCiAgICAgICAgICAgICIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcyBkaXN0dXRpbHMzLWJhc2UKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24iCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t6c3RkXSA9ICItLWVuYWJsZS16c3RkLC0tZGlzYWJsZS16c3RkLHpzdGQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2Rpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtZG9jdW1lbnRhdGlvbiwgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24sIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3pzdGRdID0gIi0tZW5hYmxlLXpzdGQsLS1kaXNhYmxlLXpzdGQsenN0ZCIKLQogRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgogRVhUUkFfUFlUSE9OX0NGTEFHUyA9ICIke0RFQlVHX1BSRUZJWF9NQVB9IgogRVhUUkFfUFlUSE9OX0NGTEFHU19jbGFzcy1uYXRpdmUgPSAiIgpAQCAtNDEsNyArNDQsOSBAQAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnUFlUSE9OX1NJVEVQQUNLQUdFU19ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIGluc3RhbGxfcHl0aG9uCisgICAgaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgorICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdQWVRIT05fU0lURVBBQ0tBR0VTX0RJUj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgaW5zdGFsbF9weXRob24KKyAgICBmaQogfQogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2J1aWxkLWNvbXBhcmVfZ2l0LmJiCmluZGV4IGVmY2Y2YjYuLmIwNTYwY2MgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvYnVpbGQtY29tcGFyZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9idWlsZC1jb21wYXJlX2dpdC5iYgpAQCAtNiwyMiArNiwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9SZW5hbWUtcnBtLWNoZWNrLnNoLXRvLXBrZy1kaWZmLnNoLnBhdGNoO3N0cmlwbGV2ZWw9MSBcCiAgICAgICAgICAgIGZpbGU6Ly9JZ25vcmUtRFdBUkYtc2VjdGlvbnMucGF0Y2g7c3RyaXBsZXZlbD0xIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXN1cHBvcnQtZm9yLWRlYi1hbmQtaXBrLXBhY2thZ2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9mdW5jdGlvbnMuc2gtcmVtb3ZlLXNwYWNlLWF0LWhlYWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZnVuY3Rpb25zLnNoLXJ1bi1ycG0tb25jZS10by1tYWtlLWl0LWZhc3Rlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2ctZGlmZi5zaC1jaGVjay1mb3ItZmlmby1uYW1lZC1waXBlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BrZy1kaWZmLnNoLWNoZWNrX3NpbmdsZV9maWxlLXJldHVybi1hdC1vbmNlLXdoZW4tc2EucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGtnLWRpZmYuc2gtcmVtb3ZlLXNwYWNlLWluLXRoZS1lbmQtZm9yLWZ0eXBlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5zaC1pbXByb3ZlLWRlYi1hbmQtaXBrLWNoZWNraW5nLnBhdGNoIFwKICAgICAgICAgICAgIgogCiAjIERhdGUgbWF0Y2hlcyBlbnRyeSBpbiBidWlsZC1jb21wYXJlLmNoYW5nZXMgYW5kIGRhdGUgb2YgU1JDUkVWLgogIwotU1JDUkVWID0gImM1MzUyYzA1NGM2ZWYxNTczNWRhMzFiNzZkNmQ4ODYyMGY0YWZmMGEiCitTUkNSRVYgPSAiNGRmYTIwNzY2MDc3NmNhZTEyMGFmYTQzNTNhZWM3ZjFmMmE5OThkMiIKIFBFID0gIjEiCi1QViA9ICIyMDE1LjAyLjEwK2dpdCR7U1JDUFZ9IgorUFYgPSAiMjAxOS4wOC4xNCtnaXQke1NSQ1BWfSIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvMDAwMS1BZGQtc3VwcG9ydC1mb3ItZGViLWFuZC1pcGstcGFja2FnaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy8wMDAxLUFkZC1zdXBwb3J0LWZvci1kZWItYW5kLWlway1wYWNrYWdpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyZmQ4MTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy8wMDAxLUFkZC1zdXBwb3J0LWZvci1kZWItYW5kLWlway1wYWNrYWdpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1Gcm9tIDAyZGJjN2UzNDc4ZTQwOWQ2ZjVlM2UxYzUzZGFkZGY4ODM4YmU5OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLURhdGU6IFR1ZSwgMSBTZXAgMjAxNSAxMjowNDozMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgZGViIGFuZCBpcGsgcGFja2FnaW5nCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzEwXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLS0tLQotIGZ1bmN0aW9ucy5zaCB8IDE1ICsrKysrKysrKysrKysrKwotIHBrZy1kaWZmLnNoICB8ICA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZnVuY3Rpb25zLnNoIGIvZnVuY3Rpb25zLnNoCi1pbmRleCAwNjA3OWRmLi44NWM5MDAzIDEwMDY0NAotLS0tIGEvZnVuY3Rpb25zLnNoCi0rKysgYi9mdW5jdGlvbnMuc2gKLUBAIC04NSw2ICs4NSwxMyBAQCBmdW5jdGlvbiB1bnBhY2thZ2UoKQotICAgICAgICAgICAgIENQSU9fT1BUUz0iLS1leHRyYWN0IC0tdW5jb25kaXRpb25hbCAtLXByZXNlcnZlLW1vZGlmaWNhdGlvbi10aW1lIC0tbWFrZS1kaXJlY3RvcmllcyAtLXF1aWV0IgotICAgICAgICAgICAgIHJwbTJjcGlvICRmaWxlIHwgY3BpbyAke0NQSU9fT1BUU30KLSAgICAgICAgICAgICA7OwotKyAgICAgICAgKi5pcGt8Ki5kZWIpCi0rICAgICAgICAgICAgYXIgeCAkZmlsZQotKyAgICAgICAgICAgIHRhciB4ZiBjb250cm9sLnRhci5negotKyAgICAgICAgICAgIHJtIGNvbnRyb2wudGFyLmd6Ci0rICAgICAgICAgICAgdGFyIHhmIGRhdGEudGFyLmd6Ci0rICAgICAgICAgICAgcm0gZGF0YS50YXIuZ3oKLSsgICAgICAgICAgICA7OwotICAgICBlc2FjCi0gICAgIHBvcGQgMT4vZGV2L251bGwKLSB9Ci1AQCAtMjU1LDQgKzI2MiwxMiBAQCBmdW5jdGlvbiBjbXBfc3BlYyAoKQotICAgICBybSAkZmlsZTEgJGZpbGUyCi0gICAgIHJldHVybiAkUkVTCi0gfQotKwotK2Z1bmN0aW9uIGFkanVzdF9jb250cm9sZmlsZSgpIHsKLSsgICAgY2F0ICQxL2NvbnRyb2wgfCBzZWQgJy9eVmVyc2lvbjogL2QnID4gJDEvY29udHJvbC5maXhlZAotKyAgICBtdiAkMS9jb250cm9sLmZpeGVkICQxL2NvbnRyb2wKLSsgICAgY2F0ICQyL2NvbnRyb2wgfCBzZWQgJy9eVmVyc2lvbjogL2QnID4gJDIvY29udHJvbC5maXhlZAotKyAgICBtdiAkMi9jb250cm9sLmZpeGVkICQyL2NvbnRyb2wKLSt9Ci0rCi0gIyB2aW06IHR3PTY2NiB0cz0yIGV0Ci1kaWZmIC0tZ2l0IGEvcGtnLWRpZmYuc2ggYi9wa2ctZGlmZi5zaAotaW5kZXggMGYxZmE3Ni4uM2NmMTBhYSAxMDA2NDQKLS0tLSBhL3BrZy1kaWZmLnNoCi0rKysgYi9wa2ctZGlmZi5zaAotQEAgLTEzOCw2ICsxMzgsMTIgQEAgZWNobyAiRXh0cmFjdGluZyBwYWNrYWdlcyIKLSB1bnBhY2thZ2UgJG9sZHBrZyAkZGlyL29sZAotIHVucGFja2FnZSAkbmV3cGtnICRkaXIvbmV3Ci0gCi0rY2FzZSAkb2xkcGtnIGluCi0rICAqLmRlYnwqLmlwaykKLSsgICAgIGFkanVzdF9jb250cm9sZmlsZSAkZGlyL29sZCAkZGlyL25ldwotKyAgOzsKLStlc2FjCi0rCi0gIyBmaWxlcyBpcyBzZXQgaW4gY21wX3NwZWMgZm9yIHJwbXMsIHNvIGlmIFJFUyBpcyBlbXB0eSB3ZSBzaG91bGQgYXNzdW1lCi0gIyBpdCB3YXNuJ3QgYW4gcnBtIGFuZCBwaWNrIGFsbCBmaWxlcyBmb3IgY29tcGFyaXNvbi4KLSBpZiBbIC16ICRSRVMgXTsgdGhlbgotLS0gCi0yLjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL0lnbm9yZS1EV0FSRi1zZWN0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvSWdub3JlLURXQVJGLXNlY3Rpb25zLnBhdGNoCmluZGV4IDdkZGExYWMuLjJmYjYyYWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvSWdub3JlLURXQVJGLXNlY3Rpb25zLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvSWdub3JlLURXQVJGLXNlY3Rpb25zLnBhdGNoCkBAIC0yMywxOCArMjMsMTUgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3BrZy1kaWZmLnNoIGIvcGtnLWRpZmYuc2gKLWluZGV4IDU2MDM1YzEuLjBmMWZhNzYgMTAwNzU1CitpbmRleCA5YzIxMjVlLi5iMGQ3N2M4IDEwMDc1NQogLS0tIGEvcGtnLWRpZmYuc2gKICsrKyBiL3BrZy1kaWZmLnNoCi1AQCAtNjU4LDcgKzY1OCw3IEBAIGNoZWNrX3NpbmdsZV9maWxlKCkKK0BAIC04NTEsNyArODUxLDcgQEAgY2hlY2tfc2luZ2xlX2ZpbGUoKQogICAgICAgICBlY2hvICIiID4kZmlsZTEKICAgICAgICAgZWNobyAiIiA+JGZpbGUyCi0gICAgICAgICMgRG9uJ3QgY29tcGFyZSAuYnVpbGQtaWQgYW5kIC5nbnVfZGVidWdsaW5rIHNlY3Rpb25zCi0tICAgICAgIHNlY3Rpb25zPSIkKG9iamR1bXAgLXMgbmV3LyRmaWxlIHwgZ3JlcCAiQ29udGVudHMgb2Ygc2VjdGlvbiAuKjoiIHwgc2VkIC1yICJzLC4qICguKik6LFwxLGciIHwgZ3JlcCAtdiAtZSAiXC5idWlsZC1pZCIgLWUgIlwuZ251X2RlYnVnbGluayIgfCB0ciAiXG4iICIgIikiCi0rICAgICAgIHNlY3Rpb25zPSIkKG9iamR1bXAgLXMgbmV3LyRmaWxlIHwgZ3JlcCAiQ29udGVudHMgb2Ygc2VjdGlvbiAuKjoiIHwgc2VkIC1yICJzLC4qICguKik6LFwxLGciIHwgZ3JlcCAtdiAtZSAiXC5idWlsZC1pZCIgLWUgIlwuZ251X2RlYnVnbGluayIgLWUgIlwuZGVidWdfYWJicmV2IiAtZSAiXC5kZWJ1Z19hcmFuZ2VzIiAtZSAiXC5kZWJ1Z19mcmFtZSIgLWUgIlwuZGVidWdfaW5mbyIgLWUgIlwuZGVidWdfbGluZSIgLWUgIlwuZGVidWdfbG9jIiAtZSAiXC5kZWJ1Z19tYWNpbmZvIiAtZSAiXC5kZWJ1Z19wdWJuYW1lcyIgLWUgIlwuZGVidWdfcHVidHlwZXMiIC1lICJcLmRlYnVnX3JhbmdlcyIgIC1lICJcLmRlYnVnX3N0ciIgfCB0ciAiXG4iICIgIikiCisgICAgICAgICMgRG9uJ3QgY29tcGFyZSAuYnVpbGQtaWQsIC5nbnVfZGVidWdsaW5rIGFuZCAuZ251X2RlYnVnZGF0YSBzZWN0aW9ucworLSAgICAgICBzZWN0aW9ucz0iJCgkT0JKRFVNUCAtcyBuZXcvJGZpbGUgfCBncmVwICJDb250ZW50cyBvZiBzZWN0aW9uIC4qOiIgfCBzZWQgLXIgInMsLiogKC4qKTosXDEsZyIgfCBncmVwIC12IC1lICJcLmJ1aWxkLWlkIiAtZSAiXC5nbnVfZGVidWdsaW5rIiAtZSAiXC5nbnVfZGVidWdkYXRhIiB8IHRyICJcbiIgIiAiKSIKKysgICAgICAgc2VjdGlvbnM9IiQoJE9CSkRVTVAgLXMgbmV3LyRmaWxlIHwgZ3JlcCAiQ29udGVudHMgb2Ygc2VjdGlvbiAuKjoiIHwgc2VkIC1yICJzLC4qICguKik6LFwxLGciIHwgZ3JlcCAtdiAtZSAiXC5idWlsZC1pZCIgLWUgIlwuZ251X2RlYnVnbGluayIgLWUgIlwuZ251X2RlYnVnZGF0YSIgLWUgIlwuZGVidWdfYWJicmV2IiAtZSAiXC5kZWJ1Z19hcmFuZ2VzIiAtZSAiXC5kZWJ1Z19mcmFtZSIgLWUgIlwuZGVidWdfaW5mbyIgLWUgIlwuZGVidWdfbGluZSIgLWUgIlwuZGVidWdfbG9jIiAtZSAiXC5kZWJ1Z19tYWNpbmZvIiAtZSAiXC5kZWJ1Z19wdWJuYW1lcyIgLWUgIlwuZGVidWdfcHVidHlwZXMiIC1lICJcLmRlYnVnX3JhbmdlcyIgIC1lICJcLmRlYnVnX3N0ciIgfCB0ciAiXG4iICIgIikiCiAgICAgICAgIGZvciBzZWN0aW9uIGluICRzZWN0aW9uczsgZG8KLSAgICAgICAgICAgb2JqZHVtcCAtcyAtaiAkc2VjdGlvbiBvbGQvJGZpbGUgfCBzZWQgInMsXm9sZC8sLCIgPiAkZmlsZTEKLSAgICAgICAgICAgb2JqZHVtcCAtcyAtaiAkc2VjdGlvbiBuZXcvJGZpbGUgfCBzZWQgInMsXm5ldy8sLCIgPiAkZmlsZTIKLS0tIAotMS45LjMKLQorICAgICAgICAgICAkT0JKRFVNUCAtcyAtaiAkc2VjdGlvbiBvbGQvJGZpbGUgfCBzZWQgInMsXm9sZC8sLCIgPiAkZmlsZTEKKyAgICAgICAgICAgJE9CSkRVTVAgLXMgLWogJHNlY3Rpb24gbmV3LyRmaWxlIHwgc2VkICJzLF5uZXcvLCwiID4gJGZpbGUyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL1JlbmFtZS1ycG0tY2hlY2suc2gtdG8tcGtnLWRpZmYuc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL1JlbmFtZS1ycG0tY2hlY2suc2gtdG8tcGtnLWRpZmYuc2gucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmZjNhOWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9SZW5hbWUtcnBtLWNoZWNrLnNoLXRvLXBrZy1kaWZmLnNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU5OSArMCwwIEBACi1Gcm9tIDRkZTNkZjVhMWIzNjFjZDA5YTA4MWYwZTBiZGI5NGNiZjY4NGVkNDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTkgRmViIDIwMTUgMDA6MzQ6NDcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gUmVuYW1lIHJwbS1jaGVjay5zaCB0byBwa2ctZGlmZi5zaC4KLQotVGhlIHRvb2wgbm93IGFjY2VwdHMgcGFja2FnZSBpbnB1dCBvdGhlciB0aGFuIHJwbSwgc28gY2hhbmdlIHRoZSBuYW1lCi13aGljaCBjb3VsZCBiZSBtaXNsZWFkaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbHNdCi0KLVNpZ25lZC1vZmYtYnk6IFJhbmR5IFdpdHQgPHJhbmR5LmUud2l0dEBsaW51eC5pbnRlbC5jb20+Ci0KLVVwZGF0ZWQgZm9yIHJwbS1jaGVjay5zaC4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBidWlsZC1jb21wYXJlLnNwZWMgICB8ICAgIDIgKy0KLSBwa2ctZGlmZi5zaCAgICAgICAgICB8ICA3NjUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBycG0tY2hlY2suc2ggICAgICAgICB8ICA3NjQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNhbWUtYnVpbGQtcmVzdWx0LnNoIHwgICAgNCArLQotIDQgZmlsZXMgY2hhbmdlZCwgNzY4IGluc2VydGlvbnMoKyksIDc2NyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgcGtnLWRpZmYuc2gKLSBkZWxldGUgbW9kZSAxMDA3NTUgcnBtLWNoZWNrLnNoCi0KLWRpZmYgLS1naXQgYS9idWlsZC1jb21wYXJlLnNwZWMgYi9idWlsZC1jb21wYXJlLnNwZWMKLWluZGV4IDE0YTk3ZTkuLjVmNDdjYTEgMTAwNjQ0Ci0tLS0gYS9idWlsZC1jb21wYXJlLnNwZWMKLSsrKyBiL2J1aWxkLWNvbXBhcmUuc3BlYwotQEAgLTI1LDcgKzI1LDcgQEAgVmVyc2lvbjogICAgICAgIDIwMTUuMDIuMTAKLSBSZWxlYXNlOiAgICAgICAgMAotIFNvdXJjZTE6ICAgICAgICBDT1BZSU5HCi0gU291cmNlMjogICAgICAgIHNhbWUtYnVpbGQtcmVzdWx0LnNoCi0tU291cmNlMzogICAgICAgIHJwbS1jaGVjay5zaAotK1NvdXJjZTM6ICAgICAgICBwa2ctZGlmZi5zaAotIFNvdXJjZTQ6ICAgICAgICBmdW5jdGlvbnMuc2gKLSBTb3VyY2U1OiAgICAgICAgc3JwbS1jaGVjay5zaAotIEJ1aWxkUm9vdDogICAgICAle190bXBwYXRofS8le25hbWV9LSV7dmVyc2lvbn0tYnVpbGQKLWRpZmYgLS1naXQgYS9wa2ctZGlmZi5zaCBiL3BrZy1kaWZmLnNoCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTYwMzVjMQotLS0tIC9kZXYvbnVsbAotKysrIGIvcGtnLWRpZmYuc2gKLUBAIC0wLDAgKzEsNzY1IEBACi0rIyEgL2Jpbi9iYXNoCi0rIwotKyMgQ29weXJpZ2h0IChjKSAyMDA5LCAyMDEwLCAyMDExLCAyMDEyIFNVU0UgTGludXggUHJvZHVjdCBHbWJILCBHZXJtYW55LgotKyMgTGljZW5zZWQgdW5kZXIgR1BMIHYyLCBzZWUgQ09QWUlORyBmaWxlIGZvciBkZXRhaWxzLgotKyMKLSsjIFdyaXR0ZW4gYnkgTWljaGFlbCBNYXR6IGFuZCBTdGVwaGFuIENvb2xvCi0rIyBFbmhhbmNlZCBieSBBbmRyZWFzIEphZWdlcgotKwotK0ZVTkNUSU9OUz0kezAlLyp9L2Z1bmN0aW9ucy5zaAotKwotK2NoZWNrX2FsbD0KLStjYXNlICQxIGluCi0rICAtYSB8IC0tY2hlY2stYWxsKQotKyAgICBjaGVja19hbGw9MQotKyAgICBzaGlmdAotK2VzYWMKLSsKLStpZiB0ZXN0ICIkIyIgIT0gMjsgdGhlbgotKyAgIGVjaG8gInVzYWdlOiAkMCBbLWF8LS1jaGVjay1hbGxdIG9sZC5ycG0gbmV3LnJwbSIKLSsgICBleGl0IDEKLStmaQotKwotK3NlbGZfc2NyaXB0PSQoY2QgJChkaXJuYW1lICQwKTsgZWNobyAkKHB3ZCkvJChiYXNlbmFtZSAkMCkpCi0rCi0rc291cmNlICRGVU5DVElPTlMKLSsKLStvbGRwa2c9YHJlYWRsaW5rIC1mICQxYAotK25ld3BrZz1gcmVhZGxpbmsgLWYgJDJgCi0rcmVuYW1lX3NjcmlwdD1gbWt0ZW1wYAotKwotK2lmIHRlc3QgISAtZiAiJG9sZHBrZyI7IHRoZW4KLSsgICAgZWNobyAiY2FuJ3Qgb3BlbiAkMSIKLSsgICAgZXhpdCAxCi0rZmkKLSsKLStpZiB0ZXN0ICEgLWYgIiRuZXdwa2ciOyB0aGVuCi0rICAgIGVjaG8gImNhbid0IG9wZW4gJDIiCi0rICAgIGV4aXQgMQotK2ZpCi0rCi0rI3VzYWdlIHVuamFyIDxmaWxlPgotK2Z1bmN0aW9uIHVuamFyKCkKLSt7Ci0rICAgIGxvY2FsIGZpbGUKLSsgICAgZmlsZT0kMQotKwotKyAgICBpZiBbWyAkKHR5cGUgLXAgZmFzdGphcikgXV07IHRoZW4KLSsgICAgICAgIFVOSkFSPWZhc3RqYXIKLSsgICAgZWxpZiBbWyAkKHR5cGUgLXAgamFyKSBdXTsgdGhlbgotKyAgICAgICAgVU5KQVI9amFyCi0rICAgIGVsaWYgW1sgJCh0eXBlIC1wIHVuemlwKSBdXTsgdGhlbgotKyAgICAgICAgVU5KQVI9dW56aXAKLSsgICAgZWxzZQotKyAgICAgICAgZWNobyAiRVJST1I6IGphciwgZmFzdGphciwgb3IgdW56aXAgaXMgbm90IGluc3RhbGxlZCAodHJ5aW5nIGZpbGUgJGZpbGUpIgotKyAgICAgICAgZXhpdCAxCi0rICAgIGZpCi0rCi0rICAgIGNhc2UgJFVOSkFSIGluCi0rICAgICAgICBqYXJ8ZmFzdGphcikKLSsgICAgICAgICMgZWNobyBqYXIgLXhmICRmaWxlCi0rICAgICAgICAke1VOSkFSfSAteGYgJGZpbGUKLSsgICAgICAgIDs7Ci0rICAgICAgICB1bnppcCkKLSsgICAgICAgIHVuemlwIC1vcXEgJGZpbGUKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSt9Ci0rCi0rIyBsaXN0IGZpbGVzIGluIGRpcmVjdG9yeQotKyN1c2FnZSB1bmphcl9sIDxmaWxlPgotK2Z1bmN0aW9uIHVuamFyX2woKQotK3sKLSsgICAgbG9jYWwgZmlsZQotKyAgICBmaWxlPSQxCi0rCi0rICAgIGlmIFtbICQodHlwZSAtcCBmYXN0amFyKSBdXTsgdGhlbgotKyAgICAgICAgVU5KQVI9ZmFzdGphcgotKyAgICBlbGlmIFtbICQodHlwZSAtcCBqYXIpIF1dOyB0aGVuCi0rICAgICAgICBVTkpBUj1qYXIKLSsgICAgZWxpZiBbWyAkKHR5cGUgLXAgdW56aXApIF1dOyB0aGVuCi0rICAgICAgICBVTkpBUj11bnppcAotKyAgICBlbHNlCi0rICAgICAgICBlY2hvICJFUlJPUjogamFyLCBmYXN0amFyLCBvciB1bnppcCBpcyBub3QgaW5zdGFsbGVkICh0cnlpbmcgZmlsZSAkZmlsZSkiCi0rICAgICAgICBleGl0IDEKLSsgICAgZmkKLSsKLSsgICAgY2FzZSAkVU5KQVIgaW4KLSsgICAgICAgIGphcnxmYXN0amFyKQotKyAgICAgICAgJHtVTkpBUn0gLXRmICRmaWxlCi0rICAgICAgICA7OwotKyAgICAgICAgdW56aXApCi0rICAgICAgICB1bnppcCAtbCAkZmlsZQotKyAgICAgICAgOzsKLSsgICAgZXNhYwotK30KLSsKLStmaWx0ZXJfZGlzYXNtKCkKLSt7Ci0rICAgc2VkIC1lICdzL14gKlswLTlhLWZdXCs6Ly8nIC1lICdzL1wkMHhbMC05YS1mXVwrLyRzb21ldGhpbmcvJyAtZSAncy9jYWxscSAqWzAtOWEtZl1cKy9jYWxscSAvJyAtZSAncy8jICpbMC05YS1mXVwrLyMgIC8nIC1lICdzL1woMHhcKVw/WzAtOWEtZl1cKygvb2Zmc2V0KC8nIC1lICdzL1swLTlhLWZdXCsgPC88LycgLWUgJ3MvXjxcKC4qXCk+Oi9cMTovJyAtZSAncy88XCguKlwpKzB4WzAtOWEtZl1cKz4vPFwxICsgb2ZzPi8nIAotK30KLSsKLStlY2hvICJDb21wYXJpbmcgYGJhc2VuYW1lICRvbGRwa2dgIHRvIGBiYXNlbmFtZSAkbmV3cGtnYCIKLSsKLStjYXNlICRvbGRwa2cgaW4KLSsgICoucnBtKQotKyAgICAgY21wX3NwZWMgJHJlbmFtZV9zY3JpcHQgJG9sZHBrZyAkbmV3cGtnCi0rICAgICBSRVM9JD8KLSsgICAgIGNhc2UgJFJFUyBpbgotKyAgICAgICAwKQotKyAgICAgICAgICBlY2hvICJSUE0gbWV0YSBpbmZvcm1hdGlvbiBpcyBpZGVudGljYWwiCi0rICAgICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0rICAgICAgICAgICAgIGV4aXQgMAotKyAgICAgICAgICBmaQotKyAgICAgICAgICA7OwotKyAgICAgICAxKQotKyAgICAgICAgICBlY2hvICJSUE0gbWV0YSBpbmZvcm1hdGlvbiBpcyBkaWZmZXJlbnQiCi0rICAgICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0rICAgICAgICAgICAgIGV4aXQgMQotKyAgICAgICAgICBmaQotKyAgICAgICAgICA7OwotKyAgICAgICAyKQotKyAgICAgICAgICBlY2hvICJSUE0gZmlsZSBjaGVja3N1bSBkaWZmZXJzLiIKLSsgICAgICAgICAgUkVTPTAKLSsgICAgICAgICAgOzsKLSsgICAgICAgKikKLSsgICAgICAgICAgZWNobyAiV3JvbmcgZXhpdCBjb2RlISIKLSsgICAgICAgICAgZXhpdCAxCi0rICAgICAgICAgIDs7Ci0rICAgICBlc2FjCi0rICAgICA7OwotK2VzYWMKLSsKLStmaWxlMT1gbWt0ZW1wYAotK2ZpbGUyPWBta3RlbXBgCi0rCi0rZGlyPWBta3RlbXAgLWRgCi0rZWNobyAiRXh0cmFjdGluZyBwYWNrYWdlcyIKLSt1bnBhY2thZ2UgJG9sZHBrZyAkZGlyL29sZAotK3VucGFja2FnZSAkbmV3cGtnICRkaXIvbmV3Ci0rCi0rIyBmaWxlcyBpcyBzZXQgaW4gY21wX3NwZWMgZm9yIHJwbXMsIHNvIGlmIFJFUyBpcyBlbXB0eSB3ZSBzaG91bGQgYXNzdW1lCi0rIyBpdCB3YXNuJ3QgYW4gcnBtIGFuZCBwaWNrIGFsbCBmaWxlcyBmb3IgY29tcGFyaXNvbi4KLStpZiBbIC16ICRSRVMgXTsgdGhlbgotKyAgICBvbGRmaWxlcz1gY2QgJGRpci9vbGQ7IGZpbmQgLiAtdHlwZSBmYAotKyAgICBuZXdmaWxlcz1gY2QgJGRpci9uZXc7IGZpbmQgLiAtdHlwZSBmYAotKwotKyAgICBmaWxlcz1gZWNobyAtZSAiJG9sZGZpbGVzXG4kbmV3ZmlsZXMiIHwgc29ydCAtdWAKLStmaQotKwotK2NkICRkaXIKLStiYXNoICRyZW5hbWVfc2NyaXB0Ci0rCi0rZGZpbGU9YG1rdGVtcGAKLSsKLStkaWZmX3R3b19maWxlcygpCi0rewotKyAgaWYgISBjbXAgLXMgb2xkLyRmaWxlIG5ldy8kZmlsZTsgdGhlbgotKyAgICAgZWNobyAiJGZpbGUgZGlmZmVycyAoJGZ0eXBlKSIKLSsgICAgIGhleGR1bXAgLUMgb2xkLyRmaWxlID4gJGZpbGUxCi0rICAgICBoZXhkdW1wIC1DIG5ldy8kZmlsZSA+ICRmaWxlMgotKyAgICAgZGlmZiAtdSAkZmlsZTEgJGZpbGUyIHwgaGVhZCAtbiAyMDAKLSsgICAgIHJldHVybiAxCi0rICBmaQotKyAgcmV0dXJuIDAKLSt9Ci0rCi0rdHJpbV9tYW5fZmlyc3RfbGluZSgpCi0rewotKyAgICAjIEhhbmRsZXMgdGhlIGZpcnN0IGxpbmUgaWYgaXQgaXMgbGlrZToKLSsgICAgIy5cIiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBQb2Q6Ok1hbiAyLjI4IChQb2Q6OlNpbXBsZSAzLjI4KQotKyAgICAjLlwiIERPIE5PVCBNT0RJRlkgVEhJUyBGSUxFISAgSXQgd2FzIGdlbmVyYXRlZCBieSBoZWxwMm1hbiAxLjQzLjMuCi0rICAgIGxvY2FsIGY9JDEKLSsgICAgc2VkIC1pIC1lICcxewotKyAgICBzfF5cLlxcIltbOmJsYW5rOl1dXCtBdXRvbWF0aWNhbGx5W1s6Ymxhbms6XV1nZW5lcmF0ZWRbWzpibGFuazpdXWJ5W1s6Ymxhbms6XV1Qb2Q6Ok1hbltbOmJsYW5rOl1dLip8LlxcIiBPdmVybHkgdmVyYm9zZSBQb2Q6Ok1hbnwKLSsgICAgc3xeXC5cXCJbWzpibGFuazpdXVwrRE9bWzpibGFuazpdXU5PVFtbOmJsYW5rOl1dTU9ESUZZW1s6Ymxhbms6XV1USElTW1s6Ymxhbms6XV1GSUxFIVtbOmJsYW5rOl1dXCtJdFtbOmJsYW5rOl1dd2FzW1s6Ymxhbms6XV1nZW5lcmF0ZWRbWzpibGFuazpdXWJ5W1s6Ymxhbms6XV1oZWxwMm1hbltbOmJsYW5rOl1dLip8LlxcIiBPdmVybHkgdmVyYm9zZSBoZWxwMm1hbnwKLSsgICAgfScgJGYKLSt9Ci0rCi0rdHJpbV9tYW5fVEgoKQotK3sKLSsgICAgIyBIYW5kbGVzIGxpbmVzIGxpa2U6Ci0rICAgICMgLlRIIGRlYmhlbHBlciA3ICIyMDEwLTAyLTI3IiAiNy40LjE1IiAiRGViaGVscGVyIgotKyAgICAjIC5USCBESVJNTkdSLUNMSUVOVCAxIDIwMTAtMDItMjcgIkRpcm1uZ3IgMS4wLjMiICJHTlUgUHJpdmFjeSBHdWFyZCIKLSsgICAgIyAuVEggY2NtYWtlIDEgIk1hcmNoIDA2LCAyMDEwIiAiY2NtYWtlIDIuOC4xLXJjMyIKLSsgICAgIyAuVEggUUVNVS1JTUcgMSAiMjAxMC0wMy0xNCIgIiAiICIgIgotKyAgICAjIC5USCBrZGVjbWFrZSAxICJNYXkgMDcsIDIwMTAiICJjbWFrZSAyLjguMSIKLSsgICAgIyAuVEggImFwcGVuZGVyLmgiIDMgIjEyIE1heSAyMDEwIiAiVmVyc2lvbiAxLjIuMSIgImxvZzRjIiBcIiAtKi0gbnJvZmYgLSotCi0rICAgICMgLlRI4oCCImFwcGVuZGVyLmgi4oCCM+KAgiJUdWXigIJBdWfigIIzMeKAgjIwMTAi4oCCIlZlcnNpb27igIIxLjIuMSLigIIibG9nNGMi4oCCXCLigIItKi3igIJucm9mZuKAgi0qLQotKyAgICAjIC5USCAiT0ZGTElORUlNQVAiICIxIiAiMTEgTWF5IDIwMTAiICJKb2huIEdvZXJ6ZW4iICJPZmZsaW5lSU1BUCBNYW51YWwiCi0rICAgICMgLlRIIGd2IDNndWlsZSAiMTMgTWF5IDIwMTAiCi0rICAgICMuVEggIkdJVFwtQVJDSElNUE9SVCIgIjEiICIwOS8xMy8yMDEwIiAiR2l0IDFcJi43XCYuMSIgIkdpdCBNYW51YWwiCi0rICAgICMgLlRIIExESVJFQ1RPUkQgOCAiMjAxMC0xMC0yMCIgInBlcmwgdjUuMTIuMiIgIlVzZXIgQ29udHJpYnV0ZWQgUGVybCBEb2N1bWVudGF0aW9uIgotKyAgICAjIC5USCBjY21ha2UgMSAiRmVicnVhcnkgMDUsIDIwMTIiICJjY21ha2UgMi44LjciCi0rICAgICMgLlRI4oCCImFwcGVuZGVyLmgi4oCCM+KAgiJUdWXigIJBdWfigIIzMeKAgjIwMTAi4oCCIlZlcnNpb27igIIxLjIuMSLigIIibG9nNGMi4oCCXCLigIItKi3igIJucm9mZuKAgi0qLQotKyAgICAjIC5USCBBUkNIICIxIiAiU2VwdGVtYmVyIDIwMTAiICJHTlUgY29yZXV0aWxzIDguNSIgIlVzZXIgQ29tbWFuZHMiCi0rICAgICMgLlRIICJHQ00tQ0FMSUJSQVRFIiAiMSIgIjAzIEZlYnJ1YXJ5IDIwMTIiICIiICIiCi0rICAgICMuVEggTG9jYWxlOjpQbzRhOjpYbWwucG0gM3BtICIyMDE1LTAxLTMwIiAiUG80YSBUb29scyIgIlBvNGEgVG9vbHMiCi0rICAgIGxvY2FsIGY9JDEKLSsgICAgIyAoLlRIICAgcXVvdGVkIHNlY3Rpb24pIChxdW90ZWRfZGF0ZSkoKikKLSsgICAgc2VkIC1pIC1lICdzfF5cKFtbOmJsYW5rOl1dKlwuVEhbWzpibGFuazpdXVwrIlteIl1cKyJbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKCJbXiJdXCsiXClcKFtbOmJsYW5rOl1dXCsuKlwpXD98XDEgInFxMjAwMC0wMS0wMSJcM3wnICRmCi0rICAgICMgKC5USCB1bnF1b3RlZCBzZWN0aW9uKSAocXVvdGVkX2RhdGUpKCopCi0rICAgIHNlZCAtaSAtZSAnc3xeXChbWzpibGFuazpdXSpcLlRIW1s6Ymxhbms6XV1cK1teIl1bXls6Ymxhbms6XV1cK1tbOmJsYW5rOl1dXCtbXls6Ymxhbms6XV1cK1wpW1s6Ymxhbms6XV1cK1woIlteIl1cKyJcKVwoW1s6Ymxhbms6XV1cKy4qXClcP3xcMSAidXEyMDAwLTAyLTAyIlwzfCcgJGYKLSsgICAgIyAoLlRIICAgcXVvdGVkIHNlY3Rpb24pICh1bnF1b3RlZF9kYXRlKSgqKQotKyAgICBzZWQgLWkgLWUgJ3N8XlwoW1s6Ymxhbms6XV0qXC5USFtbOmJsYW5rOl1dXCsiW14iXVwrIltbOmJsYW5rOl1dXCtbXls6Ymxhbms6XV1cK1wpW1s6Ymxhbms6XV1cK1woW14iXVteWzpibGFuazpdXVwrXClcKFtbOmJsYW5rOl1dXCsuKlwpXD98XDEgcXUyMDAwLTAzLTAzXDN8JyAkZgotKyAgICAjICguVEggdW5xdW90ZWQgc2VjdGlvbikgKHVucXVvdGVkX2RhdGUpKCopCi0rICAgIHNlZCAtaSAtZSAnc3xeXChbWzpibGFuazpdXSpcLlRIW1s6Ymxhbms6XV1cK1teIl1bXls6Ymxhbms6XV1cK1tbOmJsYW5rOl1dXCtbXls6Ymxhbms6XV1cK1wpW1s6Ymxhbms6XV1cK1woW14iXVteWzpibGFuazpdXVwrXClcKFtbOmJsYW5rOl1dXCsuKlwpXD98XDEgdXUyMDAwLTA0LTA0XDN8JyAkZgotK30KLSsKLStzdHJpcF9udW1iZXJlZF9hbmNob3JzKCkKLSt7Ci0rICAjIFJlbW92ZSBudW1iZXJlZCBhbmNob3JzIG9uIERvY2Jvb2sgLyBIVE1MIGZpbGVzLgotKyAgIyBUaGlzIHNob3VsZCBiZSBzYXZlIHNpbmNlIHdlIHJlbW92ZSB0aGVtIGZyb20gb2xkIGFuZCBuZXcgZmlsZXMuCi0rICAjIEEgdHJhaWxpbmcgPC9hPiBvciA8L2Rpdj4gdGFnIHdpbGwgc3RheSBhbHNvIG9uIGJvdGggZmlsZXMuCi0rICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgc2VkIC1pIC1lICdzJTxbIF0qYVsgXVwrbmFtZVtePF0qWzAtOV1cK1tePF0qJSVnJyBcCi0rICAgICAtZSAncyU8WyBdKmFbIF1cK2hyZWZbXjxdKiNbXjxdKlswLTldXCtbXjxdKiUlZycgXAotKyAgICAgLWUgJ3MlPFtePF0qaWQ9ImZ0blwuW148XSpbMC05XVwrW148XSolJWcnICRmCi0rICBkb25lCi0rfQotKwotKwotK2NoZWNrX2NvbXByZXNzZWRfZmlsZSgpCi0rewotKyAgbG9jYWwgZmlsZT0kMQotKyAgbG9jYWwgZXh0PSQyCi0rICBsb2NhbCB0bXBkaXI9YG1rdGVtcCAtZGAKLSsgIGxvY2FsIGZ0eXBlCi0rICBsb2NhbCByZXQ9MAotKyAgZWNobyAiJGV4dCBmaWxlIHdpdGggb2RkIGZpbGVuYW1lOiAkZmlsZSIKLSsgIGlmIHRlc3QgLW4gIiR0bXBkaXIiOyB0aGVuCi0rICAgIG1rZGlyICR0bXBkaXIve29sZCxuZXd9Ci0rICAgIGNwIC0tcGFyZW50cyAtLWRlcmVmZXJlbmNlIG9sZC8kZmlsZSAkdG1wZGlyLwotKyAgICBjcCAtLXBhcmVudHMgLS1kZXJlZmVyZW5jZSBuZXcvJGZpbGUgJHRtcGRpci8KLSsgICAgaWYgcHVzaGQgJHRtcGRpciA+IC9kZXYvbnVsbCA7IHRoZW4KLSsgICAgICBjYXNlICIkZXh0IiBpbgotKyAgICAgICAgYnoyKQotKyAgICAgICAgICBtdiBvbGQvJGZpbGV7LC5iejJ9Ci0rICAgICAgICAgIG12IG5ldy8kZmlsZXssLmJ6Mn0KLSsgICAgICAgICAgYnppcDIgLWQgb2xkLyRmaWxlLmJ6MgotKyAgICAgICAgICBiemlwMiAtZCBuZXcvJGZpbGUuYnoyCi0rICAgICAgICAgIDs7Ci0rICAgICAgICBnemlwKQotKyAgICAgICAgICBtdiBvbGQvJGZpbGV7LC5nen0KLSsgICAgICAgICAgbXYgbmV3LyRmaWxleywuZ3p9Ci0rICAgICAgICAgIGd6aXAgLWQgb2xkLyRmaWxlLmd6Ci0rICAgICAgICAgIGd6aXAgLWQgbmV3LyRmaWxlLmd6Ci0rICAgICAgICAgIDs7Ci0rICAgICAgICB4eikKLSsgICAgICAgICAgbXYgb2xkLyRmaWxleywueHp9Ci0rICAgICAgICAgIG12IG5ldy8kZmlsZXssLnh6fQotKyAgICAgICAgICB4eiAtZCBvbGQvJGZpbGUueHoKLSsgICAgICAgICAgeHogLWQgbmV3LyRmaWxlLnh6Ci0rICAgICAgICAgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgIGZ0eXBlPWAvdXNyL2Jpbi9maWxlIG9sZC8kZmlsZSB8IHNlZCAnc0BeW146XVwrOltbOmJsYW5rOl1dKkBAJ2AKLSsgICAgICBjYXNlICRmdHlwZSBpbgotKyAgICAgICAgUE9TSVhcIHRhclwgYXJjaGl2ZSkKLSsgICAgICAgICAgZWNobyAiJGV4dCBjb250ZW50IGlzOiAkZnR5cGUiCi0rICAgICAgICAgIG12IG9sZC8kZmlsZXssLnRhcn0KLSsgICAgICAgICAgbXYgbmV3LyRmaWxleywudGFyfQotKyAgICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZX0udGFyOyB0aGVuCi0rICAgICAgICAgICAgcmV0PTEKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgOzsKLSsgICAgICAgIEFTQ0lJXCBjcGlvXCBhcmNoaXZlXCAqKQotKyAgICAgICAgICBlY2hvICIkZXh0IGNvbnRlbnQgaXM6ICRmdHlwZSIKLSsgICAgICAgICAgbXYgb2xkLyRmaWxleywuY3Bpb30KLSsgICAgICAgICAgbXYgbmV3LyRmaWxleywuY3Bpb30KLSsgICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGV9LmNwaW87IHRoZW4KLSsgICAgICAgICAgICByZXQ9MQotKyAgICAgICAgICBmaQotKyAgICAgICAgICA7OwotKyAgICAgICAgKikKLSsgICAgICAgICAgZWNobyAidW5oYW5kbGVkICRleHQgY29udGVudDogJGZ0eXBlIgotKyAgICAgICAgICBpZiAhIGRpZmZfdHdvX2ZpbGVzOyB0aGVuCi0rICAgICAgICAgICAgcmV0PTEKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgcG9wZCA+IC9kZXYvbnVsbAotKyAgICBmaQotKyAgICBybSAtcmYgIiR0bXBkaXIiCi0rICBmaQotKyAgcmV0dXJuICRyZXQKLSt9Ci0rCi0rY2hlY2tfc2luZ2xlX2ZpbGUoKQotK3sKLSsgIGxvY2FsIGZpbGU9IiQxIgotKyAgY2FzZSAkZmlsZSBpbgotKyAgICAqLnNwZWMpCi0rICAgICAgIHNlZCAtaSAtZSAicyxSZWxlYXNlOi4qJHJlbGVhc2UxLFJlbGVhc2U6IEBSRUxFQVNFQCwiIG9sZC8kZmlsZQotKyAgICAgICBzZWQgLWkgLWUgInMsUmVsZWFzZTouKiRyZWxlYXNlMixSZWxlYXNlOiBAUkVMRUFTRUAsIiBuZXcvJGZpbGUKLSsgICAgICAgOzsKLSsgICAgKi5leGUubWRifCouZGxsLm1kYikKLSsgICAgICAgIyBKdXN0IGRlYnVnIGluZm9ybWF0aW9uLCB3ZSBjYW4gc2tpcCB0aGVtCi0rICAgICAgIGVjaG8gIiRmaWxlIHNraXBwZWQgYXMgZGVidWcgZmlsZS4iCi0rICAgICAgIHJldHVybiAwCi0rICAgICAgIDs7Ci0rICAgICouYSkKLSsgICAgICAgZmxpc3Q9YGFyIHQgbmV3LyRmaWxlYAotKyAgICAgICBwd2Q9JFBXRAotKyAgICAgICBmZGlyPWBkaXJuYW1lICRmaWxlYAotKyAgICAgICBjZCBvbGQvJGZkaXIKLSsgICAgICAgYXIgeCBgYmFzZW5hbWUgJGZpbGVgCi0rICAgICAgIGNkICRwd2QvbmV3LyRmZGlyCi0rICAgICAgIGFyIHggYGJhc2VuYW1lICRmaWxlYAotKyAgICAgICBjZCAkcHdkCi0rICAgICAgIGZvciBmIGluICRmbGlzdDsgZG8KLSsgICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAkZmRpci8kZjsgdGhlbgotKyAgICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICAgICBmaQotKyAgICAgICBkb25lCi0rICAgICAgIHJldHVybiAwCi0rICAgICAgIDs7Ci0rICAgICouY3BpbykKLSsgICAgICAgZmxpc3Q9YGNwaW8gLS1xdWlldCAtLWxpc3QgLS1mb3JjZS1sb2NhbCA8ICJuZXcvJGZpbGUiYAotKyAgICAgICBwd2Q9JFBXRAotKyAgICAgICBmZGlyPSRmaWxlLmV4dHJhY3QuJFBQSUQuJCQKLSsgICAgICAgbWtkaXIgb2xkLyRmZGlyIG5ldy8kZmRpcgotKyAgICAgICBjZCBvbGQvJGZkaXIKLSsgICAgICAgY3BpbyAtLXF1aWV0IC0tZXh0cmFjdCAtLWZvcmNlLWxvY2FsIDwgIi4uLyR7ZmlsZSMjKi99IgotKyAgICAgICBjZCAkcHdkL25ldy8kZmRpcgotKyAgICAgICBjcGlvIC0tcXVpZXQgLS1leHRyYWN0IC0tZm9yY2UtbG9jYWwgPCAiLi4vJHtmaWxlIyMqL30iCi0rICAgICAgIGNkICRwd2QKLSsgICAgICAgbG9jYWwgcmV0PTAKLSsgICAgICAgZm9yIGYgaW4gJGZsaXN0OyBkbwotKyAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZkaXIvJGY7IHRoZW4KLSsgICAgICAgICAgIHJldD0xCi0rICAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgZmkKLSsgICAgICAgICBmaQotKyAgICAgICBkb25lCi0rICAgICAgIHJtIC1yZiBvbGQvJGZkaXIgbmV3LyRmZGlyCi0rICAgICAgIHJldHVybiAkcmV0Ci0rICAgICAgIDs7Ci0rICAgICoudGFyfCoudGFyLmJ6MnwqLnRhci5nenwqLnRnenwqLnRiejIpCi0rICAgICAgIGZsaXN0PWB0YXIgdGYgbmV3LyRmaWxlYAotKyAgICAgICBwd2Q9JFBXRAotKyAgICAgICBmZGlyPWBkaXJuYW1lICRmaWxlYAotKyAgICAgICBjZCBvbGQvJGZkaXIKLSsgICAgICAgdGFyIHhmIGBiYXNlbmFtZSAkZmlsZWAKLSsgICAgICAgY2QgJHB3ZC9uZXcvJGZkaXIKLSsgICAgICAgdGFyIHhmIGBiYXNlbmFtZSAkZmlsZWAKLSsgICAgICAgY2QgJHB3ZAotKyAgICAgICBsb2NhbCByZXQ9MAotKyAgICAgICBmb3IgZiBpbiAkZmxpc3Q7IGRvCi0rICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAkZmRpci8kZjsgdGhlbgotKyAgICAgICAgICAgcmV0PTEKLSsgICAgICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0rICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICBmaQotKyAgICAgICAgIGZpCi0rICAgICAgIGRvbmUKLSsgICAgICAgcmV0dXJuICRyZXQKLSsgICAgICAgOzsKLSsgICAgKi56aXB8Ki5qYXJ8Ki53YXIpCi0rICAgICAgIGNkIG9sZAotKyAgICAgICB1bmphcl9sIC4vJGZpbGUgfHNvcnQgPiBmbGlzdAotKyAgICAgICAjICAxMC0wNS0yMDEwIDE0OjM5Ci0rICAgICAgIHNlZCAtaSAtZSAicywgWzAtOV1bMC05XS1bMC05XVswLTldLVswLTldXCsgWzAtOV1bMC05XTpbMC05XVswLTldICwgZGF0ZSAsIiBmbGlzdAotKyAgICAgICAjIDIwMTItMDItMDMgMDc6NTkKLSsgICAgICAgc2VkIC1pIC1lICJzLCAyMFswLTldWzAtOV0tWzAtOV1bMC05XS1bMC05XVswLTldIFswLTldWzAtOV06WzAtOV1bMC05XSAsIGRhdGUgLCIgZmxpc3QKLSsgICAgICAgY2QgLi4vbmV3Ci0rICAgICAgIHVuamFyX2wgLi8kZmlsZSB8c29ydD4gZmxpc3QKLSsgICAgICAgc2VkIC1pIC1lICJzLCBbMC05XVswLTldLVswLTldWzAtOV0tWzAtOV1cKyBbMC05XVswLTldOlswLTldWzAtOV0gLCBkYXRlICw7ICIgZmxpc3QKLSsgICAgICAgc2VkIC1pIC1lICJzLCAyMFswLTldWzAtOV0tWzAtOV1bMC05XS1bMC05XVswLTldIFswLTldWzAtOV06WzAtOV1bMC05XSAsIGRhdGUgLCIgZmxpc3QKLSsgICAgICAgY2QgLi4KLSsgICAgICAgaWYgISBjbXAgLXMgb2xkL2ZsaXN0IG5ldy9mbGlzdDsgdGhlbgotKyAgICAgICAgICBlY2hvICIkZmlsZSBoYXMgZGlmZmVyZW50IGZpbGUgbGlzdCIKLSsgICAgICAgICAgZGlmZiAtdSBvbGQvZmxpc3QgbmV3L2ZsaXN0Ci0rICAgICAgICAgIHJldHVybiAxCi0rICAgICAgIGZpCi0rICAgICAgIGZsaXN0PWBncmVwIGRhdGUgbmV3L2ZsaXN0IHwgc2VkIC1lICdzLC4qIGRhdGUgLCwnYAotKyAgICAgICBwd2Q9JFBXRAotKyAgICAgICBmZGlyPWBkaXJuYW1lICRmaWxlYAotKyAgICAgICBjZCBvbGQvJGZkaXIKLSsgICAgICAgdW5qYXIgYGJhc2VuYW1lICRmaWxlYAotKyAgICAgICBjZCAkcHdkL25ldy8kZmRpcgotKyAgICAgICB1bmphciBgYmFzZW5hbWUgJGZpbGVgCi0rICAgICAgIGNkICRwd2QKLSsgICAgICAgbG9jYWwgcmV0PTAKLSsgICAgICAgZm9yIGYgaW4gJGZsaXN0OyBkbwotKyAgICAgICAgIGlmIHRlc3QgLWYgbmV3LyRmZGlyLyRmICYmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZkaXIvJGY7IHRoZW4KLSsgICAgICAgICAgIHJldD0xCi0rICAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotKyAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgZmkKLSsgICAgICAgICBmaQotKyAgICAgICBkb25lCi0rICAgICAgIHJldHVybiAkcmV0OzsKLSsgICAgICoucHljfCoucHlvKQotKyAgICAgICAgcGVybCAtZSAib3BlbiBmaCwgJys8JywgJ29sZC8kZmlsZSc7IHNlZWsgZmgsIDQsIFNFRUtfU0VUOyBwcmludCBmaCAnMDAwMCc7IgotKyAgICAgICAgcGVybCAtZSAib3BlbiBmaCwgJys8JywgJ25ldy8kZmlsZSc7IHNlZWsgZmgsIDQsIFNFRUtfU0VUOyBwcmludCBmaCAnMDAwMCc7IgotKyAgICAgICAgOzsKLSsgICAgICouYnoyKQotKyAgICAgICAgYnVuemlwMiAtYyBvbGQvJGZpbGUgPiBvbGQvJHtmaWxlLy5iejIvfQotKyAgICAgICAgYnVuemlwMiAtYyBuZXcvJGZpbGUgPiBuZXcvJHtmaWxlLy5iejIvfQotKyAgICAgICAgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlLy5iejIvfQotKyAgICAgICAgcmV0dXJuICQ/Ci0rICAgICAgICA7OwotKyAgICAgKi5neikKLSsgICAgICAgIGd1bnppcCAtYyBvbGQvJGZpbGUgPiBvbGQvJHtmaWxlLy5nei99Ci0rICAgICAgICBndW56aXAgLWMgbmV3LyRmaWxlID4gbmV3LyR7ZmlsZS8uZ3ovfQotKyAgICAgICAgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlLy5nei99Ci0rICAgICAgICByZXR1cm4gJD8KLSsgICAgICAgIDs7Ci0rICAgICAqLnJwbSkKLSsJJHNlbGZfc2NyaXB0IC1hIG9sZC8kZmlsZSBuZXcvJGZpbGUKLSsgICAgICAgIHJldHVybiAkPwotKyAgICAgICAgOzsKLSsgICAgICpwbmcpCi0rCSMgVHJ5IHRvIHJlbW92ZSB0aW1lc3RhbXBzLCBvbmx5IGlmIGNvbnZlcnQgZnJvbSBJbWFnZU1hZ2ljayBpcyBpbnN0YWxsZWQKLSsgICAgICAgIGlmIFtbICQodHlwZSAtcCBjb252ZXJ0KSBdXTsgdGhlbgotKwkgIGNvbnZlcnQgb2xkLyRmaWxlICtzZXQgZGF0ZTpjcmVhdGUgK3NldCBkYXRlOm1vZGlmeSBvbGQvJHtmaWxlLy5wbmcvX24ucG5nfQotKwkgIGNvbnZlcnQgb2xkLyRmaWxlICtzZXQgZGF0ZTpjcmVhdGUgK3NldCBkYXRlOm1vZGlmeSBuZXcvJHtmaWxlLy5wbmcvX24ucG5nfQotKwkgIGlmICEgY21wIC1zIG9sZC8ke2ZpbGUvLnBuZy9fbi5wbmd9IG5ldy8ke2ZpbGUvLnBuZy9fbi5wbmd9OyB0aGVuCi0rCSAgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgKCRmdHlwZSkiCi0rCSAgICAgIGhleGR1bXAgLUMgb2xkLyR7ZmlsZS8ucG5nL19uLnBuZ30gPiAkZmlsZTEKLSsJICAgICAgaGV4ZHVtcCAtQyBuZXcvJHtmaWxlLy5wbmcvX24ucG5nfSA+ICRmaWxlMgotKwkgICAgICBkaWZmIC11ICRmaWxlMSAkZmlsZTIgfCBoZWFkIC1uIDIwCi0rCSAgICAgIHJldHVybiAxCi0rCSAgZmkKLSsJICByZXR1cm4gMAotKwlmaQotKyAgICAgICAgOzsKLSsgICAgIC91c3Ivc2hhcmUvbG9jYWxlLyovTENfTUVTU0FHRVMvKi5tb3wvdXNyL3NoYXJlL2xvY2FsZS1idW5kbGUvKi9MQ19NRVNTQUdFUy8qLm1vKQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgIHNlZCAtaSAtZSAicyxQT1QtQ3JlYXRpb24tRGF0ZTogLi4uLi0uLi0uLiAuLjouLisuLi4uLFBPVC1DcmVhdGlvbi1EYXRlOiAxOTcwLTAxLTAxIDAwOjAwKzAwMDAsIiAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL2RvYy9wYWNrYWdlcy8qLyouaHRtbHxcCi0rICAgICAvdXNyL3NoYXJlL2RvYy9rZGUvSFRNTC8qLyovKi5odG1sfC91c3Ivc2hhcmUvZG9jLyovaHRtbC8qLmh0bWwpCi0rICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0rICAgICAgICAgIyB0ZXhpMmh0bWwgb3V0cHV0LCBlLmcuIGluIGt2bSwgaW5kZW50LCBxZW11Ci0rCSBzZWQgLWkgLWUgInN8XjwhLS0gQ3JlYXRlZCBvbiAuKiwgMjAuLiBieSB0ZXhpMmh0bWwgLlwuLi58PCEtLSBDcmVhdGVkIG9uIEF1Z3VzdCA3LCAyMDA5IGJ5IHRleGkyaHRtbCAxLjgyfCIgJGYKLSsJIHNlZCAtaSAtZSAnc3xeICpUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQgYnkgPGVtPkF1dG9idWlsZDwvZW0+IG9uIDxlbT4uKiwgMjAuLjwvZW0+IHVzaW5nIDxhIGhyZWY9Imh0dHA6Ly93d3cubm9uZ251Lm9yZy90ZXhpMmh0bWwvIj48ZW0+dGV4aTJodG1sIC5cLi4uPC9lbT48L2E+LiR8ICBUaGlzIGRvY3VtZW50IHdhcyBnZW5lcmF0ZWQgYnkgPGVtPkF1dG9idWlsZDwvZW0+IG9uIDxlbT5BdWd1c3QgNywgMjAwOTwvZW0+IHVzaW5nIDxhIGhyZWY9Imh0dHA6Ly93d3cubm9uZ251Lm9yZy90ZXhpMmh0bWwvIj48ZW0+dGV4aTJodG1sIDEuODI8L2VtPjwvYT4ufCcgJGYKLSsJICMgZG94eWdlbiBkb2N1LCBlLmcuIGluIGxpYnNzaCBhbmQgbG9nNGMKLSsJIHNlZCAtaSAtZSAnc3xHZW5lcmF0ZWQgb24gLi4uIC4uLiBbMC05XSogWzAtOV0qOlswLTldWzAtOV06WzAtOV1bMC05XSAyMFswLTldWzAtOV0gZm9yIHxHZW5lcmF0ZWQgb24gTW9uIE1heSAxMCAyMDo0NTowMCAyMDEwIGZvciB8JyAkZgotKwkgIyBHZW5lcmF0ZWQgb24gU2F0IEF1ZyAxNCAyMDEwIDE2OjQ5OjQ4IGZvciBsaWJzc2gKLSsJIHNlZCAtaSAtZSAnc3xHZW5lcmF0ZWQgb24gLi4uIC4uLiBbMC05XSogMjBbMC05XVswLTldIFswLTldKjpbMC05XVswLTldOlswLTldWzAtOV0gZm9yIHxHZW5lcmF0ZWQgb24gTW9uIE1heSAxMCAyMDo0NTowMCAyMDEwIGZvciB8JyAkZgotKyAgICAgICBkb25lCi0rICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLSsgICAgICAgOzsKLSsgICAgIC91c3Ivc2hhcmUvamF2YWRvYy8qLmh0bWwgfFwKLSsgICAgIC91c3Ivc2hhcmUvamF2YWRvYy8qLyouaHRtbHwvdXNyL3NoYXJlL2phdmFkb2MvKi8qLyouaHRtbCkKLSsgICAgICAgc3RyaXBfbnVtYmVyZWRfYW5jaG9ycwotKyAgICAgICAjIFRoZXJlIGFyZSBtb3JlIHRpbWVzdGFtcHMgaW4gaHRtbCwgc28gZmFyIHdlIGhhbmRsZSBvbmx5IHNvbWUgcHJpbWl0aXZlIHZlcnNpb25zLgotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgICMgSmF2YWRvYzoKLSsgICAgICAgICAgIyA8aGVhZD4KLSsgICAgICAgICAgIyA8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jICh2ZXJzaW9uIDEuNy4wXzc1KSBvbiBUdWUgRmViIDAzIDAyOjIwOjEyIEdNVCAyMDE1IC0tPgotKyAgICAgICAgICAjIDwhLS0gR2VuZXJhdGVkIGJ5IGphdmFkb2Mgb24gVHVlIEZlYiAwMyAwMDowMjo0OCBHTVQgMjAxNSAtLT4KLSsgICAgICAgICAgIyA8bWV0YSBuYW1lPSJkYXRlIiBjb250ZW50PSIyMDE1LTAyLTAzIj4KLSsgICAgICAgICAgIyA8L2hlYWQ+Ci0rICAgICAgICAgIHNlZCAtaSAtZSAnCi0rICAgICAgICAgICAgL148aGVhZD4vewotKyAgICAgICAgICAgICAgOiBuZXh0Ci0rICAgICAgICAgICAgICBuCi0rICAgICAgICAgICAgICAvXjxcL2hlYWQ+L3sKLSsgICAgICAgICAgICAgICAgYiBlbmRfaGVhZAotKyAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgICAgcy9eXCg8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jXCkgXCgoXChidWlsZFx8dmVyc2lvblwpIFswLTkuX11cKykgb24gLi4uIC4uLiAuLiAuLjouLjouLiBcKEdNVFx8VVRDXCkgLi4uLlwpIFwoLS0+XCkvXDEgc29tZS1kYXRlLXJlbW92ZWQtYnktYnVpbGQtY29tcGFyZSBcNS8KLSsgICAgICAgICAgICAgIHQgbmV4dAotKyAgICAgICAgICAgICAgcy9eXCg8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jXCkgXChvbiAuLi4gLi4uIC4uIC4uOi4uOi4uIFwoR01UXHxVVENcKSAuLi4uXCkgXCgtLT5cKS9cMSBzb21lLWRhdGUtcmVtb3ZlZC1ieS1idWlsZC1jb21wYXJlIFwzLwotKyAgICAgICAgICAgICAgdCBuZXh0Ci0rICAgICAgICAgICAgICBzL148bWV0YSBuYW1lPSJkYXRlIiBjb250ZW50PSJbMC05XVx7NFx9LVswLTldXHsyXH0tWzAtOV1cezJcfSI+LzxtZXRhIG5hbWU9ImRhdGUiIGNvbnRlbnQ9InNvbWUtZGF0ZS1yZW1vdmVkLWJ5LWJ1aWxkLWNvbXBhcmUiPi8KLSsgICAgICAgICAgICAgIGIgbmV4dAotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgICA6IGVuZF9oZWFkCi0rICAgICAgICAgICcgJGYKLSsgICAgICAgICAjIEdqZG9jIEh0bWxEb2NsZXQ6Ci0rCSBzZWQgLWkgLWUgJ3MlR2VuZXJhdGVkIGJ5IEdqZG9jIEh0bWxEb2NsZXQgWzAtOSwuXSosIHBhcnQgb2YgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2NsYXNzcGF0aC9jcC10b29scy8iIHRpdGxlPSIiIHRhcmdldD0iX3RvcCI+R05VIENsYXNzcGF0aCBUb29sczwvYT4sIG9uIC4qLCAyMC4uIFswLTldKjouLjouLiBcKGFcfHBcKVwubVwuIEdNVC4lR2VuZXJhdGVkIGJ5IEdqZG9jLiUnICRmCi0rCSBzZWQgLWkgLWUgJ3MlPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9nbnUub3JnLy8vRFREIFhIVE1MIDEuMSBwbHVzIFRhcmdldCAxLjAvL0VOIlwoLipcKUdOVSBDbGFzc3BhdGggVG9vbHM8L2E+LCBvbiBbQS1aXVthLXpdKiBbMC05XSosIDIwPz8gWzAtOV0qOj8/Oj8/IFwoYXxwXClcLm1cLiBHTVQuPC9wPiU8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL2dudS5vcmcvLy9EVEQgWEhUTUwgMS4xIHBsdXMgVGFyZ2V0IDEuMC8vRU4iXDFHTlUgQ2xhc3NwYXRoIFRvb2xzPC9hPiwgb24gSmFudWFyeSAxLCAyMDA5IDA6MDA6MDAgYS5tLiBHTVQuPC9wPiUnICRmCi0rCSBzZWQgLWkgLWUgJ3MlPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9nbnUub3JnLy8vRFREXCguKkdOVSBDbGFzc3BhdGggVG9vbHM8L2E+XCksIG9uIFthLXpBLVpdKiBbMC05XVswLTldLCAyMC4uIFswLTldKjouLjouLiBcKGFcfHBcKVwubVwuIEdNVC48L3A+JTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vZ251Lm9yZy8vL0RURFwxLG9uIE1heSAxLCAyMDEwIDE6MTE6NDIgcC5tLiBHTVQuPC9wPiUnICRmCi0rCSAjIGRlcHJlY2F0ZWQtbGlzdCBpcyByYW5kb21seSBvcmRlcmVkLCBzb3J0IGl0IGZvciBjb21wYXJpc29uCi0rCSBjYXNlICRmIGluCi0rCSAgICovZGVwcmVjYXRlZC1saXN0Lmh0bWwpCi0rCSAgICAgc29ydCAtbyAkZiAkZgotKwkgICAgIDs7Ci0rCSBlc2FjCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgIC91c3Ivc2hhcmUvamF2YWRvYy9namRvYy5wcm9wZXJ0aWVzIHxcCi0rICAgICAvdXNyL3NoYXJlL2phdmFkb2MvKi9namRvYy5wcm9wZXJ0aWVzKQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKwkgc2VkIC1pIC1lICdzfF4jW0EtWl1bYS16XVx7Mlx9IFtBLVpdW2Etel1cezJcfSBbMC05XVx7Mlx9IC4uOi4uOi4uIEdNVCAyMC4uJHwjRnJpIEphbiAwMSAxMToyNzozNiBHTVQgMjAwOXwnICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgICovZm9udHMuc2NhbGV8Ki9mb250cy5kaXJ8Ki9lbmNvZGluZ3MuZGlyKQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgICMgc29ydCBmaWxlcyBiZWZvcmUgY29tcGFyaW5nCi0rICAgICAgICAgc29ydCAtbyAkZiAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdmFyL2FkbS9wZXJsLW1vZHVsZXMvKikKLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICBzZWQgLWkgLWUgJ3N8Xj1oZWFkMiAuLi4gLi4uIC4uIC4uOi4uOi4uIC4uLi46IEM8TW9kdWxlPnw9aGVhZDIgV2VkIEp1bCAgMSAwMDowMDowMCAyMDA5OiBDPE1vZHVsZT58JyAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL21hbi9tYW4zLyozcG0pCi0rICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0rICAgICAgICAgc2VkIC1pIC1lICdzfCAzICIyMC4uLS4uLS4uIiAicGVybCB2NS4uLi4uIiAiVXNlciBDb250cmlidXRlZCBQZXJsIERvY3VtZW50YXRpb24iJHwgMyAiMjAwOS0wMS0wMSIgInBlcmwgdjUuMTAuMCIgIlVzZXIgQ29udHJpYnV0ZWQgUGVybCBEb2N1bWVudGF0aW9uInwnICRmCi0rICAgICAgICAgdHJpbV9tYW5fVEggJGYKLSsgICAgICAgICB0cmltX21hbl9maXJzdF9saW5lICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgIC91c3Ivc2hhcmUvbWFuLyovbWFuKnwvdXNyL3NoYXJlL21hbi9tYW4qfC91c3IvbGliL3RleG1mL2RvYy9tYW4vKi8qKQotKwotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgIHRyaW1fbWFuX1RIICRmCi0rICAgICAgICAgdHJpbV9tYW5fZmlyc3RfbGluZSAkZgotKyAgICAgICAgICMgZ2VuZXJhdGVkIGJ5IGRvY2Jvb2sgeG1sOgotKyAgICAgICAgICMuXCIgICAgICBEYXRlOiAwOS8xMy8yMDEwCi0rICAgICAgICAgc2VkIC1pIC1lICdzfERhdGU6IFswLTFdWzAtOV0vWzAtOV1bMC05XS8yMDFbMC05XXxEYXRlOiAwOS8xMy8yMDEwfCcgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAgKi5lbGMpCi0rICAgICAgICMgZW1hY3MgbGlzcCBmaWxlcwotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKyAgICAgICAgIHNlZCAtaSAtZSAnc3xDb21waWxlZCBieSBhYnVpbGRALiogb24gLi4uIC4uLiAuLiAuLjouLjouLiAyMC4uJHxjb21waWxlZCBieSBhYnVpbGRAYnVpbGRob3N0IG9uIFdlZCBKdWwgMDEgMDA6MDA6MDAgMjAwOXwnICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgOzsKLSsgICAgIC92YXIvbGliL3RleG1mL3dlYjJjLyovKmZtdCB8XAotKyAgICAgL3Zhci9saWIvdGV4bWYvd2ViMmMvbWV0YWZvbnQvKi5iYXNlfFwKLSsgICAgIC92YXIvbGliL3RleG1mL3dlYjJjL21ldGFwb3N0LyoubWVtKQotKyAgICAgICAjIGJpbmFyeSBkdW1wIG9mIFRlWCBhbmQgTWV0YWZvbnQgZm9ybWF0cywgd2UgY2FuIGlnbm9yZSB0aGVtIGZvciBnb29kCi0rICAgICAgIGVjaG8gImRpZmZlcmVuY2UgaW4gJGZpbGUgaWdub3JlZC4iCi0rICAgICAgIHJldHVybiAwCi0rICAgICAgIDs7Ci0rICAgICAqL2xpYnRvb2wpCi0rICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0rCSAgc2VkIC1pIC1lICdzfF4jIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9zdCBbQS1aYS16MC05XSo6JHwjIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9zdCB4NDI6fCcgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAgL2V0Yy9tYWlsLypjZnwvZXRjL3NlbmRtYWlsLmNmKQotKyAgICAgICAjIGZyb20gc2VuZG1haWwgcGFja2FnZQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKwkgICMgLSAjIyMjIyBidWlsdCBieSBhYnVpbGRAYnVpbGQzMyBvbiBUaHUgTWF5IDYgMTE6MjE6MTcgVVRDIDIwMTAKLSsJICBzZWQgLWkgLWUgJ3N8YnVpbHQgYnkgYWJ1aWxkQFthLXowLTldKiBvbiAuLi4gLi4uIFswLTldKiBbMC05XSo6WzAtOV1bMC05XTpbMC05XVswLTldIC4qIDIwWzAtOV1bMC05XXxidWlsdCBieSBhYnVpbGRAYnVpbGQ0MiBvbiBUaHUgTWF5IDYgMTE6MjE6MTcgVVRDIDIwMTB8JyAkZgotKyAgICAgICBkb25lCi0rICAgICAgIDs7Ci0rICAgICAvdXNyL3NoYXJlL2RvYy9rZGUvSFRNTC8qLyovaW5kZXguY2FjaGV8L3Vzci9zaGFyZS9kb2Mva2RlL0hUTUwvKi8qLyovaW5kZXguY2FjaGV8XAotKyAgICAgL3Vzci9zaGFyZS9ndGstZG9jL2h0bWwvKi8qLmh0bWx8L3Vzci9zaGFyZS9ndGstZG9jL2h0bWwvKi8qLmRldmhlbHAyKQotKyAgICAgICAjIHZhcmlvdXMga2RlIGFuZCBndGsgcGFja2FnZXMKLSsgICAgICAgc3RyaXBfbnVtYmVyZWRfYW5jaG9ycwotKyAgICAgICA7OwotKyAgICAqL2NyZWF0ZWQucmlkKQotKyAgICAgICAjIHJ1YnkgZG9jdW1lbnRhdGlvbgotKyAgICAgICAjIGZpbGUganVzdCBjb250YWlucyBhIHRpbWVzdGFtcCBhbmQgbm90aGluZyBlbHNlLCBzbyBpZ25vcmUgaXQKLSsgICAgICAgZWNobyAiSWdub3JlICRmaWxlIgotKyAgICAgICByZXR1cm4gMAotKyAgICAgICA7OwotKyAgICAqL3Jkb2MvZmlsZXMvKi5odG1sKQotKyAgICAgICAjIHJ1YnkgZG9jdW1lbnRhdGlvbgotKyAgICAgICAjIDx0ZD5Nb27igIJTZXDigIIyMOKAgjE5OjAyOjQz4oCCKzAwMDDigIIyMDEwPC90ZD4KLSsgICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLSsgICAgICAgICAgc2VkIC1pIC1lICdzJTx0ZD5bQS1aXVthLXpdW2Etel0gW0EtWl1bYS16XVthLXpdIFswLTldXCsgWzAtOV1cKzpbMC05XVwrOlswLTldXCsgKzAwMDAgMjAxWzAtOV08L3RkPiU8dGQ+TW9u4oCCU2Vw4oCCMjDigIIxOTowMjo0M+KAgiswMDAw4oCCMjAxMDwvdGQ+JWcnICRmCi0rICAgICAgIGRvbmUKLSsgICAgICAgc3RyaXBfbnVtYmVyZWRfYW5jaG9ycwotKyAgICAgICA7OwotKyAgICAqL0xpbnV4KkVudi5TZXQuc2gpCi0rICAgICAgICMgTGlicmVPZmZpY2UgZmlsZXMsIGNvbnRhaW5zOgotKyAgICAgICAjIEdlbmVyYXRlZCBvbjogTW9uIEFwciAxOCAxMzoxOToyMiBVVEMgMjAxMQotKyAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotKwkgc2VkIC1pIC1lICdzJV4jIEdlbmVyYXRlZCBvbjouKlVUQyAyMDFbMC05XSAqJCUjIEdlbmVyYXRlZCBvbjogU29tZXRpbWUlZycgJGYKLSsgICAgICAgZG9uZQotKyAgICAgICA7OwotKyAgICAvdXNyL2xpYi9saWJyZW9mZmljZS9zb2x2ZXIvaW5jLyovZGVsaXZlci5sb2cpCi0rICAgICAgICMgTGlicmVPZmZpY2UgbG9nIGZpbGUKLSsgICAgICBlY2hvICJJZ25vcmUgJGZpbGUiCi0rICAgICAgcmV0dXJuIDAKLSsgICAgICA7OwotKyAgICAvdmFyL2FkbS91cGRhdGUtbWVzc2FnZXMvKnwvdmFyL2FkbS91cGRhdGUtc2NyaXB0cy8qKQotKyAgICAgICMgZW5jb2RlIHZlcnNpb24tcmVsZWFzZSBpbnNpZGUKLSsgICAgICBvbGRmbj1gZWNobyAiJGZpbGUifHNlZCAtZSBzLy0kcmVsZWFzZTIvLSRyZWxlYXNlMS87YAotKwotKyAgICAgICMgZmV0Y2htc3R0Zm9udHMgZW1iZWRzIHRoZSByZWxlYXNlIG51bWJlciBpbiB0aGUgdXBkYXRlIHNoZWxsIHNjcmlwdC4KLSsgICAgICBlY2hvIHNlZCAtaSAtZSAicy8tJHJlbGVhc2UxLy0kcmVsZWFzZTIvZzsiICJvbGQvJG9sZGZuIgotKyAgICAgIHNlZCAtaSAtZSAicy8tJHJlbGVhc2UxLy0kcmVsZWFzZTIvZzsiICJvbGQvJG9sZGZuIgotKwotKyAgICAgIGlmICEgZGlmZiAtdSBvbGQvJG9sZGZuIG5ldy8kZmlsZTsgdGhlbgotKyAgICAgICAgICAgZWNobyAiJG9sZGZuIGlzIG5vdCBzYW1lIGFzICRmaWxlIgotKyAgICAgICAgICAgcmV0dXJuIDEKLSsgICAgICBmaQotKyAgICAgIGVjaG8gIiRmaWxlIGFuZCAkb2xkZm4gYXJlIHNhbWUiCi0rICAgICAgcmV0dXJuIDAKLSsgICAgICA7OwotKyAgICAqLnBzKQotKyAgICAgIGZvciBmIGluICJvbGQvJGZpbGUiICJuZXcvJGZpbGUiOyBkbwotKyAgICAgICAgc2VkIC1pIC1lICcKLSsgICAgICAgICAgL14lJUNyZWF0aW9uRGF0ZTpbWzpibGFuazpdXS9kCi0rICAgICAgICAgIC9eJSVDcmVhdG9yOltbOmJsYW5rOl1dZ3JvZmZbWzpibGFuazpdXXZlcnNpb25bWzpibGFuazpdXS9kCi0rICAgICAgICAgIC9eJURWSVBTU291cmNlOltbOmJsYW5rOl1dL2QKLSsgICAgICAgICcgIiRmIgotKyAgICAgIGRvbmUKLSsgICAgOzsKLSsgICAgKnBkZikKLSsgICAgICAjIFBERiBmaWxlcyBjb250YWluIGEgdW5pcXVlIElELCByZW1vdmUgaXQKLSsgICAgICAjIEZvcm1hdCBvZiB0aGUgSUQgaXM6Ci0rICAgICAgIyAvSUQgWzw5QUNFMjQ3QTcwQ0Y5QkVBRkVFMTVFMTE2MjU5QkQ2RD4gPDlBQ0UyNDdBNzBDRjlCRUFGRUUxNUUxMTYyNTlCRDZEPl0KLSsgICAgICAjIHdpdGggb3B0aW9uYWwgc3BhY2VzLiBwZGZ0ZXggY3JlYXRlcyBhbHNvOgotKyAgICAgICMgL0NyZWF0aW9uRGF0ZSAoRDoyMDEyMDEwMzA4MzIwNlopCi0rICAgICAgIyAvTW9kRGF0ZSAoRDoyMDEyMDEwMzA4MzIwNlopCi0rICAgICAgIyBhbmQgcG9zc2libHkgWE1MIG1ldGFkYXRhIGFzIHdlbGwKLSsgICAgICBmb3IgZiBpbiAib2xkLyRmaWxlIiAibmV3LyRmaWxlIjsgZG8KLSsgICAgICAgIHNlZCAtaSBcCi0rICAgICAgICAgICAgJy9vYmovLC9lbmRvYmovewotKyAgICAgICAgICAgICAgIHMlL0lEIFw/XFsgXD88W14+XVwrPiBcPzxbXj5dXCs+IFw/XF0lL0lEcmFuZG9tJWc7Ci0rICAgICAgICAgICAgICAgcyUvQ3JlYXRpb25EYXRlIFw/KEQ6W14pXSopJS9DcmVhdGlvbkRhdGUgKEQ6IFhYWCklZzsKLSsgICAgICAgICAgICAgICBzJS9Nb2REYXRlIFw/KEQ6W14pXSopJS9Nb2REYXRlIChEOiBYWFgpJWc7Ci0rICAgICAgICAgICAgICAgcyU8cGRmOkNyZWF0aW9uRGF0ZT5bXjxdKjwvcGRmOkNyZWF0aW9uRGF0ZT4lPHBkZjpDcmVhdGlvbkRhdGU+WFhYPC9wZGY6Q3JlYXRpb25EYXRlPiVnOwotKyAgICAgICAgICAgICAgIHMlPHBkZjpNb2REYXRlPltePF0qPC9wZGY6TW9kRGF0ZT4lPHBkZjpNb2REYXRlPlhYWDwvcGRmOk1vZERhdGU+JWc7Ci0rICAgICAgICAgICAgICAgcyU8eGFwOkNyZWF0ZURhdGU+W148XSo8L3hhcDpDcmVhdGVEYXRlPiU8eGFwOkNyZWF0ZURhdGU+WFhYPC94YXA6Q3JlYXRlRGF0ZT4lZzsKLSsgICAgICAgICAgICAgICBzJTx4YXA6TW9kaWZ5RGF0ZT5bXjxdKjwveGFwOk1vZGlmeURhdGU+JTx4YXA6TW9kaWZ5RGF0ZT5YWFg8L3hhcDpNb2RpZnlEYXRlPiVnOwotKyAgICAgICAgICAgICAgIHMlPHhhcDpNZXRhZGF0YURhdGU+W148XSo8L3hhcDpNZXRhZGF0YURhdGU+JTx4YXA6TWV0YWRhdGFEYXRlPlhYWDwveGFwOk1ldGFkYXRhRGF0ZT4lZzsKLSsgICAgICAgICAgICB9JyAiJGYiCi0rICAgICAgZG9uZQotKyAgICAgIDs7Ci0rICBlc2FjCi0rCi0rICBmdHlwZT1gL3Vzci9iaW4vZmlsZSBvbGQvJGZpbGUgfCBzZWQgJ3NAXlteOl1cKzpbWzpibGFuazpdXSpAQCdgCi0rICBjYXNlICRmdHlwZSBpbgotKyAgICAgUEUzMlwgZXhlY3V0YWJsZSpNb25vXC9cLk5ldFwgYXNzZW1ibHkqKQotKyAgICAgICBlY2hvICJQRTMyIE1vbm8vLk5ldCBhc3NlbWJseTogJGZpbGUiCi0rICAgICAgIGlmIFsgLXggL3Vzci9iaW4vbW9ub2RpcyBdIDsgdGhlbgotKyAgICAgICAgIG1vbm9kaXMgb2xkLyRmaWxlIDI+L2Rldi9udWxsfHNlZCAtZSAncy9HVUlEID0gey4qfS9HVUlEID0geyA0MiB9LzsnPiAke2ZpbGUxfQotKyAgICAgICAgIG1vbm9kaXMgbmV3LyRmaWxlIDI+L2Rldi9udWxsfHNlZCAtZSAncy9HVUlEID0gey4qfS9HVUlEID0geyA0MiB9LzsnPiAke2ZpbGUyfQotKyAgICAgICAgIGlmICEgY21wIC1zICR7ZmlsZTF9ICR7ZmlsZTJ9OyB0aGVuCi0rICAgICAgICAgICBlY2hvICIkZmlsZSBkaWZmZXJzICgkZnR5cGUpIgotKyAgICAgICAgICAgZGlmZiAtdSAke2ZpbGUxfSAke2ZpbGUyfQotKyAgICAgICAgICAgcmV0dXJuIDEKLSsgICAgICAgICBmaQotKyAgICAgICBlbHNlCi0rICAgICAgICAgZWNobyAiQ2Fubm90IGNvbXBhcmUsIG5vIG1vbm9kaXMgaW5zdGFsbGVkIgotKyAgICAgICAgIHJldHVybiAxCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgIEVMRipleGVjdXRhYmxlKnxFTEYqW0xNXVNCXCBzaGFyZWRcIG9iamVjdCopCi0rICAgICAgIG9iamR1bXAgLWQgLS1uby1zaG93LXJhdy1pbnNuIG9sZC8kZmlsZSB8IGZpbHRlcl9kaXNhc20gPiAkZmlsZTEKLSsgICAgICAgaWYgISB0ZXN0IC1zICRmaWxlMTsgdGhlbgotKyAgICAgICAgICMgb2JqZHVtcCBoYXMgbm8gaWRlYSBob3cgdG8gaGFuZGxlIGl0Ci0rICAgICAgICAgaWYgISBkaWZmX3R3b19maWxlczsgdGhlbgotKyAgICAgICAgICAgcmV0PTEKLSsgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgZmkKLSsgICAgICAgZmkgICAgICAgCi0rICAgICAgIGVsZmRpZmY9Ci0rICAgICAgIHNlZCAtaSAtZSAicyxvbGQvLCwiICRmaWxlMQotKyAgICAgICBvYmpkdW1wIC1kIC0tbm8tc2hvdy1yYXctaW5zbiBuZXcvJGZpbGUgfCBmaWx0ZXJfZGlzYXNtID4gJGZpbGUyCi0rICAgICAgIHNlZCAtaSAtZSAicyxuZXcvLCwiICRmaWxlMgotKyAgICAgICBpZiAhIGRpZmYgLXUgJGZpbGUxICRmaWxlMiA+ICRkZmlsZTsgdGhlbgotKyAgICAgICAgICBlY2hvICIkZmlsZSBkaWZmZXJzIGluIGFzc2VtYmxlciBvdXRwdXQiCi0rICAgICAgICAgIGhlYWQgLW4gMjAwICRkZmlsZQotKyAgICAgICAgICBlbGZkaWZmPSIxIgotKyAgICAgICBmaQotKyAgICAgICBlY2hvICIiID4kZmlsZTEKLSsgICAgICAgZWNobyAiIiA+JGZpbGUyCi0rICAgICAgICMgRG9uJ3QgY29tcGFyZSAuYnVpbGQtaWQgYW5kIC5nbnVfZGVidWdsaW5rIHNlY3Rpb25zCi0rICAgICAgIHNlY3Rpb25zPSIkKG9iamR1bXAgLXMgbmV3LyRmaWxlIHwgZ3JlcCAiQ29udGVudHMgb2Ygc2VjdGlvbiAuKjoiIHwgc2VkIC1yICJzLC4qICguKik6LFwxLGciIHwgZ3JlcCAtdiAtZSAiXC5idWlsZC1pZCIgLWUgIlwuZ251X2RlYnVnbGluayIgfCB0ciAiXG4iICIgIikiCi0rICAgICAgIGZvciBzZWN0aW9uIGluICRzZWN0aW9uczsgZG8KLSsgICAgICAgICAgb2JqZHVtcCAtcyAtaiAkc2VjdGlvbiBvbGQvJGZpbGUgfCBzZWQgInMsXm9sZC8sLCIgPiAkZmlsZTEKLSsgICAgICAgICAgb2JqZHVtcCAtcyAtaiAkc2VjdGlvbiBuZXcvJGZpbGUgfCBzZWQgInMsXm5ldy8sLCIgPiAkZmlsZTIKLSsgICAgICAgICAgaWYgISBkaWZmIC11ICRmaWxlMSAkZmlsZTIgPiAkZGZpbGU7IHRoZW4KLSsgICAgICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyBpbiBFTEYgc2VjdGlvbiAkc2VjdGlvbiIKLSsgICAgICAgICAgICAgaGVhZCAtbiAyMDAgJGRmaWxlCi0rICAgICAgICAgICAgIGVsZmRpZmY9IjEiCi0rICAgICAgICAgIGZpCi0rICAgICAgIGRvbmUKLSsgICAgICAgaWYgdGVzdCAteiAiJGVsZmRpZmYiOyB0aGVuCi0rICAgICAgICAgIGVjaG8gIiRmaWxlOiBvbmx5IGRpZmZlcmVuY2Ugd2FzIGluIGJ1aWxkLWlkIG9yIGdudV9kZWJ1Z2xpbmssIEdPT0QuIgotKyAgICAgICAgICByZXR1cm4gMAotKyAgICAgICBmaQotKyAgICAgICByZXR1cm4gMQotKyAgICAgICA7OwotKyAgICAgKkFTQ0lJKnwqdGV4dCopCi0rICAgICAgIGlmICEgY21wIC1zIG9sZC8kZmlsZSBuZXcvJGZpbGU7IHRoZW4KLSsgICAgICAgICBlY2hvICIkZmlsZSBkaWZmZXJzICgkZnR5cGUpIgotKyAgICAgICAgIGRpZmYgLXUgb2xkLyRmaWxlIG5ldy8kZmlsZSB8IGhlYWQgLW4gMjAwCi0rICAgICAgICAgcmV0dXJuIDEKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgIGRpcmVjdG9yeXxzZXR1aWQsXCBkaXJlY3Rvcnl8c3RpY2t5LFwgZGlyZWN0b3J5KQotKyAgICAgICAjIHRhciBtaWdodCBwYWNrYWdlIGRpcmVjdG9yaWVzIC0gaWdub3JlIHRoZW0gaGVyZQotKyAgICAgICByZXR1cm4gMAotKyAgICAgICA7OwotKyAgICAgYnppcDJcIGNvbXByZXNzZWRcIGRhdGEqKQotKyAgICAgICBpZiAhIGNoZWNrX2NvbXByZXNzZWRfZmlsZSAiJGZpbGUiICJiejIiOyB0aGVuCi0rICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAgZ3ppcFwgY29tcHJlc3NlZFwgZGF0YSopCi0rICAgICAgIGlmICEgY2hlY2tfY29tcHJlc3NlZF9maWxlICIkZmlsZSIgImd6aXAiOyB0aGVuCi0rICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAgWFpcIGNvbXByZXNzZWRcIGRhdGEqKQotKyAgICAgICBpZiAhIGNoZWNrX2NvbXByZXNzZWRfZmlsZSAiJGZpbGUiICJ4eiI7IHRoZW4KLSsgICAgICAgICAgIHJldHVybiAxCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICBQT1NJWFwgdGFyXCBhcmNoaXZlKQotKyAgICAgICAgICBtdiBvbGQvJGZpbGV7LC50YXJ9Ci0rICAgICAgICAgIG12IG5ldy8kZmlsZXssLnRhcn0KLSsgICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGV9LnRhcjsgdGhlbgotKyAgICAgICAgICAgIHJldHVybiAxCi0rICAgICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICBjcGlvXCBhcmNoaXZlKQotKyAgICAgICAgICBtdiBvbGQvJGZpbGV7LC5jcGlvfQotKyAgICAgICAgICBtdiBuZXcvJGZpbGV7LC5jcGlvfQotKyAgICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZX0uY3BpbzsgdGhlbgotKyAgICAgICAgICAgIHJldHVybiAxCi0rICAgICAgICAgIGZpCi0rICAgICA7OwotKyAgICAgc3ltYm9saWNcIGxpbmtcIHRvXCAqKQotKyAgICAgICByZWFkbGluayAib2xkLyRmaWxlIiA+ICRmaWxlMQotKyAgICAgICByZWFkbGluayAibmV3LyRmaWxlIiA+ICRmaWxlMgotKyAgICAgICBpZiAhIGRpZmYgLXUgJGZpbGUxICRmaWxlMjsgdGhlbgotKyAgICAgICAgIGVjaG8gInN5bWxpbmsgdGFyZ2V0IGZvciAkZmlsZSBkaWZmZXJzIgotKyAgICAgICAgIHJldHVybiAxCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICAqKQotKyAgICAgICBpZiAhIGRpZmZfdHdvX2ZpbGVzOyB0aGVuCi0rICAgICAgICAgICByZXR1cm4gMQotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgZXNhYwotKyAgcmV0dXJuIDAKLSt9Ci0rCi0rIyBXZSBuZWVkIC9wcm9jIG1vdW50ZWQgZm9yIHNvbWUgdGVzdHMsIHNvIGNoZWNrIHRoYXQgaXQncyBtb3VudGVkIGFuZAotKyMgY29tcGxhaW4gaWYgbm90LgotK1BST0NfTU9VTlRFRD0wCi0raWYgWyAhIC1kIC9wcm9jL3NlbGYvIF07IHRoZW4KLSsgIGVjaG8gIi9wcm9jIGlzIG5vdCBtb3VudGVkIgotKyAgbW91bnQgLW9ydyAtbiAtdHByb2Mgbm9uZSAvcHJvYwotKyAgUFJPQ19NT1VOVEVEPTEKLStmaQotKwotKyMgcHJlc2VydmUgY21wX3NwZWMgcmVzdWx0IGZvciBjaGVja19hbGwgcnVucwotK3JldD0kUkVTCi0rZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotKyAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZpbGU7IHRoZW4KLSsgICAgICAgcmV0PTEKLSsgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLSsgICAgICAgICAgIGJyZWFrCi0rICAgICAgIGZpCi0rICAgZmkKLStkb25lCi0rCi0raWYgWyAiJFBST0NfTU9VTlRFRCIgLWVxICIxIiBdOyB0aGVuCi0rICBlY2hvICJVbm1vdW50aW5nIHByb2MiCi0rICB1bW91bnQgL3Byb2MKLStmaQotKwotK3JtICRmaWxlMSAkZmlsZTIgJGRmaWxlICRyZW5hbWVfc2NyaXB0Ci0rcm0gLXJmICRkaXIKLStpZiB0ZXN0ICIkcmV0IiA9IDA7IHRoZW4KLSsgICAgIGVjaG8gIlBhY2thZ2UgY29udGVudCBpcyBpZGVudGljYWwiCi0rZmkKLStleGl0ICRyZXQKLSsjIHZpbTogdHc9NjY2IHRzPTIgZXQKLWRpZmYgLS1naXQgYS9ycG0tY2hlY2suc2ggYi9ycG0tY2hlY2suc2gKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggZGQ0NzY0Mi4uMDAwMDAwMAotLS0tIGEvcnBtLWNoZWNrLnNoCi0rKysgL2Rldi9udWxsCi1AQCAtMSw3NjQgKzAsMCBAQAotLSMhIC9iaW4vYmFzaAotLSMKLS0jIENvcHlyaWdodCAoYykgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiBTVVNFIExpbnV4IFByb2R1Y3QgR21iSCwgR2VybWFueS4KLS0jIExpY2Vuc2VkIHVuZGVyIEdQTCB2Miwgc2VlIENPUFlJTkcgZmlsZSBmb3IgZGV0YWlscy4KLS0jCi0tIyBXcml0dGVuIGJ5IE1pY2hhZWwgTWF0eiBhbmQgU3RlcGhhbiBDb29sbwotLSMgRW5oYW5jZWQgYnkgQW5kcmVhcyBKYWVnZXIKLS0KLS1GVU5DVElPTlM9JHswJS8qfS9mdW5jdGlvbnMuc2gKLS0KLS1jaGVja19hbGw9Ci0tY2FzZSAkMSBpbgotLSAgLWEgfCAtLWNoZWNrLWFsbCkKLS0gICAgY2hlY2tfYWxsPTEKLS0gICAgc2hpZnQKLS1lc2FjCi0tCi0taWYgdGVzdCAiJCMiICE9IDI7IHRoZW4KLS0gICBlY2hvICJ1c2FnZTogJDAgWy1hfC0tY2hlY2stYWxsXSBvbGQucnBtIG5ldy5ycG0iCi0tICAgZXhpdCAxCi0tZmkKLS0KLS1zZWxmX3NjcmlwdD0kKGNkICQoZGlybmFtZSAkMCk7IGVjaG8gJChwd2QpLyQoYmFzZW5hbWUgJDApKQotLQotLXNvdXJjZSAkRlVOQ1RJT05TCi0tCi0tb2xkcGtnPWByZWFkbGluayAtZiAkMWAKLS1uZXdwa2c9YHJlYWRsaW5rIC1mICQyYAotLXJlbmFtZV9zY3JpcHQ9YG1rdGVtcGAKLS0KLS1pZiB0ZXN0ICEgLWYgIiRvbGRwa2ciOyB0aGVuCi0tICAgIGVjaG8gImNhbid0IG9wZW4gJDEiCi0tICAgIGV4aXQgMQotLWZpCi0tCi0taWYgdGVzdCAhIC1mICIkbmV3cGtnIjsgdGhlbgotLSAgICBlY2hvICJjYW4ndCBvcGVuICQyIgotLSAgICBleGl0IDEKLS1maQotLQotLSN1c2FnZSB1bmphciA8ZmlsZT4KLS1mdW5jdGlvbiB1bmphcigpCi0tewotLSAgICBsb2NhbCBmaWxlCi0tICAgIGZpbGU9JDEKLS0KLS0gICAgaWYgW1sgJCh0eXBlIC1wIGZhc3RqYXIpIF1dOyB0aGVuCi0tICAgICAgICBVTkpBUj1mYXN0amFyCi0tICAgIGVsaWYgW1sgJCh0eXBlIC1wIGphcikgXV07IHRoZW4KLS0gICAgICAgIFVOSkFSPWphcgotLSAgICBlbGlmIFtbICQodHlwZSAtcCB1bnppcCkgXV07IHRoZW4KLS0gICAgICAgIFVOSkFSPXVuemlwCi0tICAgIGVsc2UKLS0gICAgICAgIGVjaG8gIkVSUk9SOiBqYXIsIGZhc3RqYXIsIG9yIHVuemlwIGlzIG5vdCBpbnN0YWxsZWQgKHRyeWluZyBmaWxlICRmaWxlKSIKLS0gICAgICAgIGV4aXQgMQotLSAgICBmaQotLQotLSAgICBjYXNlICRVTkpBUiBpbgotLSAgICAgICAgamFyfGZhc3RqYXIpCi0tICAgICAgICAjIGVjaG8gamFyIC14ZiAkZmlsZQotLSAgICAgICAgJHtVTkpBUn0gLXhmICRmaWxlCi0tICAgICAgICA7OwotLSAgICAgICAgdW56aXApCi0tICAgICAgICB1bnppcCAtb3FxICRmaWxlCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tfQotLQotLSMgbGlzdCBmaWxlcyBpbiBkaXJlY3RvcnkKLS0jdXNhZ2UgdW5qYXJfbCA8ZmlsZT4KLS1mdW5jdGlvbiB1bmphcl9sKCkKLS17Ci0tICAgIGxvY2FsIGZpbGUKLS0gICAgZmlsZT0kMQotLQotLSAgICBpZiBbWyAkKHR5cGUgLXAgZmFzdGphcikgXV07IHRoZW4KLS0gICAgICAgIFVOSkFSPWZhc3RqYXIKLS0gICAgZWxpZiBbWyAkKHR5cGUgLXAgamFyKSBdXTsgdGhlbgotLSAgICAgICAgVU5KQVI9amFyCi0tICAgIGVsaWYgW1sgJCh0eXBlIC1wIHVuemlwKSBdXTsgdGhlbgotLSAgICAgICAgVU5KQVI9dW56aXAKLS0gICAgZWxzZQotLSAgICAgICAgZWNobyAiRVJST1I6IGphciwgZmFzdGphciwgb3IgdW56aXAgaXMgbm90IGluc3RhbGxlZCAodHJ5aW5nIGZpbGUgJGZpbGUpIgotLSAgICAgICAgZXhpdCAxCi0tICAgIGZpCi0tCi0tICAgIGNhc2UgJFVOSkFSIGluCi0tICAgICAgICBqYXJ8ZmFzdGphcikKLS0gICAgICAgICR7VU5KQVJ9IC10ZiAkZmlsZQotLSAgICAgICAgOzsKLS0gICAgICAgIHVuemlwKQotLSAgICAgICAgdW56aXAgLWwgJGZpbGUKLS0gICAgICAgIDs7Ci0tICAgIGVzYWMKLS19Ci0tCi0tZmlsdGVyX2Rpc2FzbSgpCi0tewotLSAgIHNlZCAtZSAncy9eICpbMC05YS1mXVwrOi8vJyAtZSAncy9cJDB4WzAtOWEtZl1cKy8kc29tZXRoaW5nLycgLWUgJ3MvY2FsbHEgKlswLTlhLWZdXCsvY2FsbHEgLycgLWUgJ3MvIyAqWzAtOWEtZl1cKy8jICAvJyAtZSAncy9cKDB4XClcP1swLTlhLWZdXCsoL29mZnNldCgvJyAtZSAncy9bMC05YS1mXVwrIDwvPC8nIC1lICdzL148XCguKlwpPjovXDE6LycgLWUgJ3MvPFwoLipcKSsweFswLTlhLWZdXCs+LzxcMSArIG9mcz4vJyAKLS19Ci0tCi0tZWNobyAiQ29tcGFyaW5nIGBiYXNlbmFtZSAkb2xkcGtnYCB0byBgYmFzZW5hbWUgJG5ld3BrZ2AiCi0tCi0tY2FzZSAkb2xkcGtnIGluCi0tICAqLnJwbSkKLS0gICAgIGNtcF9zcGVjICRyZW5hbWVfc2NyaXB0ICRvbGRwa2cgJG5ld3BrZwotLSAgICAgUkVTPSQ/Ci0tICAgICBjYXNlICRSRVMgaW4KLS0gICAgICAgMCkKLS0gICAgICAgICAgZWNobyAiUlBNIG1ldGEgaW5mb3JtYXRpb24gaXMgaWRlbnRpY2FsIgotLSAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgICAgICBleGl0IDAKLS0gICAgICAgICAgZmkKLS0gICAgICAgICAgOzsKLS0gICAgICAgMSkKLS0gICAgICAgICAgZWNobyAiUlBNIG1ldGEgaW5mb3JtYXRpb24gaXMgZGlmZmVyZW50IgotLSAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgICAgICBleGl0IDEKLS0gICAgICAgICAgZmkKLS0gICAgICAgICAgOzsKLS0gICAgICAgMikKLS0gICAgICAgICAgZWNobyAiUlBNIGZpbGUgY2hlY2tzdW0gZGlmZmVycy4iCi0tICAgICAgICAgIFJFUz0wCi0tICAgICAgICAgIDs7Ci0tICAgICAgICopCi0tICAgICAgICAgIGVjaG8gIldyb25nIGV4aXQgY29kZSEiCi0tICAgICAgICAgIGV4aXQgMQotLSAgICAgICAgICA7OwotLSAgICAgZXNhYwotLSAgICAgOzsKLS1lc2FjCi0tCi0tZmlsZTE9YG1rdGVtcGAKLS1maWxlMj1gbWt0ZW1wYAotLQotLWRpcj1gbWt0ZW1wIC1kYAotLWVjaG8gIkV4dHJhY3RpbmcgcGFja2FnZXMiCi0tdW5wYWNrYWdlICRvbGRwa2cgJGRpci9vbGQKLS11bnBhY2thZ2UgJG5ld3BrZyAkZGlyL25ldwotLQotLSMgZmlsZXMgaXMgc2V0IGluIGNtcF9zcGVjIGZvciBycG1zLCBzbyBpZiBSRVMgaXMgZW1wdHkgd2Ugc2hvdWxkIGFzc3VtZQotLSMgaXQgd2Fzbid0IGFuIHJwbSBhbmQgcGljayBhbGwgZmlsZXMgZm9yIGNvbXBhcmlzb24uCi0taWYgWyAteiAkUkVTIF07IHRoZW4KLS0gICAgb2xkZmlsZXM9YGNkICRkaXIvb2xkOyBmaW5kIC4gLXR5cGUgZmAKLS0gICAgbmV3ZmlsZXM9YGNkICRkaXIvbmV3OyBmaW5kIC4gLXR5cGUgZmAKLS0KLS0gICAgZmlsZXM9YGVjaG8gLWUgIiRvbGRmaWxlc1xuJG5ld2ZpbGVzIiB8IHNvcnQgLXVgCi0tZmkKLS0KLS1jZCAkZGlyCi0tYmFzaCAkcmVuYW1lX3NjcmlwdAotLQotLWRmaWxlPWBta3RlbXBgCi0tCi0tZGlmZl90d29fZmlsZXMoKQotLXsKLS0gIGlmICEgY21wIC1zIG9sZC8kZmlsZSBuZXcvJGZpbGU7IHRoZW4KLS0gICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgKCRmdHlwZSkiCi0tICAgICBoZXhkdW1wIC1DIG9sZC8kZmlsZSA+ICRmaWxlMQotLSAgICAgaGV4ZHVtcCAtQyBuZXcvJGZpbGUgPiAkZmlsZTIKLS0gICAgIGRpZmYgLXUgJGZpbGUxICRmaWxlMiB8IGhlYWQgLW4gMjAwCi0tICAgICByZXR1cm4gMQotLSAgZmkKLS0gIHJldHVybiAwCi0tfQotLQotLXRyaW1fbWFuX2ZpcnN0X2xpbmUoKQotLXsKLS0gICAgIyBIYW5kbGVzIHRoZSBmaXJzdCBsaW5lIGlmIGl0IGlzIGxpa2U6Ci0tICAgICMuXCIgQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgUG9kOjpNYW4gMi4yOCAoUG9kOjpTaW1wbGUgMy4yOCkKLS0gICAgIy5cIiBETyBOT1QgTU9ESUZZIFRISVMgRklMRSEgIEl0IHdhcyBnZW5lcmF0ZWQgYnkgaGVscDJtYW4gMS40My4zLgotLSAgICBsb2NhbCBmPSQxCi0tICAgIHNlZCAtaSAtZSAnMXsKLS0gICAgc3xeXC5cXCJbWzpibGFuazpdXVwrQXV0b21hdGljYWxseVtbOmJsYW5rOl1dZ2VuZXJhdGVkW1s6Ymxhbms6XV1ieVtbOmJsYW5rOl1dUG9kOjpNYW5bWzpibGFuazpdXS4qfC5cXCIgT3Zlcmx5IHZlcmJvc2UgUG9kOjpNYW58Ci0tICAgIHN8XlwuXFwiW1s6Ymxhbms6XV1cK0RPW1s6Ymxhbms6XV1OT1RbWzpibGFuazpdXU1PRElGWVtbOmJsYW5rOl1dVEhJU1tbOmJsYW5rOl1dRklMRSFbWzpibGFuazpdXVwrSXRbWzpibGFuazpdXXdhc1tbOmJsYW5rOl1dZ2VuZXJhdGVkW1s6Ymxhbms6XV1ieVtbOmJsYW5rOl1daGVscDJtYW5bWzpibGFuazpdXS4qfC5cXCIgT3Zlcmx5IHZlcmJvc2UgaGVscDJtYW58Ci0tICAgIH0nICRmCi0tfQotLQotLXRyaW1fbWFuX1RIKCkKLS17Ci0tICAgICMgSGFuZGxlcyBsaW5lcyBsaWtlOgotLSAgICAjIC5USCBkZWJoZWxwZXIgNyAiMjAxMC0wMi0yNyIgIjcuNC4xNSIgIkRlYmhlbHBlciIKLS0gICAgIyAuVEggRElSTU5HUi1DTElFTlQgMSAyMDEwLTAyLTI3ICJEaXJtbmdyIDEuMC4zIiAiR05VIFByaXZhY3kgR3VhcmQiCi0tICAgICMgLlRIIGNjbWFrZSAxICJNYXJjaCAwNiwgMjAxMCIgImNjbWFrZSAyLjguMS1yYzMiCi0tICAgICMgLlRIIFFFTVUtSU1HIDEgIjIwMTAtMDMtMTQiICIgIiAiICIKLS0gICAgIyAuVEgga2RlY21ha2UgMSAiTWF5IDA3LCAyMDEwIiAiY21ha2UgMi44LjEiCi0tICAgICMgLlRIICJhcHBlbmRlci5oIiAzICIxMiBNYXkgMjAxMCIgIlZlcnNpb24gMS4yLjEiICJsb2c0YyIgXCIgLSotIG5yb2ZmIC0qLQotLSAgICAjIC5USOKAgiJhcHBlbmRlci5oIuKAgjPigIIiVHVl4oCCQXVn4oCCMzHigIIyMDEwIuKAgiJWZXJzaW9u4oCCMS4yLjEi4oCCImxvZzRjIuKAglwi4oCCLSot4oCCbnJvZmbigIItKi0KLS0gICAgIyAuVEggIk9GRkxJTkVJTUFQIiAiMSIgIjExIE1heSAyMDEwIiAiSm9obiBHb2VyemVuIiAiT2ZmbGluZUlNQVAgTWFudWFsIgotLSAgICAjIC5USCBndiAzZ3VpbGUgIjEzIE1heSAyMDEwIgotLSAgICAjLlRIICJHSVRcLUFSQ0hJTVBPUlQiICIxIiAiMDkvMTMvMjAxMCIgIkdpdCAxXCYuN1wmLjEiICJHaXQgTWFudWFsIgotLSAgICAjIC5USCBMRElSRUNUT1JEIDggIjIwMTAtMTAtMjAiICJwZXJsIHY1LjEyLjIiICJVc2VyIENvbnRyaWJ1dGVkIFBlcmwgRG9jdW1lbnRhdGlvbiIKLS0gICAgIyAuVEggY2NtYWtlIDEgIkZlYnJ1YXJ5IDA1LCAyMDEyIiAiY2NtYWtlIDIuOC43IgotLSAgICAjIC5USOKAgiJhcHBlbmRlci5oIuKAgjPigIIiVHVl4oCCQXVn4oCCMzHigIIyMDEwIuKAgiJWZXJzaW9u4oCCMS4yLjEi4oCCImxvZzRjIuKAglwi4oCCLSot4oCCbnJvZmbigIItKi0KLS0gICAgIyAuVEggQVJDSCAiMSIgIlNlcHRlbWJlciAyMDEwIiAiR05VIGNvcmV1dGlscyA4LjUiICJVc2VyIENvbW1hbmRzIgotLSAgICAjIC5USCAiR0NNLUNBTElCUkFURSIgIjEiICIwMyBGZWJydWFyeSAyMDEyIiAiIiAiIgotLSAgICAjLlRIIExvY2FsZTo6UG80YTo6WG1sLnBtIDNwbSAiMjAxNS0wMS0zMCIgIlBvNGEgVG9vbHMiICJQbzRhIFRvb2xzIgotLSAgICBsb2NhbCBmPSQxCi0tICAgICMgKC5USCAgIHF1b3RlZCBzZWN0aW9uKSAocXVvdGVkX2RhdGUpKCopCi0tICAgIHNlZCAtaSAtZSAnc3xeXChbWzpibGFuazpdXSpcLlRIW1s6Ymxhbms6XV1cKyJbXiJdXCsiW1s6Ymxhbms6XV1cK1teWzpibGFuazpdXVwrXClbWzpibGFuazpdXVwrXCgiW14iXVwrIlwpXChbWzpibGFuazpdXVwrLipcKVw/fFwxICJxcTIwMDAtMDEtMDEiXDN8JyAkZgotLSAgICAjICguVEggdW5xdW90ZWQgc2VjdGlvbikgKHF1b3RlZF9kYXRlKSgqKQotLSAgICBzZWQgLWkgLWUgJ3N8XlwoW1s6Ymxhbms6XV0qXC5USFtbOmJsYW5rOl1dXCtbXiJdW15bOmJsYW5rOl1dXCtbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKCJbXiJdXCsiXClcKFtbOmJsYW5rOl1dXCsuKlwpXD98XDEgInVxMjAwMC0wMi0wMiJcM3wnICRmCi0tICAgICMgKC5USCAgIHF1b3RlZCBzZWN0aW9uKSAodW5xdW90ZWRfZGF0ZSkoKikKLS0gICAgc2VkIC1pIC1lICdzfF5cKFtbOmJsYW5rOl1dKlwuVEhbWzpibGFuazpdXVwrIlteIl1cKyJbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKFteIl1bXls6Ymxhbms6XV1cK1wpXChbWzpibGFuazpdXVwrLipcKVw/fFwxIHF1MjAwMC0wMy0wM1wzfCcgJGYKLS0gICAgIyAoLlRIIHVucXVvdGVkIHNlY3Rpb24pICh1bnF1b3RlZF9kYXRlKSgqKQotLSAgICBzZWQgLWkgLWUgJ3N8XlwoW1s6Ymxhbms6XV0qXC5USFtbOmJsYW5rOl1dXCtbXiJdW15bOmJsYW5rOl1dXCtbWzpibGFuazpdXVwrW15bOmJsYW5rOl1dXCtcKVtbOmJsYW5rOl1dXCtcKFteIl1bXls6Ymxhbms6XV1cK1wpXChbWzpibGFuazpdXVwrLipcKVw/fFwxIHV1MjAwMC0wNC0wNFwzfCcgJGYKLS19Ci0tCi0tc3RyaXBfbnVtYmVyZWRfYW5jaG9ycygpCi0tewotLSAgIyBSZW1vdmUgbnVtYmVyZWQgYW5jaG9ycyBvbiBEb2Nib29rIC8gSFRNTCBmaWxlcy4KLS0gICMgVGhpcyBzaG91bGQgYmUgc2F2ZSBzaW5jZSB3ZSByZW1vdmUgdGhlbSBmcm9tIG9sZCBhbmQgbmV3IGZpbGVzLgotLSAgIyBBIHRyYWlsaW5nIDwvYT4gb3IgPC9kaXY+IHRhZyB3aWxsIHN0YXkgYWxzbyBvbiBib3RoIGZpbGVzLgotLSAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgIHNlZCAtaSAtZSAncyU8WyBdKmFbIF1cK25hbWVbXjxdKlswLTldXCtbXjxdKiUlZycgXAotLSAgICAgLWUgJ3MlPFsgXSphWyBdXCtocmVmW148XSojW148XSpbMC05XVwrW148XSolJWcnIFwKLS0gICAgIC1lICdzJTxbXjxdKmlkPSJmdG5cLltePF0qWzAtOV1cK1tePF0qJSVnJyAkZgotLSAgZG9uZQotLX0KLS0KLS0KLS1jaGVja19jb21wcmVzc2VkX2ZpbGUoKQotLXsKLS0gIGxvY2FsIGZpbGU9JDEKLS0gIGxvY2FsIGV4dD0kMgotLSAgbG9jYWwgdG1wZGlyPWBta3RlbXAgLWRgCi0tICBsb2NhbCBmdHlwZQotLSAgbG9jYWwgcmV0PTAKLS0gIGVjaG8gIiRleHQgZmlsZSB3aXRoIG9kZCBmaWxlbmFtZTogJGZpbGUiCi0tICBpZiB0ZXN0IC1uICIkdG1wZGlyIjsgdGhlbgotLSAgICBta2RpciAkdG1wZGlyL3tvbGQsbmV3fQotLSAgICBjcCAtLXBhcmVudHMgLS1kZXJlZmVyZW5jZSBvbGQvJGZpbGUgJHRtcGRpci8KLS0gICAgY3AgLS1wYXJlbnRzIC0tZGVyZWZlcmVuY2UgbmV3LyRmaWxlICR0bXBkaXIvCi0tICAgIGlmIHB1c2hkICR0bXBkaXIgPiAvZGV2L251bGwgOyB0aGVuCi0tICAgICAgY2FzZSAiJGV4dCIgaW4KLS0gICAgICAgIGJ6MikKLS0gICAgICAgICAgbXYgb2xkLyRmaWxleywuYnoyfQotLSAgICAgICAgICBtdiBuZXcvJGZpbGV7LC5iejJ9Ci0tICAgICAgICAgIGJ6aXAyIC1kIG9sZC8kZmlsZS5iejIKLS0gICAgICAgICAgYnppcDIgLWQgbmV3LyRmaWxlLmJ6MgotLSAgICAgICAgICA7OwotLSAgICAgICAgZ3ppcCkKLS0gICAgICAgICAgbXYgb2xkLyRmaWxleywuZ3p9Ci0tICAgICAgICAgIG12IG5ldy8kZmlsZXssLmd6fQotLSAgICAgICAgICBnemlwIC1kIG9sZC8kZmlsZS5negotLSAgICAgICAgICBnemlwIC1kIG5ldy8kZmlsZS5negotLSAgICAgICAgICA7OwotLSAgICAgICAgeHopCi0tICAgICAgICAgIG12IG9sZC8kZmlsZXssLnh6fQotLSAgICAgICAgICBtdiBuZXcvJGZpbGV7LC54en0KLS0gICAgICAgICAgeHogLWQgb2xkLyRmaWxlLnh6Ci0tICAgICAgICAgIHh6IC1kIG5ldy8kZmlsZS54egotLSAgICAgICAgICA7OwotLSAgICAgIGVzYWMKLS0gICAgICBmdHlwZT1gL3Vzci9iaW4vZmlsZSBvbGQvJGZpbGUgfCBzZWQgJ3NAXlteOl1cKzpbWzpibGFuazpdXSpAQCdgCi0tICAgICAgY2FzZSAkZnR5cGUgaW4KLS0gICAgICAgIFBPU0lYXCB0YXJcIGFyY2hpdmUpCi0tICAgICAgICAgIGVjaG8gIiRleHQgY29udGVudCBpczogJGZ0eXBlIgotLSAgICAgICAgICBtdiBvbGQvJGZpbGV7LC50YXJ9Ci0tICAgICAgICAgIG12IG5ldy8kZmlsZXssLnRhcn0KLS0gICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGV9LnRhcjsgdGhlbgotLSAgICAgICAgICAgIHJldD0xCi0tICAgICAgICAgIGZpCi0tICAgICAgICAgIDs7Ci0tICAgICAgICBBU0NJSVwgY3Bpb1wgYXJjaGl2ZVwgKikKLS0gICAgICAgICAgZWNobyAiJGV4dCBjb250ZW50IGlzOiAkZnR5cGUiCi0tICAgICAgICAgIG12IG9sZC8kZmlsZXssLmNwaW99Ci0tICAgICAgICAgIG12IG5ldy8kZmlsZXssLmNwaW99Ci0tICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlfS5jcGlvOyB0aGVuCi0tICAgICAgICAgICAgcmV0PTEKLS0gICAgICAgICAgZmkKLS0gICAgICAgICAgOzsKLS0gICAgICAgICopCi0tICAgICAgICAgIGVjaG8gInVuaGFuZGxlZCAkZXh0IGNvbnRlbnQ6ICRmdHlwZSIKLS0gICAgICAgICAgaWYgISBkaWZmX3R3b19maWxlczsgdGhlbgotLSAgICAgICAgICAgIHJldD0xCi0tICAgICAgICAgIGZpCi0tICAgICAgICAgIDs7Ci0tICAgICAgZXNhYwotLSAgICAgIHBvcGQgPiAvZGV2L251bGwKLS0gICAgZmkKLS0gICAgcm0gLXJmICIkdG1wZGlyIgotLSAgZmkKLS0gIHJldHVybiAkcmV0Ci0tfQotLQotLWNoZWNrX3NpbmdsZV9maWxlKCkKLS17Ci0tICBsb2NhbCBmaWxlPSIkMSIKLS0gIGNhc2UgJGZpbGUgaW4KLS0gICAgKi5zcGVjKQotLSAgICAgICBzZWQgLWkgLWUgInMsUmVsZWFzZTouKiRyZWxlYXNlMSxSZWxlYXNlOiBAUkVMRUFTRUAsIiBvbGQvJGZpbGUKLS0gICAgICAgc2VkIC1pIC1lICJzLFJlbGVhc2U6LiokcmVsZWFzZTIsUmVsZWFzZTogQFJFTEVBU0VALCIgbmV3LyRmaWxlCi0tICAgICAgIDs7Ci0tICAgICouZXhlLm1kYnwqLmRsbC5tZGIpCi0tICAgICAgICMgSnVzdCBkZWJ1ZyBpbmZvcm1hdGlvbiwgd2UgY2FuIHNraXAgdGhlbQotLSAgICAgICBlY2hvICIkZmlsZSBza2lwcGVkIGFzIGRlYnVnIGZpbGUuIgotLSAgICAgICByZXR1cm4gMAotLSAgICAgICA7OwotLSAgICAqLmEpCi0tICAgICAgIGZsaXN0PWBhciB0IG5ldy8kZmlsZWAKLS0gICAgICAgcHdkPSRQV0QKLS0gICAgICAgZmRpcj1gZGlybmFtZSAkZmlsZWAKLS0gICAgICAgY2Qgb2xkLyRmZGlyCi0tICAgICAgIGFyIHggYGJhc2VuYW1lICRmaWxlYAotLSAgICAgICBjZCAkcHdkL25ldy8kZmRpcgotLSAgICAgICBhciB4IGBiYXNlbmFtZSAkZmlsZWAKLS0gICAgICAgY2QgJHB3ZAotLSAgICAgICBmb3IgZiBpbiAkZmxpc3Q7IGRvCi0tICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZkaXIvJGY7IHRoZW4KLS0gICAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgICAgZmkKLS0gICAgICAgZG9uZQotLSAgICAgICByZXR1cm4gMAotLSAgICAgICA7OwotLSAgICAqLmNwaW8pCi0tICAgICAgIGZsaXN0PWBjcGlvIC0tcXVpZXQgLS1saXN0IC0tZm9yY2UtbG9jYWwgPCAibmV3LyRmaWxlImAKLS0gICAgICAgcHdkPSRQV0QKLS0gICAgICAgZmRpcj0kZmlsZS5leHRyYWN0LiRQUElELiQkCi0tICAgICAgIG1rZGlyIG9sZC8kZmRpciBuZXcvJGZkaXIKLS0gICAgICAgY2Qgb2xkLyRmZGlyCi0tICAgICAgIGNwaW8gLS1xdWlldCAtLWV4dHJhY3QgLS1mb3JjZS1sb2NhbCA8ICIuLi8ke2ZpbGUjIyovfSIKLS0gICAgICAgY2QgJHB3ZC9uZXcvJGZkaXIKLS0gICAgICAgY3BpbyAtLXF1aWV0IC0tZXh0cmFjdCAtLWZvcmNlLWxvY2FsIDwgIi4uLyR7ZmlsZSMjKi99IgotLSAgICAgICBjZCAkcHdkCi0tICAgICAgIGxvY2FsIHJldD0wCi0tICAgICAgIGZvciBmIGluICRmbGlzdDsgZG8KLS0gICAgICAgICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICRmZGlyLyRmOyB0aGVuCi0tICAgICAgICAgICByZXQ9MQotLSAgICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgICAgICAgYnJlYWsKLS0gICAgICAgICAgIGZpCi0tICAgICAgICAgZmkKLS0gICAgICAgZG9uZQotLSAgICAgICBybSAtcmYgb2xkLyRmZGlyIG5ldy8kZmRpcgotLSAgICAgICByZXR1cm4gJHJldAotLSAgICAgICA7OwotLSAgICAqLnRhcnwqLnRhci5iejJ8Ki50YXIuZ3p8Ki50Z3p8Ki50YnoyKQotLSAgICAgICBmbGlzdD1gdGFyIHRmIG5ldy8kZmlsZWAKLS0gICAgICAgcHdkPSRQV0QKLS0gICAgICAgZmRpcj1gZGlybmFtZSAkZmlsZWAKLS0gICAgICAgY2Qgb2xkLyRmZGlyCi0tICAgICAgIHRhciB4ZiBgYmFzZW5hbWUgJGZpbGVgCi0tICAgICAgIGNkICRwd2QvbmV3LyRmZGlyCi0tICAgICAgIHRhciB4ZiBgYmFzZW5hbWUgJGZpbGVgCi0tICAgICAgIGNkICRwd2QKLS0gICAgICAgbG9jYWwgcmV0PTAKLS0gICAgICAgZm9yIGYgaW4gJGZsaXN0OyBkbwotLSAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJGZkaXIvJGY7IHRoZW4KLS0gICAgICAgICAgIHJldD0xCi0tICAgICAgICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgICAgICBicmVhawotLSAgICAgICAgICAgZmkKLS0gICAgICAgICBmaQotLSAgICAgICBkb25lCi0tICAgICAgIHJldHVybiAkcmV0Ci0tICAgICAgIDs7Ci0tICAgICouemlwfCouamFyfCoud2FyKQotLSAgICAgICBjZCBvbGQKLS0gICAgICAgdW5qYXJfbCAuLyRmaWxlIHxzb3J0ID4gZmxpc3QKLS0gICAgICAgIyAgMTAtMDUtMjAxMCAxNDozOQotLSAgICAgICBzZWQgLWkgLWUgInMsIFswLTldWzAtOV0tWzAtOV1bMC05XS1bMC05XVwrIFswLTldWzAtOV06WzAtOV1bMC05XSAsIGRhdGUgLCIgZmxpc3QKLS0gICAgICAgIyAyMDEyLTAyLTAzIDA3OjU5Ci0tICAgICAgIHNlZCAtaSAtZSAicywgMjBbMC05XVswLTldLVswLTldWzAtOV0tWzAtOV1bMC05XSBbMC05XVswLTldOlswLTldWzAtOV0gLCBkYXRlICwiIGZsaXN0Ci0tICAgICAgIGNkIC4uL25ldwotLSAgICAgICB1bmphcl9sIC4vJGZpbGUgfHNvcnQ+IGZsaXN0Ci0tICAgICAgIHNlZCAtaSAtZSAicywgWzAtOV1bMC05XS1bMC05XVswLTldLVswLTldXCsgWzAtOV1bMC05XTpbMC05XVswLTldICwgZGF0ZSAsOyAiIGZsaXN0Ci0tICAgICAgIHNlZCAtaSAtZSAicywgMjBbMC05XVswLTldLVswLTldWzAtOV0tWzAtOV1bMC05XSBbMC05XVswLTldOlswLTldWzAtOV0gLCBkYXRlICwiIGZsaXN0Ci0tICAgICAgIGNkIC4uCi0tICAgICAgIGlmICEgY21wIC1zIG9sZC9mbGlzdCBuZXcvZmxpc3Q7IHRoZW4KLS0gICAgICAgICAgZWNobyAiJGZpbGUgaGFzIGRpZmZlcmVudCBmaWxlIGxpc3QiCi0tICAgICAgICAgIGRpZmYgLXUgb2xkL2ZsaXN0IG5ldy9mbGlzdAotLSAgICAgICAgICByZXR1cm4gMQotLSAgICAgICBmaQotLSAgICAgICBmbGlzdD1gZ3JlcCBkYXRlIG5ldy9mbGlzdCB8IHNlZCAtZSAncywuKiBkYXRlICwsJ2AKLS0gICAgICAgcHdkPSRQV0QKLS0gICAgICAgZmRpcj1gZGlybmFtZSAkZmlsZWAKLS0gICAgICAgY2Qgb2xkLyRmZGlyCi0tICAgICAgIHVuamFyIGBiYXNlbmFtZSAkZmlsZWAKLS0gICAgICAgY2QgJHB3ZC9uZXcvJGZkaXIKLS0gICAgICAgdW5qYXIgYGJhc2VuYW1lICRmaWxlYAotLSAgICAgICBjZCAkcHdkCi0tICAgICAgIGxvY2FsIHJldD0wCi0tICAgICAgIGZvciBmIGluICRmbGlzdDsgZG8KLS0gICAgICAgICBpZiB0ZXN0IC1mIG5ldy8kZmRpci8kZiAmJiAhIGNoZWNrX3NpbmdsZV9maWxlICRmZGlyLyRmOyB0aGVuCi0tICAgICAgICAgICByZXQ9MQotLSAgICAgICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgICAgICAgYnJlYWsKLS0gICAgICAgICAgIGZpCi0tICAgICAgICAgZmkKLS0gICAgICAgZG9uZQotLSAgICAgICByZXR1cm4gJHJldDs7Ci0tICAgICAqLnB5Y3wqLnB5bykKLS0gICAgICAgIHBlcmwgLWUgIm9wZW4gZmgsICcrPCcsICdvbGQvJGZpbGUnOyBzZWVrIGZoLCA0LCBTRUVLX1NFVDsgcHJpbnQgZmggJzAwMDAnOyIKLS0gICAgICAgIHBlcmwgLWUgIm9wZW4gZmgsICcrPCcsICduZXcvJGZpbGUnOyBzZWVrIGZoLCA0LCBTRUVLX1NFVDsgcHJpbnQgZmggJzAwMDAnOyIKLS0gICAgICAgIDs7Ci0tICAgICAqLmJ6MikKLS0gICAgICAgIGJ1bnppcDIgLWMgb2xkLyRmaWxlID4gb2xkLyR7ZmlsZS8uYnoyL30KLS0gICAgICAgIGJ1bnppcDIgLWMgbmV3LyRmaWxlID4gbmV3LyR7ZmlsZS8uYnoyL30KLS0gICAgICAgIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZS8uYnoyL30KLS0gICAgICAgIHJldHVybiAkPwotLSAgICAgICAgOzsKLS0gICAgICouZ3opCi0tICAgICAgICBndW56aXAgLWMgb2xkLyRmaWxlID4gb2xkLyR7ZmlsZS8uZ3ovfQotLSAgICAgICAgZ3VuemlwIC1jIG5ldy8kZmlsZSA+IG5ldy8ke2ZpbGUvLmd6L30KLS0gICAgICAgIGNoZWNrX3NpbmdsZV9maWxlICR7ZmlsZS8uZ3ovfQotLSAgICAgICAgcmV0dXJuICQ/Ci0tICAgICAgICA7OwotLSAgICAgKi5ycG0pCi0tCSRzZWxmX3NjcmlwdCAtYSBvbGQvJGZpbGUgbmV3LyRmaWxlCi0tICAgICAgICByZXR1cm4gJD8KLS0gICAgICAgIDs7Ci0tICAgICAqcG5nKQotLQkjIFRyeSB0byByZW1vdmUgdGltZXN0YW1wcywgb25seSBpZiBjb252ZXJ0IGZyb20gSW1hZ2VNYWdpY2sgaXMgaW5zdGFsbGVkCi0tICAgICAgICBpZiBbWyAkKHR5cGUgLXAgY29udmVydCkgXV07IHRoZW4KLS0JICBjb252ZXJ0IG9sZC8kZmlsZSArc2V0IGRhdGU6Y3JlYXRlICtzZXQgZGF0ZTptb2RpZnkgb2xkLyR7ZmlsZS8ucG5nL19uLnBuZ30KLS0JICBjb252ZXJ0IG9sZC8kZmlsZSArc2V0IGRhdGU6Y3JlYXRlICtzZXQgZGF0ZTptb2RpZnkgbmV3LyR7ZmlsZS8ucG5nL19uLnBuZ30KLS0JICBpZiAhIGNtcCAtcyBvbGQvJHtmaWxlLy5wbmcvX24ucG5nfSBuZXcvJHtmaWxlLy5wbmcvX24ucG5nfTsgdGhlbgotLQkgICAgICBlY2hvICIkZmlsZSBkaWZmZXJzICgkZnR5cGUpIgotLQkgICAgICBoZXhkdW1wIC1DIG9sZC8ke2ZpbGUvLnBuZy9fbi5wbmd9ID4gJGZpbGUxCi0tCSAgICAgIGhleGR1bXAgLUMgbmV3LyR7ZmlsZS8ucG5nL19uLnBuZ30gPiAkZmlsZTIKLS0JICAgICAgZGlmZiAtdSAkZmlsZTEgJGZpbGUyIHwgaGVhZCAtbiAyMAotLQkgICAgICByZXR1cm4gMQotLQkgIGZpCi0tCSAgcmV0dXJuIDAKLS0JZmkKLS0gICAgICAgIDs7Ci0tICAgICAvdXNyL3NoYXJlL2xvY2FsZS8qL0xDX01FU1NBR0VTLyoubW98L3Vzci9zaGFyZS9sb2NhbGUtYnVuZGxlLyovTENfTUVTU0FHRVMvKi5tbykKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICBzZWQgLWkgLWUgInMsUE9ULUNyZWF0aW9uLURhdGU6IC4uLi4tLi4tLi4gLi46Li4rLi4uLixQT1QtQ3JlYXRpb24tRGF0ZTogMTk3MC0wMS0wMSAwMDowMCswMDAwLCIgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9kb2MvcGFja2FnZXMvKi8qLmh0bWx8XAotLSAgICAgL3Vzci9zaGFyZS9kb2Mva2RlL0hUTUwvKi8qLyouaHRtbHwvdXNyL3NoYXJlL2RvYy8qL2h0bWwvKi5odG1sKQotLSAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotLSAgICAgICAgICMgdGV4aTJodG1sIG91dHB1dCwgZS5nLiBpbiBrdm0sIGluZGVudCwgcWVtdQotLQkgc2VkIC1pIC1lICJzfF48IS0tIENyZWF0ZWQgb24gLiosIDIwLi4gYnkgdGV4aTJodG1sIC5cLi4ufDwhLS0gQ3JlYXRlZCBvbiBBdWd1c3QgNywgMjAwOSBieSB0ZXhpMmh0bWwgMS44MnwiICRmCi0tCSBzZWQgLWkgLWUgJ3N8XiAqVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkIGJ5IDxlbT5BdXRvYnVpbGQ8L2VtPiBvbiA8ZW0+LiosIDIwLi48L2VtPiB1c2luZyA8YSBocmVmPSJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyI+PGVtPnRleGkyaHRtbCAuXC4uLjwvZW0+PC9hPi4kfCAgVGhpcyBkb2N1bWVudCB3YXMgZ2VuZXJhdGVkIGJ5IDxlbT5BdXRvYnVpbGQ8L2VtPiBvbiA8ZW0+QXVndXN0IDcsIDIwMDk8L2VtPiB1c2luZyA8YSBocmVmPSJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyI+PGVtPnRleGkyaHRtbCAxLjgyPC9lbT48L2E+LnwnICRmCi0tCSAjIGRveHlnZW4gZG9jdSwgZS5nLiBpbiBsaWJzc2ggYW5kIGxvZzRjCi0tCSBzZWQgLWkgLWUgJ3N8R2VuZXJhdGVkIG9uIC4uLiAuLi4gWzAtOV0qIFswLTldKjpbMC05XVswLTldOlswLTldWzAtOV0gMjBbMC05XVswLTldIGZvciB8R2VuZXJhdGVkIG9uIE1vbiBNYXkgMTAgMjA6NDU6MDAgMjAxMCBmb3IgfCcgJGYKLS0JICMgR2VuZXJhdGVkIG9uIFNhdCBBdWcgMTQgMjAxMCAxNjo0OTo0OCBmb3IgbGlic3NoCi0tCSBzZWQgLWkgLWUgJ3N8R2VuZXJhdGVkIG9uIC4uLiAuLi4gWzAtOV0qIDIwWzAtOV1bMC05XSBbMC05XSo6WzAtOV1bMC05XTpbMC05XVswLTldIGZvciB8R2VuZXJhdGVkIG9uIE1vbiBNYXkgMTAgMjA6NDU6MDAgMjAxMCBmb3IgfCcgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICBzdHJpcF9udW1iZXJlZF9hbmNob3JzCi0tICAgICAgIDs7Ci0tICAgICAvdXNyL3NoYXJlL2phdmFkb2MvKi5odG1sIHxcCi0tICAgICAvdXNyL3NoYXJlL2phdmFkb2MvKi8qLmh0bWx8L3Vzci9zaGFyZS9qYXZhZG9jLyovKi8qLmh0bWwpCi0tICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLS0gICAgICAgIyBUaGVyZSBhcmUgbW9yZSB0aW1lc3RhbXBzIGluIGh0bWwsIHNvIGZhciB3ZSBoYW5kbGUgb25seSBzb21lIHByaW1pdGl2ZSB2ZXJzaW9ucy4KLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICAjIEphdmFkb2M6Ci0tICAgICAgICAgICMgPGhlYWQ+Ci0tICAgICAgICAgICMgPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvYyAodmVyc2lvbiAxLjcuMF83NSkgb24gVHVlIEZlYiAwMyAwMjoyMDoxMiBHTVQgMjAxNSAtLT4KLS0gICAgICAgICAgIyA8IS0tIEdlbmVyYXRlZCBieSBqYXZhZG9jIG9uIFR1ZSBGZWIgMDMgMDA6MDI6NDggR01UIDIwMTUgLS0+Ci0tICAgICAgICAgICMgPG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iMjAxNS0wMi0wMyI+Ci0tICAgICAgICAgICMgPC9oZWFkPgotLSAgICAgICAgICBzZWQgLWkgLWUgJwotLSAgICAgICAgICAgIC9ePGhlYWQ+L3sKLS0gICAgICAgICAgICAgIDogbmV4dAotLSAgICAgICAgICAgICAgbgotLSAgICAgICAgICAgICAgL148XC9oZWFkPi97Ci0tICAgICAgICAgICAgICAgIGIgZW5kX2hlYWQKLS0gICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICAgIHMvXlwoPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvY1wpIFwoKFwoYnVpbGRcfHZlcnNpb25cKSBbMC05Ll9dXCspIG9uIC4uLiAuLi4gLi4gLi46Li46Li4gXChHTVRcfFVUQ1wpIC4uLi5cKSBcKC0tPlwpL1wxIHNvbWUtZGF0ZS1yZW1vdmVkLWJ5LWJ1aWxkLWNvbXBhcmUgXDUvCi0tICAgICAgICAgICAgICB0IG5leHQKLS0gICAgICAgICAgICAgIHMvXlwoPCEtLSBHZW5lcmF0ZWQgYnkgamF2YWRvY1wpIFwob24gLi4uIC4uLiAuLiAuLjouLjouLiBcKEdNVFx8VVRDXCkgLi4uLlwpIFwoLS0+XCkvXDEgc29tZS1kYXRlLXJlbW92ZWQtYnktYnVpbGQtY29tcGFyZSBcMy8KLS0gICAgICAgICAgICAgIHQgbmV4dAotLSAgICAgICAgICAgICAgcy9ePG1ldGEgbmFtZT0iZGF0ZSIgY29udGVudD0iWzAtOV1cezRcfS1bMC05XVx7Mlx9LVswLTldXHsyXH0iPi88bWV0YSBuYW1lPSJkYXRlIiBjb250ZW50PSJzb21lLWRhdGUtcmVtb3ZlZC1ieS1idWlsZC1jb21wYXJlIj4vCi0tICAgICAgICAgICAgICBiIG5leHQKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgOiBlbmRfaGVhZAotLSAgICAgICAgICAnICRmCi0tICAgICAgICAgIyBHamRvYyBIdG1sRG9jbGV0OgotLQkgc2VkIC1pIC1lICdzJUdlbmVyYXRlZCBieSBHamRvYyBIdG1sRG9jbGV0IFswLTksLl0qLCBwYXJ0IG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jbGFzc3BhdGgvY3AtdG9vbHMvIiB0aXRsZT0iIiB0YXJnZXQ9Il90b3AiPkdOVSBDbGFzc3BhdGggVG9vbHM8L2E+LCBvbiAuKiwgMjAuLiBbMC05XSo6Li46Li4gXChhXHxwXClcLm1cLiBHTVQuJUdlbmVyYXRlZCBieSBHamRvYy4lJyAkZgotLQkgc2VkIC1pIC1lICdzJTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vZ251Lm9yZy8vL0RURCBYSFRNTCAxLjEgcGx1cyBUYXJnZXQgMS4wLy9FTiJcKC4qXClHTlUgQ2xhc3NwYXRoIFRvb2xzPC9hPiwgb24gW0EtWl1bYS16XSogWzAtOV0qLCAyMD8/IFswLTldKjo/Pzo/PyBcKGF8cFwpXC5tXC4gR01ULjwvcD4lPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9nbnUub3JnLy8vRFREIFhIVE1MIDEuMSBwbHVzIFRhcmdldCAxLjAvL0VOIlwxR05VIENsYXNzcGF0aCBUb29sczwvYT4sIG9uIEphbnVhcnkgMSwgMjAwOSAwOjAwOjAwIGEubS4gR01ULjwvcD4lJyAkZgotLQkgc2VkIC1pIC1lICdzJTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vZ251Lm9yZy8vL0RURFwoLipHTlUgQ2xhc3NwYXRoIFRvb2xzPC9hPlwpLCBvbiBbYS16QS1aXSogWzAtOV1bMC05XSwgMjAuLiBbMC05XSo6Li46Li4gXChhXHxwXClcLm1cLiBHTVQuPC9wPiU8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL2dudS5vcmcvLy9EVERcMSxvbiBNYXkgMSwgMjAxMCAxOjExOjQyIHAubS4gR01ULjwvcD4lJyAkZgotLQkgIyBkZXByZWNhdGVkLWxpc3QgaXMgcmFuZG9tbHkgb3JkZXJlZCwgc29ydCBpdCBmb3IgY29tcGFyaXNvbgotLQkgY2FzZSAkZiBpbgotLQkgICAqL2RlcHJlY2F0ZWQtbGlzdC5odG1sKQotLQkgICAgIHNvcnQgLW8gJGYgJGYKLS0JICAgICA7OwotLQkgZXNhYwotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgICAvdXNyL3NoYXJlL2phdmFkb2MvZ2pkb2MucHJvcGVydGllcyB8XAotLSAgICAgL3Vzci9zaGFyZS9qYXZhZG9jLyovZ2pkb2MucHJvcGVydGllcykKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0JIHNlZCAtaSAtZSAnc3xeI1tBLVpdW2Etel1cezJcfSBbQS1aXVthLXpdXHsyXH0gWzAtOV1cezJcfSAuLjouLjouLiBHTVQgMjAuLiR8I0ZyaSBKYW4gMDEgMTE6Mjc6MzYgR01UIDIwMDl8JyAkZgotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgICAqL2ZvbnRzLnNjYWxlfCovZm9udHMuZGlyfCovZW5jb2RpbmdzLmRpcikKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICAjIHNvcnQgZmlsZXMgYmVmb3JlIGNvbXBhcmluZwotLSAgICAgICAgIHNvcnQgLW8gJGYgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Zhci9hZG0vcGVybC1tb2R1bGVzLyopCi0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgc2VkIC1pIC1lICdzfF49aGVhZDIgLi4uIC4uLiAuLiAuLjouLjouLiAuLi4uOiBDPE1vZHVsZT58PWhlYWQyIFdlZCBKdWwgIDEgMDA6MDA6MDAgMjAwOTogQzxNb2R1bGU+fCcgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9tYW4vbWFuMy8qM3BtKQotLSAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotLSAgICAgICAgIHNlZCAtaSAtZSAnc3wgMyAiMjAuLi0uLi0uLiIgInBlcmwgdjUuLi4uLiIgIlVzZXIgQ29udHJpYnV0ZWQgUGVybCBEb2N1bWVudGF0aW9uIiR8IDMgIjIwMDktMDEtMDEiICJwZXJsIHY1LjEwLjAiICJVc2VyIENvbnRyaWJ1dGVkIFBlcmwgRG9jdW1lbnRhdGlvbiJ8JyAkZgotLSAgICAgICAgIHRyaW1fbWFuX1RIICRmCi0tICAgICAgICAgdHJpbV9tYW5fZmlyc3RfbGluZSAkZgotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgICAvdXNyL3NoYXJlL21hbi8qL21hbip8L3Vzci9zaGFyZS9tYW4vbWFuKnwvdXNyL2xpYi90ZXhtZi9kb2MvbWFuLyovKikKLS0KLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICB0cmltX21hbl9USCAkZgotLSAgICAgICAgIHRyaW1fbWFuX2ZpcnN0X2xpbmUgJGYKLS0gICAgICAgICAjIGdlbmVyYXRlZCBieSBkb2Nib29rIHhtbDoKLS0gICAgICAgICAjLlwiICAgICAgRGF0ZTogMDkvMTMvMjAxMAotLSAgICAgICAgIHNlZCAtaSAtZSAnc3xEYXRlOiBbMC0xXVswLTldL1swLTldWzAtOV0vMjAxWzAtOV18RGF0ZTogMDkvMTMvMjAxMHwnICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgICouZWxjKQotLSAgICAgICAjIGVtYWNzIGxpc3AgZmlsZXMKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0gICAgICAgICBzZWQgLWkgLWUgJ3N8Q29tcGlsZWQgYnkgYWJ1aWxkQC4qIG9uIC4uLiAuLi4gLi4gLi46Li46Li4gMjAuLiR8Y29tcGlsZWQgYnkgYWJ1aWxkQGJ1aWxkaG9zdCBvbiBXZWQgSnVsIDAxIDAwOjAwOjAwIDIwMDl8JyAkZgotLSAgICAgICBkb25lCi0tICAgICAgIDs7Ci0tICAgICAvdmFyL2xpYi90ZXhtZi93ZWIyYy8qLypmbXQgfFwKLS0gICAgIC92YXIvbGliL3RleG1mL3dlYjJjL21ldGFmb250LyouYmFzZXxcCi0tICAgICAvdmFyL2xpYi90ZXhtZi93ZWIyYy9tZXRhcG9zdC8qLm1lbSkKLS0gICAgICAgIyBiaW5hcnkgZHVtcCBvZiBUZVggYW5kIE1ldGFmb250IGZvcm1hdHMsIHdlIGNhbiBpZ25vcmUgdGhlbSBmb3IgZ29vZAotLSAgICAgICBlY2hvICJkaWZmZXJlbmNlIGluICRmaWxlIGlnbm9yZWQuIgotLSAgICAgICByZXR1cm4gMAotLSAgICAgICA7OwotLSAgICAgKi9saWJ0b29sKQotLSAgICAgICBmb3IgZiBpbiBvbGQvJGZpbGUgbmV3LyRmaWxlOyBkbwotLQkgIHNlZCAtaSAtZSAnc3xeIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgW0EtWmEtejAtOV0qOiR8IyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgeDQyOnwnICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgIC9ldGMvbWFpbC8qY2Z8L2V0Yy9zZW5kbWFpbC5jZikKLS0gICAgICAgIyBmcm9tIHNlbmRtYWlsIHBhY2thZ2UKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0JICAjIC0gIyMjIyMgYnVpbHQgYnkgYWJ1aWxkQGJ1aWxkMzMgb24gVGh1IE1heSA2IDExOjIxOjE3IFVUQyAyMDEwCi0tCSAgc2VkIC1pIC1lICdzfGJ1aWx0IGJ5IGFidWlsZEBbYS16MC05XSogb24gLi4uIC4uLiBbMC05XSogWzAtOV0qOlswLTldWzAtOV06WzAtOV1bMC05XSAuKiAyMFswLTldWzAtOV18YnVpbHQgYnkgYWJ1aWxkQGJ1aWxkNDIgb24gVGh1IE1heSA2IDExOjIxOjE3IFVUQyAyMDEwfCcgJGYKLS0gICAgICAgZG9uZQotLSAgICAgICA7OwotLSAgICAgL3Vzci9zaGFyZS9kb2Mva2RlL0hUTUwvKi8qL2luZGV4LmNhY2hlfC91c3Ivc2hhcmUvZG9jL2tkZS9IVE1MLyovKi8qL2luZGV4LmNhY2hlfFwKLS0gICAgIC91c3Ivc2hhcmUvZ3RrLWRvYy9odG1sLyovKi5odG1sfC91c3Ivc2hhcmUvZ3RrLWRvYy9odG1sLyovKi5kZXZoZWxwMikKLS0gICAgICAgIyB2YXJpb3VzIGtkZSBhbmQgZ3RrIHBhY2thZ2VzCi0tICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLS0gICAgICAgOzsKLS0gICAgKi9jcmVhdGVkLnJpZCkKLS0gICAgICAgIyBydWJ5IGRvY3VtZW50YXRpb24KLS0gICAgICAgIyBmaWxlIGp1c3QgY29udGFpbnMgYSB0aW1lc3RhbXAgYW5kIG5vdGhpbmcgZWxzZSwgc28gaWdub3JlIGl0Ci0tICAgICAgIGVjaG8gIklnbm9yZSAkZmlsZSIKLS0gICAgICAgcmV0dXJuIDAKLS0gICAgICAgOzsKLS0gICAgKi9yZG9jL2ZpbGVzLyouaHRtbCkKLS0gICAgICAgIyBydWJ5IGRvY3VtZW50YXRpb24KLS0gICAgICAgIyA8dGQ+TW9u4oCCU2Vw4oCCMjDigIIxOTowMjo0M+KAgiswMDAw4oCCMjAxMDwvdGQ+Ci0tICAgICAgIGZvciBmIGluIG9sZC8kZmlsZSBuZXcvJGZpbGU7IGRvCi0tICAgICAgICAgIHNlZCAtaSAtZSAncyU8dGQ+W0EtWl1bYS16XVthLXpdIFtBLVpdW2Etel1bYS16XSBbMC05XVwrIFswLTldXCs6WzAtOV1cKzpbMC05XVwrICswMDAwIDIwMVswLTldPC90ZD4lPHRkPk1vbuKAglNlcOKAgjIw4oCCMTk6MDI6NDPigIIrMDAwMOKAgjIwMTA8L3RkPiVnJyAkZgotLSAgICAgICBkb25lCi0tICAgICAgIHN0cmlwX251bWJlcmVkX2FuY2hvcnMKLS0gICAgICAgOzsKLS0gICAgKi9MaW51eCpFbnYuU2V0LnNoKQotLSAgICAgICAjIExpYnJlT2ZmaWNlIGZpbGVzLCBjb250YWluczoKLS0gICAgICAgIyBHZW5lcmF0ZWQgb246IE1vbiBBcHIgMTggMTM6MTk6MjIgVVRDIDIwMTEKLS0gICAgICAgZm9yIGYgaW4gb2xkLyRmaWxlIG5ldy8kZmlsZTsgZG8KLS0JIHNlZCAtaSAtZSAncyVeIyBHZW5lcmF0ZWQgb246LipVVEMgMjAxWzAtOV0gKiQlIyBHZW5lcmF0ZWQgb246IFNvbWV0aW1lJWcnICRmCi0tICAgICAgIGRvbmUKLS0gICAgICAgOzsKLS0gICAgL3Vzci9saWIvbGlicmVvZmZpY2Uvc29sdmVyL2luYy8qL2RlbGl2ZXIubG9nKQotLSAgICAgICAjIExpYnJlT2ZmaWNlIGxvZyBmaWxlCi0tICAgICAgZWNobyAiSWdub3JlICRmaWxlIgotLSAgICAgIHJldHVybiAwCi0tICAgICAgOzsKLS0gICAgL3Zhci9hZG0vdXBkYXRlLW1lc3NhZ2VzLyp8L3Zhci9hZG0vdXBkYXRlLXNjcmlwdHMvKikKLS0gICAgICAjIGVuY29kZSB2ZXJzaW9uLXJlbGVhc2UgaW5zaWRlCi0tICAgICAgb2xkZm49YGVjaG8gIiRmaWxlInxzZWQgLWUgcy8tJHJlbGVhc2UyLy0kcmVsZWFzZTEvO2AKLS0KLS0gICAgICAjIGZldGNobXN0dGZvbnRzIGVtYmVkcyB0aGUgcmVsZWFzZSBudW1iZXIgaW4gdGhlIHVwZGF0ZSBzaGVsbCBzY3JpcHQuCi0tICAgICAgZWNobyBzZWQgLWkgLWUgInMvLSRyZWxlYXNlMS8tJHJlbGVhc2UyL2c7IiAib2xkLyRvbGRmbiIKLS0gICAgICBzZWQgLWkgLWUgInMvLSRyZWxlYXNlMS8tJHJlbGVhc2UyL2c7IiAib2xkLyRvbGRmbiIKLS0KLS0gICAgICBpZiAhIGRpZmYgLXUgb2xkLyRvbGRmbiBuZXcvJGZpbGU7IHRoZW4KLS0gICAgICAgICAgIGVjaG8gIiRvbGRmbiBpcyBub3Qgc2FtZSBhcyAkZmlsZSIKLS0gICAgICAgICAgIHJldHVybiAxCi0tICAgICAgZmkKLS0gICAgICBlY2hvICIkZmlsZSBhbmQgJG9sZGZuIGFyZSBzYW1lIgotLSAgICAgIHJldHVybiAwCi0tICAgICAgOzsKLS0gICAgKi5wcykKLS0gICAgICBmb3IgZiBpbiAib2xkLyRmaWxlIiAibmV3LyRmaWxlIjsgZG8KLS0gICAgICAgIHNlZCAtaSAtZSAnCi0tCS9eJSVDcmVhdGlvbkRhdGU6W1s6Ymxhbms6XV0vZAotLQkvXiUlQ3JlYXRvcjpbWzpibGFuazpdXWdyb2ZmW1s6Ymxhbms6XV12ZXJzaW9uW1s6Ymxhbms6XV0vZAotLQknICIkZiIKLS0gICAgICBkb25lCi0tICAgIDs7Ci0tICAgICpwZGYpCi0tICAgICAgIyBQREYgZmlsZXMgY29udGFpbiBhIHVuaXF1ZSBJRCwgcmVtb3ZlIGl0Ci0tICAgICAgIyBGb3JtYXQgb2YgdGhlIElEIGlzOgotLSAgICAgICMgL0lEIFs8OUFDRTI0N0E3MENGOUJFQUZFRTE1RTExNjI1OUJENkQ+IDw5QUNFMjQ3QTcwQ0Y5QkVBRkVFMTVFMTE2MjU5QkQ2RD5dCi0tICAgICAgIyB3aXRoIG9wdGlvbmFsIHNwYWNlcy4gcGRmdGV4IGNyZWF0ZXMgYWxzbzoKLS0gICAgICAjIC9DcmVhdGlvbkRhdGUgKEQ6MjAxMjAxMDMwODMyMDZaKQotLSAgICAgICMgL01vZERhdGUgKEQ6MjAxMjAxMDMwODMyMDZaKQotLSAgICAgICMgYW5kIHBvc3NpYmx5IFhNTCBtZXRhZGF0YSBhcyB3ZWxsCi0tICAgICAgZm9yIGYgaW4gIm9sZC8kZmlsZSIgIm5ldy8kZmlsZSI7IGRvCi0tICAgICAgICBzZWQgLWkgXAotLSAgICAgICAgICAgICcvb2JqLywvZW5kb2JqL3sKLS0gICAgICAgICAgICAgICBzJS9JRCBcP1xbIFw/PFtePl1cKz4gXD88W14+XVwrPiBcP1xdJS9JRHJhbmRvbSVnOwotLSAgICAgICAgICAgICAgIHMlL0NyZWF0aW9uRGF0ZSBcPyhEOlteKV0qKSUvQ3JlYXRpb25EYXRlIChEOiBYWFgpJWc7Ci0tICAgICAgICAgICAgICAgcyUvTW9kRGF0ZSBcPyhEOlteKV0qKSUvTW9kRGF0ZSAoRDogWFhYKSVnOwotLSAgICAgICAgICAgICAgIHMlPHBkZjpDcmVhdGlvbkRhdGU+W148XSo8L3BkZjpDcmVhdGlvbkRhdGU+JTxwZGY6Q3JlYXRpb25EYXRlPlhYWDwvcGRmOkNyZWF0aW9uRGF0ZT4lZzsKLS0gICAgICAgICAgICAgICBzJTxwZGY6TW9kRGF0ZT5bXjxdKjwvcGRmOk1vZERhdGU+JTxwZGY6TW9kRGF0ZT5YWFg8L3BkZjpNb2REYXRlPiVnOwotLSAgICAgICAgICAgICAgIHMlPHhhcDpDcmVhdGVEYXRlPltePF0qPC94YXA6Q3JlYXRlRGF0ZT4lPHhhcDpDcmVhdGVEYXRlPlhYWDwveGFwOkNyZWF0ZURhdGU+JWc7Ci0tICAgICAgICAgICAgICAgcyU8eGFwOk1vZGlmeURhdGU+W148XSo8L3hhcDpNb2RpZnlEYXRlPiU8eGFwOk1vZGlmeURhdGU+WFhYPC94YXA6TW9kaWZ5RGF0ZT4lZzsKLS0gICAgICAgICAgICAgICBzJTx4YXA6TWV0YWRhdGFEYXRlPltePF0qPC94YXA6TWV0YWRhdGFEYXRlPiU8eGFwOk1ldGFkYXRhRGF0ZT5YWFg8L3hhcDpNZXRhZGF0YURhdGU+JWc7Ci0tICAgICAgICAgICAgfScgIiRmIgotLSAgICAgIGRvbmUKLS0gICAgICA7OwotLSAgZXNhYwotLQotLSAgZnR5cGU9YC91c3IvYmluL2ZpbGUgb2xkLyRmaWxlIHwgc2VkICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnYAotLSAgY2FzZSAkZnR5cGUgaW4KLS0gICAgIFBFMzJcIGV4ZWN1dGFibGUqTW9ub1wvXC5OZXRcIGFzc2VtYmx5KikKLS0gICAgICAgZWNobyAiUEUzMiBNb25vLy5OZXQgYXNzZW1ibHk6ICRmaWxlIgotLSAgICAgICBpZiBbIC14IC91c3IvYmluL21vbm9kaXMgXSA7IHRoZW4KLS0gICAgICAgICBtb25vZGlzIG9sZC8kZmlsZSAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvR1VJRCA9IHsuKn0vR1VJRCA9IHsgNDIgfS87Jz4gJHtmaWxlMX0KLS0gICAgICAgICBtb25vZGlzIG5ldy8kZmlsZSAyPi9kZXYvbnVsbHxzZWQgLWUgJ3MvR1VJRCA9IHsuKn0vR1VJRCA9IHsgNDIgfS87Jz4gJHtmaWxlMn0KLS0gICAgICAgICBpZiAhIGNtcCAtcyAke2ZpbGUxfSAke2ZpbGUyfTsgdGhlbgotLSAgICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyAoJGZ0eXBlKSIKLS0gICAgICAgICAgIGRpZmYgLXUgJHtmaWxlMX0gJHtmaWxlMn0KLS0gICAgICAgICAgIHJldHVybiAxCi0tICAgICAgICAgZmkKLS0gICAgICAgZWxzZQotLSAgICAgICAgIGVjaG8gIkNhbm5vdCBjb21wYXJlLCBubyBtb25vZGlzIGluc3RhbGxlZCIKLS0gICAgICAgICByZXR1cm4gMQotLSAgICAgICBmaQotLSAgICAgICA7OwotLSAgICBFTEYqZXhlY3V0YWJsZSp8RUxGKltMTV1TQlwgc2hhcmVkXCBvYmplY3QqKQotLSAgICAgICBvYmpkdW1wIC1kIC0tbm8tc2hvdy1yYXctaW5zbiBvbGQvJGZpbGUgfCBmaWx0ZXJfZGlzYXNtID4gJGZpbGUxCi0tICAgICAgIGlmICEgdGVzdCAtcyAkZmlsZTE7IHRoZW4KLS0gICAgICAgICAjIG9iamR1bXAgaGFzIG5vIGlkZWEgaG93IHRvIGhhbmRsZSBpdAotLSAgICAgICAgIGlmICEgZGlmZl90d29fZmlsZXM7IHRoZW4KLS0gICAgICAgICAgIHJldD0xCi0tICAgICAgICAgICBicmVhawotLSAgICAgICAgIGZpCi0tICAgICAgIGZpICAgICAgIAotLSAgICAgICBlbGZkaWZmPQotLSAgICAgICBzZWQgLWkgLWUgInMsb2xkLywsIiAkZmlsZTEKLS0gICAgICAgb2JqZHVtcCAtZCAtLW5vLXNob3ctcmF3LWluc24gbmV3LyRmaWxlIHwgZmlsdGVyX2Rpc2FzbSA+ICRmaWxlMgotLSAgICAgICBzZWQgLWkgLWUgInMsbmV3LywsIiAkZmlsZTIKLS0gICAgICAgaWYgISBkaWZmIC11ICRmaWxlMSAkZmlsZTIgPiAkZGZpbGU7IHRoZW4KLS0gICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyBpbiBhc3NlbWJsZXIgb3V0cHV0IgotLSAgICAgICAgICBoZWFkIC1uIDIwMCAkZGZpbGUKLS0gICAgICAgICAgZWxmZGlmZj0iMSIKLS0gICAgICAgZmkKLS0gICAgICAgZWNobyAiIiA+JGZpbGUxCi0tICAgICAgIGVjaG8gIiIgPiRmaWxlMgotLSAgICAgICAjIERvbid0IGNvbXBhcmUgLmJ1aWxkLWlkIGFuZCAuZ251X2RlYnVnbGluayBzZWN0aW9ucwotLSAgICAgICBzZWN0aW9ucz0iJChvYmpkdW1wIC1zIG5ldy8kZmlsZSB8IGdyZXAgIkNvbnRlbnRzIG9mIHNlY3Rpb24gLio6IiB8IHNlZCAtciAicywuKiAoLiopOixcMSxnIiB8IGdyZXAgLXYgLWUgIlwuYnVpbGQtaWQiIC1lICJcLmdudV9kZWJ1Z2xpbmsiIHwgdHIgIlxuIiAiICIpIgotLSAgICAgICBmb3Igc2VjdGlvbiBpbiAkc2VjdGlvbnM7IGRvCi0tICAgICAgICAgIG9iamR1bXAgLXMgLWogJHNlY3Rpb24gb2xkLyRmaWxlIHwgc2VkICJzLF5vbGQvLCwiID4gJGZpbGUxCi0tICAgICAgICAgIG9iamR1bXAgLXMgLWogJHNlY3Rpb24gbmV3LyRmaWxlIHwgc2VkICJzLF5uZXcvLCwiID4gJGZpbGUyCi0tICAgICAgICAgIGlmICEgZGlmZiAtdSAkZmlsZTEgJGZpbGUyID4gJGRmaWxlOyB0aGVuCi0tICAgICAgICAgICAgIGVjaG8gIiRmaWxlIGRpZmZlcnMgaW4gRUxGIHNlY3Rpb24gJHNlY3Rpb24iCi0tICAgICAgICAgICAgIGhlYWQgLW4gMjAwICRkZmlsZQotLSAgICAgICAgICAgICBlbGZkaWZmPSIxIgotLSAgICAgICAgICBmaQotLSAgICAgICBkb25lCi0tICAgICAgIGlmIHRlc3QgLXogIiRlbGZkaWZmIjsgdGhlbgotLSAgICAgICAgICBlY2hvICIkZmlsZTogb25seSBkaWZmZXJlbmNlIHdhcyBpbiBidWlsZC1pZCBvciBnbnVfZGVidWdsaW5rLCBHT09ELiIKLS0gICAgICAgICAgcmV0dXJuIDAKLS0gICAgICAgZmkKLS0gICAgICAgcmV0dXJuIDEKLS0gICAgICAgOzsKLS0gICAgICpBU0NJSSp8KnRleHQqKQotLSAgICAgICBpZiAhIGNtcCAtcyBvbGQvJGZpbGUgbmV3LyRmaWxlOyB0aGVuCi0tICAgICAgICAgZWNobyAiJGZpbGUgZGlmZmVycyAoJGZ0eXBlKSIKLS0gICAgICAgICBkaWZmIC11IG9sZC8kZmlsZSBuZXcvJGZpbGUgfCBoZWFkIC1uIDIwMAotLSAgICAgICAgIHJldHVybiAxCi0tICAgICAgIGZpCi0tICAgICAgIDs7Ci0tICAgICBkaXJlY3Rvcnl8c2V0dWlkLFwgZGlyZWN0b3J5fHN0aWNreSxcIGRpcmVjdG9yeSkKLS0gICAgICAgIyB0YXIgbWlnaHQgcGFja2FnZSBkaXJlY3RvcmllcyAtIGlnbm9yZSB0aGVtIGhlcmUKLS0gICAgICAgcmV0dXJuIDAKLS0gICAgICAgOzsKLS0gICAgIGJ6aXAyXCBjb21wcmVzc2VkXCBkYXRhKikKLS0gICAgICAgaWYgISBjaGVja19jb21wcmVzc2VkX2ZpbGUgIiRmaWxlIiAiYnoyIjsgdGhlbgotLSAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgOzsKLS0gICAgIGd6aXBcIGNvbXByZXNzZWRcIGRhdGEqKQotLSAgICAgICBpZiAhIGNoZWNrX2NvbXByZXNzZWRfZmlsZSAiJGZpbGUiICJnemlwIjsgdGhlbgotLSAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgOzsKLS0gICAgIFhaXCBjb21wcmVzc2VkXCBkYXRhKikKLS0gICAgICAgaWYgISBjaGVja19jb21wcmVzc2VkX2ZpbGUgIiRmaWxlIiAieHoiOyB0aGVuCi0tICAgICAgICAgICByZXR1cm4gMQotLSAgICAgICBmaQotLSAgICAgICA7OwotLSAgICAgUE9TSVhcIHRhclwgYXJjaGl2ZSkKLS0gICAgICAgICAgbXYgb2xkLyRmaWxleywudGFyfQotLSAgICAgICAgICBtdiBuZXcvJGZpbGV7LC50YXJ9Ci0tICAgICAgICAgIGlmICEgY2hlY2tfc2luZ2xlX2ZpbGUgJHtmaWxlfS50YXI7IHRoZW4KLS0gICAgICAgICAgICByZXR1cm4gMQotLSAgICAgICAgICBmaQotLSAgICAgICA7OwotLSAgICAgY3Bpb1wgYXJjaGl2ZSkKLS0gICAgICAgICAgbXYgb2xkLyRmaWxleywuY3Bpb30KLS0gICAgICAgICAgbXYgbmV3LyRmaWxleywuY3Bpb30KLS0gICAgICAgICAgaWYgISBjaGVja19zaW5nbGVfZmlsZSAke2ZpbGV9LmNwaW87IHRoZW4KLS0gICAgICAgICAgICByZXR1cm4gMQotLSAgICAgICAgICBmaQotLSAgICAgOzsKLS0gICAgIHN5bWJvbGljXCBsaW5rXCB0b1wgKikKLS0gICAgICAgcmVhZGxpbmsgIm9sZC8kZmlsZSIgPiAkZmlsZTEKLS0gICAgICAgcmVhZGxpbmsgIm5ldy8kZmlsZSIgPiAkZmlsZTIKLS0gICAgICAgaWYgISBkaWZmIC11ICRmaWxlMSAkZmlsZTI7IHRoZW4KLS0gICAgICAgICBlY2hvICJzeW1saW5rIHRhcmdldCBmb3IgJGZpbGUgZGlmZmVycyIKLS0gICAgICAgICByZXR1cm4gMQotLSAgICAgICBmaQotLSAgICAgICA7OwotLSAgICAgKikKLS0gICAgICAgaWYgISBkaWZmX3R3b19maWxlczsgdGhlbgotLSAgICAgICAgICAgcmV0dXJuIDEKLS0gICAgICAgZmkKLS0gICAgICAgOzsKLS0gIGVzYWMKLS0gIHJldHVybiAwCi0tfQotLQotLSMgV2UgbmVlZCAvcHJvYyBtb3VudGVkIGZvciBzb21lIHRlc3RzLCBzbyBjaGVjayB0aGF0IGl0J3MgbW91bnRlZCBhbmQKLS0jIGNvbXBsYWluIGlmIG5vdC4KLS1QUk9DX01PVU5URUQ9MAotLWlmIFsgISAtZCAvcHJvYy9zZWxmLyBdOyB0aGVuCi0tICBlY2hvICIvcHJvYyBpcyBub3QgbW91bnRlZCIKLS0gIG1vdW50IC1vcncgLW4gLXRwcm9jIG5vbmUgL3Byb2MKLS0gIFBST0NfTU9VTlRFRD0xCi0tZmkKLS0KLS0jIHByZXNlcnZlIGNtcF9zcGVjIHJlc3VsdCBmb3IgY2hlY2tfYWxsIHJ1bnMKLS1yZXQ9JFJFUwotLWZvciBmaWxlIGluICRmaWxlczsgZG8KLS0gICBpZiAhIGNoZWNrX3NpbmdsZV9maWxlICRmaWxlOyB0aGVuCi0tICAgICAgIHJldD0xCi0tICAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0tICAgICAgICAgICBicmVhawotLSAgICAgICBmaQotLSAgIGZpCi0tZG9uZQotLQotLWlmIFsgIiRQUk9DX01PVU5URUQiIC1lcSAiMSIgXTsgdGhlbgotLSAgZWNobyAiVW5tb3VudGluZyBwcm9jIgotLSAgdW1vdW50IC9wcm9jCi0tZmkKLS0KLS1ybSAkZmlsZTEgJGZpbGUyICRkZmlsZSAkcmVuYW1lX3NjcmlwdAotLXJtIC1yZiAkZGlyCi0taWYgdGVzdCAiJHJldCIgPSAwOyB0aGVuCi0tICAgICBlY2hvICJQYWNrYWdlIGNvbnRlbnQgaXMgaWRlbnRpY2FsIgotLWZpCi0tZXhpdCAkcmV0Ci0tIyB2aW06IHR3PTY2NiB0cz0yIGV0Ci1kaWZmIC0tZ2l0IGEvc2FtZS1idWlsZC1yZXN1bHQuc2ggYi9zYW1lLWJ1aWxkLXJlc3VsdC5zaAotaW5kZXggYzg5MDdlMi4uN2U5YmQ0ZiAxMDA2NDQKLS0tLSBhL3NhbWUtYnVpbGQtcmVzdWx0LnNoCi0rKysgYi9zYW1lLWJ1aWxkLXJlc3VsdC5zaAotQEAgLTcsMTEgKzcsMTEgQEAKLSAjIEVuaGFuY2VkIGJ5IEFuZHJlYXMgSmFlZ2VyIDxhakBzdXNlLmRlPgotICMKLSAjIFRoZSBzY3JpcHQgZGVjaWRlcyBpZiB0aGUgbmV3IGJ1aWxkIGRpZmZlcmVzIGZyb20gdGhlIGZvcm1lciBvbmUsCi0tIyB1c2luZyBycG0tY2hlY2suc2guCi0rIyB1c2luZyBwa2ctZGlmZi5zaC4KLSAjIFRoZSBzY3JpcHQgaXMgY2FsbGVkIGFzIHBhcnQgb2YgdGhlIGJ1aWxkIHByb2Nlc3MgYXM6Ci0gIyAvdXNyL2xpYi9idWlsZC9zYW1lLWJ1aWxkLXJlc3VsdC5zaCAvLmJ1aWxkLm9sZHBhY2thZ2VzIC91c3Ivc3JjL3BhY2thZ2VzL1JQTVMgL3Vzci9zcmMvcGFja2FnZXMvU1JQTVMKLSAKLS1DTVBTQ1JJUFQ9JHswJS8qfS9ycG0tY2hlY2suc2gKLStDTVBTQ1JJUFQ9JHswJS8qfS9wa2ctZGlmZi5zaAotIFNDTVBTQ1JJUFQ9JHswJS8qfS9zcnBtLWNoZWNrLnNoCi0gCi0gY2hlY2tfYWxsPTEKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1pbXByb3ZlLWRlYi1hbmQtaXBrLWNoZWNraW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9mdW5jdGlvbnMuc2gtaW1wcm92ZS1kZWItYW5kLWlway1jaGVja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDU0MjBmOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1pbXByb3ZlLWRlYi1hbmQtaXBrLWNoZWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE3ICswLDAgQEAKLUZyb20gYjRlYjdmZGUxMDMxODE2MmJkMmQwMmI5MDE3ZWY1MTc0Njc1MmE5MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxNCBKdWwgMjAxNiAyMzoxNDoyMSAtMDcwMAotU3ViamVjdDogW1BBVENIIDQvNF0gZnVuY3Rpb25zLnNoOiBpbXByb3ZlIGRlYiBhbmQgaXBrIGNoZWNraW5nCi0KLSogVGhlIGRlYiBhbmQgaXBrJ3MgZGVwZW5kcyB2ZXJzaW9uIHN0cmluZyBpcyBsaWtlOgotICBEZXBlbmRzOiBsaWJjNiAoPj0gMi4yNCkKLSAgVXBkYXRlIHRyaW1fcmVsZWFzZV9vbGQgYW5kIHRyaW1fcmVsZWFzZV9uZXcgdG8gbWF0Y2ggdGhlIGJyYWNrZXQgaW4KLSAgdGhlIGVuZCAiKSIuCi0KLSogVGhlIGRlYidzIGRhdGEgdGFyYmFsbCBub3cgaXMgLnRhci54eiwgYW5kIGlwaydzIGlzIC50YXIuZ3ouCi0KLSogVXBkYXRlIGFkanVzdF9jb250cm9sZmlsZSgpIHRvIG1ha2UgaXR1c2UgdHJpbV9yZWxlYXNlX29sZCBhbmQKLSAgdHJpbV9yZWxlYXNlX25ldy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvMTBdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZnVuY3Rpb25zLnNoIHwgNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZnVuY3Rpb25zLnNoIGIvZnVuY3Rpb25zLnNoCi1pbmRleCBhYTU3MmY5Li5mZTQ5M2JhIDEwMDc1NQotLS0tIGEvZnVuY3Rpb25zLnNoCi0rKysgYi9mdW5jdGlvbnMuc2gKLUBAIC03OCw3ICs3OCw3IEBAIGNoZWNrX2hlYWRlcigpCi0gZnVuY3Rpb24gdHJpbV9yZWxlYXNlX29sZCgpCi0gewotICAgc2VkIC1lICIKLS0gIC9cKFwvYm9vdFx8XC9saWJcL21vZHVsZXNcfFwvbGliXC9maXJtd2FyZVx8XC91c3JcL3NyY1x8JHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbFwkXCkve3MsJHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbCxAVkVSU0lPTkAtQFJFTEVBU0VfTE9OR0AsZztzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MsQFZFUlNJT05ALUBSRUxFQVNFX1NIT1JUQCxnfQotKyAgL1woXC9ib290XHxcL2xpYlwvbW9kdWxlc1x8XC9saWJcL2Zpcm13YXJlXHxcL3Vzclwvc3JjXHwkdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sXCRcfCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2wpXCkve3MsJHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbCxAVkVSU0lPTkAtQFJFTEVBU0VfTE9OR0AsZztzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MsQFZFUlNJT05ALUBSRUxFQVNFX1NIT1JUQCxnfQotICAgcy9cKFwvdmFyXC9hZG1cL3VwZGF0ZS1zY3JpcHRzXC9cKSR7bmFtZV92ZXJfcmVsX29sZF9yZWdleF9sfVwoW15bOmJsYW5rOl1dXCtcKS9cMUBOQU1FX1ZFUl9SRUxAXDIvZwotICAgcy9eICovL2cKLSAgICIKLUBAIC04Niw3ICs4Niw3IEBAIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9vbGQoKQotIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9uZXcoKQotIHsKLSAgIHNlZCAtZSAiCi0tICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2xcJFwpL3tzLCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KLSsgIC9cKFwvYm9vdFx8XC9saWJcL21vZHVsZXNcfFwvbGliXC9maXJtd2FyZVx8XC91c3JcL3NyY1x8JHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbFwkXHwkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sKVwpL3tzLCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KLSAgIHMvXChcL3ZhclwvYWRtXC91cGRhdGUtc2NyaXB0c1wvXCkke25hbWVfdmVyX3JlbF9uZXdfcmVnZXhfbH1cKFteWzpibGFuazpdXVwrXCkvXDFATkFNRV9WRVJfUkVMQFwyL2cKLSAgIHMvXiAqLy9nCi0gICAiCi1AQCAtMTMzLDggKzEzMyw4IEBAIGZ1bmN0aW9uIHVucGFja2FnZSgpCi0gICAgICAgICAgICAgYXIgeCAkZmlsZQotICAgICAgICAgICAgIHRhciB4ZiBjb250cm9sLnRhci5negotICAgICAgICAgICAgIHJtIGNvbnRyb2wudGFyLmd6Ci0tICAgICAgICAgICAgdGFyIHhmIGRhdGEudGFyLmd6Ci0tICAgICAgICAgICAgcm0gZGF0YS50YXIuZ3oKLSsgICAgICAgICAgICB0YXIgeGYgZGF0YS50YXIuW3hnXXoKLSsgICAgICAgICAgICBybSBkYXRhLnRhci5beGddegotICAgICAgICAgICAgIDs7Ci0gICAgIGVzYWMKLSAgICAgcG9wZCAxPi9kZXYvbnVsbAotQEAgLTE2NCw2ICsxNjQsMjIgQEAgZnVuY3Rpb24gZ2V0X3ZhbHVlKCkKLSAgICAgc2VkIC1uIC1lICIvXl9fXyR7MX1fX18vLC9eX19fJHsxfV9fXy9wIiAkMiB8IHNlZCAtZSAiL15fX18kezF9X19fL2QiCi0gfQotIAotKyMgU2V0IHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcywgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sIGFuZAotKyMgbmFtZV92ZXJfcmVsX29sZF9yZWdleF9sLCBhbHNvIHRoZSBuZXcgb25lcy4KLStmdW5jdGlvbiBzZXRfcmVnZXgoKSB7Ci0rICAgICMgUmVtZW1iZXIgdG8gcXVvdGUgdGhlIC4gd2hpY2ggaXMgaW4gcmVsZWFzZQotKyAgICAjIFNob3J0IHZlcnNpb24gd2l0aG91dCBCX0NOCi0rICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGQlLip9Ci0rICAgIHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfcy8vLi9cXC59Ci0rICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXclLip9Ci0rICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcz0ke3ZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfcy8vLi9cXC59Ci0rICAgICMgTG9uZyB2ZXJzaW9uIHdpdGggQl9DTlQKLSsgICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9sPSR7dmVyc2lvbl9yZWxlYXNlX29sZC8vLi9cXC59Ci0rICAgIHZlcnNpb25fcmVsZWFzZV9uZXdfcmVnZXhfbD0ke3ZlcnNpb25fcmVsZWFzZV9uZXcvLy4vXFwufQotKyAgICBuYW1lX3Zlcl9yZWxfb2xkX3JlZ2V4X2w9JHtuYW1lX3Zlcl9yZWxfb2xkLy8uL1xcLn0KLSsgICAgbmFtZV92ZXJfcmVsX25ld19yZWdleF9sPSR7bmFtZV92ZXJfcmVsX25ldy8vLi9cXC59Ci0rfQotKwotICMgQ29tcGFyZSBqdXN0IHRoZSBycG0gbWV0YSBkYXRhIG9mIHR3byBycG1zCi0gIyBSZXR1cm5zOgotICMgMCBpbiBjYXNlIG9mIHNhbWUgY29udGVudAotQEAgLTE5NCwxNyArMjEwLDcgQEAgZnVuY3Rpb24gY21wX3NwZWMgKCkKLSAgICAgdmVyc2lvbl9yZWxlYXNlX29sZD0iJChnZXRfdmFsdWUgUUZfVkVSX1JFTCAkc3BlY19vbGQpIgotICAgICBuYW1lX3Zlcl9yZWxfb2xkPSIkKGdldF92YWx1ZSBRRl9OQU1FX1ZFUl9SRUwgJHNwZWNfb2xkKSIKLSAKLS0gICAgIyBSZW1lbWJlciB0byBxdW90ZSB0aGUgLiB3aGljaCBpcyBpbiByZWxlYXNlCi0tICAgICMgU2hvcnQgdmVyc2lvbiB3aXRob3V0IEJfQ04KLS0gICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX29sZCUuKn0KLS0gICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLy8uL1xcLn0KLS0gICAgdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX25ldyUuKn0KLS0gICAgdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zLy8uL1xcLn0KLS0gICAgIyBMb25nIHZlcnNpb24gd2l0aCBCX0NOVAotLSAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X2w9JHt2ZXJzaW9uX3JlbGVhc2Vfb2xkLy8uL1xcLn0KLS0gICAgdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9sPSR7dmVyc2lvbl9yZWxlYXNlX25ldy8vLi9cXC59Ci0tICAgIG5hbWVfdmVyX3JlbF9vbGRfcmVnZXhfbD0ke25hbWVfdmVyX3JlbF9vbGQvLy4vXFwufQotLSAgICBuYW1lX3Zlcl9yZWxfbmV3X3JlZ2V4X2w9JHtuYW1lX3Zlcl9yZWxfbmV3Ly8uL1xcLn0KLSsgICAgc2V0X3JlZ2V4Ci0gCi0gICAgICMgQ2hlY2sgdGhlIHdob2xlIHNwZWMgZmlsZSBhdCBmaXJzdCwgcmV0dXJuIDAgaW1tZWRpYXRlbHkgaWYgdGhlCi0gICAgICMgYXJlIHRoZSBzYW1lLgotQEAgLTI4NSw5ICsyOTEsMTQgQEAgZnVuY3Rpb24gY21wX3NwZWMgKCkKLSB9Ci0gCi0gZnVuY3Rpb24gYWRqdXN0X2NvbnRyb2xmaWxlKCkgewotLSAgICBjYXQgJDEvY29udHJvbCB8IHNlZCAnL15WZXJzaW9uOiAvZCcgPiAkMS9jb250cm9sLmZpeGVkCi0rICAgIHZlcnNpb25fcmVsZWFzZV9vbGQ9ImBzZWQgLW5lICdzL15WZXJzaW9uOiBcKC4qXCkvXDEvcCcgJDEvY29udHJvbGAiCi0rICAgIG5hbWVfdmVyX3JlbF9vbGQ9ImBzZWQgLW4gLWUgJ3MvXlBhY2thZ2U6IFwoLipcKS9cMS9wJyAkMS9jb250cm9sYC1gc2VkIC1uIC1lICdzL15WZXJzaW9uOiBcKC4qXCkvXDEvcCcgJDEvY29udHJvbGAiCi0rICAgIHZlcnNpb25fcmVsZWFzZV9uZXc9ImBzZWQgLW5lICdzL15WZXJzaW9uOiBcKC4qXCkvXDEvcCcgJDIvY29udHJvbGAiCi0rICAgIG5hbWVfdmVyX3JlbF9uZXc9ImBzZWQgLW4gLWUgJ3MvXlBhY2thZ2U6IFwoLipcKS9cMS9wJyAkMi9jb250cm9sYC1gc2VkIC1uIC1lICdzL15WZXJzaW9uOiBcKC4qXCkvXDEvcCcgJDIvY29udHJvbGAiCi0rICAgIHNldF9yZWdleAotKyAgICBjYXQgJDEvY29udHJvbCB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkMS9jb250cm9sLmZpeGVkCi0gICAgIG12ICQxL2NvbnRyb2wuZml4ZWQgJDEvY29udHJvbAotLSAgICBjYXQgJDIvY29udHJvbCB8IHNlZCAnL15WZXJzaW9uOiAvZCcgPiAkMi9jb250cm9sLmZpeGVkCi0rICAgIGNhdCAkMi9jb250cm9sIHwgdHJpbV9yZWxlYXNlX25ldyA+ICQyL2NvbnRyb2wuZml4ZWQKLSAgICAgbXYgJDIvY29udHJvbC5maXhlZCAkMi9jb250cm9sCi0gfQotIAotLS0gCi0yLjkuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1yZW1vdmUtc3BhY2UtYXQtaGVhZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvZnVuY3Rpb25zLnNoLXJlbW92ZS1zcGFjZS1hdC1oZWFkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMmU5NmJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvZnVuY3Rpb25zLnNoLXJlbW92ZS1zcGFjZS1hdC1oZWFkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSA0MDJhODIxZTYwNGYyODBlNjJjMzRiZjRkNDBjNmQxYjRjNmM4OTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDQgSnVsIDIwMTYgMjA6MTE6MzMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZnVuY3Rpb25zLnNoOiByZW1vdmUgc3BhY2UgYXQgaGVhZAotCi1UaGUgY29tbWFuZCBsaWtlOgotcnBtIC1xcCAtLW5vZGlnZXN0IC0tbm9zaWduYXR1cmUgLS1xZiAnPGZvbz4gWyV7UkVRVUlSRU5BTUV9XG5dXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5ec3BhY2UKLQotVGhlIHNwYWNlIHdpbGwgYmUgcHJpbnRlZCwgYW5kIHdpbGwgaW1wYWN0IHRoZSBjaGVjayByZXN1bHQsIHNvIHJlbW92ZSBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvOV0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBmdW5jdGlvbnMuc2ggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZnVuY3Rpb25zLnNoIGIvZnVuY3Rpb25zLnNoCi1pbmRleCA4NWM5MDAzLi5iMTA2OWQyIDEwMDY0NAotLS0tIGEvZnVuY3Rpb25zLnNoCi0rKysgYi9mdW5jdGlvbnMuc2gKLUBAIC0yNiw2ICsyNiw3IEBAIGZ1bmN0aW9uIHRyaW1fcmVsZWFzZV9vbGQoKQotICAgc2VkIC1lICIKLSAgIC9cKFwvYm9vdFx8XC9saWJcL21vZHVsZXNcfFwvbGliXC9maXJtd2FyZVx8XC91c3JcL3NyY1x8JHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbFwkXCkve3MsJHZlcnNpb25fcmVsZWFzZV9vbGRfcmVnZXhfbCxAVkVSU0lPTkAtQFJFTEVBU0VfTE9OR0AsZztzLCR2ZXJzaW9uX3JlbGVhc2Vfb2xkX3JlZ2V4X3MsQFZFUlNJT05ALUBSRUxFQVNFX1NIT1JUQCxnfQotICAgcy9cKFwvdmFyXC9hZG1cL3VwZGF0ZS1zY3JpcHRzXC9cKSR7bmFtZV92ZXJfcmVsX29sZF9yZWdleF9sfVwoW15bOmJsYW5rOl1dXCtcKS9cMUBOQU1FX1ZFUl9SRUxAXDIvZwotKyAgcy9eICovL2cKLSAgICIKLSB9Ci0gZnVuY3Rpb24gdHJpbV9yZWxlYXNlX25ldygpCi1AQCAtMzMsNiArMzQsNyBAQCBmdW5jdGlvbiB0cmltX3JlbGVhc2VfbmV3KCkKLSAgIHNlZCAtZSAiCi0gICAvXChcL2Jvb3RcfFwvbGliXC9tb2R1bGVzXHxcL2xpYlwvZmlybXdhcmVcfFwvdXNyXC9zcmNcfCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2xcJFwpL3tzLCR2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2wsQFZFUlNJT05ALUBSRUxFQVNFX0xPTkdALGc7cywkdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zLEBWRVJTSU9OQC1AUkVMRUFTRV9TSE9SVEAsZ30KLSAgIHMvXChcL3ZhclwvYWRtXC91cGRhdGUtc2NyaXB0c1wvXCkke25hbWVfdmVyX3JlbF9uZXdfcmVnZXhfbH1cKFteWzpibGFuazpdXVwrXCkvXDFATkFNRV9WRVJfUkVMQFwyL2cKLSsgIHMvXiAqLy9nCi0gICAiCi0gfQotICMgR2V0IHNpbmdsZSBkaXJlY3Rvcnkgb3IgZmlsZW5hbWUgd2l0aCBsb25nIG9yIHNob3J0IHJlbGVhc2Ugc3RyaW5nCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvZnVuY3Rpb25zLnNoLXJ1bi1ycG0tb25jZS10by1tYWtlLWl0LWZhc3Rlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvZnVuY3Rpb25zLnNoLXJ1bi1ycG0tb25jZS10by1tYWtlLWl0LWZhc3Rlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjViOTlkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL2Z1bmN0aW9ucy5zaC1ydW4tcnBtLW9uY2UtdG8tbWFrZS1pdC1mYXN0ZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNjEgKzAsMCBAQAotRnJvbSBmMzRkNjMyYzQyN2IxZTE1NzBlZjkxMzY0NTRmYzAxZDhjOWYxMGE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDcgSnVsIDIwMTYgMTk6MzQ6MDkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gZnVuY3Rpb25zLnNoOiBydW4gcnBtIG9uY2UgdG8gbWFrZSBpdCBmYXN0ZXIKLQotVGhlIHJwbSB0b29sIGlzIGEgaGVhdnkgcHJvY2VzcywgaXQgcmFuIDE2IChvciAxNyBmb3Iga2VybmVsKQotInJwbSAtcXAiIHRpbWVzIHdoZW4gdGhlIHBrZ3MgYXJlIGlkZW50aWNhbCwgbm93IHdlIG9ubHkgcnVuCi0icnBtIC1xcCAtLXFmIDxhbGwgd2UgbmVlZD4iIHR3aWNlIChvbmUgaXMgZm9yIG9sZCBwa2csIGFuZCBvbmUgaXMgZm9yCi1uZXcpLCBzYXZlIHRoZSByZXN1bHRzIHRvIHNwZWNfb2xkIGFuZCBzcGVjX25ldywgdGhlbiB1c2Ugc2VkIGNvbW1hbmQgdG8KLWdldCB3aGF0IHdlIG5lZWQgbGF0ZXIsIHRoaXMgY2FuIG1ha2UgaXQgNzUlIGZhc3RlciB3aGVuIHRoZSBwa2dzIGFyZQotaWRlbnRpY2FsLiBIZXJlIGlzIHRoZSByb3VnaCBkYXRhIG9uIG15IGhvc3QgVWJ1bnR1IDE0LjA0LjQsIDMyIGNvcmVzCi1DUFUgYW5kIDEyOEcgbWVtOgotKiBXaGVuIHRoZSBwa2dzIGFyZSBpZGVudGljYWw6Ci0gIC0gQmVmb3JlIHRoZSBwYXRjaDogMXMKLSAgLSBBZnRlciB0aGUgcGF0Y2g6IDAuMjZzCi0gIEkgY29tcGFyZSB0aGUgd2hvbGUgc3BlYyBmaXJzdGx5LCBhbmQgcmV0dXJuIDAgaWYgdGhleSBhcmUgdGhlIHNhbWUsCi0gIG9yIGdvIG9uIGNoZWNraW5nIG9uZSBieSBvbmUgaWYgbm90LCB3aXRob3V0IHRoaXMsIGl0IHdvdWxkIGJlIDAuNDZzLAotICB0aGUgZ2FpbiBpcyBncmVhdCB3aGVuIHRoZXJlIGFyZSBsb3Qgb2YgcGFja2FnZXMsIHVzdWFsbHksIHdlIGhhdmUKLSAgbW9yZSB0aGFuIDEwLDAwMCBycG1zIHRvIGNvbXBhcmUuCi0KLSogV2hlbiB0aGUgcGtncyBhcmUgZGlmZmVyZW50OgotICBUaGF0IGRlcGVuZHMgb24gd2hlcmUgaXMgdGhlIGRpZmZlcmVudCwgaWYgdGhlIGRpZmZlcmVudCBpcyBhdCB0aGUKLSAgY29tcGFyaW5nIHJwbXRhZ3Mgc3RhZ2U6Ci0gIC0gQmVmb3JlIHRoZSBwYXRjaDogMC4yNnMKLSAgLSBBZnRlciB0aGUgcGF0Y2g6IDAuMjlzCi0gIEluY3JlYXNlZCAwLjAzcywgYnV0IGlmIHRoZSBkaWZmZXJlbnQgaXMgaGFwcGVuZCBsYXRlciB0aGFuIGNvbXBhcmluZwotICBycG10YWdzLCBpdCB3aWxsIHNhdmUgdGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvOV0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBmdW5jdGlvbnMuc2ggfCAyNDUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTMyIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKLSBtb2RlIGNoYW5nZSAxMDA2NDQgPT4gMTAwNzU1IGZ1bmN0aW9ucy5zaAotCi1kaWZmIC0tZ2l0IGEvZnVuY3Rpb25zLnNoIGIvZnVuY3Rpb25zLnNoCi1vbGQgbW9kZSAxMDA2NDQKLW5ldyBtb2RlIDEwMDc1NQotaW5kZXggYjEwNjlkMi4uYWE1NzJmOQotLS0tIGEvZnVuY3Rpb25zLnNoCi0rKysgYi9mdW5jdGlvbnMuc2gKLUBAIC0xMCw5ICsxMCw2MyBAQAotIAotIFJQTT0icnBtIC1xcCAtLW5vZGlnZXN0IC0tbm9zaWduYXR1cmUiCi0gCi0tY2hlY2tfaGVhZGVyKCkgCi0rIyBOYW1lLCBWZXJzaW9uLCBSZWxlYXNlCi0rUUZfTkFNRT0iJXtOQU1FfSIKLStRRl9WRVJfUkVMPSIle1ZFUlNJT059LSV7UkVMRUFTRX0iCi0rUUZfTkFNRV9WRVJfUkVMPSIle05BTUV9LSV7VkVSU0lPTn0tJXtSRUxFQVNFfSIKLSsKLSsjIHByb3ZpZGVzIGRlc3Ryb3kgdGhpcyBiZWNhdXNlIGF0IGxlYXN0IHRoZSBzZWxmLXByb3ZpZGUgaW5jbHVkZXMgdGhlCi0rIyAtYnVpbGRudW1iZXIgOi0oCi0rUUZfUFJPVklERVM9Ilsle1BST1ZJREVOQU1FfSAle1BST1ZJREVGTEFHU30gJXtQUk9WSURFVkVSU0lPTn1cXG5dXFxuIgotK1FGX1BST1ZJREVTPSIkUUZfUFJPVklERVMgWyV7UkVRVUlSRU5BTUV9ICV7UkVRVUlSRUZMQUdTfSAle1JFUVVJUkVWRVJTSU9OfVxcbl1cXG4iCi0rUUZfUFJPVklERVM9IiRRRl9QUk9WSURFUyBbJXtDT05GTElDVE5BTUV9ICV7Q09ORkxJQ1RGTEFHU30gJXtDT05GTElDVFZFUlNJT059XFxuXVxcbiIKLStRRl9QUk9WSURFUz0iJFFGX1BST1ZJREVTIFsle09CU09MRVRFTkFNRX0gJXtPQlNPTEVURUZMQUdTfSAle09CU09MRVRFVkVSU0lPTn1cXG5dXFxuIgotKwotKyMgZG9uJ3QgbG9vayBhdCBSRUxFQVNFLCBpdCBjb250YWlucyBvdXIgYnVpbGQgbnVtYmVyCi0rUUZfVEFHUz0iJXtOQU1FfSAle1ZFUlNJT059ICV7RVBPQ0h9XFxuIgotK1FGX1RBR1M9IiRRRl9UQUdTICV7U1VNTUFSWX1cXG4le0RFU0NSSVBUSU9OfVxcbiIKLSsjIHRoZSBESVNUVVJMIHRhZyBjYW4gYmUgdXNlZCBhcyBjaGVja2luIElECi0rUUZfVEFHUz0iJFFGX1RBR1MgJXtWRU5ET1J9ICV7RElTVFJJQlVUSU9OfSAle0RJU1RVUkx9IgotK1FGX1RBR1M9IiRRRl9UQUdTICV7TElDRU5TRX0gJXtMSUNFTlNFfVxcbiIKLStRRl9UQUdTPSIkUUZfVEFHUyAle0dST1VQfSAle1VSTH0gJXtFWENMVURFQVJDSH0gJXtFWENMVURFT1N9ICV7RVhDTFVTSVZFQVJDSH1cXG4iCi0rUUZfVEFHUz0iJFFGX1RBR1MgJXtFWENMVVNJVkVPU30gJXtSUE1WRVJTSU9OfSAle1BMQVRGT1JNfVxcbiIKLStRRl9UQUdTPSIkUUZfVEFHUyAle1BBWUxPQURGT1JNQVR9ICV7UEFZTE9BRENPTVBSRVNTT1J9ICV7UEFZTE9BREZMQUdTfVxcbiIKLSsKLSsjIFhYWCBXZSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIGV4aXN0ZW5jZSAoYnV0IG5vdCB0aGUgY29udGVudCAoISkpCi0rIyBvZiBTSUdHUEcgKGFuZCBwZXJoYXBzIHRoZSBvdGhlciBTSUcqKQotKyMgWFhYIFdlIGRvbid0IGxvb2sgYXQgdHJpZ2dlcnMKLStRRl9UQUdTPSIkUUZfVEFHUyBbJXtWRVJJRllTQ1JJUFRQUk9HfSAle1ZFUklGWVNDUklQVH1dXFxuIgotKyMgT25seSB0aGUgZmlyc3QgQ2hhbmdlTG9nIGVudHJ5OyBzaG91bGQgYmUgZW5vdWdoCi0rUUZfVEFHUz0iJFFGX1RBR1MgJXtDSEFOR0VMT0dUSU1FfSAle0NIQU5HRUxPR05BTUV9ICV7Q0hBTkdFTE9HVEVYVH1cXG4iCi0rCi0rIyBzY3JpcHRzLCBtaWdodCBjb250YWluIHJlbGVhc2UgbnVtYmVyCi0rUUZfU0NSSVBUPSJbJXtQUkVJTlBST0d9ICV7UFJFSU59XFxuXVxcblsle1BPU1RJTlBST0d9ICV7UE9TVElOfVxcbl1cXG5bJXtQUkVVTlBST0d9ICV7UFJFVU59XFxuXVxcblsle1BPU1RVTlBST0d9ICV7UE9TVFVOfVxcbl1cXG4iCi0rCi0rIyBOb3cgdGhlIGZpbGVzLiBXZSBsZWF2ZSBvdXQgbXRpbWUgYW5kIHNpemUuICBGb3Igbm9ybWFsIGZpbGVzCi0rIyB0aGUgc2l6ZSB3aWxsIGluZmx1ZW5jZSB0aGUgTUQ1IGFueXdheS4gIEZvciBkaXJlY3RvcmllcyB0aGUgc2l6ZXMgY2FuCi0rIyBkaWZmZXIsIGRlcGVuZGluZyBvbiB3aGljaCBmaWxlIHN5c3RlbSB0aGUgcGFja2FnZSB3YXMgYnVpbHQuICBUbyBub3QKLSsjIGhhdmUgdG8gZmlsdGVyIG91dCBkaXJlY3RvcmllcyB3ZSBzaW1wbHkgaWdub3JlIGFsbCBzaXplcy4KLSsjIEFsc28gbGVhdmUgb3V0IEZJTEVERVZJQ0VTLCBGSUxFSU5PREVTIChkZXBlbmRzIG9uIHRoZSBidWlsZCBob3N0KSwKLSsjIEZJTEVDT0xPUlMsIEZJTEVDTEFTUyAobm9ybWFsbHkgdXNlZnVsIGJ1dCBmaWxlIG91dHB1dCBjb250YWlucyBtdGltZXMpLAotKyMgRklMRURFUEVORFNYIGFuZCBGSUxFREVQRU5EU04uCi0rIyBBbHNvIEZJTEVMQU5HUyAob3I/KQotK1FGX0ZJTEVMSVNUPSJbJXtGSUxFTkFNRVN9ICV7RklMRUZMQUdTfSAle0ZJTEVTVEFURVN9ICV7RklMRU1PREVTOm9jdGFsfSAle0ZJTEVVU0VSTkFNRX0gJXtGSUxFR1JPVVBOQU1FfSAle0ZJTEVSREVWU30gJXtGSUxFVkVSSUZZRkxBR1N9ICV7RklMRUxJTktUT1N9XG5dXFxuIgotKyMgPz8/IHdoYXQgdG8gZG8gd2l0aCBGSUxFUFJPVklERSBhbmQgRklMRVJFUVVJUkU/Ci0rCi0rUUZfQ0hFQ0tTVU09Ilsle0ZJTEVOQU1FU30gJXtGSUxFTUQ1U30gJXtGSUxFRkxBR1N9XG5dXFxuIgotKwotK1FGX0FMTD0iXG5fX19RRl9OQU1FX19fXG4ke1FGX05BTUV9XG5fX19RRl9OQU1FX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9UQUdTX19fXG4ke1FGX1RBR1N9XG5fX19RRl9UQUdTX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9WRVJfUkVMX19fXG4ke1FGX1ZFUl9SRUx9XG5fX19RRl9WRVJfUkVMX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9OQU1FX1ZFUl9SRUxfX19cbiR7UUZfTkFNRV9WRVJfUkVMfVxuX19fUUZfTkFNRV9WRVJfUkVMX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9QUk9WSURFU19fX1xuJHtRRl9QUk9WSURFU31cbl9fX1FGX1BST1ZJREVTX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9TQ1JJUFRfX19cbiR7UUZfU0NSSVBUfVxuX19fUUZfU0NSSVBUX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9GSUxFTElTVF9fX1xuJHtRRl9GSUxFTElTVH1cbl9fX1FGX0ZJTEVMSVNUX19fXG4iCi0rUUZfQUxMPSIkUUZfQUxMXG5fX19RRl9DSEVDS1NVTV9fX1xuJHtRRl9DSEVDS1NVTX1cbl9fX1FGX0NIRUNLU1VNX19fXG4iCi0rCi0rY2hlY2tfaGVhZGVyKCkKLSB7Ci0tICAgJFJQTSAtLXFmICIkUUYiICIkMSIKLSsgICAkUlBNIC0tcWYgIiQxIiAiJDIiCi0gfQotIAotICMgVHJpbSB2ZXJzaW9uLXJlbGVhc2Ugc3RyaW5nOgotQEAgLTQ3LDE4ICsxMDEsNiBAQCBmdW5jdGlvbiBncmVwX3JlbGVhc2VfbmV3KCkKLSAgIGdyZXAgLUUgIigvYm9vdHwvbGliL21vZHVsZXN8L2xpYi9maXJtd2FyZXwvdXNyL3NyYykvW14vXSsoJHt2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2x9KFwkfFteL10rXCQpfCR7dmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zfShcJHxbXi9dK1wkKSkiCi0gfQotIAotLWZ1bmN0aW9uIGNoZWNrX3Byb3ZpZGVzKCkKLS17Ci0tICBsb2NhbCBwa2c9JDEKLS0gICMgcHJvdmlkZXMgZGVzdHJveSB0aGlzIGJlY2F1c2UgYXQgbGVhc3QgdGhlIHNlbGYtcHJvdmlkZSBpbmNsdWRlcyB0aGUKLS0gICMgLWJ1aWxkbnVtYmVyIDotKAotLSAgUUY9Ilsle1BST1ZJREVOQU1FfSAle1BST1ZJREVGTEFHU30gJXtQUk9WSURFVkVSU0lPTn1cXG5dXFxuIgotLSAgUUY9IiRRRiBbJXtSRVFVSVJFTkFNRX0gJXtSRVFVSVJFRkxBR1N9ICV7UkVRVUlSRVZFUlNJT059XFxuXVxcbiIKLS0gIFFGPSIkUUYgWyV7Q09ORkxJQ1ROQU1FfSAle0NPTkZMSUNURkxBR1N9ICV7Q09ORkxJQ1RWRVJTSU9OfVxcbl1cXG4iCi0tICBRRj0iJFFGIFsle09CU09MRVRFTkFNRX0gJXtPQlNPTEVURUZMQUdTfSAle09CU09MRVRFVkVSU0lPTn1cXG5dXFxuIgotLSAgY2hlY2tfaGVhZGVyICIkcGtnIgotLX0KLS0KLSAjdXNhZ2UgdW5wYWNrYWdlIDxmaWxlPiAkZGlyCi0gIyBVbnBhY2sgZmlsZXMgaW4gZGlyZWN0b3J5ICRkaXIKLSAjIGxpa2UgL3Vzci9iaW4vdW5wYWNrYWdlIC0ganVzdCBmb3Igb25lIGZpbGUgYW5kIHdpdGggbm8gb3B0aW9ucwotQEAgLTk4LDYgKzE0MCwzMCBAQCBmdW5jdGlvbiB1bnBhY2thZ2UoKQotICAgICBwb3BkIDE+L2Rldi9udWxsCi0gfQotIAotKyMgUnVuIGRpZmYgY29tbWFuZCBvbiB0aGUgZmlsZXMKLSsjICQxOiBwcmludGVkIGluZm8KLSsjICQyOiBmaWxlMQotKyMgJDM6IGZpbGUyCi0rZnVuY3Rpb24gY29tcF9maWxlKCkKLSt7Ci0rICAgIGVjaG8gImNvbXBhcmluZyAkMSIKLSsgICAgaWYgISBkaWZmIC1hdSAkMiAkMzsgdGhlbgotKyAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0rICAgICAgICBybSAkMiAkMyAkc3BlY19vbGQgJHNwZWNfbmV3Ci0rICAgICAgICByZXR1cm4gMQotKyAgICAgIGZpCi0rICAgIGZpCi0rICAgIHJldHVybiAwCi0rfQotKwotKyMgR2V0IHZhcidzIHZhbHVlIGZyb20gc3BlY2ZpbGUuCi0rIyAkMTogdmFyIG5hbWUKLSsjICQyOiBzcGVjZmlsZQotK2Z1bmN0aW9uIGdldF92YWx1ZSgpCi0rewotKyAgICBzZWQgLW4gLWUgIi9eX19fJHsxfV9fXy8sL15fX18kezF9X19fL3AiICQyIHwgc2VkIC1lICIvXl9fXyR7MX1fX18vZCIKLSt9Ci0rCi0gIyBDb21wYXJlIGp1c3QgdGhlIHJwbSBtZXRhIGRhdGEgb2YgdHdvIHJwbXMKLSAjIFJldHVybnM6Ci0gIyAwIGluIGNhc2Ugb2Ygc2FtZSBjb250ZW50Ci1AQCAtMTA3LDU2ICsxNzMsMjkgQEAgZnVuY3Rpb24gdW5wYWNrYWdlKCkKLSBmdW5jdGlvbiBjbXBfc3BlYyAoKQotIHsKLSAgICAgbG9jYWwgUkVTCi0tICAgIGxvY2FsIGZpbGUxIGZpbGUyCi0rICAgIGxvY2FsIGZpbGVfb2xkIGZpbGVfbmV3Ci0gICAgIGxvY2FsIGYKLSAgICAgbG9jYWwgc2g9JDEKLSAgICAgbG9jYWwgb2xkcnBtPSQyCi0gICAgIGxvY2FsIG5ld3JwbT0kMwotIAotLSAgICBRRj0iJXtOQU1FfSIKLS0gICAgCi0tICAgICMgZG9uJ3QgbG9vayBhdCBSRUxFQVNFLCBpdCBjb250YWlucyBvdXIgYnVpbGQgbnVtYmVyCi0tICAgIFFGPSIkUUYgJXtWRVJTSU9OfSAle0VQT0NIfVxcbiIKLS0gICAgUUY9IiRRRiAle1NVTU1BUll9XFxuJXtERVNDUklQVElPTn1cXG4iCi0tICAgIFFGPSIkUUYgJXtWRU5ET1J9ICV7RElTVFJJQlVUSU9OfSAle0RJU1RVUkx9IgotLSAgICBRRj0iJFFGICV7TElDRU5TRX0gJXtMSUNFTlNFfVxcbiIKLS0gICAgUUY9IiRRRiAle0dST1VQfSAle1VSTH0gJXtFWENMVURFQVJDSH0gJXtFWENMVURFT1N9ICV7RVhDTFVTSVZFQVJDSH1cXG4iCi0tICAgIFFGPSIkUUYgJXtFWENMVVNJVkVPU30gJXtSUE1WRVJTSU9OfSAle1BMQVRGT1JNfVxcbiIKLS0gICAgUUY9IiRRRiAle1BBWUxPQURGT1JNQVR9ICV7UEFZTE9BRENPTVBSRVNTT1J9ICV7UEFZTE9BREZMQUdTfVxcbiIKLS0gICAgCi0tIAotLSAgICAjIFhYWCBXZSBhbHNvIG5lZWQgdG8gY2hlY2sgdGhlIGV4aXN0ZW5jZSAoYnV0IG5vdCB0aGUgY29udGVudCAoISkpCi0tICAgICMgb2YgU0lHR1BHIChhbmQgcGVyaGFwcyB0aGUgb3RoZXIgU0lHKikKLS0gICAgCi0tICAgICMgWFhYIFdlIGRvbid0IGxvb2sgYXQgdHJpZ2dlcnMKLS0gICAgCi0tICAgIFFGPSIkUUYgWyV7VkVSSUZZU0NSSVBUUFJPR30gJXtWRVJJRllTQ1JJUFR9XVxcbiIKLS0gICAgCi0tICAgICMgT25seSB0aGUgZmlyc3QgQ2hhbmdlTG9nIGVudHJ5OyBzaG91bGQgYmUgZW5vdWdoCi0tICAgIFFGPSIkUUYgJXtDSEFOR0VMT0dUSU1FfSAle0NIQU5HRUxPR05BTUV9ICV7Q0hBTkdFTE9HVEVYVH1cXG4iCi0tICAgIAotLSAgICBmaWxlMT1gbWt0ZW1wYAotLSAgICBmaWxlMj1gbWt0ZW1wYAotLSAgICAKLS0gICAgY2hlY2tfaGVhZGVyICRvbGRycG0gPiAkZmlsZTEKLS0gICAgY2hlY2tfaGVhZGVyICRuZXdycG0gPiAkZmlsZTIKLS0gICAgCi0tICAgICMgdGhlIERJU1RVUkwgdGFnIGNhbiBiZSB1c2VkIGFzIGNoZWNraW4gSUQKLS0gICAgI2VjaG8gIiRRRiIKLS0gICAgZWNobyAiY29tcGFyaW5nIHJwbXRhZ3MiCi0tICAgIGlmICEgZGlmZiAtYXUgJGZpbGUxICRmaWxlMjsgdGhlbgotLSAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0tICAgICAgICBybSAkZmlsZTEgJGZpbGUyCi0tICAgICAgICByZXR1cm4gMQotLSAgICAgIGZpCi0tICAgIGZpCi0tICAgIAotKyAgICBmaWxlX29sZD1gbWt0ZW1wYAotKyAgICBmaWxlX25ldz1gbWt0ZW1wYAotKyAgICBzcGVjX29sZD1gbWt0ZW1wYAotKyAgICBzcGVjX25ldz1gbWt0ZW1wYAotKwotKyAgICBjaGVja19oZWFkZXIgIiRRRl9BTEwiICRvbGRycG0gPiAkc3BlY19vbGQKLSsgICAgY2hlY2tfaGVhZGVyICIkUUZfQUxMIiAkbmV3cnBtID4gJHNwZWNfbmV3Ci0rCi0rICAgIG5hbWVfbmV3PSIkKGdldF92YWx1ZSBRRl9OQU1FICRzcGVjX25ldykiCi0rICAgIHZlcnNpb25fcmVsZWFzZV9uZXc9IiQoZ2V0X3ZhbHVlIFFGX1ZFUl9SRUwgJHNwZWNfbmV3KSIKLSsgICAgbmFtZV92ZXJfcmVsX25ldz0iJChnZXRfdmFsdWUgUUZfTkFNRV9WRVJfUkVMICRzcGVjX25ldykiCi0rCi0rICAgIHZlcnNpb25fcmVsZWFzZV9vbGQ9IiQoZ2V0X3ZhbHVlIFFGX1ZFUl9SRUwgJHNwZWNfb2xkKSIKLSsgICAgbmFtZV92ZXJfcmVsX29sZD0iJChnZXRfdmFsdWUgUUZfTkFNRV9WRVJfUkVMICRzcGVjX29sZCkiCi0rCi0gICAgICMgUmVtZW1iZXIgdG8gcXVvdGUgdGhlIC4gd2hpY2ggaXMgaW4gcmVsZWFzZQotLSAgICB2ZXJzaW9uX3JlbGVhc2Vfb2xkPSQoJFJQTSAtLXFmICIle1ZFUlNJT059LSV7UkVMRUFTRX0iICIkb2xkcnBtIikKLS0gICAgdmVyc2lvbl9yZWxlYXNlX25ldz0kKCRSUE0gLS1xZiAiJXtWRVJTSU9OfS0le1JFTEVBU0V9IiAiJG5ld3JwbSIpCi0tICAgIG5hbWVfdmVyX3JlbF9vbGQ9JCgkUlBNIC0tcWYgIiV7TkFNRX0tJXtWRVJTSU9OfS0le1JFTEVBU0V9IiAiJG9sZHJwbSIpCi0tICAgIG5hbWVfdmVyX3JlbF9uZXc9JCgkUlBNIC0tcWYgIiV7TkFNRX0tJXtWRVJTSU9OfS0le1JFTEVBU0V9IiAiJG5ld3JwbSIpCi0tICAgICMgU2hvcnQgdmVyc2lvbiB3aXRob3V0IEJfQ05UCi0rICAgICMgU2hvcnQgdmVyc2lvbiB3aXRob3V0IEJfQ04KLSAgICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX29sZCUuKn0KLSAgICAgdmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX29sZF9yZWdleF9zLy8uL1xcLn0KLSAgICAgdmVyc2lvbl9yZWxlYXNlX25ld19yZWdleF9zPSR7dmVyc2lvbl9yZWxlYXNlX25ldyUuKn0KLUBAIC0xNjYsMTAgKzIwNSwyNyBAQCBmdW5jdGlvbiBjbXBfc3BlYyAoKQotICAgICB2ZXJzaW9uX3JlbGVhc2VfbmV3X3JlZ2V4X2w9JHt2ZXJzaW9uX3JlbGVhc2VfbmV3Ly8uL1xcLn0KLSAgICAgbmFtZV92ZXJfcmVsX29sZF9yZWdleF9sPSR7bmFtZV92ZXJfcmVsX29sZC8vLi9cXC59Ci0gICAgIG5hbWVfdmVyX3JlbF9uZXdfcmVnZXhfbD0ke25hbWVfdmVyX3JlbF9uZXcvLy4vXFwufQotKwotKyAgICAjIENoZWNrIHRoZSB3aG9sZSBzcGVjIGZpbGUgYXQgZmlyc3QsIHJldHVybiAwIGltbWVkaWF0ZWx5IGlmIHRoZQotKyAgICAjIGFyZSB0aGUgc2FtZS4KLSsgICAgY2F0ICRzcGVjX29sZCB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZV9vbGQKLSsgICAgY2F0ICRzcGVjX25ldyB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZV9uZXcKLSsgICAgZWNobyAiY29tcGFyaW5nIHRoZSB3aG9sZSBzcGVjZmlsZSIKLSsgICAgaWYgZGlmZiAtYXUgJHNwZWNfb2xkICRzcGVjX25ldzsgdGhlbgotKyAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0rICAgICAgICBybSAkZmlsZV9vbGQgJGZpbGVfbmV3ICRzcGVjX29sZCAkc3BlY19uZXcKLSsgICAgICAgIHJldHVybiAwCi0rICAgICAgZmkKLSsgICAgZmkKLSsKLSsgICAgZ2V0X3ZhbHVlIFFGX1RBR1MgJHNwZWNfb2xkID4gJGZpbGVfb2xkCi0rICAgIGdldF92YWx1ZSBRRl9UQUdTICRzcGVjX25ldyA+ICRmaWxlX25ldwotKyAgICBjb21wX2ZpbGUgcnBtdGFncyAkZmlsZV9vbGQgJGZpbGVfbmV3IHx8IHJldHVybiAxCi0rCi0gICAgICMgVGhpcyBtaWdodCBoYXBwZW4gd2hlbj8hCi0gICAgIGVjaG8gImNvbXBhcmluZyBSRUxFQVNFIgotICAgICBpZiBbICIke3ZlcnNpb25fcmVsZWFzZV9vbGQlLip9IiAhPSAiJHt2ZXJzaW9uX3JlbGVhc2VfbmV3JS4qfSIgXSA7IHRoZW4KLS0gICAgICBjYXNlICQoJFJQTSAtLXFmICcle05BTUV9JyAiJG5ld3JwbSIpIGluCi0rICAgICAgY2FzZSAkbmFtZV9uZXcgaW4KLSAgICAgICAgIGtlcm5lbC0qKQotICAgICAgICAgICAjIE1ha2Ugc3VyZSBhbGwga2VybmVsIHBhY2thZ2VzIGhhdmUgdGhlIHNhbWUgJVJFTEVBU0UKLSAgICAgICAgICAgZWNobyAicmVsZWFzZSBwcmVmaXggbWlzbWF0Y2giCi1AQCAtMTgxLDcxICsyMzcsMzQgQEAgZnVuY3Rpb24gY21wX3NwZWMgKCkKLSAgICAgICAgICopIDs7Ci0gICAgICAgZXNhYwotICAgICBmaQotLSAgICAKLS0gICAgY2hlY2tfcHJvdmlkZXMgJG9sZHJwbSB8IHRyaW1fcmVsZWFzZV9vbGQgfCBzb3J0ID4gJGZpbGUxCi0tICAgIGNoZWNrX3Byb3ZpZGVzICRuZXdycG0gfCB0cmltX3JlbGVhc2VfbmV3IHwgc29ydCA+ICRmaWxlMgotLSAgICAKLS0gICAgZWNobyAiY29tcGFyaW5nIFBST1ZJREVTIgotLSAgICBpZiAhIGRpZmYgLWF1ICRmaWxlMSAkZmlsZTI7IHRoZW4KLS0gICAgICBpZiB0ZXN0IC16ICIkY2hlY2tfYWxsIjsgdGhlbgotLSAgICAgICAgcm0gJGZpbGUxICRmaWxlMgotLSAgICAgICAgcmV0dXJuIDEKLS0gICAgICBmaQotLSAgICBmaQotIAotLSAgICAjIHNjcmlwdHMsIG1pZ2h0IGNvbnRhaW4gcmVsZWFzZSBudW1iZXIKLS0gICAgUUY9Ilsle1BSRUlOUFJPR30gJXtQUkVJTn1cXG5dXFxuWyV7UE9TVElOUFJPR30gJXtQT1NUSU59XFxuXVxcblsle1BSRVVOUFJPR30gJXtQUkVVTn1cXG5dXFxuWyV7UE9TVFVOUFJPR30gJXtQT1NUVU59XFxuXVxcbiIKLS0gICAgY2hlY2tfaGVhZGVyICRvbGRycG0gfCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGUxCi0tICAgIGNoZWNrX2hlYWRlciAkbmV3cnBtIHwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlMgotKyAgICBnZXRfdmFsdWUgUUZfUFJPVklERVMgJHNwZWNfb2xkIHwgdHJpbV9yZWxlYXNlX29sZCB8IHNvcnQgPiAkZmlsZV9vbGQKLSsgICAgZ2V0X3ZhbHVlIFFGX1BST1ZJREVTICRzcGVjX25ldyB8IHRyaW1fcmVsZWFzZV9uZXcgfCBzb3J0ID4gJGZpbGVfbmV3Ci0rICAgIGNvbXBfZmlsZSBQUk9WSURFUyAkZmlsZV9vbGQgJGZpbGVfbmV3IHx8IHJldHVybiAxCi0rCi0rICAgIGdldF92YWx1ZSBRRl9TQ1JJUFQgJHNwZWNfb2xkIHwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlX29sZAotKyAgICBnZXRfdmFsdWUgUUZfU0NSSVBUICRzcGVjX25ldyB8IHRyaW1fcmVsZWFzZV9uZXcgPiAkZmlsZV9uZXcKLSsgICAgY29tcF9maWxlIHNjcmlwdHMgJGZpbGVfb2xkICRmaWxlX25ldyB8fCByZXR1cm4gMQotIAotLSAgICBlY2hvICJjb21wYXJpbmcgc2NyaXB0cyIKLS0gICAgaWYgISBkaWZmIC1hdSAkZmlsZTEgJGZpbGUyOyB0aGVuCi0tICAgICAgaWYgdGVzdCAteiAiJGNoZWNrX2FsbCI7IHRoZW4KLS0gICAgICAgIHJtICRmaWxlMSAkZmlsZTIKLS0gICAgICAgIHJldHVybiAxCi0tICAgICAgZmkKLS0gICAgZmkKLS0gICAgCi0gICAgICMgRmlyc3QgY2hlY2sgdGhlIGZpbGUgYXR0cmlidXRlcyBhbmQgbGF0ZXIgdGhlIG1kNXMKLS0gICAgCi0tICAgICMgTm93IHRoZSBmaWxlcy4gIFdlIGxlYXZlIG91dCBtdGltZSBhbmQgc2l6ZS4gIEZvciBub3JtYWwgZmlsZXMKLS0gICAgIyB0aGUgc2l6ZSB3aWxsIGluZmx1ZW5jZSB0aGUgTUQ1IGFueXdheS4gIEZvciBkaXJlY3RvcmllcyB0aGUgc2l6ZXMgY2FuCi0tICAgICMgZGlmZmVyLCBkZXBlbmRpbmcgb24gd2hpY2ggZmlsZSBzeXN0ZW0gdGhlIHBhY2thZ2Ugd2FzIGJ1aWx0LiAgVG8gbm90Ci0tICAgICMgaGF2ZSB0byBmaWx0ZXIgb3V0IGRpcmVjdG9yaWVzIHdlIHNpbXBseSBpZ25vcmUgYWxsIHNpemVzLgotLSAgICAjIEFsc28gbGVhdmUgb3V0IEZJTEVERVZJQ0VTLCBGSUxFSU5PREVTIChkZXBlbmRzIG9uIHRoZSBidWlsZCBob3N0KSwKLS0gICAgIyBGSUxFQ09MT1JTLCBGSUxFQ0xBU1MgKG5vcm1hbGx5IHVzZWZ1bCBidXQgZmlsZSBvdXRwdXQgY29udGFpbnMgbXRpbWVzKSwgCi0tICAgICMgRklMRURFUEVORFNYIGFuZCBGSUxFREVQRU5EU04uIAotLSAgICAjIEFsc28gRklMRUxBTkdTIChvcj8pCi0tICAgIFFGPSJbJXtGSUxFTkFNRVN9ICV7RklMRUZMQUdTfSAle0ZJTEVTVEFURVN9ICV7RklMRU1PREVTOm9jdGFsfSAle0ZJTEVVU0VSTkFNRX0gJXtGSUxFR1JPVVBOQU1FfSAle0ZJTEVSREVWU30gJXtGSUxFVkVSSUZZRkxBR1N9ICV7RklMRUxJTktUT1N9XG5dXFxuIgotLSAgICAjID8/PyB3aGF0IHRvIGRvIHdpdGggRklMRVBST1ZJREUgYW5kIEZJTEVSRVFVSVJFPwotLQotLSAgICBjaGVja19oZWFkZXIgJG9sZHJwbSB8IHRyaW1fcmVsZWFzZV9vbGQgPiAkZmlsZTEKLS0gICAgY2hlY2tfaGVhZGVyICRuZXdycG0gfCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGUyCi0tICAgIAotLSAgICBlY2hvICJjb21wYXJpbmcgZmlsZWxpc3QiCi0tICAgIGlmICEgZGlmZiAtYXUgJGZpbGUxICRmaWxlMjsgdGhlbgotLSAgICAgIGlmIHRlc3QgLXogIiRjaGVja19hbGwiOyB0aGVuCi0tICAgICAgICBybSAkZmlsZTEgJGZpbGUyCi0tICAgICAgICByZXR1cm4gMQotLSAgICAgIGZpCi0tICAgIGZpCi0tICAgIAotKyAgICBnZXRfdmFsdWUgUUZfRklMRUxJU1QgJHNwZWNfb2xkIHwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlX29sZAotKyAgICBnZXRfdmFsdWUgUUZfRklMRUxJU1QgJHNwZWNfbmV3IHwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlX25ldwotKyAgICBjb21wX2ZpbGUgZmlsZWxpc3QgJGZpbGVfb2xkICRmaWxlX25ldyB8fCByZXR1cm4gMQotKwotICAgICAjIG5vdyB0aGUgbWQ1c3Vtcy4gaWYgdGhleSBhcmUgZGlmZmVyZW50LCB3ZSBjaGVjayBtb3JlIGRldGFpbGVkCi0gICAgICMgaWYgdGhlcmUgYXJlIGRpZmZlcmVudCBmaWxlbmFtZXMsIHdlIHdpbGwgYWxyZWFkeSBoYXZlIGFib3J0ZWQgYmVmb3JlCi0gICAgICMgZmlsZSBmbGFnIDY0IG1lYW5zICJnaG9zdCIsIGZpbHRlciB0aG9zZSBvdXQuCi0tICAgIFFGPSJbJXtGSUxFTkFNRVN9ICV7RklMRU1ENVN9ICV7RklMRUZMQUdTfVxuXVxcbiIKLS0gICAgY2hlY2tfaGVhZGVyICRvbGRycG0gfGdyZXAgLXYgIiA2NCQifCB0cmltX3JlbGVhc2Vfb2xkID4gJGZpbGUxCi0tICAgIGNoZWNrX2hlYWRlciAkbmV3cnBtIHxncmVwIC12ICIgNjQkInwgdHJpbV9yZWxlYXNlX25ldyA+ICRmaWxlMgotLSAgICAKLSsgICAgZ2V0X3ZhbHVlIFFGX0NIRUNLU1VNICRzcGVjX29sZCB8IGdyZXAgLXYgIiA2NCQiIHwgdHJpbV9yZWxlYXNlX29sZCA+ICRmaWxlX29sZAotKyAgICBnZXRfdmFsdWUgUUZfQ0hFQ0tTVU0gJHNwZWNfbmV3IHwgZ3JlcCAtdiAiIDY0JCIgfCB0cmltX3JlbGVhc2VfbmV3ID4gJGZpbGVfbmV3Ci0gICAgIFJFUz0yCi0gICAgICMgZG9uZSBpZiB0aGUgc2FtZQotICAgICBlY2hvICJjb21wYXJpbmcgZmlsZSBjaGVja3N1bSIKLS0gICAgaWYgY21wIC1zICRmaWxlMSAkZmlsZTI7IHRoZW4KLSsgICAgaWYgY21wIC1zICRmaWxlX29sZCAkZmlsZV9uZXc7IHRoZW4KLSAgICAgICBSRVM9MAotICAgICBmaQotLSAgICAKLSsKLSAgICAgIyBHZXQgb25seSBmaWxlcyB3aXRoIGRpZmZlcmVudCBNRDVzdW1zCi0tICAgIGZpbGVzPWBkaWZmIC1VMCAkZmlsZTEgJGZpbGUyIHwgZmdyZXAgLXYgKysrIHwgZ3JlcCBeKyB8IGN1dCAtYjItIHwgYXdrICd7cHJpbnQgJDF9J2AKLSsgICAgZmlsZXM9YGRpZmYgLVUwICRmaWxlX29sZCAkZmlsZV9uZXcgfCBmZ3JlcCAtdiArKysgfCBncmVwIF4rIHwgY3V0IC1iMi0gfCBhd2sgJ3twcmludCAkMX0nYAotIAotICAgICBpZiB0ZXN0IC1mICIkc2giOyB0aGVuCi0gICAgICAgZWNobyAiY3JlYXRpbmcgcmVuYW1lIHNjcmlwdCIKLUBAIC0yNjEsNyArMjgwLDcgQEAgZnVuY3Rpb24gY21wX3NwZWMgKCkKLSAgICAgICBkb25lID4+ICIke3NofSIKLSAgICAgZmkKLSAgICAgIwotLSAgICBybSAkZmlsZTEgJGZpbGUyCi0rICAgIHJtICRmaWxlX29sZCAkZmlsZV9uZXcKLSAgICAgcmV0dXJuICRSRVMKLSB9Ci0gCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtY2hlY2stZm9yLWZpZm8tbmFtZWQtcGlwZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtY2hlY2stZm9yLWZpZm8tbmFtZWQtcGlwZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRmMGM1NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idWlsZC1jb21wYXJlL2ZpbGVzL3BrZy1kaWZmLnNoLWNoZWNrLWZvci1maWZvLW5hbWVkLXBpcGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGE3OGZlNGY3OTJhOWFjOWY0ZDM2NGU4MzZjODg1NWY0ODU2MWQ2ZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTQgSnVsIDIwMTYgMTk6NTI6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzRdIHBrZy1kaWZmLnNoOiBjaGVjayBmb3IgZmlmbyhuYW1lZCBwaXBlKQotCi1PdGhlcndpc2UgImNtcCAtcyBmaWZvMSBmaWZvMiIgd2lsbCB3YWl0IGZvciBpbnB1dGluZyBmb3JldmVyLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2J1aWxkLWNvbXBhcmUvcHVsbC8xMF0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBwa2ctZGlmZi5zaCB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3BrZy1kaWZmLnNoIGIvcGtnLWRpZmYuc2gKLWluZGV4IDVkZDNhMzguLjFmMzUzYWEgMTAwNjQ0Ci0tLS0gYS9wa2ctZGlmZi5zaAotKysrIGIvcGtnLWRpZmYuc2gKLUBAIC03MzUsNiArNzM1LDEzIEBAIGNoZWNrX3NpbmdsZV9maWxlKCkKLSAgICAgICAgICByZXR1cm4gMQotICAgICAgICBmaQotICAgICAgICA7OwotKyAgICAgZmlmbypwaXBlKikKLSsgICAgICAgZnR5cGVfbmV3PSJgL3Vzci9iaW4vZmlsZSBuZXcvJGZpbGUgfCBzZWQgLWUgJ3NAXlteOl1cKzpbWzpibGFuazpdXSpAQCcgLWUgJ3NAW1s6Ymxhbms6XV0qJEBAJ2AiCi0rICAgICAgIGlmIFsgIiRmdHlwZV9uZXciID0gIiRmdHlwZSIgIF07IHRoZW4KLSsgICAgICAgICByZXR1cm4gMAotKyAgICAgICBmaQotKyAgICAgICByZXR1cm4gMQotKyAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgaWYgISBkaWZmX3R3b19maWxlczsgdGhlbgotICAgICAgICAgICAgcmV0dXJuIDEKLS0tIAotMi45LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1jaGVja19zaW5nbGVfZmlsZS1yZXR1cm4tYXQtb25jZS13aGVuLXNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1jaGVja19zaW5nbGVfZmlsZS1yZXR1cm4tYXQtb25jZS13aGVuLXNhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDJhZjI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtY2hlY2tfc2luZ2xlX2ZpbGUtcmV0dXJuLWF0LW9uY2Utd2hlbi1zYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gNjU3OTgzZWY5Y2E4ZjgzNTQxNzI2ODJlMTc0MDhjNGY2YjViYzY2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxNCBKdWwgMjAxNiAxOTo0NjowOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDEvNF0gcGtnLWRpZmYuc2g6IGNoZWNrX3NpbmdsZV9maWxlKCk6IHJldHVybiBhdCBvbmNlIHdoZW4KLSBzYW1lCi0KLUlmIHRoZSB0d28gZmlsZXMgYXJlIHRoZSBzYW1lLCByZXR1cm4gYXQgb25jZSwgdGhpcyBjYW4gc2F2ZSBhIGxvdCBvZgotdGltZSB3aGVuIHRoZXJlIGFyZSBhcmNoaXZlcyBpbnNpZGUgYXJjaGl2ZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvYnVpbGQtY29tcGFyZS9wdWxsLzEwXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHBrZy1kaWZmLnNoIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcGtnLWRpZmYuc2ggYi9wa2ctZGlmZi5zaAotaW5kZXggM2NmMTBhYS4uNDAyZDRhNCAxMDA2NDQKLS0tLSBhL3BrZy1kaWZmLnNoCi0rKysgYi9wa2ctZGlmZi5zaAotQEAgLTI5Myw2ICsyOTMsMTMgQEAgY2hlY2tfY29tcHJlc3NlZF9maWxlKCkKLSBjaGVja19zaW5nbGVfZmlsZSgpCi0gewotICAgbG9jYWwgZmlsZT0iJDEiCi0rCi0rICAjIElmIHRoZSB0d28gZmlsZXMgYXJlIHRoZSBzYW1lLCByZXR1cm4gYXQgb25jZS4KLSsgIGlmIFsgLWYgb2xkLyRmaWxlIC1hIC1mIG5ldy8kZmlsZSBdOyB0aGVuCi0rICAgIGlmIGNtcCAtcyBvbGQvJGZpbGUgbmV3LyRmaWxlOyB0aGVuCi0rICAgICAgcmV0dXJuIDAKLSsgICAgZmkKLSsgIGZpCi0gICBjYXNlICRmaWxlIGluCi0gICAgICouc3BlYykKLSAgICAgICAgc2VkIC1pIC1lICJzLFJlbGVhc2U6LiokcmVsZWFzZTEsUmVsZWFzZTogQFJFTEVBU0VALCIgb2xkLyRmaWxlCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J1aWxkLWNvbXBhcmUvZmlsZXMvcGtnLWRpZmYuc2gtcmVtb3ZlLXNwYWNlLWluLXRoZS1lbmQtZm9yLWZ0eXBlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1yZW1vdmUtc3BhY2UtaW4tdGhlLWVuZC1mb3ItZnR5cGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwNzcxNzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnVpbGQtY29tcGFyZS9maWxlcy9wa2ctZGlmZi5zaC1yZW1vdmUtc3BhY2UtaW4tdGhlLWVuZC1mb3ItZnR5cGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIDgzNmE2NzgzZGY5YzU4MmE4MzRmY2EyMzlmMjI3MDYzYTU2ODc3MTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTQgSnVsIDIwMTYgMTk6NDk6MTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIHBrZy1kaWZmLnNoOiByZW1vdmUgc3BhY2UgaW4gdGhlIGVuZCBmb3IgZnR5cGUKLQotVmVyc2lvbnMgb2YgZmlsZSBsaWtlIDUuMTQgcmV0dXJucyBhICIgIiBpbiB0aGUgZW5kLCBmb3IgZXhhbXBsZToKLWZ0eXBlPSJkaXJlY3RvcnkgIiwgYnV0IHdlIG5lZWQgZnR5cGU9ImRpcmVjdG9yeSIsIHJlbW92ZSB0aGUgc3BhY2UgdG8KLWZpeCB0aGUgcHJvYmxlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9idWlsZC1jb21wYXJlL3B1bGwvMTBdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gcGtnLWRpZmYuc2ggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wa2ctZGlmZi5zaCBiL3BrZy1kaWZmLnNoCi1pbmRleCA0MDJkNGE0Li41ZGQzYTM4IDEwMDY0NAotLS0tIGEvcGtnLWRpZmYuc2gKLSsrKyBiL3BrZy1kaWZmLnNoCi1AQCAtNjMzLDcgKzYzMyw3IEBAIGNoZWNrX3NpbmdsZV9maWxlKCkKLSAgICAgICA7OwotICAgZXNhYwotIAotLSAgZnR5cGU9YC91c3IvYmluL2ZpbGUgb2xkLyRmaWxlIHwgc2VkICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnYAotKyAgZnR5cGU9YC91c3IvYmluL2ZpbGUgb2xkLyRmaWxlIHwgc2VkIC1lICdzQF5bXjpdXCs6W1s6Ymxhbms6XV0qQEAnIC1lICdzQFtbOmJsYW5rOl1dKiRAQCdgCi0gICBjYXNlICRmdHlwZSBpbgotICAgICAgUEUzMlwgZXhlY3V0YWJsZSpNb25vXC9cLk5ldFwgYXNzZW1ibHkqKQotICAgICAgICBlY2hvICJQRTMyIE1vbm8vLk5ldCBhc3NlbWJseTogJGZpbGUiCi0tLSAKLTIuOS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGI3MDk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgY2NhY2hlLmluYwotCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuYWRvYzttZDU9MDA5NGM1OTAzOWNlYzY2YjhhNGM5MDUyMDQzMzM1MTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3NDMzOTQ2NWFiODdlMGI0MDY5ODVlZDY5NTE1ZjE5YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlNTYyZmNkYmU3NjY0MDZiNmZlNGJmOTdjZTVjMDAxZDJiZThhMTc0NjVmMzNiY2RkZWZjOTQ5OWJiYjA1N2Q4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNjgyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGNjYWNoZS5pbmMKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLmFkb2M7bWQ1PTAwOTRjNTkwMzljZWM2NmI4YTRjOTA1MjA0MzMzNTE0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiN2JlNjJlYTZlMTkwOTQxYThjMTJhM2Q1Mzk0ZmQ5MjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzU1OTU1YTYxNTYyYzUzYzRlYzQ2NjllMWM5MjcwOGIwMDA4ZjUwZDIxNGIyN2YwN2E4N2NmNGExZmE2YjAxZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RlamFnbnUvZGVqYWdudV8xLjYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RlamFnbnUvZGVqYWdudV8xLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGM0ZTQxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZGVqYWdudS9kZWphZ251XzEuNi4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiR05VIHVuaXQgdGVzdGluZyBmcmFtZXdvcmssIHdyaXR0ZW4gaW4gRXhwZWN0IGFuZCBUY2wiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCitTRUNUSU9OID0gImRldmVsIgorCitERVBFTkRTICs9ICJleHBlY3QtbmF0aXZlIgorCitpbmhlcml0IGF1dG90b29scworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImUxYjA3NTE2NTMzZjM1MWIzYWJhMzQyM2ZhZmVmZmQ2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkMDY3MWUxYjQ1MTg5YzVmYzhhZGU0YjNiMDE2MzVmYjllZWFiNDVjZjU0ZjU3ZGIyM2U0YzRjMWExN2QyNjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzgxZmY1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLmluYworKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1yZXF1aXJlIGdjYy1jb21tb24uaW5jCi0KLSMgVGhpcmQgZGlnaXQgaW4gUFYgc2hvdWxkIGJlIGluY3JlbWVudGVkIGFmdGVyIGEgbWlub3IgcmVsZWFzZQotCi1QViA9ICI4LjMuMCIKLQotIyBCSU5WIHNob3VsZCBiZSBpbmNyZW1lbnRlZCB0byBhIHJldmlzaW9uIGFmdGVyIGEgbWlub3IgZ2NjIHJlbGVhc2UKLQotQklOViA9ICI4LjMuMCIKLQotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vZ2NjLTguMzoiCi0KLURFUEVORFMgPSsgIm1wZnIgZ21wIGxpYm1wYyB6bGliIGZsZXgtbmF0aXZlIgotTkFUSVZFREVQUyA9ICJtcGZyLW5hdGl2ZSBnbXAtbmF0aXZlIGxpYm1wYy1uYXRpdmUgemxpYi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiR1BMLTMuMC13aXRoLUdDQy1leGNlcHRpb24gJiBHUEx2MyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0gICAgZmlsZTovL0NPUFlJTkcuUlVOVElNRTttZDU9ZmU2MGQ4NzA0ODU2N2Q0ZmU4YzhhMGVkMjQ0OGJjYzggXAotIgotCi0jUkVMRUFTRSA9ICI4LjAuMS1SQy0yMDE4MDQyNyIKLUJBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgotI1NSQ1JFViA9ICJmN2NmNzk4YjczZmQxYTA3MDk4ZjlhNDkwZGVlYzFlMmEzNmUwYmVkIgotI0JBU0VVUkkgPz0gImdpdDovL2dpdGh1Yi5jb20vZ2NjLW1pcnJvci9nY2M7YnJhbmNoPWdjYy02LWJyYW5jaDtwcm90b2NvbD1naXQiCi0jQkFTRVVSSSA/PSAiaHR0cDovL21pcnJvcnMuY29uY2VydHBhc3MuY29tL2djYy9zbmFwc2hvdHMvJHtSRUxFQVNFfS9nY2MtJHtSRUxFQVNFfS50YXIueHoiCi0KLVNSQ19VUkkgPSAiXAotICAgICAgICAgICAke0JBU0VVUkl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEyLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1EaXNhYmxlLXNkdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LWxpYnRvb2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTctVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOS1leHBvcnQtQ1BQLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtRGlzYWJsZS10aGUtTVVMVElMSUJfT1NESVJOQU1FUy1hbmQtb3RoZXItbXVsdGlsaWItby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIzLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjYtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjctaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzEtQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMyLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzMtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzQtbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM1LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM2LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNy1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzgtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzktcmlzY3YtRGlzYWJsZS1tdWx0aWxpYi1mb3ItT0UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0MC1wb3dlcnBjLXBvd2VycGM2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDEtQWRkLWEtcmVjdXJzaW9uLWxpbWl0LXRvLWxpYmliZXJ0eS1zLWRlbWFuZ2xpbmctY29kZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDQyLVBSLWRlYnVnLTg2OTY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwNDMtUFI4NTQzNC1QcmV2ZW50LXNwaWxsaW5nLW9mLXN0YWNrLXByb3RlY3Rvci1ndWFyZC1zLS5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNjViMjEwYjRiZmU3ZTA2MDA1MWY3OTllMGY5OTQ4OTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjRiYWFkZmU2Y2MwZjQ5NDdhODRjYjEyZDdmMGRmYWY0NWJiNThiN2U5MjQ2MTYzOTU5NmMyMWUwMmQ5N2QyYyIKLQotUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKLSNTID0gIiR7VE1QRElSfS93b3JrLXNoYXJlZC9nY2MtJHtQVn0tJHtQUn0vZ2l0IgotI1MgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtSRUxFQVNFfSIKLUIgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKLQotIyBMYW5ndWFnZSBPdmVycmlkZXMKLUZPUlRSQU4gPSAiIgotCi1MVE8gPSAiLS1lbmFibGUtbHRvIgotU1NQID89ICItLWRpc2FibGUtbGlic3NwIgotU1NQX21pbmd3MzIgPSAiLS1lbmFibGUtbGlic3NwIgotCi1FWFRSQV9PRUNPTkZfQkFTRSA9ICJcCi0gICAgJHtMVE99IFwKLSAgICAke1NTUH0gXAotICAgIC0tZW5hYmxlLWxpYml0bSBcCi0gICAgLS1kaXNhYmxlLWJvb3RzdHJhcCBcCi0gICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgJHtAJy0td2l0aC1saW5rZXItaGFzaC1zdHlsZT0ke0xJTktFUl9IQVNIX1NUWUxFfScgaWYgJyR7TElOS0VSX0hBU0hfU1RZTEV9JyBlbHNlICcnfSBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLXdpdGgtcHBsPW5vIFwKLSAgICAtLXdpdGgtY2xvb2c9bm8gXAotICAgIC0tZW5hYmxlLWNoZWNraW5nPXJlbGVhc2UgXAotICAgIC0tZW5hYmxlLWNoZWFkZXJzPWNfZ2xvYmFsIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSIKLQotRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKLSAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKLSAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKLSAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWQ3OWU0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZDdiMjg0YTliZWRlOWQ1MDU5YWQ3ZTk1YTg2NzI1NGJmOTEzYzYzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvNDBdIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCAwNjAxMzk1NTEyZi4uOGM1YjFlOWQ1NjEgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTc1MDcsNyArNzUwNyw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGMzNDMzMzM2NTIzLi42OWMzMWM2NWFkNyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzA5Niw3ICszMDk2LDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZmYxMjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi1Gcm9tIDk1ZWM0NzZkZDc3MjZjYzljMWJmZDZmYjIzYmEzYWVhOGJiZjYxYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDAyLzQwXSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLQotQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi16ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCi0vdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKLWFib3J0ZWQuCi0KLUluc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCi13YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCi0gZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKwotIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCi0gZ2NjL2luY3BhdGguYyAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKwotIDcgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi5vcHQgYi9nY2MvY29tbW9uLm9wdAotaW5kZXggYjUyZWYwYjM4YzguLjBkZTNmMDkyNGNkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbW1vbi5vcHQKLSsrKyBiL2djYy9jb21tb24ub3B0Ci1AQCAtNjc5LDYgKzY3OSwxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKLSBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZwotIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCi0gCi0rV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCi0rV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZwotKwotIFdzaGFkb3cKLSBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCi0gV2FybiB3aGVuIG9uZSB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIuICBTYW1lIGFzIC1Xc2hhZG93PWdsb2JhbC4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgotaW5kZXggNWJjY2I0MDgwMTYuLjFjNzg0YTgyNzZiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5pbgotKysrIGIvZ2NjL2NvbmZpZy5pbgotQEAgLTE5NCw2ICsxOTQsMTIgQEAKLSAjZW5kaWYKLSAKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsjZW5kaWYKLSsKLSsKLSAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCi0gICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgotICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA2MTIxZTE2MzI1OS4uMzkwMTcyMjQwMGMgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtOTUzLDYgKzk1Myw3IEBAIHdpdGhfc3lzdGVtX3psaWIKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0gZW5hYmxlX2xpbmtfbXV0ZXgKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLStlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotIGVuYWJsZV9wbHVnaW4KLSBlbmFibGVfaG9zdF9zaGFyZWQKLSBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAotQEAgLTE2OTYsNiArMTY5Nyw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCi0gICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKLSAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCi0gICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAotQEAgLTI5NzAxLDYgKzI5NzA0LDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzK3NldH0iID0gc2V0OyB0aGVuIDoKLSBmaQotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIAotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBiMDY2Y2M2MDllMS4uMWIxMzYyZjcwZmUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNjMyNyw2ICs2MzI3LDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCi0gICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCi0gCi0rQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKLSsgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgICAgIFsxXSwKLSsgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIEFDX1NVQlNUKHN1YmRpcnMpCi0gQUNfU1VCU1Qoc3JjZGlyKQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCBlNWM0ZTgxMjVhYS4uZmIyMjg2MzFhNDIgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMzA0LDYgKzMwNCw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtV3BhY2tlZCAgLVdwYWNrZWQtYml0ZmllbGQtY29tcGF0IC1XcGFja2VkLW5vdC1hbGlnbmVkIC1XcGFkZGVkIEBnb2wKLSAtV3BhcmVudGhlc2VzICAtV25vLXBlZGFudGljLW1zLWZvcm1hdCBAZ29sCi0gLVdwbGFjZW1lbnQtbmV3ICAtV3BsYWNlbWVudC1uZXc9QHZhcntufSBAZ29sCi0rLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIEBnb2wKLSAtV3BvaW50ZXItYXJpdGggIC1XcG9pbnRlci1jb21wYXJlICAtV25vLXBvaW50ZXItdG8taW50LWNhc3QgQGdvbAotIC1Xbm8tcHJhZ21hcyAgLVdyZWR1bmRhbnQtZGVjbHMgIC1XcmVzdHJpY3QgIC1Xbm8tcmV0dXJuLWxvY2FsLWFkZHIgQGdvbAotIC1XcmV0dXJuLXR5cGUgIC1Xc2VxdWVuY2UtcG9pbnQgIC1Xc2hhZG93ICAtV25vLXNoYWRvdy1pdmFyIEBnb2wKLUBAIC01NzQzLDYgKzU3NDQsMTQgQEAgbWFkZSB1cCBvZiBkYXRhIG9ubHkgYW5kIHRodXMgcmVxdWlyZXMgbm8gc3BlY2lhbCB0cmVhdG1lbnQuICBCdXQsIGZvcgotIG1vc3QgdGFyZ2V0cywgaXQgaXMgbWFkZSB1cCBvZiBjb2RlIGFuZCB0aHVzIHJlcXVpcmVzIHRoZSBzdGFjayB0byBiZQotIG1hZGUgZXhlY3V0YWJsZSBpbiBvcmRlciBmb3IgdGhlIHByb2dyYW0gdG8gd29yayBwcm9wZXJseS4KLSAKLStAaXRlbSAtV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStAb3BpbmRleCBXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1JfSBvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbQotK2RpcmVjdG9yaWVzIHN1Y2ggYXMgQGZpbGV7L3Vzci9pbmNsdWRlfSB3aGVuIGNyb3NzIGNvbXBpbGluZy4gIFRoaXMKLStvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaAotK2RpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QgaGVhZGVycyBhbmQgbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0Ci0rc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgotKwotIEBpdGVtIC1XZmxvYXQtZXF1YWwKLSBAb3BpbmRleCBXZmxvYXQtZXF1YWwKLSBAb3BpbmRleCBXbm8tZmxvYXQtZXF1YWwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGE3MTZmNzA4MjU5Li4wMmIzY2QzOWZjMiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTAzNyw2ICsxMDM3LDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAotICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKLSAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JVN9fSBcCi0rICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0rICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0gICAgICV7c3RhdGljfG5vLXBpZXxzdGF0aWMtcGllOn0gJXtMKn0gJShtZndyYXApICUobGlua19saWJnY2MpICIgXAotICAgICBWVEFCTEVfVkVSSUZJQ0FUSU9OX1NQRUMgIiAiIFNBTklUSVpFUl9FQVJMWV9TUEVDICIgJW8gIiBDSEtQX1NQRUMgIiBcCi0gICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAotZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCi1pbmRleCBiMTFjNmE1NzkzOS4uOWE0NTdlMDJkZDMgMTAwNjQ0Ci0tLS0gYS9nY2MvaW5jcGF0aC5jCi0rKysgYi9nY2MvaW5jcGF0aC5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlICJpbnRsLmgiCi0gI2luY2x1ZGUgImluY3BhdGguaCIKLSAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgotKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKLSAKLSAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KLSAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCi1AQCAtMzkzLDYgKzM5NCwyNiBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQotIAl9Ci0gICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7Ci0gICAgIH0KLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCi0rICAgIHsKLSsgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7Ci0rCi0rICAgICAgIGZvciAocCA9IGhlYWRzW0lOQ19RVU9URV07IHA7IHAgPSBwLT5uZXh0KQotKyAgICAgICAgIHsKLSsgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKLSsgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKLSsgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCi0rICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCi0rICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7Ci0rICAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlmCi0gfQotIAotIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYyZGViMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSA2NjQwZDdlMzliMTNkMWVmMjZkMjQ5MTUzYWIxNWQ1MTBmZGEzNTY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MDg6MzEgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwMy80MF0gZ2NjLTQuMy4zOiBTWVNST09UX0NGTEFHU19GT1JfVEFSR0VUCi0KLUJlZm9yZSBjb21taXR0aW5nLCBJIG5vdGljZWQgdGhhdCBQUi8zMjE2MSB3YXMgbWFya2VkIGFzIGEgZHVwIG9mIFBSLzMyMDA5LCBidXQgbXkgcHJldmlvdXMgcGF0Y2ggZGlkIG5vdCBmaXggaXQuCi0KLVRoaXMgYWx0ZXJuYXRpdmUgcGF0Y2ggaXMgYmV0dGVyIGJlY2F1c2UgaXQgbGV0cyB5b3UganVzdCB1c2UgQ0ZMQUdTX0ZPUl9UQVJHRVQgdG8gc2V0IHRoZSBjb21waWxhdGlvbiBmbGFncyBmb3IgbGliZ2NjLiBTaW5jZSBib290c3RyYXBwZWQgdGFyZ2V0IGxpYnJhcmllcyBhcmUgbmV2ZXIgY29tcGlsZWQgd2l0aCB0aGUgbmF0aXZlIGNvbXBpbGVyLCBpdCBtYWtlcyBsaXR0bGUgc2Vuc2UgdG8gdXNlIGRpZmZlcmVudCBmbGFncyBmb3Igc3RhZ2UxIGFuZCBsYXRlciBzdGFnZXMuIEFuZCBpdCBhbHNvIG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgYSBkaWZmZXJlbnQgdmFyaWFibGUgdGhhbiBDRkxBR1NfRk9SX1RBUkdFVC4KLQotT3RoZXIgY2hhbmdlcyBJIGhhZCB0byBkbyBpbmNsdWRlOgotCi0tIG1vdmluZyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCBDRkxBR1NfRk9SX1RBUkdFVCBmcm9tIE1ha2VmaWxlLmFtIHRvIGNvbmZpZ3VyZS5hYywgYmVjYXVzZSBvdGhlcndpc2UgdGhlIEJPT1RfQ0ZMQUdTIGFyZSBzdWJzdGl0dXRlZCBpbnRvIENGTEFHU19GT1JfVEFSR0VUICh3aGljaCBpcyAiLU8yIC1nICQoQ0ZMQUdTKSIpIHZpYSAkKENGTEFHUykuIEl0IGlzIGFsc28gY2xlYW5lciB0aGlzIHdheSB0aG91Z2guCi0KLS0gcGFzc2luZyB0aGUgcmlnaHQgQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIGFzIGV4cG9ydGVkIGVudmlyb25tZW50IHZhcmlhYmxlcwotCi1JIGFsc28gc3RvcHBlZCBwYXNzaW5nIExJQkNGTEFHUyB0byBjb25maWd1cmUgc2NyaXB0cyBzaW5jZSB0aGV5IGFyZSB1bnVzZWQgaW4gdGhlIHdob2xlIHNyYyB0cmVlLiBBbmQgSSB1cGRhdGVkIHRoZSBkb2N1bWVudGF0aW9uIGFzIEgtUCByZW1pbmRlZCBtZSB0byBkby4KLQotQm9vdHN0cmFwcGVkL3JlZ3Rlc3RlZCBpNjg2LXBjLWxpbnV4LWdudSwgd2lsbCBjb21taXQgdG8gNC40IHNob3J0bHkuIE9rIGZvciA0LjM/Ci0KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGNvbmZpZ3VyZSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggOGM1YjFlOWQ1NjEuLjJkMWZjNmI5NGQ5IDEwMDc1NQotLS0tIGEvY29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC02NzY4LDYgKzY3NjgsMzggQEAgZmkKLSAKLSAKLSAKLSsjIER1cmluZyBnY2MgYm9vdHN0cmFwLCBpZiB3ZSB1c2Ugc29tZSByYW5kb20gY2MgZm9yIHN0YWdlMSB0aGVuIENGTEFHUwotKyMgbWlnaHQgYmUgZW1wdHkgb3IgIi1nIi4gIFdlIGRvbid0IHJlcXVpcmUgYSBDKysgY29tcGlsZXIsIHNvIENYWEZMQUdTCi0rIyBtaWdodCBhbHNvIGJlIGVtcHR5IChvciAiLWciLCBpZiBhIG5vbi1HQ0MgQysrIGNvbXBpbGVyIGlzIGluIHRoZSBwYXRoKS4KLSsjIFdlIHdhbnQgdG8gZW5zdXJlIHRoYXQgVEFSR0VUIGxpYnJhcmllcyAod2hpY2ggd2Uga25vdyBhcmUgYnVpbHQgd2l0aAotKyMgZ2NjKSBhcmUgYnVpbHQgd2l0aCAiLU8yIC1nIiwgc28gaW5jbHVkZSB0aG9zZSBvcHRpb25zIHdoZW4gc2V0dGluZwotKyMgQ0ZMQUdTX0ZPUl9UQVJHRVQgYW5kIENYWEZMQUdTX0ZPUl9UQVJHRVQuCi0raWYgdGVzdCAieCRDRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDRkxBR1NfRk9SX1RBUkdFVD0kQ0ZMQUdTCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ0ZMQUdTIiA7OwotKyAgZXNhYwotKyAgY2FzZSAiICRDRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ0ZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsKLStpZiB0ZXN0ICJ4JENYWEZMQUdTX0ZPUl9UQVJHRVQiID0geDsgdGhlbgotKyAgQ1hYRkxBR1NfRk9SX1RBUkdFVD0kQ1hYRkxBR1MKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtTzIgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1PMiAkQ1hYRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENYWEZMQUdTICIgaW4KLSsgICAgKiIgLWcgIiogfCAqIiAtZzMgIiopIDs7Ci0rICAgICopIENYWEZMQUdTX0ZPUl9UQVJHRVQ9Ii1nICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotICMgSGFuZGxlIC0td2l0aC1oZWFkZXJzPVhYWC4gIElmIHRoZSB2YWx1ZSBpcyBub3QgInllcyIsIHRoZSBjb250ZW50cyBvZgotICMgdGhlIG5hbWVkIGRpcmVjdG9yeSBhcmUgY29waWVkIHRvICQodG9vbGRpcikvc3lzLWluY2x1ZGUuCi0gaWYgdGVzdCB4IiR7d2l0aF9oZWFkZXJzfSIgIT0geCAmJiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4bm8gOyB0aGVuCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzcxZDg3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotRnJvbSAxZTY0OWQ4MWNhNjYyYzRjZGY3Mzg4MmViYjhhMTFmMGYxOWY1YmFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC80MF0gNjQtYml0IG11bHRpbGliIGhhY2suCi0KLUdDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5Ci1sYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCi1jb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1UaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYwotYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50Ci1kaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKLWtub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKLXBlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCi0KLVRoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Ci10aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKLWFuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCi1kb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCi1hbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KLQotUlAgMTUvOC8xMQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICB8ICA2ICsrLS0tLQotIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICB8IDEwICsrKy0tLS0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgfCAgNSArKy0tLQotIDMgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1pbmRleCA4ZWEwZmFmZjM2OS4uMjY2YzYwMDgwMDQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1AQCAtMzIsNyArMzIsNSBAQAotICMKLSBjb21tYT0sCi0gTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCi0tTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1pbmRleCBjMDE3YjdkMDRjNS4uMTI2ODkyY2Y0MGIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1AQCAtMTcsMTAgKzE3LDYgQEAKLSAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0Ci0tTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKLS1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKLS1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAotLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotKwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotaW5kZXggMGZhYTJhMDJkZjQuLjEzZmQ4Y2E5NzFlIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLUBAIC0yNiwxMCArMjYsOSBAQAotICMgTVVMVElMSUJfT1NESVJOQU1FUyBhY2NvcmRpbmcgdG8gd2hhdCBpcyBmb3VuZCBvbiB0aGUgdGFyZ2V0LgotIAotIE1VTFRJTElCX09QVElPTlMgICAgOj0gbTY0L20zMgotLU1VTFRJTElCX0RJUk5BTUVTICAgOj0gNjQgMzIKLStNVUxUSUxJQl9ESVJOQU1FUyAgIDo9IC4gLgotIE1VTFRJTElCX0VYVFJBX09QVFMgOj0gCi0tTVVMVElMSUJfT1NESVJOQU1FUyA6PSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbTMyPSQoaWYgJCh3aWxkY2FyZCAkKHNoZWxsIGVjaG8gJChTWVNURU1fSEVBREVSX0RJUikpLy4uLy4uL3Vzci9saWIzMiksLi4vbGliMzIsLi4vbGliKSQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGMtbGludXgtZ251KQotK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKLSAKLSByczYwMDAtbGludXgubzogJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvcnM2MDAwLWxpbnV4LmMKLSAJJChDT01QSUxFKSAkPAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWNmNmMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyNSArMCwwIEBACi1Gcm9tIGI0ODYzODBkY2M0NzU4ZTg1NmFiNmQ4NDdlYjM1OGQwNWJkNzlkNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAotU3ViamVjdDogW1BBVENIIDA1LzQwXSBvcHRpb25hbCBsaWJzdGRjCi0KLWdjYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKwotd2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKwotd2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKwotb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKLWRyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgotCi1BICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCi1kbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgotCi1SUCAyOS82LzEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKwotIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCi0gZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAotaW5kZXggZjU5MWIzOWJlNWEuLjI5NTVmY2VhODY3IDEwMDY0NAotLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0Ci0rKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKLUBAIC0xOTAxLDYgKzE5MDEsMTAgQEAgbm9zdGRpbmMrKwotIEMrKyBPYmpDKysKLSBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysuCi0gCi0rbm9zdGRsaWIrKwotK0RyaXZlcgotK0RvIG5vdCBsaW5rIHN0YW5kYXJkIEMrKyBydW50aW1lIGxpYnJhcnkKLSsKLSBvCi0gQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFNlcGFyYXRlCi0gOyBEb2N1bWVudGVkIGluIGNvbW1vbi5vcHQKLWRpZmYgLS1naXQgYS9nY2MvY3AvZysrc3BlYy5jIGIvZ2NjL2NwL2crK3NwZWMuYwotaW5kZXggNDQzYTE3NDZkYTMuLmU5YjUxYmU2MmVmIDEwMDY0NAotLS0tIGEvZ2NjL2NwL2crK3NwZWMuYwotKysrIGIvZ2NjL2NwL2crK3NwZWMuYwotQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAotICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKLSAJewotIAljYXNlIE9QVF9ub3N0ZGxpYjoKLSsJY2FzZSBPUFRfbm9zdGRsaWJfXzoKLSAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKLSAJICBsaWJyYXJ5ID0gLTE7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKLWluZGV4IGZiMjI4NjMxYTQyLi4zMTBiYTgxMDllZCAxMDA2NDQKLS0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKLSsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKLUBAIC0yMTIsNiArMjEyLDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KLSAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKLSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAotIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAotKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKLSstZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAotKy1ub3N0ZGxpYisrIEBnb2wKLSAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKLSAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKLSAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yICAtV2xpdGVyYWwtc3VmZml4ICAtV211bHRpcGxlLWluaGVyaXRhbmNlIEBnb2wKLUBAIC01MTAsNyArNTEzLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1zICAtc3RhdGljIC1zdGF0aWMtcGllIC1zdGF0aWMtbGliZ2NjICAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCi0gLXN0YXRpYy1saWJhc2FuICAtc3RhdGljLWxpYnRzYW4gIC1zdGF0aWMtbGlibHNhbiAgLXN0YXRpYy1saWJ1YnNhbiBAZ29sCi0gLXN0YXRpYy1saWJtcHggIC1zdGF0aWMtbGlibXB4d3JhcHBlcnMgQGdvbAotLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAotKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAotIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKLSAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19Ci0gCi1AQCAtMTIzNTksNiArMTIzNjIsMzMgQEAgbGlicmFyeSBzdWJyb3V0aW5lcy4KLSBjb25zdHJ1Y3RvcnMgYXJlIGNhbGxlZDsgQHB4cmVme0NvbGxlY3QyLCxAY29kZXtjb2xsZWN0Mn0sIGdjY2ludCwKLSBHTlUgQ29tcGlsZXIgQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LikKLSAKLStAaXRlbSAtbm9zdGRsaWIrKwotK0BvcGluZGV4IG5vc3RkbGliKysKLStEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KLStPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KLSsKLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQotK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAotK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCi0rd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKLStuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCi0rKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCi0rQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAotK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKLStJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCi0rb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Ci0rb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KLStUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCi0rbGlicmFyeSBzdWJyb3V0aW5lcy4KLSsoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCi0rY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCi0rR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCi0rCi0gQGl0ZW0gLXBpZQotIEBvcGluZGV4IHBpZQotIFByb2R1Y2UgYSBkeW5hbWljYWxseSBsaW5rZWQgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSBvbiB0YXJnZXRzCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCAwMmIzY2QzOWZjMi4uOGNkMjdhNWRhZDUgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEwNDcsNiArMTA0Nyw3IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAgJShtZmxpYikgIiBTVEFDS19TUExJVF9TUEVDICJcCi0gICAgICV7ZnByb2ZpbGUtYXJjc3xmcHJvZmlsZS1nZW5lcmF0ZSp8Y292ZXJhZ2U6LWxnY292fSAiIFNBTklUSVpFUl9TUEVDICIgXAotICAgICAleyFub3N0ZGxpYjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fVwKLSsgICAgJXshbm9zdGRsaWIrKzp9XAotICAgICAleyFub3N0ZGxpYjoleyFub3N0YXJ0ZmlsZXM6JUV9fSAle1QqfSAgXG4lKHBvc3RfbGluaykgfX19fX19IgotICNlbmRpZgotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNy1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwNy1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzdlNzJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDctQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMjA5ZTQ2ZjQ1MzgyMDg4Y2FhYjU0NDI1YjkyYjVkZmM0M2ViYjRmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvNDBdIENPTExFQ1RfR0NDX09QVElPTlMKLQotVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bwotaW52b2tlIGNvbGxlY3QyLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA4Y2QyN2E1ZGFkNS4uZDM1NWQ2NTU4M2EgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTQ2NzcsNiArNDY3NywxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKLSAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKLSAKLSAgIGZpcnN0X3RpbWUgPSBUUlVFOwotKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKLSsgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCi0rICAgIHsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOwotKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKLSsgICAgfQotKyNlbmRpZgotICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOwotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwOC1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDgtVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5NjMyYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwOC1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gM2JjYmRmNWFkZTU0YTcyODIwYWQ3Nzk4MTE5ZDBiYmFkNGJhZjZlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvNDBdIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KLSAke0J9Ci0KLVVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAotdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCi1vY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAotd29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCi10bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKLQotU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCAyMGJlZTA0OTRiMS4uMTM2NzEzNmJmYWMgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTUzOCw3ICs1MzgsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAKLSB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAotLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACi0rdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCi0gVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDBjOWI4YWM1ZjU1Li4xMzRjMmMyZjE1NiAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMjE1OCw4ICsxMjE1OCw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSAgICAgICAgOzsKLSAgICAgZGVmYXVsdHMuaCApCi0tICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCi0tICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgotICAgICAgICA7OwotICAgICAqICkKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDUzODQwMzYzMTE1Li4wYzNjODJlNGZmNyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xOTIyLDggKzE5MjIsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAotaW5kZXggMGY3NWM4NjNjMGIuLjY4ZDhkNjYxM2NmIDEwMDY0NAotLS0tIGEvZ2NjL21rY29uZmlnLnNoCi0rKysgYi9nY2MvbWtjb25maWcuc2gKLUBAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCi0gICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgotIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCi0gCWZvciBmaWxlIGluICIkQCI7IGRvCi0tCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgotKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKLSAJICAgIGVsc2UKLSAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKLUBAIC0xMDYsNyArMTA2LDcgQEAgZXNhYwotIAotICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KLSBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCi0tICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotIGZpCi0gCi0gIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwOS1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMDktZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwZDg5NWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAwOS1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gZTY1NDU3MzM1MmQyOGYxNjBmMzc5ZWU3N2U0MDY3Y2YxMDg3MTRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvNDBdIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgotCi0qIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAotdXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcwotZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotaW5kZXggOTFmY2U4ZmVjZDAuLjY3NDdmODZlYjk4IDEwMDc1NQotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLUBAIC0xMjg4Myw3ICsxMjg4Myw3IEBAIGVzYWMKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9Ci0gYWNfY29tcGlsZT0nJEZDIC1jICRGQ0ZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckRkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRGQ0ZMQUdTICRMREZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLWluZGV4IGJmNmQzNjM0ZGRhLi45ZGJlNDNjYzYxNiAxMDA2NDQKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1AQCAtMjUwLDcgKzI1MCw3IEBAIEFDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIEFDX1BST0dfRkMoZ2ZvcnRyYW4pCi0gCi0gIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIHRhcmdldHMKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTAtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDEwLWNwcC1ob25vci1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMzdlYWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTAtY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDJhZTdhZjRlYjcwZWZmNmFlZGExZmU5NjMzM2ZmNTBjZmFhOWQ5MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDEwLzQwXSBjcHA6IGhvbm9yIHN5c3Jvb3QuCi0KLUN1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQotcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgotcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCi1wZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgotCi1UaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCi0KLVRoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAotLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KLQotW1lPQ1RPICMyMDc0XQotCi1SUCAyMDEyLzA0LzEzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLWluZGV4IGYwODAyYjg5MTVjLi5mMzI0ZDI5OTg0OSAxMDA2NDQKLS0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKLSsrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLUBAIC02NCw1ICs2NCw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKLSAgICAiJXshTToleyFNTToleyFFOlwKLS0gICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAlMlwKLSsgICAgY2MxcGx1cyAtZnByZXByb2Nlc3NlZCAlaSAlSSAlKGNjMV9vcHRpb25zKSAlMlwKLSAgICAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IGQzNTVkNjU1ODNhLi41NzBjZGMwMDAzNCAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTM0Myw3ICsxMzQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KLSAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDExLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDExLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NjNjZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMS1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSAxZTFlYTBlYjU1YTU5NGFjNGNkN2I4MzhmNzRkZWM3NDA1YWFlMDJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjM6MDggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS80MF0gTUlQUzY0OiBEZWZhdWx0IHRvIE42NCBBQkkKLQotTUlQUzY0IGRlZmF1bHRzIHRvIG4zMiBBQkksIHRoaXMgcGF0Y2ggbWFrZXMgaXQKLXNvIHRoYXQgaXQgZGVmYXVsdHMgdG8gTjY0IEFCSQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KLS0tLQotIGdjYy9jb25maWcuZ2NjIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCi1pbmRleCA3YWY4ZTAyODEwNC4uZmM3YzkxMjQ2ZWQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMTQzLDI5ICsyMTQzLDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCi0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCi0gCQkJOzsKLSAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKLSAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgotIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyMiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJZXNhYwotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMi1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2JlMTBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTItRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0OCArMCwwIEBACi1Gcm9tIDZmODY0OTkzNmRmMzY3NzEwOWI4Mzk2ZjU2M2M3MTZhZThiMjM3ZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAotU3ViamVjdDogW1BBVENIIDEyLzQwXSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCi0KLVRoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi1yZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUiB3aGljaCBjYW4gYmUgc2V0IGluIGdlbmVyYXRlZCBoZWFkZXJzCi1UaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiBvZiBoYXJkY29kZWQgbXVsdGlsaWIgaW4gZ2NjCi1DaGFuZ2UgaXMgb25seSBmb3IgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGluIE9FIGluY2x1ZGluZwotU0gsIHNwYXJjLCBhbHBoYSBmb3IgcG9zc2libGUgZnV0dXJlIHN1cHBvcnQgKGlmIGFueSkKLQotUmVtb3ZlcyB0aGUgZG9faGVhZGVyZml4IHRhc2sgaW4gbWV0YWRhdGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oICAgfCAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDE2ICsrKysrKy0tLS0tLS0tLS0KLSBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KLSBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQotIDEyIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLWluZGV4IDM2Yjc0ZGMxOTkzLi4wMjM3MzU3OGFmOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLSsrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKLUBAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gI2RlZmluZSBFWFRSQV9TUEVDUyBcCi0geyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCi0gI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCi0gI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLWluZGV4IDg1ODVmZGUzZDQxLi5iM2FmNjhjYWM1NyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1AQCAtNjIsOCArNjIsOCBAQAotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCi0gCi0gI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi1pbmRleCBjZmNkOWNiMWE1Yy4uYTc5OGU5ODdlY2IgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLUBAIC02MCw3ICs2MCw3IEBACi0gCi0gI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKLSAgICAle3N0YXRpYzotQnN0YXRpY30gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLWluZGV4IDY5Zjk3ZjE1YjBkLi43MWJjMzFkOTIzMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotIAotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1pbmRleCBmMmQ5MTNlMzBhYy4uODcyNWYzM2Q4YTUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCi1AQCAtMjcsOSArMjcsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAotaW5kZXggMmVhNGZmOTJjMWQuLjQ4N2IwYzA5MjNiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKLUBAIC04MSwxMCArODEsMTAgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHRhcmdldCB1c2luZyB0aGVtLCBvcgotICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgYW5kIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgZm9yIHRhcmdldHMKLSAgICBzdXBwb3J0aW5nIGJvdGggMzItYml0IGFuZCA2NC1iaXQgY29tcGlsYXRpb24uICAqLwotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZHgzMi11Q2xpYmMuc28uMCIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0ZW0vYmluL2xpbmtlciIKLSAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbGludXguaCBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCi1pbmRleCAyZGZkMGMxOGI5MC4uMTIwNTdjNTFiNWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLUBAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCi0gCi0gI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCi0gCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgotICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKLS0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgotIAotICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCi1pbmRleCBhYThhMjhkNWQzMS4uZWJmOTU1MWM5NTUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAotQEAgLTIyLDcgKzIyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICAgR05VX1VTRVJfVEFSR0VUX09TX0NQUF9CVUlMVElOUygpOwkJCQlcCi0gICB9IHdoaWxlICgwKQotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKLSAKLSAjZGVmaW5lIE1VU0xfQUJJX1NVRkZJWCBcCi0gICAiJXttYWJpPWlscDMyOi1zZn0iIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDQ0ZWFiNDBhMjM0Li41NGFhOGQ5NTdlNyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDEzLDE2ICs0MTMsMTEgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKLSAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKLSAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgotLQotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKLSAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAotLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgotICNlbHNlCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCi0gI2VuZGlmCi0gCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotQEAgLTQzMCw4ICs0MjUsOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKLSAgICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotIAotLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rCi0gI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX1VDTElCQwotICNkZWZpbmUgQ0hPT1NFX0RZTkFNSUNfTElOS0VSKEcsIFUsIE0pIFwKLSAgICIle21nbGliYzoiIEcgIjs6JXttbXVzbDoiIE0gIjs6IiBVICJ9fSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLWluZGV4IDZkMmNjZDAxMmJhLi5lYzc4YTg5Y2UxNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi1AQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAotICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKLSAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1pbmRleCA5ZmIwM2FmMGZlOS4uNDAxZmRkYmJiMjIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAotQEAgLTgzLDcgKzgzLDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKLSAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZwotICAgIGRvbmUuICAqLwotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiAgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi1pbmRleCBjMWZlNDIxNjViNy4uMjZhNzliZmEyZTMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLUBAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKLSAgICBkb25lLiAgKi8KLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2lmZGVmIFNQQVJDX0JJX0FSQ0gKLSAKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTMtZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU5ZDJjYWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxMy1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDllODE1OTY1ZmJhYTkwMTM0YmUwZTc3N2NmYzJmYmNmYWIxNmI2NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNjozNyArMDQwMAotU3ViamVjdDogW1BBVENIIDEzLzQwXSBnY2M6IEZpeCBhcmd1bWVudCBsaXN0IHRvbyBsb25nIGVycm9yLgotCi1UaGVyZSB3b3VsZCBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiB0aGUKLWJ1aWxkIGRpcmVjdG9yeSBpcyBsb25nZXIgdGhhbiAyMDAsIHRoaXMgaXMgY2F1c2VkIGJ5OgotCi1oZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgCi0KLVRoZSBQTFVHSU5fSEVBREVSUyBpcyB0b28gbG9uZyBiZWZvcmUgc29ydCwgc28gdGhlICJlY2hvIiBjYW4ndCBoYW5kbGUKLWl0LCB1c2UgdGhlICQoc29ydCBsaXN0KSBvZiBHTlUgbWFrZSB3aGljaCBjYW4gaGFuZGxlIHRoZSB0b28gbG9uZyBsaXN0Ci13b3VsZCBmaXggdGhlIHByb2JsZW0sIHRoZSBoZWFkZXIgd291bGQgYmUgc2hvcnQgZW5vdWdoIGFmdGVyIHNvcnRlZC4KLVRoZSAidHIgJyAnICdcMDEyJyIgd2FzIHVzZWQgZm9yIHRyYW5zbGF0aW5nIHRoZSBzcGFjZSB0byAiXG4iLCB0aGUKLSQoc29ydCBsaXN0KSBkb2Vzbid0IG5lZWQgdGhpcy4KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgotaW5kZXggMTM2NzEzNmJmYWMuLjcxYTgyNzVjMzlmIDEwMDY0NAotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC0zNTM4LDcgKzM1MzgsNyBAQCBpbnN0YWxsLXBsdWdpbjogaW5zdGFsbGRpcnMgbGFuZy5pbnN0YWxsLXBsdWdpbiBzLWhlYWRlci12YXJzIGluc3RhbGwtZ2VuZ3R5cGUKLSAjIFdlIGtlZXAgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGZpbGVzIGluIGNvbmZpZyBvciBjLWZhbWlseSBhbmQgLmRlZgotICMgZmlsZXMuIEFsbCBvdGhlciBmaWxlcyBhcmUgZmxhdHRlbmVkIHRvIGEgc2luZ2xlIGRpcmVjdG9yeS4KLSAJJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChwbHVnaW5faW5jbHVkZWRpcikKLS0JaGVhZGVycz1gZWNobyAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSB8IHRyICcgJyAnXDAxMicgfCBzb3J0IC11YDsgXAotKwloZWFkZXJzPSIkKHNvcnQgJChQTFVHSU5fSEVBREVSUykgJCQoY2QgJChzcmNkaXIpOyBlY2hvICouaCAqLmRlZikpIjsgXAotIAlzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgOyBcCi0gCWZvciBmaWxlIGluICQkaGVhZGVyczsgZG8gXAotIAkgIGlmIFsgLWYgJCRmaWxlIF0gOyB0aGVuIFwKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTQtRGlzYWJsZS1zZHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE0LURpc2FibGUtc2R0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmM0NDUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTQtRGlzYWJsZS1zZHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTMgKzAsMCBAQAotRnJvbSAwMGM3YTdmZGQ0YjRhYWQ5ZTU3ZDhiNTQxZGUxN2FkMjA5YjZjZDA2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6Mjg6MTAgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC80MF0gRGlzYWJsZSBzZHQuCi0KLVdlIGRvbid0IGxpc3QgZHRyYWNlIGluIERFUEVORFMgc28gd2Ugc2hvdWxkbid0IGJlIGRlcGVuZGluZyBvbiB0aGlzIGhlYWRlci4KLUl0IG1heSBvciBtYXkgbm90IGV4aXN0IGZyb20gcHJlaXZvdXMgYnVpbGRzIHRob3VnaC4gVG8gYmUgZGV0ZXJtaW5zdGljLCBkaXNhYmxlCi1zZHQuaCB1c2FnZSBhbHdheXMuIFRoaXMgYXZvaWRzIGJ1aWxkIGZhaWx1cmVzIGlmIHRoZSBoZWFkZXIgaXMgcmVtb3ZlZCBhZnRlciBjb25maWd1cmUKLWJ1dCBiZWZvcmUgbGliZ2NjIGlzIGNvbXBpbGVkIGZvciBleGFtcGxlLgotCi1SUCAyMDEyLzgvNwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1EaXNhYmxlIHNkdCBmb3IgbGlic3RkYysrLXYzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtoYWNrXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICAgICAgICAgICB8IDEyICsrKysrKy0tLS0tLQotIGdjYy9jb25maWd1cmUuYWMgICAgICAgICAgfCAxOCArKysrKysrKystLS0tLS0tLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlICAgIHwgIDYgKysrLS0tCi0gbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyB8ICAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAxMzRjMmMyZjE1Ni4uNTExMWVjMGFhYmIgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMjkyODIsMTIgKzI5MjgyLDEyIEBAIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeS4uLiAiID4mNjsgfQotIGhhdmVfc3lzX3NkdF9oPW5vCi0taWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCi0tICBoYXZlX3N5c19zZHRfaD15ZXMKLS0KLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLS0KLS1maQotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotKyMKLSsjZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGhhdmVfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGhhdmVfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggMGMzYzgyZTRmZjcuLjNlMDlhZjkxNmZkIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTU5NDMsMTUgKzU5NDMsMTUgQEAgZmkKLSBBQ19TVUJTVChbZW5hYmxlX2RlZmF1bHRfc3NwXSkKLSAKLSAjIFRlc3QgZm9yIDxzeXMvc2R0Lmg+IG9uIHRoZSB0YXJnZXQuCi0tR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotLUFDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0taGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLSAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAotLSAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0tZmkKLS1BQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKLSsjR0NDX1RBUkdFVF9URU1QTEFURShbSEFWRV9TWVNfU0RUX0hdKQotKyNBQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQotKyNoYXZlX3N5c19zZHRfaD1ubwotKyNpZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLSsjICBoYXZlX3N5c19zZHRfaD15ZXMKLSsjICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0rIyAgICAgICAgICAgIFtEZWZpbmUgaWYgeW91ciB0YXJnZXQgQyBsaWJyYXJ5IHByb3ZpZGVzIHN5cy9zZHQuaF0pCi0rI2ZpCi0rI0FDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotIAotICMgQ2hlY2sgaWYgVEZtb2RlIGxvbmcgZG91YmxlIHNob3VsZCBiZSB1c2VkIGJ5IGRlZmF1bHQgb3Igbm90LgotICMgU29tZSBnbGliYyB0YXJnZXRzIHVzZWQgREZtb2RlIGxvbmcgZG91YmxlLCBidXQgd2l0aCBnbGliYyAyLjQKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotaW5kZXggNTUzNWJmYTJiNWEuLjEzZDc5M2Y1MDU5IDEwMDc1NQotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZQotQEAgLTIxNzg2LDExICsyMTc4NiwxMSBAQCBhY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi0gYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLSBhY19jb21waWxlcl9nbnU9JGFjX2N2X2NfY29tcGlsZXJfZ251Ci0gCi0tICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgotKyMgIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0gCi0tJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0rIyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotIAotLSAgZmkKLSsjICBmaQotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY1Ci0gJGFzX2VjaG8gIiRnbGliY3h4X2N2X3N5c19zZHRfaCIgPiY2OyB9Ci0gCi1kaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLWluZGV4IDBlZjk2MjcwYzljLi5hZmU1NWExYjIxNSAxMDA2NDQKLS0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLSsrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMKLUBAIC0yMzAsNyArMjMwLDcgQEAgR0xJQkNYWF9DSEVDS19TQ19OUFJPQ0VTU09SU19PTkxOCi0gR0xJQkNYWF9DSEVDS19TQ19OUFJPQ19PTkxOCi0gR0xJQkNYWF9DSEVDS19QVEhSRUFEU19OVU1fUFJPQ0VTU09SU19OUAotIEdMSUJDWFhfQ0hFQ0tfU1lTQ1RMX0hXX05DUFUKLS1HTElCQ1hYX0NIRUNLX1NEVF9ICi0rI0dMSUJDWFhfQ0hFQ0tfU0RUX0gKLSAKLSAjIENoZWNrIGZvciBhdmFpbGFibGUgaGVhZGVycy4KLSBBQ19DSEVDS19IRUFERVJTKFtlbmRpYW4uaCBleGVjaW5mby5oIGZsb2F0LmggZnAuaCBpZWVlZnAuaCBpbnR0eXBlcy5oIFwKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTUtbGlidG9vbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMTUtbGlidG9vbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUwZjhhMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE1LWxpYnRvb2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDgwZjJiMDFiM2Y5MTdjZWEwODI5NDMyOGM4YmJjNTFkYWRlY2U0YWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAotU3ViamVjdDogW1BBVENIIDE1LzQwXSBsaWJ0b29sCi0KLWxpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKLXdoZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KLQotVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCi1Bcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAotZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KLQotZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAotdG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCi0KLVJQIDIwMTIvOC8yNAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGx0bWFpbi5zaCB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggOTUwM2VjODVkNzAuLjAxMjFmYmE3MDdmIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKLSAKLSAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCi0rICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgotKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCi0rCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKyAgICAgIGZpCi0gCi0gICAgICAgb2xkbGlicz0KLSAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE2LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMWI0ZDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNi1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotRnJvbSBhNjZlYzFlMzgyYmY4Njk3NDk1ODhmMDcyYTRhN2MwOTAzOWYyYjNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzA6MzIgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi80MF0gZ2NjOiBhcm12NDogcGFzcyBmaXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJLgotCi1UaGUgTElOS19TUEVDIGZvciBsaW51eCBnZXRzIG92ZXJ3cml0dGVuIGJ5IGxpbnV4LWVhYmkuaCB3aGljaAotbWVhbnMgdGhlIHZhbHVlIG9mIFRBUkdFVF9GSVhfVjRCWF9TUEVDIGdldHMgbG9zdCBhbmQgYXMgYSByZXN1bHQKLXRoZSBvcHRpb24gaXMgbm90IHBhc3NlZCB0byBsaW5rZXIgd2hlbiBjaG9zaW5nIG1hcmNoPWFybXY0Ci1UaGlzIHBhdGNoIHJlZGVmaW5lcyB0aGlzIGluIGxpbnV4LWVhYmkuaCBhbmQgcmVpbnNlcnRzIGl0Ci1mb3IgZWFiaSBkZWZhdWx0aW5nIHRvb2xjaGFpbnMuCi0KLVdlIG1pZ2h0IHdhbnQgdG8gc2VuZCBpdCB1cHN0cmVhbS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0tLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggfCA2ICsrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotaW5kZXggYjNhZjY4Y2FjNTcuLjMzMGI2ZTEzYzVmIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC04OCwxMCArODgsMTQgQEAKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgXAotICAgIi9saWIvbGQtbXVzbC1hcm0iIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttZmxvYXQtYWJpPWhhcmQ6aGZ9LnNvLjEiCi0gCi0rLyogRm9yIGFybXY0IHdlIHBhc3MgLS1maXgtdjRieCB0byBsaW5rZXIgdG8gc3VwcG9ydCBFQUJJICovCi0rI3VuZGVmIFRBUkdFVF9GSVhfVjRCWF9TUEVDCi0rI2RlZmluZSBUQVJHRVRfRklYX1Y0QlhfU1BFQyAiJXttY3B1PWFybTh8bWNwdT1hcm04MTB8bWNwdT1zdHJvbmdhcm0qfG1hcmNoPWFybXY0OiAtLWZpeC12NGJ4fSIKLSsKLSAvKiBBdCB0aGlzIHBvaW50LCBicGFiaS5oIHdpbGwgaGF2ZSBjbG9iYmVyZWQgTElOS19TUEVDLiAgV2Ugd2FudCB0bwotICAgIHVzZSB0aGUgR05VL0xpbnV4IHZlcnNpb24sIG5vdCB0aGUgZ2VuZXJpYyBCUEFCSSB2ZXJzaW9uLiAgKi8KLSAjdW5kZWYgIExJTktfU1BFQwotLSNkZWZpbmUgTElOS19TUEVDIEVBQklfTElOS19TUEVDCQkJCQlcCi0rI2RlZmluZSBMSU5LX1NQRUMgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQlcCi0gICBMSU5VWF9PUl9BTkRST0lEX0xEIChMSU5VWF9UQVJHRVRfTElOS19TUEVDLAkJCQlcCi0gCQkgICAgICAgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAiICIgQU5EUk9JRF9MSU5LX1NQRUMpCi0gCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE3LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MmZlY2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxNy1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gNjI0ZGI3MzRmNjU2YWQ4Y2RmOGIzY2YzZmM4ZTg2MGI3MGM2YzI1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjMzOjA0ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvNDBdIFVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mCi0gdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci0KLVVzZSB0aGUgbXVsdGlsaWIgY29uZmlnIGZpbGVzIGZyb20gJHtCfSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQotc28gdGhhdCB0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKLWdjYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDb25zdGFudGluIE11c2NhIDxjb25zdGFudGlueC5tdXNjYUBpbnRlbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLS0tLQotIGdjYy9jb25maWd1cmUgICAgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQotaW5kZXggNTExMWVjMGFhYmIuLjNkOWRjYmRjOTNkIDEwMDc1NQotLS0tIGEvZ2NjL2NvbmZpZ3VyZQotKysrIGIvZ2NjL2NvbmZpZ3VyZQotQEAgLTEyMTM4LDEwICsxMjEzOCwyMCBAQCBkb25lCi0gdG1ha2VfZmlsZV89Ci0gZm9yIGYgaW4gJHt0bWFrZV9maWxlfQotIGRvCi0tCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotLQl0aGVuCi0tCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0tCWZpCi0rICBjYXNlICRmIGluCi0rICAgICovdC1saW51eDY0ICkKLSsgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgICAqICkKLSsgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICBlc2FjCi0gZG9uZQotIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgotIAotQEAgLTEyMTUyLDYgKzEyMTYyLDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IDNlMDlhZjkxNmZkLi5lMDljODQwYjYwNSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xOTAyLDEwICsxOTAyLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTkxNiw2ICsxOTI2LDEwIEBAIHRtX2ZpbGVfbGlzdD0ib3B0aW9ucy5oIgotIHRtX2luY2x1ZGVfbGlzdD0ib3B0aW9ucy5oIGluc24tY29uc3RhbnRzLmgiCi0gZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCi0gICBjYXNlICRmIGluCi0rICAgICovbGludXg2NC5oICkKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vY29uZmlnLyRmIgotKyAgICAgICA7OwotICAgICAuLyogKQotICAgICAgICBmPWBlY2hvICRmIHwgc2VkICdzL14uLi8vJ2AKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gJGYiCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE4LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZTc3ZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxOC1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAyN2NjYTk1ZGNmZWVhZDhjNTJkMjkyYzQ4MjRlZTk2ZjE3OGQ2MTgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC80MF0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKLSBob3N0IHBhdGgKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCAwMTIxZmJhNzA3Zi4uNTJiZGJkYjVmOWMgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKLSsJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgotKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgotIAkgICAgZGlyPSIkbGliZGlyIgotIAkgICAgYWJzZGlyPSIkbGliZGlyIgotIAkgIGZpCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE5LWV4cG9ydC1DUFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDE5LWV4cG9ydC1DUFAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE0MGM2N2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAxOS1leHBvcnQtQ1BQLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbSBhMjkzNjM4MmRhODFhZWZhOWI2OWMxZmM2MjVmNmM3MDZiN2VhMWQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6NDA6NTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS80MF0gZXhwb3J0IENQUAotCi1UaGUgT0UgZW52aXJvbm1lbnQgc2V0cyBhbmQgZXhwb3J0cyBDUFAgYXMgYmVpbmcgdGhlIHRhcmdldCBnY2MuIFdoZW4KLWJ1aWxkaW5nIGdjYy1jcm9zcy1jYW5hZGlhbiBmb3IgYSBtaW5ndyB0YXJnZXR0ZWQgc2RrLCB0aGUgZm9sbG93aW5nIGNhbiBiZSBmb3VuZAotaW4gYnVpbGQueDg2XzY0LXBva3lzZGstbWluZ3czMi5pNTg2LXBva3ktbGludXgvYnVpbGQteDg2XzY0LWxpbnV4L2xpYmliZXJ0eS9jb25maWcubG9nOgotCi1jb25maWd1cmU6MzY0MTogY2hlY2tpbmcgZm9yIF9GSUxFX09GRlNFVF9CSVRTIHZhbHVlIG5lZWRlZCBmb3IgbGFyZ2UgZmlsZXMKLWNvbmZpZ3VyZTozNjY2OiBnY2MgIC1jIC1pc3lzdGVtL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2luY2x1ZGUgLU8yIC1waXBlICBjb25mdGVzdC5jID4mNQotY29uZmlndXJlOjM2NjY6ICQ/ID0gMAotY29uZmlndXJlOjM2OTg6IHJlc3VsdDogbm8KLWNvbmZpZ3VyZTozNzg2OiBjaGVja2luZyBob3cgdG8gcnVuIHRoZSBDIHByZXByb2Nlc3NvcgotY29uZmlndXJlOjM4NTY6IHJlc3VsdDogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMgotY29uZmlndXJlOjM4NzY6IHg4Nl82NC1wb2t5c2RrLW1pbmd3MzItZ2NjIC1FIC0tc3lzcm9vdD0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1uYXRpdmVzZGstbWluZ3czMi1wb2t5c2RrLW1pbmd3MzIgY29uZnRlc3QuYwotY29uZmlndXJlOjM4NzY6ICQ/ID0gMAotCi1Ob3RlIHRoaXMgaXMgYSAqYnVpbGQqIHRhcmdldCAoaW4gYnVpbGQteDg2XzY0LWxpbnV4KSBzbyBpdCBzaG91bGQgYmUKLXVzaW5nIHRoZSBob3N0ICJnY2MiLCBub3QgeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MuIFNpbmNlIHRoZSBtaW5ndzMyCi1oZWFkZXJzIGFyZSB2ZXJ5IGRpZmZlcmVudCwgdXNpbmcgdGhlIHdyb25nIGNwcCBpcyBhIHJlYWwgcHJvYmxlbS4gSXQgaXMgbGVha2luZwotaW50byBjb25maWd1cmUgdGhyb3VnaCB0aGUgQ1BQIHZhcmlhYmxlLiBVbHRpbWF0ZWx5IHRoaXMgbGVhZHMgdG8gYnVpbGQKLWZhaWx1cmVzIHJlbGF0ZWQgdG8gbm90IGJlaW5nIGFibGUgdG8gaW5jbHVkZSBhIHByb2Nlc3MuaCBmaWxlIGZvciBwZW0tdW5peC5jLgotCi1UaGUgZml4IGlzIHRvIGVuc3VyZSB3ZSBleHBvcnQgYSBzYW5lIENQUCB2YWx1ZSBpbnRvIHRoZSBidWlsZAotZW52aXJvbm1lbnQgd2hlbiB1c2luZyBidWlsZCB0YXJnZXRzLiBXZSBjb3VsZCBkZWZpbmUgYSBDUFBfRk9SX0JVSUxEIHZhbHVlIHdoaWNoIG1heSBiZQotdGhlIHZlcnNpb24gd2hpY2ggbmVlZHMgdG8gYmUgdXBzdHJlYW1lZCBidXQgZm9yIG5vdywgdGhpcyBmaXggaXMgZ29vZCBlbm91Z2ggdG8KLWF2b2lkIHRoZSBwcm9ibGVtLgotCi1SUCAyMi8wOC8yMDEzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuaW4gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KLWluZGV4IDM4Nzc0ZjU0MmE2Li5iNDI2ZDRmOTM1MCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTE0OSw2ICsxNDksNyBAQCBCVUlMRF9FWFBPUlRTID0gXAotIAlBUj0iJChBUl9GT1JfQlVJTEQpIjsgZXhwb3J0IEFSOyBcCi0gCUFTPSIkKEFTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVM7IFwKLSAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAotKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIwLURpc2FibGUtdGhlLU1VTFRJTElCX09TRElSTkFNRVMtYW5kLW90aGVyLW11bHRpbGliLW8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMjU1N2UuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMC1EaXNhYmxlLXRoZS1NVUxUSUxJQl9PU0RJUk5BTUVTLWFuZC1vdGhlci1tdWx0aWxpYi1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkNDMyNmFiNzRhMzYyYjBmYzgzZWQ4NjZmODJjMzU5Mzg5YTM2YWRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjE6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC80MF0gRGlzYWJsZSB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyBhbmQgb3RoZXIgbXVsdGlsaWIKLSBvcHRpb25zLgotCi1IYXJkIGNvZGluZyB0aGUgTVVMVElMSUJfT1NESVJOQU1FUyB3aXRoIC4uL2xpYjY0IGlzIGNhdXNpbmcgcHJvYmxlbXMgb24KLXN5c3RlbXMgd2hlcmUgdGhlIGxpYmRpciBpcyBOT1Qgc2V0IHRvIC9saWI2NC4gIFRoaXMgaXMgYWxsb3dlZCBieSB0aGUKLUFCSSwgYXMKLWxvbmcgYXMgdGhlIGR5bmFtaWMgbG9hZGVyIGlzIHByZXNlbnQgaW4gL2xpYi4KLQotV2Ugc2ltcGx5IHdhbnQgdG8gdXNlIHRoZSBkZWZhdWx0IHJ1bGVzIGluIGdjYyB0byBmaW5kIGFuZCBjb25maWd1cmUgdGhlCi1ub3JtYWwgbGliZGlyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotaW5kZXggYjk4OTc3ODVhODkuLjdkMDZmMGQwZWRiIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAotQEAgLTIxLDggKzIxLDggQEAKLSBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KLSBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCi0gCi0tQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLS1NVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSsjQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKLSsjTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI01VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotIAotLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCi0rI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThiNGQxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIxLUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotRnJvbSA5NGNjOTk1Y2VlNzZhOWQ1OTIwNGE5MDBmY2FhMmFmYjJlYWE3NWMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTA6MjU6MTEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMS80MF0gRW5zdXJlIHRhcmdldCBnY2MgaGVhZGVycyBjYW4gYmUgaW5jbHVkZWQKLQotVGhlcmUgYXJlIGEgZmV3IGhlYWRlcnMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgdGhlIE9wZW5FbWJlZGRlZAotZ2NjLXJ1bnRpbWUgdGFyZ2V0IChvbXAuaCwgc3NwLyouaCkuIEJlaW5nIGluc3RhbGxlZCBmcm9tIGEgcmVjaXBlCi1idWlsdCBmb3IgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmUsIHRoZXNlIGFyZSB3aXRoaW4gdGhlIHRhcmdldAotc3lzcm9vdCBhbmQgbm90IGNyb3NzL25hdGl2ZXNkazsgdGh1cyB0aGV5IHdlcmVuJ3QgYWJsZSB0byBiZQotZm91bmQgYnkgZ2NjIHdpdGggdGhlIGV4aXN0aW5nIHNlYXJjaCBwYXRocy4gQWRkIHN1cHBvcnQgZm9yCi1waWNraW5nIHVwIHRoZXNlIGhlYWRlcnMgdW5kZXIgdGhlIHN5c3Jvb3Qgc3VwcGxpZWQgb24gdGhlIGdjYwotY29tbWFuZCBsaW5lIGluIG9yZGVyIHRvIHJlc29sdmUgdGhpcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9NYWtlZmlsZS5pbiAgfCAyICsrCi0gZ2NjL2NwcGRlZmF1bHQuYyB8IDQgKysrKwotIGdjYy9kZWZhdWx0cy5oICAgfCA5ICsrKysrKysrKwotIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDcxYTgyNzVjMzlmLi5hYTRhZGMzZGIyNCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtNjE0LDYgKzYxNCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKLSAKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgbGlicmFyaWVzIGV0Yy4KLSBsaWJzdWJkaXIgPSAkKGxpYmRpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQotK2xpYnN1YmRpcl90YXJnZXQgPSAkKHRhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikKLSAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgZXhlY3V0YWJsZXMKLSBsaWJleGVjc3ViZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCi0gIyBEaXJlY3RvcnkgaW4gd2hpY2ggYWxsIHBsdWdpbiByZXNvdXJjZXMgYXJlIGluc3RhbGxlZAotQEAgLTI4NzAsNiArMjg3MSw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgotIAotIFBSRVBST0NFU1NPUl9ERUZJTkVTID0gXAotICAgLURHQ0NfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZVwiIFwKLSsgIC1ER0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVD1cIiQobGlic3ViZGlyX3RhcmdldCkvaW5jbHVkZVwiIFwKLSAgIC1ERklYRURfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZS1maXhlZFwiIFwKLSAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSPVwiJChnY2NfZ3h4X2luY2x1ZGVfZGlyKVwiIFwKLSAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09UPSQoZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdCkgXAotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCBiMzZhOTc5ZDViYS4uZTJlMTg3ZGVkYWYgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtNTksNiArNTksMTAgQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdCi0gICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KLSAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0rI2lmZGVmIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQKLSsgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMgdW5kZXIgdGhlIHNwZWNpZmllZCBzeXNyb290LiAgKi8KLSsgICAgeyBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVCwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSsjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLSAgICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotZGlmZiAtLWdpdCBhL2djYy9kZWZhdWx0cy5oIGIvZ2NjL2RlZmF1bHRzLmgKLWluZGV4IDkwMzViMzMzYmU4Li41OTgyYmJkYTYxZCAxMDA2NDQKLS0tLSBhL2djYy9kZWZhdWx0cy5oCi0rKysgYi9nY2MvZGVmYXVsdHMuaAotQEAgLTE0NTUsNCArMTQ1NSwxMyBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAjZGVmaW5lIERXQVJGX0dOQVRfRU5DT0RJTkdTX0RFRkFVTFQgRFdBUkZfR05BVF9FTkNPRElOR1NfR0RCCi0gI2VuZGlmCi0gCi0rLyogRGVmYXVsdCBwcmVmaXhlcyB0byBhdHRhY2ggdG8gY29tbWFuZCBuYW1lcy4gICovCi0rCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMSAiL2xpYi8iCi0rI2VuZGlmCi0rI2lmbmRlZiBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIKLSsjZGVmaW5lIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiAiL3Vzci9saWIvIgotKyNlbmRpZgotKwotICNlbmRpZiAgLyogISBHQ0NfREVGQVVMVFNfSCAqLwotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggNTcwY2RjMDAwMzQuLjNmYjY0ZDQ1M2YxIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0xNDY0LDEzICsxNDY0LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKLSAKLSAvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSAKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLS0jZW5kaWYKLS0jaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotLSNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0tI2VuZGlmCi0tCi0gI2lmZGVmIENST1NTX0RJUkVDVE9SWV9TVFJVQ1RVUkUgIC8qIERvbid0IHVzZSB0aGVzZSBwcmVmaXhlcyBmb3IgYSBjcm9zcyBjb21waWxlci4gICovCi0gI3VuZGVmIE1EX0VYRUNfUFJFRklYCi0gI3VuZGVmIE1EX1NUQVJURklMRV9QUkVGSVgKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjItZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmYwZDNmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDIyLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIGJjMTkyZjBhMDdhZDgxOWRlZTkzNDQ2YzVlZjY4OTVkOTU1MGQ5MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMToxNzoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDIyLzQwXSBnY2MgNC44KyB3b24ndCBidWlsZCB3aXRoIC0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nCi0KLXNpbmNlIHRoZSAqLlBwbyBmaWxlcyBkb24ndCBnZXQgY3JlYXRlZCB1bmxlc3MgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBpcyB0cnVlLgotCi1UaGlzIHBhdGNoIGVuc3VyZXMgd2Ugb25seSB1c2UgdGhvc2UgY29tcGlsZXIgb3B0aW9ucyB3aGVuIGl0cyBlbmFibGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi0oUHJvYmxlbSB3YXMgYWxyZWFkeSByZXBvcnRlZCB1cHN0cmVhbSwgYXR0YWNoZWQgdGhpcyBwYXRjaCB0aGVyZQotaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01NTkzMCkKLQotUlAKLTIwMTIvMDkvMjIKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmF0b21pYy9NYWtlZmlsZS5hbSB8IDMgKystCi0gbGliYXRvbWljL01ha2VmaWxlLmluIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbSBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotaW5kZXggODAzYjI5MmNjZTUuLmI0Nzg0MmViNTkwIDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmFtCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLUBAIC0xMDEsNyArMTAxLDggQEAgUEFUX1MJCT0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQotIElGVU5DX0RFRgk9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCi0gSUZVTkNfT1BUCT0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCi0gCi0tTV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTCQk9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUwkJPQotIE1fU0laRQkJPSAtRE49JChQQVRfTikKLSBNX0lGVU5DCQk9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUJCT0gJChQQVRfQkFTRSlfbi5jCi1kaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmluIGIvbGliYXRvbWljL01ha2VmaWxlLmluCi1pbmRleCBjOGYzOGJlNTgzNS4uNGZhYjdjZWMzZWEgMTAwNjQ0Ci0tLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotQEAgLTMzNSw3ICszMzUsOCBAQCBQQVRfTiA9ICQod29yZCAyLCQoUEFUX1NQTElUKSkKLSBQQVRfUyA9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYgPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVCA9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotLU1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX1RSVUVATV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KLStAQU1ERVBfRkFMU0VATV9ERVBTID0KLSBNX1NJWkUgPSAtRE49JChQQVRfTikKLSBNX0lGVU5DID0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQotIE1fRklMRSA9ICQoUEFUX0JBU0UpX24uYwotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyMy1Eb24tdC1zZWFyY2gtaG9zdC1kaXJlY3RvcnktZHVyaW5nLXJlbGluay1pZi1pbnN0X3ByLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTNmMzQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjMtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gMDQwOWQyZGQ3MzIyZWNiZWQ3MzFjYmUyOWIwMzRmZWE0M2M1ZGRkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDMgTWFyIDIwMTUgMDg6MjE6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMy80MF0gRG9uJ3Qgc2VhcmNoIGhvc3QgZGlyZWN0b3J5IGR1cmluZyAicmVsaW5rIiBpZgotICRpbnN0X3ByZWZpeCBpcyBwcm92aWRlZAotCi1odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvbGlidG9vbC1wYXRjaGVzLzIwMTEtMDEvbXNnMDAwMjYuaHRtbAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDUyYmRiZGI1ZjljLi44MmJjZWMzOWYwNSAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNjAwNCwxMiArNjAwNCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaQotIAkgICAgZWxzZQotIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotKwkgICAgICAjIERlZmF1bHQgaWYgJGxpYmRpciBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHByZWZpeDoKLSAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotLQkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCi0rCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQljYXNlICRsaWJkaXIgaW4KLSAJCSAgW1xcL10qKQotLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgYWRkX2Rpcj0iLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSAJCSAgICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNC1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzg4YTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjQtVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gNTZlMmUxZmMyYTI3YzRhNWNjOWI0NzFkNWQwYWY5MGJjYjg3MWJmYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE1OjI3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvNDBdIFVzZSBTWVNURU1MSUJTX0RJUiByZXBsYWNlbWVudCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcgYmFzZV9saWJkaXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IGJmMTMyN2U5OGNjLi42NDQzNjE4M2JjOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjUtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzZjk3MjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNS1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIGIxNDJlNzdlNDRlMWFjZWNlNmRhNTRjY2RjMjRjNGRhODljZjRiOTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxODozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDI1LzQwXSBhYXJjaDY0OiBBZGQgc3VwcG9ydCBmb3IgbXVzbCBsZHNvCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA2NDQzNjE4M2JjOC4uYmExNTY2NzYwMjYgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjQsNyArMjQsNyBAQAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmICBBU0FOX0NDMV9TUEVDCi0gI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMjYtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1OTE3MzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNi1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDNkNGU1M2ZjN2NkNzFjZTExODFhZjhhNWU5NjU1Mzk4ODU3YWY3NDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI2LzQwXSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCi0KLSogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCi0gICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKLSAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KLSogRml4IGJhZCBSUEFUSCBpdXNzdWU6Ci0gIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCi0gL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAotIFtycGF0aHNdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQotaW5kZXggNmVjYjY2YjQzNjUuLjYzNGNjZTNjMmE5IDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KLUBAIC0zNyw4ICszNyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKLSAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCi0gbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQotIAotLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KLS1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCi0rY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQotK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQotIAotIGlmIEVOQUJMRV9QTFVHSU4KLSBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCi1pbmRleCA0N2JlMTAwMjVhZC4uOGQ1NDgxZDg3YmQgMTAwNjQ0Ci0tLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgotQEAgLTMwMyw4ICszMDMsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIAotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKLSBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQotIHNoYXJlZF9zb3VyY2UgPSBjYWxsYmFja3MuY2MgY2FsbGJhY2tzLmhoIGNvbm5lY3Rpb24uY2MgY29ubmVjdGlvbi5oaCBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI3LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiOTU1ZGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyNy1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLUZyb20gYzAzM2MxZGYxMWI2OTIyMTNkMDNkYjkxZDZjYzE0NWI0YWRlZGZhYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNy80MF0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYwotCi1CZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcwotd2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCi1iaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KLQotU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKLW5hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCi1saWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCi1pbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKLWJhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KLQotSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKLQotYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKLSAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCi1iKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgotICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAgMjAxNS83LzI4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQotIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCBlMmUxODdkZWRhZi4uMmZhYmEyYjFkNjMgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtMzUsNiArMzUsMzAgQEAKLSAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCi0gI2VuZGlmCi0gCi0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NDX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUOwotKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIExPQ0FMX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IExPQ0FMX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBQUkVGSVhfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIEZJWEVEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEZJWEVEX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIENST1NTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENST1NTX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBUT09MX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLStzdGF0aWMgY2hhciBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSOwotKyNlbmRpZgotKwotIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNpZmRlZiBJTkNMVURFX0RFRkFVTFRTCi0gPSBJTkNMVURFX0RFRkFVTFRTOwotQEAgLTQyLDM4ICs2NiwzOCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSA9IHsKLSAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCi0tICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLwotLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKLS0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKLSsgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCi0tICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAotKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKLSAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKLSAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KLSAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCi1AQCAtODUsMTYgKzEwOSwxNiBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjZW5kaWYKLSAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLSAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSsgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQotICAgfTsKLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5oIGIvZ2NjL2NwcGRlZmF1bHQuaAotaW5kZXggNGEwMTg2ZDFjZjIuLjI5ZTVkOWRhMGRjIDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAotKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAotQEAgLTMzLDcgKzMzLDggQEAKLSAKLSBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCi0gewotLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsKLSAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKLSAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KLSAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCAzZmI2NGQ0NTNmMS4uY2QwYzdmYmU5NjEgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTI0OCw2ICsyNDgsOCBAQCBGSUxFICpyZXBvcnRfdGltZXNfdG9fZmlsZSA9IE5VTEw7Ci0gI2VuZGlmCi0gc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IERFRkFVTFRfVEFSR0VUX1NZU1RFTV9ST09UOwotIAotK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7Ci0rCi0gLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLwotIAotIHN0YXRpYyBpbnQgdGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQ7Ci1AQCAtNTE5LDYgKzUyMSw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KLSAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgotICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKLSAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KLSsgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKLSAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCi1AQCAtMTQ4NywxMCArMTQ5MCwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQotICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0Ci0gICAgbG9jYXRpb24gaW5zdGVhZC4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIAotIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCi0gICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCi1AQCAtMTQ5OCw5ICsxNTAxLDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCi0gICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7Ci0gCi0gLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKLUBAIC01ODQ5LDYgKzU4NTIsMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQotIAkgICAgICB9Ci0gCSAgICBicmVhazsKLSAKLSsgICAgICAgICAgY2FzZSAncic6Ci0rICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAotKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rCi0gCSAgY2FzZSAnUyc6Ci0gCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOwotIAkgICAgaWYgKHZhbHVlICE9IDApCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI4LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI4LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiMjVkNzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyOC1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gNjIyNDBkNGM3MjVlYTBiNDNhYmZiOTAxZGRhZDkwZTgzZTI5YTI1YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOC80MF0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAotIG11bHRpbGliLgotCi1XZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KLTxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KLXdoaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQotY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQotdGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Ci1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yawotZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgotPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KLW1pcHM2NC1wb2xrbWxsaWIzMi1saW51eAotaXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgotCi1UaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKLWlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggY2QwYzdmYmU5NjEuLmY2ZjNhYTA3N2M4IDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNTI3LDcgKzI1MjcsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAotICAgICAgIGlmIChwYXRoID09IE5VTEwpCi0gCXsKLSAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKLS0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKLSsJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKLSAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKLSAJfQotIAotQEAgLTI1MzksNiArMjUzOSwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAotIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCi0gCSAgaWYgKCFza2lwX211bHRpX2RpcikKLSAJICAgIHsKLSsJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCi0rCSAgICAgICAgewotKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKLSsJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKLSsKLSsJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCSAgICAgICAgICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCi0rCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KLSsJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKLSsJICAgICAgICAgICAgewotKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOwotKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0rCSAgICAgICAgICAgICAgICBpZiAocmV0KQotKwkJICAgICAgICAgIGJyZWFrOwotKwkgICAgICAgICAgICB9Ci0rCSAgICAgICAgfQotKwotIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOwotIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0gCSAgICAgIGlmIChyZXQpCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAyOS1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM4YmRiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDI5LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gMTM3N2M3MzhlMzFhMWUxNTk5Y2ZhYjE4OTQ4NWE5NDU5ZjgwM2U3OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyOS80MF0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKwotIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggYjQyNmQ0ZjkzNTAuLmEyYWY5OTA1Y2NlIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTUyLDYgKzE1Miw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKLUBAIC0xNjksNiArMTcwLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODYsNiArMTkwLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotQEAgLTc0Myw2ICs3NDgsNyBAQCBCQVNFX0ZMQUdTX1RPX1BBU1MgPSBcCi0gCSJDQ19GT1JfQlVJTEQ9JChDQ19GT1JfQlVJTEQpIiBcCi0gCSJDRkxBR1NfRk9SX0JVSUxEPSQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkNYWF9GT1JfQlVJTEQ9JChDWFhfRk9SX0JVSUxEKSIgXAotKwkiQ1hYRkxBR1NfRk9SX0JVSUxEPSQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotIAkiRVhQRUNUPSQoRVhQRUNUKSIgXAotIAkiRkxFWD0kKEZMRVgpIiBcCi0gCSJJTlNUQUxMPSQoSU5TVEFMTCkiIFwKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKLWluZGV4IDFmMjNiNzliNGIyLi42YzU2NTJlODExZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnRwbAotKysrIGIvTWFrZWZpbGUudHBsCi1AQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCi1AQCAtMTcxLDYgKzE3Miw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTg4LDYgKzE5Miw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDVhZTY5M2ZiMDZjLi4wMmVlMGFhNzJmNCAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtODAxLDcgKzgwMSw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACi0gQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACi0gQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDNkOWRjYmRjOTNkLi5hYTEyN2E0ZjZhNCAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMTc5Nyw3ICsxMTc5Nyw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGUwOWM4NDBiNjA1Li4xOGJmNTNjN2UwYSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xNzA4LDcgKzE3MDgsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzAtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0ZTEyNmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gNzVkYTNjYzljYTJkM2RlOGMyMDYyZjIzYmY0ZjcyNDE1NzQxZWY4MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTYgMTA6MjY6MTAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzMC80MF0gbmlvczI6IERlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL25pb3MyL2xpbnV4LmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbGludXguaCBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotaW5kZXggNDcyOTEwNTYyNmQuLjM2MTgxZWI3Yjg1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLUBAIC0zMCw2ICszMCw3IEBACi0gI2RlZmluZSBDUFBfU1BFQyAiJXtwb3NpeDotRF9QT1NJWF9TT1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtbmlvczIuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgICIvbGliL2xkLW11c2wtbmlvczIuc28uMSIKLSAKLSAjdW5kZWYgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgTElOS19TUEVDX0VORElBTiBcCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMxLUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMmNmMmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzMS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSBmNzE1YWVlZjI5NGI4NWZhNTkzZWY2OWU2ZDAxMTRjYzdiMTUzMTJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTg6MTA6NTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzMS80MF0gQWRkIHNzcF9ub25zaGFyZWQgdG8gbGluayBjb21tYW5kbGluZSBmb3IgbXVzbCB0YXJnZXRzCi0KLXdoZW4gLWZzdGFjay1wcm90ZWN0b3Igb3B0aW9ucyBhcmUgZW5hYmxlZCB3ZSBuZWVkIHRvCi1saW5rIHdpdGggc3NwX3NoYXJlZCBvbiBtdXNsIHNpbmNlIGl0IGRvZXMgbm90IHByb3ZpZGUKLXRoZSBfX3N0YWNrX2Noa19mYWlsX2xvY2FsKCkgc28gZXNzZW50aWFsbHkgaXQgcHJvdmlkZXMKLWxpYnNzcCBidXQgbm90IGxpYnNzcF9ub25zaGFyZWQgc29tZXRoaW5nIGxpa2UKLVRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUF9CVVRfTk9UX1NTUF9OT05TSEFSRUQKLSB3aGVyZS1hcyBmb3IgZ2xpYmMgdGhlIG5lZWRlZCBzeW1ib2xzCi1hcmUgYWxyZWFkeSBwcmVzZW50IGluIGxpYmNfbm9uc2hhcmVkIGxpYnJhcnkgdGhlcmVmb3JlCi13ZSBkbyBub3QgbmVlZCBhbnkgbGlicmFyeSBoZWxwZXIgb24gZ2xpYmMgYmFzZWQgc3lzdGVtcwotYnV0IG11c2wgbmVlZHMgdGhlIGxpYnNzcF9ub3NoYXJlZCBmcm9tIGdjYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICB8ICA3ICsrKysrKysKLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eC5oICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgMTAgKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1pbmRleCA0ODdiMGMwOTIzYi4uNDc2OWQwODk1MzggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTE4Miw2ICsxODIsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAotICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCi0gICB9Ci0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rCi0gI2VuZGlmCi0gCi0gI2lmIChERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMpICYmIGRlZmluZWQgKFNJTkdMRV9MSUJDKSAvKiB1Q2xpbnV4ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLWluZGV4IDAxYjQwYzc2MmY2Li5lN2M1ZTkyMjE1YyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLUBAIC05Miw2ICs5MiwxNiBAQAotIAkJCQkJICIgLW0gZWxmMzJwcGNsaW51eCIpCi0gI2VuZGlmCi0gCi0rLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0rI3VuZGVmIExJTktfU1NQX1NQRUMKLSsjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSAjdW5kZWYgTElOS19PU19MSU5VWF9TUEVDCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMgTElOS19PU19MSU5VWF9FTVVMICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKLSAgICV7IXN0YXRpYy1waWU6IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDU0YWE4ZDk1N2U3Li42MTllMTEzZTJiOCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDY2LDYgKzQ2NiwxNiBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotIAkJCQkJICAgIiAtbSBlbGY2NHBwYyIpCi0gI2VuZGlmCi0gCi0rLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0rI3VuZGVmIExJTktfU1NQX1NQRUMKLSsjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQzMyIExJTktfT1NfTElOVVhfRU1VTDMyICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKLSAgICV7IXN0YXRpYy1waWU6IFwKLSAgICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzItbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMyLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjVjYWJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzItbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotRnJvbSA2ZGZiY2E3OGI4ZDI1M2FlY2Y5Y2JiNWU2OGUwNGI4ZGQzZDZhNTQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgQXByIDIwMTYgMjA6MDM6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMi80MF0gbGliZ2NjOiBBZGQga25vYiB0byB1c2UgbGRibC0xMjggb24gcHBjCi0KLW11c2wgZG9lcyBub3Qgc3VwcG9ydCBsZGJsIDEyOCBzbyB3ZSBjYW4gbm90IGFzc3VtZQotdGhhdCBsaW51eCBhcyBhIHdob2xlIHN1cHBvcnRzIGxkYmwtMTI4IGJpdHMsIGluc3RlYWQKLWFjdCB1cG9uIGNvbmZpZ3VyZSBvcHRpb24gcGFzc2VkIHRvIGdjYyBhbmQgYXNzdW1lIG5vCi1vbiBtdXNsIGFuZCB5ZXMgb3RoZXJ3aXNlIGlmIG5vIG9wdGlvbiBpcyBwYXNzZWQgc2luY2UKLWRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGFzc3VtZSBsZGJsMTI4IGl0IGRvZXMgbm90Ci1jaGFuZ2UgdGhlIGRlZmF1bHRzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliZ2NjL01ha2VmaWxlLmluICAgICAgICAgICB8ICAxICsKLSBsaWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IHwgIDUgKysrKy0KLSBsaWJnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTggKysrKysrKysrKysrKysrKysrCi0gbGliZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDEyICsrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgMzUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbGliZ2NjL2NvbmZpZ3VyZQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL01ha2VmaWxlLmluIGIvbGliZ2NjL01ha2VmaWxlLmluCi1pbmRleCBkZDhjZWU5OWZkMy4uYjVmNDc4YWYzODIgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmdjYy9NYWtlZmlsZS5pbgotQEAgLTQ4LDYgKzQ4LDcgQEAgdW53aW5kX2hlYWRlciA9IEB1bndpbmRfaGVhZGVyQAotIG1kX3Vud2luZF9oZWFkZXIgPSBAbWRfdW53aW5kX2hlYWRlckAKLSBzZnBfbWFjaGluZV9oZWFkZXIgPSBAc2ZwX21hY2hpbmVfaGVhZGVyQAotIHRocmVhZF9oZWFkZXIgPSBAdGhyZWFkX2hlYWRlckAKLSt3aXRoX2xkYmwxMjggPSBAd2l0aF9sZGJsMTI4QAotIAotIGhvc3Rfbm9uY2Fub25pY2FsID0gQGhvc3Rfbm9uY2Fub25pY2FsQAotIHJlYWxfaG9zdF9ub25jYW5vbmljYWwgPSBAcmVhbF9ob3N0X25vbmNhbm9uaWNhbEAKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4IGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAotaW5kZXggNGY2ZDRjNGE0ZDIuLmM1MGRkOTRhMmRhIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAotKysrIGIvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eAotQEAgLTEsMyArMSw2IEBACi0gU0hMSUJfTUFQRklMRVMgKz0gJChzcmNkaXIpL2NvbmZpZy9yczYwMDAvbGliZ2NjLWdsaWJjLnZlcgotIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjggLW1uby1taW5pbWFsLXRvYwotK2lmZXEgKCQod2l0aF9sZGJsMTI4KSx5ZXMpCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOAotK2VuZGlmCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbW5vLW1pbmltYWwtdG9jCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZSBiL2xpYmdjYy9jb25maWd1cmUKLW9sZCBtb2RlIDEwMDY0NAotbmV3IG1vZGUgMTAwNzU1Ci1pbmRleCBiMmYzZjg3MDg0NC4uZWQ4MDY1ODdjMTcKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUKLUBAIC02MTksNiArNjE5LDcgQEAgYnVpbGRfdmVuZG9yCi0gYnVpbGRfY3B1Ci0gYnVpbGQKLSB3aXRoX2FpeF9zb25hbWUKLSt3aXRoX2xkYmwxMjgKLSBlbmFibGVfdnRhYmxlX3ZlcmlmeQotIGVuYWJsZV9zaGFyZWQKLSBsaWJnY2NfdG9wZGlyCi1AQCAtNjY4LDYgKzY2OSw3IEBAIHdpdGhfY3Jvc3NfaG9zdAotIHdpdGhfbGQKLSBlbmFibGVfc2hhcmVkCi0gZW5hYmxlX3Z0YWJsZV92ZXJpZnkKLSt3aXRoX2xvbmdfZG91YmxlXzEyOAotIHdpdGhfYWl4X3NvbmFtZQotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotIHdpdGhfc2xpYmRpcgotQEAgLTEzMjksNiArMTMzMSw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAotICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCi0gICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQotKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAotICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAotQEAgLTIyMTMsNiArMjIxNiwyMSBAQCBmaQotIAotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbG9uZy1kb3VibGUtMTI4IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyB3aXRoX2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKLStlbHNlCi0rICBjYXNlICIke2hvc3R9IiBpbgotKyBwb3dlciotKi1tdXNsKikKLSsgICB3aXRoX2xkYmwxMjg9Im5vIjs7Ci0rICopIHdpdGhfbGRibDEyOD0ieWVzIjs7Ci0rIGVzYWMKLSsKLStmaQotKwotKwotKwotKwotICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCi0gaWYgdGVzdCAiJHt3aXRoX2FpeF9zb25hbWUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgd2l0aHZhbD0kd2l0aF9haXhfc29uYW1lOyBjYXNlICIke2hvc3R9OiR7ZW5hYmxlX3NoYXJlZH0iIGluCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZS5hYyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLWluZGV4IGI1OWFhNzQ2YWZjLi40MjIyMGEyNjNjNSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUuYWMKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUuYWMKLUBAIC03OCw2ICs3OCwxOCBAQCBBQ19BUkdfRU5BQkxFKHZ0YWJsZS12ZXJpZnksCi0gW2VuYWJsZV92dGFibGVfdmVyaWZ5PW5vXSkKLSBBQ19TVUJTVChlbmFibGVfdnRhYmxlX3ZlcmlmeSkKLSAKLStBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCi0rW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKLSsgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCi0rICAgICAgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAotK1tjYXNlICIke2hvc3R9IiBpbgotKyBwb3dlciotKi1tdXNsKikKLSsgICB3aXRoX2xkYmwxMjg9Im5vIjs7Ci0rICopIHdpdGhfbGRibDEyOD0ieWVzIjs7Ci0rIGVzYWMKLStdKQotK0FDX1NVQlNUKHdpdGhfbGRibDEyOCkKLSsKLSBBQ19BUkdfV0lUSChhaXgtc29uYW1lLAotIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCi0gICAgIFtzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIChha2EgIlNPTkFNRSIpIHZhcmlhbnQgdG8gcHJvdmlkZSBvbiBBSVhdKV0sCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDMzLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzMtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDNmN2FhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzMtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotRnJvbSA3ZTU1MTQ3ZThlNjA5YWNlNmY5ZWVjZDg2YTk1NjYzNjY4NzY3MWYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNCBNYXkgMjAxNiAyMToxMTozNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDMzLzQwXSBMaW5rIGxpYmdjYyB1c2luZyBMREZMQUdTLCBub3QganVzdCBTSExJQl9MREZMQUdTCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmdjYy9jb25maWcvdC1zbGliZ2NjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotaW5kZXggN2U2MGI2MjFhMmQuLmVhMjJlZGUzMzYxIDEwMDY0NAotLS0tIGEvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLSsrKyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi1AQCAtMzIsNyArMzIsNyBAQCBTSExJQl9JTlNUQUxMX1NPTElOSyA9ICQoTE5fUykgJChTSExJQl9TT05BTUUpIFwKLSAJJChERVNURElSKSQoc2xpYmRpcikkKFNITElCX1NMSUJESVJfUVVBTCkvJChTSExJQl9TT0xJTkspCi0gCi0gU0hMSUJfTElOSyA9ICQoQ0MpICQoTElCR0NDMl9DRkxBR1MpIC1zaGFyZWQgLW5vZGVmYXVsdGxpYnMgXAotLQkkKFNITElCX0xERkxBR1MpIFwKLSsJJChMREZMQUdTKSAkKFNITElCX0xERkxBR1MpIFwKLSAJLW8gJChTSExJQl9ESVIpLyQoU0hMSUJfU09OQU1FKS50bXAgQG11bHRpbGliX2ZsYWdzQCBcCi0gCSQoU0hMSUJfT0JKUykgJChTSExJQl9MQykgJiYgXAotIAlybSAtZiAkKFNITElCX0RJUikvJChTSExJQl9TT0xJTkspICYmIFwKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzQtbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzQtbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIyMjRjYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM0LWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1Gcm9tIDQ2Y2E1MWRkNDEzMzMwYmI4NDI1YjA2MjgzZTc2NjdiZmI1MDdjM2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFNhdCwgMjQgT2N0IDIwMTUgMjA6MDk6NTMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzNC80MF0gbGliZ2NjX3M6IFVzZSBhbGlhcyBmb3IgX19jcHVfaW5kaWNhdG9yX2luaXQgaW5zdGVhZCBvZiBzeW12ZXIKLQotQWRhcHRlciBmcm9tCi0KLWh0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNS0wNS9tc2cwMDg5OS5odG1sCi0KLVRoaXMgZml4IHdhcyBkZWJhdGVkIGJ1dCBoYXNudCBiZWVuIGFwcGxpZWQgZ2NjIHVwc3RyZWFtIHNpbmNlCi10aGV5IGV4cGVjdCBtdXNsIHRvIHN1cHBvcnQgJ0AnIGluIHN5bWJvbCB2ZXJzaW9uaW5nIHdoaWNoIGlzCi1hIHN1bi9nbnUgdmVyc2lvbmluZyBleHRlbnRpb24uIFRoaXMgcGF0Y2ggaG93ZXZlciBhdm9pZHMgdGhlCi1uZWVkIGZvciB0aGUgJ0AnIHN5bWJvbHMgYXQgYWxsCi0KLWxpYmdjYy9DaGFuZ2Vsb2c6Ci0KLTIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2NwdWluZm8uYyAoX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwpOiBBZGQuCi0JKF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wKTogUmVtb3ZlLgotCi0JKiBjb25maWcvaTM4Ni90LWxpbnV4IChIT1NUX0xJQkdDQzJfQ0ZMQUdTKTogUmVtb3ZlIC1EVVNFX0VMRl9TWU1WRVIuCi0KLWdjYy9DaGFuZ2Vsb2c6Ci0KLTIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IE1ha2UgX19idWlsdGluX2NwdV9pbml0Ci0JY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbnN0ZWFkIG9mIF9fY3B1X2luZGljYXRvcl9pbml0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KLSBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KLSBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IGE4OGEyOWI1MWU2Li42ZjNmNTE4Nzk3MCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0zNjU1NSwxMCArMzY1NTUsMTAgQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIHJ0eCBzdWJ0YXJnZXQsCi0gICAgIHsKLSAgICAgY2FzZSBJWDg2X0JVSUxUSU5fQ1BVX0lOSVQ6Ci0gICAgICAgewotLQkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXQgaW4gbGliZ2NjLiAqLwotKwkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW4gbGliZ2NjLmEuICovCi0gCXRyZWUgY2FsbF9leHByLCBmbmRlY2wsIHR5cGU7Ci0gICAgICAgICB0eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsgCi0tCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIsIHR5cGUpOwotKwlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwiLCB0eXBlKTsKLSAJY2FsbF9leHByID0gYnVpbGRfY2FsbF9leHByIChmbmRlY2wsIDApOyAKLSAJcmV0dXJuIGV4cGFuZF9leHByIChjYWxsX2V4cHIsIHRhcmdldCwgbW9kZSwgRVhQQU5EX05PUk1BTCk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi1pbmRleCBkMTg1M2Q1NTE1Yi4uODY0MTUwYzkyNDkgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi0rKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi1AQCAtNDg1LDcgKzQ4NSw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCi0tX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOwotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKLSsjaWZuZGVmIFNIQVJFRAotK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKLSsgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1pbmRleCA4NTA2YTYzNTc5MC4uNTY0Mjk2Zjc4OGUgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLUBAIC0zLDUgKzMsNSBAQAotICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKLSBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCi0gCi0tSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIgJChDRVRfRkxBR1MpCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwICQoQ0VUX0ZMQUdTKQotIENSVFNUVUZGX1RfQ0ZMQUdTICs9ICQoQ0VUX0ZMQUdTKQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNS1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM1LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmVjZDZlOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM1LXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gMzhkNDAxZmI2YWI1NTVkMDlmNGE5YTY3NzcyMWRkZTA3NDM4NzZlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzNS80MF0gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCi0KLW11c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90Ci1zbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9naW5jbHVkZS9zdGRkZWYuaCBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAotaW5kZXggMzFiOTZhN2U1ZTEuLjQzOGEzY2U3YzU2IDEwMDY0NAotLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi0rKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLUBAIC0xMzQsNiArMTM0LDcgQEAgX1RZUEVfd2NoYXJfdDsKLSAjaWZuZGVmIF9fX2ludF9wdHJkaWZmX3RfaAotICNpZm5kZWYgX0dDQ19QVFJESUZGX1QKLSAjaWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCi0rI2lmbmRlZiBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9QVFJESUZGX1QKLSAjZGVmaW5lIF9UX1BUUkRJRkZfCi0gI2RlZmluZSBfVF9QVFJESUZGCi1AQCAtMTQzLDEwICsxNDQsMTIgQEAgX1RZUEVfd2NoYXJfdDsKLSAjZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaAotICNkZWZpbmUgX0dDQ19QVFJESUZGX1QKLSAjZGVmaW5lIF9QVFJESUZGX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLwotICNpZm5kZWYgX19QVFJESUZGX1RZUEVfXwotICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAotICNlbmRpZgotIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0rI2VuZGlmIC8qIF9fREVGSU5FRF9wdHJkaWZmX3QgKi8KLSAjZW5kaWYgLyogX1BUUkRJRkZfVF9ERUNMQVJFRCAqLwotICNlbmRpZiAvKiBfR0NDX1BUUkRJRkZfVCAqLwotICNlbmRpZiAvKiBfX19pbnRfcHRyZGlmZl90X2ggKi8KLUBAIC0xODQsNiArMTg3LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjaWZuZGVmIF9HQ0NfU0laRV9UCi0gI2lmbmRlZiBfU0laRVRfCi0gI2lmbmRlZiBfX3NpemVfdAotKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9TSVpFX1QKLUBAIC0yMDAsNiArMjA0LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAotICNkZWZpbmUgX0dDQ19TSVpFX1QKLSAjZGVmaW5lIF9TSVpFVF8KLSsjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNpZiAoZGVmaW5lZCAoX19GcmVlQlNEX18pICYmIChfX0ZyZWVCU0RfXyA+PSA1KSkgXAotICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCi0gICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykKLUBAIC0yMzUsNiArMjQwLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2VuZGlmIC8qIF9TSVpFX1QgKi8KLSAjZW5kaWYgLyogX19TSVpFX1RfXyAqLwotICNlbmRpZiAvKiBfX3NpemVfdF9fICovCi0rI2VuZGlmIC8qIF9fREVGSU5FRF9zaXplX3QgKi8KLSAjdW5kZWYJX19uZWVkX3NpemVfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3NpemVfdC4gICovCi0gCi1AQCAtMjY0LDYgKzI3MCw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNpZm5kZWYgX19faW50X3djaGFyX3RfaAotICNpZm5kZWYgX19JTlRfV0NIQVJfVF9ICi0gI2lmbmRlZiBfR0NDX1dDSEFSX1QKLSsjaWZuZGVmIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9fd2NoYXJfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fV0NIQVJfVF9fCS8qIENyYXkgVW5pY29zL01rICovCi0gI2RlZmluZSBfV0NIQVJfVAotQEAgLTI3OSw2ICsyODYsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZGVmaW5lIF9fSU5UX1dDSEFSX1RfSAotICNkZWZpbmUgX0dDQ19XQ0hBUl9UCi0gI2RlZmluZSBfV0NIQVJfVF9ERUNMQVJFRAotKyNkZWZpbmUgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLwotIAotIC8qIE9uIEJTRC8zODYgMS4xLCBhdCBsZWFzdCwgbWFjaGluZS9hbnNpLmggZGVmaW5lcyBfQlNEX1dDSEFSX1RfCi0gICAgaW5zdGVhZCBvZiBfV0NIQVJfVF8sIGFuZCBfQlNEX1JVTkVfVF8gKHdoaWNoLCB1bmxpa2UgdGhlIG90aGVyCi1AQCAtMzQ0LDYgKzM1Miw3IEBAIHR5cGVkZWYgX19XQ0hBUl9UWVBFX18gd2NoYXJfdDsKLSAjZW5kaWYKLSAjZW5kaWYgLyogX19XQ0hBUl9UX18gKi8KLSAjZW5kaWYgLyogX193Y2hhcl90X18gKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3djaGFyX3QgbXVzbCAqLwotICN1bmRlZglfX25lZWRfd2NoYXJfdAotICNlbmRpZiAvKiBfU1REREVGX0ggb3IgX19uZWVkX3djaGFyX3QuICAqLwotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNi1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNi1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGNlNWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzYtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUZyb20gYTliYjI5YTRlOWI0NzhmOWIxMjZlNDgzNDY3Y2U5MDMxYzMzZmU0ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDE5IE1hciAyMDE4IDIyOjMxOjIwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzYvNDBdIGZpeCBzZWdtZW50YXRpb24gZmF1bHQgaW4gcHJlY29tcGlsZWQgaGVhZGVyIGdlbmVyYXRpb24KLQotUHJldmVudCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBpbmNvcnJlY3QKLXN0cnVjdHVyZSB0cnlpbmcgdG8gYWNjZXNzIG5hbWUgb2Ygc29tZSBuYW1lZCBvcGVyYXRvcnMsIHN1Y2ggYXMKLUNQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgotdGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgotCi1bWU9DVE8gIzExNzM4XQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJjcHAvbGV4LmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCi1pbmRleCAzN2MzNjVhMzU2MC4uNjM0ODAwNDhkYjYgMTAwNjQ0Ci0tLS0gYS9saWJjcHAvbGV4LmMKLSsrKyBiL2xpYmNwcC9sZXguYwotQEAgLTMyNzksMTEgKzMyNzksMjcgQEAgY3BwX3NwZWxsX3Rva2VuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY3BwX3Rva2VuICp0b2tlbiwKLSAgICAgc3BlbGxfaWRlbnQ6Ci0gICAgIGNhc2UgU1BFTExfSURFTlQ6Ci0gICAgICAgaWYgKGZvcnN0cmluZykKLS0JewotLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCi0tCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKLS0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7Ci0tCX0KLSsgICAgICAgIHsKLSsgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCi0rICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7Ci0rICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KLSsgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7Ci0rICAgICAgICAgICAgICBpZiAoc3RyKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOwotKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKLSsgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOwotKyAgICAgICAgICAgICAgICB9Ci0rICAgICAgICAgICAgICBicmVhazsKLSsgICAgICAgICAgICB9Ci0rICAgICAgICB9Ci0gICAgICAgZWxzZQotIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOwotICAgICAgIGJyZWFrOwotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNy1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzNy1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MDk5OWRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzctRml4LWZvci10ZXN0c3VpdGUtZmFpbHVyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi1Gcm9tIDFlNWMxZWYzNGQ5MmI0MTU3ZTFhMjRjYTc0M2Q0NWYzYTczNzVhNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSQUdIVU5BVEggTE9MVVIgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KLURhdGU6IFdlZCwgNiBEZWMgMjAxNyAyMjo1MjoyNiAtMDgwMAotU3ViamVjdDogW1BBVENIIDM3LzQwXSBGaXggZm9yIHRlc3RzdWl0ZSBmYWlsdXJlCi0KLTIwMTctMTEtMTYgIFJhZ2h1bmF0aCBMb2x1ciAgPHJhZ2h1bmF0aC5sb2x1ckBrcGl0LmNvbT4KLQotCSogZ2NjLmRnL3ByNTYyNzUuYzogSWYgU1NFIGlzIGRpc2FibGVkLCBlbnN1cmUgdGhhdAotCSItbWZwbWF0aCIgaXMgbm90IHNldCB0byB1c2UgU1NFLiBTZXQgIi1tZnBtYXRoPTM4NyIuCi0JKiBnY2MuZGcvcHI2ODMwNi5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjgzMDYtMi5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjgzMDYtMy5jOiBMaWtld2lzZQotCSogZ2NjLmRnL3ByNjk2MzQuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvaXNhLTE0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmM6IExpa2V3aXNlCi0KLUlmIC1XYWxsLCAtV2Vycm9yIGFyZSB1c2VkIGR1cmluZyBjb21waWxhdGlvbiB2YXJpb3VzIHRlc3QgY2FzZXMgZmFpbAotdG8gY29tcGlsZS4KLQotSWYgU1NFIGlzIGRpc2FibGVkLCBiZSBzdXJlIHRvIC1tZnBtYXRoPTM4NyB0byByZXNvbHZlIHRoaXMuCi0KLVRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY2hhbmdlcyB0byBDaGFuZ2Vsb2cgZnJvbSB0aGUgb3JpZ2luYWwgcGF0Y2guCi1UaGlzIHdpbGwgaGVscCB1cyBhdm9pZCBjb25mbGljdHMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMgICAgICAgICAgfCAxICsKLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jICAgICAgfCAyICstCi0gMTcgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKLWluZGV4IGI5MDFiYjJiMTk5Li5hNGY2Yzk1ZTFhMSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8yIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCB7IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9IH0gKi8KLSAKLSB0eXBlZGVmIGxvbmcgbG9uZyB2MnR3IF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoMiAqIHNpemVvZiAobG9uZyBsb25nKSkpKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCi1pbmRleCA0NjcyZWJlNzk4Ny4uMmEzNjhjNDg0YjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAKLSBzdHJ1Y3QgewotICAgICBpbnQgdHpfbWludXRlc3dlc3Q7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYwotaW5kZXggZjVhOGMxMDJjZjguLmRmMzM5MGM2NGMyIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8zIiB9ICovCi0tLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tYWx0aXZlYyAtbW5vLXZzeCIgeyB0YXJnZXQgcG93ZXJwYyotKi0qIH0gfSAqLwotIAotIGV4dGVybiB2b2lkIGZuMigpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYwotaW5kZXggNTRlNWI0MGYyMjEuLjA4MTMzODllMmMxIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAKLSBlbnVtIHBvd2VycGNfcG1jX3R5cGUgeyBQUENfUE1DX0lCTSB9OwotIHN0cnVjdCB7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCi1pbmRleCA2MGE1NjE0OTQ2My4uYmNjMjNmOWNjZDYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZm5vLWRjZSAtZnNjaGVkdWxlLWluc25zIC1mbm8tdHJlZS12cnAgLWZjb21wYXJlLWRlYnVnIC1Xbm8tcHNhYmkiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBzY2hlZHVsaW5nIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IHUxNjsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotaW5kZXggNjlmZGU1N2JmMDYuLjdmMWYxYzAzZWRmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYWJpPXN5c3YiIHsgdGFyZ2V0ICotKi1taW5ndyogfSB9ICovCi0gCi0gZG91YmxlIGZvbyh2b2lkKSB7IHJldHVybiAwOyB9CS8qIHsgZGctZXJyb3IgIlNTRSBkaXNhYmxlZCIgfSAqLwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYwotaW5kZXggZWE4OTZiN2ViZmQuLmJmMTU1NjliODI2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKLUBAIC0xLDYgKzEsNyBAQAotIC8qIFRlc3Qgd2hldGhlciBhbGwgb2YgdGhlIDY0LWJpdCBmdW5jdGlvbiBzcGVjaWZpYyBvcHRpb25zIGFyZSBhY2NlcHRlZAotICAgIHdpdGhvdXQgZXJyb3IuICAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbWZwbWF0aD0zODciIH0gKi8KLSAKLSAjaW5jbHVkZSAiZnVuY3NwZWMtNTYuaW5jIgotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYwotaW5kZXggM2ZiZGM4ODFkZGEuLjZiNGQ5ZDEyNTJhIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1nZW5lcmFsLXJlZ3Mtb25seSAtbW5vLWNsZCAtbW5vLWlhbWN1IC1tODAzODciIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB0eXBlZGVmIHVuc2lnbmVkIGludCB1d29yZF90IF9fYXR0cmlidXRlX18gKChtb2RlIChfX3dvcmRfXykpKTsKLSAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCi1pbmRleCA1ZDQ5ZTZlNzdmZS4uMWRlMmRiOTJiZGQgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gcnVuIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD14ODYtNjQgLW1zc2U0YSAtbWZtYTQgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgYWJvcnQgKHZvaWQpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYwotaW5kZXggZmExNzY5YjYyZmIuLmY3OWZiMTI3MjZmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTyAtbW5vLXNzZSAtV25vLXBzYWJpIC1tdHVuZT1nZW5lcmljIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHN0cnVjdCBBCi0geyAKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCi1pbmRleCAyZTg5ZmY3ZDgxZC4uNjMzOWJmNmI3MzYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHRhcmdldC81MzQyNSAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KLSAKLSB0eXBlZGVmIGRvdWJsZSBfX3YyZGYgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoMTYpKSk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYwotaW5kZXggNjFmNjI4M2RiZTkuLjJjNWE1NWYwYWMzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTM0MjUgKi8KLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIC8qIHsgZGctc2tpcC1pZiAibm8gU1NFIHZlY3RvciIgeyB4ODZfNjQtKi1taW5ndyogfSB9ICovCi0gCi0gdHlwZWRlZiBmbG9hdCBfX3Yyc2YgX19hdHRyaWJ1dGVfXyAoKF9fdmVjdG9yX3NpemVfXyAoOCkpKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKLWluZGV4IDIzMzY2ZDA5MDlkLi45ODEwZTNhYmI3NiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLSAvKiB7IGRnLXJlcXVpcmUtZWZmZWN0aXZlLXRhcmdldCBtYXliZV94MzIgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmciIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbW5vLW1teCAtbXgzMiAtbWFkZHJlc3MtbW9kZT1sb25nIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQzMl90OwotIHR5cGVkZWYgdWludDMyX3QgRWxmMzJfV29yZDsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKLWluZGV4IDk2MDA2YjNlMzM4Li40Mjg3ZTQ1MzhiZiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiB0YXJnZXQvNTk2NDQgKi8KLSAvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCBscDY0IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mZnJlZXN0YW5kaW5nIC1tbm8tc3NlIC1tcHJlZmVycmVkLXN0YWNrLWJvdW5kYXJ5PTMgLW1hY2N1bXVsYXRlLW91dGdvaW5nLWFyZ3MgLW1uby1yZWQtem9uZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSAvKiBUaGlzIHRlc3QgdXNlcyBfX2J1aWx0aW5fdHJhcCAoKSBpbnN0ZWFkIG9mIGUuZy4gYWJvcnQsCi0gICAgYmVjYXVzZSBkdWUgdG8gLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyBpdCBzaG91bGQgbm90IGNhbGwKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKLWluZGV4IGJmYjhjNDcwM2ViLi5lZDA0Y2YxODFmMyAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHZvaWQgZm9vICgpCi0gewotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKLWluZGV4IDRlMTEyYzg4ZDA3Li5iY2ZiMzk2YTY4ZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgcnRsLW9wdGltaXphdGlvbi83MDQ2NyAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSB2b2lkIGZvbyAodW5zaWduZWQgbG9uZyBsb25nICopOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi1pbmRleCA2Y2RhMTUzNDMxMS4uMjZlMzdmNWI4YmEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni93YXJuLXZlY3Qtb3AtMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UiIH0gICovCi0rLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtV3ZlY3Rvci1vcGVyYXRpb24tcGVyZm9ybWFuY2UgLW1mcG1hdGg9Mzg3IiB9ICAqLwotICNkZWZpbmUgdmVjdG9yKGVsY291bnQsIHR5cGUpICBcCi0gX19hdHRyaWJ1dGVfXygodmVjdG9yX3NpemUoKGVsY291bnQpKnNpemVvZih0eXBlKSkpKSB0eXBlCi0gCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM4LVJlLWludHJvZHVjZS1zcGUtY29tbWFuZGxpbmUtb3B0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzgtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGU4ODkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwMzgtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotRnJvbSBmMGJlYTk2NDM0YWM0NzhjM2NmZjhjMjlkZDk3Y2NjZmFjNWIzNWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgNiBKdW4gMjAxOCAxMjoxMDoyMiAtMDcwMAotU3ViamVjdDogW1BBVENIIDM4LzQwXSBSZS1pbnRyb2R1Y2Ugc3BlIGNvbW1hbmRsaW5lIG9wdGlvbnMKLQotVGhpcyBzaG91bGQgZW5zdXJlIHRoYXQgd2Uga2VlcCBhY2NlcHRpbmcKLXNwZSBvcHRpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU1BFIHBvcnQgaXMgcmVtb3ZlZCBmcm9tIHJzNjAwIHBvcnRdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IHwgMTIgKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci1pbmRleCBhY2U4YTQ3NzU1MC4uZDZhOGY4MjVkODggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0Ci1AQCAtMzY1LDYgKzM2NSwxOCBAQCBtZGVidWc9Ci0gVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIEpvaW5lZAotIC1tZGVidWc9CUVuYWJsZSBkZWJ1ZyBvdXRwdXQuCi0gCi0rbXNwZQotK1RhcmdldCBWYXIocnM2MDAwX3NwZSkgU2F2ZQotK0dlbmVyYXRlIFNQRSBTSU1EIGluc3RydWN0aW9ucyBvbiBFNTAwLgotKwotK21hYmk9c3BlCi0rVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSkgU2F2ZQotK1VzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgotKwotK21hYmk9bm8tc3BlCi0rVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfc3BlX2FiaSwgMCkKLStEbyBub3QgdXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCi0rCi0gbWFiaT1hbHRpdmVjCi0gVGFyZ2V0IFJlamVjdE5lZ2F0aXZlIFZhcihyczYwMDBfYWx0aXZlY19hYmkpIFNhdmUKLSBVc2UgdGhlIEFsdGlWZWMgQUJJIGV4dGVuc2lvbnMuCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM5LXJpc2N2LURpc2FibGUtbXVsdGlsaWItZm9yLU9FLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDAzOS1yaXNjdi1EaXNhYmxlLW11bHRpbGliLWZvci1PRS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdiMjIyZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDM5LXJpc2N2LURpc2FibGUtbXVsdGlsaWItZm9yLU9FLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSAyNGY3NDQ0NGMwMGM2YzliZjA3NmZiMDAyNjE0ZWJmNmRlYzMxZjFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjggRGVjIDIwMTggMDk6NTk6NTMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzOS80MF0gcmlzY3Y6IERpc2FibGUgbXVsdGlsaWIgZm9yIE9FCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL3Jpc2N2L3QtbGludXggfCA2ICsrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXggYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKLWluZGV4IDIxNmQyNzc2YTE4Li5lNGQ4MTc2MjFmYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eAotKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4Ci1AQCAtMSwzICsxLDUgQEAKLSAjIE9ubHkgWExFTiBhbmQgQUJJIGFmZmVjdCBMaW51eCBtdWx0aWxpYiBkaXIgbmFtZXMsIGUuZy4gL2xpYjMyL2lscDMyZC8KLS1NVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCi0rI01VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCi0rTVVMVElMSUJfRElSTkFNRVMgOj0gLiAuCi0rI01VTFRJTElCX09TRElSTkFNRVMgOj0gJChwYXRzdWJzdCBsaWIlLC4uL2xpYiUsJChNVUxUSUxJQl9ESVJOQU1FUykpCi0rTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0MC1wb3dlcnBjLXBvd2VycGM2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0MC1wb3dlcnBjLXBvd2VycGM2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmJhMTYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDAtcG93ZXJwYy1wb3dlcnBjNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gNGJkMGEzODY2ZjMwMjcyNWNiNGVkZGNhZGRhZWVjZTY0OTAwYzQyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlcmhleSBQb3BvdnljaCA8c2VyaGUucG9wb3Z5Y2hAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxMSBEZWMgMjAxOCAwMjozMDo1MCAtMDUwMAotU3ViamVjdDogW1BBVENIIDQwLzQwXSBwb3dlcnBjL3Bvd2VycGM2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBTZXJoZXkgUG9wb3Z5Y2ggPHNlcmhlLnBvcG92eWNoQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDYxOWUxMTNlMmI4Li5lZThiNDRmOTM3NCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDIxLDkgKzQyMSw5IEBAIGV4dGVybiBpbnQgZG90X3N5bWJvbHM7Ci0gI2VuZGlmCi0gCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIi9saWIvbGQtbXVzbC1wb3dlcnBjIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiL2xpYi9sZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSsgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGM2NCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSAKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0MS1BZGQtYS1yZWN1cnNpb24tbGltaXQtdG8tbGliaWJlcnR5LXMtZGVtYW5nbGluZy1jb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0MS1BZGQtYS1yZWN1cnNpb24tbGltaXQtdG8tbGliaWJlcnR5LXMtZGVtYW5nbGluZy1jb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzMwM2I2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDEtQWRkLWEtcmVjdXJzaW9uLWxpbWl0LXRvLWxpYmliZXJ0eS1zLWRlbWFuZ2xpbmctY29kZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyNSArMCwwIEBACi1Gcm9tIGUxNzQ0ZTExYjFjMmIzNmY5MWE4ODQ3YjYxYmFmYjhjNWU3NDA3YWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBuaWNrYyA8bmlja2NAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogRnJpLCA3IERlYyAyMDE4IDEwOjMzOjMwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBhIHJlY3Vyc2lvbiBsaW1pdCB0byBsaWJpYmVydHkncyBkZW1hbmdsaW5nIGNvZGUuIFRoZQotIGxpbWl0IGlzIGVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0IGNhbiBiZSBkaXNhYmxlZCB2aWEgYSBuZXcgZGVtYW5nbGluZyBvcHRpb24uCi0KLWluY2x1ZGUJKiBkZW1hbmdsZS5oIChETUdMX05PX1JFQ1VSU0VfTElNSVQpOiBEZWZpbmUuCi0gICAgICAgIChERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpOiBEZWZpbmUKLQotCVBSIDg3NjgxCi0JUFIgODc2NzUKLQlQUiA4NzYzNgotCVBSIDg3MzUwCi0JUFIgODczMzUKLWxpYmliZXJ0eSAqIGNwLWRlbWFuZ2xlLmggKHN0cnVjdCBkX2luZm8pOiBBZGQgcmVjdXJzaW9uX2xldmVsIGZpZWxkLgotCSogY3AtZGVtYW5nbGUuYyAoZF9mdW5jdGlvbl90eXBlKTogQWRkIHJlY3Vyc2lvbiBjb3VudGVyLgotCUlmIHRoZSByZWN1cnNpb24gbGltaXQgaXMgcmVhY2hlZCBhbmQgdGhlIGNoZWNrIGlzIG5vdCBkaXNhYmxlZCwKLQl0aGVuIHJldHVybiB3aXRoIGEgZmFpbHVyZSByZXN1bHQuCi0JKGNwbHVzX2RlbWFuZ2xlX2luaXRfaW5mbyk6IEluaXRpYWxpc2UgdGhlIHJlY3Vyc2lvbl9sZXZlbCBmaWVsZC4KLSAgICAgICAgKGRfZGVtYW5nbGVfY2FsbGJhY2spOiBJZiB0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIGVuYWJsZWQsIGNoZWNrCi0JZm9yIGEgbWFuZ2xlZCBzdHJpbmcgdGhhdCBpcyBzbyBsb25nIHRoYXQgdGhlcmUgaXMgbm90IGVub3VnaAotCXN0YWNrIHNwYWNlIGZvciB0aGUgbG9jYWwgYXJyYXlzLgotICAgICAgICAqIGNwbHVzLWRlbS5jIChzdHJ1Y3Qgd29yayk6IEFkZCByZWN1cnNpb25fbGV2ZWwgZmllbGQuCi0JKHNxdWFuZ2xlX21vcF91cCk6IFNldCB0aGUgbnVtYiBhbmQgbnVtayBmaWVsZHMgdG8gemVyby4KLQkod29ya19zdHVmZl9jb3B5X3RvX2Zyb20pOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBidHlwZXZlYyBvcgotCWt0eXBldmVjIGZpZWxkIGlzIE5VTEwuCi0JKGRlbWFuZ2xlX25lc3RlZF9hcmdzKTogQWRkIHJlY3Vyc2lvbiBjb3VudGVyLiAgSWYKLQl0aGUgcmVjdXJzaW9uIGxpbWl0IGlzIG5vdCBkaXNhYmxlZCBhbmQgcmVhY2hlZCwgcmV0dXJuIHdpdGggYQotCWZhaWx1cmUgcmVzdWx0LgotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyNjY4ODYgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLUNWRTogQ1ZFLTIwMTgtMTg0ODQKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9jb21taXQvMDNlNTE3NDZlZDk4ZDkxMDY4MDNmNjAwOWViZDcxZWE2NzBhZDNiOV0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBpbmNsdWRlL0NoYW5nZUxvZyAgICAgICB8ICA1ICsrKysrCi0gaW5jbHVkZS9kZW1hbmdsZS5oICAgICAgfCAxMSArKysrKysrKysrKwotIGxpYmliZXJ0eS9DaGFuZ2VMb2cgICAgIHwgMjMgKysrKysrKysrKysrKysrKysrKysrKwotIGxpYmliZXJ0eS9jcC1kZW1hbmdsZS5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIGxpYmliZXJ0eS9jcC1kZW1hbmdsZS5oIHwgIDMgKysrCi0gbGliaWJlcnR5L2NwbHVzLWRlbS5jICAgfCAzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQotIDYgZmlsZXMgY2hhbmdlZCwgMTE3IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9DaGFuZ2VMb2cgYi9pbmNsdWRlL0NoYW5nZUxvZwotaW5kZXggMDJhYjMzNi4uODhiMDY0OCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvQ2hhbmdlTG9nCi0rKysgYi9pbmNsdWRlL0NoYW5nZUxvZwotQEAgLTIsNiArMiwxMSBAQAotIAotIAkqIEdDQyA4LjMuMCByZWxlYXNlZC4KLSAKLSsyMDE4LTEyLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwkqIGRlbWFuZ2xlLmggKERNR0xfTk9fUkVDVVJTRV9MSU1JVCk6IERlZmluZS4KLSsJKERFTUFOR0xFX1JFQ1VSU0lPTl9MSU1JVCk6IERlZmluZQotKwotIDIwMTgtMDctMjYgIFJlbGVhc2UgTWFuYWdlcgotIAotIAkqIEdDQyA4LjIuMCByZWxlYXNlZC4KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2RlbWFuZ2xlLmggYi9pbmNsdWRlL2RlbWFuZ2xlLmgKLWluZGV4IGI4ZDU3Y2YuLjliYjhhMTkgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2RlbWFuZ2xlLmgKLSsrKyBiL2luY2x1ZGUvZGVtYW5nbGUuaAotQEAgLTY4LDYgKzY4LDE3IEBAIGV4dGVybiAiQyIgewotIC8qIElmIG5vbmUgb2YgdGhlc2UgYXJlIHNldCwgdXNlICdjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUnIGFzIHRoZSBkZWZhdWx0LiAqLwotICNkZWZpbmUgRE1HTF9TVFlMRV9NQVNLIChETUdMX0FVVE98RE1HTF9HTlV8RE1HTF9MVUNJRHxETUdMX0FSTXxETUdMX0hQfERNR0xfRURHfERNR0xfR05VX1YzfERNR0xfSkFWQXxETUdMX0dOQVR8RE1HTF9ETEFOR3xETUdMX1JVU1QpCi0gCi0rLyogRGlzYWJsZSBhIGxpbWl0IG9uIHRoZSBkZXB0aCBvZiByZWN1cnNpb24gaW4gbWFuZ2xlZCBzdHJpbmdzLgotKyAgIE5vdGUgaWYgdGhpcyBsaW1pdCBpcyBkaXNhYmxlZCB0aGVuIHN0YWNrIGV4aGF1c3Rpb24gaXMgcG9zc2libGUgd2hlbgotKyAgIGRlbWFuZ2xpbmcgcGF0aG9sb2dpY2FsbHkgY29tcGxpY2F0ZWQgc3RyaW5ncy4gIEJ1ZyByZXBvcnRzIGFib3V0IHN0YWNrCi0rICAgZXhoYXVzdGlvbiB3aGVuIHRoZSBvcHRpb24gaXMgZW5hYmxlZCB3aWxsIGJlIHJlamVjdGVkLiAgKi8gIAotKyNkZWZpbmUgRE1HTF9OT19SRUNVUlNFX0xJTUlUICgxIDw8IDE4KQkKLSsKLSsvKiBJZiBETUdMX05PX1JFQ1VSU0VfTElNSVQgaXMgbm90IGVuYWJsZWQsIHRoZW4gdGhpcyBpcyB0aGUgdmFsdWUgdXNlZCBhcwotKyAgIHRoZSBtYXhpbXVtIGRlcHRoIG9mIHJlY3Vyc2lvbiBhbGxvd2VkLiAgSXQgc2hvdWxkIGJlIGVub3VnaCBmb3IgYW55Ci0rICAgcmVhbC13b3JsZCBtYW5nbGVkIG5hbWUuICAqLwotKyNkZWZpbmUgREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUIDEwMjQKLSsgIAotIC8qIEVudW1lcmF0aW9uIG9mIHBvc3NpYmxlIGRlbWFuZ2xpbmcgc3R5bGVzLgotIAotICAgIEx1Y2lkIGFuZCBBUk0gc3R5bGVzIGFyZSBzdGlsbCBrZXB0IGxvZ2ljYWxseSBkaXN0aW5jdCwgZXZlbiB0aG91Z2gKLWRpZmYgLS1naXQgYS9saWJpYmVydHkvQ2hhbmdlTG9nIGIvbGliaWJlcnR5L0NoYW5nZUxvZwotaW5kZXggMWRkMDVkYS4uMmY3NzAzOCAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLSsrKyBiL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLUBAIC05LDYgKzksMjkgQEAKLSAJKHNpbXBsZV9vYmplY3RfY29weV9sdG9fZGVidWdfc2VjdGlvbnMpOiBDcmVhdGUgZmlsZSBpbiBiaW5hcnkKLSAJbW9kZS4KLSAKLSsyMDE4LTEyLTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotKwotKwlQUiA4NzY4MQotKwlQUiA4NzY3NQotKwlQUiA4NzYzNgotKwlQUiA4NzM1MAotKwlQUiA4NzMzNQotKwkqIGNwLWRlbWFuZ2xlLmggKHN0cnVjdCBkX2luZm8pOiBBZGQgcmVjdXJzaW9uX2xldmVsIGZpZWxkLgotKwkqIGNwLWRlbWFuZ2xlLmMgKGRfZnVuY3Rpb25fdHlwZSk6IEFkZCByZWN1cnNpb24gY291bnRlci4KLSsJSWYgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyByZWFjaGVkIGFuZCB0aGUgY2hlY2sgaXMgbm90IGRpc2FibGVkLAotKwl0aGVuIHJldHVybiB3aXRoIGEgZmFpbHVyZSByZXN1bHQuCi0rCShjcGx1c19kZW1hbmdsZV9pbml0X2luZm8pOiBJbml0aWFsaXNlIHRoZSByZWN1cnNpb25fbGV2ZWwgZmllbGQuCi0rCSAoZF9kZW1hbmdsZV9jYWxsYmFjayk6IElmIHRoZSByZWN1cnNpb24gbGltaXQgaXMgZW5hYmxlZCwgY2hlY2sKLSsJZm9yIGEgbWFuZ2xlZCBzdHJpbmcgdGhhdCBpcyBzbyBsb25nIHRoYXQgdGhlcmUgaXMgbm90IGVub3VnaAotKwlzdGFjayBzcGFjZSBmb3IgdGhlIGxvY2FsIGFycmF5cy4KLSsJICogY3BsdXMtZGVtLmMgKHN0cnVjdCB3b3JrKTogQWRkIHJlY3Vyc2lvbl9sZXZlbCBmaWVsZC4KLSsJKHNxdWFuZ2xlX21vcF91cCk6IFNldCB0aGUgbnVtYiBhbmQgbnVtayBmaWVsZHMgdG8gemVyby4KLSsJKHdvcmtfc3R1ZmZfY29weV90b19mcm9tKTogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEgYnR5cGV2ZWMgb3IKLSsJa3R5cGV2ZWMgZmllbGQgaXMgTlVMTC4KLSsJKGRlbWFuZ2xlX25lc3RlZF9hcmdzKTogQWRkIHJlY3Vyc2lvbiBjb3VudGVyLiAgSWYKLSsJdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBub3QgZGlzYWJsZWQgYW5kIHJlYWNoZWQsIHJldHVybiB3aXRoIGEKLSsJZmFpbHVyZSByZXN1bHQuCi0rCi0gMjAxOC0wNy0yNiAgUmVsZWFzZSBNYW5hZ2VyCi0gCi0gCSogR0NDIDguMi4wIHJlbGVhc2VkLgotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLWluZGV4IDNmMmEwOTcuLmMzNzRlNDYgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvY3AtZGVtYW5nbGUuYwotKysrIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLUBAIC0yODQzLDIxICsyODQzLDM1IEBAIGRfcmVmX3F1YWxpZmllciAoc3RydWN0IGRfaW5mbyAqZGksIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKnN1YikKLSBzdGF0aWMgc3RydWN0IGRlbWFuZ2xlX2NvbXBvbmVudCAqCi0gZF9mdW5jdGlvbl90eXBlIChzdHJ1Y3QgZF9pbmZvICpkaSkKLSB7Ci0tICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpyZXQ7Ci0rICBzdHJ1Y3QgZGVtYW5nbGVfY29tcG9uZW50ICpyZXQgPSBOVUxMOwotIAotLSAgaWYgKCEgZF9jaGVja19jaGFyIChkaSwgJ0YnKSkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tICBpZiAoZF9wZWVrX2NoYXIgKGRpKSA9PSAnWScpCi0rICBpZiAoKGRpLT5vcHRpb25zICYgRE1HTF9OT19SRUNVUlNFX0xJTUlUKSA9PSAwKQotICAgICB7Ci0tICAgICAgLyogRnVuY3Rpb24gaGFzIEMgbGlua2FnZS4gIFdlIGRvbid0IHByaW50IHRoaXMgaW5mb3JtYXRpb24uCi0tCSBGSVhNRTogV2Ugc2hvdWxkIHByaW50IGl0IGluIHZlcmJvc2UgbW9kZS4gICovCi0tICAgICAgZF9hZHZhbmNlIChkaSwgMSk7Ci0rICAgICAgaWYgKGRpLT5yZWN1cnNpb25fbGV2ZWwgPiBERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpCi0rCS8qIEZJWE1FOiBUaGVyZSBvdWdodCB0byBiZSBhIHdheSB0byByZXBvcnQKLSsJICAgdGhhdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGhhcyBiZWVuIHJlYWNoZWQuICAqLwotKwlyZXR1cm4gTlVMTDsKLSsKLSsgICAgICBkaS0+cmVjdXJzaW9uX2xldmVsICsrOwotICAgICB9Ci0tICByZXQgPSBkX2JhcmVfZnVuY3Rpb25fdHlwZSAoZGksIDEpOwotLSAgcmV0ID0gZF9yZWZfcXVhbGlmaWVyIChkaSwgcmV0KTsKLSAKLS0gIGlmICghIGRfY2hlY2tfY2hhciAoZGksICdFJykpCi0tICAgIHJldHVybiBOVUxMOwotKyAgaWYgKGRfY2hlY2tfY2hhciAoZGksICdGJykpCi0rICAgIHsKLSsgICAgICBpZiAoZF9wZWVrX2NoYXIgKGRpKSA9PSAnWScpCi0rCXsKLSsJICAvKiBGdW5jdGlvbiBoYXMgQyBsaW5rYWdlLiAgV2UgZG9uJ3QgcHJpbnQgdGhpcyBpbmZvcm1hdGlvbi4KLSsJICAgICBGSVhNRTogV2Ugc2hvdWxkIHByaW50IGl0IGluIHZlcmJvc2UgbW9kZS4gICovCi0rCSAgZF9hZHZhbmNlIChkaSwgMSk7Ci0rCX0KLSsgICAgICByZXQgPSBkX2JhcmVfZnVuY3Rpb25fdHlwZSAoZGksIDEpOwotKyAgICAgIHJldCA9IGRfcmVmX3F1YWxpZmllciAoZGksIHJldCk7Ci0rICAgICAgCi0rICAgICAgaWYgKCEgZF9jaGVja19jaGFyIChkaSwgJ0UnKSkKLSsJcmV0ID0gTlVMTDsKLSsgICAgfQotKwotKyAgaWYgKChkaS0+b3B0aW9ucyAmIERNR0xfTk9fUkVDVVJTRV9MSU1JVCkgPT0gMCkKLSsgICAgZGktPnJlY3Vyc2lvbl9sZXZlbCAtLTsKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotQEAgLTYxODgsNiArNjIwMiw3IEBAIGNwbHVzX2RlbWFuZ2xlX2luaXRfaW5mbyAoY29uc3QgY2hhciAqbWFuZ2xlZCwgaW50IG9wdGlvbnMsIHNpemVfdCBsZW4sCi0gICBkaS0+ZXhwYW5zaW9uID0gMDsKLSAgIGRpLT5pc19leHByZXNzaW9uID0gMDsKLSAgIGRpLT5pc19jb252ZXJzaW9uID0gMDsKLSsgIGRpLT5yZWN1cnNpb25fbGV2ZWwgPSAwOwotIH0KLSAKLSAvKiBJbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIGRlbWFuZ2xlci4gIElmIE1BTkdMRUQgaXMgYSBnKysgdjMgQUJJCi1AQCAtNjIyNyw2ICs2MjQyLDIwIEBAIGRfZGVtYW5nbGVfY2FsbGJhY2sgKGNvbnN0IGNoYXIgKm1hbmdsZWQsIGludCBvcHRpb25zLAotIAotICAgY3BsdXNfZGVtYW5nbGVfaW5pdF9pbmZvIChtYW5nbGVkLCBvcHRpb25zLCBzdHJsZW4gKG1hbmdsZWQpLCAmZGkpOwotIAotKyAgLyogUFIgODc2NzUgLSBDaGVjayBmb3IgYSBtYW5nbGVkIHN0cmluZyB0aGF0IGlzIHNvIGxvbmcKLSsgICAgIHRoYXQgd2UgZG8gbm90IGhhdmUgZW5vdWdoIHN0YWNrIHNwYWNlIHRvIGRlbWFuZ2xlIGl0LiAgKi8KLSsgIGlmICgoKG9wdGlvbnMgJiBETUdMX05PX1JFQ1VSU0VfTElNSVQpID09IDApCi0rICAgICAgLyogVGhpcyBjaGVjayBpcyBhIGJpdCBhcmJpdHJhcnksIHNpbmNlIHdoYXQgd2UgcmVhbGx5IHdhbnQgdG8gZG8gaXMgdG8KLSsJIGNvbXBhcmUgdGhlIHNpemVzIG9mIHRoZSBkaS5jb21wcyBhbmQgZGkuc3VicyBhcnJheXMgYWdhaW5zdCB0aGUKLSsJIGFtb3VudCBvZiBzdGFjayBzcGFjZSByZW1haW5pbmcuICBCdXQgdGhlcmUgaXMgbm8gcG9ydGFibGUgd2F5IHRvIGRvCi0rCSB0aGlzLCBzbyBpbnN0ZWFkIHdlIHVzZSB0aGUgcmVjdXJzaW9uIGxpbWl0IGFzIGEgZ3VpZGUgdG8gdGhlIG1heGltdW0KLSsJIHNpemUgb2YgdGhlIGFycmF5cy4gICovCi0rICAgICAgJiYgKHVuc2lnbmVkIGxvbmcpIGRpLm51bV9jb21wcyA+IERFTUFOR0xFX1JFQ1VSU0lPTl9MSU1JVCkKLSsgICAgewotKyAgICAgIC8qIEZJWE1FOiBXZSBuZWVkIGEgd2F5IHRvIGluZGljYXRlIHRoYXQgYSBzdGFjayBsaW1pdCBoYXMgYmVlbiByZWFjaGVkLiAgKi8KLSsgICAgICByZXR1cm4gMDsKLSsgICAgfQotKwotICAgewotICNpZmRlZiBDUF9EWU5BTUlDX0FSUkFZUwotICAgICBfX2V4dGVuc2lvbl9fIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgY29tcHNbZGkubnVtX2NvbXBzXTsKLWRpZmYgLS1naXQgYS9saWJpYmVydHkvY3AtZGVtYW5nbGUuaCBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5oCi1pbmRleCA1MWI4YTI0Li5kODdhODMwIDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmgKLSsrKyBiL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5oCi1AQCAtMTIyLDYgKzEyMiw5IEBAIHN0cnVjdCBkX2luZm8KLSAgIC8qIE5vbi16ZXJvIGlmIHdlIGFyZSBwYXJzaW5nIHRoZSB0eXBlIG9wZXJhbmQgb2YgYSBjb252ZXJzaW9uCi0gICAgICBvcGVyYXRvciwgYnV0IG5vdCB3aGVuIGluIGFuIGV4cHJlc3Npb24uICAqLwotICAgaW50IGlzX2NvbnZlcnNpb247Ci0rICAvKiBJZiBETUdMX05PX1JFQ1VSU0VfTElNSVQgaXMgbm90IGFjdGl2ZSB0aGVuIHRoaXMgaXMgc2V0IHRvCi0rICAgICB0aGUgY3VycmVudCByZWN1cnNpb24gbGV2ZWwuICAqLwotKyAgdW5zaWduZWQgaW50IHJlY3Vyc2lvbl9sZXZlbDsKLSB9OwotIAotIC8qIFRvIGF2b2lkIHJ1bm5pbmcgcGFzdCB0aGUgZW5kaW5nICdcMCcsIGRvbid0OgotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9jcGx1cy1kZW0uYyBiL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotaW5kZXggNmQ1OGJkOC4uOGI5NjQ2ZiAxMDA2NDQKLS0tLSBhL2xpYmliZXJ0eS9jcGx1cy1kZW0uYwotKysrIGIvbGliaWJlcnR5L2NwbHVzLWRlbS5jCi1AQCAtMTQ2LDYgKzE0Niw3IEBAIHN0cnVjdCB3b3JrX3N0dWZmCi0gICBpbnQgKnByb2N0eXBldmVjOyAgICAgLyogSW5kaWNlcyBvZiBjdXJyZW50bHkgcHJvY2Vzc2VkIHJlbWVtYmVyZWQgdHlwZXZlY3MuICAqLwotICAgaW50IHByb2N0eXBldmVjX3NpemU7Ci0gICBpbnQgbnByb2N0eXBlczsKLSsgIHVuc2lnbmVkIGludCByZWN1cnNpb25fbGV2ZWw7Ci0gfTsKLSAKLSAjZGVmaW5lIFBSSU5UX0FOU0lfUVVBTElGSUVSUyAod29yayAtPiBvcHRpb25zICYgRE1HTF9BTlNJKQotQEAgLTEyOTIsMTIgKzEyOTMsMTQgQEAgc3F1YW5nbGVfbW9wX3VwIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaykKLSAgICAgICBmcmVlICgoY2hhciAqKSB3b3JrIC0+IGJ0eXBldmVjKTsKLSAgICAgICB3b3JrLT5idHlwZXZlYyA9IE5VTEw7Ci0gICAgICAgd29yay0+YnNpemUgPSAwOwotKyAgICAgIHdvcmstPm51bWIgPSAwOwotICAgICB9Ci0gICBpZiAod29yayAtPiBrdHlwZXZlYyAhPSBOVUxMKQotICAgICB7Ci0gICAgICAgZnJlZSAoKGNoYXIgKikgd29yayAtPiBrdHlwZXZlYyk7Ci0gICAgICAgd29yay0+a3R5cGV2ZWMgPSBOVUxMOwotICAgICAgIHdvcmstPmtzaXplID0gMDsKLSsgICAgICB3b3JrLT5udW1rID0gMDsKLSAgICAgfQotIH0KLSAKLUBAIC0xMzMxLDggKzEzMzQsMTUgQEAgd29ya19zdHVmZl9jb3B5X3RvX2Zyb20gKHN0cnVjdCB3b3JrX3N0dWZmICp0bywgc3RydWN0IHdvcmtfc3R1ZmYgKmZyb20pCi0gCi0gICBmb3IgKGkgPSAwOyBpIDwgZnJvbS0+bnVtazsgaSsrKQotICAgICB7Ci0tICAgICAgaW50IGxlbiA9IHN0cmxlbiAoZnJvbS0+a3R5cGV2ZWNbaV0pICsgMTsKLSsgICAgICBpbnQgbGVuOwotKwotKyAgICAgIGlmIChmcm9tLT5rdHlwZXZlY1tpXSA9PSBOVUxMKQotKwl7Ci0rCSAgdG8tPmt0eXBldmVjW2ldID0gTlVMTDsKLSsJICBjb250aW51ZTsKLSsJfQotIAotKyAgICAgIGxlbiA9IHN0cmxlbiAoZnJvbS0+a3R5cGV2ZWNbaV0pICsgMTsKLSAgICAgICB0by0+a3R5cGV2ZWNbaV0gPSBYTkVXVkVDIChjaGFyLCBsZW4pOwotICAgICAgIG1lbWNweSAodG8tPmt0eXBldmVjW2ldLCBmcm9tLT5rdHlwZXZlY1tpXSwgbGVuKTsKLSAgICAgfQotQEAgLTEzNDIsOCArMTM1MiwxNSBAQCB3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSAoc3RydWN0IHdvcmtfc3R1ZmYgKnRvLCBzdHJ1Y3Qgd29ya19zdHVmZiAqZnJvbSkKLSAKLSAgIGZvciAoaSA9IDA7IGkgPCBmcm9tLT5udW1iOyBpKyspCi0gICAgIHsKLS0gICAgICBpbnQgbGVuID0gc3RybGVuIChmcm9tLT5idHlwZXZlY1tpXSkgKyAxOwotKyAgICAgIGludCBsZW47Ci0rCi0rICAgICAgaWYgKGZyb20tPmJ0eXBldmVjW2ldID09IE5VTEwpCi0rCXsKLSsJICB0by0+YnR5cGV2ZWNbaV0gPSBOVUxMOwotKwkgIGNvbnRpbnVlOwotKwl9Ci0gCi0rICAgICAgbGVuID0gc3RybGVuIChmcm9tLT5idHlwZXZlY1tpXSkgKyAxOwotICAgICAgIHRvLT5idHlwZXZlY1tpXSA9IFhORVdWRUMgKGNoYXIgLCBsZW4pOwotICAgICAgIG1lbWNweSAodG8tPmJ0eXBldmVjW2ldLCBmcm9tLT5idHlwZXZlY1tpXSwgbGVuKTsKLSAgICAgfQotQEAgLTE0MDEsNiArMTQxOCw3IEBAIGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrKQotIAotICAgICAgIGZyZWUgKChjaGFyKikgd29yay0+dG1wbF9hcmd2ZWMpOwotICAgICAgIHdvcmstPnRtcGxfYXJndmVjID0gTlVMTDsKLSsgICAgICB3b3JrLT5udG1wbF9hcmdzID0gMDsKLSAgICAgfQotICAgaWYgKHdvcmstPnByZXZpb3VzX2FyZ3VtZW50KQotICAgICB7Ci1AQCAtNDQ3Nyw2ICs0NDk1LDcgQEAgcmVtZW1iZXJfQnR5cGUgKHN0cnVjdCB3b3JrX3N0dWZmICp3b3JrLCBjb25zdCBjaGFyICpzdGFydCwKLSB9Ci0gCi0gLyogTG9zZSBhbGwgdGhlIGluZm8gcmVsYXRlZCB0byBCIGFuZCBLIHR5cGUgY29kZXMuICovCi0rCi0gc3RhdGljIHZvaWQKLSBmb3JnZXRfQl9hbmRfS190eXBlcyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmspCi0gewotQEAgLTQ1MDIsNiArNDUyMSw3IEBAIGZvcmdldF9CX2FuZF9LX3R5cGVzIChzdHJ1Y3Qgd29ya19zdHVmZiAqd29yaykKLSAJfQotICAgICB9Ci0gfQotKwotIC8qIEZvcmdldCB0aGUgcmVtZW1iZXJlZCB0eXBlcywgYnV0IG5vdCB0aGUgdHlwZSB2ZWN0b3IgaXRzZWxmLiAgKi8KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTQ2OTYsNiArNDcxNiwxNiBAQCBkZW1hbmdsZV9uZXN0ZWRfYXJncyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLAotICAgaW50IHJlc3VsdDsKLSAgIGludCBzYXZlZF9ucmVwZWF0czsKLSAKLSsgIGlmICgod29yay0+b3B0aW9ucyAmIERNR0xfTk9fUkVDVVJTRV9MSU1JVCkgPT0gMCkKLSsgICAgewotKyAgICAgIGlmICh3b3JrLT5yZWN1cnNpb25fbGV2ZWwgPiBERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpCi0rCS8qIEZJWE1FOiBUaGVyZSBvdWdodCB0byBiZSBhIHdheSB0byByZXBvcnQKLSsJICAgdGhhdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGhhcyBiZWVuIHJlYWNoZWQuICAqLwotKwlyZXR1cm4gMDsKLSsKLSsgICAgICB3b3JrLT5yZWN1cnNpb25fbGV2ZWwgKys7Ci0rICAgIH0KLSsKLSAgIC8qIFRoZSBHKysgbmFtZS1tYW5nbGluZyBhbGdvcml0aG0gZG9lcyBub3QgcmVtZW1iZXIgdHlwZXMgb24gbmVzdGVkCi0gICAgICBhcmd1bWVudCBsaXN0cywgdW5sZXNzIC1mc3F1YW5nbGluZyBpcyB1c2VkLCBhbmQgaW4gdGhhdCBjYXNlIHRoZQotICAgICAgdHlwZSB2ZWN0b3IgdXBkYXRlZCBieSByZW1lbWJlcl90eXBlIGlzIG5vdCB1c2VkLiAgU28sIHdlIHR1cm4KLUBAIC00NzIyLDYgKzQ3NTIsOSBAQCBkZW1hbmdsZV9uZXN0ZWRfYXJncyAoc3RydWN0IHdvcmtfc3R1ZmYgKndvcmssIGNvbnN0IGNoYXIgKiptYW5nbGVkLAotICAgLS13b3JrLT5mb3JnZXR0aW5nX3R5cGVzOwotICAgd29yay0+bnJlcGVhdHMgPSBzYXZlZF9ucmVwZWF0czsKLSAKLSsgIGlmICgod29yay0+b3B0aW9ucyAmIERNR0xfTk9fUkVDVVJTRV9MSU1JVCkgPT0gMCkKLSsgICAgLS13b3JrLT5yZWN1cnNpb25fbGV2ZWw7Ci0rCi0gICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0Mi1QUi1kZWJ1Zy04Njk2NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDItUFItZGVidWctODY5NjQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5YjVkMzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy04LjMvMDA0Mi1QUi1kZWJ1Zy04Njk2NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLUZyb20gYmViOTIxZTExMDZiNWJjYmIwYzZlMmJlODRiMjQxMzI3ZTJmZmM1MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IGxhdyA8bGF3QDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IE1vbiwgMjUgTWFyIDIwMTkgMjE6MTk6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCVBSIGRlYnVnLzg2OTY0IAkqIGR3YXJmMm91dC5jCi0gKHByZW1hcmtfdXNlZF92YXJpYWJsZXMpOiBOZXcgZnVuY3Rpb24uIAkocHJ1bmVfdW51c2VkX3R5cGVzX3dhbGspOiBEbwotIG5vdCBtYXJrIG5vdCBwcmVtYXJrZWQgZXh0ZXJuYWwgCXZhcmlhYmxlcy4gCShwcnVuZV91bnVzZWRfdHlwZXMpOgotIENhbGwgcHJlbWFya191c2VkX3ZhcmlhYmxlcy4KLQotCSogZ2NjLmRnL2RlYnVnL2R3YXJmMi9wcjg2OTY0LmM6IE5ldyB0ZXN0Y2FzZS4KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvdHJ1bmtAMjY5OTI1IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotLS0tCi0gZ2NjL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4ICsrKysrKwotIGdjYy9kd2FyZjJvdXQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzMiArKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2MvQ2hhbmdlTG9nCi1pbmRleCAyMDc1NDgwY2EyYi4uY2RjZTUzOWFjNmYgMTAwNjQ0Ci0tLS0gYS9nY2MvQ2hhbmdlTG9nCi0rKysgYi9nY2MvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDExIEBACi0rMjAxOS0wMy0yNSAgSm9oYW4gS2FybHNzb24gPGpvaGFuLmthcmxzc29uQGVuZWEuY29tPgotKwotKwlQUiBkZWJ1Zy84Njk2NAotKwkqIGR3YXJmMm91dC5jIChwcmVtYXJrX3VzZWRfdmFyaWFibGVzKTogTmV3IGZ1bmN0aW9uLgotKwkocHJ1bmVfdW51c2VkX3R5cGVzX3dhbGspOiBEbyBub3QgbWFyayBub3QgcHJlbWFya2VkIGV4dGVybmFsCi0rCXZhcmlhYmxlcy4KLSsJKHBydW5lX3VudXNlZF90eXBlcyk6IENhbGwgcHJlbWFya191c2VkX3ZhcmlhYmxlcy4KLSsKLSAyMDE5LTAyLTIyICBSZWxlYXNlIE1hbmFnZXIKLSAKLSAJKiBHQ0MgOC4zLjAgcmVsZWFzZWQuCi1kaWZmIC0tZ2l0IGEvZ2NjL2R3YXJmMm91dC5jIGIvZ2NjL2R3YXJmMm91dC5jCi1pbmRleCBhZThiZGVlOTk4MS4uYjlhNjI0ZTFhYzcgMTAwNjQ0Ci0tLS0gYS9nY2MvZHdhcmYyb3V0LmMKLSsrKyBiL2djYy9kd2FyZjJvdXQuYwotQEAgLTIyNjU4LDYgKzIyNjU4LDIxIEBAIHByZW1hcmtfdHlwZXNfdXNlZF9ieV9nbG9iYWxfdmFycyAodm9pZCkKLSAgICAgICAtPnRyYXZlcnNlPHZvaWQgKiwgcHJlbWFya190eXBlc191c2VkX2J5X2dsb2JhbF92YXJzX2hlbHBlcj4gKE5VTEwpOwotIH0KLSAKLSsvKiBNYXJrIGFsbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgc3ltdGFiIGFzIHBlcmVubmlhbC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStwcmVtYXJrX3VzZWRfdmFyaWFibGVzICh2b2lkKQotK3sKLSsgIC8qIE1hcmsgRElFcyBpbiB0aGUgc3ltdGFiIGFzIHVzZWQuICAqLwotKyAgdmFycG9vbF9ub2RlICp2YXI7Ci0rICBGT1JfRUFDSF9WQVJJQUJMRSAodmFyKQotKyAgICB7Ci0rICAgICAgZHdfZGllX3JlZiBkaWUgPSBsb29rdXBfZGVjbF9kaWUgKHZhci0+ZGVjbCk7Ci0rICAgICAgaWYgKGRpZSkKLSsJZGllLT5kaWVfcGVyZW5uaWFsX3AgPSAxOwotKyAgICB9Ci0rfQotKwotIC8qIEdlbmVyYXRlIGEgRFdfVEFHX2NhbGxfc2l0ZSBESUUgaW4gZnVuY3Rpb24gREVDTCB1bmRlciBTVUJSX0RJRQotICAgIGZvciBDQV9MT0MgY2FsbCBhcmcgbG9jIG5vZGUuICAqLwotIAotQEAgLTI5MjY0LDYgKzI5Mjc5LDE5IEBAIHBydW5lX3VudXNlZF90eXBlc193YWxrIChkd19kaWVfcmVmIGRpZSkKLSAKLSAgICAgICByZXR1cm47Ci0gCi0rICAgIGNhc2UgRFdfVEFHX3ZhcmlhYmxlOgotKyAgICAgIGlmIChmbGFnX2RlYnVnX29ubHlfdXNlZF9zeW1ib2xzKQotKwl7Ci0rCSAgaWYgKGRpZS0+ZGllX3BlcmVubmlhbF9wKQotKwkgICAgYnJlYWs7Ci0rCi0rCSAgLyogcHJlbWFya191c2VkX3ZhcmlhYmxlcyBtYXJrcyBleHRlcm5hbCB2YXJpYWJsZXMgLS0tIGRvbid0IG1hcmsKLSsJICAgICB0aGVtIGhlcmUuICAqLwotKwkgIGlmIChnZXRfQVQgKGRpZSwgRFdfQVRfZXh0ZXJuYWwpKQotKwkgICAgcmV0dXJuOwotKwl9Ci0rICAgICAgLyogRkFMTFRIUk9VR0ggKi8KLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICAvKiBNYXJrIGV2ZXJ5dGhpbmcgZWxzZS4gICovCi0gICAgICAgYnJlYWs7Ci1AQCAtMjkzOTAsNiArMjk0MTgsMTAgQEAgcHJ1bmVfdW51c2VkX3R5cGVzICh2b2lkKQotICAgLyogTWFyayB0eXBlcyB0aGF0IGFyZSB1c2VkIGluIGdsb2JhbCB2YXJpYWJsZXMuICAqLwotICAgcHJlbWFya190eXBlc191c2VkX2J5X2dsb2JhbF92YXJzICgpOwotIAotKyAgLyogTWFyayB2YXJpYWJsZXMgdXNlZCBpbiB0aGUgc3ltdGFiLiAgKi8KLSsgIGlmIChmbGFnX2RlYnVnX29ubHlfdXNlZF9zeW1ib2xzKQotKyAgICBwcmVtYXJrX3VzZWRfdmFyaWFibGVzICgpOwotKwotICAgLyogU2V0IHRoZSBtYXJrIG9uIG5vZGVzIHRoYXQgYXJlIGFjdHVhbGx5IHVzZWQuICAqLwotICAgcHJ1bmVfdW51c2VkX3R5cGVzX3dhbGsgKGNvbXBfdW5pdF9kaWUgKCkpOwotICAgZm9yIChub2RlID0gbGltYm9fZGllX2xpc3Q7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0KQotLS0gCi0yLjIxLjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDMtUFI4NTQzNC1QcmV2ZW50LXNwaWxsaW5nLW9mLXN0YWNrLXByb3RlY3Rvci1ndWFyZC1zLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zLzAwNDMtUFI4NTQzNC1QcmV2ZW50LXNwaWxsaW5nLW9mLXN0YWNrLXByb3RlY3Rvci1ndWFyZC1zLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE1MjA3Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy8wMDQzLVBSODU0MzQtUHJldmVudC1zcGlsbGluZy1vZi1zdGFjay1wcm90ZWN0b3ItZ3VhcmQtcy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MTMgKzAsMCBAQAotRnJvbSBmOTg0OTVkOTBiYTY2ZjY3ZmU5MjJhNGI5MjI5ZWE3ODcwNDFjNDE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogdGhvcHJlMDEgPHRob3ByZTAxQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgMjIgTm92IDIwMTggMTQ6NDY6MTcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gUFI4NTQzNDogUHJldmVudCBzcGlsbGluZyBvZiBzdGFjayBwcm90ZWN0b3IgZ3VhcmQncyBhZGRyZXNzCi0gb24gQVJNCi0KLUluIGNhc2Ugb2YgaGlnaCByZWdpc3RlciBwcmVzc3VyZSBpbiBQSUMgbW9kZSwgYWRkcmVzcyBvZiB0aGUgc3RhY2sKLXByb3RlY3RvcidzIGd1YXJkIGNhbiBiZSBzcGlsbGVkIG9uIEFSTSB0YXJnZXRzIGFzIHNob3duIGluIFBSODU0MzQsCi10aHVzIGFsbG93aW5nIGFuIGF0dGFja2VyIHRvIGNvbnRyb2wgd2hhdCB0aGUgY2FuYXJ5IHdvdWxkIGJlIGNvbXBhcmVkCi1hZ2FpbnN0LiBBUk0gZG9lcyBsYWNrIHN0YWNrX3Byb3RlY3Rfc2V0IGFuZCBzdGFja19wcm90ZWN0X3Rlc3QgaW5zbgotcGF0dGVybnMsIGRlZmluaW5nIHRoZW0gZG9lcyBub3QgaGVscCBhcyB0aGUgYWRkcmVzcyBpcyBleHBhbmRlZAotcmVndWxhcmx5IGFuZCB0aGUgcGF0dGVybnMgb25seSBkZWFsIHdpdGggdGhlIGNvcHkgYW5kIHRlc3Qgb2YgdGhlCi1ndWFyZCB3aXRoIHRoZSBjYW5hcnkuCi0KLVRoaXMgcHJvYmxlbSBkb2VzIG5vdCBvY2N1ciBmb3IgeDg2IHRhcmdldHMgYmVjYXVzZSB0aGUgUElDIGFjY2VzcyBhbmQKLXRoZSB0ZXN0IGNhbiBiZSBkb25lIGluIHRoZSBzYW1lIGluc3RydWN0aW9uLiBBYXJjaDY0IGlzIGV4ZW1wdCB0b28KLWJlY2F1c2UgUElDIGFjY2VzcyBpbnNuIHBhdHRlcm4gYXJlIG1vdiBvZiBVTlNQRUMgd2hpY2ggcHJldmVudHMgaXQgZnJvbQotdGhlIHNlY29uZCBhY2Nlc3MgaW4gdGhlIGVwaWxvZ3VlIGJlaW5nIENTRWQgaW4gY3NlX2xvY2FsIHBhc3Mgd2l0aCB0aGUKLWZpcnN0IGFjY2VzcyBpbiB0aGUgcHJvbG9ndWUuCi0KLVRoZSBhcHByb2FjaCBmb2xsb3dlZCBoZXJlIGlzIHRvIGNyZWF0ZSBuZXcgImNvbWJpbmVkIiBzZXQgYW5kIHRlc3QKLXN0YW5kYXJkIHBhdHRlcm4gbmFtZXMgdGhhdCB0YWtlIHRoZSB1bmV4cGFuZGVkIGd1YXJkIGFuZCBkbyB0aGUgc2V0IG9yCi10ZXN0LiBUaGlzIGFsbG93cyB0aGUgdGFyZ2V0IHRvIHVzZSBhbiBvcGFxdWUgcGF0dGVybiAoZWcuIHVzaW5nIFVOU1BFQykKLXRvIGhpZGUgdGhlIGluZGl2aWR1YWwgaW5zdHJ1Y3Rpb25zIGJlaW5nIGdlbmVyYXRlZCB0byB0aGUgY29tcGlsZXIgYW5kCi1zcGxpdCB0aGUgcGF0dGVybiBpbnRvIGdlbmVyaWMgbG9hZCwgY29tcGFyZSBhbmQgYnJhbmNoIGluc3RydWN0aW9uCi1hZnRlciByZWdpc3RlciBhbGxvY2F0b3IsIHRoZXJlZm9yZSBhdm9pZGluZyBhbnkgc3BpbGxpbmcuIFRoaXMgaXMgaGVyZQotaW1wbGVtZW50ZWQgZm9yIHRoZSBBUk0gdGFyZ2V0cy4gRm9yIHRhcmdldHMgbm90IGltcGxlbWVudGluZyB0aGVzZSBuZXcKLXN0YW5kYXJkIHBhdHRlcm4gbmFtZXMsIHRoZSBleGlzdGluZyBzdGFja19wcm90ZWN0X3NldCBhbmQKLXN0YWNrX3Byb3RlY3RfdGVzdCBwYXR0ZXJuIG5hbWVzIGFyZSB1c2VkLgotCi1UbyBiZSBhYmxlIHRvIHNwbGl0IFBJQyBhY2Nlc3MgYWZ0ZXIgcmVnaXN0ZXIgYWxsb2NhdGlvbiwgdGhlIGZ1bmN0aW9ucwotaGFkIHRvIGJlIGF1Z21lbnRlZCB0byBmb3JjZSBhIG5ldyBQSUMgcmVnaXN0ZXIgbG9hZCBhbmQgdG8gY29udHJvbAotd2hpY2ggcmVnaXN0ZXIgaXQgbG9hZHMgaW50by4gVGhpcyBpcyBiZWNhdXNlIHNoYXJpbmcgdGhlIFBJQyByZWdpc3RlcgotYmV0d2VlbiBwcm9sb2d1ZSBhbmQgZXBpbG9ndWUgY291bGQgbGVhZCB0byBzcGlsbGluZyBkdWUgdG8gQ1NFIGFnYWluCi13aGljaCBhbiBhdHRhY2tlciBjb3VsZCB1c2UgdG8gY29udHJvbCB3aGF0IHRoZSBjYW5hcnkgZ2V0cyBjb21wYXJlZAotYWdhaW5zdC4KLQotMjAxOC0xMS0yMiAgVGhvbWFzIFByZXVkJ2hvbW1lICA8dGhvbWFzLnByZXVkaG9tbWVAbGluYXJvLm9yZz4KLQotICAgIGdjYy8KLSAgICBQUiB0YXJnZXQvODU0MzQKLSAgICAqIHRhcmdldC1pbnNucy5kZWYgKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0KTogRGVmaW5lIG5ldyBzdGFuZGFyZAotICAgIHBhdHRlcm4gbmFtZS4KLSAgICAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0KTogTGlrZXdpc2UuCi0gICAgKiBjZmdleHBhbmQuYyAoc3RhY2tfcHJvdGVjdF9wcm9sb2d1ZSk6IFRyeSBuZXcKLSAgICBzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCBwYXR0ZXJuIGZpcnN0LgotICAgICogZnVuY3Rpb24uYyAoc3RhY2tfcHJvdGVjdF9lcGlsb2d1ZSk6IFRyeSBuZXcKLSAgICBzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QgcGF0dGVybiBmaXJzdC4KLSAgICAqIGNvbmZpZy9hcm0vYXJtLmMgKHJlcXVpcmVfcGljX3JlZ2lzdGVyKTogQWRkIHBpY19yZWcgYW5kIGNvbXB1dGVfbm93Ci0gICAgcGFyYW1ldGVycyB0byBjb250cm9sIHdoaWNoIHJlZ2lzdGVyIHRvIHVzZSBhcyBQSUMgcmVnaXN0ZXIgYW5kIGZvcmNlCi0gICAgcmVsb2FkaW5nIFBJQyByZWdpc3RlciByZXNwZWN0aXZlbHkuICBJbnNlcnQgaW4gdGhlIHN0cmVhbSBvZiBpbnNucyBpZgotICAgIHBvc3NpYmxlLgotICAgIChsZWdpdGltaXplX3BpY19hZGRyZXNzKTogRXhwb3NlIGFib3ZlIG5ldyBwYXJhbWV0ZXJzIGluIHByb3RvdHlwZSBhbmQKLSAgICBhZGFwdCByZWN1cnNpdmUgY2FsbHMgYWNjb3JkaW5nbHkuICBVc2UgcGljX3JlZyBpZiBub24gbnVsbCBpbnN0ZWFkIG9mCi0gICAgY2FjaGVkIG9uZS4KLSAgICAoYXJtX2xvYWRfcGljX3JlZ2lzdGVyKTogQWRkIHBpY19yZWcgcGFyYW1ldGVyIGFuZCB1c2UgaXQgaWYgbm9uIG51bGwuCi0gICAgKGFybV9sZWdpdGltaXplX2FkZHJlc3MpOiBBZGFwdCB0byBuZXcgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcwotICAgIHByb3RvdHlwZS4KLSAgICAodGh1bWJfbGVnaXRpbWl6ZV9hZGRyZXNzKTogTGlrZXdpc2UuCi0gICAgKGFybV9lbWl0X2NhbGxfaW5zbik6IEFkYXB0IHRvIHJlcXVpcmVfcGljX3JlZ2lzdGVyIHByb3RvdHlwZSBjaGFuZ2UuCi0gICAgKGFybV9leHBhbmRfcHJvbG9ndWUpOiBBZGFwdCB0byBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgcHJvdG90eXBlIGNoYW5nZS4KLSAgICAodGh1bWIxX2V4cGFuZF9wcm9sb2d1ZSk6IExpa2V3aXNlLgotICAgICogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBBZGFwdCB0byBwcm90b3R5cGUKLSAgICBjaGFuZ2UuCi0gICAgKGFybV9sb2FkX3BpY19yZWdpc3Rlcik6IExpa2V3aXNlLgotICAgICogY29uZmlnL2FybS9wcmVkaWNhdGVkLm1kIChndWFyZF9hZGRyX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgotICAgIChndWFyZF9vcGVyYW5kKTogTmV3IHByZWRpY2F0ZS4KLSAgICAqIGNvbmZpZy9hcm0vYXJtLm1kIChtb3ZzaSBleHBhbmRlcik6IEFkYXB0IHRvIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MKLSAgICBwcm90b3R5cGUgY2hhbmdlLgotICAgIChidWlsdGluX3NldGptcF9yZWNlaXZlciBleHBhbmRlcik6IEFkYXB0IHRvIHRodW1iMV9leHBhbmRfcHJvbG9ndWUKLSAgICBwcm90b3R5cGUgY2hhbmdlLgotICAgIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCk6IE5ldyBleHBhbmRlci4uCi0gICAgKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0X2luc24pOiBOZXcgaW5zbl9hbmRfc3BsaXQgcGF0dGVybi4KLSAgICAoc3RhY2tfcHJvdGVjdF9zZXRfaW5zbik6IE5ldyBpbnNuIHBhdHRlcm4uCi0gICAgKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdCk6IE5ldyBleHBhbmRlci4KLSAgICAoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0X2luc24pOiBOZXcgaW5zbl9hbmRfc3BsaXQgcGF0dGVybi4KLSAgICAoYXJtX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuKTogTmV3IGluc24gcGF0dGVybi4KLSAgICAqIGNvbmZpZy9hcm0vdGh1bWIxLm1kICh0aHVtYjFfc3RhY2tfcHJvdGVjdF90ZXN0X2luc24pOiBOZXcgaW5zbiBwYXR0ZXJuLgotICAgICogY29uZmlnL2FybS91bnNwZWNzLm1kIChVTlNQRUNfU1BfU0VUKTogTmV3IHVuc3BlYy4KLSAgICAoVU5TUEVDX1NQX1RFU1QpOiBMaWtld2lzZS4KLSAgICAqIGRvYy9tZC50ZXhpIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCk6IERvY3VtZW50IG5ldyBzdGFuZGFyZAotICAgIHBhdHRlcm4gbmFtZS4KLSAgICAoc3RhY2tfcHJvdGVjdF9zZXQpOiBDbGFyaWZ5IHRoYXQgdGhlIG9wZXJhbmQgZm9yIGd1YXJkJ3MgYWRkcmVzcyBpcwotICAgIGxlZ2FsLgotICAgIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QpOiBEb2N1bWVudCBuZXcgc3RhbmRhcmQgcGF0dGVybiBuYW1lLgotICAgIChzdGFja19wcm90ZWN0X3Rlc3QpOiBDbGFyaWZ5IHRoYXQgdGhlIG9wZXJhbmQgZm9yIGd1YXJkJ3MgYWRkcmVzcyBpcwotICAgIGxlZ2FsLgotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL3RydW5rQDI2NjM3OSAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOC0xMjg4NgotU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQ5ICsrKysrKwotIGdjYy9jZmdleHBhbmQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE3ICsrKwotIGdjYy9jb25maWcvYXJtL2FybS1wcm90b3MuaCAgICAgICAgICAgIHwgICA0ICstCi0gZ2NjL2NvbmZpZy9hcm0vYXJtLmMgICAgICAgICAgICAgICAgICAgfCAgODcgKysrKysrKystLS0KLSBnY2MvY29uZmlnL2FybS9hcm0ubWQgICAgICAgICAgICAgICAgICB8IDE2MyArKysrKysrKysrKysrKysrKysrLQotIGdjYy9jb25maWcvYXJtL3ByZWRpY2F0ZXMubWQgICAgICAgICAgIHwgIDE3ICsrKwotIGdjYy9jb25maWcvYXJtL3RodW1iMS5tZCAgICAgICAgICAgICAgIHwgIDEzICsrCi0gZ2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZCAgICAgICAgICAgICAgfCAgIDMgKwotIGdjYy9kb2MvbWQudGV4aSAgICAgICAgICAgICAgICAgICAgICAgIHwgIDU1ICsrKysrKy0KLSBnY2MvZnVuY3Rpb24uYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMiArKystCi0gZ2NjL3RhcmdldC1pbnNucy5kZWYgICAgICAgICAgICAgICAgICAgfCAgIDIgKwotIDExIGZpbGVzIGNoYW5nZWQsIDM5OSBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FybS9wcjg1NDM0LmMKLQotZGlmZiAtLWdpdCBhL2djYy9DaGFuZ2VMb2cgYi9nY2MvQ2hhbmdlTG9nCi1pbmRleCBlMmViZmQzNDIxNC4uZmE0MWU3MTEyZTAgMTAwNjQ0Ci0tLS0gYS9nY2MvQ2hhbmdlTG9nCi0rKysgYi9nY2MvQ2hhbmdlTG9nCi1AQCAtMTUzNyw2ICsxNTM3LDU1IEBACi0gCSogY29uZmlnL2FybS9uZW9uLm1kIChtb3Z2NGhmLCBtb3Z2OGhmKTogUmVmYWN0b3JlZCB0by4uCi0gCShtb3Y8bW92Pik6IC4udGhpcyBhbmQgZW5hYmxlIHVuY29uZGl0aW9uYWxseS4KLSAKLSsyMDE4LTExLTIyICBUaG9tYXMgUHJldWQnaG9tbWUgIDx0aG9tYXMucHJldWRob21tZUBsaW5hcm8ub3JnPgotKwotKwkqIHRhcmdldC1pbnNucy5kZWYgKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0KTogRGVmaW5lIG5ldyBzdGFuZGFyZAotKwlwYXR0ZXJuIG5hbWUuCi0rCShzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QpOiBMaWtld2lzZS4KLSsJKiBjZmdleHBhbmQuYyAoc3RhY2tfcHJvdGVjdF9wcm9sb2d1ZSk6IFRyeSBuZXcKLSsJc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQgcGF0dGVybiBmaXJzdC4KLSsJKiBmdW5jdGlvbi5jIChzdGFja19wcm90ZWN0X2VwaWxvZ3VlKTogVHJ5IG5ldwotKwlzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QgcGF0dGVybiBmaXJzdC4KLSsJKiBjb25maWcvYXJtL2FybS5jIChyZXF1aXJlX3BpY19yZWdpc3Rlcik6IEFkZCBwaWNfcmVnIGFuZCBjb21wdXRlX25vdwotKwlwYXJhbWV0ZXJzIHRvIGNvbnRyb2wgd2hpY2ggcmVnaXN0ZXIgdG8gdXNlIGFzIFBJQyByZWdpc3RlciBhbmQgZm9yY2UKLSsJcmVsb2FkaW5nIFBJQyByZWdpc3RlciByZXNwZWN0aXZlbHkuICBJbnNlcnQgaW4gdGhlIHN0cmVhbSBvZiBpbnNucyBpZgotKwlwb3NzaWJsZS4KLSsJKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBFeHBvc2UgYWJvdmUgbmV3IHBhcmFtZXRlcnMgaW4gcHJvdG90eXBlIGFuZAotKwlhZGFwdCByZWN1cnNpdmUgY2FsbHMgYWNjb3JkaW5nbHkuICBVc2UgcGljX3JlZyBpZiBub24gbnVsbCBpbnN0ZWFkIG9mCi0rCWNhY2hlZCBvbmUuCi0rCShhcm1fbG9hZF9waWNfcmVnaXN0ZXIpOiBBZGQgcGljX3JlZyBwYXJhbWV0ZXIgYW5kIHVzZSBpdCBpZiBub24gbnVsbC4KLSsJKGFybV9sZWdpdGltaXplX2FkZHJlc3MpOiBBZGFwdCB0byBuZXcgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcwotKwlwcm90b3R5cGUuCi0rCSh0aHVtYl9sZWdpdGltaXplX2FkZHJlc3MpOiBMaWtld2lzZS4KLSsJKGFybV9lbWl0X2NhbGxfaW5zbik6IEFkYXB0IHRvIHJlcXVpcmVfcGljX3JlZ2lzdGVyIHByb3RvdHlwZSBjaGFuZ2UuCi0rCShhcm1fZXhwYW5kX3Byb2xvZ3VlKTogQWRhcHQgdG8gYXJtX2xvYWRfcGljX3JlZ2lzdGVyIHByb3RvdHlwZSBjaGFuZ2UuCi0rCSh0aHVtYjFfZXhwYW5kX3Byb2xvZ3VlKTogTGlrZXdpc2UuCi0rCSogY29uZmlnL2FybS9hcm0tcHJvdG9zLmggKGxlZ2l0aW1pemVfcGljX2FkZHJlc3MpOiBBZGFwdCB0byBwcm90b3R5cGUKLSsJY2hhbmdlLgotKwkoYXJtX2xvYWRfcGljX3JlZ2lzdGVyKTogTGlrZXdpc2UuCi0rCSogY29uZmlnL2FybS9wcmVkaWNhdGVkLm1kIChndWFyZF9hZGRyX29wZXJhbmQpOiBOZXcgcHJlZGljYXRlLgotKwkoZ3VhcmRfb3BlcmFuZCk6IE5ldyBwcmVkaWNhdGUuCi0rCSogY29uZmlnL2FybS9hcm0ubWQgKG1vdnNpIGV4cGFuZGVyKTogQWRhcHQgdG8gbGVnaXRpbWl6ZV9waWNfYWRkcmVzcwotKwlwcm90b3R5cGUgY2hhbmdlLgotKwkoYnVpbHRpbl9zZXRqbXBfcmVjZWl2ZXIgZXhwYW5kZXIpOiBBZGFwdCB0byB0aHVtYjFfZXhwYW5kX3Byb2xvZ3VlCi0rCXByb3RvdHlwZSBjaGFuZ2UuCi0rCShzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCk6IE5ldyBleHBhbmRlci4uCi0rCShzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldF9pbnNuKTogTmV3IGluc25fYW5kX3NwbGl0IHBhdHRlcm4uCi0rCShzdGFja19wcm90ZWN0X3NldF9pbnNuKTogTmV3IGluc24gcGF0dGVybi4KLSsJKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdCk6IE5ldyBleHBhbmRlci4KLSsJKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdF9pbnNuKTogTmV3IGluc25fYW5kX3NwbGl0IHBhdHRlcm4uCi0rCShhcm1fc3RhY2tfcHJvdGVjdF90ZXN0X2luc24pOiBOZXcgaW5zbiBwYXR0ZXJuLgotKwkqIGNvbmZpZy9hcm0vdGh1bWIxLm1kICh0aHVtYjFfc3RhY2tfcHJvdGVjdF90ZXN0X2luc24pOiBOZXcgaW5zbiBwYXR0ZXJuLgotKwkqIGNvbmZpZy9hcm0vdW5zcGVjcy5tZCAoVU5TUEVDX1NQX1NFVCk6IE5ldyB1bnNwZWMuCi0rCShVTlNQRUNfU1BfVEVTVCk6IExpa2V3aXNlLgotKwkqIGRvYy9tZC50ZXhpIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCk6IERvY3VtZW50IG5ldyBzdGFuZGFyZAotKwlwYXR0ZXJuIG5hbWUuCi0rCShzdGFja19wcm90ZWN0X3NldCk6IENsYXJpZnkgdGhhdCB0aGUgb3BlcmFuZCBmb3IgZ3VhcmQncyBhZGRyZXNzIGlzCi0rCWxlZ2FsLgotKwkoc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0KTogRG9jdW1lbnQgbmV3IHN0YW5kYXJkIHBhdHRlcm4gbmFtZS4KLSsJKHN0YWNrX3Byb3RlY3RfdGVzdCk6IENsYXJpZnkgdGhhdCB0aGUgb3BlcmFuZCBmb3IgZ3VhcmQncyBhZGRyZXNzIGlzCi0rCWxlZ2FsLgotKwotIDIwMTgtMTEtMjIgIFVyb3MgQml6amFrICA8dWJpempha0BnbWFpbC5jb20+Ci0gCi0gCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLWRpZmYgLS1naXQgYS9nY2MvY2ZnZXhwYW5kLmMgYi9nY2MvY2ZnZXhwYW5kLmMKLWluZGV4IDhmYTM5MmZjZDhhLi4yMWJkY2RhZWFhMyAxMDA2NDQKLS0tLSBhL2djYy9jZmdleHBhbmQuYwotKysrIGIvZ2NjL2NmZ2V4cGFuZC5jCi1AQCAtNjE4NSw2ICs2MTg1LDIzIEBAIHN0YWNrX3Byb3RlY3RfcHJvbG9ndWUgKHZvaWQpCi0gICBydHggeCwgeTsKLSAKLSAgIHggPSBleHBhbmRfbm9ybWFsIChjcnRsLT5zdGFja19wcm90ZWN0X2d1YXJkKTsKLSsKLSsgIGlmICh0YXJnZXRtLmhhdmVfc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQgKCkgJiYgZ3VhcmRfZGVjbCkKLSsgICAgewotKyAgICAgIGdjY19hc3NlcnQgKERFQ0xfUCAoZ3VhcmRfZGVjbCkpOwotKyAgICAgIHkgPSBERUNMX1JUTCAoZ3VhcmRfZGVjbCk7Ci0rCi0rICAgICAgLyogQWxsb3cgdGhlIHRhcmdldCB0byBjb21wdXRlIGFkZHJlc3Mgb2YgWSBhbmQgY29weSBpdCB0byBYIHdpdGhvdXQKLSsJIGxlYWtpbmcgWSBpbnRvIGEgcmVnaXN0ZXIuICBUaGlzIGNvbWJpbmVkIGFkZHJlc3MgKyBjb3B5IHBhdHRlcm4KLSsJIGFsbG93cyB0aGUgdGFyZ2V0IHRvIHByZXZlbnQgc3BpbGxpbmcgb2YgYW55IGludGVybWVkaWF0ZSByZXN1bHRzIGJ5Ci0rCSBzcGxpdHRpbmcgaXQgYWZ0ZXIgcmVnaXN0ZXIgYWxsb2NhdG9yLiAgKi8KLSsgICAgICBpZiAocnR4X2luc24gKmluc24gPSB0YXJnZXRtLmdlbl9zdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCAoeCwgeSkpCi0rCXsKLSsJICBlbWl0X2luc24gKGluc24pOwotKwkgIHJldHVybjsKLSsJfQotKyAgICB9Ci0rCi0gICBpZiAoZ3VhcmRfZGVjbCkKLSAgICAgeSA9IGV4cGFuZF9ub3JtYWwgKGd1YXJkX2RlY2wpOwotICAgZWxzZQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaCBiL2djYy9jb25maWcvYXJtL2FybS1wcm90b3MuaAotaW5kZXggOGQ2ZDIzOTViODQuLjAwZjVmMTZlZDAyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLXByb3Rvcy5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9hcm0tcHJvdG9zLmgKLUBAIC0yOCw3ICsyOCw3IEBAIGV4dGVybiBlbnVtIHVud2luZF9pbmZvX3R5cGUgYXJtX2V4Y2VwdF91bndpbmRfaW5mbyAoc3RydWN0IGdjY19vcHRpb25zICopOwotIGV4dGVybiBpbnQgdXNlX3JldHVybl9pbnNuIChpbnQsIHJ0eCk7Ci0gZXh0ZXJuIGJvb2wgdXNlX3NpbXBsZV9yZXR1cm5fcCAodm9pZCk7Ci0gZXh0ZXJuIGVudW0gcmVnX2NsYXNzIGFybV9yZWdub19jbGFzcyAoaW50KTsKLS1leHRlcm4gdm9pZCBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKHVuc2lnbmVkIGxvbmcpOwotK2V4dGVybiB2b2lkIGFybV9sb2FkX3BpY19yZWdpc3RlciAodW5zaWduZWQgbG9uZywgcnR4KTsKLSBleHRlcm4gaW50IGFybV92b2xhdGlsZV9mdW5jICh2b2lkKTsKLSBleHRlcm4gdm9pZCBhcm1fZXhwYW5kX3Byb2xvZ3VlICh2b2lkKTsKLSBleHRlcm4gdm9pZCBhcm1fZXhwYW5kX2VwaWxvZ3VlIChib29sKTsKLUBAIC02OSw3ICs2OSw3IEBAIGV4dGVybiBpbnQgY29uc3Rfb2tfZm9yX2RpbW9kZV9vcCAoSE9TVF9XSURFX0lOVCwgZW51bSBydHhfY29kZSk7Ci0gZXh0ZXJuIGludCBhcm1fc3BsaXRfY29uc3RhbnQgKFJUWF9DT0RFLCBtYWNoaW5lX21vZGUsIHJ0eCwKLSAJCQkgICAgICAgSE9TVF9XSURFX0lOVCwgcnR4LCBydHgsIGludCk7Ci0gZXh0ZXJuIGludCBsZWdpdGltYXRlX3BpY19vcGVyYW5kX3AgKHJ0eCk7Ci0tZXh0ZXJuIHJ0eCBsZWdpdGltaXplX3BpY19hZGRyZXNzIChydHgsIG1hY2hpbmVfbW9kZSwgcnR4KTsKLStleHRlcm4gcnR4IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKHJ0eCwgbWFjaGluZV9tb2RlLCBydHgsIHJ0eCwgYm9vbCk7Ci0gZXh0ZXJuIHJ0eCBsZWdpdGltaXplX3Rsc19hZGRyZXNzIChydHgsIHJ0eCk7Ci0gZXh0ZXJuIGJvb2wgYXJtX2xlZ2l0aW1hdGVfYWRkcmVzc19wIChtYWNoaW5lX21vZGUsIHJ0eCwgYm9vbCk7Ci0gZXh0ZXJuIGludCBhcm1fbGVnaXRpbWF0ZV9hZGRyZXNzX291dGVyX3AgKG1hY2hpbmVfbW9kZSwgcnR4LCBSVFhfQ09ERSwgaW50KTsKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9hcm0uYyBiL2djYy9jb25maWcvYXJtL2FybS5jCi1pbmRleCA4MzkzZjBiODdmMy4uMTI0MTdkZTUxMDIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9hcm0uYwotKysrIGIvZ2NjL2NvbmZpZy9hcm0vYXJtLmMKLUBAIC03Mzc5LDIxICs3Mzc5LDM0IEBAIGxlZ2l0aW1hdGVfcGljX29wZXJhbmRfcCAocnR4IHgpCi0gICByZXR1cm4gMTsKLSB9Ci0gCi0tLyogUmVjb3JkIHRoYXQgdGhlIGN1cnJlbnQgZnVuY3Rpb24gbmVlZHMgYSBQSUMgcmVnaXN0ZXIuICBJbml0aWFsaXplCi0tICAgY2Z1bi0+bWFjaGluZS0+cGljX3JlZyBpZiB3ZSBoYXZlIG5vdCBhbHJlYWR5IGRvbmUgc28uICAqLwotKy8qIFJlY29yZCB0aGF0IHRoZSBjdXJyZW50IGZ1bmN0aW9uIG5lZWRzIGEgUElDIHJlZ2lzdGVyLiAgSWYgUElDX1JFRyBpcyBudWxsLAotKyAgIGEgbmV3IHBzZXVkbyBpcyBhbGxvY2F0ZWQgYXMgUElDIHJlZ2lzdGVyLCBvdGhlcndpc2UgUElDX1JFRyBpcyB1c2VkLiAgSW4KLSsgICBib3RoIGNhc2UgY2Z1bi0+bWFjaGluZS0+cGljX3JlZyBpcyBpbml0aWFsaXplZCBpZiB3ZSBoYXZlIG5vdCBhbHJlYWR5IGRvbmUKLSsgICBzby4gIENPTVBVVEVfTk9XIGRlY2lkZSB3aGV0aGVyIGFuZCB3aGVyZSB0byBzZXQgdGhlIFBJQyByZWdpc3Rlci4gIElmIHRydWUsCi0rICAgUElDIHJlZ2lzdGVyIGlzIHJlbG9hZGVkIGluIHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0KLSsgICBpcnJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCB3YXMgbG9hZGVkIGJlZm9yZS4gIE90aGVyd2lzZSwgaXQgaXMgb25seSBsb2FkZWQKLSsgICBpZiBub3QgYWxyZWFkeSBkb25lIHNvIChjcnRsLT51c2VzX3BpY19vZmZzZXRfdGFibGUgaXMgbnVsbCkuICBOb3RlIHRoYXQKLSsgICBub25udWxsIFBJQ19SRUcgaXMgb25seSBzdXBwb3J0ZWQgaWZmIENPTVBVVEVfTk9XIGlzIHRydWUgYW5kIG51bGwgUElDX1JFRwotKyAgIGlzIG9ubHkgc3VwcG9ydGVkIGlmZiBDT01QVVRFX05PVyBpcyBmYWxzZS4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1yZXF1aXJlX3BpY19yZWdpc3RlciAodm9pZCkKLStyZXF1aXJlX3BpY19yZWdpc3RlciAocnR4IHBpY19yZWcsIGJvb2wgY29tcHV0ZV9ub3cpCi0gewotKyAgZ2NjX2Fzc2VydCAoY29tcHV0ZV9ub3cgPT0gKHBpY19yZWcgIT0gTlVMTF9SVFgpKTsKLSsKLSAgIC8qIEEgbG90IG9mIHRoZSBsb2dpYyBoZXJlIGlzIG1hZGUgb2JzY3VyZSBieSB0aGUgZmFjdCB0aGF0IHRoaXMKLSAgICAgIHJvdXRpbmUgZ2V0cyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgcnR4IGNvc3QgZXN0aW1hdGlvbiBwcm9jZXNzLgotICAgICAgV2UgZG9uJ3Qgd2FudCB0aG9zZSBjYWxscyB0byBhZmZlY3QgYW55IGFzc3VtcHRpb25zIGFib3V0IHRoZSByZWFsCi0gICAgICBmdW5jdGlvbjsgYW5kIGZ1cnRoZXIsIHdlIGNhbid0IGNhbGwgZW50cnlfb2ZfZnVuY3Rpb24oKSB1bnRpbCB3ZQotICAgICAgc3RhcnQgdGhlIHJlYWwgZXhwYW5zaW9uIHByb2Nlc3MuICAqLwotLSAgaWYgKCFjcnRsLT51c2VzX3BpY19vZmZzZXRfdGFibGUpCi0rICBpZiAoIWNydGwtPnVzZXNfcGljX29mZnNldF90YWJsZSB8fCBjb21wdXRlX25vdykKLSAgICAgewotLSAgICAgIGdjY19hc3NlcnQgKGNhbl9jcmVhdGVfcHNldWRvX3AgKCkpOwotKyAgICAgIGdjY19hc3NlcnQgKGNhbl9jcmVhdGVfcHNldWRvX3AgKCkKLSsJCSAgfHwgKHBpY19yZWcgIT0gTlVMTF9SVFgKLSsJCSAgICAgICYmIFJFR19QIChwaWNfcmVnKQotKwkJICAgICAgJiYgR0VUX01PREUgKHBpY19yZWcpID09IFBtb2RlKSk7Ci0gICAgICAgaWYgKGFybV9waWNfcmVnaXN0ZXIgIT0gSU5WQUxJRF9SRUdOVU0KLSsJICAmJiAhY29tcHV0ZV9ub3cKLSAJICAmJiAhKFRBUkdFVF9USFVNQjEgJiYgYXJtX3BpY19yZWdpc3RlciA+IExBU1RfTE9fUkVHTlVNKSkKLSAJewotIAkgIGlmICghY2Z1bi0+bWFjaGluZS0+cGljX3JlZykKLUBAIC03NDA5LDggKzc0MjIsMTAgQEAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHZvaWQpCi0gCXsKLSAJICBydHhfaW5zbiAqc2VxLCAqaW5zbjsKLSAKLSsJICBpZiAocGljX3JlZyA9PSBOVUxMX1JUWCkKLSsJICAgIHBpY19yZWcgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotIAkgIGlmICghY2Z1bi0+bWFjaGluZS0+cGljX3JlZykKLS0JICAgIGNmdW4tPm1hY2hpbmUtPnBpY19yZWcgPSBnZW5fcmVnX3J0eCAoUG1vZGUpOwotKwkgICAgY2Z1bi0+bWFjaGluZS0+cGljX3JlZyA9IHBpY19yZWc7Ci0gCi0gCSAgLyogUGxheSBnYW1lcyB0byBhdm9pZCBtYXJraW5nIHRoZSBmdW5jdGlvbiBhcyBuZWVkaW5nIHBpYwotIAkgICAgIGlmIHdlIGFyZSBiZWluZyBjYWxsZWQgYXMgcGFydCBvZiB0aGUgY29zdC1lc3RpbWF0aW9uCi1AQCAtNzQyMSwxMSArNzQzNiwxMiBAQCByZXF1aXJlX3BpY19yZWdpc3RlciAodm9pZCkKLSAJICAgICAgc3RhcnRfc2VxdWVuY2UgKCk7Ci0gCi0gCSAgICAgIGlmIChUQVJHRVRfVEhVTUIxICYmIGFybV9waWNfcmVnaXN0ZXIgIT0gSU5WQUxJRF9SRUdOVU0KLS0JCSAgJiYgYXJtX3BpY19yZWdpc3RlciA+IExBU1RfTE9fUkVHTlVNKQotKwkJICAmJiBhcm1fcGljX3JlZ2lzdGVyID4gTEFTVF9MT19SRUdOVU0KLSsJCSAgJiYgIWNvbXB1dGVfbm93KQotIAkJZW1pdF9tb3ZlX2luc24gKGNmdW4tPm1hY2hpbmUtPnBpY19yZWcsCi0gCQkJCWdlbl9ydHhfUkVHIChQbW9kZSwgYXJtX3BpY19yZWdpc3RlcikpOwotIAkgICAgICBlbHNlCi0tCQlhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKDBVTCk7Ci0rCQlhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKDBVTCwgcGljX3JlZyk7Ci0gCi0gCSAgICAgIHNlcSA9IGdldF9pbnNucyAoKTsKLSAJICAgICAgZW5kX3NlcXVlbmNlICgpOwotQEAgLTc0MzgsMTYgKzc0NTQsMzMgQEAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHZvaWQpCi0gCSAgICAgICAgIHdlIGNhbid0IHlldCBlbWl0IGluc3RydWN0aW9ucyBkaXJlY3RseSBpbiB0aGUgZmluYWwKLSAJCSBpbnNuIHN0cmVhbS4gIFF1ZXVlIHRoZSBpbnNucyBvbiB0aGUgZW50cnkgZWRnZSwgdGhleSB3aWxsCi0gCQkgYmUgY29tbWl0dGVkIGFmdGVyIGV2ZXJ5dGhpbmcgZWxzZSBpcyBleHBhbmRlZC4gICovCi0tCSAgICAgIGluc2VydF9pbnNuX29uX2VkZ2UgKHNlcSwKLS0JCQkJICAgc2luZ2xlX3N1Y2NfZWRnZSAoRU5UUllfQkxPQ0tfUFRSX0ZPUl9GTiAoY2Z1bikpKTsKLSsJICAgICAgaWYgKGN1cnJlbnRseV9leHBhbmRpbmdfdG9fcnRsKQotKwkJaW5zZXJ0X2luc25fb25fZWRnZSAoc2VxLAotKwkJCQkgICAgIHNpbmdsZV9zdWNjX2VkZ2UKLSsJCQkJICAgICAoRU5UUllfQkxPQ0tfUFRSX0ZPUl9GTiAoY2Z1bikpKTsKLSsJICAgICAgZWxzZQotKwkJZW1pdF9pbnNuIChzZXEpOwotIAkgICAgfQotIAl9Ci0gICAgIH0KLSB9Ci0gCi0rLyogTGVnaXRpbWl6ZSBQSUMgbG9hZCB0byBPUklHIGludG8gUkVHLiAgSWYgUkVHIGlzIE5VTEwsIGEgbmV3IHBzZXVkbyBpcwotKyAgIGNyZWF0ZWQgdG8gaG9sZCB0aGUgcmVzdWx0IG9mIHRoZSBsb2FkLiAgSWYgbm90IE5VTEwsIFBJQ19SRUcgaW5kaWNhdGVzCi0rICAgd2hpY2ggcmVnaXN0ZXIgdG8gdXNlIGFzIFBJQyByZWdpc3Rlciwgb3RoZXJ3aXNlIGl0IGlzIGRlY2lkZWQgYnkgcmVnaXN0ZXIKLSsgICBhbGxvY2F0b3IuICBDT01QVVRFX05PVyBmb3JjZXMgdGhlIFBJQyByZWdpc3RlciB0byBiZSBsb2FkZWQgYXQgdGhlIGN1cnJlbnQKLSsgICBsb2NhdGlvbiBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLCBpcnJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCB3YXMgbG9hZGVkCi0rICAgcHJldmlvdXNseS4gIE5vdGUgdGhhdCBub25udWxsIFBJQ19SRUcgaXMgb25seSBzdXBwb3J0ZWQgaWZmIENPTVBVVEVfTk9XIGlzCi0rICAgdHJ1ZSBhbmQgbnVsbCBQSUNfUkVHIGlzIG9ubHkgc3VwcG9ydGVkIGlmZiBDT01QVVRFX05PVyBpcyBmYWxzZS4KLSsKLSsgICBSZXR1cm5zIHRoZSByZWdpc3RlciBSRUcgaW50byB3aGljaCB0aGUgUElDIGxvYWQgaXMgcGVyZm9ybWVkLiAgKi8KLSsKLSBydHgKLS1sZWdpdGltaXplX3BpY19hZGRyZXNzIChydHggb3JpZywgbWFjaGluZV9tb2RlIG1vZGUsIHJ0eCByZWcpCi0rbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAocnR4IG9yaWcsIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggcmVnLCBydHggcGljX3JlZywKLSsJCQlib29sIGNvbXB1dGVfbm93KQotIHsKLSsgIGdjY19hc3NlcnQgKGNvbXB1dGVfbm93ID09IChwaWNfcmVnICE9IE5VTExfUlRYKSk7Ci0rCi0gICBpZiAoR0VUX0NPREUgKG9yaWcpID09IFNZTUJPTF9SRUYKLSAgICAgICB8fCBHRVRfQ09ERSAob3JpZykgPT0gTEFCRUxfUkVGKQotICAgICB7Ci1AQCAtNzQ4MCw5ICs3NTEzLDEyIEBAIGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKHJ0eCBvcmlnLCBtYWNoaW5lX21vZGUgbW9kZSwgcnR4IHJlZykKLSAJICBydHggbWVtOwotIAotIAkgIC8qIElmIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIGEgcGljIHJlZ2lzdGVyLCBjcmVhdGUgb25lIG5vdy4gICovCi0tCSAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKCk7Ci0rCSAgcmVxdWlyZV9waWNfcmVnaXN0ZXIgKHBpY19yZWcsIGNvbXB1dGVfbm93KTsKLSsKLSsJICBpZiAocGljX3JlZyA9PSBOVUxMX1JUWCkKLSsJICAgIHBpY19yZWcgPSBjZnVuLT5tYWNoaW5lLT5waWNfcmVnOwotIAotLQkgIHBhdCA9IGdlbl9jYWxjdWxhdGVfcGljX2FkZHJlc3MgKHJlZywgY2Z1bi0+bWFjaGluZS0+cGljX3JlZywgb3JpZyk7Ci0rCSAgcGF0ID0gZ2VuX2NhbGN1bGF0ZV9waWNfYWRkcmVzcyAocmVnLCBwaWNfcmVnLCBvcmlnKTsKLSAKLSAJICAvKiBNYWtlIHRoZSBNRU0gYXMgY2xvc2UgdG8gYSBjb25zdGFudCBhcyBwb3NzaWJsZS4gICovCi0gCSAgbWVtID0gU0VUX1NSQyAocGF0KTsKLUBAIC03NTMxLDkgKzc1NjcsMTEgQEAgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAocnR4IG9yaWcsIG1hY2hpbmVfbW9kZSBtb2RlLCBydHggcmVnKQotIAotICAgICAgIGdjY19hc3NlcnQgKEdFVF9DT0RFIChYRVhQIChvcmlnLCAwKSkgPT0gUExVUyk7Ci0gCi0tICAgICAgYmFzZSA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKFhFWFAgKFhFWFAgKG9yaWcsIDApLCAwKSwgUG1vZGUsIHJlZyk7Ci0rICAgICAgYmFzZSA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKFhFWFAgKFhFWFAgKG9yaWcsIDApLCAwKSwgUG1vZGUsIHJlZywKLSsJCQkJICAgICBwaWNfcmVnLCBjb21wdXRlX25vdyk7Ci0gICAgICAgb2Zmc2V0ID0gbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAoWEVYUCAoWEVYUCAob3JpZywgMCksIDEpLCBQbW9kZSwKLS0JCQkJICAgICAgIGJhc2UgPT0gcmVnID8gMCA6IHJlZyk7Ci0rCQkJCSAgICAgICBiYXNlID09IHJlZyA/IDAgOiByZWcsIHBpY19yZWcsCi0rCQkJCSAgICAgICBjb21wdXRlX25vdyk7Ci0gCi0gICAgICAgaWYgKENPTlNUX0lOVF9QIChvZmZzZXQpKQotIAl7Ci1AQCAtNzYzMywxNiArNzY3MSwxNyBAQCBzdGF0aWMgR1RZKCgpKSBpbnQgcGljX2xhYmVsbm87Ci0gICAgbG93IHJlZ2lzdGVyLiAgKi8KLSAKLSB2b2lkCi0tYXJtX2xvYWRfcGljX3JlZ2lzdGVyICh1bnNpZ25lZCBsb25nIHNhdmVkX3JlZ3MgQVRUUklCVVRFX1VOVVNFRCkKLSthcm1fbG9hZF9waWNfcmVnaXN0ZXIgKHVuc2lnbmVkIGxvbmcgc2F2ZWRfcmVncyBBVFRSSUJVVEVfVU5VU0VELCBydHggcGljX3JlZykKLSB7Ci0tICBydHggbDEsIGxhYmVsbm8sIHBpY190bXAsIHBpY19ydHgsIHBpY19yZWc7Ci0rICBydHggbDEsIGxhYmVsbm8sIHBpY190bXAsIHBpY19ydHg7Ci0gCi0gICBpZiAoY3J0bC0+dXNlc19waWNfb2Zmc2V0X3RhYmxlID09IDAgfHwgVEFSR0VUX1NJTkdMRV9QSUNfQkFTRSkKLSAgICAgcmV0dXJuOwotIAotICAgZ2NjX2Fzc2VydCAoZmxhZ19waWMpOwotIAotLSAgcGljX3JlZyA9IGNmdW4tPm1hY2hpbmUtPnBpY19yZWc7Ci0rICBpZiAocGljX3JlZyA9PSBOVUxMX1JUWCkKLSsgICAgcGljX3JlZyA9IGNmdW4tPm1hY2hpbmUtPnBpY19yZWc7Ci0gICBpZiAoVEFSR0VUX1ZYV09SS1NfUlRQKQotICAgICB7Ci0gICAgICAgcGljX3J0eCA9IGdlbl9ydHhfU1lNQk9MX1JFRiAoUG1vZGUsIFZYV09SS1NfR09UVF9CQVNFKTsKLUBAIC04NzE4LDcgKzg3NTcsOCBAQCBhcm1fbGVnaXRpbWl6ZV9hZGRyZXNzIChydHggeCwgcnR4IG9yaWdfeCwgbWFjaGluZV9tb2RlIG1vZGUpCi0gICAgIHsKLSAgICAgICAvKiBXZSBuZWVkIHRvIGZpbmQgYW5kIGNhcmVmdWxseSB0cmFuc2Zvcm0gYW55IFNZTUJPTCBhbmQgTEFCRUwKLSAJIHJlZmVyZW5jZXM7IHNvIGdvIGJhY2sgdG8gdGhlIG9yaWdpbmFsIGFkZHJlc3MgZXhwcmVzc2lvbi4gICovCi0tICAgICAgcnR4IG5ld194ID0gbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAob3JpZ194LCBtb2RlLCBOVUxMX1JUWCk7Ci0rICAgICAgcnR4IG5ld194ID0gbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAob3JpZ194LCBtb2RlLCBOVUxMX1JUWCwgTlVMTF9SVFgsCi0rCQkJCQkgIGZhbHNlIC8qY29tcHV0ZV9ub3cqLyk7Ci0gCi0gICAgICAgaWYgKG5ld194ICE9IG9yaWdfeCkKLSAJeCA9IG5ld194OwotQEAgLTg3ODYsNyArODgyNiw4IEBAIHRodW1iX2xlZ2l0aW1pemVfYWRkcmVzcyAocnR4IHgsIHJ0eCBvcmlnX3gsIG1hY2hpbmVfbW9kZSBtb2RlKQotICAgICB7Ci0gICAgICAgLyogV2UgbmVlZCB0byBmaW5kIGFuZCBjYXJlZnVsbHkgdHJhbnNmb3JtIGFueSBTWU1CT0wgYW5kIExBQkVMCi0gCSByZWZlcmVuY2VzOyBzbyBnbyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBhZGRyZXNzIGV4cHJlc3Npb24uICAqLwotLSAgICAgIHJ0eCBuZXdfeCA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKG9yaWdfeCwgbW9kZSwgTlVMTF9SVFgpOwotKyAgICAgIHJ0eCBuZXdfeCA9IGxlZ2l0aW1pemVfcGljX2FkZHJlc3MgKG9yaWdfeCwgbW9kZSwgTlVMTF9SVFgsIE5VTExfUlRYLAotKwkJCQkJICBmYWxzZSAvKmNvbXB1dGVfbm93Ki8pOwotIAotICAgICAgIGlmIChuZXdfeCAhPSBvcmlnX3gpCi0gCXggPSBuZXdfeDsKLUBAIC0xODA3NCw3ICsxODExNSw3IEBAIGFybV9lbWl0X2NhbGxfaW5zbiAocnR4IHBhdCwgcnR4IGFkZHIsIGJvb2wgc2liY2FsbCkKLSAJICA/ICF0YXJnZXRtLmJpbmRzX2xvY2FsX3AgKFNZTUJPTF9SRUZfREVDTCAoYWRkcikpCi0gCSAgOiAhU1lNQk9MX1JFRl9MT0NBTF9QIChhZGRyKSkpCi0gICAgIHsKLS0gICAgICByZXF1aXJlX3BpY19yZWdpc3RlciAoKTsKLSsgICAgICByZXF1aXJlX3BpY19yZWdpc3RlciAoTlVMTF9SVFgsIGZhbHNlIC8qY29tcHV0ZV9ub3cqLyk7Ci0gICAgICAgdXNlX3JlZyAoJkNBTExfSU5TTl9GVU5DVElPTl9VU0FHRSAoaW5zbiksIGNmdW4tPm1hY2hpbmUtPnBpY19yZWcpOwotICAgICB9Ci0gCi1AQCAtMjIwMDYsNyArMjIwNDcsNyBAQCBhcm1fZXhwYW5kX3Byb2xvZ3VlICh2b2lkKQotICAgICAgIG1hc2sgJj0gVEhVTUIyX1dPUktfUkVHUzsKLSAgICAgICBpZiAoIUlTX05FU1RFRCAoZnVuY190eXBlKSkKLSAJbWFzayB8PSAoMSA8PCBJUF9SRUdOVU0pOwotLSAgICAgIGFybV9sb2FkX3BpY19yZWdpc3RlciAobWFzayk7Ci0rICAgICAgYXJtX2xvYWRfcGljX3JlZ2lzdGVyIChtYXNrLCBOVUxMX1JUWCk7Ci0gICAgIH0KLSAKLSAgIC8qIElmIHdlIGFyZSBwcm9maWxpbmcsIG1ha2Ugc3VyZSBubyBpbnN0cnVjdGlvbnMgYXJlIHNjaGVkdWxlZCBiZWZvcmUKLUBAIC0yNTIzNyw3ICsyNTI3OCw3IEBAIHRodW1iMV9leHBhbmRfcHJvbG9ndWUgKHZvaWQpCi0gICAvKiBMb2FkIHRoZSBwaWMgcmVnaXN0ZXIgYmVmb3JlIHNldHRpbmcgdGhlIGZyYW1lIHBvaW50ZXIsCi0gICAgICBzbyB3ZSBjYW4gdXNlIHI3IGFzIGEgdGVtcG9yYXJ5IHdvcmsgcmVnaXN0ZXIuICAqLwotICAgaWYgKGZsYWdfcGljICYmIGFybV9waWNfcmVnaXN0ZXIgIT0gSU5WQUxJRF9SRUdOVU0pCi0tICAgIGFybV9sb2FkX3BpY19yZWdpc3RlciAobGl2ZV9yZWdzX21hc2spOwotKyAgICBhcm1fbG9hZF9waWNfcmVnaXN0ZXIgKGxpdmVfcmVnc19tYXNrLCBOVUxMX1JUWCk7Ci0gCi0gICBpZiAoIWZyYW1lX3BvaW50ZXJfbmVlZGVkICYmIENBTExFUl9JTlRFUldPUktJTkdfU0xPVF9TSVpFID4gMCkKLSAgICAgZW1pdF9tb3ZlX2luc24gKGdlbl9ydHhfUkVHIChQbW9kZSwgQVJNX0hBUkRfRlJBTUVfUE9JTlRFUl9SRUdOVU0pLAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2FybS5tZCBiL2djYy9jb25maWcvYXJtL2FybS5tZAotaW5kZXggYzhkYzk0NzRiMWIuLmY2MTk2ZTkzMTY4IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vYXJtLm1kCi0rKysgYi9nY2MvY29uZmlnL2FybS9hcm0ubWQKLUBAIC02MDIxLDcgKzYwMjEsOCBAQAotICAgICAgIG9wZXJhbmRzWzFdID0gbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAob3BlcmFuZHNbMV0sIFNJbW9kZSwKLSAJCQkJCSAgICAoIWNhbl9jcmVhdGVfcHNldWRvX3AgKCkKLSAJCQkJCSAgICAgPyBvcGVyYW5kc1swXQotLQkJCQkJICAgICA6IDApKTsKLSsJCQkJCSAgICAgOiBOVUxMX1JUWCksIE5VTExfUlRYLAotKwkJCQkJICAgIGZhbHNlIC8qY29tcHV0ZV9ub3cqLyk7Ci0gICB9Ci0gICAiCi0gKQotQEAgLTYzMDksNyArNjMxMCw3IEBACi0gICAvKiByMyBpcyBjbG9iYmVyZWQgYnkgc2V0L2xvbmdqbXAsIHNvIHdlIGNhbiB1c2UgaXQgYXMgYSBzY3JhdGNoCi0gICAgICByZWdpc3Rlci4gICovCi0gICBpZiAoYXJtX3BpY19yZWdpc3RlciAhPSBJTlZBTElEX1JFR05VTSkKLS0gICAgYXJtX2xvYWRfcGljX3JlZ2lzdGVyICgxVUwgPDwgMyk7Ci0rICAgIGFybV9sb2FkX3BpY19yZWdpc3RlciAoMVVMIDw8IDMsIE5VTExfUlRYKTsKLSAgIERPTkU7Ci0gfSIpCi0gCi1AQCAtODYzNCw2ICs4NjM1LDE2NCBAQAotICAgIChzZXRfYXR0ciAiY29uZHMiICJjbG9iIildCi0gKQotIAotKzs7IE5hbWVkIHBhdHRlcm5zIGZvciBzdGFjayBzbWFzaGluZyBwcm90ZWN0aW9uLgotKyhkZWZpbmVfZXhwYW5kICJzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldCIKLSsgIFsocGFyYWxsZWwKLSsgICAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgIm1lbW9yeV9vcGVyYW5kIiAiIikKLSsJICAgKHVuc3BlYzpTSSBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3VhcmRfb3BlcmFuZCIgIiIpXQotKwkJICAgICAgVU5TUEVDX1NQX1NFVCkpCi0rICAgICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgMiAiIikpCi0rICAgICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgMyAiIikpXSldCi0rICAiIgotKyAgIiIKLSspCi0rCi0rOzsgVXNlIGEgc2VwYXJhdGUgaW5zbiBmcm9tIHRoZSBhYm92ZSBleHBhbmQgdG8gYmUgYWJsZSB0byBoYXZlIHRoZSBtZW0gb3V0c2lkZQotKzs7IHRoZSBvcGVyYW5kICMxIHdoZW4gcmVnaXN0ZXIgYWxsb2NhdGlvbiBjb21lcy4gVGhpcyBpcyBuZWVkZWQgdG8gYXZvaWQgTFJBCi0rOzsgdHJ5IHRvIHJlbG9hZCB0aGUgZ3VhcmQgc2luY2Ugd2UgbmVlZCB0byBjb250cm9sIGhvdyBQSUMgYWNjZXNzIGlzIGRvbmUgaW4KLSs7OyB0aGUgLWZwaWMvLWZQSUMgY2FzZSAoc2VlIENPTVBVVEVfTk9XIHBhcmFtZXRlciB3aGVuIGNhbGxpbmcKLSs7OyBsZWdpdGltaXplX3BpY19hZGRyZXNzICgpKS4KLSsoZGVmaW5lX2luc25fYW5kX3NwbGl0ICIqc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXRfaW5zbiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgIm1lbW9yeV9vcGVyYW5kIiAiPW0sbSIpCi0rCSh1bnNwZWM6U0kgWyhtZW06U0kgKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3VhcmRfYWRkcl9vcGVyYW5kIiAiWCxYIikpXQotKwkJICAgVU5TUEVDX1NQX1NFVCkpCi0rICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgMiAiPSZsLCZyIikpCi0rICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgMyAiPSZsLCZyIikpXQotKyAgIiIKLSsgICIjIgotKyAgInJlbG9hZF9jb21wbGV0ZWQiCi0rICBbKHBhcmFsbGVsIFsoc2V0IChtYXRjaF9kdXAgMCkgKHVuc3BlYzpTSSBbKG1lbTpTSSAobWF0Y2hfZHVwIDIpKV0KLSsJCQkJCSAgICBVTlNQRUNfU1BfU0VUKSkKLSsJICAgICAgKGNsb2JiZXIgKG1hdGNoX2R1cCAyKSldKV0KLSsgICIKLSt7Ci0rICBpZiAoZmxhZ19waWMpCi0rICAgIHsKLSsgICAgICAvKiBGb3JjZXMgcmVjb21wdXRpbmcgb2YgR09UIGJhc2Ugbm93LiAgKi8KLSsgICAgICBsZWdpdGltaXplX3BpY19hZGRyZXNzIChvcGVyYW5kc1sxXSwgU0ltb2RlLCBvcGVyYW5kc1syXSwgb3BlcmFuZHNbM10sCi0rCQkJICAgICAgdHJ1ZSAvKmNvbXB1dGVfbm93Ki8pOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAoYWRkcmVzc19vcGVyYW5kIChvcGVyYW5kc1sxXSwgU0ltb2RlKSkKLSsJb3BlcmFuZHNbMl0gPSBvcGVyYW5kc1sxXTsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBydHggbWVtID0gWEVYUCAoZm9yY2VfY29uc3RfbWVtIChTSW1vZGUsIG9wZXJhbmRzWzFdKSwgMCk7Ci0rCSAgZW1pdF9tb3ZlX2luc24gKG9wZXJhbmRzWzJdLCBtZW0pOwotKwl9Ci0rICAgIH0KLSt9IgotKyAgWyhzZXRfYXR0ciAiYXJjaCIgInQxLDMyIildCi0rKQotKwotKyhkZWZpbmVfaW5zbiAiKnN0YWNrX3Byb3RlY3Rfc2V0X2luc24iCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJtZW1vcnlfb3BlcmFuZCIgIj1tLG0iKQotKwkodW5zcGVjOlNJIFsobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDEgInJlZ2lzdGVyX29wZXJhbmQiICIrJmwsJnIiKSldCi0rCSBVTlNQRUNfU1BfU0VUKSkKLSsgICAoY2xvYmJlciAobWF0Y2hfZHVwIDEpKV0KLSsgICIiCi0rICAiQAotKyAgIGxkclxcdCUxLCBbJTFdXDtzdHJcXHQlMSwgJTBcO21vdnNcdCUxLCMwCi0rICAgbGRyXFx0JTEsIFslMV1cO3N0clxcdCUxLCAlMFw7bW92XHQlMSwjMCIKLSsgIFsoc2V0X2F0dHIgImxlbmd0aCIgIjgsMTIiKQotKyAgIChzZXRfYXR0ciAiY29uZHMiICJjbG9iLG5vY29uZCIpCi0rICAgKHNldF9hdHRyICJ0eXBlIiAibXVsdGlwbGUiKQotKyAgIChzZXRfYXR0ciAiYXJjaCIgInQxLDMyIildCi0rKQotKwotKyhkZWZpbmVfZXhwYW5kICJzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QiCi0rICBbKHBhcmFsbGVsCi0rICAgICBbKHNldCAocGMpCi0rCSAgIChpZl90aGVuX2Vsc2UKLSsJCShlcSAobWF0Y2hfb3BlcmFuZDpTSSAwICJtZW1vcnlfb3BlcmFuZCIgIiIpCi0rCQkgICAgKHVuc3BlYzpTSSBbKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3VhcmRfb3BlcmFuZCIgIiIpXQotKwkJCSAgICAgICBVTlNQRUNfU1BfVEVTVCkpCi0rCQkobGFiZWxfcmVmIChtYXRjaF9vcGVyYW5kIDIpKQotKwkJKHBjKSkpCi0rICAgICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgMyAiIikpCi0rICAgICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgNCAiIikpCi0rICAgICAgKGNsb2JiZXIgKHJlZzpDQyBDQ19SRUdOVU0pKV0pXQotKyAgIiIKLSsgICIiCi0rKQotKwotKzs7IFVzZSBhIHNlcGFyYXRlIGluc24gZnJvbSB0aGUgYWJvdmUgZXhwYW5kIHRvIGJlIGFibGUgdG8gaGF2ZSB0aGUgbWVtIG91dHNpZGUKLSs7OyB0aGUgb3BlcmFuZCAjMSB3aGVuIHJlZ2lzdGVyIGFsbG9jYXRpb24gY29tZXMuIFRoaXMgaXMgbmVlZGVkIHRvIGF2b2lkIExSQQotKzs7IHRyeSB0byByZWxvYWQgdGhlIGd1YXJkIHNpbmNlIHdlIG5lZWQgdG8gY29udHJvbCBob3cgUElDIGFjY2VzcyBpcyBkb25lIGluCi0rOzsgdGhlIC1mcGljLy1mUElDIGNhc2UgKHNlZSBDT01QVVRFX05PVyBwYXJhbWV0ZXIgd2hlbiBjYWxsaW5nCi0rOzsgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAoKSkuCi0rKGRlZmluZV9pbnNuX2FuZF9zcGxpdCAiKnN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdF9pbnNuIgotKyAgWyhzZXQgKHBjKQotKwkoaWZfdGhlbl9lbHNlCi0rCQkoZXEgKG1hdGNoX29wZXJhbmQ6U0kgMCAibWVtb3J5X29wZXJhbmQiICJtLG0iKQotKwkJICAgICh1bnNwZWM6U0kgWyhtZW06U0kgKG1hdGNoX29wZXJhbmQ6U0kgMSAiZ3VhcmRfYWRkcl9vcGVyYW5kIiAiWCxYIikpXQotKwkJCSAgICAgICBVTlNQRUNfU1BfVEVTVCkpCi0rCQkobGFiZWxfcmVmIChtYXRjaF9vcGVyYW5kIDIpKQotKwkJKHBjKSkpCi0rICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgMyAiPSZsLCZyIikpCi0rICAgKGNsb2JiZXIgKG1hdGNoX3NjcmF0Y2g6U0kgNCAiPSZsLCZyIikpCi0rICAgKGNsb2JiZXIgKHJlZzpDQyBDQ19SRUdOVU0pKV0KLSsgICIiCi0rICAiIyIKLSsgICJyZWxvYWRfY29tcGxldGVkIgotKyAgWyhjb25zdF9pbnQgMCldCi0rewotKyAgcnR4IGVxOwotKwotKyAgaWYgKGZsYWdfcGljKQotKyAgICB7Ci0rICAgICAgLyogRm9yY2VzIHJlY29tcHV0aW5nIG9mIEdPVCBiYXNlIG5vdy4gICovCi0rICAgICAgbGVnaXRpbWl6ZV9waWNfYWRkcmVzcyAob3BlcmFuZHNbMV0sIFNJbW9kZSwgb3BlcmFuZHNbM10sIG9wZXJhbmRzWzRdLAotKwkJCSAgICAgIHRydWUgLypjb21wdXRlX25vdyovKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKGFkZHJlc3Nfb3BlcmFuZCAob3BlcmFuZHNbMV0sIFNJbW9kZSkpCi0rCW9wZXJhbmRzWzNdID0gb3BlcmFuZHNbMV07Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgcnR4IG1lbSA9IFhFWFAgKGZvcmNlX2NvbnN0X21lbSAoU0ltb2RlLCBvcGVyYW5kc1sxXSksIDApOwotKwkgIGVtaXRfbW92ZV9pbnNuIChvcGVyYW5kc1szXSwgbWVtKTsKLSsJfQotKyAgICB9Ci0rICBpZiAoVEFSR0VUXzMyQklUKQotKyAgICB7Ci0rICAgICAgZW1pdF9pbnNuIChnZW5fYXJtX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuIChvcGVyYW5kc1s0XSwgb3BlcmFuZHNbMF0sCi0rCQkJCQkJICBvcGVyYW5kc1szXSkpOwotKyAgICAgIHJ0eCBjY19yZWcgPSBnZW5fcnR4X1JFRyAoQ0NfWm1vZGUsIENDX1JFR05VTSk7Ci0rICAgICAgZXEgPSBnZW5fcnR4X0VRIChDQ19abW9kZSwgY2NfcmVnLCBjb25zdDBfcnR4KTsKLSsgICAgICBlbWl0X2p1bXBfaW5zbiAoZ2VuX2FybV9jb25kX2JyYW5jaCAob3BlcmFuZHNbMl0sIGVxLCBjY19yZWcpKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgZW1pdF9pbnNuIChnZW5fdGh1bWIxX3N0YWNrX3Byb3RlY3RfdGVzdF9pbnNuIChvcGVyYW5kc1s0XSwgb3BlcmFuZHNbMF0sCi0rCQkJCQkJICAgICBvcGVyYW5kc1szXSkpOwotKyAgICAgIGVxID0gZ2VuX3J0eF9FUSAoVk9JRG1vZGUsIG9wZXJhbmRzWzRdLCBjb25zdDBfcnR4KTsKLSsgICAgICBlbWl0X2p1bXBfaW5zbiAoZ2VuX2NicmFuY2hzaTQgKGVxLCBvcGVyYW5kc1s0XSwgY29uc3QwX3J0eCwKLSsJCQkJICAgICAgb3BlcmFuZHNbMl0pKTsKLSsgICAgfQotKyAgRE9ORTsKLSt9Ci0rICBbKHNldF9hdHRyICJhcmNoIiAidDEsMzIiKV0KLSspCi0rCi0rKGRlZmluZV9pbnNuICJhcm1fc3RhY2tfcHJvdGVjdF90ZXN0X2luc24iCi0rICBbKHNldCAocmVnOkNDX1ogQ0NfUkVHTlVNKQotKwkoY29tcGFyZTpDQ19aICh1bnNwZWM6U0kgWyhtYXRjaF9vcGVyYW5kOlNJIDEgIm1lbW9yeV9vcGVyYW5kIiAibSxtIikKLSsJCQkJICAobWVtOlNJIChtYXRjaF9vcGVyYW5kOlNJIDIgInJlZ2lzdGVyX29wZXJhbmQiICIrbCxyIikpXQotKwkJCQkgVU5TUEVDX1NQX1RFU1QpCi0rCQkgICAgICAoY29uc3RfaW50IDApKSkKLSsgICAoY2xvYmJlciAobWF0Y2hfb3BlcmFuZDpTSSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPSZsLCZyIikpCi0rICAgKGNsb2JiZXIgKG1hdGNoX2R1cCAyKSldCi0rICAiVEFSR0VUXzMyQklUIgotKyAgImxkclx0JTAsIFslMl1cO2xkclx0JTIsICUxXDtlb3JzXHQlMCwgJTIsICUwIgotKyAgWyhzZXRfYXR0ciAibGVuZ3RoIiAiOCwxMiIpCi0rICAgKHNldF9hdHRyICJjb25kcyIgInNldCIpCi0rICAgKHNldF9hdHRyICJ0eXBlIiAibXVsdGlwbGUiKQotKyAgIChzZXRfYXR0ciAiYXJjaCIgInQsMzIiKV0KLSspCi0rCi0gKGRlZmluZV9leHBhbmQgImNhc2VzaSIKLSAgIFsobWF0Y2hfb3BlcmFuZDpTSSAwICJzX3JlZ2lzdGVyX29wZXJhbmQiICIiKQk7IGluZGV4IHRvIGp1bXAgb24KLSAgICAobWF0Y2hfb3BlcmFuZDpTSSAxICJjb25zdF9pbnRfb3BlcmFuZCIgIiIpCTsgbG93ZXIgYm91bmQKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9wcmVkaWNhdGVzLm1kIGIvZ2NjL2NvbmZpZy9hcm0vcHJlZGljYXRlcy5tZAotaW5kZXggN2UxOThmOWJjZTQuLjY5NzE4ZWU5YzdhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vcHJlZGljYXRlcy5tZAotKysrIGIvZ2NjL2NvbmZpZy9hcm0vcHJlZGljYXRlcy5tZAotQEAgLTMxLDYgKzMxLDIzIEBACi0gCSAgICAgIHx8IFJFR05PX1JFR19DTEFTUyAoUkVHTk8gKG9wKSkgIT0gTk9fUkVHUykpOwotIH0pCi0gCi0rOyBQcmVkaWNhdGUgZm9yIHN0YWNrIHByb3RlY3RvciBndWFyZCdzIGFkZHJlc3MgaW4KLSs7IHN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0X2luc24gYW5kIHN0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdF9pbnNuIHBhdHRlcm5zCi0rKGRlZmluZV9wcmVkaWNhdGUgImd1YXJkX2FkZHJfb3BlcmFuZCIKLSsgIChtYXRjaF90ZXN0ICJ0cnVlIikKLSt7Ci0rICByZXR1cm4gKENPTlNUQU5UX0FERFJFU1NfUCAob3ApCi0rCSAgfHwgIXRhcmdldG0uY2Fubm90X2ZvcmNlX2NvbnN0X21lbSAobW9kZSwgb3ApKTsKLSt9KQotKwotKzsgUHJlZGljYXRlIGZvciBzdGFjayBwcm90ZWN0b3IgZ3VhcmQgaW4gc3RhY2tfcHJvdGVjdF9jb21iaW5lZF9zZXQgYW5kCi0rOyBzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QgcGF0dGVybnMKLSsoZGVmaW5lX3ByZWRpY2F0ZSAiZ3VhcmRfb3BlcmFuZCIKLSsgIChtYXRjaF9jb2RlICJtZW0iKQotK3sKLSsgIHJldHVybiBndWFyZF9hZGRyX29wZXJhbmQgKFhFWFAgKG9wLCAwKSwgbW9kZSk7Ci0rfSkKLSsKLSAoZGVmaW5lX3ByZWRpY2F0ZSAiaW1tX2Zvcl9uZW9uX2ludl9sb2dpY19vcGVyYW5kIgotICAgKG1hdGNoX2NvZGUgImNvbnN0X3ZlY3RvciIpCi0gewotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL3RodW1iMS5tZCBiL2djYy9jb25maWcvYXJtL3RodW1iMS5tZAotaW5kZXggMTlkY2RiY2RkNzMuLmNkMTk5YzljNTI5IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vdGh1bWIxLm1kCi0rKysgYi9nY2MvY29uZmlnL2FybS90aHVtYjEubWQKLUBAIC0xOTYyLDQgKzE5NjIsMTcgQEAKLSAgIH0iCi0gICBbKHNldF9hdHRyICJ0eXBlIiAibW92X3JlZyIpXQotICkKLSsKLSsoZGVmaW5lX2luc24gInRodW1iMV9zdGFja19wcm90ZWN0X3Rlc3RfaW5zbiIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9JmwiKQotKwkodW5zcGVjOlNJIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJtZW1vcnlfb3BlcmFuZCIgIm0iKQotKwkJICAgIChtZW06U0kgKG1hdGNoX29wZXJhbmQ6U0kgMiAicmVnaXN0ZXJfb3BlcmFuZCIgIitsIikpXQotKwkgVU5TUEVDX1NQX1RFU1QpKQotKyAgIChjbG9iYmVyIChtYXRjaF9kdXAgMikpXQotKyAgIlRBUkdFVF9USFVNQjEiCi0rICAibGRyXHQlMCwgWyUyXVw7bGRyXHQlMiwgJTFcO2VvcnNcdCUwLCAlMiwgJTAiCi0rICBbKHNldF9hdHRyICJsZW5ndGgiICI4IikKLSsgICAoc2V0X2F0dHIgImNvbmRzIiAic2V0IikKLSsgICAoc2V0X2F0dHIgInR5cGUiICJtdWx0aXBsZSIpXQotKykKLSAMCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vdW5zcGVjcy5tZCBiL2djYy9jb25maWcvYXJtL3Vuc3BlY3MubWQKLWluZGV4IDE5NDE2NzM2ZWY5Li44ZjlkYmNiMDhkYyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL3Vuc3BlY3MubWQKLSsrKyBiL2djYy9jb25maWcvYXJtL3Vuc3BlY3MubWQKLUBAIC04Niw2ICs4Niw5IEBACi0gICBVTlNQRUNfUFJPQkVfU1RBQ0sgICAgOyBQcm9iZSBzdGFjayBtZW1vcnkgcmVmZXJlbmNlCi0gICBVTlNQRUNfTk9OU0VDVVJFX01FTQk7IFJlcHJlc2VudCBub24tc2VjdXJlIG1lbW9yeSBpbiBBUk12OC1NIHdpdGgKLSAJCQk7IHNlY3VyaXR5IGV4dGVuc2lvbgotKyAgVU5TUEVDX1NQX1NFVAkJOyBSZXByZXNlbnQgdGhlIHNldHRpbmcgb2Ygc3RhY2sgcHJvdGVjdG9yJ3MgY2FuYXJ5Ci0rICBVTlNQRUNfU1BfVEVTVAk7IFJlcHJlc2VudCB0aGUgdGVzdGluZyBvZiBzdGFjayBwcm90ZWN0b3IncyBjYW5hcnkKLSsJCQk7IGFnYWluc3QgdGhlIGd1YXJkLgotIF0pCi0gCi0gKGRlZmluZV9jX2VudW0gInVuc3BlYyIgWwotZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBiL2djYy9kb2MvbWQudGV4aQotaW5kZXggMjk1ZmMxZjExNDMuLjg5NTMwOWIyZjNjIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9tZC50ZXhpCi0rKysgYi9nY2MvZG9jL21kLnRleGkKLUBAIC03NDUwLDIyICs3NDUwLDYxIEBAIGJ1aWx0aW5zLgotIFRoZSBnZXQvc2V0IHBhdHRlcm5zIGhhdmUgYSBzaW5nbGUgb3V0cHV0L2lucHV0IG9wZXJhbmQgcmVzcGVjdGl2ZWx5LAotIHdpdGggQHZhcnttb2RlfSBpbnRlbmRlZCB0byBiZSBAY29kZXtQbW9kZX0uCi0gCi0rQGNpbmRleCBAY29kZXtzdGFja19wcm90ZWN0X2NvbWJpbmVkX3NldH0gaW5zdHJ1Y3Rpb24gcGF0dGVybgotK0BpdGVtIEBzYW1we3N0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0fQotK1RoaXMgcGF0dGVybiwgaWYgZGVmaW5lZCwgbW92ZXMgYSBAY29kZXtwdHJfbW9kZX0gdmFsdWUgZnJvbSBhbiBhZGRyZXNzCi0rd2hvc2UgZGVjbGFyYXRpb24gUlRYIGlzIGdpdmVuIGluIG9wZXJhbmQgMSB0byB0aGUgbWVtb3J5IGluIG9wZXJhbmQgMAotK3dpdGhvdXQgbGVhdmluZyB0aGUgdmFsdWUgaW4gYSByZWdpc3RlciBhZnRlcndhcmQuICBJZiBzZXZlcmFsCi0raW5zdHJ1Y3Rpb25zIGFyZSBuZWVkZWQgYnkgdGhlIHRhcmdldCB0byBwZXJmb3JtIHRoZSBvcGVyYXRpb24gKGVnLiB0bwotK2xvYWQgdGhlIGFkZHJlc3MgZnJvbSBhIEdPVCBlbnRyeSB0aGVuIGxvYWQgdGhlIEBjb2Rle3B0cl9tb2RlfSB2YWx1ZQotK2FuZCBmaW5hbGx5IHN0b3JlIGl0KSwgaXQgaXMgdGhlIGJhY2tlbmQncyByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgbm8KLStpbnRlcm1lZGlhdGUgcmVzdWx0IGdldHMgc3BpbGxlZC4gIFRoaXMgaXMgdG8gYXZvaWQgbGVha2luZyB0aGUgdmFsdWUKLStzb21lIHBsYWNlIHRoYXQgYW4gYXR0YWNrZXIgbWlnaHQgdXNlIHRvIHJld3JpdGUgdGhlIHN0YWNrIGd1YXJkIHNsb3QKLSthZnRlciBoYXZpbmcgY2xvYmJlcmVkIGl0LgotKwotK0lmIHRoaXMgcGF0dGVybiBpcyBub3QgZGVmaW5lZCwgdGhlbiB0aGUgYWRkcmVzcyBkZWNsYXJhdGlvbiBpcwotK2V4cGFuZGVkIGZpcnN0IGluIHRoZSBzdGFuZGFyZCB3YXkgYW5kIGEgQGNvZGV7c3RhY2tfcHJvdGVjdF9zZXR9Ci0rcGF0dGVybiBpcyB0aGVuIGdlbmVyYXRlZCB0byBtb3ZlIHRoZSB2YWx1ZSBmcm9tIHRoYXQgYWRkcmVzcyB0byB0aGUKLSthZGRyZXNzIGluIG9wZXJhbmQgMC4KLSsKLSBAY2luZGV4IEBjb2Rle3N0YWNrX3Byb3RlY3Rfc2V0fSBpbnN0cnVjdGlvbiBwYXR0ZXJuCi0gQGl0ZW0gQHNhbXB7c3RhY2tfcHJvdGVjdF9zZXR9Ci0tVGhpcyBwYXR0ZXJuLCBpZiBkZWZpbmVkLCBtb3ZlcyBhIEBjb2Rle3B0cl9tb2RlfSB2YWx1ZSBmcm9tIHRoZSBtZW1vcnkKLS1pbiBvcGVyYW5kIDEgdG8gdGhlIG1lbW9yeSBpbiBvcGVyYW5kIDAgd2l0aG91dCBsZWF2aW5nIHRoZSB2YWx1ZSBpbgotLWEgcmVnaXN0ZXIgYWZ0ZXJ3YXJkLiAgVGhpcyBpcyB0byBhdm9pZCBsZWFraW5nIHRoZSB2YWx1ZSBzb21lIHBsYWNlCi0tdGhhdCBhbiBhdHRhY2tlciBtaWdodCB1c2UgdG8gcmV3cml0ZSB0aGUgc3RhY2sgZ3VhcmQgc2xvdCBhZnRlcgotLWhhdmluZyBjbG9iYmVyZWQgaXQuCi0rVGhpcyBwYXR0ZXJuLCBpZiBkZWZpbmVkLCBtb3ZlcyBhIEBjb2Rle3B0cl9tb2RlfSB2YWx1ZSBmcm9tIHRoZSB2YWxpZAotK21lbW9yeSBsb2NhdGlvbiBpbiBvcGVyYW5kIDEgdG8gdGhlIG1lbW9yeSBpbiBvcGVyYW5kIDAgd2l0aG91dCBsZWF2aW5nCi0rdGhlIHZhbHVlIGluIGEgcmVnaXN0ZXIgYWZ0ZXJ3YXJkLiAgVGhpcyBpcyB0byBhdm9pZCBsZWFraW5nIHRoZSB2YWx1ZQotK3NvbWUgcGxhY2UgdGhhdCBhbiBhdHRhY2tlciBtaWdodCB1c2UgdG8gcmV3cml0ZSB0aGUgc3RhY2sgZ3VhcmQgc2xvdAotK2FmdGVyIGhhdmluZyBjbG9iYmVyZWQgaXQuCi0rCi0rTm90ZTogb24gdGFyZ2V0cyB3aGVyZSB0aGUgYWRkcmVzc2luZyBtb2RlcyBkbyBub3QgYWxsb3cgdG8gbG9hZAotK2RpcmVjdGx5IGZyb20gc3RhY2sgZ3VhcmQgYWRkcmVzcywgdGhlIGFkZHJlc3MgaXMgZXhwYW5kZWQgaW4gYSBzdGFuZGFyZAotK3dheSBmaXJzdCB3aGljaCBjb3VsZCBjYXVzZSBzb21lIHNwaWxscy4KLSAKLSBJZiB0aGlzIHBhdHRlcm4gaXMgbm90IGRlZmluZWQsIHRoZW4gYSBwbGFpbiBtb3ZlIHBhdHRlcm4gaXMgZ2VuZXJhdGVkLgotIAotK0BjaW5kZXggQGNvZGV7c3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0fSBpbnN0cnVjdGlvbiBwYXR0ZXJuCi0rQGl0ZW0gQHNhbXB7c3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0fQotK1RoaXMgcGF0dGVybiwgaWYgZGVmaW5lZCwgY29tcGFyZXMgYSBAY29kZXtwdHJfbW9kZX0gdmFsdWUgZnJvbSBhbgotK2FkZHJlc3Mgd2hvc2UgZGVjbGFyYXRpb24gUlRYIGlzIGdpdmVuIGluIG9wZXJhbmQgMSB3aXRoIHRoZSBtZW1vcnkgaW4KLStvcGVyYW5kIDAgd2l0aG91dCBsZWF2aW5nIHRoZSB2YWx1ZSBpbiBhIHJlZ2lzdGVyIGFmdGVyd2FyZCBhbmQKLSticmFuY2hlcyB0byBvcGVyYW5kIDIgaWYgdGhlIHZhbHVlcyB3ZXJlIGVxdWFsLiAgSWYgc2V2ZXJhbAotK2luc3RydWN0aW9ucyBhcmUgbmVlZGVkIGJ5IHRoZSB0YXJnZXQgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uIChlZy4gdG8KLStsb2FkIHRoZSBhZGRyZXNzIGZyb20gYSBHT1QgZW50cnkgdGhlbiBsb2FkIHRoZSBAY29kZXtwdHJfbW9kZX0gdmFsdWUKLSthbmQgZmluYWxseSBzdG9yZSBpdCksIGl0IGlzIHRoZSBiYWNrZW5kJ3MgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIG5vCi0raW50ZXJtZWRpYXRlIHJlc3VsdCBnZXRzIHNwaWxsZWQuICBUaGlzIGlzIHRvIGF2b2lkIGxlYWtpbmcgdGhlIHZhbHVlCi0rc29tZSBwbGFjZSB0aGF0IGFuIGF0dGFja2VyIG1pZ2h0IHVzZSB0byByZXdyaXRlIHRoZSBzdGFjayBndWFyZCBzbG90Ci0rYWZ0ZXIgaGF2aW5nIGNsb2JiZXJlZCBpdC4KLSsKLStJZiB0aGlzIHBhdHRlcm4gaXMgbm90IGRlZmluZWQsIHRoZW4gdGhlIGFkZHJlc3MgZGVjbGFyYXRpb24gaXMKLStleHBhbmRlZCBmaXJzdCBpbiB0aGUgc3RhbmRhcmQgd2F5IGFuZCBhIEBjb2Rle3N0YWNrX3Byb3RlY3RfdGVzdH0KLStwYXR0ZXJuIGlzIHRoZW4gZ2VuZXJhdGVkIHRvIGNvbXBhcmUgdGhlIHZhbHVlIGZyb20gdGhhdCBhZGRyZXNzIHRvIHRoZQotK3ZhbHVlIGF0IHRoZSBtZW1vcnkgaW4gb3BlcmFuZCAwLgotKwotIEBjaW5kZXggQGNvZGV7c3RhY2tfcHJvdGVjdF90ZXN0fSBpbnN0cnVjdGlvbiBwYXR0ZXJuCi0gQGl0ZW0gQHNhbXB7c3RhY2tfcHJvdGVjdF90ZXN0fQotIFRoaXMgcGF0dGVybiwgaWYgZGVmaW5lZCwgY29tcGFyZXMgYSBAY29kZXtwdHJfbW9kZX0gdmFsdWUgZnJvbSB0aGUKLS1tZW1vcnkgaW4gb3BlcmFuZCAxIHdpdGggdGhlIG1lbW9yeSBpbiBvcGVyYW5kIDAgd2l0aG91dCBsZWF2aW5nIHRoZQotLXZhbHVlIGluIGEgcmVnaXN0ZXIgYWZ0ZXJ3YXJkIGFuZCBicmFuY2hlcyB0byBvcGVyYW5kIDIgaWYgdGhlIHZhbHVlcwotLXdlcmUgZXF1YWwuCi0rdmFsaWQgbWVtb3J5IGxvY2F0aW9uIGluIG9wZXJhbmQgMSB3aXRoIHRoZSBtZW1vcnkgaW4gb3BlcmFuZCAwIHdpdGhvdXQKLStsZWF2aW5nIHRoZSB2YWx1ZSBpbiBhIHJlZ2lzdGVyIGFmdGVyd2FyZCBhbmQgYnJhbmNoZXMgdG8gb3BlcmFuZCAyIGlmCi0rdGhlIHZhbHVlcyB3ZXJlIGVxdWFsLgotIAotIElmIHRoaXMgcGF0dGVybiBpcyBub3QgZGVmaW5lZCwgdGhlbiBhIHBsYWluIGNvbXBhcmUgcGF0dGVybiBhbmQKLSBjb25kaXRpb25hbCBicmFuY2ggcGF0dGVybiBpcyB1c2VkLgotZGlmZiAtLWdpdCBhL2djYy9mdW5jdGlvbi5jIGIvZ2NjL2Z1bmN0aW9uLmMKLWluZGV4IDg1YTVkOWY0M2Y3Li42OTUyM2MxZDcyMyAxMDA2NDQKLS0tLSBhL2djYy9mdW5jdGlvbi5jCi0rKysgYi9nY2MvZnVuY3Rpb24uYwotQEAgLTQ5MzcsMTggKzQ5MzcsMzQgQEAgc3RhY2tfcHJvdGVjdF9lcGlsb2d1ZSAodm9pZCkKLSAgIHRyZWUgZ3VhcmRfZGVjbCA9IHRhcmdldG0uc3RhY2tfcHJvdGVjdF9ndWFyZCAoKTsKLSAgIHJ0eF9jb2RlX2xhYmVsICpsYWJlbCA9IGdlbl9sYWJlbF9ydHggKCk7Ci0gICBydHggeCwgeTsKLS0gIHJ0eF9pbnNuICpzZXE7Ci0rICBydHhfaW5zbiAqc2VxID0gTlVMTDsKLSAKLSAgIHggPSBleHBhbmRfbm9ybWFsIChjcnRsLT5zdGFja19wcm90ZWN0X2d1YXJkKTsKLS0gIGlmIChndWFyZF9kZWNsKQotLSAgICB5ID0gZXhwYW5kX25vcm1hbCAoZ3VhcmRfZGVjbCk7Ci0rCi0rICBpZiAodGFyZ2V0bS5oYXZlX3N0YWNrX3Byb3RlY3RfY29tYmluZWRfdGVzdCAoKSAmJiBndWFyZF9kZWNsKQotKyAgICB7Ci0rICAgICAgZ2NjX2Fzc2VydCAoREVDTF9QIChndWFyZF9kZWNsKSk7Ci0rICAgICAgeSA9IERFQ0xfUlRMIChndWFyZF9kZWNsKTsKLSsgICAgICAvKiBBbGxvdyB0aGUgdGFyZ2V0IHRvIGNvbXB1dGUgYWRkcmVzcyBvZiBZIGFuZCBjb21wYXJlIGl0IHdpdGggWCB3aXRob3V0Ci0rCSBsZWFraW5nIFkgaW50byBhIHJlZ2lzdGVyLiAgVGhpcyBjb21iaW5lZCBhZGRyZXNzICsgY29tcGFyZSBwYXR0ZXJuCi0rCSBhbGxvd3MgdGhlIHRhcmdldCB0byBwcmV2ZW50IHNwaWxsaW5nIG9mIGFueSBpbnRlcm1lZGlhdGUgcmVzdWx0cyBieQotKwkgc3BsaXR0aW5nIGl0IGFmdGVyIHJlZ2lzdGVyIGFsbG9jYXRvci4gICovCi0rICAgICAgc2VxID0gdGFyZ2V0bS5nZW5fc3RhY2tfcHJvdGVjdF9jb21iaW5lZF90ZXN0ICh4LCB5LCBsYWJlbCk7Ci0rICAgIH0KLSAgIGVsc2UKLS0gICAgeSA9IGNvbnN0MF9ydHg7Ci0rICAgIHsKLSsgICAgICBpZiAoZ3VhcmRfZGVjbCkKLSsJeSA9IGV4cGFuZF9ub3JtYWwgKGd1YXJkX2RlY2wpOwotKyAgICAgIGVsc2UKLSsJeSA9IGNvbnN0MF9ydHg7Ci0rCi0rICAgICAgLyogQWxsb3cgdGhlIHRhcmdldCB0byBjb21wYXJlIFkgd2l0aCBYIHdpdGhvdXQgbGVha2luZyBlaXRoZXIgaW50bwotKwkgYSByZWdpc3Rlci4gICovCi0rICAgICAgaWYgKHRhcmdldG0uaGF2ZV9zdGFja19wcm90ZWN0X3Rlc3QgKCkpCi0rCXNlcSA9IHRhcmdldG0uZ2VuX3N0YWNrX3Byb3RlY3RfdGVzdCAoeCwgeSwgbGFiZWwpOwotKyAgICB9Ci0gCi0tICAvKiBBbGxvdyB0aGUgdGFyZ2V0IHRvIGNvbXBhcmUgWSB3aXRoIFggd2l0aG91dCBsZWFraW5nIGVpdGhlciBpbnRvCi0tICAgICBhIHJlZ2lzdGVyLiAgKi8KLS0gIGlmICh0YXJnZXRtLmhhdmVfc3RhY2tfcHJvdGVjdF90ZXN0ICgpCi0tICAgICAgJiYgKChzZXEgPSB0YXJnZXRtLmdlbl9zdGFja19wcm90ZWN0X3Rlc3QgKHgsIHksIGxhYmVsKSkgIT0gTlVMTF9SVFgpKQotKyAgaWYgKHNlcSkKLSAgICAgZW1pdF9pbnNuIChzZXEpOwotICAgZWxzZQotICAgICBlbWl0X2NtcF9hbmRfanVtcF9pbnNucyAoeCwgeSwgRVEsIE5VTExfUlRYLCBwdHJfbW9kZSwgMSwgbGFiZWwpOwotZGlmZiAtLWdpdCBhL2djYy90YXJnZXQtaW5zbnMuZGVmIGIvZ2NjL3RhcmdldC1pbnNucy5kZWYKLWluZGV4IDlhNTUyYzNkMTFjLi5kMzk4ODliMzUyMiAxMDA2NDQKLS0tLSBhL2djYy90YXJnZXQtaW5zbnMuZGVmCi0rKysgYi9nY2MvdGFyZ2V0LWluc25zLmRlZgotQEAgLTk2LDcgKzk2LDkgQEAgREVGX1RBUkdFVF9JTlNOIChzaWJjYWxsX3ZhbHVlLCAocnR4IHgwLCBydHggeDEsIHJ0eCBvcHQyLCBydHggb3B0MywKLSBERUZfVEFSR0VUX0lOU04gKHNpbXBsZV9yZXR1cm4sICh2b2lkKSkKLSBERUZfVEFSR0VUX0lOU04gKHNwbGl0X3N0YWNrX3Byb2xvZ3VlLCAodm9pZCkpCi0gREVGX1RBUkdFVF9JTlNOIChzcGxpdF9zdGFja19zcGFjZV9jaGVjaywgKHJ0eCB4MCwgcnR4IHgxKSkKLStERUZfVEFSR0VUX0lOU04gKHN0YWNrX3Byb3RlY3RfY29tYmluZWRfc2V0LCAocnR4IHgwLCBydHggeDEpKQotIERFRl9UQVJHRVRfSU5TTiAoc3RhY2tfcHJvdGVjdF9zZXQsIChydHggeDAsIHJ0eCB4MSkpCi0rREVGX1RBUkdFVF9JTlNOIChzdGFja19wcm90ZWN0X2NvbWJpbmVkX3Rlc3QsIChydHggeDAsIHJ0eCB4MSwgcnR4IHgyKSkKLSBERUZfVEFSR0VUX0lOU04gKHN0YWNrX3Byb3RlY3RfdGVzdCwgKHJ0eCB4MCwgcnR4IHgxLCBydHggeDIpKQotIERFRl9UQVJHRVRfSU5TTiAoc3RvcmVfbXVsdGlwbGUsIChydHggeDAsIHJ0eCB4MSwgcnR4IHgyKSkKLSBERUZfVEFSR0VUX0lOU04gKHRhYmxlanVtcCwgKHJ0eCB4MCwgcnR4IHgxKSkKLS0tIAotMi4yMS4wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy9DVkUtMjAxOS0xNDI1MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOC4zL0NWRS0yMDE5LTE0MjUwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMjc2ODQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTguMy9DVkUtMjAxOS0xNDI1MC5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIGE0ZjFiNThlYjQ4YjM0OWE1ZjM1M2JjNjljMzBiZTU1MzUwNmQzM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiByZ3VlbnRoIDxyZ3VlbnRoQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KK0RhdGU6IFRodSwgMjUgSnVsIDIwMTkgMTA6NDg6MjYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gMjAxOS0wNy0yNSAgUmljaGFyZCBCaWVuZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KKworCVBSIGx0by85MDkyNAorCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKKwkyMDE5LTA3LTEyICBSZW4gS2ltdXJhICA8cmt4MTIwOWRldkBnbWFpbC5jb20+CisKKwkqIHNpbXBsZS1vYmplY3QtZWxmLmMgKHNpbXBsZV9vYmplY3RfZWxmX21hdGNoKTogQ2hlY2sgemVybyB2YWx1ZQorCXNoc3RybmR4LgorCisKK2dpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy04LWJyYW5jaEAyNzM3OTQgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK0FmZmVjdGVzOiA8ICA5LjIKK0NWRTogQ1ZFLTIwMTktMTQyNTAKK0Ryb3BwZWQgY2hhbmdlbG9nCitTaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPEFrdXN0cmVAbXZpc3RhLmNvbT4KKworLS0tCisgbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgfCA4ICsrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCisKK0luZGV4OiBnY2MtOC4yLjAvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOC4yLjAub3JpZy9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworKysrIGdjYy04LjIuMC9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworQEAgLTU0OSw2ICs1NDksMTQgQEAgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2ggKHVuc2lnbmVkIGNoYXIgaAorICAgICAgIHJldHVybiBOVUxMOworICAgICB9CisgCisrICBpZiAoZW9yLT5zaHN0cm5keCA9PSAwKQorKyAgICB7CisrICAgICAgKmVycm1zZyA9ICJpbnZhbGlkIEVMRiBzaHN0cm5keCA9PSAwIjsKKysgICAgICAqZXJyID0gMDsKKysgICAgICBYREVMRVRFIChlb3IpOworKyAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisrCisgICByZXR1cm4gKHZvaWQgKikgZW9yOworIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLmluYwppbmRleCAxYzNlMjAwLi4wMWQzYmYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jCkBAIC02NCw2ICs2NCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0MjUwLnBhdGNoIFwKICIKIFMgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCiBTUkNfVVJJW21kNXN1bV0gPSAiMzgxOGFkODYwMDQ0N2YwNTM0OTA5ODIzMmMyZGRjNzgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKaW5kZXggMjE5MDhiYy4uNjZmYjI0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gYTkzNzQzNzMyYjIxMjVhZWJkOWE2ZDY1ZTk5OWQ3NTA2YjAxZDZiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzJmYzM5NzViY2Q3MjBiMmY4MDQwZmE4N2NkMjNkM2RiNGM1OTc1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI0OjUwICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMzZdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCiAgcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIKIAogVGhpcyBwYXRjaCBkZWZpbmVzIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKQEAgLTIzLDExICsyMywxMiBAQAogIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KICBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KICBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCisgZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oICAgICB8ICAyICstCiAgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDE1ICsrKysrLS0tLS0tLS0tLQogIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQogIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQogIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCi0gMTEgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCisgMTIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAogaW5kZXggODI0ODYxYmVmZWMuLjZhZmFjY2UzMjkyIDEwMDY0NApAQCAtMTUyLDYgKzE1MywxOSBAQAogIAogICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKICAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCitpbmRleCA1OGRkMThiODlmMy4uMTEyYmE5Y2Q3NjQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAorQEAgLTIyLDcgKzIyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICAgR05VX1VTRVJfVEFSR0VUX09TX0NQUF9CVUlMVElOUygpOwkJCQlcCisgICB9IHdoaWxlICgwKQorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKKyAKKyAjZGVmaW5lIE1VU0xfQUJJX1NVRkZJWCBcCisgICAiJXttYWJpPWlscDMyOi1zZn0iIFwKIGRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKIGluZGV4IDk5NDZkM2ZlZDk0Li40NWE5YTdjYWU1OSAxMDA2NDQKIC0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaApAQCAtMjI3LDYgKzI0MSwzIEBACiAgCiAgI2lmZGVmIFNQQVJDX0JJX0FSQ0gKICAKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCmluZGV4IGFmMGVhNWMuLjUzZjllOTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxOS1FbnN1cmUtdGFyZ2V0LWdjYy1oZWFkZXJzLWNhbi1iZS1pbmNsdWRlZC5wYXRjaApAQCAtMjIsOCArMjIsNiBAQAogIGdjYy9nY2MuYyAgICAgICAgfCA3IC0tLS0tLS0KICA0IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDAwNjRhMjgyNDg4Li45OGQxNDg4MTcxZiAxMDA2NDQKIC0tLSBhL2djYy9NYWtlZmlsZS5pbgogKysrIGIvZ2NjL01ha2VmaWxlLmluCiBAQCAtNjE4LDYgKzYxOCw3IEBAIGxpYmV4ZWNkaXIgPSBAbGliZXhlY2RpckAKQEAgLTM0LDcgKzMyLDcgQEAKICAjIERpcmVjdG9yeSBpbiB3aGljaCB0aGUgY29tcGlsZXIgZmluZHMgZXhlY3V0YWJsZXMKICBsaWJleGVjc3ViZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCiAgIyBEaXJlY3RvcnkgaW4gd2hpY2ggYWxsIHBsdWdpbiByZXNvdXJjZXMgYXJlIGluc3RhbGxlZAotQEAgLTI4NjYsNiArMjg2Nyw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgorQEAgLTI4NjYsNiArMjg2Nyw3IEBAIENGTEFHUy1pbnRsLm8gKz0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWQKICAKICBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKICAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCkBAIC00MiwxMSArNDAsOSBAQAogICAgLURGSVhFRF9JTkNMVURFX0RJUj1cIiQobGlic3ViZGlyKS9pbmNsdWRlLWZpeGVkXCIgXAogICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVI9XCIkKGdjY19neHhfaW5jbHVkZV9kaXIpXCIgXAogICAgLURHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1Q9JChnY2NfZ3h4X2luY2x1ZGVfZGlyX2FkZF9zeXNyb290KSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwcGRlZmF1bHQuYyBiL2djYy9jcHBkZWZhdWx0LmMKLWluZGV4IGM0Nzk2Mzg1NjQzLi45ODBlMmJkNDdhNyAxMDA2NDQKIC0tLSBhL2djYy9jcHBkZWZhdWx0LmMKICsrKyBiL2djYy9jcHBkZWZhdWx0LmMKLUBAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KK0BAIC01OSw2ICs1OSwxMCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlCiAgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KICAgICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCiAgI2VuZGlmCkBAIC01Nyw0MiArNTMsMyBAQAogICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgogICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwogICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCi1kaWZmIC0tZ2l0IGEvZ2NjL2RlZmF1bHRzLmggYi9nY2MvZGVmYXVsdHMuaAotaW5kZXggYjc1MzQyNTYxMTkuLjQxY2E1NzliMjY3IDEwMDY0NAotLS0tIGEvZ2NjL2RlZmF1bHRzLmgKLSsrKyBiL2djYy9kZWZhdWx0cy5oCi1AQCAtMTQ1OSw0ICsxNDU5LDEzIEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICNkZWZpbmUgRFdBUkZfR05BVF9FTkNPRElOR1NfREVGQVVMVCBEV0FSRl9HTkFUX0VOQ09ESU5HU19HREIKLSAjZW5kaWYKLSAKLSsvKiBEZWZhdWx0IHByZWZpeGVzIHRvIGF0dGFjaCB0byBjb21tYW5kIG5hbWVzLiAgKi8KLSsKLSsjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMQotKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xICIvbGliLyIKLSsjZW5kaWYKLSsjaWZuZGVmIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMgotKyNkZWZpbmUgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yICIvdXNyL2xpYi8iCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvKiAhIEdDQ19ERUZBVUxUU19IICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCA0ZTdjNDViMjY4Yy4uMWEzNzA0YjI3NjMgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTE0NzAsMTMgKzE0NzAsNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotIAotIC8qIERlZmF1bHQgcHJlZml4ZXMgdG8gYXR0YWNoIHRvIGNvbW1hbmQgbmFtZXMuICAqLwotIAotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8xCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzEgIi9saWIvIgotLSNlbmRpZgotLSNpZm5kZWYgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yCi0tI2RlZmluZSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgIi91c3IvbGliLyIKLS0jZW5kaWYKLS0KLSAjaWZkZWYgQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRSAgLyogRG9uJ3QgdXNlIHRoZXNlIHByZWZpeGVzIGZvciBhIGNyb3NzIGNvbXBpbGVyLiAgKi8KLSAjdW5kZWYgTURfRVhFQ19QUkVGSVgKLSAjdW5kZWYgTURfU1RBUlRGSUxFX1BSRUZJWAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKaW5kZXggZjU3NjliYy4uMzhlYWI1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMC1saWJnY2MtQWRkLWtub2ItdG8tdXNlLWxkYmwtMTI4LW9uLXBwYy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCkBAIC0xLDEyNSArMSw3OSBAQAotRnJvbSBiYWFiNjFhZTM5MzhlZTJmYTllYzAzYTIwNzkzNTA4NTE2YTQ2ZGFlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgQXByIDIwMTYgMjA6MDM6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzMC8zNl0gbGliZ2NjOiBBZGQga25vYiB0byB1c2UgbGRibC0xMjggb24gcHBjCi0KLW11c2wgZG9lcyBub3Qgc3VwcG9ydCBsZGJsIDEyOCBzbyB3ZSBjYW4gbm90IGFzc3VtZQotdGhhdCBsaW51eCBhcyBhIHdob2xlIHN1cHBvcnRzIGxkYmwtMTI4IGJpdHMsIGluc3RlYWQKLWFjdCB1cG9uIGNvbmZpZ3VyZSBvcHRpb24gcGFzc2VkIHRvIGdjYyBhbmQgYXNzdW1lIG5vCi1vbiBtdXNsIGFuZCB5ZXMgb3RoZXJ3aXNlIGlmIG5vIG9wdGlvbiBpcyBwYXNzZWQgc2luY2UKLWRlZmF1bHQgYmVoYXZpb3VyIGlzIHRvIGFzc3VtZSBsZGJsMTI4IGl0IGRvZXMgbm90Ci1jaGFuZ2UgdGhlIGRlZmF1bHRzCitGcm9tIDQ3NDY3ZjNhYjBmYjJmMmZjZWRlODEwNjBmZThiYjMzOWQwOTA5ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KK0RhdGU6IFdlZCwgMjggRmViIDIwMTggMDA6NTQ6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxMC8xMl0gbGRibDEyOCBjb25maWcKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLSBsaWJnY2MvTWFrZWZpbGUuaW4gICAgICAgICAgIHwgIDEgKwotIGxpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXggfCAgNSArKysrLQotIGxpYmdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKysrKysKLSBsaWJnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTIgKysrKysrKysrKysrCi0gNCBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0gbW9kZSBjaGFuZ2UgMTAwNjQ0ID0+IDEwMDc1NSBsaWJnY2MvY29uZmlndXJlCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDEzICsrKysrKysrKysrKysKKyBnY2MvY29uZmlndXJlLmFjIHwgMTYgKysrKysrKysrKysrKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2xpYmdjYy9NYWtlZmlsZS5pbiBiL2xpYmdjYy9NYWtlZmlsZS5pbgotaW5kZXggZWEzOTBhNWJiZWEuLjExNGM3ODc2MzA0IDEwMDY0NAotLS0tIGEvbGliZ2NjL01ha2VmaWxlLmluCi0rKysgYi9saWJnY2MvTWFrZWZpbGUuaW4KLUBAIC01MCw2ICs1MCw3IEBAIHVud2luZF9oZWFkZXIgPSBAdW53aW5kX2hlYWRlckAKLSBtZF91bndpbmRfaGVhZGVyID0gQG1kX3Vud2luZF9oZWFkZXJACi0gc2ZwX21hY2hpbmVfaGVhZGVyID0gQHNmcF9tYWNoaW5lX2hlYWRlckAKLSB0aHJlYWRfaGVhZGVyID0gQHRocmVhZF9oZWFkZXJACi0rd2l0aF9sZGJsMTI4ID0gQHdpdGhfbGRibDEyOEAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggNjEyMWUxNjMyNTkuLjA3ZmY4NTk3ZDQ4IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI5MzA5LDYgKzI5MzA5LDE1IEBAIGlmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgorIGVsc2UKICAKLSBob3N0X25vbmNhbm9uaWNhbCA9IEBob3N0X25vbmNhbm9uaWNhbEAKLSByZWFsX2hvc3Rfbm9uY2Fub25pY2FsID0gQHJlYWxfaG9zdF9ub25jYW5vbmljYWxACi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eCBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLWluZGV4IDRmNmQ0YzRhNGQyLi5jNTBkZDk0YTJkYSAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLSsrKyBiL2xpYmdjYy9jb25maWcvcnM2MDAwL3QtbGludXgKLUBAIC0xLDMgKzEsNiBAQAotIFNITElCX01BUEZJTEVTICs9ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL2xpYmdjYy1nbGliYy52ZXIKKysgICAgICBjYXNlICIkdGFyZ2V0IiBpbgorKwlzMzkwKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKysJICA7OworKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubworKwkgIDs7CisrCSopCisrCisgaWYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9tYWpvciAtZ3QgMiBcCisgICB8fCAoIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWVxIDIgJiYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9taW5vciAtZ2UgNCApOyB0aGVuIDoKKyAgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKK0BAIC0yOTMyMCw2ICsyOTMyOSwxMCBAQCBlbHNlCisgICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwogIAotLUhPU1RfTElCR0NDMl9DRkxBR1MgKz0gLW1sb25nLWRvdWJsZS0xMjggLW1uby1taW5pbWFsLXRvYwotK2lmZXEgKCQod2l0aF9sZGJsMTI4KSx5ZXMpCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTEyOAotK2VuZGlmCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbW5vLW1pbmltYWwtdG9jCi1kaWZmIC0tZ2l0IGEvbGliZ2NjL2NvbmZpZ3VyZSBiL2xpYmdjYy9jb25maWd1cmUKLW9sZCBtb2RlIDEwMDY0NAotbmV3IG1vZGUgMTAwNzU1Ci1pbmRleCAzNmRiYmMxZjY5OS4uYjVkZDVjMzRlMmEKLS0tLSBhL2xpYmdjYy9jb25maWd1cmUKLSsrKyBiL2xpYmdjYy9jb25maWd1cmUKLUBAIC02NTEsNiArNjUxLDcgQEAgYnVpbGRfdmVuZG9yCi0gYnVpbGRfY3B1Ci0gYnVpbGQKLSB3aXRoX2FpeF9zb25hbWUKLSt3aXRoX2xkYmwxMjgKLSBlbmFibGVfdnRhYmxlX3ZlcmlmeQotIGVuYWJsZV9nY292Ci0gZW5hYmxlX3NoYXJlZAotQEAgLTcwMiw2ICs3MDMsNyBAQCB3aXRoX2xkCi0gZW5hYmxlX3NoYXJlZAotIGVuYWJsZV9nY292Ci0gZW5hYmxlX3Z0YWJsZV92ZXJpZnkKLSt3aXRoX2xvbmdfZG91YmxlXzEyOAotIHdpdGhfYWl4X3NvbmFtZQotIGVuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicwotIHdpdGhfc2xpYmRpcgotQEAgLTEzNjMsNiArMTM2NSw3IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXRhcmdldC1zdWJkaXI9U1VCRElSICAgICAgQ29uZmlndXJpbmcgaW4gYSBzdWJkaXJlY3RvcnkgZm9yIHRhcmdldAotICAgLS13aXRoLWNyb3NzLWhvc3Q9SE9TVCAgICAgICAgICAgQ29uZmlndXJpbmcgd2l0aCBhIGNyb3NzIGNvbXBpbGVyCi0gICAtLXdpdGgtbGQgICAgICAgICAgICAgICBhcnJhbmdlIHRvIHVzZSB0aGUgc3BlY2lmaWVkIGxkIChmdWxsIHBhdGhuYW1lKQotKyAgLS13aXRoLWxvbmctZG91YmxlLTEyOCAgdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdAotICAgLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWAotQEAgLTIyNjgsNiArMjI3MSwyMSBAQCBmaQorIGZpCisrCisrCSAgOzsKKysgICAgICBlc2FjCisrCisgZmkKICAKLSAKLSAKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxvbmctZG91YmxlLTEyOCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xvbmdfZG91YmxlXzEyOCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xvbmdfZG91YmxlXzEyODsgd2l0aF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiCi0rZWxzZQotKyAgY2FzZSAiJHtob3N0fSIgaW4KLSsgcG93ZXIqLSotbXVzbCopCi0rICAgd2l0aF9sZGJsMTI4PSJubyI7OwotKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OwotKyBlc2FjCi0rCi0rZmkKLSsKLSsKLSsKLSsKLSAjIENoZWNrIHdoZXRoZXIgLS13aXRoLWFpeC1zb25hbWUgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7d2l0aF9haXhfc29uYW1lK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIHdpdGh2YWw9JHdpdGhfYWl4X3NvbmFtZTsgY2FzZSAiJHtob3N0fToke2VuYWJsZV9zaGFyZWR9IiBpbgotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWd1cmUuYWMgYi9saWJnY2MvY29uZmlndXJlLmFjCi1pbmRleCA4ZTk2Y2FmZGY4Yi4uOTI0Nzg1NmJmMjQgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlndXJlLmFjCi0rKysgYi9saWJnY2MvY29uZmlndXJlLmFjCi1AQCAtODIsNiArODIsMTggQEAgQUNfQVJHX0VOQUJMRSh2dGFibGUtdmVyaWZ5LAotIFtlbmFibGVfdnRhYmxlX3ZlcmlmeT1ub10pCi0gQUNfU1VCU1QoZW5hYmxlX3Z0YWJsZV92ZXJpZnkpCi0gCi0rQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAotK1tBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCi0rICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAotKyAgICAgIHdpdGhfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKLStbY2FzZSAiJHtob3N0fSIgaW4KLSsgcG93ZXIqLSotbXVzbCopCi0rICAgd2l0aF9sZGJsMTI4PSJubyI7OwotKyAqKSB3aXRoX2xkYmwxMjg9InllcyI7OwotKyBlc2FjCi0rXSkKLStBQ19TVUJTVCh3aXRoX2xkYmwxMjgpCi0rCi0gQUNfQVJHX1dJVEgoYWl4LXNvbmFtZSwKLSBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1haXgtc29uYW1lPWFpeHxzdnI0fGJvdGhdLAotICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYXSldLAorICAgICA7OworZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCBiMDY2Y2M2MDllMS4uNmMxNWVkODk4YzAgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtNTk3MSwxMyArNTk3MSwyNSBAQCBjYXNlICIkdGFyZ2V0IiBpbgorICAgICBBQ19BUkdfV0lUSChsb25nLWRvdWJsZS0xMjgsCisgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtbG9uZy1kb3VibGUtMTI4XSwKKyAJCSAgICAgIFt1c2UgMTI4LWJpdCBsb25nIGRvdWJsZSBieSBkZWZhdWx0XSldLAorLSAgICAgIGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwKKysgICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsIFsKKysgICAgICBjYXNlICIkdGFyZ2V0IiBpbgorKwlzMzkwKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKysJICA7OworKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubworKwkgIDs7CisrCSopXQorICAgICAgIFtHQ0NfR0xJQkNfVkVSU0lPTl9HVEVfSUZFTFNFKFsyXSwgWzRdLCBbZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllc10sIFsKKyAgICAgICBbZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCisgICAgICAgZ3JlcCAnXlsgCV0qI1sgCV0qZGVmaW5lWyAJXVsgCV0qX19MT05HX0RPVUJMRV9NQVRIX09QVElPTkFMJyBcCisgICAgICAgICAkdGFyZ2V0X2hlYWRlcl9kaXIvYml0cy93b3Jkc2l6ZS5oID4gL2Rldi9udWxsIDI+JjEgXAorICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKy0gICAgICBdXSldKQorKyAgICAgIF1dKV0KKysgICAgICBbCisrCSAgOzsKKysgICAgICBlc2FjCisrICAgICAgXSkKKyAgICAgOzsKKyBlc2FjCisgaWYgdGVzdCB4JGdjY19jdl90YXJnZXRfbGRibDEyOCA9IHh5ZXM7IHRoZW4KIC0tIAotMi4yMi4xCisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTQyNTAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNDI1MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWVhMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA1MTdiMjExYTNkNzgzNjZjYThkNTkyOWY1ODBlOGNhNzJmZDJjMDA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogcmd1ZW50aCA8cmd1ZW50aEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDEwOjQ2OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIDIwMTktMDctMjUgIFJpY2hhcmQgQmllbmVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CisKKwlQUiBsdG8vOTA5MjQKKwlCYWNrcG9ydCBmcm9tIG1haW5saW5lCisJMjAxOS0wNy0xMiAgUmVuIEtpbXVyYSAgPHJreDEyMDlkZXZAZ21haWwuY29tPgorCisJKiBzaW1wbGUtb2JqZWN0LWVsZi5jIChzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCk6IENoZWNrIHplcm8gdmFsdWUKKwlzaHN0cm5keC4KKworCitnaXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOS1icmFuY2hAMjczNzkzIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitBZmZlY3RlczogPCAgOS4yCitDVkU6IENWRS0yMDE5LTE0MjUwCitEcm9wcGVkIGNoYW5nZWxvZworU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxBa3VzdHJlQG12aXN0YS5jb20+CisKKy0tLQorIGxpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIHwgOCArKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKQorCitJbmRleDogZ2NjLTkuMi4wL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMi4wLm9yaWcvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKKysrKyBnY2MtOS4yLjAvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKK0BAIC01NTcsNiArNTU3LDE0IEBAIHNpbXBsZV9vYmplY3RfZWxmX21hdGNoICh1bnNpZ25lZCBjaGFyIGgKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKKysgICAgeworKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7CisrICAgICAgKmVyciA9IDA7CisrICAgICAgWERFTEVURSAoZW9yKTsKKysgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworICAgcmV0dXJuICh2b2lkICopIGVvcjsKKyB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKaW5kZXggOTYzMzRlNS4uNDRjYmEyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwpAQCAtMTcsNyArMTcsNyBAQAogICAgIHNyYyA9IGQuZXhwYW5kKCIke0NPTVBPTkVOVFNfRElSfS8ke0JVSUxEX0FSQ0h9L2djYy1zdGFzaGVkLWJ1aWxkZGlyLSR7VEFSR0VUX1NZU30iKQogICAgIGRlc3QgPSBkLmdldFZhcigiQiIpCiAgICAgb2UucGF0aC5jb3B5aGFyZGxpbmt0cmVlKHNyYywgZGVzdCkKLSAgICBzdGFnaW5nX3Byb2Nlc3NmaXhtZShbc3JjICsgIi9maXhtZXBhdGgiXSwgZGVzdCwgZGVzdCwgZGVzdCwgZCkKKyAgICBzdGFnaW5nX3Byb2Nlc3NmaXhtZShbc3JjICsgIi9maXhtZXBhdGgiXSwgZGVzdCwgZC5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIiksIGQuZ2V0VmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiKSwgZCkKIH0KIAogZGVmIGdldF9nY2NfZmxvYXRfc2V0dGluZyhiYiwgZCk6CkBAIC00MSwxMyArNDEsNiBAQAogICAgICAgICByZXR1cm4gIi0tZW5hYmxlLXNlY3VyZXBsdCIKICAgICByZXR1cm4gIiIKIAotZGVmIGdldF9sb25nX2RvdWJsZV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVFJBTlNMQVRFRF9UQVJHRVRfQVJDSCcpIGluIFsgJ3Bvd2VycGMnLCAncG93ZXJwYzY0JyBdIGFuZCBkLmdldFZhcignVENMSUJDJykgaW4gWyAnZ2xpYmMnIF06Ci0gICAgICAgIHJldHVybiAiLS13aXRoLWxvbmctZG91YmxlLTEyOCIKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gIi0td2l0aG91dC1sb25nLWRvdWJsZS0xMjggbGliZ2NjX2N2X3Bvd2VycGNfZmxvYXQxMjg9bm8iCi0gICAgcmV0dXJuICIiCi0KIGRlZiBnZXRfZ2NjX211bHRpYXJjaF9zZXR0aW5nKGJiLCBkKToKICAgICB0YXJnZXRfYXJjaCA9IGQuZ2V0VmFyKCdUUkFOU0xBVEVEX1RBUkdFVF9BUkNIJykKICAgICBtdWx0aWFyY2hfb3B0aW9ucyA9IHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCmluZGV4IGI2ZjJjYTUuLjI0YmE4Y2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwpAQCAtMzYsNyArMzYsNiBAQAogICAgICR7RVhUUkFfT0VDT05GX1BBVEhTfSBcCiAgICAgJHtAZ2V0X2djY19taXBzX3BsdF9zZXR0aW5nKGJiLCBkKX0gXAogICAgICR7QGdldF9nY2NfcHBjX3BsdF9zZXR0aW5ncyhiYiwgZCl9IFwKLSAgICAke0BnZXRfbG9uZ19kb3VibGVfc2V0dGluZyhiYiwgZCl9IFwKICAgICAke0BnZXRfZ2NjX211bHRpYXJjaF9zZXR0aW5nKGJiLCBkKX0gXAogIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjUzYzVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwotCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwppbmRleCA2MjIyYzJlLi45NWFmNmQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYwpAQCAtMTk2LDYgKzE5Niw4IEBACiAJIyBXZSB1c2UgbGliaWJlcnR5IGZyb20gYmludXRpbHMKIAlmaW5kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIgLW5hbWUgbGliaWJlcnR5LmEgfCB4YXJncyBybSAtZgogCWZpbmQgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYiAtbmFtZSBsaWJpYmVydHkuaCB8IHhhcmdzIHJtIC1mCisKKwlmaW5kICR7RH0ke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9pbmNsdWRlLWZpeGVkIC10eXBlIGYgLW5vdCAtbmFtZSAiUkVBRE1FIiAtbm90IC1uYW1lIGxpbWl0cy5oIC1ub3QgLW5hbWUgc3lzbGltaXRzLmggfCB4YXJncyBybSAtZgogfQogCiBkb19wYWNrYWdlW25vZXhlY10gPSAiMSIKQEAgLTIxMCw2ICsyMTIsOSBAQAogZG9fZ2NjX3N0YXNoX2J1aWxkZGlyICgpIHsKIAlkZXN0PSR7QlVJTERESVJTVEFTSH0KIAloYXJkbGlua2RpciAuICRkZXN0CisJIyBNYWtlZmlsZSBkb2VzIG1vdmUtaWYtY2hhbmdlIHdoaWNoIGNhbiBlbmQgdXAgd2l0aCAndGltZXN0YW1wJyBhcyBmaWxlIGNvbnRlbnRzIHNvIGJyZWFrIGxpbmtzIHRvIHRob3NlIGZpbGVzCisJcm0gJGRlc3QvZ2NjL2luY2x1ZGUvKi5oCisJY3AgZ2NjL2luY2x1ZGUvKi5oICRkZXN0L2djYy9pbmNsdWRlLwogfQogYWRkdGFzayBkb19nY2Nfc3Rhc2hfYnVpbGRkaXIgYWZ0ZXIgZG9fY29tcGlsZSBiZWZvcmUgZG9faW5zdGFsbAogU1NUQVRFVEFTS1MgKz0gImRvX2djY19zdGFzaF9idWlsZGRpciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc184LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0M2NjYTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc184LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2MtY3Jvc3MuaW5jCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka184LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYTZjNGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka184LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXyR7UFZ9LmJiCi1yZXF1aXJlIGdjYy1jcm9zc3Nkay5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IDIyYzFkNzguLjJkYTNjMDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwpAQCAtMjc3LDMgKzI3Nyw0NSBAQAogU1VNTUFSWV9saWJpdG0tZGV2ID0gIkdOVSB0cmFuc2FjdGlvbmFsIG1lbW9yeSBzdXBwb3J0IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKIEZJTEVTX2xpYml0bS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYml0bS5hIgogU1VNTUFSWV9saWJpdG0tc3RhdGljZGV2ID0gIkdOVSB0cmFuc2FjdGlvbmFsIG1lbW9yeSBzdXBwb3J0IGxpYnJhcnkgLSBzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMiCisKK3JlcXVpcmUgZ2NjLXRlc3RzdWl0ZS5pbmMKKworRVhUUkFfT0VNQUtFX3ByZXBlbmRfdGFzay1jaGVjayA9ICIke1BBUkFMTEVMX01BS0V9ICIKKworTUFLRV9DSEVDS19UQVJHRVRTID8/PSAiY2hlY2stZ2NjICR7QCIgIi5qb2luKCJjaGVjay10YXJnZXQtIiArIGkgZm9yIGkgaW4gZC5nZXRWYXIoIlJVTlRJTUVUQVJHRVQiKS5zcGxpdCgpKX0iCisjIHByZXR0eXByaW50ZXJzIGFuZCB4bWV0aG9kcyByZXF1aXJlIGdkYiB0b29saW5nCitNQUtFX0NIRUNLX0lHTk9SRSA/Pz0gInByZXR0eXByaW50ZXJzLmV4cCB4bWV0aG9kcy5leHAiCitNQUtFX0NIRUNLX1JVTlRFU1RGTEFHUyA/Pz0gIiR7TUFLRV9DSEVDS19CT0FSREFSR1N9IC0taWdub3JlICcke01BS0VfQ0hFQ0tfSUdOT1JFfSciCisKKyMgc3BlY2lmaWMgaG9zdCBhbmQgdGFyZ2V0IGRlcGVuZGVuY2llcyByZXF1aXJlZCBmb3IgdGVzdCBzdWl0ZSBydW5uaW5nCitkb19jaGVja1tkZXBlbmRzXSArPSAiZGVqYWdudS1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBleHBlY3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCitkb19jaGVja1tkZXBlbmRzXSArPSAidmlydHVhbC9saWJjOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisjIG9ubHkgZGVwZW5kIG9uIHFlbXUgaWYgdGFyZ2V0aW5nIGxpbnV4IHVzZXIgZXhlY3V0aW9uCitkb19jaGVja1tkZXBlbmRzXSArPSAiJHtAJ3FlbXUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnIGlmICJ1c2VyIiBpbiBkLmdldFZhcignVE9PTENIQUlOX1RFU1RfVEFSR0VUJykgZWxzZSAnJ30iCisjIGV4dGVuZCB0aGUgcmVjaXBlIHN5c3Jvb3QgdG8gaW5jbHVkZSB0aGUgYnVpbHQgbGlicmFyaWVzIChmb3IgcWVtdSB1c2VybW9kZSkKK2RvX2NoZWNrW3ByZWZ1bmNzXSArPSAiZXh0ZW5kX3JlY2lwZV9zeXNyb290IgorZG9fY2hlY2tbcHJlZnVuY3NdICs9ICJjaGVja19wcmVwYXJlIgorZG9fY2hlY2tbZGlyc10gPSAiJHtXT1JLRElSfS9kZWphZ251ICR7Qn0iCitkb19jaGVja1tub3N0YW1wXSA9ICIxIgorZG9fY2hlY2soKSB7CisgICAgZXhwb3J0IERFSkFHTlU9IiR7V09SS0RJUn0vZGVqYWdudS9zaXRlLmV4cCIKKworICAgICMgSEFDSzogdGhpcyB3b3JrcyBhcm91bmQgdGhlIGNvbmZpZ3VyZSBzZXR0aW5nIENYWCB3aXRoIC1ub3N0ZCogYXJncworICAgIHNlZCAtaSAncy8tbm9zdGRpbmMrKyAtbm9zdGRsaWIrKy8vZycgJChmaW5kICR7Qn0gLW5hbWUgdGVzdHN1aXRlX2ZsYWdzIHwgaGVhZCAtMSkKKyAgICAjIEhBQ0s6IHRoaXMgd29ya3MgYXJvdW5kIHRoZSBkZS1zdGFzaGluZyBjaGFuZ2VzIHRvIGNvbmZpZ2FyZ3MuaCwgYXMgd2VsbCBhcyByZWNpcGUtc3lzcm9vdCBjaGFuZ2luZyB0aGUgY29udGVudAorICAgIHNlZCAtaSAnL3N0YXRpYyBjb25zdCBjaGFyIGNvbmZpZ3VyYXRpb25fYXJndW1lbnRzL2QnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorICAgICR7Q0N9IC12IDI+JjEgfCBncmVwICJeQ29uZmlndXJlZCB3aXRoOiIgfCBcCisgICAgICAgIHNlZCAncy9Db25maWd1cmVkIHdpdGg6IFwoLipcKS9zdGF0aWMgY29uc3QgY2hhciBjb25maWd1cmF0aW9uX2FyZ3VtZW50c1tdID0gIlwxIjsvZycgPj4gJHtCfS9nY2MvY29uZmlnYXJncy5oCisKKyAgICBpZiBbICIke1RPT0xDSEFJTl9URVNUX1RBUkdFVH0iID0gInVzZXIiIF07IHRoZW4KKyAgICAgICAgIyBxZW11IHVzZXIgaGFzIGlzc3VlcyBhbGxvY2F0aW5nIGxhcmdlIGFtb3VudHMgb2YgbWVtb3J5CisgICAgICAgIGV4cG9ydCBHX1NMSUNFPWFsd2F5cy1tYWxsb2MKKyAgICAgICAgIyBubyB0ZXN0IHNob3VsZCBuZWVkIG1vcmUgdGhhdCAxMEcgb2YgbWVtb3J5LCB0aGlzIHByZXZlbnRzIHRlc3RzIGxpa2UgcHRocmVhZDctcm9wZSBmcm9tIGxlYWtpbmcgbWVtb3J5CisgICAgICAgIHVsaW1pdCAtbSA0MTk0MzA0CisgICAgICAgIHVsaW1pdCAtdiAxMDQ4NTc2MAorICAgIGZpCisKKyAgICBvZV9ydW5tYWtlIC1pICR7TUFLRV9DSEVDS19UQVJHRVRTfSBSVU5URVNURkxBR1M9IiR7TUFLRV9DSEVDS19SVU5URVNURkxBR1N9IgorfQorYWRkdGFzayBjaGVjayBhZnRlciBkb19jb21waWxlIGRvX3BvcHVsYXRlX3N5c3Jvb3QKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV84LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNDMwYjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1ydW50aW1lLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc184LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzYzcwNTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGdjYy1zYW5pdGl6ZXJzLmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgYXJtdjV0IGZhaWxzIHdpdGgKLSMgc2FuaXRpemVyX2xpbnV4LnM6NTc0OTogRXJyb3I6IGxvIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBsZHIgaXAsW3NwXSwjOCcKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV84LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV84LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OTBmYTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZS5pbmMKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRlc3RzdWl0ZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRlc3RzdWl0ZS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjY4ZmVjNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGVzdHN1aXRlLmluYwpAQCAtMCwwICsxLDEwNyBAQAoraW5oZXJpdCBxZW11CisKK1RPT0xDSEFJTl9URVNUX1RBUkdFVCA/Pz0gInVzZXIiCitUT09MQ0hBSU5fVEVTVF9IT1NUID8/PSAibG9jYWxob3N0IgorVE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSID8/PSAicm9vdCIKK1RPT0xDSEFJTl9URVNUX0hPU1RfUE9SVCA/Pz0gIjIyMjIiCisKK01BS0VfQ0hFQ0tfQk9BUkRGTEFHUyA/Pz0gIiIKK01BS0VfQ0hFQ0tfQk9BUkRBUkdTID8/PSAiLS10YXJnZXRfYm9hcmQ9JHtUT09MQ0hBSU5fVEVTVF9UQVJHRVR9JHtNQUtFX0NIRUNLX0JPQVJERkxBR1N9IgorCitweXRob24gKCkgeworICAgICMgUHJvdmlkZSB0aGUgdGFyZ2V0cyBjb21waWxlciBhcmdzIHZpYSB0YXJnZXRzIG9wdGlvbnMuIFRoaXMgYWxsb3dzIGRlamFnbnUgdG8KKyAgICAjIGNvcnJlY3RseSBtYXJrIGluY29tcGF0aWJsZSB0ZXN0cyBhcyBVTlNVUFBPUlRFRCAoZS5nLiBuZWVkcyBzb2Z0LWZsb2F0CisgICAgIyBidXQgcnVubmluZyBvbiBoYXJkLWZsb2F0IHRhcmdldCkuCisgICAgIworICAgICMgVGhlc2Ugb3B0aW9ucyBhcmUgY2FsbGVkICJtdWx0aWxpYl9mbGFncyIgd2l0aGluIHRoZSBnY2MgdGVzdCBzdWl0ZS4gTW9zdAorICAgICMgYXJjaGl0ZWN0dXJlcyBoYW5kbGUgdGhlc2Ugb3B0aW9ucyBpbiBhIHNlbnNpYmxlIHdheSBzdWNoIHRoYXQgdGVzdHMgdGhhdAorICAgICMgYXJlIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm92aWRlZCBtdWx0aWxpYiBhcmUgbWFya2VkIGFzIFVOU1VQUE9SVEVELgorICAgICMKKyAgICAjIE5vdGU6IG11bHRpbGliIGZsYWdzIGFyZSBhZGRlZCB0byB0aGUgY29tcGlsZSBjb21tYW5kIGFmdGVyIHRoZSBhcmdzCisgICAgIyBwcm92aWRlZCBieSBhbnkgdGVzdCAodGhyb3VnaCBkZy1vcHRpb25zKSwgQ0ZMQUdTX0ZPUl9UQVJHRVQgaXMgYWx3YXlzCisgICAgIyBhZGRlZCB0byB0aGUgY29tcGlsZSBjb21tYW5kIGJlZm9yZSBhbnkgb3RoZXIgYXJncyBidXQgaXMgbm90IGludGVycHRlZAorICAgICMgYXMgb3B0aW9ucyBsaWtlIG11bHRpbGliIGZsYWdzLgorICAgICMKKyAgICAjIGk2ODYsIHg4Ni02NCBhbmQgYWFyY2g2NCBhcmUgc3BlY2lhbCwgc2luY2UgbW9zdCB0b29sY2hhaW5zIGJ1aWx0IGZvcgorICAgICMgdGhlc2UgdGFyZ2V0cyBkb24ndCBkbyBtdWx0aWxpYiB0aGUgdGVzdHMgZG8gbm90IGdldCBjb3JyZWN0bHkgbWFya2VkIGFzCisgICAgIyBVTlNVUFBPUlRFRC4gTW9yZSBpbXBvcnRhbnRseSB0aGUgdGVzdCBzdWl0ZSBpdHNlbGYgZG9lcyBub3QgaGFuZGxlCisgICAgIyBvdmVycmlkaW5nIHRoZSBtdWx0aWxpYiBmbGFncyB3aGVyZSBpdCBjb3VsZCAobGlrZSBvdGhlciBhcmNocyBkbykuIEFzCisgICAgIyBzdWNoIGRvIG5vdCBwYXNzIHRoZSB0YXJnZXQgY29tcGlsZXIgYXJncyBmb3IgdGhlc2UgdGFyZ2V0cy4KKyAgICBhcmdzID0gZC5nZXRWYXIoIlRVTkVfQ0NBUkdTIikuc3BsaXQoKQorICAgIGlmIGQuZ2V0VmFyKCJUVU5FX0FSQ0giKSBpbiBbImk2ODYiLCAieDg2XzY0IiwgImFhcmNoNjQiXToKKyAgICAgICAgYXJncyA9IFtdCisgICAgZC5zZXRWYXIoIk1BS0VfQ0hFQ0tfQk9BUkRGTEFHUyIsICgiLyIgKyAiLyIuam9pbihhcmdzKSkgaWYgbGVuKGFyZ3MpICE9IDAgZWxzZSAiIikKK30KKworcHl0aG9uIGNoZWNrX3ByZXBhcmUoKSB7CisgICAgZGVmIGdlbmVyYXRlX3FlbXVfbGludXhfdXNlcl9jb25maWcoZCk6CisgICAgICAgIGNvbnRlbnQgPSBbXQorICAgICAgICBjb250ZW50LmFwcGVuZCgnbG9hZF9nZW5lcmljX2NvbmZpZyAic2ltIicpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdsb2FkX2Jhc2VfYm9hcmRfZGVzY3JpcHRpb24gImJhc2ljLXNpbSInKQorICAgICAgICBjb250ZW50LmFwcGVuZCgncHJvY2Vzc19tdWx0aWxpYl9vcHRpb25zICIiJykKKworICAgICAgICAjIHFlbXUgYXJncworICAgICAgICBxZW11X2JpbmFyeSA9IHFlbXVfdGFyZ2V0X2JpbmFyeShkKQorICAgICAgICBpZiBub3QgcWVtdV9iaW5hcnk6CisgICAgICAgICAgICBiYi5mYXRhbCgiTWlzc2luZyB0YXJnZXQgcWVtdSBsaW51eC11c2VyIGJpbmFyeSIpCisKKyAgICAgICAgYXJncyA9IFtdCisgICAgICAgICMgUUVNVV9PUFRJT05TIGlzIG5vdCBhbHdheXMgdmFsaWQgZHVlIHRvIC1jcm9zcyByZWNpcGUKKyAgICAgICAgYXJncyArPSBbIi1yIiwgZC5nZXRWYXIoIk9MREVTVF9LRVJORUwiKV0KKyAgICAgICAgIyBlbmFibGUgYWxsIHZhbGlkIGluc3RydWN0aW9ucywgc2luY2UgdGhlIHRlc3Qgc3VpdGUgaXRzZWxmIGRvZXMgbm90CisgICAgICAgICMgbGltaXQgaXRzZWxmIHRvIHRoZSB0YXJnZXQgY3B1IG9wdGlvbnMuCisgICAgICAgICMgICAtIHZhbGlkIGZvciB4ODYqLCBwb3dlcnBjLCBhcm0sIGFybTY0CisgICAgICAgIGlmIHFlbXVfYmluYXJ5LmxzdHJpcCgicWVtdS0iKSBpbiBbIng4Nl82NCIsICJpMzg2IiwgInBwYyIsICJhcm0iLCAiYWFyY2g2NCJdOgorICAgICAgICAgICAgYXJncyArPSBbIi1jcHUiLCAibWF4Il0KKworICAgICAgICBzeXNyb290ID0gZC5nZXRWYXIoIlJFQ0lQRV9TWVNST09UIikKKyAgICAgICAgYXJncyArPSBbIi1MIiwgc3lzcm9vdF0KKyAgICAgICAgIyBsaWIgcGF0aHMgYXJlIHN0YXRpYyBoZXJlIGluc3RlYWQgb2YgdXNpbmcgJGxpYmRpciBzaW5jZSB0aGlzIGlzIHVzZWQgYnkgYSAtY3Jvc3MgcmVjaXBlCisgICAgICAgIGxpYnBhdGhzID0gW3N5c3Jvb3QgKyAiL3Vzci9saWIiLCBzeXNyb290ICsgIi9saWIiXQorICAgICAgICBhcmdzICs9IFsiLUUiLCAiTERfTElCUkFSWV9QQVRIPXswfSIuZm9ybWF0KCI6Ii5qb2luKGxpYnBhdGhzKSldCisKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIGlzX3NpbXVsYXRvciAxJykKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIHNpbSAiezB9IicuZm9ybWF0KHFlbXVfYmluYXJ5KSkKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIHNpbSxvcHRpb25zICJ7MH0iJy5mb3JtYXQoIiAiLmpvaW4oYXJncykpKQorCisgICAgICAgICMgdGFyZ2V0IGJ1aWxkL3Rlc3QgY29uZmlnCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXRfYm9hcmRfaW5mbyB0YXJnZXRfaW5zdGFsbCB7JXN9JyAlIGQuZ2V0VmFyKCJUQVJHRVRfU1lTIikpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCdzZXRfYm9hcmRfaW5mbyBsZHNjcmlwdCAiIicpCisgICAgICAgICNjb250ZW50LmFwcGVuZCgnc2V0X2JvYXJkX2luZm8gbmVlZHNfc3RhdHVzX3dyYXBwZXIgMScpICMgcWVtdS1saW51eC11c2VyIHJldHVybiBjb2RlcyB3b3JrLCBhbmQgYWJvcnQgd29ya3MgZmluZQorICAgICAgICBjb250ZW50LmFwcGVuZCgnc2V0X2JvYXJkX2luZm8gZ2NjLHN0YWNrX3NpemUgMTY4MzQnKQorICAgICAgICBjb250ZW50LmFwcGVuZCgnc2V0X2JvYXJkX2luZm8gZ2RiLG5vc2lnbmFscyAxJykKKyAgICAgICAgY29udGVudC5hcHBlbmQoJ3NldF9ib2FyZF9pbmZvIGdjYyx0aW1lb3V0IDYwJykKKworICAgICAgICByZXR1cm4gIlxuIi5qb2luKGNvbnRlbnQpCisKKyAgICBkZWYgZ2VuZXJhdGVfcmVtb3RlX3NzaF9saW51eF9jb25maWcoZCk6CisgICAgICAgIGNvbnRlbnQgPSBbXQorICAgICAgICBjb250ZW50LmFwcGVuZCgnbG9hZF9nZW5lcmljX2NvbmZpZyAidW5peCInKQorICAgICAgICBjb250ZW50LmFwcGVuZCgncHJvY2Vzc19tdWx0aWxpYl9vcHRpb25zICIiJykKKyAgICAgICAgY29udGVudC5hcHBlbmQoInNldF9ib2FyZF9pbmZvIGhvc3RuYW1lIHswfSIuZm9ybWF0KGQuZ2V0VmFyKCJUT09MQ0hBSU5fVEVTVF9IT1NUIikpKQorICAgICAgICBjb250ZW50LmFwcGVuZCgic2V0X2JvYXJkX2luZm8gdXNlcm5hbWUgezB9Ii5mb3JtYXQoZC5nZXRWYXIoIlRPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiIpKSkKKworICAgICAgICBwb3J0ID0gZC5nZXRWYXIoIlRPT0xDSEFJTl9URVNUX0hPU1RfUE9SVCIpCisgICAgICAgIGNvbnRlbnQuYXBwZW5kKCJzZXRfYm9hcmRfaW5mbyByc2hfcHJvZyBcIi91c3IvYmluL3NzaCAtcCB7MH0gLW8gVXNlcktub3duSG9zdHNGaWxlPS9kZXYvbnVsbCAtbyBTdHJpY3RIb3N0S2V5Q2hlY2tpbmc9bm9cIiIuZm9ybWF0KHBvcnQpKQorICAgICAgICBjb250ZW50LmFwcGVuZCgic2V0X2JvYXJkX2luZm8gcmNwX3Byb2cgXCIvdXNyL2Jpbi9zY3AgLVAgezB9IC1vIFVzZXJLbm93bkhvc3RzRmlsZT0vZGV2L251bGwgLW8gU3RyaWN0SG9zdEtleUNoZWNraW5nPW5vXCIiLmZvcm1hdChwb3J0KSkKKworICAgICAgICByZXR1cm4gIlxuIi5qb2luKGNvbnRlbnQpCisKKyAgICBkZWphZ251ZGlyID0gZC5leHBhbmQoIiR7V09SS0RJUn0vZGVqYWdudSIpCisgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGVqYWdudWRpcik6CisgICAgICAgIG9zLm1ha2VkaXJzKGRlamFnbnVkaXIpCisKKyAgICAjIHdyaXRlIG91dCB0YXJnZXQgcWVtdSBib2FyZCBjb25maWcKKyAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGRlamFnbnVkaXIsICJ1c2VyLmV4cCIpLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUoZ2VuZXJhdGVfcWVtdV9saW51eF91c2VyX2NvbmZpZyhkKSkKKworICAgICMgd3JpdGUgb3V0IHRhcmdldCBzc2ggYm9hcmQgY29uZmlnCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZWphZ251ZGlyLCAic3NoLmV4cCIpLCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUoZ2VuZXJhdGVfcmVtb3RlX3NzaF9saW51eF9jb25maWcoZCkpCisKKyAgICAjIGdlbmVyYXRlIHNpdGUuZXhwIHRvIHByb3ZpZGUgYm9hcmRzCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihkZWphZ251ZGlyLCAic2l0ZS5leHAiKSwgInciKSBhcyBmOgorICAgICAgICBmLndyaXRlKCJsYXBwZW5kIGJvYXJkc19kaXIgezB9XG4iLmZvcm1hdChkZWphZ251ZGlyKSkKKyAgICAgICAgZi53cml0ZSgic2V0IENGTEFHU19GT1JfVEFSR0VUIFwiezB9XCJcbiIuZm9ybWF0KGQuZ2V0VmFyKCJUT09MQ0hBSU5fT1BUSU9OUyIpKSkKK30KKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY184LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q5MzU5MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLSR7UFZ9LmluYwotcmVxdWlyZSBnY2MtdGFyZ2V0LmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NHQgYXJtdjV0IGZhaWxzIHdpdGgKLSMgfCBnY2MtNC44LjEtcjAvZ2NjLTQuOC4xL2djYy9jcC9kZWNsLmM6NzQzODooLnRleHQudW5saWtlbHkrMHgyZmEpOiByZWxvY2F0aW9uIHRydW5jYXRlZCB0byBmaXQ6IFJfQVJNX1RITV9DQUxMIGFnYWluc3Qgc3ltYm9sIGBmYW5jeV9hYm9ydChjaGFyIGNvbnN0KiwgaW50LCBjaGFyIGNvbnN0KiknIGRlZmluZWQgaW4gLmdsdWVfNyBzZWN0aW9uIGluIGxpbmtlciBzdHVicwotIyB8IGdjYy00LjguMS1yMC9nY2MtNC44LjEvZ2NjL2NwL2RlY2wuYzo3NDQyOigudGV4dC51bmxpa2VseSsweDMxOCk6IGFkZGl0aW9uYWwgcmVsb2NhdGlvbiBvdmVyZmxvd3Mgb21pdHRlZCBmcm9tIHRoZSBvdXRwdXQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUFSTUZQQVJDSEVYVF9hcm12NiA9ICIke0AnK2ZwJyBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdoYXJkJyBlbHNlICcnfSIKLUFSTUZQQVJDSEVYVF9hcm12N2EgPSAiJHtAJytmcCcgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnaGFyZCcgZWxzZSAnJ30iCi1BUk1GUEFSQ0hFWFRfYXJtdjd2ZSA9ICIke0AnK2ZwJyBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdoYXJkJyBlbHNlICcnfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfOC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM2OThjMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgbGliZ2NjLWluaXRpYWwuaW5jCi0KLSMgQnVpbGRpbmcgd2l0aCB0aHVtYiBlbmFibGVkIG9uIGFybXY2dCBmYWlscwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTIxMGExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy0ke1BWfS5pbmMKLXJlcXVpcmUgbGliZ2NjLmluYwotCi0jIEJ1aWxkaW5nIHdpdGggdGh1bWIgZW5hYmxlZCBvbiBhcm12NnQgZmFpbHMKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzguMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl84LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZGQ4YjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtJHtQVn0uaW5jCi1yZXF1aXJlIGxpYmdmb3J0cmFuLmluYwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCmluZGV4IDNmMjNmMDYuLjM5MTU3ZmYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCkBAIC0xLDcgKzEsNyBAQAogcmVxdWlyZSBnby1jb21tb24uaW5jCiAKIEdPX0JBU0VWRVJTSU9OID0gIjEuMTIiCi1HT19NSU5PUiA9ICIuNiIKK0dPX01JTk9SID0gIi45IgogUFYgLj0gIiR7R09fTUlOT1J9IgogRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCiAKQEAgLTE5LDUgKzE5LDUgQEAKICIKIFNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovLzAwMDktbGQtcmVwbGFjZS1nbGliYy1keW5hbWljLWxpbmtlci13aXRoLW11c2wucGF0Y2giCiAKLVNSQ19VUklbbWFpbi5tZDVzdW1dID0gIjQ4YTQxNDFmYzcxOGRkNzQyZDEwNjQzMTI5NGYwOGJmIgotU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiYzk2YzVjY2M3NDU1NjM4YWUxYThiNzQ5OGEwMzBmZTY1MzczMWM4MzkxYzVmOGU3OTU5MGJjZTcyZjkyYjRjYSIKK1NSQ19VUklbbWFpbi5tZDVzdW1dID0gIjYxMzIxMDlkNDA1MGRhMzQ5ZWFkYzlmN2IwMzA0ZWY0IgorU1JDX1VSSVttYWluLnNoYTI1NnN1bV0gPSAiYWIwZTU2ZWQ5YzQ3MzJhNjUzZWQyMmUyMzI2NTI3MDlhZmJmNTczZTcxMGY1NmEwN2Y3ZmRlY2E1NzhkNjJmYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgpzaW1pbGFyaXR5IGluZGV4IDkwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgppbmRleCBhNGQ2MzFmLi5lYWQ4Nzg3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS40LmJiCkBAIC04LDggKzgsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtc3VwcG9ydC1mb3ItbWlwcy1taXBzNjQucGF0Y2g7cGF0Y2hkaXI9c3JjL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCBcCiAgICAgICAgICAgIgogCi0jIFBvaW50cyB0byAwLjUuMCB0YWcKLVNSQ1JFViA9ICIyMjRhNTY0YWJlMjk2NjcwYjY5MmZlMDhiYjYzYTNlNGM0YWQ3OTc4IgorU1JDUkVWID0gIjFmN2MxOWU1ZjUyZjQ5ZmZiOWY5NTZmNjRjMDEwYmUxNDY4MzQ2OGIiCiAKIGluaGVyaXQgZ28KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny4xMS5iYgpzaW1pbGFyaXR5IGluZGV4IDc5JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9oZWxwMm1hbi9oZWxwMm1hbi1uYXRpdmVfMS40Ny4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMTEuYmIKaW5kZXggNWZlYWVlYS4uYTYwZTg1MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvaGVscDJtYW4vaGVscDJtYW4tbmF0aXZlXzEuNDcuMTEuYmIKQEAgLTUsOCArNSw4IEBACiBERVBFTkRTID0gImF1dG9jb25mLW5hdGl2ZSBhdXRvbWFrZS1uYXRpdmUiCiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDcwODMzNjUwYTU1MmUwYWY3NDI4ODJiYTg0ZjJlZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMzcxY2JmZDYzZjg3OTA2NTQyMmI1OGZhNmI4MWUyMTg3MGNkNzkxZWY2ZTExZDQ1Mjg2MDgyMDRhYTRkY2ZiIgorU1JDX1VSSVttZDVzdW1dID0gImRkMzIyYWRjYWVkZTViZDVlYWVkMDc1ZmY4OTcxYmMxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5ODViMjU3Zjg2MzA0Yzg3OTE4NDJjMGM4MDdhMzc1NDFkMGQ2ODA3ZWU5NzMwMDBjZjhhM2ZlNmFkNDdiODgiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIG5hdGl2ZQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXQvMDAwMS1yZWFkbGluZS5jLWZpeC1jYW5ub3QtZ2V0LWhpc3RvcnkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXQvMDAwMS1yZWFkbGluZS5jLWZpeC1jYW5ub3QtZ2V0LWhpc3RvcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U1NGFjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdC8wMDAxLXJlYWRsaW5lLmMtZml4LWNhbm5vdC1nZXQtaGlzdG9yeS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGVmMWZhOWJlZjQ5N2Q5NDkxYTUxMDE3ZjNjYWQwMTM1YTIzYmIwYjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAyMCBBdWcgMjAxOSAxNzozMzoxNSArMDgwMAorU3ViamVjdDogW1BBVENIXSByZWFkbGluZS5jOiBmaXggY2Fubm90IGdldCBoaXN0b3J5CisKK2lmIGhpc3Rvcnlfb2Zmc2V0IG5vdCBpbmNyZWF0ZSB3aGVuIGFkZCBoaXN0b3J5LAoraXQgd2lsbCBtYWtlIGN1cnJlbnQgaGlzdG9yeSBldmVudCBub3QgYWxpZ24gd2l0aCBvZmZzZXQsCithbmQgY2Fubm90IGdldCBoaXN0b3J5IGNvcnJlY3RseS4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW3RlY2gtdXNlcmxldmVsQE5ldEJTRC5vcmddIAorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3JlYWRsaW5lLmMgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9yZWFkbGluZS5jIGIvc3JjL3JlYWRsaW5lLmMKK2luZGV4IDQzYWM1YmQuLjU0YjA1NDggMTAwNjQ0CistLS0gYS9zcmMvcmVhZGxpbmUuYworKysrIGIvc3JjL3JlYWRsaW5lLmMKK0BAIC0xNDc2LDcgKzE0NzYsMTAgQEAgYWRkX2hpc3RvcnkoY29uc3QgY2hhciAqbGluZSkKKyAJaWYgKGV2Lm51bSA9PSBoaXN0b3J5X2xlbmd0aCkKKyAJCWhpc3RvcnlfYmFzZSsrOworIAllbHNlCisrICAgICAgICB7CisrICAgICAgICAgICAgICAgIGhpc3Rvcnlfb2Zmc2V0Kys7CisgCQloaXN0b3J5X2xlbmd0aCA9IGV2Lm51bTsKKysgICAgICAgIH0KKyAJcmV0dXJuIDA7CisgfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTAzMjQtMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkwMzI0LTMuMS5iYgppbmRleCA2YTU5OWViLi4yNTY2N2NjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTAzMjQtMy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MDMyNC0zLjEuYmIKQEAgLTEwLDEwICsxMCw5IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzCiAKLSMgdXBzdHJlYW0gc2l0ZSBkb2VzIG5vdCBhbGxvdyB3Z2V0J3MgVXNlci1BZ2VudAotRkVUQ0hDTURfd2dldCArPSAiLVUgYml0YmFrZSIKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy50aHJ5c29lZS5kay9lZGl0bGluZS8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vc3RkYy1wcmVkZWYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWFkbGluZS5jLWZpeC1jYW5ub3QtZ2V0LWhpc3RvcnkucGF0Y2ggXAogICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICJiZWM3NTVjODA0NGFkODRiNzUyZGZlNDlhMGIzNzFkOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYzhmMGY1MWMxY2Y2NTQ5MmU0ZDFlM2VkMmJlMzYwYmRhNDFlNTQ2MzM0NDQ2NjY0MjJmYmYzOTNiYmExYmFlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKaW5kZXggMzVhZDNjZS4uMDhiMTlhMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgICAgICAgICAgICAtRExMVk1fT1BUSU1JWkVEX1RBQkxFR0VOPU9OIFwKICAgICAgICAgICAgICAgICAgIC1ETExWTV9UQVJHRVRTX1RPX0JVSUxEPScke0xMVk1fVEFSR0VUU30nIFwKICAgICAgICAgICAgICAgICAgIC1ETExWTV9URU1QT1JBUklMWV9BTExPV19PTERfVE9PTENIQUlOPU9OIFwKLSAgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24yIFwKKyAgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKICAgICAgICAgICAgICAgICAgIC1HIE5pbmphIgogCiBFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24uaW5jCmluZGV4IDE0ZTVmOGEuLjZkZTEwOWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi5pbmMKQEAgLTE2LDEwICsxNiw5IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uYnVpbGQtZW52aXJvbm1lbnQucHktY2hlY2stZW52aXJvbm1lbnQtZm9yLXZhcmkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tb2R1bGVzLXB5dGhvbi5weS1kby1ub3Qtc3Vic3RpdHV0ZS1weXRob24tcy1pbnN0YWxsLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3ZhbGEtY3Jvc3MtY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1taXNzaW5nLXJldHVybi1zdGF0ZW1lbnRzLXRoYXQtYXJlLXNlZW4td2l0aC1XZXIucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjI3YjdhNjBmMzM5YmE2NmZlNGI4ZjgxZjBkMTA3MmUwOTBhMDhlYWJiZDZhYTI4NzY4M2IyYzJiOWRkMmQ4MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0ODc4N2UzOTFlYzVjMDUyNzk5YTNkZDQ5MWY3MzkwOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMzY4OGYwZmM5MGJlNjIzZDk4ZTgwZTFkZWZlZWE5MmJiYjcxMDNiZjkzMzZhNWY1Yjk4NjVkMzZlODkyZDc2IgorU1JDX1VSSVttZDVzdW1dID0gImQ0NmM0YThlM2NmZDI3ZjkwZTJjNmZlNGE2OWU1NzRiIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICBmaWxlOi8vMDAwMS1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2ggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1GaXgtbWlzc2luZy1yZXR1cm4tc3RhdGVtZW50cy10aGF0LWFyZS1zZWVuLXdpdGgtV2VyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1GaXgtbWlzc2luZy1yZXR1cm4tc3RhdGVtZW50cy10aGF0LWFyZS1zZWVuLXdpdGgtV2VyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmM2ZDkwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtRml4LW1pc3NpbmctcmV0dXJuLXN0YXRlbWVudHMtdGhhdC1hcmUtc2Vlbi13aXRoLVdlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMCArMCwwIEBACi1Gcm9tIDE1ZjQ0YmUxYzdmNzFjYjBhOGM2ODYzOTE3YWNiYmMzMDFjNjIxZmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gTGlza2EgPG1saXNrYUBzdXNlLmN6PgotRGF0ZTogTW9uLCAxNSBKdWwgMjAxOSAxMDowNjoxNyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggbWlzc2luZyByZXR1cm4gc3RhdGVtZW50cyB0aGF0IGFyZSBzZWVuIHdpdGgKLSAtV2Vycm9yPXJldHVybi10eXBlLgotCi1FcnJvciBleGFtcGxlOgotCi1Db2RlOgotCi0gICAgICAgICNpbmNsdWRlIDxsb2NhbGUuaD4KLSAgICAgICAgaW50IG1haW4gKCkgewotICAgICAgICAgICAgLyogSWYgaXQncyBub3QgZGVmaW5lZCBhcyBhIG1hY3JvLCB0cnkgdG8gdXNlIGFzIGEgc3ltYm9sICovCi0gICAgICAgICAgICAjaWZuZGVmIExDX01FU1NBR0VTCi0gICAgICAgICAgICAgICAgTENfTUVTU0FHRVM7Ci0gICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgfQotQ29tcGlsZXIgc3Rkb3V0OgotCi1Db21waWxlciBzdGRlcnI6Ci0gSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9sb2NhbGUuaDoyNSwKLSAgICAgICAgICAgICAgICAgZnJvbSAvdG1wL3RtcGVwX2k0aXdnL3Rlc3RmaWxlLmM6MjoKLS91c3IvaW5jbHVkZS9mZWF0dXJlcy5oOjM4Mjo0OiB3YXJuaW5nOiAjd2FybmluZyBfRk9SVElGWV9TT1VSQ0UKLXJlcXVpcmVzIGNvbXBpbGluZyB3aXRoIG9wdGltaXphdGlvbiAoLU8pIFstV2NwcF0KLSAgMzgyIHwgIyAgd2FybmluZyBfRk9SVElGWV9TT1VSQ0UgcmVxdWlyZXMgY29tcGlsaW5nIHdpdGggb3B0aW1pemF0aW9uCi0oLU8pCi0gICAgICB8ICAgIF5+fn5+fn4KLS90bXAvdG1wZXBfaTRpd2cvdGVzdGZpbGUuYzogSW4gZnVuY3Rpb24gJ21haW4nOgotL3RtcC90bXBlcF9pNGl3Zy90ZXN0ZmlsZS5jOjg6OTogZXJyb3I6IGNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQKLWZ1bmN0aW9uIFstV2Vycm9yPXJldHVybi10eXBlXQotICAgIDggfCAgICAgICAgIH0KLSAgICAgIHwgICAgICAgICBeCi1jYzE6IHNvbWUgd2FybmluZ3MgYmVpbmcgdHJlYXRlZCBhcyBlcnJvcnMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotLS0tCi0gbWVzb25idWlsZC9jb21waWxlcnMvYy5weSAgICAgfCAxICsKLSBtZXNvbmJ1aWxkL2NvbXBpbGVycy9jbGlrZS5weSB8IDUgKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9jb21waWxlcnMvYy5weSBiL21lc29uYnVpbGQvY29tcGlsZXJzL2MucHkKLWluZGV4IDNiNThhMDc2Li45ZWY5MjA3NyAxMDA2NDQKLS0tLSBhL21lc29uYnVpbGQvY29tcGlsZXJzL2MucHkKLSsrKyBiL21lc29uYnVpbGQvY29tcGlsZXJzL2MucHkKLUBAIC03MCw2ICs3MCw3IEBAIGNsYXNzIENDb21waWxlcihDTGlrZUNvbXBpbGVyLCBDb21waWxlcik6Ci0gICAgICAgICAgICAgI2lmbmRlZiB7c3ltYm9sfQotICAgICAgICAgICAgICAgICB7c3ltYm9sfTsKLSAgICAgICAgICAgICAjZW5kaWYKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH19JycnCi0gICAgICAgICByZXR1cm4gc2VsZi5jb21waWxlcyh0LmZvcm1hdCgqKmZhcmdzKSwgZW52LCBleHRyYV9hcmdzPWV4dHJhX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM9ZGVwZW5kZW5jaWVzKQotZGlmZiAtLWdpdCBhL21lc29uYnVpbGQvY29tcGlsZXJzL2NsaWtlLnB5IGIvbWVzb25idWlsZC9jb21waWxlcnMvY2xpa2UucHkKLWluZGV4IDgzZjY3NTkxLi5mOWNiZWFiZCAxMDA2NDQKLS0tLSBhL21lc29uYnVpbGQvY29tcGlsZXJzL2NsaWtlLnB5Ci0rKysgYi9tZXNvbmJ1aWxkL2NvbXBpbGVycy9jbGlrZS5weQotQEAgLTM3NSw2ICszNzUsNyBAQCBjbGFzcyBDTGlrZUNvbXBpbGVyOgotICAgICAgICAgICAgICNpZm5kZWYge3N5bWJvbH0KLSAgICAgICAgICAgICAgICAge3N5bWJvbH07Ci0gICAgICAgICAgICAgI2VuZGlmCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9fScnJwotICAgICAgICAgcmV0dXJuIHNlbGYuY29tcGlsZXModC5mb3JtYXQoKipmYXJncyksIGVudiwgZXh0cmFfYXJncz1leHRyYV9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzPWRlcGVuZGVuY2llcykKLUBAIC01NTQsNiArNTU1LDcgQEAgY2xhc3MgQ0xpa2VDb21waWxlcjoKLSAgICAgICAgIHtwcmVmaXh9Ci0gICAgICAgICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHt7Ci0gICAgICAgICAgICAge3R5cGV9IHNvbWV0aGluZzsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH19JycnCi0gICAgICAgICBpZiBub3Qgc2VsZi5jb21waWxlcyh0LmZvcm1hdCgqKmZhcmdzKSwgZW52LCBleHRyYV9hcmdzPWV4dHJhX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM9ZGVwZW5kZW5jaWVzKVswXToKLUBAIC01ODksNiArNTkxLDcgQEAgY2xhc3MgQ0xpa2VDb21waWxlcjoKLSAgICAgICAgIHtwcmVmaXh9Ci0gICAgICAgICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHt7Ci0gICAgICAgICAgICAge3R5cGV9IHNvbWV0aGluZzsKLSsgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgIH19JycnCi0gICAgICAgICBpZiBub3Qgc2VsZi5jb21waWxlcyh0LmZvcm1hdCgqKmZhcmdzKSwgZW52LCBleHRyYV9hcmdzPWV4dHJhX2FyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXM9ZGVwZW5kZW5jaWVzKVswXToKLUBAIC02NjcsNiArNjcwLDcgQEAgY2xhc3MgQ0xpa2VDb21waWxlcjoKLSAgICAgICAgICNpbmNsdWRlIDxzdGRpby5oPgotICAgICAgICAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkge3sKLSAgICAgICAgICAgICBwcmludGYgKCJ7Zm10fSIsIHtjYXN0fSB7Zn0oKSk7Ci0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICB9fScnJy5mb3JtYXQoKipmYXJncykKLSAgICAgICAgIHJlcyA9IHNlbGYucnVuKGNvZGUsIGVudiwgZXh0cmFfYXJncz1leHRyYV9hcmdzLCBkZXBlbmRlbmNpZXM9ZGVwZW5kZW5jaWVzKQotICAgICAgICAgaWYgbm90IHJlcy5jb21waWxlZDoKLUBAIC04MTksNiArODIzLDcgQEAgY2xhc3MgQ0xpa2VDb21waWxlcjoKLSAgICAgICAgICAgICAgICAgI2Vycm9yICJObyBkZWZpbml0aW9uIGZvciBfX2J1aWx0aW5fe2Z1bmN9IGZvdW5kIGluIHRoZSBwcmVmaXgiCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAjZW5kaWYKLSsgICAgICAgIHJldHVybiAwOwotICAgICAgICAgfX0nJycKLSAgICAgICAgIHJldHVybiBzZWxmLmxpbmtzKHQuZm9ybWF0KCoqZmFyZ3MpLCBlbnYsIGV4dHJhX2FyZ3M9ZXh0cmFfYXJncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llcz1kZXBlbmRlbmNpZXMpCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjUxLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbl8wLjUxLjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uXzAuNTEuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb25fMC41MS4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9uYXRpdmVzZGstbWVzb25fMC41MS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNTEuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNTEuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbmF0aXZlc2RrLW1lc29uXzAuNTEuMi5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMS1Eb24tdC1sZWFrLXRlbXBvcmFyeS1maWxlLW9uLWZhaWxlZC1lZC1zdHlsZS1wYXRjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtZWQtc3R5bGUtcGF0Y2gucGF0Y2gKaW5kZXggOTg5MTUyNi4uNzgzNDVlOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMS1Eb24tdC1sZWFrLXRlbXBvcmFyeS1maWxlLW9uLWZhaWxlZC1lZC1zdHlsZS1wYXRjaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAxLURvbi10LWxlYWstdGVtcG9yYXJ5LWZpbGUtb24tZmFpbGVkLWVkLXN0eWxlLXBhdGNoLnBhdGNoCkBAIC0xNyw2ICsxNyw3IEBACiAKIEZpeGVzOiAxMjNlYWZmMGQ1ZDEgKCJGaXggYXJiaXRyYXJ5IGNvbW1hbmQgZXhlY3V0aW9uIGluIGVkLXN0eWxlIHBhdGNoZXMgKENWRS0yMDE4LTEwMDAxNTYpIikKIAorQ1ZFOiBDVkUtMjAxOC0xMDAwMTU2CiBVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9wYXRjaC5naXQvY29tbWl0Lz9pZD0xOTU5OTg4M2ZmYjZhNDUwZDI4ODRmMDgxZjhlY2Y2OGVkYmVkN2VlXQogU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KIC0tLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMS1Eb24tdC1sZWFrLXRlbXBvcmFyeS1maWxlLW9uLWZhaWxlZC1tdWx0aS1maWxlLWVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2gvMDAwMS1Eb24tdC1sZWFrLXRlbXBvcmFyeS1maWxlLW9uLWZhaWxlZC1tdWx0aS1maWxlLWVkLnBhdGNoCmluZGV4IGQ2YTIxOWEuLjhmZmZmZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoLzAwMDEtRG9uLXQtbGVhay10ZW1wb3JhcnktZmlsZS1vbi1mYWlsZWQtbXVsdGktZmlsZS1lZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaC9wYXRjaC8wMDAxLURvbi10LWxlYWstdGVtcG9yYXJ5LWZpbGUtb24tZmFpbGVkLW11bHRpLWZpbGUtZWQucGF0Y2gKQEAgLTE3LDYgKzE3LDcgQEAKIEZpeGVzOiAxMjNlYWZmMGQ1ZDEgKCJGaXggYXJiaXRyYXJ5IGNvbW1hbmQgZXhlY3V0aW9uIGluIGVkLXN0eWxlIHBhdGNoZXMgKENWRS0yMDE4LTEwMDAxNTYpIikKIEZpeGVzOiAxOTU5OTg4M2ZmYjYgKCJEb24ndCBsZWFrIHRlbXBvcmFyeSBmaWxlIG9uIGZhaWxlZCBlZC1zdHlsZSBwYXRjaCIpCiAKK0NWRTogQ1ZFLTIwMTgtMTAwMDE1NgogVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvcGF0Y2guZ2l0L2NvbW1pdC8/aWQ9MzY5ZGNjY2RmYTYzMzZlNWE4NzNkNmQ2MzcwNWNmYmUwNGM1NTcyN10KIFNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiAtLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCmluZGV4IGIxMjYxZDUuLmYwOTQ2ZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgpAQCAtMzYsNiArMzYsOSBAQAogIgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCisjIGVycm9yOiBlcnJvci5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKIFRBUkdFVF9PU19PUklHIDo9ICIke1RBUkdFVF9PU30iCiBPVkVSUklERVNfYXBwZW5kID0gIjoke1RBUkdFVF9PU19PUklHfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtbWFrZXRhYmxlcy13cmFwcGVycy11c2UtUHl0aG9uLTMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1tYWtldGFibGVzLXdyYXBwZXJzLXVzZS1QeXRob24tMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmRiZGFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzLzAwMDEtbWFrZXRhYmxlcy13cmFwcGVycy11c2UtUHl0aG9uLTMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBkYmQzNGIxYjJhZjhmYmY0NGEwZDVjMzdhYmUzNDQ4NDA1ODE5ODIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDE5OjIwOjI5ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2V0YWJsZXMvd3JhcHBlcnM6IHVzZSBQeXRob24gMworCitDaGFuZ2Vsb2cgaW5kaWNhdGVzIHRoZXkgc2hvdWxkIGJlIGNvbXBhdGlibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtYWtldGFibGVzICAgfCAyICstCisgbWFrZXdyYXBwZXJzIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbWFrZXRhYmxlcyBiL21ha2V0YWJsZXMKK2luZGV4IGEyMTE3NzIuLjUyMjg1ZTIgMTAwNzU1CistLS0gYS9tYWtldGFibGVzCisrKysgYi9tYWtldGFibGVzCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTAsIDIwMTMgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisgIworZGlmZiAtLWdpdCBhL21ha2V3cmFwcGVycyBiL21ha2V3cmFwcGVycworaW5kZXggZTg0NjA3ZC4uYjM0ZjdlYiAxMDA3NTUKKy0tLSBhL21ha2V3cmFwcGVycworKysrIGIvbWFrZXdyYXBwZXJzCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgQ29weXJpZ2h0IChjKSAyMDA4LTIwMTEsMjAxMyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyAjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCmluZGV4IDZjZjcxMWUuLjc4NTAwZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG9fZ2l0LmJiCkBAIC02LDkgKzYsMTIgQEAKICAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLWdyb3VwIFwKICAgICAgICAgICAgZmlsZTovL21vcmVyZXRyaWVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3Rvb21hbnlmaWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2V0YWJsZXMtd3JhcHBlcnMtdXNlLVB5dGhvbi0zLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiMDYwMDU4YmIyOWY3MGIyNDRlNjg1YjNjNzA0ZWIwNjQxYjczNmY3MyIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiBQViA9ICIxLjkuMCtnaXQke1NSQ1BWfSIKIAorIyBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnX1NUQVRfVkVSJworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2gKaW5kZXggOGZlMGQxYS4uOThhOTcwNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtRG9uLXQtc2VhcmNoLXVzci1hbmQtc28tb24tZm9yLWxpYnJhcmllcy1ieS1kZWZhdWx0LS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBjMTQ1NTRjN2UyZmZmOGRkNTU5ZGZiNDFlN2RkMTEzOTJjNmY4NWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2NzJhNzVjODQxN2NlMDhkYjllMzFmYzQxNWVjNDQ1NDc5MjMxZDVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUaHUsIDEwIERlYyAyMDE1IDEzOjIwOjMwICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHNlYXJjaCAvdXNyIGFuZCBzbyBvbiBmb3IgbGlicmFyaWVzIGJ5IGRlZmF1bHQgdG8KQEAgLTEwLDE0ICsxMCwxNCBAQAogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAKIC0tLQotIG51bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSB8IDUwICsrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKKyBudW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgfCA0MiArKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMzcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLWluZGV4IDI0MjQ5NDMuLmJmNTZhNmQgMTAwNjQ0CitpbmRleCBiYTJiMWY0Li5mOTRkY2UxIDEwMDY0NAogLS0tIGEvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CiArKysgYi9udW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkKLUBAIC0yNzQsNTEgKzI3NCwxMyBAQCBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKK0BAIC0yNzgsNDUgKzI3OCwxMyBAQCBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKICAgICAgICAgICAgICBhZGRfc3lzdGVtX3Jvb3Qob3MucGF0aC5qb2luKGNvbmRhX2RpciwgJ0xpYnJhcnknKSkKICAKICBlbHNlOgpAQCAtNDUsMzEgKzQ1LDI0IEBACiAtICAgICAgICAgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzLmV4dGVuZChbJy91c3IvbGliL1gxMS9pbmNsdWRlJywKIC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnL3Vzci9pbmNsdWRlL1gxMSddKQogLQotLSAgICBpbXBvcnQgc3VicHJvY2VzcyBhcyBzcAotLSAgICB0bXAgPSBOb25lCi0tICAgIHRyeToKLS0gICAgICAgICMgRXhwbGljaXRseSBvcGVuL2Nsb3NlIGZpbGUgdG8gYXZvaWQgUmVzb3VyY2VXYXJuaW5nIHdoZW4KLS0gICAgICAgICMgdGVzdHMgYXJlIHJ1biBpbiBkZWJ1ZyBtb2RlIFB5dGhvbiAzLgotLSAgICAgICAgdG1wID0gb3Blbihvcy5kZXZudWxsLCAndycpCi0tICAgICAgICBwID0gc3AuUG9wZW4oWyJnY2MiLCAiLXByaW50LW11bHRpYXJjaCJdLCBzdGRvdXQ9c3AuUElQRSwKLS0gICAgICAgICAgICAgICAgICAgICBzdGRlcnI9dG1wKQotLSAgICBleGNlcHQgKE9TRXJyb3IsIERpc3R1dGlsc0Vycm9yKToKLS0gICAgICAgICMgT1NFcnJvciBpZiBnY2MgaXMgbm90IGluc3RhbGxlZCwgb3IgU2FuZGJveFZpb2xhdGlvbiAoRGlzdHV0aWxzRXJyb3IKLS0gICAgICAgICMgc3ViY2xhc3MpIGlmIGFuIG9sZCBzZXR1cHRvb2xzIGJ1ZyBpcyB0cmlnZ2VyZWQgKHNlZSBnaC0zMTYwKS4KLS0gICAgICAgIHBhc3MKLS0gICAgZWxzZToKLS0gICAgICAgIHRyaXBsZXQgPSBzdHIocC5jb21tdW5pY2F0ZSgpWzBdLmRlY29kZSgpLnN0cmlwKCkpCi0tICAgICAgICBpZiBwLnJldHVybmNvZGUgPT0gMDoKLS0gICAgICAgICAgICAjIGdjYyBzdXBwb3J0cyB0aGUgIi1wcmludC1tdWx0aWFyY2giIG9wdGlvbgotLSAgICAgICAgICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzICs9IFtvcy5wYXRoLmpvaW4oIi91c3IvbGliLyIsIHRyaXBsZXQpXQotLSAgICAgICAgICAgIGRlZmF1bHRfbGliX2RpcnMgKz0gW29zLnBhdGguam9pbigiL3Vzci9saWIvIiwgdHJpcGxldCldCi0tICAgIGZpbmFsbHk6Ci0tICAgICAgICBpZiB0bXAgaXMgbm90IE5vbmU6Ci0tICAgICAgICAgICAgdG1wLmNsb3NlKCkKKy0gICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3JykgYXMgdG1wOgorLSAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsiZ2NjIiwgIi1wcmludC1tdWx0aWFyY2giXSwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXRtcCkKKy0gICAgICAgIGV4Y2VwdCAoT1NFcnJvciwgRGlzdHV0aWxzRXJyb3IpOgorLSAgICAgICAgICAgICMgT1NFcnJvciBpZiBnY2MgaXMgbm90IGluc3RhbGxlZCwgb3IgU2FuZGJveFZpb2xhdGlvbiAoRGlzdHV0aWxzRXJyb3IKKy0gICAgICAgICAgICAjIHN1YmNsYXNzKSBpZiBhbiBvbGQgc2V0dXB0b29scyBidWcgaXMgdHJpZ2dlcmVkIChzZWUgZ2gtMzE2MCkuCistICAgICAgICAgICAgcGFzcworLSAgICAgICAgZWxzZToKKy0gICAgICAgICAgICB0cmlwbGV0ID0gc3RyKHAuY29tbXVuaWNhdGUoKVswXS5kZWNvZGUoKS5zdHJpcCgpKQorLSAgICAgICAgICAgIGlmIHAucmV0dXJuY29kZSA9PSAwOgorLSAgICAgICAgICAgICAgICAjIGdjYyBzdXBwb3J0cyB0aGUgIi1wcmludC1tdWx0aWFyY2giIG9wdGlvbgorLSAgICAgICAgICAgICAgICBkZWZhdWx0X3gxMV9saWJfZGlycyArPSBbb3MucGF0aC5qb2luKCIvdXNyL2xpYi8iLCB0cmlwbGV0KV0KKy0gICAgICAgICAgICAgICAgZGVmYXVsdF9saWJfZGlycyArPSBbb3MucGF0aC5qb2luKCIvdXNyL2xpYi8iLCB0cmlwbGV0KV0KICsgICAgZGVmYXVsdF9saWJfZGlycyA9IGxpYnBhdGhzKFsnL2RlYWRpci9saWInXSwgcGxhdGZvcm1fYml0cykKICsgICAgZGVmYXVsdF9pbmNsdWRlX2RpcnMgPSBbJy9kZWFkZGlyL2luY2x1ZGUnXQogKyAgICBkZWZhdWx0X3NyY19kaXJzID0gWycuJywgJy9kZWFkZGlyL3NyYyddCi0rCisgCiArICAgIGRlZmF1bHRfeDExX2xpYl9kaXJzID0gbGlicGF0aHMoWycvZGVhZGRpci9saWInXSwgcGxhdGZvcm1fYml0cykKICsgICAgZGVmYXVsdF94MTFfaW5jbHVkZV9kaXJzID0gWycvZGVhZGRpci9pbmNsdWRlJ10KICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYjJhNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gYjg4MWUwYjJiYTljZjFhNGFhMzUxYTFjMWVhOTBiMWUxNzc2Y2UyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxMiBBdWcgMjAxOSAxNTozNzozNiArMDIwMAorU3ViamVjdDogW1BBVENIXSBudW1weS9yYW5kb20vc2V0dXAucHk6IHJlbW92ZSB0aGUgZGV0ZWN0aW9uIG9mIHg4NiB0YXJnZXRzCisgdmlhIHVuYW1lKCkKKworVGhpcyB3YXMgYmFkbHkgYnJlYWtpbmcgY29tcGlsYXRpb24gZm9yIEFSTSB0YXJnZXRzIChhbmQgcG9zc2libHkKK290aGVyIG5vbi14ODYgdGFyZ2V0cyk7IGlmIC1tc3NlMiBpcyBkZXNpcmFibGUgZm9yIHg4NiBidWlsZHMgaXQgaGFzCit0byBiZSBwYXNzZWQgdGhyb3VnaCBhbm90aGVyIGNoYW5uZWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbnVtcHkvcmFuZG9tL3NldHVwLnB5IHwgNSAtLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbnVtcHkvcmFuZG9tL3NldHVwLnB5IGIvbnVtcHkvcmFuZG9tL3NldHVwLnB5CitpbmRleCBhMWJmM2I4Li42MGZiNTM0IDEwMDY0NAorLS0tIGEvbnVtcHkvcmFuZG9tL3NldHVwLnB5CisrKysgYi9udW1weS9yYW5kb20vc2V0dXAucHkKK0BAIC00OSwxMSArNDksNiBAQCBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJywgdG9wX3BhdGg9Tm9uZSk6CisgICAgIGVsaWYgbm90IGlzX21zdmM6CisgICAgICAgICAjIFNvbWUgYml0IGdlbmVyYXRvcnMgcmVxdWlyZSBjOTkKKyAgICAgICAgIEVYVFJBX0NPTVBJTEVfQVJHUyArPSBbJy1zdGQ9Yzk5J10KKy0gICAgICAgIElOVEVMX0xJS0UgPSBhbnkoW3ZhbCBpbiBrLmxvd2VyKCkgZm9yIGsgaW4gcGxhdGZvcm0udW5hbWUoKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHZhbCBpbiAoJ3g4NicsICdpNjg2JywgJ2kzODYnLCAnYW1kNjQnKV0pCistICAgICAgICBpZiBJTlRFTF9MSUtFOgorLSAgICAgICAgICAgICMgQXNzdW1lcyBHQ0Mgb3IgR0NDLWxpa2UgY29tcGlsZXIKKy0gICAgICAgICAgICBFWFRSQV9DT01QSUxFX0FSR1MgKz0gWyctbXNzZTInXQorIAorICAgICAjIFVzZSBsZWdhY3kgaW50ZWdlciB2YXJpYWJsZSBzaXplcworICAgICBMRUdBQ1lfREVGUyA9IFsoJ05QX1JBTkRPTV9MRUdBQ1knLCAnMScpXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYwppbmRleCA0M2MzMDUzLi5hMTJlNzJmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uLW51bXB5LmluYwpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQSBzb3BoaXN0aWNhdGVkIE51bWVyaWMgUHJvY2Vzc2luZyBQYWNrYWdlIGZvciBQeXRob24iCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgUFNGICYgQXBhY2hlLTIuMCAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1kMjZiZGU1NDMyNjEzY2NlMjMzNGI5Mzk4NTU3NjIzMSIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgUFNGICYgQXBhY2hlLTIuMCAmIEJTRCAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xYTMyYWJhMDA3YTQxNWFhOGExYzcwOGEwZTJiODZhMSIKIAogU1JDTkFNRSA9ICJudW1weSIKIApAQCAtOSwxMyArOSwxNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eb24tdC1zZWFyY2gtdXNyLWFuZC1zby1vbi1mb3ItbGlicmFyaWVzLWJ5LWRlZmF1bHQtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgICR7Q09ORklHRklMRVNVUkl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaCBcCiAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwODg2ZTViNTAxN2YwOGYyYjdhNjI0YzBiNTkzMWU2MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZGYwNjNhM2Y4N2FiODkzOTNmNWVlYTBlYjkwMzI5M2IxMTJmYTBhMzA4ZThjNTk0YTc1ZmZhNTg1ZDgxZDRmIgorU1JDX1VSSVttZDVzdW1dID0gImM0OGIyYWQ3ODVmODJjZGZlMjhjOTA3Y2UzNWUyYTcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3YjdiNjE0NWU3YmE1OTE4Y2UyNmJlMjU5OTliNmQ0YjM1Y2Y5ZmJmZGY0NmI3ZGE1MDA5MGZmZGIwMjA0NDUiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcmVsZWFzZXMiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIAorIyBOZWVkZWQgZm9yIGJ1aWxkaW5nIHdpdGggZ2NjIDQueCBmcm9tIGNlbnRvcyA3CitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLXN0ZD1jOTkiCisKIENPTkZJR0ZJTEVTVVJJID89ICIiCiAKIENPTkZJR0ZJTEVTVVJJX2FhcmNoNjQgPSAiIFwKQEAgLTEwOSw2ICsxMTMsNyBAQAogICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWNvbXByZXNzaW9uIFwKICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAogICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIFwKICIKIAogUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTYuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTcuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNi4zLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE3LjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVzdHRvb2xzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVzdHRvb2xzLmluYwppbmRleCAxMDExYzk4Li5kMGIyZTQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRlc3R0b29scy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10ZXN0dG9vbHMuaW5jCkBAIC0xOSw2ICsxOSw3IEBACiAgICAgIgogCiBSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKICAgICAke1BZVEhPTl9QTn0tZXh0cmFzIFwKICAgICAke1BZVEhPTl9QTn0tcGJyIFwKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKaW5kZXggNzA0ODEwMC4uMTQ2MmI3NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi5pbmMKQEAgLTM3LDcgKzM3LDYgQEAKICAgLS1lbmFibGUtc2hhcmVkIFwKICAgLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IFwKICAgYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubyBhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2g9bm8gXAotICAke1BZVEhPTkxTQk9QVFN9IFwKICIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTAuYmIKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuOC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTAuYmIKaW5kZXggMmZiMWVhZS4uODg5MmQwZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMC5iYgpAQCAtOCw4ICs4LDggQEAKIFNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3Mzc5ZGI3NzRjMTA5MDRmMjdlN2UyNzQzZDkwZmI0MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYmYxMmJiYjc2NWUzMDBiZjhlMmExYjJmMzJmODU5NDllYWIwNjk5OGRiZGExMjc5NTJjMzFjYjYzOTU3YjZmIgorU1JDX1VSSVttZDVzdW1dID0gIjVkMjFkNWFlNjQyM2YwZTQxY2FhMzQwMGFmNDRlZGFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0MzMyYmJkNGEwMDU0ZmE0MDEwYjI1OWMyOTNiODRkNDYxYmJkOWQ3YThlZjUyODE1N2QxNTFjMDM5OGQ4ODYiCiBTID0gIiR7V09SS0RJUn0vZGJ1cy1weXRob24tJHtQVn0iCiAKIGluaGVyaXQgZGlzdHV0aWxzMy1iYXNlIGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMi5iYgppbmRleCBiNmM4MzdjLi45ZGQ3NTNkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0XzMuMC4yLmJiCkBAIC0xMiw4ICsxMiw4IEBACiAKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCi1TUkNfVVJJW21kNXN1bV0gPSAiOTQxMmFlOTY2NWZkMjkzMjhmMmFmYzZkZjg4N2FlODEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjI5ODY3ZWJmNjA5Y2VmMjFiYjlkODQ5MDM5ZTI4MWUyNTk2M2ZiN2Q3MTRhMmY2YmFjYzFlY2NlNDgwMDI5MyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjY2VjMTRhNWM5ZjE4NzAyNDA2MTIyOTgzZDgwMDMyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMmY0OTQ1ZjgyNjBmNjk4MWQ3MjRmNTk1N2JjMDc2Mzk4YWRhNTVjYjVkMjVhYWVlMTAxMDhiY2RjODk0MTAwIgogCiBERVBFTkRTICs9ICIgJHtQWVRIT05fUE59LWdpdGRiIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1OWU3NDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1wYnIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlYTkwZTExMThhMDEzMmRhNzUyZDQ1ZTY4ZDEwYjJiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjMyMWMyMDRhODhkOGFiNTA4MjY5OTQ2OWY1MmNjOTRjNWRhNDVjNTFmMTE0MTEzZDAxYjNkOTkzYzI0Y2RmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyXzUuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3ODM1ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1wYnIuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NzdkMmFhMjg1YWQ5NzI1MGExNzJiMTk5ZjQwNjBiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzhlNDIwY2Q0ZWQ0Y2VjNGU3OTk5ZWU0NzQwOWU4NzZhZjU3NWQ0YzM1YTQ1ODQwZDU5ZThiNWYzMTU1YWI4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4yLjMuYmIKc2ltaWxhcml0eSBpbmRleCA4MSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjIuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjIuMy5iYgppbmRleCBmYWFmYmMxLi5hYTcyNTNkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMTkuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4yLjMuYmIKQEAgLTYsOCArNiw4IEBACiAKIERFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjJiYTBhM2I3NmQzOWNjZDkwY2EyMmJmYTgyZmM2MzVmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwNTEwMzgyNTg3MWUyMTBkNTBhNDRjN2U0NDg1ODdiMGVkOTlkZDc3NWQzZWY1ODYzMDRjNThmNDAyMjRhNTMiCitTUkNfVVJJW21kNXN1bV0gPSAiZjQxNzQ0NGM2NmEwZGIxYTgyYzhkOWQyMjgzYTJmOTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTdhMzFmMTQ3OTc0MzYyZTZjODJkODRiOTFjN2YyYmRmNTdlNGQzMTYzZDNkNDU0ZTZjM2U3MTk0NGQ2NzEzNSIKIAogaW5oZXJpdCBweXBpIGRpc3R1dGlsczMKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCmluZGV4IGVjMjhjMmQuLjhlOTQzMDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KQEAgLTExNSw3ICsxMTUsNyBAQAogICAgICAgICAiY2FjaGVkIjogW10KICAgICB9LAogICAgICJhc3luY2lvIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQXN5bmNocm9ub3VzIEkvIiwKKyAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEFzeW5jaHJvbm91cyBJL08iLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAiaW8iLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjcuNC5iYgppbmRleCA4MGM5YjI5Li4xNDExOWMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjcuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjcuNC5iYgpAQCAtMzEwLDcgKzMxMCw3IEBACiAKICMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKIFBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtZW1haWwgcHl0aG9uMy1jb2RlY3MiCitSREVQRU5EU18ke1BOfS1taXNjICs9ICJweXRob24zLWNvcmUgcHl0aG9uMy1lbWFpbCBweXRob24zLWNvZGVjcyBweXRob24zLXB5ZG9jIHB5dGhvbjMtcGlja2xlIgogUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW1pc2MiCiBSREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIHB5dGhvbjMtbWlzYyIKIEZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwppbmRleCBkMmRkMmJjLi4yNDFmOWRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKQEAgLTIyLDYgKzIyLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDctYXBpYy1maXh1cC1mYWxsdGhyb3VnaC10by1QSUMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwOS1GaXgtd2Via2l0Z3RrLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLWNvbmZpZ3VyZS1BZGQtcGtnLWNvbmZpZy1oYW5kbGluZy1mb3ItbGliZ2NyeXB0LnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicWVtdS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKIApAQCAtMTMxLDcgKzEzMiw3IEBACiBQQUNLQUdFQ09ORklHW3ZuYy1zYXNsXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLXNhc2wsLS1kaXNhYmxlLXZuYy1zYXNsLGN5cnVzLXNhc2wsIgogUEFDS0FHRUNPTkZJR1t2bmMtanBlZ10gPSAiLS1lbmFibGUtdm5jIC0tZW5hYmxlLXZuYy1qcGVnLC0tZGlzYWJsZS12bmMtanBlZyxqcGVnLCIKIFBBQ0tBR0VDT05GSUdbdm5jLXBuZ10gPSAiLS1lbmFibGUtdm5jIC0tZW5hYmxlLXZuYy1wbmcsLS1kaXNhYmxlLXZuYy1wbmcsbGlicG5nLCIKLVBBQ0tBR0VDT05GSUdbbGliY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxsaWJjdXJsLCIKK1BBQ0tBR0VDT05GSUdbbGliY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsLCIKIFBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLWVuYWJsZS1zbWFydGNhcmQsLS1kaXNhYmxlLXNtYXJ0Y2FyZCxuc3MsIgogUEFDS0FHRUNPTkZJR1tjdXJzZXNdID0gIi0tZW5hYmxlLWN1cnNlcywtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsIgogUEFDS0FHRUNPTkZJR1tndGsrXSA9ICItLWVuYWJsZS1ndGssLS1kaXNhYmxlLWd0ayxndGsrMyBnZXR0ZXh0LW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWNvbmZpZ3VyZS1BZGQtcGtnLWNvbmZpZy1oYW5kbGluZy1mb3ItbGliZ2NyeXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThhYjdkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWNvbmZpZ3VyZS1BZGQtcGtnLWNvbmZpZy1oYW5kbGluZy1mb3ItbGliZ2NyeXB0LnBhdGNoCkBAIC0wLDAgKzEsOTMgQEAKK0Zyb20gNTIxNGRkNDQ2MWYyMDkwZWYwOTY1YjRkMjUxOGY0OTkyN2Q2MWNiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDE5OjU2OjI4ICswODAwCitTdWJqZWN0OiBbUWVtdS1kZXZlbF0gW1BBVENIXSBjb25maWd1cmU6IEFkZCBwa2ctY29uZmlnIGhhbmRsaW5nIGZvciBsaWJnY3J5cHQKKworbGliZ2NyeXB0IG1heSBhbHNvIGJlIGNvbnRyb2xsZWQgYnkgcGtnLWNvbmZpZywgdGhpcyBwYXRjaCBhZGRzIHBrZy1jb25maWcKK2hhbmRsaW5nIGZvciBsaWJnY3J5cHQuCisKK1Vwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOS0wOC9tc2cwNjMzMy5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGU0NGU0NTQuLjBmMzYyYTcgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTI4NzUsNiArMjg3NSwzMCBAQCBoYXNfbGliZ2NyeXB0KCkgeworICAgICByZXR1cm4gMAorIH0KKyAKKytoYXNfbGliZ2NyeXB0X3BrZ2NvbmZpZygpIHsKKysgICAgaWYgISBoYXMgJHBrZ19jb25maWcgOyB0aGVuCisrICAgICAgICByZXR1cm4gMQorKyAgICBmaQorKworKyAgICBpZiAhICRwa2dfY29uZmlnIC0tbGlzdC1hbGwgfCBncmVwIGxpYmdjcnlwdCA+IC9kZXYvbnVsbCAyPiYxIDsgdGhlbgorKyAgICAgICAgcmV0dXJuIDEKKysgICAgZmkKKysKKysgICAgaWYgdGVzdCAtbiAiJGNyb3NzX3ByZWZpeCIgOyB0aGVuCisrICAgICAgICBob3N0PSQoJHBrZ19jb25maWcgLS12YXJpYWJsZT1ob3N0IGxpYmdjcnlwdCkKKysgICAgICAgIGlmIHRlc3QgIiR7aG9zdCUtZ251fS0iICE9ICIke2Nyb3NzX3ByZWZpeCUtZ251fSIgOyB0aGVuCisrICAgICAgICAgICAgcHJpbnRfZXJyb3IgImhvc3QoJGhvc3QpIGRvZXMgbm90IG1hdGNoIGNyb3NzX3ByZWZpeCgkY3Jvc3NfcHJlZml4KSIKKysgICAgICAgICAgICByZXR1cm4gMQorKyAgICAgICAgZmkKKysgICAgZmkKKysKKysgICAgaWYgISAkcGtnX2NvbmZpZyAtLWF0bGVhc3QtdmVyc2lvbj0xLjUuMCBsaWJnY3J5cHQgOyB0aGVuCisrICAgICAgICBwcmludF9lcnJvciAibGliZ2NyeXB0IHZlcnNpb24gaXMgJCgkcGtnX2NvbmZpZyAtLW1vZHZlcnNpb24gbGliZ2NyeXB0KSIKKysgICAgICAgIHJldHVybiAxCisrICAgIGZpCisrCisrICAgIHJldHVybiAwCisrfQorIAorIGlmIHRlc3QgIiRuZXR0bGUiICE9ICJubyI7IHRoZW4KKyAgICAgcGFzcz0ibm8iCitAQCAtMjkwMiw3ICsyOTI2LDE0IEBAIGZpCisgCisgaWYgdGVzdCAiJGdjcnlwdCIgIT0gIm5vIjsgdGhlbgorICAgICBwYXNzPSJubyIKKy0gICAgaWYgaGFzX2xpYmdjcnlwdDsgdGhlbgorKyAgICBpZiBoYXNfbGliZ2NyeXB0X3BrZ2NvbmZpZzsgdGhlbgorKyAgICAgICAgZ2NyeXB0X2NmbGFncz0kKCRwa2dfY29uZmlnIC0tY2ZsYWdzIGxpYmdjcnlwdCkKKysgICAgICAgIGlmIHRlc3QgIiRzdGF0aWMiID0gInllcyIgOyB0aGVuCisrICAgICAgICAgICAgZ2NyeXB0X2xpYnM9JCgkcGtnX2NvbmZpZyAtLWxpYnMgLS1zdGF0aWMgbGliZ2NyeXB0KQorKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGdjcnlwdF9saWJzPSQoJHBrZ19jb25maWcgLS1saWJzIGxpYmdjcnlwdCkKKysgICAgICAgIGZpCisrICAgIGVsaWYgaGFzX2xpYmdjcnlwdDsgdGhlbgorICAgICAgICAgZ2NyeXB0X2NmbGFncz0kKGxpYmdjcnlwdC1jb25maWcgLS1jZmxhZ3MpCisgICAgICAgICBnY3J5cHRfbGlicz0kKGxpYmdjcnlwdC1jb25maWcgLS1saWJzKQorICAgICAgICAgIyBEZWJpYW4gaGFzIHJlbW92ZWQgLWxncGctZXJyb3IgZnJvbSBsaWJnY3J5cHQtY29uZmlnCitAQCAtMjkxMiwxNSArMjk0MywxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCisgICAgICAgICB0aGVuCisgICAgICAgICAgICAgZ2NyeXB0X2xpYnM9IiRnY3J5cHRfbGlicyAtbGdwZy1lcnJvciIKKyAgICAgICAgIGZpCisrICAgIGZpCisgCistICAgICAgICAjIExpbmsgdGVzdCB0byBtYWtlIHN1cmUgdGhlIGdpdmVuIGxpYnJhcmllcyB3b3JrIChlLmcgZm9yIHN0YXRpYykuCistICAgICAgICB3cml0ZV9jX3NrZWxldG9uCistICAgICAgICBpZiBjb21waWxlX3Byb2cgIiIgIiRnY3J5cHRfbGlicyIgOyB0aGVuCistICAgICAgICAgICAgTElCUz0iJGdjcnlwdF9saWJzICRMSUJTIgorLSAgICAgICAgICAgIFFFTVVfQ0ZMQUdTPSIkUUVNVV9DRkxBR1MgJGdjcnlwdF9jZmxhZ3MiCistICAgICAgICAgICAgcGFzcz0ieWVzIgorLSAgICAgICAgZmkKKysgICAgIyBMaW5rIHRlc3QgdG8gbWFrZSBzdXJlIHRoZSBnaXZlbiBsaWJyYXJpZXMgd29yayAoZS5nIGZvciBzdGF0aWMpLgorKyAgICB3cml0ZV9jX3NrZWxldG9uCisrICAgIGlmIGNvbXBpbGVfcHJvZyAiIiAiJGdjcnlwdF9saWJzIiA7IHRoZW4KKysJICAgIExJQlM9IiRnY3J5cHRfbGlicyAkTElCUyIKKysJICAgIFFFTVVfQ0ZMQUdTPSIkUUVNVV9DRkxBR1MgJGdjcnlwdF9jZmxhZ3MiCisrCSAgICBwYXNzPSJ5ZXMiCisgICAgIGZpCisrCisgICAgIGlmIHRlc3QgIiRwYXNzIiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgICBnY3J5cHQ9InllcyIKKyAgICAgICAgIGNhdCA+ICRUTVBDIDw8IEVPRgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4xLjAuYmIKaW5kZXggNzY3NzYwOS4uZjBjMWRhYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzQuMS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYgpAQCAtMiw2ICsyLDEwIEBACiAKIHJlcXVpcmUgcWVtdS5pbmMKIAorIyBlcnJvcjogYSBwYXJhbWV0ZXIgbGlzdCB3aXRob3V0IHR5cGVzIGlzIG9ubHkgYWxsb3dlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24KKyMgICAgICAgICAgICB2b2lkICgqX2Z1bmN0aW9uKShzaWd2YWxfdCk7CitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKIERFUEVORFMgPSAiZ2xpYi0yLjAgemxpYiBwaXhtYW4gYmlzb24tbmF0aXZlIgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gImJhc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1tb25vLWZpbmQtcHJvdmlkZXMtcmVxdWlyZXMtZG8tbm90LXVzZS1tb25vZGlzLWZyb20tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtbW9uby1maW5kLXByb3ZpZGVzLXJlcXVpcmVzLWRvLW5vdC11c2UtbW9ub2Rpcy1mcm9tLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGFhNGM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtbW9uby1maW5kLXByb3ZpZGVzLXJlcXVpcmVzLWRvLW5vdC11c2UtbW9ub2Rpcy1mcm9tLS5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIDQzZmJjM2Y1MzMwMmEzOTU0NjNlODQ1MGFjODFjNTNmNjIzZWVjM2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgQXVnIDIwMTkgMTc6NDI6MzQgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbW9uby1maW5kLXByb3ZpZGVzL3JlcXVpcmVzOiBkbyBub3QgdXNlIG1vbm9kaXMgZnJvbSB0aGUgaG9zdAorCitUaGVyZSB3YXMgYSBob3N0IGNvbnRhbWluYXRpb24gaXNzdWUgaGVyZTogaWYgbW9ub2RpcyB3YXMgaW5zdGFsbGVkCitvbiB0aGUgaG9zdCwgZG9fcGFja2FnZSB3b3VsZCB1c2UgdGhhdCB0byByZXNvbHZlIGRlcGVuZGVuY2llcworb2YgbW9ubyBsaWJyYXJpZXMgKGFuZCBvZnRlbiBmYWlsIGluIHRoYXQpLiBXaXRob3V0IG1vbm9kaXMsCitubyBkZXBlbmRlbmNpZXMgYXJlIHJlc29sdmVkLCB3aGljaCBpcyBzZWVtaW5nbHkgaG93IHRoaW5ncworYXJlIHN1cHBvc2VkIHRvIHdvcmsuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc2NyaXB0cy9tb25vLWZpbmQtcHJvdmlkZXMgfCA4ICsrKystLS0tCisgc2NyaXB0cy9tb25vLWZpbmQtcmVxdWlyZXMgfCA4ICsrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zY3JpcHRzL21vbm8tZmluZC1wcm92aWRlcyBiL3NjcmlwdHMvbW9uby1maW5kLXByb3ZpZGVzCitpbmRleCA5MzQ4NDU3ZDMuLmIyODg3MmZmYiAxMDA2NDQKKy0tLSBhL3NjcmlwdHMvbW9uby1maW5kLXByb3ZpZGVzCisrKysgYi9zY3JpcHRzL21vbm8tZmluZC1wcm92aWRlcworQEAgLTE4LDExICsxOCwxMSBAQCBtb25vbGlzdD0oJChwcmludGYgIiVzXG4iICIke2ZpbGVsaXN0W0BdfSIgfCBncmVwIC1FICJcXC4oZXhlfGRsbClcJCIpKQorIGJ1aWxkX2JpbmRpcj0iJDIvdXNyL2JpbiIKKyBidWlsZF9saWJkaXI9IiQyJDMiCisgCistaWYgWyAteCAkYnVpbGRfYmluZGlyL21vbm9kaXMgXTsgdGhlbgorLSAgICBtb25vZGlzPSIkYnVpbGRfYmluZGlyL21vbm9kaXMiCisraWYgWyAteCAkYnVpbGRfYmluZGlyL21vbm9kaXMuYm9ndXMgXTsgdGhlbgorKyAgICBtb25vZGlzPSIkYnVpbGRfYmluZGlyL21vbm9kaXMuYm9ndXMiCisgICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JGJ1aWxkX2xpYmRpciR7TERfTElCUkFSWV9QQVRIOis6JExEX0xJQlJBUllfUEFUSH0KKy1lbGlmIFsgLXggL3Vzci9iaW4vbW9ub2RpcyBdOyB0aGVuCistICAgIG1vbm9kaXM9Ii91c3IvYmluL21vbm9kaXMiCisrZWxpZiBbIC14IC91c3IvYmluL21vbm9kaXMuYm9ndXMgXTsgdGhlbgorKyAgICBtb25vZGlzPSIvdXNyL2Jpbi9tb25vZGlzLmJvZ3VzIgorIGVsc2UKKyAgICAgZXhpdCAwOworIGZpCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tb25vLWZpbmQtcmVxdWlyZXMgYi9zY3JpcHRzL21vbm8tZmluZC1yZXF1aXJlcworaW5kZXggZWE1OGNhZTQ4Li5kMjcwMTY5ZTEgMTAwNjQ0CistLS0gYS9zY3JpcHRzL21vbm8tZmluZC1yZXF1aXJlcworKysrIGIvc2NyaXB0cy9tb25vLWZpbmQtcmVxdWlyZXMKK0BAIC0xOCwxMSArMTgsMTEgQEAgbW9ub2xpc3Q9KCQocHJpbnRmICIlc1xuIiAiJHtmaWxlbGlzdFtAXX0iIHwgZ3JlcCAtRSAiXFwuKGV4ZXxkbGwpXCQiKSkKKyBidWlsZF9iaW5kaXI9IiQyL3Vzci9iaW4iCisgYnVpbGRfbGliZGlyPSIkMiQzIgorIAorLWlmIFsgLXggJGJ1aWxkX2JpbmRpci9tb25vZGlzIF07IHRoZW4KKy0gICAgbW9ub2Rpcz0iJGJ1aWxkX2JpbmRpci9tb25vZGlzIgorK2lmIFsgLXggJGJ1aWxkX2JpbmRpci9tb25vZGlzLmJvZ3VzIF07IHRoZW4KKysgICAgbW9ub2Rpcz0iJGJ1aWxkX2JpbmRpci9tb25vZGlzLmJvZ3VzIgorICAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSRidWlsZF9saWJkaXIke0xEX0xJQlJBUllfUEFUSDorOiRMRF9MSUJSQVJZX1BBVEh9CistZWxpZiBbIC14IC91c3IvYmluL21vbm9kaXMgXTsgdGhlbgorLSAgICBtb25vZGlzPSIvdXNyL2Jpbi9tb25vZGlzIgorK2VsaWYgWyAteCAvdXNyL2Jpbi9tb25vZGlzLmJvZ3VzIF07IHRoZW4KKysgICAgbW9ub2Rpcz0iL3Vzci9iaW4vbW9ub2Rpcy5ib2d1cyIKKyBlbHNlCisgICAgIGV4aXQgMDsKKyBmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIKaW5kZXggMDYzZjQyNi4uYzM3MzMwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiCkBAIC00MSw2ICs0MSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtZGlzYWJsZS1hdXRvLXJlcXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1ycG0tcnBtaW8uYy1yZXN0cmljdC12aXJ0dWFsLW1lbW9yeS11c2FnZS1pZi1saW1pdC1zLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTYtcnBtc2NyaXB0LmMtY2hhbmdlLWxvZ2dpbmctbGV2ZWwtYXJvdW5kLXNjcmlwdGxldHMtdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vbm8tZmluZC1wcm92aWRlcy1yZXF1aXJlcy1kby1ub3QtdXNlLW1vbm9kaXMtZnJvbS0ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFBFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vc3VidmVyc2lvbi0xLjEyLjAtYXByXzEuNy4wX2ZpeC0xLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24tMS4xMi4wLWFwcl8xLjcuMF9maXgtMS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBlZGQ1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb24vc3VidmVyc2lvbi0xLjEyLjAtYXByXzEuNy4wX2ZpeC0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLUZyb20gYjE0NzgwMzU1MzIzNzY1NGY4MjY4ZTgzMWRlZThmZWQ0OTg5YWQzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFNhdCwgMTEgTWF5IDIwMTkgMTQ6NDY6MzkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gU3VibWl0dGVkIEJ5OiBQaWVycmUgTGFiYXN0aWUgKHBpZXJyZSBkb3QgbGFiYXN0aWUgYXQgbmV1ZgotIGRvdCBmcikgRGF0ZTogMjAxOS0wNC0xNyBJbml0aWFsIFBhY2thZ2UgVmVyc2lvbjogMS4xMS4xIE9yaWdpbjogVXBzdHJlYW0KLSByZXZpc2lvbiAxODU3MzkxIFVwc3RyZWFtIFN0YXR1czogQ29tbWl0dGVkIERlc2NyaXB0aW9uOiBHZXQgcmlkIG9mCi0gYXByX2ludDY0X3QgZm9ybWF0IHN0cmluZyBjaGVjayBpbiBzd2lnIHB5IGNvbmZpZ3VyZS4KLQotVGhpcyBjaGVjayByZWxpZWQgb24gQVBSIGltcGxlbWVudGF0aW9uIGRldGFpbHMgYW5kIGJyb2tlIHdpdGggQVBSIDEuNy4wLgotUmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGd1ZXNzIGEgcGVyZmVjdCBmb3JtYXQgc3RyaW5nIHRvIHVzZSwganVzdCB1c2UgdGhlCi1sYXJnZXN0IHBvc3NpYmxlIGZvcm1hdCBhbmQgY2FzdCB0aGUgYXJndW1lbnQgYWNjb3JkaW5nbHkuCi0KLVNob3VsZCBmaXggYnVpbGQgYWdhaW5zdCBBUFIgMS43LjAgYW5kIGxhdGVyLgotCi1TdWdnZXN0ZWQgYnk6IGJyYW5lCi0KLSogYnVpbGQvYWMtbWFjcm9zL3N3aWcubTQ6IFJlbW92ZSBjb2RlIHJlbGF0ZWQgdG8gU1ZOX0FQUl9JTlQ2NF9UX1BZQ0ZNVC4KLQotKiBzdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9uL2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5LmMKLSAgKHN2bl9zd2lnX3B5X2NsaWVudF9ibGFtZV9yZWNlaXZlcl9mdW5jKTogU3RvcCByZWx5aW5nIG9uIHRoZQotICAgU1ZOX0FQUl9JTlQ2NF9UX1BZQ0ZNVCBjb25zdGFudCBmcm9tIGNvbmZpZ3VyZS4gVXNlICJMIiBhbmQKLSAgIGFjYXN0IHRvIFBZX0xPTkdfTE9ORyBpbnN0ZWFkLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFt3d3cubGludXhmcm9tc2NyYXRjaC5vcmcvcGF0Y2hlcy9ibGZzL3N2bi9zdWJ2ZXJzaW9uLTEuMTIuMC1hcHJfMS43LjBfZml4LTEucGF0Y2hdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGJ1aWxkL2FjLW1hY3Jvcy9zd2lnLm00ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMzUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIC4uLi9zd2lnL3B5dGhvbi9saWJzdm5fc3dpZ19weS9zd2lndXRpbF9weS5jICAgICAgIHwgIDkgKysrLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbGQvYWMtbWFjcm9zL3N3aWcubTQgYi9idWlsZC9hYy1tYWNyb3Mvc3dpZy5tNAotaW5kZXggNTU1MDFmYi4uMjk2Mzg3MiAxMDA2NDQKLS0tLSBhL2J1aWxkL2FjLW1hY3Jvcy9zd2lnLm00Ci0rKysgYi9idWlsZC9hYy1tYWNyb3Mvc3dpZy5tNAotQEAgLTEyOCw0MSArMTI4LDYgQEAgQUNfREVGVU4oU1ZOX0ZJTkRfU1dJRywKLSAgICAgICBhY19jdl9weXRob25fbGlicz0iYCRQWVRIT04gJHthYnNfc3JjZGlyfS9idWlsZC9nZXQtcHktaW5mby5weSAtLWxpYnNgIgotICAgICBdKQotICAgICBTV0lHX1BZX0xJQlM9ImBTVk5fUkVNT1ZFX1NUQU5EQVJEX0xJQl9ESVJTKCRhY19jdl9weXRob25fbGlicylgIgotLQotLSAgICBkbmwgU3VuIEZvcnRlIGFkZHMgYW4gZXh0cmEgc3BhY2UgYmVmb3JlIHN1YnN0aXR1dGluZyBBUFJfSU5UNjRfVF9GTVQKLS0gICAgZG5sIGdjYy0yLjk1IGFkZHMgYW4gZXh0cmEgc3BhY2UgYWZ0ZXIgc3Vic3RpdHV0aW5nIEFQUl9JTlQ2NF9UX0ZNVAotLSAgICBkbmwgdGh1cyB0aGUgZWdyZXAgcGF0dGVybnMgaGF2ZSBhICsgaW4gdGhlbS4KLS0gICAgU1ZOX1BZQ0ZNVF9TQVZFX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0tICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJFNWTl9BUFJfSU5DTFVERVMiCi0tICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYXByX2ludDY0X3QgUHl0aG9uL0MgQVBJIGZvcm1hdCBzdHJpbmddLAotLSAgICAgICAgICAgICAgICAgICBbc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdF0sIFsKLS0gICAgICBpZiB0ZXN0ICJ4JHN2bl9jdl9weWNmbXRfYXByX2ludDY0X3QiID0gIngiOyB0aGVuCi0tICAgICAgICBBQ19FR1JFUF9DUFAoW01hVGNIdEhpUyArXCJsbGRcIiArRW5EZU5kXSwKLS0gICAgICAgICAgICAgICAgICAgICBbI2luY2x1ZGUgPGFwci5oPgotLSAgICAgICAgICAgICAgICAgICAgICBNYVRjSHRIaVMgQVBSX0lOVDY0X1RfRk1UIEVuRGVOZF0sCi0tICAgICAgICAgICAgICAgICAgICAgW3N2bl9jdl9weWNmbXRfYXByX2ludDY0X3Q9IkwiXSkKLS0gICAgICBmaQotLSAgICAgIGlmIHRlc3QgIngkc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdCIgPSAieCI7IHRoZW4KLS0gICAgICAgIEFDX0VHUkVQX0NQUChbTWFUY0h0SGlTICtcImxkXCIgK0VuRGVOZF0scgotLSAgICAgICAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8YXByLmg+Ci0tICAgICAgICAgICAgICAgICAgICAgIE1hVGNIdEhpUyBBUFJfSU5UNjRfVF9GTVQgRW5EZU5kXSwKLS0gICAgICAgICAgICAgICAgICAgICBbc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdD0ibCJdKQotLSAgICAgIGZpCi0tICAgICAgaWYgdGVzdCAieCRzdm5fY3ZfcHljZm10X2Fwcl9pbnQ2NF90IiA9ICJ4IjsgdGhlbgotLSAgICAgICAgQUNfRUdSRVBfQ1BQKFtNYVRjSHRIaVMgK1wiZFwiICtFbkRlTmRdLAotLSAgICAgICAgICAgICAgICAgICAgIFsjaW5jbHVkZSA8YXByLmg+Ci0tICAgICAgICAgICAgICAgICAgICAgIE1hVGNIdEhpUyBBUFJfSU5UNjRfVF9GTVQgRW5EZU5kXSwKLS0gICAgICAgICAgICAgICAgICAgICBbc3ZuX2N2X3B5Y2ZtdF9hcHJfaW50NjRfdD0iaSJdKQotLSAgICAgIGZpCi0tICAgIF0pCi0tICAgIENQUEZMQUdTPSIkU1ZOX1BZQ0ZNVF9TQVZFX0NQUEZMQUdTIgotLSAgICBpZiB0ZXN0ICJ4JHN2bl9jdl9weWNmbXRfYXByX2ludDY0X3QiID0gIngiOyB0aGVuCi0tICAgICAgQUNfTVNHX0VSUk9SKFtmYWlsZWQgdG8gcmVjb2duaXplIEFQUl9JTlQ2NF9UX0ZNVCBvbiB0aGlzIHBsYXRmb3JtXSkKLS0gICAgZmkKLS0gICAgQUNfREVGSU5FX1VOUVVPVEVEKFtTVk5fQVBSX0lOVDY0X1RfUFlDRk1UXSwKLS0gICAgICAgICAgICAgICAgICAgICAgIFsiJHN2bl9jdl9weWNmbXRfYXByX2ludDY0X3QiXSwKLS0gICAgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gdGhlIFB5dGhvbi9DIEFQSSBmb3JtYXQgY2hhcmFjdGVyIHN1aXRhYmxlXQotLSAgICAgICAgICAgICAgICAgICAgICAgWyBmb3IgYXByX2ludDY0X3RdKQotICAgZmkKLSAKLSAgIGlmIHRlc3QgIiRQRVJMIiAhPSAibm9uZSI7IHRoZW4KLWRpZmYgLS1naXQgYS9zdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9uL2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5LmMgYi9zdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9uL2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5LmMKLWluZGV4IDJjOTBhNmEuLmFiZTVhMmEgMTAwNjQ0Ci0tLS0gYS9zdWJ2ZXJzaW9uL2JpbmRpbmdzL3N3aWcvcHl0aG9uL2xpYnN2bl9zd2lnX3B5L3N3aWd1dGlsX3B5LmMKLSsrKyBiL3N1YnZlcnNpb24vYmluZGluZ3Mvc3dpZy9weXRob24vbGlic3ZuX3N3aWdfcHkvc3dpZ3V0aWxfcHkuYwotQEAgLTQ2LDcgKzQ2LDcgQEAKLSAjaW5jbHVkZSAic3ZuX21lcmdlaW5mby5oIgotICNpbmNsdWRlICJzdm5fdHlwZXMuaCIKLSAKLS0jaW5jbHVkZSAic3ZuX3ByaXZhdGVfY29uZmlnLmgiIC8qIGZvciBTVk5fQVBSX0lOVDY0X1RfUFlDRk1UICovCi0rI2luY2x1ZGUgInN2bl9wcml2YXRlX2NvbmZpZy5oIgotIAotICNpbmNsdWRlICJzd2lnX3B5dGhvbl9leHRlcm5hbF9ydW50aW1lLnN3ZyIKLSAjaW5jbHVkZSAic3dpZ3V0aWxfcHkuaCIKLUBAIC0zMzk0LDEwICszMzk0LDkgQEAgc3ZuX2Vycm9yX3QgKnN2bl9zd2lnX3B5X2NsaWVudF9ibGFtZV9yZWNlaXZlcl9mdW5jKHZvaWQgKmJhdG9uLAotICAgc3ZuX3N3aWdfcHlfYWNxdWlyZV9weV9sb2NrKCk7Ci0gCi0gICBpZiAoKHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihyZWNlaXZlciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU1ZOX0FQUl9JTlQ2NF9UX1BZQ0ZNVCAibHNzc08mIiksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX25vLCByZXZpc2lvbiwgYXV0aG9yLCBkYXRlLCBsaW5lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFrZV9vYl9wb29sLCBwb29sKSkgPT0gTlVMTCkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopIkxsc3NzTyYiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBZX0xPTkdfTE9ORylsaW5lX25vLCByZXZpc2lvbiwgYXV0aG9yLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0ZSwgbGluZSwgbWFrZV9vYl9wb29sLCBwb29sKSkgPT0gTlVMTCkKLSAgICAgewotICAgICAgIGVyciA9IGNhbGxiYWNrX2V4Y2VwdGlvbl9lcnJvcigpOwotICAgICB9Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEyLjIuYmIKaW5kZXggZjFhYzFkYy4uNGZmYTFjNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiCkBAIC0xMSwxMSArMTEsMTAgQEAKICAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbWFjb3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtbGlidG9vbC1uYW1lLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9zZXJmbWFjcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc3VidmVyc2lvbi0xLjEyLjAtYXByXzEuNy4wX2ZpeC0xLnBhdGNoIFwKICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYmU0ZjVjMGIxYjM4YTVkODJiZDZkMTZhMTZmZjEzNDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2ZhZTdjNzNkOGEwMDdjMTA3YzBhZTVlYjM3MmJjMGJiMDEzZGJmZTk2NmZjZDVjNTljZDVhMTk1YTVlMmVkZiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZmYyNDlmODQ4ZjgzNGRlZDg4NTM2NTQzZTAzMTk3NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYmQwYjVjOGU0YzUxNzUyNjNkYzlhOTJmZDlhZWY5NGNlOTE3ZTgwYWYwMzRmMjZmZTVjNDVmZGU3ZTBmNzcxIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKaW5kZXggMWFlMjFiMS4uYjA0MzNlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgpAQCAtMzMsNSArMzMsNSBAQAogCiBGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbWQtYm9vdGNoYXJ0IgogCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1yb290cHJlZml4PSR7YmFzZV9wcmVmaXh9IFwKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLXJvb3RwcmVmaXg9JHtyb290X3ByZWZpeH0gXAogICAgICAgICAgICAgICAgICAtLXdpdGgtcm9vdGxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCmluZGV4IDQ2ZmIyZGQuLmUzMDNmMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwpAQCAtNjcsNyArNjcsNyBAQAogCiAJIyBSZW1vdmUgL3Zhci9ydW4gZnJvbSBwYWNrYWdlIGFzIGN1cHNkIHdpbGwgcG9wdWxhdGUgaXQgb24gc3RhcnR1cAogCXJtIC1mciAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuCi0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0vJHtCUE59L2RyaXZlcgorCXJtZGlyICR7RH0vJHtsaWJleGVjZGlyfS8ke0JQTn0vZHJpdmVyCiAKIAkjIEZpeCB0aGUgcGFtIGNvbmZpZ3VyYXRpb24gZmlsZSBwZXJtaXNzaW9ucwogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzX3NlcnZlcmJpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzX3NlcnZlcmJpbi5wYXRjaAppbmRleCBmN2I0NGE3Li44NWM2YWYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCkBAIC00LDYgKzQsMTIgQEAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KIAorVXBkYXRlIG9uIDIwMTkwOTA0OgorUmVkZWZpbmUgQ1VQU19TRVJWRVJCSU4gdG8gIiRsaWJleGVjZGlyL2N1cHMiIHdoaWNoIHNvbHZlcyBmaWxlIGNvbmZsaWN0aW9uCit3aGVuIG11bHRpbGliIGlzIGVuYWJsZWQuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCiBJbmRleDogY3Vwcy0xLjQuNi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gY3Vwcy0xLjQuNi5vcmlnL2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQJMjAwOS0wNC0xMiAxNjowNDo1MS4wMDAwMDAwMDAgLTA3MDAKQEAgLTEzLDcgKzE5LDcgQEAKICAJCSMgQWxsIG90aGVycwogIAkJSU5TVEFMTF9TWVNWPSJpbnN0YWxsLXN5c3YiCiAtCQlDVVBTX1NFUlZFUkJJTj0iJGV4ZWNfcHJlZml4L2xpYi9jdXBzIgotKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJkaXIvY3VwcyIKKysJCUNVUFNfU0VSVkVSQklOPSIkbGliZXhlY2Rpci9jdXBzIgogIAkJOzsKICBlc2FjCiAgCkBAIC0yNiw3ICszMiw3IEBACiAgCQkjIEFsbCBvdGhlcnMKICAJCUlOU1RBTExfU1lTVj0iaW5zdGFsbC1zeXN2IgogLQkJQ1VQU19TRVJWRVJCSU49IiRleGVjX3ByZWZpeC9saWIvY3VwcyIKLSsJCUNVUFNfU0VSVkVSQklOPSIkbGliZGlyL2N1cHMiCisrCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKICAJCTs7CiAgZXNhYwogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy8wMDAxLVNraXAtc3RyaXAtdHJhaWxpbmctY3ItdGVzdC1jYXNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlscy8wMDAxLVNraXAtc3RyaXAtdHJhaWxpbmctY3ItdGVzdC1jYXNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYzFjNDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzLzAwMDEtU2tpcC1zdHJpcC10cmFpbGluZy1jci10ZXN0LWNhc2UucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBiZDdmYjhiZTJhZTJkNzUzNDdjZjc3MzMzMDJkNTA5MzA0NmZmYTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGVpcmFuIEhvbmcgPHBlaXJhbi5ob25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDUgU2VwIDIwMTkgMTU6NDI6MjIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gU2tpcCBzdHJpcC10cmFpbGluZy1jciB0ZXN0IGNhc2UKKworU2tpcCB0aGUgdGVzdCAic3RyaXAtdHJhaWxpbmctY3IiIHNpbmNlIGl0IHJlcXVpcmVzIHZhbGdyaW5kIHRvCit3b3JrLCBidXQgdmFsZ3JpbmQgaXMgY29uc2lkZXJlZCB0b28gaGVhdnktd2VpZ2h0IGZvciBkaWZmdXRpbHMKK3BhY2thZ2UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFBlaXJhbiBIb25nIDxwZWlyYW4uaG9uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdHMvTWFrZWZpbGUuYW0gfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCitpbmRleCA4M2E3YzlkLi4wNGQ1MWI1IDEwMDY0NAorLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCitAQCAtMjEsOCArMjEsMTAgQEAgVEVTVFMgPSBcCisgICBzdGRpbiBcCisgICBzdHJjb2xsLTAtbmFtZXMgXAorICAgZmlsZW5hbWUtcXVvdGluZyBcCistICBzdHJpcC10cmFpbGluZy1jciBcCisgICBjb2xvcnMKKysjIFNraXBwaW5nIHRoaXMgdGVzdCBzaW5jZSBpdCByZXF1aXJlcyB2YWxncmluZAorKyMgYW5kIHRodXMgaXMgdG9vIGhlYXZ5IGZvciBkaWZmdXRpbHMgcGFja2FnZQorKyMgc3RyaXAtdHJhaWxpbmctY3IKKyAKKyBYRkFJTF9URVNUUyA9IGxhcmdlLXN1Ym9wdAorIAorLS0gCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZGlmZnV0aWxzL2RpZmZ1dGlsc18zLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNy5iYgppbmRleCA3ZGFlZWUzLi44MTExYWU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9kaWZmdXRpbHMvZGlmZnV0aWxzXzMuNy5iYgpAQCAtNSw2ICs1LDcgQEAKIAogU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2RpZmZ1dGlscy9kaWZmdXRpbHMtJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNraXAtc3RyaXAtdHJhaWxpbmctY3ItdGVzdC1jYXNlLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjQ4MjRhZGMwZTk1ZGJiZjExZGZiZGZhYWQ2YTFlNDYxIgpAQCAtMTcsNyArMTgsNyBAQAogCiBpbmhlcml0IHB0ZXN0CiAKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCIKIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKIAl0PSR7RH0ke1BURVNUX1BBVEh9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiCmluZGV4IDVhYjk5ZDAuLjUwZGFkN2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2d6aXAvZ3ppcF8xLjEwLmJiCkBAIC0xNCw3ICsxNCw3IEBACiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgcGVybC1wdGVzdCBncmVwIGRpZmZ1dGlscyIKIAotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCiAKIGluaGVyaXQgcHRlc3QKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLWRldi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1kZXYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyZGM5ZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLWRldi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBjb3JlLWltYWdlLWxzYi5iYgotCi1ERVNDUklQVElPTiA9ICJCYXNpYyBpbWFnZSB3aXRob3V0IFggc3VwcG9ydCBzdWl0YWJsZSBmb3IgZGV2ZWxvcG1lbnQgd29yay4gSXQgXAotY2FuIGJlIHVzZWQgZm9yIGN1c3RvbWl6YXRpb24gYW5kIGltcGxlbWVudGF0aW9ucyB0aGF0IGNvbmZvcm0gdG8gTGludXggXAotU3RhbmRhcmQgQmFzZSAoTFNCKS4iCi0KLUlNQUdFX0ZFQVRVUkVTICs9ICJkZXYtcGtncyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1zZGsuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2Itc2RrLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2Q2MDJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLWxzYi1zZGsuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIGNvcmUtaW1hZ2UtbHNiLmJiCi0KLURFU0NSSVBUSU9OID0gIkJhc2ljIGltYWdlIHdpdGhvdXQgWCBzdXBwb3J0IHN1aXRhYmxlIGZvciBMaW51eCBTdGFuZGFyZCBCYXNlIFwKLShMU0IpIGltcGxlbWVudGF0aW9ucy4gSXQgaW5jbHVkZXMgdGhlIGZ1bGwgbWV0YS10b29sY2hhaW4sIHBsdXMgZGV2ZWxvcG1lbnQgXAotaGVhZGVycyBhbmQgbGlicmFyaWVzIHRvIGZvcm0gYSBzdGFuZGFsb25lIFNESy4iCi0KLUlNQUdFX0ZFQVRVUkVTICs9ICJ0b29scy1zZGsgZGV2LXBrZ3MgdG9vbHMtZGVidWcgZWNsaXBzZS1kZWJ1ZyB0b29scy1wcm9maWxlIHRvb2xzLXRlc3RhcHBzIGRlYnVnLXR3ZWFrcyIKLQotSU1BR0VfSU5TVEFMTCArPSAia2VybmVsLWRldnNyYyIKLQotIyBSZWR1Y2UgdGhpcyB0byB0cnkgYW5kIGtlZXAgYmVsb3cgdGhlIDRHQiBpbWFnZSBzaXplIGZvciBub3cKLUlNQUdFX09WRVJIRUFEX0ZBQ1RPUiA9ICIxLjIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2IuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS1sc2IuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNjFjNmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtbHNiLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQW4gaW1hZ2UgY29udGFpbmluZyBwYWNrYWdlcyB0aGF0IGFyZSByZXF1aXJlZCB0byBjb25mb3JtIFwKLXRvIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIHNwZWNpZmljYXRpb24uIgotCi1JTUFHRV9GRUFUVVJFUyArPSAic3BsYXNoIHNzaC1zZXJ2ZXItb3BlbnNzaCBod2NvZGVjcyBwYWNrYWdlLW1hbmFnZW1lbnQiCi0KLUlNQUdFX0lOU1RBTEwgPSAiXAotICAgICR7Q09SRV9JTUFHRV9CQVNFX0lOU1RBTEx9IFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1mdWxsLWNtZGxpbmUgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYiBcCi0gICAgIgotCi1pbmhlcml0IGNvcmUtaW1hZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvYWlfY2Fub25pZG4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvYWlfY2Fub25pZG4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOTEyNjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2FpX2Nhbm9uaWRuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSA3MTRlMmI0NThjMTUxYzViZGZlOTM2NDc0NDVjZDAwZGQ4ZTM2ZmZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ciBWb3JlbCA8cGV0ci52b3JlbEBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDIxIEp1bCAyMDE4IDE3OjQ2OjE0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBpbmc6IEZpeCBBSV9DQU5PTklETiB1c2FnZSBvbiBzb21lIHN5c3RlbXMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotQ29tbWl0IDk5ZjY3ZGIgdXNlZCBBSV9DQU5PTklETiBpbiBhIHdheSwgd2hpY2ggYnJva2UgY29tcGlsYXRpb24gb24KLXN5c3RlbXMgd2hlcmUgQUlfQ0FOT05JRE4gaXMgbm90IGRlZmluZWQgaW4gbmV0ZGIuaCAoZS5nLiBnbGliYyA8IDIuMy40LAotYWx0ZXJuYXRpdmUgbGliY3MgdGhhdCBkb24ndCBzdXBwb3J0IElETjogZS5nLiBjdXJyZW50IG11c2wgMS4xLjE5IGFuZAotdUNsaWJjLW5nIDEuMC4zMCkgd2hlbiBub3QgdXNpbmcgdGhlIHN5c3RlbSBsaWJpZG4yLgotCi1GaXhlczogOTlmNjdkYiBwaW5nOiBGaXggcGluZyBuYW1lIGVuY29kZWQgdXNpbmcgQUNFIG9uIEMgbG9jYWxlCi0KLVJlcG9ydGVkLWJ5OiBOaWNob2xhcyBGaXNoCi1TaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KLQotLS0tCi0gcGluZy5jIHwgMiArLQotIHBpbmcuaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3BpbmcuYyBiL3BpbmcuYwotaW5kZXggNzMzNDc3Zi4uYjI0MTgxNSAxMDA2NDQKLS0tLSBhL3BpbmcuYwotKysrIGIvcGluZy5jCi1AQCAtMjA3LDkgKzIwNyw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotICNpZmRlZiBVU0VfSUROCi0gCXNldGxvY2FsZShMQ19BTEwsICIiKTsKLS0jZW5kaWYKLSAJaWYgKCFzdHJjbXAoc2V0bG9jYWxlKExDX0FMTCwgTlVMTCksICJDIikpCi0gCQloaW50cy5haV9mbGFncyAmPSB+IEFJX0NBTk9OSUROOwotKyNlbmRpZgotIAotIAkvKiBTdXBwb3J0IGJlaW5nIGNhbGxlZCB1c2luZyBgcGluZzRgIG9yIGBwaW5nNmAgc3ltbGlua3MgKi8KLSAJaWYgKGFyZ3ZbMF1bc3RybGVuKGFyZ3ZbMF0pLTFdID09ICc0JykKLWRpZmYgLS1naXQgYS9waW5nLmggYi9waW5nLmgKLWluZGV4IDNlMDk2ODUuLjhhMGM0ZWYgMTAwNjQ0Ci0tLS0gYS9waW5nLmgKLSsrKyBiL3BpbmcuaAotQEAgLTI4LDcgKzI4LDYgQEAKLSAjaW5jbHVkZSA8bmV0aW5ldC9pY21wNi5oPgotICNpbmNsdWRlIDxsaW51eC9maWx0ZXIuaD4KLSAjaW5jbHVkZSA8cmVzb2x2Lmg+Ci0tI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotICNpZmRlZiBDQVBBQklMSVRJRVMKLSAjaW5jbHVkZSA8c3lzL3ByY3RsLmg+Ci1AQCAtMzYsNiArMzUsNyBAQAotICNlbmRpZgotIAotICNpZmRlZiBVU0VfSUROCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotICNpbmNsdWRlIDxpZG4yLmg+Ci0gI2RlZmluZSBnZXRhZGRyaW5mb19mbGFncyAoQUlfQ0FOT05OQU1FIHwgQUlfSUROIHwgQUlfQ0FOT05JRE4pCi0gI2RlZmluZSBnZXRuYW1laW5mb19mbGFncyBOSV9JRE4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy9pbnN0YWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2luc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiZmVmZDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzL2luc3RhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDVjOGMzYjA0ZDczMzA0Njc5MzQwZjg5MzYzNmU4NzY5MTk5MjA1M2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zc0BidXJ0b25pbmkuY29tPgotRGF0ZTogTW9uLCAyMyBKdWwgMjAxOCAxNDoyMTowMyArMDEwMAotU3ViamVjdDogW1BBVENIXSBBZGQgaW5zdGFsbAotCi1BZGQgYSBzaW1wbGUgaW5zdGFsbCBydWxlIHNvIHRoYXQgd2UgYWx3YXlzIGluc3RhbGwgdGhlIGJpbmFyaWVzIHRoYXQgd2VyZSBidWlsdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi0tLS0KLSBNYWtlZmlsZSB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDE3ZmM1YzkuLmUwYzI3ODQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0yMzEsMyArMjMxLDcgQEAgcnBtOgotIAlAJChSUE1CVUlMRCkgLXRhIC0tZGVmaW5lICdjdXJyZW50IHllcycgJChSUE1UTVApL2lwdXRpbHMudGFyLmJ6MgotIAlAcm0gLWYgJChSUE1UTVApL2lwdXRpbHMudGFyLmJ6MgotIAotK2luc3RhbGw6Ci0rCWZvciB0IGluICQoVEFSR0VUUyk7IGRvIFwKLSsJCWluc3RhbGwgLUQgJCR0ICQoREVTVERJUikkKGJpbmRpcikvJCR0OyBcCi0rCWRvbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxODA2MjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTgwNjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmY0NGJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxODA2MjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MSArMCwwIEBACi1TVU1NQVJZID0gIk5ldHdvcmsgbW9uaXRvcmluZyB0b29scyIKLURFU0NSSVBUSU9OID0gIlV0aWxpdGllcyBmb3IgdGhlIElQIHByb3RvY29sLCBpbmNsdWRpbmcgdHJhY2Vyb3V0ZTYsIFwKLXRyYWNlcGF0aCwgdHJhY2VwYXRoNiwgcGluZywgcGluZzYgYW5kIGFycGluZy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiQlNEICYgR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iNzkyZTM4YWJkYzU5Zjc2NmEzMTUzOTA4ZjIzZTc2NiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkJTRDM7bWQ1PTBmMDBkOTkyMzlkOTIyZmZkMTNjYWJlZjgzYjMzNDQ0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuR1BMMjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLURFUEVORFMgPSAiZ251dGxzIGxpYmNhcCBsaWJnY3J5cHQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pcHV0aWxzL2lwdXRpbHMgXAotICAgICAgICAgICBmaWxlOi8vYWlfY2Fub25pZG4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCIKLVNSQ1JFViA9ICJmNmFhYzhkYmUzZjhjNDVjNTM0MjQ4NTRhMzMxMmJkZDhjZGQ1OGQzIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5zXGQrKSIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiVVNFX0lETj15ZXMsVVNFX0lETj1ubyxsaWJpZG4yIgotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICdDQz0ke0NDfSAtRF9HTlVfU09VUkNFJyBWUEFUSD0iJHtTVEFHSU5HX0xJQkRJUn06JHtTVEFHSU5HX0RJUl9IT1NUfS8ke2Jhc2VfbGliZGlyfSIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBhbGwKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBiaW5kaXI9JHtiYXNlX2JpbmRpcn0gaW5zdGFsbAotCWZvciBiIGluIHBpbmcgdHJhY2Vyb3V0ZTYgY2xvY2tkaWZmOyBkbwotCQljaG1vZCB1K3MgJHtEfSR7YmFzZV9iaW5kaXJ9LyRiCi0JZG9uZQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKLQotU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmFycGQgJHtQTn0tcmRpc2MiCi1QQUNLQUdFUyArPSAiJHtTUExJVFBLR1N9IgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7U1BMSVRQS0dTfSIKLQotRklMRVNfJHtQTn0JPSAiIgotRklMRVNfJHtQTn0tcGluZyA9ICIke2Jhc2VfYmluZGlyfS9waW5nLiR7QlBOfSIKLUZJTEVTXyR7UE59LWFycGluZyA9ICIke2Jhc2VfYmluZGlyfS9hcnBpbmciCi1GSUxFU18ke1BOfS10cmFjZXBhdGggPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2VwYXRoIgotRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCi1GSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgotRklMRVNfJHtQTn0tdGZ0cGQgPSAiJHtiYXNlX2JpbmRpcn0vdGZ0cGQiCi1GSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2VfYmluZGlyfS9yYXJwZCIKLUZJTEVTXyR7UE59LXJkaXNjID0gIiR7YmFzZV9iaW5kaXJ9L3JkaXNjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmMjQ3MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIKQEAgLTAsMCArMSw1NSBAQAorU1VNTUFSWSA9ICJOZXR3b3JrIG1vbml0b3JpbmcgdG9vbHMiCitERVNDUklQVElPTiA9ICJVdGlsaXRpZXMgZm9yIHRoZSBJUCBwcm90b2NvbCwgaW5jbHVkaW5nIHRyYWNlcm91dGU2LCBcCit0cmFjZXBhdGgsIHRyYWNlcGF0aDYsIHBpbmcsIHBpbmc2IGFuZCBhcnBpbmcuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkJTRCAmIEdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTVhYThjOWZjYWQwNjkxY2VmMGVjZDQyMDM2MWUzOTAiCisKK0RFUEVORFMgPSAiZ251dGxzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIgorU1JDUkVWID0gIjEzZTAwODQ3MTc2YWEyMzY4M2Q2OGZjZTFkMTdmZmI1MjM1MTA5NDYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPnNcZCspIgorCitQQUNLQUdFQ09ORklHID8/PSAibGliY2FwIGxpYmdjcnlwdCByYXJwZCB0cmFjZXJvdXRlNiIKK1BBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItRFVTRV9DQVA9dHJ1ZSwgLURVU0VfQ0FQPWZhbHNlLCBsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLURVU0VfQ1JZUFRPPWdjcnlwdCwgLURVU0VfQ1JZUFRPPW5vbmUsIGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRFVTRV9JRE49dHJ1ZSwgLURVU0VfSUROPWZhbHNlLCBsaWJpZG4yIgorUEFDS0FHRUNPTkZJR1tnZXR0ZXh0XSA9ICItRFVTRV9HRVRURVhUPXRydWUsIC1EVVNFX0dFVFRFWFQ9ZmFsc2UsIGdldHRleHQiCitQQUNLQUdFQ09ORklHW3JhcnBkXSA9ICItREJVSUxEX1JBUlBEPXRydWUsLURCVUlMRF9SQVJQRD1mYWxzZSwiCitQQUNLQUdFQ09ORklHW3RyYWNlcm91dGU2XSA9ICItREJVSUxEX1RSQUNFUk9VVEU2PXRydWUsLURCVUlMRF9UUkFDRVJPVVRFNj1mYWxzZSwiCitQQUNLQUdFQ09ORklHW2RvY3NdID0gIi1EQlVJTERfSFRNTF9NQU5TPXRydWUgLURCVUlMRF9NQU5TPXRydWUsLURCVUlMRF9IVE1MX01BTlM9ZmFsc2UgLURCVUlMRF9NQU5TPWZhbHNlLCBsaWJ4c2x0IgorCitpbmhlcml0IG1lc29uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VNRVNPTiArPSAiLS1wcmVmaXg9JHtyb290X3ByZWZpeH0vIgorCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59LXBpbmcgPSAicGluZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwaW5nXSA9ICIke2Jhc2VfYmluZGlyfS9waW5nIgorCitTUExJVFBLR1MgPSAiJHtQTn0tcGluZyAke1BOfS1hcnBpbmcgJHtQTn0tdHJhY2VwYXRoICR7UE59LXRyYWNlcm91dGU2ICR7UE59LWNsb2NrZGlmZiAke1BOfS10ZnRwZCAke1BOfS1yYXJwZCAke1BOfS1yZGlzYyAke1BOfS1uaW5mb2QiCitQQUNLQUdFUyArPSAiJHtTUExJVFBLR1N9IgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorQUxMT1dfRU1QVFlfJHtQTn0tcmFycGQgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LXRyYWNlcm91dGU2ID0gIjEiCitSREVQRU5EU18ke1BOfSArPSAiJHtTUExJVFBLR1N9IgorCitGSUxFU18ke1BOfSA9ICIiCitGSUxFU18ke1BOfS1waW5nID0gIiR7YmFzZV9iaW5kaXJ9L3BpbmcuJHtCUE59IgorRklMRVNfJHtQTn0tYXJwaW5nID0gIiR7YmFzZV9iaW5kaXJ9L2FycGluZyIKK0ZJTEVTXyR7UE59LXRyYWNlcGF0aCA9ICIke2Jhc2VfYmluZGlyfS90cmFjZXBhdGgiCitGSUxFU18ke1BOfS10cmFjZXJvdXRlNgk9ICIke2Jhc2VfYmluZGlyfS90cmFjZXJvdXRlNiIKK0ZJTEVTXyR7UE59LWNsb2NrZGlmZiA9ICIke2Jhc2VfYmluZGlyfS9jbG9ja2RpZmYiCitGSUxFU18ke1BOfS10ZnRwZCA9ICIke2Jhc2VfYmluZGlyfS90ZnRwZCIKK0ZJTEVTXyR7UE59LXJhcnBkID0gIiR7YmFzZV9zYmluZGlyfS9yYXJwZCIKK0ZJTEVTXyR7UE59LXJkaXNjID0gIiR7YmFzZV9zYmluZGlyfS9yZGlzYyIKK0ZJTEVTXyR7UE59LW5pbmZvZCA9ICIke2Jhc2Vfc2JpbmRpcn0vbmluZm9kICR7c3lzY29uZmRpcn0vaW5pdC5kL25pbmZvZC5zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOC0xMDAwODc3LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNjM4MzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1DVkU6IENWRS0yMDE4LTEwMDA4NzcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMDIxZWZhNTIyYWQ3MjlmZjBmNTgwNmM0Y2U1M2U0YTZjYzFkYWEzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBBeHRlbnMgPGRqYUBheHRlbnMubmV0PgotRGF0ZTogVHVlLCAyMCBOb3YgMjAxOCAxNzo1NjoyOSArMTEwMAotU3ViamVjdDogW1BBVENIXSBBdm9pZCBhIGRvdWJsZS1mcmVlIHdoZW4gYSB3aW5kb3cgc2l6ZSBvZiAwIGlzIHNwZWNpZmllZAotCi1uZXdfc2l6ZSBjYW4gYmUgMCB3aXRoIGEgbWFsaWNpb3VzIG9yIGNvcnJ1cHRlZCBSQVIgYXJjaGl2ZS4KLQotcmVhbGxvYyhhcmVhLCAwKSBpcyBlcXVpdmFsZW50IHRvIGZyZWUoYXJlYSksIHNvIHRoZSByZWdpb24gd291bGQKLWJlIGZyZWUoKWQgaGVyZSBhbmQgdGhlIGZyZWUoKWQgYWdhaW4gaW4gdGhlIGNsZWFudXAgZnVuY3Rpb24uCi0KLUZvdW5kIHdpdGggYSBzZXR1cCBydW5uaW5nIEFGTCwgYWZsLXJiLCBhbmQgcXN5bS4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIHwgNSArKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKLWluZGV4IDIzNDUyMjIyLi42ZjQxOWMyNyAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwotQEAgLTIzMDAsNiArMjMwMCwxMSBAQCBwYXJzZV9jb2RlcyhzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphKQotICAgICAgIG5ld19zaXplID0gRElDVElPTkFSWV9NQVhfU0laRTsKLSAgICAgZWxzZQotICAgICAgIG5ld19zaXplID0gcmFyX2ZscygodW5zaWduZWQgaW50KXJhci0+dW5wX3NpemUpIDw8IDE7Ci0rICAgIGlmIChuZXdfc2l6ZSA9PSAwKSB7Ci0rICAgICAgYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgIlplcm8gd2luZG93IHNpemUgaXMgaW52YWxpZC4iKTsKLSsgICAgICByZXR1cm4gKEFSQ0hJVkVfRkFUQUwpOwotKyAgICB9Ci0gICAgIG5ld193aW5kb3cgPSByZWFsbG9jKHJhci0+bHpzcy53aW5kb3csIG5ld19zaXplKTsKLSAgICAgaWYgKG5ld193aW5kb3cgPT0gTlVMTCkgewotICAgICAgIGFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLCBFTk9NRU0sCi0tLSAKLTIuMjAuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTgtMTAwMDg3OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOC0xMDAwODc4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NDY4ZmQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOC0xMDAwODc4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotQ1ZFOiBDVkUtMjAxOC0xMDAwODc4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGJmY2ZlNmYwNGVkMjBkYjI1MDRkYjhhMjU0ZDFmNDBhMWQ4NGViMjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgQXh0ZW5zIDxkamFAYXh0ZW5zLm5ldD4KLURhdGU6IFR1ZSwgNCBEZWMgMjAxOCAwMDo1NToyMiArMTEwMAotU3ViamVjdDogW1BBVENIXSByYXI6IGZpbGUgc3BsaXQgYWNyb3NzIG11bHRpLXBhcnQgYXJjaGl2ZXMgbXVzdCBtYXRjaAotCi1GdXp6aW5nIHVuY292ZXJlZCBzb21lIFVBRiBhbmQgbWVtb3J5IG92ZXJydW4gYnVncyB3aGVyZSBhIGZpbGUgaW4gYQotc2luZ2xlIGZpbGUgYXJjaGl2ZSByZXBvcnRlZCB0aGF0IGl0IHdhcyBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUKLXZvbHVtZXMuIFRoaXMgd2FzIGNhdXNlZCBieSBwcG1kNyBvcGVyYXRpb25zIGNhbGxpbmcKLXJhcl9icl9maWxsdXAuIFRoaXMgd291bGQgaW52b2tlIHJhcl9yZWFkX2FoZWFkLCB3aGljaCB3b3VsZCBpbiBzb21lCi1zaXR1YXRpb25zIGludm9rZSBhcmNoaXZlX3JlYWRfZm9ybWF0X3Jhcl9yZWFkX2hlYWRlci4gIFRoYXQgd291bGQKLWNoZWNrIHRoZSBuZXcgZmlsZSBuYW1lIGFnYWluc3QgdGhlIG9sZCBmaWxlIG5hbWUsIGFuZCBpZiB0aGV5IGRpZG4ndAotbWF0Y2ggdXAgaXQgd291bGQgZnJlZSB0aGUgcHBtZDcgYnVmZmVyIGFuZCBhbGxvY2F0ZSBhIG5ldwotb25lLiBIb3dldmVyLCBiZWNhdXNlIHRoZSBwcG1kNyBkZWNvZGVyIHdhc24ndCBhY3R1YWxseSBkb25lIHdpdGggdGhlCi1idWZmZXIsIGl0IHdvdWxkIGNvbnRpbnVlIHRvIHVzZWQgdGhlIGZyZWVkIGJ1ZmZlci4gQm90aCByZWFkcyBhbmQKLXdyaXRlcyB0byB0aGUgZnJlZWQgcmVnaW9uIGNhbiBiZSBvYnNlcnZlZC4KLQotVGhpcyBpcyBxdWl0ZSB0cmlja3kgdG8gc29sdmU6IG9uY2UgdGhlIGJ1ZmZlciBoYXMgYmVlbiBmcmVlZCBpdCBpcwotdG9vIGxhdGUsIGFzIHRoZSBwcG1kNyBkZWNvZGVyIGZ1bmN0aW9ucyBhbG1vc3QgdW5pdmVyc2FsbHkgYXNzdW1lCi1zdWNjZXNzIC0gdGhlcmUncyBubyB3YXkgZm9yIHBwbWRfcmVhZCB0byBzaWduYWwgZXJyb3IsIG5vciBhcmUgdGhlcmUKLWdvb2Qgd2F5cyBmb3IgZnVuY3Rpb25zIGxpa2UgUmFuZ2VfTm9ybWFsaXNlIHRvIHByb3BhZ2F0ZSB0aGVtLiBTbyB3ZQotY2FuJ3QgZGV0ZWN0IGFmdGVyIHRoZSBmYWN0IHRoYXQgd2UncmUgaW4gYW4gaW52YWxpZCBzdGF0ZSAtIGUuZy4gYnkKLWNoZWNraW5nIHJhci0+Y3Vyc29yLCB3ZSBoYXZlIHRvIHByZXZlbnQgb3Vyc2VsdmVzIGZyb20gZXZlciBlbmRpbmcgdXAKLXRoZXJlLiBTbywgd2hlbiB3ZSBhcmUgaW4gdGhlIGRhbmdlcm91cyBwYXJ0IG9yIHJhcl9yZWFkX2FoZWFkIHRoYXQKLWFzc3VtZXMgYSB2YWxpZCBzcGxpdCwgd2Ugc2V0IGEgZmxhZyBmb3JjZSByZWFkX2hlYWRlciB0byBlaXRoZXIgZ28KLWRvd24gdGhlIHBhdGggZm9yIHNwbGl0IGZpbGVzIG9yIGJhaWwuIFRoaXMgbWVhbnMgdGhhdCB0aGUgcHBtZDcKLWRlY29kZXIga2VlcHMgYSB2YWxpZCBidWZmZXIgYW5kIGp1c3QgcnVucyBvdXQgb2YgZGF0YS4KLQotRm91bmQgd2l0aCBhIGNvbWJpbmF0aW9uIG9mIEFGTCwgYWZsLXJiIGFuZCBxc3ltLgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMgfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfcmFyLmMKLWluZGV4IDZmNDE5YzI3Li5hOGNjNWM5NCAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3Jhci5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9yYXIuYwotQEAgLTI1OCw2ICsyNTgsNyBAQCBzdHJ1Y3QgcmFyCi0gICBzdHJ1Y3QgZGF0YV9ibG9ja19vZmZzZXRzICpkYm87Ci0gICB1bnNpZ25lZCBpbnQgY3Vyc29yOwotICAgdW5zaWduZWQgaW50IG5vZGVzOwotKyAgY2hhciBmaWxlbmFtZV9tdXN0X21hdGNoOwotIAotICAgLyogTFpTUyBtZW1iZXJzICovCi0gICBzdHJ1Y3QgaHVmZm1hbl9jb2RlIG1haW5jb2RlOwotQEAgLTE1NjAsNiArMTU2MSwxMiBAQCByZWFkX2hlYWRlcihzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnksCi0gICAgIH0KLSAgICAgcmV0dXJuIHJldDsKLSAgIH0KLSsgIGVsc2UgaWYgKHJhci0+ZmlsZW5hbWVfbXVzdF9tYXRjaCkKLSsgIHsKLSsgICAgYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0rICAgICAgIk1pc21hdGNoIG9mIGZpbGUgcGFydHMgc3BsaXQgYWNyb3NzIG11bHRpLXZvbHVtZSBhcmNoaXZlIik7Ci0rICAgIHJldHVybiAoQVJDSElWRV9GQVRBTCk7Ci0rICB9Ci0gCi0gICByYXItPmZpbGVuYW1lX3NhdmUgPSAoY2hhciopcmVhbGxvYyhyYXItPmZpbGVuYW1lX3NhdmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9zaXplICsgMSk7Ci1AQCAtMjkzMywxMiArMjk0MCwxNCBAQCByYXJfcmVhZF9haGVhZChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBzaXplX3QgbWluLCBzc2l6ZV90ICphdmFpbCkKLSAgICAgZWxzZSBpZiAoKmF2YWlsID09IDAgJiYgcmFyLT5tYWluX2ZsYWdzICYgTUhEX1ZPTFVNRSAmJgotICAgICAgIHJhci0+ZmlsZV9mbGFncyAmIEZIRF9TUExJVF9BRlRFUikKLSAgICAgewotKyAgICAgIHJhci0+ZmlsZW5hbWVfbXVzdF9tYXRjaCA9IDE7Ci0gICAgICAgcmV0ID0gYXJjaGl2ZV9yZWFkX2Zvcm1hdF9yYXJfcmVhZF9oZWFkZXIoYSwgYS0+ZW50cnkpOwotICAgICAgIGlmIChyZXQgPT0gKEFSQ0hJVkVfRU9GKSkKLSAgICAgICB7Ci0gICAgICAgICByYXItPmhhc19lbmRhcmNfaGVhZGVyID0gMTsKLSAgICAgICAgIHJldCA9IGFyY2hpdmVfcmVhZF9mb3JtYXRfcmFyX3JlYWRfaGVhZGVyKGEsIGEtPmVudHJ5KTsKLSAgICAgICB9Ci0rICAgICAgcmFyLT5maWxlbmFtZV9tdXN0X21hdGNoID0gMDsKLSAgICAgICBpZiAocmV0ICE9IChBUkNISVZFX09LKSkKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgIHJldHVybiByYXJfcmVhZF9haGVhZChhLCBtaW4sIGF2YWlsKTsKLS0tIAotMi4yMC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOC0xMDAwODc5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMjU5MzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4NzkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1DVkU6IENWRS0yMDE4LTEwMDA4NzkKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gMTViZjQ0ZmQyYzFhZDBlM2ZkODcwNDhiM2ZjYzkwYzRkY2ZmMTE3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBBeHRlbnMgPGRqYUBheHRlbnMubmV0PgotRGF0ZTogVHVlLCA0IERlYyAyMDE4IDE0OjI5OjQyICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFNraXAgMC1sZW5ndGggQUNMIGZpZWxkcwotCi1DdXJyZW50bHksIGl0IGlzIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbiBhcmNoaXZlIHRoYXQgY3Jhc2hlcyBic2R0YXIKLXdpdGggYSBtYWxmb3JtZWQgQUNMOgotCi1Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50YXRpb24gZmF1bHQuCi1hcmNoaXZlX2FjbF9mcm9tX3RleHRfbCAoYWNsPTxvcHRpbWlzZWQgb3V0PiwgdGV4dD0weDdlMmU5MiAiIiwgd2FudF90eXBlPTxvcHRpbWlzZWQgb3V0Piwgc2M9PG9wdGltaXNlZCBvdXQ+KSBhdCBsaWJhcmNoaXZlL2FyY2hpdmVfYWNsLmM6MTcyNgotMTcyNgkJCQlzd2l0Y2ggKCpzKSB7Ci0oZ2RiKSBwIG4KLSQxID0gMQotKGdkYikgcCBmaWVsZFtuXQotJDIgPSB7c3RhcnQgPSAweDAsIGVuZCA9IDB4MH0KLQotU3RvcCB0aGlzIGJ5IGNoZWNraW5nIHRoYXQgdGhlIGxlbmd0aCBpcyBub3QgemVybyBiZWZvcmUgYmVnaW5uaW5nCi10aGUgc3dpdGNoIHN0YXRlbWVudC4KLQotSSBhbSBwcmV0dHkgc3VyZSB0aGlzIGlzIHRoZSBidWcgbWVudGlvbmVkIGluIHRoZSBxc3ltIHBhcGVyIFsxXSwKLWFuZCBJIHdhcyBhYmxlIHRvIHJlcGxpY2F0ZSBpdCB3aXRoIGEgcXN5bSArIEFGTCArIGFmbC1yYiBzZXR1cC4KLQotWzFdIGh0dHBzOi8vd3d3LnVzZW5peC5vcmcvY29uZmVyZW5jZS91c2VuaXhzZWN1cml0eTE4L3ByZXNlbnRhdGlvbi95dW4KLS0tLQotIGxpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9saWJhcmNoaXZlL2FyY2hpdmVfYWNsLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfYWNsLmMKLWluZGV4IDUxMmJlZWUxLi43YmVlZWU4NiAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9hY2wuYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX2FjbC5jCi1AQCAtMTcyMyw2ICsxNzIzLDExIEBAIGFyY2hpdmVfYWNsX2Zyb21fdGV4dF9sKHN0cnVjdCBhcmNoaXZlX2FjbCAqYWNsLCBjb25zdCBjaGFyICp0ZXh0LAotIAkJCXN0ID0gZmllbGRbbl0uc3RhcnQgKyAxOwotIAkJCWxlbiA9IGZpZWxkW25dLmVuZCAtIGZpZWxkW25dLnN0YXJ0OwotIAotKwkJCWlmIChsZW4gPT0gMCkgewotKwkJCQlyZXQgPSBBUkNISVZFX1dBUk47Ci0rCQkJCWNvbnRpbnVlOwotKwkJCX0KLSsKLSAJCQlzd2l0Y2ggKCpzKSB7Ci0gCQkJY2FzZSAndSc6Ci0gCQkJCWlmIChsZW4gPT0gMSB8fCAobGVuID09IDQKLS0tIAotMi4yMC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9DVkUtMjAxOC0xMDAwODgwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4ODAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMjY0YTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE4LTEwMDA4ODAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1DVkU6IENWRS0yMDE4LTEwMDA4ODAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLUZyb20gOWM4NGI3NDI2NjYwYzA5YzE4Y2MzNDlmNmQ3MGI1ZjgxNjhiNTY4MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBBeHRlbnMgPGRqYUBheHRlbnMubmV0PgotRGF0ZTogVHVlLCA0IERlYyAyMDE4IDE2OjMzOjQyICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdhcmM6IGNvbnN1bWUgZGF0YSBvbmNlIHJlYWQKLQotVGhlIHdhcmMgZGVjb2RlciBvbmx5IHVzZWQgcmVhZCBhaGVhZCwgaXQgd291bGRuJ3QgYWN0dWFsbHkgY29uc3VtZQotZGF0YSB0aGF0IGhhZCBwcmV2aW91c2x5IGJlZW4gcHJpbnRlZC4gVGhpcyBtZWFucyB0aGF0IGlmIHlvdSBzcGVjaWZ5Ci1hbiBpbnZhbGlkIGNvbnRlbnQgbGVuZ3RoLCBpdCB3aWxsIGp1c3QgcmVwcmludCB0aGUgc2FtZSBkYXRhIG92ZXIKLWFuZCBvdmVyIGFuZCBvdmVyIGFnYWluIHVudGlsIGl0IGhpdHMgdGhlIGRlc2lyZWQgbGVuZ3RoLgotCi1UaGlzIG1lYW5zIHRoYXQgYSBXQVJDIHJlc291cmNlIHdpdGggZS5nLgotQ29udGVudC1MZW5ndGg6IDY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NQotYnV0IG9ubHkgYSBmZXcgaHVuZHJlZCBieXRlcyBvZiBkYXRhLCBjYXVzZXMgYSBxdWFzaS1pbmZpbml0ZSBsb29wLgotCi1Db25zdW1lIGRhdGEgaW4gc3Vic2VxdWVudCBjYWxscyB0byBfd2FyY19yZWFkLgotCi1Gb3VuZCB3aXRoIGFuIEFGTCArIGFmbC1yYiArIHFzeW0gc2V0dXAuCi0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF93YXJjLmMgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfd2FyYy5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfd2FyYy5jCi1pbmRleCBlODc1Mzg1My4uZThmYzg0MjggMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF93YXJjLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X3dhcmMuYwotQEAgLTM4Niw2ICszODYsMTEgQEAgX3dhcmNfcmVhZChzdHJ1Y3QgYXJjaGl2ZV9yZWFkICphLCBjb25zdCB2b2lkICoqYnVmLCBzaXplX3QgKmJzeiwgaW50NjRfdCAqb2ZmKQotIAkJcmV0dXJuIChBUkNISVZFX0VPRik7Ci0gCX0KLSAKLSsJaWYgKHctPnVuY29uc3VtZWQpIHsKLSsJCV9fYXJjaGl2ZV9yZWFkX2NvbnN1bWUoYSwgdy0+dW5jb25zdW1lZCk7Ci0rCQl3LT51bmNvbnN1bWVkID0gMFU7Ci0rCX0KLSsKLSAJcmFiID0gX19hcmNoaXZlX3JlYWRfYWhlYWQoYSwgMVUsICZucmQpOwotIAlpZiAobnJkIDwgMCkgewotIAkJKmJzeiA9IDBVOwotLS0gCi0yLjIwLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE5LTEwMDAwMTkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTktMTAwMDAxOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YzOTg5My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTktMTAwMDAxOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUNWRTogQ1ZFLTIwMTktMTAwMDAxOQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA2NWEyM2Y1ZGJlZTQ0OTcwNjRlOWJiNDY3ZjgxMTM4YTYyYjBkYWUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+Ci1EYXRlOiBUdWUsIDEgSmFuIDIwMTkgMTY6MDE6NDAgKzExMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIDd6aXA6IGZpeCBjcmFzaCB3aGVuIHBhcnNpbmcgY2VydGFpbiBhcmNoaXZlcwotCi1GdXp6aW5nIHdpdGggQ1JDcyBkaXNhYmxlZCByZXZlYWxlZCB0aGF0IGEgY2FsbCB0byBnZXRfdW5jb21wcmVzc2VkX2RhdGEoKQotd291bGQgc29tZXRpbWVzIGZhaWwgdG8gcmV0dXJuIGF0IGxlYXN0ICdtaW5pbXVtJyBieXRlcy4gVGhpcyBjYW4gY2F1c2UKLXRoZSBjcmMzMigpIGludm9jYXRpb24gaW4gaGVhZGVyX2J5dGVzIHRvIHJlYWQgb2ZmIGludG8gaW52YWxpZCBtZW1vcnkuCi0KLUEgc3BlY2lhbGx5IGNyYWZ0ZWQgYXJjaGl2ZSBjYW4gdXNlIHRoaXMgdG8gY2F1c2UgYSBjcmFzaC4KLQotQW4gQVNBTiB0cmFjZSBpcyBiZWxvdywgYnV0IEFTQU4gaXMgbm90IHJlcXVpcmVkIC0gYW4gdW5pbnN0cnVtZW50ZWQKLWJpbmFyeSB3aWxsIGFsc28gY3Jhc2guCi0KLT09NzcxOT09RVJST1I6IEFkZHJlc3NTYW5pdGl6ZXI6IFNFR1Ygb24gdW5rbm93biBhZGRyZXNzIDB4NjMxMDAwMDQwMDAwIChwYyAweDdmYmRiM2IzZWMxZCBicCAweDdmZmU3N2E1MTMxMCBzcCAweDdmZmU3N2E1MTE1MCBUMCkKLT09NzcxOT09VGhlIHNpZ25hbCBpcyBjYXVzZWQgYnkgYSBSRUFEIG1lbW9yeSBhY2Nlc3MuCi0gICAgIzAgMHg3ZmJkYjNiM2VjMWMgaW4gY3JjMzJfeiAoL2xpYi94ODZfNjQtbGludXgtZ251L2xpYnouc28uMSsweDJjMWMpCi0gICAgIzEgMHg4NGY1ZWIgaW4gaGVhZGVyX2J5dGVzICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4ODRmNWViKQotICAgICMyIDB4ODU2MTU2IGluIHJlYWRfSGVhZGVyICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4ODU2MTU2KQotICAgICMzIDB4ODRlMTM0IGluIHNsdXJwX2NlbnRyYWxfZGlyZWN0b3J5ICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4ODRlMTM0KQotICAgICM0IDB4ODQ5NjkwIGluIGFyY2hpdmVfcmVhZF9mb3JtYXRfN3ppcF9yZWFkX2hlYWRlciAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDg0OTY5MCkKLSAgICAjNSAweDU3MTNiNyBpbiBfYXJjaGl2ZV9yZWFkX25leHRfaGVhZGVyMiAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDU3MTNiNykKLSAgICAjNiAweDU3MGU2MyBpbiBfYXJjaGl2ZV9yZWFkX25leHRfaGVhZGVyICgvdG1wL2xpYmFyY2hpdmUvYnNkdGFyKzB4NTcwZTYzKQotICAgICM3IDB4NmYwOGJkIGluIGFyY2hpdmVfcmVhZF9uZXh0X2hlYWRlciAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDZmMDhiZCkKLSAgICAjOCAweDUyMzczZiBpbiByZWFkX2FyY2hpdmUgKC90bXAvbGliYXJjaGl2ZS9ic2R0YXIrMHg1MjM3M2YpCi0gICAgIzkgMHg1MjU3YmUgaW4gdGFyX21vZGVfeCAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDUyNTdiZSkKLSAgICAjMTAgMHg1MWRhZWIgaW4gbWFpbiAoL3RtcC9saWJhcmNoaXZlL2JzZHRhcisweDUxZGFlYikKLSAgICAjMTEgMHg3ZmJkYjI3Y2FiOTYgaW4gX19saWJjX3N0YXJ0X21haW4gL2J1aWxkL2dsaWJjLU9Uc0VMNS9nbGliYy0yLjI3L2NzdS8uLi9jc3UvbGliYy1zdGFydC5jOjMxMAotICAgICMxMiAweDQxZGQwOSBpbiBfc3RhcnQgKC90bXAvbGliYXJjaGl2ZS9ic2R0YXIrMHg0MWRkMDkpCi0KLVRoaXMgd2FzIHByaW1hcmx5IGRvbmUgd2l0aCBhZmwgYW5kIEZhaXJGdXp6LiBTb21lIGVhcmx5IGNvcnB1cyBlbnRyaWVzCi1tYXkgaGF2ZSBiZWVuIGdlbmVyYXRlZCBieSBxc3ltLgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfN3ppcC5jIHwgOCArLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYwotaW5kZXggYmNjYmY4OTY2Li5iNmQxNTA1ZDMgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF83emlwLmMKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0Xzd6aXAuYwotQEAgLTI5NjQsMTMgKzI5NjQsNyBAQCBnZXRfdW5jb21wcmVzc2VkX2RhdGEoc3RydWN0IGFyY2hpdmVfcmVhZCAqYSwgY29uc3Qgdm9pZCAqKmJ1ZmYsIHNpemVfdCBzaXplLAotIAlpZiAoemlwLT5jb2RlYyA9PSBfN1pfQ09QWSAmJiB6aXAtPmNvZGVjMiA9PSAodW5zaWduZWQgbG9uZyktMSkgewotIAkJLyogQ29weSBtb2RlLiAqLwotIAotLQkJLyoKLS0JCSAqIE5vdGU6ICcxJyBoZXJlIGlzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uLgotLQkJICogUmVjYWxsIHRoYXQgdGhlIGRlY29tcHJlc3Npb24gbGF5ZXIgcmV0dXJucyBhIGNvdW50IG9mCi0tCQkgKiBhdmFpbGFibGUgYnl0ZXM7IGFza2luZyBmb3IgbW9yZSB0aGFuIHRoYXQgZm9yY2VzIHRoZQotLQkJICogZGVjb21wcmVzc29yIHRvIGNvbWJpbmUgcmVhZHMgYnkgY29weWluZyBkYXRhLgotLQkJICovCi0tCQkqYnVmZiA9IF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIDEsICZieXRlc19hdmFpbCk7Ci0rCQkqYnVmZiA9IF9fYXJjaGl2ZV9yZWFkX2FoZWFkKGEsIG1pbmltdW0sICZieXRlc19hdmFpbCk7Ci0gCQlpZiAoYnl0ZXNfYXZhaWwgPD0gMCkgewotIAkJCWFyY2hpdmVfc2V0X2Vycm9yKCZhLT5hcmNoaXZlLAotIAkJCSAgICBBUkNISVZFX0VSUk5PX0ZJTEVfRk9STUFULApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL0NWRS0yMDE5LTEwMDAwMjAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTktMTAwMDAyMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVhNzZmZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvQ1ZFLTIwMTktMTAwMDAyMC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUNWRTogQ1ZFLTIwMTktMTAwMDAyMAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA4MzEyZWFhNTc2MDE0Y2Q5Yjk2NTAxMmFmNTFiYzFmOTY3YjEyNDIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIEF4dGVucyA8ZGphQGF4dGVucy5uZXQ+Ci1EYXRlOiBUdWUsIDEgSmFuIDIwMTkgMTc6MTA6NDkgKzExMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGlzbzk2NjA6IEZhaWwgd2hlbiBleHBlY3RlZCBSb2NrcmlkZ2UgZXh0ZW5zaW9ucyBpcwotIG1pc3NpbmcKLQotQSBjb3JydXB0ZWQgb3IgbWFsaWNpb3VzIElTTzk2NjAgaW1hZ2UgY2FuIGNhdXNlIHJlYWRfQ0UoKSB0byBsb29wCi1mb3JldmVyLgotCi1yZWFkX0NFKCkgY2FsbHMgcGFyc2Vfcm9ja3JpZGdlKCksIGV4cGVjdGluZyBhIFJvY2tyaWRnZSBleHRlbnNpb24KLXRvIGJlIHJlYWQuIEhvd2V2ZXIsIHBhcnNlX3JvY2tyaWRnZSgpIGlzIHN0cnVjdHVyZWQgYXMgYSB3aGlsZQotbG9vcCBzdGFydGluZyB3aXRoIGEgc2FuaXR5IGNoZWNrLCBhbmQgaWYgdGhlIHNhbml0eSBjaGVjayBmYWlscwotYmVmb3JlIHRoZSBsb29wIGhhcyBydW4sIHRoZSBmdW5jdGlvbiByZXR1cm5zIEFSQ0hJVkVfT0sgd2l0aG91dAotYWR2YW5jaW5nIHRoZSBwb3NpdGlvbiBpbiB0aGUgZmlsZS4gVGhpcyBjYXVzZXMgcmVhZF9DRSgpIHRvIHJldHJ5Ci1pbmRlZmluaXRlbHkuCi0KLU1ha2UgcGFyc2Vfcm9ja3JpZGdlKCkgcmV0dXJuIEFSQ0hJVkVfV0FSTiBpZiBpdCBkaWRuJ3QgcmVhZCBhbgotZXh0ZW5zaW9uLiBBcyBzb21lb25lIHdpdGggbm8gcmVhbCBrbm93bGVkZ2Ugb2YgdGhlIGZvcm1hdCwgdGhpcwotc2VlbXMgbW9yZSBhcHQgdGhhbiBBUkNISVZFX0ZBVEFMLCBidXQgYm90aCB0aGUgY2FsbC1zaXRlcyBlc2NhbGF0ZQotaXQgdG8gYSBmYXRhbCBlcnJvciBpbW1lZGlhdGVseSBhbnl3YXkuCi0KLUZvdW5kIHdpdGggYSBjb21iaW5hdGlvbiBvZiBBRkwsIGFmbC1yYiAoRmFpckZ1enopIGFuZCBxc3ltLgotLS0tCi0gbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jIHwgMTEgKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jCi1pbmRleCAyOGFjZmVmYmIuLmJhZDhmMWRmZSAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9yZWFkX3N1cHBvcnRfZm9ybWF0X2lzbzk2NjAuYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3JlYWRfc3VwcG9ydF9mb3JtYXRfaXNvOTY2MC5jCi1AQCAtMjEwMiw2ICsyMTAyLDcgQEAgcGFyc2Vfcm9ja3JpZGdlKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBmaWxlX2luZm8gKmZpbGUsCi0gICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCkKLSB7Ci0gCXN0cnVjdCBpc285NjYwICppc285NjYwOwotKwlpbnQgZW50cnlfc2VlbiA9IDA7Ci0gCi0gCWlzbzk2NjAgPSAoc3RydWN0IGlzbzk2NjAgKikoYS0+Zm9ybWF0LT5kYXRhKTsKLSAKLUBAIC0yMjU3LDggKzIyNTgsMTYgQEAgcGFyc2Vfcm9ja3JpZGdlKHN0cnVjdCBhcmNoaXZlX3JlYWQgKmEsIHN0cnVjdCBmaWxlX2luZm8gKmZpbGUsCi0gCQl9Ci0gCi0gCQlwICs9IHBbMl07Ci0rCQllbnRyeV9zZWVuID0gMTsKLSsJfQotKwotKwlpZiAoZW50cnlfc2VlbikKLSsJCXJldHVybiAoQVJDSElWRV9PSyk7Ci0rCWVsc2UgewotKwkJYXJjaGl2ZV9zZXRfZXJyb3IoJmEtPmFyY2hpdmUsIEFSQ0hJVkVfRVJSTk9fRklMRV9GT1JNQVQsCi0rCQkJCSAgIlRyaWVkIHRvIHBhcnNlIFJvY2tyaWRnZSBleHRlbnNpb25zLCBidXQgbm9uZSBmb3VuZCIpOwotKwkJcmV0dXJuIChBUkNISVZFX1dBUk4pOwotIAl9Ci0tCXJldHVybiAoQVJDSElWRV9PSyk7Ci0gfQotIAotIHN0YXRpYyBpbnQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL2J1ZzEwNjYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnMTA2Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE2NjJiNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmUvYnVnMTA2Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLWxpYmFyY2hpdmUtMy4zLjM6IEZpeCBidWcxMDY2Ci0KLVtObyB1cHN0cmVhbSB0cmFja2luZ10gLS0gaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzEwNjYKLQotYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0XyouYzogZml4IG91dCBvZiBib3VuZHMgcmVhZCBvbiBlbXB0eSBzdHJpbmcgKCkgZmlsZW5hbWUKLWZvciBndW50YXIsIHBheCBhbmQgdjd0YXIKLQotVGhlcmUgaXMgYW4gb3V0IG9mIGJvdW5kcyByZWFkIGZsYXcgaW4gdGhlIGFyY2hpdmVfd3JpdGVfZ251dGFyX2hlYWRlciwKLWFyY2hpdmVfd3JpdGVfcGF4X2hlYWRlciBhbmQgYXJjaGl2ZV93cml0ZV92N3Rhcl9oZWFkZXIgZnVuY3Rpb25zIHdoaWNoCi1jb3VsZCBsZWRzIHRvIGNhdXNlIGEgZGVuaWFsIG9mIHNlcnZpY2UuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJhcmNoaXZlL2xpYmFyY2hpdmUvY29tbWl0L2MyNDZlYzVkMDU4YTNmNzBhMmQzZmI3NjVmOTJmZTlkYjc3YjI1ZGZdCi1CdWc6IDEwNjYKLVNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfZ251dGFyLmMgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYwotaW5kZXggMmQ4NThjOS4uMTk2NmM1MyAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X2dudXRhci5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9nbnV0YXIuYwotQEAgLTMzOSw3ICszMzksNyBAQCBhcmNoaXZlX3dyaXRlX2dudXRhcl9oZWFkZXIoc3RydWN0IGFyY2hpdmVfd3JpdGUgKmEsCi0gCQkgKiBjYXNlIGdldHRpbmcgV0NTIGZhaWxlZC4gT24gUE9TSVgsIHRoaXMgaXMgYQotIAkJICogbm9ybWFsIG9wZXJhdGlvbi4KLSAJCSAqLwotLQkJaWYgKHAgIT0gTlVMTCAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgewotKwkJaWYgKHAgIT0gTlVMTCAmJiBwWzBdICE9ICdcMCcgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKLSAJCQlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgYXM7Ci0gCi0gCQkJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmYXMpOwotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3BheC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcGF4LmMKLWluZGV4IDZhMzAxYWMuLjRjZmE4ZmYgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF9wYXguYwotKysrIGIvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfcGF4LmMKLUBAIC02NjAsNyArNjYwLDcgQEAgYXJjaGl2ZV93cml0ZV9wYXhfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3dyaXRlICphLAotIAkJCSAqIGNhc2UgZ2V0dGluZyBXQ1MgZmFpbGVkLiBPbiBQT1NJWCwgdGhpcyBpcyBhCi0gCQkJICogbm9ybWFsIG9wZXJhdGlvbi4KLSAJCQkgKi8KLS0JCQlpZiAocCAhPSBOVUxMICYmIHBbc3RybGVuKHApIC0gMV0gIT0gJy8nKSB7Ci0rCQkJaWYgKHAgIT0gTlVMTCAmJiBwWzBdICE9ICdcMCcgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKLSAJCQkJc3RydWN0IGFyY2hpdmVfc3RyaW5nIGFzOwotIAotIAkJCQlhcmNoaXZlX3N0cmluZ19pbml0KCZhcyk7Ci1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlX3dyaXRlX3NldF9mb3JtYXRfdjd0YXIuYyBiL2xpYmFyY2hpdmUvYXJjaGl2ZV93cml0ZV9zZXRfZm9ybWF0X3Y3dGFyLmMKLWluZGV4IDYyYjE1MjIuLjUzYzBkYjAgMTAwNjQ0Ci0tLS0gYS9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3Rhci5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfd3JpdGVfc2V0X2Zvcm1hdF92N3Rhci5jCi1AQCAtMjg0LDcgKzI4NCw3IEBAIGFyY2hpdmVfd3JpdGVfdjd0YXJfaGVhZGVyKHN0cnVjdCBhcmNoaXZlX3dyaXRlICphLCBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqZW50cnkpCi0gCQkgKiBjYXNlIGdldHRpbmcgV0NTIGZhaWxlZC4gT24gUE9TSVgsIHRoaXMgaXMgYQotIAkJICogbm9ybWFsIG9wZXJhdGlvbi4KLSAJCSAqLwotLQkJaWYgKHAgIT0gTlVMTCAmJiBwW3N0cmxlbihwKSAtIDFdICE9ICcvJykgewotKwkJaWYgKHAgIT0gTlVMTCAmJiBwWzBdICE9ICdcMCcgJiYgcFtzdHJsZW4ocCkgLSAxXSAhPSAnLycpIHsKLSAJCQlzdHJ1Y3QgYXJjaGl2ZV9zdHJpbmcgYXM7Ci0gCi0gCQkJYXJjaGl2ZV9zdHJpbmdfaW5pdCgmYXMpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkN2JlNTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlL25vbi1yZWN1cnNpdmUtZXh0cmFjdC1hbmQtbGlzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi1Gcm9tIDQ3Zjc1NjZmNjgyOWMyYjE0ZTIxYmJiYmE2OTk5MTZkZTQ5OThjNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDI0IE9jdCAyMDE2IDEyOjU0OjQ4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8xXSBub24tcmVjdXJzaXZlIGV4dHJhY3QgYW5kIGxpc3QKLQotU29tZXRpbWVzIGl0IG1ha2VzIHNlbnNlIHRvIGV4dHJhY3Qgb3IgbGlzdCBhIGRpcmVjdG9yeSBjb250YWluZWQgaW4KLWFuIGFyY2hpdmUgd2l0aG91dCBhbHNvIGRvaW5nIHRoZSBzYW1lIGZvciB0aGUgY29udGVudCBvZiB0aGUKLWRpcmVjdG9yeSwgaS5lLiBhbGxvd2luZyAtbiAoPSAtLW5vLXJlY3Vyc2lvbikgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKLXggYW5kIHQgbW9kZXMuCi0KLWJzZHRhciB1c2VzIHRoZSBtYXRjaCBmdW5jdGlvbmFsaXR5IGluIGxpYmFyY2hpdmUgdG8gdHJhY2sgaW5jbHVkZQotbWF0Y2hlcy4gQSBuZXcgbGliYXJjaGl2ZSBBUEkgY2FsbAotYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5KCkgZ2V0cyBpbnRyb2R1Y2VkIHRvCi1pbmZsdWVuY2UgdGhlIG1hdGNoaW5nIGJlaGF2aW9yLCB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFzIGJlZm9yZS4KLQotTm9uLXJlY3Vyc2l2ZSBtYXRjaGluZyBjYW4gYmUgYWNoaWV2ZWQgYnkgYW5jaG9yaW5nIHRoZSBwYXRoIG1hdGNoIGF0Ci1ib3RoIHN0YXJ0IGFuZCBlbmQuIEFza2luZyBmb3IgYSBkaXJlY3Rvcnkgd2hpY2ggaXRzZWxmIGlzbid0IGluIHRoZQotYXJjaGl2ZSB3aGVuIGluIG5vbi1yZWN1cnNpdmUgbW9kZSBpcyBhbiBlcnJvciBhbmQgaGFuZGxlZCBieSB0aGUKLWV4aXN0aW5nIG1lY2hhbmlzbSBmb3IgdHJhY2tpbmcgdW51c2VkIGluY2x1c2lvbiBlbnRyaWVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmFyY2hpdmUvbGliYXJjaGl2ZS9wdWxsLzgxMl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotCi0tLS0KLSBsaWJhcmNoaXZlL2FyY2hpdmUuaCAgICAgICB8ICAyICsrCi0gbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMgfCAzMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSB0YXIvYnNkdGFyLjEgICAgICAgICAgICAgICB8ICAzICstLQotIHRhci9ic2R0YXIuYyAgICAgICAgICAgICAgIHwgMTIgKysrKysrKysrKy0tCi0gNCBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbGliYXJjaGl2ZS9hcmNoaXZlLmggYi9saWJhcmNoaXZlL2FyY2hpdmUuaAotaW5kZXggMzI3MTAyMDEuLjU5ZmI0YWE2IDEwMDY0NAotLS0tIGEvbGliYXJjaGl2ZS9hcmNoaXZlLmgKLSsrKyBiL2xpYmFyY2hpdmUvYXJjaGl2ZS5oCi1AQCAtMTA5Myw2ICsxMDkzLDggQEAgX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVkKHN0cnVjdCBhcmNoaXZlICosCi0gICovCi0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKiwKLSAJCSAgICBzdHJ1Y3QgYXJjaGl2ZV9lbnRyeSAqKTsKLSsvKiBDb250cm9sIHJlY3Vyc2l2ZSBpbmNsdXNpb24gb2YgZGlyZWN0b3J5IGNvbnRlbnQgd2hlbiBkaXJlY3RvcnkgaXMgaW5jbHVkZWQuIERlZmF1bHQgb24uICovCi0rX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKiwgaW50IF9lbmFibGVkKTsKLSAvKiBBZGQgZXhjbHVzaW9uIHBhdGhuYW1lIHBhdHRlcm4uICovCi0gX19MQV9ERUNMIGludAlhcmNoaXZlX21hdGNoX2V4Y2x1ZGVfcGF0dGVybihzdHJ1Y3QgYXJjaGl2ZSAqLCBjb25zdCBjaGFyICopOwotIF9fTEFfREVDTCBpbnQJYXJjaGl2ZV9tYXRjaF9leGNsdWRlX3BhdHRlcm5fdyhzdHJ1Y3QgYXJjaGl2ZSAqLAotZGlmZiAtLWdpdCBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jIGIvbGliYXJjaGl2ZS9hcmNoaXZlX21hdGNoLmMKLWluZGV4IGJlNzIwNjZlLi5iYjZhMzQwNyAxMDA2NDQKLS0tLSBhL2xpYmFyY2hpdmUvYXJjaGl2ZV9tYXRjaC5jCi0rKysgYi9saWJhcmNoaXZlL2FyY2hpdmVfbWF0Y2guYwotQEAgLTkzLDYgKzkzLDkgQEAgc3RydWN0IGFyY2hpdmVfbWF0Y2ggewotIAkvKiBleGNsdXNpb24vaW5jbHVzaW9uIHNldCBmbGFnLiAqLwotIAlpbnQJCQkgc2V0ZmxhZzsKLSAKLSsJLyogUmVjdXJzaXZlbHkgaW5jbHVkZSBkaXJlY3RvcnkgY29udGVudD8gKi8KLSsJaW50CQkJIHJlY3Vyc2l2ZV9pbmNsdWRlOwotKwotIAkvKgotIAkgKiBNYXRjaGluZyBmaWxlbmFtZSBwYXR0ZXJucy4KLSAJICovCi1AQCAtMjIzLDYgKzIyNiw3IEBAIGFyY2hpdmVfbWF0Y2hfbmV3KHZvaWQpCi0gCQlyZXR1cm4gKE5VTEwpOwotIAlhLT5hcmNoaXZlLm1hZ2ljID0gQVJDSElWRV9NQVRDSF9NQUdJQzsKLSAJYS0+YXJjaGl2ZS5zdGF0ZSA9IEFSQ0hJVkVfU1RBVEVfTkVXOwotKwlhLT5yZWN1cnNpdmVfaW5jbHVkZSA9IDE7Ci0gCW1hdGNoX2xpc3RfaW5pdCgmKGEtPmluY2x1c2lvbnMpKTsKLSAJbWF0Y2hfbGlzdF9pbml0KCYoYS0+ZXhjbHVzaW9ucykpOwotIAlfX2FyY2hpdmVfcmJfdHJlZV9pbml0KCYoYS0+ZXhjbHVzaW9uX3RyZWUpLCAmcmJfb3BzX21icyk7Ci1AQCAtNDcxLDYgKzQ3NSwyOCBAQCBhcmNoaXZlX21hdGNoX3BhdGhfZXhjbHVkZWQoc3RydWN0IGFyY2hpdmUgKl9hLAotIH0KLSAKLSAvKgotKyAqIFdoZW4gcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCBpcyBlbmFibGVkLAotKyAqIGFuIGluY2x1c2lvbiBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhIGRpcmVjdG9yeSB3aWxsIGFsc28KLSsgKiBpbmNsdWRlIGV2ZXJ5dGhpbmcgYmVuZWF0aCB0aGF0IGRpcmVjdG9yeS4gRW5hYmxlZCBieSBkZWZhdWx0LgotKyAqCi0rICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBHTlUgdGFyLCBleGNsdXNpb24gcGF0dGVybnMgYWx3YXlzCi0rICogbWF0Y2ggaWYgYSBzdWJzZXQgb2YgdGhlIGZ1bGwgcGF0Y2ggbWF0Y2hlcyAoaS5lLiwgdGhleSBhcmUKLSsgKiBhcmUgbm90IHJvb3RlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoKSBhbmQgdGh1cyB0aGVyZQotKyAqIGlzIG5vIGNvcnJlc3BvbmRpbmcgbm9uLXJlY3Vyc2l2ZSBleGNsdXNpb24gbW9kZS4KLSsgKi8KLStpbnQKLSthcmNoaXZlX21hdGNoX2luY2x1ZGVfZGlyZWN0b3JpZXNfcmVjdXJzaXZlbHkoc3RydWN0IGFyY2hpdmUgKl9hLCBpbnQgX2VuYWJsZWQpCi0rewotKwlzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYTsKLSsKLSsJYXJjaGl2ZV9jaGVja19tYWdpYyhfYSwgQVJDSElWRV9NQVRDSF9NQUdJQywKLSsJICAgIEFSQ0hJVkVfU1RBVEVfTkVXLCAiYXJjaGl2ZV9tYXRjaF9pbmNsdWRlX2RpcmVjdG9yaWVzX3JlY3Vyc2l2ZWx5Iik7Ci0rCWEgPSAoc3RydWN0IGFyY2hpdmVfbWF0Y2ggKilfYTsKLSsJYS0+cmVjdXJzaXZlX2luY2x1ZGUgPSBfZW5hYmxlZDsKLSsJcmV0dXJuIChBUkNISVZFX09LKTsKLSt9Ci0rCi0rLyoKLSAgKiBVdGlsaXR5IGZ1bmN0aW9ucyB0byBnZXQgc3RhdGlzdGljIGluZm9ybWF0aW9uIGZvciBpbmNsdXNpb24gcGF0dGVybnMuCi0gICovCi0gaW50Ci1AQCAtNzgxLDcgKzgwNyw5IEBAIHN0YXRpYyBpbnQKLSBtYXRjaF9wYXRoX2luY2x1c2lvbihzdHJ1Y3QgYXJjaGl2ZV9tYXRjaCAqYSwgc3RydWN0IG1hdGNoICptLAotICAgICBpbnQgbWJzLCBjb25zdCB2b2lkICpwbikKLSB7Ci0tCWludCBmbGFnID0gUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQ7Ci0rCWludCBmbGFnID0gYS0+cmVjdXJzaXZlX2luY2x1ZGUgPwotKwkJUEFUSE1BVENIX05PX0FOQ0hPUl9FTkQgOiAvKiBQcmVmaXggbWF0Y2ggaXMgZ29vZCBlbm91Z2guICovCi0rCQkwOyAvKiBGdWxsIG1hdGNoIHJlcXVpcmVkLiAqLwotIAlpbnQgcjsKLSAKLSAJaWYgKG1icykgewotZGlmZiAtLWdpdCBhL3Rhci9ic2R0YXIuMSBiL3Rhci9ic2R0YXIuMQotaW5kZXggMTMyZTExNDUuLjFkZDJhODQ3IDEwMDY0NAotLS0tIGEvdGFyL2JzZHRhci4xCi0rKysgYi90YXIvYnNkdGFyLjEKLUBAIC0zODYsOCArMzg2LDcgQEAgYW5kIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGluIGMsIHIsIGFuZCB1IG1vZGVzIG9yIGlmCi0gLk5tCi0gaXMgcnVuIGluIHggbW9kZSBhcyByb290LgotIC5JdCBGbCBuICwgRmwgRmwgbm9yZWN1cnNlICwgRmwgRmwgbm8tcmVjdXJzaW9uCi0tKGMsIHIsIHUgbW9kZXMgb25seSkKLS1EbyBub3QgcmVjdXJzaXZlbHkgYXJjaGl2ZSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMuCi0rRG8gbm90IHJlY3Vyc2l2ZWx5IGFyY2hpdmUgKGMsIHIsIHUpLCBleHRyYWN0ICh4KSBvciBsaXN0ICh0KSB0aGUgY29udGVudHMgb2YgZGlyZWN0b3JpZXMuCi0gLkl0IEZsIEZsIG5ld2VyIEFyIGRhdGUKLSAoYywgciwgdSBtb2RlcyBvbmx5KQotIE9ubHkgaW5jbHVkZSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMgbmV3ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIGRhdGUuCi1kaWZmIC0tZ2l0IGEvdGFyL2JzZHRhci5jIGIvdGFyL2JzZHRhci5jCi1pbmRleCAxMWRlZGJmOS4uZDAxNGNjM2UgMTAwNjQ0Ci0tLS0gYS90YXIvYnNkdGFyLmMKLSsrKyBiL3Rhci9ic2R0YXIuYwotQEAgLTc5NCw4ICs3OTQsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQlicmVhazsKLSAJCX0KLSAJfQotLQlpZiAoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfTk9fU1VCRElSUykKLS0JCW9ubHlfbW9kZShic2R0YXIsICItbiIsICJjcnUiKTsKLSAJaWYgKGJzZHRhci0+ZmxhZ3MgJiBPUFRGTEFHX1NURE9VVCkKLSAJCW9ubHlfbW9kZShic2R0YXIsICItTyIsICJ4dCIpOwotIAlpZiAoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfVU5MSU5LX0ZJUlNUKQotQEAgLTg0NSw2ICs4NDMsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQlvbmx5X21vZGUoYnNkdGFyLCBidWZmLCAiY3J1Iik7Ci0gCX0KLSAKLSsJLyoKLSsJICogV2hlbiBjcmVhdGluZyBhbiBhcmNoaXZlIGZyb20gYSBkaXJlY3RvcnkgdHJlZSwgdGhlIGRpcmVjdG9yeQotKwkgKiB3YWxraW5nIGNvZGUgd2lsbCBhbHJlYWR5IGF2b2lkIGVudGVyaW5nIGRpcmVjdG9yaWVzIHdoZW4KLSsJICogcmVjdXJzaXZlIGluY2x1c2lvbiBvZiBkaXJlY3RvcnkgY29udGVudCBpcyBkaXNhYmxlZCwgdGhlcmVmb3JlCi0rCSAqIGNoYW5naW5nIHRoZSBtYXRjaGluZyBiZWhhdmlvciBoYXMgbm8gZWZmZWN0IGZvciBjcmVhdGlvbiBtb2Rlcy4KLSsJICogSXQgaXMgcmVsZXZhbnQgZm9yIGV4dHJhY3Rpb24gb3IgbGlzdGluZy4KLSsJICovCi0rCWFyY2hpdmVfbWF0Y2hfaW5jbHVkZV9kaXJlY3Rvcmllc19yZWN1cnNpdmVseShic2R0YXItPm1hdGNoaW5nLAotKwkJCQkJCSAgICAgICEoYnNkdGFyLT5mbGFncyAmIE9QVEZMQUdfTk9fU1VCRElSUykpOwotKwotIAkvKiBGaWxlbmFtZSAiLSIgaW1wbGllcyBzdGRpby4gKi8KLSAJaWYgKHN0cmNtcChic2R0YXItPmZpbGVuYW1lLCAiLSIpID09IDApCi0gCQlic2R0YXItPmZpbGVuYW1lID0gTlVMTDsKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYgppbmRleCBhZjVjYTY1Li5jNzg5Y2Q0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy4zLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4wLmJiCkBAIC0zLDcgKzMsNyBAQAogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCiBTRUNUSU9OID0gImRldmVsIgogTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lZDk5YWNhMDA2YmMzNDY5NzRiYjc0NWEzNTMzNjQyNSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZlMDFmNWUwMmIxZjBjYzkzNGQ1OTNhN2IwZGRjZWI2IgogCiBERVBFTkRTID0gImUyZnNwcm9ncy1uYXRpdmUiCiAKQEAgLTMyLDE4ICszMiwxMCBAQAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub24tcmVjdXJzaXZlLWV4dHJhY3QtYW5kLWxpc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVnMTA2Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwODc3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTEwMDA4NzgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTAwMDg3OS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwODgwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTEwMDAwMTkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTAwMDAyMC5wYXRjaCBcCiAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI0MDM4ZTM2NmNhNWI2NTlkYWUzZWZjYzc0NGU3MjEyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYTdlYjE3ODFjOWZiYmFlMTc4YzRjNmJhZDFjNmViMDhlZGFiOWExNDk2YzY0ODMzZDE3MTVkMDIyYjMwZTJlIgorU1JDX1VSSVttZDVzdW1dID0gIjYwNDYzOTYyNTViZDdjZjZkMGY2NjAzYTliZGEzOWFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2NDNkNTBlZDQwYzc1OWY1NDEyYTNhZjRlMzUzY2ZmYmNlNGZkZjNiNWNmMzIxY2I3MmNhY2YwNmIyZDgyNWUiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuNi5iYgpzaW1pbGFyaXR5IGluZGV4IDkzJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC43LjUuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuNi5iYgppbmRleCA4MGNlNzZiLi4zZGY4OTkzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJzb2x2L2xpYnNvbHZfMC43LjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy42LmJiCkBAIC0xMCw3ICsxMCw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi5naXQgXAogIgogCi1TUkNSRVYgPSAiMmNhYjdlYTAwZDA4MzkwMzc0YjI1YjExZDk2OWYzNzQwYzQ2NjBmNCIKK1NSQ1JFViA9ICIxN2NlNGJjNGZiNTJhMGIzMjk2NGYzYjdkNDkxYzE4MTc3OTgwYmUxIgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYgppbmRleCBiYTFhMmM1Li43Mjk5MGQwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiCkBAIC00NCw3ICs0NCw3IEBACiBQQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCiBQQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCiBQQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWE1LjEiCitQQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YSIKIAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sZnMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE1LjEuYmIKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbG9ncm90YXRlL2xvZ3JvdGF0ZV8zLjE1LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xNS4xLmJiCmluZGV4IDBmM2RhMmIuLjdjN2Q1MWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xNS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xvZ3JvdGF0ZS9sb2dyb3RhdGVfMy4xNS4xLmJiCkBAIC0yNSw4ICsyNSw4IEBACiAgICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1jaGVjay1kaWZmZXJlbnQtZmlsZXN5c3RlbXMucGF0Y2ggXAogICAgICAgICAgICAgIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMzIwMDQ2ZjBiOWZjMzgzMzdlODgyN2Q0YzVhODY2YTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzEzNjEyYzQ3NzZhMzA1MzkzNDU0Yzg3NGVmNTkwZDhhY2Y4NGM5ZmZhNjQ4NzE3NzMxZGZlOTAyMjg0ZmY4ZiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZmUxMDlhZmVhNzQ5YzMwNmZmNDg5MjAzZmRlNmJlYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0OTFmZWM5ZTg5ZjEzNzJmMDJhMGFiNjY1NzlhYTJlOWQ2M2NhYzUxNzhkZmE2NzJjMjA0Yzg4ZTY5M2E5MDhiIgogCiBQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhY2wgc2VsaW51eCcsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi8wMDAxLWZpeC1sc2JfcmVsZWFzZS10by13b3JrLXdpdGgtYnVzeWJveC1oZWFkLWFuZC1maW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtZml4LWxzYl9yZWxlYXNlLXRvLXdvcmstd2l0aC1idXN5Ym94LWhlYWQtYW5kLWZpbmQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtZml4LWxzYl9yZWxlYXNlLXRvLXdvcmstd2l0aC1idXN5Ym94LWhlYWQtYW5kLWZpbmQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZTMwMjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAibHNiX3JlbGVhc2Ugc3VwcG9ydCBmb3IgT3BlbkVtYmVkZGVkIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorSE9NRVBBR0UgPSAiaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9sc2IiCitMSUNFTlNFID0gIkdQTHYyKyIKKworIyBsc2JfcmVsZWFzZSBuZWVkcyBnZXRvcHQKK1JERVBFTkRTXyR7UE59ICs9ICIke1ZJUlRVQUwtUlVOVElNRV9nZXRvcHR9IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTEyZGE1NDRiMWEzYTVhMTc5NWEyMTE2MGI0OTQ3MWNmIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xzYi9sc2JfcmVsZWFzZS8xLjQvbHNiLXJlbGVhc2UtMS40LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1sc2JfcmVsZWFzZS10by13b3JrLXdpdGgtYnVzeWJveC1oZWFkLWFuZC1maW5kLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjEyODhmOGQ2MmU3YTFkNDg1YjdjNmJkY2NmMDY3NjZmYjhjYTYwM2M2MTk1ODA2ZTQ0NTdmZGYxNzE3MiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbHNiL2ZpbGVzL2xzYl9yZWxlYXNlLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9sc2JfcmVsZWFzZS8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgorCitDTEVBTkJST0tFTiA9ICIxIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBwcmVmaXg9JHtEfSR7cm9vdF9wcmVmaXh9IG1hbmRpcj0ke0R9JHtkYXRhZGlyfS9tYW4vIERFU1RESVI9JHtEfQorCisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZAorCisJZWNobyAiRElTVFJJQl9JRD0ke0RJU1RST30iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCisJZWNobyAiRElTVFJJQl9SRUxFQVNFPSR7RElTVFJPX1ZFUlNJT059IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorCWlmIFsgLW4gIiR7RElTVFJPX0NPREVOQU1FfSIgXTsgdGhlbgorCQllY2hvICJESVNUUklCX0NPREVOQU1FPSR7RElTVFJPX0NPREVOQU1FfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKKwlmaQorCWVjaG8gIkRJU1RSSUJfREVTQ1JJUFRJT049XCIke0RJU1RST19OQU1FfSAke0RJU1RST19WRVJTSU9OfVwiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2luaXQtZnVuY3Rpb25zIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9pbml0LWZ1bmN0aW9ucwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggN2MxZGNlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2luaXQtZnVuY3Rpb25zCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyEvYmluL3NoCi0KLSMgTFNCIGluaXRzY3JpcHQgZnVuY3Rpb25zLCBhcyBkZWZpbmVkIGluIHRoZSBMU0IgU3BlYyAxLjEuMAotIwotIyBMYXdyZW5jZSBMaW0gPGxsaW1AY29yZS5jb20+IC0gVHVlLCAyNiBKdW5lIDIwMDcKLSMgVXBkYXRlZCB0byB0aGUgbGF0ZXN0IExTQiAzLjEgc3BlYwotIyBodHRwOi8vcmVmc3BlY3MuZnJlZXN0YW5kYXJkcy5vcmcvTFNCXzMuMS4wL0xTQi1Db3JlLWdlbmVyaWMvTFNCLUNvcmUtZ2VuZXJpY19saW5lcy50eHQKLQotc3RhcnRfZGFlbW9uICgpIHsKLQkvZXRjL2NvcmUtbHNiL2xzYl9zdGFydF9kYWVtb24gIiRAIgotfQotCi1raWxscHJvYyAoKSB7Ci0JL2V0Yy9jb3JlLWxzYi9sc2Jfa2lsbHByb2MgIiRAIgotfQotCi1waWRvZnByb2MgKCkgewotCS9ldGMvY29yZS1sc2IvbHNiX3BpZG9mcHJvYyAiJEAiCi19Ci0KLWxvZ19zdWNjZXNzX21zZyAoKSB7Ci0JL2V0Yy9jb3JlLWxzYi9sc2JfbG9nX21lc3NhZ2Ugc3VjY2VzcyAiJEAiCi19Ci0KLWxvZ19mYWlsdXJlX21zZyAoKSB7Ci0JL2V0Yy9jb3JlLWxzYi9sc2JfbG9nX21lc3NhZ2UgZmFpbHVyZSAiJEAiCi19Ci0KLWxvZ193YXJuaW5nX21zZyAoKSB7Ci0JL2V0Yy9jb3JlLWxzYi9sc2JfbG9nX21lc3NhZ2Ugd2FybmluZyAiJEAiCi19Ci0KLSMgaW50IGxvZ19iZWdpbl9tZXNzYWdlIChjaGFyICptZXNzYWdlKQotbG9nX2JlZ2luX21zZyAoKSB7Ci0JaWYgWyAteiAiJDEiIF07IHRoZW4KLQkJcmV0dXJuIDEKLQlmaQotCWVjaG8gIiAqICRAIgotfQotCi0KLWxvZ19lbmRfbXNnICgpIHsKLQkvZXRjL2NvcmUtbHNiL2xzYl9sb2dfbWVzc2FnZSBlbmQgIiRAIgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi9sc2Jfa2lsbHByb2MgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9raWxscHJvYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggODY2YzFhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9raWxscHJvYworKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotIyEvYmluL3NoCi0KLS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0KLUxTQj1MU0ItMS4xIGtpbGxwcm9jICQqCi1leGl0ICQ/CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9sb2dfbWVzc2FnZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX2xvZ19tZXNzYWdlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAxMDM0M2IwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX2xvZ19tZXNzYWdlCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotIyEvYmluL3NoCi0KLS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0KLUFDVElPTj0kMQotc2hpZnQKLQotY2FzZSAiJEFDVElPTiIgaW4KLSAgc3VjY2VzcykKLSAgCWVjaG8gLW4gJCoKLQlzdWNjZXNzICIkKiIKLQllY2hvCi0JOzsKLSAgZmFpbHVyZSkKLSAgCWVjaG8gLW4gJCoKLQlmYWlsdXJlICIkKiIKLQllY2hvCi0JOzsKLSAgd2FybmluZykKLSAgCWVjaG8gLW4gJCoKLQl3YXJuaW5nICIkKiIKLQllY2hvCi0JOzsKLSAgKikKLSAgCTs7Ci1lc2FjCi1leGl0IDAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3BpZG9mcHJvYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3BpZG9mcHJvYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNmQxZmQwZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9waWRvZnByb2MKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMhL2Jpbi9zaAotCi0uIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotCi1waWRvZnByb2MgJCoKLWV4aXQgJD8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3N0YXJ0X2RhZW1vbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2IvbHNiX3N0YXJ0X2RhZW1vbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZGU2MmMyMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiL2xzYl9zdGFydF9kYWVtb24KKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jIS9iaW4vc2gKLQotLiAvZXRjL2luaXQuZC9mdW5jdGlvbnMKLQotbmljZT0KLWZvcmNlPQotcGlkZmlsZT0KLXVzZXI9Ci1jaGVjaz0KLVJFVFZBTD0KLXdoaWxlIFsgIiQxIiAhPSAiJHsxIyNbLStdfSIgXTsgZG8KLQljYXNlICQxIGluCi0JICAgICAtZikKLQkgICAgIAlmb3JjZT0iLS1mb3JjZSIKLQkJc2hpZnQKLQkJOzsKLQkgICAgIC1uKQotCSAgICAgCW5pY2U9JDIKLQkJc2hpZnQgMgotCQk7OwotCSAgICAgLXApCi0JCXBpZGZpbGU9Ii0tcGlkZmlsZSAkMiIKLQkJc2hpZnQgMgotCQk7OwotCSAgICAgLXUpCi0JICAgICAgICB1c2VyPSItLXVzZXIgJDIiCi0JCXNoaWZ0IDIKLQkJOzsKLQkgICAgIC1jKQotCSAgICAgICAgY2hlY2s9Ii0tY2hlY2sgJDIiCi0JCXNoaWZ0IDIKLQkJOzsKLQkgICAgICAqKSAgICAgCi0gCQllY2hvICJVbmtub3duIE9wdGlvbiAkMSIKLSAJCWVjaG8gIk9wdGlvbnMgYXJlOiIKLSAJCWVjaG8gIi1mIiAKLQkJZWNobyAiLXAge3BpZGZpbGV9IgotCQllY2hvICItbiBbKy8tbmljZWxldmVsXSIKLQkJZWNobyAiLXUge3VzZXJ9IgotCQllY2hvICItYyB7YmFzZX0iCi0JICAgICAgICBleGl0IDE7OwkKLQllc2FjCi1kb25lCi1MU0I9TFNCLTEuMSBkYWVtb24gJHtmb3JjZTotfSAke25pY2U6LX0gJHtwaWRmaWxlOi19ICR7dXNlcjotfSAke2NoZWNrOi19ICQqCi1leGl0ICQ/CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiXzUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWRlMzM0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2JfNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLVNVTU1BUlkgPSAiTFNCIHN1cHBvcnQgZm9yIE9wZW5FbWJlZGRlZCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvbHNiIgotTElDRU5TRSA9ICJHUEx2MisiCi0KLUxTQl9DT1JFID0gImxzYi1jb3JlLSR7VEFSR0VUX0FSQ0h9IgotTFNCX0NPUkVfeDg2ID0gImxzYi1jb3JlLWlhMzIiCi1MU0JfQ09SRV94ODYtNjQgPSAibHNiLWNvcmUtYW1kNjQiCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7TFNCX0NPUkV9IgotCi0jIGxzYl9yZWxlYXNlIG5lZWRzIGdldG9wdCwgbHNiaW5pdHNjcmlwdHMKLVJERVBFTkRTXyR7UE59ICs9ICIke1ZJUlRVQUwtUlVOVElNRV9nZXRvcHR9IGxzYmluaXRzY3JpcHRzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTEyZGE1NDRiMWEzYTVhMTc5NWEyMTE2MGI0OTQ3MWNmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2xzYi9sc2JfcmVsZWFzZS8xLjQvbHNiLXJlbGVhc2UtMS40LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1sc2JfcmVsZWFzZS10by13b3JrLXdpdGgtYnVzeWJveC1oZWFkLWFuZC1maW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQtZnVuY3Rpb25zIFwKLSAgICAgICAgICAgZmlsZTovL2xzYl9raWxscHJvYyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2JfbG9nX21lc3NhZ2UgXAotICAgICAgICAgICBmaWxlOi8vbHNiX3BpZG9mcHJvYyBcCi0gICAgICAgICAgIGZpbGU6Ly9sc2Jfc3RhcnRfZGFlbW9uIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMDUzN2VmNWEwMWUwY2E5NGI3YjhlYjZhMzZiYjFlNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTMyMTI4OGY4ZDYyZTdhMWQ0ODViN2M2YmRjY2YwNjc2NmZiOGNhNjAzYzYxOTU4MDZlNDQ1N2ZkZjE3MTcyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sc2IvZmlsZXMvbHNiX3JlbGVhc2UvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xzYl9yZWxlYXNlLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCi0KLVMgPSAiJHtXT1JLRElSfS9sc2ItcmVsZWFzZS0xLjQiCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIHByZWZpeD0ke0R9JHtyb290X3ByZWZpeH0gbWFuZGlyPSR7RH0ke2RhdGFkaXJ9L21hbi8gREVTVERJUj0ke0R9Ci0KLQkjIHRoZXNlIHR3byBkaXJzIGFyZSBuZWVkZWQgYnkgcGFja2FnZSBsc2ItZGlzdC1jaGVja2VyCi0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vb3B0Ci0JbWtkaXIgLXAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3B0Ci0KLQlta2RpciAtcCAke0R9JHtiYXNlX2xpYmRpcn0KLQlta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kCi0JcHJpbnRmICJMU0JfVkVSU0lPTj1cImNvcmUtNS4wLW5vYXJjaDoiID4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JCXByaW50ZiAiY29yZS01LjAtaWEzMiIgPj4gICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZWxzZQotCQlwcmludGYgImNvcmUtNS4wLSR7VEFSR0VUX0FSQ0h9IiA+PiAgJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQlmaQotCWVjaG8gIlwiIiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVjaG8gIkRJU1RSSUJfSUQ9JHtESVNUUk99IiA+PiAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZQotCWVjaG8gIkRJU1RSSUJfUkVMRUFTRT0ke0RJU1RST19WRVJTSU9OfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQlpZiBbIC1uICIke0RJU1RST19DT0RFTkFNRX0iIF07IHRoZW4KLQkJZWNobyAiRElTVFJJQl9DT0RFTkFNRT0ke0RJU1RST19DT0RFTkFNRX0iID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlCi0JZmkKLQllY2hvICJESVNUUklCX0RFU0NSSVBUSU9OPVwiJHtESVNUUk9fTkFNRX0gJHtESVNUUk9fVkVSU0lPTn1cIiIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UKLQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LW5vYXJjaAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2dyYXBoaWNzLSR7UFZ9LWlhMzIKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LWlhMzIKLQllbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07IHRoZW4KLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1ub2FyY2gKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9ncmFwaGljcy0ke1BWfS1hbWQ2NAotCQl0b3VjaCAke0R9JHtzeXNjb25mZGlyfS9sc2ItcmVsZWFzZS5kL2Rlc2t0b3AtJHtQVn0tYW1kNjQKLQlmaQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tcHBjMzIKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LXBwYzMyCi0JZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tbm9hcmNoCi0JCXRvdWNoICR7RH0ke3N5c2NvbmZkaXJ9L2xzYi1yZWxlYXNlLmQvZ3JhcGhpY3MtJHtQVn0tcHBjNjQKLQkJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vbHNiLXJlbGVhc2UuZC9kZXNrdG9wLSR7UFZ9LXBwYzY0Ci0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jb3JlLWxzYgotICAgICAgIGZvciBpIGluIGxzYl9raWxscHJvYyBsc2JfbG9nX21lc3NhZ2UgbHNiX3BpZG9mcHJvYyBsc2Jfc3RhcnRfZGFlbW9uCi0gICAgICAgZG8KLSAgICAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vJGkgJHtEfSR7c3lzY29uZmRpcn0vY29yZS1sc2IKLSAgICAgICBkb25lCi0KLSAgICAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xzYgotICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtZnVuY3Rpb25zICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2xzYgotCi0gICAgICAgIyBjcmVhdGUgbGlua3MgZm9yIExTQiB0ZXN0Ci0gICAgICAgaWYgWyAtZSAke3NiaW5kaXJ9L2Noa2NvbmZpZyBdOyB0aGVuCi0gICAgICAgICAgICAgICBpZiBbICIke25vbmFyY2hfYmFzZV9saWJkaXJ9IiAhPSAiJHtub25hcmNoX2xpYmRpcn0iIF0gOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2xzYgotICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL2luc3RhbGxfaW5pdGQKLSAgICAgICAgICAgICAgIGxuIC1zZiAke3NiaW5kaXJ9L2Noa2NvbmZpZyAke0R9JHtub25hcmNoX2xpYmRpcn0vbHNiL3JlbW92ZV9pbml0ZAotICAgICAgIGZpCi0KLSAgICAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCi0gICAgICAgCSAgICAgICAjIGRvbid0IHN5bWxpbmsgaWYgdXNybWVyZ2UgaXMgaW4gRElTVFJPX0ZFQVRVUkVTIGFzIGl0IG1hbmFnZXMgdGhlIHN5bWxpbmsKLSAgICAgICAgICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ2ZhbHNlJywndHJ1ZScsZCl9ICYmIFwKLQkgICAgICAgCSAgWyAiJHtiYXNlX2xpYmRpcn0iICE9ICIke2Jhc2VfcHJlZml4fS9saWI2NCIgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgIGxuciAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7YmFzZV9wcmVmaXh9L2xpYjY0Ci0gICAgICAgICAgICAgICBmaQotCSAgICAgICBjZCAke0R9JHtiYXNlX2xpYmRpcn0KLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC14ODYtNjQuc28uMiBsZC1sc2IteDg2LTY0LnNvLjMKLSAgICAgICBmaQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNTg2IiBdIHx8IFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJpNjg2IiBdOyB0aGVuCi0JICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkLWxpbnV4LnNvLjIgbGQtbHNiLnNvLjIKLSAgICAgICAgICAgICAgIGxuIC1zZiBsZC1saW51eC5zby4yIGxkLWxzYi5zby4zCi0gICAgICAgZmkKLQotICAgICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgIGlmIFsgIiR7YmFzZV9saWJkaXJ9IiAhPSAiJHtiYXNlX3ByZWZpeH0vbGliNjQiIF07IHRoZW4KLSAgICAgICAgICAgICAgICAgICBsbnIgJHtEfSR7YmFzZV9saWJkaXJ9ICR7RH0ke2Jhc2VfcHJlZml4fS9saWI2NAotICAgICAgICAgICAgICAgZmkKLSAgICAgICAgICAgICAgIGNkICR7RH0ke2Jhc2VfbGliZGlyfQotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkNjQuc28uMSBsZC1sc2ItcHBjNjQuc28uMwotICAgICAgIGZpCi0gICAgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLQkgICAgICAgY2QgJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICBsbiAtc2YgbGQuc28uMSBsZC1sc2ItcHBjMzIuc28uMgotICAgICAgICAgICAgICAgbG4gLXNmIGxkLnNvLjEgbGQtbHNiLXBwYzMyLnNvLjMKLSAgICAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtAJyR7YmFzZV9wcmVmaXh9L2xpYjY0JyBpZiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKSA9PSAoJ3g4Nl82NCcgb3IgJ3Bvd2VycGM2NCcpIGFuZCAnJHtiYXNlX2xpYmRpcn0nICE9ICcke2Jhc2VfcHJlZml4fS9saWI2NCcgZWxzZSAnJ30gXAotICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9sc2IgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vbHNiLyogXAotICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvMDAwMS1mdW5jdGlvbnMtYXZvaWQtZXhpdC0xLXdoaWNoLWNhdXNlcy1pbml0LXNjcmlwdHMtdG8tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDA3NjQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU3ViamVjdDogZnVuY3Rpb25zOiBhdm9pZCBleGl0IDEgd2hpY2ggY2F1c2VzIGluaXQgc2NyaXB0cyB0byBmYWlsCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIHJjLmQvaW5pdC5kL2Z1bmN0aW9ucyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGluaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gaW5pdHNjcmlwdHMtOS43Mi5vcmlnL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotKysrIGluaXRzY3JpcHRzLTkuNzIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1AQCAtNjg2LDYgKzY4Niw2IEBAIGlmIFsgIiRfdXNlX3N5c3RlbWN0bCIgPSAiMSIgXTsgdGhlbgotICAgICBmaQotIGZpCi0gCi0tc3Ryc3RyICIkKGNhdCAvcHJvYy9jbWRsaW5lKSIgInJjLmRlYnVnIiAmJiBzZXQgLXgKLStzdHJzdHIgIiQoY2F0IC9wcm9jL2NtZGxpbmUpIiAicmMuZGVidWciICYmIHNldCAteCB8fCB0cnVlCi0gcmV0dXJuIDAKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiaW5pdHNjcmlwdHMvZnVuY3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTEyZGFhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0cy9mdW5jdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGU0NmIwNTYyODJjODQyMGYwOTZkNWMzNGQ3OGMwMGY4MTY3ODg3ODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGYW4gWGluIDxmYW4ueGluQGpwLmZ1aml0c3UuY29tPgotRGF0ZTogTW9uLCA1IEp1biAyMDE3IDE2OjI2OjQ3ICswOTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IFhpYW9mZW5nIFlhbiA8eGlhb2ZlbmcueWFuQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0KLVJlYmFzZSBvbiA5LjcyCi0KLVNpZ25lZC1vZmYtYnk6IEZhbiBYaW4gPGZhbi54aW5AanAuZnVqaXRzdS5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tCi0gcmMuZC9pbml0LmQvZnVuY3Rpb25zIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcmMuZC9pbml0LmQvZnVuY3Rpb25zIGIvcmMuZC9pbml0LmQvZnVuY3Rpb25zCi1pbmRleCAyZTNkYTk2NC4uMWEyMDRkZWMgMTAwNjQ0Ci0tLS0gYS9yYy5kL2luaXQuZC9mdW5jdGlvbnMKLSsrKyBiL3JjLmQvaW5pdC5kL2Z1bmN0aW9ucwotQEAgLTU5LDcgKzU5LDcgQEAgc3lzdGVtY3RsX3JlZGlyZWN0ICgpIHsKLSBbIC16ICIke0NPTFVNTlM6LX0iIF0gJiYgQ09MVU1OUz04MAotIAotIGlmIFsgLXogIiR7Q09OU09MRVRZUEU6LX0iIF07IHRoZW4KLS0gICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIF0gJiYgWyAtciAiL2Rldi9zdGRlcnIiIF07IHRoZW4KLSsgICAgaWYgWyAtYyAiL2Rldi9zdGRlcnIiIF0gJiYgWyAtciAiL2Rldi9zdGRlcnIiIF0gJiYgWyAtZSAvc2Jpbi9jb25zb2xldHlwZSBdOyB0aGVuCi0gICAgICAgICBDT05TT0xFVFlQRT0iJCgvc2Jpbi9jb25zb2xldHlwZSA8IC9kZXYvc3RkZXJyIDI+L2Rldi9udWxsKSIKLSAgICAgZWxzZQotICAgICAgICAgQ09OU09MRVRZUEU9InNlcmlhbCIKLS0tIAotMi4xNS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2Jpbml0c2NyaXB0c185Ljc5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkM2ZjZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYmluaXRzY3JpcHRzXzkuNzkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlN5c1YgaW5pdCBzY3JpcHRzIHdoaWNoIGFyZSBvbmx5IHVzZWQgaW4gYW4gTFNCIGltYWdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmRlYmlhbi5vcmcvTFNCSW5pdFNjcmlwdHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotCi1SUFJPVklERVNfJHtQTn0gKz0gImluaXRkLWZ1bmN0aW9ucyIKLVJERVBFTkRTXyR7UE59ICs9ICJ1dGlsLWxpbnV4IgotUkNPTkZMSUNUU18ke1BOfSA9ICJpbml0c2NyaXB0cy1mdW5jdGlvbnMiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViZjRlOGI0OTc4MGFiMTg3ZDUxYmQyNmFhYTAyMmM2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2luaXRzY3JpcHRzIFwKLSAgICAgICAgICAgZmlsZTovL2Z1bmN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZ1bmN0aW9ucy1hdm9pZC1leGl0LTEtd2hpY2gtY2F1c2VzLWluaXQtc2NyaXB0cy10by0ucGF0Y2ggXAotICAgICAgICAgICIgCi1TUkNSRVYgPSAiYTUxYzFiNGY3ZGNmNTViNTY4YjJlZTRjMmIxODA3ODg0OTk0MzQ2OSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIl4oP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNmM3OThmNDBkY2ViMTE3ZTEyMTI2ZDk0Y2IyNWE5YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkzNjc3YmRkMWY3ZWU0Y2IwMDg3OGNlNDMzNDYxOTYzNzRmODQ4YTRjOGU0NTU5ZTA4NjA0MGZjNzQ4N2RiIgotCi0jIFNpbmNlIHdlIGFyZSBvbmx5IHRha2luZyB0aGUgcGF0Y2hlZCB2ZXJzaW9uIG9mIGZ1bmN0aW9ucywgbm8gbmVlZCB0bwotIyBjb25maWd1cmUgb3IgY29tcGlsZSBhbnl0aGluZyBzbyBkbyBub3QgZXhlY3V0ZSB0aGVzZQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIgCi1kb19jb21waWxlW25vZXhlY10gPSAiMSIgCi0KLWRvX2luc3RhbGwoKXsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9yYy5kL2luaXQuZC9mdW5jdGlvbnMgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Z1bmN0aW9ucwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3QvTFNCX1Rlc3Quc2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDczZTI0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9MU0JfVGVzdC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDUyNSArMCwwIEBACi0jIS9iaW4vc2gKLQotIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgotIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgotIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCi0KLQotV09SS19ESVI9Ii9vcHQvbHNiLXRlc3QiCi0KLWlmIFsgYGlkIC11YCAtbmUgMCBdCi10aGVuCi0JY2F0IDw8IEVPRgotCUluIG9yZGVyIHRvIGluc3RhbGwgYW5kIHJ1biBMU0IgdGVzdHN1aXRlLCB5b3UgbmVlZCBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMuCi0JWW91IGFyZSBjdXJyZW50bHkgcnVubmluZyB0aGlzIHNjcmlwdCBhcyBhbiB1bnByaXZpbGVnZWQgdXNlci4KLQotRU9GCi0JZXhpdCAxCi1maQotCi1BUkNIPWB1bmFtZSAtbWAKLWlmIFsgJHtBUkNIfSAhPSAiaTY4NiIgXSAmJiBbICR7QVJDSH0gIT0gIng4Nl82NCIgXSAmJiBbICR7QVJDSH0gIT0gInBwYyIgXSAmJiBbICR7QVJDSH0gIT0gInBwYzY0IiBdCi10aGVuCi0JZWNobyAiRXJyb3I6IFVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKLQlleGl0IDEKLWZpCi0KLXdoaWNoIHJwbQotaWYgWyAkPyAtbmUgMCBdCi10aGVuCi0JZWNobyAiTm8gcnBtIGNvbW1hbmQgZm91bmQiCi0JZXhpdCAxCi1maQotCi1SRVQ9MAotCi1jZCAke1dPUktfRElSfSB8fCBleGl0IDEKLSMgU3RlcCAxOiBEb3dubG9hZCB0aGUgTFNCIFBhY2thZ2VzCi1lY2hvICIiCi1lY2hvICJEb3dubG9hZCBMU0IgcGFja2FnZXMuLi4iCi1lY2hvICIiCi0KLWlmIFsgISAtZSAuL3BhY2thZ2VzX2xpc3QgXQotdGhlbgotCWVjaG8gIkVycm9yOiBDb3VsZCBub3QgZmluZCBwYWNrYWdlcyBsaXN0IiA+JjIKLQlleGl0IDEKLWZpCi0KLS4gLi9wYWNrYWdlc19saXN0Ci0KLVBBQ0tBR0VTX0RJUj0iL3Zhci9vcHQvbHNiL3Rlc3QvbWFuYWdlci9wYWNrYWdlcy9mdHAubGludXhmb3VuZGF0aW9uLm9yZy9wdWIvbHNiIgotCi1CQVNFX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2Jhc2UvcmVsZWFzZWQtYWxsL2JpbmFyeSIKLVJVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVI9IiR7UEFDS0FHRVNfRElSfS90ZXN0X3N1aXRlcy9yZWxlYXNlZC1hbGwvYmluYXJ5L3J1bnRpbWUiCi1SVU5USU1FX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L3Rlc3Rfc3VpdGVzLyR7TFNCX1JFTEVBU0V9L2JpbmFyeS9ydW50aW1lIgotQVBQX1BBQ0tBR0VTX0RJUj0iJHtQQUNLQUdFU19ESVJ9L2FwcC1iYXR0ZXJ5LyR7TFNCX1JFTEVBU0V9LyR7TFNCX0FSQ0h9IgotQVBQX1RFU1RGSUxFU19ESVI9IiR7UEFDS0FHRVNfRElSfS9hcHAtYmF0dGVyeS90ZXN0cyIKLVNOQVBTSE9UU19URVNURklMRVNfRElSPSIke1BBQ0tBR0VTX0RJUn0vc25hcHNob3RzL2FwcGJhdC90ZXN0cyIKLQotaWYgWyAhIC1kICR7UEFDS0FHRVNfRElSfSBdCi10aGVuCi0JbWtkaXIgLXAgJHtQQUNLQUdFU19ESVJ9Ci1maQotCi1pZiBbICEgLWQgJHtCQVNFX1BBQ0tBR0VTX0RJUn0gXQotdGhlbgotCW1rZGlyIC1wICR7QkFTRV9QQUNLQUdFU19ESVJ9Ci1maQotCi1pZiBbICEgLWQgJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JbWtkaXIgLXAgJHtSVU5USU1FX0JBU0VfUEFDS0FHRVNfRElSfQotZmkKLQotaWYgWyAhIC1kICR7UlVOVElNRV9QQUNLQUdFU19ESVJ9IF0KLXRoZW4KLQlta2RpciAtcCAke1JVTlRJTUVfUEFDS0FHRVNfRElSfQotZmkKLQotaWYgWyAhIC1kICR7QVBQX1BBQ0tBR0VTX0RJUn0gXQotdGhlbgotCW1rZGlyIC1wICR7QVBQX1BBQ0tBR0VTX0RJUn0KLWZpCi0KLWlmIFsgISAtZCAke0FQUF9URVNURklMRVNfRElSfSBdCi10aGVuCi0JbWtkaXIgLXAgJHtBUFBfVEVTVEZJTEVTX0RJUn0KLWZpCi0KLSMgT2ZmaWNpYWwgZG93bmxvYWQgc2VydmVyIGxpc3QuIFlvdSBjYW4gcmVwbGFjZSB0aGVtIHdpdGggeW91ciBvd24gc2VydmVyLgotU0VSVkVSX0lQQUREUj0iMTQwLjIxMS4xNjkuMjgiCi1TRVJWRVJfTkFNRT0iZnRwLmxpbnV4Zm91bmRhdGlvbi5vcmciCi0KLWlmICEgYGdyZXAgLUYgLXEgIiR7U0VSVkVSX05BTUV9IiAvZXRjL2hvc3RzYDsgdGhlbgotCWVjaG8gIiR7U0VSVkVSX0lQQUREUn0JJHtTRVJWRVJfTkFNRX0JJHtTRVJWRVJfTkFNRX0iID4+IC9ldGMvaG9zdHMKLWZpCi0KLSNwaW5nIC1jIDUgJHtTRVJWRVJfTkFNRX0KLSNpZiBbICQ/IC1uZSAwIF0KLSN0aGVuCi0jCWVjaG8gIlRoZSBzZXJ2ZXI6ICR7U0VSVkVSX05BTUV9IGlzIHVucmVhY2hhYmxlIgotIwlleGl0IDEKLSNmaQotCi1TRVJWRVIxPSJcCi0JaHR0cDovLyR7U0VSVkVSX05BTUV9L3B1Yi9sc2IvYmFzZS9yZWxlYXNlZC1hbGwvYmluYXJ5IgkKLVNFUlZFUjI9IlwKLQlodHRwOi8vJHtTRVJWRVJfTkFNRX0vcHViL2xzYi90ZXN0X3N1aXRlcy9yZWxlYXNlZC1hbGwvYmluYXJ5L3J1bnRpbWUiCi1TRVJWRVIzPSJcCi0JaHR0cDovLyR7U0VSVkVSX05BTUV9L3B1Yi9sc2IvdGVzdF9zdWl0ZXMvJHtMU0JfUkVMRUFTRX0vYmluYXJ5L3J1bnRpbWUiCi1TRVJWRVI0PSJcCi0JaHR0cDovLyR7U0VSVkVSX05BTUV9L3B1Yi9sc2IvYXBwLWJhdHRlcnkvJHtMU0JfUkVMRUFTRX0vJHtMU0JfQVJDSH0iCi1TRVJWRVI1PSJcCi0JaHR0cDovLyR7U0VSVkVSX05BTUV9L3B1Yi9sc2IvYXBwLWJhdHRlcnkvdGVzdHMiCi0KLSMgV2UgdXNpbmcgImN1cmwiIGFzIGEgZG93bmxvYWQgdG9vbCwgIndnZXQiIGlzIGFuIGFsdGVybmF0aXZlLgotQ1VSTD1gd2hpY2ggY3VybGAKLVdHRVQ9YHdoaWNoIHdnZXRgCi1pZiBbICEgLXogJHtDVVJMfSBdCi10aGVuCi0JRE9XTkxPQURfQ01EPSIke0NVUkx9IC1SIC1MIC1mIC0tcmV0cnkgMyAtLXJldHJ5LWRlbGF5IDQgLS1jb25uZWN0LXRpbWVvdXQgMTgwIC0tY29tcHJlc3NlZCAtQyAtIC1vIgotZWxpZiBbICEgLXogJHtXR0VUfSBdCi10aGVuCi0JRE9XTkxPQURfQ01EPSIke1dHRVR9IC1jIC10IDUgLU8iCi1lbHNlCi0JZWNobyAiQ2FuIG5vdCBmaW5kIGEgZG93bmxvYWQgdG9vbCwgcGxlYXNlIGluc3RhbGwgY3VybCBvciB3Z2V0LiIKLQlleGl0IDEKLWZpCi0KLWNkICR7QkFTRV9QQUNLQUdFU19ESVJ9Ci1mb3IgcGtnIGluICR7QkFTRV9QQUNLQUdFU19MSVNUfTsgZG8KLQlpZiBbICEgLWYgJHtwa2d9IF0KLQl0aGVuCi0JCSMke0RPV05MT0FEX0NNRH0gJHtwa2d9Ii4jcGFydCIgJHtTRVJWRVIxfS8ke3BrZ30gPiAvZGV2L251bGwgMj4mMQotCQkke0RPV05MT0FEX0NNRH0gJHtwa2d9Ii4jcGFydCIgJHtTRVJWRVIxfS8ke3BrZ30KLQkJaWYgWyAkPyAtZXEgMCBdCi0JCXRoZW4KLQkJCW12IC1mICR7cGtnfSIuI3BhcnQiICR7cGtnfQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IHN1Y2Nlc3NmdWxseS4iCi0JCWVsc2UKLQkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBmYWlsZWQuIgotCQkJUkVUPTEKLQkJZmkKLQlmaQotZG9uZQotCi1jZCAke1JVTlRJTUVfQkFTRV9QQUNLQUdFU19ESVJ9Ci1mb3IgcGtnIGluICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0xJU1R9OyBkbwotCWlmIFsgISAtZiAke3BrZ30gXQotCXRoZW4KLQkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjJ9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCi0JCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjJ9LyR7cGtnfQotCQlpZiBbICQ/IC1lcSAwIF0KLQkJdGhlbgotCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9Ci0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKLQkJZWxzZQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCi0JCQlSRVQ9MQotCQlmaQotCWZpCi1kb25lCi0KLWNkICR7UlVOVElNRV9QQUNLQUdFU19ESVJ9Ci1mb3IgcGtnIGluICR7UlVOVElNRV9QQUNLQUdFU19MSVNUfTsgZG8KLQlpZiBbICEgLWYgJHtwa2d9IF0KLQl0aGVuCi0JCSMke0RPV05MT0FEX0NNRH0gJHtwa2d9Ii4jcGFydCIgJHtTRVJWRVIzfS8ke3BrZ30gPiAvZGV2L251bGwgMj4mMQotCQkke0RPV05MT0FEX0NNRH0gJHtwa2d9Ii4jcGFydCIgJHtTRVJWRVIzfS8ke3BrZ30KLQkJaWYgWyAkPyAtZXEgMCBdCi0JCXRoZW4KLQkJCW12IC1mICR7cGtnfSIuI3BhcnQiICR7cGtnfQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IHN1Y2Nlc3NmdWxseS4iCi0JCWVsc2UKLQkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBmYWlsZWQuIgotCQkJUkVUPTEKLQkJZmkKLQlmaQotZG9uZQotCi1jZCAke0FQUF9QQUNLQUdFU19ESVJ9Ci1mb3IgcGtnIGluICR7QVBQX1BBQ0tBR0VTX0xJU1R9OyBkbwotCWlmIFsgISAtZiAke3BrZ30gXQotCXRoZW4KLQkJIyR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjR9LyR7cGtnfSA+IC9kZXYvbnVsbCAyPiYxCi0JCSR7RE9XTkxPQURfQ01EfSAke3BrZ30iLiNwYXJ0IiAke1NFUlZFUjR9LyR7cGtnfQotCQlpZiBbICQ/IC1lcSAwIF0KLQkJdGhlbgotCQkJbXYgLWYgJHtwa2d9Ii4jcGFydCIgJHtwa2d9Ci0JCQllY2hvICJEb3dubG9hZCAke3BrZ30gc3VjY2Vzc2Z1bGx5LiIKLQkJZWxzZQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IGZhaWxlZC4iCi0JCQlSRVQ9MQotCQlmaQotCWZpCi1kb25lCi0KLWNkICR7QVBQX1RFU1RGSUxFU19ESVJ9Ci1mb3IgcGtnIGluICR7QVBQX1RFU1RGSUxFU19MSVNUfTsgZG8KLQlpZiBbICEgLWYgJHtwa2d9IF0KLQl0aGVuCi0JCSMke0RPV05MT0FEX0NNRH0gJHtwa2d9Ii4jcGFydCIgJHtTRVJWRVI1fS8ke3BrZ30gPiAvZGV2L251bGwgMj4mMQotCQkke0RPV05MT0FEX0NNRH0gJHtwa2d9Ii4jcGFydCIgJHtTRVJWRVI1fS8ke3BrZ30KLQkJaWYgWyAkPyAtZXEgMCBdCi0JCXRoZW4KLQkJCW12IC1mICR7cGtnfSIuI3BhcnQiICR7cGtnfQotCQkJZWNobyAiRG93bmxvYWQgJHtwa2d9IHN1Y2Nlc3NmdWxseS4iCi0JCWVsc2UKLQkJCWVjaG8gIkRvd25sb2FkICR7cGtnfSBmYWlsZWQuIgotCQkJUkVUPTEKLQkJZmkKLQlmaQotZG9uZQotCi1pZiBbICR7UkVUfSAtbmUgMCBdCi10aGVuCi0JZWNobyAiRG93bmxvYWQgc29tZSBwYWNrYWdlcyBmYWlsZWQuIFBsZWFzZSBkb3dubG9hZCB0aGVtIGFnYWluLiIKLQlleGl0IDEKLWZpCi0KLSMgU3RlcCAyOiBJbnN0YWxsIHRoZSBMU0IgUGFja2FnZXMKLWVjaG8gIiIKLWVjaG8gIkluc3RhbGwgTFNCIHBhY2thZ2VzLi4uIgotZWNobyAiIgotCi0jIEtpbGwgbGlnaHR0cGQKLXBzIGF1eCB8IGdyZXAgImxpZ2h0dHBkIiB8IGdyZXAgLXYgLXEgImdyZXAiCi1pZiBbICQ/IC1lcSAwIF0KLXRoZW4KLQlraWxsYWxsIGxpZ2h0dHBkID4vZGV2L251bGwgMj4mMQotZmkKLQotIyBTdGFydCBhdmFoaS1kYWVtb24KLXBzIGF1eCB8IGdyZXAgImF2YWhpLWRhZW1vbiIgfCBncmVwIC12IC1xICJncmVwIgotaWYgWyAkPyAtbmUgMCBdCi10aGVuCi0JL2V0Yy9pbml0LmQvYXZhaGktZGFlbW9uIHN0YXJ0ID4vZGV2L251bGwgMj4mMQotZmkKLQotTFNCX1NUQVJUX0NNRD0iL29wdC9sc2IvdGVzdC9tYW5hZ2VyL2Jpbi9kaXN0LWNoZWNrZXItc3RhcnQucGwiCi1MU0JfU1RPUF9DTUQ9Ii9vcHQvbHNiL3Rlc3QvbWFuYWdlci9iaW4vZGlzdC1jaGVja2VyLXN0b3AucGwiCi0KLVBMQVRGT1JNX0ZJTEU9Ii9ldGMvcnBtL3BsYXRmb3JtIgotCi1SUE1fSU5TVEFMTF9DTUQ9InJwbSAtLXF1aWV0IC0tbm9kZXBzIC0tcmVwbGFjZXBrZ3MgLS1ub3NpZ25hdHVyZSAtaSAtLWlnbm9yZW9zIgotUlBNX0lOU1RBTExfQ01EX05PU0NSSVBUUz0icnBtIC0tcXVpZXQgLS1ub2RlcHMgLS1yZXBsYWNlcGtncyAtLW5vc2NyaXB0cyAtLW5vc2lnbmF0dXJlIC1pIC0taWdub3Jlb3MiCi0KLSMgSWYgdGhlIGxzYiBoYXMgYmVlbiBzdGFydGVkLCBzdG9wIGl0IGZpcnN0LgotaWYgWyAteCAke0xTQl9TVE9QX0NNRH0gXQotdGhlbgotCSR7TFNCX1NUT1BfQ01EfQotZmkKLQotaWYgWyAhIC1kIC9ldGMvcnBtIF0KLXRoZW4KLQlta2RpciAtcCAvZXRjL3JwbQotZmkKLQotaWYgWyAhIC1mICR7UExBVEZPUk1fRklMRX0gXQotdGhlbgotCXRvdWNoICR7UExBVEZPUk1fRklMRX0KLWZpCi0KLWlmICEgYGdyZXAgLUYgLXEgIm5vYXJjaC1zdXNlIiAke1BMQVRGT1JNX0ZJTEV9YDsgdGhlbgotCWlmIFsgJHtBUkNIfSA9IGk2ODYgXTt0aGVuCi0JCWVjaG8gImk0ODYtc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICJpNDg2LW5vYXJjaCIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICJpNDg2LXBjIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gIm5vYXJjaC1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JZWxpZiBbICR7QVJDSH0gPSB4ODZfNjQgXTsgdGhlbgotCQllY2hvICJpNDg2LXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAiaTQ4Ni1ub2FyY2giID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAiaTQ4Ni1wYyIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICJpNDg2LS4qLWxpbnV4LioiID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAibm9hcmNoLXN1c2UiID4+ICR7UExBVEZPUk1fRklMRX0KLQkJZWNobyAiJHtBUkNIfS1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gIiR7QVJDSH0tbm9hcmNoIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gIiR7QVJDSH0tcGMiID4+ICR7UExBVEZPUk1fRklMRX0KLQllbHNlCi0JCWVjaG8gIiR7QVJDSH0tc3VzZSIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICIke0FSQ0h9LW5vYXJjaCIgPj4gJHtQTEFURk9STV9GSUxFfQotCQllY2hvICIke0FSQ0h9LXBjIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JCWVjaG8gIm5vYXJjaC1zdXNlIiA+PiAke1BMQVRGT1JNX0ZJTEV9Ci0JZmkKLWZpCi0KLWlmIFsgLWQgJHtCQVNFX1BBQ0tBR0VTX0RJUn0gXQotdGhlbgotCWNkICR7QkFTRV9QQUNLQUdFU19ESVJ9Ci0JZm9yIHBrZyBpbiAke0JBU0VfUEFDS0FHRVNfTElTVH0KLQlkbwotCQlycG0gLS1xdWlldCAtcSAke3BrZyVcLip9Ci0JCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotCQkJJFJQTV9JTlNUQUxMX0NNRCAke3BrZ30KLQkJZmkKLQlkb25lCi1maQotCi1pZiBbIC1kICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUn0gXQotdGhlbgotCWNkICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0RJUn0KLQlmb3IgcGtnIGluICR7UlVOVElNRV9CQVNFX1BBQ0tBR0VTX0xJU1R9Ci0JZG8KLQkJcnBtIC0tcXVpZXQgLXEgJHtwa2clXC4qfQotCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJCSRSUE1fSU5TVEFMTF9DTUQgJHtwa2d9Ci0JCWZpCi0JZG9uZQotZmkKLQotaWYgWyAtZCAke1JVTlRJTUVfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JY2QgJHtSVU5USU1FX1BBQ0tBR0VTX0RJUn0KLQlmb3IgcGtnIGluICR7UlVOVElNRV9QQUNLQUdFU19MSVNUfQotCWRvCi0JCXJwbSAtLXF1aWV0IC1xICR7cGtnJVwuKn0KLQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCQkkUlBNX0lOU1RBTExfQ01EICR7cGtnfQotCQlmaQotCWRvbmUKLWZpCi0KLWlmIFsgLWQgJHtBUFBfUEFDS0FHRVNfRElSfSBdCi10aGVuCi0JY2QgJHtBUFBfUEFDS0FHRVNfRElSfQotCWZvciBwa2cgaW4gJHtBUFBfUEFDS0FHRVNfTElTVH0KLQlkbwotCQllY2hvICIke3BrZ30iIHwgZ3JlcCAtcSAiYXBhY2hlXHx4cGRmIgotCQlpZiBbICQ/IC1lcSAwIF0KLQkJdGhlbgotCQkJcnBtIC0tcXVpZXQgLXEgJHtwa2clXC4qfQotCQkJaWYgWyAkPyAtbmUgMCBdOyB0aGVuCi0JCQkJJFJQTV9JTlNUQUxMX0NNRF9OT1NDUklQVFMgJHtwa2d9Ci0JCQlmaQotCQllbHNlCi0JCQlycG0gLS1xdWlldCAtcSAke3BrZyVcLip9Ci0JCQlpZiBbICQ/IC1uZSAwIF07IHRoZW4KLQkJCQkkUlBNX0lOU1RBTExfQ01EICR7cGtnfQotCQkJZmkKLQkJZmkKLQlkb25lCi1maQotCi1pZiBbICEgLWQgJHtTTkFQU0hPVFNfVEVTVEZJTEVTX0RJUn0gXQotdGhlbgotCW1rZGlyIC1wICR7U05BUFNIT1RTX1RFU1RGSUxFU19ESVJ9Ci1maQotCi1pZiBbIC1kICR7QVBQX1RFU1RGSUxFU19ESVJ9IF0KLXRoZW4KLQljZCAke0FQUF9URVNURklMRVNfRElSfQotCWZvciBwa2cgaW4gJHtBUFBfVEVTVEZJTEVTX0xJU1R9Ci0JZG8KLQkJY3AgLWYgJHtwa2d9ICR7U05BUFNIT1RTX1RFU1RGSUxFU19ESVJ9Ci0JZG9uZQotZmkKLQotY2QgJHtXT1JLX0RJUn0KLQotIyBTdGVwIDM6IFNldCBlbnZpcm9ubWVudAotZWNobyAiIgotZWNobyAiU2V0IGVudmlyb25tZW50Li4uIgotZWNobyAiIgotCi1jaGVjayAoKQotewotCWlmIFsgJD8gLWVxIDAgXQotCXRoZW4KLQkJZWNobyAiUEFTUyIKLQllbHNlIAotCQllY2hvICJGQUlMIgotCQlleGl0IDEKLQlmaQotfQotCi1lY2hvICIiCi1lY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi1lY2hvICJDcmVhdGUgdGhlIERpcm5hbWVzIG9uIHRhcmdldCIKLQotaWYgWyAhIC1kIC9ldGMvcnBtL3N5c2luZm8gXQotdGhlbgotCW1rZGlyIC1wIC9ldGMvcnBtL3N5c2luZm8KLWZpCi0KLWNhdCA+IC9ldGMvcnBtL3N5c2luZm8vRGlybmFtZXMgPDwgRU9GCi0vZXRjL29wdC9sc2IKLS9ob21lL3RldC9MU0IudG9vbHMKLS9vcHQvbHNiLXRldDMtbGl0ZS9saWIva3NoCi0vb3B0L2xzYi10ZXQzLWxpdGUvbGliL3BlcmwKLS9vcHQvbHNiLXRldDMtbGl0ZS9saWIvcG9zaXhfc2gKLS9vcHQvbHNiLXRldDMtbGl0ZS9saWIvdGV0MwotL29wdC9sc2ItdGV0My1saXRlL2xpYi94cGczc2gKLS9vcHQvbHNiL2FwcGJhdC9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvcW0KLS9vcHQvbHNiL2FwcGJhdC9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvcW0vZXh0ZXJuYWwKLS9vcHQvbHNiL2FwcGJhdC9saWIvcHl0aG9uMi40L3NpdGUtcGFja2FnZXMvcW0vZXh0ZXJuYWwvRG9jdW1lbnRUZW1wbGF0ZQotL29wdC9sc2IvYXBwYmF0L2xpYi9weXRob24yLjQvc2l0ZS1wYWNrYWdlcy9xbS90ZXN0Ci0vb3B0L2xzYi9hcHBiYXQvbGliL3B5dGhvbjIuNC9zaXRlLXBhY2thZ2VzL3FtL3Rlc3QvY2xhc3NlcwotL29wdC9sc2IvYXBwYmF0L2xpYi9weXRob24yLjQvc2l0ZS1wYWNrYWdlcy9xbS90ZXN0L3dlYgotL29wdC9sc2IvdGVzdC9kb2MKLS9vcHQvbHNiL3Rlc3QvbGliCi0vb3B0L2xzYi90ZXN0L3FtL2RpYWdub3N0aWNzCi0vb3B0L2xzYi90ZXN0L3FtL2RvYwotL29wdC9sc2IvdGVzdC9xbS9kb2MvdGVzdC9odG1sCi0vb3B0L2xzYi90ZXN0L3FtL2RvYy90ZXN0L3ByaW50Ci0vb3B0L2xzYi90ZXN0L3FtL2R0bWwKLS9vcHQvbHNiL3Rlc3QvcW0vZHRtbC90ZXN0Ci0vb3B0L2xzYi90ZXN0L3FtL21lc3NhZ2VzL3Rlc3QKLS9vcHQvbHNiL3Rlc3QvcW0vdHV0b3JpYWwvdGVzdC90ZGIKLS9vcHQvbHNiL3Rlc3QvcW0vdHV0b3JpYWwvdGVzdC90ZGIvUU1UZXN0Ci0vb3B0L2xzYi90ZXN0L3FtL3dlYgotL29wdC9sc2IvdGVzdC9xbS93ZWIvaW1hZ2VzCi0vb3B0L2xzYi90ZXN0L3FtL3dlYi9zdHlsZXNoZWV0cwotL29wdC9sc2IvdGVzdC9xbS94bWwKLS9vcHQvbHNiL3Rlc3Qvc2hhcmUKLS91c3Ivc2hhcmUvZG9jL2xzYi1ydW50aW1lLXRlc3QKLS92YXIvb3B0L2xzYgotL29wdC9sc2IvdGVzdC9kZXNrdG9wCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AvZm9udGNvbmZpZwotL29wdC9sc2IvdGVzdC9kZXNrdG9wL2ZyZWV0eXBlCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AvZ3RrdnRzCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AvbGlicG5nCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AveGZ0Ci0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AveG1sCi0vb3B0L2xzYi90ZXN0L2Rlc2t0b3AveHJlbmRlcgotCi0KLUVPRgotCi1pZiBbIC1mIC9ldGMvcnBtL3N5c2luZm8vRGlybmFtZXMgXQotdGhlbgotCWVjaG8gIlN1Y2Nlc3MgdG8gY3JlYXQgRGlybmFtZXMgZmlsZSIKLWVsc2UgCi0JZWNobyAiRmFpbCB0byBjcmVhdCBEaXJuYW1lcyBmaWxlIgotZmkKLQotWyAteCAvc2Jpbi9sZGNvbmZpZyBdICYmIHsKLWVjaG8gIiIKLWVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLWVjaG8gIlVwZGF0ZSBjYWNoZSIKLS9zYmluL2xkY29uZmlnCi1jaGVjazsKLX0KLQotIyBDaGVjayBsb29wIGRldmljZQotaWYgWyAhIC1iIC9kZXYvbG9vcDAgXQotdGhlbgotCWluc21vZCAvbGliL21vZHVsZXMvYHVuYW1lIC1yYC9rZXJuZWwvZHJpdmVycy9ibG9jay9sb29wLmtvCi0JaWYgWyAkPyAhPSAwIF07dGhlbgotCQllY2hvICJJbnNtb2QgbG9vcC5rbyBmYWlsZWQuIgotCWZpCi1maQotCi0jIFJlc29sdmUgbG9jYWxob3N0Ci1MT0NBTEhPU1Q9YGhvc3RuYW1lYAotaWYgISBgZ3JlcCAtRiAtcSAiJExPQ0FMSE9TVCIgL2V0Yy9ob3N0c2A7IHRoZW4KLQllY2hvICIxMjcuMC4wLjEJJExPQ0FMSE9TVCIgPj4gL2V0Yy9ob3N0cwotZmkKLQotIyBXb3JrYXJvdW5kIHRvIGFkZCBwYXJ0IG9mIGxvY2FsZXMgZm9yIExTQiB0ZXN0Ci1sb2NhbGVkZWYgLWkgZGVfREUgLWYgSVNPLTg4NTktMSBkZV9ERQotbG9jYWxlZGVmIC1pIGRlX0RFIC1mIElTTy04ODU5LTE1IGRlX0RFLklTTy04ODU5LTE1Ci1sb2NhbGVkZWYgLWkgZGVfREUgLWYgVVRGLTggZGVfREUuVVRGLTgKLWxvY2FsZWRlZiAtaSBkZV9ERUBldXJvIC1mIElTTy04ODU5LTE1IGRlX0RFQGV1cm8KLWxvY2FsZWRlZiAtaSBlbl9ISyAtZiBJU08tODg1OS0xIGVuX0hLCi1sb2NhbGVkZWYgLWkgZW5fUEggLWYgSVNPLTg4NTktMSBlbl9QSAotbG9jYWxlZGVmIC1pIGVuX1VTIC1mIElTTy04ODU5LTE1IGVuX1VTLklTTy04ODU5LTE1Ci1sb2NhbGVkZWYgLWkgZW5fVVMgLWYgSVNPLTg4NTktMSBlbl9VUy5JU08tODg1OS0xCi1sb2NhbGVkZWYgLWkgZW5fVVMgLWYgSVNPLTg4NTktMSBlbl9VUwotbG9jYWxlZGVmIC1pIGVuX1VTIC1mIFVURi04IGVuX1VTLlVURi04Ci1sb2NhbGVkZWYgLWkgZW5fVVMgLWYgSVNPLTg4NTktMSBlbl9VUy5JU084ODU5LTEKLWxvY2FsZWRlZiAtaSBlc19NWCAtZiBJU08tODg1OS0xIGVzX01YCi1sb2NhbGVkZWYgLWkgZnJfRlIgLWYgSVNPLTg4NTktMSBmcl9GUgotbG9jYWxlZGVmIC1pIGl0X0lUIC1mIElTTy04ODU5LTEgaXRfSVQKLWxvY2FsZWRlZiAtaSBqYV9KUCAtZiBFVUMtSlAgamFfSlAuZXVjanAKLWxvY2FsZWRlZiAtaSBzZV9OTyAtZiBVVEYtOCBzZV9OTy5VVEYtOAotbG9jYWxlZGVmIC1pIHRhX0lOIC1mIFVURi04IHRhX0lOCi1sb2NhbGVkZWYgLWkgZXNfRVMgLWYgSVNPLTg4NTktMSBlc19FUwotbG9jYWxlZGVmIC1pIGZyX0ZSQGV1cm8gLWYgSVNPLTg4NTktMSBmcl9GUkBldXJvCi1sb2NhbGVkZWYgLWkgaXNfSVMgLWYgVVRGLTggaXNfSVMuVVRGLTgKLWxvY2FsZWRlZiAtaSB6aF9UVyAtZiBCSUc1IHpoX1RXLkJJRzUKLWxvY2FsZWRlZiAtaSBlbl9VUyAtZiBJU08tODg1OS0xNSBlbl9VUy5JU08tODg1OS0xNQotCi1lY2hvICIiCi1lY2hvICJJbnN0YWxsYXRpb24gZG9uZSEiCi1lY2hvICIiCi0KLSMgU3RlcCA0OiBTdGFydCBMU0IgdGVzdAotaWYgWyAteCAke0xTQl9TVEFSVF9DTUR9IF0KLXRoZW4KLQkke0xTQl9TVEFSVF9DTUR9Ci1maQotCi1lY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi1lY2hvICJSdW4gYWxsIHRoZSBjZXJ0aWZpY2F0aW9uIHZlcnNpb24gb2YgTFNCIFRlc3RzIgotZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotCi1MU0JfRElTVF9DSEVDS0VSPSIvb3B0L2xzYi90ZXN0L21hbmFnZXIvdXRpbHMvZGlzdC1jaGVja2VyLnBsIgotU0VTU0lPTj0iJHtXT1JLX0RJUn0vc2Vzc2lvbiIKLWlmIFsgISAtZSAke1NFU1NJT059IF0KLXRoZW4KLQllY2hvICJFcnJvcjogQ291bGQgbm90IGZpbmQgc2Vzc2lvbiBmaWxlLiIKLQllY2hvICJZb3UgbXVzdCBydW4gTFNCIHRlc3QgZnJvbSB3ZWJicm93ZXIuIgotCWV4aXQgMQotZmkKLQotaWYgWyAteCAke0xTQl9ESVNUX0NIRUNLRVJ9IF0KLXRoZW4KLQkke0xTQl9ESVNUX0NIRUNLRVJ9IC12MiAtZiAke1NFU1NJT059Ci0JY2hlY2sKLWZpCi0KLWVjaG8gIiIKLWVjaG8gIkxTQiB0ZXN0IGNvbXBsZXRlLiBQbGVhc2UgY2hlY2sgdGhlIGxvZyBmaWxlIGluIC92YXIvb3B0L2xzYi90ZXN0L21hbmFnZXIvcmVzdWx0cy8iCi1lY2hvICIiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdC9wYWNrYWdlc19saXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTZjMTE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3BhY2thZ2VzX2xpc3QKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1MU0JfUkVMRUFTRT0icmVsZWFzZWQtNS4wIgotTFNCX0FSQ0g9ImxzYmFyY2giCi0KLUJBU0VfUEFDS0FHRVNfTElTVD0ibHNiLXNldHVwLTUuMC4wLTIubm9hcmNoLnJwbSIKLQotUlVOVElNRV9CQVNFX1BBQ0tBR0VTX0xJU1Q9ImxzYi1kaXN0LWNoZWNrZXItNS4wLjAuMS0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGV0My1saXRlLTMuNy0yNy5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGV0My1saXRlLWRldmVsLTMuNy0yNy5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2IteHZmYi0xLjIuMC0yMi50YXJnZXRhcmNoLnJwbSBcCi0JIgotCi1SVU5USU1FX1BBQ0tBR0VTX0xJU1Q9ImxzYi1jbWRjaGstNS4wLjMtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLWxpYmNoay01LjAuMy0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItcW0tMi4yLTEubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRhc2stZGlzdC10ZXN0a2l0LTUuMC4wLTIubm9hcmNoLnJwbSBcCi0JbHNiLXRlc3QtY29yZS01LjAuMS0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1jcHAtdDJjLTUuMC4wLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LWRlc2t0b3AtNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtZGVza3RvcC10MmMtNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtbGlic3RkY3BwLTQuMS4wLTIyLmxzYjEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LW9sdmVyLWNvcmUtNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXRlc3QtcGVybC01LjAuMi0xLm5vYXJjaC5ycG0gXAotCWxzYi10ZXN0LXByaW50aW5nLTUuMC4xLTEudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LXB5dGhvbi01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1xdDQtYXpvdi01LjAuMC0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC14dHM1LTUuMS41LTQ3LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10ZXN0LWFsc2EtdDJjLTUuMS45MS00LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC1jb3JlLXQyYy01LjAuMS0xLnRhcmdldGFyY2gucnBtIFwKLQlsc2ItdGVzdC14bWwyLWF6b3YtNS4wLjAtMS50YXJnZXRhcmNoLnJwbSBcCi0JIgotCi1BUFBfUEFDS0FHRVNfTElTVD0ibHNiLXB5dGhvbi0yLjQuNi0xMC5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItYXBhY2hlLTIuMi4xOS01LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi10Y2wtOC41LjktMjEubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLWV4cGVjdC01LjQzLjAtMjEubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLWdyb2ZmLTEuMjAuMS05LmxzYjUudGFyZ2V0YXJjaC5ycG0gXAotCWxzYi1yYXB0b3ItMS40LjIxLTQubHNiNS50YXJnZXRhcmNoLnJwbSBcCi0JbHNiLXhwZGYtMS4wMS0xNy5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2Itc2FtYmEtMy41LjktNS5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQlsc2ItcnN5bmMtMy4wLjgtMy5sc2I1LnRhcmdldGFyY2gucnBtIFwKLQkiCi0KLUFQUF9URVNURklMRVNfTElTVD0iZXhwZWN0LXRlc3RzLnRhciBcCi0JdGNsLXRlc3RzLnRhciBcCi0JcmFwdG9yLXRlc3RzLnRhciBcCi0JdGVzdDEucGRmIFwKLQl0ZXN0Mi5wZGYgXAotCSIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2J0ZXN0L3Nlc3Npb24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkNDdlNDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3Qvc2Vzc2lvbgorKysgL2Rldi9udWxsCkBAIC0xLDE3NiArMCwwIEBACi1bR0VORVJBTF0KLVZFUkJPU0VfTEVWRUw6ICAgMQotQVJDSElURUNUVVJFOiAgICB0YXJnZXRhcmNoCi1VU0VfSU5URVJORVQ6ICAgIDEKLVNURF9WRVJTSU9OOiAgICAgTFNCIDUuMAotU1REX1BST0ZJTEU6ICAgICBubwotW2NtZGNoa10KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bbGliY2hrXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVthbHNhLXQyY10KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bYWxzYS10MmN8bG9jYWx8Kl0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L2Fsc2EtdDJjCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvYWxzYS10MmMvcmVzdWx0cwotCi1bY29yZV0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bY29yZXxsb2NhbHwqXQotQVVUT1JFUExZX1BST1ZJREVTX0JBU0g6IG4KLUFVVE9SRVBMWV9URVNUUlVOX1BBVEg6IC9ob21lL3RldC90ZXN0X3NldHMKLUFVVE9SRVBMWV9QRVJTT046IEF1dG9tYXRlZAotQVVUT1JFUExZX0tFUk5FTF9OQU1FOiB2bWxpbnV6Ci1BVVRPUkVQTFlfSU5TVEFMTF9MU0JQQU1fQ09ORjogeQotQVVUT1JFUExZX1BST1ZJREVTX0NfU0hFTEw6IG4KLUFVVE9SRVBMWV9PUkdBTklTQVRJT046IE4vQQotQVVUT1JFUExZX1NFVF9QQVNTX01JTl9EQVlTOiB5Ci1BVVRPUkVQTFlfUFJPVklERVNfU1lTVl9JTklUOiAKLUFVVE9SRVBMWV9JU05UQUxMX0RFVlM6IHkKLUFVVE9SRVBMWV9TVVBQT1JUU19GSUxFX0NNRDogeQotQVVUT1JFUExZX1RFU1RfU1lTVEVNOiBEaXN0cmlidXRpb24gQ2hlY2tlcgotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvY29yZS90ZXQvdGVzdF9zZXRzCi1BVVRPUkVQTFlfU1VQUE9SVFNfTkxTOiBuCi1BVVRPUkVQTFlfU1VQUE9SVFNfUFJPQ0VTU19BQ0NPVU5USU5HOiBuCi1BVVRPUkVQTFlfUEFUSF9UT19SQy5EOiAKLUFVVE9SRVBMWV9BTExPV1NfTUFLRURFVjogbgotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L2NvcmUvdGV0L3Rlc3Rfc2V0cy9yZXN1bHRzCi0KLVtjb3JlLXQyY10KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bY29yZS10MmN8bG9jYWx8Kl0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L2NvcmUtdDJjCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvY29yZS10MmMvcmVzdWx0cwotCi1bY3BwLXQyY10KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bY3BwLXQyY3xsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvY3BwLXQyYwotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L2NwcC10MmMvcmVzdWx0cwotCi1bZGVza3RvcF0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bZGVza3RvcHxsb2NhbHwqXQotQVVUT1JFUExZX0RFU0tUT1BfRU5WSVJPTk1FTlQ6IFtkZWZhdWx0XQotQVVUT1JFUExZX1BFUlNPTjogQXV0b21hdGVkCi1BVVRPUkVQTFlfWF9DTElFTlRfSE9TVE5BTUU6IAotQVVUT1JFUExZX1RFU1RfU1lTVEVNOiBEaXN0cmlidXRpb24gQ2hlY2tlcgotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvZGVza3RvcAotQVVUT1JFUExZX1gxMV9GT05UX1BBVEg6IFtkZWZhdWx0XQotQVVUT1JFUExZX1NIT1dfU1VNTUFSWV9SRVBPUlQ6IAotQVVUT1JFUExZX09SR0FOSVNBVElPTjogTi9BCi1BVVRPUkVQTFlfWFZGQl9ESVNQTEFZOiBbZGVmYXVsdF0KLQotW2Rlc2t0b3AtdDJjXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtkZXNrdG9wLXQyY3xsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3QvZGVza3RvcC10MmMKLUFVVE9SRVBMWV9SRVNVTFRTX0RJUjogL29wdC9sc2IvdGVzdC9kZXNrdG9wLXQyYy9yZXN1bHRzCi0KLVtsaWJzdGRjcHBdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW2xpYnN0ZGNwcHxsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RfU1lTVEVNOiBEaXN0cmlidXRpb24gQ2hlY2tlcgotQVVUT1JFUExZX1BFUlNPTjogQXV0b21hdGVkCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9saWJzdGRjcHBfNC4xLjAKLUFVVE9SRVBMWV9PUkdBTklTQVRJT046IE4vQQotQVVUT1JFUExZX0dOVV9UUklQTEVUOiAKLQotW29sdmVyXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtvbHZlcnxsb2NhbHwqXQotQVVUT1JFUExZX1RFU1RTVUlURV9ESVI6IC9vcHQvbHNiL3Rlc3Qvb2x2ZXItY29yZQotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvdmFyL29wdC9sc2IvdGVzdC9vbHZlci1jb3JlCi0KLVtwZXJsXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtwZXJsfGxvY2FsfCpdCi1BVVRPUkVQTFlfVEVTVFNVSVRFX0RJUjogL29wdC9sc2IvdGVzdC9wZXJsCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcGVybC9yZXN1bHRzCi0KLVtwcmludGluZ10KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bcHJpbnRpbmd8bG9jYWx8Kl0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3ByaW50aW5nCi1BVVRPUkVQTFlfUkVTVUxUU19ESVI6IC9vcHQvbHNiL3Rlc3QvcHJpbnRpbmcvcmVzdWx0cwotCi1bcHl0aG9uXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtweXRob258bG9jYWx8Kl0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3B5dGhvbgotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L3B5dGhvbi9yZXN1bHRzCi0KLVt4bWwyLWF6b3ZdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3h0czVdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3h0czV8bG9jYWx8Kl0KLUFVVE9SRVBMWV9YVF9GT05UUEFUSF9HT09EOiBbZGVmYXVsdF0KLUFVVE9SRVBMWV9URVNUU1VJVEVfRElSOiAvb3B0L2xzYi90ZXN0L3h0czUKLUFVVE9SRVBMWV9YVkZCX0RJU1BMQVk6IFtkZWZhdWx0XQotQVVUT1JFUExZX1JFU1VMVFNfRElSOiAvb3B0L2xzYi90ZXN0L3h0czUveHRzNS9yZXN1bHRzCi1BVVRPUkVQTFlfWFRfRk9OVFBBVEg6IFtkZWZhdWx0XQotQVVUT1JFUExZX1hfQ0xJRU5UX0hPU1ROQU1FOiAKLQotW2FwYWNoZV0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bZXhwZWN0XQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtncm9mZl0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bcmFwdG9yXQotUlVOOiAxCi1WRVJTSU9OOiBsb2NhbHwqCi0KLVtyc3luY10KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1bc2FtYmFdCi1SVU46IDEKLVZFUlNJT046IGxvY2FsfCoKLQotW3RjbF0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCi1beHBkZl0KLVJVTjogMQotVkVSU0lPTjogbG9jYWx8KgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNidGVzdF8xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MGMwMjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYnRlc3RfMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBdXRvbWF0ZXMgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSB0ZXN0cyIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL0xTQkluaXRTY3JpcHRzIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiIKLVBSID0gInIzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MU0JfVGVzdC5zaDtiZWdpbmxpbmU9MztlbmRsaW5lPTE2O21kNT03MDYzYmI1NGIwNDcxOWRmMDcxNmI1MTM0NDdmNGZjMCIKLQotU1JDX1VSSSA9ICJmaWxlOi8vTFNCX1Rlc3Quc2ggXAotCQkgICBmaWxlOi8vcGFja2FnZXNfbGlzdCBcCi0JCSAgIGZpbGU6Ly9zZXNzaW9uIFwKLQkJICAgIgotUkRFUEVORFNfJHtQTn0gPSAibHNiIHJwbSIKLQotUyA9ICIke1dPUktESVJ9IgotCi1kb19pbnN0YWxsKCkgewotCWluc3RhbGwgLWQgICR7RH0vb3B0L2xzYi10ZXN0Ci0JaW5zdGFsbCAtbSAwNzU1ICR7U30vTFNCX1Rlc3Quc2ggJHtEfS9vcHQvbHNiLXRlc3QvTFNCX1Rlc3Quc2gKLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9wYWNrYWdlc19saXN0ICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXNzaW9uICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTU4NiIgXSB8fCBbICIke1RBUkdFVF9BUkNIfSIgPSAiaTY4NiIgXTt0aGVuCi0JCXNlZCAtaSAtZSAncy9sc2JhcmNoL2lhMzIvZycgLWUgJ3MvdGFyZ2V0YXJjaC9pNDg2L2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKLQkJc2VkIC1pIC1lICdzL3RhcmdldGFyY2gveDg2L2cnICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KLQlmaQotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIF07dGhlbgotCQlzZWQgLWkgLWUgJ3MvbHNiYXJjaC9hbWQ2NC9nJyAtZSAncy90YXJnZXRhcmNoL3g4Nl82NC9nJyAke0R9L29wdC9sc2ItdGVzdC9wYWNrYWdlc19saXN0Ci0JCXNlZCAtaSAtZSAncy90YXJnZXRhcmNoL3g4Ni02NC9nJyAke0R9L29wdC9sc2ItdGVzdC9zZXNzaW9uCi0JZmkKLQlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTt0aGVuCi0JCXNlZCAtaSAtZSAncy9sc2JhcmNoL3BwYzMyL2cnIC1lICdzL3RhcmdldGFyY2gvcHBjL2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKLQkJc2VkIC1pIC1lICdzL3RhcmdldGFyY2gvUFBDMzIvZycgJHtEfS9vcHQvbHNiLXRlc3Qvc2Vzc2lvbgotCWZpCi0KLQkjIEZvciBhIHBwYzY0IHRhcmdldC4gdGhlIGRlZmF1bHQgdXNlcnNwYWNlIGlzIDMyYi4KLQkjIFRoZXJlZm9yZSwgb25seSBjaGFuZ2UgdGhlIGxzYmFyY2ggYW5kIHRhcmdldGFyY2gKLQkjIGluIHRoZSBwYWNrYWdlX2xpc3Qgd2hlbiBNTElCPWxpYjY0IGlzIGJlaW5nIHVzZWQuCi0JIyBPdGhlcndpc2UsIGJ5IGRlZmF1bHQsIHRoZSBwcGMzMiBMU0IgcGFja2FnZXMKLQkjIHdpbGwgYmUgZG93bmxvYWRlZCBieSBMU0JfVGVzdC5zaAotCWlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07dGhlbgotCQlpZiBbICIke1BOfSIgIT0gIiR7QlBOfSIgXTt0aGVuCi0JCQlzZWQgLWkgLWUgJ3MvbHNiYXJjaC9wcGM2NC9nJyAtZSAncy90YXJnZXRhcmNoL3BwYzY0L2cnICR7RH0vb3B0L2xzYi10ZXN0L3BhY2thZ2VzX2xpc3QKLQkJCXNlZCAtaSAtZSAncy90YXJnZXRhcmNoL1BQQzY0L2cnICR7RH0vb3B0L2xzYi10ZXN0L3Nlc3Npb24KLQkJZmkKLQlmaQotfQotCi1GSUxFU18ke1BOfSArPSAiL29wdC9sc2ItdGVzdC8qIFwKLSAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS1tZWx0ZG93bi5jLUZpeC1rZXJuZWwtc3ltYm9sLWZpbmRpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRmNmY1YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCkBAIC0wLDAgKzEsODEgQEAKK0Zyb20gZmJlZGE4MmY0NDBhMDA5OGJlNDJkZDY2OGNiYzQ3MjEyYTg2YWI0OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CitEYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE2OjI3OjI0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGN2ZS9tZWx0ZG93bi5jOiBGaXgga2VybmVsIHN5bWJvbCBmaW5kaW5nCisKK21lbHRkb3duIGNhc2UgZmFpbHMgYXMgYmVsb3cuCitzYWZlX2ZpbGVfb3BzLmM6MjE5OiBCUk9LOiBFeHBlY3RlZCAzIGNvbnZlcnNpb25zIGdvdCAyIGF0IG1lbHRkb3duLmM6MjcyCisKK2ZpbmRfa2VybmVsX3N5bWJvbCBpcyBkZWZpbmVkIHRvIHRyeSB0d2ljZSB3aXRoIGVhY2ggb2YgL3Byb2Mva2FsbHN5bXMgYW5kCisvYm9vdC9TeXN0ZW0ubWFwLSVzLiBDdXJyZW50bHkgaWYgdGhlIHN5bWJvbCBpcyBub3QgZm91bmQgaW4gL3Byb2Mva2FsbHN5bXMsCit3aGVuIGtlcm5lbCBvcHRpb24gQ09ORklHX0tBTExTWU1TX0FMTCBpcyBkaXNhYmxlZCwgaXQgd291bGQgc3RvcCB0aGUgY2FzZQoraW1tZWRpYXRlbHkgZHVlIHRvIFNBRkVfRklMRV9MSU5FU19TQ0FORi4KKworVGhpcyBwYXRjaCB0dXJucyB0byB1c2UgRklMRV9MSU5FU19TQ0FORiB0byBnaXZlIGZpbmRfa2VybmVsX3N5bWJvbCBzZWNvbmQKK2NoYW5jZS4KKworW2pzdGFuY2VrXSBGaXggYWxzbyBjb25kaXRpb24gaW50cm9kdWNlZCBpbiA3NzA5ZDJhZTkyZWEsIGV2ZW4gaWYKKyAgICAgICAgICAgL3Byb2Mva2FsbHN5bXMgaXMgZGlzYWJsZWQsIHdlIHN0aWxsIHdhbnQgdG8gdHJ5IFN5c3RlbS5tYXAuCisKK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2NvbW1pdC9jMjA0OWI1Yzg3NGJjMDcxZjgxODViZmZiNWZkN2RjYjA0MmQ5ZWM4XQorCitSZW1vdmUgdGhlIGh1bmsgZm9yIHVwc3RyZWFtIDc3MDlkMmFlOTJlYSAoImN2ZS9tZWx0ZG93bi5jOiBhYm9ydCB0aGUgdGVzdCBpZiBrYWxsc3ltcyB3YXMgbm90IGVuYWJsZWQiKQordGhhdCBoYXMgYmVlbiBjb3ZlcmVkIGJ5IHRoaXMgcGF0Y2guCisKK1NpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CistLS0KKyB0ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMgfCAxMyArKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMgYi90ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMKK2luZGV4IGE1M2VhOWIuLjIyNjUxYTYgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMvY3ZlL21lbHRkb3duLmMKKysrKyBiL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYworQEAgLTI2Nyw5ICsyNjcsMTUgQEAgZmluZF9zeW1ib2xfaW5fZmlsZShjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgY2hhciAqc3ltbmFtZSkKKyAJaW50IHJldCwgcmVhZDsKKyAJY2hhciBmbXRbc3RybGVuKHN5bW5hbWUpICsgNjRdOworIAorKwl0c3RfcmVzKFRJTkZPLCAiTG9va2luZyBmb3IgJXMgaW4gJXMiLCBzeW1uYW1lLCBmaWxlbmFtZSk7CisrCWlmIChhY2Nlc3MoZmlsZW5hbWUsIEZfT0spID09IC0xKSB7CisrCQl0c3RfcmVzKFRJTkZPLCAiJXMgbm90IGF2YWlsYWJsZSIsIGZpbGVuYW1lKTsKKysJCXJldHVybiAwOworKwl9CisrCisgCXNwcmludGYoZm10LCAiJSVseCAlJWMgJXMlJWMiLCBzeW1uYW1lKTsKKyAKKy0JcmV0ID0gU0FGRV9GSUxFX0xJTkVTX1NDQU5GKGZpbGVuYW1lLCBmbXQsICZhZGRyLCAmdHlwZSwgJnJlYWQpOworKwlyZXQgPSBGSUxFX0xJTkVTX1NDQU5GKGZpbGVuYW1lLCBmbXQsICZhZGRyLCAmdHlwZSwgJnJlYWQpOworIAlpZiAocmV0KQorIAkJcmV0dXJuIDA7CisgCitAQCAtMjg3LDEzICsyOTMsMTEgQEAgZmluZF9rZXJuZWxfc3ltYm9sKGNvbnN0IGNoYXIgKm5hbWUpCisgCWlmIChhZGRyKQorIAkJcmV0dXJuIGFkZHI7CisgCistCXRzdF9yZXMoVElORk8sICJub3QgZm91bmQgJyVzJyBpbiAvcHJvYy9rYWxsc3ltcyIsIG5hbWUpOworIAlpZiAodW5hbWUoJnV0c25hbWUpIDwgMCkKKyAJCXRzdF9icmsoVEJST0sgfCBURVJSTk8sICJ1bmFtZSIpOworIAorIAlzcHJpbnRmKHN5c3RlbW1hcCwgIi9ib290L1N5c3RlbS5tYXAtJXMiLCB1dHNuYW1lLnJlbGVhc2UpOworIAorLQl0c3RfcmVzKFRJTkZPLCAibG9va2luZyBpbiAnJXMnXG4iLCBzeXN0ZW1tYXApOworIAlhZGRyID0gZmluZF9zeW1ib2xfaW5fZmlsZShzeXN0ZW1tYXAsIG5hbWUpOworIAlyZXR1cm4gYWRkcjsKKyB9CitAQCAtMzA4LDYgKzMxMiw5IEBAIHN0YXRpYyB2b2lkIHNldHVwKHZvaWQpCisgCXNhdmVkX2NtZGxpbmVfYWRkciA9IGZpbmRfa2VybmVsX3N5bWJvbCgic2F2ZWRfY29tbWFuZF9saW5lIik7CisgCXRzdF9yZXMoVElORk8sICImc2F2ZWRfY29tbWFuZF9saW5lID09IDB4JWx4Iiwgc2F2ZWRfY21kbGluZV9hZGRyKTsKKyAKKysJaWYgKCFzYXZlZF9jbWRsaW5lX2FkZHIpCisrCQl0c3RfYnJrKFRDT05GLCAic2F2ZWRfY29tbWFuZF9saW5lIG5vdCBmb3VuZCIpOworKworIAlzcGVjX2ZkID0gU0FGRV9PUEVOKCIvcHJvYy9jbWRsaW5lIiwgT19SRE9OTFkpOworIAorIAltZW1zZXQodGFyZ2V0X2FycmF5LCAxLCBzaXplb2YodGFyZ2V0X2FycmF5KSk7CistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU1NmMwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gYTUwNDY2MjVlYWVlZDJkM2ZiYTQ1NmMzYmE4NGM2YzE0MWMyYWQ3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI5IEF1ZyAyMDE5IDIxOjA5OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGwvcnRfc2lndGltZWR3YWl0MDE6IEZpeCB3cm9uZyBzaWdzZXQgbGVuZ3RoIGZvciBNSVBTCisKK3J0X3NpZ3RpbWVkd2FpdDAxIGZhaWxzIGFzIGZvbGxvdyBvbiBNSVBTIGFyY2hlcworcnRfc2lndGltZWR3YWl0MDEgICAgMSAgVEZBSUwgIDogIC4uLi9zaWd3YWl0aW5mbzAxLmM6NTg6IHRlc3RfZW1wdHlfc2V0CisoLi4uL3NpZ3dhaXRpbmZvMDEuYzogMTQ4KTogVW5leHBlY3RlZCBmYWlsdXJlOgorVEVTVF9FUlJOTz1FSU5WQUwoMjIpOiBJbnZhbGlkIGFyZ3VtZW50CisKK0FzIHRoaXMgY2FzZSBwdXJwb3NlbHkgYnlwYXNzZXMgZ2xpYmMsIGl0IHNob3VsZCBhbGlnbiB3aXRoIHRoZSBzaXplIG9mIGtlcm5lbAorZGVmaW5pdGlvbiBvZiBzaWdzZXRfdCB3aGljaCBpcyBkaWZmZXJlbnQgZnJvbSBvdGhlciBhcmNoZXMuCitodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9hcmNoL21pcHMvaW5jbHVkZS91YXBpL2FzbS9zaWduYWwuaCNuMTUKKworVGhpcyBwYXRjaCB0dXJucyB0byB1c2UgX05TSUcgd2hpY2ggaXMgYWx3YXlzIHJpZ2h0IGZvciBhbGwgYXJjaGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFthNTA0NjYyNWVhZWVkMmQzZmJhNDU2YzNiYTg0YzZjMTQxYzJhZDdjXQorCitTdWdnZXN0ZWQtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorQWNrZWQtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgorQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgorU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorLS0tCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgfCA1ICsrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKK2luZGV4IDVhMzJjZTEuLjZhMzBjMjcgMTAwNjQ0CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMKK0BAIC0xMjgsOSArMTI4LDggQEAgc3RhdGljIGludCBteV9zaWd0aW1lZHdhaXQoY29uc3Qgc2lnc2V0X3QgKiBzZXQsIHNpZ2luZm9fdCAqIGluZm8sCisgc3RhdGljIGludCBteV9ydF9zaWd0aW1lZHdhaXQoY29uc3Qgc2lnc2V0X3QgKiBzZXQsIHNpZ2luZm9fdCAqIGluZm8sCisgCQkJICAgICAgc3RydWN0IHRpbWVzcGVjICp0aW1lb3V0KQorIHsKKy0KKy0JLyogVGhlIGxhc3QgYXJndW1lbnQgaXMgKG51bWJlcl9vZl9zaWduYWxzKS8oYml0c19wZXJfYnl0ZSksIHdoaWNoIGFyZSA2NCBhbmQgOCwgcmVzcC4gKi8KKy0JcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfcnRfc2lndGltZWR3YWl0LCBzZXQsIGluZm8sIHRpbWVvdXQsIDgpOworKwkvKiBfTlNJRyBpcyBhbHdheXMgdGhlIHJpZ2h0IG51bWJlciBvZiBiaXRzIG9mIHNpZ25hbCBtYXAgZm9yIGFsbCBhcmNoZXMgKi8KKysJcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfcnRfc2lndGltZWR3YWl0LCBzZXQsIGluZm8sIHRpbWVvdXQsIF9OU0lHLzgpOworIH0KKyAjZW5kaWYKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNGY4N2YzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2gKQEAgLTAsMCArMSwxNjEgQEAKK0Zyb20gMDQ2M2Q3OTM1NjY3NzJhNjA2MjU1OTU3OTE1Zjk5ZDE2NmQ1NzQwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOCBBdWcgMjAxOSAxODozMDoyMyArMDIwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0Y2FzZXM6IHVzZSBweXRob24zIGV2ZXJ5d2hlcmUgdG8gcnVuIHB5dGhvbiBzY3JpcHRzCisKK1RoZSBzY3JpcHRzIHRoZW1zZWx2ZXMgaGF2ZSAjIS91c3IvYmluL3B5dGhvbjMgaW4gdGhlbSwKK3NvIEkgdHJ1c3QgdGhleSBhcmUgYWxyZWFkeSBweTMtY29tcGF0aWJsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2ggIHwgIDIgKy0KKyAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoICAgICB8ICAyICstCisgLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaCAgICAgfCAgMiArLQorIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2ggICAgIHwgIDIgKy0KKyAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoICAgICB8ICAyICstCisgLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaCAgICAgfCAgMiArLQorIHRlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0ICAgICAgICAgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KKyB0ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaCAgICAgICB8ICA2ICsrKy0tLQorIDggZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAoraW5kZXggOGE3ZDBmNmUwLi40M2UyMzRkMDEgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoCitAQCAtMzUsNyArMzUsNyBAQCBlbHNlCisgCW1heF9zY2hlZF9zbXQ9MQorIGZpCisgCistdHN0X3Rlc3RfY21kcyBweXRob24KKyt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKKyAKKyBpZiAhIGdyZXAgc2NoZWRfZGVidWcgLXF3IC9wcm9jL2NtZGxpbmUgOyB0aGVuCisgCXRzdF9icmttIFRDT05GICJLZXJuZWwgY21kbGluZSBwYXJhbWV0ZXIgJ3NjaGVkX2RlYnVnJyBuZWVkZWQsIiBcCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaAoraW5kZXggZWM3ODMxOWUyLi45ZmVmY2JmNmUgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKK0BAIC0zNSw3ICszNSw3IEBAIGVsc2UKKyAJbWF4X3NjaGVkX3NtdD0xCisgZmkKKyAKKy10c3RfdGVzdF9jbWRzIHB5dGhvbgorK3RzdF90ZXN0X2NtZHMgcHl0aG9uMworIAorIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCisgbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2gKK2luZGV4IGUxMDdmY2UzNS4uMmNkMGVjYjA1IDEwMDc1NQorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2gKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCitAQCAtMzMsNyArMzMsNyBAQCBlbHNlCisgCW1heF9zY2hlZF9zbXQ9MQorIGZpCisgCistdHN0X3Rlc3RfY21kcyBweXRob24KKyt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKKyAKKyBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQorIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoCitpbmRleCA0OTAzNDRiYjMuLmFiM2E1ZDExZCAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAorQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQorIAltYXhfc2NoZWRfc210PTEKKyBmaQorIAorLXRzdF90ZXN0X2NtZHMgcHl0aG9uCisrdHN0X3Rlc3RfY21kcyBweXRob24zCisgCisgaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKKyBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaAoraW5kZXggOTc4Y2EwMmFlLi40MzhlZjYwM2YgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaAorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKK0BAIC0yNyw3ICsyNyw3IEBAIGV4cG9ydCBUU1RfVE9UQUw9MgorICMgQ2hlY2tpbmcgdGVzdCBlbnZpcm9ubWVudAorIGNoZWNrX2tlcnZlbF9hcmNoCisgCistdHN0X3Rlc3RfY21kcyBweXRob24KKyt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKKyAKKyBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQorIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoCitpbmRleCBhMGRhZDU4MzQuLjNhOWFmZGJmMiAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA1LnNoCisrKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAorQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQorIAltYXhfc2NoZWRfc210PTEKKyBmaQorIAorLXRzdF90ZXN0X2NtZHMgcHl0aG9uCisrdHN0X3Rlc3RfY21kcyBweXRob24zCisgCisgaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKKyBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdAoraW5kZXggZDJlMWI0YzQ5Li5hODU5ZTg1YmMgMTAwNzU1CistLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdAorKysrIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKK0BAIC0yMiw3ICsyMiw3IEBAIGRvCisgZG9uZQorIAorICMgIGNyZWF0aW9uIG9mIHVzZXJzIG9uIHRoZSByZW1vdGUgbWFjaGluZSAocmVtb3ZlZCBvbmx5IGF0IHRoZSBlbmQgb2YgdGhlIHRlc3RzKQorLXJzaCAtbiAkUkVNT1RFSE9TVCBweXRob24gJFBXRC9jcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKKytyc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uMyAkUFdEL2NyZWF0ZV91c2Vycy5weSAtdSA1MCAtZyA1MAorIAorIGVjaG8gIlN0YXJ0aW5nIEFDTCB0ZXN0aW5nIgorIAorQEAgLTUxLDE5ICs1MSwxOSBAQCBlY2hvICJCYXNpYyB0ZXN0cyBmaW5pc2hlZCIKKyAKKyBlY2hvICJMT05HIEFDTCBURVNUIgorIGVjaG8gImNyZWF0aW5nIG5lY2Vzc2FyeSB1c2VycyBhbmQgZ3JvdXBzIgorLXB5dGhvbiBjcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKKytweXRob24zIGNyZWF0ZV91c2Vycy5weSAtdSA1MCAtZyA1MAorIGVjaG8gImNyZWF0aW5nIG5lY2Vzc2FyeSB1c2VycyBhbmQgZ3JvdXBzIG9uIHRoZSByZW1vdGUgaG9zdCIKKyBta2RpciAkTkZTTU5URElSL2xhY2wtdGVzdGRpcgorLXB5dGhvbiB0ZXN0X2xvbmdfYWNsLnB5IC1sICRNQVhMRU5HVEggLXAgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKKytweXRob24zIHRlc3RfbG9uZ19hY2wucHkgLWwgJE1BWExFTkdUSCAtcCAkTkZTTU5URElSL2xhY2wtdGVzdGRpcgorIHJtIC1yZiAkTkZTTU5URElSL2xhY2wtdGVzdGRpcgorIGVjaG8gIkxvbmcgQUNMIHRlc3QgT0sgd2l0aCAkTUFYTEVOR1RIIGVudHJpZXMiCisgZWNobyAiQUNMIFNUUkVTU0lORyBURVNUIgorLXB5dGhvbiBzZXRhY2xfc3RyZXNzLnB5IC1uIDEwMCAtdSAkVVNFUl9OQiAtZyAkR1JQX05CIC1mICRGSUxFX05CIC1wICRORlNNTlRESVIKKytweXRob24zIHNldGFjbF9zdHJlc3MucHkgLW4gMTAwIC11ICRVU0VSX05CIC1nICRHUlBfTkIgLWYgJEZJTEVfTkIgLXAgJE5GU01OVERJUgorIAorICMgcmVtb3ZlIGxvY2FsIGFuIHJlbW90ZSB1c2VycworLXB5dGhvbiBjbGVhbnVzZXJzLnB5CistcHl0aG9uIGNsZWFuZ3JvdXBzLnB5CistcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbiAkUFdEL2NsZWFudXNlcnMucHkKKytweXRob24zIGNsZWFudXNlcnMucHkKKytweXRob24zIGNsZWFuZ3JvdXBzLnB5CisrcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbjMgJFBXRC9jbGVhbnVzZXJzLnB5CisgCisgZWNobyAiVGVzdCBPSyIKKyAKK2RpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaCBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoCitpbmRleCBkMTMwMjYwNDkuLjI3Nzk4ODU2OCAxMDA3NTUKKy0tLSBhL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL3J1bl9hdXRvLnNoCisrKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAorQEAgLTE1LDE1ICsxNSwxNSBAQCAkU0NSSVBUU19ESVIvcnVuX2NfZmlsZXMuc2ggJHByb2ZpbGUgdGVzdHBpLTAKKyAKKyBleHBvcnQgTE9HX0ZJTEU9IiRMT0dfRElSLyRMT0dfRk9STUFULXRlc3RwaS0xLmxvZyIKKyAkU0NSSVBUU19ESVIvcnVuX2NfZmlsZXMuc2ggJHByb2ZpbGUgdGVzdHBpLTEKKy1QWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCisrUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbjMgcGFyc2UtdGVzdHBpMS5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKKyAKKyBleHBvcnQgTE9HX0ZJTEU9IiRMT0dfRElSLyRMT0dfRk9STUFULXRlc3RwaS0yLmxvZyIKKyAkU0NSSVBUU19ESVIvcnVuX2NfZmlsZXMuc2ggJHByb2ZpbGUgdGVzdHBpLTIKKy1QWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uIHBhcnNlLXRlc3RwaTIucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCisrUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbjMgcGFyc2UtdGVzdHBpMi5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKKyAKKyBleHBvcnQgTE9HX0ZJTEU9IiRMT0dfRElSLyRMT0dfRk9STUFULXRlc3RwaS00LmxvZyIKKyAkU0NSSVBUU19ESVIvcnVuX2NfZmlsZXMuc2ggJHByb2ZpbGUgdGVzdHBpLTQKKy1QWVRIT05QQVRIPS4uLy4uLyAgcHl0aG9uIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCisrUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbjMgcGFyc2UtdGVzdHBpMS5weSAkTE9HX0ZJTEUgMj4mMSB8IHRlZSAtYSAkTE9HX0ZJTEUKKyAKKyAKKyBleHBvcnQgTE9HX0ZJTEU9IiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxOTA1MTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiCmluZGV4IGIwZTJmOTYuLmU5YTU4OGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHBfMjAxOTA1MTcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYgpAQCAtNDUsNiArNDUsOSBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMi1jaGVjay1mb3ItUkVTX1VTRV9JTkVUNi1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzdGF0MDItRml4LUVGQVVMVC1pbi0zMmJpdC1jb21wYXRpYmlsaXR5LW1vZGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCkBAIC05Niw3ICs5OSw3IEBACiAgICAgbGliYWlvIFwKICAgICBsb2dyb3RhdGUgXAogICAgIHBlcmwgXAotICAgIHB5dGhvbi1jb3JlIFwKKyAgICBweXRob24zLWNvcmUgXAogICAgIHByb2NwcyBcCiAgICAgcXVvdGEgXAogICAgIHVuemlwIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNi4xLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC43LmJiCmluZGV4IGVjOWViODMuLjA4M2IyMzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjYuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOC43LmJiCkBAIC03LDggKzcsOCBAQAogU1JDX1VSSSA9ICIke1NBVkFOTkFIX05PTkdOVV9NSVJST1J9L21hbi1kYi9tYW4tZGItJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzk5X21hbmRiIFwKICAgICAgICAgICAgZmlsZTovL21hbl9kYi5jb25mLWF2b2lkLW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMmU4MmZlMTEyN2Y0Y2E5NWRlNzEwMDE2OGE5MjdkMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzc3YTJiYjlkYmYwNmY3MjQxN2E2ZjYzMDYzZTIwNDg4OGEyMmE1MDIwZmY3NzMzNGQzMDRkNTVmODEzYTI4IgorU1JDX1VSSVttZDVzdW1dID0gImVjMGIyM2M4MzE0YTE2NTRjNGQwNTliMmMxOGNlNDNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5Y2Q1YmI5OTYzMDVkMDhiZmU5ZTExMTRlZGMzMGI0Yzk3YmU4MDcwOTNiODhhZjgwMzNlZDFjZjliZWIzMjYiCiAKIERFUEVORFMgPSAibGlicGlwZWxpbmUgZ2RibSBncm9mZi1uYXRpdmUgYmFzZS1wYXNzd2QiCiBSREVQRU5EU18ke1BOfSArPSAiYmFzZS1wYXNzd2QiCkBAIC0xOCw3ICsxOCw3IEBACiAKIGluaGVyaXQgZ2V0dGV4dCBwa2djb25maWcgYXV0b3Rvb2xzIHN5c3RlbWQKIAotRVhUUkFfT0VDT05GID0gIi0td2l0aC1wYWdlcj1sZXNzIgorRVhUUkFfT0VDT05GID0gIi0td2l0aC1wYWdlcj1sZXNzIC0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIgogRVhUUkFfQVVUT1JFQ09ORiArPSAiLUkgJHtTfS9nbC9tNCIKIAogZG9faW5zdGFsbCgpIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0tc2tpcC10ZXN0LTExc3BhcmUtbWlncmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvMDAwMS1tZGFkbS1za2lwLXRlc3QtMTFzcGFyZS1taWdyYXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ExOTJjYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzLzAwMDEtbWRhZG0tc2tpcC10ZXN0LTExc3BhcmUtbWlncmF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gMWI4M2FmYTdjMzEyMWY4MTllNzJlYTc0ODgzZjhiNmQ2MWQ2NTQ4ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDYgU2VwIDIwMTkgMTA6NTk6MDIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWRhZG06IHNraXAgdGVzdCAxMXNwYXJlLW1pZ3JhdGlvbgorCisxMXNwYXJlLW1pZ3JhdGlvbiBpcyBhIHRlc3Qgc2VyaWVzIHRvIGNoZWNrIG1kYWRtIE1vbml0b3IgbWlncmF0ZXMgc3BhcmVzCithY2NvcmRpbmcgdG8gcnVsZXMgaW4gL2V0Yy9tZGFkbS5jb25mIGRlZmluZWQgYnkgUE9MSUNZIGxpbmVzLgorCitbc25pcF0KK2ZvciBzY2FuIGluIG5vIHllczsgZG8KKyAgICAgICBmb3IgcGxhdGZvcm0gaW4gMS4yIGltc207IGRvCisgICAgICAgICAgICAgICB0cnkKKyAgICAgICBkb25lCitkb25lCitbc25pcF0KKworInRyeSIgaW5jbHVkZXMgbmVhciAyMCBzdWIgdGVzdGNhc2UsIHNvIHRoZXJlIGFyZSBuZWFybHkgODAgc3ViY2FzZXMgbmVlZCB0byBydW4sCitzbyBpdCB3aWxsIHRha2UgbG9uZyB0aW1lIHRoYW4gcHRlc3QtcnVubmVyIHRpbWVvdXQgbGltaXQsIHNraXAgaXQgYXMgd29ya2Fyb3VuZC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdCBiL3Rlc3QKK2luZGV4IDcxMWEzYzcuLjg4MGRkMWQgMTAwNzU1CistLS0gYS90ZXN0CisrKysgYi90ZXN0CitAQCAtMjcyLDYgKzI3Miw5IEBAIG1haW4oKSB7CisgCWVsc2UKKyAJCWZvciBzY3JpcHQgaW4gJHRlc3RkaXIvJHByZWZpeCAkdGVzdGRpci8kcHJlZml4Kltefl0KKyAJCWRvCisrCQkJaWYgWyAkc2NyaXB0ID09ICIkdGVzdGRpci8xMXNwYXJlLW1pZ3JhdGlvbiIgXTt0aGVuCisrCQkJCWNvbnRpbnVlCisrCQkJZmkKKyAJCQlkb190ZXN0ICRzY3JpcHQKKyAJCWRvbmUKKyAJZmkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiCmluZGV4IDc0Yzk0ZjYuLjYzOTM4MmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIKQEAgLTIyLDcgKzIyLDkgQEAKIAkgICBmaWxlOi8vbWRhZG0uaW5pdCBcCiAJICAgZmlsZTovLzAwMDEtbWRhZG0tYWRkLW9wdGlvbi15LWZvci11c2Utc3lzbG9nLXRvLXJlY2l2ZS1ldmVudC1yZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX3N5c21hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kYWRtLXNraXAtdGVzdC0xMXNwYXJlLW1pZ3JhdGlvbi5wYXRjaCBcCiAgICAgICAgICAgICIKKwogU1JDX1VSSVttZDVzdW1dID0gIjUxYmYzNjUxYmQ3M2EwNmM0MTNhMmY5NjRmMjk5NTk4IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiNzY4ODg0MjkwOGQzNTgzYTcwNGQ0OTE5NTZmMzEzMjRjM2E1ZmM5ZjZhMDQ2NTNjYjc1ZDE5ZjE5MzRmNGEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtbHNiLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4MjFmZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1sc2IuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNDAgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTAgSW50ZWwgQ29ycG9yYXRpb24KLSMKLQotU1VNTUFSWSA9ICJMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIgotREVTQ1JJUFRJT04gPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc2F0aXNmeSB0aGUgTGludXggU3RhbmRhcmQgQmFzZSAoTFNCKSBzcGVjaWZpY2F0aW9uIgotUFIgPSAicjEwIgotCi1pbmhlcml0IHBhY2thZ2Vncm91cCBkaXN0cm9fZmVhdHVyZXNfY2hlY2sKLQotIyBUaGUgbGlieHQsIGxpYnh0c3QgYW5kIG90aGVycyByZXF1aXJlIHgxMSBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLSMgbGliZ2x1IG5lZWRzIHZpcnR1YWwvbGliZ2wsIHdoaWNoIHJlcXVpcmVzIG9wZW5nbCBpbiBESVNUUk9fRkVBVFVSRVMKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAib3BlbmdsIgotCi0jIGxpYnBhbSwgcGFtLXBsdWdpbi13aGVlbCByZXF1aXJlcyBwYW0gaW4gRElTVFJPX0ZFQVRVUkVTCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gInBhbSIKLQotIwotIyBXZSB3aWxsIHNraXAgcGFyc2luZyB0aGlzIHBhY2thZ2VnZW91cCBmb3Igbm9uLWdsaWJjIHN5c3RlbXMKLSMKLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpICE9ICJnbGliYyI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCi19Ci0KLVBBQ0tBR0VTID0gIlwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2IgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXN5cy1leHRlbmRlZCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtZGIgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXBlcmwgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXB5dGhvbiBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtdGNsIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItbWlzYyBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLWNvcmUgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1wZXJsIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItZGVza3RvcCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLXJ1bnRpbWUtYWRkIFwKLSAgICAiCi0KLQotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiID0gIlwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1zeXMtZXh0ZW5kZWQgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWRiIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1wZXJsIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1weXRob24gXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLXRjbCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLW1pc2MgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1jb3JlIFwKLSAgICBwYWNrYWdlZ3JvdXAtY29yZS1sc2ItcGVybCBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLXB5dGhvbiBcCi0gICAgcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgXAotICAgIHBhY2thZ2Vncm91cC1jb3JlLWxzYi1ydW50aW1lLWFkZCBcCi0gICAgIgotCi0KLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLXN5cy1leHRlbmRlZCA9ICJcCi0gICAgY3VybCBcCi0gICAgZGhjcC1jbGllbnQgXAotICAgIGhkcGFybSBcCi0gICAgbGlnaHR0cGQgXAotICAgIGxpYmFpbyBcCi0gICAgbHJ6c3ogXAotICAgIGx6byBcCi0gICAgbWMgXAotICAgIG1jLWZpc2ggXAotICAgIG1jLWhlbHBlcnMgXAotICAgIG1jLWhlbHBlcnMtcGVybCBcCi0gICAgbWRhZG0gXAotICAgIG1pbmljb20gXAotICAgIHBhcnRlZCBcCi0gICAgcXVvdGEgXAotICAgIHNjcmVlbiBcCi0gICAgc2V0c2VyaWFsIFwKLSAgICBzeXNzdGF0IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ3VkZXYtZXh0cmFjb25mJywgZCl9IFwKLSAgICB1bnppcCBcCi0gICAgd2F0Y2hkb2cgXAotICAgIHdnZXQgXAotICAgIHdoaWNoIFwKLSAgICB4aW5ldGQgXAotICAgIHppcCBcCi0gICAgIgotCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1kYiA9ICJcCi0gICAgZGIgXAotICAgIHNxbGl0ZTMgXAotICAgICIKLQotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtcGVybCA9ICJcCi0gICAgZ2RibSBcCi0gICAgcGVybCBcCi0gICAgemxpYiBcCi0gICAgIgotCi0KLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLXB5dGhvbiA9ICJcCi0gICAgZXhwYXQgXAotICAgIGdkYm0gXAotICAgIGdtcCBcCi0gICAgbmN1cnNlcyBcCi0gICAgb3BlbnNzbCBcCi0gICAgcHl0aG9uIFwKLSAgICByZWFkbGluZSBcCi0gICAgemlwIFwKLSAgICAiCi0KLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLXRjbCA9ICJcCi0gICAgdGNsIFwKLSAgICAiCi0KLSMgTWlzY2VsbGFuZW91cyBwYWNrYWdlcyByZXF1aXJlZCBieSBMU0IgKG9yIExTQiB0ZXN0cykKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1taXNjID0gIlwKLSAgICBjaGtjb25maWcgXAotICAgIGdldHRleHQgXAotICAgIGdldHRleHQtcnVudGltZSBcCi0gICAgZ3JvZmYgXAotICAgIGxzYmluaXRzY3JpcHRzIFwKLSAgICBsc2J0ZXN0IFwKLSAgICBsc29mIFwKLSAgICBzdHJhY2UgXAotICAgIGxpYnVzYjEgXAotICAgIHVzYnV0aWxzIFwKLSAgICBycG0gXAotICAgICIKLQotU1VNTUFSWV9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItY29yZSA9ICJMU0IgQ29yZSIKLURFU0NSSVBUSU9OX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1jb3JlID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHN1cHBvcnQgY29tbWFuZHMvbGlicmFyaWVzIFwKLSAgICBzcGVjaWZpZWQgaW4gdGhlIExTQiBDb3JlIHNwZWNpZmljYXRpb24iCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItY29yZSA9ICJcCi0gICAgYXQgXAotICAgIGJhc2ggXAotICAgIGJjIFwKLSAgICBiaW51dGlscyBcCi0gICAgYmludXRpbHMtc3ltbGlua3MgXAotICAgIGJ6aXAyIFwKLSAgICBjb3JldXRpbHMgXAotICAgIGNwaW8gXAotICAgIGNyb25pZSBcCi0gICAgY3VwcyBcCi0gICAgZGlmZnV0aWxzIFwKLSAgICBlZCBcCi0gICAgZ2xpYmMtdXRpbHMgXAotICAgIGVsZnV0aWxzIFwKLSAgICBmaWxlIFwKLSAgICBmaW5kdXRpbHMgXAotICAgIGZvbnRjb25maWctdXRpbHMgXAotICAgIGZvb21hdGljLWZpbHRlcnMgXAotICAgIGdhd2sgXAotICAgIGdob3N0c2NyaXB0IFwKLSAgICBncmVwIFwKLSAgICBnemlwIFwKLSAgICBsb2NhbGVkZWYgXAotICAgIGxzYiBcCi0gICAgbTQgXAotICAgIG1ha2UgXAotICAgIG1hbiBcCi0gICAgbWFuLXBhZ2VzIFwKLSAgICBtc210cCBcCi0gICAgcGF0Y2ggXAotICAgIHByb2NwcyBcCi0gICAgcHNtaXNjIFwKLSAgICBzZWQgXAotICAgIHNoYWRvdyBcCi0gICAgdGFyIFwKLSAgICB0aW1lIFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICB4ZGctdXRpbHMgXAotICAgIFwKLSAgICBnbGliYyBcCi0gICAgbGliZ2NjIFwKLSAgICBsaWJwYW0gXAotICAgIGxpYnhtbDIgXAotICAgIG5jdXJzZXMgXAotICAgIHpsaWIgXAotICAgIG5zcHIgXAotICAgIG5zcyBcCi0iCi0KLVNVTU1BUllfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXBlcmwgPSAiTFNCIFJ1bnRpbWUgTGFuZ3VhZ2VzIChQZXJsKSIKLURFU0NSSVBUSU9OX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1wZXJsID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHN1cHBvcnQgbGlicmFyaWVzIFwKLSAgICBzcGVjaWZpZWQgaW4gdGhlIExTQiBSdW50aW1lIGxhbmd1YWdlcyBzcGVjaWZpY2F0aW9uIChQZXJsIHBhcnRzKSIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1wZXJsID0gIlwKLSAgICBwZXJsIFwKLSAgICBwZXJsLW1vZHVsZXMgXAotICAgIHBlcmwtbWlzYyBcCi0gICAgcGVybC1wb2QgXAotICAgIHBlcmwtZGV2IFwKLSAgICBwZXJsLWRvYyBcCi0iCi0KLVNVTU1BUllfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXB5dGhvbiA9ICJMU0IgUnVudGltZSBMYW5ndWFnZXMgKFB5dGhvbikiCi1ERVNDUklQVElPTl9wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcHl0aG9uID0gIlBhY2thZ2VzIHJlcXVpcmVkIHRvIHN1cHBvcnQgbGlicmFyaWVzIFwKLSAgICBzcGVjaWZpZWQgaW4gdGhlIExTQiBSdW50aW1lIGxhbmd1YWdlcyBzcGVjaWZpY2F0aW9uIChQeXRob24gcGFydHMpIgotUkRFUEVORFNfcGFja2FnZWdyb3VwLWNvcmUtbHNiLXB5dGhvbiA9ICJcCi0gICAgcHl0aG9uIFwKLSAgICBweXRob24tbW9kdWxlcyBcCi0gICAgcHl0aG9uLW1pc2MgXAotIgotCi1TVU1NQVJZX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1kZXNrdG9wID0gIkxTQiBEZXNrdG9wIgotREVTQ1JJUFRJT05fcGFja2FnZWdyb3VwLWNvcmUtbHNiLWRlc2t0b3AgPSAiUGFja2FnZXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBsaWJyYXJpZXMgXAotICAgIHNwZWNpZmllZCBpbiB0aGUgTFNCIERlc2t0b3Agc3BlY2lmaWNhdGlvbiIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1jb3JlLWxzYi1kZXNrdG9wID0gIlwKLSAgICBsaWJ4dCBcCi0gICAgbGlieHhmODZ2bSBcCi0gICAgbGliZHJtIFwKLSAgICBsaWJnbHUgXAotICAgIGxpYnhpIFwKLSAgICBsaWJ4dHN0IFwKLSAgICBsaWJ4MTEtbG9jYWxlIFwKLSAgICB4b3JnLW1pbmltYWwtZm9udHMgXAotICAgIGdkay1waXhidWYtbG9hZGVyLWljbyBcCi0gICAgZ2RrLXBpeGJ1Zi1sb2FkZXItYm1wIFwKLSAgICBnZGstcGl4YnVmLWxvYWRlci1hbmkgXAotICAgIGdkay1waXhidWYteGxpYiBcCi0gICAgbGliZXJhdGlvbi1mb250cyBcCi0gICAgYWxzYS1saWIgXAotIgotCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtY29yZS1sc2ItcnVudGltZS1hZGQgPSAiXAotICAgIGxkZCBcCi0gICAgcGFtLXBsdWdpbi13aGVlbCBcCi0gICAgZTJmc3Byb2dzLW1rZTJmcyBcCi0gICAgbWtmb250ZGlyIFwKLSAgICBsaWJ1cmktcGVybCBcCi0gICAgbGlieG1sLXBhcnNlci1wZXJsIFwKLSAgICBsaWJ4bWwtcGVybCBcCi0gICAgbGlieG1sLXNheC1wZXJsIFwKLSAgICBnbGliYy1sb2NhbGVkYXRhcyBcCi0gICAgZ2xpYmMtZ2NvbnZzIFwKLSAgICBnbGliYy1jaGFybWFwcyBcCi0gICAgZ2xpYmMtYmluYXJpZXMgXAotICAgIGdsaWJjLWxvY2FsZWRhdGEtcG9zaXggXAotICAgIGdsaWJjLWV4dHJhLW5zcyBcCi0gICAgZ2xpYmMtcGNwcm9maWxlIFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCmluZGV4IDU5MmNiZjQuLjVhN2QyMTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwpAQCAtNCw3ICs0LDcgQEAKIExJQ0VOU0UgPSAiR1BMdjIrIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgogCi1TUkNfVVJJID0gImh0dHA6Ly9wYWdlc3BlcnNvLW9yYW5nZS5mci9zZWJhc3RpZW4uZ29kYXJkL3N5c3N0YXQtJHtQVn0udGFyLnh6IFwKK1NSQ19VUkkgPSAiaHR0cDovL3BhZ2VzcGVyc28tb3JhbmdlLmZyL3NlYmFzdGllbi5nb2RhcmQvJHtCUH0udGFyLnh6IFwKICAgICAgICAgICAgZmlsZTovLzk5X3N5c3N0YXQgXAogICAgICAgICAgICBmaWxlOi8vc3lzc3RhdC5zZXJ2aWNlIFwKICAgICAgICAgICAiCkBAIC0yOSw3ICsyOSw3IEBACiBTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IHNhX2xpYl9kaXI9JHtsaWJkaXJ9L3NhCisgICAgZXhwb3J0IHNhX2xpYl9kaXI9JHtsaWJleGVjZGlyfS9zYQogfQogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkYWYzZjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBzeXNzdGF0LmluYwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKLQotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGY5YjczZjYwYWJhNmZkNDlkZTM0NmJjMzg0OTAyYzMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTU0OThiZjgyNzU1YmE5ZmVkM2U3ZGY2MWZkMjZmOGY1MGRkM2U3YjNiMjI5YzczMTAyOWE0YzhhYjUxYTFhYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjZjhjMzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSBzeXNzdGF0LmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hMjNhNzRiM2Y0Y2FmOTYxNjIzMDc4OWQ5NDIxN2FjYiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDhlM2JiYjljODczZGQzNzBmNmQzMzY2NGUzMjY1NzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjc1MmYzYzQwNjE1M2E2ZmM0NDY0OTZmMTEwMjg3MjUwNWFjZTNmMDkzMWQ5NzVjMWQ2NjRjODFlYzA5ZjEyOSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCmluZGV4IGY5NjY0NTcuLjUwZWFlNzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mb182LjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpAQCAtNDIsNyArNDIsOSBAQAogCiB0ZXhfdGV4aW5mbyA9ICJ0ZXhtZi90ZXgvdGV4aW5mbyIKIAotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBtdWx0aWxpYl9zY3JpcHQKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vdGV4aTJhbnkiCiAKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ251bGliL200IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTguOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOC44LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTkuMC5iYgppbmRleCA0YWY0N2ZlLi43ZGE4ZTkwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTguOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMTkuMC5iYgpAQCAtOCw4ICs4LDggQEAKIAogUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgogCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmZWU0MDM5ODg0NDJmNDk3ZjNjMWRmZTdiMTI4ODY5YyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNiZmE4ODlkMjYwZTBkYmFiY2Y1Yjk5NjdmMmFhZTEyZWRjZDJkZGM5YWRjMzY1ZGU3YTVjYzg0MGMzMTFkMTUiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0ODNkMjkzZTczZTcyNTdjNmQ5ZmMxODU3OWIwZTFlYSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjgwNDliMDlhNGU3Mzc5MTFhYTY0N2U1MGFlZTNkMDZiNWRiN2FhOTAyNjA4Y2E0M2EwZGQxMGQ4M2UxZDY3ZjkiCiAKICMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LwogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8tZmJfMS4wLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2VnbGluZm8tZmJfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjY2RkMjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLWZiXzEuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1FR0xJTkZPX1BMQVRGT1JNID89ICJmYiIKLUVHTElORk9fQklOQVJZX05BTUUgPz0gImVnbGluZm8tZmIiCi0KLXJlcXVpcmUgZWdsaW5mby5pbmMKLQotU1VNTUFSWSArPSAiKEZyYW1lYnVmZmVyIHZlcnNpb24pIgotQ1hYRkxBR1MgKz0gIi1ETUVTQV9FR0xfTk9fWDExX0hFQURFUlM9MSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby13YXlsYW5kXzEuMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXdheWxhbmRfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3YTEzMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXdheWxhbmRfMS4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1FR0xJTkZPX1BMQVRGT1JNID89ICJ3YXlsYW5kIgotRUdMSU5GT19CSU5BUllfTkFNRSA/PSAiZWdsaW5mby13YXlsYW5kIgotCi1yZXF1aXJlIGVnbGluZm8uaW5jCi0KLURFUEVORFMgKz0gIndheWxhbmQiCi0KLWluaGVyaXQgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCi0KLSMgZGVwZW5kcyBvbiB3YXlsYW5kCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gIndheWxhbmQiCi0KLVNVTU1BUlkgKz0gIihXYXlsYW5kIHZlcnNpb24pIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXgxMV8xLjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby14MTFfMS4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YWI4ODAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLXgxMV8xLjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLUVHTElORk9fUExBVEZPUk0gPz0gIngxMSIKLUVHTElORk9fQklOQVJZX05BTUUgPz0gImVnbGluZm8teDExIgotCi1yZXF1aXJlIGVnbGluZm8uaW5jCi0KLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIgotCi1pbmhlcml0IGRpc3Ryb19mZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAieDExIgotCi1TVU1NQVJZICs9ICIoWDExIHZlcnNpb24pIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZWdsaW5mby5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkY2IwYzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9lZ2xpbmZvLmluYworKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiVXRpbGl0eSBmb3IgcHJpbnRpbmcgaW5mb3JtYXRpb24gRUdMIGFuZCBpdHMgY2xpZW50IEFQSXMgKE9wZW5HTCwgT3BlbkdMIEVTLCBPcGVuVkcpIgotU0VDVElPTiA9ICJncmFwaGljcyIKLUxJQ0VOU0UgPSAiWmxpYiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kdjEvZWdsaW5mbyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThkNGYzM2JjM2FkZDk3NmY3ZGZhZTg1ZGFiNjZmMDNjIgotCi1ERVBFTkRTID0gInZpcnR1YWwvZWdsIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZHYxL2VnbGluZm8uZ2l0O2JyYW5jaD1tYXN0ZXIgXAotICAgICAgICAgICBmaWxlOi8vd2FmIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLVNUQUdJTkdfSU5DRElSLXRvLXNlYXJjaHBhdGgtZm9yLWVnbC1oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ2hlY2stZm9yLWxpYmVnbC11c2luZy1wa2ctY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDUkVWID0gIjIyMzgxN2VlMzc5ODgwNDJkYjc4NzNjZmI1YjJlODk5ZGZlMzVjMTAiCi0KLUNWRV9QUk9EVUNUID0gImVnbGluZm8iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgd2FmIGRpc3Ryb19mZWF0dXJlc19jaGVjayBwa2djb25maWcKLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID89ICJvcGVuZ2wiCi0KLSMgQlNQIGxheWVycyBzaG91bGQgYWRkIC5iYmFwcGVuZCBmaWxlcyBmb3IgdGhlIC14MTEgYW5kIC1mYiAuYmIgcmVjaXBlcywgd2hpY2gKLSMgYXBwZW5kIHRoZSByZXNwZWN0aXZlIEVHTC9PcGVuR0xFUy9PcGVuVkcgbGlicmFyaWVzIHRvIERFUEVORFMgYW5kIHNldAotIyBFR0xfREVWSUNFIGFzIGFwcHJvcHJpYXRlLgotRUdMSU5GT19ERVZJQ0UgPz0gImdlbmVyaWMiCi0KLUVYVFJBX09FQ09ORiA9ICItLXBsYXRmb3JtPSR7RUdMSU5GT19QTEFURk9STX0gXAotICAgICAgICAgICAgICAgIC0tZGV2aWNlPSR7RUdMSU5GT19ERVZJQ0V9IFwKLSAgICAgICAgICAgICAgICAtLXN5c3Jvb3QgJHtTVEFHSU5HX0RJUl9UQVJHRVR9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS93YWYgJHtTfS93YWYKLX0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCW12ICR7RH0vJHtiaW5kaXJ9L2VnbGluZm8gJHtEfS8ke2JpbmRpcn0vJHtFR0xJTkZPX0JJTkFSWV9OQU1FfQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUFkZC1TVEFHSU5HX0lOQ0RJUi10by1zZWFyY2hwYXRoLWZvci1lZ2wtaGVhZGVycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvMDAwMS1BZGQtU1RBR0lOR19JTkNESVItdG8tc2VhcmNocGF0aC1mb3ItZWdsLWhlYWRlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMzI3ZWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy8wMDAxLUFkZC1TVEFHSU5HX0lOQ0RJUi10by1zZWFyY2hwYXRoLWZvci1lZ2wtaGVhZGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gOTlhNTc4NGQzM2FkNWUwZTZmYTAwMzM4ZDI3MzJjYmNjYWQ3NjYxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDEzIEphbiAyMDE2IDE2OjA4OjIyIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBTVEFHSU5HX0lOQ0RJUiB0byBzZWFyY2hwYXRoIGZvciBlZ2wgaGVhZGVycwotCi1iY21faG9zdC5oIGlzIGluIHN0YW5kYXJkIGluY2x1ZGVkaXIgaW4gc3lzcm9vdAotYWRkIHRoYXQgdG8gaGVhZGVyIHNlYXJjaCBwYXRocy4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotIHdzY3JpcHQgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3dzY3JpcHQgYi93c2NyaXB0Ci1pbmRleCAxOTVlMjQ3Li4wZjZlYzUzIDEwMDY0NAotLS0tIGEvd3NjcmlwdAotKysrIGIvd3NjcmlwdAotQEAgLTE3Nyw5ICsxNzcsMTAgQEAgZGVmIGNvbmZpZ3VyZV9yYXNwYmVycnlwaV9kZXZpY2UoY29uZiwgcGxhdGZvcm0pOgotIAljb25mLmNoZWNrX2N4eChtYW5kYXRvcnkgPSAxLCBsaWIgPSBbJ0dMRVN2MicsICdFR0wnLCAnYmNtX2hvc3QnXSwgdXNlbGliX3N0b3JlID0gJ0VHTCcpCi0gCWltcG9ydCBvcwotIAlzeXNyb290ID0gY29uZi5vcHRpb25zLnN5c3Jvb3QgKyBjb25mLm9wdGlvbnMucHJlZml4Ci0rICAgICAgICBzdGRfaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICdpbmNsdWRlJykKLSAJdmNvc19wdGhyZWFkX3BhdGggPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgJ2luY2x1ZGUvaW50ZXJmYWNlL3Zjb3MvcHRocmVhZHMnKQotIAl2Y21zX2hvc3RfcGF0aCA9IG9zLnBhdGguam9pbihzeXNyb290LCAnaW5jbHVkZS9pbnRlcmZhY2Uvdm1jc19ob3N0L2xpbnV4JykKLS0JaWYgbm90IGNvbmYuY2hlY2tfY3h4KG1hbmRhdG9yeSA9IDAsIGhlYWRlcl9uYW1lID0gWyd2Y29zX3BsYXRmb3JtX3R5cGVzLmgnLCAnRUdML2VnbC5oJywgJ2JjbV9ob3N0LmgnXSwgaW5jbHVkZXMgPSBbdmNvc19wdGhyZWFkX3BhdGgsIHZjbXNfaG9zdF9wYXRoXSwgdXNlbGliX3N0b3JlID0gJ0VHTCcpOgotKwlpZiBub3QgY29uZi5jaGVja19jeHgobWFuZGF0b3J5ID0gMCwgaGVhZGVyX25hbWUgPSBbJ3Zjb3NfcGxhdGZvcm1fdHlwZXMuaCcsICdFR0wvZWdsLmgnLCAnYmNtX2hvc3QuaCddLCBpbmNsdWRlcyA9IFt2Y29zX3B0aHJlYWRfcGF0aCwgdmNtc19ob3N0X3BhdGgsIHN0ZF9pbmNsdWRlX3BhdGhdLCB1c2VsaWJfc3RvcmUgPSAnRUdMJyk6Ci0gCQljb25mLmZhdGFsKCdDaGVjayBpZiAtLXByZWZpeCBhbmQgLS1zeXNyb290IGFyZSBzZXQgY29ycmVjdGx5LicpCi0gCWNvbmYuZW52WydXSVRIX0FQSVMnXSA9IFtdCi0gCWlmIGNoZWNrX2dsZXMyKGNvbmYpOgotLS0gCi0yLjE5LjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9lZ2xpbmZvL2ZpbGVzLzAwMDEtQ2hlY2stZm9yLWxpYmVnbC11c2luZy1wa2ctY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzJjODAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvMDAwMS1DaGVjay1mb3ItbGliZWdsLXVzaW5nLXBrZy1jb25maWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIDE3ZjVkMmY1NzQyMzZmOGMzNDU5ZjllZmFkZWYyZjBmNjIyMGE0ZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBdWcgMjAxOCAxNTo0Njo1MyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBDaGVjayBmb3IgbGliZWdsIHVzaW5nIHBrZy1jb25maWcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotW1JvbWFuOiBwYXRjaCBoYXMgYmVlbiByZWJhc2VkIHRvIDIyMzgxN2VlMzc5OCAoIkFkZCBXYXlsYW5kIHN1cHBvcnQiKQotIHRyaXZpYWwgbWVyZ2UgY29uZmxpY3RzIHJlc29sdmVkXQotU2lnbmVkLW9mZi1ieTogUm9tYW4gU3RyYXRpaWVua28gPHJvbWFuLnN0cmF0aWllbmtvQGdsb2JhbGxvZ2ljLmNvbT4KLS0tLQotIHdzY3JpcHQgfCA3ICstLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS93c2NyaXB0IGIvd3NjcmlwdAotaW5kZXggMGY2ZWM1My4uNDAxZjYyZSAxMDA2NDQKLS0tLSBhL3dzY3JpcHQKLSsrKyBiL3dzY3JpcHQKLUBAIC0xNzQsMTQgKzE3NCw5IEBAIGRlZiBjb25maWd1cmVfcmFzcGJlcnJ5cGlfZGV2aWNlKGNvbmYsIHBsYXRmb3JtKToKLSAJZWxzZToKLSAJCWNvbmYuZmF0YWwoJ1Vuc3VwcG9ydGVkIFJhc3BiZXJyeSBQaSBwbGF0Zm9ybSAiJXMiJyAlIHBsYXRmb3JtKQotIAkJcmV0dXJuCi0tCWNvbmYuY2hlY2tfY3h4KG1hbmRhdG9yeSA9IDEsIGxpYiA9IFsnR0xFU3YyJywgJ0VHTCcsICdiY21faG9zdCddLCB1c2VsaWJfc3RvcmUgPSAnRUdMJykKLSsJY29uZi5jaGVja19jZmcocGFja2FnZT0nZWdsJywgYXJncz0nLS1saWJzIC0tY2ZsYWdzJykKLSAJaW1wb3J0IG9zCi0gCXN5c3Jvb3QgPSBjb25mLm9wdGlvbnMuc3lzcm9vdCArIGNvbmYub3B0aW9ucy5wcmVmaXgKLS0gICAgICAgIHN0ZF9pbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgJ2luY2x1ZGUnKQotLQl2Y29zX3B0aHJlYWRfcGF0aCA9IG9zLnBhdGguam9pbihzeXNyb290LCAnaW5jbHVkZS9pbnRlcmZhY2UvdmNvcy9wdGhyZWFkcycpCi0tCXZjbXNfaG9zdF9wYXRoID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsICdpbmNsdWRlL2ludGVyZmFjZS92bWNzX2hvc3QvbGludXgnKQotLQlpZiBub3QgY29uZi5jaGVja19jeHgobWFuZGF0b3J5ID0gMCwgaGVhZGVyX25hbWUgPSBbJ3Zjb3NfcGxhdGZvcm1fdHlwZXMuaCcsICdFR0wvZWdsLmgnLCAnYmNtX2hvc3QuaCddLCBpbmNsdWRlcyA9IFt2Y29zX3B0aHJlYWRfcGF0aCwgdmNtc19ob3N0X3BhdGgsIHN0ZF9pbmNsdWRlX3BhdGhdLCB1c2VsaWJfc3RvcmUgPSAnRUdMJyk6Ci0tCQljb25mLmZhdGFsKCdDaGVjayBpZiAtLXByZWZpeCBhbmQgLS1zeXNyb290IGFyZSBzZXQgY29ycmVjdGx5LicpCi0gCWNvbmYuZW52WydXSVRIX0FQSVMnXSA9IFtdCi0gCWlmIGNoZWNrX2dsZXMyKGNvbmYpOgotIAkJY29uZi5lbnZbJ1dJVEhfQVBJUyddICs9IFsnR0xFUzEnLCAnR0xFUzInXQotLS0gCi0yLjE5LjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2VnbGluZm8vZmlsZXMvd2FmIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy93YWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDA0ZGRkOWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZWdsaW5mby9maWxlcy93YWYKKysrIC9kZXYvbnVsbApAQCAtMSwxNjkgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIGVuY29kaW5nOiBsYXRpbi0xCi0jIFRob21hcyBOYWd5LCAyMDA1LTIwMTgKLSMKLSIiIgotUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLWFyZSBtZXQ6Ci0KLTEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0KLTIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotCi0zLiBUaGUgbmFtZSBvZiB0aGUgYXV0aG9yIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKLSAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IKLUlNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi1XQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi1ESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKLUlORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCi1TRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKLUhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKLVNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORwotSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi1QT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSIiIgotCi1pbXBvcnQgb3MsIHN5cywgaW5zcGVjdAotCi1WRVJTSU9OPSIyLjAuMTEiCi1SRVZJU0lPTj0iNDFiNjliNDVmOGFhNDQ1ZGNlMDY2YTRhZWMzY2RiNzUiCi1HSVQ9ImZlMDNjNmZhNDcwZjBiYzNjMDg2YmFhZmVkOGM2YjRiNmQyOGEyNDUiCi1JTlNUQUxMPScnCi1DMT0nIzQnCi1DMj0nIyonCi1DMz0nIyknCi1jd2QgPSBvcy5nZXRjd2QoKQotam9pbiA9IG9zLnBhdGguam9pbgotCi0KLVdBRj0nd2FmJwotZGVmIGIoeCk6Ci0JcmV0dXJuIHgKLWlmIHN5cy5oZXh2ZXJzaW9uPjB4MzAwMDAwZjoKLQlXQUY9J3dhZjMnCi0JZGVmIGIoeCk6Ci0JCXJldHVybiB4LmVuY29kZSgpCi0KLWRlZiBlcnIobSk6Ci0JcHJpbnQoKCdcMDMzWzkxbUVycm9yOiAlc1wwMzNbMG0nICUgbSkpCi0Jc3lzLmV4aXQoMSkKLQotZGVmIHVucGFja193YWZkaXIoZGlyLCBzcmMpOgotCWYgPSBvcGVuKHNyYywncmInKQotCWMgPSAnY29ycnVwdCBhcmNoaXZlICglZCknCi0Jd2hpbGUgMToKLQkJbGluZSA9IGYucmVhZGxpbmUoKQotCQlpZiBub3QgbGluZTogZXJyKCdydW4gd2FmLWxpZ2h0IGZyb20gYSBmb2xkZXIgY29udGFpbmluZyB3YWZsaWInKQotCQlpZiBsaW5lID09IGIoJyM9PT5cbicpOgotCQkJdHh0ID0gZi5yZWFkbGluZSgpCi0JCQlpZiBub3QgdHh0OiBlcnIoYyAlIDEpCi0JCQlpZiBmLnJlYWRsaW5lKCkgIT0gYignIzw9PVxuJyk6IGVycihjICUgMikKLQkJCWJyZWFrCi0JaWYgbm90IHR4dDogZXJyKGMgJSAzKQotCXR4dCA9IHR4dFsxOi0xXS5yZXBsYWNlKGIoQzEpLCBiKCdcbicpKS5yZXBsYWNlKGIoQzIpLCBiKCdccicpKS5yZXBsYWNlKGIoQzMpLCBiKCdceDAwJykpCi0KLQlpbXBvcnQgc2h1dGlsLCB0YXJmaWxlCi0JdHJ5OiBzaHV0aWwucm10cmVlKGRpcikKLQlleGNlcHQgT1NFcnJvcjogcGFzcwotCXRyeToKLQkJZm9yIHggaW4gKCdUb29scycsICdleHRyYXMnKToKLQkJCW9zLm1ha2VkaXJzKGpvaW4oZGlyLCAnd2FmbGliJywgeCkpCi0JZXhjZXB0IE9TRXJyb3I6Ci0JCWVycigiQ2Fubm90IHVucGFjayB3YWYgbGliIGludG8gJXNcbk1vdmUgd2FmIGluIGEgd3JpdGFibGUgZGlyZWN0b3J5IiAlIGRpcikKLQotCW9zLmNoZGlyKGRpcikKLQl0bXAgPSAndC5neicKLQl0ID0gb3Blbih0bXAsJ3diJykKLQl0cnk6IHQud3JpdGUodHh0KQotCWZpbmFsbHk6IHQuY2xvc2UoKQotCi0JdHJ5OgotCQl0ID0gdGFyZmlsZS5vcGVuKHRtcCkKLQlleGNlcHQ6Ci0JCXRyeToKLQkJCW9zLnN5c3RlbSgnZ3ppcCAtZCB0Lmd6JykKLQkJCXQgPSB0YXJmaWxlLm9wZW4oJ3QnKQotCQkJdG1wID0gJ3QnCi0JCWV4Y2VwdDoKLQkJCW9zLmNoZGlyKGN3ZCkKLQkJCXRyeTogc2h1dGlsLnJtdHJlZShkaXIpCi0JCQlleGNlcHQgT1NFcnJvcjogcGFzcwotCQkJZXJyKCJXYWYgY2Fubm90IGJlIHVucGFja2VkLCBjaGVjayB0aGF0IGJ6aXAyIHN1cHBvcnQgaXMgcHJlc2VudCIpCi0KLQl0cnk6Ci0JCWZvciB4IGluIHQ6IHQuZXh0cmFjdCh4KQotCWZpbmFsbHk6Ci0JCXQuY2xvc2UoKQotCi0JZm9yIHggaW4gKCdUb29scycsICdleHRyYXMnKToKLQkJb3MuY2htb2Qoam9pbignd2FmbGliJyx4KSwgNDkzKQotCi0JaWYgc3lzLmhleHZlcnNpb248MHgzMDAwMDBmOgotCQlzeXMucGF0aCA9IFtqb2luKGRpciwgJ3dhZmxpYicpXSArIHN5cy5wYXRoCi0JCWltcG9ydCBmaXhweTIKLQkJZml4cHkyLmZpeGRpcihkaXIpCi0KLQlvcy5yZW1vdmUodG1wKQotCW9zLmNoZGlyKGN3ZCkKLQotCXRyeTogZGlyID0gdW5pY29kZShkaXIsICdtYmNzJykKLQlleGNlcHQ6IHBhc3MKLQl0cnk6Ci0JCWZyb20gY3R5cGVzIGltcG9ydCB3aW5kbGwKLQkJd2luZGxsLmtlcm5lbDMyLlNldEZpbGVBdHRyaWJ1dGVzVyhkaXIsIDIpCi0JZXhjZXB0OgotCQlwYXNzCi0KLWRlZiB0ZXN0KGRpcik6Ci0JdHJ5OgotCQlvcy5zdGF0KGpvaW4oZGlyLCAnd2FmbGliJykpCi0JCXJldHVybiBvcy5wYXRoLmFic3BhdGgoZGlyKQotCWV4Y2VwdCBPU0Vycm9yOgotCQlwYXNzCi0KLWRlZiBmaW5kX2xpYigpOgotCXNyYyA9IG9zLnBhdGguYWJzcGF0aChpbnNwZWN0LmdldGZpbGUoaW5zcGVjdC5nZXRtb2R1bGUoZXJyKSkpCi0JYmFzZSwgbmFtZSA9IG9zLnBhdGguc3BsaXQoc3JjKQotCi0JI2RldnMgdXNlICRXQUZESVIKLQl3PXRlc3Qob3MuZW52aXJvbi5nZXQoJ1dBRkRJUicsICcnKSkKLQlpZiB3OiByZXR1cm4gdwotCi0JI3dhZi1saWdodAotCWlmIG5hbWUuZW5kc3dpdGgoJ3dhZi1saWdodCcpOgotCQl3ID0gdGVzdChiYXNlKQotCQlpZiB3OiByZXR1cm4gdwotCQllcnIoJ3dhZi1saWdodCByZXF1aXJlcyB3YWZsaWIgLT4gZXhwb3J0IFdBRkRJUj0vZm9sZGVyJykKLQotCWRpcm5hbWUgPSAnJXMtJXMtJXMnICUgKFdBRiwgVkVSU0lPTiwgUkVWSVNJT04pCi0JZm9yIGkgaW4gKElOU1RBTEwsJy91c3InLCcvdXNyL2xvY2FsJywnL29wdCcpOgotCQl3ID0gdGVzdChpICsgJy9saWIvJyArIGRpcm5hbWUpCi0JCWlmIHc6IHJldHVybiB3Ci0KLQkjd2FmLWxvY2FsCi0JZGlyID0gam9pbihiYXNlLCAoc3lzLnBsYXRmb3JtICE9ICd3aW4zMicgYW5kICcuJyBvciAnJykgKyBkaXJuYW1lKQotCXcgPSB0ZXN0KGRp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VCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWUxMWY1YzMxNDljZGVjNGJiMzA5YmFiYjAyMGIzMmI5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9oYi11Y2QuY2M7bWQ1PTM0M2YxNzk3OTQ0ZGU0OWFiMmI1ZjVjZjMxMjZkM2YyIgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2hiLXVjZC5jYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE1O21kNT0yOWQ0ZGNiNjQxMDQyOTE5NWRmNjdlZmUzMzgyZDhiYyIKIAogREVQRU5EUyA9ICJnbGliLTIuMCBjYWlybyBmb250Y29uZmlnIGZyZWV0eXBlIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2hhcmZidXp6L3JlbGVhc2UvJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjI5YTMxMGU3NGE5MGI0ZTRmNmQ2MmYzZTc0YTU3MWU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlZDAwZGM3OTdiN2JhM2NhOTQzMjI1ZjBhODU0YmFhZWQ0YzE2NDBmZmY4YTMxZDQ1NWNkM2I1Y2FlYzg1NWMiCitTUkNfVVJJW21kNXN1bV0gPSAiODliNzU4YTJlYjE0ZDU2YTk0NDA2Y2Y5MTRiNjIzODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzY1MWZiM2ZhYWEzMzhhZWIyODA3MjY4MzdjMjM4NDA2NGNkYzE3ZWY0MDUzOTIyOGQ4OGExMjYwOTYwODQ0ZiIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlIGd0ay1kb2MKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImljdSIKIFBBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaWN1LC0td2l0aG91dC1pY3UsaWN1IgorUEFDS0FHRUNPTkZJR1tncmFwaGl0ZV0gPSAiLS13aXRoLWdyYXBoaXRlMiwtLXdpdGhvdXQtZ3JhcGhpdGUyLGdyYXBoaXRlMiIKIAogRVhUUkFfT0VDT05GID0gIiBcCiAgICAgLS13aXRoLWNhaXJvIFwKICAgICAtLXdpdGgtZm9udGNvbmZpZyBcCiAgICAgLS13aXRoLWZyZWV0eXBlIFwKICAgICAtLXdpdGgtZ2xpYiBcCi0gICAgLS13aXRob3V0LWdyYXBoaXRlMiBcCiAiCiAKIFBBQ0tBR0VTID0rICIke1BOfS1pY3UgJHtQTn0taWN1LWRldiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLWNsdXR0ZXIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS1jbHV0dGVyLmJiCmluZGV4IGIwZjI1Y2YuLmE1OTQ0NjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLWNsdXR0ZXIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaW1hZ2VzL2NvcmUtaW1hZ2UtY2x1dHRlci5iYgpAQCAtMTEsMyArMTEsNSBAQAogICAgICIKIAogaW5oZXJpdCBjb3JlLWltYWdlCisKK1FCX01FTSA9ICcke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICItbSA1MTIiLCAiLW0gMjU2IiwgZCl9JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaW1hZ2VzL2NvcmUtaW1hZ2UteDExLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvaW1hZ2VzL2NvcmUtaW1hZ2UteDExLmJiCmluZGV4IDg0NTViYjguLmNkNTM3NDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ltYWdlcy9jb3JlLWltYWdlLXgxMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9pbWFnZXMvY29yZS1pbWFnZS14MTEuYmIKQEAgLTcsMyArNyw1IEBACiBpbmhlcml0IGNvcmUtaW1hZ2UgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1FCX01FTSA9ICcke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICItbSA1MTIiLCAiLW0gMjU2IiwgZCl9JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC4zLmJiCmluZGV4IGUxZGY3NTQuLjFjZjg1NGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKQEAgLTE0LDggKzE0LDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtbGlianBlZy10dXJiby1maXgtcGFja2FnZV9xYS1lcnJvci5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjc5Zjc2ZmJmYjBjNjEwOTYzMTMzMjc2MmQxMGUxNmQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjYjg1OTlmZTUzOTlhZjExNDI4N2VlNTkwN2FlYTQ0NTZmOGYyYzFjYzk2ZDI2YzI4YWViZmRmNWVlODJmZWQiCitTUkNfVVJJW21kNXN1bV0gPSAiYmQwN2ZkZGYyNmY5ZGVmN2JhYjAyNzM5ZWI2NTUxMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDI0NmRlNTAwNTQ0ZDRlZTQwOGVlNTcwNDhhYTRhYWRjNmYxNjVmYzE3ZjE0MWRhODc2NjlmMjBlZDMyNDFiNyIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYmpwZWctdHVyYm8vZmlsZXMvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2xpYmpwZWctdHVyYm8vZmlsZXMvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMy5iYgppbmRleCBkZDcwNmE5Li5jOGQxNjUwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuMy5iYgpAQCAtMjMsOCArMjMsOCBAQAogCiBFWFRSQV9PRU1FU09OICs9ICItRHRlc3RzPWZhbHNlIgogCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJlZ2wiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJlZ2wiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJlZ2wgeDExIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiZWdsIHgxMSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwppbmRleCBmY2QxOTg4Li5mOTE2ZTU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKQEAgLTk4LDYgKzk4LDkgQEAKIFBBQ0tBR0VDT05GSUdbdjNkXSA9ICIiCiAKIEdBTExJVU1EUklWRVJTID0gInN3cmFzdCIKKyMgZ2FsbGl1bSBzd3Jhc3Qgd2FzIGZvdW5kIHRvIGNyYXNoIFhvcmcgb24gc3RhcnR1cCBpbiB4MzIgcWVtdQorR0FMTElVTURSSVZFUlNfeDg2LXgzMiA9ICIiCisKIEdBTExJVU1EUklWRVJTX2FwcGVuZCA9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2V0bmF2aXYnLCAnLGV0bmF2aXYnLCAnJywgZCl9IgogR0FMTElVTURSSVZFUlNfYXBwZW5kID0iJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAna21zcm8nLCAnLGttc3JvJywgJycsIGQpfSIKIEdBTExJVU1EUklWRVJTX2FwcGVuZCA9IiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZjNCcsICcsdmM0JywgJycsIGQpfSIKQEAgLTEyMiw2ICsxMjUsOSBAQAogUEFDS0FHRUNPTkZJR1tsaW1hXSA9ICIiCiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsaW1hJywgJyxsaW1hJywgJycsIGQpfSIKIAorUEFDS0FHRUNPTkZJR1twYW5mcm9zdF0gPSAiIgorR0FMTElVTURSSVZFUlNfYXBwZW5kID0iJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFuZnJvc3QnLCAnLHBhbmZyb3N0JywgJycsIGQpfSIKKwogT1NNRVNBID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0nLCAnZ2FsbGl1bScsICdjbGFzc2ljJywgZCl9IgogUEFDS0FHRUNPTkZJR1tvc21lc2FdID0gIi1Eb3NtZXNhPSR7T1NNRVNBfSwtRG9zbWVzYT1ub25lIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjYuYmIKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC41LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb18xLjQ0LjYuYmIKaW5kZXggYTE0MzcyMy4uODgyZWFkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC41LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgpAQCAtMTYsOCArMTYsOCBAQAogaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBwdGVzdC1nbm9tZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAKIFNSQ19VUkkgKz0gImZpbGU6Ly9ydW4tcHRlc3QiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiNmJmNjg5ZTNjZTRmNDZiMGZkODg3YjY0Yzg1MGVhMSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjg1MjdkZmNiZWVkYjQzOTAxNDliNmY5NDYyMGMwZmE2NGUyNjA0NmFiODUwNDJjMmE3NTU2NDM4ODQ3ZDdmYzEiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYjBhMzI0M2JhMzNlMDJhYWE3NzU0MTJmOGU1ZjQxMiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNlMWU0MWJhODM4NzM3ZTIwMDYxMWZmMDAxZTNiMzA0YzJjYTRjZGJiYTYzZDIwMGEyMGRiMGIwZGRjMGY4NmMiCiAKIERFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiBmcmliaWRpIgogCkBAIC0yNiw2ICsyNiw3IEBACiAKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICIsLHZpcnR1YWwvbGlieDExIGxpYnhmdCIKIFBBQ0tBR0VDT05GSUdbdGVzdHNdID0gIi1EaW5zdGFsbC10ZXN0cz10cnVlLCAtRGluc3RhbGwtdGVzdHM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3RoYWldID0gIiwsbGlidGhhaSIKIAogR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgogR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtTWFrZWZpbGUuYW0tZXhwbGljaXRseS1saW5rLXdpdGgtbGliZHJtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyLzAwMDEtTWFrZWZpbGUuYW0tZXhwbGljaXRseS1saW5rLXdpdGgtbGliZHJtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYThkODE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlci8wMDAxLU1ha2VmaWxlLmFtLWV4cGxpY2l0bHktbGluay13aXRoLWxpYmRybS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gZDYxZjcwNzNiOGNlMTU5ZDIxODExYjI5MWMyMmIyNzNiMDQwYzMzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVHVlLCAxMiBGZWIgMjAxOSAxMjowNDo1MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogZXhwbGljaXRseSBsaW5rIHdpdGggbGliZHJtCi0KLU90aGVyd2lzZSwgYSBmYWlsdXJlIGhhcHBlbnMgd2l0aCBnb2xkIGxpbmtlcjoKLQotLi4vc3JjLy5saWJzL2xpYnZpcmdscmVuZGVyZXIuc286IGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvICdkcm1QcmltZUhhbmRsZVRvRkQnCi0KLWh0dHBzOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjIyMDQ2LwotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvdmlyZ2wvdmlyZ2xyZW5kZXJlci9tZXJnZV9yZXF1ZXN0cy8xNTNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZS5hbSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA5YTBhNDRlLi45YjY2OGM4IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0xLDUgKzEsNiBAQAotIFNVQkRJUlMgOj0gZ2FsbGl1bS9hdXhpbGlhcnkKLSBBTV9MREZMQUdTID0gLWxtIFwKLSsJJChMSUJEUk1fTElCUykgXAotIAkkKEdCTV9MSUJTKSBcCi0gCSQoRVBPWFlfTElCUykgXAotIAkkKFgxMV9MSUJTKSBcCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS12dGVzdC1hZGQtbWlzc2luZy1pbmNsdWRlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlci8wMDAxLXZ0ZXN0LWFkZC1taXNzaW5nLWluY2x1ZGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjRmZmE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlci8wMDAxLXZ0ZXN0LWFkZC1taXNzaW5nLWluY2x1ZGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotRnJvbSAwNWM1YzVmNDNmYmZmYjMzMTdiZDlkYTI3ZDQxNDg5MGQyZWY0OTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE4IEphbiAyMDE5IDEzOjQ3OjIzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIHZ0ZXN0OiBhZGQgbWlzc2luZyBpbmNsdWRlcwotCi1UaGlzIGZpeGVzIGJ1aWxkIGZhaWx1cmVzIHdpdGggbXVzbCBDIGxpYnJhcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBBY2NlcHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3ZpcmdsL3ZpcmdscmVuZGVyZXIvbWVyZ2VfcmVxdWVzdHMvMTI1XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB2dGVzdC91dGlsLmMgICAgICAgICB8IDEgKwotIHZ0ZXN0L3Z0ZXN0X3NlcnZlci5jIHwgMSArCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3Z0ZXN0L3V0aWwuYyBiL3Z0ZXN0L3V0aWwuYwotaW5kZXggMGQzYzc4Zi4uYzYwNTI1MyAxMDA2NDQKLS0tLSBhL3Z0ZXN0L3V0aWwuYwotKysrIGIvdnRlc3QvdXRpbC5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLSAKLSBpbnQgdnRlc3Rfd2FpdF9mb3JfZmRfcmVhZChpbnQgZmQpCi0gewotZGlmZiAtLWdpdCBhL3Z0ZXN0L3Z0ZXN0X3NlcnZlci5jIGIvdnRlc3QvdnRlc3Rfc2VydmVyLmMKLWluZGV4IGJjNmM5NWYuLjAxMDcyMWYgMTAwNjQ0Ci0tLS0gYS92dGVzdC92dGVzdF9zZXJ2ZXIuYwotKysrIGIvdnRlc3QvdnRlc3Rfc2VydmVyLmMKLUBAIC0zMSw2ICszMSw3IEBACi0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSAjaW5jbHVkZSA8c3lzL3VuLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotICNpbmNsdWRlICJ1dGlsLmgiCi0gI2luY2x1ZGUgInZ0ZXN0LmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjAuYmIKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuNy4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjAuYmIKaW5kZXggODE4ZDViNi4uZDJiMTFjMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuNy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgpAQCAtNSwxMCArNSw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODFjMDhlZWVmZDk0MThmY2E4Zjg4MzA5YTc2ZGIxMCIKIAogREVQRU5EUyA9ICJsaWJkcm0gbWVzYSBsaWJlcG94eSIKLVNSQ1JFViA9ICI0MDJjMjI4ODYxYzk4OTNmNjRjZmZiYmNiNGNiMjMwNDRiOGM3MjFjIgorU1JDUkVWID0gIjQ4Y2M5NmM5YWViYjlkMDE2NDgzMGExNTdlZmM4OTE2ZjA4ZjAwYzAiCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3ZpcmdscmVuZGVyZXIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12dGVzdC1hZGQtbWlzc2luZy1pbmNsdWRlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWV4cGxpY2l0bHktbGluay13aXRoLWxpYmRybS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdhbGxpdW0tRXhwYW5kLWxpYmMtY2hlY2stdG8tYmUtcGxhdGZvcm0tT1MtY2hlY2sucGF0Y2ggXAogICAgICAgICAgICAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtbWFrZS1lcnJvci1wb3J0YWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWNlYTlkYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLW1ha2UtZXJyb3ItcG9ydGFibGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MCArMCwwIEBACi1Gcm9tIGM0Njc3ZTE1NTczNjA2MmU3NTY4N2YxYTY1NTczMmM4OTAyZTkxMmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXkgMjAxNSAyMDo1NjowMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBtYWtlIGVycm9yKCkgcG9ydGFibGUKLQotZXJyb3IoKSBpcyBub3QgcG9zaXggYnV0IGdudSBleHRlbnNpb24gc28gbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gYWxsCi1raW5kIG9mIHN5c3RlbXNpIGUuZy4gbXVzbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB0b3JhZGV4LmNvbT4KLS0tLQotIGxpYndlc3Rvbi93ZXN0b24tZXJyb3IuaCAgfCAyMCArKysrKysrKysrKysrKysrKysrKwotIGxpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgfCAgMiArLQotIG1lc29uLmJ1aWxkICAgICAgICAgICAgICAgfCAgMSArCi0gMyBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYndlc3Rvbi93ZXN0b24tZXJyb3IuaAotCi1kaWZmIC0tZ2l0IGEvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oIGIvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMjA4OWQwMgotLS0tIC9kZXYvbnVsbAotKysrIGIvbGlid2VzdG9uL3dlc3Rvbi1lcnJvci5oCi1AQCAtMCwwICsxLDIwIEBACi0rI2lmbmRlZiBfV0VTVE9OX0VSUk9SX0gKLSsjZGVmaW5lIF9XRVNUT05fRVJST1JfSAotKwotKyNpZiBkZWZpbmVkKEhBVkVfRVJST1JfSCkKLSsjaW5jbHVkZSA8ZXJyb3IuaD4KLSsjZWxzZQotKyNpbmNsdWRlIDxlcnIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2RlZmluZSBfd2VzdG9uX2Vycm9yKFMsIEUsIEYsIC4uLikgZG8geyBcCi0rCWlmIChFKSBcCi0rCQllcnIoUywgRiAiOiAlcyIsICMjX19WQV9BUkdTX18sIHN0cmVycm9yKEUpKTsgXAotKwllbHNlIFwKLSsJCWVycihTLCBGLCAjI19fVkFfQVJHU19fKTsgXAotK30gd2hpbGUoMCkKLSsKLSsjZGVmaW5lIGVycm9yIF93ZXN0b25fZXJyb3IKLSsjZW5kaWYKLSsKLSsjZW5kaWYKLSsKLWRpZmYgLS1naXQgYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotaW5kZXggYmY3M2UwZC4uOTA2NDQzOSAxMDA2NDQKLS0tLSBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLSsrKyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKLUBAIC0zMyw3ICszMyw2IEBACi0gI2luY2x1ZGUgPHBvbGwuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLS0jaW5jbHVkZSA8ZXJyb3IuaD4KLSAjaW5jbHVkZSA8Z2V0b3B0Lmg+Ci0gCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotQEAgLTU5LDYgKzU4LDcgQEAKLSAjZW5kaWYKLSAKLSAjaW5jbHVkZSAid2VzdG9uLWxhdW5jaC5oIgotKyNpbmNsdWRlICJ3ZXN0b24tZXJyb3IuaCIKLSAKLSAjZGVmaW5lIERSTV9NQUpPUiAyMjYKLSAKLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAyMTU1YjdiLi5iYWE1MmQ5IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtOTQsNiArOTQsNyBAQCBmb3JlYWNoIGZ1bmMgOiBvcHRpb25hbF9saWJjX2Z1bmNzCi0gZW5kZm9yZWFjaAotIAotIG9wdGlvbmFsX3N5c3RlbV9oZWFkZXJzID0gWwotKwknZXJyb3IuaCcsCi0gCSdsaW51eC9zeW5jX2ZpbGUuaCcKLSBdCi0gZm9yZWFjaCBoZHIgOiBvcHRpb25hbF9zeXN0ZW1faGVhZGVycwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKaW5kZXggODFjYzAyNS4uZTUwODQ1YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gN2QyZmVhNjFhOTVlOTQ5OGI1YTE5YzhjZmZjYjJhYjU2MzFkNTY4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjgyYjdkNzlhN2I4MWVjOGUzODc2MDM4MTEwNGIyNGFkNTQ5ZThjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFRvbSBIb2Noc3RlaW4gPHRvbS5ob2Noc3RlaW5AbnhwLmNvbT4KIERhdGU6IFdlZCwgMjIgRmViIDIwMTcgMTU6NTM6MzAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gd2VzdG9uLWxhdW5jaDogUHJvdmlkZSBhIGRlZmF1bHQgdmVyc2lvbiB0aGF0IGRvZXNuJ3QgcmVxdWlyZQpAQCAtMTgsMTYgKzE4LDE2IEBACiBTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bWluZy5saXVAdG9yYWRleC5jb20+CiAtLS0KICBsaWJ3ZXN0b24vbWVzb24uYnVpbGQgICAgIHwgMTYgKysrKysrKysrKysrLS0tLQotIGxpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgfCAyMCArKysrKysrKysrKysrKysrKysrKworIGxpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgfCAyMSArKysrKysrKysrKysrKysrKysrKysKICBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgIHwgIDcgKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWJ3ZXN0b24vbWVzb24uYnVpbGQgYi9saWJ3ZXN0b24vbWVzb24uYnVpbGQKLWluZGV4IDMzYWI5NzAuLjMyZjQ5NWEgMTAwNjQ0CitpbmRleCBkOGQzZmMwLi4zMjY2ODNmIDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL21lc29uLmJ1aWxkCiArKysgYi9saWJ3ZXN0b24vbWVzb24uYnVpbGQKLUBAIC00NzIsMTYgKzQ3MiwyNCBAQCBpZiBnZXRfb3B0aW9uKCdyZW5kZXJlci1nbCcpCi0gZW5kaWYKK0BAIC0xOTksMTYgKzE5OSwyNCBAQCBkZXBfdmVydGV4X2NsaXBwaW5nID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorICkKICAKICBpZiBnZXRfb3B0aW9uKCd3ZXN0b24tbGF1bmNoJykKIC0JZGVwX3BhbSA9IGNjLmZpbmRfbGlicmFyeSgncGFtJykKQEAgLTU2LDcgKzU2LDcgQEAKICAJCWluc3RhbGw6IHRydWUKICAJKQogZGlmZiAtLWdpdCBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCi1pbmRleCA5MDY0NDM5Li5jNmFiZTkyIDEwMDY0NAoraW5kZXggNDk2MmJkNi4uZmM1MzFjNSAxMDA2NDQKIC0tLSBhL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKICsrKyBiL2xpYndlc3Rvbi93ZXN0b24tbGF1bmNoLmMKIEBAIC01MSw3ICs1MSw5IEBACkBAIC02OSw3ICs2OSw3IEBACiAgCiAgI2lmZGVmIEhBVkVfU1lTVEVNRF9MT0dJTgogICNpbmNsdWRlIDxzeXN0ZW1kL3NkLWxvZ2luLmg+Ci1AQCAtMTAxLDggKzEwMywxMCBAQCBkcm1TZXRNYXN0ZXIoaW50IGRybV9mZCkKK0BAIC0xMDAsOCArMTAyLDEwIEBAIGRybVNldE1hc3RlcihpbnQgZHJtX2ZkKQogICNlbmRpZgogIAogIHN0cnVjdCB3ZXN0b25fbGF1bmNoIHsKQEAgLTgwLDcgKzgwLDcgQEAKICAJaW50IHR0eTsKICAJaW50IHR0eW5yOwogIAlpbnQgc29ja1syXTsKLUBAIC0xOTEsNiArMTk1LDcgQEAgd2VzdG9uX2xhdW5jaF9hbGxvd2VkKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKK0BAIC0xOTIsNiArMTk2LDcgQEAgd2VzdG9uX2xhdW5jaF9hbGxvd2VkKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCkKICAJcmV0dXJuIGZhbHNlOwogIH0KICAKQEAgLTg4LDcgKzg4LDcgQEAKICBzdGF0aWMgaW50CiAgcGFtX2NvbnZlcnNhdGlvbl9mbihpbnQgbXNnX2NvdW50LAogIAkJICAgIGNvbnN0IHN0cnVjdCBwYW1fbWVzc2FnZSAqKm1lc3NhZ2VzLAotQEAgLTIzMSw2ICsyMzYsNyBAQCBzZXR1cF9wYW0oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQorQEAgLTIzMiw2ICsyMzcsNyBAQCBzZXR1cF9wYW0oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsKQogIAogIAlyZXR1cm4gMDsKICB9CkBAIC05Niw3ICs5Niw3IEBACiAgCiAgc3RhdGljIGludAogIHNldHVwX2xhdW5jaGVyX3NvY2tldChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wpCi1AQCAtNDI0LDYgKzQzMCw3IEBAIHF1aXQoc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBpbnQgc3RhdHVzKQorQEAgLTQzMSw2ICs0MzcsNyBAQCBxdWl0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgaW50IHN0YXR1cykKICAJY2xvc2Uod2wtPnNpZ25hbGZkKTsKICAJY2xvc2Uod2wtPnNvY2tbMF0pOwogIApAQCAtMTA0LDcgKzEwNCw3IEBACiAgCWlmICh3bC0+bmV3X3VzZXIpIHsKICAJCWVyciA9IHBhbV9jbG9zZV9zZXNzaW9uKHdsLT5waCwgMCk7CiAgCQlpZiAoZXJyKQotQEAgLTQzMSw2ICs0MzgsNyBAQCBxdWl0KHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgaW50IHN0YXR1cykKK0BAIC00MzgsNiArNDQ1LDcgQEAgcXVpdChzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGludCBzdGF0dXMpCiAgCQkJCWVyciwgcGFtX3N0cmVycm9yKHdsLT5waCwgZXJyKSk7CiAgCQlwYW1fZW5kKHdsLT5waCwgZXJyKTsKICAJfQpAQCAtMTEyLDcgKzExMiw3IEBACiAgCiAgCWlmIChpb2N0bCh3bC0+dHR5LCBLRFNLQk1VVEUsIDApICYmCiAgCSAgICBpb2N0bCh3bC0+dHR5LCBLRFNLQk1PREUsIHdsLT5rYl9tb2RlKSkKLUBAIC02MTAsNiArNjE4LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQorQEAgLTY2MCw2ICs2NjgsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCiAgCXNldGVudigiSE9NRSIsIHdsLT5wdy0+cHdfZGlyLCAxKTsKICAJc2V0ZW52KCJTSEVMTCIsIHdsLT5wdy0+cHdfc2hlbGwsIDEpOwogIApAQCAtMTIwLDcgKzEyMCw3IEBACiAgCWVudiA9IHBhbV9nZXRlbnZsaXN0KHdsLT5waCk7CiAgCWlmIChlbnYpIHsKICAJCWZvciAoaSA9IDA7IGVudltpXTsgKytpKSB7Ci1AQCAtNjE4LDYgKzYyNyw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02NjgsNiArNjc3LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAkJfQogIAkJZnJlZShlbnYpOwogIAl9CkBAIC0xMjgsNyArMTI4LDcgQEAKICAKICAJLyoKICAJICogV2Ugb3BlbiBhIG5ldyBzZXNzaW9uLCBzbyBpdCBtYWtlcyBzZW5zZQotQEAgLTY4NSw4ICs2OTUsMTAgQEAgc3RhdGljIHZvaWQKK0BAIC03MzksOCArNzQ5LDEwIEBAIHN0YXRpYyB2b2lkCiAgaGVscChjb25zdCBjaGFyICpuYW1lKQogIHsKICAJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgW2FyZ3MuLi5dIFstLSBbd2VzdG9uIGFyZ3MuLl1dXG4iLCBuYW1lKTsKQEAgLTEzOSw3ICsxMzksNyBAQAogIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXQsIC0tdHR5ICAgICAgIFN0YXJ0IHNlc3Npb24gb24gYWx0ZXJuYXRpdmUgdHR5LFxuIgogIAkJCSIgICAgICAgICAgICAgICAgICBlLmcuIC10IC9kZXYvdHR5NCwgcmVxdWlyZXMgLXUgb3B0aW9uLlxuIik7CiAgCWZwcmludGYoc3RkZXJyLCAiICAtdiwgLS12ZXJib3NlICAgQmUgdmVyYm9zZVxuIik7Ci1AQCAtNzAwLDcgKzcxMiw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC03NTQsNyArNzY2LDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpbnQgaSwgYzsKICAJY2hhciAqdHR5ID0gTlVMTDsKICAJc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CkBAIC0xNDksMjEgKzE0OSwyNCBAQAogIAkJeyAidHR5IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndCcgfSwKICAJCXsgInZlcmJvc2UiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3YnIH0sCiAgCQl7ICJoZWxwIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdoJyB9LAotQEAgLTcxMiw5ICs3MjYsMTMgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTc2NiwxMSArNzgwLDE2IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgInU6dDp2aCIsIG9wdHMsICZpKSkgIT0gLTEpIHsKICAJCXN3aXRjaCAoYykgewogIAkJY2FzZSAndSc6CiArI2lmZGVmIEhBVkVfUEFNCiAgCQkJd2wubmV3X3VzZXIgPSBvcHRhcmc7Ci0gCQkJaWYgKGdldHVpZCgpICE9IDApCi0gCQkJCWVycm9yKDEsIDAsICJQZXJtaXNzaW9uIGRlbmllZC4gLXUgYWxsb3dlZCBmb3Igcm9vdCBvbmx5Iik7CisgCQkJaWYgKGdldHVpZCgpICE9IDApIHsKKyAJCQkJZnByaW50ZihzdGRlcnIsICJ3ZXN0b246IFBlcm1pc3Npb24gZGVuaWVkLiAtdSBhbGxvd2VkIGZvciByb290IG9ubHlcbiIpOworIAkJCQlleGl0KEVYSVRfRkFJTFVSRSk7CisgCQkJfQogKyNlbHNlCi0rCQkJZXJyb3IoMSwgMCwgIi11IGlzIHVuc3VwcG9ydGVkIGluIHRoaXMgd2VzdG9uLWxhdW5jaCBidWlsZCIpOworKwkJCWZwcmludGYoc3RkZXJyLCAid2VzdG9uOiAtdSBpcyB1bnN1cHBvcnRlZCBpbiB0aGlzIHdlc3Rvbi1sYXVuY2ggYnVpbGRcbiIpOworKwkJCWV4aXQoRVhJVF9GQUlMVVJFKTsKICsjZW5kaWYKICAJCQlicmVhazsKICAJCWNhc2UgJ3QnOgogIAkJCXR0eSA9IG9wdGFyZzsKLUBAIC03NTUsOCArNzczLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC04MjIsOCArODQxLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAJaWYgKHNldHVwX3R0eSgmd2wsIHR0eSkgPCAwKQogIAkJZXhpdChFWElUX0ZBSUxVUkUpOwogIApAQCAtMTc1LDcgKzE3OCw3IEBACiAgCWlmIChzZXR1cF9sYXVuY2hlcl9zb2NrZXQoJndsKSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggMGUxZDE4My4uOWE1YzNkNSAxMDA2NDQKK2luZGV4IGQ1YmYxZDUuLjI1NGViMmIgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKIEBAIC03Myw2ICs3MywxMyBAQCBvcHRpb24oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl82LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzYuMC4xLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYgppbmRleCBmZThmMWI4Li41ZDJhOTMzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl82LjAuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYgpAQCAtOSwxMSArOSwxMCBAQAogICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCiAgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCiAgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLWVycm9yLXBvcnRhYmxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBcCiAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTdiMTA3MTBlZjFlYWM4MjI1OGY5N2JmZDQxZmU1MzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmYyZjZkNWFhZTJlMTFjYWJiNmJkNjlhNzZiY2Y5ZWRiMDg0ZjhjM2UxNGNhNzY5YmVhNzIzNGE1MTMxNTViNCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYmZkYTQ4M2JjMjUwMWQwODMxYWYzZjMzYzcwNzg1MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMDBhNmQyMDdiNmE0NWY5NWY0NDAxYzYwNDc3MmEzMDdjMzc2N2U1ZTJiZWVjZjNkODc5MTEwYzQzOTA5YTY0IgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgogCkBAIC0yNiw3ICsyNSw3IEBACiAKIFdFU1RPTl9NQUpPUl9WRVJTSU9OID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoxXSl9IgogCi1FWFRSQV9PRU1FU09OICs9ICItRGJhY2tlbmQtZGVmYXVsdD1hdXRvIC1EYmFja2VuZC1yZHA9ZmFsc2UiCitFWFRSQV9PRU1FU09OICs9ICItRGJhY2tlbmQtZGVmYXVsdD1hdXRvIC1EYmFja2VuZC1yZHA9ZmFsc2UgLURwaXBld2lyZT1mYWxzZSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvZHRjL2R0Y18xLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWMxMzE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotcmVxdWlyZSBkdGMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0dQTDttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotCQkgICAgZmlsZTovL2xpYmZkdC9saWJmZHQuaDtiZWdpbmxpbmU9MztlbmRsaW5lPTUyO21kNT1mYjM2MDk2MzE1MWY4ZWMyZDZjMDZiMDU1YmNiYjY4YyIKLQotU1JDUkVWID0gImQzN2Y2YjIwMTA3ZTk1MjA2NGUzZjc3ZTlkNjkxNWE5YzA5ZDEwYTYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2R0Yy9kdGNfMS41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmOGEwNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9kdGMvZHRjXzEuNS4xLmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgZHRjLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKwkJICAgIGZpbGU6Ly9saWJmZHQvbGliZmR0Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT03O21kNT0wNWJiMzU3Y2ZiNzVjYWU3ZDJiMDFkMmVlOGQ3NjQwNyIKKworU1JDUkVWID0gIjYwZTBkYjNkNjVhMTIxOGIwZDVhMjk0NzRlNzY5ZjI4YTE4ZTNjYTYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtYXJtNjQtc3ZlLXVhcGktYXNtLXB0cmFjZS5oLXNob3VsZC1ub3QtZGVwZW5kLW9uLXVhcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtYXJtNjQtc3ZlLXVhcGktYXNtLXB0cmFjZS5oLXNob3VsZC1ub3QtZGVwZW5kLW9uLXVhcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVhNDZlOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWFybTY0LXN2ZS11YXBpLWFzbS1wdHJhY2UuaC1zaG91bGQtbm90LWRlcGVuZC1vbi11YXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDM1MzQxY2EwNjE0YWIxM2UxZWYzNGFkNGYyOWEzOWUxNWVmMzFmYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmlzc2UgQXN0aWVyIDxhYXN0aWVyQGZyZWVib3guZnI+Ci1EYXRlOiBNb24sIDE3IEp1biAyMDE5IDE1OjIyOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFybTY0L3N2ZTogPHVhcGkvYXNtL3B0cmFjZS5oPiBzaG91bGQgbm90IGRlcGVuZCBvbgotIDx1YXBpL2xpbnV4L3ByY3RsLmg+Ci0KLVB1bGxpbmcgbGludXgvcHJjdGwuaCBpbnRvIGFzbS9wdHJhY2UuaCBpbiB0aGUgYXJtNjQgVUFQSSBoZWFkZXJzIGNhdXNlcwotdXNlcnNwYWNlIGJ1aWxkIGlzc3VlcyBmb3IgYW55IHByb2dyYW0gKGUuZy4gc3RyYWNlIGFuZCBxZW11KSB0aGF0Ci1pbmNsdWRlcyBib3RoIDxzeXMvcHJjdGwuaD4gYW5kIDxsaW51eC9wdHJhY2UuaD4gd2hlbiB1c2luZyBtdXNsIGxpYmM6Ci0KLSAgfCBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdzdHJ1Y3QgcHJjdGxfbW1fbWFwJwotICB8ICBzdHJ1Y3QgcHJjdGxfbW1fbWFwIHsKLQotU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mb3VuZHJpZXNpby9tZXRhLWxtcC9jb21taXQvNmQ0YTEwNmUxOTFiNWQ3OWM0MWI5YWM3OGZkMzIxMzE2ZDMwMTNjMAotZm9yIGEgcHVibGljIGV4YW1wbGUgb2YgcGVvcGxlIHdvcmtpbmcgYXJvdW5kIHRoaXMgaXNzdWUuCi0KLUFsdGhvdWdoIGl0J3MgYSBiaXQgZ3JvdHR5LCBmaXggdGhpcyBicmVha2FnZSBieSBkdXBsaWNhdGluZyB0aGUgcHJjdGwKLWNvbnN0YW50IGRlZmluaXRpb25zLiBTaW5jZSB0aGVzZSBhcmUgcGFydCBvZiB0aGUga2VybmVsIEFCSSwgdGhleQotY2Fubm90IGJlIGNoYW5nZWQgaW4gZnV0dXJlIGFuZCBzbyBpdCdzIG5vdCB0aGUgZW5kIG9mIHRoZSB3b3JsZCB0byBoYXZlCi10aGVtIG9wZW4tY29kZWQuCi0KLUZpeGVzOiA0M2Q0ZGEyYzQ1YjIgKCJhcm02NC9zdmU6IHB0cmFjZSBhbmQgRUxGIGNvcmVkdW1wIHN1cHBvcnQiKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vdG9ydmFsZHMvbGludXgvY29tbWl0LzM1MzQxY2EwNjE0YWIxM2UxZWYzNGFkNGYyOWEzOWUxNWVmMzFmYThdCi1DYzogc3RhYmxlQHZnZXIua2VybmVsLm9yZwotQWNrZWQtYnk6IERhdmUgTWFydGluIDxEYXZlLk1hcnRpbkBhcm0uY29tPgotU2lnbmVkLW9mZi1ieTogQW5pc3NlIEFzdGllciA8YWFzdGllckBmcmVlYm94LmZyPgotU2lnbmVkLW9mZi1ieTogV2lsbCBEZWFjb24gPHdpbGwuZGVhY29uQGFybS5jb20+Ci0tLS0KLSBhcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNlLmggfCA4ICsrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaCBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaAotaW5kZXggOTdjNTMyMDMxNTBiLi5lOTMyMjg0OTkzZDQgMTAwNjQ0Ci0tLS0gYS9hcmNoL2FybTY0L2luY2x1ZGUvdWFwaS9hc20vcHRyYWNlLmgKLSsrKyBiL2FyY2gvYXJtNjQvaW5jbHVkZS91YXBpL2FzbS9wdHJhY2UuaAotQEAgLTY1LDggKzY1LDYgQEAKLSAKLSAjaWZuZGVmIF9fQVNTRU1CTFlfXwotIAotLSNpbmNsdWRlIDxsaW51eC9wcmN0bC5oPgotLQotIC8qCi0gICogVXNlciBzdHJ1Y3R1cmVzIGZvciBnZW5lcmFsIHB1cnBvc2UsIGZsb2F0aW5nIHBvaW50IGFuZCBkZWJ1ZyByZWdpc3RlcnMuCi0gICovCi1AQCAtMTEzLDEwICsxMTEsMTAgQEAgc3RydWN0IHVzZXJfc3ZlX2hlYWRlciB7Ci0gCi0gLyoKLSAgKiBDb21tb24gU1ZFX1BUXyogZmxhZ3M6Ci0tICogVGhlc2UgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCBwcmN0bCBpbnRlcmZhY2UgaW4gPGxpbnV4L3B0cmFjZS5oPgotKyAqIFRoZXNlIG11c3QgYmUga2VwdCBpbiBzeW5jIHdpdGggcHJjdGwgaW50ZXJmYWNlIGluIDxsaW51eC9wcmN0bC5oPgotICAqLwotLSNkZWZpbmUgU1ZFX1BUX1ZMX0lOSEVSSVQJCShQUl9TVkVfVkxfSU5IRVJJVCA+PiAxNikKLS0jZGVmaW5lIFNWRV9QVF9WTF9PTkVYRUMJCShQUl9TVkVfU0VUX1ZMX09ORVhFQyA+PiAxNikKLSsjZGVmaW5lIFNWRV9QVF9WTF9JTkhFUklUCQkoKDEgPDwgMTcpIC8qIFBSX1NWRV9WTF9JTkhFUklUICovID4+IDE2KQotKyNkZWZpbmUgU1ZFX1BUX1ZMX09ORVhFQwkJKCgxIDw8IDE4KSAvKiBQUl9TVkVfU0VUX1ZMX09ORVhFQyAqLyA+PiAxNikKLSAKLSAKLSAvKgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggNzUlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4yLmJiCmluZGV4IDQ3MzY4OGQuLjlkMThkZjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVyc181LjIuYmIKQEAgLTEyLDggKzEyLDcgQEAKIFNSQ19VUklfYXBwZW5kID0gIlwKICAgICBmaWxlOi8vMDAwMS1zY3JpcHRzLVVzZS1maXhlZC1pbnB1dC1hbmQtb3V0cHV0LWZpbGVzLWluc3RlYWQtb2YtLnBhdGNoIFwKICAgICBmaWxlOi8vMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS1hcm02NC1zdmUtdWFwaS1hc20tcHRyYWNlLmgtc2hvdWxkLW5vdC1kZXBlbmQtb24tdWFwLnBhdGNoIFwKICIKIAotU1JDX1VSSVttZDVzdW1dID0gIjczODFjZThhYWM4MGEwMTQ0OGUwNjVjZTc5NWMxOWMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzN2IxNDFhNjQ5OTE1OWY1YTcyODJkNWViNGIyYmUwNTVmOGU4NjJjY2NlNDRkNzQ2NGU4NzU5YzMxYTJlNDMiCitTUkNfVVJJW21kNXN1bV0gPSAiZGRmOTk0ZGUwMGQ3YjE4Mzk1ODg2ZGQ5YjMwYjkyNjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRhZDY2ZjY3MmUxYTgzMWI1NzRmNWU3MDRlOGEwNWYxZTYxODBhODI0NWQ0YmRkODExMjA4YTZjYjBhYzFlNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKaW5kZXggMzkwMDQ4OS4uYjY4ZDk0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKQEAgLTE0MSw3ICsxNDEsNyBAQAogCSAgICAjIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vb3Bjb2Rlcy5oIHJlZmVyZW5jZXMgYXJjaC9hcm0KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtL2luY2x1ZGUvYXNtL29wY29kZXMuaCAka2VybmVsZGlyL2J1aWxkLwogCi0gICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZXR0aW1lb2ZkYXkuUyAka2VybmVsZGlyL2J1aWxkLworICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vKmdldHRpbWVvZmRheS4qICRrZXJuZWxkaXIvYnVpbGQvCiAgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9zaWdyZXR1cm4uUyAka2VybmVsZGlyL2J1aWxkLwogICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vbm90ZS5TICRrZXJuZWxkaXIvYnVpbGQvCiAgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZW5fdmRzb19vZmZzZXRzLnNoICRrZXJuZWxkaXIvYnVpbGQvCkBAIC0xNzksNiArMTc5LDggQEAKIAogCWNwIC1hIGluY2x1ZGUgJGtlcm5lbGRpci9idWlsZAogCisJY3AgLWEgLS1wYXJlbnRzIGxpYi92ZHNvLyogJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgorCiAJY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2luY2x1ZGUvdG9vbHMvbGVfYnl0ZXNoaWZ0LmggJGtlcm5lbGRpci9idWlsZC8KIAljcCAtYSAtLXBhcmVudHMgdG9vbHMvaW5jbHVkZS90b29scy9iZV9ieXRlc2hpZnQuaCAka2VybmVsZGlyL2J1aWxkLwogCkBAIC0yNDAsNiArMjQyLDE1IEBACiAgICAgIyBDb3B5IC5jb25maWcgdG8gaW5jbHVkZS9jb25maWcvYXV0by5jb25mIHNvICJtYWtlIHByZXBhcmUiIGlzIHVubmVjZXNzYXJ5LgogICAgIGNwICRrZXJuZWxkaXIvYnVpbGQvLmNvbmZpZyAka2VybmVsZGlyL2J1aWxkL2luY2x1ZGUvY29uZmlnL2F1dG8uY29uZgogCisgICAgIyBtYWtlIHRoZSBzY3JpcHRzIHB5dGhvbjMgc2FmZS4gV2Ugd29uJ3QgYmUgcnVubmluZyB0aGVzZSwgYW5kIGlmIHRoZXkgYXJlCisgICAgIyBsZWZ0IGFzIC91c3IvYmluL3B5dGhvbiByb290ZnMgYXNzZW1ibHkgd2lsbCBmYWlsLCBzaW5jZSB3ZSBvbmx5IGhhdmUgcHl0aG9uMworICAgICMgaW4gdGhlIFJERVBFTkRTIChhbmQgdGhlIHB5dGhvbjMgcGFja2FnZSBkb2VzIG5vdCBpbmNsdWRlIC91c3IvYmluL3B5dGhvbikKKyAgICBmb3Igc3MgaW4gJChmaW5kICRrZXJuZWxkaXIvYnVpbGQvc2NyaXB0cyAtdHlwZSBmIC1uYW1lICcqJyk7IGRvCisJc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbjIsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHNzIgorCXNlZCAtaSAncywvdXNyL2Jpbi9lbnYgcHl0aG9uMiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIkc3MiCisJc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIkc3MiCisgICAgZG9uZQorCiAgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KIH0KIApAQCAtMjQ5LDcgKzI2MCw3IEBACiBGSUxFU18ke1BOfSA9ICIke0tFUk5FTF9CVUlMRF9ST09UfSAke0tFUk5FTF9TUkNfUEFUSH0iCiBGSUxFU18ke1BOfS1kYmcgKz0gIiR7S0VSTkVMX0JVSUxEX1JPT1R9Ki9idWlsZC9zY3JpcHRzLyovLmRlYnVnLyoiCiAKLVJERVBFTkRTXyR7UE59ID0gImJjIHB5dGhvbiBmbGV4IGJpc29uICR7VENMSUJDfS11dGlscyIKK1JERVBFTkRTXyR7UE59ID0gImJjIHB5dGhvbjMgZmxleCBiaXNvbiAke1RDTElCQ30tdXRpbHMiCiAjIDQuMTUrIG5lZWRzIHRoZXNlIG5leHQgdHdvIFJERVBFTkRTCiBSREVQRU5EU18ke1BOfSArPSAib3BlbnNzbC1kZXYgdXRpbC1saW51eCIKICMgYW5kIHg4NiBuZWVkcyBhIGJpdCBtb3JlIGZvciA0LjE1KwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LWR0Yi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE5MTI3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgtZHRiLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcHl0aG9uKCkgewotICAgIGJiLndhcm4oIllvdSBhcmUgdXNpbmcgdGhlIGxpbnV4LWR0Yi5pbmMgd2hpY2ggaXMgZGVwcmVjYXRlZC4gWW91IGNhbiBzYWZlbHkgcmVtb3ZlIGl0IGFzIHRoZSBEZXZpY2UgVHJlZSBzdXBwb3J0IGlzIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCB3aGVuIEtFUk5FTF9ERVZJQ0VUUkVFIGlzIHNldC4iKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKaW5kZXggMjI2OGZhZi4uMTYzZjI4MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCkBAIC0zOSw3ICszOSw3IEBACiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKIERFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgogCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXVhcm18cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NCkiCitDT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXVhcm18cWVtdXg4NnxxZW11cHBjfHFlbXVtaXBzfHFlbXVtaXBzNjR8cWVtdXg4Ni02NHxxZW11cmlzY3Y2NCkiCiAKIEtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4yLmJiCmluZGV4IDIyZjNiZjEuLmNmNTE0MmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgpAQCAtMSw0ICsxLDQgQEAKLUtCUkFOQ0ggPz0gInY1LjAvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgorS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCiAKIHJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCiAKQEAgLTExLDEzICsxMSwxMyBAQAogICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCiB9CiAKLVNSQ1JFVl9tYWNoaW5lID89ICJlNmNiODEyYjU1MzI2MzBiNmZjNmRmZDc3NzhkNTdhNDkwN2QzMTgwIgotU1JDUkVWX21ldGEgPz0gIjdmNmU5N2MzNTc3NDYzODJkNDMzOWU3ZTA0NjM2MzdlNzE1YWNkNGIiCitTUkNSRVZfbWFjaGluZSA/PSAiYzZlYjE2OWU5MTRkZWYwMGMzN2NjMjkxNzQ4NmM2MzdkODAwZDQwNCIKK1NSQ1JFVl9tZXRhID89ICJhMzZjODIxMjhkOWNjZWM4NzhkMWMwYzQ1NDJiODdkNmNmNWU5YTdjIgogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMDtkZXN0c3VmZml4PSR7S01FVEF9IgorICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgogCi1MSU5VWF9WRVJTSU9OID89ICI1LjAuMTkiCitMSU5VWF9WRVJTSU9OID89ICI1LjIuMTAiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKc2ltaWxhcml0eSBpbmRleCA2NiUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKaW5kZXggMzM2NzJjNi4uYzIxOTNjMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNS4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMi5iYgpAQCAtMSwxMiArMSwxMiBAQAotS0JSQU5DSCA/PSAidjUuMC9zdGFuZGFyZC90aW55L2Jhc2UiCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NS4wL3N0YW5kYXJkL3RpbnkvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIID89ICJ2NS4yL3N0YW5kYXJkL3RpbnkvYmFzZSIKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjIvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKIAogTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKIEtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgogCiByZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwogCi1MSU5VWF9WRVJTSU9OID89ICI1LjAuMTkiCitMSU5VWF9WRVJTSU9OID89ICI1LjIuMTAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKIAogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCkBAIC0xNSwxNCArMTUsMTQgQEAKIEtNRVRBID0gImtlcm5lbC1tZXRhIgogS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCiAKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImI5MDAxMjg3OTg0YjAwNjY4MTRjODczOWYzOGQ2MjlkZTczNzM5YjciCi1TUkNSRVZfbWFjaGluZSA/PSAiNTVkZDE1MzM2YjczMDFiNjg2YTBjMTgzZjUzNzJiNDljMTAwM2QwMyIKLVNSQ1JFVl9tZXRhID89ICI3ZjZlOTdjMzU3NzQ2MzgyZDQzMzllN2UwNDYzNjM3ZTcxNWFjZDRiIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiOTRkMDMxNTQwNjcwNDliNDE3NTI2ZjQ2NDI5NzI5ZDRiYTFlMDliNyIKK1NSQ1JFVl9tYWNoaW5lID89ICI4ZDhiZjU2YjIzNzNiZmRiMWE5NzAyYjk2YTBlOTFlNjcwNmY2MmQ0IgorU1JDUkVWX21ldGEgPz0gImEzNmM4MjEyOGQ5Y2NlYzg3OGQxYzBjNDU0MmI4N2Q2Y2Y1ZTlhN2MiCiAKIFBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4wO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4yO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCiAKIENPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODdlODhlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1LQlJBTkNIID89ICJ2NS4wL3N0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjAvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAidjUuMC9zdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJ2NS4wL3N0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAidjUuMC9zdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11cmlzY3Y2NCAgPz0gInY1LjAvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInY1LjAvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuMC9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS4wL3N0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJkMWVkOTgwYWQ5ODkyNTJkNDIzODZjOGJjNjNiMmY1ZjExOTg1ZWE0IgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI1NWRkMTUzMzZiNzMwMWI2ODZhMGMxODNmNTM3MmI0OWMxMDAzZDAzIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjE1MjBlNzgxOTVlNjRmMjdiZTQ2YTQ2YThkNjcxMWM4NDcwZmIwODMiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI1NWRkMTUzMzZiNzMwMWI2ODZhMGMxODNmNTM3MmI0OWMxMDAzZDAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gIjAwNjM4Y2RkOGY5Mjg2OWEwZjg5ZWJlMzI4OWZkYmQ4NTZiYTk0NTgiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI1NWRkMTUzMzZiNzMwMWI2ODZhMGMxODNmNTM3MmI0OWMxMDAzZDAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiNTVkZDE1MzM2YjczMDFiNjg2YTBjMTgzZjUzNzJiNDljMTAwM2QwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjlkNDEwNWIzMmNmMTIzYTg2MWJjNzU0Mzc3ZDJmMmUxNTYyNzhhN2UiCi1TUkNSRVZfbWFjaGluZSA/PSAiNTVkZDE1MzM2YjczMDFiNjg2YTBjMTgzZjUzNzJiNDljMTAwM2QwMyIKLVNSQ1JFVl9tZXRhID89ICI3ZjZlOTdjMzU3NzQ2MzgyZDQzMzllN2UwNDYzNjM3ZTcxNWFjZDRiIgotCi0jIHJlbWFwIHFlbXVhcm0gdG8gcWVtdWFybWExNSBmb3IgdGhlIDUuMCBrZXJuZWwKLSMgS01BQ0hJTkVfcWVtdWFybSA/PSAicWVtdWFybWExNSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4wO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotTElOVVhfVkVSU0lPTiA/PSAiNS4wLjE5IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0fHFlbXVyaXNjdjY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTc1ZjE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYgpAQCAtMCwwICsxLDU0IEBACitLQlJBTkNIID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjIvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIX3FlbXVhcm02NCA/PSAidjUuMi9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NS4yL3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjUuMi9zdGFuZGFyZC9xZW11cHBjIgorS0JSQU5DSF9xZW11cmlzY3Y2NCAgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuMi9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS4yL3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJkMzI5ZGM3MjU2ZGZlZjY2ZGVkYjYwNGNhZmVhNWI1Njg1YzU3ZjlkIgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICI4ZDhiZjU2YjIzNzNiZmRiMWE5NzAyYjk2YTBlOTFlNjcwNmY2MmQ0IgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjZhNDZiODI2MTQzMzEzMWVhOTllNTcyNWQzZmQ3NTk2OTAwNDYxN2MiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICI4ZDhiZjU2YjIzNzNiZmRiMWE5NzAyYjk2YTBlOTFlNjcwNmY2MmQ0IgorU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gIjhkOGJmNTZiMjM3M2JmZGIxYTk3MDJiOTZhMGU5MWU2NzA2ZjYyZDQiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICI4ZDhiZjU2YjIzNzNiZmRiMWE5NzAyYjk2YTBlOTFlNjcwNmY2MmQ0IgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiOGQ4YmY1NmIyMzczYmZkYjFhOTcwMmI5NmEwZTkxZTY3MDZmNjJkNCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gIjA2YmQ1NjMwMDlmZmM0ODBiZWZhMGQxMTZmYWVkMThlNjM3ODU3MzkiCitTUkNSRVZfbWFjaGluZSA/PSAiOGQ4YmY1NmIyMzczYmZkYjFhOTcwMmI5NmEwZTkxZTY3MDZmNjJkNCIKK1NSQ1JFVl9tZXRhID89ICJhMzZjODIxMjhkOWNjZWM4NzhkMWMwYzQ1NDJiODdkNmNmNWU5YTdjIgorCisjIHJlbWFwIHFlbXVhcm0gdG8gcWVtdWFybWExNSBmb3IgdGhlIDUuMiBrZXJuZWwKKyMgS01BQ0hJTkVfcWVtdWFybSA/PSAicWVtdWFybWExNSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4yO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorTElOVVhfVkVSU0lPTiA/PSAiNS4yLjEwIgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0fHFlbXVyaXNjdjY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCA0ZTYwM2YxLi43ZjAwZGYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKQEAgLTEzLDcgKzEzLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gInNjcmlwdGluZyB0dWkgbGlidW53aW5kIgogUEFDS0FHRUNPTkZJR1tkd2FyZl0gPSAiLE5PX0RXQVJGPTEiCi1QQUNLQUdFQ09ORklHW3NjcmlwdGluZ10gPSAiLE5PX0xJQlBFUkw9MSBOT19MSUJQWVRIT049MSxwZXJsIHB5dGhvbiIKK1BBQ0tBR0VDT05GSUdbc2NyaXB0aW5nXSA9ICIsTk9fTElCUEVSTD0xIE5PX0xJQlBZVEhPTj0xLHBlcmwgcHl0aG9uMyIKICMgZ3VpIHN1cHBvcnQgd2FzIGFkZGVkIHdpdGgga2VybmVsIDMuNi4zNQogIyBzaW5jZSAzLjEwIGxpYm5ld3Qgd2FzIHJlcGxhY2VkIGJ5IHNsYW5nCiAjIHRvIGNvdmVyIGEgd2lkZSByYW5nZSBvZiBrZXJuZWwgd2UgYWRkIGJvdGggZGVwZW5kZW5jaWVzCkBAIC00NCw4ICs0NCw4IEBACiBpbmhlcml0IGxpbnV4LWtlcm5lbC1iYXNlIGtlcm5lbC1hcmNoIG1hbnBhZ2VzCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQeXRob24gYmluZGluZ3MKLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3B5dGhvbm5hdGl2ZScsICcnLCBkKX0KLWluaGVyaXQgcHl0aG9uLWRpcgoraW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KK2luaGVyaXQgcHl0aG9uMy1kaXIKIGV4cG9ydCBQWVRIT05fU0lURVBBQ0tBR0VTX0RJUgogCiAja2VybmVsIDMuMSsgc3VwcG9ydHMgV0VSUk9SIHRvIGRpc2FibGUgd2FybmluZ3MgYXMgZXJyb3JzCkBAIC05NCw2ICs5NCw3IEBACiAgICAgJ3NoYXJlZGlyPSR7QG9zLnBhdGgucmVscGF0aChkYXRhZGlyLCBwcmVmaXgpfScgXAogICAgICdtYW5kaXI9JHtAb3MucGF0aC5yZWxwYXRoKG1hbmRpciwgcHJlZml4KX0nIFwKICAgICAnaW5mb2Rpcj0ke0Bvcy5wYXRoLnJlbHBhdGgoaW5mb2RpciwgcHJlZml4KX0nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzY3JpcHRpbmcnLCAnUFlUSE9OPXB5dGhvbjMgUFlUSE9OX0NPTkZJRz1weXRob24zLWNvbmZpZycsICcnLCBkKX0gXAogIgogCiAjIER1cmluZyBkb19jb25maWd1cmUsIHdlIG1pZ2h0IHJ1biBhICdtYWtlIGNsZWFuJy4gVGhhdCBvZnRlbiBicmVha3MKQEAgLTEzMiw3ICsxMzMsNyBAQAogCW9lX3J1bm1ha2UgaW5zdGFsbAogCSMgd2UgYXJlIGNoZWNraW5nIGZvciB0aGlzIG1ha2UgdGFyZ2V0IHRvIGJlIGNvbXBhdGlibGUgd2l0aCBvbGRlciBwZXJmIHZlcnNpb25zCiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3RydWUnLCAnZmFsc2UnLCBkKX0gJiYgZ3JlcCAtcSBpbnN0YWxsLXB5dGhvbl9leHQgJHtTfS90b29scy9wZXJmL01ha2VmaWxlKjsgdGhlbgotCQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsLXB5dGhvbl9leHQKKwkgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbC1weXRob25fZXh0CiAJZmkKIH0KIApAQCAtMjMyLDEzICsyMzMsMTkgQEAKICAgICBmaQogCiAgICAgIyB1c2UgL3Vzci9iaW4vZW52IGluc3RlYWQgb2YgdmVyc2lvbiBzcGVjaWZpYyBweXRob24KLSAgICBmb3IgcyBpbiBgZmluZCAke1N9L3Rvb2xzL3BlcmYvc2NyaXB0cy9weXRob24vIC1uYW1lICcqLnB5J2A7IGRvCi0gICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24yLC91c3IvYmluL2VudiBweXRob24sJyAiJHtzfSIKKyAgICBmb3IgcyBpbiBgZmluZCAke1N9L3Rvb2xzL3BlcmYvIC1uYW1lICcqLnB5J2A7IGRvCisgICAgICAgIHNlZCAtaSAncywvdXNyL2Jpbi9weXRob24sL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKKyAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbjIsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKKyAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL2VudiBweXRob24yLC91c3IvYmluL2VudiBweXRob24zLCcgIiR7c30iCiAgICAgZG9uZQogCiAgICAgIyB1bmlzdGQuaCBjYW4gYmUgb3V0IG9mIHN5bmMgYmV0d2VlbiBsaWJjLWhlYWRlcnMgYW5kIHRoZSBjYXB0dXJlZCB2ZXJzaW9uIGluIHRoZSBwZXJmIHNvdXJjZQogICAgICMgc28gd2UgY29weSBpdCBmcm9tIHRoZSBzeXNyb290IHVuaXN0ZC5oIHRvIHRoZSBwZXJmIHVuaXN0ZC5oCiAgICAgaW5zdGFsbCAtRCAtbTA2NDQgJHtTVEFHSU5HX0lOQ0RJUn0vYXNtLWdlbmVyaWMvdW5pc3RkLmggJHtTfS90b29scy9pbmNsdWRlL3VhcGkvYXNtLWdlbmVyaWMvdW5pc3RkLmgKKyAgICBpbnN0YWxsIC1EIC1tMDY0NCAke1NUQUdJTkdfSU5DRElSfS9hc20tZ2VuZXJpYy91bmlzdGQuaCAke1N9L2luY2x1ZGUvdWFwaS9hc20tZ2VuZXJpYy91bmlzdGQuaAorCisgICAgIyBiaXRzLmggY2FuIGhhdmUgdGhlIHNhbWUgaXNzdWVuIGFzIHVuaXN0ZC5oLCBzbyB3ZSBtYWtlIHRoZSB0b29scyB2YXJpYW50IHRha2UgcHJlY2VkZW5jZQorICAgIGluc3RhbGwgLUQgLW0wNjQ0ICR7U30vdG9vbHMvaW5jbHVkZS9saW51eC9iaXRzLmggJHtTfS9pbmNsdWRlL2xpbnV4L2JpdHMuaAogfQogCiBweXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgewpAQCAtMjUyLDkgKzI1OSw5IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICJlbGZ1dGlscyBiYXNoIgogUkRFUEVORFNfJHtQTn0tYXJjaGl2ZSA9KyAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB5dGhvbiA9KyAiYmFzaCBweXRob24gcHl0aG9uLW1vZHVsZXMgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXVkaXQnLCAnYXVkaXQtcHl0aG9uJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LXB5dGhvbiA9KyAiYmFzaCBweXRob24zIHB5dGhvbjMtbW9kdWxlcyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhdWRpdCcsICdhdWRpdC1weXRob24zJywgJycsIGQpfSIKIFJERVBFTkRTXyR7UE59LXBlcmwgPSsgImJhc2ggcGVybCBwZXJsLW1vZHVsZXMiCi1SREVQRU5EU18ke1BOfS10ZXN0cyA9KyAicHl0aG9uIgorUkRFUEVORFNfJHtQTn0tdGVzdHMgPSsgInB5dGhvbjMiCiAKIFJTVUdHRVNUU19TQ1JJUFRJTkcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJyR7UE59LXBlcmwgJHtQTn0tcHl0aG9uJywgJycsZCl9IgogUlNVR0dFU1RTXyR7UE59ICs9ICIke1BOfS1hcmNoaXZlICR7UE59LXRlc3RzICR7UlNVR0dFU1RTX1NDUklQVElOR30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlidmlydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRmMmZiYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSA1ZWIxMGQ5MGFmOTE3OGVkYjY1ZTYwOTFhZTkzOWQxYjViMTliYjc4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDIzIFNlcCAyMDE0IDA0OjQ3OjEwIC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c3RlbXRhcDogYWxsb3cgdG8gZGlzYWJsZSBsaWJ2aXJ0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgMTMgKysrKysrKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGE2MzFhZTcuLmNiNDg4NWIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUyNSwxMCArNTI1LDE1IEBAIGRubCBDaGVjayBmb3IgdGhlIGxpYnZpcnQgYW5kIGxpYnhtbDIgZGV2ZWwgcGFja2FnZXMKLSAKLSBkbmwgV2UgcmVxdWlyZSBsaWJ2aXJ0ID49IDEuMC4yIGJlY2F1c2Ugc3RhcHZpcnQgcmVsaWVzIG9uIHRoZQotIGRubCB2aXJEb21haW5PcGVuQ2hhbm5lbCBmdW5jdGlvbiwgd2hpY2ggd2FzIGltcGxlbWVudGVkIGluIDEuMC4yLgotLVBLR19DSEVDS19NT0RVTEVTKFtsaWJ2aXJ0XSwgW2xpYnZpcnQgPj0gMS4wLjJdLCBbCi0tICAgaGF2ZV9saWJ2aXJ0PXllcwotLSAgIEFDX0RFRklORShbSEFWRV9MSUJWSVJUXSxbMV0sW0RlZmluZSB0byAxIGlmIGxpYnZpcnQgZGV2ZWxvcG1lbnQgbGlicmFyaWVzIGFyZSBpbnN0YWxsZWRdKQotLSAgIF0sIFtoYXZlX2xpYnZpcnQ9bm9dKQotK0FDX0FSR19FTkFCTEUoW2xpYnZpcnRdLAotKyAgQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1saWJ2aXJ0XSwgW0RvIG5vdCB1c2UgbGlidmlydCBldmVuIGlmIHByZXNlbnRdKSkKLSsKLStpZiB0ZXN0ICIkZW5hYmxlX2xpYnZpcnQiICE9IG5vOyB0aGVuCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhbbGlidmlydF0sIFtsaWJ2aXJ0ID49IDEuMC4yXSwgWwotKyAgICAgaGF2ZV9saWJ2aXJ0PXllcwotKyAgICAgQUNfREVGSU5FKFtIQVZFX0xJQlZJUlRdLFsxXSxbRGVmaW5lIHRvIDEgaWYgbGlidmlydCBkZXZlbG9wbWVudCBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZF0pCi0rICAgICBdLCBbaGF2ZV9saWJ2aXJ0PW5vXSkKLStmaQotIEFNX0NPTkRJVElPTkFMKFtIQVZFX0xJQlZJUlRdLCBbdGVzdCAiJHtoYXZlX2xpYnZpcnR9IiA9ICJ5ZXMiXSkKLSBQS0dfQ0hFQ0tfTU9EVUxFUyhbbGlieG1sMl0sIFtsaWJ4bWwtMi4wXSwgWwotICAgIGhhdmVfbGlieG1sMj15ZXMKLS0tIAotMS43LjkuNQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcC9tb25pdG9yLW9wdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL21vbml0b3Itb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MzEzYTVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL21vbml0b3Itb3B0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSA5M2ZjNDc0NGZlZGY2ZmM1OTNlZTY1Njk2OGRhOTdmN2IxODYyYWRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgNCBPY3QgMjAxNiAxNjozNzo1MyArMDEwMAotU3ViamVjdDogW1BBVENIIDQvNl0gc3lzdGVtdGFwOiByYXRpb25hbGlzZSBkZXBlbmRlbmNpZXMKLQotQWRkIGFuIG9wdGlvbiB0byBleHBsaWNpdGx5IGRpc2FibGUgdGhlIG1vbml0b3IgKGFuZCB0aGVyZWZvcmUgdGhlIGRlcGVuZGVuY3kgb24KLWpzb24tYyBhbmQgbmN1cnNlcykuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotLS0tCi0gY29uZmlndXJlLmFjIHwgNSArKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdpdC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBnaXQvY29uZmlndXJlLmFjCi1AQCAtNzY2LDEzICs3NjYsMTYgQEAgZG5sIFdlIHdhbnQgZWl0aGVyIChvciBib3RoKSBweXRob24gcHJvYgotIEFNX0NPTkRJVElPTkFMKFtIQVZFX1BZVEhPTl9QUk9CRVNdLAotICAgW3Rlc3QgIngkaGF2ZV9weXRob24yX3N1cHBvcnQiID0gInh5ZXMiIC1vICJ4JGhhdmVfcHl0aG9uM19zdXBwb3J0IiA9ICJ4eWVzIl0pCi0gCi0rQUNfQVJHX0VOQUJMRShbbW9uaXRvcl0sIEFTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbW9uaXRvcl0sW0Rpc2FibGUgbW9uaXRvcl0pKQotK2lmIHRlc3QgIiRlbmFibGVfbW9uaXRvciIgIT0gIm5vIjsgdGhlbgotIGRubCBDaGVjayBmb3IgcHJlc2VuY2Ugb2YganNvbi1jIGFuZCBuY3Vyc2VzIGZvciB1c2UgaW4gbW9uaXRvciBtb2RlCi0gUEtHX0NIRUNLX01PRFVMRVMoW2pzb25jXSwgW2pzb24tYyA+PSAwLjExXSwgW2hhdmVfanNvbmM9eWVzXSwgW2hhdmVfanNvbmM9bm9dKQotIFBLR19DSEVDS19NT0RVTEVTKFtuY3Vyc2VzXSwgW25jdXJzZXNdLCBbaGF2ZV9uY3Vyc2VzPXllc10sIFtoYXZlX25jdXJzZXM9bm9dKQotLUFNX0NPTkRJVElPTkFMKFtIQVZFX01PTklUT1JfTElCU10sIFt0ZXN0ICIke2hhdmVfanNvbmN9IiA9PSAieWVzIiAtYSAiJHtoYXZlX25jdXJzZXN9IiA9PSAieWVzIl0pCi0gaWYgdGVzdCAiJHtoYXZlX2pzb25jfSIgPT0gInllcyIgLWEgIiR7aGF2ZV9uY3Vyc2VzfSIgPT0geWVzOyB0aGVuCi0gICBBQ19ERUZJTkUoW0hBVkVfTU9OSVRPUl9MSUJTXSxbMV0sW0RlZmluZSB0byAxIGlmIGpzb24tYyBhbmQgbmN1cnNlcyBsaWJyYXJpZXMgYXJlIGluc3RhbGxlZF0pCi0gZmkKLStmaQotK0FNX0NPTkRJVElPTkFMKFtIQVZFX01PTklUT1JfTElCU10sIFt0ZXN0ICIke2hhdmVfanNvbmN9IiA9PSAieWVzIiAtYSAiJHtoYXZlX25jdXJzZXN9IiA9PSAieWVzIiAtYSAiJGVuYWJsZV9tb25pdG9yIiAhPSAibm8iXSkKLSAKLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGFzc2VtYmxlciAuc2VjdGlvbiAiPyIgZmxhZ3Mgc3VwcG9ydF0sIHN0YXBfY3Zfc2VjdGlvbnEsIFsKLSBvbGRfQ0ZMQUdTPSIkQ0ZMQUdTIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvbm8tbXNnZm10LWNoZWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAvbm8tbXNnZm10LWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzg2MGIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL25vLW1zZ2ZtdC1jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNDNmMWIwNDQ0OWJiMWNmN2UwMDkyMjYzZjFjMmEyNWYzZmNhMDhlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDggTm92IDIwMTYgMjM6MDc6NDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCA1LzZdIHN5c3RlbXRhcDogcmVtb3ZlIGV4cGxpY2l0IG1zZ2ZtdCBjaGVjawotCi1UaGVyZSBpcyBubyBuZWVkIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCBtc2dmbXQgd2FzIGZvdW5kIGFzIHRoZSBnZXR0ZXh0IG1hY3JvcwotaGFuZGxlIHRoaXMgZm9yIHVzIGlmIE5MUyBpcyBlbmFibGVkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDQgLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyZWE5YjNjYmYuLjk1NDE3ZjU5YyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzYsMTAgKzM2LDYgQEAgQUNfQ0hFQ0tfRlVOQ1Mob3BlbmF0KQotIEFNX0dOVV9HRVRURVhUKGV4dGVybmFsKQotIEFNX0dOVV9HRVRURVhUX1ZFUlNJT04oWzAuMTkuNF0pCi0gCi0taWYgdGVzdCAieCRHTVNHRk1UIiA9ICJ4OiI7IHRoZW4KLS0gICBBQ19NU0dfRVJST1IoW21pc3NpbmcgZ251IC91c3IvYmluL21zZ2ZtdF0pCi0tZmkKLS0KLSAjIFdlIHdhbnQgdGhlICdQWVRIT04nIHZhcmlibGUgdG8gYmUgcHl0aG9uIHZlcnNpb24gMi4gV2UgYWxzbyB3YW50Ci0gIyBvdXIgY3VzdG9tICdQWVRIT04zJyB2YXJpYmxlIHRvIGJlIHB5dGhvbiB2ZXJzaW9uIDMuCi0gIwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAveDMyX2FiaV90aW1lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXAveDMyX2FiaV90aW1lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOGE3ZWFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwL3gzMl9hYmlfdGltZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZpeCB0aW1lX3QgcHJpbnQgYmVjYXVzZSBpbiB4MzIgQUJJIGlzIGxvbmcgbG9uZyBpbnQgaW5zdGVhZCBvZiBsb25nIGludC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuw61iYWwgTGltw7NuIDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY2FjaGUuY3h4IGIvY2FjaGUuY3h4Ci1pbmRleCAzNTQ2YjMwLi4xOWM3N2NhIDEwMDY0NAotLS0tIGEvY2FjaGUuY3h4Ci0rKysgYi9jYWNoZS5jeHgKLUBAIC0yOTQsNyArMjk0LDExIEBAIGNsZWFuX2NhY2hlKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQotICAgICAgICAgewotICAgICAgICAgICAvL2ludGVydmFsIG5vdCBwYXNzZWQsIGRvbid0IGNvbnRpbnVlCi0gICAgICAgICAgIGlmIChzLnZlcmJvc2UgPiAxKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQgKF9fSUxQMzJfXykKLSsgICAgICAgICAgICBjbG9nIDw8IF9GKCJDYWNoZSBjbGVhbmluZyBza2lwcGVkLCBpbnRlcnZhbCBub3QgcmVhY2hlZCAlbGxkIHMgLyAlbHUgcy4iLAotKyNlbHNlCi0gICAgICAgICAgICAgY2xvZyA8PCBfRigiQ2FjaGUgY2xlYW5pbmcgc2tpcHBlZCwgaW50ZXJ2YWwgbm90IHJlYWNoZWQgJWx1IHMgLyAlbHUgcy4iLAotKyNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRfdGltZS50dl9zZWMtc2Iuc3RfbXRpbWUpLCBjYWNoZV9jbGVhbl9pbnRlcnZhbCkgIDw8IGVuZGw7Ci0gICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0KLUBAIC0zMDIsNyArMzA2LDExIEBAIGNsZWFuX2NhY2hlKHN5c3RlbXRhcF9zZXNzaW9uJiBzKQotICAgICAgICAgewotICAgICAgICAgICAvL2ludGVydmFsIHJlYWNoZWQsIGNvbnRpbnVlCi0gICAgICAgICAgIGlmIChzLnZlcmJvc2UgPiAxKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pICYmIGRlZmluZWQgKF9fSUxQMzJfXykKLSsgICAgICAgICAgICBjbG9nIDw8IF9GKCJDbGVhbmluZyBjYWNoZSwgaW50ZXJ2YWwgcmVhY2hlZCAlbGxkIHMgPiAlbHUgcy4iLAotKyNlbHNlCi0gICAgICAgICAgICAgY2xvZyA8PCBfRigiQ2xlYW5pbmcgY2FjaGUsIGludGVydmFsIHJlYWNoZWQgJWx1IHMgPiAlbHUgcy4iLAotKyNlbmRpZgotICAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJlbnRfdGltZS50dl9zZWMtc2Iuc3RfbXRpbWUpLCBjYWNoZV9jbGVhbl9pbnRlcnZhbCkgIDw8IGVuZGw7Ci0gICAgICAgICB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCBjNTM0OGIzLi5hYmIyYjM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsMTMgKzEsOSBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotU1JDUkVWID0gIjk4NGQ2ZDE2OTZlZDA2NjI2YjA3Y2I2NWFiNTVkNmFlMGVjZTExMzEiCi1QViA9ICI0LjEiCitTUkNSRVYgPSAiNTdjOWFjYTlmMWZmMzJhNmFkZDEwZTAyZWNkMzNiNzMxNGZhZDQ5OSIKK1BWID0gIjQuMStnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvc3lzdGVtdGFwLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUtYWxsb3ctdG8tZGlzYWJsZS1saWJ2aXJ0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3gzMl9hYmlfdGltZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tb25pdG9yLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1tc2dmbXQtY2hlY2sucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtbGV0LWNvbmZpZ3VyZS13cml0ZS1hLXB5dGhvbi1sb2NhdGlvbi1pbnRvLXRoLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1weXRob24tbW9kdWxlcy10by1jb3JyZWN0LWxpYnJhcnktZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3RhcHJ1bi1zdGFwYnBmLWRvbi10LXN1cHBvcnQtaW5zdGFsbGluZy1hLW5vbi1yb290LnBhdGNoIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjL0NWRS0yMDE3LTY4ODgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhYy9DVkUtMjAxNy02ODg4LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDE3OTE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjL0NWRS0yMDE3LTY4ODgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDQzZWNiNjQzMTA3N2ZmNTRlOWRmMjdmNzE3MzdlNmU5NmQ2YzAzOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyMSBBdWcgMjAxOCAxNDo0Njo0MyArMDgwMAotU3ViamVjdDogW1BBVENIXSBGcm9tIDVmNDdiNjNlOWM5NzFlNjM5MTU5MGNhZjAwYTBmMmE1ZWQ2MTJlNjcgTW9uIFNlcCAxNwotIDAwOjAwOjAwIDIwMDEgRnJvbTogRXJpayBkZSBDYXN0cm8gTG9wbyA8ZXJpa2RAbWVnYS1uZXJkLmNvbT4gRGF0ZTogU2F0LCA4Ci0gQXByIDIwMTcgMTg6MzQ6NDkgKzEwMDAgU3ViamVjdDogW1BBVENIXSBzdHJlYW1fZGVjb2Rlci5jOiBGaXggYSBtZW1vcnkgbGVhawotCi1MZWFrIHJlcG9ydGVkIGJ5IFNlY3VuaWEgUmVzZWFyY2guCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnRbaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9ZmxhYy5naXQ7YT1jb21taXQ7Ci0gICAgICAgICAgICAgICAgIGg9NGY0N2I2M2U5Yzk3MWU2MzkxNTkwY2FmMDBhMGYyYTVlZDYxMmU2N10KLQotVXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gMS4zLjIKLUNWRTogQ1ZFLTIwMTctNjg4OAotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYkZMQUMvc3RyZWFtX2RlY29kZXIuYyBiL3NyYy9saWJGTEFDL3N0cmVhbV9kZWNvZGVyLmMKLWluZGV4IGQzNjRiMGMuLmViZjkzZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCi0rKysgYi9zcmMvbGliRkxBQy9zdHJlYW1fZGVjb2Rlci5jCi1AQCAtMTc1OSw2ICsxNzU5LDkgQEAgRkxBQ19fYm9vbCByZWFkX21ldGFkYXRhX3ZvcmJpc2NvbW1lbnRfKEZMQUNfX1N0cmVhbURlY29kZXIgKmRlY29kZXIsIEZMQUNfX1N0cmUKLSAJCQkJCX0KLSAJCQkJCW1lbXNldCAob2JqLT5jb21tZW50c1tpXS5lbnRyeSwgMCwgb2JqLT5jb21tZW50c1tpXS5sZW5ndGgpIDsKLSAJCQkJCWlmICghRkxBQ19fYml0cmVhZGVyX3JlYWRfYnl0ZV9ibG9ja19hbGlnbmVkX25vX2NyYyhkZWNvZGVyLT5wcml2YXRlXy0+aW5wdXQsIG9iai0+Y29tbWVudHNbaV0uZW50cnksIG9iai0+Y29tbWVudHNbaV0ubGVuZ3RoKSkgewotKwkJCQkJCS8qIEN1cnJlbnQgaS10aCBlbnRyeSBpcyBiYWQsIHNvIHdlIGRlbGV0ZSBpdC4gKi9cCi0rCQkJCQkJZnJlZSAob2JqLT5jb21tZW50c1tpXS5lbnRyeSkgOwotKwkJCQkJCW9iai0+Y29tbWVudHNbaV0uZW50cnkgPSBOVUxMIDsJCQkJCQkKLSAJCQkJCQlvYmotPm51bV9jb21tZW50cyA9IGk7Ci0gCQkJCQkJZ290byBza2lwOwotIAkJCQkJfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiCnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMy5iYgppbmRleCBlODU5OWY2Li5mZWEyYmUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsYWMvZmxhY18xLjMuMy5iYgpAQCAtMTUsMTEgKzE1LDEwIEBACiBERVBFTkRTID0gImxpYm9nZyIKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL2ZsYWMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE3LTY4ODgucGF0Y2ggIgorIgogCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NTRmMWJmYTNmOTNjYzcwODA5OGQ3ODkwZDA0OTliZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWNmYzNlZDYxZGM0MGY0N2YwNTBhMTA5YjA4NjEwNjY3ZDczNDc3YWY2ZWYzNmRjYWQzMWMzMWE0YThkNTNmIgorU1JDX1VSSVttZDVzdW1dID0gIjI2NzAzZWQyODU4YzFmYzlmZmMwNTEzNmQxM2RhYTY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxM2U4MmJkNzE2YzlkZTZkYjJmOThiY2FkYmM0YzI0YzdlMmVmZThjNzU5MzlhMWE4NGUyODUzOWM0ZTE3NDgiCiAKIENWRV9QUk9EVUNUID0gImxpYmZsYWMgZmxhYyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy40LmJiCnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvZ2cvbGlib2dnXzEuMy40LmJiCmluZGV4IDhkODhmMWYuLjhjYTAwMTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib2dnL2xpYm9nZ18xLjMuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9nZy9saWJvZ2dfMS4zLjQuYmIKQEAgLTExLDcgKzExLDcgQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL29nZy8ke0JQfS50YXIueHoiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4N2VkNzQyMDQ3ZjA2NTA0NmViNmMzNjc0NWQ4NzFiOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZjNmYzYxNzhhNTMzZDM5MjA2NGYxNDc3NmIyM2MzOTdlZDRiOWY0OGY1ZGUyOTdhYmE3M2I2NDNmOTU1YzA4IgorU1JDX1VSSVttZDVzdW1dID0gImVhZGVmMjRhYWQ2ZTNlODM3OWJhMGQxNDk3MWZkNjRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMxNjNiYzEyYmMzMDBjNDAxYjZhYTM1OTA3YWM2ODI2NzFlYTM3NmYxM2FlMDk2OWEyMjBmN2RkZjcxODkzZmUiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCmluZGV4IGI2NzNjZDcuLjVhYTBhYTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKQEAgLTE0LDYgKzE0LDEwIEBACiAgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKICAgICAgICAgICAgIGZpbGU6Ly9ydF9ibWFyay5weSBcCiAgICAgICAgICAgICIKKworIyBydC10ZXN0cyBuZWVkcyBQSSBtdXRleCBzdXBwb3J0IGluIGxpYmMKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKwogIyBEbyBub3QgaW5zdGFsbCBod2xhdGRldGVjdAogRVhUUkFfT0VNQUtFICs9ICJQWUxJQj0nJyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLmJiCmluZGV4IGI4OTc5NTAuLjY3MzEwNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8uYmIKQEAgLTEwLDMgKzEwLDYgQEAKIAogVE9PTENIQUlOX0hPU1RfVEFTS19hcHBlbmQgPSAiIG5hdGl2ZXNkay1pbnRsdG9vbCBuYXRpdmVzZGstZ2xpYi0yLjAiCiBUT09MQ0hBSU5fSE9TVF9UQVNLX3JlbW92ZV90YXNrLXBvcHVsYXRlLXNkay1leHQgPSAiIG5hdGl2ZXNkay1pbnRsdG9vbCBuYXRpdmVzZGstZ2xpYi0yLjAiCisKK1FCX01FTSA9ICcke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICItbSA1MTIiLCAiLW0gMjU2IiwgZCl9JworUUJfTUVNX3FlbXVtaXBzID0gIi1tIDI1NiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoCmluZGV4IDY2NGNlYTkuLmU3YzY2OGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrLzAwMDEtVHdlYWstZ3RrZG9jLXNldHRpbmdzLXNvLXRoYXQtZ3RrZG9jLWdlbmVyYXRpb24td29yay5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDM3OTZhZDFhMTkyMzNlZTVkMzQ5MmE1NTYwZDdlZGU4ODJmODljZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNGI1ZTAyMjEyYTMxYjgyZmM5YjNiZWNhZDkwNTQyMjc0ODE2ZmMyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogRGF0ZTogVGh1LCAxMSBBdWcgMjAxNiAxNzoxMzo1MSArMDMwMAogU3ViamVjdDogW1BBVENIXSBUd2VhayBndGtkb2Mgc2V0dGluZ3Mgc28gdGhhdCBndGtkb2MgZ2VuZXJhdGlvbiB3b3JrcyB1bmRlcgpAQCAtMTcsMjMgKzE3LDIzIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvR3RrRG9jLmNtYWtlIGIvU291cmNlL2NtYWtlL0d0a0RvYy5jbWFrZQotaW5kZXggMmVlMDU1NTAuLjZjYjYzMTNkIDEwMDY0NAoraW5kZXggYjBmYjMxY2EuLjZjYjYzMTNkIDEwMDY0NAogLS0tIGEvU291cmNlL2NtYWtlL0d0a0RvYy5jbWFrZQogKysrIGIvU291cmNlL2NtYWtlL0d0a0RvYy5jbWFrZQogQEAgLTQsNyArNCw3IEBAIG1hY3JvKEFERF9HVEtET0NfR0VORVJBVE9SIF9zdGFtcF9uYW1lIF9leHRyYV9hcmdzKQogICAgICBhZGRfY3VzdG9tX2NvbW1hbmQoCiAgICAgICAgICBPVVRQVVQgIiR7Q01BS0VfQklOQVJZX0RJUn0vJHtfc3RhbXBfbmFtZX0iCiAgICAgICAgICBERVBFTkRTICR7RG9jdW1lbnRhdGlvbkRlcGVuZGVuY2llc30KLS0gICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlbnYgIkNDPSR7Q01BS0VfQ19DT01QSUxFUn0iICJDRkxBR1M9JHtDTUFLRV9DX0ZMQUdTfSAtV25vLXVudXNlZC1wYXJhbWV0ZXIiICR7Q01BS0VfU09VUkNFX0RJUn0vVG9vbHMvZ3RrZG9jL2dlbmVyYXRlLWd0a2RvYyAke19leHRyYV9hcmdzfQorLSAgICAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVudiAiQ0M9JHtDTUFLRV9DX0NPTVBJTEVSfSIgIkNGTEFHUz0ke0NNQUtFX0NfRkxBR1N9IC1Xbm8tdW51c2VkLXBhcmFtZXRlciIgIkxERkxBR1M9JHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSIgJHtDTUFLRV9TT1VSQ0VfRElSfS9Ub29scy9ndGtkb2MvZ2VuZXJhdGUtZ3RrZG9jICR7X2V4dHJhX2FyZ3N9CiArICAgICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZW52ICJDQz0ke0NNQUtFX0NfQ09NUElMRVJ9IiAiQ0ZMQUdTPSR7Q01BS0VfQ19GTEFHU30gLVduby11bnVzZWQtcGFyYW1ldGVyIiAiTEQ9JHtDTUFLRV9DX0NPTVBJTEVSfSIgIkxERkxBR1M9JHtDTUFLRV9DX0xJTktfRkxBR1N9IiAiUlVOPSR7Q01BS0VfQklOQVJZX0RJUn0vZ3RrZG9jLXFlbXV3cmFwcGVyIiAke0NNQUtFX1NPVVJDRV9ESVJ9L1Rvb2xzL2d0a2RvYy9nZW5lcmF0ZS1ndGtkb2MgJHtfZXh0cmFfYXJnc30KICAgICAgICAgIENPTU1BTkQgdG91Y2ggJHtfc3RhbXBfbmFtZX0KICAgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICIke0NNQUtFX0JJTkFSWV9ESVJ9IgogICAgICAgICAgVkVSQkFUSU0KIGRpZmYgLS1naXQgYS9Ub29scy9ndGtkb2MvZ3RrZG9jLnB5IGIvVG9vbHMvZ3RrZG9jL2d0a2RvYy5weQotaW5kZXggODFlZThjZGMuLjNlMTFjMmYwIDEwMDY0NAoraW5kZXggMDU0Y2FmYTEuLjQxNmRlN2QxIDEwMDY0NAogLS0tIGEvVG9vbHMvZ3RrZG9jL2d0a2RvYy5weQogKysrIGIvVG9vbHMvZ3RrZG9jL2d0a2RvYy5weQotQEAgLTMxNyw5ICszMTcsOSBAQCBjbGFzcyBHVEtEb2Mob2JqZWN0KToKK0BAIC0zMjAsOSArMzIwLDkgQEAgY2xhc3MgR1RLRG9jKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xkZmxhZ3MgPSAnJXMgJXMnICUgKGFkZGl0aW9uYWxfbGRmbGFncywgYXJnKQogICAgICAgICAgICAgIGxkZmxhZ3MgPSAnICItTCVzIiAlcyAnICUgKHNlbGYubGlicmFyeV9wYXRoLCBhZGRpdGlvbmFsX2xkZmxhZ3MpICsgbGRmbGFncwogICAgICAgICAgICAgIGN1cnJlbnRfbGRfbGlicmFyeV9wYXRoID0gZW52LmdldCgnTERfTElCUkFSWV9QQVRIJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVVucmV2aWV3ZWQtZml4LWJ1aWxkLWZhaWx1cmUtaHR0cHMtYnVncy53ZWJraXQub3JnLXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1VbnJldmlld2VkLWZpeC1idWlsZC1mYWlsdXJlLWh0dHBzLWJ1Z3Mud2Via2l0Lm9yZy1zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTUwYTBkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLVVucmV2aWV3ZWQtZml4LWJ1aWxkLWZhaWx1cmUtaHR0cHMtYnVncy53ZWJraXQub3JnLXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDRiYzI0MTUzOTI0NmY3YTE3ZDA3MzU3MjU3YWI0N2NiOTZiYzRiNjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAieXN1enVraUBhcHBsZS5jb20iIDx5c3V6dWtpQGFwcGxlLmNvbT4KLURhdGU6IFRodSwgMTggQXByIDIwMTkgMDc6MzA6MTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5yZXZpZXdlZCwgZml4IGJ1aWxkIGZhaWx1cmUKLSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk1OTM4Ci0KLUluY2x1ZGluZyA8YXJyYXk+LgotCi0qIGJtYWxsb2MvQXZhaWxhYmxlTWVtb3J5LmNwcDoKLQotZ2l0LXN2bi1pZDogaHR0cDovL3N2bi53ZWJraXQub3JnL3JlcG9zaXRvcnkvd2Via2l0L3RydW5rQDI0NDQyMiAyNjhmNDVjYy1jZDA5LTA0MTAtYWIzYy1kNTI2OTFiNGRiZmMKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL1dlYktpdC93ZWJraXQvY29tbWl0Lzg0YzExMWRjMGQ4M2I1YWNmNjA3MDZlZjQ5YmMyZjVlOTExMTI0NzFdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BdmFpbGFibGVNZW1vcnkuY3BwIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0F2YWlsYWJsZU1lbW9yeS5jcHAgYi9Tb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0F2YWlsYWJsZU1lbW9yeS5jcHAKLWluZGV4IDU5NTg4OWZlLi5iNzIwMDBkNSAxMDA2NDQKLS0tLSBhL1NvdXJjZS9ibWFsbG9jL2JtYWxsb2MvQXZhaWxhYmxlTWVtb3J5LmNwcAotKysrIGIvU291cmNlL2JtYWxsb2MvYm1hbGxvYy9BdmFpbGFibGVNZW1vcnkuY3BwCi1AQCAtMzIsNiArMzIsNyBAQAotICNpbmNsdWRlICJQZXJQcm9jZXNzLmgiCi0gI2luY2x1ZGUgIlNjYXZlbmdlci5oIgotICNpbmNsdWRlICJTaXplcy5oIgotKyNpbmNsdWRlIDxhcnJheT4KLSAjaW5jbHVkZSA8bXV0ZXg+Ci0gI2lmIEJPUyhEQVJXSU4pCi0gI2lmIEJQTEFURk9STShJT1NfRkFNSUxZKQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI0LjQuYmIKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjQuMy5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc2F0by93ZWJraXQvd2Via2l0Z3RrXzIuMjQuNC5iYgppbmRleCAwZTVlZTViLi44YzY5NWNlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNC4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI0LjQuYmIKQEAgLTIzLDExICsyMywxMCBAQAogICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9hcnJheS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9uYXJyb3dpbmcucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItYWRkLWEtbWlzc2luZy1mb3JtYXQtc3RyaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVW5yZXZpZXdlZC1maXgtYnVpbGQtZmFpbHVyZS1odHRwcy1idWdzLndlYmtpdC5vcmctcy5wYXRjaCBcCiAgICAgICAgICAgICIKIAotU1JDX1VSSVttZDVzdW1dID0gImUyYTViYmQwOWEyMTdlYmEwOTZhMmQxNTYyMTQzZTM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0MGQ3NDZkN2U4MmMzNTcyMjJmZWI1YjNmNDRjNGIyMDFlODFkZjdkODFkZGNhNWNhMmJmM2FlMGFjZjZjNTEiCitTUkNfVVJJW21kNXN1bV0gPSAiYzIxNDk2M2Q4YzBlN2Q4MzQ2MGRhMDRhMGQ4ZGRhODciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY2OGIxMjljMDI2NjI0ZWMyMjZhNGNjY2Y0OTk1ZjlkMjZmM2U4OGZjMjhhYjc1YjBlOTY1ZjNjMzJiN2RkOCIKIAogaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZGlzdHJvX2ZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCiAKQEAgLTY5LDcgKzY4LDcgQEAKIAkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T04nLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PRkYnLCBkKX0gXAogCQkke0BiYi51dGlscy5jb250YWlucygnR1RLRE9DX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9HVEtET0M9T04nLCAnLURFTkFCTEVfR1RLRE9DPU9GRicsIGQpfSBcCiAJCS1ERU5BQkxFX01JTklCUk9XU0VSPU9OIFwKLSAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPWB3aGljaCBweXRob25gIFwKKyAgICAgICAgICAgICAgICAtRFBZVEhPTl9FWEVDVVRBQkxFPWB3aGljaCBweXRob24zYCBcCiAJCSIKIAogIyBKYXZhc2NyaXB0IEpJVCBpcyBub3Qgc3VwcG9ydGVkIG9uIEFSQwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjY5LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTRmOTZlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi0KLVNVTU1BUlkgPSAiUG9ydGFibGUgQm9vc3QuSmFtIGJ1aWxkIHRvb2wgZm9yIGJvb3N0IgotU0VDVElPTiA9ICJkZXZlbCIKLQotaW5oZXJpdCBuYXRpdmUKLQotU1JDX1VSSSArPSAiZmlsZTovL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2ggXAotIgotCi1kb19jb21waWxlKCkgewotICAgIC4vYm9vdHN0cmFwLnNoIC0td2l0aC10b29sc2V0PWdjYwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KLSAgICAjIGluc3RhbGwgdW5zdHJpcHBlZCB2ZXJzaW9uIGZvciBiamFtCi0gICAgaW5zdGFsbCAtYyAtbSA3NTUgYmphbS5kZWJ1ZyAke0R9JHtiaW5kaXJ9L2JqYW0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjcxLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg0M2ViMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCisKK1NVTU1BUlkgPSAiUG9ydGFibGUgQm9vc3QuSmFtIGJ1aWxkIHRvb2wgZm9yIGJvb3N0IgorU0VDVElPTiA9ICJkZXZlbCIKKworaW5oZXJpdCBuYXRpdmUKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQnVpbGQtZGVidWctdmVyc2lvbi1vZi1iamFtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLnNoLXVzZS1ETkRFQlVHLWFsc28taW4tZGVidWctYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitkb19jb21waWxlKCkgeworICAgIC4vYm9vdHN0cmFwLnNoIC0td2l0aC10b29sc2V0PWdjYworfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS8KKyAgICAjIGluc3RhbGwgdW5zdHJpcHBlZCB2ZXJzaW9uIGZvciBiamFtCisgICAgaW5zdGFsbCAtYyAtbSA3NTUgYjIgJHtEfSR7YmluZGlyfS9iamFtCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNjkuMC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzEuMC5pbmMKc2ltaWxhcml0eSBpbmRleCA3NyUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY5LjAuaW5jCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzEuMC5pbmMKaW5kZXggOTIzNDM2Yi4uNzE2NGQwZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjY5LjAuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43MS4wLmluYwpAQCAtMTEsOSArMTEsOSBAQAogQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgogQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCiAKLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvYm9vc3QvYm9vc3QvJHtQVn0vJHtCT09TVF9QfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImExMzMyNDk0Mzk3YmY0ODMzMmNiMTUyYWJmZWZjZWMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmMzJkNDYxNzM5MGQxYzJkMTZmMjZhMjdhYjYwZDk3ODA3YjM1NDQwZDQ1ODkxZmEzNDBmYzI2NDhiMDQ0MDYiCitTUkNfVVJJID0gImh0dHBzOi8vZGwuYmludHJheS5jb20vYm9vc3RvcmcvcmVsZWFzZS8ke1BWfS9zb3VyY2UvJHtCT09TVF9QfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjRjZGY5YjVjMmRjMDFmYjJiN2I3MzNkNWFmMzBlNTU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3M2E4ZGEwMWU4YmY4YzdlZGE0MGI0Yzg0OTE1MDcxYThjOGEwZGY0YTY3MzQ1MzdkZGRlNGE4NTgwNTI0ZWUiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vd3d3LmJvb3N0Lm9yZy91c2Vycy9kb3dubG9hZC8iCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJib29zdG9yZy9yZWxlYXNlLyg/UDxwdmVyPi4qKS9zb3VyY2UvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwppbmRleCBmMzg1NTQxLi5lMTVkY2U0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYwpAQCAtODMsNyArODMsNyBAQAogCiAjIC1kZXYgbGFzdCB0byBwaWNrIHVwIHRoZSByZW1haW5pbmcgc3R1ZmYKIFBBQ0tBR0VTICs9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgotRklMRVNfJHtQTn0tZGV2ID0gIiR7aW5jbHVkZWRpcn0gJHtsaWJkaXJ9L2xpYmJvb3N0Xyouc28iCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliYm9vc3RfKi5zbyAke2xpYmRpcn0vY21ha2UiCiBGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYmJvb3N0XyouYSIKIAogIyAiYm9vc3QiIGlzIGEgbWV0YXBhY2thZ2Ugd2hpY2ggcHVsbHMgaW4gYWxsIGJvb3N0IGxpYnJhYnJpZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QvMDAwMS1Eb24tdC1zZXQtdXAtYXJjaC1pbnN0cnVjdGlvbi1zZXQtZmxhZ3Mtd2UtZG8tdGhhdC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKaW5kZXggODk0NGNiMy4uNjhkNmU2NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC8wMDAxLURvbi10LXNldC11cC1hcmNoLWluc3RydWN0aW9uLXNldC1mbGFncy13ZS1kby10aGF0LW8ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNlNGViMDJlYjU5NTEwNThiYzZmOGRmZmJmMDQ5ZWIxODlkZjgyOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY0ZDNmYWQ0M2Q2NzgwOGQ3MTMyNWJhMGRmMTQ1NzU1NWI5YTAwODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMTggRGVjIDIwMTggMTU6NDI6NTcgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG9uJ3Qgc2V0IHVwIGFyY2gvaW5zdHJ1Y3Rpb24tc2V0IGZsYWdzLCB3ZSBkbyB0aGF0IG91cnNlbHZlcwpAQCAtNiwxNSArNiwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKIC0tLQotIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMTI4IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTI4IGRlbGV0aW9ucygtKQorIHRvb2xzL2J1aWxkL3NyYy90b29scy9nY2MuamFtIHwgMTMyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTMyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0gYi90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQotaW5kZXggYzU3Yzc3M2YuLjI4NjE4ZmIxIDEwMDY0NAoraW5kZXggYjliYjljZjJhLi5jN2UzY2YzZmUgMTAwNjQ0CiAtLS0gYS90b29scy9idWlsZC9zcmMvdG9vbHMvZ2NjLmphbQogKysrIGIvdG9vbHMvYnVpbGQvc3JjL3Rvb2xzL2djYy5qYW0KLUBAIC0xMTUyLDEzMSArMTE1MiwzIEBAIGxvY2FsIHJ1bGUgY3B1LWZsYWdzICggdG9vbHNldCB2YXJpYWJsZSA6IGFyY2hpdGVjdHVyZSA6IGluc3RydWN0aW9uLXNldCArIDoKK0BAIC0xMTgwLDEzNSArMTE4MCwzIEBAIGxvY2FsIHJ1bGUgY3B1LWZsYWdzICggdG9vbHNldCB2YXJpYWJsZSA6IGFyY2hpdGVjdHVyZSA6IGluc3RydWN0aW9uLXNldCArIDoKICAgICAgICAgIDxhcmNoaXRlY3R1cmU+JChhcmNoaXRlY3R1cmUpLzxpbnN0cnVjdGlvbi1zZXQ+JChpbnN0cnVjdGlvbi1zZXQpCiAgICAgICAgICA6ICQodmFsdWVzKSA7CiAgfQpAQCAtMTQ0LDUgKzE0NSw5IEBACiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogcG93ZXIgOiByaW9zMiA6IC1tY3B1PXJpb3MyIDsKIC1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiBwb3dlciA6IHJzYyA6IC1tY3B1PXJzYyA7CiAtY3B1LWZsYWdzIGdjYyBPUFRJT05TIDogcG93ZXIgOiByczY0YSA6IC1tY3B1PXJzNjQgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHMzOTB4IDogejE5NiA6IC1tYXJjaD16MTk2IDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiBzMzkweCA6IHpFQzEyIDogLW1hcmNoPXpFQzEyIDsKKy1jcHUtZmxhZ3MgZ2NjIE9QVElPTlMgOiBzMzkweCA6IHoxMyA6IC1tYXJjaD16MTMgOworLWNwdS1mbGFncyBnY2MgT1BUSU9OUyA6IHMzOTB4IDogejE0IDogLW1hcmNoPXoxNCA7CiAtIyBBSVggdmFyaWFudCBvZiBSUy82MDAwICYgUG93ZXJQQwogLXRvb2xzZXQuZmxhZ3MgZ2NjIEFST1BUSU9OUyA8YWRkcmVzcy1tb2RlbD42NC88dGFyZ2V0LW9zPmFpeCA6ICItWDY0IiA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjkuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43MS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNjkuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcxLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvMDAwMS1CdWlsZC1kZWJ1Zy12ZXJzaW9uLW9mLWJqYW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtQnVpbGQtZGVidWctdmVyc2lvbi1vZi1iamFtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2ZGNlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtQnVpbGQtZGVidWctdmVyc2lvbi1vZi1iamFtLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gMTljMTE3YzNkMTM4ODY1NGRhNDg0ZTI2YWZiM2ZiNmMzZTQxODFhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IERhbmllbCBLbGF1ZXIgPGRhbmllbC5rbGF1ZXJAZ2luLmRlPgorRGF0ZTogVHVlLCAzMCBKdWwgMjAxOSAxMTozOTowOSArMDIwMAorU3ViamVjdDogW1BBVENIXSBCdWlsZCBkZWJ1ZyB2ZXJzaW9uIG9mIGJqYW0KKworYmphbSBpcyBzdHJpcHBlZCBieSBkZWZhdWx0LCB0aGlzIGNhdXNlcyBRQSB3YXJuaW5nIHdoaWxlIHN0cmlwcGluZyBpdAorZnJvbSBkb19wb3B1bGF0ZV9zeXNyb290KCk6CisKKyAgV0FSTklORzogRmlsZSAnLi4uL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9iamFtJyBcCisgICAgZnJvbSBiamFtLW5hdGl2ZSB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgXAorICAgIHRoaXMgd2lsbCBwcmV2ZW50IGZ1dHVyZSBkZWJ1Z2dpbmchCisKK1RoZSBKQU0gc2NyaXB0cyBhbGxvdyB0byBidWlsZCB1bnN0cmlwcGVkIHZlcnNpb24gd2l0aCAnLS1kZWJ1ZycuIEp1c3QKK2J1aWxkIGFuZCBpbnN0YWxsIHRoZSBiamFtLmRlYnVnIHRvIHN0b3AgYmphbSBmcm9tIGJlaW5nIHN0cmlwcGVkIGluCitjb21waWxlIHN0ZXAuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgYm9vdHN0cmFwLnNoIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYm9vdHN0cmFwLnNoIGIvYm9vdHN0cmFwLnNoCitpbmRleCBjYTBiMDhkNTguLjg3ZjM4ZGNmMiAxMDA3NTUKKy0tLSBhL2Jvb3RzdHJhcC5zaAorKysrIGIvYm9vdHN0cmFwLnNoCitAQCAtMjIzLDcgKzIyMyw3IEBAIHJtIC1mIGNvbmZpZy5sb2cKKyBpZiB0ZXN0ICJ4JEJKQU0iID0geDsgdGhlbgorICAgJEVDSE8gLW4gIkJ1aWxkaW5nIEJvb3N0LkJ1aWxkIGVuZ2luZSB3aXRoIHRvb2xzZXQgJFRPT0xTRVQuLi4gIgorICAgcHdkPWBwd2RgCistICAoY2QgIiRteV9kaXIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZSIgJiYgLi9idWlsZC5zaCAiJFRPT0xTRVQiKSA+IGJvb3RzdHJhcC5sb2cgMj4mMQorKyAgKGNkICIkbXlfZGlyL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUiICYmIC4vYnVpbGQuc2ggIiRUT09MU0VUIiAtLWRlYnVnKSA+IGJvb3RzdHJhcC5sb2cgMj4mMQorICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgZWNobworICAgICAgIGVjaG8gIkZhaWxlZCB0byBidWlsZCBCb29zdC5CdWlsZCBidWlsZCBlbmdpbmUiIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLWJ1aWxkLnNoLXVzZS1ETkRFQlVHLWFsc28taW4tZGVidWctYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLWJ1aWxkLnNoLXVzZS1ETkRFQlVHLWFsc28taW4tZGVidWctYnVpbGRzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNmVmMmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtYnVpbGQuc2gtdXNlLUROREVCVUctYWxzby1pbi1kZWJ1Zy1idWlsZHMucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSAyYWZkMDI1OTk3YTU3Nzk0Y2UyNGUwN2U5MTRiNDYxZGZlYTZiYTVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI2IEF1ZyAyMDE5IDE2OjA0OjE2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkLnNoOiB1c2UgLUROREVCVUcgYWxzbyBpbiBkZWJ1ZyBidWlsZHMKKworV2l0aG91dCBpdCwgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBwZXJmb3JtYW5jZSByZWdyZXNzaW9uCit3aGVuIHJ1bm5pbmcgJ2JqYW0gaW5zdGFsbCcuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2ggYi90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCitpbmRleCBhMWU0Y2QzMzUuLjY0ZTBhNGM4MCAxMDA3NTUKKy0tLSBhL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2gKKysrKyBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2gKK0BAIC00MzYsNyArNDM2LDcgQEAgY2FzZSAkQjJfT1MgaW4KKyAgICAgOzsKKyBlc2FjCisgCistaWYgY2hlY2tfZGVidWdfYnVpbGQgIiRAIiA7IHRoZW4gQjJfQ1hYRkxBR1M9IiR7QjJfQ1hYRkxBR1NfREVCVUd9IgorK2lmIGNoZWNrX2RlYnVnX2J1aWxkICIkQCIgOyB0aGVuIEIyX0NYWEZMQUdTPSIke0IyX0NYWEZMQUdTX0RFQlVHfSAtRE5ERUJVRyIKKyBlbHNlIEIyX0NYWEZMQUdTPSIke0IyX0NYWEZMQUdTX1JFTEVBU0V9IC1ETkRFQlVHIgorIGZpCisgZWNob19ydW4gJHtCMl9DWFh9ICR7Q1hYRkxBR1N9ICR7QjJfQ1hYRkxBR1N9ICR7QjJfU09VUkNFU30gLW8gYjIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvZmlsZXMvYmphbS1uYXRpdmUtYnVpbGQtYmphbS5kZWJ1Zy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWY4YjdlYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzL2JqYW0tbmF0aXZlLWJ1aWxkLWJqYW0uZGVidWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDYxOWFkYTMxNGFiMjZjMGM5Y2JmZTU3MDJjZDljMGNhYThmNjQxNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMyBBdWcgMjAxNSAxNzoxMjozMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBiamFtLW5hdGl2ZTogYnVpbGQgYmphbS5kZWJ1ZwotCi1iamFtIGlzIHN0cmlwcGVkIGJ5IGRlZmF1bHQsIHRoaXMgY2F1c2VzIFFBIHdhcm5pbmcgd2hpbGUgc3RyaXBwaW5nIGl0Ci1mcm9tIGRvX3BvcHVsYXRlX3N5c3Jvb3QoKToKLQotICBXQVJOSU5HOiBGaWxlICcuLi4vdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL2JqYW0nIFwKLSAgICBmcm9tIGJqYW0tbmF0aXZlIHdhcyBhbHJlYWR5IHN0cmlwcGVkLCBcCi0gICAgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEKLQotVGhlIEpBTSBzY3JpcHRzIGFsbG93IHRvIGJ1aWxkIHVuc3RyaXBwZWQgdmVyc2lvbiB3aXRoICctLWRlYnVnJy4gSnVzdAotYnVpbGQgYW5kIGluc3RhbGwgdGhlIGJqYW0uZGVidWcgdG8gc3RvcCBiamFtIGZyb20gYmVpbmcgc3RyaXBwZWQgaW4KLWNvbXBpbGUgc3RlcC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBXZW56b25nIEZhbiA8d2Vuem9uZy5mYW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIGJvb3RzdHJhcC5zaCAgICAgICAgICAgICAgICAgICAgfCAxICsKLSB0b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9ib290c3RyYXAuc2ggYi9ib290c3RyYXAuc2gKLWluZGV4IDk4Y2Y4OGIuLjU0NjkwYWEgMTAwNzU1Ci0tLS0gYS9ib290c3RyYXAuc2gKLSsrKyBiL2Jvb3RzdHJhcC5zaAotQEAgLTIyOCw2ICsyMjgsNyBAQCBpZiB0ZXN0ICJ4JEJKQU0iID0geDsgdGhlbgotICAgZWNobyAidG9vbHMvYnVpbGQvc3JjL2VuZ2luZS8kYXJjaC9iMiIKLSAgIGNwICIkQkpBTSIgLgotICAgY3AgIiRteV9kaXIvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS8kYXJjaC9iamFtIiAuCi0rICBjcCAiJG15X2Rpci90b29scy9idWlsZC9zcmMvZW5naW5lLyR7YXJjaH0uZGVidWcvYmphbSIgYmphbS5kZWJ1ZwotIAotIGZpCi0gCi1kaWZmIC0tZ2l0IGEvdG9vbHMvYnVpbGQvc3JjL2VuZ2luZS9idWlsZC5zaCBiL3Rvb2xzL2J1aWxkL3NyYy9lbmdpbmUvYnVpbGQuc2gKLWluZGV4IDZkYmM3MDYuLmM2OWZkYzcgMTAwNzU1Ci0tLS0gYS90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCi0rKysgYi90b29scy9idWlsZC9zcmMvZW5naW5lL2J1aWxkLnNoCi1AQCAtMzEyLDUgKzMxMiw1IEBAIGlmIHRlc3QgLXggIi4vYm9vdHN0cmFwL2phbTAiIDsgdGhlbgotICAgICBpZiB0ZXN0ICIke0JKQU1fVVBEQVRFfSIgIT0gInVwZGF0ZSIgOyB0aGVuCi0gICAgICAgICBlY2hvX3J1biAuL2Jvb3RzdHJhcC9qYW0wIC1mIGJ1aWxkLmphbSAtLXRvb2xzZXQ9JEJPT1NUX0pBTV9UT09MU0VUICItLXRvb2xzZXQtcm9vdD0kQk9PU1RfSkFNX1RPT0xTRVRfUk9PVCIgIiRAIiBjbGVhbgotICAgICBmaQotLSAgICBlY2hvX3J1biAuL2Jvb3RzdHJhcC9qYW0wIC1mIGJ1aWxkLmphbSAtLXRvb2xzZXQ9JEJPT1NUX0pBTV9UT09MU0VUICItLXRvb2xzZXQtcm9vdD0kQk9PU1RfSkFNX1RPT0xTRVRfUk9PVCIgIiRAIgotKyAgICBlY2hvX3J1biAuL2Jvb3RzdHJhcC9qYW0wIC1mIGJ1aWxkLmphbSAtLXRvb2xzZXQ9JEJPT1NUX0pBTV9UT09MU0VUICItLXRvb2xzZXQtcm9vdD0kQk9PU1RfSkFNX1RPT0xTRVRfUk9PVCIgIiRAIiAtLWRlYnVnCi0gZmkKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDEtY2VydGRhdGEycGVtLnB5LXVzZS1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzLzAwMDEtY2VydGRhdGEycGVtLnB5LXVzZS1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMmM4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXMvMDAwMS1jZXJ0ZGF0YTJwZW0ucHktdXNlLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSBiNmQxOGNhNzdmMTMxY2RjYWExMGQwZWFhOWQzMDMzOTk3NjdlZGY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDE5OjE4OjE0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNlcnRkYXRhMnBlbS5weTogdXNlIHB5dGhvbjMKKworQ29tbWVudHMgaW4gdGhhdCBmaWxlIGltcGx5IGl0IGlzIGFscmVhZHkgcHkzIGNvbXBhdGlibGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtb3ppbGxhL01ha2VmaWxlICAgICAgICB8IDIgKy0KKyBtb3ppbGxhL2NlcnRkYXRhMnBlbS5weSB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21vemlsbGEvTWFrZWZpbGUgYi9tb3ppbGxhL01ha2VmaWxlCitpbmRleCA2ZjQ2MTE4Li5mOTg4NzdjIDEwMDY0NAorLS0tIGEvbW96aWxsYS9NYWtlZmlsZQorKysrIGIvbW96aWxsYS9NYWtlZmlsZQorQEAgLTMsNyArMyw3IEBACisgIworIAorIGFsbDoKKy0JcHl0aG9uIGNlcnRkYXRhMnBlbS5weQorKwlweXRob24zIGNlcnRkYXRhMnBlbS5weQorIAorIGNsZWFuOgorIAktcm0gLWYgKi5jcnQKK2RpZmYgLS1naXQgYS9tb3ppbGxhL2NlcnRkYXRhMnBlbS5weSBiL21vemlsbGEvY2VydGRhdGEycGVtLnB5CitpbmRleCAwYjAyYjJhLi43ZDc5NmYxIDEwMDY0NAorLS0tIGEvbW96aWxsYS9jZXJ0ZGF0YTJwZW0ucHkKKysrKyBiL21vemlsbGEvY2VydGRhdGEycGVtLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vcHl0aG9uMworICMgdmltOnNldCBldCBzdz00OgorICMKKyAjIGNlcnRkYXRhMnBlbS5weSAtIHNwbGl0cyBjZXJ0ZGF0YS50eHQgaW50byBtdWx0aXBsZSBmaWxlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTkwMTEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jYS1jZXJ0aWZpY2F0ZXMvY2EtY2VydGlmaWNhdGVzXzIwMTkwMTEwLmJiCmluZGV4IGVmZDllYWEuLmNlM2NiMjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY2EtY2VydGlmaWNhdGVzL2NhLWNlcnRpZmljYXRlc18yMDE5MDExMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2NhLWNlcnRpZmljYXRlcy9jYS1jZXJ0aWZpY2F0ZXNfMjAxOTAxMTAuYmIKQEAgLTIzLDYgKzIzLDcgQEAKICAgICAgICAgICAgZmlsZTovL2RlZmF1bHQtc3lzcm9vdC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9zYmluZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDMtdXBkYXRlLWNhLWNlcnRpZmljYXRlcy11c2UtcmVsYXRpdmUtc3ltbGlua3MtZnJvbS1FVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNlcnRkYXRhMnBlbS5weS11c2UtcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTUzLDcgKzU0LDcgQEAKICAgICAgICAgZWNobyAiIyBMaW5lcyBzdGFydGluZyB3aXRoICEgd2lsbCByZW1vdmUgY2VydGlmaWNhdGUgb24gbmV4dCB1cGRhdGUiCiAgICAgICAgIGVjaG8gIiMiCiAgICAgICAgIGZpbmQgJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzIC10eXBlIGYgLW5hbWUgJyouY3J0JyB8IFwKLSAgICAgICAgICAgIHNlZCAncyxeJHtEfSR7ZGF0YWRpcn0vY2EtY2VydGlmaWNhdGVzLywsJworICAgICAgICAgICAgc2VkICdzLF4ke0R9JHtkYXRhZGlyfS9jYS1jZXJ0aWZpY2F0ZXMvLCwnIHwgc29ydAogICAgIH0gPiR7RH0ke3N5c2NvbmZkaXJ9L2NhLWNlcnRpZmljYXRlcy5jb25mCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLWZsb3Blbi1BZGQtbWlzc2luZy1mY250bC5oLWluY2x1ZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2QvMDAwMS1mbG9wZW4tQWRkLW1pc3NpbmctZmNudGwuaC1pbmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWJiODc2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZC8wMDAxLWZsb3Blbi1BZGQtbWlzc2luZy1mY250bC5oLWluY2x1ZGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDEzYzMyOTE2YjRiYWFiNThkOTM5NDBkNTdmZWE5ZmYwNzc3ZjE5MzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXJ1Y2ggU2lhY2ggPGJhcnVjaEB0a29zLmNvLmlsPgotRGF0ZTogVHVlLCA1IEp1biAyMDE4IDE5OjIxOjQ2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZsb3BlbjogQWRkIG1pc3NpbmcgPGZjbnRsLmg+IGluY2x1ZGUKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotQ29tbWl0IDk5MzgyOGQ4NGVlIChBZGQgZmxvcGVuYXQoKSBmdW5jdGlvbiBmcm9tIEZyZWVCU0QpIGRyb3BwZWQgdGhlCi1mY250bC5oIGhlYWRlci4gVGhpcyBicmVha3MgdGhlIGJ1aWxkIHdpdGggbXVzbCBsaWJjOgotCi1mbG9wZW4uYzogSW4gZnVuY3Rpb24g4oCYdmZsb3BlbmF04oCZOgotZmxvcGVuLmM6NjA6MTQ6IGVycm9yOiDigJhPX0NSRUFU4oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotICBpZiAoZmxhZ3MgJiBPX0NSRUFUKSB7Ci0gICAgICAgICAgICAgIF5+fn5+fn4KLQotUmVzdG9yZSB0aGUgZmNudGwuaCBoZWFkZXIgaW5jbHVkZSB0byBmaXggdGhlIGJ1aWxkLgotCi1GaXhlczogY29tbWl0IDk5MzgyOGQ4NGVlZDA0NjhjNmMxNWIyODE4ZTUzNGU2YjEzNGI4ZTQKLVN1Ym1pdHRlZC1hbHNvLWJ5OiBwYXJhenlkIDxwYXJhenlkQGR5bmUub3JnPgotU2lnbmVkLW9mZi1ieTogQmFydWNoIFNpYWNoIDxiYXJ1Y2hAdGtvcy5jby5pbD4KLVNpZ25lZC1vZmYtYnk6IEd1aWxsZW0gSm92ZXIgPGd1aWxsZW1AaGFkcm9ucy5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbGliYnNkL2xpYmJzZC9jb21taXQvMTNjMzI5MTZiNGJhYWI1OGQ5Mzk0MGQ1N2ZlYTlmZjA3NzdmMTkzMV0KLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2Zsb3Blbi5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvZmxvcGVuLmMgYi9zcmMvZmxvcGVuLmMKLWluZGV4IGI5OTcyYzkuLmZmMjBkMDcgMTAwNjQ0Ci0tLS0gYS9zcmMvZmxvcGVuLmMKLSsrKyBiL3NyYy9mbG9wZW4uYwotQEAgLTMyLDYgKzMyLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC45LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggNzglCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjkuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgppbmRleCAyYjc1Y2RmLi5lYWYyNDRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC45LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgpAQCAtMjgsMTYgKzI4LDEzIEBACiAjIExpY2Vuc2U6IHB1YmxpYy1kb21haW4KICMgTGljZW5zZTogcHVibGljLWRvbWFpbi1Db2xpbi1QbHVtYgogTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UgJiBJU0MgJiBQRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI1NTI2MDJmZGE2OWUzNGM3NTNkMjZkZTM4M2YzM2M1IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjEyMGJlMDE3MzQ2OWEwNmVkMTg1YjY4OGUwZTFhZTAiCiBTRUNUSU9OID0gImxpYnMiCiAKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vMDAwMS1mbG9wZW4tQWRkLW1pc3NpbmctZmNudGwuaC1pbmNsdWRlLnBhdGNoIFwKLSIKK1NSQ19VUkkgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKIAotU1JDX1VSSVttZDVzdW1dID0gImE3NGI4MGM0MTQzYWZhMDMyYzkwMjI2YTQ1MThmZmZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU2ZDgzNTc0MjMyN2Q2OWZhY2NkMTY5NTVhNjBiNmRjZjMwNjg0YThkYTUxOGM0ZWNhMGFjNzEzYjllMGE3YTQiCitTUkNfVVJJW21kNXN1bV0gPSAiZWFkOTZkMjQwZDAyZmFhNWI5MjFjMGFhNTBjODEyYjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzRiOGFkYzcyNjg4M2QwZTg1YjMxMThmYTEzNjA1ZTE3OWE2MmIzMWJhNTFmNjc2MTM2ZWNiMmQwYmMxYTg4NyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS43LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS44LjAuYmIKaW5kZXggYWJkNmYzOC4uODQyNzQ5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjcuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCkBAIC03LDggKzcsNyBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYWJlODdkOGQ3ZDdmN2NkYjRhMjZlNWRjOTlmYzUxNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWRiZTFmMmIxZDAzYTUxZjNlOWExOTY3NTdhNzVjM2E5OTkwNDJjZTM0Y2YxZmRjMDBhMjM2M2U1YTJlMzY5IgorU1JDX1VSSVttZDVzdW1dID0gIjg3OTYzMTA4MGJlMTg1MjY3MzdlMzNiNjNkODQ4MDM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwZDNjYWU0ZWZkMjc3ZjQ4NWFiZGY4ZjJhN2M0NjU4OGU1Mzk5OThiNWEwOGMyYzRkMzY4MjE4Mzc5ZDQyMTEiCiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L3J1bi1wdGVzdAppbmRleCAwMjQxODUxLi4wODA4MDZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50L3J1bi1wdGVzdApAQCAtMSwxOCArMSwyOCBAQAogIyEvYmluL3NoCiAKLWZhaWw9MAorIyBydW4tcHRlc3QgLSAncHRlc3QnIHRlc3QgaW5mcmFzdHJ1Y3R1cmUgc2hlbGwgc2NyaXB0IHRoYXQKKyMgICB3cmFwcyB0aGUgbGliZXZlbnQgdGVzdCBzY3JpcHRzIAorIworIyBUcmV2b3IgR2FtYmxpbiA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworTElCRVZFTlRMSUI9QGxpYmRpckAvbGliZXZlbnQKK0xPRz0iJHtMSUJFVkVOVExJQn0vcHRlc3QvbGliZXZlbnRfcHRlc3RfJChkYXRlICslWSVtJWQtJUglTSVTKS5sb2ciCisKK2NkICR7TElCRVZFTlRMSUJ9L3B0ZXN0IAorCiBmb3IgdGVzdCBpbiAuL3Rlc3QvKgogZG8KLQkkdGVzdAotCWlmIFsgJD8gLW5lIDAgXQotCXRoZW4KLQkJZmFpbD0xCi0JZmkKKyAgICAkdGVzdCAyPiYxfCBzZWQgLWUgJy9PSy8gcy9eL1BBU1M6IC8gOyAvRkFJTEVELyBzL14vRkFJTDogLyA7IC9TS0lQUEVELyBzL14vU0tJUDogLyA7IC9ESVNBQkxFRC8gcy9eL1NLSVA6IC8nIHwgY3V0IC1mMSwyIC1kICc6JyB8IHRlZSAtYSAke0xPR30KIGRvbmUKIAotaWYgWyAkZmFpbCAtZXEgMCBdCi10aGVuCi0JZWNobyAiUEFTUzogbGliZXZlbnQiCi1lbHNlCi0JZWNobyAiRkFJTDogbGliZXZlbnQiCi1maQorcGFzc2VkPWBncmVwIFBBU1MgJHtMT0d9fHdjIC1sYAorZmFpbGVkPWBncmVwIEZBSUwgJHtMT0d9fHdjIC1sYAorc2tpcHBlZD1gZ3JlcCAtRSBTS0lQICR7TE9HfXx3YyAtbGAKK2FsbD0kKChwYXNzZWQgKyBmYWlsZWQgKyBza2lwcGVkKSkKKworKCAgIGVjaG8gIj09PSBUZXN0IFN1bW1hcnkgPT09IgorICAgIGVjaG8gIlRPVEFMOiAke2FsbH0iCisgICAgZWNobyAiUEFTU0VEOiAke3Bhc3NlZH0iCisgICAgZWNobyAiRkFJTEVEOiAke2ZhaWxlZH0iCisgICAgZWNobyAiU0tJUFBFRDogJHtza2lwcGVkfSIKKykgfCB0ZWUgLWEgJHtMT0d9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjExLmJiCmluZGV4IDFlMThmMGEuLmYwMDVhYjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjExLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZlbnQvbGliZXZlbnRfMi4xLjExLmJiCkBAIC00Myw0ICs0Myw3IEBACiAJZG8KIAkJaW5zdGFsbCAtbSAwNzU1ICRmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QKIAlkb25lCisgICAgICAgIAorICAgICAgICAjIGhhbmRsZSBtdWx0aWxpYgorICAgICAgICBzZWQgLWkgczpAbGliZGlyQDoke2xpYmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBhMzBhMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gNDE0OWE3NjI3YTk5ODczMWNjMjQ2ZDNmNThhMzY4MDg3NDVkMDRjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmwgSHVyZCA8Y2FybEBDYXJscy1NYWNCb29rLVByby5sb2NhbD4KK0RhdGU6IFdlZCwgMTggSnVsIDIwMTggMDk6MDQ6MzIgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4ZWQgbWlzc2VkICNpZm5kZWYgZm9yIF9fbWlwc19zb2Z0X2Zsb2F0CisKK1NpZ25lZC1vZmYtYnk6IFBldGVyIEtqZWxsZXJzdGVkdCA8cGV0ZXIua2plbGxlcnN0ZWR0QGF4aXMuY29tPgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcHVsbC80NDJdCisKKyBzcmMvbWlwcy9vMzIuUyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbWlwcy9vMzIuUyBiL3NyYy9taXBzL28zMi5TCitpbmRleCA0NGU3NGNiLi43OTkxMzliIDEwMDY0NAorLS0tIGEvc3JjL21pcHMvbzMyLlMKKysrKyBiL3NyYy9taXBzL28zMi5TCitAQCAtMjgyLDkgKzI4MiwxMSBAQCAkTENGSTEyOgorIAlsaQkkMTMsIDEJCSMgRkZJX08zMgorIAlibmUJJDE2LCAkMTMsIDFmCSMgU2tpcCBmcCBzYXZlIGlmIEZGSV9PMzJfU09GVF9GTE9BVAorIAkKKysjaWZuZGVmIF9fbWlwc19zb2Z0X2Zsb2F0CisgCSMgU3RvcmUgYWxsIHBvc3NpYmxlIGZsb2F0L2RvdWJsZSByZWdpc3RlcnMuCisgCXMuZAkkZjEyLCBGQV8wXzBfT0ZGMigkZnApCisgCXMuZAkkZjE0LCBGQV8xXzBfT0ZGMigkZnApCisrI2VuZGlmCisgMToKKyAJIyBwcmVwYXJlIGFyZ3VtZW50cyBmb3IgZmZpX2Nsb3N1cmVfbWlwc19pbm5lcl9PMzIKKyAJUkVHX0wJYTAsIDQoJDE1KQkgIyBjaWYgCistLSAKKzIuMjEuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjN+cmMwLmJiCmluZGV4IGRhZGRlMGIuLjhhY2I2OTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjN+cmMwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaV8zLjN+cmMwLmJiCkBAIC0xMiw5ICsxMiwxMyBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzL2Rvd25sb2FkL3YzLjMtcmMwL2xpYmZmaS0zLjMtcmMwLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ub3Qtd2luMzIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4ZDJhODJhNzhmYWYxMGE1ZTUzYzI3ZDk4NmU4ZjA0ZSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MDNkNjdhYWJmMWMwNTE1Nzg1NWVhMmIxZDk5NTAyNjNmYjYzMTY1MzZjOGMzMzNmNWI5YWIxZWIyZjIwZWNmIgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmZmaS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKK1VQU1RSRUFNX1ZFUlNJT05fVU5LTk9XTiA9ICIxIgogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1idWlsZGRpciIKIEVYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItMS4zNi1nYXdrNS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MzZkMTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDE0NCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9kZXYuZ251cGcub3JnL1Q0NDU5XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworRnJvbSA3ODY1MDQxYzc3ZjRmNzAwNTI4MmYxMGY5YjY2NjZiMTkwNzJmYmRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+CitEYXRlOiBNb24sIDE1IEFwciAyMDE5IDE1OjEwOjQ0ICswOTAwCitTdWJqZWN0OiBbUEFUQ0hdIGF3azogUHJlcGFyZSBmb3IgR2F3ayA1LjAuCisKKyogc3JjL01ha2VmaWxlLmFtOiBVc2UgcGtnX25hbWVzcGFjZSAoaW5zdGVhZCBvZiBuYW1lc3BhY2UpLgorKiBzcmMvbWtlcnJub3MuYXdrOiBMaWtld2lzZS4KKyogbGFuZy9jbC9ta2VycmNvZGVzLmF3azogRG9uJ3QgZXNjYXBlICMgaW4gcmVnZXhwLgorKiBzcmMvbWtlcnJjb2Rlcy5hd2ssIHNyYy9ta2VycmNvZGVzMS5hd2ssIHNyYy9ta2VycmNvZGVzMi5hd2s6IERpdHRvLgorCistLQorCitJbiBHYXdrIDUuMCwgcmVnZXhwIHJvdXRpbmVzIGFyZSByZXBsYWNlZCBieSBHbnVsaWIgaW1wbGVtZW50YXRpb24sCit3aGljaCBvbmx5IGFsbG93cyBlc2NhcGluZyBzcGVjaWZpYyBjaGFyYWN0ZXJzLgorCitHbnVQRy1idWctaWQ6IDQ0NTkKK1JlcG9ydGVkLWJ5OiBNYXJpdXMgU2NoYW1zY2h1bGEKK1NpZ25lZC1vZmYtYnk6IE5JSUJFIFl1dGFrYSA8Z25paWJlQGZzaWoub3JnPgorLS0tCisgbGFuZy9jbC9ta2VycmNvZGVzLmF3ayB8ICAyICstCisgc3JjL01ha2VmaWxlLmFtICAgICAgICB8ICAyICstCisgc3JjL21rZXJyY29kZXMuYXdrICAgICB8ICAyICstCisgc3JjL21rZXJyY29kZXMxLmF3ayAgICB8ICAyICstCisgc3JjL21rZXJyY29kZXMyLmF3ayAgICB8ICAyICstCisgc3JjL21rZXJybm9zLmF3ayAgICAgICB8ICAyICstCisgc3JjL21rc3RydGFibGUuYXdrICAgICB8IDEwICsrKysrLS0tLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQorCistLS0gYS9sYW5nL2NsL21rZXJyY29kZXMuYXdrCisrKysgYi9sYW5nL2NsL21rZXJyY29kZXMuYXdrCitAQCAtMTIyLDcgKzEyMiw3IEBAIGhlYWRlciB7CisgfQorIAorICFoZWFkZXIgeworLSAgc3ViICgvXCMuKy8sICIiKTsKKysgIHN1YiAoLyMuKy8sICIiKTsKKyAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCisgCisgICBpZiAoL14kLykKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMjkzLDcgKzI5Myw3IEBAIGNvZGUtZnJvbS1lcnJuby5oOiBta2VycmNvZGVzJChFWEVFWFRfRk8KKyAKKyBlcnJub3Mtc3ltLmg6IE1ha2VmaWxlIG1rc3RydGFibGUuYXdrIGVycm5vcy5pbgorIAkkKEFXSykgLWYgJChzcmNkaXIpL21rc3RydGFibGUuYXdrIC12IHRleHRpZHg9MiAtdiBub2dldHRleHQ9MSBcCistCQktdiBwcmVmaXg9R1BHX0VSUl8gLXYgbmFtZXNwYWNlPWVycm5vc18gXAorKwkJLXYgcHJlZml4PUdQR19FUlJfIC12IHBrZ19uYW1lc3BhY2U9ZXJybm9zXyBcCisgCQkkKHNyY2RpcikvZXJybm9zLmluID4kQAorIAorIAorLS0tIGEvc3JjL21rZXJyY29kZXMuYXdrCisrKysgYi9zcmMvbWtlcnJjb2Rlcy5hd2sKK0BAIC04NSw3ICs4NSw3IEBAIGhlYWRlciB7CisgfQorIAorICFoZWFkZXIgeworLSAgc3ViICgvXCMuKy8sICIiKTsKKysgIHN1YiAoLyMuKy8sICIiKTsKKyAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCisgCisgICBpZiAoL14kLykKKy0tLSBhL3NyYy9ta2VycmNvZGVzMS5hd2sKKysrKyBiL3NyYy9ta2VycmNvZGVzMS5hd2sKK0BAIC04MSw3ICs4MSw3IEBAIGhlYWRlciB7CisgfQorIAorICFoZWFkZXIgeworLSAgc3ViICgvXCMuKy8sICIiKTsKKysgIHN1YiAoLyMuKy8sICIiKTsKKyAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCisgCisgICBpZiAoL14kLykKKy0tLSBhL3NyYy9ta2VycmNvZGVzMi5hd2sKKysrKyBiL3NyYy9ta2VycmNvZGVzMi5hd2sKK0BAIC05MSw3ICs5MSw3IEBAIGhlYWRlciB7CisgfQorIAorICFoZWFkZXIgeworLSAgc3ViICgvXCMuKy8sICIiKTsKKysgIHN1YiAoLyMuKy8sICIiKTsKKyAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCisgCisgICBpZiAoL14kLykKKy0tLSBhL3NyYy9ta2Vycm5vcy5hd2sKKysrKyBiL3NyYy9ta2Vycm5vcy5hd2sKK0BAIC04Myw3ICs4Myw3IEBAIGhlYWRlciB7CisgfQorIAorICFoZWFkZXIgeworLSAgc3ViICgvXCMuKy8sICIiKTsKKysgIHN1YiAoLyMuKy8sICIiKTsKKyAgIHN1YiAoL1sgCV0rJC8sICIiKTsgIyBTdHJpcCB0cmFpbGluZyBzcGFjZSBhbmQgdGFiIGNoYXJhY3RlcnMuCisgCisgICBpZiAoL14kLykKKy0tLSBhL3NyYy9ta3N0cnRhYmxlLmF3aworKysrIGIvc3JjL21rc3RydGFibGUuYXdrCitAQCAtNzcsNyArNzcsNyBAQAorICMKKyAjIFRoZSB2YXJpYWJsZSBwcmVmaXggY2FuIGJlIHVzZWQgdG8gcHJlcGVuZCBhIHN0cmluZyB0byBlYWNoIG1lc3NhZ2UuCisgIworLSMgVGhlIHZhcmlhYmxlIG5hbWVzcGFjZSBjYW4gYmUgdXNlZCB0byBwcmVwZW5kIGEgc3RyaW5nIHRvIGVhY2gKKysjIFRoZSB2YXJpYWJsZSBwa2dfbmFtZXNwYWNlIGNhbiBiZSB1c2VkIHRvIHByZXBlbmQgYSBzdHJpbmcgdG8gZWFjaAorICMgdmFyaWFibGUgYW5kIG1hY3JvIG5hbWUuCisgCisgQkVHSU4geworQEAgLTEwMiw3ICsxMDIsNyBAQCBoZWFkZXIgeworICAgICAgIHByaW50ICIvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGNvbXBsZXggc3RyaW5nIHRhYmxlIGlzIHRvIHByb2R1Y2UiOworICAgICAgIHByaW50ICIgICBvcHRpbWFsIGNvZGUgd2l0aCBhIG1pbmltdW0gb2YgcmVsb2NhdGlvbnMuICAqLyI7CisgICAgICAgcHJpbnQgIiI7CistICAgICAgcHJpbnQgInN0YXRpYyBjb25zdCBjaGFyICIgbmFtZXNwYWNlICJtc2dzdHJbXSA9ICI7CisrICAgICAgcHJpbnQgInN0YXRpYyBjb25zdCBjaGFyICIgcGtnX25hbWVzcGFjZSAibXNnc3RyW10gPSAiOworICAgICAgIGhlYWRlciA9IDA7CisgICAgIH0KKyAgIGVsc2UKK0BAIC0xMTAsNyArMTEwLDcgQEAgaGVhZGVyIHsKKyB9CisgCisgIWhlYWRlciB7CistICBzdWIgKC9cIy4rLywgIiIpOworKyAgc3ViICgvIy4rLywgIiIpOworICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KKyAKKyAgIGlmICgvXiQvKQorQEAgLTE1MCw3ICsxNTAsNyBAQCBFTkQgeworICAgZWxzZQorICAgICBwcmludCAiICBnZXR0ZXh0X25vb3AgKFwiIiBsYXN0X21zZ3N0ciAiXCIpOyI7CisgICBwcmludCAiIjsKKy0gIHByaW50ICJzdGF0aWMgY29uc3QgaW50ICIgbmFtZXNwYWNlICJtc2dpZHhbXSA9IjsKKysgIHByaW50ICJzdGF0aWMgY29uc3QgaW50ICIgcGtnX25hbWVzcGFjZSAibXNnaWR4W10gPSI7CisgICBwcmludCAiICB7IjsKKyAgIGZvciAoaSA9IDA7IGkgPCBjb2RlZF9tc2dzOyBpKyspCisgICAgIHByaW50ICIgICAgIiBwb3NbaV0gIiwiOworQEAgLTE1OCw3ICsxNTgsNyBAQCBFTkQgeworICAgcHJpbnQgIiAgfTsiOworICAgcHJpbnQgIiI7CisgICBwcmludCAic3RhdGljIEdQR19FUlJfSU5MSU5FIGludCI7CistICBwcmludCBuYW1lc3BhY2UgIm1zZ2lkeG9mIChpbnQgY29kZSkiOworKyAgcHJpbnQgcGtnX25hbWVzcGFjZSAibXNnaWR4b2YgKGludCBjb2RlKSI7CisgICBwcmludCAieyI7CisgICBwcmludCAiICByZXR1cm4gKDAgPyAwIjsKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIKaW5kZXggMmRiNTQ0YS4uYjExYWIwNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIKQEAgLTE0LDYgKzE0LDcgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dudXBnLm9yZy9kb3dubG9hZC9pbmRleC5odG1sIgogU1JDX1VSSSA9ICIke0dOVVBHX01JUlJPUn0vbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9saWJncGctZXJyb3ItMS4zNi1nYXdrNS1zdXBwb3J0LnBhdGNoIFwKIAkgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImVmZjQzN2YzOTdlODU4YTkxMjdiNzZjMGQ4N2ZhNWVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyMGEyOTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubC8wMDAxLVBBVENILWZpeC1saWJubC0zLjQuMC1tdXNsLWNvbXBpbGUtcHJvYmxlbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGxpYm5sLTMuNC4wIG11c2wgY29tcGlsZSBwcm9ibGVtICAKLUF2b2lkIGluNl9hZGRyIHJlZGVmaW5pdGlvbgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogSHVhbmcgUWl5dSA8aHVhbmdxeS5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIHwgMSAtCi0gaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaCAgICAgIHwgMSAtCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCi1pbmRleCBmMjQwNTBiLi44Zjc0OTBjIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lmX2JyaWRnZS5oCi0rKysgYi9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaWZfYnJpZGdlLmgKLUBAIC0xNSw3ICsxNSw2IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2luNi5oPgotIAotICNkZWZpbmUgU1lTRlNfQlJJREdFX0FUVFIJImJyaWRnZSIKLSAjZGVmaW5lIFNZU0ZTX0JSSURHRV9GREIJImJyZm9yd2FyZCIKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4LXByaXZhdGUvbGludXgvaXB2Ni5oIGIvaW5jbHVkZS9saW51eC1wcml2YXRlL2xpbnV4L2lwdjYuaAotaW5kZXggZTA1ZTY4NC4uZjE2MzQ5ZCAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKLSsrKyBiL2luY2x1ZGUvbGludXgtcHJpdmF0ZS9saW51eC9pcHY2LmgKLUBAIC0yLDcgKzIsNiBAQAotICNkZWZpbmUgX0lQVjZfSAotIAotICNpbmNsdWRlIDxhc20vYnl0ZW9yZGVyLmg+Ci0tI2luY2x1ZGUgPGxpbnV4L2luNi5oPgotIAotIC8qIFRoZSBsYXRlc3QgZHJhZnRzIGRlY2xhcmVkIGluY3JlYXNlIGluIG1pbmltYWwgbXR1IHVwIHRvIDEyODAuICovCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvZml4LXBjLWZpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sL2ZpeC1wYy1maWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZThiODMzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmwvZml4LXBjLWZpbGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU29tZSBwYWNrYWdlcyBhcmUgYXNraW5nIG9ubHkgZm9yIGxpYm5sLTIuMCwgYnV0IGV4cGVjdHMgdG8gZ2V0IGFsc28KLWxpYm5sLWdlbmwsIGxpYm5sLW5mIGxpYm5sLXJvdXRlLCBlYXNpZXN0IHdheSB0byBmaXggdGhlbSBpcyBoZXJlLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+Ci1JbmRleDogbGlibmwtMy4yLjE0L2xpYm5sLTMuMC5wYy5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYm5sLTMuMi4xNC5vcmlnL2xpYm5sLTMuMC5wYy5pbgotKysrIGxpYm5sLTMuMi4xNC9saWJubC0zLjAucGMuaW4KLUBAIC02LDUgKzYsNSBAQCBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotIE5hbWU6IGxpYm5sCi0gRGVzY3JpcHRpb246IENvbnZlbmllbmNlIGxpYnJhcnkgZm9yIG5ldGxpbmsgc29ja2V0cwotIFZlcnNpb246IEBQQUNLQUdFX1ZFUlNJT05ACi0tTGliczogLUwke2xpYmRpcn0gLWxubC1ATUFKX1ZFUlNJT05ACi0rTGliczogLUwke2xpYmRpcn0gLWxubC1ATUFKX1ZFUlNJT05AIC1sbmwtZ2VubC1ATUFKX1ZFUlNJT05AIC1sbmwtbmYtQE1BSl9WRVJTSU9OQCAtbG5sLXJvdXRlLUBNQUpfVkVSU0lPTkAKLSBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9saWJubEBNQUpfVkVSU0lPTkAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy40LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy40LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlibmwvbGlibmxfMy41LjAuYmIKaW5kZXggOTBkYzY0NC4uYzA2MDljNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJubC9saWJubF8zLjQuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYm5sL2xpYm5sXzMuNS4wLmJiCkBAIC05LDE2ICs5LDEyIEBACiAKIERFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aG9tMzExLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQTn0ke0BkLmdldFZhcignUFYnKS5yZXBsYWNlKCcuJywnXycpfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vZml4LXBjLWZpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1maXgtbGlibmwtMy40LjAtbXVzbC1jb21waWxlLXByb2JsZW0ucGF0Y2ggXAotIgorU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtCUE59JHtAZC5nZXRWYXIoJ1BWJykucmVwbGFjZSgnLicsJ18nKX0vJHtCUH0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjc0YmE1N2IxYjFkNmY5ZjkyMjY4YWE4MTQxZDhlOGU0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1MjEzM2VjOTU0NWRhNzZmNzdlNzBjY2I0OGM5ZDdlNTMyNGQ2N2Y2NDc0NzQ0NjQ3YTdlZDM4MmI1ZTA1ZmEiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGhvbTMxMS8ke0JQTn0vcmVsZWFzZXMiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZjcxOTEwYzAzZGIzNjNiNDFlMmVhNjIwNTdhNDMxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNzI4NzYzN2FlNzFjNmRiNmY4OWUxNDIyYzk5NWYwNDA3ZmYyZmU1MGNlY2Q2MWEzMTJiNmE5YjA5MjFmNWJmIgotCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYm5sLTMuc28uKiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBzbC9saWJwc2wvMDAwMS1NYWtlZmlsZS5hbS11c2UtUFlUSE9OLXdoZW4taW52b2tpbmctcHNsLW1ha2UtZGFmc2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBzbC9saWJwc2wvMDAwMS1NYWtlZmlsZS5hbS11c2UtUFlUSE9OLXdoZW4taW52b2tpbmctcHNsLW1ha2UtZGFmc2EucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ2Y2NmNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHNsL2xpYnBzbC8wMDAxLU1ha2VmaWxlLmFtLXVzZS1QWVRIT04td2hlbi1pbnZva2luZy1wc2wtbWFrZS1kYWZzYS5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIGEwZTZmMGVjOWRjNmRkMWRiMWMwM2Y3ZjI3M2NjMTZjYjNhZjU1NjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogVGh1LCAxMSBKdWwgMjAxOSAxNzo0NzoxMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZS5hbTogdXNlIFBZVEhPTiB3aGVuIGludm9raW5nIHBzbC1tYWtlLWRhZnNhCisKK0luIGFuIGVudmlyb25tZW50IHdoZXJlIG9ubHkgUHl0aG9uIDMgaXMgaW5zdGFsbGVkLCBjb25maWd1cmUuYWMgZmluZHMgYW5kIHNldHMKK1BZVEhPTj1weXRob24zIGNvcnJlY3RseSBidXQgc3JjL3BzbC1tYWtlLWRhZnNhIGlzIGNhbGxlZCBkaXJlY3RseSwgc28gdGhlIGhhc2hiYW5nIG9mCitgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uYCBpcyB1c2VkIHdoaWNoIGRvZXNuJ3QgZXhpc3QuCisKK0ZpeCB0aGlzIGJ5IGV4cGxpY2l0bHkgcnVubmluZyAkKFBZVEhPTikgd2hlbiB1c2luZyB0aGUgdG9vbC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3JvY2tkYWJvb3QvbGlicHNsL2NvbW1pdC9iNGZlYzVkMGRkYjcwZmM0ZjUzNjBlYjE0ZjJmNWM1ZTkxMTk0MzMzXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gICB8IDIgKy0KKyB0ZXN0cy9NYWtlZmlsZS5hbSB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCBmOWMwYTNkLi5hMDVlYTA1IDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC0xOSw3ICsxOSw3IEBAIGxpYnBzbF9sYV9MREZMQUdTID0gLW5vLXVuZGVmaW5lZCAtdmVyc2lvbi1pbmZvICQoTElCUFNMX1NPX1ZFUlNJT04pCisgIyBCdWlsZCBydWxlIGZvciBzdWZmaXhfZGFmc2EuYworICMgUFNMX0ZJTEUgY2FuIGJlIHNldCBieSAuL2NvbmZpZ3VyZSAtLXdpdGgtcHNsLWZpbGU9W1BBVEhdCisgc3VmZml4ZXNfZGFmc2EuaDogJChQU0xfRklMRSkgJChzcmNkaXIpL3BzbC1tYWtlLWRhZnNhCistCSQoc3JjZGlyKS9wc2wtbWFrZS1kYWZzYSAtLW91dHB1dC1mb3JtYXQ9Y3h4KyAiJChQU0xfRklMRSkiIHN1ZmZpeGVzX2RhZnNhLmgKKysJJChQWVRIT04pICQoc3JjZGlyKS9wc2wtbWFrZS1kYWZzYSAtLW91dHB1dC1mb3JtYXQ9Y3h4KyAiJChQU0xfRklMRSkiIHN1ZmZpeGVzX2RhZnNhLmgKKyAKKyBFWFRSQV9ESVNUID0gcHNsLW1ha2UtZGFmc2EgTElDRU5TRS5jaHJvbWl1bQorIAorZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KK2luZGV4IDhiMjliNjEuLjI4YTlhMGIgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KK0BAIC0zNCw5ICszNCw5IEBAIFRFU1RTID0gJChQU0xfVEVTVFMpCisgIyBjaGVjay1sb2NhbCB0YXJnZXQgd29ya3MgaW4gcGFyYWxsZWwgdG8gdGhlIHRlc3RzLCBzbyB0aGUgdGVzdCBzdWl0ZSB3aWxsIGxpa2VseSBmYWlsCisgQlVJTFRfU09VUkNFUyA9IHBzbC5kYWZzYSBwc2xfYXNjaWkuZGFmc2EKKyBwc2wuZGFmc2E6ICQodG9wX3NyY2RpcikvbGlzdC9wdWJsaWNfc3VmZml4X2xpc3QuZGF0CistCSQodG9wX3NyY2Rpcikvc3JjL3BzbC1tYWtlLWRhZnNhIC0tb3V0cHV0LWZvcm1hdD1iaW5hcnkgIiQoUFNMX0ZJTEUpIiBwc2wuZGFmc2EKKysJJChQWVRIT04pICQodG9wX3NyY2Rpcikvc3JjL3BzbC1tYWtlLWRhZnNhIC0tb3V0cHV0LWZvcm1hdD1iaW5hcnkgIiQoUFNMX0ZJTEUpIiBwc2wuZGFmc2EKKyBwc2xfYXNjaWkuZGFmc2E6ICQodG9wX3NyY2RpcikvbGlzdC9wdWJsaWNfc3VmZml4X2xpc3QuZGF0CistCSQodG9wX3NyY2Rpcikvc3JjL3BzbC1tYWtlLWRhZnNhIC0tb3V0cHV0LWZvcm1hdD1iaW5hcnkgLS1lbmNvZGluZz1hc2NpaSAiJChQU0xfRklMRSkiIHBzbF9hc2NpaS5kYWZzYQorKwkkKFBZVEhPTikgJCh0b3Bfc3JjZGlyKS9zcmMvcHNsLW1ha2UtZGFmc2EgLS1vdXRwdXQtZm9ybWF0PWJpbmFyeSAtLWVuY29kaW5nPWFzY2lpICIkKFBTTF9GSUxFKSIgcHNsX2FzY2lpLmRhZnNhCisgCisgY2xlYW4tbG9jYWw6CisgCXJtIC1mIHBzbC5kYWZzYSBwc2xfYXNjaWkuZGFmc2EKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHNsL2xpYnBzbF8wLjIxLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBzbC9saWJwc2xfMC4yMS4wLmJiCmluZGV4IGZjMjQxN2YuLjk4MzFiNGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicHNsL2xpYnBzbF8wLjIxLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwc2wvbGlicHNsXzAuMjEuMC5iYgpAQCAtNiw2ICs2LDcgQEAKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcm9ja2RhYm9vdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtCUH0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtZ3RrLWRvYy1kby1ub3QtaW5jbHVkZS10cmVlX2luZGV4LnNnbWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS11c2UtUFlUSE9OLXdoZW4taW52b2tpbmctcHNsLW1ha2UtZGFmc2EucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMTcxZTk2ZDg4NzcwOWUzNmE1N2Y0ZWU2MjdiZjgyZDIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDFiZDFjNzVhMzc1Yjg1YzMzN2I1OTc4M2Y1ZGViOTNkYmI0NDNmYjBhNTJkMjU3ZjQwM2RmN2JkNjUzZWUxMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlMy5pbmMKaW5kZXggN2NmMjNkMC4uNGFmMWUwOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlMy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlMy5pbmMKQEAgLTE5LDcgKzE5LDcgQEAKIAogQ1ZFX1BST0RVQ1QgPSAic3FsaXRlIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzaXRlaW5mbwogCiAjIGVuYWJsZSB0aG9zZSB3aGljaCBhcmUgZW5hYmxlZCBieSBkZWZhdWx0IGluIGNvbmZpZ3VyZQogUEFDS0FHRUNPTkZJRyA/PSAiZnRzNCBmdHM1IGpzb24xIHJ0cmVlIGR5bl9leHQiCkBAIC00NywxMCArNDcsMTQgQEAKIENGTEFHU19hcHBlbmQgPSAiIC1mUElDIgogCiAjIHByZWFkKCkgaXMgaW4gUE9TSVguMS0yMDAxIHNvIGFueSByZWFzb25hYmxlIHN5c3RlbSBtdXN0IHN1cmVseSBzdXBwb3J0IGl0Ci1DRkxBR1MgKz0gIi1EVVNFX1BSRUFEIgorQ0ZMQUdTX2FwcGVuZCA9ICIgLURVU0VfUFJFQUQiCiAKICMgUHJvdmlkZSBjb2x1bW4gbWV0YS1kYXRhIEFQSQotQ0ZMQUdTICs9ICItRFNRTElURV9FTkFCTEVfQ09MVU1OX01FVEFEQVRBIgorQ0ZMQUdTX2FwcGVuZCA9ICIgLURTUUxJVEVfRU5BQkxFX0NPTFVNTl9NRVRBREFUQSIKKworIyBVbmxlc3MgU1FMSVRFX0JZVEVPUkRFUiBpcyBwcmVkZWZpbmVkLCB0aGUgY29kZSBmYWxscyBiYWNrIHRvIGJ1aWxkIHRpbWUKKyMgaHVyaXN0aWNzLCB3aGljaCBhcmUgbm90IGFsd2F5cyBjb3JyZWN0CitDRkxBR1NfYXBwZW5kID0gIiAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICctRFNRTElURV9CWVRFT1JERVI9MTIzNCcsICctRFNRTElURV9CWVRFT1JERVI9NDMyMScsIGQpfSIKIAogUEFDS0FHRVMgPSAibGliJHtCUE59IGxpYiR7QlBOfS1kZXYgbGliJHtCUE59LWRvYyAke1BOfS1kYmcgbGliJHtCUE59LXN0YXRpY2RldiAke1BOfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMudHh0IGIvcG9reS9tZXRhL3JlY2lwZXMudHh0CmluZGV4IDllMTc4ZDYuLmZiMmMyNTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLnR4dAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy50eHQKQEAgLTMsMTEgKzMsMTAgQEAKIHJlY2lwZXMtY29yZSAgICAgICAgIC0gV2hhdCdzIG5lZWRlZCB0byBidWlsZCBhIGJhc2ljIHdvcmtpbmcgTGludXggaW1hZ2UgaW5jbHVkaW5nIGNvbW1vbmx5IHVzZWQgZGVwZW5kZW5jaWVzCiByZWNpcGVzLWRldnRvb2xzICAgICAtIFRvb2xzIHByaW1hcmlseSB1c2VkIGJ5IHRoZSBidWlsZCBzeXN0ZW0gKGJ1dCBjYW4gYWxzbyBiZSB1c2VkIG9uIHRhcmdldHMpCiByZWNpcGVzLWV4dGVuZGVkICAgICAtIEFwcGxpY2F0aW9ucyB3aGljaCB3aGlsc3Qgbm90IGVzc2VudGlhbCBhZGQgZmVhdHVyZXMgY29tcGFyZWQgdG8gdGhlIGFsdGVybmF0aXZlcyBpbgotICAgICAgICAgICAgICAgICAgICAgICBjb3JlLiBNYXkgYmUgbmVlZGVkIGZvciBmdWxsIHRvb2wgZnVuY3Rpb25hbGl0eSBvciBMU0IgY29tcGxpYW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgY29yZS4gTWF5IGJlIG5lZWRlZCBmb3IgZnVsbCB0b29sIGZ1bmN0aW9uYWxpdHkuCiByZWNpcGVzLWdub21lICAgICAgICAtIEFsbCB0aGluZ3MgcmVsYXRlZCB0byB0aGUgR1RLKyBhcHBsaWNhdGlvbiBmcmFtZXdvcmsKIHJlY2lwZXMtZ3JhcGhpY3MgICAgIC0gWCBhbmQgb3RoZXIgZ3JhcGhpY2FsbHkgcmVsYXRlZCBzeXN0ZW0gbGlicmFyaWVzICAKIHJlY2lwZXMta2VybmVsICAgICAgIC0gVGhlIGtlcm5lbCBhbmQgZ2VuZXJpYyBhcHBsaWNhdGlvbnMvbGlicmFyaWVzIHdpdGggc3Ryb25nIGtlcm5lbCBkZXBlbmRlbmNpZXMKLXJlY2lwZXMtbHNiNCAgICAgICAgIC0gUmVjaXBlcyBhZGRlZCBmb3IgdGhlIHNvbGUgcHVycG9zZSBvZiBzdXBwb3J0aW5nIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlIChMU0IpIDQueAogcmVjaXBlcy1tdWx0aW1lZGlhICAgLSBDb2RlY3MgYW5kIHN1cHBvcnQgdXRpbHRpZXMgZm9yIGF1ZGlvLCBpbWFnZXMgYW5kIHZpZGVvCiByZWNpcGVzLXJ0ICAgICAgICAgICAtIFByb3ZpZGVzIHBhY2thZ2UgYW5kIGltYWdlIHJlY2lwZXMgZm9yIHVzaW5nIGFuZCB0ZXN0aW5nIHRoZSBQUkVFTVBUX1JUIGtlcm5lbAogcmVjaXBlcy1zYXRvICAgICAgICAgLSBUaGUgU2F0byBkZW1vL3JlZmVyZW5jZSBVSS9VWCwgaXRzIGFzc29jaWF0ZWQgYXBwcyBhbmQgY29uZmlndXJhdGlvbiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkgYi9wb2t5L3NjcmlwdHMvbGliL2NoZWNrbGF5ZXIvY2FzZXMvY29tbW9uLnB5CmluZGV4IDhmZmUwMjguLmI4MjMwNGUgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvY2hlY2tsYXllci9jYXNlcy9jb21tb24ucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9jaGVja2xheWVyL2Nhc2VzL2NvbW1vbi5weQpAQCAtMTIsNyArMTIsNyBAQAogY2xhc3MgQ29tbW9uQ2hlY2tMYXllcihPRUNoZWNrTGF5ZXJUZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfcmVhZG1lKHNlbGYpOgogICAgICAgICAjIFRoZSB0b3AtbGV2ZWwgUkVBRE1FIGZpbGUgbWF5IGhhdmUgYSBzdWZmaXggKGxpa2UgUkVBRE1FLnJzdCBvciBSRUFETUUudHh0KS4KLSAgICAgICAgcmVhZG1lX2ZpbGVzID0gZ2xvYi5nbG9iKG9zLnBhdGguam9pbihzZWxmLnRjLmxheWVyWydwYXRoJ10sICdSRUFETUUqJykpCisgICAgICAgIHJlYWRtZV9maWxlcyA9IGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi50Yy5sYXllclsncGF0aCddLCAnW1JyXVtFZV1bQWFdW0RkXVtNbV1bRWVdKicpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHJlYWRtZV9maWxlcykgPiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSJMYXllciBkb2Vzbid0IGNvbnRhaW5zIFJFQURNRSBmaWxlLiIpCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCA5NmFmNDg4Li45ZWVhZWZiIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CkBAIC00ODIsOSArNDgyLDkgQEAKICAgICAgICAgICAgICAgICBhZGRmaWxlcy5hcHBlbmQob3MucGF0aC5qb2luKHJlbHB0aCwgZm4pKQogICAgICAgICBpZiBhZGRmaWxlczoKICAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdnaXQgYWRkICVzJyAlICcgJy5qb2luKGFkZGZpbGVzKSwgY3dkPXNyY3RyZWUpCi0gICAgICAgIHVzZXJvcHRpb25zID0gW10KLSAgICAgICAgb2UucGF0Y2guR2l0QXBwbHlUcmVlLmdpdENvbW1hbmRVc2VyT3B0aW9ucyh1c2Vyb3B0aW9ucywgZD1yZCkKLSAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCAlcyBjb21taXQgLWEgLW0gIkNvbW1pdHRpbmcgbG9jYWwgZmlsZSBzeW1saW5rc1xuXG4lcyInICUgKCcgJy5qb2luKHVzZXJvcHRpb25zKSwgb2UucGF0Y2guR2l0QXBwbHlUcmVlLmlnbm9yZV9jb21taXRfcHJlZml4KSwgY3dkPXNyY3RyZWUpCisgICAgICAgICAgICB1c2Vyb3B0aW9ucyA9IFtdCisgICAgICAgICAgICBvZS5wYXRjaC5HaXRBcHBseVRyZWUuZ2l0Q29tbWFuZFVzZXJPcHRpb25zKHVzZXJvcHRpb25zLCBkPXJkKQorICAgICAgICAgICAgYmIucHJvY2Vzcy5ydW4oJ2dpdCAlcyBjb21taXQgLW0gIkNvbW1pdHRpbmcgbG9jYWwgZmlsZSBzeW1saW5rc1xuXG4lcyInICUgKCcgJy5qb2luKHVzZXJvcHRpb25zKSwgb2UucGF0Y2guR2l0QXBwbHlUcmVlLmlnbm9yZV9jb21taXRfcHJlZml4KSwgY3dkPXNyY3RyZWUpCiAKIAogZGVmIF9leHRyYWN0X3NvdXJjZShzcmN0cmVlLCBrZWVwX3RlbXAsIGRldmJyYW5jaCwgc3luYywgY29uZmlnLCBiYXNlcGF0aCwgd29ya3NwYWNlLCBmaXhlZF9zZXR1cCwgZCwgdGluZm9pbCwgbm9fb3ZlcnJpZGVzPUZhbHNlKToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9sb2cucHkgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvbG9nLnB5CmluZGV4IDI1YzMzOTYuLjIzNTJjNzYgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9sb2cucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL2xvZy5weQpAQCAtMTYsNiArMTYsMTYgQEAKICAgICBwcmludCgicHRlc3QgJyVzJyBub3QgZm91bmQiICUgcHRlc3QpCiAgICAgcmV0dXJuIDEKIAorZGVmIHNob3dfcmVwcm9kdWNpYmxlKHJlc3VsdCwgcmVwcm9kdWNpYmxlLCBsb2dnZXIpOgorICAgIHRyeToKKyAgICAgICAgcHJpbnQocmVzdWx0WydyZXByb2R1Y2libGUnXVtyZXByb2R1Y2libGVdWydkaWZmb3Njb3BlLnRleHQnXSkKKyAgICAgICAgcmV0dXJuIDAKKworICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcHJpbnQoInJlcHJvZHVjaWJsZSAnJXMnIG5vdCBmb3VuZCIgJSByZXByb2R1Y2libGUpCisgICAgICAgIHJldHVybiAxCisKKwogZGVmIGxvZyhhcmdzLCBsb2dnZXIpOgogICAgIHJlc3VsdHMgPSByZXN1bHR1dGlscy5sb2FkX3Jlc3VsdHNkYXRhKGFyZ3Muc291cmNlKQogCkBAIC00MCwxNyArNTAsMjggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihkZXN0LCAndycpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShwdGVzdFsnbG9nJ10pCiAKLSAgICAgICAgaWYgYXJncy5yYXc6CisgICAgICAgIGlmIGFyZ3MucmF3X3B0ZXN0OgogICAgICAgICAgICAgaWYgJ3B0ZXN0cmVzdWx0LnJhd2xvZ3MnIGluIHI6CiAgICAgICAgICAgICAgICAgcHJpbnQoclsncHRlc3RyZXN1bHQucmF3bG9ncyddWydsb2cnXSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ1JhdyBsb2dzIG5vdCBmb3VuZCcpCisgICAgICAgICAgICAgICAgcHJpbnQoJ1JhdyBwdGVzdCBsb2dzIG5vdCBmb3VuZCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKworICAgICAgICBpZiBhcmdzLnJhd19yZXByb2R1Y2libGU6CisgICAgICAgICAgICBpZiAncmVwcm9kdWNpYmxlLnJhd2xvZ3MnIGluIHI6CisgICAgICAgICAgICAgICAgcHJpbnQoclsncmVwcm9kdWNpYmxlLnJhd2xvZ3MnXVsnbG9nJ10pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50KCdSYXcgcmVwcm9kdWNpYmxlIGxvZ3Mgbm90IGZvdW5kJykKICAgICAgICAgICAgICAgICByZXR1cm4gMQogCiAgICAgICAgIGZvciBwdGVzdCBpbiBhcmdzLnB0ZXN0OgogICAgICAgICAgICAgaWYgbm90IHNob3dfcHRlc3QociwgcHRlc3QsIGxvZ2dlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIDEKIAorICAgICAgICBmb3IgcmVwcm9kdWNpYmxlIGluIGFyZ3MucmVwcm9kdWNpYmxlOgorICAgICAgICAgICAgaWYgbm90IHNob3dfcmVwcm9kdWNpYmxlKHIsIHJlcHJvZHVjaWJsZSwgbG9nZ2VyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorCiBkZWYgcmVnaXN0ZXJfY29tbWFuZHMoc3VicGFyc2Vycyk6CiAgICAgIiIiUmVnaXN0ZXIgc3ViY29tbWFuZHMgZnJvbSB0aGlzIHBsdWdpbiIiIgogICAgIHBhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcignbG9nJywgaGVscD0nc2hvdyBsb2dzJywKQEAgLTYzLDkgKzg0LDE1IEBACiAgICAgICAgICAgICBoZWxwPSdzaG93IGxvZ3MgZm9yIGEgcHRlc3QnKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tZHVtcC1wdGVzdCcsIG1ldGF2YXI9J0RJUicsCiAgICAgICAgICAgICBoZWxwPSdEdW1wIGFsbCBwdGVzdCBsb2cgZmlsZXMgdG8gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnkuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJlcHJvZHVjaWJsZScsIGFjdGlvbj0nYXBwZW5kJywgZGVmYXVsdD1bXSwKKyAgICAgICAgICAgIGhlbHA9J3Nob3cgbG9ncyBmb3IgYSByZXByb2R1Y2libGUgdGVzdCcpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1wcmVwZW5kLXJ1bicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICBoZWxwPScnJ0R1bXAgcHRlc3QgcmVzdWx0cyB0byBhIHN1YmRpcmVjdG9yeSBuYW1lZCBhZnRlciB0aGUgdGVzdCBydW4gd2hlbiB1c2luZyAtLWR1bXAtcHRlc3QuCiAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkIGlmIG1vcmUgdGhhbiBvbmUgdGVzdCBydW4gaXMgcHJlc2VudCBpbiB0aGUgcmVzdWx0IGZpbGUnJycpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1yYXcnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAgICAgICAgaGVscD0nc2hvdyByYXcgbG9ncycpCisgICAgICAgICAgICBoZWxwPSdzaG93IHJhdyAocHRlc3QpIGxvZ3MuIERlcHJlY2F0ZWQuIEFsaWFzIGZvciAiLS1yYXctcHRlc3QiJywgZGVzdD0ncmF3X3B0ZXN0JykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXJhdy1wdGVzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdzaG93IHJhdyBwdGVzdCBsb2cnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tcmF3LXJlcHJvZHVjaWJsZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICBoZWxwPSdzaG93IHJhdyByZXByb2R1Y2libGUgYnVpbGQgbG9ncycpCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5CmluZGV4IGY3MDYyODAuLjhiMDM3MTcgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weQpAQCAtMTksOSArMTksOSBAQAogICAgICAgICBzZWxmLnB0ZXN0cyA9IHt9CiAgICAgICAgIHNlbGYubHRwdGVzdHMgPSB7fQogICAgICAgICBzZWxmLmx0cHBvc2l4dGVzdHMgPSB7fQotICAgICAgICBzZWxmLnJlc3VsdF90eXBlcyA9IHsncGFzc2VkJzogWydQQVNTRUQnLCAncGFzc2VkJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmYWlsZWQnOiBbJ0ZBSUxFRCcsICdmYWlsZWQnLCAnRVJST1InLCAnZXJyb3InLCAnVU5LTk9XTiddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2tpcHBlZCc6IFsnU0tJUFBFRCcsICdza2lwcGVkJ119CisgICAgICAgIHNlbGYucmVzdWx0X3R5cGVzID0geydwYXNzZWQnOiBbJ1BBU1NFRCcsICdwYXNzZWQnLCAnUEFTUycsICdYRkFJTCddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmFpbGVkJzogWydGQUlMRUQnLCAnZmFpbGVkJywgJ0ZBSUwnLCAnRVJST1InLCAnZXJyb3InLCAnVU5LTk9XTicsICdYUEFTUyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2tpcHBlZCc6IFsnU0tJUFBFRCcsICdza2lwcGVkJywgJ1VOU1VQUE9SVEVEJywgJ1VOVEVTVEVEJywgJ1VOUkVTT0xWRUQnXX0KIAogCiAgICAgZGVmIGhhbmRsZV9wdGVzdF9yZXN1bHQoc2VsZiwgaywgc3RhdHVzLCByZXN1bHQsIG1hY2hpbmUpOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weSBiL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKaW5kZXggZTdlNzAyMS4uYzU3M2RjNyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CkBAIC0xNiwxMiArMTYsNTEgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0aHJlYWRpbmcKIGltcG9ydCBpbXBvcnRsaWIKIGZyb20gaW1wb3J0bGliIGltcG9ydCBtYWNoaW5lcnkKIAotZGVmIGxvZ2dlcl9jcmVhdGUobmFtZSwgc3RyZWFtPU5vbmUpOgorY2xhc3MgS2VlcEFsaXZlU3RyZWFtSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBrZWVwYWxpdmU9VHJ1ZSwgKiprd2FyZ3MpOgorICAgICAgICBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKQorICAgICAgICBpZiBrZWVwYWxpdmUgaXMgVHJ1ZToKKyAgICAgICAgICAgIGtlZXBhbGl2ZSA9IDUwMDAgIyBkZWZhdWx0IHRpbWVvdXQKKyAgICAgICAgc2VsZi5fdGltZW91dCA9IHRocmVhZGluZy5Db25kaXRpb24oKQorICAgICAgICBzZWxmLl9zdG9wID0gRmFsc2UKKworICAgICAgICAjIGJhY2tncm91bmQgdGhyZWFkIHdhaXRzIG9uIGNvbmRpdGlvbiwgaWYgdGhlIGNvbmRpdGlvbiBkb2VzIG5vdAorICAgICAgICAjIGhhcHBlbiBlbWl0IGEga2VlcCBhbGl2ZSBtZXNzYWdlCisgICAgICAgIGRlZiB0aHJlYWQoKToKKyAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fdGltZW91dDoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuX3RpbWVvdXQud2FpdChrZWVwYWxpdmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbWl0KGxvZ2dpbmcuTG9nUmVjb3JkKCJrZWVwYWxpdmUiLCBsb2dnaW5nLklORk8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgTm9uZSwgIktlZXBhbGl2ZSBtZXNzYWdlIiwgTm9uZSwgTm9uZSkpCisKKyAgICAgICAgc2VsZi5fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQgPSB0aHJlYWQsIGRhZW1vbiA9IFRydWUpCisgICAgICAgIHNlbGYuX3RocmVhZC5zdGFydCgpCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICMgbWFyayB0aGUgdGhyZWFkIHRvIHN0b3AgYW5kIG5vdGlmeSBpdAorICAgICAgICBzZWxmLl9zdG9wID0gVHJ1ZQorICAgICAgICB3aXRoIHNlbGYuX3RpbWVvdXQ6CisgICAgICAgICAgICBzZWxmLl90aW1lb3V0Lm5vdGlmeSgpCisgICAgICAgICMgd2FpdCBmb3IgaXQgdG8gam9pbgorICAgICAgICBzZWxmLl90aHJlYWQuam9pbigpCisgICAgICAgIHN1cGVyKCkuY2xvc2UoKQorCisgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAgICAgc3VwZXIoKS5lbWl0KHJlY29yZCkKKyAgICAgICAgIyB0cmlnZ2VyIHRpbWVyIHJlc2V0CisgICAgICAgIHdpdGggc2VsZi5fdGltZW91dDoKKyAgICAgICAgICAgIHNlbGYuX3RpbWVvdXQubm90aWZ5KCkKKworZGVmIGxvZ2dlcl9jcmVhdGUobmFtZSwgc3RyZWFtPU5vbmUsIGtlZXBhbGl2ZT1Ob25lKToKICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihuYW1lKQotICAgIGxvZ2dlcmhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3RyZWFtPXN0cmVhbSkKKyAgICBpZiBrZWVwYWxpdmUgaXMgbm90IE5vbmU6CisgICAgICAgIGxvZ2dlcmhhbmRsZXIgPSBLZWVwQWxpdmVTdHJlYW1IYW5kbGVyKHN0cmVhbT1zdHJlYW0sIGtlZXBhbGl2ZT1rZWVwYWxpdmUpCisgICAgZWxzZToKKyAgICAgICAgbG9nZ2VyaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzdHJlYW09c3RyZWFtKQogICAgIGxvZ2dlcmhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKCIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIpKQogICAgIGxvZ2dlci5hZGRIYW5kbGVyKGxvZ2dlcmhhbmRsZXIpCiAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXJpc2N2LndrcyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXJpc2N2LndrcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmM2OGI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11cmlzY3Yud2tzCkBAIC0wLDAgKzEsMyBAQAorIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIHFjb3cyIGltYWdlIGZvciBSSVNDLVYgUUVNVSBtYWNoaW5lcworCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCByb290IC0tYWxpZ24gNDA5NiAtLXNpemUgNUcKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1zZWxmdGVzdCBiL3Bva3kvc2NyaXB0cy9vZS1zZWxmdGVzdAppbmRleCA1NzY2MmIyLi4xOGFjMGY1IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2Utc2VsZnRlc3QKKysrIGIvcG9reS9zY3JpcHRzL29lLXNlbGZ0ZXN0CkBAIC0zMyw3ICszMyw3IEBACiBmcm9tIG9lcWEudXRpbHMgaW1wb3J0IGxvYWRfdGVzdF9jb21wb25lbnRzCiBmcm9tIG9lcWEuY29yZS5leGNlcHRpb24gaW1wb3J0IE9FUUFQcmVSdW4KIAotbG9nZ2VyID0gc2NyaXB0dXRpbHMubG9nZ2VyX2NyZWF0ZSgnb2Utc2VsZnRlc3QnLCBzdHJlYW09c3lzLnN0ZG91dCkKK2xvZ2dlciA9IHNjcmlwdHV0aWxzLmxvZ2dlcl9jcmVhdGUoJ29lLXNlbGZ0ZXN0Jywgc3RyZWFtPXN5cy5zdGRvdXQsIGtlZXBhbGl2ZT1UcnVlKQogCiBkZWYgbWFpbigpOgogICAgIGRlc2NyaXB0aW9uID0gIlNjcmlwdCB0aGF0IHJ1bnMgdW5pdCB0ZXN0cyBhZ2FpbnN0IGJpdGJha2UgYW5kIG90aGVyIFlvY3RvIHJlbGF0ZWQgdG9vbHMuIFRoZSBnb2FsIGlzIHRvIHZhbGlkYXRlIHRvb2xzIGZ1bmN0aW9uYWxpdHkgYW5kIG1ldGFkYXRhIGludGVncml0eS4gUmVmZXIgdG8gaHR0cHM6Ly93aWtpLnlvY3RvcHJvamVjdC5vcmcvd2lraS9PZS1zZWxmdGVzdCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcnVucWVtdSBiL3Bva3kvc2NyaXB0cy9ydW5xZW11CmluZGV4IGU5YjgzNzMuLjQ0MTVlOWIgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ydW5xZW11CisrKyBiL3Bva3kvc2NyaXB0cy9ydW5xZW11CkBAIC04Miw3ICs4Miw3IEBACiAgIGJvb3RwYXJhbXM9PHh5ej4gLSBzcGVjaWZ5IGN1c3RvbSBrZXJuZWwgcGFyYW1ldGVycyBkdXJpbmcgYm9vdAogICBoZWxwLCAtaCwgLS1oZWxwOiBwcmludCB0aGlzIHRleHQKICAgLWQsIC0tZGVidWc6IEVuYWJsZSBkZWJ1ZyBvdXRwdXQKLSAgLXEsIC0tcXVpdGU6IEhpZGUgbW9zdCBvdXRwdXQgZXhjZXB0IGVycm9yIG1lc3NhZ2VzCisgIC1xLCAtLXF1aWV0OiBIaWRlIG1vc3Qgb3V0cHV0IGV4Y2VwdCBlcnJvciBtZXNzYWdlcwogCiBFeGFtcGxlczoKICAgcnVucWVtdQpAQCAtMTQ1LDggKzE0NSw2IEBACiAgICAgICAgICMgdG8gYmUgYWRkZWQgd2l0aCAtZHJpdmUgaWY9cGZsYXNoLgogICAgICAgICAjIEZvdW5kIGluIHRoZSBzYW1lIHBsYWNlcyBhcyB0aGUgcm9vdGZzLCB3aXRoIG9yIHdpdGhvdXQgb25lIG9mCiAgICAgICAgICMgdGhlc2Ugc3VmZmljZXM6IHFjb3cyLCBiaW4uCi0gICAgICAgICMgU2V0dGluZyBvbmUgYWxzbyBhZGRzICItdmdhIHN0ZCIgYmVjYXVzZSB0aGF0IGlzIGFsbCB0aGF0Ci0gICAgICAgICMgT1ZNRiBzdXBwb3J0cy4KICAgICAgICAgc2VsZi5vdm1mX2Jpb3MgPSBbXQogICAgICAgICAjIFdoZW4gZW5yb2xsaW5nIGRlZmF1bHQgU2VjdXJlIEJvb3Qga2V5cywgdGhlIGh5cGVydmlzb3IKICAgICAgICAgIyBtdXN0IHByb3ZpZGUgdGhlIFBsYXRmb3JtIEtleSBhbmQgdGhlIGZpcnN0IEtleSBFeGNoYW5nZSBLZXkKQEAgLTc1NSw4ICs3NTMsOCBAQAogICAgICAgICBpZiBzOgogICAgICAgICAgICAgc2VsZi5zZXQoJ1FCX01FTScsICctbSAlcycgJSBzLmdyb3VwKDEpKQogICAgICAgICBlbGlmIG5vdCBzZWxmLmdldCgnUUJfTUVNJyk6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygnUUJfTUVNIGlzIG5vdCBzZXQsIHVzZSA1MTJNIGJ5IGRlZmF1bHQnKQotICAgICAgICAgICAgc2VsZi5zZXQoJ1FCX01FTScsICctbSA1MTInKQorICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1FCX01FTSBpcyBub3Qgc2V0LCB1c2UgMjU2TSBieSBkZWZhdWx0JykKKyAgICAgICAgICAgIHNlbGYuc2V0KCdRQl9NRU0nLCAnLW0gMjU2JykKIAogICAgICAgICAjIENoZWNrIGFuZCByZW1vdmUgTSBvciBtIHN1ZmZpeAogICAgICAgICBxYl9tZW0gPSBzZWxmLmdldCgnUUJfTUVNJykKQEAgLTEyODMsMTAgKzEyODEsNiBAQAogICAgICAgICBmb3Igb3ZtZiBpbiBzZWxmLm92bWZfYmlvczoKICAgICAgICAgICAgIGZvcm1hdCA9IG92bWYucnNwbGl0KCcuJywgMSlbLTFdCiAgICAgICAgICAgICBzZWxmLnFlbXVfb3B0ICs9ICcgLWRyaXZlIGlmPXBmbGFzaCxmb3JtYXQ9JXMsZmlsZT0lcycgJSAoZm9ybWF0LCBvdm1mKQotICAgICAgICBpZiBzZWxmLm92bWZfYmlvczoKLSAgICAgICAgICAgICMgT1ZNRiBvbmx5IHN1cHBvcnRzIG5vcm1hbCBWR0EsIGkuZS4gd2UgbmVlZCB0byBvdmVycmlkZSBhIC12Z2Egdm13YXJlCi0gICAgICAgICAgICAjIHRoYXQgZ2V0cyBhZGRlZCBmb3IgZXhhbXBsZSBmb3Igbm9ybWFsIHFlbXV4ODYuCi0gICAgICAgICAgICBzZWxmLnFlbXVfb3B0ICs9ICcgLXZnYSBzdGQnCiAKICAgICAgICAgc2VsZi5xZW11X29wdCArPSAnICcgKyBzZWxmLnFlbXVfb3B0X3NjcmlwdAogCg==