ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IDBhMWY5M2IuLjZiMWZkMWIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjMsNiArMjMsNyBAQAogL2dpdC1jYXQtZmlsZQogL2dpdC1jaGVjay1hdHRyCiAvZ2l0LWNoZWNrLWlnbm9yZQorL2dpdC1jaGVjay1tYWlsbWFwCiAvZ2l0LWNoZWNrLXJlZi1mb3JtYXQKIC9naXQtY2hlY2tvdXQKIC9naXQtY2hlY2tvdXQtaW5kZXgKQEAgLTEyNSw2ICsxMjYsNyBAQAogL2dpdC1yZW1vdGUtZnRwcwogL2dpdC1yZW1vdGUtZmQKIC9naXQtcmVtb3RlLWV4dAorL2dpdC1yZW1vdGUtdGVzdGdpdAogL2dpdC1yZW1vdGUtdGVzdHB5CiAvZ2l0LXJlbW90ZS10ZXN0c3ZuCiAvZ2l0LXJlcGFjawpAQCAtMTkwLDYgKzE5Miw3IEBACiAvdGVzdC1ta3RlbXAKIC90ZXN0LXBhcnNlLW9wdGlvbnMKIC90ZXN0LXBhdGgtdXRpbHMKKy90ZXN0LXByaW8tcXVldWUKIC90ZXN0LXJlYWQtY2FjaGUKIC90ZXN0LXJlZ2V4CiAvdGVzdC1yZXZpc2lvbi13YWxraW5nCkBAIC0yMjksNiArMjMyLDcgQEAKIC9jc2NvcGUqCiAqLm9iagogKi5saWIKKyoucmVzCiAqLnNsbgogKi5zdW8KICoubmNiCmRpZmYgLS1naXQgYS8ubWFpbG1hcCBiLy5tYWlsbWFwCmluZGV4IDQ4ZDdhY2YuLmRmYTJlNjUgMTAwNjQ0Ci0tLSBhLy5tYWlsbWFwCisrKyBiLy5tYWlsbWFwCkBAIC01LDk4ICs1LDIyMyBAQAogIyBzYW1lIHBlcnNvbiBhcHBlYXJpbmcgbm90IHRvIGJlIHNvLgogIwogCis8bmljb0BmbHV4bmljLm5ldD4gPG5pY29AY2FtLm9yZz4KK0FsZWphbmRybyBSLiBTZWRlw7FvIDxhc2VkZW5vQE1JVC5FRFU+IDxhc2VkZW5vQG1pdC5lZHU+CiBBbGV4IEJlbm7DqWUgPGtlcm5lbC1oYWNrZXJAYmVubmVlLmNvbT4KK0FsZXggUmllc2VuIDxyYWEubGttbEBnbWFpbC5jb20+IDxmb3JrMEB0LW9ubGluZS5kZT4KK0FsZXggUmllc2VuIDxyYWEubGttbEBnbWFpbC5jb20+IDxyYWFAbGltYm8ubG9jYWxkb21haW4+CitBbGV4IFJpZXNlbiA8cmFhLmxrbWxAZ21haWwuY29tPiA8cmFhQHN0ZWVsLmhvbWU+CitBbGV4IFZhbmRpdmVyIDxhbGV4QGNobXJyLm5ldD4gPGFsZXhtdkBNSVQuRURVPgogQWxleGFuZGVyIEdhdnJpbG92IDxhbmdhdnJpbG92QGdtYWlsLmNvbT4KK0FsZXhleSBTaHVta2luIDxhbGV4LmNyZXpvZmZAZ21haWwuY29tPiA8emFwcGVkQG1haWwucnU+CitBbmRlcnMgS2FzZW9yZyA8YW5kZXJza0BNSVQuRURVPiA8YW5kZXJza0Brc3BsaWNlLmNvbT4KK0FuZGVycyBLYXNlb3JnIDxhbmRlcnNrQE1JVC5FRFU+IDxhbmRlcnNrQG1pdC5lZHU+CiBBbmVlc2ggS3VtYXIgSy5WIDxhbmVlc2gua3VtYXJAZ21haWwuY29tPgorQmVuIFdhbHRvbiA8YmR3YWx0b25AZ21haWwuY29tPiA8YndhbHRvbkBhcnRzY2kudXRvcm9udG8uY2E+CitCZXJudCBIYW5zZW4gPGJlcm50QG5vcmFuZy5jYT4gPGJlcm50QGFsdW1uaS51d2F0ZXJsb28uY2E+CitCcmFuZG9uIENhc2V5IDxkcmFmbmVsQGdtYWlsLmNvbT4gPGNhc2V5QG5ybHNzYy5uYXZ5Lm1pbD4KIEJyaWFuIE0uIENhcmxzb24gPHNhbmRhbHNAY3J1c3R5dG9vdGhwYXN0ZS5hdGguY3g+CitCcnlhbiBMYXJzZW4gPGJyeWFuQGxhcnNlbi5zdD4gPGJyeWFuLmxhcnNlbkBnbWFpbC5jb20+CitCcnlhbiBMYXJzZW4gPGJyeWFuQGxhcnNlbi5zdD4gPGJyeWFubGFyc2VuQHlhaG9vLmNvbT4KIENoZW5nIFJlbnF1YW4gPGNycXVhbkBnbWFpbC5jb20+CiBDaHJpcyBTaG9lbWFrZXIgPGMuc2hvZW1ha2VyQGNveC5uZXQ+CitDaHJpcyBXcmlnaHQgPGNocmlzd0Bzb3VzLXNvbC5vcmc+IDxjaHJpc3dAb3NkbC5vcmc+CitDb3JkIFNlZWxlIDxjb3dvc2VAZ21haWwuY29tPiA8Y293b3NlQGdvb2dsZW1haWwuY29tPgorQ2hyaXN0aWFuIFN0aW1taW5nIDxzdGltbWluZ0B0dWhoLmRlPiA8Y2hzQGNraXN0ZS5nb2V0aGVhbGxlZT4KK0NzYWJhIEhlbmsgPGNzYWJhQGdsdXN0ZXIuY29tPiA8Y3NhYmFAbG93bGlmZS5odT4KIERhbiBKb2huc29uIDxjb21wdXRlcmRydWlkQGdtYWlsLmNvbT4KLURhbmEgTC4gSG93IDxkYW5haG93QGdtYWlsLmNvbT4KLURhbmEgTC4gSG93IDxob3dAZGVhdGh2YWxsZXkuY3N3aXRjaC5jb20+CitEYW5hIEwuIEhvdyA8ZGFuYWhvd0BnbWFpbC5jb20+IDxob3dAZGVhdGh2YWxsZXkuY3N3aXRjaC5jb20+CiBEYW5pZWwgQmFya2Fsb3cgPGJhcmthbG93QGlhYmVydm9uLm9yZz4KK0RhdmlkIEJyb3duIDxnaXRAZGF2aWRiLm9yZz4gPGRhdmlkYkBxdWljaW5jLmNvbT4KIERhdmlkIEQuIEtpbHplciA8ZGRraWx6ZXJAa2lsemVyLm5ldD4KIERhdmlkIEvDpWdlZGFsIDxkYXZpZGtAbHlzYXRvci5saXUuc2U+CitEYXZpZCBSZWlzcyA8ZHJlaXNzQGZhY2Vib29rLmNvbT4gPGRyZWlzc0BkcmVpc3Mtdm13YXJlLihub25lKT4KIERhdmlkIFMuIE1pbGxlciA8ZGF2ZW1AZGF2ZW1sb2Z0Lm5ldD4KIERlc2tpbiBNaWxsZXIgPGRlc2tpbm1AdW1pY2guZWR1PgogRGlyayBTw7xzc2Vyb3R0IDxuZXdzbGV0dGVyQGRpcmsubXkxLmNjPgorRXJpYyBCbGFrZSA8ZWJsYWtlQHJlZGhhdC5jb20+IDxlYmI5QGJ5dS5uZXQ+CitFcmljIEhhbmNocm93IDxlcmljLmhhbmNocm93QGdtYWlsLmNvbT4gPG9mZmJ5MUBibGFyZy5uZXQ+CiBFcmljIFMuIFJheW1vbmQgPGVzckB0aHlyc3VzLmNvbT4KIEVyaWsgRmF5ZS1MdW5kIDxrdXNtYWJpdGVAZ21haWwuY29tPiA8a3VzbWFiaXRlQGdvb2dsZW1haWwuY29tPgotRnJlZHJpayBLdWl2aW5lbiA8ZnJla3UwNDVAc3R1ZGVudC5saXUuc2U+CitFeXZpbmQgQmVybmhhcmRzZW4gPGV5dmluZC5iZXJuaGFyZHNlbkBnbWFpbC5jb20+IDxleXZpbmQtZ2l0QG9yYWtlbC5udG51Lm5vPgorRmxvcmlhbiBBY2hsZWl0bmVyIDxmbG9yaWFuLmFjaGxlaXRuZXIuMi42LjMxQGdtYWlsLmNvbT4gPGZsb3JpYW4uYWNobGVpdG5lcjIuNi4zMUBnbWFpbC5jb20+CitGcmFuY2sgQnVpLUh1dSA8dmFnYWJvbi54eXpAZ21haWwuY29tPiA8ZmJ1aWh1dUBnbWFpbC5jb20+CitGcmFuayBMaWNodGVuaGVsZCA8ZnJhbmtAbGljaHRlbmhlbGQuZGU+IDxkanBpZ0BkZWJpYW4ub3JnPgorRnJhbmsgTGljaHRlbmhlbGQgPGZyYW5rQGxpY2h0ZW5oZWxkLmRlPiA8ZmxpY2h0ZW5oZWxkQGFzdGFyby5jb20+CitGcmVkcmlrIEt1aXZpbmVuIDxmcmVrdWlAZ21haWwuY29tPiA8ZnJla3UwNDVAc3R1ZGVudC5saXUuc2U+CiBGcsOpZMOpcmljIEhlaXR6bWFubiA8ZnJlZGVyaWMuaGVpdHptYW5uQGdtYWlsLmNvbT4KLUguIFBldGVyIEFudmluIDxocGFAYm9uZGUuc2Mub3Jpb25tdWx0aS5jb20+Ci1ILiBQZXRlciBBbnZpbiA8aHBhQHRhemVuZGEuc2Mub3Jpb25tdWx0aS5jb20+Ci1ILiBQZXRlciBBbnZpbiA8aHBhQHRyYW50b3IuaG9zLmFudmluLm9yZz4KK0dhcnJ5IERvbGxleSA8Z2RvbGxleUB1Y2xhLmVkdT4gPGdkb2xsZXlAYXJwbmV0d29ya3MuY29tPgorR3JlZyBQcmljZSA8cHJpY2VAbWl0LmVkdT4gPHByaWNlQE1JVC5FRFU+CitHcmVnIFByaWNlIDxwcmljZUBtaXQuZWR1PiA8cHJpY2VAa3NwbGljZS5jb20+CitIZWlrbyBWb2lndCA8aHZvaWd0QGh2b2lndC5uZXQ+IDxnaXQtbGlzdEBodm9pZ3QubmV0PgorSC4gTWVyaWpuIEJyYW5kIDxoLm0uYnJhbmRAeHM0YWxsLm5sPiBILk1lcmlqbiBCcmFuZCA8aC5tLmJyYW5kQHhzNGFsbC5ubD4KK0guIFBldGVyIEFudmluIDxocGFAenl0b3IuY29tPiA8aHBhQGJvbmRlLnNjLm9yaW9ubXVsdGkuY29tPgorSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+IDxocGFAc215cm5vLmhvcy5hbnZpbi5vcmc+CitILiBQZXRlciBBbnZpbiA8aHBhQHp5dG9yLmNvbT4gPGhwYUB0YXplbmRhLnNjLm9yaW9ubXVsdGkuY29tPgorSC4gUGV0ZXIgQW52aW4gPGhwYUB6eXRvci5jb20+IDxocGFAdHJhbnRvci5ob3MuYW52aW4ub3JnPgorSGFuLVdlbiBOaWVuaHV5cyA8aGFud2VuQGdvb2dsZS5jb20+IEhhbi1XZW4gTmllbmh1eXMgPGhhbndlbkB4czRhbGwubmw+CiBIb3JzdCBILiB2b24gQnJhbmQgPHZvbmJyYW5kQGluZi51dGZzbS5jbD4KLcSwc21haWwgRMO2bm1leiA8aXNtYWlsQHBhcmR1cy5vcmcudHI+CitKLiBCcnVjZSBGaWVsZHMgPGJmaWVsZHNAY2l0aS51bWljaC5lZHU+IDxiZmllbGRzQGZpZWxkc2VzLm9yZz4KK0ouIEJydWNlIEZpZWxkcyA8YmZpZWxkc0BjaXRpLnVtaWNoLmVkdT4gPGJmaWVsZHNAcGlnLmxpbnV4ZGV2LnVzLmRlbGwuY29tPgorSi4gQnJ1Y2UgRmllbGRzIDxiZmllbGRzQGNpdGkudW1pY2guZWR1PiA8YmZpZWxkc0BwdXp6bGUuZmllbGRzZXMub3JnPgogSmFrdWIgTmFyxJlic2tpIDxqbmFyZWJAZ21haWwuY29tPgotSmF5IFNvZmZpYW4gPGpheXNvZmZpYW4rZ2l0QGdtYWlsLmNvbT4KK0phc29uIFJpZWR5IDxlanJAZWVjcy5iZXJrZWxleS5lZHU+IDxlanJARUVDUy5CZXJrZWxleS5FRFU+CitKYXNvbiBSaWVkeSA8ZWpyQGVlY3MuYmVya2VsZXkuZWR1PiA8ZWpyQGNzLmJlcmtlbGV5LmVkdT4KK0pheSBTb2ZmaWFuIDxqYXlzb2ZmaWFuQGdtYWlsLmNvbT4gPGpheXNvZmZpYW4rZ2l0QGdtYWlsLmNvbT4KIEplZmYgS2luZyA8cGVmZkBwZWZmLm5ldD4gPHBlZmZAZ2l0aHViLmNvbT4KK0plZmYgTXVpemVsYWFyIDxqbXVpemVsYWFyQG1vemlsbGEuY29tPiA8amVmZkBpbmZpZGlnbS5uZXQ+CitKaW0gTWV5ZXJpbmcgPGppbUBtZXllcmluZy5uZXQ+IDxtZXllcmluZ0ByZWRoYXQuY29tPgogSm9hY2hpbSBCZXJkYWwgSGFnYSA8Y2poYWdhQGZ5cy51aW8ubm8+Ci1Kb2hhbm5lcyBTaXh0IDxqNnRAa2RiZy5vcmc+IDxqb2hhbm5lcy5zaXh0QHRlbGVjb20uYXQ+Ci1Kb2hhbm5lcyBTaXh0IDxqNnRAa2RiZy5vcmc+IDxqLnNpeHRAdmlzY292ZXJ5Lm5ldD4KK0pvaGFubmVzIFNjaGluZGVsaW4gPEpvaGFubmVzLlNjaGluZGVsaW5AZ214LmRlPiA8am9oYW5uZXMuc2NoaW5kZWxpbkBnbXguZGU+CiBKb2hhbm5lcyBTaXh0IDxqNnRAa2RiZy5vcmc+IDxKLlNpeHRAZXVkYXB0aWNzLmNvbT4KLUpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1Kb24gU2V5bW91ciA8am9uQGJsYWNrY3ViZXMuZHluZG5zLm9yZz4KLUpvbmF0aGFuIE5pZWRlciA8anJuaWVkZXJAdWNoaWNhZ28uZWR1PgorSm9oYW5uZXMgU2l4dCA8ajZ0QGtkYmcub3JnPiA8ai5zaXh0QHZpc2NvdmVyeS5uZXQ+CitKb2hhbm5lcyBTaXh0IDxqNnRAa2RiZy5vcmc+IDxqb2hhbm5lcy5zaXh0QHRlbGVjb20uYXQ+CitKb2huICdXYXJ0aG9nOScgSGF3bGV5IDx3YXJ0aG9nOUBrZXJuZWwub3JnPiA8d2FydGhvZzlAZWFnbGVzY3JhZy5uZXQ+CitKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPiA8amRsQGZyZWVzY2FsZS5jb20+CitKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPiA8amRsQGZyZWVzY2FsZS5vcmc+CitKb24gU2V5bW91ciA8am9uLnNleW1vdXJAZ21haWwuY29tPiA8am9uQGJsYWNrY3ViZXMuZHluZG5zLm9yZz4KK0pvbmF0aGFuIE5pZWRlciA8anJuaWVkZXJAZ21haWwuY29tPiA8anJuaWVkZXJAdWNoaWNhZ28uZWR1PgorSm9uYXRoYW4gZGVsIFN0cm90aGVyIDxqb24uZGVsU3Ryb3RoZXJAYmVzdGJlZm9yZS50dj4gPG1haWxsaXN0QHN0ZWVsc2tpZXMuY29tPgorSm9zaCBUcmlwbGV0dCA8am9zaEBqb3NodHJpcGxldHQub3JnPiA8am9zaEBmcmVlZGVza3RvcC5vcmc+CitKb3NoIFRyaXBsZXR0IDxqb3NoQGpvc2h0cmlwbGV0dC5vcmc+IDxqb3NodEB1cy5pYm0uY29tPgorSnVsaWFuIFBoaWxsaXBzIDxqdWxpYW5AcXVhbnR1bWZ5cmUuY28udWs+IDxqcDNAcXVhbnR1bWZ5cmUuY28udWs+CiBKdW5pbyBDIEhhbWFubyA8Z2l0c3RlckBwb2JveC5jb20+IDxnaXRzdGVyQHBvYm94LmNvbT4KLUp1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4gPGp1bmlvQHBvYm94LmNvbT4KLUp1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4gPGp1bmlvQHR3aW5zdW4uY29tPgotSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiA8anVua2lvQHR3aW5zdW4uY29tPgogSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiA8anVuaW9AaGVyYS5rZXJuZWwub3JnPgogSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiA8anVuaW9Aa2VybmVsLm9yZz4KK0p1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4gPGp1bmlvQHBvYm94LmNvbT4KK0p1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4gPGp1bmlvQHR3aW5zdW4uY29tPgogSnVuaW8gQyBIYW1hbm8gPGdpdHN0ZXJAcG9ib3guY29tPiA8anVua2lvQGNveC5uZXQ+Ci1LYXJsIEhhc3NlbHN0csO2bSA8a2hhQHRyZXNrYWwuY29tPgotS2V2aW4gTGV1bmcgPGtldmlubHNrQGdtYWlsLmNvbT4KK0p1bmlvIEMgSGFtYW5vIDxnaXRzdGVyQHBvYm94LmNvbT4gPGp1bmtpb0B0d2luc3VuLmNvbT4KK0thcmwgV2liZXJnIDxraGFAdHJlc2thbC5jb20+IEthcmwgSGFzc2Vsc3Ryw7ZtIDxraGFAdHJlc2thbC5jb20+CitLYXJsIFdpYmVyZyA8a2hhQHRyZXNrYWwuY29tPiBLYXJsIEhhc3NlbHN0csO2bSA8a2hhQHlvZ2h1cnQuaGVtbWEudHJlc2thbC5jb20+CitLYXJzdGVuIEJsZWVzIDxibGVlc0BkY29uLmRlPiA8a2Fyc3Rlbi5ibGVlc0BkY29uLmRlPgorS2Fyc3RlbiBCbGVlcyA8YmxlZXNAZGNvbi5kZT4gPGthcnN0ZW4uYmxlZXNAZ21haWwuY29tPgorS2F5IFNpZXZlcnMgPGtheS5zaWV2ZXJzQHZyZnkub3JnPiA8a2F5LnNpZXZlcnNAc3VzZS5kZT4KK0theSBTaWV2ZXJzIDxrYXkuc2lldmVyc0B2cmZ5Lm9yZz4gPGtheUBtYW0uKG5vbmUpPgorS2VpdGggQ2FzY2lvIDxrZWl0aEBDUy5VQ0xBLkVEVT4gPGtlaXRoQGNzLnVjbGEuZWR1PgogS2VudCBFbmdzdHJvbSA8a2VudEBseXNhdG9yLmxpdS5zZT4KK0tldmluIExldW5nIDxrZXZpbmxza0BnbWFpbC5jb20+CitLaXJpbGwgU21lbGtvdiA8a2lyckBuYXZ5dHV4LnNwYi5ydT4gPGtpcnJAbGFuZGF1LnBoeXMuc3BidS5ydT4KK0tpcmlsbCBTbWVsa292IDxraXJyQG5hdnl0dXguc3BiLnJ1PiA8a2lyckBtbnMuc3BiLnJ1PgorS251dCBGcmFua2UgPEtudXQuRnJhbmtlQGdteC5kZT4gPGsuZnJhbmtlQHNjaWVuY2UtY29tcHV0aW5nLmRlPgogTGFycyBEb2VsbGUgPGxhcnMuZG9lbGxlQG9uLWxpbmUgISBkZT4KIExhcnMgRG9lbGxlIDxsYXJzLmRvZWxsZUBvbi1saW5lLmRlPgorTGFycyBOb3NjaGluc2tpIDxsYXJzQHB1YmxpYy5ub3NjaGluc2tpLmRlPiA8bGFycy5ub3NjaGluc2tpQHJ3dGgtYWFjaGVuLmRlPgogTGkgSG9uZyA8bGVlaG9uZ0Bwa3UuZWR1LmNuPgotTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPiA8dG9ydmFsZHNAd29vZHkubGludXgtZm91bmRhdGlvbi5vcmc+Ci1MaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+IDx0b3J2YWxkc0Bvc2RsLm9yZz4KLUxpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4gPHRvcnZhbGRzQGc1Lm9zZGwub3JnPgogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPiA8dG9ydmFsZHNAZXZvLm9zZGwub3JnPgotTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPiA8dG9ydmFsZHNAcHBjOTcwLm9zZGwub3JnPgorTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPiA8dG9ydmFsZHNAZzUub3NkbC5vcmc+CitMaW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+IDx0b3J2YWxkc0Bvc2RsLm9yZz4KIExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4gPHRvcnZhbGRzQHBwYzk3MC5vc2RsLm9yZy4obm9uZSk+Ci1MdWthcyBTYW5kc3Ryw7ZtIDxsdWthc3NAZXRlay5jaGFsbWVycy5zZT4KK0xpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4gPHRvcnZhbGRzQHBwYzk3MC5vc2RsLm9yZz4KK0xpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4gPHRvcnZhbGRzQHdvb2R5LmxpbnV4LWZvdW5kYXRpb24ub3JnPgorTHVrYXMgU2FuZHN0csO2bSA8bHVrc2FuQGdtYWlsLmNvbT4gPGx1a2Fzc0BldGVrLmNoYWxtZXJzLnNlPgorTWFyYyBLaG91emFtIDxtYXJjLmtob3V6YW1AZXJpY3Nzb24uY29tPiA8bWFyYy5raG91emFtQGdtYWlsLmNvbT4KIE1hcmMtQW5kcsOpIEx1cmVhdSA8bWFyY2FuZHJlLmx1cmVhdUBnbWFpbC5jb20+CitNYXJjbyBDb3N0YWxiYSA8bWNvc3RhbGJhQGdtYWlsLmNvbT4gPG1jb3N0YWxiYUB5YWhvby5pdD4KK01hcmsgTGV2ZWRhaGwgPG1kbDEyM0B2ZXJpem9uLm5ldD4gPG1sZXZlZGFobEBnbWFpbC5jb20+CiBNYXJrIFJhZGEgPG1hcmFkYUB1d2F0ZXJsb28uY2E+CiBNYXJ0aW4gTGFuZ2hvZmYgPG1hcnRpbkBsYXB0b3Aub3JnPiA8bWFydGluQGNhdGFseXN0Lm5ldC5uej4KIE1hcnRpbiB2b24gWndlaWdiZXJnayA8bWFydGludm9uekBnbWFpbC5jb20+IDxtYXJ0aW4udm9uLnp3ZWlnYmVyZ2tAZ21haWwuY29tPgorTWF0dCBEcmFpc2V5IDxtYXR0QGRyYWlzZXkuY2E+IDxtYXR0ZHJhaXNleUBzeW1wYXRpY28uY2E+CitNYXR0IEtyYWFpIDxrcmFhaUBmdGJmcy5vcmc+IDxtYXR0LmtyYWFpQGFtby5hYmJvdHQuY29tPgorTWF0dCBNY0N1dGNoZW4gPG1hdHRAbWF0dG1jY3V0Y2hlbi5uZXQ+IDxoYXNocHJvZHVjdEBnbWFpbC5jb20+CitNYXR0aGlhcyBLZXN0ZW5ob2x6IDxtYXR0aGlhc0BzcGlubG9jay5jaD4gPG1rQHNwaW5sb2NrLmNoPgorTWF0dGhpYXMgVXJsaWNocyA8bWF0dGhpYXNAdXJsaWNocy5kZT4gPHNtdXJmQGtpc3RlLihub25lKT4KK01hdHRoaWFzIFVybGljaHMgPG1hdHRoaWFzQHVybGljaHMuZGU+IDxzbXVyZkBzbXVyZi5ub3Jpcy5kZT4KIE1pY2hhZWwgQ29sZW1hbiA8dHV0dWZhbkBnbWFpbC5jb20+CiBNaWNoYWVsIEogR3J1YmVyIDxnaXRAZHJtaWNoYS53YXJwbWFpbC5uZXQ+IDxtaWNoYWVsamdydWJlcitnbWFuZUBmYXN0bWFpbC5mbT4KK01pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QGtlcm5lbC5vcmc+IDxtc3RAcmVkaGF0LmNvbT4KK01pY2hhZWwgUy4gVHNpcmtpbiA8bXN0QGtlcm5lbC5vcmc+IDxtc3RAbWVsbGFub3guY28uaWw+CitNaWNoYWVsIFMuIFRzaXJraW4gPG1zdEBrZXJuZWwub3JnPiA8bXN0QGRldi5tZWxsYW5veC5jby5pbD4KIE1pY2hhZWwgVy4gT2xzb24gPG13b2xzb25AZ251Lm9yZz4KK01pY2hhZWwgV2l0dGVuIDxtZndpdHRlbkBnbWFpbC5jb20+IDxtZndpdHRlbkBNSVQuRURVPgorTWljaGFlbCBXaXR0ZW4gPG1md2l0dGVuQGdtYWlsLmNvbT4gPG1md2l0dGVuQG1pdC5lZHU+CitNaWNoYWwgUm9rb3MgPG1pY2hhbC5yb2tvc0BuZXh0c29mdC5jej4gPHJva29zQG5leHRzb2Z0LmN6PgogTWljaGVsZSBCYWxsYWJpbyA8YmFycmFfY3VkYUBrYXRhbWFpbC5jb20+CitNaWtsb3MgVmFqbmEgPHZtaWtsb3NAZnJ1Z2Fsd2FyZS5vcmc+IDx2bWlrbG9zQHN1c2UuY3o+CitOYW1oeXVuZyBLaW0gPG5hbWh5dW5nQGdtYWlsLmNvbT4gPG5hbWh5dW5nLmtpbUBsZ2UuY29tPgorTmFtaHl1bmcgS2ltIDxuYW1oeXVuZ0BnbWFpbC5jb20+IDxuYW1oeXVuZ0BrZXJuZWwub3JnPgogTmFuYWtvIFNoaXJhaXNoaSA8bmFuYWtvM0BibHVlYm90dGxlLmNvbT4KIE5hbmFrbyBTaGlyYWlzaGkgPG5hbmFrbzNAbGF2YWJpdC5jb20+CitOZWxzb24gRWxoYWdlIDxuZWxoYWdlQG1pdC5lZHU+IDxuZWxoYWdlQE1JVC5FRFU+CitOZWxzb24gRWxoYWdlIDxuZWxoYWdlQG1pdC5lZHU+IDxuZWxoYWdlQGtzcGxpY2UuY29tPgogTmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eSA8cGNsb3Vkc0BnbWFpbC5jb20+Ci08bmljb0BmbHV4bmljLm5ldD4gPG5pY29AY2FtLm9yZz4KLVBldGVyIEtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiA8cGV0ZXJAc3ZhcnRlbi5pbnRlcm4uc29mdHdvbHZlcy5wcC5zZT4KK05pY2sgU3Rva29lIDxuaWNrQG5vb2RsZWZhY3RvcnkuY28udWs+IE5pY2sgV29vbGxleSA8bmlja0Bub29kbGVmYWN0b3J5LmNvLnVrPgorTmljayBTdG9rb2UgPG5pY2tAbm9vZGxlZmFjdG9yeS5jby51az4gTmljayBXb29sbGV5IDxuaWNrd29vbGxleUB5YWhvby5jby51az4KK05pY29sYXMgTW9yZXktQ2hhaXNlbWFydGluIDxkZXZlbC1naXRAbW9yZXktY2hhaXNlbWFydGluLmNvbT4gPG5pY29sYXMubW9yZXlAZnJlZS5mcj4KK05pY29sYXMgTW9yZXktQ2hhaXNlbWFydGluIDxkZXZlbC1naXRAbW9yZXktY2hhaXNlbWFydGluLmNvbT4gPG5tb3JleUBrYWxyYXkuZXU+CitOaWNvbGFzIFNlYnJlY2h0IDxuaWNvbGFzLnMuZGV2QGdteC5mcj4gPG5pLnNAbGFwb3N0ZS5uZXQ+CitQYW9sbyBCb256aW5pIDxib256aW5pQGdudS5vcmc+IDxwYW9sby5ib256aW5pQGx1LnVuaXNpLmNoPgorUGFzY2FsIE9icnkgPHBhc2NhbEBvYnJ5Lm5ldD4gPHBhc2NhbC5vYnJ5QGdtYWlsLmNvbT4KK1Bhc2NhbCBPYnJ5IDxwYXNjYWxAb2JyeS5uZXQ+IDxwYXNjYWwub2JyeUB3YW5hZG9vLmZyPgorUGF0IE5vdHogPHBhdG5vdHpAZ21haWwuY29tPiA8cGtub3R6QHNhbmRpYS5nb3Y+CitQYXVsIE1hY2tlcnJhcyA8cGF1bHVzQHNhbWJhLm9yZz4gPHBhdWx1c0Bkb3JyaWdvLihub25lKT4KK1BhdWwgTWFja2VycmFzIDxwYXVsdXNAc2FtYmEub3JnPiA8cGF1bHVzQHBvZ28uKG5vbmUpPgorUGV0ZXIgQmF1bWFubiA8d2FzdGUubWFuYWdlckBnbXguZGU+IDxQZXRlci5CLkJhdW1hbm5Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KK1BldGVyIEJhdW1hbm4gPHdhc3RlLm1hbmFnZXJAZ214LmRlPiA8c2lwcmJhdW1Ac3R1ZC5pbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KIFBldGVyIEtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiA8cGV0ZXJAc29mdHdvbHZlcy5wcC5zZT4KK1BldGVyIEtyZWZ0aW5nIDxwZXRlckBzb2Z0d29sdmVzLnBwLnNlPiA8cGV0ZXJAc3ZhcnRlbi5pbnRlcm4uc29mdHdvbHZlcy5wcC5zZT4KIFBldHIgQmF1ZGlzIDxwYXNreUB1Y3cuY3o+IDxwYXNreUBzdXNlLmN6PgorUGV0ciBCYXVkaXMgPHBhc2t5QHVjdy5jej4gPHhwYXNreUBtYWNoaW5lPgorUGhpbCBIb3JkIDxob3JkcEBjaXNjby5jb20+IDxwaGlsLmhvcmRAZ21haWwuY29tPgorUGhpbGlwIErDpGdlbnN0ZWR0IDxwaGlsaXBAZm9vbGlwLm9yZz4gPHBoaWxpcC5qYWdlbnN0ZWR0QGdtYWlsLmNvbT4KK1BoaWxpcHAgQS4gSGFydG1hbm4gPHBhaEBxby5jeD4gPHBoQHNvcmdoLmRlPgogUGhpbGlwcGUgQnJ1aGF0IDxib29rQGNwYW4ub3JnPgogUmFsZiBUaGllbG93IDxyYWxmLnRoaWVsb3dAZ21haWwuY29tPiA8cmFsZi50aGllbG93QGdvb2dsZW1haWwuY29tPgogUmFtc2F5IEFsbGFuIEpvbmVzIDxyYW1zYXlAcmFtc2F5MS5kZW1vbi5jby51az4KLVJlbsOpIFNjaGFyZmUgPHJlbmUuc2NoYXJmZUBsc3JmaXJlLmF0aC5jeD4KK1JlbsOpIFNjaGFyZmUgPGwucy5yQHdlYi5kZT4gPHJlbmUuc2NoYXJmZUBsc3JmaXJlLmF0aC5jeD4KIFJvYmVydCBGaXR6c2ltb25zIDxyb2JmaXR6QDI3M2submV0PgorUm9iZXJ0IFNoZWFybWFuIDxyb2JlcnRzaGVhcm1hbkBnbWFpbC5jb20+IDxyb2JAY29kZXdlYXZlcnMuY29tPgogUm9iZXJ0IFplaCA8cm9iZXJ0LmEuemVoQGdtYWlsLmNvbT4KLVNhbSBWaWxhaW4gPHNhbUB2aWxhaW4ubmV0PgotU2FudGkgQsOpamFyIDxzYmVqYXJAZ21haWwuY29tPgorUm9iaW4gUm9zZW5iZXJnIDxyb2Jpbi5yb3NlbmJlcmdAZGV3aXJlLmNvbT4gPHJvYmluLnJvc2VuYmVyZy5saXN0c0BkZXdpcmUuY29tPgorUnlhbiBBbmRlcnNvbiA8cnlhbkBtaWNob25saW5lLmNvbT4gPHJkYUBnb29nbGUuY29tPgorU2FsaWtoIFpha2lyb3YgPHNhbGlraC56YWtpcm92QGdtYWlsLmNvbT4gPFNhbGlraC5aYWtpcm92QEludGVsLmNvbT4KK1NhbSBWaWxhaW4gPHNhbUB2aWxhaW4ubmV0PiA8c2FtLnZpbGFpbkBjYXRhbHlzdC5uZXQubno+CitTYW50aSBCw6lqYXIgPHNhbnRpQGFnb2xpbmEubmV0PiA8c2JlamFyQGdtYWlsLmNvbT4KIFNlYW4gRXN0YWJyb29rcyA8c2VhbmxrbWxAc3ltcGF0aWNvLmNhPgorU2ViYXN0aWFuIFNjaHViZXJ0aCA8c3NjaHViZXJ0aEBnbWFpbC5jb20+IDxzc2NodWJlcnRoQHZpc2FnZWltYWdpbmcuY29tPgorU2V0aCBGYWxjb24gPHNldGhAdXNlcnByaW1hcnkubmV0PiA8c2ZhbGNvbkBmaGNyYy5vcmc+CiBTaGF3biBPLiBQZWFyY2UgPHNwZWFyY2VAc3BlYXJjZS5vcmc+Ci1TdGV2ZW4gR3JpbW0gPGtvcmV0aEBtaWR3aW50ZXIuY29tPgorU2ltb24gSGF1c21hbm4gPGhhdXNtYW5uQGtkZS5vcmc+IDxzaW1vbkBsc3QuZGU+CitTaW1vbiBIYXVzbWFubiA8aGF1c21hbm5Aa2RlLm9yZz4gPHNoYXVzbWFuQHRyb2xsdGVjaC5jb20+CitTdGVmYW4gTmFld2UgPHN0ZWZhbi5uYWV3ZUBnbWFpbC5jb20+IDxzdGVmYW4ubmFld2VAYXRsYXMtZWxla3Ryb25pay5jb20+CitTdGVmYW4gTmFld2UgPHN0ZWZhbi5uYWV3ZUBnbWFpbC5jb20+IDxzdGVmYW4ubmFld2VAZ29vZ2xlbWFpbC5jb20+CitTdGVmYW4gU3BlcmxpbmcgPHN0c3BAZWxlZ28uZGU+IDxzdHNwQHN0c3AubmFtZT4KK8WgdMSbcMOhbiBOxJttZWMgPHN0ZXBuZW1AZ21haWwuY29tPiA8c3RlcGFuLm5lbWVjQGdtYWlsLmNvbT4KK1N0ZXBoZW4gQm95ZCA8YmViYXJpbm9AZ21haWwuY29tPiA8c2JveWRAY29kZWF1cm9yYS5vcmc+CitTdGV2ZW4gRHJha2UgPHNkcmFrZUB4bmV0LmNvLm56PiA8c2RyYWtlQGlodWcuY28ubno+CitTdGV2ZW4gR3JpbW0gPGtvcmV0aEBtaWR3aW50ZXIuY29tPiA8c2dyaW1tQHNncmltbS1tYnAubG9jYWw+CitTdGV2ZW4gV2FsdGVyIDxzdGV2ZW5yd2FsdGVyQGdtYWlsLmNvbT4gPHN3YWx0ZXJAbGV4bWFyay5jb20+CitTdGV2ZW4gV2FsdGVyIDxzdGV2ZW5yd2FsdGVyQGdtYWlsLmNvbT4gPHN3YWx0ZXJAbHBkZXYucHJ0ZGV2LmxleG1hcmsuY29tPgorU3ZlbiBWZXJkb29sYWVnZSA8c2tpbW9Aa290bmV0Lm9yZz4gPFN2ZW4uVmVyZG9vbGFlZ2VAY3Mua3VsZXV2ZW4uYWMuYmU+CitTdmVuIFZlcmRvb2xhZWdlIDxza2ltb0Brb3RuZXQub3JnPiA8c2tpbW9AbGlhY3Mubmw+CiBUYXkgUmF5IENodWFuIDxyY3RheTg5QGdtYWlsLmNvbT4KK1RlZCBQZXJjaXZhbCA8dGVkQG1pZGczdC5uZXQ+IDx0ZWQucGVyY2l2YWxAcXVlc3QuY29tPgogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KK1Rob21hcyBBY2tlcm1hbm4gPHRoLmFja2VyQGFyY29yLmRlPiA8dGguYWNrZXI2NkBhcmNvci5kZT4KIFRob21hcyBSYXN0IDx0cmFzdEBpbmYuZXRoei5jaD4gPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK1RpbW8gSGlydm9uZW4gPHRpaGlydm9uQGdtYWlsLmNvbT4gPHRpaGlydm9uQGVlLm91bHUuZmk+CitUb2J5IEFsbHNvcHAgPFRvYnkuQWxsc29wcEBuYXZtYW4uY28ubno+IDx0b2J5LmFsbHNvcHBAbmF2bWFuLmNvLm56PgorVG9tIEdyZW5uYW4gPHRtZ3Jlbm5hbkBnbWFpbC5jb20+IDx0Z3Jlbm5hbkByZWRiYWNrLmNvbT4KK1RvbW1pIFZpcnRhbmVuIDx0dkBkZWJpYW4ub3JnPiA8dHZAZWFnYWluLm5ldD4KK1RvbW1pIFZpcnRhbmVuIDx0dkBkZWJpYW4ub3JnPiA8dHZAaW5vaS5maT4KK1RvbW15IFRob3JuIDx0b21teS1naXRAdGhvcm4ud3M+IDx0dDE3MjlAeWFob28uY29tPgogVG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29tPgotVXdlIEtsZWluZS1Lw7ZuaWcgPFV3ZV9aZWlzYmVyZ2VyQGRpZ2kuY29tPgotVXdlIEtsZWluZS1Lw7ZuaWcgPFV3ZS5LbGVpbmUtS29lbmlnQGRpZ2kuY29tPgotVXdlIEtsZWluZS1Lw7ZuaWcgPHVrbGVpbmVrQGluZm9ybWF0aWsudW5pLWZyZWlidXJnLmRlPgotVXdlIEtsZWluZS1Lw7ZuaWcgPHV6ZWlzYmVyZ2VyQGlvLmZzZm9ydGguZGU+Ci1Vd2UgS2xlaW5lLUvDtm5pZyA8emVpc2JlcmdAaW5mb3JtYXRpay51bmktZnJlaWJ1cmcuZGU+Ci1WaWxsZSBTa3l0dMOkIDxzY29wQHhlbWFjcy5vcmc+CitUb3IgQXJuZSBWZXN0YsO4IDx0b3Jhcm52QGdtYWlsLmNvbT4gPHRhdmVzdGJvQHRyb2xsdGVjaC5jb20+CitUcmVudCBQaWVwaG8gPHRwaWVwaG9AZ21haWwuY29tPiA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgorVHJlbnQgUGllcGhvIDx0cGllcGhvQGdtYWlsLmNvbT4gPHh5enp5QHNwZWFrZWFzeS5vcmc+CitVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRlPiA8VXdlLktsZWluZS1Lb2VuaWdAZGlnaS5jb20+CitVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRlPiA8dWtsZWluZWtAaW5mb3JtYXRpay51bmktZnJlaWJ1cmcuZGU+CitVd2UgS2xlaW5lLUvDtm5pZyA8dS5rbGVpbmUta29lbmlnQHBlbmd1dHJvbml4LmRlPiA8dXplaXNiZXJnZXJAaW8uZnNmb3J0aC5kZT4KK1V3ZSBLbGVpbmUtS8O2bmlnIDx1LmtsZWluZS1rb2VuaWdAcGVuZ3V0cm9uaXguZGU+IDx6ZWlzYmVyZ0BpbmZvcm1hdGlrLnVuaS1mcmVpYnVyZy5kZT4KK1ZpbGxlIFNreXR0w6QgPHZpbGxlLnNreXR0YUBpa2kuZmk+IDxzY29wQHhlbWFjcy5vcmc+CiBWaXRhbHkgIl9WaSIgU2h1a2VsYSA8cHVibGljX3ZpQHR1dC5ieT4KK1cuIFRyZXZvciBLaW5nIDx3a2luZ0B0cmVtaWx5LnVzPiA8d2tpbmdAZHJleGVsLmVkdT4KIFdpbGxpYW0gUHVyc2VsbCA8YmlsbC5wdXJzZWxsQGdtYWlsLmNvbT4KK1lPTkVUQU5JIFRvbW9rYXp1IDx5MG4zdDRuMUBnbWFpbC5jb20+IDxxaHd0K2dpdEBsZXMuYXRoLmN4PgorWU9ORVRBTkkgVG9tb2thenUgPHkwbjN0NG4xQGdtYWlsLmNvbT4gPHkwbmV0YW4xQGRyYWdvbmZseWJzZC5vcmc+CiBZT1NISUZVSkkgSGlkZWFraSA8eW9zaGZ1amlAbGludXgtaXB2Ni5vcmc+CisjIHRoZSB0d28gYW5vbnltb3VzIGNvbnRyaWJ1dG9ycyBhcmUgZGlmZmVyZW50IHBlcnNvbnM6CiBhbm9ueW1vdXMgPGxpbnV4QGhvcml6b24uY29tPgogYW5vbnltb3VzIDxsaW51eEBob3Jpem9uLm5ldD4KK8Swc21haWwgRMO2bm1leiA8aXNtYWlsQHBhcmR1cy5vcmcudHI+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL01ha2VmaWxlIGIvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQppbmRleCA2MmRiZDlhLi4wY2ZkYzM2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCisrKyBiL0RvY3VtZW50YXRpb24vTWFrZWZpbGUKQEAgLTMxLDExICszMSwxMSBAQAogTUFON19UWFQgKz0gZ2l0d29ya2Zsb3dzLnR4dAogCiBNQU5fVFhUID0gJChNQU4xX1RYVCkgJChNQU41X1RYVCkgJChNQU43X1RYVCkKLU1BTl9YTUw9JChwYXRzdWJzdCAlLnR4dCwlLnhtbCwkKE1BTl9UWFQpKQotTUFOX0hUTUw9JChwYXRzdWJzdCAlLnR4dCwlLmh0bWwsJChNQU5fVFhUKSkKK01BTl9YTUwgPSAkKHBhdHN1YnN0ICUudHh0LCUueG1sLCQoTUFOX1RYVCkpCitNQU5fSFRNTCA9ICQocGF0c3Vic3QgJS50eHQsJS5odG1sLCQoTUFOX1RYVCkpCiAKIE9CU09MRVRFX0hUTUwgPSBnaXQtcmVtb3RlLWhlbHBlcnMuaHRtbAotRE9DX0hUTUw9JChNQU5fSFRNTCkgJChPQlNPTEVURV9IVE1MKQorRE9DX0hUTUwgPSAkKE1BTl9IVE1MKSAkKE9CU09MRVRFX0hUTUwpCiAKIEFSVElDTEVTID0gaG93dG8taW5kZXgKIEFSVElDTEVTICs9IGV2ZXJ5ZGF5CkBAIC03NCwzNSArNzQsMzUgQEAKIAogRE9DX0hUTUwgKz0gJChwYXRzdWJzdCAlLCUuaHRtbCwkKEFSVElDTEVTKSAkKFNQX0FSVElDTEVTKSkKIAotRE9DX01BTjE9JChwYXRzdWJzdCAlLnR4dCwlLjEsJChNQU4xX1RYVCkpCi1ET0NfTUFONT0kKHBhdHN1YnN0ICUudHh0LCUuNSwkKE1BTjVfVFhUKSkKLURPQ19NQU43PSQocGF0c3Vic3QgJS50eHQsJS43LCQoTUFON19UWFQpKQorRE9DX01BTjEgPSAkKHBhdHN1YnN0ICUudHh0LCUuMSwkKE1BTjFfVFhUKSkKK0RPQ19NQU41ID0gJChwYXRzdWJzdCAlLnR4dCwlLjUsJChNQU41X1RYVCkpCitET0NfTUFONyA9ICQocGF0c3Vic3QgJS50eHQsJS43LCQoTUFON19UWFQpKQogCi1wcmVmaXg/PSQoSE9NRSkKLWJpbmRpcj89JChwcmVmaXgpL2JpbgotaHRtbGRpcj89JChwcmVmaXgpL3NoYXJlL2RvYy9naXQtZG9jCi1wZGZkaXI/PSQocHJlZml4KS9zaGFyZS9kb2MvZ2l0LWRvYwotbWFuZGlyPz0kKHByZWZpeCkvc2hhcmUvbWFuCi1tYW4xZGlyPSQobWFuZGlyKS9tYW4xCi1tYW41ZGlyPSQobWFuZGlyKS9tYW41Ci1tYW43ZGlyPSQobWFuZGlyKS9tYW43Ci0jIERFU1RESVI9CitwcmVmaXggPz0gJChIT01FKQorYmluZGlyID89ICQocHJlZml4KS9iaW4KK2h0bWxkaXIgPz0gJChwcmVmaXgpL3NoYXJlL2RvYy9naXQtZG9jCitpbmZvZGlyID89ICQocHJlZml4KS9zaGFyZS9pbmZvCitwZGZkaXIgPz0gJChwcmVmaXgpL3NoYXJlL2RvYy9naXQtZG9jCittYW5kaXIgPz0gJChwcmVmaXgpL3NoYXJlL21hbgorbWFuMWRpciA9ICQobWFuZGlyKS9tYW4xCittYW41ZGlyID0gJChtYW5kaXIpL21hbjUKK21hbjdkaXIgPSAkKG1hbmRpcikvbWFuNworIyBERVNURElSID0KIAogQVNDSUlET0MgPSBhc2NpaWRvYwogQVNDSUlET0NfRVhUUkEgPQogTUFOUEFHRV9YU0wgPSBtYW5wYWdlLW5vcm1hbC54c2wKIFhNTFRPID0geG1sdG8KIFhNTFRPX0VYVFJBID0KLUlOU1RBTEw/PWluc3RhbGwKK0lOU1RBTEwgPz0gaW5zdGFsbAogUk0gPz0gcm0gLWYKIE1BTl9SRVBPID0gLi4vLi4vZ2l0LW1hbnBhZ2VzCiBIVE1MX1JFUE8gPSAuLi8uLi9naXQtaHRtbGRvY3MKIAotaW5mb2Rpcj89JChwcmVmaXgpL3NoYXJlL2luZm8KLU1BS0VJTkZPPW1ha2VpbmZvCi1JTlNUQUxMX0lORk89aW5zdGFsbC1pbmZvCi1ET0NCT09LMlhfVEVYST1kb2Nib29rMngtdGV4aQotREJMQVRFWD1kYmxhdGV4CitNQUtFSU5GTyA9IG1ha2VpbmZvCitJTlNUQUxMX0lORk8gPSBpbnN0YWxsLWluZm8KK0RPQ0JPT0syWF9URVhJID0gZG9jYm9vazJ4LXRleGkKK0RCTEFURVggPSBkYmxhdGV4CiBpZm5kZWYgUEVSTF9QQVRICiAJUEVSTF9QQVRIID0gL3Vzci9iaW4vcGVybAogZW5kaWYKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEwLjEudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTAuMS50eHQKaW5kZXggODA2YTk2NS4uYmU2ODUyNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTAuMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMTAuMS50eHQKQEAgLTE0LDcgKzE0LDcgQEAKICAgIG5vdCBleGNsdWRlIHRoZW0gYW5kIHRyaWVkIHRvIGFwcGx5IGZ1bm55IHBhdGNoZXMgb25seSB0byBmYWlsLgogCiAgKiAiZ2l0IGJsYW1lIiBzdGFydGVkIG1pc3NpbmcgcXVpdGUgYSBmZXcgY2hhbmdlcyBmcm9tIHRoZSBvcmlnaW4KLSAgIHNpbmNlIHdlIHN0b3BwZWQgdXNpbmcgdGhlIGRpZmYgbWluaW1hbGl6YXRpb24gYnkgZGVmYXVsdCBpbiB2MS43LjIKKyAgIHNpbmNlIHdlIHN0b3BwZWQgdXNpbmcgdGhlIGRpZmYgbWluaW1pemF0aW9uIGJ5IGRlZmF1bHQgaW4gdjEuNy4yCiAgICBlcmEuCiAKICAqIFdoZW4gUEFUSCBjb250YWlucyBhbiB1bnJlYWRhYmxlIGRpcmVjdG9yeSwgYWxpYXMgZXhwYW5zaW9uIGNvZGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjUuNC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy41LjQudHh0CmluZGV4IGNmM2Y0NTUuLjc3OTZkZjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjUuNC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuNS40LnR4dApAQCAtNSw3ICs1LDcgQEAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAqIFRoZSBzaW5nbGUta2V5IG1vZGUgb2YgImdpdCBhZGQgLXAiIHdhcyBlYXNpbHkgZm9vbGVkIGludG8gdGhpbmtpbmcKLSAgIHRoYXQgaXQgd2FzIHRvbGQgdG8gYWRkIGV2ZXJ0aGluZyAoJ2EnKSB3aGVuIHVwLWFycm93IHdhcyBwcmVzc2VkIGJ5CisgICB0aGF0IGl0IHdhcyB0b2xkIHRvIGFkZCBldmVyeXRoaW5nICgnYScpIHdoZW4gdXAtYXJyb3cgd2FzIHByZXNzZWQgYnkKICAgIG1pc3Rha2UuCiAKICAqIFNldHRpbmcgYSBnaXQgY29tbWFuZCB0aGF0IHVzZXMgY3VzdG9tIGNvbmZpZ3VyYXRpb24gdmlhICItYyB2YXI9dmFsIgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuOC4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjguMi50eHQKaW5kZXggZTc0ZjRlZi4uYjljNjZhYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuOC4yLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy44LjIudHh0CkBAIC0xMiwxMSArMTIsMTEgQEAKICAqIFRoZSBjb25maWd1cmF0aW9uIGZpbGUgcGFyc2VyIHVzZWQgZm9yIHNpemVzIChlLmcuIGJpZ0ZpbGVUaHJlc2hvbGQpCiAgICBkaWQgbm90IGNvcnJlY3RseSBpbnRlcnByZXQgJ2cnIHN1ZmZpeC4KIAotICogVGhlIHJlcGxhY2VtZW50IGltcGxlbWVudGlvbiBmb3Igc25wcmludGYgdXNlZCBvbiBwbGF0Zm9ybXMgd2l0aAorICogVGhlIHJlcGxhY2VtZW50IGltcGxlbWVudGF0aW9uIGZvciBzbnByaW50ZiB1c2VkIG9uIHBsYXRmb3JtcyB3aXRoCiAgICBuYXRpdmUgc25wcmludGYgdGhhdCBpcyBicm9rZW4gZGlkIG5vdCB1c2UgdmFfY29weSBjb3JyZWN0bHkuCiAKICAqIExGLXRvLUNSTEYgc3RyZWFtaW5nIGZpbHRlciByZXBsYWNlZCBhbGwgTEYgd2l0aCBDUkxGLCB3aGljaCBtaWdodAotICAgYmUgdGVjaGluaWNhbGx5IGNvcnJlY3QgYnV0IG5vdCBmcmllbmRseSB0byBwZW9wbGUgd2hvIGFyZSB0cnlpbmcKKyAgIGJlIHRlY2huaWNhbGx5IGNvcnJlY3QgYnV0IG5vdCBmcmllbmRseSB0byBwZW9wbGUgd2hvIGFyZSB0cnlpbmcKICAgIHRvIHJlY292ZXIgZnJvbSBlYXJsaWVyIG1pc3Rha2VzIG9mIHVzaW5nIENSTEYgaW4gdGhlIHJlcG9zaXRvcnkKICAgIGRhdGEgaW4gdGhlIGZpcnN0IHBsYWNlLiBJdCBub3cgcmVmcmFpbnMgZnJvbSBkb2luZyBzbyBmb3IgTEYgdGhhdAogICAgZm9sbG93cyBhIENSLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuOC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy44LnR4dAppbmRleCBiNGQ5MGJiLi4yNDkzMTEzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy44LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy44LnR4dApAQCAtOSw3ICs5LDcgQEAKICAqIFVwZGF0ZXMgdG8gYmFzaCBjb21wbGV0aW9uIHNjcmlwdHMuCiAKICAqIFRoZSBidWlsZCBwcm9jZWR1cmUgaGFzIGJlZW4gdGF1Z2h0IHRvIHRha2UgYWR2YW50YWdlIG9mIGNvbXB1dGVkCi0gICBkZXBlbmRlbmN5IGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgY29tcGxpZXIgc3VwcG9ydHMgaXQuCisgICBkZXBlbmRlbmN5IGF1dG9tYXRpY2FsbHkgd2hlbiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQuCiAKICAqIFRoZSBkYXRlIHBhcnNlciBub3cgYWNjZXB0cyB0aW1lem9uZSBkZXNpZ25hdG9ycyB0aGF0IGxhY2sgbWludXRlcwogICAgcGFydCBhbmQgYWxzbyBoYXMgYSBjb2xvbiBiZXR3ZWVuICJoaDptbSIuCkBAIC0zMSw3ICszMSw3IEBACiAgKiBWYXJpYW50cyBvZiAiZ2l0IGNoZXJyeS1waWNrIiBhbmQgImdpdCByZXZlcnQiIHRoYXQgdGFrZSBtdWx0aXBsZQogICAgY29tbWl0cyBsZWFybmVkIHRvICItLWNvbnRpbnVlIiBhbmQgIi0tYWJvcnQiLgogCi0gKiAiZ2l0IGRhZW1vbiIgZ2l2ZXMgbW9yZSBodW1hbiByZWFkYmxlIGVycm9yIG1lc3NhZ2VzIHRvIGNsaWVudHMKKyAqICJnaXQgZGFlbW9uIiBnaXZlcyBtb3JlIGh1bWFuIHJlYWRhYmxlIGVycm9yIG1lc3NhZ2VzIHRvIGNsaWVudHMKICAgIHVzaW5nIEVSUiBwYWNrZXRzIHdoZW4gYXBwcm9wcmlhdGUuCiAKICAqIEVycm9ycyBhdCB0aGUgbmV0d29yayBsYXllciBpcyBsb2dnZWQgYnkgImdpdCBkYWVtb24iLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMS50eHQKaW5kZXggMTM1NGFkMC4uNzY5YTZmYyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4xLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjEudHh0CkBAIC00OSw3ICs0OSw3IEBACiAgICBjb21tb24gcHJlZml4IGFuZCBzdWZmaXggYmV0d2VlbiB0aGUgdHdvIGZpbGVuYW1lcyBvdmVybGFwcGVkLgogCiAgKiAiZ2l0IHN1Ym1vZHVsZSB1cGRhdGUiLCB3aGVuIHJlY3Vyc2VkIGludG8gc3ViLXN1Ym1vZHVsZXMsIGRpZCBub3QKLSAgIGFjY2N1bXVsYXRlIHRoZSBwcmVmaXggcGF0aHMuCisgICBhY2N1bXVsYXRlIHRoZSBwcmVmaXggcGF0aHMuCiAKICAqICJnaXQgYW0gJG1haWxkaXIvIiBhcHBsaWVkIG1lc3NhZ2VzIGluIGFuIHVuZXhwZWN0ZWQgb3JkZXI7IHNvcnQKICAgIGZpbGVuYW1lcyByZWFkIGZyb20gdGhlIG1haWxkaXIvIGluIGEgd2F5IHRoYXQgaXMgbW9yZSBsaWtlbHkgdG8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMi50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4yLjIudHh0CmluZGV4IGRhYjQ4MzEuLjcwOGRmMWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjIuMi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMi4yLnR4dApAQCAtNTgsNCArNTgsNCBAQAogICAgY29uZmxpY3RzIGhhdmUgYmVlbiBhcHBsaWVkLgogCiAgKiAiZ2l0IGJ1bmRsZSIgZGlkIG5vdCBsaWtlIGEgYnVuZGxlIGNyZWF0ZWQgdXNpbmcgYSBjb21taXQgd2l0aG91dAotICAgYW55IG1lc3NhZ2UgYXMgaXRzIG9uZSBvZiB0aGUgcHJlcmVxdWlzdGVzLgorICAgYW55IG1lc3NhZ2UgYXMgaXRzIG9uZSBvZiB0aGUgcHJlcmVxdWlzaXRlcy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjQudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguNC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmODczNwotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjQudHh0CkBAIC0wLDAgKzEsNDg4IEBACitHaXQgdjEuOC40IFJlbGVhc2UgTm90ZXMKKz09PT09PT09PT09PT09PT09PT09PT09PQorCitCYWNrd2FyZCBjb21wYXRpYmlsaXR5IG5vdGVzIChmb3IgR2l0IDIuMCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaGVuICJnaXQgcHVzaCBbJHRoZXJlXSIgZG9lcyBub3Qgc2F5IHdoYXQgdG8gcHVzaCwgd2UgaGF2ZSB1c2VkIHRoZQordHJhZGl0aW9uYWwgIm1hdGNoaW5nIiBzZW1hbnRpY3Mgc28gZmFyIChhbGwgeW91ciBicmFuY2hlcyB3ZXJlIHNlbnQKK3RvIHRoZSByZW1vdGUgYXMgbG9uZyBhcyB0aGVyZSBhbHJlYWR5IGFyZSBicmFuY2hlcyBvZiB0aGUgc2FtZSBuYW1lCitvdmVyIHRoZXJlKS4gIEluIEdpdCAyLjAsIHRoZSBkZWZhdWx0IHdpbGwgY2hhbmdlIHRvIHRoZSAic2ltcGxlIgorc2VtYW50aWNzIHRoYXQgcHVzaGVzOgorCisgLSBvbmx5IHRoZSBjdXJyZW50IGJyYW5jaCB0byB0aGUgYnJhbmNoIHdpdGggdGhlIHNhbWUgbmFtZSwgYW5kIG9ubHkKKyAgIHdoZW4gdGhlIGN1cnJlbnQgYnJhbmNoIGlzIHNldCB0byBpbnRlZ3JhdGUgd2l0aCB0aGF0IHJlbW90ZQorICAgYnJhbmNoLCBpZiB5b3UgYXJlIHB1c2hpbmcgdG8gdGhlIHNhbWUgcmVtb3RlIGFzIHlvdSBmZXRjaCBmcm9tOyBvcgorCisgLSBvbmx5IHRoZSBjdXJyZW50IGJyYW5jaCB0byB0aGUgYnJhbmNoIHdpdGggdGhlIHNhbWUgbmFtZSwgaWYgeW91CisgICBhcmUgcHVzaGluZyB0byBhIHJlbW90ZSB0aGF0IGlzIG5vdCB3aGVyZSB5b3UgdXN1YWxseSBmZXRjaCBmcm9tLgorCitVc2UgdGhlIHVzZXIgcHJlZmVyZW5jZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlICJwdXNoLmRlZmF1bHQiIHRvCitjaGFuZ2UgdGhpcy4gIElmIHlvdSBhcmUgYW4gb2xkLXRpbWVyIHdobyBpcyB1c2VkIHRvIHRoZSAibWF0Y2hpbmciCitzZW1hbnRpY3MsIHlvdSBjYW4gc2V0IHRoZSB2YXJpYWJsZSB0byAibWF0Y2hpbmciIHRvIGtlZXAgdGhlCit0cmFkaXRpb25hbCBiZWhhdmlvdXIuICBJZiB5b3Ugd2FudCB0byBsaXZlIGluIHRoZSBmdXR1cmUgZWFybHksIHlvdQorY2FuIHNldCBpdCB0byAic2ltcGxlIiB0b2RheSB3aXRob3V0IHdhaXRpbmcgZm9yIEdpdCAyLjAuCisKK1doZW4gImdpdCBhZGQgLXUiIChhbmQgImdpdCBhZGQgLUEiKSBpcyBydW4gaW5zaWRlIGEgc3ViZGlyZWN0b3J5IGFuZAorZG9lcyBub3Qgc3BlY2lmeSB3aGljaCBwYXRocyB0byBhZGQgb24gdGhlIGNvbW1hbmQgbGluZSwgaXQKK3dpbGwgb3BlcmF0ZSBvbiB0aGUgZW50aXJlIHRyZWUgaW4gR2l0IDIuMCBmb3IgY29uc2lzdGVuY3kKK3dpdGggImdpdCBjb21taXQgLWEiIGFuZCBvdGhlciBjb21tYW5kcy4gIFRoZXJlIHdpbGwgYmUgbm8KK21lY2hhbmlzbSB0byBtYWtlIHBsYWluICJnaXQgYWRkIC11IiBiZWhhdmUgbGlrZSAiZ2l0IGFkZCAtdSAuIi4KK0N1cnJlbnQgdXNlcnMgb2YgImdpdCBhZGQgLXUiICh3aXRob3V0IGEgcGF0aHNwZWMpIHNob3VsZCBzdGFydAordHJhaW5pbmcgdGhlaXIgZmluZ2VycyB0byBleHBsaWNpdGx5IHNheSAiZ2l0IGFkZCAtdSAuIgorYmVmb3JlIEdpdCAyLjAgY29tZXMuICBBIHdhcm5pbmcgaXMgaXNzdWVkIHdoZW4gdGhlc2UgY29tbWFuZHMgYXJlCitydW4gd2l0aG91dCBhIHBhdGhzcGVjIGFuZCB3aGVuIHlvdSBoYXZlIGxvY2FsIGNoYW5nZXMgb3V0c2lkZSB0aGUKK2N1cnJlbnQgZGlyZWN0b3J5LCBiZWNhdXNlIHRoZSBiZWhhdmlvdXIgaW4gR2l0IDIuMCB3aWxsIGJlIGRpZmZlcmVudAorZnJvbSB0b2RheSdzIHZlcnNpb24gaW4gc3VjaCBhIHNpdHVhdGlvbi4KKworSW4gR2l0IDIuMCwgImdpdCBhZGQgPHBhdGg+IiB3aWxsIGJlaGF2ZSBhcyAiZ2l0IGFkZCAtQSA8cGF0aD4iLCBzbwordGhhdCAiZ2l0IGFkZCBkaXIvIiB3aWxsIG5vdGljZSBwYXRocyB5b3UgcmVtb3ZlZCBmcm9tIHRoZSBkaXJlY3RvcnkKK2FuZCByZWNvcmQgdGhlIHJlbW92YWwuICBWZXJzaW9ucyBiZWZvcmUgR2l0IDIuMCwgaW5jbHVkaW5nIHRoaXMKK3JlbGVhc2UsIHdpbGwga2VlcCBpZ25vcmluZyByZW1vdmFscywgYnV0IHRoZSB1c2VycyB3aG8gcmVseSBvbiB0aGlzCitiZWhhdmlvdXIgYXJlIGVuY291cmFnZWQgdG8gc3RhcnQgdXNpbmcgImdpdCBhZGQgLS1pZ25vcmUtcmVtb3ZhbCA8cGF0aD4iCitub3cgYmVmb3JlIDIuMCBpcyByZWxlYXNlZC4KKworCitVcGRhdGVzIHNpbmNlIHYxLjguMworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworRm9yZWlnbiBpbnRlcmZhY2VzLCBzdWJzeXN0ZW1zIGFuZCBwb3J0cy4KKworICogQ3lnd2luIHBvcnQgaGFzIGJlZW4gdXBkYXRlZCBmb3IgbW9yZSByZWNlbnQgQ3lnd2luIDEuNy4KKworICogImdpdCByZWJhc2UgLWkiIG5vdyBob25vcnMgLS1zdHJhdGVneSBhbmQgLVggb3B0aW9ucy4KKworICogR2l0LWd1aSBoYXMgYmVlbiB1cGRhdGVkIHRvIGl0cyAwLjE4LjAgdmVyc2lvbi4KKworICogTWVkaWFXaWtpIHJlbW90ZSBoZWxwZXIgKGluIGNvbnRyaWIvKSBoYXMgYmVlbiB1cGRhdGVkIHRvIHVzZSB0aGUKKyAgIGNyZWRlbnRpYWwgaGVscGVyIGludGVyZmFjZSBmcm9tIEdpdC5wbS4KKworICogVXBkYXRlIGJ1aWxkIGZvciBDeWd3aW4gMS5bNTddLiAgVG9yc3RlbiBCw7ZnZXJzaGF1c2VuIHJlcG9ydHMgdGhhdAorICAgdGhpcyBpcyBmaW5lIHdpdGggQ3lnd2luIDEuNyAoJGdtYW5lLzIyNTgyNCkgc28gbGV0J3MgdHJ5IG1vdmluZyBpdAorICAgYWhlYWQuCisKKyAqIFRoZSBjcmVkZW50aWFsIGhlbHBlciB0byB0YWxrIHRvIGtleWNoYWluIG9uIE9TIFggKGluIGNvbnRyaWIvKSBoYXMKKyAgIGJlZW4gdXBkYXRlZCB0byBraWNrIGluIG5vdCBqdXN0IHdoZW4gdGFsa2luZyBodHRwL2h0dHBzIGJ1dCBhbHNvCisgICBpbWFwKHMpIGFuZCBzbXRwLgorCisgKiBSZW1vdGUgdHJhbnNwb3J0IGhlbHBlciBoYXMgYmVlbiB1cGRhdGVkIHRvIHJlcG9ydCBlcnJvcnMgYW5kCisgICBtYWludGFpbiByZWYgaGllcmFyY2h5IHVzZWQgdG8ga2VlcCB0cmFjayBvZiBpdHMgb3duIHN0YXRlIGJldHRlci4KKworICogV2l0aCAiZXhwb3J0IiByZW1vdGUtaGVscGVyIHByb3RvY29sLCAoMSkgYSBwdXNoIHRoYXQgdHJpZXMgdG8KKyAgIHVwZGF0ZSBhIHJlbW90ZSByZWYgd2hvc2UgbmFtZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgcHVzaGluZyBzaWRlCisgICBkb2VzIG5vdCB3b3JrIHlldCwgYW5kICgyKSB0aGUgaGVscGVyIG1heSBub3Qga25vdyBob3cgdG8gZG8KKyAgIC0tZHJ5LXJ1bjsgdGhlc2UgcHJvYmxlbWF0aWMgY2FzZXMgYXJlIGRpc2FibGVkIGZvciBub3cuCisKKyAqIGdpdC1yZW1vdGUtaGcvYnpyIChpbiBjb250cmliLykgdXBkYXRlcy4KKworICogZ2l0LXJlbW90ZS1tdyAoaW4gY29udHJpYi8pIGhpbnRzIHVzZXJzIHRvIGNoZWNrIHRoZSBjZXJ0aWZpY2F0ZSwKKyAgIHdoZW4gaHR0cHM6Ly8gY29ubmVjdGlvbiBmYWlsZWQuCisKKyAqIGdpdC1yZW1vdGUtbXcgKGluIGNvbnRyaWIvKSBhZGRzIGEgY29tbWFuZCB0byBhbGxvdyBwcmV2aWV3aW5nIHRoZQorICAgY29udGVudHMgbG9jYWxseSBiZWZvcmUgcHVzaGluZyBpdCBvdXQsIHdoZW4gd29ya2luZyB3aXRoIGEKKyAgIE1lZGlhV2lraSByZW1vdGUuCisKKworVUksIFdvcmtmbG93cyAmIEZlYXR1cmVzCisKKyAqIFNhbXBsZSAicG9zdC1yZWNlaXZlLWVtYWlsIiBob29rIHNjcmlwdCBnb3QgYW4gZW5oYW5jZWQgcmVwbGFjZW1lbnQKKyAgICJtdWx0aW1haWwiIChpbiBjb250cmliLykuCisKKyAqIEFsc28gaW4gY29udHJpYi8gaXMgYSBuZXcgImNvbnRhY3RzIiBzY3JpcHQgdGhhdCBydW5zICJnaXQgYmxhbWUiCisgICB0byBmaW5kIG91dCB0aGUgcGVvcGxlIHdobyBtYXkgYmUgaW50ZXJlc3RlZCBpbiBhIHNldCBvZiBjaGFuZ2VzLgorCisgKiAiZ2l0IGNsZWFuIiBjb21tYW5kIGxlYXJuZWQgYW4gaW50ZXJhY3RpdmUgbW9kZS4KKworICogVGhlICItLWhlYWQiIG9wdGlvbiB0byAiZ2l0IHNob3ctcmVmIiB3YXMgb25seSB0byBhZGQgIkhFQUQiIHRvIHRoZQorICAgbGlzdCBvZiBjYW5kaWRhdGUgcmVmcyB0byBiZSBmaWx0ZXJlZCBieSB0aGUgdXN1YWwgcnVsZXMKKyAgIChlLmcuICItLWhlYWRzIiB0aGF0IG9ubHkgc2hvdyByZWZzIHVuZGVyIHJlZnMvaGVhZHMpLiAgVGhlIG1lYW5pbmcKKyAgIG9mIHRoZSBvcHRpb24gaGFzIGJlZW4gY2hhbmdlZCB0byBhbHdheXMgc2hvdyAiSEVBRCIgcmVnYXJkbGVzcyBvZgorICAgd2hhdCBmaWx0ZXJpbmcgd2lsbCBiZSBhcHBsaWVkIHRvIGFueSBvdGhlciByZWYuCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZCBpbmNvbXBhdGlibGUgY2hhbmdlIGFuZCBtaWdodCBjYXVzZSBicmVha2FnZXMgdG8KKyAgIHBlb3BsZSdzIGV4aXN0aW5nIHNjcmlwdHMuCisKKyAqICJnaXQgc2hvdyAtcyIgd2FzIGxlc3MgZGlzY292ZXJhYmxlIHRoYW4gaXQgc2hvdWxkIGhhdmUgYmVlbi4gIEl0CisgICBub3cgaGFzIGEgbmF0dXJhbCBzeW5vbnltICJnaXQgc2hvdyAtLW5vLXBhdGNoIi4KKworICogImdpdCBjaGVjay1tYWlsbWFwIiBpcyBhIG5ldyBjb21tYW5kIHRoYXQgbGV0cyB5b3UgbWFwIHVzZXJuYW1lcworICAgYW5kIGUtbWFpbCBhZGRyZXNzZXMgdGhyb3VnaCB0aGUgbWFpbG1hcCBtZWNoYW5pc20sIGp1c3QgbGlrZSBtYW55CisgICBidWlsdC1pbiBjb21tYW5kcyBkby4KKworICogImdpdCBuYW1lLXJldiIgbGVhcm5lZCB0byBuYW1lIGFuIGFubm90YXRlZCB0YWcgb2JqZWN0IGJhY2sgdG8gaXRzCisgICB0YWduYW1lOyAiZ2l0IG5hbWUtcmV2ICQoZ2l0IHJldi1wYXJzZSB2MS4wLjApIiBnaXZlcyAidGFncy92MS4wLjAiLAorICAgZm9yIGV4YW1wbGUuCisKKyAqICJnaXQgY2F0LWZpbGUgLS1iYXRjaC1jaGVjaz08Zm9ybWF0PiIgaXMgYWRkZWQsIHByaW1hcmlseSB0byBhbGxvdworICAgb24tZGlzayBmb290cHJpbnQgb2Ygb2JqZWN0cyBpbiBwYWNrZmlsZXMgKG9mdGVuIHRoZXkgYXJlIGEgbG90CisgICBzbWFsbGVyIHRoYW4gdGhlaXIgdHJ1ZSBzaXplLCB3aGVuIGV4cHJlc3NlZCBhcyBkZWx0YXMpIHRvIGJlCisgICByZXBvcnRlZC4KKworICogImdpdCByZWJhc2UgWy1pXSIgdXNlZCB0byBsZWF2ZSBqdXN0ICJyZWJhc2UiIGFzIGl0cyByZWZsb2cgbWVzc2FnZXMKKyAgIGZvciBzb21lIG9wZXJhdGlvbnMuIFRoZXkgaGF2ZSBiZWVuIHJld29yZGVkIHRvIGJlIG1vcmUgaW5mb3JtYXRpdmUuCisKKyAqIEluIGFkZGl0aW9uIHRvIHRoZSBjaG9pY2UgZnJvbSAicmViYXNlLCBtZXJnZSwgb3IgY2hlY2tvdXQtZGV0YWNoIiwKKyAgICJzdWJtb2R1bGUgdXBkYXRlIiBjYW4gYWxsb3cgYSBjdXN0b20gY29tbWFuZCB0byBiZSB1c2VkIGluIHRvCisgICB1cGRhdGUgdGhlIHdvcmtpbmcgdHJlZSBvZiBzdWJtb2R1bGVzIHZpYSB0aGUgInN1Ym1vZHVsZS4qLnVwZGF0ZSIKKyAgIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCisKKyAqICJnaXQgc3VibW9kdWxlIHVwZGF0ZSIgY2FuIG9wdGlvbmFsbHkgY2xvbmUgdGhlIHN1Ym1vZHVsZQorICAgcmVwb3NpdG9yaWVzIHNoYWxsb3dseS4KKworICogImdpdCBmb3JtYXQtcGF0Y2giIGxlYXJuZWQgIi0tZnJvbVs9d2hvbV0iIG9wdGlvbiwgd2hpY2ggc2V0cyB0aGUKKyAgICJGcm9tOiAiIGhlYWRlciB0byB0aGUgc3BlY2lmaWVkIHBlcnNvbiAob3IgdGhlIHBlcnNvbiB3aG8gcnVucyB0aGUKKyAgIGNvbW1hbmQsIGlmICI9d2hvbSIgcGFydCBpcyBtaXNzaW5nKSBhbmQgbW92ZSB0aGUgb3JpZ2luYWwgYXV0aG9yCisgICBpbmZvcm1hdGlvbiB0byBhbiBpbi1ib2R5IEZyb206IGhlYWRlciBhcyBuZWNlc3NhcnkuCisKKyAqIFRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlICJtZXJnZS5mZiIgd2FzIGNsZWFyeSBhIHRyaS1zdGF0ZSB0bworICAgY2hvb3NlIG9uZSBmcm9tICJmYXZvciBmYXN0LWZvcndhcmQgd2hlbiBwb3NzaWJsZSIsICJhbHdheXMgY3JlYXRlCisgICBhIG1lcmdlIGV2ZW4gd2hlbiB0aGUgaGlzdG9yeSBjb3VsZCBmYXN0LWZvcndhcmQiIGFuZCAiZG8gbm90CisgICBjcmVhdGUgYW55IG1lcmdlLCBvbmx5IHVwZGF0ZSB3aGVuIHRoZSBoaXN0b3J5IGZhc3QtZm9yd2FyZHMiLCBidXQKKyAgIHRoZSBjb21tYW5kIGxpbmUgcGFyc2VyIGRpZCBub3QgaW1wbGVtZW50IHRoZSB1c3VhbCBjb252ZW50aW9uIG9mCisgICAibGFzdCBvbmUgd2lucywgYW5kIGNvbW1hbmQgbGluZSBvdmVycmlkZXMgdGhlIGNvbmZpZ3VyYXRpb24iCisgICBjb3JyZWN0bHkuCisKKyAqICJnaXR3ZWIiIGxlYXJuZWQgdG8gb3B0aW9uYWxseSBwbGFjZSBleHRyYSBsaW5rcyB0aGF0IHBvaW50IGF0IHRoZQorICAgbGV2ZWxzIGhpZ2hlciB0aGFuIHRoZSBHaXR3ZWIgcGFnZXMgdGhlbXNlbHZlcyBpbiB0aGUgYnJlYWRjcnVtYnMsCisgICBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGFzIHBhcnQgb2YgYSBsYXJnZXIgaW5zdGFsbGF0aW9uLgorCisgKiAiZ2l0IGxvZyAtLWZvcm1hdD0iIG5vdyBob25vcnMgaTE4bi5sb2dvdXRwdXRlbmNvZGluZyBjb25maWd1cmF0aW9uCisgICB2YXJpYWJsZS4KKworICogVGhlICJwdXNoLmRlZmF1bHQ9c2ltcGxlIiBtb2RlIG9mICJnaXQgcHVzaCIgaGFzIGJlZW4gdXBkYXRlZCB0bworICAgYmVoYXZlIGxpa2UgImN1cnJlbnQiIHdpdGhvdXQgcmVxdWlyaW5nIGEgcmVtb3RlIHRyYWNraW5nCisgICBpbmZvcm1hdGlvbiwgd2hlbiB5b3UgcHVzaCB0byBhIHJlbW90ZSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHdoZXJlCisgICB5b3UgZmV0Y2ggZnJvbSAoaS5lLiBhIHRyaWFuZ3VsYXIgd29ya2Zsb3cpLgorCisgKiBIYXZpbmcgbXVsdGlwbGUgImZpeHVwISIgb24gYSBsaW5lIGluIHRoZSByZWJhc2UgaW5zdHJ1Y3Rpb24gc2hlZXQKKyAgIGRpZCBub3Qgd29yayB2ZXJ5IHdlbGwgd2l0aCAiZ2l0IHJlYmFzZSAtaSAtLWF1dG9zcXVhc2giLgorCisgKiAiZ2l0IGxvZyIgbGVhcm5lZCB0aGUgIi0tYXV0aG9yLWRhdGUtb3JkZXIiIG9wdGlvbiwgd2l0aCB3aGljaCB0aGUKKyAgIG91dHB1dCBpcyB0b3BvbG9naWNhbGx5IHNvcnRlZCBhbmQgY29tbWl0cyBpbiBwYXJhbGxlbCBoaXN0b3JpZXMKKyAgIGFyZSBzaG93biBpbnRlcm1peGVkIHRvZ2V0aGVyIGJhc2VkIG9uIHRoZSBhdXRob3IgdGltZXN0YW1wLgorCisgKiBWYXJpb3VzIHN1YmNvbW1hbmRzIG9mICJnaXQgc3VibW9kdWxlIiByZWZ1c2VkIHRvIHJ1biBmcm9tIGFueXdoZXJlCisgICBvdGhlciB0aGFuIHRoZSB0b3Agb2YgdGhlIHdvcmtpbmcgdHJlZSBvZiB0aGUgc3VwZXJwcm9qZWN0LCBidXQKKyAgIHRoZXkgaGF2ZSBiZWVuIHRhdWdodCB0byBsZXQgeW91IHJ1biBmcm9tIGEgc3ViZGlyZWN0b3J5LgorCisgKiAiZ2l0IGRpZmYiIGxlYXJuZWQgYSBtb2RlIHRoYXQgaWdub3JlcyBodW5rcyB3aG9zZSBjaGFuZ2UgY29uc2lzdHMKKyAgIG9ubHkgb2YgYWRkaXRpb25zIGFuZCByZW1vdmFscyBvZiBibGFuayBsaW5lcywgd2hpY2ggaXMgdGhlIHNhbWUgYXMKKyAgICJkaWZmIC1CIiAoaWdub3JlIGJsYW5rIGxpbmVzKSBvZiBHTlUgZGlmZi4KKworICogImdpdCBybSIgZ2l2ZXMgYSBzaW5nbGUgbWVzc2FnZSBmb2xsb3dlZCBieSBsaXN0IG9mIHBhdGhzIHRvIHJlcG9ydAorICAgbXVsdGlwbGUgcGF0aHMgdGhhdCBjYW5ub3QgYmUgcmVtb3ZlZC4KKworICogImdpdCByZWJhc2UiIGNhbiBiZSB0b2xkIHdpdGggIjovbG9vayBmb3IgdGhpcyBzdHJpbmciIHN5bnRheCBjb21taXRzCisgICB0byByZXBsYXkgdGhlIGNoYW5nZXMgb250byBhbmQgd2hlcmUgdGhlIHdvcmsgdG8gYmUgcmVwbGF5ZWQgYmVnaW5zLgorCisgKiBNYW55IHR1dG9yaWFscyB0ZWFjaCB1c2VycyB0byBzZXQgImNvbG9yLnVpIiB0byAiYXV0byIgYXMgdGhlIGZpcnN0CisgICB0aGluZyBhZnRlciB5b3Ugc2V0ICJ1c2VyLm5hbWUvZW1haWwiIHRvIGludHJvZHVjZSB5b3Vyc2VsdmVzIHRvCisgICBHaXQuICBOb3cgdGhlIHZhcmlhYmxlIGRlZmF1bHRzIHRvICJhdXRvIi4KKworICogT24gQ3lnd2luLCAiY3lnc3RhcnQiIGlzIG5vdyByZWNvZ25pc2VkIGFzIGEgcG9zc2libGUgd2F5IHRvIHN0YXJ0CisgICBhIHdlYiBicm93c2VyICh1c2VkIGluICJoZWxwIC13IiBhbmQgImluc3Rhd2ViIiBhbW9uZyBvdGhlcnMpLgorCisgKiAiZ2l0IHN0YXR1cyIgbGVhcm5lZCBzdGF0dXMuYnJhbmNoIGFuZCBzdGF0dXMuc2hvcnQgY29uZmlndXJhdGlvbgorICAgdmFyaWFibGVzIHRvIHVzZSAtLWJyYW5jaCBhbmQgLS1zaG9ydCBvcHRpb25zIGJ5IGRlZmF1bHQgKG92ZXJyaWRlCisgICB3aXRoIC0tbm8tYnJhbmNoIGFuZCAtLW5vLXNob3J0IG9wdGlvbnMgZnJvbSB0aGUgY29tbWFuZCBsaW5lKS4KKworICogImdpdCBjbWQgPG5hbWU+Iiwgd2hlbiA8bmFtZT4gaGFwcGVucyB0byBiZSBhIDQwLWhleCBzdHJpbmcsCisgICBkaXJlY3RseSB1c2VzIHRoZSA0MC1oZXggc3RyaW5nIGFzIGFuIG9iamVjdCBuYW1lLCBldmVuIGlmIGEgcmVmCisgICAicmVmcy88c29tZSBoaWVyYXJjaHk+LzxuYW1lPiIgZXhpc3RzLiAgVGhpcyBkaXNhbWJpZ3VhdGlvbiBvcmRlcgorICAgaXMgdW5saWtlbHkgdG8gY2hhbmdlLCBidXQgd2Ugc2hvdWxkIHdhcm4gYWJvdXQgdGhlIGFtYmlndWl0eSBqdXN0CisgICBsaWtlIHdlIHdhcm4gd2hlbiBtb3JlIHRoYW4gb25lIHJlZnMvIGhpZXJhcmNoaWVzIHNoYXJlIHRoZSBzYW1lCisgICBuYW1lLgorCisgKiAiZ2l0IHJlYmFzZSIgbGVhcm5lZCAiLS1bbm8tXWF1dG9zdGFzaCIgb3B0aW9uIHRvIHNhdmUgbG9jYWwKKyAgIGNoYW5nZXMgaW5zdGVhZCBvZiByZWZ1c2luZyB0byBydW4gKHRvIHdoaWNoIHBlb3BsZSdzIG5vcm1hbAorICAgcmVzcG9uc2Ugd2FzIHRvIHN0YXNoIHRoZW0gYW5kIHJlLXJ1bikuICBUaGlzIGludHJvZHVjZWQgYSBjb3JuZXIKKyAgIGNhc2UgYnJlYWthZ2UgdG8gImdpdCBhbSAtLWFib3J0IiBidXQgaXQgaGFzIGJlZW4gZml4ZWQuCisKKyAqIEluc3RlYWQgb2YgdHlwaW5nIGZvdXIgY2FwaXRhbCBsZXR0ZXJzICJIRUFEIiwgeW91IGNhbiBzYXkgIkAiIG5vdywKKyAgIGUuZy4gImdpdCBsb2cgQCIuCisKKyAqICJjaGVjay1pZ25vcmUiIChuZXcgZmVhdHVyZSBzaW5jZSAxLjguMikgaGFzIGJlZW4gdXBkYXRlZCB0byB3b3JrCisgICBtb3JlIGxpa2UgImNoZWNrLWF0dHIiIG92ZXIgYmlkaS1waXBlcy4KKworICogImdpdCBkZXNjcmliZSIgbGVhcm5lZCAiLS1maXJzdC1wYXJlbnQiIG9wdGlvbiB0byBsaW1pdCBpdHMgY2xvc2VzdAorICAgdGFnZ2VkIGNvbW1pdCBzZWFyY2ggdG8gdGhlIGZpcnN0LXBhcmVudCBjaGFpbi4KKworICogImdpdCBtZXJnZSBmb28iIHRoYXQgbWlnaHQgaGF2ZSBtZWFudCAiZ2l0IG1lcmdlIG9yaWdpbi9mb28iIGlzCisgICBkaWFnbm9zZWQgd2l0aCBhIG1vcmUgaW5mb3JtYXRpdmUgZXJyb3IgbWVzc2FnZS4KKworICogImdpdCBsb2cgLUw8bGluZT4sPHJhbmdlPjo8ZmlsZW5hbWU+IiBoYXMgYmVlbiBhZGRlZC4gIFRoaXMgbWF5CisgICBzdGlsbCBoYXZlIGxlYWtzIGFuZCByb3VnaCBlZGdlcywgdGhvdWdoLgorCisgKiBXZSB1c2VkIHRoZSBhcHByb3hpZGF0ZSgpIHBhcnNlciBmb3IgIi0tZXhwaXJlPTx0aW1lc3RhbXA+IiBvcHRpb25zCisgICBvZiB2YXJpb3VzIGNvbW1hbmRzLCBidXQgaXQgaXMgYmV0dGVyIHRvIHRyZWF0IC0tZXhwaXJlPWFsbCBhbmQKKyAgIC0tZXhwaXJlPW5vdyBhIGJpdCBtb3JlIHNwZWNpYWxseSB0aGFuIHVzaW5nIHRoZSBjdXJyZW50IHRpbWVzdGFtcC4KKyAgICJnaXQgZ2MiIGFuZCAiZ2l0IHJlZmxvZyIgaGF2ZSBiZWVuIHVwZGF0ZWQgd2l0aCBhIG5ldyBwYXJzaW5nCisgICBmdW5jdGlvbiBmb3IgZXhwaXJ5IGRhdGVzLgorCisgKiBVcGRhdGVzIHRvIGNvbXBsZXRpb24gKGJvdGggYmFzaCBhbmQgenNoKSBoZWxwZXJzLgorCisgKiBUaGUgYmVoYXZpb3VyIG9mIHRoZSAiLS1jaGFpbi1yZXBseS10byIgb3B0aW9uIG9mICJnaXQgc2VuZC1lbWFpbCIKKyAgIGhhdmUgY2hhbmdlZCBhdCAxLjcuMCwgYW5kIHdlIGFkZGVkIGEgd2FybmluZy9hZHZpY2UgbWVzc2FnZSB0bworICAgaGVscCB1c2VycyBhZGp1c3QgdG8gdGhlIG5ldyBiZWhhdmlvdXIgYmFjayB0aGVuLCBidXQgd2Uga2VwdCBpdAorICAgYXJvdW5kIGZvciB0b28gbG9uZy4gIFRoZSBtZXNzYWdlIGhhcyBmaW5hbGx5IGJlZW4gcmVtb3ZlZC4KKworICogImdpdCBmZXRjaCBvcmlnaW4gbWFzdGVyIiB1bmxpa2UgImdpdCBmZXRjaCBvcmlnaW4iIG9yICJnaXQgZmV0Y2giCisgICBkaWQgbm90IHVwZGF0ZSAicmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIiOyB0aGlzIHdhcyBhbiBlYXJseQorICAgZGVzaWduIGRlY2lzaW9uIHRvIGtlZXAgdGhlIHVwZGF0ZSBvZiByZW1vdGUgdHJhY2tpbmcgYnJhbmNoZXMKKyAgIHByZWRpY3RhYmxlLCBidXQgaW4gcHJhY3RpY2UgaXQgdHVybnMgb3V0IHRoYXQgcGVvcGxlIGZpbmQgaXQgbW9yZQorICAgY29udmVuaWVudCB0byBvcHBvcnR1bmlzdGljYWxseSB1cGRhdGUgdGhlbSB3aGVuZXZlciB3ZSBoYXZlIGEKKyAgIGNoYW5jZSwgYW5kIHdlIGhhdmUgYmVlbiB1cGRhdGluZyB0aGVtIHdoZW4gd2UgcnVuICJnaXQgcHVzaCIgd2hpY2gKKyAgIGFscmVhZHkgYnJlYWtzIHRoZSBvcmlnaW5hbCAicHJlZGljdGFiaWxpdHkiIGFueXdheS4KKworICogVGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgY29yZS5jaGVja3N0YXQgd2FzIGFkdmVydGlzZWQgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGJ1dCB0aGUgY29kZSBleHBlY3RlZCBjb3JlLnN0YXRpbmZvIGluc3RlYWQuCisgICBGb3Igbm93LCB3ZSBhY2NlcHQgYm90aCBjb3JlLmNoZWNrc3RhdCBhbmQgY29yZS5zdGF0aW5mbywgYnV0IHRoZQorICAgbGF0dGVyIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbG9uZ2VyIHRlcm0uCisKKworUGVyZm9ybWFuY2UsIEludGVybmFsIEltcGxlbWVudGF0aW9uLCBldGMuCisKKyAqIFRoZSBmdW5jdGlvbiBhdHRyaWJ1dGVzIGV4dGVuc2lvbnMgYXJlIHVzZWQgdG8gY2F0Y2ggbWlzdGFrZXMgaW4KKyAgIHVzZSBvZiBvdXIgb3duIHZhcmlhZGljIGZ1bmN0aW9ucyB0aGF0IHVzZSBOVUxMIHNlbnRpbmVsIGF0IHRoZSBlbmQKKyAgIChpLmUuIGxpa2UgZXhlY2woMykpIGFuZCBmb3JtYXQgc3RyaW5ncyAoaS5lLiBsaWtlIHByaW50ZigzKSkuCisKKyAqIFRoZSBjb2RlIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24gZGF0YSB0byBiZSByZWFkIGZyb20gaW4tdHJlZSBibG9iCisgICBvYmplY3RzIGlzIGluLiAgVGhpcyBtYXkgaGVscCB3b3JraW5nIGluIGEgYmFyZSByZXBvc2l0b3J5IGFuZAorICAgc3VibW9kdWxlIHVwZGF0ZXMuCisKKyAqIEZldGNoaW5nIGJldHdlZW4gcmVwb3NpdG9yaWVzIHdpdGggbWFueSByZWZzIGVtcGxveWVkIE8obl4yKQorICAgYWxnb3JpdGhtIHRvIG1hdGNoIHVwIHRoZSBjb21tb24gb2JqZWN0cywgd2hpY2ggaGFzIGJlZW4gY29ycmVjdGVkLgorCisgKiBUaGUgb3JpZ2luYWwgd2F5IHRvIHNwZWNpZnkgcmVtb3RlIHJlcG9zaXRvcnkgdXNpbmcgLmdpdC9icmFuY2hlcy8KKyAgIHVzZWQgdG8gaGF2ZSBhIG5pZnR5IGZlYXR1cmUuICBUaGUgY29kZSB0byBzdXBwb3J0IHRoZSBmZWF0dXJlIHdhcworICAgc3RpbGwgaW4gYSBmdW5jdGlvbiBidXQgdGhlIGNhbGxlciB3YXMgY2hhbmdlZCBub3QgdG8gY2FsbCBpdCA1CisgICB5ZWFycyBhZ28sIGJyZWFraW5nIHRoYXQgZmVhdHVyZSBhbmQgbGVhdmluZyB0aGUgc3VwcG9ydGluZyBjb2RlCisgICB1bnJlYWNoYWJsZS4gIFRoZSBkZWFkIGNvZGUgaGFzIGJlZW4gcmVtb3ZlZC4KKworICogImdpdCBwYWNrLXJlZnMiIHRoYXQgcmFjZXMgd2l0aCBuZXcgcmVmIGNyZWF0aW9uIG9yIGRlbGV0aW9uIGhhdmUKKyAgIGJlZW4gc3VzY2VwdGlibGUgdG8gbG9zc2FnZSBvZiByZWZzIHVuZGVyIHJpZ2h0IGNvbmRpdGlvbnMsIHdoaWNoCisgICBoYXMgYmVlbiB0aWdodGVuZWQgdXAuCisKKyAqIFdlIHJlYWQgbG9vc2UgYW5kIHBhY2tlZCByZXJmZXJlbmNlcyBpbiB0d28gc3RlcHMsIGJ1dCBhZnRlcgorICAgZGVjaWRpbmcgdG8gcmVhZCBhIGxvb3NlIHJlZiBidXQgYmVmb3JlIGFjdHVhbGx5IG9wZW5pbmcgaXQgdG8gcmVhZAorICAgaXQsIGFub3RoZXIgcHJvY2VzcyByYWNpbmcgd2l0aCB1cyBjYW4gdW5saW5rIGl0LCB3aGljaCB3b3VsZCBjYXVzZQorICAgdXMgdG8gYmFyZi4gIFRoZSBjb2RlcGF0aCBoYXMgYmVlbiB1cGRhdGVkIHRvIHJldHJ5IHdoZW4gc3VjaCBhCisgICByYWNlIGlzIGRldGVjdGVkLCBpbnN0ZWFkIG9mIG91dHJpZ2h0IGZhaWxpbmcuCisKKyAqIFVzZXMgb2YgdGhlIHBsYXRmb3JtIGZubWF0Y2goMykgZnVuY3Rpb24gKG1hbnkgcGxhY2VzIGluIHRoZSBjb2RlLAorICAgbWF0Y2hpbmcgcGF0aHNwZWMsIC5naXRpZ25vcmUgYW5kIC5naXRhdHRyaWJ1dGVzIHRvIG5hbWUgYSBmZXcpCisgICBoYXZlIGJlZW4gcmVwbGFjZWQgd2l0aCB3aWxkbWF0Y2gsIGFsbG93aW5nICJmb28vKiovYmFyIiB0aGF0IHdvdWxkCisgICBtYXRjaCBmb28vYmFyLCBmb28vYS9iYXIsIGZvby9hL2IvYmFyLCBldGMuCisKKyAqIE1lbW9yeSBvd25lcnNoaXAgYW5kIGxpZmV0aW1lIHJ1bGVzIGZvciB3aGF0IGZvci1lYWNoLXJlZiBmZWVkcyB0bworICAgaXRzIGNhbGxiYWNrcyBoYXZlIGJlZW4gY2xhcmlmaWVkIChpbiBzaG9ydCwgInlvdSBkbyBub3Qgb3duIGl0LCBzbworICAgbWFrZSBhIGNvcHkgaWYgeW91IHdhbnQgdG8ga2VlcCBpdCIpLgorCisgKiBUaGUgcmV2aXNpb24gdHJhdmVyc2FsIGxvZ2ljIHRvIGltcHJvdmUgY3VsbGluZyBvZiBpcnJlbGV2YW50CisgICBwYXJlbnRzIHdoaWxlIHRyYXZlcnNpbmcgYSBtZXJneSBoaXN0b3J5IGhhcyBiZWVuIHVwZGF0ZWQuCisKKyAqIFNvbWUgbGVha3MgaW4gdW5wYWNrLXRyZWVzICh1c2VkIGluIG1lcmdlLCBjaGVycnktcGljayBhbmQgb3RoZXIKKyAgIGNvZGVwYXRocykgaGF2ZSBiZWVuIHBsdWdnZWQuCisKKyAqIFRoZSBjb2RlcGF0aCB0byByZWFkIGZyb20gbWFya3MgZmlsZXMgaW4gZmFzdC1pbXBvcnQvZXhwb3J0IGRpZCBub3QKKyAgIGhhdmUgdG8gYWNjZXB0IGFueXRoaW5nIGJ1dCA0MC1oZXggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdAorICAgbmFtZS4gIEZ1cnRoZXIsIGZhc3QtZXhwb3J0IGRpZCBub3QgbmVlZCBmdWxsIGluLWNvcmUgb2JqZWN0CisgICByZXByZXNlbnRhdGlvbiB0byBoYXZlIHBhcnNlZCB3ZW4gcmVhZGluZyBmcm9tIHRoZW0uICBUaGVzZQorICAgY29kZXBhdGhzIGhhdmUgYmVlbiBvcHRpbWl6ZWQgYnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGVzZSBhY2Nlc3MKKyAgIHBhdHRlcm5zLgorCisgKiBPYmplY3QgbG9va3VwIGxvZ2ljLCB3aGVuIHRoZSBvYmplY3QgaGFzaHRhYmxlIHN0YXJ0cyB0byBiZWNvbWUKKyAgIGNyb3dkZWQsIGhhcyBiZWVuIG9wdGltaXplZC4KKworICogV2hlbiBURVNUX09VVFBVVF9ESVJFQ1RPUlkgc2V0dGluZyBpcyB1c2VkLCBpdCB3YXMgaGFuZGxlZCBzb21ld2hhdAorICAgaW5jb25zaXN0ZW50bHkgYmV0d2VlbiB0aGUgdGVzdCBmcmFtZXdvcmsgYW5kIHQvTWFrZWZpbGUsIGFuZCBsb2dpYworICAgdG8gc3VtbWFyaXplIHRoZSByZXN1bHRzIGxvb2tlZCBhdCBhIHdyb25nIHBsYWNlLgorCisgKiAiZ2l0IGNsb25lIiB1c2VzIGEgbGlnaHRlci13ZWlnaHQgaW1wbGVtZW50YXRpb24gd2hlbiBtYWtpbmcgc3VyZQorICAgdGhhdCB0aGUgaGlzdG9yeSBiZWhpbmQgcmVmcyBhcmUgY29tcGxldGUuCisKKyAqIE1hbnkgd2FybmluZ3MgZnJvbSBzcGFyc2Ugc291cmNlIGNoZWNrZXIgaW4gY29tcGF0LyBhcmVhIGhhcyBiZWVuCisgICBzcXVlbGNoZWQuCisKKyAqIFRoZSBjb2RlIHRvIHJlYWRpbmcgYW5kIHVwZGF0aW5nIHBhY2tlZC1yZWZzIGZpbGUgaGFzIGJlZW4gdXBkYXRlZCwKKyAgIGNvcnJlY3RpbmcgY29ybmVyIGNhc2UgYnVncy4KKworCitBbHNvIGNvbnRhaW5zIHZhcmlvdXMgZG9jdW1lbnRhdGlvbiB1cGRhdGVzIGFuZCBjb2RlIGNsZWFuLXVwcy4KKworCitGaXhlcyBzaW5jZSB2MS44LjMKKy0tLS0tLS0tLS0tLS0tLS0tLQorCitVbmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLCBhbGwgdGhlIGZpeGVzIHNpbmNlIHYxLjguMyBpbiB0aGUgbWFpbnRlbmFuY2UKK3RyYWNrIGFyZSBjb250YWluZWQgaW4gdGhpcyByZWxlYXNlIChzZWUgcmVsZWFzZSBub3RlcyB0byB0aGVtIGZvcgorZGV0YWlscykuCisKKyAqIE5ld2VyIE5ldDo6U01UUDo6U1NMIG1vZHVsZSBkb2VzIG5vdCB3YW50IHRoZSB1c2VyIHByb2dyYW1zIHRvIHVzZQorICAgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIHRvIGxldCBzZXJ2ZXIgY2VydGlmaWNhdGUgZ28gd2l0aG91dAorICAgdmVyaWZpY2F0aW9uLCBzbyBieSBkZWZhdWx0IGVuYWJsZSB0aGUgdmVyaWZpY2F0aW9uIHdpdGggYQorICAgbWVjaGFuaXNtIHRvIHR1cm4gaXQgb2ZmIGlmIG5lZWRlZC4KKyAgIChtZXJnZSAzNTAzNWJiIHJyL3NlbmQtZW1haWwtc3NsLXZlcmlmeSBsYXRlciB0byBtYWludCkuCisKKyAqIFdoZW4gImdpdCIgaXMgc3Bhd25lZCBpbiBzdWNoIGEgd2F5IHRoYXQgYW55IG9mIHRoZSBsb3cgMyBmaWxlCisgICBkZXNjcmlwdG9ycyBpcyBjbG9zZWQsIG91ciBmaXJzdCBvcGVuKCkgbWF5IHlpZWxkIGZpbGUgZGVzY3JpcHRvciAyLAorICAgYW5kIHdyaXRpbmcgZXJyb3IgbWVzc2FnZSB0byBpdCB3b3VsZCBzY3JldyB0aGluZ3MgdXAgaW4gYSBiaWcgd2F5LgorICAgKG1lcmdlIGExMWMzOTYgdHIvcHJvdGVjdC1sb3ctMy1mZHMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBUaGUgbWFpbG1hcCBtZWNoYW5pc20gdW5uZWNlc3NhcmlseSBkb3duY2FzZWQgdGhlIGUtbWFpbCBhZGRyZXNzZXMKKyAgIGluIHRoZSBvdXRwdXQsIGFuZCBhbHNvIGlnbm9yZWQgdGhlIGh1bWFuIG5hbWUgd2hlbiBpdCBpcyBhIHNpbmdsZQorICAgY2hhcmFjdGVyIG5hbWUuCisgICAobWVyZ2UgYmQyMzc5NCBqYy9tYWlsbWFwLWNhc2UtaW5zZW5zaXRpdml0eSBsYXRlciB0byBtYWludCkuCisKKyAqIEluIHR3byBwbGFjZXMgd2UgZGlkIG5vdCBjaGVjayByZXR1cm4gdmFsdWUgKGV4cGVjdGVkIHRvIGJlIGEgZmlsZQorICAgZGVzY3JpcHRvcikgY29ycmVjdGx5LgorICAgKG1lcmdlIGE3N2YxMDYgdHIvZmQtZ290Y2hhLWZpeGVzIGxhdGVyIHRvIG1haW50KS4KKworICogTG9naWMgdG8gYXV0by1kZXRlY3QgY2hhcmFjdGVyIGVuY29kaW5ncyBpbiB0aGUgY29tbWl0IGxvZyBtZXNzYWdlCisgICBkaWQgbm90IHJlamVjdCBvdmVybG9uZyBhbmQgaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXJzLgorICAgKG1lcmdlIDgxMDUwYWMgYmMvY29tbWl0LWludmFsaWQtdXRmOCBsYXRlciB0byBtYWludCkuCisKKyAqIFBhc3MgcG9ydCBudW1iZXIgYXMgYSBzZXBhcmF0ZSBhcmd1bWVudCB3aGVuICJzZW5kLWVtYWlsIiBpbml0aWFsaXplcworICAgTmV0OjpTTVRQLCBpbnN0ZWFkIG9mIGFzIGEgcGFydCBvZiB0aGUgaG9zdG5hbWUsIGkuZS4gaG9zdDpwb3J0LgorICAgVGhpcyBhbGxvd3MgR1NTQVBJIGNvZGVwYXRoIHRvIG1hdGNoIHdpdGggdGhlIGhvc3RuYW1lIGdpdmVuLgorICAgKG1lcmdlIDFhNzQxYmYgYmMvc2VuZC1lbWFpbC11c2UtcG9ydC1hcy1zZXBhcmF0ZS1wYXJhbSBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgZGlmZiIgcmVmdXNlZCB0byBldmVuIHNob3cgZGlmZmVyZW5jZSB3aGVuIGNvcmUuc2FmZWNybGYgaXMKKyAgIHNldCB0byB0cnVlIChpLmUuIGVycm9yIG91dCkgYW5kIHRoZXJlIGFyZSBvZmZlbmRpbmcgbGluZXMgaW4gdGhlCisgICB3b3JraW5nIHRyZWUgZmlsZXMuCisgICAobWVyZ2UgNTQzMGJiMiBqYy9tYWludC1kaWZmLWNvcmUtc2FmZWNybGYgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBBIHRlc3QgdGhhdCBzaG91bGQgaGF2ZSBmYWlsZWQgYnV0IGRpZG4ndCByZXZlYWxlZCBhIGJ1ZyB0aGF0IG5lZWRzCisgICB0byBiZSBjb3JyZWN0ZWQuCisgICAobWVyZ2UgOTRkNzVkMSBqYy90MTUxMi1maXggbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBBbiBvdmVybG9uZyBwYXRoIHRvIGEgLmdpdCBkaXJlY3RvcnkgbWF5IGhhdmUgb3ZlcmZsb3duIHRoZQorICAgdGVtcG9yYXJ5IHBhdGggYnVmZmVyIHVzZWQgdG8gY3JlYXRlIGEgbmFtZSBmb3IgbG9ja2ZpbGVzLgorICAgKG1lcmdlIDJmYmQ0ZjkgbWgvbWFpbnQtbG9ja2ZpbGUtb3ZlcmZsb3cgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiBJbnZvY2F0aW9ucyBvZiAiZ2l0IGNoZWNrb3V0IiB1c2VkIGludGVybmFsbHkgYnkgImdpdCByZWJhc2UiIHdlcmUKKyAgIGNvdW50ZWQgYXMgImNoZWNrb3V0IiwgYW5kIGFmZmVjdGVkIGxhdGVyICJnaXQgY2hlY2tvdXQgLSIgdG8gdGhlCisgICB0aGUgdXNlciB0byBhbiB1bmV4cGVjdGVkIHBsYWNlLgorICAgKG1lcmdlIDNiZWQyOTEgcnIvcmViYXNlLWNoZWNrb3V0LXJlZmxvZyBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgc3Rhc2ggc2F2ZSIsIHdoZW4geW91ciBsb2NhbCBjaGFuZ2UgdHVybnMgYSB0cmFja2VkIGZpbGUgaW50bworICAgYSBkaXJlY3RvcnksIGhhcyB0byByZW1vdmUgZmlsZXMgaW4gdGhhdCBkaXJlY3RvcnkgaW4gb3JkZXIgdG8KKyAgIHJldmVydCB5b3VyIHdvcmtpbmcgdHJlZSB0byBhIHByaXN0aW5lIHN0YXRlLiAgVGhpcyB3aWxsIGxvc2UKKyAgIHVudHJhY2tlZCBmaWxlcyBpbiBzdWNoIGEgZGlyZWN0b3J5LCBhbmQgdGhlIGNvbW1hbmQgbm93IHJlcXVpcmVzCisgICB5b3UgdG8gIi0tZm9yY2UiIGl0LgorCisgKiBUaGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjb2x1bW4udWkgd2FzIHBvb3JseSBkb2N1bWVudGVkLgorICAgKG1lcmdlIDVlNjJjYzEgcnIvY29sdW1uLWRvYyBsYXRlciB0byBtYWludCkuCisKKyAqICJnaXQgbmFtZS1yZXYgLS1yZWZzPXRhZ3MvdioiIHdlcmUgZm9yYmlkZGVuLCB3aGljaCB3YXMgYSBiaXQKKyAgIGluY29udmVuaWVudCAoeW91IGhhZCB0byBnaXZlIGEgcGF0dGVybiB0byBtYXRjaCByZWZzIGZ1bGx5LCBsaWtlCisgICAtLXJlZnM9cmVmcy90YWdzL3YqKS4KKyAgIChtZXJnZSA5OGM1YzRhIG5rL25hbWUtcmV2LWFiYnJldmlhdGVkLXJlZnMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IGFwcGx5IiBwYXJzZWQgcGF0Y2hlcyB0aGF0IGFkZCBuZXcgZmlsZXMsIGdlbmVyYXRlZCBieQorICAgcHJvZ3JhbXMgb3RoZXIgdGhhbiBHaXQsIGluY29ycmVjdGx5LiAgVGhpcyBpcyBhbiBvbGQgYnJlYWthZ2UgaW4KKyAgIHYxLjcuMTEgYW5kIHdpbGwgbmVlZCB0byBiZSBtZXJnZWQgZG93biB0byB0aGUgbWFpbnRhbmFuY2UgdHJhY2tzLgorCisgKiBPbGRlciBjVVJMIHdhbnRlZCBwaWVjZSBvZiBtZW1vcnkgd2UgY2FsbCBpdCB3aXRoIHRvIGJlIHN0YWJsZSwgYnV0CisgICB3ZSB1cGRhdGVkIHRoZSBhdXRoIG1hdGVyaWFsIGFmdGVyIGhhbmRpbmcgaXQgdG8gYSBjYWxsLgorCisgKiAiZ2l0IHB1bGwiIGludG8gbm90aGluZyB0cmFzaGVkICJsb2NhbCBjaGFuZ2VzIiB0aGF0IHdlcmUgaW4gdGhlCisgICBpbmRleCwgYW5kIHRoaXMgYXZvaWRzIGl0LgorCisgKiBNYW55ICJnaXQgc3VibW9kdWxlIiBvcGVyYXRpb25zIGRvIG5vdCB3b3JrIG9uIGEgc3VibW9kdWxlIGF0IGEKKyAgIHBhdGggd2hvc2UgbmFtZSBpcyBub3QgaW4gQVNDSUkuCisKKyAqICJjaGVycnktcGljayIgaGFkIGEgc21hbGwgbGVhayBpbiBhbiBlcnJvciBjb2RlcGF0aC4KKworICogTG9naWMgdXNlZCBieSBnaXQtc2VuZC1lbWFpbCB0byBzdXBwcmVzcyBjYyBtaXNoYW5kbGVkIG5hbWVzIGxpa2UKKyAgICJBIFUuIFRob3IiIDxhdXRob3JAZXhhbXBsZS54ej4sIHdoZXJlIHRoZSBodW1hbiByZWFkYWJsZSBwYXJ0CisgICBuZWVkcyB0byBiZSBxdW90ZWQgKHRoZSB1c2VyIGlucHV0IG1heSBub3QgaGF2ZSB0aGUgZG91YmxlIHF1b3RlcworICAgYXJvdW5kIHRoZSBuYW1lLCBhbmQgY29tcGFyaXNvbiB3YXMgZG9uZSBiZXR3ZWVuIHF1b3RlZCBhbmQKKyAgIHVucXVvdGVkIHN0cmluZ3MpLiAgSXQgYWxzbyBtaXNoYW5kbGVkIG5hbWVzIHRoYXQgbmVlZCBSRkMyMDQ3CisgICBxdW90aW5nLgorCisgKiBDYWxsIHRvIGRpc2NhcmRfY2FjaGUvZGlzY2FyZF9pbmRleCAodXNlZCB3aGVuIHdlIHVzZSBkaWZmZXJlbnQKKyAgIGNvbnRlbnRzIG9mIHRoZSBpbmRleCBpbi1jb3JlLCBpbiBtYW55IG9wZXJhdGlvbnMgbGlrZSBjb21taXQsCisgICBhcHBseSwgYW5kIG1lcmdlKSB1c2VkIHRvIGxlYWsgbWVtb3J5IHRoYXQgaGVsZCB0aGUgYXJyYXkgb2YgaW5kZXgKKyAgIGVudHJpZXMsIHdoaWNoIGhhcyBiZWVuIHBsdWdnZWQuCisgICAobWVyZ2UgYTBmYzRkYiBycy9kaXNjYXJkLWluZGV4LWRpc2NhcmQtYXJyYXkgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0d2ViIiBmb3Jnb3QgdG8gY2xlYXIgYSBnbG9iYWwgdmFyaWFibGUgJHNlYXJjaF9yZWdleHAgdXBvbiBlYWNoCisgICByZXF1ZXN0LCBtaXN0YWtlbmx5IGNhcnJ5aW5nIG92ZXIgdGhlIHByZXZpb3VzIHNlYXJjaCB0byBhIG5ldyBvbmUKKyAgIHdoZW4gdXNlZCBhcyBhIHBlcnNpc3RlbnQgQ0dJLgorCisgKiBUaGUgd2lsZG1hdGNoIGVuZ2luZSBkaWQgbm90IGhvbm9yIFdNX0NBU0VGT0xEIG9wdGlvbiBjb3JyZWN0bHkuCisKKyAqICJnaXQgbG9nIC1jIC0tZm9sbG93ICRwYXRoIiBzZWdmYXVsdGVkIHVwb24gaGl0dGluZyB0aGUgY29tbWl0IHRoYXQKKyAgIHJlbmFtZWQgdGhlICRwYXRoIGJlaW5nIGZvbGxvd2VkLgorCisgKiBXaGVuIGEgcmVmbG9nIG5vdGF0aW9uIGlzIHVzZWQgZm9yIGltcGxpY2l0ICJjdXJyZW50IGJyYW5jaCIsIHdlCisgICBkaWQgbm90IHNheSB3aGljaCBicmFuY2ggYW5kIHdvcnNlIHNhaWQgImJyYW5jaCAnJyIuCisKKyAqICJkaWZmdG9vbCAtLWRpci1kaWZmIiBkaWQgbm90IGNvcHkgYmFjayBjaGFuZ2VzIG1hZGUgYnkgdGhlCisgICBlbmQtdXNlciBpbiB0aGUgZGlmZiB0b29sIGJhY2tlbmQgdG8gdGhlIHdvcmtpbmcgdHJlZSBpbiBzb21lCisgICBjYXNlcy4KKworICogImdpdCBwdXNoICR0aGVyZSBIRUFEOmJyYW5jaCIgZGlkIG5vdCByZXNvbHZlIEhFQUQgZWFybHkgZW5vdWdoLCBzbworICAgaXQgd2FzIGVhc3kgdG8gZmxpcCBpdCBhcm91bmQgd2hpbGUgcHVzaCBpcyBzdGlsbCBnb2luZyBvbiBhbmQgcHVzaAorICAgb3V0IGEgYnJhbmNoIHRoYXQgdGhlIHVzZXIgZGlkIG5vdCBvcmlnaW5hbGx5IGludGVuZGVkIHdoZW4gdGhlCisgICBjb21tYW5kIHdhcyBzdGFydGVkLgorCisgKiBUaGUgYmFzaCBwcm9tcHQgY29kZSAoaW4gY29udHJpYi8pIGRpc3BsYXllZCB0aGUgbmFtZSBvZiB0aGUgYnJhbmNoCisgICBiZWluZyByZWJhc2VkIHdoZW4gInJlYmFzZSAtaS8tbS8tcCIgbW9kZXMgYXJlIGluIHVzZSwgYnV0IG5vdCB0aGUKKyAgIHBsYWluIHZhbmlsbGEgInJlYmFzZSIuCisKKyAqIEhhbmRsaW5nIG9mIG5lZ2F0aXZlIGV4Y2x1ZGUgcGF0dGVybiBmb3IgZGlyZWN0b3JpZXMgIiFkaXIiIHdhcworICAgYnJva2VuIGluIHRoZSB1cGRhdGUgdG8gdjEuOC4zLgorCisgKiB6c2ggcHJvbXB0IHNjcmlwdCB0aGF0IGJvcnJvd2VkIGZyb20gYmFzaCBwcm9tcHQgc2NyaXB0IGRpZCBub3QKKyAgIHdvcmsgZHVlIHRvIHNsaWdodCBkaWZmZXJlbmNlcyBpbiBhcnJheSB2YXJpYWJsZSBub3RhdGlvbiBiZXR3ZWVuCisgICB0aGVzZSB0d28gc2hlbGxzLgorCisgKiBBbiBlbnRyeSBmb3IgImZpbGU6Ly8iIHNjaGVtZSBpbiB0aGUgZW51bWVyYXRpb24gb2YgVVJMIHR5cGVzIEdpdAorICAgY2FuIHRha2UgaW4gdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiB3YXMgbWFkZSBpbnRvIGEgY2xpY2thYmxlIGxpbmsKKyAgIGJ5IG1pc3Rha2UuCisKKyAqICJnaXQgcHVzaCAtLVtuby1ddmVyaWZ5IiB3YXMgbm90IGRvY3VtZW50ZWQuCisKKyAqIFN0b3AgaW5zdGFsbGluZyB0aGUgZ2l0LXJlbW90ZS10ZXN0cHkgc2NyaXB0IHRoYXQgaXMgb25seSB1c2VkIGZvcgorICAgdGVzdGluZy4KKworICogImdpdCBjb21taXQgLS1hbGxvdy1lbXB0eS1tZXNzYWdlIC1tICcnIiBzaG91bGQgbm90IHN0YXJ0IGFuCisgICBlZGl0b3IuCisKKyAqICJnaXQgbWVyZ2UgQHstMX1+MjIiIHdhcyByZXdyaXR0ZW4gdG8gImdpdCBtZXJnZSBmcm90ekB7MX1+MjIiCisgICBpbmNvcnJlY3RseSB3aGVuIHlvdXIgcHJldmlvdXMgYnJhbmNoIHdhcyAiZnJvdHoiIChpdCBzaG91bGQgYmUKKyAgIHJld3JpdHRlbiB0byAiZ2l0IG1lcmdlIGZyb3R6fjIyIiBpbnN0ZWFkKS4KKworICogImdpdCBkaWZmIC1jIC1wIiB3YXMgbm90IHNob3dpbmcgYSBkZWxldGVkIGxpbmUgZnJvbSBhIGh1bmsgd2hlbgorICAgYW5vdGhlciBodW5rIGltbWVkaWF0ZWx5IGJlZ2lucyB3aGVyZSB0aGUgZWFybGllciBvbmUgZW5kcy4KKworICogImdpdCBsb2cgLS1hbmNlc3RyeS1wYXRoIEEuLi5CIiBkaWQgbm90IHdvcmsgYXMgZXhwZWN0ZWQsIGFzIGl0IGRpZAorICAgbm90IHBheSBhdHRlbnRpb24gdG8gdGhlIGZhY3QgdGhhdCB0aGUgbWVyZ2UgYmFzZSBiZXR3ZWVuIEEgYW5kIEIKKyAgIHdhcyB0aGUgYm90dG9tIG9mIHRoZSByYW5nZSBiZWluZyBzcGVjaWZpZWQuCisKKyAqIE1hYyBPUyBYIGRvZXMgbm90IGxpa2UgdG8gd3JpdGUoMikgbW9yZSB0aGFuIElOVF9NQVggbnVtYmVyIG9mCisgICBieXRlczsgd29yayBpdCBhcm91bmQgYnkgY2hvcHBpbmcgd3JpdGUoMikgaW50byBzbWFsbGVyIHBpZWNlcy4KKworICogTmV3ZXIgTWFjT1MgWCBlbmNvdXJhZ2VzIHRoZSBwcm9ncmFtcyB0byBjb21waWxlIGFuZCBsaW5rIHdpdGgKKyAgIHRoZWlyIENvbW1vbkNyeXB0bywgbm90IHdpdGggT3BlblNTTC4KKworICogImdpdCBjbG9uZSBmb28vYmFyOmJheiIgY2Fubm90IGJlIGEgcmVxdWVzdCB0byBjbG9uZSBmcm9tIGEgcmVtb3RlCisgICBvdmVyIGdpdC1vdmVyLXNzaCBzcGVjaWZpZWQgaW4gdGhlIHNjcCBzdHlsZS4gIFRoaXMgY2FzZSBpcyBub3cKKyAgIGRldGVjdGVkIGFuZCBjbG9uZXMgZnJvbSBhIGxvY2FsIHJlcG9zaXRvcnkgYXQgImZvby9iYXI6YmF6Ii4KKworICogV2hlbiAkSE9NRSBpcyBtaXNjb25maWd1cmVkIHRvIHBvaW50IGF0IGFuIHVucmVhZGFibGUgZGlyZWN0b3J5LCB3ZQorICAgdXNlZCB0byBjb21wbGFpbiBhbmQgZGllLiBMb29zZW4gdGhlIGNoZWNrLgorCisgKiAiZ2l0IHN1YnRyZWUiIChpbiBjb250cmliLykgaGFkIG9uZSBjb2RlcGF0aCB3aXRoIGxvb3NlIGVycm9yCisgICBjaGVja3MgdG8gbG9zZSBkYXRhIGF0IHRoZSByZW1vdGUgc2lkZS4KKworICogImdpdCBmZXRjaCIgaW50byBhIHNoYWxsb3cgcmVwb3NpdG9yeSBmcm9tIGEgcmVwb3NpdG9yeSB0aGF0IGRvZXMKKyAgIG5vdCBrbm93IGFib3V0IHRoZSBzaGFsbG93IGJvdW5kYXJ5IGNvbW1pdHMgKGUuZy4gYSBkaWZmZXJlbnQgZm9yaworICAgZnJvbSB0aGUgcmVwb3NpdG9yeSB0aGUgY3VycmVudCBzaGFsbG93IHJlcG9zaXRvcnkgd2FzIGNsb25lZCBmcm9tKQorICAgZGlkIG5vdCB3b3JrIGNvcnJlY3RseS4KKworICogImdpdCBjaGVja291dCBmb28iIERXSU1zIHRoZSBpbnRlbmRlZCAidXBzdHJlYW0iIGFuZCB0dXJucyBpdCBpbnRvCisgICAiZ2l0IGNoZWNrb3V0IC10IC1iIGZvbyByZW1vdGVzL29yaWdpbi9mb28iLiBUaGlzIGNvZGVwYXRoIGhhcyBiZWVuCisgICB1cGRhdGVkIHRvIGNvcnJlY3RseSB0YWtlIGV4aXN0aW5nIHJlbW90ZSBkZWZpbml0aW9ucyBpbnRvIGFjY291bnQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9ibGFtZS1vcHRpb25zLnR4dAppbmRleCBiMGQzMWRmLi40ZTU1YjE1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2JsYW1lLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vYmxhbWUtb3B0aW9ucy50eHQKQEAgLTEwLDI3ICsxMCwxNCBAQAogCUluY2x1ZGUgYWRkaXRpb25hbCBzdGF0aXN0aWNzIGF0IHRoZSBlbmQgb2YgYmxhbWUgb3V0cHV0LgogCiAtTCA8c3RhcnQ+LDxlbmQ+OjoKLQlBbm5vdGF0ZSBvbmx5IHRoZSBnaXZlbiBsaW5lIHJhbmdlLiAgPHN0YXJ0PiBhbmQgPGVuZD4gY2FuIHRha2UKLQlvbmUgb2YgdGhlc2UgZm9ybXM6CistTCA6PHJlZ2V4Pjo6CisJQW5ub3RhdGUgb25seSB0aGUgZ2l2ZW4gbGluZSByYW5nZS4gIDxzdGFydD4gYW5kIDxlbmQ+IGFyZSBvcHRpb25hbC4KKwlgYC1MIDxzdGFydD4nJyBvciBgYC1MIDxzdGFydD4sJycgc3BhbnMgZnJvbSA8c3RhcnQ+IHRvIGVuZCBvZiBmaWxlLgorCWBgLUwgLDxlbmQ+Jycgc3BhbnMgZnJvbSBzdGFydCBvZiBmaWxlIHRvIDxlbmQ+LgorKworPHN0YXJ0PiBhbmQgPGVuZD4gY2FuIHRha2Ugb25lIG9mIHRoZXNlIGZvcm1zOgogCi0JLSBudW1iZXIKLSsKLUlmIDxzdGFydD4gb3IgPGVuZD4gaXMgYSBudW1iZXIsIGl0IHNwZWNpZmllcyBhbgotYWJzb2x1dGUgbGluZSBudW1iZXIgKGxpbmVzIGNvdW50IGZyb20gMSkuCi0rCi0KLS0gL3JlZ2V4LwotKwotVGhpcyBmb3JtIHdpbGwgdXNlIHRoZSBmaXJzdCBsaW5lIG1hdGNoaW5nIHRoZSBnaXZlbgotUE9TSVggcmVnZXguICBJZiA8ZW5kPiBpcyBhIHJlZ2V4LCBpdCB3aWxsIHNlYXJjaAotc3RhcnRpbmcgYXQgdGhlIGxpbmUgZ2l2ZW4gYnkgPHN0YXJ0Pi4KLSsKLQotLSArb2Zmc2V0IG9yIC1vZmZzZXQKLSsKLVRoaXMgaXMgb25seSB2YWxpZCBmb3IgPGVuZD4gYW5kIHdpbGwgc3BlY2lmeSBhIG51bWJlcgotb2YgbGluZXMgYmVmb3JlIG9yIGFmdGVyIHRoZSBsaW5lIGdpdmVuIGJ5IDxzdGFydD4uCi0rCitpbmNsdWRlOjpsaW5lLXJhbmdlLWZvcm1hdC50eHRbXQogCiAtbDo6CiAJU2hvdyBsb25nIHJldiAoRGVmYXVsdDogb2ZmKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dCBiL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dAppbmRleCAwYTdiZDA2Li5lYzU3YTE1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0CkBAIC0xOTksNiArMTk5LDkgQEAKIAlhbVdvcmtEaXI6OgogCQlBZHZpY2UgdGhhdCBzaG93cyB0aGUgbG9jYXRpb24gb2YgdGhlIHBhdGNoIGZpbGUgd2hlbgogCQlsaW5rZ2l0OmdpdC1hbVsxXSBmYWlscyB0byBhcHBseSBpdC4KKwlybUhpbnRzOjoKKwkJSW4gY2FzZSBvZiBmYWlsdXJlIGluIHRoZSBvdXRwdXQgb2YgbGlua2dpdDpnaXQtcm1bMV0sCisJCXNob3cgZGlyZWN0aW9ucyBvbiBob3cgdG8gcHJvY2VlZCBmcm9tIHRoZSBjdXJyZW50IHN0YXRlLgogLS0KIAogY29yZS5maWxlTW9kZTo6CkBAIC0yMTAsMTcgKzIxMyw2IEBACiB3aWxsIHByb2JlIGFuZCBzZXQgY29yZS5maWxlTW9kZSBmYWxzZSBpZiBhcHByb3ByaWF0ZSB3aGVuIHRoZQogcmVwb3NpdG9yeSBpcyBjcmVhdGVkLgogCi1jb3JlLmlnbm9yZUN5Z3dpbkZTVHJpY2tzOjoKLQlUaGlzIG9wdGlvbiBpcyBvbmx5IHVzZWQgYnkgQ3lnd2luIGltcGxlbWVudGF0aW9uIG9mIEdpdC4gSWYgZmFsc2UsCi0JdGhlIEN5Z3dpbiBzdGF0KCkgYW5kIGxzdGF0KCkgZnVuY3Rpb25zIGFyZSB1c2VkLiBUaGlzIG1heSBiZSB1c2VmdWwKLQlpZiB5b3VyIHJlcG9zaXRvcnkgY29uc2lzdHMgb2YgYSBmZXcgc2VwYXJhdGUgZGlyZWN0b3JpZXMgam9pbmVkIGluCi0Jb25lIGhpZXJhcmNoeSB1c2luZyBDeWd3aW4gbW91bnQuIElmIHRydWUsIEdpdCB1c2VzIG5hdGl2ZSBXaW4zMiBBUEkKLQl3aGVuZXZlciBpdCBpcyBwb3NzaWJsZSBhbmQgZmFsbHMgYmFjayB0byBDeWd3aW4gZnVuY3Rpb25zIG9ubHkgdG8KLQloYW5kbGUgc3ltYm9sIGxpbmtzLiBUaGUgbmF0aXZlIG1vZGUgaXMgbW9yZSB0aGFuIHR3aWNlIGZhc3RlciB0aGFuCi0Jbm9ybWFsIEN5Z3dpbiBsL3N0YXQoKSBmdW5jdGlvbnMuIFRydWUgYnkgZGVmYXVsdCwgdW5sZXNzIGNvcmUuZmlsZW1vZGUKLQlpcyB0cnVlLCBpbiB3aGljaCBjYXNlIGlnbm9yZUN5Z3dpbkZTVHJpY2tzIGlzIGlnbm9yZWQgYXMgQ3lnd2luJ3MKLQlQT1NJWCBlbXVsYXRpb24gaXMgcmVxdWlyZWQgdG8gc3VwcG9ydCBjb3JlLmZpbGVtb2RlLgotCiBjb3JlLmlnbm9yZWNhc2U6OgogCUlmIHRydWUsIHRoaXMgb3B0aW9uIGVuYWJsZXMgdmFyaW91cyB3b3JrYXJvdW5kcyB0byBlbmFibGUKIAlHaXQgdG8gd29yayBiZXR0ZXIgb24gZmlsZXN5c3RlbXMgdGhhdCBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZlLApAQCAtODc2LDE2ICs4NjgsMTcgQEAKIAogY29sb3IuaW50ZXJhY3RpdmU6OgogCVdoZW4gc2V0IHRvIGBhbHdheXNgLCBhbHdheXMgdXNlIGNvbG9ycyBmb3IgaW50ZXJhY3RpdmUgcHJvbXB0cwotCWFuZCBkaXNwbGF5cyAoc3VjaCBhcyB0aG9zZSB1c2VkIGJ5ICJnaXQtYWRkIC0taW50ZXJhY3RpdmUiKS4KLQlXaGVuIGZhbHNlIChvciBgbmV2ZXJgKSwgbmV2ZXIuICBXaGVuIHNldCB0byBgdHJ1ZWAgb3IgYGF1dG9gLCB1c2UKLQljb2xvcnMgb25seSB3aGVuIHRoZSBvdXRwdXQgaXMgdG8gdGhlIHRlcm1pbmFsLiBEZWZhdWx0cyB0byBmYWxzZS4KKwlhbmQgZGlzcGxheXMgKHN1Y2ggYXMgdGhvc2UgdXNlZCBieSAiZ2l0LWFkZCAtLWludGVyYWN0aXZlIiBhbmQKKwkiZ2l0LWNsZWFuIC0taW50ZXJhY3RpdmUiKS4gV2hlbiBmYWxzZSAob3IgYG5ldmVyYCksIG5ldmVyLgorCVdoZW4gc2V0IHRvIGB0cnVlYCBvciBgYXV0b2AsIHVzZSBjb2xvcnMgb25seSB3aGVuIHRoZSBvdXRwdXQgaXMKKwl0byB0aGUgdGVybWluYWwuIERlZmF1bHRzIHRvIGZhbHNlLgogCiBjb2xvci5pbnRlcmFjdGl2ZS48c2xvdD46OgotCVVzZSBjdXN0b21pemVkIGNvbG9yIGZvciAnZ2l0IGFkZCAtLWludGVyYWN0aXZlJwotCW91dHB1dC4gYDxzbG90PmAgbWF5IGJlIGBwcm9tcHRgLCBgaGVhZGVyYCwgYGhlbHBgIG9yIGBlcnJvcmAsIGZvcgotCWZvdXIgZGlzdGluY3QgdHlwZXMgb2Ygbm9ybWFsIG91dHB1dCBmcm9tIGludGVyYWN0aXZlCi0JY29tbWFuZHMuICBUaGUgdmFsdWVzIG9mIHRoZXNlIHZhcmlhYmxlcyBtYXkgYmUgc3BlY2lmaWVkIGFzCi0JaW4gY29sb3IuYnJhbmNoLjxzbG90Pi4KKwlVc2UgY3VzdG9taXplZCBjb2xvciBmb3IgJ2dpdCBhZGQgLS1pbnRlcmFjdGl2ZScgYW5kICdnaXQgY2xlYW4KKwktLWludGVyYWN0aXZlJyBvdXRwdXQuIGA8c2xvdD5gIG1heSBiZSBgcHJvbXB0YCwgYGhlYWRlcmAsIGBoZWxwYAorCW9yIGBlcnJvcmAsIGZvciBmb3VyIGRpc3RpbmN0IHR5cGVzIG9mIG5vcm1hbCBvdXRwdXQgZnJvbQorCWludGVyYWN0aXZlIGNvbW1hbmRzLiAgVGhlIHZhbHVlcyBvZiB0aGVzZSB2YXJpYWJsZXMgbWF5IGJlCisJc3BlY2lmaWVkIGFzIGluIGNvbG9yLmJyYW5jaC48c2xvdD4uCiAKIGNvbG9yLnBhZ2VyOjoKIAlBIGJvb2xlYW4gdG8gZW5hYmxlL2Rpc2FibGUgY29sb3JlZCBvdXRwdXQgd2hlbiB0aGUgcGFnZXIgaXMgaW4KQEAgLTkxOSwxMSArOTEyLDEyIEBACiAJYXMgYGNvbG9yLmRpZmZgIGFuZCBgY29sb3IuZ3JlcGAgdGhhdCBjb250cm9sIHRoZSB1c2Ugb2YgY29sb3IKIAlwZXIgY29tbWFuZCBmYW1pbHkuIEl0cyBzY29wZSB3aWxsIGV4cGFuZCBhcyBtb3JlIGNvbW1hbmRzIGxlYXJuCiAJY29uZmlndXJhdGlvbiB0byBzZXQgYSBkZWZhdWx0IGZvciB0aGUgYC0tY29sb3JgIG9wdGlvbi4gIFNldCBpdAotCXRvIGBhbHdheXNgIGlmIHlvdSB3YW50IGFsbCBvdXRwdXQgbm90IGludGVuZGVkIGZvciBtYWNoaW5lCi0JY29uc3VtcHRpb24gdG8gdXNlIGNvbG9yLCB0byBgdHJ1ZWAgb3IgYGF1dG9gIGlmIHlvdSB3YW50IHN1Y2gKLQlvdXRwdXQgdG8gdXNlIGNvbG9yIHdoZW4gd3JpdHRlbiB0byB0aGUgdGVybWluYWwsIG9yIHRvIGBmYWxzZWAgb3IKLQlgbmV2ZXJgIGlmIHlvdSBwcmVmZXIgR2l0IGNvbW1hbmRzIG5vdCB0byB1c2UgY29sb3IgdW5sZXNzIGVuYWJsZWQKLQlleHBsaWNpdGx5IHdpdGggc29tZSBvdGhlciBjb25maWd1cmF0aW9uIG9yIHRoZSBgLS1jb2xvcmAgb3B0aW9uLgorCXRvIGBmYWxzZWAgb3IgYG5ldmVyYCBpZiB5b3UgcHJlZmVyIEdpdCBjb21tYW5kcyBub3QgdG8gdXNlCisJY29sb3IgdW5sZXNzIGVuYWJsZWQgZXhwbGljaXRseSB3aXRoIHNvbWUgb3RoZXIgY29uZmlndXJhdGlvbgorCW9yIHRoZSBgLS1jb2xvcmAgb3B0aW9uLiBTZXQgaXQgdG8gYGFsd2F5c2AgaWYgeW91IHdhbnQgYWxsCisJb3V0cHV0IG5vdCBpbnRlbmRlZCBmb3IgbWFjaGluZSBjb25zdW1wdGlvbiB0byB1c2UgY29sb3IsIHRvCisJYHRydWVgIG9yIGBhdXRvYCAodGhpcyBpcyB0aGUgZGVmYXVsdCBzaW5jZSBHaXQgMS44LjQpIGlmIHlvdQorCXdhbnQgc3VjaCBvdXRwdXQgdG8gdXNlIGNvbG9yIHdoZW4gd3JpdHRlbiB0byB0aGUgdGVybWluYWwuCiAKIGNvbHVtbi51aTo6CiAJU3BlY2lmeSB3aGV0aGVyIHN1cHBvcnRlZCBjb21tYW5kcyBzaG91bGQgb3V0cHV0IGluIGNvbHVtbnMuCkBAIC05NjksNiArOTYzLDEwIEBACiAJU3BlY2lmeSB3aGV0aGVyIHRvIG91dHB1dCBicmFuY2ggbGlzdGluZyBpbiBgZ2l0IGJyYW5jaGAgaW4gY29sdW1ucy4KIAlTZWUgYGNvbHVtbi51aWAgZm9yIGRldGFpbHMuCiAKK2NvbHVtbi5jbGVhbjo6CisJU3BlY2lmeSB0aGUgbGF5b3V0IHdoZW4gbGlzdCBpdGVtcyBpbiBgZ2l0IGNsZWFuIC1pYCwgd2hpY2ggYWx3YXlzCisJc2hvd3MgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGluIGNvbHVtbnMuIFNlZSBgY29sdW1uLnVpYCBmb3IgZGV0YWlscy4KKwogY29sdW1uLnN0YXR1czo6CiAJU3BlY2lmeSB3aGV0aGVyIHRvIG91dHB1dCB1bnRyYWNrZWQgZmlsZXMgaW4gYGdpdCBzdGF0dXNgIGluIGNvbHVtbnMuCiAJU2VlIGBjb2x1bW4udWlgIGZvciBkZXRhaWxzLgpAQCAtMTg0MCwzOSArMTgzOCw1OSBAQAogCVRoZSBkZWZhdWx0IG1lcmdlIHN0cmF0ZWd5IHRvIHVzZSB3aGVuIHB1bGxpbmcgYSBzaW5nbGUgYnJhbmNoLgogCiBwdXNoLmRlZmF1bHQ6OgotCURlZmluZXMgdGhlIGFjdGlvbiBgZ2l0IHB1c2hgIHNob3VsZCB0YWtlIGlmIG5vIHJlZnNwZWMgaXMgZ2l2ZW4KLQlvbiB0aGUgY29tbWFuZCBsaW5lLCBubyByZWZzcGVjIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIHJlbW90ZSwgYW5kCi0Jbm8gcmVmc3BlYyBpcyBpbXBsaWVkIGJ5IGFueSBvZiB0aGUgb3B0aW9ucyBnaXZlbiBvbiB0aGUgY29tbWFuZAotCWxpbmUuIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisJRGVmaW5lcyB0aGUgYWN0aW9uIGBnaXQgcHVzaGAgc2hvdWxkIHRha2UgaWYgbm8gcmVmc3BlYyBpcworCWV4cGxpY2l0bHkgZ2l2ZW4uICBEaWZmZXJlbnQgdmFsdWVzIGFyZSB3ZWxsLXN1aXRlZCBmb3IKKwlzcGVjaWZpYyB3b3JrZmxvd3M7IGZvciBpbnN0YW5jZSwgaW4gYSBwdXJlbHkgY2VudHJhbCB3b3JrZmxvdworCShpLmUuIHRoZSBmZXRjaCBzb3VyY2UgaXMgZXF1YWwgdG8gdGhlIHB1c2ggZGVzdGluYXRpb24pLAorCWB1cHN0cmVhbWAgaXMgcHJvYmFibHkgd2hhdCB5b3Ugd2FudC4gIFBvc3NpYmxlIHZhbHVlcyBhcmU6CiArCiAtLQotKiBgbm90aGluZ2AgLSBkbyBub3QgcHVzaCBhbnl0aGluZy4KLSogYG1hdGNoaW5nYCAtIHB1c2ggYWxsIGJyYW5jaGVzIGhhdmluZyB0aGUgc2FtZSBuYW1lIGluIGJvdGggZW5kcy4KLSAgVGhpcyBpcyBmb3IgdGhvc2Ugd2hvIHByZXBhcmUgYWxsIHRoZSBicmFuY2hlcyBpbnRvIGEgcHVibGlzaGFibGUKLSAgc2hhcGUgYW5kIHRoZW4gcHVzaCB0aGVtIG91dCB3aXRoIGEgc2luZ2xlIGNvbW1hbmQuICBJdCBpcyBub3QKLSAgYXBwcm9wcmlhdGUgZm9yIHB1c2hpbmcgaW50byBhIHJlcG9zaXRvcnkgc2hhcmVkIGJ5IG11bHRpcGxlIHVzZXJzLAotICBzaW5jZSBsb2NhbGx5IHN0YWxsZWQgYnJhbmNoZXMgd2lsbCBhdHRlbXB0IGEgbm9uLWZhc3QgZm9yd2FyZCBwdXNoCi0gIGlmIG90aGVyIHVzZXJzIHVwZGF0ZWQgdGhlIGJyYW5jaC4KLSAgKwotICBUaGlzIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCwgYnV0IEdpdCAyLjAgd2lsbCBjaGFuZ2UgdGhlIGRlZmF1bHQKLSAgdG8gYHNpbXBsZWAuCi0qIGB1cHN0cmVhbWAgLSBwdXNoIHRoZSBjdXJyZW50IGJyYW5jaCB0byBpdHMgdXBzdHJlYW0gYnJhbmNoCi0gIChgdHJhY2tpbmdgIGlzIGEgZGVwcmVjYXRlZCBzeW5vbnltIGZvciB0aGlzKS4KLSAgV2l0aCB0aGlzLCBgZ2l0IHB1c2hgIHdpbGwgdXBkYXRlIHRoZSBzYW1lIHJlbW90ZSByZWYgYXMgdGhlIG9uZSB3aGljaAotICBpcyBtZXJnZWQgYnkgYGdpdCBwdWxsYCwgbWFraW5nIGBwdXNoYCBhbmQgYHB1bGxgIHN5bW1ldHJpY2FsLgotICBTZWUgImJyYW5jaC48bmFtZT4ubWVyZ2UiIGZvciBob3cgdG8gY29uZmlndXJlIHRoZSB1cHN0cmVhbSBicmFuY2guCi0qIGBzaW1wbGVgIC0gbGlrZSBgdXBzdHJlYW1gLCBidXQgcmVmdXNlcyB0byBwdXNoIGlmIHRoZSB1cHN0cmVhbQotICBicmFuY2gncyBuYW1lIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBsb2NhbCBvbmUuIFRoaXMgaXMgdGhlIHNhZmVzdAotICBvcHRpb24gYW5kIGlzIHdlbGwtc3VpdGVkIGZvciBiZWdpbm5lcnMuIEl0IHdpbGwgYmVjb21lIHRoZSBkZWZhdWx0Ci0gIGluIEdpdCAyLjAuCi0qIGBjdXJyZW50YCAtIHB1c2ggdGhlIGN1cnJlbnQgYnJhbmNoIHRvIGEgYnJhbmNoIG9mIHRoZSBzYW1lIG5hbWUuCi0tLQorCisqIGBub3RoaW5nYCAtIGRvIG5vdCBwdXNoIGFueXRoaW5nIChlcnJvciBvdXQpIHVubGVzcyBhIHJlZnNwZWMgaXMKKyAgZXhwbGljaXRseSBnaXZlbi4gVGhpcyBpcyBwcmltYXJpbHkgbWVhbnQgZm9yIHBlb3BsZSB3aG8gd2FudCB0bworICBhdm9pZCBtaXN0YWtlcyBieSBhbHdheXMgYmVpbmcgZXhwbGljaXQuCisKKyogYGN1cnJlbnRgIC0gcHVzaCB0aGUgY3VycmVudCBicmFuY2ggdG8gdXBkYXRlIGEgYnJhbmNoIHdpdGggdGhlIHNhbWUKKyAgbmFtZSBvbiB0aGUgcmVjZWl2aW5nIGVuZC4gIFdvcmtzIGluIGJvdGggY2VudHJhbCBhbmQgbm9uLWNlbnRyYWwKKyAgd29ya2Zsb3dzLgorCisqIGB1cHN0cmVhbWAgLSBwdXNoIHRoZSBjdXJyZW50IGJyYW5jaCBiYWNrIHRvIHRoZSBicmFuY2ggd2hvc2UKKyAgY2hhbmdlcyBhcmUgdXN1YWxseSBpbnRlZ3JhdGVkIGludG8gdGhlIGN1cnJlbnQgYnJhbmNoICh3aGljaCBpcworICBjYWxsZWQgYEB7dXBzdHJlYW19YCkuICBUaGlzIG1vZGUgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgYXJlCisgIHB1c2hpbmcgdG8gdGhlIHNhbWUgcmVwb3NpdG9yeSB5b3Ugd291bGQgbm9ybWFsbHkgcHVsbCBmcm9tCisgIChpLmUuIGNlbnRyYWwgd29ya2Zsb3cpLgorCisqIGBzaW1wbGVgIC0gaW4gY2VudHJhbGl6ZWQgd29ya2Zsb3csIHdvcmsgbGlrZSBgdXBzdHJlYW1gIHdpdGggYW4KKyAgYWRkZWQgc2FmZXR5IHRvIHJlZnVzZSB0byBwdXNoIGlmIHRoZSB1cHN0cmVhbSBicmFuY2gncyBuYW1lIGlzCisgIGRpZmZlcmVudCBmcm9tIHRoZSBsb2NhbCBvbmUuCiArCi1UaGUgYHNpbXBsZWAsIGBjdXJyZW50YCBhbmQgYHVwc3RyZWFtYCBtb2RlcyBhcmUgZm9yIHRob3NlIHdobyB3YW50IHRvCi1wdXNoIG91dCBhIHNpbmdsZSBicmFuY2ggYWZ0ZXIgZmluaXNoaW5nIHdvcmssIGV2ZW4gd2hlbiB0aGUgb3RoZXIKLWJyYW5jaGVzIGFyZSBub3QgeWV0IHJlYWR5IHRvIGJlIHB1c2hlZCBvdXQuIElmIHlvdSBhcmUgd29ya2luZyB3aXRoCi1vdGhlciBwZW9wbGUgdG8gcHVzaCBpbnRvIHRoZSBzYW1lIHNoYXJlZCByZXBvc2l0b3J5LCB5b3Ugd291bGQgd2FudAotdG8gdXNlIG9uZSBvZiB0aGVzZS4KK1doZW4gcHVzaGluZyB0byBhIHJlbW90ZSB0aGF0IGlzIGRpZmZlcmVudCBmcm9tIHRoZSByZW1vdGUgeW91IG5vcm1hbGx5CitwdWxsIGZyb20sIHdvcmsgYXMgYGN1cnJlbnRgLiAgVGhpcyBpcyB0aGUgc2FmZXN0IG9wdGlvbiBhbmQgaXMgc3VpdGVkCitmb3IgYmVnaW5uZXJzLgorKworVGhpcyBtb2RlIHdpbGwgYmVjb21lIHRoZSBkZWZhdWx0IGluIEdpdCAyLjAuCisKKyogYG1hdGNoaW5nYCAtIHB1c2ggYWxsIGJyYW5jaGVzIGhhdmluZyB0aGUgc2FtZSBuYW1lIG9uIGJvdGggZW5kcy4KKyAgVGhpcyBtYWtlcyB0aGUgcmVwb3NpdG9yeSB5b3UgYXJlIHB1c2hpbmcgdG8gcmVtZW1iZXIgdGhlIHNldCBvZgorICBicmFuY2hlcyB0aGF0IHdpbGwgYmUgcHVzaGVkIG91dCAoZS5nLiBpZiB5b3UgYWx3YXlzIHB1c2ggJ21haW50JworICBhbmQgJ21hc3RlcicgdGhlcmUgYW5kIG5vIG90aGVyIGJyYW5jaGVzLCB0aGUgcmVwb3NpdG9yeSB5b3UgcHVzaAorICB0byB3aWxsIGhhdmUgdGhlc2UgdHdvIGJyYW5jaGVzLCBhbmQgeW91ciBsb2NhbCAnbWFpbnQnIGFuZAorICAnbWFzdGVyJyB3aWxsIGJlIHB1c2hlZCB0aGVyZSkuCisrCitUbyB1c2UgdGhpcyBtb2RlIGVmZmVjdGl2ZWx5LCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgX2FsbF8gdGhlCiticmFuY2hlcyB5b3Ugd291bGQgcHVzaCBvdXQgYXJlIHJlYWR5IHRvIGJlIHB1c2hlZCBvdXQgYmVmb3JlCitydW5uaW5nICdnaXQgcHVzaCcsIGFzIHRoZSB3aG9sZSBwb2ludCBvZiB0aGlzIG1vZGUgaXMgdG8gYWxsb3cgeW91Cit0byBwdXNoIGFsbCBvZiB0aGUgYnJhbmNoZXMgaW4gb25lIGdvLiAgSWYgeW91IHVzdWFsbHkgZmluaXNoIHdvcmsKK29uIG9ubHkgb25lIGJyYW5jaCBhbmQgcHVzaCBvdXQgdGhlIHJlc3VsdCwgd2hpbGUgb3RoZXIgYnJhbmNoZXMgYXJlCit1bmZpbmlzaGVkLCB0aGlzIG1vZGUgaXMgbm90IGZvciB5b3UuICBBbHNvIHRoaXMgbW9kZSBpcyBub3QKK3N1aXRhYmxlIGZvciBwdXNoaW5nIGludG8gYSBzaGFyZWQgY2VudHJhbCByZXBvc2l0b3J5LCBhcyBvdGhlcgorcGVvcGxlIG1heSBhZGQgbmV3IGJyYW5jaGVzIHRoZXJlLCBvciB1cGRhdGUgdGhlIHRpcCBvZiBleGlzdGluZworYnJhbmNoZXMgb3V0c2lkZSB5b3VyIGNvbnRyb2wuCisrCitUaGlzIGlzIGN1cnJlbnRseSB0aGUgZGVmYXVsdCwgYnV0IEdpdCAyLjAgd2lsbCBjaGFuZ2UgdGhlIGRlZmF1bHQKK3RvIGBzaW1wbGVgLgorCistLQogCiByZWJhc2Uuc3RhdDo6CiAJV2hldGhlciB0byBzaG93IGEgZGlmZnN0YXQgb2Ygd2hhdCBjaGFuZ2VkIHVwc3RyZWFtIHNpbmNlIHRoZSBsYXN0CkBAIC0xODgxLDYgKzE4OTksMTQgQEAKIHJlYmFzZS5hdXRvc3F1YXNoOjoKIAlJZiBzZXQgdG8gdHJ1ZSBlbmFibGUgJy0tYXV0b3NxdWFzaCcgb3B0aW9uIGJ5IGRlZmF1bHQuCiAKK3JlYmFzZS5hdXRvc3Rhc2g6OgorCVdoZW4gc2V0IHRvIHRydWUsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgdGVtcG9yYXJ5IHN0YXNoCisJYmVmb3JlIHRoZSBvcGVyYXRpb24gYmVnaW5zLCBhbmQgYXBwbHkgaXQgYWZ0ZXIgdGhlIG9wZXJhdGlvbgorCWVuZHMuICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBydW4gcmViYXNlIG9uIGEgZGlydHkgd29ya3RyZWUuCisJSG93ZXZlciwgdXNlIHdpdGggY2FyZTogdGhlIGZpbmFsIHN0YXNoIGFwcGxpY2F0aW9uIGFmdGVyIGEKKwlzdWNjZXNzZnVsIHJlYmFzZSBtaWdodCByZXN1bHQgaW4gbm9uLXRyaXZpYWwgY29uZmxpY3RzLgorCURlZmF1bHRzIHRvIGZhbHNlLgorCiByZWNlaXZlLmF1dG9nYzo6CiAJQnkgZGVmYXVsdCwgZ2l0LXJlY2VpdmUtcGFjayB3aWxsIHJ1biAiZ2l0LWdjIC0tYXV0byIgYWZ0ZXIKIAlyZWNlaXZpbmcgZGF0YSBmcm9tIGdpdC1wdXNoIGFuZCB1cGRhdGluZyByZWZzLiAgWW91IGNhbiBzdG9wCkBAIC0yMDM2LDYgKzIwNjIsMTAgQEAKIHNlbmRlbWFpbC5zbXRwc3NsOjoKIAlEZXByZWNhdGVkIGFsaWFzIGZvciAnc2VuZGVtYWlsLnNtdHBlbmNyeXB0aW9uID0gc3NsJy4KIAorc2VuZGVtYWlsLnNtdHBzc2xjZXJ0cGF0aDo6CisJUGF0aCB0byBjYS1jZXJ0aWZpY2F0ZXMgKGVpdGhlciBhIGRpcmVjdG9yeSBvciBhIHNpbmdsZSBmaWxlKS4KKwlTZXQgaXQgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIGRpc2FibGUgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLgorCiBzZW5kZW1haWwuPGlkZW50aXR5Pi4qOjoKIAlJZGVudGl0eS1zcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGUgJ3NlbmRlbWFpbC4qJyBwYXJhbWV0ZXJzCiAJZm91bmQgYmVsb3csIHRha2luZyBwcmVjZWRlbmNlIG92ZXIgdGhvc2Ugd2hlbiB0aGUgdGhpcwpAQCAtMjA4MCw2ICsyMTEwLDE0IEBACiAJcmVsYXRpdmUgdG8gdGhlIHJlcG9zaXRvcnkgcm9vdCAodGhpcyB3YXMgdGhlIGRlZmF1bHQgZm9yIEdpdAogCXByaW9yIHRvIHYxLjUuNCkuCiAKK3N0YXR1cy5zaG9ydDo6CisJU2V0IHRvIHRydWUgdG8gZW5hYmxlIC0tc2hvcnQgYnkgZGVmYXVsdCBpbiBsaW5rZ2l0OmdpdC1zdGF0dXNbMV0uCisJVGhlIG9wdGlvbiAtLW5vLXNob3J0IHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGlzIHZhcmlhYmxlLgorCitzdGF0dXMuYnJhbmNoOjoKKwlTZXQgdG8gdHJ1ZSB0byBlbmFibGUgLS1icmFuY2ggYnkgZGVmYXVsdCBpbiBsaW5rZ2l0OmdpdC1zdGF0dXNbMV0uCisJVGhlIG9wdGlvbiAtLW5vLWJyYW5jaCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhpcyB2YXJpYWJsZS4KKwogc3RhdHVzLnNob3dVbnRyYWNrZWRGaWxlczo6CiAJQnkgZGVmYXVsdCwgbGlua2dpdDpnaXQtc3RhdHVzWzFdIGFuZCBsaW5rZ2l0OmdpdC1jb21taXRbMV0gc2hvdwogCWZpbGVzIHdoaWNoIGFyZSBub3QgY3VycmVudGx5IHRyYWNrZWQgYnkgR2l0LiBEaXJlY3RvcmllcyB3aGljaApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9kaWZmLW9wdGlvbnMudHh0CmluZGV4IGQ2ZTRkYjQuLmJiZWQyY2QgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZGlmZi1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2RpZmYtb3B0aW9ucy50eHQKQEAgLTI2LDYgKzI2LDExIEBACiAJe2dpdC1kaWZmPyBUaGlzIGlzIHRoZSBkZWZhdWx0Ln0KIGVuZGlmOjpnaXQtZm9ybWF0LXBhdGNoW10KIAorLXM6OgorLS1uby1wYXRjaDo6CisJU3VwcHJlc3MgZGlmZiBvdXRwdXQuIFVzZWZ1bCBmb3IgY29tbWFuZHMgbGlrZSBgZ2l0IHNob3dgIHRoYXQKKwlzaG93IHRoZSBwYXRjaCBieSBkZWZhdWx0LCBvciB0byBjYW5jZWwgdGhlIGVmZmVjdCBvZiBgLS1wYXRjaGAuCisKIC1VPG4+OjoKIC0tdW5pZmllZD08bj46OgogCUdlbmVyYXRlIGRpZmZzIHdpdGggPG4+IGxpbmVzIG9mIGNvbnRleHQgaW5zdGVhZCBvZgpAQCAtNDYxLDYgKzQ2Niw5IEBACiAJZGlmZmVyZW5jZXMgZXZlbiBpZiBvbmUgbGluZSBoYXMgd2hpdGVzcGFjZSB3aGVyZSB0aGUgb3RoZXIKIAlsaW5lIGhhcyBub25lLgogCistLWlnbm9yZS1ibGFuay1saW5lczo6CisJSWdub3JlIGNoYW5nZXMgd2hvc2UgbGluZXMgYXJlIGFsbCBibGFuay4KKwogLS1pbnRlci1odW5rLWNvbnRleHQ9PGxpbmVzPjo6CiAJU2hvdyB0aGUgY29udGV4dCBiZXR3ZWVuIGRpZmYgaHVua3MsIHVwIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyCiAJb2YgbGluZXMsIHRoZXJlYnkgZnVzaW5nIGh1bmtzIHRoYXQgYXJlIGNsb3NlIHRvIGVhY2ggb3RoZXIuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1hbS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1hbS50eHQKaW5kZXggNWJiZTdiNi4uNTRkODQ2MSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYW0udHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWFtLnR4dApAQCAtMTMyLDcgKzEzMiw3IEBACiAtLXJlc29sdmVtc2c9PG1zZz46OgogCVdoZW4gYSBwYXRjaCBmYWlsdXJlIG9jY3VycywgPG1zZz4gd2lsbCBiZSBwcmludGVkCiAJdG8gdGhlIHNjcmVlbiBiZWZvcmUgZXhpdGluZy4gIFRoaXMgb3ZlcnJpZGVzIHRoZQotCXN0YW5kYXJkIG1lc3NhZ2UgaW5mb3JtaW5nIHlvdSB0byB1c2UgYC0tcmVzb2x2ZWRgCisJc3RhbmRhcmQgbWVzc2FnZSBpbmZvcm1pbmcgeW91IHRvIHVzZSBgLS1jb250aW51ZWAKIAlvciBgLS1za2lwYCB0byBoYW5kbGUgdGhlIGZhaWx1cmUuICBUaGlzIGlzIHNvbGVseQogCWZvciBpbnRlcm5hbCB1c2UgYmV0d2VlbiAnZ2l0IHJlYmFzZScgYW5kICdnaXQgYW0nLgogCkBAIC0xNzYsNyArMTc2LDcgQEAKIAogLiBoYW5kIHJlc29sdmUgdGhlIGNvbmZsaWN0IGluIHRoZSB3b3JraW5nIGRpcmVjdG9yeSwgYW5kIHVwZGF0ZQogICB0aGUgaW5kZXggZmlsZSB0byBicmluZyBpdCBpbnRvIGEgc3RhdGUgdGhhdCB0aGUgcGF0Y2ggc2hvdWxkCi0gIGhhdmUgcHJvZHVjZWQuICBUaGVuIHJ1biB0aGUgY29tbWFuZCB3aXRoIHRoZSAnLS1yZXNvbHZlZCcgb3B0aW9uLgorICBoYXZlIHByb2R1Y2VkLiAgVGhlbiBydW4gdGhlIGNvbW1hbmQgd2l0aCB0aGUgJy0tY29udGludWUnIG9wdGlvbi4KIAogVGhlIGNvbW1hbmQgcmVmdXNlcyB0byBwcm9jZXNzIG5ldyBtYWlsYm94ZXMgdW50aWwgdGhlIGN1cnJlbnQKIG9wZXJhdGlvbiBpcyBmaW5pc2hlZCwgc28gaWYgeW91IGRlY2lkZSB0byBzdGFydCBvdmVyIGZyb20gc2NyYXRjaCwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC1sazIwMDkudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKaW5kZXggMGVlZDNlMy4uYWZlYjg2YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LWxrMjAwOS50eHQKQEAgLTEzMjAsNyArMTMyMCw3IEBACiA7LSkKIF9fX19fX19fX19fX18KIAotQWNrbm93bGVkZ2VtZW50cworQWNrbm93bGVkZ21lbnRzCiAtLS0tLS0tLS0tLS0tLS0tCiAKIE1hbnkgdGhhbmtzIHRvIEp1bmlvIEhhbWFubyBmb3IgaGlzIGhlbHAgaW4gcmV2aWV3aW5nIHRoaXMgcGFwZXIsIGZvcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtYmxhbWUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmxhbWUudHh0CmluZGV4IDlhMDVjMmIuLjZjZWE3ZjEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWJsYW1lLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1ibGFtZS50eHQKQEAgLTgsOSArOCw5IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgYmxhbWUnIFstY10gWy1iXSBbLWxdIFstLXJvb3RdIFstdF0gWy1mXSBbLW5dIFstc10gWy1lXSBbLXBdIFstd10gWy0taW5jcmVtZW50YWxdIFstTCBuLG1dCi0JICAgIFstUyA8cmV2cy1maWxlPl0gWy1NXSBbLUNdIFstQ10gWy1DXSBbLS1zaW5jZT08ZGF0ZT5dIFstLWFiYnJldj08bj5dCi0JICAgIFs8cmV2PiB8IC0tY29udGVudHMgPGZpbGU+IHwgLS1yZXZlcnNlIDxyZXY+XSBbLS1dIDxmaWxlPgorJ2dpdCBibGFtZScgWy1jXSBbLWJdIFstbF0gWy0tcm9vdF0gWy10XSBbLWZdIFstbl0gWy1zXSBbLWVdIFstcF0gWy13XSBbLS1pbmNyZW1lbnRhbF0KKwkgICAgWy1MIG4sbSB8IC1MIDpmbl0gWy1TIDxyZXZzLWZpbGU+XSBbLU1dIFstQ10gWy1DXSBbLUNdIFstLXNpbmNlPTxkYXRlPl0KKwkgICAgWy0tYWJicmV2PTxuPl0gWzxyZXY+IHwgLS1jb250ZW50cyA8ZmlsZT4gfCAtLXJldmVyc2UgPHJldj5dIFstLV0gPGZpbGU+CiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2F0LWZpbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2F0LWZpbGUudHh0CmluZGV4IDMwZDU4NWEuLjEwZmJjNmEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNhdC1maWxlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jYXQtZmlsZS50eHQKQEAgLTU4LDEyICs1OCwxNiBAQAogCXRvIGFwcGx5IHRoZSBmaWx0ZXIgdG8gdGhlIGNvbnRlbnQgcmVjb3JkZWQgaW4gdGhlIGluZGV4IGF0IDxwYXRoPi4KIAogLS1iYXRjaDo6Ci0JUHJpbnQgdGhlIFNIQS0xLCB0eXBlLCBzaXplLCBhbmQgY29udGVudHMgb2YgZWFjaCBvYmplY3QgcHJvdmlkZWQgb24KLQlzdGRpbi4gTWF5IG5vdCBiZSBjb21iaW5lZCB3aXRoIGFueSBvdGhlciBvcHRpb25zIG9yIGFyZ3VtZW50cy4KKy0tYmF0Y2g9PGZvcm1hdD46OgorCVByaW50IG9iamVjdCBpbmZvcm1hdGlvbiBhbmQgY29udGVudHMgZm9yIGVhY2ggb2JqZWN0IHByb3ZpZGVkCisJb24gc3RkaW4uICBNYXkgbm90IGJlIGNvbWJpbmVkIHdpdGggYW55IG90aGVyIG9wdGlvbnMgb3IgYXJndW1lbnRzLgorCVNlZSB0aGUgc2VjdGlvbiBgQkFUQ0ggT1VUUFVUYCBiZWxvdyBmb3IgZGV0YWlscy4KIAogLS1iYXRjaC1jaGVjazo6Ci0JUHJpbnQgdGhlIFNIQS0xLCB0eXBlLCBhbmQgc2l6ZSBvZiBlYWNoIG9iamVjdCBwcm92aWRlZCBvbiBzdGRpbi4gTWF5IG5vdAotCWJlIGNvbWJpbmVkIHdpdGggYW55IG90aGVyIG9wdGlvbnMgb3IgYXJndW1lbnRzLgorLS1iYXRjaC1jaGVjaz08Zm9ybWF0Pjo6CisJUHJpbnQgb2JqZWN0IGluZm9ybWF0aW9uIGZvciBlYWNoIG9iamVjdCBwcm92aWRlZCBvbiBzdGRpbi4gIE1heQorCW5vdCBiZSBjb21iaW5lZCB3aXRoIGFueSBvdGhlciBvcHRpb25zIG9yIGFyZ3VtZW50cy4gIFNlZSB0aGUKKwlzZWN0aW9uIGBCQVRDSCBPVVRQVVRgIGJlbG93IGZvciBkZXRhaWxzLgogCiBPVVRQVVQKIC0tLS0tLQpAQCAtNzgsMjggKzgyLDc1IEBACiBJZiA8dHlwZT4gaXMgc3BlY2lmaWVkLCB0aGUgcmF3ICh0aG91Z2ggdW5jb21wcmVzc2VkKSBjb250ZW50cyBvZiB0aGUgPG9iamVjdD4KIHdpbGwgYmUgcmV0dXJuZWQuCiAKLUlmICctLWJhdGNoJyBpcyBzcGVjaWZpZWQsIG91dHB1dCBvZiB0aGUgZm9sbG93aW5nIGZvcm0gaXMgcHJpbnRlZCBmb3IgZWFjaAotb2JqZWN0IHNwZWNpZmllZCBvbiBzdGRpbjoKK0JBVENIIE9VVFBVVAorLS0tLS0tLS0tLS0tCisKK0lmIGAtLWJhdGNoYCBvciBgLS1iYXRjaC1jaGVja2AgaXMgZ2l2ZW4sIGBjYXQtZmlsZWAgd2lsbCByZWFkIG9iamVjdHMKK2Zyb20gc3RkaW4sIG9uZSBwZXIgbGluZSwgYW5kIHByaW50IGluZm9ybWF0aW9uIGFib3V0IHRoZW0uCisKK0VhY2ggbGluZSBpcyBjb25zaWRlcmVkIGFzIGEgd2hvbGUgb2JqZWN0IG5hbWUsIGFuZCBpcyBwYXJzZWQgYXMgaWYKK2dpdmVuIHRvIGxpbmtnaXQ6Z2l0LXJldi1wYXJzZVsxXS4KKworWW91IGNhbiBzcGVjaWZ5IHRoZSBpbmZvcm1hdGlvbiBzaG93biBmb3IgZWFjaCBvYmplY3QgYnkgdXNpbmcgYSBjdXN0b20KK2A8Zm9ybWF0PmAuIFRoZSBgPGZvcm1hdD5gIGlzIGNvcGllZCBsaXRlcmFsbHkgdG8gc3Rkb3V0IGZvciBlYWNoCitvYmplY3QsIHdpdGggcGxhY2Vob2xkZXJzIG9mIHRoZSBmb3JtIGAlKGF0b20pYCBleHBhbmRlZCwgZm9sbG93ZWQgYnkgYQorbmV3bGluZS4gVGhlIGF2YWlsYWJsZSBhdG9tcyBhcmU6CisKK2BvYmplY3RuYW1lYDo6CisJVGhlIDQwLWhleCBvYmplY3QgbmFtZSBvZiB0aGUgb2JqZWN0LgorCitgb2JqZWN0dHlwZWA6OgorCVRoZSB0eXBlIG9mIG9mIHRoZSBvYmplY3QgKHRoZSBzYW1lIGFzIGBjYXQtZmlsZSAtdGAgcmVwb3J0cykuCisKK2BvYmplY3RzaXplYDo6CisJVGhlIHNpemUsIGluIGJ5dGVzLCBvZiB0aGUgb2JqZWN0ICh0aGUgc2FtZSBhcyBgY2F0LWZpbGUgLXNgCisJcmVwb3J0cykuCisKK2BvYmplY3RzaXplOmRpc2tgOjoKKwlUaGUgc2l6ZSwgaW4gYnl0ZXMsIHRoYXQgdGhlIG9iamVjdCB0YWtlcyB1cCBvbiBkaXNrLiBTZWUgdGhlCisJbm90ZSBhYm91dCBvbi1kaXNrIHNpemVzIGluIHRoZSBgQ0FWRUFUU2Agc2VjdGlvbiBiZWxvdy4KKworSWYgbm8gZm9ybWF0IGlzIHNwZWNpZmllZCwgdGhlIGRlZmF1bHQgZm9ybWF0IGlzIGAlKG9iamVjdG5hbWUpCislKG9iamVjdHR5cGUpICUob2JqZWN0c2l6ZSlgLgorCitJZiBgLS1iYXRjaGAgaXMgc3BlY2lmaWVkLCB0aGUgb2JqZWN0IGluZm9ybWF0aW9uIGlzIGZvbGxvd2VkIGJ5IHRoZQorb2JqZWN0IGNvbnRlbnRzIChjb25zaXN0aW5nIG9mIGAlKG9iamVjdHNpemUpYCBieXRlcyksIGZvbGxvd2VkIGJ5IGEKK25ld2xpbmUuCisKK0ZvciBleGFtcGxlLCBgLS1iYXRjaGAgd2l0aG91dCBhIGN1c3RvbSBmb3JtYXQgd291bGQgcHJvZHVjZToKIAogLS0tLS0tLS0tLS0tCiA8c2hhMT4gU1AgPHR5cGU+IFNQIDxzaXplPiBMRgogPGNvbnRlbnRzPiBMRgogLS0tLS0tLS0tLS0tCiAKLUlmICctLWJhdGNoLWNoZWNrJyBpcyBzcGVjaWZpZWQsIG91dHB1dCBvZiB0aGUgZm9sbG93aW5nIGZvcm0gaXMgcHJpbnRlZCBmb3IKLWVhY2ggb2JqZWN0IHNwZWNpZmllZCBvbiBzdGRpbjoKK1doZXJlYXMgYC0tYmF0Y2gtY2hlY2s9JyUob2JqZWN0bmFtZSkgJShvYmplY3R0eXBlKSdgIHdvdWxkIHByb2R1Y2U6CiAKIC0tLS0tLS0tLS0tLQotPHNoYTE+IFNQIDx0eXBlPiBTUCA8c2l6ZT4gTEYKKzxzaGExPiBTUCA8dHlwZT4gTEYKIC0tLS0tLS0tLS0tLQogCi1Gb3IgYm90aCAnLS1iYXRjaCcgYW5kICctLWJhdGNoLWNoZWNrJywgb3V0cHV0IG9mIHRoZSBmb2xsb3dpbmcgZm9ybSBpcyBwcmludGVkCi1mb3IgZWFjaCBvYmplY3Qgc3BlY2lmaWVkIG9uIHN0ZGluIHRoYXQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIHJlcG9zaXRvcnk6CitJZiBhIG5hbWUgaXMgc3BlY2lmaWVkIG9uIHN0ZGluIHRoYXQgY2Fubm90IGJlIHJlc29sdmVkIHRvIGFuIG9iamVjdCBpbgordGhlIHJlcG9zaXRvcnksIHRoZW4gYGNhdC1maWxlYCB3aWxsIGlnbm9yZSBhbnkgY3VzdG9tIGZvcm1hdCBhbmQgcHJpbnQ6CiAKIC0tLS0tLS0tLS0tLQogPG9iamVjdD4gU1AgbWlzc2luZyBMRgogLS0tLS0tLS0tLS0tCiAKKworQ0FWRUFUUworLS0tLS0tLQorCitOb3RlIHRoYXQgdGhlIHNpemVzIG9mIG9iamVjdHMgb24gZGlzayBhcmUgcmVwb3J0ZWQgYWNjdXJhdGVseSwgYnV0IGNhcmUKK3Nob3VsZCBiZSB0YWtlbiBpbiBkcmF3aW5nIGNvbmNsdXNpb25zIGFib3V0IHdoaWNoIHJlZnMgb3Igb2JqZWN0cyBhcmUKK3Jlc3BvbnNpYmxlIGZvciBkaXNrIHVzYWdlLiBUaGUgc2l6ZSBvZiBhIHBhY2tlZCBub24tZGVsdGEgb2JqZWN0IG1heSBiZQorbXVjaCBsYXJnZXIgdGhhbiB0aGUgc2l6ZSBvZiBvYmplY3RzIHdoaWNoIGRlbHRhIGFnYWluc3QgaXQsIGJ1dCB0aGUKK2Nob2ljZSBvZiB3aGljaCBvYmplY3QgaXMgdGhlIGJhc2UgYW5kIHdoaWNoIGlzIHRoZSBkZWx0YSBpcyBhcmJpdHJhcnkKK2FuZCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBkdXJpbmcgYSByZXBhY2suIE5vdGUgYWxzbyB0aGF0IG11bHRpcGxlIGNvcGllcworb2YgYW4gb2JqZWN0IG1heSBiZSBwcmVzZW50IGluIHRoZSBvYmplY3QgZGF0YWJhc2U7IGluIHRoaXMgY2FzZSwgaXQgaXMKK3VuZGVmaW5lZCB3aGljaCBjb3B5J3Mgc2l6ZSB3aWxsIGJlIHJlcG9ydGVkLgorCisKIEdJVAogLS0tCiBQYXJ0IG9mIHRoZSBsaW5rZ2l0OmdpdFsxXSBzdWl0ZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stYXR0ci50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dAppbmRleCA1YWJkYmFhLi5hN2JlODBkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1hdHRyLnR4dApAQCAtNTYsNiArNTYsMTEgQEAKICdzZXQnOzsJCXdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBkZWZpbmVkIGFzIHRydWUuCiA8dmFsdWU+OzsJd2hlbiBhIHZhbHVlIGhhcyBiZWVuIGFzc2lnbmVkIHRvIHRoZSBhdHRyaWJ1dGUuCiAKK0J1ZmZlcmluZyBoYXBwZW5zIGFzIGRvY3VtZW50ZWQgdW5kZXIgdGhlIGBHSVRfRkxVU0hgIG9wdGlvbiBpbgorbGlua2dpdDpnaXRbMV0uICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBhdm9pZGluZyBkZWFkbG9ja3MKK2NhdXNlZCBieSBvdmVyZmlsbGluZyBhbiBpbnB1dCBidWZmZXIgb3IgcmVhZGluZyBmcm9tIGFuIGVtcHR5IG91dHB1dAorYnVmZmVyLgorCiBFWEFNUExFUwogLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2staWdub3JlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWlnbm9yZS50eHQKaW5kZXggN2Y1NjAxYi4uZDJkZjQ4NyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2staWdub3JlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1pZ25vcmUudHh0CkBAIC0zOSw2ICszOSwxMiBAQAogCWJlbG93KS4gIElmIGAtLXN0ZGluYCBpcyBhbHNvIGdpdmVuLCBpbnB1dCBwYXRocyBhcmUgc2VwYXJhdGVkCiAJd2l0aCBhIE5VTCBjaGFyYWN0ZXIgaW5zdGVhZCBvZiBhIGxpbmVmZWVkIGNoYXJhY3Rlci4KIAorLW4sIC0tbm9uLW1hdGNoaW5nOjoKKwlTaG93IGdpdmVuIHBhdGhzIHdoaWNoIGRvbid0IG1hdGNoIGFueSBwYXR0ZXJuLgkgVGhpcyBvbmx5CisJbWFrZXMgc2Vuc2Ugd2hlbiBgLS12ZXJib3NlYCBpcyBlbmFibGVkLCBvdGhlcndpc2UgaXQgd291bGQKKwlub3QgYmUgcG9zc2libGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBwYXRocyB3aGljaCBtYXRjaCBhCisJcGF0dGVybiBhbmQgdGhvc2Ugd2hpY2ggZG9uJ3QuCisKIE9VVFBVVAogLS0tLS0tCiAKQEAgLTY1LDYgKzcxLDIwIEBACiAKIDxzb3VyY2U+IDxOVUxMPiA8bGluZW51bT4gPE5VTEw+IDxwYXR0ZXJuPiA8TlVMTD4gPHBhdGhuYW1lPiA8TlVMTD4KIAorSWYgYC1uYCBvciBgLS1ub24tbWF0Y2hpbmdgIGFyZSBzcGVjaWZpZWQsIG5vbi1tYXRjaGluZyBwYXRobmFtZXMgd2lsbAorYWxzbyBiZSBvdXRwdXQsIGluIHdoaWNoIGNhc2UgYWxsIGZpZWxkcyBpbiBlYWNoIG91dHB1dCByZWNvcmQgZXhjZXB0Citmb3IgPHBhdGhuYW1lPiB3aWxsIGJlIGVtcHR5LiAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZW4gcnVubmluZworbm9uLWludGVyYWN0aXZlbHksIHNvIHRoYXQgZmlsZXMgY2FuIGJlIGluY3JlbWVudGFsbHkgc3RyZWFtZWQgdG8KK1NURElOIG9mIGEgbG9uZy1ydW5uaW5nIGNoZWNrLWlnbm9yZSBwcm9jZXNzLCBhbmQgZm9yIGVhY2ggb2YgdGhlc2UKK2ZpbGVzLCBTVERPVVQgd2lsbCBpbmRpY2F0ZSB3aGV0aGVyIHRoYXQgZmlsZSBtYXRjaGVkIGEgcGF0dGVybiBvcgorbm90LiAgKFdpdGhvdXQgdGhpcyBvcHRpb24sIGl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gdGVsbCB3aGV0aGVyIHRoZQorYWJzZW5jZSBvZiBvdXRwdXQgZm9yIGEgZ2l2ZW4gZmlsZSBtZWFudCB0aGF0IGl0IGRpZG4ndCBtYXRjaCBhbnkKK3BhdHRlcm4sIG9yIHRoYXQgdGhlIG91dHB1dCBoYWRuJ3QgYmVlbiBnZW5lcmF0ZWQgeWV0LikKKworQnVmZmVyaW5nIGhhcHBlbnMgYXMgZG9jdW1lbnRlZCB1bmRlciB0aGUgYEdJVF9GTFVTSGAgb3B0aW9uIGluCitsaW5rZ2l0OmdpdFsxXS4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIGF2b2lkaW5nIGRlYWRsb2NrcworY2F1c2VkIGJ5IG92ZXJmaWxsaW5nIGFuIGlucHV0IGJ1ZmZlciBvciByZWFkaW5nIGZyb20gYW4gZW1wdHkgb3V0cHV0CitidWZmZXIuCiAKIEVYSVQgU1RBVFVTCiAtLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stbWFpbG1hcC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1tYWlsbWFwLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTAyOGVlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stbWFpbG1hcC50eHQKQEAgLTAsMCArMSw0NyBAQAorZ2l0LWNoZWNrLW1haWxtYXAoMSkKKz09PT09PT09PT09PT09PT09PT09CisKK05BTUUKKy0tLS0KK2dpdC1jaGVjay1tYWlsbWFwIC0gU2hvdyBjYW5vbmljYWwgbmFtZXMgYW5kIGVtYWlsIGFkZHJlc3NlcyBvZiBjb250YWN0cworCisKK1NZTk9QU0lTCistLS0tLS0tLQorW3ZlcnNlXQorJ2dpdCBjaGVjay1tYWlsbWFwJyBbb3B0aW9uc10gPGNvbnRhY3Q+Li4uCisKKworREVTQ1JJUFRJT04KKy0tLS0tLS0tLS0tCisKK0ZvciBlYWNoIGBgTmFtZSAkJDx1c2VyQGhvc3Q+JCQnJyBvciBgYCQkPHVzZXJAaG9zdD4kJCcnIGZyb20gdGhlIGNvbW1hbmQtbGluZQorb3Igc3RhbmRhcmQgaW5wdXQgKHdoZW4gdXNpbmcgYC0tc3RkaW5gKSwgbG9vayB1cCB0aGUgcGVyc29uJ3MgY2Fub25pY2FsIG5hbWUKK2FuZCBlbWFpbCBhZGRyZXNzIChzZWUgIk1hcHBpbmcgQXV0aG9ycyIgYmVsb3cpLiBJZiBmb3VuZCwgcHJpbnQgdGhlbTsKK290aGVyd2lzZSBwcmludCB0aGUgaW5wdXQgYXMtaXMuCisKKworT1BUSU9OUworLS0tLS0tLQorLS1zdGRpbjo6CisJUmVhZCBjb250YWN0cywgb25lIHBlciBsaW5lLCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCBhZnRlciBleGhhdXN0aW5nCisJY29udGFjdHMgcHJvdmlkZWQgb24gdGhlIGNvbW1hbmQtbGluZS4KKworCitPVVRQVVQKKy0tLS0tLQorCitGb3IgZWFjaCBjb250YWN0LCBhIHNpbmdsZSBsaW5lIGlzIG91dHB1dCwgdGVybWluYXRlZCBieSBhIG5ld2xpbmUuICBJZiB0aGUKK25hbWUgaXMgcHJvdmlkZWQgb3Iga25vd24gdG8gdGhlICdtYWlsbWFwJywgYGBOYW1lICQkPHVzZXJAaG9zdD4kJCcnIGlzCitwcmludGVkOyBvdGhlcndpc2Ugb25seSBgYCQkPHVzZXJAaG9zdD4kJCcnIGlzIHByaW50ZWQuCisKKworTUFQUElORyBBVVRIT1JTCistLS0tLS0tLS0tLS0tLS0KKworaW5jbHVkZTo6bWFpbG1hcC50eHRbXQorCisKK0dJVAorLS0tCitQYXJ0IG9mIHRoZSBsaW5rZ2l0OmdpdFsxXSBzdWl0ZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stcmVmLWZvcm1hdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1yZWYtZm9ybWF0LnR4dAppbmRleCBhNDliZTFiLi5mYzAyOTU5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1yZWYtZm9ybWF0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1yZWYtZm9ybWF0LnR4dApAQCAtNTQsNiArNTQsOCBAQAogCiAuIFRoZXkgY2Fubm90IGNvbnRhaW4gYSBzZXF1ZW5jZSBgQHtgLgogCisuIFRoZXkgY2Fubm90IGJlIHRoZSBzaW5nbGUgY2hhcmFjdGVyIGBAYC4KKwogLiBUaGV5IGNhbm5vdCBjb250YWluIGEgYFxgLgogCiBUaGVzZSBydWxlcyBtYWtlIGl0IGVhc3kgZm9yIHNoZWxsIHNjcmlwdCBiYXNlZCB0b29scyB0byBwYXJzZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY2xlYW4udHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2xlYW4udHh0CmluZGV4IGJkYzNhYjguLjg5OTc5MjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWNsZWFuLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jbGVhbi50eHQKQEAgLTgsNyArOCw3IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgY2xlYW4nIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGg+Li4uCisnZ2l0IGNsZWFuJyBbLWRdIFstZl0gWy1pXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGg+Li4uCiAKIERFU0NSSVBUSU9OCiAtLS0tLS0tLS0tLQpAQCAtMzQsNyArMzQsMTMgQEAKIC1mOjoKIC0tZm9yY2U6OgogCUlmIHRoZSBHaXQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBjbGVhbi5yZXF1aXJlRm9yY2UgaXMgbm90IHNldAotCXRvIGZhbHNlLCAnZ2l0IGNsZWFuJyB3aWxsIHJlZnVzZSB0byBydW4gdW5sZXNzIGdpdmVuIC1mIG9yIC1uLgorCXRvIGZhbHNlLCAnZ2l0IGNsZWFuJyB3aWxsIHJlZnVzZSB0byBydW4gdW5sZXNzIGdpdmVuIC1mLCAtbiBvcgorCS1pLgorCistaTo6CistLWludGVyYWN0aXZlOjoKKwlTaG93IHdoYXQgd291bGQgYmUgZG9uZSBhbmQgY2xlYW4gZmlsZXMgaW50ZXJhY3RpdmVseS4gU2VlCisJYGBJbnRlcmFjdGl2ZSBtb2RlJycgZm9yIGRldGFpbHMuCiAKIC1uOjoKIC0tZHJ5LXJ1bjo6CkBAIC02Myw2ICs2OSw2NyBAQAogCVJlbW92ZSBvbmx5IGZpbGVzIGlnbm9yZWQgYnkgR2l0LiAgVGhpcyBtYXkgYmUgdXNlZnVsIHRvIHJlYnVpbGQKIAlldmVyeXRoaW5nIGZyb20gc2NyYXRjaCwgYnV0IGtlZXAgbWFudWFsbHkgY3JlYXRlZCBmaWxlcy4KIAorSW50ZXJhY3RpdmUgbW9kZQorLS0tLS0tLS0tLS0tLS0tLQorV2hlbiB0aGUgY29tbWFuZCBlbnRlcnMgdGhlIGludGVyYWN0aXZlIG1vZGUsIGl0IHNob3dzIHRoZQorZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIGJlIGNsZWFuZWQsIGFuZCBnb2VzIGludG8gaXRzCitpbnRlcmFjdGl2ZSBjb21tYW5kIGxvb3AuCisKK1RoZSBjb21tYW5kIGxvb3Agc2hvd3MgdGhlIGxpc3Qgb2Ygc3ViY29tbWFuZHMgYXZhaWxhYmxlLCBhbmQKK2dpdmVzIGEgcHJvbXB0ICJXaGF0IG5vdz4gIi4gIEluIGdlbmVyYWwsIHdoZW4gdGhlIHByb21wdCBlbmRzCit3aXRoIGEgc2luZ2xlICc+JywgeW91IGNhbiBwaWNrIG9ubHkgb25lIG9mIHRoZSBjaG9pY2VzIGdpdmVuCithbmQgdHlwZSByZXR1cm4sIGxpa2UgdGhpczoKKworLS0tLS0tLS0tLS0tCisgICAgKioqIENvbW1hbmRzICoqKgorCTE6IGNsZWFuICAgICAgICAgICAgICAgIDI6IGZpbHRlciBieSBwYXR0ZXJuICAgIDM6IHNlbGVjdCBieSBudW1iZXJzCisJNDogYXNrIGVhY2ggICAgICAgICAgICAgNTogcXVpdCAgICAgICAgICAgICAgICAgNjogaGVscAorICAgIFdoYXQgbm93PiAxCistLS0tLS0tLS0tLS0KKworWW91IGFsc28gY291bGQgc2F5IGBjYCBvciBgY2xlYW5gIGFib3ZlIGFzIGxvbmcgYXMgdGhlIGNob2ljZSBpcyB1bmlxdWUuCisKK1RoZSBtYWluIGNvbW1hbmQgbG9vcCBoYXMgNiBzdWJjb21tYW5kcy4KKworY2xlYW46OgorCisgICBTdGFydCBjbGVhbmluZyBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGFuZCB0aGVuIHF1aXQuCisKK2ZpbHRlciBieSBwYXR0ZXJuOjoKKworICAgVGhpcyBzaG93cyB0aGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIGJlIGRlbGV0ZWQgYW5kIGlzc3VlcyBhbgorICAgIklucHV0IGlnbm9yZSBwYXR0ZXJucz4+IiBwcm9tcHQuIFlvdSBjYW4gaW5wdXQgc3BhY2Utc2VwZXJhdGVkCisgICBwYXR0ZXJucyB0byBleGNsdWRlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmcm9tIGRlbGV0aW9uLgorICAgRS5nLiAiKi5jICouaCIgd2lsbCBleGNsdWRlcyBmaWxlcyBlbmQgd2l0aCAiLmMiIGFuZCAiLmgiIGZyb20KKyAgIGRlbGV0aW9uLiBXaGVuIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggdGhlIGZpbHRlcmVkIHJlc3VsdCwgcHJlc3MKKyAgIEVOVEVSIChlbXB0eSkgYmFjayB0byB0aGUgbWFpbiBtZW51LgorCitzZWxlY3QgYnkgbnVtYmVyczo6CisKKyAgIFRoaXMgc2hvd3MgdGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byBiZSBkZWxldGVkIGFuZCBpc3N1ZXMgYW4KKyAgICJTZWxlY3QgaXRlbXMgdG8gZGVsZXRlPj4iIHByb21wdC4gV2hlbiB0aGUgcHJvbXB0IGVuZHMgd2l0aCBkb3VibGUKKyAgICc+PicgbGlrZSB0aGlzLCB5b3UgY2FuIG1ha2UgbW9yZSB0aGFuIG9uZSBzZWxlY3Rpb24sIGNvbmNhdGVuYXRlZAorICAgd2l0aCB3aGl0ZXNwYWNlIG9yIGNvbW1hLiAgQWxzbyB5b3UgY2FuIHNheSByYW5nZXMuICBFLmcuICIyLTUgNyw5IgorICAgdG8gY2hvb3NlIDIsMyw0LDUsNyw5IGZyb20gdGhlIGxpc3QuICBJZiB0aGUgc2Vjb25kIG51bWJlciBpbiBhCisgICByYW5nZSBpcyBvbWl0dGVkLCBhbGwgcmVtYWluaW5nIGl0ZW1zIGFyZSBzZWxlY3RlZC4gIEUuZy4gIjctIiB0bworICAgY2hvb3NlIDcsOCw5IGZyb20gdGhlIGxpc3QuICBZb3UgY2FuIHNheSAnKicgdG8gY2hvb3NlIGV2ZXJ5dGhpbmcuCisgICBBbHNvIHdoZW4geW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB0aGUgZmlsdGVyZWQgcmVzdWx0LCBwcmVzcyBFTlRFUgorICAgKGVtcHR5KSBiYWNrIHRvIHRoZSBtYWluIG1lbnUuCisKK2FzayBlYWNoOjoKKworICBUaGlzIHdpbGwgc3RhcnQgdG8gY2xlYW4sIGFuZCB5b3UgbXVzdCBjb25maXJtIG9uZSBieSBvbmUgaW4gb3JkZXIKKyAgdG8gZGVsZXRlIGl0ZW1zLiBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgYWN0aW9uIGlzIG5vdCBhcyBlZmZpY2llbnQKKyAgYXMgdGhlIGFib3ZlIHR3byBhY3Rpb25zLgorCitxdWl0OjoKKworICBUaGlzIGxldHMgeW91IHF1aXQgd2l0aG91dCBkbyBjbGVhbmluZy4KKworaGVscDo6CisKKyAgU2hvdyBicmllZiB1c2FnZSBvZiBpbnRlcmFjdGl2ZSBnaXQtY2xlYW4uCisKIFNFRSBBTFNPCiAtLS0tLS0tLQogbGlua2dpdDpnaXRpZ25vcmVbNV0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNsb25lLnR4dAppbmRleCBhMDcyN2Q3Li40NTBmMTU4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jbG9uZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2xvbmUudHh0CkBAIC0yMzksOCArMjM5LDggQEAKICogQ2xvbmUgZnJvbSB1cHN0cmVhbToKICsKIC0tLS0tLS0tLS0tLQotJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS8uLi4vbGludXgtMi42IG15Mi42Ci0kIGNkIG15Mi42CiskIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtLy4uLi9saW51eC5naXQgbXktbGludXgKKyQgY2QgbXktbGludXgKICQgbWFrZQogLS0tLS0tLS0tLS0tCiAKQEAgLTI1NywxMCArMjU3LDEwIEBACiAqIENsb25lIGZyb20gdXBzdHJlYW0gd2hpbGUgYm9ycm93aW5nIGZyb20gYW4gZXhpc3RpbmcgbG9jYWwgZGlyZWN0b3J5OgogKwogLS0tLS0tLS0tLS0tCi0kIGdpdCBjbG9uZSAtLXJlZmVyZW5jZSBteTIuNiBcCi0JZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS8uLi4vbGludXgtMi43IFwKLQlteTIuNwotJCBjZCBteTIuNworJCBnaXQgY2xvbmUgLS1yZWZlcmVuY2UgL2dpdC9saW51eC5naXQgXAorCWdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vLi4uL2xpbnV4LmdpdCBcCisJbXktbGludXgKKyQgY2QgbXktbGludXgKIC0tLS0tLS0tLS0tLQogCiAKQEAgLTI3MSwxMyArMjcxLDYgQEAKIC0tLS0tLS0tLS0tLQogCiAKLSogQ3JlYXRlIGEgcmVwb3NpdG9yeSBvbiB0aGUga2VybmVsLm9yZyBtYWNoaW5lIHRoYXQgYm9ycm93cyBmcm9tIExpbnVzOgotKwotLS0tLS0tLS0tLS0tCi0kIGdpdCBjbG9uZSAtLWJhcmUgLWwgLXMgL3B1Yi9zY20vLi4uL3RvcnZhbGRzL2xpbnV4LTIuNi5naXQgXAotICAgIC9wdWIvc2NtLy4uLi9tZS9zdWJzeXMtMi42LmdpdAotLS0tLS0tLS0tLS0tCi0KIEdJVAogLS0tCiBQYXJ0IG9mIHRoZSBsaW5rZ2l0OmdpdFsxXSBzdWl0ZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtY29uZmlnLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWNvbmZpZy50eHQKaW5kZXggZmJhZDA1ZS4uMmRiZTQ4NiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1jb25maWcudHh0CkBAIC05NiwyOSArOTYsMzEgQEAKIAluYW1lcyBhcmUgbm90LgogCiAtLWdsb2JhbDo6Ci0JRm9yIHdyaXRpbmcgb3B0aW9uczogd3JpdGUgdG8gZ2xvYmFsIH4vLmdpdGNvbmZpZyBmaWxlIHJhdGhlciB0aGFuCi0JdGhlIHJlcG9zaXRvcnkgLmdpdC9jb25maWcsIHdyaXRlIHRvICRYREdfQ09ORklHX0hPTUUvZ2l0L2NvbmZpZyBmaWxlCi0JaWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgdGhlIH4vLmdpdGNvbmZpZyBmaWxlIGRvZXNuJ3QuCisJRm9yIHdyaXRpbmcgb3B0aW9uczogd3JpdGUgdG8gZ2xvYmFsIGB+Ly5naXRjb25maWdgIGZpbGUKKwlyYXRoZXIgdGhhbiB0aGUgcmVwb3NpdG9yeSBgLmdpdC9jb25maWdgLCB3cml0ZSB0bworCWAkWERHX0NPTkZJR19IT01FL2dpdC9jb25maWdgIGZpbGUgaWYgdGhpcyBmaWxlIGV4aXN0cyBhbmQgdGhlCisJYH4vLmdpdGNvbmZpZ2AgZmlsZSBkb2Vzbid0LgogKwotRm9yIHJlYWRpbmcgb3B0aW9uczogcmVhZCBvbmx5IGZyb20gZ2xvYmFsIH4vLmdpdGNvbmZpZyBhbmQgZnJvbQotJFhER19DT05GSUdfSE9NRS9naXQvY29uZmlnIHJhdGhlciB0aGFuIGZyb20gYWxsIGF2YWlsYWJsZSBmaWxlcy4KK0ZvciByZWFkaW5nIG9wdGlvbnM6IHJlYWQgb25seSBmcm9tIGdsb2JhbCBgfi8uZ2l0Y29uZmlnYCBhbmQgZnJvbQorYCRYREdfQ09ORklHX0hPTUUvZ2l0L2NvbmZpZ2AgcmF0aGVyIHRoYW4gZnJvbSBhbGwgYXZhaWxhYmxlIGZpbGVzLgogKwogU2VlIGFsc28gPDxGSUxFUz4+LgogCiAtLXN5c3RlbTo6Ci0JRm9yIHdyaXRpbmcgb3B0aW9uczogd3JpdGUgdG8gc3lzdGVtLXdpZGUgJChwcmVmaXgpL2V0Yy9naXRjb25maWcKLQlyYXRoZXIgdGhhbiB0aGUgcmVwb3NpdG9yeSAuZ2l0L2NvbmZpZy4KKwlGb3Igd3JpdGluZyBvcHRpb25zOiB3cml0ZSB0byBzeXN0ZW0td2lkZQorCWAkKHByZWZpeCkvZXRjL2dpdGNvbmZpZ2AgcmF0aGVyIHRoYW4gdGhlIHJlcG9zaXRvcnkKKwlgLmdpdC9jb25maWdgLgogKwotRm9yIHJlYWRpbmcgb3B0aW9uczogcmVhZCBvbmx5IGZyb20gc3lzdGVtLXdpZGUgJChwcmVmaXgpL2V0Yy9naXRjb25maWcKK0ZvciByZWFkaW5nIG9wdGlvbnM6IHJlYWQgb25seSBmcm9tIHN5c3RlbS13aWRlIGAkKHByZWZpeCkvZXRjL2dpdGNvbmZpZ2AKIHJhdGhlciB0aGFuIGZyb20gYWxsIGF2YWlsYWJsZSBmaWxlcy4KICsKIFNlZSBhbHNvIDw8RklMRVM+Pi4KIAogLS1sb2NhbDo6Ci0JRm9yIHdyaXRpbmcgb3B0aW9uczogd3JpdGUgdG8gdGhlIHJlcG9zaXRvcnkgLmdpdC9jb25maWcgZmlsZS4KKwlGb3Igd3JpdGluZyBvcHRpb25zOiB3cml0ZSB0byB0aGUgcmVwb3NpdG9yeSBgLmdpdC9jb25maWdgIGZpbGUuCiAJVGhpcyBpcwl0aGUgZGVmYXVsdCBiZWhhdmlvci4KICsKLUZvciByZWFkaW5nIG9wdGlvbnM6IHJlYWQgb25seSBmcm9tIHRoZSByZXBvc2l0b3J5IC5naXQvY29uZmlnIHJhdGhlciB0aGFuCitGb3IgcmVhZGluZyBvcHRpb25zOiByZWFkIG9ubHkgZnJvbSB0aGUgcmVwb3NpdG9yeSBgLmdpdC9jb25maWdgIHJhdGhlciB0aGFuCiBmcm9tIGFsbCBhdmFpbGFibGUgZmlsZXMuCiArCiBTZWUgYWxzbyA8PEZJTEVTPj4uCkBAIC0xMjcsNiArMTI5LDEzIEBACiAtLWZpbGUgY29uZmlnLWZpbGU6OgogCVVzZSB0aGUgZ2l2ZW4gY29uZmlnIGZpbGUgaW5zdGVhZCBvZiB0aGUgb25lIHNwZWNpZmllZCBieSBHSVRfQ09ORklHLgogCistLWJsb2IgYmxvYjo6CisJU2ltaWxhciB0byAnLS1maWxlJyBidXQgdXNlIHRoZSBnaXZlbiBibG9iIGluc3RlYWQgb2YgYSBmaWxlLiBFLmcuCisJeW91IGNhbiB1c2UgJ21hc3RlcjouZ2l0bW9kdWxlcycgdG8gcmVhZCB2YWx1ZXMgZnJvbSB0aGUgZmlsZQorCScuZ2l0bW9kdWxlcycgaW4gdGhlIG1hc3RlciBicmFuY2guIFNlZSAiU1BFQ0lGWUlORyBSRVZJU0lPTlMiCisJc2VjdGlvbiBpbiBsaW5rZ2l0OmdpdHJldmlzaW9uc1s3XSBmb3IgYSBtb3JlIGNvbXBsZXRlIGxpc3Qgb2YKKwl3YXlzIHRvIHNwZWxsIGJsb2IgbmFtZXMuCisKIC0tcmVtb3ZlLXNlY3Rpb246OgogCVJlbW92ZSB0aGUgZ2l2ZW4gc2VjdGlvbiBmcm9tIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCiAKQEAgLTIwNiwyMyArMjE1LDIzIEBACiBJZiBub3Qgc2V0IGV4cGxpY2l0bHkgd2l0aCAnLS1maWxlJywgdGhlcmUgYXJlIGZvdXIgZmlsZXMgd2hlcmUKICdnaXQgY29uZmlnJyB3aWxsIHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zOgogCi0kR0lUX0RJUi9jb25maWc6OgotCVJlcG9zaXRvcnkgc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlLgorJChwcmVmaXgpL2V0Yy9naXRjb25maWc6OgorCVN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKworJFhER19DT05GSUdfSE9NRS9naXQvY29uZmlnOjoKKwlTZWNvbmQgdXNlci1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUuIElmICRYREdfQ09ORklHX0hPTUUgaXMgbm90IHNldAorCW9yIGVtcHR5LCBgJEhPTUUvLmNvbmZpZy9naXQvY29uZmlnYCB3aWxsIGJlIHVzZWQuIEFueSBzaW5nbGUtdmFsdWVkCisJdmFyaWFibGUgc2V0IGluIHRoaXMgZmlsZSB3aWxsIGJlIG92ZXJ3cml0dGVuIGJ5IHdoYXRldmVyIGlzIGluCisJYH4vLmdpdGNvbmZpZ2AuICBJdCBpcyBhIGdvb2QgaWRlYSBub3QgdG8gY3JlYXRlIHRoaXMgZmlsZSBpZgorCXlvdSBzb21ldGltZXMgdXNlIG9sZGVyIHZlcnNpb25zIG9mIEdpdCwgYXMgc3VwcG9ydCBmb3IgdGhpcworCWZpbGUgd2FzIGFkZGVkIGZhaXJseSByZWNlbnRseS4KIAogfi8uZ2l0Y29uZmlnOjoKIAlVc2VyLXNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZS4gQWxzbyBjYWxsZWQgImdsb2JhbCIKIAljb25maWd1cmF0aW9uIGZpbGUuCiAKLSRYREdfQ09ORklHX0hPTUUvZ2l0L2NvbmZpZzo6Ci0JU2Vjb25kIHVzZXItc3BlY2lmaWMgY29uZmlndXJhdGlvbiBmaWxlLiBJZiAkWERHX0NPTkZJR19IT01FIGlzIG5vdCBzZXQKLQlvciBlbXB0eSwgJEhPTUUvLmNvbmZpZy9naXQvY29uZmlnIHdpbGwgYmUgdXNlZC4gQW55IHNpbmdsZS12YWx1ZWQKLQl2YXJpYWJsZSBzZXQgaW4gdGhpcyBmaWxlIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgd2hhdGV2ZXIgaXMgaW4KLQl+Ly5naXRjb25maWcuICBJdCBpcyBhIGdvb2QgaWRlYSBub3QgdG8gY3JlYXRlIHRoaXMgZmlsZSBpZgotCXlvdSBzb21ldGltZXMgdXNlIG9sZGVyIHZlcnNpb25zIG9mIEdpdCwgYXMgc3VwcG9ydCBmb3IgdGhpcwotCWZpbGUgd2FzIGFkZGVkIGZhaXJseSByZWNlbnRseS4KLQotJChwcmVmaXgpL2V0Yy9naXRjb25maWc6OgotCVN5c3RlbS13aWRlIGNvbmZpZ3VyYXRpb24gZmlsZS4KKyRHSVRfRElSL2NvbmZpZzo6CisJUmVwb3NpdG9yeSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZpbGUuCiAKIElmIG5vIGZ1cnRoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCByZWFkaW5nIG9wdGlvbnMgd2lsbCByZWFkIGFsbCBvZiB0aGVzZQogZmlsZXMgdGhhdCBhcmUgYXZhaWxhYmxlLiBJZiB0aGUgZ2xvYmFsIG9yIHRoZSBzeXN0ZW0td2lkZSBjb25maWd1cmF0aW9uCkBAIC0yMzAsNiArMjM5LDEwIEBACiBmaWxlIGlzIG5vdCBhdmFpbGFibGUgb3IgcmVhZGFibGUsICdnaXQgY29uZmlnJyB3aWxsIGV4aXQgd2l0aCBhIG5vbi16ZXJvCiBlcnJvciBjb2RlLiBIb3dldmVyLCBpbiBuZWl0aGVyIGNhc2Ugd2lsbCBhbiBlcnJvciBtZXNzYWdlIGJlIGlzc3VlZC4KIAorVGhlIGZpbGVzIGFyZSByZWFkIGluIHRoZSBvcmRlciBnaXZlbiBhYm92ZSwgd2l0aCBsYXN0IHZhbHVlIGZvdW5kIHRha2luZworcHJlY2VkZW5jZSBvdmVyIHZhbHVlcyByZWFkIGVhcmxpZXIuICBXaGVuIG11bHRpcGxlIHZhbHVlcyBhcmUgdGFrZW4gdGhlbiBhbGwKK3ZhbHVlcyBvZiBhIGtleSBmcm9tIGFsbCBmaWxlcyB3aWxsIGJlIHVzZWQuCisKIEFsbCB3cml0aW5nIG9wdGlvbnMgd2lsbCBwZXIgZGVmYXVsdCB3cml0ZSB0byB0aGUgcmVwb3NpdG9yeSBzcGVjaWZpYwogY29uZmlndXJhdGlvbiBmaWxlLiBOb3RlIHRoYXQgdGhpcyBhbHNvIGFmZmVjdHMgb3B0aW9ucyBsaWtlICctLXJlcGxhY2UtYWxsJwogYW5kICctLXVuc2V0Jy4gKidnaXQgY29uZmlnJyB3aWxsIG9ubHkgZXZlciBjaGFuZ2Ugb25lIGZpbGUgYXQgYSB0aW1lKi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRlc2NyaWJlLnR4dAppbmRleCAyOGU1ZWMwLi45NDM5Y2Q2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1kZXNjcmliZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZGVzY3JpYmUudHh0CkBAIC04OCw2ICs4OCwxMSBAQAogLS1hbHdheXM6OgogCVNob3cgdW5pcXVlbHkgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjay4KIAorLS1maXJzdC1wYXJlbnQ6OgorCUZvbGxvdyBvbmx5IHRoZSBmaXJzdCBwYXJlbnQgY29tbWl0IHVwb24gc2VlaW5nIGEgbWVyZ2UgY29tbWl0LgorCVRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gbm90IG1hdGNoIHRhZ3Mgb24gYnJhbmNoZXMgbWVyZ2VkCisJaW4gdGhlIGhpc3Rvcnkgb2YgdGhlIHRhcmdldCBjb21taXQuCisKIEVYQU1QTEVTCiAtLS0tLS0tLQogCkBAIC0xNDksNyArMTU0LDkgQEAKIElmIGFuIGV4YWN0IG1hdGNoIHdhcyBub3QgZm91bmQsICdnaXQgZGVzY3JpYmUnIHdpbGwgd2FsayBiYWNrCiB0aHJvdWdoIHRoZSBjb21taXQgaGlzdG9yeSB0byBsb2NhdGUgYW4gYW5jZXN0b3IgY29tbWl0IHdoaWNoCiBoYXMgYmVlbiB0YWdnZWQuICBUaGUgYW5jZXN0b3IncyB0YWcgd2lsbCBiZSBvdXRwdXQgYWxvbmcgd2l0aCBhbgotYWJicmV2aWF0aW9uIG9mIHRoZSBpbnB1dCBjb21taXR0aXNoJ3MgU0hBLTEuCithYmJyZXZpYXRpb24gb2YgdGhlIGlucHV0IGNvbW1pdHRpc2gncyBTSEEtMS4gSWYgJy0tZmlyc3QtcGFyZW50JyB3YXMKK3NwZWNpZmllZCB0aGVuIHRoZSB3YWxrIHdpbGwgb25seSBjb25zaWRlciB0aGUgZmlyc3QgcGFyZW50IG9mIGVhY2gKK2NvbW1pdC4KIAogSWYgbXVsdGlwbGUgdGFncyB3ZXJlIGZvdW5kIGR1cmluZyB0aGUgd2FsayB0aGVuIHRoZSB0YWcgd2hpY2gKIGhhcyB0aGUgZmV3ZXN0IGNvbW1pdHMgZGlmZmVyZW50IGZyb20gdGhlIGlucHV0IGNvbW1pdHRpc2ggd2lsbCBiZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0CmluZGV4IGVmYjAzODAuLjg1ZjFmMzAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQKQEAgLTE0MSw3ICsxNDEsNyBAQAogLS0tLS0tLS0tLS0KIAogU2luY2UgJ2dpdCBmYXN0LWltcG9ydCcgY2Fubm90IHRhZyB0cmVlcywgeW91IHdpbGwgbm90IGJlCi1hYmxlIHRvIGV4cG9ydCB0aGUgbGludXgtMi42LmdpdCByZXBvc2l0b3J5IGNvbXBsZXRlbHksIGFzIGl0IGNvbnRhaW5zCithYmxlIHRvIGV4cG9ydCB0aGUgbGludXguZ2l0IHJlcG9zaXRvcnkgY29tcGxldGVseSwgYXMgaXQgY29udGFpbnMKIGEgdGFnIHJlZmVyZW5jaW5nIGEgdHJlZSBpbnN0ZWFkIG9mIGEgY29tbWl0LgogCiBHSVQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0CmluZGV4IDM5MTE4NzcuLmUzOTQyNzYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dApAQCAtMTg3LDYgKzE4NywyMSBAQAogCVRoZSBuZWdhdGVkIGZvcm0gYC0tbm8tY2NgIGRpc2NhcmRzIGFsbCBgQ2M6YCBoZWFkZXJzIGFkZGVkIHNvCiAJZmFyIChmcm9tIGNvbmZpZyBvciBjb21tYW5kIGxpbmUpLgogCistLWZyb206OgorLS1mcm9tPTxpZGVudD46OgorCVVzZSBgaWRlbnRgIGluIHRoZSBgRnJvbTpgIGhlYWRlciBvZiBlYWNoIGNvbW1pdCBlbWFpbC4gSWYgdGhlCisJYXV0aG9yIGlkZW50IG9mIHRoZSBjb21taXQgaXMgbm90IHRleHR1YWxseSBpZGVudGljYWwgdG8gdGhlCisJcHJvdmlkZWQgYGlkZW50YCwgcGxhY2UgYSBgRnJvbTpgIGhlYWRlciBpbiB0aGUgYm9keSBvZiB0aGUKKwltZXNzYWdlIHdpdGggdGhlIG9yaWdpbmFsIGF1dGhvci4gSWYgbm8gYGlkZW50YCBpcyBnaXZlbiwgdXNlCisJdGhlIGNvbW1pdHRlciBpZGVudC4KKysKK05vdGUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvbmx5IHVzZWZ1bCBpZiB5b3UgYXJlIGFjdHVhbGx5IHNlbmRpbmcgdGhlCitlbWFpbHMgYW5kIHdhbnQgdG8gaWRlbnRpZnkgeW91cnNlbGYgYXMgdGhlIHNlbmRlciwgYnV0IHJldGFpbiB0aGUKK29yaWdpbmFsIGF1dGhvciAoYW5kIGBnaXQgYW1gIHdpbGwgY29ycmVjdGx5IHBpY2sgdXAgdGhlIGluLWJvZHkKK2hlYWRlcikuIE5vdGUgYWxzbyB0aGF0IGBnaXQgc2VuZC1lbWFpbGAgYWxyZWFkeSBoYW5kbGVzIHRoaXMKK3RyYW5zZm9ybWF0aW9uIGZvciB5b3UsIGFuZCB0aGlzIG9wdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgaWYgeW91IGFyZQorZmVlZGluZyB0aGUgcmVzdWx0IHRvIGBnaXQgc2VuZC1lbWFpbGAuCisKIC0tYWRkLWhlYWRlcj08aGVhZGVyPjo6CiAJQWRkIGFuIGFyYml0cmFyeSBoZWFkZXIgdG8gdGhlIGVtYWlsIGhlYWRlcnMuICBUaGlzIGlzIGluIGFkZGl0aW9uCiAJdG8gYW55IGNvbmZpZ3VyZWQgaGVhZGVycywgYW5kIG1heSBiZSB1c2VkIG11bHRpcGxlIHRpbWVzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtZ2MudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtZ2MudHh0CmluZGV4IGIzNzBiMDIuLjI0MDJlZDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWdjLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1nYy50eHQKQEAgLTYyLDggKzYyLDkgQEAKIAogLS1wcnVuZT08ZGF0ZT46OgogCVBydW5lIGxvb3NlIG9iamVjdHMgb2xkZXIgdGhhbiBkYXRlIChkZWZhdWx0IGlzIDIgd2Vla3MgYWdvLAotCW92ZXJyaWRhYmxlIGJ5IHRoZSBjb25maWcgdmFyaWFibGUgYGdjLnBydW5lRXhwaXJlYCkuICBUaGlzCi0Jb3B0aW9uIGlzIG9uIGJ5IGRlZmF1bHQuCisJb3ZlcnJpZGFibGUgYnkgdGhlIGNvbmZpZyB2YXJpYWJsZSBgZ2MucHJ1bmVFeHBpcmVgKS4KKwktLXBydW5lPWFsbCBwcnVuZXMgbG9vc2Ugb2JqZWN0cyByZWdhcmRsZXNzIG9mIHRoZWlyIGFnZS4KKwktLXBydW5lIGlzIG9uIGJ5IGRlZmF1bHQuCiAKIC0tbm8tcHJ1bmU6OgogCURvIG5vdCBwcnVuZSBhbnkgbG9vc2Ugb2JqZWN0cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWluZGV4LXBhY2sudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtaW5kZXgtcGFjay50eHQKaW5kZXggYmRlOGVlYy4uN2E0ZTA1NSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtaW5kZXgtcGFjay50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtaW5kZXgtcGFjay50eHQKQEAgLTc0LDYgKzc0LDkgQEAKIC0tc3RyaWN0OjoKIAlEaWUsIGlmIHRoZSBwYWNrIGNvbnRhaW5zIGJyb2tlbiBvYmplY3RzIG9yIGxpbmtzLgogCistLWNoZWNrLXNlbGYtY29udGFpbmVkLWFuZC1jb25uZWN0ZWQ6OgorCURpZSBpZiB0aGUgcGFjayBjb250YWlucyBicm9rZW4gbGlua3MuIEZvciBpbnRlcm5hbCB1c2Ugb25seS4KKwogLS10aHJlYWRzPTxuPjo6CiAJU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgdGhyZWFkcyB0byBzcGF3biB3aGVuIHJlc29sdmluZwogCWRlbHRhcy4gVGhpcyByZXF1aXJlcyB0aGF0IGluZGV4LXBhY2sgYmUgY29tcGlsZWQgd2l0aApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWxvZy50eHQKaW5kZXggYTVlOTYwNy4uYWMyNjk0ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbG9nLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1sb2cudHh0CkBAIC02Miw2ICs2MiwxOSBAQAogCU5vdGUgdGhhdCBvbmx5IG1lc3NhZ2UgaXMgY29uc2lkZXJlZCwgaWYgYWxzbyBhIGRpZmYgaXMgc2hvd24KIAlpdHMgc2l6ZSBpcyBub3QgaW5jbHVkZWQuCiAKKy1MIDxzdGFydD4sPGVuZD46PGZpbGU+LCAtTCA6PHJlZ2V4Pjo8ZmlsZT46OgorCisJVHJhY2UgdGhlIGV2b2x1dGlvbiBvZiB0aGUgbGluZSByYW5nZSBnaXZlbiBieSAiPHN0YXJ0Piw8ZW5kPiIKKwkob3IgdGhlIGZ1bmNuYW1lIHJlZ2V4IDxyZWdleD4pIHdpdGhpbiB0aGUgPGZpbGU+LiAgWW91IG1heQorCW5vdCBnaXZlIGFueSBwYXRoc3BlYyBsaW1pdGVycy4gIFRoaXMgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8KKwlhIHdhbGsgc3RhcnRpbmcgZnJvbSBhIHNpbmdsZSByZXZpc2lvbiwgaS5lLiwgeW91IG1heSBvbmx5CisJZ2l2ZSB6ZXJvIG9yIG9uZSBwb3NpdGl2ZSByZXZpc2lvbiBhcmd1bWVudHMuCisJWW91IGNhbiBzcGVjaWZ5IHRoaXMgb3B0aW9uIG1vcmUgdGhhbiBvbmNlLgorKworPHN0YXJ0PiBhbmQgPGVuZD4gY2FuIHRha2Ugb25lIG9mIHRoZXNlIGZvcm1zOgorCitpbmNsdWRlOjpsaW5lLXJhbmdlLWZvcm1hdC50eHRbXQorCiA8cmV2aXNpb24gcmFuZ2U+OjoKIAlTaG93IG9ubHkgY29tbWl0cyBpbiB0aGUgc3BlY2lmaWVkIHJldmlzaW9uIHJhbmdlLiAgV2hlbiBubwogCTxyZXZpc2lvbiByYW5nZT4gaXMgc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byBgSEVBRGAgKGkuZS4gdGhlCkBAIC04NCw3ICs5Nyw3IEBACiAKIGluY2x1ZGU6OnByZXR0eS1mb3JtYXRzLnR4dFtdCiAKLUNvbW1vbiBkaWZmIG9wdGlvbnMKK0NPTU1PTiBESUZGIE9QVElPTlMKIC0tLS0tLS0tLS0tLS0tLS0tLS0KIAogOmdpdC1sb2c6IDEKQEAgLTkyLDcgKzEwNSw3IEBACiAKIGluY2x1ZGU6OmRpZmYtZ2VuZXJhdGUtcGF0Y2gudHh0W10KIAotRXhhbXBsZXMKK0VYQU1QTEVTCiAtLS0tLS0tLQogYGdpdCBsb2cgLS1uby1tZXJnZXNgOjoKIApAQCAtMTQwLDE1ICsxNTMsMjAgQEAKIAlUaGlzIG1ha2VzIHNlbnNlIG9ubHkgd2hlbiBmb2xsb3dpbmcgYSBzdHJpY3QgcG9saWN5IG9mIG1lcmdpbmcgYWxsCiAJdG9waWMgYnJhbmNoZXMgd2hlbiBzdGF5aW5nIG9uIGEgc2luZ2xlIGludGVncmF0aW9uIGJyYW5jaC4KIAorYGdpdCBsb2cgLUwgJy9pbnQgbWFpbi8nLC9efS86bWFpbi5jYDo6CisKKwlTaG93cyBob3cgdGhlIGZ1bmN0aW9uIGBtYWluKClgIGluIHRoZSBmaWxlICdtYWluLmMnIGV2b2x2ZWQKKwlvdmVyIHRpbWUuCisKIGBnaXQgbG9nIC0zYDo6CiAJTGltaXRzIHRoZSBudW1iZXIgb2YgY29tbWl0cyB0byBzaG93IHRvIDMuCiAKLURpc2N1c3Npb24KK0RJU0NVU1NJT04KIC0tLS0tLS0tLS0KIAogaW5jbHVkZTo6aTE4bi50eHRbXQogCi1Db25maWd1cmF0aW9uCitDT05GSUdVUkFUSU9OCiAtLS0tLS0tLS0tLS0tCiAKIFNlZSBsaW5rZ2l0OmdpdC1jb25maWdbMV0gZm9yIGNvcmUgdmFyaWFibGVzIGFuZCBsaW5rZ2l0OmdpdC1kaWZmWzFdCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1scy1yZW1vdGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtbHMtcmVtb3RlLnR4dAppbmRleCA3NzRkZTVlLi4yZTIyOTE1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1scy1yZW1vdGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWxzLXJlbW90ZS50eHQKQEAgLTQ4LDkgKzQ4LDkgQEAKIAlleGl0IHdpdGhvdXQgdGFsa2luZyB0byB0aGUgcmVtb3RlLgogCiA8cmVwb3NpdG9yeT46OgotCUxvY2F0aW9uIG9mIHRoZSByZXBvc2l0b3J5LiAgVGhlIHNob3J0aGFuZCBkZWZpbmVkIGluCi0JJEdJVF9ESVIvYnJhbmNoZXMvIGNhbiBiZSB1c2VkLiBVc2UgIi4iIChkb3QpIHRvIGxpc3QgcmVmZXJlbmNlcyBpbgotCXRoZSBsb2NhbCByZXBvc2l0b3J5LgorCVRoZSAicmVtb3RlIiByZXBvc2l0b3J5IHRvIHF1ZXJ5LiAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlCisJZWl0aGVyIGEgVVJMIG9yIHRoZSBuYW1lIG9mIGEgcmVtb3RlIChzZWUgdGhlIEdJVCBVUkxTIGFuZAorCVJFTU9URVMgc2VjdGlvbnMgb2YgbGlua2dpdDpnaXQtZmV0Y2hbMV0pLgogCiA8cmVmcz4uLi46OgogCVdoZW4gdW5zcGVjaWZpZWQsIGFsbCByZWZlcmVuY2VzLCBhZnRlciBmaWx0ZXJpbmcgZG9uZQpAQCAtNzAsOSArNzAsOCBAQAogCSQgZ2l0IGxzLXJlbW90ZSBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NjbS9naXQvZ2l0LmdpdCBtYXN0ZXIgcHUgcmMKIAk1ZmU5NzhhNTM4MWYxZmJhZDI2YTgwZTY4MmRkZDJhNDAxOTY2NzQwCXJlZnMvaGVhZHMvbWFzdGVyCiAJYzc4MWE4NGI1MjA0ZmIyOTRjOWNjYzc5ZjhiM2JhY2VlYjMyYzA2MQlyZWZzL2hlYWRzL3B1Ci0JYjFkMDk2ZjI5MjZjNGUzN2M5YzBiNmE3YmYyMTE5YmVkYWEyNzdjYglyZWZzL2hlYWRzL3JjCi0JJCBlY2hvIGh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc2NtL2dpdC9naXQuZ2l0ID4uZ2l0L2JyYW5jaGVzL3B1YmxpYwotCSQgZ2l0IGxzLXJlbW90ZSAtLXRhZ3MgcHVibGljIHZcKgorCSQgZ2l0IHJlbW90ZSBhZGQga29yZyBodHRwOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NjbS9naXQvZ2l0LmdpdAorCSQgZ2l0IGxzLXJlbW90ZSAtLXRhZ3Mga29yZyB2XCoKIAlkNjYwMmVjNTE5NGM4N2IwZmM4NzEwM2NhNGQ2NzI1MWM3NmYyMzNhCXJlZnMvdGFncy92MC45OQogCWYyNWEyNjVhMzQyYWVkNjA0MWFiMGNjNDg0MjI0ZDljYTU0YjZmNDEJcmVmcy90YWdzL3YwLjk5LjEKIAljNWRiNTQ1NmFlM2IwODczZmM2NTljMTlmYWZkZGUyMjMxM2NjNDQxCXJlZnMvdGFncy92MC45OS4yCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1uYW1lLXJldi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1uYW1lLXJldi50eHQKaW5kZXggMTFkYTcwNC4uMTViMDBlMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbmFtZS1yZXYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW5hbWUtcmV2LnR4dApAQCAtMjUsNyArMjUsOCBAQAogCURvIG5vdCB1c2UgYnJhbmNoIG5hbWVzLCBidXQgb25seSB0YWdzIHRvIG5hbWUgdGhlIGNvbW1pdHMKIAogLS1yZWZzPTxwYXR0ZXJuPjo6Ci0JT25seSB1c2UgcmVmcyB3aG9zZSBuYW1lcyBtYXRjaCBhIGdpdmVuIHNoZWxsIHBhdHRlcm4uCisJT25seSB1c2UgcmVmcyB3aG9zZSBuYW1lcyBtYXRjaCBhIGdpdmVuIHNoZWxsIHBhdHRlcm4uICBUaGUgcGF0dGVybgorCWNhbiBiZSBvbmUgb2YgYnJhbmNoIG5hbWUsIHRhZyBuYW1lIG9yIGZ1bGx5IHF1YWxpZmllZCByZWYgbmFtZS4KIAogLS1hbGw6OgogCUxpc3QgYWxsIGNvbW1pdHMgcmVhY2hhYmxlIGZyb20gYWxsIHJlZnMKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXA0LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXA0LnR4dAppbmRleCBjNTc5ZmJjLi44Y2JhMTZkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1wNC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcDQudHh0CkBAIC0xNzYsMTMgKzE3NiwxNiBAQAogVGhlc2Ugb3B0aW9ucyBjYW4gYmUgdXNlZCBpbiB0aGUgaW5pdGlhbCAnY2xvbmUnIGFzIHdlbGwgYXMgaW4KIHN1YnNlcXVlbnQgJ3N5bmMnIG9wZXJhdGlvbnMuCiAKLS0tYnJhbmNoIDxicmFuY2g+OjoKLQlJbXBvcnQgY2hhbmdlcyBpbnRvIGdpdmVuIGJyYW5jaC4gIElmIHRoZSBicmFuY2ggc3RhcnRzIHdpdGgKLQkncmVmcy8nLCBpdCB3aWxsIGJlIHVzZWQgYXMgaXMuICBPdGhlcndpc2UgaWYgaXQgZG9lcyBub3Qgc3RhcnQKLQl3aXRoICdwNC8nLCB0aGF0IHByZWZpeCBpcyBhZGRlZC4gIFRoZSBicmFuY2ggaXMgYXNzdW1lZCB0bwotCW5hbWUgYSByZW1vdGUgdHJhY2tpbmcsIGJ1dCB0aGlzIGNhbiBiZSBtb2RpZmllZCB1c2luZwotCSctLWltcG9ydC1sb2NhbCcsIG9yIGJ5IGdpdmluZyBhIGZ1bGwgcmVmIG5hbWUuICBUaGUgZGVmYXVsdAotCWJyYW5jaCBpcyAnbWFzdGVyJy4KKy0tYnJhbmNoIDxyZWY+OjoKKwlJbXBvcnQgY2hhbmdlcyBpbnRvIDxyZWY+IGluc3RlYWQgb2YgcmVmcy9yZW1vdGVzL3A0L21hc3Rlci4KKwlJZiA8cmVmPiBzdGFydHMgd2l0aCByZWZzLywgaXQgaXMgdXNlZCBhcyBpcy4gIE90aGVyd2lzZSwgaWYKKwlpdCBkb2VzIG5vdCBzdGFydCB3aXRoIHA0LywgdGhhdCBwcmVmaXggaXMgYWRkZWQuCisrCitCeSBkZWZhdWx0IGEgPHJlZj4gbm90IHN0YXJ0aW5nIHdpdGggcmVmcy8gaXMgdHJlYXRlZCBhcyB0aGUKK25hbWUgb2YgYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoICh1bmRlciByZWZzL3JlbW90ZXMvKS4gIFRoaXMKK2JlaGF2aW9yIGNhbiBiZSBtb2RpZmllZCB1c2luZyB0aGUgLS1pbXBvcnQtbG9jYWwgb3B0aW9uLgorKworVGhlIGRlZmF1bHQgPHJlZj4gaXMgIm1hc3RlciIuCiArCiBUaGlzIGV4YW1wbGUgaW1wb3J0cyBhIG5ldyByZW1vdGUgInA0L3Byb2oyIiBpbnRvIGFuIGV4aXN0aW5nCiBHaXQgcmVwb3NpdG9yeToKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXBhY2stcmVmcy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1wYWNrLXJlZnMudHh0CmluZGV4IGYxMzE2NzcuLjE1NDA4MWYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXBhY2stcmVmcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcGFjay1yZWZzLnR4dApAQCAtMzMsOCArMzMsOCBAQAogYCRHSVRfRElSL3JlZnNgIGRpcmVjdG9yeSBoaWVyYXJjaHkuCiAKIEEgcmVjb21tZW5kZWQgcHJhY3RpY2UgdG8gZGVhbCB3aXRoIGEgcmVwb3NpdG9yeSB3aXRoIHRvbyBtYW55Ci1yZWZzIGlzIHRvIHBhY2sgaXRzIHJlZnMgd2l0aCBgLS1hbGwgLS1wcnVuZWAgb25jZSwgYW5kCi1vY2Nhc2lvbmFsbHkgcnVuIGBnaXQgcGFjay1yZWZzIC0tcHJ1bmVgLiAgVGFncyBhcmUgYnkKK3JlZnMgaXMgdG8gcGFjayBpdHMgcmVmcyB3aXRoIGAtLWFsbGAgb25jZSwgYW5kCitvY2Nhc2lvbmFsbHkgcnVuIGBnaXQgcGFjay1yZWZzYC4gIFRhZ3MgYXJlIGJ5CiBkZWZpbml0aW9uIHN0YXRpb25hcnkgYW5kIGFyZSBub3QgZXhwZWN0ZWQgdG8gY2hhbmdlLiAgQnJhbmNoCiBoZWFkcyB3aWxsIGJlIHBhY2tlZCB3aXRoIHRoZSBpbml0aWFsIGBwYWNrLXJlZnMgLS1hbGxgLCBidXQKIG9ubHkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJhbmNoIGhlYWRzIHdpbGwgYmVjb21lIHVucGFja2VkLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcHJ1bmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcHJ1bmUudHh0CmluZGV4IDgwZDAxYjAuLmJmODI0MTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXBydW5lLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1wcnVuZS50eHQKQEAgLTU5LDcgKzU5LDcgQEAKIGAuZ2l0L29iamVjdHMvaW5mby9hbHRlcm5hdGVzYDoKIAogLS0tLS0tLS0tLS0tCi0kIGdpdCBwcnVuZSAkKGNkIC4uL2Fub3RoZXIgJiYgJChnaXQgcmV2LXBhcnNlIC0tYWxsKSkKKyQgZ2l0IHBydW5lICQoY2QgLi4vYW5vdGhlciAmJiBnaXQgcmV2LXBhcnNlIC0tYWxsKQogLS0tLS0tLS0tLS0tCiAKIE5vdGVzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1wdWxsLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXB1bGwudHh0CmluZGV4IDI0YWIwN2EuLjZlZjhkNTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXB1bGwudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXB1bGwudHh0CkBAIC0zLDcgKzMsNyBAQAogCiBOQU1FCiAtLS0tCi1naXQtcHVsbCAtIEZldGNoIGZyb20gYW5kIG1lcmdlIHdpdGggYW5vdGhlciByZXBvc2l0b3J5IG9yIGEgbG9jYWwgYnJhbmNoCitnaXQtcHVsbCAtIEZldGNoIGZyb20gYW5kIGludGVncmF0ZSB3aXRoIGFub3RoZXIgcmVwb3NpdG9yeSBvciBhIGxvY2FsIGJyYW5jaAogCiAKIFNZTk9QU0lTCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmViYXNlLnR4dAppbmRleCBhY2E4NDA1Li42YjJlMWM4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQKQEAgLTIwOCw2ICsyMDgsOSBAQAogcmViYXNlLmF1dG9zcXVhc2g6OgogCUlmIHNldCB0byB0cnVlIGVuYWJsZSAnLS1hdXRvc3F1YXNoJyBvcHRpb24gYnkgZGVmYXVsdC4KIAorcmViYXNlLmF1dG9zdGFzaDo6CisJSWYgc2V0IHRvIHRydWUgZW5hYmxlICctLWF1dG9zdGFzaCcgb3B0aW9uIGJ5IGRlZmF1bHQuCisKIE9QVElPTlMKIC0tLS0tLS0KIC0tb250byA8bmV3YmFzZT46OgpAQCAtMzg2LDcgKzM4OSw5IEBACiAJdGhlIHNhbWUgLi4uLCBhdXRvbWF0aWNhbGx5IG1vZGlmeSB0aGUgdG9kbyBsaXN0IG9mIHJlYmFzZSAtaQogCXNvIHRoYXQgdGhlIGNvbW1pdCBtYXJrZWQgZm9yIHNxdWFzaGluZyBjb21lcyByaWdodCBhZnRlciB0aGUKIAljb21taXQgdG8gYmUgbW9kaWZpZWQsIGFuZCBjaGFuZ2UgdGhlIGFjdGlvbiBvZiB0aGUgbW92ZWQKLQljb21taXQgZnJvbSBgcGlja2AgdG8gYHNxdWFzaGAgKG9yIGBmaXh1cGApLgorCWNvbW1pdCBmcm9tIGBwaWNrYCB0byBgc3F1YXNoYCAob3IgYGZpeHVwYCkuICBJZ25vcmVzIHN1YnNlcXVlbnQKKwkiZml4dXAhICIgb3IgInNxdWFzaCEgIiBhZnRlciB0aGUgZmlyc3QsIGluIGNhc2UgeW91IHJlZmVycmVkIHRvIGFuCisJZWFybGllciBmaXh1cC9zcXVhc2ggd2l0aCBgZ2l0IGNvbW1pdCAtLWZpeHVwLy0tc3F1YXNoYC4KICsKIFRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgd2hlbiB0aGUgJy0taW50ZXJhY3RpdmUnIG9wdGlvbiBpcyB1c2VkLgogKwpAQCAtMzk0LDYgKzM5OSwxMyBAQAogY29uZmlndXJhdGlvbiB2YXJpYWJsZSBgcmViYXNlLmF1dG9zcXVhc2hgLCB0aGlzIG9wdGlvbiBjYW4gYmUKIHVzZWQgdG8gb3ZlcnJpZGUgYW5kIGRpc2FibGUgdGhpcyBzZXR0aW5nLgogCistLVtuby1dYXV0b3N0YXNoOjoKKwlBdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIHRlbXBvcmFyeSBzdGFzaCBiZWZvcmUgdGhlIG9wZXJhdGlvbgorCWJlZ2lucywgYW5kIGFwcGx5IGl0IGFmdGVyIHRoZSBvcGVyYXRpb24gZW5kcy4gIFRoaXMgbWVhbnMKKwl0aGF0IHlvdSBjYW4gcnVuIHJlYmFzZSBvbiBhIGRpcnR5IHdvcmt0cmVlLiAgSG93ZXZlciwgdXNlCisJd2l0aCBjYXJlOiB0aGUgZmluYWwgc3Rhc2ggYXBwbGljYXRpb24gYWZ0ZXIgYSBzdWNjZXNzZnVsCisJcmViYXNlIG1pZ2h0IHJlc3VsdCBpbiBub24tdHJpdmlhbCBjb25mbGljdHMuCisKIC0tbm8tZmY6OgogCVdpdGggLS1pbnRlcmFjdGl2ZSwgY2hlcnJ5LXBpY2sgYWxsIHJlYmFzZWQgY29tbWl0cyBpbnN0ZWFkIG9mCiAJZmFzdC1mb3J3YXJkaW5nIG92ZXIgdGhlIHVuY2hhbmdlZCBvbmVzLiAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWZsb2cudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmVmbG9nLnR4dAppbmRleCBmYjg2OTdlLi43MDc5MWI5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZWZsb2cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJlZmxvZy50eHQKQEAgLTY3LDE0ICs2NywxOSBAQAogLS1leHBpcmU9PHRpbWU+OjoKIAlFbnRyaWVzIG9sZGVyIHRoYW4gdGhpcyB0aW1lIGFyZSBwcnVuZWQuICBXaXRob3V0IHRoZQogCW9wdGlvbiBpdCBpcyB0YWtlbiBmcm9tIGNvbmZpZ3VyYXRpb24gYGdjLnJlZmxvZ0V4cGlyZWAsCi0Jd2hpY2ggaW4gdHVybiBkZWZhdWx0cyB0byA5MCBkYXlzLgorCXdoaWNoIGluIHR1cm4gZGVmYXVsdHMgdG8gOTAgZGF5cy4gIC0tZXhwaXJlPWFsbCBwcnVuZXMKKwllbnRyaWVzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgYWdlOyAtLWV4cGlyZT1uZXZlciB0dXJucyBvZmYKKwlwcnVuaW5nIG9mIHJlYWNoYWJsZSBlbnRyaWVzIChidXQgc2VlIC0tZXhwaXJlLXVucmVhY2hhYmxlKS4KIAogLS1leHBpcmUtdW5yZWFjaGFibGU9PHRpbWU+OjoKIAlFbnRyaWVzIG9sZGVyIHRoYW4gdGhpcyB0aW1lIGFuZCBub3QgcmVhY2hhYmxlIGZyb20KIAl0aGUgY3VycmVudCB0aXAgb2YgdGhlIGJyYW5jaCBhcmUgcHJ1bmVkLiAgV2l0aG91dCB0aGUKIAlvcHRpb24gaXQgaXMgdGFrZW4gZnJvbSBjb25maWd1cmF0aW9uCiAJYGdjLnJlZmxvZ0V4cGlyZVVucmVhY2hhYmxlYCwgd2hpY2ggaW4gdHVybiBkZWZhdWx0cyB0bwotCTMwIGRheXMuCisJMzAgZGF5cy4gIC0tZXhwaXJlLXVucmVhY2hhYmxlPWFsbCBwcnVuZXMgdW5yZWFjaGFibGUKKwllbnRyaWVzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgYWdlOyAtLWV4cGlyZS11bnJlYWNoYWJsZT1uZXZlcgorCXR1cm5zIG9mZiBlYXJseSBwcnVuaW5nIG9mIHVucmVhY2hhYmxlIGVudHJpZXMgKGJ1dCBzZWUKKwktLWV4cGlyZSkuCiAKIC0tYWxsOjoKIAlJbnN0ZWFkIG9mIGxpc3RpbmcgPHJlZnM+IGV4cGxpY2l0bHksIHBydW5lIGFsbCByZWZzLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJlbW90ZS50eHQKaW5kZXggNTgxYmI0Yy4uOWMzZTNiZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmVtb3RlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZW1vdGUudHh0CkBAIC0xODcsMTggKzE4NywyNSBAQAogJCBnaXQgcmVtb3RlCiBvcmlnaW4KICQgZ2l0IGJyYW5jaCAtcgotb3JpZ2luL21hc3RlcgotJCBnaXQgcmVtb3RlIGFkZCBsaW51eC1uZnMgZ2l0Oi8vbGludXgtbmZzLm9yZy9wdWIvbGludXgvbmZzLTIuNi5naXQKKyAgb3JpZ2luL0hFQUQgLT4gb3JpZ2luL21hc3RlcgorICBvcmlnaW4vbWFzdGVyCiskIGdpdCByZW1vdGUgYWRkIHN0YWdpbmcgZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvLi4uL2dyZWdraC9zdGFnaW5nLmdpdAogJCBnaXQgcmVtb3RlCi1saW51eC1uZnMKIG9yaWdpbgotJCBnaXQgZmV0Y2gKLSogcmVmcy9yZW1vdGVzL2xpbnV4LW5mcy9tYXN0ZXI6IHN0b3JpbmcgYnJhbmNoICdtYXN0ZXInIC4uLgotICBjb21taXQ6IGJmODFiNDYKK3N0YWdpbmcKKyQgZ2l0IGZldGNoIHN0YWdpbmcKKy4uLgorRnJvbSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZ3JlZ2toL3N0YWdpbmcKKyAqIFtuZXcgYnJhbmNoXSAgICAgIG1hc3RlciAgICAgLT4gc3RhZ2luZy9tYXN0ZXIKKyAqIFtuZXcgYnJhbmNoXSAgICAgIHN0YWdpbmctbGludXMgLT4gc3RhZ2luZy9zdGFnaW5nLWxpbnVzCisgKiBbbmV3IGJyYW5jaF0gICAgICBzdGFnaW5nLW5leHQgLT4gc3RhZ2luZy9zdGFnaW5nLW5leHQKICQgZ2l0IGJyYW5jaCAtcgotb3JpZ2luL21hc3RlcgotbGludXgtbmZzL21hc3RlcgotJCBnaXQgY2hlY2tvdXQgLWIgbmZzIGxpbnV4LW5mcy9tYXN0ZXIKKyAgb3JpZ2luL0hFQUQgLT4gb3JpZ2luL21hc3RlcgorICBvcmlnaW4vbWFzdGVyCisgIHN0YWdpbmcvbWFzdGVyCisgIHN0YWdpbmcvc3RhZ2luZy1saW51cworICBzdGFnaW5nL3N0YWdpbmctbmV4dAorJCBnaXQgY2hlY2tvdXQgLWIgc3RhZ2luZyBzdGFnaW5nL21hc3RlcgogLi4uCiAtLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2LXBhcnNlLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJldi1wYXJzZS50eHQKaW5kZXggOTQ3ZDYyZi4uMmIxMjZjMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtcmV2LXBhcnNlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtcGFyc2UudHh0CkBAIC01OSw2ICs1OSwyMiBAQAogCUlmIHRoZXJlIGlzIG5vIHBhcmFtZXRlciBnaXZlbiBieSB0aGUgdXNlciwgdXNlIGA8YXJnPmAKIAlpbnN0ZWFkLgogCistLXByZWZpeCA8YXJnPjo6CisJQmVoYXZlIGFzIGlmICdnaXQgcmV2LXBhcnNlJyB3YXMgaW52b2tlZCBmcm9tIHRoZSBgPGFyZz5gCisJc3ViZGlyZWN0b3J5IG9mIHRoZSB3b3JraW5nIHRyZWUuICBBbnkgcmVsYXRpdmUgZmlsZW5hbWVzIGFyZQorCXJlc29sdmVkIGFzIGlmIHRoZXkgYXJlIHByZWZpeGVkIGJ5IGA8YXJnPmAgYW5kIHdpbGwgYmUgcHJpbnRlZAorCWluIHRoYXQgZm9ybS4KKysKK1RoaXMgY2FuIGJlIHVzZWQgdG8gY29udmVydCBhcmd1bWVudHMgdG8gYSBjb21tYW5kIHJ1biBpbiBhIHN1YmRpcmVjdG9yeQorc28gdGhhdCB0aGV5IGNhbiBzdGlsbCBiZSB1c2VkIGFmdGVyIG1vdmluZyB0byB0aGUgdG9wLWxldmVsIG9mIHRoZQorcmVwb3NpdG9yeS4gIEZvciBleGFtcGxlOgorKworLS0tLQorcHJlZml4PSQoZ2l0IHJldi1wYXJzZSAtLXNob3ctcHJlZml4KQorY2QgIiQoZ2l0IHJldi1wYXJzZSAtLXNob3ctdG9wbGV2ZWwpIgorZXZhbCAic2V0IC0tICQoZ2l0IHJldi1wYXJzZSAtLXNxIC0tcHJlZml4ICIkcHJlZml4IiAiJEAiKSIKKy0tLS0KKwogLS12ZXJpZnk6OgogCVZlcmlmeSB0aGF0IGV4YWN0bHkgb25lIHBhcmFtZXRlciBpcyBwcm92aWRlZCwgYW5kIHRoYXQgaXQKIAljYW4gYmUgdHVybmVkIGludG8gYSByYXcgMjAtYnl0ZSBTSEEtMSB0aGF0IGNhbiBiZSB1c2VkIHRvCkBAIC02Nyw3ICs4Myw3IEBACiArCiBJZiB5b3Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgb3V0cHV0IGFjdHVhbGx5IG5hbWVzIGFuIG9iamVjdCBpbgogeW91ciBvYmplY3QgZGF0YWJhc2UgYW5kL29yIGNhbiBiZSB1c2VkIGFzIGEgc3BlY2lmaWMgdHlwZSBvZiBvYmplY3QKLXlvdSByZXF1aXJlLCB5b3UgY2FuIGFkZCAiXnt0eXBlfSIgcGVlbGluZyBvcGVyYXRvciB0byB0aGUgcGFybWV0ZXIuCit5b3UgcmVxdWlyZSwgeW91IGNhbiBhZGQgIl57dHlwZX0iIHBlZWxpbmcgb3BlcmF0b3IgdG8gdGhlIHBhcmFtZXRlci4KIEZvciBleGFtcGxlLCBgZ2l0IHJldi1wYXJzZSAiJFZBUl57Y29tbWl0fSJgIHdpbGwgbWFrZSBzdXJlIGAkVkFSYAogbmFtZXMgYW4gZXhpc3Rpbmcgb2JqZWN0IHRoYXQgaXMgYSBjb21taXQtaXNoIChpLmUuIGEgY29tbWl0LCBvciBhbgogYW5ub3RhdGVkIHRhZyB0aGF0IHBvaW50cyBhdCBhIGNvbW1pdCkuICBUbyBtYWtlIHN1cmUgdGhhdCBgJFZBUmAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXNlbmQtZW1haWwudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQKaW5kZXggNDBhOWE5YS4uZjBlNTdhNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc2VuZC1lbWFpbC50eHQKQEAgLTE5OCw2ICsxOTgsMTIgQEAKIC0tc210cC1zc2w6OgogCUxlZ2FjeSBhbGlhcyBmb3IgJy0tc210cC1lbmNyeXB0aW9uIHNzbCcuCiAKKy0tc210cC1zc2wtY2VydC1wYXRoOjoKKwlQYXRoIHRvIGNhLWNlcnRpZmljYXRlcyAoZWl0aGVyIGEgZGlyZWN0b3J5IG9yIGEgc2luZ2xlIGZpbGUpLgorCVNldCBpdCB0byBhbiBlbXB0eSBzdHJpbmcgdG8gZGlzYWJsZSBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uCisJRGVmYXVsdHMgdG8gdGhlIHZhbHVlIHNldCB0byB0aGUgJ3NlbmRlbWFpbC5zbXRwc3NsY2VydHBhdGgnCisJY29uZmlndXJhdGlvbiB2YXJpYWJsZSwgaWYgc2V0LCBvciBgL2V0Yy9zc2wvY2VydHNgIG90aGVyd2lzZS4KKwogLS1zbXRwLXVzZXI9PHVzZXI+OjoKIAlVc2VybmFtZSBmb3IgU01UUC1BVVRILiBEZWZhdWx0IGlzIHRoZSB2YWx1ZSBvZiAnc2VuZGVtYWlsLnNtdHB1c2VyJzsKIAlpZiBhIHVzZXJuYW1lIGlzIG5vdCBzcGVjaWZpZWQgKHdpdGggJy0tc210cC11c2VyJyBvciAnc2VuZGVtYWlsLnNtdHB1c2VyJyksCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LXJlZi50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LXJlZi50eHQKaW5kZXggZGU0ZDM1Mi4uYjBhMzA5YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvdy1yZWYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3ctcmVmLnR4dApAQCAtMjEsNiArMjEsOCBAQAogZGVyZWZlcmVuY2VkIGludG8gb2JqZWN0IElEcy4gQWRkaXRpb25hbGx5LCBpdCBjYW4gYmUgdXNlZCB0byB0ZXN0IHdoZXRoZXIgYQogcGFydGljdWxhciByZWYgZXhpc3RzLgogCitCeSBkZWZhdWx0LCBzaG93cyB0aGUgdGFncywgaGVhZHMsIGFuZCByZW1vdGUgcmVmcy4KKwogVGhlIC0tZXhjbHVkZS1leGlzdGluZyBmb3JtIGlzIGEgZmlsdGVyIHRoYXQgZG9lcyB0aGUgaW52ZXJzZSwgaXQgc2hvd3MgdGhlCiByZWZzIGZyb20gc3RkaW4gdGhhdCBkb24ndCBleGlzdCBpbiB0aGUgbG9jYWwgcmVwb3NpdG9yeS4KIApAQCAtMzIsMTQgKzM0LDE0IEBACiAKIC0taGVhZDo6CiAKLQlTaG93IHRoZSBIRUFEIHJlZmVyZW5jZS4KKwlTaG93IHRoZSBIRUFEIHJlZmVyZW5jZSwgZXZlbiBpZiBpdCB3b3VsZCBub3JtYWxseSBiZSBmaWx0ZXJlZCBvdXQuCiAKIC0tdGFnczo6CiAtLWhlYWRzOjoKIAotCUxpbWl0IHRvIG9ubHkgInJlZnMvaGVhZHMiIGFuZCAicmVmcy90YWdzIiwgcmVzcGVjdGl2ZWx5LiAgVGhlc2UKLQlvcHRpb25zIGFyZSBub3QgbXV0dWFsbHkgZXhjbHVzaXZlOyB3aGVuIGdpdmVuIGJvdGgsIHJlZmVyZW5jZXMgc3RvcmVkCi0JaW4gInJlZnMvaGVhZHMiIGFuZCAicmVmcy90YWdzIiBhcmUgZGlzcGxheWVkLgorCUxpbWl0IHRvICJyZWZzL2hlYWRzIiBhbmQgInJlZnMvdGFncyIsIHJlc3BlY3RpdmVseS4gIFRoZXNlIG9wdGlvbnMKKwlhcmUgbm90IG11dHVhbGx5IGV4Y2x1c2l2ZTsgd2hlbiBnaXZlbiBib3RoLCByZWZlcmVuY2VzIHN0b3JlZCBpbgorCSJyZWZzL2hlYWRzIiBhbmQgInJlZnMvdGFncyIgYXJlIGRpc3BsYXllZC4KIAogLWQ6OgogLS1kZXJlZmVyZW5jZTo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG93LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3cudHh0CmluZGV4IGFlNGVkY2MuLjRlNjE3ZTYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXNob3cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3cudHh0CkBAIC00NSw2ICs0NSwxNSBAQAogaW5jbHVkZTo6cHJldHR5LWZvcm1hdHMudHh0W10KIAogCitDT01NT04gRElGRiBPUFRJT05TCistLS0tLS0tLS0tLS0tLS0tLS0tCisKKzpnaXQtbG9nOiAxCitpbmNsdWRlOjpkaWZmLW9wdGlvbnMudHh0W10KKworaW5jbHVkZTo6ZGlmZi1nZW5lcmF0ZS1wYXRjaC50eHRbXQorCisKIEVYQU1QTEVTCiAtLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zdGFzaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdGFzaC50eHQKaW5kZXggNzExZmZlMS4uN2M4YjY0OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc3Rhc2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXN0YXNoLnR4dApAQCAtMTMsMTAgKzEzLDEyIEBACiAnZ2l0IHN0YXNoJyBkcm9wIFstcXwtLXF1aWV0XSBbPHN0YXNoPl0KICdnaXQgc3Rhc2gnICggcG9wIHwgYXBwbHkgKSBbLS1pbmRleF0gWy1xfC0tcXVpZXRdIFs8c3Rhc2g+XQogJ2dpdCBzdGFzaCcgYnJhbmNoIDxicmFuY2huYW1lPiBbPHN0YXNoPl0KLSdnaXQgc3Rhc2gnIFtzYXZlIFstLXBhdGNoXSBbLWt8LS1bbm8tXWtlZXAtaW5kZXhdIFstcXwtLXF1aWV0XQotCSAgICAgWy11fC0taW5jbHVkZS11bnRyYWNrZWRdIFstYXwtLWFsbF0gWzxtZXNzYWdlPl1dCisnZ2l0IHN0YXNoJyBbc2F2ZSBbLXB8LS1wYXRjaF0gWy1rfC0tW25vLV1rZWVwLWluZGV4XSBbLXF8LS1xdWlldF0KKwkgICAgIFstdXwtLWluY2x1ZGUtdW50cmFja2VkXSBbLWF8LS1hbGxdIFstZnwtLWZvcmNlXQorCSAgICAgWzxtZXNzYWdlPl1dCiAnZ2l0IHN0YXNoJyBjbGVhcgotJ2dpdCBzdGFzaCcgY3JlYXRlCisnZ2l0IHN0YXNoJyBjcmVhdGUgWzxtZXNzYWdlPl0KKydnaXQgc3Rhc2gnIHN0b3JlIFstbXwtLW1lc3NhZ2UgPG1lc3NhZ2U+XSBbLXF8LS1xdWlldF0gPGNvbW1pdD4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC00Myw3ICs0NSw3IEBACiBPUFRJT05TCiAtLS0tLS0tCiAKLXNhdmUgWy1wfC0tcGF0Y2hdIFstLVtuby1da2VlcC1pbmRleF0gWy11fC0taW5jbHVkZS11bnRyYWNrZWRdIFstYXwtLWFsbF0gWy1xfC0tcXVpZXRdIFs8bWVzc2FnZT5dOjoKK3NhdmUgWy1wfC0tcGF0Y2hdIFstLVtuby1da2VlcC1pbmRleF0gWy11fC0taW5jbHVkZS11bnRyYWNrZWRdIFstYXwtLWFsbF0gWy1xfC0tcXVpZXRdIFstZnwtLWZvcmNlXSBbPG1lc3NhZ2U+XTo6CiAKIAlTYXZlIHlvdXIgbG9jYWwgbW9kaWZpY2F0aW9ucyB0byBhIG5ldyAnc3Rhc2gnLCBhbmQgcnVuIGBnaXQgcmVzZXQKIAktLWhhcmRgIHRvIHJldmVydCB0aGVtLiAgVGhlIDxtZXNzYWdlPiBwYXJ0IGlzIG9wdGlvbmFsIGFuZCBnaXZlcwpAQCAtNzAsNiArNzIsMTMgQEAKICsKIFRoZSBgLS1wYXRjaGAgb3B0aW9uIGltcGxpZXMgYC0ta2VlcC1pbmRleGAuICBZb3UgY2FuIHVzZQogYC0tbm8ta2VlcC1pbmRleGAgdG8gb3ZlcnJpZGUgdGhpcy4KKysKK0luIHNvbWUgY2FzZXMsIHNhdmluZyBhIHN0YXNoIGNvdWxkIG1lYW4gaXJyZXRyaWV2YWJseSByZW1vdmluZyBzb21lCitkYXRhIC0gaWYgYSBkaXJlY3Rvcnkgd2l0aCB1bnRyYWNrZWQgZmlsZXMgcmVwbGFjZXMgYSB0cmFja2VkIGZpbGUgb2YKK3RoZSBzYW1lIG5hbWUsIHRoZSBuZXcgdW50cmFja2VkIGZpbGVzIGFyZSBub3Qgc2F2ZWQgKGV4Y2VwdCBpbiBjYXNlCitvZiBgLS1pbmNsdWRlLXVudHJhY2tlZGApIGJ1dCB0aGUgb3JpZ2luYWwgdHJhY2tlZCBmaWxlIHNoYWxsIGJlIHJlc3RvcmVkLgorQnkgZGVmYXVsdCwgYHN0YXNoIHNhdmVgIHdpbGwgYWJvcnQgaW4gc3VjaCBhIGNhc2U7IGAtLWZvcmNlYCB3aWxsIGFsbG93CitpdCB0byByZW1vdmUgdGhlIHVudHJhY2tlZCBmaWxlcy4KIAogbGlzdCBbPG9wdGlvbnM+XTo6CiAKQEAgLTE1MSw3ICsxNjAsMTUgQEAKIAogCUNyZWF0ZSBhIHN0YXNoICh3aGljaCBpcyBhIHJlZ3VsYXIgY29tbWl0IG9iamVjdCkgYW5kIHJldHVybiBpdHMKIAlvYmplY3QgbmFtZSwgd2l0aG91dCBzdG9yaW5nIGl0IGFueXdoZXJlIGluIHRoZSByZWYgbmFtZXNwYWNlLgorCVRoaXMgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZnVsIGZvciBzY3JpcHRzLiAgSXQgaXMgcHJvYmFibHkgbm90CisJdGhlIGNvbW1hbmQgeW91IHdhbnQgdG8gdXNlOyBzZWUgInNhdmUiIGFib3ZlLgogCitzdG9yZTo6CisKKwlTdG9yZSBhIGdpdmVuIHN0YXNoIGNyZWF0ZWQgdmlhICdnaXQgc3Rhc2ggY3JlYXRlJyAod2hpY2ggaXMgYQorCWRhbmdsaW5nIG1lcmdlIGNvbW1pdCkgaW4gdGhlIHN0YXNoIHJlZiwgdXBkYXRpbmcgdGhlIHN0YXNoCisJcmVmbG9nLiAgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSB1c2VmdWwgZm9yIHNjcmlwdHMuICBJdCBpcworCXByb2JhYmx5IG5vdCB0aGUgY29tbWFuZCB5b3Ugd2FudCB0byB1c2U7IHNlZSAic2F2ZSIgYWJvdmUuCiAKIERJU0NVU1NJT04KIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zdWJtb2R1bGUudHh0CmluZGV4IGU1NzY3MTMuLmJmZWY4YTAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXN1Ym1vZHVsZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtc3VibW9kdWxlLnR4dApAQCAtMTAsMTIgKzEwLDEyIEBACiAtLS0tLS0tLQogW3ZlcnNlXQogJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBhZGQgWy1iIDxicmFuY2g+XSBbLWZ8LS1mb3JjZV0gWy0tbmFtZSA8bmFtZT5dCi0JICAgICAgWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0gWy0tXSA8cmVwb3NpdG9yeT4gWzxwYXRoPl0KKwkgICAgICBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XSBbLS1kZXB0aCA8ZGVwdGg+XSBbLS1dIDxyZXBvc2l0b3J5PiBbPHBhdGg+XQogJ2dpdCBzdWJtb2R1bGUnIFstLXF1aWV0XSBzdGF0dXMgWy0tY2FjaGVkXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gaW5pdCBbLS1dIFs8cGF0aD4uLi5dCiAnZ2l0IHN1Ym1vZHVsZScgWy0tcXVpZXRdIGRlaW5pdCBbLWZ8LS1mb3JjZV0gWy0tXSA8cGF0aD4uLi4KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gdXBkYXRlIFstLWluaXRdIFstLXJlbW90ZV0gWy1OfC0tbm8tZmV0Y2hdCi0JICAgICAgWy1mfC0tZm9yY2VdIFstLXJlYmFzZV0gWy0tcmVmZXJlbmNlIDxyZXBvc2l0b3J5Pl0KKwkgICAgICBbLWZ8LS1mb3JjZV0gWy0tcmViYXNlXSBbLS1yZWZlcmVuY2UgPHJlcG9zaXRvcnk+XSBbLS1kZXB0aCA8ZGVwdGg+XQogCSAgICAgIFstLW1lcmdlXSBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0KICdnaXQgc3VibW9kdWxlJyBbLS1xdWlldF0gc3VtbWFyeSBbLS1jYWNoZWR8LS1maWxlc10gWygtbnwtLXN1bW1hcnktbGltaXQpIDxuPl0KIAkgICAgICBbY29tbWl0XSBbLS1dIFs8cGF0aD4uLi5dCkBAIC0xNTksNyArMTU5LDkgQEAKIAlUaGlzIHdpbGwgbWFrZSB0aGUgc3VibW9kdWxlcyBIRUFEIGJlIGRldGFjaGVkIHVubGVzcyBgLS1yZWJhc2VgIG9yCiAJYC0tbWVyZ2VgIGlzIHNwZWNpZmllZCBvciB0aGUga2V5IGBzdWJtb2R1bGUuJG5hbWUudXBkYXRlYCBpcyBzZXQgdG8KIAlgcmViYXNlYCwgYG1lcmdlYCBvciBgbm9uZWAuIGBub25lYCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzcGVjaWZ5aW5nCi0JYC0tY2hlY2tvdXRgLgorCWAtLWNoZWNrb3V0YC4gU2V0dGluZyB0aGUga2V5IGBzdWJtb2R1bGUuJG5hbWUudXBkYXRlYCB0byBgIWNvbW1hbmRgCisJd2lsbCBjYXVzZSBgY29tbWFuZGAgdG8gYmUgcnVuLiBgY29tbWFuZGAgY2FuIGJlIGFueSBhcmJpdHJhcnkgc2hlbGwKKwljb21tYW5kIHRoYXQgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQsIG5hbWVseSB0aGUgc2hhMSB0byB1cGRhdGUgdG8uCiArCiBJZiB0aGUgc3VibW9kdWxlIGlzIG5vdCB5ZXQgaW5pdGlhbGl6ZWQsIGFuZCB5b3UganVzdCB3YW50IHRvIHVzZSB0aGUKIHNldHRpbmcgYXMgc3RvcmVkIGluIC5naXRtb2R1bGVzLCB5b3UgY2FuIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZSB0aGUKQEAgLTI2Miw3ICsyNjQsNyBAQAogLS1yZW1vdGU6OgogCVRoaXMgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIHRoZSB1cGRhdGUgY29tbWFuZC4gIEluc3RlYWQgb2YgdXNpbmcKIAl0aGUgc3VwZXJwcm9qZWN0J3MgcmVjb3JkZWQgU0hBLTEgdG8gdXBkYXRlIHRoZSBzdWJtb2R1bGUsIHVzZSB0aGUKLQlzdGF0dXMgb2YgdGhlIHN1Ym1vZHVsZSdzIHJlbW90ZSB0cmFja2luZyBicmFuY2guICBUaGUgcmVtb3RlIHVzZWQKKwlzdGF0dXMgb2YgdGhlIHN1Ym1vZHVsZSdzIHJlbW90ZS10cmFja2luZyBicmFuY2guICBUaGUgcmVtb3RlIHVzZWQKIAlpcyBicmFuY2gncyByZW1vdGUgKGBicmFuY2guPG5hbWU+LnJlbW90ZWApLCBkZWZhdWx0aW5nIHRvIGBvcmlnaW5gLgogCVRoZSByZW1vdGUgYnJhbmNoIHVzZWQgZGVmYXVsdHMgdG8gYG1hc3RlcmAsIGJ1dCB0aGUgYnJhbmNoIG5hbWUgbWF5CiAJYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBgc3VibW9kdWxlLjxuYW1lPi5icmFuY2hgIG9wdGlvbiBpbgpAQCAtMzI4LDYgKzMzMCwxMiBAQAogCW9ubHkgaW4gdGhlIHN1Ym1vZHVsZXMgb2YgdGhlIGN1cnJlbnQgcmVwbywgYnV0IGFsc28KIAlpbiBhbnkgbmVzdGVkIHN1Ym1vZHVsZXMgaW5zaWRlIHRob3NlIHN1Ym1vZHVsZXMgKGFuZCBzbyBvbikuCiAKKy0tZGVwdGg6OgorCVRoaXMgb3B0aW9uIGlzIHZhbGlkIGZvciBhZGQgYW5kIHVwZGF0ZSBjb21tYW5kcy4gQ3JlYXRlIGEgJ3NoYWxsb3cnCisJY2xvbmUgd2l0aCBhIGhpc3RvcnkgdHJ1bmNhdGVkIHRvIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHJldmlzaW9ucy4KKwlTZWUgbGlua2dpdDpnaXQtY2xvbmVbMV0KKworCiA8cGF0aD4uLi46OgogCVBhdGhzIHRvIHN1Ym1vZHVsZShzKS4gV2hlbiBzcGVjaWZpZWQgdGhpcyB3aWxsIHJlc3RyaWN0IHRoZSBjb21tYW5kCiAJdG8gb25seSBvcGVyYXRlIG9uIHRoZSBzdWJtb2R1bGVzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgcGF0aHMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dAppbmRleCAyMjg5NGNiLi5jNDE4YzQ0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXRhZy50eHQKQEAgLTQyLDYgKzQyLDE3IEBACiBHbnVQRyBrZXkgZm9yIHNpZ25pbmcuIAlUaGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBgZ3BnLnByb2dyYW1gCiBpcyB1c2VkIHRvIHNwZWNpZnkgY3VzdG9tIEdudVBHIGJpbmFyeS4KIAorVGFnIG9iamVjdHMgKGNyZWF0ZWQgd2l0aCBgLWFgLCBgc2AsIG9yIGAtdWApIGFyZSBjYWxsZWQgImFubm90YXRlZCIKK3RhZ3M7IHRoZXkgY29udGFpbiBhIGNyZWF0aW9uIGRhdGUsIHRoZSB0YWdnZXIgbmFtZSBhbmQgZS1tYWlsLCBhCit0YWdnaW5nIG1lc3NhZ2UsIGFuZCBhbiBvcHRpb25hbCBHbnVQRyBzaWduYXR1cmUuIFdoZXJlYXMgYQorImxpZ2h0d2VpZ2h0IiB0YWcgaXMgc2ltcGx5IGEgbmFtZSBmb3IgYW4gb2JqZWN0ICh1c3VhbGx5IGEgY29tbWl0CitvYmplY3QpLgorCitBbm5vdGF0ZWQgdGFncyBhcmUgbWVhbnQgZm9yIHJlbGVhc2Ugd2hpbGUgbGlnaHR3ZWlnaHQgdGFncyBhcmUgbWVhbnQKK2ZvciBwcml2YXRlIG9yIHRlbXBvcmFyeSBvYmplY3QgbGFiZWxzLiBGb3IgdGhpcyByZWFzb24sIHNvbWUgZ2l0Citjb21tYW5kcyBmb3IgbmFtaW5nIG9iamVjdHMgKGxpa2UgYGdpdCBkZXNjcmliZWApIHdpbGwgaWdub3JlCitsaWdodHdlaWdodCB0YWdzIGJ5IGRlZmF1bHQuCisKIAogT1BUSU9OUwogLS0tLS0tLQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXQudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQudHh0CmluZGV4IDI2NjRiNTIuLjNiZGQ1NmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdC50eHQKQEAgLTU1LDkgKzU1LDkgQEAKICogbGluazp2MS44LjIuMy9naXQuaHRtbFtkb2N1bWVudGF0aW9uIGZvciByZWxlYXNlIDEuOC4yLjNdCiAKICogcmVsZWFzZSBub3RlcyBmb3IKLSAgbGluazpSZWxOb3Rlcy8xLjguMi4zLnR4dFsxLjguMi4zXS4KLSAgbGluazpSZWxOb3Rlcy8xLjguMi4yLnR4dFsxLjguMi4yXS4KLSAgbGluazpSZWxOb3Rlcy8xLjguMi4xLnR4dFsxLjguMi4xXS4KKyAgbGluazpSZWxOb3Rlcy8xLjguMi4zLnR4dFsxLjguMi4zXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMi4yLnR4dFsxLjguMi4yXSwKKyAgbGluazpSZWxOb3Rlcy8xLjguMi4xLnR4dFsxLjguMi4xXSwKICAgbGluazpSZWxOb3Rlcy8xLjguMi50eHRbMS44LjJdLgogCiAqIGxpbms6djEuOC4xLjYvZ2l0Lmh0bWxbZG9jdW1lbnRhdGlvbiBmb3IgcmVsZWFzZSAxLjguMS42XQpAQCAtODE4LDggKzgxOCw5IEBACiAnR0lUX0ZMVVNIJzo6CiAJSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQgdG8gIjEiLCB0aGVuIGNvbW1hbmRzIHN1Y2gKIAlhcyAnZ2l0IGJsYW1lJyAoaW4gaW5jcmVtZW50YWwgbW9kZSksICdnaXQgcmV2LWxpc3QnLCAnZ2l0IGxvZycsCi0JYW5kICdnaXQgd2hhdGNoYW5nZWQnIHdpbGwgZm9yY2UgYSBmbHVzaCBvZiB0aGUgb3V0cHV0IHN0cmVhbQotCWFmdGVyIGVhY2ggY29tbWl0LW9yaWVudGVkIHJlY29yZCBoYXZlIGJlZW4gZmx1c2hlZC4gICBJZiB0aGlzCisJJ2dpdCBjaGVjay1hdHRyJywgJ2dpdCBjaGVjay1pZ25vcmUnLCBhbmQgJ2dpdCB3aGF0Y2hhbmdlZCcgd2lsbAorCWZvcmNlIGEgZmx1c2ggb2YgdGhlIG91dHB1dCBzdHJlYW0gYWZ0ZXIgZWFjaCByZWNvcmQgaGF2ZSBiZWVuCisJZmx1c2hlZC4gSWYgdGhpcwogCXZhcmlhYmxlIGlzIHNldCB0byAiMCIsIHRoZSBvdXRwdXQgb2YgdGhlc2UgY29tbWFuZHMgd2lsbCBiZSBkb25lCiAJdXNpbmcgY29tcGxldGVseSBidWZmZXJlZCBJL08uICAgSWYgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcwogCW5vdCBzZXQsIEdpdCB3aWxsIGNob29zZSBidWZmZXJlZCBvciByZWNvcmQtb3JpZW50ZWQgZmx1c2hpbmcKQEAgLTgzOSw2ICs4NDAsMTkgQEAKIAlhcyBhIGZpbGUgcGF0aCBhbmQgd2lsbCB0cnkgdG8gd3JpdGUgdGhlIHRyYWNlIG1lc3NhZ2VzCiAJaW50byBpdC4KIAorJ0dJVF9UUkFDRV9QQUNLX0FDQ0VTUyc6OgorCUlmIHRoaXMgdmFyaWFibGUgaXMgc2V0IHRvIGEgcGF0aCwgYSBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhdAorCXRoZSBnaXZlbiBwYXRoIGxvZ2dpbmcgYWxsIGFjY2Vzc2VzIHRvIGFueSBwYWNrcy4gRm9yIGVhY2gKKwlhY2Nlc3MsIHRoZSBwYWNrIGZpbGUgbmFtZSBhbmQgYW4gb2Zmc2V0IGluIHRoZSBwYWNrIGlzCisJcmVjb3JkZWQuIFRoaXMgbWF5IGJlIGhlbHBmdWwgZm9yIHRyb3VibGVzaG9vdGluZyBzb21lCisJcGFjay1yZWxhdGVkIHBlcmZvcm1hbmNlIHByb2JsZW1zLgorCisnR0lUX1RSQUNFX1BBQ0tFVCc6OgorCUlmIHRoaXMgdmFyaWFibGUgaXMgc2V0LCBpdCBzaG93cyBhIHRyYWNlIG9mIGFsbCBwYWNrZXRzCisJY29taW5nIGluIG9yIG91dCBvZiBhIGdpdmVuIHByb2dyYW0uIFRoaXMgY2FuIGhlbHAgd2l0aAorCWRlYnVnZ2luZyBvYmplY3QgbmVnb3RpYXRpb24gb3Igb3RoZXIgcHJvdG9jb2wgaXNzdWVzLiBUcmFjaW5nCisJaXMgdHVybmVkIG9mZiBhdCBhIHBhY2tldCBzdGFydGluZyB3aXRoICJQQUNLIi4KKwogR0lUX0xJVEVSQUxfUEFUSFNQRUNTOjoKIAlTZXR0aW5nIHRoaXMgdmFyaWFibGUgdG8gYDFgIHdpbGwgY2F1c2UgR2l0IHRvIHRyZWF0IGFsbAogCXBhdGhzcGVjcyBsaXRlcmFsbHksIHJhdGhlciB0aGFuIGFzIGdsb2IgcGF0dGVybnMuIEZvciBleGFtcGxlLApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZW1vdGUtaGVscGVycy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dAppbmRleCBkYTc0NjQxLi4wODI3ZjY5IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJlbW90ZS1oZWxwZXJzLnR4dApAQCAtMTU5LDExICsxNTksMTEgQEAKIAljYXJyaWVkIG91dC4KIAogJ3JlZnNwZWMnIDxyZWZzcGVjPjo6Ci0JVGhpcyBtb2RpZmllcyB0aGUgJ2ltcG9ydCcgY2FwYWJpbGl0eSwgYWxsb3dpbmcgdGhlIHByb2R1Y2VkCi0JZmFzdC1pbXBvcnQgc3RyZWFtIHRvIG1vZGlmeSByZWZzIGluIGEgcHJpdmF0ZSBuYW1lc3BhY2UKLQlpbnN0ZWFkIG9mIHdyaXRpbmcgdG8gcmVmcy9oZWFkcyBvciByZWZzL3JlbW90ZXMgZGlyZWN0bHkuCisJRm9yIHJlbW90ZSBoZWxwZXJzIHRoYXQgaW1wbGVtZW50ICdpbXBvcnQnIG9yICdleHBvcnQnLCB0aGlzIGNhcGFiaWxpdHkKKwlhbGxvd3MgdGhlIHJlZnMgdG8gYmUgY29uc3RyYWluZWQgdG8gYSBwcml2YXRlIG5hbWVzcGFjZSwgaW5zdGVhZCBvZgorCXdyaXRpbmcgdG8gcmVmcy9oZWFkcyBvciByZWZzL3JlbW90ZXMgZGlyZWN0bHkuCiAJSXQgaXMgcmVjb21tZW5kZWQgdGhhdCBhbGwgaW1wb3J0ZXJzIHByb3ZpZGluZyB0aGUgJ2ltcG9ydCcKLQljYXBhYmlsaXR5IHVzZSB0aGlzLgorCWNhcGFiaWxpdHkgdXNlIHRoaXMuIEl0J3MgbWFuZGF0b3J5IGZvciAnZXhwb3J0Jy4KICsKIEEgaGVscGVyIGFkdmVydGlzaW5nIHRoZSBjYXBhYmlsaXR5CiBgcmVmc3BlYyByZWZzL2hlYWRzLyo6cmVmcy9zdm4vb3JpZ2luL2JyYW5jaGVzLypgCkBAIC0xNzQsOCArMTc0LDggQEAKIFRoaXMgY2FwYWJpbGl0eSBjYW4gYmUgYWR2ZXJ0aXNlZCBtdWx0aXBsZSB0aW1lcy4gIFRoZSBmaXJzdAogYXBwbGljYWJsZSByZWZzcGVjIHRha2VzIHByZWNlZGVuY2UuICBUaGUgbGVmdC1oYW5kIG9mIHJlZnNwZWNzCiBhZHZlcnRpc2VkIHdpdGggdGhpcyBjYXBhYmlsaXR5IG11c3QgY292ZXIgYWxsIHJlZnMgcmVwb3J0ZWQgYnkKLXRoZSBsaXN0IGNvbW1hbmQuICBJZiBhIGhlbHBlciBkb2VzIG5vdCBuZWVkIGEgc3BlY2lmaWMgJ3JlZnNwZWMnCi1jYXBhYmlsaXR5IHRoZW4gaXQgc2hvdWxkIGFkdmVydGlzZSBgcmVmc3BlYyAqOipgLgordGhlIGxpc3QgY29tbWFuZC4gIElmIG5vICdyZWZzcGVjJyBjYXBhYmlsaXR5IGlzIGFkdmVydGlzZWQsCit0aGVyZSBpcyBhbiBpbXBsaWVkIGByZWZzcGVjICo6KmAuCiAKICdiaWRpLWltcG9ydCc6OgogCVRoaXMgbW9kaWZpZXMgdGhlICdpbXBvcnQnIGNhcGFiaWxpdHkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdHdlYi5jb25mLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0d2ViLmNvbmYudHh0CmluZGV4IGVhMDUyNmUuLjMwNWRiNjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0d2ViLmNvbmYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0d2ViLmNvbmYudHh0CkBAIC0zMzYsOCArMzM2LDI2IEBACiAJdXNlZCBhcyB0aGUgZmlyc3QgY29tcG9uZW50IG9mIGdpdHdlYidzICJicmVhZGNydW1iIHRyYWlsIjoKIAlgPGhvbWUgbGluaz4gLyA8cHJvamVjdD4gLyA8YWN0aW9uPmAuICBDYW4gYmUgc2V0IGF0IGJ1aWxkIHRpbWUgdXNpbmcKIAl0aGUgYEdJVFdFQl9IT01FX0xJTktfU1RSYCB2YXJpYWJsZS4gIEJ5IGRlZmF1bHQgaXQgaXMgc2V0IHRvICJwcm9qZWN0cyIsCi0JYXMgdGhpcyBsaW5rIGxlYWRzIHRvIHRoZSBsaXN0IG9mIHByb2plY3RzLiAgT3RoZXIgcG9wdWxhciBjaG9pY2UgaXQgdG8KLQlzZXQgaXQgdG8gdGhlIG5hbWUgb2Ygc2l0ZS4KKwlhcyB0aGlzIGxpbmsgbGVhZHMgdG8gdGhlIGxpc3Qgb2YgcHJvamVjdHMuICBBbm90aGVyIHBvcHVsYXIgY2hvaWNlIGlzIHRvCisJc2V0IGl0IHRvIHRoZSBuYW1lIG9mIHNpdGUuICBOb3RlIHRoYXQgaXQgaXMgdHJlYXRlZCBhcyByYXcgSFRNTCBzbyBpdAorCXNob3VsZCBub3QgYmUgc2V0IGZyb20gdW50cnVzdGVkIHNvdXJjZXMuCisKK0BleHRyYV9icmVhZGNydW1iczo6CisJQWRkaXRpb25hbCBsaW5rcyB0byBiZSBhZGRlZCB0byB0aGUgc3RhcnQgb2YgdGhlIGJyZWFkY3J1bWIgdHJhaWwgYmVmb3JlCisJdGhlIGhvbWUgbGluaywgdG8gcGFnZXMgdGhhdCBhcmUgbG9naWNhbGx5ICJhYm92ZSIgdGhlIGdpdHdlYiBwcm9qZWN0cworCWxpc3QsIHN1Y2ggYXMgdGhlIG9yZ2FuaXphdGlvbiBhbmQgZGVwYXJ0bWVudCB3aGljaCBob3N0IHRoZSBnaXR3ZWIKKwlzZXJ2ZXIuIEVhY2ggZWxlbWVudCBvZiB0aGUgbGlzdCBpcyBhIHJlZmVyZW5jZSB0byBhbiBhcnJheSwgaW4gd2hpY2gKKwllbGVtZW50IDAgaXMgdGhlIGxpbmsgdGV4dCAoZXF1aXZhbGVudCB0byBgJGhvbWVfbGlua19zdHJgKSBhbmQgZWxlbWVudAorCTEgaXMgdGhlIHRhcmdldCBVUkwgKGVxdWl2YWxlbnQgdG8gYCRob21lX2xpbmtgKS4KKysKK0ZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHNldHRpbmcgcHJvZHVjZXMgYSBicmVhZGNydW1iIHRyYWlsIGxpa2UKKyJob21lIC8gZGV2IC8gcHJvamVjdHMgLyAuLi4iIHdoZXJlICJwcm9qZWN0cyIgaXMgdGhlIGhvbWUgbGluay4KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBvdXIgQGV4dHJhX2JyZWFkY3J1bWJzID0gKAorICAgICAgWyAnaG9tZScgPT4gJ2h0dHBzOi8vd3d3LmV4YW1wbGUub3JnLycgXSwKKyAgICAgIFsgJ2RldicgID0+ICdodHRwczovL2Rldi5leGFtcGxlLm9yZy8nIF0sCisgICAgKTsKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogJGxvZ29fdXJsOjoKICRsb2dvX2xhYmVsOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0d2ViLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0d2ViLnR4dAppbmRleCA0MDk2OWYxLi5jY2ExNGI4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHdlYi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXR3ZWIudHh0CkBAIC01MDQsNyArNTA0LDcgQEAKIAogVGhlIGFib3ZlIGNvbmZpZ3VyYXRpb24gZXhwZWN0cyB5b3VyIHB1YmxpYyByZXBvc2l0b3JpZXMgdG8gbGl2ZSB1bmRlcgogJy9wdWIvZ2l0JyBhbmQgd2lsbCBzZXJ2ZSB0aGVtIGFzIGBodHRwOi8vZ2l0LmRvbWFpbi5vcmcvZGlyLXVuZGVyLXB1Yi1naXRgLAotYm90aCBhcyBjbG9uZWFibGUgR2l0IFVSTCBhbmQgYXMgYnJvd3NlYWJsZSBnaXR3ZWIgaW50ZXJmYWNlLiAgSWYgeW91IHRoZW4KK2JvdGggYXMgY2xvbmFibGUgR2l0IFVSTCBhbmQgYXMgYnJvd3NlYWJsZSBnaXR3ZWIgaW50ZXJmYWNlLiAgSWYgeW91IHRoZW4KIHN0YXJ0IHlvdXIgbGlua2dpdDpnaXQtZGFlbW9uWzFdIHdpdGggYC0tYmFzZS1wYXRoPS9wdWIvZ2l0IC0tZXhwb3J0LWFsbGAKIHRoZW4geW91IGNhbiBldmVuIHVzZSB0aGUgYGdpdDovL2AgVVJMIHdpdGggZXhhY3RseSB0aGUgc2FtZSBwYXRoLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0IGIvRG9jdW1lbnRhdGlvbi9nbG9zc2FyeS1jb250ZW50LnR4dAppbmRleCBkYjJhNzRkLi5kYmE1MDYyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dsb3NzYXJ5LWNvbnRlbnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2xvc3NhcnktY29udGVudC50eHQKQEAgLTExMyw3ICsxMTMsNyBAQAogd2hpbGUgdGhlIEhFQUQgaXMgZGV0YWNoZWQuIFRoZXkgdXBkYXRlIHRoZSBIRUFEIHRvIHBvaW50IGF0IHRoZSB0aXAKIG9mIHRoZSB1cGRhdGVkIGhpc3Rvcnkgd2l0aG91dCBhZmZlY3RpbmcgYW55IGJyYW5jaC4gIENvbW1hbmRzIHRoYXQKIHVwZGF0ZSBvciBpbnF1aXJlIGluZm9ybWF0aW9uIF9hYm91dF8gdGhlIGN1cnJlbnQgYnJhbmNoIChlLmcuIGBnaXQKLWJyYW5jaCAtLXNldC11cHN0cmVhbS10b2AgdGhhdCBzZXRzIHdoYXQgcmVtb3RlIHRyYWNraW5nIGJyYW5jaCB0aGUKK2JyYW5jaCAtLXNldC11cHN0cmVhbS10b2AgdGhhdCBzZXRzIHdoYXQgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCB0aGUKIGN1cnJlbnQgYnJhbmNoIGludGVncmF0ZXMgd2l0aCkgb2J2aW91c2x5IGRvIG5vdCB3b3JrLCBhcyB0aGVyZSBpcyBubwogKHJlYWwpIGN1cnJlbnQgYnJhbmNoIHRvIGFzayBhYm91dCBpbiB0aGlzIHN0YXRlLgogCkBAIC0yNjcsNyArMjY3LDcgQEAKIAlUaGUgZGVmYXVsdCB1cHN0cmVhbSA8PGRlZl9yZXBvc2l0b3J5LHJlcG9zaXRvcnk+Pi4gTW9zdCBwcm9qZWN0cyBoYXZlCiAJYXQgbGVhc3Qgb25lIHVwc3RyZWFtIHByb2plY3Qgd2hpY2ggdGhleSB0cmFjay4gQnkgZGVmYXVsdAogCSdvcmlnaW4nIGlzIHVzZWQgZm9yIHRoYXQgcHVycG9zZS4gTmV3IHVwc3RyZWFtIHVwZGF0ZXMKLQl3aWxsIGJlIGZldGNoZWQgaW50byByZW1vdGUgPDxkZWZfcmVtb3RlX3RyYWNraW5nX2JyYW5jaCxyZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXM+PiBuYW1lZAorCXdpbGwgYmUgZmV0Y2hlZCBpbnRvIDw8ZGVmX3JlbW90ZV90cmFja2luZ19icmFuY2gscmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzPj4gbmFtZWQKIAlvcmlnaW4vbmFtZS1vZi11cHN0cmVhbS1icmFuY2gsIHdoaWNoIHlvdSBjYW4gc2VlIHVzaW5nCiAJYGdpdCBicmFuY2ggLXJgLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL25ldy1jb21tYW5kLnR4dCBiL0RvY3VtZW50YXRpb24vaG93dG8vbmV3LWNvbW1hbmQudHh0CmluZGV4IDJhYmMzYTAuLmQ3ZGU1YTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vaG93dG8vbmV3LWNvbW1hbmQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vbmV3LWNvbW1hbmQudHh0CkBAIC05NCw3ICs5NCw3IEBACiA2LiBUaGVyZSBpcyBhIGZpbGUgY29tbWFuZC1saXN0LnR4dCBpbiB0aGUgZGlzdHJpYnV0aW9uIG1haW4gZGlyZWN0b3J5CiB0aGF0IGNhdGVnb3JpemVzIGNvbW1hbmRzIGJ5IHR5cGUsIHNvIHRoZXkgY2FuIGJlIGxpc3RlZCBpbiBhcHByb3ByaWF0ZQogc3Vic2VjdGlvbnMgaW4gdGhlIGRvY3VtZW50YXRpb24ncyBzdW1tYXJ5IGNvbW1hbmQgbGlzdC4gIEFkZCBhbiBlbnRyeQotZm9yIHlvdXJzLiAgVG8gdW5kZXJzdGFuZCB0aGUgY2F0ZWdvcmllcywgbG9vayBhdCBnaXQtY21tYW5kcy50eHQKK2ZvciB5b3Vycy4gIFRvIHVuZGVyc3RhbmQgdGhlIGNhdGVnb3JpZXMsIGxvb2sgYXQgZ2l0LWNvbW1hbmRzLnR4dAogaW4gdGhlIG1haW4gZGlyZWN0b3J5LgogCiA3LiBHaXZlIHRoZSBtYWludGFpbmVyIG9uZSBwYXJhZ3JhcGggdG8gaW5jbHVkZSBpbiB0aGUgUmVsTm90ZXMgZmlsZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9ob3d0by9yZXZlcnQtYnJhbmNoLXJlYmFzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dAppbmRleCA4NGRkODM5Li4wZDU0MTllIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2hvd3RvL3JldmVydC1icmFuY2gtcmViYXNlLnR4dApAQCAtMTIsNyArMTIsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogT25lIG9mIHRoZSBjaGFuZ2VzIEkgcHVsbGVkIGludG8gdGhlICdtYXN0ZXInIGJyYW5jaCB0dXJucyBvdXQgdG8KLWJyZWFrIGJ1aWxkaW5nIEdpdCB3aXRoIEdDQyAyLjk1LiAgV2hpbGUgdGhleSB3ZXJlIHdlbGwgaW50ZW50aW9uZWQKK2JyZWFrIGJ1aWxkaW5nIEdpdCB3aXRoIEdDQyAyLjk1LiAgV2hpbGUgdGhleSB3ZXJlIHdlbGwtaW50ZW50aW9uZWQKIHBvcnRhYmlsaXR5IGZpeGVzLCBrZWVwaW5nIHRoaW5ncyB3b3JraW5nIHdpdGggZ2NjLTIuOTUgd2FzIGFsc28KIGltcG9ydGFudC4gIEhlcmUgaXMgd2hhdCBJIGRpZCB0byByZXZlcnQgdGhlIGNoYW5nZSBpbiB0aGUgJ21hc3RlcicKIGJyYW5jaCBhbmQgdG8gYWRqdXN0IHRoZSAncHUnIGJyYW5jaCwgdXNpbmcgY29yZSBHaXQgdG9vbHMgYW5kCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2xpbmUtcmFuZ2UtZm9ybWF0LnR4dCBiL0RvY3VtZW50YXRpb24vbGluZS1yYW5nZS1mb3JtYXQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlN2NlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2N1bWVudGF0aW9uL2xpbmUtcmFuZ2UtZm9ybWF0LnR4dApAQCAtMCwwICsxLDI1IEBACistIG51bWJlcgorKworSWYgPHN0YXJ0PiBvciA8ZW5kPiBpcyBhIG51bWJlciwgaXQgc3BlY2lmaWVzIGFuCithYnNvbHV0ZSBsaW5lIG51bWJlciAobGluZXMgY291bnQgZnJvbSAxKS4KKysKKworLSAvcmVnZXgvCisrCitUaGlzIGZvcm0gd2lsbCB1c2UgdGhlIGZpcnN0IGxpbmUgbWF0Y2hpbmcgdGhlIGdpdmVuCitQT1NJWCByZWdleC4gIElmIDxlbmQ+IGlzIGEgcmVnZXgsIGl0IHdpbGwgc2VhcmNoCitzdGFydGluZyBhdCB0aGUgbGluZSBnaXZlbiBieSA8c3RhcnQ+LgorKworCistICtvZmZzZXQgb3IgLW9mZnNldAorKworVGhpcyBpcyBvbmx5IHZhbGlkIGZvciA8ZW5kPiBhbmQgd2lsbCBzcGVjaWZ5IGEgbnVtYmVyCitvZiBsaW5lcyBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGxpbmUgZ2l2ZW4gYnkgPHN0YXJ0Pi4KKysKKworLSA6cmVnZXgKKysKK0lmIHRoZSBvcHRpb24ncyBhcmd1bWVudCBpcyBvZiB0aGUgZm9ybSA6cmVnZXgsIGl0IGRlbm90ZXMgdGhlIHJhbmdlCitmcm9tIHRoZSBmaXJzdCBmdW5jbmFtZSBsaW5lIHRoYXQgbWF0Y2hlcyA8cmVnZXg+LCB1cCB0byB0aGUgbmV4dAorZnVuY25hbWUgbGluZS4KKysKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcHVsbC1mZXRjaC1wYXJhbS50eHQgYi9Eb2N1bWVudGF0aW9uL3B1bGwtZmV0Y2gtcGFyYW0udHh0CmluZGV4IDk0YTlkMzIuLjE4Y2ZmYzIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcHVsbC1mZXRjaC1wYXJhbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9wdWxsLWZldGNoLXBhcmFtLnR4dApAQCAtNjgsNiArNjgsMTEgQEAKICsKICogYHRhZyA8dGFnPmAgbWVhbnMgdGhlIHNhbWUgYXMgYHJlZnMvdGFncy88dGFnPjpyZWZzL3RhZ3MvPHRhZz5gOwogICBpdCByZXF1ZXN0cyBmZXRjaGluZyBldmVyeXRoaW5nIHVwIHRvIHRoZSBnaXZlbiB0YWcuCi0qIEEgcGFyYW1ldGVyIDxyZWY+IHdpdGhvdXQgYSBjb2xvbiBpcyBlcXVpdmFsZW50IHRvCi0gIDxyZWY+OiB3aGVuIHB1bGxpbmcvZmV0Y2hpbmcsIHNvIGl0IG1lcmdlcyA8cmVmPiBpbnRvIHRoZSBjdXJyZW50Ci0gIGJyYW5jaCB3aXRob3V0IHN0b3JpbmcgdGhlIHJlbW90ZSBicmFuY2ggYW55d2hlcmUgbG9jYWxseQoraWZuZGVmOjpnaXQtcHVsbFtdCisqIEEgcGFyYW1ldGVyIDxyZWY+IHdpdGhvdXQgYSBjb2xvbiBmZXRjaGVzIHRoYXQgcmVmIGludG8gRkVUQ0hfSEVBRCwKK2VuZGlmOjpnaXQtcHVsbFtdCitpZmRlZjo6Z2l0LXB1bGxbXQorKiBBIHBhcmFtZXRlciA8cmVmPiB3aXRob3V0IGEgY29sb24gbWVyZ2VzIDxyZWY+IGludG8gdGhlIGN1cnJlbnQKKyAgYnJhbmNoLAorZW5kaWY6OmdpdC1wdWxsW10KKyAgYW5kIHVwZGF0ZXMgdGhlIHJlbW90ZS10cmFja2luZyBicmFuY2hlcyAoaWYgYW55KS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQgYi9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0CmluZGV4IDgzYWUyMGMuLjViZGZiNDIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dApAQCAtMjcxLDggKzI3MSw4IEBACiAKIC0tYm91bmRhcnk6OgogCi0JT3V0cHV0IHVuaW50ZXJlc3RpbmcgY29tbWl0cyBhdCB0aGUgYm91bmRhcnksIHdoaWNoIGFyZSB1c3VhbGx5Ci0Jbm90IHNob3duLgorCU91dHB1dCBleGNsdWRlZCBib3VuZGFyeSBjb21taXRzLiBCb3VuZGFyeSBjb21taXRzIGFyZQorCXByZWZpeGVkIHdpdGggYC1gLgogCiAtLQogCkBAIC0zNDIsMTMgKzM0MiwxMyBAQAogaWxsdXN0cmF0ZSB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBzaW1wbGlmaWNhdGlvbiBzZXR0aW5ncy4gIFdlIGFzc3VtZQogdGhhdCB5b3UgYXJlIGZpbHRlcmluZyBmb3IgYSBmaWxlIGBmb29gIGluIHRoaXMgY29tbWl0IGdyYXBoOgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQkgIC4tQS0tLU0tLS1OLS0tTy0tLVAKLQkgLyAgICAgLyAgIC8gICAvICAgLwotCUkgICAgIEIgICBDICAgRCAgIEUKLQkgXCAgIC8gICAvICAgLyAgIC8KLQkgIGAtLS0tLS0tLS0tLS0tJworCSAgLi1BLS0tTS0tLU4tLS1PLS0tUC0tLVEKKwkgLyAgICAgLyAgIC8gICAvICAgLyAgIC8KKwlJICAgICBCICAgQyAgIEQgICBFICAgWQorCSBcICAgLyAgIC8gICAvICAgLyAgIC8KKwkgIGAtLS0tLS0tLS0tLS0tJyAgIFgKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1UaGUgaG9yaXpvbnRhbCBsaW5lIG9mIGhpc3RvcnkgQS0tLVAgaXMgdGFrZW4gdG8gYmUgdGhlIGZpcnN0IHBhcmVudCBvZgorVGhlIGhvcml6b250YWwgbGluZSBvZiBoaXN0b3J5IEEtLS1RIGlzIHRha2VuIHRvIGJlIHRoZSBmaXJzdCBwYXJlbnQgb2YKIGVhY2ggbWVyZ2UuICBUaGUgY29tbWl0cyBhcmU6CiAKICogYElgIGlzIHRoZSBpbml0aWFsIGNvbW1pdCwgaW4gd2hpY2ggYGZvb2AgZXhpc3RzIHdpdGggY29udGVudHMKQEAgLTM2Nyw4ICszNjcsMTEgQEAKICAgYE5gIGFuZCBgRGAgdG8gImZvb2JhcmJheiI7IGkuZS4sIGl0IGlzIG5vdCBUUkVFU0FNRSB0byBhbnkgcGFyZW50LgogCiAqIGBFYCBjaGFuZ2VzIGBxdXV4YCB0byAieHl6enkiLCBhbmQgaXRzIG1lcmdlIGBQYCBjb21iaW5lcyB0aGUKLSAgc3RyaW5ncyB0byAicXV1eCB4eXp6eSIuICBEZXNwaXRlIGFwcGVhcmluZyBpbnRlcmVzdGluZywgYFBgIGlzCi0gIFRSRUVTQU1FIHRvIGFsbCBwYXJlbnRzLgorICBzdHJpbmdzIHRvICJxdXV4IHh5enp5Ii4gIGBQYCBpcyBUUkVFU0FNRSB0byBgT2AsIGJ1dCBub3QgdG8gYEVgLgorCisqIGBYYCBpcyBhbiBpbmRlcGVuZGVudCByb290IGNvbW1pdCB0aGF0IGFkZGVkIGEgbmV3IGZpbGUgYHNpZGVgLCBhbmQgYFlgCisgIG1vZGlmaWVkIGl0LiBgWWAgaXMgVFJFRVNBTUUgdG8gYFhgLiBJdHMgbWVyZ2UgYFFgIGFkZGVkIGBzaWRlYCB0byBgUGAsIGFuZAorICBgUWAgaXMgVFJFRVNBTUUgdG8gYFBgLCBidXQgbm90IHRvIGBZYC4KIAogJ3Jldi1saXN0JyB3YWxrcyBiYWNrd2FyZHMgdGhyb3VnaCBoaXN0b3J5LCBpbmNsdWRpbmcgb3IgZXhjbHVkaW5nCiBjb21taXRzIGJhc2VkIG9uIHdoZXRoZXIgJ1wtLWZ1bGwtaGlzdG9yeScgYW5kL29yIHBhcmVudCByZXdyaXRpbmcKQEAgLTQxMCwxMCArNDEzLDEwIEBACiAJdGhlIGV4YW1wbGUsIHdlIGdldAogKwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlJICBBICBCICBOICBEICBPCisJSSAgQSAgQiAgTiAgRCAgTyAgUCAgUQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICsKLWBQYCBhbmQgYE1gIHdlcmUgZXhjbHVkZWQgYmVjYXVzZSB0aGV5IGFyZSBUUkVFU0FNRSB0byBhIHBhcmVudC4gIGBFYCwKK2BNYCB3YXMgZXhjbHVkZWQgYmVjYXVzZSBpdCBpcyBUUkVFU0FNRSB0byBib3RoIHBhcmVudHMuICBgRWAsCiBgQ2AgYW5kIGBCYCB3ZXJlIGFsbCB3YWxrZWQsIGJ1dCBvbmx5IGBCYCB3YXMgIVRSRUVTQU1FLCBzbyB0aGUgb3RoZXJzCiBkbyBub3QgYXBwZWFyLgogKwpAQCAtNDMxLDcgKzQzNCw3IEBACiB0aGVtc2VsdmVzLiAgVGhpcyByZXN1bHRzIGluCiArCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCSAgLi1BLS0tTS0tLU4tLS1PLS0tUAorCSAgLi1BLS0tTS0tLU4tLS1PLS0tUC0tLVEKIAkgLyAgICAgLyAgIC8gICAvICAgLwogCUkgICAgIEIgICAvICAgRCAgIC8KIAkgXCAgIC8gICAvICAgLyAgIC8KQEAgLTQ0MSw3ICs0NDQsNyBAQAogQ29tcGFyZSB0byAnXC0tZnVsbC1oaXN0b3J5JyB3aXRob3V0IHJld3JpdGluZyBhYm92ZS4gIE5vdGUgdGhhdCBgRWAKIHdhcyBwcnVuZWQgYXdheSBiZWNhdXNlIGl0IGlzIFRSRUVTQU1FLCBidXQgdGhlIHBhcmVudCBsaXN0IG9mIFAgd2FzCiByZXdyaXR0ZW4gdG8gY29udGFpbiBgRWAncyBwYXJlbnQgYElgLiAgVGhlIHNhbWUgaGFwcGVuZWQgZm9yIGBDYCBhbmQKLWBOYC4gIE5vdGUgYWxzbyB0aGF0IGBQYCB3YXMgaW5jbHVkZWQgZGVzcGl0ZSBiZWluZyBUUkVFU0FNRS4KK2BOYCwgYW5kIGBYYCwgYFlgIGFuZCBgUWAuCiAKIEluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBzZXR0aW5ncywgeW91IGNhbiBjaGFuZ2Ugd2hldGhlciBUUkVFU0FNRQogYWZmZWN0cyBpbmNsdXNpb246CkBAIC00NzEsOCArNDc0LDkgQEAKICogU2V0IGBDJ2AgdG8gYENgLgogKwogKiBSZXBsYWNlIGVhY2ggcGFyZW50IGBQYCBvZiBgQydgIHdpdGggaXRzIHNpbXBsaWZpY2F0aW9uIGBQJ2AuICBJbgotICB0aGUgcHJvY2VzcywgZHJvcCBwYXJlbnRzIHRoYXQgYXJlIGFuY2VzdG9ycyBvZiBvdGhlciBwYXJlbnRzLCBhbmQKLSAgcmVtb3ZlIGR1cGxpY2F0ZXMuCisgIHRoZSBwcm9jZXNzLCBkcm9wIHBhcmVudHMgdGhhdCBhcmUgYW5jZXN0b3JzIG9mIG90aGVyIHBhcmVudHMgb3IgdGhhdCBhcmUKKyAgcm9vdCBjb21taXRzIFRSRUVTQU1FIHRvIGFuIGVtcHR5IHRyZWUsIGFuZCByZW1vdmUgZHVwbGljYXRlcywgYnV0IHRha2UgY2FyZQorICB0byBuZXZlciBkcm9wIGFsbCBwYXJlbnRzIHRoYXQgd2UgYXJlIFRSRUVTQU1FIHRvLgogKwogKiBJZiBhZnRlciB0aGlzIHBhcmVudCByZXdyaXRpbmcsIGBDJ2AgaXMgYSByb290IG9yIG1lcmdlIGNvbW1pdCAoaGFzCiAgIHplcm8gb3IgPjEgcGFyZW50cyksIGEgYm91bmRhcnkgY29tbWl0LCBvciAhVFJFRVNBTUUsIGl0IHJlbWFpbnMuCkBAIC00OTAsNyArNDk0LDcgQEAKIAkgIGAtLS0tLS0tLS0nCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKwotTm90ZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYE5gIGFuZCBgUGAgb3ZlciAnLS1mdWxsLWhpc3RvcnknOgorTm90ZSB0aGUgbWFqb3IgZGlmZmVyZW5jZXMgaW4gYE5gLCBgUGAgYW5kIGBRYCBvdmVyICctLWZ1bGwtaGlzdG9yeSc6CiArCiAtLQogKiBgTmAncyBwYXJlbnQgbGlzdCBoYWQgYElgIHJlbW92ZWQsIGJlY2F1c2UgaXQgaXMgYW4gYW5jZXN0b3Igb2YgdGhlCkBAIC00OTgsNiArNTAyLDEwIEBACiArCiAqIGBQYCdzIHBhcmVudCBsaXN0IHNpbWlsYXJseSBoYWQgYElgIHJlbW92ZWQuICBgUGAgd2FzIHRoZW4KICAgcmVtb3ZlZCBjb21wbGV0ZWx5LCBiZWNhdXNlIGl0IGhhZCBvbmUgcGFyZW50IGFuZCBpcyBUUkVFU0FNRS4KKysKKyogYFFgJ3MgcGFyZW50IGxpc3QgaGFkIGBZYCBzaW1wbGlmaWVkIHRvIGBYYC4gYFhgIHdhcyB0aGVuIHJlbW92ZWQsIGJlY2F1c2UgaXQKKyAgd2FzIGEgVFJFRVNBTUUgcm9vdC4gYFFgIHdhcyB0aGVuIHJlbW92ZWQgY29tcGxldGVseSwgYmVjYXVzZSBpdCBoYWQgb25lCisgIHBhcmVudCBhbmQgaXMgVFJFRVNBTUUuCiAtLQogCiBGaW5hbGx5LCB0aGVyZSBpcyBhIGZpZnRoIHNpbXBsaWZpY2F0aW9uIG1vZGUgYXZhaWxhYmxlOgpAQCAtNjE3LDYgKzYyNSwxMCBAQAogCVNob3cgbm8gcGFyZW50cyBiZWZvcmUgYWxsIG9mIGl0cyBjaGlsZHJlbiBhcmUgc2hvd24sIGJ1dAogCW90aGVyd2lzZSBzaG93IGNvbW1pdHMgaW4gdGhlIGNvbW1pdCB0aW1lc3RhbXAgb3JkZXIuCiAKKy0tYXV0aG9yLWRhdGUtb3JkZXI6OgorCVNob3cgbm8gcGFyZW50cyBiZWZvcmUgYWxsIG9mIGl0cyBjaGlsZHJlbiBhcmUgc2hvd24sIGJ1dAorCW90aGVyd2lzZSBzaG93IGNvbW1pdHMgaW4gdGhlIGF1dGhvciB0aW1lc3RhbXAgb3JkZXIuCisKIC0tdG9wby1vcmRlcjo6CiAJU2hvdyBubyBwYXJlbnRzIGJlZm9yZSBhbGwgb2YgaXRzIGNoaWxkcmVuIGFyZSBzaG93biwgYW5kCiAJYXZvaWQgc2hvd2luZyBjb21taXRzIG9uIG11bHRpcGxlIGxpbmVzIG9mIGhpc3RvcnkKQEAgLTgzNyw3ICs4NDksNCBAQAogLXQ6OgogCiAJU2hvdyB0aGUgdHJlZSBvYmplY3RzIGluIHRoZSBkaWZmIG91dHB1dC4gVGhpcyBpbXBsaWVzICctcicuCi0KLS1zOjoKLQlTdXBwcmVzcyBkaWZmIG91dHB1dC4KIGVuZGlmOjpnaXQtcmV2LWxpc3RbXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9yZXZpc2lvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9yZXZpc2lvbnMudHh0CmluZGV4IGQ0NzdiM2YuLjA5ODk2YTMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcmV2aXNpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3JldmlzaW9ucy50eHQKQEAgLTU4LDYgKzU4LDkgQEAKIFdoaWxlIHRoZSByZWYgbmFtZSBlbmNvZGluZyBpcyB1bnNwZWNpZmllZCwgVVRGLTggaXMgcHJlZmVycmVkIGFzCiBzb21lIG91dHB1dCBwcm9jZXNzaW5nIG1heSBhc3N1bWUgcmVmIG5hbWVzIGluIFVURi04LgogCisnQCc6OgorICAnQCcgYWxvbmUgaXMgYSBzaG9ydGN1dCBmb3IgJ0hFQUQnLgorCiAnPHJlZm5hbWU+QFx7PGRhdGU+XH0nLCBlLmcuICdtYXN0ZXJAXHt5ZXN0ZXJkYXlcfScsICdIRUFEQFx7NSBtaW51dGVzIGFnb1x9Jzo6CiAgIEEgcmVmIGZvbGxvd2VkIGJ5IHRoZSBzdWZmaXggJ0AnIHdpdGggYSBkYXRlIHNwZWNpZmljYXRpb24KICAgZW5jbG9zZWQgaW4gYSBicmFjZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXBhcnNlLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXBhcnNlLW9wdGlvbnMudHh0CmluZGV4IGU4ZjFlZjEuLjBiZTJiNTEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1wYXJzZS1vcHRpb25zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcGFyc2Utb3B0aW9ucy50eHQKQEAgLTQxLDYgKzQxLDggQEAKICogQm9vbGVhbiBsb25nIG9wdGlvbnMgY2FuIGJlICduZWdhdGVkJyAob3IgJ3Vuc2V0JykgYnkgcHJlcGVuZGluZwogICBgbm8tYCwgZS5nLiBgLS1uby1hYmJyZXZgIGluc3RlYWQgb2YgYC0tYWJicmV2YC4gQ29udmVyc2VseSwKICAgb3B0aW9ucyB0aGF0IGJlZ2luIHdpdGggYG5vLWAgY2FuIGJlICduZWdhdGVkJyBieSByZW1vdmluZyBpdC4KKyAgT3RoZXIgbG9uZyBvcHRpb25zIGNhbiBiZSB1bnNldCAoZS5nLiwgc2V0IHN0cmluZyB0byBOVUxMLCBzZXQKKyAgaW50ZWdlciB0byAwKSBieSBwcmVwZW5kaW5nIGBuby1gLgogCiAqIE9wdGlvbnMgYW5kIG5vbi1vcHRpb24gYXJndW1lbnRzIGNhbiBjbGVhcmx5IGJlIHNlcGFyYXRlZCB1c2luZyB0aGUgYC0tYAogICBvcHRpb24sIGUuZy4gYC1hIC1iIC0tb3B0aW9uIC0tIC0tdGhpcy1pcy1hLWZpbGVgIGluZGljYXRlcyB0aGF0CkBAIC0xNzQsNiArMTc2LDEwIEBACiAJSW50cm9kdWNlIGFuIG9wdGlvbiB3aXRoIGRhdGUgYXJndW1lbnQsIHNlZSBgYXBwcm94aWRhdGUoKWAuCiAJVGhlIHRpbWVzdGFtcCBpcyBwdXQgaW50byBgaW50X3ZhcmAuCiAKK2BPUFRfRVhQSVJZX0RBVEUoc2hvcnQsIGxvbmcsICZpbnRfdmFyLCBkZXNjcmlwdGlvbilgOjoKKwlJbnRyb2R1Y2UgYW4gb3B0aW9uIHdpdGggZXhwaXJ5IGRhdGUgYXJndW1lbnQsIHNlZSBgcGFyc2VfZXhwaXJ5X2RhdGUoKWAuCisJVGhlIHRpbWVzdGFtcCBpcyBwdXQgaW50byBgaW50X3ZhcmAuCisKIGBPUFRfQ0FMTEJBQ0soc2hvcnQsIGxvbmcsICZ2YXIsIGFyZ19zdHIsIGRlc2NyaXB0aW9uLCBmdW5jX3B0cilgOjoKIAlJbnRyb2R1Y2UgYW4gb3B0aW9uIHdpdGggYXJndW1lbnQuCiAJVGhlIGFyZ3VtZW50IHdpbGwgYmUgZmVkIGludG8gdGhlIGZ1bmN0aW9uIGdpdmVuIGJ5IGBmdW5jX3B0cmAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZXZpc2lvbi13YWxraW5nLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1yZXZpc2lvbi13YWxraW5nLnR4dAppbmRleCBiN2QwZDlhLi41NWI4NzhhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktcmV2aXNpb24td2Fsa2luZy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJldmlzaW9uLXdhbGtpbmcudHh0CkBAIC01OSw3ICs1OSw3IEBACiBgcmVzZXRfcmV2aXNpb25fd2Fsa2A6OgogCiAJUmVzZXQgdGhlIGZsYWdzIHVzZWQgYnkgdGhlIHJldmlzaW9uIHdhbGtpbmcgYXBpLiBZb3UgY2FuIHVzZQotCXRoaXMgdG8gZG8gbXVsdGlwbGUgc2VxdWVuY2lhbCByZXZpc2lvbiB3YWxrcy4KKwl0aGlzIHRvIGRvIG11bHRpcGxlIHNlcXVlbnRpYWwgcmV2aXNpb24gd2Fsa3MuCiAKIERhdGEgc3RydWN0dXJlcwogLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9pbmRleC1mb3JtYXQudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dAppbmRleCAwODEwMjUxLi5mMzUyYTliIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9pbmRleC1mb3JtYXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2luZGV4LWZvcm1hdC50eHQKQEAgLTE3NSw3ICsxNzUsNyBAQAogCiAgIEEgY29uZmxpY3QgaXMgcmVwcmVzZW50ZWQgaW4gdGhlIGluZGV4IGFzIGEgc2V0IG9mIGhpZ2hlciBzdGFnZSBlbnRyaWVzLgogICBXaGVuIGEgY29uZmxpY3QgaXMgcmVzb2x2ZWQgKGUuZy4gd2l0aCAiZ2l0IGFkZCBwYXRoIiksIHRoZXNlIGhpZ2hlcgotICBzdGFnZSBlbnRyaWVzIHdpbGwgYmUgcmVtb3ZlZCBhbmQgYSBzdGFnZS0wIGVudHJ5IHdpdGggcHJvcGVyIHJlc29sdXRvbgorICBzdGFnZSBlbnRyaWVzIHdpbGwgYmUgcmVtb3ZlZCBhbmQgYSBzdGFnZS0wIGVudHJ5IHdpdGggcHJvcGVyIHJlc29sdXRpb24KICAgaXMgYWRkZWQuCiAKICAgV2hlbiB0aGVzZSBoaWdoZXIgc3RhZ2UgZW50cmllcyBhcmUgcmVtb3ZlZCwgdGhleSBhcmUgc2F2ZWQgaW4gdGhlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wcm90b2NvbC1jYXBhYmlsaXRpZXMudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcHJvdG9jb2wtY2FwYWJpbGl0aWVzLnR4dAppbmRleCBiMTU1MTdmLi5mZDhmZmE1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wcm90b2NvbC1jYXBhYmlsaXRpZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3Byb3RvY29sLWNhcGFiaWxpdGllcy50eHQKQEAgLTE4LDExICsxOCwxMiBAQAogYW5kIHNlcnZlciBhZHZlcnRpc2VkLiAgQXMgYSBjb25zZXF1ZW5jZSBvZiB0aGVzZSBydWxlcywgc2VydmVyIE1VU1QKIE5PVCBhZHZlcnRpc2UgY2FwYWJpbGl0aWVzIGl0IGRvZXMgbm90IHVuZGVyc3RhbmQuCiAKLVRoZSAncmVwb3J0LXN0YXR1cycgYW5kICdkZWxldGUtcmVmcycgY2FwYWJpbGl0aWVzIGFyZSBzZW50IGFuZAorVGhlICdyZXBvcnQtc3RhdHVzJywgJ2RlbGV0ZS1yZWZzJywgYW5kICdxdWlldCcgY2FwYWJpbGl0aWVzIGFyZSBzZW50IGFuZAogcmVjb2duaXplZCBieSB0aGUgcmVjZWl2ZS1wYWNrIChwdXNoIHRvIHNlcnZlcikgcHJvY2Vzcy4KIAotVGhlICdvZnMtZGVsdGEnIGNhcGFiaWxpdHkgaXMgc2VudCBhbmQgcmVjb2duaXplZCBieSBib3RoIHVwbG9hZC1wYWNrCi1hbmQgcmVjZWl2ZS1wYWNrIHByb3RvY29scy4KK1RoZSAnb2ZzLWRlbHRhJyBhbmQgJ3NpZGUtYmFuZC02NGsnIGNhcGFiaWxpdGllcyBhcmUgc2VudCBhbmQgcmVjb2duaXplZAorYnkgYm90aCB1cGxvYWQtcGFjayBhbmQgcmVjZWl2ZS1wYWNrIHByb3RvY29scy4gIFRoZSAnYWdlbnQnIGNhcGFiaWxpdHkKK21heSBvcHRpb25hbGx5IGJlIHNlbnQgaW4gYm90aCBwcm90b2NvbHMuCiAKIEFsbCBvdGhlciBjYXBhYmlsaXRpZXMgYXJlIG9ubHkgcmVjb2duaXplZCBieSB0aGUgdXBsb2FkLXBhY2sgKGZldGNoCiBmcm9tIHNlcnZlcikgcHJvY2Vzcy4KQEAgLTEyMyw2ICsxMjQsMjAgQEAKIGl0cyBiYXNlIGJ5IHBvc2l0aW9uIGluIHBhY2sgcmF0aGVyIHRoYW4gYnkgYW4gb2JqLWlkLiAgVGhhdCBpcywgdGhleSBjYW4KIHNlbmQvcmVhZCBPQkpfT0ZTX0RFTFRBIChha2EgdHlwZSA2KSBpbiBhIHBhY2tmaWxlLgogCithZ2VudAorLS0tLS0KKworVGhlIHNlcnZlciBtYXkgb3B0aW9uYWxseSBzZW5kIGEgY2FwYWJpbGl0eSBvZiB0aGUgZm9ybSBgYWdlbnQ9WGAgdG8KK25vdGlmeSB0aGUgY2xpZW50IHRoYXQgdGhlIHNlcnZlciBpcyBydW5uaW5nIHZlcnNpb24gYFhgLiBUaGUgY2xpZW50IG1heQorb3B0aW9uYWxseSByZXR1cm4gaXRzIG93biBhZ2VudCBzdHJpbmcgYnkgcmVzcG9uZGluZyB3aXRoIGFuIGBhZ2VudD1ZYAorY2FwYWJpbGl0eSAoYnV0IGl0IE1VU1QgTk9UIGRvIHNvIGlmIHRoZSBzZXJ2ZXIgZGlkIG5vdCBtZW50aW9uIHRoZQorYWdlbnQgY2FwYWJpbGl0eSkuIFRoZSBgWGAgYW5kIGBZYCBzdHJpbmdzIG1heSBjb250YWluIGFueSBwcmludGFibGUKK0FTQ0lJIGNoYXJhY3RlcnMgZXhjZXB0IHNwYWNlIChpLmUuLCB0aGUgYnl0ZSByYW5nZSAzMiA8IHggPCAxMjcpLCBhbmQKK2FyZSB0eXBpY2FsbHkgb2YgdGhlIGZvcm0gInBhY2thZ2UvdmVyc2lvbiIgKGUuZy4sICJnaXQvMS44LjMuMSIpLiBUaGUKK2FnZW50IHN0cmluZ3MgYXJlIHB1cmVseSBpbmZvcm1hdGl2ZSBmb3Igc3RhdGlzdGljcyBhbmQgZGVidWdnaW5nCitwdXJwb3NlcywgYW5kIE1VU1QgTk9UIGJlIHVzZWQgdG8gcHJvZ3JhbWF0aWNhbGx5IGFzc3VtZSB0aGUgcHJlc2VuY2UKK29yIGFic2VuY2Ugb2YgcGFydGljdWxhciBmZWF0dXJlcy4KKwogc2hhbGxvdwogLS0tLS0tLQogCkBAIC0xNjgsNyArMTgzLDcgQEAKIHJlcG9ydC1zdGF0dXMKIC0tLS0tLS0tLS0tLS0KIAotVGhlIHVwbG9hZC1wYWNrIHByb2Nlc3MgY2FuIHJlY2VpdmUgYSAncmVwb3J0LXN0YXR1cycgY2FwYWJpbGl0eSwKK1RoZSByZWNlaXZlLXBhY2sgcHJvY2VzcyBjYW4gcmVjZWl2ZSBhICdyZXBvcnQtc3RhdHVzJyBjYXBhYmlsaXR5LAogd2hpY2ggdGVsbHMgaXQgdGhhdCB0aGUgY2xpZW50IHdhbnRzIGEgcmVwb3J0IG9mIHdoYXQgaGFwcGVuZWQgYWZ0ZXIKIGEgcGFja2ZpbGUgdXBsb2FkIGFuZCByZWZlcmVuY2UgdXBkYXRlLiAgSWYgdGhlIHB1c2hpbmcgY2xpZW50IHJlcXVlc3RzCiB0aGlzIGNhcGFiaWxpdHksIGFmdGVyIHVucGFja2luZyBhbmQgdXBkYXRpbmcgcmVmZXJlbmNlcyB0aGUgc2VydmVyCkBAIC0xODUsMyArMjAwLDIwIEBACiB2YWx1ZSBvZiBhIHJlZmVyZW5jZSB1cGRhdGUuICBJdCBpcyBub3Qgc2VudCBiYWNrIGJ5IHRoZSBjbGllbnQsIGl0CiBzaW1wbHkgaW5mb3JtcyB0aGUgY2xpZW50IHRoYXQgaXQgY2FuIGJlIHNlbnQgemVyby1pZCB2YWx1ZXMKIHRvIGRlbGV0ZSByZWZlcmVuY2VzLgorCitxdWlldAorLS0tLS0KKworSWYgdGhlIHJlY2VpdmUtcGFjayBzZXJ2ZXIgYWR2ZXJ0aXNlcyB0aGUgJ3F1aWV0JyBjYXBhYmlsaXR5LCBpdCBpcworY2FwYWJsZSBvZiBzaWxlbmNpbmcgaHVtYW4tcmVhZGFibGUgcHJvZ3Jlc3Mgb3V0cHV0IHdoaWNoIG90aGVyd2lzZSBtYXkKK2JlIHNob3duIHdoZW4gcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZWQgcGFjay4gQSBzZW5kLXBhY2sgY2xpZW50IHNob3VsZAorcmVzcG9uZCB3aXRoIHRoZSAncXVpZXQnIGNhcGFiaWxpdHkgdG8gc3VwcHJlc3Mgc2VydmVyLXNpZGUgcHJvZ3Jlc3MKK3JlcG9ydGluZyBpZiB0aGUgbG9jYWwgcHJvZ3Jlc3MgcmVwb3J0aW5nIGlzIGFsc28gYmVpbmcgc3VwcHJlc3NlZAorKGUuZy4sIHZpYSBgcHVzaCAtcWAsIG9yIGlmIHN0ZGVyciBkb2VzIG5vdCBnbyB0byBhIHR0eSkuCisKK2FsbG93LXRpcC1zaGExLWluLXdhbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSWYgdGhlIHVwbG9hZC1wYWNrIHNlcnZlciBhZHZlcnRpc2VzIHRoaXMgY2FwYWJpbGl0eSwgZmV0Y2gtcGFjayBtYXkKK3NlbmQgIndhbnQiIGxpbmVzIHdpdGggU0hBLTFzIHRoYXQgZXhpc3QgYXQgdGhlIHNlcnZlciBidXQgYXJlIG5vdAorYWR2ZXJ0aXNlZCBieSB1cGxvYWQtcGFjay4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JhY3ktZ2l0LnR4dAppbmRleCA2ZGM4MmNhLi4yNDJhMDQ0IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yYWN5LWdpdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmFjeS1naXQudHh0CkBAIC00Niw3ICs0Niw3IEBACiBvbi1kaXNrIHRpbWVzdGFtcHMsIHJlc3VsdGluZyBpbiBtZWFuaW5nbGVzcyBjaGFuZ2VzIHdoZW4gYW4KIGlub2RlIGlzIGV2aWN0ZWQgZnJvbSB0aGUgaW5vZGUgY2FjaGUuICBTZWUgY29tbWl0IDhjZTEzYjAKIG9mIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90Z2x4L2hpc3RvcnkuZ2l0Ci0oW1BBVENIXSBTeW5jIGluIGNvcmUgdGltZSBncmFudWFsaXR5IHdpdGggZmlsZXN5c3RlbXMsCisoW1BBVENIXSBTeW5jIGluIGNvcmUgdGltZSBncmFudWxhcml0eSB3aXRoIGZpbGVzeXN0ZW1zLAogMjAwNS0wMS0wNCkuCiAKIFJhY3kgR2l0CkBAIC0xMzUsOSArMTM1LDkgQEAKICAgJCBnaXQgbHMtZmlsZXMgfCBnaXQgdXBkYXRlLWluZGV4IC0tc3RkaW4KICAgJCB0b3VjaCAtciAuZGF0ZXN0YW1wIC5naXQvaW5kZXgKIAotVGhpcyB3aWxsIG1ha2UgYWxsIGluZGV4IGVudHJpZXMgcmFjaWx5IGNsZWFuLiAgVGhlIGxpbnV4LTIuNgotcHJvamVjdCwgZm9yIGV4YW1wbGUsIHRoZXJlIGFyZSBvdmVyIDIwLDAwMCBmaWxlcyBpbiB0aGUgd29ya2luZwotdHJlZS4gIE9uIG15IEF0aGxvbiA2NCBYMiAzODAwKywgYWZ0ZXIgdGhlIGFib3ZlOgorVGhpcyB3aWxsIG1ha2UgYWxsIGluZGV4IGVudHJpZXMgcmFjaWx5IGNsZWFuLiAgVGhlIGxpbnV4IHByb2plY3QsIGZvcgorZXhhbXBsZSwgdGhlcmUgYXJlIG92ZXIgMjAsMDAwIGZpbGVzIGluIHRoZSB3b3JraW5nIHRyZWUuICBPbiBteQorQXRobG9uIDY0IFgyIDM4MDArLCBhZnRlciB0aGUgYWJvdmU6CiAKICAgJCAvdXNyL2Jpbi90aW1lIGdpdCBkaWZmLWZpbGVzCiAgIDEuNjh1c2VyIDAuNTRzeXN0ZW0gMDowMi4yMmVsYXBzZWQgMTAwJUNQVSAoMGF2Z3RleHQrMGF2Z2RhdGEgMG1heHJlc2lkZW50KWsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXJscy50eHQgYi9Eb2N1bWVudGF0aW9uL3VybHMudHh0CmluZGV4IDY0ZGFlMjAuLjljY2IyNDYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdXJscy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91cmxzLnR4dApAQCAtMjYsNiArMjYsMTIgQEAKIAogLSB7c3RhcnRzYn11c2VyQHtlbmRzYn1ob3N0Lnh6OnBhdGgvdG8vcmVwby5naXQvCiAKK1RoaXMgc3ludGF4IGlzIG9ubHkgcmVjb2duaXplZCBpZiB0aGVyZSBhcmUgbm8gc2xhc2hlcyBiZWZvcmUgdGhlCitmaXJzdCBjb2xvbi4gVGhpcyBoZWxwcyBkaWZmZXJlbnRpYXRlIGEgbG9jYWwgcGF0aCB0aGF0IGNvbnRhaW5zIGEKK2NvbG9uLiBGb3IgZXhhbXBsZSB0aGUgbG9jYWwgcGF0aCBgZm9vOmJhcmAgY291bGQgYmUgc3BlY2lmaWVkIGFzIGFuCithYnNvbHV0ZSBwYXRoIG9yIGAuL2ZvbzpiYXJgIHRvIGF2b2lkIGJlaW5nIG1pc2ludGVycHJldGVkIGFzIGFuIHNzaAordXJsLgorCiBUaGUgc3NoIGFuZCBnaXQgcHJvdG9jb2xzIGFkZGl0aW9uYWxseSBzdXBwb3J0IH51c2VybmFtZSBleHBhbnNpb246CiAKIC0gc3NoOi8ve3N0YXJ0c2J9dXNlckB7ZW5kc2J9aG9zdC54entzdGFydHNifTpwb3J0e2VuZHNifS9+e3N0YXJ0c2J9dXNlcntlbmRzYn0vcGF0aC90by9yZXBvLmdpdC8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdXNlci1tYW51YWwudHh0IGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKaW5kZXggMGExZGY1ZS4uZmU3MjNlNCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi91c2VyLW1hbnVhbC50eHQKQEAgLTY2LDggKzY2LDggQEAKIFRoZSBpbml0aWFsIGNsb25lIG1heSBiZSB0aW1lLWNvbnN1bWluZyBmb3IgYSBsYXJnZSBwcm9qZWN0LCBidXQgeW91CiB3aWxsIG9ubHkgbmVlZCB0byBjbG9uZSBvbmNlLgogCi1UaGUgY2xvbmUgY29tbWFuZCBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeSBuYW1lZCBhZnRlciB0aGUgcHJvamVjdCAoYGdpdGAKLW9yIGBsaW51eC0yLjZgIGluIHRoZSBleGFtcGxlcyBhYm92ZSkuICBBZnRlciB5b3UgY2QgaW50byB0aGlzCitUaGUgY2xvbmUgY29tbWFuZCBjcmVhdGVzIGEgbmV3IGRpcmVjdG9yeSBuYW1lZCBhZnRlciB0aGUgcHJvamVjdAorKGBnaXRgIG9yIGBsaW51eGAgaW4gdGhlIGV4YW1wbGVzIGFib3ZlKS4gIEFmdGVyIHlvdSBjZCBpbnRvIHRoaXMKIGRpcmVjdG9yeSwgeW91IHdpbGwgc2VlIHRoYXQgaXQgY29udGFpbnMgYSBjb3B5IG9mIHRoZSBwcm9qZWN0IGZpbGVzLAogY2FsbGVkIHRoZSA8PGRlZl93b3JraW5nX3RyZWUsd29ya2luZyB0cmVlPj4sIHRvZ2V0aGVyIHdpdGggYSBzcGVjaWFsCiB0b3AtbGV2ZWwgZGlyZWN0b3J5IG5hbWVkIGAuZ2l0YCwgd2hpY2ggY29udGFpbnMgYWxsIHRoZSBpbmZvcm1hdGlvbgpAQCAtNDMxLDE5ICs0MzEsMjUgQEAKIGNsb25lZCBmcm9tLCB1c2luZyBsaW5rZ2l0OmdpdC1yZW1vdGVbMV06CiAKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSQgZ2l0IHJlbW90ZSBhZGQgbGludXgtbmZzIGdpdDovL2xpbnV4LW5mcy5vcmcvcHViL25mcy0yLjYuZ2l0Ci0kIGdpdCBmZXRjaCBsaW51eC1uZnMKLSogcmVmcy9yZW1vdGVzL2xpbnV4LW5mcy9tYXN0ZXI6IHN0b3JpbmcgYnJhbmNoICdtYXN0ZXInIC4uLgotICBjb21taXQ6IGJmODFiNDYKKyQgZ2l0IHJlbW90ZSBhZGQgc3RhZ2luZyBnaXQ6Ly9naXQua2VybmVsLm9yZy8uLi4vZ3JlZ2toL3N0YWdpbmcuZ2l0CiskIGdpdCBmZXRjaCBzdGFnaW5nCisuLi4KK0Zyb20gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dyZWdraC9zdGFnaW5nCisgKiBbbmV3IGJyYW5jaF0gICAgICBtYXN0ZXIgICAgIC0+IHN0YWdpbmcvbWFzdGVyCisgKiBbbmV3IGJyYW5jaF0gICAgICBzdGFnaW5nLWxpbnVzIC0+IHN0YWdpbmcvc3RhZ2luZy1saW51cworICogW25ldyBicmFuY2hdICAgICAgc3RhZ2luZy1uZXh0IC0+IHN0YWdpbmcvc3RhZ2luZy1uZXh0CiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE5ldyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoZXMgd2lsbCBiZSBzdG9yZWQgdW5kZXIgdGhlIHNob3J0aGFuZCBuYW1lCi10aGF0IHlvdSBnYXZlIGBnaXQgcmVtb3RlIGFkZGAsIGluIHRoaXMgY2FzZSBgbGludXgtbmZzYDoKK3RoYXQgeW91IGdhdmUgYGdpdCByZW1vdGUgYWRkYCwgaW4gdGhpcyBjYXNlIGBzdGFnaW5nYDoKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBnaXQgYnJhbmNoIC1yCi1saW51eC1uZnMvbWFzdGVyCi1vcmlnaW4vbWFzdGVyCisgIG9yaWdpbi9IRUFEIC0+IG9yaWdpbi9tYXN0ZXIKKyAgb3JpZ2luL21hc3RlcgorICBzdGFnaW5nL21hc3RlcgorICBzdGFnaW5nL3N0YWdpbmctbGludXMKKyAgc3RhZ2luZy9zdGFnaW5nLW5leHQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IHJ1biBgZ2l0IGZldGNoIDxyZW1vdGU+YCBsYXRlciwgdGhlIHJlbW90ZS10cmFja2luZyBicmFuY2hlcwpAQCAtNDU1LDkgKzQ2MSw5IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAkIGNhdCAuZ2l0L2NvbmZpZwogLi4uCi1bcmVtb3RlICJsaW51eC1uZnMiXQotCXVybCA9IGdpdDovL2xpbnV4LW5mcy5vcmcvcHViL25mcy0yLjYuZ2l0Ci0JZmV0Y2ggPSArcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9saW51eC1uZnMvKgorW3JlbW90ZSAic3RhZ2luZyJdCisJdXJsID0gZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2dyZWdraC9zdGFnaW5nLmdpdAorCWZldGNoID0gK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvc3RhZ2luZy8qCiAuLi4KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTgzNSw3ICsxODQxLDcgQEAKIHJlc29sdXRpb24sIGluc3RlYWQgb2YgY3JlYXRpbmcgYSBuZXcgY29tbWl0LCBqdXN0IHJ1bgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBhbSAtLXJlc29sdmVkCiskIGdpdCBhbSAtLWNvbnRpbnVlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGFuZCBHaXQgd2lsbCBjcmVhdGUgdGhlIGNvbW1pdCBmb3IgeW91IGFuZCBjb250aW51ZSBhcHBseWluZyB0aGUKQEAgLTIxNTYsNyArMjE2Miw3IEBACiB0cmVlOgogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0kIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXgtMi42LmdpdCB3b3JrCiskIGdpdCBjbG9uZSBnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0IHdvcmsKICQgY2Qgd29yawogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMTk4LDcgKzIyMDQsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogJCBjYXQgPj4gLmdpdC9jb25maWcgPDxFT0YKIFtyZW1vdGUgIm15dHJlZSJdCi0JdXJsID0gIG1hc3Rlci5rZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWVnbC9saW51eC0yLjYuZ2l0CisJdXJsID0gIG1hc3Rlci5rZXJuZWwub3JnOi9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvYWVnbC9saW51eC5naXQKIAlwdXNoID0gcmVsZWFzZQogCXB1c2ggPSB0ZXN0CiBFT0YKZGlmZiAtLWdpdCBhL0dJVC1WRVJTSU9OLUdFTiBiL0dJVC1WRVJTSU9OLUdFTgppbmRleCBiNmI1ZGFhLi5lZGU5OGE4IDEwMDc1NQotLS0gYS9HSVQtVkVSU0lPTi1HRU4KKysrIGIvR0lULVZFUlNJT04tR0VOCkBAIC0xLDcgKzEsNyBAQAogIyEvYmluL3NoCiAKIEdWRj1HSVQtVkVSU0lPTi1GSUxFCi1ERUZfVkVSPXYxLjguMy40CitERUZfVkVSPXYxLjguNC1yYzEKIAogTEY9JwogJwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQppbmRleCAzYzE3MjM0Li4zNTg4Y2ExIDEwMDY0NAotLS0gYS9NYWtlZmlsZQorKysgYi9NYWtlZmlsZQpAQCAtMTA5LDcgKzEwOSw3IEBACiAjIERlZmluZSBOT19GTk1BVENIX0NBU0VGT0xEIGlmIHlvdXIgZm5tYXRjaCBmdW5jdGlvbiBkb2Vzbid0IGhhdmUgdGhlCiAjIEZOTV9DQVNFRk9MRCBHTlUgZXh0ZW5zaW9uLgogIwotIyBEZWZpbmUgVVNFX1dJTERNQVRDSCBpZiB5b3Ugd2FudCB0byB1c2UgR2l0J3Mgd2lsZG1hdGNoCisjIERlZmluZSBOT19XSUxETUFUQ0ggaWYgeW91IGRvIG5vdCB3YW50IHRvIHVzZSBHaXQncyB3aWxkbWF0Y2gKICMgaW1wbGVtZW50YXRpb24gYXMgZm5tYXRjaAogIwogIyBEZWZpbmUgTk9fR0VDT1NfSU5fUFdFTlQgaWYgeW91IGRvbid0IGhhdmUgcHdfZ2Vjb3MgaW4gc3RydWN0IHBhc3N3ZApAQCAtMjk3LDEwICsyOTcsNiBAQAogIwogIyBEZWZpbmUgTk9fUkVHRVggaWYgeW91IGhhdmUgbm8gb3IgaW5mZXJpb3IgcmVnZXggc3VwcG9ydCBpbiB5b3VyIEMgbGlicmFyeS4KICMKLSMgRGVmaW5lIENZR1dJTl9WMTVfV0lOMzJBUEkgaWYgeW91IGFyZSB1c2luZyBDeWd3aW4gdjEuNy54IGJ1dCBhcmUgbm90Ci0jIHVzaW5nIHRoZSBjdXJyZW50IHczMmFwaSBwYWNrYWdlcy4gVGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoLCBob3dldmVyLAotIyBpcyB0byB1cGRhdGUgeW91ciBpbnN0YWxsYXRpb24gaWYgY29tcGlsYXRpb24gZXJyb3JzIG9jY3VyLgotIwogIyBEZWZpbmUgSEFWRV9ERVZfVFRZIGlmIHlvdXIgc3lzdGVtIGNhbiBvcGVuIC9kZXYvdHR5IHRvIGludGVyYWN0IHdpdGggdGhlCiAjIHVzZXIuCiAjCkBAIC00NjcsNiArNDYzLDcgQEAKIFNDUklQVF9TSCArPSBnaXQtcHVsbC5zaAogU0NSSVBUX1NIICs9IGdpdC1xdWlsdGltcG9ydC5zaAogU0NSSVBUX1NIICs9IGdpdC1yZWJhc2Uuc2gKK1NDUklQVF9TSCArPSBnaXQtcmVtb3RlLXRlc3RnaXQuc2gKIFNDUklQVF9TSCArPSBnaXQtcmVwYWNrLnNoCiBTQ1JJUFRfU0ggKz0gZ2l0LXJlcXVlc3QtcHVsbC5zaAogU0NSSVBUX1NIICs9IGdpdC1zdGFzaC5zaApAQCAtNDk0LDExICs0OTEsMTggQEAKIFNDUklQVF9QWVRIT04gKz0gZ2l0LXJlbW90ZS10ZXN0cHkucHkKIFNDUklQVF9QWVRIT04gKz0gZ2l0LXA0LnB5CiAKK05PX0lOU1RBTEwgKz0gZ2l0LXJlbW90ZS10ZXN0Z2l0CitOT19JTlNUQUxMICs9IGdpdC1yZW1vdGUtdGVzdHB5CisKICMgR2VuZXJhdGVkIGZpbGVzIGZvciBzY3JpcHRzCiBTQ1JJUFRfU0hfR0VOID0gJChwYXRzdWJzdCAlLnNoLCUsJChTQ1JJUFRfU0gpKQogU0NSSVBUX1BFUkxfR0VOID0gJChwYXRzdWJzdCAlLnBlcmwsJSwkKFNDUklQVF9QRVJMKSkKIFNDUklQVF9QWVRIT05fR0VOID0gJChwYXRzdWJzdCAlLnB5LCUsJChTQ1JJUFRfUFlUSE9OKSkKIAorU0NSSVBUX1NIX0lOUyA9ICQoZmlsdGVyLW91dCAkKE5PX0lOU1RBTEwpLCQoU0NSSVBUX1NIX0dFTikpCitTQ1JJUFRfUEVSTF9JTlMgPSAkKGZpbHRlci1vdXQgJChOT19JTlNUQUxMKSwkKFNDUklQVF9QRVJMX0dFTikpCitTQ1JJUFRfUFlUSE9OX0lOUyA9ICQoZmlsdGVyLW91dCAkKE5PX0lOU1RBTEwpLCQoU0NSSVBUX1BZVEhPTl9HRU4pKQorCiAjIEluZGl2aWR1YWwgcnVsZXMgdG8gYWxsb3cgZS5nLgogIyAibWFrZSAtQyAuLi8uLiBTQ1JJUFRfUEVSTD1jb250cmliL2Zvby9iYXIucGVybCBidWlsZC1wZXJsLXNjcmlwdCIKICMgZnJvbSBzdWJkaXJlY3RvcmllcyBsaWtlIGNvbnRyaWIvKi8KQEAgLTUwOCwxMiArNTEyLDEyIEBACiBidWlsZC1weXRob24tc2NyaXB0OiAkKFNDUklQVF9QWVRIT05fR0VOKQogCiAuUEhPTlk6IGluc3RhbGwtcGVybC1zY3JpcHQgaW5zdGFsbC1zaC1zY3JpcHQgaW5zdGFsbC1weXRob24tc2NyaXB0Ci1pbnN0YWxsLXNoLXNjcmlwdDogJChTQ1JJUFRfU0hfR0VOKQotCSQoSU5TVEFMTCkgJChTQ1JJUFRfU0hfR0VOKSAnJChERVNURElSX1NRKSQoZ2l0ZXhlY19pbnN0ZGlyX1NRKScKLWluc3RhbGwtcGVybC1zY3JpcHQ6ICQoU0NSSVBUX1BFUkxfR0VOKQotCSQoSU5TVEFMTCkgJChTQ1JJUFRfUEVSTF9HRU4pICckKERFU1RESVJfU1EpJChnaXRleGVjX2luc3RkaXJfU1EpJwotaW5zdGFsbC1weXRob24tc2NyaXB0OiAkKFNDUklQVF9QWVRIT05fR0VOKQotCSQoSU5TVEFMTCkgJChTQ1JJUFRfUFlUSE9OX0dFTikgJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNfaW5zdGRpcl9TUSknCitpbnN0YWxsLXNoLXNjcmlwdDogJChTQ1JJUFRfU0hfSU5TKQorCSQoSU5TVEFMTCkgJF4gJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNfaW5zdGRpcl9TUSknCitpbnN0YWxsLXBlcmwtc2NyaXB0OiAkKFNDUklQVF9QRVJMX0lOUykKKwkkKElOU1RBTEwpICReICckKERFU1RESVJfU1EpJChnaXRleGVjX2luc3RkaXJfU1EpJworaW5zdGFsbC1weXRob24tc2NyaXB0OiAkKFNDUklQVF9QWVRIT05fSU5TKQorCSQoSU5TVEFMTCkgJF4gJyQoREVTVERJUl9TUSkkKGdpdGV4ZWNfaW5zdGRpcl9TUSknCiAKIC5QSE9OWTogY2xlYW4tcGVybC1zY3JpcHQgY2xlYW4tc2gtc2NyaXB0IGNsZWFuLXB5dGhvbi1zY3JpcHQKIGNsZWFuLXNoLXNjcmlwdDoKQEAgLTUyMyw5ICs1MjcsOSBAQAogY2xlYW4tcHl0aG9uLXNjcmlwdDoKIAkkKFJNKSAkKFNDUklQVF9QWVRIT05fR0VOKQogCi1TQ1JJUFRTID0gJChTQ1JJUFRfU0hfR0VOKSBcCi0JICAkKFNDUklQVF9QRVJMX0dFTikgXAotCSAgJChTQ1JJUFRfUFlUSE9OX0dFTikgXAorU0NSSVBUUyA9ICQoU0NSSVBUX1NIX0lOUykgXAorCSAgJChTQ1JJUFRfUEVSTF9JTlMpIFwKKwkgICQoU0NSSVBUX1BZVEhPTl9JTlMpIFwKIAkgIGdpdC1pbnN0YXdlYgogCiBFVEFHU19UQVJHRVQgPSBUQUdTCkBAIC01NjUsNiArNTY5LDcgQEAKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtbWt0ZW1wCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXBhcnNlLW9wdGlvbnMKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcGF0aC11dGlscworVEVTVF9QUk9HUkFNU19ORUVEX1ggKz0gdGVzdC1wcmlvLXF1ZXVlCiBURVNUX1BST0dSQU1TX05FRURfWCArPSB0ZXN0LXJlYWQtY2FjaGUKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcmVnZXgKIFRFU1RfUFJPR1JBTVNfTkVFRF9YICs9IHRlc3QtcmV2aXNpb24td2Fsa2luZwpAQCAtNjQ5LDcgKzY1NCw2IEBACiBMSUJfSCArPSBjb2x1bW4uaAogTElCX0ggKz0gY29tbWl0LmgKIExJQl9IICs9IGNvbXBhdC9ic3dhcC5oCi1MSUJfSCArPSBjb21wYXQvY3lnd2luLmgKIExJQl9IICs9IGNvbXBhdC9taW5ndy5oCiBMSUJfSCArPSBjb21wYXQvb2JzdGFjay5oCiBMSUJfSCArPSBjb21wYXQvcG9sbC9wb2xsLmgKQEAgLTY4MSw2ICs2ODUsOCBAQAogTElCX0ggKz0gaHR0cC5oCiBMSUJfSCArPSBrd3NldC5oCiBMSUJfSCArPSBsZXZlbnNodGVpbi5oCitMSUJfSCArPSBsaW5lLWxvZy5oCitMSUJfSCArPSBsaW5lLXJhbmdlLmgKIExJQl9IICs9IGxpc3Qtb2JqZWN0cy5oCiBMSUJfSCArPSBsbC1tZXJnZS5oCiBMSUJfSCArPSBsb2ctdHJlZS5oCkBAIC02OTAsMTUgKzY5NiwxNiBAQAogTElCX0ggKz0gbWVyZ2Vzb3J0LmgKIExJQl9IICs9IG5vdGVzLWNhY2hlLmgKIExJQl9IICs9IG5vdGVzLW1lcmdlLmgKK0xJQl9IICs9IG5vdGVzLXV0aWxzLmgKIExJQl9IICs9IG5vdGVzLmgKIExJQl9IICs9IG9iamVjdC5oCi1MSUJfSCArPSBwYWNrLXJlZnMuaAogTElCX0ggKz0gcGFjay1yZXZpbmRleC5oCiBMSUJfSCArPSBwYWNrLmgKIExJQl9IICs9IHBhcnNlLW9wdGlvbnMuaAogTElCX0ggKz0gcGF0Y2gtaWRzLmgKIExJQl9IICs9IHBhdGhzcGVjLmgKIExJQl9IICs9IHBrdC1saW5lLmgKK0xJQl9IICs9IHByaW8tcXVldWUuaAogTElCX0ggKz0gcHJvZ3Jlc3MuaAogTElCX0ggKz0gcHJvbXB0LmgKIExJQl9IICs9IHF1b3RlLmgKQEAgLTgwOSw2ICs4MTYsOCBAQAogTElCX09CSlMgKz0gaWRlbnQubwogTElCX09CSlMgKz0ga3dzZXQubwogTElCX09CSlMgKz0gbGV2ZW5zaHRlaW4ubworTElCX09CSlMgKz0gbGluZS1sb2cubworTElCX09CSlMgKz0gbGluZS1yYW5nZS5vCiBMSUJfT0JKUyArPSBsaXN0LW9iamVjdHMubwogTElCX09CSlMgKz0gbGwtbWVyZ2UubwogTElCX09CSlMgKz0gbG9ja2ZpbGUubwpAQCAtODIzLDkgKzgzMiw5IEBACiBMSUJfT0JKUyArPSBub3Rlcy5vCiBMSUJfT0JKUyArPSBub3Rlcy1jYWNoZS5vCiBMSUJfT0JKUyArPSBub3Rlcy1tZXJnZS5vCitMSUJfT0JKUyArPSBub3Rlcy11dGlscy5vCiBMSUJfT0JKUyArPSBvYmplY3QubwogTElCX09CSlMgKz0gcGFjay1jaGVjay5vCi1MSUJfT0JKUyArPSBwYWNrLXJlZnMubwogTElCX09CSlMgKz0gcGFjay1yZXZpbmRleC5vCiBMSUJfT0JKUyArPSBwYWNrLXdyaXRlLm8KIExJQl9PQkpTICs9IHBhZ2VyLm8KQEAgLTgzOCw2ICs4NDcsNyBAQAogTElCX09CSlMgKz0gcGt0LWxpbmUubwogTElCX09CSlMgKz0gcHJlbG9hZC1pbmRleC5vCiBMSUJfT0JKUyArPSBwcmV0dHkubworTElCX09CSlMgKz0gcHJpby1xdWV1ZS5vCiBMSUJfT0JKUyArPSBwcm9ncmVzcy5vCiBMSUJfT0JKUyArPSBwcm9tcHQubwogTElCX09CSlMgKz0gcXVvdGUubwpAQCAtOTAxLDYgKzkxMSw3IEBACiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jYXQtZmlsZS5vCiBCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jaGVjay1hdHRyLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2NoZWNrLWlnbm9yZS5vCitCVUlMVElOX09CSlMgKz0gYnVpbHRpbi9jaGVjay1tYWlsbWFwLm8KIEJVSUxUSU5fT0JKUyArPSBidWlsdGluL2NoZWNrLXJlZi1mb3JtYXQubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXgubwogQlVJTFRJTl9PQkpTICs9IGJ1aWx0aW4vY2hlY2tvdXQubwpAQCAtMTI3NCw3ICsxMjg1LDcgQEAKIAlDT01QQVRfT0JKUyArPSBjb21wYXQvZm5tYXRjaC9mbm1hdGNoLm8KIGVuZGlmCiBlbmRpZgotaWZkZWYgVVNFX1dJTERNQVRDSAoraWZuZGVmIE5PX1dJTERNQVRDSAogCUNPTVBBVF9DRkxBR1MgKz0gLURVU0VfV0lMRE1BVENICiBlbmRpZgogaWZkZWYgTk9fU0VURU5WCkBAIC0xNDY4LDkgKzE0NzksNiBAQAogCUNPTVBBVF9DRkxBR1MgKz0gLUljb21wYXQvcmVnZXgKIAlDT01QQVRfT0JKUyArPSBjb21wYXQvcmVnZXgvcmVnZXgubwogZW5kaWYKLWlmZGVmIENZR1dJTl9WMTVfV0lOMzJBUEkKLQlDT01QQVRfQ0ZMQUdTICs9IC1EQ1lHV0lOX1YxNV9XSU4zMkFQSQotZW5kaWYKIAogaWZkZWYgVVNFX05FRF9BTExPQ0FUT1IKICAgICAgICBDT01QQVRfQ0ZMQUdTICs9IC1JY29tcGF0L25lZG1hbGxvYwpAQCAtMTUyNyw2ICsxNTM1LDcgQEAKIAlRVUlFVF9NU0dGTVQgICA9IEBlY2hvICcgICAnIE1TR0ZNVCAkQDsKIAlRVUlFVF9HQ09WICAgICA9IEBlY2hvICcgICAnIEdDT1YgJEA7CiAJUVVJRVRfU1AgICAgICAgPSBAZWNobyAnICAgJyBTUCAkPDsKKwlRVUlFVF9SQyAgICAgICA9IEBlY2hvICcgICAnIFJDICRAOwogCVFVSUVUX1NVQkRJUjAgID0gK0BzdWJkaXI9CiAJUVVJRVRfU1VCRElSMSAgPSA7JChOT19TVUJESVIpIGVjaG8gJyAgICcgU1VCRElSICQkc3ViZGlyOyBcCiAJCQkgJChNQUtFKSAkKFBSSU5UX0RJUikgLUMgJCRzdWJkaXIKQEAgLTE2NjksNyArMTY3OCw3IEBACiBzaGVsbF9jb21wYXRpYmlsaXR5X3Rlc3Q6IHBsZWFzZV9zZXRfU0hFTExfUEFUSF90b19hX21vcmVfbW9kZXJuX3NoZWxsCiAKIHN0cmlwOiAkKFBST0dSQU1TKSBnaXQkWAotCSQoU1RSSVApICQoU1RSSVBfT1BUUykgJChQUk9HUkFNUykgZ2l0JFgKKwkkKFNUUklQKSAkKFNUUklQX09QVFMpICReCiAKICMjIyBUYXJnZXQtc3BlY2lmaWMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcwogCkBAIC0xNzI5LDkgKzE3MzgsOSBAQAogCiAkKEJVSUxUX0lOUyk6IGdpdCRYCiAJJChRVUlFVF9CVUlMVF9JTikkKFJNKSAkQCAmJiBcCi0JbG4gZ2l0JFggJEAgMj4vZGV2L251bGwgfHwgXAotCWxuIC1zIGdpdCRYICRAIDI+L2Rldi9udWxsIHx8IFwKLQljcCBnaXQkWCAkQAorCWxuICQ8ICRAIDI+L2Rldi9udWxsIHx8IFwKKwlsbiAtcyAkPCAkQCAyPi9kZXYvbnVsbCB8fCBcCisJY3AgJDwgJEAKIAogY29tbW9uLWNtZHMuaDogLi9nZW5lcmF0ZS1jbWRsaXN0LnNoIGNvbW1hbmQtbGlzdC50eHQKIApAQCAtMTc3Miw2ICsxNzgxLDExIEBACiAJJChRVUlFVF9HRU4pJChjbWRfbXVuZ2Vfc2NyaXB0KSAmJiBcCiAJbXYgJEArICRACiAKK2dpdC5yZXM6IGdpdC5yYyBHSVQtVkVSU0lPTi1GSUxFCisJJChRVUlFVF9SQykkKFJDKSBcCisJICAkKGpvaW4gLURNQUpPUj0gLURNSU5PUj0gLURQQVRDSD0sICQod29yZGxpc3QgMSwzLCQoc3Vic3QgLSwgLCQoc3Vic3QgLiwgLCQoR0lUX1ZFUlNJT04pKSkpKSBcCisJICAtREdJVF9WRVJTSU9OPSJcXFwiJChHSVRfVkVSU0lPTilcXFwiIiAkPCAtbyAkQAorCiBpZm5kZWYgTk9fUEVSTAogJChwYXRzdWJzdCAlLnBlcmwsJSwkKFNDUklQVF9QRVJMKSk6IHBlcmwvcGVybC5tYWsKIApAQCAtMTc5Niw3ICsxODEwLDcgQEAKIAkgICAgLWUgJwl4JyBcCiAJICAgIC1lICd9JyBcCiAJICAgIC1lICdzL0BAR0lUX1ZFUlNJT05AQC8kKEdJVF9WRVJTSU9OKS9nJyBcCi0JICAgICRALnBlcmwgPiRAKyAmJiBcCisJICAgICQ8ID4kQCsgJiYgXAogCWNobW9kICt4ICRAKyAmJiBcCiAJbXYgJEArICRACiAKQEAgLTE4MjAsOCArMTgzNCw4IEBACiBlbmRpZiAjIE5PX1BFUkwKIAogaWZuZGVmIE5PX1BZVEhPTgotJChwYXRzdWJzdCAlLnB5LCUsJChTQ1JJUFRfUFlUSE9OKSk6IEdJVC1DRkxBR1MgR0lULVBSRUZJWCBHSVQtUFlUSE9OLVZBUlMKLSQocGF0c3Vic3QgJS5weSwlLCQoU0NSSVBUX1BZVEhPTikpOiAlIDogJS5weQorJChTQ1JJUFRfUFlUSE9OX0dFTik6IEdJVC1DRkxBR1MgR0lULVBSRUZJWCBHSVQtUFlUSE9OLVZBUlMKKyQoU0NSSVBUX1BZVEhPTl9HRU4pOiAlIDogJS5weQogCSQoUVVJRVRfR0VOKSQoUk0pICRAICRAKyAmJiBcCiAJSU5TVExJQkRJUj1gTUFLRUZMQUdTPSAkKE1BS0UpIC1DIGdpdF9yZW1vdGVfaGVscGVycyAtcyBcCiAJCS0tbm8tcHJpbnQtZGlyZWN0b3J5IHByZWZpeD0nJChwcmVmaXhfU1EpJyBERVNURElSPSckKERFU1RESVJfU1EpJyBcCkBAIC0xODI5LDExICsxODQzLDExIEBACiAJc2VkIC1lICcxc3wjIS4qcHl0aG9ufCMhJChQWVRIT05fUEFUSF9TUSl8JyBcCiAJICAgIC1lICdzfFwob3NcLmdldGVudigiR0lUUFlUSE9OTElCIlwpW14pXSopfFwxLCJAQElOU1RMSUJESVJAQCIpfCcgXAogCSAgICAtZSAnc3xAQElOU1RMSUJESVJAQHwnIiQkSU5TVExJQkRJUiInfGcnIFwKLQkgICAgJEAucHkgPiRAKyAmJiBcCisJICAgICQ8ID4kQCsgJiYgXAogCWNobW9kICt4ICRAKyAmJiBcCiAJbXYgJEArICRACiBlbHNlICMgTk9fUFlUSE9OCi0kKHBhdHN1YnN0ICUucHksJSwkKFNDUklQVF9QWVRIT04pKTogJSA6IHVuaW1wbGVtZW50ZWQuc2gKKyQoU0NSSVBUX1BZVEhPTl9HRU4pOiAlIDogdW5pbXBsZW1lbnRlZC5zaAogCSQoUVVJRVRfR0VOKSQoUk0pICRAICRAKyAmJiBcCiAJc2VkIC1lICcxc3wjIS4qL3NofCMhJChTSEVMTF9QQVRIX1NRKXwnIFwKIAkgICAgLWUgJ3N8QEBSRUFTT05AQHxOT19QWVRIT049JChOT19QWVRIT04pfGcnIFwKQEAgLTIwMjgsNiArMjA0Miw3IEBACiBpZmRlZiBVU0VfTkVEX0FMTE9DQVRPUgogY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2Muc3AgY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2MubzogRVhUUkFfQ1BQRkxBR1MgPSBcCiAJLUROREVCVUcgLURPVkVSUklERV9TVFJEVVAgLURSRVBMQUNFX1NZU1RFTV9BTExPQ0FUT1IKK2NvbXBhdC9uZWRtYWxsb2MvbmVkbWFsbG9jLnNwOiBTUEFSU0VfRkxBR1MgKz0gLVduby1ub24tcG9pbnRlci1udWxsCiBlbmRpZgogCiBnaXQtJSRYOiAlLm8gR0lULUxERkxBR1MgJChHSVRMSUJTKQpAQCAtMjA1OSwxMyArMjA3NCwxMyBAQAogCQkkKExJQlMpICQoQ1VSTF9MSUJDVVJMKSAkKEVYUEFUX0xJQkVYUEFUKQogCiAkKExJQl9GSUxFKTogJChMSUJfT0JKUykKLQkkKFFVSUVUX0FSKSQoUk0pICRAICYmICQoQVIpIHJjcyAkQCAkKExJQl9PQkpTKQorCSQoUVVJRVRfQVIpJChSTSkgJEAgJiYgJChBUikgcmNzICRAICReCiAKICQoWERJRkZfTElCKTogJChYRElGRl9PQkpTKQotCSQoUVVJRVRfQVIpJChSTSkgJEAgJiYgJChBUikgcmNzICRAICQoWERJRkZfT0JKUykKKwkkKFFVSUVUX0FSKSQoUk0pICRAICYmICQoQVIpIHJjcyAkQCAkXgogCiAkKFZDU1NWTl9MSUIpOiAkKFZDU1NWTl9PQkpTKQotCSQoUVVJRVRfQVIpJChSTSkgJEAgJiYgJChBUikgcmNzICRAICQoVkNTU1ZOX09CSlMpCisJJChRVUlFVF9BUikkKFJNKSAkQCAmJiAkKEFSKSByY3MgJEAgJF4KIAogZXhwb3J0IERFRkFVTFRfRURJVE9SIERFRkFVTFRfUEFHRVIKIApAQCAtMjE4Myw2ICsyMTk4LDkgQEAKIAlAZWNobyBOT19QRVJMPVwnJyQoc3Vic3QgJywnXCcnLCQoc3Vic3QgJywnXCcnLCQoTk9fUEVSTCkpKSdcJyA+PiRACiAJQGVjaG8gTk9fUFlUSE9OPVwnJyQoc3Vic3QgJywnXCcnLCQoc3Vic3QgJywnXCcnLCQoTk9fUFlUSE9OKSkpJ1wnID4+JEAKIAlAZWNobyBOT19VTklYX1NPQ0tFVFM9XCcnJChzdWJzdCAnLCdcJycsJChzdWJzdCAnLCdcJycsJChOT19VTklYX1NPQ0tFVFMpKSknXCcgPj4kQAoraWZkZWYgVEVTVF9PVVRQVVRfRElSRUNUT1JZCisJQGVjaG8gVEVTVF9PVVRQVVRfRElSRUNUT1JZPVwnJyQoc3Vic3QgJywnXCcnLCQoc3Vic3QgJywnXCcnLCQoVEVTVF9PVVRQVVRfRElSRUNUT1JZKSkpJ1wnID4+JEAKK2VuZGlmCiBpZmRlZiBHSVRfVEVTVF9PUFRTCiAJQGVjaG8gR0lUX1RFU1RfT1BUUz1cJyckKHN1YnN0ICcsJ1wnJywkKHN1YnN0ICcsJ1wnJywkKEdJVF9URVNUX09QVFMpKSknXCcgPj4kQAogZW5kaWYKQEAgLTIyMjIsNiArMjI0MCw3IEBACiB0ZXN0X2JpbmRpcl9wcm9ncmFtcyA6PSAkKHBhdHN1YnN0ICUsYmluLXdyYXBwZXJzLyUsJChCSU5ESVJfUFJPR1JBTVNfTkVFRF9YKSAkKEJJTkRJUl9QUk9HUkFNU19OT19YKSAkKFRFU1RfUFJPR1JBTVNfTkVFRF9YKSkKIAogYWxsOjogJChURVNUX1BST0dSQU1TKSAkKHRlc3RfYmluZGlyX3Byb2dyYW1zKQorYWxsOjogJChOT19JTlNUQUxMKQogCiBiaW4td3JhcHBlcnMvJTogd3JhcC1mb3ItYmluLnNoCiAJQG1rZGlyIC1wIGJpbi13cmFwcGVycwpAQCAtMjQ2NSwxMCArMjQ4NCwxMCBAQAogCSQoUk0pICQoYWRkc3VmZml4ICouZ2NubywkKGFkZHByZWZpeCAkKFBST0ZJTEVfRElSKS8sICQob2JqZWN0X2RpcnMpKSkKIAogY2xlYW46IHByb2ZpbGUtY2xlYW4gY292ZXJhZ2UtY2xlYW4KLQkkKFJNKSAqLm8gYmxvY2stc2hhMS8qLm8gcHBjLyoubyBjb21wYXQvKi5vIGNvbXBhdC8qLyoubyB4ZGlmZi8qLm8gdmNzLXN2bi8qLm8gXAorCSQoUk0pICoubyAqLnJlcyBibG9jay1zaGExLyoubyBwcGMvKi5vIGNvbXBhdC8qLm8gY29tcGF0LyovKi5vIHhkaWZmLyoubyB2Y3Mtc3ZuLyoubyBcCiAJCWJ1aWx0aW4vKi5vICQoTElCX0ZJTEUpICQoWERJRkZfTElCKSAkKFZDU1NWTl9MSUIpCiAJJChSTSkgJChBTExfUFJPR1JBTVMpICQoU0NSSVBUX0xJQikgJChCVUlMVF9JTlMpIGdpdCRYCi0JJChSTSkgJChURVNUX1BST0dSQU1TKQorCSQoUk0pICQoVEVTVF9QUk9HUkFNUykgJChOT19JTlNUQUxMKQogCSQoUk0pIC1yIGJpbi13cmFwcGVycyAkKGRlcF9kaXJzKQogCSQoUk0pIC1yIHBvL2J1aWxkLwogCSQoUk0pICouc3BlYyAqLnB5YyAqLnB5byAqLyoucHljICovKi5weW8gY29tbW9uLWNtZHMuaCAkKEVUQUdTX1RBUkdFVCkgdGFncyBjc2NvcGUqCmRpZmYgLS1naXQgYS9SZWxOb3RlcyBiL1JlbE5vdGVzCmluZGV4IGE5NWY3NzkuLmZjZTk5ZmIgMTIwMDAwCi0tLSBhL1JlbE5vdGVzCisrKyBiL1JlbE5vdGVzCkBAIC0xICsxIEBACi1Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4zLjQudHh0ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguNC50eHQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9hYnNwYXRoLmMgYi9hYnNwYXRoLmMKaW5kZXggNDBjZGM0Ni4uNjRhZGJlMiAxMDA2NDQKLS0tIGEvYWJzcGF0aC5jCisrKyBiL2Fic3BhdGguYwpAQCAtMjE2LDcgKzIxNiw3IEBACiBjb25zdCBjaGFyICpwcmVmaXhfZmlsZW5hbWUoY29uc3QgY2hhciAqcGZ4LCBpbnQgcGZ4X2xlbiwgY29uc3QgY2hhciAqYXJnKQogewogCXN0YXRpYyBjaGFyIHBhdGhbUEFUSF9NQVhdOwotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIAlpZiAoIXBmeF9sZW4gfHwgaXNfYWJzb2x1dGVfcGF0aChhcmcpKQogCQlyZXR1cm4gYXJnOwogCW1lbWNweShwYXRoLCBwZngsIHBmeF9sZW4pOwpkaWZmIC0tZ2l0IGEvYWR2aWNlLmMgYi9hZHZpY2UuYwppbmRleCBhOGRlZWU2Li4zZWNhOWY1IDEwMDY0NAotLS0gYS9hZHZpY2UuYworKysgYi9hZHZpY2UuYwpAQCAtMTQsNiArMTQsOCBAQAogaW50IGFkdmljZV9pbXBsaWNpdF9pZGVudGl0eSA9IDE7CiBpbnQgYWR2aWNlX2RldGFjaGVkX2hlYWQgPSAxOwogaW50IGFkdmljZV9zZXRfdXBzdHJlYW1fZmFpbHVyZSA9IDE7CitpbnQgYWR2aWNlX29iamVjdF9uYW1lX3dhcm5pbmcgPSAxOworaW50IGFkdmljZV9ybV9oaW50cyA9IDE7CiAKIHN0YXRpYyBzdHJ1Y3QgewogCWNvbnN0IGNoYXIgKm5hbWU7CkBAIC0zMyw2ICszNSw4IEBACiAJeyAiaW1wbGljaXRpZGVudGl0eSIsICZhZHZpY2VfaW1wbGljaXRfaWRlbnRpdHkgfSwKIAl7ICJkZXRhY2hlZGhlYWQiLCAmYWR2aWNlX2RldGFjaGVkX2hlYWQgfSwKIAl7ICJzZXR1cHN0cmVhbWZhaWx1cmUiLCAmYWR2aWNlX3NldF91cHN0cmVhbV9mYWlsdXJlIH0sCisJeyAib2JqZWN0bmFtZXdhcm5pbmciLCAmYWR2aWNlX29iamVjdF9uYW1lX3dhcm5pbmcgfSwKKwl7ICJybWhpbnRzIiwgJmFkdmljZV9ybV9oaW50cyB9LAogCiAJLyogbWFrZSB0aGlzIGFuIGFsaWFzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCiAJeyAicHVzaG5vbmZhc3Rmb3J3YXJkIiwgJmFkdmljZV9wdXNoX3VwZGF0ZV9yZWplY3RlZCB9CmRpZmYgLS1naXQgYS9hZHZpY2UuaCBiL2FkdmljZS5oCmluZGV4IDk0Y2FhMzIuLjA4ZmJjOGUgMTAwNjQ0Ci0tLSBhL2FkdmljZS5oCisrKyBiL2FkdmljZS5oCkBAIC0xNyw4ICsxNywxMSBAQAogZXh0ZXJuIGludCBhZHZpY2VfaW1wbGljaXRfaWRlbnRpdHk7CiBleHRlcm4gaW50IGFkdmljZV9kZXRhY2hlZF9oZWFkOwogZXh0ZXJuIGludCBhZHZpY2Vfc2V0X3Vwc3RyZWFtX2ZhaWx1cmU7CitleHRlcm4gaW50IGFkdmljZV9vYmplY3RfbmFtZV93YXJuaW5nOworZXh0ZXJuIGludCBhZHZpY2Vfcm1faGludHM7CiAKIGludCBnaXRfZGVmYXVsdF9hZHZpY2VfY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUpOworX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsIDEsIDIpKSkKIHZvaWQgYWR2aXNlKGNvbnN0IGNoYXIgKmFkdmljZSwgLi4uKTsKIGludCBlcnJvcl9yZXNvbHZlX2NvbmZsaWN0KGNvbnN0IGNoYXIgKm1lKTsKIGV4dGVybiB2b2lkIE5PUkVUVVJOIGRpZV9yZXNvbHZlX2NvbmZsaWN0KGNvbnN0IGNoYXIgKm1lKTsKZGlmZiAtLWdpdCBhL2FyZ3YtYXJyYXkuaCBiL2FyZ3YtYXJyYXkuaAppbmRleCA0MDI0OGQ0Li44NWJhNDM4IDEwMDY0NAotLS0gYS9hcmd2LWFycmF5LmgKKysrIGIvYXJndi1hcnJheS5oCkBAIC0xNSw2ICsxNSw3IEBACiB2b2lkIGFyZ3ZfYXJyYXlfcHVzaChzdHJ1Y3QgYXJndl9hcnJheSAqLCBjb25zdCBjaGFyICopOwogX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsMiwzKSkpCiB2b2lkIGFyZ3ZfYXJyYXlfcHVzaGYoc3RydWN0IGFyZ3ZfYXJyYXkgKiwgY29uc3QgY2hhciAqZm10LCAuLi4pOworTEFTVF9BUkdfTVVTVF9CRV9OVUxMCiB2b2lkIGFyZ3ZfYXJyYXlfcHVzaGwoc3RydWN0IGFyZ3ZfYXJyYXkgKiwgLi4uKTsKIHZvaWQgYXJndl9hcnJheV9wb3Aoc3RydWN0IGFyZ3ZfYXJyYXkgKik7CiB2b2lkIGFyZ3ZfYXJyYXlfY2xlYXIoc3RydWN0IGFyZ3ZfYXJyYXkgKik7CmRpZmYgLS1naXQgYS9iaXNlY3QuYyBiL2Jpc2VjdC5jCmluZGV4IDM3NGQ5ZTIuLjcxYzE5NTggMTAwNjQ0Ci0tLSBhL2Jpc2VjdC5jCisrKyBiL2Jpc2VjdC5jCkBAIC0xNSw3ICsxNSw3IEBACiBzdGF0aWMgc3RydWN0IHNoYTFfYXJyYXkgZ29vZF9yZXZzOwogc3RhdGljIHN0cnVjdCBzaGExX2FycmF5IHNraXBwZWRfcmV2czsKIAotc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmN1cnJlbnRfYmFkX3NoYTE7CitzdGF0aWMgdW5zaWduZWQgY2hhciAqY3VycmVudF9iYWRfc2hhMTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3ZfY2hlY2tvdXRbXSA9IHsiY2hlY2tvdXQiLCAiLXEiLCBOVUxMLCAiLS0iLCBOVUxMfTsKIHN0YXRpYyBjb25zdCBjaGFyICphcmd2X3Nob3dfYnJhbmNoW10gPSB7InNob3ctYnJhbmNoIiwgTlVMTCwgTlVMTH07CkBAIC00MDQsNyArNDA0LDggQEAKIAkJCWludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKIHsKIAlpZiAoIXN0cmNtcChyZWZuYW1lLCAiYmFkIikpIHsKLQkJY3VycmVudF9iYWRfc2hhMSA9IHNoYTE7CisJCWN1cnJlbnRfYmFkX3NoYTEgPSB4bWFsbG9jKDIwKTsKKwkJaGFzaGNweShjdXJyZW50X2JhZF9zaGExLCBzaGExKTsKIAl9IGVsc2UgaWYgKCFwcmVmaXhjbXAocmVmbmFtZSwgImdvb2QtIikpIHsKIAkJc2hhMV9hcnJheV9hcHBlbmQoJmdvb2RfcmV2cywgc2hhMSk7CiAJfSBlbHNlIGlmICghcHJlZml4Y21wKHJlZm5hbWUsICJza2lwLSIpKSB7CmRpZmYgLS1naXQgYS9idWlsdGluLmggYi9idWlsdGluLmgKaW5kZXggZmFlZjU1OS4uOGFmYTJkZSAxMDA2NDQKLS0tIGEvYnVpbHRpbi5oCisrKyBiL2J1aWx0aW4uaApAQCAtNSwxMyArNSwxNSBAQAogI2luY2x1ZGUgInN0cmJ1Zi5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiY29tbWl0LmgiCi0jaW5jbHVkZSAibm90ZXMuaCIKIAogI2RlZmluZSBERUZBVUxUX01FUkdFX0xPR19MRU4gMjAKIAogZXh0ZXJuIGNvbnN0IGNoYXIgZ2l0X3VzYWdlX3N0cmluZ1tdOwogZXh0ZXJuIGNvbnN0IGNoYXIgZ2l0X21vcmVfaW5mb19zdHJpbmdbXTsKIAorI2RlZmluZSBQUlVORV9QQUNLRURfRFJZX1JVTiAwMQorI2RlZmluZSBQUlVORV9QQUNLRURfVkVSQk9TRSAwMgorCiBleHRlcm4gdm9pZCBwcnVuZV9wYWNrZWRfb2JqZWN0cyhpbnQpOwogCiBzdHJ1Y3QgZm10X21lcmdlX21zZ19vcHRzIHsKQEAgLTIzLDIxICsyNSw2IEBACiBleHRlcm4gaW50IGZtdF9tZXJnZV9tc2coc3RydWN0IHN0cmJ1ZiAqaW4sIHN0cnVjdCBzdHJidWYgKm91dCwKIAkJCSBzdHJ1Y3QgZm10X21lcmdlX21zZ19vcHRzICopOwogCi1zdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgewotCXN0cnVjdCBub3Rlc190cmVlICoqdHJlZXM7Ci0JY29uc3QgY2hhciAqY21kOwotCWludCBlbmFibGVkOwotCWNvbWJpbmVfbm90ZXNfZm4gY29tYmluZTsKLQlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlZnM7Ci0JaW50IHJlZnNfZnJvbV9lbnY7Ci0JaW50IG1vZGVfZnJvbV9lbnY7Ci19OwotCi1zdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmluaXRfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjb25zdCBjaGFyICpjbWQpOwotaW50IGNvcHlfbm90ZV9mb3JfcmV3cml0ZShzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMsCi0JCQkgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmZyb21fb2JqLCBjb25zdCB1bnNpZ25lZCBjaGFyICp0b19vYmopOwotdm9pZCBmaW5pc2hfY29weV9ub3Rlc19mb3JfcmV3cml0ZShzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMpOwotCiBleHRlcm4gaW50IHRleHRjb252X29iamVjdChjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBtb2RlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgc2hhMV92YWxpZCwgY2hhciAqKmJ1ZiwgdW5zaWduZWQgbG9uZyAqYnVmX3NpemUpOwogCiBleHRlcm4gaW50IGNtZF9hZGQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwpAQCAtNTMsNiArNDAsNyBAQAogZXh0ZXJuIGludCBjbWRfY2hlY2tvdXRfaW5kZXgoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOwogZXh0ZXJuIGludCBjbWRfY2hlY2tfYXR0cihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVja19pZ25vcmUoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOworZXh0ZXJuIGludCBjbWRfY2hlY2tfbWFpbG1hcChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVja19yZWZfZm9ybWF0KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KTsKIGV4dGVybiBpbnQgY21kX2NoZXJyeShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CiBleHRlcm4gaW50IGNtZF9jaGVycnlfcGljayhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCk7CmRpZmYgLS1naXQgYS9idWlsdGluL2FkZC5jIGIvYnVpbHRpbi9hZGQuYwppbmRleCBmNDVkOWQ0Li44MjY2YTljIDEwMDY0NAotLS0gYS9idWlsdGluL2FkZC5jCisrKyBiL2J1aWx0aW4vYWRkLmMKQEAgLTM0Myw2ICszNDMsNyBAQAogCiAJYXJnYyA9IHNldHVwX3JldmlzaW9ucyhhcmdjLCBhcmd2LCAmcmV2LCBOVUxMKTsKIAlyZXYuZGlmZm9wdC5vdXRwdXRfZm9ybWF0ID0gRElGRl9GT1JNQVRfUEFUQ0g7CisJcmV2LmRpZmZvcHQudXNlX2NvbG9yID0gMDsKIAlESUZGX09QVF9TRVQoJnJldi5kaWZmb3B0LCBJR05PUkVfRElSVFlfU1VCTU9EVUxFUyk7CiAJb3V0ID0gb3BlbihmaWxlLCBPX0NSRUFUIHwgT19XUk9OTFksIDA2NjYpOwogCWlmIChvdXQgPCAwKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9hcHBseS5jIGIvYnVpbHRpbi9hcHBseS5jCmluZGV4IGE4OGMzNzIuLjUwOTEyYzkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vYXBwbHkuYworKysgYi9idWlsdGluL2FwcGx5LmMKQEAgLTI5OTksNyArMjk5OSw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgcmVhZF9maWxlX29yX2dpdGxpbmsoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0cmJ1ZiAqYnVmKQorc3RhdGljIGludCByZWFkX2ZpbGVfb3JfZ2l0bGluayhjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RyYnVmICpidWYpCiB7CiAJaWYgKCFjZSkKIAkJcmV0dXJuIDA7CkBAIC0zMTE3LDcgKzMxMTcsNyBAQAogCXJldHVybiBwcmV2aW91czsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfaW5kZXhfbWF0Y2goc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0KQorc3RhdGljIGludCB2ZXJpZnlfaW5kZXhfbWF0Y2goY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0KQogewogCWlmIChTX0lTR0lUTElOSyhjZS0+Y2VfbW9kZSkpIHsKIAkJaWYgKCFTX0lTRElSKHN0LT5zdF9tb2RlKSkKQEAgLTMxMzAsNyArMzEzMCw3IEBACiAjZGVmaW5lIFNVQk1PRFVMRV9QQVRDSF9XSVRIT1VUX0lOREVYIDEKIAogc3RhdGljIGludCBsb2FkX3BhdGNoX3RhcmdldChzdHJ1Y3Qgc3RyYnVmICpidWYsCi0JCQkgICAgIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQkgICAgIHN0cnVjdCBzdGF0ICpzdCwKIAkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwKIAkJCSAgICAgdW5zaWduZWQgZXhwZWN0ZWRfbW9kZSkKQEAgLTMxNjAsNyArMzE2MCw4IEBACiAgKiB3ZSByZWFkIGZyb20gdGhlIHJlc3VsdCBvZiBhIHByZXZpb3VzIGRpZmYuCiAgKi8KIHN0YXRpYyBpbnQgbG9hZF9wcmVpbWFnZShzdHJ1Y3QgaW1hZ2UgKmltYWdlLAotCQkJIHN0cnVjdCBwYXRjaCAqcGF0Y2gsIHN0cnVjdCBzdGF0ICpzdCwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKKwkJCSBzdHJ1Y3QgcGF0Y2ggKnBhdGNoLCBzdHJ1Y3Qgc3RhdCAqc3QsCisJCQkgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXNpemVfdCBsZW47CkBAIC0zMjczLDcgKzMyNzQsNyBAQAogfQogCiBzdGF0aWMgaW50IHRyeV90aHJlZXdheShzdHJ1Y3QgaW1hZ2UgKmltYWdlLCBzdHJ1Y3QgcGF0Y2ggKnBhdGNoLAotCQkJc3RydWN0IHN0YXQgKnN0LCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQorCQkJc3RydWN0IHN0YXQgKnN0LCBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQogewogCXVuc2lnbmVkIGNoYXIgcHJlX3NoYTFbMjBdLCBwb3N0X3NoYTFbMjBdLCBvdXJfc2hhMVsyMF07CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKQEAgLTMzNDMsNyArMzM0NCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgYXBwbHlfZGF0YShzdHJ1Y3QgcGF0Y2ggKnBhdGNoLCBzdHJ1Y3Qgc3RhdCAqc3QsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCitzdGF0aWMgaW50IGFwcGx5X2RhdGEoc3RydWN0IHBhdGNoICpwYXRjaCwgc3RydWN0IHN0YXQgKnN0LCBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQogewogCXN0cnVjdCBpbWFnZSBpbWFnZTsKIApAQCAtMzg0Nyw3ICszODQ4LDcgQEAKIAkJY29uc3QgY2hhciAqcyA9IGJ1ZjsKIAogCQlpZiAoZ2V0X3NoYTFfaGV4KHMgKyBzdHJsZW4oIlN1YnByb2plY3QgY29tbWl0ICIpLCBjZS0+c2hhMSkpCi0JCQlkaWUoXygiY29ycnVwdCBwYXRjaCBmb3Igc3VicHJvamVjdCAlcyIpLCBwYXRoKTsKKwkJCWRpZShfKCJjb3JydXB0IHBhdGNoIGZvciBzdWJtb2R1bGUgJXMiKSwgcGF0aCk7CiAJfSBlbHNlIHsKIAkJaWYgKCFjYWNoZWQpIHsKIAkJCWlmIChsc3RhdChwYXRoLCAmc3QpIDwgMCkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vYmxhbWUuYyBiL2J1aWx0aW4vYmxhbWUuYwppbmRleCA1N2E0ODdlLi4wNzlkY2QzIDEwMDY0NAotLS0gYS9idWlsdGluL2JsYW1lLmMKKysrIGIvYnVpbHRpbi9ibGFtZS5jCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogI2luY2x1ZGUgInV0ZjguaCIKICNpbmNsdWRlICJ1c2VyZGlmZi5oIgorI2luY2x1ZGUgImxpbmUtcmFuZ2UuaCIKIAogc3RhdGljIGNoYXIgYmxhbWVfdXNhZ2VbXSA9IE5fKCJnaXQgYmxhbWUgW29wdGlvbnNdIFtyZXYtb3B0c10gW3Jldl0gWy0tXSBmaWxlIik7CiAKQEAgLTU2NiwxMSArNTY3LDE2IEBACiAJZHN0LT5zY29yZSA9IDA7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICpudGhfbGluZShzdHJ1Y3Qgc2NvcmVib2FyZCAqc2IsIGludCBsbm8pCitzdGF0aWMgY29uc3QgY2hhciAqbnRoX2xpbmUoc3RydWN0IHNjb3JlYm9hcmQgKnNiLCBsb25nIGxubykKIHsKIAlyZXR1cm4gc2ItPmZpbmFsX2J1ZiArIHNiLT5saW5lbm9bbG5vXTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIgKm50aF9saW5lX2NiKHZvaWQgKmRhdGEsIGxvbmcgbG5vKQoreworCXJldHVybiBudGhfbGluZSgoc3RydWN0IHNjb3JlYm9hcmQgKilkYXRhLCBsbm8pOworfQorCiAvKgogICogSXQgaXMga25vd24gdGhhdCBsaW5lcyBiZXR3ZWVuIHRsbm8gdG8gc2FtZSBjYW1lIGZyb20gcGFyZW50LCBhbmQgZQogICogaGFzIGFuIG92ZXJsYXAgd2l0aCB0aGF0IHJhbmdlLiAgaXQgYWxzbyBpcyBrbm93biB0aGF0IHBhcmVudCdzCkBAIC0xOTMyLDgzICsxOTM4LDYgQEAKIH0KIAogLyoKLSAqIFBhcnNpbmcgb2YgKGNvbW1hIHNlcGFyYXRlZCkgb25lIGl0ZW0gaW4gdGhlIC1MIG9wdGlvbgotICovCi1zdGF0aWMgY29uc3QgY2hhciAqcGFyc2VfbG9jKGNvbnN0IGNoYXIgKnNwZWMsCi0JCQkgICAgIHN0cnVjdCBzY29yZWJvYXJkICpzYiwgbG9uZyBsbm8sCi0JCQkgICAgIGxvbmcgYmVnaW4sIGxvbmcgKnJldCkKLXsKLQljaGFyICp0ZXJtOwotCWNvbnN0IGNoYXIgKmxpbmU7Ci0JbG9uZyBudW07Ci0JaW50IHJlZ19lcnJvcjsKLQlyZWdleF90IHJlZ2V4cDsKLQlyZWdtYXRjaF90IG1hdGNoWzFdOwotCi0JLyogQWxsb3cgIi1MIDxzb21ldGhpbmc+LCsyMCIgdG8gbWVhbiBzdGFydGluZyBhdCA8c29tZXRoaW5nPgotCSAqIGZvciAyMCBsaW5lcywgb3IgIi1MIDxzb21ldGhpbmc+LC01IiBmb3IgNSBsaW5lcyBlbmRpbmcgYXQKLQkgKiA8c29tZXRoaW5nPi4KLQkgKi8KLQlpZiAoMSA8IGJlZ2luICYmIChzcGVjWzBdID09ICcrJyB8fCBzcGVjWzBdID09ICctJykpIHsKLQkJbnVtID0gc3RydG9sKHNwZWMgKyAxLCAmdGVybSwgMTApOwotCQlpZiAodGVybSAhPSBzcGVjICsgMSkgewotCQkJaWYgKHNwZWNbMF0gPT0gJy0nKQotCQkJCW51bSA9IDAgLSBudW07Ci0JCQlpZiAoMCA8IG51bSkKLQkJCQkqcmV0ID0gYmVnaW4gKyBudW0gLSAyOwotCQkJZWxzZSBpZiAoIW51bSkKLQkJCQkqcmV0ID0gYmVnaW47Ci0JCQllbHNlCi0JCQkJKnJldCA9IGJlZ2luICsgbnVtOwotCQkJcmV0dXJuIHRlcm07Ci0JCX0KLQkJcmV0dXJuIHNwZWM7Ci0JfQotCW51bSA9IHN0cnRvbChzcGVjLCAmdGVybSwgMTApOwotCWlmICh0ZXJtICE9IHNwZWMpIHsKLQkJKnJldCA9IG51bTsKLQkJcmV0dXJuIHRlcm07Ci0JfQotCWlmIChzcGVjWzBdICE9ICcvJykKLQkJcmV0dXJuIHNwZWM7Ci0KLQkvKiBpdCBjb3VsZCBiZSBhIHJlZ2V4cCBvZiBmb3JtIC8uLi4vICovCi0JZm9yICh0ZXJtID0gKGNoYXIgKikgc3BlYyArIDE7ICp0ZXJtICYmICp0ZXJtICE9ICcvJzsgdGVybSsrKSB7Ci0JCWlmICgqdGVybSA9PSAnXFwnKQotCQkJdGVybSsrOwotCX0KLQlpZiAoKnRlcm0gIT0gJy8nKQotCQlyZXR1cm4gc3BlYzsKLQotCS8qIHRyeSBbc3BlYysxIC4uIHRlcm0tMV0gYXMgcmVnZXhwICovCi0JKnRlcm0gPSAwOwotCWJlZ2luLS07IC8qIGlucHV0IGlzIGluIGh1bWFuIHRlcm1zICovCi0JbGluZSA9IG50aF9saW5lKHNiLCBiZWdpbik7Ci0KLQlpZiAoIShyZWdfZXJyb3IgPSByZWdjb21wKCZyZWdleHAsIHNwZWMgKyAxLCBSRUdfTkVXTElORSkpICYmCi0JICAgICEocmVnX2Vycm9yID0gcmVnZXhlYygmcmVnZXhwLCBsaW5lLCAxLCBtYXRjaCwgMCkpKSB7Ci0JCWNvbnN0IGNoYXIgKmNwID0gbGluZSArIG1hdGNoWzBdLnJtX3NvOwotCQljb25zdCBjaGFyICpubGluZTsKLQotCQl3aGlsZSAoYmVnaW4rKyA8IGxubykgewotCQkJbmxpbmUgPSBudGhfbGluZShzYiwgYmVnaW4pOwotCQkJaWYgKGxpbmUgPD0gY3AgJiYgY3AgPCBubGluZSkKLQkJCQlicmVhazsKLQkJCWxpbmUgPSBubGluZTsKLQkJfQotCQkqcmV0ID0gYmVnaW47Ci0JCXJlZ2ZyZWUoJnJlZ2V4cCk7Ci0JCSp0ZXJtKysgPSAnLyc7Ci0JCXJldHVybiB0ZXJtOwotCX0KLQllbHNlIHsKLQkJY2hhciBlcnJidWZbMTAyNF07Ci0JCXJlZ2Vycm9yKHJlZ19lcnJvciwgJnJlZ2V4cCwgZXJyYnVmLCAxMDI0KTsKLQkJZGllKCItTCBwYXJhbWV0ZXIgJyVzJzogJXMiLCBzcGVjICsgMSwgZXJyYnVmKTsKLQl9Ci19Ci0KLS8qCiAgKiBQYXJzaW5nIG9mIC1MIG9wdGlvbgogICovCiBzdGF0aWMgdm9pZCBwcmVwYXJlX2JsYW1lX3JhbmdlKHN0cnVjdCBzY29yZWJvYXJkICpzYiwKQEAgLTIwMTYsMTUgKzE5NDUsNyBAQAogCQkJCWxvbmcgbG5vLAogCQkJCWxvbmcgKmJvdHRvbSwgbG9uZyAqdG9wKQogewotCWNvbnN0IGNoYXIgKnRlcm07Ci0KLQl0ZXJtID0gcGFyc2VfbG9jKGJvdHRvbXRvcCwgc2IsIGxubywgMSwgYm90dG9tKTsKLQlpZiAoKnRlcm0gPT0gJywnKSB7Ci0JCXRlcm0gPSBwYXJzZV9sb2ModGVybSArIDEsIHNiLCBsbm8sICpib3R0b20gKyAxLCB0b3ApOwotCQlpZiAoKnRlcm0pCi0JCQl1c2FnZShibGFtZV91c2FnZSk7Ci0JfQotCWlmICgqdGVybSkKKwlpZiAocGFyc2VfcmFuZ2VfYXJnKGJvdHRvbXRvcCwgbnRoX2xpbmVfY2IsIHNiLCBsbm8sIGJvdHRvbSwgdG9wLCBzYi0+cGF0aCkpCiAJCXVzYWdlKGJsYW1lX3VzYWdlKTsKIH0KIApAQCAtMjU3NCwxMCArMjQ5NSw2IEBACiAJYm90dG9tID0gdG9wID0gMDsKIAlpZiAoYm90dG9tdG9wKQogCQlwcmVwYXJlX2JsYW1lX3JhbmdlKCZzYiwgYm90dG9tdG9wLCBsbm8sICZib3R0b20sICZ0b3ApOwotCWlmIChib3R0b20gJiYgdG9wICYmIHRvcCA8IGJvdHRvbSkgewotCQlsb25nIHRtcDsKLQkJdG1wID0gdG9wOyB0b3AgPSBib3R0b207IGJvdHRvbSA9IHRtcDsKLQl9CiAJaWYgKGJvdHRvbSA8IDEpCiAJCWJvdHRvbSA9IDE7CiAJaWYgKHRvcCA8IDEpCmRpZmYgLS1naXQgYS9idWlsdGluL2NhdC1maWxlLmMgYi9idWlsdGluL2NhdC1maWxlLmMKaW5kZXggMDQ1Y2VlNy4uNDI1MzQ2MCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jYXQtZmlsZS5jCisrKyBiL2J1aWx0aW4vY2F0LWZpbGUuYwpAQCAtMTMsOSArMTMsNiBAQAogI2luY2x1ZGUgInVzZXJkaWZmLmgiCiAjaW5jbHVkZSAic3RyZWFtaW5nLmgiCiAKLSNkZWZpbmUgQkFUQ0ggMQotI2RlZmluZSBCQVRDSF9DSEVDSyAyCi0KIHN0YXRpYyBpbnQgY2F0X29uZV9maWxlKGludCBvcHQsIGNvbnN0IGNoYXIgKmV4cF90eXBlLCBjb25zdCBjaGFyICpvYmpfbmFtZSkKIHsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwpAQCAtMTE3LDU0ICsxMTQsMTY2IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgYmF0Y2hfb25lX29iamVjdChjb25zdCBjaGFyICpvYmpfbmFtZSwgaW50IHByaW50X2NvbnRlbnRzKQoteworc3RydWN0IGV4cGFuZF9kYXRhIHsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IDA7CisJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQl2b2lkICpjb250ZW50cyA9IE5VTEw7CisJdW5zaWduZWQgbG9uZyBkaXNrX3NpemU7CisKKwkvKgorCSAqIElmIG1hcmtfcXVlcnkgaXMgdHJ1ZSwgd2UgZG8gbm90IGV4cGFuZCBhbnl0aGluZywgYnV0IHJhdGhlcgorCSAqIGp1c3QgbWFyayB0aGUgb2JqZWN0X2luZm8gd2l0aCBpdGVtcyB3ZSB3aXNoIHRvIHF1ZXJ5LgorCSAqLworCWludCBtYXJrX3F1ZXJ5OworCisJLyoKKwkgKiBBZnRlciBhIG1hcmtfcXVlcnkgcnVuLCB0aGlzIG9iamVjdF9pbmZvIGlzIHNldCB1cCB0byBiZQorCSAqIHBhc3NlZCB0byBzaGExX29iamVjdF9pbmZvX2V4dGVuZGVkLiBJdCB3aWxsIHBvaW50IHRvIHRoZSBkYXRhCisJICogZWxlbWVudHMgYWJvdmUsIHNvIHlvdSBjYW4gcmV0cmlldmUgdGhlIHJlc3BvbnNlIGZyb20gdGhlcmUuCisJICovCisJc3RydWN0IG9iamVjdF9pbmZvIGluZm87Cit9OworCitzdGF0aWMgaW50IGlzX2F0b20oY29uc3QgY2hhciAqYXRvbSwgY29uc3QgY2hhciAqcywgaW50IHNsZW4pCit7CisJaW50IGFsZW4gPSBzdHJsZW4oYXRvbSk7CisJcmV0dXJuIGFsZW4gPT0gc2xlbiAmJiAhbWVtY21wKGF0b20sIHMsIGFsZW4pOworfQorCitzdGF0aWMgdm9pZCBleHBhbmRfYXRvbShzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqYXRvbSwgaW50IGxlbiwKKwkJCXZvaWQgKnZkYXRhKQoreworCXN0cnVjdCBleHBhbmRfZGF0YSAqZGF0YSA9IHZkYXRhOworCisJaWYgKGlzX2F0b20oIm9iamVjdG5hbWUiLCBhdG9tLCBsZW4pKSB7CisJCWlmICghZGF0YS0+bWFya19xdWVyeSkKKwkJCXN0cmJ1Zl9hZGRzdHIoc2IsIHNoYTFfdG9faGV4KGRhdGEtPnNoYTEpKTsKKwl9IGVsc2UgaWYgKGlzX2F0b20oIm9iamVjdHR5cGUiLCBhdG9tLCBsZW4pKSB7CisJCWlmIChkYXRhLT5tYXJrX3F1ZXJ5KQorCQkJZGF0YS0+aW5mby50eXBlcCA9ICZkYXRhLT50eXBlOworCQllbHNlCisJCQlzdHJidWZfYWRkc3RyKHNiLCB0eXBlbmFtZShkYXRhLT50eXBlKSk7CisJfSBlbHNlIGlmIChpc19hdG9tKCJvYmplY3RzaXplIiwgYXRvbSwgbGVuKSkgeworCQlpZiAoZGF0YS0+bWFya19xdWVyeSkKKwkJCWRhdGEtPmluZm8uc2l6ZXAgPSAmZGF0YS0+c2l6ZTsKKwkJZWxzZQorCQkJc3RyYnVmX2FkZGYoc2IsICIlbHUiLCBkYXRhLT5zaXplKTsKKwl9IGVsc2UgaWYgKGlzX2F0b20oIm9iamVjdHNpemU6ZGlzayIsIGF0b20sIGxlbikpIHsKKwkJaWYgKGRhdGEtPm1hcmtfcXVlcnkpCisJCQlkYXRhLT5pbmZvLmRpc2tfc2l6ZXAgPSAmZGF0YS0+ZGlza19zaXplOworCQllbHNlCisJCQlzdHJidWZfYWRkZihzYiwgIiVsdSIsIGRhdGEtPmRpc2tfc2l6ZSk7CisJfSBlbHNlCisJCWRpZSgidW5rbm93biBmb3JtYXQgZWxlbWVudDogJS4qcyIsIGxlbiwgYXRvbSk7Cit9CisKK3N0YXRpYyBzaXplX3QgZXhwYW5kX2Zvcm1hdChzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqc3RhcnQsIHZvaWQgKmRhdGEpCit7CisJY29uc3QgY2hhciAqZW5kOworCisJaWYgKCpzdGFydCAhPSAnKCcpCisJCXJldHVybiAwOworCWVuZCA9IHN0cmNocihzdGFydCArIDEsICcpJyk7CisJaWYgKCFlbmQpCisJCWRpZSgiZm9ybWF0IGVsZW1lbnQgJyVzJyBkb2VzIG5vdCBlbmQgaW4gJyknIiwgc3RhcnQpOworCisJZXhwYW5kX2F0b20oc2IsIHN0YXJ0ICsgMSwgZW5kIC0gc3RhcnQgLSAxLCBkYXRhKTsKKworCXJldHVybiBlbmQgLSBzdGFydCArIDE7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X29iamVjdF9vcl9kaWUoaW50IGZkLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJCWVudW0gb2JqZWN0X3R5cGUgdHlwZSwgdW5zaWduZWQgbG9uZyBzaXplKQoreworCWlmICh0eXBlID09IE9CSl9CTE9CKSB7CisJCWlmIChzdHJlYW1fYmxvYl90b19mZChmZCwgc2hhMSwgTlVMTCwgMCkgPCAwKQorCQkJZGllKCJ1bmFibGUgdG8gc3RyZWFtICVzIHRvIHN0ZG91dCIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKwl9CisJZWxzZSB7CisJCWVudW0gb2JqZWN0X3R5cGUgcnR5cGU7CisJCXVuc2lnbmVkIGxvbmcgcnNpemU7CisJCXZvaWQgKmNvbnRlbnRzOworCisJCWNvbnRlbnRzID0gcmVhZF9zaGExX2ZpbGUoc2hhMSwgJnJ0eXBlLCAmcnNpemUpOworCQlpZiAoIWNvbnRlbnRzKQorCQkJZGllKCJvYmplY3QgJXMgZGlzYXBwZWFyZWQiLCBzaGExX3RvX2hleChzaGExKSk7CisJCWlmIChydHlwZSAhPSB0eXBlKQorCQkJZGllKCJvYmplY3QgJXMgY2hhbmdlZCB0eXBlIT8iLCBzaGExX3RvX2hleChzaGExKSk7CisJCWlmIChyc2l6ZSAhPSBzaXplKQorCQkJZGllKCJvYmplY3QgJXMgY2hhbmdlIHNpemUhPyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKworCQl3cml0ZV9vcl9kaWUoZmQsIGNvbnRlbnRzLCBzaXplKTsKKwkJZnJlZShjb250ZW50cyk7CisJfQorfQorCitzdHJ1Y3QgYmF0Y2hfb3B0aW9ucyB7CisJaW50IGVuYWJsZWQ7CisJaW50IHByaW50X2NvbnRlbnRzOworCWNvbnN0IGNoYXIgKmZvcm1hdDsKK307CisKK3N0YXRpYyBpbnQgYmF0Y2hfb25lX29iamVjdChjb25zdCBjaGFyICpvYmpfbmFtZSwgc3RydWN0IGJhdGNoX29wdGlvbnMgKm9wdCwKKwkJCSAgICBzdHJ1Y3QgZXhwYW5kX2RhdGEgKmRhdGEpCit7CisJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAogCWlmICghb2JqX25hbWUpCiAJICAgcmV0dXJuIDE7CiAKLQlpZiAoZ2V0X3NoYTEob2JqX25hbWUsIHNoYTEpKSB7CisJaWYgKGdldF9zaGExKG9ial9uYW1lLCBkYXRhLT5zaGExKSkgewogCQlwcmludGYoIiVzIG1pc3NpbmdcbiIsIG9ial9uYW1lKTsKIAkJZmZsdXNoKHN0ZG91dCk7CiAJCXJldHVybiAwOwogCX0KIAotCWlmIChwcmludF9jb250ZW50cyA9PSBCQVRDSCkKLQkJY29udGVudHMgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOwotCWVsc2UKLQkJdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgJnNpemUpOwotCi0JaWYgKHR5cGUgPD0gMCkgeworCWlmIChzaGExX29iamVjdF9pbmZvX2V4dGVuZGVkKGRhdGEtPnNoYTEsICZkYXRhLT5pbmZvKSA8IDApIHsKIAkJcHJpbnRmKCIlcyBtaXNzaW5nXG4iLCBvYmpfbmFtZSk7CiAJCWZmbHVzaChzdGRvdXQpOwotCQlpZiAocHJpbnRfY29udGVudHMgPT0gQkFUQ0gpCi0JCQlmcmVlKGNvbnRlbnRzKTsKIAkJcmV0dXJuIDA7CiAJfQogCi0JcHJpbnRmKCIlcyAlcyAlbHVcbiIsIHNoYTFfdG9faGV4KHNoYTEpLCB0eXBlbmFtZSh0eXBlKSwgc2l6ZSk7Ci0JZmZsdXNoKHN0ZG91dCk7CisJc3RyYnVmX2V4cGFuZCgmYnVmLCBvcHQtPmZvcm1hdCwgZXhwYW5kX2Zvcm1hdCwgZGF0YSk7CisJc3RyYnVmX2FkZGNoKCZidWYsICdcbicpOworCXdyaXRlX29yX2RpZSgxLCBidWYuYnVmLCBidWYubGVuKTsKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIAotCWlmIChwcmludF9jb250ZW50cyA9PSBCQVRDSCkgewotCQl3cml0ZV9vcl9kaWUoMSwgY29udGVudHMsIHNpemUpOwotCQlwcmludGYoIlxuIik7Ci0JCWZmbHVzaChzdGRvdXQpOwotCQlmcmVlKGNvbnRlbnRzKTsKKwlpZiAob3B0LT5wcmludF9jb250ZW50cykgeworCQlwcmludF9vYmplY3Rfb3JfZGllKDEsIGRhdGEtPnNoYTEsIGRhdGEtPnR5cGUsIGRhdGEtPnNpemUpOworCQl3cml0ZV9vcl9kaWUoMSwgIlxuIiwgMSk7CiAJfQotCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgYmF0Y2hfb2JqZWN0cyhpbnQgcHJpbnRfY29udGVudHMpCitzdGF0aWMgaW50IGJhdGNoX29iamVjdHMoc3RydWN0IGJhdGNoX29wdGlvbnMgKm9wdCkKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBleHBhbmRfZGF0YSBkYXRhOworCisJaWYgKCFvcHQtPmZvcm1hdCkKKwkJb3B0LT5mb3JtYXQgPSAiJShvYmplY3RuYW1lKSAlKG9iamVjdHR5cGUpICUob2JqZWN0c2l6ZSkiOworCisJLyoKKwkgKiBFeHBhbmQgb25jZSB3aXRoIG91ciBzcGVjaWFsIG1hcmtfcXVlcnkgZmxhZywgd2hpY2ggd2lsbCBwcmltZSB0aGUKKwkgKiBvYmplY3RfaW5mbyB0byBiZSBoYW5kZWQgdG8gc2hhMV9vYmplY3RfaW5mb19leHRlbmRlZCBmb3IgZWFjaAorCSAqIG9iamVjdC4KKwkgKi8KKwltZW1zZXQoJmRhdGEsIDAsIHNpemVvZihkYXRhKSk7CisJZGF0YS5tYXJrX3F1ZXJ5ID0gMTsKKwlzdHJidWZfZXhwYW5kKCZidWYsIG9wdC0+Zm9ybWF0LCBleHBhbmRfZm9ybWF0LCAmZGF0YSk7CisJZGF0YS5tYXJrX3F1ZXJ5ID0gMDsKKworCS8qCisJICogV2UgYXJlIGdvaW5nIHRvIGNhbGwgZ2V0X3NoYTEgb24gYSBwb3RlbnRpYWxseSB2ZXJ5IGxhcmdlIG51bWJlciBvZgorCSAqIG9iamVjdHMuIEluIG1vc3QgbGFyZ2UgY2FzZXMsIHRoZXNlIHdpbGwgYmUgYWN0dWFsIG9iamVjdCBzaGExcy4gVGhlCisJICogY29zdCB0byBkb3VibGUtY2hlY2sgdGhhdCBlYWNoIG9uZSBpcyBub3QgYWxzbyBhIHJlZiAoanVzdCBzbyB3ZSBjYW4KKwkgKiB3YXJuKSBlbmRzIHVwIGR3YXJmaW5nIHRoZSBhY3R1YWwgY29zdCBvZiB0aGUgb2JqZWN0IGxvb2t1cHMKKwkgKiB0aGVtc2VsdmVzLiBXZSBjYW4gd29yayBhcm91bmQgaXQgYnkganVzdCB0dXJuaW5nIG9mZiB0aGUgd2FybmluZy4KKwkgKi8KKwl3YXJuX29uX29iamVjdF9yZWZuYW1lX2FtYmlndWl0eSA9IDA7CiAKIAl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4sICdcbicpICE9IEVPRikgewotCQlpbnQgZXJyb3IgPSBiYXRjaF9vbmVfb2JqZWN0KGJ1Zi5idWYsIHByaW50X2NvbnRlbnRzKTsKKwkJaW50IGVycm9yID0gYmF0Y2hfb25lX29iamVjdChidWYuYnVmLCBvcHQsICZkYXRhKTsKIAkJaWYgKGVycm9yKQogCQkJcmV0dXJuIGVycm9yOwogCX0KQEAgLTE4NiwxMCArMjk1LDI5IEBACiAJcmV0dXJuIGdpdF9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7CiB9CiAKK3N0YXRpYyBpbnQgYmF0Y2hfb3B0aW9uX2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwKKwkJCQkgY29uc3QgY2hhciAqYXJnLAorCQkJCSBpbnQgdW5zZXQpCit7CisJc3RydWN0IGJhdGNoX29wdGlvbnMgKmJvID0gb3B0LT52YWx1ZTsKKworCWlmICh1bnNldCkgeworCQltZW1zZXQoYm8sIDAsIHNpemVvZigqYm8pKTsKKwkJcmV0dXJuIDA7CisJfQorCisJYm8tPmVuYWJsZWQgPSAxOworCWJvLT5wcmludF9jb250ZW50cyA9ICFzdHJjbXAob3B0LT5sb25nX25hbWUsICJiYXRjaCIpOworCWJvLT5mb3JtYXQgPSBhcmc7CisKKwlyZXR1cm4gMDsKK30KKwogaW50IGNtZF9jYXRfZmlsZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlpbnQgb3B0ID0gMCwgYmF0Y2ggPSAwOworCWludCBvcHQgPSAwOwogCWNvbnN0IGNoYXIgKmV4cF90eXBlID0gTlVMTCwgKm9ial9uYW1lID0gTlVMTDsKKwlzdHJ1Y3QgYmF0Y2hfb3B0aW9ucyBiYXRjaCA9IHswfTsKIAogCWNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0gewogCQlPUFRfR1JPVVAoTl8oIjx0eXBlPiBjYW4gYmUgb25lIG9mOiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIpKSwKQEAgLTIwMCwxMiArMzI4LDEyIEBACiAJCU9QVF9TRVRfSU5UKCdwJywgTlVMTCwgJm9wdCwgTl8oInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IiksICdwJyksCiAJCU9QVF9TRVRfSU5UKDAsICJ0ZXh0Y29udiIsICZvcHQsCiAJCQkgICAgTl8oImZvciBibG9iIG9iamVjdHMsIHJ1biB0ZXh0Y29udiBvbiBvYmplY3QncyBjb250ZW50IiksICdjJyksCi0JCU9QVF9TRVRfSU5UKDAsICJiYXRjaCIsICZiYXRjaCwKLQkJCSAgICBOXygic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IiksCi0JCQkgICAgQkFUQ0gpLAotCQlPUFRfU0VUX0lOVCgwLCAiYmF0Y2gtY2hlY2siLCAmYmF0Y2gsCi0JCQkgICAgTl8oInNob3cgaW5mbyBhYm91dCBvYmplY3RzIGZlZCBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIpLAotCQkJICAgIEJBVENIX0NIRUNLKSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJiYXRjaCIsICZiYXRjaCwgImZvcm1hdCIsCisJCQlOXygic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IiksCisJCQlQQVJTRV9PUFRfT1BUQVJHLCBiYXRjaF9vcHRpb25fY2FsbGJhY2sgfSwKKwkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJiYXRjaC1jaGVjayIsICZiYXRjaCwgImZvcm1hdCIsCisJCQlOXygic2hvdyBpbmZvIGFib3V0IG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IiksCisJCQlQQVJTRV9PUFRfT1BUQVJHLCBiYXRjaF9vcHRpb25fY2FsbGJhY2sgfSwKIAkJT1BUX0VORCgpCiAJfTsKIApAQCAtMjIyLDE5ICszNTAsMTkgQEAKIAkJZWxzZQogCQkJdXNhZ2Vfd2l0aF9vcHRpb25zKGNhdF9maWxlX3VzYWdlLCBvcHRpb25zKTsKIAl9Ci0JaWYgKCFvcHQgJiYgIWJhdGNoKSB7CisJaWYgKCFvcHQgJiYgIWJhdGNoLmVuYWJsZWQpIHsKIAkJaWYgKGFyZ2MgPT0gMikgewogCQkJZXhwX3R5cGUgPSBhcmd2WzBdOwogCQkJb2JqX25hbWUgPSBhcmd2WzFdOwogCQl9IGVsc2UKIAkJCXVzYWdlX3dpdGhfb3B0aW9ucyhjYXRfZmlsZV91c2FnZSwgb3B0aW9ucyk7CiAJfQotCWlmIChiYXRjaCAmJiAob3B0IHx8IGFyZ2MpKSB7CisJaWYgKGJhdGNoLmVuYWJsZWQgJiYgKG9wdCB8fCBhcmdjKSkgewogCQl1c2FnZV93aXRoX29wdGlvbnMoY2F0X2ZpbGVfdXNhZ2UsIG9wdGlvbnMpOwogCX0KIAotCWlmIChiYXRjaCkKLQkJcmV0dXJuIGJhdGNoX29iamVjdHMoYmF0Y2gpOworCWlmIChiYXRjaC5lbmFibGVkKQorCQlyZXR1cm4gYmF0Y2hfb2JqZWN0cygmYmF0Y2gpOwogCiAJcmV0dXJuIGNhdF9vbmVfZmlsZShvcHQsIGV4cF90eXBlLCBvYmpfbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2NoZWNrLWlnbm9yZS5jIGIvYnVpbHRpbi9jaGVjay1pZ25vcmUuYwppbmRleCA4NTRhODhhLi40YThmYzcwIDEwMDY0NAotLS0gYS9idWlsdGluL2NoZWNrLWlnbm9yZS5jCisrKyBiL2J1aWx0aW4vY2hlY2staWdub3JlLmMKQEAgLTUsNyArNSw3IEBACiAjaW5jbHVkZSAicGF0aHNwZWMuaCIKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAKLXN0YXRpYyBpbnQgcXVpZXQsIHZlcmJvc2UsIHN0ZGluX3BhdGhzOworc3RhdGljIGludCBxdWlldCwgdmVyYm9zZSwgc3RkaW5fcGF0aHMsIHNob3dfbm9uX21hdGNoaW5nOwogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjaGVja19pZ25vcmVfdXNhZ2VbXSA9IHsKICJnaXQgY2hlY2staWdub3JlIFtvcHRpb25zXSBwYXRobmFtZS4uLiIsCiAiZ2l0IGNoZWNrLWlnbm9yZSBbb3B0aW9uc10gLS1zdGRpbiA8IDxsaXN0LW9mLXBhdGhzPiIsCkBAIC0yMiwyMSArMjIsMjggQEAKIAkJICAgIE5fKCJyZWFkIGZpbGUgbmFtZXMgZnJvbSBzdGRpbiIpKSwKIAlPUFRfQk9PTEVBTigneicsIE5VTEwsICZudWxsX3Rlcm1fbGluZSwKIAkJICAgIE5fKCJpbnB1dCBwYXRocyBhcmUgdGVybWluYXRlZCBieSBhIG51bGwgY2hhcmFjdGVyIikpLAorCU9QVF9CT09MRUFOKCduJywgIm5vbi1tYXRjaGluZyIsICZzaG93X25vbl9tYXRjaGluZywKKwkJICAgIE5fKCJzaG93IG5vbi1tYXRjaGluZyBpbnB1dCBwYXRocyIpKSwKIAlPUFRfRU5EKCkKIH07CiAKIHN0YXRpYyB2b2lkIG91dHB1dF9leGNsdWRlKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBleGNsdWRlICpleGNsdWRlKQogewotCWNoYXIgKmJhbmcgID0gZXhjbHVkZS0+ZmxhZ3MgJiBFWENfRkxBR19ORUdBVElWRSAgPyAiISIgOiAiIjsKLQljaGFyICpzbGFzaCA9IGV4Y2x1ZGUtPmZsYWdzICYgRVhDX0ZMQUdfTVVTVEJFRElSID8gIi8iIDogIiI7CisJY2hhciAqYmFuZyAgPSAoZXhjbHVkZSAmJiBleGNsdWRlLT5mbGFncyAmIEVYQ19GTEFHX05FR0FUSVZFKSAgPyAiISIgOiAiIjsKKwljaGFyICpzbGFzaCA9IChleGNsdWRlICYmIGV4Y2x1ZGUtPmZsYWdzICYgRVhDX0ZMQUdfTVVTVEJFRElSKSA/ICIvIiA6ICIiOwogCWlmICghbnVsbF90ZXJtX2xpbmUpIHsKIAkJaWYgKCF2ZXJib3NlKSB7CiAJCQl3cml0ZV9uYW1lX3F1b3RlZChwYXRoLCBzdGRvdXQsICdcbicpOwogCQl9IGVsc2UgewotCQkJcXVvdGVfY19zdHlsZShleGNsdWRlLT5lbC0+c3JjLCBOVUxMLCBzdGRvdXQsIDApOwotCQkJcHJpbnRmKCI6JWQ6JXMlcyVzXHQiLAotCQkJICAgICAgIGV4Y2x1ZGUtPnNyY3BvcywKLQkJCSAgICAgICBiYW5nLCBleGNsdWRlLT5wYXR0ZXJuLCBzbGFzaCk7CisJCQlpZiAoZXhjbHVkZSkgeworCQkJCXF1b3RlX2Nfc3R5bGUoZXhjbHVkZS0+ZWwtPnNyYywgTlVMTCwgc3Rkb3V0LCAwKTsKKwkJCQlwcmludGYoIjolZDolcyVzJXNcdCIsCisJCQkJICAgICAgIGV4Y2x1ZGUtPnNyY3BvcywKKwkJCQkgICAgICAgYmFuZywgZXhjbHVkZS0+cGF0dGVybiwgc2xhc2gpOworCQkJfQorCQkJZWxzZSB7CisJCQkJcHJpbnRmKCI6Olx0Iik7CisJCQl9CiAJCQlxdW90ZV9jX3N0eWxlKHBhdGgsIE5VTEwsIHN0ZG91dCwgMCk7CiAJCQlmcHV0YygnXG4nLCBzdGRvdXQpOwogCQl9CkBAIC00NCwzMCArNTEsMjYgQEAKIAkJaWYgKCF2ZXJib3NlKSB7CiAJCQlwcmludGYoIiVzJWMiLCBwYXRoLCAnXDAnKTsKIAkJfSBlbHNlIHsKLQkJCXByaW50ZigiJXMlYyVkJWMlcyVzJXMlYyVzJWMiLAotCQkJICAgICAgIGV4Y2x1ZGUtPmVsLT5zcmMsICdcMCcsCi0JCQkgICAgICAgZXhjbHVkZS0+c3JjcG9zLCAnXDAnLAotCQkJICAgICAgIGJhbmcsIGV4Y2x1ZGUtPnBhdHRlcm4sIHNsYXNoLCAnXDAnLAotCQkJICAgICAgIHBhdGgsICdcMCcpOworCQkJaWYgKGV4Y2x1ZGUpCisJCQkJcHJpbnRmKCIlcyVjJWQlYyVzJXMlcyVjJXMlYyIsCisJCQkJICAgICAgIGV4Y2x1ZGUtPmVsLT5zcmMsICdcMCcsCisJCQkJICAgICAgIGV4Y2x1ZGUtPnNyY3BvcywgJ1wwJywKKwkJCQkgICAgICAgYmFuZywgZXhjbHVkZS0+cGF0dGVybiwgc2xhc2gsICdcMCcsCisJCQkJICAgICAgIHBhdGgsICdcMCcpOworCQkJZWxzZQorCQkJCXByaW50ZigiJWMlYyVjJXMlYyIsICdcMCcsICdcMCcsICdcMCcsIHBhdGgsICdcMCcpOwogCQl9CiAJfQogfQogCi1zdGF0aWMgaW50IGNoZWNrX2lnbm9yZShjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKK3N0YXRpYyBpbnQgY2hlY2tfaWdub3JlKHN0cnVjdCBkaXJfc3RydWN0ICpkaXIsCisJCQljb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKipwYXRoc3BlYykKIHsKLQlzdHJ1Y3QgZGlyX3N0cnVjdCBkaXI7CiAJY29uc3QgY2hhciAqcGF0aCwgKmZ1bGxfcGF0aDsKIAljaGFyICpzZWVuOwogCWludCBudW1faWdub3JlZCA9IDAsIGR0eXBlID0gRFRfVU5LTk9XTiwgaTsKIAlzdHJ1Y3QgZXhjbHVkZSAqZXhjbHVkZTsKIAotCS8qIHJlYWRfY2FjaGUoKSBpcyBvbmx5IG5lY2Vzc2FyeSBzbyB3ZSBjYW4gd2F0Y2ggb3V0IGZvciBzdWJtb2R1bGVzLiAqLwotCWlmIChyZWFkX2NhY2hlKCkgPCAwKQotCQlkaWUoXygiaW5kZXggZmlsZSBjb3JydXB0IikpOwotCi0JbWVtc2V0KCZkaXIsIDAsIHNpemVvZihkaXIpKTsKLQlzZXR1cF9zdGFuZGFyZF9leGNsdWRlcygmZGlyKTsKLQogCWlmICghcGF0aHNwZWMgfHwgISpwYXRoc3BlYykgewogCQlpZiAoIXF1aWV0KQogCQkJZnByaW50ZihzdGRlcnIsICJubyBwYXRoc3BlYyBnaXZlbi5cbiIpOwpAQCAtODYsMjggKzg5LDI2IEBACiAJCQkJCT8gc3RybGVuKHByZWZpeCkgOiAwLCBwYXRoKTsKIAkJZnVsbF9wYXRoID0gY2hlY2tfcGF0aF9mb3JfZ2l0bGluayhmdWxsX3BhdGgpOwogCQlkaWVfaWZfcGF0aF9iZXlvbmRfc3ltbGluayhmdWxsX3BhdGgsIHByZWZpeCk7CisJCWV4Y2x1ZGUgPSBOVUxMOwogCQlpZiAoIXNlZW5baV0pIHsKLQkJCWV4Y2x1ZGUgPSBsYXN0X2V4Y2x1ZGVfbWF0Y2hpbmcoJmRpciwgZnVsbF9wYXRoLCAmZHR5cGUpOwotCQkJaWYgKGV4Y2x1ZGUpIHsKLQkJCQlpZiAoIXF1aWV0KQotCQkJCQlvdXRwdXRfZXhjbHVkZShwYXRoLCBleGNsdWRlKTsKLQkJCQludW1faWdub3JlZCsrOwotCQkJfQorCQkJZXhjbHVkZSA9IGxhc3RfZXhjbHVkZV9tYXRjaGluZyhkaXIsIGZ1bGxfcGF0aCwgJmR0eXBlKTsKIAkJfQorCQlpZiAoIXF1aWV0ICYmIChleGNsdWRlIHx8IHNob3dfbm9uX21hdGNoaW5nKSkKKwkJCW91dHB1dF9leGNsdWRlKHBhdGgsIGV4Y2x1ZGUpOworCQlpZiAoZXhjbHVkZSkKKwkJCW51bV9pZ25vcmVkKys7CiAJfQogCWZyZWUoc2Vlbik7Ci0JY2xlYXJfZGlyZWN0b3J5KCZkaXIpOwogCiAJcmV0dXJuIG51bV9pZ25vcmVkOwogfQogCi1zdGF0aWMgaW50IGNoZWNrX2lnbm9yZV9zdGRpbl9wYXRocyhjb25zdCBjaGFyICpwcmVmaXgpCitzdGF0aWMgaW50IGNoZWNrX2lnbm9yZV9zdGRpbl9wYXRocyhzdHJ1Y3QgZGlyX3N0cnVjdCAqZGlyLCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IHN0cmJ1ZiBidWYsIG5idWY7Ci0JY2hhciAqKnBhdGhzcGVjID0gTlVMTDsKLQlzaXplX3QgbnIgPSAwLCBhbGxvYyA9IDA7CisJY2hhciAqcGF0aHNwZWNbMl0gPSB7IE5VTEwsIE5VTEwgfTsKIAlpbnQgbGluZV90ZXJtaW5hdGlvbiA9IG51bGxfdGVybV9saW5lID8gMCA6ICdcbic7Ci0JaW50IG51bV9pZ25vcmVkOworCWludCBudW1faWdub3JlZCA9IDA7CiAKIAlzdHJidWZfaW5pdCgmYnVmLCAwKTsKIAlzdHJidWZfaW5pdCgmbmJ1ZiwgMCk7CkBAIC0xMTgsMjMgKzExOSwxOSBAQAogCQkJCWRpZSgibGluZSBpcyBiYWRseSBxdW90ZWQiKTsKIAkJCXN0cmJ1Zl9zd2FwKCZidWYsICZuYnVmKTsKIAkJfQotCQlBTExPQ19HUk9XKHBhdGhzcGVjLCBuciArIDEsIGFsbG9jKTsKLQkJcGF0aHNwZWNbbnJdID0geGNhbGxvYyhzdHJsZW4oYnVmLmJ1ZikgKyAxLCBzaXplb2YoKmJ1Zi5idWYpKTsKLQkJc3RyY3B5KHBhdGhzcGVjW25yKytdLCBidWYuYnVmKTsKKwkJcGF0aHNwZWNbMF0gPSBidWYuYnVmOworCQludW1faWdub3JlZCArPSBjaGVja19pZ25vcmUoZGlyLCBwcmVmaXgsIChjb25zdCBjaGFyICoqKXBhdGhzcGVjKTsKKwkJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImNoZWNrLWlnbm9yZSB0byBzdGRvdXQiKTsKIAl9Ci0JQUxMT0NfR1JPVyhwYXRoc3BlYywgbnIgKyAxLCBhbGxvYyk7Ci0JcGF0aHNwZWNbbnJdID0gTlVMTDsKLQludW1faWdub3JlZCA9IGNoZWNrX2lnbm9yZShwcmVmaXgsIChjb25zdCBjaGFyICoqKXBhdGhzcGVjKTsKLQltYXliZV9mbHVzaF9vcl9kaWUoc3Rkb3V0LCAiYXR0cmlidXRlIHRvIHN0ZG91dCIpOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCXN0cmJ1Zl9yZWxlYXNlKCZuYnVmKTsKLQlmcmVlKHBhdGhzcGVjKTsKIAlyZXR1cm4gbnVtX2lnbm9yZWQ7CiB9CiAKIGludCBjbWRfY2hlY2tfaWdub3JlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBudW1faWdub3JlZDsKKwlzdHJ1Y3QgZGlyX3N0cnVjdCBkaXI7CiAKIAlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CiAKQEAgLTE1NiwxMyArMTUzLDI0IEBACiAJCWlmICh2ZXJib3NlKQogCQkJZGllKF8oImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIikpOwogCX0KKwlpZiAoc2hvd19ub25fbWF0Y2hpbmcgJiYgIXZlcmJvc2UpCisJCWRpZShfKCItLW5vbi1tYXRjaGluZyBpcyBvbmx5IHZhbGlkIHdpdGggLS12ZXJib3NlIikpOworCisJLyogcmVhZF9jYWNoZSgpIGlzIG9ubHkgbmVjZXNzYXJ5IHNvIHdlIGNhbiB3YXRjaCBvdXQgZm9yIHN1Ym1vZHVsZXMuICovCisJaWYgKHJlYWRfY2FjaGUoKSA8IDApCisJCWRpZShfKCJpbmRleCBmaWxlIGNvcnJ1cHQiKSk7CisKKwltZW1zZXQoJmRpciwgMCwgc2l6ZW9mKGRpcikpOworCXNldHVwX3N0YW5kYXJkX2V4Y2x1ZGVzKCZkaXIpOwogCiAJaWYgKHN0ZGluX3BhdGhzKSB7Ci0JCW51bV9pZ25vcmVkID0gY2hlY2tfaWdub3JlX3N0ZGluX3BhdGhzKHByZWZpeCk7CisJCW51bV9pZ25vcmVkID0gY2hlY2tfaWdub3JlX3N0ZGluX3BhdGhzKCZkaXIsIHByZWZpeCk7CiAJfSBlbHNlIHsKLQkJbnVtX2lnbm9yZWQgPSBjaGVja19pZ25vcmUocHJlZml4LCBhcmd2KTsKKwkJbnVtX2lnbm9yZWQgPSBjaGVja19pZ25vcmUoJmRpciwgcHJlZml4LCBhcmd2KTsKIAkJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgImlnbm9yZSB0byBzdGRvdXQiKTsKIAl9CiAKKwljbGVhcl9kaXJlY3RvcnkoJmRpcik7CisKIAlyZXR1cm4gIW51bV9pZ25vcmVkOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jaGVjay1tYWlsbWFwLmMgYi9idWlsdGluL2NoZWNrLW1haWxtYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjRkODA5Ci0tLSAvZGV2L251bGwKKysrIGIvYnVpbHRpbi9jaGVjay1tYWlsbWFwLmMKQEAgLTAsMCArMSw2NiBAQAorI2luY2x1ZGUgImJ1aWx0aW4uaCIKKyNpbmNsdWRlICJtYWlsbWFwLmgiCisjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgorI2luY2x1ZGUgInN0cmluZy1saXN0LmgiCisKK3N0YXRpYyBpbnQgdXNlX3N0ZGluOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBjaGVja19tYWlsbWFwX3VzYWdlW10gPSB7CitOXygiZ2l0IGNoZWNrLW1haWxtYXAgW29wdGlvbnNdIDxjb250YWN0Pi4uLiIpLAorTlVMTAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBvcHRpb24gY2hlY2tfbWFpbG1hcF9vcHRpb25zW10gPSB7CisJT1BUX0JPT0woMCwgInN0ZGluIiwgJnVzZV9zdGRpbiwgTl8oImFsc28gcmVhZCBjb250YWN0cyBmcm9tIHN0ZGluIikpLAorCU9QVF9FTkQoKQorfTsKKworc3RhdGljIHZvaWQgY2hlY2tfbWFpbG1hcChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1haWxtYXAsIGNvbnN0IGNoYXIgKmNvbnRhY3QpCit7CisJY29uc3QgY2hhciAqbmFtZSwgKm1haWw7CisJc2l6ZV90IG5hbWVsZW4sIG1haWxsZW47CisJc3RydWN0IGlkZW50X3NwbGl0IGlkZW50OworCisJaWYgKHNwbGl0X2lkZW50X2xpbmUoJmlkZW50LCBjb250YWN0LCBzdHJsZW4oY29udGFjdCkpKQorCQlkaWUoXygidW5hYmxlIHRvIHBhcnNlIGNvbnRhY3Q6ICVzIiksIGNvbnRhY3QpOworCisJbmFtZSA9IGlkZW50Lm5hbWVfYmVnaW47CisJbmFtZWxlbiA9IGlkZW50Lm5hbWVfZW5kIC0gaWRlbnQubmFtZV9iZWdpbjsKKwltYWlsID0gaWRlbnQubWFpbF9iZWdpbjsKKwltYWlsbGVuID0gaWRlbnQubWFpbF9lbmQgLSBpZGVudC5tYWlsX2JlZ2luOworCisJbWFwX3VzZXIobWFpbG1hcCwgJm1haWwsICZtYWlsbGVuLCAmbmFtZSwgJm5hbWVsZW4pOworCisJaWYgKG5hbWVsZW4pCisJCXByaW50ZigiJS4qcyAiLCAoaW50KW5hbWVsZW4sIG5hbWUpOworCXByaW50ZigiPCUuKnM+XG4iLCAoaW50KW1haWxsZW4sIG1haWwpOworfQorCitpbnQgY21kX2NoZWNrX21haWxtYXAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJaW50IGk7CisJc3RydWN0IHN0cmluZ19saXN0IG1haWxtYXAgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOworCisJZ2l0X2NvbmZpZyhnaXRfZGVmYXVsdF9jb25maWcsIE5VTEwpOworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwgY2hlY2tfbWFpbG1hcF9vcHRpb25zLAorCQkJICAgICBjaGVja19tYWlsbWFwX3VzYWdlLCAwKTsKKwlpZiAoYXJnYyA9PSAwICYmICF1c2Vfc3RkaW4pCisJCWRpZShfKCJubyBjb250YWN0cyBzcGVjaWZpZWQiKSk7CisKKwlyZWFkX21haWxtYXAoJm1haWxtYXAsIE5VTEwpOworCisJZm9yIChpID0gMDsgaSA8IGFyZ2M7ICsraSkKKwkJY2hlY2tfbWFpbG1hcCgmbWFpbG1hcCwgYXJndltpXSk7CisJbWF5YmVfZmx1c2hfb3JfZGllKHN0ZG91dCwgInN0ZG91dCIpOworCisJaWYgKHVzZV9zdGRpbikgeworCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCQl3aGlsZSAoc3RyYnVmX2dldGxpbmUoJmJ1Ziwgc3RkaW4sICdcbicpICE9IEVPRikgeworCQkJY2hlY2tfbWFpbG1hcCgmbWFpbG1hcCwgYnVmLmJ1Zik7CisJCQltYXliZV9mbHVzaF9vcl9kaWUoc3Rkb3V0LCAic3Rkb3V0Iik7CisJCX0KKwkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJfQorCisJY2xlYXJfbWFpbG1hcCgmbWFpbG1hcCk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9idWlsdGluL2NoZWNrb3V0LmMgYi9idWlsdGluL2NoZWNrb3V0LmMKaW5kZXggZjViNTBlNS4uNzAyNTkzOCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jaGVja291dC5jCisrKyBiL2J1aWx0aW4vY2hlY2tvdXQuYwpAQCAtOTcsNyArOTcsNyBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHNraXBfc2FtZV9uYW1lKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCBwb3MpCitzdGF0aWMgaW50IHNraXBfc2FtZV9uYW1lKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCBwb3MpCiB7CiAJd2hpbGUgKCsrcG9zIDwgYWN0aXZlX25yICYmCiAJICAgICAgICFzdHJjbXAoYWN0aXZlX2NhY2hlW3Bvc10tPm5hbWUsIGNlLT5uYW1lKSkKQEAgLTEwNSw3ICsxMDUsNyBAQAogCXJldHVybiBwb3M7CiB9CiAKLXN0YXRpYyBpbnQgY2hlY2tfc3RhZ2UoaW50IHN0YWdlLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBpbnQgcG9zKQorc3RhdGljIGludCBjaGVja19zdGFnZShpbnQgc3RhZ2UsIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGludCBwb3MpCiB7CiAJd2hpbGUgKHBvcyA8IGFjdGl2ZV9uciAmJgogCSAgICAgICAhc3RyY21wKGFjdGl2ZV9jYWNoZVtwb3NdLT5uYW1lLCBjZS0+bmFtZSkpIHsKQEAgLTExOSw3ICsxMTksNyBAQAogCQlyZXR1cm4gZXJyb3IoXygicGF0aCAnJXMnIGRvZXMgbm90IGhhdmUgdGhlaXIgdmVyc2lvbiIpLCBjZS0+bmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQgY2hlY2tfc3RhZ2VzKHVuc2lnbmVkIHN0YWdlcywgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IHBvcykKK3N0YXRpYyBpbnQgY2hlY2tfc3RhZ2VzKHVuc2lnbmVkIHN0YWdlcywgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IHBvcykKIHsKIAl1bnNpZ25lZCBzZWVuID0gMDsKIAljb25zdCBjaGFyICpuYW1lID0gY2UtPm5hbWU7CkBAIC0zMjEsNyArMzIxLDcgQEAKIAogCS8qIEFueSB1bm1lcmdlZCBwYXRocz8gKi8KIAlmb3IgKHBvcyA9IDA7IHBvcyA8IGFjdGl2ZV9ucjsgcG9zKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CiAJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9NQVRDSEVEKSB7CiAJCQlpZiAoIWNlX3N0YWdlKGNlKSkKIAkJCQljb250aW51ZTsKQEAgLTU4Nyw3ICs1ODcsNyBAQAogCQkJCSAgIHN0cnVjdCBicmFuY2hfaW5mbyAqbmV3KQogewogCXN0cnVjdCBzdHJidWYgbXNnID0gU1RSQlVGX0lOSVQ7Ci0JY29uc3QgY2hhciAqb2xkX2Rlc2M7CisJY29uc3QgY2hhciAqb2xkX2Rlc2MsICpyZWZsb2dfbXNnOwogCWlmIChvcHRzLT5uZXdfYnJhbmNoKSB7CiAJCWlmIChvcHRzLT5uZXdfb3JwaGFuX2JyYW5jaCkgewogCQkJaWYgKG9wdHMtPm5ld19icmFuY2hfbG9nICYmICFsb2dfYWxsX3JlZl91cGRhdGVzKSB7CkBAIC02MjAsOCArNjIwLDEzIEBACiAJb2xkX2Rlc2MgPSBvbGQtPm5hbWU7CiAJaWYgKCFvbGRfZGVzYyAmJiBvbGQtPmNvbW1pdCkKIAkJb2xkX2Rlc2MgPSBzaGExX3RvX2hleChvbGQtPmNvbW1pdC0+b2JqZWN0LnNoYTEpOwotCXN0cmJ1Zl9hZGRmKCZtc2csICJjaGVja291dDogbW92aW5nIGZyb20gJXMgdG8gJXMiLAotCQkgICAgb2xkX2Rlc2MgPyBvbGRfZGVzYyA6ICIoaW52YWxpZCkiLCBuZXctPm5hbWUpOworCisJcmVmbG9nX21zZyA9IGdldGVudigiR0lUX1JFRkxPR19BQ1RJT04iKTsKKwlpZiAoIXJlZmxvZ19tc2cpCisJCXN0cmJ1Zl9hZGRmKCZtc2csICJjaGVja291dDogbW92aW5nIGZyb20gJXMgdG8gJXMiLAorCQkJb2xkX2Rlc2MgPyBvbGRfZGVzYyA6ICIoaW52YWxpZCkiLCBuZXctPm5hbWUpOworCWVsc2UKKwkJc3RyYnVmX2luc2VydCgmbXNnLCAwLCByZWZsb2dfbXNnLCBzdHJsZW4ocmVmbG9nX21zZykpOwogCiAJaWYgKCFzdHJjbXAobmV3LT5uYW1lLCAiSEVBRCIpICYmICFuZXctPnBhdGggJiYgIW9wdHMtPmZvcmNlX2RldGFjaCkgewogCQkvKiBOb3RoaW5nIHRvIGRvLiAqLwpAQCAtODM4LDEzICs4NDMsMTYgQEAKIAltZW1zZXQoJnF1ZXJ5LCAwLCBzaXplb2Yoc3RydWN0IHJlZnNwZWMpKTsKIAlxdWVyeS5zcmMgPSBjYi0+c3JjX3JlZjsKIAlpZiAocmVtb3RlX2ZpbmRfdHJhY2tpbmcocmVtb3RlLCAmcXVlcnkpIHx8Ci0JICAgIGdldF9zaGExKHF1ZXJ5LmRzdCwgY2ItPmRzdF9zaGExKSkKKwkgICAgZ2V0X3NoYTEocXVlcnkuZHN0LCBjYi0+ZHN0X3NoYTEpKSB7CisJCWZyZWUocXVlcnkuZHN0KTsKIAkJcmV0dXJuIDA7CisJfQogCWlmIChjYi0+ZHN0X3JlZikgeworCQlmcmVlKHF1ZXJ5LmRzdCk7CiAJCWNiLT51bmlxdWUgPSAwOwogCQlyZXR1cm4gMDsKIAl9Ci0JY2ItPmRzdF9yZWYgPSB4c3RyZHVwKHF1ZXJ5LmRzdCk7CisJY2ItPmRzdF9yZWYgPSBxdWVyeS5kc3Q7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vY2xlYW4uYyBiL2J1aWx0aW4vY2xlYW4uYwppbmRleCAwNGUzOTZiLi4zYzg1ZTE1IDEwMDY0NAotLS0gYS9idWlsdGluL2NsZWFuLmMKKysrIGIvYnVpbHRpbi9jbGVhbi5jCkBAIC0xMywxMSArMTMsMTYgQEAKICNpbmNsdWRlICJyZWZzLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJxdW90ZS5oIgorI2luY2x1ZGUgImNvbHVtbi5oIgorI2luY2x1ZGUgImNvbG9yLmgiCiAKIHN0YXRpYyBpbnQgZm9yY2UgPSAtMTsgLyogdW5zZXQgKi8KK3N0YXRpYyBpbnQgaW50ZXJhY3RpdmU7CitzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGRlbF9saXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9EVVA7CitzdGF0aWMgdW5zaWduZWQgaW50IGNvbG9wdHM7CiAKIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBidWlsdGluX2NsZWFuX3VzYWdlW10gPSB7Ci0JTl8oImdpdCBjbGVhbiBbLWRdIFstZl0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iKSwKKwlOXygiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLWldIFstbl0gWy1xXSBbLWUgPHBhdHRlcm4+XSBbLXggfCAtWF0gWy0tXSA8cGF0aHM+Li4uIiksCiAJTlVMTAogfTsKIApAQCAtMjcsMTEgKzMyLDExMiBAQAogc3RhdGljIGNvbnN0IGNoYXIgKm1zZ193b3VsZF9za2lwX2dpdF9kaXIgPSBOXygiV291bGQgc2tpcCByZXBvc2l0b3J5ICVzXG4iKTsKIHN0YXRpYyBjb25zdCBjaGFyICptc2dfd2Fybl9yZW1vdmVfZmFpbGVkID0gTl8oImZhaWxlZCB0byByZW1vdmUgJXMiKTsKIAorc3RhdGljIGludCBjbGVhbl91c2VfY29sb3IgPSAtMTsKK3N0YXRpYyBjaGFyIGNsZWFuX2NvbG9yc1tdW0NPTE9SX01BWExFTl0gPSB7CisJR0lUX0NPTE9SX1JFU0VULAorCUdJVF9DT0xPUl9OT1JNQUwsCS8qIFBMQUlOICovCisJR0lUX0NPTE9SX0JPTERfQkxVRSwJLyogUFJPTVBUICovCisJR0lUX0NPTE9SX0JPTEQsCQkvKiBIRUFERVIgKi8KKwlHSVRfQ09MT1JfQk9MRF9SRUQsCS8qIEhFTFAgKi8KKwlHSVRfQ09MT1JfQk9MRF9SRUQsCS8qIEVSUk9SICovCit9OworZW51bSBjb2xvcl9jbGVhbiB7CisJQ0xFQU5fQ09MT1JfUkVTRVQgPSAwLAorCUNMRUFOX0NPTE9SX1BMQUlOID0gMSwKKwlDTEVBTl9DT0xPUl9QUk9NUFQgPSAyLAorCUNMRUFOX0NPTE9SX0hFQURFUiA9IDMsCisJQ0xFQU5fQ09MT1JfSEVMUCA9IDQsCisJQ0xFQU5fQ09MT1JfRVJST1IgPSA1LAorfTsKKworI2RlZmluZSBNRU5VX09QVFNfU0lOR0xFVE9OCQkwMQorI2RlZmluZSBNRU5VX09QVFNfSU1NRURJQVRFCQkwMgorI2RlZmluZSBNRU5VX09QVFNfTElTVF9PTkxZCQkwNAorCitzdHJ1Y3QgbWVudV9vcHRzIHsKKwljb25zdCBjaGFyICpoZWFkZXI7CisJY29uc3QgY2hhciAqcHJvbXB0OworCWludCBmbGFnczsKK307CisKKyNkZWZpbmUgTUVOVV9SRVRVUk5fTk9fTE9PUAkJMTAKKworc3RydWN0IG1lbnVfaXRlbSB7CisJY2hhciBob3RrZXk7CisJY29uc3QgY2hhciAqdGl0bGU7CisJaW50IHNlbGVjdGVkOworCWludCAoKmZuKSgpOworfTsKKworZW51bSBtZW51X3N0dWZmX3R5cGUgeworCU1FTlVfU1RVRkZfVFlQRV9TVFJJTkdfTElTVCA9IDEsCisJTUVOVV9TVFVGRl9UWVBFX01FTlVfSVRFTQorfTsKKworc3RydWN0IG1lbnVfc3R1ZmYgeworCWVudW0gbWVudV9zdHVmZl90eXBlIHR5cGU7CisJaW50IG5yOworCXZvaWQgKnN0dWZmOworfTsKKworc3RhdGljIGludCBwYXJzZV9jbGVhbl9jb2xvcl9zbG90KGNvbnN0IGNoYXIgKnZhcikKK3sKKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAicmVzZXQiKSkKKwkJcmV0dXJuIENMRUFOX0NPTE9SX1JFU0VUOworCWlmICghc3RyY2FzZWNtcCh2YXIsICJwbGFpbiIpKQorCQlyZXR1cm4gQ0xFQU5fQ09MT1JfUExBSU47CisJaWYgKCFzdHJjYXNlY21wKHZhciwgInByb21wdCIpKQorCQlyZXR1cm4gQ0xFQU5fQ09MT1JfUFJPTVBUOworCWlmICghc3RyY2FzZWNtcCh2YXIsICJoZWFkZXIiKSkKKwkJcmV0dXJuIENMRUFOX0NPTE9SX0hFQURFUjsKKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAiaGVscCIpKQorCQlyZXR1cm4gQ0xFQU5fQ09MT1JfSEVMUDsKKwlpZiAoIXN0cmNhc2VjbXAodmFyLCAiZXJyb3IiKSkKKwkJcmV0dXJuIENMRUFOX0NPTE9SX0VSUk9SOworCXJldHVybiAtMTsKK30KKwogc3RhdGljIGludCBnaXRfY2xlYW5fY29uZmlnKGNvbnN0IGNoYXIgKnZhciwgY29uc3QgY2hhciAqdmFsdWUsIHZvaWQgKmNiKQogewotCWlmICghc3RyY21wKHZhciwgImNsZWFuLnJlcXVpcmVmb3JjZSIpKQorCWlmICghcHJlZml4Y21wKHZhciwgImNvbHVtbi4iKSkKKwkJcmV0dXJuIGdpdF9jb2x1bW5fY29uZmlnKHZhciwgdmFsdWUsICJjbGVhbiIsICZjb2xvcHRzKTsKKworCS8qIGhvbm9ycyB0aGUgY29sb3IuaW50ZXJhY3RpdmUqIGNvbmZpZyB2YXJpYWJsZXMgd2hpY2ggYWxzbworCSAgIGFwcGxpZWQgaW4gZ2l0LWFkZC0taW50ZXJhY3RpdmUgYW5kIGdpdC1zdGFzaCAqLworCWlmICghc3RyY21wKHZhciwgImNvbG9yLmludGVyYWN0aXZlIikpIHsKKwkJY2xlYW5fdXNlX2NvbG9yID0gZ2l0X2NvbmZpZ19jb2xvcmJvb2wodmFyLCB2YWx1ZSk7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXByZWZpeGNtcCh2YXIsICJjb2xvci5pbnRlcmFjdGl2ZS4iKSkgeworCQlpbnQgc2xvdCA9IHBhcnNlX2NsZWFuX2NvbG9yX3Nsb3QodmFyICsKKwkJCQkJCSAgc3RybGVuKCJjb2xvci5pbnRlcmFjdGl2ZS4iKSk7CisJCWlmIChzbG90IDwgMCkKKwkJCXJldHVybiAwOworCQlpZiAoIXZhbHVlKQorCQkJcmV0dXJuIGNvbmZpZ19lcnJvcl9ub25ib29sKHZhcik7CisJCWNvbG9yX3BhcnNlKHZhbHVlLCB2YXIsIGNsZWFuX2NvbG9yc1tzbG90XSk7CisJCXJldHVybiAwOworCX0KKworCWlmICghc3RyY21wKHZhciwgImNsZWFuLnJlcXVpcmVmb3JjZSIpKSB7CiAJCWZvcmNlID0gIWdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKLQlyZXR1cm4gZ2l0X2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogaW5zcGVjdCB0aGUgY29sb3IudWkgY29uZmlnIHZhcmlhYmxlIGFuZCBvdGhlcnMgKi8KKwlyZXR1cm4gZ2l0X2NvbG9yX2RlZmF1bHRfY29uZmlnKHZhciwgdmFsdWUsIGNiKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKmNsZWFuX2dldF9jb2xvcihlbnVtIGNvbG9yX2NsZWFuIGl4KQoreworCWlmICh3YW50X2NvbG9yKGNsZWFuX3VzZV9jb2xvcikpCisJCXJldHVybiBjbGVhbl9jb2xvcnNbaXhdOworCXJldHVybiAiIjsKK30KKworc3RhdGljIHZvaWQgY2xlYW5fcHJpbnRfY29sb3IoZW51bSBjb2xvcl9jbGVhbiBpeCkKK3sKKwlwcmludGYoIiVzIiwgY2xlYW5fZ2V0X2NvbG9yKGl4KSk7CiB9CiAKIHN0YXRpYyBpbnQgZXhjbHVkZV9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQpAQCAtNTYsNyArMTYyLDcgQEAKIAlpZiAoKGZvcmNlX2ZsYWcgJiBSRU1PVkVfRElSX0tFRVBfTkVTVEVEX0dJVCkgJiYKIAkJCSFyZXNvbHZlX2dpdGxpbmtfcmVmKHBhdGgtPmJ1ZiwgIkhFQUQiLCBzdWJtb2R1bGVfaGVhZCkpIHsKIAkJaWYgKCFxdWlldCkgewotCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHN0cmxlbihwYXRoLT5idWYpLCAmcXVvdGVkLCBwcmVmaXgpOworCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHByZWZpeCwgJnF1b3RlZCk7CiAJCQlwcmludGYoZHJ5X3J1biA/ICBfKG1zZ193b3VsZF9za2lwX2dpdF9kaXIpIDogXyhtc2dfc2tpcF9naXRfZGlyKSwKIAkJCQkJcXVvdGVkLmJ1Zik7CiAJCX0KQEAgLTcwLDcgKzE3Niw3IEBACiAJCS8qIGFuIGVtcHR5IGRpciBjb3VsZCBiZSByZW1vdmVkIGV2ZW4gaWYgaXQgaXMgdW5yZWFkYmxlICovCiAJCXJlcyA9IGRyeV9ydW4gPyAwIDogcm1kaXIocGF0aC0+YnVmKTsKIAkJaWYgKHJlcykgewotCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHN0cmxlbihwYXRoLT5idWYpLCAmcXVvdGVkLCBwcmVmaXgpOworCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHByZWZpeCwgJnF1b3RlZCk7CiAJCQl3YXJuaW5nKF8obXNnX3dhcm5fcmVtb3ZlX2ZhaWxlZCksIHF1b3RlZC5idWYpOwogCQkJKmRpcl9nb25lID0gMDsKIAkJfQpAQCAtOTQsNyArMjAwLDcgQEAKIAkJCWlmIChyZW1vdmVfZGlycyhwYXRoLCBwcmVmaXgsIGZvcmNlX2ZsYWcsIGRyeV9ydW4sIHF1aWV0LCAmZ29uZSkpCiAJCQkJcmV0ID0gMTsKIAkJCWlmIChnb25lKSB7Ci0JCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHN0cmxlbihwYXRoLT5idWYpLCAmcXVvdGVkLCBwcmVmaXgpOworCQkJCXF1b3RlX3BhdGhfcmVsYXRpdmUocGF0aC0+YnVmLCBwcmVmaXgsICZxdW90ZWQpOwogCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZGVscywgcXVvdGVkLmJ1Zik7CiAJCQl9IGVsc2UKIAkJCQkqZGlyX2dvbmUgPSAwOwpAQCAtMTAyLDEwICsyMDgsMTAgQEAKIAkJfSBlbHNlIHsKIAkJCXJlcyA9IGRyeV9ydW4gPyAwIDogdW5saW5rKHBhdGgtPmJ1Zik7CiAJCQlpZiAoIXJlcykgewotCQkJCXF1b3RlX3BhdGhfcmVsYXRpdmUocGF0aC0+YnVmLCBzdHJsZW4ocGF0aC0+YnVmKSwgJnF1b3RlZCwgcHJlZml4KTsKKwkJCQlxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGgtPmJ1ZiwgcHJlZml4LCAmcXVvdGVkKTsKIAkJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJmRlbHMsIHF1b3RlZC5idWYpOwogCQkJfSBlbHNlIHsKLQkJCQlxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGgtPmJ1Ziwgc3RybGVuKHBhdGgtPmJ1ZiksICZxdW90ZWQsIHByZWZpeCk7CisJCQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShwYXRoLT5idWYsIHByZWZpeCwgJnF1b3RlZCk7CiAJCQkJd2FybmluZyhfKG1zZ193YXJuX3JlbW92ZV9mYWlsZWQpLCBxdW90ZWQuYnVmKTsKIAkJCQkqZGlyX2dvbmUgPSAwOwogCQkJCXJldCA9IDE7CkBAIC0xMjcsNyArMjMzLDcgQEAKIAkJaWYgKCFyZXMpCiAJCQkqZGlyX2dvbmUgPSAxOwogCQllbHNlIHsKLQkJCXF1b3RlX3BhdGhfcmVsYXRpdmUocGF0aC0+YnVmLCBzdHJsZW4ocGF0aC0+YnVmKSwgJnF1b3RlZCwgcHJlZml4KTsKKwkJCXF1b3RlX3BhdGhfcmVsYXRpdmUocGF0aC0+YnVmLCBwcmVmaXgsICZxdW90ZWQpOwogCQkJd2FybmluZyhfKG1zZ193YXJuX3JlbW92ZV9mYWlsZWQpLCBxdW90ZWQuYnVmKTsKIAkJCSpkaXJfZ29uZSA9IDA7CiAJCQlyZXQgPSAxOwpAQCAtMTQyLDI0ICsyNDgsNjMzIEBACiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQgcHJldHR5X3ByaW50X2RlbHModm9pZCkKK3sKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgbGlzdCA9IFNUUklOR19MSVNUX0lOSVRfRFVQOworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CisJY29uc3QgY2hhciAqcW5hbWU7CisJc3RydWN0IGNvbHVtbl9vcHRpb25zIGNvcHRzOworCisJZm9yX2VhY2hfc3RyaW5nX2xpc3RfaXRlbShpdGVtLCAmZGVsX2xpc3QpIHsKKwkJcW5hbWUgPSBxdW90ZV9wYXRoX3JlbGF0aXZlKGl0ZW0tPnN0cmluZywgTlVMTCwgJmJ1Zik7CisJCXN0cmluZ19saXN0X2FwcGVuZCgmbGlzdCwgcW5hbWUpOworCX0KKworCS8qCisJICogYWx3YXlzIGVuYWJsZSBjb2x1bW4gZGlzcGxheSwgd2Ugb25seSBjb25zdWx0IGNvbHVtbi4qCisJICogYWJvdXQgbGF5b3V0IHN0cmF0ZWd5IGFuZCBzdHVmZgorCSAqLworCWNvbG9wdHMgPSAoY29sb3B0cyAmIH5DT0xfRU5BQkxFX01BU0spIHwgQ09MX0VOQUJMRUQ7CisJbWVtc2V0KCZjb3B0cywgMCwgc2l6ZW9mKGNvcHRzKSk7CisJY29wdHMuaW5kZW50ID0gIiAgIjsKKwljb3B0cy5wYWRkaW5nID0gMjsKKwlwcmludF9jb2x1bW5zKCZsaXN0LCBjb2xvcHRzLCAmY29wdHMpOworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCXN0cmluZ19saXN0X2NsZWFyKCZsaXN0LCAwKTsKK30KKworc3RhdGljIHZvaWQgcHJldHR5X3ByaW50X21lbnVzKHN0cnVjdCBzdHJpbmdfbGlzdCAqbWVudV9saXN0KQoreworCXVuc2lnbmVkIGludCBsb2NhbF9jb2xvcHRzID0gMDsKKwlzdHJ1Y3QgY29sdW1uX29wdGlvbnMgY29wdHM7CisKKwlsb2NhbF9jb2xvcHRzID0gQ09MX0VOQUJMRUQgfCBDT0xfUk9XOworCW1lbXNldCgmY29wdHMsIDAsIHNpemVvZihjb3B0cykpOworCWNvcHRzLmluZGVudCA9ICIgICI7CisJY29wdHMucGFkZGluZyA9IDI7CisJcHJpbnRfY29sdW1ucyhtZW51X2xpc3QsIGxvY2FsX2NvbG9wdHMsICZjb3B0cyk7Cit9CisKK3N0YXRpYyB2b2lkIHByb21wdF9oZWxwX2NtZChpbnQgc2luZ2xldG9uKQoreworCWNsZWFuX3ByaW50X2NvbG9yKENMRUFOX0NPTE9SX0hFTFApOworCXByaW50Zl9sbihzaW5nbGV0b24gPworCQkgIF8oIlByb21wdCBoZWxwOlxuIgorCQkgICAgIjEgICAgICAgICAgLSBzZWxlY3QgYSBudW1iZXJlZCBpdGVtXG4iCisJCSAgICAiZm9vICAgICAgICAtIHNlbGVjdCBpdGVtIGJhc2VkIG9uIHVuaXF1ZSBwcmVmaXhcbiIKKwkJICAgICIgICAgICAgICAgIC0gKGVtcHR5KSBzZWxlY3Qgbm90aGluZyIpIDoKKwkJICBfKCJQcm9tcHQgaGVscDpcbiIKKwkJICAgICIxICAgICAgICAgIC0gc2VsZWN0IGEgc2luZ2xlIGl0ZW1cbiIKKwkJICAgICIzLTUgICAgICAgIC0gc2VsZWN0IGEgcmFuZ2Ugb2YgaXRlbXNcbiIKKwkJICAgICIyLTMsNi05ICAgIC0gc2VsZWN0IG11bHRpcGxlIHJhbmdlc1xuIgorCQkgICAgImZvbyAgICAgICAgLSBzZWxlY3QgaXRlbSBiYXNlZCBvbiB1bmlxdWUgcHJlZml4XG4iCisJCSAgICAiLS4uLiAgICAgICAtIHVuc2VsZWN0IHNwZWNpZmllZCBpdGVtc1xuIgorCQkgICAgIiogICAgICAgICAgLSBjaG9vc2UgYWxsIGl0ZW1zXG4iCisJCSAgICAiICAgICAgICAgICAtIChlbXB0eSkgZmluaXNoIHNlbGVjdGluZyIpKTsKKwljbGVhbl9wcmludF9jb2xvcihDTEVBTl9DT0xPUl9SRVNFVCk7Cit9CisKKy8qCisgKiBkaXNwbGF5IG1lbnUgc3R1ZmYgd2l0aCBudW1iZXIgcHJlZml4IGFuZCBob3RrZXkgaGlnaGxpZ2h0CisgKi8KK3N0YXRpYyB2b2lkIHByaW50X2hpZ2hsaWdodF9tZW51X3N0dWZmKHN0cnVjdCBtZW51X3N0dWZmICpzdHVmZiwgaW50ICoqY2hvc2VuKQoreworCXN0cnVjdCBzdHJpbmdfbGlzdCBtZW51X2xpc3QgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKKwlzdHJ1Y3Qgc3RyYnVmIG1lbnUgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBtZW51X2l0ZW0gKm1lbnVfaXRlbTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqc3RyaW5nX2xpc3RfaXRlbTsKKwlpbnQgaTsKKworCXN3aXRjaCAoc3R1ZmYtPnR5cGUpIHsKKwlkZWZhdWx0OgorCQlkaWUoIkJhZCB0eXBlIG9mIG1lbnVfc3RhZmYgd2hlbiBwcmludCBtZW51Iik7CisJY2FzZSBNRU5VX1NUVUZGX1RZUEVfTUVOVV9JVEVNOgorCQltZW51X2l0ZW0gPSAoc3RydWN0IG1lbnVfaXRlbSAqKXN0dWZmLT5zdHVmZjsKKwkJZm9yIChpID0gMDsgaSA8IHN0dWZmLT5ucjsgaSsrLCBtZW51X2l0ZW0rKykgeworCQkJY29uc3QgY2hhciAqcDsKKwkJCWludCBoaWdobGlnaHRlZCA9IDA7CisKKwkJCXAgPSBtZW51X2l0ZW0tPnRpdGxlOworCQkJaWYgKCgqY2hvc2VuKVtpXSA8IDApCisJCQkJKCpjaG9zZW4pW2ldID0gbWVudV9pdGVtLT5zZWxlY3RlZCA/IDEgOiAwOworCQkJc3RyYnVmX2FkZGYoJm1lbnUsICIlcyUyZDogIiwgKCpjaG9zZW4pW2ldID8gIioiIDogIiAiLCBpKzEpOworCQkJZm9yICg7ICpwOyBwKyspIHsKKwkJCQlpZiAoIWhpZ2hsaWdodGVkICYmICpwID09IG1lbnVfaXRlbS0+aG90a2V5KSB7CisJCQkJCXN0cmJ1Zl9hZGRzdHIoJm1lbnUsIGNsZWFuX2dldF9jb2xvcihDTEVBTl9DT0xPUl9QUk9NUFQpKTsKKwkJCQkJc3RyYnVmX2FkZGNoKCZtZW51LCAqcCk7CisJCQkJCXN0cmJ1Zl9hZGRzdHIoJm1lbnUsIGNsZWFuX2dldF9jb2xvcihDTEVBTl9DT0xPUl9SRVNFVCkpOworCQkJCQloaWdobGlnaHRlZCA9IDE7CisJCQkJfSBlbHNlIHsKKwkJCQkJc3RyYnVmX2FkZGNoKCZtZW51LCAqcCk7CisJCQkJfQorCQkJfQorCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZtZW51X2xpc3QsIG1lbnUuYnVmKTsKKwkJCXN0cmJ1Zl9yZXNldCgmbWVudSk7CisJCX0KKwkJYnJlYWs7CisJY2FzZSBNRU5VX1NUVUZGX1RZUEVfU1RSSU5HX0xJU1Q6CisJCWkgPSAwOworCQlmb3JfZWFjaF9zdHJpbmdfbGlzdF9pdGVtKHN0cmluZ19saXN0X2l0ZW0sIChzdHJ1Y3Qgc3RyaW5nX2xpc3QgKilzdHVmZi0+c3R1ZmYpIHsKKwkJCWlmICgoKmNob3NlbilbaV0gPCAwKQorCQkJCSgqY2hvc2VuKVtpXSA9IDA7CisJCQlzdHJidWZfYWRkZigmbWVudSwgIiVzJTJkOiAlcyIsCisJCQkJICAgICgqY2hvc2VuKVtpXSA/ICIqIiA6ICIgIiwgaSsxLCBzdHJpbmdfbGlzdF9pdGVtLT5zdHJpbmcpOworCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZtZW51X2xpc3QsIG1lbnUuYnVmKTsKKwkJCXN0cmJ1Zl9yZXNldCgmbWVudSk7CisJCQlpKys7CisJCX0KKwkJYnJlYWs7CisJfQorCisJcHJldHR5X3ByaW50X21lbnVzKCZtZW51X2xpc3QpOworCisJc3RyYnVmX3JlbGVhc2UoJm1lbnUpOworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCXN0cmluZ19saXN0X2NsZWFyKCZtZW51X2xpc3QsIDApOworfQorCitzdGF0aWMgaW50IGZpbmRfdW5pcXVlKGNvbnN0IGNoYXIgKmNob2ljZSwgc3RydWN0IG1lbnVfc3R1ZmYgKm1lbnVfc3R1ZmYpCit7CisJc3RydWN0IG1lbnVfaXRlbSAqbWVudV9pdGVtOworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpzdHJpbmdfbGlzdF9pdGVtOworCWludCBpLCBsZW4sIGZvdW5kID0gMDsKKworCWxlbiA9IHN0cmxlbihjaG9pY2UpOworCXN3aXRjaCAobWVudV9zdHVmZi0+dHlwZSkgeworCWRlZmF1bHQ6CisJCWRpZSgiQmFkIHR5cGUgb2YgbWVudV9zdHVmZiB3aGVuIHBhcnNlIGNob2ljZSIpOworCWNhc2UgTUVOVV9TVFVGRl9UWVBFX01FTlVfSVRFTToKKworCQltZW51X2l0ZW0gPSAoc3RydWN0IG1lbnVfaXRlbSAqKW1lbnVfc3R1ZmYtPnN0dWZmOworCQlmb3IgKGkgPSAwOyBpIDwgbWVudV9zdHVmZi0+bnI7IGkrKywgbWVudV9pdGVtKyspIHsKKwkJCWlmIChsZW4gPT0gMSAmJiAqY2hvaWNlID09IG1lbnVfaXRlbS0+aG90a2V5KSB7CisJCQkJZm91bmQgPSBpICsgMTsKKwkJCQlicmVhazsKKwkJCX0KKwkJCWlmICghc3RybmNhc2VjbXAoY2hvaWNlLCBtZW51X2l0ZW0tPnRpdGxlLCBsZW4pKSB7CisJCQkJaWYgKGZvdW5kKSB7CisJCQkJCWlmIChsZW4gPT0gMSkgeworCQkJCQkJLyogY29udGludWUgZm9yIGhvdGtleSBtYXRjaGluZyAqLworCQkJCQkJZm91bmQgPSAtMTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWZvdW5kID0gMDsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJZm91bmQgPSBpICsgMTsKKwkJCQl9CisJCQl9CisJCX0KKwkJYnJlYWs7CisJY2FzZSBNRU5VX1NUVUZGX1RZUEVfU1RSSU5HX0xJU1Q6CisJCXN0cmluZ19saXN0X2l0ZW0gPSAoKHN0cnVjdCBzdHJpbmdfbGlzdCAqKW1lbnVfc3R1ZmYtPnN0dWZmKS0+aXRlbXM7CisJCWZvciAoaSA9IDA7IGkgPCBtZW51X3N0dWZmLT5ucjsgaSsrLCBzdHJpbmdfbGlzdF9pdGVtKyspIHsKKwkJCWlmICghc3RybmNhc2VjbXAoY2hvaWNlLCBzdHJpbmdfbGlzdF9pdGVtLT5zdHJpbmcsIGxlbikpIHsKKwkJCQlpZiAoZm91bmQpIHsKKwkJCQkJZm91bmQgPSAwOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJZm91bmQgPSBpICsgMTsKKwkJCX0KKwkJfQorCQlicmVhazsKKwl9CisJcmV0dXJuIGZvdW5kOworfQorCisKKy8qCisgKiBQYXJzZSB1c2VyIGlucHV0LCBhbmQgcmV0dXJuIGNob2ljZShzKSBmb3IgbWVudSAobWVudV9zdHVmZikuCisgKgorICogSW5wdXQKKyAqICAgICAoZm9yIHNpbmdsZSBjaG9pY2UpCisgKiAgICAgICAgIDEgICAgICAgICAgLSBzZWxlY3QgYSBudW1iZXJlZCBpdGVtCisgKiAgICAgICAgIGZvbyAgICAgICAgLSBzZWxlY3QgaXRlbSBiYXNlZCBvbiBtZW51IHRpdGxlCisgKiAgICAgICAgICAgICAgICAgICAgLSAoZW1wdHkpIHNlbGVjdCBub3RoaW5nCisgKgorICogICAgIChmb3IgbXVsdGlwbGUgY2hvaWNlKQorICogICAgICAgICAxICAgICAgICAgIC0gc2VsZWN0IGEgc2luZ2xlIGl0ZW0KKyAqICAgICAgICAgMy01ICAgICAgICAtIHNlbGVjdCBhIHJhbmdlIG9mIGl0ZW1zCisgKiAgICAgICAgIDItMyw2LTkgICAgLSBzZWxlY3QgbXVsdGlwbGUgcmFuZ2VzCisgKiAgICAgICAgIGZvbyAgICAgICAgLSBzZWxlY3QgaXRlbSBiYXNlZCBvbiBtZW51IHRpdGxlCisgKiAgICAgICAgIC0uLi4gICAgICAgLSB1bnNlbGVjdCBzcGVjaWZpZWQgaXRlbXMKKyAqICAgICAgICAgKiAgICAgICAgICAtIGNob29zZSBhbGwgaXRlbXMKKyAqICAgICAgICAgICAgICAgICAgICAtIChlbXB0eSkgZmluaXNoIHNlbGVjdGluZworICoKKyAqIFRoZSBwYXJzZSByZXN1bHQgd2lsbCBiZSBzYXZlZCBpbiBhcnJheSAqKmNob3NlbiwgYW5kCisgKiByZXR1cm4gbnVtYmVyIG9mIHRvdGFsIHNlbGVjdGlvbnMuCisgKi8KK3N0YXRpYyBpbnQgcGFyc2VfY2hvaWNlKHN0cnVjdCBtZW51X3N0dWZmICptZW51X3N0dWZmLAorCQkJaW50IGlzX3NpbmdsZSwKKwkJCXN0cnVjdCBzdHJidWYgaW5wdXQsCisJCQlpbnQgKipjaG9zZW4pCit7CisJc3RydWN0IHN0cmJ1ZiAqKmNob2ljZV9saXN0LCAqKnB0cjsKKwlpbnQgbnIgPSAwOworCWludCBpOworCisJaWYgKGlzX3NpbmdsZSkgeworCQljaG9pY2VfbGlzdCA9IHN0cmJ1Zl9zcGxpdF9tYXgoJmlucHV0LCAnXG4nLCAwKTsKKwl9IGVsc2UgeworCQljaGFyICpwID0gaW5wdXQuYnVmOworCQlkbyB7CisJCQlpZiAoKnAgPT0gJywnKQorCQkJCSpwID0gJyAnOworCQl9IHdoaWxlICgqcCsrKTsKKwkJY2hvaWNlX2xpc3QgPSBzdHJidWZfc3BsaXRfbWF4KCZpbnB1dCwgJyAnLCAwKTsKKwl9CisKKwlmb3IgKHB0ciA9IGNob2ljZV9saXN0OyAqcHRyOyBwdHIrKykgeworCQljaGFyICpwOworCQlpbnQgY2hvb3NlID0gMTsKKwkJaW50IGJvdHRvbSA9IDAsIHRvcCA9IDA7CisJCWludCBpc19yYW5nZSwgaXNfbnVtYmVyOworCisJCXN0cmJ1Zl90cmltKCpwdHIpOworCQlpZiAoISgqcHRyKS0+bGVuKQorCQkJY29udGludWU7CisKKwkJLyogSW5wdXQgdGhhdCBiZWdpbnMgd2l0aCAnLSc7IHVuY2hvb3NlICovCisJCWlmICgqKCpwdHIpLT5idWYgPT0gJy0nKSB7CisJCQljaG9vc2UgPSAwOworCQkJc3RyYnVmX3JlbW92ZSgoKnB0ciksIDAsIDEpOworCQl9CisKKwkJaXNfcmFuZ2UgPSAwOworCQlpc19udW1iZXIgPSAxOworCQlmb3IgKHAgPSAoKnB0ciktPmJ1ZjsgKnA7IHArKykgeworCQkJaWYgKCctJyA9PSAqcCkgeworCQkJCWlmICghaXNfcmFuZ2UpIHsKKwkJCQkJaXNfcmFuZ2UgPSAxOworCQkJCQlpc19udW1iZXIgPSAwOworCQkJCX0gZWxzZSB7CisJCQkJCWlzX251bWJlciA9IDA7CisJCQkJCWlzX3JhbmdlID0gMDsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfSBlbHNlIGlmICghaXNkaWdpdCgqcCkpIHsKKwkJCQlpc19udW1iZXIgPSAwOworCQkJCWlzX3JhbmdlID0gMDsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmIChpc19udW1iZXIpIHsKKwkJCWJvdHRvbSA9IGF0b2koKCpwdHIpLT5idWYpOworCQkJdG9wID0gYm90dG9tOworCQl9IGVsc2UgaWYgKGlzX3JhbmdlKSB7CisJCQlib3R0b20gPSBhdG9pKCgqcHRyKS0+YnVmKTsKKwkJCS8qIGEgcmFuZ2UgY2FuIGJlIHNwZWNpZmllZCBsaWtlIDUtNyBvciA1LSAqLworCQkJaWYgKCEqKHN0cmNocigoKnB0ciktPmJ1ZiwgJy0nKSArIDEpKQorCQkJCXRvcCA9IG1lbnVfc3R1ZmYtPm5yOworCQkJZWxzZQorCQkJCXRvcCA9IGF0b2koc3RyY2hyKCgqcHRyKS0+YnVmLCAnLScpICsgMSk7CisJCX0gZWxzZSBpZiAoIXN0cmNtcCgoKnB0ciktPmJ1ZiwgIioiKSkgeworCQkJYm90dG9tID0gMTsKKwkJCXRvcCA9IG1lbnVfc3R1ZmYtPm5yOworCQl9IGVsc2UgeworCQkJYm90dG9tID0gZmluZF91bmlxdWUoKCpwdHIpLT5idWYsIG1lbnVfc3R1ZmYpOworCQkJdG9wID0gYm90dG9tOworCQl9CisKKwkJaWYgKHRvcCA8PSAwIHx8IGJvdHRvbSA8PSAwIHx8IHRvcCA+IG1lbnVfc3R1ZmYtPm5yIHx8IGJvdHRvbSA+IHRvcCB8fAorCQkgICAgKGlzX3NpbmdsZSAmJiBib3R0b20gIT0gdG9wKSkgeworCQkJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfRVJST1IpOworCQkJcHJpbnRmX2xuKF8oIkh1aCAoJXMpPyIpLCAoKnB0ciktPmJ1Zik7CisJCQljbGVhbl9wcmludF9jb2xvcihDTEVBTl9DT0xPUl9SRVNFVCk7CisJCQljb250aW51ZTsKKwkJfQorCisJCWZvciAoaSA9IGJvdHRvbTsgaSA8PSB0b3A7IGkrKykKKwkJCSgqY2hvc2VuKVtpLTFdID0gY2hvb3NlOworCX0KKworCXN0cmJ1Zl9saXN0X2ZyZWUoY2hvaWNlX2xpc3QpOworCisJZm9yIChpID0gMDsgaSA8IG1lbnVfc3R1ZmYtPm5yOyBpKyspCisJCW5yICs9ICgqY2hvc2VuKVtpXTsKKwlyZXR1cm4gbnI7Cit9CisKKy8qCisgKiBJbXBsZW1lbnQgYSBnaXQtYWRkLWludGVyYWN0aXZlIGNvbXBhdGlibGUgVUksIHdoaWNoIGlzIGJvcnJvd2VkCisgKiBmcm9tIGdpdC1hZGQtLWludGVyYWN0aXZlLnBlcmwuCisgKgorICogUmV0dXJuIHZhbHVlOgorICoKKyAqICAgLSBSZXR1cm4gYW4gYXJyYXkgb2YgaW50ZWdlcnMKKyAqICAgLSAsIGFuZCBpdCBpcyB1cCB0byB5b3UgdG8gZnJlZSB0aGUgYWxsb2NhdGVkIG1lbW9yeS4KKyAqICAgLSBUaGUgYXJyYXkgZW5kcyB3aXRoIEVPRi4KKyAqICAgLSBJZiB1c2VyIHByZXNzZWQgQ1RSTC1EIChpLmUuIEVPRiksIG5vIHNlbGVjdGlvbiByZXR1cm5lZC4KKyAqLworc3RhdGljIGludCAqbGlzdF9hbmRfY2hvb3NlKHN0cnVjdCBtZW51X29wdHMgKm9wdHMsIHN0cnVjdCBtZW51X3N0dWZmICpzdHVmZikKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGNob2ljZSA9IFNUUkJVRl9JTklUOworCWludCAqY2hvc2VuLCAqcmVzdWx0OworCWludCBuciA9IDA7CisJaW50IGVvZiA9IDA7CisJaW50IGk7CisKKwljaG9zZW4gPSB4bWFsbG9jKHNpemVvZihpbnQpICogc3R1ZmYtPm5yKTsKKwkvKiBzZXQgY2hvc2VuIGFzIHVuaW5pdGlhbGl6ZWQgKi8KKwlmb3IgKGkgPSAwOyBpIDwgc3R1ZmYtPm5yOyBpKyspCisJCWNob3NlbltpXSA9IC0xOworCisJZm9yICg7OykgeworCQlpZiAob3B0cy0+aGVhZGVyKSB7CisJCQlwcmludGZfbG4oIiVzJXMlcyIsCisJCQkJICBjbGVhbl9nZXRfY29sb3IoQ0xFQU5fQ09MT1JfSEVBREVSKSwKKwkJCQkgIF8ob3B0cy0+aGVhZGVyKSwKKwkJCQkgIGNsZWFuX2dldF9jb2xvcihDTEVBTl9DT0xPUl9SRVNFVCkpOworCQl9CisKKwkJLyogY2hvc2VuIHdpbGwgYmUgaW5pdGlhbGl6ZWQgYnkgcHJpbnRfaGlnaGxpZ2h0X21lbnVfc3R1ZmYgKi8KKwkJcHJpbnRfaGlnaGxpZ2h0X21lbnVfc3R1ZmYoc3R1ZmYsICZjaG9zZW4pOworCisJCWlmIChvcHRzLT5mbGFncyAmIE1FTlVfT1BUU19MSVNUX09OTFkpCisJCQlicmVhazsKKworCQlpZiAob3B0cy0+cHJvbXB0KSB7CisJCQlwcmludGYoIiVzJXMlcyVzIiwKKwkJCSAgICAgICBjbGVhbl9nZXRfY29sb3IoQ0xFQU5fQ09MT1JfUFJPTVBUKSwKKwkJCSAgICAgICBfKG9wdHMtPnByb21wdCksCisJCQkgICAgICAgb3B0cy0+ZmxhZ3MgJiBNRU5VX09QVFNfU0lOR0xFVE9OID8gIj4gIiA6ICI+PiAiLAorCQkJICAgICAgIGNsZWFuX2dldF9jb2xvcihDTEVBTl9DT0xPUl9SRVNFVCkpOworCQl9CisKKwkJaWYgKHN0cmJ1Zl9nZXRsaW5lKCZjaG9pY2UsIHN0ZGluLCAnXG4nKSAhPSBFT0YpIHsKKwkJCXN0cmJ1Zl90cmltKCZjaG9pY2UpOworCQl9IGVsc2UgeworCQkJZW9mID0gMTsKKwkJCWJyZWFrOworCQl9CisKKwkJLyogaGVscCBmb3IgcHJvbXB0ICovCisJCWlmICghc3RyY21wKGNob2ljZS5idWYsICI/IikpIHsKKwkJCXByb21wdF9oZWxwX2NtZChvcHRzLT5mbGFncyAmIE1FTlVfT1BUU19TSU5HTEVUT04pOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBmb3IgYSBtdWx0aXBsZS1jaG9pY2UgbWVudSwgcHJlc3MgRU5URVIgKGVtcHR5KSB3aWxsIHJldHVybiBiYWNrICovCisJCWlmICghKG9wdHMtPmZsYWdzICYgTUVOVV9PUFRTX1NJTkdMRVRPTikgJiYgIWNob2ljZS5sZW4pCisJCQlicmVhazsKKworCQluciA9IHBhcnNlX2Nob2ljZShzdHVmZiwKKwkJCQkgIG9wdHMtPmZsYWdzICYgTUVOVV9PUFRTX1NJTkdMRVRPTiwKKwkJCQkgIGNob2ljZSwKKwkJCQkgICZjaG9zZW4pOworCisJCWlmIChvcHRzLT5mbGFncyAmIE1FTlVfT1BUU19TSU5HTEVUT04pIHsKKwkJCWlmIChucikKKwkJCQlicmVhazsKKwkJfSBlbHNlIGlmIChvcHRzLT5mbGFncyAmIE1FTlVfT1BUU19JTU1FRElBVEUpIHsKKwkJCWJyZWFrOworCQl9CisJfQorCisJaWYgKGVvZikgeworCQlyZXN1bHQgPSB4bWFsbG9jKHNpemVvZihpbnQpKTsKKwkJKnJlc3VsdCA9IEVPRjsKKwl9IGVsc2UgeworCQlpbnQgaiA9IDA7CisKKwkJLyoKKwkJICogcmVjYWxjdWxhdGUgbnIsIGlmIHJldHVybiBiYWNrIGZyb20gbWVudSBkaXJlY3RseSB3aXRoCisJCSAqIGRlZmF1bHQgc2VsZWN0aW9ucy4KKwkJICovCisJCWlmICghbnIpIHsKKwkJCWZvciAoaSA9IDA7IGkgPCBzdHVmZi0+bnI7IGkrKykKKwkJCQluciArPSBjaG9zZW5baV07CisJCX0KKworCQlyZXN1bHQgPSB4bWFsbG9jKHNpemVvZihpbnQpICogKG5yICsgMSkpOworCQltZW1zZXQocmVzdWx0LCAwLCBzaXplb2YoaW50KSAqIChuciArIDEpKTsKKwkJZm9yIChpID0gMDsgaSA8IHN0dWZmLT5uciAmJiBqIDwgbnI7IGkrKykgeworCQkJaWYgKGNob3NlbltpXSkKKwkJCQlyZXN1bHRbaisrXSA9IGk7CisJCX0KKwkJcmVzdWx0W2pdID0gRU9GOworCX0KKworCWZyZWUoY2hvc2VuKTsKKwlzdHJidWZfcmVsZWFzZSgmY2hvaWNlKTsKKwlyZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgaW50IGNsZWFuX2NtZCh2b2lkKQoreworCXJldHVybiBNRU5VX1JFVFVSTl9OT19MT09QOworfQorCitzdGF0aWMgaW50IGZpbHRlcl9ieV9wYXR0ZXJuc19jbWQodm9pZCkKK3sKKwlzdHJ1Y3QgZGlyX3N0cnVjdCBkaXI7CisJc3RydWN0IHN0cmJ1ZiBjb25maXJtID0gU1RSQlVGX0lOSVQ7CisJc3RydWN0IHN0cmJ1ZiAqKmlnbm9yZV9saXN0OworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCXN0cnVjdCBleGNsdWRlX2xpc3QgKmVsOworCWludCBjaGFuZ2VkID0gLTEsIGk7CisKKwlmb3IgKDs7KSB7CisJCWlmICghZGVsX2xpc3QubnIpCisJCQlicmVhazsKKworCQlpZiAoY2hhbmdlZCkKKwkJCXByZXR0eV9wcmludF9kZWxzKCk7CisKKwkJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfUFJPTVBUKTsKKwkJcHJpbnRmKF8oIklucHV0IGlnbm9yZSBwYXR0ZXJucz4+ICIpKTsKKwkJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfUkVTRVQpOworCQlpZiAoc3RyYnVmX2dldGxpbmUoJmNvbmZpcm0sIHN0ZGluLCAnXG4nKSAhPSBFT0YpCisJCQlzdHJidWZfdHJpbSgmY29uZmlybSk7CisJCWVsc2UKKwkJCXB1dGNoYXIoJ1xuJyk7CisKKwkJLyogcXVpdCBmaWx0ZXJfYnlfcGF0dGVybiBtb2RlIGlmIHByZXNzIEVOVEVSIG9yIEN0cmwtRCAqLworCQlpZiAoIWNvbmZpcm0ubGVuKQorCQkJYnJlYWs7CisKKwkJbWVtc2V0KCZkaXIsIDAsIHNpemVvZihkaXIpKTsKKwkJZWwgPSBhZGRfZXhjbHVkZV9saXN0KCZkaXIsIEVYQ19DTURMLCAibWFudWFsIGV4Y2x1ZGUiKTsKKwkJaWdub3JlX2xpc3QgPSBzdHJidWZfc3BsaXRfbWF4KCZjb25maXJtLCAnICcsIDApOworCisJCWZvciAoaSA9IDA7IGlnbm9yZV9saXN0W2ldOyBpKyspIHsKKwkJCXN0cmJ1Zl90cmltKGlnbm9yZV9saXN0W2ldKTsKKwkJCWlmICghaWdub3JlX2xpc3RbaV0tPmxlbikKKwkJCQljb250aW51ZTsKKworCQkJYWRkX2V4Y2x1ZGUoaWdub3JlX2xpc3RbaV0tPmJ1ZiwgIiIsIDAsIGVsLCAtKGkrMSkpOworCQl9CisKKwkJY2hhbmdlZCA9IDA7CisJCWZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSwgJmRlbF9saXN0KSB7CisJCQlpbnQgZHR5cGUgPSBEVF9VTktOT1dOOworCisJCQlpZiAoaXNfZXhjbHVkZWQoJmRpciwgaXRlbS0+c3RyaW5nLCAmZHR5cGUpKSB7CisJCQkJKml0ZW0tPnN0cmluZyA9ICdcMCc7CisJCQkJY2hhbmdlZCsrOworCQkJfQorCQl9CisKKwkJaWYgKGNoYW5nZWQpIHsKKwkJCXN0cmluZ19saXN0X3JlbW92ZV9lbXB0eV9pdGVtcygmZGVsX2xpc3QsIDApOworCQl9IGVsc2UgeworCQkJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfRVJST1IpOworCQkJcHJpbnRmX2xuKF8oIldBUk5JTkc6IENhbm5vdCBmaW5kIGl0ZW1zIG1hdGNoZWQgYnk6ICVzIiksIGNvbmZpcm0uYnVmKTsKKwkJCWNsZWFuX3ByaW50X2NvbG9yKENMRUFOX0NPTE9SX1JFU0VUKTsKKwkJfQorCisJCXN0cmJ1Zl9saXN0X2ZyZWUoaWdub3JlX2xpc3QpOworCQljbGVhcl9kaXJlY3RvcnkoJmRpcik7CisJfQorCisJc3RyYnVmX3JlbGVhc2UoJmNvbmZpcm0pOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNlbGVjdF9ieV9udW1iZXJzX2NtZCh2b2lkKQoreworCXN0cnVjdCBtZW51X29wdHMgbWVudV9vcHRzOworCXN0cnVjdCBtZW51X3N0dWZmIG1lbnVfc3R1ZmY7CisJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW1zOworCWludCAqY2hvc2VuOworCWludCBpLCBqOworCisJbWVudV9vcHRzLmhlYWRlciA9IE5VTEw7CisJbWVudV9vcHRzLnByb21wdCA9IE5fKCJTZWxlY3QgaXRlbXMgdG8gZGVsZXRlIik7CisJbWVudV9vcHRzLmZsYWdzID0gMDsKKworCW1lbnVfc3R1ZmYudHlwZSA9IE1FTlVfU1RVRkZfVFlQRV9TVFJJTkdfTElTVDsKKwltZW51X3N0dWZmLnN0dWZmID0gJmRlbF9saXN0OworCW1lbnVfc3R1ZmYubnIgPSBkZWxfbGlzdC5ucjsKKworCWNob3NlbiA9IGxpc3RfYW5kX2Nob29zZSgmbWVudV9vcHRzLCAmbWVudV9zdHVmZik7CisJaXRlbXMgPSBkZWxfbGlzdC5pdGVtczsKKwlmb3IgKGkgPSAwLCBqID0gMDsgaSA8IGRlbF9saXN0Lm5yOyBpKyspIHsKKwkJaWYgKGkgPCBjaG9zZW5bal0pIHsKKwkJCSooaXRlbXNbaV0uc3RyaW5nKSA9ICdcMCc7CisJCX0gZWxzZSBpZiAoaSA9PSBjaG9zZW5bal0pIHsKKwkJCS8qIGRlbGV0ZSBzZWxlY3RlZCBpdGVtICovCisJCQlqKys7CisJCQljb250aW51ZTsKKwkJfSBlbHNlIHsKKwkJCS8qIGVuZCBvZiBjaG9zZW4gKGNob3NlbltqXSA9PSBFT0YpLCB3b24ndCBkZWxldGUgKi8KKwkJCSooaXRlbXNbaV0uc3RyaW5nKSA9ICdcMCc7CisJCX0KKwl9CisKKwlzdHJpbmdfbGlzdF9yZW1vdmVfZW1wdHlfaXRlbXMoJmRlbF9saXN0LCAwKTsKKworCWZyZWUoY2hvc2VuKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBhc2tfZWFjaF9jbWQodm9pZCkKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGNvbmZpcm0gPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCWNvbnN0IGNoYXIgKnFuYW1lOworCWludCBjaGFuZ2VkID0gMCwgZW9mID0gMDsKKworCWZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSwgJmRlbF9saXN0KSB7CisJCS8qIEN0cmwtRCBzaG91bGQgc3RvcCByZW1vdmluZyBmaWxlcyAqLworCQlpZiAoIWVvZikgeworCQkJcW5hbWUgPSBxdW90ZV9wYXRoX3JlbGF0aXZlKGl0ZW0tPnN0cmluZywgTlVMTCwgJmJ1Zik7CisJCQlwcmludGYoXygicmVtb3ZlICVzPyAiKSwgcW5hbWUpOworCQkJaWYgKHN0cmJ1Zl9nZXRsaW5lKCZjb25maXJtLCBzdGRpbiwgJ1xuJykgIT0gRU9GKSB7CisJCQkJc3RyYnVmX3RyaW0oJmNvbmZpcm0pOworCQkJfSBlbHNlIHsKKwkJCQlwdXRjaGFyKCdcbicpOworCQkJCWVvZiA9IDE7CisJCQl9CisJCX0KKwkJaWYgKCFjb25maXJtLmxlbiB8fCBzdHJuY2FzZWNtcChjb25maXJtLmJ1ZiwgInllcyIsIGNvbmZpcm0ubGVuKSkgeworCQkJKml0ZW0tPnN0cmluZyA9ICdcMCc7CisJCQljaGFuZ2VkKys7CisJCX0KKwl9CisKKwlpZiAoY2hhbmdlZCkKKwkJc3RyaW5nX2xpc3RfcmVtb3ZlX2VtcHR5X2l0ZW1zKCZkZWxfbGlzdCwgMCk7CisKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKKwlzdHJidWZfcmVsZWFzZSgmY29uZmlybSk7CisJcmV0dXJuIE1FTlVfUkVUVVJOX05PX0xPT1A7Cit9CisKK3N0YXRpYyBpbnQgcXVpdF9jbWQodm9pZCkKK3sKKwlzdHJpbmdfbGlzdF9jbGVhcigmZGVsX2xpc3QsIDApOworCXByaW50Zl9sbihfKCJCeWUuIikpOworCXJldHVybiBNRU5VX1JFVFVSTl9OT19MT09QOworfQorCitzdGF0aWMgaW50IGhlbHBfY21kKHZvaWQpCit7CisJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfSEVMUCk7CisJcHJpbnRmX2xuKF8oCisJCSAgICAiY2xlYW4gICAgICAgICAgICAgICAtIHN0YXJ0IGNsZWFuaW5nXG4iCisJCSAgICAiZmlsdGVyIGJ5IHBhdHRlcm4gICAtIGV4Y2x1ZGUgaXRlbXMgZnJvbSBkZWxldGlvblxuIgorCQkgICAgInNlbGVjdCBieSBudW1iZXJzICAgLSBzZWxlY3QgaXRlbXMgdG8gYmUgZGVsZXRlZCBieSBudW1iZXJzXG4iCisJCSAgICAiYXNrIGVhY2ggICAgICAgICAgICAtIGNvbmZpcm0gZWFjaCBkZWxldGlvbiAobGlrZSBcInJtIC1pXCIpXG4iCisJCSAgICAicXVpdCAgICAgICAgICAgICAgICAtIHN0b3AgY2xlYW5pbmdcbiIKKwkJICAgICJoZWxwICAgICAgICAgICAgICAgIC0gdGhpcyBzY3JlZW5cbiIKKwkJICAgICI/ICAgICAgICAgICAgICAgICAgIC0gaGVscCBmb3IgcHJvbXB0IHNlbGVjdGlvbiIKKwkJICAgKSk7CisJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfUkVTRVQpOworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBpbnRlcmFjdGl2ZV9tYWluX2xvb3Aodm9pZCkKK3sKKwl3aGlsZSAoZGVsX2xpc3QubnIpIHsKKwkJc3RydWN0IG1lbnVfb3B0cyBtZW51X29wdHM7CisJCXN0cnVjdCBtZW51X3N0dWZmIG1lbnVfc3R1ZmY7CisJCXN0cnVjdCBtZW51X2l0ZW0gbWVudXNbXSA9IHsKKwkJCXsnYycsICJjbGVhbiIsCQkJMCwgY2xlYW5fY21kfSwKKwkJCXsnZicsICJmaWx0ZXIgYnkgcGF0dGVybiIsCTAsIGZpbHRlcl9ieV9wYXR0ZXJuc19jbWR9LAorCQkJeydzJywgInNlbGVjdCBieSBudW1iZXJzIiwJMCwgc2VsZWN0X2J5X251bWJlcnNfY21kfSwKKwkJCXsnYScsICJhc2sgZWFjaCIsCQkwLCBhc2tfZWFjaF9jbWR9LAorCQkJeydxJywgInF1aXQiLAkJCTAsIHF1aXRfY21kfSwKKwkJCXsnaCcsICJoZWxwIiwJCQkwLCBoZWxwX2NtZH0sCisJCX07CisJCWludCAqY2hvc2VuOworCisJCW1lbnVfb3B0cy5oZWFkZXIgPSBOXygiKioqIENvbW1hbmRzICoqKiIpOworCQltZW51X29wdHMucHJvbXB0ID0gTl8oIldoYXQgbm93Iik7CisJCW1lbnVfb3B0cy5mbGFncyA9IE1FTlVfT1BUU19TSU5HTEVUT047CisKKwkJbWVudV9zdHVmZi50eXBlID0gTUVOVV9TVFVGRl9UWVBFX01FTlVfSVRFTTsKKwkJbWVudV9zdHVmZi5zdHVmZiA9IG1lbnVzOworCQltZW51X3N0dWZmLm5yID0gc2l6ZW9mKG1lbnVzKSAvIHNpemVvZihzdHJ1Y3QgbWVudV9pdGVtKTsKKworCQljbGVhbl9wcmludF9jb2xvcihDTEVBTl9DT0xPUl9IRUFERVIpOworCQlwcmludGZfbG4oUV8oIldvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGl0ZW06IiwKKwkJCSAgICAgIldvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGl0ZW1zOiIsCisJCQkgICAgIGRlbF9saXN0Lm5yKSk7CisJCWNsZWFuX3ByaW50X2NvbG9yKENMRUFOX0NPTE9SX1JFU0VUKTsKKworCQlwcmV0dHlfcHJpbnRfZGVscygpOworCisJCWNob3NlbiA9IGxpc3RfYW5kX2Nob29zZSgmbWVudV9vcHRzLCAmbWVudV9zdHVmZik7CisKKwkJaWYgKCpjaG9zZW4gIT0gRU9GKSB7CisJCQlpbnQgcmV0OworCQkJcmV0ID0gbWVudXNbKmNob3Nlbl0uZm4oKTsKKwkJCWlmIChyZXQgIT0gTUVOVV9SRVRVUk5fTk9fTE9PUCkgeworCQkJCWZyZWUoY2hvc2VuKTsKKwkJCQljaG9zZW4gPSBOVUxMOworCQkJCWlmICghZGVsX2xpc3QubnIpIHsKKwkJCQkJY2xlYW5fcHJpbnRfY29sb3IoQ0xFQU5fQ09MT1JfRVJST1IpOworCQkJCQlwcmludGZfbG4oXygiTm8gbW9yZSBmaWxlcyB0byBjbGVhbiwgZXhpdGluZy4iKSk7CisJCQkJCWNsZWFuX3ByaW50X2NvbG9yKENMRUFOX0NPTE9SX1JFU0VUKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJCWNvbnRpbnVlOworCQkJfQorCQl9IGVsc2UgeworCQkJcXVpdF9jbWQoKTsKKwkJfQorCisJCWZyZWUoY2hvc2VuKTsKKwkJY2hvc2VuID0gTlVMTDsKKwkJYnJlYWs7CisJfQorfQorCiBpbnQgY21kX2NsZWFuKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCWludCBpLCByZXM7CiAJaW50IGRyeV9ydW4gPSAwLCByZW1vdmVfZGlyZWN0b3JpZXMgPSAwLCBxdWlldCA9IDAsIGlnbm9yZWQgPSAwOwogCWludCBpZ25vcmVkX29ubHkgPSAwLCBjb25maWdfc2V0ID0gMCwgZXJyb3JzID0gMCwgZ29uZSA9IDE7CiAJaW50IHJtX2ZsYWdzID0gUkVNT1ZFX0RJUl9LRUVQX05FU1RFRF9HSVQ7Ci0Jc3RydWN0IHN0cmJ1ZiBkaXJlY3RvcnkgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIGFic19wYXRoID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IGRpcl9zdHJ1Y3QgZGlyOwogCXN0YXRpYyBjb25zdCBjaGFyICoqcGF0aHNwZWM7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhjbHVkZV9saXN0ID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAlzdHJ1Y3QgZXhjbHVkZV9saXN0ICplbDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKIAljb25zdCBjaGFyICpxbmFtZTsKIAljaGFyICpzZWVuID0gTlVMTDsKIAlzdHJ1Y3Qgb3B0aW9uIG9wdGlvbnNbXSA9IHsKIAkJT1BUX19RVUlFVCgmcXVpZXQsIE5fKCJkbyBub3QgcHJpbnQgbmFtZXMgb2YgZmlsZXMgcmVtb3ZlZCIpKSwKIAkJT1BUX19EUllfUlVOKCZkcnlfcnVuLCBOXygiZHJ5IHJ1biIpKSwKIAkJT1BUX19GT1JDRSgmZm9yY2UsIE5fKCJmb3JjZSIpKSwKKwkJT1BUX0JPT0woJ2knLCAiaW50ZXJhY3RpdmUiLCAmaW50ZXJhY3RpdmUsIE5fKCJpbnRlcmFjdGl2ZSBjbGVhbmluZyIpKSwKIAkJT1BUX0JPT0xFQU4oJ2QnLCBOVUxMLCAmcmVtb3ZlX2RpcmVjdG9yaWVzLAogCQkJCU5fKCJyZW1vdmUgd2hvbGUgZGlyZWN0b3JpZXMiKSksCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAnZScsICJleGNsdWRlIiwgJmV4Y2x1ZGVfbGlzdCwgTl8oInBhdHRlcm4iKSwKQEAgLTE4NiwxMiArOTAxLDEyIEBACiAJaWYgKGlnbm9yZWQgJiYgaWdub3JlZF9vbmx5KQogCQlkaWUoXygiLXggYW5kIC1YIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIikpOwogCi0JaWYgKCFkcnlfcnVuICYmICFmb3JjZSkgeworCWlmICghaW50ZXJhY3RpdmUgJiYgIWRyeV9ydW4gJiYgIWZvcmNlKSB7CiAJCWlmIChjb25maWdfc2V0KQotCQkJZGllKF8oImNsZWFuLnJlcXVpcmVGb3JjZSBzZXQgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtbiBub3IgLWYgZ2l2ZW47ICIKKwkJCWRpZShfKCJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLWksIC1uIG5vciAtZiBnaXZlbjsgIgogCQkJCSAgInJlZnVzaW5nIHRvIGNsZWFuIikpOwogCQllbHNlCi0JCQlkaWUoXygiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyAiCisJCQlkaWUoXygiY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLWksIC1uIG5vciAtZiBnaXZlbjsgIgogCQkJCSAgInJlZnVzaW5nIHRvIGNsZWFuIikpOwogCX0KIApAQCAtMjIxLDggKzkzNiw5IEBACiAJCXN0cnVjdCBkaXJfZW50cnkgKmVudCA9IGRpci5lbnRyaWVzW2ldOwogCQlpbnQgbGVuLCBwb3M7CiAJCWludCBtYXRjaGVzID0gMDsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAkJc3RydWN0IHN0YXQgc3Q7CisJCWNvbnN0IGNoYXIgKnJlbDsKIAogCQkvKgogCQkgKiBSZW1vdmUgdGhlICcvJyBhdCB0aGUgZW5kIHRoYXQgZGlyZWN0b3J5CkBAIC0yNDIsMTMgKzk1OCw4IEBACiAJCQkJY29udGludWU7IC8qIFl1cCwgdGhpcyBvbmUgZXhpc3RzIHVubWVyZ2VkICovCiAJCX0KIAotCQkvKgotCQkgKiB3ZSBtaWdodCBoYXZlIHJlbW92ZWQgdGhpcyBhcyBwYXJ0IG9mIGVhcmxpZXIKLQkJICogcmVjdXJzaXZlIGRpcmVjdG9yeSByZW1vdmFsLCBzbyBsc3RhdCgpIGhlcmUgY291bGQKLQkJICogZmFpbCB3aXRoIEVOT0VOVC4KLQkJICovCiAJCWlmIChsc3RhdChlbnQtPm5hbWUsICZzdCkpCi0JCQljb250aW51ZTsKKwkJCWRpZV9lcnJubygiQ2Fubm90IGxzdGF0ICclcyciLCBlbnQtPm5hbWUpOwogCiAJCWlmIChwYXRoc3BlYykgewogCQkJbWVtc2V0KHNlZW4sIDAsIGFyZ2MgPiAwID8gYXJnYyA6IDEpOwpAQCAtMjU3LDMzICs5NjgsNjIgQEAKIAkJfQogCiAJCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7Ci0JCQlzdHJidWZfYWRkc3RyKCZkaXJlY3RvcnksIGVudC0+bmFtZSk7CiAJCQlpZiAocmVtb3ZlX2RpcmVjdG9yaWVzIHx8IChtYXRjaGVzID09IE1BVENIRURfRVhBQ1RMWSkpIHsKLQkJCQlpZiAocmVtb3ZlX2RpcnMoJmRpcmVjdG9yeSwgcHJlZml4LCBybV9mbGFncywgZHJ5X3J1biwgcXVpZXQsICZnb25lKSkKLQkJCQkJZXJyb3JzKys7Ci0JCQkJaWYgKGdvbmUgJiYgIXF1aWV0KSB7Ci0JCQkJCXFuYW1lID0gcXVvdGVfcGF0aF9yZWxhdGl2ZShkaXJlY3RvcnkuYnVmLCBkaXJlY3RvcnkubGVuLCAmYnVmLCBwcmVmaXgpOwotCQkJCQlwcmludGYoZHJ5X3J1biA/IF8obXNnX3dvdWxkX3JlbW92ZSkgOiBfKG1zZ19yZW1vdmUpLCBxbmFtZSk7Ci0JCQkJfQorCQkJCXJlbCA9IHJlbGF0aXZlX3BhdGgoZW50LT5uYW1lLCBwcmVmaXgsICZidWYpOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZGVsX2xpc3QsIHJlbCk7CiAJCQl9Ci0JCQlzdHJidWZfcmVzZXQoJmRpcmVjdG9yeSk7CiAJCX0gZWxzZSB7CiAJCQlpZiAocGF0aHNwZWMgJiYgIW1hdGNoZXMpCiAJCQkJY29udGludWU7Ci0JCQlyZXMgPSBkcnlfcnVuID8gMCA6IHVubGluayhlbnQtPm5hbWUpOworCQkJcmVsID0gcmVsYXRpdmVfcGF0aChlbnQtPm5hbWUsIHByZWZpeCwgJmJ1Zik7CisJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJmRlbF9saXN0LCByZWwpOworCQl9CisJfQorCisJaWYgKGludGVyYWN0aXZlICYmIGRlbF9saXN0Lm5yID4gMCkKKwkJaW50ZXJhY3RpdmVfbWFpbl9sb29wKCk7CisKKwlmb3JfZWFjaF9zdHJpbmdfbGlzdF9pdGVtKGl0ZW0sICZkZWxfbGlzdCkgeworCQlzdHJ1Y3Qgc3RhdCBzdDsKKworCQlpZiAocHJlZml4KQorCQkJc3RyYnVmX2FkZHN0cigmYWJzX3BhdGgsIHByZWZpeCk7CisKKwkJc3RyYnVmX2FkZHN0cigmYWJzX3BhdGgsIGl0ZW0tPnN0cmluZyk7CisKKwkJLyoKKwkJICogd2UgbWlnaHQgaGF2ZSByZW1vdmVkIHRoaXMgYXMgcGFydCBvZiBlYXJsaWVyCisJCSAqIHJlY3Vyc2l2ZSBkaXJlY3RvcnkgcmVtb3ZhbCwgc28gbHN0YXQoKSBoZXJlIGNvdWxkCisJCSAqIGZhaWwgd2l0aCBFTk9FTlQuCisJCSAqLworCQlpZiAobHN0YXQoYWJzX3BhdGguYnVmLCAmc3QpKQorCQkJY29udGludWU7CisKKwkJaWYgKFNfSVNESVIoc3Quc3RfbW9kZSkpIHsKKwkJCWlmIChyZW1vdmVfZGlycygmYWJzX3BhdGgsIHByZWZpeCwgcm1fZmxhZ3MsIGRyeV9ydW4sIHF1aWV0LCAmZ29uZSkpCisJCQkJZXJyb3JzKys7CisJCQlpZiAoZ29uZSAmJiAhcXVpZXQpIHsKKwkJCQlxbmFtZSA9IHF1b3RlX3BhdGhfcmVsYXRpdmUoaXRlbS0+c3RyaW5nLCBOVUxMLCAmYnVmKTsKKwkJCQlwcmludGYoZHJ5X3J1biA/IF8obXNnX3dvdWxkX3JlbW92ZSkgOiBfKG1zZ19yZW1vdmUpLCBxbmFtZSk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlyZXMgPSBkcnlfcnVuID8gMCA6IHVubGluayhhYnNfcGF0aC5idWYpOwogCQkJaWYgKHJlcykgewotCQkJCXFuYW1lID0gcXVvdGVfcGF0aF9yZWxhdGl2ZShlbnQtPm5hbWUsIC0xLCAmYnVmLCBwcmVmaXgpOworCQkJCXFuYW1lID0gcXVvdGVfcGF0aF9yZWxhdGl2ZShpdGVtLT5zdHJpbmcsIE5VTEwsICZidWYpOwogCQkJCXdhcm5pbmcoXyhtc2dfd2Fybl9yZW1vdmVfZmFpbGVkKSwgcW5hbWUpOwogCQkJCWVycm9ycysrOwogCQkJfSBlbHNlIGlmICghcXVpZXQpIHsKLQkJCQlxbmFtZSA9IHF1b3RlX3BhdGhfcmVsYXRpdmUoZW50LT5uYW1lLCAtMSwgJmJ1ZiwgcHJlZml4KTsKKwkJCQlxbmFtZSA9IHF1b3RlX3BhdGhfcmVsYXRpdmUoaXRlbS0+c3RyaW5nLCBOVUxMLCAmYnVmKTsKIAkJCQlwcmludGYoZHJ5X3J1biA/IF8obXNnX3dvdWxkX3JlbW92ZSkgOiBfKG1zZ19yZW1vdmUpLCBxbmFtZSk7CiAJCQl9CiAJCX0KKwkJc3RyYnVmX3Jlc2V0KCZhYnNfcGF0aCk7CiAJfQogCWZyZWUoc2Vlbik7CiAKLQlzdHJidWZfcmVsZWFzZSgmZGlyZWN0b3J5KTsKKwlzdHJidWZfcmVsZWFzZSgmYWJzX3BhdGgpOworCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOworCXN0cmluZ19saXN0X2NsZWFyKCZkZWxfbGlzdCwgMCk7CiAJc3RyaW5nX2xpc3RfY2xlYXIoJmV4Y2x1ZGVfbGlzdCwgMCk7CiAJcmV0dXJuIChlcnJvcnMgIT0gMCk7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2Nsb25lLmMgYi9idWlsdGluL2Nsb25lLmMKaW5kZXggZGFkNDI2NS4uNDMwMzA3YiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jbG9uZS5jCisrKyBiL2J1aWx0aW4vY2xvbmUuYwpAQCAtMTgsNyArMTgsNiBAQAogI2luY2x1ZGUgInRyYW5zcG9ydC5oIgogI2luY2x1ZGUgInN0cmJ1Zi5oIgogI2luY2x1ZGUgImRpci5oIgotI2luY2x1ZGUgInBhY2stcmVmcy5oIgogI2luY2x1ZGUgInNpZ2NoYWluLmgiCiAjaW5jbHVkZSAiYnJhbmNoLmgiCiAjaW5jbHVkZSAicmVtb3RlLmgiCkBAIC00OTQsMTMgKzQ5MywxNiBAQAogewogCWNvbnN0IHN0cnVjdCByZWYgKnI7CiAKKwlsb2NrX3BhY2tlZF9yZWZzKExPQ0tfRElFX09OX0VSUk9SKTsKKwogCWZvciAociA9IGxvY2FsX3JlZnM7IHI7IHIgPSByLT5uZXh0KSB7CiAJCWlmICghci0+cGVlcl9yZWYpCiAJCQljb250aW51ZTsKIAkJYWRkX3BhY2tlZF9yZWYoci0+cGVlcl9yZWYtPm5hbWUsIHItPm9sZF9zaGExKTsKIAl9CiAKLQlwYWNrX3JlZnMoUEFDS19SRUZTX0FMTCk7CisJaWYgKGNvbW1pdF9wYWNrZWRfcmVmcygpKQorCQlkaWVfZXJybm8oInVuYWJsZSB0byBvdmVyd3JpdGUgb2xkIHJlZi1wYWNrIGZpbGUiKTsKIH0KIAogc3RhdGljIHZvaWQgd3JpdGVfZm9sbG93dGFncyhjb25zdCBzdHJ1Y3QgcmVmICpyZWZzLCBjb25zdCBjaGFyICptc2cpCkBAIC01NDIsMTYgKzU0NCwyMSBAQAogCQkJICAgICAgIGNvbnN0IHN0cnVjdCByZWYgKm1hcHBlZF9yZWZzLAogCQkJICAgICAgIGNvbnN0IHN0cnVjdCByZWYgKnJlbW90ZV9oZWFkX3BvaW50c19hdCwKIAkJCSAgICAgICBjb25zdCBjaGFyICpicmFuY2hfdG9wLAotCQkJICAgICAgIGNvbnN0IGNoYXIgKm1zZykKKwkJCSAgICAgICBjb25zdCBjaGFyICptc2csCisJCQkgICAgICAgc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0LAorCQkJICAgICAgIGludCBjaGVja19jb25uZWN0aXZpdHkpCiB7CiAJY29uc3Qgc3RydWN0IHJlZiAqcm0gPSBtYXBwZWRfcmVmczsKIAotCWlmICgwIDw9IG9wdGlvbl92ZXJib3NpdHkpCi0JCXByaW50ZihfKCJDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gIikpOwotCWlmIChjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZChpdGVyYXRlX3JlZl9tYXAsIDAsICZybSkpCi0JCWRpZShfKCJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIpKTsKLQlpZiAoMCA8PSBvcHRpb25fdmVyYm9zaXR5KQotCQlwcmludGYoXygiZG9uZVxuIikpOworCWlmIChjaGVja19jb25uZWN0aXZpdHkpIHsKKwkJaWYgKDAgPD0gb3B0aW9uX3ZlcmJvc2l0eSkKKwkJCXByaW50ZihfKCJDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gIikpOworCQlpZiAoY2hlY2tfZXZlcnl0aGluZ19jb25uZWN0ZWRfd2l0aF90cmFuc3BvcnQoaXRlcmF0ZV9yZWZfbWFwLAorCQkJCQkJCSAgICAgIDAsICZybSwgdHJhbnNwb3J0KSkKKwkJCWRpZShfKCJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIpKTsKKwkJaWYgKDAgPD0gb3B0aW9uX3ZlcmJvc2l0eSkKKwkJCXByaW50ZihfKCJkb25lXG4iKSk7CisJfQogCiAJaWYgKHJlZnMpIHsKIAkJd3JpdGVfcmVtb3RlX3JlZnMobWFwcGVkX3JlZnMpOwpAQCAtNjk3LDcgKzcwNCw3IEBACiAJCQkvKgogCQkJICogb3RoZXJ3aXNlLCB0aGUgbmV4dCAiZ2l0IGZldGNoIiB3aWxsCiAJCQkgKiBzaW1wbHkgZmV0Y2ggZnJvbSBIRUFEIHdpdGhvdXQgdXBkYXRpbmcKLQkJCSAqIGFueSByZW1vdGUgdHJhY2tpbmcgYnJhbmNoLCB3aGljaCBpcyB3aGF0CisJCQkgKiBhbnkgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCwgd2hpY2ggaXMgd2hhdAogCQkJICogd2Ugd2FudC4KIAkJCSAqLwogCQl9IGVsc2UgewpAQCAtNzg3LDYgKzc5NCw4IEBACiAJaXNfbG9jYWwgPSBvcHRpb25fbG9jYWwgIT0gMCAmJiBwYXRoICYmICFpc19idW5kbGU7CiAJaWYgKGlzX2xvY2FsICYmIG9wdGlvbl9kZXB0aCkKIAkJd2FybmluZyhfKCItLWRlcHRoIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2UgZmlsZTovLyBpbnN0ZWFkLiIpKTsKKwlpZiAob3B0aW9uX2xvY2FsID4gMCAmJiAhaXNfbG9jYWwpCisJCXdhcm5pbmcoXygiLS1sb2NhbCBpcyBpZ25vcmVkIikpOwogCiAJaWYgKGFyZ2MgPT0gMikKIAkJZGlyID0geHN0cmR1cChhcmd2WzFdKTsKQEAgLTg5Myw2ICs5MDIsOSBAQAogCQlpZiAob3B0aW9uX3VwbG9hZF9wYWNrKQogCQkJdHJhbnNwb3J0X3NldF9vcHRpb24odHJhbnNwb3J0LCBUUkFOU19PUFRfVVBMT0FEUEFDSywKIAkJCQkJICAgICBvcHRpb25fdXBsb2FkX3BhY2spOworCisJCWlmICh0cmFuc3BvcnQtPnNtYXJ0X29wdGlvbnMgJiYgIW9wdGlvbl9kZXB0aCkKKwkJCXRyYW5zcG9ydC0+c21hcnRfb3B0aW9ucy0+Y2hlY2tfc2VsZl9jb250YWluZWRfYW5kX2Nvbm5lY3RlZCA9IDE7CiAJfQogCiAJcmVmcyA9IHRyYW5zcG9ydF9nZXRfcmVtb3RlX3JlZnModHJhbnNwb3J0KTsKQEAgLTk1NCw3ICs5NjYsNyBAQAogCQl0cmFuc3BvcnRfZmV0Y2hfcmVmcyh0cmFuc3BvcnQsIG1hcHBlZF9yZWZzKTsKIAogCXVwZGF0ZV9yZW1vdGVfcmVmcyhyZWZzLCBtYXBwZWRfcmVmcywgcmVtb3RlX2hlYWRfcG9pbnRzX2F0LAotCQkJICAgYnJhbmNoX3RvcC5idWYsIHJlZmxvZ19tc2cuYnVmKTsKKwkJCSAgIGJyYW5jaF90b3AuYnVmLCByZWZsb2dfbXNnLmJ1ZiwgdHJhbnNwb3J0LCAhaXNfbG9jYWwpOwogCiAJdXBkYXRlX2hlYWQob3VyX2hlYWRfcG9pbnRzX2F0LCByZW1vdGVfaGVhZCwgcmVmbG9nX21zZy5idWYpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL2NvbW1pdC5jIGIvYnVpbHRpbi9jb21taXQuYwppbmRleCAxNjIxZGZjLi4xMGFjYzUzIDEwMDY0NAotLS0gYS9idWlsdGluL2NvbW1pdC5jCisrKyBiL2J1aWx0aW4vY29tbWl0LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCiAjaW5jbHVkZSAiY29sdW1uLmgiCiAjaW5jbHVkZSAic2VxdWVuY2VyLmgiCisjaW5jbHVkZSAibm90ZXMtdXRpbHMuaCIKIAogc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2NvbW1pdF91c2FnZVtdID0gewogCU5fKCJnaXQgY29tbWl0IFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iKSwKQEAgLTYyLDggKzYzLDE4IEBACiAiSWYgeW91IHdpc2ggdG8gY29tbWl0IGl0IGFueXdheSwgdXNlOlxuIgogIlxuIgogIiAgICBnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHlcbiIKKyJcbiIpOworCitzdGF0aWMgY29uc3QgY2hhciBlbXB0eV9jaGVycnlfcGlja19hZHZpY2Vfc2luZ2xlW10gPQorTl8oIk90aGVyd2lzZSwgcGxlYXNlIHVzZSAnZ2l0IHJlc2V0J1xuIik7CisKK3N0YXRpYyBjb25zdCBjaGFyIGVtcHR5X2NoZXJyeV9waWNrX2FkdmljZV9tdWx0aVtdID0KK05fKCJJZiB5b3Ugd2lzaCB0byBza2lwIHRoaXMgY29tbWl0LCB1c2U6XG4iCiAiXG4iCi0iT3RoZXJ3aXNlLCBwbGVhc2UgdXNlICdnaXQgcmVzZXQnXG4iKTsKKyIgICAgZ2l0IHJlc2V0XG4iCisiXG4iCisiVGhlbiBcImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlXCIgd2lsbCByZXN1bWUgY2hlcnJ5LXBpY2tpbmdcbiIKKyJ0aGUgcmVtYWluaW5nIGNvbW1pdHMuXG4iKTsKIAogc3RhdGljIGNvbnN0IGNoYXIgKnVzZV9tZXNzYWdlX2J1ZmZlcjsKIHN0YXRpYyBjb25zdCBjaGFyIGNvbW1pdF9lZGl0bXNnW10gPSAiQ09NTUlUX0VESVRNU0ciOwpAQCAtMTA2LDE3ICsxMTcsMjAgQEAKIHN0YXRpYyBjb25zdCBjaGFyICpjbGVhbnVwX2FyZzsKIAogc3RhdGljIGVudW0gY29tbWl0X3doZW5jZSB3aGVuY2U7CitzdGF0aWMgaW50IHNlcXVlbmNlcl9pbl91c2U7CiBzdGF0aWMgaW50IHVzZV9lZGl0b3IgPSAxLCBpbmNsdWRlX3N0YXR1cyA9IDE7CiBzdGF0aWMgaW50IHNob3dfaWdub3JlZF9pbl9zdGF0dXMsIGhhdmVfb3B0aW9uX207CiBzdGF0aWMgY29uc3QgY2hhciAqb25seV9pbmNsdWRlX2Fzc3VtZWQ7CiBzdGF0aWMgc3RydWN0IHN0cmJ1ZiBtZXNzYWdlID0gU1RSQlVGX0lOSVQ7CiAKLXN0YXRpYyBlbnVtIHsKK3N0YXRpYyBlbnVtIHN0YXR1c19mb3JtYXQgewogCVNUQVRVU19GT1JNQVRfTk9ORSA9IDAsCiAJU1RBVFVTX0ZPUk1BVF9MT05HLAogCVNUQVRVU19GT1JNQVRfU0hPUlQsCi0JU1RBVFVTX0ZPUk1BVF9QT1JDRUxBSU4KLX0gc3RhdHVzX2Zvcm1hdDsKKwlTVEFUVVNfRk9STUFUX1BPUkNFTEFJTiwKKworCVNUQVRVU19GT1JNQVRfVU5TUEVDSUZJRUQKK30gc3RhdHVzX2Zvcm1hdCA9IFNUQVRVU19GT1JNQVRfVU5TUEVDSUZJRUQ7CiAKIHN0YXRpYyBpbnQgb3B0X3BhcnNlX20oY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKIHsKQEAgLTEzOCw4ICsxNTIsMTEgQEAKIHsKIAlpZiAoZmlsZV9leGlzdHMoZ2l0X3BhdGgoIk1FUkdFX0hFQUQiKSkpCiAJCXdoZW5jZSA9IEZST01fTUVSR0U7Ci0JZWxzZSBpZiAoZmlsZV9leGlzdHMoZ2l0X3BhdGgoIkNIRVJSWV9QSUNLX0hFQUQiKSkpCisJZWxzZSBpZiAoZmlsZV9leGlzdHMoZ2l0X3BhdGgoIkNIRVJSWV9QSUNLX0hFQUQiKSkpIHsKIAkJd2hlbmNlID0gRlJPTV9DSEVSUllfUElDSzsKKwkJaWYgKGZpbGVfZXhpc3RzKGdpdF9wYXRoKCJzZXF1ZW5jZXIiKSkpCisJCQlzZXF1ZW5jZXJfaW5fdXNlID0gMTsKKwl9CiAJZWxzZQogCQl3aGVuY2UgPSBGUk9NX0NPTU1JVDsKIAlpZiAocykKQEAgLTIwNCw3ICsyMjEsNyBAQAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKIAogCQlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfVVBEQVRFKQpAQCAtNDU5LDYgKzQ3Niw5IEBACiAJY2FzZSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjoKIAkJd3RfcG9yY2VsYWluX3ByaW50KHMpOwogCQlicmVhazsKKwljYXNlIFNUQVRVU19GT1JNQVRfVU5TUEVDSUZJRUQ6CisJCWRpZSgiQlVHOiBmaW5hbGl6ZV9kZWZlcnJlZF9jb25maWcoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCIpOworCQlicmVhazsKIAljYXNlIFNUQVRVU19GT1JNQVRfTk9ORToKIAljYXNlIFNUQVRVU19GT1JNQVRfTE9ORzoKIAkJd3Rfc3RhdHVzX3ByaW50KHMpOwpAQCAtNTI4LDcgKzU0OCw2IEBACiAJCQkJCShsYiAtIHN0cmxlbigiICIpIC0KIAkJCQkJIChhICsgc3RybGVuKCJcbmF1dGhvciAiKSkpKTsKIAkJZW1haWwgPSB4bWVtZHVweihsYiArIHN0cmxlbigiPCIpLCByYiAtIChsYiArIHN0cmxlbigiPCIpKSk7Ci0JCWRhdGUgPSB4bWVtZHVweihyYiArIHN0cmxlbigiPiAiKSwgZW9sIC0gKHJiICsgc3RybGVuKCI+ICIpKSk7CiAJCWxlbiA9IGVvbCAtIChyYiArIHN0cmxlbigiPiAiKSk7CiAJCWRhdGUgPSB4bWFsbG9jKGxlbiArIDIpOwogCQkqZGF0ZSA9ICdAJzsKQEAgLTgwNSw4ICs4MjQsMTMgQEAKIAkJcnVuX3N0YXR1cyhzdGRvdXQsIGluZGV4X2ZpbGUsIHByZWZpeCwgMCwgcyk7CiAJCWlmIChhbWVuZCkKIAkJCWZwdXRzKF8oZW1wdHlfYW1lbmRfYWR2aWNlKSwgc3RkZXJyKTsKLQkJZWxzZSBpZiAod2hlbmNlID09IEZST01fQ0hFUlJZX1BJQ0spCisJCWVsc2UgaWYgKHdoZW5jZSA9PSBGUk9NX0NIRVJSWV9QSUNLKSB7CiAJCQlmcHV0cyhfKGVtcHR5X2NoZXJyeV9waWNrX2FkdmljZSksIHN0ZGVycik7CisJCQlpZiAoIXNlcXVlbmNlcl9pbl91c2UpCisJCQkJZnB1dHMoXyhlbXB0eV9jaGVycnlfcGlja19hZHZpY2Vfc2luZ2xlKSwgc3RkZXJyKTsKKwkJCWVsc2UKKwkJCQlmcHV0cyhfKGVtcHR5X2NoZXJyeV9waWNrX2FkdmljZV9tdWx0aSksIHN0ZGVycik7CisJCX0KIAkJcmV0dXJuIDA7CiAJfQogCkBAIC05NjAsNiArOTg0LDQyIEBACiAJcmV0dXJuIGxvZ21zZ19yZWVuY29kZShjb21taXQsIE5VTEwsIG91dF9lbmMpOwogfQogCisvKgorICogRW51bWVyYXRlIHdoYXQgbmVlZHMgdG8gYmUgcHJvcGFnYXRlZCB3aGVuIC0tcG9yY2VsYWluCisgKiBpcyBub3QgaW4gZWZmZWN0IGhlcmUuCisgKi8KK3N0YXRpYyBzdHJ1Y3Qgc3RhdHVzX2RlZmVycmVkX2NvbmZpZyB7CisJZW51bSBzdGF0dXNfZm9ybWF0IHN0YXR1c19mb3JtYXQ7CisJaW50IHNob3dfYnJhbmNoOworfSBzdGF0dXNfZGVmZXJyZWRfY29uZmlnID0geworCVNUQVRVU19GT1JNQVRfVU5TUEVDSUZJRUQsCisJLTEgLyogdW5zcGVjaWZpZWQgKi8KK307CisKK3N0YXRpYyB2b2lkIGZpbmFsaXplX2RlZmVycmVkX2NvbmZpZyhzdHJ1Y3Qgd3Rfc3RhdHVzICpzKQoreworCWludCB1c2VfZGVmZXJyZWRfY29uZmlnID0gKHN0YXR1c19mb3JtYXQgIT0gU1RBVFVTX0ZPUk1BVF9QT1JDRUxBSU4gJiYKKwkJCQkgICAhcy0+bnVsbF90ZXJtaW5hdGlvbik7CisKKwlpZiAocy0+bnVsbF90ZXJtaW5hdGlvbikgeworCQlpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX05PTkUgfHwKKwkJICAgIHN0YXR1c19mb3JtYXQgPT0gU1RBVFVTX0ZPUk1BVF9VTlNQRUNJRklFRCkKKwkJCXN0YXR1c19mb3JtYXQgPSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjsKKwkJZWxzZSBpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX0xPTkcpCisJCQlkaWUoXygiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIikpOworCX0KKworCWlmICh1c2VfZGVmZXJyZWRfY29uZmlnICYmIHN0YXR1c19mb3JtYXQgPT0gU1RBVFVTX0ZPUk1BVF9VTlNQRUNJRklFRCkKKwkJc3RhdHVzX2Zvcm1hdCA9IHN0YXR1c19kZWZlcnJlZF9jb25maWcuc3RhdHVzX2Zvcm1hdDsKKwlpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX1VOU1BFQ0lGSUVEKQorCQlzdGF0dXNfZm9ybWF0ID0gU1RBVFVTX0ZPUk1BVF9OT05FOworCisJaWYgKHVzZV9kZWZlcnJlZF9jb25maWcgJiYgcy0+c2hvd19icmFuY2ggPCAwKQorCQlzLT5zaG93X2JyYW5jaCA9IHN0YXR1c19kZWZlcnJlZF9jb25maWcuc2hvd19icmFuY2g7CisJaWYgKHMtPnNob3dfYnJhbmNoIDwgMCkKKwkJcy0+c2hvd19icmFuY2ggPSAwOworfQorCiBzdGF0aWMgaW50IHBhcnNlX2FuZF92YWxpZGF0ZV9vcHRpb25zKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10sCiAJCQkJICAgICAgY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0aW9ucywKIAkJCQkgICAgICBjb25zdCBjaGFyICogY29uc3QgdXNhZ2VbXSwKQEAgLTk3MCw2ICsxMDMwLDcgQEAKIAlpbnQgZiA9IDA7CiAKIAlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIG9wdGlvbnMsIHVzYWdlLCAwKTsKKwlmaW5hbGl6ZV9kZWZlcnJlZF9jb25maWcocyk7CiAKIAlpZiAoZm9yY2VfYXV0aG9yICYmICFzdHJjaHIoZm9yY2VfYXV0aG9yLCAnPicpKQogCQlmb3JjZV9hdXRob3IgPSBmaW5kX2F1dGhvcl9ieV9uaWNrbmFtZShmb3JjZV9hdXRob3IpOwpAQCAtMTA1NCwxMiArMTExNSw2IEBACiAJaWYgKGFsbCAmJiBhcmdjID4gMCkKIAkJZGllKF8oIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iKSk7CiAKLQlpZiAocy0+bnVsbF90ZXJtaW5hdGlvbikgewotCQlpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX05PTkUpCi0JCQlzdGF0dXNfZm9ybWF0ID0gU1RBVFVTX0ZPUk1BVF9QT1JDRUxBSU47Ci0JCWVsc2UgaWYgKHN0YXR1c19mb3JtYXQgPT0gU1RBVFVTX0ZPUk1BVF9MT05HKQotCQkJZGllKF8oIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIpKTsKLQl9CiAJaWYgKHN0YXR1c19mb3JtYXQgIT0gU1RBVFVTX0ZPUk1BVF9OT05FKQogCQlkcnlfcnVuID0gMTsKIApAQCAtMTExMiw2ICsxMTY3LDE3IEBACiAJCQlzLT5zdWJtb2R1bGVfc3VtbWFyeSA9IC0xOwogCQlyZXR1cm4gMDsKIAl9CisJaWYgKCFzdHJjbXAoaywgInN0YXR1cy5zaG9ydCIpKSB7CisJCWlmIChnaXRfY29uZmlnX2Jvb2woaywgdikpCisJCQlzdGF0dXNfZGVmZXJyZWRfY29uZmlnLnN0YXR1c19mb3JtYXQgPSBTVEFUVVNfRk9STUFUX1NIT1JUOworCQllbHNlCisJCQlzdGF0dXNfZGVmZXJyZWRfY29uZmlnLnN0YXR1c19mb3JtYXQgPSBTVEFUVVNfRk9STUFUX05PTkU7CisJCXJldHVybiAwOworCX0KKwlpZiAoIXN0cmNtcChrLCAic3RhdHVzLmJyYW5jaCIpKSB7CisJCXN0YXR1c19kZWZlcnJlZF9jb25maWcuc2hvd19icmFuY2ggPSBnaXRfY29uZmlnX2Jvb2woaywgdik7CisJCXJldHVybiAwOworCX0KIAlpZiAoIXN0cmNtcChrLCAic3RhdHVzLmNvbG9yIikgfHwgIXN0cmNtcChrLCAiY29sb3Iuc3RhdHVzIikpIHsKIAkJcy0+dXNlX2NvbG9yID0gZ2l0X2NvbmZpZ19jb2xvcmJvb2woaywgdik7CiAJCXJldHVybiAwOwpAQCAtMTE1NCw4ICsxMjIwLDggQEAKIAkJT1BUX19WRVJCT1NFKCZ2ZXJib3NlLCBOXygiYmUgdmVyYm9zZSIpKSwKIAkJT1BUX1NFVF9JTlQoJ3MnLCAic2hvcnQiLCAmc3RhdHVzX2Zvcm1hdCwKIAkJCSAgICBOXygic2hvdyBzdGF0dXMgY29uY2lzZWx5IiksIFNUQVRVU19GT1JNQVRfU0hPUlQpLAotCQlPUFRfQk9PTEVBTignYicsICJicmFuY2giLCAmcy5zaG93X2JyYW5jaCwKLQkJCSAgICBOXygic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iKSksCisJCU9QVF9CT09MKCdiJywgImJyYW5jaCIsICZzLnNob3dfYnJhbmNoLAorCQkJIE5fKCJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgInBvcmNlbGFpbiIsICZzdGF0dXNfZm9ybWF0LAogCQkJICAgIE5fKCJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIpLAogCQkJICAgIFNUQVRVU19GT1JNQVRfUE9SQ0VMQUlOKSwKQEAgLTExODgsMTMgKzEyNTQsNyBAQAogCQkJICAgICBidWlsdGluX3N0YXR1c19vcHRpb25zLAogCQkJICAgICBidWlsdGluX3N0YXR1c191c2FnZSwgMCk7CiAJZmluYWxpemVfY29sb3B0cygmcy5jb2xvcHRzLCAtMSk7Ci0KLQlpZiAocy5udWxsX3Rlcm1pbmF0aW9uKSB7Ci0JCWlmIChzdGF0dXNfZm9ybWF0ID09IFNUQVRVU19GT1JNQVRfTk9ORSkKLQkJCXN0YXR1c19mb3JtYXQgPSBTVEFUVVNfRk9STUFUX1BPUkNFTEFJTjsKLQkJZWxzZSBpZiAoc3RhdHVzX2Zvcm1hdCA9PSBTVEFUVVNfRk9STUFUX0xPTkcpCi0JCQlkaWUoXygiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIikpOwotCX0KKwlmaW5hbGl6ZV9kZWZlcnJlZF9jb25maWcoJnMpOwogCiAJaGFuZGxlX3VudHJhY2tlZF9maWxlc19hcmcoJnMpOwogCWlmIChzaG93X2lnbm9yZWRfaW5fc3RhdHVzKQpAQCAtMTIyMyw2ICsxMjgzLDkgQEAKIAljYXNlIFNUQVRVU19GT1JNQVRfUE9SQ0VMQUlOOgogCQl3dF9wb3JjZWxhaW5fcHJpbnQoJnMpOwogCQlicmVhazsKKwljYXNlIFNUQVRVU19GT1JNQVRfVU5TUEVDSUZJRUQ6CisJCWRpZSgiQlVHOiBmaW5hbGl6ZV9kZWZlcnJlZF9jb25maWcoKSBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZCIpOworCQlicmVhazsKIAljYXNlIFNUQVRVU19GT1JNQVRfTk9ORToKIAljYXNlIFNUQVRVU19GT1JNQVRfTE9ORzoKIAkJcy52ZXJib3NlID0gdmVyYm9zZTsKQEAgLTEzOTEsNyArMTQ1NCw3IEBACiAJCU9QVF9CT09MRUFOKDAsICJkcnktcnVuIiwgJmRyeV9ydW4sIE5fKCJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIikpLAogCQlPUFRfU0VUX0lOVCgwLCAic2hvcnQiLCAmc3RhdHVzX2Zvcm1hdCwgTl8oInNob3cgc3RhdHVzIGNvbmNpc2VseSIpLAogCQkJICAgIFNUQVRVU19GT1JNQVRfU0hPUlQpLAotCQlPUFRfQk9PTEVBTigwLCAiYnJhbmNoIiwgJnMuc2hvd19icmFuY2gsIE5fKCJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIpKSwKKwkJT1BUX0JPT0woMCwgImJyYW5jaCIsICZzLnNob3dfYnJhbmNoLCBOXygic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iKSksCiAJCU9QVF9TRVRfSU5UKDAsICJwb3JjZWxhaW4iLCAmc3RhdHVzX2Zvcm1hdCwKIAkJCSAgICBOXygibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiKSwgU1RBVFVTX0ZPUk1BVF9QT1JDRUxBSU4pLAogCQlPUFRfU0VUX0lOVCgwLCAibG9uZyIsICZzdGF0dXNfZm9ybWF0LApAQCAtMTQzMiw2ICsxNDk1LDcgQEAKIAl3dF9zdGF0dXNfcHJlcGFyZSgmcyk7CiAJZ2l0bW9kdWxlc19jb25maWcoKTsKIAlnaXRfY29uZmlnKGdpdF9jb21taXRfY29uZmlnLCAmcyk7CisJc3RhdHVzX2Zvcm1hdCA9IFNUQVRVU19GT1JNQVRfTk9ORTsgLyogSWdub3JlIHN0YXR1cy5zaG9ydCAqLwogCWRldGVybWluZV93aGVuY2UoJnMpOwogCXMuY29sb3B0cyA9IDA7CiAKQEAgLTE1OTMsNyArMTY1Nyw3IEBACiAJCWlmIChjZmcpIHsKIAkJCS8qIHdlIGFyZSBhbWVuZGluZywgc28gY3VycmVudF9oZWFkIGlzIG5vdCBOVUxMICovCiAJCQljb3B5X25vdGVfZm9yX3Jld3JpdGUoY2ZnLCBjdXJyZW50X2hlYWQtPm9iamVjdC5zaGExLCBzaGExKTsKLQkJCWZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGNmZyk7CisJCQlmaW5pc2hfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjZmcsICJOb3RlcyBhZGRlZCBieSAnZ2l0IGNvbW1pdCAtLWFtZW5kJyIpOwogCQl9CiAJCXJ1bl9yZXdyaXRlX2hvb2soY3VycmVudF9oZWFkLT5vYmplY3Quc2hhMSwgc2hhMSk7CiAJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb25maWcuYyBiL2J1aWx0aW4vY29uZmlnLmMKaW5kZXggMTlmZmNhZi4uNDAxMGM0MyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb25maWcuYworKysgYi9idWlsdGluL2NvbmZpZy5jCkBAIC0yMSw2ICsyMSw3IEBACiAKIHN0YXRpYyBpbnQgdXNlX2dsb2JhbF9jb25maWcsIHVzZV9zeXN0ZW1fY29uZmlnLCB1c2VfbG9jYWxfY29uZmlnOwogc3RhdGljIGNvbnN0IGNoYXIgKmdpdmVuX2NvbmZpZ19maWxlOworc3RhdGljIGNvbnN0IGNoYXIgKmdpdmVuX2NvbmZpZ19ibG9iOwogc3RhdGljIGludCBhY3Rpb25zLCB0eXBlczsKIHN0YXRpYyBjb25zdCBjaGFyICpnZXRfY29sb3Jfc2xvdCwgKmdldF9jb2xvcmJvb2xfc2xvdDsKIHN0YXRpYyBpbnQgZW5kX251bGw7CkBAIC01Myw2ICs1NCw3IEBACiAJT1BUX0JPT0xFQU4oMCwgInN5c3RlbSIsICZ1c2Vfc3lzdGVtX2NvbmZpZywgTl8oInVzZSBzeXN0ZW0gY29uZmlnIGZpbGUiKSksCiAJT1BUX0JPT0xFQU4oMCwgImxvY2FsIiwgJnVzZV9sb2NhbF9jb25maWcsIE5fKCJ1c2UgcmVwb3NpdG9yeSBjb25maWcgZmlsZSIpKSwKIAlPUFRfU1RSSU5HKCdmJywgImZpbGUiLCAmZ2l2ZW5fY29uZmlnX2ZpbGUsIE5fKCJmaWxlIiksIE5fKCJ1c2UgZ2l2ZW4gY29uZmlnIGZpbGUiKSksCisJT1BUX1NUUklORygwLCAiYmxvYiIsICZnaXZlbl9jb25maWdfYmxvYiwgTl8oImJsb2ItaWQiKSwgTl8oInJlYWQgY29uZmlnIGZyb20gZ2l2ZW4gYmxvYiBvYmplY3QiKSksCiAJT1BUX0dST1VQKE5fKCJBY3Rpb24iKSksCiAJT1BUX0JJVCgwLCAiZ2V0IiwgJmFjdGlvbnMsIE5fKCJnZXQgdmFsdWU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIpLCBBQ1RJT05fR0VUKSwKIAlPUFRfQklUKDAsICJnZXQtYWxsIiwgJmFjdGlvbnMsIE5fKCJnZXQgYWxsIHZhbHVlczoga2V5IFt2YWx1ZS1yZWdleF0iKSwgQUNUSU9OX0dFVF9BTEwpLApAQCAtMjE4LDcgKzIyMCw4IEBACiAJfQogCiAJZ2l0X2NvbmZpZ193aXRoX29wdGlvbnMoY29sbGVjdF9jb25maWcsICZ2YWx1ZXMsCi0JCQkJZ2l2ZW5fY29uZmlnX2ZpbGUsIHJlc3BlY3RfaW5jbHVkZXMpOworCQkJCWdpdmVuX2NvbmZpZ19maWxlLCBnaXZlbl9jb25maWdfYmxvYiwKKwkJCQlyZXNwZWN0X2luY2x1ZGVzKTsKIAogCXJldCA9ICF2YWx1ZXMubnI7CiAKQEAgLTMwMiw3ICszMDUsOCBAQAogCWdldF9jb2xvcl9mb3VuZCA9IDA7CiAJcGFyc2VkX2NvbG9yWzBdID0gJ1wwJzsKIAlnaXRfY29uZmlnX3dpdGhfb3B0aW9ucyhnaXRfZ2V0X2NvbG9yX2NvbmZpZywgTlVMTCwKLQkJCQlnaXZlbl9jb25maWdfZmlsZSwgcmVzcGVjdF9pbmNsdWRlcyk7CisJCQkJZ2l2ZW5fY29uZmlnX2ZpbGUsIGdpdmVuX2NvbmZpZ19ibG9iLAorCQkJCXJlc3BlY3RfaW5jbHVkZXMpOwogCiAJaWYgKCFnZXRfY29sb3JfZm91bmQgJiYgZGVmX2NvbG9yKQogCQljb2xvcl9wYXJzZShkZWZfY29sb3IsICJjb21tYW5kIGxpbmUiLCBwYXJzZWRfY29sb3IpOwpAQCAtMzI5LDggKzMzMywxMCBAQAogewogCWdldF9jb2xvcmJvb2xfZm91bmQgPSAtMTsKIAlnZXRfZGlmZl9jb2xvcl9mb3VuZCA9IC0xOworCWdldF9jb2xvcl91aV9mb3VuZCA9IC0xOwogCWdpdF9jb25maWdfd2l0aF9vcHRpb25zKGdpdF9nZXRfY29sb3Jib29sX2NvbmZpZywgTlVMTCwKLQkJCQlnaXZlbl9jb25maWdfZmlsZSwgcmVzcGVjdF9pbmNsdWRlcyk7CisJCQkJZ2l2ZW5fY29uZmlnX2ZpbGUsIGdpdmVuX2NvbmZpZ19ibG9iLAorCQkJCXJlc3BlY3RfaW5jbHVkZXMpOwogCiAJaWYgKGdldF9jb2xvcmJvb2xfZm91bmQgPCAwKSB7CiAJCWlmICghc3RyY21wKGdldF9jb2xvcmJvb2xfc2xvdCwgImNvbG9yLmRpZmYiKSkKQEAgLTMzOSw2ICszNDUsMTAgQEAKIAkJCWdldF9jb2xvcmJvb2xfZm91bmQgPSBnZXRfY29sb3JfdWlfZm91bmQ7CiAJfQogCisJaWYgKGdldF9jb2xvcmJvb2xfZm91bmQgPCAwKQorCQkvKiBkZWZhdWx0IHZhbHVlIGlmIG5vbmUgZm91bmQgaW4gY29uZmlnICovCisJCWdldF9jb2xvcmJvb2xfZm91bmQgPSBHSVRfQ09MT1JfQVVUTzsKKwogCWdldF9jb2xvcmJvb2xfZm91bmQgPSB3YW50X2NvbG9yKGdldF9jb2xvcmJvb2xfZm91bmQpOwogCiAJaWYgKHByaW50KSB7CkBAIC0zNDgsNiArMzU4LDEyIEBACiAJCXJldHVybiBnZXRfY29sb3Jib29sX2ZvdW5kID8gMCA6IDE7CiB9CiAKK3N0YXRpYyB2b2lkIGNoZWNrX2Jsb2Jfd3JpdGUodm9pZCkKK3sKKwlpZiAoZ2l2ZW5fY29uZmlnX2Jsb2IpCisJCWRpZSgid3JpdGluZyBjb25maWcgYmxvYnMgaXMgbm90IHN1cHBvcnRlZCIpOworfQorCiBpbnQgY21kX2NvbmZpZyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKIAlpbnQgbm9uZ2l0ID0gIXN0YXJ0dXBfaW5mby0+aGF2ZV9yZXBvc2l0b3J5OwpAQCAtMzU5LDcgKzM3NSw4IEBACiAJCQkgICAgIGJ1aWx0aW5fY29uZmlnX3VzYWdlLAogCQkJICAgICBQQVJTRV9PUFRfU1RPUF9BVF9OT05fT1BUSU9OKTsKIAotCWlmICh1c2VfZ2xvYmFsX2NvbmZpZyArIHVzZV9zeXN0ZW1fY29uZmlnICsgdXNlX2xvY2FsX2NvbmZpZyArICEhZ2l2ZW5fY29uZmlnX2ZpbGUgPiAxKSB7CisJaWYgKHVzZV9nbG9iYWxfY29uZmlnICsgdXNlX3N5c3RlbV9jb25maWcgKyB1c2VfbG9jYWxfY29uZmlnICsKKwkgICAgISFnaXZlbl9jb25maWdfZmlsZSArICEhZ2l2ZW5fY29uZmlnX2Jsb2IgPiAxKSB7CiAJCWVycm9yKCJvbmx5IG9uZSBjb25maWcgZmlsZSBhdCBhIHRpbWUuIik7CiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX2NvbmZpZ191c2FnZSwgYnVpbHRpbl9jb25maWdfb3B0aW9ucyk7CiAJfQpAQCAtNDM4LDYgKzQ1NSw3IEBACiAJCWNoZWNrX2FyZ2MoYXJnYywgMCwgMCk7CiAJCWlmIChnaXRfY29uZmlnX3dpdGhfb3B0aW9ucyhzaG93X2FsbF9jb25maWcsIE5VTEwsCiAJCQkJCSAgICBnaXZlbl9jb25maWdfZmlsZSwKKwkJCQkJICAgIGdpdmVuX2NvbmZpZ19ibG9iLAogCQkJCQkgICAgcmVzcGVjdF9pbmNsdWRlcykgPCAwKSB7CiAJCQlpZiAoZ2l2ZW5fY29uZmlnX2ZpbGUpCiAJCQkJZGllX2Vycm5vKCJ1bmFibGUgdG8gcmVhZCBjb25maWcgZmlsZSAnJXMnIiwKQEAgLTQ1MCw2ICs0NjgsOCBAQAogCQljaGVja19hcmdjKGFyZ2MsIDAsIDApOwogCQlpZiAoIWdpdmVuX2NvbmZpZ19maWxlICYmIG5vbmdpdCkKIAkJCWRpZSgibm90IGluIGEgZ2l0IGRpcmVjdG9yeSIpOworCQlpZiAoZ2l2ZW5fY29uZmlnX2Jsb2IpCisJCQlkaWUoImVkaXRpbmcgYmxvYnMgaXMgbm90IHN1cHBvcnRlZCIpOwogCQlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CiAJCWxhdW5jaF9lZGl0b3IoZ2l2ZW5fY29uZmlnX2ZpbGUgPwogCQkJICAgICAgZ2l2ZW5fY29uZmlnX2ZpbGUgOiBnaXRfcGF0aCgiY29uZmlnIiksCkBAIC00NTcsNiArNDc3LDcgQEAKIAl9CiAJZWxzZSBpZiAoYWN0aW9ucyA9PSBBQ1RJT05fU0VUKSB7CiAJCWludCByZXQ7CisJCWNoZWNrX2Jsb2Jfd3JpdGUoKTsKIAkJY2hlY2tfYXJnYyhhcmdjLCAyLCAyKTsKIAkJdmFsdWUgPSBub3JtYWxpemVfdmFsdWUoYXJndlswXSwgYXJndlsxXSk7CiAJCXJldCA9IGdpdF9jb25maWdfc2V0X2luX2ZpbGUoZ2l2ZW5fY29uZmlnX2ZpbGUsIGFyZ3ZbMF0sIHZhbHVlKTsKQEAgLTQ2NiwxOCArNDg3LDIxIEBACiAJCXJldHVybiByZXQ7CiAJfQogCWVsc2UgaWYgKGFjdGlvbnMgPT0gQUNUSU9OX1NFVF9BTEwpIHsKKwkJY2hlY2tfYmxvYl93cml0ZSgpOwogCQljaGVja19hcmdjKGFyZ2MsIDIsIDMpOwogCQl2YWx1ZSA9IG5vcm1hbGl6ZV92YWx1ZShhcmd2WzBdLCBhcmd2WzFdKTsKIAkJcmV0dXJuIGdpdF9jb25maWdfc2V0X211bHRpdmFyX2luX2ZpbGUoZ2l2ZW5fY29uZmlnX2ZpbGUsCiAJCQkJCQkgICAgICAgYXJndlswXSwgdmFsdWUsIGFyZ3ZbMl0sIDApOwogCX0KIAllbHNlIGlmIChhY3Rpb25zID09IEFDVElPTl9BREQpIHsKKwkJY2hlY2tfYmxvYl93cml0ZSgpOwogCQljaGVja19hcmdjKGFyZ2MsIDIsIDIpOwogCQl2YWx1ZSA9IG5vcm1hbGl6ZV92YWx1ZShhcmd2WzBdLCBhcmd2WzFdKTsKIAkJcmV0dXJuIGdpdF9jb25maWdfc2V0X211bHRpdmFyX2luX2ZpbGUoZ2l2ZW5fY29uZmlnX2ZpbGUsCiAJCQkJCQkgICAgICAgYXJndlswXSwgdmFsdWUsICJeJCIsIDApOwogCX0KIAllbHNlIGlmIChhY3Rpb25zID09IEFDVElPTl9SRVBMQUNFX0FMTCkgeworCQljaGVja19ibG9iX3dyaXRlKCk7CiAJCWNoZWNrX2FyZ2MoYXJnYywgMiwgMyk7CiAJCXZhbHVlID0gbm9ybWFsaXplX3ZhbHVlKGFyZ3ZbMF0sIGFyZ3ZbMV0pOwogCQlyZXR1cm4gZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXJfaW5fZmlsZShnaXZlbl9jb25maWdfZmlsZSwKQEAgLTUwMCw2ICs1MjQsNyBAQAogCQlyZXR1cm4gZ2V0X3ZhbHVlKGFyZ3ZbMF0sIGFyZ3ZbMV0pOwogCX0KIAllbHNlIGlmIChhY3Rpb25zID09IEFDVElPTl9VTlNFVCkgeworCQljaGVja19ibG9iX3dyaXRlKCk7CiAJCWNoZWNrX2FyZ2MoYXJnYywgMSwgMik7CiAJCWlmIChhcmdjID09IDIpCiAJCQlyZXR1cm4gZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXJfaW5fZmlsZShnaXZlbl9jb25maWdfZmlsZSwKQEAgLTUwOSwxMiArNTM0LDE0IEBACiAJCQkJCQkgICAgICBhcmd2WzBdLCBOVUxMKTsKIAl9CiAJZWxzZSBpZiAoYWN0aW9ucyA9PSBBQ1RJT05fVU5TRVRfQUxMKSB7CisJCWNoZWNrX2Jsb2Jfd3JpdGUoKTsKIAkJY2hlY2tfYXJnYyhhcmdjLCAxLCAyKTsKIAkJcmV0dXJuIGdpdF9jb25maWdfc2V0X211bHRpdmFyX2luX2ZpbGUoZ2l2ZW5fY29uZmlnX2ZpbGUsCiAJCQkJCQkgICAgICAgYXJndlswXSwgTlVMTCwgYXJndlsxXSwgMSk7CiAJfQogCWVsc2UgaWYgKGFjdGlvbnMgPT0gQUNUSU9OX1JFTkFNRV9TRUNUSU9OKSB7CiAJCWludCByZXQ7CisJCWNoZWNrX2Jsb2Jfd3JpdGUoKTsKIAkJY2hlY2tfYXJnYyhhcmdjLCAyLCAyKTsKIAkJcmV0ID0gZ2l0X2NvbmZpZ19yZW5hbWVfc2VjdGlvbl9pbl9maWxlKGdpdmVuX2NvbmZpZ19maWxlLAogCQkJCQkJCWFyZ3ZbMF0sIGFyZ3ZbMV0pOwpAQCAtNTI1LDYgKzU1Miw3IEBACiAJfQogCWVsc2UgaWYgKGFjdGlvbnMgPT0gQUNUSU9OX1JFTU9WRV9TRUNUSU9OKSB7CiAJCWludCByZXQ7CisJCWNoZWNrX2Jsb2Jfd3JpdGUoKTsKIAkJY2hlY2tfYXJnYyhhcmdjLCAxLCAxKTsKIAkJcmV0ID0gZ2l0X2NvbmZpZ19yZW5hbWVfc2VjdGlvbl9pbl9maWxlKGdpdmVuX2NvbmZpZ19maWxlLAogCQkJCQkJCWFyZ3ZbMF0sIE5VTEwpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9kZXNjcmliZS5jIGIvYnVpbHRpbi9kZXNjcmliZS5jCmluZGV4IDY2MzZhNjguLjdkNzM3MjIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZGVzY3JpYmUuYworKysgYi9idWlsdGluL2Rlc2NyaWJlLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogI2luY2x1ZGUgImRpZmYuaCIKICNpbmNsdWRlICJoYXNoLmgiCisjaW5jbHVkZSAiYXJndi1hcnJheS5oIgogCiAjZGVmaW5lIFNFRU4JCSgxdTw8MCkKICNkZWZpbmUgTUFYX1RBR1MJKEZMQUdfQklUUyAtIDEpCkBAIC0yMSw2ICsyMiw3IEBACiBzdGF0aWMgaW50IGFsbDsJLyogQW55IHZhbGlkIHJlZiBjYW4gYmUgdXNlZCAqLwogc3RhdGljIGludCB0YWdzOwkvKiBBbGxvdyBsaWdodHdlaWdodCB0YWdzICovCiBzdGF0aWMgaW50IGxvbmdmb3JtYXQ7CitzdGF0aWMgaW50IGZpcnN0X3BhcmVudDsKIHN0YXRpYyBpbnQgYWJicmV2ID0gLTE7IC8qIHVuc3BlY2lmaWVkICovCiBzdGF0aWMgaW50IG1heF9jYW5kaWRhdGVzID0gMTA7CiBzdGF0aWMgc3RydWN0IGhhc2hfdGFibGUgbmFtZXM7CkBAIC00Miw3ICs0NCw3IEBACiAJdW5zaWduZWQgcHJpbzoyOyAvKiBhbm5vdGF0ZWQgdGFnID0gMiwgdGFnID0gMSwgaGVhZCA9IDAgKi8KIAl1bnNpZ25lZCBuYW1lX2NoZWNrZWQ6MTsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWNvbnN0IGNoYXIgKnBhdGg7CisJY2hhciAqcGF0aDsKIH07CiBzdGF0aWMgY29uc3QgY2hhciAqcHJpb19uYW1lc1tdID0gewogCSJoZWFkIiwgImxpZ2h0d2VpZ2h0IiwgImFubm90YXRlZCIsCkBAIC0xMjYsMTIgKzEyOCwxNCBAQAogCQkJfSBlbHNlIHsKIAkJCQllLT5uZXh0ID0gTlVMTDsKIAkJCX0KKwkJCWUtPnBhdGggPSBOVUxMOwogCQl9CiAJCWUtPnRhZyA9IHRhZzsKIAkJZS0+cHJpbyA9IHByaW87CiAJCWUtPm5hbWVfY2hlY2tlZCA9IDA7CiAJCWhhc2hjcHkoZS0+c2hhMSwgc2hhMSk7Ci0JCWUtPnBhdGggPSBwYXRoOworCQlmcmVlKGUtPnBhdGgpOworCQllLT5wYXRoID0geHN0cmR1cChwYXRoKTsKIAl9CiB9CiAKQEAgLTMzNiw2ICszNDAsOSBAQAogCQkJCWNvbW1pdF9saXN0X2luc2VydF9ieV9kYXRlKHAsICZsaXN0KTsKIAkJCXAtPm9iamVjdC5mbGFncyB8PSBjLT5vYmplY3QuZmxhZ3M7CiAJCQlwYXJlbnRzID0gcGFyZW50cy0+bmV4dDsKKworCQkJaWYgKGZpcnN0X3BhcmVudCkKKwkJCQlicmVhazsKIAkJfQogCX0KIApAQCAtNDA0LDYgKzQxMSw3IEBACiAJCU9QVF9CT09MRUFOKDAsICJhbGwiLCAgICAgICAgJmFsbCwgTl8oInVzZSBhbnkgcmVmIikpLAogCQlPUFRfQk9PTEVBTigwLCAidGFncyIsICAgICAgICZ0YWdzLCBOXygidXNlIGFueSB0YWcsIGV2ZW4gdW5hbm5vdGF0ZWQiKSksCiAJCU9QVF9CT09MRUFOKDAsICJsb25nIiwgICAgICAgJmxvbmdmb3JtYXQsIE5fKCJhbHdheXMgdXNlIGxvbmcgZm9ybWF0IikpLAorCQlPUFRfQk9PTEVBTigwLCAiZmlyc3QtcGFyZW50IiwgJmZpcnN0X3BhcmVudCwgTl8oIm9ubHkgZm9sbG93IGZpcnN0IHBhcmVudCIpKSwKIAkJT1BUX19BQkJSRVYoJmFiYnJldiksCiAJCU9QVF9TRVRfSU5UKDAsICJleGFjdC1tYXRjaCIsICZtYXhfY2FuZGlkYXRlcywKIAkJCSAgICBOXygib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIpLCAwKSwKQEAgLTQzNSwyNCArNDQzLDI0IEBACiAJCWRpZShfKCItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIpKTsKIAogCWlmIChjb250YWlucykgewotCQljb25zdCBjaGFyICoqYXJncyA9IHhtYWxsb2MoKDcgKyBhcmdjKSAqIHNpemVvZihjaGFyICopKTsKLQkJaW50IGkgPSAwOwotCQlhcmdzW2krK10gPSAibmFtZS1yZXYiOwotCQlhcmdzW2krK10gPSAiLS1uYW1lLW9ubHkiOwotCQlhcmdzW2krK10gPSAiLS1uby11bmRlZmluZWQiOworCQlzdHJ1Y3QgYXJndl9hcnJheSBhcmdzOworCisJCWFyZ3ZfYXJyYXlfaW5pdCgmYXJncyk7CisJCWFyZ3ZfYXJyYXlfcHVzaGwoJmFyZ3MsICJuYW1lLXJldiIsCisJCQkJICItLXBlZWwtdGFnIiwgIi0tbmFtZS1vbmx5IiwgIi0tbm8tdW5kZWZpbmVkIiwKKwkJCQkgTlVMTCk7CiAJCWlmIChhbHdheXMpCi0JCQlhcmdzW2krK10gPSAiLS1hbHdheXMiOworCQkJYXJndl9hcnJheV9wdXNoKCZhcmdzLCAiLS1hbHdheXMiKTsKIAkJaWYgKCFhbGwpIHsKLQkJCWFyZ3NbaSsrXSA9ICItLXRhZ3MiOwotCQkJaWYgKHBhdHRlcm4pIHsKLQkJCQljaGFyICpzID0geG1hbGxvYyhzdHJsZW4oIi0tcmVmcz1yZWZzL3RhZ3MvIikgKyBzdHJsZW4ocGF0dGVybikgKyAxKTsKLQkJCQlzcHJpbnRmKHMsICItLXJlZnM9cmVmcy90YWdzLyVzIiwgcGF0dGVybik7Ci0JCQkJYXJnc1tpKytdID0gczsKLQkJCX0KKwkJCWFyZ3ZfYXJyYXlfcHVzaCgmYXJncywgIi0tdGFncyIpOworCQkJaWYgKHBhdHRlcm4pCisJCQkJYXJndl9hcnJheV9wdXNoZigmYXJncywgIi0tcmVmcz1yZWZzL3RhZ3MvJXMiLCBwYXR0ZXJuKTsKIAkJfQotCQltZW1jcHkoYXJncyArIGksIGFyZ3YsIGFyZ2MgKiBzaXplb2YoY2hhciAqKSk7Ci0JCWFyZ3NbaSArIGFyZ2NdID0gTlVMTDsKLQkJcmV0dXJuIGNtZF9uYW1lX3JldihpICsgYXJnYywgYXJncywgcHJlZml4KTsKKwkJd2hpbGUgKCphcmd2KSB7CisJCQlhcmd2X2FycmF5X3B1c2goJmFyZ3MsICphcmd2KTsKKwkJCWFyZ3YrKzsKKwkJfQorCQlyZXR1cm4gY21kX25hbWVfcmV2KGFyZ3MuYXJnYywgYXJncy5hcmd2LCBwcmVmaXgpOwogCX0KIAogCWluaXRfaGFzaCgmbmFtZXMpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9kaWZmLmMgYi9idWlsdGluL2RpZmYuYwppbmRleCA4YzJhZjZjLi45ZmMyNzNkIDEwMDY0NAotLS0gYS9idWlsdGluL2RpZmYuYworKysgYi9idWlsdGluL2RpZmYuYwpAQCAtMTUzLDcgKzE1Myw4IEBACiAKIHN0YXRpYyBpbnQgYnVpbHRpbl9kaWZmX3RyZWUoc3RydWN0IHJldl9pbmZvICpyZXZzLAogCQkJICAgICBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsCi0JCQkgICAgIHN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmVudCkKKwkJCSAgICAgc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqZW50MCwKKwkJCSAgICAgc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqZW50MSkKIHsKIAljb25zdCB1bnNpZ25lZCBjaGFyICooc2hhMVsyXSk7CiAJaW50IHN3YXAgPSAwOwpAQCAtMTYxLDEzICsxNjIsMTQgQEAKIAlpZiAoYXJnYyA+IDEpCiAJCXVzYWdlKGJ1aWx0aW5fZGlmZl91c2FnZSk7CiAKLQkvKiBXZSBzYXcgdHdvIHRyZWVzLCBlbnRbMF0gYW5kIGVudFsxXS4KLQkgKiBpZiBlbnRbMV0gaXMgdW5pbnRlcmVzdGluZywgdGhleSBhcmUgc3dhcHBlZAorCS8qCisJICogV2Ugc2F3IHR3byB0cmVlcywgZW50MCBhbmQgZW50MS4gIElmIGVudDEgaXMgdW5pbnRlcmVzdGluZywKKwkgKiBzd2FwIHRoZW0uCiAJICovCi0JaWYgKGVudFsxXS5pdGVtLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpCisJaWYgKGVudDEtPml0ZW0tPmZsYWdzICYgVU5JTlRFUkVTVElORykKIAkJc3dhcCA9IDE7Ci0Jc2hhMVtzd2FwXSA9IGVudFswXS5pdGVtLT5zaGExOwotCXNoYTFbMS1zd2FwXSA9IGVudFsxXS5pdGVtLT5zaGExOworCXNoYTFbc3dhcF0gPSBlbnQwLT5pdGVtLT5zaGExOworCXNoYTFbMS1zd2FwXSA9IGVudDEtPml0ZW0tPnNoYTE7CiAJZGlmZl90cmVlX3NoYTEoc2hhMVswXSwgc2hhMVsxXSwgIiIsICZyZXZzLT5kaWZmb3B0KTsKIAlsb2dfdHJlZV9kaWZmX2ZsdXNoKHJldnMpOwogCXJldHVybiAwOwpAQCAtMjUxLDggKzI1Myw4IEBACiB7CiAJaW50IGk7CiAJc3RydWN0IHJldl9pbmZvIHJldjsKLQlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5IGVudFsxMDBdOwotCWludCBlbnRzID0gMCwgYmxvYnMgPSAwLCBwYXRocyA9IDA7CisJc3RydWN0IG9iamVjdF9hcnJheSBlbnQgPSBPQkpFQ1RfQVJSQVlfSU5JVDsKKwlpbnQgYmxvYnMgPSAwLCBwYXRocyA9IDA7CiAJY29uc3QgY2hhciAqcGF0aCA9IE5VTEw7CiAJc3RydWN0IGJsb2JpbmZvIGJsb2JbMl07CiAJaW50IG5vbmdpdDsKQEAgLTMzNyw5ICszMzksOSBAQAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCByZXYucGVuZGluZy5ucjsgaSsrKSB7Ci0JCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKmxpc3QgPSByZXYucGVuZGluZy5vYmplY3RzK2k7Ci0JCXN0cnVjdCBvYmplY3QgKm9iaiA9IGxpc3QtPml0ZW07Ci0JCWNvbnN0IGNoYXIgKm5hbWUgPSBsaXN0LT5uYW1lOworCQlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICplbnRyeSA9ICZyZXYucGVuZGluZy5vYmplY3RzW2ldOworCQlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBlbnRyeS0+aXRlbTsKKwkJY29uc3QgY2hhciAqbmFtZSA9IGVudHJ5LT5uYW1lOwogCQlpbnQgZmxhZ3MgPSAob2JqLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpOwogCQlpZiAoIW9iai0+cGFyc2VkKQogCQkJb2JqID0gcGFyc2Vfb2JqZWN0KG9iai0+c2hhMSk7CkBAIC0zNDgsMjcgKzM1MCwyMSBAQAogCQkJZGllKF8oImludmFsaWQgb2JqZWN0ICclcycgZ2l2ZW4uIiksIG5hbWUpOwogCQlpZiAob2JqLT50eXBlID09IE9CSl9DT01NSVQpCiAJCQlvYmogPSAmKChzdHJ1Y3QgY29tbWl0ICopb2JqKS0+dHJlZS0+b2JqZWN0OworCiAJCWlmIChvYmotPnR5cGUgPT0gT0JKX1RSRUUpIHsKLQkJCWlmIChBUlJBWV9TSVpFKGVudCkgPD0gZW50cykKLQkJCQlkaWUoXygibW9yZSB0aGFuICVkIHRyZWVzIGdpdmVuOiAnJXMnIiksCi0JCQkJICAgIChpbnQpIEFSUkFZX1NJWkUoZW50KSwgbmFtZSk7CiAJCQlvYmotPmZsYWdzIHw9IGZsYWdzOwotCQkJZW50W2VudHNdLml0ZW0gPSBvYmo7Ci0JCQllbnRbZW50c10ubmFtZSA9IG5hbWU7Ci0JCQllbnRzKys7Ci0JCQljb250aW51ZTsKLQkJfQotCQlpZiAob2JqLT50eXBlID09IE9CSl9CTE9CKSB7CisJCQlhZGRfb2JqZWN0X2FycmF5KG9iaiwgbmFtZSwgJmVudCk7CisJCX0gZWxzZSBpZiAob2JqLT50eXBlID09IE9CSl9CTE9CKSB7CiAJCQlpZiAoMiA8PSBibG9icykKIAkJCQlkaWUoXygibW9yZSB0aGFuIHR3byBibG9icyBnaXZlbjogJyVzJyIpLCBuYW1lKTsKIAkJCWhhc2hjcHkoYmxvYltibG9ic10uc2hhMSwgb2JqLT5zaGExKTsKIAkJCWJsb2JbYmxvYnNdLm5hbWUgPSBuYW1lOwotCQkJYmxvYltibG9ic10ubW9kZSA9IGxpc3QtPm1vZGU7CisJCQlibG9iW2Jsb2JzXS5tb2RlID0gZW50cnktPm1vZGU7CiAJCQlibG9icysrOwotCQkJY29udGludWU7CiAKKwkJfSBlbHNlIHsKKwkJCWRpZShfKCJ1bmhhbmRsZWQgb2JqZWN0ICclcycgZ2l2ZW4uIiksIG5hbWUpOwogCQl9Ci0JCWRpZShfKCJ1bmhhbmRsZWQgb2JqZWN0ICclcycgZ2l2ZW4uIiksIG5hbWUpOwogCX0KIAlpZiAocmV2LnBydW5lX2RhdGEubnIpIHsKIAkJaWYgKCFwYXRoKQpAQCAtMzc5LDcgKzM3NSw3IEBACiAJLyoKIAkgKiBOb3csIGRvIHRoZSBhcmd1bWVudHMgbG9vayByZWFzb25hYmxlPwogCSAqLwotCWlmICghZW50cykgeworCWlmICghZW50Lm5yKSB7CiAJCXN3aXRjaCAoYmxvYnMpIHsKIAkJY2FzZSAwOgogCQkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX2ZpbGVzKCZyZXYsIGFyZ2MsIGFyZ3YpOwpAQCAtNDAwLDIzICszOTYsMjYgQEAKIAl9CiAJZWxzZSBpZiAoYmxvYnMpCiAJCXVzYWdlKGJ1aWx0aW5fZGlmZl91c2FnZSk7Ci0JZWxzZSBpZiAoZW50cyA9PSAxKQorCWVsc2UgaWYgKGVudC5uciA9PSAxKQogCQlyZXN1bHQgPSBidWlsdGluX2RpZmZfaW5kZXgoJnJldiwgYXJnYywgYXJndik7Ci0JZWxzZSBpZiAoZW50cyA9PSAyKQotCQlyZXN1bHQgPSBidWlsdGluX2RpZmZfdHJlZSgmcmV2LCBhcmdjLCBhcmd2LCBlbnQpOwotCWVsc2UgaWYgKGVudFswXS5pdGVtLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpIHsKKwllbHNlIGlmIChlbnQubnIgPT0gMikKKwkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX3RyZWUoJnJldiwgYXJnYywgYXJndiwKKwkJCQkJICAgJmVudC5vYmplY3RzWzBdLCAmZW50Lm9iamVjdHNbMV0pOworCWVsc2UgaWYgKGVudC5vYmplY3RzWzBdLml0ZW0tPmZsYWdzICYgVU5JTlRFUkVTVElORykgewogCQkvKgogCQkgKiBkaWZmIEEuLi5CIHdoZXJlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBtZXJnZSBiYXNlCi0JCSAqIGJldHdlZW4gQSBhbmQgQi4gIFdlIGhhdmUgZW50WzBdID09IG1lcmdlLWJhc2UsCi0JCSAqIGVudFtlbnRzLTJdID09IEEsIGFuZCBlbnRbZW50cy0xXSA9PSBCLiAgU2hvdyBkaWZmCi0JCSAqIGJldHdlZW4gdGhlIGJhc2UgYW5kIEIuICBOb3RlIHRoYXQgd2UgcGljayBvbmUKLQkJICogbWVyZ2UgYmFzZSBhdCByYW5kb20gaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUuCisJCSAqIGJldHdlZW4gQSBhbmQgQi4gIFdlIGhhdmUgZW50Lm9iamVjdHNbMF0gPT0KKwkJICogbWVyZ2UtYmFzZSwgZW50Lm9iamVjdHNbZW50cy0yXSA9PSBBLCBhbmQKKwkJICogZW50Lm9iamVjdHNbZW50cy0xXSA9PSBCLiAgU2hvdyBkaWZmIGJldHdlZW4gdGhlCisJCSAqIGJhc2UgYW5kIEIuICBOb3RlIHRoYXQgd2UgcGljayBvbmUgbWVyZ2UgYmFzZSBhdAorCQkgKiByYW5kb20gaWYgdGhlcmUgYXJlIG1vcmUgdGhhbiBvbmUuCiAJCSAqLwotCQllbnRbMV0gPSBlbnRbZW50cy0xXTsKLQkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX3RyZWUoJnJldiwgYXJnYywgYXJndiwgZW50KTsKKwkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX3RyZWUoJnJldiwgYXJnYywgYXJndiwKKwkJCQkJICAgJmVudC5vYmplY3RzWzBdLAorCQkJCQkgICAmZW50Lm9iamVjdHNbZW50Lm5yLTFdKTsKIAl9IGVsc2UKIAkJcmVzdWx0ID0gYnVpbHRpbl9kaWZmX2NvbWJpbmVkKCZyZXYsIGFyZ2MsIGFyZ3YsCi0JCQkJCSAgICAgICBlbnQsIGVudHMpOworCQkJCQkgICAgICAgZW50Lm9iamVjdHMsIGVudC5ucik7CiAJcmVzdWx0ID0gZGlmZl9yZXN1bHRfY29kZSgmcmV2LmRpZmZvcHQsIHJlc3VsdCk7CiAJaWYgKDEgPCByZXYuZGlmZm9wdC5za2lwX3N0YXRfdW5tYXRjaCkKIAkJcmVmcmVzaF9pbmRleF9xdWlldGx5KCk7CmRpZmYgLS1naXQgYS9idWlsdGluL2Zhc3QtZXhwb3J0LmMgYi9idWlsdGluL2Zhc3QtZXhwb3J0LmMKaW5kZXggZDYwZDY3NS4uOGUxOTA1OCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9mYXN0LWV4cG9ydC5jCisrKyBiL2J1aWx0aW4vZmFzdC1leHBvcnQuYwpAQCAtMzc5LDcgKzM3OSw3IEBACiAJaW50IHRhZ2dlZF9tYXJrOwogCXN0cnVjdCBjb21taXQgKnA7CiAKLQkvKiBUcmVlcyBoYXZlIG5vIGlkZW50aWZlciBpbiBmYXN0LWV4cG9ydCBvdXRwdXQsIHRodXMgd2UgaGF2ZSBubyB3YXkKKwkvKiBUcmVlcyBoYXZlIG5vIGlkZW50aWZpZXIgaW4gZmFzdC1leHBvcnQgb3V0cHV0LCB0aHVzIHdlIGhhdmUgbm8gd2F5CiAJICogdG8gb3V0cHV0IHRhZ3Mgb2YgdHJlZXMsIHRhZ3Mgb2YgdGFncyBvZiB0cmVlcywgZXRjLiAgU2ltcGx5IG9taXQKIAkgKiBzdWNoIHRhZ3MuCiAJICovCkBAIC02MTMsNiArNjEzLDggQEAKIAkJY2hhciAqbGluZV9lbmQsICptYXJrX2VuZDsKIAkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKIAkJc3RydWN0IG9iamVjdCAqb2JqZWN0OworCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKIAogCQlsaW5lX2VuZCA9IHN0cmNocihsaW5lLCAnXG4nKTsKIAkJaWYgKGxpbmVbMF0gIT0gJzonIHx8ICFsaW5lX2VuZCkKQEAgLTYyMSwyMyArNjIzLDI5IEBACiAKIAkJbWFyayA9IHN0cnRvdW1heChsaW5lICsgMSwgJm1hcmtfZW5kLCAxMCk7CiAJCWlmICghbWFyayB8fCBtYXJrX2VuZCA9PSBsaW5lICsgMQotCQkJfHwgKm1hcmtfZW5kICE9ICcgJyB8fCBnZXRfc2hhMShtYXJrX2VuZCArIDEsIHNoYTEpKQorCQkJfHwgKm1hcmtfZW5kICE9ICcgJyB8fCBnZXRfc2hhMV9oZXgobWFya19lbmQgKyAxLCBzaGExKSkKIAkJCWRpZSgiY29ycnVwdCBtYXJrIGxpbmU6ICVzIiwgbGluZSk7CiAKIAkJaWYgKGxhc3RfaWRudW0gPCBtYXJrKQogCQkJbGFzdF9pZG51bSA9IG1hcms7CiAKLQkJb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KHNoYTEpOwotCQlpZiAoIW9iamVjdCkKKwkJdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8oc2hhMSwgTlVMTCk7CisJCWlmICh0eXBlIDwgMCkKKwkJCWRpZSgib2JqZWN0IG5vdCBmb3VuZDogJXMiLCBzaGExX3RvX2hleChzaGExKSk7CisKKwkJaWYgKHR5cGUgIT0gT0JKX0NPTU1JVCkKKwkJCS8qIG9ubHkgY29tbWl0cyAqLwogCQkJY29udGludWU7CiAKKwkJY29tbWl0ID0gbG9va3VwX2NvbW1pdChzaGExKTsKKwkJaWYgKCFjb21taXQpCisJCQlkaWUoIm5vdCBhIGNvbW1pdD8gY2FuJ3QgaGFwcGVuOiAlcyIsIHNoYTFfdG9faGV4KHNoYTEpKTsKKworCQlvYmplY3QgPSAmY29tbWl0LT5vYmplY3Q7CisKIAkJaWYgKG9iamVjdC0+ZmxhZ3MgJiBTSE9XTikKIAkJCWVycm9yKCJPYmplY3QgJXMgYWxyZWFkeSBoYXMgYSBtYXJrIiwgc2hhMV90b19oZXgoc2hhMSkpOwogCi0JCWlmIChvYmplY3QtPnR5cGUgIT0gT0JKX0NPTU1JVCkKLQkJCS8qIG9ubHkgY29tbWl0cyAqLwotCQkJY29udGludWU7Ci0KIAkJbWFya19vYmplY3Qob2JqZWN0LCBtYXJrKTsKIAogCQlvYmplY3QtPmZsYWdzIHw9IFNIT1dOOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mZXRjaC5jIGIvYnVpbHRpbi9mZXRjaC5jCmluZGV4IDRiNmIxZGYuLmQ3ODRiMmUgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZmV0Y2guYworKysgYi9idWlsdGluL2ZldGNoLmMKQEAgLTExOSw3ICsxMTksNyBAQAogCiAJCWZvciAocm0gPSAqaGVhZDsgcm07IHJtID0gcm0tPm5leHQpIHsKIAkJCWlmIChicmFuY2hfbWVyZ2VfbWF0Y2hlcyhicmFuY2gsIGksIHJtLT5uYW1lKSkgewotCQkJCXJtLT5tZXJnZSA9IDE7CisJCQkJcm0tPmZldGNoX2hlYWRfc3RhdHVzID0gRkVUQ0hfSEVBRF9NRVJHRTsKIAkJCQlicmVhazsKIAkJCX0KIAkJfQpAQCAtMTQwLDcgKzE0MCw3IEBACiAJCXJlZnNwZWMuc3JjID0gYnJhbmNoLT5tZXJnZVtpXS0+c3JjOwogCQlnZXRfZmV0Y2hfbWFwKHJlbW90ZV9yZWZzLCAmcmVmc3BlYywgdGFpbCwgMSk7CiAJCWZvciAocm0gPSAqb2xkX3RhaWw7IHJtOyBybSA9IHJtLT5uZXh0KQotCQkJcm0tPm1lcmdlID0gMTsKKwkJCXJtLT5mZXRjaF9oZWFkX3N0YXR1cyA9IEZFVENIX0hFQURfTUVSR0U7CiAJfQogfQogCkBAIC0xNjAsNiArMTYwLDggQEAKIAljb25zdCBzdHJ1Y3QgcmVmICpyZW1vdGVfcmVmcyA9IHRyYW5zcG9ydF9nZXRfcmVtb3RlX3JlZnModHJhbnNwb3J0KTsKIAogCWlmIChyZWZfY291bnQgfHwgdGFncyA9PSBUQUdTX1NFVCkgeworCQlzdHJ1Y3QgcmVmICoqb2xkX3RhaWw7CisKIAkJZm9yIChpID0gMDsgaSA8IHJlZl9jb3VudDsgaSsrKSB7CiAJCQlnZXRfZmV0Y2hfbWFwKHJlbW90ZV9yZWZzLCAmcmVmc1tpXSwgJnRhaWwsIDApOwogCQkJaWYgKHJlZnNbaV0uZHN0ICYmIHJlZnNbaV0uZHN0WzBdKQpAQCAtMTY3LDkgKzE2OSwyMyBAQAogCQl9CiAJCS8qIE1lcmdlIGV2ZXJ5dGhpbmcgb24gdGhlIGNvbW1hbmQgbGluZSwgYnV0IG5vdCAtLXRhZ3MgKi8KIAkJZm9yIChybSA9IHJlZl9tYXA7IHJtOyBybSA9IHJtLT5uZXh0KQotCQkJcm0tPm1lcmdlID0gMTsKKwkJCXJtLT5mZXRjaF9oZWFkX3N0YXR1cyA9IEZFVENIX0hFQURfTUVSR0U7CiAJCWlmICh0YWdzID09IFRBR1NfU0VUKQogCQkJZ2V0X2ZldGNoX21hcChyZW1vdGVfcmVmcywgdGFnX3JlZnNwZWMsICZ0YWlsLCAwKTsKKworCQkvKgorCQkgKiBGb3IgYW55IHJlZnMgdGhhdCB3ZSBoYXBwZW4gdG8gYmUgZmV0Y2hpbmcgdmlhIGNvbW1hbmQtbGluZQorCQkgKiBhcmd1bWVudHMsIHRha2UgdGhlIG9wcG9ydHVuaXR5IHRvIHVwZGF0ZSB0aGVpciBjb25maWd1cmVkCisJCSAqIGNvdW50ZXJwYXJ0cy4gSG93ZXZlciwgd2UgZG8gbm90IHdhbnQgdG8gbWVudGlvbiB0aGVzZQorCQkgKiBlbnRyaWVzIGluIEZFVENIX0hFQUQgYXQgYWxsLCBhcyB0aGV5IHdvdWxkIHNpbXBseSBiZQorCQkgKiBkdXBsaWNhdGVzIG9mIGV4aXN0aW5nIGVudHJpZXMuCisJCSAqLworCQlvbGRfdGFpbCA9IHRhaWw7CisJCWZvciAoaSA9IDA7IGkgPCB0cmFuc3BvcnQtPnJlbW90ZS0+ZmV0Y2hfcmVmc3BlY19ucjsgaSsrKQorCQkJZ2V0X2ZldGNoX21hcChyZWZfbWFwLCAmdHJhbnNwb3J0LT5yZW1vdGUtPmZldGNoW2ldLAorCQkJCSAgICAgICZ0YWlsLCAxKTsKKwkJZm9yIChybSA9ICpvbGRfdGFpbDsgcm07IHJtID0gcm0tPm5leHQpCisJCQlybS0+ZmV0Y2hfaGVhZF9zdGF0dXMgPSBGRVRDSF9IRUFEX0lHTk9SRTsKIAl9IGVsc2UgewogCQkvKiBVc2UgdGhlIGRlZmF1bHRzICovCiAJCXN0cnVjdCByZW1vdGUgKnJlbW90ZSA9IHRyYW5zcG9ydC0+cmVtb3RlOwpAQCAtMTg2LDcgKzIwMiw3IEBACiAJCQkJCSphdXRvdGFncyA9IDE7CiAJCQkJaWYgKCFpICYmICFoYXNfbWVyZ2UgJiYgcmVmX21hcCAmJgogCQkJCSAgICAhcmVtb3RlLT5mZXRjaFswXS5wYXR0ZXJuKQotCQkJCQlyZWZfbWFwLT5tZXJnZSA9IDE7CisJCQkJCXJlZl9tYXAtPmZldGNoX2hlYWRfc3RhdHVzID0gRkVUQ0hfSEVBRF9NRVJHRTsKIAkJCX0KIAkJCS8qCiAJCQkgKiBpZiB0aGUgcmVtb3RlIHdlJ3JlIGZldGNoaW5nIGZyb20gaXMgdGhlIHNhbWUKQEAgLTIwMiw3ICsyMTgsNyBAQAogCQkJcmVmX21hcCA9IGdldF9yZW1vdGVfcmVmKHJlbW90ZV9yZWZzLCAiSEVBRCIpOwogCQkJaWYgKCFyZWZfbWFwKQogCQkJCWRpZShfKCJDb3VsZG4ndCBmaW5kIHJlbW90ZSByZWYgSEVBRCIpKTsKLQkJCXJlZl9tYXAtPm1lcmdlID0gMTsKKwkJCXJlZl9tYXAtPmZldGNoX2hlYWRfc3RhdHVzID0gRkVUQ0hfSEVBRF9NRVJHRTsKIAkJCXRhaWwgPSAmcmVmX21hcC0+bmV4dDsKIAkJfQogCX0KQEAgLTM4OSw3ICs0MDUsNyBAQAogCWNvbnN0IGNoYXIgKndoYXQsICpraW5kOwogCXN0cnVjdCByZWYgKnJtOwogCWNoYXIgKnVybCwgKmZpbGVuYW1lID0gZHJ5X3J1biA/ICIvZGV2L251bGwiIDogZ2l0X3BhdGgoIkZFVENIX0hFQUQiKTsKLQlpbnQgd2FudF9tZXJnZTsKKwlpbnQgd2FudF9zdGF0dXM7CiAKIAlmcCA9IGZvcGVuKGZpbGVuYW1lLCAiYSIpOwogCWlmICghZnApCkBAIC00MDcsMTkgKzQyMywyMiBAQAogCX0KIAogCS8qCi0JICogVGhlIGZpcnN0IHBhc3Mgd3JpdGVzIG9iamVjdHMgdG8gYmUgbWVyZ2VkIGFuZCB0aGVuIHRoZQotCSAqIHNlY29uZCBwYXNzIHdyaXRlcyB0aGUgcmVzdCwgaW4gb3JkZXIgdG8gYWxsb3cgdXNpbmcKLQkgKiBGRVRDSF9IRUFEIGFzIGEgcmVmbmFtZSB0byByZWZlciB0byB0aGUgcmVmIHRvIGJlIG1lcmdlZC4KKwkgKiBXZSBkbyBhIHBhc3MgZm9yIGVhY2ggZmV0Y2hfaGVhZF9zdGF0dXMgdHlwZSBpbiB0aGVpciBlbnVtIG9yZGVyLCBzbworCSAqIG1lcmdlZCBlbnRyaWVzIGFyZSB3cml0dGVuIGJlZm9yZSBub3QtZm9yLW1lcmdlLiBUaGF0IGxldHMgcmVhZGVycworCSAqIHVzZSBGRVRDSF9IRUFEIGFzIGEgcmVmbmFtZSB0byByZWZlciB0byB0aGUgcmVmIHRvIGJlIG1lcmdlZC4KIAkgKi8KLQlmb3IgKHdhbnRfbWVyZ2UgPSAxOyAwIDw9IHdhbnRfbWVyZ2U7IHdhbnRfbWVyZ2UtLSkgeworCWZvciAod2FudF9zdGF0dXMgPSBGRVRDSF9IRUFEX01FUkdFOworCSAgICAgd2FudF9zdGF0dXMgPD0gRkVUQ0hfSEVBRF9JR05PUkU7CisJICAgICB3YW50X3N0YXR1cysrKSB7CiAJCWZvciAocm0gPSByZWZfbWFwOyBybTsgcm0gPSBybS0+bmV4dCkgewogCQkJc3RydWN0IHJlZiAqcmVmID0gTlVMTDsKKwkJCWNvbnN0IGNoYXIgKm1lcmdlX3N0YXR1c19tYXJrZXIgPSAiIjsKIAogCQkJY29tbWl0ID0gbG9va3VwX2NvbW1pdF9yZWZlcmVuY2VfZ2VudGx5KHJtLT5vbGRfc2hhMSwgMSk7CiAJCQlpZiAoIWNvbW1pdCkKLQkJCQlybS0+bWVyZ2UgPSAwOworCQkJCXJtLT5mZXRjaF9oZWFkX3N0YXR1cyA9IEZFVENIX0hFQURfTk9UX0ZPUl9NRVJHRTsKIAotCQkJaWYgKHJtLT5tZXJnZSAhPSB3YW50X21lcmdlKQorCQkJaWYgKHJtLT5mZXRjaF9oZWFkX3N0YXR1cyAhPSB3YW50X3N0YXR1cykKIAkJCQljb250aW51ZTsKIAogCQkJaWYgKHJtLT5wZWVyX3JlZikgewpAQCAtNDY1LDE2ICs0ODQsMjYgQEAKIAkJCQkJc3RyYnVmX2FkZGYoJm5vdGUsICIlcyAiLCBraW5kKTsKIAkJCQlzdHJidWZfYWRkZigmbm90ZSwgIiclcycgb2YgIiwgd2hhdCk7CiAJCQl9Ci0JCQlmcHJpbnRmKGZwLCAiJXNcdCVzXHQlcyIsCi0JCQkJc2hhMV90b19oZXgocm0tPm9sZF9zaGExKSwKLQkJCQlybS0+bWVyZ2UgPyAiIiA6ICJub3QtZm9yLW1lcmdlIiwKLQkJCQlub3RlLmJ1Zik7Ci0JCQlmb3IgKGkgPSAwOyBpIDwgdXJsX2xlbjsgKytpKQotCQkJCWlmICgnXG4nID09IHVybFtpXSkKLQkJCQkJZnB1dHMoIlxcbiIsIGZwKTsKLQkJCQllbHNlCi0JCQkJCWZwdXRjKHVybFtpXSwgZnApOwotCQkJZnB1dGMoJ1xuJywgZnApOworCQkJc3dpdGNoIChybS0+ZmV0Y2hfaGVhZF9zdGF0dXMpIHsKKwkJCWNhc2UgRkVUQ0hfSEVBRF9OT1RfRk9SX01FUkdFOgorCQkJCW1lcmdlX3N0YXR1c19tYXJrZXIgPSAibm90LWZvci1tZXJnZSI7CisJCQkJLyogZmFsbC10aHJvdWdoICovCisJCQljYXNlIEZFVENIX0hFQURfTUVSR0U6CisJCQkJZnByaW50ZihmcCwgIiVzXHQlc1x0JXMiLAorCQkJCQlzaGExX3RvX2hleChybS0+b2xkX3NoYTEpLAorCQkJCQltZXJnZV9zdGF0dXNfbWFya2VyLAorCQkJCQlub3RlLmJ1Zik7CisJCQkJZm9yIChpID0gMDsgaSA8IHVybF9sZW47ICsraSkKKwkJCQkJaWYgKCdcbicgPT0gdXJsW2ldKQorCQkJCQkJZnB1dHMoIlxcbiIsIGZwKTsKKwkJCQkJZWxzZQorCQkJCQkJZnB1dGModXJsW2ldLCBmcCk7CisJCQkJZnB1dGMoJ1xuJywgZnApOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQkvKiBkbyBub3Qgd3JpdGUgYW55dGhpbmcgdG8gRkVUQ0hfSEVBRCAqLworCQkJCWJyZWFrOworCQkJfQogCiAJCQlzdHJidWZfcmVzZXQoJm5vdGUpOwogCQkJaWYgKHJlZikgewpAQCAtNTcxLDcgKzYwMCw4IEBACiB7CiAJc3RydWN0IHN0cmluZ19saXN0ICpsaXN0ID0gKHN0cnVjdCBzdHJpbmdfbGlzdCAqKWNiZGF0YTsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbSA9IHN0cmluZ19saXN0X2luc2VydChsaXN0LCByZWZuYW1lKTsKLQlpdGVtLT51dGlsID0gKHZvaWQgKilzaGExOworCWl0ZW0tPnV0aWwgPSB4bWFsbG9jKDIwKTsKKwloYXNoY3B5KGl0ZW0tPnV0aWwsIHNoYTEpOwogCXJldHVybiAwOwogfQogCkBAIC01OTAsNyArNjIwLDcgQEAKIAkJCXN0cnVjdCByZWYgKipoZWFkLAogCQkJc3RydWN0IHJlZiAqKip0YWlsKQogewotCXN0cnVjdCBzdHJpbmdfbGlzdCBleGlzdGluZ19yZWZzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZXhpc3RpbmdfcmVmcyA9IFNUUklOR19MSVNUX0lOSVRfRFVQOwogCXN0cnVjdCBzdHJpbmdfbGlzdCByZW1vdGVfcmVmcyA9IFNUUklOR19MSVNUX0lOSVRfTk9EVVA7CiAJY29uc3Qgc3RydWN0IHJlZiAqcmVmOwogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtID0gTlVMTDsKQEAgLTYzNiw3ICs2NjYsNyBAQAogCQlpdGVtID0gc3RyaW5nX2xpc3RfaW5zZXJ0KCZyZW1vdGVfcmVmcywgcmVmLT5uYW1lKTsKIAkJaXRlbS0+dXRpbCA9ICh2b2lkICopcmVmLT5vbGRfc2hhMTsKIAl9Ci0Jc3RyaW5nX2xpc3RfY2xlYXIoJmV4aXN0aW5nX3JlZnMsIDApOworCXN0cmluZ19saXN0X2NsZWFyKCZleGlzdGluZ19yZWZzLCAxKTsKIAogCS8qCiAJICogV2UgbWF5IGhhdmUgYSBmaW5hbCBsaWdodHdlaWdodCB0YWcgdGhhdCBuZWVkcyB0byBiZQpAQCAtNjkzLDExICs3MjMsMTEgQEAKIHN0YXRpYyBpbnQgZG9fZmV0Y2goc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0LAogCQkgICAgc3RydWN0IHJlZnNwZWMgKnJlZnMsIGludCByZWZfY291bnQpCiB7Ci0Jc3RydWN0IHN0cmluZ19saXN0IGV4aXN0aW5nX3JlZnMgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwotCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpwZWVyX2l0ZW0gPSBOVUxMOworCXN0cnVjdCBzdHJpbmdfbGlzdCBleGlzdGluZ19yZWZzID0gU1RSSU5HX0xJU1RfSU5JVF9EVVA7CiAJc3RydWN0IHJlZiAqcmVmX21hcDsKIAlzdHJ1Y3QgcmVmICpybTsKIAlpbnQgYXV0b3RhZ3MgPSAodHJhbnNwb3J0LT5yZW1vdGUtPmZldGNoX3RhZ3MgPT0gMSk7CisJaW50IHJldGNvZGUgPSAwOwogCiAJZm9yX2VhY2hfcmVmKGFkZF9leGlzdGluZywgJmV4aXN0aW5nX3JlZnMpOwogCkBAIC03MTMsOSArNzQzLDkgQEAKIAogCS8qIGlmIG5vdCBhcHBlbmRpbmcsIHRydW5jYXRlIEZFVENIX0hFQUQgKi8KIAlpZiAoIWFwcGVuZCAmJiAhZHJ5X3J1bikgewotCQlpbnQgZXJyY29kZSA9IHRydW5jYXRlX2ZldGNoX2hlYWQoKTsKLQkJaWYgKGVycmNvZGUpCi0JCQlyZXR1cm4gZXJyY29kZTsKKwkJcmV0Y29kZSA9IHRydW5jYXRlX2ZldGNoX2hlYWQoKTsKKwkJaWYgKHJldGNvZGUpCisJCQlnb3RvIGNsZWFudXA7CiAJfQogCiAJcmVmX21hcCA9IGdldF9yZWZfbWFwKHRyYW5zcG9ydCwgcmVmcywgcmVmX2NvdW50LCB0YWdzLCAmYXV0b3RhZ3MpOwpAQCAtNzI0LDggKzc1NCw5IEBACiAKIAlmb3IgKHJtID0gcmVmX21hcDsgcm07IHJtID0gcm0tPm5leHQpIHsKIAkJaWYgKHJtLT5wZWVyX3JlZikgewotCQkJcGVlcl9pdGVtID0gc3RyaW5nX2xpc3RfbG9va3VwKCZleGlzdGluZ19yZWZzLAotCQkJCQkJICAgICAgIHJtLT5wZWVyX3JlZi0+bmFtZSk7CisJCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqcGVlcl9pdGVtID0KKwkJCQlzdHJpbmdfbGlzdF9sb29rdXAoJmV4aXN0aW5nX3JlZnMsCisJCQkJCQkgICBybS0+cGVlcl9yZWYtPm5hbWUpOwogCQkJaWYgKHBlZXJfaXRlbSkKIAkJCQloYXNoY3B5KHJtLT5wZWVyX3JlZi0+b2xkX3NoYTEsCiAJCQkJCXBlZXJfaXRlbS0+dXRpbCk7CkBAIC03MzYsNyArNzY3LDggQEAKIAkJdHJhbnNwb3J0X3NldF9vcHRpb24odHJhbnNwb3J0LCBUUkFOU19PUFRfRk9MTE9XVEFHUywgIjEiKTsKIAlpZiAoZmV0Y2hfcmVmcyh0cmFuc3BvcnQsIHJlZl9tYXApKSB7CiAJCWZyZWVfcmVmcyhyZWZfbWFwKTsKLQkJcmV0dXJuIDE7CisJCXJldGNvZGUgPSAxOworCQlnb3RvIGNsZWFudXA7CiAJfQogCWlmIChwcnVuZSkgewogCQkvKiBJZiAtLXRhZ3Mgd2FzIHNwZWNpZmllZCwgcHJldGVuZCB0aGUgdXNlciBnYXZlIHVzIHRoZSBjYW5vbmljYWwgdGFncyByZWZzcGVjICovCkBAIC03NzksNyArODExLDkgQEAKIAkJZnJlZV9yZWZzKHJlZl9tYXApOwogCX0KIAotCXJldHVybiAwOworIGNsZWFudXA6CisJc3RyaW5nX2xpc3RfY2xlYXIoJmV4aXN0aW5nX3JlZnMsIDEpOworCXJldHVybiByZXRjb2RlOwogfQogCiBzdGF0aWMgdm9pZCBzZXRfb3B0aW9uKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mc2NrLmMgYi9idWlsdGluL2ZzY2suYwppbmRleCBiYjlhMmNkLi45OTA5YjZkIDEwMDY0NAotLS0gYS9idWlsdGluL2ZzY2suYworKysgYi9idWlsdGluL2ZzY2suYwpAQCAtMTEyLDcgKzExMiw3IEBACiAJCXJldHVybiAxOwogCX0KIAotCWFkZF9vYmplY3RfYXJyYXkob2JqLCAodm9pZCAqKSBwYXJlbnQsICZwZW5kaW5nKTsKKwlhZGRfb2JqZWN0X2FycmF5KG9iaiwgTlVMTCwgJnBlbmRpbmcpOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9idWlsdGluL2dyZXAuYyBiL2J1aWx0aW4vZ3JlcC5jCmluZGV4IDE1OWU2NWQuLmQzYjNiMWQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZ3JlcC5jCisrKyBiL2J1aWx0aW4vZ3JlcC5jCkBAIC0yODYsOCArMjg2LDcgQEAKIAlzdHJ1Y3Qgc3RyYnVmIHBhdGhidWYgPSBTVFJCVUZfSU5JVDsKIAogCWlmIChvcHQtPnJlbGF0aXZlICYmIG9wdC0+cHJlZml4X2xlbmd0aCkgewotCQlxdW90ZV9wYXRoX3JlbGF0aXZlKGZpbGVuYW1lICsgdHJlZV9uYW1lX2xlbiwgLTEsICZwYXRoYnVmLAotCQkJCSAgICBvcHQtPnByZWZpeCk7CisJCXF1b3RlX3BhdGhfcmVsYXRpdmUoZmlsZW5hbWUgKyB0cmVlX25hbWVfbGVuLCBvcHQtPnByZWZpeCwgJnBhdGhidWYpOwogCQlzdHJidWZfaW5zZXJ0KCZwYXRoYnVmLCAwLCBmaWxlbmFtZSwgdHJlZV9uYW1lX2xlbik7CiAJfSBlbHNlIHsKIAkJc3RyYnVmX2FkZHN0cigmcGF0aGJ1ZiwgZmlsZW5hbWUpOwpAQCAtMzE4LDcgKzMxNyw3IEBACiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAogCWlmIChvcHQtPnJlbGF0aXZlICYmIG9wdC0+cHJlZml4X2xlbmd0aCkKLQkJcXVvdGVfcGF0aF9yZWxhdGl2ZShmaWxlbmFtZSwgLTEsICZidWYsIG9wdC0+cHJlZml4KTsKKwkJcXVvdGVfcGF0aF9yZWxhdGl2ZShmaWxlbmFtZSwgb3B0LT5wcmVmaXgsICZidWYpOwogCWVsc2UKIAkJc3RyYnVmX2FkZHN0cigmYnVmLCBmaWxlbmFtZSk7CiAKQEAgLTM3Niw3ICszNzUsNyBAQAogCXJlYWRfY2FjaGUoKTsKIAogCWZvciAobnIgPSAwOyBuciA8IGFjdGl2ZV9ucjsgbnIrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW25yXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtucl07CiAJCWlmICghU19JU1JFRyhjZS0+Y2VfbW9kZSkpCiAJCQljb250aW51ZTsKIAkJaWYgKCFtYXRjaF9wYXRoc3BlY19kZXB0aChwYXRoc3BlYywgY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpLCAwLCBOVUxMKSkKZGlmZiAtLWdpdCBhL2J1aWx0aW4vaW5kZXgtcGFjay5jIGIvYnVpbHRpbi9pbmRleC1wYWNrLmMKaW5kZXggNzlkZmU0Ny4uOWMxY2ZhYyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9pbmRleC1wYWNrLmMKKysrIGIvYnVpbHRpbi9pbmRleC1wYWNrLmMKQEAgLTc3LDggKzc3LDEwIEBACiAKIHN0YXRpYyBpbnQgZnJvbV9zdGRpbjsKIHN0YXRpYyBpbnQgc3RyaWN0Oworc3RhdGljIGludCBkb19mc2NrX29iamVjdDsKIHN0YXRpYyBpbnQgdmVyYm9zZTsKIHN0YXRpYyBpbnQgc2hvd19zdGF0Oworc3RhdGljIGludCBjaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkOwogCiBzdGF0aWMgc3RydWN0IHByb2dyZXNzICpwcm9ncmVzczsKIApAQCAtMTg3LDEzICsxODksMTMgQEAKIAogLyogVGhlIGNvbnRlbnQgb2YgZWFjaCBsaW5rZWQgb2JqZWN0IG11c3QgaGF2ZSBiZWVuIGNoZWNrZWQKICAgIG9yIGl0IG11c3QgYmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBvYmplY3QgZGF0YWJhc2UgKi8KLXN0YXRpYyB2b2lkIGNoZWNrX29iamVjdChzdHJ1Y3Qgb2JqZWN0ICpvYmopCitzdGF0aWMgdW5zaWduZWQgY2hlY2tfb2JqZWN0KHN0cnVjdCBvYmplY3QgKm9iaikKIHsKIAlpZiAoIW9iaikKLQkJcmV0dXJuOworCQlyZXR1cm4gMDsKIAogCWlmICghKG9iai0+ZmxhZ3MgJiBGTEFHX0xJTkspKQotCQlyZXR1cm47CisJCXJldHVybiAwOwogCiAJaWYgKCEob2JqLT5mbGFncyAmIEZMQUdfQ0hFQ0tFRCkpIHsKIAkJdW5zaWduZWQgbG9uZyBzaXplOwpAQCAtMjAxLDE3ICsyMDMsMjAgQEAKIAkJaWYgKHR5cGUgIT0gb2JqLT50eXBlIHx8IHR5cGUgPD0gMCkKIAkJCWRpZShfKCJvYmplY3Qgb2YgdW5leHBlY3RlZCB0eXBlIikpOwogCQlvYmotPmZsYWdzIHw9IEZMQUdfQ0hFQ0tFRDsKLQkJcmV0dXJuOworCQlyZXR1cm4gMTsKIAl9CisKKwlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHZvaWQgY2hlY2tfb2JqZWN0cyh2b2lkKQorc3RhdGljIHVuc2lnbmVkIGNoZWNrX29iamVjdHModm9pZCkKIHsKLQl1bnNpZ25lZCBpLCBtYXg7CisJdW5zaWduZWQgaSwgbWF4LCBmb3JlaWduX25yID0gMDsKIAogCW1heCA9IGdldF9tYXhfb2JqZWN0X2luZGV4KCk7CiAJZm9yIChpID0gMDsgaSA8IG1heDsgaSsrKQotCQljaGVja19vYmplY3QoZ2V0X2luZGV4ZWRfb2JqZWN0KGkpKTsKKwkJZm9yZWlnbl9uciArPSBjaGVja19vYmplY3QoZ2V0X2luZGV4ZWRfb2JqZWN0KGkpKTsKKwlyZXR1cm4gZm9yZWlnbl9ucjsKIH0KIAogCkBAIC03NDcsOCArNzUyLDcgQEAKIAkJCWludCBlYXRlbjsKIAkJCXZvaWQgKmJ1ZiA9ICh2b2lkICopIGRhdGE7CiAKLQkJCWlmICghYnVmKQotCQkJCWJ1ZiA9IG5ld19kYXRhID0gZ2V0X2RhdGFfZnJvbV9wYWNrKG9ial9lbnRyeSk7CisJCQlhc3NlcnQoZGF0YSAmJiAiZGF0YSBjYW4gb25seSBiZSBOVUxMIGZvciBsYXJnZSBfYmxvYnNfIik7CiAKIAkJCS8qCiAJCQkgKiB3ZSBkbyBub3QgbmVlZCB0byBmcmVlIHRoZSBtZW1vcnkgaGVyZSwgYXMgdGhlCkBAIC03NTcsNyArNzYxLDggQEAKIAkJCW9iaiA9IHBhcnNlX29iamVjdF9idWZmZXIoc2hhMSwgdHlwZSwgc2l6ZSwgYnVmLCAmZWF0ZW4pOwogCQkJaWYgKCFvYmopCiAJCQkJZGllKF8oImludmFsaWQgJXMiKSwgdHlwZW5hbWUodHlwZSkpOwotCQkJaWYgKGZzY2tfb2JqZWN0KG9iaiwgMSwgZnNja19lcnJvcl9mdW5jdGlvbikpCisJCQlpZiAoZG9fZnNja19vYmplY3QgJiYKKwkJCSAgICBmc2NrX29iamVjdChvYmosIDEsIGZzY2tfZXJyb3JfZnVuY3Rpb24pKQogCQkJCWRpZShfKCJFcnJvciBpbiBvYmplY3QiKSk7CiAJCQlpZiAoZnNja193YWxrKG9iaiwgbWFya19saW5rLCBOVUxMKSkKIAkJCQlkaWUoXygiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiKSwgc2hhMV90b19oZXgob2JqLT5zaGExKSk7CkBAIC0xNDkxLDYgKzE0OTYsNyBAQAogCXN0cnVjdCBwYWNrX2lkeF9lbnRyeSAqKmlkeF9vYmplY3RzOwogCXN0cnVjdCBwYWNrX2lkeF9vcHRpb24gb3B0czsKIAl1bnNpZ25lZCBjaGFyIHBhY2tfc2hhMVsyMF07CisJdW5zaWduZWQgZm9yZWlnbl9uciA9IDE7CS8qIHplcm8gaXMgYSAiZ29vZCIgdmFsdWUsIGFzc3VtZSBiYWQgKi8KIAogCWlmIChhcmdjID09IDIgJiYgIXN0cmNtcChhcmd2WzFdLCAiLWgiKSkKIAkJdXNhZ2UoaW5kZXhfcGFja191c2FnZSk7CkBAIC0xNTEyLDYgKzE1MTgsMTAgQEAKIAkJCQlmaXhfdGhpbl9wYWNrID0gMTsKIAkJCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXN0cmljdCIpKSB7CiAJCQkJc3RyaWN0ID0gMTsKKwkJCQlkb19mc2NrX29iamVjdCA9IDE7CisJCQl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1jaGVjay1zZWxmLWNvbnRhaW5lZC1hbmQtY29ubmVjdGVkIikpIHsKKwkJCQlzdHJpY3QgPSAxOworCQkJCWNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgPSAxOwogCQkJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tdmVyaWZ5IikpIHsKIAkJCQl2ZXJpZnkgPSAxOwogCQkJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tdmVyaWZ5LXN0YXQiKSkgewpAQCAtMTYyNSw3ICsxNjM1LDcgQEAKIAljb25jbHVkZV9wYWNrKGZpeF90aGluX3BhY2ssIGN1cnJfcGFjaywgcGFja19zaGExKTsKIAlmcmVlKGRlbHRhcyk7CiAJaWYgKHN0cmljdCkKLQkJY2hlY2tfb2JqZWN0cygpOworCQlmb3JlaWduX25yID0gY2hlY2tfb2JqZWN0cygpOwogCiAJaWYgKHNob3dfc3RhdCkKIAkJc2hvd19wYWNrX2luZm8oc3RhdF9vbmx5KTsKQEAgLTE2NTEsNSArMTY2MSwxMSBAQAogCWlmIChpbmRleF9uYW1lID09IE5VTEwpCiAJCWZyZWUoKHZvaWQgKikgY3Vycl9pbmRleCk7CiAKKwkvKgorCSAqIExldCB0aGUgY2FsbGVyIGtub3cgdGhpcyBwYWNrIGlzIG5vdCBzZWxmIGNvbnRhaW5lZAorCSAqLworCWlmIChjaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkICYmIGZvcmVpZ25fbnIpCisJCXJldHVybiAxOworCiAJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2xvZy5jIGIvYnVpbHRpbi9sb2cuYwppbmRleCA2ZTU2YTUwLi4yNjI1Zjk4IDEwMDY0NAotLS0gYS9idWlsdGluL2xvZy5jCisrKyBiL2J1aWx0aW4vbG9nLmMKQEAgLTE5LDYgKzE5LDcgQEAKICNpbmNsdWRlICJyZW1vdGUuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKKyNpbmNsdWRlICJsaW5lLWxvZy5oIgogI2luY2x1ZGUgImJyYW5jaC5oIgogI2luY2x1ZGUgInN0cmVhbWluZy5oIgogI2luY2x1ZGUgInZlcnNpb24uaCIKQEAgLTQyLDYgKzQzLDEyIEBACiAJTlVMTAogfTsKIAorc3RydWN0IGxpbmVfb3B0X2NhbGxiYWNrX2RhdGEgeworCXN0cnVjdCByZXZfaW5mbyAqcmV2OworCWNvbnN0IGNoYXIgKnByZWZpeDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgYXJnczsKK307CisKIHN0YXRpYyBpbnQgcGFyc2VfZGVjb3JhdGlvbl9zdHlsZShjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlKQogewogCXN3aXRjaCAoZ2l0X2NvbmZpZ19tYXliZV9ib29sKHZhciwgdmFsdWUpKSB7CkBAIC03Niw2ICs4MywxOSBAQAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGxvZ19saW5lX3JhbmdlX2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdGlvbiwgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCit7CisJc3RydWN0IGxpbmVfb3B0X2NhbGxiYWNrX2RhdGEgKmRhdGEgPSBvcHRpb24tPnZhbHVlOworCisJaWYgKCFhcmcpCisJCXJldHVybiAtMTsKKworCWRhdGEtPnJldi0+bGluZV9sZXZlbF90cmF2ZXJzZSA9IDE7CisJc3RyaW5nX2xpc3RfYXBwZW5kKCZkYXRhLT5hcmdzLCBhcmcpOworCisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyB2b2lkIGNtZF9sb2dfaW5pdF9kZWZhdWx0cyhzdHJ1Y3QgcmV2X2luZm8gKnJldikKIHsKIAlpZiAoZm10X3ByZXR0eSkKQEAgLTk4LDYgKzExOCw3IEBACiB7CiAJc3RydWN0IHVzZXJmb3JtYXRfd2FudCB3OwogCWludCBxdWlldCA9IDAsIHNvdXJjZSA9IDAsIG1haWxtYXAgPSAwOworCXN0YXRpYyBzdHJ1Y3QgbGluZV9vcHRfY2FsbGJhY2tfZGF0YSBsaW5lX2NiID0ge05VTEwsIE5VTEwsIFNUUklOR19MSVNUX0lOSVRfRFVQfTsKIAogCWNvbnN0IHN0cnVjdCBvcHRpb24gYnVpbHRpbl9sb2dfb3B0aW9uc1tdID0gewogCQlPUFRfQk9PTCgwLCAicXVpZXQiLCAmcXVpZXQsIE5fKCJzdXBwcmVzcyBkaWZmIG91dHB1dCIpKSwKQEAgLTEwNSw5ICsxMjYsMTUgQEAKIAkJT1BUX0JPT0woMCwgInVzZS1tYWlsbWFwIiwgJm1haWxtYXAsIE5fKCJVc2UgbWFpbCBtYXAgZmlsZSIpKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJkZWNvcmF0ZSIsIE5VTEwsIE5VTEwsIE5fKCJkZWNvcmF0ZSBvcHRpb25zIiksCiAJCSAgUEFSU0VfT1BUX09QVEFSRywgZGVjb3JhdGVfY2FsbGJhY2t9LAorCQlPUFRfQ0FMTEJBQ0soJ0wnLCBOVUxMLCAmbGluZV9jYiwgIm4sbTpmaWxlIiwKKwkJCSAgICAgIlByb2Nlc3MgbGluZSByYW5nZSBuLG0gaW4gZmlsZSwgY291bnRpbmcgZnJvbSAxIiwKKwkJCSAgICAgbG9nX2xpbmVfcmFuZ2VfY2FsbGJhY2spLAogCQlPUFRfRU5EKCkKIAl9OwogCisJbGluZV9jYi5yZXYgPSByZXY7CisJbGluZV9jYi5wcmVmaXggPSBwcmVmaXg7CisKIAltYWlsbWFwID0gdXNlX21haWxtYXBfY29uZmlnOwogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwKIAkJCSAgICAgYnVpbHRpbl9sb2dfb3B0aW9ucywgYnVpbHRpbl9sb2dfdXNhZ2UsCkBAIC0xNjEsNiArMTg4LDEwIEBACiAJCXJldi0+c2hvd19kZWNvcmF0aW9ucyA9IDE7CiAJCWxvYWRfcmVmX2RlY29yYXRpb25zKGRlY29yYXRpb25fc3R5bGUpOwogCX0KKworCWlmIChyZXYtPmxpbmVfbGV2ZWxfdHJhdmVyc2UpCisJCWxpbmVfbG9nX2luaXQocmV2LCBsaW5lX2NiLnByZWZpeCwgJmxpbmVfY2IuYXJncyk7CisKIAlzZXR1cF9wYWdlcigpOwogfQogCkBAIC0yMDYsNyArMjM3LDcgQEAKIAlpbnQgaSA9IHJldnMtPmVhcmx5X291dHB1dDsKIAlpbnQgc2hvd19oZWFkZXIgPSAxOwogCi0Jc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcigmbGlzdCwgcmV2cy0+bGlmbyk7CisJc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcigmbGlzdCwgcmV2cy0+c29ydF9vcmRlcik7CiAJd2hpbGUgKGxpc3QgJiYgaSkgewogCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBsaXN0LT5pdGVtOwogCQlzd2l0Y2ggKHNpbXBsaWZ5X2NvbW1pdChyZXZzLCBjb21taXQpKSB7CkBAIC0xMDgxLDYgKzExMTIsMjEgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBmcm9tX2NhbGxiYWNrKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwgY29uc3QgY2hhciAqYXJnLCBpbnQgdW5zZXQpCit7CisJY2hhciAqKmZyb20gPSBvcHQtPnZhbHVlOworCisJZnJlZSgqZnJvbSk7CisKKwlpZiAodW5zZXQpCisJCSpmcm9tID0gTlVMTDsKKwllbHNlIGlmIChhcmcpCisJCSpmcm9tID0geHN0cmR1cChhcmcpOworCWVsc2UKKwkJKmZyb20gPSB4c3RyZHVwKGdpdF9jb21taXR0ZXJfaW5mbyhJREVOVF9OT19EQVRFKSk7CisJcmV0dXJuIDA7Cit9CisKIGludCBjbWRfZm9ybWF0X3BhdGNoKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQogewogCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKQEAgLTExMDMsNiArMTE0OSw3IEBACiAJaW50IHF1aWV0ID0gMDsKIAlpbnQgcmVyb2xsX2NvdW50ID0gLTE7CiAJY2hhciAqYnJhbmNoX25hbWUgPSBOVUxMOworCWNoYXIgKmZyb20gPSBOVUxMOwogCWNvbnN0IHN0cnVjdCBvcHRpb24gYnVpbHRpbl9mb3JtYXRfcGF0Y2hfb3B0aW9uc1tdID0gewogCQl7IE9QVElPTl9DQUxMQkFDSywgJ24nLCAibnVtYmVyZWQiLCAmbnVtYmVyZWQsIE5VTEwsCiAJCQkgICAgTl8oInVzZSBbUEFUQ0ggbi9tXSBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2giKSwKQEAgLTExNDYsNiArMTE5Myw5IEBACiAJCQkgICAgMCwgdG9fY2FsbGJhY2sgfSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJjYyIsIE5VTEwsIE5fKCJlbWFpbCIpLCBOXygiYWRkIENjOiBoZWFkZXIiKSwKIAkJCSAgICAwLCBjY19jYWxsYmFjayB9LAorCQl7IE9QVElPTl9DQUxMQkFDSywgMCwgImZyb20iLCAmZnJvbSwgTl8oImlkZW50IiksCisJCQkgICAgTl8oInNldCBGcm9tIGFkZHJlc3MgdG8gPGlkZW50PiAob3IgY29tbWl0dGVyIGlkZW50IGlmIGFic2VudCkiKSwKKwkJCSAgICBQQVJTRV9PUFRfT1BUQVJHLCBmcm9tX2NhbGxiYWNrIH0sCiAJCU9QVF9TVFJJTkcoMCwgImluLXJlcGx5LXRvIiwgJmluX3JlcGx5X3RvLCBOXygibWVzc2FnZS1pZCIpLAogCQkJICAgIE5fKCJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iKSksCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAiYXR0YWNoIiwgJnJldiwgTl8oImJvdW5kYXJ5IiksCkBAIC0xMjMzLDYgKzEyODMsMTEgQEAKIAogCXJldi5leHRyYV9oZWFkZXJzID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKIAorCWlmIChmcm9tKSB7CisJCWlmIChzcGxpdF9pZGVudF9saW5lKCZyZXYuZnJvbV9pZGVudCwgZnJvbSwgc3RybGVuKGZyb20pKSkKKwkJCWRpZShfKCJpbnZhbGlkIGlkZW50IGxpbmU6ICVzIiksIGZyb20pOworCX0KKwogCWlmIChzdGFydF9udW1iZXIgPCAwKQogCQlzdGFydF9udW1iZXIgPSAxOwogCmRpZmYgLS1naXQgYS9idWlsdGluL2xzLWZpbGVzLmMgYi9idWlsdGluL2xzLWZpbGVzLmMKaW5kZXggODdmM2IzMy4uNWNmM2UzMSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9scy1maWxlcy5jCisrKyBiL2J1aWx0aW4vbHMtZmlsZXMuYwpAQCAtNDYsMTAgKzQ2LDE0IEBACiBzdGF0aWMgY29uc3QgY2hhciAqdGFnX3NraXBfd29ya3RyZWUgPSAiIjsKIHN0YXRpYyBjb25zdCBjaGFyICp0YWdfcmVzb2x2ZV91bmRvID0gIiI7CiAKLXN0YXRpYyB2b2lkIHdyaXRlX25hbWUoY29uc3QgY2hhciogbmFtZSwgc2l6ZV90IGxlbikKK3N0YXRpYyB2b2lkIHdyaXRlX25hbWUoY29uc3QgY2hhciAqbmFtZSkKIHsKLQl3cml0ZV9uYW1lX3F1b3RlZF9yZWxhdGl2ZShuYW1lLCBsZW4sIHByZWZpeCwgcHJlZml4X2xlbiwgc3Rkb3V0LAotCQkJbGluZV90ZXJtaW5hdG9yKTsKKwkvKgorCSAqIFdpdGggIi0tZnVsbC1uYW1lIiwgcHJlZml4X2xlbj0wOyB0aGlzIGNhbGxlciBuZWVkcyB0byBwYXNzCisJICogYW4gZW1wdHkgc3RyaW5nIGluIHRoYXQgY2FzZSAoYSBOVUxMIGlzIGdvb2QgZm9yICIiKS4KKwkgKi8KKwl3cml0ZV9uYW1lX3F1b3RlZF9yZWxhdGl2ZShuYW1lLCBwcmVmaXhfbGVuID8gcHJlZml4IDogTlVMTCwKKwkJCQkgICBzdGRvdXQsIGxpbmVfdGVybWluYXRvcik7CiB9CiAKIHN0YXRpYyB2b2lkIHNob3dfZGlyX2VudHJ5KGNvbnN0IGNoYXIgKnRhZywgc3RydWN0IGRpcl9lbnRyeSAqZW50KQpAQCAtNjMsNyArNjcsNyBAQAogCQlyZXR1cm47CiAKIAlmcHV0cyh0YWcsIHN0ZG91dCk7Ci0Jd3JpdGVfbmFtZShlbnQtPm5hbWUsIGVudC0+bGVuKTsKKwl3cml0ZV9uYW1lKGVudC0+bmFtZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHNob3dfb3RoZXJfZmlsZXMoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpcikKQEAgLTEyNyw3ICsxMzEsNyBAQAogCX0KIH0KIAotc3RhdGljIHZvaWQgc2hvd19jZV9lbnRyeShjb25zdCBjaGFyICp0YWcsIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCitzdGF0aWMgdm9pZCBzaG93X2NlX2VudHJ5KGNvbnN0IGNoYXIgKnRhZywgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlpbnQgbGVuID0gbWF4X3ByZWZpeF9sZW47CiAKQEAgLTE2MywxMyArMTY3LDE1IEBACiAJCSAgICAgICBmaW5kX3VuaXF1ZV9hYmJyZXYoY2UtPnNoYTEsYWJicmV2KSwKIAkJICAgICAgIGNlX3N0YWdlKGNlKSk7CiAJfQotCXdyaXRlX25hbWUoY2UtPm5hbWUsIGNlX25hbWVsZW4oY2UpKTsKKwl3cml0ZV9uYW1lKGNlLT5uYW1lKTsKIAlpZiAoZGVidWdfbW9kZSkgewotCQlwcmludGYoIiAgY3RpbWU6ICVkOiVkXG4iLCBjZS0+Y2VfY3RpbWUuc2VjLCBjZS0+Y2VfY3RpbWUubnNlYyk7Ci0JCXByaW50ZigiICBtdGltZTogJWQ6JWRcbiIsIGNlLT5jZV9tdGltZS5zZWMsIGNlLT5jZV9tdGltZS5uc2VjKTsKLQkJcHJpbnRmKCIgIGRldjogJWRcdGlubzogJWRcbiIsIGNlLT5jZV9kZXYsIGNlLT5jZV9pbm8pOwotCQlwcmludGYoIiAgdWlkOiAlZFx0Z2lkOiAlZFxuIiwgY2UtPmNlX3VpZCwgY2UtPmNlX2dpZCk7Ci0JCXByaW50ZigiICBzaXplOiAlZFx0ZmxhZ3M6ICV4XG4iLCBjZS0+Y2Vfc2l6ZSwgY2UtPmNlX2ZsYWdzKTsKKwkJY29uc3Qgc3RydWN0IHN0YXRfZGF0YSAqc2QgPSAmY2UtPmNlX3N0YXRfZGF0YTsKKworCQlwcmludGYoIiAgY3RpbWU6ICVkOiVkXG4iLCBzZC0+c2RfY3RpbWUuc2VjLCBzZC0+c2RfY3RpbWUubnNlYyk7CisJCXByaW50ZigiICBtdGltZTogJWQ6JWRcbiIsIHNkLT5zZF9tdGltZS5zZWMsIHNkLT5zZF9tdGltZS5uc2VjKTsKKwkJcHJpbnRmKCIgIGRldjogJWRcdGlubzogJWRcbiIsIHNkLT5zZF9kZXYsIHNkLT5zZF9pbm8pOworCQlwcmludGYoIiAgdWlkOiAlZFx0Z2lkOiAlZFxuIiwgc2QtPnNkX3VpZCwgc2QtPnNkX2dpZCk7CisJCXByaW50ZigiICBzaXplOiAlZFx0ZmxhZ3M6ICV4XG4iLCBzZC0+c2Rfc2l6ZSwgY2UtPmNlX2ZsYWdzKTsKIAl9CiB9CiAKQEAgLTE5NiwxMiArMjAyLDEyIEBACiAJCQlwcmludGYoIiVzJTA2byAlcyAlZFx0IiwgdGFnX3Jlc29sdmVfdW5kbywgdWktPm1vZGVbaV0sCiAJCQkgICAgICAgZmluZF91bmlxdWVfYWJicmV2KHVpLT5zaGExW2ldLCBhYmJyZXYpLAogCQkJICAgICAgIGkgKyAxKTsKLQkJCXdyaXRlX25hbWUocGF0aCwgbGVuKTsKKwkJCXdyaXRlX25hbWUocGF0aCk7CiAJCX0KIAl9CiB9CiAKLXN0YXRpYyBpbnQgY2VfZXhjbHVkZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgY2VfZXhjbHVkZWQoc3RydWN0IGRpcl9zdHJ1Y3QgKmRpciwgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlpbnQgZHR5cGUgPSBjZV90b19kdHlwZShjZSk7CiAJcmV0dXJuIGlzX2V4Y2x1ZGVkKGRpciwgY2UtPm5hbWUsICZkdHlwZSk7CkBAIC0yMjEsNyArMjI3LDcgQEAKIAl9CiAJaWYgKHNob3dfY2FjaGVkIHx8IHNob3dfc3RhZ2UpIHsKIAkJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7Ci0JCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAkJCWlmICgoZGlyLT5mbGFncyAmIERJUl9TSE9XX0lHTk9SRUQpICYmCiAJCQkgICAgIWNlX2V4Y2x1ZGVkKGRpciwgY2UpKQogCQkJCWNvbnRpbnVlOwpAQCAtMjM1LDcgKzI0MSw3IEBACiAJfQogCWlmIChzaG93X2RlbGV0ZWQgfHwgc2hvd19tb2RpZmllZCkgewogCQlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKLQkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CisJCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQkJc3RydWN0IHN0YXQgc3Q7CiAJCQlpbnQgZXJyOwogCQkJaWYgKChkaXItPmZsYWdzICYgRElSX1NIT1dfSUdOT1JFRCkgJiYKQEAgLTI3MSw3ICsyNzcsNyBAQAogCWxhc3QgPSBhY3RpdmVfbnI7CiAJd2hpbGUgKGxhc3QgPiBmaXJzdCkgewogCQlpbnQgbmV4dCA9IChsYXN0ICsgZmlyc3QpID4+IDE7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbbmV4dF07CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbbmV4dF07CiAJCWlmICghc3RybmNtcChjZS0+bmFtZSwgcHJlZml4LCBtYXhfcHJlZml4X2xlbikpIHsKIAkJCWZpcnN0ID0gbmV4dCsxOwogCQkJY29udGludWU7CkBAIC0zODksNyArMzk1LDcgQEAKIAkJaWYgKGZvdW5kX2R1cCkKIAkJCWNvbnRpbnVlOwogCi0JCW5hbWUgPSBxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGhzcGVjW251bV0sIC0xLCAmc2IsIHByZWZpeCk7CisJCW5hbWUgPSBxdW90ZV9wYXRoX3JlbGF0aXZlKHBhdGhzcGVjW251bV0sIHByZWZpeCwgJnNiKTsKIAkJZXJyb3IoInBhdGhzcGVjICclcycgZGlkIG5vdCBtYXRjaCBhbnkgZmlsZShzKSBrbm93biB0byBnaXQuIiwKIAkJICAgICAgbmFtZSk7CiAJCWVycm9ycysrOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tZXJnZS1pbmRleC5jIGIvYnVpbHRpbi9tZXJnZS1pbmRleC5jCmluZGV4IGJlNWU1MTQuLmI0MTZkOTIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UtaW5kZXguYworKysgYi9idWlsdGluL21lcmdlLWluZGV4LmMKQEAgLTE2LDcgKzE2LDcgQEAKIAkJZGllKCJnaXQgbWVyZ2UtaW5kZXg6ICVzIG5vdCBpbiB0aGUgY2FjaGUiLCBwYXRoKTsKIAlmb3VuZCA9IDA7CiAJZG8gewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKIAkJaW50IHN0YWdlID0gY2Vfc3RhZ2UoY2UpOwogCiAJCWlmIChzdHJjbXAoY2UtPm5hbWUsIHBhdGgpKQpAQCAtNTgsNyArNTgsNyBAQAogewogCWludCBpOwogCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQlpZiAoIWNlX3N0YWdlKGNlKSkKIAkJCWNvbnRpbnVlOwogCQlpICs9IG1lcmdlX2VudHJ5KGksIGNlLT5uYW1lKS0xOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tZXJnZS5jIGIvYnVpbHRpbi9tZXJnZS5jCmluZGV4IDJlYmU3MzIuLjM0YTYxNjYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbWVyZ2UuYworKysgYi9idWlsdGluL21lcmdlLmMKQEAgLTQ3LDggKzQ3LDggQEAKIH07CiAKIHN0YXRpYyBpbnQgc2hvd19kaWZmc3RhdCA9IDEsIHNob3J0bG9nX2xlbiA9IC0xLCBzcXVhc2g7Ci1zdGF0aWMgaW50IG9wdGlvbl9jb21taXQgPSAxLCBhbGxvd19mYXN0X2ZvcndhcmQgPSAxOwotc3RhdGljIGludCBmYXN0X2ZvcndhcmRfb25seSwgb3B0aW9uX2VkaXQgPSAtMTsKK3N0YXRpYyBpbnQgb3B0aW9uX2NvbW1pdCA9IDE7CitzdGF0aWMgaW50IG9wdGlvbl9lZGl0ID0gLTE7CiBzdGF0aWMgaW50IGFsbG93X3RyaXZpYWwgPSAxLCBoYXZlX21lc3NhZ2UsIHZlcmlmeV9zaWduYXR1cmVzOwogc3RhdGljIGludCBvdmVyd3JpdGVfaWdub3JlID0gMTsKIHN0YXRpYyBzdHJ1Y3Qgc3RyYnVmIG1lcmdlX21zZyA9IFNUUkJVRl9JTklUOwpAQCAtNzYsNiArNzYsMTQgQEAKIAogc3RhdGljIGNvbnN0IGNoYXIgKnB1bGxfdHdvaGVhZCwgKnB1bGxfb2N0b3B1czsKIAorZW51bSBmZl90eXBlIHsKKwlGRl9OTywKKwlGRl9BTExPVywKKwlGRl9PTkxZCit9OworCitzdGF0aWMgZW51bSBmZl90eXBlIGZhc3RfZm9yd2FyZCA9IEZGX0FMTE9XOworCiBzdGF0aWMgaW50IG9wdGlvbl9wYXJzZV9tZXNzYWdlKGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdCwKIAkJCQljb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKIHsKQEAgLTE3OCw2ICsxODYsMTMgQEAKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBvcHRpb25fcGFyc2VfZmZfb25seShjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsCisJCQkgIGNvbnN0IGNoYXIgKmFyZywgaW50IHVuc2V0KQoreworCWZhc3RfZm9yd2FyZCA9IEZGX09OTFk7CisJcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGJ1aWx0aW5fbWVyZ2Vfb3B0aW9uc1tdID0gewogCXsgT1BUSU9OX0NBTExCQUNLLCAnbicsIE5VTEwsIE5VTEwsIE5VTEwsCiAJCU5fKCJkbyBub3Qgc2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIiksCkBAIC0xOTQsMTAgKzIwOSwxMCBAQAogCQlOXygicGVyZm9ybSBhIGNvbW1pdCBpZiB0aGUgbWVyZ2Ugc3VjY2VlZHMgKGRlZmF1bHQpIikpLAogCU9QVF9CT09MKCdlJywgImVkaXQiLCAmb3B0aW9uX2VkaXQsCiAJCU5fKCJlZGl0IG1lc3NhZ2UgYmVmb3JlIGNvbW1pdHRpbmciKSksCi0JT1BUX0JPT0xFQU4oMCwgImZmIiwgJmFsbG93X2Zhc3RfZm9yd2FyZCwKLQkJTl8oImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiKSksCi0JT1BUX0JPT0xFQU4oMCwgImZmLW9ubHkiLCAmZmFzdF9mb3J3YXJkX29ubHksCi0JCU5fKCJhYm9ydCBpZiBmYXN0LWZvcndhcmQgaXMgbm90IHBvc3NpYmxlIikpLAorCU9QVF9TRVRfSU5UKDAsICJmZiIsICZmYXN0X2ZvcndhcmQsIE5fKCJhbGxvdyBmYXN0LWZvcndhcmQgKGRlZmF1bHQpIiksIEZGX0FMTE9XKSwKKwl7IE9QVElPTl9DQUxMQkFDSywgMCwgImZmLW9ubHkiLCBOVUxMLCBOVUxMLAorCQlOXygiYWJvcnQgaWYgZmFzdC1mb3J3YXJkIGlzIG5vdCBwb3NzaWJsZSIpLAorCQlQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfTk9ORUcsIG9wdGlvbl9wYXJzZV9mZl9vbmx5IH0sCiAJT1BUX1JFUkVSRV9BVVRPVVBEQVRFKCZhbGxvd19yZXJlcmVfYXV0byksCiAJT1BUX0JPT0woMCwgInZlcmlmeS1zaWduYXR1cmVzIiwgJnZlcmlmeV9zaWduYXR1cmVzLAogCQlOXygiVmVyaWZ5IHRoYXQgdGhlIG5hbWVkIGNvbW1pdCBoYXMgYSB2YWxpZCBHUEcgc2lnbmF0dXJlIikpLApAQCAtNTgxLDEwICs1OTYsOSBAQAogCWVsc2UgaWYgKCFzdHJjbXAoaywgIm1lcmdlLmZmIikpIHsKIAkJaW50IGJvb2x2YWwgPSBnaXRfY29uZmlnX21heWJlX2Jvb2woaywgdik7CiAJCWlmICgwIDw9IGJvb2x2YWwpIHsKLQkJCWFsbG93X2Zhc3RfZm9yd2FyZCA9IGJvb2x2YWw7CisJCQlmYXN0X2ZvcndhcmQgPSBib29sdmFsID8gRkZfQUxMT1cgOiBGRl9OTzsKIAkJfSBlbHNlIGlmICh2ICYmICFzdHJjbXAodiwgIm9ubHkiKSkgewotCQkJYWxsb3dfZmFzdF9mb3J3YXJkID0gMTsKLQkJCWZhc3RfZm9yd2FyZF9vbmx5ID0gMTsKKwkJCWZhc3RfZm9yd2FyZCA9IEZGX09OTFk7CiAJCX0gLyogZG8gbm90IGJhcmYgb24gdmFsdWVzIGZyb20gZnV0dXJlIHZlcnNpb25zIG9mIGdpdCAqLwogCQlyZXR1cm4gMDsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoaywgIm1lcmdlLmRlZmF1bHR0b3Vwc3RyZWFtIikpIHsKQEAgLTg2Myw3ICs4NzcsNyBAQAogCiAJZnJlZV9jb21taXRfbGlzdChjb21tb24pOwogCXBhcmVudHMgPSByZW1vdGVoZWFkczsKLQlpZiAoIWhlYWRfc3Vic3VtZWQgfHwgIWFsbG93X2Zhc3RfZm9yd2FyZCkKKwlpZiAoIWhlYWRfc3Vic3VtZWQgfHwgZmFzdF9mb3J3YXJkID09IEZGX05PKQogCQljb21taXRfbGlzdF9pbnNlcnQoaGVhZCwgJnBhcmVudHMpOwogCXN0cmJ1Zl9hZGRjaCgmbWVyZ2VfbXNnLCAnXG4nKTsKIAlwcmVwYXJlX3RvX2NvbW1pdChyZW1vdGVoZWFkcyk7CkBAIC04ODksNyArOTAzLDcgQEAKIAkJZGllX2Vycm5vKF8oIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciKSwgZmlsZW5hbWUpOwogCWZwcmludGYoZnAsICJcbkNvbmZsaWN0czpcbiIpOwogCWZvciAocG9zID0gMDsgcG9zIDwgYWN0aXZlX25yOyBwb3MrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKIAogCQlpZiAoY2Vfc3RhZ2UoY2UpKSB7CiAJCQlmcHJpbnRmKGZwLCAiXHQlc1xuIiwgY2UtPm5hbWUpOwpAQCAtOTQ4LDcgKzk2Miw3IEBACiB9CiAKIC8qCi0gKiBQcmV0ZW5kIGFzIGlmIHRoZSB1c2VyIHRvbGQgdXMgdG8gbWVyZ2Ugd2l0aCB0aGUgdHJhY2tpbmcKKyAqIFByZXRlbmQgYXMgaWYgdGhlIHVzZXIgdG9sZCB1cyB0byBtZXJnZSB3aXRoIHRoZSByZW1vdGUtdHJhY2tpbmcKICAqIGJyYW5jaCB3ZSBoYXZlIGZvciB0aGUgdXBzdHJlYW0gb2YgdGhlIGN1cnJlbnQgYnJhbmNoCiAgKi8KIHN0YXRpYyBpbnQgc2V0dXBfd2l0aF91cHN0cmVhbShjb25zdCBjaGFyICoqKmFyZ3YpCkBAIC05NjcsNyArOTgxLDcgQEAKIAlhcmdzID0geGNhbGxvYyhicmFuY2gtPm1lcmdlX25yICsgMSwgc2l6ZW9mKGNoYXIgKikpOwogCWZvciAoaSA9IDA7IGkgPCBicmFuY2gtPm1lcmdlX25yOyBpKyspIHsKIAkJaWYgKCFicmFuY2gtPm1lcmdlW2ldLT5kc3QpCi0JCQlkaWUoXygiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIpLAorCQkJZGllKF8oIk5vIHJlbW90ZS10cmFja2luZyBicmFuY2ggZm9yICVzIGZyb20gJXMiKSwKIAkJCSAgICBicmFuY2gtPm1lcmdlW2ldLT5zcmMsIGJyYW5jaC0+cmVtb3RlX25hbWUpOwogCQlhcmdzW2ldID0gYnJhbmNoLT5tZXJnZVtpXS0+ZHN0OwogCX0KQEAgLTEwMDgsNyArMTAyMiw3IEBACiAJaWYgKGZkIDwgMCkKIAkJZGllX2Vycm5vKF8oIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciKSwgZmlsZW5hbWUpOwogCXN0cmJ1Zl9yZXNldCgmYnVmKTsKLQlpZiAoIWFsbG93X2Zhc3RfZm9yd2FyZCkKKwlpZiAoZmFzdF9mb3J3YXJkID09IEZGX05PKQogCQlzdHJidWZfYWRkZigmYnVmLCAibm8tZmYiKTsKIAlpZiAod3JpdGVfaW5fZnVsbChmZCwgYnVmLmJ1ZiwgYnVmLmxlbikgIT0gYnVmLmxlbikKIAkJZGllX2Vycm5vKF8oIkNvdWxkIG5vdCB3cml0ZSB0byAnJXMnIiksIGZpbGVuYW1lKTsKQEAgLTExNTcsMTQgKzExNzEsMTEgQEAKIAkJc2hvd19kaWZmc3RhdCA9IDA7CiAKIAlpZiAoc3F1YXNoKSB7Ci0JCWlmICghYWxsb3dfZmFzdF9mb3J3YXJkKQorCQlpZiAoZmFzdF9mb3J3YXJkID09IEZGX05PKQogCQkJZGllKF8oIllvdSBjYW5ub3QgY29tYmluZSAtLXNxdWFzaCB3aXRoIC0tbm8tZmYuIikpOwogCQlvcHRpb25fY29tbWl0ID0gMDsKIAl9CiAKLQlpZiAoIWFsbG93X2Zhc3RfZm9yd2FyZCAmJiBmYXN0X2ZvcndhcmRfb25seSkKLQkJZGllKF8oIllvdSBjYW5ub3QgY29tYmluZSAtLW5vLWZmIHdpdGggLS1mZi1vbmx5LiIpKTsKLQogCWlmICghYWJvcnRfY3VycmVudF9tZXJnZSkgewogCQlpZiAoIWFyZ2MpIHsKIAkJCWlmIChkZWZhdWx0X3RvX3Vwc3RyZWFtKQpAQCAtMTIwNiw3ICsxMjE3LDcgQEAKIAkJCQkiZW1wdHkgaGVhZCIpKTsKIAkJaWYgKHNxdWFzaCkKIAkJCWRpZShfKCJTcXVhc2ggY29tbWl0IGludG8gZW1wdHkgaGVhZCBub3Qgc3VwcG9ydGVkIHlldCIpKTsKLQkJaWYgKCFhbGxvd19mYXN0X2ZvcndhcmQpCisJCWlmIChmYXN0X2ZvcndhcmQgPT0gRkZfTk8pCiAJCQlkaWUoXygiTm9uLWZhc3QtZm9yd2FyZCBjb21taXQgZG9lcyBub3QgbWFrZSBzZW5zZSBpbnRvICIKIAkJCSAgICAiYW4gZW1wdHkgaGVhZCIpKTsKIAkJcmVtb3RlaGVhZHMgPSBjb2xsZWN0X3BhcmVudHMoaGVhZF9jb21taXQsICZoZWFkX3N1YnN1bWVkLCBhcmdjLCBhcmd2KTsKQEAgLTEyOTQsMTEgKzEzMDUsMTEgQEAKIAkJCSAgICBzaGExX3RvX2hleChjb21taXQtPm9iamVjdC5zaGExKSk7CiAJCXNldGVudihidWYuYnVmLCBtZXJnZV9yZW1vdGVfdXRpbChjb21taXQpLT5uYW1lLCAxKTsKIAkJc3RyYnVmX3Jlc2V0KCZidWYpOwotCQlpZiAoIWZhc3RfZm9yd2FyZF9vbmx5ICYmCisJCWlmIChmYXN0X2ZvcndhcmQgIT0gRkZfT05MWSAmJgogCQkgICAgbWVyZ2VfcmVtb3RlX3V0aWwoY29tbWl0KSAmJgogCQkgICAgbWVyZ2VfcmVtb3RlX3V0aWwoY29tbWl0KS0+b2JqICYmCiAJCSAgICBtZXJnZV9yZW1vdGVfdXRpbChjb21taXQpLT5vYmotPnR5cGUgPT0gT0JKX1RBRykKLQkJCWFsbG93X2Zhc3RfZm9yd2FyZCA9IDA7CisJCQlmYXN0X2ZvcndhcmQgPSBGRl9OTzsKIAl9CiAKIAlpZiAob3B0aW9uX2VkaXQgPCAwKQpAQCAtMTMxNSw3ICsxMzI2LDcgQEAKIAogCWZvciAoaSA9IDA7IGkgPCB1c2Vfc3RyYXRlZ2llc19ucjsgaSsrKSB7CiAJCWlmICh1c2Vfc3RyYXRlZ2llc1tpXS0+YXR0ciAmIE5PX0ZBU1RfRk9SV0FSRCkKLQkJCWFsbG93X2Zhc3RfZm9yd2FyZCA9IDA7CisJCQlmYXN0X2ZvcndhcmQgPSBGRl9OTzsKIAkJaWYgKHVzZV9zdHJhdGVnaWVzW2ldLT5hdHRyICYgTk9fVFJJVklBTCkKIAkJCWFsbG93X3RyaXZpYWwgPSAwOwogCX0KQEAgLTEzNDUsNyArMTM1Niw3IEBACiAJCSAqLwogCQlmaW5pc2hfdXBfdG9fZGF0ZSgiQWxyZWFkeSB1cC10by1kYXRlLiIpOwogCQlnb3RvIGRvbmU7Ci0JfSBlbHNlIGlmIChhbGxvd19mYXN0X2ZvcndhcmQgJiYgIXJlbW90ZWhlYWRzLT5uZXh0ICYmCisJfSBlbHNlIGlmIChmYXN0X2ZvcndhcmQgIT0gRkZfTk8gJiYgIXJlbW90ZWhlYWRzLT5uZXh0ICYmCiAJCQkhY29tbW9uLT5uZXh0ICYmCiAJCQkhaGFzaGNtcChjb21tb24tPml0ZW0tPm9iamVjdC5zaGExLCBoZWFkX2NvbW1pdC0+b2JqZWN0LnNoYTEpKSB7CiAJCS8qIEFnYWluIHRoZSBtb3N0IGNvbW1vbiBjYXNlIG9mIG1lcmdpbmcgb25lIHJlbW90ZS4gKi8KQEAgLTEzOTIsNyArMTQwMyw3IEBACiAJCSAqIG9ubHkgb25lIGNvbW1vbi4KIAkJICovCiAJCXJlZnJlc2hfY2FjaGUoUkVGUkVTSF9RVUlFVCk7Ci0JCWlmIChhbGxvd190cml2aWFsICYmICFmYXN0X2ZvcndhcmRfb25seSkgeworCQlpZiAoYWxsb3dfdHJpdmlhbCAmJiBmYXN0X2ZvcndhcmQgIT0gRkZfT05MWSkgewogCQkJLyogU2VlIGlmIGl0IGlzIHJlYWxseSB0cml2aWFsLiAqLwogCQkJZ2l0X2NvbW1pdHRlcl9pbmZvKElERU5UX1NUUklDVCk7CiAJCQlwcmludGYoXygiVHJ5aW5nIHJlYWxseSB0cml2aWFsIGluLWluZGV4IG1lcmdlLi4uXG4iKSk7CkBAIC0xNDMzLDcgKzE0NDQsNyBAQAogCQl9CiAJfQogCi0JaWYgKGZhc3RfZm9yd2FyZF9vbmx5KQorCWlmIChmYXN0X2ZvcndhcmQgPT0gRkZfT05MWSkKIAkJZGllKF8oIk5vdCBwb3NzaWJsZSB0byBmYXN0LWZvcndhcmQsIGFib3J0aW5nLiIpKTsKIAogCS8qIFdlIGFyZSBnb2luZyB0byBtYWtlIGEgbmV3IGNvbW1pdC4gKi8KZGlmZiAtLWdpdCBhL2J1aWx0aW4vbmFtZS1yZXYuYyBiL2J1aWx0aW4vbmFtZS1yZXYuYwppbmRleCA2MjM4MjQ3Li4wYWFhMTllIDEwMDY0NAotLS0gYS9idWlsdGluL25hbWUtcmV2LmMKKysrIGIvYnVpbHRpbi9uYW1lLXJldi5jCkBAIC00LDYgKzQsNyBAQAogI2luY2x1ZGUgInRhZy5oIgogI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCisjaW5jbHVkZSAic2hhMS1sb29rdXAuaCIKIAogI2RlZmluZSBDVVRPRkZfREFURV9TTE9QIDg2NDAwIC8qIG9uZSBkYXkgKi8KIApAQCAtODIsMjMgKzgzLDg4IEBACiAJfQogfQogCitzdGF0aWMgaW50IHN1YnBhdGhfbWF0Y2hlcyhjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICpmaWx0ZXIpCit7CisJY29uc3QgY2hhciAqc3VicGF0aCA9IHBhdGg7CisKKwl3aGlsZSAoc3VicGF0aCkgeworCQlpZiAoIWZubWF0Y2goZmlsdGVyLCBzdWJwYXRoLCAwKSkKKwkJCXJldHVybiBzdWJwYXRoIC0gcGF0aDsKKwkJc3VicGF0aCA9IHN0cmNocihzdWJwYXRoLCAnLycpOworCQlpZiAoc3VicGF0aCkKKwkJCXN1YnBhdGgrKzsKKwl9CisJcmV0dXJuIC0xOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqbmFtZV9yZWZfYWJicmV2KGNvbnN0IGNoYXIgKnJlZm5hbWUsIGludCBzaG9ydGVuX3VuYW1iaWd1b3VzKQoreworCWlmIChzaG9ydGVuX3VuYW1iaWd1b3VzKQorCQlyZWZuYW1lID0gc2hvcnRlbl91bmFtYmlndW91c19yZWYocmVmbmFtZSwgMCk7CisJZWxzZSBpZiAoIXByZWZpeGNtcChyZWZuYW1lLCAicmVmcy9oZWFkcy8iKSkKKwkJcmVmbmFtZSA9IHJlZm5hbWUgKyAxMTsKKwllbHNlIGlmICghcHJlZml4Y21wKHJlZm5hbWUsICJyZWZzLyIpKQorCQlyZWZuYW1lID0gcmVmbmFtZSArIDU7CisJcmV0dXJuIHJlZm5hbWU7Cit9CisKIHN0cnVjdCBuYW1lX3JlZl9kYXRhIHsKIAlpbnQgdGFnc19vbmx5OwogCWludCBuYW1lX29ubHk7CiAJY29uc3QgY2hhciAqcmVmX2ZpbHRlcjsKIH07CiAKK3N0YXRpYyBzdHJ1Y3QgdGlwX3RhYmxlIHsKKwlzdHJ1Y3QgdGlwX3RhYmxlX2VudHJ5IHsKKwkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKwkJY29uc3QgY2hhciAqcmVmbmFtZTsKKwl9ICp0YWJsZTsKKwlpbnQgbnI7CisJaW50IGFsbG9jOworCWludCBzb3J0ZWQ7Cit9IHRpcF90YWJsZTsKKworc3RhdGljIHZvaWQgYWRkX3RvX3RpcF90YWJsZShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBjb25zdCBjaGFyICpyZWZuYW1lLAorCQkJICAgICBpbnQgc2hvcnRlbl91bmFtYmlndW91cykKK3sKKwlyZWZuYW1lID0gbmFtZV9yZWZfYWJicmV2KHJlZm5hbWUsIHNob3J0ZW5fdW5hbWJpZ3VvdXMpOworCisJQUxMT0NfR1JPVyh0aXBfdGFibGUudGFibGUsIHRpcF90YWJsZS5uciArIDEsIHRpcF90YWJsZS5hbGxvYyk7CisJaGFzaGNweSh0aXBfdGFibGUudGFibGVbdGlwX3RhYmxlLm5yXS5zaGExLCBzaGExKTsKKwl0aXBfdGFibGUudGFibGVbdGlwX3RhYmxlLm5yXS5yZWZuYW1lID0geHN0cmR1cChyZWZuYW1lKTsKKwl0aXBfdGFibGUubnIrKzsKKwl0aXBfdGFibGUuc29ydGVkID0gMDsKK30KKworc3RhdGljIGludCB0aXBjbXAoY29uc3Qgdm9pZCAqYV8sIGNvbnN0IHZvaWQgKmJfKQoreworCWNvbnN0IHN0cnVjdCB0aXBfdGFibGVfZW50cnkgKmEgPSBhXywgKmIgPSBiXzsKKwlyZXR1cm4gaGFzaGNtcChhLT5zaGExLCBiLT5zaGExKTsKK30KKwogc3RhdGljIGludCBuYW1lX3JlZihjb25zdCBjaGFyICpwYXRoLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCiB7CiAJc3RydWN0IG9iamVjdCAqbyA9IHBhcnNlX29iamVjdChzaGExKTsKIAlzdHJ1Y3QgbmFtZV9yZWZfZGF0YSAqZGF0YSA9IGNiX2RhdGE7CisJaW50IGNhbl9hYmJyZXZpYXRlX291dHB1dCA9IGRhdGEtPnRhZ3Nfb25seSAmJiBkYXRhLT5uYW1lX29ubHk7CiAJaW50IGRlcmVmID0gMDsKIAogCWlmIChkYXRhLT50YWdzX29ubHkgJiYgcHJlZml4Y21wKHBhdGgsICJyZWZzL3RhZ3MvIikpCiAJCXJldHVybiAwOwogCi0JaWYgKGRhdGEtPnJlZl9maWx0ZXIgJiYgZm5tYXRjaChkYXRhLT5yZWZfZmlsdGVyLCBwYXRoLCAwKSkKLQkJcmV0dXJuIDA7CisJaWYgKGRhdGEtPnJlZl9maWx0ZXIpIHsKKwkJc3dpdGNoIChzdWJwYXRoX21hdGNoZXMocGF0aCwgZGF0YS0+cmVmX2ZpbHRlcikpIHsKKwkJY2FzZSAtMTogLyogZGlkIG5vdCBtYXRjaCAqLworCQkJcmV0dXJuIDA7CisJCWNhc2UgMDogIC8qIG1hdGNoZWQgZnVsbHkgKi8KKwkJCWJyZWFrOworCQlkZWZhdWx0OiAvKiBtYXRjaGVkIHN1YnBhdGggKi8KKwkJCWNhbl9hYmJyZXZpYXRlX291dHB1dCA9IDE7CisJCQlicmVhazsKKwkJfQorCX0KKworCWFkZF90b190aXBfdGFibGUoc2hhMSwgcGF0aCwgY2FuX2FiYnJldmlhdGVfb3V0cHV0KTsKIAogCXdoaWxlIChvICYmIG8tPnR5cGUgPT0gT0JKX1RBRykgewogCQlzdHJ1Y3QgdGFnICp0ID0gKHN0cnVjdCB0YWcgKikgbzsKQEAgLTExMCwyMCArMTc2LDM4IEBACiAJaWYgKG8gJiYgby0+dHlwZSA9PSBPQkpfQ09NTUlUKSB7CiAJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IChzdHJ1Y3QgY29tbWl0ICopbzsKIAotCQlpZiAoIXByZWZpeGNtcChwYXRoLCAicmVmcy9oZWFkcy8iKSkKLQkJCXBhdGggPSBwYXRoICsgMTE7Ci0JCWVsc2UgaWYgKGRhdGEtPnRhZ3Nfb25seQotCQkgICAgJiYgZGF0YS0+bmFtZV9vbmx5Ci0JCSAgICAmJiAhcHJlZml4Y21wKHBhdGgsICJyZWZzL3RhZ3MvIikpCi0JCQlwYXRoID0gcGF0aCArIDEwOwotCQllbHNlIGlmICghcHJlZml4Y21wKHBhdGgsICJyZWZzLyIpKQotCQkJcGF0aCA9IHBhdGggKyA1OwotCisJCXBhdGggPSBuYW1lX3JlZl9hYmJyZXYocGF0aCwgY2FuX2FiYnJldmlhdGVfb3V0cHV0KTsKIAkJbmFtZV9yZXYoY29tbWl0LCB4c3RyZHVwKHBhdGgpLCAwLCAwLCBkZXJlZik7CiAJfQogCXJldHVybiAwOwogfQogCitzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqbnRoX3RpcF90YWJsZV9lbnQoc2l6ZV90IGl4LCB2b2lkICp0YWJsZV8pCit7CisJc3RydWN0IHRpcF90YWJsZV9lbnRyeSAqdGFibGUgPSB0YWJsZV87CisJcmV0dXJuIHRhYmxlW2l4XS5zaGExOworfQorCitzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2V4YWN0X3JlZl9tYXRjaChjb25zdCBzdHJ1Y3Qgb2JqZWN0ICpvKQoreworCWludCBmb3VuZDsKKworCWlmICghdGlwX3RhYmxlLnRhYmxlIHx8ICF0aXBfdGFibGUubnIpCisJCXJldHVybiBOVUxMOworCisJaWYgKCF0aXBfdGFibGUuc29ydGVkKSB7CisJCXFzb3J0KHRpcF90YWJsZS50YWJsZSwgdGlwX3RhYmxlLm5yLCBzaXplb2YoKnRpcF90YWJsZS50YWJsZSksCisJCSAgICAgIHRpcGNtcCk7CisJCXRpcF90YWJsZS5zb3J0ZWQgPSAxOworCX0KKworCWZvdW5kID0gc2hhMV9wb3Moby0+c2hhMSwgdGlwX3RhYmxlLnRhYmxlLCB0aXBfdGFibGUubnIsCisJCQkgbnRoX3RpcF90YWJsZV9lbnQpOworCWlmICgwIDw9IGZvdW5kKQorCQlyZXR1cm4gdGlwX3RhYmxlLnRhYmxlW2ZvdW5kXS5yZWZuYW1lOworCXJldHVybiBOVUxMOworfQorCiAvKiByZXR1cm5zIGEgc3RhdGljIGJ1ZmZlciAqLwogc3RhdGljIGNvbnN0IGNoYXIgKmdldF9yZXZfbmFtZShjb25zdCBzdHJ1Y3Qgb2JqZWN0ICpvKQogewpAQCAtMTMyLDcgKzIxNiw3IEBACiAJc3RydWN0IGNvbW1pdCAqYzsKIAogCWlmIChvLT50eXBlICE9IE9CSl9DT01NSVQpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gZ2V0X2V4YWN0X3JlZl9tYXRjaChvKTsKIAljID0gKHN0cnVjdCBjb21taXQgKikgbzsKIAluID0gYy0+dXRpbDsKIAlpZiAoIW4pCkBAIC0yMjMsNyArMzA3LDcgQEAKIGludCBjbWRfbmFtZV9yZXYoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJc3RydWN0IG9iamVjdF9hcnJheSByZXZzID0gT0JKRUNUX0FSUkFZX0lOSVQ7Ci0JaW50IGFsbCA9IDAsIHRyYW5zZm9ybV9zdGRpbiA9IDAsIGFsbG93X3VuZGVmaW5lZCA9IDEsIGFsd2F5cyA9IDA7CisJaW50IGFsbCA9IDAsIHRyYW5zZm9ybV9zdGRpbiA9IDAsIGFsbG93X3VuZGVmaW5lZCA9IDEsIGFsd2F5cyA9IDAsIHBlZWxfdGFnID0gMDsKIAlzdHJ1Y3QgbmFtZV9yZWZfZGF0YSBkYXRhID0geyAwLCAwLCBOVUxMIH07CiAJc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CiAJCU9QVF9CT09MRUFOKDAsICJuYW1lLW9ubHkiLCAmZGF0YS5uYW1lX29ubHksIE5fKCJwcmludCBvbmx5IG5hbWVzIChubyBTSEEtMSkiKSksCkBAIC0yMzYsNiArMzIwLDEyIEBACiAJCU9QVF9CT09MRUFOKDAsICJ1bmRlZmluZWQiLCAmYWxsb3dfdW5kZWZpbmVkLCBOXygiYWxsb3cgdG8gcHJpbnQgYHVuZGVmaW5lZGAgbmFtZXMiKSksCiAJCU9QVF9CT09MRUFOKDAsICJhbHdheXMiLCAgICAgJmFsd2F5cywKIAkJCSAgIE5fKCJzaG93IGFiYnJldmlhdGVkIGNvbW1pdCBvYmplY3QgYXMgZmFsbGJhY2siKSksCisJCXsKKwkJCS8qIEEgSGlkZGVuIE9QVF9CT09MICovCisJCQlPUFRJT05fU0VUX0lOVCwgMCwgInBlZWwtdGFnIiwgJnBlZWxfdGFnLCBOVUxMLAorCQkJTl8oImRlcmVmZXJlbmNlIHRhZ3MgaW4gdGhlIGlucHV0IChpbnRlcm5hbCB1c2UpIiksCisJCQlQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfSElEREVOLCBOVUxMLCAxLAorCQl9LAogCQlPUFRfRU5EKCksCiAJfTsKIApAQCAtMjUwLDcgKzM0MCw3IEBACiAKIAlmb3IgKDsgYXJnYzsgYXJnYy0tLCBhcmd2KyspIHsKIAkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQkJc3RydWN0IG9iamVjdCAqbzsKKwkJc3RydWN0IG9iamVjdCAqb2JqZWN0OwogCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CiAKIAkJaWYgKGdldF9zaGExKCphcmd2LCBzaGExKSkgewpAQCAtMjU5LDE3ICszNDksMzQgQEAKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJbyA9IGRlcmVmX3RhZyhwYXJzZV9vYmplY3Qoc2hhMSksICphcmd2LCAwKTsKLQkJaWYgKCFvIHx8IG8tPnR5cGUgIT0gT0JKX0NPTU1JVCkgewotCQkJZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgZ2V0IGNvbW1pdCBmb3IgJXMuIFNraXBwaW5nLlxuIiwKKwkJY29tbWl0ID0gTlVMTDsKKwkJb2JqZWN0ID0gcGFyc2Vfb2JqZWN0KHNoYTEpOworCQlpZiAob2JqZWN0KSB7CisJCQlzdHJ1Y3Qgb2JqZWN0ICpwZWVsZWQgPSBkZXJlZl90YWcob2JqZWN0LCAqYXJndiwgMCk7CisJCQlpZiAocGVlbGVkICYmIHBlZWxlZC0+dHlwZSA9PSBPQkpfQ09NTUlUKQorCQkJCWNvbW1pdCA9IChzdHJ1Y3QgY29tbWl0ICopcGVlbGVkOworCQl9CisKKwkJaWYgKCFvYmplY3QpIHsKKwkJCWZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IGdldCBvYmplY3QgZm9yICVzLiBTa2lwcGluZy5cbiIsCiAJCQkJCSphcmd2KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJY29tbWl0ID0gKHN0cnVjdCBjb21taXQgKilvOwotCQlpZiAoY3V0b2ZmID4gY29tbWl0LT5kYXRlKQotCQkJY3V0b2ZmID0gY29tbWl0LT5kYXRlOwotCQlhZGRfb2JqZWN0X2FycmF5KChzdHJ1Y3Qgb2JqZWN0ICopY29tbWl0LCAqYXJndiwgJnJldnMpOworCQlpZiAoY29tbWl0KSB7CisJCQlpZiAoY3V0b2ZmID4gY29tbWl0LT5kYXRlKQorCQkJCWN1dG9mZiA9IGNvbW1pdC0+ZGF0ZTsKKwkJfQorCisJCWlmIChwZWVsX3RhZykgeworCQkJaWYgKCFjb21taXQpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBnZXQgY29tbWl0IGZvciAlcy4gU2tpcHBpbmcuXG4iLAorCQkJCQkqYXJndik7CisJCQkJY29udGludWU7CisJCQl9CisJCQlvYmplY3QgPSAoc3RydWN0IG9iamVjdCAqKWNvbW1pdDsKKwkJfQorCQlhZGRfb2JqZWN0X2FycmF5KG9iamVjdCwgKmFyZ3YsICZyZXZzKTsKIAl9CiAKIAlpZiAoY3V0b2ZmKQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9ub3Rlcy5jIGIvYnVpbHRpbi9ub3Rlcy5jCmluZGV4IGQ5YTY3ZDkuLmU0MTAwYzQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbm90ZXMuYworKysgYi9idWlsdGluL25vdGVzLmMKQEAgLTE4LDkgKzE4LDcgQEAKICNpbmNsdWRlICJwYXJzZS1vcHRpb25zLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKICNpbmNsdWRlICJub3Rlcy1tZXJnZS5oIgotCi1zdGF0aWMgdm9pZCBjb21taXRfbm90ZXMoc3RydWN0IG5vdGVzX3RyZWUgKnQsIGNvbnN0IGNoYXIgKm1zZyk7Ci1zdGF0aWMgY29tYmluZV9ub3Rlc19mbiBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKGNvbnN0IGNoYXIgKnYpOworI2luY2x1ZGUgIm5vdGVzLXV0aWxzLmgiCiAKIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgZ2l0X25vdGVzX3VzYWdlW10gPSB7CiAJTl8oImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIFtsaXN0IFs8b2JqZWN0Pl1dIiksCkBAIC0yODcsMTM5ICsyODUsMTMgQEAKIAlyZXR1cm4gcGFyc2VfcmV1c2VfYXJnKG9wdCwgYXJnLCB1bnNldCk7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbW1pdF9ub3RlcyhzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgY29uc3QgY2hhciAqbXNnKQotewotCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7Ci0JdW5zaWduZWQgY2hhciBjb21taXRfc2hhMVsyMF07Ci0KLQlpZiAoIXQpCi0JCXQgPSAmZGVmYXVsdF9ub3Rlc190cmVlOwotCWlmICghdC0+aW5pdGlhbGl6ZWQgfHwgIXQtPnJlZiB8fCAhKnQtPnJlZikKLQkJZGllKF8oIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIpKTsKLQlpZiAoIXQtPmRpcnR5KQotCQlyZXR1cm47IC8qIGRvbid0IGhhdmUgdG8gY29tbWl0IGFuIHVuY2hhbmdlZCB0cmVlICovCi0KLQkvKiBQcmVwYXJlIGNvbW1pdCBtZXNzYWdlIGFuZCByZWZsb2cgbWVzc2FnZSAqLwotCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgbXNnKTsKLQlpZiAoYnVmLmJ1ZltidWYubGVuIC0gMV0gIT0gJ1xuJykKLQkJc3RyYnVmX2FkZGNoKCZidWYsICdcbicpOyAvKiBNYWtlIHN1cmUgbXNnIGVuZHMgd2l0aCBuZXdsaW5lICovCi0KLQljcmVhdGVfbm90ZXNfY29tbWl0KHQsIE5VTEwsICZidWYsIGNvbW1pdF9zaGExKTsKLQlzdHJidWZfaW5zZXJ0KCZidWYsIDAsICJub3RlczogIiwgNyk7IC8qIGNvbW1pdCBtZXNzYWdlIHN0YXJ0cyBhdCBpbmRleCA3ICovCi0JdXBkYXRlX3JlZihidWYuYnVmLCB0LT5yZWYsIGNvbW1pdF9zaGExLCBOVUxMLCAwLCBESUVfT05fRVJSKTsKLQotCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwotfQotCi1zdGF0aWMgY29tYmluZV9ub3Rlc19mbiBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKGNvbnN0IGNoYXIgKnYpCi17Ci0JaWYgKCFzdHJjYXNlY21wKHYsICJvdmVyd3JpdGUiKSkKLQkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfb3ZlcndyaXRlOwotCWVsc2UgaWYgKCFzdHJjYXNlY21wKHYsICJpZ25vcmUiKSkKLQkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfaWdub3JlOwotCWVsc2UgaWYgKCFzdHJjYXNlY21wKHYsICJjb25jYXRlbmF0ZSIpKQotCQlyZXR1cm4gY29tYmluZV9ub3Rlc19jb25jYXRlbmF0ZTsKLQllbHNlIGlmICghc3RyY2FzZWNtcCh2LCAiY2F0X3NvcnRfdW5pcSIpKQotCQlyZXR1cm4gY29tYmluZV9ub3Rlc19jYXRfc29ydF91bmlxOwotCWVsc2UKLQkJcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBpbnQgbm90ZXNfcmV3cml0ZV9jb25maWcoY29uc3QgY2hhciAqaywgY29uc3QgY2hhciAqdiwgdm9pZCAqY2IpCi17Ci0Jc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjID0gY2I7Ci0JaWYgKCFwcmVmaXhjbXAoaywgIm5vdGVzLnJld3JpdGUuIikgJiYgIXN0cmNtcChrKzE0LCBjLT5jbWQpKSB7Ci0JCWMtPmVuYWJsZWQgPSBnaXRfY29uZmlnX2Jvb2woaywgdik7Ci0JCXJldHVybiAwOwotCX0gZWxzZSBpZiAoIWMtPm1vZGVfZnJvbV9lbnYgJiYgIXN0cmNtcChrLCAibm90ZXMucmV3cml0ZW1vZGUiKSkgewotCQlpZiAoIXYpCi0JCQljb25maWdfZXJyb3Jfbm9uYm9vbChrKTsKLQkJYy0+Y29tYmluZSA9IHBhcnNlX2NvbWJpbmVfbm90ZXNfZm4odik7Ci0JCWlmICghYy0+Y29tYmluZSkgewotCQkJZXJyb3IoXygiQmFkIG5vdGVzLnJld3JpdGVNb2RlIHZhbHVlOiAnJXMnIiksIHYpOwotCQkJcmV0dXJuIDE7Ci0JCX0KLQkJcmV0dXJuIDA7Ci0JfSBlbHNlIGlmICghYy0+cmVmc19mcm9tX2VudiAmJiAhc3RyY21wKGssICJub3Rlcy5yZXdyaXRlcmVmIikpIHsKLQkJLyogbm90ZSB0aGF0IGEgcmVmcy8gcHJlZml4IGlzIGltcGxpZWQgaW4gdGhlCi0JCSAqIHVuZGVybHlpbmcgZm9yX2VhY2hfZ2xvYl9yZWYgKi8KLQkJaWYgKCFwcmVmaXhjbXAodiwgInJlZnMvbm90ZXMvIikpCi0JCQlzdHJpbmdfbGlzdF9hZGRfcmVmc19ieV9nbG9iKGMtPnJlZnMsIHYpOwotCQllbHNlCi0JCQl3YXJuaW5nKF8oIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMiCi0JCQkJIiAob3V0c2lkZSBvZiByZWZzL25vdGVzLykiKSwgdik7Ci0JCXJldHVybiAwOwotCX0KLQotCXJldHVybiAwOwotfQotCi0KLXN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqaW5pdF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGNvbnN0IGNoYXIgKmNtZCkKLXsKLQlzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmMgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcpKTsKLQljb25zdCBjaGFyICpyZXdyaXRlX21vZGVfZW52ID0gZ2V0ZW52KEdJVF9OT1RFU19SRVdSSVRFX01PREVfRU5WSVJPTk1FTlQpOwotCWNvbnN0IGNoYXIgKnJld3JpdGVfcmVmc19lbnYgPSBnZXRlbnYoR0lUX05PVEVTX1JFV1JJVEVfUkVGX0VOVklST05NRU5UKTsKLQljLT5jbWQgPSBjbWQ7Ci0JYy0+ZW5hYmxlZCA9IDE7Ci0JYy0+Y29tYmluZSA9IGNvbWJpbmVfbm90ZXNfY29uY2F0ZW5hdGU7Ci0JYy0+cmVmcyA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdHJpbmdfbGlzdCkpOwotCWMtPnJlZnMtPnN0cmR1cF9zdHJpbmdzID0gMTsKLQljLT5yZWZzX2Zyb21fZW52ID0gMDsKLQljLT5tb2RlX2Zyb21fZW52ID0gMDsKLQlpZiAocmV3cml0ZV9tb2RlX2VudikgewotCQljLT5tb2RlX2Zyb21fZW52ID0gMTsKLQkJYy0+Y29tYmluZSA9IHBhcnNlX2NvbWJpbmVfbm90ZXNfZm4ocmV3cml0ZV9tb2RlX2Vudik7Ci0JCWlmICghYy0+Y29tYmluZSkKLQkJCS8qIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCi0JCQkgICBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUgKi8KLQkJCWVycm9yKF8oIkJhZCAlcyB2YWx1ZTogJyVzJyIpLCBHSVRfTk9URVNfUkVXUklURV9NT0RFX0VOVklST05NRU5ULAotCQkJCQlyZXdyaXRlX21vZGVfZW52KTsKLQl9Ci0JaWYgKHJld3JpdGVfcmVmc19lbnYpIHsKLQkJYy0+cmVmc19mcm9tX2VudiA9IDE7Ci0JCXN0cmluZ19saXN0X2FkZF9yZWZzX2Zyb21fY29sb25fc2VwKGMtPnJlZnMsIHJld3JpdGVfcmVmc19lbnYpOwotCX0KLQlnaXRfY29uZmlnKG5vdGVzX3Jld3JpdGVfY29uZmlnLCBjKTsKLQlpZiAoIWMtPmVuYWJsZWQgfHwgIWMtPnJlZnMtPm5yKSB7Ci0JCXN0cmluZ19saXN0X2NsZWFyKGMtPnJlZnMsIDApOwotCQlmcmVlKGMtPnJlZnMpOwotCQlmcmVlKGMpOwotCQlyZXR1cm4gTlVMTDsKLQl9Ci0JYy0+dHJlZXMgPSBsb2FkX25vdGVzX3RyZWVzKGMtPnJlZnMpOwotCXN0cmluZ19saXN0X2NsZWFyKGMtPnJlZnMsIDApOwotCWZyZWUoYy0+cmVmcyk7Ci0JcmV0dXJuIGM7Ci19Ci0KLWludCBjb3B5X25vdGVfZm9yX3Jld3JpdGUoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjLAotCQkJICBjb25zdCB1bnNpZ25lZCBjaGFyICpmcm9tX29iaiwgY29uc3QgdW5zaWduZWQgY2hhciAqdG9fb2JqKQotewotCWludCByZXQgPSAwOwotCWludCBpOwotCWZvciAoaSA9IDA7IGMtPnRyZWVzW2ldOyBpKyspCi0JCXJldCA9IGNvcHlfbm90ZShjLT50cmVlc1tpXSwgZnJvbV9vYmosIHRvX29iaiwgMSwgYy0+Y29tYmluZSkgfHwgcmV0OwotCXJldHVybiByZXQ7Ci19Ci0KLXZvaWQgZmluaXNoX2NvcHlfbm90ZXNfZm9yX3Jld3JpdGUoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjKQotewotCWludCBpOwotCWZvciAoaSA9IDA7IGMtPnRyZWVzW2ldOyBpKyspIHsKLQkJY29tbWl0X25vdGVzKGMtPnRyZWVzW2ldLCAiTm90ZXMgYWRkZWQgYnkgJ2dpdCBub3RlcyBjb3B5JyIpOwotCQlmcmVlX25vdGVzKGMtPnRyZWVzW2ldKTsKLQl9Ci0JZnJlZShjLT50cmVlcyk7Ci0JZnJlZShjKTsKLX0KLQogc3RhdGljIGludCBub3Rlc19jb3B5X2Zyb21fc3RkaW4oaW50IGZvcmNlLCBjb25zdCBjaGFyICpyZXdyaXRlX2NtZCkKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCXN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYyA9IE5VTEw7CiAJc3RydWN0IG5vdGVzX3RyZWUgKnQgPSBOVUxMOwogCWludCByZXQgPSAwOworCWNvbnN0IGNoYXIgKm1zZyA9ICJOb3RlcyBhZGRlZCBieSAnZ2l0IG5vdGVzIGNvcHknIjsKIAogCWlmIChyZXdyaXRlX2NtZCkgewogCQljID0gaW5pdF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKHJld3JpdGVfY21kKTsKQEAgLTQ2MSwxMCArMzMzLDEwIEBACiAJfQogCiAJaWYgKCFyZXdyaXRlX2NtZCkgewotCQljb21taXRfbm90ZXModCwgIk5vdGVzIGFkZGVkIGJ5ICdnaXQgbm90ZXMgY29weSciKTsKKwkJY29tbWl0X25vdGVzKHQsIG1zZyk7CiAJCWZyZWVfbm90ZXModCk7CiAJfSBlbHNlIHsKLQkJZmluaXNoX2NvcHlfbm90ZXNfZm9yX3Jld3JpdGUoYyk7CisJCWZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGMsIG1zZyk7CiAJfQogCXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL3BhY2stcmVmcy5jIGIvYnVpbHRpbi9wYWNrLXJlZnMuYwppbmRleCBiNWEwZjg4Li5iMjBiMWVjIDEwMDY0NAotLS0gYS9idWlsdGluL3BhY2stcmVmcy5jCisrKyBiL2J1aWx0aW4vcGFjay1yZWZzLmMKQEAgLTEsNiArMSw2IEBACiAjaW5jbHVkZSAiYnVpbHRpbi5oIgogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKLSNpbmNsdWRlICJwYWNrLXJlZnMuaCIKKyNpbmNsdWRlICJyZWZzLmgiCiAKIHN0YXRpYyBjaGFyIGNvbnN0ICogY29uc3QgcGFja19yZWZzX3VzYWdlW10gPSB7CiAJTl8oImdpdCBwYWNrLXJlZnMgW29wdGlvbnNdIiksCmRpZmYgLS1naXQgYS9idWlsdGluL3BydW5lLXBhY2tlZC5jIGIvYnVpbHRpbi9wcnVuZS1wYWNrZWQuYwppbmRleCA4MzM4MmMxLi5mYTZjZTQyIDEwMDY0NAotLS0gYS9idWlsdGluL3BydW5lLXBhY2tlZC5jCisrKyBiL2J1aWx0aW4vcHJ1bmUtcGFja2VkLmMKQEAgLTgsOSArOCw2IEBACiAJTlVMTAogfTsKIAotI2RlZmluZSBEUllfUlVOIDAxCi0jZGVmaW5lIFZFUkJPU0UgMDIKLQogc3RhdGljIHN0cnVjdCBwcm9ncmVzcyAqcHJvZ3Jlc3M7CiAKIHN0YXRpYyB2b2lkIHBydW5lX2RpcihpbnQgaSwgRElSICpkaXIsIGNoYXIgKnBhdGhuYW1lLCBpbnQgbGVuLCBpbnQgb3B0cykKQEAgLTI5LDcgKzI2LDcgQEAKIAkJaWYgKCFoYXNfc2hhMV9wYWNrKHNoYTEpKQogCQkJY29udGludWU7CiAJCW1lbWNweShwYXRobmFtZSArIGxlbiwgZGUtPmRfbmFtZSwgMzgpOwotCQlpZiAob3B0cyAmIERSWV9SVU4pCisJCWlmIChvcHRzICYgUFJVTkVfUEFDS0VEX0RSWV9SVU4pCiAJCQlwcmludGYoInJtIC1mICVzXG4iLCBwYXRobmFtZSk7CiAJCWVsc2UKIAkJCXVubGlua19vcl93YXJuKHBhdGhuYW1lKTsKQEAgLTQ0LDcgKzQxLDcgQEAKIAljb25zdCBjaGFyICpkaXIgPSBnZXRfb2JqZWN0X2RpcmVjdG9yeSgpOwogCWludCBsZW4gPSBzdHJsZW4oZGlyKTsKIAotCWlmIChvcHRzID09IFZFUkJPU0UpCisJaWYgKG9wdHMgJiBQUlVORV9QQUNLRURfVkVSQk9TRSkKIAkJcHJvZ3Jlc3MgPSBzdGFydF9wcm9ncmVzc19kZWxheSgiUmVtb3ZpbmcgZHVwbGljYXRlIG9iamVjdHMiLAogCQkJMjU2LCA5NSwgMik7CiAKQEAgLTcxLDEwICs2OCwxMiBAQAogCiBpbnQgY21kX3BydW5lX3BhY2tlZChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlpbnQgb3B0cyA9IGlzYXR0eSgyKSA/IFZFUkJPU0UgOiAwOworCWludCBvcHRzID0gaXNhdHR5KDIpID8gUFJVTkVfUEFDS0VEX1ZFUkJPU0UgOiAwOwogCWNvbnN0IHN0cnVjdCBvcHRpb24gcHJ1bmVfcGFja2VkX29wdGlvbnNbXSA9IHsKLQkJT1BUX0JJVCgnbicsICJkcnktcnVuIiwgJm9wdHMsIE5fKCJkcnkgcnVuIiksIERSWV9SVU4pLAotCQlPUFRfTkVHQklUKCdxJywgInF1aWV0IiwgJm9wdHMsIE5fKCJiZSBxdWlldCIpLCBWRVJCT1NFKSwKKwkJT1BUX0JJVCgnbicsICJkcnktcnVuIiwgJm9wdHMsIE5fKCJkcnkgcnVuIiksCisJCQlQUlVORV9QQUNLRURfRFJZX1JVTiksCisJCU9QVF9ORUdCSVQoJ3EnLCAicXVpZXQiLCAmb3B0cywgTl8oImJlIHF1aWV0IiksCisJCQkgICBQUlVORV9QQUNLRURfVkVSQk9TRSksCiAJCU9QVF9FTkQoKQogCX07CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcHJ1bmUuYyBiL2J1aWx0aW4vcHJ1bmUuYwppbmRleCA4NTg0M2Q0Li42MzY2OTE3IDEwMDY0NAotLS0gYS9idWlsdGluL3BydW5lLmMKKysrIGIvYnVpbHRpbi9wcnVuZS5jCkBAIC0xMzIsOCArMTMyLDggQEAKIAkJT1BUX19EUllfUlVOKCZzaG93X29ubHksIE5fKCJkbyBub3QgcmVtb3ZlLCBzaG93IG9ubHkiKSksCiAJCU9QVF9fVkVSQk9TRSgmdmVyYm9zZSwgTl8oInJlcG9ydCBwcnVuZWQgb2JqZWN0cyIpKSwKIAkJT1BUX0JPT0woMCwgInByb2dyZXNzIiwgJnNob3dfcHJvZ3Jlc3MsIE5fKCJzaG93IHByb2dyZXNzIikpLAotCQlPUFRfREFURSgwLCAiZXhwaXJlIiwgJmV4cGlyZSwKLQkJCSBOXygiZXhwaXJlIG9iamVjdHMgb2xkZXIgdGhhbiA8dGltZT4iKSksCisJCU9QVF9FWFBJUllfREFURSgwLCAiZXhwaXJlIiwgJmV4cGlyZSwKKwkJCQlOXygiZXhwaXJlIG9iamVjdHMgb2xkZXIgdGhhbiA8dGltZT4iKSksCiAJCU9QVF9FTkQoKQogCX07CiAJY2hhciAqczsKQEAgLTE2NSw3ICsxNjUsNyBAQAogCXN0b3BfcHJvZ3Jlc3MoJnByb2dyZXNzKTsKIAlwcnVuZV9vYmplY3RfZGlyKGdldF9vYmplY3RfZGlyZWN0b3J5KCkpOwogCi0JcHJ1bmVfcGFja2VkX29iamVjdHMoc2hvd19vbmx5KTsKKwlwcnVuZV9wYWNrZWRfb2JqZWN0cyhzaG93X29ubHkgPyBQUlVORV9QQUNLRURfRFJZX1JVTiA6IDApOwogCXJlbW92ZV90ZW1wb3JhcnlfZmlsZXMoZ2V0X29iamVjdF9kaXJlY3RvcnkoKSk7CiAJcyA9IG1rcGF0aGR1cCgiJXMvcGFjayIsIGdldF9vYmplY3RfZGlyZWN0b3J5KCkpOwogCXJlbW92ZV90ZW1wb3JhcnlfZmlsZXMocyk7CmRpZmYgLS1naXQgYS9idWlsdGluL3B1c2guYyBiL2J1aWx0aW4vcHVzaC5jCmluZGV4IDJkODRkMTAuLjA0ZjBlYWYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcHVzaC5jCisrKyBiL2J1aWx0aW4vcHVzaC5jCkBAIC05Miw3ICs5Miw3IEBACiAJaWYgKCFzaG9ydF91cHN0cmVhbSkKIAkJc2hvcnRfdXBzdHJlYW0gPSBicmFuY2gtPm1lcmdlWzBdLT5zcmM7CiAJLyoKLQkgKiBEb24ndCBzaG93IGFkdmljZSBmb3IgcGVvcGxlIHdobyBleHBsaWNpdGVseSBzZXQKKwkgKiBEb24ndCBzaG93IGFkdmljZSBmb3IgcGVvcGxlIHdobyBleHBsaWNpdGx5IHNldAogCSAqIHB1c2guZGVmYXVsdC4KIAkgKi8KIAlpZiAocHVzaF9kZWZhdWx0ID09IFBVU0hfREVGQVVMVF9VTlNQRUNJRklFRCkKQEAgLTEyMCwxMCArMTIwLDExIEBACiAJICAgIlxuIgogCSAgICIgICAgZ2l0IHB1c2ggJXMgSEVBRDo8bmFtZS1vZi1yZW1vdGUtYnJhbmNoPlxuIik7CiAKLXN0YXRpYyB2b2lkIHNldHVwX3B1c2hfdXBzdHJlYW0oc3RydWN0IHJlbW90ZSAqcmVtb3RlLCBpbnQgc2ltcGxlKQorc3RhdGljIHZvaWQgc2V0dXBfcHVzaF91cHN0cmVhbShzdHJ1Y3QgcmVtb3RlICpyZW1vdGUsIHN0cnVjdCBicmFuY2ggKmJyYW5jaCwKKwkJCQlpbnQgdHJpYW5ndWxhcikKIHsKIAlzdHJ1Y3Qgc3RyYnVmIHJlZnNwZWMgPSBTVFJCVUZfSU5JVDsKLQlzdHJ1Y3QgYnJhbmNoICpicmFuY2ggPSBicmFuY2hfZ2V0KE5VTEwpOworCiAJaWYgKCFicmFuY2gpCiAJCWRpZShfKG1lc3NhZ2VfZGV0YWNoZWRfaGVhZF9kaWUpLCByZW1vdGUtPm5hbWUpOwogCWlmICghYnJhbmNoLT5tZXJnZV9uciB8fCAhYnJhbmNoLT5tZXJnZSB8fCAhYnJhbmNoLT5yZW1vdGVfbmFtZSkKQEAgLTEzNywxOCArMTM4LDI5IEBACiAJaWYgKGJyYW5jaC0+bWVyZ2VfbnIgIT0gMSkKIAkJZGllKF8oIlRoZSBjdXJyZW50IGJyYW5jaCAlcyBoYXMgbXVsdGlwbGUgdXBzdHJlYW0gYnJhbmNoZXMsICIKIAkJICAgICJyZWZ1c2luZyB0byBwdXNoLiIpLCBicmFuY2gtPm5hbWUpOwotCWlmIChzdHJjbXAoYnJhbmNoLT5yZW1vdGVfbmFtZSwgcmVtb3RlLT5uYW1lKSkKKwlpZiAodHJpYW5ndWxhcikKIAkJZGllKF8oIllvdSBhcmUgcHVzaGluZyB0byByZW1vdGUgJyVzJywgd2hpY2ggaXMgbm90IHRoZSB1cHN0cmVhbSBvZlxuIgogCQkgICAgICAieW91ciBjdXJyZW50IGJyYW5jaCAnJXMnLCB3aXRob3V0IHRlbGxpbmcgbWUgd2hhdCB0byBwdXNoXG4iCiAJCSAgICAgICJ0byB1cGRhdGUgd2hpY2ggcmVtb3RlIGJyYW5jaC4iKSwKIAkJICAgIHJlbW90ZS0+bmFtZSwgYnJhbmNoLT5uYW1lKTsKLQlpZiAoc2ltcGxlICYmIHN0cmNtcChicmFuY2gtPnJlZm5hbWUsIGJyYW5jaC0+bWVyZ2VbMF0tPnNyYykpCi0JCWRpZV9wdXNoX3NpbXBsZShicmFuY2gsIHJlbW90ZSk7CisKKwlpZiAocHVzaF9kZWZhdWx0ID09IFBVU0hfREVGQVVMVF9TSU1QTEUpIHsKKwkJLyogQWRkaXRpb25hbCBzYWZldHkgKi8KKwkJaWYgKHN0cmNtcChicmFuY2gtPnJlZm5hbWUsIGJyYW5jaC0+bWVyZ2VbMF0tPnNyYykpCisJCQlkaWVfcHVzaF9zaW1wbGUoYnJhbmNoLCByZW1vdGUpOworCX0KIAogCXN0cmJ1Zl9hZGRmKCZyZWZzcGVjLCAiJXM6JXMiLCBicmFuY2gtPm5hbWUsIGJyYW5jaC0+bWVyZ2VbMF0tPnNyYyk7CiAJYWRkX3JlZnNwZWMocmVmc3BlYy5idWYpOwogfQogCitzdGF0aWMgdm9pZCBzZXR1cF9wdXNoX2N1cnJlbnQoc3RydWN0IHJlbW90ZSAqcmVtb3RlLCBzdHJ1Y3QgYnJhbmNoICpicmFuY2gpCit7CisJaWYgKCFicmFuY2gpCisJCWRpZShfKG1lc3NhZ2VfZGV0YWNoZWRfaGVhZF9kaWUpLCByZW1vdGUtPm5hbWUpOworCWFkZF9yZWZzcGVjKGJyYW5jaC0+bmFtZSk7Cit9CisKIHN0YXRpYyBjaGFyIHdhcm5fdW5zcGVjaWZpZWRfcHVzaF9kZWZhdWx0X21zZ1tdID0KIE5fKCJwdXNoLmRlZmF1bHQgaXMgdW5zZXQ7IGl0cyBpbXBsaWNpdCB2YWx1ZSBpcyBjaGFuZ2luZyBpblxuIgogICAgIkdpdCAyLjAgZnJvbSAnbWF0Y2hpbmcnIHRvICdzaW1wbGUnLiBUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZVxuIgpAQCAtMTczLDkgKzE4NSwxNiBAQAogCXdhcm5pbmcoIiVzXG4iLCBfKHdhcm5fdW5zcGVjaWZpZWRfcHVzaF9kZWZhdWx0X21zZykpOwogfQogCitzdGF0aWMgaW50IGlzX3dvcmtmbG93X3RyaWFuZ3VsYXIoc3RydWN0IHJlbW90ZSAqcmVtb3RlKQoreworCXN0cnVjdCByZW1vdGUgKmZldGNoX3JlbW90ZSA9IHJlbW90ZV9nZXQoTlVMTCk7CisJcmV0dXJuIChmZXRjaF9yZW1vdGUgJiYgZmV0Y2hfcmVtb3RlICE9IHJlbW90ZSk7Cit9CisKIHN0YXRpYyB2b2lkIHNldHVwX2RlZmF1bHRfcHVzaF9yZWZzcGVjcyhzdHJ1Y3QgcmVtb3RlICpyZW1vdGUpCiB7Ci0Jc3RydWN0IGJyYW5jaCAqYnJhbmNoOworCXN0cnVjdCBicmFuY2ggKmJyYW5jaCA9IGJyYW5jaF9nZXQoTlVMTCk7CisJaW50IHRyaWFuZ3VsYXIgPSBpc193b3JrZmxvd190cmlhbmd1bGFyKHJlbW90ZSk7CiAKIAlzd2l0Y2ggKHB1c2hfZGVmYXVsdCkgewogCWRlZmF1bHQ6CkBAIC0xODgsMTggKzIwNywxOCBAQAogCQlicmVhazsKIAogCWNhc2UgUFVTSF9ERUZBVUxUX1NJTVBMRToKLQkJc2V0dXBfcHVzaF91cHN0cmVhbShyZW1vdGUsIDEpOworCQlpZiAodHJpYW5ndWxhcikKKwkJCXNldHVwX3B1c2hfY3VycmVudChyZW1vdGUsIGJyYW5jaCk7CisJCWVsc2UKKwkJCXNldHVwX3B1c2hfdXBzdHJlYW0ocmVtb3RlLCBicmFuY2gsIHRyaWFuZ3VsYXIpOwogCQlicmVhazsKIAogCWNhc2UgUFVTSF9ERUZBVUxUX1VQU1RSRUFNOgotCQlzZXR1cF9wdXNoX3Vwc3RyZWFtKHJlbW90ZSwgMCk7CisJCXNldHVwX3B1c2hfdXBzdHJlYW0ocmVtb3RlLCBicmFuY2gsIHRyaWFuZ3VsYXIpOwogCQlicmVhazsKIAogCWNhc2UgUFVTSF9ERUZBVUxUX0NVUlJFTlQ6Ci0JCWJyYW5jaCA9IGJyYW5jaF9nZXQoTlVMTCk7Ci0JCWlmICghYnJhbmNoKQotCQkJZGllKF8obWVzc2FnZV9kZXRhY2hlZF9oZWFkX2RpZSksIHJlbW90ZS0+bmFtZSk7Ci0JCWFkZF9yZWZzcGVjKGJyYW5jaC0+bmFtZSk7CisJCXNldHVwX3B1c2hfY3VycmVudChyZW1vdGUsIGJyYW5jaCk7CiAJCWJyZWFrOwogCiAJY2FzZSBQVVNIX0RFRkFVTFRfTk9USElORzoKQEAgLTIxMSw4ICsyMzAsOCBAQAogCiBzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2FkdmljZV9wdWxsX2JlZm9yZV9wdXNoW10gPQogCU5fKCJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGlwIG9mIHlvdXIgY3VycmVudCBicmFuY2ggaXMgYmVoaW5kXG4iCi0JICAgIml0cyByZW1vdGUgY291bnRlcnBhcnQuIE1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKVxuIgotCSAgICJiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKwkgICAiaXRzIHJlbW90ZSBjb3VudGVycGFydC4gSW50ZWdyYXRlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLlxuIgorCSAgICInZ2l0IHB1bGwgLi4uJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAJICAgIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIik7CiAKIHN0YXRpYyBjb25zdCBjaGFyIG1lc3NhZ2VfYWR2aWNlX3VzZV91cHN0cmVhbVtdID0KQEAgLTIyMywxNSArMjQyLDE1IEBACiAKIHN0YXRpYyBjb25zdCBjaGFyIG1lc3NhZ2VfYWR2aWNlX2NoZWNrb3V0X3B1bGxfcHVzaFtdID0KIAlOXygiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgotCSAgICJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKLQkgICAiKGUuZy4gJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisJICAgImNvdW50ZXJwYXJ0LiBDaGVjayBvdXQgdGhpcyBicmFuY2ggYW5kIGludGVncmF0ZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKKwkgICAiKGUuZy4gJ2dpdCBwdWxsIC4uLicpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgogCSAgICJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIpOwogCiBzdGF0aWMgY29uc3QgY2hhciBtZXNzYWdlX2FkdmljZV9yZWZfZmV0Y2hfZmlyc3RbXSA9CiAJTl8oIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgogCSAgICJub3QgaGF2ZSBsb2NhbGx5LiBUaGlzIGlzIHVzdWFsbHkgY2F1c2VkIGJ5IGFub3RoZXIgcmVwb3NpdG9yeSBwdXNoaW5nXG4iCi0JICAgInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLixcbiIKLQkgICAiJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisJICAgInRvIHRoZSBzYW1lIHJlZi4gWW91IG1heSB3YW50IHRvIGZpcnN0IGludGVncmF0ZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKKwkgICAiKGUuZy4sICdnaXQgcHVsbCAuLi4nKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKIAkgICAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iKTsKIAogc3RhdGljIGNvbnN0IGNoYXIgbWVzc2FnZV9hZHZpY2VfcmVmX2FscmVhZHlfZXhpc3RzW10gPQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZWFkLXRyZWUuYyBiL2J1aWx0aW4vcmVhZC10cmVlLmMKaW5kZXggMDQyYWMxYi4uMGY1ZDdmZSAxMDA2NDQKLS0tIGEvYnVpbHRpbi9yZWFkLXRyZWUuYworKysgYi9idWlsdGluL3JlYWQtdHJlZS5jCkBAIC02Niw3ICs2Niw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyB2b2lkIGRlYnVnX3N0YWdlKGNvbnN0IGNoYXIgKmxhYmVsLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIHZvaWQgZGVidWdfc3RhZ2UoY29uc3QgY2hhciAqbGFiZWwsIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJcHJpbnRmKCIlcyAiLCBsYWJlbCk7CkBAIC04MCw3ICs4MCw4IEBACiAJCSAgICAgICBzaGExX3RvX2hleChjZS0+c2hhMSkpOwogfQogCi1zdGF0aWMgaW50IGRlYnVnX21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnN0YWdlcywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCBkZWJ1Z19tZXJnZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqc3RhZ2VzLAorCQkgICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCWludCBpOwogCmRpZmYgLS1naXQgYS9idWlsdGluL3JlZmxvZy5jIGIvYnVpbHRpbi9yZWZsb2cuYwppbmRleCA3MmEwYWY3Li41NDE4NGIzIDEwMDY0NAotLS0gYS9idWlsdGluL3JlZmxvZy5jCisrKyBiL2J1aWx0aW4vcmVmbG9nLmMKQEAgLTQ5NiwxMSArNDk2LDkgQEAKIHsKIAlpZiAoIXZhbHVlKQogCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKLQlpZiAoIXN0cmNtcCh2YWx1ZSwgIm5ldmVyIikgfHwgIXN0cmNtcCh2YWx1ZSwgImZhbHNlIikpIHsKLQkJKmV4cGlyZSA9IDA7Ci0JCXJldHVybiAwOwotCX0KLQkqZXhwaXJlID0gYXBwcm94aWRhdGUodmFsdWUpOworCWlmIChwYXJzZV9leHBpcnlfZGF0ZSh2YWx1ZSwgZXhwaXJlKSkKKwkJcmV0dXJuIGVycm9yKF8oIiVzJyBmb3IgJyVzJyBpcyBub3QgYSB2YWxpZCB0aW1lc3RhbXAiKSwKKwkJCSAgICAgdmFsdWUsIHZhcik7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTYxNCwxMSArNjEyLDEzIEBACiAJCWlmICghc3RyY21wKGFyZywgIi0tZHJ5LXJ1biIpIHx8ICFzdHJjbXAoYXJnLCAiLW4iKSkKIAkJCWNiLmRyeV9ydW4gPSAxOwogCQllbHNlIGlmICghcHJlZml4Y21wKGFyZywgIi0tZXhwaXJlPSIpKSB7Ci0JCQljYi5leHBpcmVfdG90YWwgPSBhcHByb3hpZGF0ZShhcmcgKyA5KTsKKwkJCWlmIChwYXJzZV9leHBpcnlfZGF0ZShhcmcgKyA5LCAmY2IuZXhwaXJlX3RvdGFsKSkKKwkJCQlkaWUoXygiJyVzJyBpcyBub3QgYSB2YWxpZCB0aW1lc3RhbXAiKSwgYXJnKTsKIAkJCWV4cGxpY2l0X2V4cGlyeSB8PSBFWFBJUkVfVE9UQUw7CiAJCX0KIAkJZWxzZSBpZiAoIXByZWZpeGNtcChhcmcsICItLWV4cGlyZS11bnJlYWNoYWJsZT0iKSkgewotCQkJY2IuZXhwaXJlX3VucmVhY2hhYmxlID0gYXBwcm94aWRhdGUoYXJnICsgMjEpOworCQkJaWYgKHBhcnNlX2V4cGlyeV9kYXRlKGFyZyArIDIxLCAmY2IuZXhwaXJlX3VucmVhY2hhYmxlKSkKKwkJCQlkaWUoXygiJyVzJyBpcyBub3QgYSB2YWxpZCB0aW1lc3RhbXAiKSwgYXJnKTsKIAkJCWV4cGxpY2l0X2V4cGlyeSB8PSBFWFBJUkVfVU5SRUFDSDsKIAkJfQogCQllbHNlIGlmICghc3RyY21wKGFyZywgIi0tc3RhbGUtZml4IikpCmRpZmYgLS1naXQgYS9idWlsdGluL3Jlc2V0LmMgYi9idWlsdGluL3Jlc2V0LmMKaW5kZXggNjAzMjEzMS4uYWZhNmUwMiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9yZXNldC5jCisrKyBiL2J1aWx0aW4vcmVzZXQuYwpAQCAtOTMsMTAgKzkzLDEyIEBACiBzdGF0aWMgdm9pZCBwcmludF9uZXdfaGVhZF9saW5lKHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKIAljb25zdCBjaGFyICpoZXgsICpib2R5OworCWNoYXIgKm1zZzsKIAogCWhleCA9IGZpbmRfdW5pcXVlX2FiYnJldihjb21taXQtPm9iamVjdC5zaGExLCBERUZBVUxUX0FCQlJFVik7CiAJcHJpbnRmKF8oIkhFQUQgaXMgbm93IGF0ICVzIiksIGhleCk7Ci0JYm9keSA9IHN0cnN0cihjb21taXQtPmJ1ZmZlciwgIlxuXG4iKTsKKwltc2cgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpKTsKKwlib2R5ID0gc3Ryc3RyKG1zZywgIlxuXG4iKTsKIAlpZiAoYm9keSkgewogCQljb25zdCBjaGFyICplb2w7CiAJCXNpemVfdCBsZW47CkBAIC0xMDcsNiArMTA5LDcgQEAKIAl9CiAJZWxzZQogCQlwcmludGYoIlxuIik7CisJbG9nbXNnX2ZyZWUobXNnLCBjb21taXQpOwogfQogCiBzdGF0aWMgdm9pZCB1cGRhdGVfaW5kZXhfZnJvbV9kaWZmKHN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCAqcSwKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmV2LWxpc3QuYyBiL2J1aWx0aW4vcmV2LWxpc3QuYwppbmRleCA2NzcwMWJlLi5hNWVjMzBkIDEwMDY0NAotLS0gYS9idWlsdGluL3Jldi1saXN0LmMKKysrIGIvYnVpbHRpbi9yZXYtbGlzdC5jCkBAIC0xMTEsNiArMTExLDcgQEAKIAkJY3R4LmRhdGVfbW9kZSA9IHJldnMtPmRhdGVfbW9kZTsKIAkJY3R4LmRhdGVfbW9kZV9leHBsaWNpdCA9IHJldnMtPmRhdGVfbW9kZV9leHBsaWNpdDsKIAkJY3R4LmZtdCA9IHJldnMtPmNvbW1pdF9mb3JtYXQ7CisJCWN0eC5vdXRwdXRfZW5jb2RpbmcgPSBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpOwogCQlwcmV0dHlfcHJpbnRfY29tbWl0KCZjdHgsIGNvbW1pdCwgJmJ1Zik7CiAJCWlmIChyZXZzLT5ncmFwaCkgewogCQkJaWYgKGJ1Zi5sZW4pIHsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmV2LXBhcnNlLmMgYi9idWlsdGluL3Jldi1wYXJzZS5jCmluZGV4IGYyNjdhMWQuLmRlODk0YzcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmV2LXBhcnNlLmMKKysrIGIvYnVpbHRpbi9yZXYtcGFyc2UuYwpAQCAtMjEyLDExICsyMTIsMTcgQEAKIAlzaG93KGJ1ZmZlcik7CiB9CiAKLXN0YXRpYyBpbnQgc2hvd19maWxlKGNvbnN0IGNoYXIgKmFyZykKK3N0YXRpYyBpbnQgc2hvd19maWxlKGNvbnN0IGNoYXIgKmFyZywgaW50IG91dHB1dF9wcmVmaXgpCiB7CiAJc2hvd19kZWZhdWx0KCk7CiAJaWYgKChmaWx0ZXIgJiAoRE9fTk9ORkxBR1N8RE9fTk9SRVYpKSA9PSAoRE9fTk9ORkxBR1N8RE9fTk9SRVYpKSB7Ci0JCXNob3coYXJnKTsKKwkJaWYgKG91dHB1dF9wcmVmaXgpIHsKKwkJCWNvbnN0IGNoYXIgKnByZWZpeCA9IHN0YXJ0dXBfaW5mby0+cHJlZml4OworCQkJc2hvdyhwcmVmaXhfZmlsZW5hbWUocHJlZml4LAorCQkJCQkgICAgIHByZWZpeCA/IHN0cmxlbihwcmVmaXgpIDogMCwKKwkJCQkJICAgICBhcmcpKTsKKwkJfSBlbHNlCisJCQlzaG93KGFyZyk7CiAJCXJldHVybiAxOwogCX0KIAlyZXR1cm4gMDsKQEAgLTQ3MCw2ICs0NzYsNyBAQAogaW50IGNtZF9yZXZfcGFyc2UoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJaW50IGksIGFzX2lzID0gMCwgdmVyaWZ5ID0gMCwgcXVpZXQgPSAwLCByZXZzX2NvdW50ID0gMCwgdHlwZSA9IDA7CisJaW50IG91dHB1dF9wcmVmaXggPSAwOwogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7CiAKQEAgLTUwMyw3ICs1MTAsNyBAQAogCQljb25zdCBjaGFyICphcmcgPSBhcmd2W2ldOwogCiAJCWlmIChhc19pcykgewotCQkJaWYgKHNob3dfZmlsZShhcmcpICYmIGFzX2lzIDwgMikKKwkJCWlmIChzaG93X2ZpbGUoYXJnLCBvdXRwdXRfcHJlZml4KSAmJiBhc19pcyA8IDIpCiAJCQkJdmVyaWZ5X2ZpbGVuYW1lKHByZWZpeCwgYXJnLCAwKTsKIAkJCWNvbnRpbnVlOwogCQl9CkBAIC01MjcsNyArNTM0LDcgQEAKIAkJCQlhc19pcyA9IDI7CiAJCQkJLyogUGFzcyBvbiB0aGUgIi0tIiBpZiB3ZSBzaG93IGFueXRoaW5nIGJ1dCBmaWxlcy4uICovCiAJCQkJaWYgKGZpbHRlciAmIChET19GTEFHUyB8IERPX1JFVlMpKQotCQkJCQlzaG93X2ZpbGUoYXJnKTsKKwkJCQkJc2hvd19maWxlKGFyZywgMCk7CiAJCQkJY29udGludWU7CiAJCQl9CiAJCQlpZiAoIXN0cmNtcChhcmcsICItLWRlZmF1bHQiKSkgewpAQCAtNTM1LDYgKzU0MiwxMyBAQAogCQkJCWkrKzsKIAkJCQljb250aW51ZTsKIAkJCX0KKwkJCWlmICghc3RyY21wKGFyZywgIi0tcHJlZml4IikpIHsKKwkJCQlwcmVmaXggPSBhcmd2W2krMV07CisJCQkJc3RhcnR1cF9pbmZvLT5wcmVmaXggPSBwcmVmaXg7CisJCQkJb3V0cHV0X3ByZWZpeCA9IDE7CisJCQkJaSsrOworCQkJCWNvbnRpbnVlOworCQkJfQogCQkJaWYgKCFzdHJjbXAoYXJnLCAiLS1yZXZzLW9ubHkiKSkgewogCQkJCWZpbHRlciAmPSB+RE9fTk9SRVY7CiAJCQkJY29udGludWU7CkBAIC03NTQsNyArNzY4LDcgQEAKIAkJaWYgKHZlcmlmeSkKIAkJCWRpZV9ub19zaW5nbGVfcmV2KHF1aWV0KTsKIAkJYXNfaXMgPSAxOwotCQlpZiAoIXNob3dfZmlsZShhcmcpKQorCQlpZiAoIXNob3dfZmlsZShhcmcsIG91dHB1dF9wcmVmaXgpKQogCQkJY29udGludWU7CiAJCXZlcmlmeV9maWxlbmFtZShwcmVmaXgsIGFyZywgMSk7CiAJfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9yZXZlcnQuYyBiL2J1aWx0aW4vcmV2ZXJ0LmMKaW5kZXggMDQwMWZkYi4uMWQyNjQ4YiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9yZXZlcnQuYworKysgYi9idWlsdGluL3JldmVydC5jCkBAIC01NCw2ICs1NCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKK0xBU1RfQVJHX01VU1RfQkVfTlVMTAogc3RhdGljIHZvaWQgdmVyaWZ5X29wdF9jb21wYXRpYmxlKGNvbnN0IGNoYXIgKm1lLCBjb25zdCBjaGFyICpiYXNlX29wdCwgLi4uKQogewogCWNvbnN0IGNoYXIgKnRoaXNfb3B0OwpAQCAtNzAsNiArNzEsNyBAQAogCQlkaWUoXygiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiKSwgbWUsIHRoaXNfb3B0LCBiYXNlX29wdCk7CiB9CiAKK0xBU1RfQVJHX01VU1RfQkVfTlVMTAogc3RhdGljIHZvaWQgdmVyaWZ5X29wdF9tdXR1YWxseV9jb21wYXRpYmxlKGNvbnN0IGNoYXIgKm1lLCAuLi4pCiB7CiAJY29uc3QgY2hhciAqb3B0MSwgKm9wdDIgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9ybS5jIGIvYnVpbHRpbi9ybS5jCmluZGV4IDdiOTFkNTIuLjBkZjBiNGQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcm0uYworKysgYi9idWlsdGluL3JtLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSAiY2FjaGUtdHJlZS5oIgogI2luY2x1ZGUgInRyZWUtd2Fsay5oIgogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKKyNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgogI2luY2x1ZGUgInN1Ym1vZHVsZS5oIgogCiBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fcm1fdXNhZ2VbXSA9IHsKQEAgLTM2LDE1ICszNyw1MiBAQAogCXJldHVybiAtMTsKIH0KIAorc3RhdGljIHZvaWQgcHJpbnRfZXJyb3JfZmlsZXMoc3RydWN0IHN0cmluZ19saXN0ICpmaWxlc19saXN0LAorCQkJICAgICAgY29uc3QgY2hhciAqbWFpbl9tc2csCisJCQkgICAgICBjb25zdCBjaGFyICpoaW50c19tc2csCisJCQkgICAgICBpbnQgKmVycnMpCit7CisJaWYgKGZpbGVzX2xpc3QtPm5yKSB7CisJCWludCBpOworCQlzdHJ1Y3Qgc3RyYnVmIGVycl9tc2cgPSBTVFJCVUZfSU5JVDsKKworCQlzdHJidWZfYWRkc3RyKCZlcnJfbXNnLCBtYWluX21zZyk7CisJCWZvciAoaSA9IDA7IGkgPCBmaWxlc19saXN0LT5ucjsgaSsrKQorCQkJc3RyYnVmX2FkZGYoJmVycl9tc2csCisJCQkJICAgICJcbiAgICAlcyIsCisJCQkJICAgIGZpbGVzX2xpc3QtPml0ZW1zW2ldLnN0cmluZyk7CisJCWlmIChhZHZpY2Vfcm1faGludHMpCisJCQlzdHJidWZfYWRkc3RyKCZlcnJfbXNnLCBoaW50c19tc2cpOworCQkqZXJycyA9IGVycm9yKCIlcyIsIGVycl9tc2cuYnVmKTsKKwkJc3RyYnVmX3JlbGVhc2UoJmVycl9tc2cpOworCX0KK30KKworc3RhdGljIHZvaWQgZXJyb3JfcmVtb3ZpbmdfY29uY3JldGVfc3VibW9kdWxlcyhzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmZpbGVzLCBpbnQgKmVycnMpCit7CisJcHJpbnRfZXJyb3JfZmlsZXMoZmlsZXMsCisJCQkgIFFfKCJ0aGUgZm9sbG93aW5nIHN1Ym1vZHVsZSAob3Igb25lIG9mIGl0cyBuZXN0ZWQgIgorCQkJICAgICAic3VibW9kdWxlcylcbiIKKwkJCSAgICAgInVzZXMgYSAuZ2l0IGRpcmVjdG9yeToiLAorCQkJICAgICAidGhlIGZvbGxvd2luZyBzdWJtb2R1bGVzIChvciBvbmUgb2YgaXRzIG5lc3RlZCAiCisJCQkgICAgICJzdWJtb2R1bGVzKVxuIgorCQkJICAgICAidXNlIGEgLmdpdCBkaXJlY3Rvcnk6IiwgZmlsZXMtPm5yKSwKKwkJCSAgXygiXG4odXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgIgorCQkJICAgICJpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIpLAorCQkJICBlcnJzKTsKKwlzdHJpbmdfbGlzdF9jbGVhcihmaWxlcywgMCk7Cit9CisKIHN0YXRpYyBpbnQgY2hlY2tfc3VibW9kdWxlc191c2VfZ2l0ZmlsZXModm9pZCkKIHsKIAlpbnQgaTsKIAlpbnQgZXJycyA9IDA7CisJc3RydWN0IHN0cmluZ19saXN0IGZpbGVzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAogCWZvciAoaSA9IDA7IGkgPCBsaXN0Lm5yOyBpKyspIHsKIAkJY29uc3QgY2hhciAqbmFtZSA9IGxpc3QuZW50cnlbaV0ubmFtZTsKIAkJaW50IHBvczsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAkJc3RydWN0IHN0YXQgc3Q7CiAKIAkJcG9zID0gY2FjaGVfbmFtZV9wb3MobmFtZSwgc3RybGVuKG5hbWUpKTsKQEAgLTYxLDEyICs5OSwxMSBAQAogCQkJY29udGludWU7CiAKIAkJaWYgKCFzdWJtb2R1bGVfdXNlc19naXRmaWxlKG5hbWUpKQotCQkJZXJycyA9IGVycm9yKF8oInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCAiCi0JCQkJICAgICAic3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCi0JCQkJICAgICAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlICIKLQkJCQkgICAgICJpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIpLCBuYW1lKTsKKwkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXMsIG5hbWUpOwogCX0KIAorCWVycm9yX3JlbW92aW5nX2NvbmNyZXRlX3N1Ym1vZHVsZXMoJmZpbGVzLCAmZXJycyk7CisKIAlyZXR1cm4gZXJyczsKIH0KIApAQCAtODEsMTIgKzExOCwxNiBAQAogCSAqLwogCWludCBpLCBub19oZWFkOwogCWludCBlcnJzID0gMDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZmlsZXNfc3RhZ2VkID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZmlsZXNfY2FjaGVkID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZmlsZXNfc3VibW9kdWxlID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgZmlsZXNfbG9jYWwgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogCiAJbm9faGVhZCA9IGlzX251bGxfc2hhMShoZWFkKTsKIAlmb3IgKGkgPSAwOyBpIDwgbGlzdC5ucjsgaSsrKSB7CiAJCXN0cnVjdCBzdGF0IHN0OwogCQlpbnQgcG9zOwotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCQljb25zdCBjaGFyICpuYW1lID0gbGlzdC5lbnRyeVtpXS5uYW1lOwogCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCQl1bnNpZ25lZCBtb2RlOwpAQCAtMTcxLDI5ICsyMTIsNTAgQEAKIAkJICovCiAJCWlmIChsb2NhbF9jaGFuZ2VzICYmIHN0YWdlZF9jaGFuZ2VzKSB7CiAJCQlpZiAoIWluZGV4X29ubHkgfHwgIShjZS0+Y2VfZmxhZ3MgJiBDRV9JTlRFTlRfVE9fQUREKSkKLQkJCQllcnJzID0gZXJyb3IoXygiJyVzJyBoYXMgc3RhZ2VkIGNvbnRlbnQgZGlmZmVyZW50ICIKLQkJCQkJICAgICAiZnJvbSBib3RoIHRoZSBmaWxlIGFuZCB0aGUgSEVBRFxuIgotCQkJCQkgICAgICIodXNlIC1mIHRvIGZvcmNlIHJlbW92YWwpIiksIG5hbWUpOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfc3RhZ2VkLCBuYW1lKTsKIAkJfQogCQllbHNlIGlmICghaW5kZXhfb25seSkgewogCQkJaWYgKHN0YWdlZF9jaGFuZ2VzKQotCQkJCWVycnMgPSBlcnJvcihfKCInJXMnIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXhcbiIKLQkJCQkJICAgICAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCAiCi0JCQkJCSAgICAgIm9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIiksIG5hbWUpOworCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfY2FjaGVkLCBuYW1lKTsKIAkJCWlmIChsb2NhbF9jaGFuZ2VzKSB7CiAJCQkJaWYgKFNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKSAmJgotCQkJCSAgICAhc3VibW9kdWxlX3VzZXNfZ2l0ZmlsZShuYW1lKSkgewotCQkJCQllcnJzID0gZXJyb3IoXygic3VibW9kdWxlICclcycgKG9yIG9uZSBvZiBpdHMgbmVzdGVkICIKLQkJCQkJCSAgICAgInN1Ym1vZHVsZXMpIHVzZXMgYSAuZ2l0IGRpcmVjdG9yeVxuIgotCQkJCQkJICAgICAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlICIKLQkJCQkJCSAgICAgIml0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIiksIG5hbWUpOwotCQkJCX0gZWxzZQotCQkJCQllcnJzID0gZXJyb3IoXygiJyVzJyBoYXMgbG9jYWwgbW9kaWZpY2F0aW9uc1xuIgotCQkJCQkJICAgICAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCAiCi0JCQkJCQkgICAgICJvciAtZiB0byBmb3JjZSByZW1vdmFsKSIpLCBuYW1lKTsKKwkJCQkgICAgIXN1Ym1vZHVsZV91c2VzX2dpdGZpbGUobmFtZSkpCisJCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfc3VibW9kdWxlLCBuYW1lKTsKKwkJCQllbHNlCisJCQkJCXN0cmluZ19saXN0X2FwcGVuZCgmZmlsZXNfbG9jYWwsIG5hbWUpOwogCQkJfQogCQl9CiAJfQorCXByaW50X2Vycm9yX2ZpbGVzKCZmaWxlc19zdGFnZWQsCisJCQkgIFFfKCJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCAiCisJCQkgICAgICJmcm9tIGJvdGggdGhlXG5maWxlIGFuZCB0aGUgSEVBRDoiLAorCQkJICAgICAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCIKKwkJCSAgICAgIiBmcm9tIGJvdGggdGhlXG5maWxlIGFuZCB0aGUgSEVBRDoiLAorCQkJICAgICBmaWxlc19zdGFnZWQubnIpLAorCQkJICBfKCJcbih1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiKSwKKwkJCSAgJmVycnMpOworCXN0cmluZ19saXN0X2NsZWFyKCZmaWxlc19zdGFnZWQsIDApOworCXByaW50X2Vycm9yX2ZpbGVzKCZmaWxlc19jYWNoZWQsCisJCQkgIFFfKCJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGNoYW5nZXMgIgorCQkJICAgICAic3RhZ2VkIGluIHRoZSBpbmRleDoiLAorCQkJICAgICAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGNoYW5nZXMgIgorCQkJICAgICAic3RhZ2VkIGluIHRoZSBpbmRleDoiLCBmaWxlc19jYWNoZWQubnIpLAorCQkJICBfKCJcbih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwiCisJCQkgICAgIiBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIpLAorCQkJICAmZXJycyk7CisJc3RyaW5nX2xpc3RfY2xlYXIoJmZpbGVzX2NhY2hlZCwgMCk7CisKKwllcnJvcl9yZW1vdmluZ19jb25jcmV0ZV9zdWJtb2R1bGVzKCZmaWxlc19zdWJtb2R1bGUsICZlcnJzKTsKKworCXByaW50X2Vycm9yX2ZpbGVzKCZmaWxlc19sb2NhbCwKKwkJCSAgUV8oInRoZSBmb2xsb3dpbmcgZmlsZSBoYXMgbG9jYWwgbW9kaWZpY2F0aW9uczoiLAorCQkJICAgICAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGxvY2FsIG1vZGlmaWNhdGlvbnM6IiwKKwkJCSAgICAgZmlsZXNfbG9jYWwubnIpLAorCQkJICBfKCJcbih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwiCisJCQkgICAgIiBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIpLAorCQkJICAmZXJycyk7CisJc3RyaW5nX2xpc3RfY2xlYXIoJmZpbGVzX2xvY2FsLCAwKTsKKwogCXJldHVybiBlcnJzOwogfQogCkBAIC0yNTgsNyArMzIwLDcgQEAKIAlzZWVuID0geGNhbGxvYyhpLCAxKTsKIAogCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQlpZiAoIW1hdGNoX3BhdGhzcGVjKHBhdGhzcGVjLCBjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSksIDAsIHNlZW4pKQogCQkJY29udGludWU7CiAJCUFMTE9DX0dST1cobGlzdC5lbnRyeSwgbGlzdC5uciArIDEsIGxpc3QuYWxsb2MpOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zaG9ydGxvZy5jIGIvYnVpbHRpbi9zaG9ydGxvZy5jCmluZGV4IDFmZDZmOGEuLjE0MzRmOGYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc2hvcnRsb2cuYworKysgYi9idWlsdGluL3Nob3J0bG9nLmMKQEAgLTEzNyw2ICsxMzcsNyBAQAogCQljdHguc3ViamVjdCA9ICIiOwogCQljdHguYWZ0ZXJfc3ViamVjdCA9ICIiOwogCQljdHguZGF0ZV9tb2RlID0gREFURV9OT1JNQUw7CisJCWN0eC5vdXRwdXRfZW5jb2RpbmcgPSBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpOwogCQlwcmV0dHlfcHJpbnRfY29tbWl0KCZjdHgsIGNvbW1pdCwgJnVmYnVmKTsKIAkJYnVmZmVyID0gdWZidWYuYnVmOwogCX0gZWxzZSBpZiAoKmJ1ZmZlcikgewpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zaG93LWJyYW5jaC5jIGIvYnVpbHRpbi9zaG93LWJyYW5jaC5jCmluZGV4IDkwZmM2YjEuLjk3ODhlYjEgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc2hvdy1icmFuY2guYworKysgYi9idWlsdGluL3Nob3ctYnJhbmNoLmMKQEAgLTYzMCw3ICs2MzAsNyBAQAogCWludCBudW1fcmV2LCBpLCBleHRyYSA9IDA7CiAJaW50IGFsbF9oZWFkcyA9IDAsIGFsbF9yZW1vdGVzID0gMDsKIAlpbnQgYWxsX21hc2ssIGFsbF9yZXZzOwotCWludCBsaWZvID0gMTsKKwllbnVtIHJldl9zb3J0X29yZGVyIHNvcnRfb3JkZXIgPSBSRVZfU09SVF9JTl9HUkFQSF9PUkRFUjsKIAljaGFyIGhlYWRbMTI4XTsKIAljb25zdCBjaGFyICpoZWFkX3A7CiAJaW50IGhlYWRfbGVuOwpAQCAtNjY1LDE1ICs2NjUsMTcgQEAKIAkJCSAgICBOXygic2hvdyBwb3NzaWJsZSBtZXJnZSBiYXNlcyIpKSwKIAkJT1BUX0JPT0xFQU4oMCwgImluZGVwZW5kZW50IiwgJmluZGVwZW5kZW50LAogCQkJICAgIE5fKCJzaG93IHJlZnMgdW5yZWFjaGFibGUgZnJvbSBhbnkgb3RoZXIgcmVmIikpLAotCQlPUFRfQk9PTEVBTigwLCAidG9wby1vcmRlciIsICZsaWZvLAotCQkJICAgIE5fKCJzaG93IGNvbW1pdHMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIiKSksCisJCU9QVF9TRVRfSU5UKDAsICJ0b3BvLW9yZGVyIiwgJnNvcnRfb3JkZXIsCisJCQkgICAgTl8oInNob3cgY29tbWl0cyBpbiB0b3BvbG9naWNhbCBvcmRlciIpLAorCQkJICAgIFJFVl9TT1JUX0lOX0dSQVBIX09SREVSKSwKIAkJT1BUX0JPT0xFQU4oMCwgInRvcGljcyIsICZ0b3BpY3MsCiAJCQkgICAgTl8oInNob3cgb25seSBjb21taXRzIG5vdCBvbiB0aGUgZmlyc3QgYnJhbmNoIikpLAogCQlPUFRfU0VUX0lOVCgwLCAic3BhcnNlIiwgJmRlbnNlLAogCQkJICAgIE5fKCJzaG93IG1lcmdlcyByZWFjaGFibGUgZnJvbSBvbmx5IG9uZSB0aXAiKSwgMCksCi0JCU9QVF9TRVRfSU5UKDAsICJkYXRlLW9yZGVyIiwgJmxpZm8sCi0JCQkgICAgTl8oInNob3cgY29tbWl0cyB3aGVyZSBubyBwYXJlbnQgY29tZXMgYmVmb3JlIGl0cyAiCi0JCQkgICAgICAgImNoaWxkcmVuIiksIDApLAorCQlPUFRfU0VUX0lOVCgwLCAiZGF0ZS1vcmRlciIsICZzb3J0X29yZGVyLAorCQkJICAgIE5fKCJ0b3BvbG9naWNhbGx5IHNvcnQsIG1haW50YWluaW5nIGRhdGUgb3JkZXIgIgorCQkJICAgICAgICJ3aGVyZSBwb3NzaWJsZSIpLAorCQkJICAgIFJFVl9TT1JUX0JZX0NPTU1JVF9EQVRFKSwKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssICdnJywgInJlZmxvZyIsICZyZWZsb2dfYmFzZSwgTl8oIjxuPlssPGJhc2U+XSIpLAogCQkJICAgIE5fKCJzaG93IDxuPiBtb3N0IHJlY2VudCByZWYtbG9nIGVudHJpZXMgc3RhcnRpbmcgYXQgIgogCQkJICAgICAgICJiYXNlIiksCkBAIC05MDAsNyArOTAyLDcgQEAKIAkJZXhpdCgwKTsKIAogCS8qIFNvcnQgdG9wb2xvZ2ljYWxseSAqLwotCXNvcnRfaW5fdG9wb2xvZ2ljYWxfb3JkZXIoJnNlZW4sIGxpZm8pOworCXNvcnRfaW5fdG9wb2xvZ2ljYWxfb3JkZXIoJnNlZW4sIHNvcnRfb3JkZXIpOwogCiAJLyogR2l2ZSBuYW1lcyB0byBjb21taXRzICovCiAJaWYgKCFzaGExX25hbWUgJiYgIW5vX25hbWUpCmRpZmYgLS1naXQgYS9idWlsdGluL3Nob3ctcmVmLmMgYi9idWlsdGluL3Nob3ctcmVmLmMKaW5kZXggOGQ5Yjc2YS4uODc4MDZhZCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9zaG93LXJlZi5jCisrKyBiL2J1aWx0aW4vc2hvdy1yZWYuYwpAQCAtMzEsNiArMzEsOSBAQAogCWNvbnN0IGNoYXIgKmhleDsKIAl1bnNpZ25lZCBjaGFyIHBlZWxlZFsyMF07CiAKKwlpZiAoc2hvd19oZWFkICYmICFzdHJjbXAocmVmbmFtZSwgIkhFQUQiKSkKKwkJZ290byBtYXRjaDsKKwogCWlmICh0YWdzX29ubHkgfHwgaGVhZHNfb25seSkgewogCQlpbnQgbWF0Y2g7CiAKQEAgLTEwMyw3ICsxMDYsNyBAQAogICovCiBzdGF0aWMgaW50IGV4Y2x1ZGVfZXhpc3RpbmcoY29uc3QgY2hhciAqbWF0Y2gpCiB7Ci0Jc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBleGlzdGluZ19yZWZzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKKwlzdGF0aWMgc3RydWN0IHN0cmluZ19saXN0IGV4aXN0aW5nX3JlZnMgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAljaGFyIGJ1ZlsxMDI0XTsKIAlpbnQgbWF0Y2hsZW4gPSBtYXRjaCA/IHN0cmxlbihtYXRjaCkgOiAwOwogCkBAIC0xNjcsOSArMTcwLDEwIEBACiAJT1BUX0JPT0xFQU4oMCwgInZlcmlmeSIsICZ2ZXJpZnksIE5fKCJzdHJpY3RlciByZWZlcmVuY2UgY2hlY2tpbmcsICIKIAkJICAgICJyZXF1aXJlcyBleGFjdCByZWYgcGF0aCIpKSwKIAl7IE9QVElPTl9CT09MRUFOLCAnaCcsIE5VTEwsICZzaG93X2hlYWQsIE5VTEwsCi0JICBOXygic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UiKSwKKwkgIE5fKCJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSwgZXZlbiBpZiBpdCB3b3VsZCBiZSBmaWx0ZXJlZCBvdXQiKSwKIAkgIFBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9ISURERU4gfSwKLQlPUFRfQk9PTEVBTigwLCAiaGVhZCIsICZzaG93X2hlYWQsIE5fKCJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIpKSwKKwlPUFRfQk9PTEVBTigwLCAiaGVhZCIsICZzaG93X2hlYWQsCisJICBOXygic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UsIGV2ZW4gaWYgaXQgd291bGQgYmUgZmlsdGVyZWQgb3V0IikpLAogCU9QVF9CT09MRUFOKCdkJywgImRlcmVmZXJlbmNlIiwgJmRlcmVmX3RhZ3MsCiAJCSAgICBOXygiZGVyZWZlcmVuY2UgdGFncyBpbnRvIG9iamVjdCBJRHMiKSksCiAJeyBPUFRJT05fQ0FMTEJBQ0ssICdzJywgImhhc2giLCAmYWJicmV2LCBOXygibiIpLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi91cGRhdGUtaW5kZXguYyBiL2J1aWx0aW4vdXBkYXRlLWluZGV4LmMKaW5kZXggNWM3NzYyZS4uYzMxNzk4MSAxMDA2NDQKLS0tIGEvYnVpbHRpbi91cGRhdGUtaW5kZXguYworKysgYi9idWlsdGluL3VwZGF0ZS1pbmRleC5jCkBAIC04Myw3ICs4Myw3IEBACiAJcmV0dXJuIGVycm9yKCJsc3RhdChcIiVzXCIpOiAlcyIsIHBhdGgsIHN0cmVycm9yKGVycm5vKSk7CiB9CiAKLXN0YXRpYyBpbnQgYWRkX29uZV9wYXRoKHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgbGVuLCBzdHJ1Y3Qgc3RhdCAqc3QpCitzdGF0aWMgaW50IGFkZF9vbmVfcGF0aChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZCwgY29uc3QgY2hhciAqcGF0aCwgaW50IGxlbiwgc3RydWN0IHN0YXQgKnN0KQogewogCWludCBvcHRpb24sIHNpemU7CiAJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKQEAgLTE0Miw3ICsxNDIsNyBAQAogCiAJLyogRXhhY3QgbWF0Y2g6IGZpbGUgb3IgZXhpc3RpbmcgZ2l0bGluayAqLwogCWlmIChwb3MgPj0gMCkgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKIAkJaWYgKFNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKSkgewogCiAJCQkvKiBEbyBub3RoaW5nIHRvIHRoZSBpbmRleCBpZiB0aGVyZSBpcyBubyBIRUFEISAqLwpAQCAtMTU4LDcgKzE1OCw3IEBACiAJLyogSW5leGFjdCBtYXRjaDogaXMgdGhlcmUgcGVyaGFwcyBhIHN1YmRpcmVjdG9yeSBtYXRjaD8gKi8KIAlwb3MgPSAtcG9zLTE7CiAJd2hpbGUgKHBvcyA8IGFjdGl2ZV9ucikgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3BvcysrXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3MrK107CiAKIAkJaWYgKHN0cm5jbXAoY2UtPm5hbWUsIHBhdGgsIGxlbikpCiAJCQlicmVhazsKQEAgLTE4Myw3ICsxODMsNyBAQAogewogCWludCBwb3MsIGxlbjsKIAlzdHJ1Y3Qgc3RhdCBzdDsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CiAKIAlsZW4gPSBzdHJsZW4ocGF0aCk7CiAJaWYgKGhhc19zeW1saW5rX2xlYWRpbmdfcGF0aChwYXRoLCBsZW4pKQpAQCAtNDQ4LDcgKzQ0OCw3IEBACiAJCS8qIGFscmVhZHkgbWVyZ2VkICovCiAJCXBvcyA9IHVubWVyZ2VfY2FjaGVfZW50cnlfYXQocG9zKTsKIAkJaWYgKHBvcyA8IGFjdGl2ZV9ucikgewotCQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOworCQkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOwogCQkJaWYgKGNlX3N0YWdlKGNlKSAmJgogCQkJICAgIGNlX25hbWVsZW4oY2UpID09IG5hbWVsZW4gJiYKIAkJCSAgICAhbWVtY21wKGNlLT5uYW1lLCBwYXRoLCBuYW1lbGVuKSkKQEAgLTQ2Miw3ICs0NjIsNyBAQAogCQkgKi8KIAkJcG9zID0gLXBvcy0xOwogCQlpZiAocG9zIDwgYWN0aXZlX25yKSB7Ci0JCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CisJCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW3Bvc107CiAJCQlpZiAoY2VfbmFtZWxlbihjZSkgPT0gbmFtZWxlbiAmJgogCQkJICAgICFtZW1jbXAoY2UtPm5hbWUsIHBhdGgsIG5hbWVsZW4pKSB7CiAJCQkJZnByaW50ZihzdGRlcnIsCkBAIC01NTgsNyArNTU4LDcgQEAKIAkJaGFzX2hlYWQgPSAwOwogIHJlZG86CiAJZm9yIChwb3MgPSAwOyBwb3MgPCBhY3RpdmVfbnI7IHBvcysrKSB7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3NdOwogCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZCA9IE5VTEw7CiAJCWludCBzYXZlX25yOwogCmRpZmYgLS1naXQgYS9idW5kbGUuYyBiL2J1bmRsZS5jCmluZGV4IDRiMGU1Y2QuLjNkNjQzMTEgMTAwNjQ0Ci0tLSBhL2J1bmRsZS5jCisrKyBiL2J1bmRsZS5jCkBAIC0yODEsNyArMjgxLDcgQEAKIAkJCWlmICghZ2V0X3NoYTFfaGV4KGJ1Zi5idWYgKyAxLCBzaGExKSkgewogCQkJCXN0cnVjdCBvYmplY3QgKm9iamVjdCA9IHBhcnNlX29iamVjdF9vcl9kaWUoc2hhMSwgYnVmLmJ1Zik7CiAJCQkJb2JqZWN0LT5mbGFncyB8PSBVTklOVEVSRVNUSU5HOwotCQkJCWFkZF9wZW5kaW5nX29iamVjdCgmcmV2cywgb2JqZWN0LCB4c3RyZHVwKGJ1Zi5idWYpKTsKKwkJCQlhZGRfcGVuZGluZ19vYmplY3QoJnJldnMsIG9iamVjdCwgYnVmLmJ1Zik7CiAJCQl9CiAJCX0gZWxzZSBpZiAoIWdldF9zaGExX2hleChidWYuYnVmLCBzaGExKSkgewogCQkJc3RydWN0IG9iamVjdCAqb2JqZWN0ID0gcGFyc2Vfb2JqZWN0X29yX2RpZShzaGExLCBidWYuYnVmKTsKZGlmZiAtLWdpdCBhL2NhY2hlLXRyZWUuYyBiL2NhY2hlLXRyZWUuYwppbmRleCAzN2U0ZDAwLi4wYmJlYzQzIDEwMDY0NAotLS0gYS9jYWNoZS10cmVlLmMKKysrIGIvY2FjaGUtdHJlZS5jCkBAIC0xNDksNyArMTQ5LDcgQEAKIAkJY2FjaGVfdHJlZV9pbnZhbGlkYXRlX3BhdGgoZG93bi0+Y2FjaGVfdHJlZSwgc2xhc2ggKyAxKTsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfY2FjaGUoc3RydWN0IGNhY2hlX2VudHJ5ICoqY2FjaGUsCitzdGF0aWMgaW50IHZlcmlmeV9jYWNoZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqY2FjaGUsCiAJCQlpbnQgZW50cmllcywgaW50IGZsYWdzKQogewogCWludCBpLCBmdW5ueTsKQEAgLTE1OCw3ICsxNTgsNyBAQAogCS8qIFZlcmlmeSB0aGF0IHRoZSB0cmVlIGlzIG1lcmdlZCAqLwogCWZ1bm55ID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgZW50cmllczsgaSsrKSB7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBjYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGNhY2hlW2ldOwogCQlpZiAoY2Vfc3RhZ2UoY2UpKSB7CiAJCQlpZiAoc2lsZW50KQogCQkJCXJldHVybiAtMTsKQEAgLTIzNCw3ICsyMzQsNyBAQAogfQogCiBzdGF0aWMgaW50IHVwZGF0ZV9vbmUoc3RydWN0IGNhY2hlX3RyZWUgKml0LAotCQkgICAgICBzdHJ1Y3QgY2FjaGVfZW50cnkgKipjYWNoZSwKKwkJICAgICAgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKmNhY2hlLAogCQkgICAgICBpbnQgZW50cmllcywKIAkJICAgICAgY29uc3QgY2hhciAqYmFzZSwKIAkJICAgICAgaW50IGJhc2VsZW4sCkBAIC0yNjUsNyArMjY1LDcgQEAKIAkgKi8KIAlpID0gMDsKIAl3aGlsZSAoaSA8IGVudHJpZXMpIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGNhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gY2FjaGVbaV07CiAJCXN0cnVjdCBjYWNoZV90cmVlX3N1YiAqc3ViOwogCQljb25zdCBjaGFyICpwYXRoLCAqc2xhc2g7CiAJCWludCBwYXRobGVuLCBzdWJsZW4sIHN1YmNudCwgc3Vic2tpcDsKQEAgLTMxMiw3ICszMTIsNyBAQAogCiAJaSA9IDA7CiAJd2hpbGUgKGkgPCBlbnRyaWVzKSB7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBjYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGNhY2hlW2ldOwogCQlzdHJ1Y3QgY2FjaGVfdHJlZV9zdWIgKnN1YjsKIAkJY29uc3QgY2hhciAqcGF0aCwgKnNsYXNoOwogCQlpbnQgcGF0aGxlbiwgZW50bGVuOwpAQCAtMzk3LDcgKzM5Nyw3IEBACiB9CiAKIGludCBjYWNoZV90cmVlX3VwZGF0ZShzdHJ1Y3QgY2FjaGVfdHJlZSAqaXQsCi0JCSAgICAgIHN0cnVjdCBjYWNoZV9lbnRyeSAqKmNhY2hlLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqY2FjaGUsCiAJCSAgICAgIGludCBlbnRyaWVzLAogCQkgICAgICBpbnQgZmxhZ3MpCiB7CkBAIC01OTksOCArNTk5LDggQEAKIAl3YXNfdmFsaWQgPSBjYWNoZV90cmVlX2Z1bGx5X3ZhbGlkKGFjdGl2ZV9jYWNoZV90cmVlKTsKIAlpZiAoIXdhc192YWxpZCkgewogCQlpZiAoY2FjaGVfdHJlZV91cGRhdGUoYWN0aXZlX2NhY2hlX3RyZWUsCi0JCQkJICAgICAgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIsCi0JCQkJICAgICAgZmxhZ3MpIDwgMCkKKwkJCQkgICAgICAoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKilhY3RpdmVfY2FjaGUsCisJCQkJICAgICAgYWN0aXZlX25yLCBmbGFncykgPCAwKQogCQkJcmV0dXJuIFdSSVRFX1RSRUVfVU5NRVJHRURfSU5ERVg7CiAJCWlmICgwIDw9IG5ld2ZkKSB7CiAJCQlpZiAoIXdyaXRlX2NhY2hlKG5ld2ZkLCBhY3RpdmVfY2FjaGUsIGFjdGl2ZV9ucikgJiYKQEAgLTcwMSw1ICs3MDEsNiBAQAogCWlmICghdGhlX2luZGV4LmNhY2hlX3RyZWUpCiAJCXRoZV9pbmRleC5jYWNoZV90cmVlID0gY2FjaGVfdHJlZSgpOwogCXJldHVybiBjYWNoZV90cmVlX3VwZGF0ZSh0aGVfaW5kZXguY2FjaGVfdHJlZSwKLQkJCQkgdGhlX2luZGV4LmNhY2hlLCB0aGVfaW5kZXguY2FjaGVfbnIsIGZsYWdzKTsKKwkJCQkgKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICopdGhlX2luZGV4LmNhY2hlLAorCQkJCSB0aGVfaW5kZXguY2FjaGVfbnIsIGZsYWdzKTsKIH0KZGlmZiAtLWdpdCBhL2NhY2hlLXRyZWUuaCBiL2NhY2hlLXRyZWUuaAppbmRleCA1NWQwZjU5Li5mMTkyM2FkIDEwMDY0NAotLS0gYS9jYWNoZS10cmVlLmgKKysrIGIvY2FjaGUtdHJlZS5oCkBAIC0zMCw3ICszMCw3IEBACiBzdHJ1Y3QgY2FjaGVfdHJlZSAqY2FjaGVfdHJlZV9yZWFkKGNvbnN0IGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbG9uZyBzaXplKTsKIAogaW50IGNhY2hlX3RyZWVfZnVsbHlfdmFsaWQoc3RydWN0IGNhY2hlX3RyZWUgKik7Ci1pbnQgY2FjaGVfdHJlZV91cGRhdGUoc3RydWN0IGNhY2hlX3RyZWUgKiwgc3RydWN0IGNhY2hlX2VudHJ5ICoqLCBpbnQsIGludCk7CitpbnQgY2FjaGVfdHJlZV91cGRhdGUoc3RydWN0IGNhY2hlX3RyZWUgKiwgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKiwgaW50LCBpbnQpOwogCiBpbnQgdXBkYXRlX21haW5fY2FjaGVfdHJlZShpbnQpOwogCmRpZmYgLS1naXQgYS9jYWNoZS5oIGIvY2FjaGUuaAppbmRleCA5NGNhMWFjLi44NWI1NDRmIDEwMDY0NAotLS0gYS9jYWNoZS5oCisrKyBiL2NhY2hlLmgKQEAgLTExOSwxNSArMTE5LDE5IEBACiAJdW5zaWduZWQgaW50IG5zZWM7CiB9OwogCitzdHJ1Y3Qgc3RhdF9kYXRhIHsKKwlzdHJ1Y3QgY2FjaGVfdGltZSBzZF9jdGltZTsKKwlzdHJ1Y3QgY2FjaGVfdGltZSBzZF9tdGltZTsKKwl1bnNpZ25lZCBpbnQgc2RfZGV2OworCXVuc2lnbmVkIGludCBzZF9pbm87CisJdW5zaWduZWQgaW50IHNkX3VpZDsKKwl1bnNpZ25lZCBpbnQgc2RfZ2lkOworCXVuc2lnbmVkIGludCBzZF9zaXplOworfTsKKwogc3RydWN0IGNhY2hlX2VudHJ5IHsKLQlzdHJ1Y3QgY2FjaGVfdGltZSBjZV9jdGltZTsKLQlzdHJ1Y3QgY2FjaGVfdGltZSBjZV9tdGltZTsKLQl1bnNpZ25lZCBpbnQgY2VfZGV2OwotCXVuc2lnbmVkIGludCBjZV9pbm87CisJc3RydWN0IHN0YXRfZGF0YSBjZV9zdGF0X2RhdGE7CiAJdW5zaWduZWQgaW50IGNlX21vZGU7Ci0JdW5zaWduZWQgaW50IGNlX3VpZDsKLQl1bnNpZ25lZCBpbnQgY2VfZ2lkOwotCXVuc2lnbmVkIGludCBjZV9zaXplOwogCXVuc2lnbmVkIGludCBjZV9mbGFnczsKIAl1bnNpZ25lZCBpbnQgY2VfbmFtZWxlbjsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwpAQCAtMTkwLDcgKzE5NCw4IEBACiAgKiBhbm90aGVyLiBCdXQgd2UgbmV2ZXIgY2hhbmdlIHRoZSBuYW1lLCBvciB0aGUgaGFzaCBzdGF0ZSEKICAqLwogI2RlZmluZSBDRV9TVEFURV9NQVNLIChDRV9IQVNIRUQgfCBDRV9VTkhBU0hFRCkKLXN0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2NhY2hlX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqZHN0LCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnNyYykKK3N0YXRpYyBpbmxpbmUgdm9pZCBjb3B5X2NhY2hlX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqZHN0LAorCQkJCSAgICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnNyYykKIHsKIAl1bnNpZ25lZCBpbnQgc3RhdGUgPSBkc3QtPmNlX2ZsYWdzICYgQ0VfU1RBVEVfTUFTSzsKIApAQCAtMjIyLDcgKzIyNyw4IEBACiAJCXJldHVybiBTX0lGR0lUTElOSzsKIAlyZXR1cm4gU19JRlJFRyB8IGNlX3Blcm1pc3Npb25zKG1vZGUpOwogfQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQgY2VfbW9kZV9mcm9tX3N0YXQoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgdW5zaWduZWQgaW50IG1vZGUpCitzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBjZV9tb2RlX2Zyb21fc3RhdChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCQkgICAgIHVuc2lnbmVkIGludCBtb2RlKQogewogCWV4dGVybiBpbnQgdHJ1c3RfZXhlY3V0YWJsZV9iaXQsIGhhc19zeW1saW5rczsKIAlpZiAoIWhhc19zeW1saW5rcyAmJiBTX0lTUkVHKG1vZGUpICYmCkBAIC00MTksNiArNDI1LDggQEAKIGV4dGVybiBpbnQgc2V0X2dpdF9kaXJfaW5pdChjb25zdCBjaGFyICpnaXRfZGlyLCBjb25zdCBjaGFyICpyZWFsX2dpdF9kaXIsIGludCk7CiBleHRlcm4gaW50IGluaXRfZGIoY29uc3QgY2hhciAqdGVtcGxhdGVfZGlyLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCitleHRlcm4gdm9pZCBzYW5pdGl6ZV9zdGRmZHModm9pZCk7CisKICNkZWZpbmUgYWxsb2NfbnIoeCkgKCgoeCkrMTYpKjMvMikKIAogLyoKQEAgLTQ3MCw3ICs0NzgsNyBAQAogZXh0ZXJuIGludCBhZGRfdG9faW5kZXgoc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICosIGludCBmbGFncyk7CiBleHRlcm4gaW50IGFkZF9maWxlX3RvX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MpOwogZXh0ZXJuIHN0cnVjdCBjYWNoZV9lbnRyeSAqbWFrZV9jYWNoZV9lbnRyeSh1bnNpZ25lZCBpbnQgbW9kZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgaW50IHN0YWdlLCBpbnQgcmVmcmVzaCk7Ci1leHRlcm4gaW50IGNlX3NhbWVfbmFtZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmEsIHN0cnVjdCBjYWNoZV9lbnRyeSAqYik7CitleHRlcm4gaW50IGNlX3NhbWVfbmFtZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmEsIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqYik7CiBleHRlcm4gaW50IGluZGV4X25hbWVfaXNfb3RoZXIoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICosIGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiB2b2lkICpyZWFkX2Jsb2JfZGF0YV9mcm9tX2luZGV4KHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcgKik7CiAKQEAgLTQ4MCwxMCArNDg4LDEwIEBACiAjZGVmaW5lIENFX01BVENIX1JBQ1lfSVNfRElSVFkJCTAyCiAvKiBkbyBzdGF0IGNvbXBhcmlzb24gZXZlbiBpZiBDRV9TS0lQX1dPUktUUkVFIGlzIHRydWUgKi8KICNkZWZpbmUgQ0VfTUFUQ0hfSUdOT1JFX1NLSVBfV09SS1RSRUUJMDQKLWV4dGVybiBpbnQgaWVfbWF0Y2hfc3RhdChjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgc3RydWN0IGNhY2hlX2VudHJ5ICosIHN0cnVjdCBzdGF0ICosIHVuc2lnbmVkIGludCk7Ci1leHRlcm4gaW50IGllX21vZGlmaWVkKGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiwgc3RydWN0IHN0YXQgKiwgdW5zaWduZWQgaW50KTsKK2V4dGVybiBpbnQgaWVfbWF0Y2hfc3RhdChjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKiwgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICosIHN0cnVjdCBzdGF0ICosIHVuc2lnbmVkIGludCk7CitleHRlcm4gaW50IGllX21vZGlmaWVkKGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqLCBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiwgc3RydWN0IHN0YXQgKiwgdW5zaWduZWQgaW50KTsKIAotI2RlZmluZSBQQVRIU1BFQ19PTkVTVEFSIDEJLyogdGhlIHBhdGhzcGVjIHBhdHRlcm4gc2FzdGlzZmllcyBHRk5NX09ORVNUQVIgKi8KKyNkZWZpbmUgUEFUSFNQRUNfT05FU1RBUiAxCS8qIHRoZSBwYXRoc3BlYyBwYXR0ZXJuIHNhdGlzZmllcyBHRk5NX09ORVNUQVIgKi8KIAogc3RydWN0IHBhdGhzcGVjIHsKIAljb25zdCBjaGFyICoqcmF3OyAvKiBnZXRfcGF0aHNwZWMoKSByZXN1bHQsIG5vdCBmcmVlZCBieSBmcmVlX3BhdGhzcGVjKCkgKi8KQEAgLTUwOSw2ICs1MTcsMjEgQEAKICNkZWZpbmUgSEFTSF9GT1JNQVRfQ0hFQ0sgMgogZXh0ZXJuIGludCBpbmRleF9mZCh1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZmQsIHN0cnVjdCBzdGF0ICpzdCwgZW51bSBvYmplY3RfdHlwZSB0eXBlLCBjb25zdCBjaGFyICpwYXRoLCB1bnNpZ25lZCBmbGFncyk7CiBleHRlcm4gaW50IGluZGV4X3BhdGgodW5zaWduZWQgY2hhciAqc2hhMSwgY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnN0LCB1bnNpZ25lZCBmbGFncyk7CisKKy8qCisgKiBSZWNvcmQgdG8gc2QgdGhlIGRhdGEgZnJvbSBzdCB0aGF0IHdlIHVzZSB0byBjaGVjayB3aGV0aGVyIGEgZmlsZQorICogbWlnaHQgaGF2ZSBjaGFuZ2VkLgorICovCitleHRlcm4gdm9pZCBmaWxsX3N0YXRfZGF0YShzdHJ1Y3Qgc3RhdF9kYXRhICpzZCwgc3RydWN0IHN0YXQgKnN0KTsKKworLyoKKyAqIFJldHVybiAwIGlmIHN0IGlzIGNvbnNpc3RlbnQgd2l0aCBhIGZpbGUgbm90IGhhdmluZyBiZWVuIGNoYW5nZWQKKyAqIHNpbmNlIHNkIHdhcyBmaWxsZWQuICBJZiB0aGVyZSBhcmUgZGlmZmVyZW5jZXMsIHJldHVybiBhCisgKiBjb21iaW5hdGlvbiBvZiBNVElNRV9DSEFOR0VELCBDVElNRV9DSEFOR0VELCBPV05FUl9DSEFOR0VELAorICogSU5PREVfQ0hBTkdFRCwgYW5kIERBVEFfQ0hBTkdFRC4KKyAqLworZXh0ZXJuIGludCBtYXRjaF9zdGF0X2RhdGEoY29uc3Qgc3RydWN0IHN0YXRfZGF0YSAqc2QsIHN0cnVjdCBzdGF0ICpzdCk7CisKIGV4dGVybiB2b2lkIGZpbGxfc3RhdF9jYWNoZV9pbmZvKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCk7CiAKICNkZWZpbmUgUkVGUkVTSF9SRUFMTFkJCTB4MDAwMQkvKiBpZ25vcmVfdmFsaWQgKi8KQEAgLTU1NCw2ICs1NzcsNyBAQAogZXh0ZXJuIGludCBwcmVmZXJfc3ltbGlua19yZWZzOwogZXh0ZXJuIGludCBsb2dfYWxsX3JlZl91cGRhdGVzOwogZXh0ZXJuIGludCB3YXJuX2FtYmlndW91c19yZWZzOworZXh0ZXJuIGludCB3YXJuX29uX29iamVjdF9yZWZuYW1lX2FtYmlndWl0eTsKIGV4dGVybiBpbnQgc2hhcmVkX3JlcG9zaXRvcnk7CiBleHRlcm4gY29uc3QgY2hhciAqYXBwbHlfZGVmYXVsdF93aGl0ZXNwYWNlOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmFwcGx5X2RlZmF1bHRfaWdub3Jld2hpdGVzcGFjZTsKQEAgLTczNyw3ICs3NjEsNyBAQAogY29uc3QgY2hhciAqcmVhbF9wYXRoKGNvbnN0IGNoYXIgKnBhdGgpOwogY29uc3QgY2hhciAqcmVhbF9wYXRoX2lmX3ZhbGlkKGNvbnN0IGNoYXIgKnBhdGgpOwogY29uc3QgY2hhciAqYWJzb2x1dGVfcGF0aChjb25zdCBjaGFyICpwYXRoKTsKLWNvbnN0IGNoYXIgKnJlbGF0aXZlX3BhdGgoY29uc3QgY2hhciAqYWJzLCBjb25zdCBjaGFyICpiYXNlKTsKK2NvbnN0IGNoYXIgKnJlbGF0aXZlX3BhdGgoY29uc3QgY2hhciAqaW4sIGNvbnN0IGNoYXIgKnByZWZpeCwgc3RydWN0IHN0cmJ1ZiAqc2IpOwogaW50IG5vcm1hbGl6ZV9wYXRoX2NvcHkoY2hhciAqZHN0LCBjb25zdCBjaGFyICpzcmMpOwogaW50IGxvbmdlc3RfYW5jZXN0b3JfbGVuZ3RoKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdHJpbmdfbGlzdCAqcHJlZml4ZXMpOwogY2hhciAqc3RyaXBfcGF0aF9zdWZmaXgoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqc3VmZml4KTsKQEAgLTc3Miw5ICs3OTYsNiBAQAogLyogZ2xvYmFsIGZsYWcgdG8gZW5hYmxlIGV4dHJhIGNoZWNrcyB3aGVuIGFjY2Vzc2luZyBwYWNrZWQgb2JqZWN0cyAqLwogZXh0ZXJuIGludCBkb19jaGVja19wYWNrZWRfb2JqZWN0X2NyYzsKIAotLyogZm9yIGRldmVsb3BtZW50OiBsb2cgb2Zmc2V0IG9mIHBhY2sgYWNjZXNzICovCi1leHRlcm4gY29uc3QgY2hhciAqbG9nX3BhY2tfYWNjZXNzOwotCiBleHRlcm4gaW50IGNoZWNrX3NoYTFfc2lnbmF0dXJlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHZvaWQgKmJ1ZiwgdW5zaWduZWQgbG9uZyBzaXplLCBjb25zdCBjaGFyICp0eXBlKTsKIAogZXh0ZXJuIGludCBtb3ZlX3RlbXBfdG9fZmlsZShjb25zdCBjaGFyICp0bXBmaWxlLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CkBAIC05MTAsNiArOTMxLDcgQEAKIAkJCXN0cnVjdCBzdHJidWYgKnRpbWVidWYpOwogaW50IHBhcnNlX2RhdGUoY29uc3QgY2hhciAqZGF0ZSwgY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSk7CiBpbnQgcGFyc2VfZGF0ZV9iYXNpYyhjb25zdCBjaGFyICpkYXRlLCB1bnNpZ25lZCBsb25nICp0aW1lc3RhbXAsIGludCAqb2Zmc2V0KTsKK2ludCBwYXJzZV9leHBpcnlfZGF0ZShjb25zdCBjaGFyICpkYXRlLCB1bnNpZ25lZCBsb25nICp0aW1lc3RhbXApOwogdm9pZCBkYXRlc3RhbXAoY2hhciAqYnVmLCBpbnQgYnVmc2l6ZSk7CiAjZGVmaW5lIGFwcHJveGlkYXRlKHMpIGFwcHJveGlkYXRlX2NhcmVmdWwoKHMpLCBOVUxMKQogdW5zaWduZWQgbG9uZyBhcHByb3hpZGF0ZV9jYXJlZnVsKGNvbnN0IGNoYXIgKiwgaW50ICopOwpAQCAtMTAyNCw5ICsxMDQ2LDIxIEBACiAJdW5zaWduZWQgaW50CiAJCWZvcmNlOjEsCiAJCWZvcmNlZF91cGRhdGU6MSwKLQkJbWVyZ2U6MSwKIAkJZGVsZXRpb246MSwKIAkJbWF0Y2hlZDoxOworCisJLyoKKwkgKiBPcmRlciBpcyBpbXBvcnRhbnQgaGVyZSwgYXMgd2Ugd3JpdGUgdG8gRkVUQ0hfSEVBRAorCSAqIGluIG51bWVyaWMgb3JkZXIuIEFuZCB0aGUgZGVmYXVsdCBOT1RfRk9SX01FUkdFCisJICogc2hvdWxkIGJlIDAsIHNvIHRoYXQgeGNhbGxvYydkIHN0cnVjdHVyZXMgZ2V0IGl0CisJICogYnkgZGVmYXVsdC4KKwkgKi8KKwllbnVtIHsKKwkJRkVUQ0hfSEVBRF9NRVJHRSA9IC0xLAorCQlGRVRDSF9IRUFEX05PVF9GT1JfTUVSR0UgPSAwLAorCQlGRVRDSF9IRUFEX0lHTk9SRSA9IDEKKwl9IGZldGNoX2hlYWRfc3RhdHVzOworCiAJZW51bSB7CiAJCVJFRl9TVEFUVVNfTk9ORSA9IDAsCiAJCVJFRl9TVEFUVVNfT0ssCkBAIC0xMDk4LDcgKzExMzIsOSBAQAogCiBzdHJ1Y3Qgb2JqZWN0X2luZm8gewogCS8qIFJlcXVlc3QgKi8KKwllbnVtIG9iamVjdF90eXBlICp0eXBlcDsKIAl1bnNpZ25lZCBsb25nICpzaXplcDsKKwl1bnNpZ25lZCBsb25nICpkaXNrX3NpemVwOwogCiAJLyogUmVzcG9uc2UgKi8KIAllbnVtIHsKQEAgLTExNDIsMTEgKzExNzgsMTUgQEAKIHR5cGVkZWYgaW50ICgqY29uZmlnX2ZuX3QpKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCB2b2lkICopOwogZXh0ZXJuIGludCBnaXRfZGVmYXVsdF9jb25maWcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CiBleHRlcm4gaW50IGdpdF9jb25maWdfZnJvbV9maWxlKGNvbmZpZ19mbl90IGZuLCBjb25zdCBjaGFyICosIHZvaWQgKik7CitleHRlcm4gaW50IGdpdF9jb25maWdfZnJvbV9idWYoY29uZmlnX2ZuX3QgZm4sIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkgICAgICAgY29uc3QgY2hhciAqYnVmLCBzaXplX3QgbGVuLCB2b2lkICpkYXRhKTsKIGV4dGVybiB2b2lkIGdpdF9jb25maWdfcHVzaF9wYXJhbWV0ZXIoY29uc3QgY2hhciAqdGV4dCk7CiBleHRlcm4gaW50IGdpdF9jb25maWdfZnJvbV9wYXJhbWV0ZXJzKGNvbmZpZ19mbl90IGZuLCB2b2lkICpkYXRhKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZyhjb25maWdfZm5fdCBmbiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZ193aXRoX29wdGlvbnMoY29uZmlnX2ZuX3QgZm4sIHZvaWQgKiwKLQkJCQkgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IHJlc3BlY3RfaW5jbHVkZXMpOworCQkJCSAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJCSAgIGNvbnN0IGNoYXIgKmJsb2JfcmVmLAorCQkJCSAgIGludCByZXNwZWN0X2luY2x1ZGVzKTsKIGV4dGVybiBpbnQgZ2l0X2NvbmZpZ19lYXJseShjb25maWdfZm5fdCBmbiwgdm9pZCAqLCBjb25zdCBjaGFyICpyZXBvX2NvbmZpZyk7CiBleHRlcm4gaW50IGdpdF9wYXJzZV91bG9uZyhjb25zdCBjaGFyICosIHVuc2lnbmVkIGxvbmcgKik7CiBleHRlcm4gaW50IGdpdF9jb25maWdfaW50KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKQEAgLTEzMjYsNCArMTM2NiwzMSBAQAogCiBpbnQgc2FuZV9leGVjdnAoY29uc3QgY2hhciAqZmlsZSwgY2hhciAqY29uc3QgYXJndltdKTsKIAorLyoKKyAqIEEgc3RydWN0IHRvIGVuY2Fwc3VsYXRlIHRoZSBjb25jZXB0IG9mIHdoZXRoZXIgYSBmaWxlIGhhcyBjaGFuZ2VkCisgKiBzaW5jZSB3ZSBsYXN0IGNoZWNrZWQgaXQuIFRoaXMgdXNlcyBjcml0ZXJpYSBzaW1pbGFyIHRvIHRob3NlIHVzZWQKKyAqIGZvciB0aGUgaW5kZXguCisgKi8KK3N0cnVjdCBzdGF0X3ZhbGlkaXR5IHsKKwlzdHJ1Y3Qgc3RhdF9kYXRhICpzZDsKK307CisKK3ZvaWQgc3RhdF92YWxpZGl0eV9jbGVhcihzdHJ1Y3Qgc3RhdF92YWxpZGl0eSAqc3YpOworCisvKgorICogUmV0dXJucyAxIGlmIHRoZSBwYXRoIGlzIGEgcmVndWxhciBmaWxlIChvciBhIHN5bWxpbmsgdG8gYSByZWd1bGFyCisgKiBmaWxlKSBhbmQgbWF0Y2hlcyB0aGUgc2F2ZWQgc3RhdF92YWxpZGl0eSwgMCBvdGhlcndpc2UuICBBIG1pc3NpbmcKKyAqIG9yIGluYWNjZXNzaWJsZSBmaWxlIGlzIGNvbnNpZGVyZWQgYSBtYXRjaCBpZiB0aGUgc3RydWN0IHdhcyBqdXN0CisgKiBpbml0aWFsaXplZCwgb3IgaWYgdGhlIHByZXZpb3VzIHVwZGF0ZSBmb3VuZCBhbiBpbmFjY2Vzc2libGUgZmlsZS4KKyAqLworaW50IHN0YXRfdmFsaWRpdHlfY2hlY2soc3RydWN0IHN0YXRfdmFsaWRpdHkgKnN2LCBjb25zdCBjaGFyICpwYXRoKTsKKworLyoKKyAqIFVwZGF0ZSB0aGUgc3RhdF92YWxpZGl0eSBmcm9tIGEgZmlsZSBvcGVuZWQgYXQgZGVzY3JpcHRvciBmZC4gSWYKKyAqIHRoZSBmaWxlIGlzIG1pc3NpbmcsIGluYWNjZXNzaWJsZSwgb3Igbm90IGEgcmVndWxhciBmaWxlLCB0aGVuCisgKiBmdXR1cmUgY2FsbHMgdG8gc3RhdF92YWxpZGl0eV9jaGVjayB3aWxsIG1hdGNoIGlmZiBvbmUgb2YgdGhvc2UKKyAqIGNvbmRpdGlvbnMgY29udGludWVzIHRvIGJlIHRydWUuCisgKi8KK3ZvaWQgc3RhdF92YWxpZGl0eV91cGRhdGUoc3RydWN0IHN0YXRfdmFsaWRpdHkgKnN2LCBpbnQgZmQpOworCiAjZW5kaWYgLyogQ0FDSEVfSCAqLwpkaWZmIC0tZ2l0IGEvY29sb3IuYyBiL2NvbG9yLmMKaW5kZXggZThlMjY4MS4uZjY3Mjg4NSAxMDA2NDQKLS0tIGEvY29sb3IuYworKysgYi9jb2xvci5jCkBAIC0xLDcgKzEsNyBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiY29sb3IuaCIKIAotc3RhdGljIGludCBnaXRfdXNlX2NvbG9yX2RlZmF1bHQgPSAwOworc3RhdGljIGludCBnaXRfdXNlX2NvbG9yX2RlZmF1bHQgPSBHSVRfQ09MT1JfQVVUTzsKIGludCBjb2xvcl9zdGRvdXRfaXNfdHR5ID0gLTE7CiAKIC8qCmRpZmYgLS1naXQgYS9jb21iaW5lLWRpZmYuYyBiL2NvbWJpbmUtZGlmZi5jCmluZGV4IDZkYzA2MDkuLjg4NTI1YjMgMTAwNjQ0Ci0tLSBhL2NvbWJpbmUtZGlmZi5jCisrKyBiL2NvbWJpbmUtZGlmZi5jCkBAIC0xNjUsNyArMTY1LDcgQEAKIAogCS8qCiAJICogQ29hbGVzY2UgbmV3IGxpbmVzIGludG8gYmFzZSBieSBmaW5kaW5nIHRoZSBMQ1MKLQkgKiAtIENyZWF0ZSB0aGUgdGFibGUgdG8gcnVuIGR5bmFtaWMgcHJvZ3JhbWluZworCSAqIC0gQ3JlYXRlIHRoZSB0YWJsZSB0byBydW4gZHluYW1pYyBwcm9ncmFtbWluZwogCSAqIC0gQ29tcHV0ZSB0aGUgTENTCiAJICogLSBUaGVuIHJldmVyc2UgcmVhZCB0aGUgZGlyZWN0aW9uIHN0cnVjdHVyZToKIAkgKiAgIC0gSWYgd2UgaGF2ZSBNQVRDSCwgYXNzaWduIHBhcmVudCB0byBiYXNlIGZsYWcsIGFuZCBjb25zdW1lCmRpZmYgLS1naXQgYS9jb21tYW5kLWxpc3QudHh0IGIvY29tbWFuZC1saXN0LnR4dAppbmRleCBiZjgzMzAzLi4wOGIwNGUyIDEwMDY0NAotLS0gYS9jb21tYW5kLWxpc3QudHh0CisrKyBiL2NvbW1hbmQtbGlzdC50eHQKQEAgLTEzLDYgKzEzLDcgQEAKIGdpdC1jYXQtZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ2ludGVycm9nYXRvcnMKIGdpdC1jaGVjay1hdHRyICAgICAgICAgICAgICAgICAgICAgICAgICBwdXJlaGVscGVycwogZ2l0LWNoZWNrLWlnbm9yZSAgICAgICAgICAgICAgICAgICAgICAgIHB1cmVoZWxwZXJzCitnaXQtY2hlY2stbWFpbG1hcCAgICAgICAgICAgICAgICAgICAgICAgcHVyZWhlbHBlcnMKIGdpdC1jaGVja291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlucG9yY2VsYWluIGNvbW1vbgogZ2l0LWNoZWNrb3V0LWluZGV4ICAgICAgICAgICAgICAgICAgICAgIHBsdW1iaW5nbWFuaXB1bGF0b3JzCiBnaXQtY2hlY2stcmVmLWZvcm1hdCAgICAgICAgICAgICAgICAgICAgcHVyZWhlbHBlcnMKZGlmZiAtLWdpdCBhL2NvbW1pdC1zbGFiLmggYi9jb21taXQtc2xhYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzgyODYKLS0tIC9kZXYvbnVsbAorKysgYi9jb21taXQtc2xhYi5oCkBAIC0wLDAgKzEsOTcgQEAKKyNpZm5kZWYgQ09NTUlUX1NMQUJfSAorI2RlZmluZSBDT01NSVRfU0xBQl9ICisKKy8qCisgKiBkZWZpbmVfY29tbWl0X3NsYWIoc2xhYm5hbWUsIGVsZW10eXBlKSBjcmVhdGVzIGJvaWxlcnBsYXRlIGNvZGUgdG8gZGVmaW5lCisgKiBhIG5ldyBzdHJ1Y3QgKHN0cnVjdCBzbGFibmFtZSkgdGhhdCBpcyB1c2VkIHRvIGFzc29jaWF0ZSBhIHBpZWNlIG9mIGRhdGEKKyAqIG9mIGVsZW10eXBlIHRvIGNvbW1pdHMsIGFuZCBhIGZldyBmdW5jdGlvbnMgdG8gdXNlIHRoYXQgc3RydWN0LgorICoKKyAqIEFmdGVyIGluY2x1ZGluZyB0aGlzIGhlYWRlciBmaWxlLCB1c2luZzoKKyAqCisgKiBkZWZpbmVfY29tbWl0X3NsYWIoaW5kZWdlZSwgaW50KTsKKyAqCisgKiB3aWxsIGxldCB5b3UgY2FsbCB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKyAqCisgKiAtIGludCAqaW5kZWdyZWVfYXQoc3RydWN0IGluZGVncmVlICosIHN0cnVjdCBjb21taXQgKik7CisgKgorICogICBUaGlzIGZ1bmN0aW9uIGxvY2F0ZXMgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBjb21taXQgaW4KKyAqICAgdGhlIGluZGVncmVlIHNsYWIsIGFuZCByZXR1cm5zIHRoZSBwb2ludGVyIHRvIGl0LgorICoKKyAqIC0gdm9pZCBpbml0X2luZGVncmVlKHN0cnVjdCBpbmRlZ3JlZSAqKTsKKyAqICAgdm9pZCBpbml0X2luZGVncmVlX3dpdGhfc3RyaWRlKHN0cnVjdCBpbmRlZ3JlZSAqLCBpbnQpOworICoKKyAqICAgSW5pdGlhbGl6ZXMgdGhlIGluZGVncmVlIHNsYWIgdGhhdCBhc3NvY2lhdGVzIGFuIGFycmF5IG9mIGludGVnZXJzCisgKiAgIHRvIGVhY2ggY29tbWl0LiAnc3RyaWRlJyBzcGVjaWZpZXMgaG93IGJpZyBlYWNoIGFycmF5IGlzLiAgVGhlIHNsYWIKKyAqICAgdGhhdCBpZCBpbml0aWFsaWVkIGJ5IHRoZSB2YXJpYW50IHdpdGhvdXQgIl93aXRoX3N0cmlkZSIgYXNzb2NpYXRlcworICogICBlYWNoIGNvbW1pdCB3aXRoIGFuIGFycmF5IG9mIG9uZSBpbnRlZ2VyLgorICovCisKKy8qIGFsbG9jYXRlIH41MTJrQiBhdCBvbmNlLCBhbGxvd2luZyBmb3IgbWFsbG9jIG92ZXJoZWFkICovCisjaWZuZGVmIENPTU1JVF9TTEFCX1NJWkUKKyNkZWZpbmUgQ09NTUlUX1NMQUJfU0laRSAoNTEyKjEwMjQtMzIpCisjZW5kaWYKKworI2RlZmluZSBkZWZpbmVfY29tbWl0X3NsYWIoc2xhYm5hbWUsIGVsZW10eXBlKSAJCQkJXAorCQkJCQkJCQkJXAorc3RydWN0IHNsYWJuYW1lIHsJCQkJCQkJXAorCXVuc2lnbmVkIHNsYWJfc2l6ZTsJCQkJCQlcCisJdW5zaWduZWQgc3RyaWRlOwkJCQkJCVwKKwl1bnNpZ25lZCBzbGFiX2NvdW50OwkJCQkJCVwKKwllbGVtdHlwZSAqKnNsYWI7CQkJCQkJXAorfTsJCQkJCQkJCQlcCitzdGF0aWMgaW50IHN0YXRfICMjc2xhYm5hbWUjIyByZWFsbG9jOwkJCQkJXAorCQkJCQkJCQkJXAorc3RhdGljIHZvaWQgaW5pdF8gIyNzbGFibmFtZSMjIF93aXRoX3N0cmlkZShzdHJ1Y3Qgc2xhYm5hbWUgKnMsCQlcCisJCQkJCSAgICB1bnNpZ25lZCBzdHJpZGUpCQlcCit7CQkJCQkJCQkJXAorCXVuc2lnbmVkIGludCBlbGVtX3NpemU7CQkJCQkJXAorCWlmICghc3RyaWRlKQkJCQkJCQlcCisJCXN0cmlkZSA9IDE7CQkJCQkJXAorCXMtPnN0cmlkZSA9IHN0cmlkZTsJCQkJCQlcCisJZWxlbV9zaXplID0gc2l6ZW9mKGVsZW10eXBlKSAqIHN0cmlkZTsJCQkJXAorCXMtPnNsYWJfc2l6ZSA9IENPTU1JVF9TTEFCX1NJWkUgLyBlbGVtX3NpemU7CQkJXAorCXMtPnNsYWJfY291bnQgPSAwOwkJCQkJCVwKKwlzLT5zbGFiID0gTlVMTDsJCQkJCQkJXAorfQkJCQkJCQkJCVwKKwkJCQkJCQkJCVwKK3N0YXRpYyB2b2lkIGluaXRfICMjc2xhYm5hbWUoc3RydWN0IHNsYWJuYW1lICpzKQkJCVwKK3sJCQkJCQkJCQlcCisJaW5pdF8gIyNzbGFibmFtZSMjIF93aXRoX3N0cmlkZShzLCAxKTsJCQkJXAorfQkJCQkJCQkJCVwKKwkJCQkJCQkJCVwKK3N0YXRpYyB2b2lkIGNsZWFyXyAjI3NsYWJuYW1lKHN0cnVjdCBzbGFibmFtZSAqcykJCQlcCit7CQkJCQkJCQkJXAorCWludCBpOwkJCQkJCQkJXAorCWZvciAoaSA9IDA7IGkgPCBzLT5zbGFiX2NvdW50OyBpKyspCQkJCVwKKwkJZnJlZShzLT5zbGFiW2ldKTsJCQkJCVwKKwlzLT5zbGFiX2NvdW50ID0gMDsJCQkJCQlcCisJZnJlZShzLT5zbGFiKTsJCQkJCQkJXAorCXMtPnNsYWIgPSBOVUxMOwkJCQkJCQlcCit9CQkJCQkJCQkJXAorCQkJCQkJCQkJXAorc3RhdGljIGVsZW10eXBlICpzbGFibmFtZSMjIF9hdChzdHJ1Y3Qgc2xhYm5hbWUgKnMsCQkJXAorCQkJCWNvbnN0IHN0cnVjdCBjb21taXQgKmMpCQkJXAorewkJCQkJCQkJCVwKKwlpbnQgbnRoX3NsYWIsIG50aF9zbG90OwkJCQkJCVwKKwkJCQkJCQkJCVwKKwludGhfc2xhYiA9IGMtPmluZGV4IC8gcy0+c2xhYl9zaXplOwkJCQlcCisJbnRoX3Nsb3QgPSBjLT5pbmRleCAlIHMtPnNsYWJfc2l6ZTsJCQkJXAorCQkJCQkJCQkJXAorCWlmIChzLT5zbGFiX2NvdW50IDw9IG50aF9zbGFiKSB7CQkJCVwKKwkJaW50IGk7CQkJCQkJCVwKKwkJcy0+c2xhYiA9IHhyZWFsbG9jKHMtPnNsYWIsCQkJCVwKKwkJCQkgICAobnRoX3NsYWIgKyAxKSAqIHNpemVvZihzLT5zbGFiKSk7CVwKKwkJc3RhdF8gIyNzbGFibmFtZSMjIHJlYWxsb2MrKzsJCQkJXAorCQlmb3IgKGkgPSBzLT5zbGFiX2NvdW50OyBpIDw9IG50aF9zbGFiOyBpKyspCQlcCisJCQlzLT5zbGFiW2ldID0gTlVMTDsJCQkJXAorCQlzLT5zbGFiX2NvdW50ID0gbnRoX3NsYWIgKyAxOwkJCQlcCisJfQkJCQkJCQkJXAorCWlmICghcy0+c2xhYltudGhfc2xhYl0pCQkJCQkJXAorCQlzLT5zbGFiW250aF9zbGFiXSA9IHhjYWxsb2Mocy0+c2xhYl9zaXplLAkJXAorCQkJCQkgICAgc2l6ZW9mKCoqcy0+c2xhYikgKiBzLT5zdHJpZGUpOwkJXAorCXJldHVybiAmcy0+c2xhYltudGhfc2xhYl1bbnRoX3Nsb3QgKiBzLT5zdHJpZGVdOwkJCQlcCit9CQkJCQkJCQkJXAorCQkJCQkJCQkJXAorc3RhdGljIGludCBzdGF0XyAjI3NsYWJuYW1lIyMgcmVhbGxvYworCisjZW5kaWYgLyogQ09NTUlUX1NMQUJfSCAqLwpkaWZmIC0tZ2l0IGEvY29tbWl0LmMgYi9jb21taXQuYwppbmRleCA4ODhlMDJhLi5hNTc1NTY0IDEwMDY0NAotLS0gYS9jb21taXQuYworKysgYi9jb21taXQuYwpAQCAtOCwxMiArOCwxNSBAQAogI2luY2x1ZGUgIm5vdGVzLmgiCiAjaW5jbHVkZSAiZ3BnLWludGVyZmFjZS5oIgogI2luY2x1ZGUgIm1lcmdlc29ydC5oIgorI2luY2x1ZGUgImNvbW1pdC1zbGFiLmgiCisjaW5jbHVkZSAicHJpby1xdWV1ZS5oIgogCiBzdGF0aWMgc3RydWN0IGNvbW1pdF9leHRyYV9oZWFkZXIgKnJlYWRfY29tbWl0X2V4dHJhX2hlYWRlcl9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKiopOwogCiBpbnQgc2F2ZV9jb21taXRfYnVmZmVyID0gMTsKIAogY29uc3QgY2hhciAqY29tbWl0X3R5cGUgPSAiY29tbWl0IjsKK3N0YXRpYyBpbnQgY29tbWl0X2NvdW50OwogCiBzdGF0aWMgc3RydWN0IGNvbW1pdCAqY2hlY2tfY29tbWl0KHN0cnVjdCBvYmplY3QgKm9iaiwKIAkJCQkgICBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLApAQCAtNTgsOCArNjEsMTEgQEAKIHN0cnVjdCBjb21taXQgKmxvb2t1cF9jb21taXQoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKIHsKIAlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBsb29rdXBfb2JqZWN0KHNoYTEpOwotCWlmICghb2JqKQotCQlyZXR1cm4gY3JlYXRlX29iamVjdChzaGExLCBPQkpfQ09NTUlULCBhbGxvY19jb21taXRfbm9kZSgpKTsKKwlpZiAoIW9iaikgeworCQlzdHJ1Y3QgY29tbWl0ICpjID0gYWxsb2NfY29tbWl0X25vZGUoKTsKKwkJYy0+aW5kZXggPSBjb21taXRfY291bnQrKzsKKwkJcmV0dXJuIGNyZWF0ZV9vYmplY3Qoc2hhMSwgT0JKX0NPTU1JVCwgYyk7CisJfQogCWlmICghb2JqLT50eXBlKQogCQlvYmotPnR5cGUgPSBPQkpfQ09NTUlUOwogCXJldHVybiBjaGVja19jb21taXQob2JqLCBzaGExLCAwKTsKQEAgLTUwNywzMiArNTEzLDEzNiBAQAogfQogCiAvKgorICogVG9wb2xvZ2ljYWwgc29ydCBzdXBwb3J0CisgKi8KKworLyogY291bnQgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgaGF2ZSBub3QgYmVlbiBlbWl0dGVkICovCitkZWZpbmVfY29tbWl0X3NsYWIoaW5kZWdyZWVfc2xhYiwgaW50KTsKKworLyogcmVjb3JkIGF1dGhvci1kYXRlIGZvciBlYWNoIGNvbW1pdCBvYmplY3QgKi8KK2RlZmluZV9jb21taXRfc2xhYihhdXRob3JfZGF0ZV9zbGFiLCB1bnNpZ25lZCBsb25nKTsKKworc3RhdGljIHZvaWQgcmVjb3JkX2F1dGhvcl9kYXRlKHN0cnVjdCBhdXRob3JfZGF0ZV9zbGFiICphdXRob3JfZGF0ZSwKKwkJCSAgICAgICBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJY29uc3QgY2hhciAqYnVmLCAqbGluZV9lbmQ7CisJY2hhciAqYnVmZmVyID0gTlVMTDsKKwlzdHJ1Y3QgaWRlbnRfc3BsaXQgaWRlbnQ7CisJY2hhciAqZGF0ZV9lbmQ7CisJdW5zaWduZWQgbG9uZyBkYXRlOworCisJaWYgKCFjb21taXQtPmJ1ZmZlcikgeworCQl1bnNpZ25lZCBsb25nIHNpemU7CisJCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKwkJYnVmZmVyID0gcmVhZF9zaGExX2ZpbGUoY29tbWl0LT5vYmplY3Quc2hhMSwgJnR5cGUsICZzaXplKTsKKwkJaWYgKCFidWZmZXIpCisJCQlyZXR1cm47CisJfQorCisJZm9yIChidWYgPSBjb21taXQtPmJ1ZmZlciA/IGNvbW1pdC0+YnVmZmVyIDogYnVmZmVyOworCSAgICAgYnVmOworCSAgICAgYnVmID0gbGluZV9lbmQgKyAxKSB7CisJCWxpbmVfZW5kID0gc3RyY2hybnVsKGJ1ZiwgJ1xuJyk7CisJCWlmIChwcmVmaXhjbXAoYnVmLCAiYXV0aG9yICIpKSB7CisJCQlpZiAoIWxpbmVfZW5kWzBdIHx8IGxpbmVfZW5kWzFdID09ICdcbicpCisJCQkJcmV0dXJuOyAvKiBlbmQgb2YgaGVhZGVyICovCisJCQljb250aW51ZTsKKwkJfQorCQlpZiAoc3BsaXRfaWRlbnRfbGluZSgmaWRlbnQsCisJCQkJICAgICBidWYgKyBzdHJsZW4oImF1dGhvciAiKSwKKwkJCQkgICAgIGxpbmVfZW5kIC0gKGJ1ZiArIHN0cmxlbigiYXV0aG9yICIpKSkgfHwKKwkJICAgICFpZGVudC5kYXRlX2JlZ2luIHx8ICFpZGVudC5kYXRlX2VuZCkKKwkJCWdvdG8gZmFpbF9leGl0OyAvKiBtYWxmb3JtZWQgImF1dGhvciIgbGluZSAqLworCQlicmVhazsKKwl9CisKKwlkYXRlID0gc3RydG91bChpZGVudC5kYXRlX2JlZ2luLCAmZGF0ZV9lbmQsIDEwKTsKKwlpZiAoZGF0ZV9lbmQgIT0gaWRlbnQuZGF0ZV9lbmQpCisJCWdvdG8gZmFpbF9leGl0OyAvKiBtYWxmb3JtZWQgZGF0ZSAqLworCSooYXV0aG9yX2RhdGVfc2xhYl9hdChhdXRob3JfZGF0ZSwgY29tbWl0KSkgPSBkYXRlOworCitmYWlsX2V4aXQ6CisJZnJlZShidWZmZXIpOworfQorCitzdGF0aWMgaW50IGNvbXBhcmVfY29tbWl0c19ieV9hdXRob3JfZGF0ZShjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8sCisJCQkJCSAgdm9pZCAqY2JfZGF0YSkKK3sKKwljb25zdCBzdHJ1Y3QgY29tbWl0ICphID0gYV8sICpiID0gYl87CisJc3RydWN0IGF1dGhvcl9kYXRlX3NsYWIgKmF1dGhvcl9kYXRlID0gY2JfZGF0YTsKKwl1bnNpZ25lZCBsb25nIGFfZGF0ZSA9ICooYXV0aG9yX2RhdGVfc2xhYl9hdChhdXRob3JfZGF0ZSwgYSkpOworCXVuc2lnbmVkIGxvbmcgYl9kYXRlID0gKihhdXRob3JfZGF0ZV9zbGFiX2F0KGF1dGhvcl9kYXRlLCBiKSk7CisKKwkvKiBuZXdlciBjb21taXRzIHdpdGggbGFyZ2VyIGRhdGUgZmlyc3QgKi8KKwlpZiAoYV9kYXRlIDwgYl9kYXRlKQorCQlyZXR1cm4gMTsKKwllbHNlIGlmIChhX2RhdGUgPiBiX2RhdGUpCisJCXJldHVybiAtMTsKKwlyZXR1cm4gMDsKK30KKworaW50IGNvbXBhcmVfY29tbWl0c19ieV9jb21taXRfZGF0ZShjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8sIHZvaWQgKnVudXNlZCkKK3sKKwljb25zdCBzdHJ1Y3QgY29tbWl0ICphID0gYV8sICpiID0gYl87CisJLyogbmV3ZXIgY29tbWl0cyB3aXRoIGxhcmdlciBkYXRlIGZpcnN0ICovCisJaWYgKGEtPmRhdGUgPCBiLT5kYXRlKQorCQlyZXR1cm4gMTsKKwllbHNlIGlmIChhLT5kYXRlID4gYi0+ZGF0ZSkKKwkJcmV0dXJuIC0xOworCXJldHVybiAwOworfQorCisvKgogICogUGVyZm9ybXMgYW4gaW4tcGxhY2UgdG9wb2xvZ2ljYWwgc29ydCBvbiB0aGUgbGlzdCBzdXBwbGllZC4KICAqLwotdm9pZCBzb3J0X2luX3RvcG9sb2dpY2FsX29yZGVyKHN0cnVjdCBjb21taXRfbGlzdCAqKiBsaXN0LCBpbnQgbGlmbykKK3ZvaWQgc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcihzdHJ1Y3QgY29tbWl0X2xpc3QgKipsaXN0LCBlbnVtIHJldl9zb3J0X29yZGVyIHNvcnRfb3JkZXIpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICpuZXh0LCAqb3JpZyA9ICpsaXN0OwotCXN0cnVjdCBjb21taXRfbGlzdCAqd29yaywgKippbnNlcnQ7CiAJc3RydWN0IGNvbW1pdF9saXN0ICoqcHB0cjsKKwlzdHJ1Y3QgaW5kZWdyZWVfc2xhYiBpbmRlZ3JlZTsKKwlzdHJ1Y3QgcHJpb19xdWV1ZSBxdWV1ZTsKKwlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJc3RydWN0IGF1dGhvcl9kYXRlX3NsYWIgYXV0aG9yX2RhdGU7CiAKIAlpZiAoIW9yaWcpCiAJCXJldHVybjsKIAkqbGlzdCA9IE5VTEw7CiAKKwlpbml0X2luZGVncmVlX3NsYWIoJmluZGVncmVlKTsKKwltZW1zZXQoJnF1ZXVlLCAnXDAnLCBzaXplb2YocXVldWUpKTsKKworCXN3aXRjaCAoc29ydF9vcmRlcikgeworCWRlZmF1bHQ6IC8qIFJFVl9TT1JUX0lOX0dSQVBIX09SREVSICovCisJCXF1ZXVlLmNvbXBhcmUgPSBOVUxMOworCQlicmVhazsKKwljYXNlIFJFVl9TT1JUX0JZX0NPTU1JVF9EQVRFOgorCQlxdWV1ZS5jb21wYXJlID0gY29tcGFyZV9jb21taXRzX2J5X2NvbW1pdF9kYXRlOworCQlicmVhazsKKwljYXNlIFJFVl9TT1JUX0JZX0FVVEhPUl9EQVRFOgorCQlpbml0X2F1dGhvcl9kYXRlX3NsYWIoJmF1dGhvcl9kYXRlKTsKKwkJcXVldWUuY29tcGFyZSA9IGNvbXBhcmVfY29tbWl0c19ieV9hdXRob3JfZGF0ZTsKKwkJcXVldWUuY2JfZGF0YSA9ICZhdXRob3JfZGF0ZTsKKwkJYnJlYWs7CisJfQorCiAJLyogTWFyayB0aGVtIGFuZCBjbGVhciB0aGUgaW5kZWdyZWUgKi8KIAlmb3IgKG5leHQgPSBvcmlnOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dCkgewogCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBuZXh0LT5pdGVtOwotCQljb21taXQtPmluZGVncmVlID0gMTsKKwkJKihpbmRlZ3JlZV9zbGFiX2F0KCZpbmRlZ3JlZSwgY29tbWl0KSkgPSAxOworCQkvKiBhbHNvIHJlY29yZCB0aGUgYXV0aG9yIGRhdGVzLCBpZiBuZWVkZWQgKi8KKwkJaWYgKHNvcnRfb3JkZXIgPT0gUkVWX1NPUlRfQllfQVVUSE9SX0RBVEUpCisJCQlyZWNvcmRfYXV0aG9yX2RhdGUoJmF1dGhvcl9kYXRlLCBjb21taXQpOwogCX0KIAogCS8qIHVwZGF0ZSB0aGUgaW5kZWdyZWUgKi8KIAlmb3IgKG5leHQgPSBvcmlnOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dCkgewotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKiBwYXJlbnRzID0gbmV4dC0+aXRlbS0+cGFyZW50czsKKwkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzID0gbmV4dC0+aXRlbS0+cGFyZW50czsKIAkJd2hpbGUgKHBhcmVudHMpIHsKIAkJCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IHBhcmVudHMtPml0ZW07CisJCQlpbnQgKnBpID0gaW5kZWdyZWVfc2xhYl9hdCgmaW5kZWdyZWUsIHBhcmVudCk7CiAKLQkJCWlmIChwYXJlbnQtPmluZGVncmVlKQotCQkJCXBhcmVudC0+aW5kZWdyZWUrKzsKKwkJCWlmICgqcGkpCisJCQkJKCpwaSkrKzsKIAkJCXBhcmVudHMgPSBwYXJlbnRzLT5uZXh0OwogCQl9CiAJfQpAQCAtNTQ0LDM0ICs2NTQsMzMgQEAKIAkgKgogCSAqIHRoZSB0aXBzIHNlcnZlIGFzIGEgc3RhcnRpbmcgc2V0IGZvciB0aGUgd29yayBxdWV1ZS4KIAkgKi8KLQl3b3JrID0gTlVMTDsKLQlpbnNlcnQgPSAmd29yazsKIAlmb3IgKG5leHQgPSBvcmlnOyBuZXh0OyBuZXh0ID0gbmV4dC0+bmV4dCkgewogCQlzdHJ1Y3QgY29tbWl0ICpjb21taXQgPSBuZXh0LT5pdGVtOwogCi0JCWlmIChjb21taXQtPmluZGVncmVlID09IDEpCi0JCQlpbnNlcnQgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KGNvbW1pdCwgaW5zZXJ0KS0+bmV4dDsKKwkJaWYgKCooaW5kZWdyZWVfc2xhYl9hdCgmaW5kZWdyZWUsIGNvbW1pdCkpID09IDEpCisJCQlwcmlvX3F1ZXVlX3B1dCgmcXVldWUsIGNvbW1pdCk7CiAJfQogCi0JLyogcHJvY2VzcyB0aGUgbGlzdCBpbiB0b3BvbG9naWNhbCBvcmRlciAqLwotCWlmICghbGlmbykKLQkJY29tbWl0X2xpc3Rfc29ydF9ieV9kYXRlKCZ3b3JrKTsKKwkvKgorCSAqIFRoaXMgaXMgdW5mb3J0dW5hdGU7IHRoZSBpbml0aWFsIHRpcHMgbmVlZCB0byBiZSBzaG93bgorCSAqIGluIHRoZSBvcmRlciBnaXZlbiBmcm9tIHRoZSByZXZpc2lvbiB0cmF2ZXJzYWwgbWFjaGluZXJ5LgorCSAqLworCWlmIChzb3J0X29yZGVyID09IFJFVl9TT1JUX0lOX0dSQVBIX09SREVSKQorCQlwcmlvX3F1ZXVlX3JldmVyc2UoJnF1ZXVlKTsKKworCS8qIFdlIG5vIGxvbmdlciBuZWVkIHRoZSBjb21taXQgbGlzdCAqLworCWZyZWVfY29tbWl0X2xpc3Qob3JpZyk7CiAKIAlwcHRyID0gbGlzdDsKIAkqbGlzdCA9IE5VTEw7Ci0Jd2hpbGUgKHdvcmspIHsKLQkJc3RydWN0IGNvbW1pdCAqY29tbWl0OwotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsICp3b3JrX2l0ZW07CisJd2hpbGUgKChjb21taXQgPSBwcmlvX3F1ZXVlX2dldCgmcXVldWUpKSAhPSBOVUxMKSB7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50czsKIAotCQl3b3JrX2l0ZW0gPSB3b3JrOwotCQl3b3JrID0gd29ya19pdGVtLT5uZXh0OwotCQl3b3JrX2l0ZW0tPm5leHQgPSBOVUxMOwotCi0JCWNvbW1pdCA9IHdvcmtfaXRlbS0+aXRlbTsKIAkJZm9yIChwYXJlbnRzID0gY29tbWl0LT5wYXJlbnRzOyBwYXJlbnRzIDsgcGFyZW50cyA9IHBhcmVudHMtPm5leHQpIHsKIAkJCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IHBhcmVudHMtPml0ZW07CisJCQlpbnQgKnBpID0gaW5kZWdyZWVfc2xhYl9hdCgmaW5kZWdyZWUsIHBhcmVudCk7CiAKLQkJCWlmICghcGFyZW50LT5pbmRlZ3JlZSkKKwkJCWlmICghKnBpKQogCQkJCWNvbnRpbnVlOwogCiAJCQkvKgpAQCAtNTc5LDIxICs2ODgsMjIgQEAKIAkJCSAqIHdoZW4gYWxsIHRoZWlyIGNoaWxkcmVuIGhhdmUgYmVlbiBlbWl0dGVkIHRoZXJlYnkKIAkJCSAqIGd1YXJhbnRlZWluZyB0b3BvbG9naWNhbCBvcmRlci4KIAkJCSAqLwotCQkJaWYgKC0tcGFyZW50LT5pbmRlZ3JlZSA9PSAxKSB7Ci0JCQkJaWYgKCFsaWZvKQotCQkJCQljb21taXRfbGlzdF9pbnNlcnRfYnlfZGF0ZShwYXJlbnQsICZ3b3JrKTsKLQkJCQllbHNlCi0JCQkJCWNvbW1pdF9saXN0X2luc2VydChwYXJlbnQsICZ3b3JrKTsKLQkJCX0KKwkJCWlmICgtLSgqcGkpID09IDEpCisJCQkJcHJpb19xdWV1ZV9wdXQoJnF1ZXVlLCBwYXJlbnQpOwogCQl9CiAJCS8qCi0JCSAqIHdvcmtfaXRlbSBpcyBhIGNvbW1pdCBhbGwgb2Ygd2hvc2UgY2hpbGRyZW4KLQkJICogaGF2ZSBhbHJlYWR5IGJlZW4gZW1pdHRlZC4gd2UgY2FuIGVtaXQgaXQgbm93LgorCQkgKiBhbGwgY2hpbGRyZW4gb2YgY29tbWl0IGhhdmUgYWxyZWFkeSBiZWVuCisJCSAqIGVtaXR0ZWQuIHdlIGNhbiBlbWl0IGl0IG5vdy4KIAkJICovCi0JCWNvbW1pdC0+aW5kZWdyZWUgPSAwOwotCQkqcHB0ciA9IHdvcmtfaXRlbTsKLQkJcHB0ciA9ICZ3b3JrX2l0ZW0tPm5leHQ7CisJCSooaW5kZWdyZWVfc2xhYl9hdCgmaW5kZWdyZWUsIGNvbW1pdCkpID0gMDsKKworCQlwcHRyID0gJmNvbW1pdF9saXN0X2luc2VydChjb21taXQsIHBwdHIpLT5uZXh0OwogCX0KKworCWNsZWFyX2luZGVncmVlX3NsYWIoJmluZGVncmVlKTsKKwljbGVhcl9wcmlvX3F1ZXVlKCZxdWV1ZSk7CisJaWYgKHNvcnRfb3JkZXIgPT0gUkVWX1NPUlRfQllfQVVUSE9SX0RBVEUpCisJCWNsZWFyX2F1dGhvcl9kYXRlX3NsYWIoJmF1dGhvcl9kYXRlKTsKIH0KIAogLyogbWVyZ2UtYmFzZSBzdHVmZiAqLwpAQCAtMTI0MCwxMCArMTM1MCwxNSBAQAogc3RhdGljIGludCBmaW5kX2ludmFsaWRfdXRmOChjb25zdCBjaGFyICpidWYsIGludCBsZW4pCiB7CiAJaW50IG9mZnNldCA9IDA7CisJc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtYXhfY29kZXBvaW50W10gPSB7CisJCTB4N2YsIDB4N2ZmLCAweGZmZmYsIDB4MTBmZmZmCisJfTsKIAogCXdoaWxlIChsZW4pIHsKIAkJdW5zaWduZWQgY2hhciBjID0gKmJ1ZisrOwogCQlpbnQgYnl0ZXMsIGJhZF9vZmZzZXQ7CisJCXVuc2lnbmVkIGludCBjb2RlcG9pbnQ7CisJCXVuc2lnbmVkIGludCBtaW5fdmFsLCBtYXhfdmFsOwogCiAJCWxlbi0tOwogCQlvZmZzZXQrKzsKQEAgLTEyNjQsMjQgKzEzNzksNDggQEAKIAkJCWJ5dGVzKys7CiAJCX0KIAotCQkvKiBNdXN0IGJlIGJldHdlZW4gMSBhbmQgNSBtb3JlIGJ5dGVzICovCi0JCWlmIChieXRlcyA8IDEgfHwgYnl0ZXMgPiA1KQorCQkvKgorCQkgKiBNdXN0IGJlIGJldHdlZW4gMSBhbmQgMyBtb3JlIGJ5dGVzLiAgTG9uZ2VyIHNlcXVlbmNlcyByZXN1bHQgaW4KKwkJICogY29kZXBvaW50cyBiZXlvbmQgVSsxMEZGRkYsIHdoaWNoIGFyZSBndWFyYW50ZWVkIG5ldmVyIHRvIGV4aXN0LgorCQkgKi8KKwkJaWYgKGJ5dGVzIDwgMSB8fCAzIDwgYnl0ZXMpCiAJCQlyZXR1cm4gYmFkX29mZnNldDsKIAogCQkvKiBEbyB3ZSAqaGF2ZSogdGhhdCBtYW55IGJ5dGVzPyAqLwogCQlpZiAobGVuIDwgYnl0ZXMpCiAJCQlyZXR1cm4gYmFkX29mZnNldDsKIAorCQkvKgorCQkgKiBQbGFjZSB0aGUgZW5jb2RlZCBiaXRzIGF0IHRoZSBib3R0b20gb2YgdGhlIHZhbHVlIGFuZCBjb21wdXRlIHRoZQorCQkgKiB2YWxpZCByYW5nZS4KKwkJICovCisJCWNvZGVwb2ludCA9IChjICYgMHg3ZikgPj4gYnl0ZXM7CisJCW1pbl92YWwgPSBtYXhfY29kZXBvaW50W2J5dGVzLTFdICsgMTsKKwkJbWF4X3ZhbCA9IG1heF9jb2RlcG9pbnRbYnl0ZXNdOworCiAJCW9mZnNldCArPSBieXRlczsKIAkJbGVuIC09IGJ5dGVzOwogCiAJCS8qIEFuZCB2ZXJpZnkgdGhhdCB0aGV5IGFyZSBnb29kIGNvbnRpbnVhdGlvbiBieXRlcyAqLwogCQlkbyB7CisJCQljb2RlcG9pbnQgPDw9IDY7CisJCQljb2RlcG9pbnQgfD0gKmJ1ZiAmIDB4M2Y7CiAJCQlpZiAoKCpidWYrKyAmIDB4YzApICE9IDB4ODApCiAJCQkJcmV0dXJuIGJhZF9vZmZzZXQ7CiAJCX0gd2hpbGUgKC0tYnl0ZXMpOwogCi0JCS8qIFdlIGNvdWxkL3Nob3VsZCBjaGVjayB0aGUgdmFsdWUgYW5kIGxlbmd0aCBoZXJlIHRvbyAqLworCQkvKiBSZWplY3QgY29kZXBvaW50cyB0aGF0IGFyZSBvdXQgb2YgcmFuZ2UgZm9yIHRoZSBzZXF1ZW5jZSBsZW5ndGguICovCisJCWlmIChjb2RlcG9pbnQgPCBtaW5fdmFsIHx8IGNvZGVwb2ludCA+IG1heF92YWwpCisJCQlyZXR1cm4gYmFkX29mZnNldDsKKwkJLyogU3Vycm9nYXRlcyBhcmUgb25seSBmb3IgVVRGLTE2IGFuZCBjYW5ub3QgYmUgZW5jb2RlZCBpbiBVVEYtOC4gKi8KKwkJaWYgKChjb2RlcG9pbnQgJiAweDFmZjgwMCkgPT0gMHhkODAwKQorCQkJcmV0dXJuIGJhZF9vZmZzZXQ7CisJCS8qIFUreHhGRkZFIGFuZCBVK3h4RkZGRiBhcmUgZ3VhcmFudGVlZCBub24tY2hhcmFjdGVycy4gKi8KKwkJaWYgKChjb2RlcG9pbnQgJiAweGZmZmUpID09IDB4ZmZmZSkKKwkJCXJldHVybiBiYWRfb2Zmc2V0OworCQkvKiBTbyBhcmUgYW55dGhpbmcgaW4gdGhlIHJhbmdlIFUrRkREMC4uVStGREVGLiAqLworCQlpZiAoY29kZXBvaW50ID49IDB4ZmRkMCAmJiBjb2RlcG9pbnQgPD0gMHhmZGVmKQorCQkJcmV0dXJuIGJhZF9vZmZzZXQ7CiAJfQogCXJldHVybiAtMTsKIH0KQEAgLTEyOTEsOSArMTQzMCw2IEBACiAgKgogICogSWYgaXQgaXNuJ3QsIGl0IGFzc3VtZXMgYW55IG5vbi11dGY4IGNoYXJhY3RlcnMgYXJlIExhdGluMSwKICAqIGFuZCBkb2VzIHRoZSBjb252ZXJzaW9uLgotICoKLSAqIEZpeG1lOiB3ZSBzaG91bGQgcHJvYmFibHkgYWxzbyBkaXNhbGxvdyBvdmVybG9uZyBmb3JtcyBhbmQKLSAqIGludmFsaWQgY2hhcmFjdGVycy4gQnV0IHdlIGRvbid0IGRvIHRoYXQgY3VycmVudGx5LgogICovCiBzdGF0aWMgaW50IHZlcmlmeV91dGY4KHN0cnVjdCBzdHJidWYgKmJ1ZikKIHsKZGlmZiAtLWdpdCBhL2NvbW1pdC5oIGIvY29tbWl0LmgKaW5kZXggNmU5YzdjZC4uZDkxMmE5ZCAxMDA2NDQKLS0tIGEvY29tbWl0LmgKKysrIGIvY29tbWl0LmgKQEAgLTYsNiArNiw3IEBACiAjaW5jbHVkZSAic3RyYnVmLmgiCiAjaW5jbHVkZSAiZGVjb3JhdGUuaCIKICNpbmNsdWRlICJncGctaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKIAogc3RydWN0IGNvbW1pdF9saXN0IHsKIAlzdHJ1Y3QgY29tbWl0ICppdGVtOwpAQCAtMTUsNyArMTYsNyBAQAogc3RydWN0IGNvbW1pdCB7CiAJc3RydWN0IG9iamVjdCBvYmplY3Q7CiAJdm9pZCAqdXRpbDsKLQl1bnNpZ25lZCBpbnQgaW5kZWdyZWU7CisJdW5zaWduZWQgaW50IGluZGV4OwogCXVuc2lnbmVkIGxvbmcgZGF0ZTsKIAlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHM7CiAJc3RydWN0IHRyZWUgKnRyZWU7CkBAIC03OSw2ICs4MCw5IEBACiB9OwogCiBzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgeworCS8qCisJICogQ2FsbGVycyBzaG91bGQgdHdlYWsgdGhlc2UgdG8gY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBwcF8qIGZ1bmN0aW9ucy4KKwkgKi8KIAllbnVtIGNtaXRfZm10IGZtdDsKIAlpbnQgYWJicmV2OwogCWNvbnN0IGNoYXIgKnN1YmplY3Q7CkBAIC05Miw2ICs5NiwxMyBAQAogCWNvbnN0IGNoYXIgKm91dHB1dF9lbmNvZGluZzsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1haWxtYXA7CiAJaW50IGNvbG9yOworCXN0cnVjdCBpZGVudF9zcGxpdCAqZnJvbV9pZGVudDsKKworCS8qCisJICogRmllbGRzIGJlbG93IGhlcmUgYXJlIG1hbmlwdWxhdGVkIGludGVybmFsbHkgYnkgcHBfKiBmdW5jdGlvbnMgYW5kCisJICogc2hvdWxkIG5vdCBiZSBjb3VudGVkIG9uIGJ5IGNhbGxlcnMuCisJICovCisJc3RydWN0IHN0cmluZ19saXN0IGluX2JvZHlfaGVhZGVyczsKIH07CiAKIHN0cnVjdCB1c2VyZm9ybWF0X3dhbnQgewpAQCAtMTExLDIwICsxMjIsMjAgQEAKIGV4dGVybiB2b2lkIGZvcm1hdF9jb21taXRfbWVzc2FnZShjb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCiAJCQkJICBjb25zdCBjaGFyICpmb3JtYXQsIHN0cnVjdCBzdHJidWYgKnNiLAogCQkJCSAgY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpjb250ZXh0KTsKLWV4dGVybiB2b2lkIHByZXR0eV9wcmludF9jb21taXQoY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKK2V4dGVybiB2b2lkIHByZXR0eV9wcmludF9jb21taXQoc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKIAkJCQljb25zdCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsCiAJCQkJc3RydWN0IHN0cmJ1ZiAqc2IpOwogZXh0ZXJuIHZvaWQgcHBfY29tbWl0X2Vhc3koZW51bSBjbWl0X2ZtdCBmbXQsIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKIAkJCSAgIHN0cnVjdCBzdHJidWYgKnNiKTsKLXZvaWQgcHBfdXNlcl9pbmZvKGNvbnN0IHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCit2b2lkIHBwX3VzZXJfaW5mbyhzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAogCQkgIGNvbnN0IGNoYXIgKndoYXQsIHN0cnVjdCBzdHJidWYgKnNiLAogCQkgIGNvbnN0IGNoYXIgKmxpbmUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKTsKLXZvaWQgcHBfdGl0bGVfbGluZShjb25zdCBzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAordm9pZCBwcF90aXRsZV9saW5lKHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCiAJCSAgIGNvbnN0IGNoYXIgKiptc2dfcCwKIAkJICAgc3RydWN0IHN0cmJ1ZiAqc2IsCiAJCSAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogCQkgICBpbnQgbmVlZF84Yml0X2N0ZSk7Ci12b2lkIHBwX3JlbWFpbmRlcihjb25zdCBzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAordm9pZCBwcF9yZW1haW5kZXIoc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKIAkJICBjb25zdCBjaGFyICoqbXNnX3AsCiAJCSAgc3RydWN0IHN0cmJ1ZiAqc2IsCiAJCSAgaW50IGluZGVudCk7CkBAIC0xNDIsMTUgKzE1MywyNCBAQAogdm9pZCBjbGVhcl9jb21taXRfbWFya3NfbWFueShpbnQgbnIsIHN0cnVjdCBjb21taXQgKipjb21taXQsIHVuc2lnbmVkIGludCBtYXJrKTsKIHZvaWQgY2xlYXJfY29tbWl0X21hcmtzX2Zvcl9vYmplY3RfYXJyYXkoc3RydWN0IG9iamVjdF9hcnJheSAqYSwgdW5zaWduZWQgbWFyayk7CiAKKworZW51bSByZXZfc29ydF9vcmRlciB7CisJUkVWX1NPUlRfSU5fR1JBUEhfT1JERVIgPSAwLAorCVJFVl9TT1JUX0JZX0NPTU1JVF9EQVRFLAorCVJFVl9TT1JUX0JZX0FVVEhPUl9EQVRFCit9OworCiAvKgogICogUGVyZm9ybXMgYW4gaW4tcGxhY2UgdG9wb2xvZ2ljYWwgc29ydCBvZiBsaXN0IHN1cHBsaWVkLgogICoKICAqICAgaW52YXJpYW50IG9mIHJlc3VsdGluZyBsaXN0IGlzOgogICogICAgICBhIHJlYWNoYWJsZSBmcm9tIGIgPT4gb3JkKGIpIDwgb3JkKGEpCi0gKiAgIGluIGFkZGl0aW9uLCB3aGVuIGxpZm8gPT0gMCwgY29tbWl0cyBvbiBwYXJhbGxlbCB0cmFja3MgYXJlCi0gKiAgIHNvcnRlZCBpbiB0aGUgZGF0ZXMgb3JkZXIuCisgKiAgIHNvcnRfb3JkZXIgZnVydGhlciBzcGVjaWZpZXM6CisgKiAgIFJFVl9TT1JUX0lOX0dSQVBIX09SREVSOiB0cnkgdG8gc2hvdyBhIGNvbW1pdCBvbiBhIHNpbmdsZS1wYXJlbnQKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYWluIHRvZ2V0aGVyLgorICogICBSRVZfU09SVF9CWV9DT01NSVRfREFURTogc2hvdyBlbGlnaWJsZSBjb21taXRzIGluIGNvbW1pdHRlci1kYXRlIG9yZGVyLgogICovCi12b2lkIHNvcnRfaW5fdG9wb2xvZ2ljYWxfb3JkZXIoc3RydWN0IGNvbW1pdF9saXN0ICoqIGxpc3QsIGludCBsaWZvKTsKK3ZvaWQgc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcihzdHJ1Y3QgY29tbWl0X2xpc3QgKiosIGVudW0gcmV2X3NvcnRfb3JkZXIpOwogCiBzdHJ1Y3QgY29tbWl0X2dyYWZ0IHsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwpAQCAtMjQ1LDQgKzI2NSw2IEBACiAgKi8KIGV4dGVybiB2b2lkIGNoZWNrX2NvbW1pdF9zaWduYXR1cmUoY29uc3Qgc3RydWN0IGNvbW1pdCogY29tbWl0LCBzdHJ1Y3Qgc2lnbmF0dXJlX2NoZWNrICpzaWdjKTsKIAoraW50IGNvbXBhcmVfY29tbWl0c19ieV9jb21taXRfZGF0ZShjb25zdCB2b2lkICphXywgY29uc3Qgdm9pZCAqYl8sIHZvaWQgKnVudXNlZCk7CisKICNlbmRpZiAvKiBDT01NSVRfSCAqLwpkaWZmIC0tZ2l0IGEvY29tcGF0L2N5Z3dpbi5jIGIvY29tcGF0L2N5Z3dpbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzFiNDFkLi4wMDAwMDAwCi0tLSBhL2NvbXBhdC9jeWd3aW4uYworKysgL2Rldi9udWxsCkBAIC0xLDE2MiArMCwwIEBACi0jZGVmaW5lIENZR1dJTl9DCi0jZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSNpZmRlZiBDWUdXSU5fVjE1X1dJTjMyQVBJCi0jaW5jbHVkZSAiLi4vZ2l0LWNvbXBhdC11dGlsLmgiCi0jaW5jbHVkZSAid2luMzIuaCIKLSNlbHNlCi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KLSNpbmNsdWRlICJ3aW4zMi5oIgotI2luY2x1ZGUgIi4uL2dpdC1jb21wYXQtdXRpbC5oIgotI2VuZGlmCi0jaW5jbHVkZSAiLi4vY2FjaGUuaCIgLyogdG8gcmVhZCBjb25maWd1cmF0aW9uICovCi0KLS8qCi0gKiBSZXR1cm4gUE9TSVggcGVybWlzc2lvbiBiaXRzLCByZWdhcmRsZXNzIG9mIGNvcmUuaWdub3JlY3lnd2luZnN0cmlja3MKLSAqLwotaW50IGN5Z3dpbl9nZXRfc3RfbW9kZV9iaXRzKGNvbnN0IGNoYXIgKnBhdGgsIGludCAqbW9kZSkKLXsKLQlzdHJ1Y3Qgc3RhdCBzdDsKLQlpZiAobHN0YXQocGF0aCwgJnN0KSA8IDApCi0JCXJldHVybiAtMTsKLQkqbW9kZSA9IHN0LnN0X21vZGU7Ci0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBmaWxldGltZV90b190aW1lc3BlYyhjb25zdCBGSUxFVElNRSAqZnQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCi17Ci0JbG9uZyBsb25nIHdpblRpbWUgPSAoKGxvbmcgbG9uZylmdC0+ZHdIaWdoRGF0ZVRpbWUgPDwgMzIpICsKLQkJCWZ0LT5kd0xvd0RhdGVUaW1lOwotCXdpblRpbWUgLT0gMTE2NDQ0NzM2MDAwMDAwMDAwTEw7IC8qIFdpbmRvd3MgdG8gVW5peCBFcG9jaCBjb252ZXJzaW9uICovCi0JLyogY29udmVydCAxMDAtbnNlY29uZCBpbnRlcnZhbCB0byBzZWNvbmRzIGFuZCBuYW5vc2Vjb25kcyAqLwotCXRzLT50dl9zZWMgPSAodGltZV90KSh3aW5UaW1lLzEwMDAwMDAwKTsKLQl0cy0+dHZfbnNlYyA9IChsb25nKSh3aW5UaW1lIC0gdHMtPnR2X3NlYyoxMDAwMDAwMExMKSAqIDEwMDsKLX0KLQotI2RlZmluZSBzaXplX3RvX2Jsb2NrcyhzKSAoKChzKSs1MTEpLzUxMikKLQotLyogZG9fc3RhdCBpcyBhIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBmb3IgY3lnd2luX2xzdGF0IGFuZCBjeWd3aW5fc3RhdC4KLSAqCi0gKiBUbyBzaW1wbGlmeSBpdHMgbG9naWMsIGluIHRoZSBjYXNlIG9mIGN5Z3dpbiBzeW1saW5rcywgdGhpcyBpbXBsZW1lbnRhdGlvbgotICogZmFsbHMgYmFjayB0byB0aGUgY3lnd2luIHZlcnNpb24gb2Ygc3RhdC9sc3RhdCwgd2hpY2ggaXMgcHJvdmlkZWQgYXMgdGhlCi0gKiBsYXN0IGFyZ3VtZW50LgotICovCi1zdGF0aWMgaW50IGRvX3N0YXQoY29uc3QgY2hhciAqZmlsZV9uYW1lLCBzdHJ1Y3Qgc3RhdCAqYnVmLCBzdGF0X2ZuX3QgY3lnc3RhdCkKLXsKLQlXSU4zMl9GSUxFX0FUVFJJQlVURV9EQVRBIGZkYXRhOwotCi0JaWYgKGZpbGVfbmFtZVswXSA9PSAnLycpCi0JCXJldHVybiBjeWdzdGF0IChmaWxlX25hbWUsIGJ1Zik7Ci0KLQlpZiAoIShlcnJubyA9IGdldF9maWxlX2F0dHIoZmlsZV9uYW1lLCAmZmRhdGEpKSkgewotCQkvKgotCQkgKiBJZiB0aGUgc3lzdGVtIGF0dHJpYnV0ZSBpcyBzZXQgYW5kIGl0IGlzIG5vdCBhIGRpcmVjdG9yeSB0aGVuCi0JCSAqIGl0IGNvdWxkIGJlIGEgc3ltYm9sIGxpbmsgY3JlYXRlZCBpbiB0aGUgbm93aW5zeW1saW5rcyBtb2RlLgotCQkgKiBOb3JtYWxseSwgQ3lnd2luIHdvcmtzIGluIHRoZSB3aW5zeW1saW5rcyBtb2RlLCBzbyB0aGlzIHNpdHVhdGlvbgotCQkgKiBpcyB2ZXJ5IHVubGlrZWx5LiBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSBvZiBvdXIgY29kZSwgbGV0J3MKLQkJICogQ3lnd2luIHRvIGhhbmRsZSBpdC4KLQkJICovCi0JCWlmICgoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX1NZU1RFTSkgJiYKLQkJICAgICEoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyAmIEZJTEVfQVRUUklCVVRFX0RJUkVDVE9SWSkpCi0JCQlyZXR1cm4gY3lnc3RhdChmaWxlX25hbWUsIGJ1Zik7Ci0KLQkJLyogZmlsbCBvdXQgdGhlIHN0YXQgc3RydWN0dXJlICovCi0JCWJ1Zi0+c3RfZGV2ID0gYnVmLT5zdF9yZGV2ID0gMDsgLyogbm90IHVzZWQgYnkgR2l0ICovCi0JCWJ1Zi0+c3RfaW5vID0gMDsKLQkJYnVmLT5zdF9tb2RlID0gZmlsZV9hdHRyX3RvX3N0X21vZGUoZmRhdGEuZHdGaWxlQXR0cmlidXRlcyk7Ci0JCWJ1Zi0+c3RfbmxpbmsgPSAxOwotCQlidWYtPnN0X3VpZCA9IGJ1Zi0+c3RfZ2lkID0gMDsKLSNpZmRlZiBfX0NZR1dJTl9VU0VfQklHX1RZUEVTX18KLQkJYnVmLT5zdF9zaXplID0gKChfb2ZmNjRfdClmZGF0YS5uRmlsZVNpemVIaWdoIDw8IDMyKSArCi0JCQlmZGF0YS5uRmlsZVNpemVMb3c7Ci0jZWxzZQotCQlidWYtPnN0X3NpemUgPSAob2ZmX3QpZmRhdGEubkZpbGVTaXplTG93OwotI2VuZGlmCi0JCWJ1Zi0+c3RfYmxvY2tzID0gc2l6ZV90b19ibG9ja3MoYnVmLT5zdF9zaXplKTsKLQkJZmlsZXRpbWVfdG9fdGltZXNwZWMoJmZkYXRhLmZ0TGFzdEFjY2Vzc1RpbWUsICZidWYtPnN0X2F0aW0pOwotCQlmaWxldGltZV90b190aW1lc3BlYygmZmRhdGEuZnRMYXN0V3JpdGVUaW1lLCAmYnVmLT5zdF9tdGltKTsKLQkJZmlsZXRpbWVfdG9fdGltZXNwZWMoJmZkYXRhLmZ0Q3JlYXRpb25UaW1lLCAmYnVmLT5zdF9jdGltKTsKLQkJcmV0dXJuIDA7Ci0JfSBlbHNlIGlmIChlcnJubyA9PSBFTk9FTlQpIHsKLQkJLyoKLQkJICogSW4gdGhlIHdpbnN5bWxpbmtzIG1vZGUgKHdoaWNoIGlzIHRoZSBkZWZhdWx0KSwgQ3lnd2luCi0JCSAqIGVtdWxhdGVzIHN5bWJvbCBsaW5rcyB1c2luZyBXaW5kb3dzIHNob3J0Y3V0IGZpbGVzLiBUaGVzZQotCQkgKiBmaWxlcyBhcmUgZm9ybWVkIGJ5IGFkZGluZyAubG5rIGV4dGVuc2lvbi4gU28sIGlmIHdlIGhhdmUKLQkJICogbm90IGZvdW5kIHRoZSBzcGVjaWZpZWQgZmlsZSBuYW1lLCBpdCBjb3VsZCBiZSB0aGF0IGl0IGlzCi0JCSAqIGEgc3ltYm9sIGxpbmsuIExldCdzIEN5Z3dpbiB0byBkZWFsIHdpdGggdGhhdC4KLQkJICovCi0JCXJldHVybiBjeWdzdGF0KGZpbGVfbmFtZSwgYnVmKTsKLQl9Ci0JcmV0dXJuIC0xOwotfQotCi0vKiBXZSBwcm92aWRlIG91ciBvd24gbHN0YXQvc3RhdCBmdW5jdGlvbnMsIHNpbmNlIHRoZSBwcm92aWRlZCBDeWd3aW4gdmVyc2lvbnMKLSAqIG9mIHRoZXNlIGZ1bmN0aW9ucyBhcmUgdG9vIHNsb3cuIFRoZXNlIHN0YXQgZnVuY3Rpb25zIGFyZSB0YWlsb3JlZCBmb3IgR2l0J3MKLSAqIHVzYWdlLCBhbmQgdGhlcmVmb3JlIHRoZXkgYXJlIG5vdCBtZWFudCB0byBiZSBjb21wbGV0ZSBhbmQgY29ycmVjdCBlbXVsYXRpb24KLSAqIG9mIGxzdGF0L3N0YXQgZnVuY3Rpb25hbGl0eS4KLSAqLwotc3RhdGljIGludCBjeWd3aW5fbHN0YXQoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKmJ1ZikKLXsKLQlyZXR1cm4gZG9fc3RhdChwYXRoLCBidWYsIGxzdGF0KTsKLX0KLQotc3RhdGljIGludCBjeWd3aW5fc3RhdChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQotewotCXJldHVybiBkb19zdGF0KHBhdGgsIGJ1Ziwgc3RhdCk7Ci19Ci0KLQotLyoKLSAqIEF0IHN0YXJ0IHVwLCB3ZSBhcmUgdHJ5aW5nIHRvIGRldGVybWluZSB3aGV0aGVyIFdpbjMyIEFQSSBvciBjeWd3aW4gc3RhdAotICogZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkLiBUaGUgY2hvaWNlIGlzIGRldGVybWluZWQgYnkgY29yZS5pZ25vcmVjeWd3aW5mc3RyaWNrcy4KLSAqIFJlYWRpbmcgdGhpcyBvcHRpb24gaXMgbm90IGFsd2F5cyBwb3NzaWJsZSBpbW1lZGlhdGVseSBhcyBnaXRfZGlyIG1heQotICogbm90IGJlIHNldCB5ZXQuIFNvIHVudGlsIGl0IGlzIHNldCwgdXNlIGN5Z3dpbiBsc3RhdC9zdGF0IGZ1bmN0aW9ucy4KLSAqIEhvd2V2ZXIsIGlmIGNvcmUuZmlsZW1vZGUgaXMgc2V0LCB3ZSBtdXN0IHVzZSB0aGUgQ3lnd2luIHBvc2l4Ci0gKiBzdGF0L2xzdGF0IGFzIHRoZSBXaW5kb3dzIHN0YXQgZnVuY3Rpb25zIGRvIG5vdCBkZXRlcm1pbmUgcG9zaXggZmlsZW1vZGUuCi0gKgotICogTm90ZSB0aGF0IGdpdF9jeWd3aW5fY29uZmlnKCkgZG9lcyBOT1QgY2FsbCBnaXRfZGVmYXVsdF9jb25maWcoKSBhbmQgdGhpcwotICogaXMgZGVsaWJlcmF0ZS4gIE1hbnkgY29tbWFuZHMgcmVhZCBmcm9tIGNvbmZpZyB0byBlc3RhYmxpc2ggaW5pdGlhbAotICogdmFsdWVzIGluIHZhcmlhYmxlcyBhbmQgbGF0ZXIgdHdlYWsgdGhlbSBmcm9tIGVsc2V3aGVyZSAoZS5nLiBjb21tYW5kIGxpbmUpLgotICogaW5pdF9zdGF0KCkgaXMgY2FsbGVkIGxhemlseSBvbiBkZW1hbmQsIHR5cGljYWxseSBtdWNoIGxhdGUgaW4gdGhlIHByb2dyYW0sCi0gKiBhbmQgY2FsbGluZyBnaXRfZGVmYXVsdF9jb25maWcoKSBmcm9tIGhlcmUgd291bGQgYnJlYWsgc3VjaCB2YXJpYWJsZXMuCi0gKi8KLXN0YXRpYyBpbnQgbmF0aXZlX3N0YXQgPSAxOwotc3RhdGljIGludCBjb3JlX2ZpbGVtb2RlID0gMTsgLyogbWF0Y2hlcyB0cnVzdF9leGVjdXRhYmxlX2JpdCBkZWZhdWx0ICovCi0KLXN0YXRpYyBpbnQgZ2l0X2N5Z3dpbl9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCi17Ci0JaWYgKCFzdHJjbXAodmFyLCAiY29yZS5pZ25vcmVjeWd3aW5mc3RyaWNrcyIpKQotCQluYXRpdmVfc3RhdCA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKLQllbHNlIGlmICghc3RyY21wKHZhciwgImNvcmUuZmlsZW1vZGUiKSkKLQkJY29yZV9maWxlbW9kZSA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKTsKLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGludCBpbml0X3N0YXQodm9pZCkKLXsKLQlpZiAoaGF2ZV9naXRfZGlyKCkgJiYgZ2l0X2NvbmZpZyhnaXRfY3lnd2luX2NvbmZpZyxOVUxMKSkgewotCQlpZiAoIWNvcmVfZmlsZW1vZGUgJiYgbmF0aXZlX3N0YXQpIHsKLQkJCWN5Z3dpbl9zdGF0X2ZuID0gY3lnd2luX3N0YXQ7Ci0JCQljeWd3aW5fbHN0YXRfZm4gPSBjeWd3aW5fbHN0YXQ7Ci0JCX0gZWxzZSB7Ci0JCQljeWd3aW5fc3RhdF9mbiA9IHN0YXQ7Ci0JCQljeWd3aW5fbHN0YXRfZm4gPSBsc3RhdDsKLQkJfQotCQlyZXR1cm4gMDsKLQl9Ci0JcmV0dXJuIDE7Ci19Ci0KLXN0YXRpYyBpbnQgY3lnd2luX3N0YXRfc3R1Yihjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBzdGF0ICpidWYpCi17Ci0JcmV0dXJuIChpbml0X3N0YXQoKSA/IHN0YXQgOiAqY3lnd2luX3N0YXRfZm4pKGZpbGVfbmFtZSwgYnVmKTsKLX0KLQotc3RhdGljIGludCBjeWd3aW5fbHN0YXRfc3R1Yihjb25zdCBjaGFyICpmaWxlX25hbWUsIHN0cnVjdCBzdGF0ICpidWYpCi17Ci0JcmV0dXJuIChpbml0X3N0YXQoKSA/IGxzdGF0IDogKmN5Z3dpbl9sc3RhdF9mbikoZmlsZV9uYW1lLCBidWYpOwotfQotCi1zdGF0X2ZuX3QgY3lnd2luX3N0YXRfZm4gPSBjeWd3aW5fc3RhdF9zdHViOwotc3RhdF9mbl90IGN5Z3dpbl9sc3RhdF9mbiA9IGN5Z3dpbl9sc3RhdF9zdHViOwotCmRpZmYgLS1naXQgYS9jb21wYXQvY3lnd2luLmggYi9jb21wYXQvY3lnd2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwNDk2NWEuLjAwMDAwMDAKLS0tIGEvY29tcGF0L2N5Z3dpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0KLXR5cGVkZWYgaW50ICgqc3RhdF9mbl90KShjb25zdCBjaGFyKiwgc3RydWN0IHN0YXQqKTsKLWV4dGVybiBzdGF0X2ZuX3QgY3lnd2luX3N0YXRfZm47Ci1leHRlcm4gc3RhdF9mbl90IGN5Z3dpbl9sc3RhdF9mbjsKLWludCBjeWd3aW5fZ2V0X3N0X21vZGVfYml0cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgKm1vZGUpOwotCi0jZGVmaW5lIGdldF9zdF9tb2RlX2JpdHMocCxtKSBjeWd3aW5fZ2V0X3N0X21vZGVfYml0cygocCksKG0pKQotI2lmbmRlZiBDWUdXSU5fQwotLyogY3lnd2luLmMgbmVlZHMgdGhlIG9yaWdpbmFsIGxzdGF0KCkgKi8KLSNkZWZpbmUgc3RhdChwYXRoLCBidWYpICgqY3lnd2luX3N0YXRfZm4pKHBhdGgsIGJ1ZikKLSNkZWZpbmUgbHN0YXQocGF0aCwgYnVmKSAoKmN5Z3dpbl9sc3RhdF9mbikocGF0aCwgYnVmKQotI2VuZGlmCmRpZmYgLS1naXQgYS9jb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMgYi9jb21wYXQvZm5tYXRjaC9mbm1hdGNoLmMKaW5kZXggNWVmMDY4NS4uMzc4YzQ2NyAxMDA2NDQKLS0tIGEvY29tcGF0L2ZubWF0Y2gvZm5tYXRjaC5jCisrKyBiL2NvbXBhdC9mbm1hdGNoL2ZubWF0Y2guYwpAQCAtMjUsNiArMjUsNyBAQAogIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQogI2VuZGlmCiAKKyNpbmNsdWRlIDxzdGRkZWYuaD4KICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGZubWF0Y2guaD4KICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMTIxLDcgKzEyMiw3IEBACiAgICB3aG9zZSBuYW1lcyBhcmUgaW5jb25zaXN0ZW50LiAgKi8KIAogIyBpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBnZXRlbnYKLWV4dGVybiBjaGFyICpnZXRlbnYgKCk7CitleHRlcm4gY2hhciAqZ2V0ZW52IChjb25zdCBjaGFyICpuYW1lKTsKICMgZW5kaWYKIAogIyBpZm5kZWYgZXJybm8KZGlmZiAtLWdpdCBhL2NvbXBhdC9taW5ndy5jIGIvY29tcGF0L21pbmd3LmMKaW5kZXggZGFlMzBhMC4uYmI5MmM0MyAxMDA2NDQKLS0tIGEvY29tcGF0L21pbmd3LmMKKysrIGIvY29tcGF0L21pbmd3LmMKQEAgLTg0MSw4ICs4NDEsOCBAQAogCXN0cnVjdCBwaW5mb190ICpuZXh0OwogCXBpZF90IHBpZDsKIAlIQU5ETEUgcHJvYzsKLX0gcGluZm9fdDsKLXN0cnVjdCBwaW5mb190ICpwaW5mbyA9IE5VTEw7Cit9Oworc3RhdGljIHN0cnVjdCBwaW5mb190ICpwaW5mbyA9IE5VTEw7CiBDUklUSUNBTF9TRUNUSU9OIHBpbmZvX2NzOwogCiBzdGF0aWMgcGlkX3QgbWluZ3dfc3Bhd252ZV9mZChjb25zdCBjaGFyICpjbWQsIGNvbnN0IGNoYXIgKiphcmd2LCBjaGFyICoqZW52LApAQCAtMTI1Myw3ICsxMjUzLDcgQEAKIAllbHNlCiAJCXNpbi0+c2luX2FkZHIuc19hZGRyID0gSU5BRERSX0xPT1BCQUNLOwogCWFpLT5haV9hZGRyID0gKHN0cnVjdCBzb2NrYWRkciAqKXNpbjsKLQlhaS0+YWlfbmV4dCA9IDA7CisJYWktPmFpX25leHQgPSBOVUxMOwogCXJldHVybiAwOwogfQogCmRpZmYgLS1naXQgYS9jb21wYXQvbWluZ3cuaCBiL2NvbXBhdC9taW5ndy5oCmluZGV4IDY4NWNkMmMuLmJkMGE4OGIgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9taW5ndy5oCisrKyBiL2NvbXBhdC9taW5ndy5oCkBAIC0zMzQsMTMgKzMzNCwyMCBAQAogdm9pZCBmcmVlX2Vudmlyb24oY2hhciAqKmVudik7CiAKIC8qCisgKiBBIGNyaXRpY2FsIHNlY3Rpb24gdXNlZCBpbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHNwYXduCisgKiBmdW5jdGlvbnMgKG1pbmd3X3NwYXdudltwXWUoKSkgYW5kIHdhaXRwaWQoKS4gSW50aWFsaXNlZCBpbgorICogdGhlIHJlcGxhY2VtZW50IG1haW4oKSBtYWNybyBiZWxvdy4KKyAqLworZXh0ZXJuIENSSVRJQ0FMX1NFQ1RJT04gcGluZm9fY3M7CisKKy8qCiAgKiBBIHJlcGxhY2VtZW50IG9mIG1haW4oKSB0aGF0IGVuc3VyZXMgdGhhdCBhcmd2WzBdIGhhcyBhIHBhdGgKICAqIGFuZCB0aGF0IGRlZmF1bHQgZm1vZGUgYW5kIHN0ZChpbnxvdXR8ZXJyKSBhcmUgaW4gYmluYXJ5IG1vZGUKICAqLwogCiAjZGVmaW5lIG1haW4oYyx2KSBkdW1teV9kZWNsX21pbmd3X21haW4oKTsgXAotc3RhdGljIGludCBtaW5nd19tYWluKCk7IFwKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikgXAorc3RhdGljIGludCBtaW5nd19tYWluKGMsdik7IFwKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikgXAogeyBcCiAJZXh0ZXJuIENSSVRJQ0FMX1NFQ1RJT04gcGluZm9fY3M7IFwKIAlfZm1vZGUgPSBfT19CSU5BUlk7IFwKZGlmZiAtLWdpdCBhL2NvbXBhdC9uZWRtYWxsb2MvUmVhZG1lLnR4dCBiL2NvbXBhdC9uZWRtYWxsb2MvUmVhZG1lLnR4dAppbmRleCBlNDZkOGYxLi4wN2NiZjUwIDEwMDY0NAotLS0gYS9jb21wYXQvbmVkbWFsbG9jL1JlYWRtZS50eHQKKysrIGIvY29tcGF0L25lZG1hbGxvYy9SZWFkbWUudHh0CkBAIC05Nyw3ICs5Nyw3IEBACiAKIHYxLjA0YWxwaGFfc3ZuOTE1IDd0aCBPY3RvYmVyIDIwMDY6CiAgKiBGaXhlZCBmYWlsdXJlIHRvIHVubG9jayB0aHJlYWQgY2FjaGUgbGlzdCBpZiBhbGxvY2F0aW5nIGEgbmV3IGxpc3QgZmFpbGVkLgotVGhhbmtzIHRvIERtaXRyeSBDaGljaGtvdiBmb3IgcmVwb3J0aW5nIHRoaXMuIEZ1dGhlciB0aGFua3MgdG8gQWxla3NleSBTYW5pbi4KK1RoYW5rcyB0byBEbWl0cnkgQ2hpY2hrb3YgZm9yIHJlcG9ydGluZyB0aGlzLiBGdXJ0aGVyIHRoYW5rcyB0byBBbGVrc2V5IFNhbmluLgogICogRml4ZWQgcmVhbGxvYygwLCA8c2l6ZT4pIHNlZ2ZhdWx0aW5nLiBUaGFua3MgdG8gRG1pdHJ5IENoaWNoa292IGZvcgogcmVwb3J0aW5nIHRoaXMuCiAgKiBNYWRlIGNvbmZpZyBkZWZpbmVzICNpZm5kZWYgc28gdGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgYnVpbGQgc3lzdGVtLgpkaWZmIC0tZ2l0IGEvY29tcGF0L25lZG1hbGxvYy9tYWxsb2MuYy5oIGIvY29tcGF0L25lZG1hbGxvYy9tYWxsb2MuYy5oCmluZGV4IDE0MDFhNjcuLmVkNGYxZmEgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9uZWRtYWxsb2MvbWFsbG9jLmMuaAorKysgYi9jb21wYXQvbmVkbWFsbG9jL21hbGxvYy5jLmgKQEAgLTQ4NCw2ICs0ODQsMTAgQEAKICNkZWZpbmUgRExNQUxMT0NfVkVSU0lPTiAyMDgwNAogI2VuZGlmIC8qIERMTUFMTE9DX1ZFUlNJT04gKi8KIAorI2lmIGRlZmluZWQobGludXgpCisjZGVmaW5lIF9HTlVfU09VUkNFIDEKKyNlbmRpZgorCiAjaWZuZGVmIFdJTjMyCiAjaWZkZWYgX1dJTjMyCiAjZGVmaW5lIFdJTjMyIDEKQEAgLTE4MDIsNyArMTgwNiw3IEBACiAKIHN0YXRpYyBNTE9DS19UIG1hbGxvY19nbG9iYWxfbXV0ZXggPSB7IDAsIDAsIDB9OwogCi1zdGF0aWMgRk9SQ0VJTkxJTkUgbG9uZyB3aW4zMl9nZXRjdXJyZW50dGhyZWFkaWQoKSB7CitzdGF0aWMgRk9SQ0VJTkxJTkUgbG9uZyB3aW4zMl9nZXRjdXJyZW50dGhyZWFkaWQodm9pZCkgewogI2lmZGVmIF9NU0NfVkVSCiAjaWYgZGVmaW5lZChfTV9JWDg2KQogICBsb25nICp0aHJlYWRzdHJ1Y3Q9KGxvbmcgKilfX3JlYWRmc2R3b3JkKDB4MTgpOwpAQCAtMzU5OCw4ICszNjAyLDggQEAKICAgICAgYW5kIGNob29zZSBpdHMgYmsgbm9kZSBhcyBpdHMgcmVwbGFjZW1lbnQuCiAgIDIuIElmIHggd2FzIHRoZSBsYXN0IG5vZGUgb2YgaXRzIHNpemUsIGJ1dCBub3QgYSBsZWFmIG5vZGUsIGl0IG11c3QKICAgICAgYmUgcmVwbGFjZWQgd2l0aCBhIGxlYWYgbm9kZSAobm90IG1lcmVseSBvbmUgd2l0aCBhbiBvcGVuIGxlZnQgb3IKLSAgICAgcmlnaHQpLCB0byBtYWtlIHN1cmUgdGhhdCBsZWZ0cyBhbmQgcmlnaHRzIG9mIGRlc2NlbmRlbnRzCi0gICAgIGNvcnJlc3BvbmQgcHJvcGVybHkgdG8gYml0IG1hc2tzLiAgV2UgdXNlIHRoZSByaWdodG1vc3QgZGVzY2VuZGVudAorICAgICByaWdodCksIHRvIG1ha2Ugc3VyZSB0aGF0IGxlZnRzIGFuZCByaWdodHMgb2YgZGVzY2VuZGFudHMKKyAgICAgY29ycmVzcG9uZCBwcm9wZXJseSB0byBiaXQgbWFza3MuICBXZSB1c2UgdGhlIHJpZ2h0bW9zdCBkZXNjZW5kYW50CiAgICAgIG9mIHguICBXZSBjb3VsZCB1c2UgYW55IG90aGVyIGxlYWYsIGJ1dCB0aGlzIGlzIGVhc3kgdG8gbG9jYXRlIGFuZAogICAgICB0ZW5kcyB0byBjb3VudGVyYWN0IHJlbW92YWwgb2YgbGVmdG1vc3RzIGVsc2V3aGVyZSwgYW5kIHNvIGtlZXBzCiAgICAgIHBhdGhzIHNob3J0ZXIgdGhhbiBtaW5pbWFsbHkgZ3VhcmFudGVlZC4gIFRoaXMgZG9lc24ndCBsb29wIG11Y2gKZGlmZiAtLWdpdCBhL2NvbXBhdC9uZWRtYWxsb2MvbmVkbWFsbG9jLmMgYi9jb21wYXQvbmVkbWFsbG9jL25lZG1hbGxvYy5jCmluZGV4IDkxYzRlN2YuLjYwOWViYmEgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9uZWRtYWxsb2MvbmVkbWFsbG9jLmMKKysrIGIvY29tcGF0L25lZG1hbGxvYy9uZWRtYWxsb2MuYwpAQCAtMTU5LDggKzE1OSw4IEBACiAjZW5kaWYKIGludCAgICBuZWRtYWxsb3B0KGludCBwYXJubywgaW50IHZhbHVlKSBUSFJPV1NQRUMJeyByZXR1cm4gbmVkcG1hbGxvcHQoMCwgcGFybm8sIHZhbHVlKTsgfQogaW50ICAgIG5lZG1hbGxvY190cmltKHNpemVfdCBwYWQpIFRIUk9XU1BFQwkJCXsgcmV0dXJuIG5lZHBtYWxsb2NfdHJpbSgwLCBwYWQpOyB9Ci12b2lkICAgbmVkbWFsbG9jX3N0YXRzKCkgVEhST1dTUEVDCQkJCQl7IG5lZHBtYWxsb2Nfc3RhdHMoMCk7IH0KLXNpemVfdCBuZWRtYWxsb2NfZm9vdHByaW50KCkgVEhST1dTUEVDCQkJCXsgcmV0dXJuIG5lZHBtYWxsb2NfZm9vdHByaW50KDApOyB9Cit2b2lkICAgbmVkbWFsbG9jX3N0YXRzKHZvaWQpIFRIUk9XU1BFQwkJCQkJeyBuZWRwbWFsbG9jX3N0YXRzKDApOyB9CitzaXplX3QgbmVkbWFsbG9jX2Zvb3RwcmludCh2b2lkKSBUSFJPV1NQRUMJCQkJeyByZXR1cm4gbmVkcG1hbGxvY19mb290cHJpbnQoMCk7IH0KIHZvaWQgKipuZWRpbmRlcGVuZGVudF9jYWxsb2Moc2l6ZV90IGVsZW1zbm8sIHNpemVfdCBlbGVtc2l6ZSwgdm9pZCAqKmNodW5rcykgVEhST1dTUEVDCXsgcmV0dXJuIG5lZHBpbmRlcGVuZGVudF9jYWxsb2MoMCwgZWxlbXNubywgZWxlbXNpemUsIGNodW5rcyk7IH0KIHZvaWQgKipuZWRpbmRlcGVuZGVudF9jb21hbGxvYyhzaXplX3QgZWxlbXMsIHNpemVfdCAqc2l6ZXMsIHZvaWQgKipjaHVua3MpIFRIUk9XU1BFQwl7IHJldHVybiBuZWRwaW5kZXBlbmRlbnRfY29tYWxsb2MoMCwgZWxlbXMsIHNpemVzLCBjaHVua3MpOyB9CiAKZGlmZiAtLWdpdCBhL2NvbXBhdC9wb2xsL3BvbGwuYyBiL2NvbXBhdC9wb2xsL3BvbGwuYwppbmRleCA3ZDIyNmVjLi40NDEwMzEwIDEwMDY0NAotLS0gYS9jb21wYXQvcG9sbC9wb2xsLmMKKysrIGIvY29tcGF0L3BvbGwvcG9sbC5jCkBAIC01NzYsNyArNTc2LDcgQEAKIAl7CiAJICAvKiBJdCdzIGEgc29ja2V0LiAgKi8KIAkgIFdTQUVudW1OZXR3b3JrRXZlbnRzICgoU09DS0VUKSBoLCBOVUxMLCAmZXYpOwotCSAgV1NBRXZlbnRTZWxlY3QgKChTT0NLRVQpIGgsIDAsIDApOworCSAgV1NBRXZlbnRTZWxlY3QgKChTT0NLRVQpIGgsIE5VTEwsIDApOwogCiAJICAvKiBJZiB3ZSdyZSBsdWNreSwgV1NBRW51bU5ldHdvcmtFdmVudHMgYWxyZWFkeSBwcm92aWRlZCBhIHdheQogCSAgICAgdG8gZGlzdGluZ3Vpc2ggRkRfUkVBRCBhbmQgRkRfQUNDRVBUOyB0aGlzIHNhdmVzIGEgcmVjdiBsYXRlci4gICovCmRpZmYgLS1naXQgYS9jb21wYXQvcmVnZXgvcmVnY29tcC5jIGIvY29tcGF0L3JlZ2V4L3JlZ2NvbXAuYwppbmRleCBkMDAyNWJkLi5iMmM1ZDQ2IDEwMDY0NAotLS0gYS9jb21wYXQvcmVnZXgvcmVnY29tcC5jCisrKyBiL2NvbXBhdC9yZWdleC9yZWdjb21wLmMKQEAgLTI2MTcsNyArMjYxNyw3IEBACiAgICAgIEJ1aWxkIHRoZSByYW5nZSBleHByZXNzaW9uIHdoaWNoIHN0YXJ0cyBmcm9tIFNUQVJUX0VMRU0sIGFuZCBlbmRzCiAgICAgIGF0IEVORF9FTEVNLiAgVGhlIHJlc3VsdCBhcmUgd3JpdHRlbiB0byBNQkNTRVQgYW5kIFNCQ1NFVC4KICAgICAgUkFOR0VfQUxMT0MgaXMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIG1iY3NldC0+cmFuZ2Vfc3RhcnRzLCBhbmQKLSAgICAgbWJjc2V0LT5yYW5nZV9lbmRzLCBpcyBhIHBvaW50ZXIgYXJndW1lbnQgc2luc2Ugd2UgbWF5CisgICAgIG1iY3NldC0+cmFuZ2VfZW5kcywgaXMgYSBwb2ludGVyIGFyZ3VtZW50IHNpbmNlIHdlIG1heQogICAgICB1cGRhdGUgaXQuICAqLwogCiBzdGF0aWMgcmVnX2VycmNvZGVfdApAQCAtMjc4OCw3ICsyNzg4LDcgQEAKICAgY29uc3QgaW50MzJfdCAqc3ltYl90YWJsZTsKICAgY29uc3QgdW5zaWduZWQgY2hhciAqZXh0cmE7CiAKLSAgLyogTG9jYWwgZnVuY3Rpb24gZm9yIHBhcnNlX2JyYWNrZXRfZXhwIHVzZWQgaW4gX0xJQkMgZW52aXJvbmVtZW50LgorICAvKiBMb2NhbCBmdW5jdGlvbiBmb3IgcGFyc2VfYnJhY2tldF9leHAgdXNlZCBpbiBfTElCQyBlbnZpcm9ubWVudC4KICAgICAgU2VlayB0aGUgY29sbGF0aW5nIHN5bWJvbCBlbnRyeSBjb3JyZXNwb25kaW5ncyB0byBOQU1FLgogICAgICBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBzeW1ib2wgaW4gdGhlIFNZTUJfVEFCTEUuICAqLwogCkBAIC0yODkyLDExICsyODkyLDExIEBACiAgICAgICByZXR1cm4gVUlOVF9NQVg7CiAgICAgfQogCi0gIC8qIExvY2FsIGZ1bmN0aW9uIGZvciBwYXJzZV9icmFja2V0X2V4cCB1c2VkIGluIF9MSUJDIGVudmlyb25lbWVudC4KKyAgLyogTG9jYWwgZnVuY3Rpb24gZm9yIHBhcnNlX2JyYWNrZXRfZXhwIHVzZWQgaW4gX0xJQkMgZW52aXJvbm1lbnQuCiAgICAgIEJ1aWxkIHRoZSByYW5nZSBleHByZXNzaW9uIHdoaWNoIHN0YXJ0cyBmcm9tIFNUQVJUX0VMRU0sIGFuZCBlbmRzCiAgICAgIGF0IEVORF9FTEVNLiAgVGhlIHJlc3VsdCBhcmUgd3JpdHRlbiB0byBNQkNTRVQgYW5kIFNCQ1NFVC4KICAgICAgUkFOR0VfQUxMT0MgaXMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIG1iY3NldC0+cmFuZ2Vfc3RhcnRzLCBhbmQKLSAgICAgbWJjc2V0LT5yYW5nZV9lbmRzLCBpcyBhIHBvaW50ZXIgYXJndW1lbnQgc2luc2Ugd2UgbWF5CisgICAgIG1iY3NldC0+cmFuZ2VfZW5kcywgaXMgYSBwb2ludGVyIGFyZ3VtZW50IHNpbmNlIHdlIG1heQogICAgICB1cGRhdGUgaXQuICAqLwogCiAgIGF1dG8gaW5saW5lIHJlZ19lcnJjb2RlX3QKQEAgLTI5NzYsMTEgKzI5NzYsMTEgQEAKICAgICAgIHJldHVybiBSRUdfTk9FUlJPUjsKICAgICB9CiAKLSAgLyogTG9jYWwgZnVuY3Rpb24gZm9yIHBhcnNlX2JyYWNrZXRfZXhwIHVzZWQgaW4gX0xJQkMgZW52aXJvbmVtZW50LgorICAvKiBMb2NhbCBmdW5jdGlvbiBmb3IgcGFyc2VfYnJhY2tldF9leHAgdXNlZCBpbiBfTElCQyBlbnZpcm9ubWVudC4KICAgICAgQnVpbGQgdGhlIGNvbGxhdGluZyBlbGVtZW50IHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IE5BTUUuCiAgICAgIFRoZSByZXN1bHQgYXJlIHdyaXR0ZW4gdG8gTUJDU0VUIGFuZCBTQkNTRVQuCiAgICAgIENPTExfU1lNX0FMTE9DIGlzIHRoZSBhbGxvY2F0ZWQgc2l6ZSBvZiBtYmNzZXQtPmNvbGxfc3ltLCBpcyBhCi0gICAgIHBvaW50ZXIgYXJndW1lbnQgc2luc2Ugd2UgbWF5IHVwZGF0ZSBpdC4gICovCisgICAgIHBvaW50ZXIgYXJndW1lbnQgc2luY2Ugd2UgbWF5IHVwZGF0ZSBpdC4gICovCiAKICAgYXV0byBpbmxpbmUgcmVnX2VycmNvZGVfdAogICBfX2F0dHJpYnV0ZSAoKGFsd2F5c19pbmxpbmUpKQpAQCAtMzQxOSw3ICszNDE5LDcgQEAKICAgICAgQnVpbGQgdGhlIGVxdWl2YWxlbmNlIGNsYXNzIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IE5BTUUuCiAgICAgIFRoZSByZXN1bHQgYXJlIHdyaXR0ZW4gdG8gTUJDU0VUIGFuZCBTQkNTRVQuCiAgICAgIEVRVUlWX0NMQVNTX0FMTE9DIGlzIHRoZSBhbGxvY2F0ZWQgc2l6ZSBvZiBtYmNzZXQtPmVxdWl2X2NsYXNzZXMsCi0gICAgIGlzIGEgcG9pbnRlciBhcmd1bWVudCBzaW5zZSB3ZSBtYXkgdXBkYXRlIGl0LiAgKi8KKyAgICAgaXMgYSBwb2ludGVyIGFyZ3VtZW50IHNpbmNlIHdlIG1heSB1cGRhdGUgaXQuICAqLwogCiBzdGF0aWMgcmVnX2VycmNvZGVfdAogI2lmZGVmIFJFX0VOQUJMRV9JMThOCkBAIC0zNTE1LDcgKzM1MTUsNyBAQAogICAgICBCdWlsZCB0aGUgY2hhcmFjdGVyIGNsYXNzIHdoaWNoIGlzIHJlcHJlc2VudGVkIGJ5IE5BTUUuCiAgICAgIFRoZSByZXN1bHQgYXJlIHdyaXR0ZW4gdG8gTUJDU0VUIGFuZCBTQkNTRVQuCiAgICAgIENIQVJfQ0xBU1NfQUxMT0MgaXMgdGhlIGFsbG9jYXRlZCBzaXplIG9mIG1iY3NldC0+Y2hhcl9jbGFzc2VzLAotICAgICBpcyBhIHBvaW50ZXIgYXJndW1lbnQgc2luc2Ugd2UgbWF5IHVwZGF0ZSBpdC4gICovCisgICAgIGlzIGEgcG9pbnRlciBhcmd1bWVudCBzaW5jZSB3ZSBtYXkgdXBkYXRlIGl0LiAgKi8KIAogc3RhdGljIHJlZ19lcnJjb2RlX3QKICNpZmRlZiBSRV9FTkFCTEVfSTE4TgpkaWZmIC0tZ2l0IGEvY29tcGF0L3JlZ2V4L3JlZ2V4ZWMuYyBiL2NvbXBhdC9yZWdleC9yZWdleGVjLmMKaW5kZXggMDE5NDk2NS4uZWI1ZTFkNCAxMDA2NDQKLS0tIGEvY29tcGF0L3JlZ2V4L3JlZ2V4ZWMuYworKysgYi9jb21wYXQvcmVnZXgvcmVnZXhlYy5jCkBAIC00NTUsNyArNDU1LDcgQEAKIAogICBydmFsID0gMDsKIAotICAvKiBJIGhvcGUgd2UgbmVlZG4ndCBmaWxsIHRoZXIgcmVncyB3aXRoIC0xJ3Mgd2hlbiBubyBtYXRjaCB3YXMgZm91bmQuICAqLworICAvKiBJIGhvcGUgd2UgbmVlZG4ndCBmaWxsIHRoZWlyIHJlZ3Mgd2l0aCAtMSdzIHdoZW4gbm8gbWF0Y2ggd2FzIGZvdW5kLiAgKi8KICAgaWYgKHJlc3VsdCAhPSBSRUdfTk9FUlJPUikKICAgICBydmFsID0gLTE7CiAgIGVsc2UgaWYgKHJlZ3MgIT0gTlVMTCkKQEAgLTEwNzEsNyArMTA3MSw3IEBACiAgICBGTF9MT05HRVNUX01BVENIIG1lYW5zIHdlIHdhbnQgdGhlIFBPU0lYIGxvbmdlc3QgbWF0Y2hpbmcuCiAgICBJZiBQX01BVENIX0ZJUlNUIGlzIG5vdCBOVUxMLCBhbmQgdGhlIG1hdGNoIGZhaWxzLCBpdCBpcyBzZXQgdG8gdGhlCiAgICBuZXh0IHBsYWNlIHdoZXJlIHdlIG1heSB3YW50IHRvIHRyeSBtYXRjaGluZy4KLSAgIE5vdGUgdGhhdCB0aGUgbWF0Y2hlciBhc3N1bWUgdGhhdCB0aGUgbWFjaGluZyBzdGFydHMgZnJvbSB0aGUgY3VycmVudAorICAgTm90ZSB0aGF0IHRoZSBtYXRjaGVyIGFzc3VtZSB0aGF0IHRoZSBtYXRjaGluZyBzdGFydHMgZnJvbSB0aGUgY3VycmVudAogICAgaW5kZXggb2YgdGhlIGJ1ZmZlci4gICovCiAKIHN0YXRpYyBpbnQKQEAgLTIyMzksNyArMjIzOSw3IEBACiAJCQkgICAgZGZhLT5uZXh0c1tub2RlX2lkeF0pKQogICAgIC8qIFRoZSBub2RlIGNhbid0IGFjY2VwdCB0aGUgYG11bHRpIGJ5dGUnLCBvciB0aGUKICAgICAgICBkZXN0aW5hdGlvbiB3YXMgYWxyZWFkeSB0aHJvd24gYXdheSwgdGhlbiB0aGUgbm9kZQotICAgICAgIGNvdWxkJ3QgYWNjZXB0IHRoZSBjdXJyZW50IGlucHV0IGBtdWx0aSBieXRlJy4gICAqLworICAgICAgIGNvdWxkbid0IGFjY2VwdCB0aGUgY3VycmVudCBpbnB1dCBgbXVsdGkgYnl0ZScuICAgKi8KICAgICBuYWNjZXB0ZWQgPSAwOwogICAvKiBPdGhlcndpc2UsIGl0IGlzIHN1cmUgdGhhdCB0aGUgbm9kZSBjb3VsZCBhY2NlcHQKICAgICAgYG5hY2NlcHRlZCcgYnl0ZXMgaW5wdXQuICAqLwpAQCAtMjMxMyw3ICsyMzEzLDcgQEAKIH0KIAogLyogVXBkYXRlIHRoZSBzdGF0ZV9sb2cgaWYgd2UgbmVlZCAqLwotcmVfZGZhc3RhdGVfdCAqCitzdGF0aWMgcmVfZGZhc3RhdGVfdCAqCiBpbnRlcm5hbF9mdW5jdGlvbgogbWVyZ2Vfc3RhdGVfd2l0aF9sb2cgKHJlZ19lcnJjb2RlX3QgKmVyciwgcmVfbWF0Y2hfY29udGV4dF90ICptY3R4LAogCQkgICAgICByZV9kZmFzdGF0ZV90ICpuZXh0X3N0YXRlKQpAQCAtMjMyNiw3ICsyMzI2LDcgQEAKICAgICAgIG1jdHgtPnN0YXRlX2xvZ1tjdXJfaWR4XSA9IG5leHRfc3RhdGU7CiAgICAgICBtY3R4LT5zdGF0ZV9sb2dfdG9wID0gY3VyX2lkeDsKICAgICB9Ci0gIGVsc2UgaWYgKG1jdHgtPnN0YXRlX2xvZ1tjdXJfaWR4XSA9PSAwKQorICBlbHNlIGlmIChtY3R4LT5zdGF0ZV9sb2dbY3VyX2lkeF0gPT0gTlVMTCkKICAgICB7CiAgICAgICBtY3R4LT5zdGF0ZV9sb2dbY3VyX2lkeF0gPSBuZXh0X3N0YXRlOwogICAgIH0KQEAgLTIzOTIsNyArMjM5Miw3IEBACiAvKiBTa2lwIGJ5dGVzIGluIHRoZSBpbnB1dCB0aGF0IGNvcnJlc3BvbmQgdG8gcGFydCBvZiBhCiAgICBtdWx0aS1ieXRlIG1hdGNoLCB0aGVuIGxvb2sgaW4gdGhlIGxvZyBmb3IgYSBzdGF0ZQogICAgZnJvbSB3aGljaCB0byByZXN0YXJ0IG1hdGNoaW5nLiAgKi8KLXJlX2RmYXN0YXRlX3QgKgorc3RhdGljIHJlX2RmYXN0YXRlX3QgKgogaW50ZXJuYWxfZnVuY3Rpb24KIGZpbmRfcmVjb3Zlcl9zdGF0ZSAocmVnX2VycmNvZGVfdCAqZXJyLCByZV9tYXRjaF9jb250ZXh0X3QgKm1jdHgpCiB7CmRpZmYgLS1naXQgYS9jb21wYXQvdGVybWluYWwuYyBiL2NvbXBhdC90ZXJtaW5hbC5jCmluZGV4IDliNWUzZDEuLjMxMzg5N2QgMTAwNjQ0Ci0tLSBhL2NvbXBhdC90ZXJtaW5hbC5jCisrKyBiL2NvbXBhdC90ZXJtaW5hbC5jCkBAIC0zLDcgKzMsNyBAQAogI2luY2x1ZGUgInNpZ2NoYWluLmgiCiAjaW5jbHVkZSAic3RyYnVmLmgiCiAKLSNpZiBkZWZpbmVkKEhBVkVfREVWX1RUWSkgfHwgZGVmaW5lZChXSU4zMikKKyNpZiBkZWZpbmVkKEhBVkVfREVWX1RUWSkgfHwgZGVmaW5lZChHSVRfV0lORE9XU19OQVRJVkUpCiAKIHN0YXRpYyB2b2lkIHJlc3RvcmVfdGVybSh2b2lkKTsKIApAQCAtNTMsNyArNTMsNyBAQAogCXJldHVybiAtMTsKIH0KIAotI2VsaWYgZGVmaW5lZChXSU4zMikKKyNlbGlmIGRlZmluZWQoR0lUX1dJTkRPV1NfTkFUSVZFKQogCiAjZGVmaW5lIElOUFVUX1BBVEggIkNPTklOJCIKICNkZWZpbmUgT1VUUFVUX1BBVEggIkNPTk9VVCQiCmRpZmYgLS1naXQgYS9jb21wYXQvdW5zZXRlbnYuYyBiL2NvbXBhdC91bnNldGVudi5jCmluZGV4IGViMjlmNWUuLmJmNWZkNzAgMTAwNjQ0Ci0tLSBhL2NvbXBhdC91bnNldGVudi5jCisrKyBiL2NvbXBhdC91bnNldGVudi5jCkBAIC0yLDcgKzIsOSBAQAogCiB2b2lkIGdpdHVuc2V0ZW52IChjb25zdCBjaGFyICpuYW1lKQogeworI2lmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogICAgICBleHRlcm4gY2hhciAqKmVudmlyb247CisjZW5kaWYKICAgICAgaW50IHNyYywgZHN0OwogICAgICBzaXplX3Qgbm1sbjsKIApkaWZmIC0tZ2l0IGEvY29tcGF0L3dpbjMyLmggYi9jb21wYXQvd2luMzIuaAppbmRleCA4Y2U5MTA0Li5hOTdlODgwIDEwMDY0NAotLS0gYS9jb21wYXQvd2luMzIuaAorKysgYi9jb21wYXQvd2luMzIuaApAQCAtMiw3ICsyLDcgQEAKICNkZWZpbmUgV0lOMzJfSAogCiAvKiBjb21tb24gV2luMzIgZnVuY3Rpb25zIGZvciBNaW5HVyBhbmQgQ3lnd2luICovCi0jaWZuZGVmIFdJTjMyICAgICAgICAgLyogTm90IGRlZmluZWQgYnkgQ3lnd2luICovCisjaWZuZGVmIEdJVF9XSU5ET1dTX05BVElWRQkvKiBOb3QgZGVmaW5lZCBmb3IgQ3lnd2luICovCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2NvbXBhdC93aW4zMi9wdGhyZWFkLmMgYi9jb21wYXQvd2luMzIvcHRocmVhZC5jCmluZGV4IDAxMGU4NzUuLmUxOGY1YzYgMTAwNjQ0Ci0tLSBhL2NvbXBhdC93aW4zMi9wdGhyZWFkLmMKKysrIGIvY29tcGF0L3dpbjMyL3B0aHJlYWQuYwpAQCAtNTIsNyArNTIsNyBAQAogCiBwdGhyZWFkX3QgcHRocmVhZF9zZWxmKHZvaWQpCiB7Ci0JcHRocmVhZF90IHQgPSB7IDAgfTsKKwlwdGhyZWFkX3QgdCA9IHsgTlVMTCB9OwogCXQudGlkID0gR2V0Q3VycmVudFRocmVhZElkKCk7CiAJcmV0dXJuIHQ7CiB9CmRpZmYgLS1naXQgYS9jb21wYXQvd2luMzJtbWFwLmMgYi9jb21wYXQvd2luMzJtbWFwLmMKaW5kZXggNjFkMmVmOC4uODBhOGM5YSAxMDA2NDQKLS0tIGEvY29tcGF0L3dpbjMybW1hcC5jCisrKyBiL2NvbXBhdC93aW4zMm1tYXAuYwpAQCAtMjEsOCArMjEsOCBAQAogCWlmICghKGZsYWdzICYgTUFQX1BSSVZBVEUpKQogCQlkaWUoIkludmFsaWQgdXNhZ2Ugb2YgbW1hcCB3aGVuIGJ1aWx0IHdpdGggVVNFX1dJTjMyX01NQVAiKTsKIAotCWhtYXAgPSBDcmVhdGVGaWxlTWFwcGluZygoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKSwgMCwgUEFHRV9XUklURUNPUFksCi0JCTAsIDAsIDApOworCWhtYXAgPSBDcmVhdGVGaWxlTWFwcGluZygoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKSwgTlVMTCwKKwkJUEFHRV9XUklURUNPUFksIDAsIDAsIE5VTEwpOwogCiAJaWYgKCFobWFwKQogCQlyZXR1cm4gTUFQX0ZBSUxFRDsKZGlmZiAtLWdpdCBhL2NvbmZpZy5jIGIvY29uZmlnLmMKaW5kZXggN2E4NWViZC4uZTEzYTdiNiAxMDA2NDQKLS0tIGEvY29uZmlnLmMKKysrIGIvY29uZmlnLmMKQEAgLTEwLDIwICsxMCw2OSBAQAogI2luY2x1ZGUgInN0cmJ1Zi5oIgogI2luY2x1ZGUgInF1b3RlLmgiCiAKLXR5cGVkZWYgc3RydWN0IGNvbmZpZ19maWxlIHsKLQlzdHJ1Y3QgY29uZmlnX2ZpbGUgKnByZXY7Ci0JRklMRSAqZjsKK3N0cnVjdCBjb25maWdfc291cmNlIHsKKwlzdHJ1Y3QgY29uZmlnX3NvdXJjZSAqcHJldjsKKwl1bmlvbiB7CisJCUZJTEUgKmZpbGU7CisJCXN0cnVjdCBjb25maWdfYnVmIHsKKwkJCWNvbnN0IGNoYXIgKmJ1ZjsKKwkJCXNpemVfdCBsZW47CisJCQlzaXplX3QgcG9zOworCQl9IGJ1ZjsKKwl9IHU7CiAJY29uc3QgY2hhciAqbmFtZTsKKwlpbnQgZGllX29uX2Vycm9yOwogCWludCBsaW5lbnI7CiAJaW50IGVvZjsKIAlzdHJ1Y3Qgc3RyYnVmIHZhbHVlOwogCXN0cnVjdCBzdHJidWYgdmFyOwotfSBjb25maWdfZmlsZTsKIAotc3RhdGljIGNvbmZpZ19maWxlICpjZjsKKwlpbnQgKCpmZ2V0Yykoc3RydWN0IGNvbmZpZ19zb3VyY2UgKmMpOworCWludCAoKnVuZ2V0YykoaW50IGMsIHN0cnVjdCBjb25maWdfc291cmNlICpjb25mKTsKKwlsb25nICgqZnRlbGwpKHN0cnVjdCBjb25maWdfc291cmNlICpjKTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgY29uZmlnX3NvdXJjZSAqY2Y7CiAKIHN0YXRpYyBpbnQgemxpYl9jb21wcmVzc2lvbl9zZWVuOwogCitzdGF0aWMgaW50IGNvbmZpZ19maWxlX2ZnZXRjKHN0cnVjdCBjb25maWdfc291cmNlICpjb25mKQoreworCXJldHVybiBmZ2V0Yyhjb25mLT51LmZpbGUpOworfQorCitzdGF0aWMgaW50IGNvbmZpZ19maWxlX3VuZ2V0YyhpbnQgYywgc3RydWN0IGNvbmZpZ19zb3VyY2UgKmNvbmYpCit7CisJcmV0dXJuIHVuZ2V0YyhjLCBjb25mLT51LmZpbGUpOworfQorCitzdGF0aWMgbG9uZyBjb25maWdfZmlsZV9mdGVsbChzdHJ1Y3QgY29uZmlnX3NvdXJjZSAqY29uZikKK3sKKwlyZXR1cm4gZnRlbGwoY29uZi0+dS5maWxlKTsKK30KKworCitzdGF0aWMgaW50IGNvbmZpZ19idWZfZmdldGMoc3RydWN0IGNvbmZpZ19zb3VyY2UgKmNvbmYpCit7CisJaWYgKGNvbmYtPnUuYnVmLnBvcyA8IGNvbmYtPnUuYnVmLmxlbikKKwkJcmV0dXJuIGNvbmYtPnUuYnVmLmJ1Zltjb25mLT51LmJ1Zi5wb3MrK107CisKKwlyZXR1cm4gRU9GOworfQorCitzdGF0aWMgaW50IGNvbmZpZ19idWZfdW5nZXRjKGludCBjLCBzdHJ1Y3QgY29uZmlnX3NvdXJjZSAqY29uZikKK3sKKwlpZiAoY29uZi0+dS5idWYucG9zID4gMCkKKwkJcmV0dXJuIGNvbmYtPnUuYnVmLmJ1ZlstLWNvbmYtPnUuYnVmLnBvc107CisKKwlyZXR1cm4gRU9GOworfQorCitzdGF0aWMgbG9uZyBjb25maWdfYnVmX2Z0ZWxsKHN0cnVjdCBjb25maWdfc291cmNlICpjb25mKQoreworCXJldHVybiBjb25mLT51LmJ1Zi5wb3M7Cit9CisKICNkZWZpbmUgTUFYX0lOQ0xVREVfREVQVEggMTAKIHN0YXRpYyBjb25zdCBjaGFyIGluY2x1ZGVfZGVwdGhfYWR2aWNlW10gPQogImV4Y2VlZGVkIG1heGltdW0gaW5jbHVkZSBkZXB0aCAoJWQpIHdoaWxlIGluY2x1ZGluZ1xuIgpAQCAtMTY4LDI2ICsyMTcsMjEgQEAKIAogc3RhdGljIGludCBnZXRfbmV4dF9jaGFyKHZvaWQpCiB7Ci0JaW50IGM7Ci0JRklMRSAqZjsKKwlpbnQgYyA9IGNmLT5mZ2V0YyhjZik7CiAKLQljID0gJ1xuJzsKLQlpZiAoY2YgJiYgKChmID0gY2YtPmYpICE9IE5VTEwpKSB7Ci0JCWMgPSBmZ2V0YyhmKTsKLQkJaWYgKGMgPT0gJ1xyJykgewotCQkJLyogRE9TIGxpa2Ugc3lzdGVtcyAqLwotCQkJYyA9IGZnZXRjKGYpOwotCQkJaWYgKGMgIT0gJ1xuJykgewotCQkJCXVuZ2V0YyhjLCBmKTsKLQkJCQljID0gJ1xyJzsKLQkJCX0KKwlpZiAoYyA9PSAnXHInKSB7CisJCS8qIERPUyBsaWtlIHN5c3RlbXMgKi8KKwkJYyA9IGNmLT5mZ2V0YyhjZik7CisJCWlmIChjICE9ICdcbicpIHsKKwkJCWNmLT51bmdldGMoYywgY2YpOworCQkJYyA9ICdccic7CiAJCX0KLQkJaWYgKGMgPT0gJ1xuJykKLQkJCWNmLT5saW5lbnIrKzsKLQkJaWYgKGMgPT0gRU9GKSB7Ci0JCQljZi0+ZW9mID0gMTsKLQkJCWMgPSAnXG4nOwotCQl9CisJfQorCWlmIChjID09ICdcbicpCisJCWNmLT5saW5lbnIrKzsKKwlpZiAoYyA9PSBFT0YpIHsKKwkJY2YtPmVvZiA9IDE7CisJCWMgPSAnXG4nOwogCX0KIAlyZXR1cm4gYzsKIH0KQEAgLTMzOSw3ICszODMsNyBAQAogCX0KIH0KIAotc3RhdGljIGludCBnaXRfcGFyc2VfZmlsZShjb25maWdfZm5fdCBmbiwgdm9pZCAqZGF0YSkKK3N0YXRpYyBpbnQgZ2l0X3BhcnNlX3NvdXJjZShjb25maWdfZm5fdCBmbiwgdm9pZCAqZGF0YSkKIHsKIAlpbnQgY29tbWVudCA9IDA7CiAJaW50IGJhc2VsZW4gPSAwOwpAQCAtMzk5LDcgKzQ0MywxMCBAQAogCQlpZiAoZ2V0X3ZhbHVlKGZuLCBkYXRhLCB2YXIpIDwgMCkKIAkJCWJyZWFrOwogCX0KLQlkaWUoImJhZCBjb25maWcgZmlsZSBsaW5lICVkIGluICVzIiwgY2YtPmxpbmVuciwgY2YtPm5hbWUpOworCWlmIChjZi0+ZGllX29uX2Vycm9yKQorCQlkaWUoImJhZCBjb25maWcgZmlsZSBsaW5lICVkIGluICVzIiwgY2YtPmxpbmVuciwgY2YtPm5hbWUpOworCWVsc2UKKwkJcmV0dXJuIGVycm9yKCJiYWQgY29uZmlnIGZpbGUgbGluZSAlZCBpbiAlcyIsIGNmLT5saW5lbnIsIGNmLT5uYW1lKTsKIH0KIAogc3RhdGljIGludCBwYXJzZV91bml0X2ZhY3Rvcihjb25zdCBjaGFyICplbmQsIHVpbnRtYXhfdCAqdmFsKQpAQCAtNjg4LDkgKzczNSw2IEBACiAJCXJldHVybiAwOwogCX0KIAotCWlmICghc3RyY21wKHZhciwgImNvcmUubG9ncGFja2FjY2VzcyIpKQotCQlyZXR1cm4gZ2l0X2NvbmZpZ19zdHJpbmcoJmxvZ19wYWNrX2FjY2VzcywgdmFyLCB2YWx1ZSk7Ci0KIAlpZiAoIXN0cmNtcCh2YXIsICJjb3JlLmF1dG9jcmxmIikpIHsKIAkJaWYgKHZhbHVlICYmICFzdHJjYXNlY21wKHZhbHVlLCAiaW5wdXQiKSkgewogCQkJaWYgKGNvcmVfZW9sID09IEVPTF9DUkxGKQpAQCAtOTA5LDYgKzk1MywzMyBAQAogCXJldHVybiAwOwogfQogCisvKgorICogQWxsIHNvdXJjZSBzcGVjaWZpYyBmaWVsZHMgaW4gdGhlIHVuaW9uLCBkaWVfb25fZXJyb3IsIG5hbWUgYW5kIHRoZSBjYWxsYmFja3MKKyAqIGZnZXRjLCB1bmdldGMsIGZ0ZWxsIG9mIHRvcCBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGJlZm9yZSBjYWxsaW5nCisgKiB0aGlzIGZ1bmN0aW9uLgorICovCitzdGF0aWMgaW50IGRvX2NvbmZpZ19mcm9tKHN0cnVjdCBjb25maWdfc291cmNlICp0b3AsIGNvbmZpZ19mbl90IGZuLCB2b2lkICpkYXRhKQoreworCWludCByZXQ7CisKKwkvKiBwdXNoIGNvbmZpZy1maWxlIHBhcnNpbmcgc3RhdGUgc3RhY2sgKi8KKwl0b3AtPnByZXYgPSBjZjsKKwl0b3AtPmxpbmVuciA9IDE7CisJdG9wLT5lb2YgPSAwOworCXN0cmJ1Zl9pbml0KCZ0b3AtPnZhbHVlLCAxMDI0KTsKKwlzdHJidWZfaW5pdCgmdG9wLT52YXIsIDEwMjQpOworCWNmID0gdG9wOworCisJcmV0ID0gZ2l0X3BhcnNlX3NvdXJjZShmbiwgZGF0YSk7CisKKwkvKiBwb3AgY29uZmlnLWZpbGUgcGFyc2luZyBzdGF0ZSBzdGFjayAqLworCXN0cmJ1Zl9yZWxlYXNlKCZ0b3AtPnZhbHVlKTsKKwlzdHJidWZfcmVsZWFzZSgmdG9wLT52YXIpOworCWNmID0gdG9wLT5wcmV2OworCisJcmV0dXJuIHJldDsKK30KKwogaW50IGdpdF9jb25maWdfZnJvbV9maWxlKGNvbmZpZ19mbl90IGZuLCBjb25zdCBjaGFyICpmaWxlbmFtZSwgdm9pZCAqZGF0YSkKIHsKIAlpbnQgcmV0OwpAQCAtOTE2LDMwICs5ODcsNzQgQEAKIAogCXJldCA9IC0xOwogCWlmIChmKSB7Ci0JCWNvbmZpZ19maWxlIHRvcDsKKwkJc3RydWN0IGNvbmZpZ19zb3VyY2UgdG9wOwogCi0JCS8qIHB1c2ggY29uZmlnLWZpbGUgcGFyc2luZyBzdGF0ZSBzdGFjayAqLwotCQl0b3AucHJldiA9IGNmOwotCQl0b3AuZiA9IGY7CisJCXRvcC51LmZpbGUgPSBmOwogCQl0b3AubmFtZSA9IGZpbGVuYW1lOwotCQl0b3AubGluZW5yID0gMTsKLQkJdG9wLmVvZiA9IDA7Ci0JCXN0cmJ1Zl9pbml0KCZ0b3AudmFsdWUsIDEwMjQpOwotCQlzdHJidWZfaW5pdCgmdG9wLnZhciwgMTAyNCk7Ci0JCWNmID0gJnRvcDsKKwkJdG9wLmRpZV9vbl9lcnJvciA9IDE7CisJCXRvcC5mZ2V0YyA9IGNvbmZpZ19maWxlX2ZnZXRjOworCQl0b3AudW5nZXRjID0gY29uZmlnX2ZpbGVfdW5nZXRjOworCQl0b3AuZnRlbGwgPSBjb25maWdfZmlsZV9mdGVsbDsKIAotCQlyZXQgPSBnaXRfcGFyc2VfZmlsZShmbiwgZGF0YSk7Ci0KLQkJLyogcG9wIGNvbmZpZy1maWxlIHBhcnNpbmcgc3RhdGUgc3RhY2sgKi8KLQkJc3RyYnVmX3JlbGVhc2UoJnRvcC52YWx1ZSk7Ci0JCXN0cmJ1Zl9yZWxlYXNlKCZ0b3AudmFyKTsKLQkJY2YgPSB0b3AucHJldjsKKwkJcmV0ID0gZG9fY29uZmlnX2Zyb20oJnRvcCwgZm4sIGRhdGEpOwogCiAJCWZjbG9zZShmKTsKIAl9CiAJcmV0dXJuIHJldDsKIH0KIAoraW50IGdpdF9jb25maWdfZnJvbV9idWYoY29uZmlnX2ZuX3QgZm4sIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmJ1ZiwKKwkJCXNpemVfdCBsZW4sIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGNvbmZpZ19zb3VyY2UgdG9wOworCisJdG9wLnUuYnVmLmJ1ZiA9IGJ1ZjsKKwl0b3AudS5idWYubGVuID0gbGVuOworCXRvcC51LmJ1Zi5wb3MgPSAwOworCXRvcC5uYW1lID0gbmFtZTsKKwl0b3AuZGllX29uX2Vycm9yID0gMDsKKwl0b3AuZmdldGMgPSBjb25maWdfYnVmX2ZnZXRjOworCXRvcC51bmdldGMgPSBjb25maWdfYnVmX3VuZ2V0YzsKKwl0b3AuZnRlbGwgPSBjb25maWdfYnVmX2Z0ZWxsOworCisJcmV0dXJuIGRvX2NvbmZpZ19mcm9tKCZ0b3AsIGZuLCBkYXRhKTsKK30KKworc3RhdGljIGludCBnaXRfY29uZmlnX2Zyb21fYmxvYl9zaGExKGNvbmZpZ19mbl90IGZuLAorCQkJCSAgICAgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCisJCQkJICAgICB2b2lkICpkYXRhKQoreworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKwljaGFyICpidWY7CisJdW5zaWduZWQgbG9uZyBzaXplOworCWludCByZXQ7CisKKwlidWYgPSByZWFkX3NoYTFfZmlsZShzaGExLCAmdHlwZSwgJnNpemUpOworCWlmICghYnVmKQorCQlyZXR1cm4gZXJyb3IoInVuYWJsZSB0byBsb2FkIGNvbmZpZyBibG9iIG9iamVjdCAnJXMnIiwgbmFtZSk7CisJaWYgKHR5cGUgIT0gT0JKX0JMT0IpIHsKKwkJZnJlZShidWYpOworCQlyZXR1cm4gZXJyb3IoInJlZmVyZW5jZSAnJXMnIGRvZXMgbm90IHBvaW50IHRvIGEgYmxvYiIsIG5hbWUpOworCX0KKworCXJldCA9IGdpdF9jb25maWdfZnJvbV9idWYoZm4sIG5hbWUsIGJ1Ziwgc2l6ZSwgZGF0YSk7CisJZnJlZShidWYpOworCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludCBnaXRfY29uZmlnX2Zyb21fYmxvYl9yZWYoY29uZmlnX2ZuX3QgZm4sCisJCQkJICAgIGNvbnN0IGNoYXIgKm5hbWUsCisJCQkJICAgIHZvaWQgKmRhdGEpCit7CisJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKworCWlmIChnZXRfc2hhMShuYW1lLCBzaGExKSA8IDApCisJCXJldHVybiBlcnJvcigidW5hYmxlIHRvIHJlc29sdmUgY29uZmlnIGJsb2IgJyVzJyIsIG5hbWUpOworCXJldHVybiBnaXRfY29uZmlnX2Zyb21fYmxvYl9zaGExKGZuLCBuYW1lLCBzaGExLCBkYXRhKTsKK30KKwogY29uc3QgY2hhciAqZ2l0X2V0Y19naXRjb25maWcodm9pZCkKIHsKIAlzdGF0aWMgY29uc3QgY2hhciAqc3lzdGVtX3dpZGU7CkBAIC0xMDA1LDcgKzExMjAsOSBAQAogfQogCiBpbnQgZ2l0X2NvbmZpZ193aXRoX29wdGlvbnMoY29uZmlnX2ZuX3QgZm4sIHZvaWQgKmRhdGEsCi0JCQkgICAgY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCByZXNwZWN0X2luY2x1ZGVzKQorCQkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLAorCQkJICAgIGNvbnN0IGNoYXIgKmJsb2JfcmVmLAorCQkJICAgIGludCByZXNwZWN0X2luY2x1ZGVzKQogewogCWNoYXIgKnJlcG9fY29uZmlnID0gTlVMTDsKIAlpbnQgcmV0OwpAQCAtMTAyNCw2ICsxMTQxLDggQEAKIAkgKi8KIAlpZiAoZmlsZW5hbWUpCiAJCXJldHVybiBnaXRfY29uZmlnX2Zyb21fZmlsZShmbiwgZmlsZW5hbWUsIGRhdGEpOworCWVsc2UgaWYgKGJsb2JfcmVmKQorCQlyZXR1cm4gZ2l0X2NvbmZpZ19mcm9tX2Jsb2JfcmVmKGZuLCBibG9iX3JlZiwgZGF0YSk7CiAKIAlyZXBvX2NvbmZpZyA9IGdpdF9wYXRoZHVwKCJjb25maWciKTsKIAlyZXQgPSBnaXRfY29uZmlnX2Vhcmx5KGZuLCBkYXRhLCByZXBvX2NvbmZpZyk7CkBAIC0xMDM0LDcgKzExNTMsNyBAQAogCiBpbnQgZ2l0X2NvbmZpZyhjb25maWdfZm5fdCBmbiwgdm9pZCAqZGF0YSkKIHsKLQlyZXR1cm4gZ2l0X2NvbmZpZ193aXRoX29wdGlvbnMoZm4sIGRhdGEsIE5VTEwsIDEpOworCXJldHVybiBnaXRfY29uZmlnX3dpdGhfb3B0aW9ucyhmbiwgZGF0YSwgTlVMTCwgTlVMTCwgMSk7CiB9CiAKIC8qCkBAIC0xMDY2LDcgKzExODUsNiBAQAogewogCWNvbnN0IGNoYXIgKmVwOwogCXNpemVfdCBzZWN0aW9uX2xlbjsKLQlGSUxFICpmID0gY2YtPmY7CiAKIAlzd2l0Y2ggKHN0b3JlLnN0YXRlKSB7CiAJY2FzZSBLRVlfU0VFTjoKQEAgLTEwNzgsNyArMTE5Niw3IEBACiAJCQkJcmV0dXJuIDE7CiAJCQl9CiAKLQkJCXN0b3JlLm9mZnNldFtzdG9yZS5zZWVuXSA9IGZ0ZWxsKGYpOworCQkJc3RvcmUub2Zmc2V0W3N0b3JlLnNlZW5dID0gY2YtPmZ0ZWxsKGNmKTsKIAkJCXN0b3JlLnNlZW4rKzsKIAkJfQogCQlicmVhazsKQEAgLTExMDUsMTkgKzEyMjMsMTkgQEAKIAkJICogRG8gbm90IGluY3JlbWVudCBtYXRjaGVzOiB0aGlzIGlzIG5vIG1hdGNoLCBidXQgd2UKIAkJICoganVzdCBtYWRlIHN1cmUgd2UgYXJlIGluIHRoZSBkZXNpcmVkIHNlY3Rpb24uCiAJCSAqLwotCQlzdG9yZS5vZmZzZXRbc3RvcmUuc2Vlbl0gPSBmdGVsbChmKTsKKwkJc3RvcmUub2Zmc2V0W3N0b3JlLnNlZW5dID0gY2YtPmZ0ZWxsKGNmKTsKIAkJLyogZmFsbHRocnUgKi8KIAljYXNlIFNFQ1RJT05fRU5EX1NFRU46CiAJY2FzZSBTVEFSVDoKIAkJaWYgKG1hdGNoZXMoa2V5LCB2YWx1ZSkpIHsKLQkJCXN0b3JlLm9mZnNldFtzdG9yZS5zZWVuXSA9IGZ0ZWxsKGYpOworCQkJc3RvcmUub2Zmc2V0W3N0b3JlLnNlZW5dID0gY2YtPmZ0ZWxsKGNmKTsKIAkJCXN0b3JlLnN0YXRlID0gS0VZX1NFRU47CiAJCQlzdG9yZS5zZWVuKys7CiAJCX0gZWxzZSB7CiAJCQlpZiAoc3RycmNocihrZXksICcuJykgLSBrZXkgPT0gc3RvcmUuYmFzZWxlbiAmJgogCQkJICAgICAgIXN0cm5jbXAoa2V5LCBzdG9yZS5rZXksIHN0b3JlLmJhc2VsZW4pKSB7CiAJCQkJCXN0b3JlLnN0YXRlID0gU0VDVElPTl9TRUVOOwotCQkJCQlzdG9yZS5vZmZzZXRbc3RvcmUuc2Vlbl0gPSBmdGVsbChmKTsKKwkJCQkJc3RvcmUub2Zmc2V0W3N0b3JlLnNlZW5dID0gY2YtPmZ0ZWxsKGNmKTsKIAkJCX0KIAkJfQogCX0KZGlmZiAtLWdpdCBhL2NvbmZpZy5tYWsudW5hbWUgYi9jb25maWcubWFrLnVuYW1lCmluZGV4IDE3NDcwM2IuLmIyN2Y1MWQgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5tYWsudW5hbWUKKysrIGIvY29uZmlnLm1hay51bmFtZQpAQCAtMTU5LDE5ICsxNTksMTggQEAKIAkJTk9fU1lNTElOS19IRUFEID0gWWVzUGxlYXNlCiAJCU5PX0lQVjYgPSBZZXNQbGVhc2UKIAkJT0xEX0lDT05WID0gVW5mb3J0dW5hdGVseVllcwotCQlDWUdXSU5fVjE1X1dJTjMyQVBJID0gWWVzUGxlYXNlCisJCU5PX1RIUkVBRF9TQUZFX1BSRUFEID0gWWVzUGxlYXNlCisJCSMgVGhlcmUgYXJlIGNvbmZsaWN0aW5nIHJlcG9ydHMgYWJvdXQgdGhpcy4KKwkJIyBPbiBzb21lIGJveGVzIE5PX01NQVAgaXMgbmVlZGVkLCBhbmQgbm90IHNvIGVsc2V3aGVyZS4KKwkJIyBUcnkgY29tbWVudGluZyB0aGlzIG91dCBpZiB5b3Ugc3VzcGVjdCBNTUFQIGlzIG1vcmUgZWZmaWNpZW50CisJCU5PX01NQVAgPSBZZXNQbGVhc2UKKwllbHNlCisJCU5PX1JFR0VYID0gVW5mb3J0dW5hdGVseVllcwogCWVuZGlmCi0JTk9fVEhSRUFEX1NBRkVfUFJFQUQgPSBZZXNQbGVhc2UKIAlORUVEU19MSUJJQ09OViA9IFllc1BsZWFzZQogCU5PX0ZBU1RfV09SS0lOR19ESVJFQ1RPUlkgPSBVbmZvcnR1bmF0ZWx5WWVzCi0JTk9fVFJVU1RBQkxFX0ZJTEVNT0RFID0gVW5mb3J0dW5hdGVseVllcwogCU5PX1NUX0JMT0NLU19JTl9TVFJVQ1RfU1RBVCA9IFllc1BsZWFzZQotCSMgVGhlcmUgYXJlIGNvbmZsaWN0aW5nIHJlcG9ydHMgYWJvdXQgdGhpcy4KLQkjIE9uIHNvbWUgYm94ZXMgTk9fTU1BUCBpcyBuZWVkZWQsIGFuZCBub3Qgc28gZWxzZXdoZXJlLgotCSMgVHJ5IGNvbW1lbnRpbmcgdGhpcyBvdXQgaWYgeW91IHN1c3BlY3QgTU1BUCBpcyBtb3JlIGVmZmljaWVudAotCU5PX01NQVAgPSBZZXNQbGVhc2UKIAlYID0gLmV4ZQotCUNPTVBBVF9PQkpTICs9IGNvbXBhdC9jeWd3aW4ubwogCVVOUkVMSUFCTEVfRlNUQVQgPSBVbmZvcnR1bmF0ZWx5WWVzCiAJU1BBUlNFX0ZMQUdTID0gLWlzeXN0ZW0gL3Vzci9pbmNsdWRlL3czMmFwaSAtV25vLW9uZS1iaXQtc2lnbmVkLWJpdGZpZWxkCiBlbmRpZgpAQCAtNDgxLDcgKzQ4MCw2IEBACiAJTk9fRk5NQVRDSCA9IFllc1BsZWFzZQogCU5PX01FTU1FTSA9IFllc1BsZWFzZQogCU5FRURTX0xJQklDT05WID0gWWVzUGxlYXNlCi0JT0xEX0lDT05WID0gWWVzUGxlYXNlCiAJTk9fU1RSVE9VTUFYID0gWWVzUGxlYXNlCiAJTk9fTUtEVEVNUCA9IFllc1BsZWFzZQogCU5PX01LU1RFTVBTID0gWWVzUGxlYXNlCkBAIC01MDEsMTMgKzQ5OSwxNyBAQAogCU5PX0lORVRfUFRPTiA9IFllc1BsZWFzZQogCU5PX0lORVRfTlRPUCA9IFllc1BsZWFzZQogCU5PX1BPU0lYX0dPT0RJRVMgPSBVbmZvcnR1bmF0ZWx5WWVzCisJREVGQVVMVF9IRUxQX0ZPUk1BVCA9IGh0bWwKIAlDT01QQVRfQ0ZMQUdTICs9IC1EX19VU0VfTUlOR1dfQUNDRVNTIC1ETk9HREkgLUljb21wYXQgLUljb21wYXQvd2luMzIKIAlDT01QQVRfQ0ZMQUdTICs9IC1EU1RSSVBfRVhURU5TSU9OPVwiLmV4ZVwiCiAJQ09NUEFUX09CSlMgKz0gY29tcGF0L21pbmd3Lm8gY29tcGF0L3dpbmFuc2kubyBcCiAJCWNvbXBhdC93aW4zMi9wdGhyZWFkLm8gY29tcGF0L3dpbjMyL3N5c2xvZy5vIFwKIAkJY29tcGF0L3dpbjMyL2RpcmVudC5vCisJQkFTSUNfTERGTEFHUyArPSAtV2wsLS1sYXJnZS1hZGRyZXNzLWF3YXJlCiAJRVhUTElCUyArPSAtbHdzMl8zMgorCUdJVExJQlMgKz0gZ2l0LnJlcwogCVBUSFJFQURfTElCUyA9CisJUkMgPSB3aW5kcmVzIC1PIGNvZmYKIAlOQVRJVkVfQ1JMRiA9IFllc1BsZWFzZQogCVggPSAuZXhlCiAJU1BBUlNFX0ZMQUdTID0gLVduby1vbmUtYml0LXNpZ25lZC1iaXRmaWVsZApAQCAtNTE5LDYgKzUyMSw3IEBACiAJTk9fUl9UT19HQ0NfTElOS0VSID0gWWVzUGxlYXNlCiAJSU5URVJOQUxfUVNPUlQgPSBZZXNQbGVhc2UKIAlIQVZFX0xJQkNIQVJTRVRfSCA9IFllc1BsZWFzZQorCU5PX0dFVFRFWFQgPSBZZXNQbGVhc2UKIGVsc2UKIAlOT19DVVJMID0gWWVzUGxlYXNlCiBlbmRpZgpkaWZmIC0tZ2l0IGEvY29ubmVjdC5jIGIvY29ubmVjdC5jCmluZGV4IGY1N2VmZDAuLmEwNzgzZDQgMTAwNjQ0Ci0tLSBhL2Nvbm5lY3QuYworKysgYi9jb25uZWN0LmMKQEAgLTU1MSw4ICs1NTEsMTEgQEAKIAlwYXRoID0gc3RyY2hyKGVuZCwgYyk7CiAJaWYgKHBhdGggJiYgIWhhc19kb3NfZHJpdmVfcHJlZml4KGVuZCkpIHsKIAkJaWYgKGMgPT0gJzonKSB7Ci0JCQlwcm90b2NvbCA9IFBST1RPX1NTSDsKLQkJCSpwYXRoKysgPSAnXDAnOworCQkJaWYgKHBhdGggPCBzdHJjaHJudWwoaG9zdCwgJy8nKSkgeworCQkJCXByb3RvY29sID0gUFJPVE9fU1NIOworCQkJCSpwYXRoKysgPSAnXDAnOworCQkJfSBlbHNlIC8qICcvJyBpbiB0aGUgaG9zdCBwYXJ0LCBhc3N1bWUgbG9jYWwgcGF0aCAqLworCQkJCXBhdGggPSBlbmQ7CiAJCX0KIAl9IGVsc2UKIAkJcGF0aCA9IGVuZDsKZGlmZiAtLWdpdCBhL2Nvbm5lY3RlZC5jIGIvY29ubmVjdGVkLmMKaW5kZXggMWU4OWMxYy4uZmFlOGQ2NCAxMDA2NDQKLS0tIGEvY29ubmVjdGVkLmMKKysrIGIvY29ubmVjdGVkLmMKQEAgLTIsNyArMiwxMiBAQAogI2luY2x1ZGUgInJ1bi1jb21tYW5kLmgiCiAjaW5jbHVkZSAic2lnY2hhaW4uaCIKICNpbmNsdWRlICJjb25uZWN0ZWQuaCIKKyNpbmNsdWRlICJ0cmFuc3BvcnQuaCIKIAoraW50IGNoZWNrX2V2ZXJ5dGhpbmdfY29ubmVjdGVkKHNoYTFfaXRlcmF0ZV9mbiBmbiwgaW50IHF1aWV0LCB2b2lkICpjYl9kYXRhKQoreworCXJldHVybiBjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZF93aXRoX3RyYW5zcG9ydChmbiwgcXVpZXQsIGNiX2RhdGEsIE5VTEwpOworfQogLyoKICAqIElmIHdlIGZlZWQgYWxsIHRoZSBjb21taXRzIHdlIHdhbnQgdG8gdmVyaWZ5IHRvIHRoaXMgY29tbWFuZAogICoKQEAgLTE0LDcgKzE5LDEwIEBACiAgKgogICogUmV0dXJucyAwIGlmIGV2ZXJ5dGhpbmcgaXMgY29ubmVjdGVkLCBub24temVybyBvdGhlcndpc2UuCiAgKi8KLWludCBjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZChzaGExX2l0ZXJhdGVfZm4gZm4sIGludCBxdWlldCwgdm9pZCAqY2JfZGF0YSkKK2ludCBjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZF93aXRoX3RyYW5zcG9ydChzaGExX2l0ZXJhdGVfZm4gZm4sCisJCQkJCSAgICAgIGludCBxdWlldCwKKwkJCQkJICAgICAgdm9pZCAqY2JfZGF0YSwKKwkJCQkJICAgICAgc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0KQogewogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHJldl9saXN0OwogCWNvbnN0IGNoYXIgKmFyZ3ZbXSA9IHsicmV2LWxpc3QiLCAiLS1vYmplY3RzIiwKQEAgLTIyLDEwICszMCwyMyBAQAogCWNoYXIgY29tbWl0WzQxXTsKIAl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwogCWludCBlcnIgPSAwOworCXN0cnVjdCBwYWNrZWRfZ2l0ICpuZXdfcGFjayA9IE5VTEw7CiAKIAlpZiAoZm4oY2JfZGF0YSwgc2hhMSkpCiAJCXJldHVybiBlcnI7CiAKKwlpZiAodHJhbnNwb3J0ICYmIHRyYW5zcG9ydC0+c21hcnRfb3B0aW9ucyAmJgorCSAgICB0cmFuc3BvcnQtPnNtYXJ0X29wdGlvbnMtPnNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgJiYKKwkgICAgdHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlICYmCisJICAgICFzdWZmaXhjbXAodHJhbnNwb3J0LT5wYWNrX2xvY2tmaWxlLCAiLmtlZXAiKSkgeworCQlzdHJ1Y3Qgc3RyYnVmIGlkeF9maWxlID0gU1RSQlVGX0lOSVQ7CisJCXN0cmJ1Zl9hZGRzdHIoJmlkeF9maWxlLCB0cmFuc3BvcnQtPnBhY2tfbG9ja2ZpbGUpOworCQlzdHJidWZfc2V0bGVuKCZpZHhfZmlsZSwgaWR4X2ZpbGUubGVuIC0gNSk7IC8qICIua2VlcCIgKi8KKwkJc3RyYnVmX2FkZHN0cigmaWR4X2ZpbGUsICIuaWR4Iik7CisJCW5ld19wYWNrID0gYWRkX3BhY2tlZF9naXQoaWR4X2ZpbGUuYnVmLCBpZHhfZmlsZS5sZW4sIDEpOworCQlzdHJidWZfcmVsZWFzZSgmaWR4X2ZpbGUpOworCX0KKwogCWlmIChxdWlldCkKIAkJYXJndls1XSA9ICItLXF1aWV0IjsKIApAQCAtNDIsNiArNjMsMTcgQEAKIAogCWNvbW1pdFs0MF0gPSAnXG4nOwogCWRvIHsKKwkJLyoKKwkJICogSWYgaW5kZXgtcGFjayBhbHJlYWR5IGNoZWNrZWQgdGhhdDoKKwkJICogLSB0aGVyZSBhcmUgbm8gZGFuZ2xpbmcgcG9pbnRlcnMgaW4gdGhlIG5ldyBwYWNrCisJCSAqIC0gdGhlIHBhY2sgaXMgc2VsZiBjb250YWluZWQKKwkJICogVGhlbiBpZiB0aGUgdXBkYXRlZCByZWYgaXMgaW4gdGhlIG5ldyBwYWNrLCB0aGVuIHdlCisJCSAqIGFyZSBzdXJlIHRoZSByZWYgaXMgZ29vZCBhbmQgbm90IHNlbmRpbmcgaXQgdG8KKwkJICogcmV2LWxpc3QgZm9yIHZlcmlmaWNhdGlvbi4KKwkJICovCisJCWlmIChuZXdfcGFjayAmJiBmaW5kX3BhY2tfZW50cnlfb25lKHNoYTEsIG5ld19wYWNrKSkKKwkJCWNvbnRpbnVlOworCiAJCW1lbWNweShjb21taXQsIHNoYTFfdG9faGV4KHNoYTEpLCA0MCk7CiAJCWlmICh3cml0ZV9pbl9mdWxsKHJldl9saXN0LmluLCBjb21taXQsIDQxKSA8IDApIHsKIAkJCWlmIChlcnJubyAhPSBFUElQRSAmJiBlcnJubyAhPSBFSU5WQUwpCmRpZmYgLS1naXQgYS9jb25uZWN0ZWQuaCBiL2Nvbm5lY3RlZC5oCmluZGV4IDdlNDU4NWEuLjBiMDYwYjcgMTAwNjQ0Ci0tLSBhL2Nvbm5lY3RlZC5oCisrKyBiL2Nvbm5lY3RlZC5oCkBAIC0xLDYgKzEsOCBAQAogI2lmbmRlZiBDT05ORUNURURfSAogI2RlZmluZSBDT05ORUNURURfSAogCitzdHJ1Y3QgdHJhbnNwb3J0OworCiAvKgogICogVGFrZSBjYWxsYmFjayBkYXRhLCBhbmQgcmV0dXJuIG5leHQgb2JqZWN0IG5hbWUgaW4gdGhlIGJ1ZmZlci4KICAqIFdoZW4gY2FsbGVkIGFmdGVyIHJldHVybmluZyB0aGUgbmFtZSBmb3IgdGhlIGxhc3Qgb2JqZWN0LCByZXR1cm4gLTEKQEAgLTE2LDUgKzE4LDggQEAKICAqIFJldHVybiAwIGlmIE9rLCBub24gemVybyBvdGhlcndpc2UgKGkuZS4gc29tZSBtaXNzaW5nIG9iamVjdHMpCiAgKi8KIGV4dGVybiBpbnQgY2hlY2tfZXZlcnl0aGluZ19jb25uZWN0ZWQoc2hhMV9pdGVyYXRlX2ZuLCBpbnQgcXVpZXQsIHZvaWQgKmNiX2RhdGEpOworZXh0ZXJuIGludCBjaGVja19ldmVyeXRoaW5nX2Nvbm5lY3RlZF93aXRoX3RyYW5zcG9ydChzaGExX2l0ZXJhdGVfZm4sIGludCBxdWlldCwKKwkJCQkJCSAgICAgdm9pZCAqY2JfZGF0YSwKKwkJCQkJCSAgICAgc3RydWN0IHRyYW5zcG9ydCAqdHJhbnNwb3J0KTsKIAogI2VuZGlmIC8qIENPTk5FQ1RFRF9IICovCmRpZmYgLS1naXQgYS9jb250cmliL2JsYW1ldmlldy9SRUFETUUgYi9jb250cmliL2JsYW1ldmlldy9SRUFETUUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhZGE1Y2UuLjAwMDAwMDAKLS0tIGEvY29udHJpYi9ibGFtZXZpZXcvUkVBRE1FCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1UaGlzIGlzIGEgc2FtcGxlIHByb2dyYW0gdG8gdXNlICdnaXQtYmxhbWUgLS1pbmNyZW1lbnRhbCcsIGJhc2VkCi1vbiB0aGlzIG1lc3NhZ2UuCi0KLUZyb206IEplZmYgS2luZyA8cGVmZkBwZWZmLm5ldD4KLVN1YmplY3Q6IFJlOiBNb3JlIHByZWNpc2UgdGFnIGZvbGxvd2luZwotVG86IExpbnVzIFRvcnZhbGRzIDx0b3J2YWxkc0BsaW51eC1mb3VuZGF0aW9uLm9yZz4KLUNjOiBnaXRAdmdlci5rZXJuZWwub3JnCi1EYXRlOiBTYXQsIDI3IEphbiAyMDA3IDE4OjUyOjM4IC0wNTAwCi1NZXNzYWdlLUlEOiA8MjAwNzAxMjcyMzUyMzguR0EyODcwNkBjb3JlZHVtcC5pbnRyYS5wZWZmLm5ldD4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxhbWV2aWV3L2JsYW1ldmlldy5wZXJsIGIvY29udHJpYi9ibGFtZXZpZXcvYmxhbWV2aWV3LnBlcmwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDFkZWMwMDEuLjAwMDAwMDAKLS0tIGEvY29udHJpYi9ibGFtZXZpZXcvYmxhbWV2aWV3LnBlcmwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0KLXVzZSBHdGsyIC1pbml0OwotdXNlIEd0azI6OlNpbXBsZUxpc3Q7Ci0KLW15ICRoYXNoOwotbXkgJGZuOwotaWYgKCBAQVJHViA9PSAxICkgewotCSRoYXNoID0gIkhFQUQiOwotCSRmbiA9IHNoaWZ0OwotfSBlbHNpZiAoIEBBUkdWID09IDIgKSB7Ci0JJGhhc2ggPSBzaGlmdDsKLQkkZm4gPSBzaGlmdDsKLX0gZWxzZSB7Ci0JZGllICJVc2FnZSBibGFtZXZpZXcgWzxyZXY+XSA8ZmlsZW5hbWU+IjsKLX0KLQotR3RrMjo6UmMtPnBhcnNlX3N0cmluZyg8PCdFT1MnKTsKLXN0eWxlICJ0cmVldmlld19zdHlsZSIKLXsKLSAgR3RrVHJlZVZpZXc6OnZlcnRpY2FsLXNlcGFyYXRvciA9IDAKLX0KLWNsYXNzICJHdGtUcmVlVmlldyIgc3R5bGUgInRyZWV2aWV3X3N0eWxlIgotRU9TCi0KLW15ICR3aW5kb3cgPSBHdGsyOjpXaW5kb3ctPm5ldygndG9wbGV2ZWwnKTsKLSR3aW5kb3ctPnNpZ25hbF9jb25uZWN0KGRlc3Ryb3kgPT4gc3ViIHsgR3RrMi0+bWFpbl9xdWl0IH0pOwotbXkgJHZwYW4gPSBHdGsyOjpWUGFuZWQtPm5ldygpOwotJHdpbmRvdy0+YWRkKCR2cGFuKTsKLW15ICRzY3JvbGxlZF93aW5kb3cgPSBHdGsyOjpTY3JvbGxlZFdpbmRvdy0+bmV3OwotJHZwYW4tPnBhY2sxKCRzY3JvbGxlZF93aW5kb3csIDEsIDEpOwotbXkgJGZpbGV2aWV3ID0gR3RrMjo6U2ltcGxlTGlzdC0+bmV3KAotICAgICdDb21taXQnID0+ICd0ZXh0JywKLSAgICAnRmlsZUxpbmUnID0+ICd0ZXh0JywKLSAgICAnRGF0YScgPT4gJ3RleHQnCi0pOwotJHNjcm9sbGVkX3dpbmRvdy0+YWRkKCRmaWxldmlldyk7Ci0kZmlsZXZpZXctPmdldF9jb2x1bW4oMCktPnNldF9zcGFjaW5nKDApOwotJGZpbGV2aWV3LT5zZXRfc2l6ZV9yZXF1ZXN0KDEwMjQsIDc2OCk7Ci0kZmlsZXZpZXctPnNldF9ydWxlc19oaW50KDEpOwotJGZpbGV2aWV3LT5zaWduYWxfY29ubmVjdCAocm93X2FjdGl2YXRlZCA9PiBzdWIgewotCQlteSAoJHNsLCAkcGF0aCwgJGNvbHVtbikgPSBAXzsKLQkJbXkgJHJvd19yZWYgPSAkc2wtPmdldF9yb3dfZGF0YV9mcm9tX3BhdGggKCRwYXRoKTsKLQkJc3lzdGVtKCJibGFtZXZpZXcgQCRyb3dfcmVmWzBdfjEgJGZuICYiKTsKLQkJfSk7Ci0KLW15ICRjb21taXR3aW5kb3cgPSBHdGsyOjpTY3JvbGxlZFdpbmRvdy0+bmV3KCk7Ci0kY29tbWl0d2luZG93LT5zZXRfcG9saWN5ICgnR1RLX1BPTElDWV9BVVRPTUFUSUMnLCdHVEtfUE9MSUNZX0FVVE9NQVRJQycpOwotJHZwYW4tPnBhY2syKCRjb21taXR3aW5kb3csIDEsIDEpOwotbXkgJGNvbW1pdF90ZXh0ID0gR3RrMjo6VGV4dFZpZXctPm5ldygpOwotbXkgJGNvbW1pdF9idWZmZXIgPSBHdGsyOjpUZXh0QnVmZmVyLT5uZXcoKTsKLSRjb21taXRfdGV4dC0+c2V0X2J1ZmZlcigkY29tbWl0X2J1ZmZlcik7Ci0kY29tbWl0d2luZG93LT5hZGQoJGNvbW1pdF90ZXh0KTsKLQotJGZpbGV2aWV3LT5zaWduYWxfY29ubmVjdCAoY3Vyc29yX2NoYW5nZWQgPT4gc3ViIHsKLQkJbXkgKCRzbCkgPSBAXzsKLQkJbXkgKCRwYXRoLCAkZm9jdXNfY29sdW1uKSA9ICRzbC0+Z2V0X2N1cnNvcigpOwotCQlteSAkcm93X3JlZiA9ICRzbC0+Z2V0X3Jvd19kYXRhX2Zyb21fcGF0aCAoJHBhdGgpOwotCQlteSAkY19maDsKLQkJb3BlbigkY19maCwgICctfCcsICJnaXQgY2F0LWZpbGUgY29tbWl0IEAkcm93X3JlZlswXSIpCi0JCQkJCW9yIGRpZSAidW5hYmxlIHRvIGZpbmQgY29tbWl0IEAkcm93X3JlZlswXSI7Ci0JCW15IEBidWZmZXIgPSA8JGNfZmg+OwotCQkkY29tbWl0X2J1ZmZlci0+c2V0X3RleHQoIkBidWZmZXIiKTsKLQkJY2xvc2UoJGNfZmgpOwotCQl9KTsKLQotbXkgJGZoOwotb3BlbigkZmgsICctfCcsICJnaXQgY2F0LWZpbGUgYmxvYiAkaGFzaDokZm4iKQotICBvciBkaWUgInVuYWJsZSB0byBvcGVuICRmbjogJCEiOwotCi13aGlsZSg8JGZoPikgewotICBjaG9tcDsKLSAgJGZpbGV2aWV3LT57ZGF0YX0tPlskLl0gPSBbJ0hFQUQnLCAiJGZuOiQuIiwgJF9dOwotfQotCi1teSAkYmxhbWU7Ci1vcGVuKCRibGFtZSwgJy18JywgcXcoZ2l0IGJsYW1lIC0taW5jcmVtZW50YWwgLS0pLCAkZm4sICRoYXNoKQotICAgIG9yIGRpZSAiY2Fubm90IHN0YXJ0IGdpdC1ibGFtZSAkZm4iOwotCi1HbGliOjpJTy0+YWRkX3dhdGNoKGZpbGVubygkYmxhbWUpLCAnaW4nLCBcJnJlYWRfYmxhbWVfbGluZSk7Ci0KLSR3aW5kb3ctPnNob3dfYWxsOwotR3RrMi0+bWFpbjsKLWV4aXQgMDsKLQotbXkgJWNvbW1pdGluZm8gPSAoKTsKLQotc3ViIGZsdXNoX2JsYW1lX2xpbmUgewotCW15ICgkYXR0cikgPSBAXzsKLQotCXJldHVybiB1bmxlc3MgZGVmaW5lZCAkYXR0cjsKLQotCW15ICgkY29tbWl0LCAkc19sbm8sICRsbm8sICRjbnQpID0KLQkgICAgQHskYXR0cn17cXcoQ09NTUlUIFNfTE5PIExOTyBDTlQpfTsKLQotCW15ICgkZmlsZW5hbWUsICRhdXRob3IsICRhdXRob3JfdGltZSwgJGF1dGhvcl90eikgPQotCSAgICBAeyRjb21taXRpbmZveyRjb21taXR9fXtxdyhGSUxFTkFNRSBBVVRIT1IgQVVUSE9SLVRJTUUgQVVUSE9SLVRaKX07Ci0JbXkgJGluZm8gPSAkYXV0aG9yIC4gJyAnIC4gZm9ybWF0X3RpbWUoJGF1dGhvcl90aW1lLCAkYXV0aG9yX3R6KTsKLQotCWZvcihteSAkaSA9IDA7ICRpIDwgJGNudDsgJGkrKykgewotCQlAeyRmaWxldmlldy0+e2RhdGF9LT5bJGxubyskaS0xXX1bMCwxLDJdID0KLQkJKHN1YnN0cigkY29tbWl0LCAwLCA4KSwgJGZpbGVuYW1lIC4gJzonIC4gKCRzX2xubyskaSkpOwotCX0KLX0KLQotbXkgJGJ1ZjsKLW15ICRjdXJyZW50Owotc3ViIHJlYWRfYmxhbWVfbGluZSB7Ci0KLQlteSAkciA9IHN5c3JlYWQoJGJsYW1lLCAkYnVmLCAxMDI0LCBsZW5ndGgoJGJ1ZikpOwotCWRpZSAiSS9PIGVycm9yIiB1bmxlc3MgZGVmaW5lZCAkcjsKLQotCWlmICgkciA9PSAwKSB7Ci0JCWZsdXNoX2JsYW1lX2xpbmUoJGN1cnJlbnQpOwotCQkkY3VycmVudCA9IHVuZGVmOwotCQlyZXR1cm4gMDsKLQl9Ci0KLQl3aGlsZSAoJGJ1ZiA9fiBzLyhbXlxuXSopXG4vLykgewotCQlteSAkbGluZSA9ICQxOwotCi0JCWlmICgoJGNvbW1pdCwgJHNfbG5vLCAkbG5vLCAkY250KSA9Ci0JCSAgICAoJGxpbmUgPX4gL14oWzAtOWEtZl17NDB9KSAoXGQrKSAoXGQrKSAoXGQrKSQvKSkgewotCQkJZmx1c2hfYmxhbWVfbGluZSgkY3VycmVudCk7Ci0JCQkkY3VycmVudCA9ICt7Ci0JCQkJQ09NTUlUID0+ICQxLAotCQkJCVNfTE5PID0+ICQyLAotCQkJCUxOTyA9PiAkMywKLQkJCQlDTlQgPT4gJDQsCi0JCQl9OwotCQkJbmV4dDsKLQkJfQotCi0JCSMgZXh0ZW5kZWQgYXR0cmlidXRlIHZhbHVlcwotCQlpZiAoJGxpbmUgPX4gL14oYXV0aG9yfGF1dGhvci1tYWlsfGF1dGhvci10aW1lfGF1dGhvci10enxjb21taXR0ZXJ8Y29tbWl0dGVyLW1haWx8Y29tbWl0dGVyLXRpbWV8Y29tbWl0dGVyLXR6fHN1bW1hcnl8ZmlsZW5hbWUpICguKikkLykgewotCQkJbXkgJGNvbW1pdCA9ICRjdXJyZW50LT57Q09NTUlUfTsKLQkJCSRjb21taXRpbmZveyRjb21taXR9e3VjKCQxKX0gPSAkMjsKLQkJCW5leHQ7Ci0JCX0KLQl9Ci0JcmV0dXJuIDE7Ci19Ci0KLXN1YiBmb3JtYXRfdGltZSB7Ci0gIG15ICR0aW1lID0gc2hpZnQ7Ci0gIG15ICR0eiA9IHNoaWZ0OwotCi0gIG15ICRtaW51dGVzID0gJHR6IDwgMCA/IDAtJHR6IDogJHR6OwotICAkbWludXRlcyA9ICgkbWludXRlcyAvIDEwMCkqNjAgKyAoJG1pbnV0ZXMgJSAxMDApOwotICAkbWludXRlcyA9ICR0eiA8IDAgPyAwLSRtaW51dGVzIDogJG1pbnV0ZXM7Ci0gICR0aW1lICs9ICRtaW51dGVzICogNjA7Ci0gIG15IEB0ID0gZ210aW1lKCR0aW1lKTsKLSAgcmV0dXJuIHNwcmludGYoJyUwNGQtJTAyZC0lMDJkICUwMmQ6JTAyZDolMDJkICVzJywKLQkJICR0WzVdICsgMTkwMCwgQHRbNCwzLDIsMSwwXSwgJHR6KTsKLX0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5weSBiL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5weQppbmRleCAzNmI1NjY1Li5iZWZhMGMzIDEwMDc1NQotLS0gYS9jb250cmliL2NpYWJvdC9jaWFib3QucHkKKysrIGIvY29udHJpYi9jaWFib3QvY2lhYm90LnB5CkBAIC03MCw3ICs3MCw3IEBACiAKICMgVGhlIHRlbXBsYXRlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIFhNTCBtZXNzYWdlcyB0byBDSUEuICBZb3UgY2FuIG1ha2UKICMgdmlzaWJsZSBjaGFuZ2VzIHRvIHRoZSBJUkMtYm90IG5vdGlmaWNhdGlvbiBsaW5lcyBieSBoYWNraW5nIHRoaXMuCi0jIFRoZSBkZWZhdWx0IHdpbGwgcHJvZHVjZSBhIG5vdGZpY2F0aW9uIGxpbmUgdGhhdCBsb29rcyBsaWtlIHRoaXM6CisjIFRoZSBkZWZhdWx0IHdpbGwgcHJvZHVjZSBhIG5vdGlmaWNhdGlvbiBsaW5lIHRoYXQgbG9va3MgbGlrZSB0aGlzOgogIwogIyAke3Byb2plY3R9OiAke2F1dGhvcn0gJHtyZXBvfToke2JyYW5jaH0gKiAke3Jldn0gJHtmaWxlc306ICR7bG9nbXNnfSAke3VybH0KICMKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5zaCBiL2NvbnRyaWIvY2lhYm90L2NpYWJvdC5zaAppbmRleCAzZmJiYzUzLi5kZmI3MWExIDEwMDc1NQotLS0gYS9jb250cmliL2NpYWJvdC9jaWFib3Quc2gKKysrIGIvY29udHJpYi9jaWFib3QvY2lhYm90LnNoCkBAIC0zOSw3ICszOSw3IEBACiAjICAgICAgIGRvbmUKICMKICMgVGhlIHJlYXNvbiBmb3IgdGhlIHRhYyBjYWxsIGlzIHRoYXQgZ2l0IHJldi1saXN0IGVtaXRzIGNvbW1pdHMgZnJvbQotIyBtb3N0IHJlY2VudCB0byBsZWFzdCAtIGJldHRlciB0byBzaGlwIG5vdGlmYWN0aW9ucyBmcm9tIG9sZGVzdCB0byBuZXdlc3QuCisjIG1vc3QgcmVjZW50IHRvIGxlYXN0IC0gYmV0dGVyIHRvIHNoaXAgbm90aWZpY2F0aW9ucyBmcm9tIG9sZGVzdCB0byBuZXdlc3QuCiAjCiAjIENvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFmZmVjdGluZyB0aGlzIHNjcmlwdDoKICMKQEAgLTY0LDcgKzY0LDcgQEAKICMgZG93bi4gSXQgaXMgdW5rbm93biB3aGV0aGVyIHRoaXMgaXMgc3RpbGwgYW4gaXNzdWUgaW4gMjAxMCwgYnV0CiAjIFhNTC1SUEMgd291bGQgYmUgYW5ub3lpbmcgdG8gZG8gZnJvbSBzaCBpbiBhbnkgY2FzZS4gKFhNTC1SUEMgZG9lcwogIyBoYXZlIHRoZSBhZHZhbnRhZ2UgdGhhdCBpdCBndWFyYW50ZWVzIG5vdGlmaWNhdGlvbiBvZiBtdWx0aXBsZSBjb21taXRzCi0jIHNocHBlZCBmcm9tIGFuIHVwZGF0ZSBpbiB0aGVpciBhY3R1YWwgb3JkZXIuKQorIyBzaGlwcGVkIGZyb20gYW4gdXBkYXRlIGluIHRoZWlyIGFjdHVhbCBvcmRlci4pCiAjCiAKICMgVGhlIHByb2plY3QgYXMga25vd24gdG8gQ0lBLiBZb3UgY2FuIHNldCB0aGlzIHdpdGggYSAtcCBvcHRpb24sCmRpZmYgLS1naXQgYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uYmFzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCmluZGV4IGVjZjU4ZTAuLjVkYTkyMGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCkBAIC0zMyw4ICszMyw2IEBACiAjIHJldHVybnMgbG9jYXRpb24gb2YgLmdpdCByZXBvCiBfX2dpdGRpciAoKQogewotCSMgTm90ZTogdGhpcyBmdW5jdGlvbiBpcyBkdXBsaWNhdGVkIGluIGdpdC1wcm9tcHQuc2gKLQkjIFdoZW4gdXBkYXRpbmcgaXQsIG1ha2Ugc3VyZSB5b3UgdXBkYXRlIHRoZSBvdGhlciBvbmUgdG8gbWF0Y2guCiAJaWYgWyAteiAiJHsxLX0iIF07IHRoZW4KIAkJaWYgWyAtbiAiJHtfX2dpdF9kaXItfSIgXTsgdGhlbgogCQkJZWNobyAiJF9fZ2l0X2RpciIKQEAgLTI1MiwxMDYgKzI1MCw1MCBAQAogCSMgc2luY2UgdGlsZGUgZXhwYW5zaW9uIGlzIG5vdCBhcHBsaWVkLgogCSMgVGhpcyBtZWFucyB0aGF0IENPTVBSRVBMWSB3aWxsIGJlIGVtcHR5IGFuZCBCYXNoIGRlZmF1bHQKIAkjIGNvbXBsZXRpb24gd2lsbCBiZSB1c2VkLgotCUNPTVBSRVBMWT0oJChjb21wZ2VuIC1QICIkezItfSIgLVcgIiQxIiAtLSAiJHszLSRjdXJ9IikpCisJX19naXRjb21wYWRkICIkMSIgIiR7Mi19IiAiJHszLSRjdXJ9IiAiIgogCi0JIyBUZWxsIEJhc2ggdGhhdCBjb21wc3BlYyBnZW5lcmF0ZXMgZmlsZW5hbWVzLgotCWNvbXBvcHQgLW8gZmlsZW5hbWVzIDI+L2Rldi9udWxsCisJIyB1c2UgYSBoYWNrIHRvIGVuYWJsZSBmaWxlIG1vZGUgaW4gYmFzaCA8IDQKKwljb21wb3B0IC1vIGZpbGVuYW1lcyArbyBub3NwYWNlIDI+L2Rldi9udWxsIHx8CisJY29tcGdlbiAtZiAvbm9uLWV4aXN0aW5nLWRpci8gPiAvZGV2L251bGwKIH0KIAotX19naXRfaW5kZXhfZmlsZV9saXN0X2ZpbHRlcl9jb21wYXQgKCkKLXsKLQlsb2NhbCBwYXRoCi0KLQl3aGlsZSByZWFkIC1yIHBhdGg7IGRvCi0JCWNhc2UgIiRwYXRoIiBpbgotCQk/Ki8qKSBlY2hvICIke3BhdGglJS8qfS8iIDs7Ci0JCSopIGVjaG8gIiRwYXRoIiA7OwotCQllc2FjCi0JZG9uZQotfQotCi1fX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyX2Jhc2ggKCkKLXsKLQlsb2NhbCBwYXRoCi0KLQl3aGlsZSByZWFkIC1yIHBhdGg7IGRvCi0JCWNhc2UgIiRwYXRoIiBpbgotCQk/Ki8qKQotCQkJIyBYWFggaWYgd2UgYXBwZW5kIGEgc2xhc2ggdG8gZGlyZWN0b3J5IG5hbWVzIHdoZW4gdXNpbmcKLQkJCSMgYGNvbXBvcHQgLW8gZmlsZW5hbWVzYCwgQmFzaCB3aWxsIGFwcGVuZCBhbm90aGVyIHNsYXNoLgotCQkJIyBUaGlzIGlzIHByZXR0eSBzdHVwaWQsIGFuZCB0aGlzIHRoZSByZWFzb24gd2h5IHdlIGhhdmUgdG8KLQkJCSMgZGVmaW5lIGEgY29tcGF0aWJsZSB2ZXJzaW9uIGZvciB0aGlzIGZ1bmN0aW9uLgotCQkJZWNobyAiJHtwYXRoJSUvKn0iIDs7Ci0JCSopCi0JCQllY2hvICIkcGF0aCIgOzsKLQkJZXNhYwotCWRvbmUKLX0KLQotIyBQcm9jZXNzIHBhdGggbGlzdCByZXR1cm5lZCBieSAibHMtZmlsZXMiIGFuZCAiZGlmZi1pbmRleCAtLW5hbWUtb25seSIKLSMgY29tbWFuZHMsIGluIG9yZGVyIHRvIGxpc3Qgb25seSBmaWxlIG5hbWVzIHJlbGF0aXZlIHRvIGEgc3BlY2lmaWVkCi0jIGRpcmVjdG9yeSwgYW5kIGFwcGVuZCBhIHNsYXNoIHRvIGRpcmVjdG9yeSBuYW1lcy4KLV9fZ2l0X2luZGV4X2ZpbGVfbGlzdF9maWx0ZXIgKCkKLXsKLQkjIERlZmF1bHQgdG8gQmFzaCA+PSA0LngKLQlfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyX2Jhc2gKLX0KLQotIyBFeGVjdXRlIGdpdCBscy1maWxlcywgcmV0dXJuaW5nIHBhdGhzIHJlbGF0aXZlIHRvIHRoZSBkaXJlY3RvcnkKLSMgc3BlY2lmaWVkIGluIHRoZSBmaXJzdCBhcmd1bWVudCwgYW5kIHVzaW5nIHRoZSBvcHRpb25zIHNwZWNpZmllZCBpbgotIyB0aGUgc2Vjb25kIGFyZ3VtZW50LgorIyBFeGVjdXRlICdnaXQgbHMtZmlsZXMnLCB1bmxlc3MgdGhlIC0tY29tbWl0dGFibGUgb3B0aW9uIGlzIHNwZWNpZmllZCwgaW4KKyMgd2hpY2ggY2FzZSBpdCBydW5zICdnaXQgZGlmZi1pbmRleCcgdG8gZmluZCBvdXQgdGhlIGZpbGVzIHRoYXQgY2FuIGJlCisjIGNvbW1pdHRlZC4gIEl0IHJldHVybiBwYXRocyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBpbiB0aGUgZmlyc3QKKyMgYXJndW1lbnQsIGFuZCB1c2luZyB0aGUgb3B0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIHNlY29uZCBhcmd1bWVudC4KIF9fZ2l0X2xzX2ZpbGVzX2hlbHBlciAoKQogewogCSgKIAkJdGVzdCAtbiAiJHtDRFBBVEgrc2V0fSIgJiYgdW5zZXQgQ0RQQVRICi0JCSMgTk9URTogJDIgaXMgbm90IHF1b3RlZCBpbiBvcmRlciB0byBzdXBwb3J0IG11bHRpcGxlIG9wdGlvbnMKLQkJY2QgIiQxIiAmJiBnaXQgbHMtZmlsZXMgLS1leGNsdWRlLXN0YW5kYXJkICQyCisJCWNkICIkMSIKKwkJaWYgWyAiJDIiID09ICItLWNvbW1pdHRhYmxlIiBdOyB0aGVuCisJCQlnaXQgZGlmZi1pbmRleCAtLW5hbWUtb25seSAtLXJlbGF0aXZlIEhFQUQKKwkJZWxzZQorCQkJIyBOT1RFOiAkMiBpcyBub3QgcXVvdGVkIGluIG9yZGVyIHRvIHN1cHBvcnQgbXVsdGlwbGUgb3B0aW9ucworCQkJZ2l0IGxzLWZpbGVzIC0tZXhjbHVkZS1zdGFuZGFyZCAkMgorCQlmaQogCSkgMj4vZGV2L251bGwKIH0KIAogCi0jIEV4ZWN1dGUgZ2l0IGRpZmYtaW5kZXgsIHJldHVybmluZyBwYXRocyByZWxhdGl2ZSB0byB0aGUgZGlyZWN0b3J5Ci0jIHNwZWNpZmllZCBpbiB0aGUgZmlyc3QgYXJndW1lbnQsIGFuZCB1c2luZyB0aGUgdHJlZSBvYmplY3QgaWQKLSMgc3BlY2lmaWVkIGluIHRoZSBzZWNvbmQgYXJndW1lbnQuCi1fX2dpdF9kaWZmX2luZGV4X2hlbHBlciAoKQotewotCSgKLQkJdGVzdCAtbiAiJHtDRFBBVEgrc2V0fSIgJiYgdW5zZXQgQ0RQQVRICi0JCWNkICIkMSIgJiYgZ2l0IGRpZmYtaW5kZXggLS1uYW1lLW9ubHkgLS1yZWxhdGl2ZSAiJDIiCi0JKSAyPi9kZXYvbnVsbAotfQotCiAjIF9fZ2l0X2luZGV4X2ZpbGVzIGFjY2VwdHMgMSBvciAyIGFyZ3VtZW50czoKICMgMTogT3B0aW9ucyB0byBwYXNzIHRvIGxzLWZpbGVzIChyZXF1aXJlZCkuCi0jICAgIFN1cHBvcnRlZCBvcHRpb25zIGFyZSAtLWNhY2hlZCwgLS1tb2RpZmllZCwgLS1kZWxldGVkLCAtLW90aGVycywKLSMgICAgYW5kIC0tZGlyZWN0b3J5LgogIyAyOiBBIGRpcmVjdG9yeSBwYXRoIChvcHRpb25hbCkuCiAjICAgIElmIHByb3ZpZGVkLCBvbmx5IGZpbGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSBhcmUgbGlzdGVkLgogIyAgICBTdWIgZGlyZWN0b3JpZXMgYXJlIG5ldmVyIHJlY3Vyc2VkLiAgUGF0aCBtdXN0IGhhdmUgYSB0cmFpbGluZwogIyAgICBzbGFzaC4KIF9fZ2l0X2luZGV4X2ZpbGVzICgpCiB7Ci0JbG9jYWwgZGlyPSIkKF9fZ2l0ZGlyKSIgcm9vdD0iJHsyLS59IgorCWxvY2FsIGRpcj0iJChfX2dpdGRpcikiIHJvb3Q9IiR7Mi0ufSIgZmlsZQogCiAJaWYgWyAtZCAiJGRpciIgXTsgdGhlbgotCQlfX2dpdF9sc19maWxlc19oZWxwZXIgIiRyb290IiAiJDEiIHwgX19naXRfaW5kZXhfZmlsZV9saXN0X2ZpbHRlciB8Ci0JCQlzb3J0IHwgdW5pcQotCWZpCi19Ci0KLSMgX19naXRfZGlmZl9pbmRleF9maWxlcyBhY2NlcHRzIDEgb3IgMiBhcmd1bWVudHM6Ci0jIDEpIFRoZSBpZCBvZiBhIHRyZWUgb2JqZWN0LgotIyAyKSBBIGRpcmVjdG9yeSBwYXRoIChvcHRpb25hbCkuCi0jICAgIElmIHByb3ZpZGVkLCBvbmx5IGZpbGVzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeSBhcmUgbGlzdGVkLgotIyAgICBTdWIgZGlyZWN0b3JpZXMgYXJlIG5ldmVyIHJlY3Vyc2VkLiAgUGF0aCBtdXN0IGhhdmUgYSB0cmFpbGluZwotIyAgICBzbGFzaC4KLV9fZ2l0X2RpZmZfaW5kZXhfZmlsZXMgKCkKLXsKLQlsb2NhbCBkaXI9IiQoX19naXRkaXIpIiByb290PSIkezItLn0iCi0KLQlpZiBbIC1kICIkZGlyIiBdOyB0aGVuCi0JCV9fZ2l0X2RpZmZfaW5kZXhfaGVscGVyICIkcm9vdCIgIiQxIiB8IF9fZ2l0X2luZGV4X2ZpbGVfbGlzdF9maWx0ZXIgfAotCQkJc29ydCB8IHVuaXEKKwkJX19naXRfbHNfZmlsZXNfaGVscGVyICIkcm9vdCIgIiQxIiB8CisJCXdoaWxlIHJlYWQgLXIgZmlsZTsgZG8KKwkJCWNhc2UgIiRmaWxlIiBpbgorCQkJPyovKikgZWNobyAiJHtmaWxlJSUvKn0iIDs7CisJCQkqKSBlY2hvICIkZmlsZSIgOzsKKwkJCWVzYWMKKwkJZG9uZSB8IHNvcnQgfCB1bmlxCiAJZmkKIH0KIApAQCAtNDI3LDE0ICszNjksOCBAQAogCQlkb25lCiAJCTs7CiAJKikKLQkJZ2l0IGxzLXJlbW90ZSAiJGRpciIgSEVBRCBPUklHX0hFQUQgJ3JlZnMvdGFncy8qJyAncmVmcy9oZWFkcy8qJyAncmVmcy9yZW1vdGVzLyonIDI+L2Rldi9udWxsIHwgXAotCQl3aGlsZSByZWFkIC1yIGhhc2ggaTsgZG8KLQkJCWNhc2UgIiRpIiBpbgotCQkJKl57fSkgOzsKLQkJCXJlZnMvKikgZWNobyAiJHtpI3JlZnMvKi99IiA7OwotCQkJKikgZWNobyAiJGkiIDs7Ci0JCQllc2FjCi0JCWRvbmUKKwkJZWNobyAiSEVBRCIKKwkJZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0iJShyZWZuYW1lOnNob3J0KSIgLS0gInJlZnMvcmVtb3Rlcy8kZGlyLyIgfCBzZWQgLWUgInMjXiRkaXIvIyMiCiAJCTs7CiAJZXNhYwogfQpAQCAtNTUyLDQ0ICs0ODgsMjMgQEAKIH0KIAogCi0jIF9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgcmVxdWlyZXMgMSBhcmd1bWVudDogdGhlIG9wdGlvbnMgdG8gcGFzcyB0bwotIyBscy1maWxlCisjIF9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgcmVxdWlyZXMgMSBhcmd1bWVudDoKKyMgMTogdGhlIG9wdGlvbnMgdG8gcGFzcyB0byBscy1maWxlCisjCisjIFRoZSBleGNlcHRpb24gaXMgLS1jb21taXR0YWJsZSwgd2hpY2ggZmluZHMgdGhlIGZpbGVzIGFwcHJvcHJpYXRlIGNvbW1pdC4KIF9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgKCkKIHsKLQlsb2NhbCBwZnggY3VyXz0iJGN1ciIKKwlsb2NhbCBwZng9IiIgY3VyXz0iJGN1ciIKIAogCWNhc2UgIiRjdXJfIiBpbgogCT8qLyopCiAJCXBmeD0iJHtjdXJfJS8qfSIKIAkJY3VyXz0iJHtjdXJfIyMqL30iCiAJCXBmeD0iJHtwZnh9LyIKLQotCQlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9pbmRleF9maWxlcyAiJDEiICIkcGZ4IikiICIkcGZ4IiAiJGN1cl8iCi0JCTs7Ci0JKikKLQkJX19naXRjb21wX2ZpbGUgIiQoX19naXRfaW5kZXhfZmlsZXMgIiQxIikiICIiICIkY3VyXyIKIAkJOzsKIAllc2FjCi19CiAKLSMgX19naXRfY29tcGxldGVfZGlmZl9pbmRleF9maWxlIHJlcXVpcmVzIDEgYXJndW1lbnQ6IHRoZSBpZCBvZiBhIHRyZWUKLSMgb2JqZWN0Ci1fX2dpdF9jb21wbGV0ZV9kaWZmX2luZGV4X2ZpbGUgKCkKLXsKLQlsb2NhbCBwZnggY3VyXz0iJGN1ciIKLQotCWNhc2UgIiRjdXJfIiBpbgotCT8qLyopCi0JCXBmeD0iJHtjdXJfJS8qfSIKLQkJY3VyXz0iJHtjdXJfIyMqL30iCi0JCXBmeD0iJHtwZnh9LyIKLQotCQlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9kaWZmX2luZGV4X2ZpbGVzICIkMSIgIiRwZngiKSIgIiRwZngiICIkY3VyXyIKLQkJOzsKLQkqKQotCQlfX2dpdGNvbXBfZmlsZSAiJChfX2dpdF9kaWZmX2luZGV4X2ZpbGVzICIkMSIpIiAiIiAiJGN1cl8iCi0JCTs7Ci0JZXNhYworCV9fZ2l0Y29tcF9maWxlICIkKF9fZ2l0X2luZGV4X2ZpbGVzICIkMSIgIiRwZngiKSIgIiRwZngiICIkY3VyXyIKIH0KIAogX19naXRfY29tcGxldGVfZmlsZSAoKQpAQCAtNzMzLDYgKzY0OCw3IEBACiAJCWNhdC1maWxlKSAgICAgICAgIDogcGx1bWJpbmc7OwogCQljaGVjay1hdHRyKSAgICAgICA6IHBsdW1iaW5nOzsKIAkJY2hlY2staWdub3JlKSAgICAgOiBwbHVtYmluZzs7CisJCWNoZWNrLW1haWxtYXApICAgIDogcGx1bWJpbmc7OwogCQljaGVjay1yZWYtZm9ybWF0KSA6IHBsdW1iaW5nOzsKIAkJY2hlY2tvdXQtaW5kZXgpICAgOiBwbHVtYmluZzs7CiAJCWNvbW1pdC10cmVlKSAgICAgIDogcGx1bWJpbmc7OwpAQCAtMTIxMyw3ICsxMTI5LDcgQEAKIAllc2FjCiAKIAlpZiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC0tcXVpZXQgSEVBRCA+L2Rldi9udWxsOyB0aGVuCi0JCV9fZ2l0X2NvbXBsZXRlX2RpZmZfaW5kZXhfZmlsZSAiSEVBRCIKKwkJX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSAiLS1jb21taXR0YWJsZSIKIAllbHNlCiAJCSMgVGhpcyBpcyB0aGUgZmlyc3QgY29tbWl0CiAJCV9fZ2l0X2NvbXBsZXRlX2luZGV4X2ZpbGUgIi0tY2FjaGVkIgpAQCAtMTI5NCw3ICsxMjEwLDcgQEAKIAkJcmV0dXJuCiAJCTs7CiAJZXNhYwotCV9fZ2l0X2NvbXBsZXRlX2ZpbGUKKwlfX2dpdF9jb21wbGV0ZV9yZXZsaXN0X2ZpbGUKIH0KIAogX19naXRfZmV0Y2hfb3B0aW9ucz0iCkBAIC0yMDQyLDcgKzE5NTgsNiBAQAogCQljb3JlLmZpbGVNb2RlCiAJCWNvcmUuZnN5bmNvYmplY3RmaWxlcwogCQljb3JlLmdpdFByb3h5Ci0JCWNvcmUuaWdub3JlQ3lnd2luRlNUcmlja3MKIAkJY29yZS5pZ25vcmVTdGF0CiAJCWNvcmUuaWdub3JlY2FzZQogCQljb3JlLmxvZ0FsbFJlZlVwZGF0ZXMKQEAgLTIzNjAsNyArMjI3NSw3IEBACiAJCXJldHVybgogCQk7OwogCWVzYWMKLQlfX2dpdF9jb21wbGV0ZV9maWxlCisJX19naXRfY29tcGxldGVfcmV2bGlzdF9maWxlCiB9CiAKIF9naXRfc2hvd19icmFuY2ggKCkKQEAgLTI1NzUsOSArMjQ5MCwxMCBAQAogCQlpPSIke3dvcmRzW2NdfSIKIAkJY2FzZSAiJGkiIGluCiAJCS0tZ2l0LWRpcj0qKSBfX2dpdF9kaXI9IiR7aSMtLWdpdC1kaXI9fSIgOzsKKwkJLS1naXQtZGlyKSAgICgoYysrKSkgOyBfX2dpdF9kaXI9IiR7d29yZHNbY119IiA7OwogCQktLWJhcmUpICAgICAgX19naXRfZGlyPSIuIiA7OwogCQktLWhlbHApIGNvbW1hbmQ9ImhlbHAiOyBicmVhayA7OwotCQktYykgYz0kKCgrK2MpKSA7OworCQktY3wtLXdvcmstdHJlZXwtLW5hbWVzcGFjZSkgKChjKyspKSA7OwogCQktKikgOzsKIAkJKikgY29tbWFuZD0iJGkiOyBicmVhayA7OwogCQllc2FjCkBAIC0yNTk1LDYgKzI1MTEsNyBAQAogCQkJLS1leGVjLXBhdGgKIAkJCS0tZXhlYy1wYXRoPQogCQkJLS1odG1sLXBhdGgKKwkJCS0tbWFuLXBhdGgKIAkJCS0taW5mby1wYXRoCiAJCQktLXdvcmstdHJlZT0KIAkJCS0tbmFtZXNwYWNlPQpAQCAtMjY4OSwzNSArMjYwNiwxOSBAQAogCQljb21wYWRkIC1RIC1wICIkezItfSIgLWYgLS0gJHs9MX0gJiYgX3JldD0wCiAJfQogCi0JX19naXRfenNoX2hlbHBlciAoKQotCXsKLQkJZW11bGF0ZSAtTCBrc2gKLQkJbG9jYWwgY3VyIGN3b3JkIHByZXYKLQkJY3VyPSR7d29yZHNbQ1VSUkVOVC0xXX0KLQkJcHJldj0ke3dvcmRzW0NVUlJFTlQtMl19Ci0JCWxldCBjd29yZD1DVVJSRU5ULTEKLQkJX18ke3NlcnZpY2V9X21haW4KLQl9Ci0KIAlfZ2l0ICgpCiAJewotCQllbXVsYXRlIC1MIHpzaAotCQlsb2NhbCBfcmV0PTEKLQkJX19naXRfenNoX2hlbHBlcgotCQlsZXQgX3JldCAmJiBfZGVmYXVsdCAtUyAnJyAmJiBfcmV0PTAKKwkJbG9jYWwgX3JldD0xIGN1ciBjd29yZCBwcmV2CisJCWN1cj0ke3dvcmRzW0NVUlJFTlRdfQorCQlwcmV2PSR7d29yZHNbQ1VSUkVOVC0xXX0KKwkJbGV0IGN3b3JkPUNVUlJFTlQtMQorCQllbXVsYXRlIGtzaCAtYyBfXyR7c2VydmljZX1fbWFpbgorCQlsZXQgX3JldCAmJiBfZGVmYXVsdCAmJiBfcmV0PTAKIAkJcmV0dXJuIF9yZXQKIAl9CiAKIAljb21wZGVmIF9naXQgZ2l0IGdpdGsKIAlyZXR1cm4KLWVsaWYgW1sgLW4gJHtCQVNIX1ZFUlNJT04tfSBdXTsgdGhlbgotCWlmICgoJHtCQVNIX1ZFUlNJTkZPWzBdfSA8IDQpKTsgdGhlbgotCQkjIGNvbXBvcHQgaXMgbm90IHN1cHBvcnRlZAotCQlfX2dpdF9pbmRleF9maWxlX2xpc3RfZmlsdGVyICgpCi0JCXsKLQkJCV9fZ2l0X2luZGV4X2ZpbGVfbGlzdF9maWx0ZXJfY29tcGF0Ci0JCX0KLQlmaQogZmkKIAogX19naXRfZnVuY193cmFwICgpCmRpZmYgLS1naXQgYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uenNoIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1jb21wbGV0aW9uLnpzaAppbmRleCAyNTY1ZDJlLi5mYWM1ZTcxIDEwMDY0NAotLS0gYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uenNoCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi56c2gKQEAgLTQsMTggKzQsMTcgQEAKICMKICMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgRmVsaXBlIENvbnRyZXJhcyA8ZmVsaXBlLmNvbnRyZXJhc0BnbWFpbC5jb20+CiAjCi0jIFlvdSBuZWVkIGdpdCdzIGJhc2ggY29tcGxldGlvbiBzY3JpcHQgaW5zdGFsbGVkIHNvbWV3aGVyZSwgYnkgZGVmYXVsdCBvbiB0aGUKLSMgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcyBzY3JpcHQuCisjIFlvdSBuZWVkIGdpdCdzIGJhc2ggY29tcGxldGlvbiBzY3JpcHQgaW5zdGFsbGVkIHNvbWV3aGVyZSwgYnkgZGVmYXVsdCBpdAorIyB3b3VsZCBiZSB0aGUgbG9jYXRpb24gYmFzaC1jb21wbGV0aW9uIHVzZXMuCiAjCi0jIElmIHlvdXIgc2NyaXB0IGlzIG9uIH4vLmdpdC1jb21wbGV0aW9uLnNoIGluc3RlYWQsIHlvdSBjYW4gY29uZmlndXJlIGl0IG9uCi0jIHlvdXIgfi8uenNocmM6CisjIElmIHlvdXIgc2NyaXB0IGlzIHNvbWV3aGVyZSBlbHNlLCB5b3UgY2FuIGNvbmZpZ3VyZSBpdCBvbiB5b3VyIH4vLnpzaHJjOgogIwogIyAgenN0eWxlICc6Y29tcGxldGlvbjoqOio6Z2l0OionIHNjcmlwdCB+Ly5naXQtY29tcGxldGlvbi5zaAogIwotIyBUaGUgcmVjb21tZW5kZWQgd2F5IHRvIGluc3RhbGwgdGhpcyBzY3JpcHQgaXMgdG8gY29weSB0bwotIyAnfi8uenNoL2NvbXBsZXRpb24vX2dpdCcsIGFuZCB0aGVuIGFkZCB0aGUgZm9sbG93aW5nIHRvIHlvdXIgfi8uenNocmMgZmlsZToKKyMgVGhlIHJlY29tbWVuZGVkIHdheSB0byBpbnN0YWxsIHRoaXMgc2NyaXB0IGlzIHRvIGNvcHkgdG8gJ34vLnpzaC9fZ2l0JywgYW5kCisjIHRoZW4gYWRkIHRoZSBmb2xsb3dpbmcgdG8geW91ciB+Ly56c2hyYyBmaWxlOgogIwotIyAgZnBhdGg9KH4vLnpzaC9jb21wbGV0aW9uICRmcGF0aCkKKyMgIGZwYXRoPSh+Ly56c2ggJGZwYXRoKQogCiBjb21wbGV0ZSAoKQogewpAQCAtMjcsNyArMjYsMTkgQEAKIAl6c3R5bGUgJzpjb21wbGV0aW9uOio6KjpnaXQ6KicgdGFnLW9yZGVyICdjb21tb24tY29tbWFuZHMnCiAKIHpzdHlsZSAtcyAiOmNvbXBsZXRpb246KjoqOmdpdDoqIiBzY3JpcHQgc2NyaXB0Ci10ZXN0IC16ICIkc2NyaXB0IiAmJiBzY3JpcHQ9IiQoZGlybmFtZSAke2Z1bmNzb3VyY2V0cmFjZVsxXSU6Kn0pIi9naXQtY29tcGxldGlvbi5iYXNoCitpZiBbIC16ICIkc2NyaXB0IiBdOyB0aGVuCisJbG9jYWwgLWEgbG9jYXRpb25zCisJbG9jYWwgZQorCWxvY2F0aW9ucz0oCisJCScvZXRjL2Jhc2hfY29tcGxldGlvbi5kL2dpdCcgIyBmZWRvcmEsIG9sZCBkZWJpYW4KKwkJJy91c3Ivc2hhcmUvYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL2dpdCcgIyBhcmNoLCB1YnVudHUsIG5ldyBkZWJpYW4KKwkJJy91c3Ivc2hhcmUvYmFzaC1jb21wbGV0aW9uL2dpdCcgIyBnZW50b28KKwkJJChkaXJuYW1lICR7ZnVuY3NvdXJjZXRyYWNlWzFdJToqfSkvZ2l0LWNvbXBsZXRpb24uYmFzaAorCQkpCisJZm9yIGUgaW4gJGxvY2F0aW9uczsgZG8KKwkJdGVzdCAtZiAkZSAmJiBzY3JpcHQ9IiRlIiAmJiBicmVhaworCWRvbmUKK2ZpCiBaU0hfVkVSU0lPTj0nJyAuICIkc2NyaXB0IgogCiBfX2dpdGNvbXAgKCkKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtcHJvbXB0LnNoIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKaW5kZXggNTRlNDgyOS4uYTgxZWY1YSAxMDA2NDQKLS0tIGEvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKKysrIGIvY29udHJpYi9jb21wbGV0aW9uL2dpdC1wcm9tcHQuc2gKQEAgLTMsNyArMyw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNiwyMDA3IFNoYXduIE8uIFBlYXJjZSA8c3BlYXJjZUBzcGVhcmNlLm9yZz4KICMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIuMC4KICMKLSMgVGhpcyBzY3JpcHQgYWxsb3dzIHlvdSB0byBzZWUgdGhlIGN1cnJlbnQgYnJhbmNoIGluIHlvdXIgcHJvbXB0LgorIyBUaGlzIHNjcmlwdCBhbGxvd3MgeW91IHRvIHNlZSByZXBvc2l0b3J5IHN0YXR1cyBpbiB5b3VyIHByb21wdC4KICMKICMgVG8gZW5hYmxlOgogIwpAQCAtMTMsMjMgKzEzLDI3IEBACiAjICAgIDNhKSBDaGFuZ2UgeW91ciBQUzEgdG8gY2FsbCBfX2dpdF9wczEgYXMKICMgICAgICAgIGNvbW1hbmQtc3Vic3RpdHV0aW9uOgogIyAgICAgICAgQmFzaDogUFMxPSdbXHVAXGggXFckKF9fZ2l0X3BzMSAiICglcykiKV1cJCAnCi0jICAgICAgICBaU0g6ICBQUzE9J1slbkAlbSAlYyQoX19naXRfcHMxICIgKCVzKSIpXVwkICcKKyMgICAgICAgIFpTSDogIHNldG9wdCBQUk9NUFRfU1VCU1QgOyBQUzE9J1slbkAlbSAlYyQoX19naXRfcHMxICIgKCVzKSIpXVwkICcKICMgICAgICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudCB3aWxsIGJlIHVzZWQgYXMgZm9ybWF0IHN0cmluZy4KLSMgICAgM2IpIEFsdGVybmF0aXZlbHksIGlmIHlvdSBhcmUgdXNpbmcgYmFzaCwgX19naXRfcHMxIGNhbiBiZQotIyAgICAgICAgdXNlZCBmb3IgUFJPTVBUX0NPTU1BTkQgd2l0aCB0d28gcGFyYW1ldGVycywgPHByZT4gYW5kCi0jICAgICAgICA8cG9zdD4sIHdoaWNoIGFyZSBzdHJpbmdzIHlvdSB3b3VsZCBwdXQgaW4gJFBTMSBiZWZvcmUKLSMgICAgICAgIGFuZCBhZnRlciB0aGUgc3RhdHVzIHN0cmluZyBnZW5lcmF0ZWQgYnkgdGhlIGdpdC1wcm9tcHQKLSMgICAgICAgIG1hY2hpbmVyeS4gIGUuZy4KLSMgICAgICAgICAgIFBST01QVF9DT01NQU5EPSdfX2dpdF9wczEgIlx1QFxoOlx3IiAiXFxcJCAiJwotIyAgICAgICAgd2lsbCBzaG93IHVzZXJuYW1lLCBhdC1zaWduLCBob3N0LCBjb2xvbiwgY3dkLCB0aGVuCi0jICAgICAgICB2YXJpb3VzIHN0YXR1cyBzdHJpbmcsIGZvbGxvd2VkIGJ5IGRvbGxhciBhbmQgU1AsIGFzCi0jICAgICAgICB5b3VyIHByb21wdC4KKyMgICAgM2IpIEFsdGVybmF0aXZlbHksIGZvciBhIHNsaWdodGx5IGZhc3RlciBwcm9tcHQsIF9fZ2l0X3BzMSBjYW4KKyMgICAgICAgIGJlIHVzZWQgZm9yIFBST01QVF9DT01NQU5EIGluIEJhc2ggb3IgZm9yIHByZWNtZCgpIGluIFpzaAorIyAgICAgICAgd2l0aCB0d28gcGFyYW1ldGVycywgPHByZT4gYW5kIDxwb3N0Piwgd2hpY2ggYXJlIHN0cmluZ3MKKyMgICAgICAgIHlvdSB3b3VsZCBwdXQgaW4gJFBTMSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBzdGF0dXMgc3RyaW5nCisjICAgICAgICBnZW5lcmF0ZWQgYnkgdGhlIGdpdC1wcm9tcHQgbWFjaGluZXJ5LiAgZS5nLgorIyAgICAgICAgQmFzaDogUFJPTVBUX0NPTU1BTkQ9J19fZ2l0X3BzMSAiXHVAXGg6XHciICJcXFwkICInCisjICAgICAgICAgIHdpbGwgc2hvdyB1c2VybmFtZSwgYXQtc2lnbiwgaG9zdCwgY29sb24sIGN3ZCwgdGhlbgorIyAgICAgICAgICB2YXJpb3VzIHN0YXR1cyBzdHJpbmcsIGZvbGxvd2VkIGJ5IGRvbGxhciBhbmQgU1AsIGFzCisjICAgICAgICAgIHlvdXIgcHJvbXB0LgorIyAgICAgICAgWlNIOiAgcHJlY21kICgpIHsgX19naXRfcHMxICIlbiIgIjolfiQgIiAifCVzIiB9CisjICAgICAgICAgIHdpbGwgc2hvdyB1c2VybmFtZSwgcGlwZSwgdGhlbiB2YXJpb3VzIHN0YXR1cyBzdHJpbmcsCisjICAgICAgICAgIGZvbGxvd2VkIGJ5IGNvbG9uLCBjd2QsIGRvbGxhciBhbmQgU1AsIGFzIHlvdXIgcHJvbXB0LgogIyAgICAgICAgT3B0aW9uYWxseSwgeW91IGNhbiBzdXBwbHkgYSB0aGlyZCBhcmd1bWVudCB3aXRoIGEgcHJpbnRmCiAjICAgICAgICBmb3JtYXQgc3RyaW5nIHRvIGZpbmV0dW5lIHRoZSBvdXRwdXQgb2YgdGhlIGJyYW5jaCBzdGF0dXMKICMKLSMgVGhlIGFyZ3VtZW50IHRvIF9fZ2l0X3BzMSB3aWxsIGJlIGRpc3BsYXllZCBvbmx5IGlmIHlvdSBhcmUgY3VycmVudGx5Ci0jIGluIGEgZ2l0IHJlcG9zaXRvcnkuICBUaGUgJXMgdG9rZW4gd2lsbCBiZSB0aGUgbmFtZSBvZiB0aGUgY3VycmVudAotIyBicmFuY2guCisjIFRoZSByZXBvc2l0b3J5IHN0YXR1cyB3aWxsIGJlIGRpc3BsYXllZCBvbmx5IGlmIHlvdSBhcmUgY3VycmVudGx5IGluIGEKKyMgZ2l0IHJlcG9zaXRvcnkuIFRoZSAlcyB0b2tlbiBpcyB0aGUgcGxhY2Vob2xkZXIgZm9yIHRoZSBzaG93biBzdGF0dXMuCisjCisjIFRoZSBwcm9tcHQgc3RhdHVzIGFsd2F5cyBpbmNsdWRlcyB0aGUgY3VycmVudCBicmFuY2ggbmFtZS4KICMKICMgSW4gYWRkaXRpb24sIGlmIHlvdSBzZXQgR0lUX1BTMV9TSE9XRElSVFlTVEFURSB0byBhIG5vbmVtcHR5IHZhbHVlLAogIyB1bnN0YWdlZCAoKikgYW5kIHN0YWdlZCAoKykgY2hhbmdlcyB3aWxsIGJlIHNob3duIG5leHQgdG8gdGhlIGJyYW5jaApAQCAtNzcsMzEgKzgxLDggQEAKICMKICMgSWYgeW91IHdvdWxkIGxpa2UgYSBjb2xvcmVkIGhpbnQgYWJvdXQgdGhlIGN1cnJlbnQgZGlydHkgc3RhdGUsIHNldAogIyBHSVRfUFMxX1NIT1dDT0xPUkhJTlRTIHRvIGEgbm9uZW1wdHkgdmFsdWUuIFRoZSBjb2xvcnMgYXJlIGJhc2VkIG9uCi0jIHRoZSBjb2xvcmVkIG91dHB1dCBvZiAiZ2l0IHN0YXR1cyAtc2IiLgotCi0jIF9fZ2l0ZGlyIGFjY2VwdHMgMCBvciAxIGFyZ3VtZW50cyAoaS5lLiwgbG9jYXRpb24pCi0jIHJldHVybnMgbG9jYXRpb24gb2YgLmdpdCByZXBvCi1fX2dpdGRpciAoKQotewotCSMgTm90ZTogdGhpcyBmdW5jdGlvbiBpcyBkdXBsaWNhdGVkIGluIGdpdC1jb21wbGV0aW9uLmJhc2gKLQkjIFdoZW4gdXBkYXRpbmcgaXQsIG1ha2Ugc3VyZSB5b3UgdXBkYXRlIHRoZSBvdGhlciBvbmUgdG8gbWF0Y2guCi0JaWYgWyAteiAiJHsxLX0iIF07IHRoZW4KLQkJaWYgWyAtbiAiJHtfX2dpdF9kaXItfSIgXTsgdGhlbgotCQkJZWNobyAiJF9fZ2l0X2RpciIKLQkJZWxpZiBbIC1uICIke0dJVF9ESVItfSIgXTsgdGhlbgotCQkJdGVzdCAtZCAiJHtHSVRfRElSLX0iIHx8IHJldHVybiAxCi0JCQllY2hvICIkR0lUX0RJUiIKLQkJZWxpZiBbIC1kIC5naXQgXTsgdGhlbgotCQkJZWNobyAuZ2l0Ci0JCWVsc2UKLQkJCWdpdCByZXYtcGFyc2UgLS1naXQtZGlyIDI+L2Rldi9udWxsCi0JCWZpCi0JZWxpZiBbIC1kICIkMS8uZ2l0IiBdOyB0aGVuCi0JCWVjaG8gIiQxLy5naXQiCi0JZWxzZQotCQllY2hvICIkMSIKLQlmaQotfQorIyB0aGUgY29sb3JlZCBvdXRwdXQgb2YgImdpdCBzdGF0dXMgLXNiIiBhbmQgYXJlIGF2YWlsYWJsZSBvbmx5IHdoZW4KKyMgdXNpbmcgX19naXRfcHMxIGZvciBQUk9NUFRfQ09NTUFORCBvciBwcmVjbWQuCiAKICMgc3RvcmVzIHRoZSBkaXZlcmdlbmNlIGZyb20gdXBzdHJlYW0gaW4gJHAKICMgdXNlZCBieSBHSVRfUFMxX1NIT1dVUFNUUkVBTQpAQCAtMjIzLDYgKzIwNCw1MSBAQAogCiB9CiAKKyMgSGVscGVyIGZ1bmN0aW9uIHRoYXQgaXMgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gX19naXRfcHMxLiAgSXQKKyMgaW5qZWN0cyBjb2xvciBjb2RlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBnaXRzdHJpbmcgdmFyaWFibGVzIHVzZWQKKyMgdG8gYnVpbGQgYSBnaXRzdHJpbmcuCitfX2dpdF9wczFfY29sb3JpemVfZ2l0c3RyaW5nICgpCit7CisJaWYgW1sgLW4gJHtaU0hfVkVSU0lPTi19IF1dOyB0aGVuCisJCWxvY2FsIGNfcmVkPSclRntyZWR9JworCQlsb2NhbCBjX2dyZWVuPSclRntncmVlbn0nCisJCWxvY2FsIGNfbGJsdWU9JyVGe2JsdWV9JworCQlsb2NhbCBjX2NsZWFyPSclZicKKwllbHNlCisJCSMgVXNpbmcgXFsgYW5kIFxdIGFyb3VuZCBjb2xvcnMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQKKwkJIyBpc3N1ZXMgd2l0aCBjb21tYW5kIGxpbmUgZWRpdGluZy9icm93c2luZy9jb21wbGV0aW9uIQorCQlsb2NhbCBjX3JlZD0nXFtcZVszMW1cXScKKwkJbG9jYWwgY19ncmVlbj0nXFtcZVszMm1cXScKKwkJbG9jYWwgY19sYmx1ZT0nXFtcZVsxOzM0bVxdJworCQlsb2NhbCBjX2NsZWFyPSdcW1xlWzBtXF0nCisJZmkKKwlsb2NhbCBiYWRfY29sb3I9JGNfcmVkCisJbG9jYWwgb2tfY29sb3I9JGNfZ3JlZW4KKwlsb2NhbCBmbGFnc19jb2xvcj0iJGNfbGJsdWUiCisKKwlsb2NhbCBicmFuY2hfY29sb3I9IiIKKwlpZiBbICRkZXRhY2hlZCA9IG5vIF07IHRoZW4KKwkJYnJhbmNoX2NvbG9yPSIkb2tfY29sb3IiCisJZWxzZQorCQlicmFuY2hfY29sb3I9IiRiYWRfY29sb3IiCisJZmkKKwljPSIkYnJhbmNoX2NvbG9yJGMiCisKKwl6PSIkY19jbGVhciR6IgorCWlmIFsgIiR3IiA9ICIqIiBdOyB0aGVuCisJCXc9IiRiYWRfY29sb3IkdyIKKwlmaQorCWlmIFsgLW4gIiRpIiBdOyB0aGVuCisJCWk9IiRva19jb2xvciRpIgorCWZpCisJaWYgWyAtbiAiJHMiIF07IHRoZW4KKwkJcz0iJGZsYWdzX2NvbG9yJHMiCisJZmkKKwlpZiBbIC1uICIkdSIgXTsgdGhlbgorCQl1PSIkYmFkX2NvbG9yJHUiCisJZmkKKwlyPSIkY19jbGVhciRyIgorfQogCiAjIF9fZ2l0X3BzMSBhY2NlcHRzIDAgb3IgMSBhcmd1bWVudHMgKGkuZS4sIGZvcm1hdCBzdHJpbmcpCiAjIHdoZW4gY2FsbGVkIGZyb20gUFMxIHVzaW5nIGNvbW1hbmQgc3Vic3RpdHV0aW9uCkBAIC0yNTUsNTAgKzI4MSw4MyBAQAogCQk7OwogCWVzYWMKIAotCWxvY2FsIGc9IiQoX19naXRkaXIpIgotCWlmIFsgLXogIiRnIiBdOyB0aGVuCisJbG9jYWwgcmVwb19pbmZvIHJldl9wYXJzZV9leGl0X2NvZGUKKwlyZXBvX2luZm89IiQoZ2l0IHJldi1wYXJzZSAtLWdpdC1kaXIgLS1pcy1pbnNpZGUtZ2l0LWRpciBcCisJCS0taXMtYmFyZS1yZXBvc2l0b3J5IC0taXMtaW5zaWRlLXdvcmstdHJlZSBcCisJCS0tc2hvcnQgSEVBRCAyPi9kZXYvbnVsbCkiCisJcmV2X3BhcnNlX2V4aXRfY29kZT0iJD8iCisKKwlpZiBbIC16ICIkcmVwb19pbmZvIiBdOyB0aGVuCiAJCWlmIFsgJHBjbW9kZSA9IHllcyBdOyB0aGVuCiAJCQkjSW4gUEMgbW9kZSBQUzEgYWx3YXlzIG5lZWRzIHRvIGJlIHNldAogCQkJUFMxPSIkcHMxcGNfc3RhcnQkcHMxcGNfZW5kIgogCQlmaQotCWVsc2UKLQkJbG9jYWwgcj0iIgotCQlsb2NhbCBiPSIiCi0JCWxvY2FsIHN0ZXA9IiIKLQkJbG9jYWwgdG90YWw9IiIKLQkJaWYgWyAtZCAiJGcvcmViYXNlLW1lcmdlIiBdOyB0aGVuCi0JCQliPSIkKGNhdCAiJGcvcmViYXNlLW1lcmdlL2hlYWQtbmFtZSIpIgotCQkJc3RlcD0kKGNhdCAiJGcvcmViYXNlLW1lcmdlL21zZ251bSIpCi0JCQl0b3RhbD0kKGNhdCAiJGcvcmViYXNlLW1lcmdlL2VuZCIpCi0JCQlpZiBbIC1mICIkZy9yZWJhc2UtbWVyZ2UvaW50ZXJhY3RpdmUiIF07IHRoZW4KLQkJCQlyPSJ8UkVCQVNFLWkiCi0JCQllbHNlCi0JCQkJcj0ifFJFQkFTRS1tIgotCQkJZmkKLQkJZWxzZQotCQkJaWYgWyAtZCAiJGcvcmViYXNlLWFwcGx5IiBdOyB0aGVuCi0JCQkJc3RlcD0kKGNhdCAiJGcvcmViYXNlLWFwcGx5L25leHQiKQotCQkJCXRvdGFsPSQoY2F0ICIkZy9yZWJhc2UtYXBwbHkvbGFzdCIpCi0JCQkJaWYgWyAtZiAiJGcvcmViYXNlLWFwcGx5L3JlYmFzaW5nIiBdOyB0aGVuCi0JCQkJCWI9IiQoY2F0ICIkZy9yZWJhc2UtYXBwbHkvaGVhZC1uYW1lIikiCi0JCQkJCXI9InxSRUJBU0UiCi0JCQkJZWxpZiBbIC1mICIkZy9yZWJhc2UtYXBwbHkvYXBwbHlpbmciIF07IHRoZW4KLQkJCQkJcj0ifEFNIgotCQkJCWVsc2UKLQkJCQkJcj0ifEFNL1JFQkFTRSIKLQkJCQlmaQotCQkJZWxpZiBbIC1mICIkZy9NRVJHRV9IRUFEIiBdOyB0aGVuCi0JCQkJcj0ifE1FUkdJTkciCi0JCQllbGlmIFsgLWYgIiRnL0NIRVJSWV9QSUNLX0hFQUQiIF07IHRoZW4KLQkJCQlyPSJ8Q0hFUlJZLVBJQ0tJTkciCi0JCQllbGlmIFsgLWYgIiRnL1JFVkVSVF9IRUFEIiBdOyB0aGVuCi0JCQkJcj0ifFJFVkVSVElORyIKLQkJCWVsaWYgWyAtZiAiJGcvQklTRUNUX0xPRyIgXTsgdGhlbgotCQkJCXI9InxCSVNFQ1RJTkciCi0JCQlmaQorCQlyZXR1cm4KKwlmaQogCi0JCQl0ZXN0IC1uICIkYiIgfHwKLQkJCWI9IiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEIDI+L2Rldi9udWxsKSIgfHwgeworCWxvY2FsIHNob3J0X3NoYQorCWlmIFsgIiRyZXZfcGFyc2VfZXhpdF9jb2RlIiA9ICIwIiBdOyB0aGVuCisJCXNob3J0X3NoYT0iJHtyZXBvX2luZm8jIyokJ1xuJ30iCisJCXJlcG9faW5mbz0iJHtyZXBvX2luZm8lJCdcbicqfSIKKwlmaQorCWxvY2FsIGluc2lkZV93b3JrdHJlZT0iJHtyZXBvX2luZm8jIyokJ1xuJ30iCisJcmVwb19pbmZvPSIke3JlcG9faW5mbyUkJ1xuJyp9IgorCWxvY2FsIGJhcmVfcmVwbz0iJHtyZXBvX2luZm8jIyokJ1xuJ30iCisJcmVwb19pbmZvPSIke3JlcG9faW5mbyUkJ1xuJyp9IgorCWxvY2FsIGluc2lkZV9naXRkaXI9IiR7cmVwb19pbmZvIyMqJCdcbid9IgorCWxvY2FsIGc9IiR7cmVwb19pbmZvJSQnXG4nKn0iCisKKwlsb2NhbCByPSIiCisJbG9jYWwgYj0iIgorCWxvY2FsIHN0ZXA9IiIKKwlsb2NhbCB0b3RhbD0iIgorCWlmIFsgLWQgIiRnL3JlYmFzZS1tZXJnZSIgXTsgdGhlbgorCQlyZWFkIGIgMj4vZGV2L251bGwgPCIkZy9yZWJhc2UtbWVyZ2UvaGVhZC1uYW1lIgorCQlyZWFkIHN0ZXAgMj4vZGV2L251bGwgPCIkZy9yZWJhc2UtbWVyZ2UvbXNnbnVtIgorCQlyZWFkIHRvdGFsIDI+L2Rldi9udWxsIDwiJGcvcmViYXNlLW1lcmdlL2VuZCIKKwkJaWYgWyAtZiAiJGcvcmViYXNlLW1lcmdlL2ludGVyYWN0aXZlIiBdOyB0aGVuCisJCQlyPSJ8UkVCQVNFLWkiCisJCWVsc2UKKwkJCXI9InxSRUJBU0UtbSIKKwkJZmkKKwllbHNlCisJCWlmIFsgLWQgIiRnL3JlYmFzZS1hcHBseSIgXTsgdGhlbgorCQkJcmVhZCBzdGVwIDI+L2Rldi9udWxsIDwiJGcvcmViYXNlLWFwcGx5L25leHQiCisJCQlyZWFkIHRvdGFsIDI+L2Rldi9udWxsIDwiJGcvcmViYXNlLWFwcGx5L2xhc3QiCisJCQlpZiBbIC1mICIkZy9yZWJhc2UtYXBwbHkvcmViYXNpbmciIF07IHRoZW4KKwkJCQlyZWFkIGIgMj4vZGV2L251bGwgPCIkZy9yZWJhc2UtYXBwbHkvaGVhZC1uYW1lIgorCQkJCXI9InxSRUJBU0UiCisJCQllbGlmIFsgLWYgIiRnL3JlYmFzZS1hcHBseS9hcHBseWluZyIgXTsgdGhlbgorCQkJCXI9InxBTSIKKwkJCWVsc2UKKwkJCQlyPSJ8QU0vUkVCQVNFIgorCQkJZmkKKwkJZWxpZiBbIC1mICIkZy9NRVJHRV9IRUFEIiBdOyB0aGVuCisJCQlyPSJ8TUVSR0lORyIKKwkJZWxpZiBbIC1mICIkZy9DSEVSUllfUElDS19IRUFEIiBdOyB0aGVuCisJCQlyPSJ8Q0hFUlJZLVBJQ0tJTkciCisJCWVsaWYgWyAtZiAiJGcvUkVWRVJUX0hFQUQiIF07IHRoZW4KKwkJCXI9InxSRVZFUlRJTkciCisJCWVsaWYgWyAtZiAiJGcvQklTRUNUX0xPRyIgXTsgdGhlbgorCQkJcj0ifEJJU0VDVElORyIKKwkJZmkKKworCQlpZiBbIC1uICIkYiIgXTsgdGhlbgorCQkJOgorCQllbGlmIFsgLWggIiRnL0hFQUQiIF07IHRoZW4KKwkJCSMgc3ltbGluayBzeW1ib2xpYyByZWYKKwkJCWI9IiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEIDI+L2Rldi9udWxsKSIKKwkJZWxzZQorCQkJbG9jYWwgaGVhZD0iIgorCQkJaWYgISByZWFkIGhlYWQgMj4vZGV2L251bGwgPCIkZy9IRUFEIjsgdGhlbgorCQkJCWlmIFsgJHBjbW9kZSA9IHllcyBdOyB0aGVuCisJCQkJCVBTMT0iJHBzMXBjX3N0YXJ0JHBzMXBjX2VuZCIKKwkJCQlmaQorCQkJCXJldHVybgorCQkJZmkKKwkJCSMgaXMgaXQgYSBzeW1ib2xpYyByZWY/CisJCQliPSIke2hlYWQjcmVmOiB9IgorCQkJaWYgWyAiJGhlYWQiID0gIiRiIiBdOyB0aGVuCiAJCQkJZGV0YWNoZWQ9eWVzCiAJCQkJYj0iJCgKIAkJCQljYXNlICIke0dJVF9QUzFfREVTQ1JJQkVfU1RZTEUtfSIgaW4KQEAgLTMxMiwxMDQgKzM3MSw3NSBAQAogCQkJCQlnaXQgZGVzY3JpYmUgLS10YWdzIC0tZXhhY3QtbWF0Y2ggSEVBRCA7OwogCQkJCWVzYWMgMj4vZGV2L251bGwpIiB8fAogCi0JCQkJYj0iJChjdXQgLWMxLTcgIiRnL0hFQUQiIDI+L2Rldi9udWxsKS4uLiIgfHwKLQkJCQliPSJ1bmtub3duIgorCQkJCWI9IiRzaG9ydF9zaGEuLi4iCiAJCQkJYj0iKCRiKSIKLQkJCX0KLQkJZmkKLQotCQlpZiBbIC1uICIkc3RlcCIgXSAmJiBbIC1uICIkdG90YWwiIF07IHRoZW4KLQkJCXI9IiRyICRzdGVwLyR0b3RhbCIKLQkJZmkKLQotCQlsb2NhbCB3PSIiCi0JCWxvY2FsIGk9IiIKLQkJbG9jYWwgcz0iIgotCQlsb2NhbCB1PSIiCi0JCWxvY2FsIGM9IiIKLQkJbG9jYWwgcD0iIgotCi0JCWlmIFsgInRydWUiID0gIiQoZ2l0IHJldi1wYXJzZSAtLWlzLWluc2lkZS1naXQtZGlyIDI+L2Rldi9udWxsKSIgXTsgdGhlbgotCQkJaWYgWyAidHJ1ZSIgPSAiJChnaXQgcmV2LXBhcnNlIC0taXMtYmFyZS1yZXBvc2l0b3J5IDI+L2Rldi9udWxsKSIgXTsgdGhlbgotCQkJCWM9IkJBUkU6IgotCQkJZWxzZQotCQkJCWI9IkdJVF9ESVIhIgotCQkJZmkKLQkJZWxpZiBbICJ0cnVlIiA9ICIkKGdpdCByZXYtcGFyc2UgLS1pcy1pbnNpZGUtd29yay10cmVlIDI+L2Rldi9udWxsKSIgXTsgdGhlbgotCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dESVJUWVNUQVRFLX0iIF0gJiYKLQkJCSAgIFsgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYmFzaC5zaG93RGlydHlTdGF0ZSkiICE9ICJmYWxzZSIgXQotCQkJdGhlbgotCQkJCWdpdCBkaWZmIC0tbm8tZXh0LWRpZmYgLS1xdWlldCAtLWV4aXQtY29kZSB8fCB3PSIqIgotCQkJCWlmIGdpdCByZXYtcGFyc2UgLS1xdWlldCAtLXZlcmlmeSBIRUFEID4vZGV2L251bGw7IHRoZW4KLQkJCQkJZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgLS1xdWlldCBIRUFEIC0tIHx8IGk9IisiCi0JCQkJZWxzZQotCQkJCQlpPSIjIgotCQkJCWZpCi0JCQlmaQotCQkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dTVEFTSFNUQVRFLX0iIF07IHRoZW4KLQkJCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvc3Rhc2ggPi9kZXYvbnVsbCAyPiYxICYmIHM9IiQiCi0JCQlmaQotCi0JCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTLX0iIF0gJiYKLQkJCSAgIFsgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYmFzaC5zaG93VW50cmFja2VkRmlsZXMpIiAhPSAiZmFsc2UiIF0gJiYKLQkJCSAgIFsgLW4gIiQoZ2l0IGxzLWZpbGVzIC0tb3RoZXJzIC0tZXhjbHVkZS1zdGFuZGFyZCkiIF0KLQkJCXRoZW4KLQkJCQl1PSIlJHtaU0hfVkVSU0lPTislfSIKLQkJCWZpCi0KLQkJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XVVBTVFJFQU0tfSIgXTsgdGhlbgotCQkJCV9fZ2l0X3BzMV9zaG93X3Vwc3RyZWFtCiAJCQlmaQogCQlmaQorCWZpCiAKLQkJbG9jYWwgZj0iJHckaSRzJHUiCi0JCWlmIFsgJHBjbW9kZSA9IHllcyBdOyB0aGVuCi0JCQlsb2NhbCBnaXRzdHJpbmc9Ci0JCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV0NPTE9SSElOVFMtfSIgXTsgdGhlbgotCQkJCWxvY2FsIGNfcmVkPSdcZVszMW0nCi0JCQkJbG9jYWwgY19ncmVlbj0nXGVbMzJtJwotCQkJCWxvY2FsIGNfbGJsdWU9J1xlWzE7MzRtJwotCQkJCWxvY2FsIGNfY2xlYXI9J1xlWzBtJwotCQkJCWxvY2FsIGJhZF9jb2xvcj0kY19yZWQKLQkJCQlsb2NhbCBva19jb2xvcj0kY19ncmVlbgotCQkJCWxvY2FsIGJyYW5jaF9jb2xvcj0iJGNfY2xlYXIiCi0JCQkJbG9jYWwgZmxhZ3NfY29sb3I9IiRjX2xibHVlIgotCQkJCWxvY2FsIGJyYW5jaHN0cmluZz0iJGMke2IjI3JlZnMvaGVhZHMvfSIKKwlpZiBbIC1uICIkc3RlcCIgXSAmJiBbIC1uICIkdG90YWwiIF07IHRoZW4KKwkJcj0iJHIgJHN0ZXAvJHRvdGFsIgorCWZpCiAKLQkJCQlpZiBbICRkZXRhY2hlZCA9IG5vIF07IHRoZW4KLQkJCQkJYnJhbmNoX2NvbG9yPSIkb2tfY29sb3IiCi0JCQkJZWxzZQotCQkJCQlicmFuY2hfY29sb3I9IiRiYWRfY29sb3IiCi0JCQkJZmkKKwlsb2NhbCB3PSIiCisJbG9jYWwgaT0iIgorCWxvY2FsIHM9IiIKKwlsb2NhbCB1PSIiCisJbG9jYWwgYz0iIgorCWxvY2FsIHA9IiIKIAotCQkJCSMgU2V0dGluZyBnaXRzdHJpbmcgZGlyZWN0bHkgd2l0aCBcWyBhbmQgXF0gYXJvdW5kIGNvbG9ycwotCQkJCSMgaXMgbmVjZXNzYXJ5IHRvIHByZXZlbnQgd3JhcHBpbmcgaXNzdWVzIQotCQkJCWdpdHN0cmluZz0iXFskYnJhbmNoX2NvbG9yXF0kYnJhbmNoc3RyaW5nXFskY19jbGVhclxdIgotCi0JCQkJaWYgWyAtbiAiJHckaSRzJHUkciRwIiBdOyB0aGVuCi0JCQkJCWdpdHN0cmluZz0iJGdpdHN0cmluZyAiCi0JCQkJZmkKLQkJCQlpZiBbICIkdyIgPSAiKiIgXTsgdGhlbgotCQkJCQlnaXRzdHJpbmc9IiRnaXRzdHJpbmdcWyRiYWRfY29sb3JcXSR3IgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJGkiIF07IHRoZW4KLQkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskb2tfY29sb3JcXSRpIgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJHMiIF07IHRoZW4KLQkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskZmxhZ3NfY29sb3JcXSRzIgotCQkJCWZpCi0JCQkJaWYgWyAtbiAiJHUiIF07IHRoZW4KLQkJCQkJZ2l0c3RyaW5nPSIkZ2l0c3RyaW5nXFskYmFkX2NvbG9yXF0kdSIKLQkJCQlmaQotCQkJCWdpdHN0cmluZz0iJGdpdHN0cmluZ1xbJGNfY2xlYXJcXSRyJHAiCi0JCQllbHNlCi0JCQkJZ2l0c3RyaW5nPSIkYyR7YiMjcmVmcy9oZWFkcy99JHtmOisgJGZ9JHIkcCIKLQkJCWZpCi0JCQlnaXRzdHJpbmc9JChwcmludGYgLS0gIiRwcmludGZfZm9ybWF0IiAiJGdpdHN0cmluZyIpCi0JCQlQUzE9IiRwczFwY19zdGFydCRnaXRzdHJpbmckcHMxcGNfZW5kIgorCWlmIFsgInRydWUiID0gIiRpbnNpZGVfZ2l0ZGlyIiBdOyB0aGVuCisJCWlmIFsgInRydWUiID0gIiRiYXJlX3JlcG8iIF07IHRoZW4KKwkJCWM9IkJBUkU6IgogCQllbHNlCi0JCQkjIE5PIGNvbG9yIG9wdGlvbiB1bmxlc3MgaW4gUFJPTVBUX0NPTU1BTkQgbW9kZQotCQkJcHJpbnRmIC0tICIkcHJpbnRmX2Zvcm1hdCIgIiRjJHtiIyNyZWZzL2hlYWRzL30ke2Y6KyAkZn0kciRwIgorCQkJYj0iR0lUX0RJUiEiCiAJCWZpCisJZWxpZiBbICJ0cnVlIiA9ICIkaW5zaWRlX3dvcmt0cmVlIiBdOyB0aGVuCisJCWlmIFsgLW4gIiR7R0lUX1BTMV9TSE9XRElSVFlTVEFURS19IiBdICYmCisJCSAgIFsgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgYmFzaC5zaG93RGlydHlTdGF0ZSkiICE9ICJmYWxzZSIgXQorCQl0aGVuCisJCQlnaXQgZGlmZiAtLW5vLWV4dC1kaWZmIC0tcXVpZXQgLS1leGl0LWNvZGUgfHwgdz0iKiIKKwkJCWlmIFsgLW4gIiRzaG9ydF9zaGEiIF07IHRoZW4KKwkJCQlnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAtLXF1aWV0IEhFQUQgLS0gfHwgaT0iKyIKKwkJCWVsc2UKKwkJCQlpPSIjIgorCQkJZmkKKwkJZmkKKwkJaWYgWyAtbiAiJHtHSVRfUFMxX1NIT1dTVEFTSFNUQVRFLX0iIF0gJiYKKwkJICAgWyAtciAiJGcvcmVmcy9zdGFzaCIgXTsgdGhlbgorCQkJcz0iJCIKKwkJZmkKKworCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTLX0iIF0gJiYKKwkJICAgWyAiJChnaXQgY29uZmlnIC0tYm9vbCBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcykiICE9ICJmYWxzZSIgXSAmJgorCQkgICBnaXQgbHMtZmlsZXMgLS1vdGhlcnMgLS1leGNsdWRlLXN0YW5kYXJkIC0tZXJyb3ItdW5tYXRjaCAtLSAnKicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbAorCQl0aGVuCisJCQl1PSIlJHtaU0hfVkVSU0lPTislfSIKKwkJZmkKKworCQlpZiBbIC1uICIke0dJVF9QUzFfU0hPV1VQU1RSRUFNLX0iIF07IHRoZW4KKwkJCV9fZ2l0X3BzMV9zaG93X3Vwc3RyZWFtCisJCWZpCisJZmkKKworCWxvY2FsIHo9IiR7R0lUX1BTMV9TVEFURVNFUEFSQVRPUi0iICJ9IgorCisJIyBOTyBjb2xvciBvcHRpb24gdW5sZXNzIGluIFBST01QVF9DT01NQU5EIG1vZGUKKwlpZiBbICRwY21vZGUgPSB5ZXMgXSAmJiBbIC1uICIke0dJVF9QUzFfU0hPV0NPTE9SSElOVFMtfSIgXTsgdGhlbgorCQlfX2dpdF9wczFfY29sb3JpemVfZ2l0c3RyaW5nCisJZmkKKworCWxvY2FsIGY9IiR3JGkkcyR1IgorCWxvY2FsIGdpdHN0cmluZz0iJGMke2IjI3JlZnMvaGVhZHMvfSR7ZjorJHokZn0kciRwIgorCisJaWYgWyAkcGNtb2RlID0geWVzIF07IHRoZW4KKwkJaWYgW1sgLW4gJHtaU0hfVkVSU0lPTi19IF1dOyB0aGVuCisJCQlnaXRzdHJpbmc9JChwcmludGYgLS0gIiRwcmludGZfZm9ybWF0IiAiJGdpdHN0cmluZyIpCisJCWVsc2UKKwkJCXByaW50ZiAtdiBnaXRzdHJpbmcgLS0gIiRwcmludGZfZm9ybWF0IiAiJGdpdHN0cmluZyIKKwkJZmkKKwkJUFMxPSIkcHMxcGNfc3RhcnQkZ2l0c3RyaW5nJHBzMXBjX2VuZCIKKwllbHNlCisJCXByaW50ZiAtLSAiJHByaW50Zl9mb3JtYXQiICIkZ2l0c3RyaW5nIgogCWZpCiB9CmRpZmYgLS1naXQgYS9jb250cmliL2NvbnRhY3RzL2dpdC1jb250YWN0cyBiL2NvbnRyaWIvY29udGFjdHMvZ2l0LWNvbnRhY3RzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ4MGY3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2NvbnRhY3RzL2dpdC1jb250YWN0cwpAQCAtMCwwICsxLDE4OCBAQAorIyEvdXNyL2Jpbi9wZXJsCisKKyMgTGlzdCBwZW9wbGUgd2hvIG1pZ2h0IGJlIGludGVyZXN0ZWQgaW4gYSBwYXRjaC4gIFVzZWZ1bCBhcyB0aGUgYXJndW1lbnQgdG8KKyMgZ2l0LXNlbmQtZW1haWwgLS1jYy1jbWQgb3B0aW9uLCBhbmQgaW4gb3RoZXIgc2l0dWF0aW9ucy4KKyMKKyMgVXNhZ2U6IGdpdCBjb250YWN0cyA8ZmlsZSB8IHJldi1saXN0IG9wdGlvbj4gLi4uCisKK3VzZSBzdHJpY3Q7Cit1c2Ugd2FybmluZ3M7Cit1c2UgSVBDOjpPcGVuMjsKKworbXkgJHNpbmNlID0gJzUteWVhcnMtYWdvJzsKK215ICRtaW5fcGVyY2VudCA9IDEwOworbXkgJGxhYmVsc19yeCA9IHFyL1NpZ25lZC1vZmYtYnl8UmV2aWV3ZWQtYnl8QWNrZWQtYnl8Q2MvaTsKK215ICVzZWVuOworCitzdWIgZm9ybWF0X2NvbnRhY3QgeworCW15ICgkbmFtZSwgJGVtYWlsKSA9IEBfOworCXJldHVybiAiJG5hbWUgPCRlbWFpbD4iOworfQorCitzdWIgcGFyc2VfY29tbWl0IHsKKwlteSAoJGNvbW1pdCwgJGRhdGEpID0gQF87CisJbXkgJGNvbnRhY3RzID0gJGNvbW1pdC0+e2NvbnRhY3RzfTsKKwlteSAkaW5ib2R5ID0gMDsKKwlmb3IgKHNwbGl0KC9eL20sICRkYXRhKSkgeworCQlpZiAobm90ICRpbmJvZHkpIHsKKwkJCWlmICgvXmF1dGhvciAoW148Pl0rKSA8KFxTKyk+IC4rJC8pIHsKKwkJCQkkY29udGFjdHMtPntmb3JtYXRfY29udGFjdCgkMSwgJDIpfSA9IDE7CisJCQl9IGVsc2lmICgvXiQvKSB7CisJCQkJJGluYm9keSA9IDE7CisJCQl9CisJCX0gZWxzaWYgKC9eJGxhYmVsc19yeDpccysoW148Pl0rKVxzKzwoXFMrPyk+JC9vKSB7CisJCQkkY29udGFjdHMtPntmb3JtYXRfY29udGFjdCgkMSwgJDIpfSA9IDE7CisJCX0KKwl9Cit9CisKK3N1YiBpbXBvcnRfY29tbWl0cyB7CisJbXkgKCRjb21taXRzKSA9IEBfOworCXJldHVybiB1bmxlc3MgJSRjb21taXRzOworCW15ICRwaWQgPSBvcGVuMiBteSAkcmVhZGVyLCBteSAkd3JpdGVyLCBxdyhnaXQgY2F0LWZpbGUgLS1iYXRjaCk7CisJZm9yIG15ICRpZCAoa2V5cyglJGNvbW1pdHMpKSB7CisJCXByaW50ICR3cml0ZXIgIiRpZFxuIjsKKwkJbXkgJGxpbmUgPSA8JHJlYWRlcj47CisJCWlmICgkbGluZSA9fiAvXihbMC05YS1mXXs0MH0pIGNvbW1pdCAoXGQrKS8pIHsKKwkJCW15ICgkY2lkLCAkbGVuKSA9ICgkMSwgJDIpOworCQkJZGllICJleHBlY3RlZCAkaWQgYnV0IGdvdCAkY2lkXG4iIHVubGVzcyAkaWQgZXEgJGNpZDsKKwkJCW15ICRkYXRhOworCQkJIyBjYXQtZmlsZSBlbWl0cyBuZXdsaW5lIGFmdGVyIGRhdGEsIHNvIHJlYWQgbGVuKzEKKwkJCXJlYWQgJHJlYWRlciwgJGRhdGEsICRsZW4gKyAxOworCQkJcGFyc2VfY29tbWl0KCRjb21taXRzLT57JGlkfSwgJGRhdGEpOworCQl9CisJfQorCWNsb3NlICRyZWFkZXI7CisJY2xvc2UgJHdyaXRlcjsKKwl3YWl0cGlkKCRwaWQsIDApOworCWRpZSAiZ2l0LWNhdC1maWxlIGVycm9yOiAkP1xuIiBpZiAkPzsKK30KKworc3ViIGdldF9ibGFtZSB7CisJbXkgKCRjb21taXRzLCAkc291cmNlLCAkc3RhcnQsICRsZW4sICRmcm9tKSA9IEBfOworCSRsZW4gPSAxIHVubGVzcyBkZWZpbmVkKCRsZW4pOworCXJldHVybiBpZiAkbGVuID09IDA7CisJb3BlbiBteSAkZiwgJy18JywKKwkJcXcoZ2l0IGJsYW1lIC0tcG9yY2VsYWluIC1DKSwgJy1MJywgIiRzdGFydCwrJGxlbiIsCisJCSctLXNpbmNlJywgJHNpbmNlLCAiJGZyb21eIiwgJy0tJywgJHNvdXJjZSBvciBkaWU7CisJd2hpbGUgKDwkZj4pIHsKKwkJaWYgKC9eKFswLTlhLWZdezQwfSkgXGQrIFxkKyBcZCskLykgeworCQkJbXkgJGlkID0gJDE7CisJCQkkY29tbWl0cy0+eyRpZH0gPSB7IGlkID0+ICRpZCwgY29udGFjdHMgPT4ge30gfQorCQkJCXVubGVzcyAkc2VlbnskaWR9OworCQkJJHNlZW57JGlkfSA9IDE7CisJCX0KKwl9CisJY2xvc2UgJGY7Cit9CisKK3N1YiBzY2FuX3BhdGNoZXMgeworCW15ICgkY29tbWl0cywgJGlkLCAkZikgPSBAXzsKKwlteSAkc291cmNlOworCXdoaWxlICg8JGY+KSB7CisJCWlmICgvXkZyb20gKFswLTlhLWZdezQwfSkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxJC8pIHsKKwkJCSRpZCA9ICQxOworCQkJJHNlZW57JGlkfSA9IDE7CisJCX0KKwkJbmV4dCB1bmxlc3MgJGlkOworCQlpZiAobXteLS0tICg/OmEvKC4rKXwvZGV2L251bGwpJH0pIHsKKwkJCSRzb3VyY2UgPSAkMTsKKwkJfSBlbHNpZiAoL14tLS0gLykgeworCQkJZGllICJDYW5ub3QgcGFyc2UgaHVuayBzb3VyY2U6ICRfXG4iOworCQl9IGVsc2lmICgvXkBAIC0oXGQrKSg/OiwoXGQrKSk/LyAmJiAkc291cmNlKSB7CisJCQlnZXRfYmxhbWUoJGNvbW1pdHMsICRzb3VyY2UsICQxLCAkMiwgJGlkKTsKKwkJfQorCX0KK30KKworc3ViIHNjYW5fcGF0Y2hfZmlsZSB7CisJbXkgKCRjb21taXRzLCAkZmlsZSkgPSBAXzsKKwlvcGVuIG15ICRmLCAnPCcsICRmaWxlIG9yIGRpZSAicmVhZCBmYWlsdXJlOiAkZmlsZTogJCFcbiI7CisJc2Nhbl9wYXRjaGVzKCRjb21taXRzLCB1bmRlZiwgJGYpOworCWNsb3NlICRmOworfQorCitzdWIgcGFyc2VfcmV2X2FyZ3MgeworCW15IEBhcmdzID0gQF87CisJb3BlbiBteSAkZiwgJy18JywKKwkJcXcoZ2l0IHJldi1wYXJzZSAtLXJldnMtb25seSAtLWRlZmF1bHQgSEVBRCAtLXN5bWJvbGljKSwgQGFyZ3MKKwkJb3IgZGllOworCW15IEByZXZzOworCXdoaWxlICg8JGY+KSB7CisJCWNob21wOworCQlwdXNoIEByZXZzLCAkXzsKKwl9CisJY2xvc2UgJGY7CisJcmV0dXJuIEByZXZzIGlmIHNjYWxhcihAcmV2cykgIT0gMTsKKwlyZXR1cm4gIl4kcmV2c1swXSIsICdIRUFEJyB1bmxlc3MgJHJldnNbMF0gPX4gL14tLzsKKwlyZXR1cm4gJHJldnNbMF0sICdIRUFEJzsKK30KKworc3ViIHNjYW5fcmV2X2FyZ3MgeworCW15ICgkY29tbWl0cywgJGFyZ3MpID0gQF87CisJbXkgQHJldnMgPSBwYXJzZV9yZXZfYXJncyhAJGFyZ3MpOworCW9wZW4gbXkgJGYsICctfCcsIHF3KGdpdCByZXYtbGlzdCAtLXJldmVyc2UpLCBAcmV2cyBvciBkaWU7CisJd2hpbGUgKDwkZj4pIHsKKwkJY2hvbXA7CisJCW15ICRpZCA9ICRfOworCQkkc2VlbnskaWR9ID0gMTsKKwkJb3BlbiBteSAkZywgJy18JywgcXcoZ2l0IHNob3cgLUMgLS1vbmVsaW5lKSwgJGlkIG9yIGRpZTsKKwkJc2Nhbl9wYXRjaGVzKCRjb21taXRzLCAkaWQsICRnKTsKKwkJY2xvc2UgJGc7CisJfQorCWNsb3NlICRmOworfQorCitzdWIgbWFpbG1hcF9jb250YWN0cyB7CisJbXkgKCRjb250YWN0cykgPSBAXzsKKwlteSAlbWFwcGVkOworCW15ICRwaWQgPSBvcGVuMiBteSAkcmVhZGVyLCBteSAkd3JpdGVyLCBxdyhnaXQgY2hlY2stbWFpbG1hcCAtLXN0ZGluKTsKKwlmb3IgbXkgJGNvbnRhY3QgKGtleXMoJSRjb250YWN0cykpIHsKKwkJcHJpbnQgJHdyaXRlciAiJGNvbnRhY3RcbiI7CisJCW15ICRjYW5vbmljYWwgPSA8JHJlYWRlcj47CisJCWNob21wICRjYW5vbmljYWw7CisJCSRtYXBwZWR7JGNhbm9uaWNhbH0gKz0gJGNvbnRhY3RzLT57JGNvbnRhY3R9OworCX0KKwljbG9zZSAkcmVhZGVyOworCWNsb3NlICR3cml0ZXI7CisJd2FpdHBpZCgkcGlkLCAwKTsKKwlkaWUgImdpdC1jaGVjay1tYWlsbWFwIGVycm9yOiAkP1xuIiBpZiAkPzsKKwlyZXR1cm4gXCVtYXBwZWQ7Cit9CisKK2lmICghQEFSR1YpIHsKKwlkaWUgIk5vIGlucHV0IHJldmlzaW9ucyBvciBwYXRjaCBmaWxlc1xuIjsKK30KKworbXkgKEBmaWxlcywgQHJldl9hcmdzKTsKK2ZvciAoQEFSR1YpIHsKKwlpZiAoLWUpIHsKKwkJcHVzaCBAZmlsZXMsICRfOworCX0gZWxzZSB7CisJCXB1c2ggQHJldl9hcmdzLCAkXzsKKwl9Cit9CisKK215ICVjb21taXRzOworZm9yIChAZmlsZXMpIHsKKwlzY2FuX3BhdGNoX2ZpbGUoXCVjb21taXRzLCAkXyk7Cit9CitpZiAoQHJldl9hcmdzKSB7CisJc2Nhbl9yZXZfYXJncyhcJWNvbW1pdHMsIFxAcmV2X2FyZ3MpCit9CitpbXBvcnRfY29tbWl0cyhcJWNvbW1pdHMpOworCitteSAkY29udGFjdHMgPSB7fTsKK2ZvciBteSAkY29tbWl0ICh2YWx1ZXMgJWNvbW1pdHMpIHsKKwlmb3IgbXkgJGNvbnRhY3QgKGtleXMgJXskY29tbWl0LT57Y29udGFjdHN9fSkgeworCQkkY29udGFjdHMtPnskY29udGFjdH0rKzsKKwl9Cit9CiskY29udGFjdHMgPSBtYWlsbWFwX2NvbnRhY3RzKCRjb250YWN0cyk7CisKK215ICRuY29tbWl0cyA9IHNjYWxhcihrZXlzICVjb21taXRzKTsKK2ZvciBteSAkY29udGFjdCAoa2V5cyAlJGNvbnRhY3RzKSB7CisJbXkgJHBlcmNlbnQgPSAkY29udGFjdHMtPnskY29udGFjdH0gKiAxMDAgLyAkbmNvbW1pdHM7CisJbmV4dCBpZiAkcGVyY2VudCA8ICRtaW5fcGVyY2VudDsKKwlwcmludCAiJGNvbnRhY3RcbiI7Cit9CmRpZmYgLS1naXQgYS9jb250cmliL2NvbnRhY3RzL2dpdC1jb250YWN0cy50eHQgYi9jb250cmliL2NvbnRhY3RzL2dpdC1jb250YWN0cy50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ5MTRkMQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvY29udGFjdHMvZ2l0LWNvbnRhY3RzLnR4dApAQCAtMCwwICsxLDk0IEBACitnaXQtY29udGFjdHMoMSkKKz09PT09PT09PT09PT09PQorCitOQU1FCistLS0tCitnaXQtY29udGFjdHMgLSBMaXN0IHBlb3BsZSB3aG8gbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiBhIHNldCBvZiBjaGFuZ2VzCisKKworU1lOT1BTSVMKKy0tLS0tLS0tCitbdmVyc2VdCisnZ2l0IGNvbnRhY3RzJyAoPHBhdGNoPnw8cmFuZ2U+fDxyZXY+KS4uLgorCisKK0RFU0NSSVBUSU9OCistLS0tLS0tLS0tLQorCitHaXZlbiBhIHNldCBvZiBjaGFuZ2VzLCBzcGVjaWZpZWQgYXMgcGF0Y2ggZmlsZXMgb3IgcmV2aXNpb25zLCBkZXRlcm1pbmUgcGVvcGxlCit3aG8gbWlnaHQgYmUgaW50ZXJlc3RlZCBpbiB0aG9zZSBjaGFuZ2VzLiAgVGhpcyBpcyBkb25lIGJ5IGNvbnN1bHRpbmcgdGhlCitoaXN0b3J5IG9mIGVhY2ggcGF0Y2ggb3IgcmV2aXNpb24gaHVuayB0byBmaW5kIHBlb3BsZSBtZW50aW9uZWQgYnkgY29tbWl0cword2hpY2ggdG91Y2hlZCB0aGUgbGluZXMgb2YgZmlsZXMgdW5kZXIgY29uc2lkZXJhdGlvbi4KKworSW5wdXQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgcGF0Y2ggZmlsZXMgb3IgcmV2aXNpb24gYXJndW1lbnRzLiAgQSByZXZpc2lvbgorYXJndW1lbnQgY2FuIGJlIGEgcmFuZ2Ugb3IgYSBzaW5nbGUgYDxyZXY+YCB3aGljaCBpcyBpbnRlcnByZXRlZCBhcworYDxyZXY+Li5IRUFEYCwgdGh1cyB0aGUgc2FtZSByZXZpc2lvbiBhcmd1bWVudHMgYXJlIGFjY2VwdGVkIGFzIGZvcgorbGlua2dpdDpnaXQtZm9ybWF0LXBhdGNoWzFdLiBQYXRjaCBmaWxlcyBhbmQgcmV2aXNpb24gYXJndW1lbnRzIGNhbiBiZSBjb21iaW5lZAoraW4gdGhlIHNhbWUgaW52b2NhdGlvbi4KKworVGhpcyBjb21tYW5kIGNhbiBiZSB1c2VmdWwgZm9yIGRldGVybWluaW5nIHRoZSBsaXN0IG9mIHBlb3BsZSB3aXRoIHdob20gdG8KK2Rpc2N1c3MgcHJvcG9zZWQgY2hhbmdlcywgb3IgZm9yIGZpbmRpbmcgdGhlIGxpc3Qgb2YgcmVjaXBpZW50cyB0byBDYzogd2hlbgorc3VibWl0dGluZyBhIHBhdGNoIHNlcmllcyB2aWEgYGdpdCBzZW5kLWVtYWlsYC4gRm9yIHRoZSBsYXR0ZXIgY2FzZSwgYGdpdAorY29udGFjdHNgIGNhbiBiZSB1c2VkIGFzIHRoZSBhcmd1bWVudCB0byBgZ2l0IHNlbmQtZW1haWxgJ3MgYC0tY2MtY21kYCBvcHRpb24uCisKKworRElTQ1VTU0lPTgorLS0tLS0tLS0tLQorCitgZ2l0IGJsYW1lYCBpcyBpbnZva2VkIGZvciBlYWNoIGh1bmsgaW4gYSBwYXRjaCBmaWxlIG9yIHJldmlzaW9uLiAgRm9yIGVhY2gKK2NvbW1pdCBtZW50aW9uZWQgYnkgYGdpdCBibGFtZWAsIHRoZSBjb21taXQgbWVzc2FnZSBpcyBjb25zdWx0ZWQgZm9yIHBlb3BsZSB3aG8KK2F1dGhvcmVkLCByZXZpZXdlZCwgc2lnbmVkLCBhY2tub3dsZWRnZWQsIG9yIHdlcmUgQ2M6J2QuICBPbmNlIHRoZSBsaXN0IG9mCitwYXJ0aWNpcGFudHMgaXMga25vd24sIGVhY2ggcGVyc29uJ3MgcmVsZXZhbmNlIGlzIGNvbXB1dGVkIGJ5IGNvbnNpZGVyaW5nIGhvdworbWFueSBjb21taXRzIG1lbnRpb25lZCB0aGF0IHBlcnNvbiBjb21wYXJlZCB3aXRoIHRoZSB0b3RhbCBudW1iZXIgb2YgY29tbWl0cwordW5kZXIgY29uc2lkZXJhdGlvbi4gIFRoZSBmaW5hbCBvdXRwdXQgY29uc2lzdHMgb25seSBvZiBwYXJ0aWNpcGFudHMgd2hvIGV4Y2VlZAorYSBtaW5pbXVtIHRocmVzaG9sZCBvZiBwYXJ0aWNpcGF0aW9uLgorCisKK09VVFBVVAorLS0tLS0tCisKK0ZvciBlYWNoIHBlcnNvbiBvZiBpbnRlcmVzdCwgYSBzaW5nbGUgbGluZSBpcyBvdXRwdXQsIHRlcm1pbmF0ZWQgYnkgYSBuZXdsaW5lLgorSWYgdGhlIHBlcnNvbidzIG5hbWUgaXMga25vd24sIGBgTmFtZSAkJDx1c2VyQGhvc3Q+JCQnJyBpcyBwcmludGVkOyBvdGhlcndpc2UKK29ubHkgYGAkJDx1c2VyQGhvc3Q+JCQnJyBpcyBwcmludGVkLgorCisKK0VYQU1QTEVTCistLS0tLS0tLQorCisqIENvbnN1bHQgcGF0Y2ggZmlsZXM6CisrCistLS0tLS0tLS0tLS0KKyQgZ2l0IGNvbnRhY3RzIGZlYXR1cmUvKi5wYXRjaAorLS0tLS0tLS0tLS0tCisKKyogUmV2aXNpb24gcmFuZ2U6CisrCistLS0tLS0tLS0tLS0KKyQgZ2l0IGNvbnRhY3RzIFIxLi5SMgorLS0tLS0tLS0tLS0tCisKKyogRnJvbSBhIHNpbmdsZSByZXZpc2lvbiB0byBgSEVBRGA6CisrCistLS0tLS0tLS0tLS0KKyQgZ2l0IGNvbnRhY3RzIG9yaWdpbgorLS0tLS0tLS0tLS0tCisKKyogSGVscGVyIGZvciBgZ2l0IHNlbmQtZW1haWxgOgorKworLS0tLS0tLS0tLS0tCiskIGdpdCBzZW5kLWVtYWlsIC0tY2MtY21kPSdnaXQgY29udGFjdHMnIGZlYXR1cmUvKi5wYXRjaAorLS0tLS0tLS0tLS0tCisKKworTElNSVRBVElPTlMKKy0tLS0tLS0tLS0tCisKK1NldmVyYWwgY29uZGl0aW9ucyBjb250cm9sbGluZyBhIHBlcnNvbidzIHNpZ25pZmljYW5jZSBhcmUgY3VycmVudGx5CitoYXJkLWNvZGVkLCBzdWNoIGFzIG1pbmltdW0gcGFydGljaXBhdGlvbiBsZXZlbCAoMTAlKSwgYmxhbWUgZGF0ZS1saW1pdGluZyAoNQoreWVhcnMpLCBhbmQgYC1DYCBsZXZlbCBmb3IgZGV0ZWN0aW5nIG1vdmVkIGFuZCBjb3BpZWQgbGluZXMgKGEgc2luZ2xlIGAtQ2ApLiBJbgordGhlIGZ1dHVyZSwgdGhlc2UgY29uZGl0aW9ucyBtYXkgYmVjb21lIGNvbmZpZ3VyYWJsZS4KKworCitHSVQKKy0tLQorUGFydCBvZiB0aGUgbGlua2dpdDpnaXRbMV0gc3VpdGUKZGlmZiAtLWdpdCBhL2NvbnRyaWIvY29udGludW91cy9jaWRhZW1vbiBiL2NvbnRyaWIvY29udGludW91cy9jaWRhZW1vbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDAwOWExNS4uMDAwMDAwMAotLS0gYS9jb250cmliL2NvbnRpbnVvdXMvY2lkYWVtb24KKysrIC9kZXYvbnVsbApAQCAtMSw1MDMgKzAsMCBAQAotIyEvdXNyL2Jpbi9wZXJsCi0jCi0jIEEgZGFlbW9uIHRoYXQgd2FpdHMgZm9yIHVwZGF0ZSBldmVudHMgc2VudCBieSBpdHMgY29tcGFuaW9uCi0jIHBvc3QtcmVjZWl2ZS1jaW5vdGlmeSBob29rLCBjaGVja3Mgb3V0IGEgbmV3IGNvcHkgb2Ygc291cmNlLAotIyBjb21waWxlcyBpdCwgYW5kIGVtYWlscyB0aGUgZ3VpbHR5IHBhcnRpZXMgaWYgdGhlIGNvbXBpbGUKLSMgKGFuZCBvcHRpb25hbGx5IHRlc3Qgc3VpdGUpIGZhaWxzLgotIwotIyBUbyB1c2UgdGhpcyBkYWVtb24sIGNvbmZpZ3VyZSBpdCBhbmQgcnVuIGl0LiAgSXQgd2lsbCBkaXNjb25uZWN0Ci0jIGZyb20geW91ciB0ZXJtaW5hbCBhbmQgZm9yayBpbnRvIHRoZSBiYWNrZ3JvdW5kLiAgVGhlIGRhZW1vbiBtdXN0Ci0jIGhhdmUgbG9jYWwgZmlsZXN5c3RlbSBhY2Nlc3MgdG8gdGhlIHNvdXJjZSByZXBvc2l0b3JpZXMsIGFzIGl0Ci0jIHVzZXMgb2JqZWN0cy9pbmZvL2FsdGVybmF0ZXMgdG8gYXZvaWQgY29weWluZyBvYmplY3RzLgotIwotIyBBZGQgaXRzIGNvbXBhbmlvbiBwb3N0LXJlY2VpdmUtY2lub3RpZnkgaG9vayBhcyB0aGUgcG9zdC1yZWNlaXZlCi0jIGhvb2sgdG8gZWFjaCByZXBvc2l0b3J5IHRoYXQgdGhlIGRhZW1vbiBzaG91bGQgbW9uaXRvci4gIFllcywgYQotIyBzaW5nbGUgZGFlbW9uIGNhbiBtb25pdG9yIG1vcmUgdGhhbiBvbmUgcmVwb3NpdG9yeS4KLSMKLSMgVG8gdXNlIG11bHRpcGxlIGRhZW1vbnMgb24gdGhlIHNhbWUgc3lzdGVtLCBnaXZlIHRoZW0gZWFjaCBhCi0jIHVuaXF1ZSBxdWV1ZSBmaWxlIGFuZCB0bXBkaXIuCi0jCi0jIEdsb2JhbCBDb25maWcKLSMgLS0tLS0tLS0tLS0tLQotIyBSZWFkcyBmcm9tIGEgR2l0IHN0eWxlIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgd2lsbCBiZQotIyB+Ly5naXRjb25maWcgYnkgZGVmYXVsdCBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgc2V0dGluZwotIyB0aGUgR0lUX0NPTkZJR19GSUxFIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBzdGFydGluZy4KLSMKLSMgY2lkYWVtb24uc210cEhvc3QKLSMgICBIb3N0bmFtZSBvZiB0aGUgU01UUCBzZXJ2ZXIgdGhlIGRhZW1vbiB3aWxsIHNlbmQgZW1haWwKLSMgICB0aHJvdWdoLiAgRGVmYXVsdHMgdG8gJ2xvY2FsaG9zdCcuCi0jCi0jIGNpZGFlbW9uLnNtdHBVc2VyCi0jICAgVXNlcm5hbWUgdG8gYXV0aGVudGljYXRlIHRvIHRoZSBTTVRQIHNlcnZlciBhcy4gIFRoaXMKLSMgICB2YXJpYWJsZSBpcyBvcHRpb25hbDsgaWYgaXQgaXMgbm90IHN1cHBsaWVkIHRoZW4gbm8KLSMgICBhdXRoZW50aWNhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZC4KLSMKLSMgY2lkYWVtb24uc210cFBhc3N3b3JkCi0jICAgUGFzc3dvcmQgdG8gYXV0aGVudGljYXRlIHRvIHRoZSBTTVRQIHNlcnZlciBhcy4gIFRoaXMKLSMgICB2YXJpYWJsZSBpcyBvcHRpb25hbC4gIElmIG5vdCBzdXBwbGllZCBidXQgc210cFVzZXIgd2FzLAotIyAgIHRoZSBkYWVtb24gcHJvbXB0cyBmb3IgdGhlIHBhc3N3b3JkIGJlZm9yZSBmb3JraW5nIGludG8KLSMgICB0aGUgYmFja2dyb3VuZC4KLSMKLSMgY2lkYWVtb24uc210cEF1dGgKLSMgICBUeXBlIG9mIGF1dGhlbnRpY2F0aW9uIHRvIHBlcmZvcm0gd2l0aCB0aGUgU01UUCBzZXJ2ZXIuCi0jICAgSWYgc2V0IHRvICdsb2dpbicgYW5kIHNtdHBVc2VyIHdhcyBkZWZpbmVkLCB0aGlzIHdpbGwKLSMgICB1c2UgdGhlIEFVVEggTE9HSU4gY29tbWFuZCwgd2hpY2ggaXMgc3VpdGFibGUgZm9yIHVzZQotIyAgIHdpdGggYXQgbGVhc3Qgb25lIHZlcnNpb24gb2YgTWljcm9zb2Z0IEV4Y2hhbmdlIFNlcnZlci4KLSMgICBJZiBub3Qgc2V0IHRoZSBkYWVtb24gd2lsbCB1c2Ugd2hhdGV2ZXIgYXV0aCBtZXRob2RzCi0jICAgYXJlIHN1cHBvcnRlZCBieSB5b3VyIHZlcnNpb24gb2YgTmV0OjpTTVRQLgotIwotIyBjaWRhZW1vbi5lbWFpbAotIyAgIEVtYWlsIGFkZHJlc3MgdGhhdCBkYWVtb24gZ2VuZXJhdGVkIGVtYWlscyB3aWxsIGJlIHNlbnQKLSMgICBmcm9tLiAgVGhpcyBzaG91bGQgYmUgYSB1c2VmdWwgZW1haWwgYWRkcmVzcyB3aXRoaW4geW91cgotIyAgIG9yZ2FuaXphdGlvbi4gIFJlcXVpcmVkLgotIwotIyBjaWRhZW1vbi5uYW1lCi0jICAgSHVtYW4gZnJpZW5kbHkgbmFtZSB0aGF0IHRoZSBkYWVtb24gd2lsbCBzZW5kIGVtYWlscyBhcy4KLSMgICBEZWZhdWx0cyB0byAnY2lkYWVtb24nLgotIwotIyBjaWRhZW1vbi5zY2FuRGVsYXkKLSMgICBOdW1iZXIgb2Ygc2Vjb25kcyB0byBzbGVlcCBiZXR3ZWVuIHBvbGxzIG9mIHRoZSBxdWV1ZSBmaWxlLgotIyAgIERlZmF1bHRzIHRvIDYwLgotIwotIyBjaWRhZW1vbi5yZWNlbnRDYWNoZQotIyAgIE51bWJlciBvZiByZWNlbnQgY29tbWl0IFNIQS0xcyBwZXIgcmVwb3NpdG9yeSB0byBjYWNoZSBhbmQKLSMgICBza2lwIGJ1aWxkaW5nIGlmIHRoZXkgYXBwZWFyIGFnYWluLiAgVGhpcyBpcyB1c2VmdWwgdG8gYXZvaWQKLSMgICByZWJ1aWxkaW5nIHRoZSBzYW1lIGNvbW1pdCBtdWx0aXBsZSB0aW1lcyBqdXN0IGJlY2F1c2UgaXQgd2FzCi0jICAgcHVzaGVkIGludG8gbW9yZSB0aGFuIG9uZSBicmFuY2guICBEZWZhdWx0cyB0byAxMDAuCi0jCi0jIGNpZGFlbW9uLnRtcGRpcgotIyAgIFNjcmF0Y2ggZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgYnVpbGRzIHdpdGhpbi4gIFRoZSBkYWVtb24KLSMgICBtYWtlcyBhIG5ldyBzdWJkaXJlY3RvcnkgZm9yIGVhY2ggYnVpbGQsIHRoZW4gZGVsZXRlcyBpdCB3aGVuCi0jICAgdGhlIGJ1aWxkIGhhcyBmaW5pc2hlZC4gIFRoZSBwaWQgZmlsZSBpcyBhbHNvIHBsYWNlZCBoZXJlLgotIyAgIERlZmF1bHRzIHRvICcvdG1wJy4KLSMKLSMgY2lkYWVtb24ucXVldWUKLSMgICBQYXRoIHRvIHRoZSBxdWV1ZSBmaWxlIHRoYXQgdGhlIHBvc3QtcmVjZWl2ZS1jaW5vdGlmeSBob29rCi0jICAgYXBwZW5kcyBldmVudHMgdG8uICBUaGlzIGZpbGUgaXMgcG9sbGVkIGJ5IHRoZSBkYWVtb24uICBJdAotIyAgIG11c3Qgbm90IGJlIG9uIGFuIE5GUyBtb3VudCAodXNlcyBmbG9jaykuICBSZXF1aXJlZC4KLSMKLSMgY2lkYWVtb24ubm9jYwotIyAgIFBlcmwgcmVnZXggcGF0dGVybnMgdG8gbWF0Y2ggYWdhaW5zdCBhdXRob3IgYW5kIGNvbW1pdHRlcgotIyAgIGxpbmVzLiAgSWYgYSBwYXR0ZXJuIG1hdGNoZXMsIHRoYXQgYXV0aG9yIG9yIGNvbW1pdHRlciB3aWxsCi0jICAgbm90IGJlIG5vdGlmaWVkIG9mIGEgYnVpbGQgZmFpbHVyZS4KLSMKLSMgUGVyIFJlcG9zaXRvcnkgQ29uZmlnCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUmVhZCBmcm9tIHRoZSBzb3VyY2UgcmVwb3NpdG9yeSdzIGNvbmZpZyBmaWxlLgotIwotIyBidWlsZGVyLmNvbW1hbmQKLSMgICBTaGVsbCBjb21tYW5kIHRvIGV4ZWN1dGUgdGhlIGJ1aWxkLiAgVGhpcyBjb21tYW5kIG11c3QKLSMgICByZXR1cm4gMCBvbiAic3VjY2VzcyIgYW5kIG5vbi16ZXJvIG9uIGZhaWx1cmUuICBJZiB5b3UKLSMgICBhbHNvIHdhbnQgdG8gcnVuIGEgdGVzdCBzdWl0ZSwgbWFrZSBzdXJlIHlvdXIgY29tbWFuZAotIyAgIGRvZXMgdGhhdCB0b28uICBSZXF1aXJlZC4KLSMKLSMgYnVpbGRlci5xdWV1ZQotIyAgIFF1ZXVlIGZpbGUgdG8gbm90aWZ5IHRoZSBjaWRhZW1vbiB0aHJvdWdoLiAgU2hvdWxkIG1hdGNoCi0jICAgY2lkYWVtb24ucXVldWUuICBJZiBub3Qgc2V0IHRoZSBob29rIHdpbGwgbm90IG5vdGlmeSB0aGUKLSMgICBjaWRhZW1vbi4KLSMKLSMgYnVpbGRlci5za2lwCi0jICAgUGVybCByZWdleCBwYXR0ZXJucyBvZiByZWZzIHRoYXQgc2hvdWxkIG5vdCBiZSBzZW50IHRvCi0jICAgY2lkYWVtb24uICBVcGRhdGVzIG9mIHRoZXNlIHJlZnMgd2lsbCBiZSBpZ25vcmVkLgotIwotIyBidWlsZGVyLm5ld0JyYW5jaEJhc2UKLSMgICBHbG9iIHBhdHRlcm5zIG9mIHJlZnMgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmb3JtIHRoZQotIyAgICdvbGQnIHJldmlvbnMgb2YgYSBuZXdseSBjcmVhdGVkIHJlZi4gIFRoaXMgc2hvdWxkIHNldAotIyAgIHRvIGJlIGdsb2JzIHRoYXQgbWF0Y2ggeW91ciAnbWFpbmxpbmUnIGJyYW5jaGVzLiAgVGhpcwotIyAgIHdheSBhIGJ1aWxkIGZhaWx1cmUgb2YgYSBicmFuZCBuZXcgdG9waWMgYnJhbmNoIGRvZXMgbm90Ci0jICAgYXR0ZW1wdCB0byBlbWFpbCBldmVyeW9uZSBzaW5jZSB0aGUgYmVnaW5uaW5nIG9mIHRpbWU7Ci0jICAgaW5zdGVhZCBpdCBvbmx5IGVtYWlscyB0aG9zZSBhdXRob3JzIG9mIGNvbW1pdHMgbm90IGluCi0jICAgdGhlc2UgJ21haW5saW5lJyBicmFuY2hlcy4KLQotbG9jYWwgJEVOVntQQVRIfSA9IGpvaW4gJzonLCBxdygKLQkvb3B0L2dpdC9iaW4KLQkvdXNyL2JpbgotCS9iaW4KLQkpOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwotdXNlIEZpbmRCaW4gcXcoJFJlYWxCaW4pOwotdXNlIEZpbGU6OlNwZWM7Ci11c2UgbGliIEZpbGU6OlNwZWMtPmNhdGZpbGUoJFJlYWxCaW4sICcuLicsICdwZXJsNScpOwotdXNlIFN0b3JhYmxlIHF3KHJldHJpZXZlIG5zdG9yZSk7Ci11c2UgRmNudGwgJzpmbG9jayc7Ci11c2UgUE9TSVggcXcoc3RyZnRpbWUpOwotdXNlIEdldG9wdDo6TG9uZyBxdyg6Y29uZmlnIG5vX2F1dG9fYWJicmV2IGF1dG9faGVscCk7Ci0KLXN1YiBnaXRfY29uZmlnICgkOyQpCi17Ci0JbXkgJHZhciA9IHNoaWZ0OwotCW15ICRyZXF1aXJlZCA9IHNoaWZ0IHx8IDA7Ci0JbG9jYWwgKkdJVDsKLQlvcGVuIEdJVCwgJy18JywnZ2l0JywnY29uZmlnJywnLS1nZXQnLCR2YXI7Ci0JbXkgJHIgPSA8R0lUPjsKLQljaG9wICRyIGlmICRyOwotCWNsb3NlIEdJVDsKLQlkaWUgImVycm9yOiAkdmFyIG5vdCBzZXQuXG4iIGlmICgkcmVxdWlyZWQgJiYgISRyKTsKLQlyZXR1cm4gJHI7Ci19Ci0KLXBhY2thZ2UgRVhDSEFOR0VfTkVUX1NNVFA7Ci0KLSMgTWljcm9zb2Z0IEV4Y2hhbmdlIFNlcnZlciByZXF1aXJlcyBhbiAnQVVUSCBMT0dJTicKLSMgc3R5bGUgb2YgYXV0aGVudGljYXRpb24uICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tCi0jIHRoZSBkZWZhdWx0IHN1cHBvcnRlZCBieSBOZXQ6OlNNVFAgc28gd2Ugc3ViY2xhc3MKLSMgYW5kIG92ZXJyaWRlIHRoZSBhdXRoIG1ldGhvZCB0byBzdXBwb3J0IHRoYXQuCi0KLXVzZSBOZXQ6OlNNVFA7Ci11c2UgTmV0OjpDbWQ7Ci11c2UgTUlNRTo6QmFzZTY0IHF3KGVuY29kZV9iYXNlNjQpOwotb3VyIEBJU0EgPSBxdyhOZXQ6OlNNVFApOwotb3VyICRhdXRoX3R5cGUgPSA6OmdpdF9jb25maWcgJ2NpZGFlbW9uLnNtdHBBdXRoJzsKLQotc3ViIG5ldwotewotCW15ICRzZWxmID0gc2hpZnQ7Ci0JbXkgJHR5cGUgPSByZWYoJHNlbGYpIHx8ICRzZWxmOwotCSR0eXBlLT5TVVBFUjo6bmV3KEBfKTsKLX0KLQotc3ViIGF1dGgKLXsKLQlteSAkc2VsZiA9IHNoaWZ0OwotCXJldHVybiAkc2VsZi0+U1VQRVI6OmF1dGgoQF8pIHVubGVzcyAkYXV0aF90eXBlIGVxICdsb2dpbic7Ci0KLQlteSAkdXNlciA9IGVuY29kZV9iYXNlNjQgc2hpZnQsICcnOwotCW15ICRwYXNzID0gZW5jb2RlX2Jhc2U2NCBzaGlmdCwgJyc7Ci0JcmV0dXJuIDAgdW5sZXNzIENNRF9NT1JFID09ICRzZWxmLT5jb21tYW5kKCJBVVRIIExPR0lOIiktPnJlc3BvbnNlOwotCXJldHVybiAwIHVubGVzcyBDTURfTU9SRSA9PSAkc2VsZi0+Y29tbWFuZCgkdXNlciktPnJlc3BvbnNlOwotCUNNRF9PSyA9PSAkc2VsZi0+Y29tbWFuZCgkcGFzcyktPnJlc3BvbnNlOwotfQotCi1wYWNrYWdlIG1haW47Ci0KLW15ICgkZGVidWdfZmxhZywgJXJlY2VudCk7Ci0KLW15ICRleF9ob3N0ID0gZ2l0X2NvbmZpZygnY2lkYWVtb24uc210cEhvc3QnKSB8fCAnbG9jYWxob3N0JzsKLW15ICRleF91c2VyID0gZ2l0X2NvbmZpZygnY2lkYWVtb24uc210cFVzZXInKTsKLW15ICRleF9wYXNzID0gZ2l0X2NvbmZpZygnY2lkYWVtb24uc210cFBhc3N3b3JkJyk7Ci0KLW15ICRleF9mcm9tX2FkZHIgPSBnaXRfY29uZmlnKCdjaWRhZW1vbi5lbWFpbCcsIDEpOwotbXkgJGV4X2Zyb21fbmFtZSA9IGdpdF9jb25maWcoJ2NpZGFlbW9uLm5hbWUnKSB8fCAnY2lkYWVtb24nOwotCi1teSAkc2Nhbl9kZWxheSA9IGdpdF9jb25maWcoJ2NpZGFlbW9uLnNjYW5EZWxheScpIHx8IDYwOwotbXkgJHJlY2VudF9zaXplID0gZ2l0X2NvbmZpZygnY2lkYWVtb24ucmVjZW50Q2FjaGUnKSB8fCAxMDA7Ci1teSAkdG1wZGlyID0gZ2l0X2NvbmZpZygnY2lkYWVtb24udG1wZGlyJykgfHwgJy90bXAnOwotbXkgJHF1ZXVlX25hbWUgPSBnaXRfY29uZmlnKCdjaWRhZW1vbi5xdWV1ZScsIDEpOwotbXkgJHF1ZXVlX2xvY2sgPSAiJHF1ZXVlX25hbWUubG9jayI7Ci0KLW15IEBub2NjX2xpc3Q7Ci1vcGVuIEdJVCwnZ2l0IGNvbmZpZyAtLWdldC1hbGwgY2lkYWVtb24ubm9jY3wnOwotd2hpbGUgKDxHSVQ+KSB7Ci0JY2hvcDsKLQlwdXNoIEBub2NjX2xpc3QsICRfOwotfQotY2xvc2UgR0lUOwotCi1zdWIgbm9jY19hdXRob3IgKCQpCi17Ci0JbG9jYWwgJF8gPSBzaGlmdDsKLQlmb3JlYWNoIG15ICRwYXQgKEBub2NjX2xpc3QpIHsKLQkJcmV0dXJuIDEgaWYgLyRwYXQvOwotCX0KLQkwOwotfQotCi1zdWIgaW5wdXRfZWNobyAoJCkKLXsKLQlteSAkcHJvbXB0ID0gc2hpZnQ7Ci0KLQlsb2NhbCAkfCA9IDE7Ci0JcHJpbnQgJHByb21wdDsKLQlteSAkaW5wdXQgPSA8U1RESU4+OwotCWNob3AgJGlucHV0OwotCXJldHVybiAkaW5wdXQ7Ci19Ci0KLXN1YiBpbnB1dF9ub2VjaG8gKCQpCi17Ci0JbXkgJHByb21wdCA9IHNoaWZ0OwotCi0JbXkgJGVuZCA9IHN1YiB7c3lzdGVtKCdzdHR5JywnZWNobycpO3ByaW50ICJcbiI7ZXhpdH07Ci0JbG9jYWwgJFNJR3tURVJNfSA9ICRlbmQ7Ci0JbG9jYWwgJFNJR3tJTlR9ID0gJGVuZDsKLQlzeXN0ZW0oJ3N0dHknLCctZWNobycpOwotCi0JbG9jYWwgJHwgPSAxOwotCXByaW50ICRwcm9tcHQ7Ci0JbXkgJGlucHV0ID0gPFNURElOPjsKLQlzeXN0ZW0oJ3N0dHknLCdlY2hvJyk7Ci0JcHJpbnQgIlxuIjsKLQljaG9wICRpbnB1dDsKLQlyZXR1cm4gJGlucHV0OwotfQotCi1zdWIgcmZjMjgyMl9kYXRlICgpCi17Ci0JIHN0cmZ0aW1lKCIlYSwgJWQgJWIgJVkgJUg6JU06JVMgJVoiLCBsb2NhbHRpbWUpOwotfQotCi1zdWIgc2VuZF9lbWFpbCAoJCQkKQotewotCW15ICgkc3ViaiwgJGJvZHksICR0bykgPSBAXzsKLQlteSAkbm93ID0gcmZjMjgyMl9kYXRlOwotCW15ICR0b19zdHIgPSAnJzsKLQlteSBAcmNwdF90bzsKLQlmb3JlYWNoIChAJHRvKSB7Ci0JCW15ICRzID0gJF87Ci0JCSRzID1+IHMvXi8iLzsKLQkJJHMgPX4gcy8oXHMrPCkvIiQxLzsKLQkJJHRvX3N0ciAuPSAnLCAnIGlmICR0b19zdHI7Ci0JCSR0b19zdHIgLj0gJHM7Ci0JCXB1c2ggQHJjcHRfdG8sICQxIGlmICRzID1+IC88KC4qKT4vOwotCX0KLQlkaWUgIk5vYm9keSB0byBzZW5kIHRvLlxuIiB1bmxlc3MgQHJjcHRfdG87Ci0JbXkgJG1zZyA9IDw8RU9GOwotRnJvbTogIiRleF9mcm9tX25hbWUiIDwkZXhfZnJvbV9hZGRyPgotVG86ICR0b19zdHIKLURhdGU6ICRub3cKLVN1YmplY3Q6ICRzdWJqCi0KLSRib2R5Ci1FT0YKLQotCW15ICRzbXRwID0gRVhDSEFOR0VfTkVUX1NNVFAtPm5ldyhIb3N0ID0+ICRleF9ob3N0KQotCQlvciBkaWUgIkNhbm5vdCBjb25uZWN0IHRvICRleF9ob3N0OiAkIVxuIjsKLQlpZiAoJGV4X3VzZXIgJiYgJGV4X3Bhc3MpIHsKLQkJJHNtdHAtPmF1dGgoJGV4X3VzZXIsJGV4X3Bhc3MpCi0JCQlvciBkaWUgIiRleF9ob3N0IHJlamVjdGVkICRleF91c2VyXG4iOwotCX0KLQkkc210cC0+bWFpbCgkZXhfZnJvbV9hZGRyKQotCQlvciBkaWUgIiRleF9ob3N0IHJlamVjdGVkICRleF9mcm9tX2FkZHJcbiI7Ci0Jc2NhbGFyKCRzbXRwLT5yZWNpcGllbnQoQHJjcHRfdG8sIHsgU2tpcEJhZCA9PiAxIH0pKQotCQlvciBkaWUgIiRleF9ob3N0IGRpZCBub3QgYWNjZXB0IGFueSBhZGRyZXNzZXMuXG4iOwotCSRzbXRwLT5kYXRhKCRtc2cpCi0JCW9yIGRpZSAiJGV4X2hvc3QgcmVqZWN0ZWQgbWVzc2FnZSBkYXRhXG4iOwotCSRzbXRwLT5xdWl0OwotfQotCi1zdWIgcG9wX3F1ZXVlICgpCi17Ci0Jb3BlbiBMT0NLLCAiPiRxdWV1ZV9sb2NrIiBvciBkaWUgIkNhbid0IG9wZW4gJHF1ZXVlX2xvY2s6ICQhIjsKLQlmbG9jayBMT0NLLCBMT0NLX0VYOwotCi0JbXkgJHF1ZXVlID0gLWYgJHF1ZXVlX25hbWUgPyByZXRyaWV2ZSAkcXVldWVfbmFtZSA6IFtdOwotCW15ICRlbnQgPSBzaGlmdCBAJHF1ZXVlOwotCW5zdG9yZSAkcXVldWUsICRxdWV1ZV9uYW1lOwotCi0JZmxvY2sgTE9DSywgTE9DS19VTjsKLQljbG9zZSBMT0NLOwotCSRlbnQ7Ci19Ci0KLXN1YiBnaXRfZXhlYyAoQCkKLXsKLQlzeXN0ZW0oJ2dpdCcsQF8pID09IDAgb3IgZGllICJDYW5ub3QgZ2l0ICIgLiBqb2luKCcgJywgQF8pIC4gIlxuIjsKLX0KLQotc3ViIGdpdF92YWwgKEApCi17Ci0Jb3BlbihDLCAnLXwnLCdnaXQnLEBfKTsKLQlteSAkciA9IDxDPjsKLQljaG9wICRyIGlmICRyOwotCWNsb3NlIEM7Ci0JJHI7Ci19Ci0KLXN1YiBkb19idWlsZCAoJCQpCi17Ci0JbXkgKCRnaXRfZGlyLCAkbmV3KSA9IEBfOwotCi0JbXkgJHRtcCA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcGRpciwgImJ1aWxkZXIkJCIpOwotCXN5c3RlbSgncm0nLCctcmYnLCR0bXApID09IDAgb3IgZGllICJDYW5ub3QgY2xlYXIgJHRtcFxuIjsKLQlkaWUgIkNhbm5vdCBjbGVhciAkdG1wLlxuIiBpZiAtZSAkdG1wOwotCi0JbXkgJHJlc3VsdCA9IDE7Ci0JZXZhbCB7Ci0JCW15ICRjb21tYW5kOwotCQl7Ci0JCQlsb2NhbCAkRU5We0dJVF9ESVJ9ID0gJGdpdF9kaXI7Ci0JCQkkY29tbWFuZCA9IGdpdF92YWwgJ2NvbmZpZycsJ2J1aWxkZXIuY29tbWFuZCc7Ci0JCX0KLQkJZGllICJObyBidWlsZGVyLmNvbW1hbmQgZm9yICRnaXRfZGlyLlxuIiB1bmxlc3MgJGNvbW1hbmQ7Ci0KLQkJZ2l0X2V4ZWMgJ2Nsb25lJywnLW4nLCctbCcsJy1zJywkZ2l0X2RpciwkdG1wOwotCQljaG1vZCAwNzAwLCAkdG1wIG9yIGRpZSAiQ2Fubm90IGxvY2sgJHRtcFxuIjsKLQkJY2hkaXIgJHRtcCBvciBkaWUgIkNhbm5vdCBlbnRlciAkdG1wXG4iOwotCi0JCWdpdF9leGVjICd1cGRhdGUtcmVmJywnSEVBRCcsJG5ldzsKLQkJZ2l0X2V4ZWMgJ3JlYWQtdHJlZScsJy1tJywnLXUnLCdIRUFEJywnSEVBRCc7Ci0JCXN5c3RlbSAkY29tbWFuZDsKLQkJaWYgKCQ/ID09IC0xKSB7Ci0JCQlwcmludCBTVERFUlIgImZhaWxlZCB0byBleGVjdXRlICckY29tbWFuZCc6ICQhXG4iOwotCQkJJHJlc3VsdCA9IDE7Ci0JCX0gZWxzaWYgKCQ/ICYgMTI3KSB7Ci0JCQlteSAkc2lnID0gJD8gJiAxMjc7Ci0JCQlwcmludCBTVERFUlIgIickY29tbWFuZCcgZGllZCBmcm9tIHNpZ25hbCAkc2lnXG4iOwotCQkJJHJlc3VsdCA9IDE7Ci0JCX0gZWxzZSB7Ci0JCQlteSAkciA9ICQ/ID4+IDg7Ci0JCQlwcmludCBTVERFUlIgIickY29tbWFuZCcgZXhpdGVkIHdpdGggJHJcbiIgaWYgJHI7Ci0JCQkkcmVzdWx0ID0gJHI7Ci0JCX0KLQl9OwotCWlmICgkQCkgewotCQkkcmVzdWx0ID0gMjsKLQkJcHJpbnQgU1RERVJSICIkQFxuIjsKLQl9Ci0KLQljaGRpciAnLyc7Ci0Jc3lzdGVtKCdybScsJy1yZicsJHRtcCk7Ci0Jcm1kaXIgJHRtcDsKLQkkcmVzdWx0OwotfQotCi1zdWIgYnVpbGRfZmFpbGVkICgkJCQkJCkKLXsKLQlteSAoJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcsICRtc2cpID0gQF87Ci0KLQkkZ2l0X2RpciA9fiBtLC8oW14vXSspJCw7Ci0JbXkgJHJlcG9fbmFtZSA9ICQxOwotCSRyZWYgPX4gcyxecmVmcy8oaGVhZHN8dGFncykvLCw7Ci0KLQlteSAlYXV0aG9yczsKLQlteSAkc2hvcnRsb2c7Ci0JbXkgJHJldnN0cjsKLQl7Ci0JCWxvY2FsICRFTlZ7R0lUX0RJUn0gPSAkZ2l0X2RpcjsKLQkJbXkgQHJldnMgPSAoJG5ldyk7Ci0JCXB1c2ggQHJldnMsICctLW5vdCcsIEAkb2xkIGlmIEAkb2xkOwotCQlvcGVuIExPRywnLXwnLCdnaXQnLCdyZXYtbGlzdCcsJy0tcHJldHR5PXJhdycsQHJldnM7Ci0JCXdoaWxlICg8TE9HPikgewotCQkJaWYgKHMvXihhdXRob3J8Y29tbWl0dGVyKSAvLykgewotCQkJCWNob21wOwotCQkJCXMvPi4qJC8+LzsKLQkJCQkkYXV0aG9yc3skX30gPSAxIHVubGVzcyBub2NjX2F1dGhvciAkXzsKLQkJCX0KLQkJfQotCQljbG9zZSBMT0c7Ci0JCW9wZW4gTE9HLCctfCcsJ2dpdCcsJ3Nob3J0bG9nJyxAcmV2czsKLQkJJHNob3J0bG9nIC49ICRfIHdoaWxlIDxMT0c+OwotCQljbG9zZSBMT0c7Ci0JCSRyZXZzdHIgPSBqb2luKCcgJywgQHJldnMpOwotCX0KLQotCW15IEB0byA9IHNvcnQga2V5cyAlYXV0aG9yczsKLQl1bmxlc3MgKEB0bykgewotCQlwcmludCBTVERFUlIgImVycm9yOiBObyBhdXRob3JzIGluICRyZXZzdHJcbiI7Ci0JCXJldHVybjsKLQl9Ci0KLQlteSAkc3ViamVjdCA9ICJbJHJlcG9fbmFtZV0gJHJlZiA6IEJ1aWxkIEZhaWxlZCI7Ci0JbXkgJGJvZHkgPSA8PEVPRjsKLVByb2plY3Q6ICRnaXRfZGlyCi1CcmFuY2g6ICAkcmVmCi1Db21taXRzOiAkcmV2c3RyCi0KLSRzaG9ydGxvZwotQnVpbGQgT3V0cHV0OgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSRtc2cKLUVPRgotCXNlbmRfZW1haWwoJHN1YmplY3QsICRib2R5LCBcQHRvKTsKLX0KLQotc3ViIHJ1bl9idWlsZCAoJCQkJCkKLXsKLQlteSAoJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcpID0gQF87Ci0KLQlpZiAoJGRlYnVnX2ZsYWcpIHsKLQkJbXkgQHJldnMgPSAoJG5ldyk7Ci0JCXB1c2ggQHJldnMsICctLW5vdCcsIEAkb2xkIGlmIEAkb2xkOwotCQlwcmludCAiQlVJTERJTkcgJGdpdF9kaXJcbiI7Ci0JCXByaW50ICIgIEJSQU5DSDogJHJlZlxuIjsKLQkJcHJpbnQgIiAgQ09NTUlUUzogIiwgam9pbignICcsIEByZXZzKSwgIlxuIjsKLQl9Ci0KLQlsb2NhbCgqUiwgKlcpOwotCXBpcGUgUiwgVyBvciBkaWUgImNhbm5vdCBwaXBlIGJ1aWxkZXI6ICQhIjsKLQotCW15ICRidWlsZGVyID0gZm9yaygpOwotCWlmICghZGVmaW5lZCAkYnVpbGRlcikgewotCQlkaWUgImNhbm5vdCBmb3JrIGJ1aWxkZXI6ICQhIjsKLQl9IGVsc2lmICgwID09ICRidWlsZGVyKSB7Ci0JCWNsb3NlIFI7Ci0JCWNsb3NlIFNURElOO29wZW4oU1RESU4sICcvZGV2L251bGwnKTsKLQkJb3BlbihTVERPVVQsICc+JlcnKTsKLQkJb3BlbihTVERFUlIsICc+JlcnKTsKLQkJZXhpdCBkb19idWlsZCAkZ2l0X2RpciwgJG5ldzsKLQl9IGVsc2UgewotCQljbG9zZSBXOwotCQlteSAkb3V0ID0gJyc7Ci0JCSRvdXQgLj0gJF8gd2hpbGUgPFI+OwotCQljbG9zZSBSOwotCQl3YWl0cGlkICRidWlsZGVyLCAwOwotCQlidWlsZF9mYWlsZWQgJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcsICRvdXQgaWYgJD87Ci0JfQotCi0JcHJpbnQgIkRPTkVcblxuIiBpZiAkZGVidWdfZmxhZzsKLX0KLQotc3ViIGRhZW1vbl9sb29wICgpCi17Ci0JbXkgJHJ1biA9IDE7Ci0JbXkgJHN0b3Bfc3ViID0gc3ViIHskcnVuID0gMH07Ci0JJFNJR3tIVVB9ID0gJHN0b3Bfc3ViOwotCSRTSUd7SU5UfSA9ICRzdG9wX3N1YjsKLQkkU0lHe1RFUk19ID0gJHN0b3Bfc3ViOwotCi0JbWtkaXIgJHRtcGRpciwgMDc1NTsKLQlteSAkcGlkZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoJHRtcGRpciwgImNpZGFlbW9uLnBpZCIpOwotCW9wZW4oTywgIj4kcGlkZmlsZSIpOyBwcmludCBPICIkJFxuIjsgY2xvc2UgTzsKLQotCXdoaWxlICgkcnVuKSB7Ci0JCW15ICRlbnQgPSBwb3BfcXVldWU7Ci0JCWlmICgkZW50KSB7Ci0JCQlteSAoJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXcpID0gQCRlbnQ7Ci0KLQkJCSRlbnQgPSAkcmVjZW50eyRnaXRfZGlyfTsKLQkJCSRyZWNlbnR7JGdpdF9kaXJ9ID0gJGVudCA9IFtbXSwge31dIHVubGVzcyAkZW50OwotCQkJbXkgKCRyZWNfYXJyLCAkcmVjX2hhc2gpID0gQCRlbnQ7Ci0JCQluZXh0IGlmICRyZWNfaGFzaC0+eyRuZXd9Kys7Ci0JCQl3aGlsZSAoQCRyZWNfYXJyID49ICRyZWNlbnRfc2l6ZSkgewotCQkJCW15ICR0b19raWxsID0gc2hpZnQgQCRyZWNfYXJyOwotCQkJCWRlbGV0ZSAkcmVjX2hhc2gtPnskdG9fa2lsbH07Ci0JCQl9Ci0JCQlwdXNoIEAkcmVjX2FyciwgJG5ldzsKLQotCQkJcnVuX2J1aWxkICRnaXRfZGlyLCAkcmVmLCAkb2xkLCAkbmV3OwotCQl9IGVsc2UgewotCQkJc2xlZXAgJHNjYW5fZGVsYXk7Ci0JCX0KLQl9Ci0KLQl1bmxpbmsgJHBpZGZpbGU7Ci19Ci0KLSRkZWJ1Z19mbGFnID0gMDsKLUdldE9wdGlvbnMoCi0JJ2RlYnVnfGQnID0+IFwkZGVidWdfZmxhZywKLQknc210cC11c2VyPXMnID0+IFwkZXhfdXNlciwKLSkgb3IgZGllICJ1c2FnZTogJDAgWy0tZGVidWddIFstLXNtdHAtdXNlcj11c2VyXVxuIjsKLQotJGV4X3Bhc3MgPSBpbnB1dF9ub2VjaG8oIiRleF91c2VyIFNNVFAgcGFzc3dvcmQ6ICIpCi0JaWYgKCRleF91c2VyICYmICEkZXhfcGFzcyk7Ci0KLWlmICgkZGVidWdfZmxhZykgewotCWRhZW1vbl9sb29wOwotCWV4aXQgMDsKLX0KLQotbXkgJGRhZW1vbiA9IGZvcmsoKTsKLWlmICghZGVmaW5lZCAkZGFlbW9uKSB7Ci0JZGllICJjYW5ub3QgZm9yayBkYWVtb246ICQhIjsKLX0gZWxzaWYgKDAgPT0gJGRhZW1vbikgewotCWNsb3NlIFNURElOO29wZW4oU1RESU4sICcvZGV2L251bGwnKTsKLQljbG9zZSBTVERPVVQ7b3BlbihTVERPVVQsICc+L2Rldi9udWxsJyk7Ci0JY2xvc2UgU1RERVJSO29wZW4oU1RERVJSLCAnPi9kZXYvbnVsbCcpOwotCWRhZW1vbl9sb29wOwotCWV4aXQgMDsKLX0gZWxzZSB7Ci0JcHJpbnQgIkRhZW1vbiAkZGFlbW9uIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQuXG4iOwotfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9jb250aW51b3VzL3Bvc3QtcmVjZWl2ZS1jaW5vdGlmeSBiL2NvbnRyaWIvY29udGludW91cy9wb3N0LXJlY2VpdmUtY2lub3RpZnkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZjVhNjAuLjAwMDAwMDAKLS0tIGEvY29udHJpYi9jb250aW51b3VzL3Bvc3QtcmVjZWl2ZS1jaW5vdGlmeQorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0jIS91c3IvYmluL3BlcmwKLSMKLSMgQSBob29rIHRoYXQgbm90aWZpZXMgaXRzIGNvbXBhbmlvbiBjaWRhZW1vbiB0aHJvdWdoIGEgc2ltcGxlCi0jIHF1ZXVlIGZpbGUgdGhhdCBhIHJlZiBoYXMgYmVlbiB1cGRhdGVkIHZpYSBhIHB1c2ggKGFjdHVhbGx5Ci0jIGJ5IGEgcmVjZWl2ZS1wYWNrIHJ1bm5pbmcgb24gdGhlIHNlcnZlcikuCi0jCi0jIFNlZSBjaWRhZW1vbiBmb3IgcGVyLXJlcG9zaXRvcnkgY29uZmlndXJhdGlvbiBkZXRhaWxzLgotIwotIyBUbyB1c2UgdGhpcyBob29rLCBhZGQgaXQgYXMgdGhlIHBvc3QtcmVjZWl2ZSBob29rLCBtYWtlIGl0Ci0jIGV4ZWN1dGFibGUsIGFuZCBzZXQgaXRzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KLSMKLQotbG9jYWwgJEVOVntQQVRIfSA9ICcvb3B0L2dpdC9iaW4nOwotCi11c2Ugc3RyaWN0OwotdXNlIHdhcm5pbmdzOwotdXNlIEZpbGU6OlNwZWM7Ci11c2UgU3RvcmFibGUgcXcocmV0cmlldmUgbnN0b3JlKTsKLXVzZSBGY250bCAnOmZsb2NrJzsKLQotbXkgJGdpdF9kaXIgPSBGaWxlOjpTcGVjLT5yZWwyYWJzKCRFTlZ7R0lUX0RJUn0pOwotbXkgJHF1ZXVlX25hbWUgPSBgZ2l0IGNvbmZpZyAtLWdldCBidWlsZGVyLnF1ZXVlYDtjaG9wICRxdWV1ZV9uYW1lOwotJHF1ZXVlX25hbWUgPX4gbSxeKFteXHNdKykkLDsgJHF1ZXVlX25hbWUgPSAkMTsgIyB1bnRhaW50Ci11bmxlc3MgKCRxdWV1ZV9uYW1lKSB7Ci0JMSB3aGlsZSA8U1RESU4+OwotCXByaW50IFNUREVSUiAiXG5lcnJvcjogYnVpbGRlci5xdWV1ZSBub3Qgc2V0LiAgTm90IGVucXVlaW5nLlxuXG4iOwotCWV4aXQ7Ci19Ci1teSAkcXVldWVfbG9jayA9ICIkcXVldWVfbmFtZS5sb2NrIjsKLQotbXkgQHNraXA7Ci1vcGVuIFMsICJnaXQgY29uZmlnIC0tZ2V0LWFsbCBidWlsZGVyLnNraXB8IjsKLXdoaWxlICg8Uz4pIHsKLQljaG9wOwotCXB1c2ggQHNraXAsICRfOwotfQotY2xvc2UgUzsKLQotbXkgQG5ld19icmFuY2hfYmFzZTsKLW9wZW4gUywgImdpdCBjb25maWcgLS1nZXQtYWxsIGJ1aWxkZXIubmV3QnJhbmNoQmFzZXwiOwotd2hpbGUgKDxTPikgewotCWNob3A7Ci0JcHVzaCBAbmV3X2JyYW5jaF9iYXNlLCAkXzsKLX0KLWNsb3NlIFM7Ci0KLXN1YiBza2lwICgkKQotewotCWxvY2FsICRfID0gc2hpZnQ7Ci0JZm9yZWFjaCBteSAkcCAoQHNraXApIHsKLQkJcmV0dXJuIDEgaWYgL14kcC87Ci0JfQotCTA7Ci19Ci0KLW9wZW4gTE9DSywgIj4kcXVldWVfbG9jayIgb3IgZGllICJDYW4ndCBvcGVuICRxdWV1ZV9sb2NrOiAkISI7Ci1mbG9jayBMT0NLLCBMT0NLX0VYOwotCi1teSAkcXVldWUgPSAtZiAkcXVldWVfbmFtZSA/IHJldHJpZXZlICRxdWV1ZV9uYW1lIDogW107Ci1teSAlZXhpc3Rpbmc7Ci1mb3JlYWNoIG15ICRyIChAJHF1ZXVlKSB7Ci0JbXkgKCRnZCwgJHJlZikgPSBAJHI7Ci0JJGV4aXN0aW5neyRnZH17JHJlZn0gPSAkcjsKLX0KLQotbXkgQG5ld19icmFuY2hfY29tbWl0czsKLW15ICRsb2FkZWRfbmV3X2JyYW5jaF9jb21taXRzID0gMDsKLQotd2hpbGUgKDxTVERJTj4pIHsKLQljaG9wOwotCW15ICgkb2xkLCAkbmV3LCAkcmVmKSA9IHNwbGl0IC8gLywgJF8sIDM7Ci0KLQluZXh0IGlmICRvbGQgZXEgJG5ldzsKLQluZXh0IGlmICRuZXcgPX4gL14wezQwfSQvOwotCW5leHQgaWYgc2tpcCAkcmVmOwotCi0JbXkgJHIgPSAkZXhpc3Rpbmd7JGdpdF9kaXJ9eyRyZWZ9OwotCWlmICgkcikgewotCQkkci0+WzNdID0gJG5ldzsKLQl9IGVsc2UgewotCQlpZiAoJG9sZCA9fiAvXjB7NDB9JC8pIHsKLQkJCWlmICghJGxvYWRlZF9uZXdfYnJhbmNoX2NvbW1pdHMgJiYgQG5ld19icmFuY2hfYmFzZSkgewotCQkJCW9wZW4gTSwnLXwnLCdnaXQnLCdzaG93LXJlZicsQG5ld19icmFuY2hfYmFzZTsKLQkJCQl3aGlsZSAoPE0+KSB7Ci0JCQkJCSgkXykgPSBzcGxpdCAvIC8sICRfOwotCQkJCQlwdXNoIEBuZXdfYnJhbmNoX2NvbW1pdHMsICRfOwotCQkJCX0KLQkJCQljbG9zZSBNOwotCQkJCSRsb2FkZWRfbmV3X2JyYW5jaF9jb21taXRzID0gMTsKLQkJCX0KLQkJCSRvbGQgPSBbQG5ld19icmFuY2hfY29tbWl0c107Ci0JCX0gZWxzZSB7Ci0JCQkkb2xkID0gWyRvbGRdOwotCQl9Ci0KLQkJJHIgPSBbJGdpdF9kaXIsICRyZWYsICRvbGQsICRuZXddOwotCQkkZXhpc3Rpbmd7JGdpdF9kaXJ9eyRyZWZ9ID0gJHI7Ci0JCXB1c2ggQCRxdWV1ZSwgJHI7Ci0JfQotfQotbnN0b3JlICRxdWV1ZSwgJHF1ZXVlX25hbWU7Ci0KLWZsb2NrIExPQ0ssIExPQ0tfVU47Ci1jbG9zZSBMT0NLOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jcmVkZW50aWFsL29zeGtleWNoYWluL2dpdC1jcmVkZW50aWFsLW9zeGtleWNoYWluLmMgYi9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYwppbmRleCAzOTQwMjAyLi5iY2QzZjU3IDEwMDY0NAotLS0gYS9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYworKysgYi9jb250cmliL2NyZWRlbnRpYWwvb3N4a2V5Y2hhaW4vZ2l0LWNyZWRlbnRpYWwtb3N4a2V5Y2hhaW4uYwpAQCAtMTI3LDEwICsxMjcsMjAgQEAKIAkJKnYrKyA9ICdcMCc7CiAKIAkJaWYgKCFzdHJjbXAoYnVmLCAicHJvdG9jb2wiKSkgewotCQkJaWYgKCFzdHJjbXAodiwgImh0dHBzIikpCisJCQlpZiAoIXN0cmNtcCh2LCAiaW1hcCIpKQorCQkJCXByb3RvY29sID0ga1NlY1Byb3RvY29sVHlwZUlNQVA7CisJCQllbHNlIGlmICghc3RyY21wKHYsICJpbWFwcyIpKQorCQkJCXByb3RvY29sID0ga1NlY1Byb3RvY29sVHlwZUlNQVBTOworCQkJZWxzZSBpZiAoIXN0cmNtcCh2LCAiZnRwIikpCisJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlRlRQOworCQkJZWxzZSBpZiAoIXN0cmNtcCh2LCAiZnRwcyIpKQorCQkJCXByb3RvY29sID0ga1NlY1Byb3RvY29sVHlwZUZUUFM7CisJCQllbHNlIGlmICghc3RyY21wKHYsICJodHRwcyIpKQogCQkJCXByb3RvY29sID0ga1NlY1Byb3RvY29sVHlwZUhUVFBTOwogCQkJZWxzZSBpZiAoIXN0cmNtcCh2LCAiaHR0cCIpKQogCQkJCXByb3RvY29sID0ga1NlY1Byb3RvY29sVHlwZUhUVFA7CisJCQllbHNlIGlmICghc3RyY21wKHYsICJzbXRwIikpCisJCQkJcHJvdG9jb2wgPSBrU2VjUHJvdG9jb2xUeXBlU01UUDsKIAkJCWVsc2UgLyogd2UgZG9uJ3QgeWV0IGhhbmRsZSBvdGhlciBwcm90b2NvbHMgKi8KIAkJCQlleGl0KDApOwogCQl9CmRpZmYgLS1naXQgYS9jb250cmliL2hnLXRvLWdpdC9oZy10by1naXQucHkgYi9jb250cmliL2hnLXRvLWdpdC9oZy10by1naXQucHkKaW5kZXggMjMyNjI1YS4uNjBkZWM4NiAxMDA3NTUKLS0tIGEvY29udHJpYi9oZy10by1naXQvaGctdG8tZ2l0LnB5CisrKyBiL2NvbnRyaWIvaGctdG8tZ2l0L2hnLXRvLWdpdC5weQpAQCAtMjI1LDcgKzIyNSw3IEBACiAgICAgb3Muc3lzdGVtKCdnaXQgbHMtZmlsZXMgLXggLmhnIC0tZGVsZXRlZCB8IGdpdCB1cGRhdGUtaW5kZXggLS1yZW1vdmUgLS1zdGRpbicpCiAKICAgICAjIGNvbW1pdAotICAgIG9zLnN5c3RlbShnZXRnaXRlbnYodXNlciwgZGF0ZSkgKyAnZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1hIC1GICVzJyAlIGZpbGVjb21tZW50KQorICAgIG9zLnN5c3RlbShnZXRnaXRlbnYodXNlciwgZGF0ZSkgKyAnZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC0tYWxsb3ctZW1wdHktbWVzc2FnZSAtYSAtRiAlcycgJSBmaWxlY29tbWVudCkKICAgICBvcy51bmxpbmsoZmlsZWNvbW1lbnQpCiAKICAgICAjIHRhZwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ob29rcy9tdWx0aW1haWwvUkVBRE1FIGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MDQzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2hvb2tzL211bHRpbWFpbC9SRUFETUUKQEAgLTAsMCArMSw0ODYgQEAKKwkJCSAgIGdpdC1tdWx0aW1haWwKKwkJCSAgID09PT09PT09PT09PT0KKworZ2l0LW11bHRpbWFpbCBpcyBhIHRvb2wgZm9yIHNlbmRpbmcgbm90aWZpY2F0aW9uIGVtYWlscyBvbiBwdXNoZXMgdG8gYQorR2l0IHJlcG9zaXRvcnkuICBJdCBpbmNsdWRlcyBhIFB5dGhvbiBtb2R1bGUgY2FsbGVkIGdpdF9tdWx0aW1haWwucHksCit3aGljaCBjYW4gZWl0aGVyIGJlIHVzZWQgYXMgYSBob29rIHNjcmlwdCBkaXJlY3RseSBvciBjYW4gYmUgaW1wb3J0ZWQKK2FzIGEgUHl0aG9uIG1vZHVsZSBpbnRvIGFub3RoZXIgc2NyaXB0LgorCitnaXQtbXVsdGltYWlsIGlzIGRlcml2ZWQgZnJvbSB0aGUgR2l0IHByb2plY3QncyBvbGQKK2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsLCBhbmQgaXMgbW9zdGx5IGNvbXBhdGlibGUgd2l0aCB0aGF0CitzY3JpcHQuICBTZWUgUkVBRE1FLm1pZ3JhdGUtZnJvbS1wb3N0LXJlY2VpdmUtZW1haWwgZm9yIGRldGFpbHMgYWJvdXQKK3RoZSBkaWZmZXJlbmNlcyBhbmQgZm9yIGhvdyB0byBtaWdyYXRlIGZyb20gcG9zdC1yZWNlaXZlLWVtYWlsIHRvCitnaXQtbXVsdGltYWlsLgorCitnaXQtbXVsdGltYWlsLCBsaWtlIHRoZSByZXN0IG9mIHRoZSBHaXQgcHJvamVjdCwgaXMgbGljZW5zZWQgdW5kZXIKK0dQTHYyIChzZWUgdGhlIENPUFlJTkcgZmlsZSBmb3IgZGV0YWlscykuCisKK1BsZWFzZSBub3RlOiBhbHRob3VnaCwgYXMgYSBjb252ZW5pZW5jZSwgZ2l0LW11bHRpbWFpbCBtYXkgYmUKK2Rpc3RyaWJ1dGVkIGFsb25nIHdpdGggdGhlIG1haW4gR2l0IHByb2plY3QsIGRldmVsb3BtZW50IG9mCitnaXQtbXVsdGltYWlsIHRha2VzIHBsYWNlIGluIGl0cyBvd24sIHNlcGFyYXRlIHByb2plY3QuICBTZWUgc2VjdGlvbgorIkdldHRpbmcgaW52b2x2ZWQiIGJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKK0J5IGRlZmF1bHQsIGZvciBlYWNoIHB1c2ggcmVjZWl2ZWQgYnkgdGhlIHJlcG9zaXRvcnksIGdpdC1tdWx0aW1haWw6CisKKzEuIE91dHB1dHMgb25lIGVtYWlsIHN1bW1hcml6aW5nIGVhY2ggcmVmZXJlbmNlIHRoYXQgd2FzIGNoYW5nZWQuCisgICBUaGVzZSAicmVmZXJlbmNlIGNoYW5nZSIgKGNhbGxlZCAicmVmY2hhbmdlIiBiZWxvdykgZW1haWxzIGRlc2NyaWJlCisgICB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgKGUuZy4sIHdhcyB0aGUgcmVmZXJlbmNlIGNyZWF0ZWQsIGRlbGV0ZWQsCisgICBmYXN0LWZvcndhcmRlZCwgZXRjLikgYW5kIGluY2x1ZGUgYSBvbmUtbGluZSBzdW1tYXJ5IG9mIGVhY2ggY29tbWl0CisgICB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcmVmZXJlbmNlLgorCisyLiBPdXRwdXRzIG9uZSBlbWFpbCBmb3IgZWFjaCBuZXcgY29tbWl0IHRoYXQgd2FzIGludHJvZHVjZWQgYnkgdGhlCisgICByZWZlcmVuY2UgY2hhbmdlLiAgVGhlc2UgImNvbW1pdCIgZW1haWxzIGluY2x1ZGUgYSBsaXN0IG9mIHRoZQorICAgZmlsZXMgY2hhbmdlZCBieSB0aGUgY29tbWl0LCBmb2xsb3dlZCBieSB0aGUgZGlmZnMgb2YgZmlsZXMKKyAgIG1vZGlmaWVkIGJ5IHRoZSBjb21taXQuICBUaGUgY29tbWl0IGVtYWlscyBhcmUgdGhyZWFkZWQgdG8gdGhlCisgICBjb3JyZXNwb25kaW5nIHJlZmVyZW5jZSBjaGFuZ2UgZW1haWwgdmlhICJJbi1SZXBseS1UbyIuICBUaGlzIHN0eWxlCisgICAoc2ltaWxhciB0byB0aGUgImdpdCBmb3JtYXQtcGF0Y2giIHN0eWxlIHVzZWQgb24gdGhlIEdpdCBtYWlsaW5nCisgICBsaXN0KSBtYWtlcyBpdCBlYXN5IHRvIHNjYW4gdGhyb3VnaCB0aGUgZW1haWxzLCBqdW1wIHRvIHBhdGNoZXMKKyAgIHRoYXQgbmVlZCBmdXJ0aGVyIGF0dGVudGlvbiwgYW5kIHdyaXRlIGNvbW1lbnRzIGFib3V0IHNwZWNpZmljCisgICBjb21taXRzLiAgQ29tbWl0cyBhcmUgaGFuZGxlZCBpbiByZXZlcnNlIHRvcG9sb2dpY2FsIG9yZGVyIChpLmUuLAorICAgcGFyZW50cyBzaG93biBiZWZvcmUgY2hpbGRyZW4pLiAgRm9yIGV4YW1wbGUsCisKKyAgIFtnaXRdIGJyYW5jaCBtYXN0ZXIgdXBkYXRlZAorICAgKyBbZ2l0XSAwMS8wODogZG9jOiBmaXggeHJlZiBsaW5rIGZyb20gYXBpIGRvY3MgdG8gbWFudWFsIHBhZ2VzCisgICArIFtnaXRdIDAyLzA4OiBhcGktY3JlZGVudGlhbHMudHh0OiBzaG93IHRoZSBiaWcgcGljdHVyZSBmaXJzdAorICAgKyBbZ2l0XSAwMy8wODogYXBpLWNyZWRlbnRpYWxzLnR4dDogbWVudGlvbiBjcmVkZW50aWFsLmhlbHBlciBleHBsaWNpdGx5CisgICArIFtnaXRdIDA0LzA4OiBhcGktY3JlZGVudGlhbHMudHh0OiBhZGQgInNlZSBhbHNvIiBzZWN0aW9uCisgICArIFtnaXRdIDA1LzA4OiB0MzUxMCAoY2hlcnJ5LXBpY2stc2VxdWVuY2UpOiBhZGQgbWlzc2luZyAnJiYnCisgICArIFtnaXRdIDA2LzA4OiBNZXJnZSBicmFuY2ggJ3JyL21haW50LXQzNTEwLWNhc2NhZGUtZml4JworICAgKyBbZ2l0XSAwNy8wODogTWVyZ2UgYnJhbmNoICdtbS9hcGktY3JlZGVudGlhbHMtZG9jJworICAgKyBbZ2l0XSAwOC8wODogR2l0IDEuNy4xMS1yYzIKKworICAgRWFjaCBjb21taXQgYXBwZWFycyBpbiBleGFjdGx5IG9uZSBjb21taXQgZW1haWwsIHRoZSBmaXJzdCB0aW1lCisgICB0aGF0IGl0IGlzIHB1c2hlZCB0byB0aGUgcmVwb3NpdG9yeS4gIElmIGEgY29tbWl0IGlzIGxhdGVyIG1lcmdlZAorICAgaW50byBhbm90aGVyIGJyYW5jaCwgdGhlbiBhIG9uZS1saW5lIHN1bW1hcnkgb2YgdGhlIGNvbW1pdCBpcworICAgaW5jbHVkZWQgaW4gdGhlIHJlZmVyZW5jZSBjaGFuZ2UgZW1haWwgKGFzIHVzdWFsKSwgYnV0IG5vCisgICBhZGRpdGlvbmFsIGNvbW1pdCBlbWFpbCBpcyBnZW5lcmF0ZWQuCisKKyAgIEJ5IGRlZmF1bHQsIHJlZmVyZW5jZSBjaGFuZ2UgZW1haWxzIGhhdmUgdGhlaXIgIlJlcGx5LVRvIiBmaWVsZCBzZXQKKyAgIHRvIHRoZSBwZXJzb24gd2hvIHB1c2hlZCB0aGUgY2hhbmdlLCBhbmQgY29tbWl0IGVtYWlscyBoYXZlIHRoZWlyCisgICAiUmVwbHktVG8iIGZpZWxkIHNldCB0byB0aGUgYXV0aG9yIG9mIHRoZSBjb21taXQuCisKKzMuIE91dHB1dCBvbmUgImFubm91bmNlIiBtYWlsIGZvciBlYWNoIG5ldyBhbm5vdGF0ZWQgdGFnLCBpbmNsdWRpbmcKKyAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0YWcgYW5kIG9wdGlvbmFsbHkgYSBzaG9ydGxvZyBkZXNjcmliaW5nIHRoZQorICAgY2hhbmdlcyBzaW5jZSB0aGUgcHJldmlvdXMgdGFnLiAgU3VjaCBlbWFpbHMgbWlnaHQgYmUgdXNlZnVsIGlmIHlvdQorICAgdXNlIGFubm90YXRlZCB0YWdzIHRvIG1hcmsgcmVsZWFzZXMgb2YgeW91ciBwcm9qZWN0LgorCisKK1JlcXVpcmVtZW50cworLS0tLS0tLS0tLS0tCisKKyogUHl0aG9uIDIueCwgdmVyc2lvbiAyLjQgb3IgbGF0ZXIuICBObyBub24tc3RhbmRhcmQgUHl0aG9uIG1vZHVsZXMKKyAgYXJlIHJlcXVpcmVkLiAgZ2l0LW11bHRpbWFpbCBkb2VzICpub3QqIGN1cnJlbnRseSB3b3JrIHdpdGggUHl0aG9uCisgIDMueC4KKworICBUaGUgZXhhbXBsZSBzY3JpcHRzIGludm9rZSBQeXRob24gdXNpbmcgdGhlIGZvbGxvd2luZyBzaGViYW5nIGxpbmUKKyAgKGZvbGxvd2luZyBQRVAgMzk0IFsxXSk6CisKKyAgICAgICMhIC91c3IvYmluL2VudiBweXRob24yCisKKyAgSWYgeW91ciBzeXN0ZW0ncyBQeXRob24yIGludGVycHJldGVyIGlzIG5vdCBpbiB5b3VyIFBBVEggb3IgaXMgbm90CisgIGNhbGxlZCAicHl0aG9uMiIsIHlvdSBjYW4gY2hhbmdlIHRoZSBsaW5lcyBhY2NvcmRpbmdseS4gIE9yIHlvdSBjYW4KKyAgaW52b2tlIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZXhwbGljaXRseSwgZm9yIGV4YW1wbGUgdmlhIGEgdGlueQorICBzaGVsbCBzY3JpcHQgbGlrZQorCisgICAgICAjISAvYmluL3NoCisgICAgICAvdXNyL2xvY2FsL2Jpbi9weXRob24gL3BhdGgvdG8vZ2l0X211bHRpbWFpbC5weSAiJEAiCisKKyogVGhlICJnaXQiIGNvbW1hbmQgbXVzdCBiZSBpbiB5b3VyIFBBVEguICBnaXQtbXVsdGltYWlsIGlzIGtub3duIHRvCisgIHdvcmsgd2l0aCBHaXQgdmVyc2lvbnMgYmFjayB0byAxLjcuMS4gIChFYXJsaWVyIHZlcnNpb25zIGhhdmUgbm90CisgIGJlZW4gdGVzdGVkOyBpZiB5b3UgZG8gc28sIHBsZWFzZSByZXBvcnQgeW91ciByZXN1bHRzLikKKworKiBUbyBzZW5kIGVtYWlscyB1c2luZyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLCBhIHN0YW5kYXJkIHNlbmRtYWlsCisgIHByb2dyYW0gbXVzdCBiZSBsb2NhdGVkIGF0ICcvdXNyL3NiaW4vc2VuZG1haWwnIGFuZCBjb25maWd1cmVkCisgIGNvcnJlY3RseSB0byBzZW5kIGVtYWlscy4gIElmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCBzZWUgdGhlCisgIG11bHRpbWFpbGhvb2subWFpbGVyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYmVsb3cgZm9yIGhvdyB0bworICBjb25maWd1cmUgZ2l0LW11bHRpbWFpbCB0byBzZW5kIGVtYWlscyB2aWEgYW4gU01UUCBzZXJ2ZXIuCisKKworSW52b2NhdGlvbgorLS0tLS0tLS0tLQorCitnaXRfbXVsdGltYWlsLnB5IGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMgYSAicG9zdC1yZWNlaXZlIiBob29rIGluIGEKK0dpdCByZXBvc2l0b3J5IChzZWUgZ2l0aG9va3MoNSkpLiAgTGluayBvciBjb3B5IGl0IHRvCiskR0lUX0RJUi9ob29rcy9wb3N0LXJlY2VpdmUgd2l0aGluIHRoZSByZXBvc2l0b3J5IGZvciB3aGljaCBlbWFpbAorbm90aWZpY2F0aW9ucyBhcmUgZGVzaXJlZC4gIFVzdWFsbHkgaXQgc2hvdWxkIGJlIGluc3RhbGxlZCBvbiB0aGUKK2NlbnRyYWwgcmVwb3NpdG9yeSBmb3IgYSBwcm9qZWN0LCB0byB3aGljaCBhbGwgY29tbWl0cyBhcmUgZXZlbnR1YWxseQorcHVzaGVkLgorCitGb3IgdXNlIG9uIHByZS12MS41LjEgR2l0IHNlcnZlcnMsIGdpdF9tdWx0aW1haWwucHkgY2FuIGFsc28gd29yayBhcworYW4gInVwZGF0ZSIgaG9vaywgdGFraW5nIGl0cyBhcmd1bWVudHMgb24gdGhlIGNvbW1hbmQgbGluZS4gIFRvIHVzZQordGhpcyBzY3JpcHQgaW4gdGhpcyBtYW5uZXIsIGxpbmsgb3IgY29weSBpdCB0byAkR0lUX0RJUi9ob29rcy91cGRhdGUuCitQbGVhc2Ugbm90ZSB0aGF0IHRoZSBzY3JpcHQgaXMgbm90IGNvbXBsZXRlbHkgcmVsaWFibGUgaW4gdGhpcyBtb2RlCitbMl0uCisKK0FsdGVybmF0aXZlbHksIGdpdF9tdWx0aW1haWwucHkgY2FuIGJlIGltcG9ydGVkIGFzIGEgUHl0aG9uIG1vZHVsZQoraW50byB5b3VyIG93biBQeXRob24gcG9zdC1yZWNlaXZlIHNjcmlwdC4gIFRoaXMgbWV0aG9kIGlzIGEgYml0IG1vcmUKK3dvcmssIGJ1dCBhbGxvd3MgdGhlIGJlaGF2aW9yIG9mIHRoZSBob29rIHRvIGJlIGN1c3RvbWl6ZWQgdXNpbmcKK2FyYml0cmFyeSBQeXRob24gY29kZS4gIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBlbnZpcm9ubWVudAorKHBlcmhhcHMgaW5oZXJpdGluZyBmcm9tIEdlbmVyaWNFbnZpcm9ubWVudCBvciBHaXRvbGl0ZUVudmlyb25tZW50KSB0bworCisqIGNoYW5nZSBob3cgdGhlIHVzZXIgd2hvIGRpZCB0aGUgcHVzaCBpcyBkZXRlcm1pbmVkCisKKyogcmVhZCB1c2VycycgZW1haWwgYWRkcmVzc2VzIGZyb20gYW4gTERBUCBzZXJ2ZXIgb3IgZnJvbSBhIGRhdGFiYXNlCisKKyogZGVjaWRlIHdoaWNoIHVzZXJzIHNob3VsZCBiZSBub3RpZmllZCBhYm91dCB3aGljaCBjb21taXRzIGJhc2VkIG9uCisgIHRoZSBjb250ZW50cyBvZiB0aGUgY29tbWl0cyAoZS5nLiwgZm9yIHVzZXJzIHdobyB3YW50IHRvIGJlIG5vdGlmaWVkCisgIG9ubHkgYWJvdXQgY2hhbmdlcyBhZmZlY3RpbmcgcGFydGljdWxhciBmaWxlcyBvciBzdWJkaXJlY3RvcmllcykKKworT3IgeW91IGNhbiBjaGFuZ2UgaG93IGVtYWlscyBhcmUgc2VudCBieSB3cml0aW5nIHlvdXIgb3duIE1haWxlcgorY2xhc3MuICBUaGUgInBvc3QtcmVjZWl2ZSIgc2NyaXB0IGluIHRoaXMgZGlyZWN0b3J5IGRlbW9uc3RyYXRlcyBob3cKK3RvIHVzZSBnaXRfbXVsdGltYWlsLnB5IGFzIGEgUHl0aG9uIG1vZHVsZS4gIChJZiB5b3UgbWFrZSBpbnRlcmVzdGluZworY2hhbmdlcyBvZiB0aGlzIHR5cGUsIHBsZWFzZSBjb25zaWRlciBzaGFyaW5nIHRoZW0gd2l0aCB0aGUKK2NvbW11bml0eS4pCisKKworQ29uZmlndXJhdGlvbgorLS0tLS0tLS0tLS0tLQorCitCeSBkZWZhdWx0LCBnaXQtbXVsdGltYWlsIG1vc3RseSB0YWtlcyBpdHMgY29uZmlndXJhdGlvbiBmcm9tIHRoZQorZm9sbG93aW5nICJnaXQgY29uZmlnIiBzZXR0aW5nczoKKworbXVsdGltYWlsaG9vay5lbnZpcm9ubWVudAorCisgICAgVGhpcyBkZXNjcmliZXMgdGhlIGdlbmVyYWwgZW52aXJvbm1lbnQgb2YgdGhlIHJlcG9zaXRvcnkuCisgICAgQ3VycmVudGx5IHN1cHBvcnRlZCB2YWx1ZXM6CisKKyAgICAiZ2VuZXJpYyIgLS0gdGhlIHVzZXJuYW1lIG9mIHRoZSBwdXNoZXIgaXMgcmVhZCBmcm9tICRVU0VSIGFuZCB0aGUKKyAgICAgICAgcmVwb3NpdG9yeSBuYW1lIGlzIGRlcml2ZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSdzIHBhdGguCisKKyAgICAiZ2l0b2xpdGUiIC0tIHRoZSB1c2VybmFtZSBvZiB0aGUgcHVzaGVyIGlzIHJlYWQgZnJvbSAkR0xfVVNFUiBhbmQKKyAgICAgICAgdGhlIHJlcG9zaXRvcnkgbmFtZSBmcm9tICRHTF9SRVBPLgorCisgICAgSWYgbmVpdGhlciBvZiB0aGVzZSBlbnZpcm9ubWVudHMgaXMgc3VpdGFibGUgZm9yIHlvdXIgc2V0dXAsIHRoZW4KKyAgICB5b3UgY2FuIGltcGxlbWVudCBhIFB5dGhvbiBjbGFzcyB0aGF0IGluaGVyaXRzIGZyb20gRW52aXJvbm1lbnQKKyAgICBhbmQgaW5zdGFudGlhdGUgaXQgdmlhIGEgc2NyaXB0IHRoYXQgbG9va3MgbGlrZSB0aGUgZXhhbXBsZQorICAgIHBvc3QtcmVjZWl2ZSBzY3JpcHQuCisKKyAgICBUaGUgZW52aXJvbm1lbnQgdmFsdWUgY2FuIGJlIHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZCBsaW5lIHVzaW5nCisgICAgdGhlIC0tZW52aXJvbm1lbnQgb3B0aW9uLiAgSWYgaXQgaXMgbm90IHNwZWNpZmllZCBvbiB0aGUgY29tbWFuZAorICAgIGxpbmUgb3IgYnkgbXVsdGltYWlsaG9vay5lbnZpcm9ubWVudCwgdGhlbiBpdCBkZWZhdWx0cyB0bworICAgICJnaXRvbGl0ZSIgaWYgdGhlIGVudmlyb25tZW50IGNvbnRhaW5zIHZhcmlhYmxlcyAkR0xfVVNFUiBhbmQKKyAgICAkR0xfUkVQTzsgb3RoZXJ3aXNlICJnZW5lcmljIi4KKworbXVsdGltYWlsaG9vay5yZXBvTmFtZQorCisgICAgQSBzaG9ydCBuYW1lIG9mIHRoaXMgR2l0IHJlcG9zaXRvcnksIHRvIGJlIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMKKyAgICBpbiB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRleHQuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgJEdMX1JFUE8KKyAgICBmb3IgZ2l0b2xpdGUgcmVwb3NpdG9yaWVzLCBvciBvdGhlcndpc2UgdG8gZGVyaXZlIHRoaXMgdmFsdWUgZnJvbQorICAgIHRoZSByZXBvc2l0b3J5IHBhdGggbmFtZS4KKworbXVsdGltYWlsaG9vay5tYWlsaW5nbGlzdAorCisgICAgVGhlIGxpc3Qgb2YgZW1haWwgYWRkcmVzc2VzIHRvIHdoaWNoIG5vdGlmaWNhdGlvbiBlbWFpbHMgc2hvdWxkIGJlCisgICAgc2VudCwgYXMgUkZDIDI4MjIgZW1haWwgYWRkcmVzc2VzIHNlcGFyYXRlZCBieSBjb21tYXMuICBUaGlzCisgICAgY29uZmlndXJhdGlvbiBvcHRpb24gY2FuIGJlIG11bHRpdmFsdWVkLiAgTGVhdmUgaXQgdW5zZXQgb3Igc2V0IGl0CisgICAgdG8gdGhlIGVtcHR5IHN0cmluZyB0byBub3Qgc2VuZCBlbWFpbHMgYnkgZGVmYXVsdC4gIFRoZSBuZXh0IGZldworICAgIHNldHRpbmdzIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBzcGVjaWZpYyBhZGRyZXNzIGxpc3RzIGZvcgorICAgIHNwZWNpZmljIHR5cGVzIG9mIG5vdGlmaWNhdGlvbiBlbWFpbC4KKworbXVsdGltYWlsaG9vay5yZWZjaGFuZ2VMaXN0CisKKyAgICBUaGUgbGlzdCBvZiBlbWFpbCBhZGRyZXNzZXMgdG8gd2hpY2ggc3VtbWFyeSBlbWFpbHMgYWJvdXQKKyAgICByZWZlcmVuY2UgY2hhbmdlcyBzaG91bGQgYmUgc2VudCwgYXMgUkZDIDI4MjIgZW1haWwgYWRkcmVzc2VzCisgICAgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gIFRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gY2FuIGJlCisgICAgbXVsdGl2YWx1ZWQuICBUaGUgZGVmYXVsdCBpcyB0aGUgdmFsdWUgaW4KKyAgICBtdWx0aW1haWxob29rLm1haWxpbmdsaXN0LiAgU2V0IHRoaXMgdmFsdWUgdG8gdGhlIGVtcHR5IHN0cmluZyB0bworICAgIHByZXZlbnQgcmVmZXJlbmNlIGNoYW5nZSBlbWFpbHMgZnJvbSBiZWluZyBzZW50LgorCittdWx0aW1haWxob29rLmFubm91bmNlTGlzdAorCisgICAgVGhlIGxpc3Qgb2YgZW1haWwgYWRkcmVzc2VzIHRvIHdoaWNoIGVtYWlscyBhYm91dCBuZXcgYW5ub3RhdGVkCisgICAgdGFncyBzaG91bGQgYmUgc2VudCwgYXMgUkZDIDI4MjIgZW1haWwgYWRkcmVzc2VzIHNlcGFyYXRlZCBieQorICAgIGNvbW1hcy4gIFRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24gY2FuIGJlIG11bHRpdmFsdWVkLiAgVGhlCisgICAgZGVmYXVsdCBpcyB0aGUgdmFsdWUgaW4gbXVsdGltYWlsaG9vay5yZWZjaGFuZ2VsaXN0IG9yCisgICAgbXVsdGltYWlsaG9vay5tYWlsaW5nbGlzdC4gIFNldCB0aGlzIHZhbHVlIHRvIHRoZSBlbXB0eSBzdHJpbmcgdG8KKyAgICBwcmV2ZW50IGFubm90YXRlZCB0YWcgYW5ub3VuY2VtZW50IGVtYWlscyBmcm9tIGJlaW5nIHNlbnQuCisKK211bHRpbWFpbGhvb2suY29tbWl0TGlzdAorCisgICAgVGhlIGxpc3Qgb2YgZW1haWwgYWRkcmVzc2VzIHRvIHdoaWNoIGVtYWlscyBhYm91dCBpbmRpdmlkdWFsIG5ldworICAgIGNvbW1pdHMgc2hvdWxkIGJlIHNlbnQsIGFzIFJGQyAyODIyIGVtYWlsIGFkZHJlc3NlcyBzZXBhcmF0ZWQgYnkKKyAgICBjb21tYXMuICBUaGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNhbiBiZSBtdWx0aXZhbHVlZC4gIFRoZQorICAgIGRlZmF1bHQgaXMgdGhlIHZhbHVlIGluIG11bHRpbWFpbGhvb2subWFpbGluZ2xpc3QuICBTZXQgdGhpcyB2YWx1ZQorICAgIHRvIHRoZSBlbXB0eSBzdHJpbmcgdG8gcHJldmVudCBub3RpZmljYXRpb24gZW1haWxzIGFib3V0CisgICAgaW5kaXZpZHVhbCBjb21taXRzIGZyb20gYmVpbmcgc2VudC4KKworbXVsdGltYWlsaG9vay5hbm5vdW5jZVNob3J0bG9nCisKKyAgICBJZiB0aGlzIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiBlbWFpbHMgYWJvdXQgY2hhbmdlcyB0bworICAgIGFubm90YXRlZCB0YWdzIGluY2x1ZGUgYSBzaG9ydGxvZyBvZiBjaGFuZ2VzIHNpbmNlIHRoZSBwcmV2aW91cworICAgIHRhZy4gIFRoaXMgY2FuIGJlIHVzZWZ1bCBpZiB0aGUgYW5ub3RhdGVkIHRhZ3MgcmVwcmVzZW50IHJlbGVhc2VzOworICAgIHRoZW4gdGhlIHNob3J0bG9nIHdpbGwgYmUgYSBraW5kIG9mIHJvdWdoIHN1bW1hcnkgb2Ygd2hhdCBoYXMKKyAgICBoYXBwZW5lZCBzaW5jZSB0aGUgbGFzdCByZWxlYXNlLiAgQnV0IGlmIHlvdXIgdGFnZ2luZyBwb2xpY3kgaXMKKyAgICBub3Qgc28gc3RyYWlnaHRmb3J3YXJkLCB0aGVuIHRoZSBzaG9ydGxvZyBtaWdodCBiZSBjb25mdXNpbmcKKyAgICByYXRoZXIgdGhhbiB1c2VmdWwuICBEZWZhdWx0IGlzIGZhbHNlLgorCittdWx0aW1haWxob29rLnJlZmNoYW5nZVNob3dMb2cKKworICAgIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byB0cnVlLCB0aGVuIHN1bW1hcnkgZW1haWxzIGFib3V0IHJlZmVyZW5jZQorICAgIGNoYW5nZXMgd2lsbCBpbmNsdWRlIGEgZGV0YWlsZWQgbG9nIG9mIHRoZSBhZGRlZCBjb21taXRzIGluCisgICAgYWRkaXRpb24gdG8gdGhlIG9uZSBsaW5lIHN1bW1hcnkuICBUaGUgbG9nIGlzIGdlbmVyYXRlZCBieSBydW5uaW5nCisgICAgImdpdCBsb2ciIHdpdGggdGhlIG9wdGlvbnMgc3BlY2lmaWVkIGluIG11bHRpbWFpbGhvb2subG9nT3B0cy4KKyAgICBEZWZhdWx0IGlzIGZhbHNlLgorCittdWx0aW1haWxob29rLm1haWxlcgorCisgICAgVGhpcyBvcHRpb24gY2hhbmdlcyB0aGUgd2F5IGVtYWlscyBhcmUgc2VudC4gIEFjY2VwdGVkIHZhbHVlcyBhcmU6CisKKyAgICAtIHNlbmRtYWlsICh0aGUgZGVmYXVsdCk6IHVzZSB0aGUgY29tbWFuZCAvdXNyL3NiaW4vc2VuZG1haWwgb3IKKyAgICAgIC91c3IvbGliL3NlbmRtYWlsIChvciBzZW5kbWFpbENvbW1hbmQsIGlmIGNvbmZpZ3VyZWQpLiAgVGhpcworICAgICAgbW9kZSBjYW4gYmUgZnVydGhlciBjdXN0b21pemVkIHZpYSB0aGUgZm9sbG93aW5nIG9wdGlvbnM6CisKKyAgICAgICBtdWx0aW1haWxob29rLnNlbmRtYWlsQ29tbWFuZAorCisgICAgICAgICAgIFRoZSBjb21tYW5kIHVzZWQgYnkgbWFpbGVyICJzZW5kbWFpbCIgdG8gc2VuZCBlbWFpbHMuICBTaGVsbAorICAgICAgICAgICBxdW90aW5nIGlzIGFsbG93ZWQgaW4gdGhlIHZhbHVlIG9mIHRoaXMgc2V0dGluZywgYnV0IHJlbWVtYmVyIHRoYXQKKyAgICAgICAgICAgR2l0IHJlcXVpcmVzIGRvdWJsZS1xdW90ZXMgdG8gYmUgZXNjYXBlZDsgZS5nLiwKKworICAgICAgICAgICAgIGdpdCBjb25maWcgbXVsdGltYWlsaG9vay5zZW5kbWFpbGNvbW1hbmQgJy91c3Ivc2Jpbi9zZW5kbWFpbCAtdCAtRiBcIkdpdCBSZXBvXCInCisKKyAgICAgICAgICAgRGVmYXVsdCBpcyAnL3Vzci9zYmluL3NlbmRtYWlsIC10JyBvciAnL3Vzci9saWIvc2VuZG1haWwKKyAgICAgICAgICAgLXQnIChkZXBlbmRpbmcgb24gd2hpY2ggZmlsZSBpcyBwcmVzZW50IGFuZCBleGVjdXRhYmxlKS4KKworICAgICAgIG11bHRpbWFpbGhvb2suZW52ZWxvcGVTZW5kZXIKKworICAgICAgICAgICBJZiBzZXQgdGhlbiBwYXNzIHRoaXMgdmFsdWUgdG8gc2VuZG1haWwgdmlhIHRoZSAtZiBvcHRpb24gdG8gc2V0CisgICAgICAgICAgIHRoZSBlbnZlbG9wZSBzZW5kZXIgYWRkcmVzcy4KKworICAgIC0gc210cDogdXNlIFB5dGhvbidzIHNtdHBsaWIuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIHRoZSBzZW5kbWFpbAorICAgICAgY29tbWFuZCBpcyBub3QgYXZhaWxhYmxlIG9uIHRoZSBzeXN0ZW0uICBUaGlzIG1vZGUgY2FuIGJlCisgICAgICBmdXJ0aGVyIGN1c3RvbWl6ZWQgdmlhIHRoZSBmb2xsb3dpbmcgb3B0aW9uczoKKworICAgICAgIG11bHRpbWFpbGhvb2suc210cFNlcnZlcgorCisgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBTTVRQIHNlcnZlciB0byBjb25uZWN0IHRvLiAgVGhlIHZhbHVlIGNhbgorICAgICAgICAgICBhbHNvIGluY2x1ZGUgYSBjb2xvbiBhbmQgYSBwb3J0IG51bWJlcjsgZS5nLiwKKyAgICAgICAgICAgIm1haWwuZXhhbXBsZS5jb206MjUiLiAgRGVmYXVsdCBpcyAnbG9jYWxob3N0JyB1c2luZyBwb3J0CisgICAgICAgICAgIDI1LgorCisgICAgICAgbXVsdGltYWlsaG9vay5lbnZlbG9wZVNlbmRlcgorCisgICAgICAgICAgIFRoZSBzZW5kZXIgYWRkcmVzcyB0byBiZSBwYXNzZWQgdG8gdGhlIFNNVFAgc2VydmVyLiAgSWYKKyAgICAgICAgICAgdW5zZXQsIHRoZW4gdGhlIHZhbHVlIG9mIG11bHRpbWFpbGhvb2suZnJvbSBpcyB1c2VkLgorCittdWx0aW1haWxob29rLmZyb20KKworICAgIElmIHNldCB0aGVuIHVzZSB0aGlzIHZhbHVlIGluIHRoZSBGcm9tOiBmaWVsZCBvZiBnZW5lcmF0ZWQgZW1haWxzLgorICAgIElmIHVuc2V0LCB0aGVuIHVzZSB0aGUgcmVwb3NpdG9yeSdzIHVzZXIgY29uZmlndXJhdGlvbiAodXNlci5uYW1lCisgICAgYW5kIHVzZXIuZW1haWwpLiAgSWYgdXNlci5lbWFpbCBpcyBhbHNvIHVuc2V0LCB0aGVuIHVzZQorICAgIG11bHRpbWFpbGhvb2suZW52ZWxvcGVTZW5kZXIuCisKK211bHRpbWFpbGhvb2suYWRtaW5pc3RyYXRvcgorCisgICAgVGhlIG5hbWUgYW5kL29yIGVtYWlsIGFkZHJlc3Mgb2YgdGhlIGFkbWluaXN0cmF0b3Igb2YgdGhlIEdpdAorICAgIHJlcG9zaXRvcnk7IHVzZWQgaW4gRk9PVEVSX1RFTVBMQVRFLiAgRGVmYXVsdCBpcworICAgIG11bHRpbWFpbGhvb2suZW52ZWxvcGVzZW5kZXIgaWYgaXQgaXMgc2V0OyBvdGhlcndpc2UgYSBnZW5lcmljCisgICAgc3RyaW5nIGlzIHVzZWQuCisKK211bHRpbWFpbGhvb2suZW1haWxQcmVmaXgKKworICAgIEFsbCBlbWFpbHMgaGF2ZSB0aGlzIHN0cmluZyBwcmVwZW5kZWQgdG8gdGhlaXIgc3ViamVjdHMsIHRvIGFpZAorICAgIGVtYWlsIGZpbHRlcmluZyAodGhvdWdoIGZpbHRlcmluZyBiYXNlZCBvbiB0aGUgWC1HaXQtKiBlbWFpbAorICAgIGhlYWRlcnMgaXMgcHJvYmFibHkgbW9yZSByb2J1c3QpLiAgRGVmYXVsdCBpcyB0aGUgc2hvcnQgbmFtZSBvZgorICAgIHRoZSByZXBvc2l0b3J5IGluIHNxdWFyZSBicmFja2V0czsgZS5nLiwgIltteXJlcG9dIi4KKworbXVsdGltYWlsaG9vay5lbWFpbE1heExpbmVzCisKKyAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgbGluZXMgdGhhdCBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIGJvZHkgb2YKKyAgICBhIGdlbmVyYXRlZCBlbWFpbC4gIElmIG5vdCBzcGVjaWZpZWQsIHRoZXJlIGlzIG5vIGxpbWl0LiAgTGluZXMKKyAgICBiZXlvbmQgdGhlIGxpbWl0IGFyZSBzdXBwcmVzc2VkIGFuZCBjb3VudGVkLCBhbmQgYSBmaW5hbCBsaW5lIGlzCisgICAgYWRkZWQgaW5kaWNhdGluZyB0aGUgbnVtYmVyIG9mIHN1cHByZXNzZWQgbGluZXMuCisKK211bHRpbWFpbGhvb2suZW1haWxNYXhMaW5lTGVuZ3RoCisKKyAgICBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBsaW5lIGluIHRoZSBlbWFpbCBib2R5LiAgTGluZXMgbG9uZ2VyIHRoYW4KKyAgICB0aGlzIGxpbWl0IGFyZSB0cnVuY2F0ZWQgdG8gdGhpcyBsZW5ndGggd2l0aCBhIHRyYWlsaW5nICIgWy4uLl0iCisgICAgYWRkZWQgdG8gaW5kaWNhdGUgdGhlIG1pc3NpbmcgdGV4dC4gIFRoZSBkZWZhdWx0IGlzIDUwMCwgYmVjYXVzZQorICAgIChhKSBkaWZmcyB3aXRoIGxvbmdlciBsaW5lcyBhcmUgcHJvYmFibHkgZnJvbSBiaW5hcnkgZmlsZXMsIGZvcgorICAgIHdoaWNoIGEgZGlmZiBpcyB1c2VsZXNzLCBhbmQgKGIpIGV2ZW4gaWYgYSB0ZXh0IGZpbGUgaGFzIHN1Y2ggbG9uZworICAgIGxpbmVzLCB0aGUgZGlmZnMgYXJlIHByb2JhYmx5IHVucmVhZGFibGUgYW55d2F5LiAgVG8gZGlzYWJsZSBsaW5lCisgICAgdHJ1bmNhdGlvbiwgc2V0IHRoaXMgb3B0aW9uIHRvIDAuCisKK211bHRpbWFpbGhvb2subWF4Q29tbWl0RW1haWxzCisKKyAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29tbWl0IGVtYWlscyB0byBzZW5kIGZvciBhIGdpdmVuIGNoYW5nZS4KKyAgICBXaGVuIHRoZSBudW1iZXIgb2YgcGF0Y2hlcyBpcyBsYXJnZXIgdGhhdCB0aGlzIHZhbHVlLCBvbmx5IHRoZQorICAgIHN1bW1hcnkgcmVmY2hhbmdlIGVtYWlsIGlzIHNlbnQuICBUaGlzIGNhbiBhdm9pZCBhY2NpZGVudGFsCisgICAgbWFpbGJvbWJpbmcsIGZvciBleGFtcGxlIG9uIGFuIGluaXRpYWwgcHVzaC4gIFRvIGRpc2FibGUgY29tbWl0CisgICAgZW1haWxzIGxpbWl0LCBzZXQgdGhpcyBvcHRpb24gdG8gMC4gIFRoZSBkZWZhdWx0IGlzIDUwMC4KKworbXVsdGltYWlsaG9vay5lbWFpbFN0cmljdFVURjgKKworICAgIElmIHRoaXMgYm9vbGVhbiBvcHRpb24gaXMgc2V0IHRvICJ0cnVlIiwgdGhlbiB0aGUgbWFpbiBwYXJ0IG9mIHRoZQorICAgIGVtYWlsIGJvZHkgaXMgZm9yY2VkIHRvIGJlIHZhbGlkIFVURi04LiAgQW55IGNoYXJhY3RlcnMgdGhhdCBhcmUKKyAgICBub3QgdmFsaWQgVVRGLTggYXJlIGNvbnZlcnRlZCB0byB0aGUgVW5pY29kZSByZXBsYWNlbWVudAorICAgIGNoYXJhY3RlciwgVStGRkZELiAgVGhlIGRlZmF1bHQgaXMgInRydWUiLgorCittdWx0aW1haWxob29rLmRpZmZPcHRzCisKKyAgICBPcHRpb25zIHBhc3NlZCB0byAiZ2l0IGRpZmYtdHJlZSIgd2hlbiBnZW5lcmF0aW5nIHRoZSBzdW1tYXJ5CisgICAgaW5mb3JtYXRpb24gZm9yIFJlZmVyZW5jZUNoYW5nZSBlbWFpbHMuICBEZWZhdWx0IGlzICItLXN0YXQKKyAgICAtLXN1bW1hcnkgLS1maW5kLWNvcGllcy1oYXJkZXIiLiAgQWRkIC1wIHRvIHRob3NlIG9wdGlvbnMgdG8KKyAgICBpbmNsdWRlIGEgdW5pZmllZCBkaWZmIG9mIGNoYW5nZXMgaW4gYWRkaXRpb24gdG8gdGhlIHVzdWFsIHN1bW1hcnkKKyAgICBvdXRwdXQuICBTaGVsbCBxdW90aW5nIGlzIGFsbG93ZWQ7IHNlZSBtdWx0aW1haWxob29rLmxvZ09wdHMgZm9yCisgICAgZGV0YWlscy4KKworbXVsdGltYWlsaG9vay5sb2dPcHRzCisKKyAgICBPcHRpb25zIHBhc3NlZCB0byAiZ2l0IGxvZyIgdG8gZ2VuZXJhdGUgYWRkaXRpb25hbCBpbmZvIGZvcgorICAgIHJlZmVyZW5jZSBjaGFuZ2UgZW1haWxzICh1c2VkIG9ubHkgaWYgcmVmY2hhbmdlU2hvd0xvZyBpcyBzZXQpLgorICAgIEZvciBleGFtcGxlLCBhZGRpbmcgLS1ncmFwaCB3aWxsIHNob3cgdGhlIGdyYXBoIG9mIHJldmlzaW9ucywgLXAKKyAgICB3aWxsIHNob3cgdGhlIGNvbXBsZXRlIGRpZmYsIGV0Yy4gIFRoZSBkZWZhdWx0IGlzIGVtcHR5LgorCisgICAgU2hlbGwgcXVvdGluZyBpcyBhbGxvd2VkOyBmb3IgZXhhbXBsZSwgYSBsb2cgZm9ybWF0IHRoYXQgY29udGFpbnMKKyAgICBzcGFjZXMgY2FuIGJlIHNwZWNpZmllZCB1c2luZyBzb21ldGhpbmcgbGlrZToKKworICAgICAgZ2l0IGNvbmZpZyBtdWx0aW1haWxob29rLmxvZ29wdHMgJy0tcHJldHR5PWZvcm1hdDoiJWggJWFOIDwlYUU+JW4lcyVuJW4lYiVuIicKKworICAgIElmIHlvdSB3YW50IHRvIHNldCB0aGlzIGJ5IGVkaXRpbmcgeW91ciBjb25maWd1cmF0aW9uIGZpbGUKKyAgICBkaXJlY3RseSwgcmVtZW1iZXIgdGhhdCBHaXQgcmVxdWlyZXMgZG91YmxlLXF1b3RlcyB0byBiZSBlc2NhcGVkCisgICAgKHNlZSBnaXQtY29uZmlnKDEpIGZvciBtb3JlIGluZm9ybWF0aW9uKToKKworICAgICAgW211bHRpbWFpbGhvb2tdCisgICAgICAgICAgICAgIGxvZ29wdHMgPSAtLXByZXR0eT1mb3JtYXQ6XCIlaCAlYU4gPCVhRT4lbiVzJW4lbiViJW5cIgorCittdWx0aW1haWxob29rLmVtYWlsRG9tYWluCisKKyAgICBEb21haW4gbmFtZSBhcHBlbmRlZCB0byB0aGUgdXNlcm5hbWUgb2YgdGhlIHBlcnNvbiBkb2luZyB0aGUgcHVzaAorICAgIHRvIGNvbnZlcnQgaXQgaW50byBhbiBlbWFpbCBhZGRyZXNzICh2aWEgIiVzQCVzIiAlICh1c2VybmFtZSwKKyAgICBlbWFpbGRvbWFpbikpLiAgTW9yZSBjb21wbGljYXRlZCBzY2hlbWVzIGNhbiBiZSBpbXBsZW1lbnRlZCBieQorICAgIG92ZXJyaWRpbmcgRW52aXJvbm1lbnQgYW5kIG92ZXJyaWRpbmcgaXRzIGdldF9wdXNoZXJfZW1haWwoKQorICAgIG1ldGhvZC4KKworbXVsdGltYWlsaG9vay5yZXBseVRvCittdWx0aW1haWxob29rLnJlcGx5VG9Db21taXQKK211bHRpbWFpbGhvb2sucmVwbHlUb1JlZmNoYW5nZQorCisgICAgQWRkcmVzc2VzIHRvIHVzZSBpbiB0aGUgUmVwbHktVG86IGZpZWxkIGZvciBjb21taXQgZW1haWxzCisgICAgKHJlcGx5VG9Db21taXQpIGFuZCByZWZjaGFuZ2UgZW1haWxzIChyZXBseVRvUmVmY2hhbmdlKS4KKyAgICBtdWx0aW1haWxob29rLnJlcGx5VG8gaXMgdXNlZCBhcyBkZWZhdWx0IHdoZW4gcmVwbHlUb0NvbW1pdCBvcgorICAgIHJlcGx5VG9SZWZjaGFuZ2UgaXMgbm90IHNldC4gIFRoZSB2YWx1ZSBmb3IgdGhlc2UgdmFyaWFibGVzIGNhbiBiZQorICAgIGVpdGhlcjoKKworICAgIC0gQW4gZW1haWwgYWRkcmVzcywgd2hpY2ggd2lsbCBiZSB1c2VkIGRpcmVjdGx5LgorCisgICAgLSBUaGUgdmFsdWUgInB1c2hlciIsIGluIHdoaWNoIGNhc2UgdGhlIHB1c2hlcidzIGFkZHJlc3MgKGlmCisgICAgICBhdmFpbGFibGUpIHdpbGwgYmUgdXNlZC4gIFRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIHJlZmNoYW5nZQorICAgICAgZW1haWxzLgorCisgICAgLSBUaGUgdmFsdWUgImF1dGhvciIgKG1lYW5pbmdmdWwgb25seSBmb3IgcmVwbHlUb0NvbW1pdCksIGluIHdoaWNoCisgICAgICBjYXNlIHRoZSBjb21taXQgYXV0aG9yJ3MgYWRkcmVzcyB3aWxsIGJlIHVzZWQuICBUaGlzIGlzIHRoZQorICAgICAgZGVmYXVsdCBmb3IgY29tbWl0IGVtYWlscy4KKworICAgIC0gVGhlIHZhbHVlICJub25lIiwgaW4gd2hpY2ggY2FzZSB0aGUgUmVwbHktVG86IGZpZWxkIHdpbGwgYmUKKyAgICAgIG9taXR0ZWQuCisKKworRW1haWwgZmlsdGVyaW5nIGFpZHMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FsbCBlbWFpbHMgaW5jbHVkZSBleHRyYSBoZWFkZXJzIHRvIGVuYWJsZSBmaW5lIHR1bmVkIGZpbHRlcmluZyBhbmQKK2dpdmUgaW5mb3JtYXRpb24gZm9yIGRlYnVnZ2luZy4gIEFsbCBlbWFpbHMgaW5jbHVkZSB0aGUgaGVhZGVycworIlgtR2l0LVJlcG8iLCAiWC1HaXQtUmVmbmFtZSIsIGFuZCAiWC1HaXQtUmVmdHlwZSIuICBSZWZlcmVuY2VDaGFuZ2UKK2VtYWlscyBhbHNvIGluY2x1ZGUgaGVhZGVycyAiWC1HaXQtT2xkcmV2IiBhbmQgIlgtR2l0LU5ld3JldiI7CitSZXZpc2lvbiBlbWFpbHMgYWxzbyBpbmNsdWRlIGhlYWRlciAiWC1HaXQtUmV2Ii4KKworCitDdXN0b21pemluZyBlbWFpbCBjb250ZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZ2l0LW11bHRpbWFpbCBtb3N0bHkgZ2VuZXJhdGVzIGVtYWlscyBieSBleHBhbmRpbmcgdGVtcGxhdGVzLiAgVGhlCit0ZW1wbGF0ZXMgY2FuIGJlIGN1c3RvbWl6ZWQuICBUbyBhdm9pZCB0aGUgbmVlZCB0byBlZGl0CitnaXRfbXVsdGltYWlsLnB5IGRpcmVjdGx5LCB0aGUgcHJlZmVycmVkIHdheSB0byBjaGFuZ2UgdGhlIHRlbXBsYXRlcworaXMgdG8gd3JpdGUgYSBzZXBhcmF0ZSBQeXRob24gc2NyaXB0IHRoYXQgaW1wb3J0cyBnaXRfbXVsdGltYWlsLnB5IGFzCithIG1vZHVsZSwgdGhlbiByZXBsYWNlcyB0aGUgdGVtcGxhdGVzIGluIHBsYWNlLiAgU2VlIHRoZSBwcm92aWRlZAorcG9zdC1yZWNlaXZlIHNjcmlwdCBmb3IgYW4gZXhhbXBsZSBvZiBob3cgdGhpcyBpcyBkb25lLgorCisKK0N1c3RvbWl6aW5nIGdpdC1tdWx0aW1haWwgZm9yIHlvdXIgZW52aXJvbm1lbnQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZ2l0LW11bHRpbWFpbCBpcyBtb3N0bHkgY3VzdG9taXplZCB2aWEgYW4gImVudmlyb25tZW50IiB0aGF0IGRlc2NyaWJlcwordGhlIGxvY2FsIGVudmlyb25tZW50IGluIHdoaWNoIEdpdCBpcyBydW5uaW5nLiAgVHdvIHR5cGVzIG9mCitlbnZpcm9ubWVudCBhcmUgYnVpbHQgaW46CisKKyogR2VuZXJpY0Vudmlyb25tZW50OiBhIHN0YW5kLWFsb25lIEdpdCByZXBvc2l0b3J5LgorCisqIEdpdG9saXRlRW52aXJvbm1lbnQ6IGEgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcyBtYW5hZ2VkIGJ5IGdpdG9saXRlCisgIFszXS4gIEZvciBzdWNoIHJlcG9zaXRvcmllcywgdGhlIGlkZW50aXR5IG9mIHRoZSBwdXNoZXIgaXMgcmVhZCBmcm9tCisgIGVudmlyb25tZW50IHZhcmlhYmxlICRHTF9VU0VSLCBhbmQgdGhlIG5hbWUgb2YgdGhlIHJlcG9zaXRvcnkgaXMKKyAgcmVhZCBmcm9tICRHTF9SRVBPIChpZiBpdCBpcyBub3Qgb3ZlcnJpZGRlbiBieQorICBtdWx0aW1haWxob29rLnJlcG9uYW1lKS4KKworQnkgZGVmYXVsdCwgZ2l0LW11bHRpbWFpbCBhc3N1bWVzIEdpdG9saXRlRW52aXJvbm1lbnQgaWYgJEdMX1VTRVIgYW5kCiskR0xfUkVQTyBhcmUgc2V0LCBhbmQgb3RoZXJ3aXNlIGFzc3VtZXMgR2VuZXJpY0Vudmlyb25tZW50LgorQWx0ZXJuYXRpdmVseSwgeW91IGNhbiBjaG9vc2Ugb25lIG9mIHRoZXNlIHR3byBlbnZpcm9ubWVudHMgZXhwbGljaXRseQorYnkgc2V0dGluZyBhICJtdWx0aW1haWxob29rLmVudmlyb25tZW50IiBjb25maWcgc2V0dGluZyAod2hpY2ggY2FuCitoYXZlIHRoZSB2YWx1ZSAiZ2VuZXJpYyIgb3IgImdpdG9saXRlIikgb3IgYnkgcGFzc2luZyBhbiAtLWVudmlyb25tZW50CitvcHRpb24gdG8gdGhlIHNjcmlwdC4KKworSWYgeW91IG5lZWQgdG8gY3VzdG9taXplIHRoZSBzY3JpcHQgaW4gd2F5cyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5Cit0aGUgZXhpc3RpbmcgZW52aXJvbm1lbnRzLCB5b3UgY2FuIGRlZmluZSB5b3VyIG93biBlbnZpcm9ubWVudCBjbGFzcworY2xhc3MgdXNpbmcgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlLiAgVG8gZG8gc28sIHlvdSBuZWVkIHRvIGltcG9ydAorZ2l0X211bHRpbWFpbC5weSBhcyBhIFB5dGhvbiBtb2R1bGUsIGFzIGRlbW9uc3RyYXRlZCBieSB0aGUgZXhhbXBsZQorcG9zdC1yZWNlaXZlIHNjcmlwdC4gIFRoZW4gaW1wbGVtZW50IHlvdXIgZW52aXJvbm1lbnQgY2xhc3M7IGl0IHNob3VsZAordXN1YWxseSBpbmhlcml0IGZyb20gb25lIG9mIHRoZSBleGlzdGluZyBFbnZpcm9ubWVudCBjbGFzc2VzIGFuZAorcG9zc2libHkgb25lIG9yIG1vcmUgb2YgdGhlIEVudmlyb25tZW50TWl4aW4gY2xhc3Nlcy4gIFRoZW4gc2V0IHRoZQorImVudmlyb25tZW50IiB2YXJpYWJsZSB0byBhbiBpbnN0YW5jZSBvZiB5b3VyIG93biBlbnZpcm9ubWVudCBjbGFzcworYW5kIHBhc3MgaXQgdG8gcnVuX2FzX3Bvc3RfcmVjZWl2ZV9ob29rKCkuCisKK1RoZSBzdGFuZGFyZCBlbnZpcm9ubWVudCBjbGFzc2VzLCBHZW5lcmljRW52aXJvbm1lbnQgYW5kCitHaXRvbGl0ZUVudmlyb25tZW50LCBhcmUgaW4gZmFjdCB0aGVtc2VsdmVzIHB1dCB0b2dldGhlciBvdXQgb2YgYQorbnVtYmVyIG9mIG1peGluIGNsYXNzZXMsIGVhY2ggb2Ygd2hpY2ggaGFuZGxlcyBvbmUgYXNwZWN0IG9mIHRoZQorY3VzdG9taXphdGlvbi4gIEZvciB0aGUgZmluZXN0IGNvbnRyb2wgb3ZlciB5b3VyIGNvbmZpZ3VyYXRpb24sIHlvdQorY2FuIHNwZWNpZnkgZXhhY3RseSB3aGljaCBtaXhpbiBjbGFzc2VzIHlvdXIgb3duIGVudmlyb25tZW50IGNsYXNzCitzaG91bGQgaW5oZXJpdCBmcm9tLCBhbmQgb3ZlcnJpZGUgaW5kaXZpZHVhbCBtZXRob2RzIChvciBldmVuIGFkZCB5b3VyCitvd24gbWl4aW4gY2xhc3NlcykgdG8gaW1wbGVtZW50IGVudGlyZWx5IG5ldyBiZWhhdmlvcnMuICBJZiB5b3UKK2ltcGxlbWVudCBhbnkgbWl4aW5zIHRoYXQgbWlnaHQgYmUgdXNlZnVsIHRvIG90aGVyIHBlb3BsZSwgcGxlYXNlCitjb25zaWRlciBzaGFyaW5nIHRoZW0gd2l0aCB0aGUgY29tbXVuaXR5IQorCisKK0dldHRpbmcgaW52b2x2ZWQKKy0tLS0tLS0tLS0tLS0tLS0KKworZ2l0LW11bHRpbWFpbCBpcyBhbiBvcGVuLXNvdXJjZSBwcm9qZWN0LCBidWlsdCBieSB2b2x1bnRlZXJzLiAgV2UKK3dvdWxkIHdlbGNvbWUgeW91ciBoZWxwIQorCitUaGUgY3VycmVudCBtYWludGFpbmVyIGlzIE1pY2hhZWwgSGFnZ2VydHkgPG1oYWdnZXJAYWx1bS5taXQuZWR1Pi4KKworR2VuZXJhbCBkaXNjdXNzaW9uIG9mIGdpdC1tdWx0aW1haWwgdGFrZXMgcGxhY2Ugb24gdGhlIG1haW4gR2l0CittYWlsaW5nIGxpc3QsCisKKyAgICBnaXRAdmdlci5rZXJuZWwub3JnCisKK1BsZWFzZSBDQyBlbWFpbHMgcmVnYXJkaW5nIGdpdC1tdWx0aW1haWwgdG8gbWUgc28gdGhhdCBJIGRvbid0CitvdmVybG9vayB0aGVtLgorCitUaGUgZ2l0LW11bHRpbWFpbCBwcm9qZWN0IGl0c2VsZiBpcyBjdXJyZW50bHkgaG9zdGVkIG9uIEdpdEh1YjoKKworICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9taGFnZ2VyL2dpdC1tdWx0aW1haWwKKworV2UgdXNlIHRoZSBHaXRIdWIgaXNzdWUgdHJhY2tlciB0byBrZWVwIHRyYWNrIG9mIGJ1Z3MgYW5kIGZlYXR1cmUKK3JlcXVlc3RzLCBhbmQgR2l0SHViIHB1bGwgcmVxdWVzdHMgdG8gZXhjaGFuZ2UgcGF0Y2hlcyAodGhvdWdoLCBpZiB5b3UKK3ByZWZlciwgeW91IGNhbiBzZW5kIHBhdGNoZXMgdmlhIHRoZSBHaXQgbWFpbGluZyBsaXN0IHdpdGggY2MgdG8gbWUpLgorCitQbGVhc2Ugbm90ZSB0aGF0IGFsdGhvdWdoIGEgY29weSBvZiBnaXQtbXVsdGltYWlsIHdpbGwgcHJvYmFibHkgYmUKK2Rpc3RyaWJ1dGVkIGluIHRoZSAiY29udHJpYiIgc2VjdGlvbiBvZiB0aGUgbWFpbiBHaXQgcHJvamVjdCwKK2RldmVsb3BtZW50IHRha2VzIHBsYWNlIGluIHRoZSBzZXBhcmF0ZSBnaXQtbXVsdGltYWlsIHJlcG9zaXRvcnkgb24KK0dpdEh1YiEgIChXaGVuZXZlciBlbm91Z2ggY2hhbmdlcyB0byBnaXQtbXVsdGltYWlsIGhhdmUgYWNjdW11bGF0ZWQsIGEKK25ldyBjb2RlLWRyb3Agb2YgZ2l0LW11bHRpbWFpbCB3aWxsIGJlIHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZQorR2l0IHByb2plY3QuKQorCisKK0Zvb3Rub3RlcworLS0tLS0tLS0tCisKK1sxXSBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTAzOTQvCisKK1syXSBCZWNhdXNlIG9mIHRoZSB3YXkgaW5mb3JtYXRpb24gaXMgcGFzc2VkIHRvIHVwZGF0ZSBob29rcywgdGhlCisgICAgc2NyaXB0J3MgbWV0aG9kIG9mIGRldGVybWluaW5nIHdoZXRoZXIgYSBjb21taXQgaGFzIGFscmVhZHkgYmVlbgorICAgIHNlZW4gZG9lcyBub3Qgd29yayB3aGVuIGl0IGlzIHVzZWQgYXMgYW4gInVwZGF0ZSIgc2NyaXB0LiAgSW4KKyAgICBwYXJ0aWN1bGFyLCBubyBub3RpZmljYXRpb24gZW1haWwgd2lsbCBiZSBnZW5lcmF0ZWQgZm9yIGEgbmV3CisgICAgY29tbWl0IHRoYXQgaXMgYWRkZWQgdG8gbXVsdGlwbGUgcmVmZXJlbmNlcyBpbiB0aGUgc2FtZSBwdXNoLgorCitbM10gaHR0cHM6Ly9naXRodWIuY29tL3NpdGFyYW1jL2dpdG9saXRlCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL211bHRpbWFpbC9SRUFETUUuR2l0IGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvUkVBRE1FLkdpdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzJlNjZhCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvUkVBRE1FLkdpdApAQCAtMCwwICsxLDE1IEBACitUaGlzIGNvcHkgb2YgZ2l0LW11bHRpbWFpbCBpcyBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIHRoZSAiY29udHJpYiIKK3NlY3Rpb24gb2YgdGhlIEdpdCBwcm9qZWN0IGFzIGEgY29udmVuaWVuY2UgdG8gR2l0IHVzZXJzLgorZ2l0LW11bHRpbWFpbCBpcyBkZXZlbG9wZWQgYXMgYW4gaW5kZXBlbmRlbnQgcHJvamVjdCBhdCB0aGUgZm9sbG93aW5nCit3ZWJzaXRlOgorCisgICAgaHR0cHM6Ly9naXRodWIuY29tL21oYWdnZXIvZ2l0LW11bHRpbWFpbAorCitUaGUgdmVyc2lvbiBpbiB0aGlzIGRpcmVjdG9yeSB3YXMgb2J0YWluZWQgZnJvbSB0aGUgdXBzdHJlYW0gcHJvamVjdAorb24gMjAxMy0wNy0xNCBhbmQgY29uc2lzdHMgb2YgdGhlICJnaXQtbXVsdGltYWlsIiBzdWJkaXJlY3RvcnkgZnJvbQorcmV2aXNpb24KKworICAgIDFhNWNiMDljNjk4YTc0ZDE1YTcxNWE4NmIwOWVhZDVmNTZiZjRiMDYKKworUGxlYXNlIHNlZSB0aGUgUkVBRE1FIGZpbGUgaW4gdGhpcyBkaXJlY3RvcnkgZm9yIGluZm9ybWF0aW9uIGFib3V0IGhvdwordG8gcmVwb3J0IGJ1Z3Mgb3IgY29udHJpYnV0ZSB0byBnaXQtbXVsdGltYWlsLgpkaWZmIC0tZ2l0IGEvY29udHJpYi9ob29rcy9tdWx0aW1haWwvUkVBRE1FLm1pZ3JhdGUtZnJvbS1wb3N0LXJlY2VpdmUtZW1haWwgYi9jb250cmliL2hvb2tzL211bHRpbWFpbC9SRUFETUUubWlncmF0ZS1mcm9tLXBvc3QtcmVjZWl2ZS1lbWFpbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTZhOTc2Ci0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvUkVBRE1FLm1pZ3JhdGUtZnJvbS1wb3N0LXJlY2VpdmUtZW1haWwKQEAgLTAsMCArMSwxNDUgQEAKK2dpdC1tdWx0aW1haWwgaXMgY2xvc2UgdG8sIGJ1dCBub3QgZXhhY3RseSwgYSBwbHVnLWluIHJlcGxhY2VtZW50IGZvcgordGhlIG9sZCBHaXQgcHJvamVjdCBzY3JpcHQgY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwuICBUaGlzCitkb2N1bWVudCBkZXNjcmliZXMgdGhlIGRpZmZlcmVuY2VzIGFuZCBleHBsYWlucyBob3cgdG8gY29uZmlndXJlCitnaXQtbXVsdGltYWlsIHRvIGdldCBiZWhhdmlvciBjbG9zZXN0IHRvIHRoYXQgb2YgcG9zdC1yZWNlaXZlLWVtYWlsLgorCitJZiB5b3UgYXJlIGluIGEgaHVycnkKKz09PT09PT09PT09PT09PT09PT09PQorCitBIHNjcmlwdCBjYWxsZWQgbWlncmF0ZS1tYWlsaG9vay1jb25maWcgaXMgaW5jbHVkZWQgd2l0aAorZ2l0LW11bHRpbWFpbC4gIElmIHlvdSBydW4gdGhpcyBzY3JpcHQgd2l0aGluIGEgR2l0IHJlcG9zaXRvcnkgdGhhdCBpcworY29uZmlndXJlZCB0byB1c2UgcG9zdC1yZWNlaXZlLWVtYWlsLCBpdCB3aWxsIGNvbnZlcnQgdGhlCitjb25maWd1cmF0aW9uIHNldHRpbmdzIGludG8gdGhlIGFwcHJveGltYXRlIGVxdWl2YWxlbnQgc2V0dGluZ3MgZm9yCitnaXQtbXVsdGltYWlsLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHJ1bgorCisgICAgbWlncmF0ZS1tYWlsaG9vay1jb25maWcgLS1oZWxwCisKKworQ29uZmlndXJhdGlvbiBkaWZmZXJlbmNlcworPT09PT09PT09PT09PT09PT09PT09PT09PQorCisqIFRoZSBuYW1lcyBvZiB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIGdpdC1tdWx0aW1haWwgYXJlIGluIG5hbWVzcGFjZQorICAibXVsdGltYWlsaG9vay4qIiBpbnN0ZWFkIG9mICJob29rcy4qIi4gIChFZGl0b3JpYWwgY29tbWVudDoKKyAgcG9zdC1yZWNlaXZlLWVtYWlsIHNob3VsZCBuZXZlciBoYXZlIHVzZWQgc3VjaCBhIGdlbmVyaWMgdG9wLWxldmVsCisgIG5hbWVzcGFjZS4pCisKKyogSW4gZW1haWxzIGFib3V0IG5ldyBhbm5vdGF0ZWQgdGFncywgcG9zdC1yZWNlaXZlLWVtYWlsIGluY2x1ZGVzIGEKKyAgc2hvcnRsb2cgb2YgYWxsIGNoYW5nZXMgc2luY2UgdGhlIHByZXZpb3VzIGFubm90YXRlZCB0YWcuICBUbyBnZXQKKyAgdGhpcyBiZWhhdmlvciB3aXRoIGdpdC1tdWx0aW1haWwsIHlvdSBuZWVkIHRvIHNldAorICBtdWx0aW1haWxob29rLmFubm91bmNlc2hvcnRsb2cgdG8gdHJ1ZToKKworICAgICAgZ2l0IGNvbmZpZyBtdWx0aW1haWxob29rLmFubm91bmNlc2hvcnRsb2cgdHJ1ZQorCisqIG11bHRpbWFpbGhvb2suY29tbWl0bGlzdCAtLSBUaGlzIGlzIGEgbmV3IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUuCisgIFJlY2lwaWVudHMgbGlzdGVkIGhlcmUgd2lsbCByZWNlaXZlIGEgc2VwYXJhdGUgZW1haWwgZm9yIGVhY2ggbmV3CisgIGNvbW1pdC4gIEhvd2V2ZXIsIGlmIHRoaXMgdmFyaWFibGUgaXMgKm5vdCogc2V0LCBpdCBkZWZhdWx0cyB0byB0aGUKKyAgdmFsdWUgb2YgbXVsdGltYWlsaG9vay5tYWlsaW5nbGlzdC4gIFRoZXJlZm9yZSwgaWYgeW91ICpkb24ndCogd2FudAorICB0aGUgbWVtYmVycyBvZiBtdWx0aW1haWxob29rLm1haWxpbmdsaXN0IHRvIHJlY2VpdmUgb25lIGVtYWlsIHBlcgorICBjb21taXQsIHRoZW4gc2V0IHRoaXMgdmFsdWUgdG8gdGhlIGVtcHR5IHN0cmluZzoKKworICAgICAgZ2l0IGNvbmZpZyBtdWx0aW1haWxob29rLmNvbW1pdGxpc3QgJycKKworKiBtdWx0aW1haWxob29rLmVtYWlscHJlZml4IC0tIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlbiB0aGUKKyAgc3ViamVjdHMgb2YgZ2VuZXJhdGVkIGVtYWlscyBhcmUgcHJlZml4ZWQgd2l0aCB0aGUgc2hvcnQgbmFtZSBvZiB0aGUKKyAgcmVwb3NpdG9yeSBlbmNsb3NlZCBpbiBzcXVhcmUgYnJhY2tldHM7IGUuZy4sICJbbXlyZXBvXSIuCisgIHBvc3QtcmVjZWl2ZS1lbWFpbCBkZWZhdWx0cyB0byBwcmVmaXggIltTQ01dIiBpZiB0aGlzIG9wdGlvbiBpcyBub3QKKyAgc2V0LiAgU28gaWYgeW91IHdlcmUgdXNpbmcgdGhlIG9sZCBkZWZhdWx0IGFuZCB3YW50IHRvIHJldGFpbiBpdAorICAoZm9yIGV4YW1wbGUsIHRvIGF2b2lkIGhhdmluZyB0byBjaGFuZ2UgeW91ciBlbWFpbCBmaWx0ZXJzKSwgc2V0CisgIHRoaXMgdmFyaWFibGUgZXhwbGljaXRseSB0byB0aGUgb2xkIHZhbHVlOgorCisgICAgICBnaXQgY29uZmlnIG11bHRpbWFpbGhvb2suZW1haWxwcmVmaXggIltTQ01dIgorCisqIFRoZSAibXVsdGltYWlsaG9vay5zaG93cmV2IiBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBub3Qgc3VwcG9ydGVkLgorICBJdHMgbWFpbiB1c2UgaXMgb2Jzb2xldGVkIGJ5IHRoZSBvbmUtZW1haWwtcGVyLWNvbW1pdCBmZWF0dXJlIG9mCisgIGdpdC1tdWx0aW1haWwuCisKKworT3RoZXIgZGlmZmVyZW5jZXMKKz09PT09PT09PT09PT09PT09CisKK1RoaXMgc2VjdGlvbiBkZXNjcmliZXMgb3RoZXIgZGlmZmVyZW5jZXMgaW4gdGhlIGJlaGF2aW9yIG9mCitnaXQtbXVsdGltYWlsIHZzLiBwb3N0LXJlY2VpdmUtZW1haWwuICBGb3IgZnVsbCBkZXRhaWxzLCBwbGVhc2UgcmVmZXIKK3RvIHRoZSBtYWluIFJFQURNRSBmaWxlOgorCisqIE9uZSBlbWFpbCBwZXIgY29tbWl0LiAgRm9yIGVhY2ggcmVmZXJlbmNlIGNoYW5nZSwgdGhlIHNjcmlwdCBmaXJzdAorICBvdXRwdXRzIG9uZSBlbWFpbCBzdW1tYXJpemluZyB0aGUgcmVmZXJlbmNlIGNoYW5nZSAoaW5jbHVkaW5nCisgIG9uZS1saW5lIHN1bW1hcmllcyBvZiB0aGUgbmV3IGNvbW1pdHMpLCB0aGVuIGl0IG91dHB1dHMgYSBzZXBhcmF0ZQorICBlbWFpbCBmb3IgZWFjaCBuZXcgY29tbWl0IHRoYXQgd2FzIGludHJvZHVjZWQsIGluY2x1ZGluZyBwYXRjaGVzLgorICBUaGVzZSBvbmUtZW1haWwtcGVyLWNvbW1pdCBlbWFpbHMgZ28gdG8gdGhlIGFkZHJlc3NlcyBsaXN0ZWQgaW4KKyAgbXVsdGltYWlsaG9vay5jb21taXRsaXN0LiAgcG9zdC1yZWNlaXZlLWVtYWlsIHNlbmRzIG9ubHkgb25lIGVtYWlsCisgIGZvciBlYWNoICpyZWZlcmVuY2UqIHRoYXQgaXMgY2hhbmdlZCwgbm8gbWF0dGVyIGhvdyBtYW55IGNvbW1pdHMKKyAgd2VyZSBhZGRlZCB0byB0aGUgcmVmZXJlbmNlLgorCisqIEJldHRlciBhbGdvcml0aG0gZm9yIGRldGVjdGluZyBuZXcgY29tbWl0cy4gIHBvc3QtcmVjZWl2ZS1lbWFpbAorICBwcm9jZXNzZXMgb25lIHJlZmVyZW5jZSBjaGFuZ2UgYXQgYSB0aW1lLCB3aGljaCBjYXVzZXMgaXQgdG8gZmFpbCB0bworICBkZXNjcmliZSBuZXcgY29tbWl0cyB0aGF0IHdlcmUgaW5jbHVkZWQgaW4gbXVsdGlwbGUgYnJhbmNoZXMuICBGb3IKKyAgZXhhbXBsZSwgaWYgYSBzaW5nbGUgcHVzaCBhZGRzIHRoZSAiKiIgY29tbWl0cyBpbiB0aGUgZGlhZ3JhbSBiZWxvdywKKyAgdGhlbiBwb3N0LXJlY2VpdmUtZW1haWwgd291bGQgbmV2ZXIgaW5jbHVkZSB0aGUgZGV0YWlscyBvZiB0aGUgdHdvCisgIGNvbW1pdHMgdGhhdCBhcmUgY29tbW9uIHRvICJtYXN0ZXIiIGFuZCAiYnJhbmNoIiBpbiBpdHMKKyAgbm90aWZpY2F0aW9ucy4KKworICAgICAgby0tLW8tLS1vLS0tKi0tLSotLS0qICAgIDwtLSBtYXN0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgKi0tLSogIDwtLSBicmFuY2gKKworICBnaXQtbXVsdGltYWlsIGFuYWx5emVzIGFsbCByZWZlcmVuY2UgbW9kaWZpY2F0aW9ucyB0byBkZXRlcm1pbmUKKyAgd2hpY2ggY29tbWl0cyB3ZXJlIG5vdCBwcmVzZW50IGJlZm9yZSB0aGUgY2hhbmdlLCB0aGVyZWZvcmUgYXZvaWRpbmcKKyAgdGhhdCBlcnJvci4KKworKiBJbiByZWZlcmVuY2UgY2hhbmdlIGVtYWlscywgZ2l0LW11bHRpbWFpbCB0ZWxscyB3aGljaCBjb21taXRzIGhhdmUKKyAgYmVlbiBhZGRlZCB0byB0aGUgcmVmZXJlbmNlIHZzLiBhcmUgZW50aXJlbHkgbmV3IHRvIHRoZSByZXBvc2l0b3J5LAorICBhbmQgd2hpY2ggY29tbWl0cyB0aGF0IGhhdmUgYmVlbiBvbWl0dGVkIGZyb20gdGhlIHJlZmVyZW5jZQorICB2cy4gZW50aXJlbHkgZGlzY2FyZGVkIGZyb20gdGhlIHJlcG9zaXRvcnkuCisKKyogVGhlIGVudmlyb25tZW50IGluIHdoaWNoIEdpdCBpcyBydW5uaW5nIGNhbiBiZSBjb25maWd1cmVkIHZpYSBhbgorICAiRW52aXJvbm1lbnQiIGFic3RyYWN0aW9uLgorCisqIEJ1aWx0LWluIHN1cHBvcnQgZm9yIEdpdG9saXRlLW1hbmFnZWQgcmVwb3NpdG9yaWVzLgorCisqIEluc3RlYWQgb2YgdXNpbmcgZnVsbCBTSEExIG9iamVjdCBuYW1lcyBpbiBlbWFpbHMsIGdpdC1tdWx0aW1haWwKKyAgbW9zdGx5IHVzZXMgYWJicmV2aWF0ZWQgU0hBMXMsIHBsdXMgb25lLWxpbmUgbG9nIG1lc3NhZ2Ugc3VtbWFyaWVzCisgIHdoZXJlIGFwcHJvcHJpYXRlLgorCisqIEluIHRoZSBzY2hlbWF0aWMgZGlhZ3JhbXMgdGhhdCBleHBsYWluIG5vbi1mYXN0LWZvcndhcmQgY29tbWl0cywKKyAgZ2l0LW11bHRpbWFpbCBzaG93cyB0aGUgbmFtZXMgb2YgdGhlIGJyYW5jaGVzIGludm9sdmVkLgorCisqIFRoZSBlbWFpbHMgZ2VuZXJhdGVkIGJ5IGdpdC1tdWx0aW1haWwgaW5jbHVkZSB0aGUgbmFtZSBvZiB0aGUgR2l0CisgIHJlcG9zaXRvcnkgdGhhdCB3YXMgbW9kaWZpZWQ7IHRoaXMgaXMgY29udmVuaWVudCBmb3IgcmVjaXBpZW50cyB3aG8KKyAgYXJlIG1vbml0b3JpbmcgbXVsdGlwbGUgcmVwb3NpdG9yaWVzLgorCisqIGdpdC1tdWx0aW1haWwgYWxsb3dzIHRoZSBlbWFpbCAiRnJvbSIgYWRkcmVzc2VzIHRvIGJlIGNvbmZpZ3VyZWQuCisKKyogVGhlIHJlY2lwaWVudHMgbGlzdHMgKG11bHRpbWFpbGhvb2subWFpbGluZ2xpc3QsCisgIG11bHRpbWFpbGhvb2sucmVmY2hhbmdlbGlzdCwgbXVsdGltYWlsaG9vay5hbm5vdW5jZWxpc3QsIGFuZAorICBtdWx0aW1haWxob29rLmNvbW1pdGxpc3QpIGNhbiBiZSBjb21tYS1zZXBhcmF0ZWQgdmFsdWVzIGFuZC9vcgorICBtdWx0aXZhbHVlZCBzZXR0aW5ncyBpbiB0aGUgY29uZmlnIGZpbGU7IGUuZy4sCisKKyAgICAgIFttdWx0aW1haWxob29rXQorICAgICAgICAgICAgICBtYWlsaW5nbGlzdCA9IG1yLmJyb3duQGV4YW1wbGUuY29tLCBtci5ibGFja0BleGFtcGxlLmNvbQorICAgICAgICAgICAgICBhbm5vdW5jZWxpc3QgPSBIaW0gPGhpbUBleGFtcGxlLmNvbT4KKyAgICAgICAgICAgICAgYW5ub3VuY2VsaXN0ID0gSmltIDxqaW1AZXhhbXBsZS5jb20+CisgICAgICAgICAgICAgIGFubm91bmNlbGlzdCA9IHBvcEBleGFtcGxlLmNvbQorCisgIFRoaXMgbWlnaHQgbWFrZSBpdCBlYXNpZXIgdG8gbWFpbnRhaW4gc2hvcnQgcmVjaXBpZW50cyBsaXN0cyB3aXRob3V0CisgIHJlcXVpcmluZyBmdWxsLWZsZWRnZWQgbWFpbGluZyBsaXN0IHNvZnR3YXJlLgorCisqIEJ5IGRlZmF1bHQsIGdpdC1tdWx0aW1haWwgc2V0cyBlbWFpbCAiUmVwbHktVG8iIGhlYWRlcnMgdG8gcmVwbHkgdG8KKyAgdGhlIHB1c2hlciAoZm9yIHJlZmVyZW5jZSB1cGRhdGVzKSBhbmQgdG8gdGhlIGF1dGhvciAoZm9yIGNvbW1pdAorICBub3RpZmljYXRpb25zKS4gIEJ5IGRlZmF1bHQsIHRoZSBwdXNoZXIncyBlbWFpbCBhZGRyZXNzIGlzCisgIGNvbnN0cnVjdGVkIGJ5IGFwcGVuZGluZyAibXVsdGltYWlsaG9vay5lbWFpbGRvbWFpbiIgdG8gdGhlIHB1c2hlcidzCisgIHVzZXJuYW1lLgorCisqIFRoZSBnZW5lcmF0ZWQgZW1haWxzIGNvbnRhaW4gYSBjb25maWd1cmFibGUgZm9vdGVyLiAgQnkgZGVmYXVsdCwgaXQKKyAgbGlzdHMgdGhlIG5hbWUgb2YgdGhlIGFkbWluaXN0cmF0b3Igd2hvIHNob3VsZCBiZSBjb250YWN0ZWQgdG8KKyAgdW5zdWJzY3JpYmUgZnJvbSBub3RpZmljYXRpb24gZW1haWxzLgorCisqIE5ldyBvcHRpb24gbXVsdGltYWlsaG9vay5lbWFpbG1heGxpbmVsZW5ndGggdG8gbGltaXQgdGhlIGxlbmd0aCBvZgorICBsaW5lcyBpbiB0aGUgbWFpbiBwYXJ0IG9mIHRoZSBlbWFpbCBib2R5LiAgVGhlIGRlZmF1bHQgbGltaXQgaXMgNTAwCisgIGNoYXJhY3RlcnMuCisKKyogTmV3IG9wdGlvbiBtdWx0aW1haWxob29rLmVtYWlsc3RyaWN0dXRmOCB0byBlbnN1cmUgdGhhdCB0aGUgbWFpbgorICBwYXJ0IG9mIHRoZSBlbWFpbCBib2R5IGlzIHZhbGlkIFVURi04LiAgSW52YWxpZCBjaGFyYWN0ZXJzIGFyZQorICB0dXJuZWQgaW50byB0aGUgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIsIFUrRkZGRC4gIEJ5IGRlZmF1bHQKKyAgdGhpcyBvcHRpb24gaXMgdHVybmVkIG9uLgorCisqIFdyaXR0ZW4gaW4gUHl0aG9uLiAgRWFzaWVyIHRvIGFkZCBuZXcgZmVhdHVyZXMuCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL211bHRpbWFpbC9naXRfbXVsdGltYWlsLnB5IGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvZ2l0X211bHRpbWFpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MWM2YTUxCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvZ2l0X211bHRpbWFpbC5weQpAQCAtMCwwICsxLDIzOTMgQEAKKyMhIC91c3IvYmluL2VudiBweXRob24yCisKKyMgQ29weXJpZ2h0IChjKSAyMDEyLDIwMTMgTWljaGFlbCBIYWdnZXJ0eQorIyBEZXJpdmVkIGZyb20gY29udHJpYi9ob29rcy9wb3N0LXJlY2VpdmUtZW1haWwsIHdoaWNoIGlzCisjIENvcHlyaWdodCAoYykgMjAwNyBBbmR5IFBhcmtpbnMKKyMgYW5kIGFsc28gaW5jbHVkZXMgY29udHJpYnV0aW9ucyBieSBvdGhlciBhdXRob3JzLgorIworIyBUaGlzIGZpbGUgaXMgcGFydCBvZiBnaXQtbXVsdGltYWlsLgorIworIyBnaXQtbXVsdGltYWlsIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uCisjIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUKKyMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisiIiJHZW5lcmF0ZSBub3RpZmljYXRpb24gZW1haWxzIGZvciBwdXNoZXMgdG8gYSBnaXQgcmVwb3NpdG9yeS4KKworVGhpcyBob29rIHNlbmRzIGVtYWlscyBkZXNjcmliaW5nIGNoYW5nZXMgaW50cm9kdWNlZCBieSBwdXNoZXMgdG8gYQorZ2l0IHJlcG9zaXRvcnkuICBGb3IgZWFjaCByZWZlcmVuY2UgdGhhdCB3YXMgY2hhbmdlZCwgaXQgZW1pdHMgb25lCitSZWZlcmVuY2VDaGFuZ2UgZW1haWwgc3VtbWFyaXppbmcgaG93IHRoZSByZWZlcmVuY2Ugd2FzIGNoYW5nZWQsCitmb2xsb3dlZCBieSBvbmUgUmV2aXNpb24gZW1haWwgZm9yIGVhY2ggbmV3IGNvbW1pdCB0aGF0IHdhcyBpbnRyb2R1Y2VkCitieSB0aGUgcmVmZXJlbmNlIGNoYW5nZS4KKworRWFjaCBjb21taXQgaXMgYW5ub3VuY2VkIGluIGV4YWN0bHkgb25lIFJldmlzaW9uIGVtYWlsLiAgSWYgdGhlIHNhbWUKK2NvbW1pdCBpcyBtZXJnZWQgaW50byBhbm90aGVyIGJyYW5jaCBpbiB0aGUgc2FtZSBvciBhIGxhdGVyIHB1c2gsIHRoZW4KK3RoZSBSZWZlcmVuY2VDaGFuZ2UgZW1haWwgd2lsbCBsaXN0IHRoZSBjb21taXQncyBTSEExIGFuZCBpdHMgb25lLWxpbmUKK3N1bW1hcnksIGJ1dCBubyBuZXcgUmV2aXNpb24gZW1haWwgd2lsbCBiZSBnZW5lcmF0ZWQuCisKK1RoaXMgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIGJlIHVzZWQgYXMgYSAicG9zdC1yZWNlaXZlIiBob29rIGluIGEgZ2l0CityZXBvc2l0b3J5IChzZWUgZ2l0aG9va3MoNSkpLiAgSXQgY2FuIGFsc28gYmUgdXNlZCBhcyBhbiAidXBkYXRlIgorc2NyaXB0LCBidXQgdGhpcyB1c2FnZSBpcyBub3QgY29tcGxldGVseSByZWxpYWJsZSBhbmQgaXMgZGVwcmVjYXRlZC4KKworVG8gaGVscCB3aXRoIGRlYnVnZ2luZywgdGhpcyBzY3JpcHQgYWNjZXB0cyBhIC0tc3Rkb3V0IG9wdGlvbiwgd2hpY2gKK2NhdXNlcyB0aGUgZW1haWxzIHRvIGJlIHdyaXR0ZW4gdG8gc3RhbmRhcmQgb3V0cHV0IHJhdGhlciB0aGFuIHNlbnQKK3VzaW5nIHNlbmRtYWlsLgorCitTZWUgdGhlIGFjY29tcGFueWluZyBSRUFETUUgZmlsZSBmb3IgdGhlIGNvbXBsZXRlIGRvY3VtZW50YXRpb24uCisKKyIiIgorCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IGJpc2VjdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzaGxleAoraW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgc210cGxpYgorCit0cnk6CisgICAgZnJvbSBlbWFpbC51dGlscyBpbXBvcnQgbWFrZV9tc2dpZAorICAgIGZyb20gZW1haWwudXRpbHMgaW1wb3J0IGdldGFkZHJlc3NlcworICAgIGZyb20gZW1haWwudXRpbHMgaW1wb3J0IGZvcm1hdGFkZHIKKyAgICBmcm9tIGVtYWlsLmhlYWRlciBpbXBvcnQgSGVhZGVyCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBQcmlvciB0byBQeXRob24gMi41LCB0aGUgZW1haWwgbW9kdWxlIHVzZWQgZGlmZmVyZW50IG5hbWVzOgorICAgIGZyb20gZW1haWwuVXRpbHMgaW1wb3J0IG1ha2VfbXNnaWQKKyAgICBmcm9tIGVtYWlsLlV0aWxzIGltcG9ydCBnZXRhZGRyZXNzZXMKKyAgICBmcm9tIGVtYWlsLlV0aWxzIGltcG9ydCBmb3JtYXRhZGRyCisgICAgZnJvbSBlbWFpbC5IZWFkZXIgaW1wb3J0IEhlYWRlcgorCisKK0RFQlVHID0gRmFsc2UKKworWkVST1MgPSAnMCcgKiA0MAorTE9HQkVHSU4gPSAnLSBMb2cgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKK0xPR0VORCA9ICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworCisKKyMgSXQgaXMgYXNzdW1lZCBpbiBtYW55IHBsYWNlcyB0aGF0IHRoZSBlbmNvZGluZyBpcyB1bmlmb3JtbHkgVVRGLTgsCisjIHNvIGNoYW5naW5nIHRoZXNlIGNvbnN0YW50cyBpcyB1bnN1cHBvcnRlZC4gIEJ1dCBkZWZpbmUgdGhlbSBoZXJlCisjIGFueXdheSwgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZmluZCAoYXQgbGVhc3QgbW9zdCBvZikgdGhlIHBsYWNlcworIyB3aGVyZSB0aGUgZW5jb2RpbmcgaXMgaW1wb3J0YW50LgorKEVOQ09ESU5HLCBDSEFSU0VUKSA9ICgnVVRGLTgnLCAndXRmLTgnKQorCisKK1JFRl9DUkVBVEVEX1NVQkpFQ1RfVEVNUExBVEUgPSAoCisgICAgJyUoZW1haWxwcmVmaXgpcyUocmVmbmFtZV90eXBlKXMgJShzaG9ydF9yZWZuYW1lKXMgY3JlYXRlZCcKKyAgICAnIChub3cgJShuZXdyZXZfc2hvcnQpcyknCisgICAgKQorUkVGX1VQREFURURfU1VCSkVDVF9URU1QTEFURSA9ICgKKyAgICAnJShlbWFpbHByZWZpeClzJShyZWZuYW1lX3R5cGUpcyAlKHNob3J0X3JlZm5hbWUpcyB1cGRhdGVkJworICAgICcgKCUob2xkcmV2X3Nob3J0KXMgLT4gJShuZXdyZXZfc2hvcnQpcyknCisgICAgKQorUkVGX0RFTEVURURfU1VCSkVDVF9URU1QTEFURSA9ICgKKyAgICAnJShlbWFpbHByZWZpeClzJShyZWZuYW1lX3R5cGUpcyAlKHNob3J0X3JlZm5hbWUpcyBkZWxldGVkJworICAgICcgKHdhcyAlKG9sZHJldl9zaG9ydClzKScKKyAgICApCisKK1JFRkNIQU5HRV9IRUFERVJfVEVNUExBVEUgPSAiIiJcCitUbzogJShyZWNpcGllbnRzKXMKK1N1YmplY3Q6ICUoc3ViamVjdClzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSUoY2hhcnNldClzCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CitNZXNzYWdlLUlEOiAlKG1zZ2lkKXMKK0Zyb206ICUoZnJvbWFkZHIpcworUmVwbHktVG86ICUocmVwbHlfdG8pcworWC1HaXQtUmVwbzogJShyZXBvX3Nob3J0bmFtZSlzCitYLUdpdC1SZWZuYW1lOiAlKHJlZm5hbWUpcworWC1HaXQtUmVmdHlwZTogJShyZWZuYW1lX3R5cGUpcworWC1HaXQtT2xkcmV2OiAlKG9sZHJldilzCitYLUdpdC1OZXdyZXY6ICUobmV3cmV2KXMKK0F1dG8tU3VibWl0dGVkOiBhdXRvLWdlbmVyYXRlZAorIiIiCisKK1JFRkNIQU5HRV9JTlRST19URU1QTEFURSA9ICIiIlwKK1RoaXMgaXMgYW4gYXV0b21hdGVkIGVtYWlsIGZyb20gdGhlIGdpdCBob29rcy9wb3N0LXJlY2VpdmUgc2NyaXB0LgorCislKHB1c2hlcilzIHB1c2hlZCBhIGNoYW5nZSB0byAlKHJlZm5hbWVfdHlwZSlzICUoc2hvcnRfcmVmbmFtZSlzCitpbiByZXBvc2l0b3J5ICUocmVwb19zaG9ydG5hbWUpcy4KKworIiIiCisKKworRk9PVEVSX1RFTVBMQVRFID0gIiIiXAorCistLSBcblwKK1RvIHN0b3AgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbiBlbWFpbHMgbGlrZSB0aGlzIG9uZSwgcGxlYXNlIGNvbnRhY3QKKyUoYWRtaW5pc3RyYXRvcilzLgorIiIiCisKKworUkVXSU5EX09OTFlfVEVNUExBVEUgPSAiIiJcCitUaGlzIHVwZGF0ZSByZW1vdmVkIGV4aXN0aW5nIHJldmlzaW9ucyBmcm9tIHRoZSByZWZlcmVuY2UsIGxlYXZpbmcgdGhlCityZWZlcmVuY2UgcG9pbnRpbmcgYXQgYSBwcmV2aW91cyBwb2ludCBpbiB0aGUgcmVwb3NpdG9yeSBoaXN0b3J5LgorCisgKiAtLSAqIC0tIE4gICAlKHJlZm5hbWUpcyAoJShuZXdyZXZfc2hvcnQpcykKKyAgICAgICAgICAgIFxcCisgICAgICAgICAgICAgTyAtLSBPIC0tIE8gICAoJShvbGRyZXZfc2hvcnQpcykKKworQW55IHJldmlzaW9ucyBtYXJrZWQgIm9taXRzIiBhcmUgbm90IGdvbmU7IG90aGVyIHJlZmVyZW5jZXMgc3RpbGwKK3JlZmVyIHRvIHRoZW0uICBBbnkgcmV2aXNpb25zIG1hcmtlZCAiZGlzY2FyZHMiIGFyZSBnb25lIGZvcmV2ZXIuCisiIiIKKworCitOT05fRkZfVEVNUExBVEUgPSAiIiJcCitUaGlzIHVwZGF0ZSBhZGRlZCBuZXcgcmV2aXNpb25zIGFmdGVyIHVuZG9pbmcgZXhpc3RpbmcgcmV2aXNpb25zLgorVGhhdCBpcyB0byBzYXksIHNvbWUgcmV2aXNpb25zIHRoYXQgd2VyZSBpbiB0aGUgb2xkIHZlcnNpb24gb2YgdGhlCislKHJlZm5hbWVfdHlwZSlzIGFyZSBub3QgaW4gdGhlIG5ldyB2ZXJzaW9uLiAgVGhpcyBzaXR1YXRpb24gb2NjdXJzCit3aGVuIGEgdXNlciAtLWZvcmNlIHB1c2hlcyBhIGNoYW5nZSBhbmQgZ2VuZXJhdGVzIGEgcmVwb3NpdG9yeQorY29udGFpbmluZyBzb21ldGhpbmcgbGlrZSB0aGlzOgorCisgKiAtLSAqIC0tIEIgLS0gTyAtLSBPIC0tIE8gICAoJShvbGRyZXZfc2hvcnQpcykKKyAgICAgICAgICAgIFxcCisgICAgICAgICAgICAgTiAtLSBOIC0tIE4gICAlKHJlZm5hbWUpcyAoJShuZXdyZXZfc2hvcnQpcykKKworWW91IHNob3VsZCBhbHJlYWR5IGhhdmUgcmVjZWl2ZWQgbm90aWZpY2F0aW9uIGVtYWlscyBmb3IgYWxsIG9mIHRoZSBPCityZXZpc2lvbnMsIGFuZCBzbyB0aGUgZm9sbG93aW5nIGVtYWlscyBkZXNjcmliZSBvbmx5IHRoZSBOIHJldmlzaW9ucworZnJvbSB0aGUgY29tbW9uIGJhc2UsIEIuCisKK0FueSByZXZpc2lvbnMgbWFya2VkICJvbWl0cyIgYXJlIG5vdCBnb25lOyBvdGhlciByZWZlcmVuY2VzIHN0aWxsCityZWZlciB0byB0aGVtLiAgQW55IHJldmlzaW9ucyBtYXJrZWQgImRpc2NhcmRzIiBhcmUgZ29uZSBmb3JldmVyLgorIiIiCisKKworTk9fTkVXX1JFVklTSU9OU19URU1QTEFURSA9ICIiIlwKK05vIG5ldyByZXZpc2lvbnMgd2VyZSBhZGRlZCBieSB0aGlzIHVwZGF0ZS4KKyIiIgorCisKK0RJU0NBUkRFRF9SRVZJU0lPTlNfVEVNUExBVEUgPSAiIiJcCitUaGlzIGNoYW5nZSBwZXJtYW5lbnRseSBkaXNjYXJkcyB0aGUgZm9sbG93aW5nIHJldmlzaW9uczoKKyIiIgorCisKK05PX0RJU0NBUkRFRF9SRVZJU0lPTlNfVEVNUExBVEUgPSAiIiJcCitUaGUgcmV2aXNpb25zIHRoYXQgd2VyZSBvbiB0aGlzICUocmVmbmFtZV90eXBlKXMgYXJlIHN0aWxsIGNvbnRhaW5lZCBpbgorb3RoZXIgcmVmZXJlbmNlczsgdGhlcmVmb3JlLCB0aGlzIGNoYW5nZSBkb2VzIG5vdCBkaXNjYXJkIGFueSBjb21taXRzCitmcm9tIHRoZSByZXBvc2l0b3J5LgorIiIiCisKKworTkVXX1JFVklTSU9OU19URU1QTEFURSA9ICIiIlwKK1RoZSAlKHRvdClzIHJldmlzaW9ucyBsaXN0ZWQgYWJvdmUgYXMgIm5ldyIgYXJlIGVudGlyZWx5IG5ldyB0byB0aGlzCityZXBvc2l0b3J5IGFuZCB3aWxsIGJlIGRlc2NyaWJlZCBpbiBzZXBhcmF0ZSBlbWFpbHMuICBUaGUgcmV2aXNpb25zCitsaXN0ZWQgYXMgImFkZHMiIHdlcmUgYWxyZWFkeSBwcmVzZW50IGluIHRoZSByZXBvc2l0b3J5IGFuZCBoYXZlIG9ubHkKK2JlZW4gYWRkZWQgdG8gdGhpcyByZWZlcmVuY2UuCisKKyIiIgorCisKK1RBR19DUkVBVEVEX1RFTVBMQVRFID0gIiIiXAorICAgICAgICBhdCAgJShuZXdyZXZfc2hvcnQpLTlzICglKG5ld3Jldl90eXBlKXMpCisiIiIKKworCitUQUdfVVBEQVRFRF9URU1QTEFURSA9ICIiIlwKKyoqKiBXQVJOSU5HOiB0YWcgJShzaG9ydF9yZWZuYW1lKXMgd2FzIG1vZGlmaWVkISAqKioKKworICAgICAgZnJvbSAgJShvbGRyZXZfc2hvcnQpLTlzICglKG9sZHJldl90eXBlKXMpCisgICAgICAgIHRvICAlKG5ld3Jldl9zaG9ydCktOXMgKCUobmV3cmV2X3R5cGUpcykKKyIiIgorCisKK1RBR19ERUxFVEVEX1RFTVBMQVRFID0gIiIiXAorKioqIFdBUk5JTkc6IHRhZyAlKHNob3J0X3JlZm5hbWUpcyB3YXMgZGVsZXRlZCEgKioqCisKKyIiIgorCisKKyMgVGhlIHRlbXBsYXRlIHVzZWQgaW4gc3VtbWFyeSB0YWJsZXMuICBJdCBsb29rcyBiZXN0IGlmIHRoaXMgdXNlcyB0aGUKKyMgc2FtZSBhbGlnbm1lbnQgYXMgVEFHX0NSRUFURURfVEVNUExBVEUgYW5kIFRBR19VUERBVEVEX1RFTVBMQVRFLgorQlJJRUZfU1VNTUFSWV9URU1QTEFURSA9ICIiIlwKKyUoYWN0aW9uKTEwcyAgJShyZXZfc2hvcnQpLTlzICUodGV4dClzCisiIiIKKworCitOT05fQ09NTUlUX1VQREFURV9URU1QTEFURSA9ICIiIlwKK1RoaXMgaXMgYW4gdW51c3VhbCByZWZlcmVuY2UgY2hhbmdlIGJlY2F1c2UgdGhlIHJlZmVyZW5jZSBkaWQgbm90CityZWZlciB0byBhIGNvbW1pdCBlaXRoZXIgYmVmb3JlIG9yIGFmdGVyIHRoZSBjaGFuZ2UuICBXZSBkbyBub3Qga25vdworaG93IHRvIHByb3ZpZGUgZnVsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGlzIHJlZmVyZW5jZSBjaGFuZ2UuCisiIiIKKworCitSRVZJU0lPTl9IRUFERVJfVEVNUExBVEUgPSAiIiJcCitUbzogJShyZWNpcGllbnRzKXMKK1N1YmplY3Q6ICUoZW1haWxwcmVmaXgpcyUobnVtKTAyZC8lKHRvdCkwMmQ6ICUob25lbGluZSlzCitNSU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSUoY2hhcnNldClzCitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CitGcm9tOiAlKGZyb21hZGRyKXMKK1JlcGx5LVRvOiAlKHJlcGx5X3RvKXMKK0luLVJlcGx5LVRvOiAlKHJlcGx5X3RvX21zZ2lkKXMKK1JlZmVyZW5jZXM6ICUocmVwbHlfdG9fbXNnaWQpcworWC1HaXQtUmVwbzogJShyZXBvX3Nob3J0bmFtZSlzCitYLUdpdC1SZWZuYW1lOiAlKHJlZm5hbWUpcworWC1HaXQtUmVmdHlwZTogJShyZWZuYW1lX3R5cGUpcworWC1HaXQtUmV2OiAlKHJldilzCitBdXRvLVN1Ym1pdHRlZDogYXV0by1nZW5lcmF0ZWQKKyIiIgorCitSRVZJU0lPTl9JTlRST19URU1QTEFURSA9ICIiIlwKK1RoaXMgaXMgYW4gYXV0b21hdGVkIGVtYWlsIGZyb20gdGhlIGdpdCBob29rcy9wb3N0LXJlY2VpdmUgc2NyaXB0LgorCislKHB1c2hlcilzIHB1c2hlZCBhIGNvbW1pdCB0byAlKHJlZm5hbWVfdHlwZSlzICUoc2hvcnRfcmVmbmFtZSlzCitpbiByZXBvc2l0b3J5ICUocmVwb19zaG9ydG5hbWUpcy4KKworIiIiCisKKworUkVWSVNJT05fRk9PVEVSX1RFTVBMQVRFID0gRk9PVEVSX1RFTVBMQVRFCisKKworY2xhc3MgQ29tbWFuZEVycm9yKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNtZCwgcmV0Y29kZSk6CisgICAgICAgIHNlbGYuY21kID0gY21kCisgICAgICAgIHNlbGYucmV0Y29kZSA9IHJldGNvZGUKKyAgICAgICAgRXhjZXB0aW9uLl9faW5pdF9fKAorICAgICAgICAgICAgc2VsZiwKKyAgICAgICAgICAgICdDb21tYW5kICIlcyIgZmFpbGVkIHdpdGggcmV0Y29kZSAlcycgJSAoJyAnLmpvaW4oY21kKSwgcmV0Y29kZSwpCisgICAgICAgICAgICApCisKKworY2xhc3MgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitkZWYgcmVhZF9naXRfb3V0cHV0KGFyZ3MsIGlucHV0PU5vbmUsIGtlZXBlbmRzPUZhbHNlLCAqKmt3KToKKyAgICAiIiJSZWFkIHRoZSBvdXRwdXQgb2YgYSBHaXQgY29tbWFuZC4iIiIKKworICAgIHJldHVybiByZWFkX291dHB1dCgKKyAgICAgICAgWydnaXQnLCAnLWMnLCAnaTE4bi5sb2dvdXRwdXRlbmNvZGluZz0lcycgJSAoRU5DT0RJTkcsKV0gKyBhcmdzLAorICAgICAgICBpbnB1dD1pbnB1dCwga2VlcGVuZHM9a2VlcGVuZHMsICoqa3cKKyAgICAgICAgKQorCisKK2RlZiByZWFkX291dHB1dChjbWQsIGlucHV0PU5vbmUsIGtlZXBlbmRzPUZhbHNlLCAqKmt3KToKKyAgICBpZiBpbnB1dDoKKyAgICAgICAgc3RkaW4gPSBzdWJwcm9jZXNzLlBJUEUKKyAgICBlbHNlOgorICAgICAgICBzdGRpbiA9IE5vbmUKKyAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgY21kLCBzdGRpbj1zdGRpbiwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwgKiprdworICAgICAgICApCisgICAgKG91dCwgZXJyKSA9IHAuY29tbXVuaWNhdGUoaW5wdXQpCisgICAgcmV0Y29kZSA9IHAud2FpdCgpCisgICAgaWYgcmV0Y29kZToKKyAgICAgICAgcmFpc2UgQ29tbWFuZEVycm9yKGNtZCwgcmV0Y29kZSkKKyAgICBpZiBub3Qga2VlcGVuZHM6CisgICAgICAgIG91dCA9IG91dC5yc3RyaXAoJ1xuXHInKQorICAgIHJldHVybiBvdXQKKworCitkZWYgcmVhZF9naXRfbGluZXMoYXJncywga2VlcGVuZHM9RmFsc2UsICoqa3cpOgorICAgICIiIlJldHVybiB0aGUgbGluZXMgb3V0cHV0IGJ5IEdpdCBjb21tYW5kLgorCisgICAgUmV0dXJuIGFzIHNpbmdsZSBsaW5lcywgd2l0aCBuZXdsaW5lcyBzdHJpcHBlZCBvZmYuIiIiCisKKyAgICByZXR1cm4gcmVhZF9naXRfb3V0cHV0KGFyZ3MsIGtlZXBlbmRzPVRydWUsICoqa3cpLnNwbGl0bGluZXMoa2VlcGVuZHMpCisKKworY2xhc3MgQ29uZmlnKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlY3Rpb24sIGdpdF9jb25maWc9Tm9uZSk6CisgICAgICAgICIiIlJlcHJlc2VudCBhIHNlY3Rpb24gb2YgdGhlIGdpdCBjb25maWd1cmF0aW9uLgorCisgICAgICAgIElmIGdpdF9jb25maWcgaXMgc3BlY2lmaWVkLCBpdCBpcyBwYXNzZWQgdG8gImdpdCBjb25maWciIGluCisgICAgICAgIHRoZSBHSVRfQ09ORklHIGVudmlyb25tZW50IHZhcmlhYmxlLCBtZWFuaW5nIHRoYXQgImdpdCBjb25maWciCisgICAgICAgIHdpbGwgcmVhZCB0aGUgc3BlY2lmaWVkIHBhdGggcmF0aGVyIHRoYW4gdGhlIEdpdCBkZWZhdWx0CisgICAgICAgIGNvbmZpZyBwYXRocy4iIiIKKworICAgICAgICBzZWxmLnNlY3Rpb24gPSBzZWN0aW9uCisgICAgICAgIGlmIGdpdF9jb25maWc6CisgICAgICAgICAgICBzZWxmLmVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBzZWxmLmVudlsnR0lUX0NPTkZJRyddID0gZ2l0X2NvbmZpZworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5lbnYgPSBOb25lCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9zcGxpdChzKToKKyAgICAgICAgIiIiU3BsaXQgTlVMLXRlcm1pbmF0ZWQgdmFsdWVzLiIiIgorCisgICAgICAgIHdvcmRzID0gcy5zcGxpdCgnXDAnKQorICAgICAgICBhc3NlcnQgd29yZHNbLTFdID09ICcnCisgICAgICAgIHJldHVybiB3b3Jkc1s6LTFdCisKKyAgICBkZWYgZ2V0KHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHZhbHVlcyA9IHNlbGYuX3NwbGl0KHJlYWRfZ2l0X291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgWydjb25maWcnLCAnLS1nZXQnLCAnLS1udWxsJywgJyVzLiVzJyAlIChzZWxmLnNlY3Rpb24sIG5hbWUpXSwKKyAgICAgICAgICAgICAgICAgICAgZW52PXNlbGYuZW52LCBrZWVwZW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICApKQorICAgICAgICAgICAgYXNzZXJ0IGxlbih2YWx1ZXMpID09IDEKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZXNbMF0KKyAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBkZWZhdWx0CisKKyAgICBkZWYgZ2V0X2Jvb2woc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdmFsdWUgPSByZWFkX2dpdF9vdXRwdXQoCisgICAgICAgICAgICAgICAgWydjb25maWcnLCAnLS1nZXQnLCAnLS1ib29sJywgJyVzLiVzJyAlIChzZWxmLnNlY3Rpb24sIG5hbWUpXSwKKyAgICAgICAgICAgICAgICBlbnY9c2VsZi5lbnYsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgQ29tbWFuZEVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKyAgICAgICAgcmV0dXJuIHZhbHVlID09ICd0cnVlJworCisgICAgZGVmIGdldF9hbGwoc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgIiIiUmVhZCBhIChwb3NzaWJseSBtdWx0aXZhbHVlZCkgc2V0dGluZyBmcm9tIHRoZSBjb25maWd1cmF0aW9uLgorCisgICAgICAgIFJldHVybiB0aGUgcmVzdWx0IGFzIGEgbGlzdCBvZiB2YWx1ZXMsIG9yIGRlZmF1bHQgaWYgdGhlIG5hbWUKKyAgICAgICAgaXMgdW5zZXQuIiIiCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3NwbGl0KHJlYWRfZ2l0X291dHB1dCgKKyAgICAgICAgICAgICAgICBbJ2NvbmZpZycsICctLWdldC1hbGwnLCAnLS1udWxsJywgJyVzLiVzJyAlIChzZWxmLnNlY3Rpb24sIG5hbWUpXSwKKyAgICAgICAgICAgICAgICBlbnY9c2VsZi5lbnYsIGtlZXBlbmRzPVRydWUsCisgICAgICAgICAgICAgICAgKSkKKyAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvciwgZToKKyAgICAgICAgICAgIGlmIGUucmV0Y29kZSA9PSAxOgorICAgICAgICAgICAgICAgICMgInRoZSBzZWN0aW9uIG9yIGtleSBpcyBpbnZhbGlkIjsgaS5lLiwgdGhlcmUgaXMgbm8KKyAgICAgICAgICAgICAgICAjIHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIGtleS4KKyAgICAgICAgICAgICAgICByZXR1cm4gZGVmYXVsdAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIGdldF9yZWNpcGllbnRzKHNlbGYsIG5hbWUsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICIiIlJlYWQgYSByZWNpcGllbnRzIGxpc3QgZnJvbSB0aGUgY29uZmlndXJhdGlvbi4KKworICAgICAgICBSZXR1cm4gdGhlIHJlc3VsdCBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGVtYWlsCisgICAgICAgIGFkZHJlc3Nlcywgb3IgZGVmYXVsdCBpZiB0aGUgb3B0aW9uIGlzIHVuc2V0LiAgSWYgdGhlIHNldHRpbmcKKyAgICAgICAgaGFzIG11bHRpcGxlIHZhbHVlcywgY29uY2F0ZW5hdGUgdGhlbSB3aXRoIGNvbW1hIHNlcGFyYXRvcnMuIiIiCisKKyAgICAgICAgbGluZXMgPSBzZWxmLmdldF9hbGwobmFtZSwgZGVmYXVsdD1Ob25lKQorICAgICAgICBpZiBsaW5lcyBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKKyAgICAgICAgcmV0dXJuICcsICcuam9pbihsaW5lLnN0cmlwKCkgZm9yIGxpbmUgaW4gbGluZXMpCisKKyAgICBkZWYgc2V0KHNlbGYsIG5hbWUsIHZhbHVlKToKKyAgICAgICAgcmVhZF9naXRfb3V0cHV0KAorICAgICAgICAgICAgWydjb25maWcnLCAnJXMuJXMnICUgKHNlbGYuc2VjdGlvbiwgbmFtZSksIHZhbHVlXSwKKyAgICAgICAgICAgIGVudj1zZWxmLmVudiwKKyAgICAgICAgICAgICkKKworICAgIGRlZiBhZGQoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICByZWFkX2dpdF9vdXRwdXQoCisgICAgICAgICAgICBbJ2NvbmZpZycsICctLWFkZCcsICclcy4lcycgJSAoc2VsZi5zZWN0aW9uLCBuYW1lKSwgdmFsdWVdLAorICAgICAgICAgICAgZW52PXNlbGYuZW52LAorICAgICAgICAgICAgKQorCisgICAgZGVmIGhhc19rZXkoc2VsZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLmdldF9hbGwobmFtZSwgZGVmYXVsdD1Ob25lKSBpcyBub3QgTm9uZQorCisgICAgZGVmIHVuc2V0X2FsbChzZWxmLCBuYW1lKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVhZF9naXRfb3V0cHV0KAorICAgICAgICAgICAgICAgIFsnY29uZmlnJywgJy0tdW5zZXQtYWxsJywgJyVzLiVzJyAlIChzZWxmLnNlY3Rpb24sIG5hbWUpXSwKKyAgICAgICAgICAgICAgICBlbnY9c2VsZi5lbnYsCisgICAgICAgICAgICAgICAgKQorICAgICAgICBleGNlcHQgQ29tbWFuZEVycm9yLCBlOgorICAgICAgICAgICAgaWYgZS5yZXRjb2RlID09IDU6CisgICAgICAgICAgICAgICAgIyBUaGUgbmFtZSBkb2Vzbid0IGV4aXN0LCB3aGljaCBpcyB3aGF0IHdlIHdhbnRlZCBhbnl3YXkuLi4KKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgc2V0X3JlY2lwaWVudHMoc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICBzZWxmLnVuc2V0X2FsbChuYW1lKQorICAgICAgICBmb3IgcGFpciBpbiBnZXRhZGRyZXNzZXMoW3ZhbHVlXSk6CisgICAgICAgICAgICBzZWxmLmFkZChuYW1lLCBmb3JtYXRhZGRyKHBhaXIpKQorCisKK2RlZiBnZW5lcmF0ZV9zdW1tYXJpZXMoKmxvZ19hcmdzKToKKyAgICAiIiJHZW5lcmF0ZSBhIGJyaWVmIHN1bW1hcnkgZm9yIGVhY2ggcmV2aXNpb24gcmVxdWVzdGVkLgorCisgICAgbG9nX2FyZ3MgYXJlIHN0cmluZ3MgdGhhdCB3aWxsIGJlIHBhc3NlZCBkaXJlY3RseSB0byAiZ2l0IGxvZyIgYXMKKyAgICByZXZpc2lvbiBzZWxlY3RvcnMuICBJdGVyYXRlIG92ZXIgKHNoYTFfc2hvcnQsIHN1YmplY3QpIGZvciBlYWNoCisgICAgY29tbWl0IHNwZWNpZmllZCBieSBsb2dfYXJncyAoc3ViamVjdCBpcyB0aGUgZmlyc3QgbGluZSBvZiB0aGUKKyAgICBjb21taXQgbWVzc2FnZSBhcyBhIHN0cmluZyB3aXRob3V0IEVPTHMpLiIiIgorCisgICAgY21kID0gWworICAgICAgICAnbG9nJywgJy0tYWJicmV2JywgJy0tZm9ybWF0PSVoICVzJywKKyAgICAgICAgXSArIGxpc3QobG9nX2FyZ3MpICsgWyctLSddCisgICAgZm9yIGxpbmUgaW4gcmVhZF9naXRfbGluZXMoY21kKToKKyAgICAgICAgeWllbGQgdHVwbGUobGluZS5zcGxpdCgnICcsIDEpKQorCisKK2RlZiBsaW1pdF9saW5lcyhsaW5lcywgbWF4X2xpbmVzKToKKyAgICBmb3IgKGluZGV4LCBsaW5lKSBpbiBlbnVtZXJhdGUobGluZXMpOgorICAgICAgICBpZiBpbmRleCA8IG1heF9saW5lczoKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgIGlmIGluZGV4ID49IG1heF9saW5lczoKKyAgICAgICAgeWllbGQgJy4uLiAlZCBsaW5lcyBzdXBwcmVzc2VkIC4uLlxuJyAlIChpbmRleCArIDEgLSBtYXhfbGluZXMsKQorCisKK2RlZiBsaW1pdF9saW5lbGVuZ3RoKGxpbmVzLCBtYXhfbGluZWxlbmd0aCk6CisgICAgZm9yIGxpbmUgaW4gbGluZXM6CisgICAgICAgICMgRG9uJ3QgZm9yZ2V0IHRoYXQgbGluZXMgYWx3YXlzIGluY2x1ZGUgYSB0cmFpbGluZyBuZXdsaW5lLgorICAgICAgICBpZiBsZW4obGluZSkgPiBtYXhfbGluZWxlbmd0aCArIDE6CisgICAgICAgICAgICBsaW5lID0gbGluZVs6bWF4X2xpbmVsZW5ndGggLSA3XSArICcgWy4uLl1cbicKKyAgICAgICAgeWllbGQgbGluZQorCisKK2NsYXNzIENvbW1pdFNldChvYmplY3QpOgorICAgICIiIkEgKGNvbnN0YW50KSBzZXQgb2Ygb2JqZWN0IG5hbWVzLgorCisgICAgVGhlIHNldCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgd2l0aCBmdWxsIFNIQTEgb2JqZWN0IG5hbWVzLiAgVGhlCisgICAgX19jb250YWluc19fKCkgbWV0aG9kIHJldHVybnMgVHJ1ZSBpZmYgaXRzIGFyZ3VtZW50IGlzIGFuCisgICAgYWJicmV2aWF0aW9uIG9mIGFueSB0aGUgbmFtZXMgaW4gdGhlIHNldC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lcyk6CisgICAgICAgIHNlbGYuX25hbWVzID0gc29ydGVkKG5hbWVzKQorCisgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgIHJldHVybiBsZW4oc2VsZi5fbmFtZXMpCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHNoYTFfYWJicmV2KToKKyAgICAgICAgIiIiUmV0dXJuIFRydWUgaWZmIHRoaXMgc2V0IGNvbnRhaW5zIHNoYTFfYWJicmV2ICh3aGljaCBtaWdodCBiZSBhYmJyZXZpYXRlZCkuIiIiCisKKyAgICAgICAgaSA9IGJpc2VjdC5iaXNlY3RfbGVmdChzZWxmLl9uYW1lcywgc2hhMV9hYmJyZXYpCisgICAgICAgIHJldHVybiBpIDwgbGVuKHNlbGYpIGFuZCBzZWxmLl9uYW1lc1tpXS5zdGFydHN3aXRoKHNoYTFfYWJicmV2KQorCisKK2NsYXNzIEdpdE9iamVjdChvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGExLCB0eXBlPU5vbmUpOgorICAgICAgICBpZiBzaGExID09IFpFUk9TOgorICAgICAgICAgICAgc2VsZi5zaGExID0gc2VsZi50eXBlID0gc2VsZi5jb21taXRfc2hhMSA9IE5vbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuc2hhMSA9IHNoYTEKKyAgICAgICAgICAgIHNlbGYudHlwZSA9IHR5cGUgb3IgcmVhZF9naXRfb3V0cHV0KFsnY2F0LWZpbGUnLCAnLXQnLCBzZWxmLnNoYTFdKQorCisgICAgICAgICAgICBpZiBzZWxmLnR5cGUgPT0gJ2NvbW1pdCc6CisgICAgICAgICAgICAgICAgc2VsZi5jb21taXRfc2hhMSA9IHNlbGYuc2hhMQorICAgICAgICAgICAgZWxpZiBzZWxmLnR5cGUgPT0gJ3RhZyc6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9zaGExID0gcmVhZF9naXRfb3V0cHV0KAorICAgICAgICAgICAgICAgICAgICAgICAgWydyZXYtcGFyc2UnLCAnLS12ZXJpZnknLCAnJXNeMCcgJSAoc2VsZi5zaGExLCldCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZXhjZXB0IENvbW1hbmRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBDYW5ub3QgZGVyZWYgdGFnIHRvIGRldGVybWluZSBjb21taXRfc2hhMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9zaGExID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9zaGExID0gTm9uZQorCisgICAgICAgIHNlbGYuc2hvcnQgPSByZWFkX2dpdF9vdXRwdXQoWydyZXYtcGFyc2UnLCAnLS1zaG9ydCcsIHNoYTFdKQorCisgICAgZGVmIGdldF9zdW1tYXJ5KHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gKHNoYTFfc2hvcnQsIHN1YmplY3QpIGZvciB0aGlzIGNvbW1pdC4iIiIKKworICAgICAgICBpZiBub3Qgc2VsZi5zaGExOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignRW1wdHkgY29tbWl0IGhhcyBubyBzdW1tYXJ5JykKKworICAgICAgICByZXR1cm4gaXRlcihnZW5lcmF0ZV9zdW1tYXJpZXMoJy0tbm8td2FsaycsIHNlbGYuc2hhMSkpLm5leHQoKQorCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG90aGVyLCBHaXRPYmplY3QpIGFuZCBzZWxmLnNoYTEgPT0gb3RoZXIuc2hhMQorCisgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gaGFzaChzZWxmLnNoYTEpCisKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgIHJldHVybiBib29sKHNlbGYuc2hhMSkKKworICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5zaGExIG9yIFpFUk9TCisKKworY2xhc3MgQ2hhbmdlKG9iamVjdCk6CisgICAgIiIiQSBDaGFuZ2UgdGhhdCBoYXMgYmVlbiBtYWRlIHRvIHRoZSBHaXQgcmVwb3NpdG9yeS4KKworICAgIEFic3RyYWN0IGNsYXNzIGZyb20gd2hpY2ggYm90aCBSZXZpc2lvbnMgYW5kIFJlZmVyZW5jZUNoYW5nZXMgYXJlCisgICAgZGVyaXZlZC4gIEEgQ2hhbmdlIGtub3dzIGhvdyB0byBnZW5lcmF0ZSBhIG5vdGlmaWNhdGlvbiBlbWFpbAorICAgIGRlc2NyaWJpbmcgaXRzZWxmLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVudmlyb25tZW50KToKKyAgICAgICAgc2VsZi5lbnZpcm9ubWVudCA9IGVudmlyb25tZW50CisgICAgICAgIHNlbGYuX3ZhbHVlcyA9IE5vbmUKKworICAgIGRlZiBfY29tcHV0ZV92YWx1ZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhIGRpY3Rpb25hcnkge2tleXdvcmQgOiBleHBhbnNpb259IGZvciB0aGlzIENoYW5nZS4KKworICAgICAgICBEZXJpdmVkIGNsYXNzZXMgb3ZlcmxvYWQgdGhpcyBtZXRob2QgdG8gYWRkIG1vcmUgZW50cmllcyB0bworICAgICAgICB0aGUgcmV0dXJuIHZhbHVlLiAgVGhpcyBtZXRob2QgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5CisgICAgICAgIGdldF92YWx1ZXMoKS4gIFRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIGFsd2F5cyBiZSBhIG5ldworICAgICAgICBkaWN0aW9uYXJ5LiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLmVudmlyb25tZW50LmdldF92YWx1ZXMoKQorCisgICAgZGVmIGdldF92YWx1ZXMoc2VsZiwgKipleHRyYV92YWx1ZXMpOgorICAgICAgICAiIiJSZXR1cm4gYSBkaWN0aW9uYXJ5IHtrZXl3b3JkIDogZXhwYW5zaW9ufSBmb3IgdGhpcyBDaGFuZ2UuCisKKyAgICAgICAgUmV0dXJuIGEgZGljdGlvbmFyeSBtYXBwaW5nIGtleXdvcmRzIHRvIHRoZSB2YWx1ZXMgdGhhdCB0aGV5CisgICAgICAgIHNob3VsZCBiZSBleHBhbmRlZCB0byBmb3IgdGhpcyBDaGFuZ2UgKHVzZWQgd2hlbiBpbnRlcnBvbGF0aW5nCisgICAgICAgIHRlbXBsYXRlIHN0cmluZ3MpLiAgSWYgYW55IGtleXdvcmQgYXJndW1lbnRzIGFyZSBzdXBwbGllZCwgYWRkCisgICAgICAgIHRob3NlIHRvIHRoZSByZXR1cm4gdmFsdWUgYXMgd2VsbC4gIFRoZSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzCisgICAgICAgIGEgbmV3IGRpY3Rpb25hcnkuIiIiCisKKyAgICAgICAgaWYgc2VsZi5fdmFsdWVzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLl92YWx1ZXMgPSBzZWxmLl9jb21wdXRlX3ZhbHVlcygpCisKKyAgICAgICAgdmFsdWVzID0gc2VsZi5fdmFsdWVzLmNvcHkoKQorICAgICAgICBpZiBleHRyYV92YWx1ZXM6CisgICAgICAgICAgICB2YWx1ZXMudXBkYXRlKGV4dHJhX3ZhbHVlcykKKyAgICAgICAgcmV0dXJuIHZhbHVlcworCisgICAgZGVmIGV4cGFuZChzZWxmLCB0ZW1wbGF0ZSwgKipleHRyYV92YWx1ZXMpOgorICAgICAgICAiIiJFeHBhbmQgdGVtcGxhdGUuCisKKyAgICAgICAgRXhwYW5kIHRoZSB0ZW1wbGF0ZSAod2hpY2ggc2hvdWxkIGJlIGEgc3RyaW5nKSB1c2luZyBzdHJpbmcKKyAgICAgICAgaW50ZXJwb2xhdGlvbiBvZiB0aGUgdmFsdWVzIGZvciB0aGlzIENoYW5nZS4gIElmIGFueSBrZXl3b3JkCisgICAgICAgIGFyZ3VtZW50cyBhcmUgcHJvdmlkZWQsIGFsc28gaW5jbHVkZSB0aG9zZSBpbiB0aGUga2V5d29yZHMKKyAgICAgICAgYXZhaWxhYmxlIGZvciBpbnRlcnBvbGF0aW9uLiIiIgorCisgICAgICAgIHJldHVybiB0ZW1wbGF0ZSAlIHNlbGYuZ2V0X3ZhbHVlcygqKmV4dHJhX3ZhbHVlcykKKworICAgIGRlZiBleHBhbmRfbGluZXMoc2VsZiwgdGVtcGxhdGUsICoqZXh0cmFfdmFsdWVzKToKKyAgICAgICAgIiIiQnJlYWsgdGVtcGxhdGUgaW50byBsaW5lcyBhbmQgZXhwYW5kIGVhY2ggbGluZS4iIiIKKworICAgICAgICB2YWx1ZXMgPSBzZWxmLmdldF92YWx1ZXMoKipleHRyYV92YWx1ZXMpCisgICAgICAgIGZvciBsaW5lIGluIHRlbXBsYXRlLnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgICAgICB5aWVsZCBsaW5lICUgdmFsdWVzCisKKyAgICBkZWYgZXhwYW5kX2hlYWRlcl9saW5lcyhzZWxmLCB0ZW1wbGF0ZSwgKipleHRyYV92YWx1ZXMpOgorICAgICAgICAiIiJCcmVhayB0ZW1wbGF0ZSBpbnRvIGxpbmVzIGFuZCBleHBhbmQgZWFjaCBsaW5lIGFzIGFuIFJGQyAyODIyIGhlYWRlci4KKworICAgICAgICBFbmNvZGUgdmFsdWVzIGFuZCBzcGxpdCB1cCBsaW5lcyB0aGF0IGFyZSB0b28gbG9uZy4gIFNpbGVudGx5CisgICAgICAgIHNraXAgbGluZXMgdGhhdCBjb250YWluIHJlZmVyZW5jZXMgdG8gdW5rbm93biB2YXJpYWJsZXMuIiIiCisKKyAgICAgICAgdmFsdWVzID0gc2VsZi5nZXRfdmFsdWVzKCoqZXh0cmFfdmFsdWVzKQorICAgICAgICBmb3IgbGluZSBpbiB0ZW1wbGF0ZS5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAobmFtZSwgdmFsdWUpID0gbGluZS5zcGxpdCgnOicsIDEpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlICUgdmFsdWVzCisgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3IsIGU6CisgICAgICAgICAgICAgICAgaWYgREVCVUc6CisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICAgICAgICAgICAgICAgICAnV2FybmluZzogdW5rbm93biB2YXJpYWJsZSAlciBpbiB0aGUgZm9sbG93aW5nIGxpbmU7IGxpbmUgc2tpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICcgICAgJXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGUuYXJnc1swXSwgbGluZSwpCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaCA9IEhlYWRlcih2YWx1ZSwgaGVhZGVyX25hbWU9bmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBoID0gSGVhZGVyKHZhbHVlLCBoZWFkZXJfbmFtZT1uYW1lLCBjaGFyc2V0PUNIQVJTRVQsIGVycm9ycz0ncmVwbGFjZScpCisgICAgICAgICAgICAgICAgZm9yIHNwbGl0bGluZSBpbiAoJyVzOiAlc1xuJyAlIChuYW1lLCBoLmVuY29kZSgpLCkpLnNwbGl0bGluZXMoVHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHNwbGl0bGluZQorCisgICAgZGVmIGdlbmVyYXRlX2VtYWlsX2hlYWRlcihzZWxmKToKKyAgICAgICAgIiIiR2VuZXJhdGUgdGhlIFJGQyAyODIyIGVtYWlsIGhlYWRlcnMgZm9yIHRoaXMgQ2hhbmdlLCBhIGxpbmUgYXQgYSB0aW1lLgorCisgICAgICAgIFRoZSBvdXRwdXQgc2hvdWxkIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZyBibGFuayBsaW5lLiIiIgorCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgZGVmIGdlbmVyYXRlX2VtYWlsX2ludHJvKHNlbGYpOgorICAgICAgICAiIiJHZW5lcmF0ZSB0aGUgZW1haWwgaW50cm8gZm9yIHRoaXMgQ2hhbmdlLCBhIGxpbmUgYXQgYSB0aW1lLgorCisgICAgICAgIFRoZSBvdXRwdXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBzdGFuZGFyZCBib2lsZXJwbGF0ZSBhdCB0aGUgdG9wCisgICAgICAgIG9mIHRoZSBlbWFpbCBib2R5LiIiIgorCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgZGVmIGdlbmVyYXRlX2VtYWlsX2JvZHkoc2VsZik6CisgICAgICAgICIiIkdlbmVyYXRlIHRoZSBtYWluIHBhcnQgb2YgdGhlIGVtYWlsIGJvZHksIGEgbGluZSBhdCBhIHRpbWUuCisKKyAgICAgICAgVGhlIHRleHQgaW4gdGhlIGJvZHkgbWlnaHQgYmUgdHJ1bmNhdGVkIGFmdGVyIGEgc3BlY2lmaWVkCisgICAgICAgIG51bWJlciBvZiBsaW5lcyAoc2VlIG11bHRpbWFpbGhvb2suZW1haWxtYXhsaW5lcykuIiIiCisKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1haWxfZm9vdGVyKHNlbGYpOgorICAgICAgICAiIiJHZW5lcmF0ZSB0aGUgZm9vdGVyIG9mIHRoZSBlbWFpbCwgYSBsaW5lIGF0IGEgdGltZS4KKworICAgICAgICBUaGUgZm9vdGVyIGlzIGFsd2F5cyBpbmNsdWRlZCwgaXJyZXNwZWN0aXZlIG9mCisgICAgICAgIG11bHRpbWFpbGhvb2suZW1haWxtYXhsaW5lcy4iIiIKKworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIGRlZiBnZW5lcmF0ZV9lbWFpbChzZWxmLCBwdXNoLCBib2R5X2ZpbHRlcj1Ob25lKToKKyAgICAgICAgIiIiR2VuZXJhdGUgYW4gZW1haWwgZGVzY3JpYmluZyB0aGlzIGNoYW5nZS4KKworICAgICAgICBJdGVyYXRlIG92ZXIgdGhlIGxpbmVzIChpbmNsdWRpbmcgdGhlIGhlYWRlciBsaW5lcykgb2YgYW4KKyAgICAgICAgZW1haWwgZGVzY3JpYmluZyB0aGlzIGNoYW5nZS4gIElmIGJvZHlfZmlsdGVyIGlzIG5vdCBOb25lLAorICAgICAgICB0aGVuIHVzZSBpdCB0byBmaWx0ZXIgdGhlIGxpbmVzIHRoYXQgYXJlIGludGVuZGVkIGZvciB0aGUKKyAgICAgICAgZW1haWwgYm9keS4iIiIKKworICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmdlbmVyYXRlX2VtYWlsX2hlYWRlcigpOgorICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICB5aWVsZCAnXG4nCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZ2VuZXJhdGVfZW1haWxfaW50cm8oKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgICAgICBib2R5ID0gc2VsZi5nZW5lcmF0ZV9lbWFpbF9ib2R5KHB1c2gpCisgICAgICAgIGlmIGJvZHlfZmlsdGVyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgYm9keSA9IGJvZHlfZmlsdGVyKGJvZHkpCisgICAgICAgIGZvciBsaW5lIGluIGJvZHk6CisgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5nZW5lcmF0ZV9lbWFpbF9mb290ZXIoKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworCitjbGFzcyBSZXZpc2lvbihDaGFuZ2UpOgorICAgICIiIkEgQ2hhbmdlIGNvbnNpc3Rpbmcgb2YgYSBzaW5nbGUgZ2l0IGNvbW1pdC4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZWZlcmVuY2VfY2hhbmdlLCByZXYsIG51bSwgdG90KToKKyAgICAgICAgQ2hhbmdlLl9faW5pdF9fKHNlbGYsIHJlZmVyZW5jZV9jaGFuZ2UuZW52aXJvbm1lbnQpCisgICAgICAgIHNlbGYucmVmZXJlbmNlX2NoYW5nZSA9IHJlZmVyZW5jZV9jaGFuZ2UKKyAgICAgICAgc2VsZi5yZXYgPSByZXYKKyAgICAgICAgc2VsZi5jaGFuZ2VfdHlwZSA9IHNlbGYucmVmZXJlbmNlX2NoYW5nZS5jaGFuZ2VfdHlwZQorICAgICAgICBzZWxmLnJlZm5hbWUgPSBzZWxmLnJlZmVyZW5jZV9jaGFuZ2UucmVmbmFtZQorICAgICAgICBzZWxmLm51bSA9IG51bQorICAgICAgICBzZWxmLnRvdCA9IHRvdAorICAgICAgICBzZWxmLmF1dGhvciA9IHJlYWRfZ2l0X291dHB1dChbJ2xvZycsICctLW5vLXdhbGsnLCAnLS1mb3JtYXQ9JWFOIDwlYUU+Jywgc2VsZi5yZXYuc2hhMV0pCisgICAgICAgIHNlbGYucmVjaXBpZW50cyA9IHNlbGYuZW52aXJvbm1lbnQuZ2V0X3JldmlzaW9uX3JlY2lwaWVudHMoc2VsZikKKworICAgIGRlZiBfY29tcHV0ZV92YWx1ZXMoc2VsZik6CisgICAgICAgIHZhbHVlcyA9IENoYW5nZS5fY29tcHV0ZV92YWx1ZXMoc2VsZikKKworICAgICAgICBvbmVsaW5lID0gcmVhZF9naXRfb3V0cHV0KAorICAgICAgICAgICAgWydsb2cnLCAnLS1mb3JtYXQ9JXMnLCAnLS1uby13YWxrJywgc2VsZi5yZXYuc2hhMV0KKyAgICAgICAgICAgICkKKworICAgICAgICB2YWx1ZXNbJ3JldiddID0gc2VsZi5yZXYuc2hhMQorICAgICAgICB2YWx1ZXNbJ3Jldl9zaG9ydCddID0gc2VsZi5yZXYuc2hvcnQKKyAgICAgICAgdmFsdWVzWydjaGFuZ2VfdHlwZSddID0gc2VsZi5jaGFuZ2VfdHlwZQorICAgICAgICB2YWx1ZXNbJ3JlZm5hbWUnXSA9IHNlbGYucmVmbmFtZQorICAgICAgICB2YWx1ZXNbJ3Nob3J0X3JlZm5hbWUnXSA9IHNlbGYucmVmZXJlbmNlX2NoYW5nZS5zaG9ydF9yZWZuYW1lCisgICAgICAgIHZhbHVlc1sncmVmbmFtZV90eXBlJ10gPSBzZWxmLnJlZmVyZW5jZV9jaGFuZ2UucmVmbmFtZV90eXBlCisgICAgICAgIHZhbHVlc1sncmVwbHlfdG9fbXNnaWQnXSA9IHNlbGYucmVmZXJlbmNlX2NoYW5nZS5tc2dpZAorICAgICAgICB2YWx1ZXNbJ251bSddID0gc2VsZi5udW0KKyAgICAgICAgdmFsdWVzWyd0b3QnXSA9IHNlbGYudG90CisgICAgICAgIHZhbHVlc1sncmVjaXBpZW50cyddID0gc2VsZi5yZWNpcGllbnRzCisgICAgICAgIHZhbHVlc1snb25lbGluZSddID0gb25lbGluZQorICAgICAgICB2YWx1ZXNbJ2F1dGhvciddID0gc2VsZi5hdXRob3IKKworICAgICAgICByZXBseV90byA9IHNlbGYuZW52aXJvbm1lbnQuZ2V0X3JlcGx5X3RvX2NvbW1pdChzZWxmKQorICAgICAgICBpZiByZXBseV90bzoKKyAgICAgICAgICAgIHZhbHVlc1sncmVwbHlfdG8nXSA9IHJlcGx5X3RvCisKKyAgICAgICAgcmV0dXJuIHZhbHVlcworCisgICAgZGVmIGdlbmVyYXRlX2VtYWlsX2hlYWRlcihzZWxmKToKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRfaGVhZGVyX2xpbmVzKFJFVklTSU9OX0hFQURFUl9URU1QTEFURSk6CisgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1haWxfaW50cm8oc2VsZik6CisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKFJFVklTSU9OX0lOVFJPX1RFTVBMQVRFKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgIGRlZiBnZW5lcmF0ZV9lbWFpbF9ib2R5KHNlbGYsIHB1c2gpOgorICAgICAgICAiIiJTaG93IHRoaXMgcmV2aXNpb24uIiIiCisKKyAgICAgICAgcmV0dXJuIHJlYWRfZ2l0X2xpbmVzKAorICAgICAgICAgICAgWworICAgICAgICAgICAgICAgICdsb2cnLCAnLUMnLAorICAgICAgICAgICAgICAgICAnLS1zdGF0JywgJy1wJywgJy0tY2MnLAorICAgICAgICAgICAgICAgICctMScsIHNlbGYucmV2LnNoYTEsCisgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIGtlZXBlbmRzPVRydWUsCisgICAgICAgICAgICApCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1haWxfZm9vdGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5leHBhbmRfbGluZXMoUkVWSVNJT05fRk9PVEVSX1RFTVBMQVRFKQorCisKK2NsYXNzIFJlZmVyZW5jZUNoYW5nZShDaGFuZ2UpOgorICAgICIiIkEgQ2hhbmdlIHRvIGEgR2l0IHJlZmVyZW5jZS4KKworICAgIEFuIGFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyBhIGNyZWF0ZSwgdXBkYXRlLCBvciBkZWxldGUgb2YgYQorICAgIEdpdCByZWZlcmVuY2UuICBEZXJpdmVkIGNsYXNzZXMgaGFuZGxlIHNwZWNpZmljIHR5cGVzIG9mIHJlZmVyZW5jZQorICAgIChlLmcuLCB0YWdzIHZzLiBicmFuY2hlcykuICBUaGVzZSBjbGFzc2VzIGdlbmVyYXRlIHRoZSBtYWluCisgICAgcmVmZXJlbmNlIGNoYW5nZSBlbWFpbCBzdW1tYXJpemluZyB0aGUgcmVmZXJlbmNlIGNoYW5nZSBhbmQKKyAgICB3aGV0aGVyIGl0IGNhdXNlZCBhbnkgYW55IGNvbW1pdHMgdG8gYmUgYWRkZWQgb3IgcmVtb3ZlZC4KKworICAgIFJlZmVyZW5jZUNoYW5nZSBvYmplY3RzIGFyZSB1c3VhbGx5IGNyZWF0ZWQgdXNpbmcgdGhlIHN0YXRpYworICAgIGNyZWF0ZSgpIG1ldGhvZCwgd2hpY2ggaGFzIHRoZSBsb2dpYyB0byBkZWNpZGUgd2hpY2ggZGVyaXZlZCBjbGFzcworICAgIHRvIGluc3RhbnRpYXRlLiIiIgorCisgICAgUkVGX1JFID0gcmUuY29tcGlsZShyJ15yZWZzXC8oP1A8YXJlYT5bXlwvXSspXC8oP1A8c2hvcnRuYW1lPi4qKSQnKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBjcmVhdGUoZW52aXJvbm1lbnQsIG9sZHJldiwgbmV3cmV2LCByZWZuYW1lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgUmVmZXJlbmNlQ2hhbmdlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIGNoYW5nZS4KKworICAgICAgICBSZXR1cm4gYW4gb2JqZWN0IHRoYXQgcmVwcmVzZW50cyB0aGUgdHlwZSBvZiBjaGFuZ2UgdGhhdCBpcyBiZWluZworICAgICAgICBtYWRlLiBvbGRyZXYgYW5kIG5ld3JldiBzaG91bGQgYmUgU0hBMXMgb3IgWkVST1MuIiIiCisKKyAgICAgICAgb2xkID0gR2l0T2JqZWN0KG9sZHJldikKKyAgICAgICAgbmV3ID0gR2l0T2JqZWN0KG5ld3JldikKKyAgICAgICAgcmV2ID0gbmV3IG9yIG9sZAorCisgICAgICAgICMgVGhlIHJldmlzaW9uIHR5cGUgdGVsbHMgdXMgd2hhdCB0eXBlIHRoZSBjb21taXQgaXMsIGNvbWJpbmVkIHdpdGgKKyAgICAgICAgIyB0aGUgbG9jYXRpb24gb2YgdGhlIHJlZiB3ZSBjYW4gZGVjaWRlIGJldHdlZW4KKyAgICAgICAgIyAgLSB3b3JraW5nIGJyYW5jaAorICAgICAgICAjICAtIHRyYWNraW5nIGJyYW5jaAorICAgICAgICAjICAtIHVuYW5ub3RhdGVkIHRhZworICAgICAgICAjICAtIGFubm90YXRlZCB0YWcKKyAgICAgICAgbSA9IFJlZmVyZW5jZUNoYW5nZS5SRUZfUkUubWF0Y2gocmVmbmFtZSkKKyAgICAgICAgaWYgbToKKyAgICAgICAgICAgIGFyZWEgPSBtLmdyb3VwKCdhcmVhJykKKyAgICAgICAgICAgIHNob3J0X3JlZm5hbWUgPSBtLmdyb3VwKCdzaG9ydG5hbWUnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYXJlYSA9ICcnCisgICAgICAgICAgICBzaG9ydF9yZWZuYW1lID0gcmVmbmFtZQorCisgICAgICAgIGlmIHJldi50eXBlID09ICd0YWcnOgorICAgICAgICAgICAgIyBBbm5vdGF0ZWQgdGFnOgorICAgICAgICAgICAga2xhc3MgPSBBbm5vdGF0ZWRUYWdDaGFuZ2UKKyAgICAgICAgZWxpZiByZXYudHlwZSA9PSAnY29tbWl0JzoKKyAgICAgICAgICAgIGlmIGFyZWEgPT0gJ3RhZ3MnOgorICAgICAgICAgICAgICAgICMgTm9uLWFubm90YXRlZCB0YWc6CisgICAgICAgICAgICAgICAga2xhc3MgPSBOb25Bbm5vdGF0ZWRUYWdDaGFuZ2UKKyAgICAgICAgICAgIGVsaWYgYXJlYSA9PSAnaGVhZHMnOgorICAgICAgICAgICAgICAgICMgQnJhbmNoOgorICAgICAgICAgICAgICAgIGtsYXNzID0gQnJhbmNoQ2hhbmdlCisgICAgICAgICAgICBlbGlmIGFyZWEgPT0gJ3JlbW90ZXMnOgorICAgICAgICAgICAgICAgICMgVHJhY2tpbmcgYnJhbmNoOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICAgICAgICAgICAgICcqKiogUHVzaC11cGRhdGUgb2YgdHJhY2tpbmcgYnJhbmNoICVyXG4nCisgICAgICAgICAgICAgICAgICAgICcqKiogIC0gaW5jb21wbGV0ZSBlbWFpbCBnZW5lcmF0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAlIChyZWZuYW1lLCkKKyAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIGtsYXNzID0gT3RoZXJSZWZlcmVuY2VDaGFuZ2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBTb21lIG90aGVyIHJlZmVyZW5jZSBuYW1lc3BhY2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAgICAgICAgJyoqKiBQdXNoLXVwZGF0ZSBvZiBzdHJhbmdlIHJlZmVyZW5jZSAlclxuJworICAgICAgICAgICAgICAgICAgICAnKioqICAtIGluY29tcGxldGUgZW1haWwgZ2VuZXJhdGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJSAocmVmbmFtZSwpCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBrbGFzcyA9IE90aGVyUmVmZXJlbmNlQ2hhbmdlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEFueXRoaW5nIGVsc2UgKGlzIHRoZXJlIGFueXRoaW5nIGVsc2U/KQorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAgICAnKioqIFVua25vd24gdHlwZSBvZiB1cGRhdGUgdG8gJXIgKCVzKVxuJworICAgICAgICAgICAgICAgICcqKiogIC0gaW5jb21wbGV0ZSBlbWFpbCBnZW5lcmF0ZWQuXG4nCisgICAgICAgICAgICAgICAgICUgKHJlZm5hbWUsIHJldi50eXBlLCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBrbGFzcyA9IE90aGVyUmVmZXJlbmNlQ2hhbmdlCisKKyAgICAgICAgcmV0dXJuIGtsYXNzKAorICAgICAgICAgICAgZW52aXJvbm1lbnQsCisgICAgICAgICAgICByZWZuYW1lPXJlZm5hbWUsIHNob3J0X3JlZm5hbWU9c2hvcnRfcmVmbmFtZSwKKyAgICAgICAgICAgIG9sZD1vbGQsIG5ldz1uZXcsIHJldj1yZXYsCisgICAgICAgICAgICApCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZW52aXJvbm1lbnQsIHJlZm5hbWUsIHNob3J0X3JlZm5hbWUsIG9sZCwgbmV3LCByZXYpOgorICAgICAgICBDaGFuZ2UuX19pbml0X18oc2VsZiwgZW52aXJvbm1lbnQpCisgICAgICAgIHNlbGYuY2hhbmdlX3R5cGUgPSB7CisgICAgICAgICAgICAoRmFsc2UsIFRydWUpIDogJ2NyZWF0ZScsCisgICAgICAgICAgICAoVHJ1ZSwgVHJ1ZSkgOiAndXBkYXRlJywKKyAgICAgICAgICAgIChUcnVlLCBGYWxzZSkgOiAnZGVsZXRlJywKKyAgICAgICAgICAgIH1bYm9vbChvbGQpLCBib29sKG5ldyldCisgICAgICAgIHNlbGYucmVmbmFtZSA9IHJlZm5hbWUKKyAgICAgICAgc2VsZi5zaG9ydF9yZWZuYW1lID0gc2hvcnRfcmVmbmFtZQorICAgICAgICBzZWxmLm9sZCA9IG9sZAorICAgICAgICBzZWxmLm5ldyA9IG5ldworICAgICAgICBzZWxmLnJldiA9IHJldgorICAgICAgICBzZWxmLm1zZ2lkID0gbWFrZV9tc2dpZCgpCisgICAgICAgIHNlbGYuZGlmZm9wdHMgPSBlbnZpcm9ubWVudC5kaWZmb3B0cworICAgICAgICBzZWxmLmxvZ29wdHMgPSBlbnZpcm9ubWVudC5sb2dvcHRzCisgICAgICAgIHNlbGYuc2hvd2xvZyA9IGVudmlyb25tZW50LnJlZmNoYW5nZV9zaG93bG9nCisKKyAgICBkZWYgX2NvbXB1dGVfdmFsdWVzKHNlbGYpOgorICAgICAgICB2YWx1ZXMgPSBDaGFuZ2UuX2NvbXB1dGVfdmFsdWVzKHNlbGYpCisKKyAgICAgICAgdmFsdWVzWydjaGFuZ2VfdHlwZSddID0gc2VsZi5jaGFuZ2VfdHlwZQorICAgICAgICB2YWx1ZXNbJ3JlZm5hbWVfdHlwZSddID0gc2VsZi5yZWZuYW1lX3R5cGUKKyAgICAgICAgdmFsdWVzWydyZWZuYW1lJ10gPSBzZWxmLnJlZm5hbWUKKyAgICAgICAgdmFsdWVzWydzaG9ydF9yZWZuYW1lJ10gPSBzZWxmLnNob3J0X3JlZm5hbWUKKyAgICAgICAgdmFsdWVzWydtc2dpZCddID0gc2VsZi5tc2dpZAorICAgICAgICB2YWx1ZXNbJ3JlY2lwaWVudHMnXSA9IHNlbGYucmVjaXBpZW50cworICAgICAgICB2YWx1ZXNbJ29sZHJldiddID0gc3RyKHNlbGYub2xkKQorICAgICAgICB2YWx1ZXNbJ29sZHJldl9zaG9ydCddID0gc2VsZi5vbGQuc2hvcnQKKyAgICAgICAgdmFsdWVzWyduZXdyZXYnXSA9IHN0cihzZWxmLm5ldykKKyAgICAgICAgdmFsdWVzWyduZXdyZXZfc2hvcnQnXSA9IHNlbGYubmV3LnNob3J0CisKKyAgICAgICAgaWYgc2VsZi5vbGQ6CisgICAgICAgICAgICB2YWx1ZXNbJ29sZHJldl90eXBlJ10gPSBzZWxmLm9sZC50eXBlCisgICAgICAgIGlmIHNlbGYubmV3OgorICAgICAgICAgICAgdmFsdWVzWyduZXdyZXZfdHlwZSddID0gc2VsZi5uZXcudHlwZQorCisgICAgICAgIHJlcGx5X3RvID0gc2VsZi5lbnZpcm9ubWVudC5nZXRfcmVwbHlfdG9fcmVmY2hhbmdlKHNlbGYpCisgICAgICAgIGlmIHJlcGx5X3RvOgorICAgICAgICAgICAgdmFsdWVzWydyZXBseV90byddID0gcmVwbHlfdG8KKworICAgICAgICByZXR1cm4gdmFsdWVzCisKKyAgICBkZWYgZ2V0X3N1YmplY3Qoc2VsZik6CisgICAgICAgIHRlbXBsYXRlID0geworICAgICAgICAgICAgJ2NyZWF0ZScgOiBSRUZfQ1JFQVRFRF9TVUJKRUNUX1RFTVBMQVRFLAorICAgICAgICAgICAgJ3VwZGF0ZScgOiBSRUZfVVBEQVRFRF9TVUJKRUNUX1RFTVBMQVRFLAorICAgICAgICAgICAgJ2RlbGV0ZScgOiBSRUZfREVMRVRFRF9TVUJKRUNUX1RFTVBMQVRFLAorICAgICAgICAgICAgfVtzZWxmLmNoYW5nZV90eXBlXQorICAgICAgICByZXR1cm4gc2VsZi5leHBhbmQodGVtcGxhdGUpCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1haWxfaGVhZGVyKHNlbGYpOgorICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmV4cGFuZF9oZWFkZXJfbGluZXMoCisgICAgICAgICAgICBSRUZDSEFOR0VfSEVBREVSX1RFTVBMQVRFLCBzdWJqZWN0PXNlbGYuZ2V0X3N1YmplY3QoKSwKKyAgICAgICAgICAgICk6CisgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1haWxfaW50cm8oc2VsZik6CisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKFJFRkNIQU5HRV9JTlRST19URU1QTEFURSk6CisgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICBkZWYgZ2VuZXJhdGVfZW1haWxfYm9keShzZWxmLCBwdXNoKToKKyAgICAgICAgIiIiQ2FsbCB0aGUgYXBwcm9wcmlhdGUgYm9keS1nZW5lcmF0aW9uIHJvdXRpbmUuCisKKyAgICAgICAgQ2FsbCBvbmUgb2YgZ2VuZXJhdGVfY3JlYXRlX3N1bW1hcnkoKSAvCisgICAgICAgIGdlbmVyYXRlX3VwZGF0ZV9zdW1tYXJ5KCkgLyBnZW5lcmF0ZV9kZWxldGVfc3VtbWFyeSgpLiIiIgorCisgICAgICAgIGNoYW5nZV9zdW1tYXJ5ID0geworICAgICAgICAgICAgJ2NyZWF0ZScgOiBzZWxmLmdlbmVyYXRlX2NyZWF0ZV9zdW1tYXJ5LAorICAgICAgICAgICAgJ2RlbGV0ZScgOiBzZWxmLmdlbmVyYXRlX2RlbGV0ZV9zdW1tYXJ5LAorICAgICAgICAgICAgJ3VwZGF0ZScgOiBzZWxmLmdlbmVyYXRlX3VwZGF0ZV9zdW1tYXJ5LAorICAgICAgICAgICAgfVtzZWxmLmNoYW5nZV90eXBlXShwdXNoKQorICAgICAgICBmb3IgbGluZSBpbiBjaGFuZ2Vfc3VtbWFyeToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmdlbmVyYXRlX3JldmlzaW9uX2NoYW5nZV9zdW1tYXJ5KHB1c2gpOgorICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIGdlbmVyYXRlX2VtYWlsX2Zvb3RlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuZXhwYW5kX2xpbmVzKEZPT1RFUl9URU1QTEFURSkKKworICAgIGRlZiBnZW5lcmF0ZV9yZXZpc2lvbl9jaGFuZ2VfbG9nKHNlbGYsIG5ld19jb21taXRzX2xpc3QpOgorICAgICAgICBpZiBzZWxmLnNob3dsb2c6CisgICAgICAgICAgICB5aWVsZCAnXG4nCisgICAgICAgICAgICB5aWVsZCAnRGV0YWlsZWQgbG9nIG9mIG5ldyBjb21taXRzOlxuXG4nCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2dpdF9saW5lcygKKyAgICAgICAgICAgICAgICAgICAgWydsb2cnLCAnLS1uby13YWxrJ10KKyAgICAgICAgICAgICAgICAgICAgKyBzZWxmLmxvZ29wdHMKKyAgICAgICAgICAgICAgICAgICAgKyBuZXdfY29tbWl0c19saXN0CisgICAgICAgICAgICAgICAgICAgICsgWyctLSddLAorICAgICAgICAgICAgICAgICAgICBrZWVwZW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIGdlbmVyYXRlX3JldmlzaW9uX2NoYW5nZV9zdW1tYXJ5KHNlbGYsIHB1c2gpOgorICAgICAgICAiIiJHZW5lcmF0ZSBhIHN1bW1hcnkgb2YgdGhlIHJldmlzaW9ucyBhZGRlZC9yZW1vdmVkIGJ5IHRoaXMgY2hhbmdlLiIiIgorCisgICAgICAgIGlmIHNlbGYubmV3LmNvbW1pdF9zaGExIGFuZCBub3Qgc2VsZi5vbGQuY29tbWl0X3NoYTE6CisgICAgICAgICAgICAjIEEgbmV3IHJlZmVyZW5jZSB3YXMgY3JlYXRlZC4gIExpc3QgdGhlIG5ldyByZXZpc2lvbnMKKyAgICAgICAgICAgICMgYnJvdWdodCBieSB0aGUgbmV3IHJlZmVyZW5jZSAoaS5lLiwgdGhvc2UgcmV2aXNpb25zIHRoYXQKKyAgICAgICAgICAgICMgd2VyZSBub3QgaW4gdGhlIHJlcG9zaXRvcnkgYmVmb3JlIHRoaXMgcmVmZXJlbmNlCisgICAgICAgICAgICAjIGNoYW5nZSkuCisgICAgICAgICAgICBzaGExcyA9IGxpc3QocHVzaC5nZXRfbmV3X2NvbW1pdHMoc2VsZikpCisgICAgICAgICAgICBzaGExcy5yZXZlcnNlKCkKKyAgICAgICAgICAgIHRvdCA9IGxlbihzaGExcykKKyAgICAgICAgICAgIG5ld19yZXZpc2lvbnMgPSBbCisgICAgICAgICAgICAgICAgUmV2aXNpb24oc2VsZiwgR2l0T2JqZWN0KHNoYTEpLCBudW09aSsxLCB0b3Q9dG90KQorICAgICAgICAgICAgICAgIGZvciAoaSwgc2hhMSkgaW4gZW51bWVyYXRlKHNoYTFzKQorICAgICAgICAgICAgICAgIF0KKworICAgICAgICAgICAgaWYgbmV3X3JldmlzaW9uczoKKyAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmV4cGFuZCgnVGhpcyAlKHJlZm5hbWVfdHlwZSlzIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgbmV3IGNvbW1pdHM6XG4nKQorICAgICAgICAgICAgICAgIHlpZWxkICdcbicKKyAgICAgICAgICAgICAgICBmb3IgciBpbiBuZXdfcmV2aXNpb25zOgorICAgICAgICAgICAgICAgICAgICAoc2hhMSwgc3ViamVjdCkgPSByLnJldi5nZXRfc3VtbWFyeSgpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHIuZXhwYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgQlJJRUZfU1VNTUFSWV9URU1QTEFURSwgYWN0aW9uPSduZXcnLCB0ZXh0PXN1YmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgeWllbGQgJ1xuJworICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKE5FV19SRVZJU0lPTlNfVEVNUExBVEUsIHRvdD10b3QpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5nZW5lcmF0ZV9yZXZpc2lvbl9jaGFuZ2VfbG9nKFtyLnJldi5zaGExIGZvciByIGluIG5ld19yZXZpc2lvbnNdKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmV4cGFuZF9saW5lcyhOT19ORVdfUkVWSVNJT05TX1RFTVBMQVRFKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgICAgIGVsaWYgc2VsZi5uZXcuY29tbWl0X3NoYTEgYW5kIHNlbGYub2xkLmNvbW1pdF9zaGExOgorICAgICAgICAgICAgIyBBIHJlZmVyZW5jZSB3YXMgY2hhbmdlZCB0byBwb2ludCBhdCBhIGRpZmZlcmVudCBjb21taXQuCisgICAgICAgICAgICAjIExpc3QgdGhlIHJldmlzaW9ucyB0aGF0IHdlcmUgcmVtb3ZlZCBhbmQvb3IgYWRkZWQgKmZyb20KKyAgICAgICAgICAgICMgdGhhdCByZWZlcmVuY2UqIGJ5IHRoaXMgcmVmZXJlbmNlIGNoYW5nZSwgYWxvbmcgd2l0aCBhCisgICAgICAgICAgICAjIGRpZmYgYmV0d2VlbiB0aGUgdHJlZXMgZm9yIGl0cyBvbGQgYW5kIG5ldyB2YWx1ZXMuCisKKyAgICAgICAgICAgICMgTGlzdCBvZiB0aGUgcmV2aXNpb25zIHRoYXQgd2VyZSBhZGRlZCB0byB0aGUgYnJhbmNoIGJ5CisgICAgICAgICAgICAjIHRoaXMgdXBkYXRlLiAgTm90ZSB0aGlzIGxpc3QgY2FuIGluY2x1ZGUgcmV2aXNpb25zIHRoYXQKKyAgICAgICAgICAgICMgaGF2ZSBhbHJlYWR5IGhhZCBub3RpZmljYXRpb24gZW1haWxzOyB3ZSB3YW50IHN1Y2gKKyAgICAgICAgICAgICMgcmV2aXNpb25zIGluIHRoZSBzdW1tYXJ5IGV2ZW4gdGhvdWdoIHdlIHdpbGwgbm90IHNlbmQKKyAgICAgICAgICAgICMgbmV3IG5vdGlmaWNhdGlvbiBlbWFpbHMgZm9yIHRoZW0uCisgICAgICAgICAgICBhZGRzID0gbGlzdChnZW5lcmF0ZV9zdW1tYXJpZXMoCisgICAgICAgICAgICAgICAgICAgICctLXRvcG8tb3JkZXInLCAnLS1yZXZlcnNlJywgJyVzLi4lcycKKyAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5vbGQuY29tbWl0X3NoYTEsIHNlbGYubmV3LmNvbW1pdF9zaGExLCkKKyAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICAgICAgIyBMaXN0IG9mIHRoZSByZXZpc2lvbnMgdGhhdCB3ZXJlIHJlbW92ZWQgZnJvbSB0aGUgYnJhbmNoCisgICAgICAgICAgICAjIGJ5IHRoaXMgdXBkYXRlLiAgVGhpcyB3aWxsIGJlIGVtcHR5IGV4Y2VwdCBmb3IKKyAgICAgICAgICAgICMgbm9uLWZhc3QtZm9yd2FyZCB1cGRhdGVzLgorICAgICAgICAgICAgZGlzY2FyZHMgPSBsaXN0KGdlbmVyYXRlX3N1bW1hcmllcygKKyAgICAgICAgICAgICAgICAgICAgJyVzLi4lcycgJSAoc2VsZi5uZXcuY29tbWl0X3NoYTEsIHNlbGYub2xkLmNvbW1pdF9zaGExLCkKKyAgICAgICAgICAgICAgICAgICAgKSkKKworICAgICAgICAgICAgaWYgYWRkczoKKyAgICAgICAgICAgICAgICBuZXdfY29tbWl0c19saXN0ID0gcHVzaC5nZXRfbmV3X2NvbW1pdHMoc2VsZikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmV3X2NvbW1pdHNfbGlzdCA9IFtdCisgICAgICAgICAgICBuZXdfY29tbWl0cyA9IENvbW1pdFNldChuZXdfY29tbWl0c19saXN0KQorCisgICAgICAgICAgICBpZiBkaXNjYXJkczoKKyAgICAgICAgICAgICAgICBkaXNjYXJkZWRfY29tbWl0cyA9IENvbW1pdFNldChwdXNoLmdldF9kaXNjYXJkZWRfY29tbWl0cyhzZWxmKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZGlzY2FyZGVkX2NvbW1pdHMgPSBDb21taXRTZXQoW10pCisKKyAgICAgICAgICAgIGlmIGRpc2NhcmRzIGFuZCBhZGRzOgorICAgICAgICAgICAgICAgIGZvciAoc2hhMSwgc3ViamVjdCkgaW4gZGlzY2FyZHM6CisgICAgICAgICAgICAgICAgICAgIGlmIHNoYTEgaW4gZGlzY2FyZGVkX2NvbW1pdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAnZGlzY2FyZHMnCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAnb21pdHMnCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuZXhwYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgQlJJRUZfU1VNTUFSWV9URU1QTEFURSwgYWN0aW9uPWFjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldl9zaG9ydD1zaGExLCB0ZXh0PXN1YmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgZm9yIChzaGExLCBzdWJqZWN0KSBpbiBhZGRzOgorICAgICAgICAgICAgICAgICAgICBpZiBzaGExIGluIG5ld19jb21taXRzOgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gJ25ldycKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICdhZGRzJworICAgICAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLmV4cGFuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIEJSSUVGX1NVTU1BUllfVEVNUExBVEUsIGFjdGlvbj1hY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICByZXZfc2hvcnQ9c2hhMSwgdGV4dD1zdWJqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHlpZWxkICdcbicKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmV4cGFuZF9saW5lcyhOT05fRkZfVEVNUExBVEUpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICAgICAgICAgIGVsaWYgZGlzY2FyZHM6CisgICAgICAgICAgICAgICAgZm9yIChzaGExLCBzdWJqZWN0KSBpbiBkaXNjYXJkczoKKyAgICAgICAgICAgICAgICAgICAgaWYgc2hhMSBpbiBkaXNjYXJkZWRfY29tbWl0czoKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICdkaXNjYXJkcycKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9ICdvbWl0cycKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5leHBhbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBCUklFRl9TVU1NQVJZX1RFTVBMQVRFLCBhY3Rpb249YWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgcmV2X3Nob3J0PXNoYTEsIHRleHQ9c3ViamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICB5aWVsZCAnXG4nCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRfbGluZXMoUkVXSU5EX09OTFlfVEVNUExBVEUpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICAgICAgICAgIGVsaWYgYWRkczoKKyAgICAgICAgICAgICAgICAoc2hhMSwgc3ViamVjdCkgPSBzZWxmLm9sZC5nZXRfc3VtbWFyeSgpCisgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5leHBhbmQoCisgICAgICAgICAgICAgICAgICAgIEJSSUVGX1NVTU1BUllfVEVNUExBVEUsIGFjdGlvbj0nZnJvbScsCisgICAgICAgICAgICAgICAgICAgIHJldl9zaG9ydD1zaGExLCB0ZXh0PXN1YmplY3QsCisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBmb3IgKHNoYTEsIHN1YmplY3QpIGluIGFkZHM6CisgICAgICAgICAgICAgICAgICAgIGlmIHNoYTEgaW4gbmV3X2NvbW1pdHM6CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSAnbmV3JworICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gJ2FkZHMnCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuZXhwYW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgQlJJRUZfU1VNTUFSWV9URU1QTEFURSwgYWN0aW9uPWFjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldl9zaG9ydD1zaGExLCB0ZXh0PXN1YmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgICAgIHlpZWxkICdcbicKKworICAgICAgICAgICAgaWYgbmV3X2NvbW1pdHM6CisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRfbGluZXMoTkVXX1JFVklTSU9OU19URU1QTEFURSwgdG90PWxlbihuZXdfY29tbWl0cykpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5nZW5lcmF0ZV9yZXZpc2lvbl9jaGFuZ2VfbG9nKG5ld19jb21taXRzX2xpc3QpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKE5PX05FV19SRVZJU0lPTlNfVEVNUExBVEUpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICAgICAgICAgICMgVGhlIGRpZmZzdGF0IGlzIHNob3duIGZyb20gdGhlIG9sZCByZXZpc2lvbiB0byB0aGUgbmV3CisgICAgICAgICAgICAjIHJldmlzaW9uLiAgVGhpcyBpcyB0byBzaG93IHRoZSB0cnV0aCBvZiB3aGF0IGhhcHBlbmVkIGluCisgICAgICAgICAgICAjIHRoaXMgY2hhbmdlLiAgVGhlcmUncyBubyBwb2ludCBzaG93aW5nIHRoZSBzdGF0IGZyb20gdGhlCisgICAgICAgICAgICAjIGJhc2UgdG8gdGhlIG5ldyByZXZpc2lvbiBiZWNhdXNlIHRoZSBiYXNlIGlzIGVmZmVjdGl2ZWx5IGEKKyAgICAgICAgICAgICMgcmFuZG9tIHJldmlzaW9uIGF0IHRoaXMgcG9pbnQgLSB0aGUgdXNlciB3aWxsIGJlIGludGVyZXN0ZWQKKyAgICAgICAgICAgICMgaW4gd2hhdCB0aGlzIHJldmlzaW9uIGNoYW5nZWQgLSBpbmNsdWRpbmcgdGhlIHVuZG9pbmcgb2YKKyAgICAgICAgICAgICMgcHJldmlvdXMgcmV2aXNpb25zIGluIHRoZSBjYXNlIG9mIG5vbi1mYXN0LWZvcndhcmQgdXBkYXRlcy4KKyAgICAgICAgICAgIHlpZWxkICdcbicKKyAgICAgICAgICAgIHlpZWxkICdTdW1tYXJ5IG9mIGNoYW5nZXM6XG4nCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2dpdF9saW5lcygKKyAgICAgICAgICAgICAgICBbJ2RpZmYtdHJlZSddCisgICAgICAgICAgICAgICAgKyBzZWxmLmRpZmZvcHRzCisgICAgICAgICAgICAgICAgKyBbJyVzLi4lcycgJSAoc2VsZi5vbGQuY29tbWl0X3NoYTEsIHNlbGYubmV3LmNvbW1pdF9zaGExLCldLAorICAgICAgICAgICAgICAgIGtlZXBlbmRzPVRydWUsCisgICAgICAgICAgICAgICAgKToKKyAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICAgICAgZWxpZiBzZWxmLm9sZC5jb21taXRfc2hhMSBhbmQgbm90IHNlbGYubmV3LmNvbW1pdF9zaGExOgorICAgICAgICAgICAgIyBBIHJlZmVyZW5jZSB3YXMgZGVsZXRlZC4gIExpc3QgdGhlIHJldmlzaW9ucyB0aGF0IHdlcmUKKyAgICAgICAgICAgICMgcmVtb3ZlZCBmcm9tIHRoZSByZXBvc2l0b3J5IGJ5IHRoaXMgcmVmZXJlbmNlIGNoYW5nZS4KKworICAgICAgICAgICAgc2hhMXMgPSBsaXN0KHB1c2guZ2V0X2Rpc2NhcmRlZF9jb21taXRzKHNlbGYpKQorICAgICAgICAgICAgdG90ID0gbGVuKHNoYTFzKQorICAgICAgICAgICAgZGlzY2FyZGVkX3JldmlzaW9ucyA9IFsKKyAgICAgICAgICAgICAgICBSZXZpc2lvbihzZWxmLCBHaXRPYmplY3Qoc2hhMSksIG51bT1pKzEsIHRvdD10b3QpCisgICAgICAgICAgICAgICAgZm9yIChpLCBzaGExKSBpbiBlbnVtZXJhdGUoc2hhMXMpCisgICAgICAgICAgICAgICAgXQorCisgICAgICAgICAgICBpZiBkaXNjYXJkZWRfcmV2aXNpb25zOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKERJU0NBUkRFRF9SRVZJU0lPTlNfVEVNUExBVEUpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBsaW5lCisgICAgICAgICAgICAgICAgeWllbGQgJ1xuJworICAgICAgICAgICAgICAgIGZvciByIGluIGRpc2NhcmRlZF9yZXZpc2lvbnM6CisgICAgICAgICAgICAgICAgICAgIChzaGExLCBzdWJqZWN0KSA9IHIucmV2LmdldF9zdW1tYXJ5KCkKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgci5leHBhbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBCUklFRl9TVU1NQVJZX1RFTVBMQVRFLCBhY3Rpb249J2Rpc2NhcmRzJywgdGV4dD1zdWJqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmV4cGFuZF9saW5lcyhOT19ESVNDQVJERURfUkVWSVNJT05TX1RFTVBMQVRFKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgICAgIGVsaWYgbm90IHNlbGYub2xkLmNvbW1pdF9zaGExIGFuZCBub3Qgc2VsZi5uZXcuY29tbWl0X3NoYTE6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmV4cGFuZF9saW5lcyhOT05fQ09NTUlUX1VQREFURV9URU1QTEFURSk6CisgICAgICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIGdlbmVyYXRlX2NyZWF0ZV9zdW1tYXJ5KHNlbGYsIHB1c2gpOgorICAgICAgICAiIiJDYWxsZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIHJlZmVyZW5jZS4iIiIKKworICAgICAgICAjIFRoaXMgaXMgYSBuZXcgcmVmZXJlbmNlIGFuZCBzbyBvbGRyZXYgaXMgbm90IHZhbGlkCisgICAgICAgIChzaGExLCBzdWJqZWN0KSA9IHNlbGYubmV3LmdldF9zdW1tYXJ5KCkKKyAgICAgICAgeWllbGQgc2VsZi5leHBhbmQoCisgICAgICAgICAgICBCUklFRl9TVU1NQVJZX1RFTVBMQVRFLCBhY3Rpb249J2F0JywKKyAgICAgICAgICAgIHJldl9zaG9ydD1zaGExLCB0ZXh0PXN1YmplY3QsCisgICAgICAgICAgICApCisgICAgICAgIHlpZWxkICdcbicKKworICAgIGRlZiBnZW5lcmF0ZV91cGRhdGVfc3VtbWFyeShzZWxmLCBwdXNoKToKKyAgICAgICAgIiIiQ2FsbGVkIGZvciB0aGUgY2hhbmdlIG9mIGEgcHJlLWV4aXN0aW5nIGJyYW5jaC4iIiIKKworICAgICAgICByZXR1cm4gaXRlcihbXSkKKworICAgIGRlZiBnZW5lcmF0ZV9kZWxldGVfc3VtbWFyeShzZWxmLCBwdXNoKToKKyAgICAgICAgIiIiQ2FsbGVkIGZvciB0aGUgZGVsZXRpb24gb2YgYW55IHR5cGUgb2YgcmVmZXJlbmNlLiIiIgorCisgICAgICAgIChzaGExLCBzdWJqZWN0KSA9IHNlbGYub2xkLmdldF9zdW1tYXJ5KCkKKyAgICAgICAgeWllbGQgc2VsZi5leHBhbmQoCisgICAgICAgICAgICBCUklFRl9TVU1NQVJZX1RFTVBMQVRFLCBhY3Rpb249J3dhcycsCisgICAgICAgICAgICByZXZfc2hvcnQ9c2hhMSwgdGV4dD1zdWJqZWN0LAorICAgICAgICAgICAgKQorICAgICAgICB5aWVsZCAnXG4nCisKKworY2xhc3MgQnJhbmNoQ2hhbmdlKFJlZmVyZW5jZUNoYW5nZSk6CisgICAgcmVmbmFtZV90eXBlID0gJ2JyYW5jaCcKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnZpcm9ubWVudCwgcmVmbmFtZSwgc2hvcnRfcmVmbmFtZSwgb2xkLCBuZXcsIHJldik6CisgICAgICAgIFJlZmVyZW5jZUNoYW5nZS5fX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIGVudmlyb25tZW50LAorICAgICAgICAgICAgcmVmbmFtZT1yZWZuYW1lLCBzaG9ydF9yZWZuYW1lPXNob3J0X3JlZm5hbWUsCisgICAgICAgICAgICBvbGQ9b2xkLCBuZXc9bmV3LCByZXY9cmV2LAorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLnJlY2lwaWVudHMgPSBlbnZpcm9ubWVudC5nZXRfcmVmY2hhbmdlX3JlY2lwaWVudHMoc2VsZikKKworCitjbGFzcyBBbm5vdGF0ZWRUYWdDaGFuZ2UoUmVmZXJlbmNlQ2hhbmdlKToKKyAgICByZWZuYW1lX3R5cGUgPSAnYW5ub3RhdGVkIHRhZycKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlbnZpcm9ubWVudCwgcmVmbmFtZSwgc2hvcnRfcmVmbmFtZSwgb2xkLCBuZXcsIHJldik6CisgICAgICAgIFJlZmVyZW5jZUNoYW5nZS5fX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIGVudmlyb25tZW50LAorICAgICAgICAgICAgcmVmbmFtZT1yZWZuYW1lLCBzaG9ydF9yZWZuYW1lPXNob3J0X3JlZm5hbWUsCisgICAgICAgICAgICBvbGQ9b2xkLCBuZXc9bmV3LCByZXY9cmV2LAorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLnJlY2lwaWVudHMgPSBlbnZpcm9ubWVudC5nZXRfYW5ub3VuY2VfcmVjaXBpZW50cyhzZWxmKQorICAgICAgICBzZWxmLnNob3dfc2hvcnRsb2cgPSBlbnZpcm9ubWVudC5hbm5vdW5jZV9zaG93X3Nob3J0bG9nCisKKyAgICBBTk5PVEFURURfVEFHX0ZPUk1BVCA9ICgKKyAgICAgICAgJyUoKm9iamVjdG5hbWUpXG4nCisgICAgICAgICclKCpvYmplY3R0eXBlKVxuJworICAgICAgICAnJSh0YWdnZXJuYW1lKVxuJworICAgICAgICAnJSh0YWdnZXJkYXRlKScKKyAgICAgICAgKQorCisgICAgZGVmIGRlc2NyaWJlX3RhZyhzZWxmLCBwdXNoKToKKyAgICAgICAgIiIiRGVzY3JpYmUgdGhlIG5ldyB2YWx1ZSBvZiBhbiBhbm5vdGF0ZWQgdGFnLiIiIgorCisgICAgICAgICMgVXNlIGdpdCBmb3ItZWFjaC1yZWYgdG8gcHVsbCBvdXQgdGhlIGluZGl2aWR1YWwgZmllbGRzIGZyb20KKyAgICAgICAgIyB0aGUgdGFnCisgICAgICAgIFt0YWdvYmplY3QsIHRhZ3R5cGUsIHRhZ2dlciwgdGFnZ2VkXSA9IHJlYWRfZ2l0X2xpbmVzKAorICAgICAgICAgICAgWydmb3ItZWFjaC1yZWYnLCAnLS1mb3JtYXQ9JXMnICUgKHNlbGYuQU5OT1RBVEVEX1RBR19GT1JNQVQsKSwgc2VsZi5yZWZuYW1lXSwKKyAgICAgICAgICAgICkKKworICAgICAgICB5aWVsZCBzZWxmLmV4cGFuZCgKKyAgICAgICAgICAgIEJSSUVGX1NVTU1BUllfVEVNUExBVEUsIGFjdGlvbj0ndGFnZ2luZycsCisgICAgICAgICAgICByZXZfc2hvcnQ9dGFnb2JqZWN0LCB0ZXh0PScoJXMpJyAlICh0YWd0eXBlLCksCisgICAgICAgICAgICApCisgICAgICAgIGlmIHRhZ3R5cGUgPT0gJ2NvbW1pdCc6CisgICAgICAgICAgICAjIElmIHRoZSB0YWdnZWQgb2JqZWN0IGlzIGEgY29tbWl0LCB0aGVuIHdlIGFzc3VtZSB0aGlzIGlzIGEKKyAgICAgICAgICAgICMgcmVsZWFzZSwgYW5kIHNvIHdlIGNhbGN1bGF0ZSB3aGljaCB0YWcgdGhpcyB0YWcgaXMKKyAgICAgICAgICAgICMgcmVwbGFjaW5nCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcHJldnRhZyA9IHJlYWRfZ2l0X291dHB1dChbJ2Rlc2NyaWJlJywgJy0tYWJicmV2PTAnLCAnJXNeJyAlIChzZWxmLm5ldywpXSkKKyAgICAgICAgICAgIGV4Y2VwdCBDb21tYW5kRXJyb3I6CisgICAgICAgICAgICAgICAgcHJldnRhZyA9IE5vbmUKKyAgICAgICAgICAgIGlmIHByZXZ0YWc6CisgICAgICAgICAgICAgICAgeWllbGQgJyAgcmVwbGFjZXMgICVzXG4nICUgKHByZXZ0YWcsKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJldnRhZyA9IE5vbmUKKyAgICAgICAgICAgIHlpZWxkICcgICAgbGVuZ3RoICAlcyBieXRlc1xuJyAlIChyZWFkX2dpdF9vdXRwdXQoWydjYXQtZmlsZScsICctcycsIHRhZ29iamVjdF0pLCkKKworICAgICAgICB5aWVsZCAnIHRhZ2dlZCBieSAgJXNcbicgJSAodGFnZ2VyLCkKKyAgICAgICAgeWllbGQgJyAgICAgICAgb24gICVzXG4nICUgKHRhZ2dlZCwpCisgICAgICAgIHlpZWxkICdcbicKKworICAgICAgICAjIFNob3cgdGhlIGNvbnRlbnQgb2YgdGhlIHRhZyBtZXNzYWdlOyB0aGlzIG1pZ2h0IGNvbnRhaW4gYQorICAgICAgICAjIGNoYW5nZSBsb2cgb3IgcmVsZWFzZSBub3RlcyBzbyBpcyB3b3J0aCBkaXNwbGF5aW5nLgorICAgICAgICB5aWVsZCBMT0dCRUdJTgorICAgICAgICBjb250ZW50cyA9IGxpc3QocmVhZF9naXRfbGluZXMoWydjYXQtZmlsZScsICd0YWcnLCBzZWxmLm5ldy5zaGExXSwga2VlcGVuZHM9VHJ1ZSkpCisgICAgICAgIGNvbnRlbnRzID0gY29udGVudHNbY29udGVudHMuaW5kZXgoJ1xuJykgKyAxOl0KKyAgICAgICAgaWYgY29udGVudHMgYW5kIGNvbnRlbnRzWy0xXVstMTpdICE9ICdcbic6CisgICAgICAgICAgICBjb250ZW50cy5hcHBlbmQoJ1xuJykKKyAgICAgICAgZm9yIGxpbmUgaW4gY29udGVudHM6CisgICAgICAgICAgICB5aWVsZCBsaW5lCisKKyAgICAgICAgaWYgc2VsZi5zaG93X3Nob3J0bG9nIGFuZCB0YWd0eXBlID09ICdjb21taXQnOgorICAgICAgICAgICAgIyBPbmx5IGNvbW1pdCB0YWdzIG1ha2Ugc2Vuc2UgdG8gaGF2ZSByZXYtbGlzdCBvcGVyYXRpb25zCisgICAgICAgICAgICAjIHBlcmZvcm1lZCBvbiB0aGVtCisgICAgICAgICAgICB5aWVsZCAnXG4nCisgICAgICAgICAgICBpZiBwcmV2dGFnOgorICAgICAgICAgICAgICAgICMgU2hvdyBjaGFuZ2VzIHNpbmNlIHRoZSBwcmV2aW91cyByZWxlYXNlCisgICAgICAgICAgICAgICAgcmV2bGlzdCA9IHJlYWRfZ2l0X291dHB1dCgKKyAgICAgICAgICAgICAgICAgICAgWydyZXYtbGlzdCcsICctLXByZXR0eT1zaG9ydCcsICclcy4uJXMnICUgKHByZXZ0YWcsIHNlbGYubmV3LCldLAorICAgICAgICAgICAgICAgICAgICBrZWVwZW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgTm8gcHJldmlvdXMgdGFnLCBzaG93IGFsbCB0aGUgY2hhbmdlcyBzaW5jZSB0aW1lCisgICAgICAgICAgICAgICAgIyBiZWdhbgorICAgICAgICAgICAgICAgIHJldmxpc3QgPSByZWFkX2dpdF9vdXRwdXQoCisgICAgICAgICAgICAgICAgICAgIFsncmV2LWxpc3QnLCAnLS1wcmV0dHk9c2hvcnQnLCAnJXMnICUgKHNlbGYubmV3LCldLAorICAgICAgICAgICAgICAgICAgICBrZWVwZW5kcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBmb3IgbGluZSBpbiByZWFkX2dpdF9saW5lcyhbJ3Nob3J0bG9nJ10sIGlucHV0PXJldmxpc3QsIGtlZXBlbmRzPVRydWUpOgorICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgICAgICB5aWVsZCBMT0dFTkQKKyAgICAgICAgeWllbGQgJ1xuJworCisgICAgZGVmIGdlbmVyYXRlX2NyZWF0ZV9zdW1tYXJ5KHNlbGYsIHB1c2gpOgorICAgICAgICAiIiJDYWxsZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhbiBhbm5vdGF0ZWQgdGFnLiIiIgorCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKFRBR19DUkVBVEVEX1RFTVBMQVRFKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmRlc2NyaWJlX3RhZyhwdXNoKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgIGRlZiBnZW5lcmF0ZV91cGRhdGVfc3VtbWFyeShzZWxmLCBwdXNoKToKKyAgICAgICAgIiIiQ2FsbGVkIGZvciB0aGUgdXBkYXRlIG9mIGFuIGFubm90YXRlZCB0YWcuCisKKyAgICAgICAgVGhpcyBpcyBwcm9iYWJseSBhIHJhcmUgZXZlbnQgYW5kIG1heSBub3QgZXZlbiBiZSBhbGxvd2VkLiIiIgorCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKFRBR19VUERBVEVEX1RFTVBMQVRFKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmRlc2NyaWJlX3RhZyhwdXNoKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgIGRlZiBnZW5lcmF0ZV9kZWxldGVfc3VtbWFyeShzZWxmLCBwdXNoKToKKyAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSBub24tYW5ub3RhdGVkIHJlZmVyZW5jZSBpcyB1cGRhdGVkLiIiIgorCisgICAgICAgIGZvciBsaW5lIGluIHNlbGYuZXhwYW5kX2xpbmVzKFRBR19ERUxFVEVEX1RFTVBMQVRFKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgICAgICB5aWVsZCBzZWxmLmV4cGFuZCgnICAgdGFnIHdhcyAgJShvbGRyZXZfc2hvcnQpc1xuJykKKyAgICAgICAgeWllbGQgJ1xuJworCisKK2NsYXNzIE5vbkFubm90YXRlZFRhZ0NoYW5nZShSZWZlcmVuY2VDaGFuZ2UpOgorICAgIHJlZm5hbWVfdHlwZSA9ICd0YWcnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZW52aXJvbm1lbnQsIHJlZm5hbWUsIHNob3J0X3JlZm5hbWUsIG9sZCwgbmV3LCByZXYpOgorICAgICAgICBSZWZlcmVuY2VDaGFuZ2UuX19pbml0X18oCisgICAgICAgICAgICBzZWxmLCBlbnZpcm9ubWVudCwKKyAgICAgICAgICAgIHJlZm5hbWU9cmVmbmFtZSwgc2hvcnRfcmVmbmFtZT1zaG9ydF9yZWZuYW1lLAorICAgICAgICAgICAgb2xkPW9sZCwgbmV3PW5ldywgcmV2PXJldiwKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5yZWNpcGllbnRzID0gZW52aXJvbm1lbnQuZ2V0X3JlZmNoYW5nZV9yZWNpcGllbnRzKHNlbGYpCisKKyAgICBkZWYgZ2VuZXJhdGVfY3JlYXRlX3N1bW1hcnkoc2VsZiwgcHVzaCk6CisgICAgICAgICIiIkNhbGxlZCBmb3IgdGhlIGNyZWF0aW9uIG9mIGFuIGFubm90YXRlZCB0YWcuIiIiCisKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRfbGluZXMoVEFHX0NSRUFURURfVEVNUExBVEUpOgorICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIGdlbmVyYXRlX3VwZGF0ZV9zdW1tYXJ5KHNlbGYsIHB1c2gpOgorICAgICAgICAiIiJDYWxsZWQgd2hlbiBhIG5vbi1hbm5vdGF0ZWQgcmVmZXJlbmNlIGlzIHVwZGF0ZWQuIiIiCisKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRfbGluZXMoVEFHX1VQREFURURfVEVNUExBVEUpOgorICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgZGVmIGdlbmVyYXRlX2RlbGV0ZV9zdW1tYXJ5KHNlbGYsIHB1c2gpOgorICAgICAgICAiIiJDYWxsZWQgd2hlbiBhIG5vbi1hbm5vdGF0ZWQgcmVmZXJlbmNlIGlzIHVwZGF0ZWQuIiIiCisKKyAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5leHBhbmRfbGluZXMoVEFHX0RFTEVURURfVEVNUExBVEUpOgorICAgICAgICAgICAgeWllbGQgbGluZQorCisgICAgICAgIGZvciBsaW5lIGluIFJlZmVyZW5jZUNoYW5nZS5nZW5lcmF0ZV9kZWxldGVfc3VtbWFyeShzZWxmLCBwdXNoKToKKyAgICAgICAgICAgIHlpZWxkIGxpbmUKKworCitjbGFzcyBPdGhlclJlZmVyZW5jZUNoYW5nZShSZWZlcmVuY2VDaGFuZ2UpOgorICAgIHJlZm5hbWVfdHlwZSA9ICdyZWZlcmVuY2UnCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZW52aXJvbm1lbnQsIHJlZm5hbWUsIHNob3J0X3JlZm5hbWUsIG9sZCwgbmV3LCByZXYpOgorICAgICAgICAjIFdlIHVzZSB0aGUgZnVsbCByZWZuYW1lIGFzIHNob3J0X3JlZm5hbWUsIGJlY2F1c2Ugb3RoZXJ3aXNlCisgICAgICAgICMgdGhlIGZ1bGwgbmFtZSBvZiB0aGUgcmVmZXJlbmNlIHdvdWxkIG5vdCBiZSBvYnZpb3VzIGZyb20gdGhlCisgICAgICAgICMgdGV4dCBvZiB0aGUgZW1haWwuCisgICAgICAgIFJlZmVyZW5jZUNoYW5nZS5fX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIGVudmlyb25tZW50LAorICAgICAgICAgICAgcmVmbmFtZT1yZWZuYW1lLCBzaG9ydF9yZWZuYW1lPXJlZm5hbWUsCisgICAgICAgICAgICBvbGQ9b2xkLCBuZXc9bmV3LCByZXY9cmV2LAorICAgICAgICAgICAgKQorICAgICAgICBzZWxmLnJlY2lwaWVudHMgPSBlbnZpcm9ubWVudC5nZXRfcmVmY2hhbmdlX3JlY2lwaWVudHMoc2VsZikKKworCitjbGFzcyBNYWlsZXIob2JqZWN0KToKKyAgICAiIiJBbiBvYmplY3QgdGhhdCBjYW4gc2VuZCBlbWFpbHMuIiIiCisKKyAgICBkZWYgc2VuZChzZWxmLCBsaW5lcywgdG9fYWRkcnMpOgorICAgICAgICAiIiJTZW5kIGFuIGVtYWlsIGNvbnNpc3Rpbmcgb2YgbGluZXMuCisKKyAgICAgICAgbGluZXMgbXVzdCBiZSBhbiBpdGVyYWJsZSBvdmVyIHRoZSBsaW5lcyBjb25zdGl0dXRpbmcgdGhlCisgICAgICAgIGhlYWRlciBhbmQgYm9keSBvZiB0aGUgZW1haWwuICB0b19hZGRycyBpcyBhIGxpc3Qgb2YgcmVjaXBpZW50CisgICAgICAgIGFkZHJlc3NlcyAoY2FuIGJlIG5lZWRlZCBldmVuIGlmIGxpbmVzIGFscmVhZHkgY29udGFpbnMgYQorICAgICAgICAiVG86IiBmaWVsZCkuICBJdCBjYW4gYmUgZWl0aGVyIGEgc3RyaW5nIChjb21tYS1zZXBhcmF0ZWQgbGlzdAorICAgICAgICBvZiBlbWFpbCBhZGRyZXNzZXMpIG9yIGEgUHl0aG9uIGxpc3Qgb2YgaW5kaXZpZHVhbCBlbWFpbAorICAgICAgICBhZGRyZXNzZXMuCisKKyAgICAgICAgIiIiCisKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKworY2xhc3MgU2VuZE1haWxlcihNYWlsZXIpOgorICAgICIiIlNlbmQgZW1haWxzIHVzaW5nICdzZW5kbWFpbCAtdCcuIiIiCisKKyAgICBTRU5ETUFJTF9DQU5ESURBVEVTID0gWworICAgICAgICAnL3Vzci9zYmluL3NlbmRtYWlsJywKKyAgICAgICAgJy91c3IvbGliL3NlbmRtYWlsJywKKyAgICAgICAgXQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBmaW5kX3NlbmRtYWlsKCk6CisgICAgICAgIGZvciBwYXRoIGluIFNlbmRNYWlsZXIuU0VORE1BSUxfQ0FORElEQVRFUzoKKyAgICAgICAgICAgIGlmIG9zLmFjY2VzcyhwYXRoLCBvcy5YX09LKToKKyAgICAgICAgICAgICAgICByZXR1cm4gcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnTm8gc2VuZG1haWwgZXhlY3V0YWJsZSBmb3VuZC4gICcKKyAgICAgICAgICAgICAgICAnVHJ5IHNldHRpbmcgbXVsdGltYWlsaG9vay5zZW5kbWFpbENvbW1hbmQuJworICAgICAgICAgICAgICAgICkKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb21tYW5kPU5vbmUsIGVudmVsb3Blc2VuZGVyPU5vbmUpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYSBTZW5kTWFpbGVyIGluc3RhbmNlLgorCisgICAgICAgIGNvbW1hbmQgc2hvdWxkIGJlIHRoZSBjb21tYW5kIGFuZCBhcmd1bWVudHMgdXNlZCB0byBpbnZva2UKKyAgICAgICAgc2VuZG1haWwsIGFzIGEgbGlzdCBvZiBzdHJpbmdzLiAgSWYgYW4gZW52ZWxvcGVzZW5kZXIgaXMKKyAgICAgICAgcHJvdmlkZWQsIGl0IHdpbGwgYWxzbyBiZSBwYXNzZWQgdG8gdGhlIGNvbW1hbmQsIHZpYSAnLWYKKyAgICAgICAgZW52ZWxvcGVzZW5kZXInLiIiIgorCisgICAgICAgIGlmIGNvbW1hbmQ6CisgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBjb21tYW5kWzpdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmNvbW1hbmQgPSBbc2VsZi5maW5kX3NlbmRtYWlsKCksICctdCddCisKKyAgICAgICAgaWYgZW52ZWxvcGVzZW5kZXI6CisgICAgICAgICAgICBzZWxmLmNvbW1hbmQuZXh0ZW5kKFsnLWYnLCBlbnZlbG9wZXNlbmRlcl0pCisKKyAgICBkZWYgc2VuZChzZWxmLCBsaW5lcywgdG9fYWRkcnMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihzZWxmLmNvbW1hbmQsIHN0ZGluPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICcqKiogQ2Fubm90IGV4ZWN1dGUgY29tbWFuZDogJXNcbicgJSAnICcuam9pbihzZWxmLmNvbW1hbmQpCisgICAgICAgICAgICAgICAgKyAnKioqICVzXG4nICUgc3RyKGUpCisgICAgICAgICAgICAgICAgKyAnKioqIFRyeSBzZXR0aW5nIG11bHRpbWFpbGhvb2subWFpbGVyIHRvICJzbXRwIlxuJworICAgICAgICAgICAgICAgICcqKiogdG8gc2VuZCBlbWFpbHMgd2l0aG91dCB1c2luZyB0aGUgc2VuZG1haWwgY29tbWFuZC5cbicKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBwLnN0ZGluLndyaXRlbGluZXMobGluZXMpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICAgICAgICAgJyoqKiBFcnJvciB3aGlsZSBnZW5lcmF0aW5nIGNvbW1pdCBlbWFpbFxuJworICAgICAgICAgICAgICAgICcqKiogIC0gbWFpbCBzZW5kaW5nIGFib3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgcC50ZXJtaW5hdGUoKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHAuc3RkaW4uY2xvc2UoKQorICAgICAgICAgICAgcmV0Y29kZSA9IHAud2FpdCgpCisgICAgICAgICAgICBpZiByZXRjb2RlOgorICAgICAgICAgICAgICAgIHJhaXNlIENvbW1hbmRFcnJvcihzZWxmLmNvbW1hbmQsIHJldGNvZGUpCisKKworY2xhc3MgU01UUE1haWxlcihNYWlsZXIpOgorICAgICIiIlNlbmQgZW1haWxzIHVzaW5nIFB5dGhvbidzIHNtdHBsaWIuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZW52ZWxvcGVzZW5kZXIsIHNtdHBzZXJ2ZXIpOgorICAgICAgICBpZiBub3QgZW52ZWxvcGVzZW5kZXI6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICdmYXRhbDogZ2l0X211bHRpbWFpbDogY2Fubm90IHVzZSBTTVRQTWFpbGVyIHdpdGhvdXQgYSBzZW5kZXIgYWRkcmVzcy5cbicKKyAgICAgICAgICAgICAgICAncGxlYXNlIHNldCBlaXRoZXIgbXVsdGltYWlsaG9vay5lbnZlbG9wZVNlbmRlciBvciB1c2VyLmVtYWlsXG4nCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgc2VsZi5lbnZlbG9wZXNlbmRlciA9IGVudmVsb3Blc2VuZGVyCisgICAgICAgIHNlbGYuc210cHNlcnZlciA9IHNtdHBzZXJ2ZXIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5zbXRwID0gc210cGxpYi5TTVRQKHNlbGYuc210cHNlcnZlcikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyoqKiBFcnJvciBlc3RhYmxpc2hpbmcgU01UUCBjb25uZWN0aW9uIHRvICVzKioqXG4nICUgc2VsZi5zbXRwc2VydmVyKQorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnKioqICVzXG4nICUgc3RyKGUpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLnNtdHAucXVpdCgpCisKKyAgICBkZWYgc2VuZChzZWxmLCBsaW5lcywgdG9fYWRkcnMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBtc2cgPSAnJy5qb2luKGxpbmVzKQorICAgICAgICAgICAgIyB0dXJuIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGludG8gUHl0aG9uIGxpc3QgaWYgbmVlZGVkLgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh0b19hZGRycywgYmFzZXN0cmluZyk6CisgICAgICAgICAgICAgICAgdG9fYWRkcnMgPSBbZW1haWwgZm9yIChuYW1lLCBlbWFpbCkgaW4gZ2V0YWRkcmVzc2VzKFt0b19hZGRyc10pXQorICAgICAgICAgICAgc2VsZi5zbXRwLnNlbmRtYWlsKHNlbGYuZW52ZWxvcGVzZW5kZXIsIHRvX2FkZHJzLCBtc2cpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCcqKiogRXJyb3Igc2VuZGluZyBlbWFpbCoqKlxuJykKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyoqKiAlc1xuJyAlIHN0cihlKSkKKyAgICAgICAgICAgIHNlbGYuc210cC5xdWl0KCkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKworY2xhc3MgT3V0cHV0TWFpbGVyKE1haWxlcik6CisgICAgIiIiV3JpdGUgZW1haWxzIHRvIGFuIG91dHB1dCBzdHJlYW0sIGJyYWNrZXRlZCBieSBsaW5lcyBvZiAnPScgY2hhcmFjdGVycy4KKworICAgIFRoaXMgaXMgaW50ZW5kZWQgZm9yIGRlYnVnZ2luZyBwdXJwb3Nlcy4iIiIKKworICAgIFNFUEFSQVRPUiA9ICc9JyAqIDc1ICsgJ1xuJworCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGYpOgorICAgICAgICBzZWxmLmYgPSBmCisKKyAgICBkZWYgc2VuZChzZWxmLCBsaW5lcywgdG9fYWRkcnMpOgorICAgICAgICBzZWxmLmYud3JpdGUoc2VsZi5TRVBBUkFUT1IpCisgICAgICAgIHNlbGYuZi53cml0ZWxpbmVzKGxpbmVzKQorICAgICAgICBzZWxmLmYud3JpdGUoc2VsZi5TRVBBUkFUT1IpCisKKworZGVmIGdldF9naXRfZGlyKCk6CisgICAgIiIiRGV0ZXJtaW5lIEdJVF9ESVIuCisKKyAgICBEZXRlcm1pbmUgR0lUX0RJUiBlaXRoZXIgZnJvbSB0aGUgR0lUX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZSBvcgorICAgIGZyb20gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB1c2luZyBHaXQncyB1c3VhbCBydWxlcy4iIiIKKworICAgIHRyeToKKyAgICAgICAgcmV0dXJuIHJlYWRfZ2l0X291dHB1dChbJ3Jldi1wYXJzZScsICctLWdpdC1kaXInXSkKKyAgICBleGNlcHQgQ29tbWFuZEVycm9yOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdmYXRhbDogZ2l0X211bHRpbWFpbDogbm90IGluIGEgZ2l0IGRpcmVjdG9yeVxuJykKKyAgICAgICAgc3lzLmV4aXQoMSkKKworCitjbGFzcyBFbnZpcm9ubWVudChvYmplY3QpOgorICAgICIiIkRlc2NyaWJlcyB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIHB1c2ggaXMgb2NjdXJyaW5nLgorCisgICAgQW4gRW52aXJvbm1lbnQgb2JqZWN0IGVuY2Fwc3VsYXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYWwKKyAgICBlbnZpcm9ubWVudC4gIEZvciBleGFtcGxlLCBpdCBrbm93cyBob3cgdG8gZGV0ZXJtaW5lOgorCisgICAgKiB0aGUgbmFtZSBvZiB0aGUgcmVwb3NpdG9yeSB0byB3aGljaCB0aGUgcHVzaCBvY2N1cnJlZAorCisgICAgKiB3aGF0IHVzZXIgZGlkIHRoZSBwdXNoCisKKyAgICAqIHdoYXQgdXNlcnMgd2FudCB0byBiZSBpbmZvcm1lZCBhYm91dCB2YXJpb3VzIHR5cGVzIG9mIGNoYW5nZXMuCisKKyAgICBBbiBFbnZpcm9ubWVudCBvYmplY3QgaXMgZXhwZWN0ZWQgdG8gaGF2ZSB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisKKyAgICAgICAgZ2V0X3JlcG9fc2hvcnRuYW1lKCkKKworICAgICAgICAgICAgUmV0dXJuIGEgc2hvcnQgbmFtZSBmb3IgdGhlIHJlcG9zaXRvcnksIGZvciBkaXNwbGF5CisgICAgICAgICAgICBwdXJwb3Nlcy4KKworICAgICAgICBnZXRfcmVwb19wYXRoKCkKKworICAgICAgICAgICAgUmV0dXJuIHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBHaXQgcmVwb3NpdG9yeS4KKworICAgICAgICBnZXRfZW1haWxwcmVmaXgoKQorCisgICAgICAgICAgICBSZXR1cm4gYSBzdHJpbmcgdGhhdCB3aWxsIGJlIHByZWZpeGVkIHRvIGV2ZXJ5IGVtYWlsJ3MKKyAgICAgICAgICAgIHN1YmplY3QuCisKKyAgICAgICAgZ2V0X3B1c2hlcigpCisKKyAgICAgICAgICAgIFJldHVybiB0aGUgdXNlcm5hbWUgb2YgdGhlIHBlcnNvbiB3aG8gcHVzaGVkIHRoZSBjaGFuZ2VzLgorICAgICAgICAgICAgVGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBlbWFpbCBib2R5IHRvIGluZGljYXRlIHdobworICAgICAgICAgICAgcHVzaGVkIHRoZSBjaGFuZ2UuCisKKyAgICAgICAgZ2V0X3B1c2hlcl9lbWFpbCgpIChtYXkgcmV0dXJuIE5vbmUpCisKKyAgICAgICAgICAgIFJldHVybiB0aGUgZW1haWwgYWRkcmVzcyBvZiB0aGUgcGVyc29uIHdobyBwdXNoZWQgdGhlCisgICAgICAgICAgICBjaGFuZ2VzLiAgVGhlIHZhbHVlIHNob3VsZCBiZSBhIHNpbmdsZSBSRkMgMjgyMiBlbWFpbAorICAgICAgICAgICAgYWRkcmVzcyBhcyBhIHN0cmluZzsgZS5nLiwgIkpvZSBVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiIKKyAgICAgICAgICAgIGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlICJ1c2VyQGV4YW1wbGUuY29tIi4gIElmIHNldCwgdGhlCisgICAgICAgICAgICB2YWx1ZSBpcyB1c2VkIGFzIHRoZSBSZXBseS1UbyBhZGRyZXNzIGZvciByZWZjaGFuZ2UKKyAgICAgICAgICAgIGVtYWlscy4gIElmIGl0IGlzIGltcG9zc2libGUgdG8gZGV0ZXJtaW5lIHRoZSBwdXNoZXIncworICAgICAgICAgICAgZW1haWwsIHRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSBzZXQgdG8gTm9uZSAoaW4gd2hpY2ggY2FzZQorICAgICAgICAgICAgbm8gUmVwbHktVG8gaGVhZGVyIHdpbGwgYmUgb3V0cHV0KS4KKworICAgICAgICBnZXRfc2VuZGVyKCkKKworICAgICAgICAgICAgUmV0dXJuIHRoZSBhZGRyZXNzIHRvIGJlIHVzZWQgYXMgdGhlICdGcm9tJyBlbWFpbCBhZGRyZXNzCisgICAgICAgICAgICBpbiB0aGUgZW1haWwgZW52ZWxvcGUuCisKKyAgICAgICAgZ2V0X2Zyb21hZGRyKCkKKworICAgICAgICAgICAgUmV0dXJuIHRoZSAnRnJvbScgZW1haWwgYWRkcmVzcyB1c2VkIGluIHRoZSBlbWFpbCAnRnJvbTonCisgICAgICAgICAgICBoZWFkZXJzLiAgKE1heSBiZSBhIGZ1bGwgUkZDIDI4MjIgZW1haWwgYWRkcmVzcyBsaWtlICdKb2UKKyAgICAgICAgICAgIFVzZXIgPHVzZXJAZXhhbXBsZS5jb20+Jy4pCisKKyAgICAgICAgZ2V0X2FkbWluaXN0cmF0b3IoKQorCisgICAgICAgICAgICBSZXR1cm4gdGhlIG5hbWUgYW5kL29yIGVtYWlsIG9mIHRoZSByZXBvc2l0b3J5CisgICAgICAgICAgICBhZG1pbmlzdHJhdG9yLiAgVGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBmb290ZXIgYXMgdGhlCisgICAgICAgICAgICBwZXJzb24gdG8gd2hvbSByZXF1ZXN0cyB0byBiZSByZW1vdmVkIGZyb20gdGhlCisgICAgICAgICAgICBub3RpZmljYXRpb24gbGlzdCBzaG91bGQgYmUgc2VudC4gIElkZWFsbHksIGl0IHNob3VsZAorICAgICAgICAgICAgaW5jbHVkZSBhIHZhbGlkIGVtYWlsIGFkZHJlc3MuCisKKyAgICAgICAgZ2V0X3JlcGx5X3RvX3JlZmNoYW5nZSgpCisgICAgICAgIGdldF9yZXBseV90b19jb21taXQoKQorCisgICAgICAgICAgICBSZXR1cm4gdGhlIGFkZHJlc3MgdG8gdXNlIGluIHRoZSBlbWFpbCAiUmVwbHktVG8iIGhlYWRlciwKKyAgICAgICAgICAgIGFzIGEgc3RyaW5nLiAgVGhlc2UgY2FuIGJlIGFuIFJGQyAyODIyIGVtYWlsIGFkZHJlc3MsIG9yCisgICAgICAgICAgICBOb25lIHRvIG9taXQgdGhlICJSZXBseS1UbyIgaGVhZGVyLgorICAgICAgICAgICAgZ2V0X3JlcGx5X3RvX3JlZmNoYW5nZSgpIGlzIHVzZWQgZm9yIHJlZmNoYW5nZSBlbWFpbHM7CisgICAgICAgICAgICBnZXRfcmVwbHlfdG9fY29tbWl0KCkgaXMgdXNlZCBmb3IgaW5kaXZpZHVhbCBjb21taXQKKyAgICAgICAgICAgIGVtYWlscy4KKworICAgIFRoZXkgc2hvdWxkIGFsc28gZGVmaW5lIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKworICAgICAgICBhbm5vdW5jZV9zaG93X3Nob3J0bG9nIChib29sKQorCisgICAgICAgICAgICBUcnVlIGlmZiBhbm5vdW5jZSBlbWFpbHMgc2hvdWxkIGluY2x1ZGUgYSBzaG9ydGxvZy4KKworICAgICAgICByZWZjaGFuZ2Vfc2hvd2xvZyAoYm9vbCkKKworICAgICAgICAgICAgVHJ1ZSBpZmYgcmVmY2hhbmdlcyBlbWFpbHMgc2hvdWxkIGluY2x1ZGUgYSBkZXRhaWxlZCBsb2cuCisKKyAgICAgICAgZGlmZm9wdHMgKGxpc3Qgb2Ygc3RyaW5ncykKKworICAgICAgICAgICAgVGhlIG9wdGlvbnMgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHRvICdnaXQgZGlmZicgZm9yIHRoZQorICAgICAgICAgICAgc3VtbWFyeSBlbWFpbC4gIFRoZSB2YWx1ZSBzaG91bGQgYmUgYSBsaXN0IG9mIHN0cmluZ3MKKyAgICAgICAgICAgIHJlcHJlc2VudGluZyB3b3JkcyB0byBiZSBwYXNzZWQgdG8gdGhlIGNvbW1hbmQuCisKKyAgICAgICAgbG9nb3B0cyAobGlzdCBvZiBzdHJpbmdzKQorCisgICAgICAgICAgICBBbmFsb2dvdXMgdG8gZGlmZm9wdHMsIGJ1dCBjb250YWlucyBvcHRpb25zIHBhc3NlZCB0bworICAgICAgICAgICAgJ2dpdCBsb2cnIHdoZW4gZ2VuZXJhdGluZyB0aGUgZGV0YWlsZWQgbG9nIGZvciBhIHNldCBvZgorICAgICAgICAgICAgY29tbWl0cyAoc2VlIHJlZmNoYW5nZV9zaG93bG9nKQorCisgICAgIiIiCisKKyAgICBSRVBPX05BTUVfUkUgPSByZS5jb21waWxlKHInXig/UDxuYW1lPi4rPykoPzpcLmdpdCkkJykKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvc2Vudj1Ob25lKToKKyAgICAgICAgc2VsZi5vc2VudiA9IG9zZW52IG9yIG9zLmVudmlyb24KKyAgICAgICAgc2VsZi5hbm5vdW5jZV9zaG93X3Nob3J0bG9nID0gRmFsc2UKKyAgICAgICAgc2VsZi5tYXhjb21taXRlbWFpbHMgPSA1MDAKKyAgICAgICAgc2VsZi5kaWZmb3B0cyA9IFsnLS1zdGF0JywgJy0tc3VtbWFyeScsICctLWZpbmQtY29waWVzLWhhcmRlciddCisgICAgICAgIHNlbGYubG9nb3B0cyA9IFtdCisgICAgICAgIHNlbGYucmVmY2hhbmdlX3Nob3dsb2cgPSBGYWxzZQorCisgICAgICAgIHNlbGYuQ09NUFVURURfS0VZUyA9IFsKKyAgICAgICAgICAgICdhZG1pbmlzdHJhdG9yJywKKyAgICAgICAgICAgICdjaGFyc2V0JywKKyAgICAgICAgICAgICdlbWFpbHByZWZpeCcsCisgICAgICAgICAgICAnZnJvbWFkZHInLAorICAgICAgICAgICAgJ3B1c2hlcicsCisgICAgICAgICAgICAncHVzaGVyX2VtYWlsJywKKyAgICAgICAgICAgICdyZXBvX3BhdGgnLAorICAgICAgICAgICAgJ3JlcG9fc2hvcnRuYW1lJywKKyAgICAgICAgICAgICdzZW5kZXInLAorICAgICAgICAgICAgXQorCisgICAgICAgIHNlbGYuX3ZhbHVlcyA9IE5vbmUKKworICAgIGRlZiBnZXRfcmVwb19zaG9ydG5hbWUoc2VsZik6CisgICAgICAgICIiIlVzZSB0aGUgbGFzdCBwYXJ0IG9mIHRoZSByZXBvIHBhdGgsIHdpdGggIi5naXQiIHN0cmlwcGVkIG9mZiBpZiBwcmVzZW50LiIiIgorCisgICAgICAgIGJhc2VuYW1lID0gb3MucGF0aC5iYXNlbmFtZShvcy5wYXRoLmFic3BhdGgoc2VsZi5nZXRfcmVwb19wYXRoKCkpKQorICAgICAgICBtID0gc2VsZi5SRVBPX05BTUVfUkUubWF0Y2goYmFzZW5hbWUpCisgICAgICAgIGlmIG06CisgICAgICAgICAgICByZXR1cm4gbS5ncm91cCgnbmFtZScpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gYmFzZW5hbWUKKworICAgIGRlZiBnZXRfcHVzaGVyKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIGRlZiBnZXRfcHVzaGVyX2VtYWlsKHNlbGYpOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9hZG1pbmlzdHJhdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4gJ3RoZSBhZG1pbmlzdHJhdG9yIG9mIHRoaXMgcmVwb3NpdG9yeScKKworICAgIGRlZiBnZXRfZW1haWxwcmVmaXgoc2VsZik6CisgICAgICAgIHJldHVybiAnJworCisgICAgZGVmIGdldF9yZXBvX3BhdGgoc2VsZik6CisgICAgICAgIGlmIHJlYWRfZ2l0X291dHB1dChbJ3Jldi1wYXJzZScsICctLWlzLWJhcmUtcmVwb3NpdG9yeSddKSA9PSAndHJ1ZSc6CisgICAgICAgICAgICBwYXRoID0gZ2V0X2dpdF9kaXIoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF0aCA9IHJlYWRfZ2l0X291dHB1dChbJ3Jldi1wYXJzZScsICctLXNob3ctdG9wbGV2ZWwnXSkKKyAgICAgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChwYXRoKQorCisgICAgZGVmIGdldF9jaGFyc2V0KHNlbGYpOgorICAgICAgICByZXR1cm4gQ0hBUlNFVAorCisgICAgZGVmIGdldF92YWx1ZXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiBhIGRpY3Rpb25hcnkge2tleXdvcmQgOiBleHBhbnNpb259IGZvciB0aGlzIEVudmlyb25tZW50LgorCisgICAgICAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSBDaGFuZ2UuX2NvbXB1dGVfdmFsdWVzKCkuICBUaGUga2V5cworICAgICAgICBpbiB0aGUgcmV0dXJuZWQgZGljdGlvbmFyeSBhcmUgYXZhaWxhYmxlIHRvIGJlIHVzZWQgaW4gYW55IG9mCisgICAgICAgIHRoZSB0ZW1wbGF0ZXMuICBUaGUgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcKKyAgICAgICAgc2VsZi5nZXRfTkFNRSgpIGZvciBlYWNoIG9mIHRoZSBhdHRyaWJ1dGVzIG5hbWVkIGluCisgICAgICAgIENPTVBVVEVEX0tFWVMgYW5kIHJlY29yZGluZyB0aG9zZSB0aGF0IGRvIG5vdCByZXR1cm4gTm9uZS4KKyAgICAgICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhbHdheXMgYSBuZXcgZGljdGlvbmFyeS4iIiIKKworICAgICAgICBpZiBzZWxmLl92YWx1ZXMgaXMgTm9uZToKKyAgICAgICAgICAgIHZhbHVlcyA9IHt9CisKKyAgICAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5DT01QVVRFRF9LRVlTOgorICAgICAgICAgICAgICAgIHZhbHVlID0gZ2V0YXR0cihzZWxmLCAnZ2V0XyVzJyAlIChrZXksKSkoKQorICAgICAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZXNba2V5XSA9IHZhbHVlCisKKyAgICAgICAgICAgIHNlbGYuX3ZhbHVlcyA9IHZhbHVlcworCisgICAgICAgIHJldHVybiBzZWxmLl92YWx1ZXMuY29weSgpCisKKyAgICBkZWYgZ2V0X3JlZmNoYW5nZV9yZWNpcGllbnRzKHNlbGYsIHJlZmNoYW5nZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgcmVjaXBpZW50cyBmb3Igbm90aWZpY2F0aW9ucyBhYm91dCByZWZjaGFuZ2UuCisKKyAgICAgICAgUmV0dXJuIHRoZSBsaXN0IG9mIGVtYWlsIGFkZHJlc3NlcyB0byB3aGljaCBub3RpZmljYXRpb25zCisgICAgICAgIGFib3V0IHRoZSBzcGVjaWZpZWQgUmVmZXJlbmNlQ2hhbmdlIHNob3VsZCBiZSBzZW50LiIiIgorCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoKQorCisgICAgZGVmIGdldF9hbm5vdW5jZV9yZWNpcGllbnRzKHNlbGYsIGFubm90YXRlZF90YWdfY2hhbmdlKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByZWNpcGllbnRzIGZvciBub3RpZmljYXRpb25zIGFib3V0IGFubm90YXRlZF90YWdfY2hhbmdlLgorCisgICAgICAgIFJldHVybiB0aGUgbGlzdCBvZiBlbWFpbCBhZGRyZXNzZXMgdG8gd2hpY2ggbm90aWZpY2F0aW9ucworICAgICAgICBhYm91dCB0aGUgc3BlY2lmaWVkIEFubm90YXRlZFRhZ0NoYW5nZSBzaG91bGQgYmUgc2VudC4iIiIKKworICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKCkKKworICAgIGRlZiBnZXRfcmVwbHlfdG9fcmVmY2hhbmdlKHNlbGYsIHJlZmNoYW5nZSk6CisgICAgICAgIHJldHVybiBzZWxmLmdldF9wdXNoZXJfZW1haWwoKQorCisgICAgZGVmIGdldF9yZXZpc2lvbl9yZWNpcGllbnRzKHNlbGYsIHJldmlzaW9uKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByZWNpcGllbnRzIGZvciBtZXNzYWdlcyBhYm91dCByZXZpc2lvbi4KKworICAgICAgICBSZXR1cm4gdGhlIGxpc3Qgb2YgZW1haWwgYWRkcmVzc2VzIHRvIHdoaWNoIG5vdGlmaWNhdGlvbnMKKyAgICAgICAgYWJvdXQgdGhlIHNwZWNpZmllZCBSZXZpc2lvbiBzaG91bGQgYmUgc2VudC4gIFRoaXMgbWV0aG9kCisgICAgICAgIGNvdWxkIGJlIG92ZXJyaWRkZW4sIGZvciBleGFtcGxlLCB0byB0YWtlIGludG8gYWNjb3VudCB0aGUKKyAgICAgICAgY29udGVudHMgb2YgdGhlIHJldmlzaW9uIHdoZW4gZGVjaWRpbmcgd2hvbSB0byBub3RpZnkgYWJvdXQKKyAgICAgICAgaXQuICBGb3IgZXhhbXBsZSwgdGhlcmUgY291bGQgYmUgYSBzY2hlbWUgZm9yIHVzZXJzIHRvIGV4cHJlc3MKKyAgICAgICAgaW50ZXJlc3QgaW4gcGFydGljdWxhciBmaWxlcyBvciBzdWJkaXJlY3RvcmllcywgYW5kIG9ubHkKKyAgICAgICAgcmVjZWl2ZSBub3RpZmljYXRpb24gZW1haWxzIGZvciByZXZpc2lvbnMgdGhhdCBhZmZlY3RpbmcgdGhvc2UKKyAgICAgICAgZmlsZXMuIiIiCisKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcigpCisKKyAgICBkZWYgZ2V0X3JlcGx5X3RvX2NvbW1pdChzZWxmLCByZXZpc2lvbik6CisgICAgICAgIHJldHVybiByZXZpc2lvbi5hdXRob3IKKworICAgIGRlZiBmaWx0ZXJfYm9keShzZWxmLCBsaW5lcyk6CisgICAgICAgICIiIkZpbHRlciB0aGUgbGluZXMgaW50ZW5kZWQgZm9yIGFuIGVtYWlsIGJvZHkuCisKKyAgICAgICAgbGluZXMgaXMgYW4gaXRlcmFibGUgb3ZlciB0aGUgbGluZXMgdGhhdCB3b3VsZCBnbyBpbnRvIHRoZQorICAgICAgICBlbWFpbCBib2R5LiAgRmlsdGVyIGl0IChlLmcuLCBsaW1pdCB0aGUgbnVtYmVyIG9mIGxpbmVzLCB0aGUKKyAgICAgICAgbGluZSBsZW5ndGgsIGNoYXJhY3RlciBzZXQsIGV0Yy4pLCByZXR1cm5pbmcgYW5vdGhlciBpdGVyYWJsZS4KKyAgICAgICAgU2VlIEZpbHRlckxpbmVzRW52aXJvbm1lbnRNaXhpbiBhbmQgTWF4bGluZXNFbnZpcm9ubWVudE1peGluCisgICAgICAgIGZvciBjbGFzc2VzIGltcGxlbWVudGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuIiIiCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKworY2xhc3MgQ29uZmlnRW52aXJvbm1lbnRNaXhpbihFbnZpcm9ubWVudCk6CisgICAgIiIiQSBtaXhpbiB0aGF0IHNldHMgc2VsZi5jb25maWcgdG8gaXRzIGNvbnN0cnVjdG9yJ3MgY29uZmlnIGFyZ3VtZW50LgorCisgICAgVGhpcyBjbGFzcydzIGNvbnN0cnVjdG9yIGNvbnN1bWVzIHRoZSAiY29uZmlnIiBhcmd1bWVudC4KKworICAgIE1peGlucyB0aGF0IG5lZWQgdG8gaW5zcGVjdCB0aGUgY29uZmlnIHNob3VsZCBpbmhlcml0IGZyb20gdGhpcworICAgIGNsYXNzICgxKSB0byBtYWtlIHN1cmUgdGhhdCAiY29uZmlnIiBpcyBzdGlsbCBpbiB0aGUgY29uc3RydWN0b3IKKyAgICBhcmd1bWVudHMgd2l0aCBpdHMgb3duIGNvbnN0cnVjdG9yIHJ1bnMgYW5kL29yICgyKSB0byBiZSBzdXJlIHRoYXQKKyAgICBzZWxmLmNvbmZpZyBpcyBzZXQgYWZ0ZXIgY29uc3RydWN0aW9uLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZywgKiprdyk6CisgICAgICAgIHN1cGVyKENvbmZpZ0Vudmlyb25tZW50TWl4aW4sIHNlbGYpLl9faW5pdF9fKCoqa3cpCisgICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCisKKworY2xhc3MgQ29uZmlnT3B0aW9uc0Vudmlyb25tZW50TWl4aW4oQ29uZmlnRW52aXJvbm1lbnRNaXhpbik6CisgICAgIiIiQW4gRW52aXJvbm1lbnQgdGhhdCByZWFkcyBtb3N0IG9mIGl0cyBpbmZvcm1hdGlvbiBmcm9tICJnaXQgY29uZmlnIi4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcsICoqa3cpOgorICAgICAgICBzdXBlcihDb25maWdPcHRpb25zRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBjb25maWc9Y29uZmlnLCAqKmt3CisgICAgICAgICAgICApCisKKyAgICAgICAgc2VsZi5hbm5vdW5jZV9zaG93X3Nob3J0bG9nID0gY29uZmlnLmdldF9ib29sKAorICAgICAgICAgICAgJ2Fubm91bmNlc2hvcnRsb2cnLCBkZWZhdWx0PXNlbGYuYW5ub3VuY2Vfc2hvd19zaG9ydGxvZworICAgICAgICAgICAgKQorCisgICAgICAgIHNlbGYucmVmY2hhbmdlX3Nob3dsb2cgPSBjb25maWcuZ2V0X2Jvb2woCisgICAgICAgICAgICAncmVmY2hhbmdlc2hvd2xvZycsIGRlZmF1bHQ9c2VsZi5yZWZjaGFuZ2Vfc2hvd2xvZworICAgICAgICAgICAgKQorCisgICAgICAgIG1heGNvbW1pdGVtYWlscyA9IGNvbmZpZy5nZXQoJ21heGNvbW1pdGVtYWlscycpCisgICAgICAgIGlmIG1heGNvbW1pdGVtYWlscyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLm1heGNvbW1pdGVtYWlscyA9IGludChtYXhjb21taXRlbWFpbHMpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICAgICAnKioqIE1hbGZvcm1lZCB2YWx1ZSBmb3IgbXVsdGltYWlsaG9vay5tYXhDb21taXRFbWFpbHM6ICVzXG4nICUgbWF4Y29tbWl0ZW1haWxzCisgICAgICAgICAgICAgICAgICAgICsgJyoqKiBFeHBlY3RlZCBhIG51bWJlci4gIElnbm9yaW5nLlxuJworICAgICAgICAgICAgICAgICAgICApCisKKyAgICAgICAgZGlmZm9wdHMgPSBjb25maWcuZ2V0KCdkaWZmb3B0cycpCisgICAgICAgIGlmIGRpZmZvcHRzIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5kaWZmb3B0cyA9IHNobGV4LnNwbGl0KGRpZmZvcHRzKQorCisgICAgICAgIGxvZ29wdHMgPSBjb25maWcuZ2V0KCdsb2dvcHRzJykKKyAgICAgICAgaWYgbG9nb3B0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYubG9nb3B0cyA9IHNobGV4LnNwbGl0KGxvZ29wdHMpCisKKyAgICAgICAgcmVwbHlfdG8gPSBjb25maWcuZ2V0KCdyZXBseVRvJykKKyAgICAgICAgc2VsZi5fX3JlcGx5X3RvX3JlZmNoYW5nZSA9IGNvbmZpZy5nZXQoJ3JlcGx5VG9SZWZjaGFuZ2UnLCBkZWZhdWx0PXJlcGx5X3RvKQorICAgICAgICBpZiAoCisgICAgICAgICAgICBzZWxmLl9fcmVwbHlfdG9fcmVmY2hhbmdlIGlzIG5vdCBOb25lCisgICAgICAgICAgICBhbmQgc2VsZi5fX3JlcGx5X3RvX3JlZmNoYW5nZS5sb3dlcigpID09ICdhdXRob3InCisgICAgICAgICAgICApOgorICAgICAgICAgICAgcmFpc2UgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnImF1dGhvciIgaXMgbm90IGFuIGFsbG93ZWQgc2V0dGluZyBmb3IgcmVwbHlUb1JlZmNoYW5nZScKKyAgICAgICAgICAgICAgICApCisgICAgICAgIHNlbGYuX19yZXBseV90b19jb21taXQgPSBjb25maWcuZ2V0KCdyZXBseVRvQ29tbWl0JywgZGVmYXVsdD1yZXBseV90bykKKworICAgIGRlZiBnZXRfYWRtaW5pc3RyYXRvcihzZWxmKToKKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYuY29uZmlnLmdldCgnYWRtaW5pc3RyYXRvcicpCisgICAgICAgICAgICBvciBzZWxmLmdldF9zZW5kZXIoKQorICAgICAgICAgICAgb3Igc3VwZXIoQ29uZmlnT3B0aW9uc0Vudmlyb25tZW50TWl4aW4sIHNlbGYpLmdldF9hZG1pbmlzdHJhdG9yKCkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfcmVwb19zaG9ydG5hbWUoc2VsZik6CisgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICBzZWxmLmNvbmZpZy5nZXQoJ3JlcG9uYW1lJykKKyAgICAgICAgICAgIG9yIHN1cGVyKENvbmZpZ09wdGlvbnNFbnZpcm9ubWVudE1peGluLCBzZWxmKS5nZXRfcmVwb19zaG9ydG5hbWUoKQorICAgICAgICAgICAgKQorCisgICAgZGVmIGdldF9lbWFpbHByZWZpeChzZWxmKToKKyAgICAgICAgZW1haWxwcmVmaXggPSBzZWxmLmNvbmZpZy5nZXQoJ2VtYWlscHJlZml4JykKKyAgICAgICAgaWYgZW1haWxwcmVmaXggYW5kIGVtYWlscHJlZml4LnN0cmlwKCk6CisgICAgICAgICAgICByZXR1cm4gZW1haWxwcmVmaXguc3RyaXAoKSArICcgJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICdbJXNdICcgJSAoc2VsZi5nZXRfcmVwb19zaG9ydG5hbWUoKSwpCisKKyAgICBkZWYgZ2V0X3NlbmRlcihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuY29uZmlnLmdldCgnZW52ZWxvcGVzZW5kZXInKQorCisgICAgZGVmIGdldF9mcm9tYWRkcihzZWxmKToKKyAgICAgICAgZnJvbWFkZHIgPSBzZWxmLmNvbmZpZy5nZXQoJ2Zyb20nKQorICAgICAgICBpZiBmcm9tYWRkcjoKKyAgICAgICAgICAgIHJldHVybiBmcm9tYWRkcgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZmlnID0gQ29uZmlnKCd1c2VyJykKKyAgICAgICAgICAgIGZyb21uYW1lID0gY29uZmlnLmdldCgnbmFtZScsIGRlZmF1bHQ9JycpCisgICAgICAgICAgICBmcm9tZW1haWwgPSBjb25maWcuZ2V0KCdlbWFpbCcsIGRlZmF1bHQ9JycpCisgICAgICAgICAgICBpZiBmcm9tZW1haWw6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdGFkZHIoW2Zyb21uYW1lLCBmcm9tZW1haWxdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfc2VuZGVyKCkKKworICAgIGRlZiBnZXRfcmVwbHlfdG9fcmVmY2hhbmdlKHNlbGYsIHJlZmNoYW5nZSk6CisgICAgICAgIGlmIHNlbGYuX19yZXBseV90b19yZWZjaGFuZ2UgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihDb25maWdPcHRpb25zRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuZ2V0X3JlcGx5X3RvX3JlZmNoYW5nZShyZWZjaGFuZ2UpCisgICAgICAgIGVsaWYgc2VsZi5fX3JlcGx5X3RvX3JlZmNoYW5nZS5sb3dlcigpID09ICdwdXNoZXInOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuZ2V0X3B1c2hlcl9lbWFpbCgpCisgICAgICAgIGVsaWYgc2VsZi5fX3JlcGx5X3RvX3JlZmNoYW5nZS5sb3dlcigpID09ICdub25lJzoKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fX3JlcGx5X3RvX3JlZmNoYW5nZQorCisgICAgZGVmIGdldF9yZXBseV90b19jb21taXQoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICBpZiBzZWxmLl9fcmVwbHlfdG9fY29tbWl0IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIoQ29uZmlnT3B0aW9uc0Vudmlyb25tZW50TWl4aW4sIHNlbGYpLmdldF9yZXBseV90b19jb21taXQocmV2aXNpb24pCisgICAgICAgIGVsaWYgc2VsZi5fX3JlcGx5X3RvX2NvbW1pdC5sb3dlcigpID09ICdhdXRob3InOgorICAgICAgICAgICAgcmV0dXJuIHJldmlzaW9uLmdldF9hdXRob3IoKQorICAgICAgICBlbGlmIHNlbGYuX19yZXBseV90b19jb21taXQubG93ZXIoKSA9PSAncHVzaGVyJzoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9wdXNoZXJfZW1haWwoKQorICAgICAgICBlbGlmIHNlbGYuX19yZXBseV90b19jb21taXQubG93ZXIoKSA9PSAnbm9uZSc6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX19yZXBseV90b19jb21taXQKKworCitjbGFzcyBGaWx0ZXJMaW5lc0Vudmlyb25tZW50TWl4aW4oRW52aXJvbm1lbnQpOgorICAgICIiIkhhbmRsZSBlbmNvZGluZyBhbmQgbWF4aW11bSBsaW5lIGxlbmd0aCBvZiBib2R5IGxpbmVzLgorCisgICAgICAgIGVtYWlsbWF4bGluZWxlbmd0aCAoaW50IG9yIE5vbmUpCisKKyAgICAgICAgICAgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbnkgc2luZ2xlIGxpbmUgaW4gdGhlIGVtYWlsIGJvZHkuCisgICAgICAgICAgICBMb25nZXIgbGluZXMgYXJlIHRydW5jYXRlZCBhdCB0aGF0IGxlbmd0aCB3aXRoICcgWy4uLl0nCisgICAgICAgICAgICBhcHBlbmRlZC4KKworICAgICAgICBzdHJpY3RfdXRmOCAoYm9vbCkKKworICAgICAgICAgICAgSWYgdGhpcyBmaWVsZCBpcyBzZXQgdG8gVHJ1ZSwgdGhlbiB0aGUgZW1haWwgYm9keSB0ZXh0IGlzCisgICAgICAgICAgICBleHBlY3RlZCB0byBiZSBVVEYtOC4gIEFueSBpbnZhbGlkIGNoYXJhY3RlcnMgYXJlCisgICAgICAgICAgICBjb252ZXJ0ZWQgdG8gVStGRkZELCB0aGUgVW5pY29kZSByZXBsYWNlbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgIChlbmNvZGVkIGFzIFVURi04LCBvZiBjb3Vyc2UpLgorCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyaWN0X3V0Zjg9VHJ1ZSwgZW1haWxtYXhsaW5lbGVuZ3RoPTUwMCwgKiprdyk6CisgICAgICAgIHN1cGVyKEZpbHRlckxpbmVzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oKiprdykKKyAgICAgICAgc2VsZi5fX3N0cmljdF91dGY4ID0gc3RyaWN0X3V0ZjgKKyAgICAgICAgc2VsZi5fX2VtYWlsbWF4bGluZWxlbmd0aCA9IGVtYWlsbWF4bGluZWxlbmd0aAorCisgICAgZGVmIGZpbHRlcl9ib2R5KHNlbGYsIGxpbmVzKToKKyAgICAgICAgbGluZXMgPSBzdXBlcihGaWx0ZXJMaW5lc0Vudmlyb25tZW50TWl4aW4sIHNlbGYpLmZpbHRlcl9ib2R5KGxpbmVzKQorICAgICAgICBpZiBzZWxmLl9fc3RyaWN0X3V0Zjg6CisgICAgICAgICAgICBsaW5lcyA9IChsaW5lLmRlY29kZShFTkNPRElORywgJ3JlcGxhY2UnKSBmb3IgbGluZSBpbiBsaW5lcykKKyAgICAgICAgICAgICMgTGltaXQgdGhlIGxpbmUgbGVuZ3RoIGluIFVuaWNvZGUtc3BhY2UgdG8gYXZvaWQKKyAgICAgICAgICAgICMgc3BsaXR0aW5nIGNoYXJhY3RlcnM6CisgICAgICAgICAgICBpZiBzZWxmLl9fZW1haWxtYXhsaW5lbGVuZ3RoOgorICAgICAgICAgICAgICAgIGxpbmVzID0gbGltaXRfbGluZWxlbmd0aChsaW5lcywgc2VsZi5fX2VtYWlsbWF4bGluZWxlbmd0aCkKKyAgICAgICAgICAgIGxpbmVzID0gKGxpbmUuZW5jb2RlKEVOQ09ESU5HLCAncmVwbGFjZScpIGZvciBsaW5lIGluIGxpbmVzKQorICAgICAgICBlbGlmIHNlbGYuX19lbWFpbG1heGxpbmVsZW5ndGg6CisgICAgICAgICAgICBsaW5lcyA9IGxpbWl0X2xpbmVsZW5ndGgobGluZXMsIHNlbGYuX19lbWFpbG1heGxpbmVsZW5ndGgpCisKKyAgICAgICAgcmV0dXJuIGxpbmVzCisKKworY2xhc3MgQ29uZmlnRmlsdGVyTGluZXNFbnZpcm9ubWVudE1peGluKAorICAgIENvbmZpZ0Vudmlyb25tZW50TWl4aW4sCisgICAgRmlsdGVyTGluZXNFbnZpcm9ubWVudE1peGluLAorICAgICk6CisgICAgIiIiSGFuZGxlIGVuY29kaW5nIGFuZCBtYXhpbXVtIGxpbmUgbGVuZ3RoIGJhc2VkIG9uIGNvbmZpZy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcsICoqa3cpOgorICAgICAgICBzdHJpY3RfdXRmOCA9IGNvbmZpZy5nZXRfYm9vbCgnZW1haWxzdHJpY3R1dGY4JywgZGVmYXVsdD1Ob25lKQorICAgICAgICBpZiBzdHJpY3RfdXRmOCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGt3WydzdHJpY3RfdXRmOCddID0gc3RyaWN0X3V0ZjgKKworICAgICAgICBlbWFpbG1heGxpbmVsZW5ndGggPSBjb25maWcuZ2V0KCdlbWFpbG1heGxpbmVsZW5ndGgnKQorICAgICAgICBpZiBlbWFpbG1heGxpbmVsZW5ndGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICBrd1snZW1haWxtYXhsaW5lbGVuZ3RoJ10gPSBpbnQoZW1haWxtYXhsaW5lbGVuZ3RoKQorCisgICAgICAgIHN1cGVyKENvbmZpZ0ZpbHRlckxpbmVzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBjb25maWc9Y29uZmlnLCAqKmt3CisgICAgICAgICAgICApCisKKworY2xhc3MgTWF4bGluZXNFbnZpcm9ubWVudE1peGluKEVudmlyb25tZW50KToKKyAgICAiIiJMaW1pdCB0aGUgZW1haWwgYm9keSB0byBhIHNwZWNpZmllZCBudW1iZXIgb2YgbGluZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZW1haWxtYXhsaW5lcywgKiprdyk6CisgICAgICAgIHN1cGVyKE1heGxpbmVzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oKiprdykKKyAgICAgICAgc2VsZi5fX2VtYWlsbWF4bGluZXMgPSBlbWFpbG1heGxpbmVzCisKKyAgICBkZWYgZmlsdGVyX2JvZHkoc2VsZiwgbGluZXMpOgorICAgICAgICBsaW5lcyA9IHN1cGVyKE1heGxpbmVzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuZmlsdGVyX2JvZHkobGluZXMpCisgICAgICAgIGlmIHNlbGYuX19lbWFpbG1heGxpbmVzOgorICAgICAgICAgICAgbGluZXMgPSBsaW1pdF9saW5lcyhsaW5lcywgc2VsZi5fX2VtYWlsbWF4bGluZXMpCisgICAgICAgIHJldHVybiBsaW5lcworCisKK2NsYXNzIENvbmZpZ01heGxpbmVzRW52aXJvbm1lbnRNaXhpbigKKyAgICBDb25maWdFbnZpcm9ubWVudE1peGluLAorICAgIE1heGxpbmVzRW52aXJvbm1lbnRNaXhpbiwKKyAgICApOgorICAgICIiIkxpbWl0IHRoZSBlbWFpbCBib2R5IHRvIHRoZSBudW1iZXIgb2YgbGluZXMgc3BlY2lmaWVkIGluIGNvbmZpZy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcsICoqa3cpOgorICAgICAgICBlbWFpbG1heGxpbmVzID0gaW50KGNvbmZpZy5nZXQoJ2VtYWlsbWF4bGluZXMnLCBkZWZhdWx0PScwJykpCisgICAgICAgIHN1cGVyKENvbmZpZ01heGxpbmVzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBjb25maWc9Y29uZmlnLAorICAgICAgICAgICAgZW1haWxtYXhsaW5lcz1lbWFpbG1heGxpbmVzLAorICAgICAgICAgICAgKiprdworICAgICAgICAgICAgKQorCisKK2NsYXNzIFB1c2hlckRvbWFpbkVudmlyb25tZW50TWl4aW4oQ29uZmlnRW52aXJvbm1lbnRNaXhpbik6CisgICAgIiIiRGVkdWNlIHB1c2hlcl9lbWFpbCBmcm9tIHB1c2hlciBieSBhcHBlbmRpbmcgYW4gZW1haWxkb21haW4uIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiprdyk6CisgICAgICAgIHN1cGVyKFB1c2hlckRvbWFpbkVudmlyb25tZW50TWl4aW4sIHNlbGYpLl9faW5pdF9fKCoqa3cpCisgICAgICAgIHNlbGYuX19lbWFpbGRvbWFpbiA9IHNlbGYuY29uZmlnLmdldCgnZW1haWxkb21haW4nKQorCisgICAgZGVmIGdldF9wdXNoZXJfZW1haWwoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX19lbWFpbGRvbWFpbjoKKyAgICAgICAgICAgICMgRGVyaXZlIHRoZSBwdXNoZXIncyBmdWxsIGVtYWlsIGFkZHJlc3MgaW4gdGhlIGRlZmF1bHQgd2F5OgorICAgICAgICAgICAgcmV0dXJuICclc0AlcycgJSAoc2VsZi5nZXRfcHVzaGVyKCksIHNlbGYuX19lbWFpbGRvbWFpbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzdXBlcihQdXNoZXJEb21haW5FbnZpcm9ubWVudE1peGluLCBzZWxmKS5nZXRfcHVzaGVyX2VtYWlsKCkKKworCitjbGFzcyBTdGF0aWNSZWNpcGllbnRzRW52aXJvbm1lbnRNaXhpbihFbnZpcm9ubWVudCk6CisgICAgIiIiU2V0IHJlY2lwaWVudHMgc3RhdGljYWxseSBiYXNlZCBvbiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLiIiIgorCisgICAgZGVmIF9faW5pdF9fKAorICAgICAgICBzZWxmLAorICAgICAgICByZWZjaGFuZ2VfcmVjaXBpZW50cywgYW5ub3VuY2VfcmVjaXBpZW50cywgcmV2aXNpb25fcmVjaXBpZW50cywKKyAgICAgICAgKiprdworICAgICAgICApOgorICAgICAgICBzdXBlcihTdGF0aWNSZWNpcGllbnRzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oKiprdykKKworICAgICAgICAjIFRoZSByZWNpcGllbnRzIGZvciB2YXJpb3VzIHR5cGVzIG9mIG5vdGlmaWNhdGlvbiBlbWFpbHMsIGFzCisgICAgICAgICMgUkZDIDI4MjIgZW1haWwgYWRkcmVzc2VzIHNlcGFyYXRlZCBieSBjb21tYXMgKG9yIHRoZSBlbXB0eQorICAgICAgICAjIHN0cmluZyBpZiBubyByZWNpcGllbnRzIGFyZSBjb25maWd1cmVkKS4gIEFsdGhvdWdoIHRoZXJlIGlzCisgICAgICAgICMgYSBtZWNoYW5pc20gdG8gY2hvb3NlIHRoZSByZWNpcGllbnQgbGlzdHMgYmFzZWQgb24gb24gdGhlCisgICAgICAgICMgYWN0dWFsICpjb250ZW50cyogb2YgdGhlIGNoYW5nZSBiZWluZyByZXBvcnRlZCwgd2Ugb25seQorICAgICAgICAjIGNob29zZSBiYXNlZCBvbiB0aGUgKnR5cGUqIG9mIHRoZSBjaGFuZ2UuICBUaGVyZWZvcmUgd2UgY2FuCisgICAgICAgICMgY29tcHV0ZSB0aGVtIG9uY2UgYW5kIGZvciBhbGw6CisgICAgICAgIHNlbGYuX19yZWZjaGFuZ2VfcmVjaXBpZW50cyA9IHJlZmNoYW5nZV9yZWNpcGllbnRzCisgICAgICAgIHNlbGYuX19hbm5vdW5jZV9yZWNpcGllbnRzID0gYW5ub3VuY2VfcmVjaXBpZW50cworICAgICAgICBzZWxmLl9fcmV2aXNpb25fcmVjaXBpZW50cyA9IHJldmlzaW9uX3JlY2lwaWVudHMKKworICAgIGRlZiBnZXRfcmVmY2hhbmdlX3JlY2lwaWVudHMoc2VsZiwgcmVmY2hhbmdlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19yZWZjaGFuZ2VfcmVjaXBpZW50cworCisgICAgZGVmIGdldF9hbm5vdW5jZV9yZWNpcGllbnRzKHNlbGYsIGFubm90YXRlZF90YWdfY2hhbmdlKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX19hbm5vdW5jZV9yZWNpcGllbnRzCisKKyAgICBkZWYgZ2V0X3JldmlzaW9uX3JlY2lwaWVudHMoc2VsZiwgcmV2aXNpb24pOgorICAgICAgICByZXR1cm4gc2VsZi5fX3JldmlzaW9uX3JlY2lwaWVudHMKKworCitjbGFzcyBDb25maWdSZWNpcGllbnRzRW52aXJvbm1lbnRNaXhpbigKKyAgICBDb25maWdFbnZpcm9ubWVudE1peGluLAorICAgIFN0YXRpY1JlY2lwaWVudHNFbnZpcm9ubWVudE1peGluCisgICAgKToKKyAgICAiIiJEZXRlcm1pbmUgcmVjaXBpZW50cyBzdGF0aWNhbGx5IGJhc2VkIG9uIGNvbmZpZy4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25maWcsICoqa3cpOgorICAgICAgICBzdXBlcihDb25maWdSZWNpcGllbnRzRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuX19pbml0X18oCisgICAgICAgICAgICBjb25maWc9Y29uZmlnLAorICAgICAgICAgICAgcmVmY2hhbmdlX3JlY2lwaWVudHM9c2VsZi5fZ2V0X3JlY2lwaWVudHMoCisgICAgICAgICAgICAgICAgY29uZmlnLCAncmVmY2hhbmdlbGlzdCcsICdtYWlsaW5nbGlzdCcsCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIGFubm91bmNlX3JlY2lwaWVudHM9c2VsZi5fZ2V0X3JlY2lwaWVudHMoCisgICAgICAgICAgICAgICAgY29uZmlnLCAnYW5ub3VuY2VsaXN0JywgJ3JlZmNoYW5nZWxpc3QnLCAnbWFpbGluZ2xpc3QnLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICByZXZpc2lvbl9yZWNpcGllbnRzPXNlbGYuX2dldF9yZWNpcGllbnRzKAorICAgICAgICAgICAgICAgIGNvbmZpZywgJ2NvbW1pdGxpc3QnLCAnbWFpbGluZ2xpc3QnLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAqKmt3CisgICAgICAgICAgICApCisKKyAgICBkZWYgX2dldF9yZWNpcGllbnRzKHNlbGYsIGNvbmZpZywgKm5hbWVzKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSByZWNpcGllbnRzIGZvciBhIHBhcnRpY3VsYXIgdHlwZSBvZiBtZXNzYWdlLgorCisgICAgICAgIFJldHVybiB0aGUgbGlzdCBvZiBlbWFpbCBhZGRyZXNzZXMgdG8gd2hpY2ggYSBwYXJ0aWN1bGFyIHR5cGUKKyAgICAgICAgb2Ygbm90aWZpY2F0aW9uIGVtYWlsIHNob3VsZCBiZSBzZW50LCBieSBsb29raW5nIGF0IHRoZSBjb25maWcKKyAgICAgICAgdmFsdWUgZm9yICJtdWx0aW1haWxob29rLiRuYW1lIiBmb3IgZWFjaCBvZiBuYW1lcy4gIFVzZSB0aGUKKyAgICAgICAgdmFsdWUgZnJvbSB0aGUgZmlyc3QgbmFtZSB0aGF0IGlzIGNvbmZpZ3VyZWQuICBUaGUgcmV0dXJuCisgICAgICAgIHZhbHVlIGlzIGEgKHBvc3NpYmx5IGVtcHR5KSBzdHJpbmcgY29udGFpbmluZyBSRkMgMjgyMiBlbWFpbAorICAgICAgICBhZGRyZXNzZXMgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gIElmIG5vIGNvbmZpZ3VyYXRpb24gY291bGQgYmUKKyAgICAgICAgZm91bmQsIHJhaXNlIGEgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbi4iIiIKKworICAgICAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgICAgIHJldHZhbCA9IGNvbmZpZy5nZXRfcmVjaXBpZW50cyhuYW1lKQorICAgICAgICAgICAgaWYgcmV0dmFsIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWwKKyAgICAgICAgaWYgbGVuKG5hbWVzKSA9PSAxOgorICAgICAgICAgICAgaGludCA9ICdQbGVhc2Ugc2V0ICIlcy4lcyInICUgKGNvbmZpZy5zZWN0aW9uLCBuYW1lKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaGludCA9ICgKKyAgICAgICAgICAgICAgICAnUGxlYXNlIHNldCBvbmUgb2YgdGhlIGZvbGxvd2luZzpcbiAgICAiJXMiJworICAgICAgICAgICAgICAgICUgKCciXG4gICAgIicuam9pbignJXMuJXMnICUgKGNvbmZpZy5zZWN0aW9uLCBuYW1lKSBmb3IgbmFtZSBpbiBuYW1lcykpCisgICAgICAgICAgICAgICAgKQorCisgICAgICAgIHJhaXNlIENvbmZpZ3VyYXRpb25FeGNlcHRpb24oCisgICAgICAgICAgICAnVGhlIGxpc3Qgb2YgcmVjaXBpZW50cyBmb3IgJXMgaXMgbm90IGNvbmZpZ3VyZWQuXG4lcycgJSAobmFtZXNbMF0sIGhpbnQpCisgICAgICAgICAgICApCisKKworY2xhc3MgUHJvamVjdGRlc2NFbnZpcm9ubWVudE1peGluKEVudmlyb25tZW50KToKKyAgICAiIiJNYWtlIGEgInByb2plY3RkZXNjIiB2YWx1ZSBhdmFpbGFibGUgZm9yIHRlbXBsYXRlcy4KKworICAgIEJ5IGRlZmF1bHQsIGl0IGlzIHNldCB0byB0aGUgZmlyc3QgbGluZSBvZiAkR0lUX0RJUi9kZXNjcmlwdGlvbgorICAgIChpZiB0aGF0IGZpbGUgaXMgcHJlc2VudCBhbmQgYXBwZWFycyB0byBiZSBzZXQgbWVhbmluZ2Z1bGx5KS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3KToKKyAgICAgICAgc3VwZXIoUHJvamVjdGRlc2NFbnZpcm9ubWVudE1peGluLCBzZWxmKS5fX2luaXRfXygqKmt3KQorICAgICAgICBzZWxmLkNPTVBVVEVEX0tFWVMgKz0gWydwcm9qZWN0ZGVzYyddCisKKyAgICBkZWYgZ2V0X3Byb2plY3RkZXNjKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYSBvbmUtbGluZSBkZXNjcmlwaXRpb24gb2YgdGhlIHByb2plY3QuIiIiCisKKyAgICAgICAgZ2l0X2RpciA9IGdldF9naXRfZGlyKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJvamVjdGRlc2MgPSBvcGVuKG9zLnBhdGguam9pbihnaXRfZGlyLCAnZGVzY3JpcHRpb24nKSkucmVhZGxpbmUoKS5zdHJpcCgpCisgICAgICAgICAgICBpZiBwcm9qZWN0ZGVzYyBhbmQgbm90IHByb2plY3RkZXNjLnN0YXJ0c3dpdGgoJ1VubmFtZWQgcmVwb3NpdG9yeScpOgorICAgICAgICAgICAgICAgIHJldHVybiBwcm9qZWN0ZGVzYworICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICByZXR1cm4gJ1VOTkFNRUQgUFJPSkVDVCcKKworCitjbGFzcyBHZW5lcmljRW52aXJvbm1lbnRNaXhpbihFbnZpcm9ubWVudCk6CisgICAgZGVmIGdldF9wdXNoZXIoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLm9zZW52LmdldCgnVVNFUicsICd1bmtub3duIHVzZXInKQorCisKK2NsYXNzIEdlbmVyaWNFbnZpcm9ubWVudCgKKyAgICBQcm9qZWN0ZGVzY0Vudmlyb25tZW50TWl4aW4sCisgICAgQ29uZmlnTWF4bGluZXNFbnZpcm9ubWVudE1peGluLAorICAgIENvbmZpZ0ZpbHRlckxpbmVzRW52aXJvbm1lbnRNaXhpbiwKKyAgICBDb25maWdSZWNpcGllbnRzRW52aXJvbm1lbnRNaXhpbiwKKyAgICBQdXNoZXJEb21haW5FbnZpcm9ubWVudE1peGluLAorICAgIENvbmZpZ09wdGlvbnNFbnZpcm9ubWVudE1peGluLAorICAgIEdlbmVyaWNFbnZpcm9ubWVudE1peGluLAorICAgIEVudmlyb25tZW50LAorICAgICk6CisgICAgcGFzcworCisKK2NsYXNzIEdpdG9saXRlRW52aXJvbm1lbnRNaXhpbihFbnZpcm9ubWVudCk6CisgICAgZGVmIGdldF9yZXBvX3Nob3J0bmFtZShzZWxmKToKKyAgICAgICAgIyBUaGUgZ2l0b2xpdGUgZW52aXJvbm1lbnQgdmFyaWFibGUgJEdMX1JFUE8gaXMgYSBwcmV0dHkgZ29vZAorICAgICAgICAjIHJlcG9fc2hvcnRuYW1lICh0aG91Z2ggaXQncyBwcm9iYWJseSBub3QgYXMgZ29vZCBhcyBhIHZhbHVlCisgICAgICAgICMgdGhlIHVzZXIgbWlnaHQgaGF2ZSBleHBsaWNpdGx5IHB1dCBpbiBoaXMgY29uZmlnKS4KKyAgICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIHNlbGYub3NlbnYuZ2V0KCdHTF9SRVBPJywgTm9uZSkKKyAgICAgICAgICAgIG9yIHN1cGVyKEdpdG9saXRlRW52aXJvbm1lbnRNaXhpbiwgc2VsZikuZ2V0X3JlcG9fc2hvcnRuYW1lKCkKKyAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfcHVzaGVyKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5vc2Vudi5nZXQoJ0dMX1VTRVInLCAndW5rbm93biB1c2VyJykKKworCitjbGFzcyBHaXRvbGl0ZUVudmlyb25tZW50KAorICAgIFByb2plY3RkZXNjRW52aXJvbm1lbnRNaXhpbiwKKyAgICBDb25maWdNYXhsaW5lc0Vudmlyb25tZW50TWl4aW4sCisgICAgQ29uZmlnRmlsdGVyTGluZXNFbnZpcm9ubWVudE1peGluLAorICAgIENvbmZpZ1JlY2lwaWVudHNFbnZpcm9ubWVudE1peGluLAorICAgIFB1c2hlckRvbWFpbkVudmlyb25tZW50TWl4aW4sCisgICAgQ29uZmlnT3B0aW9uc0Vudmlyb25tZW50TWl4aW4sCisgICAgR2l0b2xpdGVFbnZpcm9ubWVudE1peGluLAorICAgIEVudmlyb25tZW50LAorICAgICk6CisgICAgcGFzcworCisKK2NsYXNzIFB1c2gob2JqZWN0KToKKyAgICAiIiJSZXByZXNlbnQgYW4gZW50aXJlIHB1c2ggKGkuZS4sIGEgZ3JvdXAgb2YgUmVmZXJlbmNlQ2hhbmdlcykuCisKKyAgICBJdCBpcyBlYXN5IHRvIGZpZ3VyZSBvdXQgd2hhdCBjb21taXRzIHdlcmUgYWRkZWQgdG8gYSAqYnJhbmNoKiBieQorICAgIGEgUmVmZXJlbmNlIGNoYW5nZToKKworICAgICAgICBnaXQgcmV2LWxpc3QgY2hhbmdlLm9sZC4uY2hhbmdlLm5ldworCisgICAgb3IgcmVtb3ZlZCBmcm9tIGEgKmJyYW5jaCo6CisKKyAgICAgICAgZ2l0IHJldi1saXN0IGNoYW5nZS5uZXcuLmNoYW5nZS5vbGQKKworICAgIEJ1dCBpdCBpcyBub3QgcXVpdGUgc28gdHJpdmlhbCB0byBkZXRlcm1pbmUgd2hpY2ggZW50aXJlbHkgbmV3CisgICAgY29tbWl0cyB3ZXJlIGFkZGVkIHRvIHRoZSAqcmVwb3NpdG9yeSogYnkgYSBwdXNoIGFuZCB3aGljaCBvbGQKKyAgICBjb21taXRzIHdlcmUgZGlzY2FyZGVkIGJ5IGEgcHVzaC4gIEEgYmlnIHBhcnQgb2YgdGhlIGpvYiBvZiB0aGlzCisgICAgY2xhc3MgaXMgdG8gZmlndXJlIG91dCB0aGVzZSB0aGluZ3MsIGFuZCB0byBtYWtlIHN1cmUgdGhhdCBuZXcKKyAgICBjb21taXRzIGFyZSBvbmx5IGRldGFpbGVkIG9uY2UgZXZlbiBpZiB0aGV5IHdlcmUgYWRkZWQgdG8gbXVsdGlwbGUKKyAgICByZWZlcmVuY2VzLgorCisgICAgVGhlIGZpcnN0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIHRoZSAib3RoZXIiIHJlZmVyZW5jZXMtLXRob3NlCisgICAgdW5hZmZlY3RlZCBieSB0aGUgY3VycmVudCBwdXNoLiAgVGhleSBhcmUgY29tcHV0ZWQgYnkKKyAgICBQdXNoLl9jb21wdXRlX290aGVyX3JlZl9zaGExcygpIGJ5IGxpc3RpbmcgYWxsIHJlZmVyZW5jZXMgdGhlbgorICAgIHJlbW92aW5nIGFueSBhZmZlY3RlZCBieSB0aGlzIHB1c2guCisKKyAgICBUaGUgY29tbWl0cyBjb250YWluZWQgaW4gdGhlIHJlcG9zaXRvcnkgYmVmb3JlIHRoaXMgcHVzaCB3ZXJlCisKKyAgICAgICAgZ2l0IHJldi1saXN0IG90aGVyMSBvdGhlcjIgb3RoZXIzIC4uLiBjaGFuZ2UxLm9sZCBjaGFuZ2UyLm9sZCAuLi4KKworICAgIFdoZXJlICJjaGFuZ2VOLm9sZCIgaXMgdGhlIG9sZCB2YWx1ZSBvZiBvbmUgb2YgdGhlIHJlZmVyZW5jZXMKKyAgICBhZmZlY3RlZCBieSB0aGlzIHB1c2guCisKKyAgICBUaGUgY29tbWl0cyBjb250YWluZWQgaW4gdGhlIHJlcG9zaXRvcnkgYWZ0ZXIgdGhpcyBwdXNoIGFyZQorCisgICAgICAgIGdpdCByZXYtbGlzdCBvdGhlcjEgb3RoZXIyIG90aGVyMyAuLi4gY2hhbmdlMS5uZXcgY2hhbmdlMi5uZXcgLi4uCisKKyAgICBUaGUgY29tbWl0cyBhZGRlZCBieSB0aGlzIHB1c2ggYXJlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlc2UKKyAgICB0d28gc2V0cywgd2hpY2ggY2FuIGJlIHdyaXR0ZW4KKworICAgICAgICBnaXQgcmV2LWxpc3QgXAorICAgICAgICAgICAgXm90aGVyMSBeb3RoZXIyIC4uLiBcCisgICAgICAgICAgICBeY2hhbmdlMS5vbGQgXmNoYW5nZTIub2xkIC4uLiBcCisgICAgICAgICAgICBjaGFuZ2UxLm5ldyBjaGFuZ2UyLm5ldyAuLi4KKworICAgIFRoZSBjb21taXRzIHJlbW92ZWQgYnkgdGhpcyBwdXNoIGNhbiBiZSBjb21wdXRlZCBieQorCisgICAgICAgIGdpdCByZXYtbGlzdCBcCisgICAgICAgICAgICBeb3RoZXIxIF5vdGhlcjIgLi4uIFwKKyAgICAgICAgICAgIF5jaGFuZ2UxLm5ldyBeY2hhbmdlMi5uZXcgLi4uIFwKKyAgICAgICAgICAgIGNoYW5nZTEub2xkIGNoYW5nZTIub2xkIC4uLgorCisgICAgVGhlIGxhc3QgcG9pbnQgaXMgdGhhdCBpdCBpcyBwb3NzaWJsZSB0aGF0IG90aGVyIHB1c2hlcyBhcmUKKyAgICBvY2N1cnJpbmcgc2ltdWx0YW5lb3VzbHkgdG8gdGhpcyBvbmUsIHNvIHJlZmVyZW5jZSB2YWx1ZXMgY2FuCisgICAgY2hhbmdlIGF0IGFueSB0aW1lLiAgSXQgaXMgaW1wb3NzaWJsZSB0byBlbGltaW5hdGUgYWxsIHJhY2UKKyAgICBjb25kaXRpb25zLCBidXQgd2UgcmVkdWNlIHRoZSB3aW5kb3cgb2YgdGltZSBkdXJpbmcgd2hpY2ggcHJvYmxlbXMKKyAgICBjYW4gb2NjdXIgYnkgdHJhbnNsYXRpbmcgcmVmZXJlbmNlIG5hbWVzIHRvIFNIQTFzIGFzIHNvb24gYXMKKyAgICBwb3NzaWJsZSBhbmQgd29ya2luZyB3aXRoIFNIQTFzIHRoZXJlYWZ0ZXIgKGJlY2F1c2UgU0hBMXMgYXJlCisgICAgaW1tdXRhYmxlKS4iIiIKKworICAgICMgQSBtYXAgeyhjaGFuZ2VjbGFzcywgY2hhbmdldHlwZSkgOiBpbnRlZ2VyfSBzcGVjaWZ5aW5nIHRoZSBvcmRlcgorICAgICMgdGhhdCByZWZlcmVuY2UgY2hhbmdlcyB3aWxsIGJlIHByb2Nlc3NlZCBpZiBtdWx0aXBsZSByZWZlcmVuY2UKKyAgICAjIGNoYW5nZXMgYXJlIGluY2x1ZGVkIGluIGEgc2luZ2xlIHB1c2guICBUaGUgb3JkZXIgaXMgc2lnbmlmaWNhbnQKKyAgICAjIG1vc3RseSBiZWNhdXNlIG5ldyBjb21taXQgbm90aWZpY2F0aW9ucyBhcmUgdGhyZWFkZWQgdG9nZXRoZXIKKyAgICAjIHdpdGggdGhlIGZpcnN0IHJlZmVyZW5jZSBjaGFuZ2UgdGhhdCBpbmNsdWRlcyB0aGUgY29tbWl0LiAgVGhlCisgICAgIyBmb2xsb3dpbmcgb3JkZXIgdGh1cyBjYXVzZXMgY29tbWl0cyB0byBiZSBncm91cGVkIHdpdGggYnJhbmNoCisgICAgIyBjaGFuZ2VzIChhcyBvcHBvc2VkIHRvIHRhZyBjaGFuZ2VzKSBpZiBwb3NzaWJsZS4KKyAgICBTT1JUX09SREVSID0gZGljdCgKKyAgICAgICAgKHZhbHVlLCBpKSBmb3IgKGksIHZhbHVlKSBpbiBlbnVtZXJhdGUoWworICAgICAgICAgICAgKEJyYW5jaENoYW5nZSwgJ3VwZGF0ZScpLAorICAgICAgICAgICAgKEJyYW5jaENoYW5nZSwgJ2NyZWF0ZScpLAorICAgICAgICAgICAgKEFubm90YXRlZFRhZ0NoYW5nZSwgJ3VwZGF0ZScpLAorICAgICAgICAgICAgKEFubm90YXRlZFRhZ0NoYW5nZSwgJ2NyZWF0ZScpLAorICAgICAgICAgICAgKE5vbkFubm90YXRlZFRhZ0NoYW5nZSwgJ3VwZGF0ZScpLAorICAgICAgICAgICAgKE5vbkFubm90YXRlZFRhZ0NoYW5nZSwgJ2NyZWF0ZScpLAorICAgICAgICAgICAgKEJyYW5jaENoYW5nZSwgJ2RlbGV0ZScpLAorICAgICAgICAgICAgKEFubm90YXRlZFRhZ0NoYW5nZSwgJ2RlbGV0ZScpLAorICAgICAgICAgICAgKE5vbkFubm90YXRlZFRhZ0NoYW5nZSwgJ2RlbGV0ZScpLAorICAgICAgICAgICAgKE90aGVyUmVmZXJlbmNlQ2hhbmdlLCAndXBkYXRlJyksCisgICAgICAgICAgICAoT3RoZXJSZWZlcmVuY2VDaGFuZ2UsICdjcmVhdGUnKSwKKyAgICAgICAgICAgIChPdGhlclJlZmVyZW5jZUNoYW5nZSwgJ2RlbGV0ZScpLAorICAgICAgICAgICAgXSkKKyAgICAgICAgKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNoYW5nZXMpOgorICAgICAgICBzZWxmLmNoYW5nZXMgPSBzb3J0ZWQoY2hhbmdlcywga2V5PXNlbGYuX3NvcnRfa2V5KQorCisgICAgICAgICMgVGhlIFNIQS0xcyBvZiBjb21taXRzIHJlZmVycmVkIHRvIGJ5IHJlZmVyZW5jZXMgdW5hZmZlY3RlZAorICAgICAgICAjIGJ5IHRoaXMgcHVzaDoKKyAgICAgICAgb3RoZXJfcmVmX3NoYTFzID0gc2VsZi5fY29tcHV0ZV9vdGhlcl9yZWZfc2hhMXMoKQorCisgICAgICAgIHNlbGYuX29sZF9yZXZfZXhjbHVzaW9uX3NwZWMgPSBzZWxmLl9jb21wdXRlX3Jldl9leGNsdXNpb25fc3BlYygKKyAgICAgICAgICAgIG90aGVyX3JlZl9zaGExcy51bmlvbigKKyAgICAgICAgICAgICAgICBjaGFuZ2Uub2xkLnNoYTEKKyAgICAgICAgICAgICAgICBmb3IgY2hhbmdlIGluIHNlbGYuY2hhbmdlcworICAgICAgICAgICAgICAgIGlmIGNoYW5nZS5vbGQudHlwZSBpbiBbJ2NvbW1pdCcsICd0YWcnXQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICkKKyAgICAgICAgc2VsZi5fbmV3X3Jldl9leGNsdXNpb25fc3BlYyA9IHNlbGYuX2NvbXB1dGVfcmV2X2V4Y2x1c2lvbl9zcGVjKAorICAgICAgICAgICAgb3RoZXJfcmVmX3NoYTFzLnVuaW9uKAorICAgICAgICAgICAgICAgIGNoYW5nZS5uZXcuc2hhMQorICAgICAgICAgICAgICAgIGZvciBjaGFuZ2UgaW4gc2VsZi5jaGFuZ2VzCisgICAgICAgICAgICAgICAgaWYgY2hhbmdlLm5ldy50eXBlIGluIFsnY29tbWl0JywgJ3RhZyddCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9zb3J0X2tleShrbGFzcywgY2hhbmdlKToKKyAgICAgICAgcmV0dXJuIChrbGFzcy5TT1JUX09SREVSW2NoYW5nZS5fX2NsYXNzX18sIGNoYW5nZS5jaGFuZ2VfdHlwZV0sIGNoYW5nZS5yZWZuYW1lLCkKKworICAgIGRlZiBfY29tcHV0ZV9vdGhlcl9yZWZfc2hhMXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgR2l0T2JqZWN0cyByZWZlcnJlZCB0byBieSByZWZlcmVuY2VzIHVuYWZmZWN0ZWQgYnkgdGhpcyBwdXNoLiIiIgorCisgICAgICAgICMgVGhlIHJlZm5hbWVzIGJlaW5nIGNoYW5nZWQgYnkgdGhpcyBwdXNoOgorICAgICAgICB1cGRhdGVkX3JlZnMgPSBzZXQoCisgICAgICAgICAgICBjaGFuZ2UucmVmbmFtZQorICAgICAgICAgICAgZm9yIGNoYW5nZSBpbiBzZWxmLmNoYW5nZXMKKyAgICAgICAgICAgICkKKworICAgICAgICAjIFRoZSBTSEEtMXMgb2YgY29tbWl0cyByZWZlcnJlZCB0byBieSBhbGwgcmVmZXJlbmNlcyBpbiB0aGlzCisgICAgICAgICMgcmVwb3NpdG9yeSAqZXhjZXB0KiB1cGRhdGVkX3JlZnM6CisgICAgICAgIHNoYTFzID0gc2V0KCkKKyAgICAgICAgZm10ID0gKAorICAgICAgICAgICAgJyUob2JqZWN0bmFtZSkgJShvYmplY3R0eXBlKSAlKHJlZm5hbWUpXG4nCisgICAgICAgICAgICAnJSgqb2JqZWN0bmFtZSkgJSgqb2JqZWN0dHlwZSkgJShyZWZuYW1lKScKKyAgICAgICAgICAgICkKKyAgICAgICAgZm9yIGxpbmUgaW4gcmVhZF9naXRfbGluZXMoWydmb3ItZWFjaC1yZWYnLCAnLS1mb3JtYXQ9JXMnICUgKGZtdCwpXSk6CisgICAgICAgICAgICAoc2hhMSwgdHlwZSwgbmFtZSkgPSBsaW5lLnNwbGl0KCcgJywgMikKKyAgICAgICAgICAgIGlmIHNoYTEgYW5kIHR5cGUgPT0gJ2NvbW1pdCcgYW5kIG5hbWUgbm90IGluIHVwZGF0ZWRfcmVmczoKKyAgICAgICAgICAgICAgICBzaGExcy5hZGQoc2hhMSkKKworICAgICAgICByZXR1cm4gc2hhMXMKKworICAgIGRlZiBfY29tcHV0ZV9yZXZfZXhjbHVzaW9uX3NwZWMoc2VsZiwgc2hhMXMpOgorICAgICAgICAiIiJSZXR1cm4gYW4gZXhjbHVzaW9uIHNwZWNpZmljYXRpb24gZm9yICdnaXQgcmV2LWxpc3QnLgorCisgICAgICAgIGdpdF9vYmplY3RzIGlzIGFuIGl0ZXJhYmxlIG92ZXIgR2l0T2JqZWN0IGluc3RhbmNlcy4gIFJldHVybiBhCisgICAgICAgIHN0cmluZyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlIHN0YW5kYXJkIGlucHV0IG9mICdnaXQKKyAgICAgICAgcmV2LWxpc3QgLS1zdGRpbicgdG8gZXhjbHVkZSBhbGwgb2YgdGhlIGNvbW1pdHMgcmVmZXJyZWQgdG8gYnkKKyAgICAgICAgZ2l0X29iamVjdHMuIiIiCisKKyAgICAgICAgcmV0dXJuICcnLmpvaW4oCisgICAgICAgICAgICBbJ14lc1xuJyAlIChzaGExLCkgZm9yIHNoYTEgaW4gc29ydGVkKHNoYTFzKV0KKyAgICAgICAgICAgICkKKworICAgIGRlZiBnZXRfbmV3X2NvbW1pdHMoc2VsZiwgcmVmZXJlbmNlX2NoYW5nZT1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBjb21taXRzIGFkZGVkIGJ5IHRoaXMgcHVzaC4KKworICAgICAgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBvYmplY3QgbmFtZXMgb2YgY29tbWl0cyB0aGF0IHdlcmUgYWRkZWQKKyAgICAgICAgYnkgdGhlIHBhcnQgb2YgdGhpcyBwdXNoIHJlcHJlc2VudGVkIGJ5IHJlZmVyZW5jZV9jaGFuZ2UuICBJZgorICAgICAgICByZWZlcmVuY2VfY2hhbmdlIGlzIE5vbmUsIHRoZW4gcmV0dXJuIGEgbGlzdCBvZiAqYWxsKiBjb21taXRzCisgICAgICAgIGFkZGVkIGJ5IHRoaXMgcHVzaC4iIiIKKworICAgICAgICBpZiBub3QgcmVmZXJlbmNlX2NoYW5nZToKKyAgICAgICAgICAgIG5ld19yZXZzID0gc29ydGVkKAorICAgICAgICAgICAgICAgIGNoYW5nZS5uZXcuc2hhMQorICAgICAgICAgICAgICAgIGZvciBjaGFuZ2UgaW4gc2VsZi5jaGFuZ2VzCisgICAgICAgICAgICAgICAgaWYgY2hhbmdlLm5ldworICAgICAgICAgICAgICAgICkKKyAgICAgICAgZWxpZiBub3QgcmVmZXJlbmNlX2NoYW5nZS5uZXcuY29tbWl0X3NoYTE6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5ld19yZXZzID0gW3JlZmVyZW5jZV9jaGFuZ2UubmV3LmNvbW1pdF9zaGExXQorCisgICAgICAgIGNtZCA9IFsncmV2LWxpc3QnLCAnLS1zdGRpbiddICsgbmV3X3JldnMKKyAgICAgICAgcmV0dXJuIHJlYWRfZ2l0X2xpbmVzKGNtZCwgaW5wdXQ9c2VsZi5fb2xkX3Jldl9leGNsdXNpb25fc3BlYykKKworICAgIGRlZiBnZXRfZGlzY2FyZGVkX2NvbW1pdHMoc2VsZiwgcmVmZXJlbmNlX2NoYW5nZSk6CisgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWl0cyBkaXNjYXJkZWQgYnkgdGhpcyBwdXNoLgorCisgICAgICAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIG9iamVjdCBuYW1lcyBvZiBjb21taXRzIHRoYXQgd2VyZQorICAgICAgICBlbnRpcmVseSBkaXNjYXJkZWQgZnJvbSB0aGUgcmVwb3NpdG9yeSBieSB0aGUgcGFydCBvZiB0aGlzCisgICAgICAgIHB1c2ggcmVwcmVzZW50ZWQgYnkgcmVmZXJlbmNlX2NoYW5nZS4iIiIKKworICAgICAgICBpZiBub3QgcmVmZXJlbmNlX2NoYW5nZS5vbGQuY29tbWl0X3NoYTE6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9sZF9yZXZzID0gW3JlZmVyZW5jZV9jaGFuZ2Uub2xkLmNvbW1pdF9zaGExXQorCisgICAgICAgIGNtZCA9IFsncmV2LWxpc3QnLCAnLS1zdGRpbiddICsgb2xkX3JldnMKKyAgICAgICAgcmV0dXJuIHJlYWRfZ2l0X2xpbmVzKGNtZCwgaW5wdXQ9c2VsZi5fbmV3X3Jldl9leGNsdXNpb25fc3BlYykKKworICAgIGRlZiBzZW5kX2VtYWlscyhzZWxmLCBtYWlsZXIsIGJvZHlfZmlsdGVyPU5vbmUpOgorICAgICAgICAiIiJVc2Ugc2VuZCBhbGwgb2YgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbHMgbmVlZGVkIGZvciB0aGlzIHB1c2guCisKKyAgICAgICAgVXNlIHNlbmQgYWxsIG9mIHRoZSBub3RpZmljYXRpb24gZW1haWxzIChpbmNsdWRpbmcgcmVmZXJlbmNlCisgICAgICAgIGNoYW5nZSBlbWFpbHMgYW5kIGNvbW1pdCBlbWFpbHMpIG5lZWRlZCBmb3IgdGhpcyBwdXNoLiAgU2VuZAorICAgICAgICB0aGUgZW1haWxzIHVzaW5nIG1haWxlci4gIElmIGJvZHlfZmlsdGVyIGlzIG5vdCBOb25lLCB0aGVuIHVzZQorICAgICAgICBpdCB0byBmaWx0ZXIgdGhlIGxpbmVzIHRoYXQgYXJlIGludGVuZGVkIGZvciB0aGUgZW1haWwKKyAgICAgICAgYm9keS4iIiIKKworICAgICAgICAjIFRoZSBzaGExcyBvZiBjb21taXRzIHRoYXQgd2VyZSBpbnRyb2R1Y2VkIGJ5IHRoaXMgcHVzaC4KKyAgICAgICAgIyBUaGV5IHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoaXMgc2V0IGFzIHRoZXkgYXJlIHByb2Nlc3NlZCwgdG8KKyAgICAgICAgIyBndWFyYW50ZWUgdGhhdCBvbmUgKGFuZCBvbmx5IG9uZSkgZW1haWwgaXMgZ2VuZXJhdGVkIGZvcgorICAgICAgICAjIGVhY2ggbmV3IGNvbW1pdC4KKyAgICAgICAgdW5oYW5kbGVkX3NoYTFzID0gc2V0KHNlbGYuZ2V0X25ld19jb21taXRzKCkpCisgICAgICAgIGZvciBjaGFuZ2UgaW4gc2VsZi5jaGFuZ2VzOgorICAgICAgICAgICAgIyBDaGVjayBpZiB3ZSd2ZSBnb3QgYW55b25lIHRvIHNlbmQgdG8KKyAgICAgICAgICAgIGlmIG5vdCBjaGFuZ2UucmVjaXBpZW50czoKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICAgICAnKioqIG5vIHJlY2lwaWVudHMgY29uZmlndXJlZCBzbyBubyBlbWFpbCB3aWxsIGJlIHNlbnRcbicKKyAgICAgICAgICAgICAgICAgICAgJyoqKiBmb3IgJXIgdXBkYXRlICVzLT4lc1xuJworICAgICAgICAgICAgICAgICAgICAlIChjaGFuZ2UucmVmbmFtZSwgY2hhbmdlLm9sZC5zaGExLCBjaGFuZ2UubmV3LnNoYTEsKQorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1NlbmRpbmcgbm90aWZpY2F0aW9uIGVtYWlscyB0bzogJXNcbicgJSAoY2hhbmdlLnJlY2lwaWVudHMsKSkKKyAgICAgICAgICAgICAgICBtYWlsZXIuc2VuZChjaGFuZ2UuZ2VuZXJhdGVfZW1haWwoc2VsZiwgYm9keV9maWx0ZXIpLCBjaGFuZ2UucmVjaXBpZW50cykKKworICAgICAgICAgICAgc2hhMXMgPSBbXQorICAgICAgICAgICAgZm9yIHNoYTEgaW4gcmV2ZXJzZWQobGlzdChzZWxmLmdldF9uZXdfY29tbWl0cyhjaGFuZ2UpKSk6CisgICAgICAgICAgICAgICAgaWYgc2hhMSBpbiB1bmhhbmRsZWRfc2hhMXM6CisgICAgICAgICAgICAgICAgICAgIHNoYTFzLmFwcGVuZChzaGExKQorICAgICAgICAgICAgICAgICAgICB1bmhhbmRsZWRfc2hhMXMucmVtb3ZlKHNoYTEpCisKKyAgICAgICAgICAgIG1heF9lbWFpbHMgPSBjaGFuZ2UuZW52aXJvbm1lbnQubWF4Y29tbWl0ZW1haWxzCisgICAgICAgICAgICBpZiBtYXhfZW1haWxzIGFuZCBsZW4oc2hhMXMpID4gbWF4X2VtYWlsczoKKyAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICAgICAnKioqIFRvbyBtYW55IG5ldyBjb21taXRzICglZCksIG5vdCBzZW5kaW5nIGNvbW1pdCBlbWFpbHMuXG4nICUgbGVuKHNoYTFzKQorICAgICAgICAgICAgICAgICAgICArICcqKiogVHJ5IHNldHRpbmcgbXVsdGltYWlsaG9vay5tYXhDb21taXRFbWFpbHMgdG8gYSBncmVhdGVyIHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAgICsgJyoqKiBDdXJyZW50bHksIG11bHRpbWFpbGhvb2subWF4Q29tbWl0RW1haWxzPSVkXG4nICUgbWF4X2VtYWlscworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgIGZvciAobnVtLCBzaGExKSBpbiBlbnVtZXJhdGUoc2hhMXMpOgorICAgICAgICAgICAgICAgIHJldiA9IFJldmlzaW9uKGNoYW5nZSwgR2l0T2JqZWN0KHNoYTEpLCBudW09bnVtKzEsIHRvdD1sZW4oc2hhMXMpKQorICAgICAgICAgICAgICAgIGlmIHJldi5yZWNpcGllbnRzOgorICAgICAgICAgICAgICAgICAgICBtYWlsZXIuc2VuZChyZXYuZ2VuZXJhdGVfZW1haWwoc2VsZiwgYm9keV9maWx0ZXIpLCByZXYucmVjaXBpZW50cykKKworICAgICAgICAjIENvbnNpc3RlbmN5IGNoZWNrOgorICAgICAgICBpZiB1bmhhbmRsZWRfc2hhMXM6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgICAgICdFUlJPUjogTm8gZW1haWxzIHdlcmUgc2VudCBmb3IgdGhlIGZvbGxvd2luZyBuZXcgY29tbWl0czpcbicKKyAgICAgICAgICAgICAgICAnICAgICVzXG4nCisgICAgICAgICAgICAgICAgJSAoJ1xuICAgICcuam9pbihzb3J0ZWQodW5oYW5kbGVkX3NoYTFzKSksKQorICAgICAgICAgICAgICAgICkKKworCitkZWYgcnVuX2FzX3Bvc3RfcmVjZWl2ZV9ob29rKGVudmlyb25tZW50LCBtYWlsZXIpOgorICAgIGNoYW5nZXMgPSBbXQorICAgIGZvciBsaW5lIGluIHN5cy5zdGRpbjoKKyAgICAgICAgKG9sZHJldiwgbmV3cmV2LCByZWZuYW1lKSA9IGxpbmUuc3RyaXAoKS5zcGxpdCgnICcsIDIpCisgICAgICAgIGNoYW5nZXMuYXBwZW5kKAorICAgICAgICAgICAgUmVmZXJlbmNlQ2hhbmdlLmNyZWF0ZShlbnZpcm9ubWVudCwgb2xkcmV2LCBuZXdyZXYsIHJlZm5hbWUpCisgICAgICAgICAgICApCisgICAgcHVzaCA9IFB1c2goY2hhbmdlcykKKyAgICBwdXNoLnNlbmRfZW1haWxzKG1haWxlciwgYm9keV9maWx0ZXI9ZW52aXJvbm1lbnQuZmlsdGVyX2JvZHkpCisKKworZGVmIHJ1bl9hc191cGRhdGVfaG9vayhlbnZpcm9ubWVudCwgbWFpbGVyLCByZWZuYW1lLCBvbGRyZXYsIG5ld3Jldik6CisgICAgY2hhbmdlcyA9IFsKKyAgICAgICAgUmVmZXJlbmNlQ2hhbmdlLmNyZWF0ZSgKKyAgICAgICAgICAgIGVudmlyb25tZW50LAorICAgICAgICAgICAgcmVhZF9naXRfb3V0cHV0KFsncmV2LXBhcnNlJywgJy0tdmVyaWZ5Jywgb2xkcmV2XSksCisgICAgICAgICAgICByZWFkX2dpdF9vdXRwdXQoWydyZXYtcGFyc2UnLCAnLS12ZXJpZnknLCBuZXdyZXZdKSwKKyAgICAgICAgICAgIHJlZm5hbWUsCisgICAgICAgICAgICApLAorICAgICAgICBdCisgICAgcHVzaCA9IFB1c2goY2hhbmdlcykKKyAgICBwdXNoLnNlbmRfZW1haWxzKG1haWxlciwgYm9keV9maWx0ZXI9ZW52aXJvbm1lbnQuZmlsdGVyX2JvZHkpCisKKworZGVmIGNob29zZV9tYWlsZXIoY29uZmlnLCBlbnZpcm9ubWVudCk6CisgICAgbWFpbGVyID0gY29uZmlnLmdldCgnbWFpbGVyJywgZGVmYXVsdD0nc2VuZG1haWwnKQorCisgICAgaWYgbWFpbGVyID09ICdzbXRwJzoKKyAgICAgICAgc210cHNlcnZlciA9IGNvbmZpZy5nZXQoJ3NtdHBzZXJ2ZXInLCBkZWZhdWx0PSdsb2NhbGhvc3QnKQorICAgICAgICBtYWlsZXIgPSBTTVRQTWFpbGVyKAorICAgICAgICAgICAgZW52ZWxvcGVzZW5kZXI9KGVudmlyb25tZW50LmdldF9zZW5kZXIoKSBvciBlbnZpcm9ubWVudC5nZXRfZnJvbWFkZHIoKSksCisgICAgICAgICAgICBzbXRwc2VydmVyPXNtdHBzZXJ2ZXIsCisgICAgICAgICAgICApCisgICAgZWxpZiBtYWlsZXIgPT0gJ3NlbmRtYWlsJzoKKyAgICAgICAgY29tbWFuZCA9IGNvbmZpZy5nZXQoJ3NlbmRtYWlsY29tbWFuZCcpCisgICAgICAgIGlmIGNvbW1hbmQ6CisgICAgICAgICAgICBjb21tYW5kID0gc2hsZXguc3BsaXQoY29tbWFuZCkKKyAgICAgICAgbWFpbGVyID0gU2VuZE1haWxlcihjb21tYW5kPWNvbW1hbmQsIGVudmVsb3Blc2VuZGVyPWVudmlyb25tZW50LmdldF9zZW5kZXIoKSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgJ2ZhdGFsOiBtdWx0aW1haWxob29rLm1haWxlciBpcyBzZXQgdG8gYW4gaW5jb3JyZWN0IHZhbHVlOiAiJXMiXG4nICUgbWFpbGVyCisgICAgICAgICAgICArICdwbGVhc2UgdXNlIG9uZSBvZiAic210cCIgb3IgInNlbmRtYWlsIi5cbicKKyAgICAgICAgICAgICkKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICByZXR1cm4gbWFpbGVyCisKKworS05PV05fRU5WSVJPTk1FTlRTID0geworICAgICdnZW5lcmljJyA6IEdlbmVyaWNFbnZpcm9ubWVudE1peGluLAorICAgICdnaXRvbGl0ZScgOiBHaXRvbGl0ZUVudmlyb25tZW50TWl4aW4sCisgICAgfQorCisKK2RlZiBjaG9vc2VfZW52aXJvbm1lbnQoY29uZmlnLCBvc2Vudj1Ob25lLCBlbnY9Tm9uZSwgcmVjaXBpZW50cz1Ob25lKToKKyAgICBpZiBub3Qgb3NlbnY6CisgICAgICAgIG9zZW52ID0gb3MuZW52aXJvbgorCisgICAgZW52aXJvbm1lbnRfbWl4aW5zID0gWworICAgICAgICBQcm9qZWN0ZGVzY0Vudmlyb25tZW50TWl4aW4sCisgICAgICAgIENvbmZpZ01heGxpbmVzRW52aXJvbm1lbnRNaXhpbiwKKyAgICAgICAgQ29uZmlnRmlsdGVyTGluZXNFbnZpcm9ubWVudE1peGluLAorICAgICAgICBQdXNoZXJEb21haW5FbnZpcm9ubWVudE1peGluLAorICAgICAgICBDb25maWdPcHRpb25zRW52aXJvbm1lbnRNaXhpbiwKKyAgICAgICAgXQorICAgIGVudmlyb25tZW50X2t3ID0geworICAgICAgICAnb3NlbnYnIDogb3NlbnYsCisgICAgICAgICdjb25maWcnIDogY29uZmlnLAorICAgICAgICB9CisKKyAgICBpZiBub3QgZW52OgorICAgICAgICBlbnYgPSBjb25maWcuZ2V0KCdlbnZpcm9ubWVudCcpCisKKyAgICBpZiBub3QgZW52OgorICAgICAgICBpZiAnR0xfVVNFUicgaW4gb3NlbnYgYW5kICdHTF9SRVBPJyBpbiBvc2VudjoKKyAgICAgICAgICAgIGVudiA9ICdnaXRvbGl0ZScKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudiA9ICdnZW5lcmljJworCisgICAgZW52aXJvbm1lbnRfbWl4aW5zLmFwcGVuZChLTk9XTl9FTlZJUk9OTUVOVFNbZW52XSkKKworICAgIGlmIHJlY2lwaWVudHM6CisgICAgICAgIGVudmlyb25tZW50X21peGlucy5pbnNlcnQoMCwgU3RhdGljUmVjaXBpZW50c0Vudmlyb25tZW50TWl4aW4pCisgICAgICAgIGVudmlyb25tZW50X2t3WydyZWZjaGFuZ2VfcmVjaXBpZW50cyddID0gcmVjaXBpZW50cworICAgICAgICBlbnZpcm9ubWVudF9rd1snYW5ub3VuY2VfcmVjaXBpZW50cyddID0gcmVjaXBpZW50cworICAgICAgICBlbnZpcm9ubWVudF9rd1sncmV2aXNpb25fcmVjaXBpZW50cyddID0gcmVjaXBpZW50cworICAgIGVsc2U6CisgICAgICAgIGVudmlyb25tZW50X21peGlucy5pbnNlcnQoMCwgQ29uZmlnUmVjaXBpZW50c0Vudmlyb25tZW50TWl4aW4pCisKKyAgICBlbnZpcm9ubWVudF9rbGFzcyA9IHR5cGUoCisgICAgICAgICdFZmZlY3RpdmVFbnZpcm9ubWVudCcsCisgICAgICAgIHR1cGxlKGVudmlyb25tZW50X21peGlucykgKyAoRW52aXJvbm1lbnQsKSwKKyAgICAgICAge30sCisgICAgICAgICkKKyAgICByZXR1cm4gZW52aXJvbm1lbnRfa2xhc3MoKiplbnZpcm9ubWVudF9rdykKKworCitkZWYgbWFpbihhcmdzKToKKyAgICBwYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoCisgICAgICAgIGRlc2NyaXB0aW9uPV9fZG9jX18sCisgICAgICAgIHVzYWdlPSclcHJvZyBbT1BUSU9OU11cbiAgIG9yOiAlcHJvZyBbT1BUSU9OU10gUkVGTkFNRSBPTERSRVYgTkVXUkVWJywKKyAgICAgICAgKQorCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLWVudmlyb25tZW50JywgJy0tZW52JywgYWN0aW9uPSdzdG9yZScsIHR5cGU9J2Nob2ljZScsCisgICAgICAgIGNob2ljZXM9WydnZW5lcmljJywgJ2dpdG9saXRlJ10sIGRlZmF1bHQ9Tm9uZSwKKyAgICAgICAgaGVscD0oCisgICAgICAgICAgICAnQ2hvb3NlIHR5cGUgb2YgZW52aXJvbm1lbnQgaXMgaW4gdXNlLiAgRGVmYXVsdCBpcyB0YWtlbiBmcm9tICcKKyAgICAgICAgICAgICdtdWx0aW1haWxob29rLmVudmlyb25tZW50IGlmIHNldDsgb3RoZXJ3aXNlICJnZW5lcmljIi4nCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLXN0ZG91dCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9J091dHB1dCBlbWFpbHMgdG8gc3Rkb3V0IHJhdGhlciB0aGFuIHNlbmRpbmcgdGhlbS4nLAorICAgICAgICApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLXJlY2lwaWVudHMnLCBhY3Rpb249J3N0b3JlJywgZGVmYXVsdD1Ob25lLAorICAgICAgICBoZWxwPSdTZXQgbGlzdCBvZiBlbWFpbCByZWNpcGllbnRzIGZvciBhbGwgdHlwZXMgb2YgZW1haWxzLicsCisgICAgICAgICkKKyAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICAgICAgJy0tc2hvdy1lbnYnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICBoZWxwPSgKKyAgICAgICAgICAgICdXcml0ZSB0byBzdGRlcnIgdGhlIHZhbHVlcyBkZXRlcm1pbmVkIGZvciB0aGUgZW52aXJvbm1lbnQgJworICAgICAgICAgICAgJyhpbnRlbmRlZCBmb3IgZGVidWdnaW5nIHB1cnBvc2VzKS4nCisgICAgICAgICAgICApLAorICAgICAgICApCisKKyAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorCisgICAgY29uZmlnID0gQ29uZmlnKCdtdWx0aW1haWxob29rJykKKworICAgIHRyeToKKyAgICAgICAgZW52aXJvbm1lbnQgPSBjaG9vc2VfZW52aXJvbm1lbnQoCisgICAgICAgICAgICBjb25maWcsIG9zZW52PW9zLmVudmlyb24sCisgICAgICAgICAgICBlbnY9b3B0aW9ucy5lbnZpcm9ubWVudCwKKyAgICAgICAgICAgIHJlY2lwaWVudHM9b3B0aW9ucy5yZWNpcGllbnRzLAorICAgICAgICAgICAgKQorCisgICAgICAgIGlmIG9wdGlvbnMuc2hvd19lbnY6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdFbnZpcm9ubWVudCB2YWx1ZXM6XG4nKQorICAgICAgICAgICAgZm9yIChrLHYpIGluIHNvcnRlZChlbnZpcm9ubWVudC5nZXRfdmFsdWVzKCkuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnICAgICVzIDogJXJcbicgJSAoayx2KSkKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ1xuJykKKworICAgICAgICBpZiBvcHRpb25zLnN0ZG91dDoKKyAgICAgICAgICAgIG1haWxlciA9IE91dHB1dE1haWxlcihzeXMuc3Rkb3V0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWFpbGVyID0gY2hvb3NlX21haWxlcihjb25maWcsIGVudmlyb25tZW50KQorCisgICAgICAgICMgRHVhbCBtb2RlOiBpZiBhcmd1bWVudHMgd2VyZSBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgcnVuCisgICAgICAgICMgbGlrZSBhbiB1cGRhdGUgaG9vazsgb3RoZXJ3aXNlLCBydW4gYXMgYSBwb3N0LXJlY2VpdmUgaG9vay4KKyAgICAgICAgaWYgYXJnczoKKyAgICAgICAgICAgIGlmIGxlbihhcmdzKSAhPSAzOgorICAgICAgICAgICAgICAgIHBhcnNlci5lcnJvcignTmVlZCB6ZXJvIG9yIHRocmVlIG5vbi1vcHRpb24gYXJndW1lbnRzJykKKyAgICAgICAgICAgIChyZWZuYW1lLCBvbGRyZXYsIG5ld3JldikgPSBhcmdzCisgICAgICAgICAgICBydW5fYXNfdXBkYXRlX2hvb2soZW52aXJvbm1lbnQsIG1haWxlciwgcmVmbmFtZSwgb2xkcmV2LCBuZXdyZXYpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBydW5fYXNfcG9zdF9yZWNlaXZlX2hvb2soZW52aXJvbm1lbnQsIG1haWxlcikKKyAgICBleGNlcHQgQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiwgZToKKyAgICAgICAgc3lzLmV4aXQoc3RyKGUpKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbihzeXMuYXJndlsxOl0pCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL211bHRpbWFpbC9taWdyYXRlLW1haWxob29rLWNvbmZpZyBiL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL21pZ3JhdGUtbWFpbGhvb2stY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA0ZWVhYWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL2hvb2tzL211bHRpbWFpbC9taWdyYXRlLW1haWxob29rLWNvbmZpZwpAQCAtMCwwICsxLDI2OSBAQAorIyEgL3Vzci9iaW4vZW52IHB5dGhvbjIKKworIiIiTWlncmF0ZSBhIHBvc3QtcmVjZWl2ZS1lbWFpbCBjb25maWd1cmF0aW9uIHRvIGJlIHVzYWJsZSB3aXRoIGdpdF9tdWx0aW1haWwucHkuCisKK1NlZSBSRUFETUUubWlncmF0ZS1mcm9tLXBvc3QtcmVjZWl2ZS1lbWFpbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworIiIiCisKK2ltcG9ydCBzeXMKK2ltcG9ydCBvcHRwYXJzZQorCitmcm9tIGdpdF9tdWx0aW1haWwgaW1wb3J0IENvbW1hbmRFcnJvcgorZnJvbSBnaXRfbXVsdGltYWlsIGltcG9ydCBDb25maWcKK2Zyb20gZ2l0X211bHRpbWFpbCBpbXBvcnQgcmVhZF9vdXRwdXQKKworCitPTERfTkFNRVMgPSBbCisgICAgJ21haWxpbmdsaXN0JywKKyAgICAnYW5ub3VuY2VsaXN0JywKKyAgICAnZW52ZWxvcGVzZW5kZXInLAorICAgICdlbWFpbHByZWZpeCcsCisgICAgJ3Nob3dyZXYnLAorICAgICdlbWFpbG1heGxpbmVzJywKKyAgICAnZGlmZm9wdHMnLAorICAgIF0KKworTkVXX05BTUVTID0gWworICAgICdlbnZpcm9ubWVudCcsCisgICAgJ3JlcG9uYW1lJywKKyAgICAnbWFpbGluZ2xpc3QnLAorICAgICdyZWZjaGFuZ2VsaXN0JywKKyAgICAnY29tbWl0bGlzdCcsCisgICAgJ2Fubm91bmNlbGlzdCcsCisgICAgJ2Fubm91bmNlc2hvcnRsb2cnLAorICAgICdlbnZlbG9wZXNlbmRlcicsCisgICAgJ2FkbWluaXN0cmF0b3InLAorICAgICdlbWFpbHByZWZpeCcsCisgICAgJ2VtYWlsbWF4bGluZXMnLAorICAgICdkaWZmb3B0cycsCisgICAgJ2VtYWlsZG9tYWluJywKKyAgICBdCisKKworSU5GTyA9ICIiIlwKKworU1VDQ0VTUyEKKworWW91ciBwb3N0LXJlY2VpdmUtZW1haWwgY29uZmlndXJhdGlvbiBoYXMgYmVlbiBjb252ZXJ0ZWQgdG8KK2dpdC1tdWx0aW1haWwgZm9ybWF0LiAgUGxlYXNlIHNlZSBSRUFETUUgYW5kCitSRUFETUUubWlncmF0ZS1mcm9tLXBvc3QtcmVjZWl2ZS1lbWFpbCB0byBsZWFybiBhYm91dCBvdGhlcgorZ2l0LW11bHRpbWFpbCBjb25maWd1cmF0aW9uIHBvc3NpYmlsaXRpZXMuCisKK0ZvciBleGFtcGxlLCBnaXQtbXVsdGltYWlsIGhhcyB0aGUgZm9sbG93aW5nIG5ldyBvcHRpb25zIHdpdGggbm8KK2VxdWl2YWxlbnQgaW4gcG9zdC1yZWNlaXZlLWVtYWlsLiAgWW91IG1pZ2h0IHdhbnQgdG8gcmVhZCBhYm91dCB0aGVtCit0byBzZWUgaWYgdGhleSB3b3VsZCBiZSB1c2VmdWwgaW4geW91ciBzaXR1YXRpb246CisKKyIiIgorCisKK2RlZiBfY2hlY2tfb2xkX2NvbmZpZ19leGlzdHMob2xkKToKKyAgICAiIiJDaGVjayB0aGF0IGF0IGxlYXN0IG9uZSBvbGQgY29uZmlndXJhdGlvbiB2YWx1ZSBpcyBzZXQuIiIiCisKKyAgICBmb3IgbmFtZSBpbiBPTERfTkFNRVM6CisgICAgICAgIGlmIG9sZC5oYXNfa2V5KG5hbWUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgIHJldHVybiBGYWxzZQorCisKK2RlZiBfY2hlY2tfbmV3X2NvbmZpZ19jbGVhcihuZXcpOgorICAgICIiIkNoZWNrIHRoYXQgbm9uZSBvZiB0aGUgbmV3IGNvbmZpZ3VyYXRpb24gbmFtZXMgYXJlIHNldC4iIiIKKworICAgIHJldHZhbCA9IFRydWUKKyAgICBmb3IgbmFtZSBpbiBORVdfTkFNRVM6CisgICAgICAgIGlmIG5ldy5oYXNfa2V5KG5hbWUpOgorICAgICAgICAgICAgaWYgcmV0dmFsOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJ0lORk86IFRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiB2YWx1ZXMgYWxyZWFkeSBleGlzdDpcblxuJykKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJyAgICAiJXMuJXMiXG4nICUgKG5ldy5zZWN0aW9uLCBuYW1lKSkKKyAgICAgICAgICAgIHJldHZhbCA9IEZhbHNlCisKKyAgICByZXR1cm4gcmV0dmFsCisKKworZGVmIGVyYXNlX3ZhbHVlcyhjb25maWcsIG5hbWVzKToKKyAgICBmb3IgbmFtZSBpbiBuYW1lczoKKyAgICAgICAgaWYgY29uZmlnLmhhc19rZXkobmFtZSk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnLi4udW5zZXR0aW5nICIlcy4lcyJcbicgJSAoY29uZmlnLnNlY3Rpb24sIG5hbWUpKQorICAgICAgICAgICAgICAgIGNvbmZpZy51bnNldF9hbGwobmFtZSkKKyAgICAgICAgICAgIGV4Y2VwdCBDb21tYW5kRXJyb3I6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAgICAgICAgJ1xuV0FSTklORzogY291bGQgbm90IHVuc2V0ICIlcy4lcyIuICAnCisgICAgICAgICAgICAgICAgICAgICdQZXJoYXBzIGl0IGlzIG5vdCBzZXQgYXQgdGhlIC0tbG9jYWwgbGV2ZWw/XG5cbicKKyAgICAgICAgICAgICAgICAgICAgJSAoY29uZmlnLnNlY3Rpb24sIG5hbWUpCisgICAgICAgICAgICAgICAgICAgICkKKworCitkZWYgaXNfc2VjdGlvbl9lbXB0eShzZWN0aW9uLCBsb2NhbCk6CisgICAgIiIiUmV0dXJuIFRydWUgaWZmIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiBzZWN0aW9uIGlzIGVtcHR5LgorCisgICAgSWZmIGxvY2FsIGlzIFRydWUsIHVzZSB0aGUgLS1sb2NhbCBvcHRpb24gd2hlbiBpbnZva2luZyAnZ2l0CisgICAgY29uZmlnJy4iIiIKKworICAgIGlmIGxvY2FsOgorICAgICAgICBsb2NhbF9vcHRpb24gPSBbJy0tbG9jYWwnXQorICAgIGVsc2U6CisgICAgICAgIGxvY2FsX29wdGlvbiA9IFtdCisKKyAgICB0cnk6CisgICAgICAgIHJlYWRfb3V0cHV0KAorICAgICAgICAgICAgWydnaXQnLCAnY29uZmlnJ10KKyAgICAgICAgICAgICsgbG9jYWxfb3B0aW9uCisgICAgICAgICAgICArIFsnLS1nZXQtcmVnZXhwJywgJ14lc1wuJyAlIChzZWN0aW9uLCldCisgICAgICAgICAgICApCisgICAgZXhjZXB0IENvbW1hbmRFcnJvciwgZToKKyAgICAgICAgaWYgZS5yZXRjb2RlID09IDE6CisgICAgICAgICAgICAjIFRoaXMgbWVhbnMgdGhhdCBubyBzZXR0aW5ncyB3ZXJlIGZvdW5kLgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisKKworZGVmIHJlbW92ZV9zZWN0aW9uX2lmX2VtcHR5KHNlY3Rpb24pOgorICAgICIiIklmIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbiBzZWN0aW9uIGlzIGVtcHR5LCBkZWxldGUgaXQuIiIiCisKKyAgICB0cnk6CisgICAgICAgIGVtcHR5ID0gaXNfc2VjdGlvbl9lbXB0eShzZWN0aW9uLCBsb2NhbD1UcnVlKQorICAgIGV4Y2VwdCBDb21tYW5kRXJyb3I6CisgICAgICAgICMgT2xkZXIgdmVyc2lvbnMgb2YgZ2l0IGRvIG5vdCBzdXBwb3J0IHRoZSAtLWxvY2FsIG9wdGlvbiwgc28KKyAgICAgICAgIyBpZiB0aGUgZmlyc3QgYXR0ZW1wdCBmYWlscywgdHJ5IHdpdGhvdXQgLS1sb2NhbC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZW1wdHkgPSBpc19zZWN0aW9uX2VtcHR5KHNlY3Rpb24sIGxvY2FsPUZhbHNlKQorICAgICAgICBleGNlcHQgQ29tbWFuZEVycm9yOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAgICAnXG5JTkZPOiBJZiBjb25maWd1cmF0aW9uIHNlY3Rpb24gIiVzLioiIGlzIGVtcHR5LCB5b3UgbWlnaHQgd2FudCAnCisgICAgICAgICAgICAgICAgJ3RvIGRlbGV0ZSBpdC5cblxuJworICAgICAgICAgICAgICAgICUgKHNlY3Rpb24sKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgaWYgZW1wdHk6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJy4uLnJlbW92aW5nIHNlY3Rpb24gIiVzLioiXG4nICUgKHNlY3Rpb24sKSkKKyAgICAgICAgcmVhZF9vdXRwdXQoWydnaXQnLCAnY29uZmlnJywgJy0tcmVtb3ZlLXNlY3Rpb24nLCBzZWN0aW9uXSkKKyAgICBlbHNlOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgJ1xuSU5GTzogQ29uZmlndXJhdGlvbiBzZWN0aW9uICIlcy4qIiBzdGlsbCBoYXMgY29udGVudHMuICAnCisgICAgICAgICAgICAnSXQgd2lsbCBub3QgYmUgZGVsZXRlZC5cblxuJworICAgICAgICAgICAgJSAoc2VjdGlvbiwpCisgICAgICAgICAgICApCisKKworZGVmIG1pZ3JhdGVfY29uZmlnKHN0cmljdD1GYWxzZSwgcmV0YWluPUZhbHNlLCBvdmVyd3JpdGU9RmFsc2UpOgorICAgIG9sZCA9IENvbmZpZygnaG9va3MnKQorICAgIG5ldyA9IENvbmZpZygnbXVsdGltYWlsaG9vaycpCisgICAgaWYgbm90IF9jaGVja19vbGRfY29uZmlnX2V4aXN0cyhvbGQpOgorICAgICAgICBzeXMuZXhpdCgKKyAgICAgICAgICAgICdZb3VyIHJlcG9zaXRvcnkgaGFzIG5vIHBvc3QtcmVjZWl2ZS1lbWFpbCBjb25maWd1cmF0aW9uLiAgJworICAgICAgICAgICAgJ05vdGhpbmcgdG8gZG8uJworICAgICAgICAgICAgKQorICAgIGlmIG5vdCBfY2hlY2tfbmV3X2NvbmZpZ19jbGVhcihuZXcpOgorICAgICAgICBpZiBvdmVyd3JpdGU6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdcbldBUk5JTkc6IEVyYXNpbmcgdGhlIGFib3ZlIHZhbHVlcy4uLlxuXG4nKQorICAgICAgICAgICAgZXJhc2VfdmFsdWVzKG5ldywgTkVXX05BTUVTKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc3lzLmV4aXQoCisgICAgICAgICAgICAgICAgJ1xuRVJST1I6IFJlZnVzaW5nIHRvIG92ZXJ3cml0ZSBleGlzdGluZyB2YWx1ZXMuICBVc2UgdGhlIC0tb3ZlcndyaXRlXG4nCisgICAgICAgICAgICAgICAgJ29wdGlvbiB0byBjb250aW51ZSBhbnl3YXkuJworICAgICAgICAgICAgICAgICkKKworICAgIG5hbWUgPSAnc2hvd3JldicKKyAgICBpZiBvbGQuaGFzX2tleShuYW1lKToKKyAgICAgICAgbXNnID0gJ2dpdC1tdWx0aW1haWwgZG9lcyBub3Qgc3VwcG9ydCAiJXMuJXMiJyAlIChvbGQuc2VjdGlvbiwgbmFtZSwpCisgICAgICAgIGlmIHN0cmljdDoKKyAgICAgICAgICAgIHN5cy5leGl0KAorICAgICAgICAgICAgICAgICdFUlJPUjogJXMuXG4nCisgICAgICAgICAgICAgICAgJ1BsZWFzZSB1bnNldCB0aGF0IHZhbHVlIHRoZW4gdHJ5IGFnYWluLCBvciBydW4gd2l0aG91dCAtLXN0cmljdC4nCisgICAgICAgICAgICAgICAgJSAobXNnLCkKKyAgICAgICAgICAgICAgICApCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdcbldBUk5JTkc6ICVzIChpZ25vcmluZykuXG5cbicgJSAobXNnLCkpCisKKyAgICBmb3IgbmFtZSBpbiBbJ21haWxpbmdsaXN0JywgJ2Fubm91bmNlbGlzdCddOgorICAgICAgICBpZiBvbGQuaGFzX2tleShuYW1lKToKKyAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICAgICAgICAgJy4uLmNvcHlpbmcgIiVzLiVzIiB0byAiJXMuJXMiXG4nICUgKG9sZC5zZWN0aW9uLCBuYW1lLCBuZXcuc2VjdGlvbiwgbmFtZSkKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICBuZXcuc2V0X3JlY2lwaWVudHMobmFtZSwgb2xkLmdldF9yZWNpcGllbnRzKG5hbWUpKQorCisgICAgaWYgc3RyaWN0OgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKAorICAgICAgICAgICAgJy4uLnNldHRpbmcgIiVzLmNvbW1pdGxpc3QiIHRvIHRoZSBlbXB0eSBzdHJpbmdcbicgJSAobmV3LnNlY3Rpb24sKQorICAgICAgICAgICAgKQorICAgICAgICBuZXcuc2V0X3JlY2lwaWVudHMoJ2NvbW1pdGxpc3QnLCAnJykKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICcuLi5zZXR0aW5nICIlcy5hbm5vdW5jZXNob3J0bG9nIiB0byAidHJ1ZSJcbicgJSAobmV3LnNlY3Rpb24sKQorICAgICAgICAgICAgKQorICAgICAgICBuZXcuc2V0KCdhbm5vdW5jZXNob3J0bG9nJywgJ3RydWUnKQorCisgICAgZm9yIG5hbWUgaW4gWydlbnZlbG9wZXNlbmRlcicsICdlbWFpbG1heGxpbmVzJywgJ2RpZmZvcHRzJ106CisgICAgICAgIGlmIG9sZC5oYXNfa2V5KG5hbWUpOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKKyAgICAgICAgICAgICAgICAnLi4uY29weWluZyAiJXMuJXMiIHRvICIlcy4lcyJcbicgJSAob2xkLnNlY3Rpb24sIG5hbWUsIG5ldy5zZWN0aW9uLCBuYW1lKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgIG5ldy5zZXQobmFtZSwgb2xkLmdldChuYW1lKSkKKworICAgIG5hbWUgPSAnZW1haWxwcmVmaXgnCisgICAgaWYgb2xkLmhhc19rZXkobmFtZSk6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICAgICAnLi4uY29weWluZyAiJXMuJXMiIHRvICIlcy4lcyJcbicgJSAob2xkLnNlY3Rpb24sIG5hbWUsIG5ldy5zZWN0aW9uLCBuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICBuZXcuc2V0KG5hbWUsIG9sZC5nZXQobmFtZSkpCisgICAgZWxpZiBzdHJpY3Q6CisgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoCisgICAgICAgICAgICAnLi4uc2V0dGluZyAiJXMuJXMiIHRvICJbU0NNXSIgdG8gcHJlc2VydmUgb2xkIHN1YmplY3QgbGluZXNcbicKKyAgICAgICAgICAgICUgKG5ldy5zZWN0aW9uLCBuYW1lKQorICAgICAgICAgICAgKQorICAgICAgICBuZXcuc2V0KG5hbWUsICdbU0NNXScpCisKKyAgICBpZiBub3QgcmV0YWluOgorICAgICAgICBlcmFzZV92YWx1ZXMob2xkLCBPTERfTkFNRVMpCisgICAgICAgIHJlbW92ZV9zZWN0aW9uX2lmX2VtcHR5KG9sZC5zZWN0aW9uKQorCisgICAgc3lzLnN0ZGVyci53cml0ZShJTkZPKQorICAgIGZvciBuYW1lIGluIE5FV19OQU1FUzoKKyAgICAgICAgaWYgbmFtZSBub3QgaW4gT0xEX05BTUVTOgorICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnICAgICIlcy4lcyJcbicgJSAobmV3LnNlY3Rpb24sIG5hbWUsKSkKKyAgICBzeXMuc3RkZXJyLndyaXRlKCdcbicpCisKKworZGVmIG1haW4oYXJncyk6CisgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKAorICAgICAgICBkZXNjcmlwdGlvbj1fX2RvY19fLAorICAgICAgICB1c2FnZT0nJXByb2cgW09QVElPTlNdJywKKyAgICAgICAgKQorCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLXN0cmljdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9KAorICAgICAgICAgICAgJ1NsYXZpc2hseSBjb25maWd1cmUgZ2l0LW11bHRpbWFpbCBhcyBjbG9zZWx5IGFzIHBvc3NpYmxlIHRvICcKKyAgICAgICAgICAgICd0aGUgcG9zdC1yZWNlaXZlLWVtYWlsIGNvbmZpZ3VyYXRpb24uICBEZWZhdWx0IGlzIHRvIHR1cm4gJworICAgICAgICAgICAgJ29uIHNvbWUgbmV3IGZlYXR1cmVzIHRoYXQgaGF2ZSBubyBlcXVpdmFsZW50IGluIHBvc3QtcmVjZWl2ZS1lbWFpbC4nCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLXJldGFpbicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9KAorICAgICAgICAgICAgJ1JldGFpbiB0aGUgcG9zdC1yZWNlaXZlLWVtYWlsIGNvbmZpZ3VyYXRpb24gdmFsdWVzLiAgJworICAgICAgICAgICAgJ0RlZmF1bHQgaXMgdG8gZGVsZXRlIHRoZW0gYWZ0ZXIgdGhlIG5ldyB2YWx1ZXMgYXJlIHNldC4nCisgICAgICAgICAgICApLAorICAgICAgICApCisgICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgICAgICctLW92ZXJ3cml0ZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgIGhlbHA9KAorICAgICAgICAgICAgJ092ZXJ3cml0ZSBhbnkgZXhpc3RpbmcgZ2l0LW11bHRpbWFpbCBjb25maWd1cmF0aW9uIHNldHRpbmdzLiAgJworICAgICAgICAgICAgJ0RlZmF1bHQgaXMgdG8gYWJvcnQgaWYgc3VjaCBzZXR0aW5ncyBhbHJlYWR5IGV4aXN0LicKKyAgICAgICAgICAgICksCisgICAgICAgICkKKworICAgIChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisKKyAgICBpZiBhcmdzOgorICAgICAgICBwYXJzZXIuZXJyb3IoJ1VuZXhwZWN0ZWQgYXJndW1lbnRzOiAlcycgJSAoJyAnLmpvaW4oYXJncyksKSkKKworICAgIG1pZ3JhdGVfY29uZmlnKHN0cmljdD1vcHRpb25zLnN0cmljdCwgcmV0YWluPW9wdGlvbnMucmV0YWluLCBvdmVyd3JpdGU9b3B0aW9ucy5vdmVyd3JpdGUpCisKKworbWFpbihzeXMuYXJndlsxOl0pCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL211bHRpbWFpbC9wb3N0LXJlY2VpdmUgYi9jb250cmliL2hvb2tzL211bHRpbWFpbC9wb3N0LXJlY2VpdmUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTNlYmI0MwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL3Bvc3QtcmVjZWl2ZQpAQCAtMCwwICsxLDkwIEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMgorCisiIiJFeGFtcGxlIHBvc3QtcmVjZWl2ZSBob29rIGJhc2VkIG9uIGdpdC1tdWx0aW1haWwuCisKK1RoaXMgc2NyaXB0IGlzIGEgc2ltcGxlIGV4YW1wbGUgb2YgYSBwb3N0LXJlY2VpdmUgaG9vayBpbXBsZW1lbnRlZAordXNpbmcgZ2l0X211bHRpbWFpbC5weSBhcyBhIFB5dGhvbiBtb2R1bGUuICBJdCBpcyBpbnRlbmRlZCB0byBiZQorY3VzdG9taXplZCBiZWZvcmUgdXNlOyBzZWUgdGhlIGNvbW1lbnRzIGluIHRoZSBzY3JpcHQgdG8gaGVscCB5b3UgZ2V0CitzdGFydGVkLgorCitJdCBpcyBwb3NzaWJsZSB0byB1c2UgZ2l0X211bHRpbWFpbC5weSBpdHNlbGYgYXMgYSBwb3N0LXJlY2VpdmUgb3IKK3VwZGF0ZSBob29rLCBjb25maWd1cmVkIHZpYSBnaXQgY29uZmlnIHNldHRpbmdzIGFuZC9vciBjb21tYW5kLWxpbmUKK3BhcmFtZXRlcnMuICBCdXQgZm9yIG1vcmUgZmxleGliaWxpdHksIGl0IGNhbiBhbHNvIGJlIGltcG9ydGVkIGFzIGEKK1B5dGhvbiBtb2R1bGUgYnkgYSBjdXN0b20gcG9zdC1yZWNlaXZlIHNjcmlwdCBhcyBkb25lIGhlcmUuICBUaGUKK2xhdHRlciBoYXMgdGhlIGZvbGxvd2luZyBhZHZhbnRhZ2VzOgorCisqIFRoZSB0b29sJ3MgYmVoYXZpb3IgY2FuIGJlIGN1c3RvbWl6ZWQgdXNpbmcgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlLAorICB3aXRob3V0IGhhdmluZyB0byBlZGl0IGdpdF9tdWx0aW1haWwucHkuCisKKyogQ29uZmlndXJhdGlvbiBzZXR0aW5ncyBjYW4gYmUgcmVhZCBmcm9tIG90aGVyIHNvdXJjZXM7IGZvciBleGFtcGxlLAorICB1c2VyIG5hbWVzIGFuZCBlbWFpbCBhZGRyZXNzZXMgY291bGQgYmUgcmVhZCBmcm9tIExEQVAgb3IgZnJvbSBhCisgIGRhdGFiYXNlLiAgT3IgdGhlIHNldHRpbmdzIGNhbiBldmVuIGJlIGhhcmRjb2RlZCBpbiB0aGUgaW1wb3J0aW5nCisgIFB5dGhvbiBzY3JpcHQsIGlmIHRoaXMgaXMgcHJlZmVycmVkLgorCitUaGlzIHNjcmlwdCBpcyBhIHZlcnkgYmFzaWMgZXhhbXBsZSBvZiBob3cgdG8gdXNlIGdpdF9tdWx0aW1haWwucHkgYXMKK2EgbW9kdWxlLiAgVGhlIGNvbW1lbnRzIGJlbG93IGV4cGxhaW4gc29tZSBvZiB0aGUgcG9pbnRzIGF0IHdoaWNoIHRoZQorc2NyaXB0J3MgYmVoYXZpb3IgY291bGQgYmUgY2hhbmdlZCBvciBjdXN0b21pemVkLgorCisiIiIKKworaW1wb3J0IHN5cworaW1wb3J0IG9zCisKKyMgSWYgbmVjZXNzYXJ5LCBhZGQgdGhlIHBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nCisjIGdpdF9tdWx0aW1haWwucHkgdG8gdGhlIFB5dGhvbiBwYXRoIGFzIGZvbGxvd3MuICAoVGhpcyBpcyBub3QKKyMgbmVjZXNzYXJ5IGlmIGdpdF9tdWx0aW1haWwucHkgaXMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMKKyMgc2NyaXB0KToKKworI0xJQkRJUiA9ICdwYXRoL3RvL2RpcmVjdG9yeS9jb250YWluaW5nL21vZHVsZScKKyNzeXMucGF0aC5pbnNlcnQoMCwgTElCRElSKQorCitpbXBvcnQgZ2l0X211bHRpbWFpbAorCisKKyMgSXQgaXMgcG9zc2libGUgdG8gbW9kaWZ5IHRoZSBvdXRwdXQgdGVtcGxhdGVzIGhlcmU7IGUuZy46CisKKyNnaXRfbXVsdGltYWlsLkZPT1RFUl9URU1QTEFURSA9ICIiIlwKKyMKKyMtLSBcblwKKyNUaGlzIGVtYWlsIHdhcyBnZW5lcmF0ZWQgYnkgdGhlIHdvbmRlcmZ1bCBnaXQtbXVsdGltYWlsIHRvb2wuCisjIiIiCisKKworIyBTcGVjaWZ5IHdoaWNoICJnaXQgY29uZmlnIiBzZWN0aW9uIGNvbnRhaW5zIHRoZSBjb25maWd1cmF0aW9uIGZvcgorIyBnaXQtbXVsdGltYWlsOgorY29uZmlnID0gZ2l0X211bHRpbWFpbC5Db25maWcoJ211bHRpbWFpbGhvb2snKQorCisKKyMgU2VsZWN0IHRoZSB0eXBlIG9mIGVudmlyb25tZW50OgorZW52aXJvbm1lbnQgPSBnaXRfbXVsdGltYWlsLkdlbmVyaWNFbnZpcm9ubWVudChjb25maWc9Y29uZmlnKQorI2Vudmlyb25tZW50ID0gZ2l0X211bHRpbWFpbC5HaXRvbGl0ZUVudmlyb25tZW50KGNvbmZpZz1jb25maWcpCisKKworIyBDaG9vc2UgdGhlIG1ldGhvZCBvZiBzZW5kaW5nIGVtYWlscyBiYXNlZCBvbiB0aGUgZ2l0IGNvbmZpZzoKK21haWxlciA9IGdpdF9tdWx0aW1haWwuY2hvb3NlX21haWxlcihjb25maWcsIGVudmlyb25tZW50KQorCisjIEFsdGVybmF0aXZlbHksIHlvdSBtYXkgaGFyZGNvZGUgdGhlIG1haWxlciB1c2luZyBjb2RlIGxpa2Ugb25lIG9mCisjIHRoZSBmb2xsb3dpbmc6CisKKyMgVXNlICIvdXNyL3NiaW4vc2VuZG1haWwgLXQiIHRvIHNlbmQgZW1haWxzLiAgVGhlIGVudmVsb3Blc2VuZGVyCisjIGFyZ3VtZW50IGlzIG9wdGlvbmFsOgorI21haWxlciA9IGdpdF9tdWx0aW1haWwuU2VuZE1haWxlcigKKyMgICAgY29tbWFuZD1bJy91c3Ivc2Jpbi9zZW5kbWFpbCcsICctdCddLAorIyAgICBlbnZlbG9wZXNlbmRlcj0nZ2l0LXJlcG9AZXhhbXBsZS5jb20nLAorIyAgICApCisKKyMgVXNlIFB5dGhvbidzIHNtdHBsaWIgdG8gc2VuZCBlbWFpbHMuICBCb3RoIGFyZ3VtZW50cyBhcmUgcmVxdWlyZWQuCisjbWFpbGVyID0gZ2l0X211bHRpbWFpbC5TTVRQTWFpbGVyKAorIyAgICBlbnZlbG9wZXNlbmRlcj0nZ2l0LXJlcG9AZXhhbXBsZS5jb20nLAorIyAgICAjIFRoZSBzbXRwc2VydmVyIGFyZ3VtZW50IGNhbiBhbHNvIGluY2x1ZGUgYSBwb3J0IG51bWJlcjsgZS5nLiwKKyMgICAgIyAgICAgc210cHNlcnZlcj0nbWFpbC5leGFtcGxlLmNvbToyNScKKyMgICAgc210cHNlcnZlcj0nbWFpbC5leGFtcGxlLmNvbScsCisjICAgICkKKworIyBPdXRwdXRNYWlsZXIgaXMgaW50ZW5kZWQgb25seSBmb3IgdGVzdGluZzsgaXQgd3JpdGVzIHRoZSBlbWFpbHMgdG8KKyMgdGhlIHNwZWNpZmllZCBmaWxlIHN0cmVhbS4KKyNtYWlsZXIgPSBnaXRfbXVsdGltYWlsLk91dHB1dE1haWxlcihzeXMuc3Rkb3V0KQorCisKKyMgUmVhZCBjaGFuZ2VzIGZyb20gc3RkaW4gYW5kIHNlbmQgbm90aWZpY2F0aW9uIGVtYWlsczoKK2dpdF9tdWx0aW1haWwucnVuX2FzX3Bvc3RfcmVjZWl2ZV9ob29rKGVudmlyb25tZW50LCBtYWlsZXIpCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL3Bvc3QtcmVjZWl2ZS1lbWFpbCBiL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCmluZGV4IDBlNWI3MmQuLjE1MzExNTAgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCisrKyBiL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCkBAIC0yLDEwICsyLDE5IEBACiAjCiAjIENvcHlyaWdodCAoYykgMjAwNyBBbmR5IFBhcmtpbnMKICMKLSMgQW4gZXhhbXBsZSBob29rIHNjcmlwdCB0byBtYWlsIG91dCBjb21taXQgdXBkYXRlIGluZm9ybWF0aW9uLiAgVGhpcyBob29rCi0jIHNlbmRzIGVtYWlscyBsaXN0aW5nIG5ldyByZXZpc2lvbnMgdG8gdGhlIHJlcG9zaXRvcnkgaW50cm9kdWNlZCBieSB0aGUKLSMgY2hhbmdlIGJlaW5nIHJlcG9ydGVkLiAgVGhlIHJ1bGUgaXMgdGhhdCAoZm9yIGJyYW5jaCB1cGRhdGVzKSBlYWNoIGNvbW1pdAotIyB3aWxsIGFwcGVhciBvbiBvbmUgZW1haWwgYW5kIG9uZSBlbWFpbCBvbmx5LgorIyBBbiBleGFtcGxlIGhvb2sgc2NyaXB0IHRvIG1haWwgb3V0IGNvbW1pdCB1cGRhdGUgaW5mb3JtYXRpb24uCisjCisjIE5PVEU6IFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1bmRlciBhY3RpdmUgZGV2ZWxvcG1lbnQuICBUaGVyZQorIyBpcyBhbm90aGVyIHNjcmlwdCwgZ2l0LW11bHRpbWFpbCwgd2hpY2ggaXMgbW9yZSBjYXBhYmxlIGFuZAorIyBjb25maWd1cmFibGUgYW5kIGlzIGxhcmdlbHkgYmFja3dhcmRzLWNvbXBhdGlibGUgd2l0aCB0aGlzIHNjcmlwdDsKKyMgcGxlYXNlIHNlZSAiY29udHJpYi9ob29rcy9tdWx0aW1haWwvIi4gIEZvciBpbnN0cnVjdGlvbnMgb24gaG93IHRvCisjIG1pZ3JhdGUgZnJvbSBwb3N0LXJlY2VpdmUtZW1haWwgdG8gZ2l0LW11bHRpbWFpbCwgcGxlYXNlIHNlZQorIyAiUkVBRE1FLm1pZ3JhdGUtZnJvbS1wb3N0LXJlY2VpdmUtZW1haWwiIGluIHRoYXQgZGlyZWN0b3J5LgorIworIyBUaGlzIGhvb2sgc2VuZHMgZW1haWxzIGxpc3RpbmcgbmV3IHJldmlzaW9ucyB0byB0aGUgcmVwb3NpdG9yeQorIyBpbnRyb2R1Y2VkIGJ5IHRoZSBjaGFuZ2UgYmVpbmcgcmVwb3J0ZWQuICBUaGUgcnVsZSBpcyB0aGF0IChmb3IKKyMgYnJhbmNoIHVwZGF0ZXMpIGVhY2ggY29tbWl0IHdpbGwgYXBwZWFyIG9uIG9uZSBlbWFpbCBhbmQgb25lIGVtYWlsCisjIG9ubHkuCiAjCiAjIFRoaXMgaG9vayBpcyBzdG9yZWQgaW4gdGhlIGNvbnRyaWIvaG9va3MgZGlyZWN0b3J5LiAgWW91ciBkaXN0cmlidXRpb24KICMgd2lsbCBoYXZlIHB1dCB0aGlzIHNvbWV3aGVyZSBzdGFuZGFyZC4gIFlvdSBzaG91bGQgbWFrZSB0aGlzIHNjcmlwdApkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvLnBlcmxjcml0aWNyYyBiL2NvbnRyaWIvbXctdG8tZ2l0Ly5wZXJsY3JpdGljcmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5OTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0Ly5wZXJsY3JpdGljcmMKQEAgLTAsMCArMSwyOCBAQAorIyBUaGVzZSAzIHJ1bGVzIGRlbWFuZCB0byBhZGQgdGhlIHMsIG0gYW5kIHggZmxhZyB0byAqZXZlcnkqIHJlZ2V4cC4gVGhpcyBpcworIyBvdmVya2lsbCBhbmQgd291bGQgYmUgaGFybWZ1bCBmb3IgcmVhZGFiaWxpdHkuCitbLVJlZ3VsYXJFeHByZXNzaW9uczo6UmVxdWlyZUV4dGVuZGVkRm9ybWF0dGluZ10KK1stUmVndWxhckV4cHJlc3Npb25zOjpSZXF1aXJlRG90TWF0Y2hBbnl0aGluZ10KK1stUmVndWxhckV4cHJlc3Npb25zOjpSZXF1aXJlTGluZUJvdW5kYXJ5TWF0Y2hpbmddCisKKyMgVGhpcyBydWxlIHNheXMgdGhhdCBidWlsdGluIGZ1bmN0aW9ucyBzaG91bGQgbm90IGJlIGNhbGxlZCB3aXRoIHBhcmVudGhlc2VzCisjIGUuZy46ICh0YWtlbiBmcm9tIENQQU4ncyBkb2N1bWVudGF0aW9uKQorIyBvcGVuKCRoYW5kbGUsICc+JywgJGZpbGVuYW1lKTsgI25vdCBvaworIyBvcGVuICRoYW5kbGUsICc+JywgJGZpbGVuYW1lOyAgI29rCisjIEFwcGx5aW5nIHN1Y2ggYSBydWxlIHdvdWxkIG1lYW4gbW9kaWZ5aW5nIGEgaHVnZSBudW1iZXIgb2YgbGluZXMgZm9yIGEKKyMgcXVlc3Rpb24gb2Ygc3R5bGUuCitbLUNvZGVMYXlvdXQ6OlByb2hpYml0UGFyZW5zV2l0aEJ1aWx0aW5zXQorCisjIFRoaXMgcnVsZSBzdGF0ZXMgdGhhdCBlYWNoIHN5c3RlbSBjYWxsIHNob3VsZCBoYXZlIGl0cyByZXR1cm4gdmFsdWUgY2hlY2tlZAorIyBUaGUgcHJvYmxlbSBpcyB0aGF0IGl0IGluY2x1ZGVzIHRoZSBwcmludCBjYWxsLiBDaGVja2luZyBldmVyeSBwcmludCBjYWxsJ3MKKyMgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIGhhcm1mdWwgdG8gdGhlIGNvZGUgcmVhZGFiaWx0eS4KKyMgVGhpcyBjb25maWd1cmF0aW9uIGtlZXBzIGFsbCBkZWZhdWx0IGZ1bmN0aW9uIGJ1dCBwcmludC4KK1tJbnB1dE91dHB1dDo6UmVxdWlyZUNoZWNrZWRTeXNjYWxsc10KK2Z1bmN0aW9ucyA9IG9wZW4gc2F5IGNsb3NlCisKKyMgVGhpcyBydWxlcyBkZW1hbmRzIHRvIGFkZCBhIGRlcGVuZGFuY3kgZm9yIHRoZSBSZWFkb25seSBtb2R1bGUuIFRoaXMgaXMgbm90CisjIHdpc2hlZC4KK1stVmFsdWVzQW5kRXhwcmVzc2lvbnM6OlByb2hpYml0Q29uc3RhbnRQcmFnbWFdCisKKyMgVGhpcyBydWxlIGlzIG5vdCByZWFsbHkgdXNlZnVsIChyYXRoZXIgYSBxdWVzdGlvbiBvZiBzdHlsZSkgYW5kIHByb2R1Y2VzIG1hbnkKKyMgd2FybmluZ3MgYW1vbmcgdGhlIGNvZGUuCitbLVZhbHVlc0FuZEV4cHJlc3Npb25zOjpQcm9oaWJpdE5vaXN5UXVvdGVzXQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvR2l0L01lZGlhd2lraS5wbSBiL2NvbnRyaWIvbXctdG8tZ2l0L0dpdC9NZWRpYXdpa2kucG0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEzYzRkZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L0dpdC9NZWRpYXdpa2kucG0KQEAgLTAsMCArMSwxMDAgQEAKK3BhY2thZ2UgR2l0OjpNZWRpYXdpa2k7CisKK3VzZSA1LjAwODsKK3VzZSBzdHJpY3Q7Cit1c2UgR2l0OworCitCRUdJTiB7CisKK291ciAoJFZFUlNJT04sIEBJU0EsIEBFWFBPUlQsIEBFWFBPUlRfT0spOworCisjIFRvdGFsbHkgdW5zdGFibGUgQVBJLgorJFZFUlNJT04gPSAnMC4wMSc7CisKK3JlcXVpcmUgRXhwb3J0ZXI7CisKK0BJU0EgPSBxdyhFeHBvcnRlcik7CisKK0BFWFBPUlQgPSAoKTsKKworIyBNZXRob2RzIHdoaWNoIGNhbiBiZSBjYWxsZWQgYXMgc3RhbmRhbG9uZSBmdW5jdGlvbnMgYXMgd2VsbDoKK0BFWFBPUlRfT0sgPSBxdyhjbGVhbl9maWxlbmFtZSBzbXVkZ2VfZmlsZW5hbWUgY29ubmVjdF9tYXliZQorCQkJCUVNUFRZIEhUVFBfQ09ERV9PSyBIVFRQX0NPREVfUEFHRV9OT1RfRk9VTkQpOworfQorCisjIE1lZGlhd2lraSBmaWxlbmFtZXMgY2FuIGNvbnRhaW4gZm9yd2FyZCBzbGFzaGVzLiBUaGlzIHZhcmlhYmxlIGRlY2lkZXMgYnkgd2hpY2ggcGF0dGVybiB0aGV5IHNob3VsZCBiZSByZXBsYWNlZAordXNlIGNvbnN0YW50IFNMQVNIX1JFUExBQ0VNRU5UID0+ICclMkYnOworCisjIFVzZWQgdG8gdGVzdCBmb3IgZW1wdHkgc3RyaW5ncwordXNlIGNvbnN0YW50IEVNUFRZID0+IHF7fTsKKworIyBIVFRQIGNvZGVzCit1c2UgY29uc3RhbnQgSFRUUF9DT0RFX09LID0+IDIwMDsKK3VzZSBjb25zdGFudCBIVFRQX0NPREVfUEFHRV9OT1RfRk9VTkQgPT4gNDA0OworCitzdWIgY2xlYW5fZmlsZW5hbWUgeworCW15ICRmaWxlbmFtZSA9IHNoaWZ0OworCSRmaWxlbmFtZSA9fiBze0B7W1NMQVNIX1JFUExBQ0VNRU5UXX19ey99ZzsKKwkjIFssIF0sIHwsIHssIGFuZCB9IGFyZSBmb3JiaWRkZW4gYnkgTWVkaWFXaWtpLCBldmVuIFVSTC1lbmNvZGVkLgorCSMgRG8gYSB2YXJpYW50IG9mIFVSTC1lbmNvZGluZywgaS5lLiBsb29rcyBsaWtlIFVSTC1lbmNvZGluZywKKwkjIGJ1dCB3aXRoIF8gYWRkZWQgdG8gcHJldmVudCBNZWRpYVdpa2kgZnJvbSB0aGlua2luZyB0aGlzIGlzCisJIyBhbiBhY3R1YWwgc3BlY2lhbCBjaGFyYWN0ZXIuCisJJGZpbGVuYW1lID1+IHMvW1xbXF1ce1x9XHxdL3NwcmludGYoIl8lJV8leCIsIG9yZCgkJikpL2dlOworCSMgSWYgd2UgdXNlIHRoZSB1cmkgZXNjYXBlIGJlZm9yZQorCSMgd2Ugc2hvdWxkIHVuZXNjYXBlIGhlcmUsIGJlZm9yZSBhbnl0aGluZworCisJcmV0dXJuICRmaWxlbmFtZTsKK30KKworc3ViIHNtdWRnZV9maWxlbmFtZSB7CisJbXkgJGZpbGVuYW1lID0gc2hpZnQ7CisJJGZpbGVuYW1lID1+IHN7L317QHtbU0xBU0hfUkVQTEFDRU1FTlRdfX1nOworCSRmaWxlbmFtZSA9fiBzLyAvXy9nOworCSMgRGVjb2RlIGZvcmJpZGRlbiBjaGFyYWN0ZXJzIGVuY29kZWQgaW4gY2xlYW5fZmlsZW5hbWUKKwkkZmlsZW5hbWUgPX4gcy9fJV8oWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkvc3ByaW50ZignJWMnLCBoZXgoJDEpKS9nZTsKKwlyZXR1cm4gJGZpbGVuYW1lOworfQorCitzdWIgY29ubmVjdF9tYXliZSB7CisJbXkgJHdpa2kgPSBzaGlmdDsKKwlpZiAoJHdpa2kpIHsKKwkJcmV0dXJuICR3aWtpOworCX0KKworCW15ICRyZW1vdGVfbmFtZSA9IHNoaWZ0OworCW15ICRyZW1vdGVfdXJsID0gc2hpZnQ7CisJbXkgKCR3aWtpX2xvZ2luLCAkd2lraV9wYXNzd29yZCwgJHdpa2lfZG9tYWluKTsKKworCSR3aWtpX2xvZ2luID0gR2l0Ojpjb25maWcoInJlbW90ZS4ke3JlbW90ZV9uYW1lfS5td0xvZ2luIik7CisJJHdpa2lfcGFzc3dvcmQgPSBHaXQ6OmNvbmZpZygicmVtb3RlLiR7cmVtb3RlX25hbWV9Lm13UGFzc3dvcmQiKTsKKwkkd2lraV9kb21haW4gPSBHaXQ6OmNvbmZpZygicmVtb3RlLiR7cmVtb3RlX25hbWV9Lm13RG9tYWluIik7CisKKwkkd2lraSA9IE1lZGlhV2lraTo6QVBJLT5uZXc7CisJJHdpa2ktPntjb25maWd9LT57YXBpX3VybH0gPSAiJHtyZW1vdGVfdXJsfS9hcGkucGhwIjsKKwlpZiAoJHdpa2lfbG9naW4pIHsKKwkJbXkgJWNyZWRlbnRpYWwgPSAoCisJCQkndXJsJyA9PiAkcmVtb3RlX3VybCwKKwkJCSd1c2VybmFtZScgPT4gJHdpa2lfbG9naW4sCisJCQkncGFzc3dvcmQnID0+ICR3aWtpX3Bhc3N3b3JkCisJCSk7CisJCUdpdDo6Y3JlZGVudGlhbChcJWNyZWRlbnRpYWwpOworCQlteSAkcmVxdWVzdCA9IHtsZ25hbWUgPT4gJGNyZWRlbnRpYWx7dXNlcm5hbWV9LAorCQkJICAgICAgIGxncGFzc3dvcmQgPT4gJGNyZWRlbnRpYWx7cGFzc3dvcmR9LAorCQkJICAgICAgIGxnZG9tYWluID0+ICR3aWtpX2RvbWFpbn07CisJCWlmICgkd2lraS0+bG9naW4oJHJlcXVlc3QpKSB7CisJCQlHaXQ6OmNyZWRlbnRpYWwoXCVjcmVkZW50aWFsLCAnYXBwcm92ZScpOworCQkJcHJpbnQgeypTVERFUlJ9IHFxKExvZ2dlZCBpbiBtZWRpYXdpa2kgdXNlciAiJGNyZWRlbnRpYWx7dXNlcm5hbWV9Ii5cbik7CisJCX0gZWxzZSB7CisJCQlwcmludCB7KlNUREVSUn0gcXEoRmFpbGVkIHRvIGxvZyBpbiBtZWRpYXdpa2kgdXNlciAiJGNyZWRlbnRpYWx7dXNlcm5hbWV9IiBvbiAke3JlbW90ZV91cmx9XG4pOworCQkJcHJpbnQgeypTVERFUlJ9ICcgIChlcnJvciAnIC4KKwkJCQkkd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzogJyAuCisJCQkJJHdpa2ktPntlcnJvcn0tPntkZXRhaWxzfSAuICIpXG4iOworCQkJR2l0OjpjcmVkZW50aWFsKFwlY3JlZGVudGlhbCwgJ3JlamVjdCcpOworCQkJZXhpdCAxOworCQl9CisJfQorCisJcmV0dXJuICR3aWtpOworfQorCisxOyAjIEZhbW91cyBsYXN0IHdvcmRzCmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC9NYWtlZmlsZSBiL2NvbnRyaWIvbXctdG8tZ2l0L01ha2VmaWxlCmluZGV4IGYxNDk3MTkuLjc2ZmNkNGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L01ha2VmaWxlCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L01ha2VmaWxlCkBAIC0yLDE2ICsyLDQzIEBACiAjIENvcHlyaWdodCAoQykgMjAxMwogIyAgICAgTWF0dGhpZXUgTW95IDxNYXR0aGlldS5Nb3lAaW1hZy5mcj4KICMKLSMjIEJ1aWxkIGdpdC1yZW1vdGUtbWVkaWF3aWtpCisjIFRvIGJ1aWxkIGFuZCB0ZXN0OgorIworIyAgIG1ha2UKKyMgICBiaW4td3JhcHBlci9naXQgbXcgcHJldmlldyBTb21lX3BhZ2UubXcKKyMgICBiaW4td3JhcHBlci9naXQgY2xvbmUgbWVkaWF3aWtpOjpodHRwOi8vZXhhbXBsZS5jb20vd2lraS8KKyMKKyMgVG8gaW5zdGFsbCwgcnVuIEdpdCdzIHRvcGxldmVsICdtYWtlIGluc3RhbGwnIHRoZW4gcnVuOgorIworIyAgIG1ha2UgaW5zdGFsbAogCitHSVRfTUVESUFXSUtJX1BNPUdpdC9NZWRpYXdpa2kucG0KIFNDUklQVF9QRVJMPWdpdC1yZW1vdGUtbWVkaWF3aWtpLnBlcmwKK1NDUklQVF9QRVJMKz1naXQtbXcucGVybAogR0lUX1JPT1RfRElSPS4uLy4uCiBIRVJFPWNvbnRyaWIvbXctdG8tZ2l0LwogCiBTQ1JJUFRfUEVSTF9GVUxMPSQocGF0c3Vic3QgJSwkKEhFUkUpLyUsJChTQ1JJUFRfUEVSTCkpCitJTlNUTElCRElSPSQoc2hlbGwgJChNQUtFKSAtQyAkKEdJVF9ST09UX0RJUikvcGVybCBcCisgICAgICAgICAgICAgICAgLXMgLS1uby1wcmludC1kaXJlY3RvcnkgaW5zdGxpYmRpcikKIAogYWxsOiBidWlsZAogCi1idWlsZCBpbnN0YWxsIGNsZWFuOgotCSQoTUFLRSkgLUMgJChHSVRfUk9PVF9ESVIpIFNDUklQVF9QRVJMPSQoU0NSSVBUX1BFUkxfRlVMTCkgXAotICAgICAgICAgICAgICAgICRALXBlcmwtc2NyaXB0CitpbnN0YWxsX3BtOgorCWluc3RhbGwgJChHSVRfTUVESUFXSUtJX1BNKSAkKElOU1RMSUJESVIpLyQoR0lUX01FRElBV0lLSV9QTSkKKworYnVpbGQ6CisJJChNQUtFKSAtQyAkKEdJVF9ST09UX0RJUikgU0NSSVBUX1BFUkw9IiQoU0NSSVBUX1BFUkxfRlVMTCkiIFwKKyAgICAgICAgICAgICAgICBidWlsZC1wZXJsLXNjcmlwdAorCitpbnN0YWxsOiBpbnN0YWxsX3BtCisJJChNQUtFKSAtQyAkKEdJVF9ST09UX0RJUikgU0NSSVBUX1BFUkw9IiQoU0NSSVBUX1BFUkxfRlVMTCkiIFwKKyAgICAgICAgICAgICAgICBpbnN0YWxsLXBlcmwtc2NyaXB0CisKK2NsZWFuOgorCSQoTUFLRSkgLUMgJChHSVRfUk9PVF9ESVIpIFNDUklQVF9QRVJMPSIkKFNDUklQVF9QRVJMX0ZVTEwpIiBcCisgICAgICAgICAgICAgICAgY2xlYW4tcGVybC1zY3JpcHQKKwlybSAkKElOU1RMSUJESVIpLyQoR0lUX01FRElBV0lLSV9QTSkKKworcGVybGNyaXRpYzoKKwlwZXJsY3JpdGljIC0yICoucGVybApkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvYmluLXdyYXBwZXIvZ2l0IGIvY29udHJpYi9tdy10by1naXQvYmluLXdyYXBwZXIvZ2l0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY2NjNhZTUKLS0tIC9kZXYvbnVsbAorKysgYi9jb250cmliL213LXRvLWdpdC9iaW4td3JhcHBlci9naXQKQEAgLTAsMCArMSwxNCBAQAorIyEvYmluL3NoCisKKyMgZ2l0IGV4ZWN1dGFibGUgd3JhcHBlciBzY3JpcHQgZm9yIEdpdC1NZWRpYXdpa2kgdG8gcnVuIHRlc3RzIHdpdGhvdXQKKyMgaW5zdGFsbGluZyBhbGwgdGhlIHNjcmlwdHMgYW5kIHBlcmwgcGFja2FnZXMuCisKK0dJVF9ST09UX0RJUj0uLi8uLi8uLgorR0lUX0VYRUNfUEFUSD0kKGNkICIkKGRpcm5hbWUgIiQwIikiICYmIGNkICR7R0lUX1JPT1RfRElSfSAmJiBwd2QpCisKK0dJVFBFUkxMSUI9IiRHSVRfRVhFQ19QQVRIIicvY29udHJpYi9tdy10by1naXQnIiR7R0lUUEVSTExJQjorOiRHSVRQRVJMTElCfSIKK1BBVEg9IiRHSVRfRVhFQ19QQVRIIicvY29udHJpYi9tdy10by1naXQ6JyIkUEFUSCIKKworZXhwb3J0IEdJVFBFUkxMSUIgUEFUSAorCitleGVjICIke0dJVF9FWEVDX1BBVEh9L2Jpbi13cmFwcGVycy9naXQiICIkQCIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1tdy5wZXJsIGIvY29udHJpYi9tdy10by1naXQvZ2l0LW13LnBlcmwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjhkZjNlZQotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1tdy5wZXJsCkBAIC0wLDAgKzEsMzY4IEBACisjIS91c3IvYmluL3BlcmwKKworIyBDb3B5cmlnaHQgKEMpIDIwMTMKKyMgICAgIEJlbm9pdCBQZXJzb24gPGJlbm9pdC5wZXJzb25AZW5zaW1hZy5pbWFnLmZyPgorIyAgICAgQ2VsZXN0aW4gTWF0dGUgPGNlbGVzdGluLm1hdHRlQGVuc2ltYWcuaW1hZy5mcj4KKyMgTGljZW5zZTogR1BMIHYyIG9yIGxhdGVyCisKKyMgU2V0IG9mIHRvb2xzIGZvciBnaXQgcmVwbyB3aXRoIGEgbWVkaWF3aWtpIHJlbW90ZS4KKyMgRG9jdW1lbnRhdGlvbiAmIGJ1Z3RyYWNrZXI6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb3kvR2l0LU1lZGlhd2lraS8KKwordXNlIHN0cmljdDsKK3VzZSB3YXJuaW5nczsKKwordXNlIEdldG9wdDo6TG9uZzsKK3VzZSBVUkk6OlVSTCBxdyh1cmwpOwordXNlIExXUDo6VXNlckFnZW50OwordXNlIEhUTUw6OlRyZWVCdWlsZGVyOworCit1c2UgR2l0OwordXNlIE1lZGlhV2lraTo6QVBJOwordXNlIEdpdDo6TWVkaWF3aWtpIHF3KGNsZWFuX2ZpbGVuYW1lIGNvbm5lY3RfbWF5YmUKKwkJCQkJRU1QVFkgSFRUUF9DT0RFX1BBR0VfTk9UX0ZPVU5EKTsKKworIyBCeSBkZWZhdWx0LCB1c2UgVVRGLTggdG8gY29tbXVuaWNhdGUgd2l0aCBHaXQgYW5kIHRoZSB1c2VyCitiaW5tb2RlIFNUREVSUiwgJzplbmNvZGluZyhVVEYtOCknOworYmlubW9kZSBTVERPVVQsICc6ZW5jb2RpbmcoVVRGLTgpJzsKKworIyBHbG9iYWwgcGFyYW1ldGVycworbXkgJHZlcmJvc2UgPSAwOworc3ViIHZfcHJpbnQgeworCWlmICgkdmVyYm9zZSkgeworCQlyZXR1cm4gcHJpbnQgeypTVERFUlJ9IEBfOworCX0KKwlyZXR1cm47Cit9CisKKyMgUHJldmlldyBwYXJhbWV0ZXJzCitteSAkZmlsZV9uYW1lID0gRU1QVFk7CitteSAkcmVtb3RlX25hbWUgPSBFTVBUWTsKK215ICRwcmV2aWV3X2ZpbGVfbmFtZSA9IEVNUFRZOworbXkgJGF1dG9sb2FkID0gMDsKK3N1YiBmaWxlIHsKKwkkZmlsZV9uYW1lID0gc2hpZnQ7CisJcmV0dXJuICRmaWxlX25hbWU7Cit9CisKK215ICVjb21tYW5kcyA9ICgKKwknaGVscCcgPT4KKwkJW1wmaGVscCwge30sIFwmaGVscF0sCisJJ3ByZXZpZXcnID0+CisJCVtcJnByZXZpZXcsIHsKKwkJCSc8PicgPT4gXCZmaWxlLAorCQkJJ291dHB1dHxvPXMnID0+IFwkcHJldmlld19maWxlX25hbWUsCisJCQkncmVtb3RlfHI9cycgPT4gXCRyZW1vdGVfbmFtZSwKKwkJCSdhdXRvbG9hZHxhJyA9PiBcJGF1dG9sb2FkCisJCX0sIFwmcHJldmlld19oZWxwXQorKTsKKworIyBTZWFyY2ggZm9yIHN1Yi1jb21tYW5kCitteSAkY21kID0gJGNvbW1hbmRzeydoZWxwJ307Citmb3IgKDAuLkBBUkdWLTEpIHsKKwlpZiAoZGVmaW5lZCAkY29tbWFuZHN7JEFSR1ZbJF9dfSkgeworCQkkY21kID0gJGNvbW1hbmRzeyRBUkdWWyRfXX07CisJCXNwbGljZSBAQVJHViwgJF8sIDE7CisJCWxhc3Q7CisJfQorfTsKK0dldE9wdGlvbnMoICV7JGNtZC0+WzFdfSwKKwknaGVscHxoJyA9PiBcJnskY21kLT5bMl19LAorCSd2ZXJib3NlfHYnICA9PiBcJHZlcmJvc2UpOworCisjIExhdW5jaCBjb21tYW5kCismeyRjbWQtPlswXX07CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFByZXZpZXcgRnVuY3Rpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3N1YiBwcmV2aWV3X2hlbHAgeworCXByaW50IHsqU1RET1VUfSA8PCdFTkQnOworVVNBR0U6IGdpdCBtdyBwcmV2aWV3IFstLXJlbW90ZXwtciA8cmVtb3RlIG5hbWU+XSBbLS1hdXRvbG9hZHwtYV0KKyAgICAgICAgICAgICAgICAgICAgICBbLS1vdXRwdXR8LW8gPG91dHB1dCBmaWxlbmFtZT5dIFstLXZlcmJvc2V8LXZdCisgICAgICAgICAgICAgICAgICAgICAgPGJsb2I+IHwgPGZpbGVuYW1lPgorCitERVNDUklQVElPTjoKK1ByZXZpZXcgaXMgYW4gdXRpbGl5IHRvIHByZXZpZXcgbG9jYWwgY29udGVudCBvZiBhIG1lZGlhd2lraSByZXBvIGFzIGlmIGl0IHdhcworcHVzaGVkIG9uIHRoZSByZW1vdGUuCisKK0ZvciB0aGF0LCBwcmV2aWV3IHNlYXJjaGVzIGZvciB0aGUgcmVtb3RlIG5hbWUgb2YgdGhlIGN1cnJlbnQgYnJhbmNoJ3MKK3Vwc3RyZWFtIGlmIC0tcmVtb3RlIGlzIG5vdCBzZXQuIElmIHRoYXQgcmVtb3RlIGlzIG5vdCBmb3VuZCBvciBpZiBpdAoraXMgbm90IGEgbWVkaWF3aWtpLCBpdCBsaXN0cyBhbGwgbWVkaWF3aWtpIHJlbW90ZXMgY29uZmlndXJlZCBhbmQgYXNrcworeW91IHRvIHJlcGxheSB5b3VyIGNvbW1hbmQgd2l0aCB0aGUgLS1yZW1vdGUgb3B0aW9uIHNldCBwcm9wZXJseS4KKworVGhlbiwgaXQgc2VhcmNoZXMgZm9yIGEgZmlsZSBuYW1lZCAnZmlsZW5hbWUnLiBJZiBpdCdzIG5vdCBmb3VuZCBpbgordGhlIGN1cnJlbnQgZGlyLCBpdCB3aWxsIGFzc3VtZSBpdCdzIGEgYmxvYi4KKworVGhlIGNvbnRlbnQgcmV0cmlldmVkIGluIHRoZSBmaWxlIChvciBpbiB0aGUgYmxvYikgd2lsbCB0aGVuIGJlIHBhcnNlZAorYnkgdGhlIHJlbW90ZSBtZWRpYXdpa2kgYW5kIGNvbWJpbmVkIHdpdGggYSB0ZW1wbGF0ZSByZXRyaWV2ZWQgZnJvbQordGhlIG1lZGlhd2lraS4KKworRmluYWxseSwgcHJldmlldyB3aWxsIHNhdmUgdGhlIEhUTUwgcmVzdWx0IGluIGEgZmlsZS4gYW5kIGF1dG9sb2FkIGl0CitpbiB5b3VyIGRlZmF1bHQgd2ViIGJyb3dzZXIgaWYgdGhlIG9wdGlvbiAtLWF1dG9sb2FkIGlzIHByZXNlbnQuCisKK09QVElPTlM6CisgICAgLXIgPHJlbW90ZSBuYW1lPiwgLS1yZW1vdGUgPHJlbW90ZSBuYW1lPgorICAgICAgICBJZiB0aGUgcmVtb3RlIGlzIGEgbWVkaWF3aWtpLCB0aGUgdGVtcGxhdGUgYW5kIHRoZSBwYXJzZSBlbmdpbmUKKyAgICAgICAgdXNlZCBmb3IgdGhlIHByZXZpZXcgd2lsbCBiZSB0aG9zZSBvZiB0aGF0IHJlbW90ZS4KKyAgICAgICAgSWYgbm90LCBhIGxpc3Qgb2YgdmFsaWQgcmVtb3RlcyB3aWxsIGJlIHNob3duLgorCisgICAgLWEsIC0tYXV0b2xvYWQKKyAgICAgICAgVHJ5IHRvIGxvYWQgdGhlIEhUTUwgb3V0cHV0IGluIGEgbmV3IHRhYiAob3IgbmV3IHdpbmRvdykgb2YgeW91cgorICAgICAgICBkZWZhdWx0IHdlYiBicm93c2VyLgorCisgICAgLW8gPG91dHB1dCBmaWxlbmFtZT4sIC0tb3V0cHV0IDxvdXRwdXQgZmlsZW5hbWU+CisgICAgICAgIENoYW5nZSB0aGUgSFRNTCBvdXRwdXQgZmlsZW5hbWUuIERlZmF1bHQgZmlsZW5hbWUgaXMgYmFzZWQgb24gdGhlCisgICAgICAgIGlucHV0IGZpbGVuYW1lIHdpdGggaXRzIGV4dGVuc2lvbiByZXBsYWNlZCBieSAnLmh0bWwnLgorCisgICAgLXYsIC0tdmVyYm9zZQorICAgICAgICBTaG93IG1vcmUgaW5mb3JtYXRpb24gb24gd2hhdCdzIGdvaW5nIG9uIHVuZGVyIHRoZSBob29kLgorRU5ECisJZXhpdDsKK30KKworc3ViIHByZXZpZXcgeworCW15ICR3aWtpOworCW15ICgkcmVtb3RlX3VybCwgJHdpa2lfcGFnZV9uYW1lKTsKKwlteSAoJG5ld19jb250ZW50LCAkdGVtcGxhdGUpOworCW15ICRmaWxlX2NvbnRlbnQ7CisKKwlpZiAoJGZpbGVfbmFtZSBlcSBFTVBUWSkgeworCQlkaWUgIk1pc3NpbmcgZmlsZSBhcmd1bWVudCwgc2VlIGBnaXQgbXcgaGVscGBcbiI7CisJfQorCisJdl9wcmludCgiIyMjIFNlbGVjdGluZyByZW1vdGVcbiIpOworCWlmICgkcmVtb3RlX25hbWUgZXEgRU1QVFkpIHsKKwkJJHJlbW90ZV9uYW1lID0gZmluZF91cHN0cmVhbV9yZW1vdGVfbmFtZSgpOworCQlpZiAoJHJlbW90ZV9uYW1lKSB7CisJCQkkcmVtb3RlX3VybCA9IG1lZGlhd2lraV9yZW1vdGVfdXJsX21heWJlKCRyZW1vdGVfbmFtZSk7CisJCX0KKworCQlpZiAoISAkcmVtb3RlX3VybCkgeworCQkJbXkgQHZhbGlkX3JlbW90ZXMgPSBmaW5kX21lZGlhd2lraV9yZW1vdGVzKCk7CisKKwkJCWlmICgkI3ZhbGlkX3JlbW90ZXMgPT0gMCkgeworCQkJCXByaW50IHsqU1RERVJSfSAiTm8gbWVkaWF3aWtpIHJlbW90ZSBpbiB0aGlzIHJlcG8uIFxuIjsKKwkJCQlleGl0IDE7CisJCQl9IGVsc2UgeworCQkJCW15ICRyZW1vdGVzX2xpc3QgPSBqb2luKCJcblx0IiwgQHZhbGlkX3JlbW90ZXMpOworCQkJCXByaW50IHsqU1RERVJSfSA8PCJNRVNTQUdFIjsKK1RoZXJlIGFyZSBtdWx0aXBsZSBtZWRpYXdpa2kgcmVtb3Rlcywgd2hpY2ggb2Y6CisJJHtyZW1vdGVzX2xpc3R9CitkbyB5b3Ugd2FudCA/IFVzZSB0aGUgLXIgb3B0aW9uIHRvIHNwZWNpZnkgdGhlIHJlbW90ZS4KK01FU1NBR0UKKwkJCX0KKworCQkJZXhpdCAxOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKCFpc192YWxpZF9yZW1vdGUoJHJlbW90ZV9uYW1lKSkgeworCQkJZGllICIke3JlbW90ZV9uYW1lfSBpcyBub3QgYSByZW1vdGVcbiI7CisJCX0KKworCQkkcmVtb3RlX3VybCA9IG1lZGlhd2lraV9yZW1vdGVfdXJsX21heWJlKCRyZW1vdGVfbmFtZSk7CisJCWlmICghICRyZW1vdGVfdXJsKSB7CisJCQlkaWUgIiR7cmVtb3RlX25hbWV9IGlzIG5vdCBhIG1lZGlhd2lraSByZW1vdGVcbiI7CisJCX0KKwl9CisJdl9wcmludCgic2VsZWN0ZWQgcmVtb3RlOlxuXHRuYW1lOiAke3JlbW90ZV9uYW1lfVxuXHR1cmw6ICR7cmVtb3RlX3VybH1cbiIpOworCisJJHdpa2kgPSBjb25uZWN0X21heWJlKCR3aWtpLCAkcmVtb3RlX25hbWUsICRyZW1vdGVfdXJsKTsKKworCSMgUmVhZCBmaWxlIGNvbnRlbnQKKwlpZiAoISAtZSAkZmlsZV9uYW1lKSB7CisJCSRmaWxlX2NvbnRlbnQgPSBnaXRfY21kX3RyeSB7CisJCQlHaXQ6OmNvbW1hbmQoJ2NhdC1maWxlJywgJ2Jsb2InLCAkZmlsZV9uYW1lKTsgfQorCQkJIiVzIGZhaWxlZCB3LyBjb2RlICVkIjsKKworCQlpZiAoJGZpbGVfbmFtZSA9fiAvKC4rKTooLispLykgeworCQkJJGZpbGVfbmFtZSA9ICQyOworCQl9CisJfSBlbHNlIHsKKwkJb3BlbiBteSAkcmVhZF9maCwgIjwiLCAkZmlsZV9uYW1lCisJCQlvciBkaWUgImNvdWxkIG5vdCBvcGVuICR7ZmlsZV9uYW1lfTogJCFcbiI7CisJCSRmaWxlX2NvbnRlbnQgPSBkbyB7IGxvY2FsICQvID0gdW5kZWY7IDwkcmVhZF9maD4gfTsKKwkJY2xvc2UgJHJlYWRfZmgKKwkJCW9yIGRpZSAidW5hYmxlIHRvIGNsb3NlOiAkIVxuIjsKKwl9CisKKwl2X3ByaW50KCIjIyMgUmV0cmlldmluZyB0ZW1wbGF0ZVxuIik7CisJKCR3aWtpX3BhZ2VfbmFtZSA9IGNsZWFuX2ZpbGVuYW1lKCRmaWxlX25hbWUpKSA9fiBzL1wuW14uXSskLy87CisJJHRlbXBsYXRlID0gZ2V0X3RlbXBsYXRlKCRyZW1vdGVfdXJsLCAkd2lraV9wYWdlX25hbWUpOworCisJdl9wcmludCgiIyMjIFBhcnNpbmcgbG9jYWwgY29udGVudFxuIik7CisJJG5ld19jb250ZW50ID0gJHdpa2ktPmFwaSh7CisJCWFjdGlvbiA9PiAncGFyc2UnLAorCQl0ZXh0ID0+ICRmaWxlX2NvbnRlbnQsCisJCXRpdGxlID0+ICR3aWtpX3BhZ2VfbmFtZQorCX0sIHsKKwkJc2tpcF9lbmNvZGluZyA9PiAxCisJfSkgb3IgZGllICJObyByZXNwb25zZSBmcm9tIHJlbW90ZSBtZWRpYXdpa2lcbiI7CisJJG5ld19jb250ZW50ID0gJG5ld19jb250ZW50LT57J3BhcnNlJ30tPnsndGV4dCd9LT57JyonfTsKKworCXZfcHJpbnQoIiMjIyBNZXJnaW5nIGNvbnRlbnRzXG4iKTsKKwlpZiAoJHByZXZpZXdfZmlsZV9uYW1lIGVxIEVNUFRZKSB7CisJCSgkcHJldmlld19maWxlX25hbWUgPSAkZmlsZV9uYW1lKSA9fiBzL1wuW14uXSskLy5odG1sLzsKKwl9CisJb3BlbihteSAkc2F2ZV9maCwgJz46ZW5jb2RpbmcoVVRGLTgpJywgJHByZXZpZXdfZmlsZV9uYW1lKQorCQlvciBkaWUgIkNvdWxkIG5vdCBvcGVuOiAkIVxuIjsKKwlwcmludCB7JHNhdmVfZmh9IG1lcmdlX2NvbnRlbnRzKCR0ZW1wbGF0ZSwgJG5ld19jb250ZW50LCAkcmVtb3RlX3VybCk7CisJY2xvc2UoJHNhdmVfZmgpCisJCW9yIGRpZSAiQ291bGQgbm90IGNsb3NlOiAkIVxuIjsKKworCXZfcHJpbnQoIiMjIyBSZXN1bHRzXG4iKTsKKwlpZiAoJGF1dG9sb2FkKSB7CisJCXZfcHJpbnQoIkxhdW5jaGluZyBicm93c2VyIHcvIGZpbGU6ICR7cHJldmlld19maWxlX25hbWV9Iik7CisJCXN5c3RlbSgnZ2l0JywgJ3dlYi0tYnJvd3NlJywgJHByZXZpZXdfZmlsZV9uYW1lKTsKKwl9IGVsc2UgeworCQlwcmludCB7KlNUREVSUn0gIlByZXZpZXcgZmlsZSBzYXZlZCBhczogJHtwcmV2aWV3X2ZpbGVfbmFtZX1cbiI7CisJfQorCisJZXhpdDsKK30KKworIyB1c2VzIGdsb2JhbCBzY29wZSB2YXJpYWJsZTogJHJlbW90ZV9uYW1lCitzdWIgbWVyZ2VfY29udGVudHMgeworCW15ICR0ZW1wbGF0ZSA9IHNoaWZ0OworCW15ICRjb250ZW50ID0gc2hpZnQ7CisJbXkgJHJlbW90ZV91cmwgPSBzaGlmdDsKKwlteSAoJGNvbnRlbnRfdHJlZSwgJGh0bWxfdHJlZSwgJG13X2NvbnRlbnRfdGV4dCk7CisJbXkgJHRlbXBsYXRlX2NvbnRlbnRfaWQgPSAnYm9keUNvbnRlbnQnOworCisJJGh0bWxfdHJlZSA9IEhUTUw6OlRyZWVCdWlsZGVyLT5uZXc7CisJJGh0bWxfdHJlZS0+cGFyc2UoJHRlbXBsYXRlKTsKKworCSRjb250ZW50X3RyZWUgPSBIVE1MOjpUcmVlQnVpbGRlci0+bmV3OworCSRjb250ZW50X3RyZWUtPnBhcnNlKCRjb250ZW50KTsKKworCSR0ZW1wbGF0ZV9jb250ZW50X2lkID0gR2l0Ojpjb25maWcoInJlbW90ZS4ke3JlbW90ZV9uYW1lfS5td0lEY29udGVudCIpCisJCXx8ICR0ZW1wbGF0ZV9jb250ZW50X2lkOworCXZfcHJpbnQoIlVzaW5nICcke3RlbXBsYXRlX2NvbnRlbnRfaWR9JyBhcyB0aGUgY29udGVudCBJRFxuIik7CisKKwkkbXdfY29udGVudF90ZXh0ID0gJGh0bWxfdHJlZS0+bG9va19kb3duKCdpZCcsICR0ZW1wbGF0ZV9jb250ZW50X2lkKTsKKwlpZiAoIWRlZmluZWQgJG13X2NvbnRlbnRfdGV4dCkgeworCQlwcmludCB7KlNUREVSUn0gPDwiQ09ORklHIjsKK0NvdWxkIG5vdCBjb21iaW5lIHRoZSBuZXcgY29udGVudCB3aXRoIHRoZSB0ZW1wbGF0ZS4gWW91IG1pZ2h0IHdhbnQgdG8KK2NvbmZpZ3VyZSBgbWVkaWF3aWtpLklEQ29udGVudGAgaW4geW91ciBjb25maWc6CisJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUuJHtyZW1vdGVfbmFtZX0ubXdJRGNvbnRlbnQgPGlkPgorYW5kIHJlLXJ1biB0aGUgY29tbWFuZCBhZnRlcndhcmQuCitDT05GSUcKKwkJZXhpdCAxOworCX0KKwkkbXdfY29udGVudF90ZXh0LT5kZWxldGVfY29udGVudCgpOworCSRtd19jb250ZW50X3RleHQtPnB1c2hfY29udGVudCgkY29udGVudF90cmVlKTsKKworCW1ha2VfbGlua3NfYWJzb2x1dGUoJGh0bWxfdHJlZSwgJHJlbW90ZV91cmwpOworCisJcmV0dXJuICRodG1sX3RyZWUtPmFzX0hUTUw7Cit9CisKK3N1YiBtYWtlX2xpbmtzX2Fic29sdXRlIHsKKwlteSAkaHRtbF90cmVlID0gc2hpZnQ7CisJbXkgJHJlbW90ZV91cmwgPSBzaGlmdDsKKwlmb3IgKEB7ICRodG1sX3RyZWUtPmV4dHJhY3RfbGlua3MoKSB9KSB7CisJCW15ICgkbGluaywgJGVsZW1lbnQsICRhdHRyKSA9IEB7ICRfIH07CisJCW15ICR1cmwgPSB1cmwoJGxpbmspLT5jYW5vbmljYWw7CisJCWlmICgkdXJsICF+IC8jLykgeworCQkJJGVsZW1lbnQtPmF0dHIoJGF0dHIsIFVSSS0+bmV3X2FicygkdXJsLCAkcmVtb3RlX3VybCkpOworCQl9CisJfQorCXJldHVybiAkaHRtbF90cmVlOworfQorCitzdWIgaXNfdmFsaWRfcmVtb3RlIHsKKwlteSAkcmVtb3RlID0gc2hpZnQ7CisJbXkgQHJlbW90ZXMgPSBnaXRfY21kX3RyeSB7CisJCUdpdDo6Y29tbWFuZCgncmVtb3RlJykgfQorCQkiJXMgZmFpbGVkIHcvIGNvZGUgJWQiOworCW15ICRmb3VuZF9yZW1vdGUgPSAwOworCWZvcmVhY2ggbXkgJHJlbW90ZSAoQHJlbW90ZXMpIHsKKwkJaWYgKCRyZW1vdGUgZXEgJHJlbW90ZSkgeworCQkJJGZvdW5kX3JlbW90ZSA9IDE7CisJCQlsYXN0OworCQl9CisJfQorCXJldHVybiAkZm91bmRfcmVtb3RlOworfQorCitzdWIgZmluZF9tZWRpYXdpa2lfcmVtb3RlcyB7CisJbXkgQHJlbW90ZXMgPSBnaXRfY21kX3RyeSB7CisJCUdpdDo6Y29tbWFuZCgncmVtb3RlJyk7IH0KKwkJIiVzIGZhaWxlZCB3LyBjb2RlICVkIjsKKwlteSAkcmVtb3RlX3VybDsKKwlteSBAdmFsaWRfcmVtb3RlcyA9ICgpOworCWZvcmVhY2ggbXkgJHJlbW90ZSAoQHJlbW90ZXMpIHsKKwkJJHJlbW90ZV91cmwgPSBtZWRpYXdpa2lfcmVtb3RlX3VybF9tYXliZSgkcmVtb3RlKTsKKwkJaWYgKCRyZW1vdGVfdXJsKSB7CisJCQlwdXNoKEB2YWxpZF9yZW1vdGVzLCAkcmVtb3RlKTsKKwkJfQorCX0KKwlyZXR1cm4gQHZhbGlkX3JlbW90ZXM7Cit9CisKK3N1YiBmaW5kX3Vwc3RyZWFtX3JlbW90ZV9uYW1lIHsKKwlteSAkY3VycmVudF9icmFuY2ggPSBnaXRfY21kX3RyeSB7CisJCUdpdDo6Y29tbWFuZF9vbmVsaW5lKCdzeW1ib2xpYy1yZWYnLCAnLS1zaG9ydCcsICdIRUFEJykgfQorCQkiJXMgZmFpbGVkIHcvIGNvZGUgJWQiOworCXJldHVybiBHaXQ6OmNvbmZpZygiYnJhbmNoLiR7Y3VycmVudF9icmFuY2h9LnJlbW90ZSIpOworfQorCitzdWIgbWVkaWF3aWtpX3JlbW90ZV91cmxfbWF5YmUgeworCW15ICRyZW1vdGUgPSBzaGlmdDsKKworCSMgRmluZCByZW1vdGUgdXJsCisJbXkgJHJlbW90ZV91cmwgPSBHaXQ6OmNvbmZpZygicmVtb3RlLiR7cmVtb3RlfS51cmwiKTsKKwlpZiAoJHJlbW90ZV91cmwgPX4gcy9tZWRpYXdpa2k6OiguKikvJDEvKSB7CisJCXJldHVybiB1cmwoJHJlbW90ZV91cmwpLT5jYW5vbmljYWw7CisJfQorCisJcmV0dXJuOworfQorCitzdWIgZ2V0X3RlbXBsYXRlIHsKKwlteSAkdXJsID0gc2hpZnQ7CisJbXkgJHBhZ2VfbmFtZSA9IHNoaWZ0OworCW15ICgkcmVxLCAkcmVzLCAkY29kZSwgJHVybF9hZnRlcik7CisKKwkkcmVxID0gTFdQOjpVc2VyQWdlbnQtPm5ldzsKKwlpZiAoJHZlcmJvc2UpIHsKKwkJJHJlcS0+c2hvd19wcm9ncmVzcygxKTsKKwl9CisKKwkkcmVzID0gJHJlcS0+Z2V0KCIke3VybH0vaW5kZXgucGhwP3RpdGxlPSR7cGFnZV9uYW1lfSIpOworCWlmICghJHJlcy0+aXNfc3VjY2VzcykgeworCQkkY29kZSA9ICRyZXMtPmNvZGU7CisJCSR1cmxfYWZ0ZXIgPSAkcmVzLT5yZXF1ZXN0KCktPnVyaSgpOyAjIHJlc29sdmUgYWxsIHJlZGlyZWN0aW9ucworCQlpZiAoJGNvZGUgPT0gSFRUUF9DT0RFX1BBR0VfTk9UX0ZPVU5EKSB7CisJCQlpZiAoJHZlcmJvc2UpIHsKKwkJCQlwcmludCB7KlNUREVSUn0gPDwiV0FSTklORyI7CitXYXJuaW5nOiBGYWlsZWQgdG8gcmV0cmlldmUgJyRwYWdlX25hbWUnLiBDcmVhdGUgaXQgb24gdGhlIG1lZGlhd2lraSBpZiB5b3Ugd2FudAorYWxsIHRoZSBsaW5rcyB0byB3b3JrIHByb3Blcmx5LgorVHJ5aW5nIHRvIHVzZSB0aGUgbWVkaWF3aWtpIGhvbWVwYWdlIGFzIGEgZmFsbGJhY2sgdGVtcGxhdGUgLi4uCitXQVJOSU5HCisJCQl9CisKKwkJCSMgTFdQIGF1dG9tYXRpY2FsbHkgcmVkaXJlY3RzIEdFVCByZXF1ZXN0CisJCQkkcmVzID0gJHJlcS0+Z2V0KCIke3VybH0vaW5kZXgucGhwIik7CisJCQlpZiAoISRyZXMtPmlzX3N1Y2Nlc3MpIHsKKwkJCQkkdXJsX2FmdGVyID0gJHJlcy0+cmVxdWVzdCgpLT51cmkoKTsgIyByZXNvbHZlIGFsbCByZWRpcmVjdGlvbnMKKwkJCQlkaWUgIkZhaWxlZCB0byBnZXQgaG9tZXBhZ2UgQCAke3VybF9hZnRlcn0gdy8gY29kZSAke2NvZGV9XG4iOworCQkJfQorCQl9IGVsc2UgeworCQkJZGllICJGYWlsZWQgdG8gZ2V0ICcke3BhZ2VfbmFtZX0nIEAgJHt1cmxfYWZ0ZXJ9IHcvIGNvZGUgJHtjb2RlfVxuIjsKKwkJfQorCX0KKworCXJldHVybiAkcmVzLT5kZWNvZGVkX2NvbnRlbnQ7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBIZWxwIEZ1bmN0aW9ucyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3N1YiBoZWxwIHsKKwlwcmludCB7KlNURE9VVH0gPDwnRU5EJzsKK3VzYWdlOiBnaXQgbXcgPGNvbW1hbmQ+IDxhcmdzPgorCitnaXQgbXcgY29tbWFuZHMgYXJlOgorICAgIGhlbHAgICAgICAgIERpc3BsYXkgaGVscCBpbmZvcm1hdGlvbiBhYm91dCBnaXQgbXcKKyAgICBwcmV2aWV3ICAgICBQYXJzZSBhbmQgcmVuZGVyIGxvY2FsIGZpbGUgaW50byBIVE1MCitFTkQKKwlleGl0OworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybCBiL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpLnBlcmwKaW5kZXggOWMxNGMxZi4uZjhkN2QyYyAxMDA3NTUKLS0tIGEvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybAorKysgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS5wZXJsCkBAIC0xMywxOSArMTMsMTcgQEAKIAogdXNlIHN0cmljdDsKIHVzZSBNZWRpYVdpa2k6OkFQSTsKK3VzZSBHaXQ7Cit1c2UgR2l0OjpNZWRpYXdpa2kgcXcoY2xlYW5fZmlsZW5hbWUgc211ZGdlX2ZpbGVuYW1lIGNvbm5lY3RfbWF5YmUKKwkJCQkJRU1QVFkgSFRUUF9DT0RFX09LKTsKIHVzZSBEYXRlVGltZTo6Rm9ybWF0OjpJU084NjAxOwotCi0jIEJ5IGRlZmF1bHQsIHVzZSBVVEYtOCB0byBjb21tdW5pY2F0ZSB3aXRoIEdpdCBhbmQgdGhlIHVzZXIKLWJpbm1vZGUgU1RERVJSLCAiOnV0ZjgiOwotYmlubW9kZSBTVERPVVQsICI6dXRmOCI7Ci0KLXVzZSBVUkk6OkVzY2FwZTsKLXVzZSBJUEM6Ok9wZW4yOwotCiB1c2Ugd2FybmluZ3M7CiAKLSMgTWVkaWF3aWtpIGZpbGVuYW1lcyBjYW4gY29udGFpbiBmb3J3YXJkIHNsYXNoZXMuIFRoaXMgdmFyaWFibGUgZGVjaWRlcyBieSB3aGljaCBwYXR0ZXJuIHRoZXkgc2hvdWxkIGJlIHJlcGxhY2VkCi11c2UgY29uc3RhbnQgU0xBU0hfUkVQTEFDRU1FTlQgPT4gIiUyRiI7CisjIEJ5IGRlZmF1bHQsIHVzZSBVVEYtOCB0byBjb21tdW5pY2F0ZSB3aXRoIEdpdCBhbmQgdGhlIHVzZXIKK2Jpbm1vZGUgU1RERVJSLCAnOmVuY29kaW5nKFVURi04KSc7CitiaW5tb2RlIFNURE9VVCwgJzplbmNvZGluZyhVVEYtOCknOworCit1c2UgVVJJOjpFc2NhcGU7CiAKICMgSXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIGRlbGV0ZSBwYWdlcyAobWF5IHJlcXVpcmUgc29tZQogIyBwcml2aWxlZ2VzKS4gRGVsZXRlZCBwYWdlcyBhcmUgcmVwbGFjZWQgd2l0aCB0aGlzIGNvbnRlbnQuCkBAIC0zNiw0NSArMzQsNTcgQEAKIHVzZSBjb25zdGFudCBFTVBUWV9DT05URU5UID0+ICI8IS0tIGVtcHR5IHBhZ2UgLS0+XG4iOwogCiAjIHVzZWQgdG8gcmVmbGVjdCBmaWxlIGNyZWF0aW9uIG9yIGRlbGV0aW9uIGluIGRpZmYuCi11c2UgY29uc3RhbnQgTlVMTF9TSEExID0+ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIjsKK3VzZSBjb25zdGFudCBOVUxMX1NIQTEgPT4gJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnOwogCiAjIFVzZWQgb24gR2l0J3Mgc2lkZSB0byByZWZsZWN0IGVtcHR5IGVkaXQgbWVzc2FnZXMgb24gdGhlIHdpa2kKIHVzZSBjb25zdGFudCBFTVBUWV9NRVNTQUdFID0+ICcqRW1wdHkgTWVkaWFXaWtpIE1lc3NhZ2UqJzsKIAorIyBOdW1iZXIgb2YgcGFnZXMgdGFrZW4gaW50byBhY2NvdW50IGF0IG9uY2UgaW4gc3VibW9kdWxlIGdldF9td19wYWdlX2xpc3QKK3VzZSBjb25zdGFudCBTTElDRV9TSVpFID0+IDUwOworCisjIE51bWJlciBvZiBsaW5rZWQgbWVkaWFmaWxlIHRvIGdldCBhdCBvbmNlIGluIGdldF9saW5rZWRfbWVkaWFmaWxlcworIyBUaGUgcXVlcnkgaXMgc3BsaXQgaW4gc21hbGwgYmF0Y2hlcyBiZWNhdXNlIG9mIHRoZSBNVyBBUEkgbGltaXQgb2YKKyMgdGhlIG51bWJlciBvZiBsaW5rcyB0byBiZSByZXR1cm5lZCAoNTAwIGxpbmtzIG1heCkuCit1c2UgY29uc3RhbnQgQkFUQ0hfU0laRSA9PiAxMDsKKworaWYgKEBBUkdWICE9IDIpIHsKKwlleGl0X2Vycm9yX3VzYWdlKCk7Cit9CisKIG15ICRyZW1vdGVuYW1lID0gJEFSR1ZbMF07CiBteSAkdXJsID0gJEFSR1ZbMV07CiAKICMgQWNjZXB0IGJvdGggc3BhY2Utc2VwYXJhdGVkIGFuZCBtdWx0aXBsZSBrZXlzIGluIGNvbmZpZyBmaWxlLgogIyBTcGFjZXMgc2hvdWxkIGJlIHdyaXR0ZW4gYXMgXyBhbnl3YXkgYmVjYXVzZSB3ZSdsbCB1c2UgY2hvbXAuCi1teSBAdHJhY2tlZF9wYWdlcyA9IHNwbGl0KC9bIFxuXS8sIHJ1bl9naXQoImNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLnBhZ2VzIikpOworbXkgQHRyYWNrZWRfcGFnZXMgPSBzcGxpdCgvWyBcbl0vLCBydW5fZ2l0KCJjb25maWcgLS1nZXQtYWxsIHJlbW90ZS4ke3JlbW90ZW5hbWV9LnBhZ2VzIikpOwogY2hvbXAoQHRyYWNrZWRfcGFnZXMpOwogCiAjIEp1c3QgbGlrZSBAdHJhY2tlZF9wYWdlcywgYnV0IGZvciBNZWRpYVdpa2kgY2F0ZWdvcmllcy4KLW15IEB0cmFja2VkX2NhdGVnb3JpZXMgPSBzcGxpdCgvWyBcbl0vLCBydW5fZ2l0KCJjb25maWcgLS1nZXQtYWxsIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5jYXRlZ29yaWVzIikpOworbXkgQHRyYWNrZWRfY2F0ZWdvcmllcyA9IHNwbGl0KC9bIFxuXS8sIHJ1bl9naXQoImNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLiR7cmVtb3RlbmFtZX0uY2F0ZWdvcmllcyIpKTsKIGNob21wKEB0cmFja2VkX2NhdGVnb3JpZXMpOwogCiAjIEltcG9ydCBtZWRpYSBmaWxlcyBvbiBwdWxsCi1teSAkaW1wb3J0X21lZGlhID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIubWVkaWFpbXBvcnQiKTsKK215ICRpbXBvcnRfbWVkaWEgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4ke3JlbW90ZW5hbWV9Lm1lZGlhaW1wb3J0Iik7CiBjaG9tcCgkaW1wb3J0X21lZGlhKTsKLSRpbXBvcnRfbWVkaWEgPSAoJGltcG9ydF9tZWRpYSBlcSAidHJ1ZSIpOworJGltcG9ydF9tZWRpYSA9ICgkaW1wb3J0X21lZGlhIGVxICd0cnVlJyk7CiAKICMgRXhwb3J0IG1lZGlhIGZpbGVzIG9uIHB1c2gKLW15ICRleHBvcnRfbWVkaWEgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5tZWRpYWV4cG9ydCIpOworbXkgJGV4cG9ydF9tZWRpYSA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCAtLWJvb2wgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubWVkaWFleHBvcnQiKTsKIGNob21wKCRleHBvcnRfbWVkaWEpOwotJGV4cG9ydF9tZWRpYSA9ICEoJGV4cG9ydF9tZWRpYSBlcSAiZmFsc2UiKTsKKyRleHBvcnRfbWVkaWEgPSAhKCRleHBvcnRfbWVkaWEgZXEgJ2ZhbHNlJyk7CiAKLW15ICR3aWtpX2xvZ2luID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5td0xvZ2luIik7CitteSAkd2lraV9sb2dpbiA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuJHtyZW1vdGVuYW1lfS5td0xvZ2luIik7CiAjIE5vdGU6IG13UGFzc3dvcmQgaXMgZGlzY291cnJhZ2VkLiBVc2UgdGhlIGNyZWRlbnRpYWwgc3lzdGVtIGluc3RlYWQuCi1teSAkd2lraV9wYXNzd2QgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiIuICRyZW1vdGVuYW1lIC4iLm13UGFzc3dvcmQiKTsKLW15ICR3aWtpX2RvbWFpbiA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuIi4gJHJlbW90ZW5hbWUgLiIubXdEb21haW4iKTsKK215ICR3aWtpX3Bhc3N3ZCA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuJHtyZW1vdGVuYW1lfS5td1Bhc3N3b3JkIik7CitteSAkd2lraV9kb21haW4gPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubXdEb21haW4iKTsKIGNob21wKCR3aWtpX2xvZ2luKTsKIGNob21wKCR3aWtpX3Bhc3N3ZCk7CiBjaG9tcCgkd2lraV9kb21haW4pOwogCiAjIEltcG9ydCBvbmx5IGxhc3QgcmV2aXNpb25zIChib3RoIGZvciBjbG9uZSBhbmQgZmV0Y2gpCi1teSAkc2hhbGxvd19pbXBvcnQgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4iLiAkcmVtb3RlbmFtZSAuIi5zaGFsbG93Iik7CitteSAkc2hhbGxvd19pbXBvcnQgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4ke3JlbW90ZW5hbWV9LnNoYWxsb3ciKTsKIGNob21wKCRzaGFsbG93X2ltcG9ydCk7Ci0kc2hhbGxvd19pbXBvcnQgPSAoJHNoYWxsb3dfaW1wb3J0IGVxICJ0cnVlIik7Ciskc2hhbGxvd19pbXBvcnQgPSAoJHNoYWxsb3dfaW1wb3J0IGVxICd0cnVlJyk7CiAKICMgRmV0Y2ggKGNsb25lIGFuZCBwdWxsKSBieSByZXZpc2lvbnMgaW5zdGVhZCBvZiBieSBwYWdlcy4gVGhpcyBiZWhhdmlvcgogIyBpcyBtb3JlIGVmZmljaWVudCB3aGVuIHdlIGhhdmUgYSB3aWtpIHdpdGggbG90cyBvZiBwYWdlcyBhbmQgd2UgZmV0Y2gKQEAgLTgyLDE1ICs5MiwxOCBAQAogIyBQb3NzaWJsZSB2YWx1ZXM6CiAjIC0gYnlfcmV2OiBwZXJmb3JtIG9uZSBxdWVyeSBwZXIgbmV3IHJldmlzaW9uIG9uIHRoZSByZW1vdGUgd2lraQogIyAtIGJ5X3BhZ2U6IHF1ZXJ5IGVhY2ggdHJhY2tlZCBwYWdlIGZvciBuZXcgcmV2aXNpb24KLW15ICRmZXRjaF9zdHJhdGVneSA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuJHJlbW90ZW5hbWUuZmV0Y2hTdHJhdGVneSIpOwotdW5sZXNzICgkZmV0Y2hfc3RyYXRlZ3kpIHsKLQkkZmV0Y2hfc3RyYXRlZ3kgPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgbWVkaWF3aWtpLmZldGNoU3RyYXRlZ3kiKTsKK215ICRmZXRjaF9zdHJhdGVneSA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuJHtyZW1vdGVuYW1lfS5mZXRjaFN0cmF0ZWd5Iik7CitpZiAoISRmZXRjaF9zdHJhdGVneSkgeworCSRmZXRjaF9zdHJhdGVneSA9IHJ1bl9naXQoJ2NvbmZpZyAtLWdldCBtZWRpYXdpa2kuZmV0Y2hTdHJhdGVneScpOwogfQogY2hvbXAoJGZldGNoX3N0cmF0ZWd5KTsKLXVubGVzcyAoJGZldGNoX3N0cmF0ZWd5KSB7Ci0JJGZldGNoX3N0cmF0ZWd5ID0gImJ5X3BhZ2UiOworaWYgKCEkZmV0Y2hfc3RyYXRlZ3kpIHsKKwkkZmV0Y2hfc3RyYXRlZ3kgPSAnYnlfcGFnZSc7CiB9CiAKKyMgUmVtZW1iZXIgdGhlIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIGEgcmV2aXNpb24gaWQuCitteSAlYmFzZXRpbWVzdGFtcHM7CisKICMgRHVtYiBwdXNoOiBkb24ndCB1cGRhdGUgbm90ZXMgYW5kIG1lZGlhd2lraSByZWYgdG8gcmVmbGVjdCB0aGUgbGFzdCBwdXNoLgogIwogIyBDb25maWd1cmFibGUgd2l0aCBtZWRpYXdpa2kuZHVtYlB1c2gsIG9yIHBlci1yZW1vdGUgd2l0aApAQCAtMTA1LDQ4ICsxMTgsMjUgQEAKICMgd2lsbCBnZXQgdGhlIGhpc3Rvcnkgd2l0aCBpbmZvcm1hdGlvbiBsb3N0KS4gSWYgdGhlIGltcG9ydCBpcwogIyBkZXRlcm1pbmlzdGljLCB0aGlzIG1lYW5zIGV2ZXJ5Ym9keSBnZXRzIHRoZSBzYW1lIHNoYTEgZm9yIGVhY2gKICMgTWVkaWFXaWtpIHJldmlzaW9uLgotbXkgJGR1bWJfcHVzaCA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCAtLWJvb2wgcmVtb3RlLiRyZW1vdGVuYW1lLmR1bWJQdXNoIik7Ci11bmxlc3MgKCRkdW1iX3B1c2gpIHsKLQkkZHVtYl9wdXNoID0gcnVuX2dpdCgiY29uZmlnIC0tZ2V0IC0tYm9vbCBtZWRpYXdpa2kuZHVtYlB1c2giKTsKK215ICRkdW1iX3B1c2ggPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgLS1ib29sIHJlbW90ZS4ke3JlbW90ZW5hbWV9LmR1bWJQdXNoIik7CitpZiAoISRkdW1iX3B1c2gpIHsKKwkkZHVtYl9wdXNoID0gcnVuX2dpdCgnY29uZmlnIC0tZ2V0IC0tYm9vbCBtZWRpYXdpa2kuZHVtYlB1c2gnKTsKIH0KIGNob21wKCRkdW1iX3B1c2gpOwotJGR1bWJfcHVzaCA9ICgkZHVtYl9wdXNoIGVxICJ0cnVlIik7CiskZHVtYl9wdXNoID0gKCRkdW1iX3B1c2ggZXEgJ3RydWUnKTsKIAogbXkgJHdpa2lfbmFtZSA9ICR1cmw7Ci0kd2lraV9uYW1lID1+IHMvW15cL10qOlwvXC8vLzsKKyR3aWtpX25hbWUgPX4gc3tbXi9dKjovL317fTsKICMgSWYgVVJMIGlzIGxpa2UgaHR0cDovL3VzZXI6cGFzc3dvcmRAZXhhbXBsZS5jb20vLCB3ZSBjbGVhcmx5IGRvbid0CiAjIHdhbnQgdGhlIHBhc3N3b3JkIGluICR3aWtpX25hbWUuIFdoaWxlIHdlJ3JlIHRoZXJlLCBhbHNvIHJlbW92ZSB1c2VyCiAjIGFuZCAnQCcgc2lnbiwgdG8gYXZvaWQgYXV0aG9yIGxpa2UgTVdVc2VyQEhUVFBVc2VyQGhvc3QuY29tCiAkd2lraV9uYW1lID1+IHMvXi4qQC8vOwogCiAjIENvbW1hbmRzIHBhcnNlcgotbXkgJGVudHJ5OwotbXkgQGNtZDsKIHdoaWxlICg8U1RESU4+KSB7CiAJY2hvbXA7Ci0JQGNtZCA9IHNwbGl0KC8gLyk7Ci0JaWYgKGRlZmluZWQoJGNtZFswXSkpIHsKLQkJIyBMaW5lIG5vdCBibGFuawotCQlpZiAoJGNtZFswXSBlcSAiY2FwYWJpbGl0aWVzIikgewotCQkJZGllKCJUb28gbWFueSBhcmd1bWVudHMgZm9yIGNhcGFiaWxpdGllcyIpIHVubGVzcyAoIWRlZmluZWQoJGNtZFsxXSkpOwotCQkJbXdfY2FwYWJpbGl0aWVzKCk7Ci0JCX0gZWxzaWYgKCRjbWRbMF0gZXEgImxpc3QiKSB7Ci0JCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3IgbGlzdCIpIHVubGVzcyAoIWRlZmluZWQoJGNtZFsyXSkpOwotCQkJbXdfbGlzdCgkY21kWzFdKTsKLQkJfSBlbHNpZiAoJGNtZFswXSBlcSAiaW1wb3J0IikgewotCQkJZGllKCJJbnZhbGlkIGFyZ3VtZW50cyBmb3IgaW1wb3J0IikgdW5sZXNzICgkY21kWzFdIG5lICIiICYmICFkZWZpbmVkKCRjbWRbMl0pKTsKLQkJCW13X2ltcG9ydCgkY21kWzFdKTsKLQkJfSBlbHNpZiAoJGNtZFswXSBlcSAib3B0aW9uIikgewotCQkJZGllKCJUb28gbWFueSBhcmd1bWVudHMgZm9yIG9wdGlvbiIpIHVubGVzcyAoJGNtZFsxXSBuZSAiIiAmJiAkY21kWzJdIG5lICIiICYmICFkZWZpbmVkKCRjbWRbM10pKTsKLQkJCW13X29wdGlvbigkY21kWzFdLCRjbWRbMl0pOwotCQl9IGVsc2lmICgkY21kWzBdIGVxICJwdXNoIikgewotCQkJbXdfcHVzaCgkY21kWzFdKTsKLQkJfSBlbHNlIHsKLQkJCXByaW50IFNUREVSUiAiVW5rbm93biBjb21tYW5kLiBBYm9ydGluZy4uLlxuIjsKLQkJCWxhc3Q7Ci0JCX0KLQl9IGVsc2UgewotCQkjIGJsYW5rIGxpbmU6IHdlIHNob3VsZCB0ZXJtaW5hdGUKKworCWlmICghcGFyc2VfY29tbWFuZCgkXykpIHsKIAkJbGFzdDsKIAl9CiAKQEAgLTE1NiwxMDcgKzE0Niw5MSBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGdW5jdGlvbnMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLSMjIGNyZWRlbnRpYWwgQVBJIG1hbmFnZW1lbnQgKGdlbmVyaWMgZnVuY3Rpb25zKQotCi1zdWIgY3JlZGVudGlhbF9yZWFkIHsKLQlteSAlY3JlZGVudGlhbDsKLQlteSAkcmVhZGVyID0gc2hpZnQ7Ci0JbXkgJG9wID0gc2hpZnQ7Ci0Jd2hpbGUgKDwkcmVhZGVyPikgewotCQlteSAoJGtleSwgJHZhbHVlKSA9IC8oW149XSopPSguKikvOwotCQlpZiAobm90IGRlZmluZWQgJGtleSkgewotCQkJZGllICJFUlJPUiByZWNlaXZpbmcgcmVzcG9uc2UgZnJvbSBnaXQgY3JlZGVudGlhbCAkb3A6XG4kX1xuIjsKLQkJfQotCQkkY3JlZGVudGlhbHska2V5fSA9ICR2YWx1ZTsKLQl9Ci0JcmV0dXJuICVjcmVkZW50aWFsOworIyMgZXJyb3IgaGFuZGxpbmcKK3N1YiBleGl0X2Vycm9yX3VzYWdlIHsKKwlkaWUgIkVSUk9SOiBnaXQtcmVtb3RlLW1lZGlhd2lraSBtb2R1bGUgd2FzIG5vdCBjYWxsZWQgd2l0aCBhIGNvcnJlY3QgbnVtYmVyIG9mXG4iIC4KKwkgICAgInBhcmFtZXRlcnNcbiIgLgorCSAgICAiWW91IG1heSBvYnRhaW4gdGhpcyBlcnJvciBiZWNhdXNlIHlvdSBhdHRlbXB0ZWQgdG8gcnVuIHRoZSBnaXQtcmVtb3RlLW1lZGlhd2lraVxuIiAuCisgICAgICAgICAgICAibW9kdWxlIGRpcmVjdGx5LlxuIiAuCisJICAgICJUaGlzIG1vZHVsZSBjYW4gYmUgdXNlZCB0aGUgZm9sbG93aW5nIHdheTpcbiIgLgorCSAgICAiXHRnaXQgY2xvbmUgbWVkaWF3aWtpOi8vPGFkZHJlc3Mgb2YgYSBtZWRpYXdpa2k+XG4iIC4KKwkgICAgIlRoZW4sIHVzZSBnaXQgY29tbWl0LCBwdXNoIGFuZCBwdWxsIGFzIHdpdGggZXZlcnkgbm9ybWFsIGdpdCByZXBvc2l0b3J5LlxuIjsKIH0KIAotc3ViIGNyZWRlbnRpYWxfd3JpdGUgewotCW15ICRjcmVkZW50aWFsID0gc2hpZnQ7Ci0JbXkgJHdyaXRlciA9IHNoaWZ0OwotCSMgdXJsIG92ZXJ3cml0ZXMgb3RoZXIgZmllbGRzLCBzbyBpdCBtdXN0IGNvbWUgZmlyc3QKLQlwcmludCAkd3JpdGVyICJ1cmw9JGNyZWRlbnRpYWwtPnt1cmx9XG4iIGlmIGV4aXN0cyAkY3JlZGVudGlhbC0+e3VybH07Ci0Jd2hpbGUgKG15ICgka2V5LCAkdmFsdWUpID0gZWFjaCglJGNyZWRlbnRpYWwpICkgewotCQlpZiAobGVuZ3RoICR2YWx1ZSAmJiAka2V5IG5lICd1cmwnKSB7Ci0JCQlwcmludCAkd3JpdGVyICIka2V5PSR2YWx1ZVxuIjsKLQkJfQorc3ViIHBhcnNlX2NvbW1hbmQgeworCW15ICgkbGluZSkgPSBAXzsKKwlteSBAY21kID0gc3BsaXQoLyAvLCAkbGluZSk7CisJaWYgKCFkZWZpbmVkICRjbWRbMF0pIHsKKwkJcmV0dXJuIDA7CiAJfQotfQotCi1zdWIgY3JlZGVudGlhbF9ydW4gewotCW15ICRvcCA9IHNoaWZ0OwotCW15ICRjcmVkZW50aWFsID0gc2hpZnQ7Ci0JbXkgJHBpZCA9IG9wZW4yKG15ICRyZWFkZXIsIG15ICR3cml0ZXIsICJnaXQgY3JlZGVudGlhbCAkb3AiKTsKLQljcmVkZW50aWFsX3dyaXRlKCRjcmVkZW50aWFsLCAkd3JpdGVyKTsKLQlwcmludCAkd3JpdGVyICJcbiI7Ci0JY2xvc2UoJHdyaXRlcik7Ci0KLQlpZiAoJG9wIGVxICJmaWxsIikgewotCQklJGNyZWRlbnRpYWwgPSBjcmVkZW50aWFsX3JlYWQoJHJlYWRlciwgJG9wKTsKKwlpZiAoJGNtZFswXSBlcSAnY2FwYWJpbGl0aWVzJykgeworCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3IgY2FwYWJpbGl0aWVzXG4iKQorCQkgICAgaWYgKGRlZmluZWQoJGNtZFsxXSkpOworCQltd19jYXBhYmlsaXRpZXMoKTsKKwl9IGVsc2lmICgkY21kWzBdIGVxICdsaXN0JykgeworCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3IgbGlzdFxuIikgaWYgKGRlZmluZWQoJGNtZFsyXSkpOworCQltd19saXN0KCRjbWRbMV0pOworCX0gZWxzaWYgKCRjbWRbMF0gZXEgJ2ltcG9ydCcpIHsKKwkJZGllKCJJbnZhbGlkIGFyZ3VtZW50IGZvciBpbXBvcnRcbiIpCisJCSAgICBpZiAoJGNtZFsxXSBlcSBFTVBUWSk7CisJCWRpZSgiVG9vIG1hbnkgYXJndW1lbnRzIGZvciBpbXBvcnRcbiIpCisJCSAgICBpZiAoZGVmaW5lZCgkY21kWzJdKSk7CisJCW13X2ltcG9ydCgkY21kWzFdKTsKKwl9IGVsc2lmICgkY21kWzBdIGVxICdvcHRpb24nKSB7CisJCWRpZSgiSW52YWxpZCBhcmd1bWVudHMgZm9yIG9wdGlvblxuIikKKwkJICAgIGlmICgkY21kWzFdIGVxIEVNUFRZIHx8ICRjbWRbMl0gZXEgRU1QVFkpOworCQlkaWUoIlRvbyBtYW55IGFyZ3VtZW50cyBmb3Igb3B0aW9uXG4iKQorCQkgICAgaWYgKGRlZmluZWQoJGNtZFszXSkpOworCQltd19vcHRpb24oJGNtZFsxXSwkY21kWzJdKTsKKwl9IGVsc2lmICgkY21kWzBdIGVxICdwdXNoJykgeworCQltd19wdXNoKCRjbWRbMV0pOwogCX0gZWxzZSB7Ci0JCWlmICg8JHJlYWRlcj4pIHsKLQkJCWRpZSAiRVJST1Igd2hpbGUgcnVubmluZyBnaXQgY3JlZGVudGlhbCAkb3A6XG4kXyI7Ci0JCX0KKwkJcHJpbnQgeypTVERFUlJ9ICJVbmtub3duIGNvbW1hbmQuIEFib3J0aW5nLi4uXG4iOworCQlyZXR1cm4gMDsKIAl9Ci0JY2xvc2UoJHJlYWRlcik7Ci0Jd2FpdHBpZCgkcGlkLCAwKTsKLQlteSAkY2hpbGRfZXhpdF9zdGF0dXMgPSAkPyA+PiA4OwotCWlmICgkY2hpbGRfZXhpdF9zdGF0dXMgIT0gMCkgewotCQlkaWUgIidnaXQgY3JlZGVudGlhbCAkb3AnIGZhaWxlZCB3aXRoIGNvZGUgJGNoaWxkX2V4aXRfc3RhdHVzLiI7Ci0JfQorCXJldHVybiAxOwogfQogCiAjIE1lZGlhV2lraSBBUEkgaW5zdGFuY2UsIGNyZWF0ZWQgbGF6aWx5LgogbXkgJG1lZGlhd2lraTsKIAotc3ViIG13X2Nvbm5lY3RfbWF5YmUgewotCWlmICgkbWVkaWF3aWtpKSB7Ci0JCXJldHVybjsKK3N1YiBmYXRhbF9td19lcnJvciB7CisJbXkgJGFjdGlvbiA9IHNoaWZ0OworCXByaW50IFNUREVSUiAiZmF0YWw6IGNvdWxkIG5vdCAkYWN0aW9uLlxuIjsKKwlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOworCWlmICgkdXJsID1+IC9eaHR0cHMvKSB7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2VcbiI7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IGFuZCB0aGUgU1NMIGNlcnRpZmljYXRlIGlzIGNvcnJlY3QuXG4iOworCX0gZWxzZSB7CisJCXByaW50IFNUREVSUiAiZmF0YWw6IG1ha2Ugc3VyZSAnJHVybC9hcGkucGhwJyBpcyBhIHZhbGlkIHBhZ2UuXG4iOwogCX0KLQkkbWVkaWF3aWtpID0gTWVkaWFXaWtpOjpBUEktPm5ldzsKLQkkbWVkaWF3aWtpLT57Y29uZmlnfS0+e2FwaV91cmx9ID0gIiR1cmwvYXBpLnBocCI7Ci0JaWYgKCR3aWtpX2xvZ2luKSB7Ci0JCW15ICVjcmVkZW50aWFsID0gKHVybCA9PiAkdXJsKTsKLQkJJGNyZWRlbnRpYWx7dXNlcm5hbWV9ID0gJHdpa2lfbG9naW47Ci0JCSRjcmVkZW50aWFse3Bhc3N3b3JkfSA9ICR3aWtpX3Bhc3N3ZDsKLQkJY3JlZGVudGlhbF9ydW4oImZpbGwiLCBcJWNyZWRlbnRpYWwpOwotCQlteSAkcmVxdWVzdCA9IHtsZ25hbWUgPT4gJGNyZWRlbnRpYWx7dXNlcm5hbWV9LAotCQkJICAgICAgIGxncGFzc3dvcmQgPT4gJGNyZWRlbnRpYWx7cGFzc3dvcmR9LAotCQkJICAgICAgIGxnZG9tYWluID0+ICR3aWtpX2RvbWFpbn07Ci0JCWlmICgkbWVkaWF3aWtpLT5sb2dpbigkcmVxdWVzdCkpIHsKLQkJCWNyZWRlbnRpYWxfcnVuKCJhcHByb3ZlIiwgXCVjcmVkZW50aWFsKTsKLQkJCXByaW50IFNUREVSUiAiTG9nZ2VkIGluIG1lZGlhd2lraSB1c2VyIFwiJGNyZWRlbnRpYWx7dXNlcm5hbWV9XCIuXG4iOwotCQl9IGVsc2UgewotCQkJcHJpbnQgU1RERVJSICJGYWlsZWQgdG8gbG9nIGluIG1lZGlhd2lraSB1c2VyIFwiJGNyZWRlbnRpYWx7dXNlcm5hbWV9XCIgb24gJHVybFxuIjsKLQkJCXByaW50IFNUREVSUiAiICAoZXJyb3IgIiAuCi0JCQkJJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzogJyAuCi0JCQkJJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9IC4gIilcbiI7Ci0JCQljcmVkZW50aWFsX3J1bigicmVqZWN0IiwgXCVjcmVkZW50aWFsKTsKLQkJCWV4aXQgMTsKLQkJfQotCX0KKwlwcmludCBTVERFUlIgImZhdGFsOiAoZXJyb3IgIiAuCisJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6ICcgLgorCSAgICAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLiAiKVxuIjsKKwlleGl0IDE7CiB9CiAKICMjIEZ1bmN0aW9ucyBmb3IgbGlzdGluZyBwYWdlcyBvbiB0aGUgcmVtb3RlIHdpa2kKIHN1YiBnZXRfbXdfdHJhY2tlZF9wYWdlcyB7CiAJbXkgJHBhZ2VzID0gc2hpZnQ7CiAJZ2V0X213X3BhZ2VfbGlzdChcQHRyYWNrZWRfcGFnZXMsICRwYWdlcyk7CisJcmV0dXJuOwogfQogCiBzdWIgZ2V0X213X3BhZ2VfbGlzdCB7CiAJbXkgJHBhZ2VfbGlzdCA9IHNoaWZ0OwogCW15ICRwYWdlcyA9IHNoaWZ0OwotCW15IEBzb21lX3BhZ2VzID0gQCRwYWdlX2xpc3Q7CisJbXkgQHNvbWVfcGFnZXMgPSBAeyRwYWdlX2xpc3R9OwogCXdoaWxlIChAc29tZV9wYWdlcykgewotCQlteSAkbGFzdCA9IDUwOwotCQlpZiAoJCNzb21lX3BhZ2VzIDwgJGxhc3QpIHsKLQkJCSRsYXN0ID0gJCNzb21lX3BhZ2VzOworCQlteSAkbGFzdF9wYWdlID0gU0xJQ0VfU0laRTsKKwkJaWYgKCQjc29tZV9wYWdlcyA8ICRsYXN0X3BhZ2UpIHsKKwkJCSRsYXN0X3BhZ2UgPSAkI3NvbWVfcGFnZXM7CiAJCX0KLQkJbXkgQHNsaWNlID0gQHNvbWVfcGFnZXNbMC4uJGxhc3RdOworCQlteSBAc2xpY2UgPSBAc29tZV9wYWdlc1swLi4kbGFzdF9wYWdlXTsKIAkJZ2V0X213X2ZpcnN0X3BhZ2VzKFxAc2xpY2UsICRwYWdlcyk7Ci0JCUBzb21lX3BhZ2VzID0gQHNvbWVfcGFnZXNbNTEuLiQjc29tZV9wYWdlc107CisJCUBzb21lX3BhZ2VzID0gQHNvbWVfcGFnZXNbKFNMSUNFX1NJWkUgKyAxKS4uJCNzb21lX3BhZ2VzXTsKIAl9CisJcmV0dXJuOwogfQogCiBzdWIgZ2V0X213X3RyYWNrZWRfY2F0ZWdvcmllcyB7CkBAIC0yNjYsNyArMjQwLDcgQEAKIAkJCSMgTWVkaWF3aWtpIHJlcXVpcmVzIHRoZSBDYXRlZ29yeQogCQkJIyBwcmVmaXgsIGJ1dCBsZXQncyBub3QgZm9yY2UgdGhlIHVzZXIKIAkJCSMgdG8gc3BlY2lmeSBpdC4KLQkJCSRjYXRlZ29yeSA9ICJDYXRlZ29yeToiIC4gJGNhdGVnb3J5OworCQkJJGNhdGVnb3J5ID0gIkNhdGVnb3J5OiR7Y2F0ZWdvcnl9IjsKIAkJfQogCQlteSAkbXdfcGFnZXMgPSAkbWVkaWF3aWtpLT5saXN0KCB7CiAJCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKQEAgLTI3NCwxMSArMjQ4LDEyIEBACiAJCQljbXRpdGxlID0+ICRjYXRlZ29yeSwKIAkJCWNtbGltaXQgPT4gJ21heCcgfSApCiAJCQl8fCBkaWUgJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9IC4gJzogJwotCQkJCS4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9OworCQkJCS4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9IC4gIlxuIjsKIAkJZm9yZWFjaCBteSAkcGFnZSAoQHskbXdfcGFnZXN9KSB7CiAJCQkkcGFnZXMtPnskcGFnZS0+e3RpdGxlfX0gPSAkcGFnZTsKIAkJfQogCX0KKwlyZXR1cm47CiB9CiAKIHN1YiBnZXRfbXdfYWxsX3BhZ2VzIHsKQEAgLTI5MCwxNCArMjY1LDEyIEBACiAJCWFwbGltaXQgPT4gJ21heCcKIAl9KTsKIAlpZiAoIWRlZmluZWQoJG13X3BhZ2VzKSkgewotCQlwcmludCBTVERFUlIgImZhdGFsOiBjb3VsZCBub3QgZ2V0IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMuXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiBtYWtlIHN1cmUgJyR1cmwvYXBpLnBocCcgaXMgYSB2YWxpZCBwYWdlLlxuIjsKLQkJZXhpdCAxOworCQlmYXRhbF9td19lcnJvcigiZ2V0IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMiKTsKIAl9CiAJZm9yZWFjaCBteSAkcGFnZSAoQHskbXdfcGFnZXN9KSB7CiAJCSRwYWdlcy0+eyRwYWdlLT57dGl0bGV9fSA9ICRwYWdlOwogCX0KKwlyZXR1cm47CiB9CiAKICMgcXVlcmllcyB0aGUgd2lraSBmb3IgYSBzZXQgb2YgcGFnZXMuIE1lYW50IHRvIGJlIHVzZWQgd2l0aGluIGEgbG9vcApAQCAtMzE2LDI1ICsyODksMjMgQEAKIAkJdGl0bGVzID0+ICR0aXRsZXMsCiAJfSk7CiAJaWYgKCFkZWZpbmVkKCRtd19wYWdlcykpIHsKLQkJcHJpbnQgU1RERVJSICJmYXRhbDogY291bGQgbm90IHF1ZXJ5IHRoZSBsaXN0IG9mIHdpa2kgcGFnZXMuXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiBtYWtlIHN1cmUgJyR1cmwvYXBpLnBocCcgaXMgYSB2YWxpZCBwYWdlLlxuIjsKLQkJZXhpdCAxOworCQlmYXRhbF9td19lcnJvcigicXVlcnkgdGhlIGxpc3Qgb2Ygd2lraSBwYWdlcyIpOwogCX0KIAl3aGlsZSAobXkgKCRpZCwgJHBhZ2UpID0gZWFjaCgleyRtd19wYWdlcy0+e3F1ZXJ5fS0+e3BhZ2VzfX0pKSB7CiAJCWlmICgkaWQgPCAwKSB7Ci0JCQlwcmludCBTVERFUlIgIldhcm5pbmc6IHBhZ2UgJHBhZ2UtPnt0aXRsZX0gbm90IGZvdW5kIG9uIHdpa2lcbiI7CisJCQlwcmludCB7KlNUREVSUn0gIldhcm5pbmc6IHBhZ2UgJHBhZ2UtPnt0aXRsZX0gbm90IGZvdW5kIG9uIHdpa2lcbiI7CiAJCX0gZWxzZSB7CiAJCQkkcGFnZXMtPnskcGFnZS0+e3RpdGxlfX0gPSAkcGFnZTsKIAkJfQogCX0KKwlyZXR1cm47CiB9CiAKICMgR2V0IHRoZSBsaXN0IG9mIHBhZ2VzIHRvIGJlIGZldGNoZWQgYWNjb3JkaW5nIHRvIGNvbmZpZ3VyYXRpb24uCiBzdWIgZ2V0X213X3BhZ2VzIHsKLQltd19jb25uZWN0X21heWJlKCk7CisJJG1lZGlhd2lraSA9IGNvbm5lY3RfbWF5YmUoJG1lZGlhd2lraSwgJHJlbW90ZW5hbWUsICR1cmwpOwogCi0JcHJpbnQgU1RERVJSICJMaXN0aW5nIHBhZ2VzIG9uIHJlbW90ZSB3aWtpLi4uXG4iOworCXByaW50IHsqU1RERVJSfSAiTGlzdGluZyBwYWdlcyBvbiByZW1vdGUgd2lraS4uLlxuIjsKIAogCW15ICVwYWdlczsgIyBoYXNoIG9uIHBhZ2UgdGl0bGVzIHRvIGF2b2lkIGR1cGxpY2F0ZXMKIAlteSAkdXNlcl9kZWZpbmVkOwpAQCAtMzUyLDE0ICszMjMsMTQgQEAKIAkJZ2V0X213X2FsbF9wYWdlcyhcJXBhZ2VzKTsKIAl9CiAJaWYgKCRpbXBvcnRfbWVkaWEpIHsKLQkJcHJpbnQgU1RERVJSICJHZXR0aW5nIG1lZGlhIGZpbGVzIGZvciBzZWxlY3RlZCBwYWdlcy4uLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJHZXR0aW5nIG1lZGlhIGZpbGVzIGZvciBzZWxlY3RlZCBwYWdlcy4uLlxuIjsKIAkJaWYgKCR1c2VyX2RlZmluZWQpIHsKIAkJCWdldF9saW5rZWRfbWVkaWFmaWxlcyhcJXBhZ2VzKTsKIAkJfSBlbHNlIHsKIAkJCWdldF9hbGxfbWVkaWFmaWxlcyhcJXBhZ2VzKTsKIAkJfQogCX0KLQlwcmludCBTVERFUlIgKHNjYWxhciBrZXlzICVwYWdlcykgLiAiIHBhZ2VzIGZvdW5kLlxuIjsKKwlwcmludCB7KlNUREVSUn0gKHNjYWxhciBrZXlzICVwYWdlcykgLiAiIHBhZ2VzIGZvdW5kLlxuIjsKIAlyZXR1cm4gJXBhZ2VzOwogfQogCkBAIC0zNjcsOSArMzM4LDEzIEBACiAjICAgICAgICAkb3V0ID0gcnVuX2dpdCgiY29tbWFuZCBhcmdzIiwgInJhdyIpOyAjIGRvbid0IGludGVycHJldCBvdXRwdXQgYXMgVVRGLTguCiBzdWIgcnVuX2dpdCB7CiAJbXkgJGFyZ3MgPSBzaGlmdDsKLQlteSAkZW5jb2RpbmcgPSAoc2hpZnQgfHwgImVuY29kaW5nKFVURi04KSIpOwotCW9wZW4obXkgJGdpdCwgIi18OiRlbmNvZGluZyIsICJnaXQgIiAuICRhcmdzKTsKLQlteSAkcmVzID0gZG8geyBsb2NhbCAkLzsgPCRnaXQ+IH07CisJbXkgJGVuY29kaW5nID0gKHNoaWZ0IHx8ICdlbmNvZGluZyhVVEYtOCknKTsKKwlvcGVuKG15ICRnaXQsICItfDoke2VuY29kaW5nfSIsICJnaXQgJHthcmdzfSIpCisJICAgIG9yIGRpZSAiVW5hYmxlIHRvIGZvcms6ICQhXG4iOworCW15ICRyZXMgPSBkbyB7CisJCWxvY2FsICQvID0gdW5kZWY7CisJCTwkZ2l0PgorCX07CiAJY2xvc2UoJGdpdCk7CiAKIAlyZXR1cm4gJHJlczsKQEAgLTM4NCwyNyArMzU5LDI2IEBACiAJbXkgJG13X3BhZ2VzID0gJG1lZGlhd2lraS0+bGlzdCh7CiAJCWFjdGlvbiA9PiAncXVlcnknLAogCQlsaXN0ID0+ICdhbGxwYWdlcycsCi0JCWFwbmFtZXNwYWNlID0+IGdldF9td19uYW1lc3BhY2VfaWQoIkZpbGUiKSwKKwkJYXBuYW1lc3BhY2UgPT4gZ2V0X213X25hbWVzcGFjZV9pZCgnRmlsZScpLAogCQlhcGxpbWl0ID0+ICdtYXgnCiAJfSk7CiAJaWYgKCFkZWZpbmVkKCRtd19wYWdlcykpIHsKLQkJcHJpbnQgU1RERVJSICJmYXRhbDogY291bGQgbm90IGdldCB0aGUgbGlzdCBvZiBwYWdlcyBmb3IgbWVkaWEgZmlsZXMuXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOwotCQlwcmludCBTVERFUlIgImZhdGFsOiBtYWtlIHN1cmUgJyR1cmwvYXBpLnBocCcgaXMgYSB2YWxpZCBwYWdlLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJmYXRhbDogY291bGQgbm90IGdldCB0aGUgbGlzdCBvZiBwYWdlcyBmb3IgbWVkaWEgZmlsZXMuXG4iOworCQlwcmludCB7KlNUREVSUn0gImZhdGFsOiAnJHVybCcgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgbWVkaWF3aWtpXG4iOworCQlwcmludCB7KlNUREVSUn0gImZhdGFsOiBtYWtlIHN1cmUgJyR1cmwvYXBpLnBocCcgaXMgYSB2YWxpZCBwYWdlLlxuIjsKIAkJZXhpdCAxOwogCX0KIAlmb3JlYWNoIG15ICRwYWdlIChAeyRtd19wYWdlc30pIHsKIAkJJHBhZ2VzLT57JHBhZ2UtPnt0aXRsZX19ID0gJHBhZ2U7CiAJfQorCXJldHVybjsKIH0KIAogc3ViIGdldF9saW5rZWRfbWVkaWFmaWxlcyB7CiAJbXkgJHBhZ2VzID0gc2hpZnQ7Ci0JbXkgQHRpdGxlcyA9IG1hcCAkXy0+e3RpdGxlfSwgdmFsdWVzKCV7JHBhZ2VzfSk7CisJbXkgQHRpdGxlcyA9IG1hcCB7ICRfLT57dGl0bGV9IH0gdmFsdWVzKCV7JHBhZ2VzfSk7CiAKLQkjIFRoZSBxdWVyeSBpcyBzcGxpdCBpbiBzbWFsbCBiYXRjaGVzIGJlY2F1c2Ugb2YgdGhlIE1XIEFQSSBsaW1pdCBvZgotCSMgdGhlIG51bWJlciBvZiBsaW5rcyB0byBiZSByZXR1cm5lZCAoNTAwIGxpbmtzIG1heCkuCi0JbXkgJGJhdGNoID0gMTA7CisJbXkgJGJhdGNoID0gQkFUQ0hfU0laRTsKIAl3aGlsZSAoQHRpdGxlcykgewogCQlpZiAoJCN0aXRsZXMgPCAkYmF0Y2gpIHsKIAkJCSRiYXRjaCA9ICQjdGl0bGVzOwpAQCAtNDIwLDcgKzM5NCw3IEBACiAJCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKIAkJCXByb3AgPT4gJ2xpbmtzfGltYWdlcycsCiAJCQl0aXRsZXMgPT4gJG13X3RpdGxlcywKLQkJCXBsbmFtZXNwYWNlID0+IGdldF9td19uYW1lc3BhY2VfaWQoIkZpbGUiKSwKKwkJCXBsbmFtZXNwYWNlID0+IGdldF9td19uYW1lc3BhY2VfaWQoJ0ZpbGUnKSwKIAkJCXBsbGltaXQgPT4gJ21heCcKIAkJfTsKIAkJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOwpAQCAtNDI4LDExICs0MDIsMTMgQEAKIAkJd2hpbGUgKG15ICgkaWQsICRwYWdlKSA9IGVhY2goJXskcmVzdWx0LT57cXVlcnl9LT57cGFnZXN9fSkpIHsKIAkJCW15IEBtZWRpYV90aXRsZXM7CiAJCQlpZiAoZGVmaW5lZCgkcGFnZS0+e2xpbmtzfSkpIHsKLQkJCQlteSBAbGlua190aXRsZXMgPSBtYXAgJF8tPnt0aXRsZX0sIEB7JHBhZ2UtPntsaW5rc319OworCQkJCW15IEBsaW5rX3RpdGxlcworCQkJCSAgICA9IG1hcCB7ICRfLT57dGl0bGV9IH0gQHskcGFnZS0+e2xpbmtzfX07CiAJCQkJcHVzaChAbWVkaWFfdGl0bGVzLCBAbGlua190aXRsZXMpOwogCQkJfQogCQkJaWYgKGRlZmluZWQoJHBhZ2UtPntpbWFnZXN9KSkgewotCQkJCW15IEBpbWFnZV90aXRsZXMgPSBtYXAgJF8tPnt0aXRsZX0sIEB7JHBhZ2UtPntpbWFnZXN9fTsKKwkJCQlteSBAaW1hZ2VfdGl0bGVzCisJCQkJICAgID0gbWFwIHsgJF8tPnt0aXRsZX0gfSBAeyRwYWdlLT57aW1hZ2VzfX07CiAJCQkJcHVzaChAbWVkaWFfdGl0bGVzLCBAaW1hZ2VfdGl0bGVzKTsKIAkJCX0KIAkJCWlmIChAbWVkaWFfdGl0bGVzKSB7CkBAIC00NDIsNiArNDE4LDcgQEAKIAogCQlAdGl0bGVzID0gQHRpdGxlc1soJGJhdGNoKzEpLi4kI3RpdGxlc107CiAJfQorCXJldHVybjsKIH0KIAogc3ViIGdldF9td19tZWRpYWZpbGVfZm9yX3BhZ2VfcmV2aXNpb24gewpAQCAtNDU1LDcgKzQzMiw3IEBACiAJbXkgJHF1ZXJ5ID0gewogCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKIAkJcHJvcCA9PiAnaW1hZ2VpbmZvJywKLQkJdGl0bGVzID0+ICJGaWxlOiIgLiAkZmlsZW5hbWUsCisJCXRpdGxlcyA9PiAiRmlsZToke2ZpbGVuYW1lfSIsCiAJCWlpc3RhcnQgPT4gJHRpbWVzdGFtcCwKIAkJaWllbmQgPT4gJHRpbWVzdGFtcCwKIAkJaWlwcm9wID0+ICd0aW1lc3RhbXB8YXJjaGl2ZW5hbWV8dXJsJywKQEAgLTQ3Myw1MyArNDUwLDUwIEBACiAJCSRtZWRpYWZpbGV7dGltZXN0YW1wfSA9ICRmaWxlaW5mby0+e3RpbWVzdGFtcH07CiAJCSMgTWVkaWF3aWtpOjpBUEkncyBkb3dubG9hZCBmdW5jdGlvbiBkb2Vzbid0IHN1cHBvcnQgaHR0cHMgVVJMcwogCQkjIGFuZCBjYW4ndCBkb3dubG9hZCBvbGQgdmVyc2lvbnMgb2YgZmlsZXMuCi0JCXByaW50IFNUREVSUiAiXHREb3dubG9hZGluZyBmaWxlICRtZWRpYWZpbGV7dGl0bGV9LCB2ZXJzaW9uICRtZWRpYWZpbGV7dGltZXN0YW1wfVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJcdERvd25sb2FkaW5nIGZpbGUgJG1lZGlhZmlsZXt0aXRsZX0sIHZlcnNpb24gJG1lZGlhZmlsZXt0aW1lc3RhbXB9XG4iOwogCQkkbWVkaWFmaWxle2NvbnRlbnR9ID0gZG93bmxvYWRfbXdfbWVkaWFmaWxlKCRmaWxlaW5mby0+e3VybH0pOwogCX0KIAlyZXR1cm4gJW1lZGlhZmlsZTsKIH0KIAogc3ViIGRvd25sb2FkX213X21lZGlhZmlsZSB7Ci0JbXkgJHVybCA9IHNoaWZ0OworCW15ICRkb3dubG9hZF91cmwgPSBzaGlmdDsKIAotCW15ICRyZXNwb25zZSA9ICRtZWRpYXdpa2ktPnt1YX0tPmdldCgkdXJsKTsKLQlpZiAoJHJlc3BvbnNlLT5jb2RlID09IDIwMCkgeworCW15ICRyZXNwb25zZSA9ICRtZWRpYXdpa2ktPnt1YX0tPmdldCgkZG93bmxvYWRfdXJsKTsKKwlpZiAoJHJlc3BvbnNlLT5jb2RlID09IEhUVFBfQ09ERV9PSykgewogCQlyZXR1cm4gJHJlc3BvbnNlLT5kZWNvZGVkX2NvbnRlbnQ7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICJFcnJvciBkb3dubG9hZGluZyBtZWRpYWZpbGUgZnJvbSA6XG4iOwotCQlwcmludCBTVERFUlIgIlVSTDogJHVybFxuIjsKLQkJcHJpbnQgU1RERVJSICJTZXJ2ZXIgcmVzcG9uc2U6ICIgLiAkcmVzcG9uc2UtPmNvZGUgLiAiICIgLiAkcmVzcG9uc2UtPm1lc3NhZ2UgLiAiXG4iOworCQlwcmludCB7KlNUREVSUn0gIkVycm9yIGRvd25sb2FkaW5nIG1lZGlhZmlsZSBmcm9tIDpcbiI7CisJCXByaW50IHsqU1RERVJSfSAiVVJMOiAke2Rvd25sb2FkX3VybH1cbiI7CisJCXByaW50IHsqU1RERVJSfSAnU2VydmVyIHJlc3BvbnNlOiAnIC4gJHJlc3BvbnNlLT5jb2RlIC4gcXsgfSAuICRyZXNwb25zZS0+bWVzc2FnZSAuICJcbiI7CiAJCWV4aXQgMTsKIAl9CiB9CiAKIHN1YiBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbiB7CiAJIyBHZXQgbm90ZSByZWdhcmRpbmcgbGFzdCBtZWRpYXdpa2kgcmV2aXNpb24KLQlteSAkbm90ZSA9IHJ1bl9naXQoIm5vdGVzIC0tcmVmPSRyZW1vdGVuYW1lL21lZGlhd2lraSBzaG93IHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lL21hc3RlciAyPi9kZXYvbnVsbCIpOworCW15ICRub3RlID0gcnVuX2dpdCgibm90ZXMgLS1yZWY9JHtyZW1vdGVuYW1lfS9tZWRpYXdpa2kgc2hvdyByZWZzL21lZGlhd2lraS8ke3JlbW90ZW5hbWV9L21hc3RlciAyPi9kZXYvbnVsbCIpOwogCW15IEBub3RlX2luZm8gPSBzcGxpdCgvIC8sICRub3RlKTsKIAogCW15ICRsYXN0cmV2aXNpb25fbnVtYmVyOwotCWlmICghKGRlZmluZWQoJG5vdGVfaW5mb1swXSkgJiYgJG5vdGVfaW5mb1swXSBlcSAibWVkaWF3aWtpX3JldmlzaW9uOiIpKSB7Ci0JCXByaW50IFNUREVSUiAiTm8gcHJldmlvdXMgbWVkaWF3aWtpIHJldmlzaW9uIGZvdW5kIjsKKwlpZiAoIShkZWZpbmVkKCRub3RlX2luZm9bMF0pICYmICRub3RlX2luZm9bMF0gZXEgJ21lZGlhd2lraV9yZXZpc2lvbjonKSkgeworCQlwcmludCB7KlNUREVSUn0gJ05vIHByZXZpb3VzIG1lZGlhd2lraSByZXZpc2lvbiBmb3VuZCc7CiAJCSRsYXN0cmV2aXNpb25fbnVtYmVyID0gMDsKIAl9IGVsc2UgewogCQkjIE5vdGVzIGFyZSBmb3JtYXR0ZWQgOiBtZWRpYXdpa2lfcmV2aXNpb246ICNudW1iZXIKIAkJJGxhc3RyZXZpc2lvbl9udW1iZXIgPSAkbm90ZV9pbmZvWzFdOwogCQljaG9tcCgkbGFzdHJldmlzaW9uX251bWJlcik7Ci0JCXByaW50IFNUREVSUiAiTGFzdCBsb2NhbCBtZWRpYXdpa2kgcmV2aXNpb24gZm91bmQgaXMgJGxhc3RyZXZpc2lvbl9udW1iZXIiOworCQlwcmludCB7KlNUREVSUn0gIkxhc3QgbG9jYWwgbWVkaWF3aWtpIHJldmlzaW9uIGZvdW5kIGlzICR7bGFzdHJldmlzaW9uX251bWJlcn0iOwogCX0KIAlyZXR1cm4gJGxhc3RyZXZpc2lvbl9udW1iZXI7CiB9CiAKLSMgUmVtZW1iZXIgdGhlIHRpbWVzdGFtcCBjb3JyZXNwb25kaW5nIHRvIGEgcmV2aXNpb24gaWQuCi1teSAlYmFzZXRpbWVzdGFtcHM7Ci0KICMgR2V0IHRoZSBsYXN0IHJlbW90ZSByZXZpc2lvbiB3aXRob3V0IHRha2luZyBpbiBhY2NvdW50IHdoaWNoIHBhZ2VzIGFyZQogIyB0cmFja2VkIG9yIG5vdC4gVGhpcyBmdW5jdGlvbiBtYWtlcyBhIHNpbmdsZSByZXF1ZXN0IHRvIHRoZSB3aWtpIHRodXMKICMgYXZvaWQgYSBsb29wIG9udG8gYWxsIHRyYWNrZWQgcGFnZXMuIFRoaXMgaXMgdXNlZnVsIGZvciB0aGUgZmV0Y2gtYnktcmV2CiAjIG9wdGlvbi4KIHN1YiBnZXRfbGFzdF9nbG9iYWxfcmVtb3RlX3JldiB7Ci0JbXdfY29ubmVjdF9tYXliZSgpOworCSRtZWRpYXdpa2kgPSBjb25uZWN0X21heWJlKCRtZWRpYXdpa2ksICRyZW1vdGVuYW1lLCAkdXJsKTsKIAogCW15ICRxdWVyeSA9IHsKIAkJYWN0aW9uID0+ICdxdWVyeScsCkBAIC01MzUsMTQgKzUwOSwxNCBAQAogIyBHZXQgdGhlIGxhc3QgcmVtb3RlIHJldmlzaW9uIGNvbmNlcm5pbmcgdGhlIHRyYWNrZWQgcGFnZXMgYW5kIHRoZSB0cmFja2VkCiAjIGNhdGVnb3JpZXMuCiBzdWIgZ2V0X2xhc3RfcmVtb3RlX3JldmlzaW9uIHsKLQltd19jb25uZWN0X21heWJlKCk7CisJJG1lZGlhd2lraSA9IGNvbm5lY3RfbWF5YmUoJG1lZGlhd2lraSwgJHJlbW90ZW5hbWUsICR1cmwpOwogCiAJbXkgJXBhZ2VzX2hhc2ggPSBnZXRfbXdfcGFnZXMoKTsKIAlteSBAcGFnZXMgPSB2YWx1ZXMoJXBhZ2VzX2hhc2gpOwogCiAJbXkgJG1heF9yZXZfbnVtID0gMDsKIAotCXByaW50IFNUREVSUiAiR2V0dGluZyBsYXN0IHJldmlzaW9uIGlkIG9uIHRyYWNrZWQgcGFnZXMuLi5cbiI7CisJcHJpbnQgeypTVERFUlJ9ICJHZXR0aW5nIGxhc3QgcmV2aXNpb24gaWQgb24gdHJhY2tlZCBwYWdlcy4uLlxuIjsKIAogCWZvcmVhY2ggbXkgJHBhZ2UgKEBwYWdlcykgewogCQlteSAkaWQgPSAkcGFnZS0+e3BhZ2VpZH07CkBAIC01NjMsNyArNTM3LDcgQEAKIAkJJG1heF9yZXZfbnVtID0gKCRsYXN0cmV2LT57cmV2aWR9ID4gJG1heF9yZXZfbnVtID8gJGxhc3RyZXYtPntyZXZpZH0gOiAkbWF4X3Jldl9udW0pOwogCX0KIAotCXByaW50IFNUREVSUiAiTGFzdCByZW1vdGUgcmV2aXNpb24gZm91bmQgaXMgJG1heF9yZXZfbnVtLlxuIjsKKwlwcmludCB7KlNUREVSUn0gIkxhc3QgcmVtb3RlIHJldmlzaW9uIGZvdW5kIGlzICRtYXhfcmV2X251bS5cbiI7CiAJcmV0dXJuICRtYXhfcmV2X251bTsKIH0KIApAQCAtNTc0LDcgKzU0OCw3IEBACiAJIyBNZWRpYXdpa2kgZG9lcyBub3QgYWxsb3cgYmxhbmsgc3BhY2UgYXQgdGhlIGVuZCBvZiBhIHBhZ2UgYW5kIGVuZHMgd2l0aCBhIHNpbmdsZSBcbi4KIAkjIFRoaXMgZnVuY3Rpb24gcmlnaHQgdHJpbXMgYSBzdHJpbmcgYW5kIGFkZHMgYSBcbiBhdCB0aGUgZW5kIHRvIGZvbGxvdyB0aGlzIHJ1bGUKIAkkc3RyaW5nID1+IHMvXHMrJC8vOwotCWlmICgkc3RyaW5nIGVxICIiICYmICRwYWdlX2NyZWF0ZWQpIHsKKwlpZiAoJHN0cmluZyBlcSBFTVBUWSAmJiAkcGFnZV9jcmVhdGVkKSB7CiAJCSMgQ3JlYXRpbmcgZW1wdHkgcGFnZXMgaXMgZm9yYmlkZGVuLgogCQkkc3RyaW5nID0gRU1QVFlfQ09OVEVOVDsKIAl9CkBAIC01ODUsMzggKzU1OSwxNiBAQAogc3ViIG1lZGlhd2lraV9zbXVkZ2UgewogCW15ICRzdHJpbmcgPSBzaGlmdDsKIAlpZiAoJHN0cmluZyBlcSBFTVBUWV9DT05URU5UKSB7Ci0JCSRzdHJpbmcgPSAiIjsKKwkJJHN0cmluZyA9IEVNUFRZOwogCX0KIAkjIFRoaXMgXG4gaXMgaW1wb3J0YW50LiBUaGlzIGlzIGR1ZSB0byBtZWRpYXdpa2kncyB3YXkgdG8gaGFuZGxlIGVuZCBvZiBmaWxlcy4KLQlyZXR1cm4gJHN0cmluZy4iXG4iOwotfQotCi1zdWIgbWVkaWF3aWtpX2NsZWFuX2ZpbGVuYW1lIHsKLQlteSAkZmlsZW5hbWUgPSBzaGlmdDsKLQkkZmlsZW5hbWUgPX4gcy9Ae1tTTEFTSF9SRVBMQUNFTUVOVF19L1wvL2c7Ci0JIyBbLCBdLCB8LCB7LCBhbmQgfSBhcmUgZm9yYmlkZGVuIGJ5IE1lZGlhV2lraSwgZXZlbiBVUkwtZW5jb2RlZC4KLQkjIERvIGEgdmFyaWFudCBvZiBVUkwtZW5jb2RpbmcsIGkuZS4gbG9va3MgbGlrZSBVUkwtZW5jb2RpbmcsCi0JIyBidXQgd2l0aCBfIGFkZGVkIHRvIHByZXZlbnQgTWVkaWFXaWtpIGZyb20gdGhpbmtpbmcgdGhpcyBpcwotCSMgYW4gYWN0dWFsIHNwZWNpYWwgY2hhcmFjdGVyLgotCSRmaWxlbmFtZSA9fiBzL1tcW1xdXHtcfVx8XS9zcHJpbnRmKCJfJSVfJXgiLCBvcmQoJCYpKS9nZTsKLQkjIElmIHdlIHVzZSB0aGUgdXJpIGVzY2FwZSBiZWZvcmUKLQkjIHdlIHNob3VsZCB1bmVzY2FwZSBoZXJlLCBiZWZvcmUgYW55dGhpbmcKLQotCXJldHVybiAkZmlsZW5hbWU7Ci19Ci0KLXN1YiBtZWRpYXdpa2lfc211ZGdlX2ZpbGVuYW1lIHsKLQlteSAkZmlsZW5hbWUgPSBzaGlmdDsKLQkkZmlsZW5hbWUgPX4gcy9cLy9Ae1tTTEFTSF9SRVBMQUNFTUVOVF19L2c7Ci0JJGZpbGVuYW1lID1+IHMvIC9fL2c7Ci0JIyBEZWNvZGUgZm9yYmlkZGVuIGNoYXJhY3RlcnMgZW5jb2RlZCBpbiBtZWRpYXdpa2lfY2xlYW5fZmlsZW5hbWUKLQkkZmlsZW5hbWUgPX4gcy9fJV8oWzAtOWEtZkEtRl1bMC05YS1mQS1GXSkvc3ByaW50ZigiJWMiLCBoZXgoJDEpKS9nZTsKLQlyZXR1cm4gJGZpbGVuYW1lOworCXJldHVybiAiJHtzdHJpbmd9XG4iOwogfQogCiBzdWIgbGl0ZXJhbF9kYXRhIHsKIAlteSAoJGNvbnRlbnQpID0gQF87Ci0JcHJpbnQgU1RET1VUICJkYXRhICIsIGJ5dGVzOjpsZW5ndGgoJGNvbnRlbnQpLCAiXG4iLCAkY29udGVudDsKKwlwcmludCB7KlNURE9VVH0gJ2RhdGEgJywgYnl0ZXM6Omxlbmd0aCgkY29udGVudCksICJcbiIsICRjb250ZW50OworCXJldHVybjsKIH0KIAogc3ViIGxpdGVyYWxfZGF0YV9yYXcgewpAQCAtNjI0LDMzICs1NzYsMzcgQEAKIAlteSAoJGNvbnRlbnQpID0gQF87CiAJIyBBdm9pZCBjb25mdXNpb24gYmV0d2VlbiBzaXplIGluIGJ5dGVzIGFuZCBpbiBjaGFyYWN0ZXJzCiAJdXRmODo6ZG93bmdyYWRlKCRjb250ZW50KTsKLQliaW5tb2RlIFNURE9VVCwgIjpyYXciOwotCXByaW50IFNURE9VVCAiZGF0YSAiLCBieXRlczo6bGVuZ3RoKCRjb250ZW50KSwgIlxuIiwgJGNvbnRlbnQ7Ci0JYmlubW9kZSBTVERPVVQsICI6dXRmOCI7CisJYmlubW9kZSBTVERPVVQsICc6cmF3JzsKKwlwcmludCB7KlNURE9VVH0gJ2RhdGEgJywgYnl0ZXM6Omxlbmd0aCgkY29udGVudCksICJcbiIsICRjb250ZW50OworCWJpbm1vZGUgU1RET1VULCAnOmVuY29kaW5nKFVURi04KSc7CisJcmV0dXJuOwogfQogCiBzdWIgbXdfY2FwYWJpbGl0aWVzIHsKIAkjIFJldmlzaW9ucyBhcmUgaW1wb3J0ZWQgdG8gdGhlIHByaXZhdGUgbmFtZXNwYWNlCiAJIyByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS8gYnkgdGhlIGhlbHBlciBhbmQgZmV0Y2hlZCBpbnRvCiAJIyByZWZzL3JlbW90ZXMvJHJlbW90ZW5hbWUgbGF0ZXIgYnkgZmV0Y2guCi0JcHJpbnQgU1RET1VUICJyZWZzcGVjIHJlZnMvaGVhZHMvKjpyZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS8qXG4iOwotCXByaW50IFNURE9VVCAiaW1wb3J0XG4iOwotCXByaW50IFNURE9VVCAibGlzdFxuIjsKLQlwcmludCBTVERPVVQgInB1c2hcbiI7Ci0JcHJpbnQgU1RET1VUICJcbiI7CisJcHJpbnQgeypTVERPVVR9ICJyZWZzcGVjIHJlZnMvaGVhZHMvKjpyZWZzL21lZGlhd2lraS8ke3JlbW90ZW5hbWV9LypcbiI7CisJcHJpbnQgeypTVERPVVR9ICJpbXBvcnRcbiI7CisJcHJpbnQgeypTVERPVVR9ICJsaXN0XG4iOworCXByaW50IHsqU1RET1VUfSAicHVzaFxuIjsKKwlwcmludCB7KlNURE9VVH0gIlxuIjsKKwlyZXR1cm47CiB9CiAKIHN1YiBtd19saXN0IHsKIAkjIE1lZGlhV2lraSBkbyBub3QgaGF2ZSBicmFuY2hlcywgd2UgY29uc2lkZXIgb25lIGJyYW5jaCBhcmJpdHJhcmlseQogCSMgY2FsbGVkIG1hc3RlciwgYW5kIEhFQUQgcG9pbnRpbmcgdG8gaXQuCi0JcHJpbnQgU1RET1VUICI/IHJlZnMvaGVhZHMvbWFzdGVyXG4iOwotCXByaW50IFNURE9VVCAiXEByZWZzL2hlYWRzL21hc3RlciBIRUFEXG4iOwotCXByaW50IFNURE9VVCAiXG4iOworCXByaW50IHsqU1RET1VUfSAiPyByZWZzL2hlYWRzL21hc3RlclxuIjsKKwlwcmludCB7KlNURE9VVH0gIlxAcmVmcy9oZWFkcy9tYXN0ZXIgSEVBRFxuIjsKKwlwcmludCB7KlNURE9VVH0gIlxuIjsKKwlyZXR1cm47CiB9CiAKIHN1YiBtd19vcHRpb24gewotCXByaW50IFNUREVSUiAicmVtb3RlLWhlbHBlciBjb21tYW5kICdvcHRpb24gJF9bMF0nIG5vdCB5ZXQgaW1wbGVtZW50ZWRcbiI7Ci0JcHJpbnQgU1RET1VUICJ1bnN1cHBvcnRlZFxuIjsKKwlwcmludCB7KlNUREVSUn0gInJlbW90ZS1oZWxwZXIgY29tbWFuZCAnb3B0aW9uICRfWzBdJyBub3QgeWV0IGltcGxlbWVudGVkXG4iOworCXByaW50IHsqU1RET1VUfSAidW5zdXBwb3J0ZWRcbiI7CisJcmV0dXJuOwogfQogCiBzdWIgZmV0Y2hfbXdfcmV2aXNpb25zX2Zvcl9wYWdlIHsKQEAgLTY4MSwxNSArNjM3LDE1IEBACiAJCQlwdXNoKEBwYWdlX3JldnMsICRwYWdlX3Jldl9pZHMpOwogCQkJJHJldm51bSsrOwogCQl9Ci0JCWxhc3QgdW5sZXNzICRyZXN1bHQtPnsncXVlcnktY29udGludWUnfTsKKwkJbGFzdCBpZiAoISRyZXN1bHQtPnsncXVlcnktY29udGludWUnfSk7CiAJCSRxdWVyeS0+e3J2c3RhcnRpZH0gPSAkcmVzdWx0LT57J3F1ZXJ5LWNvbnRpbnVlJ30tPntyZXZpc2lvbnN9LT57cnZzdGFydGlkfTsKIAl9CiAJaWYgKCRzaGFsbG93X2ltcG9ydCAmJiBAcGFnZV9yZXZzKSB7Ci0JCXByaW50IFNUREVSUiAiICBGb3VuZCAxIHJldmlzaW9uIChzaGFsbG93IGltcG9ydCkuXG4iOworCQlwcmludCB7KlNUREVSUn0gIiAgRm91bmQgMSByZXZpc2lvbiAoc2hhbGxvdyBpbXBvcnQpLlxuIjsKIAkJQHBhZ2VfcmV2cyA9IHNvcnQgeyRiLT57cmV2aWR9IDw9PiAkYS0+e3JldmlkfX0gKEBwYWdlX3JldnMpOwogCQlyZXR1cm4gJHBhZ2VfcmV2c1swXTsKIAl9Ci0JcHJpbnQgU1RERVJSICIgIEZvdW5kICIsICRyZXZudW0sICIgcmV2aXNpb24ocykuXG4iOworCXByaW50IHsqU1RERVJSfSAiICBGb3VuZCAke3Jldm51bX0gcmV2aXNpb24ocykuXG4iOwogCXJldHVybiBAcGFnZV9yZXZzOwogfQogCkBAIC03MDEsOCArNjU3LDcgQEAKIAlteSAkbiA9IDE7CiAJZm9yZWFjaCBteSAkcGFnZSAoQHBhZ2VzKSB7CiAJCW15ICRpZCA9ICRwYWdlLT57cGFnZWlkfTsKLQotCQlwcmludCBTVERFUlIgInBhZ2UgJG4vIiwgc2NhbGFyKEBwYWdlcyksICI6ICIuICRwYWdlLT57dGl0bGV9IC4iXG4iOworCQlwcmludCB7KlNUREVSUn0gInBhZ2UgJHtufS8iLCBzY2FsYXIoQHBhZ2VzKSwgJzogJywgJHBhZ2UtPnt0aXRsZX0sICJcbiI7CiAJCSRuKys7CiAJCW15IEBwYWdlX3JldnMgPSBmZXRjaF9td19yZXZpc2lvbnNfZm9yX3BhZ2UoJHBhZ2UsICRpZCwgJGZldGNoX2Zyb20pOwogCQlAcmV2aXNpb25zID0gKEBwYWdlX3JldnMsIEByZXZpc2lvbnMpOwpAQCAtNzE2LDcgKzY3MSw3IEBACiAgICAgJHBhdGggPX4gcy9cXC9cXFxcL2c7CiAgICAgJHBhdGggPX4gcy8iL1xcIi9nOwogICAgICRwYXRoID1+IHMvXG4vXFxuL2c7Ci0gICAgcmV0dXJuICciJyAuICRwYXRoIC4gJyInOworICAgIHJldHVybiBxcSgiJHtwYXRofSIpOwogfQogCiBzdWIgaW1wb3J0X2ZpbGVfcmV2aXNpb24gewpAQCAtNzM2LDQyICs2OTEsNDMgQEAKIAlteSAkYXV0aG9yID0gJGNvbW1pdHthdXRob3J9OwogCW15ICRkYXRlID0gJGNvbW1pdHtkYXRlfTsKIAotCXByaW50IFNURE9VVCAiY29tbWl0IHJlZnMvbWVkaWF3aWtpLyRyZW1vdGVuYW1lL21hc3RlclxuIjsKLQlwcmludCBTVERPVVQgIm1hcmsgOiRuXG4iOwotCXByaW50IFNURE9VVCAiY29tbWl0dGVyICRhdXRob3IgPCRhdXRob3JcQCR3aWtpX25hbWU+ICIsICRkYXRlLT5lcG9jaCwgIiArMDAwMFxuIjsKKwlwcmludCB7KlNURE9VVH0gImNvbW1pdCByZWZzL21lZGlhd2lraS8ke3JlbW90ZW5hbWV9L21hc3RlclxuIjsKKwlwcmludCB7KlNURE9VVH0gIm1hcmsgOiR7bn1cbiI7CisJcHJpbnQgeypTVERPVVR9ICJjb21taXR0ZXIgJHthdXRob3J9IDwke2F1dGhvcn1cQCR7d2lraV9uYW1lfT4gIiAuICRkYXRlLT5lcG9jaCAuICIgKzAwMDBcbiI7CiAJbGl0ZXJhbF9kYXRhKCRjb21tZW50KTsKIAogCSMgSWYgaXQncyBub3QgYSBjbG9uZSwgd2UgbmVlZCB0byBrbm93IHdoZXJlIHRvIHN0YXJ0IGZyb20KIAlpZiAoISRmdWxsX2ltcG9ydCAmJiAkbiA9PSAxKSB7Ci0JCXByaW50IFNURE9VVCAiZnJvbSByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXJeMFxuIjsKKwkJcHJpbnQgeypTVERPVVR9ICJmcm9tIHJlZnMvbWVkaWF3aWtpLyR7cmVtb3RlbmFtZX0vbWFzdGVyXjBcbiI7CiAJfQogCWlmICgkY29udGVudCBuZSBERUxFVEVEX0NPTlRFTlQpIHsKLQkJcHJpbnQgU1RET1VUICJNIDY0NCBpbmxpbmUgIiAuCi0JCSAgICBmZV9lc2NhcGVfcGF0aCgkdGl0bGUgLiAiLm13IikgLiAiXG4iOworCQlwcmludCB7KlNURE9VVH0gJ00gNjQ0IGlubGluZSAnIC4KKwkJICAgIGZlX2VzY2FwZV9wYXRoKCIke3RpdGxlfS5tdyIpIC4gIlxuIjsKIAkJbGl0ZXJhbF9kYXRhKCRjb250ZW50KTsKIAkJaWYgKCVtZWRpYWZpbGUpIHsKLQkJCXByaW50IFNURE9VVCAiTSA2NDQgaW5saW5lICIKKwkJCXByaW50IHsqU1RET1VUfSAnTSA2NDQgaW5saW5lICcKIAkJCSAgICAuIGZlX2VzY2FwZV9wYXRoKCRtZWRpYWZpbGV7dGl0bGV9KSAuICJcbiI7CiAJCQlsaXRlcmFsX2RhdGFfcmF3KCRtZWRpYWZpbGV7Y29udGVudH0pOwogCQl9Ci0JCXByaW50IFNURE9VVCAiXG5cbiI7CisJCXByaW50IHsqU1RET1VUfSAiXG5cbiI7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RET1VUICJEICIgLiBmZV9lc2NhcGVfcGF0aCgkdGl0bGUgLiAiLm13IikgLiAiXG4iOworCQlwcmludCB7KlNURE9VVH0gJ0QgJyAuIGZlX2VzY2FwZV9wYXRoKCIke3RpdGxlfS5tdyIpIC4gIlxuIjsKIAl9CiAKIAkjIG1lZGlhd2lraSByZXZpc2lvbiBudW1iZXIgaW4gdGhlIGdpdCBub3RlCiAJaWYgKCRmdWxsX2ltcG9ydCAmJiAkbiA9PSAxKSB7Ci0JCXByaW50IFNURE9VVCAicmVzZXQgcmVmcy9ub3Rlcy8kcmVtb3RlbmFtZS9tZWRpYXdpa2lcbiI7CisJCXByaW50IHsqU1RET1VUfSAicmVzZXQgcmVmcy9ub3Rlcy8ke3JlbW90ZW5hbWV9L21lZGlhd2lraVxuIjsKIAl9Ci0JcHJpbnQgU1RET1VUICJjb21taXQgcmVmcy9ub3Rlcy8kcmVtb3RlbmFtZS9tZWRpYXdpa2lcbiI7Ci0JcHJpbnQgU1RET1VUICJjb21taXR0ZXIgJGF1dGhvciA8JGF1dGhvclxAJHdpa2lfbmFtZT4gIiwgJGRhdGUtPmVwb2NoLCAiICswMDAwXG4iOwotCWxpdGVyYWxfZGF0YSgiTm90ZSBhZGRlZCBieSBnaXQtbWVkaWF3aWtpIGR1cmluZyBpbXBvcnQiKTsKKwlwcmludCB7KlNURE9VVH0gImNvbW1pdCByZWZzL25vdGVzLyR7cmVtb3RlbmFtZX0vbWVkaWF3aWtpXG4iOworCXByaW50IHsqU1RET1VUfSAiY29tbWl0dGVyICR7YXV0aG9yfSA8JHthdXRob3J9XEAke3dpa2lfbmFtZX0+ICIgLiAkZGF0ZS0+ZXBvY2ggLiAiICswMDAwXG4iOworCWxpdGVyYWxfZGF0YSgnTm90ZSBhZGRlZCBieSBnaXQtbWVkaWF3aWtpIGR1cmluZyBpbXBvcnQnKTsKIAlpZiAoISRmdWxsX2ltcG9ydCAmJiAkbiA9PSAxKSB7Ci0JCXByaW50IFNURE9VVCAiZnJvbSByZWZzL25vdGVzLyRyZW1vdGVuYW1lL21lZGlhd2lraV4wXG4iOworCQlwcmludCB7KlNURE9VVH0gImZyb20gcmVmcy9ub3Rlcy8ke3JlbW90ZW5hbWV9L21lZGlhd2lraV4wXG4iOwogCX0KLQlwcmludCBTVERPVVQgIk4gaW5saW5lIDokblxuIjsKLQlsaXRlcmFsX2RhdGEoIm1lZGlhd2lraV9yZXZpc2lvbjogIiAuICRjb21taXR7bXdfcmV2aXNpb259KTsKLQlwcmludCBTVERPVVQgIlxuXG4iOworCXByaW50IHsqU1RET1VUfSAiTiBpbmxpbmUgOiR7bn1cbiI7CisJbGl0ZXJhbF9kYXRhKCJtZWRpYXdpa2lfcmV2aXNpb246ICRjb21taXR7bXdfcmV2aXNpb259Iik7CisJcHJpbnQgeypTVERPVVR9ICJcblxuIjsKKwlyZXR1cm47CiB9CiAKICMgcGFyc2UgYSBzZXF1ZW5jZSBvZgpAQCAtNzg0LDIzICs3NDAsMjUgQEAKIAlteSBAcmVmczsKIAl3aGlsZSAoMSkgewogCQlteSAkbGluZSA9IDxTVERJTj47Ci0JCWlmICgkbGluZSA9fiBtL14kY21kICguKikkLykgeworCQlpZiAoJGxpbmUgPX4gL14kY21kICguKikkLykgewogCQkJcHVzaChAcmVmcywgJDEpOwogCQl9IGVsc2lmICgkbGluZSBlcSAiXG4iKSB7CiAJCQlyZXR1cm4gQHJlZnM7CiAJCX0gZWxzZSB7Ci0JCQlkaWUoIkludmFsaWQgY29tbWFuZCBpbiBhICckY21kJyBiYXRjaDogIi4gJF8pOworCQkJZGllKCJJbnZhbGlkIGNvbW1hbmQgaW4gYSAnJGNtZCcgYmF0Y2g6ICRfXG4iKTsKIAkJfQogCX0KKwlyZXR1cm47CiB9CiAKIHN1YiBtd19pbXBvcnQgewogCSMgbXVsdGlwbGUgaW1wb3J0IGNvbW1hbmRzIGNhbiBmb2xsb3cgZWFjaCBvdGhlci4KLQlteSBAcmVmcyA9IChzaGlmdCwgZ2V0X21vcmVfcmVmcygiaW1wb3J0IikpOworCW15IEByZWZzID0gKHNoaWZ0LCBnZXRfbW9yZV9yZWZzKCdpbXBvcnQnKSk7CiAJZm9yZWFjaCBteSAkcmVmIChAcmVmcykgewogCQltd19pbXBvcnRfcmVmKCRyZWYpOwogCX0KLQlwcmludCBTVERPVVQgImRvbmVcbiI7CisJcHJpbnQgeypTVERPVVR9ICJkb25lXG4iOworCXJldHVybjsKIH0KIAogc3ViIG13X2ltcG9ydF9yZWYgewpAQCAtODEwLDQwICs3NjgsNDEgQEAKIAkjIFNpbmNlIEhFQUQgaXMgYSBzeW1ib2xpYyByZWYgdG8gbWFzdGVyIChieSBjb252ZW50aW9uLAogCSMgZm9sbG93ZWQgYnkgdGhlIG91dHB1dCBvZiB0aGUgY29tbWFuZCAibGlzdCIgdGhhdCB3ZSBnYXZlKSwKIAkjIHdlIGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgaW4gdGhpcyBjYXNlLgotCWlmICgkcmVmIGVxICJIRUFEIikgeworCWlmICgkcmVmIGVxICdIRUFEJykgewogCQlyZXR1cm47CiAJfQogCi0JbXdfY29ubmVjdF9tYXliZSgpOworCSRtZWRpYXdpa2kgPSBjb25uZWN0X21heWJlKCRtZWRpYXdpa2ksICRyZW1vdGVuYW1lLCAkdXJsKTsKIAotCXByaW50IFNUREVSUiAiU2VhcmNoaW5nIHJldmlzaW9ucy4uLlxuIjsKKwlwcmludCB7KlNUREVSUn0gIlNlYXJjaGluZyByZXZpc2lvbnMuLi5cbiI7CiAJbXkgJGxhc3RfbG9jYWwgPSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpOwogCW15ICRmZXRjaF9mcm9tID0gJGxhc3RfbG9jYWwgKyAxOwogCWlmICgkZmV0Y2hfZnJvbSA9PSAxKSB7Ci0JCXByaW50IFNUREVSUiAiLCBmZXRjaGluZyBmcm9tIGJlZ2lubmluZy5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiLCBmZXRjaGluZyBmcm9tIGJlZ2lubmluZy5cbiI7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICIsIGZldGNoaW5nIGZyb20gaGVyZS5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiLCBmZXRjaGluZyBmcm9tIGhlcmUuXG4iOwogCX0KIAogCW15ICRuID0gMDsKLQlpZiAoJGZldGNoX3N0cmF0ZWd5IGVxICJieV9yZXYiKSB7Ci0JCXByaW50IFNUREVSUiAiRmV0Y2hpbmcgJiB3cml0aW5nIGV4cG9ydCBkYXRhIGJ5IHJldnMuLi5cbiI7CisJaWYgKCRmZXRjaF9zdHJhdGVneSBlcSAnYnlfcmV2JykgeworCQlwcmludCB7KlNUREVSUn0gIkZldGNoaW5nICYgd3JpdGluZyBleHBvcnQgZGF0YSBieSByZXZzLi4uXG4iOwogCQkkbiA9IG13X2ltcG9ydF9yZWZfYnlfcmV2cygkZmV0Y2hfZnJvbSk7Ci0JfSBlbHNpZiAoJGZldGNoX3N0cmF0ZWd5IGVxICJieV9wYWdlIikgewotCQlwcmludCBTVERFUlIgIkZldGNoaW5nICYgd3JpdGluZyBleHBvcnQgZGF0YSBieSBwYWdlcy4uLlxuIjsKKwl9IGVsc2lmICgkZmV0Y2hfc3RyYXRlZ3kgZXEgJ2J5X3BhZ2UnKSB7CisJCXByaW50IHsqU1RERVJSfSAiRmV0Y2hpbmcgJiB3cml0aW5nIGV4cG9ydCBkYXRhIGJ5IHBhZ2VzLi4uXG4iOwogCQkkbiA9IG13X2ltcG9ydF9yZWZfYnlfcGFnZXMoJGZldGNoX2Zyb20pOwogCX0gZWxzZSB7Ci0JCXByaW50IFNUREVSUiAiZmF0YWw6IGludmFsaWQgZmV0Y2ggc3RyYXRlZ3kgXCIkZmV0Y2hfc3RyYXRlZ3lcIi5cbiI7Ci0JCXByaW50IFNUREVSUiAiQ2hlY2sgeW91ciBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyByZW1vdGUuJHJlbW90ZW5hbWUuZmV0Y2hTdHJhdGVneSBhbmQgbWVkaWF3aWtpLmZldGNoU3RyYXRlZ3lcbiI7CisJCXByaW50IHsqU1RERVJSfSBxcShmYXRhbDogaW52YWxpZCBmZXRjaCBzdHJhdGVneSAiJHtmZXRjaF9zdHJhdGVneX0iLlxuKTsKKwkJcHJpbnQgeypTVERFUlJ9ICJDaGVjayB5b3VyIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHJlbW90ZS4ke3JlbW90ZW5hbWV9LmZldGNoU3RyYXRlZ3kgYW5kIG1lZGlhd2lraS5mZXRjaFN0cmF0ZWd5XG4iOwogCQlleGl0IDE7CiAJfQogCiAJaWYgKCRmZXRjaF9mcm9tID09IDEgJiYgJG4gPT0gMCkgewotCQlwcmludCBTVERFUlIgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgTWVkaWFXaWtpLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJZb3UgYXBwZWFyIHRvIGhhdmUgY2xvbmVkIGFuIGVtcHR5IE1lZGlhV2lraS5cbiI7CiAJCSMgU29tZXRoaW5nIGhhcyB0byBiZSBkb25lIHJlbW90ZS1oZWxwZXIgc2lkZS4gSWYgbm90aGluZyBpcyBkb25lLCBhbiBlcnJvciBpcwogCQkjIHRocm93biBzYXlpbmcgdGhhdCBIRUFEIGlzIHJlZmVycmluZyB0byB1bmtub3duIG9iamVjdCAwMDAwMDAwMDAwMDAwMDAwMDAwCiAJCSMgYW5kIHRoZSBjbG9uZSBmYWlscy4KIAl9CisJcmV0dXJuOwogfQogCiBzdWIgbXdfaW1wb3J0X3JlZl9ieV9wYWdlcyB7CkBAIC04NTUsNyArODE0LDcgQEAKIAlteSAoJG4sIEByZXZpc2lvbnMpID0gZmV0Y2hfbXdfcmV2aXNpb25zKFxAcGFnZXMsICRmZXRjaF9mcm9tKTsKIAogCUByZXZpc2lvbnMgPSBzb3J0IHskYS0+e3JldmlkfSA8PT4gJGItPntyZXZpZH19IEByZXZpc2lvbnM7Ci0JbXkgQHJldmlzaW9uX2lkcyA9IG1hcCAkXy0+e3JldmlkfSwgQHJldmlzaW9uczsKKwlteSBAcmV2aXNpb25faWRzID0gbWFwIHsgJF8tPntyZXZpZH0gfSBAcmV2aXNpb25zOwogCiAJcmV0dXJuIG13X2ltcG9ydF9yZXZpZHMoJGZldGNoX2Zyb20sIFxAcmV2aXNpb25faWRzLCBcJXBhZ2VzX2hhc2gpOwogfQpAQCAtODgyLDcgKzg0MSw3IEBACiAJbXkgJG5fYWN0dWFsID0gMDsKIAlteSAkbGFzdF90aW1lc3RhbXAgPSAwOyAjIFBsYWNlaG9sZXIgaW4gY2FzZSAkcmV2LT50aW1lc3RhbXAgaXMgdW5kZWZpbmVkCiAKLQlmb3JlYWNoIG15ICRwYWdlcmV2aWQgKEAkcmV2aXNpb25faWRzKSB7CisJZm9yZWFjaCBteSAkcGFnZXJldmlkIChAeyRyZXZpc2lvbl9pZHN9KSB7CiAJICAgICAgICAjIENvdW50IHBhZ2UgZXZlbiBpZiB3ZSBza2lwIGl0LCBzaW5jZSB3ZSBkaXNwbGF5CiAJCSMgJG4vJHRvdGFsIGFuZCAkdG90YWwgaW5jbHVkZXMgc2tpcHBlZCBwYWdlcy4KIAkJJG4rKzsKQEAgLTg5OCw3ICs4NTcsNyBAQAogCQlteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+YXBpKCRxdWVyeSk7CiAKIAkJaWYgKCEkcmVzdWx0KSB7Ci0JCQlkaWUgIkZhaWxlZCB0byByZXRyaWV2ZSBtb2RpZmllZCBwYWdlIGZvciByZXZpc2lvbiAkcGFnZXJldmlkIjsKKwkJCWRpZSAiRmFpbGVkIHRvIHJldHJpZXZlIG1vZGlmaWVkIHBhZ2UgZm9yIHJldmlzaW9uICRwYWdlcmV2aWRcbiI7CiAJCX0KIAogCQlpZiAoZGVmaW5lZCgkcmVzdWx0LT57cXVlcnl9LT57YmFkcmV2aWRzfS0+eyRwYWdlcmV2aWR9KSkgewpAQCAtOTA3LDcgKzg2Niw3IEBACiAJCX0KIAogCQlpZiAoIWRlZmluZWQoJHJlc3VsdC0+e3F1ZXJ5fS0+e3BhZ2VzfSkpIHsKLQkJCWRpZSAiSW52YWxpZCByZXZpc2lvbiAkcGFnZXJldmlkLiI7CisJCQlkaWUgIkludmFsaWQgcmV2aXNpb24gJHtwYWdlcmV2aWR9LlxuIjsKIAkJfQogCiAJCW15IEByZXN1bHRfcGFnZXMgPSB2YWx1ZXMoJXskcmVzdWx0LT57cXVlcnl9LT57cGFnZXN9fSk7CkBAIC05MTcsOCArODc2LDggQEAKIAkJbXkgJHBhZ2VfdGl0bGUgPSAkcmVzdWx0X3BhZ2UtPnt0aXRsZX07CiAKIAkJaWYgKCFleGlzdHMoJHBhZ2VzLT57JHBhZ2VfdGl0bGV9KSkgewotCQkJcHJpbnQgU1RERVJSICIkbi8iLCBzY2FsYXIoQCRyZXZpc2lvbl9pZHMpLAotCQkJCSI6IFNraXBwaW5nIHJldmlzaW9uICMkcmV2LT57cmV2aWR9IG9mICRwYWdlX3RpdGxlXG4iOworCQkJcHJpbnQgeypTVERFUlJ9ICIke259LyIsIHNjYWxhcihAeyRyZXZpc2lvbl9pZHN9KSwKKwkJCQkiOiBTa2lwcGluZyByZXZpc2lvbiAjJHJldi0+e3JldmlkfSBvZiAke3BhZ2VfdGl0bGV9XG4iOwogCQkJbmV4dDsKIAkJfQogCkBAIC05MjcsNyArODg2LDcgQEAKIAkJbXkgJWNvbW1pdDsKIAkJJGNvbW1pdHthdXRob3J9ID0gJHJldi0+e3VzZXJ9IHx8ICdBbm9ueW1vdXMnOwogCQkkY29tbWl0e2NvbW1lbnR9ID0gJHJldi0+e2NvbW1lbnR9IHx8IEVNUFRZX01FU1NBR0U7Ci0JCSRjb21taXR7dGl0bGV9ID0gbWVkaWF3aWtpX3NtdWRnZV9maWxlbmFtZSgkcGFnZV90aXRsZSk7CisJCSRjb21taXR7dGl0bGV9ID0gc211ZGdlX2ZpbGVuYW1lKCRwYWdlX3RpdGxlKTsKIAkJJGNvbW1pdHttd19yZXZpc2lvbn0gPSAkcmV2LT57cmV2aWR9OwogCQkkY29tbWl0e2NvbnRlbnR9ID0gbWVkaWF3aWtpX3NtdWRnZSgkcmV2LT57JyonfSk7CiAKQEAgLTk0MywxNCArOTAyLDE0IEBACiAJCW15ICVtZWRpYWZpbGU7CiAJCWlmICgkbmFtZXNwYWNlKSB7CiAJCQlteSAkaWQgPSBnZXRfbXdfbmFtZXNwYWNlX2lkKCRuYW1lc3BhY2UpOwotCQkJaWYgKCRpZCAmJiAkaWQgPT0gZ2V0X213X25hbWVzcGFjZV9pZCgiRmlsZSIpKSB7CisJCQlpZiAoJGlkICYmICRpZCA9PSBnZXRfbXdfbmFtZXNwYWNlX2lkKCdGaWxlJykpIHsKIAkJCQklbWVkaWFmaWxlID0gZ2V0X213X21lZGlhZmlsZV9mb3JfcGFnZV9yZXZpc2lvbigkZmlsZW5hbWUsICRyZXYtPnt0aW1lc3RhbXB9KTsKIAkJCX0KIAkJfQogCQkjIElmIHRoaXMgaXMgYSByZXZpc2lvbiBvZiB0aGUgbWVkaWEgcGFnZSBmb3IgbmV3IHZlcnNpb24KIAkJIyBvZiBhIGZpbGUgZG8gb25lIGNvbW1vbiBjb21taXQgZm9yIGJvdGggZmlsZSBhbmQgbWVkaWEgcGFnZS4KIAkJIyBFbHNlIGRvIGNvbW1pdCBvbmx5IGZvciB0aGF0IHBhZ2UuCi0JCXByaW50IFNUREVSUiAiJG4vIiwgc2NhbGFyKEAkcmV2aXNpb25faWRzKSwgIjogUmV2aXNpb24gIyRyZXYtPntyZXZpZH0gb2YgJGNvbW1pdHt0aXRsZX1cbiI7CisJCXByaW50IHsqU1RERVJSfSAiJHtufS8iLCBzY2FsYXIoQHskcmV2aXNpb25faWRzfSksICI6IFJldmlzaW9uICMkcmV2LT57cmV2aWR9IG9mICRjb21taXR7dGl0bGV9XG4iOwogCQlpbXBvcnRfZmlsZV9yZXZpc2lvbihcJWNvbW1pdCwgKCRmZXRjaF9mcm9tID09IDEpLCAkbl9hY3R1YWwsIFwlbWVkaWFmaWxlKTsKIAl9CiAKQEAgLTk1OCwxNyArOTE3LDE3IEBACiB9CiAKIHN1YiBlcnJvcl9ub25fZmFzdF9mb3J3YXJkIHsKLQlteSAkYWR2aWNlID0gcnVuX2dpdCgiY29uZmlnIC0tYm9vbCBhZHZpY2UucHVzaE5vbkZhc3RGb3J3YXJkIik7CisJbXkgJGFkdmljZSA9IHJ1bl9naXQoJ2NvbmZpZyAtLWJvb2wgYWR2aWNlLnB1c2hOb25GYXN0Rm9yd2FyZCcpOwogCWNob21wKCRhZHZpY2UpOwotCWlmICgkYWR2aWNlIG5lICJmYWxzZSIpIHsKKwlpZiAoJGFkdmljZSBuZSAnZmFsc2UnKSB7CiAJCSMgTmF0aXZlIGdpdC1wdXNoIHdvdWxkIHNob3cgdGhpcyBhZnRlciB0aGUgc3VtbWFyeS4KIAkJIyBXZSBjYW4ndCBhc2sgaXQgdG8gZGlzcGxheSBpdCBjbGVhbmx5LCBzbyBwcmludCBpdAogCQkjIG91cnNlbHZlcyBiZWZvcmUuCi0JCXByaW50IFNUREVSUiAiVG8gcHJldmVudCB5b3UgZnJvbSBsb3NpbmcgaGlzdG9yeSwgbm9uLWZhc3QtZm9yd2FyZCB1cGRhdGVzIHdlcmUgcmVqZWN0ZWRcbiI7Ci0JCXByaW50IFNUREVSUiAiTWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuICdnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLiBTZWUgdGhlXG4iOwotCQlwcmludCBTVERFUlIgIidOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIHNlY3Rpb24gb2YgJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuXG4iOworCQlwcmludCB7KlNUREVSUn0gIlRvIHByZXZlbnQgeW91IGZyb20gbG9zaW5nIGhpc3RvcnksIG5vbi1mYXN0LWZvcndhcmQgdXBkYXRlcyB3ZXJlIHJlamVjdGVkXG4iOworCQlwcmludCB7KlNUREVSUn0gIk1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi4gU2VlIHRoZVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICInTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBzZWN0aW9uIG9mICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLlxuIjsKIAl9Ci0JcHJpbnQgU1RET1VUICJlcnJvciAkX1swXSBcIm5vbi1mYXN0LWZvcndhcmRcIlxuIjsKKwlwcmludCB7KlNURE9VVH0gcXEoZXJyb3IgJF9bMF0gIm5vbi1mYXN0LWZvcndhcmQiXG4pOwogCXJldHVybiAwOwogfQogCkBAIC05NzksMzQgKzkzOCwzNCBAQAogCW15ICRmaWxlX2RlbGV0ZWQgPSBzaGlmdDsKIAlteSAkc3VtbWFyeSA9IHNoaWZ0OwogCW15ICRuZXdyZXZpZDsKLQlteSAkcGF0aCA9ICJGaWxlOiIgLiAkY29tcGxldGVfZmlsZV9uYW1lOworCW15ICRwYXRoID0gIkZpbGU6JHtjb21wbGV0ZV9maWxlX25hbWV9IjsKIAlteSAlaGFzaEZpbGVzID0gZ2V0X2FsbG93ZWRfZmlsZV9leHRlbnNpb25zKCk7CiAJaWYgKCFleGlzdHMoJGhhc2hGaWxlc3skZXh0ZW5zaW9ufSkpIHsKLQkJcHJpbnQgU1RERVJSICIkY29tcGxldGVfZmlsZV9uYW1lIGlzIG5vdCBhIHBlcm1pdHRlZCBmaWxlIG9uIHRoaXMgd2lraS5cbiI7Ci0JCXByaW50IFNUREVSUiAiQ2hlY2sgdGhlIGNvbmZpZ3VyYXRpb24gb2YgZmlsZSB1cGxvYWRzIGluIHlvdXIgbWVkaWF3aWtpLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICIke2NvbXBsZXRlX2ZpbGVfbmFtZX0gaXMgbm90IGEgcGVybWl0dGVkIGZpbGUgb24gdGhpcyB3aWtpLlxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJDaGVjayB0aGUgY29uZmlndXJhdGlvbiBvZiBmaWxlIHVwbG9hZHMgaW4geW91ciBtZWRpYXdpa2kuXG4iOwogCQlyZXR1cm4gJG5ld3JldmlkOwogCX0KIAkjIERlbGV0aW5nIGFuZCB1cGxvYWRpbmcgYSBmaWxlIHJlcXVpcmVzIGEgcHJpdmlsZWRnZWQgdXNlcgogCWlmICgkZmlsZV9kZWxldGVkKSB7Ci0JCW13X2Nvbm5lY3RfbWF5YmUoKTsKKwkJJG1lZGlhd2lraSA9IGNvbm5lY3RfbWF5YmUoJG1lZGlhd2lraSwgJHJlbW90ZW5hbWUsICR1cmwpOwogCQlteSAkcXVlcnkgPSB7CiAJCQlhY3Rpb24gPT4gJ2RlbGV0ZScsCiAJCQl0aXRsZSA9PiAkcGF0aCwKIAkJCXJlYXNvbiA9PiAkc3VtbWFyeQogCQl9OwogCQlpZiAoISRtZWRpYXdpa2ktPmVkaXQoJHF1ZXJ5KSkgewotCQkJcHJpbnQgU1RERVJSICJGYWlsZWQgdG8gZGVsZXRlIGZpbGUgb24gcmVtb3RlIHdpa2lcbiI7Ci0JCQlwcmludCBTVERFUlIgIkNoZWNrIHlvdXIgcGVybWlzc2lvbnMgb24gdGhlIHJlbW90ZSBzaXRlLiBFcnJvciBjb2RlOlxuIjsKLQkJCXByaW50IFNUREVSUiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLiAnOicgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307CisJCQlwcmludCB7KlNUREVSUn0gIkZhaWxlZCB0byBkZWxldGUgZmlsZSBvbiByZW1vdGUgd2lraVxuIjsKKwkJCXByaW50IHsqU1RERVJSfSAiQ2hlY2sgeW91ciBwZXJtaXNzaW9ucyBvbiB0aGUgcmVtb3RlIHNpdGUuIEVycm9yIGNvZGU6XG4iOworCQkJcHJpbnQgeypTVERFUlJ9ICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuICc6JyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfTsKIAkJCWV4aXQgMTsKIAkJfQogCX0gZWxzZSB7CiAJCSMgRG9uJ3QgbGV0IHBlcmwgdHJ5IHRvIGludGVycHJldCBmaWxlIGNvbnRlbnQgYXMgVVRGLTggPT4gdXNlICJyYXciCi0JCW15ICRjb250ZW50ID0gcnVuX2dpdCgiY2F0LWZpbGUgYmxvYiAkbmV3X3NoYTEiLCAicmF3Iik7Ci0JCWlmICgkY29udGVudCBuZSAiIikgewotCQkJbXdfY29ubmVjdF9tYXliZSgpOworCQlteSAkY29udGVudCA9IHJ1bl9naXQoImNhdC1maWxlIGJsb2IgJHtuZXdfc2hhMX0iLCAncmF3Jyk7CisJCWlmICgkY29udGVudCBuZSBFTVBUWSkgeworCQkJJG1lZGlhd2lraSA9IGNvbm5lY3RfbWF5YmUoJG1lZGlhd2lraSwgJHJlbW90ZW5hbWUsICR1cmwpOwogCQkJJG1lZGlhd2lraS0+e2NvbmZpZ30tPnt1cGxvYWRfdXJsfSA9Ci0JCQkJIiR1cmwvaW5kZXgucGhwL1NwZWNpYWw6VXBsb2FkIjsKKwkJCQkiJHt1cmx9L2luZGV4LnBocC9TcGVjaWFsOlVwbG9hZCI7CiAJCQkkbWVkaWF3aWtpLT5lZGl0KHsKIAkJCQlhY3Rpb24gPT4gJ3VwbG9hZCcsCiAJCQkJZmlsZW5hbWUgPT4gJGNvbXBsZXRlX2ZpbGVfbmFtZSwKQEAgLTEwMTgsMTIgKzk3NywxMiBAQAogCQkJfSwgewogCQkJCXNraXBfZW5jb2RpbmcgPT4gMQogCQkJfSApIHx8IGRpZSAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLiAnOicKLQkJCQkgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307CisJCQkJIC4gJG1lZGlhd2lraS0+e2Vycm9yfS0+e2RldGFpbHN9IC4gIlxuIjsKIAkJCW15ICRsYXN0X2ZpbGVfcGFnZSA9ICRtZWRpYXdpa2ktPmdldF9wYWdlKHt0aXRsZSA9PiAkcGF0aH0pOwogCQkJJG5ld3JldmlkID0gJGxhc3RfZmlsZV9wYWdlLT57cmV2aWR9OwotCQkJcHJpbnQgU1RERVJSICJQdXNoZWQgZmlsZTogJG5ld19zaGExIC0gJGNvbXBsZXRlX2ZpbGVfbmFtZS5cbiI7CisJCQlwcmludCB7KlNUREVSUn0gIlB1c2hlZCBmaWxlOiAke25ld19zaGExfSAtICR7Y29tcGxldGVfZmlsZV9uYW1lfS5cbiI7CiAJCX0gZWxzZSB7Ci0JCQlwcmludCBTVERFUlIgIkVtcHR5IGZpbGUgJGNvbXBsZXRlX2ZpbGVfbmFtZSBub3QgcHVzaGVkLlxuIjsKKwkJCXByaW50IHsqU1RERVJSfSAiRW1wdHkgZmlsZSAke2NvbXBsZXRlX2ZpbGVfbmFtZX0gbm90IHB1c2hlZC5cbiI7CiAJCX0KIAl9CiAJcmV0dXJuICRuZXdyZXZpZDsKQEAgLTEwNDUsMjQgKzEwMDQsMjQgQEAKIAlteSAkbmV3cmV2aWQ7CiAKIAlpZiAoJHN1bW1hcnkgZXEgRU1QVFlfTUVTU0FHRSkgewotCQkkc3VtbWFyeSA9ICcnOworCQkkc3VtbWFyeSA9IEVNUFRZOwogCX0KIAogCW15ICRuZXdfc2hhMSA9ICRkaWZmX2luZm9fc3BsaXRbM107CiAJbXkgJG9sZF9zaGExID0gJGRpZmZfaW5mb19zcGxpdFsyXTsKIAlteSAkcGFnZV9jcmVhdGVkID0gKCRvbGRfc2hhMSBlcSBOVUxMX1NIQTEpOwogCW15ICRwYWdlX2RlbGV0ZWQgPSAoJG5ld19zaGExIGVxIE5VTExfU0hBMSk7Ci0JJGNvbXBsZXRlX2ZpbGVfbmFtZSA9IG1lZGlhd2lraV9jbGVhbl9maWxlbmFtZSgkY29tcGxldGVfZmlsZV9uYW1lKTsKKwkkY29tcGxldGVfZmlsZV9uYW1lID0gY2xlYW5fZmlsZW5hbWUoJGNvbXBsZXRlX2ZpbGVfbmFtZSk7CiAKIAlteSAoJHRpdGxlLCAkZXh0ZW5zaW9uKSA9ICRjb21wbGV0ZV9maWxlX25hbWUgPX4gL14oLiopXC4oW15cLl0qKSQvOwogCWlmICghZGVmaW5lZCgkZXh0ZW5zaW9uKSkgewotCQkkZXh0ZW5zaW9uID0gIiI7CisJCSRleHRlbnNpb24gPSBFTVBUWTsKIAl9Ci0JaWYgKCRleHRlbnNpb24gZXEgIm13IikgeworCWlmICgkZXh0ZW5zaW9uIGVxICdtdycpIHsKIAkJbXkgJG5zID0gZ2V0X213X25hbWVzcGFjZV9pZF9mb3JfcGFnZSgkY29tcGxldGVfZmlsZV9uYW1lKTsKLQkJaWYgKCRucyAmJiAkbnMgPT0gZ2V0X213X25hbWVzcGFjZV9pZCgiRmlsZSIpICYmICghJGV4cG9ydF9tZWRpYSkpIHsKLQkJCXByaW50IFNUREVSUiAiSWdub3JpbmcgbWVkaWEgZmlsZSByZWxhdGVkIHBhZ2U6ICRjb21wbGV0ZV9maWxlX25hbWVcbiI7Ci0JCQlyZXR1cm4gKCRvbGRyZXZpZCwgIm9rIik7CisJCWlmICgkbnMgJiYgJG5zID09IGdldF9td19uYW1lc3BhY2VfaWQoJ0ZpbGUnKSAmJiAoISRleHBvcnRfbWVkaWEpKSB7CisJCQlwcmludCB7KlNUREVSUn0gIklnbm9yaW5nIG1lZGlhIGZpbGUgcmVsYXRlZCBwYWdlOiAke2NvbXBsZXRlX2ZpbGVfbmFtZX1cbiI7CisJCQlyZXR1cm4gKCRvbGRyZXZpZCwgJ29rJyk7CiAJCX0KIAkJbXkgJGZpbGVfY29udGVudDsKIAkJaWYgKCRwYWdlX2RlbGV0ZWQpIHsKQEAgLTEwNzIsMTAgKzEwMzEsMTAgQEAKIAkJCSMgd2l0aCB0aGlzIGNvbnRlbnQgaW5zdGVhZDoKIAkJCSRmaWxlX2NvbnRlbnQgPSBERUxFVEVEX0NPTlRFTlQ7CiAJCX0gZWxzZSB7Ci0JCQkkZmlsZV9jb250ZW50ID0gcnVuX2dpdCgiY2F0LWZpbGUgYmxvYiAkbmV3X3NoYTEiKTsKKwkJCSRmaWxlX2NvbnRlbnQgPSBydW5fZ2l0KCJjYXQtZmlsZSBibG9iICR7bmV3X3NoYTF9Iik7CiAJCX0KIAotCQltd19jb25uZWN0X21heWJlKCk7CisJCSRtZWRpYXdpa2kgPSBjb25uZWN0X21heWJlKCRtZWRpYXdpa2ksICRyZW1vdGVuYW1lLCAkdXJsKTsKIAogCQlteSAkcmVzdWx0ID0gJG1lZGlhd2lraS0+ZWRpdCggewogCQkJYWN0aW9uID0+ICdlZGl0JywKQEAgLTEwODksNDkgKzEwNDgsNDkgQEAKIAkJaWYgKCEkcmVzdWx0KSB7CiAJCQlpZiAoJG1lZGlhd2lraS0+e2Vycm9yfS0+e2NvZGV9ID09IDMpIHsKIAkJCQkjIGVkaXQgY29uZmxpY3RzLCBjb25zaWRlcmVkIGFzIG5vbi1mYXN0LWZvcndhcmQKLQkJCQlwcmludCBTVERFUlIgJ1dhcm5pbmc6IEVycm9yICcgLgorCQkJCXByaW50IHsqU1RERVJSfSAnV2FybmluZzogRXJyb3IgJyAuCiAJCQkJICAgICRtZWRpYXdpa2ktPntlcnJvcn0tPntjb2RlfSAuCi0JCQkJICAgICcgZnJvbSBtZWRpd2lraTogJyAuICRtZWRpYXdpa2ktPntlcnJvcn0tPntkZXRhaWxzfSAuCisJCQkJICAgICcgZnJvbSBtZWRpYXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLgogCQkJCSAgICAiLlxuIjsKLQkJCQlyZXR1cm4gKCRvbGRyZXZpZCwgIm5vbi1mYXN0LWZvcndhcmQiKTsKKwkJCQlyZXR1cm4gKCRvbGRyZXZpZCwgJ25vbi1mYXN0LWZvcndhcmQnKTsKIAkJCX0gZWxzZSB7CiAJCQkJIyBPdGhlciBlcnJvcnMuIFNob3VsZG4ndCBoYXBwZW4gPT4ganVzdCBkaWUoKQogCQkJCWRpZSAnRmF0YWw6IEVycm9yICcgLgogCQkJCSAgICAkbWVkaWF3aWtpLT57ZXJyb3J9LT57Y29kZX0gLgotCQkJCSAgICAnIGZyb20gbWVkaXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc307CisJCQkJICAgICcgZnJvbSBtZWRpYXdpa2k6ICcgLiAkbWVkaWF3aWtpLT57ZXJyb3J9LT57ZGV0YWlsc30gLiAiXG4iOwogCQkJfQogCQl9CiAJCSRuZXdyZXZpZCA9ICRyZXN1bHQtPntlZGl0fS0+e25ld3JldmlkfTsKLQkJcHJpbnQgU1RERVJSICJQdXNoZWQgZmlsZTogJG5ld19zaGExIC0gJHRpdGxlXG4iOworCQlwcmludCB7KlNUREVSUn0gIlB1c2hlZCBmaWxlOiAke25ld19zaGExfSAtICR7dGl0bGV9XG4iOwogCX0gZWxzaWYgKCRleHBvcnRfbWVkaWEpIHsKIAkJJG5ld3JldmlkID0gbXdfdXBsb2FkX2ZpbGUoJGNvbXBsZXRlX2ZpbGVfbmFtZSwgJG5ld19zaGExLAogCQkJCQkgICAkZXh0ZW5zaW9uLCAkcGFnZV9kZWxldGVkLAogCQkJCQkgICAkc3VtbWFyeSk7CiAJfSBlbHNlIHsKLQkJcHJpbnQgU1RERVJSICJJZ25vcmluZyBtZWRpYSBmaWxlICR0aXRsZVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJJZ25vcmluZyBtZWRpYSBmaWxlICR7dGl0bGV9XG4iOwogCX0KIAkkbmV3cmV2aWQgPSAoJG5ld3JldmlkIG9yICRvbGRyZXZpZCk7Ci0JcmV0dXJuICgkbmV3cmV2aWQsICJvayIpOworCXJldHVybiAoJG5ld3JldmlkLCAnb2snKTsKIH0KIAogc3ViIG13X3B1c2ggewogCSMgbXVsdGlwbGUgcHVzaCBzdGF0ZW1lbnRzIGNhbiBmb2xsb3cgZWFjaCBvdGhlcgotCW15IEByZWZzc3BlY3MgPSAoc2hpZnQsIGdldF9tb3JlX3JlZnMoInB1c2giKSk7CisJbXkgQHJlZnNzcGVjcyA9IChzaGlmdCwgZ2V0X21vcmVfcmVmcygncHVzaCcpKTsKIAlteSAkcHVzaGVkOwogCWZvciBteSAkcmVmc3BlYyAoQHJlZnNzcGVjcykgewogCQlteSAoJGZvcmNlLCAkbG9jYWwsICRyZW1vdGUpID0gJHJlZnNwZWMgPX4gL14oXCspPyhbXjpdKik6KFteOl0qKSQvCi0JCSAgICBvciBkaWUoIkludmFsaWQgcmVmc3BlYyBmb3IgcHVzaC4gRXhwZWN0ZWQgPHNyYz46PGRzdD4gb3IgKzxzcmM+Ojxkc3Q+Iik7CisJCSAgICBvciBkaWUoIkludmFsaWQgcmVmc3BlYyBmb3IgcHVzaC4gRXhwZWN0ZWQgPHNyYz46PGRzdD4gb3IgKzxzcmM+Ojxkc3Q+XG4iKTsKIAkJaWYgKCRmb3JjZSkgewotCQkJcHJpbnQgU1RERVJSICJXYXJuaW5nOiBmb3JjZWQgcHVzaCBub3QgYWxsb3dlZCBvbiBhIE1lZGlhV2lraS5cbiI7CisJCQlwcmludCB7KlNUREVSUn0gIldhcm5pbmc6IGZvcmNlZCBwdXNoIG5vdCBhbGxvd2VkIG9uIGEgTWVkaWFXaWtpLlxuIjsKIAkJfQotCQlpZiAoJGxvY2FsIGVxICIiKSB7Ci0JCQlwcmludCBTVERFUlIgIkNhbm5vdCBkZWxldGUgcmVtb3RlIGJyYW5jaCBvbiBhIE1lZGlhV2lraVxuIjsKLQkJCXByaW50IFNURE9VVCAiZXJyb3IgJHJlbW90ZSBjYW5ub3QgZGVsZXRlXG4iOworCQlpZiAoJGxvY2FsIGVxIEVNUFRZKSB7CisJCQlwcmludCB7KlNUREVSUn0gIkNhbm5vdCBkZWxldGUgcmVtb3RlIGJyYW5jaCBvbiBhIE1lZGlhV2lraVxuIjsKKwkJCXByaW50IHsqU1RET1VUfSAiZXJyb3IgJHtyZW1vdGV9IGNhbm5vdCBkZWxldGVcbiI7CiAJCQluZXh0OwogCQl9Ci0JCWlmICgkcmVtb3RlIG5lICJyZWZzL2hlYWRzL21hc3RlciIpIHsKLQkJCXByaW50IFNUREVSUiAiT25seSBwdXNoIHRvIHRoZSBicmFuY2ggJ21hc3RlcicgaXMgc3VwcG9ydGVkIG9uIGEgTWVkaWFXaWtpXG4iOwotCQkJcHJpbnQgU1RET1VUICJlcnJvciAkcmVtb3RlIG9ubHkgbWFzdGVyIGFsbG93ZWRcbiI7CisJCWlmICgkcmVtb3RlIG5lICdyZWZzL2hlYWRzL21hc3RlcicpIHsKKwkJCXByaW50IHsqU1RERVJSfSAiT25seSBwdXNoIHRvIHRoZSBicmFuY2ggJ21hc3RlcicgaXMgc3VwcG9ydGVkIG9uIGEgTWVkaWFXaWtpXG4iOworCQkJcHJpbnQgeypTVERPVVR9ICJlcnJvciAke3JlbW90ZX0gb25seSBtYXN0ZXIgYWxsb3dlZFxuIjsKIAkJCW5leHQ7CiAJCX0KIAkJaWYgKG13X3B1c2hfcmV2aXNpb24oJGxvY2FsLCAkcmVtb3RlKSkgewpAQCAtMTE0MCwzMCArMTA5OSwzMiBAQAogCX0KIAogCSMgTm90aWZ5IEdpdCB0aGF0IHRoZSBwdXNoIGlzIGRvbmUKLQlwcmludCBTVERPVVQgIlxuIjsKKwlwcmludCB7KlNURE9VVH0gIlxuIjsKIAogCWlmICgkcHVzaGVkICYmICRkdW1iX3B1c2gpIHsKLQkJcHJpbnQgU1RERVJSICJKdXN0IHB1c2hlZCBzb21lIHJldmlzaW9ucyB0byBNZWRpYVdpa2kuXG4iOwotCQlwcmludCBTVERFUlIgIlRoZSBwdXNoZWQgcmV2aXNpb25zIG5vdyBoYXZlIHRvIGJlIHJlLWltcG9ydGVkLCBhbmQgeW91ciBjdXJyZW50IGJyYW5jaFxuIjsKLQkJcHJpbnQgU1RERVJSICJuZWVkcyB0byBiZSB1cGRhdGVkIHdpdGggdGhlc2UgcmUtaW1wb3J0ZWQgY29tbWl0cy4gWW91IGNhbiBkbyB0aGlzIHdpdGhcbiI7Ci0JCXByaW50IFNUREVSUiAiXG4iOwotCQlwcmludCBTVERFUlIgIiAgZ2l0IHB1bGwgLS1yZWJhc2VcbiI7Ci0JCXByaW50IFNUREVSUiAiXG4iOworCQlwcmludCB7KlNUREVSUn0gIkp1c3QgcHVzaGVkIHNvbWUgcmV2aXNpb25zIHRvIE1lZGlhV2lraS5cbiI7CisJCXByaW50IHsqU1RERVJSfSAiVGhlIHB1c2hlZCByZXZpc2lvbnMgbm93IGhhdmUgdG8gYmUgcmUtaW1wb3J0ZWQsIGFuZCB5b3VyIGN1cnJlbnQgYnJhbmNoXG4iOworCQlwcmludCB7KlNUREVSUn0gIm5lZWRzIHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGVzZSByZS1pbXBvcnRlZCBjb21taXRzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aFxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJcbiI7CisJCXByaW50IHsqU1RERVJSfSAiICBnaXQgcHVsbCAtLXJlYmFzZVxuIjsKKwkJcHJpbnQgeypTVERFUlJ9ICJcbiI7CiAJfQorCXJldHVybjsKIH0KIAogc3ViIG13X3B1c2hfcmV2aXNpb24gewogCW15ICRsb2NhbCA9IHNoaWZ0OwogCW15ICRyZW1vdGUgPSBzaGlmdDsgIyBhY3R1YWxseSwgdGhpcyBoYXMgdG8gYmUgInJlZnMvaGVhZHMvbWFzdGVyIiBhdCB0aGlzIHBvaW50LgogCW15ICRsYXN0X2xvY2FsX3JldmlkID0gZ2V0X2xhc3RfbG9jYWxfcmV2aXNpb24oKTsKLQlwcmludCBTVERFUlIgIi5cbiI7ICMgRmluaXNoIHNlbnRlbmNlIHN0YXJ0ZWQgYnkgZ2V0X2xhc3RfbG9jYWxfcmV2aXNpb24oKQorCXByaW50IHsqU1RERVJSfSAiLlxuIjsgIyBGaW5pc2ggc2VudGVuY2Ugc3RhcnRlZCBieSBnZXRfbGFzdF9sb2NhbF9yZXZpc2lvbigpCiAJbXkgJGxhc3RfcmVtb3RlX3JldmlkID0gZ2V0X2xhc3RfcmVtb3RlX3JldmlzaW9uKCk7CiAJbXkgJG13X3JldmlzaW9uID0gJGxhc3RfcmVtb3RlX3JldmlkOwogCiAJIyBHZXQgc2hhMSBvZiBjb21taXQgcG9pbnRlZCBieSBsb2NhbCBIRUFECi0JbXkgJEhFQURfc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSAkbG9jYWwgMj4vZGV2L251bGwiKTsgY2hvbXAoJEhFQURfc2hhMSk7CisJbXkgJEhFQURfc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSAke2xvY2FsfSAyPi9kZXYvbnVsbCIpOworCWNob21wKCRIRUFEX3NoYTEpOwogCSMgR2V0IHNoYTEgb2YgY29tbWl0IHBvaW50ZWQgYnkgcmVtb3Rlcy8kcmVtb3RlbmFtZS9tYXN0ZXIKLQlteSAkcmVtb3Rlb3JpZ2luX3NoYTEgPSBydW5fZ2l0KCJyZXYtcGFyc2UgcmVmcy9yZW1vdGVzLyRyZW1vdGVuYW1lL21hc3RlciAyPi9kZXYvbnVsbCIpOworCW15ICRyZW1vdGVvcmlnaW5fc2hhMSA9IHJ1bl9naXQoInJldi1wYXJzZSByZWZzL3JlbW90ZXMvJHtyZW1vdGVuYW1lfS9tYXN0ZXIgMj4vZGV2L251bGwiKTsKIAljaG9tcCgkcmVtb3Rlb3JpZ2luX3NoYTEpOwogCiAJaWYgKCRsYXN0X2xvY2FsX3JldmlkID4gMCAmJgpAQCAtMTE4MiwyMiArMTE0MywyMiBAQAogCWlmICgkbGFzdF9sb2NhbF9yZXZpZCA+IDApIHsKIAkJbXkgJHBhcnNlZF9zaGExID0gJHJlbW90ZW9yaWdpbl9zaGExOwogCQkjIEZpbmQgYSBwYXRoIGZyb20gbGFzdCBNZWRpYVdpa2kgY29tbWl0IHRvIHB1c2hlZCBjb21taXQKLQkJcHJpbnQgU1RERVJSICJDb21wdXRpbmcgcGF0aCBmcm9tIGxvY2FsIHRvIHJlbW90ZSAuLi5cbiI7Ci0JCW15IEBsb2NhbF9hbmNlc3RyeSA9IHNwbGl0KC9cbi8sIHJ1bl9naXQoInJldi1saXN0IC0tYm91bmRhcnkgLS1wYXJlbnRzICRsb2NhbCBeJHBhcnNlZF9zaGExIikpOworCQlwcmludCB7KlNUREVSUn0gIkNvbXB1dGluZyBwYXRoIGZyb20gbG9jYWwgdG8gcmVtb3RlIC4uLlxuIjsKKwkJbXkgQGxvY2FsX2FuY2VzdHJ5ID0gc3BsaXQoL1xuLywgcnVuX2dpdCgicmV2LWxpc3QgLS1ib3VuZGFyeSAtLXBhcmVudHMgJHtsb2NhbH0gXiR7cGFyc2VkX3NoYTF9IikpOwogCQlteSAlbG9jYWxfYW5jZXN0cnk7CiAJCWZvcmVhY2ggbXkgJGxpbmUgKEBsb2NhbF9hbmNlc3RyeSkgewotCQkJaWYgKG15ICgkY2hpbGQsICRwYXJlbnRzKSA9ICRsaW5lID1+IG0vXi0/KFthLWYwLTldKykgKFthLWYwLTkgXSspLykgewotCQkJCWZvcmVhY2ggbXkgJHBhcmVudCAoc3BsaXQoJyAnLCAkcGFyZW50cykpIHsKKwkJCWlmIChteSAoJGNoaWxkLCAkcGFyZW50cykgPSAkbGluZSA9fiAvXi0/KFthLWYwLTldKykgKFthLWYwLTkgXSspLykgeworCQkJCWZvcmVhY2ggbXkgJHBhcmVudCAoc3BsaXQoLyAvLCAkcGFyZW50cykpIHsKIAkJCQkJJGxvY2FsX2FuY2VzdHJ5eyRwYXJlbnR9ID0gJGNoaWxkOwogCQkJCX0KLQkJCX0gZWxzaWYgKCEkbGluZSA9fiBtL14oW2EtZjAtOV0rKS8pIHsKLQkJCQlkaWUgIlVuZXhwZWN0ZWQgb3V0cHV0IGZyb20gZ2l0IHJldi1saXN0OiAkbGluZSI7CisJCQl9IGVsc2lmICghJGxpbmUgPX4gL14oW2EtZjAtOV0rKS8pIHsKKwkJCQlkaWUgIlVuZXhwZWN0ZWQgb3V0cHV0IGZyb20gZ2l0IHJldi1saXN0OiAke2xpbmV9XG4iOwogCQkJfQogCQl9CiAJCXdoaWxlICgkcGFyc2VkX3NoYTEgbmUgJEhFQURfc2hhMSkgewogCQkJbXkgJGNoaWxkID0gJGxvY2FsX2FuY2VzdHJ5eyRwYXJzZWRfc2hhMX07CiAJCQlpZiAoISRjaGlsZCkgewotCQkJCXByaW50ZiBTVERFUlIgIkNhbm5vdCBmaW5kIGEgcGF0aCBpbiBoaXN0b3J5IGZyb20gcmVtb3RlIGNvbW1pdCB0byBsYXN0IGNvbW1pdFxuIjsKKwkJCQlwcmludCB7KlNUREVSUn0gIkNhbm5vdCBmaW5kIGEgcGF0aCBpbiBoaXN0b3J5IGZyb20gcmVtb3RlIGNvbW1pdCB0byBsYXN0IGNvbW1pdFxuIjsKIAkJCQlyZXR1cm4gZXJyb3Jfbm9uX2Zhc3RfZm9yd2FyZCgkcmVtb3RlKTsKIAkJCX0KIAkJCXB1c2goQGNvbW1pdF9wYWlycywgWyRwYXJzZWRfc2hhMSwgJGNoaWxkXSk7CkBAIC0xMjA2LDEyICsxMTY3LDEyIEBACiAJfSBlbHNlIHsKIAkJIyBObyByZW1vdGUgbWVkaWF3aWtpIHJldmlzaW9uLiBFeHBvcnQgdGhlIHdob2xlCiAJCSMgaGlzdG9yeSAobGluZWFyaXplZCB3aXRoIC0tZmlyc3QtcGFyZW50KQotCQlwcmludCBTVERFUlIgIldhcm5pbmc6IG5vIGNvbW1vbiBhbmNlc3RvciwgcHVzaGluZyBjb21wbGV0ZSBoaXN0b3J5XG4iOwotCQlteSAkaGlzdG9yeSA9IHJ1bl9naXQoInJldi1saXN0IC0tZmlyc3QtcGFyZW50IC0tY2hpbGRyZW4gJGxvY2FsIik7Ci0JCW15IEBoaXN0b3J5ID0gc3BsaXQoJ1xuJywgJGhpc3RvcnkpOworCQlwcmludCB7KlNUREVSUn0gIldhcm5pbmc6IG5vIGNvbW1vbiBhbmNlc3RvciwgcHVzaGluZyBjb21wbGV0ZSBoaXN0b3J5XG4iOworCQlteSAkaGlzdG9yeSA9IHJ1bl9naXQoInJldi1saXN0IC0tZmlyc3QtcGFyZW50IC0tY2hpbGRyZW4gJHtsb2NhbH0iKTsKKwkJbXkgQGhpc3RvcnkgPSBzcGxpdCgvXG4vLCAkaGlzdG9yeSk7CiAJCUBoaXN0b3J5ID0gQGhpc3RvcnlbMS4uJCNoaXN0b3J5XTsKIAkJZm9yZWFjaCBteSAkbGluZSAocmV2ZXJzZSBAaGlzdG9yeSkgewotCQkJbXkgQGNvbW1pdF9pbmZvX3NwbGl0ID0gc3BsaXQoLyB8XG4vLCAkbGluZSk7CisJCQlteSBAY29tbWl0X2luZm9fc3BsaXQgPSBzcGxpdCgvWyBcbl0vLCAkbGluZSk7CiAJCQlwdXNoKEBjb21taXRfcGFpcnMsIFxAY29tbWl0X2luZm9fc3BsaXQpOwogCQl9CiAJfQpAQCAtMTIxOSwxMiArMTE4MCwxMiBAQAogCWZvcmVhY2ggbXkgJGNvbW1pdF9pbmZvX3NwbGl0IChAY29tbWl0X3BhaXJzKSB7CiAJCW15ICRzaGExX2NoaWxkID0gQHskY29tbWl0X2luZm9fc3BsaXR9WzBdOwogCQlteSAkc2hhMV9jb21taXQgPSBAeyRjb21taXRfaW5mb19zcGxpdH1bMV07Ci0JCW15ICRkaWZmX2luZm9zID0gcnVuX2dpdCgiZGlmZi10cmVlIC1yIC0tcmF3IC16ICRzaGExX2NoaWxkICRzaGExX2NvbW1pdCIpOworCQlteSAkZGlmZl9pbmZvcyA9IHJ1bl9naXQoImRpZmYtdHJlZSAtciAtLXJhdyAteiAke3NoYTFfY2hpbGR9ICR7c2hhMV9jb21taXR9Iik7CiAJCSMgVE9ETzogd2UgY291bGQgZGV0ZWN0IHJlbmFtZSwgYW5kIGVuY29kZSB0aGVtIHdpdGggYSAjcmVkaXJlY3Qgb24gdGhlIHdpa2kuCiAJCSMgVE9ETzogZm9yIG5vdywgaXQncyBqdXN0IGEgZGVsZXRlK2FkZAogCQlteSBAZGlmZl9pbmZvX2xpc3QgPSBzcGxpdCgvXDAvLCAkZGlmZl9pbmZvcyk7CiAJCSMgS2VlcCB0aGUgc3ViamVjdCBsaW5lIG9mIHRoZSBjb21taXQgbWVzc2FnZSBhcyBtZWRpYXdpa2kgY29tbWVudCBmb3IgdGhlIHJldmlzaW9uCi0JCW15ICRjb21taXRfbXNnID0gcnVuX2dpdCgibG9nIC0tbm8td2FsayAtLWZvcm1hdD1cIiVzXCIgJHNoYTFfY29tbWl0Iik7CisJCW15ICRjb21taXRfbXNnID0gcnVuX2dpdChxcShsb2cgLS1uby13YWxrIC0tZm9ybWF0PSIlcyIgJHtzaGExX2NvbW1pdH0pKTsKIAkJY2hvbXAoJGNvbW1pdF9tc2cpOwogCQkjIFB1c2ggZXZlcnkgYmxvYgogCQl3aGlsZSAoQGRpZmZfaW5mb19saXN0KSB7CkBAIC0xMjM2LDcgKzExOTcsNyBAQAogCQkJbXkgJGluZm8gPSBzaGlmdChAZGlmZl9pbmZvX2xpc3QpOwogCQkJbXkgJGZpbGUgPSBzaGlmdChAZGlmZl9pbmZvX2xpc3QpOwogCQkJKCRtd19yZXZpc2lvbiwgJHN0YXR1cykgPSBtd19wdXNoX2ZpbGUoJGluZm8sICRmaWxlLCAkY29tbWl0X21zZywgJG13X3JldmlzaW9uKTsKLQkJCWlmICgkc3RhdHVzIGVxICJub24tZmFzdC1mb3J3YXJkIikgeworCQkJaWYgKCRzdGF0dXMgZXEgJ25vbi1mYXN0LWZvcndhcmQnKSB7CiAJCQkJIyB3ZSBtYXkgYWxyZWFkeSBoYXZlIHNlbnQgcGFydCBvZiB0aGUKIAkJCQkjIGNvbW1pdCB0byBNZWRpYVdpa2ksIGJ1dCBpdCdzIHRvbwogCQkJCSMgbGF0ZSB0byBjYW5jZWwgaXQuIFN0b3AgdGhlIHB1c2ggaW4KQEAgLTEyNDQsMjIgKzEyMDUsMjIgQEAKIAkJCQkjIGFjY3VyYXRlIGVycm9yIG1lc3NhZ2UuCiAJCQkJcmV0dXJuIGVycm9yX25vbl9mYXN0X2ZvcndhcmQoJHJlbW90ZSk7CiAJCQl9Ci0JCQlpZiAoJHN0YXR1cyBuZSAib2siKSB7Ci0JCQkJZGllKCJVbmtub3duIGVycm9yIGZyb20gbXdfcHVzaF9maWxlKCkiKTsKKwkJCWlmICgkc3RhdHVzIG5lICdvaycpIHsKKwkJCQlkaWUoIlVua25vd24gZXJyb3IgZnJvbSBtd19wdXNoX2ZpbGUoKVxuIik7CiAJCQl9CiAJCX0KLQkJdW5sZXNzICgkZHVtYl9wdXNoKSB7Ci0JCQlydW5fZ2l0KCJub3RlcyAtLXJlZj0kcmVtb3RlbmFtZS9tZWRpYXdpa2kgYWRkIC1mIC1tIFwibWVkaWF3aWtpX3JldmlzaW9uOiAkbXdfcmV2aXNpb25cIiAkc2hhMV9jb21taXQiKTsKLQkJCXJ1bl9naXQoInVwZGF0ZS1yZWYgLW0gXCJHaXQtTWVkaWFXaWtpIHB1c2hcIiByZWZzL21lZGlhd2lraS8kcmVtb3RlbmFtZS9tYXN0ZXIgJHNoYTFfY29tbWl0ICRzaGExX2NoaWxkIik7CisJCWlmICghJGR1bWJfcHVzaCkgeworCQkJcnVuX2dpdChxcShub3RlcyAtLXJlZj0ke3JlbW90ZW5hbWV9L21lZGlhd2lraSBhZGQgLWYgLW0gIm1lZGlhd2lraV9yZXZpc2lvbjogJHttd19yZXZpc2lvbn0iICR7c2hhMV9jb21taXR9KSk7CisJCQlydW5fZ2l0KHFxKHVwZGF0ZS1yZWYgLW0gIkdpdC1NZWRpYVdpa2kgcHVzaCIgcmVmcy9tZWRpYXdpa2kvJHtyZW1vdGVuYW1lfS9tYXN0ZXIgJHtzaGExX2NvbW1pdH0gJHtzaGExX2NoaWxkfSkpOwogCQl9CiAJfQogCi0JcHJpbnQgU1RET1VUICJvayAkcmVtb3RlXG4iOworCXByaW50IHsqU1RET1VUfSAib2sgJHtyZW1vdGV9XG4iOwogCXJldHVybiAxOwogfQogCiBzdWIgZ2V0X2FsbG93ZWRfZmlsZV9leHRlbnNpb25zIHsKLQltd19jb25uZWN0X21heWJlKCk7CisJJG1lZGlhd2lraSA9IGNvbm5lY3RfbWF5YmUoJG1lZGlhd2lraSwgJHJlbW90ZW5hbWUsICR1cmwpOwogCiAJbXkgJHF1ZXJ5ID0gewogCQlhY3Rpb24gPT4gJ3F1ZXJ5JywKQEAgLTEyNjcsOCArMTIyOCw4IEBACiAJCXNpcHJvcCA9PiAnZmlsZWV4dGVuc2lvbnMnCiAJCX07CiAJbXkgJHJlc3VsdCA9ICRtZWRpYXdpa2ktPmFwaSgkcXVlcnkpOwotCW15IEBmaWxlX2V4dGVuc2lvbnM9IG1hcCAkXy0+e2V4dH0sQHskcmVzdWx0LT57cXVlcnl9LT57ZmlsZWV4dGVuc2lvbnN9fTsKLQlteSAlaGFzaEZpbGUgPSBtYXAgeyRfID0+IDF9QGZpbGVfZXh0ZW5zaW9uczsKKwlteSBAZmlsZV9leHRlbnNpb25zID0gbWFwIHsgJF8tPntleHR9fSBAeyRyZXN1bHQtPntxdWVyeX0tPntmaWxlZXh0ZW5zaW9uc319OworCW15ICVoYXNoRmlsZSA9IG1hcCB7ICRfID0+IDEgfSBAZmlsZV9leHRlbnNpb25zOwogCiAJcmV0dXJuICVoYXNoRmlsZTsKIH0KQEAgLTEyODMsMTUgKzEyNDQsMTUgQEAKICMgUmV0dXJuIE1lZGlhV2lraSBpZCBmb3IgYSBjYW5vbmljYWwgbmFtZXNwYWNlIG5hbWUuCiAjIEV4LjogIkZpbGUiLCAiUHJvamVjdCIuCiBzdWIgZ2V0X213X25hbWVzcGFjZV9pZCB7Ci0JbXdfY29ubmVjdF9tYXliZSgpOworCSRtZWRpYXdpa2kgPSBjb25uZWN0X21heWJlKCRtZWRpYXdpa2ksICRyZW1vdGVuYW1lLCAkdXJsKTsKIAlteSAkbmFtZSA9IHNoaWZ0OwogCiAJaWYgKCFleGlzdHMgJG5hbWVzcGFjZV9pZHskbmFtZX0pIHsKIAkJIyBMb29rIGF0IGNvbmZpZ3VyYXRpb24gZmlsZSwgaWYgdGhlIHJlY29yZCBmb3IgdGhhdCBuYW1lc3BhY2UgaXMKIAkJIyBhbHJlYWR5IGNhY2hlZC4gTmFtZXNwYWNlcyBhcmUgc3RvcmVkIGluIGZvcm06CiAJCSMgIk5hbWVfb2ZfbmFtZXNwYWNlOklkX25hbWVzcGFjZSIsIGV4LjogIkZpbGU6NiIuCi0JCW15IEB0ZW1wID0gc3BsaXQoL1tcbl0vLCBydW5fZ2l0KCJjb25maWcgLS1nZXQtYWxsIHJlbW90ZS4iCi0JCQkJCQkuICRyZW1vdGVuYW1lIC4iLm5hbWVzcGFjZUNhY2hlIikpOworCQlteSBAdGVtcCA9IHNwbGl0KC9cbi8sCisJCQkJIHJ1bl9naXQoImNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubmFtZXNwYWNlQ2FjaGUiKSk7CiAJCWNob21wKEB0ZW1wKTsKIAkJZm9yZWFjaCBteSAkbnMgKEB0ZW1wKSB7CiAJCQlteSAoJG4sICRpZCkgPSBzcGxpdCgvOi8sICRucyk7CkBAIC0xMzA1LDcgKzEyNjYsNyBAQAogCX0KIAogCWlmICghZXhpc3RzICRuYW1lc3BhY2VfaWR7JG5hbWV9KSB7Ci0JCXByaW50IFNUREVSUiAiTmFtZXNwYWNlICRuYW1lIG5vdCBmb3VuZCBpbiBjYWNoZSwgcXVlcnlpbmcgdGhlIHdpa2kgLi4uXG4iOworCQlwcmludCB7KlNUREVSUn0gIk5hbWVzcGFjZSAke25hbWV9IG5vdCBmb3VuZCBpbiBjYWNoZSwgcXVlcnlpbmcgdGhlIHdpa2kgLi4uXG4iOwogCQkjIE5TIG5vdCBmb3VuZCA9PiBnZXQgbmFtZXNwYWNlIGlkIGZyb20gTVcgYW5kIHN0b3JlIGl0IGluCiAJICAgICAgICAjIGNvbmZpZ3VyYXRpb24gZmlsZS4KIAkgICAgICAgIG15ICRxdWVyeSA9IHsKQEAgLTEzMjksOCArMTI5MCw4IEBACiAJbXkgJG5zID0gJG5hbWVzcGFjZV9pZHskbmFtZX07CiAJbXkgJGlkOwogCi0JdW5sZXNzIChkZWZpbmVkICRucykgewotCQlwcmludCBTVERFUlIgIk5vIHN1Y2ggbmFtZXNwYWNlICRuYW1lIG9uIE1lZGlhV2lraS5cbiI7CisJaWYgKCFkZWZpbmVkICRucykgeworCQlwcmludCB7KlNUREVSUn0gIk5vIHN1Y2ggbmFtZXNwYWNlICR7bmFtZX0gb24gTWVkaWFXaWtpLlxuIjsKIAkJJG5zID0ge2lzX25hbWVzcGFjZSA9PiAwfTsKIAkJJG5hbWVzcGFjZV9pZHskbmFtZX0gPSAkbnM7CiAJfQpAQCAtMTM0NCwxNSArMTMwNSwxNSBAQAogCiAJIyBTdG9yZSBleHBsaWNpdGVseSByZXF1ZXN0ZWQgbmFtZXNwYWNlcyBvbiBkaXNrCiAJaWYgKCFleGlzdHMgJGNhY2hlZF9td19uYW1lc3BhY2VfaWR7JG5hbWV9KSB7Ci0JCXJ1bl9naXQoImNvbmZpZyAtLWFkZCByZW1vdGUuIi4gJHJlbW90ZW5hbWUKLQkJCS4iLm5hbWVzcGFjZUNhY2hlIFwiIi4gJG5hbWUgLiI6Ii4gJHN0b3JlX2lkIC4iXCIiKTsKKwkJcnVuX2dpdChxcShjb25maWcgLS1hZGQgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubmFtZXNwYWNlQ2FjaGUgIiR7bmFtZX06JHtzdG9yZV9pZH0iKSk7CiAJCSRjYWNoZWRfbXdfbmFtZXNwYWNlX2lkeyRuYW1lfSA9IDE7CiAJfQogCXJldHVybiAkaWQ7CiB9CiAKIHN1YiBnZXRfbXdfbmFtZXNwYWNlX2lkX2Zvcl9wYWdlIHsKLQlpZiAobXkgKCRuYW1lc3BhY2UpID0gJF9bMF0gPX4gL14oW146XSopOi8pIHsKKwlteSAkbmFtZXNwYWNlID0gc2hpZnQ7CisJaWYgKCRuYW1lc3BhY2UgPX4gL14oW146XSopOi8pIHsKIAkJcmV0dXJuIGdldF9td19uYW1lc3BhY2VfaWQoJG5hbWVzcGFjZSk7CiAJfSBlbHNlIHsKIAkJcmV0dXJuOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvdC90ZXN0LWdpdG13LWxpYi5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy1saWIuc2gKaW5kZXggM2IyY2ZhYy4uY2E2ODYwZiAxMDA3NTUKLS0tIGEvY29udHJpYi9tdy10by1naXQvdC90ZXN0LWdpdG13LWxpYi5zaAorKysgYi9jb250cmliL213LXRvLWdpdC90L3Rlc3QtZ2l0bXctbGliLnNoCkBAIC02MiwxMiArNjIsOCBAQAogCQl0ZXN0X2RvbmUKIAlmaQogCi0JaWYgWyAhIC1mICIkR0lUX0JVSUxEX0RJUiIvZ2l0LXJlbW90ZS1tZWRpYXdpa2kgXTsKLQl0aGVuCi0JCWVjaG8gIk5vIHJlbW90ZSBtZWRpYXdpa2kgZm9yIGdpdCBmb3VuZC4gQ29weWluZyBpdCBpbiBnaXQiCi0JCWVjaG8gImNwICRHSVRfQlVJTERfRElSL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpICRHSVRfQlVJTERfRElSLyIKLQkJbG4gLXMgIiRHSVRfQlVJTERfRElSIi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraSAiJEdJVF9CVUlMRF9ESVIiCi0JZmkKKwlHSVRfRVhFQ19QQVRIPSQoY2QgIiQoZGlybmFtZSAiJDAiKSIgJiYgY2QgIi4uLy4uIiAmJiBwd2QpCisJUEFUSD0iJEdJVF9FWEVDX1BBVEgiJy9iaW4td3JhcHBlcjonIiRQQVRIIgogCiAJaWYgWyAhIC1kICIkV0lLSV9ESVJfSU5TVC8kV0lLSV9ESVJfTkFNRSIgXTsKIAl0aGVuCkBAIC0zMzYsMjAgKzMzMiwyMSBAQAogCWZpCiAKIAkjIEZldGNoIE1lZGlhV2lraSdzIGFyY2hpdmUgaWYgbm90IGFscmVhZHkgcHJlc2VudCBpbiB0aGUgVE1QIGRpcmVjdG9yeQorCU1XX0ZJTEVOQU1FPSJtZWRpYXdpa2ktJE1XX1ZFUlNJT05fTUFKT1IuJE1XX1ZFUlNJT05fTUlOT1IudGFyLmd6IgogCWNkICIkVE1QIgotCWlmIFsgISAtZiAiJE1XX1ZFUlNJT04udGFyLmd6IiBdIDsgdGhlbgotCQllY2hvICJEb3dubG9hZGluZyAkTVdfVkVSU0lPTiBzb3VyY2VzIC4uLiIKLQkJd2dldCAiaHR0cDovL2Rvd25sb2FkLndpa2ltZWRpYS5vcmcvbWVkaWF3aWtpLzEuMTkvbWVkaWF3aWtpLTEuMTkuMC50YXIuZ3oiIHx8CisJaWYgWyAhIC1mICRNV19GSUxFTkFNRSBdIDsgdGhlbgorCQllY2hvICJEb3dubG9hZGluZyAkTVdfVkVSU0lPTl9NQUpPUi4kTVdfVkVSU0lPTl9NSU5PUiBzb3VyY2VzIC4uLiIKKwkJd2dldCAiaHR0cDovL2Rvd25sb2FkLndpa2ltZWRpYS5vcmcvbWVkaWF3aWtpLyRNV19WRVJTSU9OX01BSk9SLyRNV19GSUxFTkFNRSIgfHwKIAkJCWVycm9yICJVbmFibGUgdG8gZG93bmxvYWQgIlwKLQkJCSJodHRwOi8vZG93bmxvYWQud2lraW1lZGlhLm9yZy9tZWRpYXdpa2kvMS4xOS8iXAotCQkJIm1lZGlhd2lraS0xLjE5LjAudGFyLmd6LiAiXAorCQkJImh0dHA6Ly9kb3dubG9hZC53aWtpbWVkaWEub3JnL21lZGlhd2lraS8kTVdfVkVSU0lPTl9NQUpPUi8iXAorCQkJIiRNV19GSUxFTkFNRS4gIlwKIAkJCSJQbGVhc2UgZml4IHlvdXIgY29ubmVjdGlvbiBhbmQgbGF1bmNoIHRoZSBzY3JpcHQgYWdhaW4uIgotCQllY2hvICIkTVdfVkVSU0lPTi50YXIuZ3ogZG93bmxvYWRlZCBpbiBgcHdkYC4gIlwKKwkJZWNobyAiJE1XX0ZJTEVOQU1FIGRvd25sb2FkZWQgaW4gYHB3ZGAuICJcCiAJCQkiWW91IGNhbiBkZWxldGUgaXQgbGF0ZXIgaWYgeW91IHdhbnQuIgogCWVsc2UKLQkJZWNobyAiUmV1c2luZyBleGlzdGluZyAkTVdfVkVSU0lPTi50YXIuZ3ogZG93bmxvYWRlZCBpbiBgcHdkYC4iCisJCWVjaG8gIlJldXNpbmcgZXhpc3RpbmcgJE1XX0ZJTEVOQU1FIGRvd25sb2FkZWQgaW4gYHB3ZGAuIgogCWZpCi0JYXJjaGl2ZV9hYnNfcGF0aD0kKHB3ZCkvIiRNV19WRVJTSU9OLnRhci5neiIKKwlhcmNoaXZlX2Fic19wYXRoPSQocHdkKS8kTVdfRklMRU5BTUUKIAljZCAiJFdJS0lfRElSX0lOU1QvJFdJS0lfRElSX05BTUUvIiB8fAogCQllcnJvciAiY2FuJ3QgY2QgdG8gJFdJS0lfRElSX0lOU1QvJFdJS0lfRElSX05BTUUvIgogCXRhciB4emYgIiRhcmNoaXZlX2Fic19wYXRoIiAtLXN0cmlwLWNvbXBvbmVudHM9MSB8fApAQCAtNDMxLDUgKzQyOCw1IEBACiAJIyBEZWxldGUgdGhlIHdpa2kncyBTUUxpdGUgZGF0YWJhc2UKIAlybSAtZiAiJFRNUC8kREJfRklMRSIgfHwgZXJyb3IgIkRhdGFiYXNlICRUTVAvJERCX0ZJTEUgY291bGQgbm90IGJlIGRlbGV0ZWQuIgogCXJtIC1mICIkRklMRVNfRk9MREVSLyREQl9GSUxFIgotCXJtIC1yZiAiJFRNUC8kTVdfVkVSU0lPTiIKKwlybSAtcmYgIiRUTVAvbWVkaWF3aWtpLSRNV19WRVJTSU9OX01BSk9SLiRNV19WRVJTSU9OX01JTk9SLnRhci5neiIKIH0KZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC5jb25maWcgYi9jb250cmliL213LXRvLWdpdC90L3Rlc3QuY29uZmlnCmluZGV4IDk1OGIzN2IuLjRjZmViZTkgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC5jb25maWcKKysrIGIvY29udHJpYi9tdy10by1naXQvdC90ZXN0LmNvbmZpZwpAQCAtMzAsNiArMzAsOCBAQAogCiAjIFRoZSB2YXJpYWJsZXMgYmVsb3cgYXJlIHVzZWQgYnkgdGhlIHNjcmlwdCB0byBpbnN0YWxsIGEgd2lraS4KICMgWW91IHNob3VsZCBub3QgbW9kaWZ5IHRoZXNlIHVubGVzcyB5b3UgYXJlIG1vZGlmeWluZyB0aGUgc2NyaXB0IGl0c2VsZi4KLU1XX1ZFUlNJT049bWVkaWF3aWtpLTEuMTkuMAorIyB0ZXN0ZWQgdmVyc2lvbnM6IDEuMTkuWCAtPiAxLjIxLjEKK01XX1ZFUlNJT05fTUFKT1I9MS4yMQorTVdfVkVSU0lPTl9NSU5PUj0xCiBGSUxFU19GT0xERVI9aW5zdGFsbC13aWtpCiBEQl9JTlNUQUxMX1NDUklQVD1kYl9pbnN0YWxsLnBocApkaWZmIC0tZ2l0IGEvY29udHJpYi9wYXRjaGVzL2RvY2Jvb2steHNsLW1hbnBhZ2VzLWNoYXJtYXAucGF0Y2ggYi9jb250cmliL3BhdGNoZXMvZG9jYm9vay14c2wtbWFucGFnZXMtY2hhcm1hcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJiMDhiNC4uMDAwMDAwMAotLS0gYS9jb250cmliL3BhdGNoZXMvZG9jYm9vay14c2wtbWFucGFnZXMtY2hhcm1hcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLUZyb206IElzbWFpbCBEw7ZubWV6IDxpc21haWxAcGFyZHVzLm9yZy50cj4KLQotVHJ5aW5nIHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uIHdpdGggZG9jYm9vay14c2wgMS43MyBtYXkgcmVzdWx0IGluCi10aGUgZm9sbG93aW5nIGVycm9yLiAgVGhpcyBwYXRjaCBmaXhlcyBpdC4KLQotJCB4bWx0byAtbSBjYWxsb3V0cy54c2wgbWFuIGdpdC1hZGQueG1sCi1ydW50aW1lIGVycm9yOiBmaWxlCi1maWxlOi8vL3Vzci9zaGFyZS9zZ21sL2RvY2Jvb2sveHNsLXN0eWxlc2hlZXRzLTEuNzMuMC9tYW5wYWdlcy9vdGhlci54c2wgbGluZQotMTI5IGVsZW1lbnQgY2FsbC10ZW1wbGF0ZQotVGhlIGNhbGxlZCB0ZW1wbGF0ZSAncmVhZC1jaGFyYWN0ZXItbWFwJyB3YXMgbm90IGZvdW5kLgotCi0tLS0gZG9jYm9vay14c2wtMS43My4wL21hbnBhZ2VzL2RvY2Jvb2sueHNsLm1hbnBhZ2VzLWNoYXJtYXAJMjAwNy0wNy0yMyAxNjoyNDoyMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBkb2Nib29rLXhzbC0xLjczLjAvbWFucGFnZXMvZG9jYm9vay54c2wJMjAwNy0wNy0yMyAxNjoyNToxNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0zNyw2ICszNyw3IEBACi0gICA8eHNsOmluY2x1ZGUgaHJlZj0ibGlzdHMueHNsIi8+Ci0gICA8eHNsOmluY2x1ZGUgaHJlZj0iZW5kbm90ZXMueHNsIi8+Ci0gICA8eHNsOmluY2x1ZGUgaHJlZj0idGFibGUueHNsIi8+Ci0rICA8eHNsOmluY2x1ZGUgaHJlZj0iLi4vY29tbW9uL2NoYXJtYXAueHNsIi8+Ci0KLSAgIDwhLS0gKiB3ZSByZW5hbWUgdGhlIGZvbGxvd2luZyBqdXN0IHRvIGF2b2lkIHVzaW5nIHBhcmFtcyB3aXRoICJtYW4iIC0tPgotICAgPCEtLSAqIHByZWZpeGVzIGluIHRoZSB0YWJsZS54c2wgc3R5bGVzaGVldCAoYmVjYXVzZSB0aGF0IHN0eWxlc2hlZXQgLS0+CmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtYnpyIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWJ6cgppbmRleCAxMDMwMGM2Li5jM2EzY2FjIDEwMDc1NQotLS0gYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtYnpyCisrKyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1ienIKQEAgLTExNiw3ICsxMTYsMTAgQEAKICAgICAgICAgc2VsZi5sYXN0X21hcmsgPSBtYXJrCiAKICAgICBkZWYgZ2V0X3RpcChzZWxmLCBicmFuY2gpOgotICAgICAgICByZXR1cm4gc2VsZi50aXBzLmdldChicmFuY2gsIE5vbmUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzdHIoc2VsZi50aXBzW2JyYW5jaF0pCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYgc2V0X3RpcChzZWxmLCBicmFuY2gsIHRpcCk6CiAgICAgICAgIHNlbGYudGlwc1ticmFuY2hdID0gdGlwCkBAIC0yNzgsNyArMjgxLDcgQEAKICAgICByZWYgPSAnJXMvaGVhZHMvJXMnICUgKHByZWZpeCwgbmFtZSkKICAgICB0aXAgPSBtYXJrcy5nZXRfdGlwKG5hbWUpCiAKLSAgICBicmFuY2ggPSBienJsaWIuYnJhbmNoLkJyYW5jaC5vcGVuKGJyYW5jaGVzW25hbWVdKQorICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG5hbWUpCiAgICAgcmVwbyA9IGJyYW5jaC5yZXBvc2l0b3J5CiAKICAgICBicmFuY2gubG9ja19yZWFkKCkKQEAgLTU5MCw3ICs1OTMsNyBAQAogCiAgICAgaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvaGVhZHMvJyk6CiAgICAgICAgIG5hbWUgPSByZWZbbGVuKCdyZWZzL2hlYWRzLycpOl0KLSAgICAgICAgYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3BlbihicmFuY2hlc1tuYW1lXSkKKyAgICAgICAgYnJhbmNoID0gZ2V0X3JlbW90ZV9icmFuY2gobmFtZSkKICAgICBlbHNlOgogICAgICAgICBkaWUoJ3Vua25vd24gcmVmJykKIApAQCAtNjIxLDcgKzYyNCw3IEBACiAgICAgICAgICAgICBtYXJrID0gaW50KG1hcmtfcmVmWzE6XSkKICAgICAgICAgICAgIGYgPSB7ICdtb2RlJyA6IG0sICdtYXJrJyA6IG1hcmsgfQogICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnRCcpOgotICAgICAgICAgICAgdCwgcGF0aCA9IGxpbmUuc3BsaXQoJyAnKQorICAgICAgICAgICAgdCwgcGF0aCA9IGxpbmUuc3BsaXQoJyAnLCAxKQogICAgICAgICAgICAgZiA9IHsgJ2RlbGV0ZWQnIDogVHJ1ZSB9CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWUoJ1Vua25vd24gZmlsZSBjb21tYW5kOiAlcycgJSBsaW5lKQpAQCAtNjkyLDcgKzY5NSw3IEBACiAgICAgZm9yIHJlZiwgcmV2aWQgaW4gcGFyc2VkX3JlZnMuaXRlcml0ZW1zKCk6CiAgICAgICAgIGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzLycpOgogICAgICAgICAgICAgbmFtZSA9IHJlZltsZW4oJ3JlZnMvaGVhZHMvJyk6XQotICAgICAgICAgICAgYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3BlbihicmFuY2hlc1tuYW1lXSkKKyAgICAgICAgICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG5hbWUpCiAgICAgICAgICAgICBicmFuY2guZ2VuZXJhdGVfcmV2aXNpb25faGlzdG9yeShyZXZpZCwgbWFya3MuZ2V0X3RpcChuYW1lKSkKIAogICAgICAgICAgICAgaWYgbmFtZSBpbiBwZWVyczoKQEAgLTc0OSw3ICs3NTIsNyBAQAogICAgICAgICAgICAgbWFzdGVyX2JyYW5jaCA9IG5hbWUKICAgICAgICAgcHJpbnQgIj8gcmVmcy9oZWFkcy8lcyIgJSBuYW1lCiAKLSAgICBicmFuY2ggPSBienJsaWIuYnJhbmNoLkJyYW5jaC5vcGVuKGJyYW5jaGVzW21hc3Rlcl9icmFuY2hdKQorICAgIGJyYW5jaCA9IGdldF9yZW1vdGVfYnJhbmNoKG1hc3Rlcl9icmFuY2gpCiAgICAgYnJhbmNoLmxvY2tfcmVhZCgpCiAgICAgZm9yIHRhZywgcmV2aWQgaW4gYnJhbmNoLnRhZ3MuZ2V0X3RhZ19kaWN0KCkuaXRlbXMoKToKICAgICAgICAgdHJ5OgpAQCAtNzY1LDMwICs3NjgsNDAgQEAKICAgICBwcmludCAiQHJlZnMvaGVhZHMvJXMgSEVBRCIgJSBtYXN0ZXJfYnJhbmNoCiAgICAgcHJpbnQKIAotZGVmIGdldF9yZW1vdGVfYnJhbmNoKG9yaWdpbiwgcmVtb3RlX2JyYW5jaCwgbmFtZSk6Ci0gICAgZ2xvYmFsIGRpcm5hbWUsIHBlZXJzCitkZWYgY2xvbmUocGF0aCwgcmVtb3RlX2JyYW5jaCk6CisgICAgdHJ5OgorICAgICAgICBiZGlyID0gYnpybGliLmJ6cmRpci5CenJEaXIuY3JlYXRlKHBhdGgpCisgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuQWxyZWFkeUNvbnRyb2xEaXJFcnJvcjoKKyAgICAgICAgYmRpciA9IGJ6cmxpYi5ienJkaXIuQnpyRGlyLm9wZW4ocGF0aCkKKyAgICByZXBvID0gYmRpci5maW5kX3JlcG9zaXRvcnkoKQorICAgIHJlcG8uZmV0Y2gocmVtb3RlX2JyYW5jaC5yZXBvc2l0b3J5KQorICAgIHJldHVybiByZW1vdGVfYnJhbmNoLnNwcm91dChiZGlyLCByZXBvc2l0b3J5PXJlcG8pCisKK2RlZiBnZXRfcmVtb3RlX2JyYW5jaChuYW1lKToKKyAgICBnbG9iYWwgZGlybmFtZSwgYnJhbmNoZXMKKworICAgIHJlbW90ZV9icmFuY2ggPSBienJsaWIuYnJhbmNoLkJyYW5jaC5vcGVuKGJyYW5jaGVzW25hbWVdKQorICAgIGlmIGlzaW5zdGFuY2UocmVtb3RlX2JyYW5jaC51c2VyX3RyYW5zcG9ydCwgYnpybGliLnRyYW5zcG9ydC5sb2NhbC5Mb2NhbFRyYW5zcG9ydCk6CisgICAgICAgIHJldHVybiByZW1vdGVfYnJhbmNoCiAKICAgICBicmFuY2hfcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnY2xvbmUnLCBuYW1lKQotICAgIGlmIG9zLnBhdGguZXhpc3RzKGJyYW5jaF9wYXRoKToKKworICAgIHRyeToKKyAgICAgICAgYnJhbmNoID0gYnpybGliLmJyYW5jaC5CcmFuY2gub3BlbihicmFuY2hfcGF0aCkKKyAgICBleGNlcHQgYnpybGliLmVycm9ycy5Ob3RCcmFuY2hFcnJvcjoKKyAgICAgICAgIyBjbG9uZQorICAgICAgICBicmFuY2ggPSBjbG9uZShicmFuY2hfcGF0aCwgcmVtb3RlX2JyYW5jaCkKKyAgICBlbHNlOgogICAgICAgICAjIHB1bGwKLSAgICAgICAgZCA9IGJ6cmxpYi5ienJkaXIuQnpyRGlyLm9wZW4oYnJhbmNoX3BhdGgpCi0gICAgICAgIGJyYW5jaCA9IGQub3Blbl9icmFuY2goKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBicmFuY2gucHVsbChyZW1vdGVfYnJhbmNoLCBbXSwgTm9uZSwgRmFsc2UpCisgICAgICAgICAgICBicmFuY2gucHVsbChyZW1vdGVfYnJhbmNoLCBvdmVyd3JpdGU9VHJ1ZSkKICAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuRGl2ZXJnZWRCcmFuY2hlczoKICAgICAgICAgICAgICMgdXNlIHJlbW90ZSBicmFuY2ggZm9yIG5vdwogICAgICAgICAgICAgcmV0dXJuIHJlbW90ZV9icmFuY2gKLSAgICBlbHNlOgotICAgICAgICAjIGNsb25lCi0gICAgICAgIGQgPSBvcmlnaW4uc3Byb3V0KGJyYW5jaF9wYXRoLCBOb25lLAotICAgICAgICAgICAgICAgIGhhcmRsaW5rPVRydWUsIGNyZWF0ZV90cmVlX2lmX2xvY2FsPUZhbHNlLAotICAgICAgICAgICAgICAgIGZvcmNlX25ld19yZXBvPUZhbHNlLAotICAgICAgICAgICAgICAgIHNvdXJjZV9icmFuY2g9cmVtb3RlX2JyYW5jaCkKLSAgICAgICAgYnJhbmNoID0gZC5vcGVuX2JyYW5jaCgpCiAKICAgICByZXR1cm4gYnJhbmNoCiAKLWRlZiBmaW5kX2JyYW5jaGVzKHJlcG8sIHdhbnRlZCk6CitkZWYgZmluZF9icmFuY2hlcyhyZXBvKToKICAgICB0cmFuc3BvcnQgPSByZXBvLmJ6cmRpci5yb290X3RyYW5zcG9ydAogCiAgICAgZm9yIGZuIGluIHRyYW5zcG9ydC5pdGVyX2ZpbGVzX3JlY3Vyc2l2ZSgpOgpAQCAtNzk5LDE2ICs4MTIsMTMgQEAKICAgICAgICAgbmFtZSA9IG5hbWUgaWYgbmFtZSAhPSAnJyBlbHNlICdtYXN0ZXInCiAgICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoJy8nLCAnKycpCiAKLSAgICAgICAgaWYgd2FudGVkIGFuZCBub3QgbmFtZSBpbiB3YW50ZWQ6Ci0gICAgICAgICAgICBjb250aW51ZQotCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGN1ciA9IHRyYW5zcG9ydC5jbG9uZShzdWJkaXIpCiAgICAgICAgICAgICBicmFuY2ggPSBienJsaWIuYnJhbmNoLkJyYW5jaC5vcGVuX2Zyb21fdHJhbnNwb3J0KGN1cikKICAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm90QnJhbmNoRXJyb3I6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQgbmFtZSwgYnJhbmNoCisgICAgICAgICAgICB5aWVsZCBuYW1lLCBicmFuY2guYmFzZQogCiBkZWYgZ2V0X3JlcG8odXJsLCBhbGlhcyk6CiAgICAgZ2xvYmFsIGRpcm5hbWUsIHBlZXIsIGJyYW5jaGVzCkBAIC04NDEsNDQgKzg1MSwzNSBAQAogICAgICAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKICAgICAgICAgICAgICAgICBwYXNzCiAKLSAgICB0cnk6Ci0gICAgICAgIHJlcG8gPSBvcmlnaW4ub3Blbl9yZXBvc2l0b3J5KCkKLSAgICAgICAgaWYgbm90IHJlcG8udXNlcl90cmFuc3BvcnQubGlzdGFibGUoKToKLSAgICAgICAgICAgICMgdGhpcyByZXBvc2l0b3J5IGlzIG5vdCB1c2FibGUgZm9yIHVzCi0gICAgICAgICAgICByYWlzZSBienJsaWIuZXJyb3JzLk5vUmVwb3NpdG9yeVByZXNlbnQocmVwby5ienJkaXIpCi0gICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKLSAgICAgICAgIyBicmFuY2gKKyAgICB3YW50ZWQgPSBnZXRfY29uZmlnKCdyZW1vdGUtYnpyLmJyYW5jaGVzJykucnN0cmlwKCkuc3BsaXQoJywgJykKKyAgICAjIHN0dXBpZCBweXRob24KKyAgICB3YW50ZWQgPSBbZSBmb3IgZSBpbiB3YW50ZWQgaWYgZV0KIAotICAgICAgICBuYW1lID0gJ21hc3RlcicKLSAgICAgICAgcmVtb3RlX2JyYW5jaCA9IG9yaWdpbi5vcGVuX2JyYW5jaCgpCisgICAgaWYgbm90IHdhbnRlZDoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVwbyA9IG9yaWdpbi5vcGVuX3JlcG9zaXRvcnkoKQorICAgICAgICAgICAgaWYgbm90IHJlcG8udXNlcl90cmFuc3BvcnQubGlzdGFibGUoKToKKyAgICAgICAgICAgICAgICAjIHRoaXMgcmVwb3NpdG9yeSBpcyBub3QgdXNhYmxlIGZvciB1cworICAgICAgICAgICAgICAgIHJhaXNlIGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudChyZXBvLmJ6cmRpcikKKyAgICAgICAgZXhjZXB0IGJ6cmxpYi5lcnJvcnMuTm9SZXBvc2l0b3J5UHJlc2VudDoKKyAgICAgICAgICAgIHdhbnRlZCA9IFsnbWFzdGVyJ10KIAotICAgICAgICBpZiBub3QgaXNfbG9jYWw6Ci0gICAgICAgICAgICBwZWVyc1tuYW1lXSA9IHJlbW90ZV9icmFuY2guYmFzZQotICAgICAgICAgICAgYnJhbmNoID0gZ2V0X3JlbW90ZV9icmFuY2gob3JpZ2luLCByZW1vdGVfYnJhbmNoLCBuYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYnJhbmNoID0gcmVtb3RlX2JyYW5jaAorICAgIGlmIHdhbnRlZDoKKyAgICAgICAgZGVmIGxpc3Rfd2FudGVkKHVybCwgd2FudGVkKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHdhbnRlZDoKKyAgICAgICAgICAgICAgICBzdWJkaXIgPSBuYW1lIGlmIG5hbWUgIT0gJ21hc3RlcicgZWxzZSAnJworICAgICAgICAgICAgICAgIHlpZWxkIG5hbWUsIGJ6cmxpYi51cmx1dGlscy5qb2luKHVybCwgc3ViZGlyKQogCi0gICAgICAgIGJyYW5jaGVzW25hbWVdID0gYnJhbmNoLmJhc2UKLQotICAgICAgICByZXR1cm4gYnJhbmNoLnJlcG9zaXRvcnkKKyAgICAgICAgYnJhbmNoX2xpc3QgPSBsaXN0X3dhbnRlZCh1cmwsIHdhbnRlZCkKICAgICBlbHNlOgotICAgICAgICAjIHJlcG9zaXRvcnkKKyAgICAgICAgYnJhbmNoX2xpc3QgPSBmaW5kX2JyYW5jaGVzKHJlcG8pCiAKLSAgICAgICAgd2FudGVkID0gZ2V0X2NvbmZpZygncmVtb3RlLWJ6ci5icmFuY2hlcycpLnJzdHJpcCgpLnNwbGl0KCcsICcpCi0gICAgICAgICMgc3R1cGlkIHB5dGhvbgotICAgICAgICB3YW50ZWQgPSBbZSBmb3IgZSBpbiB3YW50ZWQgaWYgZV0KKyAgICBmb3IgbmFtZSwgdXJsIGluIGJyYW5jaF9saXN0OgorICAgICAgICBpZiBub3QgaXNfbG9jYWw6CisgICAgICAgICAgICBwZWVyc1tuYW1lXSA9IHVybAorICAgICAgICBicmFuY2hlc1tuYW1lXSA9IHVybAogCi0gICAgICAgIGZvciBuYW1lLCByZW1vdGVfYnJhbmNoIGluIGZpbmRfYnJhbmNoZXMocmVwbywgd2FudGVkKToKLQotICAgICAgICAgICAgaWYgbm90IGlzX2xvY2FsOgotICAgICAgICAgICAgICAgIHBlZXJzW25hbWVdID0gcmVtb3RlX2JyYW5jaC5iYXNlCi0gICAgICAgICAgICAgICAgYnJhbmNoID0gZ2V0X3JlbW90ZV9icmFuY2gob3JpZ2luLCByZW1vdGVfYnJhbmNoLCBuYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmFuY2ggPSByZW1vdGVfYnJhbmNoCi0KLSAgICAgICAgICAgIGJyYW5jaGVzW25hbWVdID0gYnJhbmNoLmJhc2UKLQotICAgICAgICByZXR1cm4gcmVwbworICAgIHJldHVybiBvcmlnaW4KIAogZGVmIGZpeF9wYXRoKGFsaWFzLCBvcmlnX3VybCk6CiAgICAgdXJsID0gdXJscGFyc2UudXJscGFyc2Uob3JpZ191cmwsICdmaWxlJykKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1oZyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvZ2l0LXJlbW90ZS1oZwppbmRleCAxZGQzZDcwLi4wMTk0YzY3IDEwMDc1NQotLS0gYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL2dpdC1yZW1vdGUtaGcKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy9naXQtcmVtb3RlLWhnCkBAIC0xMiw3ICsxMiw3IEBACiAjIEZvciByZW1vdGUgcmVwb3NpdG9yaWVzIGEgbG9jYWwgY2xvbmUgaXMgc3RvcmVkIGluCiAjICIkR0lUX0RJUi9oZy9vcmlnaW4vY2xvbmUvLmhnLyIuCiAKLWZyb20gbWVyY3VyaWFsIGltcG9ydCBoZywgdWksIGJvb2ttYXJrcywgY29udGV4dCwgZW5jb2RpbmcsIG5vZGUsIGVycm9yLCBleHRlbnNpb25zCitmcm9tIG1lcmN1cmlhbCBpbXBvcnQgaGcsIHVpLCBib29rbWFya3MsIGNvbnRleHQsIGVuY29kaW5nLCBub2RlLCBlcnJvciwgZXh0ZW5zaW9ucywgZGlzY292ZXJ5LCB1dGlsCiAKIGltcG9ydCByZQogaW1wb3J0IHN5cwpAQCAtMjksOSArMjksNiBAQAogIyBuYW1lZCBicmFuY2hlczoKICMgZ2l0IGNvbmZpZyAtLWdsb2JhbCByZW1vdGUtaGcudHJhY2stYnJhbmNoZXMgZmFsc2UKICMKLSMgSWYgeW91IGRvbid0IHdhbnQgdG8gZm9yY2UgcHVzaGVzIChhbmQgdGh1cyByaXNrIGNyZWF0aW5nIG5ldyByZW1vdGUgaGVhZHMpOgotIyBnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy5mb3JjZS1wdXNoIGZhbHNlCi0jCiAjIElmIHlvdSB3YW50IHRoZSBlcXVpdmFsZW50IG9mIGhnJ3MgY2xvbmUvcHVsbC0taW5zZWN1cmUgb3B0aW9uOgogIyBnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy5pbnNlY3VyZSB0cnVlCiAjCkBAIC01NSw2ICs1Miw4IEBACiBBVVRIT1JfSEdfUkUgPSByZS5jb21waWxlKCdeKC4qPykgPzwoLio/KSg/Oj4oLispPyk/JCcpCiBSQVdfQVVUSE9SX1JFID0gcmUuY29tcGlsZSgnXihcdyspICg/OiguKyk/ICk/PCguKik+IChcZCspIChbKy1dXGQrKScpCiAKK1ZFUlNJT04gPSAyCisKIGRlZiBkaWUobXNnLCAqYXJncyk6CiAgICAgc3lzLnN0ZGVyci53cml0ZSgnRVJST1I6ICVzXG4nICUgKG1zZyAlIGFyZ3MpKQogICAgIHN5cy5leGl0KDEpCkBAIC03Miw4ICs3MSwxMSBAQAogICAgIG0gPSB7ICcxMDA3NTUnOiAneCcsICcxMjAwMDAnOiAnbCcgfQogICAgIHJldHVybiBtLmdldChtb2RlLCAnJykKIAotZGVmIGhnaGV4KG5vZGUpOgotICAgIHJldHVybiBoZy5ub2RlLmhleChub2RlKQorZGVmIGhnaGV4KG4pOgorICAgIHJldHVybiBub2RlLmhleChuKQorCitkZWYgaGdiaW4obik6CisgICAgcmV0dXJuIG5vZGUuYmluKG4pCiAKIGRlZiBoZ3JlZihyZWYpOgogICAgIHJldHVybiByZWYucmVwbGFjZSgnX19fJywgJyAnKQpAQCAtODEsNiArODMsMTEgQEAKIGRlZiBnaXRyZWYocmVmKToKICAgICByZXR1cm4gcmVmLnJlcGxhY2UoJyAnLCAnX19fJykKIAorZGVmIGNoZWNrX3ZlcnNpb24oKmNoZWNrKToKKyAgICBpZiBub3QgaGdfdmVyc2lvbjoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICByZXR1cm4gaGdfdmVyc2lvbiA+PSBjaGVjaworCiBkZWYgZ2V0X2NvbmZpZyhjb25maWcpOgogICAgIGNtZCA9IFsnZ2l0JywgJ2NvbmZpZycsICctLWdldCcsIGNvbmZpZ10KICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCkBAIC05OCwxNCArMTA1LDI3IEBACiAKIGNsYXNzIE1hcmtzOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoLCByZXBvKToKICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBzZWxmLnJlcG8gPSByZXBvCisgICAgICAgIHNlbGYuY2xlYXIoKQorICAgICAgICBzZWxmLmxvYWQoKQorCisgICAgICAgIGlmIHNlbGYudmVyc2lvbiA8IFZFUlNJT046CisgICAgICAgICAgICBpZiBzZWxmLnZlcnNpb24gPT0gMToKKyAgICAgICAgICAgICAgICBzZWxmLnVwZ3JhZGVfb25lKCkKKworICAgICAgICAgICAgIyB1cGdyYWRlZD8KKyAgICAgICAgICAgIGlmIHNlbGYudmVyc2lvbiA8IFZFUlNJT046CisgICAgICAgICAgICAgICAgc2VsZi5jbGVhcigpCisgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uID0gVkVSU0lPTgorCisgICAgZGVmIGNsZWFyKHNlbGYpOgogICAgICAgICBzZWxmLnRpcHMgPSB7fQogICAgICAgICBzZWxmLm1hcmtzID0ge30KICAgICAgICAgc2VsZi5yZXZfbWFya3MgPSB7fQogICAgICAgICBzZWxmLmxhc3RfbWFyayA9IDAKLQotICAgICAgICBzZWxmLmxvYWQoKQorICAgICAgICBzZWxmLnZlcnNpb24gPSAwCiAKICAgICBkZWYgbG9hZChzZWxmKToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYucGF0aCk6CkBAIC0xMTYsMTIgKzEzNiwyMSBAQAogICAgICAgICBzZWxmLnRpcHMgPSB0bXBbJ3RpcHMnXQogICAgICAgICBzZWxmLm1hcmtzID0gdG1wWydtYXJrcyddCiAgICAgICAgIHNlbGYubGFzdF9tYXJrID0gdG1wWydsYXN0LW1hcmsnXQorICAgICAgICBzZWxmLnZlcnNpb24gPSB0bXAuZ2V0KCd2ZXJzaW9uJywgMSkKIAogICAgICAgICBmb3IgcmV2LCBtYXJrIGluIHNlbGYubWFya3MuaXRlcml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLnJldl9tYXJrc1ttYXJrXSA9IGludChyZXYpCisgICAgICAgICAgICBzZWxmLnJldl9tYXJrc1ttYXJrXSA9IHJldgorCisgICAgZGVmIHVwZ3JhZGVfb25lKHNlbGYpOgorICAgICAgICBkZWYgZ2V0X2lkKHJldik6CisgICAgICAgICAgICByZXR1cm4gaGdoZXgoc2VsZi5yZXBvLmNoYW5nZWxvZy5ub2RlKGludChyZXYpKSkKKyAgICAgICAgc2VsZi50aXBzID0gZGljdCgobmFtZSwgZ2V0X2lkKHJldikpIGZvciBuYW1lLCByZXYgaW4gc2VsZi50aXBzLml0ZXJpdGVtcygpKQorICAgICAgICBzZWxmLm1hcmtzID0gZGljdCgoZ2V0X2lkKHJldiksIG1hcmspIGZvciByZXYsIG1hcmsgaW4gc2VsZi5tYXJrcy5pdGVyaXRlbXMoKSkKKyAgICAgICAgc2VsZi5yZXZfbWFya3MgPSBkaWN0KChtYXJrLCBnZXRfaWQocmV2KSkgZm9yIG1hcmssIHJldiBpbiBzZWxmLnJldl9tYXJrcy5pdGVyaXRlbXMoKSkKKyAgICAgICAgc2VsZi52ZXJzaW9uID0gMgogCiAgICAgZGVmIGRpY3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiB7ICd0aXBzJzogc2VsZi50aXBzLCAnbWFya3MnOiBzZWxmLm1hcmtzLCAnbGFzdC1tYXJrJyA6IHNlbGYubGFzdF9tYXJrIH0KKyAgICAgICAgcmV0dXJuIHsgJ3RpcHMnOiBzZWxmLnRpcHMsICdtYXJrcyc6IHNlbGYubWFya3MsICdsYXN0LW1hcmsnIDogc2VsZi5sYXN0X21hcmssICd2ZXJzaW9uJyA6IHNlbGYudmVyc2lvbiB9CiAKICAgICBkZWYgc3RvcmUoc2VsZik6CiAgICAgICAgIGpzb24uZHVtcChzZWxmLmRpY3QoKSwgb3BlbihzZWxmLnBhdGgsICd3JykpCkBAIC0xMzAsMTAgKzE1OSwxMCBAQAogICAgICAgICByZXR1cm4gc3RyKHNlbGYuZGljdCgpKQogCiAgICAgZGVmIGZyb21fcmV2KHNlbGYsIHJldik6Ci0gICAgICAgIHJldHVybiBzZWxmLm1hcmtzW3N0cihyZXYpXQorICAgICAgICByZXR1cm4gc2VsZi5tYXJrc1tyZXZdCiAKICAgICBkZWYgdG9fcmV2KHNlbGYsIG1hcmspOgotICAgICAgICByZXR1cm4gc2VsZi5yZXZfbWFya3NbbWFya10KKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnJldl9tYXJrc1ttYXJrXSkKIAogICAgIGRlZiBuZXh0X21hcmsoc2VsZik6CiAgICAgICAgIHNlbGYubGFzdF9tYXJrICs9IDEKQEAgLTE0MSwxOSArMTcwLDE5IEBACiAKICAgICBkZWYgZ2V0X21hcmsoc2VsZiwgcmV2KToKICAgICAgICAgc2VsZi5sYXN0X21hcmsgKz0gMQotICAgICAgICBzZWxmLm1hcmtzW3N0cihyZXYpXSA9IHNlbGYubGFzdF9tYXJrCisgICAgICAgIHNlbGYubWFya3NbcmV2XSA9IHNlbGYubGFzdF9tYXJrCiAgICAgICAgIHJldHVybiBzZWxmLmxhc3RfbWFyawogCiAgICAgZGVmIG5ld19tYXJrKHNlbGYsIHJldiwgbWFyayk6Ci0gICAgICAgIHNlbGYubWFya3Nbc3RyKHJldildID0gbWFyaworICAgICAgICBzZWxmLm1hcmtzW3Jldl0gPSBtYXJrCiAgICAgICAgIHNlbGYucmV2X21hcmtzW21hcmtdID0gcmV2CiAgICAgICAgIHNlbGYubGFzdF9tYXJrID0gbWFyawogCiAgICAgZGVmIGlzX21hcmtlZChzZWxmLCByZXYpOgotICAgICAgICByZXR1cm4gc3RyKHJldikgaW4gc2VsZi5tYXJrcworICAgICAgICByZXR1cm4gcmV2IGluIHNlbGYubWFya3MKIAogICAgIGRlZiBnZXRfdGlwKHNlbGYsIGJyYW5jaCk6Ci0gICAgICAgIHJldHVybiBzZWxmLnRpcHMuZ2V0KGJyYW5jaCwgMCkKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnRpcHNbYnJhbmNoXSkKIAogICAgIGRlZiBzZXRfdGlwKHNlbGYsIGJyYW5jaCwgdGlwKToKICAgICAgICAgc2VsZi50aXBzW2JyYW5jaF0gPSB0aXAKQEAgLTI2MSw3ICsyOTAsNyBAQAogICAgIHJlbW92ZWQgPSBzZXQoKQogCiAgICAgIyBsb2FkIGVhcmxpZXN0IG1hbmlmZXN0IGZpcnN0IGZvciBjYWNoaW5nIHJlYXNvbnMKLSAgICBwcmV2ID0gcmVwb1twYXJlbnRdLm1hbmlmZXN0KCkuY29weSgpCisgICAgcHJldiA9IHBhcmVudC5tYW5pZmVzdCgpLmNvcHkoKQogICAgIGN1ciA9IGN0eC5tYW5pZmVzdCgpCiAKICAgICBmb3IgZm4gaW4gY3VyOgpAQCAtMzI5LDYgKzM1OCwyMSBAQAogCiAgICAgcmV0dXJuICclcyA8JXM+JyAlIChuYW1lLCBtYWlsKQogCitkZWYgdXBkYXRlYm9va21hcmtzKHJlcG8sIHBlZXIpOgorICAgIHJlbW90ZW1hcmtzID0gcGVlci5saXN0a2V5cygnYm9va21hcmtzJykKKyAgICBsb2NhbG1hcmtzID0gcmVwby5fYm9va21hcmtzCisKKyAgICBpZiBub3QgcmVtb3RlbWFya3M6CisgICAgICAgIHJldHVybgorCisgICAgZm9yIGssIHYgaW4gcmVtb3RlbWFya3MuaXRlcml0ZW1zKCk6CisgICAgICAgIGxvY2FsbWFya3Nba10gPSBoZ2Jpbih2KQorCisgICAgaWYgaGFzYXR0cihsb2NhbG1hcmtzLCAnd3JpdGUnKToKKyAgICAgICAgbG9jYWxtYXJrcy53cml0ZSgpCisgICAgZWxzZToKKyAgICAgICAgYm9va21hcmtzLndyaXRlKHJlcG8pCisKIGRlZiBnZXRfcmVwbyh1cmwsIGFsaWFzKToKICAgICBnbG9iYWwgZGlybmFtZSwgcGVlcgogCkBAIC0zMzksMzUgKzM4Myw0MSBAQAogICAgIGlmIGdldF9jb25maWdfYm9vbCgncmVtb3RlLWhnLmluc2VjdXJlJyk6CiAgICAgICAgIG15dWkuc2V0Y29uZmlnKCd3ZWInLCAnY2FjZXJ0cycsICcnKQogCi0gICAgdHJ5OgotICAgICAgICBtb2QgPSBleHRlbnNpb25zLmxvYWQobXl1aSwgJ2hnZXh0LnNjaGVtZXMnLCBOb25lKQotICAgICAgICBtb2QuZXh0c2V0dXAobXl1aSkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICBleHRlbnNpb25zLmxvYWRhbGwobXl1aSkKIAotICAgIGlmIGhnLmlzbG9jYWwodXJsKToKKyAgICBpZiBoZy5pc2xvY2FsKHVybCkgYW5kIG5vdCBvcy5lbnZpcm9uLmdldCgnR0lUX1JFTU9URV9IR19URVNUX1JFTU9URScpOgogICAgICAgICByZXBvID0gaGcucmVwb3NpdG9yeShteXVpLCB1cmwpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCiAgICAgZWxzZToKKyAgICAgICAgc2hhcmVkX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2l0ZGlyLCAnaGcnKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2hhcmVkX3BhdGgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGhnLmNsb25lKG15dWksIHt9LCB1cmwsIHNoYXJlZF9wYXRoLCB1cGRhdGU9RmFsc2UsIHB1bGw9VHJ1ZSkKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBkaWUoJ1JlcG9zaXRvcnkgZXJyb3InKQorCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJuYW1lKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCisKICAgICAgICAgbG9jYWxfcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCAnY2xvbmUnKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobG9jYWxfcGF0aCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGVlciwgZHN0cGVlciA9IGhnLmNsb25lKG15dWksIHt9LCB1cmwsIGxvY2FsX3BhdGgsIHVwZGF0ZT1UcnVlLCBwdWxsPVRydWUpCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgZGllKCdSZXBvc2l0b3J5IGVycm9yJykKLSAgICAgICAgICAgIHJlcG8gPSBkc3RwZWVyLmxvY2FsKCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcG8gPSBoZy5yZXBvc2l0b3J5KG15dWksIGxvY2FsX3BhdGgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGVlciA9IGhnLnBlZXIobXl1aSwge30sIHVybCkKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICBkaWUoJ1JlcG9zaXRvcnkgZXJyb3InKQotICAgICAgICAgICAgcmVwby5wdWxsKHBlZXIsIGhlYWRzPU5vbmUsIGZvcmNlPVRydWUpCisgICAgICAgICAgICBoZy5zaGFyZShteXVpLCBzaGFyZWRfcGF0aCwgbG9jYWxfcGF0aCwgdXBkYXRlPUZhbHNlKQorCisgICAgICAgIHJlcG8gPSBoZy5yZXBvc2l0b3J5KG15dWksIGxvY2FsX3BhdGgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBlZXIgPSBoZy5wZWVyKG15dWksIHt9LCB1cmwpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGRpZSgnUmVwb3NpdG9yeSBlcnJvcicpCisgICAgICAgIHJlcG8ucHVsbChwZWVyLCBoZWFkcz1Ob25lLCBmb3JjZT1UcnVlKQorCisgICAgICAgIHVwZGF0ZWJvb2ttYXJrcyhyZXBvLCBwZWVyKQogCiAgICAgcmV0dXJuIHJlcG8KIAogZGVmIHJldl90b19tYXJrKHJldik6CiAgICAgZ2xvYmFsIG1hcmtzCi0gICAgcmV0dXJuIG1hcmtzLmZyb21fcmV2KHJldikKKyAgICByZXR1cm4gbWFya3MuZnJvbV9yZXYocmV2LmhleCgpKQogCiBkZWYgbWFya190b19yZXYobWFyayk6CiAgICAgZ2xvYmFsIG1hcmtzCkBAIC0zNzcsMTcgKzQyNywyNCBAQAogICAgIGdsb2JhbCBwcmVmaXgsIG1hcmtzLCBtb2RlCiAKICAgICBlbmFtZSA9ICclcy8lcycgJSAoa2luZCwgbmFtZSkKLSAgICB0aXAgPSBtYXJrcy5nZXRfdGlwKGVuYW1lKQorICAgIHRyeToKKyAgICAgICAgdGlwID0gbWFya3MuZ2V0X3RpcChlbmFtZSkKKyAgICAgICAgdGlwID0gcmVwb1t0aXBdLnJldigpCisgICAgZXhjZXB0OgorICAgICAgICB0aXAgPSAwCiAKICAgICByZXZzID0geHJhbmdlKHRpcCwgaGVhZC5yZXYoKSArIDEpCi0gICAgY291bnQgPSAwCi0KLSAgICByZXZzID0gW3JldiBmb3IgcmV2IGluIHJldnMgaWYgbm90IG1hcmtzLmlzX21hcmtlZChyZXYpXQorICAgIHRvdGFsID0gbGVuKHJldnMpCiAKICAgICBmb3IgcmV2IGluIHJldnM6CiAKICAgICAgICAgYyA9IHJlcG9bcmV2XQotICAgICAgICAobWFuaWZlc3QsIHVzZXIsICh0aW1lLCB0eiksIGZpbGVzLCBkZXNjLCBleHRyYSkgPSByZXBvLmNoYW5nZWxvZy5yZWFkKGMubm9kZSgpKQorICAgICAgICBub2RlID0gYy5ub2RlKCkKKworICAgICAgICBpZiBtYXJrcy5pc19tYXJrZWQoYy5oZXgoKSk6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIChtYW5pZmVzdCwgdXNlciwgKHRpbWUsIHR6KSwgZmlsZXMsIGRlc2MsIGV4dHJhKSA9IHJlcG8uY2hhbmdlbG9nLnJlYWQobm9kZSkKICAgICAgICAgcmV2X2JyYW5jaCA9IGV4dHJhWydicmFuY2gnXQogCiAgICAgICAgIGF1dGhvciA9ICIlcyAlZCAlcyIgJSAoZml4dXBfdXNlcih1c2VyKSwgdGltZSwgZ2l0dHoodHopKQpAQCAtMzk3LDcgKzQ1NCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb21taXR0ZXIgPSBhdXRob3IKIAotICAgICAgICBwYXJlbnRzID0gW3AgZm9yIHAgaW4gcmVwby5jaGFuZ2Vsb2cucGFyZW50cmV2cyhyZXYpIGlmIHAgPj0gMF0KKyAgICAgICAgcGFyZW50cyA9IFtyZXBvW3BdIGZvciBwIGluIHJlcG8uY2hhbmdlbG9nLnBhcmVudHJldnMocmV2KSBpZiBwID49IDBdCiAKICAgICAgICAgaWYgbGVuKHBhcmVudHMpID09IDA6CiAgICAgICAgICAgICBtb2RpZmllZCA9IGMubWFuaWZlc3QoKS5rZXlzKCkKQEAgLTQzOSw3ICs0OTYsNyBAQAogICAgICAgICBtb2RpZmllZF9maW5hbCA9IGV4cG9ydF9maWxlcyhjLmZpbGVjdHgoZikgZm9yIGYgaW4gbW9kaWZpZWQpCiAKICAgICAgICAgcHJpbnQgImNvbW1pdCAlcy8lcyIgJSAocHJlZml4LCBlbmFtZSkKLSAgICAgICAgcHJpbnQgIm1hcmsgOiVkIiAlIChtYXJrcy5nZXRfbWFyayhyZXYpKQorICAgICAgICBwcmludCAibWFyayA6JWQiICUgKG1hcmtzLmdldF9tYXJrKGMuaGV4KCkpKQogICAgICAgICBwcmludCAiYXV0aG9yICVzIiAlIChhdXRob3IpCiAgICAgICAgIHByaW50ICJjb21taXR0ZXIgJXMiICUgKGNvbW1pdHRlcikKICAgICAgICAgcHJpbnQgImRhdGEgJWQiICUgKGxlbihkZXNjKSkKQEAgLTQ1MCwyMiArNTA3LDIyIEBACiAgICAgICAgICAgICBpZiBsZW4ocGFyZW50cykgPiAxOgogICAgICAgICAgICAgICAgIHByaW50ICJtZXJnZSA6JXMiICUgKHJldl90b19tYXJrKHBhcmVudHNbMV0pKQogCi0gICAgICAgIGZvciBmIGluIG1vZGlmaWVkX2ZpbmFsOgotICAgICAgICAgICAgcHJpbnQgIk0gJXMgOiV1ICVzIiAlIGYKICAgICAgICAgZm9yIGYgaW4gcmVtb3ZlZDoKICAgICAgICAgICAgIHByaW50ICJEICVzIiAlIChmaXhfZmlsZV9wYXRoKGYpKQorICAgICAgICBmb3IgZiBpbiBtb2RpZmllZF9maW5hbDoKKyAgICAgICAgICAgIHByaW50ICJNICVzIDoldSAlcyIgJSBmCiAgICAgICAgIHByaW50CiAKLSAgICAgICAgY291bnQgKz0gMQotICAgICAgICBpZiAoY291bnQgJSAxMDAgPT0gMCk6Ci0gICAgICAgICAgICBwcmludCAicHJvZ3Jlc3MgcmV2aXNpb24gJWQgJyVzJyAoJWQvJWQpIiAlIChyZXYsIG5hbWUsIGNvdW50LCBsZW4ocmV2cykpCisgICAgICAgIHByb2dyZXNzID0gKHJldiAtIHRpcCkKKyAgICAgICAgaWYgKHByb2dyZXNzICUgMTAwID09IDApOgorICAgICAgICAgICAgcHJpbnQgInByb2dyZXNzIHJldmlzaW9uICVkICclcycgKCVkLyVkKSIgJSAocmV2LCBuYW1lLCBwcm9ncmVzcywgdG90YWwpCiAKICAgICAjIG1ha2Ugc3VyZSB0aGUgcmVmIGlzIHVwZGF0ZWQKICAgICBwcmludCAicmVzZXQgJXMvJXMiICUgKHByZWZpeCwgZW5hbWUpCi0gICAgcHJpbnQgImZyb20gOiV1IiAlIHJldl90b19tYXJrKHJldikKKyAgICBwcmludCAiZnJvbSA6JXUiICUgcmV2X3RvX21hcmsoaGVhZCkKICAgICBwcmludAogCi0gICAgbWFya3Muc2V0X3RpcChlbmFtZSwgcmV2KQorICAgIG1hcmtzLnNldF90aXAoZW5hbWUsIGhlYWQuaGV4KCkpCiAKIGRlZiBleHBvcnRfdGFnKHJlcG8sIHRhZyk6CiAgICAgZXhwb3J0X3JlZihyZXBvLCB0YWcsICd0YWdzJywgcmVwb1toZ3JlZih0YWcpXSkKQEAgLTQ5NywxNSArNTU0LDEyIEBACiAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CiAgICAgICAgIHByaW50ICIqaW1wb3J0LW1hcmtzICVzIiAlIHBhdGgKICAgICBwcmludCAiKmV4cG9ydC1tYXJrcyAlcyIgJSBwYXRoCisgICAgcHJpbnQgIm9wdGlvbiIKIAogICAgIHByaW50CiAKLWRlZiBicmFuY2hfdGlwKHJlcG8sIGJyYW5jaCk6Ci0gICAgIyBvbGRlciB2ZXJzaW9ucyBvZiBtZXJjdXJpYWwgZG9uJ3QgaGF2ZSB0aGlzCi0gICAgaWYgaGFzYXR0cihyZXBvLCAnYnJhbmNodGlwJyk6Ci0gICAgICAgIHJldHVybiByZXBvLmJyYW5jaHRpcChicmFuY2gpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHJlcG8uYnJhbmNodGFncygpW2JyYW5jaF0KK2RlZiBicmFuY2hfdGlwKGJyYW5jaCk6CisgICAgcmV0dXJuIGJyYW5jaGVzW2JyYW5jaF1bLTFdCiAKIGRlZiBnZXRfYnJhbmNoX3RpcChyZXBvLCBicmFuY2gpOgogICAgIGdsb2JhbCBicmFuY2hlcwpAQCAtNTE3LDI3ICs1NzEsMjEgQEAKICAgICAjIHZlcmlmeSB0aGVyZSdzIG9ubHkgb25lIGhlYWQKICAgICBpZiAobGVuKGhlYWRzKSA+IDEpOgogICAgICAgICB3YXJuKCJCcmFuY2ggJyVzJyBoYXMgbW9yZSB0aGFuIG9uZSBoZWFkLCBjb25zaWRlciBtZXJnaW5nIiAlIGJyYW5jaCkKLSAgICAgICAgcmV0dXJuIGJyYW5jaF90aXAocmVwbywgaGdyZWYoYnJhbmNoKSkKKyAgICAgICAgcmV0dXJuIGJyYW5jaF90aXAoaGdyZWYoYnJhbmNoKSkKIAogICAgIHJldHVybiBoZWFkc1swXQogCiBkZWYgbGlzdF9oZWFkKHJlcG8sIGN1cik6Ci0gICAgZ2xvYmFsIGdfaGVhZCwgYm1hcmtzCisgICAgZ2xvYmFsIGdfaGVhZCwgYm1hcmtzLCBmYWtlX2JtYXJrCiAKLSAgICBoZWFkID0gYm9va21hcmtzLnJlYWRjdXJyZW50KHJlcG8pCi0gICAgaWYgaGVhZDoKLSAgICAgICAgbm9kZSA9IHJlcG9baGVhZF0KLSAgICBlbHNlOgotICAgICAgICAjIGZha2UgYm9va21hcmsgZnJvbSBjdXJyZW50IGJyYW5jaAotICAgICAgICBoZWFkID0gY3VyCi0gICAgICAgIG5vZGUgPSByZXBvWycuJ10KLSAgICAgICAgaWYgbm90IG5vZGU6Ci0gICAgICAgICAgICBub2RlID0gcmVwb1sndGlwJ10KLSAgICAgICAgaWYgbm90IG5vZGU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgaGVhZCA9PSAnZGVmYXVsdCc6Ci0gICAgICAgICAgICBoZWFkID0gJ21hc3RlcicKLSAgICAgICAgYm1hcmtzW2hlYWRdID0gbm9kZQorICAgIGlmICdkZWZhdWx0JyBub3QgaW4gYnJhbmNoZXM6CisgICAgICAgICMgZW1wdHkgcmVwbworICAgICAgICByZXR1cm4KKworICAgIG5vZGUgPSByZXBvW2JyYW5jaF90aXAoJ2RlZmF1bHQnKV0KKyAgICBoZWFkID0gJ21hc3RlcicgaWYgbm90ICdtYXN0ZXInIGluIGJtYXJrcyBlbHNlICdkZWZhdWx0JworICAgIGZha2VfYm1hcmsgPSBoZWFkCisgICAgYm1hcmtzW2hlYWRdID0gbm9kZQogCiAgICAgaGVhZCA9IGdpdHJlZihoZWFkKQogICAgIHByaW50ICJAcmVmcy9oZWFkcy8lcyBIRUFEIiAlIGhlYWQKQEAgLTU1MSwxNSArNTk5LDE3IEBACiAgICAgICAgIGJtYXJrc1tibWFya10gPSByZXBvW25vZGVdCiAKICAgICBjdXIgPSByZXBvLmRpcnN0YXRlLmJyYW5jaCgpCisgICAgb3JpZyA9IHBlZXIgaWYgcGVlciBlbHNlIHJlcG8KKworICAgIGZvciBicmFuY2gsIGhlYWRzIGluIG9yaWcuYnJhbmNobWFwKCkuaXRlcml0ZW1zKCk6CisgICAgICAgICMgb25seSBvcGVuIGhlYWRzCisgICAgICAgIGhlYWRzID0gW2ggZm9yIGggaW4gaGVhZHMgaWYgJ2Nsb3NlJyBub3QgaW4gcmVwby5jaGFuZ2Vsb2cucmVhZChoKVs1XV0KKyAgICAgICAgaWYgaGVhZHM6CisgICAgICAgICAgICBicmFuY2hlc1ticmFuY2hdID0gaGVhZHMKIAogICAgIGxpc3RfaGVhZChyZXBvLCBjdXIpCiAKICAgICBpZiB0cmFja19icmFuY2hlczoKLSAgICAgICAgZm9yIGJyYW5jaCBpbiByZXBvLmJyYW5jaG1hcCgpOgotICAgICAgICAgICAgaGVhZHMgPSByZXBvLmJyYW5jaGhlYWRzKGJyYW5jaCkKLSAgICAgICAgICAgIGlmIGxlbihoZWFkcyk6Ci0gICAgICAgICAgICAgICAgYnJhbmNoZXNbYnJhbmNoXSA9IGhlYWRzCi0KICAgICAgICAgZm9yIGJyYW5jaCBpbiBicmFuY2hlczoKICAgICAgICAgICAgIHByaW50ICI/IHJlZnMvaGVhZHMvYnJhbmNoZXMvJXMiICUgZ2l0cmVmKGJyYW5jaCkKIApAQCAtNTgyLDYgKzYzMiw3IEBACiAgICAgaWYgb3MucGF0aC5leGlzdHMocGF0aCk6CiAgICAgICAgIHByaW50ICJmZWF0dXJlIGltcG9ydC1tYXJrcz0lcyIgJSBwYXRoCiAgICAgcHJpbnQgImZlYXR1cmUgZXhwb3J0LW1hcmtzPSVzIiAlIHBhdGgKKyAgICBwcmludCAiZmVhdHVyZSBmb3JjZSIKICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKIAogICAgIHRtcCA9IGVuY29kaW5nLmVuY29kaW5nCkBAIC02NzEsNiArNzIyLDExIEBACiAgICAgICAgICAgICBkaWUoJ1Vua25vd24gZmlsZSBjb21tYW5kOiAlcycgJSBsaW5lKQogICAgICAgICBmaWxlc1twYXRoXSA9IGYKIAorICAgICMgb25seSBleHBvcnQgdGhlIGNvbW1pdHMgaWYgd2UgYXJlIG9uIGFuIGludGVybmFsIHByb3h5IHJlcG8KKyAgICBpZiBkcnlfcnVuIGFuZCBub3QgcGVlcjoKKyAgICAgICAgcGFyc2VkX3JlZnNbcmVmXSA9IE5vbmUKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgZ2V0ZmlsZWN0eChyZXBvLCBtZW1jdHgsIGYpOgogICAgICAgICBvZiA9IGZpbGVzW2ZdCiAgICAgICAgIGlmICdkZWxldGVkJyBpbiBvZjoKQEAgLTY5MiwxNCArNzQ4LDE0IEBACiAgICAgICAgIGV4dHJhWydjb21taXR0ZXInXSA9ICIlcyAldSAldSIgJSBjb21taXR0ZXIKIAogICAgIGlmIGZyb21fbWFyazoKLSAgICAgICAgcDEgPSByZXBvLmNoYW5nZWxvZy5ub2RlKG1hcmtfdG9fcmV2KGZyb21fbWFyaykpCisgICAgICAgIHAxID0gbWFya190b19yZXYoZnJvbV9tYXJrKQogICAgIGVsc2U6Ci0gICAgICAgIHAxID0gJ1wwJyAqIDIwCisgICAgICAgIHAxID0gJzAnICogNDAKIAogICAgIGlmIG1lcmdlX21hcms6Ci0gICAgICAgIHAyID0gcmVwby5jaGFuZ2Vsb2cubm9kZShtYXJrX3RvX3JldihtZXJnZV9tYXJrKSkKKyAgICAgICAgcDIgPSBtYXJrX3RvX3JldihtZXJnZV9tYXJrKQogICAgIGVsc2U6Ci0gICAgICAgIHAyID0gJ1wwJyAqIDIwCisgICAgICAgIHAyID0gJzAnICogNDAKIAogICAgICMKICAgICAjIElmIGZpbGVzIGNoYW5nZWQgZnJvbSBhbnkgb2YgdGhlIHBhcmVudHMsIGhnIHdhbnRzIHRvIGtub3csIGJ1dCBpbiBnaXQgaWYKQEAgLTczNSwxNCArNzkxLDEyIEBACiAgICAgdG1wID0gZW5jb2RpbmcuZW5jb2RpbmcKICAgICBlbmNvZGluZy5lbmNvZGluZyA9ICd1dGYtOCcKIAotICAgIG5vZGUgPSByZXBvLmNvbW1pdGN0eChjdHgpCisgICAgbm9kZSA9IGhnaGV4KHJlcG8uY29tbWl0Y3R4KGN0eCkpCiAKICAgICBlbmNvZGluZy5lbmNvZGluZyA9IHRtcAogCi0gICAgcmV2ID0gcmVwb1tub2RlXS5yZXYoKQotCiAgICAgcGFyc2VkX3JlZnNbcmVmXSA9IG5vZGUKLSAgICBtYXJrcy5uZXdfbWFyayhyZXYsIGNvbW1pdF9tYXJrKQorICAgIG1hcmtzLm5ld19tYXJrKG5vZGUsIGNvbW1pdF9tYXJrKQogCiBkZWYgcGFyc2VfcmVzZXQocGFyc2VyKToKICAgICBnbG9iYWwgcGFyc2VkX3JlZnMKQEAgLTc1OCw4ICs4MTIsMTEgQEAKICAgICBmcm9tX21hcmsgPSBwYXJzZXIuZ2V0X21hcmsoKQogICAgIHBhcnNlci5uZXh0KCkKIAotICAgIG5vZGUgPSBwYXJzZXIucmVwby5jaGFuZ2Vsb2cubm9kZShtYXJrX3RvX3Jldihmcm9tX21hcmspKQotICAgIHBhcnNlZF9yZWZzW3JlZl0gPSBub2RlCisgICAgdHJ5OgorICAgICAgICByZXYgPSBtYXJrX3RvX3Jldihmcm9tX21hcmspCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICByZXYgPSBOb25lCisgICAgcGFyc2VkX3JlZnNbcmVmXSA9IHJldgogCiBkZWYgcGFyc2VfdGFnKHBhcnNlcik6CiAgICAgbmFtZSA9IHBhcnNlclsxXQpAQCAtNzc1LDcgKzgzMiw3IEBACiAKIGRlZiB3cml0ZV90YWcocmVwbywgdGFnLCBub2RlLCBtc2csIGF1dGhvcik6CiAgICAgYnJhbmNoID0gcmVwb1tub2RlXS5icmFuY2goKQotICAgIHRpcCA9IGJyYW5jaF90aXAocmVwbywgYnJhbmNoKQorICAgIHRpcCA9IGJyYW5jaF90aXAoYnJhbmNoKQogICAgIHRpcCA9IHJlcG9bdGlwXQogCiAgICAgZGVmIGdldGZpbGVjdHgocmVwbywgbWVtY3R4LCBmKToKQEAgLTc4NCwxOCArODQxLDI4IEBACiAgICAgICAgICAgICBkYXRhID0gZmN0eC5kYXRhKCkKICAgICAgICAgZXhjZXB0IGVycm9yLk1hbmlmZXN0TG9va3VwRXJyb3I6CiAgICAgICAgICAgICBkYXRhID0gIiIKLSAgICAgICAgY29udGVudCA9IGRhdGEgKyAiJXMgJXNcbiIgJSAoaGdoZXgobm9kZSksIHRhZykKKyAgICAgICAgY29udGVudCA9IGRhdGEgKyAiJXMgJXNcbiIgJSAobm9kZSwgdGFnKQogICAgICAgICByZXR1cm4gY29udGV4dC5tZW1maWxlY3R4KGYsIGNvbnRlbnQsIEZhbHNlLCBGYWxzZSwgTm9uZSkKIAogICAgIHAxID0gdGlwLmhleCgpCi0gICAgcDIgPSAnXDAnICogMjAKLSAgICBpZiBub3QgYXV0aG9yOgotICAgICAgICBhdXRob3IgPSAoTm9uZSwgMCwgMCkKLSAgICB1c2VyLCBkYXRlLCB0eiA9IGF1dGhvcgorICAgIHAyID0gJzAnICogNDAKKyAgICBpZiBhdXRob3I6CisgICAgICAgIHVzZXIsIGRhdGUsIHR6ID0gYXV0aG9yCisgICAgICAgIGRhdGVfdHogPSAoZGF0ZSwgdHopCisgICAgZWxzZToKKyAgICAgICAgY21kID0gWydnaXQnLCAndmFyJywgJ0dJVF9DT01NSVRURVJfSURFTlQnXQorICAgICAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgIG91dHB1dCwgXyA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgICAgICBtID0gcmUubWF0Y2goJ14uKiA8Lio+Jywgb3V0cHV0KQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgdXNlciA9IG0uZ3JvdXAoMCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHVzZXIgPSByZXBvLnVpLnVzZXJuYW1lKCkKKyAgICAgICAgZGF0ZV90eiA9IE5vbmUKIAogICAgIGN0eCA9IGNvbnRleHQubWVtY3R4KHJlcG8sIChwMSwgcDIpLCBtc2csCiAgICAgICAgICAgICBbJy5oZ3RhZ3MnXSwgZ2V0ZmlsZWN0eCwKLSAgICAgICAgICAgIHVzZXIsIChkYXRlLCB0eiksIHsnYnJhbmNoJyA6IGJyYW5jaH0pCisgICAgICAgICAgICB1c2VyLCBkYXRlX3R6LCB7J2JyYW5jaCcgOiBicmFuY2h9KQogCiAgICAgdG1wID0gZW5jb2RpbmcuZW5jb2RpbmcKICAgICBlbmNvZGluZy5lbmNvZGluZyA9ICd1dGYtOCcKQEAgLTgwNCwxMiArODcxLDEzMiBAQAogCiAgICAgZW5jb2RpbmcuZW5jb2RpbmcgPSB0bXAKIAotICAgIHJldHVybiB0YWdub2RlCisgICAgcmV0dXJuICh0YWdub2RlLCBicmFuY2gpCisKK2RlZiBjaGVja2hlYWRzX2JtYXJrKHJlcG8sIHJlZiwgY3R4KToKKyAgICBibWFyayA9IHJlZltsZW4oJ3JlZnMvaGVhZHMvJyk6XQorICAgIGlmIG5vdCBibWFyayBpbiBibWFya3M6CisgICAgICAgICMgbmV3IGJtYXJrCisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBjdHhfb2xkID0gYm1hcmtzW2JtYXJrXQorICAgIGN0eF9uZXcgPSBjdHgKKyAgICBpZiBub3QgcmVwby5jaGFuZ2Vsb2cuZGVzY2VuZGFudChjdHhfb2xkLnJldigpLCBjdHhfbmV3LnJldigpKToKKyAgICAgICAgaWYgZm9yY2VfcHVzaDoKKyAgICAgICAgICAgIHByaW50ICJvayAlcyBmb3JjZWQgdXBkYXRlIiAlIHJlZgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcHJpbnQgImVycm9yICVzIG5vbi1mYXN0IGZvcndhcmQiICUgcmVmCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBUcnVlCisKK2RlZiBjaGVja2hlYWRzKHJlcG8sIHJlbW90ZSwgcF9yZXZzKToKKworICAgIHJlbW90ZW1hcCA9IHJlbW90ZS5icmFuY2htYXAoKQorICAgIGlmIG5vdCByZW1vdGVtYXA6CisgICAgICAgICMgZW1wdHkgcmVwbworICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgbmV3ID0ge30KKyAgICByZXQgPSBUcnVlCisKKyAgICBmb3Igbm9kZSwgcmVmIGluIHBfcmV2cy5pdGVyaXRlbXMoKToKKyAgICAgICAgY3R4ID0gcmVwb1tub2RlXQorICAgICAgICBicmFuY2ggPSBjdHguYnJhbmNoKCkKKyAgICAgICAgaWYgbm90IGJyYW5jaCBpbiByZW1vdGVtYXA6CisgICAgICAgICAgICAjIG5ldyBicmFuY2gKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmIG5vdCByZWYuc3RhcnRzd2l0aCgncmVmcy9oZWFkcy9icmFuY2hlcycpOgorICAgICAgICAgICAgaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvaGVhZHMvJyk6CisgICAgICAgICAgICAgICAgaWYgbm90IGNoZWNraGVhZHNfYm1hcmsocmVwbywgcmVmLCBjdHgpOgorICAgICAgICAgICAgICAgICAgICByZXQgPSBGYWxzZQorCisgICAgICAgICAgICAjIG9ubHkgY2hlY2sgYnJhbmNoZXMKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIG5ldy5zZXRkZWZhdWx0KGJyYW5jaCwgW10pLmFwcGVuZChjdHgucmV2KCkpCisKKyAgICBmb3IgYnJhbmNoLCBoZWFkcyBpbiBuZXcuaXRlcml0ZW1zKCk6CisgICAgICAgIG9sZCA9IFtyZXBvLmNoYW5nZWxvZy5yZXYoeCkgZm9yIHggaW4gcmVtb3RlbWFwW2JyYW5jaF1dCisgICAgICAgIGZvciByZXYgaW4gaGVhZHM6CisgICAgICAgICAgICBpZiBjaGVja192ZXJzaW9uKDIsIDMpOgorICAgICAgICAgICAgICAgIGFuY2VzdG9ycyA9IHJlcG8uY2hhbmdlbG9nLmFuY2VzdG9ycyhbcmV2XSwgc3RvcHJldj1taW4ob2xkKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYW5jZXN0b3JzID0gcmVwby5jaGFuZ2Vsb2cuYW5jZXN0b3JzKHJldikKKyAgICAgICAgICAgIGZvdW5kID0gRmFsc2UKKworICAgICAgICAgICAgZm9yIHggaW4gb2xkOgorICAgICAgICAgICAgICAgIGlmIHggaW4gYW5jZXN0b3JzOgorICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IFRydWUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgaWYgZm91bmQ6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbm9kZSA9IHJlcG8uY2hhbmdlbG9nLm5vZGUocmV2KQorICAgICAgICAgICAgcmVmID0gcF9yZXZzW25vZGVdCisgICAgICAgICAgICBpZiBmb3JjZV9wdXNoOgorICAgICAgICAgICAgICAgIHByaW50ICJvayAlcyBmb3JjZWQgdXBkYXRlIiAlIHJlZgorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMgbm9uLWZhc3QgZm9yd2FyZCIgJSByZWYKKyAgICAgICAgICAgICAgICByZXQgPSBGYWxzZQorCisgICAgcmV0dXJuIHJldAorCitkZWYgcHVzaF91bnNhZmUocmVwbywgcmVtb3RlLCBwYXJzZWRfcmVmcywgcF9yZXZzKToKKworICAgIGZvcmNlID0gZm9yY2VfcHVzaAorCisgICAgZmNpID0gZGlzY292ZXJ5LmZpbmRjb21tb25pbmNvbWluZworICAgIGNvbW1vbmluYyA9IGZjaShyZXBvLCByZW1vdGUsIGZvcmNlPWZvcmNlKQorICAgIGNvbW1vbiwgXywgcmVtb3RlaGVhZHMgPSBjb21tb25pbmMKKworICAgIGlmIG5vdCBjaGVja2hlYWRzKHJlcG8sIHJlbW90ZSwgcF9yZXZzKToKKyAgICAgICAgcmV0dXJuIE5vbmUKKworICAgIGNnID0gcmVwby5nZXRidW5kbGUoJ3B1c2gnLCBoZWFkcz1saXN0KHBfcmV2cyksIGNvbW1vbj1jb21tb24pCisKKyAgICB1bmJ1bmRsZSA9IHJlbW90ZS5jYXBhYmxlKCd1bmJ1bmRsZScpCisgICAgaWYgdW5idW5kbGU6CisgICAgICAgIGlmIGZvcmNlOgorICAgICAgICAgICAgcmVtb3RlaGVhZHMgPSBbJ2ZvcmNlJ10KKyAgICAgICAgcmV0dXJuIHJlbW90ZS51bmJ1bmRsZShjZywgcmVtb3RlaGVhZHMsICdwdXNoJykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcmVtb3RlLmFkZGNoYW5nZWdyb3VwKGNnLCAncHVzaCcsIHJlcG8udXJsKCkpCisKK2RlZiBwdXNoKHJlcG8sIHJlbW90ZSwgcGFyc2VkX3JlZnMsIHBfcmV2cyk6CisgICAgaWYgaGFzYXR0cihyZW1vdGUsICdjYW5wdXNoJykgYW5kIG5vdCByZW1vdGUuY2FucHVzaCgpOgorICAgICAgICBwcmludCAiZXJyb3IgY2Fubm90IHB1c2giCisKKyAgICBpZiBub3QgcF9yZXZzOgorICAgICAgICAjIG5vdGhpbmcgdG8gcHVzaAorICAgICAgICByZXR1cm4KKworICAgIGxvY2sgPSBOb25lCisgICAgdW5idW5kbGUgPSByZW1vdGUuY2FwYWJsZSgndW5idW5kbGUnKQorICAgIGlmIG5vdCB1bmJ1bmRsZToKKyAgICAgICAgbG9jayA9IHJlbW90ZS5sb2NrKCkKKyAgICB0cnk6CisgICAgICAgIHJldCA9IHB1c2hfdW5zYWZlKHJlcG8sIHJlbW90ZSwgcGFyc2VkX3JlZnMsIHBfcmV2cykKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiBsb2NrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgbG9jay5yZWxlYXNlKCkKKworICAgIHJldHVybiByZXQKKworZGVmIGNoZWNrX3RpcChyZWYsIGtpbmQsIG5hbWUsIGhlYWRzKToKKyAgICB0cnk6CisgICAgICAgIGVuYW1lID0gJyVzLyVzJyAlIChraW5kLCBuYW1lKQorICAgICAgICB0aXAgPSBtYXJrcy5nZXRfdGlwKGVuYW1lKQorICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gdGlwIGluIGhlYWRzCiAKIGRlZiBkb19leHBvcnQocGFyc2VyKToKICAgICBnbG9iYWwgcGFyc2VkX3JlZnMsIGJtYXJrcywgcGVlcgogCiAgICAgcF9ibWFya3MgPSBbXQorICAgIHBfcmV2cyA9IHt9CiAKICAgICBwYXJzZXIubmV4dCgpCiAKQEAgLTgyNyw3MiArMTAxNCwxMTQgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpZSgndW5oYW5kbGVkIGV4cG9ydCBjb21tYW5kOiAlcycgJSBsaW5lKQogCisgICAgbmVlZF9mZXRjaCA9IEZhbHNlCisKICAgICBmb3IgcmVmLCBub2RlIGluIHBhcnNlZF9yZWZzLml0ZXJpdGVtcygpOgorICAgICAgICBibm9kZSA9IGhnYmluKG5vZGUpIGlmIG5vZGUgZWxzZSBOb25lCiAgICAgICAgIGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL2hlYWRzL2JyYW5jaGVzJyk6CiAgICAgICAgICAgICBicmFuY2ggPSByZWZbbGVuKCdyZWZzL2hlYWRzL2JyYW5jaGVzLycpOl0KLSAgICAgICAgICAgIGlmIGJyYW5jaCBpbiBicmFuY2hlcyBhbmQgbm9kZSBpbiBicmFuY2hlc1ticmFuY2hdOgorICAgICAgICAgICAgaWYgYnJhbmNoIGluIGJyYW5jaGVzIGFuZCBibm9kZSBpbiBicmFuY2hlc1ticmFuY2hdOgogICAgICAgICAgICAgICAgICMgdXAgdG8gZGF0ZQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIGlmIHBlZXI6CisgICAgICAgICAgICAgICAgcmVtb3RlbWFwID0gcGVlci5icmFuY2htYXAoKQorICAgICAgICAgICAgICAgIGlmIHJlbW90ZW1hcCBhbmQgYnJhbmNoIGluIHJlbW90ZW1hcDoKKyAgICAgICAgICAgICAgICAgICAgaGVhZHMgPSBbaGdoZXgoZSkgZm9yIGUgaW4gcmVtb3RlbWFwW2JyYW5jaF1dCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBjaGVja190aXAocmVmLCAnYnJhbmNoZXMnLCBicmFuY2gsIGhlYWRzKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICJlcnJvciAlcyBmZXRjaCBmaXJzdCIgJSByZWYKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfZmV0Y2ggPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBwX3JldnNbYm5vZGVdID0gcmVmCiAgICAgICAgICAgICBwcmludCAib2sgJXMiICUgcmVmCiAgICAgICAgIGVsaWYgcmVmLnN0YXJ0c3dpdGgoJ3JlZnMvaGVhZHMvJyk6CiAgICAgICAgICAgICBibWFyayA9IHJlZltsZW4oJ3JlZnMvaGVhZHMvJyk6XQotICAgICAgICAgICAgcF9ibWFya3MuYXBwZW5kKChibWFyaywgbm9kZSkpCi0gICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgbmV3ID0gbm9kZQorICAgICAgICAgICAgb2xkID0gYm1hcmtzW2JtYXJrXS5oZXgoKSBpZiBibWFyayBpbiBibWFya3MgZWxzZSAnJworCisgICAgICAgICAgICBpZiBvbGQgPT0gbmV3OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKyAgICAgICAgICAgIGlmIGJtYXJrICE9IGZha2VfYm1hcmsgYW5kIFwKKyAgICAgICAgICAgICAgICAgICAgbm90IChibWFyayA9PSAnbWFzdGVyJyBhbmQgYm1hcmsgbm90IGluIHBhcnNlci5yZXBvLl9ib29rbWFya3MpOgorICAgICAgICAgICAgICAgIHBfYm1hcmtzLmFwcGVuZCgocmVmLCBibWFyaywgb2xkLCBuZXcpKQorCisgICAgICAgICAgICBpZiBwZWVyOgorICAgICAgICAgICAgICAgIHJlbW90ZV9vbGQgPSBwZWVyLmxpc3RrZXlzKCdib29rbWFya3MnKS5nZXQoYm1hcmspCisgICAgICAgICAgICAgICAgaWYgcmVtb3RlX29sZDoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGNoZWNrX3RpcChyZWYsICdib29rbWFya3MnLCBibWFyaywgcmVtb3RlX29sZCk6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMgZmV0Y2ggZmlyc3QiICUgcmVmCisgICAgICAgICAgICAgICAgICAgICAgICBuZWVkX2ZldGNoID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgcF9yZXZzW2Jub2RlXSA9IHJlZgogICAgICAgICBlbGlmIHJlZi5zdGFydHN3aXRoKCdyZWZzL3RhZ3MvJyk6CisgICAgICAgICAgICBpZiBkcnlfcnVuOgorICAgICAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKKyAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgdGFnID0gcmVmW2xlbigncmVmcy90YWdzLycpOl0KICAgICAgICAgICAgIHRhZyA9IGhncmVmKHRhZykKICAgICAgICAgICAgIGF1dGhvciwgbXNnID0gcGFyc2VkX3RhZ3MuZ2V0KHRhZywgKE5vbmUsIE5vbmUpKQogICAgICAgICAgICAgaWYgbW9kZSA9PSAnZ2l0JzoKICAgICAgICAgICAgICAgICBpZiBub3QgbXNnOgotICAgICAgICAgICAgICAgICAgICBtc2cgPSAnQWRkZWQgdGFnICVzIGZvciBjaGFuZ2VzZXQgJXMnICUgKHRhZywgaGdoZXgobm9kZVs6Nl0pKTsKLSAgICAgICAgICAgICAgICB3cml0ZV90YWcocGFyc2VyLnJlcG8sIHRhZywgbm9kZSwgbXNnLCBhdXRob3IpCisgICAgICAgICAgICAgICAgICAgIG1zZyA9ICdBZGRlZCB0YWcgJXMgZm9yIGNoYW5nZXNldCAlcycgJSAodGFnLCBub2RlWzoxMl0pOworICAgICAgICAgICAgICAgIHRhZ25vZGUsIGJyYW5jaCA9IHdyaXRlX3RhZyhwYXJzZXIucmVwbywgdGFnLCBub2RlLCBtc2csIGF1dGhvcikKKyAgICAgICAgICAgICAgICBwX3JldnNbdGFnbm9kZV0gPSAncmVmcy9oZWFkcy9icmFuY2hlcy8nICsgZ2l0cmVmKGJyYW5jaCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZnAgPSBwYXJzZXIucmVwby5vcGVuZXIoJ2xvY2FsdGFncycsICdhJykKLSAgICAgICAgICAgICAgICBmcC53cml0ZSgnJXMgJXNcbicgJSAoaGdoZXgobm9kZSksIHRhZykpCisgICAgICAgICAgICAgICAgZnAud3JpdGUoJyVzICVzXG4nICUgKG5vZGUsIHRhZykpCiAgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgcF9yZXZzW2Jub2RlXSA9IHJlZgogICAgICAgICAgICAgcHJpbnQgIm9rICVzIiAlIHJlZgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyB0cmFuc3BvcnQtaGVscGVyL2Zhc3QtZXhwb3J0IGJ1Z3MKICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICBpZiBuZWVkX2ZldGNoOgorICAgICAgICBwcmludAorICAgICAgICByZXR1cm4KKworICAgIGlmIGRyeV9ydW46CisgICAgICAgIGlmIHBlZXIgYW5kIG5vdCBmb3JjZV9wdXNoOgorICAgICAgICAgICAgY2hlY2toZWFkcyhwYXJzZXIucmVwbywgcGVlciwgcF9yZXZzKQorICAgICAgICBwcmludAorICAgICAgICByZXR1cm4KKwogICAgIGlmIHBlZXI6Ci0gICAgICAgIHBhcnNlci5yZXBvLnB1c2gocGVlciwgZm9yY2U9Zm9yY2VfcHVzaCwgbmV3YnJhbmNoPVRydWUpCisgICAgICAgIGlmIG5vdCBwdXNoKHBhcnNlci5yZXBvLCBwZWVyLCBwYXJzZWRfcmVmcywgcF9yZXZzKToKKyAgICAgICAgICAgICMgZG8gbm90IHVwZGF0ZSBib29rbWFya3MKKyAgICAgICAgICAgIHByaW50CisgICAgICAgICAgICByZXR1cm4KIAotICAgICMgaGFuZGxlIGJvb2ttYXJrcwotICAgIGZvciBibWFyaywgbm9kZSBpbiBwX2JtYXJrczoKLSAgICAgICAgcmVmID0gJ3JlZnMvaGVhZHMvJyArIGJtYXJrCi0gICAgICAgIG5ldyA9IGhnaGV4KG5vZGUpCi0KLSAgICAgICAgaWYgYm1hcmsgaW4gYm1hcmtzOgotICAgICAgICAgICAgb2xkID0gYm1hcmtzW2JtYXJrXS5oZXgoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb2xkID0gJycKLQotICAgICAgICBpZiBvbGQgPT0gbmV3OgotICAgICAgICAgICAgY29udGludWUKLQotICAgICAgICBpZiBibWFyayA9PSAnbWFzdGVyJyBhbmQgJ21hc3Rlcicgbm90IGluIHBhcnNlci5yZXBvLl9ib29rbWFya3M6Ci0gICAgICAgICAgICAjIGZha2UgYm9va21hcmsKLSAgICAgICAgICAgIHByaW50ICJvayAlcyIgJSByZWYKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGVsaWYgYm9va21hcmtzLnB1c2hib29rbWFyayhwYXJzZXIucmVwbywgYm1hcmssIG9sZCwgbmV3KToKLSAgICAgICAgICAgICMgdXBkYXRlZCBsb2NhbGx5Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCAiZXJyb3IgJXMiICUgcmVmCi0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgIGlmIHBlZXI6Ci0gICAgICAgICAgICByYiA9IHBlZXIubGlzdGtleXMoJ2Jvb2ttYXJrcycpCi0gICAgICAgICAgICBvbGQgPSByYi5nZXQoYm1hcmssICcnKQorICAgICAgICAjIHVwZGF0ZSByZW1vdGUgYm9va21hcmtzCisgICAgICAgIHJlbW90ZV9ibWFya3MgPSBwZWVyLmxpc3RrZXlzKCdib29rbWFya3MnKQorICAgICAgICBmb3IgcmVmLCBibWFyaywgb2xkLCBuZXcgaW4gcF9ibWFya3M6CisgICAgICAgICAgICBpZiBmb3JjZV9wdXNoOgorICAgICAgICAgICAgICAgIG9sZCA9IHJlbW90ZV9ibWFya3MuZ2V0KGJtYXJrLCAnJykKICAgICAgICAgICAgIGlmIG5vdCBwZWVyLnB1c2hrZXkoJ2Jvb2ttYXJrcycsIGJtYXJrLCBvbGQsIG5ldyk6CiAgICAgICAgICAgICAgICAgcHJpbnQgImVycm9yICVzIiAlIHJlZgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgcHJpbnQgIm9rICVzIiAlIHJlZgorICAgIGVsc2U6CisgICAgICAgICMgdXBkYXRlIGxvY2FsIGJvb2ttYXJrcworICAgICAgICBmb3IgcmVmLCBibWFyaywgb2xkLCBuZXcgaW4gcF9ibWFya3M6CisgICAgICAgICAgICBpZiBub3QgYm9va21hcmtzLnB1c2hib29rbWFyayhwYXJzZXIucmVwbywgYm1hcmssIG9sZCwgbmV3KToKKyAgICAgICAgICAgICAgICBwcmludCAiZXJyb3IgJXMiICUgcmVmCiAKICAgICBwcmludAogCitkZWYgZG9fb3B0aW9uKHBhcnNlcik6CisgICAgZ2xvYmFsIGRyeV9ydW4sIGZvcmNlX3B1c2gKKyAgICBfLCBrZXksIHZhbHVlID0gcGFyc2VyLmxpbmUuc3BsaXQoJyAnKQorICAgIGlmIGtleSA9PSAnZHJ5LXJ1bic6CisgICAgICAgIGRyeV9ydW4gPSAodmFsdWUgPT0gJ3RydWUnKQorICAgICAgICBwcmludCAnb2snCisgICAgZWxpZiBrZXkgPT0gJ2ZvcmNlJzoKKyAgICAgICAgZm9yY2VfcHVzaCA9ICh2YWx1ZSA9PSAndHJ1ZScpCisgICAgICAgIHByaW50ICdvaycKKyAgICBlbHNlOgorICAgICAgICBwcmludCAndW5zdXBwb3J0ZWQnCisKIGRlZiBmaXhfcGF0aChhbGlhcywgcmVwbywgb3JpZ191cmwpOgogICAgIHVybCA9IHVybHBhcnNlLnVybHBhcnNlKG9yaWdfdXJsLCAnZmlsZScpCiAgICAgaWYgdXJsLnNjaGVtZSAhPSAnZmlsZScgb3Igb3MucGF0aC5pc2Ficyh1cmwucGF0aCk6CkBAIC05MDIsMTIgKzExMzEsMTQgQEAKICAgICBzdWJwcm9jZXNzLmNhbGwoY21kKQogCiBkZWYgbWFpbihhcmdzKToKLSAgICBnbG9iYWwgcHJlZml4LCBkaXJuYW1lLCBicmFuY2hlcywgYm1hcmtzCisgICAgZ2xvYmFsIHByZWZpeCwgZ2l0ZGlyLCBkaXJuYW1lLCBicmFuY2hlcywgYm1hcmtzCiAgICAgZ2xvYmFsIG1hcmtzLCBibG9iX21hcmtzLCBwYXJzZWRfcmVmcwogICAgIGdsb2JhbCBwZWVyLCBtb2RlLCBiYWRfbWFpbCwgYmFkX25hbWUKICAgICBnbG9iYWwgdHJhY2tfYnJhbmNoZXMsIGZvcmNlX3B1c2gsIGlzX3RtcAogICAgIGdsb2JhbCBwYXJzZWRfdGFncwogICAgIGdsb2JhbCBmaWxlbm9kZXMKKyAgICBnbG9iYWwgZmFrZV9ibWFyaywgaGdfdmVyc2lvbgorICAgIGdsb2JhbCBkcnlfcnVuCiAKICAgICBhbGlhcyA9IGFyZ3NbMV0KICAgICB1cmwgPSBhcmdzWzJdCkBAIC05MTUsNyArMTE0Niw3IEBACiAKICAgICBoZ19naXRfY29tcGF0ID0gZ2V0X2NvbmZpZ19ib29sKCdyZW1vdGUtaGcuaGctZ2l0LWNvbXBhdCcpCiAgICAgdHJhY2tfYnJhbmNoZXMgPSBnZXRfY29uZmlnX2Jvb2woJ3JlbW90ZS1oZy50cmFjay1icmFuY2hlcycsIFRydWUpCi0gICAgZm9yY2VfcHVzaCA9IGdldF9jb25maWdfYm9vbCgncmVtb3RlLWhnLmZvcmNlLXB1c2gnKQorICAgIGZvcmNlX3B1c2ggPSBGYWxzZQogCiAgICAgaWYgaGdfZ2l0X2NvbXBhdDoKICAgICAgICAgbW9kZSA9ICdoZycKQEAgLTk0MSw2ICsxMTcyLDEyIEBACiAgICAgbWFya3MgPSBOb25lCiAgICAgcGFyc2VkX3RhZ3MgPSB7fQogICAgIGZpbGVub2RlcyA9IHt9CisgICAgZmFrZV9ibWFyayA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGhnX3ZlcnNpb24gPSB0dXBsZShpbnQoZSkgZm9yIGUgaW4gdXRpbC52ZXJzaW9uKCkuc3BsaXQoJy4nKSkKKyAgICBleGNlcHQ6CisgICAgICAgIGhnX3ZlcnNpb24gPSBOb25lCisgICAgZHJ5X3J1biA9IEZhbHNlCiAKICAgICByZXBvID0gZ2V0X3JlcG8odXJsLCBhbGlhcykKICAgICBwcmVmaXggPSAncmVmcy9oZy8lcycgJSBhbGlhcwpAQCAtOTQ4LDExICsxMTg1LDggQEAKICAgICBpZiBub3QgaXNfdG1wOgogICAgICAgICBmaXhfcGF0aChhbGlhcywgcGVlciBvciByZXBvLCB1cmwpCiAKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlybmFtZSk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCi0KICAgICBtYXJrc19wYXRoID0gb3MucGF0aC5qb2luKGRpcm5hbWUsICdtYXJrcy1oZycpCi0gICAgbWFya3MgPSBNYXJrcyhtYXJrc19wYXRoKQorICAgIG1hcmtzID0gTWFya3MobWFya3NfcGF0aCwgcmVwbykKIAogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBpbXBvcnQgbXN2Y3J0CkBAIC05NjgsNiArMTIwMiw4IEBACiAgICAgICAgICAgICBkb19pbXBvcnQocGFyc2VyKQogICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnZXhwb3J0Jyk6CiAgICAgICAgICAgICBkb19leHBvcnQocGFyc2VyKQorICAgICAgICBlbGlmIHBhcnNlci5jaGVjaygnb3B0aW9uJyk6CisgICAgICAgICAgICBkb19vcHRpb24ocGFyc2VyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGllKCd1bmhhbmRsZWQgY29tbWFuZDogJXMnICUgbGluZSkKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtYnpyLnNoIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWJ6ci5zaAppbmRleCA1ZGZhMDcwLi5kY2UyODFmIDEwMDc1NQotLS0gYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtYnpyLnNoCisrKyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1ienIuc2gKQEAgLTEyLDg2ICsxMiw5MCBAQAogCXRlc3RfZG9uZQogZmkKIAotaWYgISAiJFBZVEhPTl9QQVRIIiAtYyAnaW1wb3J0IGJ6cmxpYic7IHRoZW4KK2lmICEgcHl0aG9uIC1jICdpbXBvcnQgYnpybGliJzsgdGhlbgogCXNraXBfYWxsPSdza2lwcGluZyByZW1vdGUtYnpyIHRlc3RzOyBienIgbm90IGF2YWlsYWJsZScKIAl0ZXN0X2RvbmUKIGZpCiAKIGNoZWNrICgpIHsKLQkoY2QgJDEgJiYKLQlnaXQgbG9nIC0tZm9ybWF0PSclcycgLTEgJiYKLQlnaXQgc3ltYm9saWMtcmVmIEhFQUQpID4gYWN0dWFsICYmCi0JKGVjaG8gJDIgJiYKLQllY2hvICJyZWZzL2hlYWRzLyQzIikgPiBleHBlY3RlZCAmJgorCWVjaG8gJDMgPiBleHBlY3RlZCAmJgorCWdpdCAtLWdpdC1kaXI9JDEvLmdpdCBsb2cgLS1mb3JtYXQ9JyVzJyAtMSAkMiA+IGFjdHVhbAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogfQogCiBienIgd2hvYW1pICJBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZycgJwotICAoYnpyIGluaXQgYnpycmVwbyAmJgotICBjZCBienJyZXBvICYmCi0gIGVjaG8gb25lID4gY29udGVudCAmJgotICBienIgYWRkIGNvbnRlbnQgJiYKLSAgYnpyIGNvbW1pdCAtbSBvbmUKLSAgKSAmJgorCSgKKwlienIgaW5pdCBienJyZXBvICYmCisJY2QgYnpycmVwbyAmJgorCWVjaG8gb25lID4gY29udGVudCAmJgorCWJ6ciBhZGQgY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gb25lCisJKSAmJgogCi0gIGdpdCBjbG9uZSAiYnpyOjokUFdEL2J6cnJlcG8iIGdpdHJlcG8gJiYKLSAgY2hlY2sgZ2l0cmVwbyBvbmUgbWFzdGVyCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIEhFQUQgb25lCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcnICcKLSAgKGNkIGJ6cnJlcG8gJiYKLSAgZWNobyB0d28gPiBjb250ZW50ICYmCi0gIGJ6ciBjb21taXQgLW0gdHdvCi0gICkgJiYKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gdHdvID4gY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gdHdvCisJKSAmJgogCi0gIChjZCBnaXRyZXBvICYmIGdpdCBwdWxsKSAmJgorCShjZCBnaXRyZXBvICYmIGdpdCBwdWxsKSAmJgogCi0gIGNoZWNrIGdpdHJlcG8gdHdvIG1hc3RlcgorCWNoZWNrIGdpdHJlcG8gSEVBRCB0d28KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaGluZycgJwotICAoY2QgZ2l0cmVwbyAmJgotICBlY2hvIHRocmVlID4gY29udGVudCAmJgotICBnaXQgY29tbWl0IC1hIC1tIHRocmVlICYmCi0gIGdpdCBwdXNoCi0gICkgJiYKKwkoCisJY2QgZ2l0cmVwbyAmJgorCWVjaG8gdGhyZWUgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSB0aHJlZSAmJgorCWdpdCBwdXNoCisJKSAmJgogCi0gIGVjaG8gdGhyZWUgPiBleHBlY3RlZCAmJgotICBjYXQgYnpycmVwby9jb250ZW50ID4gYWN0dWFsICYmCi0gIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCWVjaG8gdGhyZWUgPiBleHBlY3RlZCAmJgorCWNhdCBienJyZXBvL2NvbnRlbnQgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncm91bmR0cmlwJyAnCi0gIChjZCBnaXRyZXBvICYmCi0gIGdpdCBwdWxsICYmCi0gIGdpdCBsb2cgLS1mb3JtYXQ9IiVzIiAtMSBvcmlnaW4vbWFzdGVyID4gYWN0dWFsKSAmJgotICBlY2hvIHRocmVlID4gZXhwZWN0ZWQgJiYKLSAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsICYmCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgcHVsbCAmJgorCWdpdCBsb2cgLS1mb3JtYXQ9IiVzIiAtMSBvcmlnaW4vbWFzdGVyID4gYWN0dWFsCisJKSAmJgorCWVjaG8gdGhyZWUgPiBleHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgogCi0gIChjZCBnaXRyZXBvICYmIGdpdCBwdXNoICYmIGdpdCBwdWxsKSAmJgorCShjZCBnaXRyZXBvICYmIGdpdCBwdXNoICYmIGdpdCBwdWxsKSAmJgogCi0gIChjZCBienJyZXBvICYmCi0gIGVjaG8gZm91ciA+IGNvbnRlbnQgJiYKLSAgYnpyIGNvbW1pdCAtbSBmb3VyCi0gICkgJiYKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gZm91ciA+IGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIGZvdXIKKwkpICYmCiAKLSAgKGNkIGdpdHJlcG8gJiYgZ2l0IHB1bGwgJiYgZ2l0IHB1c2gpICYmCisJKGNkIGdpdHJlcG8gJiYgZ2l0IHB1bGwgJiYgZ2l0IHB1c2gpICYmCiAKLSAgY2hlY2sgZ2l0cmVwbyBmb3VyIG1hc3RlciAmJgorCWNoZWNrIGdpdHJlcG8gSEVBRCBmb3VyICYmCiAKLSAgKGNkIGdpdHJlcG8gJiYKLSAgZWNobyBmaXZlID4gY29udGVudCAmJgotICBnaXQgY29tbWl0IC1hIC1tIGZpdmUgJiYKLSAgZ2l0IHB1c2ggJiYgZ2l0IHB1bGwKLSAgKSAmJgorCSgKKwljZCBnaXRyZXBvICYmCisJZWNobyBmaXZlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gZml2ZSAmJgorCWdpdCBwdXNoICYmIGdpdCBwdWxsCisJKSAmJgogCi0gIChjZCBienJyZXBvICYmIGJ6ciByZXZlcnQpICYmCisJKGNkIGJ6cnJlcG8gJiYgYnpyIHJldmVydCkgJiYKIAotICBlY2hvIGZpdmUgPiBleHBlY3RlZCAmJgotICBjYXQgYnpycmVwby9jb250ZW50ID4gYWN0dWFsICYmCi0gIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCWVjaG8gZml2ZSA+IGV4cGVjdGVkICYmCisJY2F0IGJ6cnJlcG8vY29udGVudCA+IGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiBjYXQgPiBleHBlY3RlZCA8PEVPRgpAQCAtMTAxLDI5ICsxMDUsMzUgQEAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzcGVjaWFsIG1vZGVzJyAnCi0gIChjZCBienJyZXBvICYmCi0gIGVjaG8gZXhlYyA+IGV4ZWN1dGFibGUKLSAgY2htb2QgK3ggZXhlY3V0YWJsZSAmJgotICBienIgYWRkIGV4ZWN1dGFibGUKLSAgYnpyIGNvbW1pdCAtbSBleGVjICYmCi0gIGxuIC1zIGNvbnRlbnQgbGluawotICBienIgYWRkIGxpbmsKLSAgYnpyIGNvbW1pdCAtbSBsaW5rICYmCi0gIG1rZGlyIGRpciAmJgotICBienIgYWRkIGRpciAmJgotICBienIgY29tbWl0IC1tIGRpcikgJiYKKwkoCisJY2QgYnpycmVwbyAmJgorCWVjaG8gZXhlYyA+IGV4ZWN1dGFibGUKKwljaG1vZCAreCBleGVjdXRhYmxlICYmCisJYnpyIGFkZCBleGVjdXRhYmxlCisJYnpyIGNvbW1pdCAtbSBleGVjICYmCisJbG4gLXMgY29udGVudCBsaW5rCisJYnpyIGFkZCBsaW5rCisJYnpyIGNvbW1pdCAtbSBsaW5rICYmCisJbWtkaXIgZGlyICYmCisJYnpyIGFkZCBkaXIgJiYKKwlienIgY29tbWl0IC1tIGRpcgorCSkgJiYKIAotICAoY2QgZ2l0cmVwbyAmJgotICBnaXQgcHVsbAotICBnaXQgbHMtdHJlZSBIRUFEID4gLi4vYWN0dWFsKSAmJgorCSgKKwljZCBnaXRyZXBvICYmCisJZ2l0IHB1bGwKKwlnaXQgbHMtdHJlZSBIRUFEID4gLi4vYWN0dWFsCisJKSAmJgogCi0gIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbCAmJgogCi0gIChjZCBnaXRyZXBvICYmCi0gIGdpdCBjYXQtZmlsZSAtcCBIRUFEOmxpbmsgPiAuLi9hY3R1YWwpICYmCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2F0LWZpbGUgLXAgSEVBRDpsaW5rID4gLi4vYWN0dWFsCisJKSAmJgogCi0gIHByaW50ZiBjb250ZW50ID4gZXhwZWN0ZWQgJiYKLSAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJcHJpbnRmIGNvbnRlbnQgPiBleHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiBjYXQgPiBleHBlY3RlZCA8PEVPRgpAQCAtMTM0LDEzNCArMTQ0LDE0NSBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vdmluZyBkaXJlY3RvcnknICcKLSAgKGNkIGJ6cnJlcG8gJiYKLSAgbWtkaXIgbW92ZWRpciAmJgotICBlY2hvIG9uZSA+IG1vdmVkaXIvb25lICYmCi0gIGVjaG8gdHdvID4gbW92ZWRpci90d28gJiYKLSAgYnpyIGFkZCBtb3ZlZGlyICYmCi0gIGJ6ciBjb21taXQgLW0gbW92ZWRpciAmJgotICBienIgbXYgbW92ZWRpciBtb3ZlZGlyLW5ldyAmJgotICBienIgY29tbWl0IC1tIG1vdmVkaXItbmV3KSAmJgorCSgKKwljZCBienJyZXBvICYmCisJbWtkaXIgbW92ZWRpciAmJgorCWVjaG8gb25lID4gbW92ZWRpci9vbmUgJiYKKwllY2hvIHR3byA+IG1vdmVkaXIvdHdvICYmCisJYnpyIGFkZCBtb3ZlZGlyICYmCisJYnpyIGNvbW1pdCAtbSBtb3ZlZGlyICYmCisJYnpyIG12IG1vdmVkaXIgbW92ZWRpci1uZXcgJiYKKwlienIgY29tbWl0IC1tIG1vdmVkaXItbmV3CisJKSAmJgogCi0gIChjZCBnaXRyZXBvICYmCi0gIGdpdCBwdWxsICYmCi0gIGdpdCBscy10cmVlIEhFQUQgPiAuLi9hY3R1YWwpICYmCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgcHVsbCAmJgorCWdpdCBscy10cmVlIEhFQUQgPiAuLi9hY3R1YWwKKwkpICYmCiAKLSAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmZlcmVudCBhdXRob3JzJyAnCi0gIChjZCBienJyZXBvICYmCi0gIGVjaG8gam9obiA+PiBjb250ZW50ICYmCi0gIGJ6ciBjb21taXQgLW0gam9obiBcCi0gICAgLS1hdXRob3IgIkphbmUgUmV5IDxqcmV5QGV4YW1wbGUuY29tPiIgXAotICAgIC0tYXV0aG9yICJKb2huIERvZSA8amRvZUBleGFtcGxlLmNvbT4iKSAmJgorCSgKKwljZCBienJyZXBvICYmCisJZWNobyBqb2huID4+IGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIGpvaG4gXAorCSAgLS1hdXRob3IgIkphbmUgUmV5IDxqcmV5QGV4YW1wbGUuY29tPiIgXAorCSAgLS1hdXRob3IgIkpvaG4gRG9lIDxqZG9lQGV4YW1wbGUuY29tPiIKKwkpICYmCiAKLSAgKGNkIGdpdHJlcG8gJiYKLSAgZ2l0IHB1bGwgJiYKLSAgZ2l0IHNob3cgLS1mb3JtYXQ9IiVhbiA8JWFlPiwgJWNuIDwlY2U+IiAtLXF1aWV0ID4gLi4vYWN0dWFsKSAmJgorCSgKKwljZCBnaXRyZXBvICYmCisJZ2l0IHB1bGwgJiYKKwlnaXQgc2hvdyAtLWZvcm1hdD0iJWFuIDwlYWU+LCAlY24gPCVjZT4iIC0tcXVpZXQgPiAuLi9hY3R1YWwKKwkpICYmCiAKLSAgZWNobyAiSmFuZSBSZXkgPGpyZXlAZXhhbXBsZS5jb20+LCBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIgPiBleHBlY3RlZCAmJgotICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwllY2hvICJKYW5lIFJleSA8anJleUBleGFtcGxlLmNvbT4sIEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+IiA+IGV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKKyMgY2xlYW51cCBwcmV2aW91cyBzdHVmZgorcm0gLXJmIGJ6cnJlcG8gZ2l0cmVwbworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCB1dGYtOCBmaWxlbmFtZXMnICcKLSAgbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotICB0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAgJiYgTENfQUxMPUMiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgYnpycmVwbyBnaXRyZXBvICYmIExDX0FMTD1DIiAmJgogCi0gIExDX0FMTD1lbl9VUy5VVEYtOAotICBleHBvcnQgTENfQUxMCi0gICgKLSAgYnpyIGluaXQgYnpycmVwbyAmJgotICBjZCBienJyZXBvICYmCisJTENfQUxMPWVuX1VTLlVURi04CisJZXhwb3J0IExDX0FMTAogCi0gIGVjaG8gdGVzdCA+PiAiw6Zyw7giICYmCi0gIGJ6ciBhZGQgIsOmcsO4IiAmJgotICBlY2hvIHRlc3QgPj4gIsO4fj8iICYmCi0gIGJ6ciBhZGQgIsO4fj8iICYmCi0gIGJ6ciBjb21taXQgLW0gYWRkLXV0Zi04ICYmCi0gIGVjaG8gdGVzdCA+PiAiw6Zyw7giICYmCi0gIGJ6ciBjb21taXQgLW0gdGVzdC11dGYtOCAmJgotICBienIgcm0gIsO4fj8iICYmCi0gIGJ6ciBtdiAiw6Zyw7giICLDuH4/IiAmJgotICBienIgY29tbWl0IC1tIGJ6ci1tdi11dGYtOAotICApICYmCisJKAorCWJ6ciBpbml0IGJ6cnJlcG8gJiYKKwljZCBienJyZXBvICYmCiAKLSAgKAotICBnaXQgY2xvbmUgImJ6cjo6JFBXRC9ienJyZXBvIiBnaXRyZXBvICYmCi0gIGNkIGdpdHJlcG8gJiYKLSAgZ2l0IC1jIGNvcmUucXVvdGVwYXRoPWZhbHNlIGxzLWZpbGVzID4gLi4vYWN0dWFsCi0gICkgJiYKLSAgZWNobyAiw7h+PyIgPiBleHBlY3RlZCAmJgotICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwllY2hvIHRlc3QgPj4gIsOmcsO4IiAmJgorCWJ6ciBhZGQgIsOmcsO4IiAmJgorCWVjaG8gdGVzdCA+PiAiw7h+PyIgJiYKKwlienIgYWRkICLDuH4/IiAmJgorCWJ6ciBjb21taXQgLW0gYWRkLXV0Zi04ICYmCisJZWNobyB0ZXN0ID4+ICLDpnLDuCIgJiYKKwlienIgY29tbWl0IC1tIHRlc3QtdXRmLTggJiYKKwlienIgcm0gIsO4fj8iICYmCisJYnpyIG12ICLDpnLDuCIgIsO4fj8iICYmCisJYnpyIGNvbW1pdCAtbSBienItbXYtdXRmLTgKKwkpICYmCisKKwkoCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZ2l0IC1jIGNvcmUucXVvdGVwYXRoPWZhbHNlIGxzLWZpbGVzID4gLi4vYWN0dWFsCisJKSAmJgorCWVjaG8gIsO4fj8iID4gZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB1dGYtOCBmaWxlbmFtZXMnICcKLSAgbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotICB0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAgJiYgTENfQUxMPUMiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgYnpycmVwbyBnaXRyZXBvICYmIExDX0FMTD1DIiAmJgogCi0gIExDX0FMTD1lbl9VUy5VVEYtOAotICBleHBvcnQgTENfQUxMCisJbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgogCi0gICgKLSAgYnpyIGluaXQgYnpycmVwbyAmJgotICBjZCBienJyZXBvICYmCisJTENfQUxMPWVuX1VTLlVURi04CisJZXhwb3J0IExDX0FMTAogCi0gIGVjaG8gb25lID4+IGNvbnRlbnQgJiYKLSAgYnpyIGFkZCBjb250ZW50ICYmCi0gIGJ6ciBjb21taXQgLW0gb25lCi0gICkgJiYKKwkoCisJYnpyIGluaXQgYnpycmVwbyAmJgorCWNkIGJ6cnJlcG8gJiYKIAotICAoCi0gIGdpdCBjbG9uZSAiYnpyOjokUFdEL2J6cnJlcG8iIGdpdHJlcG8gJiYKLSAgY2QgZ2l0cmVwbyAmJgorCWVjaG8gb25lID4+IGNvbnRlbnQgJiYKKwlienIgYWRkIGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIG9uZQorCSkgJiYKIAotICBlY2hvIHRlc3QgPj4gIsOmcsO4IiAmJgotICBnaXQgYWRkICLDpnLDuCIgJiYKLSAgZ2l0IGNvbW1pdCAtbSB1dGYtOCAmJgorCSgKKwlnaXQgY2xvbmUgImJ6cjo6YnpycmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKIAotICBnaXQgcHVzaAotICApICYmCisJZWNobyB0ZXN0ID4+ICLDpnLDuCIgJiYKKwlnaXQgYWRkICLDpnLDuCIgJiYKKwlnaXQgY29tbWl0IC1tIHV0Zi04ICYmCiAKLSAgKGNkIGJ6cnJlcG8gJiYgYnpyIGxzID4gLi4vYWN0dWFsKSAmJgotICBwcmludGYgImNvbnRlbnRcbsOmcsO4XG4iID4gZXhwZWN0ZWQgJiYKLSAgdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisJZ2l0IHB1c2gKKwkpICYmCisKKwkoY2QgYnpycmVwbyAmJiBienIgbHMgPiAuLi9hY3R1YWwpICYmCisJcHJpbnRmICJjb250ZW50XG7DpnLDuFxuIiA+IGV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2hpbmcgYSBtZXJnZScgJwotICBta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0gIHRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBienJyZXBvIGdpdHJlcG8iICYmCiAKLSAgKAotICBienIgaW5pdCBienJyZXBvICYmCi0gIGNkIGJ6cnJlcG8gJiYKLSAgZWNobyBvbmUgPiBjb250ZW50ICYmCi0gIGJ6ciBhZGQgY29udGVudCAmJgotICBienIgY29tbWl0IC1tIG9uZQotICApICYmCisJKAorCWJ6ciBpbml0IGJ6cnJlcG8gJiYKKwljZCBienJyZXBvICYmCisJZWNobyBvbmUgPiBjb250ZW50ICYmCisJYnpyIGFkZCBjb250ZW50ICYmCisJYnpyIGNvbW1pdCAtbSBvbmUKKwkpICYmCiAKLSAgZ2l0IGNsb25lICJienI6OiRQV0QvYnpycmVwbyIgZ2l0cmVwbyAmJgorCWdpdCBjbG9uZSAiYnpyOjpienJyZXBvIiBnaXRyZXBvICYmCiAKLSAgKAotICBjZCBienJyZXBvICYmCi0gIGVjaG8gdHdvID4gY29udGVudCAmJgotICBienIgY29tbWl0IC1tIHR3bwotICApICYmCisJKAorCWNkIGJ6cnJlcG8gJiYKKwllY2hvIHR3byA+IGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIHR3bworCSkgJiYKIAotICAoCi0gIGNkIGdpdHJlcG8gJiYKLSAgZWNobyB0aHJlZSA+IGNvbnRlbnQgJiYKLSAgZ2l0IGNvbW1pdCAtYSAtbSB0aHJlZSAmJgotICBnaXQgZmV0Y2ggJiYKLSAgZ2l0IG1lcmdlIG9yaWdpbi9tYXN0ZXIgfHwgdHJ1ZSAmJgotICBlY2hvIHRocmVlID4gY29udGVudCAmJgotICBnaXQgY29tbWl0IC1hIC0tbm8tZWRpdCAmJgotICBnaXQgcHVzaAotICApICYmCisJKAorCWNkIGdpdHJlcG8gJiYKKwllY2hvIHRocmVlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gdGhyZWUgJiYKKwlnaXQgZmV0Y2ggJiYKKwlnaXQgbWVyZ2Ugb3JpZ2luL21hc3RlciB8fCB0cnVlICYmCisJZWNobyB0aHJlZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC0tbm8tZWRpdCAmJgorCWdpdCBwdXNoCisJKSAmJgogCi0gIGVjaG8gdGhyZWUgPiBleHBlY3RlZCAmJgotICBjYXQgYnpycmVwby9jb250ZW50ID4gYWN0dWFsICYmCi0gIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCWVjaG8gdGhyZWUgPiBleHBlY3RlZCAmJgorCWNhdCBienJyZXBvL2NvbnRlbnQgPiBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAogY2F0ID4gZXhwZWN0ZWQgPDxFT0YKQEAgLTI3MSw3MSArMjkyLDcwIEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvcGVyIGJ6ciByZXBvJyAnCi0gIG1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLSAgdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGJ6cnJlcG8gZ2l0cmVwbyIgJiYKIAotICBienIgaW5pdC1yZXBvIGJ6cnJlcG8gJiYKKwlienIgaW5pdC1yZXBvIGJ6cnJlcG8gJiYKIAotICBienIgaW5pdCBienJyZXBvL3RydW5rICYmCi0gICgKLSAgY2QgYnpycmVwby90cnVuayAmJgotICBlY2hvIG9uZSA+PiBjb250ZW50ICYmCi0gIGJ6ciBhZGQgY29udGVudCAmJgotICBienIgY29tbWl0IC1tIG9uZQotICApICYmCisJKAorCWJ6ciBpbml0IGJ6cnJlcG8vdHJ1bmsgJiYKKwljZCBienJyZXBvL3RydW5rICYmCisJZWNobyBvbmUgPj4gY29udGVudCAmJgorCWJ6ciBhZGQgY29udGVudCAmJgorCWJ6ciBjb21taXQgLW0gb25lCisJKSAmJgogCi0gIGJ6ciBicmFuY2ggYnpycmVwby90cnVuayBienJyZXBvL2JyYW5jaCAmJgotICAoCi0gIGNkIGJ6cnJlcG8vYnJhbmNoICYmCi0gIGVjaG8gdHdvID4+IGNvbnRlbnQgJiYKLSAgYnpyIGNvbW1pdCAtbSBvbmUKLSAgKSAmJgorCSgKKwlienIgYnJhbmNoIGJ6cnJlcG8vdHJ1bmsgYnpycmVwby9icmFuY2ggJiYKKwljZCBienJyZXBvL2JyYW5jaCAmJgorCWVjaG8gdHdvID4+IGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIG9uZQorCSkgJiYKIAotICBnaXQgY2xvbmUgImJ6cjo6JFBXRC9ienJyZXBvIiBnaXRyZXBvICYmCi0gICgKLSAgY2QgZ2l0cmVwbyAmJgotICBnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0ICIlKHJlZm5hbWU6c2hvcnQpIiByZWZzL3JlbW90ZXMvb3JpZ2luID4gLi4vYWN0dWFsCi0gICkgJiYKKwkoCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdCAiJShyZWZuYW1lOnNob3J0KSIgcmVmcy9yZW1vdGVzL29yaWdpbiA+IC4uL2FjdHVhbAorCSkgJiYKIAotICB0ZXN0X2NtcCAuLi9leHBlY3RlZCBhY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RyaXAnICcKLSAgIyBEbyBub3QgaW1pdGF0ZSB0aGlzIHN0eWxlOyBhbHdheXMgY2hkaXIgaW5zaWRlIGEgc3Vic2hlbGwgaW5zdGVhZAotICBta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0gIHRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBienJyZXBvIGdpdHJlcG8iICYmCiAKLSAgKAotICBienIgaW5pdCBienJyZXBvICYmCi0gIGNkIGJ6cnJlcG8gJiYKKwkoCisJYnpyIGluaXQgYnpycmVwbyAmJgorCWNkIGJ6cnJlcG8gJiYKIAotICBlY2hvIG9uZSA+PiBjb250ZW50ICYmCi0gIGJ6ciBhZGQgY29udGVudCAmJgotICBienIgY29tbWl0IC1tIG9uZSAmJgorCWVjaG8gb25lID4+IGNvbnRlbnQgJiYKKwlienIgYWRkIGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIG9uZSAmJgogCi0gIGVjaG8gdHdvID4+IGNvbnRlbnQgJiYKLSAgYnpyIGNvbW1pdCAtbSB0d28KLSAgKSAmJgorCWVjaG8gdHdvID4+IGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIHR3bworCSkgJiYKIAotICBnaXQgY2xvbmUgImJ6cjo6JFBXRC9ienJyZXBvIiBnaXRyZXBvICYmCisJZ2l0IGNsb25lICJienI6OmJ6cnJlcG8iIGdpdHJlcG8gJiYKIAotICAoCi0gIGNkIGJ6cnJlcG8gJiYKLSAgYnpyIHVuY29tbWl0IC0tZm9yY2UgJiYKKwkoCisJY2QgYnpycmVwbyAmJgorCWJ6ciB1bmNvbW1pdCAtLWZvcmNlICYmCiAKLSAgZWNobyB0aHJlZSA+PiBjb250ZW50ICYmCi0gIGJ6ciBjb21taXQgLW0gdGhyZWUgJiYKKwllY2hvIHRocmVlID4+IGNvbnRlbnQgJiYKKwlienIgY29tbWl0IC1tIHRocmVlICYmCiAKLSAgZWNobyBmb3VyID4+IGNvbnRlbnQgJiYKLSAgYnpyIGNvbW1pdCAtbSBmb3VyICYmCi0gIGJ6ciBsb2cgLS1saW5lIHwgc2VkIC1lICJzL15bMC05XVswLTldKjogLy8iID4gLi4vZXhwZWN0ZWQKLSAgKSAmJgorCWVjaG8gZm91ciA+PiBjb250ZW50ICYmCisJYnpyIGNvbW1pdCAtbSBmb3VyICYmCisJYnpyIGxvZyAtLWxpbmUgfCBzZWQgLWUgInMvXlswLTldWzAtOV0qOiAvLyIgPiAuLi9leHBlY3RlZAorCSkgJiYKIAotICAoY2QgZ2l0cmVwbyAmJgotICBnaXQgZmV0Y2ggJiYKLSAgZ2l0IGxvZyAtLWZvcm1hdD0iJWFuICVhZCAlcyIgLS1kYXRlPXNob3J0IG9yaWdpbi9tYXN0ZXIgPiAuLi9hY3R1YWwpICYmCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgZmV0Y2ggJiYKKwlnaXQgbG9nIC0tZm9ybWF0PSIlYW4gJWFkICVzIiAtLWRhdGU9c2hvcnQgb3JpZ2luL21hc3RlciA+IC4uL2FjdHVhbAorCSkgJiYKIAotICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctYmlkaS5zaCBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCmluZGV4IGY1Njk2OTcuLmY4M2Q2N2QgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCisrKyBiL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1iaWRpLnNoCkBAIC0xNSwyMyArMTUsMjIgQEAKIAl0ZXN0X2RvbmUKIGZpCiAKLWlmICEgIiRQWVRIT05fUEFUSCIgLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCitpZiAhIHB5dGhvbiAtYyAnaW1wb3J0IG1lcmN1cmlhbCc7IHRoZW4KIAlza2lwX2FsbD0nc2tpcHBpbmcgcmVtb3RlLWhnIHRlc3RzOyBtZXJjdXJpYWwgbm90IGF2YWlsYWJsZScKIAl0ZXN0X2RvbmUKIGZpCiAKICMgY2xvbmUgdG8gYSBnaXQgcmVwbwogZ2l0X2Nsb25lICgpIHsKLQlnaXQgY2xvbmUgLXEgImhnOjokUFdELyQxIiAkMgorCWdpdCBjbG9uZSAtcSAiaGc6OiQxIiAkMgogfQogCiAjIGNsb25lIHRvIGFuIGhnIHJlcG8KIGhnX2Nsb25lICgpIHsKIAkoCiAJaGcgaW5pdCAkMiAmJgotCWhnIC1SICQyIGJvb2ttYXJrIC1pIG1hc3RlciAmJgogCWNkICQxICYmCi0JZ2l0IHB1c2ggLXEgImhnOjokUFdELy4uLyQyIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJworCWdpdCBwdXNoIC1xICJoZzo6Li4vJDIiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonCiAJKSAmJgogCiAJKGNkICQyICYmIGhnIC1xIHVwZGF0ZSkKQEAgLTQxLDE3ICs0MCwxNSBAQAogaGdfcHVzaCAoKSB7CiAJKAogCWNkICQyCi0Jb2xkPSQoZ2l0IHN5bWJvbGljLXJlZiAtLXNob3J0IEhFQUQpCiAJZ2l0IGNoZWNrb3V0IC1xIC1iIHRtcCAmJgotCWdpdCBmZXRjaCAtcSAiaGc6OiRQV0QvLi4vJDEiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonICYmCi0JZ2l0IGNoZWNrb3V0IC1xICRvbGQgJiYKKwlnaXQgZmV0Y2ggLXEgImhnOjouLi8kMSIgJ3JlZnMvdGFncy8qOnJlZnMvdGFncy8qJyAncmVmcy9oZWFkcy8qOnJlZnMvaGVhZHMvKicgJiYKKwlnaXQgY2hlY2tvdXQgLXEgQHstMX0gJiYKIAlnaXQgYnJhbmNoIC1xIC1EIHRtcCAyPiAvZGV2L251bGwgfHwgdHJ1ZQogCSkKIH0KIAogaGdfbG9nICgpIHsKLQloZyAtUiAkMSBsb2cgLS1ncmFwaCAtLWRlYnVnID5sb2cgJiYKLQlncmVwIC12ICd0YWc6ICpkZWZhdWx0LycgbG9nCisJaGcgLVIgJDEgbG9nIC0tZ3JhcGggLS1kZWJ1ZwogfQogCiBzZXR1cCAoKSB7CkBAIC02Nyw2ICs2NCw3IEBACiAJZWNobyAiZ3JhcGhsb2cgPSIKIAkpID4+ICIkSE9NRSIvLmhncmMgJiYKIAlnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy5oZy1naXQtY29tcGF0IHRydWUKKwlnaXQgY29uZmlnIC0tZ2xvYmFsIHJlbW90ZS1oZy50cmFjay1icmFuY2hlcyB0cnVlCiAKIAlIR0VESVRPUj0vdXNyL2Jpbi90cnVlCiAJR0lUX0FVVEhPUl9EQVRFPSIyMDA3LTAxLTAxIDAwOjAwOjAwICswMjMwIgpAQCAtNzcsOCArNzUsNyBAQAogc2V0dXAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZW5jb2RpbmcnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMTE1LDggKzExMiw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgcmVtb3ZhbCcgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCkBAIC0xNDgsOCArMTQ0LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHRhZ3MnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMTc3LDggKzE3Miw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2hnIGJyYW5jaCcgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCkBAIC0xOTQsNyArMTg4LDcgQEAKIAloZ19jbG9uZSBnaXRyZXBvIGhncmVwbyAmJgogCiAJY2QgaGdyZXBvICYmCi0JaGcgLXEgY28gbWFzdGVyICYmCisJaGcgLXEgY28gZGVmYXVsdCAmJgogCWhnIG12IGFscGhhIGJldGEgJiYKIAloZyAtcSBjb21taXQgLW0gInJlbmFtZSBhbHBoYSB0byBiZXRhIiAmJgogCWhnIGJyYW5jaCBnYW1tYSB8IGdyZXAgLXYgInBlcm1hbmVudCBhbmQgZ2xvYmFsIiAmJgpAQCAtMjE0LDggKzIwOCw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2hnIHRhZ3MnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMjMxLDcgKzIyNCw3IEBACiAJaGdfY2xvbmUgZ2l0cmVwbyBoZ3JlcG8gJiYKIAogCWNkIGhncmVwbyAmJgotCWhnIGNvIG1hc3RlciAmJgorCWhnIGNvIGRlZmF1bHQgJiYKIAloZyB0YWcgYWxwaGEKIAkpICYmCiAKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1oZy1naXQuc2ggYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGctaGctZ2l0LnNoCmluZGV4IDdmNTc5YzguLjIyMTkyODQgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy1oZy1naXQuc2gKKysrIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLWhnLWdpdC5zaApAQCAtMTUsMTkgKzE1LDIwIEBACiAJdGVzdF9kb25lCiBmaQogCi1pZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgbWVyY3VyaWFsJzsgdGhlbgoraWYgISBweXRob24gLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCiAJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1oZyB0ZXN0czsgbWVyY3VyaWFsIG5vdCBhdmFpbGFibGUnCiAJdGVzdF9kb25lCiBmaQogCi1pZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgaGdnaXQnOyB0aGVuCitpZiAhIHB5dGhvbiAtYyAnaW1wb3J0IGhnZ2l0JzsgdGhlbgogCXNraXBfYWxsPSdza2lwcGluZyByZW1vdGUtaGcgdGVzdHM7IGhnLWdpdCBub3QgYXZhaWxhYmxlJwogCXRlc3RfZG9uZQogZmkKIAogIyBjbG9uZSB0byBhIGdpdCByZXBvIHdpdGggZ2l0CiBnaXRfY2xvbmVfZ2l0ICgpIHsKLQlnaXQgY2xvbmUgLXEgImhnOjokUFdELyQxIiAkMgorCWdpdCBjbG9uZSAtcSAiaGc6OiQxIiAkMiAmJgorCShjZCAkMiAmJiBnaXQgY2hlY2tvdXQgbWFzdGVyICYmIGdpdCBicmFuY2ggLUQgZGVmYXVsdCkKIH0KIAogIyBjbG9uZSB0byBhbiBoZyByZXBvIHdpdGggZ2l0CkBAIC0zNiw3ICszNyw3IEBACiAJaGcgaW5pdCAkMiAmJgogCWhnIC1SICQyIGJvb2ttYXJrIC1pIG1hc3RlciAmJgogCWNkICQxICYmCi0JZ2l0IHB1c2ggLXEgImhnOjokUFdELy4uLyQyIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJworCWdpdCBwdXNoIC1xICJoZzo6Li4vJDIiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonCiAJKSAmJgogCiAJKGNkICQyICYmIGhnIC1xIHVwZGF0ZSkKQEAgLTYxLDEwICs2MiwxMCBAQAogaGdfcHVzaF9naXQgKCkgewogCSgKIAljZCAkMgotCW9sZD0kKGdpdCBzeW1ib2xpYy1yZWYgLS1zaG9ydCBIRUFEKQogCWdpdCBjaGVja291dCAtcSAtYiB0bXAgJiYKLQlnaXQgZmV0Y2ggLXEgImhnOjokUFdELy4uLyQxIiAncmVmcy90YWdzLyo6cmVmcy90YWdzLyonICdyZWZzL2hlYWRzLyo6cmVmcy9oZWFkcy8qJyAmJgotCWdpdCBjaGVja291dCAtcSAkb2xkICYmCisJZ2l0IGZldGNoIC1xICJoZzo6Li4vJDEiICdyZWZzL3RhZ3MvKjpyZWZzL3RhZ3MvKicgJ3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzLyonICYmCisJZ2l0IGJyYW5jaCAtRCBkZWZhdWx0ICYmCisJZ2l0IGNoZWNrb3V0IC1xIEB7LTF9ICYmCiAJZ2l0IGJyYW5jaCAtcSAtRCB0bXAgMj4gL2Rldi9udWxsIHx8IHRydWUKIAkpCiB9CkBAIC0xMDQsMTggKzEwNSwxOCBAQAogCWdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLmhnLWdpdC1jb21wYXQgdHJ1ZQogCWdpdCBjb25maWcgLS1nbG9iYWwgcmVtb3RlLWhnLnRyYWNrLWJyYW5jaGVzIGZhbHNlCiAKLQlIR0VESVRPUj0vdXNyL2Jpbi90cnVlCisJSEdFRElUT1I9dHJ1ZQorCUhHTUVSR0U9dHJ1ZQogCiAJR0lUX0FVVEhPUl9EQVRFPSIyMDA3LTAxLTAxIDAwOjAwOjAwICswMjMwIgogCUdJVF9DT01NSVRURVJfREFURT0iJEdJVF9BVVRIT1JfREFURSIKLQlleHBvcnQgSEdFRElUT1IgR0lUX0FVVEhPUl9EQVRFIEdJVF9DT01NSVRURVJfREFURQorCWV4cG9ydCBIR0VESVRPUiBIR01FUkdFIEdJVF9BVVRIT1JfREFURSBHSVRfQ09NTUlUVEVSX0RBVEUKIH0KIAogc2V0dXAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhlY3V0YWJsZSBiaXQnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMTUwLDggKzE1MSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N5bWxpbmsnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJZ2l0IGluaXQgLXEgZ2l0cmVwbyAmJgpAQCAtMTgxLDggKzE4MSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21lcmdlIGNvbmZsaWN0IDEnICcKLQlta2RpciAtcCB0bXAgJiYgY2QgdG1wICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIGhncmVwbyoiICYmCiAKIAkoCiAJaGcgaW5pdCBoZ3JlcG8xICYmCkBAIC0xOTgsNyArMTk3LDcgQEAKIAllY2hvIEMgPiBhZmlsZSAmJgogCWhnIGNpIC1tICJBLT5DIiAmJgogCi0JaGcgbWVyZ2UgLXIxIHx8IHRydWUgJiYKKwloZyBtZXJnZSAtcjEgJiYKIAllY2hvIEMgPiBhZmlsZSAmJgogCWhnIHJlc29sdmUgLW0gYWZpbGUgJiYKIAloZyBjaSAtbSAibWVyZ2UgdG8gQyIKQEAgLTIxNiw4ICsyMTUsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjb25mbGljdCAyJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWhnIGluaXQgaGdyZXBvMSAmJgpAQCAtMjUxLDggKzI0OSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbnZlcmdlZCBtZXJnZScgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAloZyBpbml0IGhncmVwbzEgJiYKQEAgLTI4Nyw4ICsyODQsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdlbmNvZGluZycgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCkBAIC0zMjcsOCArMzIzLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmlsZSByZW1vdmFsJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJKAogCWdpdCBpbml0IC1xIGdpdHJlcG8gJiYKQEAgLTM2Nyw4ICszNjIsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgdGFncycgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCSgKIAlnaXQgaW5pdCAtcSBnaXRyZXBvICYmCkBAIC0zOTQsOCArMzg4LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgYXV0aG9yJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJZm9yIHggaW4gaGcgZ2l0OyBkbwogCQkoCkBAIC00NjEsOCArNDU0LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgYnJhbmNoJyAnCi0JbWtkaXIgLXAgdG1wICYmIGNkIHRtcCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiY2QgLi4gJiYgcm0gLXJmIHRtcCIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiBoZ3JlcG8qIiAmJgogCiAJZm9yIHggaW4gaGcgZ2l0OyBkbwogCQkoCkBAIC00OTgsOCArNDkwLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGcgdGFncycgJwotCW1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyogaGdyZXBvKiIgJiYKIAogCWZvciB4IGluIGhnIGdpdDsgZG8KIAkJKApkaWZmIC0tZ2l0IGEvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLnNoIGIvY29udHJpYi9yZW1vdGUtaGVscGVycy90ZXN0LWhnLnNoCmluZGV4IDhkZTJhYTcuLmY3Y2U4YWEgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvcmVtb3RlLWhlbHBlcnMvdGVzdC1oZy5zaAorKysgYi9jb250cmliL3JlbW90ZS1oZWxwZXJzL3Rlc3QtaGcuc2gKQEAgLTE1LDE0MyArMTUsNjc4IEBACiAJdGVzdF9kb25lCiBmaQogCi1pZiAhICIkUFlUSE9OX1BBVEgiIC1jICdpbXBvcnQgbWVyY3VyaWFsJzsgdGhlbgoraWYgISBweXRob24gLWMgJ2ltcG9ydCBtZXJjdXJpYWwnOyB0aGVuCiAJc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS1oZyB0ZXN0czsgbWVyY3VyaWFsIG5vdCBhdmFpbGFibGUnCiAJdGVzdF9kb25lCiBmaQogCiBjaGVjayAoKSB7Ci0JKGNkICQxICYmCi0JZ2l0IGxvZyAtLWZvcm1hdD0nJXMnIC0xICYmCi0JZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSA+IGFjdHVhbCAmJgotCShlY2hvICQyICYmCi0JZWNobyAicmVmcy9oZWFkcy8kMyIpID4gZXhwZWN0ZWQgJiYKKwllY2hvICQzID4gZXhwZWN0ZWQgJiYKKwlnaXQgLS1naXQtZGlyPSQxLy5naXQgbG9nIC0tZm9ybWF0PSclcycgLTEgJDIgPiBhY3R1YWwKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKIH0KIAorY2hlY2tfYnJhbmNoICgpIHsKKwlpZiBbIC1uICIkMyIgXTsgdGhlbgorCQllY2hvICQzID4gZXhwZWN0ZWQgJiYKKwkJaGcgLVIgJDEgbG9nIC1yICQyIC0tdGVtcGxhdGUgJ3tkZXNjfVxuJyA+IGFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwllbHNlCisJCWhnIC1SICQxIGJyYW5jaGVzID4gb3V0ICYmCisJCSEgZ3JlcCAkMiBvdXQKKwlmaQorfQorCitjaGVja19ib29rbWFyayAoKSB7CisJaWYgWyAtbiAiJDMiIF07IHRoZW4KKwkJZWNobyAkMyA+IGV4cGVjdGVkICYmCisJCWhnIC1SICQxIGxvZyAtciAiYm9va21hcmsoJyQyJykiIC0tdGVtcGxhdGUgJ3tkZXNjfVxuJyA+IGFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwllbHNlCisJCWhnIC1SICQxIGJvb2ttYXJrcyA+IG91dCAmJgorCQkhIGdyZXAgJDIgb3V0CisJZmkKK30KKworY2hlY2tfcHVzaCAoKSB7CisJbG9jYWwgZXhwZWN0ZWRfcmV0PSQxIHJldD0wIHJlZl9yZXQ9MCBJRlM9JzonCisKKwlzaGlmdAorCWdpdCBwdXNoIG9yaWdpbiAiJEAiIDI+IGVycm9yCisJcmV0PSQ/CisJY2F0IGVycm9yCisKKwl3aGlsZSByZWFkIGJyYW5jaCBraW5kCisJZG8KKwkJY2FzZSAiJGtpbmQiIGluCisJCSduZXcnKQorCQkJZ3JlcCAiXiBcKiBcW25ldyBicmFuY2hcXSAqJHticmFuY2h9IC0+ICR7YnJhbmNofSQiIGVycm9yIHx8IHJlZl9yZXQ9MQorCQkJOzsKKwkJJ25vbi1mYXN0LWZvcndhcmQnKQorCQkJZ3JlcCAiXiAhIFxbcmVqZWN0ZWRcXSAqJHticmFuY2h9IC0+ICR7YnJhbmNofSAobm9uLWZhc3QtZm9yd2FyZCkkIiBlcnJvciB8fCByZWZfcmV0PTEKKwkJCTs7CisJCSdmZXRjaC1maXJzdCcpCisJCQlncmVwICJeICEgXFtyZWplY3RlZFxdICoke2JyYW5jaH0gLT4gJHticmFuY2h9IChmZXRjaCBmaXJzdCkkIiBlcnJvciB8fCByZWZfcmV0PTEKKwkJCTs7CisJCSdmb3JjZWQtdXBkYXRlJykKKwkJCWdyZXAgIl4gKyBbYS1mMC05XSpcLlwuXC5bYS1mMC05XSogKiR7YnJhbmNofSAtPiAke2JyYW5jaH0gKGZvcmNlZCB1cGRhdGUpJCIgZXJyb3IgfHwgcmVmX3JldD0xCisJCQk7OworCQknJykKKwkJCWdyZXAgIl4gICBbYS1mMC05XSpcLlwuW2EtZjAtOV0qICoke2JyYW5jaH0gLT4gJHticmFuY2h9JCIgZXJyb3IgfHwgcmVmX3JldD0xCisJCQk7OworCQllc2FjCisJCWxldCAncmVmX3JldCcgJiYgZWNobyAibWF0Y2ggZm9yICckYnJhbmNoJyBmYWlsZWQiICYmIGJyZWFrCisJZG9uZQorCisJaWYgbGV0ICdleHBlY3RlZF9yZXQgIT0gcmV0IHx8IHJlZl9yZXQnCisJdGhlbgorCQlyZXR1cm4gMQorCWZpCisKKwlyZXR1cm4gMAorfQorCiBzZXR1cCAoKSB7CiAJKAogCWVjaG8gIlt1aV0iCiAJZWNobyAidXNlcm5hbWUgPSBIIEcgV2VsbHMgPHdlbGxzQGV4YW1wbGUuY29tPiIKLQkpID4+ICIkSE9NRSIvLmhncmMKKwllY2hvICJbZXh0ZW5zaW9uc10iCisJZWNobyAibXEgPSIKKwkpID4+ICIkSE9NRSIvLmhncmMgJiYKKworCUdJVF9BVVRIT1JfREFURT0iMjAwNy0wMS0wMSAwMDowMDowMCArMDIzMCIgJiYKKwlHSVRfQ09NTUlUVEVSX0RBVEU9IiRHSVRfQVVUSE9SX0RBVEUiICYmCisJZXhwb3J0IEdJVF9DT01NSVRURVJfREFURSBHSVRfQVVUSE9SX0RBVEUKIH0KIAogc2V0dXAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZycgJwotICB0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKIAotICAoCi0gIGhnIGluaXQgaGdyZXBvICYmCi0gIGNkIGhncmVwbyAmJgotICBlY2hvIHplcm8gPiBjb250ZW50ICYmCi0gIGhnIGFkZCBjb250ZW50ICYmCi0gIGhnIGNvbW1pdCAtbSB6ZXJvCi0gICkgJiYKKwkoCisJaGcgaW5pdCBoZ3JlcG8gJiYKKwljZCBoZ3JlcG8gJiYKKwllY2hvIHplcm8gPiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gemVybworCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBjaGVjayBnaXRyZXBvIHplcm8gbWFzdGVyCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJY2hlY2sgZ2l0cmVwbyBIRUFEIHplcm8KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGJyYW5jaGVzJyAnCi0gIHRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgogCi0gICgKLSAgY2QgaGdyZXBvICYmCi0gIGhnIGJyYW5jaCBuZXh0ICYmCi0gIGVjaG8gbmV4dCA+IGNvbnRlbnQgJiYKLSAgaGcgY29tbWl0IC1tIG5leHQKLSAgKSAmJgorCSgKKwljZCBoZ3JlcG8gJiYKKwloZyBicmFuY2ggbmV4dCAmJgorCWVjaG8gbmV4dCA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gbmV4dAorCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBjaGVjayBnaXRyZXBvIG5leHQgbmV4dCAmJgotCi0gIChjZCBoZ3JlcG8gJiYgaGcgY2hlY2tvdXQgZGVmYXVsdCkgJiYKLQotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbzIgJiYKLSAgY2hlY2sgZ2l0cmVwbzIgemVybyBtYXN0ZXIKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIG9yaWdpbi9icmFuY2hlcy9uZXh0IG5leHQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGJvb2ttYXJrcycgJwotICB0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKIAotICAoCi0gIGNkIGhncmVwbyAmJgotICBoZyBib29rbWFyayBmZWF0dXJlLWEgJiYKLSAgZWNobyBmZWF0dXJlLWEgPiBjb250ZW50ICYmCi0gIGhnIGNvbW1pdCAtbSBmZWF0dXJlLWEKLSAgKSAmJgorCSgKKwljZCBoZ3JlcG8gJiYKKwloZyBjaGVja291dCBkZWZhdWx0ICYmCisJaGcgYm9va21hcmsgZmVhdHVyZS1hICYmCisJZWNobyBmZWF0dXJlLWEgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIGZlYXR1cmUtYQorCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBjaGVjayBnaXRyZXBvIGZlYXR1cmUtYSBmZWF0dXJlLWEKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnY2xvbmluZyB3aXRoIGRldGFjaGVkIGhlYWQnICcKLSAgdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCi0KLSAgKAotICBjZCBoZ3JlcG8gJiYKLSAgaGcgdXBkYXRlIC1yIDAKLSAgKSAmJgotCi0gIGdpdCBjbG9uZSAiaGc6OiRQV0QvaGdyZXBvIiBnaXRyZXBvICYmCi0gIGNoZWNrIGdpdHJlcG8gemVybyBtYXN0ZXIKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIG9yaWdpbi9mZWF0dXJlLWEgZmVhdHVyZS1hCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZSBib29rbWFyaycgJwotICB0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKIAotICAoCi0gIGNkIGhncmVwbyAmJgotICBoZyBib29rbWFyayBkZXZlbAotICApICYmCisJKAorCWNkIGhncmVwbyAmJgorCWhnIGJvb2ttYXJrIGRldmVsCisJKSAmJgogCi0gICgKLSAgZ2l0IGNsb25lICJoZzo6JFBXRC9oZ3JlcG8iIGdpdHJlcG8gJiYKLSAgY2QgZ2l0cmVwbyAmJgotICBnaXQgY2hlY2tvdXQgZGV2ZWwgJiYKLSAgZWNobyBkZXZlbCA+IGNvbnRlbnQgJiYKLSAgZ2l0IGNvbW1pdCAtYSAtbSBkZXZlbCAmJgotICBnaXQgcHVzaAotICApICYmCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2hlY2tvdXQgLS1xdWlldCBkZXZlbCAmJgorCWVjaG8gZGV2ZWwgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBkZXZlbCAmJgorCWdpdCBwdXNoIC0tcXVpZXQKKwkpICYmCiAKLSAgaGcgLVIgaGdyZXBvIGJvb2ttYXJrcyB8IGVncmVwICJkZXZlbFsJIF0rMzoiCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGRldmVsIGRldmVsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25ldyBib29rbWFyaycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2hlY2tvdXQgLS1xdWlldCAtYiBmZWF0dXJlLWIgJiYKKwllY2hvIGZlYXR1cmUtYiA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGZlYXR1cmUtYiAmJgorCWdpdCBwdXNoIC0tcXVpZXQgb3JpZ2luIGZlYXR1cmUtYgorCSkgJiYKKworCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBmZWF0dXJlLWIgZmVhdHVyZS1iCisnCisKKyMgY2xlYW51cCBwcmV2aW91cyBzdHVmZgorcm0gLXJmIGhncmVwbworCiBhdXRob3JfdGVzdCAoKSB7Ci0gIGVjaG8gJDEgPj4gY29udGVudCAmJgotICBoZyBjb21taXQgLXUgIiQyIiAtbSAiYWRkICQxIiAmJgotICBlY2hvICIkMyIgPj4gLi4vZXhwZWN0ZWQKKwllY2hvICQxID4+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLXUgIiQyIiAtbSAiYWRkICQxIiAmJgorCWVjaG8gIiQzIiA+PiAuLi9leHBlY3RlZAogfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhdXRob3JzJyAnCi0gIG1rZGlyIC1wIHRtcCAmJiBjZCB0bXAgJiYKLSAgdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvIiAmJgogCi0gICgKLSAgaGcgaW5pdCBoZ3JlcG8gJiYKLSAgY2QgaGdyZXBvICYmCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCiAKLSAgdG91Y2ggY29udGVudCAmJgotICBoZyBhZGQgY29udGVudCAmJgorCXRvdWNoIGNvbnRlbnQgJiYKKwloZyBhZGQgY29udGVudCAmJgogCi0gIGF1dGhvcl90ZXN0IGFscGhhICIiICJIIEcgV2VsbHMgPHdlbGxzQGV4YW1wbGUuY29tPiIgJiYKLSAgYXV0aG9yX3Rlc3QgYmV0YSAidGVzdCIgInRlc3QgPHVua25vd24+IiAmJgotICBhdXRob3JfdGVzdCBiZXRhICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiAoY29tbWVudCkiICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKLSAgYXV0aG9yX3Rlc3QgZ2FtbWEgIjx0ZXN0QGV4YW1wbGUuY29tPiIgIlVua25vd24gPHRlc3RAZXhhbXBsZS5jb20+IiAmJgotICBhdXRob3JfdGVzdCBkZWx0YSAibmFtZTx0ZXN0QGV4YW1wbGUuY29tPiIgIm5hbWUgPHRlc3RAZXhhbXBsZS5jb20+IiAmJgotICBhdXRob3JfdGVzdCBlcHNpbG9uICJuYW1lIDx0ZXN0QGV4YW1wbGUuY29tIiAibmFtZSA8dGVzdEBleGFtcGxlLmNvbT4iICYmCi0gIGF1dGhvcl90ZXN0IHpldGEgIiB0ZXN0ICIgInRlc3QgPHVua25vd24+IiAmJgotICBhdXRob3JfdGVzdCBldGEgInRlc3QgPCB0ZXN0QGV4YW1wbGUuY29tID4iICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKLSAgYXV0aG9yX3Rlc3QgdGhldGEgInRlc3QgPnRlc3RAZXhhbXBsZS5jb20+IiAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4iICYmCi0gIGF1dGhvcl90ZXN0IGlvdGEgInRlc3QgPCB0ZXN0IDxhdD4gZXhhbXBsZSA8ZG90PiBjb20+IiAidGVzdCA8dW5rbm93bj4iICYmCi0gIGF1dGhvcl90ZXN0IGthcHBhICJ0ZXN0QGV4YW1wbGUuY29tIiAiVW5rbm93biA8dGVzdEBleGFtcGxlLmNvbT4iCi0gICkgJiYKKwk+IC4uL2V4cGVjdGVkICYmCisJYXV0aG9yX3Rlc3QgYWxwaGEgIiIgIkggRyBXZWxscyA8d2VsbHNAZXhhbXBsZS5jb20+IiAmJgorCWF1dGhvcl90ZXN0IGJldGEgInRlc3QiICJ0ZXN0IDx1bmtub3duPiIgJiYKKwlhdXRob3JfdGVzdCBiZXRhICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiAoY29tbWVudCkiICJ0ZXN0IDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKwlhdXRob3JfdGVzdCBnYW1tYSAiPHRlc3RAZXhhbXBsZS5jb20+IiAiVW5rbm93biA8dGVzdEBleGFtcGxlLmNvbT4iICYmCisJYXV0aG9yX3Rlc3QgZGVsdGEgIm5hbWU8dGVzdEBleGFtcGxlLmNvbT4iICJuYW1lIDx0ZXN0QGV4YW1wbGUuY29tPiIgJiYKKwlhdXRob3JfdGVzdCBlcHNpbG9uICJuYW1lIDx0ZXN0QGV4YW1wbGUuY29tIiAibmFtZSA8dGVzdEBleGFtcGxlLmNvbT4iICYmCisJYXV0aG9yX3Rlc3QgemV0YSAiIHRlc3QgIiAidGVzdCA8dW5rbm93bj4iICYmCisJYXV0aG9yX3Rlc3QgZXRhICJ0ZXN0IDwgdGVzdEBleGFtcGxlLmNvbSA+IiAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4iICYmCisJYXV0aG9yX3Rlc3QgdGhldGEgInRlc3QgPnRlc3RAZXhhbXBsZS5jb20+IiAidGVzdCA8dGVzdEBleGFtcGxlLmNvbT4iICYmCisJYXV0aG9yX3Rlc3QgaW90YSAidGVzdCA8IHRlc3QgPGF0PiBleGFtcGxlIDxkb3Q+IGNvbT4iICJ0ZXN0IDx1bmtub3duPiIgJiYKKwlhdXRob3JfdGVzdCBrYXBwYSAidGVzdEBleGFtcGxlLmNvbSIgIlVua25vd24gPHRlc3RAZXhhbXBsZS5jb20+IgorCSkgJiYKIAotICBnaXQgY2xvbmUgImhnOjokUFdEL2hncmVwbyIgZ2l0cmVwbyAmJgotICBnaXQgLS1naXQtZGlyPWdpdHJlcG8vLmdpdCBsb2cgLS1yZXZlcnNlIC0tZm9ybWF0PSIlYW4gPCVhZT4iID4gYWN0dWFsICYmCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJZ2l0IC0tZ2l0LWRpcj1naXRyZXBvLy5naXQgbG9nIC0tcmV2ZXJzZSAtLWZvcm1hdD0iJWFuIDwlYWU+IiA+IGFjdHVhbCAmJgogCi0gIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdHJpcCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisKKwllY2hvIG9uZSA+PiBjb250ZW50ICYmCisJaGcgYWRkIGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gb25lICYmCisKKwllY2hvIHR3byA+PiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHR3bworCSkgJiYKKworCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCisJKAorCWNkIGhncmVwbyAmJgorCWhnIHN0cmlwIDEgJiYKKworCWVjaG8gdGhyZWUgPj4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSB0aHJlZSAmJgorCisJZWNobyBmb3VyID4+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gZm91cgorCSkgJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZ2l0IGZldGNoICYmCisJZ2l0IGxvZyAtLWZvcm1hdD0iJXMiIG9yaWdpbi9tYXN0ZXIgPiAuLi9hY3R1YWwKKwkpICYmCisKKwloZyAtUiBoZ3JlcG8gbG9nIC0tdGVtcGxhdGUgIntkZXNjfVxuIiA+IGV4cGVjdGVkICYmCisJdGVzdF9jbXAgYWN0dWFsIGV4cGVjdGVkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBwdXNoIHdpdGggbWFzdGVyIGJvb2ttYXJrJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgaGdyZXBvIGdpdHJlcG8qIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisJZWNobyB6ZXJvID4gY29udGVudCAmJgorCWhnIGFkZCBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHplcm8gJiYKKwloZyBib29rbWFyayBtYXN0ZXIgJiYKKwllY2hvIG9uZSA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gb25lCisJKSAmJgorCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwllY2hvIHR3byA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIHR3byAmJgorCWdpdCBwdXNoCisJKSAmJgorCisJY2hlY2tfYnJhbmNoIGhncmVwbyBkZWZhdWx0IHR3bworJworCitjYXQgPiBleHBlY3RlZCA8PEVPRgorY2hhbmdlc2V0OiAgIDA6NmUyMTI2NDg5ZDNkCit0YWc6ICAgICAgICAgdGlwCit1c2VyOiAgICAgICAgQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK2RhdGU6ICAgICAgICBNb24gSmFuIDAxIDAwOjAwOjAwIDIwMDcgKzAyMzAKK3N1bW1hcnk6ICAgICBvbmUKKworRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBwdXNoIGZyb20gbWFzdGVyIGJyYW5jaCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvKiIgJiYKKworCWhnIGluaXQgaGdyZXBvICYmCisKKwkoCisJZ2l0IGluaXQgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgcmVtb3RlIGFkZCBvcmlnaW4gImhnOjouLi9oZ3JlcG8iICYmCisJZWNobyBvbmUgPiBjb250ZW50ICYmCisJZ2l0IGFkZCBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBvbmUgJiYKKwlnaXQgcHVzaCBvcmlnaW4gbWFzdGVyCisJKSAmJgorCisJaGcgLVIgaGdyZXBvIGxvZyA+IGFjdHVhbCAmJgorCWNhdCBhY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwgJiYKKworCWNoZWNrX2JyYW5jaCBoZ3JlcG8gZGVmYXVsdCBvbmUKKycKKworR0lUX1JFTU9URV9IR19URVNUX1JFTU9URT0xCitleHBvcnQgR0lUX1JFTU9URV9IR19URVNUX1JFTU9URQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgY2xvbmluZycgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGdpdHJlcG8qIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisJZWNobyB6ZXJvID4gY29udGVudCAmJgorCWhnIGFkZCBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHplcm8KKwkpICYmCisKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljaGVjayBnaXRyZXBvIEhFQUQgemVybworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgdXBkYXRlIGJvb2ttYXJrJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKwkoCisJY2QgaGdyZXBvICYmCisJaGcgYm9va21hcmsgZGV2ZWwKKwkpICYmCisKKwkoCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWdpdCBjaGVja291dCAtLXF1aWV0IGRldmVsICYmCisJZWNobyBkZXZlbCA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGRldmVsICYmCisJZ2l0IHB1c2ggLS1xdWlldAorCSkgJiYKKworCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBkZXZlbCBkZXZlbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgbmV3IGJvb2ttYXJrJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKwkoCisJZ2l0IGNsb25lICJoZzo6aGdyZXBvIiBnaXRyZXBvICYmCisJY2QgZ2l0cmVwbyAmJgorCWdpdCBjaGVja291dCAtLXF1aWV0IC1iIGZlYXR1cmUtYiAmJgorCWVjaG8gZmVhdHVyZS1iID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gZmVhdHVyZS1iICYmCisJZ2l0IHB1c2ggLS1xdWlldCBvcmlnaW4gZmVhdHVyZS1iCisJKSAmJgorCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGZlYXR1cmUtYiBmZWF0dXJlLWIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3RlIHB1c2ggZGl2ZXJnZWQnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKworCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCisJKAorCWNkIGhncmVwbyAmJgorCWhnIGNoZWNrb3V0IGRlZmF1bHQgJiYKKwllY2hvIGJ1bXAgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIGJ1bXAKKwkpICYmCisKKwkoCisJY2QgZ2l0cmVwbyAmJgorCWVjaG8gZGl2ZXJnZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1hIC1tIGRpdmVyZ2VkICYmCisJY2hlY2tfcHVzaCAxIDw8LUVPRgorCW1hc3Rlcjpub24tZmFzdC1mb3J3YXJkCisJRU9GCisJKSAmJgorCisJY2hlY2tfYnJhbmNoIGhncmVwbyBkZWZhdWx0IGJ1bXAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3RlIHVwZGF0ZSBib29rbWFyayBkaXZlcmdlJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgZ2l0cmVwbyoiICYmCisKKwkoCisJY2QgaGdyZXBvICYmCisJaGcgY2hlY2tvdXQgdGlwXiAmJgorCWhnIGJvb2ttYXJrIGRpdmVyZ2UKKwkpICYmCisKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKworCSgKKwljZCBoZ3JlcG8gJiYKKwllY2hvICJidW1wIGJvb2ttYXJrIiA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gImJ1bXAgYm9va21hcmsiCisJKSAmJgorCisJKAorCWNkIGdpdHJlcG8gJiYKKwlnaXQgY2hlY2tvdXQgLS1xdWlldCBkaXZlcmdlICYmCisJZWNobyBkaXZlcmdlID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLWEgLW0gZGl2ZXJnZSAmJgorCWNoZWNrX3B1c2ggMSA8PC1FT0YKKwlkaXZlcmdlOmZldGNoLWZpcnN0CisJRU9GCisJKSAmJgorCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGRpdmVyZ2UgImJ1bXAgYm9va21hcmsiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW90ZSBuZXcgYm9va21hcmsgbXVsdGlwbGUgYnJhbmNoIGhlYWQnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBnaXRyZXBvKiIgJiYKKworCSgKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKwljZCBnaXRyZXBvICYmCisJZ2l0IGNoZWNrb3V0IC0tcXVpZXQgLWIgZmVhdHVyZS1jIEhFQUReICYmCisJZWNobyBmZWF0dXJlLWMgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBmZWF0dXJlLWMgJiYKKwlnaXQgcHVzaCAtLXF1aWV0IG9yaWdpbiBmZWF0dXJlLWMKKwkpICYmCisKKwljaGVja19ib29rbWFyayBoZ3JlcG8gZmVhdHVyZS1jIGZlYXR1cmUtYworJworCisjIGNsZWFudXAgcHJldmlvdXMgc3R1ZmYKK3JtIC1yZiBoZ3JlcG8KKworc2V0dXBfYmlnX3B1c2ggKCkgeworCSgKKwloZyBpbml0IGhncmVwbyAmJgorCWNkIGhncmVwbyAmJgorCWVjaG8gemVybyA+IGNvbnRlbnQgJiYKKwloZyBhZGQgY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSB6ZXJvICYmCisJaGcgYm9va21hcmsgYmFkX2JtYXJrMSAmJgorCWVjaG8gb25lID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSBvbmUgJiYKKwloZyBib29rbWFyayBiYWRfYm1hcmsyICYmCisJaGcgYm9va21hcmsgZ29vZF9ibWFyayAmJgorCWhnIGJvb2ttYXJrIC1pIGdvb2RfYm1hcmsgJiYKKwloZyAtcSBicmFuY2ggZ29vZF9icmFuY2ggJiYKKwllY2hvICJnb29kIGJyYW5jaCIgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tICJnb29kIGJyYW5jaCIgJiYKKwloZyAtcSBicmFuY2ggYmFkX2JyYW5jaCAmJgorCWVjaG8gImJhZCBicmFuY2giID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSAiYmFkIGJyYW5jaCIKKwkpICYmCisKKwlnaXQgY2xvbmUgImhnOjpoZ3JlcG8iIGdpdHJlcG8gJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZWNobyB0d28gPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSB0d28gJiYKKworCWdpdCBjaGVja291dCAtcSBnb29kX2JtYXJrICYmCisJZWNobyB0aHJlZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIHRocmVlICYmCisKKwlnaXQgY2hlY2tvdXQgLXEgYmFkX2JtYXJrMSAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwllY2hvIGZvdXIgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBmb3VyICYmCisKKwlnaXQgY2hlY2tvdXQgLXEgYmFkX2JtYXJrMiAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwllY2hvIGZpdmUgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBmaXZlICYmCisKKwlnaXQgY2hlY2tvdXQgLXEgLWIgbmV3X2JtYXJrIG1hc3RlciAmJgorCWVjaG8gc2l4ID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gc2l4ICYmCisKKwlnaXQgY2hlY2tvdXQgLXEgYnJhbmNoZXMvZ29vZF9icmFuY2ggJiYKKwllY2hvIHNldmVuID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gc2V2ZW4gJiYKKwllY2hvIGVpZ2h0ID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gZWlnaHQgJiYKKworCWdpdCBjaGVja291dCAtcSBicmFuY2hlcy9iYWRfYnJhbmNoICYmCisJZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgorCWVjaG8gbmluZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIG5pbmUgJiYKKworCWdpdCBjaGVja291dCAtcSAtYiBicmFuY2hlcy9uZXdfYnJhbmNoIG1hc3RlciAmJgorCWVjaG8gdGVuID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gdGVuCisJKQorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgYmlnIHB1c2gnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBoZ3JlcG8gZ2l0cmVwbyoiICYmCisKKwlzZXR1cF9iaWdfcHVzaAorCisJKAorCWNkIGdpdHJlcG8gJiYKKworCWNoZWNrX3B1c2ggMSAtLWFsbCA8PC1FT0YKKwltYXN0ZXIKKwlnb29kX2JtYXJrCisJYnJhbmNoZXMvZ29vZF9icmFuY2gKKwluZXdfYm1hcms6bmV3CisJYnJhbmNoZXMvbmV3X2JyYW5jaDpuZXcKKwliYWRfYm1hcmsxOm5vbi1mYXN0LWZvcndhcmQKKwliYWRfYm1hcmsyOm5vbi1mYXN0LWZvcndhcmQKKwlicmFuY2hlcy9iYWRfYnJhbmNoOm5vbi1mYXN0LWZvcndhcmQKKwlFT0YKKwkpICYmCisKKwljaGVja19icmFuY2ggaGdyZXBvIGRlZmF1bHQgb25lICYmCisJY2hlY2tfYnJhbmNoIGhncmVwbyBnb29kX2JyYW5jaCAiZ29vZCBicmFuY2giICYmCisJY2hlY2tfYnJhbmNoIGhncmVwbyBiYWRfYnJhbmNoICJiYWQgYnJhbmNoIiAmJgorCWNoZWNrX2JyYW5jaCBoZ3JlcG8gbmV3X2JyYW5jaCAnJyAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBnb29kX2JtYXJrIG9uZSAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBiYWRfYm1hcmsxIG9uZSAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBiYWRfYm1hcmsyIG9uZSAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBuZXdfYm1hcmsgJycKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3RlIGJpZyBwdXNoIGZldGNoIGZpcnN0JyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgaGdyZXBvIGdpdHJlcG8qIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisJZWNobyB6ZXJvID4gY29udGVudCAmJgorCWhnIGFkZCBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHplcm8gJiYKKwloZyBib29rbWFyayBiYWRfYm1hcmsgJiYKKwloZyBib29rbWFyayBnb29kX2JtYXJrICYmCisJaGcgYm9va21hcmsgLWkgZ29vZF9ibWFyayAmJgorCWhnIC1xIGJyYW5jaCBnb29kX2JyYW5jaCAmJgorCWVjaG8gImdvb2QgYnJhbmNoIiA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gImdvb2QgYnJhbmNoIiAmJgorCWhnIC1xIGJyYW5jaCBiYWRfYnJhbmNoICYmCisJZWNobyAiYmFkIGJyYW5jaCIgPiBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tICJiYWQgYnJhbmNoIgorCSkgJiYKKworCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCisJKAorCWNkIGhncmVwbyAmJgorCWhnIGJvb2ttYXJrIC1mIGJhZF9ibWFyayAmJgorCWVjaG8gdXBkYXRlX2JtYXJrID4gY29udGVudCAmJgorCWhnIGNvbW1pdCAtbSAidXBkYXRlIGJtYXJrIgorCSkgJiYKKworCSgKKwljZCBnaXRyZXBvICYmCisJZWNobyB0d28gPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSB0d28gJiYKKworCWdpdCBjaGVja291dCAtcSBnb29kX2JtYXJrICYmCisJZWNobyB0aHJlZSA+IGNvbnRlbnQgJiYKKwlnaXQgY29tbWl0IC1xIC1hIC1tIHRocmVlICYmCisKKwlnaXQgY2hlY2tvdXQgLXEgYmFkX2JtYXJrICYmCisJZWNobyBmb3VyID4gY29udGVudCAmJgorCWdpdCBjb21taXQgLXEgLWEgLW0gZm91ciAmJgorCisJZ2l0IGNoZWNrb3V0IC1xIGJyYW5jaGVzL2JhZF9icmFuY2ggJiYKKwllY2hvIGZpdmUgPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtcSAtYSAtbSBmaXZlICYmCisKKwljaGVja19wdXNoIDEgLS1hbGwgPDwtRU9GCisJbWFzdGVyCisJZ29vZF9ibWFyaworCW5ld19ibWFyazpuZXcKKwluZXdfYnJhbmNoOm5ldworCWJhZF9ibWFyazpmZXRjaC1maXJzdAorCWJyYW5jaGVzL2JhZF9icmFuY2g6ZmVzdGNoLWZpcnN0CisJRU9GCisKKwlnaXQgZmV0Y2ggJiYKKworCWNoZWNrX3B1c2ggMSAtLWFsbCA8PC1FT0YKKwltYXN0ZXIKKwlnb29kX2JtYXJrCisJYmFkX2JtYXJrOm5vbi1mYXN0LWZvcndhcmQKKwlicmFuY2hlcy9iYWRfYnJhbmNoOm5vbi1mYXN0LWZvcndhcmQKKwlFT0YKKwkpCisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3JlbW90ZSBiaWcgcHVzaCBmb3JjZScgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLXJmIGhncmVwbyBnaXRyZXBvKiIgJiYKKworCXNldHVwX2JpZ19wdXNoCisKKwkoCisJY2QgZ2l0cmVwbyAmJgorCisJY2hlY2tfcHVzaCAwIC0tZm9yY2UgLS1hbGwgPDwtRU9GCisJbWFzdGVyCisJZ29vZF9ibWFyaworCWJyYW5jaGVzL2dvb2RfYnJhbmNoCisJbmV3X2JtYXJrOm5ldworCWJyYW5jaGVzL25ld19icmFuY2g6bmV3CisJYmFkX2JtYXJrMTpmb3JjZWQtdXBkYXRlCisJYmFkX2JtYXJrMjpmb3JjZWQtdXBkYXRlCisJYnJhbmNoZXMvYmFkX2JyYW5jaDpmb3JjZWQtdXBkYXRlCisJRU9GCisJKSAmJgorCisJY2hlY2tfYnJhbmNoIGhncmVwbyBkZWZhdWx0IHNpeCAmJgorCWNoZWNrX2JyYW5jaCBoZ3JlcG8gZ29vZF9icmFuY2ggZWlnaHQgJiYKKwljaGVja19icmFuY2ggaGdyZXBvIGJhZF9icmFuY2ggbmluZSAmJgorCWNoZWNrX2JyYW5jaCBoZ3JlcG8gbmV3X2JyYW5jaCB0ZW4gJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gZ29vZF9ibWFyayB0aHJlZSAmJgorCWNoZWNrX2Jvb2ttYXJrIGhncmVwbyBiYWRfYm1hcmsxIGZvdXIgJiYKKwljaGVja19ib29rbWFyayBoZ3JlcG8gYmFkX2JtYXJrMiBmaXZlICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIG5ld19ibWFyayBzaXgKKycKKwordGVzdF9leHBlY3RfZmFpbHVyZSAncmVtb3RlIGJpZyBwdXNoIGRyeS1ydW4nICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBoZ3JlcG8gZ2l0cmVwbyoiICYmCisKKwlzZXR1cF9iaWdfcHVzaAorCisJKAorCWNkIGdpdHJlcG8gJiYKKworCWNoZWNrX3B1c2ggMCAtLWRyeS1ydW4gLS1hbGwgPDwtRU9GCisJbWFzdGVyCisJZ29vZF9ibWFyaworCWJyYW5jaGVzL2dvb2RfYnJhbmNoCisJbmV3X2JtYXJrOm5ldworCWJyYW5jaGVzL25ld19icmFuY2g6bmV3CisJYmFkX2JtYXJrMTpub24tZmFzdC1mb3J3YXJkCisJYmFkX2JtYXJrMjpub24tZmFzdC1mb3J3YXJkCisJYnJhbmNoZXMvYmFkX2JyYW5jaDpub24tZmFzdC1mb3J3YXJkCisJRU9GCisKKwljaGVja19wdXNoIDAgLS1kcnktcnVuIG1hc3RlciBnb29kX2JtYXJrIG5ld19ibWFyayBicmFuY2hlcy9nb29kX2JyYW5jaCBicmFuY2hlcy9uZXdfYnJhbmNoIDw8LUVPRgorCW1hc3RlcgorCWdvb2RfYm1hcmsKKwlicmFuY2hlcy9nb29kX2JyYW5jaAorCW5ld19ibWFyazpuZXcKKwlicmFuY2hlcy9uZXdfYnJhbmNoOm5ldworCUVPRgorCSkgJiYKKworCWNoZWNrX2JyYW5jaCBoZ3JlcG8gZGVmYXVsdCBvbmUgJiYKKwljaGVja19icmFuY2ggaGdyZXBvIGdvb2RfYnJhbmNoICJnb29kIGJyYW5jaCIgJiYKKwljaGVja19icmFuY2ggaGdyZXBvIGJhZF9icmFuY2ggImJhZCBicmFuY2giICYmCisJY2hlY2tfYnJhbmNoIGhncmVwbyBuZXdfYnJhbmNoICcnICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGdvb2RfYm1hcmsgb25lICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGJhZF9ibWFyazEgb25lICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIGJhZF9ibWFyazIgb25lICYmCisJY2hlY2tfYm9va21hcmsgaGdyZXBvIG5ld19ibWFyayAnJworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgZG91YmxlIGZhaWxlZCBwdXNoJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgaGdyZXBvIGdpdHJlcG8qIiAmJgorCisJKAorCWhnIGluaXQgaGdyZXBvICYmCisJY2QgaGdyZXBvICYmCisJZWNobyB6ZXJvID4gY29udGVudCAmJgorCWhnIGFkZCBjb250ZW50ICYmCisJaGcgY29tbWl0IC1tIHplcm8gJiYKKwllY2hvIG9uZSA+IGNvbnRlbnQgJiYKKwloZyBjb21taXQgLW0gb25lCisJKSAmJgorCisJKAorCWdpdCBjbG9uZSAiaGc6OmhncmVwbyIgZ2l0cmVwbyAmJgorCWNkIGdpdHJlcG8gJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCisJZWNobyB0d28gPiBjb250ZW50ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSB0d28gJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHB1c2ggJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IHB1c2gKKwkpCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9zdWJ0cmVlL01ha2VmaWxlIGIvY29udHJpYi9zdWJ0cmVlL01ha2VmaWxlCmluZGV4IGI1MDc1MDUuLjQzNWIyZGUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc3VidHJlZS9NYWtlZmlsZQorKysgYi9jb250cmliL3N1YnRyZWUvTWFrZWZpbGUKQEAgLTMwLDYgKzMwLDcgQEAKIGRvYzogJChHSVRfU1VCVFJFRV9ET0MpCiAKIGluc3RhbGw6ICQoR0lUX1NVQlRSRUUpCisJJChJTlNUQUxMKSAtZCAtbSA3NTUgJChERVNURElSKSQobGliZXhlY2RpcikKIAkkKElOU1RBTEwpIC1tIDc1NSAkKEdJVF9TVUJUUkVFKSAkKERFU1RESVIpJChsaWJleGVjZGlyKQogCiBpbnN0YWxsLWRvYzogaW5zdGFsbC1tYW4KZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS5zaCBiL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS5zaAppbmRleCA1MWFlOTMyLi43ZDdhZjAzIDEwMDc1NQotLS0gYS9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUuc2gKKysrIGIvY29udHJpYi9zdWJ0cmVlL2dpdC1zdWJ0cmVlLnNoCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS50eHQgYi9jb250cmliL3N1YnRyZWUvZ2l0LXN1YnRyZWUudHh0CmluZGV4IDdiYTg1M2UuLmUwOTU3ZWUgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvc3VidHJlZS9naXQtc3VidHJlZS50eHQKKysrIGIvY29udHJpYi9zdWJ0cmVlL2dpdC1zdWJ0cmVlLnR4dApAQCAtMjcwLDcgKzI3MCw3IEBACiBuYW1lCiAKIFlvdSBjYW4gb21pdCB0aGUgLS1zcXVhc2ggZmxhZywgYnV0IGRvaW5nIHNvIHdpbGwgaW5jcmVhc2UgdGhlIG51bWJlcgotb2YgY29tbWl0cyB0aGF0IGFyZSBpbmNsZHVlZCBpbiB5b3VyIGxvY2FsIHJlcG9zaXRvcnkuCitvZiBjb21taXRzIHRoYXQgYXJlIGluY2x1ZGVkIGluIHlvdXIgbG9jYWwgcmVwb3NpdG9yeS4KIAogV2Ugbm93IGhhdmUgYSB+L2dpdC1leHRlbnNpb25zL2dpdC1zdWJ0cmVlIGRpcmVjdG9yeSBjb250YWluaW5nIGNvZGUKIGZyb20gdGhlIG1hc3RlciBicmFuY2ggb2YgZ2l0Oi8vZ2l0aHViLmNvbS9hcGVud2Fyci9naXQtc3VidHJlZS5naXQKZGlmZiAtLWdpdCBhL2NvbnRyaWIvc3VidHJlZS90L3Q3OTAwLXN1YnRyZWUuc2ggYi9jb250cmliL3N1YnRyZWUvdC90NzkwMC1zdWJ0cmVlLnNoCmluZGV4IGIwZjg1MzYuLjY2Y2U0YjAgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvc3VidHJlZS90L3Q3OTAwLXN1YnRyZWUuc2gKKysrIGIvY29udHJpYi9zdWJ0cmVlL3QvdDc5MDAtc3VidHJlZS5zaApAQCAtMTgyLDkgKzE4Miw5IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdDaGVjayB0aGF0IHByZWZpeCBhcmd1bWVudCBpcyByZXF1aXJlZCBmb3Igc3BsaXQnICcKICAgICAgICAgZWNobyAiWW91IG11c3QgcHJvdmlkZSB0aGUgLS1wcmVmaXggb3B0aW9uLiIgPiBleHBlY3RlZCAmJgogICAgICAgICB0ZXN0X211c3RfZmFpbCBnaXQgc3VidHJlZSBzcGxpdCA+IGFjdHVhbCAyPiYxICYmCi0gICAgICAgIHRlc3RfZGVidWcgImVjaG8gLW4gZXhwZWN0ZWQ6ICIgJiYKKwl0ZXN0X2RlYnVnICJwcmludGYgJyInIidleHBlY3RlZDogJyInIiciICYmCiAgICAgICAgIHRlc3RfZGVidWcgImNhdCBleHBlY3RlZCIgJiYKLSAgICAgICAgdGVzdF9kZWJ1ZyAiZWNobyAtbiBhY3R1YWw6ICIgJiYKKwl0ZXN0X2RlYnVnICJwcmludGYgJyInIidhY3R1YWw6ICciJyInIiAmJgogICAgICAgICB0ZXN0X2RlYnVnICJjYXQgYWN0dWFsIiAmJgogICAgICAgICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwgJiYKICAgICAgICAgcm0gLWYgZXhwZWN0ZWQgYWN0dWFsCkBAIC0xOTMsOSArMTkzLDkgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0NoZWNrIHRoYXQgdGhlIDxwcmVmaXg+IGV4aXN0cyBmb3IgYSBzcGxpdCcgJwogICAgICAgICBlY2hvICInIiciJ25vbi1leGlzdGVudC1kaXJlY3RvcnknIiciJyIgZG9lcyBub3QgZXhpc3RcOyB1c2UgIiciJyInZ2l0IHN1YnRyZWUgYWRkJyInIiciID4gZXhwZWN0ZWQgJiYKICAgICAgICAgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1YnRyZWUgc3BsaXQgLS1wcmVmaXg9bm9uLWV4aXN0ZW50LWRpcmVjdG9yeSA+IGFjdHVhbCAyPiYxICYmCi0gICAgICAgIHRlc3RfZGVidWcgImVjaG8gLW4gZXhwZWN0ZWQ6ICIgJiYKKwl0ZXN0X2RlYnVnICJwcmludGYgJyInIidleHBlY3RlZDogJyInIiciICYmCiAgICAgICAgIHRlc3RfZGVidWcgImNhdCBleHBlY3RlZCIgJiYKLSAgICAgICAgdGVzdF9kZWJ1ZyAiZWNobyAtbiBhY3R1YWw6ICIgJiYKKwl0ZXN0X2RlYnVnICJwcmludGYgJyInIidhY3R1YWw6ICciJyInIiAmJgogICAgICAgICB0ZXN0X2RlYnVnICJjYXQgYWN0dWFsIiAmJgogICAgICAgICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICMgICAgICAgIHJtIC1mIGV4cGVjdGVkIGFjdHVhbApkaWZmIC0tZ2l0IGEvY29udmVydC5jIGIvY29udmVydC5jCmluZGV4IDJhMmU0NmMuLjExYTk1ZmMgMTAwNjQ0Ci0tLSBhL2NvbnZlcnQuYworKysgYi9jb252ZXJ0LmMKQEAgLTgzNSw3ICs4MzUsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCi0gKiBTdHJlYW1pbmcgY29udmVyaXNvbiBzdXBwb3J0CisgKiBTdHJlYW1pbmcgY29udmVyc2lvbiBzdXBwb3J0CiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCmRpZmYgLS1naXQgYS9jb252ZXJ0LmggYi9jb252ZXJ0LmgKaW5kZXggZWM1ZmQ2OS4uMGMyMTQzYyAxMDA2NDQKLS0tIGEvY29udmVydC5oCisrKyBiL2NvbnZlcnQuaApAQCAtNDgsNyArNDgsNyBAQAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCi0gKiBTdHJlYW1pbmcgY29udmVyaXNvbiBzdXBwb3J0CisgKiBTdHJlYW1pbmcgY29udmVyc2lvbiBzdXBwb3J0CiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCmRpZmYgLS1naXQgYS9jcmVkZW50aWFsLXN0b3JlLmMgYi9jcmVkZW50aWFsLXN0b3JlLmMKaW5kZXggMjZmNzU4OS4uZjkxNDZlNSAxMDA2NDQKLS0tIGEvY3JlZGVudGlhbC1zdG9yZS5jCisrKyBiL2NyZWRlbnRpYWwtc3RvcmUuYwpAQCAtMTE0LDcgKzExNCw3IEBACiAJcmV0dXJuIGMtPnVzZXJuYW1lICYmIGMtPnBhc3N3b3JkOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJY29uc3QgY2hhciAqIGNvbnN0IHVzYWdlW10gPSB7CiAJCSJnaXQgY3JlZGVudGlhbC1zdG9yZSBbb3B0aW9uc10gPGFjdGlvbj4iLApAQCAtMTMxLDcgKzEzMSw3IEBACiAKIAl1bWFzaygwNzcpOwogCi0JYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgTlVMTCwgb3B0aW9ucywgdXNhZ2UsIDApOworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIChjb25zdCBjaGFyICoqKWFyZ3YsIE5VTEwsIG9wdGlvbnMsIHVzYWdlLCAwKTsKIAlpZiAoYXJnYyAhPSAxKQogCQl1c2FnZV93aXRoX29wdGlvbnModXNhZ2UsIG9wdGlvbnMpOwogCW9wID0gYXJndlswXTsKZGlmZiAtLWdpdCBhL2RhZW1vbi5jIGIvZGFlbW9uLmMKaW5kZXggNmFlZGRjYi4uMzQ5MTZjNSAxMDA2NDQKLS0tIGEvZGFlbW9uLmMKKysrIGIvZGFlbW9uLmMKQEAgLTc2MCw3ICs3NjAsNyBAQAogCQlzbnByaW50Zihwb3J0YnVmLCBzaXplb2YocG9ydGJ1ZiksICJSRU1PVEVfUE9SVD0lZCIsCiAJCSAgICBudG9ocyhzaW5fYWRkci0+c2luX3BvcnQpKTsKICNpZm5kZWYgTk9fSVBWNgotCX0gZWxzZSBpZiAoYWRkciAmJiBhZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwl9IGVsc2UgaWYgKGFkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUNikgewogCQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42X2FkZHIgPSAodm9pZCAqKSBhZGRyOwogCiAJCWNoYXIgKmJ1ZiA9IGFkZHJidWYgKyAxMjsKQEAgLTEwNDcsMTggKzEwNDcsNiBAQAogCX0KIH0KIAotLyogaWYgYW55IHN0YW5kYXJkIGZpbGUgZGVzY3JpcHRvciBpcyBtaXNzaW5nIG9wZW4gaXQgdG8gL2Rldi9udWxsICovCi1zdGF0aWMgdm9pZCBzYW5pdGl6ZV9zdGRmZHModm9pZCkKLXsKLQlpbnQgZmQgPSBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IsIDApOwotCXdoaWxlIChmZCAhPSAtMSAmJiBmZCA8IDIpCi0JCWZkID0gZHVwKGZkKTsKLQlpZiAoZmQgPT0gLTEpCi0JCWRpZV9lcnJubygib3BlbiAvZGV2L251bGwgb3IgZHVwIGZhaWxlZCIpOwotCWlmIChmZCA+IDIpCi0JCWNsb3NlKGZkKTsKLX0KLQogI2lmZGVmIE5PX1BPU0lYX0dPT0RJRVMKIAogc3RydWN0IGNyZWRlbnRpYWxzOwpkaWZmIC0tZ2l0IGEvZGF0ZS5jIGIvZGF0ZS5jCmluZGV4IGRmMjBkMGIuLjI5ZjE1NDAgMTAwNjQ0Ci0tLSBhL2RhdGUuYworKysgYi9kYXRlLmMKQEAgLTcxMSw2ICs3MTEsMjggQEAKIAlyZXR1cm4gMDsgLyogc3VjY2VzcyAqLwogfQogCitpbnQgcGFyc2VfZXhwaXJ5X2RhdGUoY29uc3QgY2hhciAqZGF0ZSwgdW5zaWduZWQgbG9uZyAqdGltZXN0YW1wKQoreworCWludCBlcnJvcnMgPSAwOworCisJaWYgKCFzdHJjbXAoZGF0ZSwgIm5ldmVyIikgfHwgIXN0cmNtcChkYXRlLCAiZmFsc2UiKSkKKwkJKnRpbWVzdGFtcCA9IDA7CisJZWxzZSBpZiAoIXN0cmNtcChkYXRlLCAiYWxsIikgfHwgIXN0cmNtcChkYXRlLCAibm93IikpCisJCS8qCisJCSAqIFdlIHRha2Ugb3ZlciAibm93IiBoZXJlLCB3aGljaCB1c3VhbGx5IHRyYW5zbGF0ZXMKKwkJICogdG8gdGhlIGN1cnJlbnQgdGltZXN0YW1wLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSB1c2VyCisJCSAqIHJlYWxseSBtZWFucyB0byBleHBpcmUgZXZlcnl0aGluZyBzaGUgaGFzIGRvbmUgaW4KKwkJICogdGhlIHBhc3QsIGFuZCBieSBkZWZpbml0aW9uIHJlZmxvZ3MgYXJlIHRoZSByZWNvcmQKKwkJICogb2YgdGhlIHBhc3QsIGFuZCB0aGVyZSBpcyBub3RoaW5nIGZyb20gdGhlIGZ1dHVyZQorCQkgKiB0byBiZSBrZXB0LgorCQkgKi8KKwkJKnRpbWVzdGFtcCA9IFVMT05HX01BWDsKKwllbHNlCisJCSp0aW1lc3RhbXAgPSBhcHByb3hpZGF0ZV9jYXJlZnVsKGRhdGUsICZlcnJvcnMpOworCisJcmV0dXJuIGVycm9yczsKK30KKwogaW50IHBhcnNlX2RhdGUoY29uc3QgY2hhciAqZGF0ZSwgY2hhciAqcmVzdWx0LCBpbnQgbWF4bGVuKQogewogCXVuc2lnbmVkIGxvbmcgdGltZXN0YW1wOwpkaWZmIC0tZ2l0IGEvZGVjb3JhdGUuYyBiL2RlY29yYXRlLmMKaW5kZXggMmY4YTYzZS4uN2NiNWQyOSAxMDA2NDQKLS0tIGEvZGVjb3JhdGUuYworKysgYi9kZWNvcmF0ZS5jCkBAIC00OSw3ICs0OSw3IEBACiAJCWNvbnN0IHN0cnVjdCBvYmplY3QgKmJhc2UgPSBvbGRfaGFzaFtpXS5iYXNlOwogCQl2b2lkICpkZWNvcmF0aW9uID0gb2xkX2hhc2hbaV0uZGVjb3JhdGlvbjsKIAotCQlpZiAoIWJhc2UpCisJCWlmICghZGVjb3JhdGlvbikKIAkJCWNvbnRpbnVlOwogCQlpbnNlcnRfZGVjb3JhdGlvbihuLCBiYXNlLCBkZWNvcmF0aW9uKTsKIAl9CmRpZmYgLS1naXQgYS9kaWZmLWxpYi5jIGIvZGlmZi1saWIuYwppbmRleCBmMzVkZTBmLi5iNmY0YjIxIDEwMDY0NAotLS0gYS9kaWZmLWxpYi5jCisrKyBiL2RpZmYtbGliLmMKQEAgLTY0LDggKzY0LDkgQEAKICAqIGNvbW1pdHMsIHVudHJhY2tlZCBjb250ZW50IGFuZC9vciBtb2RpZmllZCBjb250ZW50KS4KICAqLwogc3RhdGljIGludCBtYXRjaF9zdGF0X3dpdGhfc3VibW9kdWxlKHN0cnVjdCBkaWZmX29wdGlvbnMgKmRpZmZvcHQsCi0JCQkJICAgICAgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0LAotCQkJCSAgICAgIHVuc2lnbmVkIGNlX29wdGlvbiwgdW5zaWduZWQgKmRpcnR5X3N1Ym1vZHVsZSkKKwkJCQkgICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJICAgICBzdHJ1Y3Qgc3RhdCAqc3QsIHVuc2lnbmVkIGNlX29wdGlvbiwKKwkJCQkgICAgIHVuc2lnbmVkICpkaXJ0eV9zdWJtb2R1bGUpCiB7CiAJaW50IGNoYW5nZWQgPSBjZV9tYXRjaF9zdGF0KGNlLCBzdCwgY2Vfb3B0aW9uKTsKIAlpZiAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpKSB7CkBAIC0yMzcsNyArMjM4LDcgQEAKIC8qIEEgZmlsZSBlbnRyeSB3ZW50IGF3YXkgb3IgYXBwZWFyZWQgKi8KIHN0YXRpYyB2b2lkIGRpZmZfaW5kZXhfc2hvd19maWxlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKIAkJCQkgY29uc3QgY2hhciAqcHJlZml4LAotCQkJCSBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCSBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAogCQkJCSBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgc2hhMV92YWxpZCwKIAkJCQkgdW5zaWduZWQgaW50IG1vZGUsCiAJCQkJIHVuc2lnbmVkIGRpcnR5X3N1Ym1vZHVsZSkKQEAgLTI0Niw3ICsyNDcsNyBAQAogCQkgICAgICAgc2hhMSwgc2hhMV92YWxpZCwgY2UtPm5hbWUsIGRpcnR5X3N1Ym1vZHVsZSk7CiB9CiAKLXN0YXRpYyBpbnQgZ2V0X3N0YXRfZGF0YShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIGludCBnZXRfc3RhdF9kYXRhKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQkgY29uc3QgdW5zaWduZWQgY2hhciAqKnNoYTFwLAogCQkJIHVuc2lnbmVkIGludCAqbW9kZXAsCiAJCQkgaW50IGNhY2hlZCwgaW50IG1hdGNoX21pc3NpbmcsCkBAIC0yODMsNyArMjg0LDcgQEAKIH0KIAogc3RhdGljIHZvaWQgc2hvd19uZXdfZmlsZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCi0JCQkgIHN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3LAorCQkJICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm5ldywKIAkJCSAgaW50IGNhY2hlZCwgaW50IG1hdGNoX21pc3NpbmcpCiB7CiAJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMTsKQEAgLTMwMiw4ICszMDMsOCBAQAogfQogCiBzdGF0aWMgaW50IHNob3dfbW9kaWZpZWQoc3RydWN0IHJldl9pbmZvICpyZXZzLAotCQkJIHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAotCQkJIHN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3LAorCQkJIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAorCQkJIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3LAogCQkJIGludCByZXBvcnRfbWlzc2luZywKIAkJCSBpbnQgY2FjaGVkLCBpbnQgbWF0Y2hfbWlzc2luZykKIHsKQEAgLTM2Miw4ICszNjMsOCBAQAogICogZ2l2ZSB5b3UgdGhlIHBvc2l0aW9uIGFuZCBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgaW5kZXgpLgogICovCiBzdGF0aWMgdm9pZCBkb19vbmV3YXlfZGlmZihzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8sCi0Jc3RydWN0IGNhY2hlX2VudHJ5ICppZHgsCi0Jc3RydWN0IGNhY2hlX2VudHJ5ICp0cmVlKQorCQkJICAgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICppZHgsCisJCQkgICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnRyZWUpCiB7CiAJc3RydWN0IHJldl9pbmZvICpyZXZzID0gby0+dW5wYWNrX2RhdGE7CiAJaW50IG1hdGNoX21pc3NpbmcsIGNhY2hlZDsKQEAgLTQyMywxMCArNDI0LDExIEBACiAgKiB0aGUgZmFpcmx5IGNvbXBsZXggdW5wYWNrX3RyZWVzKCkgc2VtYW50aWMgcmVxdWlyZW1lbnRzLCBpbmNsdWRpbmcKICAqIHRoZSBza2lwcGluZywgdGhlIHBhdGggbWF0Y2hpbmcsIHRoZSB0eXBlIGNvbmZsaWN0IGNhc2VzIGV0Yy4KICAqLwotc3RhdGljIGludCBvbmV3YXlfZGlmZihzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyBpbnQgb25ld2F5X2RpZmYoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKnNyYywKKwkJICAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmlkeCA9IHNyY1swXTsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnRyZWUgPSBzcmNbMV07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICppZHggPSBzcmNbMF07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICp0cmVlID0gc3JjWzFdOwogCXN0cnVjdCByZXZfaW5mbyAqcmV2cyA9IG8tPnVucGFja19kYXRhOwogCiAJLyoKZGlmZiAtLWdpdCBhL2RpZmYtbm8taW5kZXguYyBiL2RpZmYtbm8taW5kZXguYwppbmRleCA3NGRhNjU5Li5lNjZmZGYzIDEwMDY0NAotLS0gYS9kaWZmLW5vLWluZGV4LmMKKysrIGIvZGlmZi1uby1pbmRleC5jCkBAIC00NSw3ICs0NSw3IEBACiAKIAlpZiAoIXBhdGggfHwgIXN0cmNtcChwYXRoLCAiL2Rldi9udWxsIikpCiAJCSptb2RlID0gMDsKLSNpZmRlZiBfV0lOMzIKKyNpZmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIAllbHNlIGlmICghc3RyY2FzZWNtcChwYXRoLCAibnVsIikpCiAJCSptb2RlID0gMDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZGlmZi5jIGIvZGlmZi5jCmluZGV4IDcxZTRkZjkuLjI2NjExMmMgMTAwNjQ0Ci0tLSBhL2RpZmYuYworKysgYi9kaWZmLmMKQEAgLTE2ODMsOSArMTY4Myw3IEBACiAJCWRlbCA9IGRlbGV0ZWQ7CiAKIAkJaWYgKGdyYXBoX3dpZHRoIDw9IG1heF9jaGFuZ2UpIHsKLQkJCWludCB0b3RhbCA9IGFkZCArIGRlbDsKLQotCQkJdG90YWwgPSBzY2FsZV9saW5lYXIoYWRkICsgZGVsLCBncmFwaF93aWR0aCwgbWF4X2NoYW5nZSk7CisJCQlpbnQgdG90YWwgPSBzY2FsZV9saW5lYXIoYWRkICsgZGVsLCBncmFwaF93aWR0aCwgbWF4X2NoYW5nZSk7CiAJCQlpZiAodG90YWwgPCAyICYmIGFkZCAmJiBkZWwpCiAJCQkJLyogd2lkdGggPj0gMiBkdWUgdG8gdGhlIHNhbml0eSBjaGVjayAqLwogCQkJCXRvdGFsID0gMjsKQEAgLTI1ODYsNyArMjU4NCw3IEBACiAgKi8KIHN0YXRpYyBpbnQgcmV1c2Vfd29ya3RyZWVfZmlsZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgd2FudF9maWxlKQogewotCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAlzdHJ1Y3Qgc3RhdCBzdDsKIAlpbnQgcG9zLCBsZW47CiAKQEAgLTM1MDUsNiArMzUwMywxMSBAQAogCXJldHVybiAxOwogfQogCitzdGF0aWMgdm9pZCBlbmFibGVfcGF0Y2hfb3V0cHV0KGludCAqZm10KSB7CisJKmZtdCAmPSB+RElGRl9GT1JNQVRfTk9fT1VUUFVUOworCSpmbXQgfD0gRElGRl9GT1JNQVRfUEFUQ0g7Cit9CisKIGludCBkaWZmX29wdF9wYXJzZShzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHRpb25zLCBjb25zdCBjaGFyICoqYXYsIGludCBhYykKIHsKIAljb25zdCBjaGFyICphcmcgPSBhdlswXTsKQEAgLTM1MTIsMTUgKzM1MTUsMTUgQEAKIAlpbnQgYXJnY291bnQ7CiAKIAkvKiBPdXRwdXQgZm9ybWF0IG9wdGlvbnMgKi8KLQlpZiAoIXN0cmNtcChhcmcsICItcCIpIHx8ICFzdHJjbXAoYXJnLCAiLXUiKSB8fCAhc3RyY21wKGFyZywgIi0tcGF0Y2giKSkKLQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9QQVRDSDsKLQllbHNlIGlmIChvcHRfYXJnKGFyZywgJ1UnLCAidW5pZmllZCIsICZvcHRpb25zLT5jb250ZXh0KSkKLQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9QQVRDSDsKKwlpZiAoIXN0cmNtcChhcmcsICItcCIpIHx8ICFzdHJjbXAoYXJnLCAiLXUiKSB8fCAhc3RyY21wKGFyZywgIi0tcGF0Y2giKQorCSAgICB8fCBvcHRfYXJnKGFyZywgJ1UnLCAidW5pZmllZCIsICZvcHRpb25zLT5jb250ZXh0KSkKKwkJZW5hYmxlX3BhdGNoX291dHB1dCgmb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCk7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXJhdyIpKQogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX1JBVzsKLQllbHNlIGlmICghc3RyY21wKGFyZywgIi0tcGF0Y2gtd2l0aC1yYXciKSkKLQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9QQVRDSCB8IERJRkZfRk9STUFUX1JBVzsKLQllbHNlIGlmICghc3RyY21wKGFyZywgIi0tbnVtc3RhdCIpKQorCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1wYXRjaC13aXRoLXJhdyIpKSB7CisJCWVuYWJsZV9wYXRjaF9vdXRwdXQoJm9wdGlvbnMtPm91dHB1dF9mb3JtYXQpOworCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX1JBVzsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1udW1zdGF0IikpCiAJCW9wdGlvbnMtPm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfTlVNU1RBVDsKIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0tc2hvcnRzdGF0IikpCiAJCW9wdGlvbnMtPm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfU0hPUlRTVEFUOwpAQCAtMzU0MiwxMyArMzU0NSwxNCBAQAogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX0NIRUNLRElGRjsKIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0tc3VtbWFyeSIpKQogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX1NVTU1BUlk7Ci0JZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXBhdGNoLXdpdGgtc3RhdCIpKQotCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX1BBVENIIHwgRElGRl9GT1JNQVRfRElGRlNUQVQ7Ci0JZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLW5hbWUtb25seSIpKQorCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1wYXRjaC13aXRoLXN0YXQiKSkgeworCQllbmFibGVfcGF0Y2hfb3V0cHV0KCZvcHRpb25zLT5vdXRwdXRfZm9ybWF0KTsKKwkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9ESUZGU1RBVDsKKwl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1uYW1lLW9ubHkiKSkKIAkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9OQU1FOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1uYW1lLXN0YXR1cyIpKQogCQlvcHRpb25zLT5vdXRwdXRfZm9ybWF0IHw9IERJRkZfRk9STUFUX05BTUVfU1RBVFVTOwotCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLXMiKSkKKwllbHNlIGlmICghc3RyY21wKGFyZywgIi1zIikgfHwgIXN0cmNtcChhcmcsICItLW5vLXBhdGNoIikpCiAJCW9wdGlvbnMtPm91dHB1dF9mb3JtYXQgfD0gRElGRl9GT1JNQVRfTk9fT1VUUFVUOwogCWVsc2UgaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1zdGF0IikpCiAJCS8qIC0tc3RhdCwgLS1zdGF0LXdpZHRoLCAtLXN0YXQtbmFtZS13aWR0aCwgb3IgLS1zdGF0LWNvdW50ICovCkBAIC0zNjAxLDYgKzM2MDUsOCBAQAogCQlESUZGX1hETF9TRVQob3B0aW9ucywgSUdOT1JFX1dISVRFU1BBQ0VfQ0hBTkdFKTsKIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0taWdub3JlLXNwYWNlLWF0LWVvbCIpKQogCQlESUZGX1hETF9TRVQob3B0aW9ucywgSUdOT1JFX1dISVRFU1BBQ0VfQVRfRU9MKTsKKwllbHNlIGlmICghc3RyY21wKGFyZywgIi0taWdub3JlLWJsYW5rLWxpbmVzIikpCisJCURJRkZfWERMX1NFVChvcHRpb25zLCBJR05PUkVfQkxBTktfTElORVMpOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1wYXRpZW5jZSIpKQogCQlvcHRpb25zLT54ZGxfb3B0cyA9IERJRkZfV0lUSF9BTEcob3B0aW9ucywgUEFUSUVOQ0VfRElGRik7CiAJZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWhpc3RvZ3JhbSIpKQpAQCAtMzYxOSw3ICszNjI1LDcgQEAKIAogCS8qIGZsYWdzIG9wdGlvbnMgKi8KIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0tYmluYXJ5IikpIHsKLQkJb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCB8PSBESUZGX0ZPUk1BVF9QQVRDSDsKKwkJZW5hYmxlX3BhdGNoX291dHB1dCgmb3B0aW9ucy0+b3V0cHV0X2Zvcm1hdCk7CiAJCURJRkZfT1BUX1NFVChvcHRpb25zLCBCSU5BUlkpOwogCX0KIAllbHNlIGlmICghc3RyY21wKGFyZywgIi0tZnVsbC1pbmRleCIpKQpAQCAtNDQ1OCw3ICs0NDY0LDcgQEAKIAkgICAgRElGRl9PUFRfVFNUKG9wdGlvbnMsIERJRkZfRlJPTV9DT05URU5UUykpIHsKIAkJLyoKIAkJICogcnVuIGRpZmZfZmx1c2hfcGF0Y2ggZm9yIHRoZSBleGl0IHN0YXR1cy4gc2V0dGluZwotCQkgKiBvcHRpb25zLT5maWxlIHRvIC9kZXYvbnVsbCBzaG91bGQgYmUgc2FmZSwgYmVjYXVlIHdlCisJCSAqIG9wdGlvbnMtPmZpbGUgdG8gL2Rldi9udWxsIHNob3VsZCBiZSBzYWZlLCBiZWNhdXNlIHdlCiAJCSAqIGFyZW4ndCBzdXBwb3NlZCB0byBwcm9kdWNlIGFueSBvdXRwdXQgYW55d2F5LgogCQkgKi8KIAkJaWYgKG9wdGlvbnMtPmNsb3NlX2ZpbGUpCmRpZmYgLS1naXQgYS9kaWZmY29yZS1waWNrYXhlLmMgYi9kaWZmY29yZS1waWNrYXhlLmMKaW5kZXggYzk3YWM5Yi4uNDAxZWI3MiAxMDA2NDQKLS0tIGEvZGlmZmNvcmUtcGlja2F4ZS5jCisrKyBiL2RpZmZjb3JlLXBpY2theGUuYwpAQCAtMTMxLDggKzEzMSw3IEBACiAJcmV0dXJuOwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IGNvbnRhaW5zKG1tZmlsZV90ICptZiwgc3RydWN0IGRpZmZfb3B0aW9ucyAqbywKLQkJCSAgICAgcmVnZXhfdCAqcmVnZXhwLCBrd3NldF90IGt3cykKK3N0YXRpYyB1bnNpZ25lZCBpbnQgY29udGFpbnMobW1maWxlX3QgKm1mLCByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKQogewogCXVuc2lnbmVkIGludCBjbnQ7CiAJdW5zaWduZWQgbG9uZyBzejsKQEAgLTE3NiwxMSArMTc1LDkgQEAKIAkJICAgICAgIHN0cnVjdCBkaWZmX29wdGlvbnMgKm8sCiAJCSAgICAgICByZWdleF90ICpyZWdleHAsIGt3c2V0X3Qga3dzKQogewotCWlmICghb25lKQotCQlyZXR1cm4gY29udGFpbnModHdvLCBvLCByZWdleHAsIGt3cykgIT0gMDsKLQlpZiAoIXR3bykKLQkJcmV0dXJuIGNvbnRhaW5zKG9uZSwgbywgcmVnZXhwLCBrd3MpICE9IDA7Ci0JcmV0dXJuIGNvbnRhaW5zKG9uZSwgbywgcmVnZXhwLCBrd3MpICE9IGNvbnRhaW5zKHR3bywgbywgcmVnZXhwLCBrd3MpOworCXVuc2lnbmVkIGludCBvbmVfY29udGFpbnMgPSBvbmUgPyBjb250YWlucyhvbmUsIHJlZ2V4cCwga3dzKSA6IDA7CisJdW5zaWduZWQgaW50IHR3b19jb250YWlucyA9IHR3byA/IGNvbnRhaW5zKHR3bywgcmVnZXhwLCBrd3MpIDogMDsKKwlyZXR1cm4gb25lX2NvbnRhaW5zICE9IHR3b19jb250YWluczsKIH0KIAogc3RhdGljIGludCBwaWNrYXhlX21hdGNoKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwLCBzdHJ1Y3QgZGlmZl9vcHRpb25zICpvLApkaWZmIC0tZ2l0IGEvZGlyLmMgYi9kaXIuYwppbmRleCA4OTdjODc0Li45MTBiZmNkIDEwMDY0NAotLS0gYS9kaXIuYworKysgYi9kaXIuYwpAQCAtOTMzLDcgKzkzMyw3IEBACiAgKi8KIHN0YXRpYyBlbnVtIGV4aXN0X3N0YXR1cyBkaXJlY3RvcnlfZXhpc3RzX2luX2luZGV4X2ljYXNlKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGludCBsZW4pCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGluZGV4X25hbWVfZXhpc3RzKCZ0aGVfaW5kZXgsIGRpcm5hbWUsIGxlbiArIDEsIGlnbm9yZV9jYXNlKTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gaW5kZXhfbmFtZV9leGlzdHMoJnRoZV9pbmRleCwgZGlybmFtZSwgbGVuICsgMSwgaWdub3JlX2Nhc2UpOwogCXVuc2lnbmVkIGNoYXIgZW5kY2hhcjsKIAogCWlmICghY2UpCkBAIC05NzcsNyArOTc3LDcgQEAKIAlpZiAocG9zIDwgMCkKIAkJcG9zID0gLXBvcy0xOwogCXdoaWxlIChwb3MgPCBhY3RpdmVfbnIpIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtwb3MrK107CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbcG9zKytdOwogCQl1bnNpZ25lZCBjaGFyIGVuZGNoYXI7CiAKIAkJaWYgKHN0cm5jbXAoY2UtPm5hbWUsIGRpcm5hbWUsIGxlbikpCkBAIC0xMDM2LDkgKzEwMzYsNyBAQAogCQlyZXR1cm4gcGF0aF9yZWN1cnNlOwogCiAJY2FzZSBpbmRleF9naXRkaXI6Ci0JCWlmIChkaXItPmZsYWdzICYgRElSX1NIT1dfT1RIRVJfRElSRUNUT1JJRVMpCi0JCQlyZXR1cm4gcGF0aF9ub25lOwotCQlyZXR1cm4gcGF0aF91bnRyYWNrZWQ7CisJCXJldHVybiBwYXRoX25vbmU7CiAKIAljYXNlIGluZGV4X25vbmV4aXN0ZW50OgogCQlpZiAoZGlyLT5mbGFncyAmIERJUl9TSE9XX09USEVSX0RJUkVDVE9SSUVTKQpAQCAtMTExNSw3ICsxMTEzLDcgQEAKIHN0YXRpYyBpbnQgZ2V0X2luZGV4X2R0eXBlKGNvbnN0IGNoYXIgKnBhdGgsIGludCBsZW4pCiB7CiAJaW50IHBvczsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CiAKIAljZSA9IGNhY2hlX25hbWVfZXhpc3RzKHBhdGgsIGxlbiwgMCk7CiAJaWYgKGNlKSB7CmRpZmYgLS1naXQgYS9lbnRyeS5jIGIvZW50cnkuYwppbmRleCBkN2MxMzFkLi5hY2M4OTJmIDEwMDY0NAotLS0gYS9lbnRyeS5jCisrKyBiL2VudHJ5LmMKQEAgLTc5LDcgKzc5LDcgQEAKIAlyZXR1cm4gb3BlbihwYXRoLCBPX1dST05MWSB8IE9fQ1JFQVQgfCBPX0VYQ0wsIG1vZGUpOwogfQogCi1zdGF0aWMgdm9pZCAqcmVhZF9ibG9iX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHVuc2lnbmVkIGxvbmcgKnNpemUpCitzdGF0aWMgdm9pZCAqcmVhZF9ibG9iX2VudHJ5KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHVuc2lnbmVkIGxvbmcgKnNpemUpCiB7CiAJZW51bSBvYmplY3RfdHlwZSB0eXBlOwogCXZvaWQgKm5ldyA9IHJlYWRfc2hhMV9maWxlKGNlLT5zaGExLCAmdHlwZSwgc2l6ZSk7CkBAIC05Miw3ICs5Miw3IEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKLXN0YXRpYyBpbnQgb3Blbl9vdXRwdXRfZmQoY2hhciAqcGF0aCwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgaW50IHRvX3RlbXBmaWxlKQorc3RhdGljIGludCBvcGVuX291dHB1dF9mZChjaGFyICpwYXRoLCBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBpbnQgdG9fdGVtcGZpbGUpCiB7CiAJaW50IHN5bWxpbmsgPSAoY2UtPmNlX21vZGUgJiBTX0lGTVQpICE9IFNfSUZSRUc7CiAJaWYgKHRvX3RlbXBmaWxlKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBzdHJlYW1pbmdfd3JpdGVfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgY2hhciAqcGF0aCwKK3N0YXRpYyBpbnQgc3RyZWFtaW5nX3dyaXRlX2VudHJ5KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGNoYXIgKnBhdGgsCiAJCQkJIHN0cnVjdCBzdHJlYW1fZmlsdGVyICpmaWx0ZXIsCiAJCQkJIGNvbnN0IHN0cnVjdCBjaGVja291dCAqc3RhdGUsIGludCB0b190ZW1wZmlsZSwKIAkJCQkgaW50ICpmc3RhdF9kb25lLCBzdHJ1Y3Qgc3RhdCAqc3RhdGJ1ZikKQEAgLTEzNiw3ICsxMzYsOCBAQAogCXJldHVybiByZXN1bHQ7CiB9CiAKLXN0YXRpYyBpbnQgd3JpdGVfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IGNoZWNrb3V0ICpzdGF0ZSwgaW50IHRvX3RlbXBmaWxlKQorc3RhdGljIGludCB3cml0ZV9lbnRyeShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkgICAgICAgY2hhciAqcGF0aCwgY29uc3Qgc3RydWN0IGNoZWNrb3V0ICpzdGF0ZSwgaW50IHRvX3RlbXBmaWxlKQogewogCXVuc2lnbmVkIGludCBjZV9tb2RlX3NfaWZtdCA9IGNlLT5jZV9tb2RlICYgU19JRk1UOwogCWludCBmZCwgcmV0LCBmc3RhdF9kb25lID0gMDsKQEAgLTE5OSw5ICsyMDAsOSBAQAogCQlicmVhazsKIAljYXNlIFNfSUZHSVRMSU5LOgogCQlpZiAodG9fdGVtcGZpbGUpCi0JCQlyZXR1cm4gZXJyb3IoImNhbm5vdCBjcmVhdGUgdGVtcG9yYXJ5IHN1YnByb2plY3QgJXMiLCBwYXRoKTsKKwkJCXJldHVybiBlcnJvcigiY2Fubm90IGNyZWF0ZSB0ZW1wb3Jhcnkgc3VibW9kdWxlICVzIiwgcGF0aCk7CiAJCWlmIChta2RpcihwYXRoLCAwNzc3KSA8IDApCi0JCQlyZXR1cm4gZXJyb3IoImNhbm5vdCBjcmVhdGUgc3VicHJvamVjdCBkaXJlY3RvcnkgJXMiLCBwYXRoKTsKKwkJCXJldHVybiBlcnJvcigiY2Fubm90IGNyZWF0ZSBzdWJtb2R1bGUgZGlyZWN0b3J5ICVzIiwgcGF0aCk7CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXJldHVybiBlcnJvcigidW5rbm93biBmaWxlIG1vZGUgZm9yICVzIGluIGluZGV4IiwgcGF0aCk7CkBAIC0yMzMsNyArMjM0LDggQEAKIAlyZXR1cm4gbHN0YXQocGF0aCwgc3QpOwogfQogCi1pbnQgY2hlY2tvdXRfZW50cnkoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgY29uc3Qgc3RydWN0IGNoZWNrb3V0ICpzdGF0ZSwgY2hhciAqdG9wYXRoKQoraW50IGNoZWNrb3V0X2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCSAgIGNvbnN0IHN0cnVjdCBjaGVja291dCAqc3RhdGUsIGNoYXIgKnRvcGF0aCkKIHsKIAlzdGF0aWMgY2hhciBwYXRoW1BBVEhfTUFYICsgMV07CiAJc3RydWN0IHN0YXQgc3Q7CmRpZmYgLS1naXQgYS9lbnZpcm9ubWVudC5jIGIvZW52aXJvbm1lbnQuYwppbmRleCBlMmU3NWMxLi41Mzk4YzM2IDEwMDY0NAotLS0gYS9lbnZpcm9ubWVudC5jCisrKyBiL2Vudmlyb25tZW50LmMKQEAgLTIyLDYgKzIyLDcgQEAKIGludCBpc19iYXJlX3JlcG9zaXRvcnlfY2ZnID0gLTE7IC8qIHVuc3BlY2lmaWVkICovCiBpbnQgbG9nX2FsbF9yZWZfdXBkYXRlcyA9IC0xOyAvKiB1bnNwZWNpZmllZCAqLwogaW50IHdhcm5fYW1iaWd1b3VzX3JlZnMgPSAxOworaW50IHdhcm5fb25fb2JqZWN0X3JlZm5hbWVfYW1iaWd1aXR5ID0gMTsKIGludCByZXBvc2l0b3J5X2Zvcm1hdF92ZXJzaW9uOwogY29uc3QgY2hhciAqZ2l0X2NvbW1pdF9lbmNvZGluZzsKIGNvbnN0IGNoYXIgKmdpdF9sb2dfb3V0cHV0X2VuY29kaW5nOwpAQCAtMzcsNyArMzgsNiBAQAogc2l6ZV90IHBhY2tlZF9naXRfbGltaXQgPSBERUZBVUxUX1BBQ0tFRF9HSVRfTElNSVQ7CiBzaXplX3QgZGVsdGFfYmFzZV9jYWNoZV9saW1pdCA9IDE2ICogMTAyNCAqIDEwMjQ7CiB1bnNpZ25lZCBsb25nIGJpZ19maWxlX3RocmVzaG9sZCA9IDUxMiAqIDEwMjQgKiAxMDI0OwotY29uc3QgY2hhciAqbG9nX3BhY2tfYWNjZXNzOwogY29uc3QgY2hhciAqcGFnZXJfcHJvZ3JhbTsKIGludCBwYWdlcl91c2VfY29sb3IgPSAxOwogY29uc3QgY2hhciAqZWRpdG9yX3Byb2dyYW07CmRpZmYgLS1naXQgYS9leGVjX2NtZC5oIGIvZXhlY19jbWQuaAppbmRleCBlMmI1NDZiLi5lNGM5NzAyIDEwMDY0NAotLS0gYS9leGVjX2NtZC5oCisrKyBiL2V4ZWNfY21kLmgKQEAgLTcsNiArNyw3IEBACiBleHRlcm4gdm9pZCBzZXR1cF9wYXRoKHZvaWQpOwogZXh0ZXJuIGNvbnN0IGNoYXIgKipwcmVwYXJlX2dpdF9jbWQoY29uc3QgY2hhciAqKmFyZ3YpOwogZXh0ZXJuIGludCBleGVjdl9naXRfY21kKGNvbnN0IGNoYXIgKiphcmd2KTsgLyogTlVMTCB0ZXJtaW5hdGVkICovCitMQVNUX0FSR19NVVNUX0JFX05VTEwKIGV4dGVybiBpbnQgZXhlY2xfZ2l0X2NtZChjb25zdCBjaGFyICpjbWQsIC4uLik7CiBleHRlcm4gY29uc3QgY2hhciAqc3lzdGVtX3BhdGgoY29uc3QgY2hhciAqcGF0aCk7CiAKZGlmZiAtLWdpdCBhL2Zhc3QtaW1wb3J0LmMgYi9mYXN0LWltcG9ydC5jCmluZGV4IDVmNTM5ZDcuLjIzZjYyNWYgMTAwNjQ0Ci0tLSBhL2Zhc3QtaW1wb3J0LmMKKysrIGIvZmFzdC1pbXBvcnQuYwpAQCAtMjk3LDcgKzI5Nyw3IEBACiBzdGF0aWMgRklMRSAqcGFja19lZGdlczsKIHN0YXRpYyB1bnNpZ25lZCBpbnQgc2hvd19zdGF0cyA9IDE7CiBzdGF0aWMgaW50IGdsb2JhbF9hcmdjOwotc3RhdGljIGNvbnN0IGNoYXIgKipnbG9iYWxfYXJndjsKK3N0YXRpYyBjaGFyICoqZ2xvYmFsX2FyZ3Y7CiAKIC8qIE1lbW9yeSBwb29scyAqLwogc3RhdGljIHNpemVfdCBtZW1fcG9vbF9hbGxvYyA9IDIqMTAyNCoxMDI0IC0gc2l6ZW9mKHN0cnVjdCBtZW1fcG9vbCk7CkBAIC0xODIyLDcgKzE4MjIsNyBAQAogCQkqZW5kID0gMDsKIAkJbWFyayA9IHN0cnRvdW1heChsaW5lICsgMSwgJmVuZCwgMTApOwogCQlpZiAoIW1hcmsgfHwgZW5kID09IGxpbmUgKyAxCi0JCQl8fCAqZW5kICE9ICcgJyB8fCBnZXRfc2hhMShlbmQgKyAxLCBzaGExKSkKKwkJCXx8ICplbmQgIT0gJyAnIHx8IGdldF9zaGExX2hleChlbmQgKyAxLCBzaGExKSkKIAkJCWRpZSgiY29ycnVwdCBtYXJrIGxpbmU6ICVzIiwgbGluZSk7CiAJCWUgPSBmaW5kX29iamVjdChzaGExKTsKIAkJaWYgKCFlKSB7CkBAIC0zMzQ3LDcgKzMzNDcsNyBAQAogCQlyZWFkX21hcmtzKCk7CiB9CiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAl1bnNpZ25lZCBpbnQgaTsKIApkaWZmIC0tZ2l0IGEvZmV0Y2gtcGFjay5jIGIvZmV0Y2gtcGFjay5jCmluZGV4IDZiNTQ2N2MuLjY2ODQzNDggMTAwNjQ0Ci0tLSBhL2ZldGNoLXBhY2suYworKysgYi9mZXRjaC1wYWNrLmMKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJydW4tY29tbWFuZC5oIgogI2luY2x1ZGUgInRyYW5zcG9ydC5oIgogI2luY2x1ZGUgInZlcnNpb24uaCIKKyNpbmNsdWRlICJwcmlvLXF1ZXVlLmgiCiAKIHN0YXRpYyBpbnQgdHJhbnNmZXJfdW5wYWNrX2xpbWl0ID0gLTE7CiBzdGF0aWMgaW50IGZldGNoX3VucGFja19saW1pdCA9IC0xOwpAQCAtMzcsNyArMzgsNyBAQAogICovCiAjZGVmaW5lIE1BWF9JTl9WQUlOIDI1NgogCi1zdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpyZXZfbGlzdDsKK3N0YXRpYyBzdHJ1Y3QgcHJpb19xdWV1ZSByZXZfbGlzdCA9IHsgY29tcGFyZV9jb21taXRzX2J5X2NvbW1pdF9kYXRlIH07CiBzdGF0aWMgaW50IG5vbl9jb21tb25fcmV2cywgbXVsdGlfYWNrLCB1c2Vfc2lkZWJhbmQsIGFsbG93X3RpcF9zaGExX2luX3dhbnQ7CiAKIHN0YXRpYyB2b2lkIHJldl9saXN0X3B1c2goc3RydWN0IGNvbW1pdCAqY29tbWl0LCBpbnQgbWFyaykKQEAgLTQ5LDcgKzUwLDcgQEAKIAkJCWlmIChwYXJzZV9jb21taXQoY29tbWl0KSkKIAkJCQlyZXR1cm47CiAKLQkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUoY29tbWl0LCAmcmV2X2xpc3QpOworCQlwcmlvX3F1ZXVlX3B1dCgmcmV2X2xpc3QsIGNvbW1pdCk7CiAKIAkJaWYgKCEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBDT01NT04pKQogCQkJbm9uX2NvbW1vbl9yZXZzKys7CkBAIC0xMjIsMTAgKzEyMywxMCBAQAogCQl1bnNpZ25lZCBpbnQgbWFyazsKIAkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzOwogCi0JCWlmIChyZXZfbGlzdCA9PSBOVUxMIHx8IG5vbl9jb21tb25fcmV2cyA9PSAwKQorCQlpZiAocmV2X2xpc3QubnIgPT0gMCB8fCBub25fY29tbW9uX3JldnMgPT0gMCkKIAkJCXJldHVybiBOVUxMOwogCi0JCWNvbW1pdCA9IHJldl9saXN0LT5pdGVtOworCQljb21taXQgPSBwcmlvX3F1ZXVlX2dldCgmcmV2X2xpc3QpOwogCQlpZiAoIWNvbW1pdC0+b2JqZWN0LnBhcnNlZCkKIAkJCXBhcnNlX2NvbW1pdChjb21taXQpOwogCQlwYXJlbnRzID0gY29tbWl0LT5wYXJlbnRzOwpAQCAtMTUyLDggKzE1Myw2IEBACiAJCQkJbWFya19jb21tb24ocGFyZW50cy0+aXRlbSwgMSwgMCk7CiAJCQlwYXJlbnRzID0gcGFyZW50cy0+bmV4dDsKIAkJfQotCi0JCXJldl9saXN0ID0gcmV2X2xpc3QtPm5leHQ7CiAJfQogCiAJcmV0dXJuIGNvbW1pdC0+b2JqZWN0LnNoYTE7CkBAIC00NDIsNyArNDQxLDcgQEAKIAkJCQkJaW5fdmFpbiA9IDA7CiAJCQkJCWdvdF9jb250aW51ZSA9IDE7CiAJCQkJCWlmIChhY2sgPT0gQUNLX3JlYWR5KSB7Ci0JCQkJCQlyZXZfbGlzdCA9IE5VTEw7CisJCQkJCQljbGVhcl9wcmlvX3F1ZXVlKCZyZXZfbGlzdCk7CiAJCQkJCQlnb3RfcmVhZHkgPSAxOwogCQkJCQl9CiAJCQkJCWJyZWFrOwpAQCAtNTA1LDcgKzUwNCw3IEBACiAJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IChzdHJ1Y3QgY29tbWl0ICopbzsKIAkJaWYgKCEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBDT01QTEVURSkpIHsKIAkJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IENPTVBMRVRFOwotCQkJY29tbWl0X2xpc3RfaW5zZXJ0X2J5X2RhdGUoY29tbWl0LCAmY29tcGxldGUpOworCQkJY29tbWl0X2xpc3RfaW5zZXJ0KGNvbW1pdCwgJmNvbXBsZXRlKTsKIAkJfQogCX0KIAlyZXR1cm4gMDsKQEAgLTYyMiw2ICs2MjEsNyBAQAogCWlmICghYXJncy0+ZGVwdGgpIHsKIAkJZm9yX2VhY2hfcmVmKG1hcmtfY29tcGxldGUsIE5VTEwpOwogCQlmb3JfZWFjaF9hbHRlcm5hdGVfcmVmKG1hcmtfYWx0ZXJuYXRlX2NvbXBsZXRlLCBOVUxMKTsKKwkJY29tbWl0X2xpc3Rfc29ydF9ieV9kYXRlKCZjb21wbGV0ZSk7CiAJCWlmIChjdXRvZmYpCiAJCQltYXJrX3JlY2VudF9jb21wbGV0ZV9jb21taXRzKGFyZ3MsIGN1dG9mZik7CiAJfQpAQCAtNjkxLDYgKzY5MSw3IEBACiAJY29uc3QgY2hhciAqKmF2OwogCWludCBkb19rZWVwID0gYXJncy0+a2VlcF9wYWNrOwogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNtZDsKKwlpbnQgcmV0OwogCiAJbWVtc2V0KCZkZW11eCwgMCwgc2l6ZW9mKGRlbXV4KSk7CiAJaWYgKHVzZV9zaWRlYmFuZCkgewpAQCAtNzQ3LDExICs3NDgsMTQgQEAKIAkJCQlzdHJjcHkoa2VlcF9hcmcgKyBzLCAibG9jYWxob3N0Iik7CiAJCQkqYXYrKyA9IGtlZXBfYXJnOwogCQl9CisJCWlmIChhcmdzLT5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkKQorCQkJKmF2KysgPSAiLS1jaGVjay1zZWxmLWNvbnRhaW5lZC1hbmQtY29ubmVjdGVkIjsKIAl9CiAJZWxzZSB7CiAJCSphdisrID0gInVucGFjay1vYmplY3RzIjsKIAkJaWYgKGFyZ3MtPnF1aWV0IHx8IGFyZ3MtPm5vX3Byb2dyZXNzKQogCQkJKmF2KysgPSAiLXEiOworCQlhcmdzLT5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkID0gMDsKIAl9CiAJaWYgKCpoZHJfYXJnKQogCQkqYXYrKyA9IGhkcl9hcmc7CkBAIC03NzIsNyArNzc2LDEyIEBACiAJCWNsb3NlKGNtZC5vdXQpOwogCX0KIAotCWlmIChmaW5pc2hfY29tbWFuZCgmY21kKSkKKwlyZXQgPSBmaW5pc2hfY29tbWFuZCgmY21kKTsKKwlpZiAoIXJldCB8fCAoYXJncy0+Y2hlY2tfc2VsZl9jb250YWluZWRfYW5kX2Nvbm5lY3RlZCAmJiByZXQgPT0gMSkpCisJCWFyZ3MtPnNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgPQorCQkJYXJncy0+Y2hlY2tfc2VsZl9jb250YWluZWRfYW5kX2Nvbm5lY3RlZCAmJgorCQkJcmV0ID09IDA7CisJZWxzZQogCQlkaWUoIiVzIGZhaWxlZCIsIGFyZ3ZbMF0pOwogCWlmICh1c2Vfc2lkZWJhbmQgJiYgZmluaXNoX2FzeW5jKCZkZW11eCkpCiAJCWRpZSgiZXJyb3IgaW4gc2lkZWJhbmQgZGVtdWx0aXBsZXhlciIpOwpkaWZmIC0tZ2l0IGEvZmV0Y2gtcGFjay5oIGIvZmV0Y2gtcGFjay5oCmluZGV4IGRjNTI2NmMuLjQwZjA4YmEgMTAwNjQ0Ci0tLSBhL2ZldGNoLXBhY2suaAorKysgYi9mZXRjaC1wYWNrLmgKQEAgLTE2LDcgKzE2LDkgQEAKIAkJdmVyYm9zZToxLAogCQlub19wcm9ncmVzczoxLAogCQlpbmNsdWRlX3RhZzoxLAotCQlzdGF0ZWxlc3NfcnBjOjE7CisJCXN0YXRlbGVzc19ycGM6MSwKKwkJY2hlY2tfc2VsZl9jb250YWluZWRfYW5kX2Nvbm5lY3RlZDoxLAorCQlzZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkOjE7CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvZ2l0LWFkZC0taW50ZXJhY3RpdmUucGVybCBiL2dpdC1hZGQtLWludGVyYWN0aXZlLnBlcmwKaW5kZXggZDJjNGNlNi4uNzVhOTkxZiAxMDA3NTUKLS0tIGEvZ2l0LWFkZC0taW50ZXJhY3RpdmUucGVybAorKysgYi9naXQtYWRkLS1pbnRlcmFjdGl2ZS5wZXJsCkBAIC00NCw2ICs0NCw4IEBACiAKIG15ICRub3JtYWxfY29sb3IgPSAkcmVwby0+Z2V0X2NvbG9yKCIiLCAicmVzZXQiKTsKIAorbXkgJGRpZmZfYWxnb3JpdGhtID0gJHJlcG8tPmNvbmZpZygnZGlmZi5hbGdvcml0aG0nKTsKKwogbXkgJHVzZV9yZWFka2V5ID0gMDsKIG15ICR1c2VfdGVybWNhcCA9IDA7CiBteSAldGVybV9lc2NhcGVzOwpAQCAtNzMxLDYgKzczMyw5IEBACiBzdWIgcGFyc2VfZGlmZiB7CiAJbXkgKCRwYXRoKSA9IEBfOwogCW15IEBkaWZmX2NtZCA9IHNwbGl0KCIgIiwgJHBhdGNoX21vZGVfZmxhdm91cntESUZGfSk7CisJaWYgKGRlZmluZWQgJGRpZmZfYWxnb3JpdGhtKSB7CisJCXNwbGljZSBAZGlmZl9jbWQsIDEsIDAsICItLWRpZmYtYWxnb3JpdGhtPSR7ZGlmZl9hbGdvcml0aG19IjsKKwl9CiAJaWYgKGRlZmluZWQgJHBhdGNoX21vZGVfcmV2aXNpb24pIHsKIAkJcHVzaCBAZGlmZl9jbWQsICRwYXRjaF9tb2RlX3JldmlzaW9uOwogCX0KZGlmZiAtLWdpdCBhL2dpdC1hbS5zaCBiL2dpdC1hbS5zaAppbmRleCBjMDkyODU1Li43ZWE0MGZlIDEwMDc1NQotLS0gYS9naXQtYW0uc2gKKysrIGIvZ2l0LWFtLnNoCkBAIC02LDcgKzYsNyBAQAogT1BUSU9OU19LRUVQREFTSERBU0g9CiBPUFRJT05TX1NQRUM9IlwKIGdpdCBhbSBbb3B0aW9uc10gWyg8bWJveD58PE1haWxkaXI+KS4uLl0KLWdpdCBhbSBbb3B0aW9uc10gKC0tcmVzb2x2ZWQgfCAtLXNraXAgfCAtLWFib3J0KQorZ2l0IGFtIFtvcHRpb25zXSAoLS1jb250aW51ZSB8IC0tc2tpcCB8IC0tYWJvcnQpCiAtLQogaSxpbnRlcmFjdGl2ZSAgIHJ1biBpbnRlcmFjdGl2ZWx5CiBiLGJpbmFyeSogICAgICAgKGhpc3RvcmljYWwgb3B0aW9uIC0tIG5vLW9wKQpAQCAtMTAyLDcgKzEwMiw3IEBACiAJICAgIHByaW50ZiAnJXNcbicgIiRyZXNvbHZlbXNnIgogCSAgICBzdG9wX2hlcmUgJDEKICAgICBmaQotICAgIGV2YWxfZ2V0dGV4dGxuICJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiXCRjbWRsaW5lIC0tcmVzb2x2ZWRcIi4KKyAgICBldmFsX2dldHRleHRsbiAiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcIlwkY21kbGluZSAtLWNvbnRpbnVlXCIuCiBJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuIFwiXCRjbWRsaW5lIC0tc2tpcFwiIGluc3RlYWQuCiBUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcsIHJ1biBcIlwkY21kbGluZSAtLWFib3J0XCIuIgogCkBAIC00NDYsNiArNDQ2LDggQEAKICMgSWYgdGhlIGRvdGVzdCBkaXJlY3RvcnkgZXhpc3RzLCBidXQgd2UgaGF2ZSBmaW5pc2hlZCBhcHBseWluZyBhbGwgdGhlCiAjIHBhdGNoZXMgaW4gdGhlbSwgY2xlYXIgaXQgb3V0LgogaWYgdGVzdCAtZCAiJGRvdGVzdCIgJiYKKyAgIHRlc3QgLWYgIiRkb3Rlc3QvbGFzdCIgJiYKKyAgIHRlc3QgLWYgIiRkb3Rlc3QvbmV4dCIgJiYKICAgIGxhc3Q9JChjYXQgIiRkb3Rlc3QvbGFzdCIpICYmCiAgICBuZXh0PSQoY2F0ICIkZG90ZXN0L25leHQiKSAmJgogICAgdGVzdCAkIyAhPSAwICYmCkBAIC00NTQsNyArNDU2LDcgQEAKICAgIHJtIC1mciAiJGRvdGVzdCIKIGZpCiAKLWlmIHRlc3QgLWQgIiRkb3Rlc3QiCitpZiB0ZXN0IC1kICIkZG90ZXN0IiAmJiB0ZXN0IC1mICIkZG90ZXN0L2xhc3QiICYmIHRlc3QgLWYgIiRkb3Rlc3QvbmV4dCIKIHRoZW4KIAljYXNlICIkIywkc2tpcCRyZXNvbHZlZCRhYm9ydCIgaW4KIAkwLCp0KikKQEAgLTUwNCw3ICs1MDYsMjQgQEAKIAllc2FjCiAJcm0gLWYgIiRkb3Rlc3QvZGlydHlpbmRleCIKIGVsc2UKLQkjIE1ha2Ugc3VyZSB3ZSBhcmUgbm90IGdpdmVuIC0tc2tpcCwgLS1yZXNvbHZlZCwgbm9yIC0tYWJvcnQKKwkjIFBvc3NpYmxlIHN0cmF5ICRkb3Rlc3QgZGlyZWN0b3J5IGluIHRoZSBpbmRlcGVuZGVudC1ydW4KKwkjIGNhc2U7IGluIHRoZSAtLXJlYmFzaW5nIGNhc2UsIGl0IGlzIHVwdG8gdGhlIGNhbGxlcgorCSMgKGdpdC1yZWJhc2UtLWFtKSB0byB0YWtlIGNhcmUgb2Ygc3RyYXkgZGlyZWN0b3JpZXMuCisJaWYgdGVzdCAtZCAiJGRvdGVzdCIgJiYgdGVzdCAteiAiJHJlYmFzaW5nIgorCXRoZW4KKwkJY2FzZSAiJHNraXAsJHJlc29sdmVkLCRhYm9ydCIgaW4KKwkJLCx0KQorCQkJcm0gLWZyICIkZG90ZXN0IgorCQkJZXhpdCAwCisJCQk7OworCQkqKQorCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiU3RyYXkgXCRkb3Rlc3QgZGlyZWN0b3J5IGZvdW5kLgorVXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZW1vdmUgaXQuIikiCisJCQk7OworCQllc2FjCisJZmkKKworCSMgTWFrZSBzdXJlIHdlIGFyZSBub3QgZ2l2ZW4gLS1za2lwLCAtLWNvbnRpbnVlLCBub3IgLS1hYm9ydAogCXRlc3QgIiRza2lwJHJlc29sdmVkJGFib3J0IiA9ICIiIHx8CiAJCWRpZSAiJChnZXR0ZXh0ICJSZXNvbHZlIG9wZXJhdGlvbiBub3QgaW4gcHJvZ3Jlc3MsIHdlIGFyZSBub3QgcmVzdW1pbmcuIikiCiAKQEAgLTY1MSw3ICs2NzAsNyBAQAogCSMgIC0gcGF0Y2ggaXMgdGhlIHBhdGNoIGJvZHkuCiAJIwogCSMgV2hlbiB3ZSBhcmUgcmVzdW1pbmcsIHRoZXNlIGZpbGVzIGFyZSBlaXRoZXIgYWxyZWFkeSBwcmVwYXJlZAotCSMgYnkgdGhlIHVzZXIsIG9yIHRoZSB1c2VyIGNhbiB0ZWxsIHVzIHRvIGRvIHNvIGJ5IC0tcmVzb2x2ZWQgZmxhZy4KKwkjIGJ5IHRoZSB1c2VyLCBvciB0aGUgdXNlciBjYW4gdGVsbCB1cyB0byBkbyBzbyBieSAtLWNvbnRpbnVlIGZsYWcuCiAJY2FzZSAiJHJlc3VtZSIgaW4KIAknJykKIAkJaWYgdGVzdCAtZiAiJGRvdGVzdC9yZWJhc2luZyIKQEAgLTkwNCw1ICs5MjMsMTAgQEAKICAgICBmaQogZmkKIAotcm0gLWZyICIkZG90ZXN0IgotZ2l0IGdjIC0tYXV0bworIyBJZiBhbSB3YXMgY2FsbGVkIHdpdGggLS1yZWJhc2luZyAoZnJvbSBnaXQtcmViYXNlLS1hbSksIGl0J3MgdXAgdG8KKyMgdGhlIGNhbGxlciB0byB0YWtlIGNhcmUgb2YgaG91c2VrZWVwaW5nLgoraWYgISB0ZXN0IC1mICIkZG90ZXN0L3JlYmFzaW5nIgordGhlbgorCXJtIC1mciAiJGRvdGVzdCIKKwlnaXQgZ2MgLS1hdXRvCitmaQpkaWZmIC0tZ2l0IGEvZ2l0LWNvbXBhdC11dGlsLmggYi9naXQtY29tcGF0LXV0aWwuaAppbmRleCA2NjBiN2YwLi4xMTVjYjFkIDEwMDY0NAotLS0gYS9naXQtY29tcGF0LXV0aWwuaAorKysgYi9naXQtY29tcGF0LXV0aWwuaApAQCAtODUsMTMgKzg1LDE0IEBACiAjZGVmaW5lIF9ORVRCU0RfU09VUkNFIDEKICNkZWZpbmUgX1NHSV9TT1VSQ0UgMQogCi0jaWZkZWYgV0lOMzIgLyogQm90aCBNaW5HVyBhbmQgTVNWQyAqLworI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pIC8qIEJvdGggTWluR1cgYW5kIE1TVkMgKi8KICMgaWYgZGVmaW5lZCAoX01TQ19WRVIpCiAjICBkZWZpbmUgX1dJTjMyX1dJTk5UIDB4MDUwMgogIyBlbmRpZgogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOICAvKiBzdG9wcyB3aW5kb3dzLmggaW5jbHVkaW5nIHdpbnNvY2suaCAqLwogI2luY2x1ZGUgPHdpbnNvY2syLmg+CiAjaW5jbHVkZSA8d2luZG93cy5oPgorI2RlZmluZSBHSVRfV0lORE9XU19OQVRJVkUKICNlbmRpZgogCiAjaW5jbHVkZSA8dW5pc3RkLmg+CkBAIC0xMjcsNiArMTI4LDcgQEAKICNlbHNlCiAjaW5jbHVkZSA8cG9sbC5oPgogI2VuZGlmCisKICNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQogLyogcHVsbCBpbiBXaW5kb3dzIGNvbXBhdGliaWxpdHkgc3R1ZmYgKi8KICNpbmNsdWRlICJjb21wYXQvbWluZ3cuaCIKQEAgLTE2MywxMiArMTY1LDEwIEBACiB0eXBlZGVmIGxvbmcgaW50cHRyX3Q7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwogI2VuZGlmCi1pbnQgZ2V0X3N0X21vZGVfYml0cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgKm1vZGUpOwogI2lmIGRlZmluZWQoX19DWUdXSU5fXykKICN1bmRlZiBfWE9QRU5fU09VUkNFCiAjaW5jbHVkZSA8Z3JwLmg+CiAjZGVmaW5lIF9YT1BFTl9TT1VSQ0UgNjAwCi0jaW5jbHVkZSAiY29tcGF0L2N5Z3dpbi5oIgogI2Vsc2UKICN1bmRlZiBfQUxMX1NPVVJDRSAvKiBBSVggNS4zTCBkZWZpbmVzIGEgc3RydWN0IGxpc3Qgd2l0aCBfQUxMX1NPVVJDRS4gKi8KICNpbmNsdWRlIDxncnAuaD4KQEAgLTMwMCw2ICszMDAsMTMgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIFRoZSBzZW50aW5lbCBhdHRyaWJ1dGUgaXMgdmFsaWQgZnJvbSBnY2MgdmVyc2lvbiA0LjAgKi8KKyNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoX19HTlVDX18gPj0gNCkKKyNkZWZpbmUgTEFTVF9BUkdfTVVTVF9CRV9OVUxMIF9fYXR0cmlidXRlX18oKHNlbnRpbmVsKSkKKyNlbHNlCisjZGVmaW5lIExBU1RfQVJHX01VU1RfQkVfTlVMTAorI2VuZGlmCisKICNpbmNsdWRlICJjb21wYXQvYnN3YXAuaCIKIAogI2lmZGVmIFVTRV9XSUxETUFUQ0gKZGlmZiAtLWdpdCBhL2dpdC1ndWkvR0lULVZFUlNJT04tR0VOIGIvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4KaW5kZXggNDliNjJlYS4uMGExZjhkNCAxMDA3NTUKLS0tIGEvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4KKysrIGIvZ2l0LWd1aS9HSVQtVkVSU0lPTi1HRU4KQEAgLTEsNyArMSw3IEBACiAjIS9iaW4vc2gKIAogR1ZGPUdJVC1WRVJTSU9OLUZJTEUKLURFRl9WRVI9MC4xNy5HSVRHVUkKK0RFRl9WRVI9MC4xOC5HSVRHVUkKIAogTEY9JwogJwpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9NYWtlZmlsZSBiL2dpdC1ndWkvTWFrZWZpbGUKaW5kZXggZTIyYmE1Yy4uZTljMmJjMyAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9NYWtlZmlsZQorKysgYi9naXQtZ3VpL01ha2VmaWxlCkBAIC0yNTQsNyArMjU0LDcgQEAKIAkgIGF1dG9fbWtpbmRleCBsaWIgJyoudGNsJyBcCiAJfCAkKFRDTF9QQVRIKSAkKFFVSUVUXzJERVZOVUxMKTsgdGhlbiA6IG9rOyBcCiAJZWxzZSBcCi0JIGVjaG8gMT4mMiAiICAgICogJChUQ0xfUEFUSCkgZmFpbGVkOyB1c2luZyB1bm9wdGltaXplZCBsb2FkaW5nIjsgXAorCSBlY2hvID4mMiAiICAgICogJChUQ0xfUEFUSCkgZmFpbGVkOyB1c2luZyB1bm9wdGltaXplZCBsb2FkaW5nIjsgXAogCSBybSAtZiAkQCA7IFwKIAkgZWNobyAnIyBBdXRvZ2VuZXJhdGVkIGJ5IGdpdC1ndWkgTWFrZWZpbGUnID4kQCAmJiBcCiAJIGVjaG8gPj4kQCAmJiBcCkBAIC0yNzQsOCArMjc0LDggQEAKIEdJVC1HVUktVkFSUzogRk9SQ0UKIAlAVkFSUz0nJChUUkFDS19WQVJTKSc7IFwKIAlpZiB0ZXN0IHgiJCRWQVJTIiAhPSB4ImBjYXQgJEAgMj4vZGV2L251bGxgIiA7IHRoZW4gXAotCQllY2hvIDE+JjIgIiAgICAqIG5ldyBsb2NhdGlvbnMgb3IgVGNsL1RrIGludGVycHJldGVyIjsgXAotCQllY2hvIDE+JEAgIiQkVkFSUyI7IFwKKwkJZWNobyA+JjIgIiAgICAqIG5ldyBsb2NhdGlvbnMgb3IgVGNsL1RrIGludGVycHJldGVyIjsgXAorCQllY2hvID4kQCAiJCRWQVJTIjsgXAogCWZpCiAKIGlmZGVmIEdJVEdVSV9NQUNPU1hBUFAKZGlmZiAtLWdpdCBhL2dpdC1ndWkvZ2l0LWd1aS5zaCBiL2dpdC1ndWkvZ2l0LWd1aS5zaAppbmRleCA4OWY2MzZmLi4xNTNmODVkIDEwMDc1NQotLS0gYS9naXQtZ3VpL2dpdC1ndWkuc2gKKysrIGIvZ2l0LWd1aS9naXQtZ3VpLnNoCkBAIC0xMzcsNiArMTM3LDIwIEBACiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMjCisjIyBPbiBNYWMsIGJyaW5nIHRoZSBjdXJyZW50IFdpc2ggcHJvY2VzcyB3aW5kb3cgdG8gZnJvbnQKKworaWYge1t0ayB3aW5kb3dpbmdzeXN0ZW1dIGVxICJhcXVhIn0geworCWNhdGNoIHsKKwkJZXhlYyBvc2FzY3JpcHQgLWUgW2Zvcm1hdCB7CisJCQl0ZWxsIGFwcGxpY2F0aW9uICJTeXN0ZW0gRXZlbnRzIgorCQkJCXNldCBmcm9udG1vc3Qgb2YgcHJvY2Vzc2VzIHdob3NlIHVuaXggaWQgaXMgJWQgdG8gdHJ1ZQorCQkJZW5kIHRlbGwKKwkJfSBbcGlkXV0KKwl9Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCiAjIyByZWFkIG9ubHkgZ2xvYmFscwogCiBzZXQgX2FwcG5hbWUge0dpdCBHdWl9CkBAIC0zMDAzLDE4ICszMDE3LDExIEBACiAJc2V0IGp1bXBfc3BlYyB7fQogCXNldCBpc19wYXRoIDAKIAlmb3JlYWNoIGEgJGFyZ3YgewotCQlpZiB7W2ZpbGUgZXhpc3RzICRhXX0gewotCQkJaWYgeyRwYXRoIG5lIHt9fSB1c2FnZQotCQkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRhXQotCQkJYnJlYWsKLQkJfSBlbHNlaWYge1tmaWxlIGV4aXN0cyAkX3ByZWZpeCRhXX0gewotCQkJaWYgeyRwYXRoIG5lIHt9fSB1c2FnZQotCQkJc2V0IHBhdGggW25vcm1hbGl6ZV9yZWxwYXRoICRfcHJlZml4JGFdCi0JCQlicmVhawotCQl9CisJCXNldCBwIFtmaWxlIGpvaW4gJF9wcmVmaXggJGFdCiAKLQkJaWYgeyRpc19wYXRofSB7CisJCWlmIHskaXNfcGF0aCB8fCBbZmlsZSBleGlzdHMgJHBdfSB7CiAJCQlpZiB7JHBhdGggbmUge319IHVzYWdlCisJCQlzZXQgcGF0aCBbbm9ybWFsaXplX3JlbHBhdGggJHBdCiAJCQlicmVhawogCQl9IGVsc2VpZiB7JGEgZXEgey0tfX0gewogCQkJaWYgeyRwYXRoIG5lIHt9fSB7CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2wgYi9naXQtZ3VpL2xpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2wKaW5kZXggNjU3ZjdkNS4uZWU1ODk4MSAxMDA2NDQKLS0tIGEvZ2l0LWd1aS9saWIvY2hvb3NlX3JlcG9zaXRvcnkudGNsCisrKyBiL2dpdC1ndWkvbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbApAQCAtMjg2LDcgKzI4Niw5IEBACiAJZGVzdHJveSAkd19ib2R5CiAJaWYgeyFbd2luZm8gZXhpc3RzICR3X25leHRdfSB7CiAJCSR7TlN9OjpidXR0b24gJHdfbmV4dCAtZGVmYXVsdCBhY3RpdmUKLQkJcGFjayAkd19uZXh0IC1zaWRlIHJpZ2h0IC1wYWR4IDUgLWJlZm9yZSAkd19xdWl0CisJCXNldCBwb3MgLWJlZm9yZQorCQlpZiB7W3RrIHdpbmRvd2luZ3N5c3RlbV0gZXEgIndpbjMyIn0geyBzZXQgcG9zIC1hZnRlciB9CisJCXBhY2sgJHdfbmV4dCAtc2lkZSByaWdodCAtcGFkeCA1ICRwb3MgJHdfcXVpdAogCX0KIAlfZG9fJGFjdGlvbiAkdGhpcwogfQpkaWZmIC0tZ2l0IGEvZ2l0LWd1aS9saWIvZGlmZi50Y2wgYi9naXQtZ3VpL2xpYi9kaWZmLnRjbAppbmRleCBlYzQ0MDU1Li4zMGQ5YTc5IDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9kaWZmLnRjbAorKysgYi9naXQtZ3VpL2xpYi9kaWZmLnRjbApAQCAtNzY0LDggKzc2NCwxNSBAQAogCQkJCSMgY29udGV4dCBsaW5lCiAJCQkJc2V0IGxuIFskdWlfZGlmZiBnZXQgJGlfbCAkbmV4dF9sXQogCQkJCXNldCBwYXRjaCAiJHBhdGNoJHByZV9jb250ZXh0JGxuIgotCQkJCXNldCBuIFtleHByICRuKzFdCi0JCQkJc2V0IG0gW2V4cHIgJG0rMV0KKwkJCQkjIFNraXAgdGhlICJcIE5vIG5ld2xpbmUgYXQgZW5kIG9mCisJCQkJIyBmaWxlIi4gRGVwZW5kaW5nIG9uIHRoZSBsb2NhbGUgc2V0dGluZworCQkJCSMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoaXMgbGluZSBsb29rcworCQkJCSMgbGlrZSBleGFjdGx5LiBUaGUgb25seSB0aGluZyB3ZSBkbworCQkJCSMga25vdyBpcyB0aGF0IGl0IHN0YXJ0cyB3aXRoICJcICIKKwkJCQlpZiB7IVtzdHJpbmcgbWF0Y2gge1xcICp9ICRsbl19IHsKKwkJCQkJc2V0IG4gW2V4cHIgJG4rMV0KKwkJCQkJc2V0IG0gW2V4cHIgJG0rMV0KKwkJCQl9CiAJCQkJc2V0IHByZV9jb250ZXh0IHt9CiAJCQl9IGVsc2VpZiB7JGMxIGVxICR0b19jb250ZXh0fSB7CiAJCQkJIyB0dXJuIGNoYW5nZSBsaW5lIGludG8gY29udGV4dCBsaW5lCmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9tZXJnZXRvb2wudGNsIGIvZ2l0LWd1aS9saWIvbWVyZ2V0b29sLnRjbAppbmRleCAzYzhlNzNiLi4xMjBiYzQwIDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9tZXJnZXRvb2wudGNsCisrKyBiL2dpdC1ndWkvbGliL21lcmdldG9vbC50Y2wKQEAgLTE4OSw5ICsxODksOSBAQAogCX0KIAliYzMgewogCQlpZiB7JGJhc2Vfc3RhZ2UgbmUge319IHsKLQkJCXNldCBjbWRsaW5lIFtsaXN0ICIkbWVyZ2VfdG9vbF9wYXRoIiAiJExPQ0FMIiAiJFJFTU9URSIgIiRCQVNFIiAtbWVyZ2VvdXRwdXQ9IiRNRVJHRUQiXQorCQkJc2V0IGNtZGxpbmUgW2xpc3QgIiRtZXJnZV90b29sX3BhdGgiICIkTE9DQUwiICIkUkVNT1RFIiAiJEJBU0UiICItbWVyZ2VvdXRwdXQ9JE1FUkdFRCJdCiAJCX0gZWxzZSB7Ci0JCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgIiRMT0NBTCIgIiRSRU1PVEUiIC1tZXJnZW91dHB1dD0iJE1FUkdFRCJdCisJCQlzZXQgY21kbGluZSBbbGlzdCAiJG1lcmdlX3Rvb2xfcGF0aCIgIiRMT0NBTCIgIiRSRU1PVEUiICItbWVyZ2VvdXRwdXQ9JE1FUkdFRCJdCiAJCX0KIAl9CiAJZWNtZXJnZSB7CmRpZmYgLS1naXQgYS9naXQtZ3VpL2xpYi9yZW1vdGUudGNsIGIvZ2l0LWd1aS9saWIvcmVtb3RlLnRjbAppbmRleCA1ZTRlN2Y0Li40ZTVjNzg0IDEwMDY0NAotLS0gYS9naXQtZ3VpL2xpYi9yZW1vdGUudGNsCisrKyBiL2dpdC1ndWkvbGliL3JlbW90ZS50Y2wKQEAgLTI0NSw3ICsyNDUsOCBAQAogCXNldCBwcnVuZV9tICRyZW1vdGVfbS5wcnVuZQogCWlmIHskaGF2ZV9yZW1vdGUgPiAxfSB7CiAJCW1ha2Vfc3VyZV9yZW1vdGVfc3VibWVudWVzX2V4aXN0ICRyZW1vdGVfbQotCQlpZiB7WyRmZXRjaF9tIGVudHJ5Y2dldCBlbmQgLWxhYmVsXSBuZSAiQWxsIn0geworCQlpZiB7WyRmZXRjaF9tIHR5cGUgZW5kXSBlcSAiY29tbWFuZCIgXAorCQkJJiYgWyRmZXRjaF9tIGVudHJ5Y2dldCBlbmQgLWxhYmVsXSBuZSAiQWxsIn0gewogCiAJCQkkZmV0Y2hfbSBpbnNlcnQgZW5kIHNlcGFyYXRvcgogCQkJJGZldGNoX20gaW5zZXJ0IGVuZCBjb21tYW5kIFwKQEAgLTI1OSw3ICsyNjAsOCBAQAogCQl9CiAJfSBlbHNlIHsKIAkJaWYge1t3aW5mbyBleGlzdHMgJGZldGNoX21dfSB7Ci0JCQlpZiB7WyRmZXRjaF9tIGVudHJ5Y2dldCBlbmQgLWxhYmVsXSBlcSAiQWxsIn0geworCQkJaWYge1skZmV0Y2hfbSB0eXBlIGVuZF0gZXEgImNvbW1hbmQiIFwKKwkJCQkmJiBbJGZldGNoX20gZW50cnljZ2V0IGVuZCAtbGFiZWxdIGVxICJBbGwifSB7CiAKIAkJCQlkZWxldGVfZnJvbV9tZW51ICRmZXRjaF9tIGVuZAogCQkJCWRlbGV0ZV9mcm9tX21lbnUgJGZldGNoX20gZW5kCmRpZmYgLS1naXQgYS9naXQtZ3VpL3BvL2ZyLnBvIGIvZ2l0LWd1aS9wby9mci5wbwppbmRleCA0MDQ0MWRiLi4wYWZmMTg2IDEwMDY0NAotLS0gYS9naXQtZ3VpL3BvL2ZyLnBvCisrKyBiL2dpdC1ndWkvcG8vZnIucG8KQEAgLTExMzksNyArMTEzOSw3IEBACiAKICM6IGxpYi9jaG9vc2VfcmVwb3NpdG9yeS50Y2w6NTE0CiBtc2dpZCAiRnVsbCBDb3B5IChTbG93ZXIsIFJlZHVuZGFudCBCYWNrdXApIgotbXNnc3RyICJDb3B5IGNvbXBsw6h0ZSAocGx1cyBsZW50LCBzYXV2ZWdhcmRlIHJlZG9uZGFudGUpIgorbXNnc3RyICJDb3BpZSBjb21wbMOodGUgKHBsdXMgbGVudCwgc2F1dmVnYXJkZSByZWRvbmRhbnRlKSIKIAogIzogbGliL2Nob29zZV9yZXBvc2l0b3J5LnRjbDo1MjAKIG1zZ2lkICJTaGFyZWQgKEZhc3Rlc3QsIE5vdCBSZWNvbW1lbmRlZCwgTm8gQmFja3VwKSIKZGlmZiAtLWdpdCBhL2dpdC1tZXJnZXRvb2wtLWxpYi5zaCBiL2dpdC1tZXJnZXRvb2wtLWxpYi5zaAppbmRleCBlMzM4YmU1Li5mZWVlNmE0IDEwMDY0NAotLS0gYS9naXQtbWVyZ2V0b29sLS1saWIuc2gKKysrIGIvZ2l0LW1lcmdldG9vbC0tbGliLnNoCkBAIC0xMTQsMTAgKzExNCwzNyBAQAogCXRlc3QgLW4gIiRjbWQiCiB9CiAKK3NldHVwX3VzZXJfdG9vbCAoKSB7CisJbWVyZ2VfdG9vbF9jbWQ9JChnZXRfbWVyZ2VfdG9vbF9jbWQgIiR0b29sIikKKwl0ZXN0IC1uICIkbWVyZ2VfdG9vbF9jbWQiIHx8IHJldHVybiAxCisKKwlkaWZmX2NtZCAoKSB7CisJCSggZXZhbCAkbWVyZ2VfdG9vbF9jbWQgKQorCQlzdGF0dXM9JD8KKwkJcmV0dXJuICRzdGF0dXMKKwl9CisKKwltZXJnZV9jbWQgKCkgeworCQl0cnVzdF9leGl0X2NvZGU9JChnaXQgY29uZmlnIC0tYm9vbCBcCisJCQkibWVyZ2V0b29sLiQxLnRydXN0RXhpdENvZGUiIHx8IGVjaG8gZmFsc2UpCisJCWlmIHRlc3QgIiR0cnVzdF9leGl0X2NvZGUiID0gImZhbHNlIgorCQl0aGVuCisJCQl0b3VjaCAiJEJBQ0tVUCIKKwkJCSggZXZhbCAkbWVyZ2VfdG9vbF9jbWQgKQorCQkJc3RhdHVzPSQ/CisJCQljaGVja191bmNoYW5nZWQKKwkJZWxzZQorCQkJKCBldmFsICRtZXJnZV90b29sX2NtZCApCisJCQlzdGF0dXM9JD8KKwkJZmkKKwkJcmV0dXJuICRzdGF0dXMKKwl9Cit9CisKIHNldHVwX3Rvb2wgKCkgewogCXRvb2w9IiQxIgogCi0JIyBGYWxsYmFjayBkZWZpbml0aW9ucywgdG8gYmUgb3ZlcnJpZGVuIGJ5IHRvb2xzLgorCSMgRmFsbGJhY2sgZGVmaW5pdGlvbnMsIHRvIGJlIG92ZXJyaWRkZW4gYnkgdG9vbHMuCiAJY2FuX21lcmdlICgpIHsKIAkJcmV0dXJuIDAKIAl9CkBAIC0xNDIsMTUgKzE2OSwxNSBAQAogCiAJaWYgISB0ZXN0IC1mICIkTUVSR0VfVE9PTFNfRElSLyR0b29sIgogCXRoZW4KLQkJIyBVc2UgYSBzcGVjaWFsIHJldHVybiBjb2RlIGZvciB0aGlzIGNhc2Ugc2luY2Ugd2Ugd2FudCB0bwotCQkjIHNvdXJjZSAiZGVmYXVsdHMiIGV2ZW4gd2hlbiBhbiBleHBsaWNpdCB0b29sIHBhdGggaXMKLQkJIyBjb25maWd1cmVkIHNpbmNlIHRoZSB1c2VyIGNhbiB1c2UgdGhhdCB0byBvdmVycmlkZSB0aGUKLQkJIyBkZWZhdWx0IHBhdGggaW4gdGhlIHNjcmlwdGxldC4KLQkJcmV0dXJuIDIKKwkJc2V0dXBfdXNlcl90b29sCisJCXJldHVybiAkPwogCWZpCiAKIAkjIExvYWQgdGhlIHJlZGVmaW5lZCBmdW5jdGlvbnMKIAkuICIkTUVSR0VfVE9PTFNfRElSLyR0b29sIgorCSMgTm93IGxldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgZGVmYXVsdCBjb21tYW5kIGZvciB0aGUgdG9vbC4gIElmCisJIyB0aGV5IGhhdmUgbm90IGRvbmUgc28gdGhlbiB0aGlzIHdpbGwgcmV0dXJuIDEgd2hpY2ggd2UgaWdub3JlLgorCXNldHVwX3VzZXJfdG9vbAogCiAJaWYgbWVyZ2VfbW9kZSAmJiAhIGNhbl9tZXJnZQogCXRoZW4KQEAgLTE4NywyMCArMjE0LDcgQEAKIAlzdGF0dXM9MAogCiAJIyBCcmluZyB0b29sLXNwZWNpZmljIGZ1bmN0aW9ucyBpbnRvIHNjb3BlCi0Jc2V0dXBfdG9vbCAiJDEiCi0JZXhpdGNvZGU9JD8KLQljYXNlICRleGl0Y29kZSBpbgotCTApCi0JCToKLQkJOzsKLQkyKQotCQkjIFRoZSBjb25maWd1cmVkIHRvb2wgaXMgbm90IGEgYnVpbHQtaW4gdG9vbC4KLQkJdGVzdCAtbiAiJG1lcmdlX3Rvb2xfcGF0aCIgfHwgcmV0dXJuIDEKLQkJOzsKLQkqKQotCQlyZXR1cm4gJGV4aXRjb2RlCi0JCTs7Ci0JZXNhYworCXNldHVwX3Rvb2wgIiQxIiB8fCByZXR1cm4gMQogCiAJaWYgbWVyZ2VfbW9kZQogCXRoZW4KQEAgLTIxMywzOCArMjI3LDEyIEBACiAKICMgUnVuIGEgZWl0aGVyIGEgY29uZmlndXJlZCBvciBidWlsdC1pbiBkaWZmIHRvb2wKIHJ1bl9kaWZmX2NtZCAoKSB7Ci0JbWVyZ2VfdG9vbF9jbWQ9JChnZXRfbWVyZ2VfdG9vbF9jbWQgIiQxIikKLQlpZiB0ZXN0IC1uICIkbWVyZ2VfdG9vbF9jbWQiCi0JdGhlbgotCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKLQkJc3RhdHVzPSQ/Ci0JCXJldHVybiAkc3RhdHVzCi0JZWxzZQotCQlkaWZmX2NtZCAiJDEiCi0JZmkKKwlkaWZmX2NtZCAiJDEiCiB9CiAKICMgUnVuIGEgZWl0aGVyIGEgY29uZmlndXJlZCBvciBidWlsdC1pbiBtZXJnZSB0b29sCiBydW5fbWVyZ2VfY21kICgpIHsKLQltZXJnZV90b29sX2NtZD0kKGdldF9tZXJnZV90b29sX2NtZCAiJDEiKQotCWlmIHRlc3QgLW4gIiRtZXJnZV90b29sX2NtZCIKLQl0aGVuCi0JCXRydXN0X2V4aXRfY29kZT0kKGdpdCBjb25maWcgLS1ib29sIFwKLQkJCSJtZXJnZXRvb2wuJDEudHJ1c3RFeGl0Q29kZSIgfHwgZWNobyBmYWxzZSkKLQkJaWYgdGVzdCAiJHRydXN0X2V4aXRfY29kZSIgPSAiZmFsc2UiCi0JCXRoZW4KLQkJCXRvdWNoICIkQkFDS1VQIgotCQkJKCBldmFsICRtZXJnZV90b29sX2NtZCApCi0JCQlzdGF0dXM9JD8KLQkJCWNoZWNrX3VuY2hhbmdlZAotCQllbHNlCi0JCQkoIGV2YWwgJG1lcmdlX3Rvb2xfY21kICkKLQkJCXN0YXR1cz0kPwotCQlmaQotCQlyZXR1cm4gJHN0YXR1cwotCWVsc2UKLQkJbWVyZ2VfY21kICIkMSIKLQlmaQorCW1lcmdlX2NtZCAiJDEiCiB9CiAKIGxpc3RfbWVyZ2VfdG9vbF9jYW5kaWRhdGVzICgpIHsKZGlmZiAtLWdpdCBhL2dpdC1wNC5weSBiL2dpdC1wNC5weQppbmRleCA4OGZjZjIzLi4zMWU3MWZmIDEwMDc1NQotLS0gYS9naXQtcDQucHkKKysrIGIvZ2l0LXA0LnB5CkBAIC0xNzg2LDcgKzE3ODYsNyBAQAogICAgICAgICAgICAgbWlzc2luZ0dpdFRhZ3MgPSBnaXRUYWdzIC0gcDRMYWJlbHMKICAgICAgICAgICAgIHNlbGYuZXhwb3J0R2l0VGFncyhtaXNzaW5nR2l0VGFncykKIAotICAgICAgICAjIGV4aXQgd2l0aCBlcnJvciB1bmxlc3MgZXZlcnl0aGluZyBhcHBsaWVkIHBlcmZlY2x5CisgICAgICAgICMgZXhpdCB3aXRoIGVycm9yIHVubGVzcyBldmVyeXRoaW5nIGFwcGxpZWQgcGVyZmVjdGx5CiAgICAgICAgIGlmIGxlbihjb21taXRzKSAhPSBsZW4oYXBwbGllZCk6CiAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKIApkaWZmIC0tZ2l0IGEvZ2l0LXB1bGwuc2ggYi9naXQtcHVsbC5zaAppbmRleCA2ODI4ZTJjLi5mMGRmNDFjIDEwMDc1NQotLS0gYS9naXQtcHVsbC5zaAorKysgYi9naXQtcHVsbC5zaApAQCAtNSw3ICs1LDcgQEAKICMgRmV0Y2ggb25lIG9yIG1vcmUgcmVtb3RlIHJlZnMgYW5kIG1lcmdlIGl0L3RoZW0gaW50byB0aGUgY3VycmVudCBIRUFELgogCiBVU0FHRT0nWy1uIHwgLS1uby1zdGF0XSBbLS1bbm8tXWNvbW1pdF0gWy0tW25vLV1zcXVhc2hdIFstLVtuby1dZmZdIFstcyBzdHJhdGVneV0uLi4gWzxmZXRjaC1vcHRpb25zPl0gPHJlcG8+IDxoZWFkPi4uLicKLUxPTkdfVVNBR0U9J0ZldGNoIG9uZSBvciBtb3JlIHJlbW90ZSByZWZzIGFuZCBtZXJnZSBpdC90aGVtIGludG8gdGhlIGN1cnJlbnQgSEVBRC4nCitMT05HX1VTQUdFPSdGZXRjaCBvbmUgb3IgbW9yZSByZW1vdGUgcmVmcyBhbmQgaW50ZWdyYXRlIGl0L3RoZW0gd2l0aCB0aGUgY3VycmVudCBIRUFELicKIFNVQkRJUkVDVE9SWV9PSz1ZZXMKIE9QVElPTlNfU1BFQz0KIC4gZ2l0LXNoLXNldHVwCmRpZmYgLS1naXQgYS9naXQtcmViYXNlLS1hbS5zaCBiL2dpdC1yZWJhc2UtLWFtLnNoCmluZGV4IGY4NDg1NGYuLjM0ZTMxMDIgMTAwNjQ0Ci0tLSBhL2dpdC1yZWJhc2UtLWFtLnNoCisrKyBiL2dpdC1yZWJhc2UtLWFtLnNoCkBAIC03LDEyICs3LDEyIEBACiBjb250aW51ZSkKIAlnaXQgYW0gLS1yZXNvbHZlZCAtLXJlc29sdmVtc2c9IiRyZXNvbHZlbXNnIiAmJgogCW1vdmVfdG9fb3JpZ2luYWxfYnJhbmNoCi0JZXhpdAorCXJldHVybgogCTs7CiBza2lwKQogCWdpdCBhbSAtLXNraXAgLS1yZXNvbHZlbXNnPSIkcmVzb2x2ZW1zZyIgJiYKIAltb3ZlX3RvX29yaWdpbmFsX2JyYW5jaAotCWV4aXQKKwlyZXR1cm4KIAk7OwogZXNhYwogCkBAIC01Niw3ICs1Niw3IEBACiAKIAkJQXMgYSByZXN1bHQsIGdpdCBjYW5ub3QgcmViYXNlIHRoZW0uCiAJCUVPRgotCQlleGl0ICQ/CisJCXJldHVybiAkPwogCWZpCiAKIAlnaXQgYW0gJGdpdF9hbV9vcHQgLS1yZWJhc2luZyAtLXJlc29sdmVtc2c9IiRyZXNvbHZlbXNnIiA8IiRHSVRfRElSL3JlYmFzZWQtcGF0Y2hlcyIKQEAgLTY4LDcgKzY4LDcgQEAKIGlmIHRlc3QgMCAhPSAkcmV0CiB0aGVuCiAJdGVzdCAtZCAiJHN0YXRlX2RpciIgJiYgd3JpdGVfYmFzaWNfc3RhdGUKLQlleGl0ICRyZXQKKwlyZXR1cm4gJHJldAogZmkKIAogbW92ZV90b19vcmlnaW5hbF9icmFuY2gKZGlmZiAtLWdpdCBhL2dpdC1yZWJhc2UtLWludGVyYWN0aXZlLnNoIGIvZ2l0LXJlYmFzZS0taW50ZXJhY3RpdmUuc2gKaW5kZXggNTgyMmIyYy4uODNkNmQ0NiAxMDA2NDQKLS0tIGEvZ2l0LXJlYmFzZS0taW50ZXJhY3RpdmUuc2gKKysrIGIvZ2l0LXJlYmFzZS0taW50ZXJhY3RpdmUuc2gKQEAgLTgwLDYgKzgwLDE4IEBACiByZXdyaXR0ZW5fbGlzdD0iJHN0YXRlX2RpciIvcmV3cml0dGVuLWxpc3QKIHJld3JpdHRlbl9wZW5kaW5nPSIkc3RhdGVfZGlyIi9yZXdyaXR0ZW4tcGVuZGluZwogCitzdHJhdGVneV9hcmdzPQoraWYgdGVzdCAtbiAiJGRvX21lcmdlIgordGhlbgorCXN0cmF0ZWd5X2FyZ3M9JHtzdHJhdGVneTorLS1zdHJhdGVneT0kc3RyYXRlZ3l9CisJZXZhbCAnCisJCWZvciBzdHJhdGVneV9vcHQgaW4gJyIkc3RyYXRlZ3lfb3B0cyInCisJCWRvCisJCQlzdHJhdGVneV9hcmdzPSIkc3RyYXRlZ3lfYXJncyAtWCQoZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlICIke3N0cmF0ZWd5X29wdCMtLX0iKSIKKwkJZG9uZQorCScKK2ZpCisKIEdJVF9DSEVSUllfUElDS19IRUxQPSIkcmVzb2x2ZW1zZyIKIGV4cG9ydCBHSVRfQ0hFUlJZX1BJQ0tfSEVMUAogCkBAIC0yMzksNyArMjUxLDcgQEAKIAogCXRlc3QgLWQgIiRyZXdyaXR0ZW4iICYmCiAJCXBpY2tfb25lX3ByZXNlcnZpbmdfbWVyZ2VzICIkQCIgJiYgcmV0dXJuCi0Jb3V0cHV0IGdpdCBjaGVycnktcGljayAkZW1wdHlfYXJncyAkZmYgIiRAIgorCW91dHB1dCBldmFsIGdpdCBjaGVycnktcGljayAiJHN0cmF0ZWd5X2FyZ3MiICRlbXB0eV9hcmdzICRmZiAiJEAiCiB9CiAKIHBpY2tfb25lX3ByZXNlcnZpbmdfbWVyZ2VzICgpIHsKQEAgLTM0MCw5ICszNTIsOCBAQAogCQkJbXNnX2NvbnRlbnQ9IiQoY29tbWl0X21lc3NhZ2UgJHNoYTEpIgogCQkJIyBObyBwb2ludCBpbiBtZXJnaW5nIHRoZSBmaXJzdCBwYXJlbnQsIHRoYXQncyBIRUFECiAJCQluZXdfcGFyZW50cz0ke25ld19wYXJlbnRzIyAkZmlyc3RfcGFyZW50fQotCQkJaWYgISBkb193aXRoX2F1dGhvciBvdXRwdXQgXAotCQkJCWdpdCBtZXJnZSAtLW5vLWZmICR7c3RyYXRlZ3k6Ky1zICRzdHJhdGVneX0gLW0gXAotCQkJCQkiJG1zZ19jb250ZW50IiAkbmV3X3BhcmVudHMKKwkJCWlmICEgZG9fd2l0aF9hdXRob3Igb3V0cHV0IGV2YWwgXAorCQkJJ2dpdCBtZXJnZSAtLW5vLWZmICRzdHJhdGVneV9hcmdzIC1tICIkbXNnX2NvbnRlbnQiICRuZXdfcGFyZW50cycKIAkJCXRoZW4KIAkJCQlwcmludGYgIiVzXG4iICIkbXNnX2NvbnRlbnQiID4gIiRHSVRfRElSIi9NRVJHRV9NU0cKIAkJCQlkaWVfd2l0aF9wYXRjaCAkc2hhMSAiRXJyb3IgcmVkb2luZyBtZXJnZSAkc2hhMSIKQEAgLTM1MCw3ICszNjEsNyBAQAogCQkJZWNobyAiJHNoYTEgJChnaXQgcmV2LXBhcnNlIEhFQUReMCkiID4+ICIkcmV3cml0dGVuX2xpc3QiCiAJCQk7OwogCQkqKQotCQkJb3V0cHV0IGdpdCBjaGVycnktcGljayAiJEAiIHx8CisJCQlvdXRwdXQgZXZhbCBnaXQgY2hlcnJ5LXBpY2sgIiRzdHJhdGVneV9hcmdzIiAiJEAiIHx8CiAJCQkJZGllX3dpdGhfcGF0Y2ggJHNoYTEgIkNvdWxkIG5vdCBwaWNrICRzaGExIgogCQkJOzsKIAkJZXNhYwpAQCAtNjI4LDE3ICs2MzksMTYgQEAKIAkJIiRHSVRfRElSIi9ob29rcy9wb3N0LXJld3JpdGUgcmViYXNlIDwgIiRyZXdyaXR0ZW5fbGlzdCIKIAkJdHJ1ZSAjIHdlIGRvbid0IGNhcmUgaWYgdGhpcyBob29rIGZhaWxlZAogCWZpICYmCi0Jcm0gLXJmICIkc3RhdGVfZGlyIiAmJgotCWdpdCBnYyAtLWF1dG8gJiYKIAl3YXJuICJTdWNjZXNzZnVsbHkgcmViYXNlZCBhbmQgdXBkYXRlZCAkaGVhZF9uYW1lLiIKIAotCWV4aXQKKwlyZXR1cm4gMSAjIG5vdCBmYWlsdXJlOyBqdXN0IHRvIGJyZWFrIHRoZSBkb19yZXN0IGxvb3AKIH0KIAorIyBjYW4gb25seSByZXR1cm4gMCwgd2hlbiB0aGUgaW5maW5pdGUgbG9vcCBicmVha3MKIGRvX3Jlc3QgKCkgewogCXdoaWxlIDoKIAlkbwotCQlkb19uZXh0CisJCWRvX25leHQgfHwgYnJlYWsKIAlkb25lCiB9CiAKQEAgLTY5MCw4ICs3MDAsMjIgQEAKIAkJY2FzZSAiJG1lc3NhZ2UiIGluCiAJCSJzcXVhc2ghICIqfCJmaXh1cCEgIiopCiAJCQlhY3Rpb249IiR7bWVzc2FnZSUlISp9IgotCQkJcmVzdD0iJHttZXNzYWdlIyohIH0iCi0JCQllY2hvICIkc2hhMSAkYWN0aW9uICRyZXN0IgorCQkJcmVzdD0kbWVzc2FnZQorCQkJcHJlZml4PQorCQkJIyBza2lwIGFsbCBzcXVhc2ghIG9yIGZpeHVwISAoYnV0IHNhdmUgZm9yIGxhdGVyKQorCQkJd2hpbGUgOgorCQkJZG8KKwkJCQljYXNlICIkcmVzdCIgaW4KKwkJCQkic3F1YXNoISAiKnwiZml4dXAhICIqKQorCQkJCQlwcmVmaXg9IiRwcmVmaXgke3Jlc3QlJSEqfSwiCisJCQkJCXJlc3Q9IiR7cmVzdCMqISB9IgorCQkJCQk7OworCQkJCSopCisJCQkJCWJyZWFrCisJCQkJCTs7CisJCQkJZXNhYworCQkJZG9uZQorCQkJZWNobyAiJHNoYTEgJGFjdGlvbiAkcHJlZml4ICRyZXN0IgogCQkJIyBpZiBpdCdzIGEgc2luZ2xlIHdvcmQsIHRyeSB0byByZXNvbHZlIHRvIGEgZnVsbCBzaGExIGFuZAogCQkJIyBlbWl0IGEgc2Vjb25kIGNvcHkuIFRoaXMgYWxsb3dzIHVzIHRvIG1hdGNoIG9uIGJvdGggbWVzc2FnZQogCQkJIyBhbmQgb24gc2hhMSBwcmVmaXgKQEAgLTcwMCw3ICs3MjQsNyBAQAogCQkJCWlmIHRlc3QgLW4gIiRmdWxsc2hhIjsgdGhlbgogCQkJCQkjIHByZWZpeCB0aGUgYWN0aW9uIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgbGluZSBhcwogCQkJCQkjIGludGVuZGVkIGZvciBmdWxsIHNoYTEgbWF0Y2gKLQkJCQkJZWNobyAiJHNoYTEgKyRhY3Rpb24gJGZ1bGxzaGEiCisJCQkJCWVjaG8gIiRzaGExICskYWN0aW9uICRwcmVmaXggJGZ1bGxzaGEiCiAJCQkJZmkKIAkJCWZpCiAJCWVzYWMKQEAgLTcxNSw3ICs3MzksNyBAQAogCQllc2FjCiAJCXByaW50ZiAnJXNcbicgIiRwaWNrICRzaGExICRtZXNzYWdlIgogCQl1c2VkPSIkdXNlZCRzaGExICIKLQkJd2hpbGUgcmVhZCAtciBzcXVhc2ggYWN0aW9uIG1zZ19jb250ZW50CisJCXdoaWxlIHJlYWQgLXIgc3F1YXNoIGFjdGlvbiBtc2dfcHJlZml4IG1zZ19jb250ZW50CiAJCWRvCiAJCQljYXNlICIgJHVzZWQiIGluCiAJCQkqIiAkc3F1YXNoICIqKSBjb250aW51ZSA7OwpAQCAtNzMxLDcgKzc1NSw4IEBACiAJCQkJY2FzZSAiJG1lc3NhZ2UiIGluICIkbXNnX2NvbnRlbnQiKikgZW1pdD0xOzsgZXNhYyA7OwogCQkJZXNhYwogCQkJaWYgdGVzdCAkZW1pdCA9IDE7IHRoZW4KLQkJCQlwcmludGYgJyVzXG4nICIkYWN0aW9uICRzcXVhc2ggJGFjdGlvbiEgJG1zZ19jb250ZW50IgorCQkJCXJlYWxfcHJlZml4PSQoZWNobyAiJG1zZ19wcmVmaXgiIHwgc2VkICJzLywvISAvZyIpCisJCQkJcHJpbnRmICclc1xuJyAiJGFjdGlvbiAkc3F1YXNoICR7cmVhbF9wcmVmaXh9JG1zZ19jb250ZW50IgogCQkJCXVzZWQ9IiR1c2VkJHNxdWFzaCAiCiAJCQlmaQogCQlkb25lIDwiJDEuc3EiCkBAIC04MDUsMTEgKzgzMCwxMyBAQAogCiAJcmVxdWlyZV9jbGVhbl93b3JrX3RyZWUgInJlYmFzZSIKIAlkb19yZXN0CisJcmV0dXJuIDAKIAk7Owogc2tpcCkKIAlnaXQgcmVyZXJlIGNsZWFyCiAKIAlkb19yZXN0CisJcmV0dXJuIDAKIAk7OwogZWRpdC10b2RvKQogCWdpdCBzdHJpcHNwYWNlIC0tc3RyaXAtY29tbWVudHMgPCIkdG9kbyIgPiIkdG9kbyIubmV3CkBAIC04MzcsMTIgKzg2NCwxNSBAQAogCiBpZiB0ZXN0ICEgLXogIiRzd2l0Y2hfdG8iCiB0aGVuCisJR0lUX1JFRkxPR19BQ1RJT049IiRHSVRfUkVGTE9HX0FDVElPTjogY2hlY2tvdXQgJHN3aXRjaF90byIKIAlvdXRwdXQgZ2l0IGNoZWNrb3V0ICIkc3dpdGNoX3RvIiAtLSB8fAotCQlkaWUgIkNvdWxkIG5vdCBjaGVja291dCAkc3dpdGNoX3RvIgorCWRpZSAiQ291bGQgbm90IGNoZWNrb3V0ICRzd2l0Y2hfdG8iCisKKwljb21tZW50X2Zvcl9yZWZsb2cgc3RhcnQKIGZpCiAKIG9yaWdfaGVhZD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgfHwgZGllICJObyBIRUFEPyIKLW1rZGlyICIkc3RhdGVfZGlyIiB8fCBkaWUgIkNvdWxkIG5vdCBjcmVhdGUgdGVtcG9yYXJ5ICRzdGF0ZV9kaXIiCitta2RpciAtcCAiJHN0YXRlX2RpciIgfHwgZGllICJDb3VsZCBub3QgY3JlYXRlIHRlbXBvcmFyeSAkc3RhdGVfZGlyIgogCiA6ID4gIiRzdGF0ZV9kaXIiL2ludGVyYWN0aXZlIHx8IGRpZSAiQ291bGQgbm90IG1hcmsgYXMgaW50ZXJhY3RpdmUiCiB3cml0ZV9iYXNpY19zdGF0ZQpAQCAtOTgwLDYgKzEwMTAsNyBAQAogCiB0ZXN0IC1kICIkcmV3cml0dGVuIiB8fCB0ZXN0IC1uICIkZm9yY2VfcmViYXNlIiB8fCBza2lwX3VubmVjZXNzYXJ5X3BpY2tzCiAKK0dJVF9SRUZMT0dfQUNUSU9OPSIkR0lUX1JFRkxPR19BQ1RJT046IGNoZWNrb3V0ICRvbnRvX25hbWUiCiBvdXRwdXQgZ2l0IGNoZWNrb3V0ICRvbnRvIHx8IGRpZV9hYm9ydCAiY291bGQgbm90IGRldGFjaCBIRUFEIgogZ2l0IHVwZGF0ZS1yZWYgT1JJR19IRUFEICRvcmlnX2hlYWQKIGRvX3Jlc3QKZGlmZiAtLWdpdCBhL2dpdC1yZWJhc2UtLW1lcmdlLnNoIGIvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2gKaW5kZXggYjEwZjJjZi4uMTZkMTgxNyAxMDA2NDQKLS0tIGEvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2gKKysrIGIvZ2l0LXJlYmFzZS0tbWVyZ2Uuc2gKQEAgLTk2LDcgKzk2LDYgQEAKIAkJCSIkR0lUX0RJUiIvaG9va3MvcG9zdC1yZXdyaXRlIHJlYmFzZSA8IiRzdGF0ZV9kaXIiL3Jld3JpdHRlbgogCQlmaQogCWZpCi0Jcm0gLXIgIiRzdGF0ZV9kaXIiCiAJc2F5IEFsbCBkb25lLgogfQogCkBAIC0xMTAsNyArMTA5LDcgQEAKIAkJY29udGludWVfbWVyZ2UKIAlkb25lCiAJZmluaXNoX3JiX21lcmdlCi0JZXhpdAorCXJldHVybgogCTs7CiBza2lwKQogCXJlYWRfc3RhdGUKQEAgLTEyMiw3ICsxMjEsNyBAQAogCQljb250aW51ZV9tZXJnZQogCWRvbmUKIAlmaW5pc2hfcmJfbWVyZ2UKLQlleGl0CisJcmV0dXJuCiAJOzsKIGVzYWMKIApkaWZmIC0tZ2l0IGEvZ2l0LXJlYmFzZS5zaCBiL2dpdC1yZWJhc2Uuc2gKaW5kZXggMmM2OTJjMy4uOGQ3NjU5YSAxMDA3NTUKLS0tIGEvZ2l0LXJlYmFzZS5zaAorKysgYi9naXQtcmViYXNlLnNoCkBAIC0xMyw2ICsxMyw3IEBACiAgQXZhaWxhYmxlIG9wdGlvbnMgYXJlCiB2LHZlcmJvc2UhICAgICAgICAgZGlzcGxheSBhIGRpZmZzdGF0IG9mIHdoYXQgY2hhbmdlZCB1cHN0cmVhbQogcSxxdWlldCEgICAgICAgICAgIGJlIHF1aWV0LiBpbXBsaWVzIC0tbm8tc3RhdAorYXV0b3N0YXNoISAgICAgICAgIGF1dG9tYXRpY2FsbHkgc3Rhc2gvc3Rhc2ggcG9wIGJlZm9yZSBhbmQgYWZ0ZXIKIG9udG89ISAgICAgICAgICAgICByZWJhc2Ugb250byBnaXZlbiBicmFuY2ggaW5zdGVhZCBvZiB1cHN0cmVhbQogcCxwcmVzZXJ2ZS1tZXJnZXMhIHRyeSB0byByZWNyZWF0ZSBtZXJnZXMgaW5zdGVhZCBvZiBpZ25vcmluZyB0aGVtCiBzLHN0cmF0ZWd5PSEgICAgICAgdXNlIHRoZSBnaXZlbiBtZXJnZSBzdHJhdGVneQpAQCAtNjQsNiArNjUsNyBAQAogdmVyYm9zZT0KIGRpZmZzdGF0PQogdGVzdCAiJChnaXQgY29uZmlnIC0tYm9vbCByZWJhc2Uuc3RhdCkiID0gdHJ1ZSAmJiBkaWZmc3RhdD10CithdXRvc3Rhc2g9IiQoZ2l0IGNvbmZpZyAtLWJvb2wgcmViYXNlLmF1dG9zdGFzaCB8fCBlY2hvIGZhbHNlKSIKIGdpdF9hbV9vcHQ9CiByZWJhc2Vfcm9vdD0KIGZvcmNlX3JlYmFzZT0KQEAgLTgyLDYgKzg0LDggQEAKIHRlc3QgIiQoZ2l0IGNvbmZpZyAtLWJvb2wgcmViYXNlLmF1dG9zcXVhc2gpIiA9ICJ0cnVlIiAmJiBhdXRvc3F1YXNoPXQKIAogcmVhZF9iYXNpY19zdGF0ZSAoKSB7CisJdGVzdCAtZiAiJHN0YXRlX2Rpci9oZWFkLW5hbWUiICYmCisJdGVzdCAtZiAiJHN0YXRlX2Rpci9vbnRvIiAmJgogCWhlYWRfbmFtZT0kKGNhdCAiJHN0YXRlX2RpciIvaGVhZC1uYW1lKSAmJgogCW9udG89JChjYXQgIiRzdGF0ZV9kaXIiL29udG8pICYmCiAJIyBXZSBhbHdheXMgd3JpdGUgdG8gb3JpZy1oZWFkLCBidXQgaW50ZXJhY3RpdmUgcmViYXNlIHVzZWQgdG8gd3JpdGUgdG8KQEAgLTE0Myw2ICsxNDcsMjYgQEAKIAllc2FjCiB9CiAKK2ZpbmlzaF9yZWJhc2UgKCkgeworCWlmIHRlc3QgLWYgIiRzdGF0ZV9kaXIvYXV0b3N0YXNoIgorCXRoZW4KKwkJc3Rhc2hfc2hhMT0kKGNhdCAiJHN0YXRlX2Rpci9hdXRvc3Rhc2giKQorCQlpZiBnaXQgc3Rhc2ggYXBwbHkgJHN0YXNoX3NoYTEgMj4mMSA+L2Rldi9udWxsCisJCXRoZW4KKwkJCWVjaG8gIiQoZ2V0dGV4dCAnQXBwbGllZCBhdXRvc3Rhc2guJykiCisJCWVsc2UKKwkJCWdpdCBzdGFzaCBzdG9yZSAtbSAiYXV0b3N0YXNoIiAtcSAkc3Rhc2hfc2hhMSB8fAorCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiQ2Fubm90IHN0b3JlIFwkc3Rhc2hfc2hhMSIpIgorCQkJZ2V0dGV4dCAnQXBwbHlpbmcgYXV0b3N0YXNoIHJlc3VsdGVkIGluIGNvbmZsaWN0cy4KK1lvdXIgY2hhbmdlcyBhcmUgc2FmZSBpbiB0aGUgc3Rhc2guCitZb3UgY2FuIHJ1biAiZ2l0IHN0YXNoIHBvcCIgb3IgImdpdCBzdGFzaCBkcm9wIiBhdCBhbnkgdGltZS4KKycKKwkJZmkKKwlmaQorCWdpdCBnYyAtLWF1dG8gJiYKKwlybSAtcmYgIiRzdGF0ZV9kaXIiCit9CisKIHJ1bl9zcGVjaWZpY19yZWJhc2UgKCkgewogCWlmIFsgIiRpbnRlcmFjdGl2ZV9yZWJhc2UiID0gaW1wbGllZCBdOyB0aGVuCiAJCUdJVF9FRElUT1I9OgpAQCAtMTUwLDYgKzE3NCwxMiBAQAogCQlhdXRvc3F1YXNoPQogCWZpCiAJLiBnaXQtcmViYXNlLS0kdHlwZQorCXJldD0kPworCWlmIHRlc3QgJHJldCAtZXEgMAorCXRoZW4KKwkJZmluaXNoX3JlYmFzZQorCWZpCisJZXhpdCAkcmV0CiB9CiAKIHJ1bl9wcmVfcmViYXNlX2hvb2sgKCkgewpAQCAtMjQxLDYgKzI3MSw5IEBACiAJLS1zdGF0KQogCQlkaWZmc3RhdD10CiAJCTs7CisJLS1hdXRvc3Rhc2gpCisJCWF1dG9zdGFzaD10cnVlCisJCTs7CiAJLXYpCiAJCXZlcmJvc2U9dAogCQlkaWZmc3RhdD10CkBAIC0zNDEsNyArMzc0LDcgQEAKIAkJOzsKIAllc2FjCiAJb3V0cHV0IGdpdCByZXNldCAtLWhhcmQgJG9yaWdfaGVhZAotCXJtIC1yICIkc3RhdGVfZGlyIgorCWZpbmlzaF9yZWJhc2UKIAlleGl0CiAJOzsKIGVkaXQtdG9kbykKQEAgLTQwMCw3ICs0MzMsNyBAQAogCQlzaGlmdAogCQk7OwogCWVzYWMKLQl1cHN0cmVhbT1gZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHt1cHN0cmVhbV9uYW1lfV4wImAgfHwKKwl1cHN0cmVhbT0kKHBlZWxfY29tbWl0dGlzaCAiJHt1cHN0cmVhbV9uYW1lfSIpIHx8CiAJZGllICIkKGV2YWxfZ2V0dGV4dCAiaW52YWxpZCB1cHN0cmVhbSBcJHVwc3RyZWFtX25hbWUiKSIKIAl1cHN0cmVhbV9hcmc9IiR1cHN0cmVhbV9uYW1lIgogZWxzZQpAQCAtNDM2LDcgKzQ2OSw3IEBACiAJZmkKIAk7OwogKikKLQlvbnRvPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHtvbnRvX25hbWV9XjAiKSB8fAorCW9udG89JChwZWVsX2NvbW1pdHRpc2ggIiRvbnRvX25hbWUiKSB8fAogCWRpZSAiJChldmFsX2dldHRleHQgIkRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgY29tbWl0OiBcJG9udG9fbmFtZSIpIgogCTs7CiBlc2FjCkBAIC00ODAsNiArNTEzLDE4IEBACiAJOzsKIGVzYWMKIAoraWYgdGVzdCAiJGF1dG9zdGFzaCIgPSB0cnVlICYmICEgKHJlcXVpcmVfY2xlYW5fd29ya190cmVlKSAyPi9kZXYvbnVsbAordGhlbgorCXN0YXNoX3NoYTE9JChnaXQgc3Rhc2ggY3JlYXRlICJhdXRvc3Rhc2giKSB8fAorCWRpZSAiJChnZXR0ZXh0ICdDYW5ub3QgYXV0b3N0YXNoJykiCisKKwlta2RpciAtcCAiJHN0YXRlX2RpciIgJiYKKwllY2hvICRzdGFzaF9zaGExID4iJHN0YXRlX2Rpci9hdXRvc3Rhc2giICYmCisJc3Rhc2hfYWJicmV2PSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICRzdGFzaF9zaGExKSAmJgorCWVjaG8gIiQoZXZhbF9nZXR0ZXh0ICdDcmVhdGVkIGF1dG9zdGFzaDogJHN0YXNoX2FiYnJldicpIiAmJgorCWdpdCByZXNldCAtLWhhcmQKK2ZpCisKIHJlcXVpcmVfY2xlYW5fd29ya190cmVlICJyZWJhc2UiICIkKGdldHRleHQgIlBsZWFzZSBjb21taXQgb3Igc3Rhc2ggdGhlbS4iKSIKIAogIyBOb3cgd2UgYXJlIHJlYmFzaW5nIGNvbW1pdHMgJHVwc3RyZWFtLi4kb3JpZ19oZWFkIChvciB3aXRoIC0tcm9vdCwKQEAgLTQ5Nyw4ICs1NDIsMTEgQEAKIAlpZiB0ZXN0IC16ICIkZm9yY2VfcmViYXNlIgogCXRoZW4KIAkJIyBMYXppbHkgc3dpdGNoIHRvIHRoZSB0YXJnZXQgYnJhbmNoIGlmIG5lZWRlZC4uLgotCQl0ZXN0IC16ICIkc3dpdGNoX3RvIiB8fCBnaXQgY2hlY2tvdXQgIiRzd2l0Y2hfdG8iIC0tCisJCXRlc3QgLXogIiRzd2l0Y2hfdG8iIHx8CisJCUdJVF9SRUZMT0dfQUNUSU9OPSIkR0lUX1JFRkxPR19BQ1RJT046IGNoZWNrb3V0ICRzd2l0Y2hfdG8iIFwKKwkJCWdpdCBjaGVja291dCAiJHN3aXRjaF90byIgLS0KIAkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiQ3VycmVudCBicmFuY2ggXCRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIpIgorCQlmaW5pc2hfcmViYXNlCiAJCWV4aXQgMAogCWVsc2UKIAkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiQ3VycmVudCBicmFuY2ggXCRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkLiIpIgpAQCAtNTIyLDcgKzU3MCw5IEBACiAKICMgRGV0YWNoIEhFQUQgYW5kIHJlc2V0IHRoZSB0cmVlCiBzYXkgIiQoZ2V0dGV4dCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIikiCi1naXQgY2hlY2tvdXQgLXEgIiRvbnRvXjAiIHx8IGRpZSAiY291bGQgbm90IGRldGFjaCBIRUFEIgorCitHSVRfUkVGTE9HX0FDVElPTj0iJEdJVF9SRUZMT0dfQUNUSU9OOiBjaGVja291dCAkb250b19uYW1lIiBcCisJZ2l0IGNoZWNrb3V0IC1xICIkb250b14wIiB8fCBkaWUgImNvdWxkIG5vdCBkZXRhY2ggSEVBRCIKIGdpdCB1cGRhdGUtcmVmIE9SSUdfSEVBRCAkb3JpZ19oZWFkCiAKICMgSWYgdGhlICRvbnRvIGlzIGEgcHJvcGVyIGRlc2NlbmRhbnQgb2YgdGhlIHRpcCBvZiB0aGUgYnJhbmNoLCB0aGVuCkBAIC01MzEsNiArNTgxLDcgQEAKIHRoZW4KIAlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJGYXN0LWZvcndhcmRlZCBcJGJyYW5jaF9uYW1lIHRvIFwkb250b19uYW1lLiIpIgogCW1vdmVfdG9fb3JpZ2luYWxfYnJhbmNoCisJZmluaXNoX3JlYmFzZQogCWV4aXQgMAogZmkKIApkaWZmIC0tZ2l0IGEvZ2l0LXJlbW90ZS10ZXN0Z2l0IGIvZ2l0LXJlbW90ZS10ZXN0Z2l0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBlN2VkM2EzLi4wMDAwMDAwCi0tLSBhL2dpdC1yZW1vdGUtdGVzdGdpdAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IGJhc2gKLSMgQ29weXJpZ2h0IChjKSAyMDEyIEZlbGlwZSBDb250cmVyYXMKLQotYWxpYXM9JDEKLXVybD0kMgotCi1kaXI9IiRHSVRfRElSL3Rlc3RnaXQvJGFsaWFzIgotcHJlZml4PSJyZWZzL3Rlc3RnaXQvJGFsaWFzIgotCi1kZWZhdWx0X3JlZnNwZWM9InJlZnMvaGVhZHMvKjoke3ByZWZpeH0vaGVhZHMvKiIKLQotcmVmc3BlYz0iJHtHSVRfUkVNT1RFX1RFU1RHSVRfUkVGU1BFQy0kZGVmYXVsdF9yZWZzcGVjfSIKLQotdGVzdCAteiAiJHJlZnNwZWMiICYmIHByZWZpeD0icmVmcyIKLQotZXhwb3J0IEdJVF9ESVI9IiR1cmwvLmdpdCIKLQotbWtkaXIgLXAgIiRkaXIiCi0KLWlmIHRlc3QgLXogIiRHSVRfUkVNT1RFX1RFU1RHSVRfTk9fTUFSS1MiCi10aGVuCi0JZ2l0bWFya3M9IiRkaXIvZ2l0Lm1hcmtzIgotCXRlc3RnaXRtYXJrcz0iJGRpci90ZXN0Z2l0Lm1hcmtzIgotCXRlc3QgLWUgIiRnaXRtYXJrcyIgfHwgPiIkZ2l0bWFya3MiCi0JdGVzdCAtZSAiJHRlc3RnaXRtYXJrcyIgfHwgPiIkdGVzdGdpdG1hcmtzIgotCXRlc3RnaXRtYXJrc19hcmdzPSggIi0tIntpbXBvcnQsZXhwb3J0fSItbWFya3M9JHRlc3RnaXRtYXJrcyIgKQotZmkKLQotd2hpbGUgcmVhZCBsaW5lCi1kbwotCWNhc2UgJGxpbmUgaW4KLQljYXBhYmlsaXRpZXMpCi0JCWVjaG8gJ2ltcG9ydCcKLQkJZWNobyAnZXhwb3J0JwotCQl0ZXN0IC1uICIkcmVmc3BlYyIgJiYgZWNobyAicmVmc3BlYyAkcmVmc3BlYyIKLQkJaWYgdGVzdCAtbiAiJGdpdG1hcmtzIgotCQl0aGVuCi0JCQllY2hvICIqaW1wb3J0LW1hcmtzICRnaXRtYXJrcyIKLQkJCWVjaG8gIipleHBvcnQtbWFya3MgJGdpdG1hcmtzIgotCQlmaQotCQl0ZXN0IC1uICIkR0lUX1JFTU9URV9URVNUR0lUX1NJR05FRF9UQUdTIiAmJiBlY2hvICJzaWduZWQtdGFncyIKLQkJZWNobwotCQk7OwotCWxpc3QpCi0JCWdpdCBmb3ItZWFjaC1yZWYgLS1mb3JtYXQ9Jz8gJShyZWZuYW1lKScgJ3JlZnMvaGVhZHMvJwotCQloZWFkPSQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKQotCQllY2hvICJAJGhlYWQgSEVBRCIKLQkJZWNobwotCQk7OwotCWltcG9ydCopCi0JCSMgcmVhZCBhbGwgaW1wb3J0IGxpbmVzCi0JCXdoaWxlIHRydWUKLQkJZG8KLQkJCXJlZj0iJHtsaW5lIyogfSIKLQkJCXJlZnM9IiRyZWZzICRyZWYiCi0JCQlyZWFkIGxpbmUKLQkJCXRlc3QgIiR7bGluZSUlICp9IiAhPSAiaW1wb3J0IiAmJiBicmVhawotCQlkb25lCi0KLQkJaWYgdGVzdCAtbiAiJGdpdG1hcmtzIgotCQl0aGVuCi0JCQllY2hvICJmZWF0dXJlIGltcG9ydC1tYXJrcz0kZ2l0bWFya3MiCi0JCQllY2hvICJmZWF0dXJlIGV4cG9ydC1tYXJrcz0kZ2l0bWFya3MiCi0JCWZpCi0JCWVjaG8gImZlYXR1cmUgZG9uZSIKLQkJZ2l0IGZhc3QtZXhwb3J0ICIke3Rlc3RnaXRtYXJrc19hcmdzW0BdfSIgJHJlZnMgfAotCQlzZWQgLWUgInMjcmVmcy9oZWFkcy8jJHtwcmVmaXh9L2hlYWRzLyNnIgotCQllY2hvICJkb25lIgotCQk7OwotCWV4cG9ydCkKLQkJYmVmb3JlPSQoZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0nJShyZWZuYW1lKSAlKG9iamVjdG5hbWUpJykKLQotCQlnaXQgZmFzdC1pbXBvcnQgIiR7dGVzdGdpdG1hcmtzX2FyZ3NbQF19IiAtLXF1aWV0Ci0KLQkJYWZ0ZXI9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5hbWUpICUob2JqZWN0bmFtZSknKQotCi0JCSMgZmlndXJlIG91dCB3aGljaCByZWZzIHdlcmUgdXBkYXRlZAotCQlqb2luIC1lIDAgLW8gJzAgMS4yIDIuMicgLWEgMiA8KGVjaG8gIiRiZWZvcmUiKSA8KGVjaG8gIiRhZnRlciIpIHwKLQkJd2hpbGUgcmVhZCByZWYgYSBiCi0JCWRvCi0JCQl0ZXN0ICRhID09ICRiICYmIGNvbnRpbnVlCi0JCQllY2hvICJvayAkcmVmIgotCQlkb25lCi0KLQkJZWNobwotCQk7OwotCScnKQotCQlleGl0Ci0JCTs7Ci0JZXNhYwotZG9uZQpkaWZmIC0tZ2l0IGEvZ2l0LXJlbW90ZS10ZXN0Z2l0LnNoIGIvZ2l0LXJlbW90ZS10ZXN0Z2l0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIxMDkwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9naXQtcmVtb3RlLXRlc3RnaXQuc2gKQEAgLTAsMCArMSwxMjEgQEAKKyMhL2Jpbi9zaAorIyBDb3B5cmlnaHQgKGMpIDIwMTIgRmVsaXBlIENvbnRyZXJhcworCithbGlhcz0kMQordXJsPSQyCisKK2Rpcj0iJEdJVF9ESVIvdGVzdGdpdC8kYWxpYXMiCitwcmVmaXg9InJlZnMvdGVzdGdpdC8kYWxpYXMiCisKK2RlZmF1bHRfcmVmc3BlYz0icmVmcy9oZWFkcy8qOiR7cHJlZml4fS9oZWFkcy8qIgorCityZWZzcGVjPSIke0dJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDLSRkZWZhdWx0X3JlZnNwZWN9IgorCit0ZXN0IC16ICIkcmVmc3BlYyIgJiYgcHJlZml4PSJyZWZzIgorCitleHBvcnQgR0lUX0RJUj0iJHVybC8uZ2l0IgorCitta2RpciAtcCAiJGRpciIKKworaWYgdGVzdCAteiAiJEdJVF9SRU1PVEVfVEVTVEdJVF9OT19NQVJLUyIKK3RoZW4KKwlnaXRtYXJrcz0iJGRpci9naXQubWFya3MiCisJdGVzdGdpdG1hcmtzPSIkZGlyL3Rlc3RnaXQubWFya3MiCisJdGVzdCAtZSAiJGdpdG1hcmtzIiB8fCA+IiRnaXRtYXJrcyIKKwl0ZXN0IC1lICIkdGVzdGdpdG1hcmtzIiB8fCA+IiR0ZXN0Z2l0bWFya3MiCitmaQorCit3aGlsZSByZWFkIGxpbmUKK2RvCisJY2FzZSAkbGluZSBpbgorCWNhcGFiaWxpdGllcykKKwkJZWNobyAnaW1wb3J0JworCQllY2hvICdleHBvcnQnCisJCXRlc3QgLW4gIiRyZWZzcGVjIiAmJiBlY2hvICJyZWZzcGVjICRyZWZzcGVjIgorCQlpZiB0ZXN0IC1uICIkZ2l0bWFya3MiCisJCXRoZW4KKwkJCWVjaG8gIippbXBvcnQtbWFya3MgJGdpdG1hcmtzIgorCQkJZWNobyAiKmV4cG9ydC1tYXJrcyAkZ2l0bWFya3MiCisJCWZpCisJCXRlc3QgLW4gIiRHSVRfUkVNT1RFX1RFU1RHSVRfU0lHTkVEX1RBR1MiICYmIGVjaG8gInNpZ25lZC10YWdzIgorCQllY2hvCisJCTs7CisJbGlzdCkKKwkJZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0nPyAlKHJlZm5hbWUpJyAncmVmcy9oZWFkcy8nCisJCWhlYWQ9JChnaXQgc3ltYm9saWMtcmVmIEhFQUQpCisJCWVjaG8gIkAkaGVhZCBIRUFEIgorCQllY2hvCisJCTs7CisJaW1wb3J0KikKKwkJIyByZWFkIGFsbCBpbXBvcnQgbGluZXMKKwkJd2hpbGUgdHJ1ZQorCQlkbworCQkJcmVmPSIke2xpbmUjKiB9IgorCQkJcmVmcz0iJHJlZnMgJHJlZiIKKwkJCXJlYWQgbGluZQorCQkJdGVzdCAiJHtsaW5lJSUgKn0iICE9ICJpbXBvcnQiICYmIGJyZWFrCisJCWRvbmUKKworCQlpZiB0ZXN0IC1uICIkZ2l0bWFya3MiCisJCXRoZW4KKwkJCWVjaG8gImZlYXR1cmUgaW1wb3J0LW1hcmtzPSRnaXRtYXJrcyIKKwkJCWVjaG8gImZlYXR1cmUgZXhwb3J0LW1hcmtzPSRnaXRtYXJrcyIKKwkJZmkKKworCQlpZiB0ZXN0IC1uICIkR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUiCisJCXRoZW4KKwkJCWVjaG8gImZlYXR1cmUgZG9uZSIKKwkJCWV4aXQgMQorCQlmaQorCisJCWVjaG8gImZlYXR1cmUgZG9uZSIKKwkJZ2l0IGZhc3QtZXhwb3J0IFwKKwkJCSR7dGVzdGdpdG1hcmtzOisiLS1pbXBvcnQtbWFya3M9JHRlc3RnaXRtYXJrcyJ9IFwKKwkJCSR7dGVzdGdpdG1hcmtzOisiLS1leHBvcnQtbWFya3M9JHRlc3RnaXRtYXJrcyJ9IFwKKwkJCSRyZWZzIHwKKwkJc2VkIC1lICJzI3JlZnMvaGVhZHMvIyR7cHJlZml4fS9oZWFkcy8jZyIKKwkJZWNobyAiZG9uZSIKKwkJOzsKKwlleHBvcnQpCisJCWlmIHRlc3QgLW4gIiRHSVRfUkVNT1RFX1RFU1RHSVRfRkFJTFVSRSIKKwkJdGhlbgorCQkJIyBjb25zdW1lIGlucHV0IHNvIGZhc3QtZXhwb3J0IGRvZXNuJ3QgZ2V0IFNJR1BJUEU7CisJCQkjIGdpdCB3b3VsZCBhbHNvIG5vdGljZSB0aGF0IGNhc2UsIGJ1dCB3ZSB3YW50CisJCQkjIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgZXhlcmNpc2luZyB0aGUgbGF0ZXIKKwkJCSMgZXJyb3IgY2hlY2tzCisJCQl3aGlsZSByZWFkIGxpbmU7IGRvCisJCQkJdGVzdCAiZG9uZSIgPSAiJGxpbmUiICYmIGJyZWFrCisJCQlkb25lCisJCQlleGl0IDEKKwkJZmkKKworCQliZWZvcmU9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PScgJShyZWZuYW1lKSAlKG9iamVjdG5hbWUpICcpCisKKwkJZ2l0IGZhc3QtaW1wb3J0IFwKKwkJCSR7dGVzdGdpdG1hcmtzOisiLS1pbXBvcnQtbWFya3M9JHRlc3RnaXRtYXJrcyJ9IFwKKwkJCSR7dGVzdGdpdG1hcmtzOisiLS1leHBvcnQtbWFya3M9JHRlc3RnaXRtYXJrcyJ9IFwKKwkJCS0tcXVpZXQKKworCQkjIGZpZ3VyZSBvdXQgd2hpY2ggcmVmcyB3ZXJlIHVwZGF0ZWQKKwkJZ2l0IGZvci1lYWNoLXJlZiAtLWZvcm1hdD0nJShyZWZuYW1lKSAlKG9iamVjdG5hbWUpJyB8CisJCXdoaWxlIHJlYWQgcmVmIGEKKwkJZG8KKwkJCWNhc2UgIiRiZWZvcmUiIGluCisJCQkqIiAkcmVmICRhICIqKQorCQkJCWNvbnRpbnVlIDs7CSMgdW5jaGFuZ2VkCisJCQllc2FjCisJCQlpZiB0ZXN0IC16ICIkR0lUX1JFTU9URV9URVNUR0lUX1BVU0hfRVJST1IiCisJCQl0aGVuCisJCQkJZWNobyAib2sgJHJlZiIKKwkJCWVsc2UKKwkJCQllY2hvICJlcnJvciAkcmVmICRHSVRfUkVNT1RFX1RFU1RHSVRfUFVTSF9FUlJPUiIKKwkJCWZpCisJCWRvbmUKKworCQllY2hvCisJCTs7CisJJycpCisJCWV4aXQKKwkJOzsKKwllc2FjCitkb25lCmRpZmYgLS1naXQgYS9naXQtcmVxdWVzdC1wdWxsLnNoIGIvZ2l0LXJlcXVlc3QtcHVsbC5zaAppbmRleCBkNTY2MDE1Li5lYmYxMjY5IDEwMDc1NQotLS0gYS9naXQtcmVxdWVzdC1wdWxsLnNoCisrKyBiL2dpdC1yZXF1ZXN0LXB1bGwuc2gKQEAgLTUxLDggKzUxLDE4IEBACiB0YWdfbmFtZT0kKGdpdCBkZXNjcmliZSAtLWV4YWN0ICIkaGVhZF4wIiAyPi9kZXYvbnVsbCkKIAogdGVzdCAtbiAiJGJhc2UiICYmIHRlc3QgLW4gIiR1cmwiIHx8IHVzYWdlCi1iYXNlcmV2PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJGJhc2UiXjApICYmCi1oZWFkcmV2PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJGhlYWQiXjApIHx8IGV4aXQKKworYmFzZXJldj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1xdWlldCAiJGJhc2UiXjApCitpZiB0ZXN0IC16ICIkYmFzZXJldiIKK3RoZW4KKyAgICBkaWUgImZhdGFsOiBOb3QgYSB2YWxpZCByZXZpc2lvbjogJGJhc2UiCitmaQorCitoZWFkcmV2PSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAtLXF1aWV0ICIkaGVhZCJeMCkKK2lmIHRlc3QgLXogIiRoZWFkcmV2IgordGhlbgorICAgIGRpZSAiZmF0YWw6IE5vdCBhIHZhbGlkIHJldmlzaW9uOiAkaGVhZCIKK2ZpCiAKIG1lcmdlX2Jhc2U9JChnaXQgbWVyZ2UtYmFzZSAkYmFzZXJldiAkaGVhZHJldikgfHwKIGRpZSAiZmF0YWw6IE5vIGNvbW1pdHMgaW4gY29tbW9uIGJldHdlZW4gJGJhc2UgYW5kICRoZWFkIgpkaWZmIC0tZ2l0IGEvZ2l0LXNlbmQtZW1haWwucGVybCBiL2dpdC1zZW5kLWVtYWlsLnBlcmwKaW5kZXggY2Q5MzQ5MC4uMjE2MjQ3OCAxMDA3NTUKLS0tIGEvZ2l0LXNlbmQtZW1haWwucGVybAorKysgYi9naXQtc2VuZC1lbWFpbC5wZXJsCkBAIC02OSw2ICs2OSw5IEBACiAgICAgLS1zbXRwLXBhc3MgICAgICAgICAgICAgPHN0cj4gICogUGFzc3dvcmQgZm9yIFNNVFAtQVVUSDsgbm90IG5lY2Vzc2FyeS4KICAgICAtLXNtdHAtZW5jcnlwdGlvbiAgICAgICA8c3RyPiAgKiB0bHMgb3Igc3NsOyBhbnl0aGluZyBlbHNlIGRpc2FibGVzLgogICAgIC0tc210cC1zc2wgICAgICAgICAgICAgICAgICAgICAqIERlcHJlY2F0ZWQuIFVzZSAnLS1zbXRwLWVuY3J5cHRpb24gc3NsJy4KKyAgICAtLXNtdHAtc3NsLWNlcnQtcGF0aCAgICA8c3RyPiAgKiBQYXRoIHRvIGNhLWNlcnRpZmljYXRlcyAoZWl0aGVyIGRpcmVjdG9yeSBvciBmaWxlKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzIGFuIGVtcHR5IHN0cmluZyB0byBkaXNhYmxlIGNlcnRpZmljYXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZpY2F0aW9uLgogICAgIC0tc210cC1kb21haW4gICAgICAgICAgIDxzdHI+ICAqIFRoZSBkb21haW4gbmFtZSBzZW50IHRvIEhFTE8vRUhMTyBoYW5kc2hha2UKICAgICAtLXNtdHAtZGVidWcgICAgICAgICAgICA8MHwxPiAgKiBEaXNhYmxlLCBlbmFibGUgTmV0OjpTTVRQIGRlYnVnLgogCkBAIC0xOTQsNyArMTk3LDcgQEAKIG15ICgkdGhyZWFkLCAkY2hhaW5fcmVwbHlfdG8sICRzdXBwcmVzc19mcm9tLCAkc2lnbmVkX29mZl9ieV9jYyk7CiBteSAoJHRvX2NtZCwgJGNjX2NtZCk7CiBteSAoJHNtdHBfc2VydmVyLCAkc210cF9zZXJ2ZXJfcG9ydCwgQHNtdHBfc2VydmVyX29wdGlvbnMpOwotbXkgKCRzbXRwX2F1dGh1c2VyLCAkc210cF9lbmNyeXB0aW9uKTsKK215ICgkc210cF9hdXRodXNlciwgJHNtdHBfZW5jcnlwdGlvbiwgJHNtdHBfc3NsX2NlcnRfcGF0aCk7CiBteSAoJGlkZW50aXR5LCAkYWxpYXNmaWxldHlwZSwgQGFsaWFzX2ZpbGVzLCAkc210cF9kb21haW4pOwogbXkgKCR2YWxpZGF0ZSwgJGNvbmZpcm0pOwogbXkgKEBzdXBwcmVzc19jYyk7CkBAIC0yMDMsMTEgKzIwNiw5IEBACiAKIG15ICgkZGVidWdfbmV0X3NtdHApID0gMDsJCSMgTmV0OjpTTVRQLCBzZWUgc2VuZF9tZXNzYWdlKCkKIAotbXkgJG5vdF9zZXRfYnlfdXNlciA9ICJ0cnVlIGJ1dCBub3Qgc2V0IGJ5IHRoZSB1c2VyIjsKLQogbXkgJWNvbmZpZ19ib29sX3NldHRpbmdzID0gKAogICAgICJ0aHJlYWQiID0+IFtcJHRocmVhZCwgMV0sCi0gICAgImNoYWlucmVwbHl0byIgPT4gW1wkY2hhaW5fcmVwbHlfdG8sICRub3Rfc2V0X2J5X3VzZXJdLAorICAgICJjaGFpbnJlcGx5dG8iID0+IFtcJGNoYWluX3JlcGx5X3RvLCAwXSwKICAgICAic3VwcHJlc3Nmcm9tIiA9PiBbXCRzdXBwcmVzc19mcm9tLCB1bmRlZl0sCiAgICAgInNpZ25lZG9mZmJ5Y2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwKICAgICAic2lnbmVkb2ZmY2MiID0+IFtcJHNpZ25lZF9vZmZfYnlfY2MsIHVuZGVmXSwgICAgICAjIERlcHJlY2F0ZWQKQEAgLTIyMiw2ICsyMjMsNyBAQAogICAgICJzbXRwc2VydmVyb3B0aW9uIiA9PiBcQHNtdHBfc2VydmVyX29wdGlvbnMsCiAgICAgInNtdHB1c2VyIiA9PiBcJHNtdHBfYXV0aHVzZXIsCiAgICAgInNtdHBwYXNzIiA9PiBcJHNtdHBfYXV0aHBhc3MsCisgICAgInNtdHBzc2xjZXJ0cGF0aCIgPT4gXCRzbXRwX3NzbF9jZXJ0X3BhdGgsCiAgICAgInNtdHBkb21haW4iID0+IFwkc210cF9kb21haW4sCiAgICAgInRvIiA9PiBcQGluaXRpYWxfdG8sCiAgICAgInRvY21kIiA9PiBcJHRvX2NtZCwKQEAgLTI0MSwxOSArMjQzLDYgQEAKICAgICAiYWxpYXNlc2ZpbGUiID0+IFxAYWxpYXNfZmlsZXMsCiApOwogCi0jIEhlbHAgdXNlcnMgcHJlcGFyZSBmb3IgMS43LjAKLXN1YiBjaGFpbl9yZXBseV90byB7Ci0JaWYgKGRlZmluZWQgJGNoYWluX3JlcGx5X3RvICYmCi0JICAgICRjaGFpbl9yZXBseV90byBlcSAkbm90X3NldF9ieV91c2VyKSB7Ci0JCXByaW50IFNUREVSUgotCQkgICAgIkluIGdpdCAxLjcuMCwgdGhlIGRlZmF1bHQgaGFzIGNoYW5nZWQgdG8gLS1uby1jaGFpbi1yZXBseS10b1xuIiAuCi0JCSAgICAiU2V0IHNlbmRlbWFpbC5jaGFpbnJlcGx5dG8gY29uZmlndXJhdGlvbiB2YXJpYWJsZSB0byB0cnVlIGlmXG4iIC4KLQkJICAgICJ5b3Ugd2FudCB0byBrZWVwIC0tY2hhaW4tcmVwbHktdG8gYXMgeW91ciBkZWZhdWx0LlxuIjsKLQkJJGNoYWluX3JlcGx5X3RvID0gMDsKLQl9Ci0JcmV0dXJuICRjaGFpbl9yZXBseV90bzsKLX0KLQogIyBIYW5kbGUgVW5jb3V0aCBUZXJtaW5hdGlvbgogc3ViIHNpZ25hbF9oYW5kbGVyIHsKIApAQCAtMzAyLDYgKzI5MSw3IEBACiAJCSAgICAic210cC1wYXNzOnMiID0+IFwkc210cF9hdXRocGFzcywKIAkJICAgICJzbXRwLXNzbCIgPT4gc3ViIHsgJHNtdHBfZW5jcnlwdGlvbiA9ICdzc2wnIH0sCiAJCSAgICAic210cC1lbmNyeXB0aW9uPXMiID0+IFwkc210cF9lbmNyeXB0aW9uLAorCQkgICAgInNtdHAtc3NsLWNlcnQtcGF0aCIgPT4gXCRzbXRwX3NzbF9jZXJ0X3BhdGgsCiAJCSAgICAic210cC1kZWJ1ZzppIiA9PiBcJGRlYnVnX25ldF9zbXRwLAogCQkgICAgInNtdHAtZG9tYWluOnMiID0+IFwkc210cF9kb21haW4sCiAJCSAgICAiaWRlbnRpdHk9cyIgPT4gXCRpZGVudGl0eSwKQEAgLTEwOTQsNiArMTA4NCwzNCBAQAogCXJldHVybiAkYXV0aDsKIH0KIAorc3ViIHNzbF92ZXJpZnlfcGFyYW1zIHsKKwlldmFsIHsKKwkJcmVxdWlyZSBJTzo6U29ja2V0OjpTU0w7CisJCUlPOjpTb2NrZXQ6OlNTTC0+aW1wb3J0KHF3L1NTTF9WRVJJRllfUEVFUiBTU0xfVkVSSUZZX05PTkUvKTsKKwl9OworCWlmICgkQCkgeworCQlwcmludCBTVERFUlIgIk5vdCB1c2luZyBTU0xfVkVSSUZZX1BFRVIgZHVlIHRvIG91dC1vZi1kYXRlIElPOjpTb2NrZXQ6OlNTTC5cbiI7CisJCXJldHVybjsKKwl9CisKKwlpZiAoIWRlZmluZWQgJHNtdHBfc3NsX2NlcnRfcGF0aCkgeworCQkkc210cF9zc2xfY2VydF9wYXRoID0gIi9ldGMvc3NsL2NlcnRzIjsKKwl9CisKKwlpZiAoJHNtdHBfc3NsX2NlcnRfcGF0aCBlcSAiIikgeworCQlyZXR1cm4gKFNTTF92ZXJpZnlfbW9kZSA9PiBTU0xfVkVSSUZZX05PTkUoKSk7CisJfSBlbHNpZiAoLWQgJHNtdHBfc3NsX2NlcnRfcGF0aCkgeworCQlyZXR1cm4gKFNTTF92ZXJpZnlfbW9kZSA9PiBTU0xfVkVSSUZZX1BFRVIoKSwKKwkJCVNTTF9jYV9wYXRoID0+ICRzbXRwX3NzbF9jZXJ0X3BhdGgpOworCX0gZWxzaWYgKC1mICRzbXRwX3NzbF9jZXJ0X3BhdGgpIHsKKwkJcmV0dXJuIChTU0xfdmVyaWZ5X21vZGUgPT4gU1NMX1ZFUklGWV9QRUVSKCksCisJCQlTU0xfY2FfZmlsZSA9PiAkc210cF9zc2xfY2VydF9wYXRoKTsKKwl9IGVsc2UgeworCQlwcmludCBTVERFUlIgIk5vdCB1c2luZyBTU0xfVkVSSUZZX1BFRVIgYmVjYXVzZSB0aGUgQ0EgcGF0aCBkb2VzIG5vdCBleGlzdC5cbiI7CisJCXJldHVybiAoU1NMX3ZlcmlmeV9tb2RlID0+IFNTTF9WRVJJRllfTk9ORSgpKTsKKwl9Cit9CisKICMgUmV0dXJucyAxIGlmIHRoZSBtZXNzYWdlIHdhcyBzZW50LCBhbmQgMCBvdGhlcndpc2UuCiAjIEluIGFjdHVhbGl0eSwgdGhlIHdob2xlIHByb2dyYW0gZGllcyB3aGVuIHRoZXJlCiAjIGlzIGFuIGVycm9yIHNlbmRpbmcgYSBtZXNzYWdlLgpAQCAtMTE5OCwyMCArMTIxNiwyNCBAQAogCQkJJHNtdHBfZG9tYWluIHx8PSBtYWlsZG9tYWluKCk7CiAJCQkkc210cCB8fD0gTmV0OjpTTVRQOjpTU0wtPm5ldygkc210cF9zZXJ2ZXIsCiAJCQkJCQkgICAgICBIZWxsbyA9PiAkc210cF9kb21haW4sCi0JCQkJCQkgICAgICBQb3J0ID0+ICRzbXRwX3NlcnZlcl9wb3J0KTsKKwkJCQkJCSAgICAgIFBvcnQgPT4gJHNtdHBfc2VydmVyX3BvcnQsCisJCQkJCQkgICAgICBzc2xfdmVyaWZ5X3BhcmFtcygpKTsKIAkJfQogCQllbHNlIHsKIAkJCXJlcXVpcmUgTmV0OjpTTVRQOwogCQkJJHNtdHBfZG9tYWluIHx8PSBtYWlsZG9tYWluKCk7Ci0JCQkkc210cCB8fD0gTmV0OjpTTVRQLT5uZXcoc210cF9ob3N0X3N0cmluZygpLAorCQkJJHNtdHBfc2VydmVyX3BvcnQgfHw9IDI1OworCQkJJHNtdHAgfHw9IE5ldDo6U01UUC0+bmV3KCRzbXRwX3NlcnZlciwKIAkJCQkJCSBIZWxsbyA9PiAkc210cF9kb21haW4sCi0JCQkJCQkgRGVidWcgPT4gJGRlYnVnX25ldF9zbXRwKTsKKwkJCQkJCSBEZWJ1ZyA9PiAkZGVidWdfbmV0X3NtdHAsCisJCQkJCQkgUG9ydCA9PiAkc210cF9zZXJ2ZXJfcG9ydCk7CiAJCQlpZiAoJHNtdHBfZW5jcnlwdGlvbiBlcSAndGxzJyAmJiAkc210cCkgewogCQkJCXJlcXVpcmUgTmV0OjpTTVRQOjpTU0w7CiAJCQkJJHNtdHAtPmNvbW1hbmQoJ1NUQVJUVExTJyk7CiAJCQkJJHNtdHAtPnJlc3BvbnNlKCk7CiAJCQkJaWYgKCRzbXRwLT5jb2RlID09IDIyMCkgewotCQkJCQkkc210cCA9IE5ldDo6U01UUDo6U1NMLT5zdGFydF9TU0woJHNtdHApCisJCQkJCSRzbXRwID0gTmV0OjpTTVRQOjpTU0wtPnN0YXJ0X1NTTCgkc210cCwKKwkJCQkJCQkJCSAgc3NsX3ZlcmlmeV9wYXJhbXMoKSkKIAkJCQkJCW9yIGRpZSAiU1RBUlRUTFMgZmFpbGVkISAiLiRzbXRwLT5tZXNzYWdlOwogCQkJCQkkc210cF9lbmNyeXB0aW9uID0gJyc7CiAJCQkJCSMgU2VuZCBFSExPIGFnYWluIHRvIHJlY2VpdmUgZnJlc2gKQEAgLTE0NDYsNyArMTQ2OCw3IEBACiAKIAkjIHNldCB1cCBmb3IgdGhlIG5leHQgbWVzc2FnZQogCWlmICgkdGhyZWFkICYmICRtZXNzYWdlX3dhc19zZW50ICYmCi0JCShjaGFpbl9yZXBseV90bygpIHx8ICFkZWZpbmVkICRyZXBseV90byB8fCBsZW5ndGgoJHJlcGx5X3RvKSA9PSAwIHx8CisJCSgkY2hhaW5fcmVwbHlfdG8gfHwgIWRlZmluZWQgJHJlcGx5X3RvIHx8IGxlbmd0aCgkcmVwbHlfdG8pID09IDAgfHwKIAkJJG1lc3NhZ2VfbnVtID09IDEpKSB7CiAJCSRyZXBseV90byA9ICRtZXNzYWdlX2lkOwogCQlpZiAobGVuZ3RoICRyZWZlcmVuY2VzID4gMCkgewpkaWZmIC0tZ2l0IGEvZ2l0LXNoLXNldHVwLnNoIGIvZ2l0LXNoLXNldHVwLnNoCmluZGV4IDJmNzgzNTkuLjdhOTY0YWQgMTAwNjQ0Ci0tLSBhL2dpdC1zaC1zZXR1cC5zaAorKysgYi9naXQtc2gtc2V0dXAuc2gKQEAgLTMxMywzICszMTMsMTUgQEAKIAl9CiAJOiAke0dJVF9PQkpFQ1RfRElSRUNUT1JZPSIkR0lUX0RJUi9vYmplY3RzIn0KIGZpCisKK3BlZWxfY29tbWl0dGlzaCAoKSB7CisJY2FzZSAiJDEiIGluCisJOi8qKQorCQlwZWVsdG1wPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJDEiKSAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIke3BlZWx0bXB9XjAiCisJCTs7CisJKikKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAiJHsxfV4wIgorCQk7OworCWVzYWMKK30KZGlmZiAtLWdpdCBhL2dpdC1zdGFzaC5zaCBiL2dpdC1zdGFzaC5zaAppbmRleCBiYmVmZGY2Li44NWM5ZTJjIDEwMDc1NQotLS0gYS9naXQtc3Rhc2guc2gKKysrIGIvZ2l0LXN0YXNoLnNoCkBAIC0xNTYsMTAgKzE1Niw0NiBAQAogCWRpZSAiJChnZXR0ZXh0ICJDYW5ub3QgcmVjb3JkIHdvcmtpbmcgdHJlZSBzdGF0ZSIpIgogfQogCitzdG9yZV9zdGFzaCAoKSB7CisJd2hpbGUgdGVzdCAkIyAhPSAwCisJZG8KKwkJY2FzZSAiJDEiIGluCisJCS1tfC0tbWVzc2FnZSkKKwkJCXNoaWZ0CisJCQlzdGFzaF9tc2c9IiQxIgorCQkJOzsKKwkJLXF8LS1xdWlldCkKKwkJCXF1aWV0PXQKKwkJCTs7CisJCSopCisJCQlicmVhaworCQkJOzsKKwkJZXNhYworCQlzaGlmdAorCWRvbmUKKwl0ZXN0ICQjID0gMSB8fAorCWRpZSAiJChldmFsX2dldHRleHQgIlwiJGRhc2hsZXNzIHN0b3JlXCIgcmVxdWlyZXMgb25lIDxjb21taXQ+IGFyZ3VtZW50IikiCisKKwl3X2NvbW1pdD0iJDEiCisJaWYgdGVzdCAteiAiJHN0YXNoX21zZyIKKwl0aGVuCisJCXN0YXNoX21zZz0iQ3JlYXRlZCB2aWEgXCJnaXQgc3Rhc2ggc3RvcmVcIi4iCisJZmkKKworCSMgTWFrZSBzdXJlIHRoZSByZWZsb2cgZm9yIHN0YXNoIGlzIGtlcHQuCisJOiA+PiIkR0lUX0RJUi9sb2dzLyRyZWZfc3Rhc2giCisJZ2l0IHVwZGF0ZS1yZWYgLW0gIiRzdGFzaF9tc2ciICRyZWZfc3Rhc2ggJHdfY29tbWl0CisJcmV0PSQ/CisJdGVzdCAkcmV0ICE9IDAgJiYgdGVzdCAteiAkcXVpZXQgJiYKKwlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJDYW5ub3QgdXBkYXRlIFwkcmVmX3N0YXNoIHdpdGggXCR3X2NvbW1pdCIpIgorCXJldHVybiAkcmV0Cit9CisKIHNhdmVfc3Rhc2ggKCkgewogCWtlZXBfaW5kZXg9CiAJcGF0Y2hfbW9kZT0KIAl1bnRyYWNrZWQ9CisJZm9yY2U9CiAJd2hpbGUgdGVzdCAkIyAhPSAwCiAJZG8KIAkJY2FzZSAiJDEiIGluCkBAIC0xODAsNiArMjE2LDkgQEAKIAkJLXV8LS1pbmNsdWRlLXVudHJhY2tlZCkKIAkJCXVudHJhY2tlZD11bnRyYWNrZWQKIAkJCTs7CisJCS1mfC0tZm9yY2UpCisJCQlmb3JjZT10CisJCQk7OwogCQktYXwtLWFsbCkKIAkJCXVudHJhY2tlZD1hbGwKIAkJCTs7CkBAIC0yMjMsMTYgKzI2MiwyMCBAQAogCQlzYXkgIiQoZ2V0dGV4dCAiTm8gbG9jYWwgY2hhbmdlcyB0byBzYXZlIikiCiAJCWV4aXQgMAogCWZpCisJaWYgdGVzdCAteiAiJHVudHJhY2tlZCRmb3JjZSIgJiYKKwkgICB0ZXN0IC1uICIkKGdpdCBscy1maWxlcyAtLWtpbGxlZCB8IGhlYWQgLW4gMSkiCisJdGhlbgorCQlzYXkgIiQoZ2V0dGV4dCAiVGhlIGZvbGxvd2luZyB1bnRyYWNrZWQgZmlsZXMgd291bGQgTk9UIGJlIHNhdmVkIGJ1dCBuZWVkIHRvIGJlIHJlbW92ZWQgYnkgc3Rhc2ggc2F2ZToiKSIKKwkJdGVzdCAtbiAiJEdJVF9RVUlFVCIgfHwgZ2l0IGxzLWZpbGVzIC0ta2lsbGVkIHwgc2VkICdzL14vXHQvJworCQlzYXkgIiQoZ2V0dGV4dCAiQWJvcnRpbmcuIENvbnNpZGVyIHVzaW5nIGVpdGhlciB0aGUgLS1mb3JjZSBvciAtLWluY2x1ZGUtdW50cmFja2VkIG9wdGlvbi4iKSIgPiYyCisJCWV4aXQgMQorCWZpCiAJdGVzdCAtZiAiJEdJVF9ESVIvbG9ncy8kcmVmX3N0YXNoIiB8fAogCQljbGVhcl9zdGFzaCB8fCBkaWUgIiQoZ2V0dGV4dCAiQ2Fubm90IGluaXRpYWxpemUgc3Rhc2giKSIKIAogCWNyZWF0ZV9zdGFzaCAiJHN0YXNoX21zZyIgJHVudHJhY2tlZAotCi0JIyBNYWtlIHN1cmUgdGhlIHJlZmxvZyBmb3Igc3Rhc2ggaXMga2VwdC4KLQk6ID4+IiRHSVRfRElSL2xvZ3MvJHJlZl9zdGFzaCIKLQotCWdpdCB1cGRhdGUtcmVmIC1tICIkc3Rhc2hfbXNnIiAkcmVmX3N0YXNoICR3X2NvbW1pdCB8fAotCQlkaWUgIiQoZ2V0dGV4dCAiQ2Fubm90IHNhdmUgdGhlIGN1cnJlbnQgc3RhdHVzIikiCisJc3RvcmVfc3Rhc2ggLW0gIiRzdGFzaF9tc2ciIC1xICR3X2NvbW1pdCB8fAorCWRpZSAiJChnZXR0ZXh0ICJDYW5ub3Qgc2F2ZSB0aGUgY3VycmVudCBzdGF0dXMiKSIKIAlzYXkgU2F2ZWQgd29ya2luZyBkaXJlY3RvcnkgYW5kIGluZGV4IHN0YXRlICIkc3Rhc2hfbXNnIgogCiAJaWYgdGVzdCAteiAiJHBhdGNoX21vZGUiCkBAIC01NDYsMTIgKzU4OSwxMyBAQAogCWNsZWFyX3N0YXNoICIkQCIKIAk7OwogY3JlYXRlKQotCWlmIHRlc3QgJCMgLWd0IDAgJiYgdGVzdCAiJDEiID0gY3JlYXRlCi0JdGhlbgotCQlzaGlmdAotCWZpCisJc2hpZnQKIAljcmVhdGVfc3Rhc2ggIiQqIiAmJiBlY2hvICIkd19jb21taXQiCiAJOzsKK3N0b3JlKQorCXNoaWZ0CisJc3RvcmVfc3Rhc2ggIiRAIgorCTs7CiBkcm9wKQogCXNoaWZ0CiAJZHJvcF9zdGFzaCAiJEAiCmRpZmYgLS1naXQgYS9naXQtc3VibW9kdWxlLnNoIGIvZ2l0LXN1Ym1vZHVsZS5zaAppbmRleCA0OGJkZjg0Li4yOTc5MTk3IDEwMDc1NQotLS0gYS9naXQtc3VibW9kdWxlLnNoCisrKyBiL2dpdC1zdWJtb2R1bGUuc2gKQEAgLTE0LDEwICsxNCwxMyBAQAogICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gZm9yZWFjaCBbLS1yZWN1cnNpdmVdIDxjb21tYW5kPgogICAgb3I6ICRkYXNobGVzcyBbLS1xdWlldF0gc3luYyBbLS1yZWN1cnNpdmVdIFstLV0gWzxwYXRoPi4uLl0iCiBPUFRJT05TX1NQRUM9CitTVUJESVJFQ1RPUllfT0s9WWVzCiAuIGdpdC1zaC1zZXR1cAogLiBnaXQtc2gtaTE4bgogLiBnaXQtcGFyc2UtcmVtb3RlCiByZXF1aXJlX3dvcmtfdHJlZQord3RfcHJlZml4PSQoZ2l0IHJldi1wYXJzZSAtLXNob3ctcHJlZml4KQorY2RfdG9fdG9wbGV2ZWwKIAogY29tbWFuZD0KIGJyYW5jaD0KQEAgLTMyLDYgKzM1LDcgQEAKIHVwZGF0ZT0KIHByZWZpeD0KIGN1c3RvbV9uYW1lPQorZGVwdGg9CiAKICMgVGhlIGZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBhcmd1bWVudHMuIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUKICMgVVJMIHRoYXQgbmF2aWdhdGVzIHRvIHRoZSBzdWJtb2R1bGUgb3JpZ2luIHJlcG8uIFdoZW4gcmVsYXRpdmUsIHRoaXMgVVJMCkBAIC0xMDYsMTIgKzExMCw0OCBAQAogCWVjaG8gIiR7aXNfcmVsYXRpdmU6KyR7dXBfcGF0aH19JHtyZW1vdGV1cmwjLi99IgogfQogCisjIFJlc29sdmUgYSBwYXRoIHRvIGJlIHJlbGF0aXZlIHRvIGFub3RoZXIgcGF0aC4gIFRoaXMgaXMgaW50ZW5kZWQgZm9yCisjIGNvbnZlcnRpbmcgc3VibW9kdWxlIHBhdGhzIHdoZW4gZ2l0LXN1Ym1vZHVsZSBpcyBydW4gaW4gYSBzdWJkaXJlY3RvcnkKKyMgYW5kIG9ubHkgaGFuZGxlcyBwYXRocyB3aGVyZSB0aGUgZGlyZWN0b3J5IHNlcGFyYXRvciBpcyAnLycuCisjCisjIFRoZSBvdXRwdXQgaXMgdGhlIGZpcnN0IGFyZ3VtZW50IGFzIGEgcGF0aCByZWxhdGl2ZSB0byB0aGUgc2Vjb25kIGFyZ3VtZW50LAorIyB3aGljaCBkZWZhdWx0cyB0byAkd3RfcHJlZml4IGlmIGl0IGlzIG9taXR0ZWQuCityZWxhdGl2ZV9wYXRoICgpCit7CisJbG9jYWwgdGFyZ2V0IGN1cmRpciByZXN1bHQKKwl0YXJnZXQ9JDEKKwljdXJkaXI9JHsyLSR3dF9wcmVmaXh9CisJY3VyZGlyPSR7Y3VyZGlyJS99CisJcmVzdWx0PQorCisJd2hpbGUgdGVzdCAtbiAiJGN1cmRpciIKKwlkbworCQljYXNlICIkdGFyZ2V0IiBpbgorCQkiJGN1cmRpci8iKikKKwkJCXRhcmdldD0ke3RhcmdldCMiJGN1cmRpciIvfQorCQkJYnJlYWsKKwkJCTs7CisJCWVzYWMKKworCQlyZXN1bHQ9IiR7cmVzdWx0fS4uLyIKKwkJaWYgdGVzdCAiJGN1cmRpciIgPSAiJHtjdXJkaXIlLyp9IgorCQl0aGVuCisJCQljdXJkaXI9CisJCWVsc2UKKwkJCWN1cmRpcj0iJHtjdXJkaXIlLyp9IgorCQlmaQorCWRvbmUKKworCWVjaG8gIiRyZXN1bHQkdGFyZ2V0IgorfQorCiAjCiAjIEdldCBzdWJtb2R1bGUgaW5mbyBmb3IgcmVnaXN0ZXJlZCBzdWJtb2R1bGVzCiAjICRAID0gcGF0aCB0byBsaW1pdCBzdWJtb2R1bGUgbGlzdAogIwogbW9kdWxlX2xpc3QoKQogeworCWV2YWwgInNldCAkKGdpdCByZXYtcGFyc2UgLS1zcSAtLXByZWZpeCAiJHd0X3ByZWZpeCIgLS0gIiRAIikiCiAJKAogCQlnaXQgbHMtZmlsZXMgLXogLS1lcnJvci11bm1hdGNoIC0tc3RhZ2UgLS0gIiRAIiB8fAogCQllY2hvICJ1bm1hdGNoZWQgcGF0aHNwZWMgZXhpc3RzIgpAQCAtMjEyLDYgKzI1Miw3IEBACiAJbmFtZT0kMgogCXVybD0kMwogCXJlZmVyZW5jZT0iJDQiCisJZGVwdGg9IiQ1IgogCXF1aWV0PQogCWlmIHRlc3QgLW4gIiRHSVRfUVVJRVQiCiAJdGhlbgpAQCAtMjM0LDcgKzI3NSw3IEBACiAJCW1rZGlyIC1wICIkZ2l0ZGlyX2Jhc2UiCiAJCSgKIAkJCWNsZWFyX2xvY2FsX2dpdF9lbnYKLQkJCWdpdCBjbG9uZSAkcXVpZXQgLW4gJHtyZWZlcmVuY2U6KyIkcmVmZXJlbmNlIn0gXAorCQkJZ2l0IGNsb25lICRxdWlldCAke2RlcHRoOisiJGRlcHRoIn0gLW4gJHtyZWZlcmVuY2U6KyIkcmVmZXJlbmNlIn0gXAogCQkJCS0tc2VwYXJhdGUtZ2l0LWRpciAiJGdpdGRpciIgIiR1cmwiICIkc21fcGF0aCIKIAkJKSB8fAogCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJDbG9uZSBvZiAnXCR1cmwnIGludG8gc3VibW9kdWxlIHBhdGggJ1wkc21fcGF0aCcgZmFpbGVkIikiCkBAIC0yODMsNiArMzI0LDcgQEAKIGNtZF9hZGQoKQogewogCSMgcGFyc2UgJGFyZ3MgYWZ0ZXIgInN1Ym1vZHVsZSAuLi4gYWRkIi4KKwlyZWZlcmVuY2VfcGF0aD0KIAl3aGlsZSB0ZXN0ICQjIC1uZSAwCiAJZG8KIAkJY2FzZSAiJDEiIGluCkBAIC0yOTksMTcgKzM0MSwyNSBAQAogCQkJOzsKIAkJLS1yZWZlcmVuY2UpCiAJCQljYXNlICIkMiIgaW4gJycpIHVzYWdlIDs7IGVzYWMKLQkJCXJlZmVyZW5jZT0iLS1yZWZlcmVuY2U9JDIiCisJCQlyZWZlcmVuY2VfcGF0aD0kMgogCQkJc2hpZnQKIAkJCTs7CiAJCS0tcmVmZXJlbmNlPSopCi0JCQlyZWZlcmVuY2U9IiQxIgorCQkJcmVmZXJlbmNlX3BhdGg9IiR7MSMtLXJlZmVyZW5jZT19IgogCQkJOzsKIAkJLS1uYW1lKQogCQkJY2FzZSAiJDIiIGluICcnKSB1c2FnZSA7OyBlc2FjCiAJCQljdXN0b21fbmFtZT0kMgogCQkJc2hpZnQKIAkJCTs7CisJCS0tZGVwdGgpCisJCQljYXNlICIkMiIgaW4gJycpIHVzYWdlIDs7IGVzYWMKKwkJCWRlcHRoPSItLWRlcHRoPSQyIgorCQkJc2hpZnQKKwkJCTs7CisJCS0tZGVwdGg9KikKKwkJCWRlcHRoPSQxCisJCQk7OwogCQktLSkKIAkJCXNoaWZ0CiAJCQlicmVhawpAQCAtMzI0LDYgKzM3NCwxNCBAQAogCQlzaGlmdAogCWRvbmUKIAorCWlmIHRlc3QgLW4gIiRyZWZlcmVuY2VfcGF0aCIKKwl0aGVuCisJCWlzX2Fic29sdXRlX3BhdGggIiRyZWZlcmVuY2VfcGF0aCIgfHwKKwkJcmVmZXJlbmNlX3BhdGg9IiR3dF9wcmVmaXgkcmVmZXJlbmNlX3BhdGgiCisKKwkJcmVmZXJlbmNlPSItLXJlZmVyZW5jZT0kcmVmZXJlbmNlX3BhdGgiCisJZmkKKwogCXJlcG89JDEKIAlzbV9wYXRoPSQyCiAKQEAgLTMzNiw5ICszOTQsMTQgQEAKIAkJdXNhZ2UKIAlmaQogCisJaXNfYWJzb2x1dGVfcGF0aCAiJHNtX3BhdGgiIHx8IHNtX3BhdGg9IiR3dF9wcmVmaXgkc21fcGF0aCIKKwogCSMgYXNzdXJlIHJlcG8gaXMgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gcGFyZW50CiAJY2FzZSAiJHJlcG8iIGluCiAJLi8qfC4uLyopCisJCXRlc3QgLXogIiR3dF9wcmVmaXgiIHx8CisJCWRpZSAiJChnZXR0ZXh0ICJSZWxhdGl2ZSBwYXRoIGNhbiBvbmx5IGJlIHVzZWQgZnJvbSB0aGUgdG9wbGV2ZWwgb2YgdGhlIHdvcmtpbmcgdHJlZSIpIgorCiAJCSMgZGVyZWZlcmVuY2Ugc291cmNlIHVybCByZWxhdGl2ZSB0byBwYXJlbnQncyB1cmwKIAkJcmVhbHJlcG89JChyZXNvbHZlX3JlbGF0aXZlX3VybCAiJHJlcG8iKSB8fCBleGl0CiAJCTs7CkBAIC00MDYsNyArNDY5LDcgQEAKIAkJCQllY2hvICIkKGV2YWxfZ2V0dGV4dCAiUmVhY3RpdmF0aW5nIGxvY2FsIGdpdCBkaXJlY3RvcnkgZm9yIHN1Ym1vZHVsZSAnXCRzbV9uYW1lJy4iKSIKIAkJCWZpCiAJCWZpCi0JCW1vZHVsZV9jbG9uZSAiJHNtX3BhdGgiICIkc21fbmFtZSIgIiRyZWFscmVwbyIgIiRyZWZlcmVuY2UiIHx8IGV4aXQKKwkJbW9kdWxlX2Nsb25lICIkc21fcGF0aCIgIiRzbV9uYW1lIiAiJHJlYWxyZXBvIiAiJHJlZmVyZW5jZSIgIiRkZXB0aCIgfHwgZXhpdAogCQkoCiAJCQljbGVhcl9sb2NhbF9naXRfZW52CiAJCQljZCAiJHNtX3BhdGgiICYmCkBAIC00NzIsMjEgKzUzNSwyMyBAQAogCQlkaWVfaWZfdW5tYXRjaGVkICIkbW9kZSIKIAkJaWYgdGVzdCAtZSAiJHNtX3BhdGgiLy5naXQKIAkJdGhlbgotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiRW50ZXJpbmcgJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgorCQkJZGlzcGxheXBhdGg9JChyZWxhdGl2ZV9wYXRoICIkc21fcGF0aCIpCisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJFbnRlcmluZyAnXCRwcmVmaXhcJGRpc3BsYXlwYXRoJyIpIgogCQkJbmFtZT0kKG1vZHVsZV9uYW1lICIkc21fcGF0aCIpCiAJCQkoCiAJCQkJcHJlZml4PSIkcHJlZml4JHNtX3BhdGgvIgogCQkJCWNsZWFyX2xvY2FsX2dpdF9lbnYKLQkJCQkjIHdlIG1ha2UgJHBhdGggYXZhaWxhYmxlIHRvIHNjcmlwdHMgLi4uCi0JCQkJcGF0aD0kc21fcGF0aAogCQkJCWNkICIkc21fcGF0aCIgJiYKKwkJCQlzbV9wYXRoPSQocmVsYXRpdmVfcGF0aCAiJHNtX3BhdGgiKSAmJgorCQkJCSMgd2UgbWFrZSAkcGF0aCBhdmFpbGFibGUgdG8gc2NyaXB0cyAuLi4KKwkJCQlwYXRoPSRzbV9wYXRoICYmCiAJCQkJZXZhbCAiJEAiICYmCiAJCQkJaWYgdGVzdCAtbiAiJHJlY3Vyc2l2ZSIKIAkJCQl0aGVuCiAJCQkJCWNtZF9mb3JlYWNoICItLXJlY3Vyc2l2ZSIgIiRAIgogCQkJCWZpCiAJCQkpIDwmMyAzPCYtIHx8Ci0JCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJTdG9wcGluZyBhdCAnXCRzbV9wYXRoJzsgc2NyaXB0IHJldHVybmVkIG5vbi16ZXJvIHN0YXR1cy4iKSIKKwkJCWRpZSAiJChldmFsX2dldHRleHQgIlN0b3BwaW5nIGF0ICdcJHByZWZpeFwkZGlzcGxheXBhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIpIgogCQlmaQogCWRvbmUKIH0KQEAgLTUyNSwxMiArNTkwLDE0IEBACiAJCWRpZV9pZl91bm1hdGNoZWQgIiRtb2RlIgogCQluYW1lPSQobW9kdWxlX25hbWUgIiRzbV9wYXRoIikgfHwgZXhpdAogCisJCWRpc3BsYXlwYXRoPSQocmVsYXRpdmVfcGF0aCAiJHNtX3BhdGgiKQorCiAJCSMgQ29weSB1cmwgc2V0dGluZyB3aGVuIGl0IGlzIG5vdCBzZXQgeWV0CiAJCWlmIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyAic3VibW9kdWxlLiRuYW1lLnVybCIpIgogCQl0aGVuCiAJCQl1cmw9JChnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS4iJG5hbWUiLnVybCkKIAkJCXRlc3QgLXogIiR1cmwiICYmCi0JCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIikiCisJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJyBpbiAuZ2l0bW9kdWxlcyIpIgogCiAJCQkjIFBvc3NpYmx5IGEgdXJsIHJlbGF0aXZlIHRvIHBhcmVudAogCQkJY2FzZSAiJHVybCIgaW4KQEAgLTUzOSw5ICs2MDYsOSBAQAogCQkJCTs7CiAJCQllc2FjCiAJCQlnaXQgY29uZmlnIHN1Ym1vZHVsZS4iJG5hbWUiLnVybCAiJHVybCIgfHwKLQkJCWRpZSAiJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCisJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnXCRkaXNwbGF5cGF0aCciKSIKIAotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlICdcJG5hbWUnIChcJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnXCRzbV9wYXRoJyIpIgorCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlICdcJG5hbWUnIChcJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnXCRkaXNwbGF5cGF0aCciKSIKIAkJZmkKIAogCQkjIENvcHkgInVwZGF0ZSIgc2V0dGluZyB3aGVuIGl0IGlzIG5vdCBzZXQgeWV0CkBAIC01NDksNyArNjE2LDcgQEAKIAkJdGVzdCAteiAiJHVwZCIgfHwKIAkJdGVzdCAtbiAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS4iJG5hbWUiLnVwZGF0ZSkiIHx8CiAJCWdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXBkYXRlICIkdXBkIiB8fAotCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICdcJHNtX3BhdGgnIikiCisJCWRpZSAiJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWdpc3RlciB1cGRhdGUgbW9kZSBmb3Igc3VibW9kdWxlIHBhdGggJ1wkZGlzcGxheXBhdGgnIikiCiAJZG9uZQogfQogCkBAIC01OTUsMjcgKzY2MiwyOSBAQAogCQlkaWVfaWZfdW5tYXRjaGVkICIkbW9kZSIKIAkJbmFtZT0kKG1vZHVsZV9uYW1lICIkc21fcGF0aCIpIHx8IGV4aXQKIAorCQlkaXNwbGF5cGF0aD0kKHJlbGF0aXZlX3BhdGggIiRzbV9wYXRoIikKKwogCQkjIFJlbW92ZSB0aGUgc3VibW9kdWxlIHdvcmsgdHJlZSAodW5sZXNzIHRoZSB1c2VyIGFscmVhZHkgZGlkIGl0KQogCQlpZiB0ZXN0IC1kICIkc21fcGF0aCIKIAkJdGhlbgogCQkJIyBQcm90ZWN0IHN1Ym1vZHVsZXMgY29udGFpbmluZyBhIC5naXQgZGlyZWN0b3J5CiAJCQlpZiB0ZXN0IC1kICIkc21fcGF0aC8uZ2l0IgogCQkJdGhlbgotCQkJCWVjaG8gPiYyICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnXCRzbV9wYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IikiCisJCQkJZWNobyA+JjIgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgd29yayB0cmVlICdcJGRpc3BsYXlwYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IikiCiAJCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIikiCiAJCQlmaQogCiAJCQlpZiB0ZXN0IC16ICIkZm9yY2UiCiAJCQl0aGVuCiAJCQkJZ2l0IHJtIC1xbiAiJHNtX3BhdGgiIHx8Ci0JCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnXCRzbV9wYXRoJyBjb250YWlucyBsb2NhbCBtb2RpZmljYXRpb25zOyB1c2UgJy1mJyB0byBkaXNjYXJkIHRoZW0iKSIKKwkJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgd29yayB0cmVlICdcJGRpc3BsYXlwYXRoJyBjb250YWlucyBsb2NhbCBtb2RpZmljYXRpb25zOyB1c2UgJy1mJyB0byBkaXNjYXJkIHRoZW0iKSIKIAkJCWZpCiAJCQlybSAtcmYgIiRzbV9wYXRoIiAmJgotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiQ2xlYXJlZCBkaXJlY3RvcnkgJ1wkc21fcGF0aCciKSIgfHwKLQkJCXNheSAiJChldmFsX2dldHRleHQgIkNvdWxkIG5vdCByZW1vdmUgc3VibW9kdWxlIHdvcmsgdHJlZSAnXCRzbV9wYXRoJyIpIgorCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiQ2xlYXJlZCBkaXJlY3RvcnkgJ1wkZGlzcGxheXBhdGgnIikiIHx8CisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJ1wkZGlzcGxheXBhdGgnIikiCiAJCWZpCiAKLQkJbWtkaXIgIiRzbV9wYXRoIiB8fCBzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJ1wkc21fcGF0aCciKSIKKwkJbWtkaXIgIiRzbV9wYXRoIiB8fCBzYXkgIiQoZXZhbF9nZXR0ZXh0ICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJ1wkZGlzcGxheXBhdGgnIikiCiAKIAkJIyBSZW1vdmUgdGhlIC5naXQvY29uZmlnIGVudHJpZXMgKHVubGVzcyB0aGUgdXNlciBhbHJlYWR5IGRpZCBpdCkKIAkJaWYgdGVzdCAtbiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCBzdWJtb2R1bGUuIiRuYW1lXC4iKSIKQEAgLTYyNCw3ICs2OTMsNyBAQAogCQkJIyB0aGUgdXNlciBsYXRlciBkZWNpZGVzIHRvIGluaXQgdGhpcyBzdWJtb2R1bGUgYWdhaW4KIAkJCXVybD0kKGdpdCBjb25maWcgc3VibW9kdWxlLiIkbmFtZSIudXJsKQogCQkJZ2l0IGNvbmZpZyAtLXJlbW92ZS1zZWN0aW9uIHN1Ym1vZHVsZS4iJG5hbWUiIDI+L2Rldi9udWxsICYmCi0JCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgJ1wkbmFtZScgKFwkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJ1wkc21fcGF0aCciKSIKKwkJCXNheSAiJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSAnXCRuYW1lJyAoXCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnXCRkaXNwbGF5cGF0aCciKSIKIAkJZmkKIAlkb25lCiB9CkBAIC02NzcsNiArNzQ2LDE0IEBACiAJCS0tY2hlY2tvdXQpCiAJCQl1cGRhdGU9ImNoZWNrb3V0IgogCQkJOzsKKwkJLS1kZXB0aCkKKwkJCWNhc2UgIiQyIiBpbiAnJykgdXNhZ2UgOzsgZXNhYworCQkJZGVwdGg9Ii0tZGVwdGg9JDIiCisJCQlzaGlmdAorCQkJOzsKKwkJLS1kZXB0aD0qKQorCQkJZGVwdGg9JDEKKwkJCTs7CiAJCS0tKQogCQkJc2hpZnQKIAkJCWJyZWFrCkBAIC03MTgsOSArNzk1LDExIEBACiAJCQl1cGRhdGVfbW9kdWxlPSQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuIiRuYW1lIi51cGRhdGUpCiAJCWZpCiAKKwkJZGlzcGxheXBhdGg9JChyZWxhdGl2ZV9wYXRoICIkcHJlZml4JHNtX3BhdGgiKQorCiAJCWlmIHRlc3QgIiR1cGRhdGVfbW9kdWxlIiA9ICJub25lIgogCQl0aGVuCi0JCQllY2hvICJTa2lwcGluZyBzdWJtb2R1bGUgJyRwcmVmaXgkc21fcGF0aCciCisJCQllY2hvICJTa2lwcGluZyBzdWJtb2R1bGUgJyRkaXNwbGF5cGF0aCciCiAJCQljb250aW51ZQogCQlmaQogCkBAIC03MjksMjAgKzgwOCwyMCBAQAogCQkJIyBPbmx5IG1lbnRpb24gdW5pbml0aWFsaXplZCBzdWJtb2R1bGVzIHdoZW4gaXRzCiAJCQkjIHBhdGggaGF2ZSBiZWVuIHNwZWNpZmllZAogCQkJdGVzdCAiJCMiICE9ICIwIiAmJgotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWQKKwkJCXNheSAiJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJyBub3QgaW5pdGlhbGl6ZWQKIE1heWJlIHlvdSB3YW50IHRvIHVzZSAndXBkYXRlIC0taW5pdCc/IikiCiAJCQljb250aW51ZQogCQlmaQogCiAJCWlmICEgdGVzdCAtZCAiJHNtX3BhdGgiLy5naXQgLW8gLWYgIiRzbV9wYXRoIi8uZ2l0CiAJCXRoZW4KLQkJCW1vZHVsZV9jbG9uZSAiJHNtX3BhdGgiICIkbmFtZSIgIiR1cmwiICIkcmVmZXJlbmNlIiB8fCBleGl0CisJCQltb2R1bGVfY2xvbmUgIiRzbV9wYXRoIiAiJG5hbWUiICIkdXJsIiAiJHJlZmVyZW5jZSIgIiRkZXB0aCIgfHwgZXhpdAogCQkJY2xvbmVkX21vZHVsZXM9IiRjbG9uZWRfbW9kdWxlczskbmFtZSIKIAkJCXN1YnNoYTE9CiAJCWVsc2UKIAkJCXN1YnNoYTE9JChjbGVhcl9sb2NhbF9naXRfZW52OyBjZCAiJHNtX3BhdGgiICYmCiAJCQkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSB8fAotCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCisJCQlkaWUgIiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJyIpIgogCQlmaQogCiAJCWlmIHRlc3QgLW4gIiRyZW1vdGUiCkBAIC03NzUsNyArODU0LDcgQEAKIAkJCQkoY2xlYXJfbG9jYWxfZ2l0X2VudjsgY2QgIiRzbV9wYXRoIiAmJgogCQkJCQkoIChyZXY9JChnaXQgcmV2LWxpc3QgLW4gMSAkc2hhMSAtLW5vdCAtLWFsbCAyPi9kZXYvbnVsbCkgJiYKIAkJCQkJIHRlc3QgLXogIiRyZXYiKSB8fCBnaXQtZmV0Y2gpKSB8fAotCQkJCWRpZSAiJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCisJCQkJZGllICIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJyIpIgogCQkJZmkKIAogCQkJIyBJcyB0aGlzIHNvbWV0aGluZyB3ZSBqdXN0IGNsb25lZD8KQEAgLTc4OSwyMCArODY4LDI2IEBACiAJCQljYXNlICIkdXBkYXRlX21vZHVsZSIgaW4KIAkJCXJlYmFzZSkKIAkJCQljb21tYW5kPSJnaXQgcmViYXNlIgotCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gcmViYXNlICdcJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICdcJHByZWZpeFwkc21fcGF0aCciKSIKLQkJCQlzYXlfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICdcJHNoYTEnIikiCisJCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIlVuYWJsZSB0byByZWJhc2UgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkZGlzcGxheXBhdGgnIikiCisJCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJzogcmViYXNlZCBpbnRvICdcJHNoYTEnIikiCiAJCQkJbXVzdF9kaWVfb25fZmFpbHVyZT15ZXMKIAkJCQk7OwogCQkJbWVyZ2UpCiAJCQkJY29tbWFuZD0iZ2l0IG1lcmdlIgotCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gbWVyZ2UgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgotCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnOiBtZXJnZWQgaW4gJ1wkc2hhMSciKSIKKwkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiVW5hYmxlIHRvIG1lcmdlICdcJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJyIpIgorCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRkaXNwbGF5cGF0aCc6IG1lcmdlZCBpbiAnXCRzaGExJyIpIgorCQkJCW11c3RfZGllX29uX2ZhaWx1cmU9eWVzCisJCQkJOzsKKwkJCSEqKQorCQkJCWNvbW1hbmQ9IiR7dXBkYXRlX21vZHVsZSMhfSIKKwkJCQlkaWVfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiRXhlY3V0aW9uIG9mICdcJGNvbW1hbmQgXCRzaGExJyBmYWlsZWQgaW4gc3VibW9kdWxlICBwYXRoICdcJHByZWZpeFwkc21fcGF0aCciKSIKKwkJCQlzYXlfbXNnPSIkKGV2YWxfZ2V0dGV4dCAiU3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJzogJ1wkY29tbWFuZCBcJHNoYTEnIikiCiAJCQkJbXVzdF9kaWVfb25fZmFpbHVyZT15ZXMKIAkJCQk7OwogCQkJKikKIAkJCQljb21tYW5kPSJnaXQgY2hlY2tvdXQgJHN1YmZvcmNlIC1xIgotCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gY2hlY2tvdXQgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgotCQkJCXNheV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJTdWJtb2R1bGUgcGF0aCAnXCRwcmVmaXhcJHNtX3BhdGgnOiBjaGVja2VkIG91dCAnXCRzaGExJyIpIgorCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJVbmFibGUgdG8gY2hlY2tvdXQgJ1wkc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJ1wkZGlzcGxheXBhdGgnIikiCisJCQkJc2F5X21zZz0iJChldmFsX2dldHRleHQgIlN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJzogY2hlY2tlZCBvdXQgJ1wkc2hhMSciKSIKIAkJCQk7OwogCQkJZXNhYwogCkBAIC04MjksNyArOTE0LDcgQEAKIAkJCXJlcz0kPwogCQkJaWYgdGVzdCAkcmVzIC1ndCAwCiAJCQl0aGVuCi0JCQkJZGllX21zZz0iJChldmFsX2dldHRleHQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJ1wkcHJlZml4XCRzbV9wYXRoJyIpIgorCQkJCWRpZV9tc2c9IiQoZXZhbF9nZXR0ZXh0ICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICdcJGRpc3BsYXlwYXRoJyIpIgogCQkJCWlmIHRlc3QgJHJlcyAtZXEgMQogCQkJCXRoZW4KIAkJCQkJZXJyPSIke2Vycn07JGRpZV9tc2ciCkBAIC05NDMsNiArMTAyOCw3IEBACiAJZmkKIAogCWNkX3RvX3RvcGxldmVsCisJZXZhbCAic2V0ICQoZ2l0IHJldi1wYXJzZSAtLXNxIC0tcHJlZml4ICIkd3RfcHJlZml4IiAtLSAiJEAiKSIKIAkjIEdldCBtb2RpZmllZCBtb2R1bGVzIGNhcmVkIGJ5IHVzZXIKIAltb2R1bGVzPSQoZ2l0ICRkaWZmX2NtZCAkY2FjaGVkIC0taWdub3JlLXN1Ym1vZHVsZXM9ZGlydHkgLS1yYXcgJGhlYWQgLS0gIiRAIiB8CiAJCXNhbmVfZWdyZXAgJ146KFswLTddKiApPzE2MDAwMCcgfApAQCAtOTkyLDE2ICsxMDc4LDE4IEBACiAJCSEgR0lUX0RJUj0iJG5hbWUvLmdpdCIgZ2l0LXJldi1wYXJzZSAtcSAtLXZlcmlmeSAkc2hhMV9kc3ReMCA+L2Rldi9udWxsICYmCiAJCW1pc3NpbmdfZHN0PXQKIAorCQlkaXNwbGF5X25hbWU9JChyZWxhdGl2ZV9wYXRoICIkbmFtZSIpCisKIAkJdG90YWxfY29tbWl0cz0KIAkJY2FzZSAiJG1pc3Npbmdfc3JjLCRtaXNzaW5nX2RzdCIgaW4KIAkJdCwpCi0JCQllcnJtc2c9IiQoZXZhbF9nZXR0ZXh0ICIgIFdhcm46IFwkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0IFwkc2hhMV9zcmMiKSIKKwkJCWVycm1zZz0iJChldmFsX2dldHRleHQgIiAgV2FybjogXCRkaXNwbGF5X25hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCBcJHNoYTFfc3JjIikiCiAJCQk7OwogCQksdCkKLQkJCWVycm1zZz0iJChldmFsX2dldHRleHQgIiAgV2FybjogXCRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgXCRzaGExX2RzdCIpIgorCQkJZXJybXNnPSIkKGV2YWxfZ2V0dGV4dCAiICBXYXJuOiBcJGRpc3BsYXlfbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0IFwkc2hhMV9kc3QiKSIKIAkJCTs7CiAJCXQsdCkKLQkJCWVycm1zZz0iJChldmFsX2dldHRleHQgIiAgV2FybjogXCRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXRzIFwkc2hhMV9zcmMgYW5kIFwkc2hhMV9kc3QiKSIKKwkJCWVycm1zZz0iJChldmFsX2dldHRleHQgIiAgV2FybjogXCRkaXNwbGF5X25hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgXCRzaGExX3NyYyBhbmQgXCRzaGExX2RzdCIpIgogCQkJOzsKIAkJKikKIAkJCWVycm1zZz0KQEAgLTEwMzAsMTIgKzExMTgsMTIgQEAKIAkJCXN1Ym1vZHVsZT0iJChnZXR0ZXh0ICJzdWJtb2R1bGUiKSIKIAkJCWlmIHRlc3QgJG1vZF9kc3QgPSAxNjAwMDAKIAkJCXRoZW4KLQkJCQllY2hvICIqICRuYW1lICRzaGExX2FiYnJfc3JjKCRibG9iKS0+JHNoYTFfYWJicl9kc3QoJHN1Ym1vZHVsZSkkdG90YWxfY29tbWl0czoiCisJCQkJZWNobyAiKiAkZGlzcGxheV9uYW1lICRzaGExX2FiYnJfc3JjKCRibG9iKS0+JHNoYTFfYWJicl9kc3QoJHN1Ym1vZHVsZSkkdG90YWxfY29tbWl0czoiCiAJCQllbHNlCi0JCQkJZWNobyAiKiAkbmFtZSAkc2hhMV9hYmJyX3NyYygkc3VibW9kdWxlKS0+JHNoYTFfYWJicl9kc3QoJGJsb2IpJHRvdGFsX2NvbW1pdHM6IgorCQkJCWVjaG8gIiogJGRpc3BsYXlfbmFtZSAkc2hhMV9hYmJyX3NyYygkc3VibW9kdWxlKS0+JHNoYTFfYWJicl9kc3QoJGJsb2IpJHRvdGFsX2NvbW1pdHM6IgogCQkJZmkKIAkJZWxzZQotCQkJZWNobyAiKiAkbmFtZSAkc2hhMV9hYmJyX3NyYy4uLiRzaGExX2FiYnJfZHN0JHRvdGFsX2NvbW1pdHM6IgorCQkJZWNobyAiKiAkZGlzcGxheV9uYW1lICRzaGExX2FiYnJfc3JjLi4uJHNoYTFfYWJicl9kc3QkdG90YWxfY29tbWl0czoiCiAJCWZpCiAJCWlmIHRlc3QgLW4gIiRlcnJtc2ciCiAJCXRoZW4KQEAgLTExMTksNyArMTIwNyw3IEBACiAJCWRpZV9pZl91bm1hdGNoZWQgIiRtb2RlIgogCQluYW1lPSQobW9kdWxlX25hbWUgIiRzbV9wYXRoIikgfHwgZXhpdAogCQl1cmw9JChnaXQgY29uZmlnIHN1Ym1vZHVsZS4iJG5hbWUiLnVybCkKLQkJZGlzcGxheXBhdGg9IiRwcmVmaXgkc21fcGF0aCIKKwkJZGlzcGxheXBhdGg9JChyZWxhdGl2ZV9wYXRoICIkcHJlZml4JHNtX3BhdGgiKQogCQlpZiB0ZXN0ICIkc3RhZ2UiID0gVQogCQl0aGVuCiAJCQlzYXkgIlUkc2hhMSAkZGlzcGxheXBhdGgiCkBAIC0xMTMwLDE2ICsxMjE4LDE2IEBACiAJCQlzYXkgIi0kc2hhMSAkZGlzcGxheXBhdGgiCiAJCQljb250aW51ZTsKIAkJZmkKLQkJc2V0X25hbWVfcmV2ICIkc21fcGF0aCIgIiRzaGExIgogCQlpZiBnaXQgZGlmZi1maWxlcyAtLWlnbm9yZS1zdWJtb2R1bGVzPWRpcnR5IC0tcXVpZXQgLS0gIiRzbV9wYXRoIgogCQl0aGVuCisJCQlzZXRfbmFtZV9yZXYgIiRzbV9wYXRoIiAiJHNoYTEiCiAJCQlzYXkgIiAkc2hhMSAkZGlzcGxheXBhdGgkcmV2bmFtZSIKIAkJZWxzZQogCQkJaWYgdGVzdCAteiAiJGNhY2hlZCIKIAkJCXRoZW4KIAkJCQlzaGExPSQoY2xlYXJfbG9jYWxfZ2l0X2VudjsgY2QgIiRzbV9wYXRoIiAmJiBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpCi0JCQkJc2V0X25hbWVfcmV2ICIkc21fcGF0aCIgIiRzaGExIgogCQkJZmkKKwkJCXNldF9uYW1lX3JldiAiJHNtX3BhdGgiICIkc2hhMSIKIAkJCXNheSAiKyRzaGExICRkaXNwbGF5cGF0aCRyZXZuYW1lIgogCQlmaQogCkBAIC0xMjE0LDcgKzEzMDIsOCBAQAogCiAJCWlmIGdpdCBjb25maWcgInN1Ym1vZHVsZS4kbmFtZS51cmwiID4vZGV2L251bGwgMj4vZGV2L251bGwKIAkJdGhlbgotCQkJc2F5ICIkKGV2YWxfZ2V0dGV4dCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnXCRwcmVmaXhcJHNtX3BhdGgnIikiCisJCQlkaXNwbGF5cGF0aD0kKHJlbGF0aXZlX3BhdGggIiRwcmVmaXgkc21fcGF0aCIpCisJCQlzYXkgIiQoZXZhbF9nZXR0ZXh0ICJTeW5jaHJvbml6aW5nIHN1Ym1vZHVsZSB1cmwgZm9yICdcJGRpc3BsYXlwYXRoJyIpIgogCQkJZ2l0IGNvbmZpZyBzdWJtb2R1bGUuIiRuYW1lIi51cmwgIiRzdXBlcl9jb25maWdfdXJsIgogCiAJCQlpZiB0ZXN0IC1lICIkc21fcGF0aCIvLmdpdApkaWZmIC0tZ2l0IGEvZ2l0LXN2bi5wZXJsIGIvZ2l0LXN2bi5wZXJsCmluZGV4IDRlODI3NWYuLmZmMWNlM2QgMTAwNzU1Ci0tLSBhL2dpdC1zdm4ucGVybAorKysgYi9naXQtc3ZuLnBlcmwKQEAgLTgzMSw3ICs4MzEsNyBAQAogc3ViIGNtZF9kY29tbWl0IHsKIAlteSAkaGVhZCA9IHNoaWZ0OwogCWNvbW1hbmRfbm9pc3kocXcvdXBkYXRlLWluZGV4IC0tcmVmcmVzaC8pOwotCWdpdF9jbWRfdHJ5IHsgY29tbWFuZF9vbmVsaW5lKHF3L2RpZmYtaW5kZXggLS1xdWlldCBIRUFELykgfQorCWdpdF9jbWRfdHJ5IHsgY29tbWFuZF9vbmVsaW5lKHF3L2RpZmYtaW5kZXggLS1xdWlldCBIRUFEIC0tLykgfQogCQknQ2Fubm90IGRjb21taXQgd2l0aCBhIGRpcnR5IGluZGV4LiAgQ29tbWl0IHlvdXIgY2hhbmdlcyBmaXJzdCwgJwogCQkuICJvciBzdGFzaCB0aGVtIHdpdGggYGdpdCBzdGFzaCcuXG4iOwogCSRoZWFkIHx8PSAnSEVBRCc7CkBAIC0xOTMyLDcgKzE5MzIsNyBAQAogc3ViIHdvcmtpbmdfaGVhZF9pbmZvIHsKIAlteSAoJGhlYWQsICRyZWZzKSA9IEBfOwogCW15IEBhcmdzID0gcXcvcmV2LWxpc3QgLS1maXJzdC1wYXJlbnQgLS1wcmV0dHk9bWVkaXVtLzsKLQlteSAoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoQGFyZ3MsICRoZWFkKTsKKwlteSAoJGZoLCAkY3R4KSA9IGNvbW1hbmRfb3V0cHV0X3BpcGUoQGFyZ3MsICRoZWFkLCAiLS0iKTsKIAlteSAkaGFzaDsKIAlteSAlbWF4OwogCXdoaWxlICg8JGZoPikgewpkaWZmIC0tZ2l0IGEvZ2l0LmMgYi9naXQuYwppbmRleCA4OGVlZjVhLi4yMDI1Zjc3IDEwMDY0NAotLS0gYS9naXQuYworKysgYi9naXQuYwpAQCAtMzI0LDYgKzMyNCw3IEBACiAJCXsgImNhdC1maWxlIiwgY21kX2NhdF9maWxlLCBSVU5fU0VUVVAgfSwKIAkJeyAiY2hlY2stYXR0ciIsIGNtZF9jaGVja19hdHRyLCBSVU5fU0VUVVAgfSwKIAkJeyAiY2hlY2staWdub3JlIiwgY21kX2NoZWNrX2lnbm9yZSwgUlVOX1NFVFVQIHwgTkVFRF9XT1JLX1RSRUUgfSwKKwkJeyAiY2hlY2stbWFpbG1hcCIsIGNtZF9jaGVja19tYWlsbWFwLCBSVU5fU0VUVVAgfSwKIAkJeyAiY2hlY2stcmVmLWZvcm1hdCIsIGNtZF9jaGVja19yZWZfZm9ybWF0IH0sCiAJCXsgImNoZWNrb3V0IiwgY21kX2NoZWNrb3V0LCBSVU5fU0VUVVAgfCBORUVEX1dPUktfVFJFRSB9LAogCQl7ICJjaGVja291dC1pbmRleCIsIGNtZF9jaGVja291dF9pbmRleCwKQEAgLTUxNCw4ICs1MTUsOSBAQAogfQogCiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXYpCiB7CisJY29uc3QgY2hhciAqKmFyZ3YgPSAoY29uc3QgY2hhciAqKikgYXY7CiAJY29uc3QgY2hhciAqY21kOwogCiAJc3RhcnR1cF9pbmZvID0gJmdpdF9zdGFydHVwX2luZm87CkBAIC01MjQsNiArNTI2LDEzIEBACiAJaWYgKCFjbWQpCiAJCWNtZCA9ICJnaXQtaGVscCI7CiAKKwkvKgorCSAqIEFsd2F5cyBvcGVuIGZpbGUgZGVzY3JpcHRvcnMgMC8xLzIgdG8gYXZvaWQgY2xvYmJlcmluZyBmaWxlcworCSAqIGluIGRpZSgpLiAgSXQgYWxzbyBhdm9pZHMgbWVzc2luZyB1cCB3aGVuIHRoZSBwaXBlcyBhcmUgZHVwJ2VkCisJICogb250byBzdGRpbi9zdGRvdXQvc3RkZXJyIGluIHRoZSBjaGlsZCBwcm9jZXNzZXMgd2Ugc3Bhd24uCisJICovCisJc2FuaXRpemVfc3RkZmRzKCk7CisKIAlnaXRfc2V0dXBfZ2V0dGV4dCgpOwogCiAJLyoKZGlmZiAtLWdpdCBhL2dpdC5yYyBiL2dpdC5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2U2ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvZ2l0LnJjCkBAIC0wLDAgKzEsMjIgQEAKKzEgVkVSU0lPTklORk8KK0ZJTEVWRVJTSU9OICAgICBNQUpPUixNSU5PUixQQVRDSCwwCitQUk9EVUNUVkVSU0lPTiAgTUFKT1IsTUlOT1IsUEFUQ0gsMAorQkVHSU4KKyAgQkxPQ0sgIlN0cmluZ0ZpbGVJbmZvIgorICBCRUdJTgorICAgIEJMT0NLICIwNDA5MDRiMCIgICAvKiBMQU5HX0VOR0xJU0gvU1VCTEFOR19FTkdMSVNIX1VTLCBVbmljb2RlIENQICovCisgICAgQkVHSU4KKyAgICAgIFZBTFVFICJDb21wYW55TmFtZSIsICJUaGUgR2l0IERldmVsb3BtZW50IENvbW11bml0eVwwIgorICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJHaXQgZm9yIFdpbmRvd3NcMCIKKyAgICAgIFZBTFVFICJJbnRlcm5hbE5hbWUiLCAiZ2l0XDAiCisgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJnaXQuZXhlXDAiCisgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiR2l0XDAiCisgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBHSVRfVkVSU0lPTiAiXDAiCisgICAgRU5ECisgIEVORAorCisgIEJMT0NLICJWYXJGaWxlSW5mbyIKKyAgQkVHSU4KKyAgICBWQUxVRSAiVHJhbnNsYXRpb24iLCAweDQwOSwgMTIwMAorICBFTkQKK0VORApkaWZmIC0tZ2l0IGEvZ2l0d2ViL2dpdHdlYi5wZXJsIGIvZ2l0d2ViL2dpdHdlYi5wZXJsCmluZGV4IDhkNjlhZGEuLmY0MjlmNzUgMTAwNzU1Ci0tLSBhL2dpdHdlYi9naXR3ZWIucGVybAorKysgYi9naXR3ZWIvZ2l0d2ViLnBlcmwKQEAgLTg1LDYgKzg1LDkgQEAKICMgc3RyaW5nIG9mIHRoZSBob21lIGxpbmsgb24gdG9wIG9mIGFsbCBwYWdlcwogb3VyICRob21lX2xpbmtfc3RyID0gIisrR0lUV0VCX0hPTUVfTElOS19TVFIrKyI7CiAKKyMgZXh0cmEgYnJlYWRjcnVtYnMgcHJlY2VkaW5nIHRoZSBob21lIGxpbmsKK291ciBAZXh0cmFfYnJlYWRjcnVtYnMgPSAoKTsKKwogIyBuYW1lIG9mIHlvdXIgc2l0ZSBvciBvcmdhbml6YXRpb24gdG8gYXBwZWFyIGluIHBhZ2UgdGl0bGVzCiAjIHJlcGxhY2UgdGhpcyB3aXRoIHNvbWV0aGluZyBtb3JlIGRlc2NyaXB0aXZlIGZvciBjbGVhcmVyIGJvb2ttYXJrcwogb3VyICRzaXRlX25hbWUgPSAiKytHSVRXRUJfU0lURU5BTUUrKyIKQEAgLTM5ODIsNyArMzk4NSw5IEBACiBzdWIgcHJpbnRfbmF2X2JyZWFkY3J1bWJzIHsKIAlteSAlb3B0cyA9IEBfOwogCi0JcHJpbnQgJGNnaS0+YSh7LWhyZWYgPT4gZXNjX3VybCgkaG9tZV9saW5rKX0sICRob21lX2xpbmtfc3RyKSAuICIgLyAiOworCWZvciBteSAkY3J1bWIgKEBleHRyYV9icmVhZGNydW1icywgWyAkaG9tZV9saW5rX3N0ciA9PiAkaG9tZV9saW5rIF0pIHsKKwkJcHJpbnQgJGNnaS0+YSh7LWhyZWYgPT4gZXNjX3VybCgkY3J1bWItPlsxXSl9LCAkY3J1bWItPlswXSkgLiAiIC8gIjsKKwl9CiAJaWYgKGRlZmluZWQgJHByb2plY3QpIHsKIAkJbXkgQGRpcm5hbWUgPSBzcGxpdCAnLycsICRwcm9qZWN0OwogCQlteSAkcHJvamVjdGJhc2VuYW1lID0gcG9wIEBkaXJuYW1lOwpkaWZmIC0tZ2l0IGEvaGVscC5jIGIvaGVscC5jCmluZGV4IGJlYmZjZTkuLmYwNjg5MjUgMTAwNjQ0Ci0tLSBhL2hlbHAuYworKysgYi9oZWxwLmMKQEAgLTEwNywxMCArMTA3LDcgQEAKIAkgICAgIVNfSVNSRUcoc3Quc3RfbW9kZSkpCiAJCXJldHVybiAwOwogCi0jaWYgZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQotI2lmIGRlZmluZWQoX19DWUdXSU5fXykKLWlmICgoc3Quc3RfbW9kZSAmIFNfSVhVU1IpID09IDApCi0jZW5kaWYKKyNpZiBkZWZpbmVkKEdJVF9XSU5ET1dTX05BVElWRSkKIHsJLyogY2Fubm90IHRydXN0IHRoZSBleGVjdXRhYmxlIGJpdCwgcGVlayBpbnRvIHRoZSBmaWxlIGluc3RlYWQgKi8KIAljaGFyIGJ1ZlszXSA9IHsgMCB9OwogCWludCBuOwpkaWZmIC0tZ2l0IGEvaHR0cC1iYWNrZW5kLmMgYi9odHRwLWJhY2tlbmQuYwppbmRleCA2Yjg1ZmZhLi4wMzI0NDE3IDEwMDY0NAotLS0gYS9odHRwLWJhY2tlbmQuYworKysgYi9odHRwLWJhY2tlbmQuYwpAQCAtNDEwLDE0ICs0MTAsMTQgQEAKIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIH0KIAotc3RhdGljIGludCBzaG93X2hlYWRfcmVmKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCitzdGF0aWMgaW50IHNob3dfaGVhZF9yZWYoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKIAlpbnQgZmxhZywgdm9pZCAqY2JfZGF0YSkKIHsKIAlzdHJ1Y3Qgc3RyYnVmICpidWYgPSBjYl9kYXRhOwogCiAJaWYgKGZsYWcgJiBSRUZfSVNTWU1SRUYpIHsKLQkJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKLQkJY29uc3QgY2hhciAqdGFyZ2V0ID0gcmVzb2x2ZV9yZWZfdW5zYWZlKG5hbWUsIHNoYTEsIDEsIE5VTEwpOworCQl1bnNpZ25lZCBjaGFyIHVudXNlZFsyMF07CisJCWNvbnN0IGNoYXIgKnRhcmdldCA9IHJlc29sdmVfcmVmX3Vuc2FmZShyZWZuYW1lLCB1bnVzZWQsIDEsIE5VTEwpOwogCQljb25zdCBjaGFyICp0YXJnZXRfbm9ucyA9IHN0cmlwX25hbWVzcGFjZSh0YXJnZXQpOwogCiAJCXN0cmJ1Zl9hZGRmKGJ1ZiwgInJlZjogJXNcbiIsIHRhcmdldF9ub25zKTsKZGlmZiAtLWdpdCBhL2t3c2V0LmMgYi9rd3NldC5jCmluZGV4IDU4MDA5OTkuLmEwZjQ5YjMgMTAwNjQ0Ci0tLSBhL2t3c2V0LmMKKysrIGIva3dzZXQuYwpAQCAtNjUsNyArNjUsNyBAQAogICBzdHJ1Y3QgdHJpZSAqZmFpbDsJCS8qIEFoby1Db3Jhc2ljayBmYWlsdXJlIGZ1bmN0aW9uLiAqLwogICBpbnQgZGVwdGg7CQkJLyogRGVwdGggb2YgdGhpcyBub2RlIGZyb20gdGhlIHJvb3QuICovCiAgIGludCBzaGlmdDsJCQkvKiBTaGlmdCBmdW5jdGlvbiBmb3Igc2VhcmNoIGZhaWx1cmVzLiAqLwotICBpbnQgbWF4c2hpZnQ7CQkJLyogTWF4IHNoaWZ0IG9mIHNlbGYgYW5kIGRlc2NlbmRlbnRzLiAqLworICBpbnQgbWF4c2hpZnQ7CQkJLyogTWF4IHNoaWZ0IG9mIHNlbGYgYW5kIGRlc2NlbmRhbnRzLiAqLwogfTsKIAogLyogU3RydWN0dXJlIHJldHVybmVkIG9wYXF1ZWx5IHRvIHRoZSBjYWxsZXIsIGNvbnRhaW5pbmcgZXZlcnl0aGluZy4gKi8KQEAgLTMwOCw3ICszMDgsNyBAQAogICB0cmVlZmFpbHModHJlZS0+cmxpbmssIGZhaWwsIHJlY291cnNlKTsKIAogICAvKiBGaW5kLCBpbiB0aGUgY2hhaW4gb2YgZmFpbHMgZ29pbmcgYmFjayB0byB0aGUgcm9vdCwgdGhlIGZpcnN0Ci0gICAgIG5vZGUgdGhhdCBoYXMgYSBkZXNjZW5kZW50IG9uIHRoZSBjdXJyZW50IGxhYmVsLiAqLworICAgICBub2RlIHRoYXQgaGFzIGEgZGVzY2VuZGFudCBvbiB0aGUgY3VycmVudCBsYWJlbC4gKi8KICAgd2hpbGUgKGZhaWwpCiAgICAgewogICAgICAgbGluayA9IGZhaWwtPmxpbmtzOwpAQCAtNDI2LDEzICs0MjYsMTMgQEAKIAkgY29tcHV0aW5nIHRoZSBkZWx0YSB0YWJsZSwgZmFpbHVyZSBmdW5jdGlvbiwgYW5kIHNoaWZ0IGZ1bmN0aW9uLiAqLwogICAgICAgZm9yIChjdXJyID0gbGFzdCA9IGt3c2V0LT50cmllOyBjdXJyOyBjdXJyID0gY3Vyci0+bmV4dCkKIAl7Ci0JICAvKiBFbnF1ZXVlIHRoZSBpbW1lZGlhdGUgZGVzY2VuZGVudHMgaW4gdGhlIGxldmVsIG9yZGVyIHF1ZXVlLiAqLworCSAgLyogRW5xdWV1ZSB0aGUgaW1tZWRpYXRlIGRlc2NlbmRhbnRzIGluIHRoZSBsZXZlbCBvcmRlciBxdWV1ZS4gKi8KIAkgIGVucXVldWUoY3Vyci0+bGlua3MsICZsYXN0KTsKIAogCSAgY3Vyci0+c2hpZnQgPSBrd3NldC0+bWluZDsKIAkgIGN1cnItPm1heHNoaWZ0ID0ga3dzZXQtPm1pbmQ7CiAKLQkgIC8qIFVwZGF0ZSB0aGUgZGVsdGEgdGFibGUgZm9yIHRoZSBkZXNjZW5kZW50cyBvZiB0aGlzIG5vZGUuICovCisJICAvKiBVcGRhdGUgdGhlIGRlbHRhIHRhYmxlIGZvciB0aGUgZGVzY2VuZGFudHMgb2YgdGhpcyBub2RlLiAqLwogCSAgdHJlZWRlbHRhKGN1cnItPmxpbmtzLCBjdXJyLT5kZXB0aCwgZGVsdGEpOwogCiAJICAvKiBDb21wdXRlIHRoZSBmYWlsdXJlIGZ1bmN0aW9uIGZvciB0aGUgZGVzY2VuZGFudHMgb2YgdGhpcyBub2RlLiAqLwpAQCAtNDUwLDcgKzQ1MCw3IEBACiAJCSAgZmFpbC0+c2hpZnQgPSBjdXJyLT5kZXB0aCAtIGZhaWwtPmRlcHRoOwogCiAJICAgICAgLyogSWYgdGhlIGN1cnJlbnQgbm9kZSBpcyBhY2NlcHRpbmcgdGhlbiB0aGUgc2hpZnQgYXQgdGhlCi0JCSBmYWlsIGFuZCBpdHMgZGVzY2VuZGVudHMgc2hvdWxkIGJlIG5vIGxhcmdlciB0aGFuIHRoZQorCQkgZmFpbCBhbmQgaXRzIGRlc2NlbmRhbnRzIHNob3VsZCBiZSBubyBsYXJnZXIgdGhhbiB0aGUKIAkJIGRpZmZlcmVuY2Ugb2YgdGhlaXIgZGVwdGhzLiAqLwogCSAgICAgIGlmIChjdXJyLT5hY2NlcHRpbmcgJiYgZmFpbC0+bWF4c2hpZnQgPiBjdXJyLT5kZXB0aCAtIGZhaWwtPmRlcHRoKQogCQlmYWlsLT5tYXhzaGlmdCA9IGN1cnItPmRlcHRoIC0gZmFpbC0+ZGVwdGg7CmRpZmYgLS1naXQgYS9saW5lLWxvZy5jIGIvbGluZS1sb2cuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmQwMWRjCi0tLSAvZGV2L251bGwKKysrIGIvbGluZS1sb2cuYwpAQCAtMCwwICsxLDEyNzcgQEAKKyNpbmNsdWRlICJnaXQtY29tcGF0LXV0aWwuaCIKKyNpbmNsdWRlICJsaW5lLXJhbmdlLmgiCisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJ0YWcuaCIKKyNpbmNsdWRlICJibG9iLmgiCisjaW5jbHVkZSAidHJlZS5oIgorI2luY2x1ZGUgImRpZmYuaCIKKyNpbmNsdWRlICJjb21taXQuaCIKKyNpbmNsdWRlICJkZWNvcmF0ZS5oIgorI2luY2x1ZGUgInJldmlzaW9uLmgiCisjaW5jbHVkZSAieGRpZmYtaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAic3RyYnVmLmgiCisjaW5jbHVkZSAibG9nLXRyZWUuaCIKKyNpbmNsdWRlICJncmFwaC5oIgorI2luY2x1ZGUgInVzZXJkaWZmLmgiCisjaW5jbHVkZSAibGluZS1sb2cuaCIKKworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2dyb3coc3RydWN0IHJhbmdlX3NldCAqcnMsIHNpemVfdCBleHRyYSkKK3sKKwlBTExPQ19HUk9XKHJzLT5yYW5nZXMsIHJzLT5uciArIGV4dHJhLCBycy0+YWxsb2MpOworfQorCisvKiBFaXRoZXIgaW5pdGlhbGl6YXRpb24gd291bGQgYmUgZmluZSAqLworI2RlZmluZSBSQU5HRV9TRVRfSU5JVCB7MH0KKworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2luaXQoc3RydWN0IHJhbmdlX3NldCAqcnMsIHNpemVfdCBwcmVhbGxvYykKK3sKKwlycy0+YWxsb2MgPSBycy0+bnIgPSAwOworCXJzLT5yYW5nZXMgPSBOVUxMOworCWlmIChwcmVhbGxvYykKKwkJcmFuZ2Vfc2V0X2dyb3cocnMsIHByZWFsbG9jKTsKK30KKworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X3JlbGVhc2Uoc3RydWN0IHJhbmdlX3NldCAqcnMpCit7CisJZnJlZShycy0+cmFuZ2VzKTsKKwlycy0+YWxsb2MgPSBycy0+bnIgPSAwOworCXJzLT5yYW5nZXMgPSBOVUxMOworfQorCisvKiBkc3QgbXVzdCBiZSB1bmluaXRpYWxpemVkISAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2NvcHkoc3RydWN0IHJhbmdlX3NldCAqZHN0LCBzdHJ1Y3QgcmFuZ2Vfc2V0ICpzcmMpCit7CisJcmFuZ2Vfc2V0X2luaXQoZHN0LCBzcmMtPm5yKTsKKwltZW1jcHkoZHN0LT5yYW5nZXMsIHNyYy0+cmFuZ2VzLCBzcmMtPm5yKnNpemVvZihzdHJ1Y3QgcmFuZ2Vfc2V0KSk7CisJZHN0LT5uciA9IHNyYy0+bnI7Cit9CitzdGF0aWMgdm9pZCByYW5nZV9zZXRfbW92ZShzdHJ1Y3QgcmFuZ2Vfc2V0ICpkc3QsIHN0cnVjdCByYW5nZV9zZXQgKnNyYykKK3sKKwlyYW5nZV9zZXRfcmVsZWFzZShkc3QpOworCWRzdC0+cmFuZ2VzID0gc3JjLT5yYW5nZXM7CisJZHN0LT5uciA9IHNyYy0+bnI7CisJZHN0LT5hbGxvYyA9IHNyYy0+YWxsb2M7CisJc3JjLT5yYW5nZXMgPSBOVUxMOworCXNyYy0+YWxsb2MgPSBzcmMtPm5yID0gMDsKK30KKworLyogdGFjayBvbiBhIF9uZXdfIHJhbmdlIF9hdCB0aGUgZW5kXyAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X2FwcGVuZF91bnNhZmUoc3RydWN0IHJhbmdlX3NldCAqcnMsIGxvbmcgYSwgbG9uZyBiKQoreworCWFzc2VydChhIDw9IGIpOworCXJhbmdlX3NldF9ncm93KHJzLCAxKTsKKwlycy0+cmFuZ2VzW3JzLT5ucl0uc3RhcnQgPSBhOworCXJzLT5yYW5nZXNbcnMtPm5yXS5lbmQgPSBiOworCXJzLT5ucisrOworfQorCitzdGF0aWMgdm9pZCByYW5nZV9zZXRfYXBwZW5kKHN0cnVjdCByYW5nZV9zZXQgKnJzLCBsb25nIGEsIGxvbmcgYikKK3sKKwlhc3NlcnQocnMtPm5yID09IDAgfHwgcnMtPnJhbmdlc1tycy0+bnItMV0uZW5kIDw9IGEpOworCXJhbmdlX3NldF9hcHBlbmRfdW5zYWZlKHJzLCBhLCBiKTsKK30KKworc3RhdGljIGludCByYW5nZV9jbXAoY29uc3Qgdm9pZCAqX3IsIGNvbnN0IHZvaWQgKl9zKQoreworCWNvbnN0IHN0cnVjdCByYW5nZSAqciA9IF9yOworCWNvbnN0IHN0cnVjdCByYW5nZSAqcyA9IF9zOworCisJLyogdGhpcyBjb3VsZCBiZSBzaW1wbHkgJ3JldHVybiByLnN0YXJ0LXMuc3RhcnQnLCBidXQgZm9yIHRoZSB0eXBlcyAqLworCWlmIChyLT5zdGFydCA9PSBzLT5zdGFydCkKKwkJcmV0dXJuIDA7CisJaWYgKHItPnN0YXJ0IDwgcy0+c3RhcnQpCisJCXJldHVybiAtMTsKKwlyZXR1cm4gMTsKK30KKworLyoKKyAqIENoZWNrIHRoYXQgdGhlIHJhbmdlcyBhcmUgbm9uLWVtcHR5LCBzb3J0ZWQgYW5kIG5vbi1vdmVybGFwcGluZworICovCitzdGF0aWMgdm9pZCByYW5nZV9zZXRfY2hlY2tfaW52YXJpYW50cyhzdHJ1Y3QgcmFuZ2Vfc2V0ICpycykKK3sKKwlpbnQgaTsKKworCWlmICghcnMpCisJCXJldHVybjsKKworCWlmIChycy0+bnIpCisJCWFzc2VydChycy0+cmFuZ2VzWzBdLnN0YXJ0IDwgcnMtPnJhbmdlc1swXS5lbmQpOworCisJZm9yIChpID0gMTsgaSA8IHJzLT5ucjsgaSsrKSB7CisJCWFzc2VydChycy0+cmFuZ2VzW2ktMV0uZW5kIDwgcnMtPnJhbmdlc1tpXS5zdGFydCk7CisJCWFzc2VydChycy0+cmFuZ2VzW2ldLnN0YXJ0IDwgcnMtPnJhbmdlc1tpXS5lbmQpOworCX0KK30KKworLyoKKyAqIEluLXBsYWNlIHBhc3Mgb2Ygc29ydGluZyBhbmQgbWVyZ2luZyB0aGUgcmFuZ2VzIGluIHRoZSByYW5nZSBzZXQsCisgKiB0byBlc3RhYmxpc2ggdGhlIGludmFyaWFudHMgd2hlbiB3ZSBnZXQgdGhlIHJhbmdlcyBmcm9tIHRoZSB1c2VyCisgKi8KK3N0YXRpYyB2b2lkIHNvcnRfYW5kX21lcmdlX3JhbmdlX3NldChzdHJ1Y3QgcmFuZ2Vfc2V0ICpycykKK3sKKwlpbnQgaTsKKwlpbnQgbyA9IDA7IC8qIG91dHB1dCBjdXJzb3IgKi8KKworCXFzb3J0KHJzLT5yYW5nZXMsIHJzLT5uciwgc2l6ZW9mKHN0cnVjdCByYW5nZSksIHJhbmdlX2NtcCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcnMtPm5yOyBpKyspIHsKKwkJaWYgKHJzLT5yYW5nZXNbaV0uc3RhcnQgPT0gcnMtPnJhbmdlc1tpXS5lbmQpCisJCQljb250aW51ZTsKKwkJaWYgKG8gPiAwICYmIHJzLT5yYW5nZXNbaV0uc3RhcnQgPD0gcnMtPnJhbmdlc1tvLTFdLmVuZCkgeworCQkJaWYgKHJzLT5yYW5nZXNbby0xXS5lbmQgPCBycy0+cmFuZ2VzW2ldLmVuZCkKKwkJCQlycy0+cmFuZ2VzW28tMV0uZW5kID0gcnMtPnJhbmdlc1tpXS5lbmQ7CisJCX0gZWxzZSB7CisJCQlycy0+cmFuZ2VzW29dLnN0YXJ0ID0gcnMtPnJhbmdlc1tpXS5zdGFydDsKKwkJCXJzLT5yYW5nZXNbb10uZW5kID0gcnMtPnJhbmdlc1tpXS5lbmQ7CisJCQlvKys7CisJCX0KKwl9CisJYXNzZXJ0KG8gPD0gcnMtPm5yKTsKKwlycy0+bnIgPSBvOworCisJcmFuZ2Vfc2V0X2NoZWNrX2ludmFyaWFudHMocnMpOworfQorCisvKgorICogVW5pb24gb2YgcmFuZ2Ugc2V0cyAoaS5lLiwgc2V0cyBvZiBsaW5lIG51bWJlcnMpLiAgVXNlZCB0byBtZXJnZQorICogdGhlbSB3aGVuIHNlYXJjaGVzIG1lZXQgYXQgYSBjb21tb24gYW5jZXN0b3IuCisgKgorICogVGhpcyBpcyBhbHNvIHdoZXJlIHRoZSByYW5nZXMgYXJlIGNvbnNvbGlkYXRlZCBpbnRvIGNhbm9uaWNhbCBmb3JtOgorICogb3ZlcmxhcHBpbmcgYW5kIGFkamFjZW50IHJhbmdlcyBhcmUgbWVyZ2VkLCBhbmQgZW1wdHkgcmFuZ2VzIGFyZQorICogcmVtb3ZlZC4KKyAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X3VuaW9uKHN0cnVjdCByYW5nZV9zZXQgKm91dCwKKwkJCSAgICAgc3RydWN0IHJhbmdlX3NldCAqYSwgc3RydWN0IHJhbmdlX3NldCAqYikKK3sKKwlpbnQgaSA9IDAsIGogPSAwLCBvID0gMDsKKwlzdHJ1Y3QgcmFuZ2UgKnJhID0gYS0+cmFuZ2VzOworCXN0cnVjdCByYW5nZSAqcmIgPSBiLT5yYW5nZXM7CisJLyogY2Fubm90IG1ha2UgYW4gYWxpYXMgb2Ygb3V0LT5yYW5nZXM6IGl0IG1heSBjaGFuZ2UgZHVyaW5nIGdyb3cgKi8KKworCWFzc2VydChvdXQtPm5yID09IDApOworCXdoaWxlIChpIDwgYS0+bnIgfHwgaiA8IGItPm5yKSB7CisJCXN0cnVjdCByYW5nZSAqbmV3OworCQlpZiAoaSA8IGEtPm5yICYmIGogPCBiLT5ucikgeworCQkJaWYgKHJhW2ldLnN0YXJ0IDwgcmJbal0uc3RhcnQpCisJCQkJbmV3ID0gJnJhW2krK107CisJCQllbHNlIGlmIChyYVtpXS5zdGFydCA+IHJiW2pdLnN0YXJ0KQorCQkJCW5ldyA9ICZyYltqKytdOworCQkJZWxzZSBpZiAocmFbaV0uZW5kIDwgcmJbal0uZW5kKQorCQkJCW5ldyA9ICZyYVtpKytdOworCQkJZWxzZQorCQkJCW5ldyA9ICZyYltqKytdOworCQl9IGVsc2UgaWYgKGkgPCBhLT5ucikgICAgICAvKiBiIGV4aGF1c3RlZCAqLworCQkJbmV3ID0gJnJhW2krK107CisJCWVsc2UgICAgICAgICAgICAgICAgICAgICAgIC8qIGEgZXhoYXVzdGVkICovCisJCQluZXcgPSAmcmJbaisrXTsKKwkJaWYgKG5ldy0+c3RhcnQgPT0gbmV3LT5lbmQpCisJCQk7IC8qIGVtcHR5IHJhbmdlICovCisJCWVsc2UgaWYgKCFvIHx8IG91dC0+cmFuZ2VzW28tMV0uZW5kIDwgbmV3LT5zdGFydCkgeworCQkJcmFuZ2Vfc2V0X2dyb3cob3V0LCAxKTsKKwkJCW91dC0+cmFuZ2VzW29dLnN0YXJ0ID0gbmV3LT5zdGFydDsKKwkJCW91dC0+cmFuZ2VzW29dLmVuZCA9IG5ldy0+ZW5kOworCQkJbysrOworCQl9IGVsc2UgaWYgKG91dC0+cmFuZ2VzW28tMV0uZW5kIDwgbmV3LT5lbmQpIHsKKwkJCW91dC0+cmFuZ2VzW28tMV0uZW5kID0gbmV3LT5lbmQ7CisJCX0KKwl9CisJb3V0LT5uciA9IG87Cit9CisKKy8qCisgKiBEaWZmZXJlbmNlIG9mIHJhbmdlIHNldHMgKG91dCA9IGEgXCBiKS4gIFBhc3MgdGhlICJpbnRlcmVzdGluZyIKKyAqIHJhbmdlcyBhcyAnYScgYW5kIHRoZSB0YXJnZXQgc2lkZSBvZiB0aGUgZGlmZiBhcyAnYic6IGl0IHJlbW92ZXMKKyAqIHRoZSByYW5nZXMgZm9yIHdoaWNoIHRoZSBjb21taXQgaXMgcmVzcG9uc2libGUuCisgKi8KK3N0YXRpYyB2b2lkIHJhbmdlX3NldF9kaWZmZXJlbmNlKHN0cnVjdCByYW5nZV9zZXQgKm91dCwKKwkJCQkgIHN0cnVjdCByYW5nZV9zZXQgKmEsIHN0cnVjdCByYW5nZV9zZXQgKmIpCit7CisJaW50IGksIGogPSAgMDsKKwlmb3IgKGkgPSAwOyBpIDwgYS0+bnI7IGkrKykgeworCQlsb25nIHN0YXJ0ID0gYS0+cmFuZ2VzW2ldLnN0YXJ0OworCQlsb25nIGVuZCA9IGEtPnJhbmdlc1tpXS5lbmQ7CisJCXdoaWxlIChzdGFydCA8IGVuZCkgeworCQkJd2hpbGUgKGogPCBiLT5uciAmJiBzdGFydCA+PSBiLT5yYW5nZXNbal0uZW5kKQorCQkJCS8qCisJCQkJICogYTogICAgICAgICB8LS0tLS0tLQorCQkJCSAqIGI6IC0tLS0tLXwKKwkJCQkgKi8KKwkJCQlqKys7CisJCQlpZiAoaiA+PSBiLT5uciB8fCBlbmQgPCBiLT5yYW5nZXNbal0uc3RhcnQpIHsKKwkJCQkvKgorCQkJCSAqIGIgZXhoYXVzdGVkLCBvcgorCQkJCSAqIGE6ICAtLS0tfAorCQkJCSAqIGI6ICAgICAgICAgfC0tLS0KKwkJCQkgKi8KKwkJCQlyYW5nZV9zZXRfYXBwZW5kKG91dCwgc3RhcnQsIGVuZCk7CisJCQkJYnJlYWs7CisJCQl9CisJCQlpZiAoc3RhcnQgPj0gYi0+cmFuZ2VzW2pdLnN0YXJ0KSB7CisJCQkJLyoKKwkJCQkgKiBhOiAgICAgfC0tPz8/PworCQkJCSAqIGI6IHwtLS0tLS18CisJCQkJICovCisJCQkJc3RhcnQgPSBiLT5yYW5nZXNbal0uZW5kOworCQkJfSBlbHNlIGlmIChlbmQgPiBiLT5yYW5nZXNbal0uc3RhcnQpIHsKKwkJCQkvKgorCQkJCSAqIGE6IHwtLS0tLXwKKwkJCQkgKiBiOiAgICB8LS0/Pz8/PworCQkJCSAqLworCQkJCWlmIChzdGFydCA8IGItPnJhbmdlc1tqXS5zdGFydCkKKwkJCQkJcmFuZ2Vfc2V0X2FwcGVuZChvdXQsIHN0YXJ0LCBiLT5yYW5nZXNbal0uc3RhcnQpOworCQkJCXN0YXJ0ID0gYi0+cmFuZ2VzW2pdLmVuZDsKKwkJCX0KKwkJfQorCX0KK30KKworc3RhdGljIHZvaWQgZGlmZl9yYW5nZXNfaW5pdChzdHJ1Y3QgZGlmZl9yYW5nZXMgKmRpZmYpCit7CisJcmFuZ2Vfc2V0X2luaXQoJmRpZmYtPnBhcmVudCwgMCk7CisJcmFuZ2Vfc2V0X2luaXQoJmRpZmYtPnRhcmdldCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGRpZmZfcmFuZ2VzX3JlbGVhc2Uoc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmKQoreworCXJhbmdlX3NldF9yZWxlYXNlKCZkaWZmLT5wYXJlbnQpOworCXJhbmdlX3NldF9yZWxlYXNlKCZkaWZmLT50YXJnZXQpOworfQorCit2b2lkIGxpbmVfbG9nX2RhdGFfaW5pdChzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcikKK3sKKwltZW1zZXQociwgMCwgc2l6ZW9mKHN0cnVjdCBsaW5lX2xvZ19kYXRhKSk7CisJcmFuZ2Vfc2V0X2luaXQoJnItPnJhbmdlcywgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGxpbmVfbG9nX2RhdGFfY2xlYXIoc3RydWN0IGxpbmVfbG9nX2RhdGEgKnIpCit7CisJcmFuZ2Vfc2V0X3JlbGVhc2UoJnItPnJhbmdlcyk7CisJaWYgKHItPnBhaXIpCisJCWRpZmZfZnJlZV9maWxlcGFpcihyLT5wYWlyKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV9saW5lX2xvZ19kYXRhKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKQoreworCXdoaWxlIChyKSB7CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpuZXh0ID0gci0+bmV4dDsKKwkJbGluZV9sb2dfZGF0YV9jbGVhcihyKTsKKwkJZnJlZShyKTsKKwkJciA9IG5leHQ7CisJfQorfQorCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKgorc2VhcmNoX2xpbmVfbG9nX2RhdGEoc3RydWN0IGxpbmVfbG9nX2RhdGEgKmxpc3QsIGNvbnN0IGNoYXIgKnBhdGgsCisJCSAgICAgc3RydWN0IGxpbmVfbG9nX2RhdGEgKippbnNlcnRpb25fcG9pbnQpCit7CisJc3RydWN0IGxpbmVfbG9nX2RhdGEgKnAgPSBsaXN0OworCWlmIChpbnNlcnRpb25fcG9pbnQpCisJCSppbnNlcnRpb25fcG9pbnQgPSBOVUxMOworCXdoaWxlIChwKSB7CisJCWludCBjbXAgPSBzdHJjbXAocC0+cGF0aCwgcGF0aCk7CisJCWlmICghY21wKQorCQkJcmV0dXJuIHA7CisJCWlmIChpbnNlcnRpb25fcG9pbnQgJiYgY21wIDwgMCkKKwkJCSppbnNlcnRpb25fcG9pbnQgPSBwOworCQlwID0gcC0+bmV4dDsKKwl9CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qCisgKiBOb3RlOiB0YWtlcyBvd25lcnNoaXAgb2YgJ3BhdGgnLCB3aGljaCBoYXBwZW5zIHRvIGJlIHdoYXQgdGhlIG9ubHkKKyAqIGNhbGxlciBuZWVkcy4KKyAqLworc3RhdGljIHZvaWQgbGluZV9sb2dfZGF0YV9pbnNlcnQoc3RydWN0IGxpbmVfbG9nX2RhdGEgKipsaXN0LAorCQkJCSBjaGFyICpwYXRoLAorCQkJCSBsb25nIGJlZ2luLCBsb25nIGVuZCkKK3sKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqaXA7CisJc3RydWN0IGxpbmVfbG9nX2RhdGEgKnAgPSBzZWFyY2hfbGluZV9sb2dfZGF0YSgqbGlzdCwgcGF0aCwgJmlwKTsKKworCWlmIChwKSB7CisJCXJhbmdlX3NldF9hcHBlbmRfdW5zYWZlKCZwLT5yYW5nZXMsIGJlZ2luLCBlbmQpOworCQlzb3J0X2FuZF9tZXJnZV9yYW5nZV9zZXQoJnAtPnJhbmdlcyk7CisJCWZyZWUocGF0aCk7CisJCXJldHVybjsKKwl9CisKKwlwID0geGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IGxpbmVfbG9nX2RhdGEpKTsKKwlwLT5wYXRoID0gcGF0aDsKKwlyYW5nZV9zZXRfYXBwZW5kKCZwLT5yYW5nZXMsIGJlZ2luLCBlbmQpOworCXNvcnRfYW5kX21lcmdlX3JhbmdlX3NldCgmcC0+cmFuZ2VzKTsKKwlpZiAoaXApIHsKKwkJcC0+bmV4dCA9IGlwLT5uZXh0OworCQlpcC0+bmV4dCA9IHA7CisJfSBlbHNlIHsKKwkJcC0+bmV4dCA9ICpsaXN0OworCQkqbGlzdCA9IHA7CisJfQorfQorCitzdHJ1Y3QgY29sbGVjdF9kaWZmX2NiZGF0YSB7CisJc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmOworfTsKKworc3RhdGljIGludCBjb2xsZWN0X2RpZmZfY2IobG9uZyBzdGFydF9hLCBsb25nIGNvdW50X2EsCisJCQkgICBsb25nIHN0YXJ0X2IsIGxvbmcgY291bnRfYiwKKwkJCSAgIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGNvbGxlY3RfZGlmZl9jYmRhdGEgKmQgPSBkYXRhOworCisJaWYgKGNvdW50X2EgPj0gMCkKKwkJcmFuZ2Vfc2V0X2FwcGVuZCgmZC0+ZGlmZi0+cGFyZW50LCBzdGFydF9hLCBzdGFydF9hICsgY291bnRfYSk7CisJaWYgKGNvdW50X2IgPj0gMCkKKwkJcmFuZ2Vfc2V0X2FwcGVuZCgmZC0+ZGlmZi0+dGFyZ2V0LCBzdGFydF9iLCBzdGFydF9iICsgY291bnRfYik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgY29sbGVjdF9kaWZmKG1tZmlsZV90ICpwYXJlbnQsIG1tZmlsZV90ICp0YXJnZXQsIHN0cnVjdCBkaWZmX3JhbmdlcyAqb3V0KQoreworCXN0cnVjdCBjb2xsZWN0X2RpZmZfY2JkYXRhIGNiZGF0YSA9IHtOVUxMfTsKKwl4cHBhcmFtX3QgeHBwOworCXhkZW1pdGNvbmZfdCB4ZWNmZzsKKwl4ZGVtaXRjYl90IGVjYjsKKworCW1lbXNldCgmeHBwLCAwLCBzaXplb2YoeHBwKSk7CisJbWVtc2V0KCZ4ZWNmZywgMCwgc2l6ZW9mKHhlY2ZnKSk7CisJeGVjZmcuY3R4bGVuID0geGVjZmcuaW50ZXJodW5rY3R4bGVuID0gMDsKKworCWNiZGF0YS5kaWZmID0gb3V0OworCXhlY2ZnLmh1bmtfZnVuYyA9IGNvbGxlY3RfZGlmZl9jYjsKKwltZW1zZXQoJmVjYiwgMCwgc2l6ZW9mKGVjYikpOworCWVjYi5wcml2ID0gJmNiZGF0YTsKKwl4ZGlfZGlmZihwYXJlbnQsIHRhcmdldCwgJnhwcCwgJnhlY2ZnLCAmZWNiKTsKK30KKworLyoKKyAqIFRoZXNlIGFyZSBoYW5keSBmb3IgZGVidWdnaW5nLiAgUmVtb3ZpbmcgdGhlbSB3aXRoICNpZiAwIHNpbGVuY2VzCisgKiB0aGUgInVudXNlZCBmdW5jdGlvbiIgd2FybmluZy4KKyAqLworI2lmIDAKK3N0YXRpYyB2b2lkIGR1bXBfcmFuZ2Vfc2V0KHN0cnVjdCByYW5nZV9zZXQgKnJzLCBjb25zdCBjaGFyICpkZXNjKQoreworCWludCBpOworCXByaW50ZigicmFuZ2Ugc2V0ICVzICglZCBpdGVtcyk6XG4iLCBkZXNjLCBycy0+bnIpOworCWZvciAoaSA9IDA7IGkgPCBycy0+bnI7IGkrKykKKwkJcHJpbnRmKCJcdFslbGQsJWxkXVxuIiwgcnMtPnJhbmdlc1tpXS5zdGFydCwgcnMtPnJhbmdlc1tpXS5lbmQpOworfQorCitzdGF0aWMgdm9pZCBkdW1wX2xpbmVfbG9nX2RhdGEoc3RydWN0IGxpbmVfbG9nX2RhdGEgKnIpCit7CisJY2hhciBidWZbNDA5Nl07CisJd2hpbGUgKHIpIHsKKwkJc25wcmludGYoYnVmLCA0MDk2LCAiZmlsZSAlc1xuIiwgci0+cGF0aCk7CisJCWR1bXBfcmFuZ2Vfc2V0KCZyLT5yYW5nZXMsIGJ1Zik7CisJCXIgPSByLT5uZXh0OworCX0KK30KKworc3RhdGljIHZvaWQgZHVtcF9kaWZmX3JhbmdlcyhzdHJ1Y3QgZGlmZl9yYW5nZXMgKmRpZmYsIGNvbnN0IGNoYXIgKmRlc2MpCit7CisJaW50IGk7CisJYXNzZXJ0KGRpZmYtPnBhcmVudC5uciA9PSBkaWZmLT50YXJnZXQubnIpOworCXByaW50ZigiZGlmZiByYW5nZXMgJXMgKCVkIGl0ZW1zKTpcbiIsIGRlc2MsIGRpZmYtPnBhcmVudC5ucik7CisJcHJpbnRmKCJcdHBhcmVudFx0dGFyZ2V0XG4iKTsKKwlmb3IgKGkgPSAwOyBpIDwgZGlmZi0+cGFyZW50Lm5yOyBpKyspIHsKKwkJcHJpbnRmKCJcdFslbGQsJWxkXVx0WyVsZCwlbGRdXG4iLAorCQkgICAgICAgZGlmZi0+cGFyZW50LnJhbmdlc1tpXS5zdGFydCwKKwkJICAgICAgIGRpZmYtPnBhcmVudC5yYW5nZXNbaV0uZW5kLAorCQkgICAgICAgZGlmZi0+dGFyZ2V0LnJhbmdlc1tpXS5zdGFydCwKKwkJICAgICAgIGRpZmYtPnRhcmdldC5yYW5nZXNbaV0uZW5kKTsKKwl9Cit9CisjZW5kaWYKKworCitzdGF0aWMgaW50IHJhbmdlc19vdmVybGFwKHN0cnVjdCByYW5nZSAqYSwgc3RydWN0IHJhbmdlICpiKQoreworCXJldHVybiAhKGEtPmVuZCA8PSBiLT5zdGFydCB8fCBiLT5lbmQgPD0gYS0+c3RhcnQpOworfQorCisvKgorICogR2l2ZW4gYSBkaWZmIGFuZCB0aGUgc2V0IG9mIGludGVyZXN0aW5nIHJhbmdlcywgZGV0ZXJtaW5lIGFsbCBodW5rcworICogb2YgdGhlIGRpZmYgd2hpY2ggdG91Y2ggKG92ZXJsYXApIGF0IGxlYXN0IG9uZSBvZiB0aGUgaW50ZXJlc3RpbmcKKyAqIHJhbmdlcyBpbiB0aGUgdGFyZ2V0LgorICovCitzdGF0aWMgdm9pZCBkaWZmX3Jhbmdlc19maWx0ZXJfdG91Y2hlZChzdHJ1Y3QgZGlmZl9yYW5nZXMgKm91dCwKKwkJCQkgICAgICAgc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmLAorCQkJCSAgICAgICBzdHJ1Y3QgcmFuZ2Vfc2V0ICpycykKK3sKKwlpbnQgaSwgaiA9IDA7CisKKwlhc3NlcnQob3V0LT50YXJnZXQubnIgPT0gMCk7CisKKwlmb3IgKGkgPSAwOyBpIDwgZGlmZi0+dGFyZ2V0Lm5yOyBpKyspIHsKKwkJd2hpbGUgKGRpZmYtPnRhcmdldC5yYW5nZXNbaV0uc3RhcnQgPiBycy0+cmFuZ2VzW2pdLmVuZCkgeworCQkJaisrOworCQkJaWYgKGogPT0gcnMtPm5yKQorCQkJCXJldHVybjsKKwkJfQorCQlpZiAocmFuZ2VzX292ZXJsYXAoJmRpZmYtPnRhcmdldC5yYW5nZXNbaV0sICZycy0+cmFuZ2VzW2pdKSkgeworCQkJcmFuZ2Vfc2V0X2FwcGVuZCgmb3V0LT5wYXJlbnQsCisJCQkJCSBkaWZmLT5wYXJlbnQucmFuZ2VzW2ldLnN0YXJ0LAorCQkJCQkgZGlmZi0+cGFyZW50LnJhbmdlc1tpXS5lbmQpOworCQkJcmFuZ2Vfc2V0X2FwcGVuZCgmb3V0LT50YXJnZXQsCisJCQkJCSBkaWZmLT50YXJnZXQucmFuZ2VzW2ldLnN0YXJ0LAorCQkJCQkgZGlmZi0+dGFyZ2V0LnJhbmdlc1tpXS5lbmQpOworCQl9CisJfQorfQorCisvKgorICogQWRqdXN0IHRoZSBsaW5lIGNvdW50cyBpbiAncnMnIHRvIGFjY291bnQgZm9yIHRoZSBsaW5lcworICogYWRkZWQvcmVtb3ZlZCBpbiB0aGUgZGlmZi4KKyAqLworc3RhdGljIHZvaWQgcmFuZ2Vfc2V0X3NoaWZ0X2RpZmYoc3RydWN0IHJhbmdlX3NldCAqb3V0LAorCQkJCSBzdHJ1Y3QgcmFuZ2Vfc2V0ICpycywKKwkJCQkgc3RydWN0IGRpZmZfcmFuZ2VzICpkaWZmKQoreworCWludCBpLCBqID0gMDsKKwlsb25nIG9mZnNldCA9IDA7CisJc3RydWN0IHJhbmdlICpzcmMgPSBycy0+cmFuZ2VzOworCXN0cnVjdCByYW5nZSAqdGFyZ2V0ID0gZGlmZi0+dGFyZ2V0LnJhbmdlczsKKwlzdHJ1Y3QgcmFuZ2UgKnBhcmVudCA9IGRpZmYtPnBhcmVudC5yYW5nZXM7CisKKwlmb3IgKGkgPSAwOyBpIDwgcnMtPm5yOyBpKyspIHsKKwkJd2hpbGUgKGogPCBkaWZmLT50YXJnZXQubnIgJiYgc3JjW2ldLnN0YXJ0ID49IHRhcmdldFtqXS5zdGFydCkgeworCQkJb2Zmc2V0ICs9IChwYXJlbnRbal0uZW5kLXBhcmVudFtqXS5zdGFydCkKKwkJCQktICh0YXJnZXRbal0uZW5kLXRhcmdldFtqXS5zdGFydCk7CisJCQlqKys7CisJCX0KKwkJcmFuZ2Vfc2V0X2FwcGVuZChvdXQsIHNyY1tpXS5zdGFydCtvZmZzZXQsIHNyY1tpXS5lbmQrb2Zmc2V0KTsKKwl9Cit9CisKKy8qCisgKiBHaXZlbiBhIGRpZmYgYW5kIHRoZSBzZXQgb2YgaW50ZXJlc3RpbmcgcmFuZ2VzLCBtYXAgdGhlIHJhbmdlcworICogYWNyb3NzIHRoZSBkaWZmLiAgVGhhdCBpczogb2JzZXJ2ZSB0aGF0IHRoZSB0YXJnZXQgY29tbWl0IHRha2VzCisgKiBibGFtZSBmb3IgYWxsIHRoZSArICh0YXJnZXQtc2lkZSkgcmFuZ2VzLiAgU28gZm9yIGV2ZXJ5IHBhaXIgb2YKKyAqIHJhbmdlcyBpbiB0aGUgZGlmZiB0aGF0IHdhcyB0b3VjaGVkLCB3ZSByZW1vdmUgdGhlIGxhdHRlciBhbmQgYWRkCisgKiBpdHMgcGFyZW50IHNpZGUuCisgKi8KK3N0YXRpYyB2b2lkIHJhbmdlX3NldF9tYXBfYWNyb3NzX2RpZmYoc3RydWN0IHJhbmdlX3NldCAqb3V0LAorCQkJCSAgICAgIHN0cnVjdCByYW5nZV9zZXQgKnJzLAorCQkJCSAgICAgIHN0cnVjdCBkaWZmX3JhbmdlcyAqZGlmZiwKKwkJCQkgICAgICBzdHJ1Y3QgZGlmZl9yYW5nZXMgKip0b3VjaGVkX291dCkKK3sKKwlzdHJ1Y3QgZGlmZl9yYW5nZXMgKnRvdWNoZWQgPSB4bWFsbG9jKHNpemVvZigqdG91Y2hlZCkpOworCXN0cnVjdCByYW5nZV9zZXQgdG1wMSA9IFJBTkdFX1NFVF9JTklUOworCXN0cnVjdCByYW5nZV9zZXQgdG1wMiA9IFJBTkdFX1NFVF9JTklUOworCisJZGlmZl9yYW5nZXNfaW5pdCh0b3VjaGVkKTsKKwlkaWZmX3Jhbmdlc19maWx0ZXJfdG91Y2hlZCh0b3VjaGVkLCBkaWZmLCBycyk7CisJcmFuZ2Vfc2V0X2RpZmZlcmVuY2UoJnRtcDEsIHJzLCAmdG91Y2hlZC0+dGFyZ2V0KTsKKwlyYW5nZV9zZXRfc2hpZnRfZGlmZigmdG1wMiwgJnRtcDEsIGRpZmYpOworCXJhbmdlX3NldF91bmlvbihvdXQsICZ0bXAyLCAmdG91Y2hlZC0+cGFyZW50KTsKKwlyYW5nZV9zZXRfcmVsZWFzZSgmdG1wMSk7CisJcmFuZ2Vfc2V0X3JlbGVhc2UoJnRtcDIpOworCisJKnRvdWNoZWRfb3V0ID0gdG91Y2hlZDsKK30KKworc3RhdGljIHN0cnVjdCBjb21taXQgKmNoZWNrX3NpbmdsZV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzKQoreworCXN0cnVjdCBvYmplY3QgKmNvbW1pdCA9IE5VTEw7CisJaW50IGZvdW5kID0gLTE7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcmV2cy0+cGVuZGluZy5ucjsgaSsrKSB7CisJCXN0cnVjdCBvYmplY3QgKm9iaiA9IHJldnMtPnBlbmRpbmcub2JqZWN0c1tpXS5pdGVtOworCQlpZiAob2JqLT5mbGFncyAmIFVOSU5URVJFU1RJTkcpCisJCQljb250aW51ZTsKKwkJd2hpbGUgKG9iai0+dHlwZSA9PSBPQkpfVEFHKQorCQkJb2JqID0gZGVyZWZfdGFnKG9iaiwgTlVMTCwgMCk7CisJCWlmIChvYmotPnR5cGUgIT0gT0JKX0NPTU1JVCkKKwkJCWRpZSgiTm9uIGNvbW1pdCAlcz8iLCByZXZzLT5wZW5kaW5nLm9iamVjdHNbaV0ubmFtZSk7CisJCWlmIChjb21taXQpCisJCQlkaWUoIk1vcmUgdGhhbiBvbmUgY29tbWl0IHRvIGRpZyBmcm9tOiAlcyBhbmQgJXM/IiwKKwkJCSAgICByZXZzLT5wZW5kaW5nLm9iamVjdHNbaV0ubmFtZSwKKwkJCSAgICByZXZzLT5wZW5kaW5nLm9iamVjdHNbZm91bmRdLm5hbWUpOworCQljb21taXQgPSBvYmo7CisJCWZvdW5kID0gaTsKKwl9CisKKwlpZiAoIWNvbW1pdCkKKwkJZGllKCJObyBjb21taXQgc3BlY2lmaWVkPyIpOworCisJcmV0dXJuIChzdHJ1Y3QgY29tbWl0ICopIGNvbW1pdDsKK30KKworc3RhdGljIHZvaWQgZmlsbF9ibG9iX3NoYTEoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqc3BlYykKK3sKKwl1bnNpZ25lZCBtb2RlOworCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CisKKwlpZiAoZ2V0X3RyZWVfZW50cnkoY29tbWl0LT5vYmplY3Quc2hhMSwgc3BlYy0+cGF0aCwKKwkJCSAgIHNoYTEsICZtb2RlKSkKKwkJZGllKCJUaGVyZSBpcyBubyBwYXRoICVzIGluIHRoZSBjb21taXQiLCBzcGVjLT5wYXRoKTsKKwlmaWxsX2ZpbGVzcGVjKHNwZWMsIHNoYTEsIDEsIG1vZGUpOworCisJcmV0dXJuOworfQorCitzdGF0aWMgdm9pZCBmaWxsX2xpbmVfZW5kcyhzdHJ1Y3QgZGlmZl9maWxlc3BlYyAqc3BlYywgbG9uZyAqbGluZXMsCisJCQkgICB1bnNpZ25lZCBsb25nICoqbGluZV9lbmRzKQoreworCWludCBudW0gPSAwLCBzaXplID0gNTA7CisJbG9uZyBjdXIgPSAwOworCXVuc2lnbmVkIGxvbmcgKmVuZHMgPSBOVUxMOworCWNoYXIgKmRhdGEgPSBOVUxMOworCisJaWYgKGRpZmZfcG9wdWxhdGVfZmlsZXNwZWMoc3BlYywgMCkpCisJCWRpZSgiQ2Fubm90IHJlYWQgYmxvYiAlcyIsIHNoYTFfdG9faGV4KHNwZWMtPnNoYTEpKTsKKworCWVuZHMgPSB4bWFsbG9jKHNpemUgKiBzaXplb2YoKmVuZHMpKTsKKwllbmRzW2N1cisrXSA9IDA7CisJZGF0YSA9IHNwZWMtPmRhdGE7CisJd2hpbGUgKG51bSA8IHNwZWMtPnNpemUpIHsKKwkJaWYgKGRhdGFbbnVtXSA9PSAnXG4nIHx8IG51bSA9PSBzcGVjLT5zaXplIC0gMSkgeworCQkJQUxMT0NfR1JPVyhlbmRzLCAoY3VyICsgMSksIHNpemUpOworCQkJZW5kc1tjdXIrK10gPSBudW07CisJCX0KKwkJbnVtKys7CisJfQorCisJLyogc2hyaW5rIHRoZSBhcnJheSB0byBmaXQgdGhlIGVsZW1lbnRzICovCisJZW5kcyA9IHhyZWFsbG9jKGVuZHMsIGN1ciAqIHNpemVvZigqZW5kcykpOworCSpsaW5lcyA9IGN1ci0xOworCSpsaW5lX2VuZHMgPSBlbmRzOworfQorCitzdHJ1Y3QgbnRoX2xpbmVfY2IgeworCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpzcGVjOworCWxvbmcgbGluZXM7CisJdW5zaWduZWQgbG9uZyAqbGluZV9lbmRzOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKm50aF9saW5lKHZvaWQgKmRhdGEsIGxvbmcgbGluZSkKK3sKKwlzdHJ1Y3QgbnRoX2xpbmVfY2IgKmQgPSBkYXRhOworCWFzc2VydChkICYmIGxpbmUgPD0gZC0+bGluZXMpOworCWFzc2VydChkLT5zcGVjICYmIGQtPnNwZWMtPmRhdGEpOworCisJaWYgKGxpbmUgPT0gMCkKKwkJcmV0dXJuIChjaGFyICopZC0+c3BlYy0+ZGF0YTsKKwllbHNlCisJCXJldHVybiAoY2hhciAqKWQtPnNwZWMtPmRhdGEgKyBkLT5saW5lX2VuZHNbbGluZV0gKyAxOworfQorCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKgorcGFyc2VfbGluZXMoc3RydWN0IGNvbW1pdCAqY29tbWl0LCBjb25zdCBjaGFyICpwcmVmaXgsIHN0cnVjdCBzdHJpbmdfbGlzdCAqYXJncykKK3sKKwlsb25nIGxpbmVzID0gMDsKKwl1bnNpZ25lZCBsb25nICplbmRzID0gTlVMTDsKKwlzdHJ1Y3QgbnRoX2xpbmVfY2IgY2JfZGF0YTsKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXRlbTsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2VzID0gTlVMTDsKKworCWZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSwgYXJncykgeworCQljb25zdCBjaGFyICpuYW1lX3BhcnQsICpyYW5nZV9wYXJ0OworCQljaGFyICpmdWxsX25hbWU7CisJCXN0cnVjdCBkaWZmX2ZpbGVzcGVjICpzcGVjOworCQlsb25nIGJlZ2luID0gMCwgZW5kID0gMDsKKworCQluYW1lX3BhcnQgPSBza2lwX3JhbmdlX2FyZyhpdGVtLT5zdHJpbmcpOworCQlpZiAoIW5hbWVfcGFydCB8fCAqbmFtZV9wYXJ0ICE9ICc6JyB8fCAhbmFtZV9wYXJ0WzFdKQorCQkJZGllKCItTCBhcmd1bWVudCAnJXMnIG5vdCBvZiB0aGUgZm9ybSBzdGFydCxlbmQ6ZmlsZSIsCisJCQkgICAgaXRlbS0+c3RyaW5nKTsKKwkJcmFuZ2VfcGFydCA9IHhzdHJuZHVwKGl0ZW0tPnN0cmluZywgbmFtZV9wYXJ0IC0gaXRlbS0+c3RyaW5nKTsKKwkJbmFtZV9wYXJ0Kys7CisKKwkJZnVsbF9uYW1lID0gcHJlZml4X3BhdGgocHJlZml4LCBwcmVmaXggPyBzdHJsZW4ocHJlZml4KSA6IDAsCisJCQkJCW5hbWVfcGFydCk7CisKKwkJc3BlYyA9IGFsbG9jX2ZpbGVzcGVjKGZ1bGxfbmFtZSk7CisJCWZpbGxfYmxvYl9zaGExKGNvbW1pdCwgc3BlYyk7CisJCWZpbGxfbGluZV9lbmRzKHNwZWMsICZsaW5lcywgJmVuZHMpOworCQljYl9kYXRhLnNwZWMgPSBzcGVjOworCQljYl9kYXRhLmxpbmVzID0gbGluZXM7CisJCWNiX2RhdGEubGluZV9lbmRzID0gZW5kczsKKworCQlpZiAocGFyc2VfcmFuZ2VfYXJnKHJhbmdlX3BhcnQsIG50aF9saW5lLCAmY2JfZGF0YSwKKwkJCQkgICAgbGluZXMsICZiZWdpbiwgJmVuZCwKKwkJCQkgICAgZnVsbF9uYW1lKSkKKwkJCWRpZSgibWFsZm9ybWVkIC1MIGFyZ3VtZW50ICclcyciLCByYW5nZV9wYXJ0KTsKKwkJaWYgKGJlZ2luIDwgMSkKKwkJCWJlZ2luID0gMTsKKwkJaWYgKGVuZCA8IDEpCisJCQllbmQgPSBsaW5lczsKKwkJYmVnaW4tLTsKKwkJaWYgKGxpbmVzIDwgZW5kIHx8IGxpbmVzIDwgYmVnaW4pCisJCQlkaWUoImZpbGUgJXMgaGFzIG9ubHkgJWxkIGxpbmVzIiwgbmFtZV9wYXJ0LCBsaW5lcyk7CisJCWxpbmVfbG9nX2RhdGFfaW5zZXJ0KCZyYW5nZXMsIGZ1bGxfbmFtZSwgYmVnaW4sIGVuZCk7CisKKwkJZnJlZV9maWxlc3BlYyhzcGVjKTsKKwkJZnJlZShlbmRzKTsKKwkJZW5kcyA9IE5VTEw7CisJfQorCisJcmV0dXJuIHJhbmdlczsKK30KKworc3RhdGljIHN0cnVjdCBsaW5lX2xvZ19kYXRhICpsaW5lX2xvZ19kYXRhX2NvcHlfb25lKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZXQgPSB4bWFsbG9jKHNpemVvZigqcmV0KSk7CisKKwlhc3NlcnQocik7CisJbGluZV9sb2dfZGF0YV9pbml0KHJldCk7CisJcmFuZ2Vfc2V0X2NvcHkoJnJldC0+cmFuZ2VzLCAmci0+cmFuZ2VzKTsKKworCXJldC0+cGF0aCA9IHhzdHJkdXAoci0+cGF0aCk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKgorbGluZV9sb2dfZGF0YV9jb3B5KHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZXQgPSBOVUxMOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICp0bXAgPSBOVUxMLCAqcHJldiA9IE5VTEw7CisKKwlhc3NlcnQocik7CisJcmV0ID0gdG1wID0gcHJldiA9IGxpbmVfbG9nX2RhdGFfY29weV9vbmUocik7CisJciA9IHItPm5leHQ7CisJd2hpbGUgKHIpIHsKKwkJdG1wID0gbGluZV9sb2dfZGF0YV9jb3B5X29uZShyKTsKKwkJcHJldi0+bmV4dCA9IHRtcDsKKwkJcHJldiA9IHRtcDsKKwkJciA9IHItPm5leHQ7CisJfQorCisJcmV0dXJuIHJldDsKK30KKworLyogbWVyZ2UgdHdvIHJhbmdlIHNldHMgYWNyb3NzIGZpbGVzICovCitzdGF0aWMgc3RydWN0IGxpbmVfbG9nX2RhdGEgKmxpbmVfbG9nX2RhdGFfbWVyZ2Uoc3RydWN0IGxpbmVfbG9nX2RhdGEgKmEsCisJCQkJCQkgc3RydWN0IGxpbmVfbG9nX2RhdGEgKmIpCit7CisJc3RydWN0IGxpbmVfbG9nX2RhdGEgKmhlYWQgPSBOVUxMLCAqKnBwID0gJmhlYWQ7CisKKwl3aGlsZSAoYSB8fCBiKSB7CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpzcmM7CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpzcmMyID0gTlVMTDsKKwkJc3RydWN0IGxpbmVfbG9nX2RhdGEgKmQ7CisJCWludCBjbXA7CisJCWlmICghYSkKKwkJCWNtcCA9IDE7CisJCWVsc2UgaWYgKCFiKQorCQkJY21wID0gLTE7CisJCWVsc2UKKwkJCWNtcCA9IHN0cmNtcChhLT5wYXRoLCBiLT5wYXRoKTsKKwkJaWYgKGNtcCA8IDApIHsKKwkJCXNyYyA9IGE7CisJCQlhID0gYS0+bmV4dDsKKwkJfSBlbHNlIGlmIChjbXAgPT0gMCkgeworCQkJc3JjID0gYTsKKwkJCWEgPSBhLT5uZXh0OworCQkJc3JjMiA9IGI7CisJCQliID0gYi0+bmV4dDsKKwkJfSBlbHNlIHsKKwkJCXNyYyA9IGI7CisJCQliID0gYi0+bmV4dDsKKwkJfQorCQlkID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IGxpbmVfbG9nX2RhdGEpKTsKKwkJbGluZV9sb2dfZGF0YV9pbml0KGQpOworCQlkLT5wYXRoID0geHN0cmR1cChzcmMtPnBhdGgpOworCQkqcHAgPSBkOworCQlwcCA9ICZkLT5uZXh0OworCQlpZiAoc3JjMikKKwkJCXJhbmdlX3NldF91bmlvbigmZC0+cmFuZ2VzLCAmc3JjLT5yYW5nZXMsICZzcmMyLT5yYW5nZXMpOworCQllbHNlCisJCQlyYW5nZV9zZXRfY29weSgmZC0+cmFuZ2VzLCAmc3JjLT5yYW5nZXMpOworCX0KKworCXJldHVybiBoZWFkOworfQorCitzdGF0aWMgdm9pZCBhZGRfbGluZV9yYW5nZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCwKKwkJCSAgIHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSkKK3sKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqb2xkID0gTlVMTDsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqbmV3ID0gTlVMTDsKKworCW9sZCA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT5saW5lX2xvZ19kYXRhLCAmY29tbWl0LT5vYmplY3QpOworCWlmIChvbGQgJiYgcmFuZ2UpIHsKKwkJbmV3ID0gbGluZV9sb2dfZGF0YV9tZXJnZShvbGQsIHJhbmdlKTsKKwkJZnJlZV9saW5lX2xvZ19kYXRhKG9sZCk7CisJfSBlbHNlIGlmIChyYW5nZSkKKwkJbmV3ID0gbGluZV9sb2dfZGF0YV9jb3B5KHJhbmdlKTsKKworCWlmIChuZXcpCisJCWFkZF9kZWNvcmF0aW9uKCZyZXZzLT5saW5lX2xvZ19kYXRhLCAmY29tbWl0LT5vYmplY3QsIG5ldyk7Cit9CisKK3N0YXRpYyB2b2lkIGNsZWFyX2NvbW1pdF9saW5lX3JhbmdlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyOworCXIgPSBsb29rdXBfZGVjb3JhdGlvbigmcmV2cy0+bGluZV9sb2dfZGF0YSwgJmNvbW1pdC0+b2JqZWN0KTsKKwlpZiAoIXIpCisJCXJldHVybjsKKwlmcmVlX2xpbmVfbG9nX2RhdGEocik7CisJYWRkX2RlY29yYXRpb24oJnJldnMtPmxpbmVfbG9nX2RhdGEsICZjb21taXQtPm9iamVjdCwgTlVMTCk7Cit9CisKK3N0YXRpYyBzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqbG9va3VwX2xpbmVfcmFuZ2Uoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCQkgICAgICAgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZXQgPSBOVUxMOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpkOworCisJcmV0ID0gbG9va3VwX2RlY29yYXRpb24oJnJldnMtPmxpbmVfbG9nX2RhdGEsICZjb21taXQtPm9iamVjdCk7CisKKwlmb3IgKGQgPSByZXQ7IGQ7IGQgPSBkLT5uZXh0KQorCQlyYW5nZV9zZXRfY2hlY2tfaW52YXJpYW50cygmZC0+cmFuZ2VzKTsKKworCXJldHVybiByZXQ7Cit9CisKK3ZvaWQgbGluZV9sb2dfaW5pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmFyZ3MpCit7CisJc3RydWN0IGNvbW1pdCAqY29tbWl0ID0gTlVMTDsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2U7CisKKwljb21taXQgPSBjaGVja19zaW5nbGVfY29tbWl0KHJldik7CisJcmFuZ2UgPSBwYXJzZV9saW5lcyhjb21taXQsIHByZWZpeCwgYXJncyk7CisJYWRkX2xpbmVfcmFuZ2UocmV2LCBjb21taXQsIHJhbmdlKTsKKworCWlmICghcmV2LT5kaWZmb3B0LmRldGVjdF9yZW5hbWUpIHsKKwkJaW50IGksIGNvdW50ID0gMDsKKwkJc3RydWN0IGxpbmVfbG9nX2RhdGEgKnIgPSByYW5nZTsKKwkJY29uc3QgY2hhciAqKnBhdGhzOworCQl3aGlsZSAocikgeworCQkJY291bnQrKzsKKwkJCXIgPSByLT5uZXh0OworCQl9CisJCXBhdGhzID0geG1hbGxvYygoY291bnQrMSkqc2l6ZW9mKGNoYXIgKikpOworCQlyID0gcmFuZ2U7CisJCWZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisJCQlwYXRoc1tpXSA9IHhzdHJkdXAoci0+cGF0aCk7CisJCQlyID0gci0+bmV4dDsKKwkJfQorCQlwYXRoc1tjb3VudF0gPSBOVUxMOworCQlpbml0X3BhdGhzcGVjKCZyZXYtPmRpZmZvcHQucGF0aHNwZWMsIHBhdGhzKTsKKwkJZnJlZShwYXRocyk7CisJfQorfQorCitzdGF0aWMgdm9pZCBsb2FkX3RyZWVfZGVzYyhzdHJ1Y3QgdHJlZV9kZXNjICpkZXNjLCB2b2lkICoqdHJlZSwKKwkJCSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCit7CisJdW5zaWduZWQgbG9uZyBzaXplOworCSp0cmVlID0gcmVhZF9vYmplY3Rfd2l0aF9yZWZlcmVuY2Uoc2hhMSwgdHJlZV90eXBlLCAmc2l6ZSwgTlVMTCk7CisJaWYgKCEqdHJlZSkKKwkJZGllKCJVbmFibGUgdG8gcmVhZCB0cmVlICglcykiLCBzaGExX3RvX2hleChzaGExKSk7CisJaW5pdF90cmVlX2Rlc2MoZGVzYywgKnRyZWUsIHNpemUpOworfQorCitzdGF0aWMgaW50IGNvdW50X3BhcmVudHMoc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cyA9IGNvbW1pdC0+cGFyZW50czsKKwlpbnQgY291bnQgPSAwOworCXdoaWxlIChwYXJlbnRzKSB7CisJCWNvdW50Kys7CisJCXBhcmVudHMgPSBwYXJlbnRzLT5uZXh0OworCX0KKwlyZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyB2b2lkIG1vdmVfZGlmZl9xdWV1ZShzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKmRzdCwKKwkJCSAgICBzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnNyYykKK3sKKwlhc3NlcnQoc3JjICE9IGRzdCk7CisJbWVtY3B5KGRzdCwgc3JjLCBzaXplb2Yoc3RydWN0IGRpZmZfcXVldWVfc3RydWN0KSk7CisJRElGRl9RVUVVRV9DTEVBUihzcmMpOworfQorCitzdGF0aWMgdm9pZCBmaWx0ZXJfZGlmZnNfZm9yX3BhdGhzKHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSwgaW50IGtlZXBfZGVsZXRpb25zKQoreworCWludCBpOworCXN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCBvdXRxOworCURJRkZfUVVFVUVfQ0xFQVIoJm91dHEpOworCisJZm9yIChpID0gMDsgaSA8IGRpZmZfcXVldWVkX2RpZmYubnI7IGkrKykgeworCQlzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcCA9IGRpZmZfcXVldWVkX2RpZmYucXVldWVbaV07CisJCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyZyA9IE5VTEw7CisKKwkJaWYgKCFESUZGX0ZJTEVfVkFMSUQocC0+dHdvKSkgeworCQkJaWYgKGtlZXBfZGVsZXRpb25zKQorCQkJCWRpZmZfcSgmb3V0cSwgcCk7CisJCQllbHNlCisJCQkJZGlmZl9mcmVlX2ZpbGVwYWlyKHApOworCQkJY29udGludWU7CisJCX0KKwkJZm9yIChyZyA9IHJhbmdlOyByZzsgcmcgPSByZy0+bmV4dCkgeworCQkJaWYgKCFzdHJjbXAocmctPnBhdGgsIHAtPnR3by0+cGF0aCkpCisJCQkJYnJlYWs7CisJCX0KKwkJaWYgKHJnKQorCQkJZGlmZl9xKCZvdXRxLCBwKTsKKwkJZWxzZQorCQkJZGlmZl9mcmVlX2ZpbGVwYWlyKHApOworCX0KKwlmcmVlKGRpZmZfcXVldWVkX2RpZmYucXVldWUpOworCWRpZmZfcXVldWVkX2RpZmYgPSBvdXRxOworfQorCitzdGF0aWMgaW5saW5lIGludCBkaWZmX21pZ2h0X2JlX3JlbmFtZSh2b2lkKQoreworCWludCBpOworCWZvciAoaSA9IDA7IGkgPCBkaWZmX3F1ZXVlZF9kaWZmLm5yOyBpKyspCisJCWlmICghRElGRl9GSUxFX1ZBTElEKGRpZmZfcXVldWVkX2RpZmYucXVldWVbaV0tPm9uZSkpIHsKKwkJCS8qIGZwcmludGYoc3RkZXJyLCAiZGlmZl9taWdodF9iZV9yZW5hbWUgZm91bmQgY3JlYXRpb24gb2Y6ICVzXG4iLCAqLworCQkJLyogCWRpZmZfcXVldWVkX2RpZmYucXVldWVbaV0tPnR3by0+cGF0aCk7ICovCisJCQlyZXR1cm4gMTsKKwkJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBxdWV1ZV9kaWZmcyhzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2UsCisJCQlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQsCisJCQlzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnF1ZXVlLAorCQkJc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgY29tbWl0ICpwYXJlbnQpCit7CisJdm9pZCAqdHJlZTEgPSBOVUxMLCAqdHJlZTIgPSBOVUxMOworCXN0cnVjdCB0cmVlX2Rlc2MgZGVzYzEsIGRlc2MyOworCisJYXNzZXJ0KGNvbW1pdCk7CisJbG9hZF90cmVlX2Rlc2MoJmRlc2MyLCAmdHJlZTIsIGNvbW1pdC0+dHJlZS0+b2JqZWN0LnNoYTEpOworCWlmIChwYXJlbnQpCisJCWxvYWRfdHJlZV9kZXNjKCZkZXNjMSwgJnRyZWUxLCBwYXJlbnQtPnRyZWUtPm9iamVjdC5zaGExKTsKKwllbHNlCisJCWluaXRfdHJlZV9kZXNjKCZkZXNjMSwgIiIsIDApOworCisJRElGRl9RVUVVRV9DTEVBUigmZGlmZl9xdWV1ZWRfZGlmZik7CisJZGlmZl90cmVlKCZkZXNjMSwgJmRlc2MyLCAiIiwgb3B0KTsKKwlpZiAob3B0LT5kZXRlY3RfcmVuYW1lKSB7CisJCWZpbHRlcl9kaWZmc19mb3JfcGF0aHMocmFuZ2UsIDEpOworCQlpZiAoZGlmZl9taWdodF9iZV9yZW5hbWUoKSkKKwkJCWRpZmZjb3JlX3N0ZChvcHQpOworCQlmaWx0ZXJfZGlmZnNfZm9yX3BhdGhzKHJhbmdlLCAwKTsKKwl9CisJbW92ZV9kaWZmX3F1ZXVlKHF1ZXVlLCAmZGlmZl9xdWV1ZWRfZGlmZik7CisKKwlpZiAodHJlZTEpCisJCWZyZWUodHJlZTEpOworCWlmICh0cmVlMikKKwkJZnJlZSh0cmVlMik7Cit9CisKK3N0YXRpYyBjaGFyICpnZXRfbnRoX2xpbmUobG9uZyBsaW5lLCB1bnNpZ25lZCBsb25nICplbmRzLCB2b2lkICpkYXRhKQoreworCWlmIChsaW5lID09IDApCisJCXJldHVybiAoY2hhciAqKWRhdGE7CisJZWxzZQorCQlyZXR1cm4gKGNoYXIgKilkYXRhICsgZW5kc1tsaW5lXSArIDE7Cit9CisKK3N0YXRpYyB2b2lkIHByaW50X2xpbmUoY29uc3QgY2hhciAqcHJlZml4LCBjaGFyIGZpcnN0LAorCQkgICAgICAgbG9uZyBsaW5lLCB1bnNpZ25lZCBsb25nICplbmRzLCB2b2lkICpkYXRhLAorCQkgICAgICAgY29uc3QgY2hhciAqY29sb3IsIGNvbnN0IGNoYXIgKnJlc2V0KQoreworCWNoYXIgKmJlZ2luID0gZ2V0X250aF9saW5lKGxpbmUsIGVuZHMsIGRhdGEpOworCWNoYXIgKmVuZCA9IGdldF9udGhfbGluZShsaW5lKzEsIGVuZHMsIGRhdGEpOworCWludCBoYWRfbmwgPSAwOworCisJaWYgKGVuZCA+IGJlZ2luICYmIGVuZFstMV0gPT0gJ1xuJykgeworCQllbmQtLTsKKwkJaGFkX25sID0gMTsKKwl9CisKKwlmcHV0cyhwcmVmaXgsIHN0ZG91dCk7CisJZnB1dHMoY29sb3IsIHN0ZG91dCk7CisJcHV0Y2hhcihmaXJzdCk7CisJZndyaXRlKGJlZ2luLCAxLCBlbmQtYmVnaW4sIHN0ZG91dCk7CisJZnB1dHMocmVzZXQsIHN0ZG91dCk7CisJcHV0Y2hhcignXG4nKTsKKwlpZiAoIWhhZF9ubCkKKwkJZnB1dHMoIlxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGVcbiIsIHN0ZG91dCk7Cit9CisKK3N0YXRpYyBjaGFyICpvdXRwdXRfcHJlZml4KHN0cnVjdCBkaWZmX29wdGlvbnMgKm9wdCkKK3sKKwljaGFyICpwcmVmaXggPSAiIjsKKworCWlmIChvcHQtPm91dHB1dF9wcmVmaXgpIHsKKwkJc3RydWN0IHN0cmJ1ZiAqc2IgPSBvcHQtPm91dHB1dF9wcmVmaXgob3B0LCBvcHQtPm91dHB1dF9wcmVmaXhfZGF0YSk7CisJCXByZWZpeCA9IHNiLT5idWY7CisJfQorCisJcmV0dXJuIHByZWZpeDsKK30KKworc3RhdGljIHZvaWQgZHVtcF9kaWZmX2hhY2t5X29uZShzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGxpbmVfbG9nX2RhdGEgKnJhbmdlKQoreworCWludCBpLCBqID0gMDsKKwlsb25nIHBfbGluZXMsIHRfbGluZXM7CisJdW5zaWduZWQgbG9uZyAqcF9lbmRzID0gTlVMTCwgKnRfZW5kcyA9IE5VTEw7CisJc3RydWN0IGRpZmZfZmlsZXBhaXIgKnBhaXIgPSByYW5nZS0+cGFpcjsKKwlzdHJ1Y3QgZGlmZl9yYW5nZXMgKmRpZmYgPSAmcmFuZ2UtPmRpZmY7CisKKwlzdHJ1Y3QgZGlmZl9vcHRpb25zICpvcHQgPSAmcmV2LT5kaWZmb3B0OworCWNoYXIgKnByZWZpeCA9IG91dHB1dF9wcmVmaXgob3B0KTsKKwljb25zdCBjaGFyICpjX3Jlc2V0ID0gZGlmZl9nZXRfY29sb3Iob3B0LT51c2VfY29sb3IsIERJRkZfUkVTRVQpOworCWNvbnN0IGNoYXIgKmNfZnJhZyA9IGRpZmZfZ2V0X2NvbG9yKG9wdC0+dXNlX2NvbG9yLCBESUZGX0ZSQUdJTkZPKTsKKwljb25zdCBjaGFyICpjX21ldGEgPSBkaWZmX2dldF9jb2xvcihvcHQtPnVzZV9jb2xvciwgRElGRl9NRVRBSU5GTyk7CisJY29uc3QgY2hhciAqY19vbGQgPSBkaWZmX2dldF9jb2xvcihvcHQtPnVzZV9jb2xvciwgRElGRl9GSUxFX09MRCk7CisJY29uc3QgY2hhciAqY19uZXcgPSBkaWZmX2dldF9jb2xvcihvcHQtPnVzZV9jb2xvciwgRElGRl9GSUxFX05FVyk7CisJY29uc3QgY2hhciAqY19wbGFpbiA9IGRpZmZfZ2V0X2NvbG9yKG9wdC0+dXNlX2NvbG9yLCBESUZGX1BMQUlOKTsKKworCWlmICghcGFpciB8fCAhZGlmZikKKwkJcmV0dXJuOworCisJaWYgKHBhaXItPm9uZS0+c2hhMV92YWxpZCkKKwkJZmlsbF9saW5lX2VuZHMocGFpci0+b25lLCAmcF9saW5lcywgJnBfZW5kcyk7CisJZmlsbF9saW5lX2VuZHMocGFpci0+dHdvLCAmdF9saW5lcywgJnRfZW5kcyk7CisKKwlwcmludGYoIiVzJXNkaWZmIC0tZ2l0IGEvJXMgYi8lcyVzXG4iLCBwcmVmaXgsIGNfbWV0YSwgcGFpci0+b25lLT5wYXRoLCBwYWlyLT50d28tPnBhdGgsIGNfcmVzZXQpOworCXByaW50ZigiJXMlcy0tLSAlcyVzJXNcbiIsIHByZWZpeCwgY19tZXRhLAorCSAgICAgICBwYWlyLT5vbmUtPnNoYTFfdmFsaWQgPyAiYS8iIDogIiIsCisJICAgICAgIHBhaXItPm9uZS0+c2hhMV92YWxpZCA/IHBhaXItPm9uZS0+cGF0aCA6ICIvZGV2L251bGwiLAorCSAgICAgICBjX3Jlc2V0KTsKKwlwcmludGYoIiVzJXMrKysgYi8lcyVzXG4iLCBwcmVmaXgsIGNfbWV0YSwgcGFpci0+dHdvLT5wYXRoLCBjX3Jlc2V0KTsKKwlmb3IgKGkgPSAwOyBpIDwgcmFuZ2UtPnJhbmdlcy5ucjsgaSsrKSB7CisJCWxvbmcgcF9zdGFydCwgcF9lbmQ7CisJCWxvbmcgdF9zdGFydCA9IHJhbmdlLT5yYW5nZXMucmFuZ2VzW2ldLnN0YXJ0OworCQlsb25nIHRfZW5kID0gcmFuZ2UtPnJhbmdlcy5yYW5nZXNbaV0uZW5kOworCQlsb25nIHRfY3VyID0gdF9zdGFydDsKKwkJaW50IGpfbGFzdDsKKworCQl3aGlsZSAoaiA8IGRpZmYtPnRhcmdldC5uciAmJiBkaWZmLT50YXJnZXQucmFuZ2VzW2pdLmVuZCA8IHRfc3RhcnQpCisJCQlqKys7CisJCWlmIChqID09IGRpZmYtPnRhcmdldC5uciB8fCBkaWZmLT50YXJnZXQucmFuZ2VzW2pdLnN0YXJ0ID4gdF9lbmQpCisJCQljb250aW51ZTsKKworCQkvKiBTY2FuIGFoZWFkIHRvIGRldGVybWluZSB0aGUgbGFzdCBkaWZmIHRoYXQgZmFsbHMgaW4gdGhpcyByYW5nZSAqLworCQlqX2xhc3QgPSBqOworCQl3aGlsZSAoal9sYXN0IDwgZGlmZi0+dGFyZ2V0Lm5yICYmIGRpZmYtPnRhcmdldC5yYW5nZXNbal9sYXN0XS5zdGFydCA8IHRfZW5kKQorCQkJal9sYXN0Kys7CisJCWlmIChqX2xhc3QgPiBqKQorCQkJal9sYXN0LS07CisKKwkJLyoKKwkJICogQ29tcHV0ZSBwYXJlbnQgaHVuayBoZWFkZXJzOiB3ZSBrbm93IHRoYXQgdGhlIGRpZmYKKwkJICogaGFzIHRoZSBjb3JyZWN0IGxpbmUgbnVtYmVycyAoYnV0IG5vdCBhbGwgaHVua3MpLgorCQkgKiBTbyBpdCBzdWZmaWNlcyB0byBzaGlmdCB0aGUgc3RhcnQvZW5kIGFjY29yZGluZyB0bworCQkgKiB0aGUgbGluZSBudW1iZXJzIG9mIHRoZSBmaXJzdC9sYXN0IGh1bmsocykgdGhhdAorCQkgKiBmYWxsIGluIHRoaXMgcmFuZ2UuCisJCSAqLworCQlpZiAodF9zdGFydCA8IGRpZmYtPnRhcmdldC5yYW5nZXNbal0uc3RhcnQpCisJCQlwX3N0YXJ0ID0gZGlmZi0+cGFyZW50LnJhbmdlc1tqXS5zdGFydCAtIChkaWZmLT50YXJnZXQucmFuZ2VzW2pdLnN0YXJ0LXRfc3RhcnQpOworCQllbHNlCisJCQlwX3N0YXJ0ID0gZGlmZi0+cGFyZW50LnJhbmdlc1tqXS5zdGFydDsKKwkJaWYgKHRfZW5kID4gZGlmZi0+dGFyZ2V0LnJhbmdlc1tqX2xhc3RdLmVuZCkKKwkJCXBfZW5kID0gZGlmZi0+cGFyZW50LnJhbmdlc1tqX2xhc3RdLmVuZCArICh0X2VuZC1kaWZmLT50YXJnZXQucmFuZ2VzW2pfbGFzdF0uZW5kKTsKKwkJZWxzZQorCQkJcF9lbmQgPSBkaWZmLT5wYXJlbnQucmFuZ2VzW2pfbGFzdF0uZW5kOworCisJCWlmICghcF9zdGFydCAmJiAhcF9lbmQpIHsKKwkJCXBfc3RhcnQgPSAtMTsKKwkJCXBfZW5kID0gLTE7CisJCX0KKworCQkvKiBOb3cgb3V0cHV0IGEgZGlmZiBodW5rIGZvciB0aGlzIHJhbmdlICovCisJCXByaW50ZigiJXMlc0BAIC0lbGQsJWxkICslbGQsJWxkIEBAJXNcbiIsCisJCSAgICAgICBwcmVmaXgsIGNfZnJhZywKKwkJICAgICAgIHBfc3RhcnQrMSwgcF9lbmQtcF9zdGFydCwgdF9zdGFydCsxLCB0X2VuZC10X3N0YXJ0LAorCQkgICAgICAgY19yZXNldCk7CisJCXdoaWxlIChqIDwgZGlmZi0+dGFyZ2V0Lm5yICYmIGRpZmYtPnRhcmdldC5yYW5nZXNbal0uc3RhcnQgPCB0X2VuZCkgeworCQkJaW50IGs7CisJCQlmb3IgKDsgdF9jdXIgPCBkaWZmLT50YXJnZXQucmFuZ2VzW2pdLnN0YXJ0OyB0X2N1cisrKQorCQkJCXByaW50X2xpbmUocHJlZml4LCAnICcsIHRfY3VyLCB0X2VuZHMsIHBhaXItPnR3by0+ZGF0YSwKKwkJCQkJICAgY19wbGFpbiwgY19yZXNldCk7CisJCQlmb3IgKGsgPSBkaWZmLT5wYXJlbnQucmFuZ2VzW2pdLnN0YXJ0OyBrIDwgZGlmZi0+cGFyZW50LnJhbmdlc1tqXS5lbmQ7IGsrKykKKwkJCQlwcmludF9saW5lKHByZWZpeCwgJy0nLCBrLCBwX2VuZHMsIHBhaXItPm9uZS0+ZGF0YSwKKwkJCQkJICAgY19vbGQsIGNfcmVzZXQpOworCQkJZm9yICg7IHRfY3VyIDwgZGlmZi0+dGFyZ2V0LnJhbmdlc1tqXS5lbmQgJiYgdF9jdXIgPCB0X2VuZDsgdF9jdXIrKykKKwkJCQlwcmludF9saW5lKHByZWZpeCwgJysnLCB0X2N1ciwgdF9lbmRzLCBwYWlyLT50d28tPmRhdGEsCisJCQkJCSAgIGNfbmV3LCBjX3Jlc2V0KTsKKwkJCWorKzsKKwkJfQorCQlmb3IgKDsgdF9jdXIgPCB0X2VuZDsgdF9jdXIrKykKKwkJCXByaW50X2xpbmUocHJlZml4LCAnICcsIHRfY3VyLCB0X2VuZHMsIHBhaXItPnR3by0+ZGF0YSwKKwkJCQkgICBjX3BsYWluLCBjX3Jlc2V0KTsKKwl9CisKKwlmcmVlKHBfZW5kcyk7CisJZnJlZSh0X2VuZHMpOworfQorCisvKgorICogTkVFRFNXT1JLOiBtYW51YWxseSBidWlsZGluZyBhIGRpZmYgaGVyZSBpcyBub3QgdGhlIFJpZ2h0CisgKiBUaGluZyh0bSkuICBsb2cgLUwgc2hvdWxkIGJlIGJ1aWx0IGludG8gdGhlIGRpZmYgcGlwZWxpbmUuCisgKi8KK3N0YXRpYyB2b2lkIGR1bXBfZGlmZl9oYWNreShzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGxpbmVfbG9nX2RhdGEgKnJhbmdlKQoreworCXB1dHMob3V0cHV0X3ByZWZpeCgmcmV2LT5kaWZmb3B0KSk7CisJd2hpbGUgKHJhbmdlKSB7CisJCWR1bXBfZGlmZl9oYWNreV9vbmUocmV2LCByYW5nZSk7CisJCXJhbmdlID0gcmFuZ2UtPm5leHQ7CisJfQorfQorCisvKgorICogVW5saWtlIG1vc3Qgb3RoZXIgZnVuY3Rpb25zLCB0aGlzIGRlc3RydWN0aXZlbHkgb3BlcmF0ZXMgb24KKyAqICdyYW5nZScuCisgKi8KK3N0YXRpYyBpbnQgcHJvY2Vzc19kaWZmX2ZpbGVwYWlyKHN0cnVjdCByZXZfaW5mbyAqcmV2LAorCQkJCSBzdHJ1Y3QgZGlmZl9maWxlcGFpciAqcGFpciwKKwkJCQkgc3RydWN0IGxpbmVfbG9nX2RhdGEgKnJhbmdlLAorCQkJCSBzdHJ1Y3QgZGlmZl9yYW5nZXMgKipkaWZmX291dCkKK3sKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmcgPSByYW5nZTsKKwlzdHJ1Y3QgcmFuZ2Vfc2V0IHRtcDsKKwlzdHJ1Y3QgZGlmZl9yYW5nZXMgZGlmZjsKKwltbWZpbGVfdCBmaWxlX3BhcmVudCwgZmlsZV90YXJnZXQ7CisKKwlhc3NlcnQocGFpci0+dHdvLT5wYXRoKTsKKwl3aGlsZSAocmcpIHsKKwkJYXNzZXJ0KHJnLT5wYXRoKTsKKwkJaWYgKCFzdHJjbXAocmctPnBhdGgsIHBhaXItPnR3by0+cGF0aCkpCisJCQlicmVhazsKKwkJcmcgPSByZy0+bmV4dDsKKwl9CisKKwlpZiAoIXJnKQorCQlyZXR1cm4gMDsKKwlpZiAocmctPnJhbmdlcy5uciA9PSAwKQorCQlyZXR1cm4gMDsKKworCWFzc2VydChwYWlyLT50d28tPnNoYTFfdmFsaWQpOworCWRpZmZfcG9wdWxhdGVfZmlsZXNwZWMocGFpci0+dHdvLCAwKTsKKwlmaWxlX3RhcmdldC5wdHIgPSBwYWlyLT50d28tPmRhdGE7CisJZmlsZV90YXJnZXQuc2l6ZSA9IHBhaXItPnR3by0+c2l6ZTsKKworCWlmIChwYWlyLT5vbmUtPnNoYTFfdmFsaWQpIHsKKwkJZGlmZl9wb3B1bGF0ZV9maWxlc3BlYyhwYWlyLT5vbmUsIDApOworCQlmaWxlX3BhcmVudC5wdHIgPSBwYWlyLT5vbmUtPmRhdGE7CisJCWZpbGVfcGFyZW50LnNpemUgPSBwYWlyLT5vbmUtPnNpemU7CisJfSBlbHNlIHsKKwkJZmlsZV9wYXJlbnQucHRyID0gIiI7CisJCWZpbGVfcGFyZW50LnNpemUgPSAwOworCX0KKworCWRpZmZfcmFuZ2VzX2luaXQoJmRpZmYpOworCWNvbGxlY3RfZGlmZigmZmlsZV9wYXJlbnQsICZmaWxlX3RhcmdldCwgJmRpZmYpOworCisJLyogTkVFRFNXT1JLIHNob3VsZCBhcHBseSBzb21lIGhldXJpc3RpY3MgdG8gcHJldmVudCBtaXNtYXRjaGVzICovCisJZnJlZShyZy0+cGF0aCk7CisJcmctPnBhdGggPSB4c3RyZHVwKHBhaXItPm9uZS0+cGF0aCk7CisKKwlyYW5nZV9zZXRfaW5pdCgmdG1wLCAwKTsKKwlyYW5nZV9zZXRfbWFwX2Fjcm9zc19kaWZmKCZ0bXAsICZyZy0+cmFuZ2VzLCAmZGlmZiwgZGlmZl9vdXQpOworCXJhbmdlX3NldF9yZWxlYXNlKCZyZy0+cmFuZ2VzKTsKKwlyYW5nZV9zZXRfbW92ZSgmcmctPnJhbmdlcywgJnRtcCk7CisKKwlkaWZmX3Jhbmdlc19yZWxlYXNlKCZkaWZmKTsKKworCXJldHVybiAoKCpkaWZmX291dCktPnBhcmVudC5uciA+IDApOworfQorCitzdGF0aWMgc3RydWN0IGRpZmZfZmlsZXBhaXIgKmRpZmZfZmlsZXBhaXJfZHVwKHN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyKQoreworCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpuZXcgPSB4bWFsbG9jKHNpemVvZihzdHJ1Y3QgZGlmZl9maWxlcGFpcikpOworCW5ldy0+b25lID0gcGFpci0+b25lOworCW5ldy0+dHdvID0gcGFpci0+dHdvOworCW5ldy0+b25lLT5jb3VudCsrOworCW5ldy0+dHdvLT5jb3VudCsrOworCXJldHVybiBuZXc7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfZGlmZnF1ZXVlcyhpbnQgbiwgc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpkcSkKK3sKKwlpbnQgaSwgajsKKwlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorCQlmb3IgKGogPSAwOyBqIDwgZHFbaV0ubnI7IGorKykKKwkJCWRpZmZfZnJlZV9maWxlcGFpcihkcVtpXS5xdWV1ZVtqXSk7CisJZnJlZShkcSk7Cit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19hbGxfZmlsZXMoc3RydWN0IGxpbmVfbG9nX2RhdGEgKipyYW5nZV9vdXQsCisJCQkgICAgIHN0cnVjdCByZXZfaW5mbyAqcmV2LAorCQkJICAgICBzdHJ1Y3QgZGlmZl9xdWV1ZV9zdHJ1Y3QgKnF1ZXVlLAorCQkJICAgICBzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2UpCit7CisJaW50IGksIGNoYW5nZWQgPSAwOworCisJKnJhbmdlX291dCA9IGxpbmVfbG9nX2RhdGFfY29weShyYW5nZSk7CisKKwlmb3IgKGkgPSAwOyBpIDwgcXVldWUtPm5yOyBpKyspIHsKKwkJc3RydWN0IGRpZmZfcmFuZ2VzICpwYWlyZGlmZiA9IE5VTEw7CisJCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyID0gcXVldWUtPnF1ZXVlW2ldOworCQlpZiAocHJvY2Vzc19kaWZmX2ZpbGVwYWlyKHJldiwgcGFpciwgKnJhbmdlX291dCwgJnBhaXJkaWZmKSkgeworCQkJLyoKKwkJCSAqIFN0b3JlIGF3YXkgdGhlIGRpZmYgZm9yIGxhdGVyIG91dHB1dC4gIFdlCisJCQkgKiB0dWNrIGl0IGluIHRoZSByYW5nZXMgd2UgZ290IGFzIF9pbnB1dF8sCisJCQkgKiBzaW5jZSB0aGF0J3MgdGhlIGNvbW1pdCB0aGF0IGNhdXNlZCB0aGUKKwkJCSAqIGRpZmYuCisJCQkgKgorCQkJICogTkVFRFNXT1JLIG5vdCBlbm91Z2ggd2hlbiB3ZSBnZXQgYXJvdW5kIHRvCisJCQkgKiBkb2luZyBzb21ldGhpbmcgaW50ZXJlc3Rpbmcgd2l0aCBtZXJnZXM7CisJCQkgKiBjdXJyZW50bHkgZWFjaCBpbnZvY2F0aW9uIG9uIGEgbWVyZ2UgcGFyZW50CisJCQkgKiB0cmFzaGVzIHRoZSBwcmV2aW91cyBvbmUncyBkaWZmLgorCQkJICoKKwkJCSAqIE5FRURTV09SSyB0cmFtcGxlcyBvdmVyIGRhdGEgc3RydWN0dXJlcyBub3Qgb3duZWQgaGVyZQorCQkJICovCisJCQlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmcgPSByYW5nZTsKKwkJCWNoYW5nZWQrKzsKKwkJCXdoaWxlIChyZyAmJiBzdHJjbXAocmctPnBhdGgsIHBhaXItPnR3by0+cGF0aCkpCisJCQkJcmcgPSByZy0+bmV4dDsKKwkJCWFzc2VydChyZyk7CisJCQlyZy0+cGFpciA9IGRpZmZfZmlsZXBhaXJfZHVwKHF1ZXVlLT5xdWV1ZVtpXSk7CisJCQltZW1jcHkoJnJnLT5kaWZmLCBwYWlyZGlmZiwgc2l6ZW9mKHN0cnVjdCBkaWZmX3JhbmdlcykpOworCQl9CisJfQorCisJcmV0dXJuIGNoYW5nZWQ7Cit9CisKK2ludCBsaW5lX2xvZ19wcmludChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSA9IGxvb2t1cF9saW5lX3JhbmdlKHJldiwgY29tbWl0KTsKKworCXNob3dfbG9nKHJldik7CisJZHVtcF9kaWZmX2hhY2t5KHJldiwgcmFuZ2UpOworCXJldHVybiAxOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfcmFuZ2VzX29yZGluYXJ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJCQkgIHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSkKK3sKKwlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBOVUxMOworCXN0cnVjdCBkaWZmX3F1ZXVlX3N0cnVjdCBxdWV1ZTsKKwlzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcGFyZW50X3JhbmdlOworCWludCBjaGFuZ2VkOworCisJaWYgKGNvbW1pdC0+cGFyZW50cykKKwkJcGFyZW50ID0gY29tbWl0LT5wYXJlbnRzLT5pdGVtOworCisJcXVldWVfZGlmZnMocmFuZ2UsICZyZXYtPmRpZmZvcHQsICZxdWV1ZSwgY29tbWl0LCBwYXJlbnQpOworCWNoYW5nZWQgPSBwcm9jZXNzX2FsbF9maWxlcygmcGFyZW50X3JhbmdlLCByZXYsICZxdWV1ZSwgcmFuZ2UpOworCWlmIChwYXJlbnQpCisJCWFkZF9saW5lX3JhbmdlKHJldiwgcGFyZW50LCBwYXJlbnRfcmFuZ2UpOworCXJldHVybiBjaGFuZ2VkOworfQorCitzdGF0aWMgaW50IHByb2Nlc3NfcmFuZ2VzX21lcmdlX2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJCSAgICAgICBzdHJ1Y3QgbGluZV9sb2dfZGF0YSAqcmFuZ2UpCit7CisJc3RydWN0IGRpZmZfcXVldWVfc3RydWN0ICpkaWZmcXVldWVzOworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICoqY2FuZDsKKwlzdHJ1Y3QgY29tbWl0ICoqcGFyZW50czsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CisJaW50IGk7CisJaW50IG5wYXJlbnRzID0gY291bnRfcGFyZW50cyhjb21taXQpOworCisJZGlmZnF1ZXVlcyA9IHhtYWxsb2MobnBhcmVudHMgKiBzaXplb2YoKmRpZmZxdWV1ZXMpKTsKKwljYW5kID0geG1hbGxvYyhucGFyZW50cyAqIHNpemVvZigqY2FuZCkpOworCXBhcmVudHMgPSB4bWFsbG9jKG5wYXJlbnRzICogc2l6ZW9mKCpwYXJlbnRzKSk7CisKKwlwID0gY29tbWl0LT5wYXJlbnRzOworCWZvciAoaSA9IDA7IGkgPCBucGFyZW50czsgaSsrKSB7CisJCXBhcmVudHNbaV0gPSBwLT5pdGVtOworCQlwID0gcC0+bmV4dDsKKwkJcXVldWVfZGlmZnMocmFuZ2UsICZyZXYtPmRpZmZvcHQsICZkaWZmcXVldWVzW2ldLCBjb21taXQsIHBhcmVudHNbaV0pOworCX0KKworCWZvciAoaSA9IDA7IGkgPCBucGFyZW50czsgaSsrKSB7CisJCWludCBjaGFuZ2VkOworCQljYW5kW2ldID0gTlVMTDsKKwkJY2hhbmdlZCA9IHByb2Nlc3NfYWxsX2ZpbGVzKCZjYW5kW2ldLCByZXYsICZkaWZmcXVldWVzW2ldLCByYW5nZSk7CisJCWlmICghY2hhbmdlZCkgeworCQkJLyoKKwkJCSAqIFRoaXMgcGFyZW50IGNhbiB0YWtlIGFsbCB0aGUgYmxhbWUsIHNvIHdlCisJCQkgKiBkb24ndCBmb2xsb3cgYW55IG90aGVyIHBhdGggaW4gaGlzdG9yeQorCQkJICovCisJCQlhZGRfbGluZV9yYW5nZShyZXYsIHBhcmVudHNbaV0sIGNhbmRbaV0pOworCQkJY2xlYXJfY29tbWl0X2xpbmVfcmFuZ2UocmV2LCBjb21taXQpOworCQkJY29tbWl0LT5wYXJlbnRzID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IGNvbW1pdF9saXN0KSk7CisJCQljb21taXQtPnBhcmVudHMtPml0ZW0gPSBwYXJlbnRzW2ldOworCQkJY29tbWl0LT5wYXJlbnRzLT5uZXh0ID0gTlVMTDsKKwkJCWZyZWUocGFyZW50cyk7CisJCQlmcmVlKGNhbmQpOworCQkJZnJlZV9kaWZmcXVldWVzKG5wYXJlbnRzLCBkaWZmcXVldWVzKTsKKwkJCS8qIE5FRURTV09SSyBsZWFraW5nIGxpa2UgYSBzaWV2ZSAqLworCQkJcmV0dXJuIDA7CisJCX0KKwl9CisKKwkvKgorCSAqIE5vIHNpbmdsZSBwYXJlbnQgdG9vayB0aGUgYmxhbWUuICBXZSBhZGQgdGhlIGNhbmRpZGF0ZXMKKwkgKiBmcm9tIHRoZSBhYm92ZSBsb29wIHRvIHRoZSBwYXJlbnRzLgorCSAqLworCWZvciAoaSA9IDA7IGkgPCBucGFyZW50czsgaSsrKSB7CisJCWFkZF9saW5lX3JhbmdlKHJldiwgcGFyZW50c1tpXSwgY2FuZFtpXSk7CisJfQorCisJY2xlYXJfY29tbWl0X2xpbmVfcmFuZ2UocmV2LCBjb21taXQpOworCWZyZWUocGFyZW50cyk7CisJZnJlZShjYW5kKTsKKwlmcmVlX2RpZmZxdWV1ZXMobnBhcmVudHMsIGRpZmZxdWV1ZXMpOworCXJldHVybiAxOworCisJLyogTkVFRFNXT1JLIGV2aWwgbWVyZ2UgZGV0ZWN0aW9uIHN0dWZmICovCisJLyogTkVFRFNXT1JLIGxlYWtpbmcgbGlrZSBhIHNpZXZlICovCit9CisKK3N0YXRpYyBpbnQgcHJvY2Vzc19yYW5nZXNfYXJiaXRyYXJ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpyYW5nZSA9IGxvb2t1cF9saW5lX3JhbmdlKHJldiwgY29tbWl0KTsKKwlpbnQgY2hhbmdlZCA9IDA7CisKKwlpZiAocmFuZ2UpIHsKKwkJaWYgKCFjb21taXQtPnBhcmVudHMgfHwgIWNvbW1pdC0+cGFyZW50cy0+bmV4dCkKKwkJCWNoYW5nZWQgPSBwcm9jZXNzX3Jhbmdlc19vcmRpbmFyeV9jb21taXQocmV2LCBjb21taXQsIHJhbmdlKTsKKwkJZWxzZQorCQkJY2hhbmdlZCA9IHByb2Nlc3NfcmFuZ2VzX21lcmdlX2NvbW1pdChyZXYsIGNvbW1pdCwgcmFuZ2UpOworCX0KKworCWlmICghY2hhbmdlZCkKKwkJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gVFJFRVNBTUU7CisKKwlyZXR1cm4gY2hhbmdlZDsKK30KKworc3RhdGljIGVudW0gcmV3cml0ZV9yZXN1bHQgbGluZV9sb2dfcmV3cml0ZV9vbmUoc3RydWN0IHJldl9pbmZvICpyZXYsIHN0cnVjdCBjb21taXQgKipwcCkKK3sKKwlmb3IgKDs7KSB7CisJCXN0cnVjdCBjb21taXQgKnAgPSAqcHA7CisJCWlmIChwLT5wYXJlbnRzICYmIHAtPnBhcmVudHMtPm5leHQpCisJCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CisJCWlmIChwLT5vYmplY3QuZmxhZ3MgJiBVTklOVEVSRVNUSU5HKQorCQkJcmV0dXJuIHJld3JpdGVfb25lX29rOworCQlpZiAoIShwLT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSkpCisJCQlyZXR1cm4gcmV3cml0ZV9vbmVfb2s7CisJCWlmICghcC0+cGFyZW50cykKKwkJCXJldHVybiByZXdyaXRlX29uZV9ub3BhcmVudHM7CisJCSpwcCA9IHAtPnBhcmVudHMtPml0ZW07CisJfQorfQorCitpbnQgbGluZV9sb2dfZmlsdGVyKHN0cnVjdCByZXZfaW5mbyAqcmV2KQoreworCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKmxpc3QgPSByZXYtPmNvbW1pdHM7CisJc3RydWN0IGNvbW1pdF9saXN0ICpvdXQgPSBOVUxMLCAqKnBwID0gJm91dDsKKworCXdoaWxlIChsaXN0KSB7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqdG9fZnJlZSA9IE5VTEw7CisJCWNvbW1pdCA9IGxpc3QtPml0ZW07CisJCWlmIChwcm9jZXNzX3Jhbmdlc19hcmJpdHJhcnlfY29tbWl0KHJldiwgY29tbWl0KSkgeworCQkJKnBwID0gbGlzdDsKKwkJCXBwID0gJmxpc3QtPm5leHQ7CisJCX0gZWxzZQorCQkJdG9fZnJlZSA9IGxpc3Q7CisJCWxpc3QgPSBsaXN0LT5uZXh0OworCQlmcmVlKHRvX2ZyZWUpOworCX0KKwkqcHAgPSBOVUxMOworCisJZm9yIChsaXN0ID0gb3V0OyBsaXN0OyBsaXN0ID0gbGlzdC0+bmV4dCkKKwkJcmV3cml0ZV9wYXJlbnRzKHJldiwgbGlzdC0+aXRlbSwgbGluZV9sb2dfcmV3cml0ZV9vbmUpOworCisJcmV2LT5jb21taXRzID0gb3V0OworCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9saW5lLWxvZy5oIGIvbGluZS1sb2cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmVhNDVmCi0tLSAvZGV2L251bGwKKysrIGIvbGluZS1sb2cuaApAQCAtMCwwICsxLDUzIEBACisjaWZuZGVmIExJTkVfTE9HX0gKKyNkZWZpbmUgTElORV9MT0dfSAorCisjaW5jbHVkZSAiZGlmZmNvcmUuaCIKKworc3RydWN0IHJldl9pbmZvOworc3RydWN0IGNvbW1pdDsKKworLyogQSByYW5nZSBbc3RhcnQsZW5kXS4gIExpbmVzIGFyZSBudW1iZXJlZCBzdGFydGluZyBhdCAwLCBhbmQgdGhlCisgKiByYW5nZXMgaW5jbHVkZSBzdGFydCBidXQgZXhjbHVkZSBlbmQuICovCitzdHJ1Y3QgcmFuZ2UgeworCWxvbmcgc3RhcnQsIGVuZDsKK307CisKKy8qIEEgc2V0IG9mIHJhbmdlcy4gIFRoZSByYW5nZXMgbXVzdCBhbHdheXMgYmUgZGlzam9pbnQgYW5kIHNvcnRlZC4gKi8KK3N0cnVjdCByYW5nZV9zZXQgeworCWludCBhbGxvYywgbnI7CisJc3RydWN0IHJhbmdlICpyYW5nZXM7Cit9OworCisvKiBBIGRpZmYsIGVuY29kZWQgYXMgdGhlIHNldCBvZiBwcmUtIGFuZCBwb3N0LWltYWdlIHJhbmdlcyB3aGVyZSB0aGUKKyAqIGZpbGVzIGRpZmZlci4gQSBwYWlyIG9mIHJhbmdlcyBjb3JyZXNwb25kcyB0byBhIGh1bmsuICovCitzdHJ1Y3QgZGlmZl9yYW5nZXMgeworCXN0cnVjdCByYW5nZV9zZXQgcGFyZW50OworCXN0cnVjdCByYW5nZV9zZXQgdGFyZ2V0OworfTsKKworLyogTGlua2VkIGxpc3Qgb2YgaW50ZXJlc3RpbmcgZmlsZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgcmFuZ2VzLiAgVGhlCisgKiBsaXN0IG11c3QgYmUga2VwdCBzb3J0ZWQgYnkgcGF0aC4KKyAqCisgKiBGb3Igc2ltcGxpY2l0eSwgZXZlbiB0aG91Z2ggdGhpcyBpcyBoaWdobHkgcmVkdW5kYW50LCBlYWNoCisgKiBsaW5lX2xvZ19kYXRhIG93bnMgaXRzICdwYXRoJy4KKyAqLworc3RydWN0IGxpbmVfbG9nX2RhdGEgeworCXN0cnVjdCBsaW5lX2xvZ19kYXRhICpuZXh0OworCWNoYXIgKnBhdGg7CisJY2hhciBzdGF0dXM7CisJc3RydWN0IHJhbmdlX3NldCByYW5nZXM7CisJaW50IGFyZ19hbGxvYywgYXJnX25yOworCWNvbnN0IGNoYXIgKiphcmdzOworCXN0cnVjdCBkaWZmX2ZpbGVwYWlyICpwYWlyOworCXN0cnVjdCBkaWZmX3JhbmdlcyBkaWZmOworfTsKKworZXh0ZXJuIHZvaWQgbGluZV9sb2dfZGF0YV9pbml0KHN0cnVjdCBsaW5lX2xvZ19kYXRhICpyKTsKKworZXh0ZXJuIHZvaWQgbGluZV9sb2dfaW5pdChzdHJ1Y3QgcmV2X2luZm8gKnJldiwgY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmFyZ3MpOworCitleHRlcm4gaW50IGxpbmVfbG9nX2ZpbHRlcihzdHJ1Y3QgcmV2X2luZm8gKnJldik7CisKK2V4dGVybiBpbnQgbGluZV9sb2dfcHJpbnQoc3RydWN0IHJldl9pbmZvICpyZXYsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CisKKyNlbmRpZiAvKiBMSU5FX0xPR19IICovCmRpZmYgLS1naXQgYS9saW5lLXJhbmdlLmMgYi9saW5lLXJhbmdlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0MjQ3NQotLS0gL2Rldi9udWxsCisrKyBiL2xpbmUtcmFuZ2UuYwpAQCAtMCwwICsxLDI1MCBAQAorI2luY2x1ZGUgImdpdC1jb21wYXQtdXRpbC5oIgorI2luY2x1ZGUgImxpbmUtcmFuZ2UuaCIKKyNpbmNsdWRlICJ4ZGlmZi1pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJzdHJidWYuaCIKKyNpbmNsdWRlICJ1c2VyZGlmZi5oIgorCisvKgorICogUGFyc2Ugb25lIGl0ZW0gaW4gdGhlIC1MIG9wdGlvbgorICovCitzdGF0aWMgY29uc3QgY2hhciAqcGFyc2VfbG9jKGNvbnN0IGNoYXIgKnNwZWMsIG50aF9saW5lX2ZuX3QgbnRoX2xpbmUsCisJCQkgICAgIHZvaWQgKmRhdGEsIGxvbmcgbGluZXMsIGxvbmcgYmVnaW4sIGxvbmcgKnJldCkKK3sKKwljaGFyICp0ZXJtOworCWNvbnN0IGNoYXIgKmxpbmU7CisJbG9uZyBudW07CisJaW50IHJlZ19lcnJvcjsKKwlyZWdleF90IHJlZ2V4cDsKKwlyZWdtYXRjaF90IG1hdGNoWzFdOworCisJLyogQWxsb3cgIi1MIDxzb21ldGhpbmc+LCsyMCIgdG8gbWVhbiBzdGFydGluZyBhdCA8c29tZXRoaW5nPgorCSAqIGZvciAyMCBsaW5lcywgb3IgIi1MIDxzb21ldGhpbmc+LC01IiBmb3IgNSBsaW5lcyBlbmRpbmcgYXQKKwkgKiA8c29tZXRoaW5nPi4KKwkgKi8KKwlpZiAoMSA8IGJlZ2luICYmIChzcGVjWzBdID09ICcrJyB8fCBzcGVjWzBdID09ICctJykpIHsKKwkJbnVtID0gc3RydG9sKHNwZWMgKyAxLCAmdGVybSwgMTApOworCQlpZiAodGVybSAhPSBzcGVjICsgMSkgeworCQkJaWYgKCFyZXQpCisJCQkJcmV0dXJuIHRlcm07CisJCQlpZiAoc3BlY1swXSA9PSAnLScpCisJCQkJbnVtID0gMCAtIG51bTsKKwkJCWlmICgwIDwgbnVtKQorCQkJCSpyZXQgPSBiZWdpbiArIG51bSAtIDI7CisJCQllbHNlIGlmICghbnVtKQorCQkJCSpyZXQgPSBiZWdpbjsKKwkJCWVsc2UKKwkJCQkqcmV0ID0gYmVnaW4gKyBudW07CisJCQlyZXR1cm4gdGVybTsKKwkJfQorCQlyZXR1cm4gc3BlYzsKKwl9CisJbnVtID0gc3RydG9sKHNwZWMsICZ0ZXJtLCAxMCk7CisJaWYgKHRlcm0gIT0gc3BlYykgeworCQlpZiAocmV0KQorCQkJKnJldCA9IG51bTsKKwkJcmV0dXJuIHRlcm07CisJfQorCWlmIChzcGVjWzBdICE9ICcvJykKKwkJcmV0dXJuIHNwZWM7CisKKwkvKiBpdCBjb3VsZCBiZSBhIHJlZ2V4cCBvZiBmb3JtIC8uLi4vICovCisJZm9yICh0ZXJtID0gKGNoYXIgKikgc3BlYyArIDE7ICp0ZXJtICYmICp0ZXJtICE9ICcvJzsgdGVybSsrKSB7CisJCWlmICgqdGVybSA9PSAnXFwnKQorCQkJdGVybSsrOworCX0KKwlpZiAoKnRlcm0gIT0gJy8nKQorCQlyZXR1cm4gc3BlYzsKKworCS8qIGluIHRoZSBzY2FuLW9ubHkgY2FzZSB3ZSBhcmUgbm90IGludGVyZXN0ZWQgaW4gdGhlIHJlZ2V4ICovCisJaWYgKCFyZXQpCisJCXJldHVybiB0ZXJtKzE7CisKKwkvKiB0cnkgW3NwZWMrMSAuLiB0ZXJtLTFdIGFzIHJlZ2V4cCAqLworCSp0ZXJtID0gMDsKKwliZWdpbi0tOyAvKiBpbnB1dCBpcyBpbiBodW1hbiB0ZXJtcyAqLworCWxpbmUgPSBudGhfbGluZShkYXRhLCBiZWdpbik7CisKKwlpZiAoIShyZWdfZXJyb3IgPSByZWdjb21wKCZyZWdleHAsIHNwZWMgKyAxLCBSRUdfTkVXTElORSkpICYmCisJICAgICEocmVnX2Vycm9yID0gcmVnZXhlYygmcmVnZXhwLCBsaW5lLCAxLCBtYXRjaCwgMCkpKSB7CisJCWNvbnN0IGNoYXIgKmNwID0gbGluZSArIG1hdGNoWzBdLnJtX3NvOworCQljb25zdCBjaGFyICpubGluZTsKKworCQl3aGlsZSAoYmVnaW4rKyA8IGxpbmVzKSB7CisJCQlubGluZSA9IG50aF9saW5lKGRhdGEsIGJlZ2luKTsKKwkJCWlmIChsaW5lIDw9IGNwICYmIGNwIDwgbmxpbmUpCisJCQkJYnJlYWs7CisJCQlsaW5lID0gbmxpbmU7CisJCX0KKwkJKnJldCA9IGJlZ2luOworCQlyZWdmcmVlKCZyZWdleHApOworCQkqdGVybSsrID0gJy8nOworCQlyZXR1cm4gdGVybTsKKwl9CisJZWxzZSB7CisJCWNoYXIgZXJyYnVmWzEwMjRdOworCQlyZWdlcnJvcihyZWdfZXJyb3IsICZyZWdleHAsIGVycmJ1ZiwgMTAyNCk7CisJCWRpZSgiLUwgcGFyYW1ldGVyICclcyc6ICVzIiwgc3BlYyArIDEsIGVycmJ1Zik7CisJfQorfQorCitzdGF0aWMgaW50IG1hdGNoX2Z1bmNuYW1lKHhkZW1pdGNvbmZfdCAqeGVjZmcsIGNvbnN0IGNoYXIgKmJvbCwgY29uc3QgY2hhciAqZW9sKQoreworCWlmICh4ZWNmZykgeworCQljaGFyIGJ1ZlsxXTsKKwkJcmV0dXJuIHhlY2ZnLT5maW5kX2Z1bmMoYm9sLCBlb2wgLSBib2wsIGJ1ZiwgMSwKKwkJCQkJeGVjZmctPmZpbmRfZnVuY19wcml2KSA+PSAwOworCX0KKworCWlmIChib2wgPT0gZW9sKQorCQlyZXR1cm4gMDsKKwlpZiAoaXNhbHBoYSgqYm9sKSB8fCAqYm9sID09ICdfJyB8fCAqYm9sID09ICckJykKKwkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpmaW5kX2Z1bmNuYW1lX21hdGNoaW5nX3JlZ2V4cCh4ZGVtaXRjb25mX3QgKnhlY2ZnLCBjb25zdCBjaGFyICpzdGFydCwKKwkJCQkJCSByZWdleF90ICpyZWdleHApCit7CisJaW50IHJlZ19lcnJvcjsKKwlyZWdtYXRjaF90IG1hdGNoWzFdOworCXdoaWxlICgxKSB7CisJCWNvbnN0IGNoYXIgKmJvbCwgKmVvbDsKKwkJcmVnX2Vycm9yID0gcmVnZXhlYyhyZWdleHAsIHN0YXJ0LCAxLCBtYXRjaCwgMCk7CisJCWlmIChyZWdfZXJyb3IgPT0gUkVHX05PTUFUQ0gpCisJCQlyZXR1cm4gTlVMTDsKKwkJZWxzZSBpZiAocmVnX2Vycm9yKSB7CisJCQljaGFyIGVycmJ1ZlsxMDI0XTsKKwkJCXJlZ2Vycm9yKHJlZ19lcnJvciwgcmVnZXhwLCBlcnJidWYsIDEwMjQpOworCQkJZGllKCItTCBwYXJhbWV0ZXI6IHJlZ2V4ZWMoKSBmYWlsZWQ6ICVzIiwgZXJyYnVmKTsKKwkJfQorCQkvKiBkZXRlcm1pbmUgZXh0ZW50IG9mIGxpbmUgbWF0Y2hlZCAqLworCQlib2wgPSBzdGFydCttYXRjaFswXS5ybV9zbzsKKwkJZW9sID0gc3RhcnQrbWF0Y2hbMF0ucm1fZW87CisJCXdoaWxlIChib2wgPiBzdGFydCAmJiAqYm9sICE9ICdcbicpCisJCQlib2wtLTsKKwkJaWYgKCpib2wgPT0gJ1xuJykKKwkJCWJvbCsrOworCQl3aGlsZSAoKmVvbCAmJiAqZW9sICE9ICdcbicpCisJCQllb2wrKzsKKwkJaWYgKCplb2wgPT0gJ1xuJykKKwkJCWVvbCsrOworCQkvKiBpcyBpdCBhIGZ1bmNuYW1lIGxpbmU/ICovCisJCWlmIChtYXRjaF9mdW5jbmFtZSh4ZWNmZywgKGNoYXIqKSBib2wsIChjaGFyKikgZW9sKSkKKwkJCXJldHVybiBib2w7CisJCXN0YXJ0ID0gZW9sOworCX0KK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnBhcnNlX3JhbmdlX2Z1bmNuYW1lKGNvbnN0IGNoYXIgKmFyZywgbnRoX2xpbmVfZm5fdCBudGhfbGluZV9jYiwKKwkJCQkJdm9pZCAqY2JfZGF0YSwgbG9uZyBsaW5lcywgbG9uZyAqYmVnaW4sIGxvbmcgKmVuZCwKKwkJCQkJY29uc3QgY2hhciAqcGF0aCkKK3sKKwljaGFyICpwYXR0ZXJuOworCWNvbnN0IGNoYXIgKnRlcm07CisJc3RydWN0IHVzZXJkaWZmX2RyaXZlciAqZHJ2OworCXhkZW1pdGNvbmZfdCAqeGVjZmcgPSBOVUxMOworCWNvbnN0IGNoYXIgKnN0YXJ0OworCWNvbnN0IGNoYXIgKnA7CisJaW50IHJlZ19lcnJvcjsKKwlyZWdleF90IHJlZ2V4cDsKKworCWFzc2VydCgqYXJnID09ICc6Jyk7CisJdGVybSA9IGFyZysxOworCXdoaWxlICgqdGVybSAmJiAqdGVybSAhPSAnOicpIHsKKwkJaWYgKCp0ZXJtID09ICdcXCcgJiYgKih0ZXJtKzEpKQorCQkJdGVybSsrOworCQl0ZXJtKys7CisJfQorCWlmICh0ZXJtID09IGFyZysxKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAoIWJlZ2luKSAvKiBza2lwX3JhbmdlX2FyZyBjYXNlICovCisJCXJldHVybiB0ZXJtOworCisJcGF0dGVybiA9IHhzdHJuZHVwKGFyZysxLCB0ZXJtLShhcmcrMSkpOworCisJc3RhcnQgPSBudGhfbGluZV9jYihjYl9kYXRhLCAwKTsKKworCWRydiA9IHVzZXJkaWZmX2ZpbmRfYnlfcGF0aChwYXRoKTsKKwlpZiAoZHJ2ICYmIGRydi0+ZnVuY25hbWUucGF0dGVybikgeworCQljb25zdCBzdHJ1Y3QgdXNlcmRpZmZfZnVuY25hbWUgKnBlID0gJmRydi0+ZnVuY25hbWU7CisJCXhlY2ZnID0geGNhbGxvYygxLCBzaXplb2YoKnhlY2ZnKSk7CisJCXhkaWZmX3NldF9maW5kX2Z1bmMoeGVjZmcsIHBlLT5wYXR0ZXJuLCBwZS0+Y2ZsYWdzKTsKKwl9CisKKwlyZWdfZXJyb3IgPSByZWdjb21wKCZyZWdleHAsIHBhdHRlcm4sIFJFR19ORVdMSU5FKTsKKwlpZiAocmVnX2Vycm9yKSB7CisJCWNoYXIgZXJyYnVmWzEwMjRdOworCQlyZWdlcnJvcihyZWdfZXJyb3IsICZyZWdleHAsIGVycmJ1ZiwgMTAyNCk7CisJCWRpZSgiLUwgcGFyYW1ldGVyICclcyc6ICVzIiwgcGF0dGVybiwgZXJyYnVmKTsKKwl9CisKKwlwID0gZmluZF9mdW5jbmFtZV9tYXRjaGluZ19yZWdleHAoeGVjZmcsIChjaGFyKikgc3RhcnQsICZyZWdleHApOworCWlmICghcCkKKwkJZGllKCItTCBwYXJhbWV0ZXIgJyVzJzogbm8gbWF0Y2giLCBwYXR0ZXJuKTsKKwkqYmVnaW4gPSAwOworCXdoaWxlIChwID4gbnRoX2xpbmVfY2IoY2JfZGF0YSwgKmJlZ2luKSkKKwkJKCpiZWdpbikrKzsKKworCWlmICgqYmVnaW4gPj0gbGluZXMpCisJCWRpZSgiLUwgcGFyYW1ldGVyICclcycgbWF0Y2hlcyBhdCBFT0YiLCBwYXR0ZXJuKTsKKworCSplbmQgPSAqYmVnaW4rMTsKKwl3aGlsZSAoKmVuZCA8IGxpbmVzKSB7CisJCWNvbnN0IGNoYXIgKmJvbCA9IG50aF9saW5lX2NiKGNiX2RhdGEsICplbmQpOworCQljb25zdCBjaGFyICplb2wgPSBudGhfbGluZV9jYihjYl9kYXRhLCAqZW5kKzEpOworCQlpZiAobWF0Y2hfZnVuY25hbWUoeGVjZmcsIGJvbCwgZW9sKSkKKwkJCWJyZWFrOworCQkoKmVuZCkrKzsKKwl9CisKKwlyZWdmcmVlKCZyZWdleHApOworCWZyZWUoeGVjZmcpOworCWZyZWUocGF0dGVybik7CisKKwkvKiBjb21wZW5zYXRlIGZvciAxLWJhc2VkIG51bWJlcmluZyAqLworCSgqYmVnaW4pKys7CisKKwlyZXR1cm4gdGVybTsKK30KKworaW50IHBhcnNlX3JhbmdlX2FyZyhjb25zdCBjaGFyICphcmcsIG50aF9saW5lX2ZuX3QgbnRoX2xpbmVfY2IsCisJCSAgICB2b2lkICpjYl9kYXRhLCBsb25nIGxpbmVzLCBsb25nICpiZWdpbiwgbG9uZyAqZW5kLAorCQkgICAgY29uc3QgY2hhciAqcGF0aCkKK3sKKwkqYmVnaW4gPSAqZW5kID0gMDsKKworCWlmICgqYXJnID09ICc6JykgeworCQlhcmcgPSBwYXJzZV9yYW5nZV9mdW5jbmFtZShhcmcsIG50aF9saW5lX2NiLCBjYl9kYXRhLCBsaW5lcywgYmVnaW4sIGVuZCwgcGF0aCk7CisJCWlmICghYXJnIHx8ICphcmcpCisJCQlyZXR1cm4gLTE7CisJCXJldHVybiAwOworCX0KKworCWFyZyA9IHBhcnNlX2xvYyhhcmcsIG50aF9saW5lX2NiLCBjYl9kYXRhLCBsaW5lcywgMSwgYmVnaW4pOworCisJaWYgKCphcmcgPT0gJywnKQorCQlhcmcgPSBwYXJzZV9sb2MoYXJnICsgMSwgbnRoX2xpbmVfY2IsIGNiX2RhdGEsIGxpbmVzLCAqYmVnaW4gKyAxLCBlbmQpOworCisJaWYgKCphcmcpCisJCXJldHVybiAtMTsKKworCWlmICgqYmVnaW4gJiYgKmVuZCAmJiAqZW5kIDwgKmJlZ2luKSB7CisJCWxvbmcgdG1wOworCQl0bXAgPSAqZW5kOyAqZW5kID0gKmJlZ2luOyAqYmVnaW4gPSB0bXA7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK2NvbnN0IGNoYXIgKnNraXBfcmFuZ2VfYXJnKGNvbnN0IGNoYXIgKmFyZykKK3sKKwlpZiAoKmFyZyA9PSAnOicpCisJCXJldHVybiBwYXJzZV9yYW5nZV9mdW5jbmFtZShhcmcsIE5VTEwsIE5VTEwsIDAsIE5VTEwsIE5VTEwsIE5VTEwpOworCisJYXJnID0gcGFyc2VfbG9jKGFyZywgTlVMTCwgTlVMTCwgMCwgLTEsIE5VTEwpOworCisJaWYgKCphcmcgPT0gJywnKQorCQlhcmcgPSBwYXJzZV9sb2MoYXJnKzEsIE5VTEwsIE5VTEwsIDAsIDAsIE5VTEwpOworCisJcmV0dXJuIGFyZzsKK30KZGlmZiAtLWdpdCBhL2xpbmUtcmFuZ2UuaCBiL2xpbmUtcmFuZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTNkMDEyCi0tLSAvZGV2L251bGwKKysrIGIvbGluZS1yYW5nZS5oCkBAIC0wLDAgKzEsMzYgQEAKKyNpZm5kZWYgTElORV9SQU5HRV9ICisjZGVmaW5lIExJTkVfUkFOR0VfSAorCisvKgorICogUGFyc2Ugb25lIGl0ZW0gaW4gYW4gLUwgYmVnaW4sZW5kIG9wdGlvbiB3LnIudC4gdGhlIG5vdGlvbmFsIGZpbGUKKyAqIG9iamVjdCAnY2JfZGF0YScgY29uc2lzdGluZyBvZiAnbGluZXMnIGxpbmVzLgorICoKKyAqIFRoZSAnbnRoX2xpbmVfY2InIGNhbGxiYWNrIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzdGFydCBvZiB0aGUKKyAqIGxpbmUgJ2xubycgaW5zaWRlIHRoZSAnY2JfZGF0YScuICBUaGUgY2FsbGVyIGlzIGV4cGVjdGVkIHRvIGFscmVhZHkKKyAqIGhhdmUgYSBzdWl0YWJsZSBtYXAgYXQgaGFuZCB0byBtYWtlIHRoaXMgYSBjb25zdGFudC10aW1lIGxvb2t1cC4KKyAqCisgKiBSZXR1cm5zIDAgaW4gY2FzZSBvZiBzdWNjZXNzIGFuZCAtMSBpZiB0aGVyZSB3YXMgYW4gZXJyb3IuICBUaGUKKyAqIGFjdHVhbCByYW5nZSBpcyBzdG9yZWQgaW4gKmJlZ2luIGFuZCAqZW5kLiAgVGhlIGNvdW50aW5nIHN0YXJ0cworICogYXQgMSEgIEluIGNhc2Ugb2YgZXJyb3IsIHRoZSBjYWxsZXIgc2hvdWxkIHNob3cgdXNhZ2UgbWVzc2FnZS4KKyAqLworCit0eXBlZGVmIGNvbnN0IGNoYXIgKigqbnRoX2xpbmVfZm5fdCkodm9pZCAqZGF0YSwgbG9uZyBsbm8pOworCitleHRlcm4gaW50IHBhcnNlX3JhbmdlX2FyZyhjb25zdCBjaGFyICphcmcsCisJCQkgICBudGhfbGluZV9mbl90IG50aF9saW5lX2NiLAorCQkJICAgdm9pZCAqY2JfZGF0YSwgbG9uZyBsaW5lcywKKwkJCSAgIGxvbmcgKmJlZ2luLCBsb25nICplbmQsCisJCQkgICBjb25zdCBjaGFyICpwYXRoKTsKKworLyoKKyAqIFNjYW4gcGFzdCBhIHJhbmdlIGFyZ3VtZW50IHRoYXQgY291bGQgYmUgcGFyc2VkIGJ5CisgKiAncGFyc2VfcmFuZ2VfYXJnJywgdG8gaGVscCB0aGUgY2FsbGVyIGRldGVybWluZSB0aGUgc3RhcnQgb2YgdGhlCisgKiBmaWxlbmFtZSBpbiAnLUwgbixtOmZpbGUnIHN5bnRheC4KKyAqCisgKiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSAnbixtJyBwYXJ0LCBvcgorICogTlVMTCBpbiBjYXNlIHRoZSBhcmd1bWVudCBpcyBvYnZpb3VzbHkgbWFsZm9ybWVkLgorICovCisKK2V4dGVybiBjb25zdCBjaGFyICpza2lwX3JhbmdlX2FyZyhjb25zdCBjaGFyICphcmcpOworCisjZW5kaWYgLyogTElORV9SQU5HRV9IICovCmRpZmYgLS1naXQgYS9sb2ctdHJlZS5jIGIvbG9nLXRyZWUuYwppbmRleCAxOTQ2ZTljLi5hNDlkOGU4IDEwMDY0NAotLS0gYS9sb2ctdHJlZS5jCisrKyBiL2xvZy10cmVlLmMKQEAgLTEwLDYgKzEwLDcgQEAKICNpbmNsdWRlICJjb2xvci5oIgogI2luY2x1ZGUgImdwZy1pbnRlcmZhY2UuaCIKICNpbmNsdWRlICJzZXF1ZW5jZXIuaCIKKyNpbmNsdWRlICJsaW5lLWxvZy5oIgogCiBzdHJ1Y3QgZGVjb3JhdGlvbiBuYW1lX2RlY29yYXRpb24gPSB7ICJvYmplY3QgbmFtZXMiIH07CiAKQEAgLTYxNiw2ICs2MTcsOSBAQAogCWN0eC5mbXQgPSBvcHQtPmNvbW1pdF9mb3JtYXQ7CiAJY3R4Lm1haWxtYXAgPSBvcHQtPm1haWxtYXA7CiAJY3R4LmNvbG9yID0gb3B0LT5kaWZmb3B0LnVzZV9jb2xvcjsKKwljdHgub3V0cHV0X2VuY29kaW5nID0gZ2V0X2xvZ19vdXRwdXRfZW5jb2RpbmcoKTsKKwlpZiAob3B0LT5mcm9tX2lkZW50Lm1haWxfYmVnaW4gJiYgb3B0LT5mcm9tX2lkZW50Lm5hbWVfYmVnaW4pCisJCWN0eC5mcm9tX2lkZW50ID0gJm9wdC0+ZnJvbV9pZGVudDsKIAlwcmV0dHlfcHJpbnRfY29tbWl0KCZjdHgsIGNvbW1pdCwgJm1zZ2J1Zik7CiAKIAlpZiAob3B0LT5hZGRfc2lnbm9mZikKQEAgLTc5Niw2ICs4MDAsOSBAQAogCWxvZy5wYXJlbnQgPSBOVUxMOwogCW9wdC0+bG9naW5mbyA9ICZsb2c7CiAKKwlpZiAob3B0LT5saW5lX2xldmVsX3RyYXZlcnNlKQorCQlyZXR1cm4gbGluZV9sb2dfcHJpbnQob3B0LCBjb21taXQpOworCiAJc2hvd24gPSBsb2dfdHJlZV9kaWZmKG9wdCwgY29tbWl0LCAmbG9nKTsKIAlpZiAoIXNob3duICYmIG9wdC0+bG9naW5mbyAmJiBvcHQtPmFsd2F5c19zaG93X2hlYWRlcikgewogCQlsb2cucGFyZW50ID0gTlVMTDsKZGlmZiAtLWdpdCBhL21haWxtYXAuYyBiL21haWxtYXAuYwppbmRleCAyYTdiMzY2Li40NDYxNGZjIDEwMDY0NAotLS0gYS9tYWlsbWFwLmMKKysrIGIvbWFpbG1hcC5jCkBAIC01LDggKzUsMTAgQEAKICNkZWZpbmUgREVCVUdfTUFJTE1BUCAwCiAjaWYgREVCVUdfTUFJTE1BUAogI2RlZmluZSBkZWJ1Z19tbSguLi4pIGZwcmludGYoc3RkZXJyLCBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgZGVidWdfc3RyKFgpICgoWCkgPyAoWCkgOiAiKG5vbmUpIikKICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgZGVidWdfbW0oY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHt9CitzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIgKmRlYnVnX3N0cihjb25zdCBjaGFyICpzKSB7IHJldHVybiBzOyB9CiAjZW5kaWYKIAogY29uc3QgY2hhciAqZ2l0X21haWxtYXBfZmlsZTsKQEAgLTI5LDcgKzMxLDggQEAKIHN0YXRpYyB2b2lkIGZyZWVfbWFpbG1hcF9pbmZvKHZvaWQgKnAsIGNvbnN0IGNoYXIgKnMpCiB7CiAJc3RydWN0IG1haWxtYXBfaW5mbyAqbWkgPSAoc3RydWN0IG1haWxtYXBfaW5mbyAqKXA7Ci0JZGVidWdfbW0oIm1haWxtYXA6IC0tIGNvbXBsZXg6ICclcycgLT4gJyVzJyA8JXM+XG4iLCBzLCBtaS0+bmFtZSwgbWktPmVtYWlsKTsKKwlkZWJ1Z19tbSgibWFpbG1hcDogLS0gY29tcGxleDogJyVzJyAtPiAnJXMnIDwlcz5cbiIsCisJCSBzLCBkZWJ1Z19zdHIobWktPm5hbWUpLCBkZWJ1Z19zdHIobWktPmVtYWlsKSk7CiAJZnJlZShtaS0+bmFtZSk7CiAJZnJlZShtaS0+ZW1haWwpOwogfQpAQCAtMzcsOCArNDAsMTEgQEAKIHN0YXRpYyB2b2lkIGZyZWVfbWFpbG1hcF9lbnRyeSh2b2lkICpwLCBjb25zdCBjaGFyICpzKQogewogCXN0cnVjdCBtYWlsbWFwX2VudHJ5ICptZSA9IChzdHJ1Y3QgbWFpbG1hcF9lbnRyeSAqKXA7Ci0JZGVidWdfbW0oIm1haWxtYXA6IHJlbW92aW5nIGVudHJpZXMgZm9yIDwlcz4sIHdpdGggJWQgc3ViLWVudHJpZXNcbiIsIHMsIG1lLT5uYW1lbWFwLm5yKTsKLQlkZWJ1Z19tbSgibWFpbG1hcDogLSBzaW1wbGU6ICclcycgPCVzPlxuIiwgbWUtPm5hbWUsIG1lLT5lbWFpbCk7CisJZGVidWdfbW0oIm1haWxtYXA6IHJlbW92aW5nIGVudHJpZXMgZm9yIDwlcz4sIHdpdGggJWQgc3ViLWVudHJpZXNcbiIsCisJCSBzLCBtZS0+bmFtZW1hcC5ucik7CisJZGVidWdfbW0oIm1haWxtYXA6IC0gc2ltcGxlOiAnJXMnIDwlcz5cbiIsCisJCSBkZWJ1Z19zdHIobWUtPm5hbWUpLCBkZWJ1Z19zdHIobWUtPmVtYWlsKSk7CisKIAlmcmVlKG1lLT5uYW1lKTsKIAlmcmVlKG1lLT5lbWFpbCk7CiAKQEAgLTQ3LDE4ICs1MywxMSBAQAogfQogCiBzdGF0aWMgdm9pZCBhZGRfbWFwcGluZyhzdHJ1Y3Qgc3RyaW5nX2xpc3QgKm1hcCwKLQkJCWNoYXIgKm5ld19uYW1lLCBjaGFyICpuZXdfZW1haWwsIGNoYXIgKm9sZF9uYW1lLCBjaGFyICpvbGRfZW1haWwpCisJCQljaGFyICpuZXdfbmFtZSwgY2hhciAqbmV3X2VtYWlsLAorCQkJY2hhciAqb2xkX25hbWUsIGNoYXIgKm9sZF9lbWFpbCkKIHsKIAlzdHJ1Y3QgbWFpbG1hcF9lbnRyeSAqbWU7CiAJaW50IGluZGV4OwotCWNoYXIgKnA7Ci0KLQlpZiAob2xkX2VtYWlsKQotCQlmb3IgKHAgPSBvbGRfZW1haWw7ICpwOyBwKyspCi0JCQkqcCA9IHRvbG93ZXIoKnApOwotCWlmIChuZXdfZW1haWwpCi0JCWZvciAocCA9IG5ld19lbWFpbDsgKnA7IHArKykKLQkJCSpwID0gdG9sb3dlcigqcCk7CiAKIAlpZiAob2xkX2VtYWlsID09IE5VTEwpIHsKIAkJb2xkX2VtYWlsID0gbmV3X2VtYWlsOwpAQCAtNjgsMTYgKzY3LDIxIEBACiAJaWYgKChpbmRleCA9IHN0cmluZ19saXN0X2ZpbmRfaW5zZXJ0X2luZGV4KG1hcCwgb2xkX2VtYWlsLCAxKSkgPCAwKSB7CiAJCS8qIG1haWxtYXAgZW50cnkgZXhpc3RzLCBpbnZlcnQgaW5kZXggdmFsdWUgKi8KIAkJaW5kZXggPSAtMSAtIGluZGV4OworCQltZSA9IChzdHJ1Y3QgbWFpbG1hcF9lbnRyeSAqKW1hcC0+aXRlbXNbaW5kZXhdLnV0aWw7CiAJfSBlbHNlIHsKIAkJLyogY3JlYXRlIG1haWxtYXAgZW50cnkgKi8KLQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnRfYXRfaW5kZXgobWFwLCBpbmRleCwgb2xkX2VtYWlsKTsKLQkJaXRlbS0+dXRpbCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBtYWlsbWFwX2VudHJ5KSk7Ci0JCSgoc3RydWN0IG1haWxtYXBfZW50cnkgKilpdGVtLT51dGlsKS0+bmFtZW1hcC5zdHJkdXBfc3RyaW5ncyA9IDE7CisJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOworCisJCWl0ZW0gPSBzdHJpbmdfbGlzdF9pbnNlcnRfYXRfaW5kZXgobWFwLCBpbmRleCwgb2xkX2VtYWlsKTsKKwkJbWUgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgbWFpbG1hcF9lbnRyeSkpOworCQltZS0+bmFtZW1hcC5zdHJkdXBfc3RyaW5ncyA9IDE7CisJCW1lLT5uYW1lbWFwLmNtcCA9IHN0cmNhc2VjbXA7CisJCWl0ZW0tPnV0aWwgPSBtZTsKIAl9Ci0JbWUgPSAoc3RydWN0IG1haWxtYXBfZW50cnkgKiltYXAtPml0ZW1zW2luZGV4XS51dGlsOwogCiAJaWYgKG9sZF9uYW1lID09IE5VTEwpIHsKLQkJZGVidWdfbW0oIm1haWxtYXA6IGFkZGluZyAoc2ltcGxlKSBlbnRyeSBmb3IgJXMgYXQgaW5kZXggJWRcbiIsIG9sZF9lbWFpbCwgaW5kZXgpOworCQlkZWJ1Z19tbSgibWFpbG1hcDogYWRkaW5nIChzaW1wbGUpIGVudHJ5IGZvciAlcyBhdCBpbmRleCAlZFxuIiwKKwkJCSBvbGRfZW1haWwsIGluZGV4KTsKIAkJLyogUmVwbGFjZSBjdXJyZW50IG5hbWUgYW5kIG5ldyBlbWFpbCBmb3Igc2ltcGxlIGVudHJ5ICovCiAJCWlmIChuZXdfbmFtZSkgewogCQkJZnJlZShtZS0+bmFtZSk7CkBAIC04OSw3ICs5Myw4IEBACiAJCX0KIAl9IGVsc2UgewogCQlzdHJ1Y3QgbWFpbG1hcF9pbmZvICptaSA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBtYWlsbWFwX2luZm8pKTsKLQkJZGVidWdfbW0oIm1haWxtYXA6IGFkZGluZyAoY29tcGxleCkgZW50cnkgZm9yICVzIGF0IGluZGV4ICVkXG4iLCBvbGRfZW1haWwsIGluZGV4KTsKKwkJZGVidWdfbW0oIm1haWxtYXA6IGFkZGluZyAoY29tcGxleCkgZW50cnkgZm9yICVzIGF0IGluZGV4ICVkXG4iLAorCQkJIG9sZF9lbWFpbCwgaW5kZXgpOwogCQlpZiAobmV3X25hbWUpCiAJCQltaS0+bmFtZSA9IHhzdHJkdXAobmV3X25hbWUpOwogCQlpZiAobmV3X2VtYWlsKQpAQCAtOTgsMTEgKzEwMywxMiBAQAogCX0KIAogCWRlYnVnX21tKCJtYWlsbWFwOiAgJyVzJyA8JXM+IC0+ICclcycgPCVzPlxuIiwKLQkJIG9sZF9uYW1lLCBvbGRfZW1haWwsIG5ld19uYW1lLCBuZXdfZW1haWwpOworCQkgZGVidWdfc3RyKG9sZF9uYW1lKSwgb2xkX2VtYWlsLAorCQkgZGVidWdfc3RyKG5ld19uYW1lKSwgZGVidWdfc3RyKG5ld19lbWFpbCkpOwogfQogCiBzdGF0aWMgY2hhciAqcGFyc2VfbmFtZV9hbmRfZW1haWwoY2hhciAqYnVmZmVyLCBjaGFyICoqbmFtZSwKLQkJY2hhciAqKmVtYWlsLCBpbnQgYWxsb3dfZW1wdHlfZW1haWwpCisJCQkJICBjaGFyICoqZW1haWwsIGludCBhbGxvd19lbXB0eV9lbWFpbCkKIHsKIAljaGFyICpsZWZ0LCAqcmlnaHQsICpuc3RhcnQsICpuZW5kOwogCSpuYW1lID0gKmVtYWlsID0gTlVMTDsKQEAgLTEyMiw3ICsxMjgsNyBAQAogCXdoaWxlIChuZW5kID4gbnN0YXJ0ICYmIGlzc3BhY2UoKm5lbmQpKQogCQktLW5lbmQ7CiAKLQkqbmFtZSA9IChuc3RhcnQgPCBuZW5kID8gbnN0YXJ0IDogTlVMTCk7CisJKm5hbWUgPSAobnN0YXJ0IDw9IG5lbmQgPyBuc3RhcnQgOiBOVUxMKTsKIAkqZW1haWwgPSBsZWZ0KzE7CiAJKihuZW5kKzEpID0gJ1wwJzsKIAkqcmlnaHQrKyA9ICdcMCc7CkBAIC0zMDYsMjEgKzMxMiwyNSBAQAogfQogCiBpbnQgbWFwX3VzZXIoc3RydWN0IHN0cmluZ19saXN0ICptYXAsCi0JCQkgY29uc3QgY2hhciAqKmVtYWlsLCBzaXplX3QgKmVtYWlsbGVuLAotCQkJIGNvbnN0IGNoYXIgKipuYW1lLCBzaXplX3QgKm5hbWVsZW4pCisJICAgICBjb25zdCBjaGFyICoqZW1haWwsIHNpemVfdCAqZW1haWxsZW4sCisJICAgICBjb25zdCBjaGFyICoqbmFtZSwgc2l6ZV90ICpuYW1lbGVuKQogewogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCXN0cnVjdCBtYWlsbWFwX2VudHJ5ICptZTsKIAogCWRlYnVnX21tKCJtYXBfdXNlcjogbWFwICclLipzJyA8JS4qcz5cbiIsCi0JCSAqbmFtZSwgKm5hbWVsZW4sICplbWFpbGxlbiwgKmVtYWlsKTsKKwkJIChpbnQpKm5hbWVsZW4sIGRlYnVnX3N0cigqbmFtZSksCisJCSAoaW50KSplbWFpbGxlbiwgZGVidWdfc3RyKCplbWFpbCkpOwogCiAJaXRlbSA9IGxvb2t1cF9wcmVmaXgobWFwLCAqZW1haWwsICplbWFpbGxlbik7CiAJaWYgKGl0ZW0gIT0gTlVMTCkgewogCQltZSA9IChzdHJ1Y3QgbWFpbG1hcF9lbnRyeSAqKWl0ZW0tPnV0aWw7CiAJCWlmIChtZS0+bmFtZW1hcC5ucikgewotCQkJLyogVGhlIGl0ZW0gaGFzIG11bHRpcGxlIGl0ZW1zLCBzbyB3ZSdsbCBsb29rIHVwIG9uIG5hbWUgdG9vICovCi0JCQkvKiBJZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIHdlIGNob29zZSB0aGUgc2ltcGxlIGVudHJ5ICAgICAgKi8KKwkJCS8qCisJCQkgKiBUaGUgaXRlbSBoYXMgbXVsdGlwbGUgaXRlbXMsIHNvIHdlJ2xsIGxvb2sgdXAgb24KKwkJCSAqIG5hbWUgdG9vLiBJZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIHdlIGNob29zZSB0aGUKKwkJCSAqIHNpbXBsZSBlbnRyeS4KKwkJCSAqLwogCQkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKnN1Yml0ZW07CiAJCQlzdWJpdGVtID0gbG9va3VwX3ByZWZpeCgmbWUtPm5hbWVtYXAsICpuYW1lLCAqbmFtZWxlbik7CiAJCQlpZiAoc3ViaXRlbSkKQEAgLTM0MSw4ICszNTEsOSBAQAogCQkJCSpuYW1lID0gbWktPm5hbWU7CiAJCQkJKm5hbWVsZW4gPSBzdHJsZW4oKm5hbWUpOwogCQl9Ci0JCWRlYnVnX21tKCJtYXBfdXNlcjogIHRvICclLipzJyA8Liolcz5cbiIsICpuYW1lbGVuLCAqbmFtZSwKLQkJCQkgKmVtYWlsbGVuLCAqZW1haWwpOworCQlkZWJ1Z19tbSgibWFwX3VzZXI6ICB0byAnJS4qcycgPCUuKnM+XG4iLAorCQkJIChpbnQpKm5hbWVsZW4sIGRlYnVnX3N0cigqbmFtZSksCisJCQkgKGludCkqZW1haWxsZW4sIGRlYnVnX3N0cigqZW1haWwpKTsKIAkJcmV0dXJuIDE7CiAJfQogCWRlYnVnX21tKCJtYXBfdXNlcjogIC0tXG4iKTsKZGlmZiAtLWdpdCBhL21hdGNoLXRyZWVzLmMgYi9tYXRjaC10cmVlcy5jCmluZGV4IDJiYjczNGQuLjc4NzNjZGUgMTAwNjQ0Ci0tLSBhL21hdGNoLXRyZWVzLmMKKysrIGIvbWF0Y2gtdHJlZXMuYwpAQCAtNDcsNiArNDcsMjIgQEAKIAlyZXR1cm4gc2NvcmU7CiB9CiAKK3N0YXRpYyB2b2lkICpmaWxsX3RyZWVfZGVzY19zdHJpY3Qoc3RydWN0IHRyZWVfZGVzYyAqZGVzYywKKwkJCQkgICBjb25zdCB1bnNpZ25lZCBjaGFyICpoYXNoKQoreworCXZvaWQgKmJ1ZmZlcjsKKwllbnVtIG9iamVjdF90eXBlIHR5cGU7CisJdW5zaWduZWQgbG9uZyBzaXplOworCisJYnVmZmVyID0gcmVhZF9zaGExX2ZpbGUoaGFzaCwgJnR5cGUsICZzaXplKTsKKwlpZiAoIWJ1ZmZlcikKKwkJZGllKCJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiLCBzaGExX3RvX2hleChoYXNoKSk7CisJaWYgKHR5cGUgIT0gT0JKX1RSRUUpCisJCWRpZSgiJXMgaXMgbm90IGEgdHJlZSIsIHNoYTFfdG9faGV4KGhhc2gpKTsKKwlpbml0X3RyZWVfZGVzYyhkZXNjLCBidWZmZXIsIHNpemUpOworCXJldHVybiBidWZmZXI7Cit9CisKIHN0YXRpYyBpbnQgYmFzZV9uYW1lX2VudHJpZXNfY29tcGFyZShjb25zdCBzdHJ1Y3QgbmFtZV9lbnRyeSAqYSwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBuYW1lX2VudHJ5ICpiKQogewpAQCAtNjEsMjMgKzc3LDEwIEBACiB7CiAJc3RydWN0IHRyZWVfZGVzYyBvbmU7CiAJc3RydWN0IHRyZWVfZGVzYyB0d287Ci0Jdm9pZCAqb25lX2J1ZiwgKnR3b19idWY7CisJdm9pZCAqb25lX2J1ZiA9IGZpbGxfdHJlZV9kZXNjX3N0cmljdCgmb25lLCBoYXNoMSk7CisJdm9pZCAqdHdvX2J1ZiA9IGZpbGxfdHJlZV9kZXNjX3N0cmljdCgmdHdvLCBoYXNoMik7CiAJaW50IHNjb3JlID0gMDsKLQllbnVtIG9iamVjdF90eXBlIHR5cGU7Ci0JdW5zaWduZWQgbG9uZyBzaXplOwogCi0Jb25lX2J1ZiA9IHJlYWRfc2hhMV9maWxlKGhhc2gxLCAmdHlwZSwgJnNpemUpOwotCWlmICghb25lX2J1ZikKLQkJZGllKCJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiLCBzaGExX3RvX2hleChoYXNoMSkpOwotCWlmICh0eXBlICE9IE9CSl9UUkVFKQotCQlkaWUoIiVzIGlzIG5vdCBhIHRyZWUiLCBzaGExX3RvX2hleChoYXNoMSkpOwotCWluaXRfdHJlZV9kZXNjKCZvbmUsIG9uZV9idWYsIHNpemUpOwotCXR3b19idWYgPSByZWFkX3NoYTFfZmlsZShoYXNoMiwgJnR5cGUsICZzaXplKTsKLQlpZiAoIXR3b19idWYpCi0JCWRpZSgidW5hYmxlIHRvIHJlYWQgdHJlZSAoJXMpIiwgc2hhMV90b19oZXgoaGFzaDIpKTsKLQlpZiAodHlwZSAhPSBPQkpfVFJFRSkKLQkJZGllKCIlcyBpcyBub3QgYSB0cmVlIiwgc2hhMV90b19oZXgoaGFzaDIpKTsKLQlpbml0X3RyZWVfZGVzYygmdHdvLCB0d29fYnVmLCBzaXplKTsKIAlmb3IgKDs7KSB7CiAJCXN0cnVjdCBuYW1lX2VudHJ5IGUxLCBlMjsKIAkJaW50IGdvdF9lbnRyeV9mcm9tX29uZSA9IHRyZWVfZW50cnkoJm9uZSwgJmUxKTsKQEAgLTEyNCwxNiArMTI3LDcgQEAKIAkJCWludCByZWN1cnNlX2xpbWl0KQogewogCXN0cnVjdCB0cmVlX2Rlc2Mgb25lOwotCXZvaWQgKm9uZV9idWY7Ci0JZW51bSBvYmplY3RfdHlwZSB0eXBlOwotCXVuc2lnbmVkIGxvbmcgc2l6ZTsKLQotCW9uZV9idWYgPSByZWFkX3NoYTFfZmlsZShoYXNoMSwgJnR5cGUsICZzaXplKTsKLQlpZiAoIW9uZV9idWYpCi0JCWRpZSgidW5hYmxlIHRvIHJlYWQgdHJlZSAoJXMpIiwgc2hhMV90b19oZXgoaGFzaDEpKTsKLQlpZiAodHlwZSAhPSBPQkpfVFJFRSkKLQkJZGllKCIlcyBpcyBub3QgYSB0cmVlIiwgc2hhMV90b19oZXgoaGFzaDEpKTsKLQlpbml0X3RyZWVfZGVzYygmb25lLCBvbmVfYnVmLCBzaXplKTsKKwl2b2lkICpvbmVfYnVmID0gZmlsbF90cmVlX2Rlc2Nfc3RyaWN0KCZvbmUsIGhhc2gxKTsKIAogCXdoaWxlIChvbmUuc2l6ZSkgewogCQljb25zdCBjaGFyICpwYXRoOwpkaWZmIC0tZ2l0IGEvbWVyZ2UtcmVjdXJzaXZlLmMgYi9tZXJnZS1yZWN1cnNpdmUuYwppbmRleCBlYTlkYmQzLi5mOTU5MzNiIDEwMDY0NAotLS0gYS9tZXJnZS1yZWN1cnNpdmUuYworKysgYi9tZXJnZS1yZWN1cnNpdmUuYwpAQCAtMjUxLDcgKzI1MSw3IEBACiAJCWludCBpOwogCQlmcHJpbnRmKHN0ZGVyciwgIkJVRzogVGhlcmUgYXJlIHVubWVyZ2VkIGluZGV4IGVudHJpZXM6XG4iKTsKIAkJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7Ci0JCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAkJCWlmIChjZV9zdGFnZShjZSkpCiAJCQkJZnByaW50ZihzdGRlcnIsICJCVUc6ICVkICUuKnNcbiIsIGNlX3N0YWdlKGNlKSwKIAkJCQkJKGludCljZV9uYW1lbGVuKGNlKSwgY2UtPm5hbWUpOwpAQCAtMjY0LDcgKzI2NCw4IEBACiAKIAlpZiAoIWNhY2hlX3RyZWVfZnVsbHlfdmFsaWQoYWN0aXZlX2NhY2hlX3RyZWUpICYmCiAJICAgIGNhY2hlX3RyZWVfdXBkYXRlKGFjdGl2ZV9jYWNoZV90cmVlLAotCQkJICAgICAgYWN0aXZlX2NhY2hlLCBhY3RpdmVfbnIsIDApIDwgMCkKKwkJCSAgICAgIChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqKWFjdGl2ZV9jYWNoZSwKKwkJCSAgICAgIGFjdGl2ZV9uciwgMCkgPCAwKQogCQlkaWUoXygiZXJyb3IgYnVpbGRpbmcgdHJlZXMiKSk7CiAKIAlyZXN1bHQgPSBsb29rdXBfdHJlZShhY3RpdmVfY2FjaGVfdHJlZS0+c2hhMSk7CkBAIC0zMzksNyArMzQwLDcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKIAkJc3RydWN0IHN0cmluZ19saXN0X2l0ZW0gKml0ZW07CiAJCXN0cnVjdCBzdGFnZV9kYXRhICplOwotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQlpZiAoIWNlX3N0YWdlKGNlKSkKIAkJCWNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9ub3Rlcy1tZXJnZS5jIGIvbm90ZXMtbWVyZ2UuYwppbmRleCAwZjY3YmQzLi5hYjE4ODU3IDEwMDY0NAotLS0gYS9ub3Rlcy1tZXJnZS5jCisrKyBiL25vdGVzLW1lcmdlLmMKQEAgLTksNiArOSw3IEBACiAjaW5jbHVkZSAibm90ZXMuaCIKICNpbmNsdWRlICJub3Rlcy1tZXJnZS5oIgogI2luY2x1ZGUgInN0cmJ1Zi5oIgorI2luY2x1ZGUgIm5vdGVzLXV0aWxzLmgiCiAKIHN0cnVjdCBub3Rlc19tZXJnZV9wYWlyIHsKIAl1bnNpZ25lZCBjaGFyIG9ialsyMF0sIGJhc2VbMjBdLCBsb2NhbFsyMF0sIHJlbW90ZVsyMF07CkBAIC01MzAsMzIgKzUzMSw2IEBACiAJcmV0dXJuIGNvbmZsaWN0cyA/IC0xIDogMTsKIH0KIAotdm9pZCBjcmVhdGVfbm90ZXNfY29tbWl0KHN0cnVjdCBub3Rlc190cmVlICp0LCBzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsCi0JCQkgY29uc3Qgc3RydWN0IHN0cmJ1ZiAqbXNnLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSkKLXsKLQl1bnNpZ25lZCBjaGFyIHRyZWVfc2hhMVsyMF07Ci0KLQlhc3NlcnQodC0+aW5pdGlhbGl6ZWQpOwotCi0JaWYgKHdyaXRlX25vdGVzX3RyZWUodCwgdHJlZV9zaGExKSkKLQkJZGllKCJGYWlsZWQgdG8gd3JpdGUgbm90ZXMgdHJlZSB0byBkYXRhYmFzZSIpOwotCi0JaWYgKCFwYXJlbnRzKSB7Ci0JCS8qIERlZHVjZSBwYXJlbnQgY29tbWl0IGZyb20gdC0+cmVmICovCi0JCXVuc2lnbmVkIGNoYXIgcGFyZW50X3NoYTFbMjBdOwotCQlpZiAoIXJlYWRfcmVmKHQtPnJlZiwgcGFyZW50X3NoYTEpKSB7Ci0JCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBsb29rdXBfY29tbWl0KHBhcmVudF9zaGExKTsKLQkJCWlmICghcGFyZW50IHx8IHBhcnNlX2NvbW1pdChwYXJlbnQpKQotCQkJCWRpZSgiRmFpbGVkIHRvIGZpbmQvcGFyc2UgY29tbWl0ICVzIiwgdC0+cmVmKTsKLQkJCWNvbW1pdF9saXN0X2luc2VydChwYXJlbnQsICZwYXJlbnRzKTsKLQkJfQotCQkvKiBlbHNlOiB0LT5yZWYgcG9pbnRzIHRvIG5vdGhpbmcsIGFzc3VtZSByb290L29ycGhhbiBjb21taXQgKi8KLQl9Ci0KLQlpZiAoY29tbWl0X3RyZWUobXNnLCB0cmVlX3NoYTEsIHBhcmVudHMsIHJlc3VsdF9zaGExLCBOVUxMLCBOVUxMKSkKLQkJZGllKCJGYWlsZWQgdG8gY29tbWl0IG5vdGVzIHRyZWUgdG8gZGF0YWJhc2UiKTsKLX0KLQogaW50IG5vdGVzX21lcmdlKHN0cnVjdCBub3Rlc19tZXJnZV9vcHRpb25zICpvLAogCQlzdHJ1Y3Qgbm90ZXNfdHJlZSAqbG9jYWxfdHJlZSwKIAkJdW5zaWduZWQgY2hhciAqcmVzdWx0X3NoYTEpCmRpZmYgLS1naXQgYS9ub3Rlcy1tZXJnZS5oIGIvbm90ZXMtbWVyZ2UuaAppbmRleCAwYzExYjE3Li4xZDAxZjZhIDEwMDY0NAotLS0gYS9ub3Rlcy1tZXJnZS5oCisrKyBiL25vdGVzLW1lcmdlLmgKQEAgLTI2LDIwICsyNiw2IEBACiB2b2lkIGluaXRfbm90ZXNfbWVyZ2Vfb3B0aW9ucyhzdHJ1Y3Qgbm90ZXNfbWVyZ2Vfb3B0aW9ucyAqbyk7CiAKIC8qCi0gKiBDcmVhdGUgbmV3IG5vdGVzIGNvbW1pdCBmcm9tIHRoZSBnaXZlbiBub3RlcyB0cmVlCi0gKgotICogUHJvcGVydGllcyBvZiB0aGUgY3JlYXRlZCBjb21taXQ6Ci0gKiAtIHRyZWU6IHRoZSByZXN1bHQgb2YgY29udmVydGluZyB0IHRvIGEgdHJlZSBvYmplY3Qgd2l0aCB3cml0ZV9ub3Rlc190cmVlKCkuCi0gKiAtIHBhcmVudHM6IHRoZSBnaXZlbiBwYXJlbnRzIE9SIChpZiBOVUxMKSB0aGUgY29tbWl0IHJlZmVyZW5jZWQgYnkgdC0+cmVmLgotICogLSBhdXRob3IvY29tbWl0dGVyOiB0aGUgZGVmYXVsdCBkZXRlcm1pbmVkIGJ5IGNvbW1taXRfdHJlZSgpLgotICogLSBjb21taXQgbWVzc2FnZTogbXNnCi0gKgotICogVGhlIHJlc3VsdGluZyBjb21taXQgU0hBMSBpcyBzdG9yZWQgaW4gcmVzdWx0X3NoYTEuCi0gKi8KLXZvaWQgY3JlYXRlX25vdGVzX2NvbW1pdChzdHJ1Y3Qgbm90ZXNfdHJlZSAqdCwgc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnRzLAotCQkJIGNvbnN0IHN0cnVjdCBzdHJidWYgKm1zZywgdW5zaWduZWQgY2hhciAqcmVzdWx0X3NoYTEpOwotCi0vKgogICogTWVyZ2Ugbm90ZXMgZnJvbSBvLT5yZW1vdGVfcmVmIGludG8gby0+bG9jYWxfcmVmCiAgKgogICogVGhlIGdpdmVuIG5vdGVzX3RyZWUgJ2xvY2FsX3RyZWUnIG11c3QgYmUgdGhlIG5vdGVzX3RyZWUgcmVmZXJlbmNlZCBieSB0aGUKZGlmZiAtLWdpdCBhL25vdGVzLXV0aWxzLmMgYi9ub3Rlcy11dGlscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMDdjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9ub3Rlcy11dGlscy5jCkBAIC0wLDAgKzEsMTU3IEBACisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJjb21taXQuaCIKKyNpbmNsdWRlICJyZWZzLmgiCisjaW5jbHVkZSAibm90ZXMtdXRpbHMuaCIKKwordm9pZCBjcmVhdGVfbm90ZXNfY29tbWl0KHN0cnVjdCBub3Rlc190cmVlICp0LCBzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMsCisJCQkgY29uc3Qgc3RydWN0IHN0cmJ1ZiAqbXNnLCB1bnNpZ25lZCBjaGFyICpyZXN1bHRfc2hhMSkKK3sKKwl1bnNpZ25lZCBjaGFyIHRyZWVfc2hhMVsyMF07CisKKwlhc3NlcnQodC0+aW5pdGlhbGl6ZWQpOworCisJaWYgKHdyaXRlX25vdGVzX3RyZWUodCwgdHJlZV9zaGExKSkKKwkJZGllKCJGYWlsZWQgdG8gd3JpdGUgbm90ZXMgdHJlZSB0byBkYXRhYmFzZSIpOworCisJaWYgKCFwYXJlbnRzKSB7CisJCS8qIERlZHVjZSBwYXJlbnQgY29tbWl0IGZyb20gdC0+cmVmICovCisJCXVuc2lnbmVkIGNoYXIgcGFyZW50X3NoYTFbMjBdOworCQlpZiAoIXJlYWRfcmVmKHQtPnJlZiwgcGFyZW50X3NoYTEpKSB7CisJCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBsb29rdXBfY29tbWl0KHBhcmVudF9zaGExKTsKKwkJCWlmICghcGFyZW50IHx8IHBhcnNlX2NvbW1pdChwYXJlbnQpKQorCQkJCWRpZSgiRmFpbGVkIHRvIGZpbmQvcGFyc2UgY29tbWl0ICVzIiwgdC0+cmVmKTsKKwkJCWNvbW1pdF9saXN0X2luc2VydChwYXJlbnQsICZwYXJlbnRzKTsKKwkJfQorCQkvKiBlbHNlOiB0LT5yZWYgcG9pbnRzIHRvIG5vdGhpbmcsIGFzc3VtZSByb290L29ycGhhbiBjb21taXQgKi8KKwl9CisKKwlpZiAoY29tbWl0X3RyZWUobXNnLCB0cmVlX3NoYTEsIHBhcmVudHMsIHJlc3VsdF9zaGExLCBOVUxMLCBOVUxMKSkKKwkJZGllKCJGYWlsZWQgdG8gY29tbWl0IG5vdGVzIHRyZWUgdG8gZGF0YWJhc2UiKTsKK30KKwordm9pZCBjb21taXRfbm90ZXMoc3RydWN0IG5vdGVzX3RyZWUgKnQsIGNvbnN0IGNoYXIgKm1zZykKK3sKKwlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCXVuc2lnbmVkIGNoYXIgY29tbWl0X3NoYTFbMjBdOworCisJaWYgKCF0KQorCQl0ID0gJmRlZmF1bHRfbm90ZXNfdHJlZTsKKwlpZiAoIXQtPmluaXRpYWxpemVkIHx8ICF0LT5yZWYgfHwgISp0LT5yZWYpCisJCWRpZShfKCJDYW5ub3QgY29tbWl0IHVuaW5pdGlhbGl6ZWQvdW5yZWZlcmVuY2VkIG5vdGVzIHRyZWUiKSk7CisJaWYgKCF0LT5kaXJ0eSkKKwkJcmV0dXJuOyAvKiBkb24ndCBoYXZlIHRvIGNvbW1pdCBhbiB1bmNoYW5nZWQgdHJlZSAqLworCisJLyogUHJlcGFyZSBjb21taXQgbWVzc2FnZSBhbmQgcmVmbG9nIG1lc3NhZ2UgKi8KKwlzdHJidWZfYWRkc3RyKCZidWYsIG1zZyk7CisJaWYgKGJ1Zi5idWZbYnVmLmxlbiAtIDFdICE9ICdcbicpCisJCXN0cmJ1Zl9hZGRjaCgmYnVmLCAnXG4nKTsgLyogTWFrZSBzdXJlIG1zZyBlbmRzIHdpdGggbmV3bGluZSAqLworCisJY3JlYXRlX25vdGVzX2NvbW1pdCh0LCBOVUxMLCAmYnVmLCBjb21taXRfc2hhMSk7CisJc3RyYnVmX2luc2VydCgmYnVmLCAwLCAibm90ZXM6ICIsIDcpOyAvKiBjb21taXQgbWVzc2FnZSBzdGFydHMgYXQgaW5kZXggNyAqLworCXVwZGF0ZV9yZWYoYnVmLmJ1ZiwgdC0+cmVmLCBjb21taXRfc2hhMSwgTlVMTCwgMCwgRElFX09OX0VSUik7CisKKwlzdHJidWZfcmVsZWFzZSgmYnVmKTsKK30KKworc3RhdGljIGNvbWJpbmVfbm90ZXNfZm4gcGFyc2VfY29tYmluZV9ub3Rlc19mbihjb25zdCBjaGFyICp2KQoreworCWlmICghc3RyY2FzZWNtcCh2LCAib3ZlcndyaXRlIikpCisJCXJldHVybiBjb21iaW5lX25vdGVzX292ZXJ3cml0ZTsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2LCAiaWdub3JlIikpCisJCXJldHVybiBjb21iaW5lX25vdGVzX2lnbm9yZTsKKwllbHNlIGlmICghc3RyY2FzZWNtcCh2LCAiY29uY2F0ZW5hdGUiKSkKKwkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfY29uY2F0ZW5hdGU7CisJZWxzZSBpZiAoIXN0cmNhc2VjbXAodiwgImNhdF9zb3J0X3VuaXEiKSkKKwkJcmV0dXJuIGNvbWJpbmVfbm90ZXNfY2F0X3NvcnRfdW5pcTsKKwllbHNlCisJCXJldHVybiBOVUxMOworfQorCitzdGF0aWMgaW50IG5vdGVzX3Jld3JpdGVfY29uZmlnKGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYsIHZvaWQgKmNiKQoreworCXN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYyA9IGNiOworCWlmICghcHJlZml4Y21wKGssICJub3Rlcy5yZXdyaXRlLiIpICYmICFzdHJjbXAoaysxNCwgYy0+Y21kKSkgeworCQljLT5lbmFibGVkID0gZ2l0X2NvbmZpZ19ib29sKGssIHYpOworCQlyZXR1cm4gMDsKKwl9IGVsc2UgaWYgKCFjLT5tb2RlX2Zyb21fZW52ICYmICFzdHJjbXAoaywgIm5vdGVzLnJld3JpdGVtb2RlIikpIHsKKwkJaWYgKCF2KQorCQkJY29uZmlnX2Vycm9yX25vbmJvb2woayk7CisJCWMtPmNvbWJpbmUgPSBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKHYpOworCQlpZiAoIWMtPmNvbWJpbmUpIHsKKwkJCWVycm9yKF8oIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIpLCB2KTsKKwkJCXJldHVybiAxOworCQl9CisJCXJldHVybiAwOworCX0gZWxzZSBpZiAoIWMtPnJlZnNfZnJvbV9lbnYgJiYgIXN0cmNtcChrLCAibm90ZXMucmV3cml0ZXJlZiIpKSB7CisJCS8qIG5vdGUgdGhhdCBhIHJlZnMvIHByZWZpeCBpcyBpbXBsaWVkIGluIHRoZQorCQkgKiB1bmRlcmx5aW5nIGZvcl9lYWNoX2dsb2JfcmVmICovCisJCWlmICghcHJlZml4Y21wKHYsICJyZWZzL25vdGVzLyIpKQorCQkJc3RyaW5nX2xpc3RfYWRkX3JlZnNfYnlfZ2xvYihjLT5yZWZzLCB2KTsKKwkJZWxzZQorCQkJd2FybmluZyhfKCJSZWZ1c2luZyB0byByZXdyaXRlIG5vdGVzIGluICVzIgorCQkJCSIgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIiksIHYpOworCQlyZXR1cm4gMDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworCitzdHJ1Y3Qgbm90ZXNfcmV3cml0ZV9jZmcgKmluaXRfY29weV9ub3Rlc19mb3JfcmV3cml0ZShjb25zdCBjaGFyICpjbWQpCit7CisJc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnICpjID0geG1hbGxvYyhzaXplb2Yoc3RydWN0IG5vdGVzX3Jld3JpdGVfY2ZnKSk7CisJY29uc3QgY2hhciAqcmV3cml0ZV9tb2RlX2VudiA9IGdldGVudihHSVRfTk9URVNfUkVXUklURV9NT0RFX0VOVklST05NRU5UKTsKKwljb25zdCBjaGFyICpyZXdyaXRlX3JlZnNfZW52ID0gZ2V0ZW52KEdJVF9OT1RFU19SRVdSSVRFX1JFRl9FTlZJUk9OTUVOVCk7CisJYy0+Y21kID0gY21kOworCWMtPmVuYWJsZWQgPSAxOworCWMtPmNvbWJpbmUgPSBjb21iaW5lX25vdGVzX2NvbmNhdGVuYXRlOworCWMtPnJlZnMgPSB4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3Qgc3RyaW5nX2xpc3QpKTsKKwljLT5yZWZzLT5zdHJkdXBfc3RyaW5ncyA9IDE7CisJYy0+cmVmc19mcm9tX2VudiA9IDA7CisJYy0+bW9kZV9mcm9tX2VudiA9IDA7CisJaWYgKHJld3JpdGVfbW9kZV9lbnYpIHsKKwkJYy0+bW9kZV9mcm9tX2VudiA9IDE7CisJCWMtPmNvbWJpbmUgPSBwYXJzZV9jb21iaW5lX25vdGVzX2ZuKHJld3JpdGVfbW9kZV9lbnYpOworCQlpZiAoIWMtPmNvbWJpbmUpCisJCQkvKiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQorCQkJICAgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlICovCisJCQllcnJvcihfKCJCYWQgJXMgdmFsdWU6ICclcyciKSwgR0lUX05PVEVTX1JFV1JJVEVfTU9ERV9FTlZJUk9OTUVOVCwKKwkJCQkJcmV3cml0ZV9tb2RlX2Vudik7CisJfQorCWlmIChyZXdyaXRlX3JlZnNfZW52KSB7CisJCWMtPnJlZnNfZnJvbV9lbnYgPSAxOworCQlzdHJpbmdfbGlzdF9hZGRfcmVmc19mcm9tX2NvbG9uX3NlcChjLT5yZWZzLCByZXdyaXRlX3JlZnNfZW52KTsKKwl9CisJZ2l0X2NvbmZpZyhub3Rlc19yZXdyaXRlX2NvbmZpZywgYyk7CisJaWYgKCFjLT5lbmFibGVkIHx8ICFjLT5yZWZzLT5ucikgeworCQlzdHJpbmdfbGlzdF9jbGVhcihjLT5yZWZzLCAwKTsKKwkJZnJlZShjLT5yZWZzKTsKKwkJZnJlZShjKTsKKwkJcmV0dXJuIE5VTEw7CisJfQorCWMtPnRyZWVzID0gbG9hZF9ub3Rlc190cmVlcyhjLT5yZWZzKTsKKwlzdHJpbmdfbGlzdF9jbGVhcihjLT5yZWZzLCAwKTsKKwlmcmVlKGMtPnJlZnMpOworCXJldHVybiBjOworfQorCitpbnQgY29weV9ub3RlX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYywKKwkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbV9vYmosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRvX29iaikKK3sKKwlpbnQgcmV0ID0gMDsKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBjLT50cmVlc1tpXTsgaSsrKQorCQlyZXQgPSBjb3B5X25vdGUoYy0+dHJlZXNbaV0sIGZyb21fb2JqLCB0b19vYmosIDEsIGMtPmNvbWJpbmUpIHx8IHJldDsKKwlyZXR1cm4gcmV0OworfQorCit2b2lkIGZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYywgY29uc3QgY2hhciAqbXNnKQoreworCWludCBpOworCWZvciAoaSA9IDA7IGMtPnRyZWVzW2ldOyBpKyspIHsKKwkJY29tbWl0X25vdGVzKGMtPnRyZWVzW2ldLCBtc2cpOworCQlmcmVlX25vdGVzKGMtPnRyZWVzW2ldKTsKKwl9CisJZnJlZShjLT50cmVlcyk7CisJZnJlZShjKTsKK30KZGlmZiAtLWdpdCBhL25vdGVzLXV0aWxzLmggYi9ub3Rlcy11dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0Y2IxYmYKLS0tIC9kZXYvbnVsbAorKysgYi9ub3Rlcy11dGlscy5oCkBAIC0wLDAgKzEsMzcgQEAKKyNpZm5kZWYgTk9URVNfVVRJTFNfSAorI2RlZmluZSBOT1RFU19VVElMU19ICisKKyNpbmNsdWRlICJub3Rlcy5oIgorCisvKgorICogQ3JlYXRlIG5ldyBub3RlcyBjb21taXQgZnJvbSB0aGUgZ2l2ZW4gbm90ZXMgdHJlZQorICoKKyAqIFByb3BlcnRpZXMgb2YgdGhlIGNyZWF0ZWQgY29tbWl0OgorICogLSB0cmVlOiB0aGUgcmVzdWx0IG9mIGNvbnZlcnRpbmcgdCB0byBhIHRyZWUgb2JqZWN0IHdpdGggd3JpdGVfbm90ZXNfdHJlZSgpLgorICogLSBwYXJlbnRzOiB0aGUgZ2l2ZW4gcGFyZW50cyBPUiAoaWYgTlVMTCkgdGhlIGNvbW1pdCByZWZlcmVuY2VkIGJ5IHQtPnJlZi4KKyAqIC0gYXV0aG9yL2NvbW1pdHRlcjogdGhlIGRlZmF1bHQgZGV0ZXJtaW5lZCBieSBjb21tbWl0X3RyZWUoKS4KKyAqIC0gY29tbWl0IG1lc3NhZ2U6IG1zZworICoKKyAqIFRoZSByZXN1bHRpbmcgY29tbWl0IFNIQTEgaXMgc3RvcmVkIGluIHJlc3VsdF9zaGExLgorICovCit2b2lkIGNyZWF0ZV9ub3Rlc19jb21taXQoc3RydWN0IG5vdGVzX3RyZWUgKnQsIHN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cywKKwkJCSBjb25zdCBzdHJ1Y3Qgc3RyYnVmICptc2csIHVuc2lnbmVkIGNoYXIgKnJlc3VsdF9zaGExKTsKKwordm9pZCBjb21taXRfbm90ZXMoc3RydWN0IG5vdGVzX3RyZWUgKnQsIGNvbnN0IGNoYXIgKm1zZyk7CisKK3N0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyB7CisJc3RydWN0IG5vdGVzX3RyZWUgKip0cmVlczsKKwljb25zdCBjaGFyICpjbWQ7CisJaW50IGVuYWJsZWQ7CisJY29tYmluZV9ub3Rlc19mbiBjb21iaW5lOworCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVmczsKKwlpbnQgcmVmc19mcm9tX2VudjsKKwlpbnQgbW9kZV9mcm9tX2VudjsKK307CisKK3N0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqaW5pdF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKGNvbnN0IGNoYXIgKmNtZCk7CitpbnQgY29weV9ub3RlX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYywKKwkJCSAgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbV9vYmosIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnRvX29iaik7Cit2b2lkIGZpbmlzaF9jb3B5X25vdGVzX2Zvcl9yZXdyaXRlKHN0cnVjdCBub3Rlc19yZXdyaXRlX2NmZyAqYywgY29uc3QgY2hhciAqbXNnKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9ub3Rlcy5jIGIvbm90ZXMuYwppbmRleCBmNjNmZDU3Li5iNjljMGI4IDEwMDY0NAotLS0gYS9ub3Rlcy5jCisrKyBiL25vdGVzLmMKQEAgLTkxOCwxNyArOTE4LDIxIEBACiAJcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGludCBzdHJpbmdfbGlzdF9hZGRfb25lX3JlZihjb25zdCBjaGFyICpwYXRoLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorc3RhdGljIGludCBzdHJpbmdfbGlzdF9hZGRfb25lX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAogCQkJCSAgIGludCBmbGFnLCB2b2lkICpjYikKIHsKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlZnMgPSBjYjsKLQlpZiAoIXVuc29ydGVkX3N0cmluZ19saXN0X2hhc19zdHJpbmcocmVmcywgcGF0aCkpCi0JCXN0cmluZ19saXN0X2FwcGVuZChyZWZzLCBwYXRoKTsKKwlpZiAoIXVuc29ydGVkX3N0cmluZ19saXN0X2hhc19zdHJpbmcocmVmcywgcmVmbmFtZSkpCisJCXN0cmluZ19saXN0X2FwcGVuZChyZWZzLCByZWZuYW1lKTsKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIFRoZSBsaXN0IGFyZ3VtZW50IG11c3QgaGF2ZSBzdHJkdXBfc3RyaW5ncyBzZXQgb24gaXQuCisgKi8KIHZvaWQgc3RyaW5nX2xpc3RfYWRkX3JlZnNfYnlfZ2xvYihzdHJ1Y3Qgc3RyaW5nX2xpc3QgKmxpc3QsIGNvbnN0IGNoYXIgKmdsb2IpCiB7CisJYXNzZXJ0KGxpc3QtPnN0cmR1cF9zdHJpbmdzKTsKIAlpZiAoaGFzX2dsb2Jfc3BlY2lhbHMoZ2xvYikpIHsKIAkJZm9yX2VhY2hfZ2xvYl9yZWYoc3RyaW5nX2xpc3RfYWRkX29uZV9yZWYsIGdsb2IsIGxpc3QpOwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9ub3Rlcy5oIGIvbm90ZXMuaAppbmRleCAzMzI0YzQ4Li4yYTNmOTIzIDEwMDY0NAotLS0gYS9ub3Rlcy5oCisrKyBiL25vdGVzLmgKQEAgLTc3LDcgKzc3LDcgQEAKICAqIHZhcmlhYmxlIGlzIHVzZWQsIGFuZCBpZiB0aGF0IGlzIG1pc3NpbmcsIHRoZSBkZWZhdWx0IG5vdGVzIHJlZiBpcyB1c2VkCiAgKiAoInJlZnMvbm90ZXMvY29tbWl0cyIpLgogICoKLSAqIElmIHlvdSBuZWVkIHRvIHJlLWludGlhbGl6ZSBhIG5vdGVzX3RyZWUgc3RydWN0dXJlIChlLmcuIHdoZW4gc3dpdGNoaW5nIGZyb20KKyAqIElmIHlvdSBuZWVkIHRvIHJlLWluaXRpYWxpemUgYSBub3Rlc190cmVlIHN0cnVjdHVyZSAoZS5nLiB3aGVuIHN3aXRjaGluZyBmcm9tCiAgKiBvbmUgbm90ZXMgcmVmIHRvIGFub3RoZXIpLCB5b3UgbXVzdCBmaXJzdCBkZS1pbml0aWFsaXplIHRoZSBub3Rlc190cmVlCiAgKiBzdHJ1Y3R1cmUgYnkgY2FsbGluZyBmcmVlX25vdGVzKHN0cnVjdCBub3Rlc190cmVlICopLgogICoKZGlmZiAtLWdpdCBhL29iamVjdC5jIGIvb2JqZWN0LmMKaW5kZXggMjA3MDNmNS4uZDhhNGIxZiAxMDA2NDQKLS0tIGEvb2JqZWN0LmMKKysrIGIvb2JqZWN0LmMKQEAgLTcxLDEzICs3MSwxMyBAQAogCiBzdHJ1Y3Qgb2JqZWN0ICpsb29rdXBfb2JqZWN0KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7Ci0JdW5zaWduZWQgaW50IGk7CisJdW5zaWduZWQgaW50IGksIGZpcnN0OwogCXN0cnVjdCBvYmplY3QgKm9iajsKIAogCWlmICghb2JqX2hhc2gpCiAJCXJldHVybiBOVUxMOwogCi0JaSA9IGhhc2h0YWJsZV9pbmRleChzaGExKTsKKwlmaXJzdCA9IGkgPSBoYXNodGFibGVfaW5kZXgoc2hhMSk7CiAJd2hpbGUgKChvYmogPSBvYmpfaGFzaFtpXSkgIT0gTlVMTCkgewogCQlpZiAoIWhhc2hjbXAoc2hhMSwgb2JqLT5zaGExKSkKIAkJCWJyZWFrOwpAQCAtODUsNiArODUsMTYgQEAKIAkJaWYgKGkgPT0gb2JqX2hhc2hfc2l6ZSkKIAkJCWkgPSAwOwogCX0KKwlpZiAob2JqICYmIGkgIT0gZmlyc3QpIHsKKwkJLyoKKwkJICogTW92ZSBvYmplY3QgdG8gd2hlcmUgd2Ugc3RhcnRlZCB0byBsb29rIGZvciBpdCBzbworCQkgKiB0aGF0IHdlIGRvIG5vdCBuZWVkIHRvIHdhbGsgdGhlIGhhc2ggdGFibGUgdGhlIG5leHQKKwkJICogdGltZSB3ZSBsb29rIGZvciBpdC4KKwkJICovCisJCXN0cnVjdCBvYmplY3QgKnRtcCA9IG9ial9oYXNoW2ldOworCQlvYmpfaGFzaFtpXSA9IG9ial9oYXNoW2ZpcnN0XTsKKwkJb2JqX2hhc2hbZmlyc3RdID0gdG1wOworCX0KIAlyZXR1cm4gb2JqOwogfQogCkBAIC0xMzUsNyArMTQ1LDcgQEAKIHN0cnVjdCBvYmplY3QgKnBhcnNlX29iamVjdF9idWZmZXIoY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgZW51bSBvYmplY3RfdHlwZSB0eXBlLCB1bnNpZ25lZCBsb25nIHNpemUsIHZvaWQgKmJ1ZmZlciwgaW50ICplYXRlbl9wKQogewogCXN0cnVjdCBvYmplY3QgKm9iajsKLQlpbnQgZWF0ZW4gPSAwOworCSplYXRlbl9wID0gMDsKIAogCW9iaiA9IE5VTEw7CiAJaWYgKHR5cGUgPT0gT0JKX0JMT0IpIHsKQEAgLTE1NCw3ICsxNjQsNyBAQAogCQkJaWYgKCF0cmVlLT5vYmplY3QucGFyc2VkKSB7CiAJCQkJaWYgKHBhcnNlX3RyZWVfYnVmZmVyKHRyZWUsIGJ1ZmZlciwgc2l6ZSkpCiAJCQkJCXJldHVybiBOVUxMOwotCQkJCWVhdGVuID0gMTsKKwkJCQkqZWF0ZW5fcCA9IDE7CiAJCQl9CiAJCX0KIAl9IGVsc2UgaWYgKHR5cGUgPT0gT0JKX0NPTU1JVCkgewpAQCAtMTY0LDcgKzE3NCw3IEBACiAJCQkJcmV0dXJuIE5VTEw7CiAJCQlpZiAoIWNvbW1pdC0+YnVmZmVyKSB7CiAJCQkJY29tbWl0LT5idWZmZXIgPSBidWZmZXI7Ci0JCQkJZWF0ZW4gPSAxOworCQkJCSplYXRlbl9wID0gMTsKIAkJCX0KIAkJCW9iaiA9ICZjb21taXQtPm9iamVjdDsKIAkJfQpAQCAtMTgxLDcgKzE5MSw2IEBACiAJfQogCWlmIChvYmogJiYgb2JqLT50eXBlID09IE9CSl9OT05FKQogCQlvYmotPnR5cGUgPSB0eXBlOwotCSplYXRlbl9wID0gZWF0ZW47CiAJcmV0dXJuIG9iajsKIH0KIApAQCAtMjYwLDExICsyNjksMTggQEAKIAlhZGRfb2JqZWN0X2FycmF5X3dpdGhfbW9kZShvYmosIG5hbWUsIGFycmF5LCBTX0lGSU5WQUxJRCk7CiB9CiAKKy8qCisgKiBBIHplcm8tbGVuZ3RoIHN0cmluZyB0byB3aGljaCBvYmplY3RfYXJyYXlfZW50cnk6Om5hbWUgY2FuIGJlCisgKiBpbml0aWFsaXplZCB3aXRob3V0IHJlcXVpcmluZyBhIG1hbGxvYy9mcmVlLgorICovCitzdGF0aWMgY2hhciBvYmplY3RfYXJyYXlfc2xvcGJ1ZlsxXTsKKwogdm9pZCBhZGRfb2JqZWN0X2FycmF5X3dpdGhfbW9kZShzdHJ1Y3Qgb2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5LCB1bnNpZ25lZCBtb2RlKQogewogCXVuc2lnbmVkIG5yID0gYXJyYXktPm5yOwogCXVuc2lnbmVkIGFsbG9jID0gYXJyYXktPmFsbG9jOwogCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKm9iamVjdHMgPSBhcnJheS0+b2JqZWN0czsKKwlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICplbnRyeTsKIAogCWlmIChuciA+PSBhbGxvYykgewogCQlhbGxvYyA9IChhbGxvYyArIDMyKSAqIDI7CkBAIC0yNzIsMjggKzI4OCw2NyBAQAogCQlhcnJheS0+YWxsb2MgPSBhbGxvYzsKIAkJYXJyYXktPm9iamVjdHMgPSBvYmplY3RzOwogCX0KLQlvYmplY3RzW25yXS5pdGVtID0gb2JqOwotCW9iamVjdHNbbnJdLm5hbWUgPSBuYW1lOwotCW9iamVjdHNbbnJdLm1vZGUgPSBtb2RlOworCWVudHJ5ID0gJm9iamVjdHNbbnJdOworCWVudHJ5LT5pdGVtID0gb2JqOworCWlmICghbmFtZSkKKwkJZW50cnktPm5hbWUgPSBOVUxMOworCWVsc2UgaWYgKCEqbmFtZSkKKwkJLyogVXNlIG91ciBvd24gZW1wdHkgc3RyaW5nIGluc3RlYWQgb2YgYWxsb2NhdGluZyBvbmU6ICovCisJCWVudHJ5LT5uYW1lID0gb2JqZWN0X2FycmF5X3Nsb3BidWY7CisJZWxzZQorCQllbnRyeS0+bmFtZSA9IHhzdHJkdXAobmFtZSk7CisJZW50cnktPm1vZGUgPSBtb2RlOwogCWFycmF5LT5uciA9ICsrbnI7CiB9CiAKK3ZvaWQgb2JqZWN0X2FycmF5X2ZpbHRlcihzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphcnJheSwKKwkJCSBvYmplY3RfYXJyYXlfZWFjaF9mdW5jX3Qgd2FudCwgdm9pZCAqY2JfZGF0YSkKK3sKKwl1bnNpZ25lZCBuciA9IGFycmF5LT5uciwgc3JjLCBkc3Q7CisJc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqb2JqZWN0cyA9IGFycmF5LT5vYmplY3RzOworCisJZm9yIChzcmMgPSBkc3QgPSAwOyBzcmMgPCBucjsgc3JjKyspIHsKKwkJaWYgKHdhbnQoJm9iamVjdHNbc3JjXSwgY2JfZGF0YSkpIHsKKwkJCWlmIChzcmMgIT0gZHN0KQorCQkJCW9iamVjdHNbZHN0XSA9IG9iamVjdHNbc3JjXTsKKwkJCWRzdCsrOworCQl9IGVsc2UgeworCQkJaWYgKG9iamVjdHNbc3JjXS5uYW1lICE9IG9iamVjdF9hcnJheV9zbG9wYnVmKQorCQkJCWZyZWUob2JqZWN0c1tzcmNdLm5hbWUpOworCQl9CisJfQorCWFycmF5LT5uciA9IGRzdDsKK30KKworLyoKKyAqIFJldHVybiB0cnVlIGlmZiBhcnJheSBhbHJlYWR5IGNvbnRhaW5zIGFuIGVudHJ5IHdpdGggbmFtZS4KKyAqLworc3RhdGljIGludCBjb250YWluc19uYW1lKHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5LCBjb25zdCBjaGFyICpuYW1lKQoreworCXVuc2lnbmVkIG5yID0gYXJyYXktPm5yLCBpOworCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKm9iamVjdCA9IGFycmF5LT5vYmplY3RzOworCisJZm9yIChpID0gMDsgaSA8IG5yOyBpKyssIG9iamVjdCsrKQorCQlpZiAoIXN0cmNtcChvYmplY3QtPm5hbWUsIG5hbWUpKQorCQkJcmV0dXJuIDE7CisJcmV0dXJuIDA7Cit9CisKIHZvaWQgb2JqZWN0X2FycmF5X3JlbW92ZV9kdXBsaWNhdGVzKHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5KQogewotCXVuc2lnbmVkIGludCByZWYsIHNyYywgZHN0OworCXVuc2lnbmVkIG5yID0gYXJyYXktPm5yLCBzcmM7CiAJc3RydWN0IG9iamVjdF9hcnJheV9lbnRyeSAqb2JqZWN0cyA9IGFycmF5LT5vYmplY3RzOwogCi0JZm9yIChyZWYgPSAwOyByZWYgKyAxIDwgYXJyYXktPm5yOyByZWYrKykgewotCQlmb3IgKHNyYyA9IHJlZiArIDEsIGRzdCA9IHNyYzsKLQkJICAgICBzcmMgPCBhcnJheS0+bnI7Ci0JCSAgICAgc3JjKyspIHsKLQkJCWlmICghc3RyY21wKG9iamVjdHNbcmVmXS5uYW1lLCBvYmplY3RzW3NyY10ubmFtZSkpCi0JCQkJY29udGludWU7Ci0JCQlpZiAoc3JjICE9IGRzdCkKLQkJCQlvYmplY3RzW2RzdF0gPSBvYmplY3RzW3NyY107Ci0JCQlkc3QrKzsKKwlhcnJheS0+bnIgPSAwOworCWZvciAoc3JjID0gMDsgc3JjIDwgbnI7IHNyYysrKSB7CisJCWlmICghY29udGFpbnNfbmFtZShhcnJheSwgb2JqZWN0c1tzcmNdLm5hbWUpKSB7CisJCQlpZiAoc3JjICE9IGFycmF5LT5ucikKKwkJCQlvYmplY3RzW2FycmF5LT5ucl0gPSBvYmplY3RzW3NyY107CisJCQlhcnJheS0+bnIrKzsKKwkJfSBlbHNlIHsKKwkJCWlmIChvYmplY3RzW3NyY10ubmFtZSAhPSBvYmplY3RfYXJyYXlfc2xvcGJ1ZikKKwkJCQlmcmVlKG9iamVjdHNbc3JjXS5uYW1lKTsKIAkJfQotCQlhcnJheS0+bnIgPSBkc3Q7CiAJfQogfQogCmRpZmYgLS1naXQgYS9vYmplY3QuaCBiL29iamVjdC5oCmluZGV4IDk3ZDM4NGIuLjJmZjY4YzUgMTAwNjQ0Ci0tLSBhL29iamVjdC5oCisrKyBiL29iamVjdC5oCkBAIC0xMSw3ICsxMSwxMyBAQAogCXVuc2lnbmVkIGludCBhbGxvYzsKIAlzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5IHsKIAkJc3RydWN0IG9iamVjdCAqaXRlbTsKLQkJY29uc3QgY2hhciAqbmFtZTsKKwkJLyoKKwkJICogbmFtZSBvciBOVUxMLiAgSWYgbm9uLU5VTEwsIHRoZSBtZW1vcnkgcG9pbnRlZCB0bworCQkgKiBpcyBvd25lZCBieSB0aGlzIG9iamVjdCAqZXhjZXB0KiBpZiBpdCBwb2ludHMgYXQKKwkJICogb2JqZWN0X2FycmF5X3Nsb3BidWYsIHdoaWNoIGlzIGEgc3RhdGljIGNvcHkgb2YgdGhlCisJCSAqIGVtcHR5IHN0cmluZy4KKwkJICovCisJCWNoYXIgKm5hbWU7CiAJCXVuc2lnbmVkIG1vZGU7CiAJfSAqb2JqZWN0czsKIH07CkBAIC04NSw3ICs5MSwyMiBAQAogLyogT2JqZWN0IGFycmF5IGhhbmRsaW5nIC4uICovCiB2b2lkIGFkZF9vYmplY3RfYXJyYXkoc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgb2JqZWN0X2FycmF5ICphcnJheSk7CiB2b2lkIGFkZF9vYmplY3RfYXJyYXlfd2l0aF9tb2RlKHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamVjdF9hcnJheSAqYXJyYXksIHVuc2lnbmVkIG1vZGUpOwotdm9pZCBvYmplY3RfYXJyYXlfcmVtb3ZlX2R1cGxpY2F0ZXMoc3RydWN0IG9iamVjdF9hcnJheSAqKTsKKwordHlwZWRlZiBpbnQgKCpvYmplY3RfYXJyYXlfZWFjaF9mdW5jX3QpKHN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKiwgdm9pZCAqKTsKKworLyoKKyAqIEFwcGx5IHdhbnQgdG8gZWFjaCBlbnRyeSBpbiBhcnJheSwgcmV0YWluaW5nIG9ubHkgdGhlIGVudHJpZXMgZm9yCisgKiB3aGljaCB0aGUgZnVuY3Rpb24gcmV0dXJucyB0cnVlLiAgUHJlc2VydmUgdGhlIG9yZGVyIG9mIHRoZSBlbnRyaWVzCisgKiB0aGF0IGFyZSByZXRhaW5lZC4KKyAqLwordm9pZCBvYmplY3RfYXJyYXlfZmlsdGVyKHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5LAorCQkJIG9iamVjdF9hcnJheV9lYWNoX2Z1bmNfdCB3YW50LCB2b2lkICpjYl9kYXRhKTsKKworLyoKKyAqIFJlbW92ZSBmcm9tIGFycmF5IGFsbCBidXQgdGhlIGZpcnN0IGVudHJ5IHdpdGggYSBnaXZlbiBuYW1lLgorICogV2FybmluZzogdGhpcyBmdW5jdGlvbiB1c2VzIGFuIE8oTl4yKSBhbGdvcml0aG0uCisgKi8KK3ZvaWQgb2JqZWN0X2FycmF5X3JlbW92ZV9kdXBsaWNhdGVzKHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5KTsKIAogdm9pZCBjbGVhcl9vYmplY3RfZmxhZ3ModW5zaWduZWQgZmxhZ3MpOwogCmRpZmYgLS1naXQgYS9wYWNrLXJlZnMuYyBiL3BhY2stcmVmcy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDYxZjcxLi4wMDAwMDAwCi0tLSBhL3BhY2stcmVmcy5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ4ICswLDAgQEAKLSNpbmNsdWRlICJjYWNoZS5oIgotI2luY2x1ZGUgInJlZnMuaCIKLSNpbmNsdWRlICJ0YWcuaCIKLSNpbmNsdWRlICJwYWNrLXJlZnMuaCIKLQotc3RydWN0IHJlZl90b19wcnVuZSB7Ci0Jc3RydWN0IHJlZl90b19wcnVuZSAqbmV4dDsKLQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOwotCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsKLX07Ci0KLXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSB7Ci0JdW5zaWduZWQgaW50IGZsYWdzOwotCXN0cnVjdCByZWZfdG9fcHJ1bmUgKnJlZl90b19wcnVuZTsKLQlGSUxFICpyZWZzX2ZpbGU7Ci19OwotCi1zdGF0aWMgaW50IGRvX25vdF9wcnVuZShpbnQgZmxhZ3MpCi17Ci0JLyogSWYgaXQgaXMgYWxyZWFkeSBwYWNrZWQgb3IgaWYgaXQgaXMgYSBzeW1yZWYsCi0JICogZG8gbm90IHBydW5lIGl0LgotCSAqLwotCXJldHVybiAoZmxhZ3MgJiAoUkVGX0lTU1lNUkVGfFJFRl9JU1BBQ0tFRCkpOwotfQotCi1zdGF0aWMgaW50IGhhbmRsZV9vbmVfcmVmKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsCi0JCQkgIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKLXsKLQlzdHJ1Y3QgcGFja19yZWZzX2NiX2RhdGEgKmNiID0gY2JfZGF0YTsKLQlzdHJ1Y3Qgb2JqZWN0ICpvOwotCWludCBpc190YWdfcmVmOwotCi0JLyogRG8gbm90IHBhY2sgdGhlIHN5bWJvbGljIHJlZnMgKi8KLQlpZiAoKGZsYWdzICYgUkVGX0lTU1lNUkVGKSkKLQkJcmV0dXJuIDA7Ci0JaXNfdGFnX3JlZiA9ICFwcmVmaXhjbXAocGF0aCwgInJlZnMvdGFncy8iKTsKLQotCS8qIEFMV0FZUyBwYWNrIHJlZnMgdGhhdCB3ZXJlIGFscmVhZHkgcGFja2VkIG9yIGFyZSB0YWdzICovCi0JaWYgKCEoY2ItPmZsYWdzICYgUEFDS19SRUZTX0FMTCkgJiYgIWlzX3RhZ19yZWYgJiYgIShmbGFncyAmIFJFRl9JU1BBQ0tFRCkpCi0JCXJldHVybiAwOwotCi0JZnByaW50ZihjYi0+cmVmc19maWxlLCAiJXMgJXNcbiIsIHNoYTFfdG9faGV4KHNoYTEpLCBwYXRoKTsKLQotCW8gPSBwYXJzZV9vYmplY3Rfb3JfZGllKHNoYTEsIHBhdGgpOwotCWlmIChvLT50eXBlID09IE9CSl9UQUcpIHsKLQkJbyA9IGRlcmVmX3RhZyhvLCBwYXRoLCAwKTsKLQkJaWYgKG8pCi0JCQlmcHJpbnRmKGNiLT5yZWZzX2ZpbGUsICJeJXNcbiIsCi0JCQkJc2hhMV90b19oZXgoby0+c2hhMSkpOwotCX0KLQotCWlmICgoY2ItPmZsYWdzICYgUEFDS19SRUZTX1BSVU5FKSAmJiAhZG9fbm90X3BydW5lKGZsYWdzKSkgewotCQlpbnQgbmFtZWxlbiA9IHN0cmxlbihwYXRoKSArIDE7Ci0JCXN0cnVjdCByZWZfdG9fcHJ1bmUgKm4gPSB4Y2FsbG9jKDEsIHNpemVvZigqbikgKyBuYW1lbGVuKTsKLQkJaGFzaGNweShuLT5zaGExLCBzaGExKTsKLQkJc3RyY3B5KG4tPm5hbWUsIHBhdGgpOwotCQluLT5uZXh0ID0gY2ItPnJlZl90b19wcnVuZTsKLQkJY2ItPnJlZl90b19wcnVuZSA9IG47Ci0JfQotCXJldHVybiAwOwotfQotCi0vKgotICogUmVtb3ZlIGVtcHR5IHBhcmVudHMsIGJ1dCBzcGFyZSByZWZzLyBhbmQgaW1tZWRpYXRlIHN1YmRpcnMuCi0gKiBOb3RlOiBtdW5nZXMgKm5hbWUuCi0gKi8KLXN0YXRpYyB2b2lkIHRyeV9yZW1vdmVfZW1wdHlfcGFyZW50cyhjaGFyICpuYW1lKQotewotCWNoYXIgKnAsICpxOwotCWludCBpOwotCXAgPSBuYW1lOwotCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsgLyogcmVmcy97aGVhZHMsdGFncywuLi59LyAqLwotCQl3aGlsZSAoKnAgJiYgKnAgIT0gJy8nKQotCQkJcCsrOwotCQkvKiB0b2xlcmF0ZSBkdXBsaWNhdGUgc2xhc2hlczsgc2VlIGNoZWNrX3JlZm5hbWVfZm9ybWF0KCkgKi8KLQkJd2hpbGUgKCpwID09ICcvJykKLQkJCXArKzsKLQl9Ci0JZm9yIChxID0gcDsgKnE7IHErKykKLQkJOwotCXdoaWxlICgxKSB7Ci0JCXdoaWxlIChxID4gcCAmJiAqcSAhPSAnLycpCi0JCQlxLS07Ci0JCXdoaWxlIChxID4gcCAmJiAqKHEtMSkgPT0gJy8nKQotCQkJcS0tOwotCQlpZiAocSA9PSBwKQotCQkJYnJlYWs7Ci0JCSpxID0gJ1wwJzsKLQkJaWYgKHJtZGlyKGdpdF9wYXRoKCIlcyIsIG5hbWUpKSkKLQkJCWJyZWFrOwotCX0KLX0KLQotLyogbWFrZSBzdXJlIG5vYm9keSB0b3VjaGVkIHRoZSByZWYsIGFuZCB1bmxpbmsgKi8KLXN0YXRpYyB2b2lkIHBydW5lX3JlZihzdHJ1Y3QgcmVmX3RvX3BydW5lICpyKQotewotCXN0cnVjdCByZWZfbG9jayAqbG9jayA9IGxvY2tfcmVmX3NoYTEoci0+bmFtZSArIDUsIHItPnNoYTEpOwotCi0JaWYgKGxvY2spIHsKLQkJdW5saW5rX29yX3dhcm4oZ2l0X3BhdGgoIiVzIiwgci0+bmFtZSkpOwotCQl1bmxvY2tfcmVmKGxvY2spOwotCQl0cnlfcmVtb3ZlX2VtcHR5X3BhcmVudHMoci0+bmFtZSk7Ci0JfQotfQotCi1zdGF0aWMgdm9pZCBwcnVuZV9yZWZzKHN0cnVjdCByZWZfdG9fcHJ1bmUgKnIpCi17Ci0Jd2hpbGUgKHIpIHsKLQkJcHJ1bmVfcmVmKHIpOwotCQlyID0gci0+bmV4dDsKLQl9Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgbG9ja19maWxlIHBhY2tlZDsKLQotaW50IHBhY2tfcmVmcyh1bnNpZ25lZCBpbnQgZmxhZ3MpCi17Ci0JaW50IGZkOwotCXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSBjYmRhdGE7Ci0KLQltZW1zZXQoJmNiZGF0YSwgMCwgc2l6ZW9mKGNiZGF0YSkpOwotCWNiZGF0YS5mbGFncyA9IGZsYWdzOwotCi0JZmQgPSBob2xkX2xvY2tfZmlsZV9mb3JfdXBkYXRlKCZwYWNrZWQsIGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLAotCQkJCSAgICAgICBMT0NLX0RJRV9PTl9FUlJPUik7Ci0JY2JkYXRhLnJlZnNfZmlsZSA9IGZkb3BlbihmZCwgInciKTsKLQlpZiAoIWNiZGF0YS5yZWZzX2ZpbGUpCi0JCWRpZV9lcnJubygidW5hYmxlIHRvIGNyZWF0ZSByZWYtcGFjayBmaWxlIHN0cnVjdHVyZSIpOwotCi0JLyogcGVyaGFwcyBvdGhlciB0cmFpdHMgbGF0ZXIgYXMgd2VsbCAqLwotCWZwcmludGYoY2JkYXRhLnJlZnNfZmlsZSwgIiMgcGFjay1yZWZzIHdpdGg6IHBlZWxlZCBmdWxseS1wZWVsZWQgXG4iKTsKLQotCWZvcl9lYWNoX3JlZihoYW5kbGVfb25lX3JlZiwgJmNiZGF0YSk7Ci0JaWYgKGZlcnJvcihjYmRhdGEucmVmc19maWxlKSkKLQkJZGllKCJmYWlsZWQgdG8gd3JpdGUgcmVmLXBhY2sgZmlsZSIpOwotCWlmIChmZmx1c2goY2JkYXRhLnJlZnNfZmlsZSkgfHwgZnN5bmMoZmQpIHx8IGZjbG9zZShjYmRhdGEucmVmc19maWxlKSkKLQkJZGllX2Vycm5vKCJmYWlsZWQgdG8gd3JpdGUgcmVmLXBhY2sgZmlsZSIpOwotCS8qCi0JICogU2luY2UgdGhlIGxvY2sgZmlsZSB3YXMgZmRvcGVuKCknZWQgYW5kIHRoZW4gZmNsb3NlKCknZWQgYWJvdmUsCi0JICogYXNzaWduIC0xIHRvIHRoZSBsb2NrIGZpbGUgZGVzY3JpcHRvciBzbyB0aGF0IGNvbW1pdF9sb2NrX2ZpbGUoKQotCSAqIHdvbid0IHRyeSB0byBjbG9zZSgpIGl0LgotCSAqLwotCXBhY2tlZC5mZCA9IC0xOwotCWlmIChjb21taXRfbG9ja19maWxlKCZwYWNrZWQpIDwgMCkKLQkJZGllX2Vycm5vKCJ1bmFibGUgdG8gb3ZlcndyaXRlIG9sZCByZWYtcGFjayBmaWxlIik7Ci0JcHJ1bmVfcmVmcyhjYmRhdGEucmVmX3RvX3BydW5lKTsKLQlyZXR1cm4gMDsKLX0KZGlmZiAtLWdpdCBhL3BhY2stcmVmcy5oIGIvcGFjay1yZWZzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxOGFjZmIuLjAwMDAwMDAKLS0tIGEvcGFjay1yZWZzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi0jaWZuZGVmIFBBQ0tfUkVGU19ICi0jZGVmaW5lIFBBQ0tfUkVGU19ICi0KLS8qCi0gKiBGbGFncyBmb3IgY29udHJvbGxpbmcgYmVoYXZpb3VyIG9mIHBhY2tfcmVmcygpCi0gKiBQQUNLX1JFRlNfUFJVTkU6IFBydW5lIGxvb3NlIHJlZnMgYWZ0ZXIgcGFja2luZwotICogUEFDS19SRUZTX0FMTDogICBQYWNrIF9hbGxfIHJlZnMsIG5vdCBqdXN0IHRhZ3MgYW5kIGFscmVhZHkgcGFja2VkIHJlZnMKLSAqLwotI2RlZmluZSBQQUNLX1JFRlNfUFJVTkUgMHgwMDAxCi0jZGVmaW5lIFBBQ0tfUkVGU19BTEwgICAweDAwMDIKLQotLyoKLSAqIFdyaXRlIGEgcGFja2VkLXJlZnMgZmlsZSBmb3IgdGhlIGN1cnJlbnQgcmVwb3NpdG9yeS4KLSAqIGZsYWdzOiBDb21iaW5hdGlvbiBvZiB0aGUgYWJvdmUgUEFDS19SRUZTXyogZmxhZ3MuCi0gKi8KLWludCBwYWNrX3JlZnModW5zaWduZWQgaW50IGZsYWdzKTsKLQotI2VuZGlmIC8qIFBBQ0tfUkVGU19IICovCmRpZmYgLS1naXQgYS9wYWNrLXJldmluZGV4LmMgYi9wYWNrLXJldmluZGV4LmMKaW5kZXggNzdhMDQ2NS4uYjRkMmIzNSAxMDA2NDQKLS0tIGEvcGFjay1yZXZpbmRleC5jCisrKyBiL3BhY2stcmV2aW5kZXguYwpAQCAtNTksMTEgKzU5LDEwMSBAQAogCS8qIHJldmluZGV4IGVsZW1lbnRzIGFyZSBsYXppbHkgaW5pdGlhbGl6ZWQgKi8KIH0KIAotc3RhdGljIGludCBjbXBfb2Zmc2V0KGNvbnN0IHZvaWQgKmFfLCBjb25zdCB2b2lkICpiXykKKy8qCisgKiBUaGlzIGlzIGEgbGVhc3Qtc2lnbmlmaWNhbnQtZGlnaXQgcmFkaXggc29ydC4KKyAqCisgKiBJdCBzb3J0cyBlYWNoIG9mIHRoZSAibiIgaXRlbXMgaW4gImVudHJpZXMiIGJ5IGl0cyBvZmZzZXQgZmllbGQuIFRoZSAibWF4IgorICogcGFyYW1ldGVyIG11c3QgYmUgYXQgbGVhc3QgYXMgbGFyZ2UgYXMgdGhlIGxhcmdlc3Qgb2Zmc2V0IGluIHRoZSBhcnJheSwKKyAqIGFuZCBsZXRzIHVzIHF1aXQgdGhlIHNvcnQgZWFybHkuCisgKi8KK3N0YXRpYyB2b2lkIHNvcnRfcmV2aW5kZXgoc3RydWN0IHJldmluZGV4X2VudHJ5ICplbnRyaWVzLCB1bnNpZ25lZCBuLCBvZmZfdCBtYXgpCiB7Ci0JY29uc3Qgc3RydWN0IHJldmluZGV4X2VudHJ5ICphID0gYV87Ci0JY29uc3Qgc3RydWN0IHJldmluZGV4X2VudHJ5ICpiID0gYl87Ci0JcmV0dXJuIChhLT5vZmZzZXQgPCBiLT5vZmZzZXQpID8gLTEgOiAoYS0+b2Zmc2V0ID4gYi0+b2Zmc2V0KSA/IDEgOiAwOworCS8qCisJICogV2UgdXNlIGEgImRpZ2l0IiBzaXplIG9mIDE2IGJpdHMuIFRoYXQga2VlcHMgb3VyIG1lbW9yeQorCSAqIHVzYWdlIHJlYXNvbmFibGUsIGFuZCB3ZSBjYW4gZ2VuZXJhbGx5IChmb3IgYSA0RyBvciBzbWFsbGVyCisJICogcGFja2ZpbGUpIHF1aXQgYWZ0ZXIgdHdvIHJvdW5kcyBvZiByYWRpeC1zb3J0aW5nLgorCSAqLworI2RlZmluZSBESUdJVF9TSVpFICgxNikKKyNkZWZpbmUgQlVDS0VUUyAoMSA8PCBESUdJVF9TSVpFKQorCS8qCisJICogV2Ugd2FudCB0byBrbm93IHRoZSBidWNrZXQgdGhhdCBhW2ldIHdpbGwgZ28gaW50byB3aGVuIHdlIGFyZSB1c2luZworCSAqIHRoZSBkaWdpdCB0aGF0IGlzIE4gYml0cyBmcm9tIHRoZSAobGVhc3Qgc2lnbmlmaWNhbnQpIGVuZC4KKwkgKi8KKyNkZWZpbmUgQlVDS0VUX0ZPUihhLCBpLCBiaXRzKSAoKChhKVsoaSldLm9mZnNldCA+PiAoYml0cykpICYgKEJVQ0tFVFMtMSkpCisKKwkvKgorCSAqIFdlIG5lZWQgTyhuKSB0ZW1wb3Jhcnkgc3RvcmFnZS4gUmF0aGVyIHRoYW4gZG8gYW4gZXh0cmEgY29weSBvZiB0aGUKKwkgKiBwYXJ0aWFsIHJlc3VsdHMgaW50byAiZW50cmllcyIsIHdlIHNvcnQgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0aGUKKwkgKiByZWFsIGFycmF5IGFuZCB0ZW1wb3Jhcnkgc3RvcmFnZS4gSW4gZWFjaCBpdGVyYXRpb24gb2YgdGhlIGxvb3AsIHdlCisJICoga2VlcCB0cmFjayBvZiB0aGVtIHdpdGggYWxpYXMgcG9pbnRlcnMsIGFsd2F5cyBzb3J0aW5nIGZyb20gImZyb20iCisJICogdG8gInRvIi4KKwkgKi8KKwlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnRtcCA9IHhtYWxsb2MobiAqIHNpemVvZigqdG1wKSk7CisJc3RydWN0IHJldmluZGV4X2VudHJ5ICpmcm9tID0gZW50cmllcywgKnRvID0gdG1wOworCWludCBiaXRzOworCXVuc2lnbmVkICpwb3MgPSB4bWFsbG9jKEJVQ0tFVFMgKiBzaXplb2YoKnBvcykpOworCisJLyoKKwkgKiBJZiAobWF4ID4+IGJpdHMpIGlzIHplcm8sIHRoZW4gd2Uga25vdyB0aGF0IHRoZSByYWRpeCBkaWdpdCB3ZSBhcmUKKwkgKiBvbiAoYW5kIGFueSBoaWdoZXIpIHdpbGwgYmUgemVybyBmb3IgYWxsIGVudHJpZXMsIGFuZCBvdXIgbG9vcCB3aWxsCisJICogYmUgYSBuby1vcCwgYXMgZXZlcnlib2R5IGxhbmRzIGluIHRoZSBzYW1lIHplcm8tdGggYnVja2V0LgorCSAqLworCWZvciAoYml0cyA9IDA7IG1heCA+PiBiaXRzOyBiaXRzICs9IERJR0lUX1NJWkUpIHsKKwkJc3RydWN0IHJldmluZGV4X2VudHJ5ICpzd2FwOworCQl1bnNpZ25lZCBpOworCisJCW1lbXNldChwb3MsIDAsIEJVQ0tFVFMgKiBzaXplb2YoKnBvcykpOworCisJCS8qCisJCSAqIFdlIHdhbnQgcG9zW2ldIHRvIHN0b3JlIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBlbGVtZW50IHRoYXQKKwkJICogd2lsbCBnbyBpbiBidWNrZXQgImkiIChhY3R1YWxseSBvbmUgcGFzdCB0aGUgbGFzdCBlbGVtZW50KS4KKwkJICogVG8gZG8gdGhpcywgd2UgZmlyc3QgY291bnQgdGhlIGl0ZW1zIHRoYXQgd2lsbCBnbyBpbiBlYWNoCisJCSAqIGJ1Y2tldCwgd2hpY2ggZ2l2ZXMgdXMgYSByZWxhdGl2ZSBvZmZzZXQgZnJvbSB0aGUgbGFzdAorCQkgKiBidWNrZXQuIFdlIGNhbiB0aGVuIGN1bXVsYXRpdmVseSBhZGQgdGhlIGluZGV4IGZyb20gdGhlCisJCSAqIHByZXZpb3VzIGJ1Y2tldCB0byBnZXQgdGhlIHRydWUgaW5kZXguCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQorCQkJcG9zW0JVQ0tFVF9GT1IoZnJvbSwgaSwgYml0cyldKys7CisJCWZvciAoaSA9IDE7IGkgPCBCVUNLRVRTOyBpKyspCisJCQlwb3NbaV0gKz0gcG9zW2ktMV07CisKKwkJLyoKKwkJICogTm93IHdlIGNhbiBkcm9wIHRoZSBlbGVtZW50cyBpbnRvIHRoZWlyIGNvcnJlY3QgYnVja2V0cyAoaW4KKwkJICogb3VyIHRlbXBvcmFyeSBhcnJheSkuICBXZSBpdGVyYXRlIHRoZSBwb3MgY291bnRlciBiYWNrd2FyZHMKKwkJICogdG8gYXZvaWQgdXNpbmcgYW4gZXh0cmEgaW5kZXggdG8gY291bnQgdXAuIEFuZCBzaW5jZSB3ZSBhcmUKKwkJICogZ29pbmcgYmFja3dhcmRzIHRoZXJlLCB3ZSBtdXN0IGFsc28gZ28gYmFja3dhcmRzIHRocm91Z2ggdGhlCisJCSAqIGFycmF5IGl0c2VsZiwgdG8ga2VlcCB0aGUgc29ydCBzdGFibGUuCisJCSAqCisJCSAqIE5vdGUgdGhhdCB3ZSB1c2UgYW4gdW5zaWduZWQgaXRlcmF0b3IgdG8gbWFrZSBzdXJlIHdlIGNhbgorCQkgKiBoYW5kbGUgMl4zMi0xIG9iamVjdHMsIGV2ZW4gb24gYSAzMi1iaXQgc3lzdGVtLiBCdXQgdGhpcworCQkgKiBtZWFucyB3ZSBjYW5ub3QgdXNlIHRoZSBtb3JlIG9idmlvdXMgImkgPj0gMCIgbG9vcCBjb25kaXRpb24KKwkJICogZm9yIGNvdW50aW5nIGJhY2t3YXJkcywgYW5kIG11c3QgaW5zdGVhZCBjaGVjayBmb3IKKwkJICogd3JhcC1hcm91bmQgd2l0aCBVSU5UX01BWC4KKwkJICovCisJCWZvciAoaSA9IG4gLSAxOyBpICE9IFVJTlRfTUFYOyBpLS0pCisJCQl0b1stLXBvc1tCVUNLRVRfRk9SKGZyb20sIGksIGJpdHMpXV0gPSBmcm9tW2ldOworCisJCS8qCisJCSAqIE5vdyAidG8iIGNvbnRhaW5zIHRoZSBtb3N0IHNvcnRlZCBsaXN0LCBzbyB3ZSBzd2FwICJmcm9tIiBhbmQKKwkJICogInRvIiBmb3IgdGhlIG5leHQgaXRlcmF0aW9uLgorCQkgKi8KKwkJc3dhcCA9IGZyb207CisJCWZyb20gPSB0bzsKKwkJdG8gPSBzd2FwOworCX0KKworCS8qCisJICogSWYgd2UgZW5kZWQgd2l0aCBvdXIgZGF0YSBpbiB0aGUgb3JpZ2luYWwgYXJyYXksIGdyZWF0LiBJZiBub3QsCisJICogd2UgaGF2ZSB0byBtb3ZlIGl0IGJhY2sgZnJvbSB0aGUgdGVtcG9yYXJ5IHN0b3JhZ2UuCisJICovCisJaWYgKGZyb20gIT0gZW50cmllcykKKwkJbWVtY3B5KGVudHJpZXMsIHRtcCwgbiAqIHNpemVvZigqZW50cmllcykpOworCWZyZWUodG1wKTsKKwlmcmVlKHBvcyk7CisKKyN1bmRlZiBCVUNLRVRfRk9SCisjdW5kZWYgQlVDS0VUUworI3VuZGVmIERJR0lUX1NJWkUKIH0KIAogLyoKQEAgLTcyLDggKzE2Miw4IEBACiBzdGF0aWMgdm9pZCBjcmVhdGVfcGFja19yZXZpbmRleChzdHJ1Y3QgcGFja19yZXZpbmRleCAqcml4KQogewogCXN0cnVjdCBwYWNrZWRfZ2l0ICpwID0gcml4LT5wOwotCWludCBudW1fZW50ID0gcC0+bnVtX29iamVjdHM7Ci0JaW50IGk7CisJdW5zaWduZWQgbnVtX2VudCA9IHAtPm51bV9vYmplY3RzOworCXVuc2lnbmVkIGk7CiAJY29uc3QgY2hhciAqaW5kZXggPSBwLT5pbmRleF9kYXRhOwogCiAJcml4LT5yZXZpbmRleCA9IHhtYWxsb2Moc2l6ZW9mKCpyaXgtPnJldmluZGV4KSAqIChudW1fZW50ICsgMSkpOwpAQCAtMTA4LDEzICsxOTgsMTMgQEAKIAkgKi8KIAlyaXgtPnJldmluZGV4W251bV9lbnRdLm9mZnNldCA9IHAtPnBhY2tfc2l6ZSAtIDIwOwogCXJpeC0+cmV2aW5kZXhbbnVtX2VudF0ubnIgPSAtMTsKLQlxc29ydChyaXgtPnJldmluZGV4LCBudW1fZW50LCBzaXplb2YoKnJpeC0+cmV2aW5kZXgpLCBjbXBfb2Zmc2V0KTsKKwlzb3J0X3JldmluZGV4KHJpeC0+cmV2aW5kZXgsIG51bV9lbnQsIHAtPnBhY2tfc2l6ZSk7CiB9CiAKIHN0cnVjdCByZXZpbmRleF9lbnRyeSAqZmluZF9wYWNrX3JldmluZGV4KHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBvZnMpCiB7CiAJaW50IG51bTsKLQlpbnQgbG8sIGhpOworCXVuc2lnbmVkIGxvLCBoaTsKIAlzdHJ1Y3QgcGFja19yZXZpbmRleCAqcml4OwogCXN0cnVjdCByZXZpbmRleF9lbnRyeSAqcmV2aW5kZXg7CiAKQEAgLTEzMiw3ICsyMjIsNyBAQAogCWxvID0gMDsKIAloaSA9IHAtPm51bV9vYmplY3RzICsgMTsKIAlkbyB7Ci0JCWludCBtaSA9IChsbyArIGhpKSAvIDI7CisJCXVuc2lnbmVkIG1pID0gbG8gKyAoaGkgLSBsbykgLyAyOwogCQlpZiAocmV2aW5kZXhbbWldLm9mZnNldCA9PSBvZnMpIHsKIAkJCXJldHVybiByZXZpbmRleCArIG1pOwogCQl9IGVsc2UgaWYgKG9mcyA8IHJldmluZGV4W21pXS5vZmZzZXQpCmRpZmYgLS1naXQgYS9wYXJzZS1vcHRpb25zLWNiLmMgYi9wYXJzZS1vcHRpb25zLWNiLmMKaW5kZXggMGRlNWZiMS4uYmU4YzQxMyAxMDA2NDQKLS0tIGEvcGFyc2Utb3B0aW9ucy1jYi5jCisrKyBiL3BhcnNlLW9wdGlvbnMtY2IuYwpAQCAtMzMsNiArMzMsMTIgQEAKIAlyZXR1cm4gMDsKIH0KIAoraW50IHBhcnNlX29wdF9leHBpcnlfZGF0ZV9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKmFyZywKKwkJCSAgICAgaW50IHVuc2V0KQoreworCXJldHVybiBwYXJzZV9leHBpcnlfZGF0ZShhcmcsICh1bnNpZ25lZCBsb25nICopb3B0LT52YWx1ZSk7Cit9CisKIGludCBwYXJzZV9vcHRfY29sb3JfZmxhZ19jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHQsIGNvbnN0IGNoYXIgKmFyZywKIAkJCSAgICBpbnQgdW5zZXQpCiB7CmRpZmYgLS1naXQgYS9wYXJzZS1vcHRpb25zLmggYi9wYXJzZS1vcHRpb25zLmgKaW5kZXggMWM4YmQ4ZC4uYzM3OGI3NSAxMDA2NDQKLS0tIGEvcGFyc2Utb3B0aW9ucy5oCisrKyBiL3BhcnNlLW9wdGlvbnMuaApAQCAtMTQwLDYgKzE0MCw5IEBACiAjZGVmaW5lIE9QVF9EQVRFKHMsIGwsIHYsIGgpIFwKIAl7IE9QVElPTl9DQUxMQkFDSywgKHMpLCAobCksICh2KSwgTl8oInRpbWUiKSwoaCksIDAsCVwKIAkgIHBhcnNlX29wdF9hcHByb3hpZGF0ZV9jYiB9CisjZGVmaW5lIE9QVF9FWFBJUllfREFURShzLCBsLCB2LCBoKSBcCisJeyBPUFRJT05fQ0FMTEJBQ0ssIChzKSwgKGwpLCAodiksIE5fKCJleHBpcnkgZGF0ZSIpLChoKSwgMCwJXAorCSAgcGFyc2Vfb3B0X2V4cGlyeV9kYXRlX2NiIH0KICNkZWZpbmUgT1BUX0NBTExCQUNLKHMsIGwsIHYsIGEsIGgsIGYpIFwKIAl7IE9QVElPTl9DQUxMQkFDSywgKHMpLCAobCksICh2KSwgKGEpLCAoaCksIDAsIChmKSB9CiAjZGVmaW5lIE9QVF9OVU1CRVJfQ0FMTEJBQ0sodiwgaCwgZikgXApAQCAtMjE5LDYgKzIyMiw3IEBACiAvKi0tLS0tIHNvbWUgb2Z0ZW4gdXNlZCBvcHRpb25zIC0tLS0tKi8KIGV4dGVybiBpbnQgcGFyc2Vfb3B0X2FiYnJldl9jYihjb25zdCBzdHJ1Y3Qgb3B0aW9uICosIGNvbnN0IGNoYXIgKiwgaW50KTsKIGV4dGVybiBpbnQgcGFyc2Vfb3B0X2FwcHJveGlkYXRlX2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpOworZXh0ZXJuIGludCBwYXJzZV9vcHRfZXhwaXJ5X2RhdGVfY2IoY29uc3Qgc3RydWN0IG9wdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CiBleHRlcm4gaW50IHBhcnNlX29wdF9jb2xvcl9mbGFnX2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpOwogZXh0ZXJuIGludCBwYXJzZV9vcHRfdmVyYm9zaXR5X2NiKGNvbnN0IHN0cnVjdCBvcHRpb24gKiwgY29uc3QgY2hhciAqLCBpbnQpOwogZXh0ZXJuIGludCBwYXJzZV9vcHRfd2l0aF9jb21taXQoY29uc3Qgc3RydWN0IG9wdGlvbiAqLCBjb25zdCBjaGFyICosIGludCk7CmRpZmYgLS1naXQgYS9wYXRoLmMgYi9wYXRoLmMKaW5kZXggMDRmZjE0OC4uM2QyNDRkMyAxMDA2NDQKLS0tIGEvcGF0aC5jCisrKyBiL3BhdGguYwpAQCAtNSwxMyArNSw3IEBACiAjaW5jbHVkZSAic3RyYnVmLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKIAotI2lmbmRlZiBnZXRfc3RfbW9kZV9iaXRzCi0vKgotICogVGhlIHJlcGxhY2VtZW50IGxzdGF0KDIpIHdlIHVzZSBvbiBDeWd3aW4gaXMgaW5jb21wbGV0ZSBhbmQKLSAqIG1heSByZXR1cm4gd3JvbmcgcGVybWlzc2lvbiBiaXRzLiBNb3N0IG9mIHRoZSB0aW1lIHdlIGRvIG5vdCBjYXJlLAotICogYnV0IHRoZSBjYWxsc2l0ZXMgb2YgdGhpcyB3cmFwcGVyIGRvIGNhcmUuCi0gKi8KLWludCBnZXRfc3RfbW9kZV9iaXRzKGNvbnN0IGNoYXIgKnBhdGgsIGludCAqbW9kZSkKK3N0YXRpYyBpbnQgZ2V0X3N0X21vZGVfYml0cyhjb25zdCBjaGFyICpwYXRoLCBpbnQgKm1vZGUpCiB7CiAJc3RydWN0IHN0YXQgc3Q7CiAJaWYgKGxzdGF0KHBhdGgsICZzdCkgPCAwKQpAQCAtMTksNyArMTMsNiBAQAogCSptb2RlID0gc3Quc3RfbW9kZTsKIAlyZXR1cm4gMDsKIH0KLSNlbmRpZgogCiBzdGF0aWMgY2hhciBiYWRfcGF0aFtdID0gIi9iYWQtcGF0aC8iOwogCkBAIC00NDEsNDIgKzQzNCwxMDAgQEAKIAlyZXR1cm4gMDsKIH0KIAotY29uc3QgY2hhciAqcmVsYXRpdmVfcGF0aChjb25zdCBjaGFyICphYnMsIGNvbnN0IGNoYXIgKmJhc2UpCisvKgorICogR2l2ZSBwYXRoIGFzIHJlbGF0aXZlIHRvIHByZWZpeC4KKyAqCisgKiBUaGUgc3RyYnVmIG1heSBvciBtYXkgbm90IGJlIHVzZWQsIHNvIGRvIG5vdCBhc3N1bWUgaXQgY29udGFpbnMgdGhlCisgKiByZXR1cm5lZCBwYXRoLgorICovCitjb25zdCBjaGFyICpyZWxhdGl2ZV9wYXRoKGNvbnN0IGNoYXIgKmluLCBjb25zdCBjaGFyICpwcmVmaXgsCisJCQkgIHN0cnVjdCBzdHJidWYgKnNiKQogewotCXN0YXRpYyBjaGFyIGJ1ZltQQVRIX01BWCArIDFdOworCWludCBpbl9sZW4gPSBpbiA/IHN0cmxlbihpbikgOiAwOworCWludCBwcmVmaXhfbGVuID0gcHJlZml4ID8gc3RybGVuKHByZWZpeCkgOiAwOworCWludCBpbl9vZmYgPSAwOworCWludCBwcmVmaXhfb2ZmID0gMDsKIAlpbnQgaSA9IDAsIGogPSAwOwogCi0JaWYgKCFiYXNlIHx8ICFiYXNlWzBdKQotCQlyZXR1cm4gYWJzOwotCXdoaWxlIChiYXNlW2ldKSB7Ci0JCWlmIChpc19kaXJfc2VwKGJhc2VbaV0pKSB7Ci0JCQlpZiAoIWlzX2Rpcl9zZXAoYWJzW2pdKSkKLQkJCQlyZXR1cm4gYWJzOwotCQkJd2hpbGUgKGlzX2Rpcl9zZXAoYmFzZVtpXSkpCisJaWYgKCFpbl9sZW4pCisJCXJldHVybiAiLi8iOworCWVsc2UgaWYgKCFwcmVmaXhfbGVuKQorCQlyZXR1cm4gaW47CisKKwl3aGlsZSAoaSA8IHByZWZpeF9sZW4gJiYgaiA8IGluX2xlbiAmJiBwcmVmaXhbaV0gPT0gaW5bal0pIHsKKwkJaWYgKGlzX2Rpcl9zZXAocHJlZml4W2ldKSkgeworCQkJd2hpbGUgKGlzX2Rpcl9zZXAocHJlZml4W2ldKSkKIAkJCQlpKys7Ci0JCQl3aGlsZSAoaXNfZGlyX3NlcChhYnNbal0pKQorCQkJd2hpbGUgKGlzX2Rpcl9zZXAoaW5bal0pKQogCQkJCWorKzsKKwkJCXByZWZpeF9vZmYgPSBpOworCQkJaW5fb2ZmID0gajsKKwkJfSBlbHNlIHsKKwkJCWkrKzsKKwkJCWorKzsKKwkJfQorCX0KKworCWlmICgKKwkgICAgLyogInByZWZpeCIgc2VlbXMgbGlrZSBwcmVmaXggb2YgImluIiAqLworCSAgICBpID49IHByZWZpeF9sZW4gJiYKKwkgICAgLyoKKwkgICAgICogYnV0ICIvZm9vIiBpcyBub3QgYSBwcmVmaXggb2YgIi9mb29iYXIiCisJICAgICAqIChpLmUuIHByZWZpeCBub3QgZW5kIHdpdGggJy8nKQorCSAgICAgKi8KKwkgICAgcHJlZml4X29mZiA8IHByZWZpeF9sZW4pIHsKKwkJaWYgKGogPj0gaW5fbGVuKSB7CisJCQkvKiBpbj0iL2EvYiIsIHByZWZpeD0iL2EvYiIgKi8KKwkJCWluX29mZiA9IGluX2xlbjsKKwkJfSBlbHNlIGlmIChpc19kaXJfc2VwKGluW2pdKSkgeworCQkJLyogaW49Ii9hL2IvYyIsIHByZWZpeD0iL2EvYiIgKi8KKwkJCXdoaWxlIChpc19kaXJfc2VwKGluW2pdKSkKKwkJCQlqKys7CisJCQlpbl9vZmYgPSBqOworCQl9IGVsc2UgeworCQkJLyogaW49Ii9hL2JiYi9jIiwgcHJlZml4PSIvYS9iIiAqLworCQkJaSA9IHByZWZpeF9vZmY7CisJCX0KKwl9IGVsc2UgaWYgKAorCQkgICAvKiAiaW4iIGlzIHNob3J0IHRoYW4gInByZWZpeCIgKi8KKwkJICAgaiA+PSBpbl9sZW4gJiYKKwkJICAgLyogImluIiBub3QgZW5kIHdpdGggJy8nICovCisJCSAgIGluX29mZiA8IGluX2xlbikgeworCQlpZiAoaXNfZGlyX3NlcChwcmVmaXhbaV0pKSB7CisJCQkvKiBpbj0iL2EvYiIsIHByZWZpeD0iL2EvYi9jLyIgKi8KKwkJCXdoaWxlIChpc19kaXJfc2VwKHByZWZpeFtpXSkpCisJCQkJaSsrOworCQkJaW5fb2ZmID0gaW5fbGVuOworCQl9CisJfQorCWluICs9IGluX29mZjsKKwlpbl9sZW4gLT0gaW5fb2ZmOworCisJaWYgKGkgPj0gcHJlZml4X2xlbikgeworCQlpZiAoIWluX2xlbikKKwkJCXJldHVybiAiLi8iOworCQllbHNlCisJCQlyZXR1cm4gaW47CisJfQorCisJc3RyYnVmX3Jlc2V0KHNiKTsKKwlzdHJidWZfZ3JvdyhzYiwgaW5fbGVuKTsKKworCXdoaWxlIChpIDwgcHJlZml4X2xlbikgeworCQlpZiAoaXNfZGlyX3NlcChwcmVmaXhbaV0pKSB7CisJCQlzdHJidWZfYWRkc3RyKHNiLCAiLi4vIik7CisJCQl3aGlsZSAoaXNfZGlyX3NlcChwcmVmaXhbaV0pKQorCQkJCWkrKzsKIAkJCWNvbnRpbnVlOwotCQl9IGVsc2UgaWYgKGFic1tqXSAhPSBiYXNlW2ldKSB7Ci0JCQlyZXR1cm4gYWJzOwogCQl9CiAJCWkrKzsKLQkJaisrOwogCX0KLQlpZiAoCi0JICAgIC8qICIvZm9vIiBpcyBhIHByZWZpeCBvZiAiL2ZvbyIgKi8KLQkgICAgYWJzW2pdICYmCi0JICAgIC8qICIvZm9vIiBpcyBub3QgYSBwcmVmaXggb2YgIi9mb29iYXIiICovCi0JICAgICFpc19kaXJfc2VwKGJhc2VbaS0xXSkgJiYgIWlzX2Rpcl9zZXAoYWJzW2pdKQotCSAgICkKLQkJcmV0dXJuIGFiczsKLQl3aGlsZSAoaXNfZGlyX3NlcChhYnNbal0pKQotCQlqKys7Ci0JaWYgKCFhYnNbal0pCi0JCXN0cmNweShidWYsICIuIik7Ci0JZWxzZQotCQlzdHJjcHkoYnVmLCBhYnMgKyBqKTsKLQlyZXR1cm4gYnVmOworCWlmICghaXNfZGlyX3NlcChwcmVmaXhbcHJlZml4X2xlbiAtIDFdKSkKKwkJc3RyYnVmX2FkZHN0cihzYiwgIi4uLyIpOworCisJc3RyYnVmX2FkZHN0cihzYiwgaW4pOworCisJcmV0dXJuIHNiLT5idWY7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9wYXRoc3BlYy5jIGIvcGF0aHNwZWMuYwppbmRleCAyODRmMzk3Li42ZWEwODY3IDEwMDY0NAotLS0gYS9wYXRoc3BlYy5jCisrKyBiL3BhdGhzcGVjLmMKQEAgLTMyLDcgKzMyLDcgQEAKIAlpZiAoIW51bV91bm1hdGNoZWQpCiAJCXJldHVybjsKIAlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAkJbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgc2Vlbik7CiAJfQogfQpAQCAtNjcsNyArNjcsNyBAQAogewogCWludCBpLCBwYXRoX2xlbiA9IHN0cmxlbihwYXRoKTsKIAlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOyBpKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAkJaWYgKFNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKSkgewogCQkJaW50IGNlX2xlbiA9IGNlX25hbWVsZW4oY2UpOwogCQkJaWYgKHBhdGhfbGVuIDw9IGNlX2xlbiB8fCBwYXRoW2NlX2xlbl0gIT0gJy8nIHx8CmRpZmYgLS1naXQgYS9wby9naXQucG90IGIvcG8vZ2l0LnBvdAppbmRleCA0YTlkNGVmLi5hYWNmOThjIDEwMDY0NAotLS0gYS9wby9naXQucG90CisrKyBiL3BvL2dpdC5wb3QKQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IFBBQ0tBR0UgVkVSU0lPTlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBHaXQgTWFpbGluZyBMaXN0IDxnaXRAdmdlci5rZXJuZWwub3JnPlxuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEzLTA0LTMwIDA4OjI1KzA4MDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMy0wNy0yNiAxNDoxOSswODAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogWUVBUi1NTy1EQSBITzpNSStaT05FXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBGVUxMIE5BTUUgPEVNQUlMQEFERFJFU1M+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogTEFOR1VBR0UgPExMQGxpLm9yZz5cbiIKQEAgLTE4LDcgKzE4LDcgQEAKICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiAiUGx1cmFsLUZvcm1zOiBucGx1cmFscz1JTlRFR0VSOyBwbHVyYWw9RVhQUkVTU0lPTjtcbiIKIAotIzogYWR2aWNlLmM6NTMKKyM6IGFkdmljZS5jOjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImhpbnQ6ICUuKnNcbiIKIG1zZ3N0ciAiIgpAQCAtMjcsNyArMjcsNyBAQAogIy4gKiBNZXNzYWdlIHVzZWQgYm90aCB3aGVuICdnaXQgY29tbWl0JyBmYWlscyBhbmQgd2hlbgogIy4gKiBvdGhlciBjb21tYW5kcyBkb2luZyBhIG1lcmdlIGRvLgogIy4KLSM6IGFkdmljZS5jOjgzCisjOiBhZHZpY2UuYzo4NwogbXNnaWQgIiIKICJGaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLFxuIgogImFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nIGFzXG4iCkBAIC02MCw3ICs2MCw3IEBACiBtc2dpZCAiYXJjaGl2ZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExMjYKKyM6IGFyY2hpdmUuYzozMjQgYnVpbHRpbi9sb2cuYzoxMTczCiBtc2dpZCAicHJlZml4IgogbXNnc3RyICIiCiAKQEAgLTY4LDExICs2OCwxMSBAQAogbXNnaWQgInByZXBlbmQgcHJlZml4IHRvIGVhY2ggcGF0aG5hbWUgaW4gdGhlIGFyY2hpdmUiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo4OCBidWlsdGluL2JsYW1lLmM6MjM3MQotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzIgYnVpbHRpbi9jb25maWcuYzo1NSBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY1Ci0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY3IGJ1aWx0aW4vZ3JlcC5jOjcxNSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTAgYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25vdGVzLmM6NTM2Ci0jOiBidWlsdGluL25vdGVzLmM6NjkzIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA3IHBhcnNlLW9wdGlvbnMuaDoxNDkKKyM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6ODggYnVpbHRpbi9ibGFtZS5jOjIyOTIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkzIGJ1aWx0aW4vY29uZmlnLmM6NTYgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NSBidWlsdGluL2dyZXAuYzo3MTQgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk2IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTkgYnVpbHRpbi9ub3Rlcy5jOjQwOAorIzogYnVpbHRpbi9ub3Rlcy5jOjU2NSBidWlsdGluL3JlYWQtdHJlZS5jOjEwOCBwYXJzZS1vcHRpb25zLmg6MTUyCiBtc2dpZCAiZmlsZSIKIG1zZ3N0ciAiIgogCkBAIC0xMDQsNyArMTA0LDcgQEAKIG1zZ2lkICJsaXN0IHN1cHBvcnRlZCBhcmNoaXZlIGZvcm1hdHMiCiBtc2dzdHIgIiIKIAotIzogYXJjaGl2ZS5jOjM0NSBidWlsdGluL2FyY2hpdmUuYzo5MCBidWlsdGluL2Nsb25lLmM6ODYKKyM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg1CiBtc2dpZCAicmVwbyIKIG1zZ3N0ciAiIgogCkBAIC0xMTIsNyArMTEyLDcgQEAKIG1zZ2lkICJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIKIG1zZ3N0ciAiIgogCi0jOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyIGJ1aWx0aW4vbm90ZXMuYzo2MTUKKyM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTIgYnVpbHRpbi9ub3Rlcy5jOjQ4NwogbXNnaWQgImNvbW1hbmQiCiBtc2dzdHIgIiIKIApAQCAtMTk1LDE3ICsxOTUsMTcgQEAKIG1zZ2lkICJDYW5ub3QgZm9yY2UgdXBkYXRlIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnJhbmNoLmM6MjAxCisjOiBicmFuY2guYzoyMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHNldHVwIHRyYWNraW5nIGluZm9ybWF0aW9uOyBzdGFydGluZyBwb2ludCAnJXMnIGlzIG5vdCBhIGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnJhbmNoLmM6MjAzCisjOiBicmFuY2guYzoyMTgKICMsIGMtZm9ybWF0CiBtc2dpZCAidGhlIHJlcXVlc3RlZCB1cHN0cmVhbSBicmFuY2ggJyVzJyBkb2VzIG5vdCBleGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBicmFuY2guYzoyMDUKKyM6IGJyYW5jaC5jOjIyMAogbXNnaWQgIiIKICJcbiIKICJJZiB5b3UgYXJlIHBsYW5uaW5nIG9uIGJhc2luZyB5b3VyIHdvcmsgb24gYW4gdXBzdHJlYW1cbiIKQEAgLTIxNywyNiArMjE3LDI2IEBACiAiXCJnaXQgcHVzaCAtdVwiIHRvIHNldCB0aGUgdXBzdHJlYW0gY29uZmlnIGFzIHlvdSBwdXNoLiIKIG1zZ3N0ciAiIgogCi0jOiBicmFuY2guYzoyNTAKKyM6IGJyYW5jaC5jOjI2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZTogJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogYnJhbmNoLmM6MjcwCisjOiBicmFuY2guYzoyODUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQW1iaWd1b3VzIG9iamVjdCBuYW1lOiAnJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBicmFuY2guYzoyNzUKKyM6IGJyYW5jaC5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBicmFuY2ggcG9pbnQ6ICclcycuIgogbXNnc3RyICIiCiAKLSM6IGJyYW5jaC5jOjI4MQorIzogYnJhbmNoLmM6Mjk2CiBtc2dpZCAiRmFpbGVkIHRvIGxvY2sgcmVmIGZvciB1cGRhdGUiCiBtc2dzdHIgIiIKIAotIzogYnJhbmNoLmM6Mjk5CisjOiBicmFuY2guYzozMTQKIG1zZ2lkICJGYWlsZWQgdG8gd3JpdGUgcmVmIgogbXNnc3RyICIiCiAKQEAgLTI1MCw3ICsyNTAsNyBAQAogbXNnaWQgInVucmVjb2duaXplZCBoZWFkZXI6ICVzJXMgKCVkKSIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzo4OSBidWlsdGluL2NvbW1pdC5jOjY3NgorIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2ODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gJyVzJyIKIG1zZ3N0ciAiIgpAQCAtMjU5LDkgKzI1OSw5IEBACiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCiBtc2dzdHIgIiIKIAotIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCi0jOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKKyM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo2NjEgc2VxdWVuY2VyLmM6MTExMSBidWlsdGluL2xvZy5jOjMzMQorIzogYnVpbHRpbi9sb2cuYzo4MDEgYnVpbHRpbi9sb2cuYzoxMzk5IGJ1aWx0aW4vbG9nLmM6MTYyNSBidWlsdGluL21lcmdlLmM6MzY0CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTU2CiBtc2dpZCAicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiCiBtc2dzdHIgIiIKIApAQCAtMjg3LDcgKzI4Nyw3IEBACiBtc2dpZCAicmV2LWxpc3QgZGllZCIKIG1zZ3N0ciAiIgogCi0jOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKKyM6IGJ1bmRsZS5jOjMwMCBidWlsdGluL2xvZy5jOjEzMTAgYnVpbHRpbi9zaG9ydGxvZy5jOjI1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzIgogbXNnc3RyICIiCkBAIC0zMTgsMTIgKzMxOCwxMiBAQAogbXNnaWQgImluZGV4LXBhY2sgZGllZCIKIG1zZ3N0ciAiIgogCi0jOiBjb21taXQuYzo1MAorIzogY29tbWl0LmM6NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHBhcnNlICVzIgogbXNnc3RyICIiCiAKLSM6IGNvbW1pdC5jOjUyCisjOiBjb21taXQuYzo1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAlcyBpcyBub3QgYSBjb21taXQhIgogbXNnc3RyICIiCkBAIC0zMzIsMTYgKzMzMiwxNiBAQAogbXNnaWQgIm1lbW9yeSBleGhhdXN0ZWQiCiBtc2dzdHIgIiIKIAotIzogY29ubmVjdGVkLmM6MzkKKyM6IGNvbm5lY3RlZC5jOjYwCiBtc2dpZCAiQ291bGQgbm90IHJ1biAnZ2l0IHJldi1saXN0JyIKIG1zZ3N0ciAiIgogCi0jOiBjb25uZWN0ZWQuYzo0OAorIzogY29ubmVjdGVkLmM6ODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHdyaXRlIHRvIHJldi1saXN0OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBjb25uZWN0ZWQuYzo1NgorIzogY29ubmVjdGVkLmM6ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNsb3NlIHJldi1saXN0J3Mgc3RkaW46ICVzIgogbXNnc3RyICIiCkBAIC00MzUsMTQgKzQzNSwxNCBAQAogIiVzIgogbXNnc3RyICIiCiAKLSM6IGRpZmYuYzozNDgxCisjOiBkaWZmLmM6MzQ4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgogIiVzIgogbXNnc3RyICIiCiAKLSM6IGRpZmYuYzozNDk1CisjOiBkaWZmLmM6MzUwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgLS1zdWJtb2R1bGUgb3B0aW9uIHBhcmFtZXRlcjogJyVzJyIKIG1zZ3N0ciAiIgpAQCAtNDg0LDQ4ICs0ODQsNDggQEAKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzoyMTIKKyM6IGhlbHAuYzoyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzoyMTkKKyM6IGhlbHAuYzoyMjAKIG1zZ2lkICJnaXQgY29tbWFuZHMgYXZhaWxhYmxlIGZyb20gZWxzZXdoZXJlIG9uIHlvdXIgJFBBVEgiCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjIzNQorIzogaGVscC5jOjIzNgogbXNnaWQgIlRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZ2l0IGNvbW1hbmRzIGFyZToiCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjI5MgorIzogaGVscC5jOjI5MwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJyBhcHBlYXJzIHRvIGJlIGEgZ2l0IGNvbW1hbmQsIGJ1dCB3ZSB3ZXJlIG5vdFxuIgogImFibGUgdG8gZXhlY3V0ZSBpdC4gTWF5YmUgZ2l0LSVzIGlzIGJyb2tlbj8iCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM0OQorIzogaGVscC5jOjM1MAogbXNnaWQgIlVoIG9oLiBZb3VyIHN5c3RlbSByZXBvcnRzIG5vIEdpdCBjb21tYW5kcyBhdCBhbGwuIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzozNzEKKyM6IGhlbHAuYzozNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldBUk5JTkc6IFlvdSBjYWxsZWQgYSBHaXQgY29tbWFuZCBuYW1lZCAnJXMnLCB3aGljaCBkb2VzIG5vdCBleGlzdC5cbiIKICJDb250aW51aW5nIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgeW91IG1lYW50ICclcyciCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM3NgorIzogaGVscC5jOjM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCiBtc2dzdHIgIiIKIAotIzogaGVscC5jOjM4MworIzogaGVscC5jOjM4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQ6ICclcycgaXMgbm90IGEgZ2l0IGNvbW1hbmQuIFNlZSAnZ2l0IC0taGVscCcuIgogbXNnc3RyICIiCiAKLSM6IGhlbHAuYzozODcKKyM6IGhlbHAuYzozODggaGVscC5jOjQ0NwogbXNnaWQgIiIKICJcbiIKICJEaWQgeW91IG1lYW4gdGhpcz8iCkBAIC01MzUsMTIgKzUzNSwxNyBAQAogbXNnc3RyWzBdICIiCiBtc2dzdHJbMV0gIiIKIAorIzogaGVscC5jOjQ0MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgLSAlcyIKK21zZ3N0ciAiIgorCiAjOiBtZXJnZS5jOjU2CiBtc2dpZCAiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIgogbXNnc3RyICIiCiAKICM6IG1lcmdlLmM6MTEwIGJ1aWx0aW4vY2hlY2tvdXQuYzozNjUgYnVpbHRpbi9jaGVja291dC5jOjU2NgotIzogYnVpbHRpbi9jbG9uZS5jOjY0NQorIzogYnVpbHRpbi9jbG9uZS5jOjY1NgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCkBAIC01NTQsMjQzICs1NTksMjY0IEBACiBtc2dpZCAiYWRkaW5mb19jYWNoZSBmYWlsZWQgZm9yIHBhdGggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoyNjgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjI2OQogbXNnaWQgImVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY3MgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NjczCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgcGF0aCAnJXMnJXMiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NjgzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2ODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3ZpbmcgJXMgdG8gbWFrZSByb29tIGZvciBzdWJkaXJlY3RvcnlcbiIKIG1zZ3N0ciAiIgogCiAjLiBzb21ldGhpbmcgZWxzZSBleGlzdHMKICMuIC4uIGJ1dCBub3Qgc29tZSBvdGhlciBlcnJvciAod2hvIHJlYWxseSBjYXJlcyB3aGF0PykKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY5NyBtZXJnZS1yZWN1cnNpdmUuYzo3MTgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY5OCBtZXJnZS1yZWN1cnNpdmUuYzo3MTkKIG1zZ2lkICI6IHBlcmhhcHMgYSBEL0YgY29uZmxpY3Q/IgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjcwOAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzA5CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZnVzaW5nIHRvIGxvc2UgdW50cmFja2VkIGZpbGUgYXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo3NDgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCBvYmplY3QgJXMgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJibG9iIGV4cGVjdGVkIGZvciAlcyAnJXMnIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzEzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzQgYnVpbHRpbi9jbG9uZS5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4MQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzgyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzeW1saW5rICclcyciCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6Nzg0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODUKICMsIGMtZm9ybWF0CiBtc2dpZCAiZG8gbm90IGtub3cgd2hhdCB0byBkbyB3aXRoICUwNm8gJXMgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo5MjIKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyMwogbXNnaWQgIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyNgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTQyCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo5NDMKIG1zZ2lkICJ1bnN1cHBvcnRlZCBvYmplY3QgdHlwZSBpbiB0aGUgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDIxIG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMzUKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMjIgbWVyZ2UtcmVjdXJzaXZlLmM6MTAzNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ09ORkxJQ1QgKCVzL2RlbGV0ZSk6ICVzIGRlbGV0ZWQgaW4gJXMgYW5kICVzIGluICVzLiBWZXJzaW9uICVzIG9mICVzIGxlZnQgIgogImluIHRyZWUuIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMjcgbWVyZ2UtcmVjdXJzaXZlLmM6MTA0MAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyOCBtZXJnZS1yZWN1cnNpdmUuYzoxMDQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDT05GTElDVCAoJXMvZGVsZXRlKTogJXMgZGVsZXRlZCBpbiAlcyBhbmQgJXMgaW4gJXMuIFZlcnNpb24gJXMgb2YgJXMgbGVmdCAiCiAiaW4gdHJlZSBhdCAlcy4iCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MgogbXNnaWQgInJlbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgxCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgyCiBtc2dpZCAicmVuYW1lZCIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTM3CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGlzIGEgZGlyZWN0b3J5IGluICVzIGFkZGluZyBhcyAlcyBpbnN0ZWFkIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNTkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIGJyYW5jaCBcIiVzXCIgcmVuYW1lIFwiJXMiCiAiXCItPlwiJXNcIiBpbiBcIiVzXCIlcyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTY0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTY1CiBtc2dpZCAiIChsZWZ0IHVucmVzb2x2ZWQpIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyMTgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyMTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ09ORkxJQ1QgKHJlbmFtZS9yZW5hbWUpOiBSZW5hbWUgJXMtPiVzIGluICVzLiBSZW5hbWUgJXMtPiVzIGluICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyNDgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1pbmcgJXMgdG8gJXMgYW5kICVzIHRvICVzIGluc3RlYWQiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ0NworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ0OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDT05GTElDVCAocmVuYW1lL2FkZCk6IFJlbmFtZSAlcy0+JXMgaW4gJXMuICVzIGFkZGVkIGluICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIG1lcmdlZCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDYyIG1lcmdlLXJlY3Vyc2l2ZS5jOjE2NjAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NjMgbWVyZ2UtcmVjdXJzaXZlLmM6MTY2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJBZGRpbmcgYXMgJXMgaW5zdGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTEzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkIG9iamVjdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE2CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCAlcyBpcyBub3QgYSBibG9iIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjUKIG1zZ2lkICJtb2RpZnkiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU2NAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU2NQogbXNnaWQgIm1vZGlmaWVkIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NzQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NzUKIG1zZ2lkICJjb250ZW50IgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1ODEKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1ODIKIG1zZ2lkICJhZGQvYWRkIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MTUKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiU2tpcHBlZCAlcyAobWVyZ2VkIHNhbWUgYXMgZXhpc3RpbmcpIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MjkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0by1tZXJnaW5nICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzMgZ2l0LXN1Ym1vZHVsZS5zaDoxMDI5CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjM0IGdpdC1zdWJtb2R1bGUuc2g6MTExOAogbXNnaWQgInN1Ym1vZHVsZSIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjM0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNPTkZMSUNUICglcyk6IE1lcmdlIGNvbmZsaWN0IGluICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3ZpbmcgJXMiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc0OQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc1MAogbXNnaWQgImZpbGUvZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTUKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTYKIG1zZ2lkICJkaXJlY3RvcnkvZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzYwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gQWRkaW5nICVzIGFzICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NzAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3ODcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3ODgKIG1zZ2lkICJGYXRhbCBtZXJnZSBmYWlsdXJlLCBzaG91bGRuJ3QgaGFwcGVuLiIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA2CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA3CiBtc2dpZCAiQWxyZWFkeSB1cC10by1kYXRlISIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1lcmdpbmcgb2YgdHJlZXMgJXMgYW5kICVzIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucHJvY2Vzc2VkIHBhdGg/Pz8gJXMiCiBtc2dzdHIgIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MQogbXNnaWQgIk1lcmdpbmc6IgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5MDMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yOiIKIG1zZ2lkX3BsdXJhbCAiZm91bmQgJXUgY29tbW9uIGFuY2VzdG9yczoiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTQwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTQxCiBtc2dpZCAibWVyZ2UgcmV0dXJuZWQgbm8gY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5OTcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY1OAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAxMCBidWlsdGluL21lcmdlLmM6NjcyCiBtc2dpZCAiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIKIG1zZ3N0ciAiIgogCi0jOiBvYmplY3QuYzoxOTUKKyM6IG5vdGVzLXV0aWxzLmM6NDAKK21zZ2lkICJDYW5ub3QgY29tbWl0IHVuaW5pdGlhbGl6ZWQvdW5yZWZlcmVuY2VkIG5vdGVzIHRyZWUiCittc2dzdHIgIiIKKworIzogbm90ZXMtdXRpbHMuYzo4MQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbm90ZXMucmV3cml0ZU1vZGUgdmFsdWU6ICclcyciCittc2dzdHIgIiIKKworIzogbm90ZXMtdXRpbHMuYzo5MQorIywgYy1mb3JtYXQKK21zZ2lkICJSZWZ1c2luZyB0byByZXdyaXRlIG5vdGVzIGluICVzIChvdXRzaWRlIG9mIHJlZnMvbm90ZXMvKSIKK21zZ3N0ciAiIgorCisjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQorIy4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlCisjOiBub3Rlcy11dGlscy5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCittc2dzdHIgIiIKKworIzogb2JqZWN0LmM6MjA0CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBwYXJzZSBvYmplY3Q6ICVzIgogbXNnc3RyICIiCkBAIC04MzAsMTggKzg1NiwxOCBAQAogbXNnaWQgIiclcycgaXMgYmV5b25kIGEgc3ltYm9saWMgbGluayIKIG1zZ3N0ciAiIgogCi0jOiByZW1vdGUuYzoxNzgxCisjOiByZW1vdGUuYzoxNzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0LlxuIgogbXNnaWRfcGx1cmFsICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdHMuXG4iCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiByZW1vdGUuYzoxNzg3CisjOiByZW1vdGUuYzoxNzk0CiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1c2hcIiB0byBwdWJsaXNoIHlvdXIgbG9jYWwgY29tbWl0cylcbiIKIG1zZ3N0ciAiIgogCi0jOiByZW1vdGUuYzoxNzkwCisjOiByZW1vdGUuYzoxNzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGJlaGluZCAnJXMnIGJ5ICVkIGNvbW1pdCwgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKIG1zZ2lkX3BsdXJhbCAiIgpAQCAtODQ5LDExICs4NzUsMTEgQEAKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IHJlbW90ZS5jOjE3OTgKKyM6IHJlbW90ZS5jOjE4MDUKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKIG1zZ3N0ciAiIgogCi0jOiByZW1vdGUuYzoxODAxCisjOiByZW1vdGUuYzoxODA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3VyIGJyYW5jaCBhbmQgJyVzJyBoYXZlIGRpdmVyZ2VkLFxuIgpAQCAtODY0LDE4ICs4OTAsMjcgQEAKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IHJlbW90ZS5jOjE4MTEKKyM6IHJlbW90ZS5jOjE4MTgKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIG1lcmdlIHRoZSByZW1vdGUgYnJhbmNoIGludG8geW91cnMpXG4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5Ci0jOiBidWlsdGluL21lcmdlLmM6MTAwOQorIzogcnVuLWNvbW1hbmQuYzo4MAorbXNnaWQgIm9wZW4gL2Rldi9udWxsIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBydW4tY29tbWFuZC5jOjgyCisjLCBjLWZvcm1hdAorbXNnaWQgImR1cDIoJWQsJWQpIGZhaWxlZCIKK21zZ3N0ciAiIgorCisjOiBzZXF1ZW5jZXIuYzoyMDYgYnVpbHRpbi9tZXJnZS5jOjc5MCBidWlsdGluL21lcmdlLmM6OTAzCisjOiBidWlsdGluL21lcmdlLmM6MTAxMyBidWlsdGluL21lcmdlLmM6MTAyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAnJXMnIGZvciB3cml0aW5nIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjIwOCBidWlsdGluL21lcmdlLmM6MzM1IGJ1aWx0aW4vbWVyZ2UuYzo3NzkKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDAxIGJ1aWx0aW4vbWVyZ2UuYzoxMDE0CisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjM1MCBidWlsdGluL21lcmdlLmM6NzkzCisjOiBidWlsdGluL21lcmdlLmM6MTAxNSBidWlsdGluL21lcmdlLmM6MTAyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKIG1zZ3N0ciAiIgpAQCAtODkzLDcgKzkyOCw3IEBACiAiYW5kIGNvbW1pdCB0aGUgcmVzdWx0IHdpdGggJ2dpdCBjb21taXQnIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4NTkgc2VxdWVuY2VyLmM6OTQyCisjOiBzZXF1ZW5jZXIuYzoyNDUgc2VxdWVuY2VyLmM6ODY5IHNlcXVlbmNlci5jOjk1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJXMiCiBtc2dzdHIgIiIKQEAgLTkxNiwyMTUgKzk1MSwyMjggQEAKIG1zZ3N0ciAiIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzozMTkKKyM6IHNlcXVlbmNlci5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjM1MAorIzogc2VxdWVuY2VyLmM6MzU1CiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzozNzEKKyM6IHNlcXVlbmNlci5jOjM3NwogbXNnaWQgIlVuYWJsZSB0byB1cGRhdGUgY2FjaGUgdHJlZVxuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjQxNgorIzogc2VxdWVuY2VyLmM6NDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo0MjEKKyM6IHNlcXVlbmNlci5jOjQyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgcGFyZW50IGNvbW1pdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjQ4NworIzogc2VxdWVuY2VyLmM6NDkzCiBtc2dpZCAiWW91ciBpbmRleCBmaWxlIGlzIHVubWVyZ2VkLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo1MDYKKyM6IHNlcXVlbmNlci5jOjUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYSBtZXJnZSBidXQgbm8gLW0gb3B0aW9uIHdhcyBnaXZlbi4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NTE0CisjOiBzZXF1ZW5jZXIuYzo1MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgcGFyZW50ICVkIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjUxOAorIzogc2VxdWVuY2VyLmM6NTI0CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1haW5saW5lIHdhcyBzcGVjaWZpZWQgYnV0IGNvbW1pdCAlcyBpcyBub3QgYSBtZXJnZS4iCiBtc2dzdHIgIiIKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyB3aWxsIGJlICJyZXZlcnQiIG9yCiAjLiAiY2hlcnJ5LXBpY2siLCB0aGUgc2Vjb25kICVzIGEgU0hBMQotIzogc2VxdWVuY2VyLmM6NTMxCisjOiBzZXF1ZW5jZXIuYzo1MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjUzNQorIzogc2VxdWVuY2VyLmM6NTQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBnZXQgY29tbWl0IG1lc3NhZ2UgZm9yICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjYyMQorIzogc2VxdWVuY2VyLmM6NjI3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZXZlcnQgJXMuLi4gJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjIyCisjOiBzZXF1ZW5jZXIuYzo2MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGFwcGx5ICVzLi4uICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjY1NAorIzogc2VxdWVuY2VyLmM6NjY0CiBtc2dpZCAiZW1wdHkgY29tbWl0IHNldCBwYXNzZWQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjYyCisjOiBzZXF1ZW5jZXIuYzo2NzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NjY3CisjOiBzZXF1ZW5jZXIuYzo2NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0ICVzOiBmYWlsZWQgdG8gcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6NzI1CisjOiBzZXF1ZW5jZXIuYzo3MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90ICVzIGR1cmluZyBhICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjc0NworIzogc2VxdWVuY2VyLmM6NzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBsaW5lICVkLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3NTIKKyM6IHNlcXVlbmNlci5jOjc2MgogbXNnaWQgIk5vIGNvbW1pdHMgcGFyc2VkLiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3NjUKKyM6IHNlcXVlbmNlci5jOjc3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo3NjkKKyM6IHNlcXVlbmNlci5jOjc3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCAlcy4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6Nzc2CisjOiBzZXF1ZW5jZXIuYzo3ODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW51c2FibGUgaW5zdHJ1Y3Rpb24gc2hlZXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjgwNAorIzogc2VxdWVuY2VyLmM6ODE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQga2V5OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDcKKyM6IHNlcXVlbmNlci5jOjgxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHZhbHVlIGZvciAlczogJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODE5CisjOiBzZXF1ZW5jZXIuYzo4MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIG9wdGlvbnMgc2hlZXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjg0MAorIzogc2VxdWVuY2VyLmM6ODUwCiBtc2dpZCAiYSBjaGVycnktcGljayBvciByZXZlcnQgaXMgYWxyZWFkeSBpbiBwcm9ncmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo4NDEKKyM6IHNlcXVlbmNlci5jOjg1MQogbXNnaWQgInRyeSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODQ1CisjOiBzZXF1ZW5jZXIuYzo4NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBzZXF1ZW5jZXIgZGlyZWN0b3J5ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjg2MSBzZXF1ZW5jZXIuYzo5NDYKKyM6IHNlcXVlbmNlci5jOjg3MSBzZXF1ZW5jZXIuYzo5NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMuIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjg4MCBzZXF1ZW5jZXIuYzoxMDE0CisjOiBzZXF1ZW5jZXIuYzo4OTAgc2VxdWVuY2VyLmM6MTAyNAogbXNnaWQgIm5vIGNoZXJyeS1waWNrIG9yIHJldmVydCBpbiBwcm9ncmVzcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo4ODIKKyM6IHNlcXVlbmNlci5jOjg5MgogbXNnaWQgImNhbm5vdCByZXNvbHZlIEhFQUQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6ODg0CisjOiBzZXF1ZW5jZXIuYzo4OTQKIG1zZ2lkICJjYW5ub3QgYWJvcnQgZnJvbSBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo5MDYgYnVpbHRpbi9hcHBseS5jOjQwNjAKKyM6IHNlcXVlbmNlci5jOjkxNiBidWlsdGluL2FwcGx5LmM6NDA2MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAlczogJXMiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6OTA5CisjOiBzZXF1ZW5jZXIuYzo5MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IHNlcXVlbmNlci5jOjkxMAorIzogc2VxdWVuY2VyLmM6OTIwCiBtc2dpZCAidW5leHBlY3RlZCBlbmQgb2YgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzo5MTYKKyM6IHNlcXVlbmNlci5jOjkyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdG9yZWQgcHJlLWNoZXJyeS1waWNrIEhFQUQgZmlsZSAnJXMnIGlzIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6OTM5CisjOiBzZXF1ZW5jZXIuYzo5NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZvcm1hdCAlcy4iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTA4MworIzogc2VxdWVuY2VyLmM6MTA5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2FuJ3QgY2hlcnJ5LXBpY2sgYSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDg1CisjOiBzZXF1ZW5jZXIuYzoxMDk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCiBtc2dzdHIgIiIKIAotIzogc2VxdWVuY2VyLmM6MTExOQorIzogc2VxdWVuY2VyLmM6MTEyOQogbXNnaWQgIkNhbid0IHJldmVydCBhcyBpbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBzZXF1ZW5jZXIuYzoxMTIwCisjOiBzZXF1ZW5jZXIuYzoxMTMwCiBtc2dpZCAiQ2FuJ3QgY2hlcnJ5LXBpY2sgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICIiCiAKLSM6IHNoYTFfbmFtZS5jOjEwMzYKKyM6IHNoYTFfbmFtZS5jOjQ0MAorbXNnaWQgIiIKKyJHaXQgbm9ybWFsbHkgbmV2ZXIgY3JlYXRlcyBhIHJlZiB0aGF0IGVuZHMgd2l0aCA0MCBoZXggY2hhcmFjdGVyc1xuIgorImJlY2F1c2UgaXQgd2lsbCBiZSBpZ25vcmVkIHdoZW4geW91IGp1c3Qgc3BlY2lmeSA0MC1oZXguIFRoZXNlIHJlZnNcbiIKKyJtYXkgYmUgY3JlYXRlZCBieSBtaXN0YWtlLiBGb3IgZXhhbXBsZSxcbiIKKyJcbiIKKyIgIGdpdCBjaGVja291dCAtYiAkYnIgJChnaXQgcmV2LXBhcnNlIC4uLilcbiIKKyJcbiIKKyJ3aGVyZSBcIiRiclwiIGlzIHNvbWVob3cgZW1wdHkgYW5kIGEgNDAtaGV4IHJlZiBpcyBjcmVhdGVkLiBQbGVhc2VcbiIKKyJleGFtaW5lIHRoZXNlIHJlZnMgYW5kIG1heWJlIGRlbGV0ZSB0aGVtLiBUdXJuIHRoaXMgbWVzc2FnZSBvZmYgYnlcbiIKKyJydW5uaW5nIFwiZ2l0IGNvbmZpZyBhZHZpY2Uub2JqZWN0X25hbWVfd2FybmluZyBmYWxzZVwiIgorbXNnc3RyICIiCisKKyM6IHNoYTFfbmFtZS5jOjEwOTcKIG1zZ2lkICJIRUFEIGRvZXMgbm90IHBvaW50IHRvIGEgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IHNoYTFfbmFtZS5jOjEwMzkKKyM6IHNoYTFfbmFtZS5jOjExMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCBicmFuY2g6ICclcyciCiBtc2dzdHIgIiIKIAotIzogc2hhMV9uYW1lLmM6MTA0MQorIzogc2hhMV9uYW1lLmM6MTEwMgogIywgYy1mb3JtYXQKIG1zZ2lkICJObyB1cHN0cmVhbSBjb25maWd1cmVkIGZvciBicmFuY2ggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBzaGExX25hbWUuYzoxMDQ0CisjOiBzaGExX25hbWUuYzoxMTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwc3RyZWFtIGJyYW5jaCAnJXMnIG5vdCBzdG9yZWQgYXMgYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIgogbXNnc3RyICIiCkBAIC0xMTM0LDE2MCArMTE4MiwxNjAgQEAKIG1zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IHdyYXBwZXIuYzo0MjMKKyM6IHdyYXBwZXIuYzo0MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnIgogbXNnc3RyICIiCiAKLSM6IHdyYXBwZXIuYzo0MzQKKyM6IHdyYXBwZXIuYzo0NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGxvb2sgdXAgY3VycmVudCB1c2VyIGluIHRoZSBwYXNzd2QgZmlsZTogJXMiCiBtc2dzdHIgIiIKIAotIzogd3JhcHBlci5jOjQzNQorIzogd3JhcHBlci5jOjQ0MQogbXNnaWQgIm5vIHN1Y2ggdXNlciIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxNDAKKyM6IHd0LXN0YXR1cy5jOjE0MQogbXNnaWQgIlVubWVyZ2VkIHBhdGhzOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxNjcgd3Qtc3RhdHVzLmM6MTk0CisjOiB3dC1zdGF0dXMuYzoxNjggd3Qtc3RhdHVzLmM6MTk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCByZXNldCAlcyA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxNjkgd3Qtc3RhdHVzLmM6MTk2CisjOiB3dC1zdGF0dXMuYzoxNzAgd3Qtc3RhdHVzLmM6MTk3CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJtIC0tY2FjaGVkIDxmaWxlPi4uLlwiIHRvIHVuc3RhZ2UpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjE3MworIzogd3Qtc3RhdHVzLmM6MTc0CiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZCA8ZmlsZT4uLi5cIiB0byBtYXJrIHJlc29sdXRpb24pIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NSB3dC1zdGF0dXMuYzoxNzkKKyM6IHd0LXN0YXR1cy5jOjE3NiB3dC1zdGF0dXMuYzoxODAKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIGFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbikiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTc3CisjOiB3dC1zdGF0dXMuYzoxNzgKIG1zZ2lkICIgICh1c2UgXCJnaXQgcm0gPGZpbGU+Li4uXCIgdG8gbWFyayByZXNvbHV0aW9uKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxODgKKyM6IHd0LXN0YXR1cy5jOjE4OQogbXNnaWQgIkNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyMDYKKyM6IHd0LXN0YXR1cy5jOjIwNwogbXNnaWQgIkNoYW5nZXMgbm90IHN0YWdlZCBmb3IgY29tbWl0OiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyMTAKKyM6IHd0LXN0YXR1cy5jOjIxMQogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjIxMgorIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjEzCisjOiB3dC1zdGF0dXMuYzoyMTQKIG1zZ2lkICIiCiAiICAodXNlIFwiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLlwiIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjE1CisjOiB3dC1zdGF0dXMuYzoyMTYKIG1zZ2lkICIgIChjb21taXQgb3IgZGlzY2FyZCB0aGUgdW50cmFja2VkIG9yIG1vZGlmaWVkIGNvbnRlbnQgaW4gc3VibW9kdWxlcykiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjI3CisjOiB3dC1zdGF0dXMuYzoyMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjQ0CisjOiB3dC1zdGF0dXMuYzoyNDUKIG1zZ2lkICJidWciCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjQ5CisjOiB3dC1zdGF0dXMuYzoyNTAKIG1zZ2lkICJib3RoIGRlbGV0ZWQ6IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MAorIzogd3Qtc3RhdHVzLmM6MjUxCiBtc2dpZCAiYWRkZWQgYnkgdXM6IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MQorIzogd3Qtc3RhdHVzLmM6MjUyCiBtc2dpZCAiZGVsZXRlZCBieSB0aGVtOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyNTIKKyM6IHd0LXN0YXR1cy5jOjI1MwogbXNnaWQgImFkZGVkIGJ5IHRoZW06IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MworIzogd3Qtc3RhdHVzLmM6MjU0CiBtc2dpZCAiZGVsZXRlZCBieSB1czoiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MjU0CisjOiB3dC1zdGF0dXMuYzoyNTUKIG1zZ2lkICJib3RoIGFkZGVkOiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyNTUKKyM6IHd0LXN0YXR1cy5jOjI1NgogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjI4NQorIzogd3Qtc3RhdHVzLmM6Mjg2CiBtc2dpZCAibmV3IGNvbW1pdHMsICIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyODcKKyM6IHd0LXN0YXR1cy5jOjI4OAogbXNnaWQgIm1vZGlmaWVkIGNvbnRlbnQsICIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoyODkKKyM6IHd0LXN0YXR1cy5jOjI5MAogbXNnaWQgInVudHJhY2tlZCBjb250ZW50LCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzA2CisjOiB3dC1zdGF0dXMuYzozMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzA5CisjOiB3dC1zdGF0dXMuYzozMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29waWVkOiAgICAgJXMgLT4gJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzEyCisjOiB3dC1zdGF0dXMuYzozMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVsZXRlZDogICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzE1CisjOiB3dC1zdGF0dXMuYzozMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzE4CisjOiB3dC1zdGF0dXMuYzozMTkKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVuYW1lZDogICAgJXMgLT4gJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzIxCisjOiB3dC1zdGF0dXMuYzozMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzI0CisjOiB3dC1zdGF0dXMuYzozMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzI3CisjOiB3dC1zdGF0dXMuYzozMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5tZXJnZWQ6ICAgJXMiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MzMwCisjOiB3dC1zdGF0dXMuYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVnOiB1bmhhbmRsZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgIiIKQEAgLTEyOTYsNyArMTM0NCw3IEBACiBtc2dpZCAiWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjgwNiB3dC1zdGF0dXMuYzo5NTgKKyM6IHd0LXN0YXR1cy5jOjgwNgogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCBjb21taXRcIikiCiBtc2dzdHIgIiIKIApAQCAtMTMxNyw3ICsxMzY1LDcgQEAKIG1zZ3N0ciAiIgogCiAjOiB3dC1zdGF0dXMuYzo4MjkKLW1zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIpIgorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tY29udGludWVcIikiCiBtc2dzdHIgIiIKIAogIzogd3Qtc3RhdHVzLmM6ODMxCkBAIC0xMzg5LDM3ICsxNDM3LDQ1IEBACiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjk2MQotbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjb21taXRcIikiCisjOiB3dC1zdGF0dXMuYzo5NTgKK21zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgY2hlcnJ5LXBpY2sgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo5NzAKKyM6IHd0LXN0YXR1cy5jOjk2MQorbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjk2MworbXNnaWQgIiAgKHVzZSBcImdpdCBjaGVycnktcGljayAtLWFib3J0XCIgdG8gY2FuY2VsIHRoZSBjaGVycnktcGljayBvcGVyYXRpb24pIgorbXNnc3RyICIiCisKKyM6IHd0LXN0YXR1cy5jOjk3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo5NzUKKyM6IHd0LXN0YXR1cy5jOjk3NwogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo5NzgKKyM6IHd0LXN0YXR1cy5jOjk4MAogbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo5ODAKKyM6IHd0LXN0YXR1cy5jOjk4MgogbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6OTkxCisjOiB3dC1zdGF0dXMuYzo5OTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLCBzdGFydGVkIGZyb20gYnJhbmNoICclcycuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjk5NQorIzogd3Qtc3RhdHVzLmM6OTk3CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzo5OTgKKyM6IHd0LXN0YXR1cy5jOjEwMDAKIG1zZ2lkICIgICh1c2UgXCJnaXQgYmlzZWN0IHJlc2V0XCIgdG8gZ2V0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIGJyYW5jaCkiCiBtc2dzdHIgIiIKIApAQCAtMTQyNywzMSArMTQ4MywzNSBAQAogbXNnaWQgIk9uIGJyYW5jaCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTE4NAorIzogd3Qtc3RhdHVzLmM6MTE4MAorbXNnaWQgInJlYmFzZSBpbiBwcm9ncmVzczsgb250byAiCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTE4NwogbXNnaWQgIkhFQUQgZGV0YWNoZWQgYXQgIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjExODYKKyM6IHd0LXN0YXR1cy5jOjExODkKIG1zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjExODkKKyM6IHd0LXN0YXR1cy5jOjExOTIKIG1zZ2lkICJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEyMDYKKyM6IHd0LXN0YXR1cy5jOjEyMDkKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMjIwCisjOiB3dC1zdGF0dXMuYzoxMjIzCiBtc2dpZCAiVW50cmFja2VkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEyMjIKKyM6IHd0LXN0YXR1cy5jOjEyMjUKIG1zZ2lkICJJZ25vcmVkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEyMjYKKyM6IHd0LXN0YXR1cy5jOjEyMjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkl0IHRvb2sgJS4yZiBzZWNvbmRzIHRvIGVudW1lcmF0ZSB1bnRyYWNrZWQgZmlsZXMuICdzdGF0dXMgLXVubydcbiIKQEAgLTE0NTksODIgKzE1MTksODIgQEAKICJuZXcgZmlsZXMgeW91cnNlbGYgKHNlZSAnZ2l0IGhlbHAgc3RhdHVzJykuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEyMzIKKyM6IHd0LXN0YXR1cy5jOjEyMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMjM0CisjOiB3dC1zdGF0dXMuYzoxMjM3CiBtc2dpZCAiICh1c2UgLXUgb3B0aW9uIHRvIHNob3cgdW50cmFja2VkIGZpbGVzKSIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMjQwCisjOiB3dC1zdGF0dXMuYzoxMjQzCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMjQ1Ci0jLCBjLWZvcm1hdAotbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgotbXNnc3RyICIiCi0KICM6IHd0LXN0YXR1cy5jOjEyNDgKICMsIGMtZm9ybWF0Ci1tc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXRcbiIKK21zZ2lkICJubyBjaGFuZ2VzIGFkZGVkIHRvIGNvbW1pdCAodXNlIFwiZ2l0IGFkZFwiIGFuZC9vciBcImdpdCBjb21taXQgLWFcIilcbiIKIG1zZ3N0ciAiIgogCiAjOiB3dC1zdGF0dXMuYzoxMjUxCiAjLCBjLWZvcm1hdAorbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0XG4iCittc2dzdHIgIiIKKworIzogd3Qtc3RhdHVzLmM6MTI1NAorIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50ICh1c2UgXCJnaXQgYWRkXCIgdG8gIgogInRyYWNrKVxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEyNTQKKyM6IHd0LXN0YXR1cy5jOjEyNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50XG4iCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTI1NworIzogd3Qtc3RhdHVzLmM6MTI2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMjYwIHd0LXN0YXR1cy5jOjEyNjUKKyM6IHd0LXN0YXR1cy5jOjEyNjMgd3Qtc3RhdHVzLmM6MTI2OAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdFxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEyNjMKKyM6IHd0LXN0YXR1cy5jOjEyNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcylcbiIKIG1zZ3N0ciAiIgogCi0jOiB3dC1zdGF0dXMuYzoxMjY3CisjOiB3dC1zdGF0dXMuYzoxMjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0LCB3b3JraW5nIGRpcmVjdG9yeSBjbGVhblxuIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEzNzUKKyM6IHd0LXN0YXR1cy5jOjEzNzgKIG1zZ2lkICJIRUFEIChubyBicmFuY2gpIgogbXNnc3RyICIiCiAKLSM6IHd0LXN0YXR1cy5jOjEzODEKKyM6IHd0LXN0YXR1cy5jOjEzODQKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTM5NgorIzogd3Qtc3RhdHVzLmM6MTM5OQogbXNnaWQgImJlaGluZCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTM5OSB3dC1zdGF0dXMuYzoxNDAyCisjOiB3dC1zdGF0dXMuYzoxNDAyIHd0LXN0YXR1cy5jOjE0MDUKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgIiIKIAotIzogd3Qtc3RhdHVzLmM6MTQwNAorIzogd3Qtc3RhdHVzLmM6MTQwNwogbXNnaWQgIiwgYmVoaW5kICIKIG1zZ3N0ciAiIgogCi0jOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM1MgorIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHVubGluayAnJXMnIgogbXNnc3RyICIiCkBAIC0xNTk0LDcgKzE2NTQsNyBAQAogbXNnaWQgInVuZXhwZWN0ZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoxNDkgYnVpbHRpbi9jb21taXQuYzoyMzMKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjM4CiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICIiCiAKQEAgLTE2MDcsNyArMTY2Nyw3IEBACiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZWZyZXNoaW5nIHRoZSBpbmRleDoiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzMgYnVpbHRpbi9ybS5jOjMzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICIiCkBAIC0xNjE2LDEyNyArMTY3NiwxMjcgQEAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozNDkKKyM6IGJ1aWx0aW4vYWRkLmM6MzUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjM1NAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM1OAorIzogYnVpbHRpbi9hZGQuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM2MAorIzogYnVpbHRpbi9hZGQuYzozNjEKIG1zZ2lkICJFbXB0eSBwYXRjaC4gQWJvcnRlZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozNjYKKyM6IGJ1aWx0aW4vYWRkLmM6MzY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBhcHBseSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzc2CisjOiBidWlsdGluL2FkZC5jOjM3NwogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MyBidWlsdGluL2NsZWFuLmM6MTYxIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKLSM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6NDI1IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MwotIzogYnVpbHRpbi9ybS5jOjIwNgorIzogYnVpbHRpbi9hZGQuYzozOTQgYnVpbHRpbi9jbGVhbi5jOjg1MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjczIGJ1aWx0aW4vcHVzaC5jOjQ1MSBidWlsdGluL3JlbW90ZS5jOjEyNTMKKyM6IGJ1aWx0aW4vcm0uYzoyNjgKIG1zZ2lkICJkcnkgcnVuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKLSM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk1IGJ1aWx0aW4vYXBwbHkuYzo0NDEwIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwMSBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTU3MyBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTMKIG1zZ2lkICJiZSB2ZXJib3NlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk2CisjOiBidWlsdGluL2FkZC5jOjM5NwogbXNnaWQgImludGVyYWN0aXZlIHBpY2tpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzozOTcgYnVpbHRpbi9jaGVja291dC5jOjEwNjMgYnVpbHRpbi9yZXNldC5jOjI1OAorIzogYnVpbHRpbi9hZGQuYzozOTggYnVpbHRpbi9jaGVja291dC5jOjEwNzMgYnVpbHRpbi9yZXNldC5jOjI2MQogbXNnaWQgInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk4CisjOiBidWlsdGluL2FkZC5jOjM5OQogbXNnaWQgImVkaXQgY3VycmVudCBkaWZmIGFuZCBhcHBseSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjM5OQorIzogYnVpbHRpbi9hZGQuYzo0MDAKIG1zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MDAKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCiBtc2dpZCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MDEKKyM6IGJ1aWx0aW4vYWRkLmM6NDAyCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDAyCisjOiBidWlsdGluL2FkZC5jOjQwMwogbXNnaWQgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCiAjLiB0YWtlcyBubyBhcmd1bWVudHMKLSM6IGJ1aWx0aW4vYWRkLmM6NDA1CisjOiBidWlsdGluL2FkZC5jOjQwNgogbXNnaWQgImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDA3CisjOiBidWlsdGluL2FkZC5jOjQwOAogbXNnaWQgImRvbid0IGFkZCwgb25seSByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQwOAorIzogYnVpbHRpbi9hZGQuYzo0MDkKIG1zZ2lkICJqdXN0IHNraXAgZmlsZXMgd2hpY2ggY2Fubm90IGJlIGFkZGVkIGJlY2F1c2Ugb2YgZXJyb3JzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDA5CisjOiBidWlsdGluL2FkZC5jOjQxMAogbXNnaWQgImNoZWNrIGlmIC0gZXZlbiBtaXNzaW5nIC0gZmlsZXMgYXJlIGlnbm9yZWQgaW4gZHJ5IHJ1biIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQzMQorIzogYnVpbHRpbi9hZGQuYzo0MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNlIC1mIGlmIHlvdSByZWFsbHkgd2FudCB0byBhZGQgdGhlbS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQzMgorIzogYnVpbHRpbi9hZGQuYzo0MzMKIG1zZ2lkICJubyBmaWxlcyBhZGRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FkZC5jOjQzOAorIzogYnVpbHRpbi9hZGQuYzo0MzkKIG1zZ2lkICJhZGRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDc3CisjOiBidWlsdGluL2FkZC5jOjQ3OAogbXNnaWQgIi1BIGFuZCAtdSBhcmUgbXV0dWFsbHkgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDk1CisjOiBidWlsdGluL2FkZC5jOjQ5NgogbXNnaWQgIk9wdGlvbiAtLWlnbm9yZS1taXNzaW5nIGNhbiBvbmx5IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCAtLWRyeS1ydW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo1MjUKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCi1tc2dzdHIgIiIKLQogIzogYnVpbHRpbi9hZGQuYzo1MjYKICMsIGMtZm9ybWF0Cittc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9hZGQuYzo1MjcKKyMsIGMtZm9ybWF0CiBtc2dpZCAiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo1MzIgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzo2NiBidWlsdGluL2NsZWFuLmM6MjA0Ci0jOiBidWlsdGluL2NvbW1pdC5jOjI5MyBidWlsdGluL212LmM6ODIgYnVpbHRpbi9ybS5jOjIzNQorIzogYnVpbHRpbi9hZGQuYzo1MzMgYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNjEgYnVpbHRpbi9jbGVhbi5jOjg5NQorIzogYnVpbHRpbi9jb21taXQuYzoyOTggYnVpbHRpbi9tdi5jOjgyIGJ1aWx0aW4vcm0uYzoyOTcKIG1zZ2lkICJpbmRleCBmaWxlIGNvcnJ1cHQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hZGQuYzo2MDQgYnVpbHRpbi9hcHBseS5jOjQ1MDUgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCisjOiBidWlsdGluL2FkZC5jOjYwNSBidWlsdGluL2FwcGx5LmM6NDUwNiBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzo0MzIKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIApAQCAtMTkxMywyOTMgKzE5NzMsMjkzIEBACiBtc2dpZCAiY2Fubm90IGNoZWNrb3V0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTQwIGJ1aWx0aW4vYXBwbHkuYzozMTQ5IGJ1aWx0aW4vYXBwbHkuYzozMTkzCisjOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWFkIG9mICVzIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE3MyBidWlsdGluL2FwcGx5LmM6MzM5NQorIzogYnVpbHRpbi9hcHBseS5jOjMxNzQgYnVpbHRpbi9hcHBseS5jOjMzOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNTQgYnVpbHRpbi9hcHBseS5jOjM0MDkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU1IGJ1aWx0aW4vYXBwbHkuYzozNDEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI1OCBidWlsdGluL2FwcGx5LmM6MzQwMSBidWlsdGluL2FwcGx5LmM6MzQyMworIzogYnVpbHRpbi9hcHBseS5jOjMyNTkgYnVpbHRpbi9hcHBseS5jOjM0MDIgYnVpbHRpbi9hcHBseS5jOjM0MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjYzIGJ1aWx0aW4vYXBwbHkuYzozNDE3CisjOiBidWlsdGluL2FwcGx5LmM6MzI2NCBidWlsdGluL2FwcGx5LmM6MzQxOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgbWF0Y2ggaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMzNjUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMzY2CiBtc2dpZCAicmVtb3ZhbCBwYXRjaCBsZWF2ZXMgZmlsZSBjb250ZW50cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQzNAorIzogYnVpbHRpbi9hcHBseS5jOjM0MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdyb25nIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM0MzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNDM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGhhcyB0eXBlICVvLCBleHBlY3RlZCAlbyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUzNworIzogYnVpbHRpbi9hcHBseS5jOjM1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQwCisjOiBidWlsdGluL2FwcGx5LmM6MzU0MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gd29ya2luZyBkaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBtb2RlICglbykgb2YgJXMgZG9lcyBub3QgbWF0Y2ggb2xkIG1vZGUgKCVvKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU2NQorIzogYnVpbHRpbi9hcHBseS5jOjM1NjYKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIG9mICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTczCisjOiBidWlsdGluL2FwcGx5LmM6MzU3NAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogcGF0Y2ggZG9lcyBub3QgYXBwbHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1ODYKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNoZWNraW5nIHBhdGNoICVzLi4uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjc5IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTYgYnVpbHRpbi9yZXNldC5jOjEyNAorIzogYnVpbHRpbi9hcHBseS5jOjM2ODAgYnVpbHRpbi9jaGVja291dC5jOjIxNiBidWlsdGluL3Jlc2V0LmM6MTI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4MjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODIzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZW1vdmUgJXMgZnJvbSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg1MAorIzogYnVpbHRpbi9hcHBseS5jOjM4NTEKICMsIGMtZm9ybWF0Ci1tc2dpZCAiY29ycnVwdCBwYXRjaCBmb3Igc3VicHJvamVjdCAlcyIKK21zZ2lkICJjb3JydXB0IHBhdGNoIGZvciBzdWJtb2R1bGUgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NTQKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODU1CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGF0IG5ld2x5IGNyZWF0ZWQgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODU5CisjOiBidWlsdGluL2FwcGx5LmM6Mzg2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIGJhY2tpbmcgc3RvcmUgZm9yIG5ld2x5IGNyZWF0ZWQgZmlsZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg2MiBidWlsdGluL2FwcGx5LmM6Mzk3MAorIzogYnVpbHRpbi9hcHBseS5jOjM4NjMgYnVpbHRpbi9hcHBseS5jOjM5NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFkZCBjYWNoZSBlbnRyeSBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4OTUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODk2CiAjLCBjLWZvcm1hdAogbXNnaWQgImNsb3NpbmcgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTQ0CisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGxpZWQgcGF0Y2ggJXMgY2xlYW5seS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQwCiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgIiIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjQwNDIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUyCisjOiBidWlsdGluL2FwcGx5LmM6NDA1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cnVuY2F0aW5nIC5yZWogZmlsZW5hbWUgdG8gJS4qcy5yZWoiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNzMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlamVjdGVkIGh1bmsgIyVkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDIyNgorIzogYnVpbHRpbi9hcHBseS5jOjQyMjcKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaW5wdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQyMzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjM4CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1NiBidWlsdGluL2FwcGx5LmM6NDM1OSBidWlsdGluL2Nsb25lLmM6OTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU3IGJ1aWx0aW4vYXBwbHkuYzo0MzYwIGJ1aWx0aW4vY2xvbmUuYzo5MQogIzogYnVpbHRpbi9mZXRjaC5jOjYzCiBtc2dpZCAicGF0aCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM1NworIzogYnVpbHRpbi9hcHBseS5jOjQzNTgKIG1zZ2lkICJkb24ndCBhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYwCisjOiBidWlsdGluL2FwcGx5LmM6NDM2MQogbXNnaWQgImFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYzCiBtc2dpZCAibnVtIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYzCisjOiBidWlsdGluL2FwcGx5LmM6NDM2NAogbXNnaWQgInJlbW92ZSA8bnVtPiBsZWFkaW5nIHNsYXNoZXMgZnJvbSB0cmFkaXRpb25hbCBkaWZmIHBhdGhzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY2CisjOiBidWlsdGluL2FwcGx5LmM6NDM2NwogbXNnaWQgImlnbm9yZSBhZGRpdGlvbnMgbWFkZSBieSB0aGUgcGF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjgKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY5CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBkaWZmc3RhdCBmb3IgdGhlIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzcyCisjOiBidWlsdGluL2FwcGx5LmM6NDM3MwogbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNzQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc1CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM3NgorIzogYnVpbHRpbi9hcHBseS5jOjQzNzcKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc4CisjOiBidWlsdGluL2FwcGx5LmM6NDM3OQogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4MAorIzogYnVpbHRpbi9hcHBseS5jOjQzODEKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4MgorIzogYnVpbHRpbi9hcHBseS5jOjQzODMKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4NAorIzogYnVpbHRpbi9hcHBseS5jOjQzODUKIG1zZ2lkICJhdHRlbXB0IHRocmVlLXdheSBtZXJnZSBpZiBhIHBhdGNoIGRvZXMgbm90IGFwcGx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg2CisjOiBidWlsdGluL2FwcGx5LmM6NDM4NwogbXNnaWQgImJ1aWxkIGEgdGVtcG9yYXJ5IGluZGV4IGJhc2VkIG9uIGVtYmVkZGVkIGluZGV4IGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg4IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTcgYnVpbHRpbi9scy1maWxlcy5jOjQ1NgorIzogYnVpbHRpbi9hcHBseS5jOjQzODkgYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NyBidWlsdGluL2xzLWZpbGVzLmM6NDYyCiBtc2dpZCAicGF0aHMgYXJlIHNlcGFyYXRlZCB3aXRoIE5VTCBjaGFyYWN0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzOTEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCiBtc2dpZCAiZW5zdXJlIGF0IGxlYXN0IDxuPiBsaW5lcyBvZiBjb250ZXh0IG1hdGNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM5MworIzogYnVpbHRpbi9hcHBseS5jOjQzOTQKIG1zZ2lkICJkZXRlY3QgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIHRoYXQgaGF2ZSB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQorIzogYnVpbHRpbi9hcHBseS5jOjQzOTcgYnVpbHRpbi9hcHBseS5jOjQ0MDAKIG1zZ2lkICJpZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIHdoZW4gZmluZGluZyBjb250ZXh0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDAyCisjOiBidWlsdGluL2FwcGx5LmM6NDQwMwogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA0CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNQogbXNnaWQgImRvbid0IGV4cGVjdCBhdCBsZWFzdCBvbmUgbGluZSBvZiBjb250ZXh0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA2CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNwogbXNnaWQgImxlYXZlIHRoZSByZWplY3RlZCBodW5rcyBpbiBjb3JyZXNwb25kaW5nICoucmVqIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA4CisjOiBidWlsdGluL2FwcGx5LmM6NDQwOQogbXNnaWQgImFsbG93IG92ZXJsYXBwaW5nIGh1bmtzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDExCisjOiBidWlsdGluL2FwcGx5LmM6NDQxMgogbXNnaWQgInRvbGVyYXRlIGluY29ycmVjdGx5IGRldGVjdGVkIG1pc3NpbmcgbmV3LWxpbmUgYXQgdGhlIGVuZCBvZiBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE0CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNQogbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxNgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTcKIG1zZ2lkICJyb290IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE3CisjOiBidWlsdGluL2FwcGx5LmM6NDQxOAogbXNnaWQgInByZXBlbmQgPHJvb3Q+IHRvIGFsbCBmaWxlbmFtZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQwCiBtc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQ3CisjOiBidWlsdGluL2FwcGx5LmM6NDQ0OAogbXNnaWQgIi0taW5kZXggb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0NTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDUxCiBtc2dpZCAiLS1jYWNoZWQgb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0NjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gcGF0Y2ggJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQ4MAorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDg2IGJ1aWx0aW4vYXBwbHkuYzo0NDk2CisjOiBidWlsdGluL2FwcGx5LmM6NDQ4NyBidWlsdGluL2FwcGx5LmM6NDQ5NwogIywgYy1mb3JtYXQKIG1zZ2lkICIlZCBsaW5lIGFkZHMgd2hpdGVzcGFjZSBlcnJvcnMuIgogbXNnaWRfcGx1cmFsICIlZCBsaW5lcyBhZGQgd2hpdGVzcGFjZSBlcnJvcnMuIgpAQCAtMjI1MywxMDMgKzIzMTMsMTAzIEBACiBtc2dpZCAidXBkYXRlIEJJU0VDVF9IRUFEIGluc3RlYWQgb2YgY2hlY2tpbmcgb3V0IHRoZSBjdXJyZW50IGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyNgogbXNnaWQgImdpdCBibGFtZSBbb3B0aW9uc10gW3Jldi1vcHRzXSBbcmV2XSBbLS1dIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjMwCisjOiBidWlsdGluL2JsYW1lLmM6MzEKIG1zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM1NQorIzogYnVpbHRpbi9ibGFtZS5jOjIyNzYKIG1zZ2lkICJTaG93IGJsYW1lIGVudHJpZXMgYXMgd2UgZmluZCB0aGVtLCBpbmNyZW1lbnRhbGx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU2CisjOiBidWlsdGluL2JsYW1lLmM6MjI3NwogbXNnaWQgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjc4CiBtc2dpZCAiRG8gbm90IHRyZWF0IHJvb3QgY29tbWl0cyBhcyBib3VuZGFyaWVzIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU4CisjOiBidWlsdGluL2JsYW1lLmM6MjI3OQogbXNnaWQgIlNob3cgd29yayBjb3N0IHN0YXRpc3RpY3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNTkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjgwCiBtc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjAKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjgxCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBmaWxlbmFtZSAoRGVmYXVsdDogYXV0bykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjgyCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBsaW5lbnVtYmVyIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYyCisjOiBidWlsdGluL2JsYW1lLmM6MjI4MwogbXNnaWQgIlNob3cgaW4gYSBmb3JtYXQgZGVzaWduZWQgZm9yIG1hY2hpbmUgY29uc3VtcHRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg0CiBtc2dpZCAiU2hvdyBwb3JjZWxhaW4gZm9ybWF0IHdpdGggcGVyLWxpbmUgY29tbWl0IGluZm9ybWF0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY0CisjOiBidWlsdGluL2JsYW1lLmM6MjI4NQogbXNnaWQgIlVzZSB0aGUgc2FtZSBvdXRwdXQgbW9kZSBhcyBnaXQtYW5ub3RhdGUgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg2CiBtc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2CisjOiBidWlsdGluL2JsYW1lLmM6MjI4NwogbXNnaWQgIlNob3cgbG9uZyBjb21taXQgU0hBMSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2NworIzogYnVpbHRpbi9ibGFtZS5jOjIyODgKIG1zZ2lkICJTdXBwcmVzcyBhdXRob3IgbmFtZSBhbmQgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY4CisjOiBidWlsdGluL2JsYW1lLmM6MjI4OQogbXNnaWQgIlNob3cgYXV0aG9yIGVtYWlsIGluc3RlYWQgb2YgbmFtZSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2OQorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTAKIG1zZ2lkICJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3MAorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTEKIG1zZ2lkICJTcGVuZCBleHRyYSBjeWNsZXMgdG8gZmluZCBiZXR0ZXIgbWF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkyCiBtc2dpZCAiVXNlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2l0LXJldi1saXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcyCisjOiBidWlsdGluL2JsYW1lLmM6MjI5MwogbXNnaWQgIlVzZSA8ZmlsZT4ncyBjb250ZW50cyBhcyB0aGUgZmluYWwgaW1hZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMgYnVpbHRpbi9ibGFtZS5jOjIzNzQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjk0IGJ1aWx0aW4vYmxhbWUuYzoyMjk1CiBtc2dpZCAic2NvcmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjk0CiBtc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NAorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTUKIG1zZ2lkICJGaW5kIGxpbmUgbW92ZW1lbnRzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CisjOiBidWlsdGluL2JsYW1lLmM6MjI5NgogbXNnaWQgIm4sbSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NQorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTYKIG1zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKIG1zZ3N0ciAiIgogCkBAIC0yNTc1LDggKzI2MzUsOCBAQAogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCi0jOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5Ci0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4CisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjE0MTQgYnVpbHRpbi9jb21taXQuYzoxNDE1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTYgYnVpbHRpbi9jb21taXQuYzoxNDE3IGJ1aWx0aW4vdGFnLmM6NDY4CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICIiCiAKQEAgLTI2NDAsNyArMjcwMCw3IEBACiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYxOQorIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYzMAogbXNnaWQgIkhFQUQgbm90IGZvdW5kIGJlbG93IHJlZnMvaGVhZHMhIgogbXNnc3RyICIiCiAKQEAgLTI3NTMsNDMgKzI4MTMsNDMgQEAKIG1zZ2lkICJOZWVkIGEgcmVwb3NpdG9yeSB0byB1bmJ1bmRsZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjMwMwogbXNnaWQgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cGU+fC0tdGV4dGNvbnYpIDxvYmplY3Q+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxNzcKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozMDQKIG1zZ2lkICJnaXQgY2F0LWZpbGUgKC0tYmF0Y2h8LS1iYXRjaC1jaGVjaykgPCA8bGlzdF9vZl9vYmplY3RzPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MTk1CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzQxCiBtc2dpZCAiPHR5cGU+IGNhbiBiZSBvbmUgb2Y6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTYKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNDIKIG1zZ2lkICJzaG93IG9iamVjdCB0eXBlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTcKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNDMKIG1zZ2lkICJzaG93IG9iamVjdCBzaXplIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTkKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNDUKIG1zZ2lkICJleGl0IHdpdGggemVybyB3aGVuIHRoZXJlJ3Mgbm8gZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMAorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0NgogbXNnaWQgInByZXR0eS1wcmludCBvYmplY3QncyBjb250ZW50IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDIKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNDgKIG1zZ2lkICJmb3IgYmxvYiBvYmplY3RzLCBydW4gdGV4dGNvbnYgb24gb2JqZWN0J3MgY29udGVudCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjA0CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzUwCiBtc2dpZCAic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNTMKIG1zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIiIKIApAQCAtMjgxNywzMCArMjg3Nyw1NSBAQAogbXNnaWQgImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA0NCBidWlsdGluL2djLmM6MTc3CisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE4IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0IGJ1aWx0aW4vZ2MuYzoxNzcKIG1zZ2lkICJzdXBwcmVzcyBwcm9ncmVzcyByZXBvcnRpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDYKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjYKK21zZ2lkICJzaG93IG5vbi1tYXRjaGluZyBpbnB1dCBwYXRocyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0MwogbXNnaWQgImNhbm5vdCBzcGVjaWZ5IHBhdGhuYW1lcyB3aXRoIC0tc3RkaW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDkKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2CiBtc2dpZCAiLXogb25seSBtYWtlcyBzZW5zZSB3aXRoIC0tc3RkaW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTEKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ4CiBtc2dpZCAibm8gcGF0aCBzcGVjaWZpZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUyCiBtc2dpZCAiLS1xdWlldCBpcyBvbmx5IHZhbGlkIHdpdGggYSBzaW5nbGUgcGF0aG5hbWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTcKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU0CiBtc2dpZCAiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiCiBtc2dzdHIgIiIKIAorIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTcKK21zZ2lkICItLW5vbi1tYXRjaGluZyBpcyBvbmx5IHZhbGlkIHdpdGggLS12ZXJib3NlIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2stbWFpbG1hcC5jOjgKK21zZ2lkICJnaXQgY2hlY2stbWFpbG1hcCBbb3B0aW9uc10gPGNvbnRhY3Q+Li4uIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2stbWFpbG1hcC5jOjEzCittc2dpZCAiYWxzbyByZWFkIGNvbnRhY3RzIGZyb20gc3RkaW4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jaGVjay1tYWlsbWFwLmM6MjQKKyMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIHBhcnNlIGNvbnRhY3Q6ICVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2hlY2stbWFpbG1hcC5jOjQ3Cittc2dpZCAibm8gY29udGFjdHMgc3BlY2lmaWVkIgorbXNnc3RyICIiCisKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxMjYKIG1zZ2lkICJnaXQgY2hlY2tvdXQtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCiBtc2dzdHIgIiIKQEAgLTI5NTcsNDIgKzMwNDIsNDIgQEAKIG1zZ2lkICJDYW4gbm90IGRvIHJlZmxvZyBmb3IgJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MzQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MzkKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY0NAorIzogYnVpbHRpbi9jaGVja291dC5jOjY0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJBbHJlYWR5IG9uICclcydcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGFuZCByZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTAgYnVpbHRpbi9jaGVja291dC5jOjk4NworIzogYnVpbHRpbi9jaGVja291dC5jOjY1NSBidWlsdGluL2NoZWNrb3V0LmM6OTk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY1MgorIzogYnVpbHRpbi9jaGVja291dC5jOjY1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIC4uLiBhbmQgJWQgbW9yZS5cbiIKIG1zZ3N0ciAiIgogCiAjLiBUaGUgc2luZ3VsYXIgdmVyc2lvbgotIzogYnVpbHRpbi9jaGVja291dC5jOjcxNAorIzogYnVpbHRpbi9jaGVja291dC5jOjcxOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiV2FybmluZzogeW91IGFyZSBsZWF2aW5nICVkIGNvbW1pdCBiZWhpbmQsIG5vdCBjb25uZWN0ZWQgdG9cbiIKQEAgLTMwMDcsNyArMzA5Miw3IEBACiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzMyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gYnkgY3JlYXRpbmcgYSBuZXcgYnJhbmNoLCB0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxuIgpAQCAtMzAxNyw0NTAgKzMxMDIsNTQ3IEBACiAiXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgorIzogYnVpbHRpbi9jaGVja291dC5jOjc2NwogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjc2NgorIzogYnVpbHRpbi9jaGVja291dC5jOjc3MQogbXNnaWQgIlByZXZpb3VzIEhFQUQgcG9zaXRpb24gd2FzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3OTMgYnVpbHRpbi9jaGVja291dC5jOjk4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjc5OCBidWlsdGluL2NoZWNrb3V0LmM6OTkyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiIgogCiAjLiBjYXNlICgxKQotIzogYnVpbHRpbi9jaGVja291dC5jOjkxOAorIzogYnVpbHRpbi9jaGVja291dC5jOjkyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHJlZmVyZW5jZTogJXMiCiBtc2dzdHIgIiIKIAogIy4gY2FzZSAoMSk6IHdhbnQgYSB0cmVlCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTU3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6OTY3CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZmVyZW5jZSBpcyBub3QgYSB0cmVlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTk2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNgogbXNnaWQgInBhdGhzIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTkgYnVpbHRpbi9jaGVja291dC5jOjEwMDMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDEzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcgYnVpbHRpbi9jaGVja291dC5jOjEwMTAgYnVpbHRpbi9jaGVja291dC5jOjEwMTUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNyBidWlsdGluL2NoZWNrb3V0LmM6MTAyMCBidWlsdGluL2NoZWNrb3V0LmM6MTAyNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBzd2l0Y2ggYnJhbmNoIHRvIGEgbm9uLWNvbW1pdCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTUgYnVpbHRpbi9jaGVja291dC5jOjEwNTcgYnVpbHRpbi9jbG9uZS5jOjg5CiAjOiBidWlsdGluL3JlbW90ZS5jOjE2OSBidWlsdGluL3JlbW90ZS5jOjE3MQogbXNnaWQgImJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTYKIG1zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0OAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKIG1zZ2lkICJjcmVhdGUvcmVzZXQgYW5kIGNoZWNrb3V0IGEgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQogbXNnaWQgImNyZWF0ZSByZWZsb2cgZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYwCiBtc2dpZCAiZGV0YWNoIHRoZSBIRUFEIGF0IG5hbWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjEKIG1zZ2lkICJzZXQgdXBzdHJlYW0gaW5mbyBmb3IgbmV3IGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjMKIG1zZ2lkICJuZXcgYnJhbmNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MwogbXNnaWQgIm5ldyB1bnBhcmVudGVkIGJyYW5jaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1NAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjQKIG1zZ2lkICJjaGVja291dCBvdXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY2CiBtc2dpZCAiY2hlY2tvdXQgdGhlaXIgdmVyc2lvbiBmb3IgdW5tZXJnZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY4CiBtc2dpZCAiZm9yY2UgY2hlY2tvdXQgKHRocm93IGF3YXkgbG9jYWwgbW9kaWZpY2F0aW9ucykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY5CiBtc2dpZCAicGVyZm9ybSBhIDMtd2F5IG1lcmdlIHdpdGggdGhlIG5ldyBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjAgYnVpbHRpbi9tZXJnZS5jOjIxNworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzAgYnVpbHRpbi9tZXJnZS5jOjIzMgogbXNnaWQgInVwZGF0ZSBpZ25vcmVkIGZpbGVzIChkZWZhdWx0KSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MSBidWlsdGluL2xvZy5jOjExNTggcGFyc2Utb3B0aW9ucy5oOjI0NQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzEgYnVpbHRpbi9sb2cuYzoxMjA4IHBhcnNlLW9wdGlvbnMuaDoyNDkKIG1zZ2lkICJzdHlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzIKIG1zZ2lkICJjb25mbGljdCBzdHlsZSAobWVyZ2Ugb3IgZGlmZjMpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3NQogbXNnaWQgImRvIG5vdCBsaW1pdCBwYXRoc3BlY3MgdG8gc3BhcnNlIGVudHJpZXMgb25seSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNzcKIG1zZ2lkICJzZWNvbmQgZ3Vlc3MgJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTAxCiBtc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTA4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTExOAogbXNnaWQgIi0tdHJhY2sgbmVlZHMgYSBicmFuY2ggbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQorIzogYnVpbHRpbi9jaGVja291dC5jOjExMjUKIG1zZ2lkICJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNTAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYwCiBtc2dpZCAiaW52YWxpZCBwYXRoIHNwZWNpZmljYXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS5cbiIKICJEaWQgeW91IGludGVuZCB0byBjaGVja291dCAnJXMnIHdoaWNoIGNhbiBub3QgYmUgcmVzb2x2ZWQgYXMgY29tbWl0PyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2MgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBkb2VzIG5vdCB0YWtlIGEgcGF0aCBhcmd1bWVudCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTY2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE3NgogbXNnaWQgIiIKICJnaXQgY2hlY2tvdXQ6IC0tb3Vycy8tLXRoZWlycywgLS1mb3JjZSBhbmQgLS1tZXJnZSBhcmUgaW5jb21wYXRpYmxlIHdoZW5cbiIKICJjaGVja2luZyBvdXQgb2YgdGhlIGluZGV4LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjAKLW1zZ2lkICJnaXQgY2xlYW4gWy1kXSBbLWZdIFstbl0gWy1xXSBbLWUgPHBhdHRlcm4+XSBbLXggfCAtWF0gWy0tXSA8cGF0aHM+Li4uIgorIzogYnVpbHRpbi9jbGVhbi5jOjI1Cittc2dpZCAiIgorImdpdCBjbGVhbiBbLWRdIFstZl0gWy1pXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjQKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdmluZyAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoyNQorIzogYnVpbHRpbi9jbGVhbi5jOjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIldvdWxkIHJlbW92ZSAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIzogYnVpbHRpbi9jbGVhbi5jOjMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNraXBwaW5nIHJlcG9zaXRvcnkgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjcKKyM6IGJ1aWx0aW4vY2xlYW4uYzozMgogIywgYy1mb3JtYXQKIG1zZ2lkICJXb3VsZCBza2lwIHJlcG9zaXRvcnkgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjgKKyM6IGJ1aWx0aW4vY2xlYW4uYzozMwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjAKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyOTMKK21zZ2lkICIiCisiUHJvbXB0IGhlbHA6XG4iCisiMSAgICAgICAgICAtIHNlbGVjdCBhIG51bWJlcmVkIGl0ZW1cbiIKKyJmb28gICAgICAgIC0gc2VsZWN0IGl0ZW0gYmFzZWQgb24gdW5pcXVlIHByZWZpeFxuIgorIiAgICAgICAgICAgLSAoZW1wdHkpIHNlbGVjdCBub3RoaW5nIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyOTcKK21zZ2lkICIiCisiUHJvbXB0IGhlbHA6XG4iCisiMSAgICAgICAgICAtIHNlbGVjdCBhIHNpbmdsZSBpdGVtXG4iCisiMy01ICAgICAgICAtIHNlbGVjdCBhIHJhbmdlIG9mIGl0ZW1zXG4iCisiMi0zLDYtOSAgICAtIHNlbGVjdCBtdWx0aXBsZSByYW5nZXNcbiIKKyJmb28gICAgICAgIC0gc2VsZWN0IGl0ZW0gYmFzZWQgb24gdW5pcXVlIHByZWZpeFxuIgorIi0uLi4gICAgICAgLSB1bnNlbGVjdCBzcGVjaWZpZWQgaXRlbXNcbiIKKyIqICAgICAgICAgIC0gY2hvb3NlIGFsbCBpdGVtc1xuIgorIiAgICAgICAgICAgLSAoZW1wdHkpIGZpbmlzaCBzZWxlY3RpbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjQ5MQorIywgYy1mb3JtYXQKK21zZ2lkICJIdWggKCVzKT8iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjYzNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnB1dCBpZ25vcmUgcGF0dGVybnM+PiAiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBDYW5ub3QgZmluZCBpdGVtcyBtYXRjaGVkIGJ5OiAlcyIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6NjkyCittc2dpZCAiU2VsZWN0IGl0ZW1zIHRvIGRlbGV0ZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzMyCisjLCBjLWZvcm1hdAorbXNnaWQgInJlbW92ZSAlcz8gIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo3NTcKK21zZ2lkICJCeWUuIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo3NjUKK21zZ2lkICIiCisiY2xlYW4gICAgICAgICAgICAgICAtIHN0YXJ0IGNsZWFuaW5nXG4iCisiZmlsdGVyIGJ5IHBhdHRlcm4gICAtIGV4Y2x1ZGUgaXRlbXMgZnJvbSBkZWxldGlvblxuIgorInNlbGVjdCBieSBudW1iZXJzICAgLSBzZWxlY3QgaXRlbXMgdG8gYmUgZGVsZXRlZCBieSBudW1iZXJzXG4iCisiYXNrIGVhY2ggICAgICAgICAgICAtIGNvbmZpcm0gZWFjaCBkZWxldGlvbiAobGlrZSBcInJtIC1pXCIpXG4iCisicXVpdCAgICAgICAgICAgICAgICAtIHN0b3AgY2xlYW5pbmdcbiIKKyJoZWxwICAgICAgICAgICAgICAgIC0gdGhpcyBzY3JlZW5cbiIKKyI/ICAgICAgICAgICAgICAgICAgIC0gaGVscCBmb3IgcHJvbXB0IHNlbGVjdGlvbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzkyCittc2dpZCAiKioqIENvbW1hbmRzICoqKiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzkzCittc2dpZCAiV2hhdCBub3ciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjgwMQorbXNnaWQgIldvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGl0ZW06IgorbXNnaWRfcGx1cmFsICJXb3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBpdGVtczoiCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBidWlsdGluL2NsZWFuLmM6ODE4Cittc2dpZCAiTm8gbW9yZSBmaWxlcyB0byBjbGVhbiwgZXhpdGluZy4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjg1MAogbXNnaWQgImRvIG5vdCBwcmludCBuYW1lcyBvZiBmaWxlcyByZW1vdmVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NTIKIG1zZ2lkICJmb3JjZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY0CisjOiBidWlsdGluL2NsZWFuLmM6ODUzCittc2dpZCAiaW50ZXJhY3RpdmUgY2xlYW5pbmciCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjg1NQogbXNnaWQgInJlbW92ZSB3aG9sZSBkaXJlY3RvcmllcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorIzogYnVpbHRpbi9jbGVhbi5jOjg1NiBidWlsdGluL2Rlc2NyaWJlLmM6NDIwIGJ1aWx0aW4vZ3JlcC5jOjcxNgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25hbWUtcmV2LmM6MzE1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODYKIG1zZ2lkICJwYXR0ZXJuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NTcKIG1zZ2lkICJhZGQgPHBhdHRlcm4+IHRvIGlnbm9yZSBydWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY3CisjOiBidWlsdGluL2NsZWFuLmM6ODU4CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY5CisjOiBidWlsdGluL2NsZWFuLmM6ODYwCiBtc2dpZCAicmVtb3ZlIG9ubHkgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTg3CisjOiBidWlsdGluL2NsZWFuLmM6ODc4CiBtc2dpZCAiLXggYW5kIC1YIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxOTEKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4ODIKIG1zZ2lkICIiCi0iY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gY2xlYW4iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9jbGVhbi5jOjE5NAotbXNnaWQgIiIKLSJjbGVhbi5yZXF1aXJlRm9yY2UgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtbiBub3IgLWYgZ2l2ZW47IHJlZnVzaW5nIHRvICIKKyJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLWksIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgogImNsZWFuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNworIzogYnVpbHRpbi9jbGVhbi5jOjg4NQorbXNnaWQgIiIKKyJjbGVhbi5yZXF1aXJlRm9yY2UgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtaSwgLW4gbm9yIC1mIGdpdmVuOyAiCisicmVmdXNpbmcgdG8gY2xlYW4iCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjM2CiBtc2dpZCAiZ2l0IGNsb25lIFtvcHRpb25zXSBbLS1dIDxyZXBvPiBbPGRpcj5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAotIzogYnVpbHRpbi9wdXNoLmM6NDM2CisjOiBidWlsdGluL2Nsb25lLmM6NjQgYnVpbHRpbi9mZXRjaC5jOjgyIGJ1aWx0aW4vbWVyZ2UuYzoyMjkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ2MgogbXNnaWQgImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjcKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NgogbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OCBidWlsdGluL2Nsb25lLmM6NzAgYnVpbHRpbi9pbml0LWRiLmM6NDg4CisjOiBidWlsdGluL2Nsb25lLmM6NjcgYnVpbHRpbi9jbG9uZS5jOjY5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAogbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3MgogbXNnaWQgImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NQorIzogYnVpbHRpbi9jbG9uZS5jOjc0CiBtc2dpZCAidG8gY2xvbmUgZnJvbSBhIGxvY2FsIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc3CisjOiBidWlsdGluL2Nsb25lLmM6NzYKIG1zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OAogbXNnaWQgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MSBidWlsdGluL2Nsb25lLmM6ODMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MCBidWlsdGluL2Nsb25lLmM6ODIKIG1zZ2lkICJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NCBidWlsdGluL2luaXQtZGIuYzo0ODUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MyBidWlsdGluL2luaXQtZGIuYzo0ODUKIG1zZ2lkICJ0ZW1wbGF0ZS1kaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg1IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgogbXNnaWQgImRpcmVjdG9yeSBmcm9tIHdoaWNoIHRlbXBsYXRlcyB3aWxsIGJlIHVzZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3CisjOiBidWlsdGluL2Nsb25lLmM6ODYKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODggYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAorIzogYnVpbHRpbi9jbG9uZS5jOjg3IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKIG1zZ2lkICJuYW1lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4OQorIzogYnVpbHRpbi9jbG9uZS5jOjg4CiBtc2dpZCAidXNlIDxuYW1lPiBpbnN0ZWFkIG9mICdvcmlnaW4nIHRvIHRyYWNrIHVwc3RyZWFtIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MQorIzogYnVpbHRpbi9jbG9uZS5jOjkwCiBtc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MgogbXNnaWQgInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk0IGJ1aWx0aW4vZmV0Y2guYzo4MyBidWlsdGluL2dyZXAuYzo2NjIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MyBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYxCiBtc2dpZCAiZGVwdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk1CisjOiBidWlsdGluL2Nsb25lLmM6OTQKIG1zZ2lkICJjcmVhdGUgYSBzaGFsbG93IGNsb25lIG9mIHRoYXQgZGVwdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk3CisjOiBidWlsdGluL2Nsb25lLmM6OTYKIG1zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAorIzogYnVpbHRpbi9jbG9uZS5jOjk3IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAogbXNnaWQgImdpdGRpciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTkgYnVpbHRpbi9pbml0LWRiLmM6NDk1CisjOiBidWlsdGluL2Nsb25lLmM6OTggYnVpbHRpbi9pbml0LWRiLmM6NDk1CiBtc2dpZCAic2VwYXJhdGUgZ2l0IGRpciBmcm9tIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MTAwCisjOiBidWlsdGluL2Nsb25lLmM6OTkKIG1zZ2lkICJrZXk9dmFsdWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjEwMQorIzogYnVpbHRpbi9jbG9uZS5jOjEwMAogbXNnaWQgInNldCBjb25maWcgaW5zaWRlIHRoZSBuZXcgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MjU0CisjOiBidWlsdGluL2Nsb25lLmM6MjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZmVyZW5jZSByZXBvc2l0b3J5ICclcycgaXMgbm90IGEgbG9jYWwgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxNworIzogYnVpbHRpbi9jbG9uZS5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMTkgYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTggYnVpbHRpbi9kaWZmLmM6NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzIxCisjOiBidWlsdGluL2Nsb25lLmM6MzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzU3CisjOiBidWlsdGluL2Nsb25lLmM6MzU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNjEKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNvcHkgZmlsZSB0byAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozODQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZG9uZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Mzk3CisjOiBidWlsdGluL2Nsb25lLmM6Mzk2CiBtc2dpZCAiIgogIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKICJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKICJhbmQgcmV0cnkgdGhlIGNoZWNrb3V0IHdpdGggJ2dpdCBjaGVja291dCAtZiBIRUFEJ1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo0NzYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo0NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZpbmQgcmVtb3RlIGJyYW5jaCAlcyB0byBjbG9uZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjU1MAorIzogYnVpbHRpbi9jbG9uZS5jOjU1NQorIywgYy1mb3JtYXQKK21zZ2lkICJDaGVja2luZyBjb25uZWN0aXZpdHkuLi4gIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTgKIG1zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjEwCisjOiBidWlsdGluL2Nsb25lLmM6NTYwCisjLCBjLWZvcm1hdAorbXNnaWQgImRvbmVcbiIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Nsb25lLmM6NjIxCiBtc2dpZCAicmVtb3RlIEhFQUQgcmVmZXJzIHRvIG5vbmV4aXN0ZW50IHJlZiwgdW5hYmxlIHRvIGNoZWNrb3V0LlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NDEKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NTIKIG1zZ2lkICJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NDkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjAKIG1zZ2lkICJUb28gbWFueSBhcmd1bWVudHMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NTMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjQKIG1zZ2lkICJZb3UgbXVzdCBzcGVjaWZ5IGEgcmVwb3NpdG9yeSB0byBjbG9uZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2NAorIzogYnVpbHRpbi9jbG9uZS5jOjc3NQogIywgYy1mb3JtYXQKIG1zZ2lkICItLWJhcmUgYW5kIC0tb3JpZ2luICVzIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2NworIzogYnVpbHRpbi9jbG9uZS5jOjc3OAogbXNnaWQgIi0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyIGFyZSBpbmNvbXBhdGlibGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3ODAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OTEKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVwb3NpdG9yeSAnJXMnIGRvZXMgbm90IGV4aXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3ODUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OTYKIG1zZ2lkICItLWRlcHRoIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2UgZmlsZTovLyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Nzk1CisjOiBidWlsdGluL2Nsb25lLmM6Nzk4Cittc2dpZCAiLS1sb2NhbCBpcyBpZ25vcmVkIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVzdGluYXRpb24gcGF0aCAnJXMnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYW4gZW1wdHkgZGlyZWN0b3J5LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODA1CisjOiBidWlsdGluL2Nsb25lLmM6ODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIndvcmtpbmcgdHJlZSAnJXMnIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MzEgYnVpbHRpbi9jbG9uZS5jOjg0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgb2YgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODIxCisjOiBidWlsdGluL2Nsb25lLmM6ODM0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgd29yayB0cmVlIGRpciAnJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQwCisjOiBidWlsdGluL2Nsb25lLmM6ODUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byBiYXJlIHJlcG9zaXRvcnkgJyVzJy4uLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NDIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2xvbmluZyBpbnRvICclcycuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODc3CisjOiBidWlsdGluL2Nsb25lLmM6ODkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MjYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3RlIGJyYW5jaCAlcyBub3QgZm91bmQgaW4gdXBzdHJlYW0gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkzMworIzogYnVpbHRpbi9jbG9uZS5jOjk0OQogbXNnaWQgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIiIKIApAQCAtMzQ5NiwxNSArMzY3OCwxNSBAQAogbXNnaWQgIi0tY29tbWFuZCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM0CisjOiBidWlsdGluL2NvbW1pdC5jOjM1CiBtc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDAKIG1zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0NAorIzogYnVpbHRpbi9jb21taXQuYzo0NQogbXNnaWQgIiIKICJZb3VyIG5hbWUgYW5kIGVtYWlsIGFkZHJlc3Mgd2VyZSBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHkgYmFzZWRcbiIKICJvbiB5b3VyIHVzZXJuYW1lIGFuZCBob3N0bmFtZS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhleSBhcmUgYWNjdXJhdGUuXG4iCkBAIC0zNTE4LDE0ICszNzAwLDE0IEBACiAiICAgIGdpdCBjb21taXQgLS1hbWVuZCAtLXJlc2V0LWF1dGhvclxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTcKIG1zZ2lkICIiCiAiWW91IGFza2VkIHRvIGFtZW5kIHRoZSBtb3N0IHJlY2VudCBjb21taXQsIGJ1dCBkb2luZyBzbyB3b3VsZCBtYWtlXG4iCiAiaXQgZW1wdHkuIFlvdSBjYW4gcmVwZWF0IHlvdXIgY29tbWFuZCB3aXRoIC0tYWxsb3ctZW1wdHksIG9yIHlvdSBjYW5cbiIKICJyZW1vdmUgdGhlIGNvbW1pdCBlbnRpcmVseSB3aXRoIFwiZ2l0IHJlc2V0IEhFQUReXCIuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MQorIzogYnVpbHRpbi9jb21taXQuYzo2MgogbXNnaWQgIiIKICJUaGUgcHJldmlvdXMgY2hlcnJ5LXBpY2sgaXMgbm93IGVtcHR5LCBwb3NzaWJseSBkdWUgdG8gY29uZmxpY3QgcmVzb2x1dGlvbi5cbiIKICJJZiB5b3Ugd2lzaCB0byBjb21taXQgaXQgYW55d2F5LCB1c2U6XG4iCkBAIC0zNTM1LDkzICszNzE3LDkzIEBACiAiT3RoZXJ3aXNlLCBwbGVhc2UgdXNlICdnaXQgcmVzZXQnXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoyNjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MjY1CiBtc2dpZCAiZmFpbGVkIHRvIHVucGFjayBIRUFEIHRyZWUgb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzAyCisjOiBidWlsdGluL2NvbW1pdC5jOjMwNwogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzA4CisjOiBidWlsdGluL2NvbW1pdC5jOjMxMwogbXNnaWQgImludGVyYWN0aXZlIGFkZCBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozNDEgYnVpbHRpbi9jb21taXQuYzozNjIgYnVpbHRpbi9jb21taXQuYzo0MTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzQ2IGJ1aWx0aW4vY29tbWl0LmM6MzY3IGJ1aWx0aW4vY29tbWl0LmM6NDE3CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ld19pbmRleCBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzkzCisjOiBidWlsdGluL2NvbW1pdC5jOjM5OAogbXNnaWQgImNhbm5vdCBkbyBhIHBhcnRpYWwgY29tbWl0IGR1cmluZyBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5NQorIzogYnVpbHRpbi9jb21taXQuYzo0MDAKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MDUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDEwCiBtc2dpZCAiY2Fubm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDI1CisjOiBidWlsdGluL2NvbW1pdC5jOjQzMAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSB0ZW1wb3JhcnkgaW5kZXggZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjUxMyBidWlsdGluL2NvbW1pdC5jOjUxOQorIzogYnVpbHRpbi9jb21taXQuYzo1MjEgYnVpbHRpbi9jb21taXQuYzo1MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBjb21taXQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCisjOiBidWlsdGluL2NvbW1pdC5jOjU0OQogbXNnaWQgIm1hbGZvcm1lZCAtLWF1dGhvciBwYXJhbWV0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1NjIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1hbGZvcm1lZCBpZGVudCBzdHJpbmc6ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MDAgYnVpbHRpbi9jb21taXQuYzo2MzMgYnVpbHRpbi9jb21taXQuYzo5NTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjA3IGJ1aWx0aW4vY29tbWl0LmM6NjQwIGJ1aWx0aW4vY29tbWl0LmM6OTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBsb29rdXAgY29tbWl0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjEyIGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjE5IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiKHJlYWRpbmcgbG9nIG1lc3NhZ2UgZnJvbSBzdGFuZGFyZCBpbnB1dClcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxNAorIzogYnVpbHRpbi9jb21taXQuYzo2MjEKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxOAorIzogYnVpbHRpbi9jb21taXQuYzo2MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYyNAorIzogYnVpbHRpbi9jb21taXQuYzo2MzEKIG1zZ2lkICJjb21taXQgaGFzIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ3CiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ0CisjOiBidWlsdGluL2NvbW1pdC5jOjY1MQogbXNnaWQgImNvdWxkIG5vdCByZWFkIFNRVUFTSF9NU0ciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzE2CiBtc2dpZCAiY291bGQgbm90IHdyaXRlIGNvbW1pdCB0ZW1wbGF0ZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcyMAorIzogYnVpbHRpbi9jb21taXQuYzo3MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMzYzMSw3ICszODEzLDcgQEAKICJhbmQgdHJ5IGFnYWluLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzI1CisjOiBidWlsdGluL2NvbW1pdC5jOjczMgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0zNjQxLDE0ICszODIzLDE0IEBACiAiYW5kIHRyeSBhZ2Fpbi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjczNworIzogYnVpbHRpbi9jb21taXQuYzo3NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKICJ3aXRoICclYycgd2lsbCBiZSBpZ25vcmVkLCBhbmQgYW4gZW1wdHkgbWVzc2FnZSBhYm9ydHMgdGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc0MgorIzogYnVpbHRpbi9jb21taXQuYzo3NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKQEAgLTM2NTYsMzUxICszODM4LDM1MSBAQAogIkFuIGVtcHR5IG1lc3NhZ2UgYWJvcnRzIHRoZSBjb21taXQuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc2MgorIzogYnVpbHRpbi9jb21taXQuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNDb21taXR0ZXI6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCisjOiBidWlsdGluL2NvbW1pdC5jOjc4OQogbXNnaWQgIkNhbm5vdCByZWFkIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODE5CisjOiBidWlsdGluL2NvbW1pdC5jOjgyNgogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODM0IGJ1aWx0aW4vdGFnLmM6MzU5CisjOiBidWlsdGluL2NvbW1pdC5jOjg0MSBidWlsdGluL3RhZy5jOjM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBtZXNzYWdlIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24uXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5MzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6OTM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIGV4aXN0aW5nIGF1dGhvciBmb3VuZCB3aXRoICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5NDYgYnVpbHRpbi9jb21taXQuYzoxMTQwCisjOiBidWlsdGluL2NvbW1pdC5jOjk1MyBidWlsdGluL2NvbW1pdC5jOjExODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCB1bnRyYWNrZWQgZmlsZXMgbW9kZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTc2CisjOiBidWlsdGluL2NvbW1pdC5jOjk5MAorbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMjAKIG1zZ2lkICJVc2luZyBib3RoIC0tcmVzZXQtYXV0aG9yIGFuZCAtLWF1dGhvciBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTg3CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzEKIG1zZ2lkICJZb3UgaGF2ZSBub3RoaW5nIHRvIGFtZW5kLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5MAorIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5MgorIzogYnVpbHRpbi9jb21taXQuYzoxMDM2CiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY2hlcnJ5LXBpY2sgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NQorIzogYnVpbHRpbi9jb21taXQuYzoxMDM5CiBtc2dpZCAiT3B0aW9ucyAtLXNxdWFzaCBhbmQgLS1maXh1cCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMDUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA0OQogbXNnaWQgIk9ubHkgb25lIG9mIC1jLy1DLy1GLy0tZml4dXAgY2FuIGJlIHVzZWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAwNworIzogYnVpbHRpbi9jb21taXQuYzoxMDUxCiBtc2dpZCAiT3B0aW9uIC1tIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIC1jLy1DLy1GLy0tZml4dXAuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxNQorIzogYnVpbHRpbi9jb21taXQuYzoxMDU5CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA3NgogbXNnaWQgIk9ubHkgb25lIG9mIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA3OAogbXNnaWQgIk5vIHBhdGhzIHdpdGggLS1pbmNsdWRlLy0tb25seSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA4MAogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDM4CisjOiBidWlsdGluL2NvbW1pdC5jOjEwODIKIG1zZ2lkICJFeHBsaWNpdCBwYXRocyBzcGVjaWZpZWQgd2l0aG91dCAtaSBub3IgLW87IGFzc3VtaW5nIC0tb25seSBwYXRocy4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNDggYnVpbHRpbi90YWcuYzo1NzUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA5MiBidWlsdGluL3RhZy5jOjU3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGNsZWFudXAgbW9kZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA5NwogbXNnaWQgIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDU5IGJ1aWx0aW4vY29tbWl0LmM6MTE5NAotbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNTQgYnVpbHRpbi9jb21taXQuYzoxMzkwCisjOiBidWlsdGluL2NvbW1pdC5jOjEyMDMgYnVpbHRpbi9jb21taXQuYzoxNDM2CiBtc2dpZCAic2hvdyBzdGF0dXMgY29uY2lzZWx5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NiBidWlsdGluL2NvbW1pdC5jOjEzOTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwNSBidWlsdGluL2NvbW1pdC5jOjE0MzgKIG1zZ2lkICJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNTggYnVpbHRpbi9jb21taXQuYzoxMzk0IGJ1aWx0aW4vcHVzaC5jOjQyNgorIzogYnVpbHRpbi9jb21taXQuYzoxMjA3IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MCBidWlsdGluL3B1c2guYzo0NTIKIG1zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjEgYnVpbHRpbi9jb21taXQuYzoxMzk2CisjOiBidWlsdGluL2NvbW1pdC5jOjEyMTAgYnVpbHRpbi9jb21taXQuYzoxNDQyCiBtc2dpZCAic2hvdyBzdGF0dXMgaW4gbG9uZyBmb3JtYXQgKGRlZmF1bHQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NCBidWlsdGluL2NvbW1pdC5jOjEzOTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxMyBidWlsdGluL2NvbW1pdC5jOjE0NDUKIG1zZ2lkICJ0ZXJtaW5hdGUgZW50cmllcyB3aXRoIE5VTCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjYgYnVpbHRpbi9jb21taXQuYzoxNDAyIGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTkKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjIgYnVpbHRpbi90YWcuYzo0NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxNSBidWlsdGluL2NvbW1pdC5jOjE0NDggYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MCBidWlsdGluL3RhZy5jOjQ1OQogbXNnaWQgIm1vZGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTY3IGJ1aWx0aW4vY29tbWl0LmM6MTQwMgorIzogYnVpbHRpbi9jb21taXQuYzoxMjE2IGJ1aWx0aW4vY29tbWl0LmM6MTQ0OAogbXNnaWQgInNob3cgdW50cmFja2VkIGZpbGVzLCBvcHRpb25hbCBtb2RlczogYWxsLCBub3JtYWwsIG5vLiAoRGVmYXVsdDogYWxsKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxOQogbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzEgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMjIwIHBhcnNlLW9wdGlvbnMuaDoxNTQKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MgorIzogYnVpbHRpbi9jb21taXQuYzoxMjIxCiBtc2dpZCAiIgogImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgogIihEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAorIzogYnVpbHRpbi9jb21taXQuYzoxMjIzCiBtc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5NAogbXNnaWQgImNvdWxkbid0IGxvb2sgdXAgbmV3bHkgY3JlYXRlZCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjUwCisjOiBidWlsdGluL2NvbW1pdC5jOjEyOTYKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgbmV3bHkgY3JlYXRlZCBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjkxCisjOiBidWlsdGluL2NvbW1pdC5jOjEzMzcKIG1zZ2lkICJkZXRhY2hlZCBIRUFEIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MworIzogYnVpbHRpbi9jb21taXQuYzoxMzM5CiBtc2dpZCAiIChyb290LWNvbW1pdCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzYwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDYKIG1zZ2lkICJzdXBwcmVzcyBzdW1tYXJ5IGFmdGVyIHN1Y2Nlc3NmdWwgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MQorIzogYnVpbHRpbi9jb21taXQuYzoxNDA3CiBtc2dpZCAic2hvdyBkaWZmIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MworIzogYnVpbHRpbi9jb21taXQuYzoxNDA5CiBtc2dpZCAiQ29tbWl0IG1lc3NhZ2Ugb3B0aW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjQgYnVpbHRpbi90YWcuYzo0NTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMCBidWlsdGluL3RhZy5jOjQ1NwogbXNnaWQgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTEKIG1zZ2lkICJhdXRob3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTEKIG1zZ2lkICJvdmVycmlkZSBhdXRob3IgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjYgYnVpbHRpbi9nYy5jOjE3OAorIzogYnVpbHRpbi9jb21taXQuYzoxNDEyIGJ1aWx0aW4vZ2MuYzoxNzgKIG1zZ2lkICJkYXRlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NgorIzogYnVpbHRpbi9jb21taXQuYzoxNDEyCiBtc2dpZCAib3ZlcnJpZGUgZGF0ZSBmb3IgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NyBidWlsdGluL21lcmdlLmM6MjA4IGJ1aWx0aW4vbm90ZXMuYzo1MzMKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTAgYnVpbHRpbi90YWcuYzo0NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMyBidWlsdGluL21lcmdlLmM6MjIzIGJ1aWx0aW4vbm90ZXMuYzo0MDUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NjIgYnVpbHRpbi90YWcuYzo0NTUKIG1zZ2lkICJtZXNzYWdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NworIzogYnVpbHRpbi9jb21taXQuYzoxNDEzCiBtc2dpZCAiY29tbWl0IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTQKIG1zZ2lkICJyZXVzZSBhbmQgZWRpdCBtZXNzYWdlIGZyb20gc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNQogbXNnaWQgInJldXNlIG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MAorIzogYnVpbHRpbi9jb21taXQuYzoxNDE2CiBtc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gZml4dXAgc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNwogbXNnaWQgInVzZSBhdXRvc3F1YXNoIGZvcm1hdHRlZCBtZXNzYWdlIHRvIHNxdWFzaCBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MgorIzogYnVpbHRpbi9jb21taXQuYzoxNDE4CiBtc2dpZCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTkgYnVpbHRpbi9sb2cuYzoxMTYwIGJ1aWx0aW4vcmV2ZXJ0LmM6MTExCiBtc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAorIzogYnVpbHRpbi9jb21taXQuYzoxNDIwCiBtc2dpZCAidXNlIHNwZWNpZmllZCB0ZW1wbGF0ZSBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NQorIzogYnVpbHRpbi9jb21taXQuYzoxNDIxCiBtc2dpZCAiZm9yY2UgZWRpdCBvZiBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc2CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjIKIG1zZ2lkICJkZWZhdWx0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NiBidWlsdGluL3RhZy5jOjQ2MAorIzogYnVpbHRpbi9jb21taXQuYzoxNDIyIGJ1aWx0aW4vdGFnLmM6NDYwCiBtc2dpZCAiaG93IHRvIHN0cmlwIHNwYWNlcyBhbmQgI2NvbW1lbnRzIGZyb20gbWVzc2FnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQyMwogbXNnaWQgImluY2x1ZGUgc3RhdHVzIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjQgYnVpbHRpbi9tZXJnZS5jOjIzMCBidWlsdGluL3RhZy5jOjQ2MQogbXNnaWQgImtleSBpZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi9tZXJnZS5jOjIxNgorIzogYnVpbHRpbi9jb21taXQuYzoxNDI1IGJ1aWx0aW4vbWVyZ2UuYzoyMzEKIG1zZ2lkICJHUEcgc2lnbiBjb21taXQiCiBtc2dzdHIgIiIKIAogIy4gZW5kIGNvbW1pdCBtZXNzYWdlIG9wdGlvbnMKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MgorIzogYnVpbHRpbi9jb21taXQuYzoxNDI4CiBtc2dpZCAiQ29tbWl0IGNvbnRlbnRzIG9wdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzgzCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjkKIG1zZ2lkICJjb21taXQgYWxsIGNoYW5nZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzAKIG1zZ2lkICJhZGQgc3BlY2lmaWVkIGZpbGVzIHRvIGluZGV4IGZvciBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzEKIG1zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQzMgogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg3CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzMKIG1zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzQKIG1zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OQorIzogYnVpbHRpbi9jb21taXQuYzoxNDM1CiBtc2dpZCAic2hvdyB3aGF0IHdvdWxkIGJlIGNvbW1pdHRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0NgogbXNnaWQgImFtZW5kIHByZXZpb3VzIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0NwogbXNnaWQgImJ5cGFzcyBwb3N0LXJld3JpdGUgaG9vayIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ1MgogbXNnaWQgIm9rIHRvIHJlY29yZCBhbiBlbXB0eSBjaGFuZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NTUKIG1zZ2lkICJvayB0byByZWNvcmQgYSBjaGFuZ2Ugd2l0aCBhbiBlbXB0eSBtZXNzYWdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQorIzogYnVpbHRpbi9jb21taXQuYzoxNDg4CiBtc2dpZCAiY291bGQgbm90IHBhcnNlIEhFQUQgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ3OSBidWlsdGluL21lcmdlLmM6NTEwCisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYgYnVpbHRpbi9tZXJnZS5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NgorIzogYnVpbHRpbi9jb21taXQuYzoxNTMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvcnJ1cHQgTUVSR0VfSEVBRCBmaWxlICglcykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDkzCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NDAKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgorIzogYnVpbHRpbi9jb21taXQuYzoxNTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGNvbW1pdCBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1MjYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJBYm9ydGluZyBjb21taXQ7IHlvdSBkaWQgbm90IGVkaXQgdGhlIG1lc3NhZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTMxCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NDYgYnVpbHRpbi9tZXJnZS5jOjg0NyBidWlsdGluL21lcmdlLmM6ODcyCisjOiBidWlsdGluL2NvbW1pdC5jOjE1OTMgYnVpbHRpbi9tZXJnZS5jOjg2MSBidWlsdGluL21lcmdlLmM6ODg2CiBtc2dpZCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1pdCBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTY3CisjOiBidWlsdGluL2NvbW1pdC5jOjE2MTQKIG1zZ2lkICJjYW5ub3QgbG9jayBIRUFEIHJlZiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTYxOAogbXNnaWQgImNhbm5vdCB1cGRhdGUgSEVBRCByZWYiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTgyCisjOiBidWlsdGluL2NvbW1pdC5jOjE2MjkKIG1zZ2lkICIiCiAiUmVwb3NpdG9yeSBoYXMgYmVlbiB1cGRhdGVkLCBidXQgdW5hYmxlIHRvIHdyaXRlXG4iCiAibmV3X2luZGV4IGZpbGUuIENoZWNrIHRoYXQgZGlzayBpcyBub3QgZnVsbCBvciBxdW90YSBpc1xuIgpAQCAtNDAxMSwxMTUgKzQxOTMsMTIzIEBACiBtc2dpZCAiZ2l0IGNvbmZpZyBbb3B0aW9uc10iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9jb25maWcuYzo1MQorIzogYnVpbHRpbi9jb25maWcuYzo1MgogbXNnaWQgIkNvbmZpZyBmaWxlIGxvY2F0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTIKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTMKIG1zZ2lkICJ1c2UgZ2xvYmFsIGNvbmZpZyBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTMKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTQKIG1zZ2lkICJ1c2Ugc3lzdGVtIGNvbmZpZyBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTQKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTUKIG1zZ2lkICJ1c2UgcmVwb3NpdG9yeSBjb25maWcgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjU1CisjOiBidWlsdGluL2NvbmZpZy5jOjU2CiBtc2dpZCAidXNlIGdpdmVuIGNvbmZpZyBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTYKLW1zZ2lkICJBY3Rpb24iCisjOiBidWlsdGluL2NvbmZpZy5jOjU3Cittc2dpZCAiYmxvYi1pZCIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjU3Ci1tc2dpZCAiZ2V0IHZhbHVlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCittc2dpZCAicmVhZCBjb25maWcgZnJvbSBnaXZlbiBibG9iIG9iamVjdCIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjU4Ci1tc2dpZCAiZ2V0IGFsbCB2YWx1ZXM6IGtleSBbdmFsdWUtcmVnZXhdIgorbXNnaWQgIkFjdGlvbiIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjU5Ci1tc2dpZCAiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCittc2dpZCAiZ2V0IHZhbHVlOiBuYW1lIFt2YWx1ZS1yZWdleF0iCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2MAotbXNnaWQgInJlcGxhY2UgYWxsIG1hdGNoaW5nIHZhcmlhYmxlczogbmFtZSB2YWx1ZSBbdmFsdWVfcmVnZXhdIgorbXNnaWQgImdldCBhbGwgdmFsdWVzOiBrZXkgW3ZhbHVlLXJlZ2V4XSIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjYxCi1tc2dpZCAiYWRkIGEgbmV3IHZhcmlhYmxlOiBuYW1lIHZhbHVlIgorbXNnaWQgImdldCB2YWx1ZXMgZm9yIHJlZ2V4cDogbmFtZS1yZWdleCBbdmFsdWUtcmVnZXhdIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjIKLW1zZ2lkICJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIgorbXNnaWQgInJlcGxhY2UgYWxsIG1hdGNoaW5nIHZhcmlhYmxlczogbmFtZSB2YWx1ZSBbdmFsdWVfcmVnZXhdIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKLW1zZ2lkICJyZW1vdmUgYWxsIG1hdGNoZXM6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKK21zZ2lkICJhZGQgYSBuZXcgdmFyaWFibGU6IG5hbWUgdmFsdWUiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2NAotbXNnaWQgInJlbmFtZSBzZWN0aW9uOiBvbGQtbmFtZSBuZXctbmFtZSIKK21zZ2lkICJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjUKLW1zZ2lkICJyZW1vdmUgYSBzZWN0aW9uOiBuYW1lIgorbXNnaWQgInJlbW92ZSBhbGwgbWF0Y2hlczogbmFtZSBbdmFsdWUtcmVnZXhdIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjYKLW1zZ2lkICJsaXN0IGFsbCIKK21zZ2lkICJyZW5hbWUgc2VjdGlvbjogb2xkLW5hbWUgbmV3LW5hbWUiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo2NwotbXNnaWQgIm9wZW4gYW4gZWRpdG9yIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjggYnVpbHRpbi9jb25maWcuYzo2OQotbXNnaWQgInNsb3QiCittc2dpZCAicmVtb3ZlIGEgc2VjdGlvbjogbmFtZSIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjY4Ci1tc2dpZCAiZmluZCB0aGUgY29sb3IgY29uZmlndXJlZDogW2RlZmF1bHRdIgorbXNnaWQgImxpc3QgYWxsIgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vY29uZmlnLmM6NjkKLW1zZ2lkICJmaW5kIHRoZSBjb2xvciBzZXR0aW5nOiBbc3Rkb3V0LWlzLXR0eV0iCittc2dpZCAib3BlbiBhbiBlZGl0b3IiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo3MCBidWlsdGluL2NvbmZpZy5jOjcxCittc2dpZCAic2xvdCIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjcwCi1tc2dpZCAiVHlwZSIKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3MQotbXNnaWQgInZhbHVlIGlzIFwidHJ1ZVwiIG9yIFwiZmFsc2VcIiIKK21zZ2lkICJmaW5kIHRoZSBjb2xvciBzZXR0aW5nOiBbc3Rkb3V0LWlzLXR0eV0iCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3MgotbXNnaWQgInZhbHVlIGlzIGRlY2ltYWwgbnVtYmVyIgorbXNnaWQgIlR5cGUiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3MwotbXNnaWQgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIKK21zZ2lkICJ2YWx1ZSBpcyBcInRydWVcIiBvciBcImZhbHNlXCIiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3NAotbXNnaWQgInZhbHVlIGlzIGEgcGF0aCAoZmlsZSBvciBkaXJlY3RvcnkgbmFtZSkiCittc2dpZCAidmFsdWUgaXMgZGVjaW1hbCBudW1iZXIiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3NQotbXNnaWQgIk90aGVyIgorbXNnaWQgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIKIG1zZ3N0ciAiIgogCiAjOiBidWlsdGluL2NvbmZpZy5jOjc2Ci1tc2dpZCAidGVybWluYXRlIHZhbHVlcyB3aXRoIE5VTCBieXRlIgorbXNnaWQgInZhbHVlIGlzIGEgcGF0aCAoZmlsZSBvciBkaXJlY3RvcnkgbmFtZSkiCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9jb25maWcuYzo3NworbXNnaWQgIk90aGVyIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzgKK21zZ2lkICJ0ZXJtaW5hdGUgdmFsdWVzIHdpdGggTlVMIGJ5dGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9jb25maWcuYzo3OQogbXNnaWQgInJlc3BlY3QgaW5jbHVkZSBkaXJlY3RpdmVzIG9uIGxvb2t1cCIKIG1zZ3N0ciAiIgogCkBAIC00MTMxLDEzMyArNDMyMSwxMzcgQEAKIG1zZ2lkICJwcmludCBzaXplcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjE1CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTYKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjE2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTcKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzMwotIywgYy1mb3JtYXQKLW1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIG5vdCBhdmFpbGFibGUiCi1tc2dzdHIgIiIKLQogIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKK21zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIG5vdCBhdmFpbGFibGUiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjI0MQorIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIGhhcyBubyBlbWJlZGRlZCBuYW1lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNDMKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgaXMgcmVhbGx5ICclcycgaGVyZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjY2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBhIHZhbGlkIG9iamVjdCBuYW1lICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgbm90IGEgdmFsaWQgJyVzJyBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4NgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJubyB0YWcgZXhhY3RseSBtYXRjaGVzICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4OAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJzZWFyY2hpbmcgdG8gZGVzY3JpYmUgJXNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzI4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzMyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZpbmlzaGVkIHNlYXJjaCBhdCAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIGFubm90YXRlZCB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgogIkhvd2V2ZXIsIHRoZXJlIHdlcmUgdW5hbm5vdGF0ZWQgdGFnczogdHJ5IC0tdGFncy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM1NgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiTm8gdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKICJUcnkgLS1hbHdheXMsIG9yIGNyZWF0ZSBzb21lIHRhZ3MuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNzcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozODQKICMsIGMtZm9ybWF0CiBtc2dpZCAidHJhdmVyc2VkICVsdSBjb21taXRzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibW9yZSB0aGFuICVpIHRhZ3MgZm91bmQ7IGxpc3RlZCAlaSBtb3N0IHJlY2VudFxuIgogImdhdmUgdXAgc2VhcmNoIGF0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwOQogbXNnaWQgImZpbmQgdGhlIHRhZyB0aGF0IGNvbWVzIGFmdGVyIHRoZSBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMAogbXNnaWQgImRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMQogbXNnaWQgInVzZSBhbnkgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDUKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIKIG1zZ2lkICJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCiBtc2dpZCAiYWx3YXlzIHVzZSBsb25nIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5Ci1tc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDExCi1tc2dpZCAiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCi1tc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE1IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKLW1zZ2lkICJzaG93IGFiYnJldmlhdGVkIGNvbW1pdCBvYmplY3QgYXMgZmFsbGJhY2siCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNgotbXNnaWQgIm1hcmsiCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE0Cittc2dpZCAib25seSBmb2xsb3cgZmlyc3QgcGFyZW50IgogbXNnc3RyICIiCiAKICM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTcKK21zZ2lkICJvbmx5IG91dHB1dCBleGFjdCBtYXRjaGVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTkKK21zZ2lkICJjb25zaWRlciA8bj4gbW9zdCByZWNlbnQgdGFncyAoZGVmYXVsdDogMTApIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MjEKK21zZ2lkICJvbmx5IGNvbnNpZGVyIHRhZ3MgbWF0Y2hpbmcgPHBhdHRlcm4+IgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MjMgYnVpbHRpbi9uYW1lLXJldi5jOjMyMgorbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDI0Cittc2dpZCAibWFyayIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDI1CiBtc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MzUKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NDMKIG1zZ2lkICItLWxvbmcgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hYmJyZXY9MCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDYxCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDY5CiBtc2dpZCAiTm8gbmFtZXMgZm91bmQsIGNhbm5vdCBkZXNjcmliZSBhbnl0aGluZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4MQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ4OQogbXNnaWQgIi0tZGlydHkgaXMgaW5jb21wYXRpYmxlIHdpdGggY29tbWl0dGlzaGVzIgogbXNnc3RyICIiCiAKQEAgLTQyNjYsMzEgKzQ0NjAsMjYgQEAKIG1zZ2lkICInJXMnOiBub3QgYSByZWd1bGFyIGZpbGUgb3Igc3ltbGluayIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2RpZmYuYzoyMjgKKyM6IGJ1aWx0aW4vZGlmZi5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wdGlvbjogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzA1CisjOiBidWlsdGluL2RpZmYuYzozMDcKIG1zZ2lkICJOb3QgYSBnaXQgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2RpZmYuYzozNDgKKyM6IGJ1aWx0aW4vZGlmZi5jOjM1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2RpZmYuYzozNTMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAibW9yZSB0aGFuICVkIHRyZWVzIGdpdmVuOiAnJXMnIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vZGlmZi5jOjM2MworIzogYnVpbHRpbi9kaWZmLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiB0d28gYmxvYnMgZ2l2ZW46ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzcxCisjOiBidWlsdGluL2RpZmYuYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAiIgpAQCAtNDI5OSwzOSArNDQ4OCwzOSBAQAogbXNnaWQgImdpdCBmYXN0LWV4cG9ydCBbcmV2LWxpc3Qtb3B0c10iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1OAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgogbXNnaWQgInNob3cgcHJvZ3Jlc3MgYWZ0ZXIgPG4+IG9iamVjdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2OAogbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiBzaWduZWQgdGFncyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYzCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcxCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHRhZ3MgdGhhdCB0YWcgZmlsdGVyZWQgb2JqZWN0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0CiBtc2dpZCAiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2OAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NgogbXNnaWQgIkltcG9ydCBtYXJrcyBmcm9tIHRoaXMgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc4CiBtc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MgorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY4MAogbXNnaWQgIk91dHB1dCBmdWxsIHRyZWUgZm9yIGVhY2ggY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzQKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2ODIKIG1zZ2lkICJVc2UgdGhlIGRvbmUgZmVhdHVyZSB0byB0ZXJtaW5hdGUgdGhlIHN0cmVhbSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjgzCiBtc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgogbXNnc3RyICIiCiAKQEAgLTQ0MDcsNyArNDU5Niw3IEBACiBtc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAorIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTE3NwogbXNnaWQgImRpciIKIG1zZ3N0ciAiIgogCkBAIC00NDE5LDE2MiArNDYwOCwxNjIgQEAKIG1zZ2lkICJkZWZhdWx0IG1vZGUgZm9yIHJlY3Vyc2lvbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjA0CisjOiBidWlsdGluL2ZldGNoLmM6MjIwCiBtc2dpZCAiQ291bGRuJ3QgZmluZCByZW1vdGUgcmVmIEhFQUQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI1NworIzogYnVpbHRpbi9mZXRjaC5jOjI3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgJXMgbm90IGZvdW5kIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNjIKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzgKIG1zZ2lkICJbdXAgdG8gZGF0ZV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3NgorIzogYnVpbHRpbi9mZXRjaC5jOjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIhICUtKnMgJS0qcyAtPiAlcyAgKGNhbid0IGZldGNoIGluIGN1cnJlbnQgYnJhbmNoKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjc3IGJ1aWx0aW4vZmV0Y2guYzozNjMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTMgYnVpbHRpbi9mZXRjaC5jOjM3OQogbXNnaWQgIltyZWplY3RlZF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4OAorIzogYnVpbHRpbi9mZXRjaC5jOjMwNAogbXNnaWQgIlt0YWcgdXBkYXRlXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MjkwIGJ1aWx0aW4vZmV0Y2guYzozMjUgYnVpbHRpbi9mZXRjaC5jOjM0MworIzogYnVpbHRpbi9mZXRjaC5jOjMwNiBidWlsdGluL2ZldGNoLmM6MzQxIGJ1aWx0aW4vZmV0Y2guYzozNTkKIG1zZ2lkICIgICh1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMwOAorIzogYnVpbHRpbi9mZXRjaC5jOjMyNAogbXNnaWQgIltuZXcgdGFnXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzExCisjOiBidWlsdGluL2ZldGNoLmM6MzI3CiBtc2dpZCAiW25ldyBicmFuY2hdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTQKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMzAKIG1zZ2lkICJbbmV3IHJlZl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1OQorIzogYnVpbHRpbi9mZXRjaC5jOjM3NQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNzUKIG1zZ2lkICJmb3JjZWQgdXBkYXRlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNjUKKyM6IGJ1aWx0aW4vZmV0Y2guYzozODEKIG1zZ2lkICIobm9uLWZhc3QtZm9yd2FyZCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM5NiBidWlsdGluL2ZldGNoLmM6Njg4CisjOiBidWlsdGluL2ZldGNoLmM6NDEyIGJ1aWx0aW4vZmV0Y2guYzo3MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQwNQorIzogYnVpbHRpbi9mZXRjaC5jOjQyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQ5MQorIzogYnVpbHRpbi9mZXRjaC5jOjUyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJGcm9tICUuKnNcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTAyCisjOiBidWlsdGluL2ZldGNoLmM6NTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJzb21lIGxvY2FsIHJlZnMgY291bGQgbm90IGJlIHVwZGF0ZWQ7IHRyeSBydW5uaW5nXG4iCiAiICdnaXQgcmVtb3RlIHBydW5lICVzJyB0byByZW1vdmUgYW55IG9sZCwgY29uZmxpY3RpbmcgYnJhbmNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1MgorIzogYnVpbHRpbi9mZXRjaC5jOjU4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NTMKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAgKCVzIGhhcyBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1NjAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1ODkKIG1zZ2lkICJbZGVsZXRlZF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU2MSBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1OTAgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo2NzgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gZmV0Y2ggaW50byBjdXJyZW50IGJyYW5jaCAlcyBvZiBub24tYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg5CisjOiBidWlsdGluL2ZldGNoLmM6ODIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc5MgorIzogYnVpbHRpbi9mZXRjaC5jOjgyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIGlzIGlnbm9yZWQgZm9yICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg5NAorIzogYnVpbHRpbi9mZXRjaC5jOjkyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJGZXRjaGluZyAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTYgYnVpbHRpbi9yZW1vdGUuYzoxMDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MzAgYnVpbHRpbi9yZW1vdGUuYzoxMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZldGNoICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5NDkKIG1zZ2lkICIiCiAiTm8gcmVtb3RlIHJlcG9zaXRvcnkgc3BlY2lmaWVkLiAgUGxlYXNlLCBzcGVjaWZ5IGVpdGhlciBhIFVSTCBvciBhXG4iCiAicmVtb3RlIG5hbWUgZnJvbSB3aGljaCBuZXcgcmV2aXNpb25zIHNob3VsZCBiZSBmZXRjaGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTM1CisjOiBidWlsdGluL2ZldGNoLmM6OTY5CiBtc2dpZCAiWW91IG5lZWQgdG8gc3BlY2lmeSBhIHRhZyBuYW1lLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTgxCisjOiBidWlsdGluL2ZldGNoLmM6MTAxNQogbXNnaWQgIi0tZGVwdGggYW5kIC0tdW5zaGFsbG93IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDE3CiBtc2dpZCAiLS11bnNoYWxsb3cgb24gYSBjb21wbGV0ZSByZXBvc2l0b3J5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDIKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDM2CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDQKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDM4CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDE1CisjOiBidWlsdGluL2ZldGNoLmM6MTA0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBzdWNoIHJlbW90ZSBvciByZW1vdGUgZ3JvdXA6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDIzCisjOiBidWlsdGluL2ZldGNoLmM6MTA1NwogbXNnaWQgIkZldGNoaW5nIGEgZ3JvdXAgYW5kIHNwZWNpZnlpbmcgcmVmc3BlY3MgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiIgogCkBAIC00NTgyLDkgKzQ3NzEsOSBAQAogbXNnaWQgImdpdCBmbXQtbWVyZ2UtbXNnIFstbSA8bWVzc2FnZT5dIFstLWxvZ1s9PG4+XXwtLW5vLWxvZ10gWy0tZmlsZSA8ZmlsZT5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjYgYnVpbHRpbi9ncmVwLmM6NzAxCi0jOiBidWlsdGluL21lcmdlLmM6MTg4IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUgYnVpbHRpbi9zaG93LXJlZi5jOjE3NQotIzogYnVpbHRpbi90YWcuYzo0NDYgcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM5CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMAorIzogYnVpbHRpbi9tZXJnZS5jOjIwMyBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzkKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjI0MwogbXNnaWQgIm4iCiBtc2dzdHIgIiIKIApAQCAtNDczOSwyMjAgKzQ5MjgsMjIwIEBACiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjM2NQorIzogYnVpbHRpbi9ncmVwLmM6MzY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjaGRpcjogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDQzIGJ1aWx0aW4vZ3JlcC5jOjQ3OAorIzogYnVpbHRpbi9ncmVwLmM6NDQyIGJ1aWx0aW4vZ3JlcC5jOjQ3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDkzCisjOiBidWlsdGluL2dyZXAuYzo0OTIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGdyZXAgZnJvbSBvYmplY3Qgb2YgdHlwZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo1NTEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJzd2l0Y2ggYCVjJyBleHBlY3RzIGEgbnVtZXJpY2FsIHZhbHVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjU2OAorIzogYnVpbHRpbi9ncmVwLmM6NTY3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQzCisjOiBidWlsdGluL2dyZXAuYzo2NDIKIG1zZ2lkICJzZWFyY2ggaW4gaW5kZXggaW5zdGVhZCBvZiBpbiB0aGUgd29yayB0cmVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY0NQorIzogYnVpbHRpbi9ncmVwLmM6NjQ0CiBtc2dpZCAiZmluZCBpbiBjb250ZW50cyBub3QgbWFuYWdlZCBieSBnaXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQ3CisjOiBidWlsdGluL2dyZXAuYzo2NDYKIG1zZ2lkICJzZWFyY2ggaW4gYm90aCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQ5CisjOiBidWlsdGluL2dyZXAuYzo2NDgKIG1zZ2lkICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY1MgorIzogYnVpbHRpbi9ncmVwLmM6NjUxCiBtc2dpZCAic2hvdyBub24tbWF0Y2hpbmcgbGluZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjU0CisjOiBidWlsdGluL2dyZXAuYzo2NTMKIG1zZ2lkICJjYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY1NgorIzogYnVpbHRpbi9ncmVwLmM6NjU1CiBtc2dpZCAibWF0Y2ggcGF0dGVybnMgb25seSBhdCB3b3JkIGJvdW5kYXJpZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjU4CisjOiBidWlsdGluL2dyZXAuYzo2NTcKIG1zZ2lkICJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2MAorIzogYnVpbHRpbi9ncmVwLmM6NjU5CiBtc2dpZCAiZG9uJ3QgbWF0Y2ggcGF0dGVybnMgaW4gYmluYXJ5IGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2MworIzogYnVpbHRpbi9ncmVwLmM6NjYyCiBtc2dpZCAiZGVzY2VuZCBhdCBtb3N0IDxkZXB0aD4gbGV2ZWxzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworIzogYnVpbHRpbi9ncmVwLmM6NjY2CiBtc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjcwCisjOiBidWlsdGluL2dyZXAuYzo2NjkKIG1zZ2lkICJ1c2UgYmFzaWMgUE9TSVggcmVndWxhciBleHByZXNzaW9ucyAoZGVmYXVsdCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjczCisjOiBidWlsdGluL2dyZXAuYzo2NzIKIG1zZ2lkICJpbnRlcnByZXQgcGF0dGVybnMgYXMgZml4ZWQgc3RyaW5ncyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NzYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3NQogbXNnaWQgInVzZSBQZXJsLWNvbXBhdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NzkKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3OAogbXNnaWQgInNob3cgbGluZSBudW1iZXJzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY4MAorIzogYnVpbHRpbi9ncmVwLmM6Njc5CiBtc2dpZCAiZG9uJ3Qgc2hvdyBmaWxlbmFtZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjgxCisjOiBidWlsdGluL2dyZXAuYzo2ODAKIG1zZ2lkICJzaG93IGZpbGVuYW1lcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MgogbXNnaWQgInNob3cgZmlsZW5hbWVzIHJlbGF0aXZlIHRvIHRvcCBkaXJlY3RvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njg1CisjOiBidWlsdGluL2dyZXAuYzo2ODQKIG1zZ2lkICJzaG93IG9ubHkgZmlsZW5hbWVzIGluc3RlYWQgb2YgbWF0Y2hpbmcgbGluZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njg3CisjOiBidWlsdGluL2dyZXAuYzo2ODYKIG1zZ2lkICJzeW5vbnltIGZvciAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4OQogbXNnaWQgInNob3cgb25seSB0aGUgbmFtZXMgb2YgZmlsZXMgd2l0aG91dCBtYXRjaCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MQogbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njk0CisjOiBidWlsdGluL2dyZXAuYzo2OTMKIG1zZ2lkICJzaG93IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY5NQorIzogYnVpbHRpbi9ncmVwLmM6Njk0CiBtc2dpZCAiaGlnaGxpZ2h0IG1hdGNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njk3CisjOiBidWlsdGluL2dyZXAuYzo2OTYKIG1zZ2lkICJwcmludCBlbXB0eSBsaW5lIGJldHdlZW4gbWF0Y2hlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTkKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5OAogbXNnaWQgInNob3cgZmlsZW5hbWUgb25seSBvbmNlIGFib3ZlIG1hdGNoZXMgZnJvbSBzYW1lIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzAyCisjOiBidWlsdGluL2dyZXAuYzo3MDEKIG1zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBhbmQgYWZ0ZXIgbWF0Y2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MDUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNAogbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIG1hdGNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzA3CisjOiBidWlsdGluL2dyZXAuYzo3MDYKIG1zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGFmdGVyIG1hdGNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzA4CisjOiBidWlsdGluL2dyZXAuYzo3MDcKIG1zZ2lkICJzaG9ydGN1dCBmb3IgLUMgTlVNIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcxMQorIzogYnVpbHRpbi9ncmVwLmM6NzEwCiBtc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MTMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxMgogbXNnaWQgInNob3cgdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcxNgorIzogYnVpbHRpbi9ncmVwLmM6NzE1CiBtc2dpZCAicmVhZCBwYXR0ZXJucyBmcm9tIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzE4CisjOiBidWlsdGluL2dyZXAuYzo3MTcKIG1zZ2lkICJtYXRjaCA8cGF0dGVybj4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzIwCisjOiBidWlsdGluL2dyZXAuYzo3MTkKIG1zZ2lkICJjb21iaW5lIHBhdHRlcm5zIHNwZWNpZmllZCB3aXRoIC1lIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjczMgorIzogYnVpbHRpbi9ncmVwLmM6NzMxCiBtc2dpZCAiaW5kaWNhdGUgaGl0IHdpdGggZXhpdCBzdGF0dXMgd2l0aG91dCBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzM0CisjOiBidWlsdGluL2dyZXAuYzo3MzMKIG1zZ2lkICJzaG93IG9ubHkgbWF0Y2hlcyBmcm9tIGZpbGVzIHRoYXQgbWF0Y2ggYWxsIHBhdHRlcm5zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjczNgorIzogYnVpbHRpbi9ncmVwLmM6NzM1CiBtc2dpZCAic2hvdyBwYXJzZSB0cmVlIGZvciBncmVwIGV4cHJlc3Npb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzQwCisjOiBidWlsdGluL2dyZXAuYzo3MzkKIG1zZ2lkICJwYWdlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo3NDAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczOQogbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjc0MworIzogYnVpbHRpbi9ncmVwLmM6NzQyCiBtc2dpZCAiYWxsb3cgY2FsbGluZyBvZiBncmVwKDEpIChpZ25vcmVkIGJ5IHRoaXMgYnVpbGQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjc0NCBidWlsdGluL3Nob3ctcmVmLmM6MTg0CisjOiBidWlsdGluL2dyZXAuYzo3NDMgYnVpbHRpbi9zaG93LXJlZi5jOjE4OAogbXNnaWQgInNob3cgdXNhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODExCisjOiBidWlsdGluL2dyZXAuYzo4MTAKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo4NjYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg2NQogbXNnaWQgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBvbmx5IHdvcmtzIG9uIHRoZSB3b3JrdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2dyZXAuYzo4ODkKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg4OAogbXNnaWQgIi0tY2FjaGVkIG9yIC0tdW50cmFja2VkIGNhbm5vdCBiZSB1c2VkIHdpdGggLS1uby1pbmRleC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODk0CisjOiBidWlsdGluL2dyZXAuYzo4OTMKIG1zZ2lkICItLW5vLWluZGV4IG9yIC0tdW50cmFja2VkIGNhbm5vdCBiZSB1c2VkIHdpdGggcmV2cy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODk3CisjOiBidWlsdGluL2dyZXAuYzo4OTYKIG1zZ2lkICItLVtuby1dZXhjbHVkZS1zdGFuZGFyZCBjYW5ub3QgYmUgdXNlZCBmb3IgdHJhY2tlZCBjb250ZW50cy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTA1CisjOiBidWlsdGluL2dyZXAuYzo5MDQKIG1zZ2lkICJib3RoIC0tY2FjaGVkIGFuZCB0cmVlcyBhcmUgZ2l2ZW4uIgogbXNnc3RyICIiCiAKQEAgLTQ5OTAsMzk2ICs1MTc5LDM5NiBAQAogbXNnaWQgInByb2Nlc3MgZmlsZSBhcyBpdCB3ZXJlIGZyb20gdGhpcyBwYXRoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQzCisjOiBidWlsdGluL2hlbHAuYzo0MQogbXNnaWQgInByaW50IGFsbCBhdmFpbGFibGUgY29tbWFuZHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDQKKyM6IGJ1aWx0aW4vaGVscC5jOjQyCiBtc2dpZCAicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ1CisjOiBidWlsdGluL2hlbHAuYzo0MwogbXNnaWQgInNob3cgbWFuIHBhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDYKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0CiBtc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDgKKyM6IGJ1aWx0aW4vaGVscC5jOjQ2CiBtc2dpZCAic2hvdyBpbmZvIHBhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NTQKKyM6IGJ1aWx0aW4vaGVscC5jOjUyCiBtc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo2NgorIzogYnVpbHRpbi9oZWxwLmM6NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6OTQKKyM6IGJ1aWx0aW4vaGVscC5jOjkyCiBtc2dpZCAiRmFpbGVkIHRvIHN0YXJ0IGVtYWNzY2xpZW50LiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDcKKyM6IGJ1aWx0aW4vaGVscC5jOjEwNQogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBlbWFjc2NsaWVudCB2ZXJzaW9uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMTUKKyM6IGJ1aWx0aW4vaGVscC5jOjExMwogIywgYy1mb3JtYXQKIG1zZ2lkICJlbWFjc2NsaWVudCB2ZXJzaW9uICclZCcgdG9vIG9sZCAoPCAyMikuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEzMyBidWlsdGluL2hlbHAuYzoxNjEgYnVpbHRpbi9oZWxwLmM6MTcwIGJ1aWx0aW4vaGVscC5jOjE3OAorIzogYnVpbHRpbi9oZWxwLmM6MTMxIGJ1aWx0aW4vaGVscC5jOjE1OSBidWlsdGluL2hlbHAuYzoxNjggYnVpbHRpbi9oZWxwLmM6MTc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIxOAorIzogYnVpbHRpbi9oZWxwLmM6MjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBwYXRoIGZvciB1bnN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5jbWQnIGluc3RlYWQuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIzMAorIzogYnVpbHRpbi9oZWxwLmM6MjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgogIlBsZWFzZSBjb25zaWRlciB1c2luZyAnbWFuLjx0b29sPi5wYXRoJyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzozNTEKKyM6IGJ1aWx0aW4vaGVscC5jOjM0OQogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnOiB1bmtub3duIG1hbiB2aWV3ZXIuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM2OAorIzogYnVpbHRpbi9oZWxwLmM6MzY2CiBtc2dpZCAibm8gbWFuIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM3NgorIzogYnVpbHRpbi9oZWxwLmM6Mzc0CiBtc2dpZCAibm8gaW5mbyB2aWV3ZXIgaGFuZGxlZCB0aGUgcmVxdWVzdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjIKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMAogbXNnaWQgIkRlZmluaW5nIGF0dHJpYnV0ZXMgcGVyIHBhdGgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDIzCisjOiBidWlsdGluL2hlbHAuYzo0MjEKIG1zZ2lkICJBIEdpdCBnbG9zc2FyeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjQKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMgogbXNnaWQgIlNwZWNpZmllcyBpbnRlbnRpb25hbGx5IHVudHJhY2tlZCBmaWxlcyB0byBpZ25vcmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDI1CisjOiBidWlsdGluL2hlbHAuYzo0MjMKIG1zZ2lkICJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjYKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNAogbXNnaWQgIlNwZWNpZnlpbmcgcmV2aXNpb25zIGFuZCByYW5nZXMgZm9yIEdpdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjcKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNQogbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyOAorIzogYnVpbHRpbi9oZWxwLmM6NDI2CiBtc2dpZCAiQW4gb3ZlcnZpZXcgb2YgcmVjb21tZW5kZWQgd29ya2Zsb3dzIHdpdGggR2l0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ0MAorIzogYnVpbHRpbi9oZWxwLmM6NDM4CiBtc2dpZCAiVGhlIGNvbW1vbiBHaXQgZ3VpZGVzIGFyZTpcbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NjIgYnVpbHRpbi9oZWxwLmM6NDc4CisjOiBidWlsdGluL2hlbHAuYzo0NjAgYnVpbHRpbi9oZWxwLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVzYWdlOiAlcyVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ5NAorIzogYnVpbHRpbi9oZWxwLmM6NDkyCiAjLCBjLWZvcm1hdAogbXNnaWQgImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxODIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJvYmplY3QgdHlwZSBtaXNtYXRjaCBhdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyMDIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIwNAogbXNnaWQgIm9iamVjdCBvZiB1bmV4cGVjdGVkIHR5cGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjM5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IGZpbGwgJWQgYnl0ZSIKIG1zZ2lkX3BsdXJhbCAiY2Fubm90IGZpbGwgJWQgYnl0ZXMiCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NAogbXNnaWQgImVhcmx5IEVPRiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NQogbXNnaWQgInJlYWQgZXJyb3Igb24gaW5wdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjcKIG1zZ2lkICJ1c2VkIG1vcmUgYnl0ZXMgdGhhbiB3ZXJlIGF2YWlsYWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI3NAogbXNnaWQgInBhY2sgdG9vIGxhcmdlIGZvciBjdXJyZW50IGRlZmluaXRpb24gb2Ygb2ZmX3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjg1Ci0jLCBjLWZvcm1hdAotbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgJyVzJyIKLW1zZ3N0ciAiIgotCiAjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTAKICMsIGMtZm9ybWF0Cittc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSAnJXMnIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5NQorIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiBwYWNrZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA5CiBtc2dpZCAicGFjayBzaWduYXR1cmUgbWlzbWF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzozMTEKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayB2ZXJzaW9uICU8UFJJdTMyPiB1bnN1cHBvcnRlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMjQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyBiYWQgb2JqZWN0IGF0IG9mZnNldCAlbHU6ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImluZmxhdGUgcmV0dXJuZWQgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDk1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1MDAKIG1zZ2lkICJvZmZzZXQgdmFsdWUgb3ZlcmZsb3cgZm9yIGRlbHRhIGJhc2Ugb2JqZWN0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTA4CiBtc2dpZCAiZGVsdGEgYmFzZSBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDcKIG1zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZSBtaXNzaW5nIgogbXNnaWRfcGx1cmFsICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGVzIG1pc3NpbmciCiBtc2dzdHJbMF0gIiIKIG1zZ3N0clsxXSAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1NzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU3NQogbXNnaWQgInNlcmlvdXMgaW5mbGF0ZSBpbmNvbnNpc3RlbmN5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2MSBidWlsdGluL2luZGV4LXBhY2suYzo2NjcgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjkwCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MjQgYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjYgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjcyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY5NQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzI5IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczOAogIywgYy1mb3JtYXQKIG1zZ2lkICJTSEExIENPTExJU0lPTiBGT1VORCBXSVRIICVzICEiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY0IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjkgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzM1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkIGV4aXN0aW5nIG9iamVjdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NDQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGJsb2Igb2JqZWN0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc1OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjYKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODM4IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2OAogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA5CiBtc2dpZCAiUmVjZWl2aW5nIG9iamVjdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwOQogbXNnaWQgIkluZGV4aW5nIG9iamVjdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDQwCiBtc2dpZCAiY2Fubm90IGZzdGF0IHBhY2tmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDMKIG1zZ2lkICJwYWNrIGhhcyBqdW5rIGF0IHRoZSBlbmQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA0OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA1NAogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkgaW4gcGFyc2VfcGFja19vYmplY3RzKCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA3NwogbXNnaWQgIlJlc29sdmluZyBkZWx0YXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRocmVhZDogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyOQogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb21wbGV0ZWQgd2l0aCAlZCBsb2NhbCBvYmplY3RzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5leHBlY3RlZCB0YWlsIGNoZWNrc3VtIGZvciAlcyAoZGlzayBjb3JydXB0aW9uPykiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhIgogbXNnaWRfcGx1cmFsICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhcyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGRlZmxhdGUgYXBwZW5kZWQgb2JqZWN0ICglZCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJsb2NhbCBvYmplY3QgJXMgaXMgY29ycnVwdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc5CiBtc2dpZCAiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5NQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwMAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgY2xvc2Ugd3JpdHRlbiBrZWVwIGZpbGUgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzA4CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzEzCiBtc2dpZCAiY2Fubm90IHN0b3JlIHBhY2sgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzE5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzI0CiBtc2dpZCAiY2Fubm90IHN0b3JlIGluZGV4IGZpbGUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgcGFjay5pbmRleHZlcnNpb249JTxQUkl1MzI+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCBudW1iZXIgb2YgdGhyZWFkcyBzcGVjaWZpZWQgKCVkKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzYyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MzUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNjcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJubyB0aHJlYWRzIHN1cHBvcnQsIGlnbm9yaW5nICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gZXhpc3RpbmcgcGFjayBmaWxlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGlkeCBmaWxlIGZvciAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NzQKICMsIGMtZm9ybWF0CiBtc2dpZCAibm9uIGRlbHRhOiAlZCBvYmplY3QiCiBtc2dpZF9wbHVyYWwgIm5vbiBkZWx0YTogJWQgb2JqZWN0cyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0NzYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE0ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3QiCiBtc2dpZF9wbHVyYWwgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0cyIKIG1zZ3N0clswXSAiIgogbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MDMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MDkKIG1zZ2lkICJDYW5ub3QgY29tZSBiYWNrIHRvIGN3ZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1NyBidWlsdGluL2luZGV4LXBhY2suYzoxNTYwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTcyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTAKIG1zZ2lkICItLWZpeC10aGluIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgLS1zdGRpbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTg0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTQgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwNAogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrZmlsZSBuYW1lICclcycgZG9lcyBub3QgZW5kIHdpdGggJy5wYWNrJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNjAzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNjEzCiBtc2dpZCAiLS12ZXJpZnkgd2l0aCBubyBwYWNrZmlsZSBuYW1lIGdpdmVuIgogbXNnc3RyICIiCiAKQEAgLTU1MTMsNyArNTcwMiw3IEBACiBtc2dpZCAic3BlY2lmeSB0aGF0IHRoZSBnaXQgcmVwb3NpdG9yeSBpcyB0byBiZSBzaGFyZWQgYW1vbmdzdCBzZXZlcmFsIHVzZXJzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MyBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc3CisjOiBidWlsdGluL2luaXQtZGIuYzo0OTMgYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NQogbXNnaWQgImJlIHF1aWV0IgogbXNnc3RyICIiCiAKQEAgLTU1NDMsMzQwICs1NzMyLDM1MyBAQAogbXNnaWQgIkNhbm5vdCBhY2Nlc3Mgd29yayB0cmVlICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzo0MAorIzogYnVpbHRpbi9sb2cuYzo0MQogbXNnaWQgImdpdCBsb2cgWzxvcHRpb25zPl0gWzxyZXZpc2lvbiByYW5nZT5dIFtbLS1dIDxwYXRoPi4uLl1cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjQxCisjOiBidWlsdGluL2xvZy5jOjQyCiBtc2dpZCAiICAgb3I6IGdpdCBzaG93IFtvcHRpb25zXSA8b2JqZWN0Pi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMworIzogYnVpbHRpbi9sb2cuYzoxMjQKIG1zZ2lkICJzdXBwcmVzcyBkaWZmIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNAorIzogYnVpbHRpbi9sb2cuYzoxMjUKIG1zZ2lkICJzaG93IHNvdXJjZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNQorIzogYnVpbHRpbi9sb2cuYzoxMjYKIG1zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNgorIzogYnVpbHRpbi9sb2cuYzoxMjcKIG1zZ2lkICJkZWNvcmF0ZSBvcHRpb25zIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTk5CisjOiBidWlsdGluL2xvZy5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzo0MjIgYnVpbHRpbi9sb2cuYzo1MTQKKyM6IGJ1aWx0aW4vbG9nLmM6NDUzIGJ1aWx0aW4vbG9nLmM6NTQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIG9iamVjdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjUzOAorIzogYnVpbHRpbi9sb2cuYzo1NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biB0eXBlOiAlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjYzOAorIzogYnVpbHRpbi9sb2cuYzo2NjkKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwCisjOiBidWlsdGluL2xvZy5jOjc1MQogbXNnaWQgIm5hbWUgb2Ygb3V0cHV0IGRpcmVjdG9yeSBpcyB0b28gbG9uZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjczNgorIzogYnVpbHRpbi9sb2cuYzo3NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gcGF0Y2ggZmlsZSAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjc1MAorIzogYnVpbHRpbi9sb2cuYzo3ODEKIG1zZ2lkICJOZWVkIGV4YWN0bHkgb25lIHJhbmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjc1OAorIzogYnVpbHRpbi9sb2cuYzo3ODkKIG1zZ2lkICJOb3QgYSByYW5nZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzo4NjAKKyM6IGJ1aWx0aW4vbG9nLmM6ODkxCiBtc2dpZCAiQ292ZXIgbGV0dGVyIG5lZWRzIGVtYWlsIGZvcm1hdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjkzNgorIzogYnVpbHRpbi9sb2cuYzo5NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zYW5lIGluLXJlcGx5LXRvOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjk2NAorIzogYnVpbHRpbi9sb2cuYzo5OTUKIG1zZ2lkICJnaXQgZm9ybWF0LXBhdGNoIFtvcHRpb25zXSBbPHNpbmNlPiB8IDxyZXZpc2lvbiByYW5nZT5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTAwOQorIzogYnVpbHRpbi9sb2cuYzoxMDQwCiBtc2dpZCAiVHdvIG91dHB1dCBkaXJlY3Rvcmllcz8iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTA4CisjOiBidWlsdGluL2xvZy5jOjExNTUKIG1zZ2lkICJ1c2UgW1BBVENIIG4vbV0gZXZlbiB3aXRoIGEgc2luZ2xlIHBhdGNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExMQorIzogYnVpbHRpbi9sb2cuYzoxMTU4CiBtc2dpZCAidXNlIFtQQVRDSF0gZXZlbiB3aXRoIG11bHRpcGxlIHBhdGNoZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTE1CisjOiBidWlsdGluL2xvZy5jOjExNjIKIG1zZ2lkICJwcmludCBwYXRjaGVzIHRvIHN0YW5kYXJkIG91dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NAogbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExOQorIzogYnVpbHRpbi9sb2cuYzoxMTY2CiBtc2dpZCAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMAorIzogYnVpbHRpbi9sb2cuYzoxMTY3CiBtc2dpZCAic2Z4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMQorIzogYnVpbHRpbi9sb2cuYzoxMTY4CiBtc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIzCisjOiBidWlsdGluL2xvZy5jOjExNzAKIG1zZ2lkICJzdGFydCBudW1iZXJpbmcgcGF0Y2hlcyBhdCA8bj4gaW5zdGVhZCBvZiAxIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyNQorIzogYnVpbHRpbi9sb2cuYzoxMTcyCiBtc2dpZCAibWFyayB0aGUgc2VyaWVzIGFzIE50aCByZS1yb2xsIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyNworIzogYnVpbHRpbi9sb2cuYzoxMTc0CiBtc2dpZCAiVXNlIFs8cHJlZml4Pl0gaW5zdGVhZCBvZiBbUEFUQ0hdIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzMAorIzogYnVpbHRpbi9sb2cuYzoxMTc3CiBtc2dpZCAic3RvcmUgcmVzdWx0aW5nIGZpbGVzIGluIDxkaXI+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzMworIzogYnVpbHRpbi9sb2cuYzoxMTgwCiBtc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTM2CisjOiBidWlsdGluL2xvZy5jOjExODMKIG1zZ2lkICJkb24ndCBvdXRwdXQgYmluYXJ5IGRpZmZzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzOAorIzogYnVpbHRpbi9sb2cuYzoxMTg1CiBtc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0MAorIzogYnVpbHRpbi9sb2cuYzoxMTg3CiBtc2dpZCAic2hvdyBwYXRjaCBmb3JtYXQgaW5zdGVhZCBvZiBkZWZhdWx0IChwYXRjaCArIHN0YXQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0MgorIzogYnVpbHRpbi9sb2cuYzoxMTg5CiBtc2dpZCAiTWVzc2FnaW5nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0MworIzogYnVpbHRpbi9sb2cuYzoxMTkwCiBtc2dpZCAiaGVhZGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0NAorIzogYnVpbHRpbi9sb2cuYzoxMTkxCiBtc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDUgYnVpbHRpbi9sb2cuYzoxMTQ3CisjOiBidWlsdGluL2xvZy5jOjExOTIgYnVpbHRpbi9sb2cuYzoxMTk0CiBtc2dpZCAiZW1haWwiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTQ1CisjOiBidWlsdGluL2xvZy5jOjExOTIKIG1zZ2lkICJhZGQgVG86IGhlYWRlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5NAogbXNnaWQgImFkZCBDYzogaGVhZGVyIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0OQorIzogYnVpbHRpbi9sb2cuYzoxMTk2Cittc2dpZCAiaWRlbnQiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMTk3Cittc2dpZCAic2V0IEZyb20gYWRkcmVzcyB0byA8aWRlbnQ+IChvciBjb21taXR0ZXIgaWRlbnQgaWYgYWJzZW50KSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL2xvZy5jOjExOTkKIG1zZ2lkICJtZXNzYWdlLWlkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE1MAorIzogYnVpbHRpbi9sb2cuYzoxMjAwCiBtc2dpZCAibWFrZSBmaXJzdCBtYWlsIGEgcmVwbHkgdG8gPG1lc3NhZ2UtaWQ+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE1MSBidWlsdGluL2xvZy5jOjExNTQKKyM6IGJ1aWx0aW4vbG9nLmM6MTIwMSBidWlsdGluL2xvZy5jOjEyMDQKIG1zZ2lkICJib3VuZGFyeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTIKKyM6IGJ1aWx0aW4vbG9nLmM6MTIwMgogbXNnaWQgImF0dGFjaCB0aGUgcGF0Y2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTU1CisjOiBidWlsdGluL2xvZy5jOjEyMDUKIG1zZ2lkICJpbmxpbmUgdGhlIHBhdGNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE1OQorIzogYnVpbHRpbi9sb2cuYzoxMjA5CiBtc2dpZCAiZW5hYmxlIG1lc3NhZ2UgdGhyZWFkaW5nLCBzdHlsZXM6IHNoYWxsb3csIGRlZXAiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTYxCisjOiBidWlsdGluL2xvZy5jOjEyMTEKIG1zZ2lkICJzaWduYXR1cmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTYyCisjOiBidWlsdGluL2xvZy5jOjEyMTIKIG1zZ2lkICJhZGQgYSBzaWduYXR1cmUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTY0CisjOiBidWlsdGluL2xvZy5jOjEyMTQKIG1zZ2lkICJkb24ndCBwcmludCB0aGUgcGF0Y2ggZmlsZW5hbWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI0OAorIzogYnVpbHRpbi9sb2cuYzoxMjg4CisjLCBjLWZvcm1hdAorbXNnaWQgImludmFsaWQgaWRlbnQgbGluZTogJXMiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9sb2cuYzoxMzAzCiBtc2dpZCAiLW4gYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI1MAorIzogYnVpbHRpbi9sb2cuYzoxMzA1CiBtc2dpZCAiLS1zdWJqZWN0LXByZWZpeCBhbmQgLWsgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjU4CisjOiBidWlsdGluL2xvZy5jOjEzMTMKIG1zZ2lkICItLW5hbWUtb25seSBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI2MAorIzogYnVpbHRpbi9sb2cuYzoxMzE1CiBtc2dpZCAiLS1uYW1lLXN0YXR1cyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI2MgorIzogYnVpbHRpbi9sb2cuYzoxMzE3CiBtc2dpZCAiLS1jaGVjayBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI4NQorIzogYnVpbHRpbi9sb2cuYzoxMzQwCiBtc2dpZCAic3RhbmRhcmQgb3V0cHV0LCBvciBkaXJlY3RvcnksIHdoaWNoIG9uZT8iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjg3CisjOiBidWlsdGluL2xvZy5jOjEzNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xvZy5jOjE0MzUKKyM6IGJ1aWx0aW4vbG9nLmM6MTQ5MAogbXNnaWQgIkZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQ4NAorIzogYnVpbHRpbi9sb2cuYzoxNTM5CiBtc2dpZCAiZ2l0IGNoZXJyeSBbLXZdIFs8dXBzdHJlYW0+IFs8aGVhZD4gWzxsaW1pdD5dXV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTM5CisjOiBidWlsdGluL2xvZy5jOjE1OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBmaW5kIGEgdHJhY2tlZCByZW1vdGUgYnJhbmNoLCBwbGVhc2Ugc3BlY2lmeSA8dXBzdHJlYW0+IG1hbnVhbGx5LlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTU1MiBidWlsdGluL2xvZy5jOjE1NTQgYnVpbHRpbi9sb2cuYzoxNTY2CisjOiBidWlsdGluL2xvZy5jOjE2MDcgYnVpbHRpbi9sb2cuYzoxNjA5IGJ1aWx0aW4vbG9nLmM6MTYyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIGNvbW1pdCAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDAyCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDA4CiBtc2dpZCAiZ2l0IGxzLWZpbGVzIFtvcHRpb25zXSBbPGZpbGU+Li4uXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDU5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY1CiBtc2dpZCAiaWRlbnRpZnkgdGhlIGZpbGUgc3RhdHVzIHdpdGggdGFncyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY3CiBtc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2OQogbXNnaWQgInNob3cgY2FjaGVkIGZpbGVzIGluIHRoZSBvdXRwdXQgKGRlZmF1bHQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjUKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzEKIG1zZ2lkICJzaG93IGRlbGV0ZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDY3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDczCiBtc2dpZCAic2hvdyBtb2RpZmllZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzUKIG1zZ2lkICJzaG93IG90aGVyIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NwogbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzQKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODAKIG1zZ2lkICJzaG93IHN0YWdlZCBjb250ZW50cycgb2JqZWN0IG5hbWUgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDgyCiBtc2dpZCAic2hvdyBmaWxlcyBvbiB0aGUgZmlsZXN5c3RlbSB0aGF0IG5lZWQgdG8gYmUgcmVtb3ZlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg0CiBtc2dpZCAic2hvdyAnb3RoZXInIGRpcmVjdG9yaWVzJyBuYW1lIG9ubHkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NwogbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MAogbXNnaWQgInNob3cgdW5tZXJnZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkyCiBtc2dpZCAic2hvdyByZXNvbHZlLXVuZG8gaW5mb3JtYXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4OAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NAogbXNnaWQgInNraXAgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDkxCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk3CiBtc2dpZCAiZXhjbHVkZSBwYXR0ZXJucyBhcmUgcmVhZCBmcm9tIDxmaWxlPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAwCiBtc2dpZCAicmVhZCBhZGRpdGlvbmFsIHBlci1kaXJlY3RvcnkgZXhjbHVkZSBwYXR0ZXJucyBpbiA8ZmlsZT4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMgogbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OQorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNQogbXNnaWQgIm1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCB0b3AgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDIKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDgKIG1zZ2lkICJpZiBhbnkgPGZpbGU+IGlzIG5vdCBpbiB0aGUgaW5kZXgsIHRyZWF0IHRoaXMgYXMgYW4gZXJyb3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOQogbXNnaWQgInRyZWUtaXNoIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDQKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MTAKIG1zZ2lkICJwcmV0ZW5kIHRoYXQgcGF0aHMgcmVtb3ZlZCBzaW5jZSA8dHJlZS1pc2g+IGFyZSBzdGlsbCBwcmVzZW50IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDYKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MTIKIG1zZ2lkICJzaG93IGRlYnVnZ2luZyBkYXRhIgogbXNnc3RyICIiCiAKQEAgLTU5MjgsMTY3ICs2MTMwLDE2NyBAQAogbXNnaWQgImdpdCBtZXJnZSAtLWFib3J0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MAorIzogYnVpbHRpbi9tZXJnZS5jOjk4CiBtc2dpZCAic3dpdGNoIGBtJyByZXF1aXJlcyBhIHZhbHVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZpbmQgbWVyZ2Ugc3RyYXRlZ3kgJyVzJy5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI4CisjOiBidWlsdGluL21lcmdlLmM6MTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF2YWlsYWJsZSBzdHJhdGVnaWVzIGFyZToiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEzMworIzogYnVpbHRpbi9tZXJnZS5jOjE0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJBdmFpbGFibGUgY3VzdG9tIHN0cmF0ZWdpZXMgYXJlOiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTgzCisjOiBidWlsdGluL21lcmdlLmM6MTk4CiBtc2dpZCAiZG8gbm90IHNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTg2CisjOiBidWlsdGluL21lcmdlLmM6MjAxCiBtc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDIKIG1zZ2lkICIoc3lub255bSB0byAtLXN0YXQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQKIG1zZ2lkICJhZGQgKGF0IG1vc3QgPG4+KSBlbnRyaWVzIGZyb20gc2hvcnRsb2cgdG8gbWVyZ2UgY29tbWl0IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE5MgorIzogYnVpbHRpbi9tZXJnZS5jOjIwNwogbXNnaWQgImNyZWF0ZSBhIHNpbmdsZSBjb21taXQgaW5zdGVhZCBvZiBkb2luZyBhIG1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKIG1zZ2lkICJwZXJmb3JtIGEgY29tbWl0IGlmIHRoZSBtZXJnZSBzdWNjZWVkcyAoZGVmYXVsdCkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE5NgorIzogYnVpbHRpbi9tZXJnZS5jOjIxMQogbXNnaWQgImVkaXQgbWVzc2FnZSBiZWZvcmUgY29tbWl0dGluZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTk4CisjOiBidWlsdGluL21lcmdlLmM6MjEyCiBtc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIChkZWZhdWx0KSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjAwCisjOiBidWlsdGluL21lcmdlLmM6MjE0CiBtc2dpZCAiYWJvcnQgaWYgZmFzdC1mb3J3YXJkIGlzIG5vdCBwb3NzaWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjAzCisjOiBidWlsdGluL21lcmdlLmM6MjE4CiBtc2dpZCAiVmVyaWZ5IHRoYXQgdGhlIG5hbWVkIGNvbW1pdCBoYXMgYSB2YWxpZCBHUEcgc2lnbmF0dXJlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQgYnVpbHRpbi9ub3Rlcy5jOjg2NiBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9tZXJnZS5jOjIxOSBidWlsdGluL25vdGVzLmM6NzM4IGJ1aWx0aW4vcmV2ZXJ0LmM6MTE0CiBtc2dpZCAic3RyYXRlZ3kiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNQorIzogYnVpbHRpbi9tZXJnZS5jOjIyMAogbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA2CisjOiBidWlsdGluL21lcmdlLmM6MjIxCiBtc2dpZCAib3B0aW9uPXZhbHVlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMjIKIG1zZ2lkICJvcHRpb24gZm9yIHNlbGVjdGVkIG1lcmdlIHN0cmF0ZWd5IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMjQKIG1zZ2lkICJtZXJnZSBjb21taXQgbWVzc2FnZSAoZm9yIGEgbm9uLWZhc3QtZm9yd2FyZCBtZXJnZSkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIxMworIzogYnVpbHRpbi9tZXJnZS5jOjIyOAogbXNnaWQgImFib3J0IHRoZSBjdXJyZW50IGluLXByb2dyZXNzIG1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTcKIG1zZ2lkICJjb3VsZCBub3QgcnVuIHN0YXNoLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQ3CisjOiBidWlsdGluL21lcmdlLmM6MjYyCiBtc2dpZCAic3Rhc2ggZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNjcKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGEgdmFsaWQgb2JqZWN0OiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjcxIGJ1aWx0aW4vbWVyZ2UuYzoyODgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyODYgYnVpbHRpbi9tZXJnZS5jOjMwMwogbXNnaWQgInJlYWQtdHJlZSBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMxOAorIzogYnVpbHRpbi9tZXJnZS5jOjMzMwogbXNnaWQgIiAobm90aGluZyB0byBzcXVhc2gpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCAtLSBub3QgdXBkYXRpbmcgSEVBRFxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNzgKIG1zZ2lkICJXcml0aW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2NQorIzogYnVpbHRpbi9tZXJnZS5jOjM4MAogbXNnaWQgIkZpbmlzaGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozODgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0MDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbWVyZ2UgbWVzc2FnZSAtLSBub3QgdXBkYXRpbmcgSEVBRFxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo0MzgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo0NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBkb2VzIG5vdCBwb2ludCB0byBhIGNvbW1pdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6NTUwCisjOiBidWlsdGluL21lcmdlLmM6NTY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBicmFuY2guJXMubWVyZ2VvcHRpb25zIHN0cmluZzogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY0MworIzogYnVpbHRpbi9tZXJnZS5jOjY1NwogbXNnaWQgImdpdCB3cml0ZS10cmVlIGZhaWxlZCB0byB3cml0ZSBhIHRyZWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjY3MQotbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCi1tc2dzdHIgIiIKLQogIzogYnVpbHRpbi9tZXJnZS5jOjY4NQotIywgYy1mb3JtYXQKLW1zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgorbXNnaWQgIk5vdCBoYW5kbGluZyBhbnl0aGluZyBvdGhlciB0aGFuIHR3byBoZWFkcyBtZXJnZS4iCiBtc2dzdHIgIiIKIAogIzogYnVpbHRpbi9tZXJnZS5jOjY5OQogIywgYy1mb3JtYXQKK21zZ2lkICJVbmtub3duIG9wdGlvbiBmb3IgbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo3MTMKKyMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3ODgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlYWQgZnJvbSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo3OTcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGNvbW1pdHRpbmcgbWVyZ2U7IHVzZSAnZ2l0IGNvbW1pdCcgdG8gY29tcGxldGUgdGhlIG1lcmdlLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgpAQCAtNjA5OCwxNjEgKzYzMDAsMTU3IEBACiAidGhlIGNvbW1pdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODI3CisjOiBidWlsdGluL21lcmdlLmM6ODQxCiBtc2dpZCAiRW1wdHkgY29tbWl0IG1lc3NhZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MzkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiV29uZGVyZnVsLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIGZhaWxlZDsgZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBjb21taXQgdGhlIHJlc3VsdC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTIwCisjOiBidWlsdGluL21lcmdlLmM6OTM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzUKIG1zZ2lkICJObyBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk2MworIzogYnVpbHRpbi9tZXJnZS5jOjk3NwogbXNnaWQgIk5vIHJlbW90ZSBmb3IgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTY1CisjOiBidWlsdGluL21lcmdlLmM6OTc5CiBtc2dpZCAiTm8gZGVmYXVsdCB1cHN0cmVhbSBkZWZpbmVkIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5ODQKICMsIGMtZm9ybWF0Ci1tc2dpZCAiTm8gcmVtb3RlIHRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKK21zZ2lkICJObyByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIGZvciAlcyBmcm9tICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDU3IGJ1aWx0aW4vbWVyZ2UuYzoxMjE0Ci0jLCBjLWZvcm1hdAotbXNnaWQgIiVzIC0gbm90IHNvbWV0aGluZyB3ZSBjYW4gbWVyZ2UiCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQwCiBtc2dpZCAiVGhlcmUgaXMgbm8gbWVyZ2UgdG8gYWJvcnQgKE1FUkdFX0hFQUQgbWlzc2luZykuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQxIGdpdC1wdWxsLnNoOjMxCisjOiBidWlsdGluL21lcmdlLmM6MTE1NiBnaXQtcHVsbC5zaDozMQogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgbWVyZ2UgKE1FUkdFX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CisjOiBidWlsdGluL21lcmdlLmM6MTE1OSBnaXQtcHVsbC5zaDozNAogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0OAorIzogYnVpbHRpbi9tZXJnZS5jOjExNjMKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE1MQorIzogYnVpbHRpbi9tZXJnZS5jOjExNjYKIG1zZ2lkICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTc1CiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tc3F1YXNoIHdpdGggLS1uby1mZi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKLW1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCi1tc2dzdHIgIiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjExNzIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTg0CiBtc2dpZCAiTm8gY29tbWl0IHNwZWNpZmllZCBhbmQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0gbm90IHNldC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjE2CiBtc2dpZCAiQ2FuIG1lcmdlIG9ubHkgZXhhY3RseSBvbmUgY29tbWl0IGludG8gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIwNworIzogYnVpbHRpbi9tZXJnZS5jOjEyMTkKIG1zZ2lkICJTcXVhc2ggY29tbWl0IGludG8gZW1wdHkgaGVhZCBub3Qgc3VwcG9ydGVkIHlldCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIwOQorIzogYnVpbHRpbi9tZXJnZS5jOjEyMjEKIG1zZ2lkICJOb24tZmFzdC1mb3J3YXJkIGNvbW1pdCBkb2VzIG5vdCBtYWtlIHNlbnNlIGludG8gYW4gZW1wdHkgaGVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI2NQorIzogYnVpbHRpbi9tZXJnZS5jOjEyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKK21zZ3N0ciAiIgorCisjOiBidWlsdGluL21lcmdlLmM6MTI3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaGFzIGFuIHVudHJ1c3RlZCBHUEcgc2lnbmF0dXJlLCBhbGxlZ2VkbHkgYnkgJXMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY4CisjOiBidWlsdGluL21lcmdlLmM6MTI4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaGFzIGEgYmFkIEdQRyBzaWduYXR1cmUgYWxsZWdlZGx5IGJ5ICVzLiIKIG1zZ3N0ciAiIgogCiAjLiAnTicKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcxCisjOiBidWlsdGluL21lcmdlLmM6MTI4MwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjc0CisjOiBidWlsdGluL21lcmdlLmM6MTI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIGJ5ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEzNTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzLi4lc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzk3CisjOiBidWlsdGluL21lcmdlLmM6MTQwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQwNAorIzogYnVpbHRpbi9tZXJnZS5jOjE0MTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm9wZS5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTQzNgorIzogYnVpbHRpbi9tZXJnZS5jOjE0NDgKIG1zZ2lkICJOb3QgcG9zc2libGUgdG8gZmFzdC1mb3J3YXJkLCBhYm9ydGluZy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0NTkgYnVpbHRpbi9tZXJnZS5jOjE1MzgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDcxIGJ1aWx0aW4vbWVyZ2UuYzoxNTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDYzCisjOiBidWlsdGluL21lcmdlLmM6MTQ3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTUyOQorIzogYnVpbHRpbi9tZXJnZS5jOjE1NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbWVyZ2Ugc3RyYXRlZ3kgaGFuZGxlZCB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1lcmdlIHdpdGggc3RyYXRlZ3kgJXMgZmFpbGVkLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTQwCisjOiBidWlsdGluL21lcmdlLmM6MTU1MgogIywgYy1mb3JtYXQKIG1zZ2lkICJVc2luZyB0aGUgJXMgdG8gcHJlcGFyZSByZXNvbHZpbmcgYnkgaGFuZC5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU1MgorIzogYnVpbHRpbi9tZXJnZS5jOjE1NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKIG1zZ3N0ciAiIgpAQCAtNjQxNywzNjkgKzY2MTUsMzUyIEBACiBtc2dpZCAicmVuYW1pbmcgJyVzJyBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NQorIzogYnVpbHRpbi9uYW1lLXJldi5jOjI1OQogbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gPGNvbW1pdD4uLi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NgorIzogYnVpbHRpbi9uYW1lLXJldi5jOjI2MAogbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1hbGwiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NworIzogYnVpbHRpbi9uYW1lLXJldi5jOjI2MQogbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gLS1zdGRpbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MjI5CisjOiBidWlsdGluL25hbWUtcmV2LmM6MzEzCiBtc2dpZCAicHJpbnQgb25seSBuYW1lcyAobm8gU0hBLTEpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzAKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTQKIG1zZ2lkICJvbmx5IHVzZSB0YWdzIHRvIG5hbWUgdGhlIGNvbW1pdHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzMgorIzogYnVpbHRpbi9uYW1lLXJldi5jOjMxNgogbXNnaWQgIm9ubHkgdXNlIHJlZnMgbWF0Y2hpbmcgPHBhdHRlcm4+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzQKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTgKIG1zZ2lkICJsaXN0IGFsbCBjb21taXRzIHJlYWNoYWJsZSBmcm9tIGFsbCByZWZzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzUKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTkKIG1zZ2lkICJyZWFkIGZyb20gc3RkaW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzNgorIzogYnVpbHRpbi9uYW1lLXJldi5jOjMyMAogbXNnaWQgImFsbG93IHRvIHByaW50IGB1bmRlZmluZWRgIG5hbWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNgorIzogYnVpbHRpbi9uYW1lLXJldi5jOjMyNgorbXNnaWQgImRlcmVmZXJlbmNlIHRhZ3MgaW4gdGhlIGlucHV0IChpbnRlcm5hbCB1c2UpIgorbXNnc3RyICIiCisKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNAogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIFtsaXN0IFs8b2JqZWN0Pl1dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNworIzogYnVpbHRpbi9ub3Rlcy5jOjI1CiBtc2dpZCAiIgogImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCiAiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI4CisjOiBidWlsdGluL25vdGVzLmM6MjYKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBjb3B5IFstZl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjkKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNwogbXNnaWQgIiIKICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBhcHBlbmQgWy1tIDxtc2c+IHwgLUYgPGZpbGU+IHwgKC1jIHwgLUMpICIKICI8b2JqZWN0Pl0gWzxvYmplY3Q+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzAKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOAogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGVkaXQgWzxvYmplY3Q+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyOQogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHNob3cgWzxvYmplY3Q+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMAogbXNnaWQgIiIKICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxzdHJhdGVneT4gXSA8bm90ZXNfcmVmPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMQogbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbLXYgfCAtcV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM0CisjOiBidWlsdGluL25vdGVzLmM6MzIKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM1CisjOiBidWlsdGluL25vdGVzLmM6MzMKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSByZW1vdmUgWzxvYmplY3Q+Li4uXSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzYKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNAogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHBydW5lIFstbiB8IC12XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNQogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGdldC1yZWYiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQyCisjOiBidWlsdGluL25vdGVzLmM6NDAKIG1zZ2lkICJnaXQgbm90ZXMgW2xpc3QgWzxvYmplY3Q+XV0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ3CisjOiBidWlsdGluL25vdGVzLmM6NDUKIG1zZ2lkICJnaXQgbm90ZXMgYWRkIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUyCisjOiBidWlsdGluL25vdGVzLmM6NTAKIG1zZ2lkICJnaXQgbm90ZXMgY29weSBbPG9wdGlvbnM+XSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MworIzogYnVpbHRpbi9ub3Rlcy5jOjUxCiBtc2dpZCAiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0Pl0uLi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU4CisjOiBidWlsdGluL25vdGVzLmM6NTYKIG1zZ2lkICJnaXQgbm90ZXMgYXBwZW5kIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYzCisjOiBidWlsdGluL25vdGVzLmM6NjEKIG1zZ2lkICJnaXQgbm90ZXMgZWRpdCBbPG9iamVjdD5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OAorIzogYnVpbHRpbi9ub3Rlcy5jOjY2CiBtc2dpZCAiZ2l0IG5vdGVzIHNob3cgWzxvYmplY3Q+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MQogbXNnaWQgImdpdCBub3RlcyBtZXJnZSBbPG9wdGlvbnM+XSA8bm90ZXNfcmVmPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MgogbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbPG9wdGlvbnM+XSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MwogbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFs8b3B0aW9ucz5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4MAorIzogYnVpbHRpbi9ub3Rlcy5jOjc4CiBtc2dpZCAiZ2l0IG5vdGVzIHJlbW92ZSBbPG9iamVjdD5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NQorIzogYnVpbHRpbi9ub3Rlcy5jOjgzCiBtc2dpZCAiZ2l0IG5vdGVzIHBydW5lIFs8b3B0aW9ucz5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5MAorIzogYnVpbHRpbi9ub3Rlcy5jOjg4CiBtc2dpZCAiZ2l0IG5vdGVzIGdldC1yZWYiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjEzOQorIzogYnVpbHRpbi9ub3Rlcy5jOjEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTQzCisjOiBidWlsdGluL25vdGVzLmM6MTQxCiBtc2dpZCAiY291bGQgbm90IHJlYWQgJ3Nob3cnIG91dHB1dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTUxCisjOiBidWlsdGluL25vdGVzLmM6MTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTY5IGJ1aWx0aW4vdGFnLmM6MzQxCisjOiBidWlsdGluL25vdGVzLmM6MTY3IGJ1aWx0aW4vdGFnLmM6MzQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgZmlsZSAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODYKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIwOSBidWlsdGluL25vdGVzLmM6OTcyCisjOiBidWlsdGluL25vdGVzLmM6MjA3IGJ1aWx0aW4vbm90ZXMuYzo4NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3Zpbmcgbm90ZSBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxNAorIzogYnVpbHRpbi9ub3Rlcy5jOjIxMgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBub3RlIG9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE2CisjOiBidWlsdGluL25vdGVzLmM6MjE0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBub3RlIGNvbnRlbnRzIGhhcyBiZWVuIGxlZnQgaW4gJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAorIzogYnVpbHRpbi9ub3Rlcy5jOjI0OCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTIgYnVpbHRpbi90YWcuYzo1NDMKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNTAgYnVpbHRpbi90YWcuYzo1NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IG9wZW4gb3IgcmVhZCAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzEgYnVpbHRpbi9ub3Rlcy5jOjQ0NCBidWlsdGluL25vdGVzLmM6NDQ2Ci0jOiBidWlsdGluL25vdGVzLmM6NTA2IGJ1aWx0aW4vbm90ZXMuYzo1NjAgYnVpbHRpbi9ub3Rlcy5jOjY0MwotIzogYnVpbHRpbi9ub3Rlcy5jOjY0OCBidWlsdGluL25vdGVzLmM6NzIzIGJ1aWx0aW4vbm90ZXMuYzo3NjUKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NjcgYnVpbHRpbi90YWcuYzo1NTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNjkgYnVpbHRpbi9ub3Rlcy5jOjMxNiBidWlsdGluL25vdGVzLmM6MzE4CisjOiBidWlsdGluL25vdGVzLmM6Mzc4IGJ1aWx0aW4vbm90ZXMuYzo0MzIgYnVpbHRpbi9ub3Rlcy5jOjUxNQorIzogYnVpbHRpbi9ub3Rlcy5jOjUyMCBidWlsdGluL25vdGVzLmM6NTk1IGJ1aWx0aW4vbm90ZXMuYzo2MzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4MzkgYnVpbHRpbi90YWcuYzo1NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI3NAorIzogYnVpbHRpbi9ub3Rlcy5jOjI3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVhZCBvYmplY3QgJyVzJy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI5OAotbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL25vdGVzLmM6MzM5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIKLW1zZ3N0ciAiIgotCi0jOiBidWlsdGluL25vdGVzLmM6MzQ5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgotbXNnc3RyICIiCi0KLSMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCi0jLiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNzYKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiQmFkICVzIHZhbHVlOiAnJXMnIgotbXNnc3RyICIiCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlucHV0IGxpbmU6ICclcycuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNvcHkgbm90ZXMgZnJvbSAnJXMnIHRvICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4Ci0jOiBidWlsdGluL25vdGVzLmM6MTAzMgorIzogYnVpbHRpbi9ub3Rlcy5jOjM3MSBidWlsdGluL25vdGVzLmM6NDI1IGJ1aWx0aW4vbm90ZXMuYzo0OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MTAgYnVpbHRpbi9ub3Rlcy5jOjU4MyBidWlsdGluL25vdGVzLmM6NjMwCisjOiBidWlsdGluL25vdGVzLmM6OTA0CiBtc2dpZCAidG9vIG1hbnkgcGFyYW1ldGVycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzozODQgYnVpbHRpbi9ub3Rlcy5jOjY0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBub3RlIGZvdW5kIGZvciBvYmplY3QgJXMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQorIzogYnVpbHRpbi9ub3Rlcy5jOjQwNiBidWlsdGluL25vdGVzLmM6NTYzCiBtc2dpZCAibm90ZSBjb250ZW50cyBhcyBhIHN0cmluZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM3IGJ1aWx0aW4vbm90ZXMuYzo2OTQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MDkgYnVpbHRpbi9ub3Rlcy5jOjU2NgogbXNnaWQgIm5vdGUgY29udGVudHMgaW4gYSBmaWxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MzkgYnVpbHRpbi9ub3Rlcy5jOjU0MiBidWlsdGluL25vdGVzLmM6Njk2Ci0jOiBidWlsdGluL25vdGVzLmM6Njk5IGJ1aWx0aW4vdGFnLmM6NDc0CisjOiBidWlsdGluL25vdGVzLmM6NDExIGJ1aWx0aW4vbm90ZXMuYzo0MTQgYnVpbHRpbi9ub3Rlcy5jOjU2OAorIzogYnVpbHRpbi9ub3Rlcy5jOjU3MSBidWlsdGluL3RhZy5jOjQ3NAogbXNnaWQgIm9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQwIGJ1aWx0aW4vbm90ZXMuYzo2OTcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MTIgYnVpbHRpbi9ub3Rlcy5jOjU2OQogbXNnaWQgInJldXNlIGFuZCBlZGl0IHNwZWNpZmllZCBub3RlIG9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQzIGJ1aWx0aW4vbm90ZXMuYzo3MDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MTUgYnVpbHRpbi9ub3Rlcy5jOjU3MgogbXNnaWQgInJldXNlIHNwZWNpZmllZCBub3RlIG9iamVjdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTQ1IGJ1aWx0aW4vbm90ZXMuYzo2MTMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MTcgYnVpbHRpbi9ub3Rlcy5jOjQ4NQogbXNnaWQgInJlcGxhY2UgZXhpc3Rpbmcgbm90ZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU3OQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGFkZCBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKICJleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NTYgYnVpbHRpbi9ub3Rlcy5jOjUzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJPdmVyd3JpdGluZyBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYxNAorIzogYnVpbHRpbi9ub3Rlcy5jOjQ4NgogbXNnaWQgInJlYWQgb2JqZWN0cyBmcm9tIHN0ZGluIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0ODgKIG1zZ2lkICJsb2FkIHJld3JpdGluZyBjb25maWcgZm9yIDxjb21tYW5kPiAoaW1wbGllcyAtLXN0ZGluKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjM0CisjOiBidWlsdGluL25vdGVzLmM6NTA2CiBtc2dpZCAidG9vIGZldyBwYXJhbWV0ZXJzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCBjb3B5IG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgogImV4aXN0aW5nIG5vdGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NjcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBub3RlcyBvbiBzb3VyY2Ugb2JqZWN0ICVzLiBDYW5ub3QgY29weS4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjcxNgorIzogYnVpbHRpbi9ub3Rlcy5jOjU4OAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIC1tLy1GLy1jLy1DIG9wdGlvbnMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHRoZSAnZWRpdCcgc3ViY29tbWFuZC5cbiIKICJQbGVhc2UgdXNlICdnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1DJyBpbnN0ZWFkLlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MzUKIG1zZ2lkICJHZW5lcmFsIG9wdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2NQorIzogYnVpbHRpbi9ub3Rlcy5jOjczNwogbXNnaWQgIk1lcmdlIG9wdGlvbnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2NworIzogYnVpbHRpbi9ub3Rlcy5jOjczOQogbXNnaWQgIiIKICJyZXNvbHZlIG5vdGVzIGNvbmZsaWN0cyB1c2luZyB0aGUgZ2l2ZW4gc3RyYXRlZ3kgKG1hbnVhbC9vdXJzL3RoZWlycy91bmlvbi8iCiAiY2F0X3NvcnRfdW5pcSkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2OQorIzogYnVpbHRpbi9ub3Rlcy5jOjc0MQogbXNnaWQgIkNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3MQorIzogYnVpbHRpbi9ub3Rlcy5jOjc0MwogbXNnaWQgImZpbmFsaXplIG5vdGVzIG1lcmdlIGJ5IGNvbW1pdHRpbmcgdW5tZXJnZWQgbm90ZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3MworIzogYnVpbHRpbi9ub3Rlcy5jOjc0NQogbXNnaWQgIkFib3J0aW5nIG5vdGVzIG1lcmdlIHJlc29sdXRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg3NQorIzogYnVpbHRpbi9ub3Rlcy5jOjc0NwogbXNnaWQgImFib3J0IG5vdGVzIG1lcmdlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk4MgorIzogYnVpbHRpbi9ub3Rlcy5jOjg1NAogbXNnaWQgImF0dGVtcHQgdG8gcmVtb3ZlIG5vbi1leGlzdGVudCBub3RlIGlzIG5vdCBhbiBlcnJvciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTg1CisjOiBidWlsdGluL25vdGVzLmM6ODU3CiBtc2dpZCAicmVhZCBvYmplY3QgbmFtZXMgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5MzgKIG1zZ2lkICJub3Rlc19yZWYiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjEwNjcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5MzkKIG1zZ2lkICJ1c2Ugbm90ZXMgZnJvbSA8bm90ZXNfcmVmPiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwMiBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzQgYnVpbHRpbi9yZW1vdGUuYzoxNTk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gc3ViY29tbWFuZDogJXMiCiBtc2dzdHIgIiIKQEAgLTcwMDIsNyArNzE4Myw3IEBACiAiJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTIxCisjOiBidWlsdGluL3B1c2guYzoxMTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgbm90IGN1cnJlbnRseSBvbiBhIGJyYW5jaC5cbiIKQEAgLTcwMTIsNyArNzE5Myw3IEBACiAiICAgIGdpdCBwdXNoICVzIEhFQUQ6PG5hbWUtb2YtcmVtb3RlLWJyYW5jaD5cbiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzoxMjgKKyM6IGJ1aWx0aW4vcHVzaC5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGN1cnJlbnQgYnJhbmNoICVzIGhhcyBubyB1cHN0cmVhbSBicmFuY2guXG4iCkBAIC03MDIxLDEyICs3MjAyLDEyIEBACiAiICAgIGdpdCBwdXNoIC0tc2V0LXVwc3RyZWFtICVzICVzXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTM2CisjOiBidWlsdGluL3B1c2guYzoxMzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIGN1cnJlbnQgYnJhbmNoICVzIGhhcyBtdWx0aXBsZSB1cHN0cmVhbSBicmFuY2hlcywgcmVmdXNpbmcgdG8gcHVzaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTM5CisjOiBidWlsdGluL3B1c2guYzoxNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIllvdSBhcmUgcHVzaGluZyB0byByZW1vdGUgJyVzJywgd2hpY2ggaXMgbm90IHRoZSB1cHN0cmVhbSBvZlxuIgpAQCAtNzAzNCw3ICs3MjE1LDcgQEAKICJ0byB1cGRhdGUgd2hpY2ggcmVtb3RlIGJyYW5jaC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MTUxCisjOiBidWlsdGluL3B1c2guYzoxNjUKIG1zZ2lkICIiCiAicHVzaC5kZWZhdWx0IGlzIHVuc2V0OyBpdHMgaW1wbGljaXQgdmFsdWUgaXMgY2hhbmdpbmcgaW5cbiIKICJHaXQgMi4wIGZyb20gJ21hdGNoaW5nJyB0byAnc2ltcGxlJy4gVG8gc3F1ZWxjaCB0aGlzIG1lc3NhZ2VcbiIKQEAgLTcwNTIsMjAgKzcyMzMsMjAgQEAKICInY3VycmVudCcgaW5zdGVhZCBvZiAnc2ltcGxlJyBpZiB5b3Ugc29tZXRpbWVzIHVzZSBvbGRlciB2ZXJzaW9ucyBvZiBHaXQpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE5OQorIzogYnVpbHRpbi9wdXNoLmM6MjI1CiBtc2dpZCAiIgogIllvdSBkaWRuJ3Qgc3BlY2lmeSBhbnkgcmVmc3BlY3MgdG8gcHVzaCwgYW5kIHB1c2guZGVmYXVsdCBpcyBcIm5vdGhpbmdcIi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjA2CisjOiBidWlsdGluL3B1c2guYzoyMzIKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRpcCBvZiB5b3VyIGN1cnJlbnQgYnJhbmNoIGlzIGJlaGluZFxuIgotIml0cyByZW1vdGUgY291bnRlcnBhcnQuIE1lcmdlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLiAnZ2l0IHB1bGwnKVxuIgotImJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgorIml0cyByZW1vdGUgY291bnRlcnBhcnQuIEludGVncmF0ZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy5cbiIKKyInZ2l0IHB1bGwgLi4uJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjEyCisjOiBidWlsdGluL3B1c2guYzoyMzgKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgogImNvdW50ZXJwYXJ0LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcHVzaCB0aGF0IGJyYW5jaCwgeW91IG1heSB3YW50IHRvXG4iCkBAIC03MDczLDUwICs3MjU0LDUwIEBACiAidG8gJ3NpbXBsZScsICdjdXJyZW50JyBvciAndXBzdHJlYW0nIHRvIHB1c2ggb25seSB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIxOAorIzogYnVpbHRpbi9wdXNoLmM6MjQ0CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKLSJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKLSIoZS5nLiAnZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKyJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBpbnRlZ3JhdGUgdGhlIHJlbW90ZSBjaGFuZ2VzXG4iCisiKGUuZy4gJ2dpdCBwdWxsIC4uLicpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgogIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorIzogYnVpbHRpbi9wdXNoLmM6MjUwCiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgogIm5vdCBoYXZlIGxvY2FsbHkuIFRoaXMgaXMgdXN1YWxseSBjYXVzZWQgYnkgYW5vdGhlciByZXBvc2l0b3J5IHB1c2hpbmdcbiIKLSJ0byB0aGUgc2FtZSByZWYuIFlvdSBtYXkgd2FudCB0byBmaXJzdCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4sXG4iCi0iJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgaW50ZWdyYXRlIHRoZSByZW1vdGUgY2hhbmdlc1xuIgorIihlLmcuLCAnZ2l0IHB1bGwgLi4uJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjMxCisjOiBidWlsdGluL3B1c2guYzoyNTcKIG1zZ2lkICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGFnIGFscmVhZHkgZXhpc3RzIGluIHRoZSByZW1vdGUuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIzNAorIzogYnVpbHRpbi9wdXNoLmM6MjYwCiBtc2dpZCAiIgogIllvdSBjYW5ub3QgdXBkYXRlIGEgcmVtb3RlIHJlZiB0aGF0IHBvaW50cyBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgogIm9yIHVwZGF0ZSBhIHJlbW90ZSByZWYgdG8gbWFrZSBpdCBwb2ludCBhdCBhIG5vbi1jb21taXQgb2JqZWN0LFxuIgogIndpdGhvdXQgdXNpbmcgdGhlICctLWZvcmNlJyBvcHRpb24uXG4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6Mjk0CisjOiBidWlsdGluL3B1c2guYzozMjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiUHVzaGluZyB0byAlc1xuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjI5OAorIzogYnVpbHRpbi9wdXNoLmM6MzI0CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBwdXNoIHNvbWUgcmVmcyB0byAnJXMnIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMzMQorIzogYnVpbHRpbi9wdXNoLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzMyCisjOiBidWlsdGluL3B1c2guYzozNTgKIG1zZ2lkICIiCiAiTm8gY29uZmlndXJlZCBwdXNoIGRlc3RpbmF0aW9uLlxuIgogIkVpdGhlciBzcGVjaWZ5IHRoZSBVUkwgZnJvbSB0aGUgY29tbWFuZC1saW5lIG9yIGNvbmZpZ3VyZSBhIHJlbW90ZSAiCkBAIC03MTI5LDg3ICs3MzEwLDg3IEBACiAiICAgIGdpdCBwdXNoIDxuYW1lPlxuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM0NworIzogYnVpbHRpbi9wdXNoLmM6MzczCiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM0OAorIzogYnVpbHRpbi9wdXNoLmM6Mzc0CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozNTMKKyM6IGJ1aWx0aW4vcHVzaC5jOjM3OQogbXNnaWQgIi0tbWlycm9yIGFuZCAtLXRhZ3MgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzozNTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjM4MAogbXNnaWQgIi0tbWlycm9yIGNhbid0IGJlIGNvbWJpbmVkIHdpdGggcmVmc3BlY3MiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzU5CisjOiBidWlsdGluL3B1c2guYzozODUKIG1zZ2lkICItLWFsbCBhbmQgLS1taXJyb3IgYXJlIGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzo0MTkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0NQogbXNnaWQgInJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDIwCisjOiBidWlsdGluL3B1c2guYzo0NDYKIG1zZ2lkICJwdXNoIGFsbCByZWZzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyMQorIzogYnVpbHRpbi9wdXNoLmM6NDQ3CiBtc2dpZCAibWlycm9yIGFsbCByZWZzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyMworIzogYnVpbHRpbi9wdXNoLmM6NDQ5CiBtc2dpZCAiZGVsZXRlIHJlZnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDI0CisjOiBidWlsdGluL3B1c2guYzo0NTAKIG1zZ2lkICJwdXNoIHRhZ3MgKGNhbid0IGJlIHVzZWQgd2l0aCAtLWFsbCBvciAtLW1pcnJvcikiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDI3CisjOiBidWlsdGluL3B1c2guYzo0NTMKIG1zZ2lkICJmb3JjZSB1cGRhdGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyOAorIzogYnVpbHRpbi9wdXNoLmM6NDU0CiBtc2dpZCAiY2hlY2siCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDI5CisjOiBidWlsdGluL3B1c2guYzo0NTUKIG1zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBwdXNoaW5nIG9mIHN1Ym1vZHVsZXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDMxCisjOiBidWlsdGluL3B1c2guYzo0NTcKIG1zZ2lkICJ1c2UgdGhpbiBwYWNrIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzMiBidWlsdGluL3B1c2guYzo0MzMKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1OCBidWlsdGluL3B1c2guYzo0NTkKIG1zZ2lkICJyZWNlaXZlIHBhY2sgcHJvZ3JhbSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzo0MzQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ2MAogbXNnaWQgInNldCB1cHN0cmVhbSBmb3IgZ2l0IHB1bGwvc3RhdHVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzNworIzogYnVpbHRpbi9wdXNoLmM6NDYzCiBtc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDM5CisjOiBidWlsdGluL3B1c2guYzo0NjUKIG1zZ2lkICJieXBhc3MgcHJlLXB1c2ggaG9vayIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzo0NDAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ2NgogbXNnaWQgInB1c2ggbWlzc2luZyBidXQgcmVsZXZhbnQgdGFncyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3B1c2guYzo0NTAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ3NgogbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQ1MgorIzogYnVpbHRpbi9wdXNoLmM6NDc4CiBtc2dpZCAiLS1kZWxldGUgZG9lc24ndCBtYWtlIHNlbnNlIHdpdGhvdXQgYW55IHJlZnMiCiBtc2dzdHIgIiIKIApAQCAtNzIyMCw3MCArNzQwMSw4MCBAQAogImluZGV4LW91dHB1dD08ZmlsZT5dICgtLWVtcHR5IHwgPHRyZWUtaXNoMT4gWzx0cmVlLWlzaDI+IFs8dHJlZS1pc2gzPl1dKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEwOAorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDkKIG1zZ2lkICJ3cml0ZSByZXN1bHRpbmcgaW5kZXggdG8gPGZpbGU+IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTExCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMgogbXNnaWQgIm9ubHkgZW1wdHkgdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEzCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExNAogbXNnaWQgIk1lcmdpbmciCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTUKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE2CiBtc2dpZCAicGVyZm9ybSBhIG1lcmdlIGluIGFkZGl0aW9uIHRvIGEgcmVhZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjExNworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTgKIG1zZ2lkICIzLXdheSBtZXJnZSBpZiBubyBmaWxlIGxldmVsIG1lcmdpbmcgcmVxdWlyZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTkKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIwCiBtc2dpZCAiMy13YXkgbWVyZ2UgaW4gcHJlc2VuY2Ugb2YgYWRkcyBhbmQgcmVtb3ZlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjIKIG1zZ2lkICJzYW1lIGFzIC1tLCBidXQgZGlzY2FyZCB1bm1lcmdlZCBlbnRyaWVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIyCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMwogbXNnaWQgIjxzdWJkaXJlY3Rvcnk+LyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjQKIG1zZ2lkICJyZWFkIHRoZSB0cmVlIGludG8gdGhlIGluZGV4IHVuZGVyIDxzdWJkaXJlY3Rvcnk+LyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyNgorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjcKIG1zZ2lkICJ1cGRhdGUgd29ya2luZyB0cmVlIHdpdGggbWVyZ2UgcmVzdWx0IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI4CisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOQogbXNnaWQgImdpdGlnbm9yZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzAKIG1zZ2lkICJhbGxvdyBleHBsaWNpdGx5IGlnbm9yZWQgZmlsZXMgdG8gYmUgb3ZlcndyaXR0ZW4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzIKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMzCiBtc2dpZCAiZG9uJ3QgY2hlY2sgdGhlIHdvcmtpbmcgdHJlZSBhZnRlciBtZXJnaW5nIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMzCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNAogbXNnaWQgImRvbid0IHVwZGF0ZSB0aGUgaW5kZXggb3IgdGhlIHdvcmsgdHJlZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzYKIG1zZ2lkICJza2lwIGFwcGx5aW5nIHNwYXJzZSBjaGVja291dCBmaWx0ZXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzcKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTM4CiBtc2dpZCAiZGVidWcgdW5wYWNrLXRyZWVzIgogbXNnc3RyICIiCiAKKyM6IGJ1aWx0aW4vcmVmbG9nLmM6NTAwCisjLCBjLWZvcm1hdAorbXNnaWQgIiVzJyBmb3IgJyVzJyBpcyBub3QgYSB2YWxpZCB0aW1lc3RhbXAiCittc2dzdHIgIiIKKworIzogYnVpbHRpbi9yZWZsb2cuYzo2MTYgYnVpbHRpbi9yZWZsb2cuYzo2MjEKKyMsIGMtZm9ybWF0Cittc2dpZCAiJyVzJyBpcyBub3QgYSB2YWxpZCB0aW1lc3RhbXAiCittc2dzdHIgIiIKKwogIzogYnVpbHRpbi9yZW1vdGUuYzoxMQogbXNnaWQgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIKIG1zZ3N0ciAiIgpAQCAtNzg0NCw5NSArODAzNSw5NSBAQAogbXNnaWQgIkZhaWxlZCB0byBmaW5kIHRyZWUgb2YgJXMuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzo5OAorIzogYnVpbHRpbi9yZXNldC5jOjk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkhFQUQgaXMgbm93IGF0ICVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjQ4CisjOiBidWlsdGluL3Jlc2V0LmM6MjUxCiBtc2dpZCAiYmUgcXVpZXQsIG9ubHkgcmVwb3J0IGVycm9ycyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjUwCisjOiBidWlsdGluL3Jlc2V0LmM6MjUzCiBtc2dpZCAicmVzZXQgSEVBRCBhbmQgaW5kZXgiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI1MQorIzogYnVpbHRpbi9yZXNldC5jOjI1NAogbXNnaWQgInJlc2V0IG9ubHkgSEVBRCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTYgYnVpbHRpbi9yZXNldC5jOjI1OAogbXNnaWQgInJlc2V0IEhFQUQsIGluZGV4IGFuZCB3b3JraW5nIHRyZWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI1NworIzogYnVpbHRpbi9yZXNldC5jOjI2MAogbXNnaWQgInJlc2V0IEhFQUQgYnV0IGtlZXAgbG9jYWwgY2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6Mjc1CisjOiBidWlsdGluL3Jlc2V0LmM6Mjc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZXZpc2lvbi4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI3OCBidWlsdGluL3Jlc2V0LmM6Mjg2CisjOiBidWlsdGluL3Jlc2V0LmM6MjgxIGJ1aWx0aW4vcmVzZXQuYzoyODkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjgzCisjOiBidWlsdGluL3Jlc2V0LmM6Mjg2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCB0cmVlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjkyCisjOiBidWlsdGluL3Jlc2V0LmM6Mjk1CiBtc2dpZCAiLS1wYXRjaCBpcyBpbmNvbXBhdGlibGUgd2l0aCAtLXtoYXJkLG1peGVkLHNvZnR9IgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMDEKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMDQKIG1zZ2lkICItLW1peGVkIHdpdGggcGF0aHMgaXMgZGVwcmVjYXRlZDsgdXNlICdnaXQgcmVzZXQgLS0gPHBhdGhzPicgaW5zdGVhZC4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMworIzogYnVpbHRpbi9yZXNldC5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gJXMgcmVzZXQgd2l0aCBwYXRocy4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxMworIzogYnVpbHRpbi9yZXNldC5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzMzCisjOiBidWlsdGluL3Jlc2V0LmM6MzM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZXNldCBpbmRleCBmaWxlIHRvIHJldmlzaW9uICclcycuIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMzkKKyM6IGJ1aWx0aW4vcmVzZXQuYzozNDIKIG1zZ2lkICJVbnN0YWdlZCBjaGFuZ2VzIGFmdGVyIHJlc2V0OiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzQ0CisjOiBidWlsdGluL3Jlc2V0LmM6MzQ3CiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIG5ldyBpbmRleCBmaWxlLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jldi1wYXJzZS5jOjMzOQorIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozNDUKIG1zZ2lkICJnaXQgcmV2LXBhcnNlIC0tcGFyc2VvcHQgW29wdGlvbnNdIC0tIFs8YXJncz4uLi5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ0CisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM1MAogbXNnaWQgImtlZXAgdGhlIGAtLWAgcGFzc2VkIGFzIGFuIGFyZyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NgorIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozNTIKIG1zZ2lkICJzdG9wIHBhcnNpbmcgYWZ0ZXIgdGhlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXYtcGFyc2UuYzo0NjQKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6NDcwCiBtc2dpZCAiIgogImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKICIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKQEAgLTc5NTcsMTM3ICs4MTQ4LDE1OSBAQAogbXNnaWQgImdpdCBjaGVycnktcGljayA8c3ViY29tbWFuZD4iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzo3MCBidWlsdGluL3JldmVydC5jOjkyCisjOiBidWlsdGluL3JldmVydC5jOjcxIGJ1aWx0aW4vcmV2ZXJ0LmM6OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDMKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1CiBtc2dpZCAiZW5kIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEwNAorIzogYnVpbHRpbi9yZXZlcnQuYzoxMDYKIG1zZ2lkICJyZXN1bWUgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1CisjOiBidWlsdGluL3JldmVydC5jOjEwNwogbXNnaWQgImNhbmNlbCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDYKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA4CiBtc2dpZCAiZG9uJ3QgYXV0b21hdGljYWxseSBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDcKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CiBtc2dpZCAiZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMTAKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCiBtc2dpZCAicGFyZW50IG51bWJlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKIG1zZ2lkICJtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTUKIG1zZ2lkICJvcHRpb24iCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTE2CiBtc2dpZCAib3B0aW9uIGZvciBtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyNQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMjcKIG1zZ2lkICJhcHBlbmQgY29tbWl0IG5hbWUiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMjYKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4CiBtc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI3CisjOiBidWlsdGluL3JldmVydC5jOjEyOQogbXNnaWQgInByZXNlcnZlIGluaXRpYWxseSBlbXB0eSBjb21taXRzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4CisjOiBidWlsdGluL3JldmVydC5jOjEzMAogbXNnaWQgImFsbG93IGNvbW1pdHMgd2l0aCBlbXB0eSBtZXNzYWdlcyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyOQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMzEKIG1zZ2lkICJrZWVwIHJlZHVuZGFudCwgZW1wdHkgY29tbWl0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEzMworIzogYnVpbHRpbi9yZXZlcnQuYzoxMzUKIG1zZ2lkICJwcm9ncmFtIGVycm9yIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIzCisjOiBidWlsdGluL3JldmVydC5jOjIyNQogbXNnaWQgInJldmVydCBmYWlsZWQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoyMzgKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjQwCiBtc2dpZCAiY2hlcnJ5LXBpY2sgZmFpbGVkIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxNQorIzogYnVpbHRpbi9ybS5jOjE2CiBtc2dpZCAiZ2l0IHJtIFtvcHRpb25zXSBbLS1dIDxmaWxlPi4uLiIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6NjQgYnVpbHRpbi9ybS5jOjE4NgotIywgYy1mb3JtYXQKKyM6IGJ1aWx0aW4vcm0uYzo2NAogbXNnaWQgIiIKLSJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisidGhlIGZvbGxvd2luZyBzdWJtb2R1bGUgKG9yIG9uZSBvZiBpdHMgbmVzdGVkIHN1Ym1vZHVsZXMpXG4iCisidXNlcyBhIC5naXQgZGlyZWN0b3J5OiIKK21zZ2lkX3BsdXJhbCAiIgorInRoZSBmb2xsb3dpbmcgc3VibW9kdWxlcyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcylcbiIKKyJ1c2UgYSAuZ2l0IGRpcmVjdG9yeToiCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBidWlsdGluL3JtLmM6NzAKK21zZ2lkICIiCisiXG4iCiAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxNzQKLSMsIGMtZm9ybWF0CisjOiBidWlsdGluL3JtLmM6MjMwCiBtc2dpZCAiIgotIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCisidGhlIGZvbGxvd2luZyBmaWxlIGhhcyBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZVxuIgorImZpbGUgYW5kIHRoZSBIRUFEOiIKK21zZ2lkX3BsdXJhbCAiIgorInRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZVxuIgorImZpbGUgYW5kIHRoZSBIRUFEOiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMzUKK21zZ2lkICIiCisiXG4iCiAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6MTgwCi0jLCBjLWZvcm1hdAorIzogYnVpbHRpbi9ybS5jOjIzOQorbXNnaWQgInRoZSBmb2xsb3dpbmcgZmlsZSBoYXMgY2hhbmdlcyBzdGFnZWQgaW4gdGhlIGluZGV4OiIKK21zZ2lkX3BsdXJhbCAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleDoiCittc2dzdHJbMF0gIiIKK21zZ3N0clsxXSAiIgorCisjOiBidWlsdGluL3JtLmM6MjQzIGJ1aWx0aW4vcm0uYzoyNTQKIG1zZ2lkICIiCi0iJyVzJyBoYXMgY2hhbmdlcyBzdGFnZWQgaW4gdGhlIGluZGV4XG4iCisiXG4iCiAiKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6MTkxCi0jLCBjLWZvcm1hdAotbXNnaWQgIiIKLSInJXMnIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zXG4iCi0iKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIKLW1zZ3N0ciAiIgorIzogYnVpbHRpbi9ybS5jOjI1MQorbXNnaWQgInRoZSBmb2xsb3dpbmcgZmlsZSBoYXMgbG9jYWwgbW9kaWZpY2F0aW9uczoiCittc2dpZF9wbHVyYWwgInRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBsb2NhbCBtb2RpZmljYXRpb25zOiIKK21zZ3N0clswXSAiIgorbXNnc3RyWzFdICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyMDcKKyM6IGJ1aWx0aW4vcm0uYzoyNjkKIG1zZ2lkICJkbyBub3QgbGlzdCByZW1vdmVkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyMDgKKyM6IGJ1aWx0aW4vcm0uYzoyNzAKIG1zZ2lkICJvbmx5IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6MjA5CisjOiBidWlsdGluL3JtLmM6MjcxCiBtc2dpZCAib3ZlcnJpZGUgdGhlIHVwLXRvLWRhdGUgY2hlY2siCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ybS5jOjIxMAorIzogYnVpbHRpbi9ybS5jOjI3MgogbXNnaWQgImFsbG93IHJlY3Vyc2l2ZSByZW1vdmFsIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyMTIKKyM6IGJ1aWx0aW4vcm0uYzoyNzQKIG1zZ2lkICJleGl0IHdpdGggYSB6ZXJvIHN0YXR1cyBldmVuIGlmIG5vdGhpbmcgbWF0Y2hlZCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3JtLmM6MjgzCisjOiBidWlsdGluL3JtLmM6MzQ1CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdCByZW1vdmluZyAnJXMnIHJlY3Vyc2l2ZWx5IHdpdGhvdXQgLXIiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9ybS5jOjMyMgorIzogYnVpbHRpbi9ybS5jOjM4NAogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgcm06IHVuYWJsZSB0byByZW1vdmUgJXMiCiBtc2dzdHIgIiIKQEAgLTgxMDEsMjMgKzgzMTQsMjMgQEAKIG1zZ2lkICJNaXNzaW5nIGF1dGhvcjogJXMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyNworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOAogbXNnaWQgInNvcnQgb3V0cHV0IGFjY29yZGluZyB0byB0aGUgbnVtYmVyIG9mIGNvbW1pdHMgcGVyIGF1dGhvciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjI5CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMwCiBtc2dpZCAiU3VwcHJlc3MgY29tbWl0IGRlc2NyaXB0aW9ucywgb25seSBwcm92aWRlcyBjb21taXQgY291bnQiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgogbXNnaWQgIlNob3cgdGhlIGVtYWlsIGFkZHJlc3Mgb2YgZWFjaCBhdXRob3IiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMwogbXNnaWQgIndbLGkxWyxpMl1dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzMKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzQKIG1zZ2lkICJMaW5ld3JhcCBvdXRwdXQiCiBtc2dzdHIgIiIKIApAQCAtODE3NywyMyArODM5MCwyMyBAQAogbXNnaWQgInNob3cgY29tbWl0cyBpbiB0b3BvbG9naWNhbCBvcmRlciIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcxCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcyCiBtc2dpZCAic2hvdyBvbmx5IGNvbW1pdHMgbm90IG9uIHRoZSBmaXJzdCBicmFuY2giCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NAogbXNnaWQgInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc1Ci1tc2dpZCAic2hvdyBjb21taXRzIHdoZXJlIG5vIHBhcmVudCBjb21lcyBiZWZvcmUgaXRzIGNoaWxkcmVuIgorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NgorbXNnaWQgInRvcG9sb2dpY2FsbHkgc29ydCwgbWFpbnRhaW5pbmcgZGF0ZSBvcmRlciB3aGVyZSBwb3NzaWJsZSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc3CisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc5CiBtc2dpZCAiPG4+Wyw8YmFzZT5dIgogbXNnc3RyICIiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzgKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2ODAKIG1zZ2lkICJzaG93IDxuPiBtb3N0IHJlY2VudCByZWYtbG9nIGVudHJpZXMgc3RhcnRpbmcgYXQgYmFzZSIKIG1zZ3N0ciAiIgogCkBAIC04MjA3LDM1ICs4NDIwLDM1IEBACiBtc2dpZCAiZ2l0IHNob3ctcmVmIC0tZXhjbHVkZS1leGlzdGluZ1s9cGF0dGVybl0gPCByZWYtbGlzdCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTY1CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY4CiBtc2dpZCAib25seSBzaG93IHRhZ3MgKGNhbiBiZSBjb21iaW5lZCB3aXRoIGhlYWRzKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTY2CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY5CiBtc2dpZCAib25seSBzaG93IGhlYWRzIChjYW4gYmUgY29tYmluZWQgd2l0aCB0YWdzKSIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTY3CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTcwCiBtc2dpZCAic3RyaWN0ZXIgcmVmZXJlbmNlIGNoZWNraW5nLCByZXF1aXJlcyBleGFjdCByZWYgcGF0aCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTcwIGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzIKLW1zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzMgYnVpbHRpbi9zaG93LXJlZi5jOjE3NgorbXNnaWQgInNob3cgdGhlIEhFQUQgcmVmZXJlbmNlLCBldmVuIGlmIGl0IHdvdWxkIGJlIGZpbHRlcmVkIG91dCIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTc0CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTc4CiBtc2dpZCAiZGVyZWZlcmVuY2UgdGFncyBpbnRvIG9iamVjdCBJRHMiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NgorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MAogbXNnaWQgIm9ubHkgc2hvdyBTSEExIGhhc2ggdXNpbmcgPG4+IGRpZ2l0cyIKIG1zZ3N0ciAiIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTgwCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTg0CiBtc2dpZCAiZG8gbm90IHByaW50IHJlc3VsdHMgdG8gc3Rkb3V0ICh1c2VmdWwgd2l0aCAtLXZlcmlmeSkiCiBtc2dzdHIgIiIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4NgogbXNnaWQgInNob3cgcmVmcyBmcm9tIHN0ZGluIHRoYXQgYXJlbid0IGluIGxvY2FsIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKIApAQCAtODYzOSwyNiArODg1MiwzMCBAQAogbXNnaWQgIm9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmciCiBtc2dzdHIgIiIKIAotIzogZ2l0LmM6MTYKKyM6IGdpdC5jOjE3CiBtc2dpZCAiIgogIidnaXQgaGVscCAtYScgYW5kICdnaXQgaGVscCAtZycgbGlzdHMgYXZhaWxhYmxlIHN1YmNvbW1hbmRzIGFuZCBzb21lXG4iCiAiY29uY2VwdCBndWlkZXMuIFNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBvciAnZ2l0IGhlbHAgPGNvbmNlcHQ+J1xuIgogInRvIHJlYWQgYWJvdXQgYSBzcGVjaWZpYyBzdWJjb21tYW5kIG9yIGNvbmNlcHQuIgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoxNTYKKyM6IHBhcnNlLW9wdGlvbnMuaDoxNDQKK21zZ2lkICJleHBpcnkgZGF0ZSIKK21zZ3N0ciAiIgorCisjOiBwYXJzZS1vcHRpb25zLmg6MTU5CiBtc2dpZCAibm8tb3AgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIgogbXNnc3RyICIiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzIKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzYKIG1zZ2lkICJiZSBtb3JlIHZlcmJvc2UiCiBtc2dzdHIgIiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjIzNAorIzogcGFyc2Utb3B0aW9ucy5oOjIzOAogbXNnaWQgImJlIG1vcmUgcXVpZXQiCiBtc2dzdHIgIiIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjI0MAorIzogcGFyc2Utb3B0aW9ucy5oOjI0NAogbXNnaWQgInVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzIgogbXNnc3RyICIiCiAKQEAgLTg3MTUsNyArODkzMiw3IEBACiBtc2dzdHIgIiIKIAogIzogY29tbW9uLWNtZHMuaDoyMQotbXNnaWQgIkZldGNoIGZyb20gYW5kIG1lcmdlIHdpdGggYW5vdGhlciByZXBvc2l0b3J5IG9yIGEgbG9jYWwgYnJhbmNoIgorbXNnaWQgIkZldGNoIGZyb20gYW5kIGludGVncmF0ZSB3aXRoIGFub3RoZXIgcmVwb3NpdG9yeSBvciBhIGxvY2FsIGJyYW5jaCIKIG1zZ3N0ciAiIgogCiAjOiBjb21tb24tY21kcy5oOjIyCkBAIC04NzU5LDcgKzg5NzYsNyBAQAogIzogZ2l0LWFtLnNoOjEwNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCisiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcIiRjbWRsaW5lIC0tY29udGludWVcIi5cbiIKICJJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuIFwiJGNtZGxpbmUgLS1za2lwXCIgaW5zdGVhZC5cbiIKICJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcsIHJ1biBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCiBtc2dzdHIgIiIKQEAgLTg4MDksMjUgKzkwMjYsMzIgQEAKICJpdCB3aWxsIGJlIHJlbW92ZWQuIFBsZWFzZSBkbyBub3QgdXNlIGl0IGFueW1vcmUuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo0NzcKKyM6IGdpdC1hbS5zaDo0NzkKICMsIHNoLWZvcm1hdAogbXNnaWQgInByZXZpb3VzIHJlYmFzZSBkaXJlY3RvcnkgJGRvdGVzdCBzdGlsbCBleGlzdHMgYnV0IG1ib3ggZ2l2ZW4uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo0ODIKKyM6IGdpdC1hbS5zaDo0ODQKIG1zZ2lkICJQbGVhc2UgbWFrZSB1cCB5b3VyIG1pbmQuIC0tc2tpcCBvciAtLWFib3J0PyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6NTA5CisjOiBnaXQtYW0uc2g6NTIwCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3RyYXkgJGRvdGVzdCBkaXJlY3RvcnkgZm91bmQuXG4iCisiVXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZW1vdmUgaXQuIgorbXNnc3RyICIiCisKKyM6IGdpdC1hbS5zaDo1MjgKIG1zZ2lkICJSZXNvbHZlIG9wZXJhdGlvbiBub3QgaW4gcHJvZ3Jlc3MsIHdlIGFyZSBub3QgcmVzdW1pbmcuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo1NzUKKyM6IGdpdC1hbS5zaDo1OTQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRpcnR5IGluZGV4OiBjYW5ub3QgYXBwbHkgcGF0Y2hlcyAoZGlydHk6ICRmaWxlcykiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjY3OQorIzogZ2l0LWFtLnNoOjY5OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlBhdGNoIGlzIGVtcHR5LiAgV2FzIGl0IHNwbGl0IHdyb25nP1xuIgpAQCAtODgzNSw2MCArOTA1OSw2MCBAQAogIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZyBydW4gXCIkY21kbGluZSAtLWFib3J0XCIuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo3MDYKKyM6IGdpdC1hbS5zaDo3MjUKIG1zZ2lkICJQYXRjaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo3NTMKKyM6IGdpdC1hbS5zaDo3NzIKIG1zZ2lkICJjYW5ub3QgYmUgaW50ZXJhY3RpdmUgd2l0aG91dCBzdGRpbiBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbC4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjc1NworIzogZ2l0LWFtLnNoOjc3NgogbXNnaWQgIkNvbW1pdCBCb2R5IGlzOiIKIG1zZ3N0ciAiIgogCiAjLiBUUkFOU0xBVE9SUzogTWFrZSBzdXJlIHRvIGluY2x1ZGUgW3ldLCBbbl0sIFtlXSwgW3ZdIGFuZCBbYV0KICMuIGluIHlvdXIgdHJhbnNsYXRpb24uIFRoZSBwcm9ncmFtIHdpbGwgb25seSBhY2NlcHQgRW5nbGlzaAogIy4gaW5wdXQgYXQgdGhpcyBwb2ludC4KLSM6IGdpdC1hbS5zaDo3NjQKKyM6IGdpdC1hbS5zaDo3ODMKIG1zZ2lkICJBcHBseT8gW3ldZXMvW25dby9bZV1kaXQvW3ZdaWV3IHBhdGNoL1thXWNjZXB0IGFsbCAiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjgwMAorIzogZ2l0LWFtLnNoOjgxOQogIywgc2gtZm9ybWF0CiBtc2dpZCAiQXBwbHlpbmc6ICRGSVJTVExJTkUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjgyMQorIzogZ2l0LWFtLnNoOjg0MAogbXNnaWQgIiIKICJObyBjaGFuZ2VzIC0gZGlkIHlvdSBmb3JnZXQgdG8gdXNlICdnaXQgYWRkJz9cbiIKICJJZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gc3RhZ2UsIGNoYW5jZXMgYXJlIHRoYXQgc29tZXRoaW5nIGVsc2VcbiIKICJhbHJlYWR5IGludHJvZHVjZWQgdGhlIHNhbWUgY2hhbmdlczsgeW91IG1pZ2h0IHdhbnQgdG8gc2tpcCB0aGlzIHBhdGNoLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6ODI5CisjOiBnaXQtYW0uc2g6ODQ4CiBtc2dpZCAiIgogIllvdSBzdGlsbCBoYXZlIHVubWVyZ2VkIHBhdGhzIGluIHlvdXIgaW5kZXhcbiIKICJkaWQgeW91IGZvcmdldCB0byB1c2UgJ2dpdCBhZGQnPyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtYW0uc2g6ODQ1CisjOiBnaXQtYW0uc2g6ODY0CiBtc2dpZCAiTm8gY2hhbmdlcyAtLSBQYXRjaCBhbHJlYWR5IGFwcGxpZWQuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo4NTUKKyM6IGdpdC1hbS5zaDo4NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIlBhdGNoIGZhaWxlZCBhdCAkbXNnbnVtICRGSVJTVExJTkUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LWFtLnNoOjg1OAorIzogZ2l0LWFtLnNoOjg3NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBjb3B5IG9mIHRoZSBwYXRjaCB0aGF0IGZhaWxlZCBpcyBmb3VuZCBpbjpcbiIKICIgICAkZG90ZXN0L3BhdGNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1hbS5zaDo4NzYKKyM6IGdpdC1hbS5zaDo4OTUKIG1zZ2lkICJhcHBseWluZyB0byBhbiBlbXB0eSBoaXN0b3J5IgogbXNnc3RyICIiCiAKQEAgLTkwNzEsNyArOTI5NSw3IEBACiBtc2dpZCAiQ2Fubm90IHJlYmFzZSBvbnRvIG11bHRpcGxlIGJyYW5jaGVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTMKKyM6IGdpdC1yZWJhc2Uuc2g6NTQKIG1zZ2lkICIiCiAiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiLlxuIgogIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCJnaXQgcmViYXNlIC0tc2tpcFwiIGluc3RlYWQuXG4iCkBAIC05MDc5LDQyICs5MzAzLDU4IEBACiAiXCIuIgogbXNnc3RyICIiCiAKKyM6IGdpdC1yZWJhc2Uuc2g6MTU2Cittc2dpZCAiQXBwbGllZCBhdXRvc3Rhc2guIgorbXNnc3RyICIiCisKKyM6IGdpdC1yZWJhc2Uuc2g6MTU5CisjLCBzaC1mb3JtYXQKK21zZ2lkICJDYW5ub3Qgc3RvcmUgJHN0YXNoX3NoYTEiCittc2dzdHIgIiIKKwogIzogZ2l0LXJlYmFzZS5zaDoxNjAKK21zZ2lkICIiCisiQXBwbHlpbmcgYXV0b3N0YXNoIHJlc3VsdGVkIGluIGNvbmZsaWN0cy5cbiIKKyJZb3VyIGNoYW5nZXMgYXJlIHNhZmUgaW4gdGhlIHN0YXNoLlxuIgorIllvdSBjYW4gcnVuIFwiZ2l0IHN0YXNoIHBvcFwiIG9yIFwiZ2l0IHN0YXNoIGRyb3BcIiBpdCBhdCBhbnkgdGltZS5cbiIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjE5MAogbXNnaWQgIlRoZSBwcmUtcmViYXNlIGhvb2sgcmVmdXNlZCB0byByZWJhc2UuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MTY1CisjOiBnaXQtcmViYXNlLnNoOjE5NQogbXNnaWQgIkl0IGxvb2tzIGxpa2UgZ2l0LWFtIGlzIGluIHByb2dyZXNzLiBDYW5ub3QgcmViYXNlLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcmViYXNlLnNoOjI5NgorIzogZ2l0LXJlYmFzZS5zaDozMjkKIG1zZ2lkICJUaGUgLS1leGVjIG9wdGlvbiBtdXN0IGJlIHVzZWQgd2l0aCB0aGUgLS1pbnRlcmFjdGl2ZSBvcHRpb24iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXJlYmFzZS5zaDozMDEKKyM6IGdpdC1yZWJhc2Uuc2g6MzM0CiBtc2dpZCAiTm8gcmViYXNlIGluIHByb2dyZXNzPyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcmViYXNlLnNoOjMxMgorIzogZ2l0LXJlYmFzZS5zaDozNDUKIG1zZ2lkICJUaGUgLS1lZGl0LXRvZG8gYWN0aW9uIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIGludGVyYWN0aXZlIHJlYmFzZS4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXJlYmFzZS5zaDozMTkKKyM6IGdpdC1yZWJhc2Uuc2g6MzUyCiBtc2dpZCAiQ2Fubm90IHJlYWQgSEVBRCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcmViYXNlLnNoOjMyMgorIzogZ2l0LXJlYmFzZS5zaDozNTUKIG1zZ2lkICIiCiAiWW91IG11c3QgZWRpdCBhbGwgbWVyZ2UgY29uZmxpY3RzIGFuZCB0aGVuXG4iCiAibWFyayB0aGVtIGFzIHJlc29sdmVkIHVzaW5nIGdpdCBhZGQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXJlYmFzZS5zaDozNDAKKyM6IGdpdC1yZWJhc2Uuc2g6MzczCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgbW92ZSBiYWNrIHRvICRoZWFkX25hbWUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXJlYmFzZS5zaDozNTkKKyM6IGdpdC1yZWJhc2Uuc2g6MzkyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCkBAIC05MTI3LDU2ICs5MzY3LDY1IEBACiAidmFsdWFibGUgdGhlcmUuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDA0CisjOiBnaXQtcmViYXNlLnNoOjQzNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiaW52YWxpZCB1cHN0cmVhbSAkdXBzdHJlYW1fbmFtZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcmViYXNlLnNoOjQyOAorIzogZ2l0LXJlYmFzZS5zaDo0NjEKICMsIHNoLWZvcm1hdAogbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIG1lcmdlIGJhc2VzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDMxIGdpdC1yZWJhc2Uuc2g6NDM1CisjOiBnaXQtcmViYXNlLnNoOjQ2NCBnaXQtcmViYXNlLnNoOjQ2OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJG9udG9fbmFtZTogdGhlcmUgaXMgbm8gbWVyZ2UgYmFzZSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtcmViYXNlLnNoOjQ0MAorIzogZ2l0LXJlYmFzZS5zaDo0NzMKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgY29tbWl0OiAkb250b19uYW1lIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDYzCisjOiBnaXQtcmViYXNlLnNoOjQ5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiZmF0YWw6IG5vIHN1Y2ggYnJhbmNoOiAkYnJhbmNoX25hbWUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXJlYmFzZS5zaDo0ODMKKyM6IGdpdC1yZWJhc2Uuc2g6NTE5Cittc2dpZCAiQ2Fubm90IGF1dG9zdGFzaCIKK21zZ3N0ciAiIgorCisjOiBnaXQtcmViYXNlLnNoOjUyNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3JlYXRlZCBhdXRvc3Rhc2g6ICRzdGFzaF9hYmJyZXYiCittc2dzdHIgIiIKKworIzogZ2l0LXJlYmFzZS5zaDo1MjgKIG1zZ2lkICJQbGVhc2UgY29tbWl0IG9yIHN0YXNoIHRoZW0uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTAxCisjOiBnaXQtcmViYXNlLnNoOjU0OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTA0CisjOiBnaXQtcmViYXNlLnNoOjU1MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTE1CisjOiBnaXQtcmViYXNlLnNoOjU2MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ2hhbmdlcyBmcm9tICRtYiB0byAkb250bzoiCiBtc2dzdHIgIiIKIAogIy4gRGV0YWNoIEhFQUQgYW5kIHJlc2V0IHRoZSB0cmVlCi0jOiBnaXQtcmViYXNlLnNoOjUyNAorIzogZ2l0LXJlYmFzZS5zaDo1NzIKIG1zZ2lkICJGaXJzdCwgcmV3aW5kaW5nIGhlYWQgdG8gcmVwbGF5IHlvdXIgd29yayBvbiB0b3Agb2YgaXQuLi4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXJlYmFzZS5zaDo1MzIKKyM6IGdpdC1yZWJhc2Uuc2g6NTgyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYXN0LWZvcndhcmRlZCAkYnJhbmNoX25hbWUgdG8gJG9udG9fbmFtZS4iCiBtc2dzdHIgIiIKQEAgLTkyMDksNiArOTQ1OCwxMSBAQAogbXNnaWQgIkNhbm5vdCByZWNvcmQgd29ya2luZyB0cmVlIHN0YXRlIgogbXNnc3RyICIiCiAKKyM6IGdpdC1zdGFzaC5zaDoxOTAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNhbm5vdCB1cGRhdGUgJHJlZl9zdGFzaCB3aXRoICR3X2NvbW1pdCIKK21zZ3N0ciAiIgorCiAjLiBUUkFOU0xBVE9SUzogJG9wdGlvbiBpcyBhbiBpbnZhbGlkIG9wdGlvbiwgbGlrZQogIy4gYC0tYmxhaC1ibGFoJy4gVGhlIDcgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCiAjLiBzZWNvbmQgbGluZSBjb3JyZXNwb25kIHRvICJlcnJvcjogIi4gU28geW91IHNob3VsZCBsaW5lCkBAIC05MjE5LDEyNiArOTQ3MywxNDEgQEAKICMuICQgZ2l0IHN0YXNoIHNhdmUgLS1ibGFoLWJsYWggMj4mMSB8IGhlYWQgLW4gMgogIy4gZXJyb3I6IHVua25vd24gb3B0aW9uIGZvciAnc3Rhc2ggc2F2ZSc6IC0tYmxhaC1ibGFoCiAjLiBUbyBwcm92aWRlIGEgbWVzc2FnZSwgdXNlIGdpdCBzdGFzaCBzYXZlIC0tICctLWJsYWgtYmxhaCcKLSM6IGdpdC1zdGFzaC5zaDoyMDIKKyM6IGdpdC1zdGFzaC5zaDoyNDEKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJlcnJvcjogdW5rbm93biBvcHRpb24gZm9yICdzdGFzaCBzYXZlJzogJG9wdGlvblxuIgogIiAgICAgICBUbyBwcm92aWRlIGEgbWVzc2FnZSwgdXNlIGdpdCBzdGFzaCBzYXZlIC0tICckb3B0aW9uJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3Rhc2guc2g6MjIzCisjOiBnaXQtc3Rhc2guc2g6MjYyCiBtc2dpZCAiTm8gbG9jYWwgY2hhbmdlcyB0byBzYXZlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDoyMjcKKyM6IGdpdC1zdGFzaC5zaDoyNjgKK21zZ2lkICIiCisiVGhlIGZvbGxvd2luZyB1bnRyYWNrZWQgZmlsZXMgd291bGQgTk9UIGJlIHNhdmVkIGJ1dCBuZWVkIHRvIGJlIHJlbW92ZWQgYnkgIgorInN0YXNoIHNhdmU6IgorbXNnc3RyICIiCisKKyM6IGdpdC1zdGFzaC5zaDoyNzAKK21zZ2lkICIiCisiQWJvcnRpbmcuIENvbnNpZGVyIHVzaW5nIGVpdGhlciB0aGUgLS1mb3JjZSBvciAtLWluY2x1ZGUtdW50cmFja2VkIG9wdGlvbi4iCittc2dzdHIgIiIKKworIzogZ2l0LXN0YXNoLnNoOjI3NAogbXNnaWQgIkNhbm5vdCBpbml0aWFsaXplIHN0YXNoIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDoyMzUKKyM6IGdpdC1zdGFzaC5zaDoyNzgKIG1zZ2lkICJDYW5ub3Qgc2F2ZSB0aGUgY3VycmVudCBzdGF0dXMiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjI1MworIzogZ2l0LXN0YXNoLnNoOjI5NgogbXNnaWQgIkNhbm5vdCByZW1vdmUgd29ya3RyZWUgY2hhbmdlcyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3Rhc2guc2g6MzUyCisjOiBnaXQtc3Rhc2guc2g6Mzk1CiBtc2dpZCAiTm8gc3Rhc2ggZm91bmQuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDozNTkKKyM6IGdpdC1zdGFzaC5zaDo0MDIKICMsIHNoLWZvcm1hdAogbXNnaWQgIlRvbyBtYW55IHJldmlzaW9ucyBzcGVjaWZpZWQ6ICRSRVYiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjM2NQorIzogZ2l0LXN0YXNoLnNoOjQwOAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJHJlZmVyZW5jZSBpcyBub3QgdmFsaWQgcmVmZXJlbmNlIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDozOTMKKyM6IGdpdC1zdGFzaC5zaDo0MzYKICMsIHNoLWZvcm1hdAogbXNnaWQgIickYXJncycgaXMgbm90IGEgc3Rhc2gtbGlrZSBjb21taXQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQwNAorIzogZ2l0LXN0YXNoLnNoOjQ0NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRhcmdzJyBpcyBub3QgYSBzdGFzaCByZWZlcmVuY2UiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQxMgorIzogZ2l0LXN0YXNoLnNoOjQ1NQogbXNnaWQgInVuYWJsZSB0byByZWZyZXNoIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDo0MTYKKyM6IGdpdC1zdGFzaC5zaDo0NTkKIG1zZ2lkICJDYW5ub3QgYXBwbHkgYSBzdGFzaCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQyNAorIzogZ2l0LXN0YXNoLnNoOjQ2NwogbXNnaWQgIkNvbmZsaWN0cyBpbiBpbmRleC4gVHJ5IHdpdGhvdXQgLS1pbmRleC4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQyNgorIzogZ2l0LXN0YXNoLnNoOjQ2OQogbXNnaWQgIkNvdWxkIG5vdCBzYXZlIGluZGV4IHRyZWUiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQ2MAorIzogZ2l0LXN0YXNoLnNoOjUwMwogbXNnaWQgIkNhbm5vdCB1bnN0YWdlIG1vZGlmaWVkIGZpbGVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDo0NzUKKyM6IGdpdC1zdGFzaC5zaDo1MTgKIG1zZ2lkICJJbmRleCB3YXMgbm90IHVuc3Rhc2hlZC4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5MgorIzogZ2l0LXN0YXNoLnNoOjUzNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRHJvcHBlZCAke1JFVn0gKCRzKSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3Rhc2guc2g6NDkzCisjOiBnaXQtc3Rhc2guc2g6NTM2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIke1JFVn06IENvdWxkIG5vdCBkcm9wIHN0YXNoIGVudHJ5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdGFzaC5zaDo1MDAKKyM6IGdpdC1zdGFzaC5zaDo1NDMKIG1zZ2lkICJObyBicmFuY2ggbmFtZSBzcGVjaWZpZWQiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN0YXNoLnNoOjU3MQorIzogZ2l0LXN0YXNoLnNoOjYxNQogbXNnaWQgIihUbyByZXN0b3JlIHRoZW0gdHlwZSBcImdpdCBzdGFzaCBhcHBseVwiKSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkxCisjOiBnaXQtc3VibW9kdWxlLnNoOjk1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RyaXAgb25lIGNvbXBvbmVudCBvZmYgdXJsICckcmVtb3RldXJsJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjE5NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMzcKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHN1Ym1vZHVsZSBtYXBwaW5nIGZvdW5kIGluIC5naXRtb2R1bGVzIGZvciBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjgxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjI1MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDoyOTMKICMsIHNoLWZvcm1hdAogbXNnaWQgIkdpdGRpciAnJGEnIGlzIHBhcnQgb2YgdGhlIHN1Ym1vZHVsZSBwYXRoICckYicgb3IgdmljZSB2ZXJzYSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM0OQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDMKK21zZ2lkICJSZWxhdGl2ZSBwYXRoIGNhbiBvbmx5IGJlIHVzZWQgZnJvbSB0aGUgdG9wbGV2ZWwgb2YgdGhlIHdvcmtpbmcgdHJlZSIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjQxMwogIywgc2gtZm9ybWF0CiBtc2dpZCAicmVwbyBVUkw6ICckcmVwbycgbXVzdCBiZSBhYnNvbHV0ZSBvciBiZWdpbiB3aXRoIC4vfC4uLyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzcwCisjOiBnaXQtc3VibW9kdWxlLnNoOjQzNAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlRoZSBmb2xsb3dpbmcgcGF0aCBpcyBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iCkBAIC05MzQ2LDIzMyArOTYxNSwyNDQgQEAKICJVc2UgLWYgaWYgeW91IHJlYWxseSB3YW50IHRvIGFkZCBpdC4iCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozODgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDUyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJBZGRpbmcgZXhpc3RpbmcgcmVwbyBhdCAnJHNtX3BhdGgnIHRvIHRoZSBpbmRleCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM5MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NTQKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzk4CisjOiBnaXQtc3VibW9kdWxlLnNoOjQ2MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiQSBnaXQgZGlyZWN0b3J5IGZvciAnJHNtX25hbWUnIGlzIGZvdW5kIGxvY2FsbHkgd2l0aCByZW1vdGUocyk6IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDAwCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ2NAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIklmIHlvdSB3YW50IHRvIHJldXNlIHRoaXMgbG9jYWwgZ2l0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIGNsb25pbmcgYWdhaW4gZnJvbSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwMgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjYKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJ1c2UgdGhlICctLWZvcmNlJyBvcHRpb24uIElmIHRoZSBsb2NhbCBnaXQgZGlyZWN0b3J5IGlzIG5vdCB0aGUgY29ycmVjdCByZXBvIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDAzCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ2NwogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIm9yIHlvdSBhcmUgdW5zdXJlIHdoYXQgdGhpcyBtZWFucyBjaG9vc2UgYW5vdGhlciBuYW1lIHdpdGggdGhlICctLW5hbWUnICIKICJvcHRpb24uIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDA1CisjOiBnaXQtc3VibW9kdWxlLnNoOjQ2OQogIywgc2gtZm9ybWF0CiBtc2dpZCAiUmVhY3RpdmF0aW5nIGxvY2FsIGdpdCBkaXJlY3RvcnkgZm9yIHN1Ym1vZHVsZSAnJHNtX25hbWUnLiIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQxNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODEKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQyMgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODYKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBhZGQgc3VibW9kdWxlICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDk1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgc3VibW9kdWxlICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTM5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTU0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdG9wcGluZyBhdCAnJHNtX3BhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKK21zZ2lkICJTdG9wcGluZyBhdCAnJHByZWZpeCRkaXNwbGF5cGF0aCc7IHNjcmlwdCByZXR1cm5lZCBub24temVybyBzdGF0dXMuIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTMyCisjOiBnaXQtc3VibW9kdWxlLnNoOjYwMAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiTm8gdXJsIGZvdW5kIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGluIC5naXRtb2R1bGVzIgorbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCcgaW4gLmdpdG1vZHVsZXMiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjA5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMQogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJGRpc3BsYXlwYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU1MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTkKICMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cGRhdGUgbW9kZSBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTg4CisjOiBnaXQtc3VibW9kdWxlLnNoOjY1NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiVXNlICcuJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZGVpbml0aWFsaXplIGFsbCBzdWJtb2R1bGVzIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjAzCisjOiBnaXQtc3VibW9kdWxlLnNoOjY3MwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiCittc2dpZCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnJGRpc3BsYXlwYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjA0CisjOiBnaXQtc3VibW9kdWxlLnNoOjY3NAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYxMAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo2ODAKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKLSJTdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gIgorIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRkaXNwbGF5cGF0aCcgY29udGFpbnMgbG9jYWwgbW9kaWZpY2F0aW9uczsgdXNlICctZicgdG8gIgogImRpc2NhcmQgdGhlbSIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYxMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2ODMKICMsIHNoLWZvcm1hdAotbXNnaWQgIkNsZWFyZWQgZGlyZWN0b3J5ICckc21fcGF0aCciCittc2dpZCAiQ2xlYXJlZCBkaXJlY3RvcnkgJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Njg0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyIKK21zZ2lkICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Njg3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKK21zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MjYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Njk2CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgdW5yZWdpc3RlcmVkIGZvciBwYXRoICckc21fcGF0aCciCittc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnJGRpc3BsYXlwYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjczMQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKLSJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyJTdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKICJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc0NAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MjQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGZpbmQgY3VycmVudCByZXZpc2lvbiBpbiBzdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc1MworIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzMKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzc3CisjOiBnaXQtc3VibW9kdWxlLnNoOjg1NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnaWQgIlVuYWJsZSB0byBmZXRjaCBpbiBzdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc5MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NzEKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODcyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogcmViYXNlZCBpbnRvICckc2hhMSciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk3CisjOiBnaXQtc3VibW9kdWxlLnNoOjg3NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODc4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODAzCisjOiBnaXQtc3VibW9kdWxlLnNoOjg4MwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiIgorIkV4ZWN1dGlvbiBvZiAnJGNvbW1hbmQgJHNoYTEnIGZhaWxlZCBpbiBzdWJtb2R1bGUgIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODg0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogJyRjb21tYW5kICRzaGExJyIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgzMQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4ODkKICMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byByZWN1cnNlIGludG8gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODkwCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjkxNworIywgc2gtZm9ybWF0Cittc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyIKK21zZ3N0ciAiIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwMjUKIG1zZ2lkICJUaGUgLS1jYWNoZWQgb3B0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggdGhlIC0tZmlsZXMgb3B0aW9uIgogbXNnc3RyICIiCiAKICMuIHVuZXhwZWN0ZWQgdHlwZQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5NzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6OTk3CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwODYKICMsIHNoLWZvcm1hdAotbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9zcmMiCittc2dpZCAiICBXYXJuOiAkZGlzcGxheV9uYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfc3JjIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDg5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfZHN0IgorbXNnaWQgIiAgV2FybjogJGRpc3BsYXlfbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX2RzdCIKIG1zZ3N0ciAiIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA5MgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0cyAkc2hhMV9zcmMgYW5kICRzaGExX2RzdCIKK21zZ2lkICIgIFdhcm46ICRkaXNwbGF5X25hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CisjOiBnaXQtc3VibW9kdWxlLnNoOjExMTcKIG1zZ2lkICJibG9iIgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTU1CiBtc2dpZCAiU3VibW9kdWxlcyBjaGFuZ2VkIGJ1dCBub3QgdXBkYXRlZDoiCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY4CisjOiBnaXQtc3VibW9kdWxlLnNoOjExNTcKIG1zZ2lkICJTdWJtb2R1bGUgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQ6IgogbXNnc3RyICIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1MworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjQyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CisjOiBnaXQtc3VibW9kdWxlLnNoOjEzMDYKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnJGRpc3BsYXlwYXRoJyIKIG1zZ3N0ciAiIgpkaWZmIC0tZ2l0IGEvcG8vdmkucG8gYi9wby92aS5wbwppbmRleCBjNmFmOGQ1Li45YjI3Mzk0IDEwMDY0NAotLS0gYS9wby92aS5wbworKysgYi9wby92aS5wbwpAQCAtMSwxNSArMSwxNCBAQAogIyBWaWV0bmFtZXNlIHRyYW5zbGF0aW9uIGZvciBHSVQtQ09SRS4KLSMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTMgVHLhuqduIE5n4buNYyBRdcOibi4KICMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGdpdC1jb3JlIHBhY2thZ2UuCiAjIEZpcnN0IHRyYW5zbGF0ZWQgYnkgVHLhuqduIE5n4buNYyBRdcOibiA8dm53aWxkbWFuQGdtYWlsLmNvbT4sIDIwMTItMjAxMy4KICMgTmd1eeG7hW4gVGjDoWkgTmfhu41jIER1eSA8cGNsb3Vkc0BnbWFpbC5jb20+LCAyMDEyLgogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ2l0LXYxLjguMy1yYzAtMjAtZ2M2YmM3XG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnaXQtdjEuOC40LXJjMC0xLWcyOGIzY2ZmXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IEdpdCBNYWlsaW5nIExpc3QgPGdpdEB2Z2VyLmtlcm5lbC5vcmc+XG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMDUtMDEgMTQ6MjYrMDcwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEzLTA3LTI2IDE0OjE5KzA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTA3LTI3IDA5OjQ0KzA3MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFRy4bqnbiBOZ+G7jWMgUXXDom4gPHZud2lsZG1hbkBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogVmlldG5hbWVzZSA8dHJhbnNsYXRpb24tdGVhbS12aUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCiAiTGFuZ3VhZ2U6IHZpXG4iCkBAIC0yMiw3ICsyMSw3IEBACiAiWC1Qb2VkaXQtQmFzZXBhdGg6IC4uL1xuIgogIlgtR2VuZXJhdG9yOiBQb2VkaXQgMS41LjVcbiIKIAotIzogYWR2aWNlLmM6NTMKKyM6IGFkdmljZS5jOjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImhpbnQ6ICUuKnNcbiIKIG1zZ3N0ciAiZ+G7o2kgw706ICUuKnNcbiIKQEAgLTMxLDcgKzMwLDcgQEAKICMuICogTWVzc2FnZSB1c2VkIGJvdGggd2hlbiAnZ2l0IGNvbW1pdCcgZmFpbHMgYW5kIHdoZW4KICMuICogb3RoZXIgY29tbWFuZHMgZG9pbmcgYSBtZXJnZSBkby4KICMuCi0jOiBhZHZpY2UuYzo4MworIzogYWR2aWNlLmM6ODcKIG1zZ2lkICIiCiAiRml4IHRoZW0gdXAgaW4gdGhlIHdvcmsgdHJlZSxcbiIKICJhbmQgdGhlbiB1c2UgJ2dpdCBhZGQvcm0gPGZpbGU+JyBhc1xuIgpAQCAtNzAsNyArNjksNyBAQAogbXNnaWQgImFyY2hpdmUgZm9ybWF0IgogbXNnc3RyICLEkeG7i25oIGThuqFuZyBsxrB1IHRy4buvIgogCi0jOiBhcmNoaXZlLmM6MzI0IGJ1aWx0aW4vbG9nLmM6MTEyNgorIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExNzMKIG1zZ2lkICJwcmVmaXgiCiBtc2dzdHIgInRp4buBbiB04buRIgogCkBAIC03OCwxMSArNzcsMTEgQEAKIG1zZ2lkICJwcmVwZW5kIHByZWZpeCB0byBlYWNoIHBhdGhuYW1lIGluIHRoZSBhcmNoaXZlIgogbXNnc3RyICJu4buRaSB0aMOqbSB0aeG7gW4gdOG7kSB2w6BvIHThu6tuZyDEkcaw4budbmcgZOG6q24gdOG6rXAgdGluIHRyb25nIGtobyBsxrB1IgogCi0jOiBhcmNoaXZlLmM6MzI2IGJ1aWx0aW4vYXJjaGl2ZS5jOjg4IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3MiBidWlsdGluL2NvbmZpZy5jOjU1IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjUKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjcgYnVpbHRpbi9ncmVwLmM6NzE1IGJ1aWx0aW4vaGFzaC1vYmplY3QuYzo3NwotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MCBidWlsdGluL2xzLWZpbGVzLmM6NDkzIGJ1aWx0aW4vbm90ZXMuYzo1MzYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTMgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDcgcGFyc2Utb3B0aW9ucy5oOjE0OQorIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo4OCBidWlsdGluL2JsYW1lLmM6MjI5MgorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTMgYnVpbHRpbi9jb25maWcuYzo1NiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjczCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1IGJ1aWx0aW4vZ3JlcC5jOjcxNCBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTYgYnVpbHRpbi9scy1maWxlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NDA4CisjOiBidWlsdGluL25vdGVzLmM6NTY1IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA4IHBhcnNlLW9wdGlvbnMuaDoxNTIKIG1zZ2lkICJmaWxlIgogbXNnc3RyICJ04bqtcC10aW4iCiAKQEAgLTExNCw3ICsxMTMsNyBAQAogbXNnaWQgImxpc3Qgc3VwcG9ydGVkIGFyY2hpdmUgZm9ybWF0cyIKIG1zZ3N0ciAibGnhu4d0IGvDqiBjw6FjIGtp4buDdSBuw6luIMSRxrDhu6NjIGjhu5cgdHLhu6MiCiAKLSM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg2CisjOiBhcmNoaXZlLmM6MzQ1IGJ1aWx0aW4vYXJjaGl2ZS5jOjkwIGJ1aWx0aW4vY2xvbmUuYzo4NQogbXNnaWQgInJlcG8iCiBtc2dzdHIgImtobyIKIApAQCAtMTIyLDcgKzEyMSw3IEBACiBtc2dpZCAicmV0cmlldmUgdGhlIGFyY2hpdmUgZnJvbSByZW1vdGUgcmVwb3NpdG9yeSA8cmVwbz4iCiBtc2dzdHIgIm5o4bqtbiBraG8gbMawdSB04burIGtobyBjaOG7qWEgPGtobz4gdHLDqm4gbcOheSBjaOG7pyIKIAotIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5MiBidWlsdGluL25vdGVzLmM6NjE1CisjOiBhcmNoaXZlLmM6MzQ3IGJ1aWx0aW4vYXJjaGl2ZS5jOjkyIGJ1aWx0aW4vbm90ZXMuYzo0ODcKIG1zZ2lkICJjb21tYW5kIgogbXNnc3RyICJs4buHbmgiCiAKQEAgLTIwOSwxOSArMjA4LDE5IEBACiBtc2dpZCAiQ2Fubm90IGZvcmNlIHVwZGF0ZSB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICJLaMO0bmcgdGjhu4Mgw6lwIGJ14buZYyBj4bqtcCBuaOG6rXQgbmjDoW5oIGhp4buHbiBow6BuaC4iCiAKLSM6IGJyYW5jaC5jOjIwMQorIzogYnJhbmNoLmM6MjE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBzZXR1cCB0cmFja2luZyBpbmZvcm1hdGlvbjsgc3RhcnRpbmcgcG9pbnQgJyVzJyBpcyBub3QgYSBicmFuY2guIgogbXNnc3RyICIiCiAiS2jDtG5nIHRo4buDIGPDoGkgxJHhurd0IHRow7RuZyB0aW4gdGhlbyB24bq/dDsgxJFp4buDbSBi4bqvdCDEkeG6p3Ug4oCcJXPigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgIgogIm5ow6FuaC4iCiAKLSM6IGJyYW5jaC5jOjIwMworIzogYnJhbmNoLmM6MjE4CiAjLCBjLWZvcm1hdAogbXNnaWQgInRoZSByZXF1ZXN0ZWQgdXBzdHJlYW0gYnJhbmNoICclcycgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgIm5ow6FuaCBkw7JuZyBuZ8aw4bujYyDEkcOjIHnDqnUgY+G6p3Ug4oCcJXPigJ0gY2jGsGEgc+G6tW4gY8OzIgogCi0jOiBicmFuY2guYzoyMDUKKyM6IGJyYW5jaC5jOjIyMAogbXNnaWQgIiIKICJcbiIKICJJZiB5b3UgYXJlIHBsYW5uaW5nIG9uIGJhc2luZyB5b3VyIHdvcmsgb24gYW4gdXBzdHJlYW1cbiIKQEAgLTI0MSwyNiArMjQwLDI2IEBACiAic+G6vSB0aGVvIGTDtWkgYuG6o24gxJHhu5FpIGNoaeG6v3UgbcOheSBjaOG7pyBj4bunYSBuw7MsIGLhuqFuIGPhuqduIGTDuW5nIGzhu4duaFxuIgogIlwiZ2l0IHB1c2ggLXVcIiDEkeG7gyDEkeG6t3QgY+G6pXUgaMOsbmggZMOybmcgbmfGsOG7o2MgYuG6oW4gbXXhu5FuIHB1c2guIgogCi0jOiBicmFuY2guYzoyNTAKKyM6IGJyYW5jaC5jOjI2NQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBvYmplY3QgbmFtZTogJyVzJy4iCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgdMOqbiDEkeG7kWkgdMaw4bujbmcgaOG7o3AgbOG7hzog4oCcJXPigJ0uIgogCi0jOiBicmFuY2guYzoyNzAKKyM6IGJyYW5jaC5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJBbWJpZ3VvdXMgb2JqZWN0IG5hbWU6ICclcycuIgogbXNnc3RyICJUw6puIMSR4buRaSB0xrDhu6NuZyBjaMawYSByw7UgcsOgbmc6IOKAnCVz4oCdLiIKIAotIzogYnJhbmNoLmM6Mjc1CisjOiBicmFuY2guYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGEgdmFsaWQgYnJhbmNoIHBvaW50OiAnJXMnLiIKIG1zZ3N0ciAiTmjDoW5oIGtow7RuZyBo4bujcCBs4buHOiDigJwlc+KAnS4iCiAKLSM6IGJyYW5jaC5jOjI4MQorIzogYnJhbmNoLmM6Mjk2CiBtc2dpZCAiRmFpbGVkIHRvIGxvY2sgcmVmIGZvciB1cGRhdGUiCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBraMOzYSB0aGFtIGNoaeG6v3UgKHJlZikgxJHhu4MgY+G6rXAgbmjhuq10IgogCi0jOiBicmFuY2guYzoyOTkKKyM6IGJyYW5jaC5jOjMxNAogbXNnaWQgIkZhaWxlZCB0byB3cml0ZSByZWYiCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBnaGkgdGhhbSBjaGnhur91IChyZWYpIgogCkBAIC0yNzQsNyArMjczLDcgQEAKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVhZGVyOiAlcyVzICglZCkiCiBtc2dzdHIgInBo4bqnbiDEkeG6p3UgKGhlYWRlcikga2jDtG5nIMSRxrDhu6NjIHRo4burYSBuaOG6rW46ICVzJXMgKCVkKSIKIAotIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzYKKyM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6NjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIOKAnCVz4oCdIgpAQCAtMjgzLDExICsyODIsMTEgQEAKIG1zZ2lkICJSZXBvc2l0b3J5IGxhY2tzIHRoZXNlIHByZXJlcXVpc2l0ZSBjb21taXRzOiIKIG1zZ3N0ciAiS2hvIGNo4bupYSB0aGnhur91IG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBj4bqnbiB0csaw4bubYyBo4bq/dCBuw6B5OiIKIAotIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCi0jOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKKyM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo2NjEgc2VxdWVuY2VyLmM6MTExMSBidWlsdGluL2xvZy5jOjMzMQorIzogYnVpbHRpbi9sb2cuYzo4MDEgYnVpbHRpbi9sb2cuYzoxMzk5IGJ1aWx0aW4vbG9nLmM6MTYyNSBidWlsdGluL21lcmdlLmM6MzY0CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTU2CiBtc2dpZCAicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiCi1tc2dzdHIgImPDoGkgxJHhurd0IHZp4buHYyBkaSBjaHV54buDbiBxdWEgY8OhYyDEkWnhu4NtIHjDqXQgbOG6oWkgZ+G6t3AgbOG7l2kiCittc2dzdHIgImPDoGkgxJHhurd0IHZp4buHYyBkaSBjaHV54buDbiBxdWEgY8OhYyDEkWnhu4NtIHjDqXQgZHV54buHdCBn4bq3cCBs4buXaSIKIAogIzogYnVuZGxlLmM6MTg2CiAjLCBjLWZvcm1hdApAQCAtMzExLDcgKzMxMCw3IEBACiBtc2dpZCAicmV2LWxpc3QgZGllZCIKIG1zZ3N0ciAicmV2LWxpc3QgxJHDoyBjaOG6v3QiCiAKLSM6IGJ1bmRsZS5jOjMwMCBidWlsdGluL2xvZy5jOjEyNTUgYnVpbHRpbi9zaG9ydGxvZy5jOjI1OAorIzogYnVuZGxlLmM6MzAwIGJ1aWx0aW4vbG9nLmM6MTMxMCBidWlsdGluL3Nob3J0bG9nLmM6MjU5CiAjLCBjLWZvcm1hdAogbXNnaWQgInVucmVjb2duaXplZCBhcmd1bWVudDogJXMiCiBtc2dzdHIgIsSR4buRaSBz4buRIGtow7RuZyDEkcaw4bujYyB0aOG7q2Egbmjhuq1uOiAlcyIKQEAgLTM0MiwxMiArMzQxLDEyIEBACiBtc2dpZCAiaW5kZXgtcGFjayBkaWVkIgogbXNnc3RyICJpbmRleC1wYWNrIMSRw6MgY2jhur90IgogCi0jOiBjb21taXQuYzo1MAorIzogY29tbWl0LmM6NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHBhcnNlICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggJXMiCiAKLSM6IGNvbW1pdC5jOjUyCisjOiBjb21taXQuYzo1NQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyAlcyBpcyBub3QgYSBjb21taXQhIgogbXNnc3RyICIlcyAlcyBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBs4bqnbiBjb21taXQhIgpAQCAtMzU2LDE2ICszNTUsMTYgQEAKIG1zZ2lkICJtZW1vcnkgZXhoYXVzdGVkIgogbXNnc3RyICJo4bq/dCBi4buZIG5o4bubIgogCi0jOiBjb25uZWN0ZWQuYzozOQorIzogY29ubmVjdGVkLmM6NjAKIG1zZ2lkICJDb3VsZCBub3QgcnVuICdnaXQgcmV2LWxpc3QnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgY2jhuqF5IOKAnGdpdCByZXYtbGlzdOKAnSIKIAotIzogY29ubmVjdGVkLmM6NDgKKyM6IGNvbm5lY3RlZC5jOjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB3cml0ZSB0byByZXYtbGlzdDogJXMiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSBnaGkgdsOgbyByZXYtbGlzdDogJXMiCiAKLSM6IGNvbm5lY3RlZC5jOjU2CisjOiBjb25uZWN0ZWQuYzo4OAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY2xvc2UgcmV2LWxpc3QncyBzdGRpbjogJXMiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSDEkcOzbmcgxJHhuqd1IHbDoG8gY2h14bqpbiBzdGRpbiBj4bunYSByZXYtbGlzdDogJXMiCkBAIC00NjEsNyArNDYwLDcgQEAKICJUw6xtIHRo4bqleSBjw6FjIGzhu5dpIHRyb25nIGJp4bq/biBj4bqldSBow6xuaCDigJxkaWZmLmRpcnN0YXTigJ06XG4iCiAiJXMiCiAKLSM6IGRpZmYuYzozNDgxCisjOiBkaWZmLmM6MzQ4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiRmFpbGVkIHRvIHBhcnNlIC0tZGlyc3RhdC8tWCBvcHRpb24gcGFyYW1ldGVyOlxuIgpAQCAtNDcwLDcgKzQ2OSw3IEBACiAiR+G6t3AgbOG7l2kga2hpIHBow6JuIHTDrWNoIMSR4buRaSBz4buRIHTDuXkgY2jhu41uIC0tZGlyc3RhdC8tWDpcbiIKICIlcyIKIAotIzogZGlmZi5jOjM0OTUKKyM6IGRpZmYuYzozNTAxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSAtLXN1Ym1vZHVsZSBvcHRpb24gcGFyYW1ldGVyOiAnJXMnIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcGjDom4gdMOtY2ggxJHhu5FpIHPhu5EgdMO5eSBjaOG7jW4gLS1zdWJtb2R1bGU6IOKAnCVz4oCdIgpAQCAtNTEyLDIwICs1MTEsMjAgQEAKIG1zZ2lkICInJXMnOiBzaG9ydCByZWFkICVzIgogbXNnc3RyICLigJwlc+KAnTogxJHhu41jIG5n4bqvbiAlcyIKIAotIzogaGVscC5jOjIxMgorIzogaGVscC5jOjIxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJhdmFpbGFibGUgZ2l0IGNvbW1hbmRzIGluICclcyciCi1tc2dzdHIgImPDoWMgbOG7h25oIGdpdCBz4bq1biBzw6BuZyDEkeG7gyBkw7luZyB0cm9uZyDigJwlc+KAnSIKK21zZ3N0ciAiY8OhYyBs4buHbmggZ2l0IHPhurVuIGPDsyB0cm9uZyB0aMawIG3hu6VjIOKAnCVz4oCdOiIKIAotIzogaGVscC5jOjIxOQorIzogaGVscC5jOjIyMAogbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKIG1zZ3N0ciAiY8OhYyBs4buHbmggZ2l0IHPhurVuIHPDoG5nIMSR4buDIGTDuW5nIHThu6sgbeG7mXQgbsahaSBraMOhYyB0cm9uZyAkUEFUSCBj4bunYSBi4bqhbiIKIAotIzogaGVscC5jOjIzNQorIzogaGVscC5jOjIzNgogbXNnaWQgIlRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZ2l0IGNvbW1hbmRzIGFyZToiCiBtc2dzdHIgIk5o4buvbmcgbOG7h25oIGdpdCBoYXkgxJHGsOG7o2Mgc+G7rSBk4bulbmcgbmjhuqV0IGzDoDoiCiAKLSM6IGhlbHAuYzoyOTIKKyM6IGhlbHAuYzoyOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgYXBwZWFycyB0byBiZSBhIGdpdCBjb21tYW5kLCBidXQgd2Ugd2VyZSBub3RcbiIKQEAgLTUzNCwxMSArNTMzLDExIEBACiAi4oCcJXPigJ0gdHLDtG5nIG5oxrAgbMOgIG3hu5l0IGzhu4duaCBnaXQsIG5oxrBuZyBjaMO6bmcgdMO0aSBraMO0bmdcbiIKICJ0aOG7gyB0aOG7sWMgdGhpIG7Dsy4gQ8OzIGzhur0gbMOgIGzhu4duaCBnaXQtJXMgxJHDoyBi4buLIGjhu49uZz8iCiAKLSM6IGhlbHAuYzozNDkKKyM6IGhlbHAuYzozNTAKIG1zZ2lkICJVaCBvaC4gWW91ciBzeXN0ZW0gcmVwb3J0cyBubyBHaXQgY29tbWFuZHMgYXQgYWxsLiIKIG1zZ3N0ciAi4buQaSBjaMOgLiBI4buHIHRo4buRbmcgY+G7p2EgYuG6oW4gYsOhbyBy4bqxbmcgY2jhurNuZyBjw7MgbOG7h25oIEdpdCBuw6BvIGPhuqMuIgogCi0jOiBoZWxwLmM6MzcxCisjOiBoZWxwLmM6MzcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXQVJOSU5HOiBZb3UgY2FsbGVkIGEgR2l0IGNvbW1hbmQgbmFtZWQgJyVzJywgd2hpY2ggZG9lcyBub3QgZXhpc3QuXG4iCkBAIC01NDcsMTcgKzU0NiwxNyBAQAogIkPhuqJOSCBCw4FPOiBC4bqhbiDEkcOjIGfhu41pIGzhu4duaCBHaXQgY8OzIHTDqm4g4oCcJXPigJ0sIG3DoCBuw7MgbOG6oWkga2jDtG5nIGPDsyBz4bq1bi5cbiIKICJHaeG6oyDEkeG7i25oIHLhurFuZyDDvSBi4bqhbiBsw6Ag4oCcJXPigJ0iCiAKLSM6IGhlbHAuYzozNzYKKyM6IGhlbHAuYzozNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW4gJTAuMWYgc2Vjb25kcyBhdXRvbWF0aWNhbGx5Li4uIgogbXNnc3RyICJ0cm9uZyAlMC4xZiBnacOieSBt4buZdCBjw6FjaCB04buxIMSR4buZbmcuLi4iCiAKLSM6IGhlbHAuYzozODMKKyM6IGhlbHAuYzozODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l0OiDigJwlc+KAnSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBs4buHbmggY+G7p2EgZ2l0LiBYZW0g4oCcZ2l0IC0taGVscOKAnS4iCiAKLSM6IGhlbHAuYzozODcKKyM6IGhlbHAuYzozODggaGVscC5jOjQ0NwogbXNnaWQgIiIKICJcbiIKICJEaWQgeW91IG1lYW4gdGhpcz8iCkBAIC01NzEsMTIgKzU3MCwxNyBAQAogIlxuIgogIkPDsyBwaOG6o2kgw70gYuG6oW4gbMOgIG3hu5l0IHRyb25nIHPhu5Egbmjhu69uZyBjw6FpIG7DoHkga2jDtG5nPyIKIAorIzogaGVscC5jOjQ0MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgLSAlcyIKK21zZ3N0ciAiJXM6ICVzIC0gJXMiCisKICM6IG1lcmdlLmM6NTYKIG1zZ2lkICJmYWlsZWQgdG8gcmVhZCB0aGUgY2FjaGUiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSDEkeG7jWMgYuG7mSBuaOG7myB04bqhbSIKIAogIzogbWVyZ2UuYzoxMTAgYnVpbHRpbi9jaGVja291dC5jOjM2NSBidWlsdGluL2NoZWNrb3V0LmM6NTY2Ci0jOiBidWlsdGluL2Nsb25lLmM6NjQ1CisjOiBidWlsdGluL2Nsb25lLmM6NjU2CiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIHThuq1wIHRpbiBsxrB1IGLhuqNuZyBt4bulYyBs4bulYyBt4bubaSIKIApAQCAtNTkwLDcwICs1OTQsNzAgQEAKIG1zZ2lkICJhZGRpbmZvX2NhY2hlIGZhaWxlZCBmb3IgcGF0aCAnJXMnIgogbXNnc3RyICJhZGRpbmZvX2NhY2hlIGfhurdwIGzhu5dpIMSR4buRaSB24bubaSDEkcaw4budbmcgZOG6q24g4oCcJXPigJ0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjI2OAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjY5CiBtc2dpZCAiZXJyb3IgYnVpbGRpbmcgdHJlZXMiCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSB4w6J5IGThu7FuZyBjw6J5IgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo2NzIKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY3MwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIHBhdGggJyVzJyVzIgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgdOG6oW8gxJHGsOG7nW5nIGThuqtuIOKAnCVz4oCdJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY4MworIzogbWVyZ2UtcmVjdXJzaXZlLmM6Njg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nICVzIHRvIG1ha2Ugcm9vbSBmb3Igc3ViZGlyZWN0b3J5XG4iCiBtc2dzdHIgIkfhu6EgYuG7jyAlcyDEkeG7gyB04bqhbyBjaOG7lyAocm9vbSkgY2hvIHRoxrAgbeG7pWMgY29uXG4iCiAKICMuIHNvbWV0aGluZyBlbHNlIGV4aXN0cwogIy4gLi4gYnV0IG5vdCBzb21lIG90aGVyIGVycm9yICh3aG8gcmVhbGx5IGNhcmVzIHdoYXQ/KQotIzogbWVyZ2UtcmVjdXJzaXZlLmM6Njk3IG1lcmdlLXJlY3Vyc2l2ZS5jOjcxOAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6Njk4IG1lcmdlLXJlY3Vyc2l2ZS5jOjcxOQogbXNnaWQgIjogcGVyaGFwcyBhIEQvRiBjb25mbGljdD8iCiBtc2dzdHIgIjogY8OzIGzhur0gbMOgIG3hu5l0IHh1bmcgxJHhu5l0IEQvRj8iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjcwOAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzA5CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlZnVzaW5nIHRvIGxvc2UgdW50cmFja2VkIGZpbGUgYXQgJyVzJyIKIG1zZ3N0ciAidOG7qyBjaOG7kWkgxJHDs25nIHThuq1wIHRpbiBraMO0bmcgxJHGsOG7o2MgdGhlbyB24bq/dCB04bqhaSDigJwlc+KAnSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzQ4CisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nICVzIOKAnCVz4oCdIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJibG9iIGV4cGVjdGVkIGZvciAlcyAnJXMnIgogbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgYmxvYiDEkcaw4bujYyBtb25nIMSR4bujaSBjaG8gJXMg4oCcJXPigJ0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc3MyBidWlsdGluL2Nsb25lLmM6MzEzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzQgYnVpbHRpbi9jbG9uZS5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gb3BlbiAnJXMnIgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgbeG7nyDigJwlc+KAnSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzgxCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN5bWxpbmsgJyVzJyIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHThuqFvIGxpw6puIGvhur90IHTGsOG7o25nIHRyxrBuZyAoc3ltbGluaykg4oCcJXPigJ0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4NAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6Nzg1CiAjLCBjLWZvcm1hdAogbXNnaWQgImRvIG5vdCBrbm93IHdoYXQgdG8gZG8gd2l0aCAlMDZvICVzICclcyciCiBtc2dzdHIgImtow7RuZyBoaeG7g3UgcGjhuqNpIGzDoG0gZ8OsIHbhu5tpICUwNm8gJXMg4oCcJXPigJ0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyMgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTIzCiBtc2dpZCAiRmFpbGVkIHRvIGV4ZWN1dGUgaW50ZXJuYWwgbWVyZ2UiCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB0aOG7sWMgaGnhu4duIHRy4buZbiBu4buZaSBi4buZIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo5MjYKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmFibGUgdG8gYWRkICVzIHRvIGRhdGFiYXNlIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjDqm0gJXMgdsOgbyBjxqEgc+G7nyBk4buvIGxp4buHdSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTQyCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo5NDMKIG1zZ2lkICJ1bnN1cHBvcnRlZCBvYmplY3QgdHlwZSBpbiB0aGUgdHJlZSIKIG1zZ3N0ciAia2nhu4N1IMSR4buRaSB0xrDhu6NuZyBraMO0bmcgxJHGsOG7o2MgaOG7lyB0cuG7oyB0cm9uZyBjw6J5ICh0cmVlKSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyMSBtZXJnZS1yZWN1cnNpdmUuYzoxMDM1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDIyIG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKQEAgLTY2Miw3ICs2NjYsNyBAQAogIlhVTkcgxJDhu5hUICglcy94w7NhKTogJXMgYuG7iyB4w7NhIHRyb25nICVzIHbDoCAlcyB0cm9uZyAlcy4gUGhpw6puIGLhuqNuICVzIGPhu6dhICVzICIKICJjw7JuIGzhuqFpIHRyb25nIGPDonkgKHRyZWUpLiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyNyBtZXJnZS1yZWN1cnNpdmUuYzoxMDQwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDI4IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKQEAgLTY3MSwyMCArNjc1LDIwIEBACiAiWFVORyDEkOG7mFQgKCVzL3jDs2EpOiAlcyBi4buLIHjDs2EgdHJvbmcgJXMgdsOgICVzIHRyb25nICVzLiBQaGnDqm4gYuG6o24gJXMgY+G7p2EgJXMgIgogImPDsm4gbOG6oWkgdHJvbmcgY8OieSAodHJlZSkgdOG6oWkgJXMuIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgxCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgyCiBtc2dpZCAicmVuYW1lIgogbXNnc3RyICLEkeG7lWkgdMOqbiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTA4MgogbXNnaWQgInJlbmFtZWQiCiBtc2dzdHIgIsSRw6MgxJHhu5VpIHTDqm4iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExMzcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExMzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgYSBkaXJlY3RvcnkgaW4gJXMgYWRkaW5nIGFzICVzIGluc3RlYWQiCiBtc2dzdHIgIiVzIGzDoCBt4buZdCB0aMawIG3hu6VjIHRyb25nICVzIHRoYXkgdsOgbyDEkcOzIHRow6ptIHbDoG8gbmjGsCBsw6AgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNTkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lIFwiJXNcIi0+XCIlc1wiIGluIGJyYW5jaCBcIiVzXCIgcmVuYW1lIFwiJXMiCkBAIC02OTMsMTUwICs2OTcsMTczIEBACiAiWFVORyDEkOG7mFQgKMSR4buVaS10w6puL8SR4buVaS10w6puKTogxJDhu5VpIHTDqm4gXCIlc1wiLT5cIiVzXCIgdHJvbmcgbmjDoW5oIFwiJXNcIiDEkeG7lWkgIgogInTDqm4gXCIlc1wiLT5cIiVzXCIgdHJvbmcgXCIlc1wiJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjUKIG1zZ2lkICIgKGxlZnQgdW5yZXNvbHZlZCkiCiBtc2dzdHIgIiAoY+G6p24gZ2nhuqNpIHF1eeG6v3QpIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjE4CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvcmVuYW1lKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gUmVuYW1lICVzLT4lcyBpbiAlcyIKIG1zZ3N0ciAiIgogIlhVTkcgxJDhu5hUICjEkeG7lWktdMOqbi/EkeG7lWktdMOqbik6IMSQ4buVaSB0w6puICVzLT4lcyB0cm9uZyAlcy4gxJDhu5VpIHTDqm4gJXMtPiVzIHRyb25nICVzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjQ4CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMjQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbmFtaW5nICVzIHRvICVzIGFuZCAlcyB0byAlcyBpbnN0ZWFkIgogbXNnc3RyICLEkGFuZyDEkeG7lWkgdMOqbiAlcyB0aMOgbmggJXMgdGhheSB2w6wgJXMgdGjDoG5oICVzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ3CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvYWRkKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gJXMgYWRkZWQgaW4gJXMiCiBtc2dzdHIgIiIKICJYVU5HIMSQ4buYVCAoxJHhu5VpLXTDqm4vdGjDqm0pOiDEkOG7lWkgdMOqbiAlcy0+JXMgdHJvbmcgJXMuICVzIMSRxrDhu6NjIHRow6ptIHbDoG8gdHJvbmcgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIG1lcmdlZCAlcyIKIG1zZ3N0ciAiVGjDqm0gaMOyYSB0cuG7mW4gJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE0NjIgbWVyZ2UtcmVjdXJzaXZlLmM6MTY2MAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ2MyBtZXJnZS1yZWN1cnNpdmUuYzoxNjYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFkZGluZyBhcyAlcyBpbnN0ZWFkIgogbXNnc3RyICJUaGF5IHbDoG8gxJHDsyB0aMOqbSB2w6BvICVzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTEzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTE0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkIG9iamVjdCAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyDEkeG7kWkgdMaw4bujbmcgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTYKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0ICVzIGlzIG5vdCBhIGJsb2IiCiBtc2dzdHIgIsSR4buRaSB0xrDhu6NuZyAlcyBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBibG9iIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY1CiBtc2dpZCAibW9kaWZ5IgogbXNnc3RyICJz4butYSDEkeG7lWkiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjUKIG1zZ2lkICJtb2RpZmllZCIKIG1zZ3N0ciAixJHDoyBz4butYSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU3NAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTU3NQogbXNnaWQgImNvbnRlbnQiCiBtc2dzdHIgIm7hu5lpIGR1bmciCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1ODEKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1ODIKIG1zZ2lkICJhZGQvYWRkIgogbXNnc3RyICJ0aMOqbS90aMOqbSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiCiBtc2dzdHIgIsSQw6MgYuG7jyBxdWEgJXMgKMSRw6MgY8OzIHPhurVuIGzhuqduIGjDsmEgdHLhu5luIG7DoHkpIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjI5CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG8tbWVyZ2luZyAlcyIKIG1zZ3N0ciAiVOG7sS3EkeG7mW5nLWjDsmEtdHLhu5luICVzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNjMzIGdpdC1zdWJtb2R1bGUuc2g6MTAyOQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzNCBnaXQtc3VibW9kdWxlLnNoOjExMTgKIG1zZ2lkICJzdWJtb2R1bGUiCiBtc2dzdHIgIm3DtC3EkXVuLWNvbiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzNAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDT05GTElDVCAoJXMpOiBNZXJnZSBjb25mbGljdCBpbiAlcyIKIG1zZ3N0ciAiWFVORyDEkOG7mFQgKCVzKTogWHVuZyDEkeG7mXQgaMOyYSB0cuG7mW4gdHJvbmcgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3MjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVtb3ZpbmcgJXMiCiBtc2dzdHIgIsSQYW5nIHjDs2EgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NDkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTAKIG1zZ2lkICJmaWxlL2RpcmVjdG9yeSIKIG1zZ3N0ciAidOG6rXAtdGluL3RoxrAtbeG7pWMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTUKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTYKIG1zZ2lkICJkaXJlY3RvcnkvZmlsZSIKIG1zZ3N0ciAidGjGsC1t4bulYy904bqtcCB0aW4iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NjAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ09ORkxJQ1QgKCVzKTogVGhlcmUgaXMgYSBkaXJlY3Rvcnkgd2l0aCBuYW1lICVzIGluICVzLiBBZGRpbmcgJXMgYXMgJXMiCiBtc2dzdHIgIiIKICJYVU5HIMSQ4buYVCAoJXMpOiDhu54gxJHDonkga2jDtG5nIGPDsyB0aMawIG3hu6VjIG7DoG8gY8OzIHTDqm4gJXMgdHJvbmcgJXMuIFRow6ptICVzIG5oxrAgbMOgICIKICIlcyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc3MAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc3MQogIywgYy1mb3JtYXQKIG1zZ2lkICJBZGRpbmcgJXMiCiBtc2dzdHIgIlRow6ptIFwiJXNcIiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc4NworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc4OAogbXNnaWQgIkZhdGFsIG1lcmdlIGZhaWx1cmUsIHNob3VsZG4ndCBoYXBwZW4uIgogbXNnc3RyICJWaeG7h2MgaMOyYSB0cuG7mW4gaOG7j25nIG5naGnDqm0gdHLhu41uZywga2jDtG5nIG7Dqm4gxJHhu4MgeOG6o3kgcmEuIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA2CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA3CiBtc2dpZCAiQWxyZWFkeSB1cC10by1kYXRlISIKIG1zZ3N0ciAixJDDoyBj4bqtcCBuaOG6rXQgcuG7k2khIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1lcmdpbmcgb2YgdHJlZXMgJXMgYW5kICVzIGZhaWxlZCIKIG1zZ3N0ciAiaMOyYSB0cuG7mW4gY8OieSAodHJlZSkgJXMgdsOgICVzIGfhurdwIGzhu5dpIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODQ2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVucHJvY2Vzc2VkIHBhdGg/Pz8gJXMiCiBtc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBjaMawYSDEkcaw4bujYyB44butIGzDvT8/PyAlcyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg5MQogbXNnaWQgIk1lcmdpbmc6IgogbXNnc3RyICLEkGFuZyB0cuG7mW46IgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTA0CiAjLCBjLWZvcm1hdAogbXNnaWQgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcjoiCiBtc2dpZF9wbHVyYWwgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcnM6IgogbXNnc3RyWzBdICJ0w6xtIHRo4bqleSAldSB04buVIHRpw6puIGNodW5nOiIKIG1zZ3N0clsxXSAidMOsbSB0aOG6pXkgJXUgdOG7lSB0acOqbiBjaHVuZzoiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5NDAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5NDEKIG1zZ2lkICJtZXJnZSByZXR1cm5lZCBubyBjb21taXQiCiBtc2dzdHIgImjDsmEgdHLhu5luIGtow7RuZyB0cuG6oyB24buBIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbsOgbyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTk5NworIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTk5OAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBwaMOibiB0w61jaCDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjIwMDkgYnVpbHRpbi9tZXJnZS5jOjY1OAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAxMCBidWlsdGluL21lcmdlLmM6NjcyCiBtc2dpZCAiVW5hYmxlIHRvIHdyaXRlIGluZGV4LiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IG9iamVjdC5jOjE5NQorIzogbm90ZXMtdXRpbHMuYzo0MAorbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKK21zZ3N0ciAiIgorIktow7RuZyB0aOG7gyBjaHV54buDbiBnaWFvIChjb21taXQpIGNoxrBhIMSRxrDhu6NjIGto4bufaSB04bqhbyBob+G6t2Mga2jDtG5nIMSRxrDhu6NjIHRoYW0gY2hp4bq/dSAiCisiY8OieSBnaGkgY2jDuiIKKworIzogbm90ZXMtdXRpbHMuYzo4MQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbm90ZXMucmV3cml0ZU1vZGUgdmFsdWU6ICclcyciCittc2dzdHIgIkdpw6EgdHLhu4sgbm90ZXMucmV3cml0ZU1vZGUgc2FpOiDigJwlc+KAnSIKKworIzogbm90ZXMtdXRpbHMuYzo5MQorIywgYy1mb3JtYXQKK21zZ2lkICJSZWZ1c2luZyB0byByZXdyaXRlIG5vdGVzIGluICVzIChvdXRzaWRlIG9mIHJlZnMvbm90ZXMvKSIKK21zZ3N0ciAiVOG7qyBjaOG7kWkgZ2hpIMSRw6ggZ2hpIGNow7ogdHJvbmcgJXMgKG7hurFtIG5nb8OgaSBj4bunYSByZWZzL25vdGVzLykiCisKKyMuIFRSQU5TTEFUT1JTOiBUaGUgZmlyc3QgJXMgaXMgdGhlIG5hbWUgb2YgdGhlCisjLiBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHNlY29uZCAlcyBpcyBpdHMgdmFsdWUKKyM6IG5vdGVzLXV0aWxzLmM6MTE4CisjLCBjLWZvcm1hdAorbXNnaWQgIkJhZCAlcyB2YWx1ZTogJyVzJyIKK21zZ3N0ciAiR2nDoSB0cuG7iyAlcyBzYWk6IOKAnCVz4oCdIgorCisjOiBvYmplY3QuYzoyMDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCDEkeG7kWkgdMaw4bujbmc6IOKAnCVz4oCdIgpAQCAtODc2LDE4ICs5MDMsMTggQEAKIG1zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCiBtc2dzdHIgIuKAnCVz4oCdIG7hurFtIG5nb8OgaSBt4buZdCBsacOqbiBr4bq/dCB0xrDhu6NuZyB0csawbmciCiAKLSM6IHJlbW90ZS5jOjE3ODEKKyM6IHJlbW90ZS5jOjE3ODgKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYWhlYWQgb2YgJyVzJyBieSAlZCBjb21taXQuXG4iCiBtc2dpZF9wbHVyYWwgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0cy5cbiIKIG1zZ3N0clswXSAiTmjDoW5oIGPhu6dhIGLhuqFuIGzDoCDEkeG6p3UgY+G7p2Eg4oCcJXPigJ0gYuG7n2kgJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKIG1zZ3N0clsxXSAiTmjDoW5oIGPhu6dhIGLhuqFuIGzDoCDEkeG6p3UgY+G7p2Eg4oCcJXPigJ0gYuG7n2kgJWQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKIAotIzogcmVtb3RlLmM6MTc4NworIzogcmVtb3RlLmM6MTc5NAogbXNnaWQgIiAgKHVzZSBcImdpdCBwdXNoXCIgdG8gcHVibGlzaCB5b3VyIGxvY2FsIGNvbW1pdHMpXG4iCiBtc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHB1c2hcIiDEkeG7gyB4deG6pXQgYuG6o24gY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIG7hu5lpIGLhu5kgY+G7p2EgYuG6oW4pXG4iCiAKLSM6IHJlbW90ZS5jOjE3OTAKKyM6IHJlbW90ZS5jOjE3OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91ciBicmFuY2ggaXMgYmVoaW5kICclcycgYnkgJWQgY29tbWl0LCBhbmQgY2FuIGJlIGZhc3QtZm9yd2FyZGVkLlxuIgogbXNnaWRfcGx1cmFsICIiCkBAIC04OTksMTEgKzkyNiwxMSBAQAogIk5ow6FuaCBj4bunYSBi4bqhbiB0aMOsIOG7nyDEkeG6sW5nIHNhdSDigJwlc+KAnSBi4bufaSAlZCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpLCB2w6AgY8OzIHRo4buDICIKICLEkcaw4bujYyBmYXN0LWZvcndhcmQuXG4iCiAKLSM6IHJlbW90ZS5jOjE3OTgKKyM6IHJlbW90ZS5jOjE4MDUKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcHVsbFwiIMSR4buDIGPhuq1wIG5o4bqtdCBuaMOhbmggbuG7mWkgYuG7mSBj4bunYSBi4bqhbilcbiIKIAotIzogcmVtb3RlLmM6MTgwMQorIzogcmVtb3RlLmM6MTgwOAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiWW91ciBicmFuY2ggYW5kICclcycgaGF2ZSBkaXZlcmdlZCxcbiIKQEAgLTkxOSwyMCArOTQ2LDI5IEBACiAiWW91ciBicmFuY2ggYW5kIOKAnCVz4oCdIGhhdmUgZGl2ZXJnZWQsXG4iCiAiYW5kIGhhdmUgJWQgYW5kICVkIGRpZmZlcmVudCBjb21taXQgZWFjaCwgcmVzcGVjdGl2ZWx5LlxuIgogCi0jOiByZW1vdGUuYzoxODExCisjOiByZW1vdGUuYzoxODE4CiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1bGxcIiB0byBtZXJnZSB0aGUgcmVtb3RlIGJyYW5jaCBpbnRvIHlvdXJzKVxuIgogbXNnc3RyICIiCiAiICAoZMO5bmcgXCJnaXQgcHVsbFwiIMSR4buDIGjDsmEgdHLhu5luIG5ow6FuaCB0csOqbiBtw6F5IGNo4bunIHbDoG8gdHJvbmcgbmjDoW5oIGPhu6dhICIKICJi4bqhbilcbiIKIAotIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5Ci0jOiBidWlsdGluL21lcmdlLmM6MTAwOQorIzogcnVuLWNvbW1hbmQuYzo4MAorbXNnaWQgIm9wZW4gL2Rldi9udWxsIGZhaWxlZCIKK21zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIG3hu58gL2Rldi9udWxsIgorCisjOiBydW4tY29tbWFuZC5jOjgyCisjLCBjLWZvcm1hdAorbXNnaWQgImR1cDIoJWQsJWQpIGZhaWxlZCIKK21zZ3N0ciAiZHVwMiglZCwlZCkgZ+G6t3AgbOG7l2kiCisKKyM6IHNlcXVlbmNlci5jOjIwNiBidWlsdGluL21lcmdlLmM6NzkwIGJ1aWx0aW4vbWVyZ2UuYzo5MDMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDEzIGJ1aWx0aW4vbWVyZ2UuYzoxMDIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIOKAnCVz4oCdIMSR4buDIGdoaSIKIAotIzogc2VxdWVuY2VyLmM6MjA4IGJ1aWx0aW4vbWVyZ2UuYzozMzUgYnVpbHRpbi9tZXJnZS5jOjc3OQotIzogYnVpbHRpbi9tZXJnZS5jOjEwMDEgYnVpbHRpbi9tZXJnZS5jOjEwMTQKKyM6IHNlcXVlbmNlci5jOjIwOCBidWlsdGluL21lcmdlLmM6MzUwIGJ1aWx0aW4vbWVyZ2UuYzo3OTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDE1IGJ1aWx0aW4vbWVyZ2UuYzoxMDI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIHbDoG8g4oCcJXPigJ0iCkBAIC05NTUsNyArOTkxLDcgQEAKICJ24bubaSBs4buHbmgg4oCcZ2l0IGFkZCA8xJHGsOG7nW5nX2ThuqtuPuKAnSBob+G6t2Mg4oCcZ2l0IHJtIDzEkcaw4budbmdfZOG6q24+4oCdXG4iCiAidsOgIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga+G6v3QgcXXhuqMgYuG6sW5nIGzhu4duaCDigJxnaXQgY29tbWl04oCdIgogCi0jOiBzZXF1ZW5jZXIuYzoyNDUgc2VxdWVuY2VyLmM6ODU5IHNlcXVlbmNlci5jOjk0MgorIzogc2VxdWVuY2VyLmM6MjQ1IHNlcXVlbmNlci5jOjg2OSBzZXF1ZW5jZXIuYzo5NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHdyaXRlIHRvICVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIHbDoG8gJXMiCkBAIC05NzgsNDYgKzEwMTQsNDYgQEAKIG1zZ3N0ciAiQ2h1eeG7g24gZ2lhbyAoY29tbWl0KSBjw6FjIHRoYXkgxJHhu5VpIGPhu6dhIGLhuqFuIGhheSBzdGFzaCBjaMO6bmcgxJHhu4MgeOG7rSBsw70uIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzozMTkKKyM6IHNlcXVlbmNlci5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlczogS2jDtG5nIHRo4buDIGdoaSB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMgbeG7m2kiCiAKLSM6IHNlcXVlbmNlci5jOjM1MAorIzogc2VxdWVuY2VyLmM6MzU1CiBtc2dpZCAiQ291bGQgbm90IHJlc29sdmUgSEVBRCBjb21taXRcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIGdp4bqjaSBjb21taXQgKGzhuqduIGNodXnhu4NuIGdpYW8pIEhFQURcbiIKIAotIzogc2VxdWVuY2VyLmM6MzcxCisjOiBzZXF1ZW5jZXIuYzozNzcKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCBjw6J5IGLhu5kgbmjhu5sgxJHhu4dtXG4iCiAKLSM6IHNlcXVlbmNlci5jOjQxNgorIzogc2VxdWVuY2VyLmM6NDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6NDIxCisjOiBzZXF1ZW5jZXIuYzo0MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIHBhcmVudCBjb21taXQgJXNcbiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGNvbW1pdCAobOG6p24gY2h1eeG7g24gZ2lhbykgY2hhIG3hurkgJXNcbiIKIAotIzogc2VxdWVuY2VyLmM6NDg3CisjOiBzZXF1ZW5jZXIuYzo0OTMKIG1zZ2lkICJZb3VyIGluZGV4IGZpbGUgaXMgdW5tZXJnZWQuIgogbXNnc3RyICJU4bqtcCB0aW4gbMawdSBt4bulYyBs4bulYyBj4bunYSBi4bqhbiBraMO0bmcgxJHGsOG7o2MgaMOyYSB0cuG7mW4uIgogCi0jOiBzZXF1ZW5jZXIuYzo1MDYKKyM6IHNlcXVlbmNlci5jOjUxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaXMgYSBtZXJnZSBidXQgbm8gLW0gb3B0aW9uIHdhcyBnaXZlbi4iCiBtc2dzdHIgIiIKICJM4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIGzDoCBt4buZdCBs4bqnbiBow7JhIHRy4buZbiBuaMawbmcga2jDtG5nIMSRxrBhIHJhIHTDuXkgY2jhu41uIC0iCiAibS4iCiAKLSM6IHNlcXVlbmNlci5jOjUxNAorIzogc2VxdWVuY2VyLmM6NTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBkb2VzIG5vdCBoYXZlIHBhcmVudCAlZCIKIG1zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAlcyBraMO0bmcgY8OzIGNoYSBt4bq5ICVkIgogCi0jOiBzZXF1ZW5jZXIuYzo1MTgKKyM6IHNlcXVlbmNlci5jOjUyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWlubGluZSB3YXMgc3BlY2lmaWVkIGJ1dCBjb21taXQgJXMgaXMgbm90IGEgbWVyZ2UuIgogbXNnc3RyICIiCkBAIC0xMDI2LDE3MSArMTA2MiwxOTUgQEAKIAogIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyB3aWxsIGJlICJyZXZlcnQiIG9yCiAjLiAiY2hlcnJ5LXBpY2siLCB0aGUgc2Vjb25kICVzIGEgU0hBMQotIzogc2VxdWVuY2VyLmM6NTMxCisjOiBzZXF1ZW5jZXIuYzo1MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGNhbm5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzIgogbXNnc3RyICIlczoga2jDtG5nIHRo4buDIHBow6JuIHTDrWNoIGzhuqduIGNodXnhu4NuIGdpYW8gbeG6uSBj4bunYSAlcyIKIAotIzogc2VxdWVuY2VyLmM6NTM1CisjOiBzZXF1ZW5jZXIuYzo1NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGdldCBjb21taXQgbWVzc2FnZSBmb3IgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB0aMO0bmcgxJFp4buHcCBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGNobyAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjIxCisjOiBzZXF1ZW5jZXIuYzo2MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJldmVydCAlcy4uLiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHJldmVydCAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjIyCisjOiBzZXF1ZW5jZXIuYzo2MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGFwcGx5ICVzLi4uICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgYXBwbHkgKMOhcCBk4bulbmcgbWnhur9uZyB2w6EpICVzLi4uICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2NTQKKyM6IHNlcXVlbmNlci5jOjY2NAogbXNnaWQgImVtcHR5IGNvbW1pdCBzZXQgcGFzc2VkIgogbXNnc3RyICJs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIHRy4buRbmcgcuG7l25nIMSR4bq3dCBsw6AgaOG7o3AgcXV5IGPDoWNoIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjIKKyM6IHNlcXVlbmNlci5jOjY3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVzOiBn4bq3cCBs4buXaSDEkeG7jWMgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjcKKyM6IHNlcXVlbmNlci5jOjY3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVzOiBn4bq3cCBs4buXaSBraGkgbMOgbSB0xrDGoWkgbeG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBzZXF1ZW5jZXIuYzo3MjUKKyM6IHNlcXVlbmNlci5jOjczNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgJXMgZHVyaW5nIGEgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyAlcyB0cm9uZyBraGkgJXMiCiAKLSM6IHNlcXVlbmNlci5jOjc0NworIzogc2VxdWVuY2VyLmM6NzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBsaW5lICVkLiIKIG1zZ3N0ciAiS2jDtG5nIHBow6JuIHTDrWNoIMSRxrDhu6NjIGTDsm5nICVkLiIKIAotIzogc2VxdWVuY2VyLmM6NzUyCisjOiBzZXF1ZW5jZXIuYzo3NjIKIG1zZ2lkICJObyBjb21taXRzIHBhcnNlZC4iCiBtc2dzdHIgIktow7RuZyBjw7MgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuw6BvIMSRxrDhu6NjIHBow6JuIHTDrWNoLiIKIAotIzogc2VxdWVuY2VyLmM6NzY1CisjOiBzZXF1ZW5jZXIuYzo3NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBt4bufICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo3NjkKKyM6IHNlcXVlbmNlci5jOjc3OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCAlcy4iCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzo3NzYKKyM6IHNlcXVlbmNlci5jOjc4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnVzYWJsZSBpbnN0cnVjdGlvbiBzaGVldDogJXMiCiBtc2dzdHIgIkLhuqNuZyBjaOG7iSB0aOG7iyBraMO0bmcgdGjhu4MgZMO5bmcgxJHGsOG7o2M6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDQKKyM6IHNlcXVlbmNlci5jOjgxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGtleTogJXMiCiBtc2dzdHIgIktow7NhIGtow7RuZyDEkcO6bmc6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDcKKyM6IHNlcXVlbmNlci5jOjgxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHZhbHVlIGZvciAlczogJXMiCiBtc2dzdHIgIkdpw6EgdHLhu4sga2jDtG5nIGjhu6NwIGzhu4cgJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MTkKKyM6IHNlcXVlbmNlci5jOjgyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgb3B0aW9ucyBzaGVldDogJXMiCiBtc2dzdHIgIkLhuqNuZyB0w7l5IGNo4buNbiBk4buLIGjDrG5oOiAlcyIKIAotIzogc2VxdWVuY2VyLmM6ODQwCisjOiBzZXF1ZW5jZXIuYzo4NTAKIG1zZ2lkICJhIGNoZXJyeS1waWNrIG9yIHJldmVydCBpcyBhbHJlYWR5IGluIHByb2dyZXNzIgogbXNnc3RyICJt4buZdCB0aGFvIHTDoWMgY2hlcnJ5LXBpY2sgaG/hurdjIHJldmVydCDEkWFuZyDEkcaw4bujYyB0aOG7sWMgaGnhu4duIgogCi0jOiBzZXF1ZW5jZXIuYzo4NDEKKyM6IHNlcXVlbmNlci5jOjg1MQogbXNnaWQgInRyeSBcImdpdCBjaGVycnktcGljayAoLS1jb250aW51ZSB8IC0tcXVpdCB8IC0tYWJvcnQpXCIiCiBtc2dzdHIgImjDo3kgdGjhu60gXCJnaXQgY2hlcnJ5LXBpY2sgKC0tY29udGludWUgfCAtLXF1aXQgfCAtLWFib3J0KVwiIgogCi0jOiBzZXF1ZW5jZXIuYzo4NDUKKyM6IHNlcXVlbmNlci5jOjg1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIHNlcXVlbmNlciBkaXJlY3RvcnkgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyB0aMawIG3hu6VjIHjhur9wIGTDo3kgJXMiCiAKLSM6IHNlcXVlbmNlci5jOjg2MSBzZXF1ZW5jZXIuYzo5NDYKKyM6IHNlcXVlbmNlci5jOjg3MSBzZXF1ZW5jZXIuYzo5NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRXJyb3Igd3JhcHBpbmcgdXAgJXMuIgogbXNnc3RyICJM4buXaSBiYW8gYuG7jWMgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzo4ODAgc2VxdWVuY2VyLmM6MTAxNAorIzogc2VxdWVuY2VyLmM6ODkwIHNlcXVlbmNlci5jOjEwMjQKIG1zZ2lkICJubyBjaGVycnktcGljayBvciByZXZlcnQgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgImtow7RuZyBjaGVycnktcGljayBoYXkgcmV2ZXJ0IHRyb25nIHRp4bq/biB0csOsbmgiCiAKLSM6IHNlcXVlbmNlci5jOjg4MgorIzogc2VxdWVuY2VyLmM6ODkyCiBtc2dpZCAiY2Fubm90IHJlc29sdmUgSEVBRCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHBow6JuIGdp4bqjaSBIRUFEIgogCi0jOiBzZXF1ZW5jZXIuYzo4ODQKKyM6IHNlcXVlbmNlci5jOjg5NAogbXNnaWQgImNhbm5vdCBhYm9ydCBmcm9tIGEgYnJhbmNoIHlldCB0byBiZSBib3JuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgaOG7p3kgYuG7jyB04burIG3hu5l0IG5ow6FuaCBtw6AgbsOzIGPDsm4gY2jGsGEgxJHGsOG7o2MgdOG6oW8gcmEiCiAKLSM6IHNlcXVlbmNlci5jOjkwNiBidWlsdGluL2FwcGx5LmM6NDA2MAorIzogc2VxdWVuY2VyLmM6OTE2IGJ1aWx0aW4vYXBwbHkuYzo0MDYxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICVzOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo5MDkKKyM6IHNlcXVlbmNlci5jOjkxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAlczogJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgJXM6ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo5MTAKKyM6IHNlcXVlbmNlci5jOjkyMAogbXNnaWQgInVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUiCiBtc2dzdHIgImvhur90IHRow7pjIHThuq1wIHRpbiDEkeG7mXQgeHXhuqV0IgogCi0jOiBzZXF1ZW5jZXIuYzo5MTYKKyM6IHNlcXVlbmNlci5jOjkyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJzdG9yZWQgcHJlLWNoZXJyeS1waWNrIEhFQUQgZmlsZSAnJXMnIGlzIGNvcnJ1cHQiCiBtc2dzdHIgInThuq1wIHRpbiBIRUFEIOKAnHByZS1jaGVycnktcGlja+KAnSDEkcOjIGzGsHUg4oCcJXPigJ0gYuG7iyBo4buPbmciCiAKLSM6IHNlcXVlbmNlci5jOjkzOQorIzogc2VxdWVuY2VyLmM6OTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmb3JtYXQgJXMuIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu4tuaCBk4bqhbmcgJXMuIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDgzCisjOiBzZXF1ZW5jZXIuYzoxMDkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIgogbXNnc3RyICIlczoga2jDtG5nIHRo4buDIGNoZXJyeS1waWNrIG3hu5l0ICVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDg1CisjOiBzZXF1ZW5jZXIuYzoxMDk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCiBtc2dzdHIgIiVzOiDEkWnhu4NtIHjDqXQgZHV54buHdCBzYWkiCiAKLSM6IHNlcXVlbmNlci5jOjExMTkKKyM6IHNlcXVlbmNlci5jOjExMjkKIG1zZ2lkICJDYW4ndCByZXZlcnQgYXMgaW5pdGlhbCBjb21taXQiCiBtc2dzdHIgIktow7RuZyB0aOG7gyByZXZlcnQgbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraOG7n2kgdOG6oW8iCiAKLSM6IHNlcXVlbmNlci5jOjExMjAKKyM6IHNlcXVlbmNlci5jOjExMzAKIG1zZ2lkICJDYW4ndCBjaGVycnktcGljayBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBjaGVycnktcGljayB2w6BvIG3hu5l0IMSR4bqndSAoaGVhZCkgdHLhu5FuZyBy4buXbmciCiAKLSM6IHNoYTFfbmFtZS5jOjEwMzYKKyM6IHNoYTFfbmFtZS5jOjQ0MAorbXNnaWQgIiIKKyJHaXQgbm9ybWFsbHkgbmV2ZXIgY3JlYXRlcyBhIHJlZiB0aGF0IGVuZHMgd2l0aCA0MCBoZXggY2hhcmFjdGVyc1xuIgorImJlY2F1c2UgaXQgd2lsbCBiZSBpZ25vcmVkIHdoZW4geW91IGp1c3Qgc3BlY2lmeSA0MC1oZXguIFRoZXNlIHJlZnNcbiIKKyJtYXkgYmUgY3JlYXRlZCBieSBtaXN0YWtlLiBGb3IgZXhhbXBsZSxcbiIKKyJcbiIKKyIgIGdpdCBjaGVja291dCAtYiAkYnIgJChnaXQgcmV2LXBhcnNlIC4uLilcbiIKKyJcbiIKKyJ3aGVyZSBcIiRiclwiIGlzIHNvbWVob3cgZW1wdHkgYW5kIGEgNDAtaGV4IHJlZiBpcyBjcmVhdGVkLiBQbGVhc2VcbiIKKyJleGFtaW5lIHRoZXNlIHJlZnMgYW5kIG1heWJlIGRlbGV0ZSB0aGVtLiBUdXJuIHRoaXMgbWVzc2FnZSBvZmYgYnlcbiIKKyJydW5uaW5nIFwiZ2l0IGNvbmZpZyBhZHZpY2Uub2JqZWN0X25hbWVfd2FybmluZyBmYWxzZVwiIgorbXNnc3RyICIiCisiR2l0IHRoxrDhu51uZyBraMO0bmcgYmFvIGdp4budIHThuqFvIHRoYW0gY2hp4bq/dSBtw6AgbsOzIGvhur90IHRow7pjIHbhu5tpIDQwIGvDvSB04buxIGhleFxuIgorImLhu59pIHbDrCBuw7Mgc+G6vSBi4buLIGLhu48gcXVhIGtoaSBi4bqhbiBjaOG7iSDEkeG7i25oIDQwLWhleC4gTmjhu69uZyB0aGFtIGNoaeG6v3UgbsOgeVxuIgorImPDsyBs4bq9IMSRxrDhu6NjIHThuqFvIHJhIGLhu59pIG3hu5l0IHNhaSBzw7N0IG7DoG8gxJHDsy4gVsOtIGThu6UsXG4iCisiXG4iCisiICBnaXQgY2hlY2tvdXQgLWIgJGJyICQoZ2l0IHJldi1wYXJzZSAuLi4pXG4iCisiXG4iCisiduG7m2kgXCIkYnJcIiBraMO0bmcgaGnhu4N1IGzDvSBkbyB2w6wgc2FvIHRy4buRbmcgcuG7l25nIHbDoCBt4buZdCB0aGFtIGNoaeG6v3UgNDAtaGV4IMSRxrDhu6NjICIKKyJ04bqhbyByYS5cbiIKKyJYaW4gaMOjeSBraeG7g20gdHJhIG5o4buvbmcgdGhhbSBjaGnhur91IG7DoHkgdsOgIGPDsyB0aOG7gyB4w7NhIGNow7puZyDEkWkuIFThuq90IGzhu51pIG5o4bqvbiAiCisibsOgeVxuIgorImLhurFuZyBjw6FjaCBjaOG6oXkgbOG7h25oIFwiZ2l0IGNvbmZpZyBhZHZpY2Uub2JqZWN0X25hbWVfd2FybmluZyBmYWxzZVwiIgorCisjOiBzaGExX25hbWUuYzoxMDk3CiBtc2dpZCAiSEVBRCBkb2VzIG5vdCBwb2ludCB0byBhIGJyYW5jaCIKIG1zZ3N0ciAiSEVBRCBraMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IG5ow6FuaCBuw6BvIGPhuqMiCiAKLSM6IHNoYTFfbmFtZS5jOjEwMzkKKyM6IHNoYTFfbmFtZS5jOjExMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCBicmFuY2g6ICclcyciCiBtc2dzdHIgIktow7RuZyBjw7MgbmjDoW5oIG7DoG8gbmjGsCB0aOG6vzog4oCcJXPigJ0iCiAKLSM6IHNoYTFfbmFtZS5jOjEwNDEKKyM6IHNoYTFfbmFtZS5jOjExMDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gdXBzdHJlYW0gY29uZmlndXJlZCBmb3IgYnJhbmNoICclcyciCiBtc2dzdHIgIktow7RuZyBjw7MgdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSDEkcaw4bujYyBj4bqldSBow6xuaCBjaG8gbmjDoW5oIOKAnCVz4oCdIgogCi0jOiBzaGExX25hbWUuYzoxMDQ0CisjOiBzaGExX25hbWUuYzoxMTA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwc3RyZWFtIGJyYW5jaCAnJXMnIG5vdCBzdG9yZWQgYXMgYSByZW1vdGUtdHJhY2tpbmcgYnJhbmNoIgogbXNnc3RyICIiCkBAIC0xMjAyLDE3MiArMTI2MiwxNzIgQEAKIG1zZ2lkICJ1bmFibGUgdG8gYWNjZXNzICclcyc6ICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdHJ1eSBj4bqtcCDigJwlc+KAnTogJXMiCiAKLSM6IHdyYXBwZXIuYzo0MjMKKyM6IHdyYXBwZXIuYzo0MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdHJ1eSBj4bqtcCDigJwlc+KAnSIKIAotIzogd3JhcHBlci5jOjQzNAorIzogd3JhcHBlci5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gbG9vayB1cCBjdXJyZW50IHVzZXIgaW4gdGhlIHBhc3N3ZCBmaWxlOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHTDrG0gdGjhuqV5IG5nxrDhu51pIGTDuW5nIGhp4buHbiB04bqhaSB0cm9uZyB04bqtcCB0aW4gcGFzc3dkOiAlcyIKIAotIzogd3JhcHBlci5jOjQzNQorIzogd3JhcHBlci5jOjQ0MQogbXNnaWQgIm5vIHN1Y2ggdXNlciIKIG1zZ3N0ciAia2jDtG5nIGPDsyBuZ8aw4budaSBkw7luZyBuaMawIHbhuq15IgogCi0jOiB3dC1zdGF0dXMuYzoxNDAKKyM6IHd0LXN0YXR1cy5jOjE0MQogbXNnaWQgIlVubWVyZ2VkIHBhdGhzOiIKIG1zZ3N0ciAiTmjhu69uZyDEkcaw4budbmcgZOG6q24gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW46IgogCi0jOiB3dC1zdGF0dXMuYzoxNjcgd3Qtc3RhdHVzLmM6MTk0CisjOiB3dC1zdGF0dXMuYzoxNjggd3Qtc3RhdHVzLmM6MTk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCByZXNldCAlcyA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcmVzZXQgJXMgPHThuq1wLXRpbj4uLi5cIiDEkeG7gyBi4buPIG3hu5l0IHN0YWdlICh0cuG6oW5nIHRow6FpKSkiCiAKLSM6IHd0LXN0YXR1cy5jOjE2OSB3dC1zdGF0dXMuYzoxOTYKKyM6IHd0LXN0YXR1cy5jOjE3MCB3dC1zdGF0dXMuYzoxOTcKIG1zZ2lkICIgICh1c2UgXCJnaXQgcm0gLS1jYWNoZWQgPGZpbGU+Li4uXCIgdG8gdW5zdGFnZSkiCiBtc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHJtIC0tY2FjaGVkIDx04bqtcC10aW4+Li4uXCIgxJHhu4MgYuG7jyB0cuG6oW5nIHRow6FpIChzdGFnZSkpIgogCi0jOiB3dC1zdGF0dXMuYzoxNzMKKyM6IHd0LXN0YXR1cy5jOjE3NAogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gbWFyayByZXNvbHV0aW9uKSIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgYWRkIDx04bqtcC10aW4+Li4uXCIgxJHhu4MgxJHDoW5oIGThuqV1IGzDoCBj4bqnbiBnaeG6o2kgcXV54bq/dCkiCiAKLSM6IHd0LXN0YXR1cy5jOjE3NSB3dC1zdGF0dXMuYzoxNzkKKyM6IHd0LXN0YXR1cy5jOjE3NiB3dC1zdGF0dXMuYzoxODAKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkL3JtIDxmaWxlPi4uLlwiIGFzIGFwcHJvcHJpYXRlIHRvIG1hcmsgcmVzb2x1dGlvbikiCiBtc2dzdHIgIiIKICIgIChkw7luZyBcImdpdCBhZGQvcm0gPHThuq1wLXRpbj4uLi5cIiBuaMawIGzDoCBt4buZdCBjw6FjaCAgdGjDrWNoIGjhu6NwIMSR4buDIMSRw6FuaCBk4bqldSAiCiAibMOgIGPhuqduIMSRxrDhu6NjIGdp4bqjaSBxdXnhur90KSIKIAotIzogd3Qtc3RhdHVzLmM6MTc3CisjOiB3dC1zdGF0dXMuYzoxNzgKIG1zZ2lkICIgICh1c2UgXCJnaXQgcm0gPGZpbGU+Li4uXCIgdG8gbWFyayByZXNvbHV0aW9uKSIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgcm0gPHThuq1wLXRpbj4uLi5cIiDEkeG7gyDEkcOhbmggZOG6pXUgbMOgIGPhuqduIGdp4bqjaSBxdXnhur90KSIKIAotIzogd3Qtc3RhdHVzLmM6MTg4CisjOiB3dC1zdGF0dXMuYzoxODkKIG1zZ2lkICJDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIk5o4buvbmcgdGhheSDEkeG7lWkgc+G6vSDEkcaw4bujYyBjaHV54buDbiBnaWFvOiIKIAotIzogd3Qtc3RhdHVzLmM6MjA2CisjOiB3dC1zdGF0dXMuYzoyMDcKIG1zZ2lkICJDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoiCiBtc2dzdHIgIiIKICJDw6FjIHRoYXkgxJHhu5VpIGtow7RuZyDEkcaw4bujYyDEkeG6t3QgdHLhuqFuZyB0aMOhaSAoc3RhZ2UpIGNobyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpOiIKIAotIzogd3Qtc3RhdHVzLmM6MjEwCisjOiB3dC1zdGF0dXMuYzoyMTEKIG1zZ2lkICIgICh1c2UgXCJnaXQgYWRkIDxmaWxlPi4uLlwiIHRvIHVwZGF0ZSB3aGF0IHdpbGwgYmUgY29tbWl0dGVkKSIKIG1zZ3N0ciAiIgogIiAgKGTDuW5nIFwiZ2l0IGFkZCA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGPhuq1wIG5o4bqtdCBuaOG7r25nIGfDrCBj4bqnbiBjaHV54buDbiBnaWFvICIKICIoY29tbWl0KSkiCiAKLSM6IHd0LXN0YXR1cy5jOjIxMgorIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiIKICIgIChkw7luZyBcImdpdCBhZGQvcm0gPHThuq1wLXRpbj4uLi5cIiDEkeG7gyBj4bqtcCBuaOG6rXQgbmjhu69uZyBnw6wgc+G6vSDEkcaw4bujYyBjaHV54buDbiBnaWFvKSIKIAotIzogd3Qtc3RhdHVzLmM6MjEzCisjOiB3dC1zdGF0dXMuYzoyMTQKIG1zZ2lkICIiCiAiICAodXNlIFwiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLlwiIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkiCiBtc2dzdHIgIiIKICIgIChkw7luZyBcImdpdCBjaGVja291dCAtLSA8dOG6rXAtdGluPi4uLlwiIMSR4buDIGLhu48gdGhheSDEkeG7lWkgdHJvbmcgdGjGsCBt4bulYyBsw6BtICIKICJ2aeG7h2MpIgogCi0jOiB3dC1zdGF0dXMuYzoyMTUKKyM6IHd0LXN0YXR1cy5jOjIxNgogbXNnaWQgIiAgKGNvbW1pdCBvciBkaXNjYXJkIHRoZSB1bnRyYWNrZWQgb3IgbW9kaWZpZWQgY29udGVudCBpbiBzdWJtb2R1bGVzKSIKIG1zZ3N0ciAiIgogIiAgKGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgaG/hurdjIGzDoCBsb+G6oWkgYuG7jyBjw6FjIG7hu5lpIGR1bmcga2jDtG5nLWLhu4stdGhlby124bq/dCBoYXkgIgogIsSRw6MgYuG7iyBjaOG7iW5oIHPhu61hIHRyb25nIG3DtC3EkXVuLWNvbikiCiAKLSM6IHd0LXN0YXR1cy5jOjIyNworIzogd3Qtc3RhdHVzLmM6MjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCAlcyA8ZmlsZT4uLi5cIiB0byBpbmNsdWRlIGluIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgogbXNnc3RyICIiCiAiICAoZMO5bmcgXCJnaXQgJXMgPHThuq1wLXRpbj4uLi5cIiDEkeG7gyB0aMOqbSB2w6BvIG5o4buvbmcgZ8OsIGPhuqduIGNodXnhu4NuIGdpYW8gIgogIihjb21taXQpKSIKIAotIzogd3Qtc3RhdHVzLmM6MjQ0CisjOiB3dC1zdGF0dXMuYzoyNDUKIG1zZ2lkICJidWciCiBtc2dzdHIgImzhu5dpIgogCi0jOiB3dC1zdGF0dXMuYzoyNDkKKyM6IHd0LXN0YXR1cy5jOjI1MAogbXNnaWQgImJvdGggZGVsZXRlZDoiCiBtc2dzdHIgImLhu4sgeMOzYSBi4bufaSBj4bqjIGhhaToiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MAorIzogd3Qtc3RhdHVzLmM6MjUxCiBtc2dpZCAiYWRkZWQgYnkgdXM6IgogbXNnc3RyICLEkcaw4bujYyB0aMOqbSB2w6BvIGLhu59pIGNow7puZyB0YToiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MQorIzogd3Qtc3RhdHVzLmM6MjUyCiBtc2dpZCAiZGVsZXRlZCBieSB0aGVtOiIKIG1zZ3N0ciAiYuG7iyB4w7NhIMSRaSBi4bufaSBo4buNOiIKIAotIzogd3Qtc3RhdHVzLmM6MjUyCisjOiB3dC1zdGF0dXMuYzoyNTMKIG1zZ2lkICJhZGRlZCBieSB0aGVtOiIKIG1zZ3N0ciAixJHGsOG7o2MgdGjDqm0gdsOgbyBi4bufaSBo4buNOiIKIAotIzogd3Qtc3RhdHVzLmM6MjUzCisjOiB3dC1zdGF0dXMuYzoyNTQKIG1zZ2lkICJkZWxldGVkIGJ5IHVzOiIKIG1zZ3N0ciAiYuG7iyB4w7NhIGLhu59pIGNow7puZyB0YToiCiAKLSM6IHd0LXN0YXR1cy5jOjI1NAorIzogd3Qtc3RhdHVzLmM6MjU1CiBtc2dpZCAiYm90aCBhZGRlZDoiCiBtc2dzdHIgIsSRxrDhu6NjIHRow6ptIHbDoG8gYuG7n2kgY+G6oyBoYWk6IgogCi0jOiB3dC1zdGF0dXMuYzoyNTUKKyM6IHd0LXN0YXR1cy5jOjI1NgogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICJi4buLIHPhu61hIGLhu59pIGPhuqMgaGFpOiIKIAotIzogd3Qtc3RhdHVzLmM6Mjg1CisjOiB3dC1zdGF0dXMuYzoyODYKIG1zZ2lkICJuZXcgY29tbWl0cywgIgogbXNnc3RyICJs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIG3hu5tpLCAiCiAKLSM6IHd0LXN0YXR1cy5jOjI4NworIzogd3Qtc3RhdHVzLmM6Mjg4CiBtc2dpZCAibW9kaWZpZWQgY29udGVudCwgIgogbXNnc3RyICJu4buZaSBkdW5nIGLhu4sgc+G7rWEgxJHhu5VpLCAiCiAKLSM6IHd0LXN0YXR1cy5jOjI4OQorIzogd3Qtc3RhdHVzLmM6MjkwCiBtc2dpZCAidW50cmFja2VkIGNvbnRlbnQsICIKIG1zZ3N0ciAibuG7mWkgZHVuZyBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWksICIKIAotIzogd3Qtc3RhdHVzLmM6MzA2CisjOiB3dC1zdGF0dXMuYzozMDcKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IGZpbGU6ICAgJXMiCiBtc2dzdHIgInThuq1wIHRpbiBt4bubaTogICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzA5CisjOiB3dC1zdGF0dXMuYzozMTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY29waWVkOiAgICAgJXMgLT4gJXMiCiBtc2dzdHIgIsSRw6Mgc2FvIGNow6lwOiAgICAgJXMgLT4gJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMxMgorIzogd3Qtc3RhdHVzLmM6MzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgImRlbGV0ZWQ6ICAgICVzIgogbXNnc3RyICLEkcOjIHjDs2E6ICAgICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMTUKKyM6IHd0LXN0YXR1cy5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJtb2RpZmllZDogICAlcyIKIG1zZ3N0ciAixJHDoyBz4butYSDEkeG7lWk6ICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMxOAorIzogd3Qtc3RhdHVzLmM6MzE5CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbmFtZWQ6ICAgICVzIC0+ICVzIgogbXNnc3RyICLEkcOjIMSR4buVaSB0w6puOiAgICAlcyAtPiAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzIxCisjOiB3dC1zdGF0dXMuYzozMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIsSR4buVaS1raeG7g3U6ICVzIgogCi0jOiB3dC1zdGF0dXMuYzozMjQKKyM6IHd0LXN0YXR1cy5jOjMyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmtub3duOiAgICAlcyIKIG1zZ3N0ciAia2jDtG5nIGhp4buDdTogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMyNworIzogd3Qtc3RhdHVzLmM6MzI4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICJjaMawYSBow7JhIHRy4buZbjogICAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MzMwCisjOiB3dC1zdGF0dXMuYzozMzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYnVnOiB1bmhhbmRsZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgImzhu5dpOiBraMO0bmcgbOG6pXkgxJHGsOG7o2MgdHLhuqFuZyB0aMOhaSBs4buHbmggZGlmZiAlYyIKQEAgLTEzNzYsNyArMTQzNiw3IEBACiBtc2dpZCAiWW91IGhhdmUgdW5tZXJnZWQgcGF0aHMuIgogbXNnc3RyICJC4bqhbiBjw7Mgbmjhu69uZyDEkcaw4budbmcgZOG6q24gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4uIgogCi0jOiB3dC1zdGF0dXMuYzo4MDYgd3Qtc3RhdHVzLmM6OTU4CisjOiB3dC1zdGF0dXMuYzo4MDYKIG1zZ2lkICIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgY29tbWl0XCIpIgogbXNnc3RyICIgIChz4butYSBjw6FjIHh1bmcgxJHhu5l0IHNhdSDEkcOzIGNo4bqheSBcImdpdCBjb21taXRcIikiCiAKQEAgLTEzOTcsOCArMTQ1Nyw4IEBACiBtc2dzdHIgIk1p4bq/bmcgdsOhIGhp4buHbiB04bqhaSBi4buLIHRy4buRbmcgcuG7l25nLiIKIAogIzogd3Qtc3RhdHVzLmM6ODI5Ci1tc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKLW1zZ3N0ciAiICAoc+G7rWEgY8OhYyB4dW5nIMSR4buZdCB2w6Agc2F1IMSRw7MgY2jhuqF5IGzhu4duaCBcImdpdCBhbSAtLXJlc29sdmVkXCIpIgorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tY29udGludWVcIikiCittc2dzdHIgIiAgKHPhu61hIGPDoWMgeHVuZyDEkeG7mXQgdsOgIHNhdSDEkcOzIGNo4bqheSBs4buHbmggXCJnaXQgYW0gLS1jb250aW51ZVwiKSIKIAogIzogd3Qtc3RhdHVzLmM6ODMxCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFtIC0tc2tpcFwiIHRvIHNraXAgdGhpcyBwYXRjaCkiCkBAIC0xNDgxLDQwICsxNTQxLDUxIEBACiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuIgogbXNnc3RyICJC4bqhbiBoaeG7h24gbmF5IMSRYW5nIHRo4buxYyBoaeG7h24gdmnhu4djIGNoZXJyeS1waWNrLiIKIAotIzogd3Qtc3RhdHVzLmM6OTYxCi1tc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKLW1zZ3N0ciAiICAoa2hpIHThuqV0IGPhuqMgY8OhYyB4dW5nIMSR4buZdCDEkcOjIHPhu61hIHhvbmc6IGNo4bqheSBs4buHbmggXCJnaXQgY29tbWl0XCIpIgorIzogd3Qtc3RhdHVzLmM6OTU4Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNoZXJyeS1waWNrIC0tY29udGludWVcIikiCittc2dzdHIgIiIKKyIgIChz4butYSBjw6FjIHh1bmcgxJHhu5l0IHbDoCBzYXUgxJHDsyBjaOG6oXkgbOG7h25oIFwiZ2l0IGNoZXJyeS1waWNrIC0tY29udGludWVcIikiCiAKLSM6IHd0LXN0YXR1cy5jOjk3MAorIzogd3Qtc3RhdHVzLmM6OTYxCittc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNoZXJyeS1waWNrIC0tY29udGludWVcIikiCittc2dzdHIgIiIKKyIgIChraGkgdOG6pXQgY+G6oyBjw6FjIHh1bmcgxJHhu5l0IMSRw6Mgc+G7rWEgeG9uZzogY2jhuqF5IGzhu4duaCBcImdpdCBjaGVycnktcGljayAtLSIKKyJjb250aW51ZVwiKSIKKworIzogd3Qtc3RhdHVzLmM6OTYzCittc2dpZCAiICAodXNlIFwiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIGNoZXJyeS1waWNrIG9wZXJhdGlvbikiCittc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnRcIiDEkeG7gyBo4buneSBi4buPIHRoYW8gdMOhYyBjaGVycnktcGljaykiCisKKyM6IHd0LXN0YXR1cy5jOjk3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIKIG1zZ3N0ciAiQuG6oW4gaGnhu4duIG5heSDEkWFuZyB0aOG7sWMgaGnhu4duIHRoYW8gdMOhYyByZXZlcnQgbOG6p24gY2h1eeG7g24gZ2lhbyDigJwlc+KAnS4iCiAKLSM6IHd0LXN0YXR1cy5jOjk3NQorIzogd3Qtc3RhdHVzLmM6OTc3CiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgogbXNnc3RyICIgIChz4butYSBjw6FjIHh1bmcgxJHhu5l0IHbDoCBzYXUgxJHDsyBjaOG6oXkgbOG7h25oIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgogCi0jOiB3dC1zdGF0dXMuYzo5NzgKKyM6IHd0LXN0YXR1cy5jOjk4MAogbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiIgogIiAgKGtoaSB04bqldCBj4bqjIGPDoWMgeHVuZyDEkeG7mXQgxJHDoyBz4butYSB4b25nOiBjaOG6oXkgbOG7h25oIFwiZ2l0IHJldmVydCAtLWNvbnRpbnVlXCIpIgogCi0jOiB3dC1zdGF0dXMuYzo5ODAKKyM6IHd0LXN0YXR1cy5jOjk4MgogbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCiBtc2dzdHIgIiAgKGTDuW5nIFwiZ2l0IHJldmVydCAtLWFib3J0XCIgxJHhu4MgaOG7p3kgYuG7jyB0aGFvIHTDoWMgcmV2ZXJ0KSIKIAotIzogd3Qtc3RhdHVzLmM6OTkxCisjOiB3dC1zdGF0dXMuYzo5OTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiWW91IGFyZSBjdXJyZW50bHkgYmlzZWN0aW5nLCBzdGFydGVkIGZyb20gYnJhbmNoICclcycuIgogbXNnc3RyICIiCiAiQuG6oW4gaGnhu4duIG5heSDEkWFuZyB0aOG7sWMgaGnhu4duIHRoYW8gdMOhYyBkaSBjaHV54buDbiBu4butYSBixrDhu5tjIChiaXNlY3QpLCBi4bqvdCDEkeG6p3UgdOG7qyAiCiAibmjDoW5oIOKAnCVz4oCdLiIKIAotIzogd3Qtc3RhdHVzLmM6OTk1CisjOiB3dC1zdGF0dXMuYzo5OTcKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcuIgogbXNnc3RyICJC4bqhbiBoaeG7h24gdOG6oWkgxJFhbmcgdGjhu7FjIGhp4buHbiB2aeG7h2MgYmlzZWN0IChjaGlhIMSRw7RpKS4iCiAKLSM6IHd0LXN0YXR1cy5jOjk5OAorIzogd3Qtc3RhdHVzLmM6MTAwMAogbXNnaWQgIiAgKHVzZSBcImdpdCBiaXNlY3QgcmVzZXRcIiB0byBnZXQgYmFjayB0byB0aGUgb3JpZ2luYWwgYnJhbmNoKSIKIG1zZ3N0ciAiICAoZMO5bmcgXCJnaXQgYmlzZWN0IHJlc2V0XCIgxJHhu4MgcXVheSB0cuG7nyBs4bqhaSBuaMOhbmggbmd1ecOqbiB0aOG7p3kpIgogCkBAIC0xNTIyLDMxICsxNTkzLDM1IEBACiBtc2dpZCAiT24gYnJhbmNoICIKIG1zZ3N0ciAiVHLDqm4gbmjDoW5oICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4NAorIzogd3Qtc3RhdHVzLmM6MTE4MAorbXNnaWQgInJlYmFzZSBpbiBwcm9ncmVzczsgb250byAiCittc2dzdHIgInJlYmFzZSDEkWFuZyDEkcaw4bujYyB0aOG7sWMgaGnhu4duOiBsw6puIHRyw6puIgorCisjOiB3dC1zdGF0dXMuYzoxMTg3CiBtc2dpZCAiSEVBRCBkZXRhY2hlZCBhdCAiCiBtc2dzdHIgIkhFQUQgxJHGsOG7o2MgdMOhY2ggcuG7nWkgdOG6oWkiCiAKLSM6IHd0LXN0YXR1cy5jOjExODYKKyM6IHd0LXN0YXR1cy5jOjExODkKIG1zZ2lkICJIRUFEIGRldGFjaGVkIGZyb20gIgogbXNnc3RyICJIRUFEIMSRxrDhu6NjIHTDoWNoIHLhu51pIHThu6siCiAKLSM6IHd0LXN0YXR1cy5jOjExODkKKyM6IHd0LXN0YXR1cy5jOjExOTIKIG1zZ2lkICJOb3QgY3VycmVudGx5IG9uIGFueSBicmFuY2guIgogbXNnc3RyICJIaeG7h24gdOG6oWkgY2jhurNuZyDhu58gbmjDoW5oIG7DoG8gY+G6oy4iCiAKLSM6IHd0LXN0YXR1cy5jOjEyMDYKKyM6IHd0LXN0YXR1cy5jOjEyMDkKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCIKIG1zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraOG7n2kgxJHhuqd1IgogCi0jOiB3dC1zdGF0dXMuYzoxMjIwCisjOiB3dC1zdGF0dXMuYzoxMjIzCiBtc2dpZCAiVW50cmFja2VkIGZpbGVzIgogbXNnc3RyICJOaOG7r25nIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkiCiAKLSM6IHd0LXN0YXR1cy5jOjEyMjIKKyM6IHd0LXN0YXR1cy5jOjEyMjUKIG1zZ2lkICJJZ25vcmVkIGZpbGVzIgogbXNnc3RyICJOaOG7r25nIHThuq1wIHRpbiBi4buLIGzhu50gxJFpIgogCi0jOiB3dC1zdGF0dXMuYzoxMjI2CisjOiB3dC1zdGF0dXMuYzoxMjI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJdCB0b29rICUuMmYgc2Vjb25kcyB0byBlbnVtZXJhdGUgdW50cmFja2VkIGZpbGVzLiAnc3RhdHVzIC11bm8nXG4iCkBAIC0xNTU4LDMyICsxNjMzLDMyIEBACiAiY8OzIGzhur0gbMOgbSBuw7MgbmhhbmggaMahbiwgbmjGsG5nIGLhuqFuIHBo4bqjaSBj4bqpbiB0aOG6rW4gxJHhu6tuZyBxdcOqbiBtw6xuaCBwaOG6o2lcbiIKICJ04buxIHRow6ptIGPDoWMgdOG6rXAgdGluIG3hu5tpICh4ZW0g4oCcZ2l0IGhlbHAgc3RhdHVz4oCdLi4iCiAKLSM6IHd0LXN0YXR1cy5jOjEyMzIKKyM6IHd0LXN0YXR1cy5jOjEyMzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW50cmFja2VkIGZpbGVzIG5vdCBsaXN0ZWQlcyIKIG1zZ3N0ciAiTmjhu69uZyB04bqtcCB0aW4ga2jDtG5nIGLhu4sgdGhlbyB24bq/dCBraMO0bmcgxJHGsOG7o2MgbGnhu4d0IGvDqiByYSAlcyIKIAotIzogd3Qtc3RhdHVzLmM6MTIzNAorIzogd3Qtc3RhdHVzLmM6MTIzNwogbXNnaWQgIiAodXNlIC11IG9wdGlvbiB0byBzaG93IHVudHJhY2tlZCBmaWxlcykiCiBtc2dzdHIgIiAoZMO5bmcgdMO5eSBjaOG7jW4gLXUgxJHhu4MgaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSkiCiAKLSM6IHd0LXN0YXR1cy5jOjEyNDAKKyM6IHd0LXN0YXR1cy5jOjEyNDMKIG1zZ2lkICJObyBjaGFuZ2VzIgogbXNnc3RyICJLaMO0bmcgY8OzIHRoYXkgxJHhu5VpIG7DoG8iCiAKLSM6IHd0LXN0YXR1cy5jOjEyNDUKKyM6IHd0LXN0YXR1cy5jOjEyNDgKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gY2hhbmdlcyBhZGRlZCB0byBjb21taXQgKHVzZSBcImdpdCBhZGRcIiBhbmQvb3IgXCJnaXQgY29tbWl0IC1hXCIpXG4iCiBtc2dzdHIgIiIKICJraMO0bmcgY8OzIHRoYXkgxJHhu5VpIG7DoG8gxJHGsOG7o2MgdGjDqm0gdsOgbyBjb21taXQgKGTDuW5nIFwiZ2l0IGFkZFwiIHbDoC9ob+G6t2MgXCJnaXQgIgogImNvbW1pdCAtYVwiKVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMjQ4CisjOiB3dC1zdGF0dXMuYzoxMjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0XG4iCiBtc2dzdHIgImtow7RuZyBjw7MgdGhheSDEkeG7lWkgbsOgbyDEkcaw4bujYyB0aMOqbSB2w6BvIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdClcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTI1MQorIzogd3Qtc3RhdHVzLmM6MTI1NAogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibm90aGluZyBhZGRlZCB0byBjb21taXQgYnV0IHVudHJhY2tlZCBmaWxlcyBwcmVzZW50ICh1c2UgXCJnaXQgYWRkXCIgdG8gIgpAQCAtMTU5Miw1OCArMTY2Nyw1OCBAQAogImtow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIHRow6ptIHbDoG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuaMawbmcgY8OzIG5o4buvbmcgdOG6rXAgdGluICIKICJraMO0bmcgxJHGsOG7o2MgdGhlbyBk4bqldSB24bq/dCBoaeG7h24gZGnhu4duIChkw7luZyBcImdpdCBhZGRcIiDEkeG7gyDEkcawYSB2w6BvIHRoZW8gZMO1aSlcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTI1NAorIzogd3Qtc3RhdHVzLmM6MTI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnRcbiIKIG1zZ3N0ciAiIgogImtow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIHRow6ptIHbDoG8gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuaMawbmcgY8OzIG5o4buvbmcgdOG6rXAgdGluICIKICJraMO0bmcgxJHGsOG7o2MgdGhlbyBk4bqldSB24bq/dCBoaeG7h24gZGnhu4duXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEyNTcKKyM6IHd0LXN0YXR1cy5jOjEyNjAKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXQgKGNyZWF0ZS9jb3B5IGZpbGVzIGFuZCB1c2UgXCJnaXQgYWRkXCIgdG8gdHJhY2spXG4iCiBtc2dzdHIgIiIKICIga2jDtG5nIGPDsyBnw6wgxJHhu4MgY29tbWl0ICh04bqhby9zYW8tY2jDqXAgY8OhYyB04bqtcCB0aW4gdsOgIGTDuW5nIFwiZ2l0IGFkZFwiIMSR4buDIHRoZW8gIgogImTDtWkgZOG6pXUgduG6v3QpXG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEyNjAgd3Qtc3RhdHVzLmM6MTI2NQorIzogd3Qtc3RhdHVzLmM6MTI2MyB3dC1zdGF0dXMuYzoxMjY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vdGhpbmcgdG8gY29tbWl0XG4iCiBtc2dzdHIgImtow7RuZyBjw7MgZ8OsIMSR4buDIGNodXnhu4NuIGdpYW8gKGNvbW1pdClcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTI2MworIzogd3Qtc3RhdHVzLmM6MTI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIgogbXNnc3RyICIiCiAia2jDtG5nIGPDsyBnw6wgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAoZMO5bmcgLXUgxJHhu4MgYuG7jyBjw6FjIHThuq1wIHRpbiBj4bqnbiB0aGVvIGThuqV1ICIKICJ24bq/dClcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTI2NworIzogd3Qtc3RhdHVzLmM6MTI3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKIG1zZ3N0ciAia2jDtG5nIGPDsyBnw6wgxJHhu4MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgdGjGsCBt4bulYyBsw6BtIHZp4buHYyBz4bqhY2ggc+G6vVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMzc1CisjOiB3dC1zdGF0dXMuYzoxMzc4CiBtc2dpZCAiSEVBRCAobm8gYnJhbmNoKSIKIG1zZ3N0ciAiSEVBRCAoa2jDtG5nIG5ow6FuaCkiCiAKLSM6IHd0LXN0YXR1cy5jOjEzODEKKyM6IHd0LXN0YXR1cy5jOjEzODQKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIkzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jhu59pIHThuqFvIHRyw6puICIKIAotIzogd3Qtc3RhdHVzLmM6MTM5NgorIzogd3Qtc3RhdHVzLmM6MTM5OQogbXNnaWQgImJlaGluZCAiCiBtc2dzdHIgIsSR4bqxbmcgc2F1ICIKIAotIzogd3Qtc3RhdHVzLmM6MTM5OSB3dC1zdGF0dXMuYzoxNDAyCisjOiB3dC1zdGF0dXMuYzoxNDAyIHd0LXN0YXR1cy5jOjE0MDUKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgInBow61hIHRyxrDhu5tjICIKIAotIzogd3Qtc3RhdHVzLmM6MTQwNAorIzogd3Qtc3RhdHVzLmM6MTQwNwogbXNnaWQgIiwgYmVoaW5kICIKIG1zZ3N0ciAiLCDEkeG6sW5nIHNhdSAiCiAKLSM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzUyCisjOiBjb21wYXQvcHJlY29tcG9zZV91dGY4LmM6NTggYnVpbHRpbi9jbG9uZS5jOjM1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gdW5saW5rICclcyciCiBtc2dzdHIgImLhu48gbGnDqm4ga+G6v3QgKHVubGluaykgJXMga2jDtG5nIHRow6BuaCBjw7RuZyIKQEAgLTE3MzEsNyArMTgwNiw3IEBACiBtc2dpZCAidW5leHBlY3RlZCBkaWZmIHN0YXR1cyAlYyIKIG1zZ3N0ciAidHLhuqFuZyB0aMOhaSBs4buHbmggZGlmZiBraMO0bmcgbmjGsCBtb25nIMSR4bujaSAlYyIKIAotIzogYnVpbHRpbi9hZGQuYzoxNDkgYnVpbHRpbi9jb21taXQuYzoyMzMKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjM4CiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICJD4bqtcCBuaOG6rXQgdOG6rXAgdGluIGfhurdwIGzhu5dpIgogCkBAIC0xNzQ1LDcgKzE4MjAsNyBAQAogbXNnc3RyICIiCiAiQ8OhYyB0aGF5IMSR4buVaSBraMO0bmcgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIHNhdSBraGkgbMOgbSB0xrDGoWkgbeG7m2kgbOG6oWkgYuG6o25nIG3hu6VjIGzhu6VjOiIKIAotIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzMgYnVpbHRpbi9ybS5jOjMzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICJwYXRoc3BlYyDigJwlc+KAnSBraMO0bmcga2jhu5twIHbhu5tpIGLhuqV0IGvhu7MgdOG6rXAgdGluIG7DoG8iCkBAIC0xNzU0LDEzMyArMTgyOSwxMzMgQEAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2FkZC5jOjM0OQorIzogYnVpbHRpbi9hZGQuYzozNTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZy4iCiBtc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIOKAnCVz4oCdIMSR4buDIGdoaS4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjM1NAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIGdoaSByYSBtaeG6v25nIHbDoSIKIAotIzogYnVpbHRpbi9hZGQuYzozNTgKKyM6IGJ1aWx0aW4vYWRkLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBzdGF0ICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBs4bqleSB0cuG6oW5nIHRow6FpIHbhu4Eg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzYwCisjOiBidWlsdGluL2FkZC5jOjM2MQogbXNnaWQgIkVtcHR5IHBhdGNoLiBBYm9ydGVkLiIKIG1zZ3N0ciAiTWnhur9uZyB2w6EgdHLhu5FuZyBy4buXbmcuIMSQw6MgYuG7jyBxdWEuIgogCi0jOiBidWlsdGluL2FkZC5jOjM2NgorIzogYnVpbHRpbi9hZGQuYzozNjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGx5ICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBhcHBseSAow6FwIGThu6VuZyBtaeG6v25nIHbDoSkg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzc2CisjOiBidWlsdGluL2FkZC5jOjM3NwogbXNnaWQgIlRoZSBmb2xsb3dpbmcgcGF0aHMgYXJlIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKIG1zZ3N0ciAiIgogIkPDoWMgxJHGsOG7nW5nIGThuqtuIHRoZW8gc2F1IMSRw6J5IHPhur0gYuG7iyBs4budIMSRaSBi4bufaSBt4buZdCB0cm9uZyBjw6FjIHThuq1wIHRpbiAuZ2l0aWdub3JlICIKICJj4bunYSBi4bqhbjpcbiIKIAotIzogYnVpbHRpbi9hZGQuYzozOTMgYnVpbHRpbi9jbGVhbi5jOjE2MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCi0jOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc2IGJ1aWx0aW4vcHVzaC5jOjQyNSBidWlsdGluL3JlbW90ZS5jOjEyNTMKLSM6IGJ1aWx0aW4vcm0uYzoyMDYKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vY2xlYW4uYzo4NTEgYnVpbHRpbi9mZXRjaC5jOjc4IGJ1aWx0aW4vbXYuYzo2MworIzogYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3MyBidWlsdGluL3B1c2guYzo0NTEgYnVpbHRpbi9yZW1vdGUuYzoxMjUzCisjOiBidWlsdGluL3JtLmM6MjY4CiBtc2dpZCAiZHJ5IHJ1biIKIG1zZ3N0ciAiY2jhuqF5IHRo4butIgogCi0jOiBidWlsdGluL2FkZC5jOjM5NCBidWlsdGluL2FwcGx5LmM6NDQwOSBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE5Ci0jOiBidWlsdGluL2NvbW1pdC5jOjExNTIgYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTUgYnVpbHRpbi9mc2NrLmM6NjEzCi0jOiBidWlsdGluL2xvZy5jOjE1MTggYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCisjOiBidWlsdGluL2FkZC5jOjM5NSBidWlsdGluL2FwcGx5LmM6NDQxMCBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE5CisjOiBidWlsdGluL2NvbW1pdC5jOjEyMDEgYnVpbHRpbi9jb3VudC1vYmplY3RzLmM6OTUgYnVpbHRpbi9mc2NrLmM6NjEzCisjOiBidWlsdGluL2xvZy5jOjE1NzMgYnVpbHRpbi9tdi5jOjYyIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEzCiBtc2dpZCAiYmUgdmVyYm9zZSIKIG1zZ3N0ciAiY2hpIHRp4bq/dCIKIAotIzogYnVpbHRpbi9hZGQuYzozOTYKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk3CiBtc2dpZCAiaW50ZXJhY3RpdmUgcGlja2luZyIKIG1zZ3N0ciAic+G7rWEgYuG6sW5nIGPDoWNoIHTGsMahbmcgdMOhYyIKIAotIzogYnVpbHRpbi9hZGQuYzozOTcgYnVpbHRpbi9jaGVja291dC5jOjEwNjMgYnVpbHRpbi9yZXNldC5jOjI1OAorIzogYnVpbHRpbi9hZGQuYzozOTggYnVpbHRpbi9jaGVja291dC5jOjEwNzMgYnVpbHRpbi9yZXNldC5jOjI2MQogbXNnaWQgInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IgogbXNnc3RyICJjaOG7jW4g4oCcaHVua3PigJ0gbeG7mXQgY8OhY2ggdMawxqFuZyB0w6FjIgogCi0jOiBidWlsdGluL2FkZC5jOjM5OAorIzogYnVpbHRpbi9hZGQuYzozOTkKIG1zZ2lkICJlZGl0IGN1cnJlbnQgZGlmZiBhbmQgYXBwbHkiCiBtc2dzdHIgInPhu61hIGRpZmYgaGnhu4duIG5heSB2w6Agw6FwIGThu6VuZyBuw7MiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk5CisjOiBidWlsdGluL2FkZC5jOjQwMAogbXNnaWQgImFsbG93IGFkZGluZyBvdGhlcndpc2UgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAiY2hvIHBow6lwIHRow6ptIGPDoWMgdOG6rXAgdGluIGLhu4sgYuG7jyBxdWEga2jDoWMiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDAwCisjOiBidWlsdGluL2FkZC5jOjQwMQogbXNnaWQgInVwZGF0ZSB0cmFja2VkIGZpbGVzIgogbXNnc3RyICJj4bqtcCBuaOG6rXQgY8OhYyB04bqtcCB0aW4gxJHGsOG7o2MgdGhlbyB24bq/dCIKIAotIzogYnVpbHRpbi9hZGQuYzo0MDEKKyM6IGJ1aWx0aW4vYWRkLmM6NDAyCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICJjaOG7iSBnaGkgbOG6oWkgc+G7sSB2aeG7h2MgbcOgIMSRxrDhu51uZyBk4bqrbiBz4bq9IMSRxrDhu6NjIHRow6ptIHbDoG8gc2F1IgogCi0jOiBidWlsdGluL2FkZC5jOjQwMgorIzogYnVpbHRpbi9hZGQuYzo0MDMKIG1zZ2lkICJhZGQgY2hhbmdlcyBmcm9tIGFsbCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIiIKICJ0aMOqbSBjw6FjIHRoYXkgxJHhu5VpIHThu6sgdOG6pXQgY+G6oyBjw6FjIHThuq1wIHRpbiBjw7MgY8WpbmcgbmjGsCBraMO0bmcgxJHGsOG7o2MgdGhlbyBkw7VpIGThuqV1ICIKICJ24bq/dCIKIAogIy4gdGFrZXMgbm8gYXJndW1lbnRzCi0jOiBidWlsdGluL2FkZC5jOjQwNQorIzogYnVpbHRpbi9hZGQuYzo0MDYKIG1zZ2lkICJpZ25vcmUgcGF0aHMgcmVtb3ZlZCBpbiB0aGUgd29ya2luZyB0cmVlIChzYW1lIGFzIC0tbm8tYWxsKSIKIG1zZ3N0ciAiIgogImzhu50gxJFpIGPDoWMgxJHGsOG7nW5nIGThuqtuIGLhu4sgZ+G7oSBi4buPIHRyb25nIGPDonkgdGjGsCBt4bulYyBsw6BtIHZp4buHYyAoZ2nhu5FuZyB24bubaSAtLW5vLWFsbCkiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDA3CisjOiBidWlsdGluL2FkZC5jOjQwOAogbXNnaWQgImRvbid0IGFkZCwgb25seSByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAia2jDtG5nIHRow6ptLCBjaOG7iSBsw6BtIHTGsMahaSBt4bubaSBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDA4CisjOiBidWlsdGluL2FkZC5jOjQwOQogbXNnaWQgImp1c3Qgc2tpcCBmaWxlcyB3aGljaCBjYW5ub3QgYmUgYWRkZWQgYmVjYXVzZSBvZiBlcnJvcnMiCiBtc2dzdHIgImNoaWUgYuG7jyBxdWEgbmjhu69uZyB04bqtcCB0aW4gbcOgIG7DsyBraMO0bmcgdGjhu4MgxJHGsOG7o2MgdGjDqm0gdsOgbyBi4bufaSB2w6wgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDA5CisjOiBidWlsdGluL2FkZC5jOjQxMAogbXNnaWQgImNoZWNrIGlmIC0gZXZlbiBtaXNzaW5nIC0gZmlsZXMgYXJlIGlnbm9yZWQgaW4gZHJ5IHJ1biIKIG1zZ3N0ciAiIgogImtp4buDbSB0cmEgeGVtIC0gdGjhuq1tIGNow60gdGhp4bq/dSAtIHThuq1wIHRpbiBi4buLIGLhu48gcXVhIHRyb25nIHF1w6EgdHLDrG5oIGNo4bqheSB0aOG7rSIKIAotIzogYnVpbHRpbi9hZGQuYzo0MzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIHRoZW0uXG4iCiBtc2dzdHIgIlPhu60gZOG7pW5nIHTDuXkgY2jhu41uIC1mIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiB0aMOqbSBjaMO6bmcgdsOgby5cbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MzIKKyM6IGJ1aWx0aW4vYWRkLmM6NDMzCiBtc2dpZCAibm8gZmlsZXMgYWRkZWQiCiBtc2dzdHIgImNoxrBhIGPDsyB04bqtcCB0aW4gbsOgbyDEkcaw4bujYyB0aMOqbSB2w6BvIgogCi0jOiBidWlsdGluL2FkZC5jOjQzOAorIzogYnVpbHRpbi9hZGQuYzo0MzkKIG1zZ2lkICJhZGRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICJ0aMOqbSB04bqtcCB0aW4gZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDc3CisjOiBidWlsdGluL2FkZC5jOjQ3OAogbXNnaWQgIi1BIGFuZCAtdSBhcmUgbXV0dWFsbHkgaW5jb21wYXRpYmxlIgogbXNnc3RyICItQSB2w6AgLXUgeHVuZyBraOG6r2MgbmhhdSIKIAotIzogYnVpbHRpbi9hZGQuYzo0OTUKKyM6IGJ1aWx0aW4vYWRkLmM6NDk2CiBtc2dpZCAiT3B0aW9uIC0taWdub3JlLW1pc3NpbmcgY2FuIG9ubHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIC0tZHJ5LXJ1biIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gLS1pZ25vcmUtbWlzc2luZyBjaOG7iSBjw7MgdGjhu4MgxJHGsOG7o2MgZMO5bmcgY8O5bmcgduG7m2kgLS1kcnktcnVuIgogCi0jOiBidWlsdGluL2FkZC5jOjUyNQorIzogYnVpbHRpbi9hZGQuYzo1MjYKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90aGluZyBzcGVjaWZpZWQsIG5vdGhpbmcgYWRkZWQuXG4iCiBtc2dzdHIgIktow7RuZyBjw7MgZ8OsIMSRxrDhu6NjIGNo4buJIHJhLCBraMO0bmcgY8OzIGfDrCDEkcaw4bujYyB0aMOqbSB2w6BvLlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjUyNgorIzogYnVpbHRpbi9hZGQuYzo1MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWF5YmUgeW91IHdhbnRlZCB0byBzYXkgJ2dpdCBhZGQgLic/XG4iCiBtc2dzdHIgIkPDsyBs4bq9IGLhuqFuIG114buRbiBsw6Ag4oCcZ2l0IGFkZCAu4oCdIHBo4bqjaSBraMO0bmc/XG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NTMyIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6NjYgYnVpbHRpbi9jbGVhbi5jOjIwNAotIzogYnVpbHRpbi9jb21taXQuYzoyOTMgYnVpbHRpbi9tdi5jOjgyIGJ1aWx0aW4vcm0uYzoyMzUKKyM6IGJ1aWx0aW4vYWRkLmM6NTMzIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTYxIGJ1aWx0aW4vY2xlYW4uYzo4OTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6Mjk4IGJ1aWx0aW4vbXYuYzo4MiBidWlsdGluL3JtLmM6Mjk3CiBtc2dpZCAiaW5kZXggZmlsZSBjb3JydXB0IgogbXNnc3RyICJ04bqtcCB0aW4gZ2hpIGLhuqNuZyBt4bulYyBs4bulYyBi4buLIGjhu49uZyIKIAotIzogYnVpbHRpbi9hZGQuYzo2MDQgYnVpbHRpbi9hcHBseS5jOjQ1MDUgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6MzcwCisjOiBidWlsdGluL2FkZC5jOjYwNSBidWlsdGluL2FwcGx5LmM6NDUwNiBidWlsdGluL212LmM6MjI5IGJ1aWx0aW4vcm0uYzo0MzIKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgbmV3IGluZGV4IGZpbGUiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpIgogCkBAIC0yMDY3LDI5OCArMjE0MiwyOTggQEAKIG1zZ2lkICJjYW5ub3QgY2hlY2tvdXQgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBcImNoZWNrb3V0XCIgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTQwIGJ1aWx0aW4vYXBwbHkuYzozMTQ5IGJ1aWx0aW4vYXBwbHkuYzozMTkzCisjOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5NAogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWFkIG9mICVzIGZhaWxlZCIKIG1zZ3N0ciAixJHhu41jICVzIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE3MyBidWlsdGluL2FwcGx5LmM6MzM5NQorIzogYnVpbHRpbi9hcHBseS5jOjMxNzQgYnVpbHRpbi9hcHBseS5jOjMzOTYKICMsIGMtZm9ybWF0CiBtc2dpZCAicGF0aCAlcyBoYXMgYmVlbiByZW5hbWVkL2RlbGV0ZWQiCiBtc2dzdHIgIsSRxrDhu51uZyBk4bqrbiAlcyDEkcOjIGLhu4sgeMOzYS/EkeG7lWkgdMOqbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNTQgYnVpbHRpbi9hcHBseS5jOjM0MDkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjU1IGJ1aWx0aW4vYXBwbHkuYzozNDEwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBleGlzdCBpbiBpbmRleCIKIG1zZ3N0ciAiJXM6IGtow7RuZyB04buTbiB04bqhaSB0cm9uZyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjU4IGJ1aWx0aW4vYXBwbHkuYzozNDAxIGJ1aWx0aW4vYXBwbHkuYzozNDIzCisjOiBidWlsdGluL2FwcGx5LmM6MzI1OSBidWlsdGluL2FwcGx5LmM6MzQwMiBidWlsdGluL2FwcGx5LmM6MzQyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogJXMiCiBtc2dzdHIgIiVzOiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMyNjMgYnVpbHRpbi9hcHBseS5jOjM0MTcKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMjY0IGJ1aWx0aW4vYXBwbHkuYzozNDE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBkb2VzIG5vdCBtYXRjaCBpbmRleCIKIG1zZ3N0ciAiJXM6IGtow7RuZyBraOG7m3AgdHJvbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMzY1CisjOiBidWlsdGluL2FwcGx5LmM6MzM2NgogbXNnaWQgInJlbW92YWwgcGF0Y2ggbGVhdmVzIGZpbGUgY29udGVudHMiCiBtc2dzdHIgImxv4bqhaSBi4buPIG1p4bq/bmcgdsOhIMSR4buDIGzhuqFpIG7hu5lpIGR1bmcgdOG6rXAgdGluIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQzNAorIzogYnVpbHRpbi9hcHBseS5jOjM0MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdyb25nIHR5cGUiCiBtc2dzdHIgIiVzOiBzYWkga2nhu4N1IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQzNgorIzogYnVpbHRpbi9hcHBseS5jOjM0MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaGFzIHR5cGUgJW8sIGV4cGVjdGVkICVvIgogbXNnc3RyICIlcyBjw7Mga2nhu4N1ICVvLCBtb25nIGNo4budICVvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzUzNworIzogYnVpbHRpbi9hcHBseS5jOjM1MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIGluZGV4IgogbXNnc3RyICIlczogxJHDoyBjw7MgdOG7qyB0csaw4bubYyB0cm9uZyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTQwCisjOiBidWlsdGluL2FwcGx5LmM6MzU0MQogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gd29ya2luZyBkaXJlY3RvcnkiCiBtc2dzdHIgIiVzOiDEkcOjIHPhurVuIGPDsyB0cm9uZyB0aMawIG3hu6VjIMSRYW5nIGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU2MAorIzogYnVpbHRpbi9hcHBseS5jOjM1NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAibmV3IG1vZGUgKCVvKSBvZiAlcyBkb2VzIG5vdCBtYXRjaCBvbGQgbW9kZSAoJW8pIgogbXNnc3RyICJjaOG6vyDEkeG7mSBt4bubaSAoJW8pIGPhu6dhICVzIGtow7RuZyBraOG7m3AgduG7m2kgY2jhur8gxJHhu5kgY8WpICglbykiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTY1CisjOiBidWlsdGluL2FwcGx5LmM6MzU2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgbW9kZSAoJW8pIG9mICVzIGRvZXMgbm90IG1hdGNoIG9sZCBtb2RlICglbykgb2YgJXMiCiBtc2dzdHIgImNo4bq/IMSR4buZIG3hu5tpICglbykgY+G7p2EgJXMga2jDtG5nIGto4bubcCB24bubaSBjaOG6vyDEkeG7mSBjxakgKCVvKSBj4bunYSAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NzMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAiJXM6IG1p4bq/bmcgdsOhIGtow7RuZyDEkcaw4bujYyDDoXAgZOG7pW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU4NgorIzogYnVpbHRpbi9hcHBseS5jOjM1ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2hlY2tpbmcgcGF0Y2ggJXMuLi4iCiBtc2dzdHIgIsSQYW5nIGtp4buDbSB0cmEgbWnhur9uZyB2w6EgJXMuLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNjc5IGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTYgYnVpbHRpbi9yZXNldC5jOjEyNAorIzogYnVpbHRpbi9hcHBseS5jOjM2ODAgYnVpbHRpbi9jaGVja291dC5jOjIxNiBidWlsdGluL3Jlc2V0LmM6MTI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1ha2VfY2FjaGVfZW50cnkgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIm1ha2VfY2FjaGVfZW50cnkgZ+G6t3AgbOG7l2kgxJHhu5FpIHbhu5tpIMSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4MjIKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODIzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZW1vdmUgJXMgZnJvbSBpbmRleCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGfhu6EgYuG7jyAlcyB04burIG3hu6VjIGzhu6VjIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg1MAorIzogYnVpbHRpbi9hcHBseS5jOjM4NTEKICMsIGMtZm9ybWF0Ci1tc2dpZCAiY29ycnVwdCBwYXRjaCBmb3Igc3VicHJvamVjdCAlcyIKLW1zZ3N0ciAibWnhur9uZyB2w6Egc2FpIGjhu49uZyBjaG8gZOG7sSDDoW4gY29uIChzdWJwcm9qZWN0KSAlcyIKK21zZ2lkICJjb3JydXB0IHBhdGNoIGZvciBzdWJtb2R1bGUgJXMiCittc2dzdHIgIm1p4bq/bmcgdsOhIHNhaSBo4buPbmcgY2hvIG3DtC3EkXVuLWNvbiAoc3VicHJvamVjdCkgJXMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODU0CisjOiBidWlsdGluL2FwcGx5LmM6Mzg1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhdCBuZXdseSBjcmVhdGVkIGZpbGUgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGzhuqV5IHRy4bqhbmcgdGjDoWkgduG7gSB04bqtcCB0aW4gJXMgbeG7m2kgaMahbiDEkcOjIMSRxrDhu6NjIHThuqFvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg1OQorIzogYnVpbHRpbi9hcHBseS5jOjM4NjAKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSBiYWNraW5nIHN0b3JlIGZvciBuZXdseSBjcmVhdGVkIGZpbGUgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyDigJxiYWNraW5nIHN0b3Jl4oCdIGNobyB04bqtcCB0aW4gxJHGsOG7o2MgdOG6oW8gbeG7m2kgaMahbiAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NjIgYnVpbHRpbi9hcHBseS5jOjM5NzAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYzIGJ1aWx0aW4vYXBwbHkuYzozOTcxCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBhZGQgY2FjaGUgZW50cnkgZm9yICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdGjDqm0gbeG7pWMgbmjhu5sgdOG6oW0gY2hvICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg5NQorIzogYnVpbHRpbi9hcHBseS5jOjM4OTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2xvc2luZyBmaWxlICclcyciCiBtc2dzdHIgIsSRYW5nIMSRw7NuZyB04bqtcCB0aW4g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTQ0CisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdsOgbyB04bqtcCB0aW4g4oCcJXPigJ0gY2jhur8gxJHhu5kgKG1vZGUpICVvIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDAzMQorIzogYnVpbHRpbi9hcHBseS5jOjQwMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXBwbGllZCBwYXRjaCAlcyBjbGVhbmx5LiIKIG1zZ3N0ciAixJDDoyDDoXAgZOG7pW5nIG1p4bq/bmcgdsOgICVzIG3hu5l0IGPDoWNoIHPhuqFjaCBz4bq9LiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQwCiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgImzhu5dpIG7hu5lpIGLhu5kiCiAKICMuIFNheSB0aGlzIGV2ZW4gd2l0aG91dCAtLXZlcmJvc2UKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQyCisjOiBidWlsdGluL2FwcGx5LmM6NDA0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJBcHBseWluZyBwYXRjaCAlJXMgd2l0aCAlZCByZWplY3QuLi4iCiBtc2dpZF9wbHVyYWwgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdHMuLi4iCiBtc2dzdHJbMF0gIsSQYW5nIMOhcCBk4bulbmcgbWnhur9uZyB2w6EgJSVzIHbhu5tpICVkIGzhuqduIHThu6sgY2jhu5FpLi4uIgogbXNnc3RyWzFdICLEkGFuZyDDoXAgZOG7pW5nIG1p4bq/bmcgdsOhICUlcyB24bubaSAlZCBs4bqnbiB04burIGNo4buRaS4uLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNTIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUzCiAjLCBjLWZvcm1hdAogbXNnaWQgInRydW5jYXRpbmcgLnJlaiBmaWxlbmFtZSB0byAlLipzLnJlaiIKIG1zZ3N0ciAixJFhbmcgY+G6r3QgY+G7pXQgdMOqbiB04bqtcCB0aW4gLnJlaiB0aMOgbmggJS4qcy5yZWoiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDczCisjOiBidWlsdGluL2FwcGx5LmM6NDA3NAogIywgYy1mb3JtYXQKIG1zZ2lkICJIdW5rICMlZCBhcHBsaWVkIGNsZWFubHkuIgogbXNnc3RyICJLaOG7kWkgbmjhu5sgIyVkIMSRxrDhu6NjIMOhcCBk4bulbmcgZ+G7jW4gZ8OgbmcuIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA3NgorIzogYnVpbHRpbi9hcHBseS5jOjQwNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVqZWN0ZWQgaHVuayAjJWQuIgogbXNnc3RyICJodW5rICMlZCBi4buLIHThu6sgY2jhu5FpLiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQyMjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI3CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICJraMO0bmcgdGjhu6thIG5o4bqtbiDEkeG6p3UgdsOgbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQyMzcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjM4CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgaW5kZXggZmlsZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyB04bqtcCB0aW4gbMawdSBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU2IGJ1aWx0aW4vYXBwbHkuYzo0MzU5IGJ1aWx0aW4vY2xvbmUuYzo5MgorIzogYnVpbHRpbi9hcHBseS5jOjQzNTcgYnVpbHRpbi9hcHBseS5jOjQzNjAgYnVpbHRpbi9jbG9uZS5jOjkxCiAjOiBidWlsdGluL2ZldGNoLmM6NjMKIG1zZ2lkICJwYXRoIgogbXNnc3RyICLEkcaw4budbmctZOG6q24iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU3CisjOiBidWlsdGluL2FwcGx5LmM6NDM1OAogbXNnaWQgImRvbid0IGFwcGx5IGNoYW5nZXMgbWF0Y2hpbmcgdGhlIGdpdmVuIHBhdGgiCiBtc2dzdHIgImtow7RuZyDDoXAgZOG7pW5nIGPDoWMgdGhheSDEkeG7lWkga2jhu5twIHbhu5tpIMSRxrDhu51uZyBk4bqrbiDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYxCiBtc2dpZCAiYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKIG1zZ3N0ciAiw6FwIGThu6VuZyBjw6FjIHRoYXkgxJHhu5VpIGto4bubcCB24bubaSDEkcaw4budbmcgZOG6q24gxJHDoyBjaG8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCisjOiBidWlsdGluL2FwcGx5LmM6NDM2MwogbXNnaWQgIm51bSIKIG1zZ3N0ciAic+G7kSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY0CiBtc2dpZCAicmVtb3ZlIDxudW0+IGxlYWRpbmcgc2xhc2hlcyBmcm9tIHRyYWRpdGlvbmFsIGRpZmYgcGF0aHMiCiBtc2dzdHIgImfhu6EgYuG7jyA8c+G7kT4gcGjhuqduIGThuqtuIMSR4bqndSAoc2xhc2hlKSB04burIMSRxrDhu51uZyBk4bqrbiBkaWZmIGPhu5UgxJFp4buDbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY3CiBtc2dpZCAiaWdub3JlIGFkZGl0aW9ucyBtYWRlIGJ5IHRoZSBwYXRjaCIKIG1zZ3N0ciAibOG7nSDEkWkgcGjhuqduIHBo4bulIHRow6ptIHThuqFvIHJhIGLhu59pIG1p4bq/bmcgdsOhIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM2OAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjkKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgb3V0cHV0IGRpZmZzdGF0IGZvciB0aGUgaW5wdXQiCiBtc2dzdHIgIiIKICJ0aGF5IHbDrCDDoXAgZOG7pW5nIG3hu5l0IG1p4bq/bmcgdsOhLCBr4bq/dCB4deG6pXQga+G6v3QgcXXhuqMgdOG7qyBs4buHbmggZGlmZnN0YXQgY2hvIMSR4bqndSByYSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNzIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzczCiBtc2dpZCAic2hvdyBudW1iZXIgb2YgYWRkZWQgYW5kIGRlbGV0ZWQgbGluZXMgaW4gZGVjaW1hbCBub3RhdGlvbiIKIG1zZ3N0ciAiIgogImhp4buDbiB0aOG7iyBz4buRIGzGsOG7o25nIGPDoWMgZMOybmcgxJHGsOG7o2MgdGjDqm0gdsOgbyB2w6AgeMOzYSDEkWkgdGhlbyBrw70gaGnhu4d1IHRo4bqtcCBwaMOibiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNzQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc1CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAidGhheSB2w6wgw6FwIGThu6VuZyBt4buZdCBtaeG6v25nIHbDoSwga+G6v3QgeHXhuqV0IGvhur90IHF14bqjIGNobyDEkeG6p3UgdsOgbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNzYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc3CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIHNlZSBpZiB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSIKIG1zZ3N0ciAidGhheSB2w6wgw6FwIGThu6VuZyBtaeG6v25nIHbDoSwgaMOjeSB4ZW0geGVtIG1p4bq/bmcgdsOhIGPDsyB0aMOtY2ggaOG7o3Aga2jDtG5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM3OAorIzogYnVpbHRpbi9hcHBseS5jOjQzNzkKIG1zZ2lkICJtYWtlIHN1cmUgdGhlIHBhdGNoIGlzIGFwcGxpY2FibGUgdG8gdGhlIGN1cnJlbnQgaW5kZXgiCiBtc2dzdHIgImjDo3kgY2jhuq9jIGNo4bqvbiBsw6AgbWnhur9uZyB2w6EgdGjDrWNoIGjhu6NwIHbhu5tpIGLhuqNuZyBt4bulYyBs4bulYyBoaeG7h24gaMOgbmgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzgwCisjOiBidWlsdGluL2FwcGx5LmM6NDM4MQogbXNnaWQgImFwcGx5IGEgcGF0Y2ggd2l0aG91dCB0b3VjaGluZyB0aGUgd29ya2luZyB0cmVlIgogbXNnc3RyICLDoXAgZOG7pW5nIG3hu5l0IG1p4bq/bmcgdsOhIG3DoCBraMO0bmcgxJHhu5luZyBjaOG6oW0gxJHhur9uIGPDonkgbMOgbSB2aeG7h2MiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzgyCisjOiBidWlsdGluL2FwcGx5LmM6NDM4MwogbXNnaWQgImFsc28gYXBwbHkgdGhlIHBhdGNoICh1c2Ugd2l0aCAtLXN0YXQvLS1zdW1tYXJ5Ly0tY2hlY2spIgogbXNnc3RyICIiCiAixJHhu5NuZyB0aOG7nWkgw6FwIGThu6VuZyBtaeG6v25nIHbDoSAoZMO5bmcgduG7m2kgdMO5eSBjaOG7jW4gLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzODQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg1CiBtc2dpZCAiYXR0ZW1wdCB0aHJlZS13YXkgbWVyZ2UgaWYgYSBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAidGjhu60gaMOyYSB0cuG7mW4ga2nhu4N1IHRocmVlLXdheSBu4bq/dSB2aeG7h2MgdsOhIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIMSRxrDhu6NjIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4NgorIzogYnVpbHRpbi9hcHBseS5jOjQzODcKIG1zZ2lkICJidWlsZCBhIHRlbXBvcmFyeSBpbmRleCBiYXNlZCBvbiBlbWJlZGRlZCBpbmRleCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiIgogInjDonkgZOG7sW5nIGLhuqNuZyBt4bulYyBs4bulYyB04bqhbSB0aOG7nWkgdHLDqm4gY8ahIHPhu58gdGjDtG5nIHRpbiBi4bqjbmcgbeG7pWMgbOG7pWMgxJHGsOG7o2MgbmjDum5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4OCBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg5IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxOTcgYnVpbHRpbi9scy1maWxlcy5jOjQ2MgogbXNnaWQgInBhdGhzIGFyZSBzZXBhcmF0ZWQgd2l0aCBOVUwgY2hhcmFjdGVyIgogbXNnc3RyICJjw6FjIMSRxrDhu51uZyBk4bqrbiBi4buLIG5nxINuIGPDoWNoIGLhu59pIGvDvSB04buxIE5VTEwiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkxCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MgogbXNnaWQgImVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2YgY29udGV4dCBtYXRjaCIKIG1zZ3N0ciAixJHhuqNtIGLhuqNvIHLhurFuZyBjw7Mgw610IG5o4bqldCA8bj4gZMOybmcgbuG7mWkgZHVuZyBraOG7m3AiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAiaMOgbmggxJHhu5luZyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzOTMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzk0CiBtc2dpZCAiZGV0ZWN0IG5ldyBvciBtb2RpZmllZCBsaW5lcyB0aGF0IGhhdmUgd2hpdGVzcGFjZSBlcnJvcnMiCiBtc2dzdHIgInTDrG0gdGjhuqV5IG3hu5l0IGTDsm5nIG3hu5tpIGhv4bq3YyBi4buLIHPhu61hIMSR4buVaSBtw6AgbsOzIGPDsyBs4buXaSBkbyBraG/huqNuZyB0cuG6r25nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQorIzogYnVpbHRpbi9hcHBseS5jOjQzOTcgYnVpbHRpbi9hcHBseS5jOjQ0MDAKIG1zZ2lkICJpZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIHdoZW4gZmluZGluZyBjb250ZXh0IgogbXNnc3RyICJs4budIMSRaSBz4buxIHRoYXkgxJHhu5VpIGRvIGtob+G6o25nIHRy4bqvbmcga2hpIHF1w6l0IG7hu5lpIGR1bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDAyCisjOiBidWlsdGluL2FwcGx5LmM6NDQwMwogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICLDoXAgZOG7pW5nIG1p4bq/bmcgdsOhIHRoZW8gY2hp4buBdSBuZ8aw4bujYyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MDQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA1CiBtc2dpZCAiZG9uJ3QgZXhwZWN0IGF0IGxlYXN0IG9uZSBsaW5lIG9mIGNvbnRleHQiCiBtc2dzdHIgIsSR4burbmcgaHkgduG7jW5nIGPDsyDDrXQgbmjhuqV0IG3hu5l0IGTDsm5nIG7hu5lpIGR1bmciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA2CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNwogbXNnaWQgImxlYXZlIHRoZSByZWplY3RlZCBodW5rcyBpbiBjb3JyZXNwb25kaW5nICoucmVqIGZpbGVzIgogbXNnc3RyICLEkeG7gyBs4bqhaSBraOG7kWkgZOG7ryBsaeG7h3UgYuG7iyB04burIGNo4buRaSB0cm9uZyBjw6FjIHThuq1wIHRpbiAqLnJlaiB0xrDGoW5nIOG7qW5nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQwOAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDkKIG1zZ2lkICJhbGxvdyBvdmVybGFwcGluZyBodW5rcyIKIG1zZ3N0ciAiY2hvIHBow6lwIGNo4buTbmcga2jhu5FpIG5o4bubIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxMQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTIKIG1zZ2lkICJ0b2xlcmF0ZSBpbmNvcnJlY3RseSBkZXRlY3RlZCBtaXNzaW5nIG5ldy1saW5lIGF0IHRoZSBlbmQgb2YgZmlsZSIKIG1zZ3N0ciAiIgogIsSRw6MgZMOyIHTDrG0gdGjhuqV5IGR1bmcgc2FpIGtow7RuZyBjaMOtbmggeMOhYyB0aGnhur91IGTDsm5nIG3hu5tpIHThuqFpIGN14buRaSB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE0CisjOiBidWlsdGluL2FwcGx5LmM6NDQxNQogbXNnaWQgImRvIG5vdCB0cnVzdCB0aGUgbGluZSBjb3VudHMgaW4gdGhlIGh1bmsgaGVhZGVycyIKIG1zZ3N0ciAia2jDtG5nIHRpbiBz4buRIGzGsOG7o25nIGTDsm5nIHRyb25nIHBo4bqnbiDEkeG6p3Uga2jhu5FpIGThu68gbGnhu4d1IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxNgorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTcKIG1zZ2lkICJyb290IgogbXNnc3RyICJyb290IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxNworIzogYnVpbHRpbi9hcHBseS5jOjQ0MTgKIG1zZ2lkICJwcmVwZW5kIDxyb290PiB0byBhbGwgZmlsZW5hbWVzIgogbXNnc3RyICJ0cmVvIHRow6ptIDxyb290PiB2w6BvIHThuqV0IGPhuqMgY8OhYyB0w6puIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQwCiBtc2dpZCAiLS0zd2F5IG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLTN3YXkg4bufIG5nb8OgaSBt4buZdCBraG8gY2jhu6lhIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQ0NworIzogYnVpbHRpbi9hcHBseS5jOjQ0NDgKIG1zZ2lkICItLWluZGV4IG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLWluZGV4IOG7nyBuZ2/DoGkgbeG7mXQga2hvIGNo4bupYSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0NTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDUxCiBtc2dpZCAiLS1jYWNoZWQgb3V0c2lkZSBhIHJlcG9zaXRvcnkiCiBtc2dzdHIgIi0tY2FjaGVkIOG7nyBuZ2/DoGkgbeG7mXQga2hvIGNo4bupYSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0NjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbid0IG9wZW4gcGF0Y2ggJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gbWnhur9uZyB2w6Eg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDgwCisjOiBidWlsdGluL2FwcGx5LmM6NDQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICJzcXVlbGNoZWQgJWQgd2hpdGVzcGFjZSBlcnJvciIKIG1zZ2lkX3BsdXJhbCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3JzIgogbXNnc3RyWzBdICLEkcOjIGNo4bqlbSBk4bupdCAlZCBs4buXaSBraG/huqNuZyB0cuG6r25nIgogbXNnc3RyWzFdICLEkcOjIGNo4bqlbSBk4bupdCAlZCBs4buXaSBraG/huqNuZyB0cuG6r25nIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQ4NiBidWlsdGluL2FwcGx5LmM6NDQ5NgorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODcgYnVpbHRpbi9hcHBseS5jOjQ0OTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJWQgbGluZSBhZGRzIHdoaXRlc3BhY2UgZXJyb3JzLiIKIG1zZ2lkX3BsdXJhbCAiJWQgbGluZXMgYWRkIHdoaXRlc3BhY2UgZXJyb3JzLiIKQEAgLTI0MTQsMTA1ICsyNDg5LDEwNSBAQAogImPhuq1wIG5o4bqtdCBCSVNFQ1RfSEVBRCB0aGF5IHbDrCBs4bqleSByYSAoY2hlY2tpbmcgb3V0KSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICIKICJoaeG7h24gaMOgbmgiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyNQorIzogYnVpbHRpbi9ibGFtZS5jOjI2CiBtc2dpZCAiZ2l0IGJsYW1lIFtvcHRpb25zXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gZmlsZSIKIG1zZ3N0ciAiZ2l0IGJsYW1lIFtjw6FjLXTDuXktY2jhu41uXSBbcmV2LW9wdHNdIFtyZXZdIFstLV0gdOG6rXAtdGluIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MzAKKyM6IGJ1aWx0aW4vYmxhbWUuYzozMQogbXNnaWQgIltyZXYtb3B0c10gYXJlIGRvY3VtZW50ZWQgaW4gZ2l0LXJldi1saXN0KDEpIgogbXNnc3RyICJbcmV2LW9wdHNdIMSRxrDhu6NjIG3DtCB04bqjIHRyb25nIGdpdC1yZXYtbGlzdCgxKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNTUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjc2CiBtc2dpZCAiU2hvdyBibGFtZSBlbnRyaWVzIGFzIHdlIGZpbmQgdGhlbSwgaW5jcmVtZW50YWxseSIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIGPDoWMgbeG7pWMg4oCcYmxhbWXigJ0gbmjGsCBsw6AgY2jDum5nIHRhIHRo4bqleSBjaMO6bmcsIHTEg25nIGThuqduIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM1NgorIzogYnVpbHRpbi9ibGFtZS5jOjIyNzcKIG1zZ2lkICJTaG93IGJsYW5rIFNIQS0xIGZvciBib3VuZGFyeSBjb21taXRzIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICIiCiAiSGnhu4NuIHRo4buLIFNIQS0xIHRy4bqvbmcgY2hvIG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyBiacOqbiBnaeG7m2kgKE3hurdjIMSR4buLbmg6IG9mZikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU3CisjOiBidWlsdGluL2JsYW1lLmM6MjI3OAogbXNnaWQgIkRvIG5vdCB0cmVhdCByb290IGNvbW1pdHMgYXMgYm91bmRhcmllcyAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiS2jDtG5nIGNvaSBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gZ+G7kWMgbMOgIGdp4bubaSBo4bqhbiAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNTgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjc5CiBtc2dpZCAiU2hvdyB3b3JrIGNvc3Qgc3RhdGlzdGljcyIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIHRo4buRbmcga8OqIGPDtG5nIHPhu6ljIGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM1OQorIzogYnVpbHRpbi9ibGFtZS5jOjIyODAKIG1zZ2lkICJTaG93IG91dHB1dCBzY29yZSBmb3IgYmxhbWUgZW50cmllcyIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIGvhur90IHh14bqldCDEkWnhu4NtIHPhu5EgY8OzIGPDoWMgbeG7pWMgdGluIOKAnGJsYW1l4oCdIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2MAorIzogYnVpbHRpbi9ibGFtZS5jOjIyODEKIG1zZ2lkICJTaG93IG9yaWdpbmFsIGZpbGVuYW1lIChEZWZhdWx0OiBhdXRvKSIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIGfhu5FjIChN4bq3YyDEkeG7i25oOiBhdXRvKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjgyCiBtc2dpZCAiU2hvdyBvcmlnaW5hbCBsaW5lbnVtYmVyIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJIaeG7g24gdGjhu4sgc+G7kSBkw7JuZyBn4buRYyAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjgzCiBtc2dpZCAiU2hvdyBpbiBhIGZvcm1hdCBkZXNpZ25lZCBmb3IgbWFjaGluZSBjb25zdW1wdGlvbiIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIOG7nyDEkeG7i25oIGThuqFuZyDEkcOjIHRoaeG6v3Qga+G6vyBjaG8gc+G7sSB0acOqdSBkw7luZyBi4bqxbmcgbcOheSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjMKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg0CiBtc2dpZCAiU2hvdyBwb3JjZWxhaW4gZm9ybWF0IHdpdGggcGVyLWxpbmUgY29tbWl0IGluZm9ybWF0aW9uIgogbXNnc3RyICJIaeG7g24gdGjhu4sgxJHhu4tuaCBk4bqhbmcg4oCccG9yY2VsYWlu4oCdIHbhu5tpIHRow7RuZyB0aW4gY2h1eeG7g24gZ2lhbyBt4buXaSBkw7JuZyIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg1CiBtc2dpZCAiVXNlIHRoZSBzYW1lIG91dHB1dCBtb2RlIGFzIGdpdC1hbm5vdGF0ZSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiRMO5bmcgY8O5bmcgY2jhur8gxJHhu5kgeHXhuqV0IHJhIHbDs2lnaXQtYW5ub3RhdGUgKE3hurdjIMSR4buLbmg6IG9mZikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY1CisjOiBidWlsdGluL2JsYW1lLmM6MjI4NgogbXNnaWQgIlNob3cgcmF3IHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIGThuqV1IHbhur90IHRo4budaSBnaWFuIGThuqFuZyB0aMO0IChN4bq3YyDEkeG7i25oOiBvZmYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2NgorIzogYnVpbHRpbi9ibGFtZS5jOjIyODcKIG1zZ2lkICJTaG93IGxvbmcgY29tbWl0IFNIQTEgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIkhp4buDbiB0aOG7iyBTSEExIGPhu6dhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgZOG6oW5nIGTDoGkgKE3hurdjIMSR4buLbmg6IG9mZikiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY3CisjOiBidWlsdGluL2JsYW1lLmM6MjI4OAogbXNnaWQgIlN1cHByZXNzIGF1dGhvciBuYW1lIGFuZCB0aW1lc3RhbXAgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIktow7RuZyBoaeG7g24gdGjhu4sgdMOqbiB0w6FjIGdp4bqjIHbDoCBk4bqldSB24bq/dCB0aOG7nWkgZ2lhbiAoTeG6t2MgxJHhu4tuaDogb2ZmKSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjgKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg5CiBtc2dpZCAiU2hvdyBhdXRob3IgZW1haWwgaW5zdGVhZCBvZiBuYW1lIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICJIaeG7g24gdGjhu4sgdGjGsCDEkWnhu4duIHThu60gY+G7p2EgdMOhYyBnaeG6oyB0aGF5IHbDrCB0w6puIChN4bq3YyDEkeG7i25oOiBvZmYpIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2OQorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTAKIG1zZ2lkICJJZ25vcmUgd2hpdGVzcGFjZSBkaWZmZXJlbmNlcyIKIG1zZ3N0ciAiQuG7jyBxdWEgY8OhYyBraMOhYyBiaeG7h3QgZG8ga2hv4bqjbmcgdHLhuq9uZyBnw6J5IHJhIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3MAorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTEKIG1zZ2lkICJTcGVuZCBleHRyYSBjeWNsZXMgdG8gZmluZCBiZXR0ZXIgbWF0Y2giCiBtc2dzdHIgIlRpw6p1IHRo4bulIHRow6ptIG7Eg25nIHTDoGkgbmd1ecOqbiBtw6F5IG3Ds2MgxJHhu4MgdMOsbSBraeG6v20gdOG7kXQgaMahbiBu4buvYSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzEKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkyCiBtc2dpZCAiVXNlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiBpbnN0ZWFkIG9mIGNhbGxpbmcgZ2l0LXJldi1saXN0IgogbXNnc3RyICIiCiAiU+G7rSBk4bulbmcgxJFp4buDbSB4w6l0IGR1eeG7h3QgKHJldmlzaW9uKSB04burIDx04bqtcCB0aW4+IHRoYXkgdsOsIGfhu41pIOKAnGdpdC1yZXYtbGlzdOKAnSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkzCiBtc2dpZCAiVXNlIDxmaWxlPidzIGNvbnRlbnRzIGFzIHRoZSBmaW5hbCBpbWFnZSIKIG1zZ3N0ciAiU+G7rSBk4bulbmcgbuG7mWkgZHVuZyBj4bunYSA8dOG6rXAgdGluPiBuaMawIGzDoCDhuqNuaCBjdeG7kWkgY8O5bmciCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczIGJ1aWx0aW4vYmxhbWUuYzoyMzc0CisjOiBidWlsdGluL2JsYW1lLmM6MjI5NCBidWlsdGluL2JsYW1lLmM6MjI5NQogbXNnaWQgInNjb3JlIgogbXNnc3RyICLEkWnhu4NtIHPhu5EiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzczCisjOiBidWlsdGluL2JsYW1lLmM6MjI5NAogbXNnaWQgIkZpbmQgbGluZSBjb3BpZXMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCiBtc2dzdHIgIlTDrG0gY8OhYyBi4bqjbiBzYW8gY2jDqXAgZMOybmcgdHJvbmcgdsOgIG5nYW5nIHF1YSB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc0CisjOiBidWlsdGluL2JsYW1lLmM6MjI5NQogbXNnaWQgIkZpbmQgbGluZSBtb3ZlbWVudHMgd2l0aGluIGFuZCBhY3Jvc3MgZmlsZXMiCiBtc2dzdHIgIlTDrG0gY8OhYyBkaSBjaHV54buDbiBkw7JuZyB0cm9uZyB2w6AgbmdhbmcgcXVhIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjk2CiBtc2dpZCAibixtIgogbXNnc3RyICJuLG0iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CisjOiBidWlsdGluL2JsYW1lLmM6MjI5NgogbXNnaWQgIlByb2Nlc3Mgb25seSBsaW5lIHJhbmdlIG4sbSwgY291bnRpbmcgZnJvbSAxIgogbXNnc3RyICJY4butIGzDvSBjaOG7iSBkw7JuZyB2w7luZyBuLG0sIHTDrW5oIHThu6sgMSIKIApAQCAtMjc0NCw4ICsyODE5LDggQEAKIG1zZ3N0ciAidGhhbyB0w6FjIHRyw6puIG5ow6FuaCDigJxyZW1vdGUtdHJhY2tpbmfigJ0iCiAKICM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCi0jOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5Ci0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4CisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjE0MTQgYnVpbHRpbi9jb21taXQuYzoxNDE1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTYgYnVpbHRpbi9jb21taXQuYzoxNDE3IGJ1aWx0aW4vdGFnLmM6NDY4CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICJjb21taXQiCiAKQEAgLTI4MDksNyArMjg4NCw3IEBACiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kgSEVBRCBuaMawIGzDoCBt4buZdCB0aGFtIGNoaeG6v3UgKHJlZikgaOG7o3AgbOG7hy4iCiAKLSM6IGJ1aWx0aW4vYnJhbmNoLmM6ODYwIGJ1aWx0aW4vY2xvbmUuYzo2MTkKKyM6IGJ1aWx0aW4vYnJhbmNoLmM6ODYwIGJ1aWx0aW4vY2xvbmUuYzo2MzAKIG1zZ2lkICJIRUFEIG5vdCBmb3VuZCBiZWxvdyByZWZzL2hlYWRzISIKIG1zZ3N0ciAia2jDtG5nIHTDrG0gdGjhuqV5IEhFQUQg4bufIGTGsOG7m2kgcmVmcy9oZWFkcyEiCiAKQEAgLTI5MzMsNDQgKzMwMDgsNDQgQEAKIG1zZ2lkICJOZWVkIGEgcmVwb3NpdG9yeSB0byB1bmJ1bmRsZS4iCiBtc2dzdHIgIkPhuqduIG3hu5l0IGtobyBjaOG7qWEgxJHhu4MgbcOgIGJ1bmcgbeG7mXQgYnVuZGxlLiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjMwMwogbXNnaWQgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cGU+fC0tdGV4dGNvbnYpIDxvYmplY3Q+IgogbXNnc3RyICJnaXQgY2F0LWZpbGUgKC10fC1zfC1lfC1wfDxraeG7g3U+fC0tdGV4dGNvbnYpIDzEkeG7kWkgdMaw4bujbmc+IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MTc3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzA0CiBtc2dpZCAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGxpc3Rfb2Zfb2JqZWN0cz4iCiBtc2dzdHIgImdpdCBjYXQtZmlsZSAoLS1iYXRjaHwtLWJhdGNoLWNoZWNrKSA8IDxkYW5oLXPDoWNoLcSR4buRaS10xrDhu6NuZz4iCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoxOTUKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNDEKIG1zZ2lkICI8dHlwZT4gY2FuIGJlIG9uZSBvZjogYmxvYiwgdHJlZSwgY29tbWl0LCB0YWciCiBtc2dzdHIgIjxraeG7g3U+IGzDoCBt4buZdCB0cm9uZyBz4buROiBibG9iLCB0cmVlLCBjb21taXQsIHRhZyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0MgogbXNnaWQgInNob3cgb2JqZWN0IHR5cGUiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBraeG7g3UgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MTk3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzQzCiBtc2dpZCAic2hvdyBvYmplY3Qgc2l6ZSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGvDrWNoIHRoxrDhu5tjIMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5OQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0NQogbXNnaWQgImV4aXQgd2l0aCB6ZXJvIHdoZW4gdGhlcmUncyBubyBlcnJvciIKIG1zZ3N0ciAidGhvw6F0IHbhu5tpIDAga2hpIGtow7RuZyBjw7MgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDAKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNDYKIG1zZ2lkICJwcmV0dHktcHJpbnQgb2JqZWN0J3MgY29udGVudCIKIG1zZ3N0ciAiaW4gbuG7mWkgZHVuZyDEkeG7kWkgdMaw4bujbmcgZOG6oW5nIGThu4UgxJHhu41jIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjAyCisjOiBidWlsdGluL2NhdC1maWxlLmM6MzQ4CiBtc2dpZCAiZm9yIGJsb2Igb2JqZWN0cywgcnVuIHRleHRjb252IG9uIG9iamVjdCdzIGNvbnRlbnQiCiBtc2dzdHIgInbhu5tpIMSR4buRaSB0xrDhu6NuZyBibG9iLCBjaOG6oXkgbOG7h25oIHRleHRjb252IHRyw6puIG7hu5lpIGR1bmcgY+G7p2EgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjA0CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzUwCiBtc2dpZCAic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICIiCiAiaGnhu4NuIHRo4buLIHRow7RuZyB0aW4gdsOgIG7hu5lpIGR1bmcgY+G7p2EgY8OhYyDEkeG7kWkgdMaw4bujbmcgbOG6pXkgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjA3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzUzCiBtc2dpZCAic2hvdyBpbmZvIGFib3V0IG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB0aMO0bmcgdGluIHbhu4EgxJHhu5FpIHTGsOG7o25nIGZlZCAgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIgogCkBAIC0yOTk5LDMwICszMDc0LDU1IEBACiBtc2dpZCAiaW5wdXQgcGF0aHMgYXJlIHRlcm1pbmF0ZWQgYnkgYSBudWxsIGNoYXJhY3RlciIKIG1zZ3N0ciAiY8OhYyDEkcaw4budbmcgZOG6q24gxJHGsOG7o2MgIG5nxINuIGPDoWNoIGLhu59pIGvDvSB04buxIG51bGwiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTggYnVpbHRpbi9jaGVja291dC5jOjEwNDQgYnVpbHRpbi9nYy5jOjE3NworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA1NCBidWlsdGluL2djLmM6MTc3CiBtc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgogbXNnc3RyICJjaOG6t24gY8OhYyBiw6FvIGPDoW8gdGnhur9uIHRyw6xuaCBob+G6oXQgxJHhu5luZyIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDYKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MjYKK21zZ2lkICJzaG93IG5vbi1tYXRjaGluZyBpbnB1dCBwYXRocyIKK21zZ3N0ciAiaGnhu4NuIHRo4buLIG5o4buvbmcgxJHGsOG7nW5nIGThuqtuIMSR4bqndSB2w6BvIGtow7RuZyBraOG7m3AgduG7m2kgbeG6q3UiCisKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQzCiBtc2dpZCAiY2Fubm90IHNwZWNpZnkgcGF0aG5hbWVzIHdpdGggLS1zdGRpbiIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGNo4buJIMSR4buLbmggY8OhYyB0w6puIMSRxrDhu51uZyBk4bqrbiB24bubaSAtLXN0ZGluIgogCi0jOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0OQorIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDYKIG1zZ2lkICIteiBvbmx5IG1ha2VzIHNlbnNlIHdpdGggLS1zdGRpbiIKIG1zZ3N0ciAiLXogY2jhu4kgaOG7o3AgbMO9IHbhu5tpIC0tc3RkaW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUxCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0OAogbXNnaWQgIm5vIHBhdGggc3BlY2lmaWVkIgogbXNnc3RyICJjaMawYSBnaGkgcsO1IMSRxrDhu51uZyBk4bqrbiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTUKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUyCiBtc2dpZCAiLS1xdWlldCBpcyBvbmx5IHZhbGlkIHdpdGggYSBzaW5nbGUgcGF0aG5hbWUiCiBtc2dzdHIgIi0tcXVpZXQgY2jhu4kgaOG7o3AgbOG7hyB24bubaSB0w6puIMSRxrDhu51uZyBk4bqrbiDEkcahbiIKIAotIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTcKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU0CiBtc2dpZCAiY2Fubm90IGhhdmUgYm90aCAtLXF1aWV0IGFuZCAtLXZlcmJvc2UiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBkw7luZyBj4bqjIGhhaSB0w7l5IGNo4buNbiAtLXF1aWV0IHbDoCAtLXZlcmJvc2UiCiAKKyM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU3Cittc2dpZCAiLS1ub24tbWF0Y2hpbmcgaXMgb25seSB2YWxpZCB3aXRoIC0tdmVyYm9zZSIKK21zZ3N0ciAidMO5eS1jaOG7jW4gLS1ub24tbWF0Y2hpbmcgY2jhu4kgaOG7o3AgbOG7hyBraGkgZMO5bmcgduG7m2kgLS12ZXJib3NlIgorCisjOiBidWlsdGluL2NoZWNrLW1haWxtYXAuYzo4Cittc2dpZCAiZ2l0IGNoZWNrLW1haWxtYXAgW29wdGlvbnNdIDxjb250YWN0Pi4uLiIKK21zZ3N0ciAiZ2l0IGNoZWNrLW1haWxtYXAgW2PDoWMtdMO5eS1jaOG7jW5dIDxkYW5oLWLhuqE+Li4uIgorCisjOiBidWlsdGluL2NoZWNrLW1haWxtYXAuYzoxMworbXNnaWQgImFsc28gcmVhZCBjb250YWN0cyBmcm9tIHN0ZGluIgorbXNnc3RyICLEkeG7k25nIHRo4budaSDEkeG7jWMgY8OhYyBkYW5oIGLhuqEgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIgorCisjOiBidWlsdGluL2NoZWNrLW1haWxtYXAuYzoyNAorIywgYy1mb3JtYXQKK21zZ2lkICJ1bmFibGUgdG8gcGFyc2UgY29udGFjdDogJXMiCittc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBkYW5oIGLhuqE6IOKAnCVz4oCdIgorCisjOiBidWlsdGluL2NoZWNrLW1haWxtYXAuYzo0NworbXNnaWQgIm5vIGNvbnRhY3RzIHNwZWNpZmllZCIKK21zZ3N0ciAiY2jGsGEgY2jhu4kgcmEgZGFuaCBi4bqhIgorCiAjOiBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTI2CiBtc2dpZCAiZ2l0IGNoZWNrb3V0LWluZGV4IFtvcHRpb25zXSBbLS1dIFs8ZmlsZT4uLi5dIgogbXNnc3RyICJnaXQgY2hlY2tvdXQtaW5kZXggW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gWzx04bqtcC10aW4+Li4uXSIKQEAgLTMxNDEsNDIgKzMyNDEsNDIgQEAKIG1zZ2lkICJDYW4gbm90IGRvIHJlZmxvZyBmb3IgJyVzJ1xuIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiByZWZsb2cgY2hvIOKAnCVz4oCdXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MzQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2MzkKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCIKIG1zZ3N0ciAiSEVBRCBoaeG7h24gZ2nhu50gdOG6oWkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVzZXQgYnJhbmNoICclcydcbiIKIG1zZ3N0ciAixJDhurd0IGzhuqFpIG5ow6FuaCDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgogbXNnc3RyICLEkMOjIHPhurVuIHPDoG5nIHRyw6puIOKAnCVz4oCdXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiU3dpdGNoZWQgdG8gYW5kIHJlc2V0IGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIsSQw6MgY2h1eeG7g24gdOG7m2kgdsOgIHJlc2V0IG5ow6FuaCDigJwlc+KAnVxuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjUwIGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTUgYnVpbHRpbi9jaGVja291dC5jOjk5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLEkMOjIGNodXnhu4NuIMSR4bq/biBuaMOhbmggbeG7m2kg4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY1MgorIzogYnVpbHRpbi9jaGVja291dC5jOjY1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLEkMOjIGNodXnhu4NuIMSR4bq/biBuaMOhbmgg4oCcJXPigJ1cbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjcwOAorIzogYnVpbHRpbi9jaGVja291dC5jOjcxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIgLi4uIGFuZCAlZCBtb3JlLlxuIgogbXNnc3RyICIgLi4uIHbDoCBuaGnhu4F1IGjGoW4gJWQuXG4iCiAKICMuIFRoZSBzaW5ndWxhciB2ZXJzaW9uCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzE0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzE5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXYXJuaW5nOiB5b3UgYXJlIGxlYXZpbmcgJWQgY29tbWl0IGJlaGluZCwgbm90IGNvbm5lY3RlZCB0b1xuIgpAQCAtMzIwMSw3ICszMzAxLDcgQEAKICJcbiIKICIlc1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NzMyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NzM3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byBrZWVwIHRoZW0gYnkgY3JlYXRpbmcgYSBuZXcgYnJhbmNoLCB0aGlzIG1heSBiZSBhIGdvb2QgdGltZVxuIgpAQCAtMzIxNywxMzggKzMzMTcsMTM4IEBACiAiIGdpdCBicmFuY2ggdMOqbl9uaMOhbmhfbeG7m2kgJXNcbiIKICJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgorIzogYnVpbHRpbi9jaGVja291dC5jOjc2NwogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCi1tc2dzdHIgImzhu5dpIG7hu5lpIGLhu5kgdHJvbmcga2hpIGRpIGNodXnhu4NuIHF1YSBjw6FjIMSRaeG7g20geMOpdCBs4bqhaSIKK21zZ3N0ciAibOG7l2kgbuG7mWkgYuG7mSB0cm9uZyBraGkgZGkgY2h1eeG7g24gcXVhIGPDoWMgxJFp4buDbSB4w6l0IGR1eeG7h3QiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3NzEKIG1zZ2lkICJQcmV2aW91cyBIRUFEIHBvc2l0aW9uIHdhcyIKIG1zZ3N0ciAiVuG7iyB0csOtIGvhur8gdHLGsOG7m2MgY+G7p2EgSEVBRCBsw6AiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3OTMgYnVpbHRpbi9jaGVja291dC5jOjk4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjc5OCBidWlsdGluL2NoZWNrb3V0LmM6OTkyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAiQuG6oW4gdOG6oWkgbmjDoW5oIG3DoCBuw7MgY2jGsGEgaOG7gSDEkcaw4bujYyBzaW5oIHJhIgogCiAjLiBjYXNlICgxKQotIzogYnVpbHRpbi9jaGVja291dC5jOjkxOAorIzogYnVpbHRpbi9jaGVja291dC5jOjkyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHJlZmVyZW5jZTogJXMiCiBtc2dzdHIgInRoYW0gY2hp4bq/dSBzYWk6ICVzIgogCiAjLiBjYXNlICgxKTogd2FudCBhIHRyZWUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVmZXJlbmNlIGlzIG5vdCBhIHRyZWU6ICVzIgogbXNnc3RyICJ0aGFtIGNoaeG6v3Uga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgY8OieSAodHJlZSk6JXMiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5OTYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDA2CiBtc2dpZCAicGF0aHMgY2Fubm90IGJlIHVzZWQgd2l0aCBzd2l0Y2hpbmcgYnJhbmNoZXMiCiBtc2dzdHIgImPDoWMgxJHGsOG7nW5nIGThuqtuIGtow7RuZyB0aOG7gyBkw7luZyBjw7luZyB24bubaSBjw6FjIG5ow6FuaCBjaHV54buDbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk5OSBidWlsdGluL2NoZWNrb3V0LmM6MTAwMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDkgYnVpbHRpbi9jaGVja291dC5jOjEwMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKIG1zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIGPDoWMgbmjDoW5oIGNodXnhu4NuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwNyBidWlsdGluL2NoZWNrb3V0LmM6MTAxMCBidWlsdGluL2NoZWNrb3V0LmM6MTAxNQotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMTgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE3IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDIwIGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDI1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyOAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggJyVzJyIKIG1zZ3N0ciAi4oCcJXPigJ0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0ICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBjaHV54buDbiBuaMOhbmggxJHhur9uIG3hu5l0IG5vbi1jb21taXQg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ3IGJ1aWx0aW4vY2xvbmUuYzo5MAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTUgYnVpbHRpbi9jaGVja291dC5jOjEwNTcgYnVpbHRpbi9jbG9uZS5jOjg5CiAjOiBidWlsdGluL3JlbW90ZS5jOjE2OSBidWlsdGluL3JlbW90ZS5jOjE3MQogbXNnaWQgImJyYW5jaCIKIG1zZ3N0ciAibmjDoW5oIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTYKIG1zZ2lkICJjcmVhdGUgYW5kIGNoZWNrb3V0IGEgbmV3IGJyYW5jaCIKIG1zZ3N0ciAidOG6oW8gdsOgIGNoZWNrb3V0IG3hu5l0IG5ow6FuaCBt4bubaSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU4CiBtc2dpZCAiY3JlYXRlL3Jlc2V0IGFuZCBjaGVja291dCBhIGJyYW5jaCIKIG1zZ3N0ciAiY3JlYXRlL3Jlc2V0IHbDoCBjaGVja291dCBt4buZdCBuaMOhbmgiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDQ5CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQogbXNnaWQgImNyZWF0ZSByZWZsb2cgZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgInThuqFvIHJlZmxvZyBjaG8gbmjDoW5oIG3hu5tpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjAKIG1zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgogbXNnc3RyICJy4budaSBi4buPIEhFQUQgdOG6oWkgbOG6p24gY2h1eeG7g24gZ2lhbyBkYW5oIG5naMSpYSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxCiBtc2dpZCAic2V0IHVwc3RyZWFtIGluZm8gZm9yIG5ldyBicmFuY2giCiBtc2dzdHIgIsSR4bq3dCB0aMO0bmcgdGluIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHN0cmVhbSkgY2hvIG5ow6FuaCBt4bubaSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYzCiBtc2dpZCAibmV3IGJyYW5jaCIKIG1zZ3N0ciAibmjDoW5oIG3hu5tpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MworIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjMKIG1zZ2lkICJuZXcgdW5wYXJlbnRlZCBicmFuY2giCiBtc2dzdHIgIm5ow6FuaCBt4buTIGPDtGkgbeG7m2kiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NAogbXNnaWQgImNoZWNrb3V0IG91ciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKIG1zZ3N0ciAiIgogImzhuqV5IHJhIChjaGVja291dCkgcGhpw6puIGLhuqNuIGPhu6dhIGNow7puZyB0YSBjaG8gY8OhYyB04bqtcCB0aW4gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NgogbXNnaWQgImNoZWNrb3V0IHRoZWlyIHZlcnNpb24gZm9yIHVubWVyZ2VkIGZpbGVzIgogbXNnc3RyICIiCiAibOG6pXkgcmEgKGNoZWNrb3V0KSBwaGnDqm4gYuG6o24gY+G7p2EgY2jDum5nIGjhu40gY2hvIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjgKIG1zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKIG1zZ3N0ciAiw6lwIGJ14buZYyBs4bqleSByYSAoY2hlY2tvdXQpIChi4buPIMSRaSBuaOG7r25nIHRoYXkgxJHhu5VpIG7hu5lpIGLhu5kpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjkKIG1zZ2lkICJwZXJmb3JtIGEgMy13YXkgbWVyZ2Ugd2l0aCB0aGUgbmV3IGJyYW5jaCIKIG1zZ3N0ciAidGjhu7FjIGhp4buHbiBow7JhIHRy4buZbiBraeG7g3UgMy13YXkgduG7m2kgbmjDoW5oIG3hu5tpIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MCBidWlsdGluL21lcmdlLmM6MjE3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MCBidWlsdGluL21lcmdlLmM6MjMyCiBtc2dpZCAidXBkYXRlIGlnbm9yZWQgZmlsZXMgKGRlZmF1bHQpIgogbXNnc3RyICJj4bqtcCBuaOG6rXQgY8OhYyB04bqtcCB0aW4gYuG7iyBi4buPIHF1YSAobeG6t2MgxJHhu4tuaCkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MSBidWlsdGluL2xvZy5jOjEyMDggcGFyc2Utb3B0aW9ucy5oOjI0OQogbXNnaWQgInN0eWxlIgogbXNnc3RyICJraeG7g3UiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MgogbXNnaWQgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiCiBtc2dzdHIgInh1bmcgxJHhu5l0IGtp4buDdSAoaMOyYSB0cuG7mW4gaGF5IGRpZmYzKSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDc1CiBtc2dpZCAiZG8gbm90IGxpbWl0IHBhdGhzcGVjcyB0byBzcGFyc2UgZW50cmllcyBvbmx5IgogbXNnc3RyICJraMO0bmcgZ2nhu5tpIGjhuqFuIHBhdGhzcGVjcyBjaOG7iSB0aMOgbmggY8OhYyBt4bulYyB0aMawYSB0aOG7m3QiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3NwogbXNnaWQgInNlY29uZCBndWVzcyAnZ2l0IGNoZWNrb3V0IG5vLXN1Y2gtYnJhbmNoJyIKIG1zZ3N0ciAiZ+G7o2kgw70gdGjhu6kgaGFpIOKAnGdpdCBjaGVja291dCBraMO0bmctbmjDoW5oLW7DoG8tbmjGsC124bqteeKAnSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwOTEKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTAxCiBtc2dpZCAiLWIsIC1CIGFuZCAtLW9ycGhhbiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlIgogbXNnc3RyICJUw7l5IGNo4buNbiAtYnwtQiB2w6AgLS1vcnBoYW4gbG/huqFpIHThu6sgbOG6q24gbmhhdSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExMDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTE4CiBtc2dpZCAiLS10cmFjayBuZWVkcyBhIGJyYW5jaCBuYW1lIgogbXNnc3RyICItLXRyYWNrIGPhuqduIHTDqm4gbeG7mXQgbmjDoW5oIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQorIzogYnVpbHRpbi9jaGVja291dC5jOjExMjUKIG1zZ2lkICJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiCiBtc2dzdHIgIlRoaeG6v3UgdMOqbiBuaMOhbmg7IGjDo3kgdGjhu60gLWIiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTUwCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2MAogbXNnaWQgImludmFsaWQgcGF0aCBzcGVjaWZpY2F0aW9uIgogbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHDoyBjaG8ga2jDtG5nIGjhu6NwIGzhu4ciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTU3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IHVwZGF0ZSBwYXRocyBhbmQgc3dpdGNoIHRvIGJyYW5jaCAnJXMnIGF0IHRoZSBzYW1lIHRpbWUuXG4iCkBAIC0zMzU4LDEyICszNDU4LDEyIEBACiAiQuG6oW4gxJHDoyBjw7Mgw70gxJHhu4tuaCBjaGVja291dCDigJwlc+KAnSBjw6FpIG3DoCBraMO0bmcgdGjhu4MgxJHGsOG7o2MgcGjDom4gZ2nhuqNpIG5oxrAgbMOgIGzhuqduICIKICJjaHV54buDbiBnaWFvIChjb21taXQpPyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNjIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTcyCiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBjaGVja291dDogLS1kZXRhY2ggZG9lcyBub3QgdGFrZSBhIHBhdGggYXJndW1lbnQgJyVzJyIKIG1zZ3N0ciAiZ2l0IGNoZWNrb3V0OiAtLWRldGFjaCBraMO0bmcgbmjhuq1uIG3hu5l0IMSR4buRaSBz4buRIMSRxrDhu51uZyBk4bqrbiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNjYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTc2CiBtc2dpZCAiIgogImdpdCBjaGVja291dDogLS1vdXJzLy0tdGhlaXJzLCAtLWZvcmNlIGFuZCAtLW1lcmdlIGFyZSBpbmNvbXBhdGlibGUgd2hlblxuIgogImNoZWNraW5nIG91dCBvZiB0aGUgaW5kZXguIgpAQCAtMzM3MSwyMTcgKzM0NzEsMzIwIEBACiAiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgdsOgIC0tbWVyZ2UgbMOgIHh1bmcga2jhuq9jIHbhu5tpIG5oYXUga2hpXG4iCiAiY2hlY2tvdXQgYuG6o25nIG3hu6VjIGzhu6VjIChpbmRleCkuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjAKLW1zZ2lkICJnaXQgY2xlYW4gWy1kXSBbLWZdIFstbl0gWy1xXSBbLWUgPHBhdHRlcm4+XSBbLXggfCAtWF0gWy0tXSA8cGF0aHM+Li4uIgotbXNnc3RyICJnaXQgY2xlYW4gWy1kXSBbLWZdIFstbl0gWy1xXSBbLWUgPG3huqt1Pl0gWy14IHwgLVhdIFstLV0gPMSRxrDhu51uZy1k4bqrbj4uLi4iCisjOiBidWlsdGluL2NsZWFuLmM6MjUKK21zZ2lkICIiCisiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLWldIFstbl0gWy1xXSBbLWUgPHBhdHRlcm4+XSBbLXggfCAtWF0gWy0tXSA8cGF0aHM+Li4uIgorbXNnc3RyICIiCisiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLWldIFstbl0gWy1xXSBbLWUgPG3huqt1Pl0gWy14IHwgLVhdIFstLV0gPMSRxrDhu51uZy1k4bqrbj4uLi4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoyNAorIzogYnVpbHRpbi9jbGVhbi5jOjI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nICVzXG4iCiBtc2dzdHIgIsSQYW5nIGfhu6EgYuG7jyAlc1xuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjUKKyM6IGJ1aWx0aW4vY2xlYW4uYzozMAogIywgYy1mb3JtYXQKIG1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKIG1zZ3N0ciAiQ8OzIHRo4buDIGfhu6EgYuG7jyAlc1xuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjYKKyM6IGJ1aWx0aW4vY2xlYW4uYzozMQogIywgYy1mb3JtYXQKIG1zZ2lkICJTa2lwcGluZyByZXBvc2l0b3J5ICVzXG4iCiBtc2dzdHIgIsSQYW5nIGLhu48gcXVhIGtobyBjaOG7qWEgJXNcbiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjI3CisjOiBidWlsdGluL2NsZWFuLmM6MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiV291bGQgc2tpcCByZXBvc2l0b3J5ICVzXG4iCiBtc2dzdHIgIk7Dqm4gYuG7jyBxdWEga2hvIGNo4bupYSAlc1xuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjgKKyM6IGJ1aWx0aW4vY2xlYW4uYzozMwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcmVtb3ZlICVzIgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgZ+G7oSBi4buPICVzIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTYwCisjOiBidWlsdGluL2NsZWFuLmM6MjkzCittc2dpZCAiIgorIlByb21wdCBoZWxwOlxuIgorIjEgICAgICAgICAgLSBzZWxlY3QgYSBudW1iZXJlZCBpdGVtXG4iCisiZm9vICAgICAgICAtIHNlbGVjdCBpdGVtIGJhc2VkIG9uIHVuaXF1ZSBwcmVmaXhcbiIKKyIgICAgICAgICAgIC0gKGVtcHR5KSBzZWxlY3Qgbm90aGluZyIKK21zZ3N0ciAiIgorIlRy4bujIGdpw7pwIHbhu4Egbmjhuq9jOlxuIgorIjEgICAgICAgICAgLSBjaOG7jW4gbeG7mXQgbeG7pWMgxJHGsOG7o2MgxJHDoW5oIHPhu5FcbiIKKyJmb28gICAgICAgIC0gY2jhu41uIG3hu6VjIHRyw6puIGPGoSBz4bufIHRp4buBbiB04buRIGR1eSBuaOG6pXRcbiIKKyIgICAgICAgICAgIC0gKHRy4buRbmcgcuG7l25nKSBraMO0bmcgY2jhu41uIGfDrCBj4bqjIgorCisjOiBidWlsdGluL2NsZWFuLmM6Mjk3Cittc2dpZCAiIgorIlByb21wdCBoZWxwOlxuIgorIjEgICAgICAgICAgLSBzZWxlY3QgYSBzaW5nbGUgaXRlbVxuIgorIjMtNSAgICAgICAgLSBzZWxlY3QgYSByYW5nZSBvZiBpdGVtc1xuIgorIjItMyw2LTkgICAgLSBzZWxlY3QgbXVsdGlwbGUgcmFuZ2VzXG4iCisiZm9vICAgICAgICAtIHNlbGVjdCBpdGVtIGJhc2VkIG9uIHVuaXF1ZSBwcmVmaXhcbiIKKyItLi4uICAgICAgIC0gdW5zZWxlY3Qgc3BlY2lmaWVkIGl0ZW1zXG4iCisiKiAgICAgICAgICAtIGNob29zZSBhbGwgaXRlbXNcbiIKKyIgICAgICAgICAgIC0gKGVtcHR5KSBmaW5pc2ggc2VsZWN0aW5nIgorbXNnc3RyICIiCisiVHLhu6MgZ2nDunAgduG7gSBuaOG6r2M6XG4iCisiMSAgICAgICAgICAtIGNo4buNbiBt4buZdCBt4bulYyDEkcahblxuIgorIjMtNSAgICAgICAgLSBjaOG7jW4gbeG7mXQgdsO5bmdcbiIKKyIyLTMsNi05ICAgIC0gY2jhu41uIG5oaeG7gXUgdsO5bmdcbiIKKyJmb28gICAgICAgIC0gY2jhu41uIG3hu6VjIGThu7FhIHRyw6puIHRp4buBbiB04buRIGR1eSBuaOG6pXRcbiIKKyItLi4uICAgICAgIC0ga2jDtG5nIGNo4buNbiBjw6FjIG3hu6VjIMSRw6MgY2jhu4kgcmFcbiIKKyIqICAgICAgICAgIC0gY2jhu41uIHThuqV0XG4iCisiICAgICAgICAgICAtICh0cuG7kW5nIHLhu5duZykga+G6v3QgdGjDumMgdmnhu4djIGNo4buNbiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjQ5MQorIywgYy1mb3JtYXQKK21zZ2lkICJIdWggKCVzKT8iCittc2dzdHIgIkjhuqMgKCVzKT8iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo2MzQKKyMsIGMtZm9ybWF0Cittc2dpZCAiSW5wdXQgaWdub3JlIHBhdHRlcm5zPj4gIgorbXNnc3RyICJN4bqrdSDEkeG7gyBs4buNYyBjw6FjIHThuq1wIHRpbiBj4bqnbiBs4budIMSRaSDEkeG6p3UgdsOgbz4+IgorCisjOiBidWlsdGluL2NsZWFuLmM6NjcxCisjLCBjLWZvcm1hdAorbXNnaWQgIldBUk5JTkc6IENhbm5vdCBmaW5kIGl0ZW1zIG1hdGNoZWQgYnk6ICVzIgorbXNnc3RyICJD4bqiTkggQsOBTzogS2jDtG5nIHTDrG0gdGjhuqV5IGPDoWMgbeG7pWMgxJHGsOG7o2Mga2jhu5twIGLhu59pOiAlcyIKKworIzogYnVpbHRpbi9jbGVhbi5jOjY5MgorbXNnaWQgIlNlbGVjdCBpdGVtcyB0byBkZWxldGUiCittc2dzdHIgIkNo4buNbiBt4bulYyBtdeG7kW4geMOzYSIKKworIzogYnVpbHRpbi9jbGVhbi5jOjczMgorIywgYy1mb3JtYXQKK21zZ2lkICJyZW1vdmUgJXM/ICIKK21zZ3N0ciAiZ+G7oSBi4buPIOKAnCVz4oCdPyIKKworIzogYnVpbHRpbi9jbGVhbi5jOjc1NworbXNnaWQgIkJ5ZS4iCittc2dzdHIgIlThuqFtIGJp4buHdC4iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo3NjUKK21zZ2lkICIiCisiY2xlYW4gICAgICAgICAgICAgICAtIHN0YXJ0IGNsZWFuaW5nXG4iCisiZmlsdGVyIGJ5IHBhdHRlcm4gICAtIGV4Y2x1ZGUgaXRlbXMgZnJvbSBkZWxldGlvblxuIgorInNlbGVjdCBieSBudW1iZXJzICAgLSBzZWxlY3QgaXRlbXMgdG8gYmUgZGVsZXRlZCBieSBudW1iZXJzXG4iCisiYXNrIGVhY2ggICAgICAgICAgICAtIGNvbmZpcm0gZWFjaCBkZWxldGlvbiAobGlrZSBcInJtIC1pXCIpXG4iCisicXVpdCAgICAgICAgICAgICAgICAtIHN0b3AgY2xlYW5pbmdcbiIKKyJoZWxwICAgICAgICAgICAgICAgIC0gdGhpcyBzY3JlZW5cbiIKKyI/ICAgICAgICAgICAgICAgICAgIC0gaGVscCBmb3IgcHJvbXB0IHNlbGVjdGlvbiIKK21zZ3N0ciAiIgorImNsZWFuICAgICAgICAgICAgICAgLSBi4bqvdCDEkeG6p3UgZOG7jW4gZOG6uXBcbiIKKyJmaWx0ZXIgYnkgcGF0dGVybiAgIC0gbG/huqFpIHRy4burIGPDoWMgbeG7pWMga2jhu49pIHZp4buHYyB4w7NhXG4iCisic2VsZWN0IGJ5IG51bWJlcnMgICAtIGNo4buNbiBjw6FjIG3hu6VjIGPhuqduIHjDs2EgYuG6sW5nIHPhu5FcbiIKKyJhc2sgZWFjaCAgICAgICAgICAgIC0geMOhYyBuaOG6rW4gdHLGsOG7m2MgbeG7l2kgbOG6p24geMOzYSAoZ2nhu5FuZyBuaMawIFwicm0gLWlcIilcbiIKKyJxdWl0ICAgICAgICAgICAgICAgIC0gZOG7q25nIHZp4buHYyBk4buNbiBk4bq5cCBs4bqhaVxuIgorImhlbHAgICAgICAgICAgICAgICAgLSBoaeG7g24gdGjhu4sgY2jDrW5oIHRy4bujIGdpw7pwIG7DoHlcbiIKKyI/ICAgICAgICAgICAgICAgICAgIC0gdHLhu6MgZ2nDunAgZMOgbmggY2hvIGNo4buNbiBi4bqxbmcgY8OhY2ggbmjhuq9jIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzkyCittc2dpZCAiKioqIENvbW1hbmRzICoqKiIKK21zZ3N0ciAiKioqIEzhu4duaCAqKioiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo3OTMKK21zZ2lkICJXaGF0IG5vdyIKK21zZ3N0ciAiR2nhu50gdGjDrCBzYW8iCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4MDEKK21zZ2lkICJXb3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBpdGVtOiIKK21zZ2lkX3BsdXJhbCAiV291bGQgcmVtb3ZlIHRoZSBmb2xsb3dpbmcgaXRlbXM6IgorbXNnc3RyWzBdICJDw7MgbXXhu5FuIGfhu6EgYuG7jyBt4bulYyBzYXUgxJHDonkga2jDtG5nOiIKK21zZ3N0clsxXSAiQ8OzIG114buRbiBn4buhIGLhu48gY8OhYyBt4bulYyBzYXUgxJHDonkga2jDtG5nOiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjgxOAorbXNnaWQgIk5vIG1vcmUgZmlsZXMgdG8gY2xlYW4sIGV4aXRpbmcuIgorbXNnc3RyICJLaMO0bmcgY8OybiB04bqtcC10aW4gbsOgbyDEkeG7gyBk4buNbiBk4bq5cCwgxJFhbmcgdGhvw6F0IHJhLiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjg1MAogbXNnaWQgImRvIG5vdCBwcmludCBuYW1lcyBvZiBmaWxlcyByZW1vdmVkIgogbXNnc3RyICJraMO0bmcgaGnhu4NuIHRo4buLIHTDqm4gY+G7p2EgY8OhYyB04bqtcCB0aW4gxJHDoyBn4buhIGLhu48iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NTIKIG1zZ2lkICJmb3JjZSIKIG1zZ3N0ciAiw6lwIGJ14buZYyIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2NAorIzogYnVpbHRpbi9jbGVhbi5jOjg1MworbXNnaWQgImludGVyYWN0aXZlIGNsZWFuaW5nIgorbXNnc3RyICJz4butYSBi4bqxbmcgY8OhY2ggdMawxqFuZyB0w6FjIgorCisjOiBidWlsdGluL2NsZWFuLmM6ODU1CiBtc2dpZCAicmVtb3ZlIHdob2xlIGRpcmVjdG9yaWVzIgogbXNnc3RyICJn4buhIGLhu48gdG/DoG4gYuG7mSB0aMawIG3hu6VjIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorIzogYnVpbHRpbi9jbGVhbi5jOjg1NiBidWlsdGluL2Rlc2NyaWJlLmM6NDIwIGJ1aWx0aW4vZ3JlcC5jOjcxNgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25hbWUtcmV2LmM6MzE1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODYKIG1zZ2lkICJwYXR0ZXJuIgogbXNnc3RyICJt4bqrdSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2NgorIzogYnVpbHRpbi9jbGVhbi5jOjg1NwogbXNnaWQgImFkZCA8cGF0dGVybj4gdG8gaWdub3JlIHJ1bGVzIgogbXNnc3RyICJ0aMOqbSA8beG6q3U+IHbDoG8gdHJvbmcgcXVpIHThuq9jIGLhu48gcXVhIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY3CisjOiBidWlsdGluL2NsZWFuLmM6ODU4CiBtc2dpZCAicmVtb3ZlIGlnbm9yZWQgZmlsZXMsIHRvbyIKIG1zZ3N0ciAixJHhu5NuZyB0aOG7nWkgZ+G7oSBi4buPIGPhuqMgY8OhYyB04bqtcCB0aW4gYuG7iyBi4buPIHF1YSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE2OQorIzogYnVpbHRpbi9jbGVhbi5jOjg2MAogbXNnaWQgInJlbW92ZSBvbmx5IGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgImNo4buJIGfhu6EgYuG7jyBuaOG7r25nIHThuq1wIHRpbiBi4buLIGLhu48gcXVhIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTg3CisjOiBidWlsdGluL2NsZWFuLmM6ODc4CiBtc2dpZCAiLXggYW5kIC1YIGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICIteCB2w6AgLVgga2jDtG5nIHRo4buDIGTDuW5nIGPDuW5nIG3hu5l0IGzDumMgduG7m2kgbmhhdSIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjE5MQorIzogYnVpbHRpbi9jbGVhbi5jOjg4MgogbXNnaWQgIiIKLSJjbGVhbi5yZXF1aXJlRm9yY2Ugc2V0IHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byBjbGVhbiIKLW1zZ3N0ciAiIgotImNsZWFuLnJlcXVpcmVGb3JjZSDEkcaw4bujYyDEkeG6t3QgdGjDoG5oIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAgLW4gbcOgIGPFqW5nICIKLSJraMO0bmcgLWY7IHThu6sgY2jhu5FpIGzhu4duaCBk4buNbiBk4bq5cCAoY2xlYW4pIgotCi0jOiBidWlsdGluL2NsZWFuLmM6MTk0Ci1tc2dpZCAiIgotImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gIgorImNsZWFuLnJlcXVpcmVGb3JjZSBzZXQgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtaSwgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byAiCiAiY2xlYW4iCiBtc2dzdHIgIiIKLSJjbGVhbi5yZXF1aXJlRm9yY2UgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyDEkeG6t3QgdGjDoG5oIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAgLW4gIgotIm3DoCBjxaluZyBraMO0bmcgLWY7IHThu6sgY2jhu5FpIGzhu4duaCBk4buNbiBk4bq5cCAoY2xlYW4pIgorImNsZWFuLnJlcXVpcmVGb3JjZSDEkcaw4bujYyDEkeG6t3QgdGjDoG5oIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAtbiBtw6AgY8WpbmcgIgorImtow7RuZyAtZjsgdOG7qyBjaOG7kWkgbOG7h25oIGThu41uIGThurlwIChjbGVhbikiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNworIzogYnVpbHRpbi9jbGVhbi5jOjg4NQorbXNnaWQgIiIKKyJjbGVhbi5yZXF1aXJlRm9yY2UgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgbmVpdGhlciAtaSwgLW4gbm9yIC1mIGdpdmVuOyAiCisicmVmdXNpbmcgdG8gY2xlYW4iCittc2dzdHIgIiIKKyJjbGVhbi5yZXF1aXJlRm9yY2UgbeG6t2MgxJHhu4tuaCDEkcaw4bujYyDEkeG6t3QgbMOgIHRydWUgdsOgIGtow7RuZyDEkcawYSByYSB0w7l5IGNo4buNbiAtbiBtw6AgIgorImPFqW5nIGtow7RuZyAtZjsgdOG7qyBjaOG7kWkgbOG7h25oIGThu41uIGThurlwIChjbGVhbikiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNgogbXNnaWQgImdpdCBjbG9uZSBbb3B0aW9uc10gWy0tXSA8cmVwbz4gWzxkaXI+XSIKIG1zZ3N0ciAiZ2l0IGNsb25lIFtjw6FjLXTDuXktY2jhu41uXSBbLS1dIDxraG8+IFs8dC5t4bulYz5dIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjUgYnVpbHRpbi9mZXRjaC5jOjgyIGJ1aWx0aW4vbWVyZ2UuYzoyMTQKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzNgorIzogYnVpbHRpbi9jbG9uZS5jOjY0IGJ1aWx0aW4vZmV0Y2guYzo4MiBidWlsdGluL21lcmdlLmM6MjI5CisjOiBidWlsdGluL3B1c2guYzo0NjIKIG1zZ2lkICJmb3JjZSBwcm9ncmVzcyByZXBvcnRpbmciCiBtc2dzdHIgIsOpcCBideG7mWMgYsOhbyBjw6FvIHRp4bq/biB0csOsbmgiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NworIzogYnVpbHRpbi9jbG9uZS5jOjY2CiBtc2dpZCAiZG9uJ3QgY3JlYXRlIGEgY2hlY2tvdXQiCiBtc2dzdHIgImtow7RuZyB04bqhbyBt4buZdCBjaGVja291dCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjY4IGJ1aWx0aW4vY2xvbmUuYzo3MCBidWlsdGluL2luaXQtZGIuYzo0ODgKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NyBidWlsdGluL2Nsb25lLmM6NjkgYnVpbHRpbi9pbml0LWRiLmM6NDg4CiBtc2dpZCAiY3JlYXRlIGEgYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICJ04bqhbyBraG8gY2jhu6lhIGJhcmUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3MworIzogYnVpbHRpbi9jbG9uZS5jOjcyCiBtc2dpZCAiY3JlYXRlIGEgbWlycm9yIHJlcG9zaXRvcnkgKGltcGxpZXMgYmFyZSkiCiBtc2dzdHIgInThuqFvIGtobyBi4bqjbiBzYW8gKG1pcnJvcikgKG5n4bulIMO9IGzDoCBiYXJlKSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc1CisjOiBidWlsdGluL2Nsb25lLmM6NzQKIG1zZ2lkICJ0byBjbG9uZSBmcm9tIGEgbG9jYWwgcmVwb3NpdG9yeSIKIG1zZ3N0ciAixJHhu4MgbmjDom4gYuG6o24gdOG7qyBraG8gbuG7mWkgYuG7mSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc3CisjOiBidWlsdGluL2Nsb25lLmM6NzYKIG1zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKIG1zZ3N0ciAia2jDtG5nIHPhu60gZOG7pW5nIGxpw6puIGvhur90IGPhu6luZyBu4buZaSBi4buZLCBsdcO0biBzYW8gY2jDqXAiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3OQorIzogYnVpbHRpbi9jbG9uZS5jOjc4CiBtc2dpZCAic2V0dXAgYXMgc2hhcmVkIHJlcG9zaXRvcnkiCiBtc2dzdHIgImPDoGkgxJHhurd0IMSRw6J5IGzDoCBraG8gY2hpYSBz4bq7IgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODEgYnVpbHRpbi9jbG9uZS5jOjgzCisjOiBidWlsdGluL2Nsb25lLmM6ODAgYnVpbHRpbi9jbG9uZS5jOjgyCiBtc2dpZCAiaW5pdGlhbGl6ZSBzdWJtb2R1bGVzIGluIHRoZSBjbG9uZSIKIG1zZ3N0ciAia2jhu59pIHThuqFvIG3DtC3EkXVuLWNvbiB0cm9uZyBi4bqjbiBzYW8iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NCBidWlsdGluL2luaXQtZGIuYzo0ODUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MyBidWlsdGluL2luaXQtZGIuYzo0ODUKIG1zZ2lkICJ0ZW1wbGF0ZS1kaXJlY3RvcnkiCiBtc2dzdHIgInRoxrAtbeG7pWMtdOG6oW0iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NSBidWlsdGluL2luaXQtZGIuYzo0ODYKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NCBidWlsdGluL2luaXQtZGIuYzo0ODYKIG1zZ2lkICJkaXJlY3RvcnkgZnJvbSB3aGljaCB0ZW1wbGF0ZXMgd2lsbCBiZSB1c2VkIgogbXNnc3RyICJ0aMawIG3hu6VjIG3DoCB04bqhaSDEkcOzIGPDoWMgbeG6q3Ugc+G6vSDEkcaw4bujYyBkw7luZyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3CisjOiBidWlsdGluL2Nsb25lLmM6ODYKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKIG1zZ3N0ciAia2hvIHRoYW0gY2hp4bq/dSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg4IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4NyBidWlsdGluL2NvbHVtbi5jOjI2IGJ1aWx0aW4vbWVyZ2UtZmlsZS5jOjQ0CiBtc2dpZCAibmFtZSIKIG1zZ3N0ciAidMOqbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg5CisjOiBidWlsdGluL2Nsb25lLmM6ODgKIG1zZ2lkICJ1c2UgPG5hbWU+IGluc3RlYWQgb2YgJ29yaWdpbicgdG8gdHJhY2sgdXBzdHJlYW0iCiBtc2dzdHIgImTDuW5nIDx0w6puPiB0aGF5IHbDrCDigJxvcmlnaW7igJ0gxJHhu4MgdGhlbyBkw7VpIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHRyZWFtKSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkxCisjOiBidWlsdGluL2Nsb25lLmM6OTAKIG1zZ2lkICJjaGVja291dCA8YnJhbmNoPiBpbnN0ZWFkIG9mIHRoZSByZW1vdGUncyBIRUFEIgogbXNnc3RyICJs4bqleSByYSBuaMOhbmggKGNoZWNrb3V0IDxuaMOhbmg+KSB0aGF5IHbDrCBIRUFEIGPhu6dhIG3DoXkgY2jhu6ciCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MworIzogYnVpbHRpbi9jbG9uZS5jOjkyCiBtc2dpZCAicGF0aCB0byBnaXQtdXBsb2FkLXBhY2sgb24gdGhlIHJlbW90ZSIKIG1zZ3N0ciAixJHGsOG7nW5nIGThuqtuIMSR4bq/biBnaXQtdXBsb2FkLXBhY2sgdHLDqm4gbcOheSBjaOG7pyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk0IGJ1aWx0aW4vZmV0Y2guYzo4MyBidWlsdGluL2dyZXAuYzo2NjIKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MyBidWlsdGluL2ZldGNoLmM6ODMgYnVpbHRpbi9ncmVwLmM6NjYxCiBtc2dpZCAiZGVwdGgiCiBtc2dzdHIgIsSR4buZIHPDonUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5NQorIzogYnVpbHRpbi9jbG9uZS5jOjk0CiBtc2dpZCAiY3JlYXRlIGEgc2hhbGxvdyBjbG9uZSBvZiB0aGF0IGRlcHRoIgogbXNnc3RyICJ04bqhbyBi4bqjbiBzYW8ga2jDtG5nIMSR4bqneSDEkeG7pyBjaG8gbeG7qWMgc8OidSDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk3CisjOiBidWlsdGluL2Nsb25lLmM6OTYKIG1zZ2lkICJjbG9uZSBvbmx5IG9uZSBicmFuY2gsIEhFQUQgb3IgLS1icmFuY2giCiBtc2dzdHIgIm5ow6JuIGLhuqNuIChjbG9uZSkgY2jhu4kgbeG7mXQgbmjDoW5oLCBIRUFEIGhv4bq3YyAtLWJyYW5jaCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAorIzogYnVpbHRpbi9jbG9uZS5jOjk3IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NAogbXNnaWQgImdpdGRpciIKIG1zZ3N0ciAiZ2l0ZGlyIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTkgYnVpbHRpbi9pbml0LWRiLmM6NDk1CisjOiBidWlsdGluL2Nsb25lLmM6OTggYnVpbHRpbi9pbml0LWRiLmM6NDk1CiBtc2dpZCAic2VwYXJhdGUgZ2l0IGRpciBmcm9tIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAia2jDtG5nIGTDuW5nIGNodW5nIHRoxrAgbeG7pWMgZMOgbmggcmnDqm5nIGNobyBnaXQgdsOgIHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5OQogbXNnaWQgImtleT12YWx1ZSIKIG1zZ3N0ciAia2jDs2E9Z2nDoSB0cuG7iyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjEwMQorIzogYnVpbHRpbi9jbG9uZS5jOjEwMAogbXNnaWQgInNldCBjb25maWcgaW5zaWRlIHRoZSBuZXcgcmVwb3NpdG9yeSIKIG1zZ3N0ciAixJHhurd0IGPhuqV1IGjDrG5oIGLDqm4gdHJvbmcgbeG7mXQga2hvIGNo4bupYSBt4bubaSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjI1NAorIzogYnVpbHRpbi9jbG9uZS5jOjI1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICJraG8gdGhhbSBjaGnhur91IOKAnCVz4oCdIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IGtobyBu4buZaSBi4buZLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxNworIzogYnVpbHRpbi9jbG9uZS5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICJ04bqhbyB0aMawIG3hu6VjIFwiJXNcIiBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMxOSBidWlsdGluL2RpZmYuYzo3NworIzogYnVpbHRpbi9jbG9uZS5jOjMxOCBidWlsdGluL2RpZmYuYzo3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gc3RhdCAnJXMnIgogbXNnc3RyICJn4bq3cCBs4buXaSBzdGF0IChs4bqleSB0cuG6oW5nIHRow6FpIHbhu4EpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzIxCisjOiBidWlsdGluL2Nsb25lLmM6MzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIlcyB04buTbiB04bqhaSBuaMawbmcga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdGjGsCBt4bulYyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjMzNQorIzogYnVpbHRpbi9jbG9uZS5jOjMzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gc3RhdCAlc1xuIgogbXNnc3RyICJs4buXaSBzdGF0IChs4bqleSB0cuG6oW5nIHRow6FpIHbhu4EpICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozNTcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozNTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBsaW5rICclcyciCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSB04bqhbyDEkcaw4bujYyBsacOqbiBr4bq/dCBt4buBbSAlcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM2MQorIzogYnVpbHRpbi9jbG9uZS5jOjM2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY29weSBmaWxlIHRvICclcyciCiBtc2dzdHIgImfhurdwIGzhu5dpIGtoaSBjaMOpcCB04bqtcCB0aW4gdOG7m2kg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozODQKKyM6IGJ1aWx0aW4vY2xvbmUuYzozODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZG9uZS5cbiIKIG1zZ3N0ciAiaG/DoG4gdOG6pXQuXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozOTcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozOTYKIG1zZ2lkICIiCiAiQ2xvbmUgc3VjY2VlZGVkLCBidXQgY2hlY2tvdXQgZmFpbGVkLlxuIgogIllvdSBjYW4gaW5zcGVjdCB3aGF0IHdhcyBjaGVja2VkIG91dCB3aXRoICdnaXQgc3RhdHVzJ1xuIgpAQCAtMzU5MSw5MCArMzc5NCwxMDQgQEAKICJC4bqhbiBraeG7g20gdHJhIGvhu7kgeGVtIGPDoWkgZ8OsIMSRxrDhu6NjIGzhuqV5IHJhIGLhurFuZyBs4buHbmgg4oCcZ2l0IHN0YXR1c+KAnVxuIgogInbDoCB0aOG7rSBjaGVja291dCB24bubaSBs4buHbmgg4oCcZ2l0IGNoZWNrb3V0IC1mIEhFQUTigJ1cbiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjQ3NgorIzogYnVpbHRpbi9jbG9uZS5jOjQ3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmluZCByZW1vdGUgYnJhbmNoICVzIHRvIGNsb25lLiIKIG1zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IG5ow6FuaCBtw6F5IGNo4bunICVzIMSR4buDIG5ow6JuIGLhuqNuIChjbG9uZSkuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NTUwCisjOiBidWlsdGluL2Nsb25lLmM6NTU1CisjLCBjLWZvcm1hdAorbXNnaWQgIkNoZWNraW5nIGNvbm5lY3Rpdml0eS4uLiAiCittc2dzdHIgIsSQYW5nIGtp4buDbSB0cmEga+G6v3QgbuG7kWkuLi4iCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTgKIG1zZ2lkICJyZW1vdGUgZGlkIG5vdCBzZW5kIGFsbCBuZWNlc3Nhcnkgb2JqZWN0cyIKIG1zZ3N0ciAibcOheSBjaOG7pyDEkcOjIGtow7RuZyBn4butaSB04bqldCBj4bqjIGPDoWMgxJHhu5FpIHTGsOG7o25nIGPhuqduIHRoaeG6v3QiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZG9uZVxuIgorbXNnc3RyICJ4b25nLlxuIgorCisjOiBidWlsdGluL2Nsb25lLmM6NjIxCiBtc2dpZCAicmVtb3RlIEhFQUQgcmVmZXJzIHRvIG5vbmV4aXN0ZW50IHJlZiwgdW5hYmxlIHRvIGNoZWNrb3V0LlxuIgogbXNnc3RyICJyZWZlcnMgSEVBRCBtw6F5IGNo4bunICBjaOG7iSDEkeG6v24gcmVmIGtow7RuZyB04buTbiB04bqhaSwga2jDtG5nIHRo4buDIGNoZWNrb3V0LlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjQxCisjOiBidWlsdGluL2Nsb25lLmM6NjUyCiBtc2dpZCAidW5hYmxlIHRvIGNoZWNrb3V0IHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGzhuqV5IHJhIChjaGVja291dCkgY8OieSBsw6BtIHZp4buHYyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc0OQorIzogYnVpbHRpbi9jbG9uZS5jOjc2MAogbXNnaWQgIlRvbyBtYW55IGFyZ3VtZW50cy4iCiBtc2dzdHIgIkPDsyBxdcOhIG5oaeG7gXUgxJHhu5FpIHPhu5EuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzUzCisjOiBidWlsdGluL2Nsb25lLmM6NzY0CiBtc2dpZCAiWW91IG11c3Qgc3BlY2lmeSBhIHJlcG9zaXRvcnkgdG8gY2xvbmUuIgogbXNnc3RyICJC4bqhbiBwaOG6o2kgY2jhu4kgxJHhu4tuaCBt4buZdCBraG8gxJHhu4MgbcOgIG5ow6JuIGLhuqNuIChjbG9uZSkuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzY0CisjOiBidWlsdGluL2Nsb25lLmM6Nzc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIi0tYmFyZSBhbmQgLS1vcmlnaW4gJXMgb3B0aW9ucyBhcmUgaW5jb21wYXRpYmxlLiIKIG1zZ3N0ciAidMO5eSBjaOG7jW4gLS1iYXJlIHbDoCAtLW9yaWdpbiAlcyB4dW5nIGto4bqvYyBuaGF1LiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2NworIzogYnVpbHRpbi9jbG9uZS5jOjc3OAogbXNnaWQgIi0tYmFyZSBhbmQgLS1zZXBhcmF0ZS1naXQtZGlyIGFyZSBpbmNvbXBhdGlibGUuIgogbXNnc3RyICJ0w7l5IGNo4buNbiAtLWJhcmUgdsOgIC0tc2VwYXJhdGUtZ2l0LWRpciB4dW5nIGto4bqvYyBuaGF1LiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc4MAorIzogYnVpbHRpbi9jbG9uZS5jOjc5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXBvc2l0b3J5ICclcycgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgImtobyBjaOG7qWEg4oCcJXPigJ0gY2jGsGEgdOG7k24gdOG6oWkiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3ODUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OTYKIG1zZ2lkICItLWRlcHRoIGlzIGlnbm9yZWQgaW4gbG9jYWwgY2xvbmVzOyB1c2UgZmlsZTovLyBpbnN0ZWFkLiIKIG1zZ3N0ciAiLS1kZXB0aCBi4buLIGzhu50gxJFpIGtoaSBuaMOibiBi4bqjbiBu4buZaSBi4buZOyBow6N5IHPhu60gZOG7pW5nIGZpbGU6Ly8gxJHhu4MgdGhheSB0aOG6vy4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3OTUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OTgKK21zZ2lkICItLWxvY2FsIGlzIGlnbm9yZWQiCittc2dzdHIgIi0tbG9jYWwgYuG7iyBs4budIMSRaSIKKworIzogYnVpbHRpbi9jbG9uZS5jOjgwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJkZXN0aW5hdGlvbiBwYXRoICclcycgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhbiBlbXB0eSBkaXJlY3RvcnkuIgogbXNnc3RyICLEkcaw4budbmcgZOG6q24gxJHDrWNoIOKAnCVz4oCdIMSRw6MgY8OzIHThu6sgdHLGsOG7m2MgdsOgIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IHRoxrAgbeG7pWMgcuG7l25nLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgwNQorIzogYnVpbHRpbi9jbG9uZS5jOjgxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJ3b3JraW5nIHRyZWUgJyVzJyBhbHJlYWR5IGV4aXN0cy4iCiBtc2dzdHIgImPDonkgbMOgbSB2aeG7h2Mg4oCcJXPigJ0gxJHDoyBz4bq1biB04buTbiB04bqhaSBy4buTaS4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MTggYnVpbHRpbi9jbG9uZS5jOjgzMAorIzogYnVpbHRpbi9jbG9uZS5jOjgzMSBidWlsdGluL2Nsb25lLmM6ODQzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgbGVhZGluZyBkaXJlY3RvcmllcyBvZiAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdOG6oW8gY8OhYyB0aMawIG3hu6VjIGThuqtuIMSR4bqndSBj4bunYSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjgyMQorIzogYnVpbHRpbi9jbG9uZS5jOjgzNAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIHdvcmsgdHJlZSBkaXIgJyVzJy4iCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyBjw6J5IHRoxrAgbeG7pWMgbMOgbSB2aeG7h2MgZGlyIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg0MAorIzogYnVpbHRpbi9jbG9uZS5jOjg1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJDbG9uaW5nIGludG8gYmFyZSByZXBvc2l0b3J5ICclcycuLi5cbiIKIG1zZ3N0ciAixJBhbmcgbmjDom4gYuG6o24gdGjDoG5oIGtobyBjaOG7qWEgYmFyZSDigJwlc+KAnS4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQyCisjOiBidWlsdGluL2Nsb25lLmM6ODU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byAnJXMnLi4uXG4iCiBtc2dzdHIgIsSQYW5nIG5ow6JuIGLhuqNuIHRow6BuaCDigJwlc+KAnS4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODc3CisjOiBidWlsdGluL2Nsb25lLmM6ODkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRvbid0IGtub3cgaG93IHRvIGNsb25lICVzIgogbXNnc3RyICJLaMO0bmcgYmnhur90IGzDoG0gY8OhY2ggbsOgbyDEkeG7gyBuaMOibiBi4bqjbiAoY2xvbmUpICVzIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTI2CisjOiBidWlsdGluL2Nsb25lLmM6OTQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW90ZSBicmFuY2ggJXMgbm90IGZvdW5kIGluIHVwc3RyZWFtICVzIgogbXNnc3RyICJOaMOhbmggbcOheSBjaOG7pyAlcyBraMO0bmcgdMOsbSB0aOG6pXkgdHJvbmcgdGjGsOG7o25nIG5ndeG7k24gKHVwc3RyZWFtKSAlcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkzMworIzogYnVpbHRpbi9jbG9uZS5jOjk0OQogbXNnaWQgIllvdSBhcHBlYXIgdG8gaGF2ZSBjbG9uZWQgYW4gZW1wdHkgcmVwb3NpdG9yeS4iCiBtc2dzdHIgIkLhuqFuIGjDrG5oIG5oxrAgbMOgIMSRw6MgbmjDom4gYuG6o24gbeG7mXQga2hvIHRy4buRbmcgcuG7l25nLiIKIApAQCAtMzcxMCwxNSArMzkyNywxNSBAQAogbXNnaWQgIi0tY29tbWFuZCBtdXN0IGJlIHRoZSBmaXJzdCBhcmd1bWVudCIKIG1zZ3N0ciAiLS1jb21tYW5kIHBo4bqjaSBsw6AgxJHhu5FpIHPhu5EgxJHhuqd1IHRpw6puIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM0CisjOiBidWlsdGluL2NvbW1pdC5jOjM1CiBtc2dpZCAiZ2l0IGNvbW1pdCBbb3B0aW9uc10gWy0tXSA8cGF0aHNwZWM+Li4uIgogbXNnc3RyICJnaXQgY29tbWl0IFtjw6FjLXTDuXktY2jhu41uXSBbLS1dIDxwYXRoc3BlYz4uLi4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDAKIG1zZ2lkICJnaXQgc3RhdHVzIFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCiBtc2dzdHIgImdpdCBzdGF0dXMgW2PDoWMtdMO5eS1jaOG7jW5dIFstLV0gPHBhdGhzcGVjPi4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0NAorIzogYnVpbHRpbi9jb21taXQuYzo0NQogbXNnaWQgIiIKICJZb3VyIG5hbWUgYW5kIGVtYWlsIGFkZHJlc3Mgd2VyZSBjb25maWd1cmVkIGF1dG9tYXRpY2FsbHkgYmFzZWRcbiIKICJvbiB5b3VyIHVzZXJuYW1lIGFuZCBob3N0bmFtZS4gUGxlYXNlIGNoZWNrIHRoYXQgdGhleSBhcmUgYWNjdXJhdGUuXG4iCkBAIC0zNzQ2LDcgKzM5NjMsNyBAQAogIlxuIgogIiAgICBnaXQgY29tbWl0IC0tYW1lbmQgLS1yZXNldC1hdXRob3JcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1NgorIzogYnVpbHRpbi9jb21taXQuYzo1NwogbXNnaWQgIiIKICJZb3UgYXNrZWQgdG8gYW1lbmQgdGhlIG1vc3QgcmVjZW50IGNvbW1pdCwgYnV0IGRvaW5nIHNvIHdvdWxkIG1ha2VcbiIKICJpdCBlbXB0eS4gWW91IGNhbiByZXBlYXQgeW91ciBjb21tYW5kIHdpdGggLS1hbGxvdy1lbXB0eSwgb3IgeW91IGNhblxuIgpAQCAtMzc1OSw3ICszOTc2LDcgQEAKICJob+G6t2MgbMOgIGLhuqFuIGfhu6EgYuG7jyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gbeG7mXQgY8OhY2ggaG/DoG4gdG/DoG4gYuG6sW5nIGzhu4duaDpcbiIKICJcImdpdCByZXNldCBIRUFEXlwiLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxCisjOiBidWlsdGluL2NvbW1pdC5jOjYyCiBtc2dpZCAiIgogIlRoZSBwcmV2aW91cyBjaGVycnktcGljayBpcyBub3cgZW1wdHksIHBvc3NpYmx5IGR1ZSB0byBjb25mbGljdCByZXNvbHV0aW9uLlxuIgogIklmIHlvdSB3aXNoIHRvIGNvbW1pdCBpdCBhbnl3YXksIHVzZTpcbiIKQEAgLTM3NzYsOTcgKzM5OTMsOTcgQEAKICJcbiIKICJO4bq/dSBraMO0bmcsIGjDo3kgdGjhu60gZMO5bmcg4oCcZ2l0IHJlc2V04oCdXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MjYwCisjOiBidWlsdGluL2NvbW1pdC5jOjI2NQogbXNnaWQgImZhaWxlZCB0byB1bnBhY2sgSEVBRCB0cmVlIG9iamVjdCIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHRow6FvIGThu6EgSEVBRCDEkeG7kWkgdMaw4bujbmcgY8OieSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzA3CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgaW5kZXgiCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyBi4bqjbmcgbeG7pWMgbOG7pWMgdOG6oW0gdGjhu51pIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjMwOAorIzogYnVpbHRpbi9jb21taXQuYzozMTMKIG1zZ2lkICJpbnRlcmFjdGl2ZSBhZGQgZmFpbGVkIgogbXNnc3RyICJ2aeG7h2MgdGjDqm0gdMawxqFuZyB0w6FjIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM0MSBidWlsdGluL2NvbW1pdC5jOjM2MiBidWlsdGluL2NvbW1pdC5jOjQxMgorIzogYnVpbHRpbi9jb21taXQuYzozNDYgYnVpbHRpbi9jb21taXQuYzozNjcgYnVpbHRpbi9jb21taXQuYzo0MTcKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3X2luZGV4IGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpIChuZXdfaW5kZXgpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5MworIzogYnVpbHRpbi9jb21taXQuYzozOTgKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBtZXJnZS4iCiBtc2dzdHIgIiIKICJraMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiB2aeG7h2MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBj4bulYyBi4buZIHRyb25nIGtoaSDEkWFuZyDEkcaw4bujYyBow7JhICIKICJ0cuG7mW4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5NQorIzogYnVpbHRpbi9jb21taXQuYzo0MDAKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBjaGVycnktcGljay4iCiBtc2dzdHIgIiIKICJraMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiB2aeG7h2MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBi4buZIHBo4bqtbiB0cm9uZyBraGkgxJFhbmcgY2hlcnJ5LSIKICJwaWNrLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MDUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDEwCiBtc2dpZCAiY2Fubm90IHJlYWQgdGhlIGluZGV4IgogbXNnc3RyICJraMO0bmcgxJHhu41jIMSRxrDhu6NjIGLhuqNuZyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo0MjUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDMwCiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIHRlbXBvcmFyeSBpbmRleCBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZ2hpIHThuq1wIHRpbiBsxrB1IGLhuqNuZyBt4bulYyBs4bulYyB04bqhbSB0aOG7nWkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTEzIGJ1aWx0aW4vY29tbWl0LmM6NTE5CisjOiBidWlsdGluL2NvbW1pdC5jOjUyMSBidWlsdGluL2NvbW1pdC5jOjUyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIGNvbW1pdDogJXMiCiBtc2dzdHIgImzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jDtG5nIGjhu6NwIGzhu4c6ICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjU0MgorIzogYnVpbHRpbi9jb21taXQuYzo1NDkKIG1zZ2lkICJtYWxmb3JtZWQgLS1hdXRob3IgcGFyYW1ldGVyIgogbXNnc3RyICLEkeG7kWkgc+G7kSAtLWF1dGhvciBi4buLIGThu4sgaMOsbmgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCisjOiBidWlsdGluL2NvbW1pdC5jOjU2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaWRlbnQgc3RyaW5nOiAnJXMnIgogbXNnc3RyICJDaHXhu5dpIHRo4buldCBs4buBIMSR4bqndSBkw7JuZyBk4buLIGjDrG5oOiDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MDAgYnVpbHRpbi9jb21taXQuYzo2MzMgYnVpbHRpbi9jb21taXQuYzo5NTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjA3IGJ1aWx0aW4vY29tbWl0LmM6NjQwIGJ1aWx0aW4vY29tbWl0LmM6OTYzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBsb29rdXAgY29tbWl0ICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdMOsbSBraeG6v20gY29tbWl0IChs4bqnbiBjaHV54buDbiBnaWFvKSAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTIgYnVpbHRpbi9zaG9ydGxvZy5jOjI3MAorIzogYnVpbHRpbi9jb21taXQuYzo2MTkgYnVpbHRpbi9zaG9ydGxvZy5jOjI3MQogIywgYy1mb3JtYXQKIG1zZ2lkICIocmVhZGluZyBsb2cgbWVzc2FnZSBmcm9tIHN0YW5kYXJkIGlucHV0KVxuIgogbXNnc3RyICIoxJFhbmcgxJHhu41jIHRow7RuZyDEkWnhu4dwIG5o4bqtdCBrw70gdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluKVxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYxNAorIzogYnVpbHRpbi9jb21taXQuYzo2MjEKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBsb2cgZnJvbSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyBuaOG6rXQga8O9IHThu6sgxJHhuqd1IHbDoG8gdGnDqnUgY2h14bqpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjI1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmaWxlICclcyciCiBtc2dzdHIgImtow7RuZyDEkeG7jWMgxJHGsOG7o2MgdOG7h3Agbmjhuq10IGvDvSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MjQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjMxCiBtc2dpZCAiY29tbWl0IGhhcyBlbXB0eSBtZXNzYWdlIgogbXNnc3RyICJs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpIGPDsyBnaGkgY2jDuiB0cuG7kW5nIHLhu5duZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ3CiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIE1FUkdFX01TRyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjUxCiBtc2dpZCAiY291bGQgbm90IHJlYWQgU1FVQVNIX01TRyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY0OAorIzogYnVpbHRpbi9jb21taXQuYzo2NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4buNYyDigJwlc+KAnS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzA5CisjOiBidWlsdGluL2NvbW1pdC5jOjcxNgogbXNnaWQgImNvdWxkIG5vdCB3cml0ZSBjb21taXQgdGVtcGxhdGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgbeG6q3UgY29tbWl0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcyMAorIzogYnVpbHRpbi9jb21taXQuYzo3MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMzg4MSw3ICs0MDk4LDcgQEAKICJcdCVzXG4iCiAidsOgIHRo4butIGzhuqFpLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcyNQorIzogYnVpbHRpbi9jb21taXQuYzo3MzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlxuIgpAQCAtMzg5Niw3ICs0MTEzLDcgQEAKICJcdCVzXG4iCiAidsOgIHRo4butIGzhuqFpLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjczNworIzogYnVpbHRpbi9jb21taXQuYzo3NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKQEAgLTM5MDcsNyArNDEyNCw3IEBACiAiYuG6r3QgxJHhuqd1IGLhurFuZyDigJwlY+KAnSBz4bq9IMSRxrDhu6NjIGLhu48gcXVhLCBu4bq/dSBwaOG6p24gY2jDuiB0aMOtY2ggcuG7l25nIHPhur0gaOG7p3kgYuG7jyBs4bqnbiAiCiAiY2h1eeG7g24gZ2lhbyAoY29tbWl0KS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3NDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJQbGVhc2UgZW50ZXIgdGhlIGNvbW1pdCBtZXNzYWdlIGZvciB5b3VyIGNoYW5nZXMuIExpbmVzIHN0YXJ0aW5nXG4iCkBAIC0zOTE5LDM3MiArNDEzNiwzNzIgQEAKICJi4bqvdCDEkeG6p3UgYuG6sW5nIOKAnCVj4oCdIHPhur0gxJHGsOG7o2MgYuG7jyBxdWE7IGLhuqFuIGPDsyB0aOG7gyB4w7NhIGNow7puZyDEkWkgbuG6v3UgbXXhu5FuIHRo4bq/LlxuIgogIlBo4bqnbiBjaMO6IHRow61jaCBuw6B5IG7hur91IHRy4buRbmcgcuG7l25nIHPhur0gaOG7p3kgYuG7jyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpLlxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc1NQorIzogYnVpbHRpbi9jb21taXQuYzo3NjIKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNBdXRob3I6ICAgICVzIgogbXNnc3RyICIlc1TDoWMgZ2nhuqM6ICAgICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc2MgorIzogYnVpbHRpbi9jb21taXQuYzo3NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXNDb21taXR0ZXI6ICVzIgogbXNnc3RyICIlc05nxrDhu51pIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk6ICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjc4MgorIzogYnVpbHRpbi9jb21taXQuYzo3ODkKIG1zZ2lkICJDYW5ub3QgcmVhZCBpbmRleCIKIG1zZ3N0ciAia2jDtG5nIMSR4buNYyDEkcaw4bujYyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODE5CisjOiBidWlsdGluL2NvbW1pdC5jOjgyNgogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgeMOieSBk4buxbmcgY8OieSIKIAotIzogYnVpbHRpbi9jb21taXQuYzo4MzQgYnVpbHRpbi90YWcuYzozNTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6ODQxIGJ1aWx0aW4vdGFnLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlBsZWFzZSBzdXBwbHkgdGhlIG1lc3NhZ2UgdXNpbmcgZWl0aGVyIC1tIG9yIC1GIG9wdGlvbi5cbiIKIG1zZ3N0ciAiWGluIGjDo3kgw6FwIGThu6VuZyB0aMO0bmcgxJFp4buHcCBz4butIGThu6VuZyBob+G6t2MgbMOgIHTDuXkgY2jhu41uIC1tIGhv4bq3YyBsw6AgLUYuXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTMxCisjOiBidWlsdGluL2NvbW1pdC5jOjkzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgdMOhYyBnaeG6oyBjw7Mgc+G6tW4gduG7m2kg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAorIzogYnVpbHRpbi9jb21taXQuYzo5NTMgYnVpbHRpbi9jb21taXQuYzoxMTg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdW50cmFja2VkIGZpbGVzIG1vZGUgJyVzJyIKIG1zZ3N0ciAiQ2jhur8gxJHhu5kgY2hvIGPDoWMgdOG6rXAgdGluIGtow7RuZyBi4buLIHRoZW8gduG6v3Qga2jDtG5nIGjhu6NwIGzhu4cg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTc2CisjOiBidWlsdGluL2NvbW1pdC5jOjk5MAorbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiaGFpIHTDuXkgY2jhu41uIC1sb25nIHbDoCAteiBraMO0bmcgdMawxqFuZyB0aMOtY2ggduG7m2kgbmhhdSIKKworIzogYnVpbHRpbi9jb21taXQuYzoxMDIwCiBtc2dpZCAiVXNpbmcgYm90aCAtLXJlc2V0LWF1dGhvciBhbmQgLS1hdXRob3IgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiU+G7rSBk4bulbmcgY+G6oyBoYWkgdMO5eSBjaOG7jW4gLS1yZXNldC1hdXRob3IgdsOgIC0tYXV0aG9yIGtow7RuZyBo4bujcCBsw70iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTg3CisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzEKIG1zZ2lkICJZb3UgaGF2ZSBub3RoaW5nIHRvIGFtZW5kLiIKIG1zZ3N0ciAiS2jDtG5nIGPDsyBnw6wgxJHhu4MgYW1lbmQgKHR1IGLhu5UpIGPhuqMuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5MAorIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CiBtc2dpZCAiWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UgLS0gY2Fubm90IGFtZW5kLiIKIG1zZ3N0ciAiIgogIkLhuqFuIMSRYW5nIOG7nyBnaeG7r2EgY+G7p2EgcXXDoSB0csOsbmggaMOyYSB0cuG7mW4gLS0ga2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gYW1lbmQgKHR1IGLhu5UpLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5OTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNgogbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoZXJyeS1waWNrIC0tIGNhbm5vdCBhbWVuZC4iCiBtc2dzdHIgIiIKICJC4bqhbiDEkWFuZyDhu58gZ2nhu69hIGPhu6dhIHF1w6EgdHLDrG5oIGNoZXJyeS1waWNrIC0tIGtow7RuZyB0aOG7gyB0aOG7sWMgaGnhu4duIGFtZW5kICh0dSAiCiAiYuG7lSkuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NQorIzogYnVpbHRpbi9jb21taXQuYzoxMDM5CiBtc2dpZCAiT3B0aW9ucyAtLXNxdWFzaCBhbmQgLS1maXh1cCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAiQ8OhYyB0w7l5IGNo4buNbiAtLXNxdWFzaCB2w6AgLS1maXh1cCBraMO0bmcgdGjhu4Mgc+G7rSBk4bulbmcgY8O5bmcgduG7m2kgbmhhdSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNDkKIG1zZ2lkICJPbmx5IG9uZSBvZiAtYy8tQy8tRi8tLWZpeHVwIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiQ2jhu4kgbeG7mXQgdMO5eSBjaOG7jW4gdHJvbmcgc+G7kSAtYy8tQy8tRi8tLWZpeHVwIMSRxrDhu6NjIHPhu60gZOG7pW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MQogbXNnaWQgIk9wdGlvbiAtbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtYy8tQy8tRi8tLWZpeHVwLiIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gLW0ga2jDtG5nIHRo4buDIMSRxrDhu6NjIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgLWMvLUMvLUYvLS1maXh1cC4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAxNQorIzogYnVpbHRpbi9jb21taXQuYzoxMDU5CiBtc2dpZCAiLS1yZXNldC1hdXRob3IgY2FuIGJlIHVzZWQgb25seSB3aXRoIC1DLCAtYyBvciAtLWFtZW5kLiIKIG1zZ3N0ciAiIgogIi0tcmVzZXQtYXV0aG9yIGNo4buJIGPDsyB0aOG7gyDEkcaw4bujYyBz4butIGThu6VuZyB24bubaSB0w7l5IGNo4buNbiAtQywgLWMgaGF5IC0tYW1lbmQuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA3NgogbXNnaWQgIk9ubHkgb25lIG9mIC0taW5jbHVkZS8tLW9ubHkvLS1hbGwvLS1pbnRlcmFjdGl2ZS8tLXBhdGNoIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAiIgogIkNo4buJIG3hu5l0IHRyb25nIGPDoWMgdMO5eSBjaOG7jW4gLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggxJHGsOG7o2MgIgogInPhu60gZOG7pW5nLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDM0CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNzgKIG1zZ2lkICJObyBwYXRocyB3aXRoIC0taW5jbHVkZS8tLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIktow7RuZyDEkcaw4budbmcgZOG6q24gduG7m2kgY8OhYyB0w7l5IGNo4buNbiAtLWluY2x1ZGUvLS1vbmx5IGtow7RuZyBo4bujcCBsw70uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA4MAogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIkdp4buPaS4uLiAgdHUgYuG7lSBjw6FpIGN14buRaSB24bubaSBi4bqjbmcgbeG7pWMgbOG7pWMgcGhpIG5naMSpYS4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAorIzogYnVpbHRpbi9jb21taXQuYzoxMDgyCiBtc2dpZCAiRXhwbGljaXQgcGF0aHMgc3BlY2lmaWVkIHdpdGhvdXQgLWkgbm9yIC1vOyBhc3N1bWluZyAtLW9ubHkgcGF0aHMuLi4iCiBtc2dzdHIgIiIKICJOaOG7r25nIMSRxrDhu51uZyBk4bqrbiByw7UgcsOgbmcgxJHGsOG7o2MgY2jhu4kgcmEga2jDtG5nIGPDsyB0w7l5IGNo4buNbiAtaSBjxaluZyBraMO0bmcgLW87IMSRYW5nICIKICJnaeG6oyDEkeG7i25oIC0tb25seSBuaOG7r25nLcSRxrDhu51uZy1k4bqrbi4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDQ4IGJ1aWx0aW4vdGFnLmM6NTc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwOTIgYnVpbHRpbi90YWcuYzo1NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBjbGVhbnVwIG1vZGUgJXMiCiBtc2dzdHIgIkNo4bq/IMSR4buZIGThu41uIGThurlwIGtow7RuZyBo4bujcCBs4buHICVzIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA5NwogbXNnaWQgIlBhdGhzIHdpdGggLWEgZG9lcyBub3QgbWFrZSBzZW5zZS4iCiBtc2dzdHIgIkPDoWMgxJHGsOG7nW5nIGThuqtuIHbhu5tpIHTDuXkgY2jhu41uIC1hIGtow7RuZyBo4bujcCBsw70uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTkgYnVpbHRpbi9jb21taXQuYzoxMTk0Ci1tc2dpZCAiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIgotbXNnc3RyICJoYWkgdMO5eSBjaOG7jW4gLWxvbmcgdsOgIC16IGtow7RuZyB0xrDGoW5nIHRow61jaCB24bubaSBuaGF1IgotCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNTQgYnVpbHRpbi9jb21taXQuYzoxMzkwCisjOiBidWlsdGluL2NvbW1pdC5jOjEyMDMgYnVpbHRpbi9jb21taXQuYzoxNDM2CiBtc2dpZCAic2hvdyBzdGF0dXMgY29uY2lzZWx5IgogbXNnc3RyICJoaeG7g24gdGjhu4sgdHLhuqFuZyB0aMOhaSDhu58gZOG6oW5nIHPDumMgdMOtY2giCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1NiBidWlsdGluL2NvbW1pdC5jOjEzOTIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwNSBidWlsdGluL2NvbW1pdC5jOjE0MzgKIG1zZ2lkICJzaG93IGJyYW5jaCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRow7RuZyB0aW4gbmjDoW5oIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNTggYnVpbHRpbi9jb21taXQuYzoxMzk0IGJ1aWx0aW4vcHVzaC5jOjQyNgorIzogYnVpbHRpbi9jb21taXQuYzoxMjA3IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MCBidWlsdGluL3B1c2guYzo0NTIKIG1zZ2lkICJtYWNoaW5lLXJlYWRhYmxlIG91dHB1dCIKIG1zZ3N0ciAia+G6v3QgeHXhuqV0IGThuqFuZyBtw6F5LWPDsy10aOG7gy3EkeG7jWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2MSBidWlsdGluL2NvbW1pdC5jOjEzOTYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxMCBidWlsdGluL2NvbW1pdC5jOjE0NDIKIG1zZ2lkICJzaG93IHN0YXR1cyBpbiBsb25nIGZvcm1hdCAoZGVmYXVsdCkiCiBtc2dzdHIgImhp4buDbiB0aOG7iyB0cuG6oW5nIHRow6FpIOG7nyDEkeG7i25oIGThuqFuZyBkw6BpICht4bq3YyDEkeG7i25oKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTY0IGJ1aWx0aW4vY29tbWl0LmM6MTM5OQorIzogYnVpbHRpbi9jb21taXQuYzoxMjEzIGJ1aWx0aW4vY29tbWl0LmM6MTQ0NQogbXNnaWQgInRlcm1pbmF0ZSBlbnRyaWVzIHdpdGggTlVMIgogbXNnc3RyICJjaOG6pW0gZOG7qXQgY8OhYyBt4bulYyBi4bqxbmcgTlVMIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjYgYnVpbHRpbi9jb21taXQuYzoxNDAyIGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NTkKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjIgYnVpbHRpbi90YWcuYzo0NTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxNSBidWlsdGluL2NvbW1pdC5jOjE0NDggYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MCBidWlsdGluL3RhZy5jOjQ1OQogbXNnaWQgIm1vZGUiCiBtc2dzdHIgImNo4bq/IMSR4buZIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjcgYnVpbHRpbi9jb21taXQuYzoxNDAyCisjOiBidWlsdGluL2NvbW1pdC5jOjEyMTYgYnVpbHRpbi9jb21taXQuYzoxNDQ4CiBtc2dpZCAic2hvdyB1bnRyYWNrZWQgZmlsZXMsIG9wdGlvbmFsIG1vZGVzOiBhbGwsIG5vcm1hbCwgbm8uIChEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCiAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSAgZOG6pXUgduG6v3QsIGPDoWMgY2jhur8gxJHhu5kgdMO5eSBjaOG7jW46ICBhbGwsICIKICJub3JtYWwsIG5vLiAoTeG6t2MgxJHhu4tuaDogYWxsKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTcwCisjOiBidWlsdGluL2NvbW1pdC5jOjEyMTkKIG1zZ2lkICJzaG93IGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiDhuqluIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzEgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMjIwIHBhcnNlLW9wdGlvbnMuaDoxNTQKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICJraGkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MgorIzogYnVpbHRpbi9jb21taXQuYzoxMjIxCiBtc2dpZCAiIgogImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgogIihEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCi0iYuG7jyBxdWEgY8OhYyB0aGF5IMSR4buVaSB0cm9uZyBtw7QtxJF1biBjb24sIHTDuXkgY2jhu41uIGtoaTogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCisiYuG7jyBxdWEgY8OhYyB0aGF5IMSR4buVaSB0cm9uZyBtw7QtxJF1bi1jb24sIHTDuXkgY2jhu41uIGtoaTogYWxsLCBkaXJ0eSwgdW50cmFja2VkLiAiCiAiKE3hurdjIMSR4buLbmg6IGFsbCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAorIzogYnVpbHRpbi9jb21taXQuYzoxMjIzCiBtc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGRhbmggc8OhY2ggY8OhYyB04bqtcC10aW4gY2jGsGEgxJHGsOG7o2MgdGhlbyBkw7VpIHRyb25nIGPDoWMgY+G7mXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI0OAorIzogYnVpbHRpbi9jb21taXQuYzoxMjk0CiBtc2dpZCAiY291bGRuJ3QgbG9vayB1cCBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHTDrG0gdGjhuqV5IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbeG7m2kgaMahbiDEkcOjIMSRxrDhu6NjIHThuqFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5NgogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSBuZXdseSBjcmVhdGVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBjw7ogcGjDoXAgY+G7p2EgxJHhu5FpIHTGsOG7o25nIGNodXnhu4NuIGdpYW8gbeG7m2kgaMahbiDEkcOjIMSRxrDhu6NjIHThuqFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyOTEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTMzNwogbXNnaWQgImRldGFjaGVkIEhFQUQiCiBtc2dzdHIgIsSRw6MgcuG7nWkga2jhu49pIEhFQUQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5MworIzogYnVpbHRpbi9jb21taXQuYzoxMzM5CiBtc2dpZCAiIChyb290LWNvbW1pdCkiCiBtc2dzdHIgIiAocm9vdC1jb21taXQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNgogbXNnaWQgInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiCiBtc2dzdHIgImtow7RuZyBoaeG7g24gdGjhu4sgdOG7lW5nIGvhur90IHNhdSBraGkgY2h1eeG7g24gZ2lhbyB0aMOgbmggY8O0bmciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2MQorIzogYnVpbHRpbi9jb21taXQuYzoxNDA3CiBtc2dpZCAic2hvdyBkaWZmIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgogbXNnc3RyICJoaeG7g24gdGjhu4sgc+G7sSBraMOhYyBiaeG7h3QgdHJvbmcgbeG6q3UgdGluIG5o4bqvbiBjaHV54buDbiBnaWFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjMKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwOQogbXNnaWQgIkNvbW1pdCBtZXNzYWdlIG9wdGlvbnMiCiBtc2dzdHIgIkPDoWMgdMO5eSBjaOG7jW4gZ2hpIGNow7ogY29tbWl0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjQgYnVpbHRpbi90YWcuYzo0NTcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMCBidWlsdGluL3RhZy5jOjQ1NwogbXNnaWQgInJlYWQgbWVzc2FnZSBmcm9tIGZpbGUiCiBtc2dzdHIgIsSR4buNYyBjaMO6IHRow61jaCB04burIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTEKIG1zZ2lkICJhdXRob3IiCiBtc2dzdHIgInTDoWMgZ2nhuqMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NQorIzogYnVpbHRpbi9jb21taXQuYzoxNDExCiBtc2dpZCAib3ZlcnJpZGUgYXV0aG9yIGZvciBjb21taXQiCiBtc2dzdHIgImdoaSDEkcOoIHTDoWMgZ2nhuqMgY2hvIGNvbW1pdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY2IGJ1aWx0aW4vZ2MuYzoxNzgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMiBidWlsdGluL2djLmM6MTc4CiBtc2dpZCAiZGF0ZSIKIG1zZ3N0ciAibmfDoHkgdGjDoW5nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMgogbXNnaWQgIm92ZXJyaWRlIGRhdGUgZm9yIGNvbW1pdCIKIG1zZ3N0ciAiZ2hpIMSRw6ggbmfDoHkgdGjDoW5nIGNobyBjb21taXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NyBidWlsdGluL21lcmdlLmM6MjA4IGJ1aWx0aW4vbm90ZXMuYzo1MzMKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTAgYnVpbHRpbi90YWcuYzo0NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMyBidWlsdGluL21lcmdlLmM6MjIzIGJ1aWx0aW4vbm90ZXMuYzo0MDUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NjIgYnVpbHRpbi90YWcuYzo0NTUKIG1zZ2lkICJtZXNzYWdlIgogbXNnc3RyICJ0aMO0bmcgxJFp4buHcCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY3CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTMKIG1zZ2lkICJjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAiY2jDuiB0aMOtY2ggY+G7p2EgbOG6p24gY29tbWl0IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNAogbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAiZMO5bmcgbOG6oWkgY8OhYyBnaGkgY2jDuiB04burIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgxJHDoyBjaG8gbmjGsG5nIGPDsyBjaG8gc+G7rWEgY2jhu69hIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNQogbXNnaWQgInJldXNlIG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICJkw7luZyBs4bqhaSBjw6FjIGdoaSBjaMO6IHThu6sgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzcwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTYKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBmaXh1cCBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICIiCiAiZMO5bmcgZ2hpIGNow7ogY8OzIMSR4buLbmggZOG6oW5nIGF1dG9zcXVhc2ggxJHhu4Mgc+G7rWEgY2jhu69hIGzhuqduIGNodXnhu4NuIGdpYW8gxJHDoyBjaOG7iSByYSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzcxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTcKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBzcXVhc2ggc3BlY2lmaWVkIGNvbW1pdCIKIG1zZ3N0ciAiIgogImTDuW5nIGzhu51pIG5o4bqvbiBjw7MgxJHhu4tuaCBk4bqhbmcgdOG7sSDEkeG7mW5nIG7DqW4gxJHhu4MgbsOpbiBs4bqhaSBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gxJHDoyBjaOG7iSAiCiAicmEiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MgorIzogYnVpbHRpbi9jb21taXQuYzoxNDE4CiBtc2dpZCAidGhlIGNvbW1pdCBpcyBhdXRob3JlZCBieSBtZSBub3cgKHVzZWQgd2l0aCAtQy8tYy8tLWFtZW5kKSIKIG1zZ3N0ciAiIgogImzhuqduIGNodXnhu4NuIGdpYW8gbmjhuq1uIHTDtGkgbMOgIHTDoWMgZ2nhuqMgKMSRxrDhu6NjIGTDuW5nIHbhu5tpIHTDuXkgY2jhu41uIC1DLy1jLy0tYW1lbmQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzMgYnVpbHRpbi9sb2cuYzoxMTEzIGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTkgYnVpbHRpbi9sb2cuYzoxMTYwIGJ1aWx0aW4vcmV2ZXJ0LmM6MTExCiBtc2dpZCAiYWRkIFNpZ25lZC1vZmYtYnk6IgogbXNnc3RyICJ0aMOqbSBkw7JuZyBTaWduZWQtb2ZmLWJ5OiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc0CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjAKIG1zZ2lkICJ1c2Ugc3BlY2lmaWVkIHRlbXBsYXRlIGZpbGUiCiBtc2dzdHIgInPhu60gZOG7pW5nIHThuq1wIHRpbiBt4bqrdSDEkcOjIGNobyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjEKIG1zZ2lkICJmb3JjZSBlZGl0IG9mIGNvbW1pdCIKIG1zZ3N0ciAiw6lwIGJ14buZYyBz4butYSBs4bqnbiBjb21taXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgorIzogYnVpbHRpbi9jb21taXQuYzoxNDIyCiBtc2dpZCAiZGVmYXVsdCIKIG1zZ3N0ciAibeG6t2MgxJHhu4tuaCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc2IGJ1aWx0aW4vdGFnLmM6NDYwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjIgYnVpbHRpbi90YWcuYzo0NjAKIG1zZ2lkICJob3cgdG8gc3RyaXAgc3BhY2VzIGFuZCAjY29tbWVudHMgZnJvbSBtZXNzYWdlIgogbXNnc3RyICJsw6BtIHRo4bq/IG7DoG8gxJHhu4MgY+G6r3QgYuG7jyBraG/huqNuZyB0cuG6r25nIHbDoCAjZ2hpY2jDuiB04burIG3huql1IHRpbiBuaOG6r24iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NworIzogYnVpbHRpbi9jb21taXQuYzoxNDIzCiBtc2dpZCAiaW5jbHVkZSBzdGF0dXMgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCiBtc2dzdHIgImJhbyBn4buTbSBjw6FjIHRy4bqhbmcgdGjDoWkgZ2hpIG3huqt1IGdoaSBjaMO6IGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjQgYnVpbHRpbi9tZXJnZS5jOjIzMCBidWlsdGluL3RhZy5jOjQ2MQogbXNnaWQgImtleSBpZCIKIG1zZ3N0ciAiaWQga2jDs2EiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OSBidWlsdGluL21lcmdlLmM6MjE2CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjUgYnVpbHRpbi9tZXJnZS5jOjIzMQogbXNnaWQgIkdQRyBzaWduIGNvbW1pdCIKIG1zZ3N0ciAia8O9IGzhuqduIGNvbW1pdCBkw7luZyBHUEciCiAKICMuIGVuZCBjb21taXQgbWVzc2FnZSBvcHRpb25zCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQyOAogbXNnaWQgIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIgogbXNnc3RyICJDw6FjIHTDuXkgbuG7mWkgZHVuZyBnaGkgY2jDuiBjb21taXQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MworIzogYnVpbHRpbi9jb21taXQuYzoxNDI5CiBtc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgogbXNnc3RyICJjaHV54buDbiBnaWFvIHThuqV0IGPhuqMgY8OhYyB04bqtcCB0aW4gY8OzIHRoYXkgxJHhu5VpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQzMAogbXNnaWQgImFkZCBzcGVjaWZpZWQgZmlsZXMgdG8gaW5kZXggZm9yIGNvbW1pdCIKIG1zZ3N0ciAidGjDqm0gY8OhYyB04bqtcCB0aW4gxJHDoyBjaOG7iSByYSB2w6BvIGLhuqNuZyBt4bulYyBs4bulYyDEkeG7gyBjaHV54buDbiBnaWFvIChjb21taXQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQzMQogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGZpbGVzIgogbXNnc3RyICJ0aMOqbSBjw6FjIHThuq1wLXRpbiBi4bqxbmcgdMawxqFuZyB0w6FjIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQzMgogbXNnaWQgImludGVyYWN0aXZlbHkgYWRkIGNoYW5nZXMiCiBtc2dzdHIgInRow6ptIGPDoWMgdGhheSDEkeG7lWkgYuG6sW5nIHTGsMahbmcgdMOhYyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg3CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzMKIG1zZ2lkICJjb21taXQgb25seSBzcGVjaWZpZWQgZmlsZXMiCiBtc2dzdHIgImNo4buJIGNodXnhu4NuIGdpYW8gY8OhYyB04bqtcCB0aW4gxJHDoyBjaOG7iSByYSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzQKIG1zZ2lkICJieXBhc3MgcHJlLWNvbW1pdCBob29rIgogbXNnc3RyICJ2w7JuZyBxdWEgbcOzYyAoaG9vaykgcHJlLWNvbW1pdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzUKIG1zZ2lkICJzaG93IHdoYXQgd291bGQgYmUgY29tbWl0dGVkIgogbXNnc3RyICJoaeG7g24gdGjhu4sgeGVtIGPDoWkgZ8OsIGPDsyB0aOG7gyDEkcaw4bujYyBjaHV54buDbiBnaWFvIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0NgogbXNnaWQgImFtZW5kIHByZXZpb3VzIGNvbW1pdCIKIG1zZ3N0ciAidHUgYuG7lSAoYW1lbmQpIGzhuqduIGNvbW1pdCB0csaw4bubYyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDAxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDcKIG1zZ2lkICJieXBhc3MgcG9zdC1yZXdyaXRlIGhvb2siCiBtc2dzdHIgInbDsm5nIHF1YSBtw7NjIChob29rKSBwb3N0LXJld3JpdGUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNgorIzogYnVpbHRpbi9jb21taXQuYzoxNDUyCiBtc2dpZCAib2sgdG8gcmVjb3JkIGFuIGVtcHR5IGNoYW5nZSIKIG1zZ3N0ciAib2sgxJHhu4MgZ2hpIGzhuqFpIG3hu5l0IHRoYXkgxJHhu5VpIHRy4buRbmcgcuG7l25nIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ1NQogbXNnaWQgIm9rIHRvIHJlY29yZCBhIGNoYW5nZSB3aXRoIGFuIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIm9rIMSR4buDIGdoaSBjw6FjIHRoYXkgxJHhu5VpIHbhu5tpIGzhu51pIG5o4bqvbiB0cuG7kW5nIHLhu5duZyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDQxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0ODgKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgSEVBRCBjb21taXQiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBwaMOibiB0w61jaCBjb21taXQgKGzhuqduIGNodXnhu4NuIGdpYW8pIEhFQUQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ3OSBidWlsdGluL21lcmdlLmM6NTEwCisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYgYnVpbHRpbi9tZXJnZS5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyDigJwlc+KAnSDEkeG7gyDEkeG7jWMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ4NgorIzogYnVpbHRpbi9jb21taXQuYzoxNTMzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvcnJ1cHQgTUVSR0VfSEVBRCBmaWxlICglcykiCiBtc2dzdHIgIlThuq1wIHRpbiBNRVJHRV9IRUFEIHNhaSBo4buPbmcgKCVzKSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDkzCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NDAKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBNRVJHRV9NT0RFIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIE1FUkdFX01PREUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgorIzogYnVpbHRpbi9jb21taXQuYzoxNTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGNvbW1pdCBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyB0aMO0bmcgxJFp4buHcCAobWVzc2FnZSkgY29tbWl0IChs4bqnbiBjaHV54buDbiBnaWFvKTogJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUyNgorIzogYnVpbHRpbi9jb21taXQuYzoxNTczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiIgogIsSQYW5nIGLhu48gcXVhIHZp4buHYyBjaHV54buDbiBnaWFvIChjb21taXQpOyBi4bqhbiDEkcOjIGtow7RuZyBiacOqbiBzb+G6oW4gdGjDtG5nIMSRaeG7h3AgIgogIihtZXNzYWdlKS5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTMxCisjOiBidWlsdGluL2NvbW1pdC5jOjE1NzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWJvcnRpbmcgY29tbWl0IGR1ZSB0byBlbXB0eSBjb21taXQgbWVzc2FnZS5cbiIKIG1zZ3N0ciAiIgogIsSQYW5nIGLhu48gcXVhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgYuG7n2kgdsOsIHRow7RuZyDEkWnhu4dwIGPhu6dhIG7DsyB0cuG7kW5nIHLhu5duZy5cbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTQ2IGJ1aWx0aW4vbWVyZ2UuYzo4NDcgYnVpbHRpbi9tZXJnZS5jOjg3MgorIzogYnVpbHRpbi9jb21taXQuYzoxNTkzIGJ1aWx0aW4vbWVyZ2UuYzo4NjEgYnVpbHRpbi9tZXJnZS5jOjg4NgogbXNnaWQgImZhaWxlZCB0byB3cml0ZSBjb21taXQgb2JqZWN0IgogbXNnc3RyICJn4bq3cCBs4buXaSBraGkgZ2hpIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIChjb21taXQpIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NjcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTYxNAogbXNnaWQgImNhbm5vdCBsb2NrIEhFQUQgcmVmIgogbXNnc3RyICJraMO0bmcgdGjhu4Mga2jDs2EgSEVBRCByZWYgKHRoYW0gY2hp4bq/dSkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTU3MQorIzogYnVpbHRpbi9jb21taXQuYzoxNjE4CiBtc2dpZCAiY2Fubm90IHVwZGF0ZSBIRUFEIHJlZiIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCByZWYgKHRoYW0gY2hp4bq/dSkgSEVBRCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTgyCisjOiBidWlsdGluL2NvbW1pdC5jOjE2MjkKIG1zZ2lkICIiCiAiUmVwb3NpdG9yeSBoYXMgYmVlbiB1cGRhdGVkLCBidXQgdW5hYmxlIHRvIHdyaXRlXG4iCiAibmV3X2luZGV4IGZpbGUuIENoZWNrIHRoYXQgZGlzayBpcyBub3QgZnVsbCBvciBxdW90YSBpc1xuIgpAQCAtNDI5OSwxMTUgKzQ1MTYsMTIzIEBACiBtc2dpZCAiZ2l0IGNvbmZpZyBbb3B0aW9uc10iCiBtc2dzdHIgImdpdCBjb25maWcgW2PDoWMtdMO5eS1jaOG7jW5dIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjUxCisjOiBidWlsdGluL2NvbmZpZy5jOjUyCiBtc2dpZCAiQ29uZmlnIGZpbGUgbG9jYXRpb24iCiBtc2dzdHIgIlbhu4sgdHLDrSB04bqtcCB0aW4gY+G6pXUgaMOsbmgiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTIKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTMKIG1zZ2lkICJ1c2UgZ2xvYmFsIGNvbmZpZyBmaWxlIgogbXNnc3RyICLEkeG6t3QgdOG6rXAgdGluIGPhuqV1IGjDrG5oIGPhuqduIHRvw6BuIGPhu6VjIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjUzCisjOiBidWlsdGluL2NvbmZpZy5jOjU0CiBtc2dpZCAidXNlIHN5c3RlbSBjb25maWcgZmlsZSIKIG1zZ3N0ciAic+G7rSBk4bulbmcgdOG6rXAgdGluIGPhuqV1IGjDrG5oIGjhu4cgdGjhu5FuZyIKIAotIzogYnVpbHRpbi9jb25maWcuYzo1NAorIzogYnVpbHRpbi9jb25maWcuYzo1NQogbXNnaWQgInVzZSByZXBvc2l0b3J5IGNvbmZpZyBmaWxlIgogbXNnc3RyICJkw7luZyB04bqtcCB0aW4gY+G6pXUgaMOsbmggY+G7p2Ega2hvIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjU1CisjOiBidWlsdGluL2NvbmZpZy5jOjU2CiBtc2dpZCAidXNlIGdpdmVuIGNvbmZpZyBmaWxlIgogbXNnc3RyICJz4butIGThu6VuZyB04bqtcCB0aW4gY+G6pXUgaMOsbmggxJHDoyBjaG8iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTYKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTcKK21zZ2lkICJibG9iLWlkIgorbXNnc3RyICJibG9iLWlkIgorCisjOiBidWlsdGluL2NvbmZpZy5jOjU3Cittc2dpZCAicmVhZCBjb25maWcgZnJvbSBnaXZlbiBibG9iIG9iamVjdCIKK21zZ3N0ciAixJHhu41jIGPhuqV1IGjDrG5oIHThu6sgxJHhu5FpIHTGsOG7o25nIGJsb2IgxJHDoyBjaG8iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTgKIG1zZ2lkICJBY3Rpb24iCiBtc2dzdHIgIkjDoG5oIMSR4buZbmciCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTcKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTkKIG1zZ2lkICJnZXQgdmFsdWU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKIG1zZ3N0ciAibOG6pXkgZ2nDoS10cuG7izogdMOqbiBbdmFsdWUtcmVnZXhdIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjU4CisjOiBidWlsdGluL2NvbmZpZy5jOjYwCiBtc2dpZCAiZ2V0IGFsbCB2YWx1ZXM6IGtleSBbdmFsdWUtcmVnZXhdIgogbXNnc3RyICJs4bqleSB04bqldCBj4bqjIGdpw6EtdHLhu4s6IGtow7NhIFt2YWx1ZS1yZWdleF0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTkKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjEKIG1zZ2lkICJnZXQgdmFsdWVzIGZvciByZWdleHA6IG5hbWUtcmVnZXggW3ZhbHVlLXJlZ2V4XSIKIG1zZ3N0ciAibOG6pXkgZ2nDoSB0cuG7iyBjaG8gcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjAKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjIKIG1zZ2lkICJyZXBsYWNlIGFsbCBtYXRjaGluZyB2YXJpYWJsZXM6IG5hbWUgdmFsdWUgW3ZhbHVlX3JlZ2V4XSIKIG1zZ3N0ciAidGhheSB0aOG6vyB04bqldCBj4bqjIGPDoWMgYmnhur9uIGto4bubcCBt4bqrdTogdMOqbiBnacOhLXRy4buLIFt2YWx1ZV9yZWdleF0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjEKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKIG1zZ2lkICJhZGQgYSBuZXcgdmFyaWFibGU6IG5hbWUgdmFsdWUiCiBtc2dzdHIgInRow6ptIGJp4bq/biBt4bubaTogdMOqbiBnacOhLXRy4buLIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjYyCisjOiBidWlsdGluL2NvbmZpZy5jOjY0CiBtc2dpZCAicmVtb3ZlIGEgdmFyaWFibGU6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKIG1zZ3N0ciAiZ+G7oSBi4buPIGJp4bq/bjogdMOqbiBbdmFsdWUtcmVnZXhdIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjYzCisjOiBidWlsdGluL2NvbmZpZy5jOjY1CiBtc2dpZCAicmVtb3ZlIGFsbCBtYXRjaGVzOiBuYW1lIFt2YWx1ZS1yZWdleF0iCiBtc2dzdHIgImfhu6EgYuG7jyBt4buNaSBjw6FpIGto4bubcDogdMOqbiBbdmFsdWUtcmVnZXhdIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjY0CisjOiBidWlsdGluL2NvbmZpZy5jOjY2CiBtc2dpZCAicmVuYW1lIHNlY3Rpb246IG9sZC1uYW1lIG5ldy1uYW1lIgogbXNnc3RyICLEkeG7lWkgdMOqbiBjaMawxqFuZzogdMOqbi1jxakgdMOqbi1t4bubaSIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2NQorIzogYnVpbHRpbi9jb25maWcuYzo2NwogbXNnaWQgInJlbW92ZSBhIHNlY3Rpb246IG5hbWUiCiBtc2dzdHIgImfhu6EgYuG7jyBjaMawxqFuZzogdMOqbiIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2NgorIzogYnVpbHRpbi9jb25maWcuYzo2OAogbXNnaWQgImxpc3QgYWxsIgogbXNnc3RyICJsaeG7h3Qga8OqIHThuqV0IgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjY3CisjOiBidWlsdGluL2NvbmZpZy5jOjY5CiBtc2dpZCAib3BlbiBhbiBlZGl0b3IiCiBtc2dzdHIgIm3hu58gbeG7mXQgdHLDrG5oIGJpw6puIHNv4bqhbiIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2OCBidWlsdGluL2NvbmZpZy5jOjY5CisjOiBidWlsdGluL2NvbmZpZy5jOjcwIGJ1aWx0aW4vY29uZmlnLmM6NzEKIG1zZ2lkICJzbG90IgogbXNnc3RyICJraGUiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjgKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzAKIG1zZ2lkICJmaW5kIHRoZSBjb2xvciBjb25maWd1cmVkOiBbZGVmYXVsdF0iCiBtc2dzdHIgInTDrG0gY+G6pXUgaMOsbmggbcOgdSBz4bqvYzogW23hurdjIMSR4buLbmhdIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjY5CisjOiBidWlsdGluL2NvbmZpZy5jOjcxCiBtc2dpZCAiZmluZCB0aGUgY29sb3Igc2V0dGluZzogW3N0ZG91dC1pcy10dHldIgogbXNnc3RyICJ0w6xtIGPDoWMgY8OgaSDEkeG6t3QgduG7gSBtw6B1IHPhuq9jOiBbc3Rkb3V0LWzDoC10dHldIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjcwCisjOiBidWlsdGluL2NvbmZpZy5jOjcyCiBtc2dpZCAiVHlwZSIKIG1zZ3N0ciAiS2nhu4N1IgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjcxCisjOiBidWlsdGluL2NvbmZpZy5jOjczCiBtc2dpZCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIgogbXNnc3RyICJnacOhIHRy4buLIGzDoCBcInRydWVcIiBob+G6t2MgXCJmYWxzZVwiIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjcyCisjOiBidWlsdGluL2NvbmZpZy5jOjc0CiBtc2dpZCAidmFsdWUgaXMgZGVjaW1hbCBudW1iZXIiCiBtc2dzdHIgImdpw6EgdHLhu4sg4bufIGThuqFuZyBz4buRIHRo4bqtcCBwaMOibiIKIAotIzogYnVpbHRpbi9jb25maWcuYzo3MworIzogYnVpbHRpbi9jb25maWcuYzo3NQogbXNnaWQgInZhbHVlIGlzIC0tYm9vbCBvciAtLWludCIKIG1zZ3N0ciAiZ2nDoSB0cuG7iyBsw6AgLS1ib29sIGhv4bq3YyAtLWludCIKIAotIzogYnVpbHRpbi9jb25maWcuYzo3NAorIzogYnVpbHRpbi9jb25maWcuYzo3NgogbXNnaWQgInZhbHVlIGlzIGEgcGF0aCAoZmlsZSBvciBkaXJlY3RvcnkgbmFtZSkiCiBtc2dzdHIgImdpw6EgdHLhu4sgbMOgIMSRxrDhu51uZyBk4bqrbiAodMOqbiB04bqtcCB0aW4gaGF5IHRoxrAgbeG7pWMpIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjc1CisjOiBidWlsdGluL2NvbmZpZy5jOjc3CiBtc2dpZCAiT3RoZXIiCiBtc2dzdHIgIktow6FjIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjc2CisjOiBidWlsdGluL2NvbmZpZy5jOjc4CiBtc2dpZCAidGVybWluYXRlIHZhbHVlcyB3aXRoIE5VTCBieXRlIgogbXNnc3RyICJjaOG6pW0gZOG7qXQgZ2nDoSB0cuG7iyB24bubaSBieXRlIE5VTCIKIAotIzogYnVpbHRpbi9jb25maWcuYzo3NworIzogYnVpbHRpbi9jb25maWcuYzo3OQogbXNnaWQgInJlc3BlY3QgaW5jbHVkZSBkaXJlY3RpdmVzIG9uIGxvb2t1cCIKIG1zZ3N0ciAidMO0biB0cuG7jW5nIGvhu4MgY8OgIGPDoWMgaMaw4bubbmcgdHJvbmcgdMOsbSBraeG6v20iCiAKQEAgLTQ0MTksNTUgKzQ2NDQsNTUgQEAKIG1zZ2lkICJwcmludCBzaXplcyBpbiBodW1hbiByZWFkYWJsZSBmb3JtYXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBrw61jaCBj4buhIHRoZW8gxJHhu4tuaCBk4bqhbmcgZMOgbmggY2hvIG5nxrDhu51pIMSR4buNYyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjE1CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTYKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIDxjb21taXR0aXNoPioiCiBtc2dzdHIgImdpdCBkZXNjcmliZSBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdHRpc2g+KiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjE2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTcKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiCiBtc2dzdHIgImdpdCBkZXNjcmliZSBbY8OhYy10w7l5LWNo4buNbl0gLS1kaXJ0eSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzMworIzogYnVpbHRpbi9kZXNjcmliZS5jOjIzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJhbm5vdGF0ZWQgdGFnICVzIG5vdCBhdmFpbGFibGUiCiBtc2dzdHIgInRo4bq7IMSRw6MgxJHGsOG7o2MgZ2hpIGNow7ogJXMga2jDtG5nIHPhurVuIMSR4buDIGTDuW5nIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjQxCiAjLCBjLWZvcm1hdAogbXNnaWQgImFubm90YXRlZCB0YWcgJXMgaGFzIG5vIGVtYmVkZGVkIG5hbWUiCiBtc2dzdHIgInRo4bq7IMSRxrDhu6NjIGNow7ogZ2nhuqNpICVzIGtow7RuZyBjw7MgdMOqbiBuaMO6bmciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNDMKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgaXMgcmVhbGx5ICclcycgaGVyZSIKIG1zZ3N0ciAidGjhursg4oCcJXPigJ0gxJHDoyB0aOG7sWMgc+G7sSDhu58gxJHDonkg4oCcJXPigJ0gcuG7k2kiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWUgJXMiCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgdMOqbiDEkeG7kWkgdMaw4bujbmcgJXMgaOG7o3AgbOG7hyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2OQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI3MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBpcyBub3QgYSB2YWxpZCAnJXMnIG9iamVjdCIKIG1zZ3N0ciAiJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdIGjhu6NwIGzhu4ciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyODYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyOTAKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGFnIGV4YWN0bHkgbWF0Y2hlcyAnJXMnIgogbXNnc3RyICJraMO0bmcgY8OzIHRo4bq7IG7DoG8ga2jhu5twIGNow61uaCB4w6FjIHbhu5tpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjkyCiAjLCBjLWZvcm1hdAogbXNnaWQgInNlYXJjaGluZyB0byBkZXNjcmliZSAlc1xuIgogbXNnc3RyICLEkGFuZyB0w6xtIGtp4bq/bSDEkeG7gyBtw7QgdOG6oyAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzI4CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzMyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZpbmlzaGVkIHNlYXJjaCBhdCAlc1xuIgogbXNnc3RyICJ2aeG7h2MgdMOsbSBraeG6v20gxJHDoyBr4bq/dCB0aMO6YyB04bqhaSAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyBhbm5vdGF0ZWQgdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKQEAgLTQ0NzYsNyArNDcwMSw3IEBACiAiS2jDtG5nIGPDsyB0aOG6uyDEkcaw4bujYyBjaMO6IGdp4bqjaSBuw6BvIMSRxrDhu6NjIG3DtCB04bqjIGzDoCDigJwlc+KAnS5cbiIKICJUdXkgbmhpw6puLCDhu58gxJHDonkgY8OzIG5o4buvbmcgdGjhursga2jDtG5nIMSRxrDhu6NjIGNow7ogZ2nhuqNpOiBow6N5IHRo4butIC0tdGFncy4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNTYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozNjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIk5vIHRhZ3MgY2FuIGRlc2NyaWJlICclcycuXG4iCkBAIC00NDg1LDEyICs0NzEwLDEyIEBACiAiS2jDtG5nIGPDsyB0aOG6uyAodGFnKSBjw7MgdGjhu4MgbcO0IHThuqMg4oCcJXPigJ0uXG4iCiAiSMOjeSB0aOG7rSAtLWFsd2F5cywgaG/hurd0IHThuqFvIG3hu5l0IHPhu5EgdGjhursuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgInRyYXZlcnNlZCAlbHUgY29tbWl0c1xuIgogbXNnc3RyICLEkcOjIHh1ecOqbiAlbHUgcXVhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdClcbiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4MAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjM4NwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAibW9yZSB0aGFuICVpIHRhZ3MgZm91bmQ7IGxpc3RlZCAlaSBtb3N0IHJlY2VudFxuIgpAQCAtNDQ5OSw1OSArNDcyNCw2MyBAQAogInTDrG0gdGjhuqV5IG5oaeG7gXUgaMahbiAlaSB0aOG6uyAodGFnKTsgxJHDoyBsaeG7h3Qga8OqICVpIGfhuqduIMSRw6J5IG5o4bqldFxuIgogImLhu48gxJFpIHTDrG0ga2nhur9tIHThuqFpICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDIKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDkKIG1zZ2lkICJmaW5kIHRoZSB0YWcgdGhhdCBjb21lcyBhZnRlciB0aGUgY29tbWl0IgogbXNnc3RyICJ0w6xtIGPDoWMgdGjhursgbcOgIG7DsyDEkeG6v24gdHLGsOG7m2MgbOG6p24gY2h1eeG7g24gZ2lhbyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMAogbXNnaWQgImRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIiCiBtc2dzdHIgImNoaeG6v24gbMaw4bujYyB0w6xtIGtp4bq/bSB0csOqbiDEkeG6p3UgcmEgbOG7l2kgY2h14bqpbiBzdGRlcnIiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDQKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTEKIG1zZ2lkICJ1c2UgYW55IHJlZiIKIG1zZ3N0ciAiZMO5bmcgcmVmIGLhuqV0IGvhu7MiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDUKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIKIG1zZ2lkICJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIKIG1zZ3N0ciAiZMO5bmcgdGjhursgYuG6pXQga+G7sywgY+G6oyBraGkg4oCcdW5hbm5vdGF0ZWTigJ0iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTMKIG1zZ2lkICJhbHdheXMgdXNlIGxvbmcgZm9ybWF0IgogbXNnc3RyICJsdcO0biBkw7luZyDEkeG7i25oIGThuqFuZyBkw6BpIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE0Cittc2dpZCAib25seSBmb2xsb3cgZmlyc3QgcGFyZW50IgorbXNnc3RyICJjaOG7iSB0aGVvIGNoYSBt4bq5IMSR4bqndSB0acOqbiIKKworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNwogbXNnaWQgIm9ubHkgb3V0cHV0IGV4YWN0IG1hdGNoZXMiCiBtc2dzdHIgImNo4buJIHh14bqldCBuaOG7r25nIGfDrCBraOG7m3AgY2jDrW5oIHjDoWMiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTkKIG1zZ2lkICJjb25zaWRlciA8bj4gbW9zdCByZWNlbnQgdGFncyAoZGVmYXVsdDogMTApIgogbXNnc3RyICJjb2kgbmjGsCAgPG4+IHRo4bq7IGfhuqduIMSRw6J5IG5o4bqldCAobeG6t2MgxJHhu4tuaDogMTApIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDIxCiBtc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKIG1zZ3N0ciAiY2jhu4kgY8OibiBuaOG6r2MgxJHhur9uIG5o4buvbmcgdGjhursga2jhu5twIHbhu5tpICA8beG6q3U+IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE1IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MjMgYnVpbHRpbi9uYW1lLXJldi5jOjMyMgogbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIMSR4buRaSB0xrDhu6NuZyBjaHV54buDbiBnaWFvIHbhuq9uIHThuq90IG5oxrAgbMOgIGZhbGxiYWNrIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDI0CiBtc2dpZCAibWFyayIKIG1zZ3N0ciAiZOG6pXUiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MjUKIG1zZ2lkICJhcHBlbmQgPG1hcms+IG9uIGRpcnR5IHdvcmtpbmcgdHJlZSAoZGVmYXVsdDogXCItZGlydHlcIikiCiBtc2dzdHIgInRow6ptIDxk4bqldT4gdHLDqm4gY8OieSB0aMawIG3hu6VjIGzDoG0gdmnhu4djIGLhuqluICht4bq3YyDEkeG7i25oIFwiLWRpcnR5XCIpIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDM1CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDQzCiBtc2dpZCAiLS1sb25nIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWJicmV2PTAiCiBtc2dzdHIgIi0tbG9uZyBsw6AgeHVuZyBraOG6r2MgduG7m2kgdMO5eSBjaOG7jW4gLS1hYmJyZXY9MCIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ2MQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQ2OQogbXNnaWQgIk5vIG5hbWVzIGZvdW5kLCBjYW5ub3QgZGVzY3JpYmUgYW55dGhpbmcuIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgY8OhYyB0w6puLCBraMO0bmcgdGjhu4MgbcO0IHThuqMgZ8OsIGPhuqMuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgxCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDg5CiBtc2dpZCAiLS1kaXJ0eSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb21taXR0aXNoZXMiCiBtc2dzdHIgIi0tZGlydHkgbMOgIHh1bmcga2jhuq9jIHbhu5tpIGPDoWMgdMO5eSBjaOG7jW4gZMOgbmggY2hvIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCiAKQEAgLTQ1NjAsMzEgKzQ3ODksMjYgQEAKIG1zZ2lkICInJXMnOiBub3QgYSByZWd1bGFyIGZpbGUgb3Igc3ltbGluayIKIG1zZ3N0ciAi4oCcJXPigJ06IGtow7RuZyBwaOG6o2kgdOG6rXAgdGluIGLDrG5oIHRoxrDhu51uZyBoYXkgbGnDqm4ga+G6v3QgdMaw4bujbmcgdHLGsG5nIgogCi0jOiBidWlsdGluL2RpZmYuYzoyMjgKKyM6IGJ1aWx0aW4vZGlmZi5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9wdGlvbjogJXMiCiBtc2dzdHIgInTDuXkgY2jhu41uIHNhaTogJXMiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjMwNQorIzogYnVpbHRpbi9kaWZmLmM6MzA3CiBtc2dpZCAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgbMOgIGtobyBnaXQiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM0OAorIzogYnVpbHRpbi9kaWZmLmM6MzUwCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb2JqZWN0ICclcycgZ2l2ZW4uIgogbXNnc3RyICLEkeG7kWkgdMaw4bujbmcgxJHDoyBjaG8g4oCcJXPigJ0ga2jDtG5nIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL2RpZmYuYzozNTMKLSMsIGMtZm9ybWF0Ci1tc2dpZCAibW9yZSB0aGFuICVkIHRyZWVzIGdpdmVuOiAnJXMnIgotbXNnc3RyICLEkcOjIGNo4buJIHJhIG5oaeG7gXUgaMahbiAlZCBjw6J5ICh0cmVlKTog4oCcJXPigJ0iCi0KLSM6IGJ1aWx0aW4vZGlmZi5jOjM2MworIzogYnVpbHRpbi9kaWZmLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1vcmUgdGhhbiB0d28gYmxvYnMgZ2l2ZW46ICclcyciCiBtc2dzdHIgIsSRw6MgY2hvIG5oaeG7gXUgaMahbiBoYWkgxJHhu5FpIHTGsOG7o25nIGJsb2I6IOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2RpZmYuYzozNzEKKyM6IGJ1aWx0aW4vZGlmZi5jOjM2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmhhbmRsZWQgb2JqZWN0ICclcycgZ2l2ZW4uIgogbXNnc3RyICLEkcOjIGNobyDEkeG7kWkgdMaw4bujbmcga2jDtG5nIHRo4buDIG7huq9tIGdp4buvIOKAnCVz4oCdLiIKQEAgLTQ1OTMsMzkgKzQ4MTcsMzkgQEAKIG1zZ2lkICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgogbXNnc3RyICJnaXQgZmFzdC1leHBvcnQgW3Jldi1saXN0LW9wdHNdIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU4CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2CiBtc2dpZCAic2hvdyBwcm9ncmVzcyBhZnRlciA8bj4gb2JqZWN0cyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRp4bq/biB0cmnhu4NuIHNhdSA8bj4gxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY4CiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgogbXNnc3RyICJjaOG7jW4gxJFp4buBdSBraGnhu4NuIGPhu6dhIHRo4bq7IMSRw6Mga8O9IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYzCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcxCiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHRhZ3MgdGhhdCB0YWcgZmlsdGVyZWQgb2JqZWN0cyIKIG1zZ3N0ciAiY2jhu41uIHPhu7EgeOG7rSBsw70gY+G7p2EgY8OhYyB0aOG6uywgY8OhaSBtw6AgxJHDoW5oIHRo4bq7IGPDoWMgxJHhu5FpIHTGsOG7o25nIMSRxrDhu6NjIGzhu41jIHJhIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0CiBtc2dpZCAiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiCiBtc2dzdHIgIsSQ4buVIGPDoWMgxJHDoW5oIGThuqV1IG7DoHkgdsOgbyB04bqtcC10aW4iCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjgKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzYKIG1zZ2lkICJJbXBvcnQgbWFya3MgZnJvbSB0aGlzIGZpbGUiCiBtc2dzdHIgIm5o4bqtcCB2w6BvIMSRw6FuaCBk4bqldSB04burIHThuq1wIHRpbiBuw6B5IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc4CiBtc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCiBtc2dzdHIgIkzDoG0gZ2nhuqMgbeG7mXQgY8OhaSB0aOG6uyBraGkgdGjhursgYuG7iyB0aGnhur91IG3hu5l0IGPDoWkiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzIKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2ODAKIG1zZ2lkICJPdXRwdXQgZnVsbCB0cmVlIGZvciBlYWNoIGNvbW1pdCIKIG1zZ3N0ciAiWHXhuqV0IHJhIHRvw6BuIGLhu5kgY8OieSBjaG8gbeG7l2kgbOG6p24gY2h1eeG7g24gZ2lhbyIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY4MgogbXNnaWQgIlVzZSB0aGUgZG9uZSBmZWF0dXJlIHRvIHRlcm1pbmF0ZSB0aGUgc3RyZWFtIgogbXNnc3RyICJT4butIGThu6VuZyB0w61uaCBuxINuZyBkb25lIMSR4buDIGNo4bqlbSBk4bupdCBsdeG7k25nIGThu68gbGnhu4d1IgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjgzCiBtc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgogbXNnc3RyICJC4buPIHF1YSBr4bq/dCB4deG6pXQgY+G7p2EgZOG7ryBsaeG7h3UgYmxvYiIKIApAQCAtNDY0Nyw3ICs0ODcxLDcgQEAKIAogIzogYnVpbHRpbi9mZXRjaC5jOjYwCiBtc2dpZCAiZmV0Y2ggZnJvbSBhbGwgcmVtb3RlcyIKLW1zZ3N0ciAiZmV0Y2ggdOG7qyB04bqldCBj4bqjIGPDoWMgbcOheSBjaOG7pyIKK21zZ3N0ciAibOG6pXkgduG7gSB04burIHThuqV0IGPhuqMgY8OhYyBtw6F5IGNo4bunIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NjIKIG1zZ2lkICJhcHBlbmQgdG8gLmdpdC9GRVRDSF9IRUFEIGluc3RlYWQgb2Ygb3ZlcndyaXRpbmciCkBAIC00NjYzLDE1ICs0ODg3LDE1IEBACiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo2NwogbXNnaWQgImZldGNoIGZyb20gbXVsdGlwbGUgcmVtb3RlcyIKLW1zZ3N0ciAiZmV0Y2ggdOG7qyBuaGnhu4F1IG3DoXkgY2jhu6cgY8O5bmcgbMO6YyIKK21zZ3N0ciAibOG6pXkgdOG7qyBuaGnhu4F1IG3DoXkgY2jhu6cgY8O5bmcgbMO6YyIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjY5CiBtc2dpZCAiZmV0Y2ggYWxsIHRhZ3MgYW5kIGFzc29jaWF0ZWQgb2JqZWN0cyIKLW1zZ3N0ciAibOG6pXkgKGZldGNoKSB04bqldCBj4bqjIGPDoWMgdGjhursgY8O5bmcgduG7m2kgY8OhYyDEkeG7kWkgdMaw4bujbmcgbGnDqm4gcXVhbiDEkeG6v24gbsOzIgorbXNnc3RyICJs4bqleSB04bqldCBj4bqjIGPDoWMgdGjhursgY8O5bmcgduG7m2kgY8OhYyDEkeG7kWkgdMaw4bujbmcgbGnDqm4gcXVhbiDEkeG6v24gbsOzIgogCiAjOiBidWlsdGluL2ZldGNoLmM6NzEKIG1zZ2lkICJkbyBub3QgZmV0Y2ggYWxsIHRhZ3MgKC0tbm8tdGFncykiCi1tc2dzdHIgImtow7RuZyBs4bqleSAoZmV0Y2gpIHThuqV0IGPhuqMgY8OhYyB0aOG6uyAoLS1uby10YWdzKSIKK21zZ3N0ciAia2jDtG5nIGzhuqV5IHThuqV0IGPhuqMgY8OhYyB0aOG6uyAoLS1uby10YWdzKSIKIAogIzogYnVpbHRpbi9mZXRjaC5jOjczCiBtc2dpZCAicHJ1bmUgcmVtb3RlLXRyYWNraW5nIGJyYW5jaGVzIG5vIGxvbmdlciBvbiByZW1vdGUiCkBAIC00Njg1LDcgKzQ5MDksNyBAQAogCiAjOiBidWlsdGluL2ZldGNoLmM6NzUKIG1zZ2lkICJjb250cm9sIHJlY3Vyc2l2ZSBmZXRjaGluZyBvZiBzdWJtb2R1bGVzIgotbXNnc3RyICLEkWnhu4F1IGtoaeG7g24gdmnhu4djIGzhuqV5IHbhu4EgKGZldGNoKSDEkeG7hyBxdXkgdHJvbmcgY8OhYyBtw7QtxJF1bi1jb24iCittc2dzdHIgIsSRaeG7gXUga2hp4buDbiB2aeG7h2MgbOG6pXkgduG7gSDEkeG7hyBxdXkgdHJvbmcgY8OhYyBtw7QtxJF1bi1jb24iCiAKICM6IGJ1aWx0aW4vZmV0Y2guYzo3OQogbXNnaWQgImtlZXAgZG93bmxvYWRlZCBwYWNrIgpAQCAtNDY5Myw3ICs0OTE3LDcgQEAKIAogIzogYnVpbHRpbi9mZXRjaC5jOjgxCiBtc2dpZCAiYWxsb3cgdXBkYXRpbmcgb2YgSEVBRCByZWYiCi1tc2dzdHIgImNobyBwaMOpcCBj4bqtcCBuaOG6rXQgcmVmICh0aGFtIGNoaeG6v3UpIEhFQUQiCittc2dzdHIgImNobyBwaMOpcCBj4bqtcCBuaOG6rXQgdGguY2hp4bq/dSBIRUFEIgogCiAjOiBidWlsdGluL2ZldGNoLmM6ODQKIG1zZ2lkICJkZWVwZW4gaGlzdG9yeSBvZiBzaGFsbG93IGNsb25lIgpAQCAtNDcwMyw3ICs0OTI3LDcgQEAKIG1zZ2lkICJjb252ZXJ0IHRvIGEgY29tcGxldGUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiY2h1eeG7g24gxJHhu5VpIGhvw6BuIHRvw6BuIHNhbmcga2hvIGdpdCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAorIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTE3NwogbXNnaWQgImRpciIKIG1zZ3N0ciAidG3hu6VjIgogCkBAIC00NzE1LDc2ICs0OTM5LDc2IEBACiBtc2dpZCAiZGVmYXVsdCBtb2RlIGZvciByZWN1cnNpb24iCiBtc2dzdHIgImNo4bq/IMSR4buZIG3hurdjIMSR4buLbmggY2hvIMSR4buHIHF1aSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjIwNAorIzogYnVpbHRpbi9mZXRjaC5jOjIyMAogbXNnaWQgIkNvdWxkbid0IGZpbmQgcmVtb3RlIHJlZiBIRUFEIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdMOsbSB0aOG6pXkgbcOheSBjaOG7pyBjaG8gdGhhbSBjaGnhur91IEhFQUQiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0ICVzIG5vdCBmb3VuZCIKIG1zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IMSR4buRaSB0xrDhu6NuZyAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI2MgorIzogYnVpbHRpbi9mZXRjaC5jOjI3OAogbXNnaWQgIlt1cCB0byBkYXRlXSIKIG1zZ3N0ciAiW8SRw6MgY+G6rXAgbmjhuq10XSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI3NgorIzogYnVpbHRpbi9mZXRjaC5jOjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICIhICUtKnMgJS0qcyAtPiAlcyAgKGNhbid0IGZldGNoIGluIGN1cnJlbnQgYnJhbmNoKSIKIG1zZ3N0ciAiISAlLSpzICUtKnMgLT4gJXMgIChraMO0bmcgdGjhu4MgZmV0Y2ggKGzhuqV5KSB24buBIG5ow6FuaCBoaeG7h24gaMOgbmgpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Mjc3IGJ1aWx0aW4vZmV0Y2guYzozNjMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTMgYnVpbHRpbi9mZXRjaC5jOjM3OQogbXNnaWQgIltyZWplY3RlZF0iCiBtc2dzdHIgIltC4buLIHThu6sgY2jhu5FpXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI4OAorIzogYnVpbHRpbi9mZXRjaC5jOjMwNAogbXNnaWQgIlt0YWcgdXBkYXRlXSIKIG1zZ3N0ciAiW2Phuq1wIG5o4bqtdCB0aOG6u10iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCisjOiBidWlsdGluL2ZldGNoLmM6MzA2IGJ1aWx0aW4vZmV0Y2guYzozNDEgYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgIiAgKHVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmKSIKIG1zZ3N0ciAiICAoa2jDtG5nIHRo4buDIGPhuq1wIG5o4bqtdCB0aGFtIGNoaeG6v3UgKHJlZikgbuG7mWkgYuG7mSkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMjQKIG1zZ2lkICJbbmV3IHRhZ10iCiBtc2dzdHIgIlt0aOG6uyBt4bubaV0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMjcKIG1zZ2lkICJbbmV3IGJyYW5jaF0iCiBtc2dzdHIgIltuaMOhbmggbeG7m2ldIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzE0CisjOiBidWlsdGluL2ZldGNoLmM6MzMwCiBtc2dpZCAiW25ldyByZWZdIgogbXNnc3RyICJbcmVmICh0aGFtIGNoaeG6v3UpIG3hu5tpXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjM1OQorIzogYnVpbHRpbi9mZXRjaC5jOjM3NQogbXNnaWQgInVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10IHRoYW0gY2hp4bq/dSAocmVmKSBu4buZaSBi4buZIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU5CisjOiBidWlsdGluL2ZldGNoLmM6Mzc1CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAiY8aw4buhbmcgYuG7qWMgY+G6rXAgbmjhuq10IgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzY1CisjOiBidWlsdGluL2ZldGNoLmM6MzgxCiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICIobm9uLWZhc3QtZm9yd2FyZCkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAorIzogYnVpbHRpbi9mZXRjaC5jOjQxMiBidWlsdGluL2ZldGNoLmM6NzE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICVzOiAlc1xuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgbeG7nyAlczogJXNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjQwNQorIzogYnVpbHRpbi9mZXRjaC5jOjQyMQogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzXG4iCiBtc2dzdHIgIiVzIMSRw6Mga2jDtG5nIGfhu61pIHThuqV0IGPhuqMgY8OhYyDEkeG7kWkgdMaw4bujbmcgY+G6p24gdGhp4bq/dFxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDkxCisjOiBidWlsdGluL2ZldGNoLmM6NTIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZyb20gJS4qc1xuIgogbXNnc3RyICJU4burICUuKnNcbiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjUwMgorIzogYnVpbHRpbi9mZXRjaC5jOjUzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAic29tZSBsb2NhbCByZWZzIGNvdWxkIG5vdCBiZSB1cGRhdGVkOyB0cnkgcnVubmluZ1xuIgpAQCAtNDc5Myw1NyArNTAxNyw1NyBAQAogIm3hu5l0IHPhu5EgdGhhbSBjaGnhur91IChyZWZzKSBu4buZaSBi4buZIGtow7RuZyB0aOG7gyDEkcaw4bujYyBj4bqtcCBuaOG6rXQ7IGjDo3kgdGjhu60gY2jhuqF5XG4iCiAiIOKAnGdpdCByZW1vdGUgcHJ1bmUgJXPigJ0gxJHhu4MgYuG7jyDEkWkgbmjhu69uZyBuaMOhbmggY8WpLCBoYXkgYuG7iyB4dW5nIMSR4buZdCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1MgorIzogYnVpbHRpbi9mZXRjaC5jOjU4MQogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgd2lsbCBiZWNvbWUgZGFuZ2xpbmcpIgogbXNnc3RyICIgICAoJXMgc+G6vSB0cuG7nyB0aMOgbmgga2jDtG5nIMSR4bqndSAoa2jDtG5nIMSRxrDhu6NjIHF14bqjbiBsw70pKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU1MworIzogYnVpbHRpbi9mZXRjaC5jOjU4MgogIywgYy1mb3JtYXQKIG1zZ2lkICIgICAoJXMgaGFzIGJlY29tZSBkYW5nbGluZykiCiBtc2dzdHIgIiAgICglcyDEkcOjIHRy4bufIHRow6BuaCBraMO0bmcgxJHhuqd1IChraMO0bmcgxJHGsOG7o2MgcXXhuqNuIGzDvSkpIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTYwCisjOiBidWlsdGluL2ZldGNoLmM6NTg5CiBtc2dpZCAiW2RlbGV0ZWRdIgogbXNnc3RyICJbxJHDoyB4w7NhXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU2MSBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1OTAgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICIoa2jDtG5nKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjY3OAorIzogYnVpbHRpbi9mZXRjaC5jOjcwOAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZWZ1c2luZyB0byBmZXRjaCBpbnRvIGN1cnJlbnQgYnJhbmNoICVzIG9mIG5vbi1iYXJlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKICJU4burIGNo4buRaSB2aeG7h2MgbOG6pXkgKGZldGNoKSB2w6BvIHRyb25nIG5ow6FuaCBoaeG7h24gdOG6oWkgJXMgY+G7p2EgbeG7mXQga2hvIGNo4bupYSBraMO0bmcgIgogInBo4bqjaSBraG8gdHLhuqduIChiYXJlKSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjcxMgorIzogYnVpbHRpbi9mZXRjaC5jOjc0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJEb24ndCBrbm93IGhvdyB0byBmZXRjaCBmcm9tICVzIgotbXNnc3RyICJLaMO0bmcgYmnhur90IGzDoG0gY8OhY2ggbsOgbyDEkeG7gyBs4bqleSB24buBIChmZXRjaCkgdOG7qyAlcyIKK21zZ3N0ciAiS2jDtG5nIGJp4bq/dCBsw6BtIGPDoWNoIG7DoG8gxJHhu4MgbOG6pXkgduG7gSB04burICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6Nzg5CisjOiBidWlsdGluL2ZldGNoLmM6ODIzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9wdGlvbiBcIiVzXCIgdmFsdWUgXCIlc1wiIGlzIG5vdCB2YWxpZCBmb3IgJXMiCiBtc2dzdHIgIlTDuXkgY2jhu41uIFwiJXNcIiBjw7MgZ2nDoSB0cuG7iyBcIiVzXCIgbMOgIGtow7RuZyBo4bujcCBs4buHIGNobyAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc5MgorIzogYnVpbHRpbi9mZXRjaC5jOjgyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIGlzIGlnbm9yZWQgZm9yICVzXG4iCiBtc2dzdHIgIlTDuXkgY2jhu41uIFwiJXNcIiBi4buLIGLhu48gcXVhIHbhu5tpICVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTQKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmV0Y2hpbmcgJXNcbiIKLW1zZ3N0ciAixJBhbmcgbOG6pXkgKGZldGNoKSAlc1xuIgorbXNnc3RyICLEkGFuZyBs4bqleSB24buBICVzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo4OTYgYnVpbHRpbi9yZW1vdGUuYzoxMDAKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5MzAgYnVpbHRpbi9yZW1vdGUuYzoxMDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGZldGNoICVzIgotbXNnc3RyICJraMO0bmcgdGjhu4MgZmV0Y2ggKGzhuqV5KSAlcyIKK21zZ3N0ciAia2jDtG5nIHRo4buDIGzhuqV5IHbhu4EgJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5NDkKIG1zZ2lkICIiCiAiTm8gcmVtb3RlIHJlcG9zaXRvcnkgc3BlY2lmaWVkLiAgUGxlYXNlLCBzcGVjaWZ5IGVpdGhlciBhIFVSTCBvciBhXG4iCiAicmVtb3RlIG5hbWUgZnJvbSB3aGljaCBuZXcgcmV2aXNpb25zIHNob3VsZCBiZSBmZXRjaGVkLiIKQEAgLTQ4NTEsMzIgKzUwNzUsMzIgQEAKICJDaMawYSBjaOG7iSByYSBraG8gY2jhu6lhIG3DoXkgY2jhu6cuICBYaW4gaMOjeSBjaOG7iSDEkeG7i25oIGhv4bq3YyBsw6AgVVJMIGhv4bq3Y1xuIgogInTDqm4gbcOheSBjaOG7pyB04burIGPDoWkgbcOgIG5o4buvbmcgxJFp4buDbSB4w6l0IGR1eeG7h3QgbeG7m2kgY8OzIHRo4buDIMSRxrDhu6NjIGZldGNoIChs4bqleSB24buBKS4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5MzUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo5NjkKIG1zZ2lkICJZb3UgbmVlZCB0byBzcGVjaWZ5IGEgdGFnIG5hbWUuIgogbXNnc3RyICJC4bqhbiBwaOG6o2kgxJHhu4tuaCByw7UgdMOqbiB0aOG6uy4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODEKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDE1CiBtc2dpZCAiLS1kZXB0aCBhbmQgLS11bnNoYWxsb3cgY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgInTDuXkgY2jhu41uIC0tZGVwdGggdsOgIC0tdW5zaGFsbG93IGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjw7luZyB24bubaSBuaGF1IgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTgzCisjOiBidWlsdGluL2ZldGNoLmM6MTAxNwogbXNnaWQgIi0tdW5zaGFsbG93IG9uIGEgY29tcGxldGUgcmVwb3NpdG9yeSBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICItLXVuc2hhbGxvdyB0csOqbiBraG8gaG/DoG4gY2jhu4luaCBsw6Aga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDIKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDM2CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgdGFrZSBhIHJlcG9zaXRvcnkgYXJndW1lbnQiCiBtc2dzdHIgImzhu4duaCBs4bqleSB24buBIFwiZmV0Y2ggLS1hbGxcIiBraMO0bmcgbOG6pXkgxJHhu5FpIHPhu5Ega2hvIGNo4bupYSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMDQKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDM4CiBtc2dpZCAiZmV0Y2ggLS1hbGwgZG9lcyBub3QgbWFrZSBzZW5zZSB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICJs4buHbmggbOG6pXkgduG7gSBcImZldGNoIC0tYWxsXCIga2jDtG5nIGjhu6NwIGzDvSB24bubaSByZWZzcGVjcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggcmVtb3RlIG9yIHJlbW90ZSBncm91cDogJXMiCiBtc2dzdHIgImtow7RuZyBjw7MgbmjDs20gbcOheSBjaOG7pyBoYXkgbcOheSBjaOG7pyBuaMawIHRo4bq/OiAlcyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjEwMjMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDU3CiBtc2dpZCAiRmV0Y2hpbmcgYSBncm91cCBhbmQgc3BlY2lmeWluZyByZWZzcGVjcyBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICJWaeG7h2MgbOG6pXkgduG7gSBj4bqjIG3hu5l0IG5ow7NtIHbDoCBjaOG7iSDEkeG7i25oIHJlZnNwZWNzIGtow7RuZyBo4bujcCBsw70iCiAKQEAgLTQ4ODUsOSArNTEwOSw5IEBACiBtc2dzdHIgIiIKICJnaXQgZm10LW1lcmdlLW1zZyBbLW0gPHRow7RuZyDEkWnhu4dwPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDx04bqtcC10aW4+XSIKIAotIzogYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjYzIGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2NiBidWlsdGluL2dyZXAuYzo3MDEKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODggYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY1NSBidWlsdGluL3Nob3ctcmVmLmM6MTc1Ci0jOiBidWlsdGluL3RhZy5jOjQ0NiBwYXJzZS1vcHRpb25zLmg6MTMzIHBhcnNlLW9wdGlvbnMuaDoyMzkKKyM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjYgYnVpbHRpbi9ncmVwLmM6NzAwCisjOiBidWlsdGluL21lcmdlLmM6MjAzIGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUgYnVpbHRpbi9zaG93LXJlZi5jOjE3OQorIzogYnVpbHRpbi90YWcuYzo0NDYgcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjQzCiBtc2dpZCAibiIKIG1zZ3N0ciAibiIKIApAQCAtNTA0NywyMjMgKzUyNzEsMjIzIEBACiBtc2dpZCAiZ3JlcDogZmFpbGVkIHRvIGNyZWF0ZSB0aHJlYWQ6ICVzIgogbXNnc3RyICJncmVwOiBn4bq3cCBs4buXaSB04bqhbyB0dXnhur9uICh0aHJlYWQpOiAlcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6MzY1CisjOiBidWlsdGluL2dyZXAuYzozNjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGNoZGlyOiAlcyIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kgduG7m2kgbOG7h25oIGNoZGlyOiAlcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDQzIGJ1aWx0aW4vZ3JlcC5jOjQ3OAorIzogYnVpbHRpbi9ncmVwLmM6NDQyIGJ1aWx0aW4vZ3JlcC5jOjQ3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgY8OieSAoJXMpIgogCi0jOiBidWlsdGluL2dyZXAuYzo0OTMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjQ5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gZ3JlcCBmcm9tIG9iamVjdCBvZiB0eXBlICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiBs4buHbmggZ3JlcCAobOG7jWMgdMOsbSkgdOG7qyDEkeG7kWkgdMaw4bujbmcgdGh14buZYyBraeG7g3UgJXMiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjU1MQorIzogYnVpbHRpbi9ncmVwLmM6NTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgInN3aXRjaCBgJWMnIGV4cGVjdHMgYSBudW1lcmljYWwgdmFsdWUiCiBtc2dzdHIgImNodXnhu4NuIMSR4bq/biDigJwlY+KAnSBj4bqnbiBt4buZdCBnacOhIHRy4buLIGLhurFuZyBz4buRIgogCi0jOiBidWlsdGluL2dyZXAuYzo1NjgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgb3BlbiAnJXMnIgogbXNnc3RyICJraMO0bmcgbeG7nyDEkcaw4bujYyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQzCisjOiBidWlsdGluL2dyZXAuYzo2NDIKIG1zZ2lkICJzZWFyY2ggaW4gaW5kZXggaW5zdGVhZCBvZiBpbiB0aGUgd29yayB0cmVlIgogbXNnc3RyICJ0w6xtIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyB0aGF5IHbDrCB0cm9uZyBjw6J5IGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NDUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0NAogbXNnaWQgImZpbmQgaW4gY29udGVudHMgbm90IG1hbmFnZWQgYnkgZ2l0IgogbXNnc3RyICJ0w6xtIHRyb25nIG7hu5lpIGR1bmcga2jDtG5nIMSRxrDhu6NjIHF14bqjbiBsw70gYuG7n2kgZ2l0IgogCi0jOiBidWlsdGluL2dyZXAuYzo2NDcKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0NgogbXNnaWQgInNlYXJjaCBpbiBib3RoIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAidMOsbSBraeG6v20gY8OhYyB04bqtcCB0aW4gxJHGsOG7o2MgdsOgIGNoxrBhIMSRxrDhu6NjIHRoZW8gZMO1aSBk4bqldSB24bq/dCIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQ5CisjOiBidWlsdGluL2dyZXAuYzo2NDgKIG1zZ2lkICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICJ0w6xtIGPhuqMgdHJvbmcgY8OhYyB04bqtcCB0aW4gxJHDoyBi4buLIGzhu50gxJFpIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NTIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1MQogbXNnaWQgInNob3cgbm9uLW1hdGNoaW5nIGxpbmVzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgIG5o4buvbmcgZMOybmcga2jDtG5nIGto4bubcCB24bubaSBt4bqrdSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjU0CisjOiBidWlsdGluL2dyZXAuYzo2NTMKIG1zZ2lkICJjYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIgogbXNnc3RyICJwaMOibiBiaeG7h3QgY2jhu68gaG9hL3RoxrDhu51uZyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjU2CisjOiBidWlsdGluL2dyZXAuYzo2NTUKIG1zZ2lkICJtYXRjaCBwYXR0ZXJucyBvbmx5IGF0IHdvcmQgYm91bmRhcmllcyIKIG1zZ3N0ciAiY2jhu4kga2jhu5twIG3huqt1IHThuqFpIMSRxrDhu51uZyByYW5oIGdp4bubaSB04burIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NTgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY1NwogbXNnaWQgInByb2Nlc3MgYmluYXJ5IGZpbGVzIGFzIHRleHQiCiBtc2dzdHIgInjhu60gbMO9IHThuq1wIHRpbiBuaOG7iyBwaMOibiBuaMawIGzDoCBk4bqhbmcgdsSDbiBi4bqjbiB0aMaw4budbmciCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2MAorIzogYnVpbHRpbi9ncmVwLmM6NjU5CiBtc2dpZCAiZG9uJ3QgbWF0Y2ggcGF0dGVybnMgaW4gYmluYXJ5IGZpbGVzIgogbXNnc3RyICJraMO0bmcga2jhu5twIG3huqt1IHRyb25nIGPDoWMgdOG6rXAgdGluIG5o4buLIHBow6JuIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NjMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY2MgogbXNnaWQgImRlc2NlbmQgYXQgbW9zdCA8ZGVwdGg+IGxldmVscyIKIG1zZ3N0ciAiZ2nhuqNtIHh14buRbmcgw610IG5o4bqldCBt4bupYyA8c8OidT4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworIzogYnVpbHRpbi9ncmVwLmM6NjY2CiBtc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCiBtc2dzdHIgImTDuW5nIGJp4buDdSB0aOG7qWMgY2jDrW5oIHF1aSBQT1NJWCBjw7MgbeG7nyBy4buZbmciCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY3MAorIzogYnVpbHRpbi9ncmVwLmM6NjY5CiBtc2dpZCAidXNlIGJhc2ljIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGRlZmF1bHQpIgogbXNnc3RyICJz4butIGThu6VuZyBiaeG7g3UgdGjhu6ljIGNow61uaCBxdXkga2nhu4N1IFBPU0lYICht4bq3YyDEkeG7i25oKSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjczCisjOiBidWlsdGluL2dyZXAuYzo2NzIKIG1zZ2lkICJpbnRlcnByZXQgcGF0dGVybnMgYXMgZml4ZWQgc3RyaW5ncyIKIG1zZ3N0ciAiZGnhu4VuIGThu4tjaCBjw6FjIG3huqt1IG5oxrAgbMOgIGNodeG7l2kgY+G7kSDEkeG7i25oIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NzYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3NQogbXNnaWQgInVzZSBQZXJsLWNvbXBhdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKIG1zZ3N0ciAic+G7rSBk4bulbmcgYmnhu4N1IHRo4bupYyBjaMOtbmggcXV5IHTGsMahbmcgdGjDrWNoIFBlcmwiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY3OQorIzogYnVpbHRpbi9ncmVwLmM6Njc4CiBtc2dpZCAic2hvdyBsaW5lIG51bWJlcnMiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBz4buRIGPhu6dhIGTDsm5nIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3OQogbXNnaWQgImRvbid0IHNob3cgZmlsZW5hbWVzIgogbXNnc3RyICJraMO0bmcgaGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MAogbXNnaWQgInNob3cgZmlsZW5hbWVzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB0w6puIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjgzCisjOiBidWlsdGluL2dyZXAuYzo2ODIKIG1zZ2lkICJzaG93IGZpbGVuYW1lcyByZWxhdGl2ZSB0byB0b3AgZGlyZWN0b3J5IgogbXNnc3RyICJoaeG7g24gdGjhu4sgdMOqbiB04bqtcCB0aW4gdMawxqFuZyDEkeG7kWkgduG7m2kgdGjGsCBt4bulYyDEkeG7iW5oICh0b3ApIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NAogbXNnaWQgInNob3cgb25seSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKIG1zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIHTDqm4gdOG6rXAgdGluIHRoYXkgdsOsIG5o4buvbmcgZMOybmcga2jhu5twIHbhu5tpIG3huqt1IgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODcKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NgogbXNnaWQgInN5bm9ueW0gZm9yIC0tZmlsZXMtd2l0aC1tYXRjaGVzIgogbXNnc3RyICLEkeG7k25nIG5naMSpYSB24bubaSAtLWZpbGVzLXdpdGgtbWF0Y2hlcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjkwCisjOiBidWlsdGluL2dyZXAuYzo2ODkKIG1zZ2lkICJzaG93IG9ubHkgdGhlIG5hbWVzIG9mIGZpbGVzIHdpdGhvdXQgbWF0Y2giCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyB0w6puIGNobyBuaOG7r25nIHThuq1wIHRpbiBraMO0bmcga2jhu5twIHbhu5tpIG3huqt1IgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MQogbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCiBtc2dzdHIgInRow6ptIE5VTCB2w6BvIHNhdSB0w6puIHThuq1wIHRpbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njk0CisjOiBidWlsdGluL2dyZXAuYzo2OTMKIG1zZ2lkICJzaG93IHRoZSBudW1iZXIgb2YgbWF0Y2hlcyBpbnN0ZWFkIG9mIG1hdGNoaW5nIGxpbmVzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgc+G7kSBsxrDhu6NuZyBraOG7m3AgdGhheSB2w6wgbmjhu69uZyBkw7JuZyBraOG7m3AgduG7m2kgbeG6q3UiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY5NQorIzogYnVpbHRpbi9ncmVwLmM6Njk0CiBtc2dpZCAiaGlnaGxpZ2h0IG1hdGNoZXMiCiBtc2dzdHIgInTDtCBzw6FuZyBjw6FpIGto4bubcCIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njk3CisjOiBidWlsdGluL2dyZXAuYzo2OTYKIG1zZ2lkICJwcmludCBlbXB0eSBsaW5lIGJldHdlZW4gbWF0Y2hlcyBmcm9tIGRpZmZlcmVudCBmaWxlcyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGTDsm5nIHRy4buRbmcgZ2nhu69hIGPDoWMgbOG6p24ga2jhu5twIHThu6sgY8OhYyB04bqtcCB0aW4ga2jDoWMgYmnhu4d0IgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTkKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5OAogbXNnaWQgInNob3cgZmlsZW5hbWUgb25seSBvbmNlIGFib3ZlIG1hdGNoZXMgZnJvbSBzYW1lIGZpbGUiCiBtc2dzdHIgIiIKICJoaeG7g24gdGjhu4sgdMOqbiB04bqtcCB0aW4gbeG7mXQgbOG6p24gcGjDrWEgdHLDqm4gY8OhYyBs4bqnbiBraOG7m3AgdOG7qyBjw7luZyBt4buZdCB04bqtcCB0aW4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcwMgorIzogYnVpbHRpbi9ncmVwLmM6NzAxCiBtc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBiZWZvcmUgYW5kIGFmdGVyIG1hdGNoZXMiCiBtc2dzdHIgImhp4buDbiB0aOG7iyA8bj4gZMOybmcgbuG7mWkgZHVuZyBwaMOtYSB0csaw4bubYyB2w6Agc2F1IGPDoWMgbOG6p24ga2jhu5twIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MDUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNAogbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIG1hdGNoZXMiCiBtc2dzdHIgImhp4buDbiB0aOG7iyA8bj4gZMOybmcgbuG7mWkgZHVuZyB0csaw4bubYyBraOG7m3AiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcwNworIzogYnVpbHRpbi9ncmVwLmM6NzA2CiBtc2dpZCAic2hvdyA8bj4gY29udGV4dCBsaW5lcyBhZnRlciBtYXRjaGVzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgPG4+IGTDsm5nIG7hu5lpIGR1bmcgc2F1IGto4bubcCIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzA4CisjOiBidWlsdGluL2dyZXAuYzo3MDcKIG1zZ2lkICJzaG9ydGN1dCBmb3IgLUMgTlVNIgogbXNnc3RyICJE4bqhbmcgdOG6r3QgY2hvIC1DIFPhu5AiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcxMQorIzogYnVpbHRpbi9ncmVwLmM6NzEwCiBtc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGTDsm5nIHbDs2kgdMOqbiBow6BtIHRyxrDhu5tjIGPDoWMgbOG6p24ga2jhu5twIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MTMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxMgogbXNnaWQgInNob3cgdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9uIgogbXNnc3RyICJoaeG7g24gdGjhu4sgaMOgbSBiYW8gcXVhbmgiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcxNgorIzogYnVpbHRpbi9ncmVwLmM6NzE1CiBtc2dpZCAicmVhZCBwYXR0ZXJucyBmcm9tIGZpbGUiCiBtc2dzdHIgIsSR4buNYyBt4bqrdSB04burIHThuq1wLXRpbiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzE4CisjOiBidWlsdGluL2dyZXAuYzo3MTcKIG1zZ2lkICJtYXRjaCA8cGF0dGVybj4iCiBtc2dzdHIgIm1hdGNoIDxt4bqrdT4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcyMAorIzogYnVpbHRpbi9ncmVwLmM6NzE5CiBtc2dpZCAiY29tYmluZSBwYXR0ZXJucyBzcGVjaWZpZWQgd2l0aCAtZSIKIG1zZ3N0ciAidOG7lSBo4bujcCBt4bqrdSDEkcaw4bujYyBjaOG7iSByYSB24bubaSB0w7l5IGNo4buNbiAtZSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzMyCisjOiBidWlsdGluL2dyZXAuYzo3MzEKIG1zZ2lkICJpbmRpY2F0ZSBoaXQgd2l0aCBleGl0IHN0YXR1cyB3aXRob3V0IG91dHB1dCIKIG1zZ3N0ciAixJHGsGEgcmEgZ+G7o2kgw70gduG7m2kgdHLhuqFuZyB0aMOhaSB0aG/DoXQgbcOgIGtow7RuZyBjw7Mga+G6v3QgeHXhuqV0IgogCi0jOiBidWlsdGluL2dyZXAuYzo3MzQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczMwogbXNnaWQgInNob3cgb25seSBtYXRjaGVzIGZyb20gZmlsZXMgdGhhdCBtYXRjaCBhbGwgcGF0dGVybnMiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyBuaOG7r25nIGPDoWkga2jhu5twIHThu6sgdOG6rXAgdGluIG3DoCBuw7Mga2jhu5twIHRvw6BuIGLhu5kgY8OhYyBt4bqrdSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzM2CisjOiBidWlsdGluL2dyZXAuYzo3MzUKIG1zZ2lkICJzaG93IHBhcnNlIHRyZWUgZm9yIGdyZXAgZXhwcmVzc2lvbiIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDonkgcGjDom4gdMOtY2ggY8O6IHBow6FwIGNobyBiaeG7g3UgdGjhu6ljIOKAnGdyZXDigJ0gKHTDrG0ga2nhur9tKSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzQwCisjOiBidWlsdGluL2dyZXAuYzo3MzkKIG1zZ2lkICJwYWdlciIKIG1zZ3N0ciAidHJhbmcgZ2nhuqV5IgogCi0jOiBidWlsdGluL2dyZXAuYzo3NDAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczOQogbXNnaWQgInNob3cgbWF0Y2hpbmcgZmlsZXMgaW4gdGhlIHBhZ2VyIgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4ga2jhu5twIHRyb25nIHRyYW5nIGdp4bqleSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzQzCisjOiBidWlsdGluL2dyZXAuYzo3NDIKIG1zZ2lkICJhbGxvdyBjYWxsaW5nIG9mIGdyZXAoMSkgKGlnbm9yZWQgYnkgdGhpcyBidWlsZCkiCiBtc2dzdHIgImNobyBwaMOpcCBn4buNaSBncmVwKDEpIChi4buLIGLhu48gcXVhIGLhu59pIGzhuqduIGThu4tjaCBuw6B5KSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzQ0IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MyBidWlsdGluL3Nob3ctcmVmLmM6MTg4CiBtc2dpZCAic2hvdyB1c2FnZSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWNoIGTDuW5nIgogCi0jOiBidWlsdGluL2dyZXAuYzo4MTEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjgxMAogbXNnaWQgIm5vIHBhdHRlcm4gZ2l2ZW4uIgogbXNnc3RyICJjaMawYSBjaOG7iSByYSBt4bqrdS4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjg2NgorIzogYnVpbHRpbi9ncmVwLmM6ODY1CiBtc2dpZCAiLS1vcGVuLWZpbGVzLWluLXBhZ2VyIG9ubHkgd29ya3Mgb24gdGhlIHdvcmt0cmVlIgogbXNnc3RyICItLW9wZW4tZmlsZXMtaW4tcGFnZXIgY2jhu4kgbMOgbSB2aeG7h2MgdHLDqm4gY8OieS1sw6BtLXZp4buHYyIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODg5CisjOiBidWlsdGluL2dyZXAuYzo4ODgKIG1zZ2lkICItLWNhY2hlZCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbm8taW5kZXguIgogbXNnc3RyICItLWNhY2hlZCBoYXkgLS11bnRyYWNrZWQga2jDtG5nIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpIC0tbm8taW5kZXguIgogCi0jOiBidWlsdGluL2dyZXAuYzo4OTQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg5MwogbXNnaWQgIi0tbm8taW5kZXggb3IgLS11bnRyYWNrZWQgY2Fubm90IGJlIHVzZWQgd2l0aCByZXZzLiIKIG1zZ3N0ciAiIgogIi0tbm8taW5kZXggaGF5IC0tdW50cmFja2VkIGtow7RuZyDEkcaw4bujYyBz4butIGThu6VuZyBjw7luZyB24bubaSBjw6FjIHTDuXkgY2jhu41uIGxpw6puICIKICJxdWFuIMSR4bq/biByZXZzLiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODk3CisjOiBidWlsdGluL2dyZXAuYzo4OTYKIG1zZ2lkICItLVtuby1dZXhjbHVkZS1zdGFuZGFyZCBjYW5ub3QgYmUgdXNlZCBmb3IgdHJhY2tlZCBjb250ZW50cy4iCiBtc2dzdHIgIi0tW25vLV1leGNsdWRlLXN0YW5kYXJkIGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjaG8gbuG7mWkgZHVuZyBsxrB1IGThuqV1IHbhur90LiIKIAotIzogYnVpbHRpbi9ncmVwLmM6OTA1CisjOiBidWlsdGluL2dyZXAuYzo5MDQKIG1zZ2lkICJib3RoIC0tY2FjaGVkIGFuZCB0cmVlcyBhcmUgZ2l2ZW4uIgogbXNnc3RyICJj4bqjIGhhaSAtLWNhY2hlZCB2w6AgY8OhYyBjw6J5IHBo4bqjaSDEkcaw4bujYyBjaOG7iSByYS4iCiAKQEAgLTUzMDMsNTQgKzU1MjcsNTQgQEAKIG1zZ2lkICJwcm9jZXNzIGZpbGUgYXMgaXQgd2VyZSBmcm9tIHRoaXMgcGF0aCIKIG1zZ3N0ciAieOG7rSBsw70gdOG6rXAgdGluIG5oxrAgbMOgIG7DsyDEkWFuZyDhu58gdGjGsCBt4bulYyBuw6B5IgogCi0jOiBidWlsdGluL2hlbHAuYzo0MworIzogYnVpbHRpbi9oZWxwLmM6NDEKIG1zZ2lkICJwcmludCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgZGFuaCBzw6FjaCBjw6FjIGPDonUgbOG7h25oIG5nxrDhu51pIGTDuW5nIGPDsyB0aOG7gyBz4butIGThu6VuZyIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDQKKyM6IGJ1aWx0aW4vaGVscC5jOjQyCiBtc2dpZCAicHJpbnQgbGlzdCBvZiB1c2VmdWwgZ3VpZGVzIgogbXNnc3RyICJoaeG7g24gdGjhu4sgZGFuaCBzw6FjaCBjw6FjIGjGsOG7m25nIGThuqtuIGjhu691IGThu6VuZyIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDUKKyM6IGJ1aWx0aW4vaGVscC5jOjQzCiBtc2dpZCAic2hvdyBtYW4gcGFnZSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRyYW5nIG1hbiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDYKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0CiBtc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBoxrDhu5tuZyBk4bqrbiBz4butIGThu6VuZyB0cm9uZyB0csOsbmggZHV54buHdCB3ZWIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ4CisjOiBidWlsdGluL2hlbHAuYzo0NgogbXNnaWQgInNob3cgaW5mbyBwYWdlIgogbXNnc3RyICJoaeG7h24gdHJhbmcgaW5mbyIKIAotIzogYnVpbHRpbi9oZWxwLmM6NTQKKyM6IGJ1aWx0aW4vaGVscC5jOjUyCiBtc2dpZCAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFtjb21tYW5kXSIKIG1zZ3N0ciAiZ2l0IGhlbHAgWy0tYWxsXSBbLS1ndWlkZXNdIFstLW1hbnwtLXdlYnwtLWluZm9dIFts4buHbmhdIgogCi0jOiBidWlsdGluL2hlbHAuYzo2NgorIzogYnVpbHRpbi9oZWxwLmM6NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5yZWNvZ25pemVkIGhlbHAgZm9ybWF0ICclcyciCiBtc2dzdHIgImtow7RuZyBuaOG6rW4gcmEgxJHhu4tuaCBk4bqhbmcgdHLhu6MgZ2nDunAg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjk0CisjOiBidWlsdGluL2hlbHAuYzo5MgogbXNnaWQgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC4iCiBtc2dzdHIgIkzhu5dpIGto4bufaSBjaOG6oXkgZW1hY3NjbGllbnQuIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMDcKKyM6IGJ1aWx0aW4vaGVscC5jOjEwNQogbXNnaWQgIkZhaWxlZCB0byBwYXJzZSBlbWFjc2NsaWVudCB2ZXJzaW9uLiIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHBow6JuIHTDrWNoIHBoacOqbiBi4bqjbiBlbWFjc2NsaWVudC4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjExNQorIzogYnVpbHRpbi9oZWxwLmM6MTEzCiAjLCBjLWZvcm1hdAogbXNnaWQgImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS4iCiBtc2dzdHIgInBoacOqbiBi4bqjbiBj4bunYSBlbWFjc2NsaWVudCDigJwlZOKAnSBxdcOhIGPFqSAoPCAyMikuIgogCi0jOiBidWlsdGluL2hlbHAuYzoxMzMgYnVpbHRpbi9oZWxwLmM6MTYxIGJ1aWx0aW4vaGVscC5jOjE3MCBidWlsdGluL2hlbHAuYzoxNzgKKyM6IGJ1aWx0aW4vaGVscC5jOjEzMSBidWlsdGluL2hlbHAuYzoxNTkgYnVpbHRpbi9oZWxwLmM6MTY4IGJ1aWx0aW4vaGVscC5jOjE3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gZXhlYyAnJXMnOiAlcyIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHRo4buxYyB0aGkg4oCcJXPigJ06ICVzIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMTgKKyM6IGJ1aWx0aW4vaGVscC5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKQEAgLTUzNTksNyArNTU4Myw3IEBACiAi4oCcJXPigJ06IMSRxrDhu51uZyBk4bqrbiBraMO0bmcgaOG7lyB0cuG7oyBi4buZIHRyw6xuaCBjaGnhur91IG1hbi5cbiIKICJIw6N5IGPDom4gbmjhuq9jIMSR4bq/biB2aeG7h2Mgc+G7rSBk4bulbmcg4oCcbWFuLjx0b29sPi5jbWTigJ0gxJHhu4MgdGhheSB0aOG6vy4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIzMAorIzogYnVpbHRpbi9oZWxwLmM6MjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgpAQCAtNTM2OCwzMzUgKzU1OTIsMzM1IEBACiAi4oCcJXPigJ06IGNtZCAobOG7h25oKSBo4buXIHRy4bujIGLhu5kgdHLDrG5oIGNoaeG6v3UgbWFuLlxuIgogIkjDo3kgY8OibiBuaOG6r2MgxJHhur9uIHZp4buHYyBz4butIGThu6VuZyDigJxtYW4uPHRvb2w+LnBhdGjigJ0gxJHhu4MgdGhheSB0aOG6vy4iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM1MQorIzogYnVpbHRpbi9oZWxwLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVua25vd24gbWFuIHZpZXdlci4iCiBtc2dzdHIgIuKAnCVz4oCdOiBraMO0bmcgcsO1IGNoxrDGoW5nIHRyw6xuaCB4ZW0gbWFuLiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzY4CisjOiBidWlsdGluL2hlbHAuYzozNjYKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgImtow7RuZyBjw7MgdHLDrG5oIHhlbSB0cuG7oyBnacO6cCBk4bqhbmcgbWFucGFnZSB0aeG6v3AgaOG7o3AgduG7m2kgecOqdSBj4bqndSIKIAotIzogYnVpbHRpbi9oZWxwLmM6Mzc2CisjOiBidWlsdGluL2hlbHAuYzozNzQKIG1zZ2lkICJubyBpbmZvIHZpZXdlciBoYW5kbGVkIHRoZSByZXF1ZXN0IgogbXNnc3RyICJraMO0bmcgY8OzIHRyw6xuaCB4ZW0gdHLhu6MgZ2nDunAgZOG6oW5nIGluZm8gdGnhur9wIGjhu6NwIHbhu5tpIHnDqnUgY+G6p3UiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyMgorIzogYnVpbHRpbi9oZWxwLmM6NDIwCiBtc2dpZCAiRGVmaW5pbmcgYXR0cmlidXRlcyBwZXIgcGF0aCIKIG1zZ3N0ciAixJDhu4tuaCBuZ2jEqWEgY8OhYyB0aHXhu5ljIHTDrW5oIGNobyBt4buXaSDEkcaw4budbmcgZOG6q24iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyMworIzogYnVpbHRpbi9oZWxwLmM6NDIxCiBtc2dpZCAiQSBHaXQgZ2xvc3NhcnkiCiBtc2dzdHIgIlRodeG6rXQgbmfhu68gY2h1ecOqbiBtw7RuIEdpdCIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDI0CisjOiBidWlsdGluL2hlbHAuYzo0MjIKIG1zZ2lkICJTcGVjaWZpZXMgaW50ZW50aW9uYWxseSB1bnRyYWNrZWQgZmlsZXMgdG8gaWdub3JlIgotbXNnc3RyICJDaOG7iSDEkeG7i25oIGPDoWMgdOG6rXAgdGluIGNoxrBhIHRoZW8gZMO1aSBk4bqldSB24bq/dCBi4buLIGLhu48gcXVhIG3hu5l0IGPDoWNoIGPhu5Egw70iCittc2dzdHIgIkNo4buJIMSR4buLbmggY8OhYyB04bqtcCB0aW4ga2jDtG5nIGPhuqduIHRoZW8gZMO1aSIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDI1CisjOiBidWlsdGluL2hlbHAuYzo0MjMKIG1zZ2lkICJEZWZpbmluZyBzdWJtb2R1bGUgcHJvcGVydGllcyIKIG1zZ3N0ciAixJDhu4tuaCBuZ2jEqWEgdGh14buZYyB0w61uaCBtw7QtxJF1bi1jb24iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyNgorIzogYnVpbHRpbi9oZWxwLmM6NDI0CiBtc2dpZCAiU3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0IgogbXNnc3RyICJDaOG7iSDEkeG7i25oIMSRaeG7g20geMOpdCBkdXnhu4d0IHbDoCB2w7luZyBjaG8gR2l0IgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjcKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNQogbXNnaWQgIkEgdHV0b3JpYWwgaW50cm9kdWN0aW9uIHRvIEdpdCAoZm9yIHZlcnNpb24gMS41LjEgb3IgbmV3ZXIpIgotbXNnc3RyICJIxrDhu5tuZyBk4bqrbiBjw6FjaCBkw7luZyBHaXQg4bufIG3hu6ljIGPGoSBi4bqjbiAoZMOgbmggY2hvIGLhuqNuIDEuNS4xIGhheSBt4bubaSBoxqFuKSIKK21zZ3N0ciAiSMaw4bubbmcgZOG6q24gY8OhY2ggZMO5bmcgR2l0IOG7nyBt4bupYyBjxqEgYuG6o24gKGLhuqNuIDEuNS4xIGhheSBt4bubaSBoxqFuKSIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDI4CisjOiBidWlsdGluL2hlbHAuYzo0MjYKIG1zZ2lkICJBbiBvdmVydmlldyBvZiByZWNvbW1lbmRlZCB3b3JrZmxvd3Mgd2l0aCBHaXQiCiBtc2dzdHIgIlThu5VuZyBxdWFuIHbhu4EgbHXhu5NuZyBjw7RuZyB2aeG7h2Mga2h1eeG6v24gbmdo4buLIG7Dqm4gZMO5bmcgduG7m2kgR2l0LiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDQwCisjOiBidWlsdGluL2hlbHAuYzo0MzgKIG1zZ2lkICJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIgogbXNnc3RyICJDw6FjIGNo4buJIGThuqtuIGNodW5nIHbhu4EgY8OhY2ggZMO5bmcgR2l0IGzDoDpcbiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDYyIGJ1aWx0aW4vaGVscC5jOjQ3OAorIzogYnVpbHRpbi9oZWxwLmM6NDYwIGJ1aWx0aW4vaGVscC5jOjQ3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1c2FnZTogJXMlcyIKIG1zZ3N0ciAiY8OhY2ggc+G7rSBk4bulbmc6ICVzJXMiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ5NAorIzogYnVpbHRpbi9oZWxwLmM6NDkyCiAjLCBjLWZvcm1hdAogbXNnaWQgImBnaXQgJXMnIGlzIGFsaWFzZWQgdG8gYCVzJyIKIG1zZ3N0ciAi4oCcZ2l0ICVz4oCdIMSRxrDhu6NjIMSR4bq3dCBiw60gZGFuaCB0aMOgbmgg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm9iamVjdCB0eXBlIG1pc21hdGNoIGF0ICVzIgogbXNnc3RyICJraeG7g3UgxJHhu5FpIHTGsOG7o25nIGtow7RuZyBraOG7m3AgdOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIwMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjA0CiBtc2dpZCAib2JqZWN0IG9mIHVuZXhwZWN0ZWQgdHlwZSIKIG1zZ3N0ciAixJHhu5FpIHTGsOG7o25nIGPhu6dhIGtp4buDdSBraMO0bmcgbW9uZyDEkeG7o2kiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBmaWxsICVkIGJ5dGUiCiBtc2dpZF9wbHVyYWwgImNhbm5vdCBmaWxsICVkIGJ5dGVzIgogbXNnc3RyWzBdICJraMO0bmcgdGjhu4MgxJFp4buBbiB2w6BvICVkIGJ5dGUiCiBtc2dzdHJbMV0gImtow7RuZyB0aOG7gyDEkWnhu4FuIHbDoG8gJWQgYnl0ZSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTQKIG1zZ2lkICJlYXJseSBFT0YiCiBtc2dzdHIgInbhu6thIMSRw7puZyBsw7pjIEVPRiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTUKIG1zZ2lkICJyZWFkIGVycm9yIG9uIGlucHV0IgogbXNnc3RyICJs4buXaSDEkeG7jWMg4bufIMSR4bqndSB2w6BvIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI2NwogbXNnaWQgInVzZWQgbW9yZSBieXRlcyB0aGFuIHdlcmUgYXZhaWxhYmxlIgogbXNnc3RyICJz4butIGThu6VuZyBuaGnhu4F1IGjGoW4gc+G7kSBsxrDhu6NuZyBieXRlIG3DoCBuw7Mgc+G6tW4gY8OzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI3NAogbXNnaWQgInBhY2sgdG9vIGxhcmdlIGZvciBjdXJyZW50IGRlZmluaXRpb24gb2Ygb2ZmX3QiCiBtc2dzdHIgInBhY2sgcXXDoSBs4bubbiBzbyB24bubaSDEkeG7i25oIG5naMSpYSBoaeG7h24gdOG6oWkgY+G7p2Ega2nhu4N1IG9mZl90IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyODUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjkwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyOTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gcGFja2ZpbGUgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIG3hu58gcGFja2ZpbGUg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzA5CiBtc2dpZCAicGFjayBzaWduYXR1cmUgbWlzbWF0Y2giCiBtc2dzdHIgImNo4buvIGvDvSBjaG8gcGFjayBraMO0bmcga2jhu5twIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIHZlcnNpb24gJTxQUkl1MzI+IHVuc3VwcG9ydGVkIgogbXNnc3RyICJraMO0bmcgaOG7lyB0cuG7oyBwaGnDqm4gYuG6o24gcGFjayAlPFBSSXUzMj4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzI5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzIGJhZCBvYmplY3QgYXQgb2Zmc2V0ICVsdTogJXMiCiBtc2dzdHIgInBhY2sgY8OzIMSR4buRaSB0xrDhu6NuZyBzYWkga2hv4bqjbmcgYsO5IChvZmZzZXQpICVsdTogJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjQ0NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImluZmxhdGUgcmV0dXJuZWQgJWQiCiBtc2dzdHIgInjhuqMgbsOpbiB0cuG6oyB24buBICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMAogbXNnaWQgIm9mZnNldCB2YWx1ZSBvdmVyZmxvdyBmb3IgZGVsdGEgYmFzZSBvYmplY3QiCiBtc2dzdHIgInRyw6BuIGdpw6EgdHLhu4sga2hv4bqjbmcgYsO5IGNobyDEkeG7kWkgdMaw4bujbmcgZGVsdGEgY8ahIHPhu58iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTA4CiBtc2dpZCAiZGVsdGEgYmFzZSBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kIgogbXNnc3RyICJraG/huqNuZyBiw7kgY8ahIHPhu58gY2hvIGRlbHRhIG7hurFtIG5nb8OgaSBwaOG6oW0gdmkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgImtow7RuZyBoaeG7g3Uga2nhu4N1IMSR4buRaSB0xrDhu6NuZyAlZCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDcKIG1zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgY2jhuqF5IGjDoG0gcHJlYWQgY2hvIHThuq1wIHRpbiBwYWNrIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGUgbWlzc2luZyIKIG1zZ2lkX3BsdXJhbCAicHJlbWF0dXJlIGVuZCBvZiBwYWNrIGZpbGUsICVsdSBieXRlcyBtaXNzaW5nIgogbXNnc3RyWzBdICJ04bqtcCB0aW4gcGFjayBi4buLIGvhur90IHRow7pjIHPhu5ttLCAlbHUgYnl0ZSBi4buLIHRoaeG6v3UiCiBtc2dzdHJbMV0gInThuq1wIHRpbiBwYWNrIGLhu4sga+G6v3QgdGjDumMgc+G7m20sICVsdSBieXRlIGLhu4sgdGhp4bq/dSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NzUKIG1zZ2lkICJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIKIG1zZ3N0ciAic+G7sSBtw6J1IHRodeG6q24geOG6oyBuw6luIG5naGnDqm0gdHLhu41uZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjYxIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NyBidWlsdGluL2luZGV4LXBhY2suYzo2OTAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyNCBidWlsdGluL2luZGV4LXBhY2suYzo3MzMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2NiBidWlsdGluL2luZGV4LXBhY2suYzo2NzIgYnVpbHRpbi9pbmRleC1wYWNrLmM6Njk1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MjkgYnVpbHRpbi9pbmRleC1wYWNrLmM6NzM4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlNIQTEgQ09MTElTSU9OIEZPVU5EIFdJVEggJXMgISIKIG1zZ3N0ciAiU+G7sCBWQSBDSOG6oE0gU0hBMSDEkMODIFjhuqJZIFJBIFbhu5pJICVzISIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY0IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjkgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKICM6IGJ1aWx0aW4vcGFjay1vYmplY3RzLmM6MjYyCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byByZWFkICVzIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczNQogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCBleGlzdGluZyBvYmplY3QgJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nIMSRw6MgdOG7k24gdOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgYmxvYiBvYmplY3QgJXMiCiBtc2dzdHIgIsSR4buRaSB0xrDhu6NuZyBibG9iIGtow7RuZyBo4bujcCBs4buHICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo3NTkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkICVzIgogbXNnc3RyICIlcyBraMO0bmcgaOG7o3AgbOG7hyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjYKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIkzhu5dpIHRyb25nIMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiCiBtc2dzdHIgIktow7RuZyBwaOG6o2kgdOG6pXQgY+G6oyBjw6FjIMSR4buRaSB0xrDhu6NuZyBjb24gY+G7p2EgJXMgbMOgIGPDsyB0aOG7gyB24bubaSB04bubaSDEkcaw4bujYyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODM4IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2OAogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIMOhcCBk4bulbmcgZGVsdGEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDkKIG1zZ2lkICJSZWNlaXZpbmcgb2JqZWN0cyIKIG1zZ3N0ciAixJBhbmcgbmjhuq1uIHbhu4EgY8OhYyDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMDkKIG1zZ2lkICJJbmRleGluZyBvYmplY3RzIgogbXNnc3RyICJDw6FjIMSR4buRaSB0xrDhu6NuZyBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzUKIG1zZ2lkICJwYWNrIGlzIGNvcnJ1cHRlZCAoU0hBMSBtaXNtYXRjaCkiCiBtc2dzdHIgInBhY2sgYuG7iyBzYWkgaOG7j25nIChTSEExIGtow7RuZyBraOG7m3ApIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDM1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDQwCiBtc2dpZCAiY2Fubm90IGZzdGF0IHBhY2tmaWxlIgogbXNnc3RyICJraMO0bmcgdGjhu4MgZnN0YXQgcGFja2ZpbGUiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzgKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDMKIG1zZ2lkICJwYWNrIGhhcyBqdW5rIGF0IHRoZSBlbmQiCiBtc2dzdHIgInBhY2sgY8OzIHBo4bqnbiB0aOG7q2Eg4bufIGN14buRaSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA0OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA1NAogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkgaW4gcGFyc2VfcGFja19vYmplY3RzKCkiCiBtc2dzdHIgImzhu5luIHjhu5luIGjGoW4gY+G6oyDEkWnDqm4gcuG7kyBraGkgY2jhuqF5IGjDoG0gcGFyc2VfcGFja19vYmplY3RzKCkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNzIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNzcKIG1zZ2lkICJSZXNvbHZpbmcgZGVsdGFzIgogbXNnc3RyICLEkGFuZyBwaMOibiBnaeG6o2kgY8OhYyBkZWx0YSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRocmVhZDogJXMiCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyB0dXnhur9uOiAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEyOQogbXNnaWQgImNvbmZ1c2lvbiBiZXlvbmQgaW5zYW5pdHkiCiBtc2dzdHIgImzhu5luIHjhu5luIGjGoW4gY+G6oyDEkWnDqm4gcuG7kyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb21wbGV0ZWQgd2l0aCAlZCBsb2NhbCBvYmplY3RzIgogbXNnc3RyICLEkeG6p3kgxJHhu6cgduG7m2kgJWQgxJHhu5FpIHTGsOG7o25nIG7hu5lpIGLhu5kiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5leHBlY3RlZCB0YWlsIGNoZWNrc3VtIGZvciAlcyAoZGlzayBjb3JydXB0aW9uPykiCiBtc2dzdHIgIlThu5VuZyBraeG7g20gdHJhIHRhaWwga2jDtG5nIG5oxrAgbW9uZyDEkeG7o2kgY2hvICVzICjEkcSpYSBo4buPbmc/KSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE0NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTE1MQogIywgYy1mb3JtYXQKIG1zZ2lkICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhIgogbXNnaWRfcGx1cmFsICJwYWNrIGhhcyAlZCB1bnJlc29sdmVkIGRlbHRhcyIKIG1zZ3N0clswXSAicGFjayBjw7MgJWQgZGVsdGEgY2jGsGEgxJHGsOG7o2MgZ2nhuqNpIHF1eeG6v3QiCiBtc2dzdHJbMV0gInBhY2sgY8OzICVkIGRlbHRhIGNoxrBhIMSRxrDhu6NjIGdp4bqjaSBxdXnhur90IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTcxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBkZWZsYXRlIGFwcGVuZGVkIG9iamVjdCAoJWQpIgogbXNnc3RyICJraMO0bmcgdGjhu4MgeOG6oyDEkeG7kWkgdMaw4bujbmcgbuG7kWkgdGjDqm0gKCVkKSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI1MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJsb2NhbCBvYmplY3QgJXMgaXMgY29ycnVwdCIKIG1zZ3N0ciAixJHhu5FpIHTGsOG7o25nIG7hu5lpIGLhu5kgJXMgYuG7iyBo4buPbmciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEyNzkKIG1zZ2lkICJlcnJvciB3aGlsZSBjbG9zaW5nIHBhY2sgZmlsZSIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kgdHJvbmcga2hpIMSRw7NuZyB04bqtcCB0aW4gcGFjayIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGdp4buvIGzhuqFpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjk1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzAwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjbG9zZSB3cml0dGVuIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHDs25nIHThuq1wIHRpbiBnaeG7ryBs4bqhaSDEkcOjIMSRxrDhu6NjIGdoaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwOAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxMwogbXNnaWQgImNhbm5vdCBzdG9yZSBwYWNrIGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBsxrB1IHThuq1wIHRpbiBwYWNrIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzE5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzI0CiBtc2dpZCAiY2Fubm90IHN0b3JlIGluZGV4IGZpbGUiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBsxrB1IHRy4buvIHThuq1wIHRpbiBnaGkgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIG1zZ3N0ciAic2FpIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG51bWJlciBvZiB0aHJlYWRzIHNwZWNpZmllZCAoJWQpIgogbXNnc3RyICJz4buRIHR1eeG6v24gY2jhu4kgcmEga2jDtG5nIGjhu6NwIGzhu4cgKCVkKSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzY3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGhyZWFkcyBzdXBwb3J0LCBpZ25vcmluZyAlcyIKIG1zZ3N0ciAia2jDtG5nIGjhu5cgdHLhu6MgxJFhIHR1eeG6v24sIGLhu48gcXVhICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgZmlsZSAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyB04bqtcCB0aW4gcGFjayDEkcOjIHPhurVuIGPDsyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGlkeCBmaWxlIGZvciAnJXMnIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgbeG7nyB04bqtcCB0aW4g4oCccGFjayBpZHjigJ0gY2hvIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDY5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vbiBkZWx0YTogJWQgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJub24gZGVsdGE6ICVkIG9iamVjdHMiCiBtc2dzdHJbMF0gImtow7RuZyBkZWx0YTogJWQgxJHhu5FpIHTGsOG7o25nIgogbXNnc3RyWzFdICJraMO0bmcgZGVsdGE6ICVkIMSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ3NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQ4MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdCIKIG1zZ2lkX3BsdXJhbCAiY2hhaW4gbGVuZ3RoID0gJWQ6ICVsdSBvYmplY3RzIgogbXNnc3RyWzBdICJjaGnhu4F1IGTDoGkgeMOtY2ggPSAlZDogJWx1IMSR4buRaSB0xrDhu6NuZyIKIG1zZ3N0clsxXSAiY2hp4buBdSBkw6BpIHjDrWNoID0gJWQ6ICVsdSDEkeG7kWkgdMaw4bujbmciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MDMKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1MDkKIG1zZ2lkICJDYW5ub3QgY29tZSBiYWNrIHRvIGN3ZCIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHF1YXkgbOG6oWkgY3dkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTQ3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NTAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2NgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1NyBidWlsdGluL2luZGV4LXBhY2suYzoxNTYwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTcyIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkICVzIgogbXNnc3RyICIlcyBzYWkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1ODAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1OTAKIG1zZ2lkICItLWZpeC10aGluIGNhbm5vdCBiZSB1c2VkIHdpdGhvdXQgLS1zdGRpbiIKIG1zZ3N0ciAiLS1maXgtdGhpbiBraMO0bmcgdGjhu4MgxJHGsOG7o2MgZMO5bmcgbcOgIGtow7RuZyBjw7MgLS1zdGRpbiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4NCBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFja2ZpbGUgbmFtZSAnJXMnIGRvZXMgbm90IGVuZCB3aXRoICcucGFjayciCiBtc2dzdHIgInTDqm4gdOG6rXAgdGluIHBhY2tmaWxlIOKAnCVz4oCdIGtow7RuZyDEkcaw4bujYyBr4bq/dCB0aMO6YyBi4bqxbmcgxJF1w7RpIOKAnC5wYWNr4oCdIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNjAzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNjEzCiBtc2dpZCAiLS12ZXJpZnkgd2l0aCBubyBwYWNrZmlsZSBuYW1lIGdpdmVuIgogbXNnc3RyICJkw7luZyB0w7l5IGNo4buNbiAtLXZlcmlmeSBtw6Aga2jDtG5nIMSRxrBhIHJhIHTDqm4gcGFja2ZpbGUiCiAKQEAgLTU4MzIsNyArNjA1Niw3IEBACiBtc2dpZCAic3BlY2lmeSB0aGF0IHRoZSBnaXQgcmVwb3NpdG9yeSBpcyB0byBiZSBzaGFyZWQgYW1vbmdzdCBzZXZlcmFsIHVzZXJzIgogbXNnc3RyICJjaOG7iSByYSBjw6FpIG3DoCBraG8gZ2l0IMSRxrDhu6NjIGNoaWEgc+G6uyBnaeG7r2Egbmhp4buBdSBuZ8aw4budaSBkw7luZyIKIAotIzogYnVpbHRpbi9pbml0LWRiLmM6NDkzIGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzcKKyM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MyBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc1CiBtc2dpZCAiYmUgcXVpZXQiCiBtc2dzdHIgImltIGzhurduZyIKIApAQCAtNTg2NCwyNDEgKzYwODgsMjU1IEBACiBtc2dpZCAiQ2Fubm90IGFjY2VzcyB3b3JrIHRyZWUgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHRydXkgY+G6rXAgY8OieSAodHJlZSkgbMOgbSB2aeG7h2Mg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NDAKKyM6IGJ1aWx0aW4vbG9nLmM6NDEKIG1zZ2lkICJnaXQgbG9nIFs8b3B0aW9ucz5dIFs8cmV2aXNpb24gcmFuZ2U+XSBbWy0tXSA8cGF0aD4uLi5dXG4iCiBtc2dzdHIgImdpdCBsb2cgWzxjw6FjLXTDuXktY2jhu41uPl0gWzx2w7luZyB4ZW0geMOpdD5dIFtbLS1dIDzEkcaw4budbmctZOG6q24+Li4uXVxuIgogCi0jOiBidWlsdGluL2xvZy5jOjQxCisjOiBidWlsdGluL2xvZy5jOjQyCiBtc2dpZCAiICAgb3I6IGdpdCBzaG93IFtvcHRpb25zXSA8b2JqZWN0Pi4uLiIKIG1zZ3N0ciAiICBoYXk6IGdpdCBzaG93IFtjw6FjLXTDuXktY2jhu41uXSA8xJHhu5FpLXTGsOG7o25nPi4uLiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMDMKKyM6IGJ1aWx0aW4vbG9nLmM6MTI0CiBtc2dpZCAic3VwcHJlc3MgZGlmZiBvdXRwdXQiCiBtc2dzdHIgImNo4bq3biBt4buNaSBr4bq/dCB4deG6pXQgdOG7qyBkaWZmIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNAorIzogYnVpbHRpbi9sb2cuYzoxMjUKIG1zZ2lkICJzaG93IHNvdXJjZSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIG3DoyBuZ3Xhu5NuIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNQorIzogYnVpbHRpbi9sb2cuYzoxMjYKIG1zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKIG1zZ3N0ciAiU+G7rSBk4bulbmcgdOG6rXAgdGluIMOhbmggeOG6oSB0aMawIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNgorIzogYnVpbHRpbi9sb2cuYzoxMjcKIG1zZ2lkICJkZWNvcmF0ZSBvcHRpb25zIgogbXNnc3RyICJjw6FjIHTDuXkgY2jhu41uIHRyYW5nIHRyw60iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTk5CisjOiBidWlsdGluL2xvZy5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIkvhur90IHh14bqldCBjdeG7kWkgY8O5bmc6ICVkICVzXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NDIyIGJ1aWx0aW4vbG9nLmM6NTE0CisjOiBidWlsdGluL2xvZy5jOjQ1MyBidWlsdGluL2xvZy5jOjU0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgxJHhu5FpIHTGsOG7o25nICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjUzOAorIzogYnVpbHRpbi9sb2cuYzo1NjkKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biB0eXBlOiAlZCIKIG1zZ3N0ciAiS2jDtG5nIG5o4bqtbiByYSBraeG7g3U6ICVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYzOAorIzogYnVpbHRpbi9sb2cuYzo2NjkKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyBraMO0bmcgY8OzIGdpw6EgdHLhu4sgY+G7pSB0aOG7gyIKIAotIzogYnVpbHRpbi9sb2cuYzo3MjAKKyM6IGJ1aWx0aW4vbG9nLmM6NzUxCiBtc2dpZCAibmFtZSBvZiBvdXRwdXQgZGlyZWN0b3J5IGlzIHRvbyBsb25nIgogbXNnc3RyICJ0w6puIGPhu6dhIHRoxrAgbeG7pWMga+G6v3QgeHXhuqV0IHF1w6EgZMOgaSIKIAotIzogYnVpbHRpbi9sb2cuYzo3MzYKKyM6IGJ1aWx0aW4vbG9nLmM6NzY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIHBhdGNoIGZpbGUgJXMiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBt4bufIHThuq1wIHRpbiBtaeG6v25nIHbDoTogJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzUwCisjOiBidWlsdGluL2xvZy5jOjc4MQogbXNnaWQgIk5lZWQgZXhhY3RseSBvbmUgcmFuZ2UuIgogbXNnc3RyICJD4bqnbiBjaMOtbmggeMOhYyBt4buZdCB2w7luZy4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzU4CisjOiBidWlsdGluL2xvZy5jOjc4OQogbXNnaWQgIk5vdCBhIHJhbmdlLiIKIG1zZ3N0ciAiS2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgdsO5bmcuIgogCi0jOiBidWlsdGluL2xvZy5jOjg2MAorIzogYnVpbHRpbi9sb2cuYzo4OTEKIG1zZ2lkICJDb3ZlciBsZXR0ZXIgbmVlZHMgZW1haWwgZm9ybWF0IgogbXNnc3RyICLigJ1Db3ZlciBsZXR0ZXLigJ0gY+G6p24gY2hvIMSR4buLbmggZOG6oW5nIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6OTM2CisjOiBidWlsdGluL2xvZy5jOjk2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnNhbmUgaW4tcmVwbHktdG86ICVzIgogbXNnc3RyICJpbi1yZXBseS10byDEkWnDqm4gcuG7kzogJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6OTY0CisjOiBidWlsdGluL2xvZy5jOjk5NQogbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCiBtc2dzdHIgImdpdCBmb3JtYXQtcGF0Y2ggW2PDoWMtdMO5eS1jaOG7jW5dIFs8a+G7gy104burPiB8IDx2w7luZy14ZW0teMOpdD5dIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMDkKKyM6IGJ1aWx0aW4vbG9nLmM6MTA0MAogbXNnaWQgIlR3byBvdXRwdXQgZGlyZWN0b3JpZXM/IgogbXNnc3RyICJIYWkgdGjGsCBt4bulYyBr4bq/dCB4deG6pXQ/IgogCi0jOiBidWlsdGluL2xvZy5jOjExMDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1NQogbXNnaWQgInVzZSBbUEFUQ0ggbi9tXSBldmVuIHdpdGggYSBzaW5nbGUgcGF0Y2giCiBtc2dzdHIgImTDuW5nIFtQQVRDSCBuL21dIG5nYXkgY+G6oyB24bubaSBtaeG6v25nIHbDoSDEkcahbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTExCisjOiBidWlsdGluL2xvZy5jOjExNTgKIG1zZ2lkICJ1c2UgW1BBVENIXSBldmVuIHdpdGggbXVsdGlwbGUgcGF0Y2hlcyIKIG1zZ3N0ciAiZMO5bmcgW1bDgV0gbmdheSBj4bqjIHbhu5tpIGPDoWMgbWnhur9uZyB2w6EgcGjhu6ljIHThuqFwIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTUKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2MgogbXNnaWQgInByaW50IHBhdGNoZXMgdG8gc3RhbmRhcmQgb3V0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgbWnhur9uZyB2w6EgcmEgxJHhuqd1IHJhIGNodeG6qW4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExNworIzogYnVpbHRpbi9sb2cuYzoxMTY0CiBtc2dpZCAiZ2VuZXJhdGUgYSBjb3ZlciBsZXR0ZXIiCiBtc2dzdHIgInThuqFvIGLDrCB0aMawIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTkKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NgogbXNnaWQgInVzZSBzaW1wbGUgbnVtYmVyIHNlcXVlbmNlIGZvciBvdXRwdXQgZmlsZSBuYW1lcyIKIG1zZ3N0ciAic+G7rSBk4bulbmcgY2jhu5dpIGTDo3kgc+G7kSBk4bqhbmcgxJHGoW4gZ2nhuqNuIGNobyB0w6puIHThuq1wLXRpbiB4deG6pXQgcmEiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMAorIzogYnVpbHRpbi9sb2cuYzoxMTY3CiBtc2dpZCAic2Z4IgogbXNnc3RyICJzZngiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMQorIzogYnVpbHRpbi9sb2cuYzoxMTY4CiBtc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCiBtc2dzdHIgInPhu60gZOG7pW5nIDxzZng+IHRoYXkgY2hvIOKAnC5wYXRjaOKAnSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTIzCisjOiBidWlsdGluL2xvZy5jOjExNzAKIG1zZ2lkICJzdGFydCBudW1iZXJpbmcgcGF0Y2hlcyBhdCA8bj4gaW5zdGVhZCBvZiAxIgogbXNnc3RyICJi4bqvdCDEkeG6p3UgxJHDoW5oIHPhu5EgbWnhur9uZyB2w6EgdOG7qyA8bj4gdGhheSB2w6wgMSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTI1CisjOiBidWlsdGluL2xvZy5jOjExNzIKIG1zZ2lkICJtYXJrIHRoZSBzZXJpZXMgYXMgTnRoIHJlLXJvbGwiCiBtc2dzdHIgIsSRw6FuaCBk4bqldSBjaHXhu5dpIG7hu5FpIHRp4bq/cCBk4bqhbmcgdGjhu6ktTiByZS1yb2xsIgogCi0jOiBidWlsdGluL2xvZy5jOjExMjcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE3NAogbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKIG1zZ3N0ciAiRMO5bmcgWzx0aeG7gW4tdOG7kT5dIHRoYXkgY2hvIFtWw4FdIgogCi0jOiBidWlsdGluL2xvZy5jOjExMzAKKyM6IGJ1aWx0aW4vbG9nLmM6MTE3NwogbXNnaWQgInN0b3JlIHJlc3VsdGluZyBmaWxlcyBpbiA8ZGlyPiIKIG1zZ3N0ciAibMawdSBjw6FjIHThuq1wIHRpbiBr4bq/dCBxdeG6oyB0cm9uZyA8dC5t4bulYz4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzMworIzogYnVpbHRpbi9sb2cuYzoxMTgwCiBtc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCiBtc2dzdHIgImtow7RuZyBzdHJpcC9hZGQgW1bDgV0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzNgorIzogYnVpbHRpbi9sb2cuYzoxMTgzCiBtc2dpZCAiZG9uJ3Qgb3V0cHV0IGJpbmFyeSBkaWZmcyIKIG1zZ3N0ciAia2jDtG5nIGvhur90IHh14bqldCBkaWZmIChuaOG7r25nIGtow6FjIGJp4buHdCkgbmjhu4sgcGjDom4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzOAorIzogYnVpbHRpbi9sb2cuYzoxMTg1CiBtc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgogbXNnc3RyICJraMO0bmcgYmFvIGfhu5NtIG1p4bq/bmcgdsOhIGto4bubcCB24bubaSBt4buZdCBs4bqnbiBjaHV54buDbiBnaWFvIHRoxrDhu6NuZyBuZ3Xhu5NuIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDAKKyM6IGJ1aWx0aW4vbG9nLmM6MTE4NwogbXNnaWQgInNob3cgcGF0Y2ggZm9ybWF0IGluc3RlYWQgb2YgZGVmYXVsdCAocGF0Y2ggKyBzdGF0KSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIMSR4buLbmggZOG6oW5nIG1p4bq/bmcgdsOhIHRoYXkgdsOsIG3hurdjIMSR4buLbmggKG1p4bq/bmcgdsOhICsgdGjhu5FuZyBrw6opIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE4OQogbXNnaWQgIk1lc3NhZ2luZyIKIG1zZ3N0ciAiTOG7nWkgbmjhuq9uIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDMKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5MAogbXNnaWQgImhlYWRlciIKIG1zZ3N0ciAixJHhuqd1IMSR4buBIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0NAorIzogYnVpbHRpbi9sb2cuYzoxMTkxCiBtc2dpZCAiYWRkIGVtYWlsIGhlYWRlciIKIG1zZ3N0ciAidGjDqm0gxJHhuqd1IMSR4buBIHRoxrAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0NSBidWlsdGluL2xvZy5jOjExNDcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5MiBidWlsdGluL2xvZy5jOjExOTQKIG1zZ2lkICJlbWFpbCIKIG1zZ3N0ciAidGjGsCDEkWnhu4duIHThu60iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0NQorIzogYnVpbHRpbi9sb2cuYzoxMTkyCiBtc2dpZCAiYWRkIFRvOiBoZWFkZXIiCiBtc2dzdHIgInRow6ptIFRvOiDEkeG6p3UgxJHhu4EgdGjGsCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTQ3CisjOiBidWlsdGluL2xvZy5jOjExOTQKIG1zZ2lkICJhZGQgQ2M6IGhlYWRlciIKIG1zZ3N0ciAidGjDqm0gQ2M6IMSR4bqndSDEkeG7gSB0aMawIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDkKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5NgorbXNnaWQgImlkZW50IgorbXNnc3RyICJ0aOG7pXQgbOG7gSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTk3Cittc2dpZCAic2V0IEZyb20gYWRkcmVzcyB0byA8aWRlbnQ+IChvciBjb21taXR0ZXIgaWRlbnQgaWYgYWJzZW50KSIKK21zZ3N0ciAiIgorIsSR4bq3dCBgxJDhu4thIGNo4buJIGfhu61pJyB0aMOgbmggPHRo4bulIGzhu4E+IChob+G6t2MgdGjhu6V0IGzhu4EgbmfGsOG7nWkgY29tbWl0IG7hur91IGLhu48gcXXDqm4pIgorCisjOiBidWlsdGluL2xvZy5jOjExOTkKIG1zZ2lkICJtZXNzYWdlLWlkIgogbXNnc3RyICJtZXNzYWdlLWlkIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTIwMAogbXNnaWQgIm1ha2UgZmlyc3QgbWFpbCBhIHJlcGx5IHRvIDxtZXNzYWdlLWlkPiIKIG1zZ3N0ciAiZMO5bmcgdGjGsCDEkeG6p3UgdGnDqm4gxJHhu4MgdHLhuqMgbOG7nWkgPG1lc3NhZ2UtaWQ+IgogCi0jOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0CisjOiBidWlsdGluL2xvZy5jOjEyMDEgYnVpbHRpbi9sb2cuYzoxMjA0CiBtc2dpZCAiYm91bmRhcnkiCiBtc2dzdHIgInJhbmggZ2nhu5tpIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTIKKyM6IGJ1aWx0aW4vbG9nLmM6MTIwMgogbXNnaWQgImF0dGFjaCB0aGUgcGF0Y2giCiBtc2dzdHIgIsSRw61uaCBrw6htIG1p4bq/bmcgdsOhIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTUKKyM6IGJ1aWx0aW4vbG9nLmM6MTIwNQogbXNnaWQgImlubGluZSB0aGUgcGF0Y2giCiBtc2dzdHIgImTDuW5nIG1p4bq/bmcgdsOhIGzDoG0gbuG7mWkgZHVuZyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTU5CisjOiBidWlsdGluL2xvZy5jOjEyMDkKIG1zZ2lkICJlbmFibGUgbWVzc2FnZSB0aHJlYWRpbmcsIHN0eWxlczogc2hhbGxvdywgZGVlcCIKIG1zZ3N0ciAiY2hvIHBow6lwIGx14buTbmcgbOG7nWkgbmjhuq9uLCBraeG7g3U6IOKAnHNoYWxsb3figJ0sIOKAnGRlZXDigJ0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2MQorIzogYnVpbHRpbi9sb2cuYzoxMjExCiBtc2dpZCAic2lnbmF0dXJlIgogbXNnc3RyICJjaOG7ryBrw70iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2MgorIzogYnVpbHRpbi9sb2cuYzoxMjEyCiBtc2dpZCAiYWRkIGEgc2lnbmF0dXJlIgogbXNnc3RyICJ0aMOqbSBjaOG7ryBrw70iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2NAorIzogYnVpbHRpbi9sb2cuYzoxMjE0CiBtc2dpZCAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIKIG1zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyBjw6FjIHTDqm4gdOG6rXAgdGluIGPhu6dhIG1p4bq/bmcgdsOhIgogCi0jOiBidWlsdGluL2xvZy5jOjEyNDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4OAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlkZW50IGxpbmU6ICVzIgorbXNnc3RyICJkw7JuZyB0aOG7pXQgbOG7gSBraMO0bmcgaOG7o3AgbOG7hzogJXMiCisKKyM6IGJ1aWx0aW4vbG9nLmM6MTMwMwogbXNnaWQgIi1uIGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLW4gdsOgICAtayBsb+G6oWkgdOG7qyBs4bqrbiBuaGF1LiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjUwCisjOiBidWlsdGluL2xvZy5jOjEzMDUKIG1zZ2lkICItLXN1YmplY3QtcHJlZml4IGFuZCAtayBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKIG1zZ3N0ciAiLS1zdWJqZWN0LXByZWZpeCB2w6AgLWsgeHVuZyBraOG6r2MgbmhhdS4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI1OAorIzogYnVpbHRpbi9sb2cuYzoxMzEzCiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1uYW1lLW9ubHkga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjYwCisjOiBidWlsdGluL2xvZy5jOjEzMTUKIG1zZ2lkICItLW5hbWUtc3RhdHVzIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tbmFtZS1zdGF0dXMga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjYyCisjOiBidWlsdGluL2xvZy5jOjEzMTcKIG1zZ2lkICItLWNoZWNrIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIi0tY2hlY2sga2jDtG5nIGjhu6NwIGzDvSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjg1CisjOiBidWlsdGluL2xvZy5jOjEzNDAKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAixJHhuqd1IHJhIGNodeG6qW4sIGhheSB0aMawIG3hu6VjLCBjaOG7jW4gY8OhaSBuw6BvPyIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjg3CisjOiBidWlsdGluL2xvZy5jOjEzNDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHThuqFvIHRoxrAgbeG7pWMg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQzNQorIzogYnVpbHRpbi9sb2cuYzoxNDkwCiBtc2dpZCAiRmFpbGVkIHRvIGNyZWF0ZSBvdXRwdXQgZmlsZXMiCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB04bqhbyBjw6FjIHThuq1wIHRpbiBr4bq/dCB4deG6pXQiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTQ4NAorIzogYnVpbHRpbi9sb2cuYzoxNTM5CiBtc2dpZCAiZ2l0IGNoZXJyeSBbLXZdIFs8dXBzdHJlYW0+IFs8aGVhZD4gWzxsaW1pdD5dXV0iCiBtc2dzdHIgImdpdCBjaGVycnkgWy12XSBbPHRoxrDhu6NuZy1uZ3Xhu5NuPiBbPGhlYWQ+IFs8Z2nhu5tpLWjhuqFuPl1dXSIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTM5CisjOiBidWlsdGluL2xvZy5jOjE1OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNvdWxkIG5vdCBmaW5kIGEgdHJhY2tlZCByZW1vdGUgYnJhbmNoLCBwbGVhc2Ugc3BlY2lmeSA8dXBzdHJlYW0+IG1hbnVhbGx5LlxuIgpAQCAtNjEwNiwxMDMgKzYzNDQsMTAzIEBACiAiS2jDtG5nIHTDrG0gdGjhuqV5IG5ow6FuaCBt4bqhbmcgYuG7iyB0aGVvIHbhur90LCBow6N5IGNo4buJIMSR4buLbmggPHRoxrDhu6NuZy1uZ3Xhu5NuPiBt4buZdCBjw6FjaCAiCiAidGjhu6cgY8O0bmcuXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTU1MiBidWlsdGluL2xvZy5jOjE1NTQgYnVpbHRpbi9sb2cuYzoxNTY2CisjOiBidWlsdGluL2xvZy5jOjE2MDcgYnVpbHRpbi9sb2cuYzoxNjA5IGJ1aWx0aW4vbG9nLmM6MTYyMQogIywgYy1mb3JtYXQKIG1zZ2lkICJVbmtub3duIGNvbW1pdCAlcyIKIG1zZ3N0ciAiS2jDtG5nIGhp4buDdSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICVzIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDAyCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDA4CiBtc2dpZCAiZ2l0IGxzLWZpbGVzIFtvcHRpb25zXSBbPGZpbGU+Li4uXSIKIG1zZ3N0ciAiZ2l0IGxzLWZpbGVzIFtjw6FjLXTDuXktY2jhu41uXSBbPHThuq1wLXRpbj4uLi5dIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDU5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY1CiBtc2dpZCAiaWRlbnRpZnkgdGhlIGZpbGUgc3RhdHVzIHdpdGggdGFncyIKIG1zZ3N0ciAibmjhuq1uIGThuqFuZyBjw6FjIHRy4bqhbmcgdGjDoWkgdOG6rXAgdGluIHbhu5tpIHRo4bq7IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDYxCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY3CiBtc2dpZCAidXNlIGxvd2VyY2FzZSBsZXR0ZXJzIGZvciAnYXNzdW1lIHVuY2hhbmdlZCcgZmlsZXMiCiBtc2dzdHIgIiIKICJkw7luZyBjaOG7ryBjw6FpIHZp4bq/dCB0aMaw4budbmcgY2hvIGPDoWMgdOG6rXAgdGluIOKAnGFzc3VtZSB1bmNoYW5nZWTigJ0gKGdp4bqjIMSR4buLbmgga2jDtG5nICIKICJ0aGF5IMSR4buVaSkiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjMKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjkKIG1zZ2lkICJzaG93IGNhY2hlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IChkZWZhdWx0KSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIMSRxrDhu6NjIG5o4bubIHThuqFtIHbDoG8gxJHhuqd1IHJhICht4bq3YyDEkeG7i25oKSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQogbXNnaWQgInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4gxJHDoyB4w7NhIHRyb25nIGvhur90IHh14bqldCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NworIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MwogbXNnaWQgInNob3cgbW9kaWZpZWQgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgdOG6rXAgdGluIMSRw6MgYuG7iyBz4butYSDEkeG7lWkgcmEga+G6v3QgeHXhuqV0IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc1CiBtc2dpZCAic2hvdyBvdGhlciBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyB04bqtcCB0aW4ga2jDoWMgdHJvbmcga+G6v3QgeHXhuqV0IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDcxCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc3CiBtc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBi4buLIGLhu48gcXVhIHRyb25nIGvhur90IHh14bqldCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MAogbXNnaWQgInNob3cgc3RhZ2VkIGNvbnRlbnRzJyBvYmplY3QgbmFtZSBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICJoaeG7g24gdGjhu4sgdMOqbiDEkeG7kWkgdMaw4bujbmcgY+G7p2EgbuG7mWkgZHVuZyDEkcaw4bujYyBsxrB1IHRy4bqhbmcgdGjDoWkg4bufIGvhur90IHh14bqldCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MgogbXNnaWQgInNob3cgZmlsZXMgb24gdGhlIGZpbGVzeXN0ZW0gdGhhdCBuZWVkIHRvIGJlIHJlbW92ZWQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiB0csOqbiBo4buHIHRo4buRbmcgdOG6rXAgdGluIG3DoCBuw7MgY+G6p24gxJHGsOG7o2MgZ+G7oSBi4buPIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDc4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg0CiBtc2dpZCAic2hvdyAnb3RoZXInIGRpcmVjdG9yaWVzJyBuYW1lIG9ubHkiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyB0w6puIGPhu6dhIGPDoWMgdGjGsCBt4bulYyDigJxraMOhY+KAnSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4NwogbXNnaWQgImRvbid0IHNob3cgZW1wdHkgZGlyZWN0b3JpZXMiCiBtc2dzdHIgImtow7RuZyBoaeG7g24gdGjhu4sgdGjGsCBt4bulYyBy4buXbmciCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODQKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTAKIG1zZ2lkICJzaG93IHVubWVyZ2VkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIHThuq1wIHRpbiBjaMawYSBow7JhIHRy4buZbiB0cm9uZyBr4bq/dCB4deG6pXQiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODYKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTIKIG1zZ2lkICJzaG93IHJlc29sdmUtdW5kbyBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIHRow7RuZyB0aW4gcmVzb2x2ZS11bmRvIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg4CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk0CiBtc2dpZCAic2tpcCBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIgogbXNnc3RyICJi4buPIHF1YSBuaOG7r25nIHThuq1wIHRpbiBraOG7m3AgduG7m2kgbeG7mXQgbeG6q3UiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTEKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTcKIG1zZ2lkICJleGNsdWRlIHBhdHRlcm5zIGFyZSByZWFkIGZyb20gPGZpbGU+IgogbXNnc3RyICJt4bqrdSBsb+G6oWkgdHLhu6sgxJHGsOG7o2MgxJHhu41jIHThu6sgPHThuq1wIHRpbj4iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTQKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDAKIG1zZ2lkICJyZWFkIGFkZGl0aW9uYWwgcGVyLWRpcmVjdG9yeSBleGNsdWRlIHBhdHRlcm5zIGluIDxmaWxlPiIKIG1zZ3N0ciAixJHhu41jIHRow6ptIGPDoWMgbeG6q3Ugbmdv4bqhaSB0cuG7qyBt4buXaSB0aMawIG3hu6VjIHRyb25nIDx04bqtcCB0aW4+IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCiBtc2dpZCAiYWRkIHRoZSBzdGFuZGFyZCBnaXQgZXhjbHVzaW9ucyIKIG1zZ3N0ciAidGjDqm0gbG/huqFpIHRy4burIHRpw6p1IGNodeG6qW4ga2nhu4N1IGdpdCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5OQorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNQogbXNnaWQgIm1ha2UgdGhlIG91dHB1dCByZWxhdGl2ZSB0byB0aGUgcHJvamVjdCB0b3AgZGlyZWN0b3J5IgogbXNnc3RyICJsw6BtIGNobyBr4bq/dCB4deG6pXQgbGnDqm4gcXVhbiDEkeG6v24gdGjGsCBt4bulYyDhu58gbeG7qWMgY2FvIG5o4bqldCAoZ+G7kWMpIGPhu6dhIGThu7Egw6FuIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTAyCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA4CiBtc2dpZCAiaWYgYW55IDxmaWxlPiBpcyBub3QgaW4gdGhlIGluZGV4LCB0cmVhdCB0aGlzIGFzIGFuIGVycm9yIgogbXNnc3RyICJu4bq/dSA8dOG6rXAgdGluPiBi4bqldCBr4buzIGtow7RuZyDhu58gdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjLCB44butIGzDvSBuw7MgbmjGsCBt4buZdCBs4buXaSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOQogbXNnaWQgInRyZWUtaXNoIgogbXNnc3RyICJ0cmVlLWlzaCIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwNAorIzogYnVpbHRpbi9scy1maWxlcy5jOjUxMAogbXNnaWQgInByZXRlbmQgdGhhdCBwYXRocyByZW1vdmVkIHNpbmNlIDx0cmVlLWlzaD4gYXJlIHN0aWxsIHByZXNlbnQiCiBtc2dzdHIgIiIKICJnaeG6oyDEkeG7i25oIHLhurFuZyBjw6FjIMSRxrDhu51uZyBk4bqrbiDEkcOjIGLhu4sgZ+G7oSBi4buPIGvhu4MgdOG7qyA8dHJlZS1pc2g+IG5heSB24bqrbiBoaeG7h24gZGnhu4duIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTEyCiBtc2dpZCAic2hvdyBkZWJ1Z2dpbmcgZGF0YSIKIG1zZ3N0ciAiaGnhu4NuIHRo4buLIGThu68gbGnhu4d1IGfhu6EgbOG7l2kiCiAKQEAgLTYyNTQsMTcwICs2NDkyLDE3MCBAQAogbXNnaWQgImdpdCBtZXJnZSAtLWFib3J0IgogbXNnc3RyICJnaXQgbWVyZ2UgLS1hYm9ydCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkwCisjOiBidWlsdGluL21lcmdlLmM6OTgKIG1zZ2lkICJzd2l0Y2ggYG0nIHJlcXVpcmVzIGEgdmFsdWUiCiBtc2dzdHIgInN3aXRjaCDigJxt4oCdIHnDqnUgY+G6p3UgbeG7mXQgZ2nDoSB0cuG7iyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNworIzogYnVpbHRpbi9tZXJnZS5jOjEzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmluZCBtZXJnZSBzdHJhdGVneSAnJXMnLlxuIgogbXNnc3RyICJLaMO0bmcgdMOsbSB0aOG6pXkgY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIOKAnCVz4oCdLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI4CisjOiBidWlsdGluL21lcmdlLmM6MTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF2YWlsYWJsZSBzdHJhdGVnaWVzIGFyZToiCiBtc2dzdHIgIkPDoWMgY2hp4bq/biBsxrDhu6NjIHPhurVuIHPDoG5nIGzDoDoiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXZhaWxhYmxlIGN1c3RvbSBzdHJhdGVnaWVzIGFyZToiCiBtc2dzdHIgIkPDoWMgY2hp4bq/biBsxrDhu6NjIHTDuXkgY2jhu4luaCBz4bq1biBzw6BuZyBsw6A6IgogCi0jOiBidWlsdGluL21lcmdlLmM6MTgzCisjOiBidWlsdGluL21lcmdlLmM6MTk4CiBtc2dpZCAiZG8gbm90IHNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIKIG1zZ3N0ciAia2jDtG5nIGhp4buDbiB0aOG7iyB0aOG7kW5nIGvDqiBraMOhYyBiaeG7h3QgdOG6oWkgY3Xhu5FpIGPhu6dhIGzhuqduIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTg2CisjOiBidWlsdGluL21lcmdlLmM6MjAxCiBtc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgogbXNnc3RyICJoaeG7g24gdGjhu4sgdGjhu5FuZyBrw6oga2jDoWMgYmnhu4d0IHThuqFpIGN14buRaSBj4bunYSBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE4NworIzogYnVpbHRpbi9tZXJnZS5jOjIwMgogbXNnaWQgIihzeW5vbnltIHRvIC0tc3RhdCkiCiBtc2dzdHIgIijEkeG7k25nIG5naMSpYSB24bubaSAtLXN0YXQpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTg5CisjOiBidWlsdGluL21lcmdlLmM6MjA0CiBtc2dpZCAiYWRkIChhdCBtb3N0IDxuPikgZW50cmllcyBmcm9tIHNob3J0bG9nIHRvIG1lcmdlIGNvbW1pdCBtZXNzYWdlIgogbXNnc3RyICJ0aMOqbSAow610IG5o4bqldCA8bj4pIG3hu6VjIHThu6sgc2hvcnRsb2cgY2hvIGdoaSBjaMO6IGNodXnhu4NuIGdpYW8gaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKIG1zZ2lkICJjcmVhdGUgYSBzaW5nbGUgY29tbWl0IGluc3RlYWQgb2YgZG9pbmcgYSBtZXJnZSIKIG1zZ3N0ciAidOG6oW8gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSDEkcawb24gdGhheSB2w6wgdGjhu7FjIGhp4buHbiB2aeG7h2MgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKIG1zZ2lkICJwZXJmb3JtIGEgY29tbWl0IGlmIHRoZSBtZXJnZSBzdWNjZWVkcyAoZGVmYXVsdCkiCiBtc2dzdHIgInRo4buxYyBoaeG7h24gY2h1eeG7g24gZ2lhbyBu4bq/dSBow7JhIHRy4buZbiB0aMOgbmggY8O0bmcgKG3hurdjIMSR4buLbmgpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTk2CisjOiBidWlsdGluL21lcmdlLmM6MjExCiBtc2dpZCAiZWRpdCBtZXNzYWdlIGJlZm9yZSBjb21taXR0aW5nIgogbXNnc3RyICJz4butYSBjaMO6IHRow61jaCB0csaw4bubYyBraGkgY2h1eeG7g24gZ2lhbyAoY29tbWl0KSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE5OAorIzogYnVpbHRpbi9tZXJnZS5jOjIxMgogbXNnaWQgImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiCiBtc2dzdHIgImNobyBwaMOpcCBmYXN0LWZvcndhcmQgKG3hurdjIMSR4buLbmgpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjAwCisjOiBidWlsdGluL21lcmdlLmM6MjE0CiBtc2dpZCAiYWJvcnQgaWYgZmFzdC1mb3J3YXJkIGlzIG5vdCBwb3NzaWJsZSIKIG1zZ3N0ciAiYuG7jyBxdWEgbuG6v3UgZmFzdC1mb3J3YXJkIGtow7RuZyB0aOG7gyDEkcaw4bujYyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwMworIzogYnVpbHRpbi9tZXJnZS5jOjIxOAogbXNnaWQgIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIKIG1zZ3N0ciAiVGjhuqltIHRyYSB4ZW0gbOG6p24gY2h1eeG7g24gZ2lhbyBjw7MgdMOqbiDEkcOzIGPDsyBjaOG7ryBrw70gR1BHIGjhu6NwIGzhu4cgaGF5IGtow7RuZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNCBidWlsdGluL25vdGVzLmM6ODY2IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCisjOiBidWlsdGluL21lcmdlLmM6MjE5IGJ1aWx0aW4vbm90ZXMuYzo3MzggYnVpbHRpbi9yZXZlcnQuYzoxMTQKIG1zZ2lkICJzdHJhdGVneSIKIG1zZ3N0ciAiY2hp4bq/biBsxrDhu6NjIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA1CisjOiBidWlsdGluL21lcmdlLmM6MjIwCiBtc2dpZCAibWVyZ2Ugc3RyYXRlZ3kgdG8gdXNlIgogbXNnc3RyICJjaGnhur9uIGzGsOG7o2MgaMOyYSB0cuG7mW4gc+G6vSBkw7luZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNgorIzogYnVpbHRpbi9tZXJnZS5jOjIyMQogbXNnaWQgIm9wdGlvbj12YWx1ZSIKIG1zZ3N0ciAidMO5eV9jaOG7jW49Z2nDoV90cuG7iyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNworIzogYnVpbHRpbi9tZXJnZS5jOjIyMgogbXNnaWQgIm9wdGlvbiBmb3Igc2VsZWN0ZWQgbWVyZ2Ugc3RyYXRlZ3kiCiBtc2dzdHIgInTDuXkgY2jhu41uIGNobyBjaGnhur9uIGzGsOG7o2MgaMOyYSB0cuG7mW4gxJHDoyBjaOG7jW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMjQKIG1zZ2lkICJtZXJnZSBjb21taXQgbWVzc2FnZSAoZm9yIGEgbm9uLWZhc3QtZm9yd2FyZCBtZXJnZSkiCiBtc2dzdHIgIiIKICJow7JhIHRy4buZbiBnaGkgY2jDuiBj4bunYSBs4bqnbiBjaHV54buDbiBnaWFvIChkw6BuaCBjaG8gaMOyYSB0cuG7mW4gbm9uLWZhc3QtZm9yd2FyZCkiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMTMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMjgKIG1zZ2lkICJhYm9ydCB0aGUgY3VycmVudCBpbi1wcm9ncmVzcyBtZXJnZSIKIG1zZ3N0ciAiYsOjaSBi4buPIHF1w6EgdHLDrG5oIGjDsmEgdHLhu5luIGhp4buHbiB04bqhaSDEkWFuZyB0aOG7sWMgaGnhu4duIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQyCisjOiBidWlsdGluL21lcmdlLmM6MjU3CiBtc2dpZCAiY291bGQgbm90IHJ1biBzdGFzaC4iCiBtc2dzdHIgImtow7RuZyB0aOG7gyBjaOG6oXkgc3Rhc2guIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQ3CisjOiBidWlsdGluL21lcmdlLmM6MjYyCiBtc2dpZCAic3Rhc2ggZmFpbGVkIgogbXNnc3RyICJzdGFzaCBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjI1MgorIzogYnVpbHRpbi9tZXJnZS5jOjI2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3QgYSB2YWxpZCBvYmplY3Q6ICVzIgogbXNnc3RyICJraMO0bmcgcGjhuqNpIGzDoCBt4buZdCDEkeG7kWkgdMaw4bujbmcgaOG7o3AgbOG7hzogJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNzEgYnVpbHRpbi9tZXJnZS5jOjI4OAorIzogYnVpbHRpbi9tZXJnZS5jOjI4NiBidWlsdGluL21lcmdlLmM6MzAzCiBtc2dpZCAicmVhZC10cmVlIGZhaWxlZCIKIG1zZ3N0ciAicmVhZC10cmVlIGfhurdwIGzhu5dpIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzE4CisjOiBidWlsdGluL21lcmdlLmM6MzMzCiBtc2dpZCAiIChub3RoaW5nIHRvIHNxdWFzaCkiCiBtc2dzdHIgIiAoa2jDtG5nIGPDsyBnw6wgxJHhu4Mgc3F1YXNoKSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMzMQorIzogYnVpbHRpbi9tZXJnZS5jOjM0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJTcXVhc2ggY29tbWl0IC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIlNxdWFzaCBjb21taXQgLS0ga2jDtG5nIGPhuq1wIG5o4bqtdCBIRUFEXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozNjMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozNzgKIG1zZ2lkICJXcml0aW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIsSQYW5nIGdoaSBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzY1CisjOiBidWlsdGluL21lcmdlLmM6MzgwCiBtc2dpZCAiRmluaXNoaW5nIFNRVUFTSF9NU0ciCiBtc2dzdHIgIkhvw6BuIHRow6BuaCBTUVVBU0hfTVNHIgogCi0jOiBidWlsdGluL21lcmdlLmM6Mzg4CisjOiBidWlsdGluL21lcmdlLmM6NDAzCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIG1lc3NhZ2UgLS0gbm90IHVwZGF0aW5nIEhFQURcbiIKIG1zZ3N0ciAiS2jDtG5nIHRow7RuZyDEkWnhu4dwIGjDsmEgdHLhu5luIC0tIGtow7RuZyBj4bqtcCBuaOG6rXQgSEVBRFxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6NDM4CisjOiBidWlsdGluL21lcmdlLmM6NDUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCiBtc2dzdHIgIuKAnCVz4oCdIGtow7RuZyBjaOG7iSDEkeG6v24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBuw6BvIGPhuqMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo1NTAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo1NjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQmFkIGJyYW5jaC4lcy5tZXJnZW9wdGlvbnMgc3RyaW5nOiAlcyIKIG1zZ3N0ciAiQ2h14buXaSBicmFuY2guJXMubWVyZ2VvcHRpb25zIHNhaTogJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2NDMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2NTcKIG1zZ2lkICJnaXQgd3JpdGUtdHJlZSBmYWlsZWQgdG8gd3JpdGUgYSB0cmVlIgogbXNnc3RyICJs4buHbmggZ2l0IHdyaXRlLXRyZWUgZ+G6t3AgbOG7l2kga2hpIGdoaSBt4buZdCBjw6J5IgogCi0jOiBidWlsdGluL21lcmdlLmM6NjcxCisjOiBidWlsdGluL21lcmdlLmM6Njg1CiBtc2dpZCAiTm90IGhhbmRsaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gdHdvIGhlYWRzIG1lcmdlLiIKIG1zZ3N0ciAiS2jDtG5nIGPhuqdtIG7huq9tIGfDrCBuZ2/DoGkgaGFpIGhlYWQgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo2ODUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo2OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBvcHRpb24gZm9yIG1lcmdlLXJlY3Vyc2l2ZTogLVglcyIKIG1zZ3N0ciAiS2jDtG5nIGhp4buDdSB0w7l5IGNo4buNbiBjaG8gbWVyZ2UtcmVjdXJzaXZlOiAtWCVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6Njk5CisjOiBidWlsdGluL21lcmdlLmM6NzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSAlcyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGdoaSAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc4OAorIzogYnVpbHRpbi9tZXJnZS5jOjgwMgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBmcm9tICclcyciCiBtc2dzdHIgIktow7RuZyB0aOG7gyDEkeG7jWMgdOG7qyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjc5NworIzogYnVpbHRpbi9tZXJnZS5jOjgxMQogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgY29tbWl0dGluZyBtZXJnZTsgdXNlICdnaXQgY29tbWl0JyB0byBjb21wbGV0ZSB0aGUgbWVyZ2UuXG4iCiBtc2dzdHIgIiIKICJW4bqrbiBjaMawYSBow7JhIHRy4buZbiBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCk7IHPhu60gZOG7pW5nIGzhu4duaCDigJxnaXQgY29tbWl04oCdIMSR4buDICIKICJob8OgbiB04bqldCB2aeG7h2MgaMOyYSB0cuG7mW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MDMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciBhIGNvbW1pdCBtZXNzYWdlIHRvIGV4cGxhaW4gd2h5IHRoaXMgbWVyZ2UgaXMgbmVjZXNzYXJ5LFxuIgpAQCAtNjQzNSw1NSArNjY3Myw1MCBAQAogInLhu5duZ1xuIgogInPhur0gaOG7p3kgYuG7jyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODI3CisjOiBidWlsdGluL21lcmdlLmM6ODQxCiBtc2dpZCAiRW1wdHkgY29tbWl0IG1lc3NhZ2UuIgogbXNnc3RyICJDaMO6IHRow61jaCBj4bunYSBs4bqnbiBjb21taXQgKGNodXnhu4NuIGdpYW8pIGLhu4sgdHLhu5FuZyBy4buXbmcuIgogCi0jOiBidWlsdGluL21lcmdlLmM6ODM5CisjOiBidWlsdGluL21lcmdlLmM6ODUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIldvbmRlcmZ1bC5cbiIKIG1zZ3N0ciAiVGjhuqduIGvhu7MuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MDQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIGZhaWxlZDsgZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBjb21taXQgdGhlIHJlc3VsdC5cbiIKIG1zZ3N0ciAiIgogIlZp4buHYyB04buxIMSR4buZbmcgaMOyYSB0cuG7mW4gZ+G6t3AgbOG7l2k7IGjDo3kgc+G7rWEgY8OhYyB4dW5nIMSR4buZdCBzYXUgxJHDsyBjaHV54buDbiBnaWFvICIKICIoY29tbWl0KSBr4bq/dCBxdeG6oy5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjkyMAorIzogYnVpbHRpbi9tZXJnZS5jOjkzNAogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGlzIG5vdCBhIGNvbW1pdCIKIG1zZ3N0ciAiJXMga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG6p24gY29tbWl0IChjaHV54buDbiBnaWFvKSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk2MQorIzogYnVpbHRpbi9tZXJnZS5jOjk3NQogbXNnaWQgIk5vIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAia2jDtG5nIHBo4bqjaSBuaMOhbmggaGnhu4duIGjDoG5oIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTYzCisjOiBidWlsdGluL21lcmdlLmM6OTc3CiBtc2dpZCAiTm8gcmVtb3RlIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICJLaMO0bmcgY8OzIG3DoXkgY2jhu6cgY2hvIG5ow6FuaCBoaeG7h24gaMOgbmguIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTY1CisjOiBidWlsdGluL21lcmdlLmM6OTc5CiBtc2dpZCAiTm8gZGVmYXVsdCB1cHN0cmVhbSBkZWZpbmVkIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICJLaMO0bmcgY8OzIHRoxrDhu6NuZyBuZ3Xhu5NuIG3hurdjIMSR4buLbmggxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEgY2hvIG5ow6FuaCBoaeG7h24gaMOgbmguIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTcwCisjOiBidWlsdGluL21lcmdlLmM6OTg0CiAjLCBjLWZvcm1hdAotbXNnaWQgIk5vIHJlbW90ZSB0cmFja2luZyBicmFuY2ggZm9yICVzIGZyb20gJXMiCittc2dpZCAiTm8gcmVtb3RlLXRyYWNraW5nIGJyYW5jaCBmb3IgJXMgZnJvbSAlcyIKIG1zZ3N0ciAiS2jDtG5nIG5ow6FuaCBt4bqhbmcgdGhlbyB24bq/dCBjaG8gJXMgdOG7qyAlcyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEwNTcgYnVpbHRpbi9tZXJnZS5jOjEyMTQKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKLW1zZ3N0ciAiJXMgLSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBz4buRIHRo4bupIGNow7puZyB0w7RpIGPDsyB0aOG7gyBow7JhIHRy4buZbiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQwCiBtc2dpZCAiVGhlcmUgaXMgbm8gbWVyZ2UgdG8gYWJvcnQgKE1FUkdFX0hFQUQgbWlzc2luZykuIgogbXNnc3RyICIiCiAi4bueIMSRw6J5IGtow7RuZyBjw7MgbOG6p24gaMOyYSB0cuG7mW4gbsOgbyDEkcaw4bujYyBo4buneSBi4buPIGdp4buvYSBjaOG7q25nIGPhuqMgKHRoaeG6v3UgTUVSR0VfSEVBRCkuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE0MSBnaXQtcHVsbC5zaDozMQorIzogYnVpbHRpbi9tZXJnZS5jOjExNTYgZ2l0LXB1bGwuc2g6MzEKIG1zZ2lkICIiCiAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuXG4iCiAiUGxlYXNlLCBjb21taXQgeW91ciBjaGFuZ2VzIGJlZm9yZSB5b3UgY2FuIG1lcmdlLiIKQEAgLTY0OTEsMTEgKzY3MjQsMTEgQEAKICJC4bqhbiBjaMawYSBr4bq/dCB0aMO6YyB2aeG7h2MgaMOyYSB0cuG7mW5nIChNRVJHRV9IRUFEIHbhuqtuIHThu5NuIHThuqFpKS5cbiIKICJIw6N5IGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY8OhYyB0aGF5IMSR4buVaSB0csaw4bubYyBraGkgYuG6oW4gY8OzIHRo4buDIGjDsmEgdHLhu5luLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNDQgZ2l0LXB1bGwuc2g6MzQKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTU5IGdpdC1wdWxsLnNoOjM0CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIG1lcmdlIChNRVJHRV9IRUFEIGV4aXN0cykuIgogbXNnc3RyICJC4bqhbiBjaMawYSBr4bq/dCB0aMO6YyB2aeG7h2MgaMOyYSB0cuG7mW5nIChNRVJHRV9IRUFEIHbhuqtuIHThu5NuIHThuqFpKS4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ4CisjOiBidWlsdGluL21lcmdlLmM6MTE2MwogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtNjUwMywxMDcgKzY3MzYsMTA4IEBACiAiQuG6oW4gY2jGsGEga+G6v3QgdGjDumMgdmnhu4djIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIHbhuqtuIHThu5NuIHThuqFpKS5cbiIKICJIw6N5IGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY8OhYyB0aGF5IMSR4buVaSB0csaw4bubYyBraGkgYuG6oW4gY8OzIHRo4buDIGjDsmEgdHLhu5luLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNTEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTY2CiBtc2dpZCAiWW91IGhhdmUgbm90IGNvbmNsdWRlZCB5b3VyIGNoZXJyeS1waWNrIChDSEVSUllfUElDS19IRUFEIGV4aXN0cykuIgogbXNnc3RyICJC4bqhbiBjaMawYSBr4bq/dCB0aMO6YyB2aeG7h2MgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgduG6q24gdOG7k24gdOG6oWkpLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNjAKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTc1CiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tc3F1YXNoIHdpdGggLS1uby1mZi4iCiBtc2dzdHIgIkLhuqFuIGtow7RuZyB0aOG7gyBr4bq/dCBo4bujcCAtLXNxdWFzaCB24bubaSAtLW5vLWZmLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNjUKLW1zZ2lkICJZb3UgY2Fubm90IGNvbWJpbmUgLS1uby1mZiB3aXRoIC0tZmYtb25seS4iCi1tc2dzdHIgIkLhuqFuIGtow7RuZyB0aOG7gyBr4bq/dCBo4bujcCAtLW5vLWZmIHbhu5tpIC0tZmYtb25seS4iCi0KLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCisjOiBidWlsdGluL21lcmdlLmM6MTE4NAogbXNnaWQgIk5vIGNvbW1pdCBzcGVjaWZpZWQgYW5kIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIG5vdCBzZXQuIgogbXNnc3RyICIiCiAiS2jDtG5nIGNo4buJIHJhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgdsOgIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIGNoxrBhIMSRxrDhu6NjICIKICLEkeG6t3QuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIwNAorIzogYnVpbHRpbi9tZXJnZS5jOjEyMTYKIG1zZ2lkICJDYW4gbWVyZ2Ugb25seSBleGFjdGx5IG9uZSBjb21taXQgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICIiCiAiS2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIG3hu5l0IGPDoWNoIMSRw7puZyDEkeG6r24gbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSB2w6BvIG3hu5l0ICIKICJoZWFkIHLhu5duZyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyMDcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjE5CiBtc2dpZCAiU3F1YXNoIGNvbW1pdCBpbnRvIGVtcHR5IGhlYWQgbm90IHN1cHBvcnRlZCB5ZXQiCiBtc2dzdHIgIlNxdWFzaCBjb21taXQgdsOgbyBt4buZdCBoZWFkIHRy4buRbmcgcuG7l25nIHbhuqtuIGNoxrBhIMSRxrDhu6NjIGjhu5cgdHLhu6MiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CisjOiBidWlsdGluL21lcmdlLmM6MTIyMQogbXNnaWQgIk5vbi1mYXN0LWZvcndhcmQgY29tbWl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW50byBhbiBlbXB0eSBoZWFkIgogbXNnc3RyICIiCiAiQ2h1eeG7g24gZ2lhbyAoY29tbWl0KSBraMO0bmctZmFzdC1mb3J3YXJkIGtow7RuZyBo4bujcCBsw70g4bufIHRyb25nIG3hu5l0IGhlYWQgdHLhu5FuZyAiCiAicuG7l25nIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI2NQorIzogYnVpbHRpbi9tZXJnZS5jOjEyMjYKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMgLSBub3Qgc29tZXRoaW5nIHdlIGNhbiBtZXJnZSIKK21zZ3N0ciAiJXMgLSBraMO0bmcgcGjhuqNpIGzDoCBt4buZdCBz4buRIHRo4bupIGNow7puZyB0w7RpIGPDsyB0aOG7gyBow7JhIHRy4buZbiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKIG1zZ3N0ciAiIgogIkzhuqduIGNodXnhu4NuIGdpYW8gJXMgY8OzIG3hu5l0IGNo4buvIGvDvSBHUEcga2jDtG5nIMSRw6FuZyB0aW4sIMSRxrDhu6NjIGNobyBsw6AgYuG7n2kgJXMuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI2OAorIzogYnVpbHRpbi9tZXJnZS5jOjEyODAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGJhZCBHUEcgc2lnbmF0dXJlIGFsbGVnZWRseSBieSAlcy4iCiBtc2dzdHIgIkzhuqduIGNodXnhu4NuIGdpYW8gJXMgY8OzIG3hu5l0IGNo4buvIGvDvSBHUEcgc2FpLCDEkcaw4bujYyBjaG8gbMOgIGLhu59pICVzLiIKIAogIy4gJ04nCi0jOiBidWlsdGluL21lcmdlLmM6MTI3MQorIzogYnVpbHRpbi9tZXJnZS5jOjEyODMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgYSBHUEcgc2lnbmF0dXJlLiIKIG1zZ3N0ciAiTOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSAlcyBraMO0bmcgY8OzIGNo4buvIGvDvSBHUEcuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI3NAorIzogYnVpbHRpbi9tZXJnZS5jOjEyODYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGhhcyBhIGdvb2QgR1BHIHNpZ25hdHVyZSBieSAlc1xuIgogbXNnc3RyICJM4bqnbiBjaHV54buDbiBnaWFvICVzIGPDsyBt4buZdCBjaOG7ryBrw70gR1BHIHThu5F0IGLhu59pICVzXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzU4CisjOiBidWlsdGluL21lcmdlLmM6MTM3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJVcGRhdGluZyAlcy4uJXNcbiIKIG1zZ3N0ciAixJBhbmcgY+G6rXAgbmjhuq10ICVzLi4lc1xuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTM5NworIzogYnVpbHRpbi9tZXJnZS5jOjE0MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiVHJ5aW5nIHJlYWxseSB0cml2aWFsIGluLWluZGV4IG1lcmdlLi4uXG4iCiBtc2dzdHIgIsSQYW5nIHRo4butIGjDsmEgdHLhu5luIGtp4buDdSDigJx0cml2aWFsIGluLWluZGV44oCdLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDA0CisjOiBidWlsdGluL21lcmdlLmM6MTQxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICJLaMO0bmcuXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDM2CisjOiBidWlsdGluL21lcmdlLmM6MTQ0OAogbXNnaWQgIk5vdCBwb3NzaWJsZSB0byBmYXN0LWZvcndhcmQsIGFib3J0aW5nLiIKIG1zZ3N0ciAiVGjhu7FjIGhp4buHbiBs4buHbmggZmFzdC1mb3J3YXJkIGzDoCBraMO0bmcgdGjhu4MgxJHGsOG7o2MsIMSRYW5nIGLhu48gcXVhLiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0NTkgYnVpbHRpbi9tZXJnZS5jOjE1MzgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDcxIGJ1aWx0aW4vbWVyZ2UuYzoxNTUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlJld2luZGluZyB0aGUgdHJlZSB0byBwcmlzdGluZS4uLlxuIgogbXNnc3RyICLEkGFuZyB0dWEgbOG6oWkgY8OieSB0aMOgbmggdGjhu51pIHhhIHjGsGEuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0NjMKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRyeWluZyBtZXJnZSBzdHJhdGVneSAlcy4uLlxuIgogbXNnc3RyICLEkGFuZyB0aOG7rSBjaGnhur9uIGzGsOG7o2MgaMOyYSB0cuG7mW4gJXMuLi5cbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1MjkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTQxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIG1lcmdlIHN0cmF0ZWd5IGhhbmRsZWQgdGhlIG1lcmdlLlxuIgogbXNnc3RyICJLaMO0bmcgY8OzIGNoaeG6v24gbMaw4bujYyBow7JhIHRy4buZbiBuw6BvIMSRxrDhu6NjIG7huq9tIGdp4buvIChoYW5kbGUpIHPhu7EgaMOyYSB0cuG7mW4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTMxCisjOiBidWlsdGluL21lcmdlLmM6MTU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAiSMOyYSB0cuG7mW4gduG7m2kgY2hp4bq/biBsxrDhu6NjICVzIGfhurdwIGzhu5dpLlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU0MAorIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIlPhu60gZOG7pW5nICVzIMSR4buDIGNodeG6qW4gYuG7iyBnaeG6o2kgcXV54bq/dCBi4bqxbmcgdGF5LlxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU1MgorIzogYnVpbHRpbi9tZXJnZS5jOjE1NjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiQXV0b21hdGljIG1lcmdlIHdlbnQgd2VsbDsgc3RvcHBlZCBiZWZvcmUgY29tbWl0dGluZyBhcyByZXF1ZXN0ZWRcbiIKIG1zZ3N0ciAiIgpAQCAtNjc3Miw0OCArNzAwNiw1MiBAQAogbXNnaWQgInJlbmFtaW5nICclcycgZmFpbGVkIgogbXNnc3RyICLEkeG7lWkgdMOqbiAlcyBn4bq3cCBs4buXaSIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjE3NQorIzogYnVpbHRpbi9uYW1lLXJldi5jOjI1OQogbXNnaWQgImdpdCBuYW1lLXJldiBbb3B0aW9uc10gPGNvbW1pdD4uLi4iCiBtc2dzdHIgImdpdCBuYW1lLXJldiBbY8OhYy10w7l5LWNo4buNbl0gPGNvbW1pdD4uLi4iCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzYKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyNjAKIG1zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tYWxsIgogbXNnc3RyICJnaXQgbmFtZS1yZXYgW2PDoWMtdMO5eS1jaOG7jW5dIC0tYWxsIgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MTc3CisjOiBidWlsdGluL25hbWUtcmV2LmM6MjYxCiBtc2dpZCAiZ2l0IG5hbWUtcmV2IFtvcHRpb25zXSAtLXN0ZGluIgogbXNnc3RyICJnaXQgbmFtZS1yZXYgW2PDoWMtdMO5eS1jaOG7jW5dIC0tc3RkaW4iCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMjkKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTMKIG1zZ2lkICJwcmludCBvbmx5IG5hbWVzIChubyBTSEEtMSkiCiBtc2dzdHIgImNo4buJIGhp4buDbiB0aOG7iyB0w6puIChraMO0bmcgU0hBLTEpIgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MjMwCisjOiBidWlsdGluL25hbWUtcmV2LmM6MzE0CiBtc2dpZCAib25seSB1c2UgdGFncyB0byBuYW1lIHRoZSBjb21taXRzIgogbXNnc3RyICJjaOG7iSBkw7luZyBjw6FjIHRo4bq7IMSR4buDIMSR4bq3dCB0w6puIGNobyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8iCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzIKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTYKIG1zZ2lkICJvbmx5IHVzZSByZWZzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKIG1zZ3N0ciAiY2jhu4kgc+G7rSBk4bulbmcgY8OhYyB0aGFtIGNoaeG6v3UgKHJlZnMpIGto4bubcCB24bubaSA8beG6q3U+IgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MjM0CisjOiBidWlsdGluL25hbWUtcmV2LmM6MzE4CiBtc2dpZCAibGlzdCBhbGwgY29tbWl0cyByZWFjaGFibGUgZnJvbSBhbGwgcmVmcyIKIG1zZ3N0ciAiIgogImxp4buHdCBrw6ogdOG6pXQgY+G6oyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gY8OzIHRo4buDIMSR4buNYyDEkcaw4bujYyB04burIHThuqV0IGPhuqMgY8OhYyB0aGFtIGNoaeG6v3UiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzUKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTkKIG1zZ2lkICJyZWFkIGZyb20gc3RkaW4iCiBtc2dzdHIgIsSR4buNYyB04burIMSR4bqndSB2w6BvIHRpw6p1IGNodeG6qW4iCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzYKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMjAKIG1zZ2lkICJhbGxvdyB0byBwcmludCBgdW5kZWZpbmVkYCBuYW1lcyIKIG1zZ3N0ciAiY2hvIHBow6lwIGhp4buDbiB0aOG7iyBjw6FjIHTDqm4g4oCcY2jGsGEgxJHhu4tuaCBuZ2jEqWHigJwiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNgorIzogYnVpbHRpbi9uYW1lLXJldi5jOjMyNgorbXNnaWQgImRlcmVmZXJlbmNlIHRhZ3MgaW4gdGhlIGlucHV0IChpbnRlcm5hbCB1c2UpIgorbXNnc3RyICJiw6NpIGLhu48gdGhhbSBjaGnhur91IGPDoWMgdGjhursgdHJvbmcgxJHhuqd1IHbDoG8gKGTDuW5nIG7hu5lpIGLhu5kpIgorCisjOiBidWlsdGluL25vdGVzLmM6MjQKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBbbGlzdCBbPG9iamVjdD5dXSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gW2xpc3QgWzzEkeG7kWktdMaw4bujbmc+XV0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNworIzogYnVpbHRpbi9ub3Rlcy5jOjI1CiBtc2dpZCAiIgogImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCiAiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCkBAIC02ODIxLDExICs3MDU5LDExIEBACiAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gYWRkIFstZl0gWy1tIDxs4budaS1uaOG6r24+IHwgLUYgPHThuq1wLXRpbj4gfCAoLWMgfCAiCiAiLUMpIDzEkeG7kWktdMaw4bujbmc+XSBbPMSR4buRaS10xrDhu6NuZz5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNgogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGNvcHkgWy1mXSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgogbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBjb3B5IFstZl0gPHThu6stxJHhu5FpLXTGsOG7o25nPiA8xJHhur9uLcSR4buRaS10xrDhu6NuZz4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyOQorIzogYnVpbHRpbi9ub3Rlcy5jOjI3CiBtc2dpZCAiIgogImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgogIjxvYmplY3Q+XSBbPG9iamVjdD5dIgpAQCAtNjgzMywyMjMgKzcwNzEsMjAwIEBACiAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gYXBwZW5kIFstbSA8bOG7nWktbmjhuq9uPiB8IC1GIDx04bqtcC10aW4+IHwgKC1jIHwgLSIKICJDKSA8xJHhu5FpLXTGsOG7o25nPl0gWzzEkeG7kWktdMaw4bujbmc+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMwCisjOiBidWlsdGluL25vdGVzLmM6MjgKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGVkaXQgWzzEkeG7kWktdMaw4bujbmc+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMxCisjOiBidWlsdGluL25vdGVzLmM6MjkKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBzaG93IFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHNob3cgWzzEkeG7kWktdMaw4bujbmc+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMyCisjOiBidWlsdGluL25vdGVzLmM6MzAKIG1zZ2lkICIiCiAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gbWVyZ2UgWy12IHwgLXFdIFstcyA8c3RyYXRlZ3k+IF0gPG5vdGVzX3JlZj4iCiBtc2dzdHIgIiIKICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBtZXJnZSBbLXYgfCAtcV0gWy1zIDxjaGnhur9uLWzGsOG7o2M+IF0gPG5vdGVzX3JlZj4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozMworIzogYnVpbHRpbi9ub3Rlcy5jOjMxCiBtc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFstdiB8IC1xXSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFstdiB8IC1xXSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM0CisjOiBidWlsdGluL25vdGVzLmM6MzIKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbLXYgfCAtcV0iCiBtc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFstdiB8IC1xXSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM1CisjOiBidWlsdGluL25vdGVzLmM6MzMKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSByZW1vdmUgWzxvYmplY3Q+Li4uXSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gcmVtb3ZlIFs8xJHhu5FpLXTGsOG7o25nPi4uLl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNgorIzogYnVpbHRpbi9ub3Rlcy5jOjM0CiBtc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gcHJ1bmUgWy1uIHwgLXZdIgogbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBwcnVuZSBbLW4gfCAtdl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzozNworIzogYnVpbHRpbi9ub3Rlcy5jOjM1CiBtc2dpZCAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZ2V0LXJlZiIKIG1zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gZ2V0LXJlZiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQyCisjOiBidWlsdGluL25vdGVzLmM6NDAKIG1zZ2lkICJnaXQgbm90ZXMgW2xpc3QgWzxvYmplY3Q+XV0iCiBtc2dzdHIgImdpdCBub3RlcyBbbGlzdCBbPMSR4buRaSB0xrDhu6NuZz5dXSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ3CisjOiBidWlsdGluL25vdGVzLmM6NDUKIG1zZ2lkICJnaXQgbm90ZXMgYWRkIFs8b3B0aW9ucz5dIFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyBhZGQgWzxjw6FjLXTDuXktY2jhu41uPl0gWzzEkeG7kWktdMaw4bujbmc+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUyCisjOiBidWlsdGluL25vdGVzLmM6NTAKIG1zZ2lkICJnaXQgbm90ZXMgY29weSBbPG9wdGlvbnM+XSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgogbXNnc3RyICJnaXQgbm90ZXMgY29weSBbPGPDoWMtdMO5eS1jaOG7jW4+XSA8dOG7qy3EkeG7kWktdMaw4bujbmc+IDzEkeG6v24txJHhu5FpLXTGsOG7o25nPiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUzCisjOiBidWlsdGluL25vdGVzLmM6NTEKIG1zZ2lkICJnaXQgbm90ZXMgY29weSAtLXN0ZGluIFs8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+XS4uLiIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPHThu6stxJHhu5FpLXTGsOG7o25nPiA8xJHhur9uLcSR4buRaS10xrDhu6NuZz5dLi4uIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NgogbXNnaWQgImdpdCBub3RlcyBhcHBlbmQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGFwcGVuZCBbPGPDoWMtdMO5eS1jaOG7jW4+XSBbPMSR4buRaS10xrDhu6NuZz5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo2MQogbXNnaWQgImdpdCBub3RlcyBlZGl0IFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyBlZGl0IFs8xJHhu5FpIHTGsOG7o25nPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OAorIzogYnVpbHRpbi9ub3Rlcy5jOjY2CiBtc2dpZCAiZ2l0IG5vdGVzIHNob3cgWzxvYmplY3Q+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIHNob3cgWzzEkeG7kWkgdMaw4bujbmc+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjczCisjOiBidWlsdGluL25vdGVzLmM6NzEKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgWzxvcHRpb25zPl0gPG5vdGVzX3JlZj4iCiBtc2dzdHIgImdpdCBub3RlcyBtZXJnZSBbPGPDoWMtdMO5eS1jaOG7jW4+XSA8bm90ZXNfcmVmPiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjc0CisjOiBidWlsdGluL25vdGVzLmM6NzIKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWzxvcHRpb25zPl0iCiBtc2dzdHIgImdpdCBub3RlcyBtZXJnZSAtLWNvbW1pdCBbPGPDoWMtdMO5eS1jaOG7jW4+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjc1CisjOiBidWlsdGluL25vdGVzLmM6NzMKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbPG9wdGlvbnM+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWzxjw6FjLXTDuXktY2jhu41uPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4MAorIzogYnVpbHRpbi9ub3Rlcy5jOjc4CiBtc2dpZCAiZ2l0IG5vdGVzIHJlbW92ZSBbPG9iamVjdD5dIgogbXNnc3RyICJnaXQgbm90ZXMgcmVtb3ZlIFs8xJHhu5FpIHTGsOG7o25nPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NQorIzogYnVpbHRpbi9ub3Rlcy5jOjgzCiBtc2dpZCAiZ2l0IG5vdGVzIHBydW5lIFs8b3B0aW9ucz5dIgogbXNnc3RyICJnaXQgbm90ZXMgcHJ1bmUgWzxjw6FjLXTDuXktY2jhu41uPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5MAorIzogYnVpbHRpbi9ub3Rlcy5jOjg4CiBtc2dpZCAiZ2l0IG5vdGVzIGdldC1yZWYiCiBtc2dzdHIgImdpdCBub3RlcyBnZXQtcmVmIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTM5CisjOiBidWlsdGluL25vdGVzLmM6MTM3CiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBzdGFydCAnc2hvdycgZm9yIG9iamVjdCAnJXMnIgogbXNnc3RyICJraMO0bmcgdGjhu4Mga2jhu59pIGNo4bqheSDigJxzaG934oCdIGNobyDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNDMKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNDEKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCAnc2hvdycgb3V0cHV0IgogbXNnc3RyICJraMO0bmcgdGjhu4MgxJHhu41jIGvhur90IHh14bqldCDigJxzaG934oCdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTUxCisjOiBidWlsdGluL25vdGVzLmM6MTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIGhvw6BuIHRow6BuaCDigJxzaG934oCdIGNobyDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxNjkgYnVpbHRpbi90YWcuYzozNDEKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxNjcgYnVpbHRpbi90YWcuYzozNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGNyZWF0ZSBmaWxlICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyB04bqhbyB04bqtcCB0aW4g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODYKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIiIKICJYaW4gaMOjeSDDoXAgZOG7pW5nIG7hu5lpIGR1bmcgY+G7p2EgZ2hpIGNow7ogc+G7rSBk4bulbmcgaG/hurdjIGzDoCB0w7l5IGNo4buNbiAtbSBob+G6t2MgbMOgIC1GIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjA5IGJ1aWx0aW4vbm90ZXMuYzo5NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMDcgYnVpbHRpbi9ub3Rlcy5jOjg0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdmluZyBub3RlIGZvciBvYmplY3QgJXNcbiIKIG1zZ3N0ciAixJBhbmcgZ+G7oSBi4buPIGdoaSBjaMO6IChub3RlKSBjaG8gxJHhu5FpIHTGsOG7o25nICVzXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTIKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbm90ZSBvYmplY3QiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBnaGkgxJHhu5FpIHTGsOG7o25nIGdoaSBjaMO6IChub3RlKSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjIxNgorIzogYnVpbHRpbi9ub3Rlcy5jOjIxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJUaGUgbm90ZSBjb250ZW50cyBoYXMgYmVlbiBsZWZ0IGluICVzIgogbXNnc3RyICJO4buZaSBkdW5nIGdoaSBjaMO6IGPDsm4gbOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNTAgYnVpbHRpbi90YWcuYzo1NDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNDggYnVpbHRpbi90YWcuYzo1NDAKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJyVzJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIMSR4buNYyDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MiBidWlsdGluL3RhZy5jOjU0MworIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiBvciByZWFkICclcyciCiBtc2dzdHIgImtow7RuZyB0aOG7gyBt4bufIGhheSDEkeG7jWMg4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzEgYnVpbHRpbi9ub3Rlcy5jOjQ0NCBidWlsdGluL25vdGVzLmM6NDQ2Ci0jOiBidWlsdGluL25vdGVzLmM6NTA2IGJ1aWx0aW4vbm90ZXMuYzo1NjAgYnVpbHRpbi9ub3Rlcy5jOjY0MwotIzogYnVpbHRpbi9ub3Rlcy5jOjY0OCBidWlsdGluL25vdGVzLmM6NzIzIGJ1aWx0aW4vbm90ZXMuYzo3NjUKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NjcgYnVpbHRpbi90YWcuYzo1NTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNjkgYnVpbHRpbi9ub3Rlcy5jOjMxNiBidWlsdGluL25vdGVzLmM6MzE4CisjOiBidWlsdGluL25vdGVzLmM6Mzc4IGJ1aWx0aW4vbm90ZXMuYzo0MzIgYnVpbHRpbi9ub3Rlcy5jOjUxNQorIzogYnVpbHRpbi9ub3Rlcy5jOjUyMCBidWlsdGluL25vdGVzLmM6NTk1IGJ1aWx0aW4vbm90ZXMuYzo2MzcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4MzkgYnVpbHRpbi90YWcuYzo1NTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kg4oCcJXPigJ0gbmjGsCBsw6AgbeG7mXQgdGhhbSBjaGnhur91IChyZWYpIGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjc0CisjOiBidWlsdGluL25vdGVzLmM6MjcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWFkIG9iamVjdCAnJXMnLiIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buNYyDEkeG7kWkgdMaw4bujbmcg4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL25vdGVzLmM6Mjk4Ci1tc2dpZCAiQ2Fubm90IGNvbW1pdCB1bmluaXRpYWxpemVkL3VucmVmZXJlbmNlZCBub3RlcyB0cmVlIgotbXNnc3RyICIiCi0iS2jDtG5nIHRo4buDIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgY2jGsGEgxJHGsOG7o2Mga2jhu59pIHThuqFvIGhv4bq3YyBraMO0bmcgxJHGsOG7o2MgdGhhbSBjaGnhur91ICIKLSJjw6J5IGdoaSBjaMO6IgotCi0jOiBidWlsdGluL25vdGVzLmM6MzM5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkJhZCBub3Rlcy5yZXdyaXRlTW9kZSB2YWx1ZTogJyVzJyIKLW1zZ3N0ciAiR2nDoSB0cuG7iyBub3Rlcy5yZXdyaXRlTW9kZSBzYWk6IOKAnCVz4oCdIgotCi0jOiBidWlsdGluL25vdGVzLmM6MzQ5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgotbXNnc3RyICJU4burIGNo4buRaSBnaGkgxJHDqCBnaGkgY2jDuiB0cm9uZyAlcyAobuG6sW0gbmdvw6BpIGPhu6dhIHJlZnMvbm90ZXMvKSIKLQotIy4gVFJBTlNMQVRPUlM6IFRoZSBmaXJzdCAlcyBpcyB0aGUgbmFtZSBvZiB0aGUKLSMuIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgc2Vjb25kICVzIGlzIGl0cyB2YWx1ZQotIzogYnVpbHRpbi9ub3Rlcy5jOjM3NgotIywgYy1mb3JtYXQKLW1zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCi1tc2dzdHIgIkdpw6EgdHLhu4sgJXMgc2FpOiDigJwlc+KAnSIKLQotIzogYnVpbHRpbi9ub3Rlcy5jOjQ0MAorIzogYnVpbHRpbi9ub3Rlcy5jOjMxMgogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaW5wdXQgbGluZTogJyVzJy4iCiBtc2dzdHIgIkTDsm5nIG5o4bqtcCB2w6BvIGThu4sgaMOsbmg6IOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ1NQorIzogYnVpbHRpbi9ub3Rlcy5jOjMyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY29weSBub3RlcyBmcm9tICclcycgdG8gJyVzJyIKIG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIHNhbyBjaMOpcCBnaGkgY2jDuiAobm90ZSkgdOG7qyDigJwlc+KAnSB04bubaSDigJwlc+KAnSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjQ5OSBidWlsdGluL25vdGVzLmM6NTUzIGJ1aWx0aW4vbm90ZXMuYzo2MjYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MzggYnVpbHRpbi9ub3Rlcy5jOjcxMSBidWlsdGluL25vdGVzLmM6NzU4Ci0jOiBidWlsdGluL25vdGVzLmM6MTAzMgorIzogYnVpbHRpbi9ub3Rlcy5jOjM3MSBidWlsdGluL25vdGVzLmM6NDI1IGJ1aWx0aW4vbm90ZXMuYzo0OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MTAgYnVpbHRpbi9ub3Rlcy5jOjU4MyBidWlsdGluL25vdGVzLmM6NjMwCisjOiBidWlsdGluL25vdGVzLmM6OTA0CiBtc2dpZCAidG9vIG1hbnkgcGFyYW1ldGVycyIKIG1zZ3N0ciAicXXDoSBuaGnhu4F1IMSR4buRaSBz4buRIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTEyIGJ1aWx0aW4vbm90ZXMuYzo3NzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzozODQgYnVpbHRpbi9ub3Rlcy5jOjY0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBub3RlIGZvdW5kIGZvciBvYmplY3QgJXMuIgogbXNnc3RyICJraMO0bmcgdMOsbSB0aOG6pXkgZ2hpIGNow7ogY2hvIMSR4buRaSB0xrDhu6NuZyAlcy4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MzQgYnVpbHRpbi9ub3Rlcy5jOjY5MQorIzogYnVpbHRpbi9ub3Rlcy5jOjQwNiBidWlsdGluL25vdGVzLmM6NTYzCiBtc2dpZCAibm90ZSBjb250ZW50cyBhcyBhIHN0cmluZyIKIG1zZ3N0ciAibuG7mWkgZHVuZyBnaGkgY2jDuiAobm90ZSkgbuG6sW0gdHJvbmcgbeG7mXQgY2h14buXaSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUzNyBidWlsdGluL25vdGVzLmM6Njk0CisjOiBidWlsdGluL25vdGVzLmM6NDA5IGJ1aWx0aW4vbm90ZXMuYzo1NjYKIG1zZ2lkICJub3RlIGNvbnRlbnRzIGluIGEgZmlsZSIKIG1zZ3N0ciAibuG7mWkgZHVuZyBnaGkgY2jDuiAobm90ZSkgbuG6sW0gdHJvbmcgbeG7mXQgdOG6rXAgdGluIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTM5IGJ1aWx0aW4vbm90ZXMuYzo1NDIgYnVpbHRpbi9ub3Rlcy5jOjY5NgotIzogYnVpbHRpbi9ub3Rlcy5jOjY5OSBidWlsdGluL3RhZy5jOjQ3NAorIzogYnVpbHRpbi9ub3Rlcy5jOjQxMSBidWlsdGluL25vdGVzLmM6NDE0IGJ1aWx0aW4vbm90ZXMuYzo1NjgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NzEgYnVpbHRpbi90YWcuYzo0NzQKIG1zZ2lkICJvYmplY3QiCiBtc2dzdHIgIsSR4buRaSB0xrDhu6NuZyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU0MCBidWlsdGluL25vdGVzLmM6Njk3CisjOiBidWlsdGluL25vdGVzLmM6NDEyIGJ1aWx0aW4vbm90ZXMuYzo1NjkKIG1zZ2lkICJyZXVzZSBhbmQgZWRpdCBzcGVjaWZpZWQgbm90ZSBvYmplY3QiCiBtc2dzdHIgImTDuW5nIGzhuqFpIG5oxrBuZyBjw7Mgc+G7rWEgY2jhu69hIMSR4buRaSB0xrDhu6NuZyBub3RlIMSRw6MgY2jhu4kgcmEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjcwMAorIzogYnVpbHRpbi9ub3Rlcy5jOjQxNSBidWlsdGluL25vdGVzLmM6NTcyCiBtc2dpZCAicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgogbXNnc3RyICJkw7luZyBs4bqhaSDEkeG7kWkgdMaw4bujbmcgZ2hpIGNow7ogKG5vdGUpIMSRw6MgY2jhu4kgcmEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDUgYnVpbHRpbi9ub3Rlcy5jOjYxMworIzogYnVpbHRpbi9ub3Rlcy5jOjQxNyBidWlsdGluL25vdGVzLmM6NDg1CiBtc2dpZCAicmVwbGFjZSBleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAidGhheSB0aOG6vyBnaGkgY2jDuiB0csaw4bubYyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjU3OQorIzogYnVpbHRpbi9ub3Rlcy5jOjQ1MQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGFkZCBub3Rlcy4gRm91bmQgZXhpc3Rpbmcgbm90ZXMgZm9yIG9iamVjdCAlcy4gVXNlICctZicgdG8gb3ZlcndyaXRlICIKQEAgLTcwNTgsMjQgKzcyNzMsMjQgQEAKICJLaMO0bmcgdGjhu4MgdGjDqm0gY8OhYyBnaGkgY2jDui4gxJDDoyB0w6xtIHRo4bqleSBjw6FjIGdoaSBjaMO6IMSRw6MgY8OzIHPhurVuIGNobyDEkeG7kWkgdMaw4bujbmcgIgogIiVzLiBT4butIGThu6VuZyB0w7l5IGNo4buNbiDigJwtZuKAnSDEkeG7gyBnaGkgxJHDqCBsw6puIGPDoWMgZ2hpIGNow7ogY8WpIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NTYgYnVpbHRpbi9ub3Rlcy5jOjUzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJPdmVyd3JpdGluZyBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIsSQYW5nIGdoaSDEkcOoIGzDqm4gZ2hpIGNow7ogY8WpIGNobyDEkeG7kWkgdMaw4bujbmcgJXNcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYxNAorIzogYnVpbHRpbi9ub3Rlcy5jOjQ4NgogbXNnaWQgInJlYWQgb2JqZWN0cyBmcm9tIHN0ZGluIgogbXNnc3RyICLEkeG7jWMgY8OhYyDEkeG7kWkgdMaw4bujbmcgdOG7qyDEkeG6p3UgdsOgbyB0acOqdSBjaHXhuqluIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjE2CisjOiBidWlsdGluL25vdGVzLmM6NDg4CiBtc2dpZCAibG9hZCByZXdyaXRpbmcgY29uZmlnIGZvciA8Y29tbWFuZD4gKGltcGxpZXMgLS1zdGRpbikiCiBtc2dzdHIgInThuqNpIGPhuqV1IGjDrG5oIGNow6lwIGzhuqFpIGNobyA8bOG7h25oPiAobmfhuqdtIMSR4buLbmggbMOgIC0tc3RkaW4pIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjM0CisjOiBidWlsdGluL25vdGVzLmM6NTA2CiBtc2dpZCAidG9vIGZldyBwYXJhbWV0ZXJzIgogbXNnc3RyICJxdcOhIMOtdCDEkeG7kWkgc+G7kSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY1NQorIzogYnVpbHRpbi9ub3Rlcy5jOjUyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiQ2Fubm90IGNvcHkgbm90ZXMuIEZvdW5kIGV4aXN0aW5nIG5vdGVzIGZvciBvYmplY3QgJXMuIFVzZSAnLWYnIHRvIG92ZXJ3cml0ZSAiCkBAIC03MDg0LDEyICs3Mjk5LDEyIEBACiAiS2jDtG5nIHRo4buDIHNhbyBjaMOpcCBjw6FjIGdoaSBjaMO6LiDEkMOjIHTDrG0gdGjhuqV5IGPDoWMgZ2hpIGNow7ogxJHDoyBjw7Mgc+G6tW4gY2hvIMSR4buRaSAiCiAidMaw4bujbmcgJXMuIFPhu60gZOG7pW5nIHTDuXkgY2jhu41uIOKAnC1m4oCdIMSR4buDIGdoaSDEkcOoIGzDqm4gY8OhYyBnaGkgY2jDuiBjxakiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NjcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MzkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWlzc2luZyBub3RlcyBvbiBzb3VyY2Ugb2JqZWN0ICVzLiBDYW5ub3QgY29weS4iCiBtc2dzdHIgIlRoaeG6v3UgZ2hpIGNow7ogdHLDqm4gxJHhu5FpIHTGsOG7o25nIG5ndeG7kW4gJXMuIEtow7RuZyB0aOG7gyBzYW8gY2jDqXAuIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzE2CisjOiBidWlsdGluL25vdGVzLmM6NTg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgLW0vLUYvLWMvLUMgb3B0aW9ucyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgdGhlICdlZGl0JyBzdWJjb21tYW5kLlxuIgpAQCAtNzA5OCwxNSArNzMxMywxNSBAQAogIkPDoWMgdMO5eSBjaOG7jW4gLW0vLUYvLWMvLUMgxJHDoyBj4buVIGtow7RuZyBjw7JuIGTDuW5nIG7hu69hIGNobyBs4buHbmggY29uIOKAnGVkaXTigJ0uXG4iCiAiWGluIGjDo3kgc+G7rSBk4bulbmcgbOG7h25oIHNhdSDEkeG7gyB0aGF5IHRo4bq/OiDigJxnaXQgbm90ZXMgYWRkIC1mIC1tLy1GLy1jLy1D4oCdLlxuIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODYzCisjOiBidWlsdGluL25vdGVzLmM6NzM1CiBtc2dpZCAiR2VuZXJhbCBvcHRpb25zIgogbXNnc3RyICJUw7l5IGNo4buNbiBjaHVuZyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2NQorIzogYnVpbHRpbi9ub3Rlcy5jOjczNwogbXNnaWQgIk1lcmdlIG9wdGlvbnMiCiBtc2dzdHIgIlTDuXkgY2jhu41uIHbhu4EgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MzkKIG1zZ2lkICIiCiAicmVzb2x2ZSBub3RlcyBjb25mbGljdHMgdXNpbmcgdGhlIGdpdmVuIHN0cmF0ZWd5IChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vIgogImNhdF9zb3J0X3VuaXEpIgpAQCAtNzExNCw0NiArNzMyOSw0NiBAQAogInBow6JuIGdp4bqjaSBjw6FjIHh1bmcgxJHhu5l0IOKAnG5vdGVz4oCdIHPhu60gZOG7pW5nIGNoaeG6v24gbMaw4bujYyDEkcOjIMSRxrBhIHJhIChtYW51YWwvb3Vycy8iCiAidGhlaXJzL3VuaW9uL2NhdF9zb3J0X3VuaXEpIgogCi0jOiBidWlsdGluL25vdGVzLmM6ODY5CisjOiBidWlsdGluL25vdGVzLmM6NzQxCiBtc2dpZCAiQ29tbWl0dGluZyB1bm1lcmdlZCBub3RlcyIKIG1zZ3N0ciAiQ2h1eeG7g24gZ2lhbyBjw6FjIG5vdGUgY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDMKIG1zZ2lkICJmaW5hbGl6ZSBub3RlcyBtZXJnZSBieSBjb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgogbXNnc3RyICIiCiAiY8OhYyBub3RlIGN14buRaSBjw7luZyDEkcaw4bujYyBow7JhIHRy4buZbiBi4bufaSBjw6FjIG5vdGUgY2jGsGEgaMOyYSB0cuG7mW4gY+G7p2EgbOG6p24gY2h1eeG7g24gIgogImdpYW8iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDUKIG1zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgogbXNnc3RyICJI4buneSBi4buPIHBow6JuIGdp4bqjaSBnaGkgY2jDuiAobm90ZSkgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDcKIG1zZ2lkICJhYm9ydCBub3RlcyBtZXJnZSIKIG1zZ3N0ciAiYuG7jyBxdWEgaMOyYSB0cuG7mW4gY8OhYyBnaGkgY2jDuiAobm90ZSkiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5NzAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiT2JqZWN0ICVzIGhhcyBubyBub3RlXG4iCiBtc2dzdHIgIsSQ4buRaSB0xrDhu6NuZyAlcyBraMO0bmcgY8OzIGdoaSBjaMO6IChub3RlKVxuIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTgyCisjOiBidWlsdGluL25vdGVzLmM6ODU0CiBtc2dpZCAiYXR0ZW1wdCB0byByZW1vdmUgbm9uLWV4aXN0ZW50IG5vdGUgaXMgbm90IGFuIGVycm9yIgogbXNnc3RyICJj4buRIGfhuq9uZyBn4buhIGLhu48gbeG7mXQgbm90ZSBjaMawYSB04burbmcgdOG7k24gdOG6oWkga2jDtG5nIHBo4bqjaSBsw6AgbeG7mXQgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5ODUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NTcKIG1zZ2lkICJyZWFkIG9iamVjdCBuYW1lcyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCIKIG1zZ3N0ciAixJHhu41jIHTDqm4gxJHhu5FpIHTGsOG7o25nIHThu6sgdGhp4bq/dCBi4buLIG5o4bqtcCBjaHXhuqluIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTA2NgorIzogYnVpbHRpbi9ub3Rlcy5jOjkzOAogbXNnaWQgIm5vdGVzX3JlZiIKIG1zZ3N0ciAibm90ZXNfcmVmIgogCi0jOiBidWlsdGluL25vdGVzLmM6MTA2NworIzogYnVpbHRpbi9ub3Rlcy5jOjkzOQogbXNnaWQgInVzZSBub3RlcyBmcm9tIDxub3Rlc19yZWY+IgogbXNnc3RyICJkw7luZyDigJxub3Rlc+KAnSB04burIDxub3Rlc19yZWY+IgogCi0jOiBidWlsdGluL25vdGVzLmM6MTEwMiBidWlsdGluL3JlbW90ZS5jOjE1OTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo5NzQgYnVpbHRpbi9yZW1vdGUuYzoxNTk4CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gc3ViY29tbWFuZDogJXMiCiBtc2dzdHIgIktow7RuZyBoaeG7g3UgY8OidSBs4buHbmggY29uOiAlcyIKQEAgLTczOTQsNyArNzYwOSw3IEBACiAiICAgIGdpdCBwdXNoICVzICVzXG4iCiAiJXMiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjEyMQorIzogYnVpbHRpbi9wdXNoLmM6MTE3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3UgYXJlIG5vdCBjdXJyZW50bHkgb24gYSBicmFuY2guXG4iCkBAIC03NDA5LDcgKzc2MjQsNyBAQAogIlxuIgogIiAgICBnaXQgcHVzaCAlcyBIRUFEOjx0w6puLWPhu6dhLW5ow6FuaC1tw6F5LWNo4bunPlxuIgogCi0jOiBidWlsdGluL3B1c2guYzoxMjgKKyM6IGJ1aWx0aW4vcHVzaC5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGN1cnJlbnQgYnJhbmNoICVzIGhhcyBubyB1cHN0cmVhbSBicmFuY2guXG4iCkBAIC03NDIzLDEyICs3NjM4LDEyIEBACiAiXG4iCiAiICAgIGdpdCBwdXNoIC0tc2V0LXVwc3RyZWFtICVzICVzXG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjEzNgorIzogYnVpbHRpbi9wdXNoLmM6MTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBjdXJyZW50IGJyYW5jaCAlcyBoYXMgbXVsdGlwbGUgdXBzdHJlYW0gYnJhbmNoZXMsIHJlZnVzaW5nIHRvIHB1c2guIgogbXNnc3RyICJOaMOhbmggaGnhu4duIHThuqFpICVzIGPDsyDEkWEgbmjDoW5oIHRoxrDhu6NuZyBuZ3Xhu5NuICh1cHN0cmVhbSksIHThu6sgY2jhu5FpIHB1c2guIgogCi0jOiBidWlsdGluL3B1c2guYzoxMzkKKyM6IGJ1aWx0aW4vcHVzaC5jOjE0MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBwdXNoaW5nIHRvIHJlbW90ZSAnJXMnLCB3aGljaCBpcyBub3QgdGhlIHVwc3RyZWFtIG9mXG4iCkBAIC03NDQwLDcgKzc2NTUsNyBAQAogIm5ow6FuaCBoaeG7h24gdOG6oWkg4oCcJXPigJ0gY+G7p2EgYuG6oW4sIG3DoCBraMO0bmcgYsOhbyBjaG8gdMO0aSBiaeG6v3QgbMOgIGPDoWkgZ8OsIMSRxrDhu6NjIHB1c2hcbiIKICLEkeG7gyBj4bqtcCBuaOG6rXQgbmjDoW5oIG3DoXkgY2jhu6cgbsOgby4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE1MQorIzogYnVpbHRpbi9wdXNoLmM6MTY1CiBtc2dpZCAiIgogInB1c2guZGVmYXVsdCBpcyB1bnNldDsgaXRzIGltcGxpY2l0IHZhbHVlIGlzIGNoYW5naW5nIGluXG4iCiAiR2l0IDIuMCBmcm9tICdtYXRjaGluZycgdG8gJ3NpbXBsZScuIFRvIHNxdWVsY2ggdGhpcyBtZXNzYWdlXG4iCkBAIC03NDczLDI4ICs3Njg4LDI4IEBACiAidOG7sVxuIgogIuKAnGN1cnJlbnTigJ0gdGhheSB2w6wg4oCcc2ltcGxl4oCdIG7hur91IGLhuqFuIHRo4buJbmggdGhv4bqjbmcgcGjhuqNpIHPhu60gZOG7pW5nIGLhuqNuIEdpdCBjxakpIgogCi0jOiBidWlsdGluL3B1c2guYzoxOTkKKyM6IGJ1aWx0aW4vcHVzaC5jOjIyNQogbXNnaWQgIiIKICJZb3UgZGlkbid0IHNwZWNpZnkgYW55IHJlZnNwZWNzIHRvIHB1c2gsIGFuZCBwdXNoLmRlZmF1bHQgaXMgXCJub3RoaW5nXCIuIgogbXNnc3RyICIiCiAiQuG6oW4gxJHDoyBraMO0bmcgY2jhu4kgcmEgbeG7mXQgcmVmc3BlY3MgbsOgbyDEkeG7gyBwdXNoLCB2w6AgcHVzaC5kZWZhdWx0IGzDoCBcImtow7RuZyBsw6AgIgogImfDrCBj4bqjXCIuIgogCi0jOiBidWlsdGluL3B1c2guYzoyMDYKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzMgogbXNnaWQgIiIKICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGlwIG9mIHlvdXIgY3VycmVudCBicmFuY2ggaXMgYmVoaW5kXG4iCi0iaXRzIHJlbW90ZSBjb3VudGVycGFydC4gTWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuICdnaXQgcHVsbCcpXG4iCi0iYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisiaXRzIHJlbW90ZSBjb3VudGVycGFydC4gSW50ZWdyYXRlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLlxuIgorIidnaXQgcHVsbCAuLi4nKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKICJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiIgogIlZp4buHYyBj4bqtcCBuaOG6rXQgYuG7iyB04burIGNo4buRaSBi4bufaSB2w6wgxJHhuqd1IG3DunQgY+G7p2EgbmjDoW5oIMSRxrDhu6NjIHB1c2ggbuG6sW0gxJHhurFuZyBzYXUgYuG7mVxuIgogInBo4bqtbiB0xrDGoW5nIOG7qW5nIGPhu6dhIG3DoXkgY2jhu6cuIEjDsmEgdHLhu5luIHbhu5tpIGPDoWMgdGhheSDEkeG7lWkgdOG7qyBtw6F5IGNo4bunICh2LmQuIOKAnGdpdCAiCi0icHVsbOKAnSlcbiIKKyJwdWxsLi4u4oCdKVxuIgogInRyxrDhu5tjIGtoaSBs4bqhaSBwdXNoIGzhuqduIG7hu69hLlxuIgotIlhlbSB0cm9uZyBwaOG6p24g4oCcTm90ZSBhYm91dCBmYXN0LWZvcndhcmRz4oCdIHThu6sgbOG7h25oIOKAnGdpdCBwdXNoIC0taGVscOKAnSDEkeG7gyBjw7MgIgotInRow7RuZyB0aW4gY2hpIHRp4bq/dC4iCisiWGVtIOKAnE5vdGUgYWJvdXQgZmFzdC1mb3J3YXJkc+KAnSB04burIGzhu4duaCDigJxnaXQgcHVzaCAtLWhlbHDigJ0gxJHhu4MgY8OzIHRow7RuZyB0aW4gY2hpICIKKyJ0aeG6v3QuIgogCi0jOiBidWlsdGluL3B1c2guYzoyMTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzOAogbXNnaWQgIiIKICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSBhIHB1c2hlZCBicmFuY2ggdGlwIGlzIGJlaGluZCBpdHMgcmVtb3RlXG4iCiAiY291bnRlcnBhcnQuIElmIHlvdSBkaWQgbm90IGludGVuZCB0byBwdXNoIHRoYXQgYnJhbmNoLCB5b3UgbWF5IHdhbnQgdG9cbiIKQEAgLTc1MDksNDEgKzc3MjQsNDAgQEAKICJ0aMOgbmgg4oCcc2ltcGxl4oCdLCDigJxjdXJyZW504oCdIGhv4bq3YyDigJx1cHN0cmVhbeKAnSDEkeG7gyBjaOG7iSBwdXNoIG5ow6FuaCBoaeG7h24gaMOgbmggbcOgICIKICJ0aMO0aS4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIxOAorIzogYnVpbHRpbi9wdXNoLmM6MjQ0CiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIGEgcHVzaGVkIGJyYW5jaCB0aXAgaXMgYmVoaW5kIGl0cyByZW1vdGVcbiIKLSJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKLSIoZS5nLiAnZ2l0IHB1bGwnKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKKyJjb3VudGVycGFydC4gQ2hlY2sgb3V0IHRoaXMgYnJhbmNoIGFuZCBpbnRlZ3JhdGUgdGhlIHJlbW90ZSBjaGFuZ2VzXG4iCisiKGUuZy4gJ2dpdCBwdWxsIC4uLicpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgogIlNlZSB0aGUgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycgaW4gJ2dpdCBwdXNoIC0taGVscCcgZm9yIGRldGFpbHMuIgogbXNnc3RyICIiCiAiVmnhu4djIGPhuq1wIG5o4bqtdCBi4buLIHThu6sgY2jhu5FpIGLhu59pIHbDrCDEkeG6p3UgbcO6dCBj4bunYSBuaMOhbmggxJHGsOG7o2MgcHVzaCBu4bqxbSDEkeG6sW5nIHNhdSBi4buZXG4iCiAicGjhuq1uIHTGsMahbmcg4bupbmcgY+G7p2EgbcOheSBjaOG7py4gQ2hlY2tvdSBuaMOhbmggbsOgeSB2w6AgaMOyYSB0cuG7mW4gduG7m2kgY8OhYyB0aGF5IMSR4buVaSAiCiAidOG7qyBtw6F5IGNo4bunXG4iCi0iKHYuZC4g4oCcZ2l0IHB1bGzigJ0pIHRyxrDhu5tjIGtoaSBs4bqhaSBwdXNoIGzhuqduIG7hu69hLlxuIgotIlhlbSB0cm9uZyBwaOG6p24g4oCcTm90ZSBhYm91dCBmYXN0LWZvcndhcmRz4oCdIHThu6sgbOG7h25oIOKAnGdpdCBwdXNoIC0taGVscOKAnSDEkeG7gyBjw7MgIgotInRow7RuZyB0aW4gY2hpIHRp4bq/dC4iCisiKHYuZC4g4oCcZ2l0IHB1bGwgLi4u4oCdKSB0csaw4bubYyBraGkgbOG6oWkgcHVzaCBs4bqnbiBu4buvYS5cbiIKKyJYZW0g4oCcTm90ZSBhYm91dCBmYXN0LWZvcndhcmRz4oCdIHThu6sgbOG7h25oIOKAnGdpdCBwdXNoIC0taGVscOKAnSDEkeG7gyBjw7MgdGjDtG5nIHRpbiBjaGkgIgorInRp4bq/dC4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorIzogYnVpbHRpbi9wdXNoLmM6MjUwCiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgogIm5vdCBoYXZlIGxvY2FsbHkuIFRoaXMgaXMgdXN1YWxseSBjYXVzZWQgYnkgYW5vdGhlciByZXBvc2l0b3J5IHB1c2hpbmdcbiIKLSJ0byB0aGUgc2FtZSByZWYuIFlvdSBtYXkgd2FudCB0byBmaXJzdCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4sXG4iCi0iJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgaW50ZWdyYXRlIHRoZSByZW1vdGUgY2hhbmdlc1xuIgorIihlLmcuLCAnZ2l0IHB1bGwgLi4uJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICJWaeG7h2MgY+G6rXAgbmjhuq10IGLhu4sgdOG7qyBjaOG7kWkgYuG7n2kgdsOsIG3DoXkgY2jhu6cgY8OzIGNo4bupYSBjw7RuZyB2aeG7h2MgbcOgIGLhuqFuIGtow7RuZ1xuIgotImPDsyDhu58gbcOheSBu4buZaSBi4buZIGPhu6dhIG3DrG5oLiBM4buXaSBuw6B5IHRoxrDhu51uZyBjw7Mgbmd1ecOqbiBuaMOibiBi4bufaSBraG8ga2jDoWMgxJHhuql5IGThu68gIgotImxp4buHdSBsw6puXG4iCi0iY8O5bmcgbeG7mXQgdGhhbSBjaGnhur91LiBC4bqhbiBjw7MgbOG6vSBtdeG7kW4gaMOyYSB0cuG7mW4gduG7m2kgY8OhYyB0aGF5IMSR4buVaSB04burIG3DoXkgY2jhu6dcbiIKLSIodi5kLiDigJxnaXQgcHVsbOKAnSkgdHLGsOG7m2Mga2hpIGzhuqFpIHB1c2ggbOG6p24gbuG7r2EuXG4iCi0iWGVtIHRyb25nIHBo4bqnbiDigJxOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHPigJ0gdOG7qyBs4buHbmgg4oCcZ2l0IHB1c2ggLS1oZWxw4oCdIMSR4buDIGPDsyAiCi0idGjDtG5nIHRpbiBjaGkgdGnhur90LiIKKyJjw7Mg4bufIG3DoXkgbuG7mWkgYuG7mSBj4bunYSBtw6xuaC4gTOG7l2kgbsOgeSB0aMaw4budbmcgY8OzIG5ndXnDqm4gbmjDom4gYuG7n2kga2hvIGtow6FjIMSR4bqpeVxuIgorImThu68gbGnhu4d1IGzDqm4gY8O5bmcgbeG7mXQgdGhhbSBjaGnhur91LiBC4bqhbiBjw7MgbOG6vSBtdeG7kW4gaMOyYSB0cuG7mW4gduG7m2kgY8OhYyB0aGF5IMSR4buVaVxuIgorInThu6sgbcOheSBjaOG7pyh2LmQuIOKAnGdpdCBwdWxsLi4u4oCdKSB0csaw4bubYyBraGkgbOG6oWkgcHVzaCBs4bqnbiBu4buvYS5cbiIKKyJYZW0g4oCcTm90ZSBhYm91dCBmYXN0LWZvcndhcmRz4oCdIHThu6sgbOG7h25oIOKAnGdpdCBwdXNoIC0taGVscOKAnSDEkeG7gyBjw7MgdGjDtG5nIHRpbiBjaGkgIgorInRp4bq/dC4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIzMQorIzogYnVpbHRpbi9wdXNoLmM6MjU3CiBtc2dpZCAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgdGhlIHRhZyBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcmVtb3RlLiIKIG1zZ3N0ciAiVmnhu4djIGPhuq1wIG5o4bqtdCBi4buLIHThu6sgY2jhu5FpIGLhu59pIHbDrCB0aOG6uyDEkcOjIHPhurVuIGPDsyB04burIHRyxrDhu5tjIHRyw6puIG3DoXkgY2jhu6cuIgogCi0jOiBidWlsdGluL3B1c2guYzoyMzQKKyM6IGJ1aWx0aW4vcHVzaC5jOjI2MAogbXNnaWQgIiIKICJZb3UgY2Fubm90IHVwZGF0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKICJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKQEAgLTc1NTUsMjIgKzc3NjksMjIgQEAKICJ0xrDhu6NuZ1xuIgogImtow7RuZyBwaOG6o2kgY2h1eeG7g24gZ2lhbywgbcOgIGtow7RuZyBz4butIGThu6VuZyB0w7l5IGNo4buNbiDigJwtLWZvcmNl4oCdLlxuIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjMyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIHRvICVzXG4iCiBtc2dzdHIgIsSQYW5nIHB1c2ggKMSR4bqpeSkgbMOqbiAlc1xuIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTgKKyM6IGJ1aWx0aW4vcHVzaC5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJyVzJyIKIG1zZ3N0ciAiZ+G6t3AgbOG7l2kga2hpIHB1c2ggKMSR4bqpeSBsw6puKSBt4buZdCBz4buRIHRoYW0gY2hp4bq/dSAocmVmKSDEkeG6v24g4oCcJXPigJ0iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMzMQorIzogYnVpbHRpbi9wdXNoLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCiBtc2dzdHIgInJlcG9zaXRvcnkgKGtobykgc2FpIOKAnCVz4oCdIgogCi0jOiBidWlsdGluL3B1c2guYzozMzIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1OAogbXNnaWQgIiIKICJObyBjb25maWd1cmVkIHB1c2ggZGVzdGluYXRpb24uXG4iCiAiRWl0aGVyIHNwZWNpZnkgdGhlIFVSTCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgb3IgY29uZmlndXJlIGEgcmVtb3RlICIKQEAgLTc1OTEsODggKzc4MDUsODggQEAKICJcbiIKICIgICAgZ2l0IHB1c2ggPHTDqm4+XG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM0NworIzogYnVpbHRpbi9wdXNoLmM6MzczCiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWFsbCB2w6AgLS10YWdzIHh1bmcga2jhuq9jIG5oYXUiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM0OAorIzogYnVpbHRpbi9wdXNoLmM6Mzc0CiBtc2dpZCAiLS1hbGwgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1hbGwga2jDtG5nIHRo4buDIMSRxrDhu6NjIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgcmVmc3BlY3MiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM1MworIzogYnVpbHRpbi9wdXNoLmM6Mzc5CiBtc2dpZCAiLS1taXJyb3IgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLW1pcnJvciB2w6AgLS10YWdzIHh1bmcga2jhuq9jIG5oYXUiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM1NAorIzogYnVpbHRpbi9wdXNoLmM6MzgwCiBtc2dpZCAiLS1taXJyb3IgY2FuJ3QgYmUgY29tYmluZWQgd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiLS1taXJyb3Iga2jDtG5nIHRo4buDIMSRxrDhu6NjIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgcmVmc3BlY3MiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM1OQorIzogYnVpbHRpbi9wdXNoLmM6Mzg1CiBtc2dpZCAiLS1hbGwgYW5kIC0tbWlycm9yIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tYWxsIHbDoCAtLW1pcnJvciB4dW5nIGto4bqvYyBuaGF1IgogCi0jOiBidWlsdGluL3B1c2guYzo0MTkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0NQogbXNnaWQgInJlcG9zaXRvcnkiCiBtc2dzdHIgImtobyIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDIwCisjOiBidWlsdGluL3B1c2guYzo0NDYKIG1zZ2lkICJwdXNoIGFsbCByZWZzIgogbXNnc3RyICJwdXNoIHThuqV0IGPhuqMgcmVmcyIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDIxCisjOiBidWlsdGluL3B1c2guYzo0NDcKIG1zZ2lkICJtaXJyb3IgYWxsIHJlZnMiCiBtc2dzdHIgIm1pcnJvciB04bqldCBj4bqjIHJlZnMiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyMworIzogYnVpbHRpbi9wdXNoLmM6NDQ5CiBtc2dpZCAiZGVsZXRlIHJlZnMiCiBtc2dzdHIgInjDs2EgcmVmcyIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDI0CisjOiBidWlsdGluL3B1c2guYzo0NTAKIG1zZ2lkICJwdXNoIHRhZ3MgKGNhbid0IGJlIHVzZWQgd2l0aCAtLWFsbCBvciAtLW1pcnJvcikiCiBtc2dzdHIgIiIKICJjw6FjIHRo4bq7IHB1c2ggKGtow7RuZyB0aOG7gyBz4butIGThu6VuZyBjw7luZyB24bubaSBjw6FjIHTDuXkgY2jhu41uIC0tYWxsIGhheSAtLW1pcnJvcikiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyNworIzogYnVpbHRpbi9wdXNoLmM6NDUzCiBtc2dpZCAiZm9yY2UgdXBkYXRlcyIKIG1zZ3N0ciAiw6lwIGJ14buZYyBj4bqtcCBuaOG6rXQiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyOAorIzogYnVpbHRpbi9wdXNoLmM6NDU0CiBtc2dpZCAiY2hlY2siCiBtc2dzdHIgImtp4buDbSB0cmEiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyOQorIzogYnVpbHRpbi9wdXNoLmM6NDU1CiBtc2dpZCAiY29udHJvbCByZWN1cnNpdmUgcHVzaGluZyBvZiBzdWJtb2R1bGVzIgogbXNnc3RyICLEkWnhu4F1IGtoaeG7g24gdmnhu4djIMSR4bqpeSBsw6puIChwdXNoKSDEkeG7hyBxdWkgY+G7p2EgbcO0LcSRdW4tY29uIgogCi0jOiBidWlsdGluL3B1c2guYzo0MzEKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1NwogbXNnaWQgInVzZSB0aGluIHBhY2siCiBtc2dzdHIgInThuqFvIGfDs2kgbmjhurkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzMiBidWlsdGluL3B1c2guYzo0MzMKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1OCBidWlsdGluL3B1c2guYzo0NTkKIG1zZ2lkICJyZWNlaXZlIHBhY2sgcHJvZ3JhbSIKIG1zZ3N0ciAibmjhuq1uIHbhu4EgY2jGsMahbmcgdHLDrG5oIHBhY2siCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzNAorIzogYnVpbHRpbi9wdXNoLmM6NDYwCiBtc2dpZCAic2V0IHVwc3RyZWFtIGZvciBnaXQgcHVsbC9zdGF0dXMiCiBtc2dzdHIgIsSR4bq3dCB0aMaw4bujbmcgbmd14buTbiAodXBzdHJlYW0pIGNobyBnaXQgcHVsbC9zdGF0dXMiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzNworIzogYnVpbHRpbi9wdXNoLmM6NDYzCiBtc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCiBtc2dzdHIgInBydW5lIChj4bqvdCBj4buldCkgbmjhu69uZyB0aGFtIGNoaeG6v3UgKHJlZnMpIGLhu4sgZ+G7oSBi4buPIgogCi0jOiBidWlsdGluL3B1c2guYzo0MzkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ2NQogbXNnaWQgImJ5cGFzcyBwcmUtcHVzaCBob29rIgogbXNnc3RyICJ2w7JuZyBxdWEg4oCccHJlLXB1c2ggaG9va+KAnSIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDQwCisjOiBidWlsdGluL3B1c2guYzo0NjYKIG1zZ2lkICJwdXNoIG1pc3NpbmcgYnV0IHJlbGV2YW50IHRhZ3MiCiBtc2dzdHIgInB1c2ggYuG7iyB0csaw4bujdCBuaMawbmcgY8OhYyB0aOG6uyB0aMOtY2ggaOG7o3AiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAorIzogYnVpbHRpbi9wdXNoLmM6NDc2CiBtc2dpZCAiLS1kZWxldGUgaXMgaW5jb21wYXRpYmxlIHdpdGggLS1hbGwsIC0tbWlycm9yIGFuZCAtLXRhZ3MiCiBtc2dzdHIgIi0tZGVsZXRlIGzDoCB4dW5nIGto4bqvYyB24bubaSBjw6FjIHTDuXkgY2jhu41uIC0tYWxsLCAtLW1pcnJvciB2w6AgLS10YWdzIgogCi0jOiBidWlsdGluL3B1c2guYzo0NTIKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ3OAogbXNnaWQgIi0tZGVsZXRlIGRvZXNuJ3QgbWFrZSBzZW5zZSB3aXRob3V0IGFueSByZWZzIgogbXNnc3RyICItLWRlbGV0ZSBraMO0bmcgaOG7o3AgbMO9IG7hur91IGtow7RuZyBjw7MgYuG6pXQga+G7syB0aGFtIGNoaeG6v3UgKHJlZnMpIG7DoG8iCiAKQEAgLTc2ODcsNzEgKzc5MDEsODEgQEAKICJbLS1pbmRleC1vdXRwdXQ9PHThuq1wLXRpbj5dICgtLWVtcHR5IHwgPHRyZWUtaXNoMT4gWzx0cmVlLWlzaDI+IFs8dHJlZS0iCiAiaXNoMz5dXSkiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA4CisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEwOQogbXNnaWQgIndyaXRlIHJlc3VsdGluZyBpbmRleCB0byA8ZmlsZT4iCiBtc2dzdHIgImdoaSBt4bulYyBs4bulYyBr4bq/dCBxdeG6oyB2w6BvIDx04bqtcC10aW4+IgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKIG1zZ2lkICJvbmx5IGVtcHR5IHRoZSBpbmRleCIKIG1zZ3N0ciAiY2jhu4kgduG7m2kgYuG6o25nIG3hu6VjIGzhu6VjIHRy4buRbmcgcuG7l25nIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjExMworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTQKIG1zZ2lkICJNZXJnaW5nIgogbXNnc3RyICJIw7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTUKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE2CiBtc2dpZCAicGVyZm9ybSBhIG1lcmdlIGluIGFkZGl0aW9uIHRvIGEgcmVhZCIKIG1zZ3N0ciAidGjhu7FjIGhp4buHbiBt4buZdCBow7JhIHRy4buZbiB0aMOqbSB2w6BvIHZp4buHYyDEkeG7jWMiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE3CisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExOAogbXNnaWQgIjMtd2F5IG1lcmdlIGlmIG5vIGZpbGUgbGV2ZWwgbWVyZ2luZyByZXF1aXJlZCIKIG1zZ3N0ciAiIgogImjDsmEgdHLhu5luIGtp4buDdSDigJwzLXdheeKAnSBu4bq/dSBraMO0bmcgY8OzIHThuq1wIHRpbiBt4bupYyBow7JhIHRy4buZbiBuw6BvIMSRxrDhu6NjIHnDqnUgY+G6p3UgIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjExOQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjAKIG1zZ2lkICIzLXdheSBtZXJnZSBpbiBwcmVzZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIgogbXNnc3RyICJow7JhIHRy4buZbiAzLXdheSB0cm9uZyBz4buxIGhp4buHbiBkaeG7h24gY+G7p2Eg4oCcYWRkc+KAnSB2w6Ag4oCccmVtb3Zlc+KAnSIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjEKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIyCiBtc2dpZCAic2FtZSBhcyAtbSwgYnV0IGRpc2NhcmQgdW5tZXJnZWQgZW50cmllcyIKIG1zZ3N0ciAiZ2nhu5FuZyB24bubaSAtbSwgbmjGsG5nIGLhu48gcXVhIGPDoWMgbeG7pWMgY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4iCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIyCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMwogbXNnaWQgIjxzdWJkaXJlY3Rvcnk+LyIKIG1zZ3N0ciAiPHRoxrAtbeG7pWMtY29uPi8iCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIzCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyNAogbXNnaWQgInJlYWQgdGhlIHRyZWUgaW50byB0aGUgaW5kZXggdW5kZXIgPHN1YmRpcmVjdG9yeT4vIgogbXNnc3RyICLEkeG7jWMgY8OieSB2w6BvIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYyBkxrDhu5tpIDx0aMawX23hu6VjX2Nvbj4vIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyNgorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjcKIG1zZ2lkICJ1cGRhdGUgd29ya2luZyB0cmVlIHdpdGggbWVyZ2UgcmVzdWx0IgogbXNnc3RyICJj4bqtcCBuaOG6rXQgY8OieSBsw6BtIHZp4buHYyB24bubaSBr4bq/dCBxdeG6oyBow7JhIHRy4buZbiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjgKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI5CiBtc2dpZCAiZ2l0aWdub3JlIgogbXNnc3RyICJnaXRpZ25vcmUiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI5CisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMAogbXNnaWQgImFsbG93IGV4cGxpY2l0bHkgaWdub3JlZCBmaWxlcyB0byBiZSBvdmVyd3JpdHRlbiIKIG1zZ3N0ciAiY2hvIHBow6lwIGPDoWMgdOG6rXAgdGluIHLDtSByw6BuZyBi4buLIGzhu50gxJFpIMSRxrDhu6NjIGdoaSDEkcOoIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMgorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzMKIG1zZ2lkICJkb24ndCBjaGVjayB0aGUgd29ya2luZyB0cmVlIGFmdGVyIG1lcmdpbmciCiBtc2dzdHIgImtow7RuZyBraeG7g20gdHJhIGPDonkgbMOgbSB2aeG7h2Mgc2F1IGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzQKIG1zZ2lkICJkb24ndCB1cGRhdGUgdGhlIGluZGV4IG9yIHRoZSB3b3JrIHRyZWUiCiBtc2dzdHIgImtow7RuZyBj4bqtcCBuaOG6rXQgYuG6o25nIG3hu6VjIGzhu6VjIGhheSBjw6J5IGzDoG0gdmnhu4djIgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzNQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzYKIG1zZ2lkICJza2lwIGFwcGx5aW5nIHNwYXJzZSBjaGVja291dCBmaWx0ZXIiCiBtc2dzdHIgImLhu48gcXVhIMOhcCBk4bulbmcgYuG7mSBs4buNYyBs4bqleSByYSAoY2hlY2tvdXQpIHRoxrBhIHRo4bubdCIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzcKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTM4CiBtc2dpZCAiZGVidWcgdW5wYWNrLXRyZWVzIgogbXNnc3RyICJn4buhIGzhu5dpIHVucGFjay10cmVlcyIKIAorIzogYnVpbHRpbi9yZWZsb2cuYzo1MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMnIGZvciAnJXMnIGlzIG5vdCBhIHZhbGlkIHRpbWVzdGFtcCIKK21zZ3N0ciAiJXMnIGNobyAnJXMnIGtow7RuZyBwaOG6o2kgbMOgIGThuqV1IHRo4budaSBnaWFuIGjhu6NwIGzhu4ciCisKKyM6IGJ1aWx0aW4vcmVmbG9nLmM6NjE2IGJ1aWx0aW4vcmVmbG9nLmM6NjIxCisjLCBjLWZvcm1hdAorbXNnaWQgIiclcycgaXMgbm90IGEgdmFsaWQgdGltZXN0YW1wIgorbXNnc3RyICLigJwlc+KAnSBraMO0bmcgcGjhuqNpIGzDoCBk4bqldSB0aOG7nWkgZ2lhbiBo4bujcCBs4buHIgorCiAjOiBidWlsdGluL3JlbW90ZS5jOjExCiBtc2dpZCAiZ2l0IHJlbW90ZSBbLXYgfCAtLXZlcmJvc2VdIgogbXNnc3RyICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iCkBAIC04MzI3LDk3ICs4NTUxLDk3IEBACiBtc2dpZCAiRmFpbGVkIHRvIGZpbmQgdHJlZSBvZiAlcy4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSB0w6xtIGPDonkgY+G7p2EgJXMuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6OTgKKyM6IGJ1aWx0aW4vcmVzZXQuYzo5OQogIywgYy1mb3JtYXQKIG1zZ2lkICJIRUFEIGlzIG5vdyBhdCAlcyIKIG1zZ3N0ciAiSEVBRCBoaeG7h24gZ2nhu50gdOG6oWkgJXMiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoxNjkKKyM6IGJ1aWx0aW4vcmVzZXQuYzoxNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGRvIGEgJXMgcmVzZXQgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlLiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gbeG7mXQgJXMgcmVzZXQg4bufIGdp4buvYSBj4bunYSBxdcOhIHRyw6xuaCBow7JhIHRy4buZbi4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNDgKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKIG1zZ2lkICJiZSBxdWlldCwgb25seSByZXBvcnQgZXJyb3JzIgogbXNnc3RyICJsw6BtIHZp4buHYyDhu58gY2jhur8gxJHhu5kgaW0gbOG6t25nLCBjaOG7iSBoaeG7g24gdGjhu4sga2hpIGPDsyBs4buXaSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI1MAorIzogYnVpbHRpbi9yZXNldC5jOjI1MwogbXNnaWQgInJlc2V0IEhFQUQgYW5kIGluZGV4IgogbXNnc3RyICLEkeG6t3QgbOG6oWkgKHJlc2V0KSBIRUFEIHbDoCBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTQKIG1zZ2lkICJyZXNldCBvbmx5IEhFQUQiCiBtc2dzdHIgImNo4buJIMSR4bq3dCBs4bqhaSAocmVzZXQpIEhFQUQiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNTMgYnVpbHRpbi9yZXNldC5jOjI1NQorIzogYnVpbHRpbi9yZXNldC5jOjI1NiBidWlsdGluL3Jlc2V0LmM6MjU4CiBtc2dpZCAicmVzZXQgSEVBRCwgaW5kZXggYW5kIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAixJHhurd0IGzhuqFpIEhFQUQsIGLhuqNuZyBt4bulYyBs4bulYyB2w6AgY8OieSBsw6BtIHZp4buHYyIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI1NworIzogYnVpbHRpbi9yZXNldC5jOjI2MAogbXNnaWQgInJlc2V0IEhFQUQgYnV0IGtlZXAgbG9jYWwgY2hhbmdlcyIKIG1zZ3N0ciAixJHhurd0IGzhuqFpIEhFQUQgbmjGsG5nIGdp4buvIGzhuqFpIGPDoWMgdGhheSDEkeG7lWkgbuG7mWkgYuG7mSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI3NQorIzogYnVpbHRpbi9yZXNldC5jOjI3OAogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgcmV2aXNpb24uIgogbXNnc3RyICJH4bq3cCBs4buXaSBraGkgcGjDom4gZ2nhuqNpIOKAnCVz4oCdIG5oxrAgbMOgIMSRaeG7g20geMOpdCBkdXnhu4d0IGjhu6NwIGzhu4cuIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6Mjc4IGJ1aWx0aW4vcmVzZXQuYzoyODYKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyODEgYnVpbHRpbi9yZXNldC5jOjI4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICJraMO0bmcgdGjhu4MgcGjDom4gdMOtY2ggxJHhu5FpIHTGsOG7o25nIOKAnCVz4oCdLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI4MworIzogYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgdHJlZS4iCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSBwaMOibiBnaeG6o2kg4oCcJXPigJ0gbmjGsCBsw6AgbeG7mXQgY8OieSAodHJlZSkgaOG7o3AgbOG7hy4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyOTIKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyOTUKIG1zZ2lkICItLXBhdGNoIGlzIGluY29tcGF0aWJsZSB3aXRoIC0te2hhcmQsbWl4ZWQsc29mdH0iCiBtc2dzdHIgIi0tcGF0Y2ggeHVuZyBraOG6r2MgduG7m2kgLS17aGFyZCxtaXhlZCxzb2Z0fSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMwMQorIzogYnVpbHRpbi9yZXNldC5jOjMwNAogbXNnaWQgIi0tbWl4ZWQgd2l0aCBwYXRocyBpcyBkZXByZWNhdGVkOyB1c2UgJ2dpdCByZXNldCAtLSA8cGF0aHM+JyBpbnN0ZWFkLiIKIG1zZ3N0ciAiIgogIi0tbWl4ZWQgduG7m2kgY8OhYyDEkcaw4budbmcgZOG6q24ga2jDtG5nIGPDsm4gZMO5bmcgbuG7r2E7IGjDo3kgdGhheSB0aOG6vyBi4bqxbmcgbOG7h25oIOKAnGdpdCAiCiAicmVzZXQgLS0gPMSRxrDhu51uZ19k4bqrbj7igJ0uIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzAzCisjOiBidWlsdGluL3Jlc2V0LmM6MzA2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBkbyAlcyByZXNldCB3aXRoIHBhdGhzLiIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHRo4buxYyBoaeG7h24gbOG7h25oICVzIHJlc2V0IHbhu5tpIGPDoWMgxJHGsOG7nW5nIGThuqtuLiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMxMworIzogYnVpbHRpbi9yZXNldC5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiJXMgcmVzZXQga2jDtG5nIMSRxrDhu6NjIHBow6lwIHRyw6puIGtobyBiYXJlICh0csOqbiBtw6F5IGNo4bunKSIKIAotIzogYnVpbHRpbi9yZXNldC5jOjMzMworIzogYnVpbHRpbi9yZXNldC5jOjMzNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVzZXQgaW5kZXggZmlsZSB0byByZXZpc2lvbiAnJXMnLiIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4bq3dCBs4bqhaSAocmVzZXQpIGLhuqNuZyBt4bulYyBs4bulYyB0aMOgbmggxJFp4buDbSB4w6l0IGzhuqFpIOKAnCVz4oCdLiIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIMSR4bq3dCBs4bqhaSAocmVzZXQpIGLhuqNuZyBt4bulYyBs4bulYyB0aMOgbmggxJFp4buDbSB4w6l0IGR1eeG7h3Qg4oCcJXPigJ0uIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzM5CisjOiBidWlsdGluL3Jlc2V0LmM6MzQyCiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCiBtc2dzdHIgIk5o4buvbmcgdGhheSDEkeG7lWkgYuG7iyBi4buPIHRy4bqhbmcgdGjDoWkgKHN0YWdlKSBzYXUga2hpIHJlc2V0OiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0NAorIzogYnVpbHRpbi9yZXNldC5jOjM0NwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgdOG6rXAgdGluIGzGsHUgYuG6o25nIG3hu6VjIGzhu6VjIG3hu5tpLiIKIAotIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozMzkKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ1CiBtc2dpZCAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIKIG1zZ3N0ciAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtjw6FjLXTDuXktY2jhu41uXSAtLSBbPHRoLnPhu5E+Li4uXSIKIAotIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozNDQKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzUwCiBtc2dpZCAia2VlcCB0aGUgYC0tYCBwYXNzZWQgYXMgYW4gYXJnIgogbXNnc3RyICJnaeG7ryDigJwtLeKAnCBjaHV54buDbiBxdWEgbMOgbSB0aGFtIHPhu5EiCiAKLSM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ2CisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM1MgogbXNnaWQgInN0b3AgcGFyc2luZyBhZnRlciB0aGUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudCIKIG1zZ3N0ciAiZOG7q25nIHBow6JuIHTDrWNoIHNhdSDEkeG7kWkgc+G7kSDEkeG6p3UgdGnDqm4ga2jDtG5nIGPDsyB0w7l5IGNo4buNbiIKIAotIzogYnVpbHRpbi9yZXYtcGFyc2UuYzo0NjQKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6NDcwCiBtc2dpZCAiIgogImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKICIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKQEAgLTg0NDcsMTc2ICs4NjcxLDIwNCBAQAogbXNnaWQgImdpdCBjaGVycnktcGljayA8c3ViY29tbWFuZD4iCiBtc2dzdHIgImdpdCBjaGVycnktcGljayA8bOG7h25oLWNvbj4iCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6NzAgYnVpbHRpbi9yZXZlcnQuYzo5MgorIzogYnVpbHRpbi9yZXZlcnQuYzo3MSBidWlsdGluL3JldmVydC5jOjk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiAlcyBjYW5ub3QgYmUgdXNlZCB3aXRoICVzIgogbXNnc3RyICIlczogJXMga2jDtG5nIHRo4buDIMSRxrDhu6NjIHPhu60gZOG7pW5nIHbhu5tpICVzIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEwMworIzogYnVpbHRpbi9yZXZlcnQuYzoxMDUKIG1zZ2lkICJlbmQgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgogbXNnc3RyICJr4bq/dCB0aMO6YyBjaGVycnktcGljayBoYXkgcmV2ZXJ0IGxpw6puIHRp4bq/cCBuaGF1IgogCi0jOiBidWlsdGluL3JldmVydC5jOjEwNAorIzogYnVpbHRpbi9yZXZlcnQuYzoxMDYKIG1zZ2lkICJyZXN1bWUgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgogbXNnc3RyICJwaOG7pWMgaOG7k2kgbOG6oWkgY2hlcnJ5LXBpY2sgaGF5IHJldmVydCBsacOqbiB0aeG6v3AgbmhhdSIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDUKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA3CiBtc2dpZCAiY2FuY2VsIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKIG1zZ3N0ciAia2jDtG5nIGNoZXJyeS1waWNrIGhheSByZXZlcnQgbGnDqm4gdGnhur9wIG5oYXUiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA2CisjOiBidWlsdGluL3JldmVydC5jOjEwOAogbXNnaWQgImRvbid0IGF1dG9tYXRpY2FsbHkgY29tbWl0IgogbXNnc3RyICJraMO0bmcgY29tbWl0IG3hu5l0IGPDoWNoIHThu7EgxJHhu5luZy4iCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA3CisjOiBidWlsdGluL3JldmVydC5jOjEwOQogbXNnaWQgImVkaXQgdGhlIGNvbW1pdCBtZXNzYWdlIgogbXNnc3RyICJz4butYSBs4bqhaSBjaMO6IHRow61jaCBjaG8gY29tbWl0IgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMAorIzogYnVpbHRpbi9yZXZlcnQuYzoxMTIKIG1zZ2lkICJwYXJlbnQgbnVtYmVyIgogbXNnc3RyICJz4buRIGPhu6dhIGNoYSBt4bq5IgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKIG1zZ2lkICJtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAiY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTUKIG1zZ2lkICJvcHRpb24iCiBtc2dzdHIgInTDuXkgY2jhu41uIgogCi0jOiBidWlsdGluL3JldmVydC5jOjExNAorIzogYnVpbHRpbi9yZXZlcnQuYzoxMTYKIG1zZ2lkICJvcHRpb24gZm9yIG1lcmdlIHN0cmF0ZWd5IgogbXNnc3RyICJ0w7l5IGNo4buNbiBjaG8gY2hp4bq/biBsxrDhu6NjIGjDsmEgdHLhu5luIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyNQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMjcKIG1zZ2lkICJhcHBlbmQgY29tbWl0IG5hbWUiCiBtc2dzdHIgIm7hu5FpIHRow6ptIHTDqm4gbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMjYKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4CiBtc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIgogbXNnc3RyICJjaG8gcGjDqXAgZmFzdC1mb3J3YXJkIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyNworIzogYnVpbHRpbi9yZXZlcnQuYzoxMjkKIG1zZ2lkICJwcmVzZXJ2ZSBpbml0aWFsbHkgZW1wdHkgY29tbWl0cyIKIG1zZ3N0ciAiY+G6pW0ga2jhu59pIHThuqFvIGzhuqduIGNodXnhu4NuIGdpYW8gdHLhu5FuZyBy4buXbmciCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4CisjOiBidWlsdGluL3JldmVydC5jOjEzMAogbXNnaWQgImFsbG93IGNvbW1pdHMgd2l0aCBlbXB0eSBtZXNzYWdlcyIKIG1zZ3N0ciAiY2jhuqVwIG5o4bqtbiBjaHV54buDbiBnaWFvIChjb21taXQpIG3DoCBraMO0bmcgZ2hpIGNow7ogZ8OsIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyOQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMzEKIG1zZ2lkICJrZWVwIHJlZHVuZGFudCwgZW1wdHkgY29tbWl0cyIKIG1zZ3N0ciAiZ2nhu68gbOG6oWkgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIGTGsCB0aOG7q2EsIHLhu5duZyIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMzMKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTM1CiBtc2dpZCAicHJvZ3JhbSBlcnJvciIKIG1zZ3N0ciAibOG7l2kgY2jGsMahbmcgdHLDrG5oIgogCi0jOiBidWlsdGluL3JldmVydC5jOjIyMworIzogYnVpbHRpbi9yZXZlcnQuYzoyMjUKIG1zZ2lkICJyZXZlcnQgZmFpbGVkIgogbXNnc3RyICJyZXZlcnQgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjM4CisjOiBidWlsdGluL3JldmVydC5jOjI0MAogbXNnaWQgImNoZXJyeS1waWNrIGZhaWxlZCIKIG1zZ3N0ciAiY2hlcnJ5LXBpY2sgZ+G6t3AgbOG7l2kiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxNQorIzogYnVpbHRpbi9ybS5jOjE2CiBtc2dpZCAiZ2l0IHJtIFtvcHRpb25zXSBbLS1dIDxmaWxlPi4uLiIKIG1zZ3N0ciAiZ2l0IHJtIFtjw6FjLXTDuXktY2jhu41uXSBbLS1dIDx04bqtcC10aW4+Li4uIgogCi0jOiBidWlsdGluL3JtLmM6NjQgYnVpbHRpbi9ybS5jOjE4NgotIywgYy1mb3JtYXQKKyM6IGJ1aWx0aW4vcm0uYzo2NAogbXNnaWQgIiIKLSJzdWJtb2R1bGUgJyVzJyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcykgdXNlcyBhIC5naXQgZGlyZWN0b3J5XG4iCisidGhlIGZvbGxvd2luZyBzdWJtb2R1bGUgKG9yIG9uZSBvZiBpdHMgbmVzdGVkIHN1Ym1vZHVsZXMpXG4iCisidXNlcyBhIC5naXQgZGlyZWN0b3J5OiIKK21zZ2lkX3BsdXJhbCAiIgorInRoZSBmb2xsb3dpbmcgc3VibW9kdWxlcyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcylcbiIKKyJ1c2UgYSAuZ2l0IGRpcmVjdG9yeToiCittc2dzdHJbMF0gIiIKKyJtw7QtxJF1bi1jb24gc2F1IMSRw6J5IChoYXkgbeG7mXQgdHJvbmcgc+G7kSBtw7QtxJF1bi1jb24gYsOqbiB0cm9uZyBj4bunYSBuw7MpXG4iCisiZMO5bmcgbeG7mXQgdGjGsCBt4bulYyAuZ2l0OiIKK21zZ3N0clsxXSAiIgorImPDoWMgbcO0LcSRdW4tY29uIHNhdSDEkcOieSAoaGF5IG3hu5l0IHRyb25nIHPhu5EgbcO0LcSRdW4tY29uIGLDqm4gdHJvbmcgY+G7p2EgbsOzKVxuIgorImTDuW5nIG3hu5l0IHRoxrAgbeG7pWMgLmdpdDoiCisKKyM6IGJ1aWx0aW4vcm0uYzo3MAorbXNnaWQgIiIKKyJcbiIKICIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCiBtc2dzdHIgIiIKLSJtw7QtxJF1bi1jb24g4oCcJXPigJ0gKGhv4bq3YyBjw6FpIG7hurFtIHRyb25nIGPDoWMgbcO0LcSRdW4tY29uKSBkw7luZyB0aMawIG3hu6VjIC5naXRcbiIKLSIoZMO5bmcg4oCccm0gLXJm4oCdIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBn4buhIGLhu48gbsOzIGPDuW5nIHbhu5tpIHThuqV0IGPhuqMgbOG7i2NoIHPhu60gY+G7p2EgIgorIlxuIgorIihkw7luZyAvXCJybSAtcmYvXCIgbuG6v3UgYuG6oW4gdGjhu7FjIHPhu7EgbXXhu5FuIGfhu6EgYuG7jyBuw7MgY8O5bmcgduG7m2kgdOG6pXQgY+G6oyBs4buLY2ggc+G7rSBj4bunYSAiCiAiY2jDum5nKSIKIAotIzogYnVpbHRpbi9ybS5jOjE3NAotIywgYy1mb3JtYXQKKyM6IGJ1aWx0aW4vcm0uYzoyMzAKIG1zZ2lkICIiCi0iJyVzJyBoYXMgc3RhZ2VkIGNvbnRlbnQgZGlmZmVyZW50IGZyb20gYm90aCB0aGUgZmlsZSBhbmQgdGhlIEhFQURcbiIKKyJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlXG4iCisiZmlsZSBhbmQgdGhlIEhFQUQ6IgorbXNnaWRfcGx1cmFsICIiCisidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlXG4iCisiZmlsZSBhbmQgdGhlIEhFQUQ6IgorbXNnc3RyWzBdICIiCisidOG6rXAgdGluIHNhdSDEkcOieSBjw7MgdHLhuqFuZyB0aMOhaSBraMOhYyBiaeG7h3QgbuG7mWkgZHVuZyB04burIGPhuqMgdOG6rXAgdGluXG4iCisidsOgIGPhuqMgSEVBRDoiCittc2dzdHJbMV0gIiIKKyJjw6FjIHThuq1wIHRpbiBzYXUgxJHDonkgY8OzIHRy4bqhbmcgdGjDoWkga2jDoWMgYmnhu4d0IG7hu5lpIGR1bmcgdOG7qyBj4bqjIHThuq1wIHRpblxuIgorInbDoCBj4bqjIEhFQUQ6IgorCisjOiBidWlsdGluL3JtLmM6MjM1Cittc2dpZCAiIgorIlxuIgogIih1c2UgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiCiBtc2dzdHIgIiIKLSLigJwlc+KAnSBjw7MgbuG7mWkgZHVuZyDEkcaw4bujYyBsxrB1IHRy4bqhbmcgdGjDoWkga2jDoWMgYmnhu4d0IHThu6sgY+G6oyB04bqtcCB0aW4gdsOgIGPhuqMgSEVBRFxuIgotIihkw7luZyB0w7l5IGNo4buNbiAtZiDEkeG7gyDDqXAgYnXhu5ljIGfhu6EgYuG7jykiCisiXG4iCisiKGTDuW5nIC1mIMSR4buDIGJ14buZYyBn4buhIGLhu48pIgogCi0jOiBidWlsdGluL3JtLmM6MTgwCi0jLCBjLWZvcm1hdAorIzogYnVpbHRpbi9ybS5jOjIzOQorbXNnaWQgInRoZSBmb2xsb3dpbmcgZmlsZSBoYXMgY2hhbmdlcyBzdGFnZWQgaW4gdGhlIGluZGV4OiIKK21zZ2lkX3BsdXJhbCAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleDoiCittc2dzdHJbMF0gInThuq1wIHRpbiBzYXUgxJHDonkgY8OzIHRoYXkgxJHhu5VpIHRy4bqhbmcgdGjDoWkgdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjOiIKK21zZ3N0clsxXSAiY8OhYyB04bqtcCB0aW4gc2F1IMSRw6J5IGPDsyB0aGF5IMSR4buVaSB0cuG6oW5nIHRow6FpIHRyb25nIGLhuqNuZyBt4bulYyBs4bulYzoiCisKKyM6IGJ1aWx0aW4vcm0uYzoyNDMgYnVpbHRpbi9ybS5jOjI1NAogbXNnaWQgIiIKLSInJXMnIGhhcyBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXhcbiIKKyJcbiIKICIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIgogbXNnc3RyICIiCi0i4oCcJXPigJ0gY8OzIGPDoWMgdGhheSDEkeG7lWkgxJHGsOG7o2MgbMawdSB0cuG6oW5nIHRow6FpIHRyb25nIGLhuqNuZyBt4bulYyBs4bulY1xuIgorIlxuIgogIihkw7luZyB0w7l5IGNo4buNbiAtLWNhY2hlZCDEkeG7gyBnaeG7ryB04bqtcCB0aW4sIGhv4bq3YyAtZiDEkeG7gyDDqXAgYnXhu5ljIGfhu6EgYuG7jykiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxOTEKLSMsIGMtZm9ybWF0Ci1tc2dpZCAiIgotIiclcycgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnNcbiIKLSIodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpIgotbXNnc3RyICIiCi0i4oCcJXPigJ0gY8OzIGPDoWMgdGhheSDEkeG7lWkgbuG7mWkgYuG7mVxuIgotIihkw7luZyB0w7l5IGNo4buNbiAtLWNhY2hlZCDEkeG7gyBnaeG7ryB04bqtcCB0aW4sIGhv4bq3YyAtZiDEkeG7gyDDqXAgYnXhu5ljIGfhu6EgYuG7jykiCisjOiBidWlsdGluL3JtLmM6MjUxCittc2dpZCAidGhlIGZvbGxvd2luZyBmaWxlIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zOiIKK21zZ2lkX3BsdXJhbCAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGxvY2FsIG1vZGlmaWNhdGlvbnM6IgorbXNnc3RyWzBdICJ04bqtcCB0aW4gc2F1IMSRw6J5IGPDsyBuaOG7r25nIHRoYXkgxJHhu5VpIG7hu5lpIGLhu5k6IgorbXNnc3RyWzFdICJuaOG7r25nIHThuq1wIHRpbiBzYXUgxJHDonkgY8OzIG5o4buvbmcgdGhheSDEkeG7lWkgbuG7mWkgYuG7mToiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyMDcKKyM6IGJ1aWx0aW4vcm0uYzoyNjkKIG1zZ2lkICJkbyBub3QgbGlzdCByZW1vdmVkIGZpbGVzIgogbXNnc3RyICJraMO0bmcgbGnhu4d0IGvDqiBjw6FjIHThuq1wIHRpbiDEkcOjIGfhu6EgYuG7jyIKIAotIzogYnVpbHRpbi9ybS5jOjIwOAorIzogYnVpbHRpbi9ybS5jOjI3MAogbXNnaWQgIm9ubHkgcmVtb3ZlIGZyb20gdGhlIGluZGV4IgogbXNnc3RyICJjaOG7iSBn4buhIGLhu48gdOG7qyBt4bulYyBs4bulYyIKIAotIzogYnVpbHRpbi9ybS5jOjIwOQorIzogYnVpbHRpbi9ybS5jOjI3MQogbXNnaWQgIm92ZXJyaWRlIHRoZSB1cC10by1kYXRlIGNoZWNrIgogbXNnc3RyICJnaGkgxJHDqCBsw6puIGtp4buDbSB0cmEgY+G6rXAgbmjhuq10IgogCi0jOiBidWlsdGluL3JtLmM6MjEwCisjOiBidWlsdGluL3JtLmM6MjcyCiBtc2dpZCAiYWxsb3cgcmVjdXJzaXZlIHJlbW92YWwiCiBtc2dzdHIgImNobyBwaMOpcCBn4buhIGLhu48gxJHhu4cgcXVpIgogCi0jOiBidWlsdGluL3JtLmM6MjEyCisjOiBidWlsdGluL3JtLmM6Mjc0CiBtc2dpZCAiZXhpdCB3aXRoIGEgemVybyBzdGF0dXMgZXZlbiBpZiBub3RoaW5nIG1hdGNoZWQiCiBtc2dzdHIgInRob8OhdCByYSB24bubaSB0cuG6oW5nIHRow6FpIGtow6FjIGtow7RuZyB0aOG6rW0gY2jDrSBu4bq/dSBraMO0bmcgY8OzIGfDrCBraOG7m3AiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyODMKKyM6IGJ1aWx0aW4vcm0uYzozNDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IHJlbW92aW5nICclcycgcmVjdXJzaXZlbHkgd2l0aG91dCAtciIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIGfhu6EgYuG7jyDigJwlc+KAnSBt4buZdCBjw6FjaCDEkeG7hyBxdWkgbcOgIGtow7RuZyBjw7MgdMO5eSBjaOG7jW4gLXIiCiAKLSM6IGJ1aWx0aW4vcm0uYzozMjIKKyM6IGJ1aWx0aW4vcm0uYzozODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0IHJtOiB1bmFibGUgdG8gcmVtb3ZlICVzIgogbXNnc3RyICJnaXQgcm06IGtow7RuZyB0aOG7gyBn4buhIGLhu48gJXMiCiAKICM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxMwogbXNnaWQgImdpdCBzaG9ydGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gWzxwYXRoPi4uLl1dIgotbXNnc3RyICJnaXQgc2hvcnRsb2cgW2PDoWMtdMO5eS1jaOG7jW5dIFs8dsO5bmcteGVtLXjDqXQ+XSBbWy0tXSBbPMSRxrDhu51uZy1k4bqrbj4uLi5dXSIKK21zZ3N0ciAiZ2l0IHNob3J0bG9nIFtjw6FjLXTDuXktY2jhu41uXSBbPHbDuW5nLXjDqXQtZHV54buHdD5dIFtbLS1dIFs8xJHGsOG7nW5nLWThuqtuPi4uLl1dIgogCiAjOiBidWlsdGluL3Nob3J0bG9nLmM6MTMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3NpbmcgYXV0aG9yOiAlcyIKIG1zZ3N0ciAiVGhp4bq/dSB0w6puIHTDoWMgZ2nhuqM6ICVzIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjI3CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjI4CiBtc2dpZCAic29ydCBvdXRwdXQgYWNjb3JkaW5nIHRvIHRoZSBudW1iZXIgb2YgY29tbWl0cyBwZXIgYXV0aG9yIgogbXNnc3RyICJz4bqvcCB44bq/cCBr4bq/dCB4deG6pXQgdHXDom4gdGhlbyBz4buRIGzGsOG7o25nIGNodXnhu4NuIGdpYW8gdHLDqm4gbeG7l2kgdMOhYyBnaeG6oyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMAogbXNnaWQgIlN1cHByZXNzIGNvbW1pdCBkZXNjcmlwdGlvbnMsIG9ubHkgcHJvdmlkZXMgY29tbWl0IGNvdW50IgogbXNnc3RyICJDaOG6t24gbeG7jWkgbcO0IHThuqMgbOG6p24gY2h1eeG7g24gZ2lhbywgY2jhu4kgxJHGsGEgcmEgc+G7kSBsxrDhu6NuZyBs4bqnbiBjaHV54buDbiBnaWFvIgogCi0jOiBidWlsdGluL3Nob3J0bG9nLmM6MjMxCisjOiBidWlsdGluL3Nob3J0bG9nLmM6MjMyCiBtc2dpZCAiU2hvdyB0aGUgZW1haWwgYWRkcmVzcyBvZiBlYWNoIGF1dGhvciIKIG1zZ3N0ciAiSGnhu4NuIHRo4buLIHRoxrAgxJFp4buHbiB04butIGNobyB04burbmcgdMOhYyBnaeG6oyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMgorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMwogbXNnaWQgIndbLGkxWyxpMl1dIgogbXNnc3RyICJ3WyxpMVssaTJdXSIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMworIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzNAogbXNnaWQgIkxpbmV3cmFwIG91dHB1dCIKIG1zZ3N0ciAiTmfhuq90IGTDsm5nIGtoaSBxdcOhIGTDoGkiCiAKQEAgLTg2ODAsMjMgKzg5MzIsMjMgQEAKIG1zZ2lkICJzaG93IGNvbW1pdHMgaW4gdG9wb2xvZ2ljYWwgb3JkZXIiCiBtc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gdGhlbyB0aOG7qSB04buxIHTDtHDDtCIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MQorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MgogbXNnaWQgInNob3cgb25seSBjb21taXRzIG5vdCBvbiB0aGUgZmlyc3QgYnJhbmNoIgogbXNnc3RyICJjaOG7iSBoaeG7g24gdGjhu4sgY8OhYyBs4bqnbiBjaHV54buDbiBnaWFvIGtow7RuZyBu4bqxbSB0csOqbiBuaMOhbmggxJHhuqd1IHRpw6puIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjczCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc0CiBtc2dpZCAic2hvdyBtZXJnZXMgcmVhY2hhYmxlIGZyb20gb25seSBvbmUgdGlwIgogbXNnc3RyICJoaeG7g24gdGjhu4sgY8OhYyBs4bqnbiBow7JhIHRy4buZbiBjw7MgdGjhu4MgxJHhu41jIMSRxrDhu6NjIGNo4buJIHThu6sgbeG7mXQgxJHhuqd1IG3DunQiCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzUKLW1zZ2lkICJzaG93IGNvbW1pdHMgd2hlcmUgbm8gcGFyZW50IGNvbWVzIGJlZm9yZSBpdHMgY2hpbGRyZW4iCi1tc2dzdHIgImhp4buDbiB0aOG7iyBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gbsahaSBtw6AgY2hhIG3hurkgxJHhur9uIHRyxrDhu5tjIGNvbiBj4bunYSBuw7MiCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc2Cittc2dpZCAidG9wb2xvZ2ljYWxseSBzb3J0LCBtYWludGFpbmluZyBkYXRlIG9yZGVyIHdoZXJlIHBvc3NpYmxlIgorbXNnc3RyICJz4bqvcCB44bq/cCBow6xuaCB0aMOhaSBo4buNYywgYuG6o28gdHLDrCB0aOG7qSB04buxIG5nw6B5IG7hur91IGPDsyB0aOG7gyIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OQogbXNnaWQgIjxuPlssPGJhc2U+XSIKIG1zZ3N0ciAiPG4+Wyw8Y8ahIHPhu58+XSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY4MAogbXNnaWQgInNob3cgPG4+IG1vc3QgcmVjZW50IHJlZi1sb2cgZW50cmllcyBzdGFydGluZyBhdCBiYXNlIgogbXNnc3RyICJoaeG7g24gdGjhu4sgPG4+IGPDoWMgbeG7pWMg4oCccmVmLWxvZ+KAnSBn4bqnbiBuaOG6pXQga+G7gyB04burIG7hu4FuIChiYXNlKSIKIApAQCAtODcxMiwzOCArODk2NCwzOCBAQAogbXNnaWQgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPXBhdHRlcm5dIDwgcmVmLWxpc3QiCiBtc2dzdHIgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPW3huqt1XSA8IHJlZi1saXN0IgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTY1CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY4CiBtc2dpZCAib25seSBzaG93IHRhZ3MgKGNhbiBiZSBjb21iaW5lZCB3aXRoIGhlYWRzKSIKIG1zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIHRo4bq7IChjw7MgdGjhu4MgdOG7lSBo4bujcCBjw7luZyB24bubaSDEkeG6p3UpIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTY2CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTY5CiBtc2dpZCAib25seSBzaG93IGhlYWRzIChjYW4gYmUgY29tYmluZWQgd2l0aCB0YWdzKSIKIG1zZ3N0ciAiY2jhu4kgaGnhu4NuIHRo4buLIMSR4bqndSAoY8OzIHRo4buDIHThu5UgaOG7o3AgY8O5bmcgduG7m2kgdGjhurspIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTY3CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTcwCiBtc2dpZCAic3RyaWN0ZXIgcmVmZXJlbmNlIGNoZWNraW5nLCByZXF1aXJlcyBleGFjdCByZWYgcGF0aCIKIG1zZ3N0ciAiIgogInZp4buHYyBraeG7g20gdHJhIHRoYW0gY2hp4bq/dSBjaMOtbmggeMOhYywgxJHDsmkgaOG7j2kgY2jDrW5oIHjDoWMgxJHGsOG7nW5nIGThuqtuIHRoYW0gY2hp4bq/dSAiCiAiKHJlZikiCiAKLSM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzAgYnVpbHRpbi9zaG93LXJlZi5jOjE3MgotbXNnaWQgInNob3cgdGhlIEhFQUQgcmVmZXJlbmNlIgotbXNnc3RyICJoaeG7g24gdGjhu4sgdGhhbSBjaGnhur91IGPhu6dhIEhFQUQiCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTczIGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzYKK21zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSwgZXZlbiBpZiBpdCB3b3VsZCBiZSBmaWx0ZXJlZCBvdXQiCittc2dzdHIgImhp4buDbiB0aOG7iyB0aGFtIGNoaeG6v3UgSEVBRCwgbmdheSBj4bqjIGtoaSBuw7MgxJHDoyDEkcaw4bujYyBs4buNYyByYSIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3NAorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3OAogbXNnaWQgImRlcmVmZXJlbmNlIHRhZ3MgaW50byBvYmplY3QgSURzIgogbXNnc3RyICJiw6NpIGLhu48gdGhhbSBjaGnhur91IGPDoWMgdGjhursgdGjDoG5oIHJhIGPDoWMgSUQgxJHhu5FpIHTGsOG7o25nIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTc2CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTgwCiBtc2dpZCAib25seSBzaG93IFNIQTEgaGFzaCB1c2luZyA8bj4gZGlnaXRzIgogbXNnc3RyICJjaOG7iSBoaeG7g24gdGjhu4sgbcOjIGLEg20gU0hBMSBz4butIGThu6VuZyA8bj4gY2jhu68gc+G7kSIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MAorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4NAogbXNnaWQgImRvIG5vdCBwcmludCByZXN1bHRzIHRvIHN0ZG91dCAodXNlZnVsIHdpdGggLS12ZXJpZnkpIgogbXNnc3RyICIiCiAia2jDtG5nIGhp4buDbiB0aOG7iyBr4bq/dCBxdeG6oyByYSDEkeG6p3UgcmEgY2h14bqpbiAoc3Rkb3V0KSAoY2jhu4kgaOG7r3UgZOG7pW5nIHbhu5tpIC0tdmVyaWZ5KSIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4NgogbXNnaWQgInNob3cgcmVmcyBmcm9tIHN0ZGluIHRoYXQgYXJlbid0IGluIGxvY2FsIHJlcG9zaXRvcnkiCiBtc2dzdHIgIiIKICJoaeG7g24gdGjhu4sgY8OhYyB0aGFtIGNoaeG6v3UgKHJlZnMpIHThu6sgxJHhuqd1IHbDoG8gdGnDqnUgY2h14bqpbiAoc3RkaW4pIGPDoWkgbcOgIGtow7RuZyDhu58gIgpAQCAtOTE2NCwzMCArOTQxNiwzMyBAQAogbXNnaWQgIm9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmciCiBtc2dzdHIgImNo4buJIGjhu691IMOtY2gga2hpIGPhuqduIGfhu6EgbOG7l2kiCiAKLSM6IGdpdC5jOjE2CisjOiBnaXQuYzoxNwogbXNnaWQgIiIKICInZ2l0IGhlbHAgLWEnIGFuZCAnZ2l0IGhlbHAgLWcnIGxpc3RzIGF2YWlsYWJsZSBzdWJjb21tYW5kcyBhbmQgc29tZVxuIgogImNvbmNlcHQgZ3VpZGVzLiBTZWUgJ2dpdCBoZWxwIDxjb21tYW5kPicgb3IgJ2dpdCBoZWxwIDxjb25jZXB0PidcbiIKICJ0byByZWFkIGFib3V0IGEgc3BlY2lmaWMgc3ViY29tbWFuZCBvciBjb25jZXB0LiIKIG1zZ3N0ciAiIgogIuKAnGdpdCBoZWxwIC1h4oCdIHbDoCDigJxnaXQgaGVscCAtZ+KAnSBsaeG7h3Qga8OqIGPDoWMgY8OidSBs4buHbmggY29uIHPhurVuIGPDsyB2w6AgbeG7mXQgc+G7kVxuIgotImjGsOG7m25nIGThuqtuIGtow6FpIG5p4buHbSBjxqEgYuG6o24uIFhlbSDigJxnaXQgaGVscCA8bOG7h25oPuKAnSBoYXkg4oCcZ2l0IGhlbHAgPGtow6FpICIKLSJuaeG7h20+4oCdXG4iCi0ixJHhu4MgxJHhu41jIGPDoWMgxJHhurdjIHThuqMgY2hvIGzhu4duaCBoYXkga2jDoWkgbmnhu4dtIMSRw7MuIgorImjGsOG7m25nIGThuqtuIHbhu4Ega2jDoWkgbmnhu4dtLiBYZW0g4oCcZ2l0IGhlbHAgPGzhu4duaD7igJ0gaGF5IOKAnGdpdCBoZWxwIDxraMOhaS1uaeG7h20+4oCdXG4iCisixJHhu4MgeGVtIGPDoWMgxJHhurdjIHThuqMgY2hvIGzhu4duaCBoYXkga2jDoWkgbmnhu4dtIGPhu6UgdGjhu4MuIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MTU2CisjOiBwYXJzZS1vcHRpb25zLmg6MTQ0Cittc2dpZCAiZXhwaXJ5IGRhdGUiCittc2dzdHIgIm5nw6B5IGjhur90IGjhuqFuIgorCisjOiBwYXJzZS1vcHRpb25zLmg6MTU5CiBtc2dpZCAibm8tb3AgKGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpIgogbXNnc3RyICJuby1vcCAodMawxqFuZyB0aMOtY2ggbmfGsOG7o2MpIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjMyCisjOiBwYXJzZS1vcHRpb25zLmg6MjM2CiBtc2dpZCAiYmUgbW9yZSB2ZXJib3NlIgogbXNnc3RyICJjaGkgdGnhur90IGjGoW4gbuG7r2EiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzQKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzgKIG1zZ2lkICJiZSBtb3JlIHF1aWV0IgogbXNnc3RyICJpbSBs4bq3bmcgaMahbiBu4buvYSIKIAotIzogcGFyc2Utb3B0aW9ucy5oOjI0MAorIzogcGFyc2Utb3B0aW9ucy5oOjI0NAogbXNnaWQgInVzZSA8bj4gZGlnaXRzIHRvIGRpc3BsYXkgU0hBLTFzIgogbXNnc3RyICJz4butIGThu6VuZyA8bj4gY2jhu68gc+G7kSDEkeG7gyBoaeG7g24gdGjhu4sgU0hBLTFzIgogCkBAIC05MjA1LDcgKzk0NjAsNyBAQAogCiAjOiBjb21tb24tY21kcy5oOjExCiBtc2dpZCAiQ2hlY2tvdXQgYSBicmFuY2ggb3IgcGF0aHMgdG8gdGhlIHdvcmtpbmcgdHJlZSIKLW1zZ3N0ciAiTOG6pXkgcmEgKGNoZWNrb3V0KSBt4buZdCBuaMOhbmggaGF5IGPDoWMgxJHGsOG7nW5nIGThuqtuIHThu5tpIGPDonkgbMOgbSB2aeG7h2MiCittc2dzdHIgIkzhuqV5IHJhIG3hu5l0IG5ow6FuaCBoYXkgY8OhYyDEkcaw4budbmcgZOG6q24gdOG7m2kgY8OieSBsw6BtIHZp4buHYyIKIAogIzogY29tbW9uLWNtZHMuaDoxMgogbXNnaWQgIkNsb25lIGEgcmVwb3NpdG9yeSBpbnRvIGEgbmV3IGRpcmVjdG9yeSIKQEAgLTkyMTgsMTIgKzk0NzMsMTIgQEAKICM6IGNvbW1vbi1jbWRzLmg6MTQKIG1zZ2lkICJTaG93IGNoYW5nZXMgYmV0d2VlbiBjb21taXRzLCBjb21taXQgYW5kIHdvcmtpbmcgdHJlZSwgZXRjIgogbXNnc3RyICIiCi0iSGnhu4NuIHRo4buLIGPDoWMgdGhheSDEkeG7lWkgZ2nhu69hIG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSwgY29tbWl0IHbDoCBjw6J5IGzDoG0gIgotInZp4buHYywgdi52Li4iCisiWGVtIGPDoWMgdGhheSDEkeG7lWkgZ2nhu69hIG5o4buvbmcgbOG6p24gY2h1eeG7g24gZ2lhbyxcbiIKKyIgICAgICAgICAgICAgICBnaeG7r2EgbeG7mXQgbOG6p24gY2h1eeG7g24gZ2lhbyB2w6AgY8OieSBsw6BtIHZp4buHYywgdi52Li4iCiAKICM6IGNvbW1vbi1jbWRzLmg6MTUKIG1zZ2lkICJEb3dubG9hZCBvYmplY3RzIGFuZCByZWZzIGZyb20gYW5vdGhlciByZXBvc2l0b3J5IgotbXNnc3RyICJDw6FjIMSR4buRaSB0xrDhu6NuZyB2w6AgdGhhbSBjaGnhur91IMSRxrDhu6NjIHThuqNpIHbhu4EgdOG7qyBraG8gY2jhu6lhIGtow6FjIgorbXNnc3RyICJU4bqjaSB24buBIGPDoWMgxJHhu5FpIHTGsOG7o25nIHbDoCB0aGFtIGNoaeG6v3UgdOG7qyBraG8gY2jhu6lhIGtow6FjIgogCiAjOiBjb21tb24tY21kcy5oOjE2CiBtc2dpZCAiUHJpbnQgbGluZXMgbWF0Y2hpbmcgYSBwYXR0ZXJuIgpAQCAtOTIzMSw0MCArOTQ4NiwzNyBAQAogCiAjOiBjb21tb24tY21kcy5oOjE3CiBtc2dpZCAiQ3JlYXRlIGFuIGVtcHR5IEdpdCByZXBvc2l0b3J5IG9yIHJlaW5pdGlhbGl6ZSBhbiBleGlzdGluZyBvbmUiCi1tc2dzdHIgIiIKLSJU4bqhbyBt4buZdCBraG8gZ2l0IHRy4buRbmcgcuG7l25nIGhheSBraOG7n2kgdOG6oW8gbOG6oWkgbeG7mXQga2hvIMSRw6MgdOG7k24gdOG6oWkgdOG7qyB0csaw4bubYyIKK21zZ3N0ciAiVOG6oW8gbeG7mXQga2hvIGdpdCBt4bubaSBoYXkga2jhu59pIHThuqFvIGzhuqFpIG3hu5l0IGtobyDEkcOjIHThu5NuIHThuqFpIHThu6sgdHLGsOG7m2MiCiAKICM6IGNvbW1vbi1jbWRzLmg6MTgKIG1zZ2lkICJTaG93IGNvbW1pdCBsb2dzIgotbXNnc3RyICJIaeG7g24gdGjhu4sgbmjhuq10IGvDvSBjw6FjIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkiCittc2dzdHIgIkhp4buDbiB0aOG7iyBuaOG6rXQga8O9IGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyIKIAogIzogY29tbW9uLWNtZHMuaDoxOQogbXNnaWQgIkpvaW4gdHdvIG9yIG1vcmUgZGV2ZWxvcG1lbnQgaGlzdG9yaWVzIHRvZ2V0aGVyIgotbXNnc3RyICIiCi0iSOG7o3AgbmjhuqV0IGhhaSBoYXkgbmhp4buBdSBoxqFuIGzhu4tjaCBz4butIGPhu6dhIGPDoWMgbmjDoCBwaMOhdCB0cmnhu4NuIHBo4bqnbiBt4buBbSBs4bqhaSB24bubaSAiCi0ibmhhdSIKK21zZ3N0ciAiSOG7o3AgbmjhuqV0IGhhaSBoYXkgbmhp4buBdSBoxqFuIGzhu4tjaCBz4butIGPhu6dhIGPDoWMgbmjDoCBwaMOhdCB0cmnhu4NuIgogCiAjOiBjb21tb24tY21kcy5oOjIwCiBtc2dpZCAiTW92ZSBvciByZW5hbWUgYSBmaWxlLCBhIGRpcmVjdG9yeSwgb3IgYSBzeW1saW5rIgotbXNnc3RyICJEaSBjaHV54buDbiwgxJHhu5VpIHTDqm4gbeG7mXQgdOG6rXAgdGluLCB0aMawIG3hu6VjIGhheSBsacOqbiBr4bq/dCB0xrDhu6NuZyB0csawbmciCittc2dzdHIgIkRpIGNodXnhu4NuIGhheSDEkeG7lWkgdMOqbiBt4buZdCB04bqtcCB0aW4sIHRoxrAgbeG7pWMgaG/hurdjIGxpw6puIGvhur90IG3hu4FtIgogCiAjOiBjb21tb24tY21kcy5oOjIxCi1tc2dpZCAiRmV0Y2ggZnJvbSBhbmQgbWVyZ2Ugd2l0aCBhbm90aGVyIHJlcG9zaXRvcnkgb3IgYSBsb2NhbCBicmFuY2giCi1tc2dzdHIgIkzhuqV5IHbhu4EgKGZldGNoKSB2w6AgaMOyYSB0cuG7mW4gduG7m2kga2hvIGtow6FjIGhheSBuaMOhbmggbuG7mWkgYuG7mSIKK21zZ2lkICJGZXRjaCBmcm9tIGFuZCBpbnRlZ3JhdGUgd2l0aCBhbm90aGVyIHJlcG9zaXRvcnkgb3IgYSBsb2NhbCBicmFuY2giCittc2dzdHIgIkzhuqV5IHbhu4EgdsOgIGjhu6NwIG5o4bqldCB24bubaSBraG8ga2jDoWMgaGF5IG3hu5l0IG5ow6FuaCBu4buZaSBi4buZIgogCiAjOiBjb21tb24tY21kcy5oOjIyCiBtc2dpZCAiVXBkYXRlIHJlbW90ZSByZWZzIGFsb25nIHdpdGggYXNzb2NpYXRlZCBvYmplY3RzIgotbXNnc3RyICIiCi0iQ+G6rXAgbmjhuq10IHRoYW0gY2hp4bq/dSAocmVmcykgbcOheSBjaOG7pyBjw7luZyB24bubaSBjw6FjIMSR4buRaSB0xrDhu6NuZyBsacOqbiBxdWFuIMSR4bq/biBuw7MiCittc2dzdHIgIkPhuq1wIG5o4bqtdCB0aC5jaGnhur91IG3DoXkgY2jhu6cgY8O5bmcgduG7m2kgY8OhYyDEkeG7kWkgdMaw4bujbmcgbGnDqm4gcXVhbiDEkeG6v24gbsOzIgogCiAjOiBjb21tb24tY21kcy5oOjIzCiBtc2dpZCAiRm9yd2FyZC1wb3J0IGxvY2FsIGNvbW1pdHMgdG8gdGhlIHVwZGF0ZWQgdXBzdHJlYW0gaGVhZCIKIG1zZ3N0ciAiIgotIkZvcndhcmQtcG9ydCBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gbuG7mWkgYuG7mSB04bubaSBoZWFkIHRoxrDhu6NuZyBuZ3Xhu5NuIMSRw6MgY+G6rXAgbmjhuq10IgorIkNodXnhu4NuIHRp4bq/cCBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gbuG7mWkgYuG7mVxuIgorIiAgICAgICAgICAgICAgIHThu5tpIGhlYWQgdGjGsOG7o25nIG5ndeG7k24gxJHDoyBj4bqtcCBuaOG6rXQiCiAKICM6IGNvbW1vbi1jbWRzLmg6MjQKIG1zZ2lkICJSZXNldCBjdXJyZW50IEhFQUQgdG8gdGhlIHNwZWNpZmllZCBzdGF0ZSIKLW1zZ3N0ciAixJDhurd0IGzhuqFpIEhFQUQgaGnhu4duIGjDoG5oIHRow6BuaCBt4buZdCB0cuG6oW5nIHRow6FpIMSRxrDhu6NjIGNo4buJIHJhIgorbXNnc3RyICLEkOG6t3QgbOG6oWkgSEVBRCBoaeG7h24gaMOgbmggdGjDoG5oIHRy4bqhbmcgdGjDoWkgxJHDoyBjaG8iCiAKICM6IGNvbW1vbi1jbWRzLmg6MjUKIG1zZ2lkICJSZW1vdmUgZmlsZXMgZnJvbSB0aGUgd29ya2luZyB0cmVlIGFuZCBmcm9tIHRoZSBpbmRleCIKQEAgLTkyODAsOSArOTUzMiw3IEBACiAKICM6IGNvbW1vbi1jbWRzLmg6MjgKIG1zZ2lkICJDcmVhdGUsIGxpc3QsIGRlbGV0ZSBvciB2ZXJpZnkgYSB0YWcgb2JqZWN0IHNpZ25lZCB3aXRoIEdQRyIKLW1zZ3N0ciAiIgotIlThuqFvLCBsaeG7h3Qga8OqLCB4w7NhIGhheSB4w6FjIHRo4buxYyBt4buZdCDEkeG7kWkgdMaw4bujbmcgdGjhursgKHRhZykgbcOgIG7DsyDEkcaw4bujYyBrw70gc+G7rSBk4bulbmcgIgotIkdQRyIKK21zZ3N0ciAiVOG6oW8sIGxp4buHdCBrw6osIHjDs2EgaGF5IHjDoWMgdGjhu7FjIG3hu5l0IMSR4buRaSB0xrDhu6NuZyB0aOG6uyDEkcaw4bujYyBrw70gYuG6sW5nIEdQRyIKIAogIzogZ2l0LWFtLnNoOjUwCiBtc2dpZCAiWW91IG5lZWQgdG8gc2V0IHlvdXIgY29tbWl0dGVyIGluZm8gZmlyc3QiCkBAIC05Mjk5LDExICs5NTQ5LDExIEBACiAjOiBnaXQtYW0uc2g6MTA1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcIiRjbWRsaW5lIC0tcmVzb2x2ZWRcIi5cbiIKKyJXaGVuIHlvdSBoYXZlIHJlc29sdmVkIHRoaXMgcHJvYmxlbSwgcnVuIFwiJGNtZGxpbmUgLS1jb250aW51ZVwiLlxuIgogIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCIkY21kbGluZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgogIlRvIHJlc3RvcmUgdGhlIG9yaWdpbmFsIGJyYW5jaCBhbmQgc3RvcCBwYXRjaGluZywgcnVuIFwiJGNtZGxpbmUgLS1hYm9ydFwiLiIKIG1zZ3N0ciAiIgotIktoaSBi4bqhbiBj4bqnbiBnaeG6o2kgcXV54bq/dCB24bqlbiDEkeG7gSBuw6B5IGjDo3kgY2jhuqF5IGzhu4duaCBcIiRjbWRsaW5lIC0tcmVzb2x2ZWRcIi5cbiIKKyJLaGkgYuG6oW4gY+G6p24gZ2nhuqNpIHF1eeG6v3QgduG6pW4gxJHhu4EgbsOgeSBow6N5IGNo4bqheSBs4buHbmggXCIkY21kbGluZSAtLWNvbnRpbnVlXCIuXG4iCiAiTuG6v3UgYuG6oW4gY8OzIMO9IMSR4buLbmggYuG7jyBxdWEgbWnhur9uZyB2w6EsIHRoYXkgdsOgbyDEkcOzIGLhuqFuIGNo4bqheSBcIiRjbWRsaW5lIC0tc2tpcCIKICJcIi5cbiIKICLEkOG7gyBwaOG7pWMgaOG7k2kgbOG6oWkgdGjDoG5oIG5ow6FuaCBuZ3V5w6puIHRo4buneSB2w6AgZOG7q25nIHZp4buHYyB2w6EgbOG6oWkgdGjDrCBjaOG6oXkgIgpAQCAtOTM1OSwyNSArOTYwOSwzNCBAQAogIlTDuXkgY2jhu41uIC1iLy0tYmluYXJ5IMSRw6Mga2jDtG5nIGTDuW5nIHThu6sgbMOidSBy4buTaSwgdsOgXG4iCiAibsOzIHPhur0gxJHGsOG7o2MgYuG7jyDEkWkuIFhpbiDEkeG7q25nIHPhu60gZOG7pW5nIG7DsyB0aMOqbSBu4buvYS4iCiAKLSM6IGdpdC1hbS5zaDo0NzcKKyM6IGdpdC1hbS5zaDo0NzkKICMsIHNoLWZvcm1hdAogbXNnaWQgInByZXZpb3VzIHJlYmFzZSBkaXJlY3RvcnkgJGRvdGVzdCBzdGlsbCBleGlzdHMgYnV0IG1ib3ggZ2l2ZW4uIgogbXNnc3RyICJ0aMawIG3hu6VjIHJlYmFzZSB0csaw4bubYyAkZG90ZXN0IHbhuqtuIGNoxrBhIHPhurVuIHPDoG5nIG5oxrBuZyBtYm94IMSRxrDhu6NjIMSRxrBhIHJhLiIKIAotIzogZ2l0LWFtLnNoOjQ4MgorIzogZ2l0LWFtLnNoOjQ4NAogbXNnaWQgIlBsZWFzZSBtYWtlIHVwIHlvdXIgbWluZC4gLS1za2lwIG9yIC0tYWJvcnQ/IgogbXNnc3RyICJYaW4gaMOjeSByw7UgcsOgbmcuIC0tc2tpcCBoYXkgLS1hYm9ydD8iCiAKLSM6IGdpdC1hbS5zaDo1MDkKKyM6IGdpdC1hbS5zaDo1MjAKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiIKKyJTdHJheSAkZG90ZXN0IGRpcmVjdG9yeSBmb3VuZC5cbiIKKyJVc2UgXCJnaXQgYW0gLS1hYm9ydFwiIHRvIHJlbW92ZSBpdC4iCittc2dzdHIgIiIKKyJUw6xtIHRo4bqleSB0aMawIG3hu6VjIGzhuqFjICRkb3Rlc3QuXG4iCisiRMO5bmcgXCJnaXQgYW0gLS1hYm9ydFwiIMSR4buDIGxv4bqhaSBi4buPIG7DsyDEkWkuIgorCisjOiBnaXQtYW0uc2g6NTI4CiBtc2dpZCAiUmVzb2x2ZSBvcGVyYXRpb24gbm90IGluIHByb2dyZXNzLCB3ZSBhcmUgbm90IHJlc3VtaW5nLiIKIG1zZ3N0ciAiVGhhbyB0w6FjIHBow6JuIGdp4bqjaSBraMO0bmcgxJHGsOG7o2MgdGnhur9uIGjDoG5oLCBjaMO6bmcgdGEga2jDtG5nIHBo4bulYyBo4buTaSBs4bqhaS4iCiAKLSM6IGdpdC1hbS5zaDo1NzUKKyM6IGdpdC1hbS5zaDo1OTQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRpcnR5IGluZGV4OiBjYW5ub3QgYXBwbHkgcGF0Y2hlcyAoZGlydHk6ICRmaWxlcykiCiBtc2dzdHIgIkLhuqNuZyBt4bulYyBs4bulYyBzYWk6IGtow7RuZyB0aOG7gyDDoXAgZOG7pW5nIGPDoWMgbWnhur9uZyB2w6EgKHNhaTogJGZpbGVzKSIKIAotIzogZ2l0LWFtLnNoOjY3OQorIzogZ2l0LWFtLnNoOjY5OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlBhdGNoIGlzIGVtcHR5LiAgV2FzIGl0IHNwbGl0IHdyb25nP1xuIgpAQCAtOTM5MCwzNCArOTY0OSwzNCBAQAogIsSQ4buDIHBo4bulYyBo4buTaSBs4bqhaSBuaMOhbmggbmd1ecOqbiB0aOG7p3kgdsOgIGThu6tuZyB2w6EgbOG6oWkgaMOjeSBjaOG6oXkgbOG7h25oIFwiJGNtZGxpbmUgLS0iCiAiYWJvcnRcIi4iCiAKLSM6IGdpdC1hbS5zaDo3MDYKKyM6IGdpdC1hbS5zaDo3MjUKIG1zZ2lkICJQYXRjaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgZS1tYWlsIGFkZHJlc3MuIgogbXNnc3RyICJNaeG6v25nIHbDoSBraMO0bmcgY8OzIMSR4buLYSBjaOG7iSBlLW1haWwgaOG7o3AgbOG7hy4iCiAKLSM6IGdpdC1hbS5zaDo3NTMKKyM6IGdpdC1hbS5zaDo3NzIKIG1zZ2lkICJjYW5ub3QgYmUgaW50ZXJhY3RpdmUgd2l0aG91dCBzdGRpbiBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbC4iCiBtc2dzdHIgIiIKICJraMO0bmcgdGjhu4MgxJHGsOG7o2MgdMawxqFuZyB0w6FjIG3DoCBraMO0bmcgY8OzIHN0ZGluIGvhur90IG7hu5FpIHbhu5tpIG3hu5l0IHRoaeG6v3QgYuG7iyBjdeG7kWkiCiAKLSM6IGdpdC1hbS5zaDo3NTcKKyM6IGdpdC1hbS5zaDo3NzYKIG1zZ2lkICJDb21taXQgQm9keSBpczoiCiBtc2dzdHIgIlRow6JuIGPhu6dhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgbMOgOiIKIAogIy4gVFJBTlNMQVRPUlM6IE1ha2Ugc3VyZSB0byBpbmNsdWRlIFt5XSwgW25dLCBbZV0sIFt2XSBhbmQgW2FdCiAjLiBpbiB5b3VyIHRyYW5zbGF0aW9uLiBUaGUgcHJvZ3JhbSB3aWxsIG9ubHkgYWNjZXB0IEVuZ2xpc2gKICMuIGlucHV0IGF0IHRoaXMgcG9pbnQuCi0jOiBnaXQtYW0uc2g6NzY0CisjOiBnaXQtYW0uc2g6NzgzCiBtc2dpZCAiQXBwbHk/IFt5XWVzL1tuXW8vW2VdZGl0L1t2XWlldyBwYXRjaC9bYV1jY2VwdCBhbGwgIgogbXNnc3RyICIiCiAiw4FwIGThu6VuZz8gxJHhu5NuZyDDvSBbeV0va2jDtG5nIFtuXS9jaOG7iW5oIHPhu61hIFtlXS9oaeG7g24gdGjhu4sgbWnhur9uZyBbdl3DoS/EkeG7k25nIMO9IHThuqV0ICIKICJj4bqjIFthXSAiCiAKLSM6IGdpdC1hbS5zaDo4MDAKKyM6IGdpdC1hbS5zaDo4MTkKICMsIHNoLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nOiAkRklSU1RMSU5FIgogbXNnc3RyICLEkGFuZyDDoXAgZOG7pW5nIChtaeG6v25nIHbDoSk6ICRGSVJTVExJTkUiCiAKLSM6IGdpdC1hbS5zaDo4MjEKKyM6IGdpdC1hbS5zaDo4NDAKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyAtIGRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/XG4iCiAiSWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN0YWdlLCBjaGFuY2VzIGFyZSB0aGF0IHNvbWV0aGluZyBlbHNlXG4iCkBAIC05NDI4LDcgKzk2ODcsNyBAQAogIsSRw6Mgc+G6tW4gxJHGsOG7o2MgxJHGsGEgdsOgbyB24bubaSBjw7luZyBu4buZaSBkdW5nIHRoYXkgxJHhu5VpOyBi4bqhbiBjw7MgbOG6vSBtdeG7kW4gYuG7jyBxdWEgbWnhur9uZyAiCiAidsOhIG7DoHkuIgogCi0jOiBnaXQtYW0uc2g6ODI5CisjOiBnaXQtYW0uc2g6ODQ4CiBtc2dpZCAiIgogIllvdSBzdGlsbCBoYXZlIHVubWVyZ2VkIHBhdGhzIGluIHlvdXIgaW5kZXhcbiIKICJkaWQgeW91IGZvcmdldCB0byB1c2UgJ2dpdCBhZGQnPyIKQEAgLTk0MzYsMTYgKzk2OTUsMTYgQEAKICJC4bqhbiB24bqrbiBjw7Mgbmjhu69uZyDEkcaw4budbmcgZOG6q24gY2jGsGEgxJHGsOG7o2MgaMOyYSB0cuG7mW4gdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjIGPhu6dhIG3DrG5oXG4iCiAiYuG6oW4gxJHDoyBxdcOqbiBz4butIGThu6VuZyBs4buHbmgg4oCcZ2l0IGFkZOKAnSDDoD8iCiAKLSM6IGdpdC1hbS5zaDo4NDUKKyM6IGdpdC1hbS5zaDo4NjQKIG1zZ2lkICJObyBjaGFuZ2VzIC0tIFBhdGNoIGFscmVhZHkgYXBwbGllZC4iCiBtc2dzdHIgIktow7RuZyB0aGF5IMSR4buVaSBnw6wgY+G6oyAtLSBNaeG6v25nIHbDoSDEkcOjIMSRxrDhu6NjIMOhcCBk4bulbmcgcuG7k2kuIgogCi0jOiBnaXQtYW0uc2g6ODU1CisjOiBnaXQtYW0uc2g6ODc0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJQYXRjaCBmYWlsZWQgYXQgJG1zZ251bSAkRklSU1RMSU5FIgogbXNnc3RyICJWw6EgZ+G6t3AgbOG7l2kgdOG6oWkgJG1zZ251bSAkRklSU1RMSU5FIgogCi0jOiBnaXQtYW0uc2g6ODU4CisjOiBnaXQtYW0uc2g6ODc3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGNvcHkgb2YgdGhlIHBhdGNoIHRoYXQgZmFpbGVkIGlzIGZvdW5kIGluOlxuIgpAQCAtOTQ1NCw3ICs5NzEzLDcgQEAKICJC4bqjbiBzYW8gY2jDqXAgY+G7p2EgbWnhur9uZyB2w6EgbcOgIG7DsyBn4bq3cCBs4buXaSB0aMOsIMSRxrDhu6NjIHTDrG0gdGjhuqV5IHRyb25nOlxuIgogIiAgICRkb3Rlc3QvcGF0Y2giCiAKLSM6IGdpdC1hbS5zaDo4NzYKKyM6IGdpdC1hbS5zaDo4OTUKIG1zZ2lkICJhcHBseWluZyB0byBhbiBlbXB0eSBoaXN0b3J5IgogbXNnc3RyICLDoXAgZOG7pW5nIHbDoG8gbeG7mXQgbOG7i2NoIHPhu60gdHLhu5FuZyBy4buXbmciCiAKQEAgLTk0NzcsNyArOTczNiw3IEBACiAjOiBnaXQtYmlzZWN0LnNoOjk5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGFyZycgZG9lcyBub3QgYXBwZWFyIHRvIGJlIGEgdmFsaWQgcmV2aXNpb24iCi1tc2dzdHIgIuKAnSRhcmfigJ0ga2jDtG5nIGPDsyB24bq7IG5oxrAgbMOgIG3hu5l0IHPhu7EgeMOpdCBs4bqhaSBo4bujcCBs4buHIgorbXNnc3RyICLigJ0kYXJn4oCdIGtow7RuZyBjw7MgduG6uyBuaMawIGzDoCBt4buZdCDEkWnhu4NtIHjDqXQgZHV54buHdCBo4bujcCBs4buHIgogCiAjOiBnaXQtYmlzZWN0LnNoOjExNwogbXNnaWQgIkJhZCBIRUFEIC0gSSBuZWVkIGEgSEVBRCIKQEAgLTk2NjIsNyArOTkyMSw3IEBACiBtc2dpZCAiQ2Fubm90IHJlYmFzZSBvbnRvIG11bHRpcGxlIGJyYW5jaGVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgdGjhu7FjIGhp4buHbiBs4buHbmggcmViYXNlIChjxqEgY+G6pXUgbOG6oWkpIHRyw6puIG5oaeG7gXUgbmjDoW5oIgogCi0jOiBnaXQtcmViYXNlLnNoOjUzCisjOiBnaXQtcmViYXNlLnNoOjU0CiBtc2dpZCAiIgogIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCJnaXQgcmViYXNlIC0tY29udGludWVcIi5cbiIKICJJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuIFwiZ2l0IHJlYmFzZSAtLXNraXBcIiBpbnN0ZWFkLlxuIgpAQCAtOTY3NSwzNSArOTkzNCw1NSBAQAogIsSQ4buDIHBo4bulYyBo4buTaSBs4bqhaSB0aMOgbmggbmjDoW5oIG5ndXnDqm4gdGjhu6d5IHbDoCBk4burbmcgdmnhu4djIHbDoSBs4bqhaSB0aMOsIGNo4bqheSBcImdpdCAiCiAicmViYXNlIC0tYWJvcnRcIi4iCiAKKyM6IGdpdC1yZWJhc2Uuc2g6MTU2Cittc2dpZCAiQXBwbGllZCBhdXRvc3Rhc2guIgorbXNnc3RyICLEkMOjIMOhcCBk4bulbmcgYXV0b3N0YXNoLiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNTkKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzdG9yZSAkc3Rhc2hfc2hhMSIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGzGsHUgJHN0YXNoX3NoYTEiCisKICM6IGdpdC1yZWJhc2Uuc2g6MTYwCittc2dpZCAiIgorIkFwcGx5aW5nIGF1dG9zdGFzaCByZXN1bHRlZCBpbiBjb25mbGljdHMuXG4iCisiWW91ciBjaGFuZ2VzIGFyZSBzYWZlIGluIHRoZSBzdGFzaC5cbiIKKyJZb3UgY2FuIHJ1biBcImdpdCBzdGFzaCBwb3BcIiBvciBcImdpdCBzdGFzaCBkcm9wXCIgaXQgYXQgYW55IHRpbWUuXG4iCittc2dzdHIgIiIKKyLDgXAgZOG7pW5nIGF1dG9zdGFzaCBjw7MgaGnhu4d1IHF14bqjIHRyb25nIGPDoWMgeHVuZyDEkeG7mXQuXG4iCisiQ8OhYyB0aGF5IMSR4buVaSBj4bunYSBi4bqhbiBhbiB0b8OgbiB0cm9uZyBzdGFzaCAodOG6oW0gY+G6pXQgxJFpKS5cbiIKKyJC4bqhbiBjw7MgdGjhu4MgY2jhuqF5IGzhu4duaCBcImdpdCBzdGFzaCBwb3BcIiBoYXkgXCJnaXQgc3Rhc2ggZHJvcFwiIGLhuqV0IGvhu7MgbMO6YyAiCisibsOgby5cbiIKKworIzogZ2l0LXJlYmFzZS5zaDoxOTAKIG1zZ2lkICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKIG1zZ3N0ciAiTcOzYyAoaG9vaykgcHJlLXJlYmFzZSB04burIGNo4buRaSByZWJhc2UuIgogCi0jOiBnaXQtcmViYXNlLnNoOjE2NQorIzogZ2l0LXJlYmFzZS5zaDoxOTUKIG1zZ2lkICJJdCBsb29rcyBsaWtlIGdpdC1hbSBpcyBpbiBwcm9ncmVzcy4gQ2Fubm90IHJlYmFzZS4iCiBtc2dzdHIgIiIKICJIw6xuaCBuaMawIMSRYW5nIHRyb25nIHF1w6EgdHLDrG5oIHRo4buxYyBoaeG7h24gbOG7h25oIGdpdC1hbS4gS2jDtG5nIHRo4buDIGNo4bqheSBs4buHbmggIgogInJlYmFzZS4iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6Mjk2CisjOiBnaXQtcmViYXNlLnNoOjMyOQogbXNnaWQgIlRoZSAtLWV4ZWMgb3B0aW9uIG11c3QgYmUgdXNlZCB3aXRoIHRoZSAtLWludGVyYWN0aXZlIG9wdGlvbiIKIG1zZ3N0ciAiVMO5eSBjaOG7jW4gLS1leGVjIHBo4bqjaSDEkcaw4bujYyBz4butIGThu6VuZyBjw7luZyB24bubaSB0w7l5IGNo4buNbiAtLWludGVyYWN0aXZlIgogCi0jOiBnaXQtcmViYXNlLnNoOjMwMQorIzogZ2l0LXJlYmFzZS5zaDozMzQKIG1zZ2lkICJObyByZWJhc2UgaW4gcHJvZ3Jlc3M/IgogbXNnc3RyICJLaMO0bmcgY8OzIHRp4bq/biB0csOsbmggcmViYXNlIG7DoG8gcGjhuqNpIGtow7RuZz8iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MzEyCisjOiBnaXQtcmViYXNlLnNoOjM0NQogbXNnaWQgIlRoZSAtLWVkaXQtdG9kbyBhY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW50ZXJhY3RpdmUgcmViYXNlLiIKIG1zZ3N0ciAiIgogIkjDoG5oIMSR4buZbmcg4oCcLS1lZGl0LXRvZG/igJ0gY2jhu4kgY8OzIHRo4buDIGTDuW5nIHRyb25nIHF1w6EgdHLDrG5oIOKAnHJlYmFzZeKAnSAoc+G7rWEgbOG7i2NoICIKICJz4butKSB0xrDGoW5nIHTDoWMuIgogCi0jOiBnaXQtcmViYXNlLnNoOjMxOQorIzogZ2l0LXJlYmFzZS5zaDozNTIKIG1zZ2lkICJDYW5ub3QgcmVhZCBIRUFEIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgxJHhu41jIEhFQUQiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MzIyCisjOiBnaXQtcmViYXNlLnNoOjM1NQogbXNnaWQgIiIKICJZb3UgbXVzdCBlZGl0IGFsbCBtZXJnZSBjb25mbGljdHMgYW5kIHRoZW5cbiIKICJtYXJrIHRoZW0gYXMgcmVzb2x2ZWQgdXNpbmcgZ2l0IGFkZCIKQEAgLTk3MTEsMTIgKzk5OTAsMTIgQEAKICJC4bqhbiBwaOG6o2kgc+G7rWEgdOG6pXQgY+G6oyBjw6FjIGzhuqduIGjDsmEgdHLhu5luIHh1bmcgxJHhu5l0IHbDoCBzYXVcbiIKICLEkcOzIMSRw6FuaCBk4bqldSBjaMO6bmcgbMOgIGPhuqduIHjhu60gbMO9IHPhu60gZOG7pW5nIGzhu4duaCBnaXQgYWRkIgogCi0jOiBnaXQtcmViYXNlLnNoOjM0MAorIzogZ2l0LXJlYmFzZS5zaDozNzMKICMsIHNoLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBtb3ZlIGJhY2sgdG8gJGhlYWRfbmFtZSIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHF1YXkgdHLhu58gbOG6oWkgJGhlYWRfbmFtZSIKIAotIzogZ2l0LXJlYmFzZS5zaDozNTkKKyM6IGdpdC1yZWJhc2Uuc2g6MzkyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiSXQgc2VlbXMgdGhhdCB0aGVyZSBpcyBhbHJlYWR5IGEgJHN0YXRlX2Rpcl9iYXNlIGRpcmVjdG9yeSwgYW5kXG4iCkBAIC05NzM5LDU3ICsxMDAxOCw2NiBAQAogIlxuIgogIlTDlEk6IGzDoCBs4buHbmggYuG6oW4gduG7q2EgZ+G7jWkhIgogCi0jOiBnaXQtcmViYXNlLnNoOjQwNAorIzogZ2l0LXJlYmFzZS5zaDo0MzcKICMsIHNoLWZvcm1hdAogbXNnaWQgImludmFsaWQgdXBzdHJlYW0gJHVwc3RyZWFtX25hbWUiCiBtc2dzdHIgInRoxrDhu6NuZyBuZ3Xhu5NuIGtow7RuZyBo4bujcCBs4buHICR1cHN0cmVhbV9uYW1lIgogCi0jOiBnaXQtcmViYXNlLnNoOjQyOAorIzogZ2l0LXJlYmFzZS5zaDo0NjEKICMsIHNoLWZvcm1hdAogbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGFyZSBtb3JlIHRoYW4gb25lIG1lcmdlIGJhc2VzIgogbXNnc3RyICIkb250b19uYW1lOiDhu58gxJHDonkgY8OzIG5oaeG7gXUgaMahbiBt4buZdCBu4buBbiBtw7NuZyBow7JhIHRy4buZbiIKIAotIzogZ2l0LXJlYmFzZS5zaDo0MzEgZ2l0LXJlYmFzZS5zaDo0MzUKKyM6IGdpdC1yZWJhc2Uuc2g6NDY0IGdpdC1yZWJhc2Uuc2g6NDY4CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIkb250b19uYW1lOiB0aGVyZSBpcyBubyBtZXJnZSBiYXNlIgogbXNnc3RyICIkb250b19uYW1lOiDhu58gxJHDonkga2jDtG5nIGPDsyBu4buBbiBtw7NuZyBow7JhIHRy4buZbiBuw6BvIgogCi0jOiBnaXQtcmViYXNlLnNoOjQ0MAorIzogZ2l0LXJlYmFzZS5zaDo0NzMKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgY29tbWl0OiAkb250b19uYW1lIgogbXNnc3RyICJLaMO0bmcgY2jhu4kgxJHhur9uIG3hu5l0IGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkga2jDtG5nIGjhu6NwIGzhu4c6ICRvbnRvX25hbWUiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NDYzCisjOiBnaXQtcmViYXNlLnNoOjQ5NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiZmF0YWw6IG5vIHN1Y2ggYnJhbmNoOiAkYnJhbmNoX25hbWUiCiBtc2dzdHIgIm5naGnDqm0gdHLhu41uZzoga2jDtG5nIGPDsyBuaMOhbmggbmjGsCB0aOG6vzogJGJyYW5jaF9uYW1lIgogCi0jOiBnaXQtcmViYXNlLnNoOjQ4MworIzogZ2l0LXJlYmFzZS5zaDo1MTkKK21zZ2lkICJDYW5ub3QgYXV0b3N0YXNoIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgYXV0b3N0YXNoIgorCisjOiBnaXQtcmViYXNlLnNoOjUyNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3JlYXRlZCBhdXRvc3Rhc2g6ICRzdGFzaF9hYmJyZXYiCittc2dzdHIgIsSQw6MgdOG6oW8gYXV0b3N0YXNoOiAkc3Rhc2hfYWJicmV2IgorCisjOiBnaXQtcmViYXNlLnNoOjUyOAogbXNnaWQgIlBsZWFzZSBjb21taXQgb3Igc3Rhc2ggdGhlbS4iCiBtc2dzdHIgIlhpbiBow6N5IGNvbW1pdCBob+G6t2MgdOG6oW0gY+G6pXQgKHN0YXNoKSBjaMO6bmcuIgogCi0jOiBnaXQtcmViYXNlLnNoOjUwMQorIzogZ2l0LXJlYmFzZS5zaDo1NDgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIKIG1zZ3N0ciAiTmjDoW5oIGhp4buHbiB04bqhaSAkYnJhbmNoX25hbWUgxJHDoyDEkcaw4bujYyBj4bqtcCBuaOG6rXQgcuG7k2kuIgogCi0jOiBnaXQtcmViYXNlLnNoOjUwNAorIzogZ2l0LXJlYmFzZS5zaDo1NTIKICMsIHNoLWZvcm1hdAogbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkLiIKIG1zZ3N0ciAiTmjDoW5oIGhp4buHbiB04bqhaSAkYnJhbmNoX25hbWUgxJHDoyDEkcaw4bujYyBj4bqtcCBuaOG6rXQgcuG7k2ksIGzhu4duaCByZWJhc2Ugw6lwIGJ14buZYy4iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTE1CisjOiBnaXQtcmViYXNlLnNoOjU2MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ2hhbmdlcyBmcm9tICRtYiB0byAkb250bzoiCiBtc2dzdHIgIlRoYXkgxJHhu5VpIHThu6sgJG1iIHRow6BuaCAkb250bzoiCiAKICMuIERldGFjaCBIRUFEIGFuZCByZXNldCB0aGUgdHJlZQotIzogZ2l0LXJlYmFzZS5zaDo1MjQKKyM6IGdpdC1yZWJhc2Uuc2g6NTcyCiBtc2dpZCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIgogbXNnc3RyICIiCiAiVHLGsOG7m2MgdGnDqm4sIGRpIGNodXnhu4NuIGhlYWQgxJHhu4MgeGVtIGzhuqFpIGPDoWMgY8O0bmcgdmnhu4djIHRyw6puIMSR4buJbmggY+G7p2EgbsOzLi4uIgogCi0jOiBnaXQtcmViYXNlLnNoOjUzMgorIzogZ2l0LXJlYmFzZS5zaDo1ODIKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhc3QtZm9yd2FyZGVkICRicmFuY2hfbmFtZSB0byAkb250b19uYW1lLiIKIG1zZ3N0ciAiRmFzdC1mb3J3YXJkICRicmFuY2hfbmFtZSB0aMOgbmggJG9udG9fbmFtZS4iCkBAIC05ODIzLDYgKzEwMTExLDExIEBACiBtc2dpZCAiQ2Fubm90IHJlY29yZCB3b3JraW5nIHRyZWUgc3RhdGUiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgbOG6oWkgdHLhuqFuZyB0aMOhaSBjw6J5IGzDoG0gdmnhu4djIGhp4buHbiBow6BuaCIKIAorIzogZ2l0LXN0YXNoLnNoOjE5MAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHVwZGF0ZSAkcmVmX3N0YXNoIHdpdGggJHdfY29tbWl0IgorbXNnc3RyICJLaMO0bmcgdGjhu4MgY+G6rXAgbmjhuq10ICRyZWZfc3Rhc2ggduG7m2kgJHdfY29tbWl0IgorCiAjLiBUUkFOU0xBVE9SUzogJG9wdGlvbiBpcyBhbiBpbnZhbGlkIG9wdGlvbiwgbGlrZQogIy4gYC0tYmxhaC1ibGFoJy4gVGhlIDcgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCiAjLiBzZWNvbmQgbGluZSBjb3JyZXNwb25kIHRvICJlcnJvcjogIi4gU28geW91IHNob3VsZCBsaW5lCkBAIC05ODMzLDEzMiArMTAxMjYsMTUzIEBACiAjLiAkIGdpdCBzdGFzaCBzYXZlIC0tYmxhaC1ibGFoIDI+JjEgfCBoZWFkIC1uIDIKICMuIGVycm9yOiB1bmtub3duIG9wdGlvbiBmb3IgJ3N0YXNoIHNhdmUnOiAtLWJsYWgtYmxhaAogIy4gVG8gcHJvdmlkZSBhIG1lc3NhZ2UsIHVzZSBnaXQgc3Rhc2ggc2F2ZSAtLSAnLS1ibGFoLWJsYWgnCi0jOiBnaXQtc3Rhc2guc2g6MjAyCisjOiBnaXQtc3Rhc2guc2g6MjQxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiZXJyb3I6IHVua25vd24gb3B0aW9uIGZvciAnc3Rhc2ggc2F2ZSc6ICRvcHRpb25cbiIKICIgICAgICAgVG8gcHJvdmlkZSBhIG1lc3NhZ2UsIHVzZSBnaXQgc3Rhc2ggc2F2ZSAtLSAnJG9wdGlvbiciCiBtc2dzdHIgIiIKICJs4buXaToga2jDtG5nIGhp4buDdSB0w7l5IGNo4buNbiBjaG8g4oCcc3Rhc2ggc2F2ZeKAnTogJG9wdGlvblxuIgotIiAgICAgICDEkOG7gyBjdW5nIGPhuqVwIG3hu5l0IHRow7RuZyDEkWnhu4dwLCBz4butIGThu6VuZyBnaXQgc3Rhc2ggc2F2ZSAtLSDigJwkb3B0aW9u4oCdIgorIiAgICAgxJDhu4MgZMO5bmcgdGjDtG5nIMSRaeG7h3AgY8OzIGNo4bupYSAtLSDhu58gxJHhuqd1LCBz4butIGThu6VuZyBnaXQgc3Rhc2ggc2F2ZSAtLSBcIiRvcHRpb24iCisiXCIiCiAKLSM6IGdpdC1zdGFzaC5zaDoyMjMKKyM6IGdpdC1zdGFzaC5zaDoyNjIKIG1zZ2lkICJObyBsb2NhbCBjaGFuZ2VzIHRvIHNhdmUiCiBtc2dzdHIgIktow7RuZyBjw7MgdGhheSDEkeG7lWkgbuG7mWkgYuG7mSBuw6BvIMSRxrDhu6NjIGdoaSBs4bqhaSIKIAotIzogZ2l0LXN0YXNoLnNoOjIyNworIzogZ2l0LXN0YXNoLnNoOjI2OAorbXNnaWQgIiIKKyJUaGUgZm9sbG93aW5nIHVudHJhY2tlZCBmaWxlcyB3b3VsZCBOT1QgYmUgc2F2ZWQgYnV0IG5lZWQgdG8gYmUgcmVtb3ZlZCBieSAiCisic3Rhc2ggc2F2ZToiCittc2dzdHIgIiIKKyJDw6FjIHThuq1wIHRpbiBjaMawYSDEkcaw4bujYyB0aGVvIGTDtWkgc2F1IMSRw6J5IEtIw5RORyDEkcaw4bujYyBnaGkgbOG6oWkgbmjGsG5nIGPhuqduIMSRxrDhu6NjIGfhu6EgIgorImLhu48gYuG7n2kgdmnhu4djIGdoaSBs4bqhaSBzdGFzaDoiCisKKyM6IGdpdC1zdGFzaC5zaDoyNzAKK21zZ2lkICIiCisiQWJvcnRpbmcuIENvbnNpZGVyIHVzaW5nIGVpdGhlciB0aGUgLS1mb3JjZSBvciAtLWluY2x1ZGUtdW50cmFja2VkIG9wdGlvbi4iCittc2dzdHIgIiIKKyJCw6NpIGLhu48uIEPDom4gbmjhuq9jIGTDuW5nIG3hu5l0IHRyb25nIGhhaSB0w7l5IGNo4buNbiAtLWZvcmNlIHbDoCAtLWluY2x1ZGUtdW50cmFja2VkLiIKKworIzogZ2l0LXN0YXNoLnNoOjI3NAogbXNnaWQgIkNhbm5vdCBpbml0aWFsaXplIHN0YXNoIgogbXNnc3RyICJLaMO0bmcgdGjhu4Mga2jhu59pIHThuqFvIHN0YXNoIgogCi0jOiBnaXQtc3Rhc2guc2g6MjM1CisjOiBnaXQtc3Rhc2guc2g6Mjc4CiBtc2dpZCAiQ2Fubm90IHNhdmUgdGhlIGN1cnJlbnQgc3RhdHVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgZ2hpIGzhuqFpIHRy4bqhbmcgdGjDoWkgaGnhu4duIGjDoG5oIgogCi0jOiBnaXQtc3Rhc2guc2g6MjUzCisjOiBnaXQtc3Rhc2guc2g6Mjk2CiBtc2dpZCAiQ2Fubm90IHJlbW92ZSB3b3JrdHJlZSBjaGFuZ2VzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPIGPDoWMgdGhheSDEkeG7lWkgY8OieS1sw6BtLXZp4buHYyIKIAotIzogZ2l0LXN0YXNoLnNoOjM1MgorIzogZ2l0LXN0YXNoLnNoOjM5NQogbXNnaWQgIk5vIHN0YXNoIGZvdW5kLiIKIG1zZ3N0ciAiS2jDtG5nIHTDrG0gdGjhuqV5IHN0YXNoIG7DoG8uIgogCi0jOiBnaXQtc3Rhc2guc2g6MzU5CisjOiBnaXQtc3Rhc2guc2g6NDAyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJUb28gbWFueSByZXZpc2lvbnMgc3BlY2lmaWVkOiAkUkVWIgotbXNnc3RyICJDaOG7iSByYSBxdcOhIG5oaeG7gXUgxJFp4buDbSB4w6l0IGzhuqFpOiAkUkVWIgorbXNnc3RyICJDaOG7iSByYSBxdcOhIG5oaeG7gXUgxJFp4buDbSB4w6l0IGR1eeG7h3Q6ICRSRVYiCiAKLSM6IGdpdC1zdGFzaC5zaDozNjUKKyM6IGdpdC1zdGFzaC5zaDo0MDgKICMsIHNoLWZvcm1hdAogbXNnaWQgIiRyZWZlcmVuY2UgaXMgbm90IHZhbGlkIHJlZmVyZW5jZSIKIG1zZ3N0ciAiJHJlZmVyZW5jZSBraMO0bmcgcGjhuqNpIGzDoCB0aGFtIGNoaeG6v3UgaOG7o3AgbOG7hyIKIAotIzogZ2l0LXN0YXNoLnNoOjM5MworIzogZ2l0LXN0YXNoLnNoOjQzNgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRhcmdzJyBpcyBub3QgYSBzdGFzaC1saWtlIGNvbW1pdCIKIG1zZ3N0ciAi4oCdJGFyZ3PigJ0ga2jDtG5nIHBo4bqjaSBsw6AgbOG6p24gY2h1eeG7g24gZ2lhbyAoY29tbWl0KSBnaeG7kW5nLXN0YXNoIgogCi0jOiBnaXQtc3Rhc2guc2g6NDA0CisjOiBnaXQtc3Rhc2guc2g6NDQ3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGFyZ3MnIGlzIG5vdCBhIHN0YXNoIHJlZmVyZW5jZSIKIG1zZ3N0ciAi4oCdJGFyZ3PigJ0ga2jDtG5nIHBo4bqjaSB0aGFtIGNoaeG6v3UgxJHhur9uIHN0YXNoIgogCi0jOiBnaXQtc3Rhc2guc2g6NDEyCisjOiBnaXQtc3Rhc2guc2g6NDU1CiBtc2dpZCAidW5hYmxlIHRvIHJlZnJlc2ggaW5kZXgiCiBtc2dzdHIgImtow7RuZyB0aOG7gyBsw6BtIHTGsMahaSBt4bubaSBi4bqjbmcgbeG7pWMgbOG7pWMiCiAKLSM6IGdpdC1zdGFzaC5zaDo0MTYKKyM6IGdpdC1zdGFzaC5zaDo0NTkKIG1zZ2lkICJDYW5ub3QgYXBwbHkgYSBzdGFzaCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UiCiBtc2dzdHIgIktow7RuZyB0aOG7gyDDoXAgZOG7pW5nIG3hu5l0IHN0YXNoIOG7nyBnaeG7r2EgY+G7p2EgcXXDoSB0csOsbmggaMOyYSB0cuG7mW4iCiAKLSM6IGdpdC1zdGFzaC5zaDo0MjQKKyM6IGdpdC1zdGFzaC5zaDo0NjcKIG1zZ2lkICJDb25mbGljdHMgaW4gaW5kZXguIFRyeSB3aXRob3V0IC0taW5kZXguIgogbXNnc3RyICJYdW5nIMSR4buZdCB0cm9uZyBi4bqjbmcgbeG7pWMgbOG7pWMuIEjDo3kgdGjhu60gbcOgIGtow7RuZyBkw7luZyB0w7l5IGNo4buNbiAtLWluZGV4LiIKIAotIzogZ2l0LXN0YXNoLnNoOjQyNgorIzogZ2l0LXN0YXNoLnNoOjQ2OQogbXNnaWQgIkNvdWxkIG5vdCBzYXZlIGluZGV4IHRyZWUiCiBtc2dzdHIgIktow7RuZyB0aOG7gyBnaGkgbOG6oWkgY8OieSBjaOG7iSBt4bulYyIKIAotIzogZ2l0LXN0YXNoLnNoOjQ2MAorIzogZ2l0LXN0YXNoLnNoOjUwMwogbXNnaWQgIkNhbm5vdCB1bnN0YWdlIG1vZGlmaWVkIGZpbGVzIgogbXNnc3RyICJLaMO0bmcgdGjhu4MgYuG7jyB0cuG6oW5nIHRow61hIGPhu6dhIGPDoWMgdOG6rXAgdGluIMSRw6MgxJHGsOG7o2Mgc+G7rWEgY2jhu69hIgogCi0jOiBnaXQtc3Rhc2guc2g6NDc1CisjOiBnaXQtc3Rhc2guc2g6NTE4CiBtc2dpZCAiSW5kZXggd2FzIG5vdCB1bnN0YXNoZWQuIgogbXNnc3RyICJC4bqjbmcgbeG7pWMgbOG7pWMgxJHDoyBraMO0bmcgxJHGsOG7o2MgYuG7jyBzdGFzaC4iCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTIKKyM6IGdpdC1zdGFzaC5zaDo1MzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRyb3BwZWQgJHtSRVZ9ICgkcykiCi1tc2dzdHIgIsSQw6MgaOG6oSB4deG7kW5nICR7UkVWfSAoJHMpIgorbXNnc3RyICLEkMOjIHjDs2EgJHtSRVZ9ICgkcykiCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTMKKyM6IGdpdC1zdGFzaC5zaDo1MzYKICMsIHNoLWZvcm1hdAogbXNnaWQgIiR7UkVWfTogQ291bGQgbm90IGRyb3Agc3Rhc2ggZW50cnkiCiBtc2dzdHIgIiR7UkVWfTogS2jDtG5nIHRo4buDIHjDs2EgYuG7jyBt4bulYyBzdGFzaCIKIAotIzogZ2l0LXN0YXNoLnNoOjUwMAorIzogZ2l0LXN0YXNoLnNoOjU0MwogbXNnaWQgIk5vIGJyYW5jaCBuYW1lIHNwZWNpZmllZCIKIG1zZ3N0ciAiQ2jGsGEgY2jhu4kgcmEgdMOqbiBj4bunYSBuaMOhbmgiCiAKLSM6IGdpdC1zdGFzaC5zaDo1NzEKKyM6IGdpdC1zdGFzaC5zaDo2MTUKIG1zZ2lkICIoVG8gcmVzdG9yZSB0aGVtIHR5cGUgXCJnaXQgc3Rhc2ggYXBwbHlcIikiCiBtc2dzdHIgIijEkOG7gyBwaOG7pWMgaOG7k2kgbOG6oWkgY2jDum5nIGjDo3kgZ8O1IFwiZ2l0IHN0YXNoIGFwcGx5XCIpIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkxCisjOiBnaXQtc3VibW9kdWxlLnNoOjk1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RyaXAgb25lIGNvbXBvbmVudCBvZmYgdXJsICckcmVtb3RldXJsJyIKIG1zZ3N0ciAia2jDtG5nIHRo4buDIHRow6FvIGLhu48gbeG7mXQgdGjDoG5oIHBo4bqnbiByYSBraOG7j2kg4oCcJHJlbW90ZXVybOKAnSB1cmwiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTk2CisjOiBnaXQtc3VibW9kdWxlLnNoOjIzNwogIywgc2gtZm9ybWF0CiBtc2dpZCAiTm8gc3VibW9kdWxlIG1hcHBpbmcgZm91bmQgaW4gLmdpdG1vZHVsZXMgZm9yIHBhdGggJyRzbV9wYXRoJyIKIG1zZ3N0ciAiIgogIktow7RuZyB0w6xtIHRo4bqleSDDoW5oIHjhuqEgKG1hcHBpbmcpIG3DtC3EkXVuLWNvbiB0cm9uZyAuZ2l0bW9kdWxlcyBjaG8gxJHGsOG7nW5nIGThuqtuICIKICLigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MjgxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDbG9uZSBvZiAnJHVybCcgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIGZhaWxlZCIKIG1zZ3N0ciAiTmjDom4gYuG6o24g4oCcJHVybOKAnSB2w6BvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0gZ+G6t3AgbOG7l2kiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCisjOiBnaXQtc3VibW9kdWxlLnNoOjI5MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiR2l0ZGlyICckYScgaXMgcGFydCBvZiB0aGUgc3VibW9kdWxlIHBhdGggJyRiJyBvciB2aWNlIHZlcnNhIgogbXNnc3RyICIiCiAiR2l0ZGlyIOKAnCRh4oCdIGzDoCBi4buZIHBo4bqtbiBj4bunYSDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRi4oCdIGhv4bq3YyBcInZpY2UgdmVyc2FcIiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNDkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDAzCittc2dpZCAiUmVsYXRpdmUgcGF0aCBjYW4gb25seSBiZSB1c2VkIGZyb20gdGhlIHRvcGxldmVsIG9mIHRoZSB3b3JraW5nIHRyZWUiCittc2dzdHIgIiIKKyLEkMaw4budbmcgZOG6q24gdMawxqFuZyDEkeG7kWkgY2jhu4kgY8OzIHRo4buDIGTDuW5nIHThu6sgdGjGsCBt4bulYyDhu58gbeG7qWMgY2FvIG5o4bqldCBj4bunYSBjw6J5IGzDoG0gIgorInZp4buHYyIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MTMKICMsIHNoLWZvcm1hdAogbXNnaWQgInJlcG8gVVJMOiAnJHJlcG8nIG11c3QgYmUgYWJzb2x1dGUgb3IgYmVnaW4gd2l0aCAuL3wuLi8iCiBtc2dzdHIgIiIKICJyZXBvIFVSTDog4oCcJHJlcG/igJ0gcGjhuqNpIGzDoCDEkcaw4budbmcgZOG6q24gdHV54buHdCDEkeG7kWkgaG/hurdjIGzDoCBi4bqvdCDEkeG6p3UgYuG6sW5nIC4vfC4uLyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNjYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDMwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJHNtX3BhdGgnIGFscmVhZHkgZXhpc3RzIGluIHRoZSBpbmRleCIKIG1zZ3N0ciAi4oCdJHNtX3BhdGjigJ0gdGjhu7FjIHPhu7EgxJHDoyB04buTbiB04bqhaSDhu58gYuG6o25nIG3hu6VjIGzhu6VjIHLhu5NpIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM3MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgZm9sbG93aW5nIHBhdGggaXMgaWdub3JlZCBieSBvbmUgb2YgeW91ciAuZ2l0aWdub3JlIGZpbGVzOlxuIgpAQCAtOTk3MCwzNiArMTAyODQsMzYgQEAKICIkc21fcGF0aFxuIgogIlPhu60gZOG7pW5nIC1mIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiB0aMOqbSBuw7MgdsOgby4iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg4CisjOiBnaXQtc3VibW9kdWxlLnNoOjQ1MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGV4aXN0aW5nIHJlcG8gYXQgJyRzbV9wYXRoJyB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIsSQYW5nIHRow6ptIHJlcG8gY8OzIHPhurVuIHThuqFpIOKAnCRzbV9wYXRo4oCdIHbDoG8gYuG6o25nIG3hu6VjIGzhu6VjIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM5MAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NTQKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgYW5kIGlzIG5vdCBhIHZhbGlkIGdpdCByZXBvIgogbXNnc3RyICLigJ0kc21fcGF0aOKAnSDEkcOjIHThu5NuIHThuqFpIHThu6sgdHLGsOG7m2MgdsOgIGtow7RuZyBwaOG6o2kgbMOgIG3hu5l0IGtobyBnaXQgaOG7o3AgbOG7hyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDYyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJBIGdpdCBkaXJlY3RvcnkgZm9yICckc21fbmFtZScgaXMgZm91bmQgbG9jYWxseSB3aXRoIHJlbW90ZShzKToiCiBtc2dzdHIgIiIKICJUaMawIG3hu6VjIGdpdCBjaG8g4oCcJHNtX25hbWXigJ0gxJHGsOG7o2MgdMOsbSB0aOG6pXkgbeG7mXQgY8OhY2ggY+G7pWMgYuG7mSB24bubaSBjw6FjIG3DoXkgY2jhu6c6IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwMAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjQKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byByZXVzZSB0aGlzIGxvY2FsIGdpdCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjbG9uaW5nIGFnYWluIGZyb20iCiBtc2dzdHIgIk7hur91IGLhuqFuIG114buRbiBkw7luZyBs4bqhaSB0aMawIG3hu6VjIGdpdCBu4buZaSBi4buZIG7DoHkgdGhheSB2w6wgbmjDom4gYuG6o24gdOG7qyBuw7MiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDAyCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogInVzZSB0aGUgJy0tZm9yY2UnIG9wdGlvbi4gSWYgdGhlIGxvY2FsIGdpdCBkaXJlY3RvcnkgaXMgbm90IHRoZSBjb3JyZWN0IHJlcG8iCiBtc2dzdHIgIiIKICJkw7luZyB0w7l5IGNo4buNbiDigJwtLWZvcmNl4oCdLiBO4bq/dSB0aMawIG3hu6VjIGdpdCBu4buZaSBi4buZIGtow7RuZyBwaOG6o2kgbMOgIHJlcG8gKGtobykgxJHDum5nIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjcKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJvciB5b3UgYXJlIHVuc3VyZSB3aGF0IHRoaXMgbWVhbnMgY2hvb3NlIGFub3RoZXIgbmFtZSB3aXRoIHRoZSAnLS1uYW1lJyAiCkBAIC0xMDAwOCw3MCArMTAzMjIsNzEgQEAKICJoYXkgYuG6oW4ga2jDtG5nIGNo4bqvYyBjaOG6r24gxJFp4buBdSDEkcOzIGPDsyBuZ2jEqWEgZ8OsIGNo4buNbiB0w6puIGtow6FjIHbhu5tpIHTDuXkgY2jhu41uIOKAnC0tIgogIm5hbWXigJ0uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwNQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjkKICMsIHNoLWZvcm1hdAogbXNnaWQgIlJlYWN0aXZhdGluZyBsb2NhbCBnaXQgZGlyZWN0b3J5IGZvciBzdWJtb2R1bGUgJyRzbV9uYW1lJy4iCiBtc2dzdHIgIiIKICJQaOG7pWMgaOG7k2kgc+G7sSBob+G6oXQgxJHhu5luZyBj4bunYSB0aMawIG3hu6VjIGdpdCBu4buZaSBi4buZIGNobyBtw7QtxJF1bi1jb24g4oCcJHNtX25hbWXigJ0uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQxNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODEKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIGNoZWNrb3V0IG3DtC3EkXVuIGNvbiDigJwkc21fcGF0aOKAnSIKK21zZ3N0ciAiS2jDtG5nIHRo4buDIGNoZWNrb3V0IG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MjIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDg2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gYWRkIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdGjDqm0gbcO0LcSRdW4gY29uIOKAnCRzbV9wYXRo4oCdIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgdGjDqm0gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQzMQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0OTUKICMsIHNoLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKLW1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSRxINuZyBrw70gduG7m2kgaOG7hyB0aOG7kW5nIG3DtC3EkXVuIGNvbiDigJwkc21fcGF0aOKAnSIKK21zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSRxINuZyBrw70gduG7m2kgaOG7hyB0aOG7kW5nIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTM5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRzbV9wYXRoJyIKLW1zZ3N0ciAixJBhbmcgbmjhuq1wIOKAnCRwcmVmaXgkc21fcGF0aOKAnSIKK21zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRkaXNwbGF5cGF0aCciCittc2dzdHIgIsSQYW5nIHbDoG8g4oCcJHByZWZpeCRkaXNwbGF5cGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTU0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdG9wcGluZyBhdCAnJHNtX3BhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKLW1zZ3N0ciAiROG7q25nIGzhuqFpIHThuqFpIOKAnCRzbV9wYXRo4oCdOyBzY3JpcHQgdHLhuqMgduG7gSB0cuG6oW5nIHRow6FpIGtow6FjIGtow7RuZy4iCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTMyCi0jLCBzaC1mb3JtYXQKLW1zZ2lkICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCcgaW4gLmdpdG1vZHVsZXMiCittc2dpZCAiU3RvcHBpbmcgYXQgJyRwcmVmaXgkZGlzcGxheXBhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKIG1zZ3N0ciAiIgotIktow7RuZyB0w6xtIHRo4bqleSB1cmwgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0gdHJvbmcgLmdpdG1vZHVsZXMiCisiROG7q25nIGzhuqFpIHThuqFpIOKAnCRwcmVmaXgkZGlzcGxheXBhdGjigJ07IHNjcmlwdCB0cuG6oyB24buBIHRy4bqhbmcgdGjDoWkga2jDoWMga2jDtG5nLiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjAwCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHEg25nIGvDvSB1cmwgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0iCi0KLSM6IGdpdC1zdWJtb2R1bGUuc2g6NTQzCi0jLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICJNw7QtxJF1bi1jb24g4oCcJG5hbWXigJ0gKCR1cmwpIMSRxrDhu6NjIMSRxINuZyBrw70gY2hvIMSRxrDhu51uZyBk4bqrbiDigJwkc21fcGF0aOKAnSIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NTEKLSMsIHNoLWZvcm1hdAotbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cGRhdGUgbW9kZSBmb3Igc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyIKK21zZ2lkICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIGluIC5naXRtb2R1bGVzIgogbXNnc3RyICIiCi0iR+G6t3AgbOG7l2kga2hpIMSRxINuZyBrw70gY2jhur8gxJHhu5kgY+G6rXAgbmjhuq10IGNobyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIgorIktow7RuZyB0w6xtIHRo4bqleSB1cmwgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJGRpc3BsYXlwYXRo4oCdIHRyb25nIC5naXRtb2R1bGVzIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU4OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDkKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHEg25nIGvDvSB1cmwgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJGRpc3BsYXlwYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjYxMQorIywgc2gtZm9ybWF0Cittc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHJlZ2lzdGVyZWQgZm9yIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIk3DtC3EkXVuLWNvbiDigJwkbmFtZeKAnSAoJHVybCkgxJHGsOG7o2MgxJHEg25nIGvDvSBjaG8gxJHGsOG7nW5nIGThuqtuIOKAnCRkaXNwbGF5cGF0aOKAnSIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTkKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cGRhdGUgbW9kZSBmb3Igc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIiIKKyJH4bq3cCBs4buXaSBraGkgxJHEg25nIGvDvSBjaOG6vyDEkeG7mSBj4bqtcCBuaOG6rXQgY2hvIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJGRpc3BsYXlwYXRo4oCdIgorCisjOiBnaXQtc3VibW9kdWxlLnNoOjY1NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiVXNlICcuJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gZGVpbml0aWFsaXplIGFsbCBzdWJtb2R1bGVzIgogbXNnc3RyICJEw7luZyDigJwu4oCdIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBn4buhIGLhu48gbeG7jWkgbcO0LcSRdW4tY29uIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYwMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NzMKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBhIC5naXQgZGlyZWN0b3J5IgotbXNnc3RyICJDw6J5IGzDoG0gdmnhu4djIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSBjw7MgY2jhu6lhIHRoxrAgbeG7pWMgLmdpdCIKK21zZ2lkICJTdWJtb2R1bGUgd29yayB0cmVlICckZGlzcGxheXBhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiCittc2dzdHIgIkPDonkgbMOgbSB2aeG7h2MgbcO0LcSRdW4tY29uIOKAnCRkaXNwbGF5cGF0aOKAnSBjw7MgY2jhu6lhIHRoxrAgbeG7pWMgLmdpdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Njc0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiKHVzZSAncm0gLXJmJyBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIGl0IGluY2x1ZGluZyBhbGwgb2YgaXRzIGhpc3RvcnkpIgpAQCAtMTAwNzksMTQ3ICsxMDM5NCwyMDEgQEAKICIoZMO5bmcg4oCccm0gLXJm4oCdIG7hur91IGLhuqFuIHRo4buxYyBz4buxIG114buRbiBn4buhIGLhu48gbsOzIGPDuW5nIHbhu5tpIHThuqV0IGPhuqMgbOG7i2NoIHPhu60gY+G7p2EgIgogImNow7puZykiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjEwCisjOiBnaXQtc3VibW9kdWxlLnNoOjY4MAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIlN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRzbV9wYXRoJyBjb250YWlucyBsb2NhbCBtb2RpZmljYXRpb25zOyB1c2UgJy1mJyB0byAiCisiU3VibW9kdWxlIHdvcmsgdHJlZSAnJGRpc3BsYXlwYXRoJyBjb250YWlucyBsb2NhbCBtb2RpZmljYXRpb25zOyB1c2UgJy1mJyB0byAiCiAiZGlzY2FyZCB0aGVtIgogbXNnc3RyICIiCi0iQ8OieSBsw6BtIHZp4buHYyBtw7QtxJF1bi1jb24g4oCcJHNtX3BhdGjigJ0gY2jhu6lhIGPDoWMgdGhheSDEkeG7lWkgbuG7mWkgYuG7mTsgaMOjeSBkw7luZyDigJwtZuKAnSAiCi0ixJHhu4MgbG/huqFpIGLhu48gY2jDum5nIMSRaSIKKyJDw6J5IGzDoG0gdmnhu4djIG3DtC3EkXVuLWNvbiDigJwkZGlzcGxheXBhdGjigJ0gY2jhu6lhIGPDoWMgdGhheSDEkeG7lWkgbuG7mWkgYuG7mTsgaMOjeSBkw7luZyDigJwtIgorImbigJ0gxJHhu4MgbG/huqFpIGLhu48gY2jDum5nIMSRaSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjgzCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgotbXNnc3RyICJUaMawIG3hu6VjIMSRxrDhu6NjIGThu41uIOKAnCRzbV9wYXRo4oCdIgorbXNnaWQgIkNsZWFyZWQgZGlyZWN0b3J5ICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLEkMOjIHThuqFvIHRoxrAgbeG7pWMgJyRkaXNwbGF5cGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjE0CisjOiBnaXQtc3VibW9kdWxlLnNoOjY4NAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICckc21fcGF0aCciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBn4buhIGLhu48gY8OieSBsw6BtIHZp4buHYyBtw7QtxJF1biBjb24g4oCcJHNtX3BhdGjigJ0iCittc2dpZCAiQ291bGQgbm90IHJlbW92ZSBzdWJtb2R1bGUgd29yayB0cmVlICckZGlzcGxheXBhdGgnIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgZ+G7oSBi4buPIGPDonkgbMOgbSB2aeG7h2MgbcO0LcSRdW4tY29uIOKAnCRkaXNwbGF5cGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Njg3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIHThuqFvIHRoxrAgbeG7pWMgbcO0LcSRdW4tY29uIHLhu5duZyDigJwkc21fcGF0aOKAnSIKK21zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyB04bqhbyB0aMawIG3hu6VjIG3DtC3EkXVuLWNvbiBy4buXbmcg4oCcJGRpc3BsYXlwYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYyNgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo2OTYKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKLW1zZ3N0ciAiTcO0LcSRdW4tY29uIOKAnCRuYW1l4oCdICgkdXJsKSDEkcaw4bujYyBi4buPIMSRxINuZyBrw70gY2hvIMSRxrDhu51uZyBk4bqrbiDigJwkc21fcGF0aOKAnSIKK21zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgdW5yZWdpc3RlcmVkIGZvciBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICJNw7QtxJF1bi1jb24g4oCcJG5hbWXigJ0gKCR1cmwpIMSRxrDhu6NjIGLhu48gxJHEg25nIGvDvSBjaG8gxJHGsOG7nW5nIGThuqtuIOKAnCRkaXNwbGF5cGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3MzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODExCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCcgbm90IGluaXRpYWxpemVkXG4iCisiU3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCcgbm90IGluaXRpYWxpemVkXG4iCiAiTWF5YmUgeW91IHdhbnQgdG8gdXNlICd1cGRhdGUgLS1pbml0Jz8iCiBtc2dzdHIgIiIKLSLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnSBjaMawYSDEkcaw4bujYyBraOG7n2kgdOG6oW9cbiIKKyLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRkaXNwbGF5cGF0aOKAnSBjaMawYSDEkcaw4bujYyBraOG7n2kgdOG6oW8uXG4iCiAiQ8OzIGzhur0gYuG6oW4gbXXhu5FuIHPhu60gZOG7pW5nIGzhu4duaCDigJx1cGRhdGUgLS1pbml04oCdPyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODI0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKLSJLaMO0bmcgdMOsbSB0aOG6pXkgxJFp4buDbSB4w6l0IGzhuqFpIGhp4buHbiBow6BuaCB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgiCi0iJHNtX3BhdGjigJ0iCisiS2jDtG5nIHTDrG0gdGjhuqV5IMSRaeG7g20geMOpdCBkdXnhu4d0IGhp4buHbiBow6BuaCB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uICIKKyLigJwkZGlzcGxheXBhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzUzCisjOiBnaXQtc3VibW9kdWxlLnNoOjgzMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB24buBIChmZXRjaCkgdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkc21fcGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODU3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCi1tc2dzdHIgIktow7RuZyB0aOG7gyBs4bqleSB24buBIChmZXRjaCkgdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCittc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICJLaMO0bmcgdGjhu4MgbOG6pXkgduG7gSAoZmV0Y2gpIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJGRpc3BsYXlwYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc5MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NzEKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKLW1zZ3N0ciAiS2jDtG5nIHRo4buDIHJlYmFzZSDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnSIKK21zZ2lkICJVbmFibGUgdG8gcmViYXNlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyByZWJhc2Ug4oCcJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkZGlzcGxheXBhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzkyCisjOiBnaXQtc3VibW9kdWxlLnNoOjg3MgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgotbXNnc3RyICLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnTogxJHGsOG7o2MgcmViYXNlIHbDoG8gdHJvbmcg4oCcJHNoYTHigJ0iCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgorbXNnc3RyICLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRkaXNwbGF5cGF0aOKAnTogxJHGsOG7o2MgcmViYXNlIHbDoG8gdHJvbmcg4oCcJHNoYTHigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk3CisjOiBnaXQtc3VibW9kdWxlLnNoOjg3NwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIG1lcmdlICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCiBtc2dzdHIgIiIKLSJLaMO0bmcgdGjhu4MgaMOyYSB0cuG7mW4gKG1lcmdlKSDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgiCi0iJHNtX3BhdGjigJ0iCisiS2jDtG5nIHRo4buDIGjDsmEgdHLhu5luIChtZXJnZSkg4oCcJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkZGlzcGxheXBhdGjigJ0iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Nzk4CisjOiBnaXQtc3VibW9kdWxlLnNoOjg3OAogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6IG1lcmdlZCBpbiAnJHNoYTEnIgotbXNnc3RyICLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnTogxJHGsOG7o2MgaMOyYSB0cuG7mW4gdsOgbyDigJwkc2hhMeKAnSIKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJzogbWVyZ2VkIGluICckc2hhMSciCittc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJGRpc3BsYXlwYXRo4oCdOiDEkcaw4bujYyBow7JhIHRy4buZbiB2w6BvIOKAnCRzaGEx4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo4ODMKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCAnJHNoYTEnIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorbXNnaWQgIiIKKyJFeGVjdXRpb24gb2YgJyRjb21tYW5kICRzaGExJyBmYWlsZWQgaW4gc3VibW9kdWxlICBwYXRoICckcHJlZml4JHNtX3BhdGgnIgogbXNnc3RyICIiCi0iS2jDtG5nIHRo4buDIGNoZWNrb3V0IOKAnCRzaGEx4oCdIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdIgorIlRo4buxYyBoaeG7h24ga2jDtG5nIHRow6BuaCBjw7RuZyBs4buHbmgg4oCcJGNvbW1hbmQgJHNoYTHigJ0gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiAiCisi4oCcJHByZWZpeCRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjgwNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4ODQKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiBjaGVja2VkIG91dCAnJHNoYTEnIgotbXNnc3RyICLEkMaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRwcmVmaXgkc21fcGF0aOKAnTogxJHGsOG7o2MgY2hlY2tvdXQg4oCcJHNoYTHigJ0iCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6ICckY29tbWFuZCAkc2hhMSciCittc2dzdHIgIsSQxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdOiDigJwkY29tbWFuZCAkc2hhMeKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODg5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgotbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkcHJlZml4JHNtX3BhdGjigJ0iCittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIktow7RuZyB0aOG7gyBjaGVja291dCDigJwkc2hhMeKAnSB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRkaXNwbGF5cGF0aOKAnSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODkwCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKK21zZ3N0ciAixJDGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkZGlzcGxheXBhdGjigJ06IMSRw6MgY2hlY2tvdXQg4oCcJHNoYTHigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTE3CisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICJH4bq3cCBs4buXaSBraGkgxJHhu4cgcXV5IHbDoG8gdHJvbmcgxJHGsOG7nW5nIGThuqtuIG3DtC3EkXVuLWNvbiDigJwkZGlzcGxheXBhdGjigJ0iCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAyNQogbXNnaWQgIlRoZSAtLWNhY2hlZCBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgLS1maWxlcyBvcHRpb24iCiBtc2dzdHIgIlTDuXkgY2jhu41uIC0tY2FjaGVkIGtow7RuZyB0aOG7gyBkw7luZyBjw7luZyB24bubaSB0w7l5IGNo4buNbiAtLWZpbGVzIgogCiAjLiB1bmV4cGVjdGVkIHR5cGUKLSM6IGdpdC1zdWJtb2R1bGUuc2g6OTc5CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwNjYKICMsIHNoLWZvcm1hdAogbXNnaWQgInVuZXhwZWN0ZWQgbW9kZSAkbW9kX2RzdCIKIG1zZ3N0ciAiY2jhur8gxJHhu5kga2jDtG5nIG5oxrAgbW9uZyBjaOG7nSAkbW9kX2RzdCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5OTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA4NgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKLW1zZ3N0ciAiICBD4bqjbmggYsOhbzogJG5hbWUga2jDtG5nIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICRzaGExX3NyYyIKLQotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDAwCi0jLCBzaC1mb3JtYXQKLW1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfZHN0IgotbXNnc3RyICIgIEPhuqNuaCBiw6FvOiAkbmFtZSBraMO0bmcgY2jhu6lhIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJHNoYTFfZHN0IgotCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEwMDMKLSMsIHNoLWZvcm1hdAotbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCittc2dpZCAiICBXYXJuOiAkZGlzcGxheV9uYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXQgJHNoYTFfc3JjIgogbXNnc3RyICIiCi0iICBD4bqjbmggYsOhbzogJG5hbWUga2jDtG5nIGNo4bupYSBuaOG7r25nIGzhuqduIGNodXnhu4NuIGdpYW8gKGNvbW1pdCkgJHNoYTFfc3JjIHbDoCAiCi0iJHNoYTFfZHN0IgorIiAgQ+G6o25oIGLDoW86ICRkaXNwbGF5X25hbWUga2jDtG5nIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICRzaGExX3NyYyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDI4CisjOiBnaXQtc3VibW9kdWxlLnNoOjEwODkKKyMsIHNoLWZvcm1hdAorbXNnaWQgIiAgV2FybjogJGRpc3BsYXlfbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX2RzdCIKK21zZ3N0ciAiIgorIiAgQ+G6o25oIGLDoW86ICRkaXNwbGF5X25hbWUga2jDtG5nIGNo4bupYSBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICRzaGExX2RzdCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDkyCisjLCBzaC1mb3JtYXQKK21zZ2lkICIgIFdhcm46ICRkaXNwbGF5X25hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCittc2dzdHIgIiIKKyIgIEPhuqNuaCBiw6FvOiAkZGlzcGxheV9uYW1lIGtow7RuZyBjaOG7qWEgbmjhu69uZyBs4bqnbiBjaHV54buDbiBnaWFvIChjb21taXQpICIKKyIkc2hhMV9zcmMgdsOgICRzaGExX2RzdCIKKworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTE3CiBtc2dpZCAiYmxvYiIKIG1zZ3N0ciAiYmxvYiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDY2CisjOiBnaXQtc3VibW9kdWxlLnNoOjExNTUKIG1zZ2lkICJTdWJtb2R1bGVzIGNoYW5nZWQgYnV0IG5vdCB1cGRhdGVkOiIKIG1zZ3N0ciAiTmjhu69uZyBtw7QtxJF1bi1jb24gxJHDoyBi4buLIHRoYXkgxJHhu5VpIG5oxrBuZyBjaMawYSDEkcaw4bujYyBj4bqtcCBuaOG6rXQ6IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEwNjgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1NwogbXNnaWQgIlN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIk5o4buvbmcgbcO0LcSRdW4tY29uIHRoYXkgxJHhu5VpIMSRw6MgxJHGsOG7o2MgY2h1eeG7g24gZ2lhbyAoY29tbWl0KToiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1MworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjQyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIkfhurdwIGzhu5dpIGtoaSDEkeG7hyBxdXkgdsOgbyB0cm9uZyDEkcaw4budbmcgZOG6q24gbcO0LcSRdW4tY29uIOKAnCRzbV9wYXRo4oCdIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEyMTYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTMwNgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3luY2hyb25pemluZyBzdWJtb2R1bGUgdXJsIGZvciAnJHByZWZpeCRzbV9wYXRoJyIKLW1zZ3N0ciAiVXJsIE3DtC3EkXVuLWNvbiDEkeG7k25nIGLhu5kgaMOzYSBjaG8g4oCcJHByZWZpeCRzbV9wYXRo4oCdIgorbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIlVybCBNw7QtxJF1bi1jb24gxJHhu5NuZyBi4buZIGjDs2EgY2hvIOKAnCRkaXNwbGF5cGF0aOKAnSIKKworI34gbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCisjfiBtc2dzdHIgIiAgKHPhu61hIGPDoWMgeHVuZyDEkeG7mXQgdsOgIHNhdSDEkcOzIGNo4bqheSBs4buHbmggXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKKworI34gbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjb21taXRcIikiCisjfiBtc2dzdHIgIiAgKGtoaSB04bqldCBj4bqjIGPDoWMgeHVuZyDEkeG7mXQgxJHDoyBz4butYSB4b25nOiBjaOG6oXkgbOG7h25oIFwiZ2l0IGNvbW1pdFwiKSIKKworI34gbXNnaWQgIm1vcmUgdGhhbiAlZCB0cmVlcyBnaXZlbjogJyVzJyIKKyN+IG1zZ3N0ciAixJHDoyBjaOG7iSByYSBuaGnhu4F1IGjGoW4gJWQgY8OieSAodHJlZSk6IOKAnCVz4oCdIgorCisjfiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tbm8tZmYgd2l0aCAtLWZmLW9ubHkuIgorI34gbXNnc3RyICJC4bqhbiBraMO0bmcgdGjhu4Mga+G6v3QgaOG7o3AgLS1uby1mZiB24bubaSAtLWZmLW9ubHkuIgorCisjfiBtc2dpZCAiIgorI34gInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKKyN+ICIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgIgorI34gImhpc3RvcnkpIgorI34gbXNnc3RyICIiCisjfiAibcO0LcSRdW4tY29uIOKAnCVz4oCdIChob+G6t2MgY8OhaSBu4bqxbSB0cm9uZyBjw6FjIG3DtC3EkXVuLWNvbikgZMO5bmcgdGjGsCBt4bulYyAuZ2l0XG4iCisjfiAiKGTDuW5nIOKAnHJtIC1yZuKAnSBu4bq/dSBi4bqhbiB0aOG7sWMgc+G7sSBtdeG7kW4gZ+G7oSBi4buPIG7DsyBjw7luZyB24bubaSB04bqldCBj4bqjIGzhu4tjaCBz4butIGPhu6dhICIKKyN+ICJjaMO6bmcpIgorCisjfiBtc2dpZCAiIgorI34gIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgorI34gIih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwgb3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiCisjfiBtc2dzdHIgIiIKKyN+ICLigJwlc+KAnSBjw7MgY8OhYyB0aGF5IMSR4buVaSDEkcaw4bujYyBsxrB1IHRy4bqhbmcgdGjDoWkgdHJvbmcgYuG6o25nIG3hu6VjIGzhu6VjXG4iCisjfiAiKGTDuW5nIHTDuXkgY2jhu41uIC0tY2FjaGVkIMSR4buDIGdp4buvIHThuq1wIHRpbiwgaG/hurdjIC1mIMSR4buDIMOpcCBideG7mWMgZ+G7oSBi4buPKSIKKworI34gbXNnaWQgInNob3cgY29tbWl0cyB3aGVyZSBubyBwYXJlbnQgY29tZXMgYmVmb3JlIGl0cyBjaGlsZHJlbiIKKyN+IG1zZ3N0ciAiaGnhu4NuIHRo4buLIGPDoWMgbOG6p24gY2h1eeG7g24gZ2lhbyBuxqFpIG3DoCBjaGEgbeG6uSDEkeG6v24gdHLGsOG7m2MgY29uIGPhu6dhIG7DsyIKKworI34gbXNnaWQgInNob3cgdGhlIEhFQUQgcmVmZXJlbmNlIgorI34gbXNnc3RyICJoaeG7g24gdGjhu4sgdGhhbSBjaGnhur91IGPhu6dhIEhFQUQiCisKKyN+IG1zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCisjfiBtc2dzdHIgIiIKKyN+ICJLaMO0bmcgdGjhu4MgbOG6pXkgduG7gSAoZmV0Y2gpIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdIgorCisjfiBtc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKKyN+IG1zZ3N0ciAiR+G6t3AgbOG7l2kga2hpIMSR4buHIHF1eSB2w6BvIHRyb25nIMSRxrDhu51uZyBk4bqrbiBtw7QtxJF1bi1jb24g4oCcJHByZWZpeCRzbV9wYXRo4oCdIgogCiAjfiBtc2dpZCAiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gICdzdGF0dXMgLXVubyciCiAjfiBtc2dzdHIgIkPhuqduICUuMmYgZ2nDonkgxJHhu4MgxJHhur9tIGPDoWMgdOG6rXAgdGluIGNoxrBhIMSRxrDhu6NjIHRoZW8gduG6v3QuICDigJxzdGF0dXMgLXVub+KAnSIKZGlmZiAtLWdpdCBhL3BvL3poX0NOLnBvIGIvcG8vemhfQ04ucG8KaW5kZXggYmE3NTdkOS4uZmY5NTE0MCAxMDA2NDQKLS0tIGEvcG8vemhfQ04ucG8KKysrIGIvcG8vemhfQ04ucG8KQEAgLTEyLDggKzEyLDggQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogR2l0XG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IEdpdCBNYWlsaW5nIExpc3QgPGdpdEB2Z2VyLmtlcm5lbC5vcmc+XG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTMtMDQtMzAgMDg6MjUrMDgwMFxuIgotIlBPLVJldmlzaW9uLURhdGU6IDIwMTMtMDQtMTIgMDk6MjMrMDgwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDEzLTA3LTI2IDE0OjE5KzA4MDBcbiIKKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDEzLTA4LTAzIDE0OjEzKzA4MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEppYW5nIFhpbiA8d29ybGRoZWxsby5uZXRAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEdpdEh1YiA8aHR0cHM6Ly9naXRodWIuY29tL2dvdGdpdC9naXQvPlxuIgogIkxhbmd1YWdlOiB6aF9DTlxuIgpAQCAtMjIsNyArMjIsNyBAQAogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD0obiAhPSAxKTtcbiIKIAotIzogYWR2aWNlLmM6NTMKKyM6IGFkdmljZS5jOjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImhpbnQ6ICUuKnNcbiIKIG1zZ3N0ciAi5o+Q56S677yaJS4qc1xuIgpAQCAtMzEsNyArMzEsNyBAQAogIy4gKiBNZXNzYWdlIHVzZWQgYm90aCB3aGVuICdnaXQgY29tbWl0JyBmYWlscyBhbmQgd2hlbgogIy4gKiBvdGhlciBjb21tYW5kcyBkb2luZyBhIG1lcmdlIGRvLgogIy4KLSM6IGFkdmljZS5jOjgzCisjOiBhZHZpY2UuYzo4NwogbXNnaWQgIiIKICJGaXggdGhlbSB1cCBpbiB0aGUgd29yayB0cmVlLFxuIgogImFuZCB0aGVuIHVzZSAnZ2l0IGFkZC9ybSA8ZmlsZT4nIGFzXG4iCkBAIC02OCw3ICs2OCw3IEBACiBtc2dpZCAiYXJjaGl2ZSBmb3JtYXQiCiBtc2dzdHIgIuW9kuaho+agvOW8jyIKIAotIzogYXJjaGl2ZS5jOjMyNCBidWlsdGluL2xvZy5jOjExMjYKKyM6IGFyY2hpdmUuYzozMjQgYnVpbHRpbi9sb2cuYzoxMTczCiBtc2dpZCAicHJlZml4IgogbXNnc3RyICLliY3nvIAiCiAKQEAgLTc2LDExICs3NiwxMSBAQAogbXNnaWQgInByZXBlbmQgcHJlZml4IHRvIGVhY2ggcGF0aG5hbWUgaW4gdGhlIGFyY2hpdmUiCiBtc2dzdHIgIuS4uuW9kuaho+S4reavj+S4qui3r+W+hOWQjeWKoOS4iuWJjee8gCIKIAotIzogYXJjaGl2ZS5jOjMyNiBidWlsdGluL2FyY2hpdmUuYzo4OCBidWlsdGluL2JsYW1lLmM6MjM3MQotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzIgYnVpbHRpbi9jb25maWcuYzo1NSBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY1Ci0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY3IGJ1aWx0aW4vZ3JlcC5jOjcxNSBidWlsdGluL2hhc2gtb2JqZWN0LmM6NzcKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTAgYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25vdGVzLmM6NTM2Ci0jOiBidWlsdGluL25vdGVzLmM6NjkzIGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA3IHBhcnNlLW9wdGlvbnMuaDoxNDkKKyM6IGFyY2hpdmUuYzozMjYgYnVpbHRpbi9hcmNoaXZlLmM6ODggYnVpbHRpbi9ibGFtZS5jOjIyOTIKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkzIGJ1aWx0aW4vY29uZmlnLmM6NTYgYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NSBidWlsdGluL2dyZXAuYzo3MTQgYnVpbHRpbi9oYXNoLW9iamVjdC5jOjc3CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDk2IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTkgYnVpbHRpbi9ub3Rlcy5jOjQwOAorIzogYnVpbHRpbi9ub3Rlcy5jOjU2NSBidWlsdGluL3JlYWQtdHJlZS5jOjEwOCBwYXJzZS1vcHRpb25zLmg6MTUyCiBtc2dpZCAiZmlsZSIKIG1zZ3N0ciAi5paH5Lu2IgogCkBAIC0xMTIsNyArMTEyLDcgQEAKIG1zZ2lkICJsaXN0IHN1cHBvcnRlZCBhcmNoaXZlIGZvcm1hdHMiCiBtc2dzdHIgIuWIl+WHuuaUr+aMgeeahOW9kuaho+agvOW8jyIKIAotIzogYXJjaGl2ZS5jOjM0NSBidWlsdGluL2FyY2hpdmUuYzo5MCBidWlsdGluL2Nsb25lLmM6ODYKKyM6IGFyY2hpdmUuYzozNDUgYnVpbHRpbi9hcmNoaXZlLmM6OTAgYnVpbHRpbi9jbG9uZS5jOjg1CiBtc2dpZCAicmVwbyIKIG1zZ3N0ciAi54mI5pys5bqTIgogCkBAIC0xMjAsNyArMTIwLDcgQEAKIG1zZ2lkICJyZXRyaWV2ZSB0aGUgYXJjaGl2ZSBmcm9tIHJlbW90ZSByZXBvc2l0b3J5IDxyZXBvPiIKIG1zZ3N0ciAi5LuO6L+c56iL54mI5pys5bqT77yIPOeJiOacrOW6kz7vvInmj5Dlj5blvZLmoaPmlofku7YiCiAKLSM6IGFyY2hpdmUuYzozNDcgYnVpbHRpbi9hcmNoaXZlLmM6OTIgYnVpbHRpbi9ub3Rlcy5jOjYxNQorIzogYXJjaGl2ZS5jOjM0NyBidWlsdGluL2FyY2hpdmUuYzo5MiBidWlsdGluL25vdGVzLmM6NDg3CiBtc2dpZCAiY29tbWFuZCIKIG1zZ3N0ciAi5ZG95LukIgogCkBAIC0yMDUsMTcgKzIwNSwxNyBAQAogbXNnaWQgIkNhbm5vdCBmb3JjZSB1cGRhdGUgdGhlIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5peg5rOV5by65Yi25pu05paw5b2T5YmN5YiG5pSv44CCIgogCi0jOiBicmFuY2guYzoyMDEKKyM6IGJyYW5jaC5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgc2V0dXAgdHJhY2tpbmcgaW5mb3JtYXRpb247IHN0YXJ0aW5nIHBvaW50ICclcycgaXMgbm90IGEgYnJhbmNoLiIKIG1zZ3N0ciAi5peg5rOV6K6+572u6Lef6Liq5L+h5oGv77yb6LW35aeL54K5ICclcycg5LiN5piv5LiA5Liq5YiG5pSv44CCIgogCi0jOiBicmFuY2guYzoyMDMKKyM6IGJyYW5jaC5jOjIxOAogIywgYy1mb3JtYXQKIG1zZ2lkICJ0aGUgcmVxdWVzdGVkIHVwc3RyZWFtIGJyYW5jaCAnJXMnIGRvZXMgbm90IGV4aXN0IgogbXNnc3RyICLor7fmsYLnmoTkuIrmuLjliIbmlK8gJyVzJyDkuI3lrZjlnKgiCiAKLSM6IGJyYW5jaC5jOjIwNQorIzogYnJhbmNoLmM6MjIwCiBtc2dpZCAiIgogIlxuIgogIklmIHlvdSBhcmUgcGxhbm5pbmcgb24gYmFzaW5nIHlvdXIgd29yayBvbiBhbiB1cHN0cmVhbVxuIgpAQCAtMjMzLDI2ICsyMzMsMjYgQEAKICLlpoLmnpzmgqjmraPorqHliJLmjqjpgIHkuIDkuKrog73kuI7lr7nlupTov5znqIvliIbmlK/lu7rnq4vot5/ouKrnmoTmlrDnmoTmnKzlnLDliIbmlK/vvIxcbiIKICLmgqjlj6/og73pnIDopoHkvb/nlKggXCJnaXQgcHVzaCAtdVwiIOaOqOmAgeWIhuaUr+W5tumFjee9ruWSjOS4iua4uOeahOWFs+iBlOOAgiIKIAotIzogYnJhbmNoLmM6MjUwCisjOiBicmFuY2guYzoyNjUKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWU6ICclcycuIgogbXNnc3RyICLkuI3mmK/kuIDkuKrmnInmlYjnmoTlr7nosaHlkI3vvJonJXMn44CCIgogCi0jOiBicmFuY2guYzoyNzAKKyM6IGJyYW5jaC5jOjI4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJBbWJpZ3VvdXMgb2JqZWN0IG5hbWU6ICclcycuIgogbXNnc3RyICLmrafkuYnnmoTlr7nosaHlkI3vvJonJXMn44CCIgogCi0jOiBicmFuY2guYzoyNzUKKyM6IGJyYW5jaC5jOjI5MAogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3QgYSB2YWxpZCBicmFuY2ggcG9pbnQ6ICclcycuIgogbXNnc3RyICLml6DmlYjnmoTliIbmlK/ngrnvvJonJXMn44CCIgogCi0jOiBicmFuY2guYzoyODEKKyM6IGJyYW5jaC5jOjI5NgogbXNnaWQgIkZhaWxlZCB0byBsb2NrIHJlZiBmb3IgdXBkYXRlIgogbXNnc3RyICLml6Dms5XkuLrmm7TmlrDplIHlrprlvJXnlKgiCiAKLSM6IGJyYW5jaC5jOjI5OQorIzogYnJhbmNoLmM6MzE0CiBtc2dpZCAiRmFpbGVkIHRvIHdyaXRlIHJlZiIKIG1zZ3N0ciAi5LiN6IO95YaZ5byV55SoIgogCkBAIC0yNjYsNyArMjY2LDcgQEAKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVhZGVyOiAlcyVzICglZCkiCiBtc2dzdHIgIuacquiDveivhuWIq+eahOWMheWktO+8miVzJXMgKCVkKSIKIAotIzogYnVuZGxlLmM6ODkgYnVpbHRpbi9jb21taXQuYzo2NzYKKyM6IGJ1bmRsZS5jOjg5IGJ1aWx0aW4vY29tbWl0LmM6NjgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBvcGVuICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gCAnJXMnIgpAQCAtMjc1LDkgKzI3NSw5IEBACiBtc2dpZCAiUmVwb3NpdG9yeSBsYWNrcyB0aGVzZSBwcmVyZXF1aXNpdGUgY29tbWl0czoiCiBtc2dzdHIgIueJiOacrOW6k+e8uuWwkei/meS6m+W/heWkh+eahOaPkOS6pO+8miIKIAotIzogYnVuZGxlLmM6MTY0IHNlcXVlbmNlci5jOjY1MSBzZXF1ZW5jZXIuYzoxMTAxIGJ1aWx0aW4vbG9nLmM6MzAwCi0jOiBidWlsdGluL2xvZy5jOjc3MCBidWlsdGluL2xvZy5jOjEzNDQgYnVpbHRpbi9sb2cuYzoxNTcwIGJ1aWx0aW4vbWVyZ2UuYzozNDkKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoxNTUKKyM6IGJ1bmRsZS5jOjE2NCBzZXF1ZW5jZXIuYzo2NjEgc2VxdWVuY2VyLmM6MTExMSBidWlsdGluL2xvZy5jOjMzMQorIzogYnVpbHRpbi9sb2cuYzo4MDEgYnVpbHRpbi9sb2cuYzoxMzk5IGJ1aWx0aW4vbG9nLmM6MTYyNSBidWlsdGluL21lcmdlLmM6MzY0CisjOiBidWlsdGluL3Nob3J0bG9nLmM6MTU2CiBtc2dpZCAicmV2aXNpb24gd2FsayBzZXR1cCBmYWlsZWQiCiBtc2dzdHIgIueJiOacrOmBjeWOhuiuvue9ruWksei0pSIKIApAQCAtMzAzLDcgKzMwMyw3IEBACiBtc2dpZCAicmV2LWxpc3QgZGllZCIKIG1zZ3N0ciAicmV2LWxpc3Qg57uI5q2iIgogCi0jOiBidW5kbGUuYzozMDAgYnVpbHRpbi9sb2cuYzoxMjU1IGJ1aWx0aW4vc2hvcnRsb2cuYzoyNTgKKyM6IGJ1bmRsZS5jOjMwMCBidWlsdGluL2xvZy5jOjEzMTAgYnVpbHRpbi9zaG9ydGxvZy5jOjI1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICVzIgogbXNnc3RyICLmnKrog73or4bliKvnmoTlj4LmlbDvvJolcyIKQEAgLTMzNCwxMiArMzM0LDEyIEBACiBtc2dpZCAiaW5kZXgtcGFjayBkaWVkIgogbXNnc3RyICJpbmRleC1wYWNrIOe7iOatoiIKIAotIzogY29tbWl0LmM6NTAKKyM6IGNvbW1pdC5jOjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBwYXJzZSAlcyIKIG1zZ3N0ciAi5LiN6IO96Kej5p6QICVzIgogCi0jOiBjb21taXQuYzo1MgorIzogY29tbWl0LmM6NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgJXMgaXMgbm90IGEgY29tbWl0ISIKIG1zZ3N0ciAiJXMgJXMg5LiN5piv5LiA5Liq5o+Q5LqkISIKQEAgLTM0OCwxNiArMzQ4LDE2IEBACiBtc2dpZCAibWVtb3J5IGV4aGF1c3RlZCIKIG1zZ3N0ciAi5YaF5a2Y6ICX5bC9IgogCi0jOiBjb25uZWN0ZWQuYzozOQorIzogY29ubmVjdGVkLmM6NjAKIG1zZ2lkICJDb3VsZCBub3QgcnVuICdnaXQgcmV2LWxpc3QnIgogbXNnc3RyICLkuI3og73miafooYwgJ2dpdCByZXYtbGlzdCciCiAKLSM6IGNvbm5lY3RlZC5jOjQ4CisjOiBjb25uZWN0ZWQuYzo4MAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgd3JpdGUgdG8gcmV2LWxpc3Q6ICVzIgogbXNnc3RyICLml6Dms5XlhpnlhaUgcmV2LWxpc3TvvJolcyIKIAotIzogY29ubmVjdGVkLmM6NTYKKyM6IGNvbm5lY3RlZC5jOjg4CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjbG9zZSByZXYtbGlzdCdzIHN0ZGluOiAlcyIKIG1zZ3N0ciAi5peg5rOV5YWz6ZetIHJldi1saXN0IOeahOagh+WHhui+k+WFpe+8miVzIgpAQCAtNDU1LDcgKzQ1NSw3IEBACiAi5Y+R546w6YWN572u5Y+Y6YePICdkaWZmLmRpcnN0YXQnIOS4reeahOmUmeivr++8mlxuIgogIiVzIgogCi0jOiBkaWZmLmM6MzQ4MQorIzogZGlmZi5jOjM0ODcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkZhaWxlZCB0byBwYXJzZSAtLWRpcnN0YXQvLVggb3B0aW9uIHBhcmFtZXRlcjpcbiIKQEAgLTQ2NCw3ICs0NjQsNyBAQAogIuaXoOazleino+aekCAtLWRpcnN0YXQvLVgg6YCJ6aG555qE5Y+C5pWw77yaXG4iCiAiJXMiCiAKLSM6IGRpZmYuYzozNDk1CisjOiBkaWZmLmM6MzUwMQogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgLS1zdWJtb2R1bGUgb3B0aW9uIHBhcmFtZXRlcjogJyVzJyIKIG1zZ3N0ciAi5peg5rOV6Kej5p6QIC0tc3VibW9kdWxlIOmAiemhueeahOWPguaVsO+8miclcyciCkBAIC01MDYsMjAgKzUwNiwyMCBAQAogbXNnaWQgIiclcyc6IHNob3J0IHJlYWQgJXMiCiBtc2dzdHIgIiclcyfvvJror7vlj5bkuI3lrozmlbQgJXMiCiAKLSM6IGhlbHAuYzoyMTIKKyM6IGhlbHAuYzoyMTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiYXZhaWxhYmxlIGdpdCBjb21tYW5kcyBpbiAnJXMnIgogbXNnc3RyICLlnKggJyVzJyDkuIvlj6/nlKjnmoQgZ2l0IOWRveS7pCIKIAotIzogaGVscC5jOjIxOQorIzogaGVscC5jOjIyMAogbXNnaWQgImdpdCBjb21tYW5kcyBhdmFpbGFibGUgZnJvbSBlbHNld2hlcmUgb24geW91ciAkUEFUSCIKIG1zZ3N0ciAi5ZyoICRQQVRIIOi3r+W+hOS4reeahOWFtuS7luWcsOaWueWPr+eUqOeahCBnaXQg5ZG95LukIgogCi0jOiBoZWxwLmM6MjM1CisjOiBoZWxwLmM6MjM2CiBtc2dpZCAiVGhlIG1vc3QgY29tbW9ubHkgdXNlZCBnaXQgY29tbWFuZHMgYXJlOiIKIG1zZ3N0ciAi5pyA5bi455So55qEIGdpdCDlkb3ku6TmnInvvJoiCiAKLSM6IGhlbHAuYzoyOTIKKyM6IGhlbHAuYzoyOTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIiclcycgYXBwZWFycyB0byBiZSBhIGdpdCBjb21tYW5kLCBidXQgd2Ugd2VyZSBub3RcbiIKQEAgLTUyOCwxMSArNTI4LDExIEBACiAiJyVzJyDlg4/mmK/kuIDkuKogZ2l0IOWRveS7pO+8jOS9huWNtOaXoOazlei/kOihjOOAglxuIgogIuWPr+iDveaYryBnaXQtJXMg5Y+X5o2f77yfIgogCi0jOiBoZWxwLmM6MzQ5CisjOiBoZWxwLmM6MzUwCiBtc2dpZCAiVWggb2guIFlvdXIgc3lzdGVtIHJlcG9ydHMgbm8gR2l0IGNvbW1hbmRzIGF0IGFsbC4iCiBtc2dzdHIgIuWUieWRgO+8jOaCqOeahOezu+e7n+S4reacquWPkeeOsCBHaXQg5ZG95Luk44CCIgogCi0jOiBoZWxwLmM6MzcxCisjOiBoZWxwLmM6MzcyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJXQVJOSU5HOiBZb3UgY2FsbGVkIGEgR2l0IGNvbW1hbmQgbmFtZWQgJyVzJywgd2hpY2ggZG9lcyBub3QgZXhpc3QuXG4iCkBAIC01NDEsMTcgKzU0MSwxNyBAQAogIuitpuWRiu+8muaCqOi/kOihjOS4gOS4quS4jeWtmOWcqOeahCBHaXQg5ZG95LukICclcyfjgILnu6fnu63miafooYzlgYflrprmgqjopoHopoHov5DooYznmoRcbiIKICLmmK8gJyVzJyIKIAotIzogaGVscC5jOjM3NgorIzogaGVscC5jOjM3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbiAlMC4xZiBzZWNvbmRzIGF1dG9tYXRpY2FsbHkuLi4iCiBtc2dzdHIgIuWcqCAlMC4xZiDnp5Lpkp/lkI7oh6rliqjov5DooYwuLi4iCiAKLSM6IGhlbHAuYzozODMKKyM6IGhlbHAuYzozODQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZ2l0OiAnJXMnIGlzIG5vdCBhIGdpdCBjb21tYW5kLiBTZWUgJ2dpdCAtLWhlbHAnLiIKIG1zZ3N0ciAiZ2l077yaJyVzJyDkuI3mmK/kuIDkuKogZ2l0IOWRveS7pOOAguWPguingSAnZ2l0IC0taGVscCfjgIIiCiAKLSM6IGhlbHAuYzozODcKKyM6IGhlbHAuYzozODggaGVscC5jOjQ0NwogbXNnaWQgIiIKICJcbiIKICJEaWQgeW91IG1lYW4gdGhpcz8iCkBAIC01NjUsMTIgKzU2NSwxNyBAQAogIlxuIgogIuaCqOaMh+eahOaYr+i/meWFtuS4reeahOafkOS4gOS4quS5iO+8nyIKIAorIzogaGVscC5jOjQ0MworIywgYy1mb3JtYXQKK21zZ2lkICIlczogJXMgLSAlcyIKK21zZ3N0ciAiJXPvvJolcyAtICVzIgorCiAjOiBtZXJnZS5jOjU2CiBtc2dpZCAiZmFpbGVkIHRvIHJlYWQgdGhlIGNhY2hlIgogbXNnc3RyICLml6Dms5Xor7vlj5bnvJPlrZgiCiAKICM6IG1lcmdlLmM6MTEwIGJ1aWx0aW4vY2hlY2tvdXQuYzozNjUgYnVpbHRpbi9jaGVja291dC5jOjU2NgotIzogYnVpbHRpbi9jbG9uZS5jOjY0NQorIzogYnVpbHRpbi9jbG9uZS5jOjY1NgogbXNnaWQgInVuYWJsZSB0byB3cml0ZSBuZXcgaW5kZXggZmlsZSIKIG1zZ3N0ciAi5peg5rOV5YaZ5paw55qE57Si5byV5paH5Lu2IgogCkBAIC01ODQsNzAgKzU4OSw3MCBAQAogbXNnaWQgImFkZGluZm9fY2FjaGUgZmFpbGVkIGZvciBwYXRoICclcyciCiBtc2dzdHIgIuS4uui3r+W+hCAnJXMnIGFkZGluZm9fY2FjaGUg5aSx6LSlIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoyNjgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjI2OQogbXNnaWQgImVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICLml6Dms5XliJvlu7rmoJEiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY3MgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NjczCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgcGF0aCAnJXMnJXMiCiBtc2dzdHIgIuaXoOazleWIm+W7uui3r+W+hCAnJXMnJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjY4MworIzogbWVyZ2UtcmVjdXJzaXZlLmM6Njg0CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nICVzIHRvIG1ha2Ugcm9vbSBmb3Igc3ViZGlyZWN0b3J5XG4iCiBtc2dzdHIgIuWIoOmZpCAlcyDku6Xkvr/kuLrlrZDnm67lvZXnlZnlh7rnqbrpl7RcbiIKIAogIy4gc29tZXRoaW5nIGVsc2UgZXhpc3RzCiAjLiAuLiBidXQgbm90IHNvbWUgb3RoZXIgZXJyb3IgKHdobyByZWFsbHkgY2FyZXMgd2hhdD8pCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo2OTcgbWVyZ2UtcmVjdXJzaXZlLmM6NzE4CisjOiBtZXJnZS1yZWN1cnNpdmUuYzo2OTggbWVyZ2UtcmVjdXJzaXZlLmM6NzE5CiBtc2dpZCAiOiBwZXJoYXBzIGEgRC9GIGNvbmZsaWN0PyIKIG1zZ3N0ciAi77ya5Y+v6IO95piv5LiA5Liq55uu5b2VL+aWh+S7tuWGsueqge+8nyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzA4CisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3MDkKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVmdXNpbmcgdG8gbG9zZSB1bnRyYWNrZWQgZmlsZSBhdCAnJXMnIgogbXNnc3RyICLmi5Lnu53kuKLlvIMgJyVzJyDkuK3nmoTmnKrot5/ouKrmlofku7YiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc0OAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCByZWFkIG9iamVjdCAlcyAnJXMnIgogbXNnc3RyICLkuI3og73or7vlj5blr7nosaEgJXMgJyVzJyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzUwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzo3NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmxvYiBleHBlY3RlZCBmb3IgJXMgJyVzJyIKIG1zZ3N0ciAiJXMgJyVzJyDlupTkuLrmlbDmja7vvIhibG9i77yJ5a+56LGhIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo3NzMgYnVpbHRpbi9jbG9uZS5jOjMxMworIzogbWVyZ2UtcmVjdXJzaXZlLmM6Nzc0IGJ1aWx0aW4vY2xvbmUuYzozMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIG9wZW4gJyVzJyIKIG1zZ3N0ciAi5peg5rOV5omT5byAICclcyciCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4MQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6NzgyCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBzeW1saW5rICclcyciCiBtc2dzdHIgIuaXoOazleWIm+W7uuespuWPt+mTvuaOpSAnJXMnIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo3ODQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjc4NQogIywgYy1mb3JtYXQKIG1zZ2lkICJkbyBub3Qga25vdyB3aGF0IHRvIGRvIHdpdGggJTA2byAlcyAnJXMnIgogbXNnc3RyICLkuI3nn6XpgZPlpoLkvZXlpITnkIYgJTA2byAlcyAnJXMnIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzo5MjIKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyMwogbXNnaWQgIkZhaWxlZCB0byBleGVjdXRlIGludGVybmFsIG1lcmdlIgogbXNnc3RyICLml6Dms5XmiafooYzlhoXpg6jlkIjlubYiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjkyNgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBhZGQgJXMgdG8gZGF0YWJhc2UiCiBtc2dzdHIgIuS4jeiDvea3u+WKoCAlcyDoh7Plr7nosaHlupMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjk0MgorIzogbWVyZ2UtcmVjdXJzaXZlLmM6OTQzCiBtc2dpZCAidW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGUgaW4gdGhlIHRyZWUiCiBtc2dzdHIgIuWcqOagkeS4reacieS4jeaUr+aMgeeahOWvueixoeexu+WeiyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyMSBtZXJnZS1yZWN1cnNpdmUuYzoxMDM1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDIyIG1lcmdlLXJlY3Vyc2l2ZS5jOjEwMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKQEAgLTY1Niw3ICs2NjEsNyBAQAogIuWGsueqge+8iCUxJHMv5Yig6Zmk77yJ77yaJTIkcyDlnKggJTMkcyDkuK3ooqvliKDpmaTvvIzlnKggJTUkcyDkuK3ooqsgJTQkc+OAgiU3JHMg5ZyoICU2JHMg5LitIgogIueahOeJiOacrOiiq+S/neeVmeOAgiIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTAyNyBtZXJnZS1yZWN1cnNpdmUuYzoxMDQwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDI4IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNPTkZMSUNUICglcy9kZWxldGUpOiAlcyBkZWxldGVkIGluICVzIGFuZCAlcyBpbiAlcy4gVmVyc2lvbiAlcyBvZiAlcyBsZWZ0ICIKQEAgLTY2NSwyMCArNjcwLDIwIEBACiAi5Yay56qB77yIJTEkcy/liKDpmaTvvInvvJolMiRzIOWcqCAlMyRzIOS4reiiq+WIoOmZpO+8jOWcqCAlNSRzIOS4reiiqyAlNCRz44CCJTckcyDlnKggJTYkcyDkuK0iCiAi55qE54mI5pys5L+d55WZ5LqOICU4JHMg5Lit44CCIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgxCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMDgyCiBtc2dpZCAicmVuYW1lIgogbXNnc3RyICLph43lkb3lkI0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwODEKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEwODIKIG1zZ2lkICJyZW5hbWVkIgogbXNnc3RyICLph43lkb3lkI0iCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExMzcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExMzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaXMgYSBkaXJlY3RvcnkgaW4gJXMgYWRkaW5nIGFzICVzIGluc3RlYWQiCiBtc2dzdHIgIiVzIOaYryAlcyDkuK3nmoTkuIDkuKrnm67lvZXogIzku6UgJXMg5Li65ZCN6KKr5re75YqgIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTU5CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxMTYwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZSBcIiVzXCItPlwiJXNcIiBpbiBicmFuY2ggXCIlc1wiIHJlbmFtZSBcIiVzIgpAQCAtNjg3LDE0OCArNjkyLDE2OSBAQAogIuWGsueqge+8iOmHjeWRveWQjS/ph43lkb3lkI3vvInvvJrlnKjliIbmlK8gXCIlMyRzXCIg5Lit6YeN5ZG95ZCNIFwiJTEkc1wiLT5cIiUyJHNcIu+8jOWcqOWIhuaUryAiCiAiXCIlNiRzXCIg5Lit6YeN5ZG95ZCNIFwiJTQkc1wiLT5cIiU1JHNcIiU3JHMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjExNjUKIG1zZ2lkICIgKGxlZnQgdW5yZXNvbHZlZCkiCiBtc2dzdHIgIu+8iOeVmeS4i+acquino+WGs++8iSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTIxOAorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTIxOQogIywgYy1mb3JtYXQKIG1zZ2lkICJDT05GTElDVCAocmVuYW1lL3JlbmFtZSk6IFJlbmFtZSAlcy0+JXMgaW4gJXMuIFJlbmFtZSAlcy0+JXMgaW4gJXMiCiBtc2dzdHIgIiIKICLlhrLnqoHvvIjph43lkb3lkI0v6YeN5ZG95ZCN77yJ77ya5ZyoICUzJHMg5Lit6YeN5ZG95ZCNICUxJHMtPiUyJHPvvIzlnKggJTYkcyDkuK3ph43lkb3lkI0gJTQkcy0+IgogIiU1JHMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyNDgKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjEyNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVuYW1pbmcgJXMgdG8gJXMgYW5kICVzIHRvICVzIGluc3RlYWQiCiBtc2dzdHIgIuiAjOaYr+mHjeWRveWQjSAlcyDoh7MgJXPvvIzku6Xlj4ogJXMg6IezICVzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ3CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNPTkZMSUNUIChyZW5hbWUvYWRkKTogUmVuYW1lICVzLT4lcyBpbiAlcy4gJXMgYWRkZWQgaW4gJXMiCiBtc2dzdHIgIuWGsueqge+8iOmHjeWRveWQjS/mt7vliqDvvInvvJrlnKggJTMkcyDkuK3ph43lkb3lkI0gJTEkcy0+JTIkc+OAguWcqCAlNSRzIOS4rea3u+WKoCAlNCRzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDU3CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDU4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFkZGluZyBtZXJnZWQgJXMiCiBtc2dzdHIgIua3u+WKoOWQiOW5tuWQjueahCAlcyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTQ2MiBtZXJnZS1yZWN1cnNpdmUuYzoxNjYwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNDYzIG1lcmdlLXJlY3Vyc2l2ZS5jOjE2NjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGFzICVzIGluc3RlYWQiCiBtc2dzdHIgIuiAjOaYr+S7pSAlcyDkuLrlkI3mt7vliqAiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTMKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgb2JqZWN0ICVzIgogbXNnc3RyICLkuI3og73or7vlj5blr7nosaEgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTYKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1MTcKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0ICVzIGlzIG5vdCBhIGJsb2IiCiBtc2dzdHIgIuWvueixoSAlcyDkuI3mmK/kuIDkuKrmlbDmja7vvIhibG9i77yJ5a+56LGhIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTY1CiBtc2dpZCAibW9kaWZ5IgogbXNnc3RyICLkv67mlLkiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE1NjUKIG1zZ2lkICJtb2RpZmllZCIKIG1zZ3N0ciAi5L+u5pS5IgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTc0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTc1CiBtc2dpZCAiY29udGVudCIKIG1zZ3N0ciAi5YaF5a65IgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTgxCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNTgyCiBtc2dpZCAiYWRkL2FkZCIKIG1zZ3N0ciAi5re75YqgL+a3u+WKoCIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJTa2lwcGVkICVzIChtZXJnZWQgc2FtZSBhcyBleGlzdGluZykiCiBtc2dzdHIgIueVpei/hyAlc++8iOW3sue7j+WBmui/h+ebuOWQjOWQiOW5tu+8iSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYyOQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJBdXRvLW1lcmdpbmcgJXMiCiBtc2dzdHIgIuiHquWKqOWQiOW5tiAlcyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTYzMyBnaXQtc3VibW9kdWxlLnNoOjEwMjkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzQgZ2l0LXN1Ym1vZHVsZS5zaDoxMTE4CiBtc2dpZCAic3VibW9kdWxlIgogbXNnc3RyICLlrZDmqKHnu4QiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzQKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE2MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ09ORkxJQ1QgKCVzKTogTWVyZ2UgY29uZmxpY3QgaW4gJXMiCiBtc2dzdHIgIuWGsueqge+8iCVz77yJ77ya5ZCI5bm25Yay56qB5LqOICVzIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzI0CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nICVzIgogbXNnc3RyICLliKDpmaQgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NDkKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NTAKIG1zZ2lkICJmaWxlL2RpcmVjdG9yeSIKIG1zZ3N0ciAi5paH5Lu2L+ebruW9lSIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc1NQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTc1NgogbXNnaWQgImRpcmVjdG9yeS9maWxlIgogbXNnc3RyICLnm67lvZUv5paH5Lu2IgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzYwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxNzYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNPTkZMSUNUICglcyk6IFRoZXJlIGlzIGEgZGlyZWN0b3J5IHdpdGggbmFtZSAlcyBpbiAlcy4gQWRkaW5nICVzIGFzICVzIgogbXNnc3RyICLlhrLnqoHvvIglMSRz77yJ77ya5ZyoICUzJHMg5Lit5pyJ5LiA5Liq5ZCN5Li6ICUyJHMg55qE55uu5b2V44CC5LulICU1JHMg5Li65ZCN5re75YqgICU0JHMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NzAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiQWRkaW5nICVzIgogbXNnc3RyICLmt7vliqAgJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3ODcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE3ODgKIG1zZ2lkICJGYXRhbCBtZXJnZSBmYWlsdXJlLCBzaG91bGRuJ3QgaGFwcGVuLiIKIG1zZ3N0ciAi5Lil6YeN55qE5ZCI5bm26ZSZ6K+v77yM5LiN5bqU5Y+R55Sf44CCIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA2CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODA3CiBtc2dpZCAiQWxyZWFkeSB1cC10by1kYXRlISIKIG1zZ3N0ciAi5bey57uP5piv5pyA5paw55qE77yBIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE1CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxODE2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm1lcmdpbmcgb2YgdHJlZXMgJXMgYW5kICVzIGZhaWxlZCIKIG1zZ3N0ciAi5peg5rOV5ZCI5bm25qCRICVzIOWSjCAlcyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg0NQorIzogbWVyZ2UtcmVjdXJzaXZlLmM6MTg0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnByb2Nlc3NlZCBwYXRoPz8/ICVzIgogbXNnc3RyICLmnKrlpITnkIbnmoTot6/lvoQ/Pz8gJXMiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4OTAKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE4OTEKIG1zZ2lkICJNZXJnaW5nOiIKIG1zZ3N0ciAi5ZCI5bm277yaIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTAzCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTA0CiAjLCBjLWZvcm1hdAogbXNnaWQgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcjoiCiBtc2dpZF9wbHVyYWwgImZvdW5kICV1IGNvbW1vbiBhbmNlc3RvcnM6IgogbXNnc3RyWzBdICLlj5HnjrAgJXUg5Liq5YWx5ZCM56WW5YWI77yaIgogbXNnc3RyWzFdICLlj5HnjrAgJXUg5Liq5YWx5ZCM56WW5YWI77yaIgogCi0jOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTQwCisjOiBtZXJnZS1yZWN1cnNpdmUuYzoxOTQxCiBtc2dpZCAibWVyZ2UgcmV0dXJuZWQgbm8gY29tbWl0IgogbXNnc3RyICLlkIjlubbmnKrov5Tlm57mj5DkuqQiCiAKLSM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5OTcKKyM6IG1lcmdlLXJlY3Vyc2l2ZS5jOjE5OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHBhcnNlIG9iamVjdCAnJXMnIgogbXNnc3RyICLkuI3og73op6PmnpDlr7nosaEgJyVzJyIKIAotIzogbWVyZ2UtcmVjdXJzaXZlLmM6MjAwOSBidWlsdGluL21lcmdlLmM6NjU4CisjOiBtZXJnZS1yZWN1cnNpdmUuYzoyMDEwIGJ1aWx0aW4vbWVyZ2UuYzo2NzIKIG1zZ2lkICJVbmFibGUgdG8gd3JpdGUgaW5kZXguIgogbXNnc3RyICLkuI3og73lhpnlhaXntKLlvJXjgIIiCiAKLSM6IG9iamVjdC5jOjE5NQorIzogbm90ZXMtdXRpbHMuYzo0MAorbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKK21zZ3N0ciAi5LiN6IO95o+Q5Lqk5pyq5Yid5aeL5YyWL+acquW8leeUqOeahOazqOino+agkSIKKworIzogbm90ZXMtdXRpbHMuYzo4MQorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgbm90ZXMucmV3cml0ZU1vZGUgdmFsdWU6ICclcyciCittc2dzdHIgIuWdj+eahCBub3Rlcy5yZXdyaXRlTW9kZSDlgLzvvJonJXMnIgorCisjOiBub3Rlcy11dGlscy5jOjkxCisjLCBjLWZvcm1hdAorbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgorbXNnc3RyICLmi5Lnu53lkJEgJXPvvIjlnKggcmVmcy9ub3Rlcy8g5LmL5aSW77yJ5YaZ5YWl5rOo6KejIgorCisjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQorIy4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlCisjOiBub3Rlcy11dGlscy5jOjExOAorIywgYy1mb3JtYXQKK21zZ2lkICJCYWQgJXMgdmFsdWU6ICclcyciCittc2dzdHIgIuWdj+eahCAlcyDlgLzvvJonJXMnIgorCisjOiBvYmplY3QuYzoyMDQKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHBhcnNlIG9iamVjdDogJXMiCiBtc2dzdHIgIuS4jeiDveino+aekOWvueixoe+8miVzIgpAQCAtODY5LDE4ICs4OTUsMTggQEAKIG1zZ2lkICInJXMnIGlzIGJleW9uZCBhIHN5bWJvbGljIGxpbmsiCiBtc2dzdHIgIiclcycg5L2N5LqO56ym5Y+36ZO+5o6l5LitIgogCi0jOiByZW1vdGUuYzoxNzgxCisjOiByZW1vdGUuYzoxNzg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGFoZWFkIG9mICclcycgYnkgJWQgY29tbWl0LlxuIgogbXNnaWRfcGx1cmFsICJZb3VyIGJyYW5jaCBpcyBhaGVhZCBvZiAnJXMnIGJ5ICVkIGNvbW1pdHMuXG4iCiBtc2dzdHJbMF0gIuaCqOeahOWIhuaUr+mihuWFiCAnJXMnIOWFsSAlZCDkuKrmj5DkuqTjgIJcbiIKIG1zZ3N0clsxXSAi5oKo55qE5YiG5pSv6aKG5YWIICclcycg5YWxICVkIOS4quaPkOS6pOOAglxuIgogCi0jOiByZW1vdGUuYzoxNzg3CisjOiByZW1vdGUuYzoxNzk0CiBtc2dpZCAiICAodXNlIFwiZ2l0IHB1c2hcIiB0byBwdWJsaXNoIHlvdXIgbG9jYWwgY29tbWl0cylcbiIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgcHVzaFwiIOadpeWPkeW4g+aCqOeahOacrOWcsOaPkOS6pO+8iVxuIgogCi0jOiByZW1vdGUuYzoxNzkwCisjOiByZW1vdGUuYzoxNzk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIllvdXIgYnJhbmNoIGlzIGJlaGluZCAnJXMnIGJ5ICVkIGNvbW1pdCwgYW5kIGNhbiBiZSBmYXN0LWZvcndhcmRlZC5cbiIKIG1zZ2lkX3BsdXJhbCAiIgpAQCAtODg5LDExICs5MTUsMTEgQEAKIG1zZ3N0clsxXSAi5oKo55qE5YiG5pSv6JC95ZCOICclcycg5YWxICVkIOS4quaPkOS6pO+8jOW5tuS4lOWPr+S7peW/q+i/m+OAglxuIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHJlbW90ZS5jOjE3OTgKKyM6IHJlbW90ZS5jOjE4MDUKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIHVwZGF0ZSB5b3VyIGxvY2FsIGJyYW5jaClcbiIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgcHVsbFwiIOadpeabtOaWsOaCqOeahOacrOWcsOWIhuaUr++8iVxuIgogCi0jOiByZW1vdGUuYzoxODAxCisjOiByZW1vdGUuYzoxODA4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJZb3VyIGJyYW5jaCBhbmQgJyVzJyBoYXZlIGRpdmVyZ2VkLFxuIgpAQCAtOTA5LDE4ICs5MzUsMjcgQEAKICLlubbkuJTliIbliKvmnIkgJWQg5ZKMICVkIOWkhOS4jeWQjOeahOaPkOS6pOOAglxuIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHJlbW90ZS5jOjE4MTEKKyM6IHJlbW90ZS5jOjE4MTgKIG1zZ2lkICIgICh1c2UgXCJnaXQgcHVsbFwiIHRvIG1lcmdlIHRoZSByZW1vdGUgYnJhbmNoIGludG8geW91cnMpXG4iCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHB1bGxcIiDmnaXlkIjlubbov5znqIvliIbmlK/vvIlcbiIKIAotIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3NzYgYnVpbHRpbi9tZXJnZS5jOjg4OSBidWlsdGluL21lcmdlLmM6OTk5Ci0jOiBidWlsdGluL21lcmdlLmM6MTAwOQorIzogcnVuLWNvbW1hbmQuYzo4MAorbXNnaWQgIm9wZW4gL2Rldi9udWxsIGZhaWxlZCIKK21zZ3N0ciAi5LiN6IO95omT5byAIC9kZXYvbnVsbCIKKworIzogcnVuLWNvbW1hbmQuYzo4MgorIywgYy1mb3JtYXQKK21zZ2lkICJkdXAyKCVkLCVkKSBmYWlsZWQiCittc2dzdHIgIuS4jeiDveiwg+eUqCBkdXAyKCVkLCVkKSIKKworIzogc2VxdWVuY2VyLmM6MjA2IGJ1aWx0aW4vbWVyZ2UuYzo3OTAgYnVpbHRpbi9tZXJnZS5jOjkwMworIzogYnVpbHRpbi9tZXJnZS5jOjEwMTMgYnVpbHRpbi9tZXJnZS5jOjEwMjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gJyVzJyBmb3Igd3JpdGluZyIKIG1zZ3N0ciAi5LiN6IO95Li65YaZ5YWl5omT5byAICclcyciCiAKLSM6IHNlcXVlbmNlci5jOjIwOCBidWlsdGluL21lcmdlLmM6MzM1IGJ1aWx0aW4vbWVyZ2UuYzo3NzkKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMDAxIGJ1aWx0aW4vbWVyZ2UuYzoxMDE0CisjOiBzZXF1ZW5jZXIuYzoyMDggYnVpbHRpbi9tZXJnZS5jOjM1MCBidWlsdGluL21lcmdlLmM6NzkzCisjOiBidWlsdGluL21lcmdlLmM6MTAxNSBidWlsdGluL21lcmdlLmM6MTAyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gJyVzJyIKIG1zZ3N0ciAi5LiN6IO95YaZ5YWlICclcyciCkBAIC05NDIsNyArOTc3LDcgQEAKICLlhrLnqoHop6PlhrPlrozmr5XlkI7vvIznlKggJ2dpdCBhZGQgPHBhdGhzPicg5oiWICdnaXQgcm0gPHBhdGhzPidcbiIKICLlr7nkv67mraPlkI7nmoTmlofku7blgZrmoIforrDvvIznhLblkI7nlKggJ2dpdCBjb21taXQnIOaPkOS6pCIKIAotIzogc2VxdWVuY2VyLmM6MjQ1IHNlcXVlbmNlci5jOjg1OSBzZXF1ZW5jZXIuYzo5NDIKKyM6IHNlcXVlbmNlci5jOjI0NSBzZXF1ZW5jZXIuYzo4Njkgc2VxdWVuY2VyLmM6OTUyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byAlcyIKIG1zZ3N0ciAi5LiN6IO95YaZ5YWlICVzIgpAQCAtOTY1LDIxNSArMTAwMCwyMzYgQEAKIG1zZ3N0ciAi5o+Q5Lqk5oKo55qE5L+u5pS55oiW5L+d5a2Y6L+b5bqm5ZCO5YaN57un57ut44CCIgogCiAjLiBUUkFOU0xBVE9SUzogJXMgd2lsbCBiZSAicmV2ZXJ0IiBvciAiY2hlcnJ5LXBpY2siCi0jOiBzZXF1ZW5jZXIuYzozMTkKKyM6IHNlcXVlbmNlci5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICIlc++8muaXoOazleWGmeWFpeaWsOe0ouW8leaWh+S7tiIKIAotIzogc2VxdWVuY2VyLmM6MzUwCisjOiBzZXF1ZW5jZXIuYzozNTUKIG1zZ2lkICJDb3VsZCBub3QgcmVzb2x2ZSBIRUFEIGNvbW1pdFxuIgogbXNnc3RyICLkuI3og73op6PmnpAgSEVBRCDmj5DkuqRcbiIKIAotIzogc2VxdWVuY2VyLmM6MzcxCisjOiBzZXF1ZW5jZXIuYzozNzcKIG1zZ2lkICJVbmFibGUgdG8gdXBkYXRlIGNhY2hlIHRyZWVcbiIKIG1zZ3N0ciAi5LiN6IO95pu05paw57yT5a2YXG4iCiAKLSM6IHNlcXVlbmNlci5jOjQxNgorIzogc2VxdWVuY2VyLmM6NDIyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBjb21taXQgJXNcbiIKIG1zZ3N0ciAi5LiN6IO96Kej5p6Q5o+Q5LqkICVzXG4iCiAKLSM6IHNlcXVlbmNlci5jOjQyMQorIzogc2VxdWVuY2VyLmM6NDI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBwYXJzZSBwYXJlbnQgY29tbWl0ICVzXG4iCiBtc2dzdHIgIuS4jeiDveino+aekOeItuaPkOS6pCAlc1xuIgogCi0jOiBzZXF1ZW5jZXIuYzo0ODcKKyM6IHNlcXVlbmNlci5jOjQ5MwogbXNnaWQgIllvdXIgaW5kZXggZmlsZSBpcyB1bm1lcmdlZC4iCiBtc2dzdHIgIuaCqOeahOe0ouW8leaWh+S7tuacquWujOaIkOWQiOW5tuOAgiIKIAotIzogc2VxdWVuY2VyLmM6NTA2CisjOiBzZXF1ZW5jZXIuYzo1MTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGlzIGEgbWVyZ2UgYnV0IG5vIC1tIG9wdGlvbiB3YXMgZ2l2ZW4uIgogbXNnc3RyICLmj5DkuqQgJXMg5piv5LiA5Liq5ZCI5bm25o+Q5Lqk5L2G5pyq5o+Q5L6bIC1tIOmAiemhueOAgiIKIAotIzogc2VxdWVuY2VyLmM6NTE0CisjOiBzZXF1ZW5jZXIuYzo1MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGRvZXMgbm90IGhhdmUgcGFyZW50ICVkIgogbXNnc3RyICLmj5DkuqQgJXMg5rKh5pyJ54i25o+Q5LqkICVkIgogCi0jOiBzZXF1ZW5jZXIuYzo1MTgKKyM6IHNlcXVlbmNlci5jOjUyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWlubGluZSB3YXMgc3BlY2lmaWVkIGJ1dCBjb21taXQgJXMgaXMgbm90IGEgbWVyZ2UuIgogbXNnc3RyICLmjIflrprkuobkuLvnur/kvYbmj5DkuqQgJXMg5LiN5piv5LiA5Liq5ZCI5bm244CCIgogCiAjLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIHdpbGwgYmUgInJldmVydCIgb3IKICMuICJjaGVycnktcGljayIsIHRoZSBzZWNvbmQgJXMgYSBTSEExCi0jOiBzZXF1ZW5jZXIuYzo1MzEKKyM6IHNlcXVlbmNlci5jOjUzNwogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogY2Fubm90IHBhcnNlIHBhcmVudCBjb21taXQgJXMiCiBtc2dzdHIgIiVz77ya5LiN6IO96Kej5p6Q54i25o+Q5LqkICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo1MzUKKyM6IHNlcXVlbmNlci5jOjU0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZ2V0IGNvbW1pdCBtZXNzYWdlIGZvciAlcyIKIG1zZ3N0ciAi5LiN6IO95b6X5YiwICVzIOeahOaPkOS6pOivtOaYjiIKIAotIzogc2VxdWVuY2VyLmM6NjIxCisjOiBzZXF1ZW5jZXIuYzo2MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IHJldmVydCAlcy4uLiAlcyIKIG1zZ3N0ciAi5LiN6IO96L+Y5Y6fICVzLi4uICVzIgogCi0jOiBzZXF1ZW5jZXIuYzo2MjIKKyM6IHNlcXVlbmNlci5jOjYyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgYXBwbHkgJXMuLi4gJXMiCiBtc2dzdHIgIuS4jeiDveW6lOeUqCAlcy4uLiAlcyIKIAotIzogc2VxdWVuY2VyLmM6NjU0CisjOiBzZXF1ZW5jZXIuYzo2NjQKIG1zZ2lkICJlbXB0eSBjb21taXQgc2V0IHBhc3NlZCIKIG1zZ3N0ciAi5o+Q5L6b5LqG56m655qE5o+Q5Lqk6ZuGIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjIKKyM6IHNlcXVlbmNlci5jOjY3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVz77ya5peg5rOV6K+75Y+W57Si5byVIgogCi0jOiBzZXF1ZW5jZXIuYzo2NjcKKyM6IHNlcXVlbmNlci5jOjY3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgJXM6IGZhaWxlZCB0byByZWZyZXNoIHRoZSBpbmRleCIKIG1zZ3N0ciAiZ2l0ICVz77ya5peg5rOV5Yi35paw57Si5byVIgogCi0jOiBzZXF1ZW5jZXIuYzo3MjUKKyM6IHNlcXVlbmNlci5jOjczNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgJXMgZHVyaW5nIGEgJXMiCiBtc2dzdHIgIuaXoOazlSAlcyDlnKjkuIDkuKogJXMg6L+H56iL5LitIgogCi0jOiBzZXF1ZW5jZXIuYzo3NDcKKyM6IHNlcXVlbmNlci5jOjc1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2UgbGluZSAlZC4iCiBtc2dzdHIgIuS4jeiDveino+aekOesrCAlZCDooYzjgIIiCiAKLSM6IHNlcXVlbmNlci5jOjc1MgorIzogc2VxdWVuY2VyLmM6NzYyCiBtc2dpZCAiTm8gY29tbWl0cyBwYXJzZWQuIgogbXNnc3RyICLmsqHmnInmj5DkuqTooqvop6PmnpDjgIIiCiAKLSM6IHNlcXVlbmNlci5jOjc2NQorIzogc2VxdWVuY2VyLmM6Nzc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICVzIgogbXNnc3RyICLkuI3og73miZPlvIAgJXMiCiAKLSM6IHNlcXVlbmNlci5jOjc2OQorIzogc2VxdWVuY2VyLmM6Nzc5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkICVzLiIKIG1zZ3N0ciAi5LiN6IO96K+75Y+WICVz44CCIgogCi0jOiBzZXF1ZW5jZXIuYzo3NzYKKyM6IHNlcXVlbmNlci5jOjc4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJVbnVzYWJsZSBpbnN0cnVjdGlvbiBzaGVldDogJXMiCiBtc2dzdHIgIuaXoOeUqOeahOaMh+S7pOihqOWNle+8miVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDQKKyM6IHNlcXVlbmNlci5jOjgxNAogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIGtleTogJXMiCiBtc2dzdHIgIuaXoOaViOmUruWQje+8miVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MDcKKyM6IHNlcXVlbmNlci5jOjgxNwogIywgYy1mb3JtYXQKIG1zZ2lkICJJbnZhbGlkIHZhbHVlIGZvciAlczogJXMiCiBtc2dzdHIgIiVzIOeahOWAvOaXoOaViO+8miVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4MTkKKyM6IHNlcXVlbmNlci5jOjgyOQogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgb3B0aW9ucyBzaGVldDogJXMiCiBtc2dzdHIgIumdnuazleeahOmAiemhueihqOWNle+8miVzIgogCi0jOiBzZXF1ZW5jZXIuYzo4NDAKKyM6IHNlcXVlbmNlci5jOjg1MAogbXNnaWQgImEgY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MiCiBtc2dzdHIgIuS4gOS4quaLo+mAieaIlui/mOWOn+aTjeS9nOW3suWcqOi/m+ihjCIKIAotIzogc2VxdWVuY2VyLmM6ODQxCisjOiBzZXF1ZW5jZXIuYzo4NTEKIG1zZ2lkICJ0cnkgXCJnaXQgY2hlcnJ5LXBpY2sgKC0tY29udGludWUgfCAtLXF1aXQgfCAtLWFib3J0KVwiIgogbXNnc3RyICLlsJ3or5UgXCJnaXQgY2hlcnJ5LXBpY2sgKC0tY29udGludWUgfCAtLXF1aXQgfCAtLWFib3J0KVwiIgogCi0jOiBzZXF1ZW5jZXIuYzo4NDUKKyM6IHNlcXVlbmNlci5jOjg1NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIHNlcXVlbmNlciBkaXJlY3RvcnkgJXMiCiBtc2dzdHIgIuS4jeiDveWIm+W7uuW6j+WIl+ebruW9lSAlcyIKIAotIzogc2VxdWVuY2VyLmM6ODYxIHNlcXVlbmNlci5jOjk0NgorIzogc2VxdWVuY2VyLmM6ODcxIHNlcXVlbmNlci5jOjk1NgogIywgYy1mb3JtYXQKIG1zZ2lkICJFcnJvciB3cmFwcGluZyB1cCAlcy4iCiBtc2dzdHIgIumUmeivr+aUtuWwviAlc+OAgiIKIAotIzogc2VxdWVuY2VyLmM6ODgwIHNlcXVlbmNlci5jOjEwMTQKKyM6IHNlcXVlbmNlci5jOjg5MCBzZXF1ZW5jZXIuYzoxMDI0CiBtc2dpZCAibm8gY2hlcnJ5LXBpY2sgb3IgcmV2ZXJ0IGluIHByb2dyZXNzIgogbXNnc3RyICLmi6PpgInmiJbov5jljp/mk43kvZzlubbmnKrov5vooYwiCiAKLSM6IHNlcXVlbmNlci5jOjg4MgorIzogc2VxdWVuY2VyLmM6ODkyCiBtc2dpZCAiY2Fubm90IHJlc29sdmUgSEVBRCIKIG1zZ3N0ciAi5LiN6IO96Kej5p6QIEhFQUQiCiAKLSM6IHNlcXVlbmNlci5jOjg4NAorIzogc2VxdWVuY2VyLmM6ODk0CiBtc2dpZCAiY2Fubm90IGFib3J0IGZyb20gYSBicmFuY2ggeWV0IHRvIGJlIGJvcm4iCiBtc2dzdHIgIuS4jeiDveS7juWwmuacquW7uueri+eahOWIhuaUr+e7iOatoiIKIAotIzogc2VxdWVuY2VyLmM6OTA2IGJ1aWx0aW4vYXBwbHkuYzo0MDYwCisjOiBzZXF1ZW5jZXIuYzo5MTYgYnVpbHRpbi9hcHBseS5jOjQwNjEKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IG9wZW4gJXM6ICVzIgogbXNnc3RyICLkuI3og73miZPlvIAgJXPvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6OTA5CisjOiBzZXF1ZW5jZXIuYzo5MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgJXM6ICVzIgogbXNnc3RyICLkuI3og73or7vlj5YgJXPvvJolcyIKIAotIzogc2VxdWVuY2VyLmM6OTEwCisjOiBzZXF1ZW5jZXIuYzo5MjAKIG1zZ2lkICJ1bmV4cGVjdGVkIGVuZCBvZiBmaWxlIgogbXNnc3RyICLmhI/lpJbnmoTmlofku7bnu5PmnZ8iCiAKLSM6IHNlcXVlbmNlci5jOjkxNgorIzogc2VxdWVuY2VyLmM6OTI2CiAjLCBjLWZvcm1hdAogbXNnaWQgInN0b3JlZCBwcmUtY2hlcnJ5LXBpY2sgSEVBRCBmaWxlICclcycgaXMgY29ycnVwdCIKIG1zZ3N0ciAi5L+d5a2Y5ouj6YCJ5o+Q5Lqk5YmN55qEIEhFQUQg5paH5Lu2ICclcycg5o2f5Z2PIgogCi0jOiBzZXF1ZW5jZXIuYzo5MzkKKyM6IHNlcXVlbmNlci5jOjk0OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZm9ybWF0ICVzLiIKIG1zZ3N0ciAi5LiN6IO95qC85byP5YyWICVz44CCIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDgzCisjOiBzZXF1ZW5jZXIuYzoxMDkyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBjYW4ndCBjaGVycnktcGljayBhICVzIgogbXNnc3RyICIlc++8muS4jeiDveaLo+mAieS4gOS4qiVzIgogCi0jOiBzZXF1ZW5jZXIuYzoxMDg1CisjOiBzZXF1ZW5jZXIuYzoxMDk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBiYWQgcmV2aXNpb24iCiBtc2dzdHIgIiVz77ya6ZSZ6K+v55qE54mI5pysIgogCi0jOiBzZXF1ZW5jZXIuYzoxMTE5CisjOiBzZXF1ZW5jZXIuYzoxMTI5CiBtc2dpZCAiQ2FuJ3QgcmV2ZXJ0IGFzIGluaXRpYWwgY29tbWl0IgogbXNnc3RyICLkuI3og73kvZzkuLrliJ3lp4vmj5DkuqTov5jljp8iCiAKLSM6IHNlcXVlbmNlci5jOjExMjAKKyM6IHNlcXVlbmNlci5jOjExMzAKIG1zZ2lkICJDYW4ndCBjaGVycnktcGljayBpbnRvIGVtcHR5IGhlYWQiCiBtc2dzdHIgIuS4jeiDveaLo+mAieWIsOepuuWIhuaUryIKIAotIzogc2hhMV9uYW1lLmM6MTAzNgorIzogc2hhMV9uYW1lLmM6NDQwCittc2dpZCAiIgorIkdpdCBub3JtYWxseSBuZXZlciBjcmVhdGVzIGEgcmVmIHRoYXQgZW5kcyB3aXRoIDQwIGhleCBjaGFyYWN0ZXJzXG4iCisiYmVjYXVzZSBpdCB3aWxsIGJlIGlnbm9yZWQgd2hlbiB5b3UganVzdCBzcGVjaWZ5IDQwLWhleC4gVGhlc2UgcmVmc1xuIgorIm1heSBiZSBjcmVhdGVkIGJ5IG1pc3Rha2UuIEZvciBleGFtcGxlLFxuIgorIlxuIgorIiAgZ2l0IGNoZWNrb3V0IC1iICRiciAkKGdpdCByZXYtcGFyc2UgLi4uKVxuIgorIlxuIgorIndoZXJlIFwiJGJyXCIgaXMgc29tZWhvdyBlbXB0eSBhbmQgYSA0MC1oZXggcmVmIGlzIGNyZWF0ZWQuIFBsZWFzZVxuIgorImV4YW1pbmUgdGhlc2UgcmVmcyBhbmQgbWF5YmUgZGVsZXRlIHRoZW0uIFR1cm4gdGhpcyBtZXNzYWdlIG9mZiBieVxuIgorInJ1bm5pbmcgXCJnaXQgY29uZmlnIGFkdmljZS5vYmplY3RfbmFtZV93YXJuaW5nIGZhbHNlXCIiCittc2dzdHIgIiIKKyJHaXQg6YCa5bi45LiN5Lya5Yib5bu65LiA5Liq5LulNDDkvY3ljYHlha3ov5vliLblrZfnrKblkb3lkI3nmoTlvJXnlKjvvIzlm6DkuLrlvZPkvaDmj5Dkvps0MOS9jVxuIgorIuWNgeWFrei/m+WItuWtl+espuaXtuWwhuiiq+W/veeVpeOAguS4jei/h+i/meS6m+W8leeUqOS5n+WPr+iDveiiq+mUmeivr+WcsOWIm+W7uuOAguS+i+Wmgu+8mlxuIgorIlxuIgorIiAgZ2l0IGNoZWNrb3V0IC1iICRiciAkKGdpdCByZXYtcGFyc2UgLi4uKVxuIgorIlxuIgorIuW9kyBcIiRiclwiIOepuueZveaXtuS4gOS4qjQw5L2N5Y2B5YWt6L+b5Yi255qE5byV55So5bCG6KKr5Yib5bu644CC6K+35qOA5p+l6L+Z5Lqb5byV55So77yMXG4iCisi5Y+v6IO96ZyA6KaB5Yig6Zmk5a6D5Lus44CC55SoIFwiZ2l0IGNvbmZpZyBhZHZpY2Uub2JqZWN0X25hbWVfd2FybmluZyBmYWxzZVwiIgorIuWRveS7pOWFs+mXreacrOa2iOaBr+mAmuefpeOAgiIKKworIzogc2hhMV9uYW1lLmM6MTA5NwogbXNnaWQgIkhFQUQgZG9lcyBub3QgcG9pbnQgdG8gYSBicmFuY2giCiBtc2dzdHIgIkhFQUQg5rKh5pyJ5oyH5ZCR5LiA5Liq5YiG5pSvIgogCi0jOiBzaGExX25hbWUuYzoxMDM5CisjOiBzaGExX25hbWUuYzoxMTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHN1Y2ggYnJhbmNoOiAnJXMnIgogbXNnc3RyICLmsqHmnInmraTliIbmlK/vvJonJXMnIgogCi0jOiBzaGExX25hbWUuYzoxMDQxCisjOiBzaGExX25hbWUuYzoxMTAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vIHVwc3RyZWFtIGNvbmZpZ3VyZWQgZm9yIGJyYW5jaCAnJXMnIgogbXNnc3RyICLlsJrmnKrnu5nliIbmlK8gJyVzJyDorr7nva7kuIrmuLgiCiAKLSM6IHNoYTFfbmFtZS5jOjEwNDQKKyM6IHNoYTFfbmFtZS5jOjExMDYKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXBzdHJlYW0gYnJhbmNoICclcycgbm90IHN0b3JlZCBhcyBhIHJlbW90ZS10cmFja2luZyBicmFuY2giCiBtc2dzdHIgIuS4iua4uOWIhuaUryAnJXMnIOayoeacieWtmOWCqOS4uuS4gOS4qui/nOeoi+i3n+i4quWIhuaUryIKQEAgLTExODMsMTgxICsxMjM5LDE4MSBAQAogbXNnaWQgInVuYWJsZSB0byBhY2Nlc3MgJyVzJzogJXMiCiBtc2dzdHIgIuS4jeiDveiuv+mXriAnJXMn77yaJXMiCiAKLSM6IHdyYXBwZXIuYzo0MjMKKyM6IHdyYXBwZXIuYzo0MjkKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFjY2VzcyAnJXMnIgogbXNnc3RyICLkuI3og73orr/pl64gJyVzJyIKIAotIzogd3JhcHBlci5jOjQzNAorIzogd3JhcHBlci5jOjQ0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gbG9vayB1cCBjdXJyZW50IHVzZXIgaW4gdGhlIHBhc3N3ZCBmaWxlOiAlcyIKIG1zZ3N0ciAi5peg5rOV5Zyo5Y+j5Luk5paH5Lu25Lit5p+l6K+i5Yiw5b2T5YmN55So5oi377yaJXMiCiAKLSM6IHdyYXBwZXIuYzo0MzUKKyM6IHdyYXBwZXIuYzo0NDEKIG1zZ2lkICJubyBzdWNoIHVzZXIiCiBtc2dzdHIgIuaXoOatpOeUqOaItyIKIAotIzogd3Qtc3RhdHVzLmM6MTQwCisjOiB3dC1zdGF0dXMuYzoxNDEKIG1zZ2lkICJVbm1lcmdlZCBwYXRoczoiCiBtc2dzdHIgIuacquWQiOW5tueahOi3r+W+hO+8miIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxNjcgd3Qtc3RhdHVzLmM6MTk0CisjOiB3dC1zdGF0dXMuYzoxNjggd3Qtc3RhdHVzLmM6MTk1CiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgKHVzZSBcImdpdCByZXNldCAlcyA8ZmlsZT4uLi5cIiB0byB1bnN0YWdlKSIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgcmVzZXQgJXMgPGZpbGU+Li4uXCIg5pKk5Ye65pqC5a2Y5Yy677yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjE2OSB3dC1zdGF0dXMuYzoxOTYKKyM6IHd0LXN0YXR1cy5jOjE3MCB3dC1zdGF0dXMuYzoxOTcKIG1zZ2lkICIgICh1c2UgXCJnaXQgcm0gLS1jYWNoZWQgPGZpbGU+Li4uXCIgdG8gdW5zdGFnZSkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJtIC0tY2FjaGVkIDxmaWxlPi4uLlwiIOaSpOWHuuaaguWtmOWMuu+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxNzMKKyM6IHd0LXN0YXR1cy5jOjE3NAogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gbWFyayByZXNvbHV0aW9uKSIKIG1zZ3N0ciAiICDvvIjkvb/nlKggXCJnaXQgYWRkIDxmaWxlPi4uLlwiIOagh+iusOino+WGs+aWueahiO+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoxNzUgd3Qtc3RhdHVzLmM6MTc5CisjOiB3dC1zdGF0dXMuYzoxNzYgd3Qtc3RhdHVzLmM6MTgwCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiBhcyBhcHByb3ByaWF0ZSB0byBtYXJrIHJlc29sdXRpb24pIgogbXNnc3RyICIgIO+8iOmFjOaDheS9v+eUqCBcImdpdCBhZGQvcm0gPGZpbGU+Li4uXCIg5qCH6K6w6Kej5Yaz5pa55qGI77yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjE3NworIzogd3Qtc3RhdHVzLmM6MTc4CiBtc2dpZCAiICAodXNlIFwiZ2l0IHJtIDxmaWxlPi4uLlwiIHRvIG1hcmsgcmVzb2x1dGlvbikiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJtIDxmaWxlPi4uLlwiIOagh+iusOino+WGs+aWueahiO+8iSIKIAotIzogd3Qtc3RhdHVzLmM6MTg4CisjOiB3dC1zdGF0dXMuYzoxODkKIG1zZ2lkICJDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoiCiBtc2dzdHIgIuimgeaPkOS6pOeahOWPmOabtO+8miIKIAotIzogd3Qtc3RhdHVzLmM6MjA2CisjOiB3dC1zdGF0dXMuYzoyMDcKIG1zZ2lkICJDaGFuZ2VzIG5vdCBzdGFnZWQgZm9yIGNvbW1pdDoiCiBtc2dzdHIgIuWwmuacquaaguWtmOS7peWkh+aPkOS6pOeahOWPmOabtO+8miIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoyMTAKKyM6IHd0LXN0YXR1cy5jOjIxMQogbXNnaWQgIiAgKHVzZSBcImdpdCBhZGQgPGZpbGU+Li4uXCIgdG8gdXBkYXRlIHdoYXQgd2lsbCBiZSBjb21taXR0ZWQpIgogbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBhZGQgPGZpbGU+Li4uXCIg5pu05paw6KaB5o+Q5Lqk55qE5YaF5a6577yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjIxMgorIzogd3Qtc3RhdHVzLmM6MjEzCiBtc2dpZCAiICAodXNlIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiB0byB1cGRhdGUgd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGFkZC9ybSA8ZmlsZT4uLi5cIiDmm7TmlrDopoHmj5DkuqTnmoTlhoXlrrnvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MjEzCisjOiB3dC1zdGF0dXMuYzoyMTQKIG1zZ2lkICIiCiAiICAodXNlIFwiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLlwiIHRvIGRpc2NhcmQgY2hhbmdlcyBpbiB3b3JraW5nIGRpcmVjdG9yeSkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGNoZWNrb3V0IC0tIDxmaWxlPi4uLlwiIOS4ouW8g+W3peS9nOWMuueahOaUueWKqO+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzoyMTUKKyM6IHd0LXN0YXR1cy5jOjIxNgogbXNnaWQgIiAgKGNvbW1pdCBvciBkaXNjYXJkIHRoZSB1bnRyYWNrZWQgb3IgbW9kaWZpZWQgY29udGVudCBpbiBzdWJtb2R1bGVzKSIKIG1zZ3N0ciAiICDvvIjmj5DkuqTmiJbkuKLlvIPlrZDmqKHnu4TkuK3mnKrot5/ouKrmiJbkv67mlLnnmoTlhoXlrrnvvIkiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MjI3CisjOiB3dC1zdGF0dXMuYzoyMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiICAodXNlIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIHRvIGluY2x1ZGUgaW4gd2hhdCB3aWxsIGJlIGNvbW1pdHRlZCkiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0ICVzIDxmaWxlPi4uLlwiIOS7peWMheWQq+imgeaPkOS6pOeahOWGheWuue+8iSIKIAotIzogd3Qtc3RhdHVzLmM6MjQ0CisjOiB3dC1zdGF0dXMuYzoyNDUKIG1zZ2lkICJidWciCiBtc2dzdHIgImJ1ZyIKIAotIzogd3Qtc3RhdHVzLmM6MjQ5CisjOiB3dC1zdGF0dXMuYzoyNTAKIG1zZ2lkICJib3RoIGRlbGV0ZWQ6IgogbXNnc3RyICLlj4zmlrnliKDpmaTvvJoiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MAorIzogd3Qtc3RhdHVzLmM6MjUxCiBtc2dpZCAiYWRkZWQgYnkgdXM6IgogbXNnc3RyICLnlLHmiJHku6zmt7vliqDvvJoiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MQorIzogd3Qtc3RhdHVzLmM6MjUyCiBtc2dpZCAiZGVsZXRlZCBieSB0aGVtOiIKIG1zZ3N0ciAi55Sx5LuW5Lus5Yig6Zmk77yaIgogCi0jOiB3dC1zdGF0dXMuYzoyNTIKKyM6IHd0LXN0YXR1cy5jOjI1MwogbXNnaWQgImFkZGVkIGJ5IHRoZW06IgogbXNnc3RyICLnlLHku5bku6zmt7vliqDvvJoiCiAKLSM6IHd0LXN0YXR1cy5jOjI1MworIzogd3Qtc3RhdHVzLmM6MjU0CiBtc2dpZCAiZGVsZXRlZCBieSB1czoiCiBtc2dzdHIgIueUseaIkeS7rOWIoOmZpO+8miIKIAotIzogd3Qtc3RhdHVzLmM6MjU0CisjOiB3dC1zdGF0dXMuYzoyNTUKIG1zZ2lkICJib3RoIGFkZGVkOiIKIG1zZ3N0ciAi5Y+M5pa55re75Yqg77yaIgogCi0jOiB3dC1zdGF0dXMuYzoyNTUKKyM6IHd0LXN0YXR1cy5jOjI1NgogbXNnaWQgImJvdGggbW9kaWZpZWQ6IgogbXNnc3RyICLlj4zmlrnkv67mlLnvvJoiCiAKICMgIOivkeiAhe+8muacq+WwvuS4pOS4quWtl+iKguWPr+iDveiiq+WIoOWHj++8jOWmguaenOe/u+ivkeS4uuS4reaWh+agh+eCueS8muWHuueOsOWNiuS4quaxieWtlwotIzogd3Qtc3RhdHVzLmM6Mjg1CisjOiB3dC1zdGF0dXMuYzoyODYKIG1zZ2lkICJuZXcgY29tbWl0cywgIgogbXNnc3RyICLmlrDmj5DkuqQsICIKIAogIyAg6K+R6ICF77ya5pyr5bC+5Lik5Liq5a2X6IqC5Y+v6IO96KKr5Yig5YeP77yM5aaC5p6c57+76K+R5Li65Lit5paH5qCH54K55Lya5Ye6546w5Y2K5Liq5rGJ5a2XCi0jOiB3dC1zdGF0dXMuYzoyODcKKyM6IHd0LXN0YXR1cy5jOjI4OAogbXNnaWQgIm1vZGlmaWVkIGNvbnRlbnQsICIKIG1zZ3N0ciAi5L+u5pS555qE5YaF5a65LCAiCiAKICMgIOivkeiAhe+8muacq+WwvuS4pOS4quWtl+iKguWPr+iDveiiq+WIoOWHj++8jOWmguaenOe/u+ivkeS4uuS4reaWh+agh+eCueS8muWHuueOsOWNiuS4quaxieWtlwotIzogd3Qtc3RhdHVzLmM6Mjg5CisjOiB3dC1zdGF0dXMuYzoyOTAKIG1zZ2lkICJ1bnRyYWNrZWQgY29udGVudCwgIgogbXNnc3RyICLmnKrot5/ouKrnmoTlhoXlrrksICIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiB3dC1zdGF0dXMuYzozMDYKKyM6IHd0LXN0YXR1cy5jOjMwNwogIywgYy1mb3JtYXQKIG1zZ2lkICJuZXcgZmlsZTogICAlcyIKIG1zZ3N0ciAi5paw5paH5Lu277yaICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjMwOQorIzogd3Qtc3RhdHVzLmM6MzEwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNvcGllZDogICAgICVzIC0+ICVzIgogbXNnc3RyICLmi7fotJ3vvJogICAgICAlcyAtPiAlcyIKIAogIyAg6K+R6ICF77ya5Li65L+d6K+B5Zyo6L6T5Ye65Lit5a+56b2Q77yM5rOo5oSP6LCD5pW05Y+l5Lit56m65qC877yBCi0jOiB3dC1zdGF0dXMuYzozMTIKKyM6IHd0LXN0YXR1cy5jOjMxMwogIywgYy1mb3JtYXQKIG1zZ2lkICJkZWxldGVkOiAgICAlcyIKIG1zZ3N0ciAi5Yig6Zmk77yaICAgICAgJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MzE1CisjOiB3dC1zdGF0dXMuYzozMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAibW9kaWZpZWQ6ICAgJXMiCiBtc2dzdHIgIuS/ruaUue+8miAgICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjMxOAorIzogd3Qtc3RhdHVzLmM6MzE5CiAjLCBjLWZvcm1hdAogbXNnaWQgInJlbmFtZWQ6ICAgICVzIC0+ICVzIgogbXNnc3RyICLph43lkb3lkI3vvJogICAgJXMgLT4gJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MzIxCisjOiB3dC1zdGF0dXMuYzozMjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidHlwZWNoYW5nZTogJXMiCiBtc2dzdHIgIuexu+Wei+WPmOabtO+8miAgJXMiCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogd3Qtc3RhdHVzLmM6MzI0CisjOiB3dC1zdGF0dXMuYzozMjUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5rbm93bjogICAgJXMiCiBtc2dzdHIgIuacquefpe+8miAgICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IHd0LXN0YXR1cy5jOjMyNworIzogd3Qtc3RhdHVzLmM6MzI4CiAjLCBjLWZvcm1hdAogbXNnaWQgInVubWVyZ2VkOiAgICVzIgogbXNnc3RyICLmnKrlkIjlubbvvJogICAgJXMiCiAKLSM6IHd0LXN0YXR1cy5jOjMzMAorIzogd3Qtc3RhdHVzLmM6MzMxCiAjLCBjLWZvcm1hdAogbXNnaWQgImJ1ZzogdW5oYW5kbGVkIGRpZmYgc3RhdHVzICVjIgogbXNnc3RyICJidWfvvJrmnKrlpITnkIbnmoTlt67lvILnirbmgIEgJWMiCkBAIC0xMzY3LDcgKzE0MjMsNyBAQAogbXNnc3RyICLmgqjmnInlsJrmnKrlkIjlubbnmoTot6/lvoTjgIIiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6ODA2IHd0LXN0YXR1cy5jOjk1OAorIzogd3Qtc3RhdHVzLmM6ODA2CiBtc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNvbW1pdFwiKSIKIG1zZ3N0ciAiICDvvIjop6PlhrPlhrLnqoHlubbov5DooYwgXCJnaXQgY29tbWl0XCLvvIkiCiAKQEAgLTEzOTAsOCArMTQ0Niw4IEBACiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAogIzogd3Qtc3RhdHVzLmM6ODI5Ci1tc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gXCJnaXQgYW0gLS1yZXNvbHZlZFwiKSIKLW1zZ3N0ciAiICDvvIjop6PlhrPlhrLnqoHvvIznhLblkI7ov5DooYwgXCJnaXQgYW0gLS1yZXNvbHZlZFwi77yJIgorbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tY29udGludWVcIikiCittc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB77yM54S25ZCO6L+Q6KGMIFwiZ2l0IGFtIC0tY29udGludWVcIu+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CiAjOiB3dC1zdGF0dXMuYzo4MzEKQEAgLTE0NzIsNDEgKzE1MjgsNTEgQEAKIG1zZ3N0ciAi5oKo5q2j5Zyo5YGa5ouj6YCJ5pON5L2c44CCIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjk2MQotbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjb21taXRcIikiCi1tc2dzdHIgIiAg77yI6Kej5Yaz5omA5pyJ5Yay56qB5ZCO77yM5omn6KGMIFwiZ2l0IGNvbW1pdFwi77yJIgorIzogd3Qtc3RhdHVzLmM6OTU4Cittc2dpZCAiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNoZXJyeS1waWNrIC0tY29udGludWVcIikiCittc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB5bm26L+Q6KGMIFwiZ2l0IGNoZXJyeS1waWNrIC0tY29udGludWVcIu+8iSIKIAotIzogd3Qtc3RhdHVzLmM6OTcwCisjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKKyM6IHd0LXN0YXR1cy5jOjk2MQorbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlXCIpIgorbXNnc3RyICIgIO+8iOaJgOacieWGsueqgeW3suino+WGs++8mui/kOihjCBcImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlXCLvvIkiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorIzogd3Qtc3RhdHVzLmM6OTYzCittc2dpZCAiICAodXNlIFwiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIGNoZXJyeS1waWNrIG9wZXJhdGlvbikiCittc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnRcIiDku6Xlj5bmtojmi6PpgInmk43kvZzvvIkiCisKKyM6IHd0LXN0YXR1cy5jOjk3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSByZXZlcnRpbmcgY29tbWl0ICVzLiIKIG1zZ3N0ciAi5oKo5q2j5Zyo5Y+N6L2s5o+Q5LqkICVzIOOAgiIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzo5NzUKKyM6IHd0LXN0YXR1cy5jOjk3NwogbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiICDvvIjop6PlhrPlhrLnqoHlubbov5DooYwgXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIu+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzo5NzgKKyM6IHd0LXN0YXR1cy5jOjk4MAogbXNnaWQgIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCByZXZlcnQgLS1jb250aW51ZVwiKSIKIG1zZ3N0ciAiICDvvIjmiYDmnInlhrLnqoHlt7Lop6PlhrPvvJrov5DooYwgXCJnaXQgcmV2ZXJ0IC0tY29udGludWVcIu+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiB3dC1zdGF0dXMuYzo5ODAKKyM6IHd0LXN0YXR1cy5jOjk4MgogbXNnaWQgIiAgKHVzZSBcImdpdCByZXZlcnQgLS1hYm9ydFwiIHRvIGNhbmNlbCB0aGUgcmV2ZXJ0IG9wZXJhdGlvbikiCiBtc2dzdHIgIiAg77yI5L2/55SoIFwiZ2l0IHJldmVydCAtLWFib3J0XCIg5Lul5Y+W5raI5Y+N6L2s5o+Q5Lqk5pON5L2c77yJIgogCi0jOiB3dC1zdGF0dXMuYzo5OTEKKyM6IHd0LXN0YXR1cy5jOjk5MwogIywgYy1mb3JtYXQKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcsIHN0YXJ0ZWQgZnJvbSBicmFuY2ggJyVzJy4iCiBtc2dzdHIgIuaCqOato+WcqOS7juWIhuaUryAnJXMnIOW8gOWni+WBmuS6jOWIhuafpeaJvuOAgiIKIAotIzogd3Qtc3RhdHVzLmM6OTk1CisjOiB3dC1zdGF0dXMuYzo5OTcKIG1zZ2lkICJZb3UgYXJlIGN1cnJlbnRseSBiaXNlY3RpbmcuIgogbXNnc3RyICLmgqjmraPlnKjlgZrkuozliIbmn6Xmib7jgIIiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6OTk4CisjOiB3dC1zdGF0dXMuYzoxMDAwCiBtc2dpZCAiICAodXNlIFwiZ2l0IGJpc2VjdCByZXNldFwiIHRvIGdldCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBicmFuY2gpIgogbXNnc3RyICIgIO+8iOS9v+eUqCBcImdpdCBiaXNlY3QgcmVzZXRcIiDku6Xlm57liLDljp/mnInliIbmlK/vvIkiCiAKQEAgLTE1MTQsMzEgKzE1ODAsMzUgQEAKIG1zZ2lkICJPbiBicmFuY2ggIgogbXNnc3RyICLkvY3kuo7liIbmlK8gIgogCi0jOiB3dC1zdGF0dXMuYzoxMTg0CisjOiB3dC1zdGF0dXMuYzoxMTgwCittc2dpZCAicmViYXNlIGluIHByb2dyZXNzOyBvbnRvICIKK21zZ3N0ciAi5Y+Y5Z+65q2j5Zyo6L+b6KGM5Lit77yb6IezICIKKworIzogd3Qtc3RhdHVzLmM6MTE4NwogbXNnaWQgIkhFQUQgZGV0YWNoZWQgYXQgIgogbXNnc3RyICLlpLTmjIfpkojliIbnprvkuo4gIgogCi0jOiB3dC1zdGF0dXMuYzoxMTg2CisjOiB3dC1zdGF0dXMuYzoxMTg5CiBtc2dpZCAiSEVBRCBkZXRhY2hlZCBmcm9tICIKIG1zZ3N0ciAi5aS05oyH6ZKI5YiG56a76IeqICIKIAotIzogd3Qtc3RhdHVzLmM6MTE4OQorIzogd3Qtc3RhdHVzLmM6MTE5MgogbXNnaWQgIk5vdCBjdXJyZW50bHkgb24gYW55IGJyYW5jaC4iCiBtc2dzdHIgIuW9k+WJjeS4jeWcqOS7u+S9leWIhuaUr+S4iuOAgiIKIAotIzogd3Qtc3RhdHVzLmM6MTIwNgorIzogd3Qtc3RhdHVzLmM6MTIwOQogbXNnaWQgIkluaXRpYWwgY29tbWl0IgogbXNnc3RyICLliJ3lp4vmj5DkuqQiCiAKLSM6IHd0LXN0YXR1cy5jOjEyMjAKKyM6IHd0LXN0YXR1cy5jOjEyMjMKIG1zZ2lkICJVbnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIuacqui3n+i4queahOaWh+S7tiIKIAotIzogd3Qtc3RhdHVzLmM6MTIyMgorIzogd3Qtc3RhdHVzLmM6MTIyNQogbXNnaWQgIklnbm9yZWQgZmlsZXMiCiBtc2dzdHIgIuW/veeVpeeahOaWh+S7tiIKIAotIzogd3Qtc3RhdHVzLmM6MTIyNgorIzogd3Qtc3RhdHVzLmM6MTIyOQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiSXQgdG9vayAlLjJmIHNlY29uZHMgdG8gZW51bWVyYXRlIHVudHJhY2tlZCBmaWxlcy4gJ3N0YXR1cyAtdW5vJ1xuIgpAQCAtMTU0OCw5MCArMTYxOCw5MCBAQAogIuiAl+i0ueS6hiAlLjJmIOenkuS7peaemuS4vuacqui3n+i4queahOaWh+S7tuOAgidzdGF0dXMgLXVubycg5Lmf6K646IO95o+Q6auY6YCf5bqm77yMXG4iCiAi5L2G5oKo6ZyA6KaB5bCP5b+D5LiN6KaB5b+Y5LqG5re75Yqg5paw5paH5Lu277yI5Y+C6KeBICdnaXQgaGVscCBzdGF0dXMn77yJ44CCIgogCi0jOiB3dC1zdGF0dXMuYzoxMjMyCisjOiB3dC1zdGF0dXMuYzoxMjM1CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVudHJhY2tlZCBmaWxlcyBub3QgbGlzdGVkJXMiCiBtc2dzdHIgIuacqui3n+i4queahOaWh+S7tuayoeacieWIl+WHuiVzIgogCiAjICDor5HogIXvvJrkuK3mloflrZfnrKbkuLLmi7zmjqXvvIzlj6/liKDpmaTliY3lr7znqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjEyMzQKKyM6IHd0LXN0YXR1cy5jOjEyMzcKIG1zZ2lkICIgKHVzZSAtdSBvcHRpb24gdG8gc2hvdyB1bnRyYWNrZWQgZmlsZXMpIgogbXNnc3RyICLvvIjkvb/nlKggLXUg5Y+C5pWw5pi+56S65pyq6Lef6Liq55qE5paH5Lu277yJIgogCi0jOiB3dC1zdGF0dXMuYzoxMjQwCisjOiB3dC1zdGF0dXMuYzoxMjQzCiBtc2dpZCAiTm8gY2hhbmdlcyIKIG1zZ3N0ciAi5rKh5pyJ5L+u5pS5IgogCi0jOiB3dC1zdGF0dXMuYzoxMjQ1CisjOiB3dC1zdGF0dXMuYzoxMjQ4CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0ICh1c2UgXCJnaXQgYWRkXCIgYW5kL29yIFwiZ2l0IGNvbW1pdCAtYVwiKVxuIgogbXNnc3RyICLkv67mlLnlsJrmnKrliqDlhaXmj5DkuqTvvIjkvb/nlKggXCJnaXQgYWRkXCIg5ZKML+aIliBcImdpdCBjb21taXQgLWFcIu+8iVxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMjQ4CisjOiB3dC1zdGF0dXMuYzoxMjUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIGNoYW5nZXMgYWRkZWQgdG8gY29tbWl0XG4iCiBtc2dzdHIgIuS/ruaUueWwmuacquWKoOWFpeaPkOS6pFxuIgogCi0jOiB3dC1zdGF0dXMuYzoxMjUxCisjOiB3dC1zdGF0dXMuYzoxMjU0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnQgKHVzZSBcImdpdCBhZGRcIiB0byAiCiAidHJhY2spXG4iCiBtc2dzdHIgIuaPkOS6pOS4uuepuu+8jOS9huaYr+WtmOWcqOWwmuacqui3n+i4queahOaWh+S7tu+8iOS9v+eUqCBcImdpdCBhZGRcIiDlu7rnq4vot5/ouKrvvIlcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTI1NAorIzogd3Qtc3RhdHVzLmM6MTI1NwogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIGFkZGVkIHRvIGNvbW1pdCBidXQgdW50cmFja2VkIGZpbGVzIHByZXNlbnRcbiIKIG1zZ3N0ciAi5o+Q5Lqk5Li656m677yM5L2G5piv5a2Y5Zyo5bCa5pyq6Lef6Liq55qE5paH5Lu2XG4iCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTI1NworIzogd3Qtc3RhdHVzLmM6MTI2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAoY3JlYXRlL2NvcHkgZmlsZXMgYW5kIHVzZSBcImdpdCBhZGRcIiB0byB0cmFjaylcbiIKIG1zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5Lqk77yI5Yib5bu6L+aLt+i0neaWh+S7tuW5tuS9v+eUqCBcImdpdCBhZGRcIiDlu7rnq4vot5/ouKrvvIlcbiIKIAotIzogd3Qtc3RhdHVzLmM6MTI2MCB3dC1zdGF0dXMuYzoxMjY1CisjOiB3dC1zdGF0dXMuYzoxMjYzIHd0LXN0YXR1cy5jOjEyNjgKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90aGluZyB0byBjb21taXRcbiIKIG1zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5LqkXG4iCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTI2MworIzogd3Qtc3RhdHVzLmM6MTI2NgogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKVxuIgogbXNnc3RyICLml6Dmlofku7bopoHmj5DkuqTvvIjkvb/nlKggLXUg5pi+56S65pyq6Lef6Liq55qE5paH5Lu277yJXG4iCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogd3Qtc3RhdHVzLmM6MTI2NworIzogd3Qtc3RhdHVzLmM6MTI3MAogIywgYy1mb3JtYXQKIG1zZ2lkICJub3RoaW5nIHRvIGNvbW1pdCwgd29ya2luZyBkaXJlY3RvcnkgY2xlYW5cbiIKIG1zZ3N0ciAi5peg5paH5Lu26KaB5o+Q5Lqk77yM5bmy5YeA55qE5bel5L2c5Yy6XG4iCiAKLSM6IHd0LXN0YXR1cy5jOjEzNzUKKyM6IHd0LXN0YXR1cy5jOjEzNzgKIG1zZ2lkICJIRUFEIChubyBicmFuY2gpIgogbXNnc3RyICJIRUFE77yI6Z2e5YiG5pSv77yJIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHlj6XlsL7nqbrmoLwKLSM6IHd0LXN0YXR1cy5jOjEzODEKKyM6IHd0LXN0YXR1cy5jOjEzODQKIG1zZ2lkICJJbml0aWFsIGNvbW1pdCBvbiAiCiBtc2dzdHIgIuWIneWni+aPkOS6pOS6jiAiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogd3Qtc3RhdHVzLmM6MTM5NgorIzogd3Qtc3RhdHVzLmM6MTM5OQogbXNnaWQgImJlaGluZCAiCiBtc2dzdHIgIuiQveWQjiAiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogd3Qtc3RhdHVzLmM6MTM5OSB3dC1zdGF0dXMuYzoxNDAyCisjOiB3dC1zdGF0dXMuYzoxNDAyIHd0LXN0YXR1cy5jOjE0MDUKIG1zZ2lkICJhaGVhZCAiCiBtc2dzdHIgIumihuWFiCAiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWPpeWwvuepuuagvAotIzogd3Qtc3RhdHVzLmM6MTQwNAorIzogd3Qtc3RhdHVzLmM6MTQwNwogbXNnaWQgIiwgYmVoaW5kICIKIG1zZ3N0ciAi77yM6JC95ZCOICIKIAotIzogY29tcGF0L3ByZWNvbXBvc2VfdXRmOC5jOjU4IGJ1aWx0aW4vY2xvbmUuYzozNTIKKyM6IGNvbXBhdC9wcmVjb21wb3NlX3V0ZjguYzo1OCBidWlsdGluL2Nsb25lLmM6MzUxCiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byB1bmxpbmsgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5Yig6ZmkICclcyciCkBAIC0xNzE2LDcgKzE3ODYsNyBAQAogbXNnaWQgInVuZXhwZWN0ZWQgZGlmZiBzdGF0dXMgJWMiCiBtc2dzdHIgIuaEj+WklueahOW3ruW8gueKtuaAgSAlYyIKIAotIzogYnVpbHRpbi9hZGQuYzoxNDkgYnVpbHRpbi9jb21taXQuYzoyMzMKKyM6IGJ1aWx0aW4vYWRkLmM6MTQ5IGJ1aWx0aW4vY29tbWl0LmM6MjM4CiBtc2dpZCAidXBkYXRpbmcgZmlsZXMgZmFpbGVkIgogbXNnc3RyICLmm7TmlrDmlofku7blpLHotKUiCiAKQEAgLTE3MjksNyArMTc5OSw3IEBACiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZWZyZXNoaW5nIHRoZSBpbmRleDoiCiBtc2dzdHIgIuWIt+aWsOe0ouW8leS5i+WQjuWwmuacquiiq+aaguWtmOeahOWPmOabtO+8miIKIAotIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzIgYnVpbHRpbi9ybS5jOjI3NQorIzogYnVpbHRpbi9hZGQuYzoyNTYgYnVpbHRpbi9hZGQuYzo1NzMgYnVpbHRpbi9ybS5jOjMzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoc3BlYyAnJXMnIGRpZCBub3QgbWF0Y2ggYW55IGZpbGVzIgogbXNnc3RyICLot6/lvoQgJyVzJyDmnKrljLnphY3ku7vkvZXmlofku7YiCkBAIC0xNzM4LDEyNyArMTgwOCwxMjcgQEAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aGUgaW5kZXgiCiBtc2dzdHIgIuS4jeiDveivu+WPlue0ouW8lSIKIAotIzogYnVpbHRpbi9hZGQuYzozNDkKKyM6IGJ1aWx0aW4vYWRkLmM6MzUwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuICclcycgZm9yIHdyaXRpbmcuIgogbXNnc3RyICLkuI3og73miZPlvIAgJyVzJyDku6XlhpnlhaXjgIIiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzUzCisjOiBidWlsdGluL2FkZC5jOjM1NAogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBwYXRjaCIKIG1zZ3N0ciAi5LiN6IO955Sf5oiQ6KGl5LiBIgogCi0jOiBidWlsdGluL2FkZC5jOjM1OAorIzogYnVpbHRpbi9hZGQuYzozNTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHN0YXQgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95p+l55yL5paH5Lu254q25oCBICclcyciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6MzYwCisjOiBidWlsdGluL2FkZC5jOjM2MQogbXNnaWQgIkVtcHR5IHBhdGNoLiBBYm9ydGVkLiIKIG1zZ3N0ciAi56m66KGl5LiB44CC5byC5bi457uI5q2i44CCIgogCi0jOiBidWlsdGluL2FkZC5jOjM2NgorIzogYnVpbHRpbi9hZGQuYzozNjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGFwcGx5ICclcyciCiBtc2dzdHIgIuS4jeiDveW6lOeUqCAnJXMnIgogCi0jOiBidWlsdGluL2FkZC5jOjM3NgorIzogYnVpbHRpbi9hZGQuYzozNzcKIG1zZ2lkICJUaGUgZm9sbG93aW5nIHBhdGhzIGFyZSBpZ25vcmVkIGJ5IG9uZSBvZiB5b3VyIC5naXRpZ25vcmUgZmlsZXM6XG4iCiBtc2dzdHIgIuS4i+WIl+i3r+W+hOagueaNruaCqOeahOS4gOS4qiAuZ2l0aWdub3JlIOaWh+S7tuiAjOiiq+W/veeVpe+8mlxuIgogCi0jOiBidWlsdGluL2FkZC5jOjM5MyBidWlsdGluL2NsZWFuLmM6MTYxIGJ1aWx0aW4vZmV0Y2guYzo3OCBidWlsdGluL212LmM6NjMKLSM6IGJ1aWx0aW4vcHJ1bmUtcGFja2VkLmM6NzYgYnVpbHRpbi9wdXNoLmM6NDI1IGJ1aWx0aW4vcmVtb3RlLmM6MTI1MwotIzogYnVpbHRpbi9ybS5jOjIwNgorIzogYnVpbHRpbi9hZGQuYzozOTQgYnVpbHRpbi9jbGVhbi5jOjg1MSBidWlsdGluL2ZldGNoLmM6NzggYnVpbHRpbi9tdi5jOjYzCisjOiBidWlsdGluL3BydW5lLXBhY2tlZC5jOjczIGJ1aWx0aW4vcHVzaC5jOjQ1MSBidWlsdGluL3JlbW90ZS5jOjEyNTMKKyM6IGJ1aWx0aW4vcm0uYzoyNjgKIG1zZ2lkICJkcnkgcnVuIgogbXNnc3RyICLmvJTkuaAiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk0IGJ1aWx0aW4vYXBwbHkuYzo0NDA5IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE1MiBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKLSM6IGJ1aWx0aW4vbG9nLmM6MTUxOCBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTIKKyM6IGJ1aWx0aW4vYWRkLmM6Mzk1IGJ1aWx0aW4vYXBwbHkuYzo0NDEwIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwMSBidWlsdGluL2NvdW50LW9iamVjdHMuYzo5NSBidWlsdGluL2ZzY2suYzo2MTMKKyM6IGJ1aWx0aW4vbG9nLmM6MTU3MyBidWlsdGluL212LmM6NjIgYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTMKIG1zZ2lkICJiZSB2ZXJib3NlIgogbXNnc3RyICLlhpfplb/ovpPlh7oiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk2CisjOiBidWlsdGluL2FkZC5jOjM5NwogbXNnaWQgImludGVyYWN0aXZlIHBpY2tpbmciCiBtc2dzdHIgIuS6pOS6kuW8j+aLo+mAiSIKIAotIzogYnVpbHRpbi9hZGQuYzozOTcgYnVpbHRpbi9jaGVja291dC5jOjEwNjMgYnVpbHRpbi9yZXNldC5jOjI1OAorIzogYnVpbHRpbi9hZGQuYzozOTggYnVpbHRpbi9jaGVja291dC5jOjEwNzMgYnVpbHRpbi9yZXNldC5jOjI2MQogbXNnaWQgInNlbGVjdCBodW5rcyBpbnRlcmFjdGl2ZWx5IgogbXNnc3RyICLkuqTkupLlvI/mjJHpgInmlbDmja7lnZciCiAKLSM6IGJ1aWx0aW4vYWRkLmM6Mzk4CisjOiBidWlsdGluL2FkZC5jOjM5OQogbXNnaWQgImVkaXQgY3VycmVudCBkaWZmIGFuZCBhcHBseSIKIG1zZ3N0ciAi57yW6L6R5b2T5YmN5beu5byC5bm25bqU55SoIgogCi0jOiBidWlsdGluL2FkZC5jOjM5OQorIzogYnVpbHRpbi9hZGQuYzo0MDAKIG1zZ2lkICJhbGxvdyBhZGRpbmcgb3RoZXJ3aXNlIGlnbm9yZWQgZmlsZXMiCiBtc2dzdHIgIuWFgeiuuOa3u+WKoOW/veeVpeeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MDAKKyM6IGJ1aWx0aW4vYWRkLmM6NDAxCiBtc2dpZCAidXBkYXRlIHRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIuabtOaWsOW3sui3n+i4queahOaWh+S7tiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MDEKKyM6IGJ1aWx0aW4vYWRkLmM6NDAyCiBtc2dpZCAicmVjb3JkIG9ubHkgdGhlIGZhY3QgdGhhdCB0aGUgcGF0aCB3aWxsIGJlIGFkZGVkIGxhdGVyIgogbXNnc3RyICLlj6rorrDlvZXvvIzor6Xot6/lvoTnqI3lkI7lho3mt7vliqAiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NDAyCisjOiBidWlsdGluL2FkZC5jOjQwMwogbXNnaWQgImFkZCBjaGFuZ2VzIGZyb20gYWxsIHRyYWNrZWQgYW5kIHVudHJhY2tlZCBmaWxlcyIKIG1zZ3N0ciAi5re75Yqg5omA5pyJ5pS55Y+Y55qE5bey6Lef6Liq5paH5Lu25ZKM5pyq6Lef6Liq5paH5Lu2IgogCiAjLiB0YWtlcyBubyBhcmd1bWVudHMKLSM6IGJ1aWx0aW4vYWRkLmM6NDA1CisjOiBidWlsdGluL2FkZC5jOjQwNgogbXNnaWQgImlnbm9yZSBwYXRocyByZW1vdmVkIGluIHRoZSB3b3JraW5nIHRyZWUgKHNhbWUgYXMgLS1uby1hbGwpIgogbXNnc3RyICLlv73nlaXlt6XkvZzljLrkuK3np7vpmaTnmoTot6/lvoTvvIjlkowgLS1uby1hbGwg55u45ZCM77yJIgogCi0jOiBidWlsdGluL2FkZC5jOjQwNworIzogYnVpbHRpbi9hZGQuYzo0MDgKIG1zZ2lkICJkb24ndCBhZGQsIG9ubHkgcmVmcmVzaCB0aGUgaW5kZXgiCiBtc2dzdHIgIuS4jea3u+WKoO+8jOWPquWIt+aWsOe0ouW8lSIKIAotIzogYnVpbHRpbi9hZGQuYzo0MDgKKyM6IGJ1aWx0aW4vYWRkLmM6NDA5CiBtc2dpZCAianVzdCBza2lwIGZpbGVzIHdoaWNoIGNhbm5vdCBiZSBhZGRlZCBiZWNhdXNlIG9mIGVycm9ycyIKIG1zZ3N0ciAi6Lez6L+H5Zug5Ye66ZSZ5LiN6IO95re75Yqg55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2FkZC5jOjQwOQorIzogYnVpbHRpbi9hZGQuYzo0MTAKIG1zZ2lkICJjaGVjayBpZiAtIGV2ZW4gbWlzc2luZyAtIGZpbGVzIGFyZSBpZ25vcmVkIGluIGRyeSBydW4iCiBtc2dzdHIgIuajgOafpeWcqOa8lOS5oOaooeW8j+S4i+aWh+S7tu+8iOWNs+S9v+S4jeWtmOWcqO+8ieaYr+WQpuiiq+W/veeVpSIKIAotIzogYnVpbHRpbi9hZGQuYzo0MzEKKyM6IGJ1aWx0aW4vYWRkLmM6NDMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVzZSAtZiBpZiB5b3UgcmVhbGx5IHdhbnQgdG8gYWRkIHRoZW0uXG4iCiBtc2dzdHIgIuS9v+eUqCAtZiDlj4LmlbDlpoLmnpzmgqjnoa7lrp7opoHmt7vliqDlroPku6zjgIJcbiIKIAotIzogYnVpbHRpbi9hZGQuYzo0MzIKKyM6IGJ1aWx0aW4vYWRkLmM6NDMzCiBtc2dpZCAibm8gZmlsZXMgYWRkZWQiCiBtc2dzdHIgIuayoeacieaWh+S7tuiiq+a3u+WKoCIKIAotIzogYnVpbHRpbi9hZGQuYzo0MzgKKyM6IGJ1aWx0aW4vYWRkLmM6NDM5CiBtc2dpZCAiYWRkaW5nIGZpbGVzIGZhaWxlZCIKIG1zZ3N0ciAi5re75Yqg5paH5Lu25aSx6LSlIgogCi0jOiBidWlsdGluL2FkZC5jOjQ3NworIzogYnVpbHRpbi9hZGQuYzo0NzgKIG1zZ2lkICItQSBhbmQgLXUgYXJlIG11dHVhbGx5IGluY29tcGF0aWJsZSIKIG1zZ3N0ciAiLUEg5ZKMIC11IOmAiemhueS6kuaWpSIKIAotIzogYnVpbHRpbi9hZGQuYzo0OTUKKyM6IGJ1aWx0aW4vYWRkLmM6NDk2CiBtc2dpZCAiT3B0aW9uIC0taWdub3JlLW1pc3NpbmcgY2FuIG9ubHkgYmUgdXNlZCB0b2dldGhlciB3aXRoIC0tZHJ5LXJ1biIKIG1zZ3N0ciAi6YCJ6aG5IC0taWdub3JlLW1pc3Npbmcg5Y+q6IO95ZKMIC0tZHJ5LXJ1biDlkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NTI1CisjOiBidWlsdGluL2FkZC5jOjUyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3RoaW5nIHNwZWNpZmllZCwgbm90aGluZyBhZGRlZC5cbiIKIG1zZ3N0ciAi5rKh5pyJ5oyH5a6a5paH5Lu277yM5Lmf5rKh5pyJ5paH5Lu26KKr5re75Yqg44CCXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NTI2CisjOiBidWlsdGluL2FkZC5jOjUyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJNYXliZSB5b3Ugd2FudGVkIHRvIHNheSAnZ2l0IGFkZCAuJz9cbiIKIG1zZ3N0ciAi5Lmf6K645oKo5oOz6KaB5omn6KGMICdnaXQgYWRkIC4n77yfXG4iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NTMyIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6NjYgYnVpbHRpbi9jbGVhbi5jOjIwNAotIzogYnVpbHRpbi9jb21taXQuYzoyOTMgYnVpbHRpbi9tdi5jOjgyIGJ1aWx0aW4vcm0uYzoyMzUKKyM6IGJ1aWx0aW4vYWRkLmM6NTMzIGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTYxIGJ1aWx0aW4vY2xlYW4uYzo4OTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6Mjk4IGJ1aWx0aW4vbXYuYzo4MiBidWlsdGluL3JtLmM6Mjk3CiBtc2dpZCAiaW5kZXggZmlsZSBjb3JydXB0IgogbXNnc3RyICLntKLlvJXmlofku7bmjZ/lnY8iCiAKLSM6IGJ1aWx0aW4vYWRkLmM6NjA0IGJ1aWx0aW4vYXBwbHkuYzo0NTA1IGJ1aWx0aW4vbXYuYzoyMjkgYnVpbHRpbi9ybS5jOjM3MAorIzogYnVpbHRpbi9hZGQuYzo2MDUgYnVpbHRpbi9hcHBseS5jOjQ1MDYgYnVpbHRpbi9tdi5jOjIyOSBidWlsdGluL3JtLmM6NDMyCiBtc2dpZCAiVW5hYmxlIHRvIHdyaXRlIG5ldyBpbmRleCBmaWxlIgogbXNnc3RyICLml6Dms5XlhpnlhaXmlrDntKLlvJXmlofku7YiCiAKQEAgLTIwMzcsMjkzICsyMTA3LDI5MyBAQAogbXNnaWQgImNhbm5vdCBjaGVja291dCAlcyIKIG1zZ3N0ciAi5LiN6IO95qOA5Ye6ICVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzE0MCBidWlsdGluL2FwcGx5LmM6MzE0OSBidWlsdGluL2FwcGx5LmM6MzE5MworIzogYnVpbHRpbi9hcHBseS5jOjMxNDAgYnVpbHRpbi9hcHBseS5jOjMxNDkgYnVpbHRpbi9hcHBseS5jOjMxOTQKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVhZCBvZiAlcyBmYWlsZWQiCiBtc2dzdHIgIuivu+WPliAlcyDlpLHotKUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMTczIGJ1aWx0aW4vYXBwbHkuYzozMzk1CisjOiBidWlsdGluL2FwcGx5LmM6MzE3NCBidWlsdGluL2FwcGx5LmM6MzM5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJwYXRoICVzIGhhcyBiZWVuIHJlbmFtZWQvZGVsZXRlZCIKIG1zZ3N0ciAi6Lev5b6EICVzIOW3sue7j+iiq+mHjeWRveWQjS/liKDpmaQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozMjU0IGJ1aWx0aW4vYXBwbHkuYzozNDA5CisjOiBidWlsdGluL2FwcGx5LmM6MzI1NSBidWlsdGluL2FwcGx5LmM6MzQxMAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogZG9lcyBub3QgZXhpc3QgaW4gaW5kZXgiCiBtc2dzdHIgIiVz77ya5LiN5a2Y5Zyo5LqO57Si5byV5LitIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI1OCBidWlsdGluL2FwcGx5LmM6MzQwMSBidWlsdGluL2FwcGx5LmM6MzQyMworIzogYnVpbHRpbi9hcHBseS5jOjMyNTkgYnVpbHRpbi9hcHBseS5jOjM0MDIgYnVpbHRpbi9hcHBseS5jOjM0MjQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIgogbXNnc3RyICIlc++8miVzIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzI2MyBidWlsdGluL2FwcGx5LmM6MzQxNworIzogYnVpbHRpbi9hcHBseS5jOjMyNjQgYnVpbHRpbi9hcHBseS5jOjM0MTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGRvZXMgbm90IG1hdGNoIGluZGV4IgogbXNnc3RyICIlc++8muWSjOe0ouW8leS4jeWMuemFjSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjMzNjUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozMzY2CiBtc2dpZCAicmVtb3ZhbCBwYXRjaCBsZWF2ZXMgZmlsZSBjb250ZW50cyIKIG1zZ3N0ciAi56e76Zmk6KGl5LiB5LuN55WZ5LiL5LqG5paH5Lu25YaF5a65IgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQzNAorIzogYnVpbHRpbi9hcHBseS5jOjM0MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IHdyb25nIHR5cGUiCiBtc2dzdHIgIiVz77ya6ZSZ6K+v57G75Z6LIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzQzNgorIzogYnVpbHRpbi9hcHBseS5jOjM0MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXMgaGFzIHR5cGUgJW8sIGV4cGVjdGVkICVvIgogbXNnc3RyICIlcyDnmoTnsbvlnovmmK8gJW/vvIzlupTkuLogJW8iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTM3CisjOiBidWlsdGluL2FwcGx5LmM6MzUzOAogIywgYy1mb3JtYXQKIG1zZ2lkICIlczogYWxyZWFkeSBleGlzdHMgaW4gaW5kZXgiCiBtc2dzdHIgIiVz77ya5bey57uP5a2Y5Zyo5LqO57Si5byV5LitIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzU0MAorIzogYnVpbHRpbi9hcHBseS5jOjM1NDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6IGFscmVhZHkgZXhpc3RzIGluIHdvcmtpbmcgZGlyZWN0b3J5IgogbXNnc3RyICIlc++8muW3sue7j+WtmOWcqOS6juW3peS9nOWMuuS4rSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NjAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTYxCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBtb2RlICglbykgb2YgJXMgZG9lcyBub3QgbWF0Y2ggb2xkIG1vZGUgKCVvKSIKIG1zZ3N0ciAiJTIkcyDnmoTmlrDmqKHlvI/vvIglMSRv77yJ5ZKM5pen5qih5byP77yIJTMkb++8ieS4jeWMuemFjSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NjUKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTY2CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5ldyBtb2RlICglbykgb2YgJXMgZG9lcyBub3QgbWF0Y2ggb2xkIG1vZGUgKCVvKSBvZiAlcyIKIG1zZ3N0ciAiJTIkcyDnmoTmlrDmqKHlvI/vvIglMSRv77yJ5ZKMICU0JHMg55qE5pen5qih5byP77yIJTMkb++8ieS4jeWMuemFjSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM1NzMKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNTc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzOiBwYXRjaCBkb2VzIG5vdCBhcHBseSIKIG1zZ3N0ciAiJXPvvJrooaXkuIHmnKrlupTnlKgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozNTg2CisjOiBidWlsdGluL2FwcGx5LmM6MzU4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJDaGVja2luZyBwYXRjaCAlcy4uLiIKIG1zZ3N0ciAi5qOA5p+l6KGl5LiBICVzLi4uIgogCi0jOiBidWlsdGluL2FwcGx5LmM6MzY3OSBidWlsdGluL2NoZWNrb3V0LmM6MjE2IGJ1aWx0aW4vcmVzZXQuYzoxMjQKKyM6IGJ1aWx0aW4vYXBwbHkuYzozNjgwIGJ1aWx0aW4vY2hlY2tvdXQuYzoyMTYgYnVpbHRpbi9yZXNldC5jOjEyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJtYWtlX2NhY2hlX2VudHJ5IGZhaWxlZCBmb3IgcGF0aCAnJXMnIgogbXNnc3RyICLlr7not6/lvoQgJyVzJyDnmoQgbWFrZV9jYWNoZV9lbnRyeSDmk43kvZzlpLHotKUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODIyCisjOiBidWlsdGluL2FwcGx5LmM6MzgyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVtb3ZlICVzIGZyb20gaW5kZXgiCiBtc2dzdHIgIuS4jeiDveS7jue0ouW8leS4reenu+mZpCAlcyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NTAKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODUxCiAjLCBjLWZvcm1hdAotbXNnaWQgImNvcnJ1cHQgcGF0Y2ggZm9yIHN1YnByb2plY3QgJXMiCi1tc2dzdHIgIuWtkOmhueebriAlcyDmjZ/lnY/nmoTooaXkuIEiCittc2dpZCAiY29ycnVwdCBwYXRjaCBmb3Igc3VibW9kdWxlICVzIgorbXNnc3RyICLlrZDmqKHnu4QgJXMg5o2f5Z2P55qE6KGl5LiBIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg1NAorIzogYnVpbHRpbi9hcHBseS5jOjM4NTUKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHN0YXQgbmV3bHkgY3JlYXRlZCBmaWxlICclcyciCiBtc2dzdHIgIuS4jeiDveaemuS4vuaWsOW7uuaWh+S7tiAnJXMnIOeahOeKtuaAgSIKIAotIzogYnVpbHRpbi9hcHBseS5jOjM4NTkKKyM6IGJ1aWx0aW4vYXBwbHkuYzozODYwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgYmFja2luZyBzdG9yZSBmb3IgbmV3bHkgY3JlYXRlZCBmaWxlICVzIgogbXNnc3RyICLkuI3og73kuLrmlrDlu7rmlofku7YgJXMg5Yib5bu65ZCO56uv5a2Y5YKoIgogCi0jOiBidWlsdGluL2FwcGx5LmM6Mzg2MiBidWlsdGluL2FwcGx5LmM6Mzk3MAorIzogYnVpbHRpbi9hcHBseS5jOjM4NjMgYnVpbHRpbi9hcHBseS5jOjM5NzEKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGFkZCBjYWNoZSBlbnRyeSBmb3IgJXMiCiBtc2dzdHIgIuaXoOazleS4uiAlcyDmt7vliqDnvJPlrZjmnaHnm64iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozODk1CisjOiBidWlsdGluL2FwcGx5LmM6Mzg5NgogIywgYy1mb3JtYXQKIG1zZ2lkICJjbG9zaW5nIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5YWz6Zet5paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzozOTQ0CisjOiBidWlsdGluL2FwcGx5LmM6Mzk0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgZmlsZSAnJXMnIG1vZGUgJW8iCiBtc2dzdHIgIuS4jeiDveWGmeaWh+S7tiAnJXMnIOadg+mZkCAlbyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMzEKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGxpZWQgcGF0Y2ggJXMgY2xlYW5seS4iCiBtc2dzdHIgIuaIkOWKn+W6lOeUqOihpeS4gSAlc+OAgiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwMzkKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQwCiBtc2dpZCAiaW50ZXJuYWwgZXJyb3IiCiBtc2dzdHIgIuWGhemDqOmUmeivryIKIAogIy4gU2F5IHRoaXMgZXZlbiB3aXRob3V0IC0tdmVyYm9zZQotIzogYnVpbHRpbi9hcHBseS5jOjQwNDIKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDQzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFwcGx5aW5nIHBhdGNoICUlcyB3aXRoICVkIHJlamVjdC4uLiIKIG1zZ2lkX3BsdXJhbCAiQXBwbHlpbmcgcGF0Y2ggJSVzIHdpdGggJWQgcmVqZWN0cy4uLiIKIG1zZ3N0clswXSAi5bqU55SoICUlcyDkuKrooaXkuIHvvIzlhbbkuK0gJWQg5Liq6KKr5ouS57udLi4uIgogbXNnc3RyWzFdICLlupTnlKggJSVzIOS4quihpeS4ge+8jOWFtuS4rSAlZCDkuKrooqvmi5Lnu50uLi4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MDUyCisjOiBidWlsdGluL2FwcGx5LmM6NDA1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJ0cnVuY2F0aW5nIC5yZWogZmlsZW5hbWUgdG8gJS4qcy5yZWoiCiBtc2dzdHIgIuaIquefrSAucmVqIOaWh+S7tuWQjeS4uiAlLipzLnJlaiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQwNzMKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MDc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkh1bmsgIyVkIGFwcGxpZWQgY2xlYW5seS4iCiBtc2dzdHIgIuesrCAjJWQg5Liq54mH5q615oiQ5Yqf5bqU55So44CCIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDA3NgorIzogYnVpbHRpbi9hcHBseS5jOjQwNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVqZWN0ZWQgaHVuayAjJWQuIgogbXNnc3RyICLmi5Lnu53nrKwgIyVkIOS4queJh+auteOAgiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQyMjYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MjI3CiBtc2dpZCAidW5yZWNvZ25pemVkIGlucHV0IgogbXNnc3RyICLmnKrog73or4bliKvnmoTovpPlhaUiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MjM3CisjOiBidWlsdGluL2FwcGx5LmM6NDIzOAogbXNnaWQgInVuYWJsZSB0byByZWFkIGluZGV4IGZpbGUiCiBtc2dzdHIgIuaXoOazleivu+WPlue0ouW8leaWh+S7tiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNTYgYnVpbHRpbi9hcHBseS5jOjQzNTkgYnVpbHRpbi9jbG9uZS5jOjkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM1NyBidWlsdGluL2FwcGx5LmM6NDM2MCBidWlsdGluL2Nsb25lLmM6OTEKICM6IGJ1aWx0aW4vZmV0Y2guYzo2MwogbXNnaWQgInBhdGgiCiBtc2dzdHIgIui3r+W+hCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNTcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0MzU4CiBtc2dpZCAiZG9uJ3QgYXBwbHkgY2hhbmdlcyBtYXRjaGluZyB0aGUgZ2l2ZW4gcGF0aCIKIG1zZ3N0ciAi5LiN6KaB5bqU55So5LiO57uZ5Ye66Lev5b6E5ZCR5Yy56YWN55qE5Y+Y5pu0IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM2MAorIzogYnVpbHRpbi9hcHBseS5jOjQzNjEKIG1zZ2lkICJhcHBseSBjaGFuZ2VzIG1hdGNoaW5nIHRoZSBnaXZlbiBwYXRoIgogbXNnc3RyICLlupTnlKjkuI7nu5nlh7rot6/lvoTlkJHljLnphY3nmoTlj5jmm7QiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzYyCisjOiBidWlsdGluL2FwcGx5LmM6NDM2MwogbXNnaWQgIm51bSIKIG1zZ3N0ciAi5pWw5a2XIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM2MworIzogYnVpbHRpbi9hcHBseS5jOjQzNjQKIG1zZ2lkICJyZW1vdmUgPG51bT4gbGVhZGluZyBzbGFzaGVzIGZyb20gdHJhZGl0aW9uYWwgZGlmZiBwYXRocyIKIG1zZ3N0ciAi5LuO5Lyg57uf55qEIGRpZmYg6Lev5b6E5Lit56e76Zmk5oyH5a6a5pWw6YeP55qE5YmN5a+85pac57q/IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM2NgorIzogYnVpbHRpbi9hcHBseS5jOjQzNjcKIG1zZ2lkICJpZ25vcmUgYWRkaXRpb25zIG1hZGUgYnkgdGhlIHBhdGNoIgogbXNnc3RyICLlv73nlaXooaXkuIHkuK3nmoTmt7vliqDnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzY4CisjOiBidWlsdGluL2FwcGx5LmM6NDM2OQogbXNnaWQgImluc3RlYWQgb2YgYXBwbHlpbmcgdGhlIHBhdGNoLCBvdXRwdXQgZGlmZnN0YXQgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAi5LiN5bqU55So6KGl5LiB77yM6ICM5piv5pi+56S66L6T5YWl55qE5beu5byC57uf6K6h77yIZGlmZnN0YXTvvIkiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzcyCisjOiBidWlsdGluL2FwcGx5LmM6NDM3MwogbXNnaWQgInNob3cgbnVtYmVyIG9mIGFkZGVkIGFuZCBkZWxldGVkIGxpbmVzIGluIGRlY2ltYWwgbm90YXRpb24iCiBtc2dzdHIgIuS7peWNgei/m+WItuaVsOaYvuekuua3u+WKoOWSjOWIoOmZpOeahOihjOaVsCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzNzQKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc1CiBtc2dpZCAiaW5zdGVhZCBvZiBhcHBseWluZyB0aGUgcGF0Y2gsIG91dHB1dCBhIHN1bW1hcnkgZm9yIHRoZSBpbnB1dCIKIG1zZ3N0ciAi5LiN5bqU55So6KGl5LiB77yM6ICM5piv5pi+56S66L6T5YWl55qE5qaC6KaBIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM3NgorIzogYnVpbHRpbi9hcHBseS5jOjQzNzcKIG1zZ2lkICJpbnN0ZWFkIG9mIGFwcGx5aW5nIHRoZSBwYXRjaCwgc2VlIGlmIHRoZSBwYXRjaCBpcyBhcHBsaWNhYmxlIgogbXNnc3RyICLkuI3lupTnlKjooaXkuIHvvIzogIzmmK/mn6XnnIvooaXkuIHmmK/lkKblj6/lupTnlKgiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzc4CisjOiBidWlsdGluL2FwcGx5LmM6NDM3OQogbXNnaWQgIm1ha2Ugc3VyZSB0aGUgcGF0Y2ggaXMgYXBwbGljYWJsZSB0byB0aGUgY3VycmVudCBpbmRleCIKIG1zZ3N0ciAi56Gu6K6k6KGl5LiB5Y+v5Lul5bqU55So5Yiw5b2T5YmN57Si5byVIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4MAorIzogYnVpbHRpbi9hcHBseS5jOjQzODEKIG1zZ2lkICJhcHBseSBhIHBhdGNoIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHdvcmtpbmcgdHJlZSIKIG1zZ3N0ciAi5bqU55So6KGl5LiB6ICM5LiN5L+u5pS55bel5L2c5Yy6IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM4MgorIzogYnVpbHRpbi9hcHBseS5jOjQzODMKIG1zZ2lkICJhbHNvIGFwcGx5IHRoZSBwYXRjaCAodXNlIHdpdGggLS1zdGF0Ly0tc3VtbWFyeS8tLWNoZWNrKSIKIG1zZ3N0ciAi6L+Y5bqU55So5q2k6KGl5LiB77yI5LiOIC0tc3RhdC8tLXN1bW1hcnkvLS1jaGVjayDpgInpobnlkIzml7bkvb/nlKjvvIkiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg0CisjOiBidWlsdGluL2FwcGx5LmM6NDM4NQogbXNnaWQgImF0dGVtcHQgdGhyZWUtd2F5IG1lcmdlIGlmIGEgcGF0Y2ggZG9lcyBub3QgYXBwbHkiCiBtc2dzdHIgIuWmguaenOS4gOS4quihpeS4geS4jeiDveW6lOeUqOWImeWwneivleS4iei3r+WQiOW5tiIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzODYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0Mzg3CiBtc2dpZCAiYnVpbGQgYSB0ZW1wb3JhcnkgaW5kZXggYmFzZWQgb24gZW1iZWRkZWQgaW5kZXggaW5mb3JtYXRpb24iCiBtc2dzdHIgIuWIm+W7uuS4gOS4quS4tOaXtue0ouW8leWfuuS6juW1jOWFpeeahOe0ouW8leS/oeaBryIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQzODggYnVpbHRpbi9jaGVja291dC1pbmRleC5jOjE5NyBidWlsdGluL2xzLWZpbGVzLmM6NDU2CisjOiBidWlsdGluL2FwcGx5LmM6NDM4OSBidWlsdGluL2NoZWNrb3V0LWluZGV4LmM6MTk3IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjIKIG1zZ2lkICJwYXRocyBhcmUgc2VwYXJhdGVkIHdpdGggTlVMIGNoYXJhY3RlciIKIG1zZ3N0ciAi6Lev5b6E5LulIE5VTCDlrZfnrKbliIbpmpQiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkxCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MgogbXNnaWQgImVuc3VyZSBhdCBsZWFzdCA8bj4gbGluZXMgb2YgY29udGV4dCBtYXRjaCIKIG1zZ3N0ciAi56Gu5L+d6Iez5bCR5Yy56YWNIDxuPiDooYzkuIrkuIvmlociCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0MzkyCisjOiBidWlsdGluL2FwcGx5LmM6NDM5MwogbXNnaWQgImFjdGlvbiIKIG1zZ3N0ciAi5Yqo5L2cIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM5MworIzogYnVpbHRpbi9hcHBseS5jOjQzOTQKIG1zZ2lkICJkZXRlY3QgbmV3IG9yIG1vZGlmaWVkIGxpbmVzIHRoYXQgaGF2ZSB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0ciAi5qOA5p+l5paw5aKe5ZKM5L+u5pS555qE6KGM5Lit6Ze055qE56m655m95a2X56ym5rul55SoIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDM5NiBidWlsdGluL2FwcGx5LmM6NDM5OQorIzogYnVpbHRpbi9hcHBseS5jOjQzOTcgYnVpbHRpbi9hcHBseS5jOjQ0MDAKIG1zZ2lkICJpZ25vcmUgY2hhbmdlcyBpbiB3aGl0ZXNwYWNlIHdoZW4gZmluZGluZyBjb250ZXh0IgogbXNnc3RyICLmn6Xmib7kuIrkuIvmlofml7blv73nlaXnqbrnmb3lrZfnrKbnmoTlj5jmm7QiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDAyCisjOiBidWlsdGluL2FwcGx5LmM6NDQwMwogbXNnaWQgImFwcGx5IHRoZSBwYXRjaCBpbiByZXZlcnNlIgogbXNnc3RyICLlj43lkJHlupTnlKjooaXkuIEiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA0CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNQogbXNnaWQgImRvbid0IGV4cGVjdCBhdCBsZWFzdCBvbmUgbGluZSBvZiBjb250ZXh0IgogbXNnc3RyICLml6DpnIDoh7PlsJHkuIDooYzkuIrkuIvmlociCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDA2CisjOiBidWlsdGluL2FwcGx5LmM6NDQwNwogbXNnaWQgImxlYXZlIHRoZSByZWplY3RlZCBodW5rcyBpbiBjb3JyZXNwb25kaW5nICoucmVqIGZpbGVzIgogbXNnc3RyICLlsIbmi5Lnu53nmoTooaXkuIHniYfmrrXkv53lrZjlnKjlr7nlupTnmoQgKi5yZWog5paH5Lu25LitIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQwOAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MDkKIG1zZ2lkICJhbGxvdyBvdmVybGFwcGluZyBodW5rcyIKIG1zZ3N0ciAi5YWB6K646YeN5Y+g55qE6KGl5LiB54mH5q61IgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxMQorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTIKIG1zZ2lkICJ0b2xlcmF0ZSBpbmNvcnJlY3RseSBkZXRlY3RlZCBtaXNzaW5nIG5ldy1saW5lIGF0IHRoZSBlbmQgb2YgZmlsZSIKIG1zZ3N0ciAi5YWB6K645LiN5q2j56Gu55qE5paH5Lu25pyr5bC+5o2i6KGM56ymIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxNAorIzogYnVpbHRpbi9hcHBseS5jOjQ0MTUKIG1zZ2lkICJkbyBub3QgdHJ1c3QgdGhlIGxpbmUgY291bnRzIGluIHRoZSBodW5rIGhlYWRlcnMiCiBtc2dzdHIgIuS4jeS/oeS7u+ihpeS4geeJh+auteeahOWktOS/oeaBr+S4reeahOihjOWPtyIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0MTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDE3CiBtc2dpZCAicm9vdCIKIG1zZ3N0ciAi5qC555uu5b2VIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQxNworIzogYnVpbHRpbi9hcHBseS5jOjQ0MTgKIG1zZ2lkICJwcmVwZW5kIDxyb290PiB0byBhbGwgZmlsZW5hbWVzIgogbXNnc3RyICLkuLrmiYDmnInmlofku7blkI3liY3mt7vliqAgPOagueebruW9lT4iCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDM5CisjOiBidWlsdGluL2FwcGx5LmM6NDQ0MAogbXNnaWQgIi0tM3dheSBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS0zd2F5IOWcqOS4gOS4queJiOacrOW6k+S5i+WkliIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0NDcKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDQ4CiBtc2dpZCAiLS1pbmRleCBvdXRzaWRlIGEgcmVwb3NpdG9yeSIKIG1zZ3N0ciAiLS1pbmRleCDlnKjkuIDkuKrniYjmnKzlupPkuYvlpJYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDUwCisjOiBidWlsdGluL2FwcGx5LmM6NDQ1MQogbXNnaWQgIi0tY2FjaGVkIG91dHNpZGUgYSByZXBvc2l0b3J5IgogbXNnc3RyICItLWNhY2hlZCDlnKjkuIDkuKrniYjmnKzlupPkuYvlpJYiCiAKLSM6IGJ1aWx0aW4vYXBwbHkuYzo0NDY2CisjOiBidWlsdGluL2FwcGx5LmM6NDQ2NwogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW4ndCBvcGVuIHBhdGNoICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gOihpeS4gSAnJXMnIgogCi0jOiBidWlsdGluL2FwcGx5LmM6NDQ4MAorIzogYnVpbHRpbi9hcHBseS5jOjQ0ODEKICMsIGMtZm9ybWF0CiBtc2dpZCAic3F1ZWxjaGVkICVkIHdoaXRlc3BhY2UgZXJyb3IiCiBtc2dpZF9wbHVyYWwgInNxdWVsY2hlZCAlZCB3aGl0ZXNwYWNlIGVycm9ycyIKIG1zZ3N0clswXSAi5oqR5Yi25LiL5LuN5pyJICVkIOS4quepuueZveWtl+espuivr+eUqCIKIG1zZ3N0clsxXSAi5oqR5Yi25LiL5LuN5pyJICVkIOS4quepuueZveWtl+espuivr+eUqCIKIAotIzogYnVpbHRpbi9hcHBseS5jOjQ0ODYgYnVpbHRpbi9hcHBseS5jOjQ0OTYKKyM6IGJ1aWx0aW4vYXBwbHkuYzo0NDg3IGJ1aWx0aW4vYXBwbHkuYzo0NDk3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiVkIGxpbmUgYWRkcyB3aGl0ZXNwYWNlIGVycm9ycy4iCiBtc2dpZF9wbHVyYWwgIiVkIGxpbmVzIGFkZCB3aGl0ZXNwYWNlIGVycm9ycy4iCkBAIC0yMzc3LDEwMyArMjQ0NywxMDMgQEAKIG1zZ2lkICJ1cGRhdGUgQklTRUNUX0hFQUQgaW5zdGVhZCBvZiBjaGVja2luZyBvdXQgdGhlIGN1cnJlbnQgY29tbWl0IgogbXNnc3RyICLmm7TmlrAgQklTRUNUX0hFQUQg6ICM6Z2e5qOA5Ye65b2T5YmN5o+Q5LqkIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyNgogbXNnaWQgImdpdCBibGFtZSBbb3B0aW9uc10gW3Jldi1vcHRzXSBbcmV2XSBbLS1dIGZpbGUiCiBtc2dzdHIgImdpdCBibGFtZSBb6YCJ6aG5XSBb54mI5pys6YCJ6aG5XSBb54mI5pysXSBbLS1dIOaWh+S7tiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjMwCisjOiBidWlsdGluL2JsYW1lLmM6MzEKIG1zZ2lkICJbcmV2LW9wdHNdIGFyZSBkb2N1bWVudGVkIGluIGdpdC1yZXYtbGlzdCgxKSIKIG1zZ3N0ciAiW+eJiOacrOmAiemhuV0g55qE5paH5qGj6K6w5b2V5ZyoIGdpdC1yZXYtbGlzdCgxKSDkuK0iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU1CisjOiBidWlsdGluL2JsYW1lLmM6MjI3NgogbXNnaWQgIlNob3cgYmxhbWUgZW50cmllcyBhcyB3ZSBmaW5kIHRoZW0sIGluY3JlbWVudGFsbHkiCiBtc2dzdHIgIuWinumHj+W8j+WcsOaYvuekuuWPkeeOsOeahCBibGFtZSDmnaHnm64iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU2CisjOiBidWlsdGluL2JsYW1lLmM6MjI3NwogbXNnaWQgIlNob3cgYmxhbmsgU0hBLTEgZm9yIGJvdW5kYXJ5IGNvbW1pdHMgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIui+ueeVjOaPkOS6pOaYvuekuuepuueahCBTSEEtMe+8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNTcKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjc4CiBtc2dpZCAiRG8gbm90IHRyZWF0IHJvb3QgY29tbWl0cyBhcyBib3VuZGFyaWVzIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICLkuI3miormoLnmj5DkuqTkvZzkuLrovrnnlYzvvIjpu5jorqTvvJrlhbPpl63vvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzU4CisjOiBidWlsdGluL2JsYW1lLmM6MjI3OQogbXNnaWQgIlNob3cgd29yayBjb3N0IHN0YXRpc3RpY3MiCiBtc2dzdHIgIuaYvuekuuWRveS7pOa2iOiAl+e7n+iuoSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNTkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjgwCiBtc2dpZCAiU2hvdyBvdXRwdXQgc2NvcmUgZm9yIGJsYW1lIGVudHJpZXMiCiBtc2dzdHIgIuaYvuekuuWIpOaWrSBibGFtZSDmnaHnm67kvY3np7vnmoTlvpfliIbor4rmlq3kv6Hmga8iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYwCisjOiBidWlsdGluL2JsYW1lLmM6MjI4MQogbXNnaWQgIlNob3cgb3JpZ2luYWwgZmlsZW5hbWUgKERlZmF1bHQ6IGF1dG8pIgogbXNnc3RyICLmmL7npLrljp/lp4vmlofku7blkI3vvIjpu5jorqTvvJroh6rliqjvvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYxCisjOiBidWlsdGluL2JsYW1lLmM6MjI4MgogbXNnaWQgIlNob3cgb3JpZ2luYWwgbGluZW51bWJlciAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAi5pi+56S65Y6f5aeL55qE6KGM5Y+377yI6buY6K6k77ya5YWz6Zet77yJIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2MgorIzogYnVpbHRpbi9ibGFtZS5jOjIyODMKIG1zZ2lkICJTaG93IGluIGEgZm9ybWF0IGRlc2lnbmVkIGZvciBtYWNoaW5lIGNvbnN1bXB0aW9uIgogbXNnc3RyICLmmL7npLrkuLrkuIDkuKrpgILlkIjmnLrlmajor7vlj5bnmoTmoLzlvI8iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzYzCisjOiBidWlsdGluL2JsYW1lLmM6MjI4NAogbXNnaWQgIlNob3cgcG9yY2VsYWluIGZvcm1hdCB3aXRoIHBlci1saW5lIGNvbW1pdCBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAi5Li65q+P5LiA6KGM5pi+56S65py65Zmo6YCC55So55qE5o+Q5Lqk5L+h5oGvIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2NAorIzogYnVpbHRpbi9ibGFtZS5jOjIyODUKIG1zZ2lkICJVc2UgdGhlIHNhbWUgb3V0cHV0IG1vZGUgYXMgZ2l0LWFubm90YXRlIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICLkvb/nlKjlkowgZ2l0LWFubm90YXRlIOebuOWQjOeahOi+k+WHuuaooeW8j++8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjUKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg2CiBtc2dpZCAiU2hvdyByYXcgdGltZXN0YW1wIChEZWZhdWx0OiBvZmYpIgogbXNnc3RyICLmmL7npLrljp/lp4vml7bpl7TmiLPvvIjpu5jorqTvvJrlhbPpl63vvIkiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzY2CisjOiBidWlsdGluL2JsYW1lLmM6MjI4NwogbXNnaWQgIlNob3cgbG9uZyBjb21taXQgU0hBMSAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAi5pi+56S66ZW/55qEU0hBMeaPkOS6pOWPt++8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjcKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjg4CiBtc2dpZCAiU3VwcHJlc3MgYXV0aG9yIG5hbWUgYW5kIHRpbWVzdGFtcCAoRGVmYXVsdDogb2ZmKSIKIG1zZ3N0ciAi6ZqQ6JeP5L2c6ICF5ZCN5a2X5ZKM5pe26Ze05oiz77yI6buY6K6k77ya5YWz6Zet77yJIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM2OAorIzogYnVpbHRpbi9ibGFtZS5jOjIyODkKIG1zZ2lkICJTaG93IGF1dGhvciBlbWFpbCBpbnN0ZWFkIG9mIG5hbWUgKERlZmF1bHQ6IG9mZikiCiBtc2dzdHIgIuaYvuekuuS9nOiAheeahOmCrueuseiAjOS4jeaYr+WQjeWtl++8iOm7mOiupO+8muWFs+mXre+8iSIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNjkKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkwCiBtc2dpZCAiSWdub3JlIHdoaXRlc3BhY2UgZGlmZmVyZW5jZXMiCiBtc2dzdHIgIuW/veeVpeepuueZveW3ruW8giIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzAKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjkxCiBtc2dpZCAiU3BlbmQgZXh0cmEgY3ljbGVzIHRvIGZpbmQgYmV0dGVyIG1hdGNoIgogbXNnc3RyICLoirHotLnpop3lpJbnmoTlvqrnjq/mnaXmib7liLDmm7Tlpb3nmoTljLnphY0iCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzcxCisjOiBidWlsdGluL2JsYW1lLmM6MjI5MgogbXNnaWQgIlVzZSByZXZpc2lvbnMgZnJvbSA8ZmlsZT4gaW5zdGVhZCBvZiBjYWxsaW5nIGdpdC1yZXYtbGlzdCIKIG1zZ3N0ciAi5L2/55So5p2l6IeqIDxmaWxlPiDnmoTkv67orqLpm4bogIzkuI3mmK/osIPnlKggZ2l0LXJldi1saXN0IgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3MgorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTMKIG1zZ2lkICJVc2UgPGZpbGU+J3MgY29udGVudHMgYXMgdGhlIGZpbmFsIGltYWdlIgogbXNnc3RyICLkvb/nlKggPGZpbGU+IOeahOWGheWuueS9nOS4uuacgOe7iOeahOWbvueJhyIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMgYnVpbHRpbi9ibGFtZS5jOjIzNzQKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjk0IGJ1aWx0aW4vYmxhbWUuYzoyMjk1CiBtc2dpZCAic2NvcmUiCiBtc2dzdHIgIuW+l+WIhiIKIAotIzogYnVpbHRpbi9ibGFtZS5jOjIzNzMKKyM6IGJ1aWx0aW4vYmxhbWUuYzoyMjk0CiBtc2dpZCAiRmluZCBsaW5lIGNvcGllcyB3aXRoaW4gYW5kIGFjcm9zcyBmaWxlcyIKIG1zZ3N0ciAi5om+5Yiw5paH5Lu25YaF5Y+K6Leo5paH5Lu255qE6KGM5ou36LSdIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NAorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTUKIG1zZ2lkICJGaW5kIGxpbmUgbW92ZW1lbnRzIHdpdGhpbiBhbmQgYWNyb3NzIGZpbGVzIgogbXNnc3RyICLmib7liLDmlofku7blhoXlj4rot6jmlofku7bnmoTooYznp7vliqgiCiAKLSM6IGJ1aWx0aW4vYmxhbWUuYzoyMzc1CisjOiBidWlsdGluL2JsYW1lLmM6MjI5NgogbXNnaWQgIm4sbSIKIG1zZ3N0ciAibixtIgogCi0jOiBidWlsdGluL2JsYW1lLmM6MjM3NQorIzogYnVpbHRpbi9ibGFtZS5jOjIyOTYKIG1zZ2lkICJQcm9jZXNzIG9ubHkgbGluZSByYW5nZSBuLG0sIGNvdW50aW5nIGZyb20gMSIKIG1zZ3N0ciAi5Y+q5aSE55CG6KGM6IyD5Zu05ZyoIG4g5ZKMIG0g5LmL6Ze055qE77yM5LuOIDEg5byA5aeLIgogCkBAIC0yNzA3LDggKzI3NzcsOCBAQAogbXNnc3RyICLkvZznlKjkuo7ov5znqIvot5/ouKrliIbmlK8iCiAKICM6IGJ1aWx0aW4vYnJhbmNoLmM6ODA1IGJ1aWx0aW4vYnJhbmNoLmM6ODExIGJ1aWx0aW4vYnJhbmNoLmM6ODMyCi0jOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjEzNjggYnVpbHRpbi9jb21taXQuYzoxMzY5Ci0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzAgYnVpbHRpbi9jb21taXQuYzoxMzcxIGJ1aWx0aW4vdGFnLmM6NDY4CisjOiBidWlsdGluL2JyYW5jaC5jOjgzOCBidWlsdGluL2NvbW1pdC5jOjE0MTQgYnVpbHRpbi9jb21taXQuYzoxNDE1CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTYgYnVpbHRpbi9jb21taXQuYzoxNDE3IGJ1aWx0aW4vdGFnLmM6NDY4CiBtc2dpZCAiY29tbWl0IgogbXNnc3RyICLmj5DkuqQiCiAKQEAgLTI3NzIsNyArMjg0Miw3IEBACiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgSEVBRCBhcyBhIHZhbGlkIHJlZi4iCiBtc2dzdHIgIuaXoOazleWwhiBIRUFEIOino+aekOS4uuacieaViOW8leeUqOOAgiIKIAotIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYxOQorIzogYnVpbHRpbi9icmFuY2guYzo4NjAgYnVpbHRpbi9jbG9uZS5jOjYzMAogbXNnaWQgIkhFQUQgbm90IGZvdW5kIGJlbG93IHJlZnMvaGVhZHMhIgogbXNnc3RyICJIRUFEIOayoeacieS9jeS6jiAvcmVmcy9oZWFkcyDkuYvkuIvvvIEiCiAKQEAgLTI4ODksNDMgKzI5NTksNDMgQEAKIG1zZ2lkICJOZWVkIGEgcmVwb3NpdG9yeSB0byB1bmJ1bmRsZS4iCiBtc2dzdHIgIumcgOimgeS4gOS4queJiOacrOW6k+adpeino+WMheOAgiIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE3NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjMwMwogbXNnaWQgImdpdCBjYXQtZmlsZSAoLXR8LXN8LWV8LXB8PHR5cGU+fC0tdGV4dGNvbnYpIDxvYmplY3Q+IgogbXNnc3RyICJnaXQgY2F0LWZpbGUgKC10fC1zfC1lfC1wfDznsbvlnos+fC0tdGV4dGNvbnYpIDzlr7nosaE+IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MTc3CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzA0CiBtc2dpZCAiZ2l0IGNhdC1maWxlICgtLWJhdGNofC0tYmF0Y2gtY2hlY2spIDwgPGxpc3Rfb2Zfb2JqZWN0cz4iCiBtc2dzdHIgImdpdCBjYXQtZmlsZSAoLS1iYXRjaHwtLWJhdGNoLWNoZWNrKSA8IDzlr7nosaHliJfooag+IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MTk1CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzQxCiBtc2dpZCAiPHR5cGU+IGNhbiBiZSBvbmUgb2Y6IGJsb2IsIHRyZWUsIGNvbW1pdCwgdGFnIgogbXNnc3RyICI857G75Z6LPiDlj6/ku6XmmK/lhbbkuK3kuYvkuIDvvJpibG9i44CBdHJlZeOAgWNvbW1pdOOAgXRhZyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0MgogbXNnaWQgInNob3cgb2JqZWN0IHR5cGUiCiBtc2dzdHIgIuaYvuekuuWvueixoeexu+WeiyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5NworIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0MwogbXNnaWQgInNob3cgb2JqZWN0IHNpemUiCiBtc2dzdHIgIuaYvuekuuWvueixoeWkp+WwjyIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjE5OQorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0NQogbXNnaWQgImV4aXQgd2l0aCB6ZXJvIHdoZW4gdGhlcmUncyBubyBlcnJvciIKIG1zZ3N0ciAi5b2T5rKh5pyJ6ZSZ6K+v5pe26YCA5Ye65bm26L+U5Zue6Zu2IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjAwCisjOiBidWlsdGluL2NhdC1maWxlLmM6MzQ2CiBtc2dpZCAicHJldHR5LXByaW50IG9iamVjdCdzIGNvbnRlbnQiCiBtc2dzdHIgIue+juinguWcsOaJk+WNsOWvueixoeeahOWGheWuuSIKIAotIzogYnVpbHRpbi9jYXQtZmlsZS5jOjIwMgorIzogYnVpbHRpbi9jYXQtZmlsZS5jOjM0OAogbXNnaWQgImZvciBibG9iIG9iamVjdHMsIHJ1biB0ZXh0Y29udiBvbiBvYmplY3QncyBjb250ZW50IgogbXNnc3RyICLlr7nkuo7mlbDmja7vvIhibG9i77yJ5a+56LGh77yM5a+55YW25YaF5a655omn6KGMIHRleHRjb252IgogCi0jOiBidWlsdGluL2NhdC1maWxlLmM6MjA0CisjOiBidWlsdGluL2NhdC1maWxlLmM6MzUwCiBtc2dpZCAic2hvdyBpbmZvIGFuZCBjb250ZW50IG9mIG9iamVjdHMgZmVkIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICLmmL7npLrku47moIflh4bovpPlhaXmj5DkvpvnmoTlr7nosaHnmoTkv6Hmga/lkozlhoXlrrkiCiAKLSM6IGJ1aWx0aW4vY2F0LWZpbGUuYzoyMDcKKyM6IGJ1aWx0aW4vY2F0LWZpbGUuYzozNTMKIG1zZ2lkICJzaG93IGluZm8gYWJvdXQgb2JqZWN0cyBmZWQgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIuaYvuekuuS7juagh+WHhui+k+WFpeaPkOS+m+eahOWvueixoeeahOS/oeaBryIKIApAQCAtMjk1MywzMCArMzAyMyw1NSBAQAogbXNnaWQgImlucHV0IHBhdGhzIGFyZSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBjaGFyYWN0ZXIiCiBtc2dzdHIgIui+k+WFpei3r+W+hOS7pW51bGzlrZfnrKbnu4jmraIiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTggYnVpbHRpbi9jaGVja291dC5jOjEwNDQgYnVpbHRpbi9nYy5jOjE3NworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxOCBidWlsdGluL2NoZWNrb3V0LmM6MTA1NCBidWlsdGluL2djLmM6MTc3CiBtc2dpZCAic3VwcHJlc3MgcHJvZ3Jlc3MgcmVwb3J0aW5nIgogbXNnc3RyICLkuI3mmL7npLrov5vluqbmiqXlkYoiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ2CisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjI2Cittc2dpZCAic2hvdyBub24tbWF0Y2hpbmcgaW5wdXQgcGF0aHMiCittc2dzdHIgIuaYvuekuuacquWMuemFjeeahOi+k+WFpei3r+W+hCIKKworIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNDMKIG1zZ2lkICJjYW5ub3Qgc3BlY2lmeSBwYXRobmFtZXMgd2l0aCAtLXN0ZGluIgogbXNnc3RyICLkuI3og73lkIzml7bmj5Dkvpvot6/lvoTlj4ogLS1zdGRpbiDlj4LmlbAiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTQ5CisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0NgogbXNnaWQgIi16IG9ubHkgbWFrZXMgc2Vuc2Ugd2l0aCAtLXN0ZGluIgogbXNnc3RyICIteiDpnIDopoHlkowgLS1zdGRpbiDlj4LmlbDlhbHnlKjmiY3mnInmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTUxCisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE0OAogbXNnaWQgIm5vIHBhdGggc3BlY2lmaWVkIgogbXNnc3RyICLmnKrmjIflrprot6/lvoQiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU1CisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1MgogbXNnaWQgIi0tcXVpZXQgaXMgb25seSB2YWxpZCB3aXRoIGEgc2luZ2xlIHBhdGhuYW1lIgogbXNnc3RyICLlj4LmlbAgLS1xdWlldCDlj6rlnKjmj5DkvpvkuIDkuKrot6/lvoTlkI3ml7bmnInmlYgiCiAKLSM6IGJ1aWx0aW4vY2hlY2staWdub3JlLmM6MTU3CisjOiBidWlsdGluL2NoZWNrLWlnbm9yZS5jOjE1NAogbXNnaWQgImNhbm5vdCBoYXZlIGJvdGggLS1xdWlldCBhbmQgLS12ZXJib3NlIgogbXNnc3RyICLkuI3og73lkIzml7bmj5DkvpsgLS1xdWlldCDlkowgLS12ZXJib3NlIOWPguaVsCIKIAorIzogYnVpbHRpbi9jaGVjay1pZ25vcmUuYzoxNTcKK21zZ2lkICItLW5vbi1tYXRjaGluZyBpcyBvbmx5IHZhbGlkIHdpdGggLS12ZXJib3NlIgorbXNnc3RyICItLW5vbi1tYXRjaGluZyDpgInpobnlj6rlnKjkvb/nlKggLS12ZXJib3NlIOaXtuacieaViCIKKworIzogYnVpbHRpbi9jaGVjay1tYWlsbWFwLmM6OAorbXNnaWQgImdpdCBjaGVjay1tYWlsbWFwIFtvcHRpb25zXSA8Y29udGFjdD4uLi4iCittc2dzdHIgImdpdCBjaGVjay1tYWlsbWFwIFvpgInpobldIDzogZTns7vlnLDlnYA+Li4uIgorCisjOiBidWlsdGluL2NoZWNrLW1haWxtYXAuYzoxMworbXNnaWQgImFsc28gcmVhZCBjb250YWN0cyBmcm9tIHN0ZGluIgorbXNnc3RyICLov5jku47moIflh4bovpPlhaXor7vlj5bogZTns7vlnLDlnYAiCisKKyM6IGJ1aWx0aW4vY2hlY2stbWFpbG1hcC5jOjI0CisjLCBjLWZvcm1hdAorbXNnaWQgInVuYWJsZSB0byBwYXJzZSBjb250YWN0OiAlcyIKK21zZ3N0ciAi5LiN6IO96Kej5p6Q6IGU57O75Zyw5Z2A77yaJXMiCisKKyM6IGJ1aWx0aW4vY2hlY2stbWFpbG1hcC5jOjQ3Cittc2dpZCAibm8gY29udGFjdHMgc3BlY2lmaWVkIgorbXNnc3RyICLmnKrmjIflrprogZTns7vlnLDlnYAiCisKICM6IGJ1aWx0aW4vY2hlY2tvdXQtaW5kZXguYzoxMjYKIG1zZ2lkICJnaXQgY2hlY2tvdXQtaW5kZXggW29wdGlvbnNdIFstLV0gWzxmaWxlPi4uLl0iCiBtc2dzdHIgImdpdCBjaGVja291dC1pbmRleCBb6YCJ6aG5XSBbLS1dIFs85paH5Lu2Pi4uLl0iCkBAIC0zMDkzLDQzICszMTg4LDQzIEBACiBtc2dpZCAiQ2FuIG5vdCBkbyByZWZsb2cgZm9yICclcydcbiIKIG1zZ3N0ciAi5LiN6IO95a+5ICclcycg5omn6KGMIHJlZmxvZyDmk43kvZxcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjYzNAorIzogYnVpbHRpbi9jaGVja291dC5jOjYzOQogbXNnaWQgIkhFQUQgaXMgbm93IGF0IgogbXNnc3RyICJIRUFEIOebruWJjeS9jeS6jiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjY0MQorIzogYnVpbHRpbi9jaGVja291dC5jOjY0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLph43nva7liIbmlK8gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFscmVhZHkgb24gJyVzJ1xuIgogbXNnc3RyICLlt7Lnu4/kvY3kuo4gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjQ4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGFuZCByZXNldCBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLliIfmjaLlubbph43nva7liIbmlK8gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjUwIGJ1aWx0aW4vY2hlY2tvdXQuYzo5ODcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo2NTUgYnVpbHRpbi9jaGVja291dC5jOjk5NwogIywgYy1mb3JtYXQKIG1zZ2lkICJTd2l0Y2hlZCB0byBhIG5ldyBicmFuY2ggJyVzJ1xuIgogbXNnc3RyICLliIfmjaLliLDkuIDkuKrmlrDliIbmlK8gJyVzJ1xuIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6NjUyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6NjU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIlN3aXRjaGVkIHRvIGJyYW5jaCAnJXMnXG4iCiBtc2dzdHIgIuWIh+aNouWIsOWIhuaUryAnJXMnXG4iCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogYnVpbHRpbi9jaGVja291dC5jOjcwOAorIzogYnVpbHRpbi9jaGVja291dC5jOjcxMwogIywgYy1mb3JtYXQKIG1zZ2lkICIgLi4uIGFuZCAlZCBtb3JlLlxuIgogbXNnc3RyICIgLi4uIOWPiuWFtuWugyAlZCDkuKrjgIJcbiIKIAogIy4gVGhlIHNpbmd1bGFyIHZlcnNpb24KLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MTQKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIldhcm5pbmc6IHlvdSBhcmUgbGVhdmluZyAlZCBjb21taXQgYmVoaW5kLCBub3QgY29ubmVjdGVkIHRvXG4iCkBAIC0zMTUwLDcgKzMyNDUsNyBAQAogIlxuIgogIiVzXG4iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzIKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3MzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIklmIHlvdSB3YW50IHRvIGtlZXAgdGhlbSBieSBjcmVhdGluZyBhIG5ldyBicmFuY2gsIHRoaXMgbWF5IGJlIGEgZ29vZCB0aW1lXG4iCkBAIC0zMTY1LDEzNiArMzI2MCwxMzYgQEAKICIgZ2l0IGJyYW5jaCBuZXdfYnJhbmNoX25hbWUgJXNcbiIKICJcbiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjc2MgorIzogYnVpbHRpbi9jaGVja291dC5jOjc2NwogbXNnaWQgImludGVybmFsIGVycm9yIGluIHJldmlzaW9uIHdhbGsiCiBtc2dzdHIgIuWcqOeJiOacrOmBjeWOhuaXtumBh+WIsOWGhemDqOmUmeivryIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjc2NgorIzogYnVpbHRpbi9jaGVja291dC5jOjc3MQogbXNnaWQgIlByZXZpb3VzIEhFQUQgcG9zaXRpb24gd2FzIgogbXNnc3RyICLkuYvliY3nmoQgSEVBRCDkvY3nva7mmK8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo3OTMgYnVpbHRpbi9jaGVja291dC5jOjk4MgorIzogYnVpbHRpbi9jaGVja291dC5jOjc5OCBidWlsdGluL2NoZWNrb3V0LmM6OTkyCiBtc2dpZCAiWW91IGFyZSBvbiBhIGJyYW5jaCB5ZXQgdG8gYmUgYm9ybiIKIG1zZ3N0ciAi5oKo5L2N5LqO5LiA5Liq5bCa5pyq5Yid5aeL5YyW55qE5YiG5pSvIgogCiAjLiBjYXNlICgxKQotIzogYnVpbHRpbi9jaGVja291dC5jOjkxOAorIzogYnVpbHRpbi9jaGVja291dC5jOjkyOAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIHJlZmVyZW5jZTogJXMiCiBtc2dzdHIgIuaXoOaViOW8leeUqO+8miVzIgogCiAjLiBjYXNlICgxKTogd2FudCBhIHRyZWUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzo5NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAicmVmZXJlbmNlIGlzIG5vdCBhIHRyZWU6ICVzIgogbXNnc3RyICLlvJXnlKjkuI3mmK/kuIDkuKrmoJHvvJolcyIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjk5NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDYKIG1zZ2lkICJwYXRocyBjYW5ub3QgYmUgdXNlZCB3aXRoIHN3aXRjaGluZyBicmFuY2hlcyIKIG1zZ3N0ciAi6Lev5b6E5LiN6IO95ZKM5YiH5o2i5YiG5pSv5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6OTk5IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDAzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAwOSBidWlsdGluL2NoZWNrb3V0LmM6MTAxMwogIywgYy1mb3JtYXQKIG1zZ2lkICInJXMnIGNhbm5vdCBiZSB1c2VkIHdpdGggc3dpdGNoaW5nIGJyYW5jaGVzIgogbXNnc3RyICInJXMnIOS4jeiDveWSjOWIh+aNouWIhuaUr+WQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwMDcgYnVpbHRpbi9jaGVja291dC5jOjEwMTAgYnVpbHRpbi9jaGVja291dC5jOjEwMTUKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDE4CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTAxNyBidWlsdGluL2NoZWNrb3V0LmM6MTAyMCBidWlsdGluL2NoZWNrb3V0LmM6MTAyNQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwMjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiJyVzJyBjYW5ub3QgYmUgdXNlZCB3aXRoICclcyciCiBtc2dzdHIgIiclcycg5LiN6IO95ZKMICclcycg5ZCM5pe25L2/55SoIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTAyMworIzogYnVpbHRpbi9jaGVja291dC5jOjEwMzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IHN3aXRjaCBicmFuY2ggdG8gYSBub24tY29tbWl0ICclcyciCiBtc2dzdHIgIuS4jeiDveWIh+aNouWIhuaUr+WIsOS4gOS4qumdnuaPkOS6pCAnJXMnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA0NSBidWlsdGluL2NoZWNrb3V0LmM6MTA0NyBidWlsdGluL2Nsb25lLmM6OTAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU1IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU3IGJ1aWx0aW4vY2xvbmUuYzo4OQogIzogYnVpbHRpbi9yZW1vdGUuYzoxNjkgYnVpbHRpbi9yZW1vdGUuYzoxNzEKIG1zZ2lkICJicmFuY2giCiBtc2dzdHIgIuWIhuaUryIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDYKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU2CiBtc2dpZCAiY3JlYXRlIGFuZCBjaGVja291dCBhIG5ldyBicmFuY2giCiBtc2dzdHIgIuWIm+W7uuW5tuajgOWHuuS4gOS4quaWsOeahOWIhuaUryIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDgKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU4CiBtc2dpZCAiY3JlYXRlL3Jlc2V0IGFuZCBjaGVja291dCBhIGJyYW5jaCIKIG1zZ3N0ciAi5Yib5bu6L+mHjee9ruW5tuajgOWHuuS4gOS4quWIhuaUryIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNDkKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU5CiBtc2dpZCAiY3JlYXRlIHJlZmxvZyBmb3IgbmV3IGJyYW5jaCIKIG1zZ3N0ciAi5Li65paw55qE5YiG5pSv5Yib5bu65byV55So5pel5b+XIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1MAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjAKIG1zZ2lkICJkZXRhY2ggdGhlIEhFQUQgYXQgbmFtZWQgY29tbWl0IgogbXNnc3RyICLmiJDkuLrmjIflkJHor6Xmj5DkuqTnmoTliIbnprvlpLTmjIfpkogiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MQogbXNnaWQgInNldCB1cHN0cmVhbSBpbmZvIGZvciBuZXcgYnJhbmNoIgogbXNnc3RyICLkuLrmlrDnmoTliIbmlK/orr7nva7kuIrmuLjkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDUzCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MwogbXNnaWQgIm5ldyBicmFuY2giCiBtc2dzdHIgIuaWsOWIhuaUryIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNTMKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYzCiBtc2dpZCAibmV3IHVucGFyZW50ZWQgYnJhbmNoIgogbXNnc3RyICLmlrDnmoTmsqHmnInniLbmj5DkuqTnmoTliIbmlK8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDU0CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2NAogbXNnaWQgImNoZWNrb3V0IG91ciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKIG1zZ3N0ciAi5a+55bCa5pyq5ZCI5bm255qE5paH5Lu25qOA5Ye65oiR5Lus55qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1NgorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjYKIG1zZ2lkICJjaGVja291dCB0aGVpciB2ZXJzaW9uIGZvciB1bm1lcmdlZCBmaWxlcyIKIG1zZ3N0ciAi5a+55bCa5pyq5ZCI5bm255qE5paH5Lu25qOA5Ye65LuW5Lus55qE54mI5pysIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OAorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjgKIG1zZ2lkICJmb3JjZSBjaGVja291dCAodGhyb3cgYXdheSBsb2NhbCBtb2RpZmljYXRpb25zKSIKIG1zZ3N0ciAi5by65Yi25qOA5Ye677yI5Lii5byD5pys5Zyw5L+u5pS577yJIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA1OQorIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjkKIG1zZ2lkICJwZXJmb3JtIGEgMy13YXkgbWVyZ2Ugd2l0aCB0aGUgbmV3IGJyYW5jaCIKIG1zZ3N0ciAi5ZKM5paw55qE5YiG5pSv5omn6KGM5LiJ6Lev5ZCI5bm2IgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTA2MCBidWlsdGluL21lcmdlLmM6MjE3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MCBidWlsdGluL21lcmdlLmM6MjMyCiBtc2dpZCAidXBkYXRlIGlnbm9yZWQgZmlsZXMgKGRlZmF1bHQpIgogbXNnc3RyICLmm7TmlrDlv73nlaXnmoTmlofku7bvvIjpu5jorqTvvIkiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYxIGJ1aWx0aW4vbG9nLmM6MTE1OCBwYXJzZS1vcHRpb25zLmg6MjQ1CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MSBidWlsdGluL2xvZy5jOjEyMDggcGFyc2Utb3B0aW9ucy5oOjI0OQogbXNnaWQgInN0eWxlIgogbXNnc3RyICLpo47moLwiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDYyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3MgogbXNnaWQgImNvbmZsaWN0IHN0eWxlIChtZXJnZSBvciBkaWZmMykiCiBtc2dzdHIgIuWGsueqgei+k+WHuumjjuagvO+8iG1lcmdlIOaIliBkaWZmM++8iSIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjEwNjUKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDc1CiBtc2dpZCAiZG8gbm90IGxpbWl0IHBhdGhzcGVjcyB0byBzcGFyc2UgZW50cmllcyBvbmx5IgogbXNnc3RyICLlr7not6/lvoTkuI3lgZrnqIDnlo/mo4Dlh7rnmoTpmZDliLYiCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDY3CisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTA3NwogbXNnaWQgInNlY29uZCBndWVzcyAnZ2l0IGNoZWNrb3V0IG5vLXN1Y2gtYnJhbmNoJyIKIG1zZ3N0ciAi5YaN6ICF54yc5rWLJ2dpdCBjaGVja291dCBuby1zdWNoLWJyYW5jaCciCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMDkxCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTEwMQogbXNnaWQgIi1iLCAtQiBhbmQgLS1vcnBoYW4gYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSIKIG1zZ3N0ciAiLWLjgIEtQiDlkowgLS1vcnBoYW4g5piv5LqS5pal55qEIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTEwOAorIzogYnVpbHRpbi9jaGVja291dC5jOjExMTgKIG1zZ2lkICItLXRyYWNrIG5lZWRzIGEgYnJhbmNoIG5hbWUiCiBtc2dzdHIgIi0tdHJhY2sg6ZyA6KaB5LiA5Liq5YiG5pSv5ZCNIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTExNQorIzogYnVpbHRpbi9jaGVja291dC5jOjExMjUKIG1zZ2lkICJNaXNzaW5nIGJyYW5jaCBuYW1lOyB0cnkgLWIiCiBtc2dzdHIgIue8uuWwkeWIhuaUr+WQje+8m+WwneivlSAtYiIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNTAKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYwCiBtc2dpZCAiaW52YWxpZCBwYXRoIHNwZWNpZmljYXRpb24iCiBtc2dzdHIgIuaXoOaViOeahOi3r+W+hOinhOagvCIKIAotIzogYnVpbHRpbi9jaGVja291dC5jOjExNTcKKyM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTY3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgdXBkYXRlIHBhdGhzIGFuZCBzd2l0Y2ggdG8gYnJhbmNoICclcycgYXQgdGhlIHNhbWUgdGltZS5cbiIKQEAgLTMzMDMsMjI3ICszMzk4LDMzMCBAQAogIuS4jeiDveWQjOaXtuabtOaWsOi3r+W+hOW5tuWIh+aNouWIsOWIhuaUryclcyfjgIJcbiIKICLmgqjmmK/mg7PopoHmo4Dlh7ogJyVzJyDkvYblhbbmnKrog73op6PmnpDkuLrmj5DkuqTkuYjvvJ8iCiAKLSM6IGJ1aWx0aW4vY2hlY2tvdXQuYzoxMTYyCisjOiBidWlsdGluL2NoZWNrb3V0LmM6MTE3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJnaXQgY2hlY2tvdXQ6IC0tZGV0YWNoIGRvZXMgbm90IHRha2UgYSBwYXRoIGFyZ3VtZW50ICclcyciCiBtc2dzdHIgImdpdCBjaGVja291dO+8mi0tZGV0YWNoIOS4jeiDveaOpeaUtui3r+W+hOWPguaVsCAnJXMnIgogCi0jOiBidWlsdGluL2NoZWNrb3V0LmM6MTE2NgorIzogYnVpbHRpbi9jaGVja291dC5jOjExNzYKIG1zZ2lkICIiCiAiZ2l0IGNoZWNrb3V0OiAtLW91cnMvLS10aGVpcnMsIC0tZm9yY2UgYW5kIC0tbWVyZ2UgYXJlIGluY29tcGF0aWJsZSB3aGVuXG4iCiAiY2hlY2tpbmcgb3V0IG9mIHRoZSBpbmRleC4iCiBtc2dzdHIgIiIKICJnaXQgY2hlY2tvdXTvvJrlnKjku47ntKLlvJXmo4Dlh7rml7bvvIwtLW91cnMvLS10aGVpcnPjgIEtLWZvcmNlIOWSjCAtLW1lcmdlIOS4jeWFvOWuueOAgiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjIwCi1tc2dpZCAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDxwYXR0ZXJuPl0gWy14IHwgLVhdIFstLV0gPHBhdGhzPi4uLiIKLW1zZ3N0ciAiZ2l0IGNsZWFuIFstZF0gWy1mXSBbLW5dIFstcV0gWy1lIDzmqKHlvI8+XSBbLXggfCAtWF0gWy0tXSA86Lev5b6EPi4uLiIKKyM6IGJ1aWx0aW4vY2xlYW4uYzoyNQorbXNnaWQgIiIKKyJnaXQgY2xlYW4gWy1kXSBbLWZdIFstaV0gWy1uXSBbLXFdIFstZSA8cGF0dGVybj5dIFsteCB8IC1YXSBbLS1dIDxwYXRocz4uLi4iCittc2dzdHIgIiIKKyJnaXQgY2xlYW4gWy1kXSBbLWZdIFstaV0gWy1uXSBbLXFdIFstZSA85qih5byPPl0gWy14IHwgLVhdIFstLV0gPOi3r+W+hD4uLi4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoyNAorIzogYnVpbHRpbi9jbGVhbi5jOjI5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlJlbW92aW5nICVzXG4iCiBtc2dzdHIgIuato+WIoOmZpCAlc1xuIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MjUKKyM6IGJ1aWx0aW4vY2xlYW4uYzozMAogIywgYy1mb3JtYXQKIG1zZ2lkICJXb3VsZCByZW1vdmUgJXNcbiIKIG1zZ3N0ciAi5bCG5Yig6ZmkICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoyNgorIzogYnVpbHRpbi9jbGVhbi5jOjMxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlNraXBwaW5nIHJlcG9zaXRvcnkgJXNcbiIKIG1zZ3N0ciAi5b+955Wl54mI5pys5bqTICVzXG4iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoyNworIzogYnVpbHRpbi9jbGVhbi5jOjMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIldvdWxkIHNraXAgcmVwb3NpdG9yeSAlc1xuIgogbXNnc3RyICLlsIblv73nlaXniYjmnKzlupMgJXNcbiIKIAotIzogYnVpbHRpbi9jbGVhbi5jOjI4CisjOiBidWlsdGluL2NsZWFuLmM6MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHJlbW92ZSAlcyIKIG1zZ3N0ciAi5peg5rOV5Yig6ZmkICVzIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTYwCisjOiBidWlsdGluL2NsZWFuLmM6MjkzCittc2dpZCAiIgorIlByb21wdCBoZWxwOlxuIgorIjEgICAgICAgICAgLSBzZWxlY3QgYSBudW1iZXJlZCBpdGVtXG4iCisiZm9vICAgICAgICAtIHNlbGVjdCBpdGVtIGJhc2VkIG9uIHVuaXF1ZSBwcmVmaXhcbiIKKyIgICAgICAgICAgIC0gKGVtcHR5KSBzZWxlY3Qgbm90aGluZyIKK21zZ3N0ciAiIgorIuW4ruWKqe+8mlxuIgorIjEgICAgICAgICAgLSDpgJrov4fnvJblj7fpgInmi6nkuIDkuKrpgInpoblcbiIKKyJmb28gICAgICAgIC0g6YCa6L+H5qCH6aKY6YCJ5oup5LiA5Liq6YCJ6aG5XG4iCisiICAgICAgICAgICAtIO+8iOepuu+8ieS7gOS5iOS5n+S4jemAieaLqSIKKworIzogYnVpbHRpbi9jbGVhbi5jOjI5NworbXNnaWQgIiIKKyJQcm9tcHQgaGVscDpcbiIKKyIxICAgICAgICAgIC0gc2VsZWN0IGEgc2luZ2xlIGl0ZW1cbiIKKyIzLTUgICAgICAgIC0gc2VsZWN0IGEgcmFuZ2Ugb2YgaXRlbXNcbiIKKyIyLTMsNi05ICAgIC0gc2VsZWN0IG11bHRpcGxlIHJhbmdlc1xuIgorImZvbyAgICAgICAgLSBzZWxlY3QgaXRlbSBiYXNlZCBvbiB1bmlxdWUgcHJlZml4XG4iCisiLS4uLiAgICAgICAtIHVuc2VsZWN0IHNwZWNpZmllZCBpdGVtc1xuIgorIiogICAgICAgICAgLSBjaG9vc2UgYWxsIGl0ZW1zXG4iCisiICAgICAgICAgICAtIChlbXB0eSkgZmluaXNoIHNlbGVjdGluZyIKK21zZ3N0ciAiIgorIuW4ruWKqe+8mlxuIgorIjEgICAgICAgICAgLSDpgInmi6nkuIDkuKrpgInpoblcbiIKKyIzLTUgICAgICAgIC0g6YCJ5oup5LiA5Liq6IyD5Zu05YaF55qE5omA5pyJ6YCJ6aG5XG4iCisiMi0zLDYtOSAgICAtIOmAieaLqeWkmuS4quiMg+WbtOWGheeahOaJgOaciemAiemhuVxuIgorImZvbyAgICAgICAgLSDpgJrov4fmoIfpopjpgInmi6nkuIDkuKrpgInpoblcbiIKKyItLi4uICAgICAgIC0g5Y+N6YCJ54m55a6a55qE6YCJ6aG5XG4iCisiKiAgICAgICAgICAtIOmAieaLqeaJgOaciemAiemhuVxuIgorIiAgICAgICAgICAgLSDvvIjnqbrvvInnu5PmnZ/pgInmi6kiCisKKyM6IGJ1aWx0aW4vY2xlYW4uYzo0OTEKKyMsIGMtZm9ybWF0Cittc2dpZCAiSHVoICglcyk/IgorbXNnc3RyICLll6/vvIglc++8ie+8nyIKKworIzogYnVpbHRpbi9jbGVhbi5jOjYzNAorIywgYy1mb3JtYXQKK21zZ2lkICJJbnB1dCBpZ25vcmUgcGF0dGVybnM+PiAiCittc2dzdHIgIui+k+WFpeaooeeJiOS7peaOkumZpOadoeebrj4+ICIKKworIzogYnVpbHRpbi9jbGVhbi5jOjY3MQorIywgYy1mb3JtYXQKK21zZ2lkICJXQVJOSU5HOiBDYW5ub3QgZmluZCBpdGVtcyBtYXRjaGVkIGJ5OiAlcyIKK21zZ3N0ciAi6K2m5ZGK77ya5peg5rOV5om+5Yiw5ZKMICVzIOWMuemFjeeahOadoeebriIKKworIzogYnVpbHRpbi9jbGVhbi5jOjY5MgorbXNnaWQgIlNlbGVjdCBpdGVtcyB0byBkZWxldGUiCittc2dzdHIgIumAieaLqeimgeWIoOmZpOeahOadoeebriIKKworIzogYnVpbHRpbi9jbGVhbi5jOjczMgorIywgYy1mb3JtYXQKK21zZ2lkICJyZW1vdmUgJXM/ICIKK21zZ3N0ciAi5Yig6ZmkICVz77yfIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzU3Cittc2dpZCAiQnllLiIKK21zZ3N0ciAi5YaN6KeB44CCIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzY1Cittc2dpZCAiIgorImNsZWFuICAgICAgICAgICAgICAgLSBzdGFydCBjbGVhbmluZ1xuIgorImZpbHRlciBieSBwYXR0ZXJuICAgLSBleGNsdWRlIGl0ZW1zIGZyb20gZGVsZXRpb25cbiIKKyJzZWxlY3QgYnkgbnVtYmVycyAgIC0gc2VsZWN0IGl0ZW1zIHRvIGJlIGRlbGV0ZWQgYnkgbnVtYmVyc1xuIgorImFzayBlYWNoICAgICAgICAgICAgLSBjb25maXJtIGVhY2ggZGVsZXRpb24gKGxpa2UgXCJybSAtaVwiKVxuIgorInF1aXQgICAgICAgICAgICAgICAgLSBzdG9wIGNsZWFuaW5nXG4iCisiaGVscCAgICAgICAgICAgICAgICAtIHRoaXMgc2NyZWVuXG4iCisiPyAgICAgICAgICAgICAgICAgICAtIGhlbHAgZm9yIHByb21wdCBzZWxlY3Rpb24iCittc2dzdHIgIiIKKyJjbGVhbiAgICAgICAgICAgICAgIC0g5byA5aeL5riF55CGXG4iCisiZmlsdGVyIGJ5IHBhdHRlcm4gICAtIOmAmui/h+aooeeJiOaOkumZpOimgeWIoOmZpOeahOadoeebrlxuIgorInNlbGVjdCBieSBudW1iZXJzICAgLSDpgJrov4fmlbDlrZfpgInmi6nopoHliKDpmaTnmoTmnaHnm65cbiIKKyJhc2sgZWFjaCAgICAgICAgICAgIC0g6ZKI5a+55Yig6Zmk6YCQ5LiA6K+i6Zeu77yI5bCx5YOPIFwicm0gLWlcIu+8iVxuIgorInF1aXQgICAgICAgICAgICAgICAgLSDlgZzmraLliKDpmaTlubbpgIDlh7pcbiIKKyJoZWxwICAgICAgICAgICAgICAgIC0g5pi+56S65pys5biu5YqpXG4iCisiPyAgICAgICAgICAgICAgICAgICAtIOaYvuekuuWmguS9leWcqOaPkOekuuespuS4i+mAieaLqeeahOW4ruWKqSIKKworIzogYnVpbHRpbi9jbGVhbi5jOjc5MgorbXNnaWQgIioqKiBDb21tYW5kcyAqKioiCittc2dzdHIgIioqKiDlkb3ku6QgKioqIgorCisjOiBidWlsdGluL2NsZWFuLmM6NzkzCittc2dpZCAiV2hhdCBub3ciCittc2dzdHIgIuivt+mAieaLqSIKKworIzogYnVpbHRpbi9jbGVhbi5jOjgwMQorbXNnaWQgIldvdWxkIHJlbW92ZSB0aGUgZm9sbG93aW5nIGl0ZW06IgorbXNnaWRfcGx1cmFsICJXb3VsZCByZW1vdmUgdGhlIGZvbGxvd2luZyBpdGVtczoiCittc2dzdHJbMF0gIuWwhuWIoOmZpOWmguS4i+adoeebru+8miIKK21zZ3N0clsxXSAi5bCG5Yig6Zmk5aaC5LiL5p2h55uu77yaIgorCisjOiBidWlsdGluL2NsZWFuLmM6ODE4Cittc2dpZCAiTm8gbW9yZSBmaWxlcyB0byBjbGVhbiwgZXhpdGluZy4iCittc2dzdHIgIuayoeacieimgea4heeQhueahOaWh+S7tu+8jOmAgOWHuuOAgiIKKworIzogYnVpbHRpbi9jbGVhbi5jOjg1MAogbXNnaWQgImRvIG5vdCBwcmludCBuYW1lcyBvZiBmaWxlcyByZW1vdmVkIgogbXNnc3RyICLkuI3miZPljbDliKDpmaTmlofku7bnmoTlkI3np7AiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjIKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NTIKIG1zZ2lkICJmb3JjZSIKIG1zZ3N0ciAi5by65Yi2IgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY0CisjOiBidWlsdGluL2NsZWFuLmM6ODUzCittc2dpZCAiaW50ZXJhY3RpdmUgY2xlYW5pbmciCittc2dzdHIgIuS6pOS6kuW8j+a4hemZpCIKKworIzogYnVpbHRpbi9jbGVhbi5jOjg1NQogbXNnaWQgInJlbW92ZSB3aG9sZSBkaXJlY3RvcmllcyIKIG1zZ3N0ciAi5Yig6Zmk5pW05Liq55uu5b2VIgogCi0jOiBidWlsdGluL2NsZWFuLmM6MTY1IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIgYnVpbHRpbi9ncmVwLmM6NzE3Ci0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzEgYnVpbHRpbi9zaG93LXJlZi5jOjE4MgorIzogYnVpbHRpbi9jbGVhbi5jOjg1NiBidWlsdGluL2Rlc2NyaWJlLmM6NDIwIGJ1aWx0aW4vZ3JlcC5jOjcxNgorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MyBidWlsdGluL25hbWUtcmV2LmM6MzE1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxODYKIG1zZ2lkICJwYXR0ZXJuIgogbXNnc3RyICLmqKHlvI8iCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjYKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NTcKIG1zZ2lkICJhZGQgPHBhdHRlcm4+IHRvIGlnbm9yZSBydWxlcyIKIG1zZ3N0ciAi5re75YqgPOaooeW8jz7liLDlv73nlaXop4TliJkiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjcKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NTgKIG1zZ2lkICJyZW1vdmUgaWdub3JlZCBmaWxlcywgdG9vIgogbXNnc3RyICLkuZ/liKDpmaTlv73nlaXnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxNjkKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NjAKIG1zZ2lkICJyZW1vdmUgb25seSBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICLlj6rliKDpmaTlv73nlaXnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxODcKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4NzgKIG1zZ2lkICIteCBhbmQgLVggY2Fubm90IGJlIHVzZWQgdG9nZXRoZXIiCiBtc2dzdHIgIi14IOWSjCAtWCDkuI3og73lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vY2xlYW4uYzoxOTEKKyM6IGJ1aWx0aW4vY2xlYW4uYzo4ODIKIG1zZ2lkICIiCi0iY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1uIG5vciAtZiBnaXZlbjsgcmVmdXNpbmcgdG8gY2xlYW4iCi1tc2dzdHIgIiIKLSJjbGVhbi5yZXF1aXJlRm9yY2Ug6K6+572u5Li6IHRydWUg5LiU5pyq5o+Q5L6bIC1uIOaIliAtZiDpgInpobnvvIzmi5Lnu53miafooYzmuIXnkIbliqjkvZwiCi0KLSM6IGJ1aWx0aW4vY2xlYW4uYzoxOTQKLW1zZ2lkICIiCi0iY2xlYW4ucmVxdWlyZUZvcmNlIGRlZmF1bHRzIHRvIHRydWUgYW5kIG5laXRoZXIgLW4gbm9yIC1mIGdpdmVuOyByZWZ1c2luZyB0byAiCisiY2xlYW4ucmVxdWlyZUZvcmNlIHNldCB0byB0cnVlIGFuZCBuZWl0aGVyIC1pLCAtbiBub3IgLWYgZ2l2ZW47IHJlZnVzaW5nIHRvICIKICJjbGVhbiIKIG1zZ3N0ciAiIgotImNsZWFuLnJlcXVpcmVGb3JjZSDpu5jorqTkuLogdHJ1ZSDkuJTmnKrmj5DkvpsgLW4g5oiWIC1mIOmAiemhue+8jOaLkue7neaJp+ihjOa4heeQhuWKqOS9nCIKKyJjbGVhbi5yZXF1aXJlRm9yY2Ug6K6+572u5Li6IHRydWUg5LiU5pyq5o+Q5L6bIC1p44CBLW4g5oiWIC1mIOmAiemhue+8jOaLkue7neaJp+ihjOa4heeQhuWKqOS9nCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM3CisjOiBidWlsdGluL2NsZWFuLmM6ODg1Cittc2dpZCAiIgorImNsZWFuLnJlcXVpcmVGb3JjZSBkZWZhdWx0cyB0byB0cnVlIGFuZCBuZWl0aGVyIC1pLCAtbiBub3IgLWYgZ2l2ZW47ICIKKyJyZWZ1c2luZyB0byBjbGVhbiIKK21zZ3N0ciAiIgorImNsZWFuLnJlcXVpcmVGb3JjZSDpu5jorqTkuLogdHJ1ZSDkuJTmnKrmj5DkvpsgLWnjgIEtbiDmiJYgLWYg6YCJ6aG577yM5ouS57ud5omn6KGM5riF55CG5Yqo5L2cIgorCisjOiBidWlsdGluL2Nsb25lLmM6MzYKIG1zZ2lkICJnaXQgY2xvbmUgW29wdGlvbnNdIFstLV0gPHJlcG8+IFs8ZGlyPl0iCiBtc2dzdHIgImdpdCBjbG9uZSBb6YCJ6aG5XSBbLS1dIDzniYjmnKzlupM+IFs86Lev5b6EPl0iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NSBidWlsdGluL2ZldGNoLmM6ODIgYnVpbHRpbi9tZXJnZS5jOjIxNAotIzogYnVpbHRpbi9wdXNoLmM6NDM2CisjOiBidWlsdGluL2Nsb25lLmM6NjQgYnVpbHRpbi9mZXRjaC5jOjgyIGJ1aWx0aW4vbWVyZ2UuYzoyMjkKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ2MgogbXNnaWQgImZvcmNlIHByb2dyZXNzIHJlcG9ydGluZyIKIG1zZ3N0ciAi5by65Yi25pi+56S66L+b5bqm5oql5ZGKIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NjcKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NgogbXNnaWQgImRvbid0IGNyZWF0ZSBhIGNoZWNrb3V0IgogbXNnc3RyICLkuI3liJvlu7rkuIDkuKrmo4Dlh7oiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2OCBidWlsdGluL2Nsb25lLmM6NzAgYnVpbHRpbi9pbml0LWRiLmM6NDg4CisjOiBidWlsdGluL2Nsb25lLmM6NjcgYnVpbHRpbi9jbG9uZS5jOjY5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4OAogbXNnaWQgImNyZWF0ZSBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAi5Yib5bu65LiA5Liq6KO454mI5pys5bqTIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3MgogbXNnaWQgImNyZWF0ZSBhIG1pcnJvciByZXBvc2l0b3J5IChpbXBsaWVzIGJhcmUpIgogbXNnc3RyICLliJvlu7rkuIDkuKrplZzlg4/niYjmnKzlupPvvIjkuZ/mmK/oo7jniYjmnKzlupPvvIkiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NQorIzogYnVpbHRpbi9jbG9uZS5jOjc0CiBtc2dpZCAidG8gY2xvbmUgZnJvbSBhIGxvY2FsIHJlcG9zaXRvcnkiCiBtc2dzdHIgIuS7juacrOWcsOeJiOacrOW6k+WFi+mahiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc3CisjOiBidWlsdGluL2Nsb25lLmM6NzYKIG1zZ2lkICJkb24ndCB1c2UgbG9jYWwgaGFyZGxpbmtzLCBhbHdheXMgY29weSIKIG1zZ3N0ciAi5LiN5L2/55So5pys5Zyw56Gs6ZO+5o6l77yM5aeL57uI5aSN5Yi2IgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3OAogbXNnaWQgInNldHVwIGFzIHNoYXJlZCByZXBvc2l0b3J5IgogbXNnc3RyICLorr7nva7kuLrlhbHkuqvniYjmnKzlupMiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4MSBidWlsdGluL2Nsb25lLmM6ODMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MCBidWlsdGluL2Nsb25lLmM6ODIKIG1zZ2lkICJpbml0aWFsaXplIHN1Ym1vZHVsZXMgaW4gdGhlIGNsb25lIgogbXNnc3RyICLlnKjlhYvpmobml7bliJ3lp4vljJblrZDmqKHnu4QiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NCBidWlsdGluL2luaXQtZGIuYzo0ODUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MyBidWlsdGluL2luaXQtZGIuYzo0ODUKIG1zZ2lkICJ0ZW1wbGF0ZS1kaXJlY3RvcnkiCiBtc2dzdHIgIuaooeadv+ebruW9lSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg1IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgorIzogYnVpbHRpbi9jbG9uZS5jOjg0IGJ1aWx0aW4vaW5pdC1kYi5jOjQ4NgogbXNnaWQgImRpcmVjdG9yeSBmcm9tIHdoaWNoIHRlbXBsYXRlcyB3aWxsIGJlIHVzZWQiCiBtc2dzdHIgIuaooeadv+ebruW9leWwhuiiq+S9v+eUqCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjg3CisjOiBidWlsdGluL2Nsb25lLmM6ODYKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSIKIG1zZ3N0ciAi5byV55So54mI5pys5bqTIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODggYnVpbHRpbi9jb2x1bW4uYzoyNiBidWlsdGluL21lcmdlLWZpbGUuYzo0NAorIzogYnVpbHRpbi9jbG9uZS5jOjg3IGJ1aWx0aW4vY29sdW1uLmM6MjYgYnVpbHRpbi9tZXJnZS1maWxlLmM6NDQKIG1zZ2lkICJuYW1lIgogbXNnc3RyICLlkI3np7AiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4OQorIzogYnVpbHRpbi9jbG9uZS5jOjg4CiBtc2dpZCAidXNlIDxuYW1lPiBpbnN0ZWFkIG9mICdvcmlnaW4nIHRvIHRyYWNrIHVwc3RyZWFtIgogbXNnc3RyICLkvb/nlKg85ZCN56ewPuiAjOS4jeaYryAnb3JpZ2luJyDljrvot5/ouKrkuIrmuLgiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MQorIzogYnVpbHRpbi9jbG9uZS5jOjkwCiBtc2dpZCAiY2hlY2tvdXQgPGJyYW5jaD4gaW5zdGVhZCBvZiB0aGUgcmVtb3RlJ3MgSEVBRCIKIG1zZ3N0ciAi5qOA5Ye6POWIhuaUrz7ogIzkuI3mmK/ov5znqItIRUFEIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5MgogbXNnaWQgInBhdGggdG8gZ2l0LXVwbG9hZC1wYWNrIG9uIHRoZSByZW1vdGUiCiBtc2dzdHIgIui/nOeoiyBnaXQtdXBsb2FkLXBhY2sg6Lev5b6EIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTQgYnVpbHRpbi9mZXRjaC5jOjgzIGJ1aWx0aW4vZ3JlcC5jOjY2MgorIzogYnVpbHRpbi9jbG9uZS5jOjkzIGJ1aWx0aW4vZmV0Y2guYzo4MyBidWlsdGluL2dyZXAuYzo2NjEKIG1zZ2lkICJkZXB0aCIKIG1zZ3N0ciAi5rex5bqmIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTUKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NAogbXNnaWQgImNyZWF0ZSBhIHNoYWxsb3cgY2xvbmUgb2YgdGhhdCBkZXB0aCIKIG1zZ3N0ciAi5Yib5bu65LiA5Liq5oyH5a6a5rex5bqm55qE5rWF5YWL6ZqGIgogCi0jOiBidWlsdGluL2Nsb25lLmM6OTcKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NgogbXNnaWQgImNsb25lIG9ubHkgb25lIGJyYW5jaCwgSEVBRCBvciAtLWJyYW5jaCIKIG1zZ3N0ciAi5Y+q5YWL6ZqG5LiA5Liq5YiG5pSv44CBSEVBRCDmiJYgLS1icmFuY2giCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5OCBidWlsdGluL2luaXQtZGIuYzo0OTQKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NyBidWlsdGluL2luaXQtZGIuYzo0OTQKIG1zZ2lkICJnaXRkaXIiCiBtc2dzdHIgImdpdOebruW9lSIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjk5IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQorIzogYnVpbHRpbi9jbG9uZS5jOjk4IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5NQogbXNnaWQgInNlcGFyYXRlIGdpdCBkaXIgZnJvbSB3b3JraW5nIHRyZWUiCiBtc2dzdHIgImdpdOebruW9leWSjOW3peS9nOWMuuWIhuemuyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjEwMAorIzogYnVpbHRpbi9jbG9uZS5jOjk5CiBtc2dpZCAia2V5PXZhbHVlIgogbXNnc3RyICJrZXk9dmFsdWUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzoxMDEKKyM6IGJ1aWx0aW4vY2xvbmUuYzoxMDAKIG1zZ2lkICJzZXQgY29uZmlnIGluc2lkZSB0aGUgbmV3IHJlcG9zaXRvcnkiCiBtc2dzdHIgIuWcqOaWsOeJiOacrOW6k+S4reiuvue9rumFjee9ruS/oeaBryIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjI1NAorIzogYnVpbHRpbi9jbG9uZS5jOjI1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJyZWZlcmVuY2UgcmVwb3NpdG9yeSAnJXMnIGlzIG5vdCBhIGxvY2FsIHJlcG9zaXRvcnkuIgogbXNnc3RyICLlvJXnlKjniYjmnKzlupMgJyVzJyDkuI3mmK/kuIDkuKrmnKzlnLDniYjmnKzlupPjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMTcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTYKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIGNyZWF0ZSBkaXJlY3RvcnkgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5Yib5bu655uu5b2VICclcyciCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMTkgYnVpbHRpbi9kaWZmLmM6NzcKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMTggYnVpbHRpbi9kaWZmLmM6NzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5p6a5Li+ICclcycg54q25oCBIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzIxCisjOiBidWlsdGluL2Nsb25lLmM6MzIwCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGV4aXN0cyBhbmQgaXMgbm90IGEgZGlyZWN0b3J5IgogbXNnc3RyICIlcyDlrZjlnKjkuJTkuI3mmK/kuIDkuKrnm67lvZUiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzozMzUKKyM6IGJ1aWx0aW4vY2xvbmUuYzozMzQKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmFpbGVkIHRvIHN0YXQgJXNcbiIKIG1zZ3N0ciAi5peg5rOV5p6a5Li+ICVzIOeKtuaAgVxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6MzU3CisjOiBidWlsdGluL2Nsb25lLmM6MzU2CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBjcmVhdGUgbGluayAnJXMnIgogbXNnc3RyICLml6Dms5XliJvlu7rpk77mjqUgJyVzJyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjM2MQorIzogYnVpbHRpbi9jbG9uZS5jOjM2MAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gY29weSBmaWxlIHRvICclcyciCiBtc2dzdHIgIuaXoOazleaLt+i0neaWh+S7tuiHsyAnJXMnIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Mzg0CisjOiBidWlsdGluL2Nsb25lLmM6MzgzCiAjLCBjLWZvcm1hdAogbXNnaWQgImRvbmUuXG4iCiBtc2dzdHIgIuWujOaIkOOAglxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6Mzk3CisjOiBidWlsdGluL2Nsb25lLmM6Mzk2CiBtc2dpZCAiIgogIkNsb25lIHN1Y2NlZWRlZCwgYnV0IGNoZWNrb3V0IGZhaWxlZC5cbiIKICJZb3UgY2FuIGluc3BlY3Qgd2hhdCB3YXMgY2hlY2tlZCBvdXQgd2l0aCAnZ2l0IHN0YXR1cydcbiIKQEAgLTM1MzMsOTAgKzM3MzEsMTA0IEBACiAi5oKo5Y+v5Lul6YCa6L+HICdnaXQgc3RhdHVzJyDmo4Dmn6Xlk6rkupvlt7Looqvmo4Dlh7rvvIznhLblkI7kvb/nlKjlkb3ku6RcbiIKICInZ2l0IGNoZWNrb3V0IC1mIEhFQUQnIOmHjeivlVxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NDc2CisjOiBidWlsdGluL2Nsb25lLmM6NDc1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmaW5kIHJlbW90ZSBicmFuY2ggJXMgdG8gY2xvbmUuIgogbXNnc3RyICLkuI3og73lj5HnjrDopoHlhYvpmobnmoTov5znqIvliIbmlK8gJXPjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo1NTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NTUKKyMsIGMtZm9ybWF0Cittc2dpZCAiQ2hlY2tpbmcgY29ubmVjdGl2aXR5Li4uICIKK21zZ3N0ciAi5qOA5p+l6L+e5o6lLi4uICIKKworIzogYnVpbHRpbi9jbG9uZS5jOjU1OAogbXNnaWQgInJlbW90ZSBkaWQgbm90IHNlbmQgYWxsIG5lY2Vzc2FyeSBvYmplY3RzIgogbXNnc3RyICLov5znqIvmsqHmnInlj5HpgIHmiYDmnInlv4XpobvnmoTlr7nosaEiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2MTAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo1NjAKKyMsIGMtZm9ybWF0Cittc2dpZCAiZG9uZVxuIgorbXNnc3RyICLlrozmiJBcbiIKKworIzogYnVpbHRpbi9jbG9uZS5jOjYyMQogbXNnaWQgInJlbW90ZSBIRUFEIHJlZmVycyB0byBub25leGlzdGVudCByZWYsIHVuYWJsZSB0byBjaGVja291dC5cbiIKIG1zZ3N0ciAi6L+c56iLIEhFQUQg5oyH5ZCR5LiA5Liq5LiN5a2Y5Zyo55qE5byV55So77yM5peg5rOV5qOA5Ye644CCXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo2NDEKKyM6IGJ1aWx0aW4vY2xvbmUuYzo2NTIKIG1zZ2lkICJ1bmFibGUgdG8gY2hlY2tvdXQgd29ya2luZyB0cmVlIgogbXNnc3RyICLkuI3og73mo4Dlh7rlt6XkvZzljLoiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NDkKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjAKIG1zZ2lkICJUb28gbWFueSBhcmd1bWVudHMuIgogbXNnc3RyICLlpKrlpJrlj4LmlbDjgIIiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo3NTMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo3NjQKIG1zZ2lkICJZb3UgbXVzdCBzcGVjaWZ5IGEgcmVwb3NpdG9yeSB0byBjbG9uZS4iCiBtc2dzdHIgIuaCqOW/hemhu+aMh+WumuS4gOS4queJiOacrOW6k+adpeWFi+mahuOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc2NAorIzogYnVpbHRpbi9jbG9uZS5jOjc3NQogIywgYy1mb3JtYXQKIG1zZ2lkICItLWJhcmUgYW5kIC0tb3JpZ2luICVzIG9wdGlvbnMgYXJlIGluY29tcGF0aWJsZS4iCiBtc2dzdHIgIi0tYmFyZSDlkowgLS1vcmlnaW4gJXMg6YCJ6aG55LiN5YW85a6544CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6NzY3CisjOiBidWlsdGluL2Nsb25lLmM6Nzc4CiBtc2dpZCAiLS1iYXJlIGFuZCAtLXNlcGFyYXRlLWdpdC1kaXIgYXJlIGluY29tcGF0aWJsZS4iCiBtc2dzdHIgIi0tYmFyZSDlkowgLS1zZXBhcmF0ZS1naXQtZGlyIOmAiemhueS4jeWFvOWuueOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc4MAorIzogYnVpbHRpbi9jbG9uZS5jOjc5MQogIywgYy1mb3JtYXQKIG1zZ2lkICJyZXBvc2l0b3J5ICclcycgZG9lcyBub3QgZXhpc3QiCiBtc2dzdHIgIueJiOacrOW6kyAnJXMnIOS4jeWtmOWcqCIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc4NQorIzogYnVpbHRpbi9jbG9uZS5jOjc5NgogbXNnaWQgIi0tZGVwdGggaXMgaWdub3JlZCBpbiBsb2NhbCBjbG9uZXM7IHVzZSBmaWxlOi8vIGluc3RlYWQuIgogbXNnc3RyICItLWRlcHRoIOWcqOacrOWcsOWFi+mahuiiq+W/veeVpe+8jOaUueS4uiBmaWxlOi8vIOWNj+iuruivleivleOAgiIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjc5NQorIzogYnVpbHRpbi9jbG9uZS5jOjc5OAorbXNnaWQgIi0tbG9jYWwgaXMgaWdub3JlZCIKK21zZ3N0ciAiLS1sb2NhbCDooqvlv73nlaUiCisKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiZGVzdGluYXRpb24gcGF0aCAnJXMnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYW4gZW1wdHkgZGlyZWN0b3J5LiIKIG1zZ3N0ciAi55uu5qCH6Lev5b6EICclcycg5bey57uP5a2Y5Zyo77yM5bm25LiU5LiN5piv5LiA5Liq56m655uu5b2V44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODA1CisjOiBidWlsdGluL2Nsb25lLmM6ODE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIndvcmtpbmcgdHJlZSAnJXMnIGFscmVhZHkgZXhpc3RzLiIKIG1zZ3N0ciAi5bel5L2c5Yy6ICclcycg5bey57uP5a2Y5Zyo44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODE4IGJ1aWx0aW4vY2xvbmUuYzo4MzAKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4MzEgYnVpbHRpbi9jbG9uZS5jOjg0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgb2YgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Li6ICclcycg5Yib5bu65YWI5a+855uu5b2VIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODIxCisjOiBidWlsdGluL2Nsb25lLmM6ODM0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCBjcmVhdGUgd29yayB0cmVlIGRpciAnJXMnLiIKIG1zZ3N0ciAi5LiN6IO95Li6ICclcycg5Yib5bu65bel5L2c5Yy655uu5b2V44CCIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQwCisjOiBidWlsdGluL2Nsb25lLmM6ODUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byBiYXJlIHJlcG9zaXRvcnkgJyVzJy4uLlxuIgogbXNnc3RyICLlhYvpmobliLDoo7jniYjmnKzlupMgJyVzJy4uLlxuIgogCi0jOiBidWlsdGluL2Nsb25lLmM6ODQyCisjOiBidWlsdGluL2Nsb25lLmM6ODU1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNsb25pbmcgaW50byAnJXMnLi4uXG4iCiBtc2dzdHIgIuato+WFi+mahuWIsCAnJXMnLi4uXG4iCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo4NzcKKyM6IGJ1aWx0aW4vY2xvbmUuYzo4OTAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gY2xvbmUgJXMiCiBtc2dzdHIgIuS4jeefpemBk+WmguS9leWFi+mahiAlcyIKIAotIzogYnVpbHRpbi9jbG9uZS5jOjkyNgorIzogYnVpbHRpbi9jbG9uZS5jOjk0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdGUgYnJhbmNoICVzIG5vdCBmb3VuZCBpbiB1cHN0cmVhbSAlcyIKIG1zZ3N0ciAi6L+c56iL5YiG5pSvICVzIOWcqOS4iua4uCAlcyDmnKrlj5HnjrAiCiAKLSM6IGJ1aWx0aW4vY2xvbmUuYzo5MzMKKyM6IGJ1aWx0aW4vY2xvbmUuYzo5NDkKIG1zZ2lkICJZb3UgYXBwZWFyIHRvIGhhdmUgY2xvbmVkIGFuIGVtcHR5IHJlcG9zaXRvcnkuIgogbXNnc3RyICLmgqjkvLzkuY7lhYvpmobkuobkuIDkuKrnqbrniYjmnKzlupPjgIIiCiAKQEAgLTM2NTIsMTUgKzM4NjQsMTUgQEAKIG1zZ2lkICItLWNvbW1hbmQgbXVzdCBiZSB0aGUgZmlyc3QgYXJndW1lbnQiCiBtc2dzdHIgIi0tY29tbWFuZCDlv4XpobvmmK/nrKzkuIDkuKrlj4LmlbAiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzUKIG1zZ2lkICJnaXQgY29tbWl0IFtvcHRpb25zXSBbLS1dIDxwYXRoc3BlYz4uLi4iCiBtc2dzdHIgImdpdCBjb21taXQgW+mAiemhuV0gWy0tXSA86Lev5b6E5Yy56YWNPi4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOQorIzogYnVpbHRpbi9jb21taXQuYzo0MAogbXNnaWQgImdpdCBzdGF0dXMgW29wdGlvbnNdIFstLV0gPHBhdGhzcGVjPi4uLiIKIG1zZ3N0ciAiZ2l0IHN0YXR1cyBb6YCJ6aG5XSBbLS1dIDzot6/lvoTljLnphY0+Li4uIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQ0CisjOiBidWlsdGluL2NvbW1pdC5jOjQ1CiBtc2dpZCAiIgogIllvdXIgbmFtZSBhbmQgZW1haWwgYWRkcmVzcyB3ZXJlIGNvbmZpZ3VyZWQgYXV0b21hdGljYWxseSBiYXNlZFxuIgogIm9uIHlvdXIgdXNlcm5hbWUgYW5kIGhvc3RuYW1lLiBQbGVhc2UgY2hlY2sgdGhhdCB0aGV5IGFyZSBhY2N1cmF0ZS5cbiIKQEAgLTM2ODMsNyArMzg5NSw3IEBACiAiXG4iCiAiICAgIGdpdCBjb21taXQgLS1hbWVuZCAtLXJlc2V0LWF1dGhvclxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjU2CisjOiBidWlsdGluL2NvbW1pdC5jOjU3CiBtc2dpZCAiIgogIllvdSBhc2tlZCB0byBhbWVuZCB0aGUgbW9zdCByZWNlbnQgY29tbWl0LCBidXQgZG9pbmcgc28gd291bGQgbWFrZVxuIgogIml0IGVtcHR5LiBZb3UgY2FuIHJlcGVhdCB5b3VyIGNvbW1hbmQgd2l0aCAtLWFsbG93LWVtcHR5LCBvciB5b3UgY2FuXG4iCkBAIC0zNjkyLDcgKzM5MDQsNyBAQAogIuaCqOimgeS/ruihpeacgOi/keeahOaPkOS6pO+8jOS9hui/meS5iOWBmuS8muiuqeWug+aIkOS4uuepuuaPkOS6pOOAguaCqOWPr+S7pemHjeWkjeaCqOeahOWRveS7pOW5tuW4puS4ilxuIgogIi0tYWxsb3ctZW1wdHkg6YCJ6aG577yM5oiW6ICF5oKo5Y+v55So5ZG95LukIFwiZ2l0IHJlc2V0IEhFQUReXCIg5pW05Liq5Yig6Zmk6K+l5o+Q5Lqk44CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NjEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjIKIG1zZ2lkICIiCiAiVGhlIHByZXZpb3VzIGNoZXJyeS1waWNrIGlzIG5vdyBlbXB0eSwgcG9zc2libHkgZHVlIHRvIGNvbmZsaWN0IHJlc29sdXRpb24uXG4iCiAiSWYgeW91IHdpc2ggdG8gY29tbWl0IGl0IGFueXdheSwgdXNlOlxuIgpAQCAtMzcwOCw5MyArMzkyMCw5MyBAQAogIlxuIgogIuWQpuWIme+8jOivt+S9v+eUqOWRveS7pCAnZ2l0IHJlc2V0J1xuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjI2MAorIzogYnVpbHRpbi9jb21taXQuYzoyNjUKIG1zZ2lkICJmYWlsZWQgdG8gdW5wYWNrIEhFQUQgdHJlZSBvYmplY3QiCiBtc2dzdHIgIuaXoOazleino+WMhSBIRUFEIOagkeWvueixoSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzA3CiBtc2dpZCAidW5hYmxlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgaW5kZXgiCiBtc2dzdHIgIuS4jeiDveWIm+W7uuS4tOaXtue0ouW8lSIKIAotIzogYnVpbHRpbi9jb21taXQuYzozMDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MzEzCiBtc2dpZCAiaW50ZXJhY3RpdmUgYWRkIGZhaWxlZCIKIG1zZ3N0ciAi5Lqk5LqS5byP5re75Yqg5aSx6LSlIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM0MSBidWlsdGluL2NvbW1pdC5jOjM2MiBidWlsdGluL2NvbW1pdC5jOjQxMgorIzogYnVpbHRpbi9jb21taXQuYzozNDYgYnVpbHRpbi9jb21taXQuYzozNjcgYnVpbHRpbi9jb21taXQuYzo0MTcKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgbmV3X2luZGV4IGZpbGUiCiBtc2dzdHIgIuaXoOazleWGmSBuZXdfaW5kZXgg5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjM5MworIzogYnVpbHRpbi9jb21taXQuYzozOTgKIG1zZ2lkICJjYW5ub3QgZG8gYSBwYXJ0aWFsIGNvbW1pdCBkdXJpbmcgYSBtZXJnZS4iCiBtc2dzdHIgIuWcqOWQiOW5tui/h+eoi+S4reS4jeiDveWBmumDqOWIhuaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzozOTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NDAwCiBtc2dpZCAiY2Fubm90IGRvIGEgcGFydGlhbCBjb21taXQgZHVyaW5nIGEgY2hlcnJ5LXBpY2suIgogbXNnc3RyICLlnKjmi6PpgInov4fnqIvkuK3kuI3og73lgZrpg6jliIbmj5DkuqTjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NDA1CisjOiBidWlsdGluL2NvbW1pdC5jOjQxMAogbXNnaWQgImNhbm5vdCByZWFkIHRoZSBpbmRleCIKIG1zZ3N0ciAi5peg5rOV6K+75Y+W57Si5byVIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjQyNQorIzogYnVpbHRpbi9jb21taXQuYzo0MzAKIG1zZ2lkICJ1bmFibGUgdG8gd3JpdGUgdGVtcG9yYXJ5IGluZGV4IGZpbGUiCiBtc2dzdHIgIuaXoOazleWGmeS4tOaXtue0ouW8leaWh+S7tiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo1MTMgYnVpbHRpbi9jb21taXQuYzo1MTkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NTIxIGJ1aWx0aW4vY29tbWl0LmM6NTI3CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgY29tbWl0OiAlcyIKIG1zZ3N0ciAi5peg5pWI55qE5o+Q5Lqk77yaJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTQyCisjOiBidWlsdGluL2NvbW1pdC5jOjU0OQogbXNnaWQgIm1hbGZvcm1lZCAtLWF1dGhvciBwYXJhbWV0ZXIiCiBtc2dzdHIgIumdnuazleeahCAtLWF1dGhvciDlj4LmlbAiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NTYyCisjOiBidWlsdGluL2NvbW1pdC5jOjU2OQogIywgYy1mb3JtYXQKIG1zZ2lkICJNYWxmb3JtZWQgaWRlbnQgc3RyaW5nOiAnJXMnIgogbXNnc3RyICLpnZ7ms5XnmoTouqvku73lrZfnrKbkuLLvvJonJXMnIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYwMCBidWlsdGluL2NvbW1pdC5jOjYzMyBidWlsdGluL2NvbW1pdC5jOjk1NgorIzogYnVpbHRpbi9jb21taXQuYzo2MDcgYnVpbHRpbi9jb21taXQuYzo2NDAgYnVpbHRpbi9jb21taXQuYzo5NjMKICMsIGMtZm9ybWF0CiBtc2dpZCAiY291bGQgbm90IGxvb2t1cCBjb21taXQgJXMiCiBtc2dzdHIgIuS4jeiDveafpeivouaPkOS6pCAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTIgYnVpbHRpbi9zaG9ydGxvZy5jOjI3MAorIzogYnVpbHRpbi9jb21taXQuYzo2MTkgYnVpbHRpbi9zaG9ydGxvZy5jOjI3MQogIywgYy1mb3JtYXQKIG1zZ2lkICIocmVhZGluZyBsb2cgbWVzc2FnZSBmcm9tIHN0YW5kYXJkIGlucHV0KVxuIgogbXNnc3RyICLvvIjmraPku47moIflh4bovpPlhaXkuK3or7vlj5bml6Xlv5fkv6Hmga/vvIlcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjIxCiBtc2dpZCAiY291bGQgbm90IHJlYWQgbG9nIGZyb20gc3RhbmRhcmQgaW5wdXQiCiBtc2dzdHIgIuS4jeiDveS7juagh+WHhui+k+WFpeS4reivu+WPluaXpeW/l+S/oeaBryIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2MTgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjI1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGxvZyBmaWxlICclcyciCiBtc2dzdHIgIuS4jeiDveivu+WPluaXpeW/l+aWh+S7tiAnJXMnIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjYyNAorIzogYnVpbHRpbi9jb21taXQuYzo2MzEKIG1zZ2lkICJjb21taXQgaGFzIGVtcHR5IG1lc3NhZ2UiCiBtc2dzdHIgIuaPkOS6pOivtOaYjuS4uuepuiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjQ3CiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTVNHIgogbXNnc3RyICLkuI3og73or7vlj5YgTUVSR0VfTVNHIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjY0NAorIzogYnVpbHRpbi9jb21taXQuYzo2NTEKIG1zZ2lkICJjb3VsZCBub3QgcmVhZCBTUVVBU0hfTVNHIgogbXNnc3RyICLkuI3og73or7vlj5YgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9jb21taXQuYzo2NDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkICclcyciCiBtc2dzdHIgIuS4jeiDveivu+WPliAnJXMnIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjcwOQorIzogYnVpbHRpbi9jb21taXQuYzo3MTYKIG1zZ2lkICJjb3VsZCBub3Qgd3JpdGUgY29tbWl0IHRlbXBsYXRlIgogbXNnc3RyICLkuI3og73lhpnmj5DkuqTmqKHniYgiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzIwCisjOiBidWlsdGluL2NvbW1pdC5jOjcyNwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiXG4iCkBAIC0zODA4LDcgKzQwMjAsNyBAQAogIlx0JXNcbiIKICLnhLblkI7ph43or5XjgIJcbiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo3MjUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzMyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJcbiIKQEAgLTM4MjIsNyArNDAzNCw3IEBACiAiXHQlc1xuIgogIueEtuWQjumHjeivleOAglxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjczNworIzogYnVpbHRpbi9jb21taXQuYzo3NDQKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIlBsZWFzZSBlbnRlciB0aGUgY29tbWl0IG1lc3NhZ2UgZm9yIHlvdXIgY2hhbmdlcy4gTGluZXMgc3RhcnRpbmdcbiIKQEAgLTM4MzEsNyArNDA0Myw3IEBACiAi6K+35Li65oKo55qE5Y+Y5pu06L6T5YWl5o+Q5Lqk6K+05piO44CC5LulICclYycg5byA5aeL55qE6KGM5bCG6KKr5b+955Wl77yM6ICM5LiA5Liq56m655qE5o+Q5LqkXG4iCiAi6K+05piO5bCG5Lya57uI5q2i5o+Q5Lqk44CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzQyCisjOiBidWlsdGluL2NvbW1pdC5jOjc0OQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIHRoZSBjb21taXQgbWVzc2FnZSBmb3IgeW91ciBjaGFuZ2VzLiBMaW5lcyBzdGFydGluZ1xuIgpAQCAtMzg0MiwzNTUgKzQwNTQsMzU1IEBACiAi5Lmf5Y+v5Lul5Yig6Zmk5a6D5Lus44CC5LiA5Liq56m655qE5o+Q5Lqk6K+05piO5bCG5Lya57uI5q2i5o+Q5Lqk44CCXG4iCiAKICMgIOivkeiAhe+8muS4uuS/neivgeWcqOi+k+WHuuS4reWvuem9kO+8jOazqOaEj+iwg+aVtOWPpeS4reepuuagvO+8gQotIzogYnVpbHRpbi9jb21taXQuYzo3NTUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6NzYyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzQXV0aG9yOiAgICAlcyIKIG1zZ3N0ciAiJXPkvZzogIXvvJogICAgICVzIgogCiAjICDor5HogIXvvJrkuLrkv53or4HlnKjovpPlh7rkuK3lr7npvZDvvIzms6jmhI/osIPmlbTlj6XkuK3nqbrmoLzvvIEKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzYyCisjOiBidWlsdGluL2NvbW1pdC5jOjc2OQogIywgYy1mb3JtYXQKIG1zZ2lkICIlc0NvbW1pdHRlcjogJXMiCiBtc2dzdHIgIiVz5o+Q5Lqk6ICF77yaICAgJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6NzgyCisjOiBidWlsdGluL2NvbW1pdC5jOjc4OQogbXNnaWQgIkNhbm5vdCByZWFkIGluZGV4IgogbXNnc3RyICLml6Dms5Xor7vlj5bntKLlvJUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODE5CisjOiBidWlsdGluL2NvbW1pdC5jOjgyNgogbXNnaWQgIkVycm9yIGJ1aWxkaW5nIHRyZWVzIgogbXNnc3RyICLml6Dms5XliJvlu7rmoJHlr7nosaEiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6ODM0IGJ1aWx0aW4vdGFnLmM6MzU5CisjOiBidWlsdGluL2NvbW1pdC5jOjg0MSBidWlsdGluL3RhZy5jOjM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBtZXNzYWdlIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24uXG4iCiBtc2dzdHIgIuivt+S9v+eUqCAtbSDmiJYgLUYg6YCJ6aG55o+Q5L6b5o+Q5Lqk6K+05piO44CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTMxCisjOiBidWlsdGluL2NvbW1pdC5jOjkzOAogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBleGlzdGluZyBhdXRob3IgZm91bmQgd2l0aCAnJXMnIgogbXNnc3RyICLmsqHmnInmib7liLDljLnphY0gJyVzJyDnmoTkvZzogIUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTQ2IGJ1aWx0aW4vY29tbWl0LmM6MTE0MAorIzogYnVpbHRpbi9jb21taXQuYzo5NTMgYnVpbHRpbi9jb21taXQuYzoxMTg5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkludmFsaWQgdW50cmFja2VkIGZpbGVzIG1vZGUgJyVzJyIKIG1zZ3N0ciAi5peg5pWI55qE5pyq6L+96Liq5paH5Lu25Y+C5pWwICclcyciCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTc2CisjOiBidWlsdGluL2NvbW1pdC5jOjk5MAorbXNnaWQgIi0tbG9uZyBhbmQgLXogYXJlIGluY29tcGF0aWJsZSIKK21zZ3N0ciAiLS1sb25nIOWSjCAteiDpgInpobnkuI3lhbzlrrkiCisKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAyMAogbXNnaWQgIlVzaW5nIGJvdGggLS1yZXNldC1hdXRob3IgYW5kIC0tYXV0aG9yIGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIuWQjOaXtuS9v+eUqCAtLXJlc2V0LWF1dGhvciDlkowgLS1hdXRob3Ig5rKh5pyJ5oSP5LmJIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk4NworIzogYnVpbHRpbi9jb21taXQuYzoxMDMxCiBtc2dpZCAiWW91IGhhdmUgbm90aGluZyB0byBhbWVuZC4iCiBtc2dzdHIgIuaCqOayoeacieWPr+S/ruihpeeahOaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzo5OTAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzNAogbXNnaWQgIllvdSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIG1lcmdlIC0tIGNhbm5vdCBhbWVuZC4iCiBtc2dzdHIgIuaCqOato+WkhOS6juS4gOS4quWQiOW5tui/h+eoi+S4rSAtLSDml6Dms5Xkv67ooaXmj5DkuqTjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6OTkyCisjOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKIG1zZ2lkICJZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYSBjaGVycnktcGljayAtLSBjYW5ub3QgYW1lbmQuIgogbXNnc3RyICLmgqjmraPlpITkuo7kuIDkuKrmi6PpgInov4fnqIvkuK0gLS0g5peg5rOV5L+u6KGl5o+Q5Lqk44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjk5NQorIzogYnVpbHRpbi9jb21taXQuYzoxMDM5CiBtc2dpZCAiT3B0aW9ucyAtLXNxdWFzaCBhbmQgLS1maXh1cCBjYW5ub3QgYmUgdXNlZCB0b2dldGhlciIKIG1zZ3N0ciAi6YCJ6aG5IC0tc3F1YXNoIOWSjCAtLWZpeHVwIOS4jeiDveWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDA1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNDkKIG1zZ2lkICJPbmx5IG9uZSBvZiAtYy8tQy8tRi8tLWZpeHVwIGNhbiBiZSB1c2VkLiIKIG1zZ3N0ciAi5Y+q6IO955So5LiA5LiqIC1jLy1DLy1GLy0tZml4dXAg6YCJ6aG544CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMDcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA1MQogbXNnaWQgIk9wdGlvbiAtbSBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCAtYy8tQy8tRi8tLWZpeHVwLiIKIG1zZ3N0ciAi6YCJ6aG5IC1tIOS4jeiDveWSjCAtYy8tQy8tRi8tLWZpeHVwIOWQjOaXtuS9v+eUqOOAgiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDE1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwNTkKIG1zZ2lkICItLXJlc2V0LWF1dGhvciBjYW4gYmUgdXNlZCBvbmx5IHdpdGggLUMsIC1jIG9yIC0tYW1lbmQuIgogbXNnc3RyICItLXJlc2V0LWF1dGhvciDlj6rog73lkowgLUPjgIEtYyDmiJYgLS1hbWVuZCDlkIzml7bkvb/nlKjjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzMgorIzogYnVpbHRpbi9jb21taXQuYzoxMDc2CiBtc2dpZCAiT25seSBvbmUgb2YgLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2ggY2FuIGJlIHVzZWQuIgogbXNnc3RyICLlj6rog73nlKjkuIDkuKogLS1pbmNsdWRlLy0tb25seS8tLWFsbC8tLWludGVyYWN0aXZlLy0tcGF0Y2gg6YCJ6aG544CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzQKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA3OAogbXNnaWQgIk5vIHBhdGhzIHdpdGggLS1pbmNsdWRlLy0tb25seSBkb2VzIG5vdCBtYWtlIHNlbnNlLiIKIG1zZ3N0ciAi5Y+C5pWwIC0taW5jbHVkZS8tLW9ubHkg5LiN6Lef6Lev5b6E5rKh5pyJ5oSP5LmJ44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwMzYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTA4MAogbXNnaWQgIkNsZXZlci4uLiBhbWVuZGluZyB0aGUgbGFzdCBvbmUgd2l0aCBkaXJ0eSBpbmRleC4iCiBtc2dzdHIgIuiBquaYji4uLiDlnKjntKLlvJXkuI3lubLlh4DkuIvkv67ooaXmnIDlkI7nmoTmj5DkuqTjgIIiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTAzOAorIzogYnVpbHRpbi9jb21taXQuYzoxMDgyCiBtc2dpZCAiRXhwbGljaXQgcGF0aHMgc3BlY2lmaWVkIHdpdGhvdXQgLWkgbm9yIC1vOyBhc3N1bWluZyAtLW9ubHkgcGF0aHMuLi4iCiBtc2dzdHIgIuaMh+WumuS6huaYjuehrueahOi3r+W+hOiAjOayoeacieS9v+eUqCAtaSDmiJYgLW8g6YCJ6aG577yb6K6k5Li65pivIC0tb25seSBwYXRocy4uLiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDQ4IGJ1aWx0aW4vdGFnLmM6NTc1CisjOiBidWlsdGluL2NvbW1pdC5jOjEwOTIgYnVpbHRpbi90YWcuYzo1NzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiSW52YWxpZCBjbGVhbnVwIG1vZGUgJXMiCiBtc2dzdHIgIuaXoOaViOeahOa4heeQhuaooeW8jyAlcyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMDUzCisjOiBidWlsdGluL2NvbW1pdC5jOjEwOTcKIG1zZ2lkICJQYXRocyB3aXRoIC1hIGRvZXMgbm90IG1ha2Ugc2Vuc2UuIgogbXNnc3RyICLot6/lvoTlkowgLWEg6YCJ6aG55ZCM5pe25L2/55So5rKh5pyJ5oSP5LmJ44CCIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEwNTkgYnVpbHRpbi9jb21taXQuYzoxMTk0Ci1tc2dpZCAiLS1sb25nIGFuZCAteiBhcmUgaW5jb21wYXRpYmxlIgotbXNnc3RyICItLWxvbmcg5ZKMIC16IOmAiemhueS4jeWFvOWuuSIKLQotIzogYnVpbHRpbi9jb21taXQuYzoxMTU0IGJ1aWx0aW4vY29tbWl0LmM6MTM5MAorIzogYnVpbHRpbi9jb21taXQuYzoxMjAzIGJ1aWx0aW4vY29tbWl0LmM6MTQzNgogbXNnaWQgInNob3cgc3RhdHVzIGNvbmNpc2VseSIKIG1zZ3N0ciAi5Lul566A5rSB55qE5qC85byP5pi+56S654q25oCBIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNTYgYnVpbHRpbi9jb21taXQuYzoxMzkyCisjOiBidWlsdGluL2NvbW1pdC5jOjEyMDUgYnVpbHRpbi9jb21taXQuYzoxNDM4CiBtc2dpZCAic2hvdyBicmFuY2ggaW5mb3JtYXRpb24iCiBtc2dzdHIgIuaYvuekuuWIhuaUr+S/oeaBryIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTU4IGJ1aWx0aW4vY29tbWl0LmM6MTM5NCBidWlsdGluL3B1c2guYzo0MjYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIwNyBidWlsdGluL2NvbW1pdC5jOjE0NDAgYnVpbHRpbi9wdXNoLmM6NDUyCiBtc2dpZCAibWFjaGluZS1yZWFkYWJsZSBvdXRwdXQiCiBtc2dzdHIgIuacuuWZqOWPr+ivu+eahOi+k+WHuiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTYxIGJ1aWx0aW4vY29tbWl0LmM6MTM5NgorIzogYnVpbHRpbi9jb21taXQuYzoxMjEwIGJ1aWx0aW4vY29tbWl0LmM6MTQ0MgogbXNnaWQgInNob3cgc3RhdHVzIGluIGxvbmcgZm9ybWF0IChkZWZhdWx0KSIKIG1zZ3N0ciAi5Lul6ZW/5qC85byP5pi+56S654q25oCB77yI6buY6K6k77yJIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNjQgYnVpbHRpbi9jb21taXQuYzoxMzk5CisjOiBidWlsdGluL2NvbW1pdC5jOjEyMTMgYnVpbHRpbi9jb21taXQuYzoxNDQ1CiBtc2dpZCAidGVybWluYXRlIGVudHJpZXMgd2l0aCBOVUwiCiBtc2dzdHIgIuadoeebruS7pU5VTOWtl+espue7k+WwviIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMTY2IGJ1aWx0aW4vY29tbWl0LmM6MTQwMiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjU5Ci0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYyIGJ1aWx0aW4vdGFnLmM6NDU5CisjOiBidWlsdGluL2NvbW1pdC5jOjEyMTUgYnVpbHRpbi9jb21taXQuYzoxNDQ4IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NjcKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzAgYnVpbHRpbi90YWcuYzo0NTkKIG1zZ2lkICJtb2RlIgogbXNnc3RyICLmqKHlvI8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE2NyBidWlsdGluL2NvbW1pdC5jOjE0MDIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxNiBidWlsdGluL2NvbW1pdC5jOjE0NDgKIG1zZ2lkICJzaG93IHVudHJhY2tlZCBmaWxlcywgb3B0aW9uYWwgbW9kZXM6IGFsbCwgbm9ybWFsLCBuby4gKERlZmF1bHQ6IGFsbCkiCiBtc2dzdHIgIuaYvuekuuacqui3n+i4queahOaWh+S7tu+8jOKAnOaooeW8j+KAneeahOWPr+mAieWPguaVsO+8mmFsbOOAgW5vcm1hbOOAgW5v44CC77yI6buY6K6k77yaYWxs77yJIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTIxOQogbXNnaWQgInNob3cgaWdub3JlZCBmaWxlcyIKIG1zZ3N0ciAi5pi+56S65b+955Wl55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjExNzEgcGFyc2Utb3B0aW9ucy5oOjE1MQorIzogYnVpbHRpbi9jb21taXQuYzoxMjIwIHBhcnNlLW9wdGlvbnMuaDoxNTQKIG1zZ2lkICJ3aGVuIgogbXNnc3RyICLkvZXml7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3MgorIzogYnVpbHRpbi9jb21taXQuYzoxMjIxCiBtc2dpZCAiIgogImlnbm9yZSBjaGFuZ2VzIHRvIHN1Ym1vZHVsZXMsIG9wdGlvbmFsIHdoZW46IGFsbCwgZGlydHksIHVudHJhY2tlZC4gIgogIihEZWZhdWx0OiBhbGwpIgogbXNnc3RyICIiCiAi5b+955Wl5a2Q5qih57uE55qE5pu05pS577yM4oCc5L2V5pe24oCd55qE5Y+v6YCJ5Y+C5pWw77yaYWxs44CBZGlydHnjgIF1bnRyYWNrZWTjgILvvIjpu5jorqTvvJphbGzvvIkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTE3NAorIzogYnVpbHRpbi9jb21taXQuYzoxMjIzCiBtc2dpZCAibGlzdCB1bnRyYWNrZWQgZmlsZXMgaW4gY29sdW1ucyIKIG1zZ3N0ciAi5Lul5YiX55qE5pa55byP5pi+56S65pyq6Lef6Liq55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEyNDgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTI5NAogbXNnaWQgImNvdWxkbid0IGxvb2sgdXAgbmV3bHkgY3JlYXRlZCBjb21taXQiCiBtc2dzdHIgIuaXoOazleaJvuWIsOaWsOWIm+W7uueahOaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjUwCisjOiBidWlsdGluL2NvbW1pdC5jOjEyOTYKIG1zZ2lkICJjb3VsZCBub3QgcGFyc2UgbmV3bHkgY3JlYXRlZCBjb21taXQiCiBtc2dzdHIgIuS4jeiDveino+aekOaWsOWIm+W7uueahOaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMjkxCisjOiBidWlsdGluL2NvbW1pdC5jOjEzMzcKIG1zZ2lkICJkZXRhY2hlZCBIRUFEIgogbXNnc3RyICLliIbnprvlpLTmjIfpkogiCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogYnVpbHRpbi9jb21taXQuYzoxMjkzCisjOiBidWlsdGluL2NvbW1pdC5jOjEzMzkKIG1zZ2lkICIgKHJvb3QtY29tbWl0KSIKIG1zZ3N0ciAi77yI5qC55o+Q5Lqk77yJIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjAKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQwNgogbXNnaWQgInN1cHByZXNzIHN1bW1hcnkgYWZ0ZXIgc3VjY2Vzc2Z1bCBjb21taXQiCiBtc2dzdHIgIuaPkOS6pOaIkOWKn+WQjuS4jeaYvuekuuamgui/sOS/oeaBryIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzYxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDcKIG1zZ2lkICJzaG93IGRpZmYgaW4gY29tbWl0IG1lc3NhZ2UgdGVtcGxhdGUiCiBtc2dzdHIgIuWcqOaPkOS6pOivtOaYjuaooeadv+mHjOaYvuekuuW3ruW8giIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzYzCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MDkKIG1zZ2lkICJDb21taXQgbWVzc2FnZSBvcHRpb25zIgogbXNnc3RyICLmj5DkuqTor7TmmI7pgInpobkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NCBidWlsdGluL3RhZy5jOjQ1NworIzogYnVpbHRpbi9jb21taXQuYzoxNDEwIGJ1aWx0aW4vdGFnLmM6NDU3CiBtc2dpZCAicmVhZCBtZXNzYWdlIGZyb20gZmlsZSIKIG1zZ3N0ciAi5LuO5paH5Lu25Lit6K+75Y+W5o+Q5Lqk6K+05piOIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMQogbXNnaWQgImF1dGhvciIKIG1zZ3N0ciAi5L2c6ICFIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjUKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxMQogbXNnaWQgIm92ZXJyaWRlIGF1dGhvciBmb3IgY29tbWl0IgogbXNnc3RyICLmj5DkuqTml7bopobnm5bkvZzogIUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2NiBidWlsdGluL2djLmM6MTc4CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTIgYnVpbHRpbi9nYy5jOjE3OAogbXNnaWQgImRhdGUiCiBtc2dzdHIgIuaXpeacnyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY2CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTIKIG1zZ2lkICJvdmVycmlkZSBkYXRlIGZvciBjb21taXQiCiBtc2dzdHIgIuaPkOS6pOaXtuimhuebluaXpeacnyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY3IGJ1aWx0aW4vbWVyZ2UuYzoyMDggYnVpbHRpbi9ub3Rlcy5jOjUzMwotIzogYnVpbHRpbi9ub3Rlcy5jOjY5MCBidWlsdGluL3RhZy5jOjQ1NQorIzogYnVpbHRpbi9jb21taXQuYzoxNDEzIGJ1aWx0aW4vbWVyZ2UuYzoyMjMgYnVpbHRpbi9ub3Rlcy5jOjQwNQorIzogYnVpbHRpbi9ub3Rlcy5jOjU2MiBidWlsdGluL3RhZy5jOjQ1NQogbXNnaWQgIm1lc3NhZ2UiCiBtc2dzdHIgIuivtOaYjiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzY3CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTMKIG1zZ2lkICJjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAi5o+Q5Lqk6K+05piOIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNjgKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxNAogbXNnaWQgInJldXNlIGFuZCBlZGl0IG1lc3NhZ2UgZnJvbSBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICLph43nlKjlubbnvJbovpHmjIflrprmj5DkuqTnmoTmj5DkuqTor7TmmI4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM2OQorIzogYnVpbHRpbi9jb21taXQuYzoxNDE1CiBtc2dpZCAicmV1c2UgbWVzc2FnZSBmcm9tIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgIumHjeeUqOaMh+WumuaPkOS6pOeahOaPkOS6pOivtOaYjiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzcwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTYKIG1zZ2lkICJ1c2UgYXV0b3NxdWFzaCBmb3JtYXR0ZWQgbWVzc2FnZSB0byBmaXh1cCBzcGVjaWZpZWQgY29tbWl0IgogbXNnc3RyICLkvb/nlKggYXV0b3NxdWFzaCDmoLzlvI/nmoTmj5DkuqTor7TmmI7nlKjku6Xkv67mraPmjIflrprnmoTmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MQorIzogYnVpbHRpbi9jb21taXQuYzoxNDE3CiBtc2dpZCAidXNlIGF1dG9zcXVhc2ggZm9ybWF0dGVkIG1lc3NhZ2UgdG8gc3F1YXNoIHNwZWNpZmllZCBjb21taXQiCiBtc2dzdHIgIuS9v+eUqCBhdXRvc3F1YXNoIOagvOW8j+eahOaPkOS6pOivtOaYjueUqOS7peWOi+e8qeiHs+aMh+WumueahOaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzcyCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MTgKIG1zZ2lkICJ0aGUgY29tbWl0IGlzIGF1dGhvcmVkIGJ5IG1lIG5vdyAodXNlZCB3aXRoIC1DLy1jLy0tYW1lbmQpIgogbXNnc3RyICLnjrDlnKjlsIbor6Xmj5DkuqTnmoTkvZzogIXmlLnkuLrmiJHvvIjlkowgLUMvLWMvLS1hbWVuZCDlj4LmlbDlhbHnlKjvvIkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3MyBidWlsdGluL2xvZy5jOjExMTMgYnVpbHRpbi9yZXZlcnQuYzoxMDkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQxOSBidWlsdGluL2xvZy5jOjExNjAgYnVpbHRpbi9yZXZlcnQuYzoxMTEKIG1zZ2lkICJhZGQgU2lnbmVkLW9mZi1ieToiCiBtc2dzdHIgIua3u+WKoCBTaWduZWQtb2ZmLWJ5OiDnrb7lkI0iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NAorIzogYnVpbHRpbi9jb21taXQuYzoxNDIwCiBtc2dpZCAidXNlIHNwZWNpZmllZCB0ZW1wbGF0ZSBmaWxlIgogbXNnc3RyICLkvb/nlKjmjIflrprnmoTmqKHmnb/mlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NQorIzogYnVpbHRpbi9jb21taXQuYzoxNDIxCiBtc2dpZCAiZm9yY2UgZWRpdCBvZiBjb21taXQiCiBtc2dzdHIgIuW8uuWItue8lui+keaPkOS6pCIKIAogIyAg6K+R6ICF77ya5Y+v6YCJ5YC877yM5LiN6IO957+76K+R77yI5oiW5piv5Y6f5paH5Lit56yU6K+v77yM5bqU5Li6IG1vZGXvvIkKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3NgorIzogYnVpbHRpbi9jb21taXQuYzoxNDIyCiBtc2dpZCAiZGVmYXVsdCIKIG1zZ3N0ciAiZGVmYXVsdCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzc2IGJ1aWx0aW4vdGFnLmM6NDYwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjIgYnVpbHRpbi90YWcuYzo0NjAKIG1zZ2lkICJob3cgdG8gc3RyaXAgc3BhY2VzIGFuZCAjY29tbWVudHMgZnJvbSBtZXNzYWdlIgogbXNnc3RyICLorr7nva7lpoLkvZXliKDpmaTmj5DkuqTor7TmmI7ph4znmoTnqbrmoLzlkowj5rOo6YeKIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzcKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQyMwogbXNnaWQgImluY2x1ZGUgc3RhdHVzIGluIGNvbW1pdCBtZXNzYWdlIHRlbXBsYXRlIgogbXNnc3RyICLlnKjmj5DkuqTor7TmmI7mqKHmnb/ph4zljIXlkKvnirbmgIHkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM3OCBidWlsdGluL21lcmdlLmM6MjE1IGJ1aWx0aW4vdGFnLmM6NDYxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0MjQgYnVpbHRpbi9tZXJnZS5jOjIzMCBidWlsdGluL3RhZy5jOjQ2MQogbXNnaWQgImtleSBpZCIKIG1zZ3N0ciAia2V5IGlkIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzNzkgYnVpbHRpbi9tZXJnZS5jOjIxNgorIzogYnVpbHRpbi9jb21taXQuYzoxNDI1IGJ1aWx0aW4vbWVyZ2UuYzoyMzEKIG1zZ2lkICJHUEcgc2lnbiBjb21taXQiCiBtc2dzdHIgIkdQRyDmj5DkuqTnrb7lkI0iCiAKICMuIGVuZCBjb21taXQgbWVzc2FnZSBvcHRpb25zCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODIKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQyOAogbXNnaWQgIkNvbW1pdCBjb250ZW50cyBvcHRpb25zIgogbXNnc3RyICLmj5DkuqTlhoXlrrnpgInpobkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4MworIzogYnVpbHRpbi9jb21taXQuYzoxNDI5CiBtc2dpZCAiY29tbWl0IGFsbCBjaGFuZ2VkIGZpbGVzIgogbXNnc3RyICLmj5DkuqTmiYDmnInmlLnliqjnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NAorIzogYnVpbHRpbi9jb21taXQuYzoxNDMwCiBtc2dpZCAiYWRkIHNwZWNpZmllZCBmaWxlcyB0byBpbmRleCBmb3IgY29tbWl0IgogbXNnc3RyICLmt7vliqDmjIflrprnmoTmlofku7bliLDntKLlvJXljLrnrYnlvoXmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NQorIzogYnVpbHRpbi9jb21taXQuYzoxNDMxCiBtc2dpZCAiaW50ZXJhY3RpdmVseSBhZGQgZmlsZXMiCiBtc2dzdHIgIuS6pOS6kuW8j+a3u+WKoOaWh+S7tiIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxMzg2CisjOiBidWlsdGluL2NvbW1pdC5jOjE0MzIKIG1zZ2lkICJpbnRlcmFjdGl2ZWx5IGFkZCBjaGFuZ2VzIgogbXNnc3RyICLkuqTkupLlvI/mt7vliqDlj5jmm7QiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4NworIzogYnVpbHRpbi9jb21taXQuYzoxNDMzCiBtc2dpZCAiY29tbWl0IG9ubHkgc3BlY2lmaWVkIGZpbGVzIgogbXNnc3RyICLlj6rmj5DkuqTmjIflrprnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTM4OAorIzogYnVpbHRpbi9jb21taXQuYzoxNDM0CiBtc2dpZCAiYnlwYXNzIHByZS1jb21taXQgaG9vayIKIG1zZ3N0ciAi57uV6L+HIHByZS1jb21taXQg6ZKp5a2QIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjEzODkKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQzNQogbXNnaWQgInNob3cgd2hhdCB3b3VsZCBiZSBjb21taXR0ZWQiCiBtc2dzdHIgIuaYvuekuuWwhuimgeaPkOS6pOeahOWGheWuuSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDAwCisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDYKIG1zZ2lkICJhbWVuZCBwcmV2aW91cyBjb21taXQiCiBtc2dzdHIgIuS/ruaUueWFiOWJjeeahOaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDAxCisjOiBidWlsdGluL2NvbW1pdC5jOjE0NDcKIG1zZ2lkICJieXBhc3MgcG9zdC1yZXdyaXRlIGhvb2siCiBtc2dzdHIgIue7lei/hyBwb3N0LXJld3JpdGUg6ZKp5a2QIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE0MDYKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ1MgogbXNnaWQgIm9rIHRvIHJlY29yZCBhbiBlbXB0eSBjaGFuZ2UiCiBtc2dzdHIgIuWFgeiuuOS4gOS4quepuuaPkOS6pCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDA5CisjOiBidWlsdGluL2NvbW1pdC5jOjE0NTUKIG1zZ2lkICJvayB0byByZWNvcmQgYSBjaGFuZ2Ugd2l0aCBhbiBlbXB0eSBtZXNzYWdlIgogbXNnc3RyICLlhYHorrjnqbrnmoTmj5DkuqTor7TmmI4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ0MQorIzogYnVpbHRpbi9jb21taXQuYzoxNDg4CiBtc2dpZCAiY291bGQgbm90IHBhcnNlIEhFQUQgY29tbWl0IgogbXNnc3RyICLkuI3og73op6PmnpAgSEVBRCDmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ3OSBidWlsdGluL21lcmdlLmM6NTEwCisjOiBidWlsdGluL2NvbW1pdC5jOjE1MjYgYnVpbHRpbi9tZXJnZS5jOjUyNQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiAnJXMnIGZvciByZWFkaW5nIgogbXNnc3RyICLkuI3og73kuLror7vlhaXmiZPlvIAgJyVzJyIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNDg2CisjOiBidWlsdGluL2NvbW1pdC5jOjE1MzMKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29ycnVwdCBNRVJHRV9IRUFEIGZpbGUgKCVzKSIKIG1zZ3N0ciAi5o2f5Z2P55qEIE1FUkdFX0hFQUQg5paH5Lu277yIJXPvvIkiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTQ5MworIzogYnVpbHRpbi9jb21taXQuYzoxNTQwCiBtc2dpZCAiY291bGQgbm90IHJlYWQgTUVSR0VfTU9ERSIKIG1zZ3N0ciAi5LiN6IO96K+75Y+WIE1FUkdFX01PREUiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUxMgorIzogYnVpbHRpbi9jb21taXQuYzoxNTU5CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvdWxkIG5vdCByZWFkIGNvbW1pdCBtZXNzYWdlOiAlcyIKIG1zZ3N0ciAi5LiN6IO96K+75Y+W5o+Q5Lqk6K+05piO77yaJXMiCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUyNgorIzogYnVpbHRpbi9jb21taXQuYzoxNTczCiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdDsgeW91IGRpZCBub3QgZWRpdCB0aGUgbWVzc2FnZS5cbiIKIG1zZ3N0ciAi57uI5q2i5o+Q5Lqk77yb5oKo5pyq5pu05pS55p2l6Ieq5qih54mI55qE5o+Q5Lqk6K+05piO44CCXG4iCiAKLSM6IGJ1aWx0aW4vY29tbWl0LmM6MTUzMQorIzogYnVpbHRpbi9jb21taXQuYzoxNTc4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkFib3J0aW5nIGNvbW1pdCBkdWUgdG8gZW1wdHkgY29tbWl0IG1lc3NhZ2UuXG4iCiBtc2dzdHIgIue7iOatouaPkOS6pOWboOS4uuaPkOS6pOivtOaYjuS4uuepuuOAglxuIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NDYgYnVpbHRpbi9tZXJnZS5jOjg0NyBidWlsdGluL21lcmdlLmM6ODcyCisjOiBidWlsdGluL2NvbW1pdC5jOjE1OTMgYnVpbHRpbi9tZXJnZS5jOjg2MSBidWlsdGluL21lcmdlLmM6ODg2CiBtc2dpZCAiZmFpbGVkIHRvIHdyaXRlIGNvbW1pdCBvYmplY3QiCiBtc2dzdHIgIuaXoOazleWGmeaPkOS6pOWvueixoSIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTY3CisjOiBidWlsdGluL2NvbW1pdC5jOjE2MTQKIG1zZ2lkICJjYW5ub3QgbG9jayBIRUFEIHJlZiIKIG1zZ3N0ciAi5peg5rOV6ZSB5a6aIEhFQUQg5byV55SoIgogCi0jOiBidWlsdGluL2NvbW1pdC5jOjE1NzEKKyM6IGJ1aWx0aW4vY29tbWl0LmM6MTYxOAogbXNnaWQgImNhbm5vdCB1cGRhdGUgSEVBRCByZWYiCiBtc2dzdHIgIuaXoOazleabtOaWsCBIRUFEIOW8leeUqCIKIAotIzogYnVpbHRpbi9jb21taXQuYzoxNTgyCisjOiBidWlsdGluL2NvbW1pdC5jOjE2MjkKIG1zZ2lkICIiCiAiUmVwb3NpdG9yeSBoYXMgYmVlbiB1cGRhdGVkLCBidXQgdW5hYmxlIHRvIHdyaXRlXG4iCiAibmV3X2luZGV4IGZpbGUuIENoZWNrIHRoYXQgZGlzayBpcyBub3QgZnVsbCBvciBxdW90YSBpc1xuIgpAQCAtNDIwMywxMTUgKzQ0MTUsMTIzIEBACiBtc2dpZCAiZ2l0IGNvbmZpZyBbb3B0aW9uc10iCiBtc2dzdHIgImdpdCBjb25maWcgW+mAiemhuV0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTEKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTIKIG1zZ2lkICJDb25maWcgZmlsZSBsb2NhdGlvbiIKIG1zZ3N0ciAi6YWN572u5paH5Lu25L2N572uIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjUyCisjOiBidWlsdGluL2NvbmZpZy5jOjUzCiBtc2dpZCAidXNlIGdsb2JhbCBjb25maWcgZmlsZSIKIG1zZ3N0ciAi5L2/55So5YWo5bGA6YWN572u5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjUzCisjOiBidWlsdGluL2NvbmZpZy5jOjU0CiBtc2dpZCAidXNlIHN5c3RlbSBjb25maWcgZmlsZSIKIG1zZ3N0ciAi5L2/55So57O757uf57qn6YWN572u5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjU0CisjOiBidWlsdGluL2NvbmZpZy5jOjU1CiBtc2dpZCAidXNlIHJlcG9zaXRvcnkgY29uZmlnIGZpbGUiCiBtc2dzdHIgIuS9v+eUqOeJiOacrOW6k+e6p+mFjee9ruaWh+S7tiIKIAotIzogYnVpbHRpbi9jb25maWcuYzo1NQorIzogYnVpbHRpbi9jb25maWcuYzo1NgogbXNnaWQgInVzZSBnaXZlbiBjb25maWcgZmlsZSIKIG1zZ3N0ciAi5L2/55So5oyH5a6a55qE6YWN572u5paH5Lu2IgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjU2CisjOiBidWlsdGluL2NvbmZpZy5jOjU3Cittc2dpZCAiYmxvYi1pZCIKK21zZ3N0ciAi5pWw5o2u5a+56LGhSUQiCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTcKK21zZ2lkICJyZWFkIGNvbmZpZyBmcm9tIGdpdmVuIGJsb2Igb2JqZWN0IgorbXNnc3RyICLku47nu5nlrprnmoTmlbDmja7lr7nosaHor7vlj5bphY3nva4iCisKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NTgKIG1zZ2lkICJBY3Rpb24iCiBtc2dzdHIgIuaTjeS9nCIKIAotIzogYnVpbHRpbi9jb25maWcuYzo1NworIzogYnVpbHRpbi9jb25maWcuYzo1OQogbXNnaWQgImdldCB2YWx1ZTogbmFtZSBbdmFsdWUtcmVnZXhdIgogbXNnc3RyICLojrflj5blgLzvvJpuYW1lIFt2YWx1ZS1yZWdleF0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NTgKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjAKIG1zZ2lkICJnZXQgYWxsIHZhbHVlczoga2V5IFt2YWx1ZS1yZWdleF0iCiBtc2dzdHIgIuiOt+W+l+aJgOacieeahOWAvO+8mmtleSBbdmFsdWUtcmVnZXhdIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjU5CisjOiBidWlsdGluL2NvbmZpZy5jOjYxCiBtc2dpZCAiZ2V0IHZhbHVlcyBmb3IgcmVnZXhwOiBuYW1lLXJlZ2V4IFt2YWx1ZS1yZWdleF0iCiBtc2dzdHIgIuagueaNruato+WImeihqOi+vuW8j+iOt+W+l+WAvO+8mm5hbWUtcmVnZXggW3ZhbHVlLXJlZ2V4XSIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2MAorIzogYnVpbHRpbi9jb25maWcuYzo2MgogbXNnaWQgInJlcGxhY2UgYWxsIG1hdGNoaW5nIHZhcmlhYmxlczogbmFtZSB2YWx1ZSBbdmFsdWVfcmVnZXhdIgogbXNnc3RyICLmm7/mjaLmiYDmnInljLnphY3nmoTlj5jph4/vvJpuYW1lIHZhbHVlIFt2YWx1ZV9yZWdleF0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjEKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKIG1zZ2lkICJhZGQgYSBuZXcgdmFyaWFibGU6IG5hbWUgdmFsdWUiCiBtc2dzdHIgIua3u+WKoOS4gOS4quaWsOeahOWPmOmHj++8mm5hbWUgdmFsdWUiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjIKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjQKIG1zZ2lkICJyZW1vdmUgYSB2YXJpYWJsZTogbmFtZSBbdmFsdWUtcmVnZXhdIgogbXNnc3RyICLliKDpmaTkuIDkuKrlj5jph4/vvJpuYW1lIFt2YWx1ZS1yZWdleF0iCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjMKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjUKIG1zZ2lkICJyZW1vdmUgYWxsIG1hdGNoZXM6IG5hbWUgW3ZhbHVlLXJlZ2V4XSIKIG1zZ3N0ciAi5Yig6Zmk5omA5pyJ5Yy56YWN6aG577yabmFtZSBbdmFsdWUtcmVnZXhdIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjY0CisjOiBidWlsdGluL2NvbmZpZy5jOjY2CiBtc2dpZCAicmVuYW1lIHNlY3Rpb246IG9sZC1uYW1lIG5ldy1uYW1lIgogbXNnc3RyICLph43lkb3lkI3lsI/oioLvvJpvbGQtbmFtZSBuZXctbmFtZSIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2NQorIzogYnVpbHRpbi9jb25maWcuYzo2NwogbXNnaWQgInJlbW92ZSBhIHNlY3Rpb246IG5hbWUiCiBtc2dzdHIgIuWIoOmZpOS4gOS4quWwj+iKgu+8mm5hbWUiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NjYKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NjgKIG1zZ2lkICJsaXN0IGFsbCIKIG1zZ3N0ciAi5YiX5Ye65omA5pyJIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjY3CisjOiBidWlsdGluL2NvbmZpZy5jOjY5CiBtc2dpZCAib3BlbiBhbiBlZGl0b3IiCiBtc2dzdHIgIuaJk+W8gOS4gOS4que8lui+keWZqCIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2OCBidWlsdGluL2NvbmZpZy5jOjY5CisjOiBidWlsdGluL2NvbmZpZy5jOjcwIGJ1aWx0aW4vY29uZmlnLmM6NzEKIG1zZ2lkICJzbG90IgogbXNnc3RyICJzbG90IgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjY4CisjOiBidWlsdGluL2NvbmZpZy5jOjcwCiBtc2dpZCAiZmluZCB0aGUgY29sb3IgY29uZmlndXJlZDogW2RlZmF1bHRdIgogbXNnc3RyICLmib7liLDphY3nva7nmoTpopzoibLvvJpb6buY6K6kXSIKIAotIzogYnVpbHRpbi9jb25maWcuYzo2OQorIzogYnVpbHRpbi9jb25maWcuYzo3MQogbXNnaWQgImZpbmQgdGhlIGNvbG9yIHNldHRpbmc6IFtzdGRvdXQtaXMtdHR5XSIKIG1zZ3N0ciAi5om+5Yiw6aKc6Imy6K6+572u77yaW3N0ZG91dC1pcy10dHldIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjcwCisjOiBidWlsdGluL2NvbmZpZy5jOjcyCiBtc2dpZCAiVHlwZSIKIG1zZ3N0ciAi57G75Z6LIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjcxCisjOiBidWlsdGluL2NvbmZpZy5jOjczCiBtc2dpZCAidmFsdWUgaXMgXCJ0cnVlXCIgb3IgXCJmYWxzZVwiIgogbXNnc3RyICLlgLzmmK8gXCJ0cnVlXCIg5oiWIFwiZmFsc2VcIiIKIAotIzogYnVpbHRpbi9jb25maWcuYzo3MgorIzogYnVpbHRpbi9jb25maWcuYzo3NAogbXNnaWQgInZhbHVlIGlzIGRlY2ltYWwgbnVtYmVyIgogbXNnc3RyICLlgLzmmK/ljYHov5vliLbmlbAiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NzMKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzUKIG1zZ2lkICJ2YWx1ZSBpcyAtLWJvb2wgb3IgLS1pbnQiCiBtc2dzdHIgIuWAvOaYryAtLWJvb2wgb3IgLS1pbnQiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NzQKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzYKIG1zZ2lkICJ2YWx1ZSBpcyBhIHBhdGggKGZpbGUgb3IgZGlyZWN0b3J5IG5hbWUpIgogbXNnc3RyICLlgLzmmK/kuIDkuKrot6/lvoTvvIjmlofku7bmiJbnm67lvZXlkI3vvIkiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NzUKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzcKIG1zZ2lkICJPdGhlciIKIG1zZ3N0ciAi5YW25a6DIgogCi0jOiBidWlsdGluL2NvbmZpZy5jOjc2CisjOiBidWlsdGluL2NvbmZpZy5jOjc4CiBtc2dpZCAidGVybWluYXRlIHZhbHVlcyB3aXRoIE5VTCBieXRlIgogbXNnc3RyICLnu4jmraLlgLzmmK9OVUzlrZfoioIiCiAKLSM6IGJ1aWx0aW4vY29uZmlnLmM6NzcKKyM6IGJ1aWx0aW4vY29uZmlnLmM6NzkKIG1zZ2lkICJyZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcyBvbiBsb29rdXAiCiBtc2dzdHIgIuafpeivouaXtuWPgueFpyBpbmNsdWRlIOaMh+S7pOmAkuW9kuafpeaJviIKIApAQCAtNDMyMyw1NSArNDU0Myw1NSBAQAogbXNnaWQgInByaW50IHNpemVzIGluIGh1bWFuIHJlYWRhYmxlIGZvcm1hdCIKIG1zZ3N0ciAi5Lul55So5oi35Y+v6K+755qE5qC85byP5pi+56S65aSn5bCPIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MTUKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoxNgogbXNnaWQgImdpdCBkZXNjcmliZSBbb3B0aW9uc10gPGNvbW1pdHRpc2g+KiIKIG1zZ3N0ciAiZ2l0IGRlc2NyaWJlIFvpgInpobldIDzmj5DkuqTlj7c+KiIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjE2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MTcKIG1zZ2lkICJnaXQgZGVzY3JpYmUgW29wdGlvbnNdIC0tZGlydHkiCiBtc2dzdHIgImdpdCBkZXNjcmliZSBb6YCJ6aG5XSAtLWRpcnR5IgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MjMzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjM3CiAjLCBjLWZvcm1hdAogbXNnaWQgImFubm90YXRlZCB0YWcgJXMgbm90IGF2YWlsYWJsZSIKIG1zZ3N0ciAi5rOo6YeKIHRhZyAlcyDml6DmlYgiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzcKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNDEKICMsIGMtZm9ybWF0CiBtc2dpZCAiYW5ub3RhdGVkIHRhZyAlcyBoYXMgbm8gZW1iZWRkZWQgbmFtZSIKIG1zZ3N0ciAi5rOo6YeKIHRhZyAlcyDmsqHmnInltYzlhaXlkI3np7AiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyMzkKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNDMKICMsIGMtZm9ybWF0CiBtc2dpZCAidGFnICclcycgaXMgcmVhbGx5ICclcycgaGVyZSIKIG1zZ3N0ciAidGFnICclcycg55qE56Gu5piv5ZyoICclcyciCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNjYKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzoyNzAKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGEgdmFsaWQgb2JqZWN0IG5hbWUgJXMiCiBtc2dzdHIgIuS4jeaYr+S4gOS4quacieaViOeahOWvueixoeWQjSAlcyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI2OQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI3MwogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyBpcyBub3QgYSB2YWxpZCAnJXMnIG9iamVjdCIKIG1zZ3N0ciAiJXMg5LiN5piv5LiA5Liq5pyJ5pWI55qEICclcycg5a+56LGhIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mjg2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MjkwCiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vIHRhZyBleGFjdGx5IG1hdGNoZXMgJyVzJyIKIG1zZ3N0ciAi5rKh5pyJIHRhZyDlh4bnoa7ljLnphY0gJyVzJyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjI4OAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJzZWFyY2hpbmcgdG8gZGVzY3JpYmUgJXNcbiIKIG1zZ3N0ciAi5pCc57Si5o+P6L+wICVzXG4iCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozMjgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzozMzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiZmluaXNoZWQgc2VhcmNoIGF0ICVzXG4iCiBtc2dzdHIgIuWujOaIkOaQnOe0oiAlc1xuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzUyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzU5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyBhbm5vdGF0ZWQgdGFncyBjYW4gZGVzY3JpYmUgJyVzJy5cbiIKQEAgLTQzODAsNyArNDYwMCw3IEBACiAi5rKh5pyJ5rOo6YeKIHRhZyDog73mj4/ov7AgJyVzJ+OAglxuIgogIueEtuiAjO+8jOaciemdnuazqOmHiiB0YWfvvJrlsJ3or5UgLS10YWdz44CCIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzU2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6MzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJObyB0YWdzIGNhbiBkZXNjcmliZSAnJXMnLlxuIgpAQCAtNDM4OSwxMiArNDYwOSwxMiBAQAogIuayoeacieazqOmHiiB0YWcg6IO95o+P6L+wICclcyfjgIJcbiIKICLlsJ3or5UgLS1hbHdheXPvvIzmiJbogIXliJvlu7rkuIDkupsgdGFn44CCIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzc3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgInRyYXZlcnNlZCAlbHUgY29tbWl0c1xuIgogbXNnc3RyICLlt7LpgY3ljoYgJWx1IOS4quaPkOS6pFxuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6MzgwCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6Mzg3CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJtb3JlIHRoYW4gJWkgdGFncyBmb3VuZDsgbGlzdGVkICVpIG1vc3QgcmVjZW50XG4iCkBAIC00NDAzLDU5ICs0NjIzLDYzIEBACiAi5Y+R546w5aSa5LqOICVpIOS4qiB0YWfvvIzliJflh7rmnIDov5HnmoQgJWkg5LiqXG4iCiAi5ZyoICVzIOaUvuW8g+aQnOe0olxuIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDAyCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDA5CiBtc2dpZCAiZmluZCB0aGUgdGFnIHRoYXQgY29tZXMgYWZ0ZXIgdGhlIGNvbW1pdCIKIG1zZ3N0ciAi5a+75om+5o+Q5Lqk5LmL5ZCO55qEIHRhZ++8iOeUqOS6juaPj+i/sOaPkOS6pO+8iSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwMworIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMAogbXNnaWQgImRlYnVnIHNlYXJjaCBzdHJhdGVneSBvbiBzdGRlcnIiCiBtc2dzdHIgIuWcqOagh+WHhumUmeivr+S4iuiwg+ivleaQnOe0ouetlueVpSIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNAorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMQogbXNnaWQgInVzZSBhbnkgcmVmIgogbXNnc3RyICLkvb/nlKjku7vmhI/lvJXnlKgiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MDUKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MTIKIG1zZ2lkICJ1c2UgYW55IHRhZywgZXZlbiB1bmFubm90YXRlZCIKIG1zZ3N0ciAi5L2/55So5Lu75oSPIHRhZ++8jOWNs+S9v+acquW4puazqOinoyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwNgorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxMwogbXNnaWQgImFsd2F5cyB1c2UgbG9uZyBmb3JtYXQiCiBtc2dzdHIgIuWni+e7iOS9v+eUqOmVv+aPkOS6pOWPt+agvOW8jyIKIAotIzogYnVpbHRpbi9kZXNjcmliZS5jOjQwOQorIzogYnVpbHRpbi9kZXNjcmliZS5jOjQxNAorbXNnaWQgIm9ubHkgZm9sbG93IGZpcnN0IHBhcmVudCIKK21zZ3N0ciAi5Y+q6Lef6ZqP56ys5LiA5Liq54i25o+Q5LqkIgorCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CiBtc2dpZCAib25seSBvdXRwdXQgZXhhY3QgbWF0Y2hlcyIKIG1zZ3N0ciAi5Y+q6L6T5Ye657K+56Gu5Yy56YWNIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDExCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE5CiBtc2dpZCAiY29uc2lkZXIgPG4+IG1vc3QgcmVjZW50IHRhZ3MgKGRlZmF1bHQ6IDEwKSIKIG1zZ3N0ciAi6ICD6JmR5pyA6L+RIDxuPiDkuKogdGFnc++8iOm7mOiupO+8mjEw77yJIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDEzCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDIxCiBtc2dpZCAib25seSBjb25zaWRlciB0YWdzIG1hdGNoaW5nIDxwYXR0ZXJuPiIKIG1zZ3N0ciAi5Y+q6ICD6JmR5Yy56YWNIDzmqKHlvI8+IOeahCB0YWdzIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE1IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzgKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0MjMgYnVpbHRpbi9uYW1lLXJldi5jOjMyMgogbXNnaWQgInNob3cgYWJicmV2aWF0ZWQgY29tbWl0IG9iamVjdCBhcyBmYWxsYmFjayIKIG1zZ3N0ciAi5pi+56S6566A5YaZ55qE5o+Q5Lqk5Y+35L2c5Li65ZCO5aSHIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE2CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDI0CiBtc2dpZCAibWFyayIKIG1zZ3N0ciAi5qCH6K6wIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDE3CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDI1CiBtc2dpZCAiYXBwZW5kIDxtYXJrPiBvbiBkaXJ0eSB3b3JraW5nIHRyZWUgKGRlZmF1bHQ6IFwiLWRpcnR5XCIpIgogbXNnc3RyICLoi6Xlt6XkvZzljLrohI/vvIjmnInlj5jmm7TvvInlnKjnu5PlsL7mt7vliqAgPOagh+iusD7vvIjpu5jorqTvvJpcIi1kaXJ0eVwi77yJIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDM1CisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDQzCiBtc2dpZCAiLS1sb25nIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWJicmV2PTAiCiBtc2dzdHIgIi0tbG9uZyDkuI4gLS1hYmJyZXY9MCDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjEKKyM6IGJ1aWx0aW4vZGVzY3JpYmUuYzo0NjkKIG1zZ2lkICJObyBuYW1lcyBmb3VuZCwgY2Fubm90IGRlc2NyaWJlIGFueXRoaW5nLiIKIG1zZ3N0ciAi5rKh5pyJ5Y+R546w5ZCN56ew77yM5peg5rOV5o+P6L+w5Lu75L2V5Lic6KW/44CCIgogCi0jOiBidWlsdGluL2Rlc2NyaWJlLmM6NDgxCisjOiBidWlsdGluL2Rlc2NyaWJlLmM6NDg5CiBtc2dpZCAiLS1kaXJ0eSBpcyBpbmNvbXBhdGlibGUgd2l0aCBjb21taXR0aXNoZXMiCiBtc2dzdHIgIi0tZGlydHkg5LiN6IO95LiO5o+Q5Lqk5ZCM5pe25L2/55SoIgogCkBAIC00NDY0LDMxICs0Njg4LDI2IEBACiBtc2dpZCAiJyVzJzogbm90IGEgcmVndWxhciBmaWxlIG9yIHN5bWxpbmsiCiBtc2dzdHIgIiclcyfvvJrkuI3mmK/kuIDkuKrmraPop4Tmlofku7bmiJbnrKblj7fpk77mjqUiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjIyOAorIzogYnVpbHRpbi9kaWZmLmM6MjMwCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgb3B0aW9uOiAlcyIKIG1zZ3N0ciAi5peg5pWI6YCJ6aG577yaJXMiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjMwNQorIzogYnVpbHRpbi9kaWZmLmM6MzA3CiBtc2dpZCAiTm90IGEgZ2l0IHJlcG9zaXRvcnkiCiBtc2dzdHIgIuS4jeaYr+S4gOS4qiBnaXQg54mI5pys5bqTIgogCi0jOiBidWlsdGluL2RpZmYuYzozNDgKKyM6IGJ1aWx0aW4vZGlmZi5jOjM1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5L6b5LqG5peg5pWI5a+56LGhICclcyfjgIIiCiAKLSM6IGJ1aWx0aW4vZGlmZi5jOjM1MwotIywgYy1mb3JtYXQKLW1zZ2lkICJtb3JlIHRoYW4gJWQgdHJlZXMgZ2l2ZW46ICclcyciCi1tc2dzdHIgIuaPkOS+m+S6hui2hei/hyAlZCDkuKrmoJHlr7nosaHvvJonJXMnIgotCi0jOiBidWlsdGluL2RpZmYuYzozNjMKKyM6IGJ1aWx0aW4vZGlmZi5jOjM1OQogIywgYy1mb3JtYXQKIG1zZ2lkICJtb3JlIHRoYW4gdHdvIGJsb2JzIGdpdmVuOiAnJXMnIgogbXNnc3RyICLmj5DkvpvkuobotoXov4fkuKTkuKrmlbDmja7vvIhibG9i77yJ5a+56LGh77yaJyVzJyIKIAotIzogYnVpbHRpbi9kaWZmLmM6MzcxCisjOiBidWlsdGluL2RpZmYuYzozNjYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5oYW5kbGVkIG9iamVjdCAnJXMnIGdpdmVuLiIKIG1zZ3N0ciAi5o+Q5L6b5LqG5peg5rOV5aSE55CG55qE5a+56LGhICclcyfjgIIiCkBAIC00NDk3LDM5ICs0NzE2LDM5IEBACiBtc2dpZCAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIKIG1zZ3N0ciAiZ2l0IGZhc3QtZXhwb3J0IFtyZXYtbGlzdC1vcHRzXSIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY1OAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2NgogbXNnaWQgInNob3cgcHJvZ3Jlc3MgYWZ0ZXIgPG4+IG9iamVjdHMiCiBtc2dzdHIgIuWcqCA8bj4g5Liq5a+56LGh5LmL5ZCO5pi+56S66L+b5bqmIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjYwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY4CiBtc2dpZCAic2VsZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB0YWdzIgogbXNnc3RyICLpgInmi6nlpoLkvZXlpITnkIbnrb7lkI0gdGFncyIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2MworIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MQogbXNnaWQgInNlbGVjdCBoYW5kbGluZyBvZiB0YWdzIHRoYXQgdGFnIGZpbHRlcmVkIG9iamVjdHMiCiBtc2dzdHIgIumAieaLqeW9kyB0YWcg5oyH5ZCR6KKr6L+H5ruk5pe2IHRhZ3Mg55qE5aSE55CG5pa55byPIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjY2CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc0CiBtc2dpZCAiRHVtcCBtYXJrcyB0byB0aGlzIGZpbGUiCiBtc2dzdHIgIuaKiuagh+iusOWtmOWCqOWIsOi/meS4quaWh+S7tiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY2OAorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3NgogbXNnaWQgIkltcG9ydCBtYXJrcyBmcm9tIHRoaXMgZmlsZSIKIG1zZ3N0ciAi5LuO6L+Z5Liq5paH5Lu25a+85YWl5qCH6K6wIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjcwCisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc4CiBtc2dpZCAiRmFrZSBhIHRhZ2dlciB3aGVuIHRhZ3MgbGFjayBvbmUiCiBtc2dzdHIgIuW9kyB0YWdzIOe8uuWwkeagh+iusOiAheWtl+auteaXtu+8jOWBh+ijheaPkOS+m+S4gOS4qiIKIAotIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY3MgorIzogYnVpbHRpbi9mYXN0LWV4cG9ydC5jOjY4MAogbXNnaWQgIk91dHB1dCBmdWxsIHRyZWUgZm9yIGVhY2ggY29tbWl0IgogbXNnc3RyICLmr4/mrKHmj5DkuqTpg73ovpPlh7rmlbTkuKrmoJEiCiAKLSM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2NzQKKyM6IGJ1aWx0aW4vZmFzdC1leHBvcnQuYzo2ODIKIG1zZ2lkICJVc2UgdGhlIGRvbmUgZmVhdHVyZSB0byB0ZXJtaW5hdGUgdGhlIHN0cmVhbSIKIG1zZ3N0ciAi5L2/55SoIGRvbmUg5Yqf6IO95p2l57uI5q2i5rWBIgogCi0jOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6Njc1CisjOiBidWlsdGluL2Zhc3QtZXhwb3J0LmM6NjgzCiBtc2dpZCAiU2tpcCBvdXRwdXQgb2YgYmxvYiBkYXRhIgogbXNnc3RyICLot7Pov4fmlbDmja7lr7nosaHnmoTovpPlh7oiCiAKQEAgLTQ2MDYsNyArNDgyNSw3IEBACiBtc2dpZCAiY29udmVydCB0byBhIGNvbXBsZXRlIHJlcG9zaXRvcnkiCiBtc2dzdHIgIui9rOaNouS4uuS4gOS4quWujOaVtOeahOeJiOacrOW6kyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTEzMAorIzogYnVpbHRpbi9mZXRjaC5jOjg4IGJ1aWx0aW4vbG9nLmM6MTE3NwogbXNnaWQgImRpciIKIG1zZ3N0ciAi55uu5b2VIgogCkBAIC00NjE4LDc3ICs0ODM3LDc3IEBACiBtc2dpZCAiZGVmYXVsdCBtb2RlIGZvciByZWN1cnNpb24iCiBtc2dzdHIgIumAkuW9kueahOm7mOiupOaooeW8jyIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjIwNAorIzogYnVpbHRpbi9mZXRjaC5jOjIyMAogbXNnaWQgIkNvdWxkbid0IGZpbmQgcmVtb3RlIHJlZiBIRUFEIgogbXNnc3RyICLml6Dms5Xlj5HnjrDov5znqIsgSEVBRCDlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNTcKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyNzMKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0ICVzIG5vdCBmb3VuZCIKIG1zZ3N0ciAi5a+56LGhICVzIOacquWPkeeOsCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjI2MgorIzogYnVpbHRpbi9mZXRjaC5jOjI3OAogbXNnaWQgIlt1cCB0byBkYXRlXSIKIG1zZ3N0ciAiW+acgOaWsF0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzYKKyM6IGJ1aWx0aW4vZmV0Y2guYzoyOTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiISAlLSpzICUtKnMgLT4gJXMgIChjYW4ndCBmZXRjaCBpbiBjdXJyZW50IGJyYW5jaCkiCiBtc2dzdHIgIiEgJS0qcyAlLSpzIC0+ICVzICDvvIjlnKjlvZPliY3liIbmlK/kuIvkuI3og73ojrflj5bvvIkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyNzcgYnVpbHRpbi9mZXRjaC5jOjM2MworIzogYnVpbHRpbi9mZXRjaC5jOjI5MyBidWlsdGluL2ZldGNoLmM6Mzc5CiBtc2dpZCAiW3JlamVjdGVkXSIKIG1zZ3N0ciAiW+W3suaLkue7nV0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyODgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMDQKIG1zZ2lkICJbdGFnIHVwZGF0ZV0iCiBtc2dzdHIgIlt0YWfmm7TmlrBdIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGJ1aWx0aW4vZmV0Y2guYzoyOTAgYnVpbHRpbi9mZXRjaC5jOjMyNSBidWlsdGluL2ZldGNoLmM6MzQzCisjOiBidWlsdGluL2ZldGNoLmM6MzA2IGJ1aWx0aW4vZmV0Y2guYzozNDEgYnVpbHRpbi9mZXRjaC5jOjM1OQogbXNnaWQgIiAgKHVuYWJsZSB0byB1cGRhdGUgbG9jYWwgcmVmKSIKIG1zZ3N0ciAiICDvvIjkuI3og73mm7TmlrDmnKzlnLDlvJXnlKjvvIkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozMDgKKyM6IGJ1aWx0aW4vZmV0Y2guYzozMjQKIG1zZ2lkICJbbmV3IHRhZ10iCiBtc2dzdHIgIlvmlrB0YWddIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzExCisjOiBidWlsdGluL2ZldGNoLmM6MzI3CiBtc2dpZCAiW25ldyBicmFuY2hdIgogbXNnc3RyICJb5paw5YiG5pSvXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjMxNAorIzogYnVpbHRpbi9mZXRjaC5jOjMzMAogbXNnaWQgIltuZXcgcmVmXSIKIG1zZ3N0ciAiW+aWsOW8leeUqF0iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozNTkKKyM6IGJ1aWx0aW4vZmV0Y2guYzozNzUKIG1zZ2lkICJ1bmFibGUgdG8gdXBkYXRlIGxvY2FsIHJlZiIKIG1zZ3N0ciAi5LiN6IO95pu05paw5pys5Zyw5byV55SoIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzU5CisjOiBidWlsdGluL2ZldGNoLmM6Mzc1CiBtc2dpZCAiZm9yY2VkIHVwZGF0ZSIKIG1zZ3N0ciAi5by65Yi25pu05pawIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MzY1CisjOiBidWlsdGluL2ZldGNoLmM6MzgxCiBtc2dpZCAiKG5vbi1mYXN0LWZvcndhcmQpIgogbXNnc3RyICLvvIjpnZ7lv6vov5vlvI/vvIkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzozOTYgYnVpbHRpbi9mZXRjaC5jOjY4OAorIzogYnVpbHRpbi9mZXRjaC5jOjQxMiBidWlsdGluL2ZldGNoLmM6NzE4CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICVzOiAlc1xuIgogbXNnc3RyICLml6Dms5XmiZPlvIAgJXPvvJolc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NDA1CisjOiBidWlsdGluL2ZldGNoLmM6NDIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiVzIGRpZCBub3Qgc2VuZCBhbGwgbmVjZXNzYXJ5IG9iamVjdHNcbiIKIG1zZ3N0ciAiJXMg5pyq5Y+R6YCB5omA5pyJ5b+F6aG755qE5a+56LGhXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo0OTEKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1MjAKICMsIGMtZm9ybWF0CiBtc2dpZCAiRnJvbSAlLipzXG4iCiBtc2dzdHIgIuadpeiHqiAlLipzXG4iCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo1MDIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1MzEKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogInNvbWUgbG9jYWwgcmVmcyBjb3VsZCBub3QgYmUgdXBkYXRlZDsgdHJ5IHJ1bm5pbmdcbiIKQEAgLTQ2OTgsODcgKzQ5MTcsODcgQEAKICIgJ2dpdCByZW1vdGUgcHJ1bmUgJXMnIOadpeWIoOmZpOaXp+eahOOAgeacieWGsueqgeeahOWIhuaUryIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiBidWlsdGluL2ZldGNoLmM6NTUyCisjOiBidWlsdGluL2ZldGNoLmM6NTgxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyB3aWxsIGJlY29tZSBkYW5nbGluZykiCiBtc2dzdHIgIiAgIO+8iCVzIOWwhuaIkOS4uuaRh+aRhueKtuaAge+8iSIKIAogIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8Ci0jOiBidWlsdGluL2ZldGNoLmM6NTUzCisjOiBidWlsdGluL2ZldGNoLmM6NTgyCiAjLCBjLWZvcm1hdAogbXNnaWQgIiAgICglcyBoYXMgYmVjb21lIGRhbmdsaW5nKSIKIG1zZ3N0ciAiICAg77yIJXMg5bey5oiQ5Li65pGH5pGG54q25oCB77yJIgogCi0jOiBidWlsdGluL2ZldGNoLmM6NTYwCisjOiBidWlsdGluL2ZldGNoLmM6NTg5CiBtc2dpZCAiW2RlbGV0ZWRdIgogbXNnc3RyICJb5bey5Yig6ZmkXSIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjU2MSBidWlsdGluL3JlbW90ZS5jOjEwNTUKKyM6IGJ1aWx0aW4vZmV0Y2guYzo1OTAgYnVpbHRpbi9yZW1vdGUuYzoxMDU1CiBtc2dpZCAiKG5vbmUpIgogbXNnc3RyICLvvIjml6DvvIkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo2NzgKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3MDgKICMsIGMtZm9ybWF0CiBtc2dpZCAiUmVmdXNpbmcgdG8gZmV0Y2ggaW50byBjdXJyZW50IGJyYW5jaCAlcyBvZiBub24tYmFyZSByZXBvc2l0b3J5IgogbXNnc3RyICLmi5Lnu53ojrflj5bliLDpnZ7oo7jniYjmnKzlupPnmoTlvZPliY3liIbmlK8gJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo3MTIKKyM6IGJ1aWx0aW4vZmV0Y2guYzo3NDIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRG9uJ3Qga25vdyBob3cgdG8gZmV0Y2ggZnJvbSAlcyIKIG1zZ3N0ciAi5LiN55+l6YGT5aaC5L2V5LuOICVzIOiOt+WPliIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc4OQorIzogYnVpbHRpbi9mZXRjaC5jOjgyMwogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIHZhbHVlIFwiJXNcIiBpcyBub3QgdmFsaWQgZm9yICVzIgogbXNnc3RyICLpgInpobkgXCIlc1wiIOeahOWAvCBcIiVzXCIg5a+55LqOICVzIOaYr+aXoOaViOeahCIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjc5MgorIzogYnVpbHRpbi9mZXRjaC5jOjgyNgogIywgYy1mb3JtYXQKIG1zZ2lkICJPcHRpb24gXCIlc1wiIGlzIGlnbm9yZWQgZm9yICVzXG4iCiBtc2dzdHIgIumAiemhuSBcIiVzXCIg5Li6ICVzIOaJgOW/veeVpVxuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODk0CisjOiBidWlsdGluL2ZldGNoLmM6OTI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZldGNoaW5nICVzXG4iCiBtc2dzdHIgIuato+WcqOiOt+WPliAlc1xuIgogCi0jOiBidWlsdGluL2ZldGNoLmM6ODk2IGJ1aWx0aW4vcmVtb3RlLmM6MTAwCisjOiBidWlsdGluL2ZldGNoLmM6OTMwIGJ1aWx0aW4vcmVtb3RlLmM6MTAwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBmZXRjaCAlcyIKIG1zZ3N0ciAi5LiN6IO96I635Y+WICVzIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTE1CisjOiBidWlsdGluL2ZldGNoLmM6OTQ5CiBtc2dpZCAiIgogIk5vIHJlbW90ZSByZXBvc2l0b3J5IHNwZWNpZmllZC4gIFBsZWFzZSwgc3BlY2lmeSBlaXRoZXIgYSBVUkwgb3IgYVxuIgogInJlbW90ZSBuYW1lIGZyb20gd2hpY2ggbmV3IHJldmlzaW9ucyBzaG91bGQgYmUgZmV0Y2hlZC4iCiBtc2dzdHIgIuacquaMh+Wumui/nOeoi+eJiOacrOW6k+OAguivt+mAmui/h+S4gOS4qlVSTOaIlui/nOeoi+eJiOacrOW6k+WQjeaMh+Wumu+8jOeUqOS7peiOt+WPluaWsOaPkOS6pOOAgiIKIAotIzogYnVpbHRpbi9mZXRjaC5jOjkzNQorIzogYnVpbHRpbi9mZXRjaC5jOjk2OQogbXNnaWQgIllvdSBuZWVkIHRvIHNwZWNpZnkgYSB0YWcgbmFtZS4iCiBtc2dzdHIgIuaCqOmcgOimgeaMh+WumuS4gOS4qiB0YWcg5ZCN56ew44CCIgogCi0jOiBidWlsdGluL2ZldGNoLmM6OTgxCisjOiBidWlsdGluL2ZldGNoLmM6MTAxNQogbXNnaWQgIi0tZGVwdGggYW5kIC0tdW5zaGFsbG93IGNhbm5vdCBiZSB1c2VkIHRvZ2V0aGVyIgogbXNnc3RyICItLWRlcHRoIOWSjCAtLXVuc2hhbGxvdyDkuI3og73lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzo5ODMKKyM6IGJ1aWx0aW4vZmV0Y2guYzoxMDE3CiBtc2dpZCAiLS11bnNoYWxsb3cgb24gYSBjb21wbGV0ZSByZXBvc2l0b3J5IGRvZXMgbm90IG1ha2Ugc2Vuc2UiCiBtc2dzdHIgIuWvueS6juS4gOS4quWujOaVtOeahOeJiOacrOW6k++8jOWPguaVsCAtLXVuc2hhbGxvdyDmsqHmnInmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDAyCisjOiBidWlsdGluL2ZldGNoLmM6MTAzNgogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IHRha2UgYSByZXBvc2l0b3J5IGFyZ3VtZW50IgogbXNnc3RyICJmZXRjaCAtLWFsbCDkuI3og73luKbkuIDkuKrniYjmnKzlupPlj4LmlbAiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDA0CisjOiBidWlsdGluL2ZldGNoLmM6MTAzOAogbXNnaWQgImZldGNoIC0tYWxsIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugd2l0aCByZWZzcGVjcyIKIG1zZ3N0ciAiZmV0Y2ggLS1hbGwg5bim5byV55So6KGo6L6+5byP5rKh5pyJ5Lu75L2V5oSP5LmJIgogCi0jOiBidWlsdGluL2ZldGNoLmM6MTAxNQorIzogYnVpbHRpbi9mZXRjaC5jOjEwNDkKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gc3VjaCByZW1vdGUgb3IgcmVtb3RlIGdyb3VwOiAlcyIKIG1zZ3N0ciAi5rKh5pyJ6L+Z5qC355qE6L+c56iL5oiW6L+c56iL57uE77yaJXMiCiAKLSM6IGJ1aWx0aW4vZmV0Y2guYzoxMDIzCisjOiBidWlsdGluL2ZldGNoLmM6MTA1NwogbXNnaWQgIkZldGNoaW5nIGEgZ3JvdXAgYW5kIHNwZWNpZnlpbmcgcmVmc3BlY3MgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAi6I635Y+W57uE5bm25oyH5a6a5byV55So6KGo6L6+5byP5rKh5pyJ5oSP5LmJIgogCkBAIC00Nzg3LDkgKzUwMDYsOSBAQAogbXNnc3RyICIiCiAiZ2l0IGZtdC1tZXJnZS1tc2cgWy1tIDxtZXNzYWdlPl0gWy0tbG9nWz08bj5dfC0tbm8tbG9nXSBbLS1maWxlIDxmaWxlPl0iCiAKLSM6IGJ1aWx0aW4vZm10LW1lcmdlLW1zZy5jOjY2MyBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjYgYnVpbHRpbi9ncmVwLmM6NzAxCi0jOiBidWlsdGluL21lcmdlLmM6MTg4IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NTUgYnVpbHRpbi9zaG93LXJlZi5jOjE3NQotIzogYnVpbHRpbi90YWcuYzo0NDYgcGFyc2Utb3B0aW9ucy5oOjEzMyBwYXJzZS1vcHRpb25zLmg6MjM5CisjOiBidWlsdGluL2ZtdC1tZXJnZS1tc2cuYzo2NjMgYnVpbHRpbi9mbXQtbWVyZ2UtbXNnLmM6NjY2IGJ1aWx0aW4vZ3JlcC5jOjcwMAorIzogYnVpbHRpbi9tZXJnZS5jOjIwMyBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjU1IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzkKKyM6IGJ1aWx0aW4vdGFnLmM6NDQ2IHBhcnNlLW9wdGlvbnMuaDoxMzMgcGFyc2Utb3B0aW9ucy5oOjI0MwogbXNnaWQgIm4iCiBtc2dzdHIgIm4iCiAKQEAgLTQ5NDYsMjIxICs1MTY1LDIyMSBAQAogbXNnaWQgImdyZXA6IGZhaWxlZCB0byBjcmVhdGUgdGhyZWFkOiAlcyIKIG1zZ3N0ciAiZ3JlcO+8muaXoOazleWIm+W7uue6v+eoi++8miVzIgogCi0jOiBidWlsdGluL2dyZXAuYzozNjUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjM2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gY2hkaXI6ICVzIgogbXNnc3RyICLml6Dms5XliIfmjaLnm67lvZXvvJolcyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NDQzIGJ1aWx0aW4vZ3JlcC5jOjQ3OAorIzogYnVpbHRpbi9ncmVwLmM6NDQyIGJ1aWx0aW4vZ3JlcC5jOjQ3NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gcmVhZCB0cmVlICglcykiCiBtc2dzdHIgIuaXoOazleivu+WPluagke+8iCVz77yJIgogCi0jOiBidWlsdGluL2dyZXAuYzo0OTMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjQ5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gZ3JlcCBmcm9tIG9iamVjdCBvZiB0eXBlICVzIgogbXNnc3RyICLml6Dms5XmipPlj5bmnaXoh6rkuo4gJXMg57G75Z6L55qE5a+56LGhIgogCi0jOiBidWlsdGluL2dyZXAuYzo1NTEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJzd2l0Y2ggYCVjJyBleHBlY3RzIGEgbnVtZXJpY2FsIHZhbHVlIgogbXNnc3RyICLlvIDlhbMgYCVjJyDmnJ/mnJvkuIDkuKrmlbDlrZflgLwiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjU2OAorIzogYnVpbHRpbi9ncmVwLmM6NTY3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gCAnJXMnIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NDMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY0MgogbXNnaWQgInNlYXJjaCBpbiBpbmRleCBpbnN0ZWFkIG9mIGluIHRoZSB3b3JrIHRyZWUiCiBtc2dzdHIgIuWcqOe0ouW8leWMuuaQnOe0ouiAjOS4jeaYr+WcqOW3peS9nOWMuiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQ1CisjOiBidWlsdGluL2dyZXAuYzo2NDQKIG1zZ2lkICJmaW5kIGluIGNvbnRlbnRzIG5vdCBtYW5hZ2VkIGJ5IGdpdCIKIG1zZ3N0ciAi5Zyo5pyq6KKrIGdpdCDnrqHnkIbnmoTlhoXlrrnkuK3mn6Xmib4iCiAKICMgIOivkeiAhe+8muS4reaWh+Wtl+espuS4suaLvOaOpe+8jOWPr+WIoOmZpOWJjeWvvOepuuagvAotIzogYnVpbHRpbi9ncmVwLmM6NjQ3CisjOiBidWlsdGluL2dyZXAuYzo2NDYKIG1zZ2lkICJzZWFyY2ggaW4gYm90aCB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMiCiBtc2dzdHIgIuWcqOi3n+i4quWSjOacqui3n+i4queahOaWh+S7tuS4reaQnOe0oiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjQ5CisjOiBidWlsdGluL2dyZXAuYzo2NDgKIG1zZ2lkICJzZWFyY2ggYWxzbyBpbiBpZ25vcmVkIGZpbGVzIgogbXNnc3RyICLkuZ/lnKjlv73nlaXnmoTmlofku7bkuK3mkJzntKIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY1MgorIzogYnVpbHRpbi9ncmVwLmM6NjUxCiBtc2dpZCAic2hvdyBub24tbWF0Y2hpbmcgbGluZXMiCiBtc2dzdHIgIuaYvuekuuacquWMuemFjeeahOihjCIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjU0CisjOiBidWlsdGluL2dyZXAuYzo2NTMKIG1zZ2lkICJjYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIgogbXNnc3RyICLkuI3ljLrliIblpKflsI/lhpnljLnphY0iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY1NgorIzogYnVpbHRpbi9ncmVwLmM6NjU1CiBtc2dpZCAibWF0Y2ggcGF0dGVybnMgb25seSBhdCB3b3JkIGJvdW5kYXJpZXMiCiBtc2dzdHIgIuWPquWcqOWNleivjei+ueeVjOWMuemFjeaooeW8jyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjU4CisjOiBidWlsdGluL2dyZXAuYzo2NTcKIG1zZ2lkICJwcm9jZXNzIGJpbmFyeSBmaWxlcyBhcyB0ZXh0IgogbXNnc3RyICLmiorkuozov5vliLbmlofku7blvZPlgZrmlofmnKzlpITnkIYiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2MAorIzogYnVpbHRpbi9ncmVwLmM6NjU5CiBtc2dpZCAiZG9uJ3QgbWF0Y2ggcGF0dGVybnMgaW4gYmluYXJ5IGZpbGVzIgogbXNnc3RyICLkuI3lnKjkuozov5vliLbmlofku7bkuK3ljLnphY3mqKHlvI8iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2MworIzogYnVpbHRpbi9ncmVwLmM6NjYyCiBtc2dpZCAiZGVzY2VuZCBhdCBtb3N0IDxkZXB0aD4gbGV2ZWxzIgogbXNnc3RyICLmnIDlpJrku6XmjIflrprnmoTmt7HluqblkJHkuIvlr7vmib4iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY2NworIzogYnVpbHRpbi9ncmVwLmM6NjY2CiBtc2dpZCAidXNlIGV4dGVuZGVkIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMiCiBtc2dzdHIgIuS9v+eUqOaJqeWxleeahCBQT1NJWCDmraPliJnooajovr7lvI8iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY3MAorIzogYnVpbHRpbi9ncmVwLmM6NjY5CiBtc2dpZCAidXNlIGJhc2ljIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbnMgKGRlZmF1bHQpIgogbXNnc3RyICLkvb/nlKjln7rmnKznmoQgUE9TSVgg5q2j5YiZ6KGo6L6+5byP77yI6buY6K6k77yJIgogCi0jOiBidWlsdGluL2dyZXAuYzo2NzMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY3MgogbXNnaWQgImludGVycHJldCBwYXR0ZXJucyBhcyBmaXhlZCBzdHJpbmdzIgogbXNnc3RyICLmiormqKHlvI/op6PmnpDkuLrlm7rlrprnmoTlrZfnrKbkuLIiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY3NgorIzogYnVpbHRpbi9ncmVwLmM6Njc1CiBtc2dpZCAidXNlIFBlcmwtY29tcGF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgogbXNnc3RyICLkvb/nlKggUGVybCDlhbzlrrnnmoTmraPliJnooajovr7lvI8iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY3OQorIzogYnVpbHRpbi9ncmVwLmM6Njc4CiBtc2dpZCAic2hvdyBsaW5lIG51bWJlcnMiCiBtc2dzdHIgIuaYvuekuuihjOWPtyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NjgwCisjOiBidWlsdGluL2dyZXAuYzo2NzkKIG1zZ2lkICJkb24ndCBzaG93IGZpbGVuYW1lcyIKIG1zZ3N0ciAi5LiN5pi+56S65paH5Lu25ZCNIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODEKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4MAogbXNnaWQgInNob3cgZmlsZW5hbWVzIgogbXNnc3RyICLmmL7npLrmlofku7blkI0iCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY4MworIzogYnVpbHRpbi9ncmVwLmM6NjgyCiBtc2dpZCAic2hvdyBmaWxlbmFtZXMgcmVsYXRpdmUgdG8gdG9wIGRpcmVjdG9yeSIKIG1zZ3N0ciAi5pi+56S655u45a+55LqO6aG257qn55uu5b2V55qE5paH5Lu25ZCNIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NAogbXNnaWQgInNob3cgb25seSBmaWxlbmFtZXMgaW5zdGVhZCBvZiBtYXRjaGluZyBsaW5lcyIKIG1zZ3N0ciAi5Y+q5pi+56S65paH5Lu25ZCN6ICM5LiN5pi+56S65Yy56YWN55qE6KGMIgogCi0jOiBidWlsdGluL2dyZXAuYzo2ODcKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4NgogbXNnaWQgInN5bm9ueW0gZm9yIC0tZmlsZXMtd2l0aC1tYXRjaGVzIgogbXNnc3RyICLlkowgLS1maWxlcy13aXRoLW1hdGNoZXMg5ZCM5LmJIgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTAKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY4OQogbXNnaWQgInNob3cgb25seSB0aGUgbmFtZXMgb2YgZmlsZXMgd2l0aG91dCBtYXRjaCIKIG1zZ3N0ciAi5Y+q5pi+56S65pyq5Yy56YWN55qE5paH5Lu25ZCNIgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MQogbXNnaWQgInByaW50IE5VTCBhZnRlciBmaWxlbmFtZXMiCiBtc2dzdHIgIuWcqOaWh+S7tuWQjeWQjui+k+WHuiBOVUwg5a2X56ymIgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5MwogbXNnaWQgInNob3cgdGhlIG51bWJlciBvZiBtYXRjaGVzIGluc3RlYWQgb2YgbWF0Y2hpbmcgbGluZXMiCiBtc2dzdHIgIuaYvuekuuaAu+WMuemFjeihjOaVsO+8jOiAjOS4jeaYvuekuuWMuemFjeeahOihjCIKIAotIzogYnVpbHRpbi9ncmVwLmM6Njk1CisjOiBidWlsdGluL2dyZXAuYzo2OTQKIG1zZ2lkICJoaWdobGlnaHQgbWF0Y2hlcyIKIG1zZ3N0ciAi6auY5Lqu5pi+56S65Yy56YWN6aG5IgogCi0jOiBidWlsdGluL2dyZXAuYzo2OTcKKyM6IGJ1aWx0aW4vZ3JlcC5jOjY5NgogbXNnaWQgInByaW50IGVtcHR5IGxpbmUgYmV0d2VlbiBtYXRjaGVzIGZyb20gZGlmZmVyZW50IGZpbGVzIgogbXNnc3RyICLlnKjkuI3lkIzmlofku7bnmoTljLnphY3pobnkuYvpl7TmiZPljbDnqbrooYwiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjY5OQorIzogYnVpbHRpbi9ncmVwLmM6Njk4CiBtc2dpZCAic2hvdyBmaWxlbmFtZSBvbmx5IG9uY2UgYWJvdmUgbWF0Y2hlcyBmcm9tIHNhbWUgZmlsZSIKIG1zZ3N0ciAi5Y+q5Zyo5ZCM5LiA5paH5Lu255qE5Yy56YWN6aG555qE5LiK6Z2i5pi+56S65LiA5qyh5paH5Lu25ZCNIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MDIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwMQogbXNnaWQgInNob3cgPG4+IGNvbnRleHQgbGluZXMgYmVmb3JlIGFuZCBhZnRlciBtYXRjaGVzIgogbXNnc3RyICLmmL7npLrljLnphY3pobnliY3lkI7nmoQgPG4+IOihjOS4iuS4i+aWhyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzA1CisjOiBidWlsdGluL2dyZXAuYzo3MDQKIG1zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGJlZm9yZSBtYXRjaGVzIgogbXNnc3RyICLmmL7npLrljLnphY3pobnliY0gPG4+IOihjOS4iuS4i+aWhyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzA3CisjOiBidWlsdGluL2dyZXAuYzo3MDYKIG1zZ2lkICJzaG93IDxuPiBjb250ZXh0IGxpbmVzIGFmdGVyIG1hdGNoZXMiCiBtc2dzdHIgIuaYvuekuuWMuemFjemhueWQjiA8bj4g6KGM5LiK5LiL5paHIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MDgKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcwNwogbXNnaWQgInNob3J0Y3V0IGZvciAtQyBOVU0iCiBtc2dzdHIgIuW/q+aNt+mUriAtQyDmlbDlrZciCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcxMQorIzogYnVpbHRpbi9ncmVwLmM6NzEwCiBtc2dpZCAic2hvdyBhIGxpbmUgd2l0aCB0aGUgZnVuY3Rpb24gbmFtZSBiZWZvcmUgbWF0Y2hlcyIKIG1zZ3N0ciAi5Zyo5Yy56YWN55qE5YmN6Z2i5pi+56S65LiA6KGM5Ye95pWw5ZCNIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MTMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjcxMgogbXNnaWQgInNob3cgdGhlIHN1cnJvdW5kaW5nIGZ1bmN0aW9uIgogbXNnc3RyICLmmL7npLrmiYDlnKjlh73mlbDnmoTliY3lkI7lhoXlrrkiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjcxNgorIzogYnVpbHRpbi9ncmVwLmM6NzE1CiBtc2dpZCAicmVhZCBwYXR0ZXJucyBmcm9tIGZpbGUiCiBtc2dzdHIgIuS7juaWh+S7tuivu+WPluaooeW8jyIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzE4CisjOiBidWlsdGluL2dyZXAuYzo3MTcKIG1zZ2lkICJtYXRjaCA8cGF0dGVybj4iCiBtc2dzdHIgIuWMuemFjSA85qih5byPPiIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzIwCisjOiBidWlsdGluL2dyZXAuYzo3MTkKIG1zZ2lkICJjb21iaW5lIHBhdHRlcm5zIHNwZWNpZmllZCB3aXRoIC1lIgogbXNnc3RyICLnu4TlkIjnlKggLWUg5Y+C5pWw6K6+5a6a55qE5qih5byPIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MzIKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczMQogbXNnaWQgImluZGljYXRlIGhpdCB3aXRoIGV4aXQgc3RhdHVzIHdpdGhvdXQgb3V0cHV0IgogbXNnc3RyICLkuI3ovpPlh7rvvIzogIznlKjpgIDlh7rnoIHmoIfor4blkb3kuK3nirbmgIEiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjczNAorIzogYnVpbHRpbi9ncmVwLmM6NzMzCiBtc2dpZCAic2hvdyBvbmx5IG1hdGNoZXMgZnJvbSBmaWxlcyB0aGF0IG1hdGNoIGFsbCBwYXR0ZXJucyIKIG1zZ3N0ciAi5Y+q5pi+56S65Yy56YWN5omA5pyJ5qih5byP55qE5paH5Lu25Lit55qE5Yy56YWNIgogCi0jOiBidWlsdGluL2dyZXAuYzo3MzYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjczNQogbXNnaWQgInNob3cgcGFyc2UgdHJlZSBmb3IgZ3JlcCBleHByZXNzaW9uIgogbXNnc3RyICLmmL7npLogZ3JlcCDooajovr7lvI/nmoTop6PmnpDmoJEiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjc0MAorIzogYnVpbHRpbi9ncmVwLmM6NzM5CiBtc2dpZCAicGFnZXIiCiBtc2dzdHIgIuWIhumhtSIKIAotIzogYnVpbHRpbi9ncmVwLmM6NzQwCisjOiBidWlsdGluL2dyZXAuYzo3MzkKIG1zZ2lkICJzaG93IG1hdGNoaW5nIGZpbGVzIGluIHRoZSBwYWdlciIKIG1zZ3N0ciAi5YiG6aG15pi+56S65Yy56YWN55qE5paH5Lu2IgogCi0jOiBidWlsdGluL2dyZXAuYzo3NDMKKyM6IGJ1aWx0aW4vZ3JlcC5jOjc0MgogbXNnaWQgImFsbG93IGNhbGxpbmcgb2YgZ3JlcCgxKSAoaWdub3JlZCBieSB0aGlzIGJ1aWxkKSIKIG1zZ3N0ciAi5YWB6K646LCD55SoIGdyZXAoMSnvvIjmnKzmrKHmnoTlu7rlv73nlaXvvIkiCiAKLSM6IGJ1aWx0aW4vZ3JlcC5jOjc0NCBidWlsdGluL3Nob3ctcmVmLmM6MTg0CisjOiBidWlsdGluL2dyZXAuYzo3NDMgYnVpbHRpbi9zaG93LXJlZi5jOjE4OAogbXNnaWQgInNob3cgdXNhZ2UiCiBtc2dzdHIgIuaYvuekuueUqOazlSIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODExCisjOiBidWlsdGluL2dyZXAuYzo4MTAKIG1zZ2lkICJubyBwYXR0ZXJuIGdpdmVuLiIKIG1zZ3N0ciAi5pyq5o+Q5L6b5qih5byP5Yy56YWN44CCIgogCi0jOiBidWlsdGluL2dyZXAuYzo4NjYKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg2NQogbXNnaWQgIi0tb3Blbi1maWxlcy1pbi1wYWdlciBvbmx5IHdvcmtzIG9uIHRoZSB3b3JrdHJlZSIKIG1zZ3N0ciAiLS1vcGVuLWZpbGVzLWluLXBhZ2VyIOS7heeUqOS6juW3peS9nOWMuiIKIAotIzogYnVpbHRpbi9ncmVwLmM6ODg5CisjOiBidWlsdGluL2dyZXAuYzo4ODgKIG1zZ2lkICItLWNhY2hlZCBvciAtLXVudHJhY2tlZCBjYW5ub3QgYmUgdXNlZCB3aXRoIC0tbm8taW5kZXguIgogbXNnc3RyICItLWNhY2hlZCDmiJYgLS11bnRyYWNrZWQg5LiN6IO95LiOIC0tbm8taW5kZXgg5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL2dyZXAuYzo4OTQKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg5MwogbXNnaWQgIi0tbm8taW5kZXggb3IgLS11bnRyYWNrZWQgY2Fubm90IGJlIHVzZWQgd2l0aCByZXZzLiIKIG1zZ3N0ciAiLS1uby1pbmRleCDmiJYgLS11bnRyYWNrZWQg5LiN6IO95ZKM54mI5pys5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL2dyZXAuYzo4OTcKKyM6IGJ1aWx0aW4vZ3JlcC5jOjg5NgogbXNnaWQgIi0tW25vLV1leGNsdWRlLXN0YW5kYXJkIGNhbm5vdCBiZSB1c2VkIGZvciB0cmFja2VkIGNvbnRlbnRzLiIKIG1zZ3N0ciAiLS1bbm8tXWV4Y2x1ZGUtc3RhbmRhcmQg5LiN6IO955So5LqO5bey6Lef6Liq5YaF5a6544CCIgogCi0jOiBidWlsdGluL2dyZXAuYzo5MDUKKyM6IGJ1aWx0aW4vZ3JlcC5jOjkwNAogbXNnaWQgImJvdGggLS1jYWNoZWQgYW5kIHRyZWVzIGFyZSBnaXZlbi4iCiBtc2dzdHIgIuWQjOaXtue7meWHuuS6hiAtLWNhY2hlZCDlkozmoJHlr7nosaHjgIIiCiAKQEAgLTUyMDAsNTQgKzU0MTksNTQgQEAKIG1zZ2lkICJwcm9jZXNzIGZpbGUgYXMgaXQgd2VyZSBmcm9tIHRoaXMgcGF0aCIKIG1zZ3N0ciAi5aSE55CG5paH5Lu25bm25YGH6K6+5YW25p2l6Ieq5LqO5q2k6Lev5b6EIgogCi0jOiBidWlsdGluL2hlbHAuYzo0MworIzogYnVpbHRpbi9oZWxwLmM6NDEKIG1zZ2lkICJwcmludCBhbGwgYXZhaWxhYmxlIGNvbW1hbmRzIgogbXNnc3RyICLmiZPljbDmiYDmnInlj6/nlKjnmoTlkb3ku6QiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQ0CisjOiBidWlsdGluL2hlbHAuYzo0MgogbXNnaWQgInByaW50IGxpc3Qgb2YgdXNlZnVsIGd1aWRlcyIKIG1zZ3N0ciAi5pi+56S65pyJ55So55qE5oyH5Y2X5YiX6KGoIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NQorIzogYnVpbHRpbi9oZWxwLmM6NDMKIG1zZ2lkICJzaG93IG1hbiBwYWdlIgogbXNnc3RyICLmmL7npLogbWFuIOaJi+WGjCIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDYKKyM6IGJ1aWx0aW4vaGVscC5jOjQ0CiBtc2dpZCAic2hvdyBtYW51YWwgaW4gd2ViIGJyb3dzZXIiCiBtc2dzdHIgIuWcqCB3ZWIg5rWP6KeI5Zmo5Lit5pi+56S65omL5YaMIgogCi0jOiBidWlsdGluL2hlbHAuYzo0OAorIzogYnVpbHRpbi9oZWxwLmM6NDYKIG1zZ2lkICJzaG93IGluZm8gcGFnZSIKIG1zZ3N0ciAi5pi+56S6IGluZm8g5omL5YaMIgogCi0jOiBidWlsdGluL2hlbHAuYzo1NAorIzogYnVpbHRpbi9oZWxwLmM6NTIKIG1zZ2lkICJnaXQgaGVscCBbLS1hbGxdIFstLWd1aWRlc10gWy0tbWFufC0td2VifC0taW5mb10gW2NvbW1hbmRdIgogbXNnc3RyICJnaXQgaGVscCBbLS1hbGxdIFstLWd1aWRlc10gWy0tbWFufC0td2VifC0taW5mb10gW+WRveS7pF0iCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjY2CisjOiBidWlsdGluL2hlbHAuYzo2NAogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bnJlY29nbml6ZWQgaGVscCBmb3JtYXQgJyVzJyIKIG1zZ3N0ciAi5pyq6IO96K+G5Yir55qE5biu5Yqp5qC85byPICclcyciCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjk0CisjOiBidWlsdGluL2hlbHAuYzo5MgogbXNnaWQgIkZhaWxlZCB0byBzdGFydCBlbWFjc2NsaWVudC4iCiBtc2dzdHIgIuaXoOazleWQr+WKqCBlbWFjc2NsaWVudOOAgiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MTA3CisjOiBidWlsdGluL2hlbHAuYzoxMDUKIG1zZ2lkICJGYWlsZWQgdG8gcGFyc2UgZW1hY3NjbGllbnQgdmVyc2lvbi4iCiBtc2dzdHIgIuaXoOazleino+aekCBlbWFjc2NsaWVudCDniYjmnKzjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjExNQorIzogYnVpbHRpbi9oZWxwLmM6MTEzCiAjLCBjLWZvcm1hdAogbXNnaWQgImVtYWNzY2xpZW50IHZlcnNpb24gJyVkJyB0b28gb2xkICg8IDIyKS4iCiBtc2dzdHIgImVtYWNzY2xpZW50IOeJiOacrCAnJWQnIOWkquiAge+8iDwgMjLvvInjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjEzMyBidWlsdGluL2hlbHAuYzoxNjEgYnVpbHRpbi9oZWxwLmM6MTcwIGJ1aWx0aW4vaGVscC5jOjE3OAorIzogYnVpbHRpbi9oZWxwLmM6MTMxIGJ1aWx0aW4vaGVscC5jOjE1OSBidWlsdGluL2hlbHAuYzoxNjggYnVpbHRpbi9oZWxwLmM6MTc2CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBleGVjICclcyc6ICVzIgogbXNnc3RyICLml6Dms5XmiafooYwgJyVzJ++8miVzIgogCi0jOiBidWlsdGluL2hlbHAuYzoyMTgKKyM6IGJ1aWx0aW4vaGVscC5jOjIxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiJyVzJzogcGF0aCBmb3IgdW5zdXBwb3J0ZWQgbWFuIHZpZXdlci5cbiIKQEAgLTUyNTYsNyArNTQ3NSw3IEBACiAiJyVzJ++8muS4jeaUr+aMgeeahCBtYW4g5omL5YaM5p+l55yL5Zmo55qE6Lev5b6E44CCXG4iCiAi6K+35L2/55SoICdtYW4uPHRvb2w+LmNtZCfjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjIzMAorIzogYnVpbHRpbi9oZWxwLmM6MjI4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICInJXMnOiBjbWQgZm9yIHN1cHBvcnRlZCBtYW4gdmlld2VyLlxuIgpAQCAtNTI2NSwzMzUgKzU0ODQsMzM1IEBACiAiJyVzJzog5pSv5oyB55qEIG1hbiDmiYvlhozmn6XnnIvlmajlkb3ku6TjgIJcbiIKICLor7fkvb/nlKggJ21hbi48dG9vbD4ucGF0aCfjgIIiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjM1MQorIzogYnVpbHRpbi9oZWxwLmM6MzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcyc6IHVua25vd24gbWFuIHZpZXdlci4iCiBtc2dzdHIgIiclcyfvvJrmnKrnn6XnmoQgbWFuIOafpeeci+WZqOOAgiIKIAotIzogYnVpbHRpbi9oZWxwLmM6MzY4CisjOiBidWlsdGluL2hlbHAuYzozNjYKIG1zZ2lkICJubyBtYW4gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgIuayoeaciSBtYW4g5p+l55yL5Zmo5aSE55CG5q2k6K+35rGCIgogCi0jOiBidWlsdGluL2hlbHAuYzozNzYKKyM6IGJ1aWx0aW4vaGVscC5jOjM3NAogbXNnaWQgIm5vIGluZm8gdmlld2VyIGhhbmRsZWQgdGhlIHJlcXVlc3QiCiBtc2dzdHIgIuayoeaciSBpbmZvIOafpeeci+WZqOWkhOeQhuatpOivt+axgiIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDIyCisjOiBidWlsdGluL2hlbHAuYzo0MjAKIG1zZ2lkICJEZWZpbmluZyBhdHRyaWJ1dGVzIHBlciBwYXRoIgogbXNnc3RyICLlrprkuYnot6/lvoTnmoTlsZ7mgKciCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyMworIzogYnVpbHRpbi9oZWxwLmM6NDIxCiBtc2dpZCAiQSBHaXQgZ2xvc3NhcnkiCiBtc2dzdHIgIkdpdCDor43msYfooagiCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyNAorIzogYnVpbHRpbi9oZWxwLmM6NDIyCiBtc2dpZCAiU3BlY2lmaWVzIGludGVudGlvbmFsbHkgdW50cmFja2VkIGZpbGVzIHRvIGlnbm9yZSIKIG1zZ3N0ciAi5b+955Wl5oyH5a6a55qE5pyq6Lef6Liq5paH5Lu2IgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjUKKyM6IGJ1aWx0aW4vaGVscC5jOjQyMwogbXNnaWQgIkRlZmluaW5nIHN1Ym1vZHVsZSBwcm9wZXJ0aWVzIgogbXNnc3RyICLlrprkuYnlrZDmqKHnu4TlsZ7mgKciCiAKLSM6IGJ1aWx0aW4vaGVscC5jOjQyNgorIzogYnVpbHRpbi9oZWxwLmM6NDI0CiBtc2dpZCAiU3BlY2lmeWluZyByZXZpc2lvbnMgYW5kIHJhbmdlcyBmb3IgR2l0IgogbXNnc3RyICLmjIflrpogR2l0IOeahOeJiOacrOWSjOeJiOacrOiMg+WbtCIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDI3CisjOiBidWlsdGluL2hlbHAuYzo0MjUKIG1zZ2lkICJBIHR1dG9yaWFsIGludHJvZHVjdGlvbiB0byBHaXQgKGZvciB2ZXJzaW9uIDEuNS4xIG9yIG5ld2VyKSIKIG1zZ3N0ciAi5LiA5LiqIEdpdCDmlZnnqIvvvIjpkojlr7kgMS41LjEg5oiW5pu05paw54mI5pys77yJIgogCi0jOiBidWlsdGluL2hlbHAuYzo0MjgKKyM6IGJ1aWx0aW4vaGVscC5jOjQyNgogbXNnaWQgIkFuIG92ZXJ2aWV3IG9mIHJlY29tbWVuZGVkIHdvcmtmbG93cyB3aXRoIEdpdCIKIG1zZ3N0ciAiR2l0IOaOqOiNkOeahOW3peS9nOa1geamguiniCIKIAotIzogYnVpbHRpbi9oZWxwLmM6NDQwCisjOiBidWlsdGluL2hlbHAuYzo0MzgKIG1zZ2lkICJUaGUgY29tbW9uIEdpdCBndWlkZXMgYXJlOlxuIgogbXNnc3RyICLmnIDluLjnlKjnmoQgR2l0IOWQkeWvvOacie+8mlxuIgogCi0jOiBidWlsdGluL2hlbHAuYzo0NjIgYnVpbHRpbi9oZWxwLmM6NDc4CisjOiBidWlsdGluL2hlbHAuYzo0NjAgYnVpbHRpbi9oZWxwLmM6NDc2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVzYWdlOiAlcyVzIgogbXNnc3RyICLnlKjms5XvvJolcyVzIgogCi0jOiBidWlsdGluL2hlbHAuYzo0OTQKKyM6IGJ1aWx0aW4vaGVscC5jOjQ5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJgZ2l0ICVzJyBpcyBhbGlhc2VkIHRvIGAlcyciCiBtc2dzdHIgImBnaXQgJXMnIOaYryBgJXMnIOeahOWIq+WQjSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTgyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxODQKICMsIGMtZm9ybWF0CiBtc2dpZCAib2JqZWN0IHR5cGUgbWlzbWF0Y2ggYXQgJXMiCiBtc2dzdHIgIiVzIOeahOWvueixoeexu+Wei+S4jeWMuemFjSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjAyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyMDQKIG1zZ2lkICJvYmplY3Qgb2YgdW5leHBlY3RlZCB0eXBlIgogbXNnc3RyICLmhI/lpJbnmoTnsbvlnovnmoTlr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjIzOQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjQ0CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBmaWxsICVkIGJ5dGUiCiBtc2dpZF9wbHVyYWwgImNhbm5vdCBmaWxsICVkIGJ5dGVzIgogbXNnc3RyWzBdICLml6Dms5XloavlhYUgJWQg5a2X6IqCIgogbXNnc3RyWzFdICLml6Dms5XloavlhYUgJWQg5a2X6IqCIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNDkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NAogbXNnaWQgImVhcmx5IEVPRiIKIG1zZ3N0ciAi6L+H5pep55qE5paH5Lu257uT5p2f56ym77yIRU9G77yJIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNTAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI1NQogbXNnaWQgInJlYWQgZXJyb3Igb24gaW5wdXQiCiBtc2dzdHIgIui+k+WFpeS4iueahOivu+mUmeivryIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjYyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjcKIG1zZ2lkICJ1c2VkIG1vcmUgYnl0ZXMgdGhhbiB3ZXJlIGF2YWlsYWJsZSIKIG1zZ3N0ciAi55So5o6J5LqG6LaF6L+H5Y+v55So55qE5a2X6IqCIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoyNjkKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI3NAogbXNnaWQgInBhY2sgdG9vIGxhcmdlIGZvciBjdXJyZW50IGRlZmluaXRpb24gb2Ygb2ZmX3QiCiBtc2dzdHIgIuWMheWkquWkp+i2hei/h+S6huW9k+WJjSBvZmZfdCDnmoTlrprkuYkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI4NQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MjkwCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byBjcmVhdGUgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Yib5bu6ICclcyciCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjI5MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6Mjk1CiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBvcGVuIHBhY2tmaWxlICclcyciCiBtc2dzdHIgIuaXoOazleaJk+W8gOWMheaWh+S7tiAnJXMnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzozMDQKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwOQogbXNnaWQgInBhY2sgc2lnbmF0dXJlIG1pc21hdGNoIgogbXNnc3RyICLljIXnrb7lkI3kuI3ljLnphY0iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMwNgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzExCiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgdmVyc2lvbiAlPFBSSXUzMj4gdW5zdXBwb3J0ZWQiCiBtc2dzdHIgIuS4jeaUr+aMgeWMheeJiOacrCAlPFBSSXUzMj4iCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjMyNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MzI5CiAjLCBjLWZvcm1hdAogbXNnaWQgInBhY2sgaGFzIGJhZCBvYmplY3QgYXQgb2Zmc2V0ICVsdTogJXMiCiBtc2dzdHIgIuWMheS4reaciemUmeivr+eahOWvueixoeS9jeS6jiAlbHXvvJolcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NDQ2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzo0NTEKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5mbGF0ZSByZXR1cm5lZCAlZCIKIG1zZ3N0ciAi6Kej5Y6L57yp6L+U5ZueICVkIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo0OTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMAogbXNnaWQgIm9mZnNldCB2YWx1ZSBvdmVyZmxvdyBmb3IgZGVsdGEgYmFzZSBvYmplY3QiCiBtc2dzdHIgIuWBj+enu+WAvOimhuebluS6hiBkZWx0YSDln7rlh4blr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTA4CiBtc2dpZCAiZGVsdGEgYmFzZSBvZmZzZXQgaXMgb3V0IG9mIGJvdW5kIgogbXNnc3RyICJkZWx0YSDln7rlh4blgY/np7votornlYwiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjUxMQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTE2CiAjLCBjLWZvcm1hdAogbXNnaWQgInVua25vd24gb2JqZWN0IHR5cGUgJWQiCiBtc2dzdHIgIuacquefpeWvueixoeexu+WeiyAlZCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NDcKIG1zZ2lkICJjYW5ub3QgcHJlYWQgcGFjayBmaWxlIgogbXNnc3RyICLml6Dms5Xor7vlj5bljIXmlofku7YiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjU0NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgInByZW1hdHVyZSBlbmQgb2YgcGFjayBmaWxlLCAlbHUgYnl0ZSBtaXNzaW5nIgogbXNnaWRfcGx1cmFsICJwcmVtYXR1cmUgZW5kIG9mIHBhY2sgZmlsZSwgJWx1IGJ5dGVzIG1pc3NpbmciCiBtc2dzdHJbMF0gIuWMheaWh+S7tui/h+aXqee7k+adn++8jOe8uuWwkSAlbHUg5a2X6IqCIgogbXNnc3RyWzFdICLljIXmlofku7bov4fml6nnu5PmnZ/vvIznvLrlsJEgJWx1IOWtl+iKgiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NTcwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo1NzUKIG1zZ2lkICJzZXJpb3VzIGluZmxhdGUgaW5jb25zaXN0ZW5jeSIKIG1zZ3N0ciAi6Kej5Y6L57yp5Lil6YeN55qE5LiN5LiA6Ie0IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjEgYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY5MAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzI0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjczMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NjY2IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY3MiBidWlsdGluL2luZGV4LXBhY2suYzo2OTUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjcyOSBidWlsdGluL2luZGV4LXBhY2suYzo3MzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiU0hBMSBDT0xMSVNJT04gRk9VTkQgV0lUSCAlcyAhIgogbXNnc3RyICLlj5HnjrAgJXMg5Ye6546wIFNIQTEg5Yay56qB77yBIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzo2NjQgYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoxNzAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjY2OSBidWlsdGluL3BhY2stb2JqZWN0cy5jOjE3MAogIzogYnVpbHRpbi9wYWNrLW9iamVjdHMuYzoyNjIKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIHJlYWQgJXMiCiBtc2dzdHIgIuS4jeiDveivuyAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzMwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3MzUKICMsIGMtZm9ybWF0CiBtc2dpZCAiY2Fubm90IHJlYWQgZXhpc3Rpbmcgb2JqZWN0ICVzIgogbXNnc3RyICLkuI3og73or7vlj5bnjrDlrZjlr7nosaEgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc0NAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgYmxvYiBvYmplY3QgJXMiCiBtc2dzdHIgIuaXoOaViOeahOaVsOaNru+8iGJsb2LvvInlr7nosaEgJXMiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjc1OQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCiAjLCBjLWZvcm1hdAogbXNnaWQgImludmFsaWQgJXMiCiBtc2dzdHIgIuaXoOaViOeahCAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYxCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjYKIG1zZ2lkICJFcnJvciBpbiBvYmplY3QiCiBtc2dzdHIgIuWvueixoeS4reWHuumUmSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6NzYzCisjOiBidWlsdGluL2luZGV4LXBhY2suYzo3NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm90IGFsbCBjaGlsZCBvYmplY3RzIG9mICVzIGFyZSByZWFjaGFibGUiCiBtc2dzdHIgIiVzIOeahOaJgOacieWtkOWvueixoeW5tumdnumDveWPr+i+viIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODMzIGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2MworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6ODM4IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjg2OAogbXNnaWQgImZhaWxlZCB0byBhcHBseSBkZWx0YSIKIG1zZ3N0ciAi5peg5rOV5bqU55SoIGRlbHRhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDA5CiBtc2dpZCAiUmVjZWl2aW5nIG9iamVjdHMiCiBtc2dzdHIgIuaOpeaUtuWvueixoeS4rSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwNAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAwOQogbXNnaWQgIkluZGV4aW5nIG9iamVjdHMiCiBtc2dzdHIgIue0ouW8leWvueixoeS4rSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzMAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzNQogbXNnaWQgInBhY2sgaXMgY29ycnVwdGVkIChTSEExIG1pc21hdGNoKSIKIG1zZ3N0ciAi5YyF5Yay56qB77yIU0hBMSDkuI3ljLnphY3vvIkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwMzUKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEwNDAKIG1zZ2lkICJjYW5ub3QgZnN0YXQgcGFja2ZpbGUiCiBtc2dzdHIgIuS4jeiDveaemuS4vuWMheaWh+S7tueKtuaAgSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTAzOAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA0MwogbXNnaWQgInBhY2sgaGFzIGp1bmsgYXQgdGhlIGVuZCIKIG1zZ3N0ciAi5YyF55qE57uT5bC+5pyJ5Z6D5Zy+5pWw5o2uIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDQ5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDU0CiBtc2dpZCAiY29uZnVzaW9uIGJleW9uZCBpbnNhbml0eSBpbiBwYXJzZV9wYWNrX29iamVjdHMoKSIKIG1zZ3N0ciAicGFyc2VfcGFja19vYmplY3RzKCkg5Lit6YGH5Yiw5LiN5Y+v55CG5Za755qE6Zeu6aKYIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDcyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMDc3CiBtc2dpZCAiUmVzb2x2aW5nIGRlbHRhcyIKIG1zZ3N0ciAi5aSE55CGIGRlbHRhIOS4rSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4MgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTA4NwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gY3JlYXRlIHRocmVhZDogJXMiCiBtc2dzdHIgIuS4jeiDveWIm+W7uue6v+eoi++8miVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTI0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTI5CiBtc2dpZCAiY29uZnVzaW9uIGJleW9uZCBpbnNhbml0eSIKIG1zZ3N0ciAi5LiN5Y+v55CG5Za7IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTMyCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMTM3CiAjLCBjLWZvcm1hdAogbXNnaWQgImNvbXBsZXRlZCB3aXRoICVkIGxvY2FsIG9iamVjdHMiCiBtc2dzdHIgIuWujOaIkCAlZCDkuKrmnKzlnLDlr7nosaEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDcKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5leHBlY3RlZCB0YWlsIGNoZWNrc3VtIGZvciAlcyAoZGlzayBjb3JydXB0aW9uPykiCiBtc2dzdHIgIuWvuSAlcyDnmoTlsL7pg6jmoKHpqozlh7rnjrDmhI/lpJbvvIjno4Hnm5jmjZ/lnY/vvJ/vvIkiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNDYKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNTEKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YSIKIG1zZ2lkX3BsdXJhbCAicGFjayBoYXMgJWQgdW5yZXNvbHZlZCBkZWx0YXMiCiBtc2dzdHJbMF0gIuWMheaciSAlZCDkuKrmnKrop6PlhrPnmoQgZGVsdGEiCiBtc2dzdHJbMV0gIuWMheaciSAlZCDkuKrmnKrop6PlhrPnmoQgZGVsdGEiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzEKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjExNzYKICMsIGMtZm9ybWF0CiBtc2dpZCAidW5hYmxlIHRvIGRlZmxhdGUgYXBwZW5kZWQgb2JqZWN0ICglZCkiCiBtc2dzdHIgIuS4jeiDveWOi+e8qemZhOWKoOWvueixoe+8iCVk77yJIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjUwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjU1CiAjLCBjLWZvcm1hdAogbXNnaWQgImxvY2FsIG9iamVjdCAlcyBpcyBjb3JydXB0IgogbXNnc3RyICLmnKzlnLDlr7nosaEgJXMg5bey5o2f5Z2PIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjc5CiBtc2dpZCAiZXJyb3Igd2hpbGUgY2xvc2luZyBwYWNrIGZpbGUiCiBtc2dzdHIgIuWFs+mXreWMheaWh+S7tuaXtuWHuumUmSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI4NworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTI5MgogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgd3JpdGUga2VlcCBmaWxlICclcyciCiBtc2dzdHIgIuaXoOazleWGmeS/neeVmeaWh+S7tiAnJXMnIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxMjk1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzAwCiAjLCBjLWZvcm1hdAogbXNnaWQgImNhbm5vdCBjbG9zZSB3cml0dGVuIGtlZXAgZmlsZSAnJXMnIgogbXNnc3RyICLml6Dms5XlhbPpl63kv53nlZnmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMwOAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxMwogbXNnaWQgImNhbm5vdCBzdG9yZSBwYWNrIGZpbGUiCiBtc2dzdHIgIuaXoOazleWtmOWCqOWMheaWh+S7tiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMxOQorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTMyNAogbXNnaWQgImNhbm5vdCBzdG9yZSBpbmRleCBmaWxlIgogbXNnc3RyICLml6Dms5XlrZjlgqjntKLlvJXmlofku7YiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTIKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjEzNTcKICMsIGMtZm9ybWF0CiBtc2dpZCAiYmFkIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIG1zZ3N0ciAi5Z2P55qEIHBhY2suaW5kZXh2ZXJzaW9uPSU8UFJJdTMyPiIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM1OAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MwogIywgYy1mb3JtYXQKIG1zZ2lkICJpbnZhbGlkIG51bWJlciBvZiB0aHJlYWRzIHNwZWNpZmllZCAoJWQpIgogbXNnc3RyICLmjIflrprnmoTnur/nqIvmlbDml6DmlYjvvIglZO+8iSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTM2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTM1CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxMzY3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm8gdGhyZWFkcyBzdXBwb3J0LCBpZ25vcmluZyAlcyIKIG1zZ3N0ciAi5rKh5pyJ57q/56iL5pSv5oyB77yM5b+955WlICVzIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDIwCisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDI1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBvcGVuIGV4aXN0aW5nIHBhY2sgZmlsZSAnJXMnIgogbXNnc3RyICLml6Dms5XmiZPlvIDnjrDlrZjljIXmlofku7YgJyVzJyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyMgorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTQyNwogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3Qgb3BlbiBleGlzdGluZyBwYWNrIGlkeCBmaWxlIGZvciAnJXMnIgogbXNnc3RyICLml6Dms5XkuLogJXMg5omT5byA5YyF57Si5byV5paH5Lu2IgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDY5CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDc0CiAjLCBjLWZvcm1hdAogbXNnaWQgIm5vbiBkZWx0YTogJWQgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJub24gZGVsdGE6ICVkIG9iamVjdHMiCiBtc2dzdHJbMF0gIumdniBkZWx0Ye+8miVkIOS4quWvueixoSIKIG1zZ3N0clsxXSAi6Z2eIGRlbHRh77yaJWQg5Liq5a+56LGhIgogCi0jOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDc2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNDgxCiAjLCBjLWZvcm1hdAogbXNnaWQgImNoYWluIGxlbmd0aCA9ICVkOiAlbHUgb2JqZWN0IgogbXNnaWRfcGx1cmFsICJjaGFpbiBsZW5ndGggPSAlZDogJWx1IG9iamVjdHMiCiBtc2dzdHJbMF0gIumTvumVvyA9ICVkOiAlbHUg5a+56LGhIgogbXNnc3RyWzFdICLpk77plb8gPSAlZDogJWx1IOWvueixoSIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTUwOQogbXNnaWQgIkNhbm5vdCBjb21lIGJhY2sgdG8gY3dkIgogbXNnc3RyICLml6Dms5Xov5Tlm57lvZPliY3lt6XkvZznm67lvZUiCiAKLSM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NDcgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU1MAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU2MiBidWlsdGluL2luZGV4LXBhY2suYzoxNTY2CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTU3IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NjAKKyM6IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE1NzIgYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU3NgogIywgYy1mb3JtYXQKIG1zZ2lkICJiYWQgJXMiCiBtc2dzdHIgIumUmeivr+mAiemhuSAlcyIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4MAorIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU5MAogbXNnaWQgIi0tZml4LXRoaW4gY2Fubm90IGJlIHVzZWQgd2l0aG91dCAtLXN0ZGluIgogbXNnc3RyICItLWZpeC10aGluIOS4jeiDveWSjCAtLXN0ZGluIOWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTU4NCBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0CisjOiBidWlsdGluL2luZGV4LXBhY2suYzoxNTk0IGJ1aWx0aW4vaW5kZXgtcGFjay5jOjE2MDQKICMsIGMtZm9ybWF0CiBtc2dpZCAicGFja2ZpbGUgbmFtZSAnJXMnIGRvZXMgbm90IGVuZCB3aXRoICcucGFjayciCiBtc2dzdHIgIuWMheWQjSAnJXMnIOayoeacieS7pSAnLnBhY2snIOe7k+WwviIKIAotIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYwMworIzogYnVpbHRpbi9pbmRleC1wYWNrLmM6MTYxMwogbXNnaWQgIi0tdmVyaWZ5IHdpdGggbm8gcGFja2ZpbGUgbmFtZSBnaXZlbiIKIG1zZ3N0ciAiLS12ZXJpZnkg5rKh5pyJ5o+Q5L6b5YyF5ZCN5Y+C5pWwIgogCkBAIC01NzMwLDcgKzU5NDksNyBAQAogbXNnaWQgInNwZWNpZnkgdGhhdCB0aGUgZ2l0IHJlcG9zaXRvcnkgaXMgdG8gYmUgc2hhcmVkIGFtb25nc3Qgc2V2ZXJhbCB1c2VycyIKIG1zZ3N0ciAi5oyH5a6aIGdpdCDniYjmnKzlupPmmK/lpJrkuKrnlKjmiLfkuYvpl7TlhbHkuqvnmoQiCiAKLSM6IGJ1aWx0aW4vaW5pdC1kYi5jOjQ5MyBidWlsdGluL3BydW5lLXBhY2tlZC5jOjc3CisjOiBidWlsdGluL2luaXQtZGIuYzo0OTMgYnVpbHRpbi9wcnVuZS1wYWNrZWQuYzo3NQogbXNnaWQgImJlIHF1aWV0IgogbXNnc3RyICLkv53mjIHlronpnZkiCiAKQEAgLTU3NjIsMzQwICs1OTgxLDM1MyBAQAogbXNnaWQgIkNhbm5vdCBhY2Nlc3Mgd29yayB0cmVlICclcyciCiBtc2dzdHIgIuS4jeiDveiuv+mXruW3peS9nOWMuiAnJXMnIgogCi0jOiBidWlsdGluL2xvZy5jOjQwCisjOiBidWlsdGluL2xvZy5jOjQxCiBtc2dpZCAiZ2l0IGxvZyBbPG9wdGlvbnM+XSBbPHJldmlzaW9uIHJhbmdlPl0gW1stLV0gPHBhdGg+Li4uXVxuIgogbXNnc3RyICJnaXQgbG9nIFs86YCJ6aG5Pl0gWzzniYjmnKzojIPlm7Q+XSBbWy0tXSA86Lev5b6EPi4uLl1cbiIKIAotIzogYnVpbHRpbi9sb2cuYzo0MQorIzogYnVpbHRpbi9sb2cuYzo0MgogbXNnaWQgIiAgIG9yOiBnaXQgc2hvdyBbb3B0aW9uc10gPG9iamVjdD4uLi4iCiBtc2dzdHIgIiAgIOaIluiAhe+8mmdpdCBzaG93IFvpgInpobldIDzlr7nosaE+Li4uIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMworIzogYnVpbHRpbi9sb2cuYzoxMjQKIG1zZ2lkICJzdXBwcmVzcyBkaWZmIG91dHB1dCIKIG1zZ3N0ciAi5LiN5pi+56S65beu5byC6L6T5Ye6IgogCi0jOiBidWlsdGluL2xvZy5jOjEwNAorIzogYnVpbHRpbi9sb2cuYzoxMjUKIG1zZ2lkICJzaG93IHNvdXJjZSIKIG1zZ3N0ciAi5pi+56S65rqQIgogCi0jOiBidWlsdGluL2xvZy5jOjEwNQorIzogYnVpbHRpbi9sb2cuYzoxMjYKIG1zZ2lkICJVc2UgbWFpbCBtYXAgZmlsZSIKIG1zZ3N0ciAi5L2/55So6YKu5Lu25pig5bCE5paH5Lu2IgogCi0jOiBidWlsdGluL2xvZy5jOjEwNgorIzogYnVpbHRpbi9sb2cuYzoxMjcKIG1zZ2lkICJkZWNvcmF0ZSBvcHRpb25zIgogbXNnc3RyICLkv67ppbDpgInpobkiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTk5CisjOiBidWlsdGluL2xvZy5jOjIzMAogIywgYy1mb3JtYXQKIG1zZ2lkICJGaW5hbCBvdXRwdXQ6ICVkICVzXG4iCiBtc2dzdHIgIuacgOe7iOi+k+WHuu+8miVkICVzXG4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NDIyIGJ1aWx0aW4vbG9nLmM6NTE0CisjOiBidWlsdGluL2xvZy5jOjQ1MyBidWlsdGluL2xvZy5jOjU0NQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBvYmplY3QgJXMiCiBtc2dzdHIgIuS4jeiDveivu+WPluWvueixoSAlcyIKIAotIzogYnVpbHRpbi9sb2cuYzo1MzgKKyM6IGJ1aWx0aW4vbG9nLmM6NTY5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gdHlwZTogJWQiCiBtc2dzdHIgIuacquefpeexu+Wei++8miVkIgogCi0jOiBidWlsdGluL2xvZy5jOjYzOAorIzogYnVpbHRpbi9sb2cuYzo2NjkKIG1zZ2lkICJmb3JtYXQuaGVhZGVycyB3aXRob3V0IHZhbHVlIgogbXNnc3RyICJmb3JtYXQuaGVhZGVycyDmsqHmnInlgLwiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6NzIwCisjOiBidWlsdGluL2xvZy5jOjc1MQogbXNnaWQgIm5hbWUgb2Ygb3V0cHV0IGRpcmVjdG9yeSBpcyB0b28gbG9uZyIKIG1zZ3N0ciAi6L6T5Ye655uu5b2V5ZCN5aSq6ZW/IgogCi0jOiBidWlsdGluL2xvZy5jOjczNgorIzogYnVpbHRpbi9sb2cuYzo3NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IG9wZW4gcGF0Y2ggZmlsZSAlcyIKIG1zZ3N0ciAi5peg5rOV5omT5byA6KGl5LiB5paH5Lu2ICVzIgogCi0jOiBidWlsdGluL2xvZy5jOjc1MAorIzogYnVpbHRpbi9sb2cuYzo3ODEKIG1zZ2lkICJOZWVkIGV4YWN0bHkgb25lIHJhbmdlLiIKIG1zZ3N0ciAi5Y+q6ZyA6KaB5LiA5Liq6IyD5Zu044CCIgogCi0jOiBidWlsdGluL2xvZy5jOjc1OAorIzogYnVpbHRpbi9sb2cuYzo3ODkKIG1zZ2lkICJOb3QgYSByYW5nZS4iCiBtc2dzdHIgIuS4jeaYr+S4gOS4quiMg+WbtOOAgiIKIAotIzogYnVpbHRpbi9sb2cuYzo4NjAKKyM6IGJ1aWx0aW4vbG9nLmM6ODkxCiBtc2dpZCAiQ292ZXIgbGV0dGVyIG5lZWRzIGVtYWlsIGZvcm1hdCIKIG1zZ3N0ciAi5L+h5bCB6ZyA6KaB6YKu5Lu25Zyw5Z2A5qC85byPIgogCi0jOiBidWlsdGluL2xvZy5jOjkzNgorIzogYnVpbHRpbi9sb2cuYzo5NjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiaW5zYW5lIGluLXJlcGx5LXRvOiAlcyIKIG1zZ3N0ciAi5LiN5q2j5bi455qEIGluLXJlcGx5LXRv77yaJXMiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6OTY0CisjOiBidWlsdGluL2xvZy5jOjk5NQogbXNnaWQgImdpdCBmb3JtYXQtcGF0Y2ggW29wdGlvbnNdIFs8c2luY2U+IHwgPHJldmlzaW9uIHJhbmdlPl0iCiBtc2dzdHIgImdpdCBmb3JtYXQtcGF0Y2ggW+mAiemhuV0gWzzku44+IHwgPOS/ruiuoumbhuiMg+WbtD5dIgogCi0jOiBidWlsdGluL2xvZy5jOjEwMDkKKyM6IGJ1aWx0aW4vbG9nLmM6MTA0MAogbXNnaWQgIlR3byBvdXRwdXQgZGlyZWN0b3JpZXM/IgogbXNnc3RyICLkuKTkuKrovpPlh7rnm67lvZXvvJ8iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEwOAorIzogYnVpbHRpbi9sb2cuYzoxMTU1CiBtc2dpZCAidXNlIFtQQVRDSCBuL21dIGV2ZW4gd2l0aCBhIHNpbmdsZSBwYXRjaCIKIG1zZ3N0ciAi5L2/55SoIFtQQVRDSCBuL21d77yM5Y2z5L2/5Y+q5pyJ5LiA5Liq6KGl5LiBIgogCi0jOiBidWlsdGluL2xvZy5jOjExMTEKKyM6IGJ1aWx0aW4vbG9nLmM6MTE1OAogbXNnaWQgInVzZSBbUEFUQ0hdIGV2ZW4gd2l0aCBtdWx0aXBsZSBwYXRjaGVzIgogbXNnc3RyICLkvb/nlKggW1BBVENIXe+8jOWNs+S9v+acieWkmuS4quihpeS4gSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTE1CisjOiBidWlsdGluL2xvZy5jOjExNjIKIG1zZ2lkICJwcmludCBwYXRjaGVzIHRvIHN0YW5kYXJkIG91dCIKIG1zZ3N0ciAi5omT5Y2w6KGl5LiB5Yiw5qCH5YeG6L6T5Ye6IgogCi0jOiBidWlsdGluL2xvZy5jOjExMTcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE2NAogbXNnaWQgImdlbmVyYXRlIGEgY292ZXIgbGV0dGVyIgogbXNnc3RyICLnlJ/miJDkuIDlsIHpmYTkv6EiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTExOQorIzogYnVpbHRpbi9sb2cuYzoxMTY2CiBtc2dpZCAidXNlIHNpbXBsZSBudW1iZXIgc2VxdWVuY2UgZm9yIG91dHB1dCBmaWxlIG5hbWVzIgogbXNnc3RyICLkvb/nlKjnroDljZXnmoTmlbDlrZfluo/liJfkvZzkuLrovpPlh7rmlofku7blkI0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMAorIzogYnVpbHRpbi9sb2cuYzoxMTY3CiBtc2dpZCAic2Z4IgogbXNnc3RyICLlkI7nvIAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMQorIzogYnVpbHRpbi9sb2cuYzoxMTY4CiBtc2dpZCAidXNlIDxzZng+IGluc3RlYWQgb2YgJy5wYXRjaCciCiBtc2dzdHIgIuS9v+eUqCA85ZCO57yAPiDku6Pmm78gJy5wYXRjaCciCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEyMworIzogYnVpbHRpbi9sb2cuYzoxMTcwCiBtc2dpZCAic3RhcnQgbnVtYmVyaW5nIHBhdGNoZXMgYXQgPG4+IGluc3RlYWQgb2YgMSIKIG1zZ3N0ciAi6KGl5LiB5LulIDxuPiDlvIDlp4vnvJblj7fvvIzogIzkuI3mmK8xIgogCi0jOiBidWlsdGluL2xvZy5jOjExMjUKKyM6IGJ1aWx0aW4vbG9nLmM6MTE3MgogbXNnaWQgIm1hcmsgdGhlIHNlcmllcyBhcyBOdGggcmUtcm9sbCIKIG1zZ3N0ciAi5qCH6K6w6KGl5LiB57O75YiX5piv56ys5Yeg5qyh6YeN5Yi2IgogCi0jOiBidWlsdGluL2xvZy5jOjExMjcKKyM6IGJ1aWx0aW4vbG9nLmM6MTE3NAogbXNnaWQgIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIKIG1zZ3N0ciAi5L2/55SoIFs85YmN57yAPl0g5Luj5pu/IFtQQVRDSF0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzMAorIzogYnVpbHRpbi9sb2cuYzoxMTc3CiBtc2dpZCAic3RvcmUgcmVzdWx0aW5nIGZpbGVzIGluIDxkaXI+IgogbXNnc3RyICLmiornu5Pmnpzmlofku7blrZjlgqjlnKggPGRpcj4iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzMworIzogYnVpbHRpbi9sb2cuYzoxMTgwCiBtc2dpZCAiZG9uJ3Qgc3RyaXAvYWRkIFtQQVRDSF0iCiBtc2dzdHIgIuS4jeWIoOmZpC/mt7vliqAgW1BBVENIXSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTM2CisjOiBidWlsdGluL2xvZy5jOjExODMKIG1zZ2lkICJkb24ndCBvdXRwdXQgYmluYXJ5IGRpZmZzIgogbXNnc3RyICLkuI3ovpPlh7rkuozov5vliLblt67lvIIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTEzOAorIzogYnVpbHRpbi9sb2cuYzoxMTg1CiBtc2dpZCAiZG9uJ3QgaW5jbHVkZSBhIHBhdGNoIG1hdGNoaW5nIGEgY29tbWl0IHVwc3RyZWFtIgogbXNnc3RyICLkuI3ljIXlkKvlt7LlnKjkuIrmuLjmj5DkuqTkuK3nmoTooaXkuIEiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0MAorIzogYnVpbHRpbi9sb2cuYzoxMTg3CiBtc2dpZCAic2hvdyBwYXRjaCBmb3JtYXQgaW5zdGVhZCBvZiBkZWZhdWx0IChwYXRjaCArIHN0YXQpIgogbXNnc3RyICLmmL7npLrnuq/ooaXkuIHmoLzlvI/ogIzpnZ7pu5jorqTnmoTvvIjooaXkuIEr54q25oCB77yJIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDIKKyM6IGJ1aWx0aW4vbG9nLmM6MTE4OQogbXNnaWQgIk1lc3NhZ2luZyIKIG1zZ3N0ciAi6YKu5Lu25Y+R6YCBIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDMKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5MAogbXNnaWQgImhlYWRlciIKIG1zZ3N0ciAiaGVhZGVyIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDQKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5MQogbXNnaWQgImFkZCBlbWFpbCBoZWFkZXIiCiBtc2dzdHIgIua3u+WKoOmCruS7tuWktCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTQ1IGJ1aWx0aW4vbG9nLmM6MTE0NworIzogYnVpbHRpbi9sb2cuYzoxMTkyIGJ1aWx0aW4vbG9nLmM6MTE5NAogbXNnaWQgImVtYWlsIgogbXNnc3RyICLpgq7ku7blnLDlnYAiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE0NQorIzogYnVpbHRpbi9sb2cuYzoxMTkyCiBtc2dpZCAiYWRkIFRvOiBoZWFkZXIiCiBtc2dzdHIgIua3u+WKoOaUtuS7tuS6uiIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTQ3CisjOiBidWlsdGluL2xvZy5jOjExOTQKIG1zZ2lkICJhZGQgQ2M6IGhlYWRlciIKIG1zZ3N0ciAi5re75Yqg5oqE6YCBIgogCi0jOiBidWlsdGluL2xvZy5jOjExNDkKKyM6IGJ1aWx0aW4vbG9nLmM6MTE5NgorbXNnaWQgImlkZW50IgorbXNnc3RyICJpZGVudCIKKworIzogYnVpbHRpbi9sb2cuYzoxMTk3Cittc2dpZCAic2V0IEZyb20gYWRkcmVzcyB0byA8aWRlbnQ+IChvciBjb21taXR0ZXIgaWRlbnQgaWYgYWJzZW50KSIKK21zZ3N0ciAi6K6+572uIEZyb20g5Zyw5Z2A5Li6IDxpZGVudD7vvIjlpoLoi6XkuI3mj5DkvpvvvIznlKjmj5DkuqTogIVJROWBmuS4uuWcsOWdgO+8iSIKKworIzogYnVpbHRpbi9sb2cuYzoxMTk5CiBtc2dpZCAibWVzc2FnZS1pZCIKIG1zZ3N0ciAibWVzc2FnZS1pZCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTUwCisjOiBidWlsdGluL2xvZy5jOjEyMDAKIG1zZ2lkICJtYWtlIGZpcnN0IG1haWwgYSByZXBseSB0byA8bWVzc2FnZS1pZD4iCiBtc2dzdHIgIuS9v+esrOS4gOWwgemCruS7tuS9nOS4uuWvuSA8bWVzc2FnZS1pZD4g55qE5Zue5aSNIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTEgYnVpbHRpbi9sb2cuYzoxMTU0CisjOiBidWlsdGluL2xvZy5jOjEyMDEgYnVpbHRpbi9sb2cuYzoxMjA0CiBtc2dpZCAiYm91bmRhcnkiCiBtc2dzdHIgIui+ueeVjCIKIAotIzogYnVpbHRpbi9sb2cuYzoxMTUyCisjOiBidWlsdGluL2xvZy5jOjEyMDIKIG1zZ2lkICJhdHRhY2ggdGhlIHBhdGNoIgogbXNnc3RyICLpmYTku7bmlrnlvI/mt7vliqDooaXkuIEiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE1NQorIzogYnVpbHRpbi9sb2cuYzoxMjA1CiBtc2dpZCAiaW5saW5lIHRoZSBwYXRjaCIKIG1zZ3N0ciAi5YaF6IGU5pi+56S66KGl5LiBIgogCi0jOiBidWlsdGluL2xvZy5jOjExNTkKKyM6IGJ1aWx0aW4vbG9nLmM6MTIwOQogbXNnaWQgImVuYWJsZSBtZXNzYWdlIHRocmVhZGluZywgc3R5bGVzOiBzaGFsbG93LCBkZWVwIgogbXNnc3RyICLlkK/nlKjpgq7ku7bnur/ntKLvvIzpo47moLzvvJrmtYXvvIzmt7EiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2MQorIzogYnVpbHRpbi9sb2cuYzoxMjExCiBtc2dpZCAic2lnbmF0dXJlIgogbXNnc3RyICLnrb7lkI0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2MgorIzogYnVpbHRpbi9sb2cuYzoxMjEyCiBtc2dpZCAiYWRkIGEgc2lnbmF0dXJlIgogbXNnc3RyICLmt7vliqDkuIDkuKrnrb7lkI0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTE2NAorIzogYnVpbHRpbi9sb2cuYzoxMjE0CiBtc2dpZCAiZG9uJ3QgcHJpbnQgdGhlIHBhdGNoIGZpbGVuYW1lcyIKIG1zZ3N0ciAi5LiN6KaB5omT5Y2w6KGl5LiB5paH5Lu25ZCNIgogCi0jOiBidWlsdGluL2xvZy5jOjEyNDgKKyM6IGJ1aWx0aW4vbG9nLmM6MTI4OAorIywgYy1mb3JtYXQKK21zZ2lkICJpbnZhbGlkIGlkZW50IGxpbmU6ICVzIgorbXNnc3RyICLljIXlkKvml6DmlYjnmoTouqvku73moIfor4bvvJolcyIKKworIzogYnVpbHRpbi9sb2cuYzoxMzAzCiBtc2dpZCAiLW4gYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICItbiDlkowgLWsg5LqS5pal44CCIgogCi0jOiBidWlsdGluL2xvZy5jOjEyNTAKKyM6IGJ1aWx0aW4vbG9nLmM6MTMwNQogbXNnaWQgIi0tc3ViamVjdC1wcmVmaXggYW5kIC1rIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuIgogbXNnc3RyICItLXN1YmplY3QtcHJlZml4IOWSjCAtayDkupLmlqXjgIIiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI1OAorIzogYnVpbHRpbi9sb2cuYzoxMzEzCiBtc2dpZCAiLS1uYW1lLW9ubHkgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1uYW1lLW9ubHkg5peg5oSP5LmJIgogCi0jOiBidWlsdGluL2xvZy5jOjEyNjAKKyM6IGJ1aWx0aW4vbG9nLmM6MTMxNQogbXNnaWQgIi0tbmFtZS1zdGF0dXMgZG9lcyBub3QgbWFrZSBzZW5zZSIKIG1zZ3N0ciAiLS1uYW1lLXN0YXR1cyDml6DmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTI2MgorIzogYnVpbHRpbi9sb2cuYzoxMzE3CiBtc2dpZCAiLS1jaGVjayBkb2VzIG5vdCBtYWtlIHNlbnNlIgogbXNnc3RyICItLWNoZWNrIOaXoOaEj+S5iSIKIAotIzogYnVpbHRpbi9sb2cuYzoxMjg1CisjOiBidWlsdGluL2xvZy5jOjEzNDAKIG1zZ2lkICJzdGFuZGFyZCBvdXRwdXQsIG9yIGRpcmVjdG9yeSwgd2hpY2ggb25lPyIKIG1zZ3N0ciAi5qCH5YeG6L6T5Ye65oiW55uu5b2V77yM5ZOq5LiA5Liq77yfIgogCi0jOiBidWlsdGluL2xvZy5jOjEyODcKKyM6IGJ1aWx0aW4vbG9nLmM6MTM0MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSAnJXMnIgogbXNnc3RyICLkuI3og73liJvlu7rnm67lvZUgJyVzJyIKIAotIzogYnVpbHRpbi9sb2cuYzoxNDM1CisjOiBidWlsdGluL2xvZy5jOjE0OTAKIG1zZ2lkICJGYWlsZWQgdG8gY3JlYXRlIG91dHB1dCBmaWxlcyIKIG1zZ3N0ciAi5peg5rOV5Yib5bu66L6T5Ye65paH5Lu2IgogCi0jOiBidWlsdGluL2xvZy5jOjE0ODQKKyM6IGJ1aWx0aW4vbG9nLmM6MTUzOQogbXNnaWQgImdpdCBjaGVycnkgWy12XSBbPHVwc3RyZWFtPiBbPGhlYWQ+IFs8bGltaXQ+XV1dIgogbXNnc3RyICJnaXQgY2hlcnJ5IFstdl0gWzzkuIrmuLg+IFs85aS0PiBbPOmZkOWItj5dXV0iCiAKLSM6IGJ1aWx0aW4vbG9nLmM6MTUzOQorIzogYnVpbHRpbi9sb2cuYzoxNTk0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDb3VsZCBub3QgZmluZCBhIHRyYWNrZWQgcmVtb3RlIGJyYW5jaCwgcGxlYXNlIHNwZWNpZnkgPHVwc3RyZWFtPiBtYW51YWxseS5cbiIKIG1zZ3N0ciAi5LiN6IO95om+5Yiw6Lef6Liq55qE6L+c56iL5YiG5pSv77yM6K+35omL5bel5oyH5a6aIDx1cHN0cmVhbT7jgIJcbiIKIAotIzogYnVpbHRpbi9sb2cuYzoxNTUyIGJ1aWx0aW4vbG9nLmM6MTU1NCBidWlsdGluL2xvZy5jOjE1NjYKKyM6IGJ1aWx0aW4vbG9nLmM6MTYwNyBidWlsdGluL2xvZy5jOjE2MDkgYnVpbHRpbi9sb2cuYzoxNjIxCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gY29tbWl0ICVzIgogbXNnc3RyICLmnKrnn6Xmj5DkuqQgJXMiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0MDIKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0MDgKIG1zZ2lkICJnaXQgbHMtZmlsZXMgW29wdGlvbnNdIFs8ZmlsZT4uLi5dIgogbXNnc3RyICJnaXQgbHMtZmlsZXMgW+mAiemhuV0gWzzmlofku7Y+Li4uXSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ1OQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQogbXNnaWQgImlkZW50aWZ5IHRoZSBmaWxlIHN0YXR1cyB3aXRoIHRhZ3MiCiBtc2dzdHIgIueUqOagh+etvuagh+ivhuaWh+S7tueahOeKtuaAgSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NwogbXNnaWQgInVzZSBsb3dlcmNhc2UgbGV0dGVycyBmb3IgJ2Fzc3VtZSB1bmNoYW5nZWQnIGZpbGVzIgogbXNnc3RyICLkvb/nlKjlsI/lhpnlrZfmr43ooajnpLogJ+WBh+iuvuacquaUueWPmOeahCcg5paH5Lu2IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDYzCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDY5CiBtc2dpZCAic2hvdyBjYWNoZWQgZmlsZXMgaW4gdGhlIG91dHB1dCAoZGVmYXVsdCkiCiBtc2dzdHIgIuaYvuekuue8k+WtmOeahOaWh+S7tu+8iOm7mOiupO+8iSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2NQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3MQogbXNnaWQgInNob3cgZGVsZXRlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICLmmL7npLrlt7LliKDpmaTnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NjcKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzMKIG1zZ2lkICJzaG93IG1vZGlmaWVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgIuaYvuekuuW3suS/ruaUueeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ2OQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NQogbXNnaWQgInNob3cgb3RoZXIgZmlsZXMgaW4gdGhlIG91dHB1dCIKIG1zZ3N0ciAi5pi+56S65YW25a6D5paH5Lu2IgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDcxCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDc3CiBtc2dpZCAic2hvdyBpZ25vcmVkIGZpbGVzIGluIHRoZSBvdXRwdXQiCiBtc2dzdHIgIuaYvuekuuW/veeVpeeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ3NAorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ4MAogbXNnaWQgInNob3cgc3RhZ2VkIGNvbnRlbnRzJyBvYmplY3QgbmFtZSBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICLmmL7npLrmmoLlrZjljLrlhoXlrrnnmoTlr7nosaHlkI3np7AiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzYKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODIKIG1zZ2lkICJzaG93IGZpbGVzIG9uIHRoZSBmaWxlc3lzdGVtIHRoYXQgbmVlZCB0byBiZSByZW1vdmVkIgogbXNnc3RyICLmmL7npLrmlofku7bns7vnu5/pnIDopoHliKDpmaTnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0NzgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODQKIG1zZ2lkICJzaG93ICdvdGhlcicgZGlyZWN0b3JpZXMnIG5hbWUgb25seSIKIG1zZ3N0ciAi5Y+q5pi+56S64oCc5YW25LuW4oCd55uu5b2V55qE5ZCN56ewIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDgxCisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDg3CiBtc2dpZCAiZG9uJ3Qgc2hvdyBlbXB0eSBkaXJlY3RvcmllcyIKIG1zZ3N0ciAi5LiN5pi+56S656m655uu5b2VIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDg0CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NDkwCiBtc2dpZCAic2hvdyB1bm1lcmdlZCBmaWxlcyBpbiB0aGUgb3V0cHV0IgogbXNnc3RyICLmmL7npLrmnKrlkIjlubbnmoTmlofku7YiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODYKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTIKIG1zZ2lkICJzaG93IHJlc29sdmUtdW5kbyBpbmZvcm1hdGlvbiIKIG1zZ3N0ciAi5pi+56S6IHJlc29sdmUtdW5kbyDkv6Hmga8iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0ODgKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTQKIG1zZ2lkICJza2lwIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iCiBtc2dzdHIgIuWMuemFjeaOkumZpOaWh+S7tueahOaooeW8jyIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5MQorIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NwogbXNnaWQgImV4Y2x1ZGUgcGF0dGVybnMgYXJlIHJlYWQgZnJvbSA8ZmlsZT4iCiBtc2dzdHIgIuS7jiA85paH5Lu2PiDkuK3or7vlj5bmjpLpmaTmqKHlvI8iCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo0OTQKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDAKIG1zZ2lkICJyZWFkIGFkZGl0aW9uYWwgcGVyLWRpcmVjdG9yeSBleGNsdWRlIHBhdHRlcm5zIGluIDxmaWxlPiIKIG1zZ3N0ciAi5LuOIDzmlofku7Y+IOivu+WPlumineWklueahOavj+S4quebruW9leeahOaOkumZpOaooeW8jyIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjQ5NgorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMgogbXNnaWQgImFkZCB0aGUgc3RhbmRhcmQgZ2l0IGV4Y2x1c2lvbnMiCiBtc2dzdHIgIua3u+WKoOagh+WHhueahCBnaXQg5o6S6ZmkIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NDk5CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTA1CiBtc2dpZCAibWFrZSB0aGUgb3V0cHV0IHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHRvcCBkaXJlY3RvcnkiCiBtc2dzdHIgIuaYvuekuuebuOWvueS6jumhtue6p+ebruW9leeahOaWh+S7tuWQjSIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMgorIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOAogbXNnaWQgImlmIGFueSA8ZmlsZT4gaXMgbm90IGluIHRoZSBpbmRleCwgdHJlYXQgdGhpcyBhcyBhbiBlcnJvciIKIG1zZ3N0ciAi5aaC5p6c5Lu75L2VIDzmlofku7Y+IOmDveS4jeWcqOe0ouW8leWMuu+8jOinhuS4uumUmeivryIKIAotIzogYnVpbHRpbi9scy1maWxlcy5jOjUwMworIzogYnVpbHRpbi9scy1maWxlcy5jOjUwOQogbXNnaWQgInRyZWUtaXNoIgogbXNnc3RyICLmoJHmiJbmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MDQKKyM6IGJ1aWx0aW4vbHMtZmlsZXMuYzo1MTAKIG1zZ2lkICJwcmV0ZW5kIHRoYXQgcGF0aHMgcmVtb3ZlZCBzaW5jZSA8dHJlZS1pc2g+IGFyZSBzdGlsbCBwcmVzZW50IgogbXNnc3RyICLlgYfoo4Xoh6rku44gPOagkeaIluaPkOS6pD4g5LmL5ZCO5Yig6Zmk55qE6Lev5b6E5LuN54S25a2Y5ZyoIgogCi0jOiBidWlsdGluL2xzLWZpbGVzLmM6NTA2CisjOiBidWlsdGluL2xzLWZpbGVzLmM6NTEyCiBtc2dpZCAic2hvdyBkZWJ1Z2dpbmcgZGF0YSIKIG1zZ3N0ciAi5pi+56S66LCD6K+V5pWw5o2uIgogCkBAIC02MTQ3LDE2OCArNjM3OSwxNjggQEAKIG1zZ2lkICJnaXQgbWVyZ2UgLS1hYm9ydCIKIG1zZ3N0ciAiZ2l0IG1lcmdlIC0tYWJvcnQiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5MAorIzogYnVpbHRpbi9tZXJnZS5jOjk4CiBtc2dpZCAic3dpdGNoIGBtJyByZXF1aXJlcyBhIHZhbHVlIgogbXNnc3RyICLlvIDlhbMgYG0nIOmcgOimgeS4gOS4quWAvCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNworIzogYnVpbHRpbi9tZXJnZS5jOjEzNQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgZmluZCBtZXJnZSBzdHJhdGVneSAnJXMnLlxuIgogbXNnc3RyICLkuI3og73mib7liLDlkIjlubbnrZbnlaUgJyVzJ+OAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTI4CisjOiBidWlsdGluL21lcmdlLmM6MTM2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF2YWlsYWJsZSBzdHJhdGVnaWVzIGFyZToiCiBtc2dzdHIgIuWPr+eUqOeahOetlueVpeacie+8miIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEzMworIzogYnVpbHRpbi9tZXJnZS5jOjE0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJBdmFpbGFibGUgY3VzdG9tIHN0cmF0ZWdpZXMgYXJlOiIKIG1zZ3N0ciAi5Y+v55So55qE6Ieq5a6a5LmJ562W55Wl5pyJ77yaIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTgzCisjOiBidWlsdGluL21lcmdlLmM6MTk4CiBtc2dpZCAiZG8gbm90IHNob3cgYSBkaWZmc3RhdCBhdCB0aGUgZW5kIG9mIHRoZSBtZXJnZSIKIG1zZ3N0ciAi5Zyo5ZCI5bm255qE5pyA5ZCO5LiN5pi+56S65beu5byC57uf6K6hIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTg2CisjOiBidWlsdGluL21lcmdlLmM6MjAxCiBtc2dpZCAic2hvdyBhIGRpZmZzdGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1lcmdlIgogbXNnc3RyICLlnKjlkIjlubbnmoTmnIDlkI7mmL7npLrlt67lvILnu5/orqEiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxODcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDIKIG1zZ2lkICIoc3lub255bSB0byAtLXN0YXQpIgogbXNnc3RyICLvvIjlkowgLS1zdGF0IOWQjOS5ie+8iSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE4OQorIzogYnVpbHRpbi9tZXJnZS5jOjIwNAogbXNnaWQgImFkZCAoYXQgbW9zdCA8bj4pIGVudHJpZXMgZnJvbSBzaG9ydGxvZyB0byBtZXJnZSBjb21taXQgbWVzc2FnZSIKIG1zZ3N0ciAi5Zyo5ZCI5bm25o+Q5Lqk5L+h5oGv5Lit5re75Yqg77yI5pyA5aSaIDxuPiDmnaHvvInnsr7nroDmj5DkuqTorrDlvZUiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKIG1zZ2lkICJjcmVhdGUgYSBzaW5nbGUgY29tbWl0IGluc3RlYWQgb2YgZG9pbmcgYSBtZXJnZSIKIG1zZ3N0ciAi5Yib5bu65LiA5Liq5Y2V54us55qE5o+Q5Lqk6ICM5LiN5piv5YGa5LiA5qyh5ZCI5bm2IgogCi0jOiBidWlsdGluL21lcmdlLmM6MTk0CisjOiBidWlsdGluL21lcmdlLmM6MjA5CiBtc2dpZCAicGVyZm9ybSBhIGNvbW1pdCBpZiB0aGUgbWVyZ2Ugc3VjY2VlZHMgKGRlZmF1bHQpIgogbXNnc3RyICLlpoLmnpzlkIjlubbmiJDlip/vvIzmiafooYzkuIDmrKHmj5DkuqTvvIjpu5jorqTvvIkiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxOTYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMTEKIG1zZ2lkICJlZGl0IG1lc3NhZ2UgYmVmb3JlIGNvbW1pdHRpbmciCiBtc2dzdHIgIuWcqOaPkOS6pOWJjee8lui+keaPkOS6pOivtOaYjiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE5OAorIzogYnVpbHRpbi9tZXJnZS5jOjIxMgogbXNnaWQgImFsbG93IGZhc3QtZm9yd2FyZCAoZGVmYXVsdCkiCiBtc2dzdHIgIuWFgeiuuOW/q+i/m++8iOm7mOiupO+8iSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwMAorIzogYnVpbHRpbi9tZXJnZS5jOjIxNAogbXNnaWQgImFib3J0IGlmIGZhc3QtZm9yd2FyZCBpcyBub3QgcG9zc2libGUiCiBtc2dzdHIgIuWmguaenOS4jeiDveW/q+i/m+WwseaUvuW8g+WQiOW5tiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwMworIzogYnVpbHRpbi9tZXJnZS5jOjIxOAogbXNnaWQgIlZlcmlmeSB0aGF0IHRoZSBuYW1lZCBjb21taXQgaGFzIGEgdmFsaWQgR1BHIHNpZ25hdHVyZSIKIG1zZ3N0ciAi6aqM6K+B5oyH5a6a55qE5o+Q5Lqk5piv5ZCm5YyF5ZCr5LiA5Liq5pyJ5pWI55qEIEdQRyDnrb7lkI0iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDQgYnVpbHRpbi9ub3Rlcy5jOjg2NiBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9tZXJnZS5jOjIxOSBidWlsdGluL25vdGVzLmM6NzM4IGJ1aWx0aW4vcmV2ZXJ0LmM6MTE0CiBtc2dpZCAic3RyYXRlZ3kiCiBtc2dzdHIgIuetlueVpSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIwNQorIzogYnVpbHRpbi9tZXJnZS5jOjIyMAogbXNnaWQgIm1lcmdlIHN0cmF0ZWd5IHRvIHVzZSIKIG1zZ3N0ciAi6KaB5L2/55So55qE5ZCI5bm2562W55WlIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjA2CisjOiBidWlsdGluL21lcmdlLmM6MjIxCiBtc2dpZCAib3B0aW9uPXZhbHVlIgogbXNnc3RyICJvcHRpb249dmFsdWUiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMjIKIG1zZ2lkICJvcHRpb24gZm9yIHNlbGVjdGVkIG1lcmdlIHN0cmF0ZWd5IgogbXNnc3RyICLmiYDpgInnmoTlkIjlubbnrZbnlaXnmoTpgInpobkiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyMDkKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyMjQKIG1zZ2lkICJtZXJnZSBjb21taXQgbWVzc2FnZSAoZm9yIGEgbm9uLWZhc3QtZm9yd2FyZCBtZXJnZSkiCiBtc2dzdHIgIuWQiOW5tueahOaPkOS6pOivtOaYju+8iOmSiOWvuemdnuW/q+i/m+W8j+WQiOW5tu+8iSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjIxMworIzogYnVpbHRpbi9tZXJnZS5jOjIyOAogbXNnaWQgImFib3J0IHRoZSBjdXJyZW50IGluLXByb2dyZXNzIG1lcmdlIgogbXNnc3RyICLmlL7lvIPlvZPliY3mraPlnKjov5vooYznmoTlkIjlubYiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNDIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTcKIG1zZ2lkICJjb3VsZCBub3QgcnVuIHN0YXNoLiIKIG1zZ3N0ciAi5LiN6IO96L+b6KGM6L+b5bqm5L+d5a2Y44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MjQ3CisjOiBidWlsdGluL21lcmdlLmM6MjYyCiBtc2dpZCAic3Rhc2ggZmFpbGVkIgogbXNnc3RyICLov5vluqbkv53lrZjlpLHotKUiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoyNjcKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IGEgdmFsaWQgb2JqZWN0OiAlcyIKIG1zZ3N0ciAi5LiN5piv5LiA5Liq5pyJ5pWI5a+56LGh77yaJXMiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoyNzEgYnVpbHRpbi9tZXJnZS5jOjI4OAorIzogYnVpbHRpbi9tZXJnZS5jOjI4NiBidWlsdGluL21lcmdlLmM6MzAzCiBtc2dpZCAicmVhZC10cmVlIGZhaWxlZCIKIG1zZ3N0ciAi6K+75Y+W5qCR5aSx6LSlIgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGJ1aWx0aW4vbWVyZ2UuYzozMTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzozMzMKIG1zZ2lkICIgKG5vdGhpbmcgdG8gc3F1YXNoKSIKIG1zZ3N0ciAiIO+8iOaXoOWPr+WOi+e8qe+8iSIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjMzMQorIzogYnVpbHRpbi9tZXJnZS5jOjM0NgogIywgYy1mb3JtYXQKIG1zZ2lkICJTcXVhc2ggY29tbWl0IC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIuWOi+e8qeaPkOS6pCAtLSDmnKrmm7TmlrAgSEVBRFxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MzYzCisjOiBidWlsdGluL21lcmdlLmM6Mzc4CiBtc2dpZCAiV3JpdGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICLlhpnlhaUgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM2NQorIzogYnVpbHRpbi9tZXJnZS5jOjM4MAogbXNnaWQgIkZpbmlzaGluZyBTUVVBU0hfTVNHIgogbXNnc3RyICLlrozmiJAgU1FVQVNIX01TRyIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjM4OAorIzogYnVpbHRpbi9tZXJnZS5jOjQwMwogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBtZXNzYWdlIC0tIG5vdCB1cGRhdGluZyBIRUFEXG4iCiBtc2dzdHIgIuaXoOWQiOW5tuS/oeaBryAtLSDmnKrmm7TmlrAgSEVBRFxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6NDM4CisjOiBidWlsdGluL21lcmdlLmM6NDUzCiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgZG9lcyBub3QgcG9pbnQgdG8gYSBjb21taXQiCiBtc2dzdHIgIiclcycg5rKh5pyJ5oyH5ZCR5LiA5Liq5o+Q5LqkIgogCi0jOiBidWlsdGluL21lcmdlLmM6NTUwCisjOiBidWlsdGluL21lcmdlLmM6NTY1CiAjLCBjLWZvcm1hdAogbXNnaWQgIkJhZCBicmFuY2guJXMubWVyZ2VvcHRpb25zIHN0cmluZzogJXMiCiBtc2dzdHIgIuWdj+eahCBicmFuY2guJXMubWVyZ2VvcHRpb25zIOWtl+espuS4su+8miVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjQzCisjOiBidWlsdGluL21lcmdlLmM6NjU3CiBtc2dpZCAiZ2l0IHdyaXRlLXRyZWUgZmFpbGVkIHRvIHdyaXRlIGEgdHJlZSIKIG1zZ3N0ciAiZ2l0IHdyaXRlLXRyZWUg5peg5rOV5YaZ5YWl5LiA5qCR5a+56LGhIgogCi0jOiBidWlsdGluL21lcmdlLmM6NjcxCisjOiBidWlsdGluL21lcmdlLmM6Njg1CiBtc2dpZCAiTm90IGhhbmRsaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gdHdvIGhlYWRzIG1lcmdlLiIKIG1zZ3N0ciAi5LiN6IO95aSE55CG5Lik5Liq5aS05ZCI5bm25LmL5aSW55qE5Lu75L2V5pON5L2c44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6Njg1CisjOiBidWlsdGluL21lcmdlLmM6Njk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlVua25vd24gb3B0aW9uIGZvciBtZXJnZS1yZWN1cnNpdmU6IC1YJXMiCiBtc2dzdHIgIm1lcmdlLXJlY3Vyc2l2ZSDnmoTmnKrnn6XpgInpobnvvJotWCVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6Njk5CisjOiBidWlsdGluL21lcmdlLmM6NzEzCiAjLCBjLWZvcm1hdAogbXNnaWQgInVuYWJsZSB0byB3cml0ZSAlcyIKIG1zZ3N0ciAi5LiN6IO95YaZICVzIgogCi0jOiBidWlsdGluL21lcmdlLmM6Nzg4CisjOiBidWlsdGluL21lcmdlLmM6ODAyCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIGZyb20gJyVzJyIKIG1zZ3N0ciAi5LiN6IO95LuOICclcycg6K+75Y+WIgogCi0jOiBidWlsdGluL21lcmdlLmM6Nzk3CisjOiBidWlsdGluL21lcmdlLmM6ODExCiAjLCBjLWZvcm1hdAogbXNnaWQgIk5vdCBjb21taXR0aW5nIG1lcmdlOyB1c2UgJ2dpdCBjb21taXQnIHRvIGNvbXBsZXRlIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAi5pyq5o+Q5Lqk5ZCI5bm277yM5L2/55SoICdnaXQgY29tbWl0JyDlrozmiJDmraTmrKHlkIjlubbjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjgwMworIzogYnVpbHRpbi9tZXJnZS5jOjgxNwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiUGxlYXNlIGVudGVyIGEgY29tbWl0IG1lc3NhZ2UgdG8gZXhwbGFpbiB3aHkgdGhpcyBtZXJnZSBpcyBuZWNlc3NhcnksXG4iCkBAIC02MzIyLDUyICs2NTU0LDQ3IEBACiAiXG4iCiAi5LulICclYycg5byA5aS055qE6KGM5bCG6KKr5b+955Wl77yM6ICM5LiU56m65o+Q5Lqk6K+05piO5bCG5Lya57uI5q2i5o+Q5Lqk44CCXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo4MjcKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo4NDEKIG1zZ2lkICJFbXB0eSBjb21taXQgbWVzc2FnZS4iCiBtc2dzdHIgIuepuuaPkOS6pOS/oeaBr+OAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjgzOQorIzogYnVpbHRpbi9tZXJnZS5jOjg1MwogIywgYy1mb3JtYXQKIG1zZ2lkICJXb25kZXJmdWwuXG4iCiBtc2dzdHIgIuWkquajkuS6huOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTA0CisjOiBidWlsdGluL21lcmdlLmM6OTE4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSBmYWlsZWQ7IGZpeCBjb25mbGljdHMgYW5kIHRoZW4gY29tbWl0IHRoZSByZXN1bHQuXG4iCiBtc2dzdHIgIuiHquWKqOWQiOW5tuWksei0pe+8jOS/ruato+WGsueqgeeEtuWQjuaPkOS6pOS/ruato+eahOe7k+aenOOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTIwCisjOiBidWlsdGluL21lcmdlLmM6OTM0CiAjLCBjLWZvcm1hdAogbXNnaWQgIiclcycgaXMgbm90IGEgY29tbWl0IgogbXNnc3RyICInJXMnIOS4jeaYr+S4gOS4quaPkOS6pCIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk2MQorIzogYnVpbHRpbi9tZXJnZS5jOjk3NQogbXNnaWQgIk5vIGN1cnJlbnQgYnJhbmNoLiIKIG1zZ3N0ciAi5rKh5pyJ5b2T5YmN5YiG5pSv44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6OTYzCisjOiBidWlsdGluL21lcmdlLmM6OTc3CiBtc2dpZCAiTm8gcmVtb3RlIGZvciB0aGUgY3VycmVudCBicmFuY2guIgogbXNnc3RyICLlvZPliY3liIbmlK/msqHmnInlr7nlupTnmoTov5znqIvniYjmnKzlupPjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzo5NjUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzo5NzkKIG1zZ2lkICJObyBkZWZhdWx0IHVwc3RyZWFtIGRlZmluZWQgZm9yIHRoZSBjdXJyZW50IGJyYW5jaC4iCiBtc2dzdHIgIuW9k+WJjeWIhuaUr+ayoeacieWumuS5iem7mOiupOeahOS4iua4uOWIhuaUr+OAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjk3MAorIzogYnVpbHRpbi9tZXJnZS5jOjk4NAogIywgYy1mb3JtYXQKLW1zZ2lkICJObyByZW1vdGUgdHJhY2tpbmcgYnJhbmNoIGZvciAlcyBmcm9tICVzIgotbXNnc3RyICIlcyDmsqHmnInmnaXoh6ogJXMg55qE6L+c56iL6Lef6Liq5YiG5pSvIgorbXNnaWQgIk5vIHJlbW90ZS10cmFja2luZyBicmFuY2ggZm9yICVzIGZyb20gJXMiCittc2dzdHIgIuWvueS6jiAlcyDmsqHmnInmnaXoh6ogJXMg55qE6L+c56iL6Lef6Liq5YiG5pSvIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTA1NyBidWlsdGluL21lcmdlLmM6MTIxNAotIywgYy1mb3JtYXQKLW1zZ2lkICIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIgotbXNnc3RyICIlcyAtIOS4jeiDveiiq+WQiOW5tiIKLQotIzogYnVpbHRpbi9tZXJnZS5jOjExMjUKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQwCiBtc2dpZCAiVGhlcmUgaXMgbm8gbWVyZ2UgdG8gYWJvcnQgKE1FUkdFX0hFQUQgbWlzc2luZykuIgogbXNnc3RyICLmsqHmnInopoHnu4jmraLnmoTlkIjlubbvvIhNRVJHRV9IRUFEIOS4ouWkse+8ieOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjExNDEgZ2l0LXB1bGwuc2g6MzEKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTU2IGdpdC1wdWxsLnNoOjMxCiBtc2dpZCAiIgogIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLlxuIgogIlBsZWFzZSwgY29tbWl0IHlvdXIgY2hhbmdlcyBiZWZvcmUgeW91IGNhbiBtZXJnZS4iCkBAIC02Mzc1LDExICs2NjAyLDExIEBACiAi5oKo5bCa5pyq57uT5p2f5oKo55qE5ZCI5bm277yI5a2Y5ZyoIE1FUkdFX0hFQUTvvInjgIJcbiIKICLor7flnKjlkIjlubbliY3lhYjmj5DkuqTmgqjnmoTkv67mlLnjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ0IGdpdC1wdWxsLnNoOjM0CisjOiBidWlsdGluL21lcmdlLmM6MTE1OSBnaXQtcHVsbC5zaDozNAogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBtZXJnZSAoTUVSR0VfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAi5oKo5bCa5pyq57uT5p2f5oKo55qE5ZCI5bm277yI5a2Y5ZyoIE1FUkdFX0hFQUTvvInjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTQ4CisjOiBidWlsdGluL21lcmdlLmM6MTE2MwogbXNnaWQgIiIKICJZb3UgaGF2ZSBub3QgY29uY2x1ZGVkIHlvdXIgY2hlcnJ5LXBpY2sgKENIRVJSWV9QSUNLX0hFQUQgZXhpc3RzKS5cbiIKICJQbGVhc2UsIGNvbW1pdCB5b3VyIGNoYW5nZXMgYmVmb3JlIHlvdSBjYW4gbWVyZ2UuIgpAQCAtNjM4NywxMDAgKzY2MTQsMTAxIEBACiAi5oKo5bCa5pyq57uT5p2f5oKo55qE5ouj6YCJ77yI5a2Y5ZyoIENIRVJSWV9QSUNLX0hFQUTvvInjgIJcbiIKICLor7flnKjlkIjlubbliY3lhYjmj5DkuqTmgqjnmoTkv67mlLnjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTUxCisjOiBidWlsdGluL21lcmdlLmM6MTE2NgogbXNnaWQgIllvdSBoYXZlIG5vdCBjb25jbHVkZWQgeW91ciBjaGVycnktcGljayAoQ0hFUlJZX1BJQ0tfSEVBRCBleGlzdHMpLiIKIG1zZ3N0ciAi5oKo5bCa5pyq57uT5p2f5oKo55qE5ouj6YCJ77yI5a2Y5ZyoIENIRVJSWV9QSUNLX0hFQUTvvInjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTYwCisjOiBidWlsdGluL21lcmdlLmM6MTE3NQogbXNnaWQgIllvdSBjYW5ub3QgY29tYmluZSAtLXNxdWFzaCB3aXRoIC0tbm8tZmYuIgogbXNnc3RyICLmgqjkuI3og73lsIYgLS1zcXVhc2gg5LiOIC0tbm8tZmYg5ZCM5pe25L2/55So44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTE2NQotbXNnaWQgIllvdSBjYW5ub3QgY29tYmluZSAtLW5vLWZmIHdpdGggLS1mZi1vbmx5LiIKLW1zZ3N0ciAi5oKo5LiN6IO95bCGIC0tbm8tZmYg5LiOIC0tZmYtb25seSDlkIzml7bkvb/nlKjjgIIiCi0KLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMTcyCisjOiBidWlsdGluL21lcmdlLmM6MTE4NAogbXNnaWQgIk5vIGNvbW1pdCBzcGVjaWZpZWQgYW5kIG1lcmdlLmRlZmF1bHRUb1Vwc3RyZWFtIG5vdCBzZXQuIgogbXNnc3RyICLmnKrmjIflrprmj5DkuqTlubbkuJQgbWVyZ2UuZGVmYXVsdFRvVXBzdHJlYW0g5pyq6K6+572u44CCIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTIwNAorIzogYnVpbHRpbi9tZXJnZS5jOjEyMTYKIG1zZ2lkICJDYW4gbWVyZ2Ugb25seSBleGFjdGx5IG9uZSBjb21taXQgaW50byBlbXB0eSBoZWFkIgogbXNnc3RyICLlj6rog73lsIbkuIDkuKrmj5DkuqTlkIjlubbliLDnqbrliIbmlK/kuIoiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA3CisjOiBidWlsdGluL21lcmdlLmM6MTIxOQogbXNnaWQgIlNxdWFzaCBjb21taXQgaW50byBlbXB0eSBoZWFkIG5vdCBzdXBwb3J0ZWQgeWV0IgogbXNnc3RyICLlsJrkuI3mlK/mjIHliLDnqbrliIbmlK/nmoTljovnvKnmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjA5CisjOiBidWlsdGluL21lcmdlLmM6MTIyMQogbXNnaWQgIk5vbi1mYXN0LWZvcndhcmQgY29tbWl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgaW50byBhbiBlbXB0eSBoZWFkIgogbXNnc3RyICLliLDnqbrliIbmlK/nmoTpnZ7lv6vov5vlvI/mj5DkuqTmsqHmnInmhI/kuYkiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjY1CisjOiBidWlsdGluL21lcmdlLmM6MTIyNgorIywgYy1mb3JtYXQKK21zZ2lkICIlcyAtIG5vdCBzb21ldGhpbmcgd2UgY2FuIG1lcmdlIgorbXNnc3RyICIlcyAtIOS4jeiDveiiq+WQiOW5tiIKKworIzogYnVpbHRpbi9tZXJnZS5jOjEyNzcKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ29tbWl0ICVzIGhhcyBhbiB1bnRydXN0ZWQgR1BHIHNpZ25hdHVyZSwgYWxsZWdlZGx5IGJ5ICVzLiIKIG1zZ3N0ciAi5o+Q5LqkICVzIOacieS4gOS4qumdnuWPr+S/oeeahOWjsOensOadpeiHqiAlcyDnmoQgR1BHIOetvuWQjeOAgiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEyNjgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjgwCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvbW1pdCAlcyBoYXMgYSBiYWQgR1BHIHNpZ25hdHVyZSBhbGxlZ2VkbHkgYnkgJXMuIgogbXNnc3RyICLmj5DkuqQgJXMg5pyJ5LiA5Liq6ZSZ6K+v55qE5aOw56ew5p2l6IeqICVzIOeahCBHUEcg562+5ZCN44CCIgogCiAjLiAnTicKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjcxCisjOiBidWlsdGluL21lcmdlLmM6MTI4MwogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgZG9lcyBub3QgaGF2ZSBhIEdQRyBzaWduYXR1cmUuIgogbXNnc3RyICLmj5DkuqQgJXMg5rKh5pyJ5LiA5LiqIEdQRyDnrb7lkI3jgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMjc0CisjOiBidWlsdGluL21lcmdlLmM6MTI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJDb21taXQgJXMgaGFzIGEgZ29vZCBHUEcgc2lnbmF0dXJlIGJ5ICVzXG4iCiBtc2dzdHIgIuaPkOS6pCAlcyDmnInkuIDkuKrmnaXoh6ogJXMg55qE5aW955qEIEdQRyDnrb7lkI3jgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjEzNTgKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzcwCiAjLCBjLWZvcm1hdAogbXNnaWQgIlVwZGF0aW5nICVzLi4lc1xuIgogbXNnc3RyICLmm7TmlrAgJXMuLiVzXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxMzk3CisjOiBidWlsdGluL21lcmdlLmM6MTQwOQogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgcmVhbGx5IHRyaXZpYWwgaW4taW5kZXggbWVyZ2UuLi5cbiIKIG1zZ3N0ciAi5bCd6K+V6Z2e5bi45bCP55qE57Si5byV5YaF5ZCI5bm2Li4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDA0CisjOiBidWlsdGluL21lcmdlLmM6MTQxNgogIywgYy1mb3JtYXQKIG1zZ2lkICJOb3BlLlxuIgogbXNnc3RyICLml6DjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE0MzYKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDQ4CiBtc2dpZCAiTm90IHBvc3NpYmxlIHRvIGZhc3QtZm9yd2FyZCwgYWJvcnRpbmcuIgogbXNnc3RyICLml6Dms5Xlv6vov5vvvIznu4jmraLjgIIiCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDU5IGJ1aWx0aW4vbWVyZ2UuYzoxNTM4CisjOiBidWlsdGluL21lcmdlLmM6MTQ3MSBidWlsdGluL21lcmdlLmM6MTU1MAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZXdpbmRpbmcgdGhlIHRyZWUgdG8gcHJpc3RpbmUuLi5cbiIKIG1zZ3N0ciAi5bCG5qCR5Zue5rua6Iez5Y6f5aeL54q25oCBLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNDYzCisjOiBidWlsdGluL21lcmdlLmM6MTQ3NQogIywgYy1mb3JtYXQKIG1zZ2lkICJUcnlpbmcgbWVyZ2Ugc3RyYXRlZ3kgJXMuLi5cbiIKIG1zZ3N0ciAi5bCd6K+V5ZCI5bm2562W55WlICVzLi4uXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTI5CisjOiBidWlsdGluL21lcmdlLmM6MTU0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJObyBtZXJnZSBzdHJhdGVneSBoYW5kbGVkIHRoZSBtZXJnZS5cbiIKIG1zZ3N0ciAi5rKh5pyJ5ZCI5bm2562W55Wl5aSE55CG5q2k5ZCI5bm244CCXG4iCiAKLSM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTMxCisjOiBidWlsdGluL21lcmdlLmM6MTU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJNZXJnZSB3aXRoIHN0cmF0ZWd5ICVzIGZhaWxlZC5cbiIKIG1zZ3N0ciAi5L2/55So562W55WlICVzIOWQiOW5tuWksei0peOAglxuIgogCi0jOiBidWlsdGluL21lcmdlLmM6MTU0MAorIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiVXNpbmcgdGhlICVzIHRvIHByZXBhcmUgcmVzb2x2aW5nIGJ5IGhhbmQuXG4iCiBtc2dzdHIgIuS9v+eUqCAlcyDku6Xlh4blpIfmiYvlt6Xop6PlhrPjgIJcbiIKIAotIzogYnVpbHRpbi9tZXJnZS5jOjE1NTIKKyM6IGJ1aWx0aW4vbWVyZ2UuYzoxNTY0CiAjLCBjLWZvcm1hdAogbXNnaWQgIkF1dG9tYXRpYyBtZXJnZSB3ZW50IHdlbGw7IHN0b3BwZWQgYmVmb3JlIGNvbW1pdHRpbmcgYXMgcmVxdWVzdGVkXG4iCiBtc2dzdHIgIuiHquWKqOWQiOW5tui/m+WxlemhuuWIqe+8jOaMieimgeaxguWcqOaPkOS6pOWJjeWBnOatolxuIgpAQCAtNjY0Niw0NyArNjg3NCw1MSBAQAogbXNnaWQgInJlbmFtaW5nICclcycgZmFpbGVkIgogbXNnc3RyICLph43lkb3lkI0gJyVzJyDlpLHotKUiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzUKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyNTkKIG1zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIDxjb21taXQ+Li4uIgogbXNnc3RyICJnaXQgbmFtZS1yZXYgW+mAiemhuV0gPOaPkOS6pD4uLi4iCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzYKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyNjAKIG1zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tYWxsIgogbXNnc3RyICJnaXQgbmFtZS1yZXYgW+mAiemhuV0gLS1hbGwiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoxNzcKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyNjEKIG1zZ2lkICJnaXQgbmFtZS1yZXYgW29wdGlvbnNdIC0tc3RkaW4iCiBtc2dzdHIgImdpdCBuYW1lLXJldiBb6YCJ6aG5XSAtLXN0ZGluIgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MjI5CisjOiBidWlsdGluL25hbWUtcmV2LmM6MzEzCiBtc2dpZCAicHJpbnQgb25seSBuYW1lcyAobm8gU0hBLTEpIgogbXNnc3RyICLlj6rmiZPljbDlkI3np7DvvIjml6AgU0hBLTHvvIkiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzAKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMTQKIG1zZ2lkICJvbmx5IHVzZSB0YWdzIHRvIG5hbWUgdGhlIGNvbW1pdHMiCiBtc2dzdHIgIuWPquS9v+eUqCB0YWdzIOadpeWRveWQjeaPkOS6pCIKIAotIzogYnVpbHRpbi9uYW1lLXJldi5jOjIzMgorIzogYnVpbHRpbi9uYW1lLXJldi5jOjMxNgogbXNnaWQgIm9ubHkgdXNlIHJlZnMgbWF0Y2hpbmcgPHBhdHRlcm4+IgogbXNnc3RyICLlj6rkvb/nlKjlkowgPOaooeW8jz4g55u45Yy56YWN55qE5byV55SoIgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MjM0CisjOiBidWlsdGluL25hbWUtcmV2LmM6MzE4CiBtc2dpZCAibGlzdCBhbGwgY29tbWl0cyByZWFjaGFibGUgZnJvbSBhbGwgcmVmcyIKIG1zZ3N0ciAi5YiX5Ye65Y+v5Lul5LuO5omA5pyJ5byV55So6K6/6Zeu55qE5o+Q5LqkIgogCi0jOiBidWlsdGluL25hbWUtcmV2LmM6MjM1CisjOiBidWlsdGluL25hbWUtcmV2LmM6MzE5CiBtc2dpZCAicmVhZCBmcm9tIHN0ZGluIgogbXNnc3RyICLku47moIflh4bovpPlhaXor7vlj5YiCiAKLSM6IGJ1aWx0aW4vbmFtZS1yZXYuYzoyMzYKKyM6IGJ1aWx0aW4vbmFtZS1yZXYuYzozMjAKIG1zZ2lkICJhbGxvdyB0byBwcmludCBgdW5kZWZpbmVkYCBuYW1lcyIKIG1zZ3N0ciAi5YWB6K645omT5Y2wIGDmnKrlrprkuYlgIOeahOWQjeensCIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI2CisjOiBidWlsdGluL25hbWUtcmV2LmM6MzI2Cittc2dpZCAiZGVyZWZlcmVuY2UgdGFncyBpbiB0aGUgaW5wdXQgKGludGVybmFsIHVzZSkiCittc2dzdHIgIuWPjeWQkeino+aekOi+k+WFpeS4reeahCB0YWdz77yI5YaF6YOo5L2/55So77yJIgorCisjOiBidWlsdGluL25vdGVzLmM6MjQKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBbbGlzdCBbPG9iamVjdD5dXSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gW2xpc3QgWzzlr7nosaE+XV0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNworIzogYnVpbHRpbi9ub3Rlcy5jOjI1CiBtc2dpZCAiIgogImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFkZCBbLWZdIFstbSA8bXNnPiB8IC1GIDxmaWxlPiB8ICgtYyB8IC1DKSAiCiAiPG9iamVjdD5dIFs8b2JqZWN0Pl0iCkBAIC02Njk0LDExICs2OTI2LDExIEBACiAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gYWRkIFstZl0gWy1tIDzor7TmmI4+IHwgLUYgPOaWh+S7tj4gfCAoLWMgfCAtQykgPOWvuSIKICLosaE+XSBbPOWvueixoT5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNgogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGNvcHkgWy1mXSA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+IgogbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBjb3B5IFstZl0gPOa6kOWvueixoT4gPOebruagh+WvueixoT4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyOQorIzogYnVpbHRpbi9ub3Rlcy5jOjI3CiBtc2dpZCAiIgogImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIGFwcGVuZCBbLW0gPG1zZz4gfCAtRiA8ZmlsZT4gfCAoLWMgfCAtQykgIgogIjxvYmplY3Q+XSBbPG9iamVjdD5dIgpAQCAtNjcwNiwyNTUgKzY5MzgsMjM0IEBACiAiZ2l0IG5vdGVzIFstLXJlZiA85rOo6Kej5byV55SoPl0gYXBwZW5kIFstbSA86K+05piOPiB8IC1GIDzmlofku7Y+IHwgKC1jIHwgLUMpIDzlr7nosaEiCiAiPl0gWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMwCisjOiBidWlsdGluL25vdGVzLmM6MjgKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBlZGl0IFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIGVkaXQgWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMxCisjOiBidWlsdGluL25vdGVzLmM6MjkKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBzaG93IFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIHNob3cgWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMyCisjOiBidWlsdGluL25vdGVzLmM6MzAKIG1zZ2lkICIiCiAiZ2l0IG5vdGVzIFstLXJlZiA8bm90ZXNfcmVmPl0gbWVyZ2UgWy12IHwgLXFdIFstcyA8c3RyYXRlZ3k+IF0gPG5vdGVzX3JlZj4iCiBtc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIG1lcmdlIFstdiB8IC1xXSBbLXMgPOetlueVpT4gXSA85rOo6Kej5byV55SoPiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjMzCisjOiBidWlsdGluL25vdGVzLmM6MzEKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgogbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWy12IHwgLXFdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzQKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMgogbXNnaWQgImdpdCBub3RlcyBtZXJnZSAtLWFib3J0IFstdiB8IC1xXSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWy12IHwgLXFdIgogCi0jOiBidWlsdGluL25vdGVzLmM6MzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMwogbXNnaWQgImdpdCBub3RlcyBbLS1yZWYgPG5vdGVzX3JlZj5dIHJlbW92ZSBbPG9iamVjdD4uLi5dIgogbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSByZW1vdmUgWzzlr7nosaE+Li4uXSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM2CisjOiBidWlsdGluL25vdGVzLmM6MzQKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBwcnVuZSBbLW4gfCAtdl0iCiBtc2dzdHIgImdpdCBub3RlcyBbLS1yZWYgPOazqOino+W8leeUqD5dIHBydW5lIFstbiB8IC12XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjM3CisjOiBidWlsdGluL25vdGVzLmM6MzUKIG1zZ2lkICJnaXQgbm90ZXMgWy0tcmVmIDxub3Rlc19yZWY+XSBnZXQtcmVmIgogbXNnc3RyICJnaXQgbm90ZXMgWy0tcmVmIDzms6jop6PlvJXnlKg+XSBnZXQtcmVmIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MAogbXNnaWQgImdpdCBub3RlcyBbbGlzdCBbPG9iamVjdD5dXSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIFtsaXN0IFs85a+56LGhPl1dIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDcKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NQogbXNnaWQgImdpdCBub3RlcyBhZGQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGFkZCBbPOmAiemhuT5dIFs85a+56LGhPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MgorIzogYnVpbHRpbi9ub3Rlcy5jOjUwCiBtc2dpZCAiZ2l0IG5vdGVzIGNvcHkgWzxvcHRpb25zPl0gPGZyb20tb2JqZWN0PiA8dG8tb2JqZWN0PiIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGNvcHkgWzzpgInpobk+XSA85rqQ5a+56LGhPiA855uu5qCH5a+56LGhPiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUzCisjOiBidWlsdGluL25vdGVzLmM6NTEKIG1zZ2lkICJnaXQgbm90ZXMgY29weSAtLXN0ZGluIFs8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+XS4uLiIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGNvcHkgLS1zdGRpbiBbPOa6kOWvueixoT4gPOebruagh+WvueixoT5dLi4uIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTgKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1NgogbXNnaWQgImdpdCBub3RlcyBhcHBlbmQgWzxvcHRpb25zPl0gWzxvYmplY3Q+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGFwcGVuZCBbPOmAiemhuT5dIFs85a+56LGhPl0iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MworIzogYnVpbHRpbi9ub3Rlcy5jOjYxCiBtc2dpZCAiZ2l0IG5vdGVzIGVkaXQgWzxvYmplY3Q+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIGVkaXQgWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjY4CisjOiBidWlsdGluL25vdGVzLmM6NjYKIG1zZ2lkICJnaXQgbm90ZXMgc2hvdyBbPG9iamVjdD5dIgogbXNnc3RyICJnaXQgbm90ZXMgc2hvdyBbPOWvueixoT5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3MQogbXNnaWQgImdpdCBub3RlcyBtZXJnZSBbPG9wdGlvbnM+XSA8bm90ZXNfcmVmPiIKIG1zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIFs86YCJ6aG5Pl0gPOazqOino+W8leeUqD4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo3NAorIzogYnVpbHRpbi9ub3Rlcy5jOjcyCiBtc2dpZCAiZ2l0IG5vdGVzIG1lcmdlIC0tY29tbWl0IFs8b3B0aW9ucz5dIgogbXNnc3RyICJnaXQgbm90ZXMgbWVyZ2UgLS1jb21taXQgWzzpgInpobk+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjc1CisjOiBidWlsdGluL25vdGVzLmM6NzMKIG1zZ2lkICJnaXQgbm90ZXMgbWVyZ2UgLS1hYm9ydCBbPG9wdGlvbnM+XSIKIG1zZ3N0ciAiZ2l0IG5vdGVzIG1lcmdlIC0tYWJvcnQgWzzpgInpobk+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjgwCisjOiBidWlsdGluL25vdGVzLmM6NzgKIG1zZ2lkICJnaXQgbm90ZXMgcmVtb3ZlIFs8b2JqZWN0Pl0iCiBtc2dzdHIgImdpdCBub3RlcyByZW1vdmUgWzzlr7nosaE+XSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg1CisjOiBidWlsdGluL25vdGVzLmM6ODMKIG1zZ2lkICJnaXQgbm90ZXMgcHJ1bmUgWzxvcHRpb25zPl0iCiBtc2dzdHIgImdpdCBub3RlcyBwcnVuZSBbPOmAiemhuT5dIgogCi0jOiBidWlsdGluL25vdGVzLmM6OTAKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4OAogbXNnaWQgImdpdCBub3RlcyBnZXQtcmVmIgogbXNnc3RyICJnaXQgbm90ZXMgZ2V0LXJlZiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjEzOQorIzogYnVpbHRpbi9ub3Rlcy5jOjEzNwogIywgYy1mb3JtYXQKIG1zZ2lkICJ1bmFibGUgdG8gc3RhcnQgJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Li65a+56LGhICclcycg5byA5aeLICdzaG93JyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE0MworIzogYnVpbHRpbi9ub3Rlcy5jOjE0MQogbXNnaWQgImNvdWxkIG5vdCByZWFkICdzaG93JyBvdXRwdXQiCiBtc2dzdHIgIuS4jeiDveivu+WPliAnc2hvdycg55qE6L6T5Ye6IgogCi0jOiBidWlsdGluL25vdGVzLmM6MTUxCisjOiBidWlsdGluL25vdGVzLmM6MTQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgImZhaWxlZCB0byBmaW5pc2ggJ3Nob3cnIGZvciBvYmplY3QgJyVzJyIKIG1zZ3N0ciAi5peg5rOV5Li65a+56LGhICclcycg5a6M5oiQICdzaG93JyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjE2OSBidWlsdGluL3RhZy5jOjM0MQorIzogYnVpbHRpbi9ub3Rlcy5jOjE2NyBidWlsdGluL3RhZy5jOjM0MQogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3QgY3JlYXRlIGZpbGUgJyVzJyIKIG1zZ3N0ciAi5LiN6IO95Yib5bu65paH5Lu2ICclcyciCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxODgKKyM6IGJ1aWx0aW4vbm90ZXMuYzoxODYKIG1zZ2lkICJQbGVhc2Ugc3VwcGx5IHRoZSBub3RlIGNvbnRlbnRzIHVzaW5nIGVpdGhlciAtbSBvciAtRiBvcHRpb24iCiBtc2dzdHIgIuivt+mAmui/hyAtbSDmiJYgLUYg6YCJ6aG55Li65rOo6Kej5o+Q5L6b5YaF5a65IgogCi0jOiBidWlsdGluL25vdGVzLmM6MjA5IGJ1aWx0aW4vbm90ZXMuYzo5NzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMDcgYnVpbHRpbi9ub3Rlcy5jOjg0NAogIywgYy1mb3JtYXQKIG1zZ2lkICJSZW1vdmluZyBub3RlIGZvciBvYmplY3QgJXNcbiIKIG1zZ3N0ciAi5Yig6Zmk5a+56LGhICVzIOeahOazqOino1xuIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjE0CisjOiBidWlsdGluL25vdGVzLmM6MjEyCiBtc2dpZCAidW5hYmxlIHRvIHdyaXRlIG5vdGUgb2JqZWN0IgogbXNnc3RyICLkuI3og73lhpnms6jop6Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyMTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyMTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiVGhlIG5vdGUgY29udGVudHMgaGFzIGJlZW4gbGVmdCBpbiAlcyIKIG1zZ3N0ciAi5rOo6Kej5YaF5a656KKr55WZ5Zyo5paH5Lu2ICVzIOS4rSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MAorIzogYnVpbHRpbi9ub3Rlcy5jOjI0OCBidWlsdGluL3RhZy5jOjU0MAogIywgYy1mb3JtYXQKIG1zZ2lkICJjYW5ub3QgcmVhZCAnJXMnIgogbXNnc3RyICLkuI3og73or7vlj5YgJyVzJyIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI1MiBidWlsdGluL3RhZy5jOjU0MworIzogYnVpbHRpbi9ub3Rlcy5jOjI1MCBidWlsdGluL3RhZy5jOjU0MwogIywgYy1mb3JtYXQKIG1zZ2lkICJjb3VsZCBub3Qgb3BlbiBvciByZWFkICclcyciCiBtc2dzdHIgIuS4jeiDveaJk+W8gOaIluivu+WPliAnJXMnIgogCi0jOiBidWlsdGluL25vdGVzLmM6MjcxIGJ1aWx0aW4vbm90ZXMuYzo0NDQgYnVpbHRpbi9ub3Rlcy5jOjQ0NgotIzogYnVpbHRpbi9ub3Rlcy5jOjUwNiBidWlsdGluL25vdGVzLmM6NTYwIGJ1aWx0aW4vbm90ZXMuYzo2NDMKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NDggYnVpbHRpbi9ub3Rlcy5jOjcyMyBidWlsdGluL25vdGVzLmM6NzY1Ci0jOiBidWlsdGluL25vdGVzLmM6OTY3IGJ1aWx0aW4vdGFnLmM6NTU2CisjOiBidWlsdGluL25vdGVzLmM6MjY5IGJ1aWx0aW4vbm90ZXMuYzozMTYgYnVpbHRpbi9ub3Rlcy5jOjMxOAorIzogYnVpbHRpbi9ub3Rlcy5jOjM3OCBidWlsdGluL25vdGVzLmM6NDMyIGJ1aWx0aW4vbm90ZXMuYzo1MTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MjAgYnVpbHRpbi9ub3Rlcy5jOjU5NSBidWlsdGluL25vdGVzLmM6NjM3CisjOiBidWlsdGluL25vdGVzLmM6ODM5IGJ1aWx0aW4vdGFnLmM6NTU2CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byByZXNvbHZlICclcycgYXMgYSB2YWxpZCByZWYuIgogbXNnc3RyICLml6Dms5Xop6PmnpAgJyVzJyDkuLrkuIDkuKrmnInmlYjlvJXnlKjjgIIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoyNzQKKyM6IGJ1aWx0aW4vbm90ZXMuYzoyNzIKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlYWQgb2JqZWN0ICclcycuIgogbXNnc3RyICLml6Dms5Xor7vlj5blr7nosaEgJyVzJ+OAgiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjI5OAotbXNnaWQgIkNhbm5vdCBjb21taXQgdW5pbml0aWFsaXplZC91bnJlZmVyZW5jZWQgbm90ZXMgdHJlZSIKLW1zZ3N0ciAi5LiN6IO95o+Q5Lqk5pyq5Yid5aeL5YyWL+acquW8leeUqOeahOazqOino+agkSIKLQotIzogYnVpbHRpbi9ub3Rlcy5jOjMzOQotIywgYy1mb3JtYXQKLW1zZ2lkICJCYWQgbm90ZXMucmV3cml0ZU1vZGUgdmFsdWU6ICclcyciCi1tc2dzdHIgIuWdj+eahCBub3Rlcy5yZXdyaXRlTW9kZSDlgLzvvJonJXMnIgotCi0jOiBidWlsdGluL25vdGVzLmM6MzQ5Ci0jLCBjLWZvcm1hdAotbXNnaWQgIlJlZnVzaW5nIHRvIHJld3JpdGUgbm90ZXMgaW4gJXMgKG91dHNpZGUgb2YgcmVmcy9ub3Rlcy8pIgotbXNnc3RyICLmi5Lnu53lkJEgJXPvvIjlnKggcmVmcy9ub3Rlcy8g5LmL5aSW77yJ5YaZ5YWl5rOo6KejIgotCi0jLiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIGlzIHRoZSBuYW1lIG9mIHRoZQotIy4gZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBzZWNvbmQgJXMgaXMgaXRzIHZhbHVlCi0jOiBidWlsdGluL25vdGVzLmM6Mzc2Ci0jLCBjLWZvcm1hdAotbXNnaWQgIkJhZCAlcyB2YWx1ZTogJyVzJyIKLW1zZ3N0ciAi5Z2P55qEICVzIOWAvO+8miclcyciCi0KLSM6IGJ1aWx0aW4vbm90ZXMuYzo0NDAKKyM6IGJ1aWx0aW4vbm90ZXMuYzozMTIKICMsIGMtZm9ybWF0CiBtc2dpZCAiTWFsZm9ybWVkIGlucHV0IGxpbmU6ICclcycuIgogbXNnc3RyICLpnZ7ms5XnmoTovpPlhaXooYzvvJonJXMn44CCIgogCi0jOiBidWlsdGluL25vdGVzLmM6NDU1CisjOiBidWlsdGluL25vdGVzLmM6MzI3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBjb3B5IG5vdGVzIGZyb20gJyVzJyB0byAnJXMnIgogbXNnc3RyICLml6Dms5Xku44gJyVzJyDliLAgJyVzJyDmi7fotJ3ms6jop6MiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo0OTkgYnVpbHRpbi9ub3Rlcy5jOjU1MyBidWlsdGluL25vdGVzLmM6NjI2Ci0jOiBidWlsdGluL25vdGVzLmM6NjM4IGJ1aWx0aW4vbm90ZXMuYzo3MTEgYnVpbHRpbi9ub3Rlcy5jOjc1OAotIzogYnVpbHRpbi9ub3Rlcy5jOjEwMzIKKyM6IGJ1aWx0aW4vbm90ZXMuYzozNzEgYnVpbHRpbi9ub3Rlcy5jOjQyNSBidWlsdGluL25vdGVzLmM6NDk4CisjOiBidWlsdGluL25vdGVzLmM6NTEwIGJ1aWx0aW4vbm90ZXMuYzo1ODMgYnVpbHRpbi9ub3Rlcy5jOjYzMAorIzogYnVpbHRpbi9ub3Rlcy5jOjkwNAogbXNnaWQgInRvbyBtYW55IHBhcmFtZXRlcnMiCiBtc2dzdHIgIuWPguaVsOWkquWkmiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUxMiBidWlsdGluL25vdGVzLmM6NzcxCisjOiBidWlsdGluL25vdGVzLmM6Mzg0IGJ1aWx0aW4vbm90ZXMuYzo2NDMKICMsIGMtZm9ybWF0CiBtc2dpZCAiTm8gbm90ZSBmb3VuZCBmb3Igb2JqZWN0ICVzLiIKIG1zZ3N0ciAi5pyq5Y+R546w5a+56LGhICVzIOeahOazqOino+OAgiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUzNCBidWlsdGluL25vdGVzLmM6NjkxCisjOiBidWlsdGluL25vdGVzLmM6NDA2IGJ1aWx0aW4vbm90ZXMuYzo1NjMKIG1zZ2lkICJub3RlIGNvbnRlbnRzIGFzIGEgc3RyaW5nIgogbXNnc3RyICLms6jop6PlhoXlrrnkvZzkuLrkuIDkuKrlrZfnrKbkuLIiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1MzcgYnVpbHRpbi9ub3Rlcy5jOjY5NAorIzogYnVpbHRpbi9ub3Rlcy5jOjQwOSBidWlsdGluL25vdGVzLmM6NTY2CiBtc2dpZCAibm90ZSBjb250ZW50cyBpbiBhIGZpbGUiCiBtc2dzdHIgIuazqOino+WGheWuueWIsOS4gOS4quaWh+S7tuS4rSIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjUzOSBidWlsdGluL25vdGVzLmM6NTQyIGJ1aWx0aW4vbm90ZXMuYzo2OTYKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2OTkgYnVpbHRpbi90YWcuYzo0NzQKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0MTEgYnVpbHRpbi9ub3Rlcy5jOjQxNCBidWlsdGluL25vdGVzLmM6NTY4CisjOiBidWlsdGluL25vdGVzLmM6NTcxIGJ1aWx0aW4vdGFnLmM6NDc0CiBtc2dpZCAib2JqZWN0IgogbXNnc3RyICLlr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDAgYnVpbHRpbi9ub3Rlcy5jOjY5NworIzogYnVpbHRpbi9ub3Rlcy5jOjQxMiBidWlsdGluL25vdGVzLmM6NTY5CiBtc2dpZCAicmV1c2UgYW5kIGVkaXQgc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgogbXNnc3RyICLph43nlKjlkoznvJbovpHmjIflrprnmoTms6jop6Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDMgYnVpbHRpbi9ub3Rlcy5jOjcwMAorIzogYnVpbHRpbi9ub3Rlcy5jOjQxNSBidWlsdGluL25vdGVzLmM6NTcyCiBtc2dpZCAicmV1c2Ugc3BlY2lmaWVkIG5vdGUgb2JqZWN0IgogbXNnc3RyICLph43nlKjmjIflrprnmoTms6jop6Plr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo1NDUgYnVpbHRpbi9ub3Rlcy5jOjYxMworIzogYnVpbHRpbi9ub3Rlcy5jOjQxNyBidWlsdGluL25vdGVzLmM6NDg1CiBtc2dpZCAicmVwbGFjZSBleGlzdGluZyBub3RlcyIKIG1zZ3N0ciAi5pu/5o2i5bey5a2Y5Zyo55qE5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTc5CisjOiBidWlsdGluL25vdGVzLmM6NDUxCiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJDYW5ub3QgYWRkIG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgogImV4aXN0aW5nIG5vdGVzIgogbXNnc3RyICLkuI3og73mt7vliqDms6jop6PjgILlj5HnjrDlr7nosaEgJXMg5bey5a2Y5Zyo5rOo6Kej44CC5L2/55SoICctZicg6KaG55uW546w5a2Y5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6NTg0IGJ1aWx0aW4vbm90ZXMuYzo2NjEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0NTYgYnVpbHRpbi9ub3Rlcy5jOjUzMwogIywgYy1mb3JtYXQKIG1zZ2lkICJPdmVyd3JpdGluZyBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzXG4iCiBtc2dzdHIgIuimhuebluWvueixoSAlcyDnjrDlrZjms6jop6NcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjYxNAorIzogYnVpbHRpbi9ub3Rlcy5jOjQ4NgogbXNnaWQgInJlYWQgb2JqZWN0cyBmcm9tIHN0ZGluIgogbXNnc3RyICLku47moIflh4bovpPlhaXor7vlj5blr7nosaEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2MTYKKyM6IGJ1aWx0aW4vbm90ZXMuYzo0ODgKIG1zZ2lkICJsb2FkIHJld3JpdGluZyBjb25maWcgZm9yIDxjb21tYW5kPiAoaW1wbGllcyAtLXN0ZGluKSIKIG1zZ3N0ciAi6YeN5paw5Yqg6L29IDzlkb3ku6Q+IOeahOmFjee9ru+8iOmakOWQqyAtLXN0ZGlu77yJIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjM0CisjOiBidWlsdGluL25vdGVzLmM6NTA2CiBtc2dpZCAidG9vIGZldyBwYXJhbWV0ZXJzIgogbXNnc3RyICLlj4LmlbDlpKrlsJEiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo2NTUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo1MjcKICMsIGMtZm9ybWF0CiBtc2dpZCAiIgogIkNhbm5vdCBjb3B5IG5vdGVzLiBGb3VuZCBleGlzdGluZyBub3RlcyBmb3Igb2JqZWN0ICVzLiBVc2UgJy1mJyB0byBvdmVyd3JpdGUgIgogImV4aXN0aW5nIG5vdGVzIgogbXNnc3RyICLkuI3og73mi7fotJ3ms6jop6PjgILlj5HnjrDlr7nosaEgJXMg5bey5a2Y5Zyo5rOo6Kej44CC5L2/55SoICctZicg6KaG55uW546w5a2Y5rOo6KejIgogCi0jOiBidWlsdGluL25vdGVzLmM6NjY3CisjOiBidWlsdGluL25vdGVzLmM6NTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3Npbmcgbm90ZXMgb24gc291cmNlIG9iamVjdCAlcy4gQ2Fubm90IGNvcHkuIgogbXNnc3RyICLmupDlr7nosaEgJXMg57y65bCR5rOo6Kej44CC5LiN6IO95ou36LSd44CCIgogCi0jOiBidWlsdGluL25vdGVzLmM6NzE2CisjOiBidWlsdGluL25vdGVzLmM6NTg4CiAjLCBjLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgLW0vLUYvLWMvLUMgb3B0aW9ucyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgdGhlICdlZGl0JyBzdWJjb21tYW5kLlxuIgpAQCAtNjk2Myw1OCArNzE3NCw1OCBAQAogIuWtkOWRveS7pCAnZWRpdCcg55qE6YCJ6aG5IC1tLy1GLy1jLy1DIOW3suW8g+eUqOOAglxuIgogIuivt+aNoueUqCAnZ2l0IG5vdGVzIGFkZCAtZiAtbS8tRi8tYy8tQyfjgIJcbiIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjg2MworIzogYnVpbHRpbi9ub3Rlcy5jOjczNQogbXNnaWQgIkdlbmVyYWwgb3B0aW9ucyIKIG1zZ3N0ciAi6YCa55So6YCJ6aG5IgogCi0jOiBidWlsdGluL25vdGVzLmM6ODY1CisjOiBidWlsdGluL25vdGVzLmM6NzM3CiBtc2dpZCAiTWVyZ2Ugb3B0aW9ucyIKIG1zZ3N0ciAi5ZCI5bm26YCJ6aG5IgogCi0jOiBidWlsdGluL25vdGVzLmM6ODY3CisjOiBidWlsdGluL25vdGVzLmM6NzM5CiBtc2dpZCAiIgogInJlc29sdmUgbm90ZXMgY29uZmxpY3RzIHVzaW5nIHRoZSBnaXZlbiBzdHJhdGVneSAobWFudWFsL291cnMvdGhlaXJzL3VuaW9uLyIKICJjYXRfc29ydF91bmlxKSIKIG1zZ3N0ciAi5L2/55So5oyH5a6a55qE562W55Wl6Kej5Yaz5rOo6Kej5Yay56qBIChtYW51YWwvb3Vycy90aGVpcnMvdW5pb24vY2F0X3NvcnRfdW5pcSkiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NjkKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDEKIG1zZ2lkICJDb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgogbXNnc3RyICLmj5DkuqTmnKrlkIjlubbnmoTms6jop6MiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzEKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDMKIG1zZ2lkICJmaW5hbGl6ZSBub3RlcyBtZXJnZSBieSBjb21taXR0aW5nIHVubWVyZ2VkIG5vdGVzIgogbXNnc3RyICLpgJrov4fmj5DkuqTmnKrlkIjlubbnmoTms6jop6PmnaXlrozmiJDms6jop6PlkIjlubYiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzMKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDUKIG1zZ2lkICJBYm9ydGluZyBub3RlcyBtZXJnZSByZXNvbHV0aW9uIgogbXNnc3RyICLkuK3mraLms6jop6PlkIjlubbnmoTmlrnmoYgiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo4NzUKKyM6IGJ1aWx0aW4vbm90ZXMuYzo3NDcKIG1zZ2lkICJhYm9ydCBub3RlcyBtZXJnZSIKIG1zZ3N0ciAi5Lit5q2i5rOo6Kej5ZCI5bm2IgogCi0jOiBidWlsdGluL25vdGVzLmM6OTcwCisjOiBidWlsdGluL25vdGVzLmM6ODQyCiAjLCBjLWZvcm1hdAogbXNnaWQgIk9iamVjdCAlcyBoYXMgbm8gbm90ZVxuIgogbXNnc3RyICLlr7nosaEgJXMg5rKh5pyJ5rOo6KejXG4iCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzo5ODIKKyM6IGJ1aWx0aW4vbm90ZXMuYzo4NTQKIG1zZ2lkICJhdHRlbXB0IHRvIHJlbW92ZSBub24tZXhpc3RlbnQgbm90ZSBpcyBub3QgYW4gZXJyb3IiCiBtc2dzdHIgIuWwneivleWIoOmZpOS4jeWtmOWcqOeahOazqOino+S4jeaYr+S4gOS4qumUmeivryIKIAotIzogYnVpbHRpbi9ub3Rlcy5jOjk4NQorIzogYnVpbHRpbi9ub3Rlcy5jOjg1NwogbXNnaWQgInJlYWQgb2JqZWN0IG5hbWVzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0IgogbXNnc3RyICLku47moIflh4bovpPlhaXor7vlj5blr7nosaHlkI3np7AiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDY2CisjOiBidWlsdGluL25vdGVzLmM6OTM4CiBtc2dpZCAibm90ZXNfcmVmIgogbXNnc3RyICLms6jop6PlvJXnlKgiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMDY3CisjOiBidWlsdGluL25vdGVzLmM6OTM5CiBtc2dpZCAidXNlIG5vdGVzIGZyb20gPG5vdGVzX3JlZj4iCiBtc2dzdHIgIuS7jiA85rOo6Kej5byV55SoPiDkvb/nlKjms6jop6MiCiAKLSM6IGJ1aWx0aW4vbm90ZXMuYzoxMTAyIGJ1aWx0aW4vcmVtb3RlLmM6MTU5OAorIzogYnVpbHRpbi9ub3Rlcy5jOjk3NCBidWlsdGluL3JlbW90ZS5jOjE1OTgKICMsIGMtZm9ybWF0CiBtc2dpZCAiVW5rbm93biBzdWJjb21tYW5kOiAlcyIKIG1zZ3N0ciAi5pyq55+l5a2Q5ZG95Luk77yaJXMiCkBAIC03MjQ4LDcgKzc0NTksNyBAQAogIiAgICBnaXQgcHVzaCAlcyAlc1xuIgogIiVzIgogCi0jOiBidWlsdGluL3B1c2guYzoxMjEKKyM6IGJ1aWx0aW4vcHVzaC5jOjExNwogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBub3QgY3VycmVudGx5IG9uIGEgYnJhbmNoLlxuIgpAQCAtNzI2Miw3ICs3NDczLDcgQEAKICJcbiIKICIgICAgZ2l0IHB1c2ggJXMgSEVBRDo8bmFtZS1vZi1yZW1vdGUtYnJhbmNoPlxuIgogCi0jOiBidWlsdGluL3B1c2guYzoxMjgKKyM6IGJ1aWx0aW4vcHVzaC5jOjEzMQogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGN1cnJlbnQgYnJhbmNoICVzIGhhcyBubyB1cHN0cmVhbSBicmFuY2guXG4iCkBAIC03Mjc1LDEyICs3NDg2LDEyIEBACiAiXG4iCiAiICAgIGdpdCBwdXNoIC0tc2V0LXVwc3RyZWFtICVzICVzXG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjEzNgorIzogYnVpbHRpbi9wdXNoLmM6MTM5CiAjLCBjLWZvcm1hdAogbXNnaWQgIlRoZSBjdXJyZW50IGJyYW5jaCAlcyBoYXMgbXVsdGlwbGUgdXBzdHJlYW0gYnJhbmNoZXMsIHJlZnVzaW5nIHRvIHB1c2guIgogbXNnc3RyICLlvZPliY3liIbmlK8gJXMg5pyJ5aSa5Liq5LiK5ri45YiG5pSv77yM5ouS57ud5o6o6YCB44CCIgogCi0jOiBidWlsdGluL3B1c2guYzoxMzkKKyM6IGJ1aWx0aW4vcHVzaC5jOjE0MgogIywgYy1mb3JtYXQKIG1zZ2lkICIiCiAiWW91IGFyZSBwdXNoaW5nIHRvIHJlbW90ZSAnJXMnLCB3aGljaCBpcyBub3QgdGhlIHVwc3RyZWFtIG9mXG4iCkBAIC03MjkxLDcgKzc1MDIsNyBAQAogIuiAjOayoeacieWRiuivieaIkeimgeaOqOmAgeS7gOS5iOOAgeabtOaWsOWTquS4qui/nOeoi+WIhuaUr+OAgiIKIAogIyAg6K+R6ICF77ya5a2X56ym5Liy6aaW6KGM6KGM6aaW6KaB5re75Yqg4oCcd2FybmluZzog4oCd5a2X5Liy77yM5pWF5q2k6aaW6KGM6KaB6L6D5YW25L2Z6KGM55+tCi0jOiBidWlsdGluL3B1c2guYzoxNTEKKyM6IGJ1aWx0aW4vcHVzaC5jOjE2NQogbXNnaWQgIiIKICJwdXNoLmRlZmF1bHQgaXMgdW5zZXQ7IGl0cyBpbXBsaWNpdCB2YWx1ZSBpcyBjaGFuZ2luZyBpblxuIgogIkdpdCAyLjAgZnJvbSAnbWF0Y2hpbmcnIHRvICdzaW1wbGUnLiBUbyBzcXVlbGNoIHRoaXMgbWVzc2FnZVxuIgpAQCAtNzMyMiwyMyArNzUzMywyMyBAQAogIu+8iCdzaW1wbGUnIOaooeW8j+eUsSBHaXQgMS43LjExIOeJiOacrOW8leWFpeOAguWmguaenOaCqOacieaXtuimgeS9v+eUqOiAgeeJiOacrOeahCBHaXTvvIxcbiIKICLkuLrkv53mjIHlhbzlrrnvvIzor7fnlKggJ2N1cnJlbnQnIOS7o+abvyAnc2ltcGxlJyDmqKHlvI/vvIkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjE5OQorIzogYnVpbHRpbi9wdXNoLmM6MjI1CiBtc2dpZCAiIgogIllvdSBkaWRuJ3Qgc3BlY2lmeSBhbnkgcmVmc3BlY3MgdG8gcHVzaCwgYW5kIHB1c2guZGVmYXVsdCBpcyBcIm5vdGhpbmdcIi4iCiBtc2dzdHIgIuaCqOayoeacieS4uuaOqOmAgeaMh+WumuS7u+S9leW8leeUqOihqOi+vuW8j++8jOW5tuS4lCBwdXNoLmRlZmF1bHQg5Li6IFwibm90aGluZ1wi44CCIgogCi0jOiBidWlsdGluL3B1c2guYzoyMDYKKyM6IGJ1aWx0aW4vcHVzaC5jOjIzMgogbXNnaWQgIiIKICJVcGRhdGVzIHdlcmUgcmVqZWN0ZWQgYmVjYXVzZSB0aGUgdGlwIG9mIHlvdXIgY3VycmVudCBicmFuY2ggaXMgYmVoaW5kXG4iCi0iaXRzIHJlbW90ZSBjb3VudGVycGFydC4gTWVyZ2UgdGhlIHJlbW90ZSBjaGFuZ2VzIChlLmcuICdnaXQgcHVsbCcpXG4iCi0iYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisiaXRzIHJlbW90ZSBjb3VudGVycGFydC4gSW50ZWdyYXRlIHRoZSByZW1vdGUgY2hhbmdlcyAoZS5nLlxuIgorIidnaXQgcHVsbCAuLi4nKSBiZWZvcmUgcHVzaGluZyBhZ2Fpbi5cbiIKICJTZWUgdGhlICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIGluICdnaXQgcHVzaCAtLWhlbHAnIGZvciBkZXRhaWxzLiIKIG1zZ3N0ciAiIgogIuabtOaWsOiiq+aLkue7ne+8jOWboOS4uuaCqOW9k+WJjeWIhuaUr+eahOacgOaWsOaPkOS6pOiQveWQjuS6juWFtuWvueW6lOeahOi/nOeoi+WIhuaUr+OAglxuIgotIuWGjeasoeaOqOmAgeWJje+8jOWFiOS4jui/nOeoi+WPmOabtOWQiOW5tu+8iOWmgiAnZ2l0IHB1bGwn77yJ44CC6K+m6KeBXG4iCisi5YaN5qyh5o6o6YCB5YmN77yM5YWI5LiO6L+c56iL5Y+Y5pu05ZCI5bm277yI5aaCICdnaXQgcHVsbCAuLi4n77yJ44CC6K+m6KeBXG4iCiAiJ2dpdCBwdXNoIC0taGVscCcg5Lit55qEICdOb3RlIGFib3V0IGZhc3QtZm9yd2FyZHMnIOWwj+iKguOAgiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjEyCisjOiBidWlsdGluL3B1c2guYzoyMzgKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgogImNvdW50ZXJwYXJ0LiBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gcHVzaCB0aGF0IGJyYW5jaCwgeW91IG1heSB3YW50IHRvXG4iCkBAIC03MzUwLDM1ICs3NTYxLDM1IEBACiAi6YWN572u5Y+Y6YePICdwdXNoLmRlZmF1bHQnIOiuvue9ruS4uiAnc2ltcGxlJ+OAgSdjdXJyZW50JyDmiJYgJ3Vwc3RyZWFtJ1xuIgogIuS7peS+v+WPquaOqOmAgeW9k+WJjeWIhuaUr+OAgiIKIAotIzogYnVpbHRpbi9wdXNoLmM6MjE4CisjOiBidWlsdGluL3B1c2guYzoyNDQKIG1zZ2lkICIiCiAiVXBkYXRlcyB3ZXJlIHJlamVjdGVkIGJlY2F1c2UgYSBwdXNoZWQgYnJhbmNoIHRpcCBpcyBiZWhpbmQgaXRzIHJlbW90ZVxuIgotImNvdW50ZXJwYXJ0LiBDaGVjayBvdXQgdGhpcyBicmFuY2ggYW5kIG1lcmdlIHRoZSByZW1vdGUgY2hhbmdlc1xuIgotIihlLmcuICdnaXQgcHVsbCcpIGJlZm9yZSBwdXNoaW5nIGFnYWluLlxuIgorImNvdW50ZXJwYXJ0LiBDaGVjayBvdXQgdGhpcyBicmFuY2ggYW5kIGludGVncmF0ZSB0aGUgcmVtb3RlIGNoYW5nZXNcbiIKKyIoZS5nLiAnZ2l0IHB1bGwgLi4uJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICLmm7TmlrDooqvmi5Lnu53vvIzlm6DkuLrmjqjpgIHnmoTkuIDkuKrliIbmlK/nmoTmnIDmlrDmj5DkuqTokL3lkI7kuo7lhbblr7nlupTnmoTov5znqIvliIbmlK/jgIJcbiIKLSLmo4Dlh7ror6XliIbmlK/lubbkuI7ov5znqIvlj5jmm7TlkIjlubbvvIjlpoIgJ2dpdCBwdWxsJ++8ie+8jOeEtuWQjuWGjeaOqOmAgeOAguivpuingVxuIgorIuajgOWHuuivpeWIhuaUr+W5tuaVtOWQiOi/nOeoi+WPmOabtO+8iOWmgiAnZ2l0IHB1bGwgLi4uJ++8ie+8jOeEtuWQjuWGjeaOqOmAgeOAguivpuingVxuIgogIidnaXQgcHVzaCAtLWhlbHAnIOS4reeahCAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyDlsI/oioLjgIIiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjIyNAorIzogYnVpbHRpbi9wdXNoLmM6MjUwCiBtc2dpZCAiIgogIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSByZW1vdGUgY29udGFpbnMgd29yayB0aGF0IHlvdSBkb1xuIgogIm5vdCBoYXZlIGxvY2FsbHkuIFRoaXMgaXMgdXN1YWxseSBjYXVzZWQgYnkgYW5vdGhlciByZXBvc2l0b3J5IHB1c2hpbmdcbiIKLSJ0byB0aGUgc2FtZSByZWYuIFlvdSBtYXkgd2FudCB0byBmaXJzdCBtZXJnZSB0aGUgcmVtb3RlIGNoYW5nZXMgKGUuZy4sXG4iCi0iJ2dpdCBwdWxsJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCisidG8gdGhlIHNhbWUgcmVmLiBZb3UgbWF5IHdhbnQgdG8gZmlyc3QgaW50ZWdyYXRlIHRoZSByZW1vdGUgY2hhbmdlc1xuIgorIihlLmcuLCAnZ2l0IHB1bGwgLi4uJykgYmVmb3JlIHB1c2hpbmcgYWdhaW4uXG4iCiAiU2VlIHRoZSAnTm90ZSBhYm91dCBmYXN0LWZvcndhcmRzJyBpbiAnZ2l0IHB1c2ggLS1oZWxwJyBmb3IgZGV0YWlscy4iCiBtc2dzdHIgIiIKICLmm7TmlrDooqvmi5Lnu53vvIzlm6DkuLrov5znqIvniYjmnKzlupPljIXlkKvmgqjmnKzlnLDlsJrkuI3lrZjlnKjnmoTmj5DkuqTjgILov5npgJrluLjmmK/lm6DkuLrlj6blpJZcbiIKLSLkuIDkuKrniYjmnKzlupPlt7LmjqjpgIHkuobnm7jlkIznmoTlvJXnlKjjgILlho3mrKHmjqjpgIHliY3vvIzmgqjlj6/og73pnIDopoHlhYjlkIjlubbov5znqIvlj5jmm7RcbiIKLSLvvIjlpoIgJ2dpdCBwdWxsJ++8ieOAglxuIgorIuS4gOS4queJiOacrOW6k+W3suWQkeivpeW8leeUqOi/m+ihjOS6huaOqOmAgeOAguWGjeasoeaOqOmAgeWJje+8jOaCqOWPr+iDvemcgOimgeWFiOaVtOWQiOi/nOeoi+WPmOabtFxuIgorIu+8iOWmgiAnZ2l0IHB1bGwgLi4uJ++8ieOAglxuIgogIuivpuingSAnZ2l0IHB1c2ggLS1oZWxwJyDkuK3nmoQgJ05vdGUgYWJvdXQgZmFzdC1mb3J3YXJkcycg5bCP6IqC44CCIgogCi0jOiBidWlsdGluL3B1c2guYzoyMzEKKyM6IGJ1aWx0aW4vcHVzaC5jOjI1NwogbXNnaWQgIlVwZGF0ZXMgd2VyZSByZWplY3RlZCBiZWNhdXNlIHRoZSB0YWcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHJlbW90ZS4iCiBtc2dzdHIgIuabtOaWsOiiq+aLkue7neWboOS4uiB0YWcg5Zyo6L+c56iL5bey57uP5a2Y5Zyo44CCIgogCi0jOiBidWlsdGluL3B1c2guYzoyMzQKKyM6IGJ1aWx0aW4vcHVzaC5jOjI2MAogbXNnaWQgIiIKICJZb3UgY2Fubm90IHVwZGF0ZSBhIHJlbW90ZSByZWYgdGhhdCBwb2ludHMgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKICJvciB1cGRhdGUgYSByZW1vdGUgcmVmIHRvIG1ha2UgaXQgcG9pbnQgYXQgYSBub24tY29tbWl0IG9iamVjdCxcbiIKQEAgLTczODcsMjIgKzc1OTgsMjIgQEAKICLlpoLmnpzkuI3kvb/nlKggJy0tZm9yY2UnIOWPguaVsO+8jOaCqOS4jeiDveabtOaWsOS4gOS4quaMh+WQkemdnuaPkOS6pOWvueixoeeahOi/nOeoi+W8leeUqO+8jFxuIgogIuS5n+S4jeiDveabtOaWsOi/nOeoi+W8leeUqOiuqeWFtuaMh+WQkeS4gOS4qumdnuaPkOS6pOWvueixoeOAglxuIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTQKKyM6IGJ1aWx0aW4vcHVzaC5jOjMyMAogIywgYy1mb3JtYXQKIG1zZ2lkICJQdXNoaW5nIHRvICVzXG4iCiBtc2dzdHIgIuaOqOmAgeWIsCAlc1xuIgogCi0jOiBidWlsdGluL3B1c2guYzoyOTgKKyM6IGJ1aWx0aW4vcHVzaC5jOjMyNAogIywgYy1mb3JtYXQKIG1zZ2lkICJmYWlsZWQgdG8gcHVzaCBzb21lIHJlZnMgdG8gJyVzJyIKIG1zZ3N0ciAi5peg5rOV5o6o6YCB5LiA5Lqb5byV55So5YiwICclcyciCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjMzMQorIzogYnVpbHRpbi9wdXNoLmM6MzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgImJhZCByZXBvc2l0b3J5ICclcyciCiBtc2dzdHIgIuWdj+eahOeJiOacrOW6kyAnJXMnIgogCi0jOiBidWlsdGluL3B1c2guYzozMzIKKyM6IGJ1aWx0aW4vcHVzaC5jOjM1OAogbXNnaWQgIiIKICJObyBjb25maWd1cmVkIHB1c2ggZGVzdGluYXRpb24uXG4iCiAiRWl0aGVyIHNwZWNpZnkgdGhlIFVSTCBmcm9tIHRoZSBjb21tYW5kLWxpbmUgb3IgY29uZmlndXJlIGEgcmVtb3RlICIKQEAgLTc0MjMsODcgKzc2MzQsODcgQEAKICJcbiIKICIgICAgZ2l0IHB1c2ggPG5hbWU+XG4iCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM0NworIzogYnVpbHRpbi9wdXNoLmM6MzczCiBtc2dpZCAiLS1hbGwgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLWFsbCDlkowgLS10YWdzIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzQ4CisjOiBidWlsdGluL3B1c2guYzozNzQKIG1zZ2lkICItLWFsbCBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICItLWFsbCDkuI3og73lkozlvJXnlKjooajovr7lvI/lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM1MworIzogYnVpbHRpbi9wdXNoLmM6Mzc5CiBtc2dpZCAiLS1taXJyb3IgYW5kIC0tdGFncyBhcmUgaW5jb21wYXRpYmxlIgogbXNnc3RyICItLW1pcnJvciDlkowgLS10YWdzIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6MzU0CisjOiBidWlsdGluL3B1c2guYzozODAKIG1zZ2lkICItLW1pcnJvciBjYW4ndCBiZSBjb21iaW5lZCB3aXRoIHJlZnNwZWNzIgogbXNnc3RyICItLW1pcnJvciDkuI3og73lkozlvJXnlKjooajovr7lvI/lkIzml7bkvb/nlKgiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjM1OQorIzogYnVpbHRpbi9wdXNoLmM6Mzg1CiBtc2dpZCAiLS1hbGwgYW5kIC0tbWlycm9yIGFyZSBpbmNvbXBhdGlibGUiCiBtc2dzdHIgIi0tYWxsIOWSjCAtLW1pcnJvciDkuI3lhbzlrrkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQxOQorIzogYnVpbHRpbi9wdXNoLmM6NDQ1CiBtc2dpZCAicmVwb3NpdG9yeSIKIG1zZ3N0ciAi54mI5pys5bqTIgogCi0jOiBidWlsdGluL3B1c2guYzo0MjAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ0NgogbXNnaWQgInB1c2ggYWxsIHJlZnMiCiBtc2dzdHIgIuaOqOmAgeaJgOacieW8leeUqCIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDIxCisjOiBidWlsdGluL3B1c2guYzo0NDcKIG1zZ2lkICJtaXJyb3IgYWxsIHJlZnMiCiBtc2dzdHIgIumVnOWDj+aJgOacieW8leeUqCIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDIzCisjOiBidWlsdGluL3B1c2guYzo0NDkKIG1zZ2lkICJkZWxldGUgcmVmcyIKIG1zZ3N0ciAi5Yig6Zmk5byV55SoIgogCi0jOiBidWlsdGluL3B1c2guYzo0MjQKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1MAogbXNnaWQgInB1c2ggdGFncyAoY2FuJ3QgYmUgdXNlZCB3aXRoIC0tYWxsIG9yIC0tbWlycm9yKSIKIG1zZ3N0ciAi5o6o6YCBIHRhZ3PvvIjkuI3og73kvb/nlKggLS1hbGwgb3IgLS1taXJyb3LvvIkiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyNworIzogYnVpbHRpbi9wdXNoLmM6NDUzCiBtc2dpZCAiZm9yY2UgdXBkYXRlcyIKIG1zZ3N0ciAi5by65Yi25pu05pawIgogCi0jOiBidWlsdGluL3B1c2guYzo0MjgKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ1NAogbXNnaWQgImNoZWNrIgogbXNnc3RyICLmo4Dmn6UiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQyOQorIzogYnVpbHRpbi9wdXNoLmM6NDU1CiBtc2dpZCAiY29udHJvbCByZWN1cnNpdmUgcHVzaGluZyBvZiBzdWJtb2R1bGVzIgogbXNnc3RyICLmjqfliLblrZDmqKHnu4TnmoTpgJLlvZLmjqjpgIEiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzMQorIzogYnVpbHRpbi9wdXNoLmM6NDU3CiBtc2dpZCAidXNlIHRoaW4gcGFjayIKIG1zZ3N0ciAi5L2/55So57K+566A5omT5YyFIgogCi0jOiBidWlsdGluL3B1c2guYzo0MzIgYnVpbHRpbi9wdXNoLmM6NDMzCisjOiBidWlsdGluL3B1c2guYzo0NTggYnVpbHRpbi9wdXNoLmM6NDU5CiBtc2dpZCAicmVjZWl2ZSBwYWNrIHByb2dyYW0iCiBtc2dzdHIgIuaOpeaUtuWMheeoi+W6jyIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDM0CisjOiBidWlsdGluL3B1c2guYzo0NjAKIG1zZ2lkICJzZXQgdXBzdHJlYW0gZm9yIGdpdCBwdWxsL3N0YXR1cyIKIG1zZ3N0ciAi6K6+572uIGdpdCBwdWxsL3N0YXR1cyDnmoTkuIrmuLgiCiAKLSM6IGJ1aWx0aW4vcHVzaC5jOjQzNworIzogYnVpbHRpbi9wdXNoLmM6NDYzCiBtc2dpZCAicHJ1bmUgbG9jYWxseSByZW1vdmVkIHJlZnMiCiBtc2dzdHIgIua4hemZpOacrOWcsOWIoOmZpOeahOW8leeUqCIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDM5CisjOiBidWlsdGluL3B1c2guYzo0NjUKIG1zZ2lkICJieXBhc3MgcHJlLXB1c2ggaG9vayIKIG1zZ3N0ciAi57uV6L+HIHByZS1wdXNoIOmSqeWtkCIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDQwCisjOiBidWlsdGluL3B1c2guYzo0NjYKIG1zZ2lkICJwdXNoIG1pc3NpbmcgYnV0IHJlbGV2YW50IHRhZ3MiCiBtc2dzdHIgIuaOqOmAgee8uuWkseeahOacieWFs+eahCB0YWdzIgogCi0jOiBidWlsdGluL3B1c2guYzo0NTAKKyM6IGJ1aWx0aW4vcHVzaC5jOjQ3NgogbXNnaWQgIi0tZGVsZXRlIGlzIGluY29tcGF0aWJsZSB3aXRoIC0tYWxsLCAtLW1pcnJvciBhbmQgLS10YWdzIgogbXNnc3RyICItLWRlbGV0ZSDkuI4gLS1hbGzjgIEtLW1pcnJvciDlj4ogLS10YWdzIOS4jeWFvOWuuSIKIAotIzogYnVpbHRpbi9wdXNoLmM6NDUyCisjOiBidWlsdGluL3B1c2guYzo0NzgKIG1zZ2lkICItLWRlbGV0ZSBkb2Vzbid0IG1ha2Ugc2Vuc2Ugd2l0aG91dCBhbnkgcmVmcyIKIG1zZ3N0ciAiLS1kZWxldGUg5pyq5o6l5Lu75L2V5byV55So5rKh5pyJ5oSP5LmJIgogCkBAIC03NTE3LDcwICs3NzI4LDgwIEBACiAidSBbLS1leGNsdWRlLXBlci1kaXJlY3Rvcnk9PGdpdGlnbm9yZT5dIHwgLWldXSBbLS1uby1zcGFyc2UtY2hlY2tvdXRdIFstLSIKICJpbmRleC1vdXRwdXQ9POaWh+S7tj5dICgtLWVtcHR5IHwgPOagkeaIluaPkOS6pDE+IFs85qCR5oiW5o+Q5LqkMj4gWzzmoJHmiJbmj5DkuqQzPl1dKSIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMDgKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTA5CiBtc2dpZCAid3JpdGUgcmVzdWx0aW5nIGluZGV4IHRvIDxmaWxlPiIKIG1zZ3N0ciAi5bCG57Si5byV57uT5p6c5YaZ5YWlIDxmaWxlPiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTEKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTEyCiBtc2dpZCAib25seSBlbXB0eSB0aGUgaW5kZXgiCiBtc2dzdHIgIuWPquaYr+a4heepuue0ouW8lSIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTMKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE0CiBtc2dpZCAiTWVyZ2luZyIKIG1zZ3N0ciAi5ZCI5bm2IgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjExNQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMTYKIG1zZ2lkICJwZXJmb3JtIGEgbWVyZ2UgaW4gYWRkaXRpb24gdG8gYSByZWFkIgogbXNnc3RyICLor7vlj5bkuYvkvZnlho3miafooYzkuIDkuKrlkIjlubYiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTE3CisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjExOAogbXNnaWQgIjMtd2F5IG1lcmdlIGlmIG5vIGZpbGUgbGV2ZWwgbWVyZ2luZyByZXF1aXJlZCIKIG1zZ3N0ciAi5aaC5p6c5rKh5pyJ5paH5Lu257qn5ZCI5bm26ZyA6KaB77yM5omn6KGM5LiJ6Lev5ZCI5bm2IgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjExOQorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjAKIG1zZ2lkICIzLXdheSBtZXJnZSBpbiBwcmVzZW5jZSBvZiBhZGRzIGFuZCByZW1vdmVzIgogbXNnc3RyICLlrZjlnKjmt7vliqDlkozliKDpmaTml7bvvIzkuZ/miafooYzkuInot6/lkIjlubYiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIxCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyMgogbXNnaWQgInNhbWUgYXMgLW0sIGJ1dCBkaXNjYXJkIHVubWVyZ2VkIGVudHJpZXMiCiBtc2dzdHIgIuexu+S8vOS6jiAtbe+8jOS9huS4ouW8g+acquWQiOW5tueahOadoeebriIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjIKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIzCiBtc2dpZCAiPHN1YmRpcmVjdG9yeT4vIgogbXNnc3RyICI85a2Q55uu5b2VPi8iCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTIzCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyNAogbXNnaWQgInJlYWQgdGhlIHRyZWUgaW50byB0aGUgaW5kZXggdW5kZXIgPHN1YmRpcmVjdG9yeT4vIgogbXNnc3RyICLor7vlj5bmoJHlr7nosaHliLDntKLlvJXnmoQgPOWtkOebruW9lT4vIOS4iyIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjYKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTI3CiBtc2dpZCAidXBkYXRlIHdvcmtpbmcgdHJlZSB3aXRoIG1lcmdlIHJlc3VsdCIKIG1zZ3N0ciAi55So5ZCI5bm255qE57uT5p6c5pu05paw5bel5L2c5Yy6IgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEyOAorIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjkKIG1zZ2lkICJnaXRpZ25vcmUiCiBtc2dzdHIgImdpdGlnbm9yZSIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMjkKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMwCiBtc2dpZCAiYWxsb3cgZXhwbGljaXRseSBpZ25vcmVkIGZpbGVzIHRvIGJlIG92ZXJ3cml0dGVuIgogbXNnc3RyICLlhYHorrjlv73nlaXmlofku7bkuK3orr7lrprnmoTmlofku7blj6/ku6Xooqvopobnm5YiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTMyCisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMwogbXNnaWQgImRvbid0IGNoZWNrIHRoZSB3b3JraW5nIHRyZWUgYWZ0ZXIgbWVyZ2luZyIKIG1zZ3N0ciAi5ZCI5bm25ZCO5LiN5qOA5p+l5bel5L2c5Yy6IgogCi0jOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzMworIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzQKIG1zZ2lkICJkb24ndCB1cGRhdGUgdGhlIGluZGV4IG9yIHRoZSB3b3JrIHRyZWUiCiBtc2dzdHIgIuS4jeabtOaWsOe0ouW8leWMuuWSjOW3peS9nOWMuiIKIAotIzogYnVpbHRpbi9yZWFkLXRyZWUuYzoxMzUKKyM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTM2CiBtc2dpZCAic2tpcCBhcHBseWluZyBzcGFyc2UgY2hlY2tvdXQgZmlsdGVyIgogbXNnc3RyICLot7Pov4flupTnlKjnqIDnlo/mo4Dlh7rov4fmu6TlmagiCiAKLSM6IGJ1aWx0aW4vcmVhZC10cmVlLmM6MTM3CisjOiBidWlsdGluL3JlYWQtdHJlZS5jOjEzOAogbXNnaWQgImRlYnVnIHVucGFjay10cmVlcyIKIG1zZ3N0ciAi6LCD6K+VIHVucGFjay10cmVlcyIKIAorIzogYnVpbHRpbi9yZWZsb2cuYzo1MDAKKyMsIGMtZm9ybWF0Cittc2dpZCAiJXMnIGZvciAnJXMnIGlzIG5vdCBhIHZhbGlkIHRpbWVzdGFtcCIKK21zZ3N0ciAiJyUyJHMnIOeahOWAvCAnJTEkcycg5LiN5piv5LiA5Liq5pyJ5pWI55qE5pe26Ze05oizIgorCisjOiBidWlsdGluL3JlZmxvZy5jOjYxNiBidWlsdGluL3JlZmxvZy5jOjYyMQorIywgYy1mb3JtYXQKK21zZ2lkICInJXMnIGlzIG5vdCBhIHZhbGlkIHRpbWVzdGFtcCIKK21zZ3N0ciAiJyVzJyDkuI3mmK/kuIDkuKrmnInmlYjnmoTml7bpl7TmiLMiCisKICM6IGJ1aWx0aW4vcmVtb3RlLmM6MTEKIG1zZ2lkICJnaXQgcmVtb3RlIFstdiB8IC0tdmVyYm9zZV0iCiBtc2dzdHIgImdpdCByZW1vdGUgWy12IHwgLS12ZXJib3NlXSIKQEAgLTgxNTEsOTggKzgzNzIsOTggQEAKIG1zZ2lkICJGYWlsZWQgdG8gZmluZCB0cmVlIG9mICVzLiIKIG1zZ3N0ciAi5peg5rOV5om+5YiwICVzIOaMh+WQkeeahOagkeOAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjk4CisjOiBidWlsdGluL3Jlc2V0LmM6OTkKICMsIGMtZm9ybWF0CiBtc2dpZCAiSEVBRCBpcyBub3cgYXQgJXMiCiBtc2dzdHIgIkhFQUQg546w5Zyo5L2N5LqOICVzIgogCiAjICDor5HogIXvvJrmsYnlrZfkuYvpl7Tml6DnqbrmoLzvvIzmlYXliKDpmaQlc+WJjeWQjuepuuagvAotIzogYnVpbHRpbi9yZXNldC5jOjE2OQorIzogYnVpbHRpbi9yZXNldC5jOjE3MgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gYSAlcyByZXNldCBpbiB0aGUgbWlkZGxlIG9mIGEgbWVyZ2UuIgogbXNnc3RyICLlnKjlkIjlubbov4fnqIvkuK3kuI3og73lgZolc+mHjee9ruaTjeS9nOOAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI0OAorIzogYnVpbHRpbi9yZXNldC5jOjI1MQogbXNnaWQgImJlIHF1aWV0LCBvbmx5IHJlcG9ydCBlcnJvcnMiCiBtc2dzdHIgIuWuiemdmeaooeW8j++8jOWPquaKpeWRiumUmeivryIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI1MAorIzogYnVpbHRpbi9yZXNldC5jOjI1MwogbXNnaWQgInJlc2V0IEhFQUQgYW5kIGluZGV4IgogbXNnc3RyICLph43nva4gSEVBRCDlkozntKLlvJUiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNTEKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTQKIG1zZ2lkICJyZXNldCBvbmx5IEhFQUQiCiBtc2dzdHIgIuWPqumHjee9riBIRUFEIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjUzIGJ1aWx0aW4vcmVzZXQuYzoyNTUKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNTYgYnVpbHRpbi9yZXNldC5jOjI1OAogbXNnaWQgInJlc2V0IEhFQUQsIGluZGV4IGFuZCB3b3JraW5nIHRyZWUiCiBtc2dzdHIgIumHjee9riBIRUFE44CB57Si5byV5ZKM5bel5L2c5Yy6IgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MjU3CisjOiBidWlsdGluL3Jlc2V0LmM6MjYwCiBtc2dpZCAicmVzZXQgSEVBRCBidXQga2VlcCBsb2NhbCBjaGFuZ2VzIgogbXNnc3RyICLph43nva4gSEVBRCDkvYbkv53lrZjmnKzlnLDlj5jmm7QiCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzoyNzUKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyNzgKICMsIGMtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlc29sdmUgJyVzJyBhcyBhIHZhbGlkIHJldmlzaW9uLiIKIG1zZ3N0ciAi5peg5rOV5bCGICclcycg6Kej5p6Q5Li65LiA5Liq5pyJ5pWI55qE54mI5pys44CCIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6Mjc4IGJ1aWx0aW4vcmVzZXQuYzoyODYKKyM6IGJ1aWx0aW4vcmVzZXQuYzoyODEgYnVpbHRpbi9yZXNldC5jOjI4OQogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgcGFyc2Ugb2JqZWN0ICclcycuIgogbXNnc3RyICLkuI3og73op6PmnpDlr7nosaEgJyVzJ+OAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI4MworIzogYnVpbHRpbi9yZXNldC5jOjI4NgogIywgYy1mb3JtYXQKIG1zZ2lkICJGYWlsZWQgdG8gcmVzb2x2ZSAnJXMnIGFzIGEgdmFsaWQgdHJlZS4iCiBtc2dzdHIgIuaXoOazleWwhiAnJXMnIOino+aekOS4uuS4gOS4quacieaViOeahOagkeWvueixoeOAgiIKIAotIzogYnVpbHRpbi9yZXNldC5jOjI5MgorIzogYnVpbHRpbi9yZXNldC5jOjI5NQogbXNnaWQgIi0tcGF0Y2ggaXMgaW5jb21wYXRpYmxlIHdpdGggLS17aGFyZCxtaXhlZCxzb2Z0fSIKIG1zZ3N0ciAiLS1wYXRjaCDkuI4gLS17aGFyZOOAgW1peGVk44CBc29mdH0g6YCJ6aG55LiN5YW85a65IgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzAxCisjOiBidWlsdGluL3Jlc2V0LmM6MzA0CiBtc2dpZCAiLS1taXhlZCB3aXRoIHBhdGhzIGlzIGRlcHJlY2F0ZWQ7IHVzZSAnZ2l0IHJlc2V0IC0tIDxwYXRocz4nIGluc3RlYWQuIgogbXNnc3RyICItLW1peGVkIOW4pui3r+W+hOW3suW8g+eUqO+8jOiAjOaYr+eUqCAnZ2l0IHJlc2V0IC0tIDxwYXRocz4n44CCIgogCiAjICDor5HogIXvvJrmsYnlrZfkuYvpl7Tml6DnqbrmoLzvvIzmlYXliKDpmaQlc+WJjeWQjuepuuagvAotIzogYnVpbHRpbi9yZXNldC5jOjMwMworIzogYnVpbHRpbi9yZXNldC5jOjMwNgogIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZG8gJXMgcmVzZXQgd2l0aCBwYXRocy4iCiBtc2dzdHIgIuS4jeiDveW4pui3r+W+hOi/m+ihjCVz6YeN572u44CCIgogCiAjICDor5HogIXvvJrmsYnlrZfkuYvpl7Tml6DnqbrmoLzvvIzmlYXliKDpmaQlc+WJjeWQjuepuuagvAotIzogYnVpbHRpbi9yZXNldC5jOjMxMworIzogYnVpbHRpbi9yZXNldC5jOjMxNgogIywgYy1mb3JtYXQKIG1zZ2lkICIlcyByZXNldCBpcyBub3QgYWxsb3dlZCBpbiBhIGJhcmUgcmVwb3NpdG9yeSIKIG1zZ3N0ciAi5LiN6IO95a+56KO454mI5pys5bqT6L+b6KGMJXPph43nva4iCiAKLSM6IGJ1aWx0aW4vcmVzZXQuYzozMzMKKyM6IGJ1aWx0aW4vcmVzZXQuYzozMzYKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IHJlc2V0IGluZGV4IGZpbGUgdG8gcmV2aXNpb24gJyVzJy4iCiBtc2dzdHIgIuS4jeiDvemHjee9rue0ouW8leaWh+S7tuiHs+eJiOacrCAnJXMn44CCIgogCi0jOiBidWlsdGluL3Jlc2V0LmM6MzM5CisjOiBidWlsdGluL3Jlc2V0LmM6MzQyCiBtc2dpZCAiVW5zdGFnZWQgY2hhbmdlcyBhZnRlciByZXNldDoiCiBtc2dzdHIgIumHjee9ruWQjuaSpOWHuuaaguWtmOWMuueahOWPmOabtO+8miIKIAotIzogYnVpbHRpbi9yZXNldC5jOjM0NAorIzogYnVpbHRpbi9yZXNldC5jOjM0NwogbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSBuZXcgaW5kZXggZmlsZS4iCiBtc2dzdHIgIuS4jeiDveWGmeWFpeaWsOeahOe0ouW8leaWh+S7tuOAgiIKIAotIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozMzkKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ1CiBtc2dpZCAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFtvcHRpb25zXSAtLSBbPGFyZ3M+Li4uXSIKIG1zZ3N0ciAiZ2l0IHJldi1wYXJzZSAtLXBhcnNlb3B0IFvpgInpobldIC0tIFs85Y+C5pWwPi4uLl0iCiAKLSM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6MzQ0CisjOiBidWlsdGluL3Jldi1wYXJzZS5jOjM1MAogbXNnaWQgImtlZXAgdGhlIGAtLWAgcGFzc2VkIGFzIGFuIGFyZyIKIG1zZ3N0ciAi5L+d5oyBIGAtLWAg5L2c5Li65LiA5Liq5Y+C5pWw5Lyg6YCSIgogCi0jOiBidWlsdGluL3Jldi1wYXJzZS5jOjM0NgorIzogYnVpbHRpbi9yZXYtcGFyc2UuYzozNTIKIG1zZ2lkICJzdG9wIHBhcnNpbmcgYWZ0ZXIgdGhlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQiCiBtc2dzdHIgIumBh+WIsOesrOS4gOS4qumdnumAiemhueWPguaVsOWQjuWBnOatouino+aekCIKIAotIzogYnVpbHRpbi9yZXYtcGFyc2UuYzo0NjQKKyM6IGJ1aWx0aW4vcmV2LXBhcnNlLmM6NDcwCiBtc2dpZCAiIgogImdpdCByZXYtcGFyc2UgLS1wYXJzZW9wdCBbb3B0aW9uc10gLS0gWzxhcmdzPi4uLl1cbiIKICIgICBvcjogZ2l0IHJldi1wYXJzZSAtLXNxLXF1b3RlIFs8YXJnPi4uLl1cbiIKQEAgLTgyNzIsMTQ1ICs4NDkzLDE2NSBAQAogbXNnaWQgImdpdCBjaGVycnktcGljayA8c3ViY29tbWFuZD4iCiBtc2dzdHIgImdpdCBjaGVycnktcGljayA85a2Q5ZG95LukPiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzo3MCBidWlsdGluL3JldmVydC5jOjkyCisjOiBidWlsdGluL3JldmVydC5jOjcxIGJ1aWx0aW4vcmV2ZXJ0LmM6OTQKICMsIGMtZm9ybWF0CiBtc2dpZCAiJXM6ICVzIGNhbm5vdCBiZSB1c2VkIHdpdGggJXMiCiBtc2dzdHIgIiVz77yaJXMg5LiN6IO95ZKMICVzIOWQjOaXtuS9v+eUqCIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDMKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1CiBtc2dpZCAiZW5kIHJldmVydCBvciBjaGVycnktcGljayBzZXF1ZW5jZSIKIG1zZ3N0ciAi57uI5q2i5Y+N6L2s5oiW5ouj6YCJ5pON5L2cIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEwNAorIzogYnVpbHRpbi9yZXZlcnQuYzoxMDYKIG1zZ2lkICJyZXN1bWUgcmV2ZXJ0IG9yIGNoZXJyeS1waWNrIHNlcXVlbmNlIgogbXNnc3RyICLnu6fnu63lj43ovazmiJbmi6PpgInmk43kvZwiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA1CisjOiBidWlsdGluL3JldmVydC5jOjEwNwogbXNnaWQgImNhbmNlbCByZXZlcnQgb3IgY2hlcnJ5LXBpY2sgc2VxdWVuY2UiCiBtc2dzdHIgIuWPlua2iOWPjei9rOaIluaLo+mAieaTjeS9nCIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDYKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA4CiBtc2dpZCAiZG9uJ3QgYXV0b21hdGljYWxseSBjb21taXQiCiBtc2dzdHIgIuS4jeimgeiHquWKqOaPkOS6pCIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMDcKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTA5CiBtc2dpZCAiZWRpdCB0aGUgY29tbWl0IG1lc3NhZ2UiCiBtc2dzdHIgIue8lui+keaPkOS6pOivtOaYjiIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMTAKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTEyCiBtc2dpZCAicGFyZW50IG51bWJlciIKIG1zZ3N0ciAi54i257yW5Y+3IgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMgorIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKIG1zZ2lkICJtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAi5ZCI5bm2562W55WlIgogCi0jOiBidWlsdGluL3JldmVydC5jOjExMworIzogYnVpbHRpbi9yZXZlcnQuYzoxMTUKIG1zZ2lkICJvcHRpb24iCiBtc2dzdHIgIumAiemhuSIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMTQKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTE2CiBtc2dpZCAib3B0aW9uIGZvciBtZXJnZSBzdHJhdGVneSIKIG1zZ3N0ciAi5ZCI5bm2562W55Wl55qE6YCJ6aG5IgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyNQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMjcKIG1zZ2lkICJhcHBlbmQgY29tbWl0IG5hbWUiCiBtc2dzdHIgIui/veWKoOaPkOS6pOWQjeensCIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoxMjYKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4CiBtc2dpZCAiYWxsb3cgZmFzdC1mb3J3YXJkIgogbXNnc3RyICLlhYHorrjlv6vov5vlvI8iCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI3CisjOiBidWlsdGluL3JldmVydC5jOjEyOQogbXNnaWQgInByZXNlcnZlIGluaXRpYWxseSBlbXB0eSBjb21taXRzIgogbXNnc3RyICLkv53nlZnliJ3lp4vljJbnmoTnqbrmj5DkuqQiCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MTI4CisjOiBidWlsdGluL3JldmVydC5jOjEzMAogbXNnaWQgImFsbG93IGNvbW1pdHMgd2l0aCBlbXB0eSBtZXNzYWdlcyIKIG1zZ3N0ciAi5YWB6K645o+Q5Lqk6K+05piO5Li656m6IgogCi0jOiBidWlsdGluL3JldmVydC5jOjEyOQorIzogYnVpbHRpbi9yZXZlcnQuYzoxMzEKIG1zZ2lkICJrZWVwIHJlZHVuZGFudCwgZW1wdHkgY29tbWl0cyIKIG1zZ3N0ciAi5L+d5oyB5aSa5L2Z55qE44CB56m655qE5o+Q5LqkIgogCi0jOiBidWlsdGluL3JldmVydC5jOjEzMworIzogYnVpbHRpbi9yZXZlcnQuYzoxMzUKIG1zZ2lkICJwcm9ncmFtIGVycm9yIgogbXNnc3RyICLnqIvluo/plJnor68iCiAKLSM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjIzCisjOiBidWlsdGluL3JldmVydC5jOjIyNQogbXNnaWQgInJldmVydCBmYWlsZWQiCiBtc2dzdHIgIui/mOWOn+Wksei0pSIKIAotIzogYnVpbHRpbi9yZXZlcnQuYzoyMzgKKyM6IGJ1aWx0aW4vcmV2ZXJ0LmM6MjQwCiBtc2dpZCAiY2hlcnJ5LXBpY2sgZmFpbGVkIgogbXNnc3RyICLmi6PpgInlpLHotKUiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxNQorIzogYnVpbHRpbi9ybS5jOjE2CiBtc2dpZCAiZ2l0IHJtIFtvcHRpb25zXSBbLS1dIDxmaWxlPi4uLiIKIG1zZ3N0ciAiZ2l0IHJtIFvpgInpobldIFstLV0gPOaWh+S7tj4uLi4iCiAKLSM6IGJ1aWx0aW4vcm0uYzo2NCBidWlsdGluL3JtLmM6MTg2Ci0jLCBjLWZvcm1hdAorIzogYnVpbHRpbi9ybS5jOjY0CiBtc2dpZCAiIgotInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKKyJ0aGUgZm9sbG93aW5nIHN1Ym1vZHVsZSAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlcylcbiIKKyJ1c2VzIGEgLmdpdCBkaXJlY3Rvcnk6IgorbXNnaWRfcGx1cmFsICIiCisidGhlIGZvbGxvd2luZyBzdWJtb2R1bGVzIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKVxuIgorInVzZSBhIC5naXQgZGlyZWN0b3J5OiIKK21zZ3N0clswXSAi5aaC5LiL5a2Q5qih57uE77yI5oiW5LiA5Liq5YW25bWM5aWX5a2Q5qih57uE77yJ5L2/55So5LqG5LiA5LiqIC5naXQg55uu5b2V77yaIgorbXNnc3RyWzFdICLlpoLkuIvlrZDmqKHnu4TvvIjmiJbkuIDkuKrlhbbltYzlpZflrZDmqKHnu4TvvInkvb/nlKjkuobkuIDkuKogLmdpdCDnm67lvZXvvJoiCisKKyM6IGJ1aWx0aW4vcm0uYzo3MAorbXNnaWQgIiIKKyJcbiIKICIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgaGlzdG9yeSkiCiBtc2dzdHIgIiIKLSLlrZDmqKHnu4QgJyVzJ++8iOaIluiAheWug+eahOS4gOS4quW1jOWll+WtkOaooee7hO+8ieS9v+eUqOS4gOS4qiAuZ2l0IOebruW9lVxuIgorIlxuIgogIu+8iOS9v+eUqCAncm0gLXJmJyDlkb3ku6TlpoLmnpzmgqjnnJ/nmoTmg7PliKDpmaTlroPlj4rlhbblhajpg6jljoblj7LvvIkiCiAKLSM6IGJ1aWx0aW4vcm0uYzoxNzQKLSMsIGMtZm9ybWF0CisjOiBidWlsdGluL3JtLmM6MjMwCiBtc2dpZCAiIgotIiclcycgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlIGZpbGUgYW5kIHRoZSBIRUFEXG4iCisidGhlIGZvbGxvd2luZyBmaWxlIGhhcyBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZVxuIgorImZpbGUgYW5kIHRoZSBIRUFEOiIKK21zZ2lkX3BsdXJhbCAiIgorInRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZVxuIgorImZpbGUgYW5kIHRoZSBIRUFEOiIKK21zZ3N0clswXSAi5aaC5LiL5paH5Lu25YW25pqC5a2Y55qE5YaF5a655ZKM5bel5L2c5Yy65Y+KIEhFQUQg5Lit55qE6YO95LiN5LiA5qC377yaIgorbXNnc3RyWzFdICLlpoLkuIvmlofku7blhbbmmoLlrZjnmoTlhoXlrrnlkozlt6XkvZzljLrlj4ogSEVBRCDkuK3nmoTpg73kuI3kuIDmoLfvvJoiCisKKyM6IGJ1aWx0aW4vcm0uYzoyMzUKK21zZ2lkICIiCisiXG4iCiAiKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKSIKIG1zZ3N0ciAiIgotIiclcycg5pqC5a2Y55qE5YaF5a655ZKM5bel5L2c5Yy65Y+KIEhFQUQg5Lit55qE6YO95LiN5LiA5qC3XG4iCisiXG4iCiAi77yI5L2/55SoIC1mIOW8uuWItuWIoOmZpO+8iSIKIAotIzogYnVpbHRpbi9ybS5jOjE4MAotIywgYy1mb3JtYXQKKyM6IGJ1aWx0aW4vcm0uYzoyMzkKK21zZ2lkICJ0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleDoiCittc2dpZF9wbHVyYWwgInRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBjaGFuZ2VzIHN0YWdlZCBpbiB0aGUgaW5kZXg6IgorbXNnc3RyWzBdICLlpoLkuIvmlofku7bnm7jlr7nntKLlvJXljLrnmoTlhoXlrrnmnInkv67mlLkiCittc2dzdHJbMV0gIuWmguS4i+aWh+S7tuebuOWvuee0ouW8leWMuueahOWGheWuueacieS/ruaUuSIKKworIzogYnVpbHRpbi9ybS5jOjI0MyBidWlsdGluL3JtLmM6MjU0CiBtc2dpZCAiIgotIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgorIlxuIgogIih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwgb3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiCiBtc2dzdHIgIiIKLSInJXMnIOacieWPmOabtOW3suaaguWtmOiHs+e0ouW8leS4rVxuIgotIu+8iOS9v+eUqCAtLWNhY2hlZCDkv53lrZjmlofku7bvvIzmiJbnlKggLWYg5by65Yi25Yig6Zmk77yJIgorIlxuIgorIu+8iOS9v+eUqCAtLWNhY2hlZCDkv53nlZnmnKzlnLDmlofku7bvvIzmiJbnlKggLWYg5by65Yi25Yig6Zmk77yJIgogCi0jOiBidWlsdGluL3JtLmM6MTkxCi0jLCBjLWZvcm1hdAotbXNnaWQgIiIKLSInJXMnIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zXG4iCi0iKHVzZSAtLWNhY2hlZCB0byBrZWVwIHRoZSBmaWxlLCBvciAtZiB0byBmb3JjZSByZW1vdmFsKSIKLW1zZ3N0ciAiIgotIiclcycg5pyJ5pys5Zyw5L+u5pS5XG4iCi0i77yI5L2/55SoIC0tY2FjaGVkIOS/neWtmOaWh+S7tu+8jOaIlueUqCAtZiDlvLrliLbliKDpmaTvvIkiCisjOiBidWlsdGluL3JtLmM6MjUxCittc2dpZCAidGhlIGZvbGxvd2luZyBmaWxlIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zOiIKK21zZ2lkX3BsdXJhbCAidGhlIGZvbGxvd2luZyBmaWxlcyBoYXZlIGxvY2FsIG1vZGlmaWNhdGlvbnM6IgorbXNnc3RyWzBdICLlpoLkuIvmlofku7bmnInmnKzlnLDkv67mlLnvvJoiCittc2dzdHJbMV0gIuWmguS4i+aWh+S7tuacieacrOWcsOS/ruaUue+8miIKIAotIzogYnVpbHRpbi9ybS5jOjIwNworIzogYnVpbHRpbi9ybS5jOjI2OQogbXNnaWQgImRvIG5vdCBsaXN0IHJlbW92ZWQgZmlsZXMiCiBtc2dzdHIgIuS4jeWIl+WHuuWIoOmZpOeahOaWh+S7tiIKIAotIzogYnVpbHRpbi9ybS5jOjIwOAorIzogYnVpbHRpbi9ybS5jOjI3MAogbXNnaWQgIm9ubHkgcmVtb3ZlIGZyb20gdGhlIGluZGV4IgogbXNnc3RyICLlj6rku47ntKLlvJXljLrliKDpmaQiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyMDkKKyM6IGJ1aWx0aW4vcm0uYzoyNzEKIG1zZ2lkICJvdmVycmlkZSB0aGUgdXAtdG8tZGF0ZSBjaGVjayIKIG1zZ3N0ciAi5b+955Wl5paH5Lu25pu05paw54q25oCB5qOA5p+lIgogCi0jOiBidWlsdGluL3JtLmM6MjEwCisjOiBidWlsdGluL3JtLmM6MjcyCiBtc2dpZCAiYWxsb3cgcmVjdXJzaXZlIHJlbW92YWwiCiBtc2dzdHIgIuWFgeiuuOmAkuW9kuWIoOmZpCIKIAotIzogYnVpbHRpbi9ybS5jOjIxMgorIzogYnVpbHRpbi9ybS5jOjI3NAogbXNnaWQgImV4aXQgd2l0aCBhIHplcm8gc3RhdHVzIGV2ZW4gaWYgbm90aGluZyBtYXRjaGVkIgogbXNnc3RyICLljbPkvb/msqHmnInljLnphY3vvIzkuZ/ku6Xpm7bnirbmgIHpgIDlh7oiCiAKLSM6IGJ1aWx0aW4vcm0uYzoyODMKKyM6IGJ1aWx0aW4vcm0uYzozNDUKICMsIGMtZm9ybWF0CiBtc2dpZCAibm90IHJlbW92aW5nICclcycgcmVjdXJzaXZlbHkgd2l0aG91dCAtciIKIG1zZ3N0ciAi5pyq5o+Q5L6bIC1yIOmAiemhueS4jeS8mumAkuW9kuWIoOmZpCAnJXMnIgogCi0jOiBidWlsdGluL3JtLmM6MzIyCisjOiBidWlsdGluL3JtLmM6Mzg0CiAjLCBjLWZvcm1hdAogbXNnaWQgImdpdCBybTogdW5hYmxlIHRvIHJlbW92ZSAlcyIKIG1zZ3N0ciAiZ2l0IHJt77ya5LiN6IO95Yig6ZmkICVzIgpAQCAtODQyNCwyMyArODY2NSwyMyBAQAogbXNnaWQgIk1pc3NpbmcgYXV0aG9yOiAlcyIKIG1zZ3N0ciAi57y65bCR5L2c6ICF77yaJXMiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjcKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMjgKIG1zZ2lkICJzb3J0IG91dHB1dCBhY2NvcmRpbmcgdG8gdGhlIG51bWJlciBvZiBjb21taXRzIHBlciBhdXRob3IiCiBtc2dzdHIgIuagueaNruavj+S4quS9nOiAheeahOaPkOS6pOaVsOmHj+aOkuW6jyIKIAotIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIyOQorIzogYnVpbHRpbi9zaG9ydGxvZy5jOjIzMAogbXNnaWQgIlN1cHByZXNzIGNvbW1pdCBkZXNjcmlwdGlvbnMsIG9ubHkgcHJvdmlkZXMgY29tbWl0IGNvdW50IgogbXNnc3RyICLpmpDol4/mj5DkuqTor7TmmI7vvIzlj6rmj5Dkvpvmj5DkuqTmlbDph48iCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzEKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzIKIG1zZ2lkICJTaG93IHRoZSBlbWFpbCBhZGRyZXNzIG9mIGVhY2ggYXV0aG9yIgogbXNnc3RyICLmmL7npLrmr4/kuKrkvZzogIXnmoTnlLXlrZDpgq7ku7blnLDlnYAiCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzIKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzMKIG1zZ2lkICJ3WyxpMVssaTJdXSIKIG1zZ3N0ciAid1ssaTFbLGkyXV0iCiAKLSM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzMKKyM6IGJ1aWx0aW4vc2hvcnRsb2cuYzoyMzQKIG1zZ2lkICJMaW5ld3JhcCBvdXRwdXQiCiBtc2dzdHIgIuaKmOihjOi+k+WHuiIKIApAQCAtODUwNCwyMyArODc0NSwyMyBAQAogbXNnaWQgInNob3cgY29tbWl0cyBpbiB0b3BvbG9naWNhbCBvcmRlciIKIG1zZ3N0ciAi5Lul5ouT5omR6aG65bqP5pi+56S65o+Q5LqkIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcxCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6NjcyCiBtc2dpZCAic2hvdyBvbmx5IGNvbW1pdHMgbm90IG9uIHRoZSBmaXJzdCBicmFuY2giCiBtc2dzdHIgIuWPquaYvuekuuS4jeWcqOesrOS4gOS4quWIhuaUr+S4iueahOaPkOS6pCIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3MworIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3NAogbXNnaWQgInNob3cgbWVyZ2VzIHJlYWNoYWJsZSBmcm9tIG9ubHkgb25lIHRpcCIKIG1zZ3N0ciAi5pi+56S65LuF5LiA5Liq5YiG5pSv5Y+v6K6/6Zeu55qE5ZCI5bm25o+Q5LqkIgogCi0jOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc1Ci1tc2dpZCAic2hvdyBjb21taXRzIHdoZXJlIG5vIHBhcmVudCBjb21lcyBiZWZvcmUgaXRzIGNoaWxkcmVuIgotbXNnc3RyICLmmL7npLrmj5DkuqTml7bku6Xml7bpl7TkuLrluo/kuJTniLbmj5DkuqTkuI3og73pooblhYjlrZDmj5DkuqQiCisjOiBidWlsdGluL3Nob3ctYnJhbmNoLmM6Njc2Cittc2dpZCAidG9wb2xvZ2ljYWxseSBzb3J0LCBtYWludGFpbmluZyBkYXRlIG9yZGVyIHdoZXJlIHBvc3NpYmxlIgorbXNnc3RyICLmi5PmiZHmlrnlvI/mjpLluo/vvIzlubblsL3lj6/og73lnLDkv53mjIHml6XmnJ/pobrluo8iCiAKLSM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzcKKyM6IGJ1aWx0aW4vc2hvdy1icmFuY2guYzo2NzkKIG1zZ2lkICI8bj5bLDxiYXNlPl0iCiBtc2dzdHIgIjxuPlssPGJhc2U+XSIKIAotIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY3OAorIzogYnVpbHRpbi9zaG93LWJyYW5jaC5jOjY4MAogbXNnaWQgInNob3cgPG4+IG1vc3QgcmVjZW50IHJlZi1sb2cgZW50cmllcyBzdGFydGluZyBhdCBiYXNlIgogbXNnc3RyICLmmL7npLrku44gYmFzZSDlvIDlp4vnmoQgPG4+IOadoeacgOi/keeahOW8leeUqOaXpeW/l+iusOW9lSIKIApAQCAtODUzNiwzNSArODc3NywzNSBAQAogbXNnaWQgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPXBhdHRlcm5dIDwgcmVmLWxpc3QiCiBtc2dzdHIgImdpdCBzaG93LXJlZiAtLWV4Y2x1ZGUtZXhpc3RpbmdbPeaooeW8j10gPCDlvJXnlKjliJfooagiCiAKLSM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNjUKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNjgKIG1zZ2lkICJvbmx5IHNob3cgdGFncyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggaGVhZHMpIgogbXNnc3RyICLlj6rmmL7npLogdGFnc++8iOWPr+S7peWSjOWktOWFseeUqO+8iSIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NgorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2OQogbXNnaWQgIm9ubHkgc2hvdyBoZWFkcyAoY2FuIGJlIGNvbWJpbmVkIHdpdGggdGFncykiCiBtc2dzdHIgIuWPquaYvuekuuWktO+8iOWPr+S7peWSjCB0YWdzIOWFseeUqO+8iSIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE2NworIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3MAogbXNnaWQgInN0cmljdGVyIHJlZmVyZW5jZSBjaGVja2luZywgcmVxdWlyZXMgZXhhY3QgcmVmIHBhdGgiCiBtc2dzdHIgIuabtOS4peagvOeahOW8leeUqOajgOa1i++8jOmcgOimgeeyvuehrueahOW8leeUqOi3r+W+hCIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE3MCBidWlsdGluL3Nob3ctcmVmLmM6MTcyCi1tc2dpZCAic2hvdyB0aGUgSEVBRCByZWZlcmVuY2UiCi1tc2dzdHIgIuaYvuekuiBIRUFEIOW8leeUqCIKKyM6IGJ1aWx0aW4vc2hvdy1yZWYuYzoxNzMgYnVpbHRpbi9zaG93LXJlZi5jOjE3NgorbXNnaWQgInNob3cgdGhlIEhFQUQgcmVmZXJlbmNlLCBldmVuIGlmIGl0IHdvdWxkIGJlIGZpbHRlcmVkIG91dCIKK21zZ3N0ciAi5pi+56S6IEhFQUQg5byV55So77yM5Y2z5L2/6KKr6L+H5ruk5o6JIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTc0CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTc4CiBtc2dpZCAiZGVyZWZlcmVuY2UgdGFncyBpbnRvIG9iamVjdCBJRHMiCiBtc2dzdHIgIui9rOaNoiB0YWdzIOWIsOWvueixoUlEIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTc2CisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTgwCiBtc2dpZCAib25seSBzaG93IFNIQTEgaGFzaCB1c2luZyA8bj4gZGlnaXRzIgogbXNnc3RyICLlj6rmmL7npLrkvb/nlKggPG4+IOS4quaVsOWtl+eahCBTSEExIOWTiOW4jCIKIAotIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4MAorIzogYnVpbHRpbi9zaG93LXJlZi5jOjE4NAogbXNnaWQgImRvIG5vdCBwcmludCByZXN1bHRzIHRvIHN0ZG91dCAodXNlZnVsIHdpdGggLS12ZXJpZnkpIgogbXNnc3RyICLkuI3miZPljbDnu5PmnpzliLDmoIflh4bovpPlh7rvvIjkvovlpoLkuI4gLS12ZXJpZnkg5Y+C5pWw5YWx55So77yJIgogCi0jOiBidWlsdGluL3Nob3ctcmVmLmM6MTgyCisjOiBidWlsdGluL3Nob3ctcmVmLmM6MTg2CiBtc2dpZCAic2hvdyByZWZzIGZyb20gc3RkaW4gdGhhdCBhcmVuJ3QgaW4gbG9jYWwgcmVwb3NpdG9yeSIKIG1zZ3N0ciAi5pi+56S65LuO5qCH5YeG6L6T5YWl5Lit6K+75YWl55qE5LiN5Zyo5pys5Zyw54mI5pys5bqT5Lit55qE5byV55SoIgogCkBAIC04OTc2LDcgKzkyMTcsNyBAQAogbXNnaWQgIm9ubHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmciCiBtc2dzdHIgIuWPquWvueiwg+ivleacieeUqCIKIAotIzogZ2l0LmM6MTYKKyM6IGdpdC5jOjE3CiBtc2dpZCAiIgogIidnaXQgaGVscCAtYScgYW5kICdnaXQgaGVscCAtZycgbGlzdHMgYXZhaWxhYmxlIHN1YmNvbW1hbmRzIGFuZCBzb21lXG4iCiAiY29uY2VwdCBndWlkZXMuIFNlZSAnZ2l0IGhlbHAgPGNvbW1hbmQ+JyBvciAnZ2l0IGhlbHAgPGNvbmNlcHQ+J1xuIgpAQCAtODk4NSwxOSArOTIyNiwyMyBAQAogIuWRveS7pCAnZ2l0IGhlbHAgLWEnIOWSjCAnZ2l0IGhlbHAgLWcnIOaYvuekuuWPr+eUqOeahOWtkOWRveS7pOWSjOS4gOS6m+aMh+WNl+OAguWPguingVxuIgogIidnaXQgaGVscCA85ZG95LukPicg5oiWICdnaXQgaGVscCA85oyH5Y2XPicg5p2l5p+l55yL57uZ5a6a55qE5a2Q5ZG95Luk5biu5Yqp5oiW5oyH5Y2X44CCIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MTU2CisjOiBwYXJzZS1vcHRpb25zLmg6MTQ0Cittc2dpZCAiZXhwaXJ5IGRhdGUiCittc2dzdHIgIumAvuacn+aXpeacnyIKKworIzogcGFyc2Utb3B0aW9ucy5oOjE1OQogbXNnaWQgIm5vLW9wIChiYWNrd2FyZCBjb21wYXRpYmlsaXR5KSIKIG1zZ3N0ciAi56m65pON5L2c77yI5ZCR5ZCO5YW85a6577yJIgogCi0jOiBwYXJzZS1vcHRpb25zLmg6MjMyCisjOiBwYXJzZS1vcHRpb25zLmg6MjM2CiBtc2dpZCAiYmUgbW9yZSB2ZXJib3NlIgogbXNnc3RyICLmm7TliqDor6bnu4YiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyMzQKKyM6IHBhcnNlLW9wdGlvbnMuaDoyMzgKIG1zZ2lkICJiZSBtb3JlIHF1aWV0IgogbXNnc3RyICLmm7TliqDlronpnZkiCiAKLSM6IHBhcnNlLW9wdGlvbnMuaDoyNDAKKyM6IHBhcnNlLW9wdGlvbnMuaDoyNDQKIG1zZ2lkICJ1c2UgPG4+IGRpZ2l0cyB0byBkaXNwbGF5IFNIQS0xcyIKIG1zZ3N0ciAi55SoIDxuPiDkvY3mlbDlrZfmmL7npLogU0hBLTEg5ZOI5biM5YC8IgogCkBAIC05MDU0LDggKzkyOTksOCBAQAogbXNnc3RyICLnp7vliqjmiJbph43lkb3lkI3kuIDkuKrmlofku7bjgIHnm67lvZXmiJbnrKblj7fpk77mjqUiCiAKICM6IGNvbW1vbi1jbWRzLmg6MjEKLW1zZ2lkICJGZXRjaCBmcm9tIGFuZCBtZXJnZSB3aXRoIGFub3RoZXIgcmVwb3NpdG9yeSBvciBhIGxvY2FsIGJyYW5jaCIKLW1zZ3N0ciAi6I635Y+W5bm25ZCI5bm25Y+m5aSW55qE54mI5pys5bqT5oiW5LiA5Liq5pys5Zyw5YiG5pSvIgorbXNnaWQgIkZldGNoIGZyb20gYW5kIGludGVncmF0ZSB3aXRoIGFub3RoZXIgcmVwb3NpdG9yeSBvciBhIGxvY2FsIGJyYW5jaCIKK21zZ3N0ciAi6I635Y+W5bm25pW05ZCI5Y+m5aSW55qE54mI5pys5bqT5oiW5LiA5Liq5pys5Zyw5YiG5pSvIgogCiAjOiBjb21tb24tY21kcy5oOjIyCiBtc2dpZCAiVXBkYXRlIHJlbW90ZSByZWZzIGFsb25nIHdpdGggYXNzb2NpYXRlZCBvYmplY3RzIgpAQCAtOTA5OCwxMSArOTM0MywxMSBAQAogIzogZ2l0LWFtLnNoOjEwNQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgotIldoZW4geW91IGhhdmUgcmVzb2x2ZWQgdGhpcyBwcm9ibGVtLCBydW4gXCIkY21kbGluZSAtLXJlc29sdmVkXCIuXG4iCisiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcIiRjbWRsaW5lIC0tY29udGludWVcIi5cbiIKICJJZiB5b3UgcHJlZmVyIHRvIHNraXAgdGhpcyBwYXRjaCwgcnVuIFwiJGNtZGxpbmUgLS1za2lwXCIgaW5zdGVhZC5cbiIKICJUbyByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2ggYW5kIHN0b3AgcGF0Y2hpbmcsIHJ1biBcIiRjbWRsaW5lIC0tYWJvcnRcIi4iCiBtc2dzdHIgIiIKLSLlvZPmgqjop6PlhrPkuobmraTpl67popjlkI7vvIzmiafooYwgXCIkY21kbGluZSAtLXJlc29sdmVkXCLjgIJcbiIKKyLlvZPmgqjop6PlhrPkuobmraTpl67popjlkI7vvIzmiafooYwgXCIkY21kbGluZSAtLWNvbnRpbnVlXCLjgIJcbiIKICLlpoLmnpzmgqjmg7Pot7Pov4fmraTooaXkuIHvvIzliJnmiafooYwgXCIkY21kbGluZSAtLXNraXBcIuOAglxuIgogIuimgeaBouWkjeWOn+WIhuaUr+W5tuWBnOatouaJk+ihpeS4ge+8jOaJp+ihjCBcIiRjbWRsaW5lIC0tYWJvcnRcIuOAgiIKIApAQCAtOTE1NSwyNSArOTQwMCwzNCBAQAogIuWPguaVsCAtYi8tLWJpbmFyeSDlt7Lnu4/lvojplb/ml7bpl7TkuI3lgZrku7vkvZXlrp7otKjmk43kvZzkuobvvIzlubbkuJTlsIbooqvliKDpmaTjgIJcbiIKICLor7fkuI3opoHlho3kvb/nlKjlroPkuobjgIIiCiAKLSM6IGdpdC1hbS5zaDo0NzcKKyM6IGdpdC1hbS5zaDo0NzkKICMsIHNoLWZvcm1hdAogbXNnaWQgInByZXZpb3VzIHJlYmFzZSBkaXJlY3RvcnkgJGRvdGVzdCBzdGlsbCBleGlzdHMgYnV0IG1ib3ggZ2l2ZW4uIgotbXNnc3RyICLkuYvliY3nmoTlj5jln7rnm67lvZUgJGRvdGVzdCDku43nhLblrZjlnKjkvYbnu5nlh7rkuoZtYm9444CCIgorbXNnc3RyICLkuYvliY3nmoTlj5jln7rnm67lvZUgJGRvdGVzdCDku43nhLblrZjlnKjvvIzkvYbljbTmj5DkvpvkuoYgbWJveOOAgiIKIAotIzogZ2l0LWFtLnNoOjQ4MgorIzogZ2l0LWFtLnNoOjQ4NAogbXNnaWQgIlBsZWFzZSBtYWtlIHVwIHlvdXIgbWluZC4gLS1za2lwIG9yIC0tYWJvcnQ/IgogbXNnc3RyICLor7fkuIvlhrPlv4PjgIItLXNraXAg5oiW5pivIC0tYWJvcnQg77yfIgogCi0jOiBnaXQtYW0uc2g6NTA5CisjOiBnaXQtYW0uc2g6NTIwCisjLCBzaC1mb3JtYXQKK21zZ2lkICIiCisiU3RyYXkgJGRvdGVzdCBkaXJlY3RvcnkgZm91bmQuXG4iCisiVXNlIFwiZ2l0IGFtIC0tYWJvcnRcIiB0byByZW1vdmUgaXQuIgorbXNnc3RyICIiCisi5Y+R546w5LqG6ZSZ6K+v55qEICRkb3Rlc3Qg55uu5b2V44CCXG4iCisi5L2/55SoIFwiZ2l0IGFtIC0tYWJvcnRcIiDliKDpmaTlroPjgIIiCisKKyM6IGdpdC1hbS5zaDo1MjgKIG1zZ2lkICJSZXNvbHZlIG9wZXJhdGlvbiBub3QgaW4gcHJvZ3Jlc3MsIHdlIGFyZSBub3QgcmVzdW1pbmcuIgogbXNnc3RyICLop6PlhrPmk43kvZzmnKrov5vooYzvvIzmiJHku6zkuI3kvJrnu6fnu63jgIIiCiAKLSM6IGdpdC1hbS5zaDo1NzUKKyM6IGdpdC1hbS5zaDo1OTQKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRpcnR5IGluZGV4OiBjYW5ub3QgYXBwbHkgcGF0Y2hlcyAoZGlydHk6ICRmaWxlcykiCiBtc2dzdHIgIuiEj+eahOe0ouW8le+8muS4jeiDveW6lOeUqOihpeS4ge+8iOiEj+aWh+S7tu+8miRmaWxlc++8iSIKIAotIzogZ2l0LWFtLnNoOjY3OQorIzogZ2l0LWFtLnNoOjY5OAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIlBhdGNoIGlzIGVtcHR5LiAgV2FzIGl0IHNwbGl0IHdyb25nP1xuIgpAQCAtOTE4NCwxNSArOTQzOCwxNSBAQAogIuWmguaenOaCqOaDs+imgei3s+i/h+i/meS4quihpeS4ge+8jOaJp+ihjCBcIiRjbWRsaW5lIC0tc2tpcFwi44CCXG4iCiAi6KaB5oGi5aSN5Y6f5YiG5pSv5bm25YGc5q2i5omT6KGl5LiB77yM5omn6KGMIFwiJGNtZGxpbmUgLS1hYm9ydFwi44CCIgogCi0jOiBnaXQtYW0uc2g6NzA2CisjOiBnaXQtYW0uc2g6NzI1CiBtc2dpZCAiUGF0Y2ggZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLiIKIG1zZ3N0ciAi6KGl5LiB5Lit5rKh5pyJ5LiA5Liq5pyJ5pWI55qE6YKu5Lu25Zyw5Z2A44CCIgogCi0jOiBnaXQtYW0uc2g6NzUzCisjOiBnaXQtYW0uc2g6NzcyCiBtc2dpZCAiY2Fubm90IGJlIGludGVyYWN0aXZlIHdpdGhvdXQgc3RkaW4gY29ubmVjdGVkIHRvIGEgdGVybWluYWwuIgogbXNnc3RyICLmoIflh4bovpPlhaXmsqHmnInlkoznu4jnq6/lhbPogZTvvIzkuI3og73ov5vooYzkuqTkupLlvI/mk43kvZzjgIIiCiAKLSM6IGdpdC1hbS5zaDo3NTcKKyM6IGdpdC1hbS5zaDo3NzYKIG1zZ2lkICJDb21taXQgQm9keSBpczoiCiBtc2dzdHIgIuaPkOS6pOWGheWuueS4uu+8miIKIApAQCAtOTIwMCwxNiArOTQ1NCwxNiBAQAogIy4gVFJBTlNMQVRPUlM6IE1ha2Ugc3VyZSB0byBpbmNsdWRlIFt5XSwgW25dLCBbZV0sIFt2XSBhbmQgW2FdCiAjLiBpbiB5b3VyIHRyYW5zbGF0aW9uLiBUaGUgcHJvZ3JhbSB3aWxsIG9ubHkgYWNjZXB0IEVuZ2xpc2gKICMuIGlucHV0IGF0IHRoaXMgcG9pbnQuCi0jOiBnaXQtYW0uc2g6NzY0CisjOiBnaXQtYW0uc2g6NzgzCiBtc2dpZCAiQXBwbHk/IFt5XWVzL1tuXW8vW2VdZGl0L1t2XWlldyBwYXRjaC9bYV1jY2VwdCBhbGwgIgogbXNnc3RyICLlupTnlKjvvJ9beV1lcy9bbl1vL1tlXWRpdC9bdl1pZXcgcGF0Y2gvW2FdY2NlcHQgYWxsICIKIAotIzogZ2l0LWFtLnNoOjgwMAorIzogZ2l0LWFtLnNoOjgxOQogIywgc2gtZm9ybWF0CiBtc2dpZCAiQXBwbHlpbmc6ICRGSVJTVExJTkUiCiBtc2dzdHIgIuato+W6lOeUqO+8miRGSVJTVExJTkUiCiAKLSM6IGdpdC1hbS5zaDo4MjEKKyM6IGdpdC1hbS5zaDo4NDAKIG1zZ2lkICIiCiAiTm8gY2hhbmdlcyAtIGRpZCB5b3UgZm9yZ2V0IHRvIHVzZSAnZ2l0IGFkZCc/XG4iCiAiSWYgdGhlcmUgaXMgbm90aGluZyBsZWZ0IHRvIHN0YWdlLCBjaGFuY2VzIGFyZSB0aGF0IHNvbWV0aGluZyBlbHNlXG4iCkBAIC05MjE5LDIyICs5NDczLDIyIEBACiAi5aaC5p6c5rKh5pyJ5LuA5LmI6KaB5re75Yqg5Yiw5pqC5a2Y5Yy655qE77yM5YiZ5b6I5Y+v6IO95piv5YW25a6D5o+Q5Lqk5bey57uP5byV5YWl5LqG55u45ZCM55qE5Y+Y5pu044CCXG4iCiAi5oKo5Lmf6K645oOz6KaB6Lez6L+H6L+Z5Liq6KGl5LiB44CCIgogCi0jOiBnaXQtYW0uc2g6ODI5CisjOiBnaXQtYW0uc2g6ODQ4CiBtc2dpZCAiIgogIllvdSBzdGlsbCBoYXZlIHVubWVyZ2VkIHBhdGhzIGluIHlvdXIgaW5kZXhcbiIKICJkaWQgeW91IGZvcmdldCB0byB1c2UgJ2dpdCBhZGQnPyIKIG1zZ3N0ciAi5oKo55qE57Si5byV5Lit5LuN5pyJ5pyq5ZCI5bm255qE6Lev5b6E44CC5oKo5piv5ZCm5b+Y5LqG5omn6KGMICdnaXQgYWRkJ++8nyIKIAotIzogZ2l0LWFtLnNoOjg0NQorIzogZ2l0LWFtLnNoOjg2NAogbXNnaWQgIk5vIGNoYW5nZXMgLS0gUGF0Y2ggYWxyZWFkeSBhcHBsaWVkLiIKIG1zZ3N0ciAi5rKh5pyJ5Y+Y5pu0IOKAlOKAlCDooaXkuIHlt7Lnu4/lupTnlKjov4fjgIIiCiAKLSM6IGdpdC1hbS5zaDo4NTUKKyM6IGdpdC1hbS5zaDo4NzQKICMsIHNoLWZvcm1hdAogbXNnaWQgIlBhdGNoIGZhaWxlZCBhdCAkbXNnbnVtICRGSVJTVExJTkUiCiBtc2dzdHIgIuihpeS4geWksei0peS6jiAkbXNnbnVtICRGSVJTVExJTkUiCiAKLSM6IGdpdC1hbS5zaDo4NTgKKyM6IGdpdC1hbS5zaDo4NzcKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJUaGUgY29weSBvZiB0aGUgcGF0Y2ggdGhhdCBmYWlsZWQgaXMgZm91bmQgaW46XG4iCkBAIC05MjQzLDcgKzk0OTcsNyBAQAogIuWksei0peeahOihpeS4geaWh+S7tuWJr+acrOS9jeS6ju+8mlxuIgogIiAgICRkb3Rlc3QvcGF0Y2giCiAKLSM6IGdpdC1hbS5zaDo4NzYKKyM6IGdpdC1hbS5zaDo4OTUKIG1zZ2lkICJhcHBseWluZyB0byBhbiBlbXB0eSBoaXN0b3J5IgogbXNnc3RyICLmraPlupTnlKjliLDkuIDkuKrnqbrljoblj7LkuIoiCiAKQEAgLTk0NDQsNyArOTY5OCw3IEBACiBtc2dpZCAiQ2Fubm90IHJlYmFzZSBvbnRvIG11bHRpcGxlIGJyYW5jaGVzIgogbXNnc3RyICLml6Dms5Xlj5jln7rliLDlpJrkuKrliIbmlK8iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTMKKyM6IGdpdC1yZWJhc2Uuc2g6NTQKIG1zZ2lkICIiCiAiV2hlbiB5b3UgaGF2ZSByZXNvbHZlZCB0aGlzIHByb2JsZW0sIHJ1biBcImdpdCByZWJhc2UgLS1jb250aW51ZVwiLlxuIgogIklmIHlvdSBwcmVmZXIgdG8gc2tpcCB0aGlzIHBhdGNoLCBydW4gXCJnaXQgcmViYXNlIC0tc2tpcFwiIGluc3RlYWQuXG4iCkBAIC05NDU1LDMxICs5NzA5LDUwIEBACiAi5aaC5p6c5oKo5oOz6Lez6L+H5q2k6KGl5LiB77yM5YiZ5omn6KGMIFwiZ2l0IHJlYmFzZSAtLXNraXBcIuOAglxuIgogIuimgeaBouWkjeWOn+WIhuaUr+W5tuWBnOatouWPmOWfuu+8jOaJp+ihjCBcImdpdCByZWJhc2UgLS1hYm9ydFwi44CCIgogCisjOiBnaXQtcmViYXNlLnNoOjE1NgorbXNnaWQgIkFwcGxpZWQgYXV0b3N0YXNoLiIKK21zZ3N0ciAi5oiQ5Yqf5bqU55SoIGF1dG9zdGFzaOOAgiIKKworIzogZ2l0LXJlYmFzZS5zaDoxNTkKKyMsIHNoLWZvcm1hdAorbXNnaWQgIkNhbm5vdCBzdG9yZSAkc3Rhc2hfc2hhMSIKK21zZ3N0ciAi5peg5rOV5L+d5a2YICRzdGFzaF9zaGExIgorCiAjOiBnaXQtcmViYXNlLnNoOjE2MAorbXNnaWQgIiIKKyJBcHBseWluZyBhdXRvc3Rhc2ggcmVzdWx0ZWQgaW4gY29uZmxpY3RzLlxuIgorIllvdXIgY2hhbmdlcyBhcmUgc2FmZSBpbiB0aGUgc3Rhc2guXG4iCisiWW91IGNhbiBydW4gXCJnaXQgc3Rhc2ggcG9wXCIgb3IgXCJnaXQgc3Rhc2ggZHJvcFwiIGl0IGF0IGFueSB0aW1lLlxuIgorbXNnc3RyICIiCisi5bqU55SoIGF1dG9zdGFzaCDlr7zoh7TlhrLnqoHjgIJcbiIKKyLmgqjnmoTkv67mlLnlronlhajlnLDkv53lrZjlnKggc3Rhc2gg5Lit44CCXG4iCisi5oKo5Y+v5Lul5Zyo5Lu75L2V5pe25YCZ6L+Q6KGMIFwiZ2l0IHN0YXNoIHBvcFwiIOaIliBcImdpdCBzdGFzaCBkcm9wXCLjgIJcbiIKKworIzogZ2l0LXJlYmFzZS5zaDoxOTAKIG1zZ2lkICJUaGUgcHJlLXJlYmFzZSBob29rIHJlZnVzZWQgdG8gcmViYXNlLiIKIG1zZ3N0ciAi6ZKp5a2QIHByZS1yZWJhc2Ug5ouS57ud5Y+Y5Z+644CCIgogCi0jOiBnaXQtcmViYXNlLnNoOjE2NQorIzogZ2l0LXJlYmFzZS5zaDoxOTUKIG1zZ2lkICJJdCBsb29rcyBsaWtlIGdpdC1hbSBpcyBpbiBwcm9ncmVzcy4gQ2Fubm90IHJlYmFzZS4iCiBtc2dzdHIgIuS8vOS5juato+WkhOS6juWcqCBnaXQtYW0g55qE5omn6KGM6L+H56iL5Lit44CC5peg5rOV5Y+Y5Z+644CCIgogCi0jOiBnaXQtcmViYXNlLnNoOjI5NgorIzogZ2l0LXJlYmFzZS5zaDozMjkKIG1zZ2lkICJUaGUgLS1leGVjIG9wdGlvbiBtdXN0IGJlIHVzZWQgd2l0aCB0aGUgLS1pbnRlcmFjdGl2ZSBvcHRpb24iCiBtc2dzdHIgIumAiemhuSAtLWV4ZWMg5b+F6aG75ZKM6YCJ6aG5IC0taW50ZXJhY3RpdmUg5ZCM5pe25L2/55SoIgogCi0jOiBnaXQtcmViYXNlLnNoOjMwMQorIzogZ2l0LXJlYmFzZS5zaDozMzQKIG1zZ2lkICJObyByZWJhc2UgaW4gcHJvZ3Jlc3M/IgogbXNnc3RyICLmsqHmnInmraPlnKjov5vooYznmoTlj5jln7rvvJ8iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MzEyCisjOiBnaXQtcmViYXNlLnNoOjM0NQogbXNnaWQgIlRoZSAtLWVkaXQtdG9kbyBhY3Rpb24gY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgaW50ZXJhY3RpdmUgcmViYXNlLiIKIG1zZ3N0ciAi5Yqo5L2cIC0tZWRpdC10b2RvIOWPquiDveeUqOWcqOS6pOS6kuW8j+WPmOWfuui/h+eoi+S4reOAgiIKIAotIzogZ2l0LXJlYmFzZS5zaDozMTkKKyM6IGdpdC1yZWJhc2Uuc2g6MzUyCiBtc2dpZCAiQ2Fubm90IHJlYWQgSEVBRCIKIG1zZ3N0ciAi5LiN6IO96K+75Y+WIEhFQUQiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6MzIyCisjOiBnaXQtcmViYXNlLnNoOjM1NQogbXNnaWQgIiIKICJZb3UgbXVzdCBlZGl0IGFsbCBtZXJnZSBjb25mbGljdHMgYW5kIHRoZW5cbiIKICJtYXJrIHRoZW0gYXMgcmVzb2x2ZWQgdXNpbmcgZ2l0IGFkZCIKQEAgLTk0ODcsMTIgKzk3NjAsMTIgQEAKICLmgqjlv4XpobvnvJbovpHmiYDmnInnmoTlkIjlubblhrLnqoHvvIznhLblkI7pgJrov4cgZ2l0IGFkZFxuIgogIuWRveS7pOWwhuWug+S7rOagh+iusOS4uuW3suino+WGsyIKIAotIzogZ2l0LXJlYmFzZS5zaDozNDAKKyM6IGdpdC1yZWJhc2Uuc2g6MzczCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3QgbW92ZSBiYWNrIHRvICRoZWFkX25hbWUiCiBtc2dzdHIgIuaXoOazleenu+WbniAkaGVhZF9uYW1lIgogCi0jOiBnaXQtcmViYXNlLnNoOjM1OQorIzogZ2l0LXJlYmFzZS5zaDozOTIKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJJdCBzZWVtcyB0aGF0IHRoZXJlIGlzIGFscmVhZHkgYSAkc3RhdGVfZGlyX2Jhc2UgZGlyZWN0b3J5LCBhbmRcbiIKQEAgLTk1MTEsNTYgKzk3ODQsNjUgQEAKICJcdCRjbWRfY2xlYXJfc3RhbGVfcmViYXNlXG4iCiAi54S25ZCO5YaN6YeN5paw5omn6KGM5Y+Y5Z+644CC5Li66YG/5YWN5oKo5Lii5aSx6YeN6KaB5pWw5o2u77yM5oiR5bey57uP5YGc5q2i5b2T5YmN5pON5L2c44CCIgogCi0jOiBnaXQtcmViYXNlLnNoOjQwNAorIzogZ2l0LXJlYmFzZS5zaDo0MzcKICMsIHNoLWZvcm1hdAogbXNnaWQgImludmFsaWQgdXBzdHJlYW0gJHVwc3RyZWFtX25hbWUiCiBtc2dzdHIgIuaXoOaViOeahOS4iua4uCAkdXBzdHJlYW1fbmFtZSIKIAotIzogZ2l0LXJlYmFzZS5zaDo0MjgKKyM6IGdpdC1yZWJhc2Uuc2g6NDYxCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIkb250b19uYW1lOiB0aGVyZSBhcmUgbW9yZSB0aGFuIG9uZSBtZXJnZSBiYXNlcyIKIG1zZ3N0ciAiJG9udG9fbmFtZTog5pyJ5LiA5Liq5Lul5LiK55qE5ZCI5bm25Z+65YeGIgogCi0jOiBnaXQtcmViYXNlLnNoOjQzMSBnaXQtcmViYXNlLnNoOjQzNQorIzogZ2l0LXJlYmFzZS5zaDo0NjQgZ2l0LXJlYmFzZS5zaDo0NjgKICMsIHNoLWZvcm1hdAogbXNnaWQgIiRvbnRvX25hbWU6IHRoZXJlIGlzIG5vIG1lcmdlIGJhc2UiCiBtc2dzdHIgIiRvbnRvX25hbWU6IOayoeacieWQiOW5tuWfuuWHhiIKIAotIzogZ2l0LXJlYmFzZS5zaDo0NDAKKyM6IGdpdC1yZWJhc2Uuc2g6NDczCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJEb2VzIG5vdCBwb2ludCB0byBhIHZhbGlkIGNvbW1pdDogJG9udG9fbmFtZSIKIG1zZ3N0ciAi5rKh5pyJ5oyH5ZCR5LiA5Liq5pyJ5pWI55qE5o+Q5Lqk77yaJG9udG9fbmFtZSIKIAotIzogZ2l0LXJlYmFzZS5zaDo0NjMKKyM6IGdpdC1yZWJhc2Uuc2g6NDk2CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJmYXRhbDogbm8gc3VjaCBicmFuY2g6ICRicmFuY2hfbmFtZSIKIG1zZ3N0ciAi5Lil6YeN6ZSZ6K+v77ya5peg5q2k5YiG5pSv77yaJGJyYW5jaF9uYW1lIgogCi0jOiBnaXQtcmViYXNlLnNoOjQ4MworIzogZ2l0LXJlYmFzZS5zaDo1MTkKK21zZ2lkICJDYW5ub3QgYXV0b3N0YXNoIgorbXNnc3RyICLml6Dms5UgYXV0b3N0YXNoIgorCisjOiBnaXQtcmViYXNlLnNoOjUyNAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ3JlYXRlZCBhdXRvc3Rhc2g6ICRzdGFzaF9hYmJyZXYiCittc2dzdHIgIuWIm+W7uuS6hiBhdXRvc3Rhc2g6ICRzdGFzaF9hYmJyZXYiCisKKyM6IGdpdC1yZWJhc2Uuc2g6NTI4CiBtc2dpZCAiUGxlYXNlIGNvbW1pdCBvciBzdGFzaCB0aGVtLiIKIG1zZ3N0ciAi6K+35o+Q5Lqk5oiW5Li65a6D5Lus5L+d5a2Y6L+b5bqm44CCIgogCi0jOiBnaXQtcmViYXNlLnNoOjUwMQorIzogZ2l0LXJlYmFzZS5zaDo1NDgKICMsIHNoLWZvcm1hdAogbXNnaWQgIkN1cnJlbnQgYnJhbmNoICRicmFuY2hfbmFtZSBpcyB1cCB0byBkYXRlLiIKIG1zZ3N0ciAi5b2T5YmN5YiG5pSvICRicmFuY2hfbmFtZSDmmK/mnIDmlrDnmoTjgIIiCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTA0CisjOiBnaXQtcmViYXNlLnNoOjU1MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ3VycmVudCBicmFuY2ggJGJyYW5jaF9uYW1lIGlzIHVwIHRvIGRhdGUsIHJlYmFzZSBmb3JjZWQuIgogbXNnc3RyICLlvZPliY3liIbmlK8gJGJyYW5jaF9uYW1lIOaYr+acgOaWsOeahO+8jOW8uuWItuWPmOWfuuOAgiIKIAotIzogZ2l0LXJlYmFzZS5zaDo1MTUKKyM6IGdpdC1yZWJhc2Uuc2g6NTYzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJDaGFuZ2VzIGZyb20gJG1iIHRvICRvbnRvOiIKIG1zZ3N0ciAi5Y+Y5pu05LuOICRtYiDliLAgJG9udG/vvJoiCiAKICMuIERldGFjaCBIRUFEIGFuZCByZXNldCB0aGUgdHJlZQotIzogZ2l0LXJlYmFzZS5zaDo1MjQKKyM6IGdpdC1yZWJhc2Uuc2g6NTcyCiBtc2dpZCAiRmlyc3QsIHJld2luZGluZyBoZWFkIHRvIHJlcGxheSB5b3VyIHdvcmsgb24gdG9wIG9mIGl0Li4uIgogbXNnc3RyICLpppblhYjvvIzph43nva7lpLTmjIfpkojku6Xkvr/lnKjkuIrpnaLph43mlL7mgqjnmoTlt6XkvZwuLi4iCiAKLSM6IGdpdC1yZWJhc2Uuc2g6NTMyCisjOiBnaXQtcmViYXNlLnNoOjU4MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFzdC1mb3J3YXJkZWQgJGJyYW5jaF9uYW1lIHRvICRvbnRvX25hbWUuIgogbXNnc3RyICLlv6vov5sgJGJyYW5jaF9uYW1lIOiHsyAkb250b19uYW1l44CCIgpAQCAtOTU5Myw2ICs5ODc1LDExIEBACiBtc2dpZCAiQ2Fubm90IHJlY29yZCB3b3JraW5nIHRyZWUgc3RhdGUiCiBtc2dzdHIgIuS4jeiDveiusOW9leW3peS9nOWMuueKtuaAgSIKIAorIzogZ2l0LXN0YXNoLnNoOjE5MAorIywgc2gtZm9ybWF0Cittc2dpZCAiQ2Fubm90IHVwZGF0ZSAkcmVmX3N0YXNoIHdpdGggJHdfY29tbWl0IgorbXNnc3RyICLml6Dms5XnlKggJHdfY29tbWl0IOabtOaWsCAkcmVmX3N0YXNoIgorCiAjLiBUUkFOU0xBVE9SUzogJG9wdGlvbiBpcyBhbiBpbnZhbGlkIG9wdGlvbiwgbGlrZQogIy4gYC0tYmxhaC1ibGFoJy4gVGhlIDcgc3BhY2VzIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlCiAjLiBzZWNvbmQgbGluZSBjb3JyZXNwb25kIHRvICJlcnJvcjogIi4gU28geW91IHNob3VsZCBsaW5lCkBAIC05NjAzLDcgKzk4OTAsNyBAQAogIy4gJCBnaXQgc3Rhc2ggc2F2ZSAtLWJsYWgtYmxhaCAyPiYxIHwgaGVhZCAtbiAyCiAjLiBlcnJvcjogdW5rbm93biBvcHRpb24gZm9yICdzdGFzaCBzYXZlJzogLS1ibGFoLWJsYWgKICMuIFRvIHByb3ZpZGUgYSBtZXNzYWdlLCB1c2UgZ2l0IHN0YXNoIHNhdmUgLS0gJy0tYmxhaC1ibGFoJwotIzogZ2l0LXN0YXNoLnNoOjIwMgorIzogZ2l0LXN0YXNoLnNoOjI0MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogImVycm9yOiB1bmtub3duIG9wdGlvbiBmb3IgJ3N0YXNoIHNhdmUnOiAkb3B0aW9uXG4iCkBAIC05NjEyLDExOSArOTg5OSwxMzQgQEAKICLplJnor6/vvJonc3Rhc2ggc2F2ZScg55qE5pyq55+l6YCJ6aG577yaJG9wdGlvblxuIgogIiAgICAgIOimgeaPkOS+m+S4gOS4quaPj+i/sOS/oeaBr++8jOS9v+eUqCBnaXQgc3Rhc2ggc2F2ZSAtLSAnJG9wdGlvbiciCiAKLSM6IGdpdC1zdGFzaC5zaDoyMjMKKyM6IGdpdC1zdGFzaC5zaDoyNjIKIG1zZ2lkICJObyBsb2NhbCBjaGFuZ2VzIHRvIHNhdmUiCiBtc2dzdHIgIuayoeacieimgeS/neWtmOeahOacrOWcsOS/ruaUuSIKIAotIzogZ2l0LXN0YXNoLnNoOjIyNworIzogZ2l0LXN0YXNoLnNoOjI2OAorbXNnaWQgIiIKKyJUaGUgZm9sbG93aW5nIHVudHJhY2tlZCBmaWxlcyB3b3VsZCBOT1QgYmUgc2F2ZWQgYnV0IG5lZWQgdG8gYmUgcmVtb3ZlZCBieSAiCisic3Rhc2ggc2F2ZToiCittc2dzdHIgIuWmguS4i+acqui3n+i4quaWh+S7tuWwhuS4jeS8muiiq+S/neWtmOS9huaYr+WwhuS8muWboOS4uui/m+W6puS/neWtmOiAjOmcgOimgeiiq+WIoOmZpO+8miIKKworIzogZ2l0LXN0YXNoLnNoOjI3MAorbXNnaWQgIiIKKyJBYm9ydGluZy4gQ29uc2lkZXIgdXNpbmcgZWl0aGVyIHRoZSAtLWZvcmNlIG9yIC0taW5jbHVkZS11bnRyYWNrZWQgb3B0aW9uLiIKK21zZ3N0ciAi57uI5q2i44CC6ICD6JmR5L2/55SoIC0tZm9yY2Ug5oiW6ICFIC0taW5jbHVkZS11bnRyYWNrZWQg6YCJ6aG544CCIgorCisjOiBnaXQtc3Rhc2guc2g6Mjc0CiBtc2dpZCAiQ2Fubm90IGluaXRpYWxpemUgc3Rhc2giCiBtc2dzdHIgIuaXoOazleWIneWni+WMliBzdGFzaCIKIAotIzogZ2l0LXN0YXNoLnNoOjIzNQorIzogZ2l0LXN0YXNoLnNoOjI3OAogbXNnaWQgIkNhbm5vdCBzYXZlIHRoZSBjdXJyZW50IHN0YXR1cyIKIG1zZ3N0ciAi5peg5rOV5L+d5a2Y5b2T5YmN54q25oCBIgogCi0jOiBnaXQtc3Rhc2guc2g6MjUzCisjOiBnaXQtc3Rhc2guc2g6Mjk2CiBtc2dpZCAiQ2Fubm90IHJlbW92ZSB3b3JrdHJlZSBjaGFuZ2VzIgogbXNnc3RyICLml6Dms5XliKDpmaTlt6XkvZzljLrlj5jmm7QiCiAKLSM6IGdpdC1zdGFzaC5zaDozNTIKKyM6IGdpdC1zdGFzaC5zaDozOTUKIG1zZ2lkICJObyBzdGFzaCBmb3VuZC4iCiBtc2dzdHIgIuacquWPkeeOsCBzdGFzaOOAgiIKIAotIzogZ2l0LXN0YXNoLnNoOjM1OQorIzogZ2l0LXN0YXNoLnNoOjQwMgogIywgc2gtZm9ybWF0CiBtc2dpZCAiVG9vIG1hbnkgcmV2aXNpb25zIHNwZWNpZmllZDogJFJFViIKIG1zZ3N0ciAi5oyH5a6a5LqG5aSq5aSa55qE54mI5pys77yaJFJFViIKIAotIzogZ2l0LXN0YXNoLnNoOjM2NQorIzogZ2l0LXN0YXNoLnNoOjQwOAogIywgc2gtZm9ybWF0CiBtc2dpZCAiJHJlZmVyZW5jZSBpcyBub3QgdmFsaWQgcmVmZXJlbmNlIgogbXNnc3RyICIkcmVmZXJlbmNlIOS4jeaYr+acieaViOeahOW8leeUqCIKIAotIzogZ2l0LXN0YXNoLnNoOjM5MworIzogZ2l0LXN0YXNoLnNoOjQzNgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJyRhcmdzJyBpcyBub3QgYSBzdGFzaC1saWtlIGNvbW1pdCIKIG1zZ3N0ciAiJyRhcmdzJyDkuI3mmK8gc3Rhc2gg5qC35o+Q5LqkIgogCi0jOiBnaXQtc3Rhc2guc2g6NDA0CisjOiBnaXQtc3Rhc2guc2g6NDQ3CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJGFyZ3MnIGlzIG5vdCBhIHN0YXNoIHJlZmVyZW5jZSIKIG1zZ3N0ciAiJyRhcmdzJyDkuI3mmK/kuIDkuKogc3Rhc2gg5byV55SoIgogCi0jOiBnaXQtc3Rhc2guc2g6NDEyCisjOiBnaXQtc3Rhc2guc2g6NDU1CiBtc2dpZCAidW5hYmxlIHRvIHJlZnJlc2ggaW5kZXgiCiBtc2dzdHIgIuaXoOazleWIt+aWsOe0ouW8lSIKIAotIzogZ2l0LXN0YXNoLnNoOjQxNgorIzogZ2l0LXN0YXNoLnNoOjQ1OQogbXNnaWQgIkNhbm5vdCBhcHBseSBhIHN0YXNoIGluIHRoZSBtaWRkbGUgb2YgYSBtZXJnZSIKIG1zZ3N0ciAi5peg5rOV5Zyo5ZCI5bm26L+H56iL5Lit5oGi5aSN6L+b5bqmIgogCi0jOiBnaXQtc3Rhc2guc2g6NDI0CisjOiBnaXQtc3Rhc2guc2g6NDY3CiBtc2dpZCAiQ29uZmxpY3RzIGluIGluZGV4LiBUcnkgd2l0aG91dCAtLWluZGV4LiIKIG1zZ3N0ciAi57Si5byV5Lit5pyJ5Yay56qB44CC5bCd6K+V5LiN5L2/55SoIC0taW5kZXjjgIIiCiAKLSM6IGdpdC1zdGFzaC5zaDo0MjYKKyM6IGdpdC1zdGFzaC5zaDo0NjkKIG1zZ2lkICJDb3VsZCBub3Qgc2F2ZSBpbmRleCB0cmVlIgogbXNnc3RyICLkuI3og73kv53lrZjntKLlvJXmoJEiCiAKLSM6IGdpdC1zdGFzaC5zaDo0NjAKKyM6IGdpdC1zdGFzaC5zaDo1MDMKIG1zZ2lkICJDYW5ub3QgdW5zdGFnZSBtb2RpZmllZCBmaWxlcyIKIG1zZ3N0ciAi5peg5rOV6L+Y5Y6f5L+u5pS555qE5paH5Lu2IgogCi0jOiBnaXQtc3Rhc2guc2g6NDc1CisjOiBnaXQtc3Rhc2guc2g6NTE4CiBtc2dpZCAiSW5kZXggd2FzIG5vdCB1bnN0YXNoZWQuIgogbXNnc3RyICLntKLlvJXnmoTov5vluqbmsqHmnInooqvmgaLlpI3jgIIiCiAKLSM6IGdpdC1zdGFzaC5zaDo0OTIKKyM6IGdpdC1zdGFzaC5zaDo1MzUKICMsIHNoLWZvcm1hdAogbXNnaWQgIkRyb3BwZWQgJHtSRVZ9ICgkcykiCiBtc2dzdHIgIuS4ouW8g+S6hiAke1JFVn0gKCRzKSIKIAotIzogZ2l0LXN0YXNoLnNoOjQ5MworIzogZ2l0LXN0YXNoLnNoOjUzNgogIywgc2gtZm9ybWF0CiBtc2dpZCAiJHtSRVZ9OiBDb3VsZCBub3QgZHJvcCBzdGFzaCBlbnRyeSIKIG1zZ3N0ciAiJHtSRVZ977ya5LiN6IO95Lii5byD6L+b5bqm5p2h55uuIgogCi0jOiBnaXQtc3Rhc2guc2g6NTAwCisjOiBnaXQtc3Rhc2guc2g6NTQzCiBtc2dpZCAiTm8gYnJhbmNoIG5hbWUgc3BlY2lmaWVkIgogbXNnc3RyICLmnKrmjIflrprliIbmlK/lkI0iCiAKLSM6IGdpdC1zdGFzaC5zaDo1NzEKKyM6IGdpdC1zdGFzaC5zaDo2MTUKIG1zZ2lkICIoVG8gcmVzdG9yZSB0aGVtIHR5cGUgXCJnaXQgc3Rhc2ggYXBwbHlcIikiCiBtc2dzdHIgIu+8iOS4uuaBouWkjeaVsOaNrui+k+WFpSBcImdpdCBzdGFzaCBhcHBseVwi77yJIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjkxCisjOiBnaXQtc3VibW9kdWxlLnNoOjk1CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJjYW5ub3Qgc3RyaXAgb25lIGNvbXBvbmVudCBvZmYgdXJsICckcmVtb3RldXJsJyIKIG1zZ3N0ciAi5peg5rOV5LuOIHVybCAnJHJlbW90ZXVybCcg5Yml56a75LiA5Liq57uE5Lu2IgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjE5NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDoyMzcKICMsIHNoLWZvcm1hdAogbXNnaWQgIk5vIHN1Ym1vZHVsZSBtYXBwaW5nIGZvdW5kIGluIC5naXRtb2R1bGVzIGZvciBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIuacquWcqCAuZ2l0bW9kdWxlcyDkuK3lj5HnjrDot6/lvoQgJyRzbV9wYXRoJyDnmoTlrZDmqKHnu4TmmKDlsIQiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjM5CisjOiBnaXQtc3VibW9kdWxlLnNoOjI4MQogIywgc2gtZm9ybWF0CiBtc2dpZCAiQ2xvbmUgb2YgJyR1cmwnIGludG8gc3VibW9kdWxlIHBhdGggJyRzbV9wYXRoJyBmYWlsZWQiCiBtc2dzdHIgIuaXoOazleWFi+mahiAnJHVybCcg5Yiw5a2Q5qih57uE6Lev5b6EICckc21fcGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MjUxCisjOiBnaXQtc3VibW9kdWxlLnNoOjI5MwogIywgc2gtZm9ybWF0CiBtc2dpZCAiR2l0ZGlyICckYScgaXMgcGFydCBvZiB0aGUgc3VibW9kdWxlIHBhdGggJyRiJyBvciB2aWNlIHZlcnNhIgogbXNnc3RyICJHaXRkaXIgJyRhJyDlnKjlrZDmqKHnu4Tot6/lvoQgJyRiJyDkuYvkuIvmiJbnm7jlj40iCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MzQ5CisjOiBnaXQtc3VibW9kdWxlLnNoOjQwMworbXNnaWQgIlJlbGF0aXZlIHBhdGggY2FuIG9ubHkgYmUgdXNlZCBmcm9tIHRoZSB0b3BsZXZlbCBvZiB0aGUgd29ya2luZyB0cmVlIgorbXNnc3RyICLlj6rog73lnKjlt6XkvZzljLrnmoTpobbnuqfnm67lvZXkuK3kvb/nlKjnm7jlr7not6/lvoQiCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDEzCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJyZXBvIFVSTDogJyRyZXBvJyBtdXN0IGJlIGFic29sdXRlIG9yIGJlZ2luIHdpdGggLi98Li4vIgogbXNnc3RyICLniYjmnKzlupNVUkzvvJonJHJlcG8nIOW/hemhu+aYr+e7neWvuei3r+W+hOaIluS7pSAuL3wuLi8g6LW35aeLIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjM2NgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MzAKICMsIHNoLWZvcm1hdAogbXNnaWQgIickc21fcGF0aCcgYWxyZWFkeSBleGlzdHMgaW4gdGhlIGluZGV4IgogbXNnc3RyICInJHNtX3BhdGgnIOW3sue7j+WtmOWcqOS6jue0ouW8leS4rSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozNzAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDM0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCiAiVGhlIGZvbGxvd2luZyBwYXRoIGlzIGlnbm9yZWQgYnkgb25lIG9mIHlvdXIgLmdpdGlnbm9yZSBmaWxlczpcbiIKQEAgLTk3MzUsMjQxICsxMDAzNywzNDUgQEAKICIkc21fcGF0aFxuIgogIuWmguaenOaCqOehruWunuaDs+a3u+WKoOWug++8jOS9v+eUqCAtZiDlj4LmlbDjgIIiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6Mzg4CisjOiBnaXQtc3VibW9kdWxlLnNoOjQ1MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiQWRkaW5nIGV4aXN0aW5nIHJlcG8gYXQgJyRzbV9wYXRoJyB0byB0aGUgaW5kZXgiCiBtc2dzdHIgIua3u+WKoOS9jeS6jiAnJHNtX3BhdGgnIOeahOeOsOWtmOeJiOacrOW6k+WIsOe0ouW8lSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDU0CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICInJHNtX3BhdGgnIGFscmVhZHkgZXhpc3RzIGFuZCBpcyBub3QgYSB2YWxpZCBnaXQgcmVwbyIKIG1zZ3N0ciAiJyRzbV9wYXRoJyDlt7LlrZjlnKjkuJTkuI3mmK/kuIDkuKrmnInmlYjnmoQgZ2l0IOeJiOacrOW6kyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDozOTgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDYyCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJBIGdpdCBkaXJlY3RvcnkgZm9yICckc21fbmFtZScgaXMgZm91bmQgbG9jYWxseSB3aXRoIHJlbW90ZShzKToiCiBtc2dzdHIgIuacrOWcsOWPkeeOsCAnJHNtX25hbWUnIOeahOS4gOS4qiBnaXQg55uu5b2V77yM5LiO5YW25a+55bqU55qE6L+c56iL54mI5pys5bqT77yaIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwMAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjQKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJJZiB5b3Ugd2FudCB0byByZXVzZSB0aGlzIGxvY2FsIGdpdCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjbG9uaW5nIGFnYWluIGZyb20iCiBtc2dzdHIgIuWmguaenOaCqOaDs+mHjeeUqOatpOacrOWcsCBnaXQg55uu5b2V6ICM5LiN5piv6YeN5paw5YWL6ZqG6IeqIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwMgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjYKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJ1c2UgdGhlICctLWZvcmNlJyBvcHRpb24uIElmIHRoZSBsb2NhbCBnaXQgZGlyZWN0b3J5IGlzIG5vdCB0aGUgY29ycmVjdCByZXBvIgogbXNnc3RyICLkvb/nlKggJy0tZm9yY2UnIOWPguaVsOOAguWmguaenOacrOWcsCBnaXQg55uu5b2V5LiN5piv5q2j56Gu55qE54mI5pys5bqTIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQwMworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NjcKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKICJvciB5b3UgYXJlIHVuc3VyZSB3aGF0IHRoaXMgbWVhbnMgY2hvb3NlIGFub3RoZXIgbmFtZSB3aXRoIHRoZSAnLS1uYW1lJyAiCiAib3B0aW9uLiIKIG1zZ3N0ciAi5oiW6ICF5oKo5LiN56Gu5a6a5YW25Lit5ZCr5LmJ5L2/55SoICctLW5hbWUnIOWPguaVsOmAieaLqeWPpuWkluS4gOS4quWQjeensOOAgiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0MDUKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NDY5CiAjLCBzaC1mb3JtYXQKIG1zZ2lkICJSZWFjdGl2YXRpbmcgbG9jYWwgZ2l0IGRpcmVjdG9yeSBmb3Igc3VibW9kdWxlICckc21fbmFtZScuIgogbXNnc3RyICLmv4DmtLvmnKzlnLAgZ2l0IOebruW9leWIsOWtkOaooee7hCAnJHNtX25hbWUn44CCIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjQxNworIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODEKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVuYWJsZSB0byBjaGVja291dCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5LiN6IO95qOA5Ye65a2Q5qih57uEICckc21fcGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDIyCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ4NgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIGFkZCBzdWJtb2R1bGUgJyRzbV9wYXRoJyIKIG1zZ3N0ciAi5peg5rOV5re75Yqg5a2Q5qih57uEICckc21fcGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NDMxCisjOiBnaXQtc3VibW9kdWxlLnNoOjQ5NQogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlZ2lzdGVyIHN1Ym1vZHVsZSAnJHNtX3BhdGgnIgogbXNnc3RyICLml6Dms5Xms6jlhozlrZDmqKHnu4QgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0NzQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTM5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJFbnRlcmluZyAnJHByZWZpeCRzbV9wYXRoJyIKLW1zZ3N0ciAi5q2j5Zyo6L+b5YWlICckcHJlZml4JHNtX3BhdGgnIgorbXNnaWQgIkVudGVyaW5nICckcHJlZml4JGRpc3BsYXlwYXRoJyIKK21zZ3N0ciAi5q2j5Zyo6L+b5YWlICckcHJlZml4JGRpc3BsYXlwYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo0ODgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NTU0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdG9wcGluZyBhdCAnJHNtX3BhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKLW1zZ3N0ciAi5YGc5q2i5LqOICckc21fcGF0aCfvvIzohJrmnKzov5Tlm57pnZ7pm7blgLzjgIIiCittc2dpZCAiU3RvcHBpbmcgYXQgJyRwcmVmaXgkZGlzcGxheXBhdGgnOyBzY3JpcHQgcmV0dXJuZWQgbm9uLXplcm8gc3RhdHVzLiIKK21zZ3N0ciAi5YGc5q2i5LqOICckcHJlZml4JGRpc3BsYXlwYXRoJ++8jOiEmuacrOi/lOWbnumdnumbtuWAvOOAgiIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1MzIKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjAwCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJObyB1cmwgZm91bmQgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCcgaW4gLmdpdG1vZHVsZXMiCi1tc2dzdHIgIuWcqCAuZ2l0bW9kdWxlcyDkuK3mnKrmib7liLDlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyDnmoQgdXJsIgorbXNnaWQgIk5vIHVybCBmb3VuZCBmb3Igc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCcgaW4gLmdpdG1vZHVsZXMiCittc2dzdHIgIuWcqCAuZ2l0bW9kdWxlcyDkuK3mnKrmib7liLDlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCcg55qEIHVybCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjA5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXJsIGZvciBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5XkuLrlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyDms6jlhowgdXJsIgorbXNnaWQgIkZhaWxlZCB0byByZWdpc3RlciB1cmwgZm9yIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLml6Dms5XkuLrlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCcg5rOo5YaMIHVybCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NDMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjExCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgJyRuYW1lJyAoJHVybCkgcmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICLlrZDmqKHnu4QgJyRuYW1lJyAoJHVybCkg5bey5Li66Lev5b6EICckc21fcGF0aCcg5rOo5YaMIgorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSByZWdpc3RlcmVkIGZvciBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLlrZDmqKHnu4QgJyRuYW1lJyAoJHVybCkg5pyq5a+56Lev5b6EICckZGlzcGxheXBhdGgnIOazqOWGjCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo1NTEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjE5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCi1tc2dzdHIgIuaXoOazleS4uuWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOazqOWGjOabtOaWsOaooeW8jyIKK21zZ2lkICJGYWlsZWQgdG8gcmVnaXN0ZXIgdXBkYXRlIG1vZGUgZm9yIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLml6Dms5XkuLrlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCcg5rOo5YaM5pu05paw5qih5byPIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjU4OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo2NTYKICMsIHNoLWZvcm1hdAogbXNnaWQgIlVzZSAnLicgaWYgeW91IHJlYWxseSB3YW50IHRvIGRlaW5pdGlhbGl6ZSBhbGwgc3VibW9kdWxlcyIKIG1zZ3N0ciAi5L2/55SoICcuJyDlpoLmnpzmgqjnnJ/nmoTmg7PopoHlr7nmiYDmnInlrZDmqKHnu4Tlj5bmtojliJ3lp4vljJYiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjAzCisjOiBnaXQtc3VibW9kdWxlLnNoOjY3MwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiCi1tc2dzdHIgIuWtkOaooee7hOW3peS9nOWMuiAnJHNtX3BhdGgnIOWMheWQq+S4gOS4qiAuZ2l0IOebruW9lSIKK21zZ2lkICJTdWJtb2R1bGUgd29yayB0cmVlICckZGlzcGxheXBhdGgnIGNvbnRhaW5zIGEgLmdpdCBkaXJlY3RvcnkiCittc2dzdHIgIuWtkOaooee7hOW3peS9nOWMuiAnJGRpc3BsYXlwYXRoJyDljIXlkKvkuIDkuKogLmdpdCDnm67lvZUiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjA0CisjOiBnaXQtc3VibW9kdWxlLnNoOjY3NAogIywgc2gtZm9ybWF0CiBtc2dpZCAiIgogIih1c2UgJ3JtIC1yZicgaWYgeW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSBpdCBpbmNsdWRpbmcgYWxsIG9mIGl0cyBoaXN0b3J5KSIKIG1zZ3N0ciAi77yI5L2/55SoICdybSAtcmYnIOWRveS7pOWmguaenOaCqOecn+eahOaDs+WIoOmZpOWug+WPiuWFtuWFqOmDqOWOhuWPsu+8iSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTAKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjgwCiAjLCBzaC1mb3JtYXQKIG1zZ2lkICIiCi0iU3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvICIKKyJTdWJtb2R1bGUgd29yayB0cmVlICckZGlzcGxheXBhdGgnIGNvbnRhaW5zIGxvY2FsIG1vZGlmaWNhdGlvbnM7IHVzZSAnLWYnIHRvICIKICJkaXNjYXJkIHRoZW0iCi1tc2dzdHIgIuWtkOaooee7hOW3peS9nOWMuiAnJHNtX3BhdGgnIOWMheWQq+acrOWcsOS/ruaUue+8m+S9v+eUqCAnLWYnIOS4ouW8g+Wug+S7rCIKK21zZ3N0ciAi5a2Q5qih57uE5bel5L2c5Yy6ICckZGlzcGxheXBhdGgnIOWMheWQq+acrOWcsOS/ruaUue+8m+S9v+eUqCAnLWYnIOS4ouW8g+Wug+S7rCIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6NjgzCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJHNtX3BhdGgnIgotbXNnc3RyICLlt7LmuIXpmaTnm67lvZUgJyRzbV9wYXRoJyIKK21zZ2lkICJDbGVhcmVkIGRpcmVjdG9yeSAnJGRpc3BsYXlwYXRoJyIKK21zZ3N0ciAi5bey5riF6Zmk55uu5b2VICckZGlzcGxheXBhdGgnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjYxNAorIzogZ2l0LXN1Ym1vZHVsZS5zaDo2ODQKICMsIHNoLWZvcm1hdAotbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgc3VibW9kdWxlIHdvcmsgdHJlZSAnJHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5Xnp7vpmaTlrZDmqKHnu4Tlt6XkvZzljLogJyRzbV9wYXRoJyIKK21zZ2lkICJDb3VsZCBub3QgcmVtb3ZlIHN1Ym1vZHVsZSB3b3JrIHRyZWUgJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIuaXoOazleenu+mZpOWtkOaooee7hOW3peS9nOWMuiAnJGRpc3BsYXlwYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo2MTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6Njg3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJDb3VsZCBub3QgY3JlYXRlIGVtcHR5IHN1Ym1vZHVsZSBkaXJlY3RvcnkgJyRzbV9wYXRoJyIKLW1zZ3N0ciAi5LiN6IO95Yib5bu656m655qE5a2Q5qih57uE55uu5b2VICckc21fcGF0aCciCittc2dpZCAiQ291bGQgbm90IGNyZWF0ZSBlbXB0eSBzdWJtb2R1bGUgZGlyZWN0b3J5ICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLkuI3og73liJvlu7rnqbrnmoTlrZDmqKHnu4Tnm67lvZUgJyRkaXNwbGF5cGF0aCciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NjI2CisjOiBnaXQtc3VibW9kdWxlLnNoOjY5NgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHVucmVnaXN0ZXJlZCBmb3IgcGF0aCAnJHNtX3BhdGgnIgotbXNnc3RyICLlrZDmqKHnu4QgJyRuYW1lJyAoJHVybCkg5pyq5a+56Lev5b6EICckc21fcGF0aCcg5rOo5YaMIgorbXNnaWQgIlN1Ym1vZHVsZSAnJG5hbWUnICgkdXJsKSB1bnJlZ2lzdGVyZWQgZm9yIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIuWtkOaooee7hCAnJG5hbWUnICgkdXJsKSDmnKrlr7not6/lvoQgJyRkaXNwbGF5cGF0aCcg5rOo5YaMIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjczMQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MTEKICMsIHNoLWZvcm1hdAogbXNnaWQgIiIKLSJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKKyJTdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyBub3QgaW5pdGlhbGl6ZWRcbiIKICJNYXliZSB5b3Ugd2FudCB0byB1c2UgJ3VwZGF0ZSAtLWluaXQnPyIKIG1zZ3N0ciAiIgotIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDmsqHmnInliJ3lp4vljJZcbiIKKyLlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCcg5rKh5pyJ5Yid5aeL5YyWXG4iCiAi5Lmf6K645oKo5oOz55SoICd1cGRhdGUgLS1pbml0J++8nyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODI0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gZmluZCBjdXJyZW50IHJldmlzaW9uIGluIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5XlnKjlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCcg5Lit5om+5Yiw5b2T5YmN54mI5pysIgorbXNnaWQgIlVuYWJsZSB0byBmaW5kIGN1cnJlbnQgcmV2aXNpb24gaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJGRpc3BsYXlwYXRoJyDkuK3mib7liLDlvZPliY3niYjmnKwiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6NzUzCisjOiBnaXQtc3VibW9kdWxlLnNoOjgzMwogIywgc2gtZm9ybWF0CiBtc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckc21fcGF0aCciCiBtc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHNtX3BhdGgnIOS4reiOt+WPliIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3NzcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODU3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gZmV0Y2ggaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCi1tc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDkuK3ojrflj5YiCittc2dpZCAiVW5hYmxlIHRvIGZldGNoIGluIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLml6Dms5XlnKjlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCcg5Lit6I635Y+WIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc5MQorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NzEKICMsIHNoLWZvcm1hdAotbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKLW1zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4reWPmOWfuiAnJHNoYTEnIgorbXNnaWQgIlVuYWJsZSB0byByZWJhc2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyIKK21zZ3N0ciAi5peg5rOV5Zyo5a2Q5qih57uE6Lev5b6EICckZGlzcGxheXBhdGgnIOS4reWPmOWfuiAnJHNoYTEnIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjc5MgorIzogZ2l0LXN1Ym1vZHVsZS5zaDo4NzIKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnOiByZWJhc2VkIGludG8gJyRzaGExJyIKLW1zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgn77ya5Y+Y5Z+66IezICckc2hhMSciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCc6IHJlYmFzZWQgaW50byAnJHNoYTEnIgorbXNnc3RyICLlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCfvvJrlj5jln7roh7MgJyRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODc3CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKLW1zZ3N0ciAi5peg5rOV5ZCI5bm2ICckc2hhMScg5Yiw5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4rSIKK21zZ2lkICJVbmFibGUgdG8gbWVyZ2UgJyRzaGExJyBpbiBzdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJyIKK21zZ3N0ciAi5peg5rOV5ZCI5bm2ICckc2hhMScg5Yiw5a2Q5qih57uE6Lev5b6EICckZGlzcGxheXBhdGgnIOS4rSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo3OTgKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODc4CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogbWVyZ2VkIGluICckc2hhMSciCi1tc2dzdHIgIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJ++8muW3suWQiOW5tuWFpSAnJHNoYTEnIgorbXNnaWQgIlN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnOiBtZXJnZWQgaW4gJyRzaGExJyIKK21zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckZGlzcGxheXBhdGgn77ya5bey5ZCI5bm25YWlICckc2hhMSciCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6ODAzCisjOiBnaXQtc3VibW9kdWxlLnNoOjg4MwogIywgc2gtZm9ybWF0Ci1tc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCciCi1tc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJyDkuK3mo4Dlh7ogJyRzaGExJyIKK21zZ2lkICIiCisiRXhlY3V0aW9uIG9mICckY29tbWFuZCAkc2hhMScgZmFpbGVkIGluIHN1Ym1vZHVsZSAgcGF0aCAnJHByZWZpeCRzbV9wYXRoJyIKK21zZ3N0ciAi5Zyo5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgnIOS4reaJp+ihjCAnJGNvbW1hbmQgJHNoYTEnIOWksei0pSIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MDQKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODg0CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJHByZWZpeCRzbV9wYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKLW1zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckcHJlZml4JHNtX3BhdGgn77ya5qOA5Ye6ICckc2hhMSciCittc2dpZCAiU3VibW9kdWxlIHBhdGggJyRwcmVmaXgkc21fcGF0aCc6ICckY29tbWFuZCAkc2hhMSciCittc2dzdHIgIuWtkOaooee7hOi3r+W+hCAnJHByZWZpeCRzbV9wYXRoJzogJyRjb21tYW5kICRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo4MzEKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODg5CiAjLCBzaC1mb3JtYXQKLW1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgotbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCciCittc2dpZCAiVW5hYmxlIHRvIGNoZWNrb3V0ICckc2hhMScgaW4gc3VibW9kdWxlIHBhdGggJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIuaXoOazleWcqOWtkOaooee7hOi3r+W+hCAnJGRpc3BsYXlwYXRoJyDkuK3mo4Dlh7ogJyRzaGExJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5MzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6ODkwCisjLCBzaC1mb3JtYXQKK21zZ2lkICJTdWJtb2R1bGUgcGF0aCAnJGRpc3BsYXlwYXRoJzogY2hlY2tlZCBvdXQgJyRzaGExJyIKK21zZ3N0ciAi5a2Q5qih57uE6Lev5b6EICckZGlzcGxheXBhdGgn77ya5qOA5Ye6ICckc2hhMSciCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6OTE3CisjLCBzaC1mb3JtYXQKK21zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckZGlzcGxheXBhdGgnIgorbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRkaXNwbGF5cGF0aCciCisKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTAyNQogbXNnaWQgIlRoZSAtLWNhY2hlZCBvcHRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCB0aGUgLS1maWxlcyBvcHRpb24iCiBtc2dzdHIgIumAiemhuSAtLWNhY2hlZCDkuI3og73lkozpgInpobkgLS1maWxlcyDlkIzml7bkvb/nlKgiCiAKICMuIHVuZXhwZWN0ZWQgdHlwZQotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5NzkKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2NgogIywgc2gtZm9ybWF0CiBtc2dpZCAidW5leHBlY3RlZCBtb2RlICRtb2RfZHN0IgogbXNnc3RyICLmhI/lpJbnmoTmqKHlvI8gJG1vZF9kc3QiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogZ2l0LXN1Ym1vZHVsZS5zaDo5OTcKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTA4NgogIywgc2gtZm9ybWF0Ci1tc2dpZCAiICBXYXJuOiAkbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKLW1zZ3N0ciAiICDorablkYrvvJokbmFtZSDmnKrljIXlkKvmj5DkuqQgJHNoYTFfc3JjIgorbXNnaWQgIiAgV2FybjogJGRpc3BsYXlfbmFtZSBkb2Vzbid0IGNvbnRhaW4gY29tbWl0ICRzaGExX3NyYyIKK21zZ3N0ciAiICDorablkYrvvJokZGlzcGxheV9uYW1lIOacquWMheWQq+aPkOS6pCAkc2hhMV9zcmMiCiAKICMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDAwCisjOiBnaXQtc3VibW9kdWxlLnNoOjEwODkKICMsIHNoLWZvcm1hdAotbXNnaWQgIiAgV2FybjogJG5hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCi1tc2dzdHIgIiAg6K2m5ZGK77yaJG5hbWUg5pyq5YyF5ZCr5o+Q5LqkICRzaGExX2RzdCIKK21zZ2lkICIgIFdhcm46ICRkaXNwbGF5X25hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdCAkc2hhMV9kc3QiCittc2dzdHIgIiAg6K2m5ZGK77yaJGRpc3BsYXlfbmFtZSDmnKrljIXlkKvmj5DkuqQgJHNoYTFfZHN0IgogCiAjICDor5HogIXvvJrms6jmhI/kv53mjIHliY3lr7znqbrmoLwKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTAwMworIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMDkyCiAjLCBzaC1mb3JtYXQKLW1zZ2lkICIgIFdhcm46ICRuYW1lIGRvZXNuJ3QgY29udGFpbiBjb21taXRzICRzaGExX3NyYyBhbmQgJHNoYTFfZHN0IgotbXNnc3RyICIgIOitpuWRiu+8miRuYW1lIOacquWMheWQq+aPkOS6pCAkc2hhMV9zcmMg5ZKMICRzaGExX2RzdCIKK21zZ2lkICIgIFdhcm46ICRkaXNwbGF5X25hbWUgZG9lc24ndCBjb250YWluIGNvbW1pdHMgJHNoYTFfc3JjIGFuZCAkc2hhMV9kc3QiCittc2dzdHIgIiAg6K2m5ZGK77yaJGRpc3BsYXlfbmFtZSDmnKrljIXlkKvmj5DkuqQgJHNoYTFfc3JjIOWSjCAkc2hhMV9kc3QiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTAyOAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTE3CiBtc2dpZCAiYmxvYiIKIG1zZ3N0ciAi5pWw5o2u5a+56LGhIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjEwNjYKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTE1NQogbXNnaWQgIlN1Ym1vZHVsZXMgY2hhbmdlZCBidXQgbm90IHVwZGF0ZWQ6IgogbXNnc3RyICLlrZDmqKHnu4Tlt7Lkv67mlLnkvYblsJrmnKrmm7TmlrDvvJoiCiAKLSM6IGdpdC1zdWJtb2R1bGUuc2g6MTA2OAorIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMTU3CiBtc2dpZCAiU3VibW9kdWxlIGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkOiIKIG1zZ3N0ciAi6KaB5o+Q5Lqk55qE5a2Q5qih57uE5Y+Y5pu077yaIgogCi0jOiBnaXQtc3VibW9kdWxlLnNoOjExNTMKKyM6IGdpdC1zdWJtb2R1bGUuc2g6MTI0MgogIywgc2gtZm9ybWF0CiBtc2dpZCAiRmFpbGVkIHRvIHJlY3Vyc2UgaW50byBzdWJtb2R1bGUgcGF0aCAnJHNtX3BhdGgnIgogbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRzbV9wYXRoJyIKIAotIzogZ2l0LXN1Ym1vZHVsZS5zaDoxMjE2CisjOiBnaXQtc3VibW9kdWxlLnNoOjEzMDYKICMsIHNoLWZvcm1hdAotbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCi1tc2dzdHIgIuS4uiAnJHByZWZpeCRzbV9wYXRoJyDlkIzmraXlrZDmqKHnu4QgdXJsIgorbXNnaWQgIlN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRkaXNwbGF5cGF0aCciCittc2dzdHIgIuS4uiAnJGRpc3BsYXlwYXRoJyDlkIzmraXlrZDmqKHnu4QgdXJsIgorCisjfiBtc2dpZCAiIgorI34gInRoZSBmb2xsb3dpbmcgc3VibW9kdWxlIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGUpXG4iCisjfiAidXNlcyBhIC5naXQgZGlyZWN0b3J5OiIKKyN+IG1zZ2lkX3BsdXJhbCAiIgorI34gInRoZSBmb2xsb3dpbmcgc3VibW9kdWxlcyAob3Igb25lIG9mIGl0cyBuZXN0ZWQgc3VibW9kdWxlKVxuIgorI34gInVzZSBhIC5naXQgZGlyZWN0b3J5OiIKKyN+IG1zZ3N0clswXSAi5aaC5LiL5a2Q5qih57uE77yI5oiW5LiA5Liq5YW25bWM5aWX55qE5a2Q5qih57uE77yJ5L2/55So5LqG5LiA5LiqIC5naXQg55uu5b2V77yaIgorI34gbXNnc3RyWzFdICLlpoLkuIvlrZDmqKHnu4TvvIjmiJbkuIDkuKrlhbbltYzlpZfnmoTlrZDmqKHnu4TvvInkvb/nlKjkuobkuIDkuKogLmdpdCDnm67lvZXvvJoiCisKKyN+IG1zZ2lkICJDYW5ub3QgY2hhbmdlIHVubWVyZ2VkIC5naXRtb2R1bGVzLCByZXNvbHZlIG1lcmdlIGNvbmZsaWN0cyBmaXJzdCIKKyN+IG1zZ3N0ciAi5peg5rOV5L+u5pS55pyq5ZCI5bm255qEIC5naXRtb2R1bGVz77yM5YWI6Kej5Yaz5ZCI5bm25Yay56qBIgorCisjfiBtc2dpZCAiQ291bGQgbm90IGZpbmQgc2VjdGlvbiBpbiAuZ2l0bW9kdWxlcyB3aGVyZSBwYXRoPSVzIgorI34gbXNnc3RyICLml6Dms5XlnKggLmdpdG1vZHVsZXMg5Lit5om+5YiwIHBhdGg9JXMg55qE5bCP6IqCIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHVwZGF0ZSAuZ2l0bW9kdWxlcyBlbnRyeSAlcyIKKyN+IG1zZ3N0ciAi5LiN6IO95pu05pawIC5naXRtb2R1bGVzIOadoeebriAlcyIKKworI34gbXNnaWQgIkNvdWxkIG5vdCByZW1vdmUgLmdpdG1vZHVsZXMgZW50cnkgZm9yICVzIgorI34gbXNnc3RyICLml6Dms5Xnp7vpmaQgJXMg55qEIC5naXRtb2R1bGVzIOadoeebriIKKworI34gbXNnaWQgImNvdWxkIG5vdCBmaW5kIC5naXRtb2R1bGVzIGluIGluZGV4IgorI34gbXNnc3RyICLml6Dms5XlnKjntKLlvJXkuK3mib7liLAgLmdpdG1vZHVsZXMiCisKKyN+IG1zZ2lkICJyZWFkaW5nIHVwZGF0ZWQgLmdpdG1vZHVsZXMgZmFpbGVkIgorI34gbXNnc3RyICLor7vlj5bmm7TmlrDlkI7nmoQgLmdpdG1vZHVsZXMg5aSx6LSlIgorCisjfiBtc2dpZCAidW5hYmxlIHRvIHN0YXQgdXBkYXRlZCAuZ2l0bW9kdWxlcyIKKyN+IG1zZ3N0ciAi5LiN6IO95p6a5Li+5pu05paw5ZCO55qEIC5naXRtb2R1bGVzIgorCisjfiBtc2dpZCAidW5hYmxlIHRvIHJlbW92ZSAuZ2l0bW9kdWxlcyBmcm9tIGluZGV4IgorI34gbXNnc3RyICLkuI3og73ku47ntKLlvJXkuK3np7vpmaQgLmdpdG1vZHVsZXMiCisKKyN+IG1zZ2lkICJhZGRpbmcgdXBkYXRlZCAuZ2l0bW9kdWxlcyBmYWlsZWQiCisjfiBtc2dzdHIgIua3u+WKoOabtOaWsOWQjueahCAuZ2l0bW9kdWxlcyDlpLHotKUiCisKKyN+IG1zZ2lkICJzdGFnaW5nIHVwZGF0ZWQgLmdpdG1vZHVsZXMgZmFpbGVkIgorI34gbXNnc3RyICLlsIbmm7TmlrDlkI4gLmdpdG1vZHVsZXMg5re75Yqg5pqC5a2Y5Yy65aSx6LSlIgorCisjfiBtc2dpZCAiQ291bGQgbm90IHNldCBjb3JlLndvcmt0cmVlIGluICVzIgorI34gbXNnc3RyICLkuI3og73lnKggJXMg5Lit6K6+572uIGNvcmUud29ya3RyZWUiCisKKyMgIOivkeiAhe+8muazqOaEj+S/neaMgeWJjeWvvOepuuagvAorI34gbXNnaWQgIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIikiCisjfiBtc2dzdHIgIiAg77yI6Kej5Yaz5Yay56qB77yM54S25ZCO6L+Q6KGMIFwiZ2l0IGFtIC0tcmVzb2x2ZWRcIu+8iSIKKworIyAg6K+R6ICF77ya5rOo5oSP5L+d5oyB5YmN5a+856m65qC8CisjfiBtc2dpZCAiICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuIFwiZ2l0IGNvbW1pdFwiKSIKKyN+IG1zZ3N0ciAiICDvvIjop6PlhrPmiYDmnInlhrLnqoHlkI7vvIzmiafooYwgXCJnaXQgY29tbWl0XCLvvIkiCisKKyN+IG1zZ2lkICJtb3JlIHRoYW4gJWQgdHJlZXMgZ2l2ZW46ICclcyciCisjfiBtc2dzdHIgIuaPkOS+m+S6hui2hei/hyAlZCDkuKrmoJHlr7nosaHvvJonJXMnIgorCisjfiBtc2dpZCAiWW91IGNhbm5vdCBjb21iaW5lIC0tbm8tZmYgd2l0aCAtLWZmLW9ubHkuIgorI34gbXNnc3RyICLmgqjkuI3og73lsIYgLS1uby1mZiDkuI4gLS1mZi1vbmx5IOWQjOaXtuS9v+eUqOOAgiIKKworI34gbXNnaWQgIkh1aD8gRGlyZWN0b3J5ICVzIGlzIGluIGluZGV4IGFuZCBubyBzdWJtb2R1bGU/IgorI34gbXNnc3RyICLll6/vvJ/nm67lvZUgJXMg5Zyo57Si5byV5Lit5bm25LiU5LiN5piv5a2Q5qih57uE77yfIgorCisjfiBtc2dpZCAiIgorI34gInN1Ym1vZHVsZSAnJXMnIChvciBvbmUgb2YgaXRzIG5lc3RlZCBzdWJtb2R1bGVzKSB1c2VzIGEgLmdpdCBkaXJlY3RvcnlcbiIKKyN+ICIodXNlICdybSAtcmYnIGlmIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgaXQgaW5jbHVkaW5nIGFsbCBvZiBpdHMgIgorI34gImhpc3RvcnkpIgorI34gbXNnc3RyICIiCisjfiAi5a2Q5qih57uEICclcyfvvIjmiJbogIXlroPnmoTkuIDkuKrltYzlpZflrZDmqKHnu4TvvInkvb/nlKjkuIDkuKogLmdpdCDnm67lvZVcbiIKKyN+ICLvvIjkvb/nlKggJ3JtIC1yZicg5ZG95Luk5aaC5p6c5oKo55yf55qE5oOz5Yig6Zmk5a6D5Y+K5YW25YWo6YOo5Y6G5Y+y77yJIgorCisjfiBtc2dpZCAiIgorI34gIiclcycgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleFxuIgorI34gIih1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwgb3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkiCisjfiBtc2dzdHIgIiIKKyN+ICInJXMnIOacieWPmOabtOW3suaaguWtmOiHs+e0ouW8leS4rVxuIgorI34gIu+8iOS9v+eUqCAtLWNhY2hlZCDkv53lrZjmlofku7bvvIzmiJbnlKggLWYg5by65Yi25Yig6Zmk77yJIgorCisjfiBtc2dpZCAic2hvdyBjb21taXRzIHdoZXJlIG5vIHBhcmVudCBjb21lcyBiZWZvcmUgaXRzIGNoaWxkcmVuIgorI34gbXNnc3RyICLmmL7npLrmj5DkuqTml7bku6Xml7bpl7TkuLrluo/kuJTniLbmj5DkuqTkuI3og73pooblhYjlrZDmj5DkuqQiCisKKyN+IG1zZ2lkICJzaG93IHRoZSBIRUFEIHJlZmVyZW5jZSIKKyN+IG1zZ3N0ciAi5pi+56S6IEhFQUQg5byV55SoIgorCisjfiBtc2dpZCAiU3VibW9kdWxlICckbmFtZScgKCR1cmwpIHJlZ2lzdGVyZWQgZm9yIHBhdGggJyRzbV9wYXRoJyIKKyN+IG1zZ3N0ciAi5a2Q5qih57uEICckbmFtZScgKCR1cmwpIOW3suS4uui3r+W+hCAnJHNtX3BhdGgnIOazqOWGjCIKKworI34gbXNnaWQgIkNoYW5nZSBmbGFncyIKKyN+IG1zZ3N0ciAi5L+u5pS55Y+C5pWwIgorCisjfiBtc2dpZCAiIgorI34gIk5PVEU6IG5vIG1vcmUgZmlsZXMgdG8gY2xlYW47IHByZXNzIFwidFwiIHRvIHRvZ2dsZSBmbGFncyBvZiBnaXQtY2xlYW4uIgorI34gbXNnc3RyICLms6jmhI/vvJrmsqHmnInopoHmuIXnkIbnmoTmlofku7bvvJvlsJ3or5XmjIkgXCJ0XCIg5YiH5o2iIGdpdC1jbGVhbiDnmoTpgInpobnjgIIiCisKKyN+IG1zZ2lkICJGYWlsZWQgdG8gcmVjdXJzZSBpbnRvIHN1Ym1vZHVsZSBwYXRoICckcHJlZml4JHNtX3BhdGgnIgorI34gbXNnc3RyICLml6Dms5XpgJLlvZLov5vlrZDmqKHnu4Tot6/lvoQgJyRwcmVmaXgkc21fcGF0aCciCiAKICN+IG1zZ2lkICJnaXQgc2hvcnRsb2cgWy1uXSBbLXNdIFstZV0gWy13XSBbcmV2LW9wdHNdIFstLV0gWzxjb21taXQtaWQ+Li4uIF0iCiAjfiBtc2dzdHIgImdpdCBzaG9ydGxvZyBbLW5dIFstc10gWy1lXSBbLXddIFvniYjmnKzpgInpobldIFstLV0gWzzmj5DkuqTlj7c+Li4uIF0iCkBAIC05OTkxLDEwICsxMDM5Nyw2IEBACiAjfiBtc2dpZCAibmV3IGZpbGVzIHlvdXJzZWxmIChzZWUgJ2dpdCBoZWxwIHN0YXR1cycpLiIKICN+IG1zZ3N0ciAi77yI5Y+C6KeBICdnaXQgaGVscCBzdGF0dXMn77yJ44CCIgogCi0jLCBmdXp6eQotI34gbXNnaWQgImFhYVN5bmNocm9uaXppbmcgc3VibW9kdWxlIHVybCBmb3IgJyRwcmVmaXgkc21fcGF0aCciCi0jfiBtc2dzdHIgIuS4uiAnJHByZWZpeCRzbV9wYXRoJyDlkIzmraXlrZDmqKHnu4QgdXJsIgotCiAjfiBtc2dpZCAidXNlIGFueSByZWYgaW4gLmdpdC9yZWZzIgogI34gbXNnc3RyICLkvb/nlKggLmdpdC9yZWZzIOmHjOeahOS7u+aEj+W8leeUqCIKIApkaWZmIC0tZ2l0IGEvcHJldHR5LmMgYi9wcmV0dHkuYwppbmRleCA5ZTQzMTU0Li43NDU2M2M5IDEwMDY0NAotLS0gYS9wcmV0dHkuYworKysgYi9wcmV0dHkuYwpAQCAtNDA2LDcgKzQwNiw3IEBACiAJcmV0dXJuIHNob3dfZGF0ZShkYXRlLCB0eiwgbW9kZSk7CiB9CiAKLXZvaWQgcHBfdXNlcl9pbmZvKGNvbnN0IHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCit2b2lkIHBwX3VzZXJfaW5mbyhzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAogCQkgIGNvbnN0IGNoYXIgKndoYXQsIHN0cnVjdCBzdHJidWYgKnNiLAogCQkgIGNvbnN0IGNoYXIgKmxpbmUsIGNvbnN0IGNoYXIgKmVuY29kaW5nKQogewpAQCAtNDMyLDYgKzQzMiwyMyBAQAogCQltYXBfdXNlcihwcC0+bWFpbG1hcCwgJm1haWxidWYsICZtYWlsbGVuLCAmbmFtZWJ1ZiwgJm5hbWVsZW4pOwogCiAJaWYgKHBwLT5mbXQgPT0gQ01JVF9GTVRfRU1BSUwpIHsKKwkJaWYgKHBwLT5mcm9tX2lkZW50KSB7CisJCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOworCisJCQlzdHJidWZfYWRkc3RyKCZidWYsICJGcm9tOiAiKTsKKwkJCXN0cmJ1Zl9hZGQoJmJ1ZiwgbmFtZWJ1ZiwgbmFtZWxlbik7CisJCQlzdHJidWZfYWRkc3RyKCZidWYsICIgPCIpOworCQkJc3RyYnVmX2FkZCgmYnVmLCBtYWlsYnVmLCBtYWlsbGVuKTsKKwkJCXN0cmJ1Zl9hZGRzdHIoJmJ1ZiwgIj5cbiIpOworCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZwcC0+aW5fYm9keV9oZWFkZXJzLAorCQkJCQkgICBzdHJidWZfZGV0YWNoKCZidWYsIE5VTEwpKTsKKworCQkJbWFpbGJ1ZiA9IHBwLT5mcm9tX2lkZW50LT5tYWlsX2JlZ2luOworCQkJbWFpbGxlbiA9IHBwLT5mcm9tX2lkZW50LT5tYWlsX2VuZCAtIG1haWxidWY7CisJCQluYW1lYnVmID0gcHAtPmZyb21faWRlbnQtPm5hbWVfYmVnaW47CisJCQluYW1lbGVuID0gcHAtPmZyb21faWRlbnQtPm5hbWVfZW5kIC0gbmFtZWJ1ZjsKKwkJfQorCiAJCXN0cmJ1Zl9hZGRzdHIoc2IsICJGcm9tOiAiKTsKIAkJaWYgKG5lZWRzX3JmYzIwNDdfZW5jb2RpbmcobmFtZWJ1ZiwgbmFtZWxlbiwgUkZDMjA0N19BRERSRVNTKSkgewogCQkJYWRkX3JmYzIwNDcoc2IsIG5hbWVidWYsIG5hbWVsZW4sCkBAIC0xNTE0LDcgKzE1MzEsNyBAQAogCWZyZWUoY29udGV4dC5zaWduYXR1cmVfY2hlY2suc2lnbmVyKTsKIH0KIAotc3RhdGljIHZvaWQgcHBfaGVhZGVyKGNvbnN0IHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCitzdGF0aWMgdm9pZCBwcF9oZWFkZXIoc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKIAkJICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAJCSAgICAgIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKIAkJICAgICAgY29uc3QgY2hhciAqKm1zZ19wLApAQCAtMTU3NSw3ICsxNTkyLDcgQEAKIAl9CiB9CiAKLXZvaWQgcHBfdGl0bGVfbGluZShjb25zdCBzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAordm9pZCBwcF90aXRsZV9saW5lKHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCiAJCSAgIGNvbnN0IGNoYXIgKiptc2dfcCwKIAkJICAgc3RydWN0IHN0cmJ1ZiAqc2IsCiAJCSAgIGNvbnN0IGNoYXIgKmVuY29kaW5nLApAQCAtMTYwMiw2ICsxNjE5LDE2IEBACiAJfQogCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CiAKKwlpZiAobmVlZF84Yml0X2N0ZSA9PSAwKSB7CisJCWludCBpOworCQlmb3IgKGkgPSAwOyBpIDwgcHAtPmluX2JvZHlfaGVhZGVycy5ucjsgaSsrKSB7CisJCQlpZiAoaGFzX25vbl9hc2NpaShwcC0+aW5fYm9keV9oZWFkZXJzLml0ZW1zW2ldLnN0cmluZykpIHsKKwkJCQluZWVkXzhiaXRfY3RlID0gMTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKwogCWlmIChuZWVkXzhiaXRfY3RlID4gMCkgewogCQljb25zdCBjaGFyICpoZWFkZXJfZm10ID0KIAkJCSJNSU1FLVZlcnNpb246IDEuMFxuIgpAQCAtMTYxNSwxMCArMTY0MiwyMSBAQAogCWlmIChwcC0+Zm10ID09IENNSVRfRk1UX0VNQUlMKSB7CiAJCXN0cmJ1Zl9hZGRjaChzYiwgJ1xuJyk7CiAJfQorCisJaWYgKHBwLT5pbl9ib2R5X2hlYWRlcnMubnIpIHsKKwkJaW50IGk7CisJCWZvciAoaSA9IDA7IGkgPCBwcC0+aW5fYm9keV9oZWFkZXJzLm5yOyBpKyspIHsKKwkJCXN0cmJ1Zl9hZGRzdHIoc2IsIHBwLT5pbl9ib2R5X2hlYWRlcnMuaXRlbXNbaV0uc3RyaW5nKTsKKwkJCWZyZWUocHAtPmluX2JvZHlfaGVhZGVycy5pdGVtc1tpXS5zdHJpbmcpOworCQl9CisJCXN0cmluZ19saXN0X2NsZWFyKCZwcC0+aW5fYm9keV9oZWFkZXJzLCAwKTsKKwkJc3RyYnVmX2FkZGNoKHNiLCAnXG4nKTsKKwl9CisKIAlzdHJidWZfcmVsZWFzZSgmdGl0bGUpOwogfQogCi12b2lkIHBwX3JlbWFpbmRlcihjb25zdCBzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAordm9pZCBwcF9yZW1haW5kZXIoc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKIAkJICBjb25zdCBjaGFyICoqbXNnX3AsCiAJCSAgc3RydWN0IHN0cmJ1ZiAqc2IsCiAJCSAgaW50IGluZGVudCkKQEAgLTE2NTAsNyArMTY4OCw3IEBACiAJfQogfQogCi12b2lkIHByZXR0eV9wcmludF9jb21taXQoY29uc3Qgc3RydWN0IHByZXR0eV9wcmludF9jb250ZXh0ICpwcCwKK3ZvaWQgcHJldHR5X3ByaW50X2NvbW1pdChzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgKnBwLAogCQkJIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCwKIAkJCSBzdHJ1Y3Qgc3RyYnVmICpzYikKIHsKZGlmZiAtLWdpdCBhL3ByaW8tcXVldWUuYyBiL3ByaW8tcXVldWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWY4YzZkCi0tLSAvZGV2L251bGwKKysrIGIvcHJpby1xdWV1ZS5jCkBAIC0wLDAgKzEsODQgQEAKKyNpbmNsdWRlICJjYWNoZS5oIgorI2luY2x1ZGUgImNvbW1pdC5oIgorI2luY2x1ZGUgInByaW8tcXVldWUuaCIKKwordm9pZCBwcmlvX3F1ZXVlX3JldmVyc2Uoc3RydWN0IHByaW9fcXVldWUgKnF1ZXVlKQoreworCWludCBpLCBqOworCisJaWYgKHF1ZXVlLT5jb21wYXJlICE9IE5VTEwpCisJCWRpZSgiQlVHOiBwcmlvX3F1ZXVlX3JldmVyc2UoKSBvbiBub24tTElGTyBxdWV1ZSIpOworCWZvciAoaSA9IDA7IGkgPD0gKGogPSAocXVldWUtPm5yIC0gMSkgLSBpKTsgaSsrKSB7CisJCXN0cnVjdCBjb21taXQgKnN3YXAgPSBxdWV1ZS0+YXJyYXlbaV07CisJCXF1ZXVlLT5hcnJheVtpXSA9IHF1ZXVlLT5hcnJheVtqXTsKKwkJcXVldWUtPmFycmF5W2pdID0gc3dhcDsKKwl9Cit9CisKK3ZvaWQgY2xlYXJfcHJpb19xdWV1ZShzdHJ1Y3QgcHJpb19xdWV1ZSAqcXVldWUpCit7CisJZnJlZShxdWV1ZS0+YXJyYXkpOworCXF1ZXVlLT5uciA9IDA7CisJcXVldWUtPmFsbG9jID0gMDsKKwlxdWV1ZS0+YXJyYXkgPSBOVUxMOworfQorCit2b2lkIHByaW9fcXVldWVfcHV0KHN0cnVjdCBwcmlvX3F1ZXVlICpxdWV1ZSwgdm9pZCAqdGhpbmcpCit7CisJcHJpb19xdWV1ZV9jb21wYXJlX2ZuIGNvbXBhcmUgPSBxdWV1ZS0+Y29tcGFyZTsKKwlpbnQgaXgsIHBhcmVudDsKKworCS8qIEFwcGVuZCBhdCB0aGUgZW5kICovCisJQUxMT0NfR1JPVyhxdWV1ZS0+YXJyYXksIHF1ZXVlLT5uciArIDEsIHF1ZXVlLT5hbGxvYyk7CisJcXVldWUtPmFycmF5W3F1ZXVlLT5ucisrXSA9IHRoaW5nOworCWlmICghY29tcGFyZSkKKwkJcmV0dXJuOyAvKiBMSUZPICovCisKKwkvKiBCdWJibGUgdXAgdGhlIG5ldyBvbmUgKi8KKwlmb3IgKGl4ID0gcXVldWUtPm5yIC0gMTsgaXg7IGl4ID0gcGFyZW50KSB7CisJCXBhcmVudCA9IChpeCAtIDEpIC8gMjsKKwkJaWYgKGNvbXBhcmUocXVldWUtPmFycmF5W3BhcmVudF0sIHF1ZXVlLT5hcnJheVtpeF0sCisJCQkgICAgcXVldWUtPmNiX2RhdGEpIDw9IDApCisJCQlicmVhazsKKworCQl0aGluZyA9IHF1ZXVlLT5hcnJheVtwYXJlbnRdOworCQlxdWV1ZS0+YXJyYXlbcGFyZW50XSA9IHF1ZXVlLT5hcnJheVtpeF07CisJCXF1ZXVlLT5hcnJheVtpeF0gPSB0aGluZzsKKwl9Cit9CisKK3ZvaWQgKnByaW9fcXVldWVfZ2V0KHN0cnVjdCBwcmlvX3F1ZXVlICpxdWV1ZSkKK3sKKwl2b2lkICpyZXN1bHQsICpzd2FwOworCWludCBpeCwgY2hpbGQ7CisJcHJpb19xdWV1ZV9jb21wYXJlX2ZuIGNvbXBhcmUgPSBxdWV1ZS0+Y29tcGFyZTsKKworCWlmICghcXVldWUtPm5yKQorCQlyZXR1cm4gTlVMTDsKKwlpZiAoIWNvbXBhcmUpCisJCXJldHVybiBxdWV1ZS0+YXJyYXlbLS1xdWV1ZS0+bnJdOyAvKiBMSUZPICovCisKKwlyZXN1bHQgPSBxdWV1ZS0+YXJyYXlbMF07CisJaWYgKCEtLXF1ZXVlLT5ucikKKwkJcmV0dXJuIHJlc3VsdDsKKworCXF1ZXVlLT5hcnJheVswXSA9IHF1ZXVlLT5hcnJheVtxdWV1ZS0+bnJdOworCisJLyogUHVzaCBkb3duIHRoZSBvbmUgYXQgdGhlIHJvb3QgKi8KKwlmb3IgKGl4ID0gMDsgaXggKiAyICsgMSA8IHF1ZXVlLT5ucjsgaXggPSBjaGlsZCkgeworCQljaGlsZCA9IGl4ICogMiArIDE7IC8qIGxlZnQgKi8KKwkJaWYgKChjaGlsZCArIDEgPCBxdWV1ZS0+bnIpICYmCisJCSAgICAoY29tcGFyZShxdWV1ZS0+YXJyYXlbY2hpbGRdLCBxdWV1ZS0+YXJyYXlbY2hpbGQgKyAxXSwKKwkJCSAgICAgcXVldWUtPmNiX2RhdGEpID49IDApKQorCQkJY2hpbGQrKzsgLyogdXNlIHJpZ2h0IGNoaWxkICovCisKKwkJaWYgKGNvbXBhcmUocXVldWUtPmFycmF5W2l4XSwgcXVldWUtPmFycmF5W2NoaWxkXSwKKwkJCSAgICBxdWV1ZS0+Y2JfZGF0YSkgPD0gMCkKKwkJCWJyZWFrOworCisJCXN3YXAgPSBxdWV1ZS0+YXJyYXlbY2hpbGRdOworCQlxdWV1ZS0+YXJyYXlbY2hpbGRdID0gcXVldWUtPmFycmF5W2l4XTsKKwkJcXVldWUtPmFycmF5W2l4XSA9IHN3YXA7CisJfQorCXJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9wcmlvLXF1ZXVlLmggYi9wcmlvLXF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMzY2QxZgotLS0gL2Rldi9udWxsCisrKyBiL3ByaW8tcXVldWUuaApAQCAtMCwwICsxLDQ4IEBACisjaWZuZGVmIFBSSU9fUVVFVUVfSAorI2RlZmluZSBQUklPX1FVRVVFX0gKKworLyoKKyAqIEEgcHJpb3JpdHkgcXVldWUgaW1wbGVtZW50YXRpb24sIHByaW1hcmlseSBmb3Iga2VlcGluZyB0cmFjayBvZgorICogY29tbWl0cyBpbiB0aGUgJ2RhdGUtb3JkZXInIHNvIHRoYXQgd2UgcHJvY2VzcyB0aGVtIGZyb20gbmV3IHRvIG9sZAorICogYXMgdGhleSBhcmUgZGlzY292ZXJlZCwgYnV0IGNhbiBiZSB1c2VkIHRvIGhvbGQgYW55IHBvaW50ZXIgdG8KKyAqIHN0cnVjdC4gIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yIHN1cHBseWluZyBhIGZ1bmN0aW9uIHRvCisgKiBjb21wYXJlIHR3byAidGhpbmdzIi4KKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGlzIGRhdGEgc3RydWN0dXJlIGNhbiBhbHNvIGJlIHVzZWQgYXMgYSBMSUZPIHN0YWNrCisgKiBieSBzcGVjaWZ5aW5nIE5VTEwgYXMgdGhlIGNvbXBhcmlzb24gZnVuY3Rpb24uCisgKi8KKworLyoKKyAqIENvbXBhcmUgdHdvICJ0aGluZ3MiLCBvbmUgYW5kIHR3bzsgdGhlIHRoaXJkIHBhcmFtZXRlciBpcyBjYl9kYXRhCisgKiBpbiB0aGUgcHJpb19xdWV1ZSBzdHJ1Y3R1cmUuICBUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgc2lnbiBvZgorICogdGhlIHJldHVybiB2YWx1ZSwgYmVpbmcgdGhlIHNhbWUgYXMgdGhlIHNpZ24gb2YgdGhlIHJlc3VsdCBvZgorICogc3VidHJhY3RpbmcgInR3byIgZnJvbSAib25lIiAoaS5lLiBuZWdhdGl2ZSBpZiAib25lIiBzb3J0cyBlYXJsaWVyCisgKiB0aGFuICJ0d28iKS4KKyAqLwordHlwZWRlZiBpbnQgKCpwcmlvX3F1ZXVlX2NvbXBhcmVfZm4pKGNvbnN0IHZvaWQgKm9uZSwgY29uc3Qgdm9pZCAqdHdvLCB2b2lkICpjYl9kYXRhKTsKKworc3RydWN0IHByaW9fcXVldWUgeworCXByaW9fcXVldWVfY29tcGFyZV9mbiBjb21wYXJlOworCXZvaWQgKmNiX2RhdGE7CisJaW50IGFsbG9jLCBucjsKKwl2b2lkICoqYXJyYXk7Cit9OworCisvKgorICogQWRkIHRoZSAidGhpbmciIHRvIHRoZSBxdWV1ZS4KKyAqLworZXh0ZXJuIHZvaWQgcHJpb19xdWV1ZV9wdXQoc3RydWN0IHByaW9fcXVldWUgKiwgdm9pZCAqdGhpbmcpOworCisvKgorICogRXh0cmFjdCB0aGUgInRoaW5nIiB0aGF0IGNvbXBhcmVzIHRoZSBzbWFsbGVzdCBvdXQgb2YgdGhlIHF1ZXVlLAorICogb3IgTlVMTC4gIElmIGNvbXBhcmUgZnVuY3Rpb24gaXMgTlVMTCwgdGhlIHF1ZXVlIGFjdHMgYXMgYSBMSUZPCisgKiBzdGFjay4KKyAqLworZXh0ZXJuIHZvaWQgKnByaW9fcXVldWVfZ2V0KHN0cnVjdCBwcmlvX3F1ZXVlICopOworCitleHRlcm4gdm9pZCBjbGVhcl9wcmlvX3F1ZXVlKHN0cnVjdCBwcmlvX3F1ZXVlICopOworCisvKiBSZXZlcnNlIHRoZSBMSUZPIGVsZW1lbnRzICovCitleHRlcm4gdm9pZCBwcmlvX3F1ZXVlX3JldmVyc2Uoc3RydWN0IHByaW9fcXVldWUgKik7CisKKyNlbmRpZiAvKiBQUklPX1FVRVVFX0ggKi8KZGlmZiAtLWdpdCBhL3F1b3RlLmMgYi9xdW90ZS5jCmluZGV4IDkxMTIyOWYuLjVjODgwODEgMTAwNjQ0Ci0tLSBhL3F1b3RlLmMKKysrIGIvcXVvdGUuYwpAQCAtMzEyLDgyICszMTIsMjcgQEAKIAlmcHV0Yyh0ZXJtaW5hdG9yLCBmcCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICpwYXRoX3JlbGF0aXZlKGNvbnN0IGNoYXIgKmluLCBpbnQgbGVuLAotCQkJCSBzdHJ1Y3Qgc3RyYnVmICpzYiwgY29uc3QgY2hhciAqcHJlZml4LAotCQkJCSBpbnQgcHJlZml4X2xlbik7Ci0KLXZvaWQgd3JpdGVfbmFtZV9xdW90ZWRfcmVsYXRpdmUoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IGxlbiwKLQkJCQljb25zdCBjaGFyICpwcmVmaXgsIHNpemVfdCBwcmVmaXhfbGVuLAordm9pZCB3cml0ZV9uYW1lX3F1b3RlZF9yZWxhdGl2ZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwcmVmaXgsCiAJCQkJRklMRSAqZnAsIGludCB0ZXJtaW5hdG9yKQogewogCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKIAotCW5hbWUgPSBwYXRoX3JlbGF0aXZlKG5hbWUsIGxlbiwgJnNiLCBwcmVmaXgsIHByZWZpeF9sZW4pOworCW5hbWUgPSByZWxhdGl2ZV9wYXRoKG5hbWUsIHByZWZpeCwgJnNiKTsKIAl3cml0ZV9uYW1lX3F1b3RlZChuYW1lLCBmcCwgdGVybWluYXRvcik7CiAKIAlzdHJidWZfcmVsZWFzZSgmc2IpOwogfQogCi0vKgotICogR2l2ZSBwYXRoIGFzIHJlbGF0aXZlIHRvIHByZWZpeC4KLSAqCi0gKiBUaGUgc3RyYnVmIG1heSBvciBtYXkgbm90IGJlIHVzZWQsIHNvIGRvIG5vdCBhc3N1bWUgaXQgY29udGFpbnMgdGhlCi0gKiByZXR1cm5lZCBwYXRoLgotICovCi1zdGF0aWMgY29uc3QgY2hhciAqcGF0aF9yZWxhdGl2ZShjb25zdCBjaGFyICppbiwgaW50IGxlbiwKLQkJCQkgc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IGNoYXIgKnByZWZpeCwKLQkJCQkgaW50IHByZWZpeF9sZW4pCi17Ci0JaW50IG9mZiwgaTsKLQotCWlmIChsZW4gPCAwKQotCQlsZW4gPSBzdHJsZW4oaW4pOwotCWlmIChwcmVmaXhfbGVuIDwgMCkgewotCQlpZiAocHJlZml4KQotCQkJcHJlZml4X2xlbiA9IHN0cmxlbihwcmVmaXgpOwotCQllbHNlCi0JCQlwcmVmaXhfbGVuID0gMDsKLQl9Ci0KLQlvZmYgPSAwOwotCWkgPSAwOwotCXdoaWxlIChpIDwgcHJlZml4X2xlbiAmJiBpIDwgbGVuICYmIHByZWZpeFtpXSA9PSBpbltpXSkgewotCQlpZiAocHJlZml4W2ldID09ICcvJykKLQkJCW9mZiA9IGkgKyAxOwotCQlpKys7Ci0JfQotCWluICs9IG9mZjsKLQlsZW4gLT0gb2ZmOwotCi0JaWYgKGkgPj0gcHJlZml4X2xlbikKLQkJcmV0dXJuIGluOwotCi0Jc3RyYnVmX3Jlc2V0KHNiKTsKLQlzdHJidWZfZ3JvdyhzYiwgbGVuKTsKLQotCXdoaWxlIChpIDwgcHJlZml4X2xlbikgewotCQlpZiAocHJlZml4W2ldID09ICcvJykKLQkJCXN0cmJ1Zl9hZGRzdHIoc2IsICIuLi8iKTsKLQkJaSsrOwotCX0KLQlzdHJidWZfYWRkKHNiLCBpbiwgbGVuKTsKLQotCXJldHVybiBzYi0+YnVmOwotfQotCiAvKiBxdW90ZSBwYXRoIGFzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBwcmVmaXggKi8KLWNoYXIgKnF1b3RlX3BhdGhfcmVsYXRpdmUoY29uc3QgY2hhciAqaW4sIGludCBsZW4sCi0JCQkgIHN0cnVjdCBzdHJidWYgKm91dCwgY29uc3QgY2hhciAqcHJlZml4KQorY2hhciAqcXVvdGVfcGF0aF9yZWxhdGl2ZShjb25zdCBjaGFyICppbiwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJICBzdHJ1Y3Qgc3RyYnVmICpvdXQpCiB7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwotCWNvbnN0IGNoYXIgKnJlbCA9IHBhdGhfcmVsYXRpdmUoaW4sIGxlbiwgJnNiLCBwcmVmaXgsIC0xKTsKKwljb25zdCBjaGFyICpyZWwgPSByZWxhdGl2ZV9wYXRoKGluLCBwcmVmaXgsICZzYik7CiAJc3RyYnVmX3Jlc2V0KG91dCk7CiAJcXVvdGVfY19zdHlsZV9jb3VudGVkKHJlbCwgc3RybGVuKHJlbCksIG91dCwgTlVMTCwgMCk7CiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIAotCWlmICghb3V0LT5sZW4pCi0JCXN0cmJ1Zl9hZGRzdHIob3V0LCAiLi8iKTsKLQogCXJldHVybiBvdXQtPmJ1ZjsKIH0KIApkaWZmIC0tZ2l0IGEvcXVvdGUuaCBiL3F1b3RlLmgKaW5kZXggMTMzMTU1YS4uZWQxMTBhNSAxMDA2NDQKLS0tIGEvcXVvdGUuaAorKysgYi9xdW90ZS5oCkBAIC02MCwxMyArNjAsMTIgQEAKIGV4dGVybiB2b2lkIHdyaXRlX25hbWVfcXVvdGVkKGNvbnN0IGNoYXIgKm5hbWUsIEZJTEUgKiwgaW50IHRlcm1pbmF0b3IpOwogZXh0ZXJuIHZvaWQgd3JpdGVfbmFtZV9xdW90ZWRwZngoY29uc3QgY2hhciAqcGZ4LCBzaXplX3QgcGZ4bGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgRklMRSAqLCBpbnQgdGVybWluYXRvcik7Ci1leHRlcm4gdm9pZCB3cml0ZV9uYW1lX3F1b3RlZF9yZWxhdGl2ZShjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgbGVuLAotCQljb25zdCBjaGFyICpwcmVmaXgsIHNpemVfdCBwcmVmaXhfbGVuLAorZXh0ZXJuIHZvaWQgd3JpdGVfbmFtZV9xdW90ZWRfcmVsYXRpdmUoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqcHJlZml4LAogCQlGSUxFICpmcCwgaW50IHRlcm1pbmF0b3IpOwogCiAvKiBxdW90ZSBwYXRoIGFzIHJlbGF0aXZlIHRvIHRoZSBnaXZlbiBwcmVmaXggKi8KLWV4dGVybiBjaGFyICpxdW90ZV9wYXRoX3JlbGF0aXZlKGNvbnN0IGNoYXIgKmluLCBpbnQgbGVuLAotCQkJICBzdHJ1Y3Qgc3RyYnVmICpvdXQsIGNvbnN0IGNoYXIgKnByZWZpeCk7CitleHRlcm4gY2hhciAqcXVvdGVfcGF0aF9yZWxhdGl2ZShjb25zdCBjaGFyICppbiwgY29uc3QgY2hhciAqcHJlZml4LAorCQkJICBzdHJ1Y3Qgc3RyYnVmICpvdXQpOwogCiAvKiBxdW90aW5nIGFzIGEgc3RyaW5nIGxpdGVyYWwgZm9yIG90aGVyIGxhbmd1YWdlcyAqLwogZXh0ZXJuIHZvaWQgcGVybF9xdW90ZV9wcmludChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKnNyYyk7CmRpZmYgLS1naXQgYS9yZWFkLWNhY2hlLmMgYi9yZWFkLWNhY2hlLmMKaW5kZXggZDk3ZTNiZi4uYzNkNWUzNSAxMDA2NDQKLS0tIGEvcmVhZC1jYWNoZS5jCisrKyBiL3JlYWQtY2FjaGUuYwpAQCAtNjcsNiArNjcsNjEgQEAKIAlhZGRfaW5kZXhfZW50cnkoaXN0YXRlLCBuZXcsIEFERF9DQUNIRV9PS19UT19BRER8QUREX0NBQ0hFX09LX1RPX1JFUExBQ0UpOwogfQogCit2b2lkIGZpbGxfc3RhdF9kYXRhKHN0cnVjdCBzdGF0X2RhdGEgKnNkLCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisJc2QtPnNkX2N0aW1lLnNlYyA9ICh1bnNpZ25lZCBpbnQpc3QtPnN0X2N0aW1lOworCXNkLT5zZF9tdGltZS5zZWMgPSAodW5zaWduZWQgaW50KXN0LT5zdF9tdGltZTsKKwlzZC0+c2RfY3RpbWUubnNlYyA9IFNUX0NUSU1FX05TRUMoKnN0KTsKKwlzZC0+c2RfbXRpbWUubnNlYyA9IFNUX01USU1FX05TRUMoKnN0KTsKKwlzZC0+c2RfZGV2ID0gc3QtPnN0X2RldjsKKwlzZC0+c2RfaW5vID0gc3QtPnN0X2lubzsKKwlzZC0+c2RfdWlkID0gc3QtPnN0X3VpZDsKKwlzZC0+c2RfZ2lkID0gc3QtPnN0X2dpZDsKKwlzZC0+c2Rfc2l6ZSA9IHN0LT5zdF9zaXplOworfQorCitpbnQgbWF0Y2hfc3RhdF9kYXRhKGNvbnN0IHN0cnVjdCBzdGF0X2RhdGEgKnNkLCBzdHJ1Y3Qgc3RhdCAqc3QpCit7CisJaW50IGNoYW5nZWQgPSAwOworCisJaWYgKHNkLT5zZF9tdGltZS5zZWMgIT0gKHVuc2lnbmVkIGludClzdC0+c3RfbXRpbWUpCisJCWNoYW5nZWQgfD0gTVRJTUVfQ0hBTkdFRDsKKwlpZiAodHJ1c3RfY3RpbWUgJiYgY2hlY2tfc3RhdCAmJgorCSAgICBzZC0+c2RfY3RpbWUuc2VjICE9ICh1bnNpZ25lZCBpbnQpc3QtPnN0X2N0aW1lKQorCQljaGFuZ2VkIHw9IENUSU1FX0NIQU5HRUQ7CisKKyNpZmRlZiBVU0VfTlNFQworCWlmIChjaGVja19zdGF0ICYmIHNkLT5zZF9tdGltZS5uc2VjICE9IFNUX01USU1FX05TRUMoKnN0KSkKKwkJY2hhbmdlZCB8PSBNVElNRV9DSEFOR0VEOworCWlmICh0cnVzdF9jdGltZSAmJiBjaGVja19zdGF0ICYmCisJICAgIHNkLT5zZF9jdGltZS5uc2VjICE9IFNUX0NUSU1FX05TRUMoKnN0KSkKKwkJY2hhbmdlZCB8PSBDVElNRV9DSEFOR0VEOworI2VuZGlmCisKKwlpZiAoY2hlY2tfc3RhdCkgeworCQlpZiAoc2QtPnNkX3VpZCAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfdWlkIHx8CisJCQlzZC0+c2RfZ2lkICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9naWQpCisJCQljaGFuZ2VkIHw9IE9XTkVSX0NIQU5HRUQ7CisJCWlmIChzZC0+c2RfaW5vICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9pbm8pCisJCQljaGFuZ2VkIHw9IElOT0RFX0NIQU5HRUQ7CisJfQorCisjaWZkZWYgVVNFX1NUREVWCisJLyoKKwkgKiBzdF9kZXYgYnJlYWtzIG9uIG5ldHdvcmsgZmlsZXN5c3RlbXMgd2hlcmUgZGlmZmVyZW50CisJICogY2xpZW50cyB3aWxsIGhhdmUgZGlmZmVyZW50IHZpZXdzIG9mIHdoYXQgImRldmljZSIKKwkgKiB0aGUgZmlsZXN5c3RlbSBpcyBvbgorCSAqLworCWlmIChjaGVja19zdGF0ICYmIHNkLT5zZF9kZXYgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X2RldikKKwkJCWNoYW5nZWQgfD0gSU5PREVfQ0hBTkdFRDsKKyNlbmRpZgorCisJaWYgKHNkLT5zZF9zaXplICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF9zaXplKQorCQljaGFuZ2VkIHw9IERBVEFfQ0hBTkdFRDsKKworCXJldHVybiBjaGFuZ2VkOworfQorCiAvKgogICogVGhpcyBvbmx5IHVwZGF0ZXMgdGhlICJub24tY3JpdGljYWwiIHBhcnRzIG9mIHRoZSBkaXJlY3RvcnkKICAqIGNhY2hlLCBpZSB0aGUgcGFydHMgdGhhdCBhcmVuJ3QgdHJhY2tlZCBieSBHSVQsIGFuZCBvbmx5IHVzZWQKQEAgLTc0LDE1ICsxMjksNyBAQAogICovCiB2b2lkIGZpbGxfc3RhdF9jYWNoZV9pbmZvKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQljZS0+Y2VfY3RpbWUuc2VjID0gKHVuc2lnbmVkIGludClzdC0+c3RfY3RpbWU7Ci0JY2UtPmNlX210aW1lLnNlYyA9ICh1bnNpZ25lZCBpbnQpc3QtPnN0X210aW1lOwotCWNlLT5jZV9jdGltZS5uc2VjID0gU1RfQ1RJTUVfTlNFQygqc3QpOwotCWNlLT5jZV9tdGltZS5uc2VjID0gU1RfTVRJTUVfTlNFQygqc3QpOwotCWNlLT5jZV9kZXYgPSBzdC0+c3RfZGV2OwotCWNlLT5jZV9pbm8gPSBzdC0+c3RfaW5vOwotCWNlLT5jZV91aWQgPSBzdC0+c3RfdWlkOwotCWNlLT5jZV9naWQgPSBzdC0+c3RfZ2lkOwotCWNlLT5jZV9zaXplID0gc3QtPnN0X3NpemU7CisJZmlsbF9zdGF0X2RhdGEoJmNlLT5jZV9zdGF0X2RhdGEsIHN0KTsKIAogCWlmIChhc3N1bWVfdW5jaGFuZ2VkKQogCQljZS0+Y2VfZmxhZ3MgfD0gQ0VfVkFMSUQ7CkBAIC05MSw3ICsxMzgsNyBAQAogCQljZV9tYXJrX3VwdG9kYXRlKGNlKTsKIH0KIAotc3RhdGljIGludCBjZV9jb21wYXJlX2RhdGEoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0KQorc3RhdGljIGludCBjZV9jb21wYXJlX2RhdGEoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0KQogewogCWludCBtYXRjaCA9IC0xOwogCWludCBmZCA9IG9wZW4oY2UtPm5hbWUsIE9fUkRPTkxZKTsKQEAgLTEwNSw3ICsxNTIsNyBAQAogCXJldHVybiBtYXRjaDsKIH0KIAotc3RhdGljIGludCBjZV9jb21wYXJlX2xpbmsoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc2l6ZV90IGV4cGVjdGVkX3NpemUpCitzdGF0aWMgaW50IGNlX2NvbXBhcmVfbGluayhjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzaXplX3QgZXhwZWN0ZWRfc2l6ZSkKIHsKIAlpbnQgbWF0Y2ggPSAtMTsKIAl2b2lkICpidWZmZXI7CkBAIC0xMjYsNyArMTczLDcgQEAKIAlyZXR1cm4gbWF0Y2g7CiB9CiAKLXN0YXRpYyBpbnQgY2VfY29tcGFyZV9naXRsaW5rKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCitzdGF0aWMgaW50IGNlX2NvbXBhcmVfZ2l0bGluayhjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlKQogewogCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAKQEAgLTE0Myw3ICsxOTAsNyBAQAogCXJldHVybiBoYXNoY21wKHNoYTEsIGNlLT5zaGExKTsKIH0KIAotc3RhdGljIGludCBjZV9tb2RpZmllZF9jaGVja19mcyhzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QpCitzdGF0aWMgaW50IGNlX21vZGlmaWVkX2NoZWNrX2ZzKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCkKIHsKIAlzd2l0Y2ggKHN0LT5zdF9tb2RlICYgU19JRk1UKSB7CiAJY2FzZSBTX0lGUkVHOgpAQCAtMTYzLDcgKzIxMCw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY2VfbWF0Y2hfc3RhdF9iYXNpYyhzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QpCitzdGF0aWMgaW50IGNlX21hdGNoX3N0YXRfYmFzaWMoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0KQogewogCXVuc2lnbmVkIGludCBjaGFuZ2VkID0gMDsKIApAQCAtMTk1LDQzICsyNDIsMTEgQEAKIAlkZWZhdWx0OgogCQlkaWUoImludGVybmFsIGVycm9yOiBjZV9tb2RlIGlzICVvIiwgY2UtPmNlX21vZGUpOwogCX0KLQlpZiAoY2UtPmNlX210aW1lLnNlYyAhPSAodW5zaWduZWQgaW50KXN0LT5zdF9tdGltZSkKLQkJY2hhbmdlZCB8PSBNVElNRV9DSEFOR0VEOwotCWlmICh0cnVzdF9jdGltZSAmJiBjaGVja19zdGF0ICYmCi0JICAgIGNlLT5jZV9jdGltZS5zZWMgIT0gKHVuc2lnbmVkIGludClzdC0+c3RfY3RpbWUpCi0JCWNoYW5nZWQgfD0gQ1RJTUVfQ0hBTkdFRDsKIAotI2lmZGVmIFVTRV9OU0VDCi0JaWYgKGNoZWNrX3N0YXQgJiYgY2UtPmNlX210aW1lLm5zZWMgIT0gU1RfTVRJTUVfTlNFQygqc3QpKQotCQljaGFuZ2VkIHw9IE1USU1FX0NIQU5HRUQ7Ci0JaWYgKHRydXN0X2N0aW1lICYmIGNoZWNrX3N0YXQgJiYKLQkgICAgY2UtPmNlX2N0aW1lLm5zZWMgIT0gU1RfQ1RJTUVfTlNFQygqc3QpKQotCQljaGFuZ2VkIHw9IENUSU1FX0NIQU5HRUQ7Ci0jZW5kaWYKLQotCWlmIChjaGVja19zdGF0KSB7Ci0JCWlmIChjZS0+Y2VfdWlkICE9ICh1bnNpZ25lZCBpbnQpIHN0LT5zdF91aWQgfHwKLQkJCWNlLT5jZV9naWQgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X2dpZCkKLQkJCWNoYW5nZWQgfD0gT1dORVJfQ0hBTkdFRDsKLQkJaWYgKGNlLT5jZV9pbm8gIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X2lubykKLQkJCWNoYW5nZWQgfD0gSU5PREVfQ0hBTkdFRDsKLQl9Ci0KLSNpZmRlZiBVU0VfU1RERVYKLQkvKgotCSAqIHN0X2RldiBicmVha3Mgb24gbmV0d29yayBmaWxlc3lzdGVtcyB3aGVyZSBkaWZmZXJlbnQKLQkgKiBjbGllbnRzIHdpbGwgaGF2ZSBkaWZmZXJlbnQgdmlld3Mgb2Ygd2hhdCAiZGV2aWNlIgotCSAqIHRoZSBmaWxlc3lzdGVtIGlzIG9uCi0JICovCi0JaWYgKGNoZWNrX3N0YXQgJiYgY2UtPmNlX2RldiAhPSAodW5zaWduZWQgaW50KSBzdC0+c3RfZGV2KQotCQkJY2hhbmdlZCB8PSBJTk9ERV9DSEFOR0VEOwotI2VuZGlmCi0KLQlpZiAoY2UtPmNlX3NpemUgIT0gKHVuc2lnbmVkIGludCkgc3QtPnN0X3NpemUpCi0JCWNoYW5nZWQgfD0gREFUQV9DSEFOR0VEOworCWNoYW5nZWQgfD0gbWF0Y2hfc3RhdF9kYXRhKCZjZS0+Y2Vfc3RhdF9kYXRhLCBzdCk7CiAKIAkvKiBSYWNpbHkgc211ZGdlZCBlbnRyeT8gKi8KLQlpZiAoIWNlLT5jZV9zaXplKSB7CisJaWYgKCFjZS0+Y2Vfc3RhdF9kYXRhLnNkX3NpemUpIHsKIAkJaWYgKCFpc19lbXB0eV9ibG9iX3NoYTEoY2UtPnNoYTEpKQogCQkJY2hhbmdlZCB8PSBEQVRBX0NIQU5HRUQ7CiAJfQpAQCAtMjM5LDIzICsyNTQsMjQgQEAKIAlyZXR1cm4gY2hhbmdlZDsKIH0KIAotc3RhdGljIGludCBpc19yYWN5X3RpbWVzdGFtcChjb25zdCBzdHJ1Y3QgaW5kZXhfc3RhdGUgKmlzdGF0ZSwgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKK3N0YXRpYyBpbnQgaXNfcmFjeV90aW1lc3RhbXAoY29uc3Qgc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCiB7CiAJcmV0dXJuICghU19JU0dJVExJTksoY2UtPmNlX21vZGUpICYmCiAJCWlzdGF0ZS0+dGltZXN0YW1wLnNlYyAmJgogI2lmZGVmIFVTRV9OU0VDCiAJCSAvKiBuYW5vc2Vjb25kIHRpbWVzdGFtcGVkIGZpbGVzIGNhbiBhbHNvIGJlIHJhY3khICovCi0JCShpc3RhdGUtPnRpbWVzdGFtcC5zZWMgPCBjZS0+Y2VfbXRpbWUuc2VjIHx8Ci0JCSAoaXN0YXRlLT50aW1lc3RhbXAuc2VjID09IGNlLT5jZV9tdGltZS5zZWMgJiYKLQkJICBpc3RhdGUtPnRpbWVzdGFtcC5uc2VjIDw9IGNlLT5jZV9tdGltZS5uc2VjKSkKKwkJKGlzdGF0ZS0+dGltZXN0YW1wLnNlYyA8IGNlLT5jZV9zdGF0X2RhdGEuc2RfbXRpbWUuc2VjIHx8CisJCSAoaXN0YXRlLT50aW1lc3RhbXAuc2VjID09IGNlLT5jZV9zdGF0X2RhdGEuc2RfbXRpbWUuc2VjICYmCisJCSAgaXN0YXRlLT50aW1lc3RhbXAubnNlYyA8PSBjZS0+Y2Vfc3RhdF9kYXRhLnNkX210aW1lLm5zZWMpKQogI2Vsc2UKLQkJaXN0YXRlLT50aW1lc3RhbXAuc2VjIDw9IGNlLT5jZV9tdGltZS5zZWMKKwkJaXN0YXRlLT50aW1lc3RhbXAuc2VjIDw9IGNlLT5jZV9zdGF0X2RhdGEuc2RfbXRpbWUuc2VjCiAjZW5kaWYKIAkJICk7CiB9CiAKIGludCBpZV9tYXRjaF9zdGF0KGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLAotCQkgIHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCBzdGF0ICpzdCwKKwkJICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QsCiAJCSAgdW5zaWduZWQgaW50IG9wdGlvbnMpCiB7CiAJdW5zaWduZWQgaW50IGNoYW5nZWQ7CkBAIC0zMTEsNyArMzI3LDggQEAKIH0KIAogaW50IGllX21vZGlmaWVkKGNvbnN0IHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLAotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3Qgc3RhdCAqc3QsIHVuc2lnbmVkIGludCBvcHRpb25zKQorCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQlzdHJ1Y3Qgc3RhdCAqc3QsIHVuc2lnbmVkIGludCBvcHRpb25zKQogewogCWludCBjaGFuZ2VkLCBjaGFuZ2VkX2ZzOwogCkBAIC0zNDAsNyArMzU3LDcgQEAKIAkgKiB0aGVuIHdlIGtub3cgaXQgaXMuCiAJICovCiAJaWYgKChjaGFuZ2VkICYgREFUQV9DSEFOR0VEKSAmJgotCSAgICAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpIHx8IGNlLT5jZV9zaXplICE9IDApKQorCSAgICAoU19JU0dJVExJTksoY2UtPmNlX21vZGUpIHx8IGNlLT5jZV9zdGF0X2RhdGEuc2Rfc2l6ZSAhPSAwKSkKIAkJcmV0dXJuIGNoYW5nZWQ7CiAKIAljaGFuZ2VkX2ZzID0gY2VfbW9kaWZpZWRfY2hlY2tfZnMoY2UsIHN0KTsKQEAgLTQ3Miw3ICs0ODksNyBAQAogfQogCiAvKgotICogUmVtb3ZlIGFsbCBjYWNoZSBlbnRlbnRyaWVzIG1hcmtlZCBmb3IgcmVtb3ZhbCwgdGhhdCBpcyB3aGVyZQorICogUmVtb3ZlIGFsbCBjYWNoZSBlbnRyaWVzIG1hcmtlZCBmb3IgcmVtb3ZhbCwgdGhhdCBpcyB3aGVyZQogICogQ0VfUkVNT1ZFIGlzIHNldCBpbiBjZV9mbGFncy4gIFRoaXMgaXMgbXVjaCBtb3JlIGVmZmVjdGl2ZSB0aGFuCiAgKiBjYWxsaW5nIHJlbW92ZV9pbmRleF9lbnRyeV9hdCgpIGZvciBlYWNoIGVudHJ5IHRvIGJlIHJlbW92ZWQuCiAgKi8KQEAgLTcwNSw3ICs3MjIsNyBAQAogCXJldHVybiBjZTsKIH0KIAotaW50IGNlX3NhbWVfbmFtZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmEsIHN0cnVjdCBjYWNoZV9lbnRyeSAqYikKK2ludCBjZV9zYW1lX25hbWUoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICphLCBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmIpCiB7CiAJaW50IGxlbiA9IGNlX25hbWVsZW4oYSk7CiAJcmV0dXJuIGNlX25hbWVsZW4oYikgPT0gbGVuICYmICFtZW1jbXAoYS0+bmFtZSwgYi0+bmFtZSwgbGVuKTsKQEAgLTEzMjIsMTYgKzEzMzksMTYgQEAKIHsKIAlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0geG1hbGxvYyhjYWNoZV9lbnRyeV9zaXplKGxlbikpOwogCi0JY2UtPmNlX2N0aW1lLnNlYyA9IG50b2hfbChvbmRpc2stPmN0aW1lLnNlYyk7Ci0JY2UtPmNlX210aW1lLnNlYyA9IG50b2hfbChvbmRpc2stPm10aW1lLnNlYyk7Ci0JY2UtPmNlX2N0aW1lLm5zZWMgPSBudG9oX2wob25kaXNrLT5jdGltZS5uc2VjKTsKLQljZS0+Y2VfbXRpbWUubnNlYyA9IG50b2hfbChvbmRpc2stPm10aW1lLm5zZWMpOwotCWNlLT5jZV9kZXYgICA9IG50b2hfbChvbmRpc2stPmRldik7Ci0JY2UtPmNlX2lubyAgID0gbnRvaF9sKG9uZGlzay0+aW5vKTsKKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX2N0aW1lLnNlYyA9IG50b2hfbChvbmRpc2stPmN0aW1lLnNlYyk7CisJY2UtPmNlX3N0YXRfZGF0YS5zZF9tdGltZS5zZWMgPSBudG9oX2wob25kaXNrLT5tdGltZS5zZWMpOworCWNlLT5jZV9zdGF0X2RhdGEuc2RfY3RpbWUubnNlYyA9IG50b2hfbChvbmRpc2stPmN0aW1lLm5zZWMpOworCWNlLT5jZV9zdGF0X2RhdGEuc2RfbXRpbWUubnNlYyA9IG50b2hfbChvbmRpc2stPm10aW1lLm5zZWMpOworCWNlLT5jZV9zdGF0X2RhdGEuc2RfZGV2ICAgPSBudG9oX2wob25kaXNrLT5kZXYpOworCWNlLT5jZV9zdGF0X2RhdGEuc2RfaW5vICAgPSBudG9oX2wob25kaXNrLT5pbm8pOwogCWNlLT5jZV9tb2RlICA9IG50b2hfbChvbmRpc2stPm1vZGUpOwotCWNlLT5jZV91aWQgICA9IG50b2hfbChvbmRpc2stPnVpZCk7Ci0JY2UtPmNlX2dpZCAgID0gbnRvaF9sKG9uZGlzay0+Z2lkKTsKLQljZS0+Y2Vfc2l6ZSAgPSBudG9oX2wob25kaXNrLT5zaXplKTsKKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX3VpZCAgID0gbnRvaF9sKG9uZGlzay0+dWlkKTsKKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX2dpZCAgID0gbnRvaF9sKG9uZGlzay0+Z2lkKTsKKwljZS0+Y2Vfc3RhdF9kYXRhLnNkX3NpemUgID0gbnRvaF9sKG9uZGlzay0+c2l6ZSk7CiAJY2UtPmNlX2ZsYWdzID0gZmxhZ3MgJiB+Q0VfTkFNRU1BU0s7CiAJY2UtPmNlX25hbWVsZW4gPSBsZW47CiAJaGFzaGNweShjZS0+c2hhMSwgb25kaXNrLT5zaGExKTsKQEAgLTE2MDksNyArMTYyNiw3IEBACiAJICogVGhlIG9ubHkgdGhpbmcgd2UgY2FyZSBhYm91dCBpbiB0aGlzIGZ1bmN0aW9uIGlzIHRvIHNtdWRnZSB0aGUKIAkgKiBmYWxzZWx5IGNsZWFuIGVudHJ5IGR1ZSB0byB0b3VjaC11cGRhdGUtdG91Y2ggcmFjZSwgc28gd2UgbGVhdmUKIAkgKiBldmVyeXRoaW5nIGVsc2UgYXMgdGhleSBhcmUuICBXZSBhcmUgY2FsbGVkIGZvciBlbnRyaWVzIHdob3NlCi0JICogY2VfbXRpbWUgbWF0Y2ggdGhlIGluZGV4IGZpbGUgbXRpbWUuCisJICogY2Vfc3RhdF9kYXRhLnNkX210aW1lIG1hdGNoIHRoZSBpbmRleCBmaWxlIG10aW1lLgogCSAqCiAJICogTm90ZSB0aGF0IHRoaXMgYWN0dWFsbHkgZG9lcyBub3QgZG8gbXVjaCBmb3IgZ2l0bGlua3MsIGZvcgogCSAqIHdoaWNoIGNlX21hdGNoX3N0YXRfYmFzaWMoKSBhbHdheXMgZ29lcyB0byB0aGUgYWN0dWFsCkBAIC0xNjQ4LDcgKzE2NjUsNyBAQAogCQkgKiBmaWxlLCBhbmQgbmV2ZXIgY2FsbHMgdXMsIHNvIHRoZSBjYWNoZWQgc2l6ZSBpbmZvcm1hdGlvbgogCQkgKiBmb3IgImZyb3R6IiBzdGF5cyA2IHdoaWNoIGRvZXMgbm90IG1hdGNoIHRoZSBmaWxlc3lzdGVtLgogCQkgKi8KLQkJY2UtPmNlX3NpemUgPSAwOworCQljZS0+Y2Vfc3RhdF9kYXRhLnNkX3NpemUgPSAwOwogCX0KIH0KIApAQCAtMTY1OCwxNiArMTY3NSwxNiBAQAogewogCXNob3J0IGZsYWdzOwogCi0Jb25kaXNrLT5jdGltZS5zZWMgPSBodG9ubChjZS0+Y2VfY3RpbWUuc2VjKTsKLQlvbmRpc2stPm10aW1lLnNlYyA9IGh0b25sKGNlLT5jZV9tdGltZS5zZWMpOwotCW9uZGlzay0+Y3RpbWUubnNlYyA9IGh0b25sKGNlLT5jZV9jdGltZS5uc2VjKTsKLQlvbmRpc2stPm10aW1lLm5zZWMgPSBodG9ubChjZS0+Y2VfbXRpbWUubnNlYyk7Ci0Jb25kaXNrLT5kZXYgID0gaHRvbmwoY2UtPmNlX2Rldik7Ci0Jb25kaXNrLT5pbm8gID0gaHRvbmwoY2UtPmNlX2lubyk7CisJb25kaXNrLT5jdGltZS5zZWMgPSBodG9ubChjZS0+Y2Vfc3RhdF9kYXRhLnNkX2N0aW1lLnNlYyk7CisJb25kaXNrLT5tdGltZS5zZWMgPSBodG9ubChjZS0+Y2Vfc3RhdF9kYXRhLnNkX210aW1lLnNlYyk7CisJb25kaXNrLT5jdGltZS5uc2VjID0gaHRvbmwoY2UtPmNlX3N0YXRfZGF0YS5zZF9jdGltZS5uc2VjKTsKKwlvbmRpc2stPm10aW1lLm5zZWMgPSBodG9ubChjZS0+Y2Vfc3RhdF9kYXRhLnNkX210aW1lLm5zZWMpOworCW9uZGlzay0+ZGV2ICA9IGh0b25sKGNlLT5jZV9zdGF0X2RhdGEuc2RfZGV2KTsKKwlvbmRpc2stPmlubyAgPSBodG9ubChjZS0+Y2Vfc3RhdF9kYXRhLnNkX2lubyk7CiAJb25kaXNrLT5tb2RlID0gaHRvbmwoY2UtPmNlX21vZGUpOwotCW9uZGlzay0+dWlkICA9IGh0b25sKGNlLT5jZV91aWQpOwotCW9uZGlzay0+Z2lkICA9IGh0b25sKGNlLT5jZV9naWQpOwotCW9uZGlzay0+c2l6ZSA9IGh0b25sKGNlLT5jZV9zaXplKTsKKwlvbmRpc2stPnVpZCAgPSBodG9ubChjZS0+Y2Vfc3RhdF9kYXRhLnNkX3VpZCk7CisJb25kaXNrLT5naWQgID0gaHRvbmwoY2UtPmNlX3N0YXRfZGF0YS5zZF9naWQpOworCW9uZGlzay0+c2l6ZSA9IGh0b25sKGNlLT5jZV9zdGF0X2RhdGEuc2Rfc2l6ZSk7CiAJaGFzaGNweShvbmRpc2stPnNoYTEsIGNlLT5zaGExKTsKIAogCWZsYWdzID0gY2UtPmNlX2ZsYWdzOwpAQCAtMTc0Myw3ICsxNzYwLDcgQEAKIH0KIAogLyoKLSAqIE9wcG9ydHVuaXN0aWNseSB1cGRhdGUgdGhlIGluZGV4IGJ1dCBkbyBub3QgY29tcGxhaW4gaWYgd2UgY2FuJ3QKKyAqIE9wcG9ydHVuaXN0aWNhbGx5IHVwZGF0ZSB0aGUgaW5kZXggYnV0IGRvIG5vdCBjb21wbGFpbiBpZiB3ZSBjYW4ndAogICovCiB2b2lkIHVwZGF0ZV9pbmRleF9pZl9hYmxlKHN0cnVjdCBpbmRleF9zdGF0ZSAqaXN0YXRlLCBzdHJ1Y3QgbG9ja19maWxlICpsb2NrZmlsZSkKIHsKQEAgLTE5MzQsMyArMTk1MSwzMyBAQAogCQkqc2l6ZSA9IHN6OwogCXJldHVybiBkYXRhOwogfQorCit2b2lkIHN0YXRfdmFsaWRpdHlfY2xlYXIoc3RydWN0IHN0YXRfdmFsaWRpdHkgKnN2KQoreworCWZyZWUoc3YtPnNkKTsKKwlzdi0+c2QgPSBOVUxMOworfQorCitpbnQgc3RhdF92YWxpZGl0eV9jaGVjayhzdHJ1Y3Qgc3RhdF92YWxpZGl0eSAqc3YsIGNvbnN0IGNoYXIgKnBhdGgpCit7CisJc3RydWN0IHN0YXQgc3Q7CisKKwlpZiAoc3RhdChwYXRoLCAmc3QpIDwgMCkKKwkJcmV0dXJuIHN2LT5zZCA9PSBOVUxMOworCWlmICghc3YtPnNkKQorCQlyZXR1cm4gMDsKKwlyZXR1cm4gU19JU1JFRyhzdC5zdF9tb2RlKSAmJiAhbWF0Y2hfc3RhdF9kYXRhKHN2LT5zZCwgJnN0KTsKK30KKwordm9pZCBzdGF0X3ZhbGlkaXR5X3VwZGF0ZShzdHJ1Y3Qgc3RhdF92YWxpZGl0eSAqc3YsIGludCBmZCkKK3sKKwlzdHJ1Y3Qgc3RhdCBzdDsKKworCWlmIChmc3RhdChmZCwgJnN0KSA8IDAgfHwgIVNfSVNSRUcoc3Quc3RfbW9kZSkpCisJCXN0YXRfdmFsaWRpdHlfY2xlYXIoc3YpOworCWVsc2UgeworCQlpZiAoIXN2LT5zZCkKKwkJCXN2LT5zZCA9IHhjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzdGF0X2RhdGEpKTsKKwkJZmlsbF9zdGF0X2RhdGEoc3YtPnNkLCAmc3QpOworCX0KK30KZGlmZiAtLWdpdCBhL3JlZnMuYyBiL3JlZnMuYwppbmRleCBkZTJkOGViLi43YjA4YTM3IDEwMDY0NAotLS0gYS9yZWZzLmMKKysrIGIvcmVmcy5jCkBAIC03Miw2ICs3MiwxMCBAQAogewogCWludCBjb21wb25lbnRfbGVuLCBjb21wb25lbnRfY291bnQgPSAwOwogCisJaWYgKCFzdHJjbXAocmVmbmFtZSwgIkAiKSkKKwkJLyogUmVmbmFtZSBpcyBhIHNpbmdsZSBjaGFyYWN0ZXIgJ0AnLiAqLworCQlyZXR1cm4gLTE7CisKIAl3aGlsZSAoMSkgewogCQkvKiBXZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgcGF0aCBjb21wb25lbnQuICovCiAJCWNvbXBvbmVudF9sZW4gPSBjaGVja19yZWZuYW1lX2NvbXBvbmVudChyZWZuYW1lLCBmbGFncyk7CkBAIC0xMDksNyArMTEzLDIwIEBACiAgKiAocmVmX2VudHJ5LT5mbGFnICYgUkVGX0RJUikgaXMgemVyby4KICAqLwogc3RydWN0IHJlZl92YWx1ZSB7CisJLyoKKwkgKiBUaGUgbmFtZSBvZiB0aGUgb2JqZWN0IHRvIHdoaWNoIHRoaXMgcmVmZXJlbmNlIHJlc29sdmVzCisJICogKHdoaWNoIG1heSBiZSBhIHRhZyBvYmplY3QpLiAgSWYgUkVGX0lTQlJPS0VOLCB0aGlzIGlzCisJICogbnVsbC4gIElmIFJFRl9JU1NZTVJFRiwgdGhlbiB0aGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBvYmplY3QKKwkgKiByZWZlcnJlZCB0byBieSB0aGUgbGFzdCByZWZlcmVuY2UgaW4gdGhlIHN5bWxpbmsgY2hhaW4uCisJICovCiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKKworCS8qCisJICogSWYgUkVGX0tOT1dTX1BFRUxFRCwgdGhlbiB0aGlzIGZpZWxkIGhvbGRzIHRoZSBwZWVsZWQgdmFsdWUKKwkgKiBvZiB0aGlzIHJlZmVyZW5jZSwgb3IgbnVsbCBpZiB0aGUgcmVmZXJlbmNlIGlzIGtub3duIG5vdCB0bworCSAqIGJlIHBlZWxhYmxlLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBwZWVsX3JlZigpIGZvciBhbgorCSAqIGV4YWN0IGRlZmluaXRpb24gb2YgInBlZWxhYmxlIi4KKwkgKi8KIAl1bnNpZ25lZCBjaGFyIHBlZWxlZFsyMF07CiB9OwogCkBAIC0xNTgsNyArMTc1LDE3IEBACiAJc3RydWN0IHJlZl9lbnRyeSAqKmVudHJpZXM7CiB9OwogCi0vKiBJU1NZTVJFRj0weDAxLCBJU1BBQ0tFRD0weDAyLCBhbmQgSVNCUk9LRU49MHgwNCBhcmUgcHVibGljIGludGVyZmFjZXMgKi8KKy8qCisgKiBCaXQgdmFsdWVzIGZvciByZWZfZW50cnk6OmZsYWcuICBSRUZfSVNTWU1SRUY9MHgwMSwKKyAqIFJFRl9JU1BBQ0tFRD0weDAyLCBhbmQgUkVGX0lTQlJPS0VOPTB4MDQgYXJlIHB1YmxpYyB2YWx1ZXM7IHNlZQorICogcmVmcy5oLgorICovCisKKy8qCisgKiBUaGUgZmllbGQgcmVmX2VudHJ5LT51LnZhbHVlLnBlZWxlZCBvZiB0aGlzIHZhbHVlIGVudHJ5IGNvbnRhaW5zCisgKiB0aGUgY29ycmVjdCBwZWVsZWQgdmFsdWUgZm9yIHRoZSByZWZlcmVuY2UsIHdoaWNoIG1pZ2h0IGJlCisgKiBudWxsX3NoYTEgaWYgdGhlIHJlZmVyZW5jZSBpcyBub3QgYSB0YWcgb3IgaWYgaXQgaXMgYnJva2VuLgorICovCiAjZGVmaW5lIFJFRl9LTk9XU19QRUVMRUQgMHgwOAogCiAvKiByZWZfZW50cnkgcmVwcmVzZW50cyBhIGRpcmVjdG9yeSBvZiByZWZlcmVuY2VzICovCkBAIC0zNDMsMTggKzM3MCwxNyBAQAogfQogCiAvKgotICogUmV0dXJuIHRoZSBlbnRyeSB3aXRoIHRoZSBnaXZlbiByZWZuYW1lIGZyb20gdGhlIHJlZl9kaXIKLSAqIChub24tcmVjdXJzaXZlbHkpLCBzb3J0aW5nIGRpciBpZiBuZWNlc3NhcnkuICBSZXR1cm4gTlVMTCBpZiBubwotICogc3VjaCBlbnRyeSBpcyBmb3VuZC4gIGRpciBtdXN0IGFscmVhZHkgYmUgY29tcGxldGUuCisgKiBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBlbnRyeSB3aXRoIHRoZSBnaXZlbiByZWZuYW1lIGZyb20gdGhlCisgKiByZWZfZGlyIChub24tcmVjdXJzaXZlbHkpLCBzb3J0aW5nIGRpciBpZiBuZWNlc3NhcnkuICBSZXR1cm4gLTEgaWYKKyAqIG5vIHN1Y2ggZW50cnkgaXMgZm91bmQuICBkaXIgbXVzdCBhbHJlYWR5IGJlIGNvbXBsZXRlLgogICovCi1zdGF0aWMgc3RydWN0IHJlZl9lbnRyeSAqc2VhcmNoX3JlZl9kaXIoc3RydWN0IHJlZl9kaXIgKmRpciwKLQkJCQkJY29uc3QgY2hhciAqcmVmbmFtZSwgc2l6ZV90IGxlbikKK3N0YXRpYyBpbnQgc2VhcmNoX3JlZl9kaXIoc3RydWN0IHJlZl9kaXIgKmRpciwgY29uc3QgY2hhciAqcmVmbmFtZSwgc2l6ZV90IGxlbikKIHsKIAlzdHJ1Y3QgcmVmX2VudHJ5ICoqcjsKIAlzdHJ1Y3Qgc3RyaW5nX3NsaWNlIGtleTsKIAogCWlmIChyZWZuYW1lID09IE5VTEwgfHwgIWRpci0+bnIpCi0JCXJldHVybiBOVUxMOworCQlyZXR1cm4gLTE7CiAKIAlzb3J0X3JlZl9kaXIoZGlyKTsKIAlrZXkubGVuID0gbGVuOwpAQCAtMzYzLDkgKzM4OSw5IEBACiAJCSAgICByZWZfZW50cnlfY21wX3NzbGljZSk7CiAKIAlpZiAociA9PSBOVUxMKQotCQlyZXR1cm4gTlVMTDsKKwkJcmV0dXJuIC0xOwogCi0JcmV0dXJuICpyOworCXJldHVybiByIC0gZGlyLT5lbnRyaWVzOwogfQogCiAvKgpAQCAtMzc5LDggKzQwNSw5IEBACiAJCQkJCSBjb25zdCBjaGFyICpzdWJkaXJuYW1lLCBzaXplX3QgbGVuLAogCQkJCQkgaW50IG1rZGlyKQogewotCXN0cnVjdCByZWZfZW50cnkgKmVudHJ5ID0gc2VhcmNoX3JlZl9kaXIoZGlyLCBzdWJkaXJuYW1lLCBsZW4pOwotCWlmICghZW50cnkpIHsKKwlpbnQgZW50cnlfaW5kZXggPSBzZWFyY2hfcmVmX2RpcihkaXIsIHN1YmRpcm5hbWUsIGxlbik7CisJc3RydWN0IHJlZl9lbnRyeSAqZW50cnk7CisJaWYgKGVudHJ5X2luZGV4ID09IC0xKSB7CiAJCWlmICghbWtkaXIpCiAJCQlyZXR1cm4gTlVMTDsKIAkJLyoKQEAgLTM5MSw2ICs0MTgsOCBAQAogCQkgKi8KIAkJZW50cnkgPSBjcmVhdGVfZGlyX2VudHJ5KGRpci0+cmVmX2NhY2hlLCBzdWJkaXJuYW1lLCBsZW4sIDApOwogCQlhZGRfZW50cnlfdG9fZGlyKGRpciwgZW50cnkpOworCX0gZWxzZSB7CisJCWVudHJ5ID0gZGlyLT5lbnRyaWVzW2VudHJ5X2luZGV4XTsKIAl9CiAJcmV0dXJuIGdldF9yZWZfZGlyKGVudHJ5KTsKIH0KQEAgLTQyOSwxMiArNDU4LDY3IEBACiAgKi8KIHN0YXRpYyBzdHJ1Y3QgcmVmX2VudHJ5ICpmaW5kX3JlZihzdHJ1Y3QgcmVmX2RpciAqZGlyLCBjb25zdCBjaGFyICpyZWZuYW1lKQogeworCWludCBlbnRyeV9pbmRleDsKIAlzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeTsKIAlkaXIgPSBmaW5kX2NvbnRhaW5pbmdfZGlyKGRpciwgcmVmbmFtZSwgMCk7CiAJaWYgKCFkaXIpCiAJCXJldHVybiBOVUxMOwotCWVudHJ5ID0gc2VhcmNoX3JlZl9kaXIoZGlyLCByZWZuYW1lLCBzdHJsZW4ocmVmbmFtZSkpOwotCXJldHVybiAoZW50cnkgJiYgIShlbnRyeS0+ZmxhZyAmIFJFRl9ESVIpKSA/IGVudHJ5IDogTlVMTDsKKwllbnRyeV9pbmRleCA9IHNlYXJjaF9yZWZfZGlyKGRpciwgcmVmbmFtZSwgc3RybGVuKHJlZm5hbWUpKTsKKwlpZiAoZW50cnlfaW5kZXggPT0gLTEpCisJCXJldHVybiBOVUxMOworCWVudHJ5ID0gZGlyLT5lbnRyaWVzW2VudHJ5X2luZGV4XTsKKwlyZXR1cm4gKGVudHJ5LT5mbGFnICYgUkVGX0RJUikgPyBOVUxMIDogZW50cnk7Cit9CisKKy8qCisgKiBSZW1vdmUgdGhlIGVudHJ5IHdpdGggdGhlIGdpdmVuIG5hbWUgZnJvbSBkaXIsIHJlY3Vyc2luZyBpbnRvCisgKiBzdWJkaXJlY3RvcmllcyBhcyBuZWNlc3NhcnkuICBJZiByZWZuYW1lIGlzIHRoZSBuYW1lIG9mIGEgZGlyZWN0b3J5CisgKiAoaS5lLiwgZW5kcyB3aXRoICcvJyksIHRoZW4gcmVtb3ZlIHRoZSBkaXJlY3RvcnkgYW5kIGl0cyBjb250ZW50cy4KKyAqIElmIHRoZSByZW1vdmFsIHdhcyBzdWNjZXNzZnVsLCByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzCisgKiByZW1haW5pbmcgaW4gdGhlIGRpcmVjdG9yeSBlbnRyeSB0aGF0IGNvbnRhaW5lZCB0aGUgZGVsZXRlZCBlbnRyeS4KKyAqIElmIHRoZSBuYW1lIHdhcyBub3QgZm91bmQsIHJldHVybiAtMS4gIFBsZWFzZSBub3RlIHRoYXQgdGhpcworICogZnVuY3Rpb24gb25seSBkZWxldGVzIHRoZSBlbnRyeSBmcm9tIHRoZSBjYWNoZTsgaXQgZG9lcyBub3QgZGVsZXRlCisgKiBpdCBmcm9tIHRoZSBmaWxlc3lzdGVtIG9yIGVuc3VyZSB0aGF0IG90aGVyIGNhY2hlIGVudHJpZXMgKHdoaWNoCisgKiBtaWdodCBiZSBzeW1ib2xpYyByZWZlcmVuY2VzIHRvIHRoZSByZW1vdmVkIGVudHJ5KSBhcmUgdXBkYXRlZC4KKyAqIE5vciBkb2VzIGl0IHJlbW92ZSBhbnkgY29udGFpbmluZyBkaXIgZW50cmllcyB0aGF0IG1pZ2h0IGJlIG1hZGUKKyAqIGVtcHR5IGJ5IHRoZSByZW1vdmFsLiAgZGlyIG11c3QgcmVwcmVzZW50IHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5CisgKiBhbmQgbXVzdCBhbHJlYWR5IGJlIGNvbXBsZXRlLgorICovCitzdGF0aWMgaW50IHJlbW92ZV9lbnRyeShzdHJ1Y3QgcmVmX2RpciAqZGlyLCBjb25zdCBjaGFyICpyZWZuYW1lKQoreworCWludCByZWZuYW1lX2xlbiA9IHN0cmxlbihyZWZuYW1lKTsKKwlpbnQgZW50cnlfaW5kZXg7CisJc3RydWN0IHJlZl9lbnRyeSAqZW50cnk7CisJaW50IGlzX2RpciA9IHJlZm5hbWVbcmVmbmFtZV9sZW4gLSAxXSA9PSAnLyc7CisJaWYgKGlzX2RpcikgeworCQkvKgorCQkgKiByZWZuYW1lIHJlcHJlc2VudHMgYSByZWZlcmVuY2UgZGlyZWN0b3J5LiAgUmVtb3ZlCisJCSAqIHRoZSB0cmFpbGluZyBzbGFzaDsgb3RoZXJ3aXNlIHdlIHdpbGwgZ2V0IHRoZQorCQkgKiBkaXJlY3RvcnkgKnJlcHJlc2VudGluZyogcmVmbmFtZSByYXRoZXIgdGhhbiB0aGUKKwkJICogb25lICpjb250YWluaW5nKiBpdC4KKwkJICovCisJCWNoYXIgKmRpcm5hbWUgPSB4bWVtZHVweihyZWZuYW1lLCByZWZuYW1lX2xlbiAtIDEpOworCQlkaXIgPSBmaW5kX2NvbnRhaW5pbmdfZGlyKGRpciwgZGlybmFtZSwgMCk7CisJCWZyZWUoZGlybmFtZSk7CisJfSBlbHNlIHsKKwkJZGlyID0gZmluZF9jb250YWluaW5nX2RpcihkaXIsIHJlZm5hbWUsIDApOworCX0KKwlpZiAoIWRpcikKKwkJcmV0dXJuIC0xOworCWVudHJ5X2luZGV4ID0gc2VhcmNoX3JlZl9kaXIoZGlyLCByZWZuYW1lLCByZWZuYW1lX2xlbik7CisJaWYgKGVudHJ5X2luZGV4ID09IC0xKQorCQlyZXR1cm4gLTE7CisJZW50cnkgPSBkaXItPmVudHJpZXNbZW50cnlfaW5kZXhdOworCisJbWVtbW92ZSgmZGlyLT5lbnRyaWVzW2VudHJ5X2luZGV4XSwKKwkJJmRpci0+ZW50cmllc1tlbnRyeV9pbmRleCArIDFdLAorCQkoZGlyLT5uciAtIGVudHJ5X2luZGV4IC0gMSkgKiBzaXplb2YoKmRpci0+ZW50cmllcykKKwkJKTsKKwlkaXItPm5yLS07CisJaWYgKGRpci0+c29ydGVkID4gZW50cnlfaW5kZXgpCisJCWRpci0+c29ydGVkLS07CisJZnJlZV9yZWZfZW50cnkoZW50cnkpOworCXJldHVybiBkaXItPm5yOwogfQogCiAvKgpAQCAtNTAzLDI4ICs1ODcsNjkgQEAKIAlkaXItPnNvcnRlZCA9IGRpci0+bnIgPSBpOwogfQogCi0jZGVmaW5lIERPX0ZPUl9FQUNIX0lOQ0xVREVfQlJPS0VOIDAxCisvKiBJbmNsdWRlIGJyb2tlbiByZWZlcmVuY2VzIGluIGEgZG9fZm9yX2VhY2hfcmVmKigpIGl0ZXJhdGlvbjogKi8KKyNkZWZpbmUgRE9fRk9SX0VBQ0hfSU5DTFVERV9CUk9LRU4gMHgwMQogCisvKgorICogUmV0dXJuIHRydWUgaWZmIHRoZSByZWZlcmVuY2UgZGVzY3JpYmVkIGJ5IGVudHJ5IGNhbiBiZSByZXNvbHZlZCB0bworICogYW4gb2JqZWN0IGluIHRoZSBkYXRhYmFzZS4gIEVtaXQgYSB3YXJuaW5nIGlmIHRoZSByZWZlcnJlZC10bworICogb2JqZWN0IGRvZXMgbm90IGV4aXN0LgorICovCitzdGF0aWMgaW50IHJlZl9yZXNvbHZlc190b19vYmplY3Qoc3RydWN0IHJlZl9lbnRyeSAqZW50cnkpCit7CisJaWYgKGVudHJ5LT5mbGFnICYgUkVGX0lTQlJPS0VOKQorCQlyZXR1cm4gMDsKKwlpZiAoIWhhc19zaGExX2ZpbGUoZW50cnktPnUudmFsdWUuc2hhMSkpIHsKKwkJZXJyb3IoIiVzIGRvZXMgbm90IHBvaW50IHRvIGEgdmFsaWQgb2JqZWN0ISIsIGVudHJ5LT5uYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCXJldHVybiAxOworfQorCisvKgorICogY3VycmVudF9yZWYgaXMgYSBwZXJmb3JtYW5jZSBoYWNrOiB3aGVuIGl0ZXJhdGluZyBvdmVyIHJlZmVyZW5jZXMKKyAqIHVzaW5nIHRoZSBmb3JfZWFjaF9yZWYqKCkgZnVuY3Rpb25zLCBjdXJyZW50X3JlZiBpcyBzZXQgdG8gdGhlCisgKiBjdXJyZW50IHJlZmVyZW5jZSdzIGVudHJ5IGJlZm9yZSBjYWxsaW5nIHRoZSBjYWxsYmFjayBmdW5jdGlvbi4gIElmCisgKiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gY2FsbHMgcGVlbF9yZWYoKSwgdGhlbiBwZWVsX3JlZigpIGZpcnN0CisgKiBjaGVja3Mgd2hldGhlciB0aGUgcmVmZXJlbmNlIHRvIGJlIHBlZWxlZCBpcyB0aGUgY3VycmVudCByZWZlcmVuY2UKKyAqIChpdCB1c3VhbGx5IGlzKSBhbmQgaWYgc28sIHJldHVybnMgdGhhdCByZWZlcmVuY2UncyBwZWVsZWQgdmVyc2lvbgorICogaWYgaXQgaXMgYXZhaWxhYmxlLiAgVGhpcyBhdm9pZHMgYSByZWZuYW1lIGxvb2t1cCBpbiBhIGNvbW1vbiBjYXNlLgorICovCiBzdGF0aWMgc3RydWN0IHJlZl9lbnRyeSAqY3VycmVudF9yZWY7CiAKLXN0YXRpYyBpbnQgZG9fb25lX3JlZihjb25zdCBjaGFyICpiYXNlLCBlYWNoX3JlZl9mbiBmbiwgaW50IHRyaW0sCi0JCSAgICAgIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSwgc3RydWN0IHJlZl9lbnRyeSAqZW50cnkpCit0eXBlZGVmIGludCBlYWNoX3JlZl9lbnRyeV9mbihzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSwgdm9pZCAqY2JfZGF0YSk7CisKK3N0cnVjdCByZWZfZW50cnlfY2IgeworCWNvbnN0IGNoYXIgKmJhc2U7CisJaW50IHRyaW07CisJaW50IGZsYWdzOworCWVhY2hfcmVmX2ZuICpmbjsKKwl2b2lkICpjYl9kYXRhOworfTsKKworLyoKKyAqIEhhbmRsZSBvbmUgcmVmZXJlbmNlIGluIGEgZG9fZm9yX2VhY2hfcmVmKigpLXN0eWxlIGl0ZXJhdGlvbiwKKyAqIGNhbGxpbmcgYW4gZWFjaF9yZWZfZm4gZm9yIGVhY2ggZW50cnkuCisgKi8KK3N0YXRpYyBpbnQgZG9fb25lX3JlZihzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSwgdm9pZCAqY2JfZGF0YSkKIHsKKwlzdHJ1Y3QgcmVmX2VudHJ5X2NiICpkYXRhID0gY2JfZGF0YTsKKwlzdHJ1Y3QgcmVmX2VudHJ5ICpvbGRfY3VycmVudF9yZWY7CiAJaW50IHJldHZhbDsKLQlpZiAocHJlZml4Y21wKGVudHJ5LT5uYW1lLCBiYXNlKSkKKworCWlmIChwcmVmaXhjbXAoZW50cnktPm5hbWUsIGRhdGEtPmJhc2UpKQogCQlyZXR1cm4gMDsKIAotCWlmICghKGZsYWdzICYgRE9fRk9SX0VBQ0hfSU5DTFVERV9CUk9LRU4pKSB7Ci0JCWlmIChlbnRyeS0+ZmxhZyAmIFJFRl9JU0JST0tFTikKLQkJCXJldHVybiAwOyAvKiBpZ25vcmUgYnJva2VuIHJlZnMgZS5nLiBkYW5nbGluZyBzeW1yZWYgKi8KLQkJaWYgKCFoYXNfc2hhMV9maWxlKGVudHJ5LT51LnZhbHVlLnNoYTEpKSB7Ci0JCQllcnJvcigiJXMgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBvYmplY3QhIiwgZW50cnktPm5hbWUpOwotCQkJcmV0dXJuIDA7Ci0JCX0KLQl9CisJaWYgKCEoZGF0YS0+ZmxhZ3MgJiBET19GT1JfRUFDSF9JTkNMVURFX0JST0tFTikgJiYKKwkgICAgICAhcmVmX3Jlc29sdmVzX3RvX29iamVjdChlbnRyeSkpCisJCXJldHVybiAwOworCisJLyogU3RvcmUgdGhlIG9sZCB2YWx1ZSwgaW4gY2FzZSB0aGlzIGlzIGEgcmVjdXJzaXZlIGNhbGw6ICovCisJb2xkX2N1cnJlbnRfcmVmID0gY3VycmVudF9yZWY7CiAJY3VycmVudF9yZWYgPSBlbnRyeTsKLQlyZXR2YWwgPSBmbihlbnRyeS0+bmFtZSArIHRyaW0sIGVudHJ5LT51LnZhbHVlLnNoYTEsIGVudHJ5LT5mbGFnLCBjYl9kYXRhKTsKLQljdXJyZW50X3JlZiA9IE5VTEw7CisJcmV0dmFsID0gZGF0YS0+Zm4oZW50cnktPm5hbWUgKyBkYXRhLT50cmltLCBlbnRyeS0+dS52YWx1ZS5zaGExLAorCQkJICBlbnRyeS0+ZmxhZywgZGF0YS0+Y2JfZGF0YSk7CisJY3VycmVudF9yZWYgPSBvbGRfY3VycmVudF9yZWY7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtNTMyLDExICs2NTcsMTEgQEAKICAqIENhbGwgZm4gZm9yIGVhY2ggcmVmZXJlbmNlIGluIGRpciB0aGF0IGhhcyBpbmRleCBpbiB0aGUgcmFuZ2UKICAqIG9mZnNldCA8PSBpbmRleCA8IGRpci0+bnIuICBSZWN1cnNlIGludG8gc3ViZGlyZWN0b3JpZXMgdGhhdCBhcmUgaW4KICAqIHRoYXQgaW5kZXggcmFuZ2UsIHNvcnRpbmcgdGhlbSBiZWZvcmUgaXRlcmF0aW5nLiAgVGhpcyBmdW5jdGlvbgotICogZG9lcyBub3Qgc29ydCBkaXIgaXRzZWxmOyBpdCBzaG91bGQgYmUgc29ydGVkIGJlZm9yZWhhbmQuCisgKiBkb2VzIG5vdCBzb3J0IGRpciBpdHNlbGY7IGl0IHNob3VsZCBiZSBzb3J0ZWQgYmVmb3JlaGFuZC4gIGZuIGlzCisgKiBjYWxsZWQgZm9yIGFsbCByZWZlcmVuY2VzLCBpbmNsdWRpbmcgYnJva2VuIG9uZXMuCiAgKi8KLXN0YXRpYyBpbnQgZG9fZm9yX2VhY2hfcmVmX2luX2RpcihzdHJ1Y3QgcmVmX2RpciAqZGlyLCBpbnQgb2Zmc2V0LAotCQkJCSAgY29uc3QgY2hhciAqYmFzZSwKLQkJCQkgIGVhY2hfcmVmX2ZuIGZuLCBpbnQgdHJpbSwgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQorc3RhdGljIGludCBkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIoc3RydWN0IHJlZl9kaXIgKmRpciwgaW50IG9mZnNldCwKKwkJCQkgICAgZWFjaF9yZWZfZW50cnlfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7CiAJaW50IGk7CiAJYXNzZXJ0KGRpci0+c29ydGVkID09IGRpci0+bnIpOwpAQCAtNTQ2LDEwICs2NzEsOSBAQAogCQlpZiAoZW50cnktPmZsYWcgJiBSRUZfRElSKSB7CiAJCQlzdHJ1Y3QgcmVmX2RpciAqc3ViZGlyID0gZ2V0X3JlZl9kaXIoZW50cnkpOwogCQkJc29ydF9yZWZfZGlyKHN1YmRpcik7Ci0JCQlyZXR2YWwgPSBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKHN1YmRpciwgMCwKLQkJCQkJCQliYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEpOworCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKHN1YmRpciwgMCwgZm4sIGNiX2RhdGEpOwogCQl9IGVsc2UgewotCQkJcmV0dmFsID0gZG9fb25lX3JlZihiYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEsIGVudHJ5KTsKKwkJCXJldHZhbCA9IGZuKGVudHJ5LCBjYl9kYXRhKTsKIAkJfQogCQlpZiAocmV0dmFsKQogCQkJcmV0dXJuIHJldHZhbDsKQEAgLTU2MiwxMiArNjg2LDEyIEBACiAgKiBieSByZWZuYW1lLiAgUmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzLiAgSWYgYSB2YWx1ZSBlbnRyeSBhcHBlYXJzCiAgKiBpbiBib3RoIGRpcjEgYW5kIGRpcjIsIHRoZW4gb25seSBwcm9jZXNzIHRoZSB2ZXJzaW9uIHRoYXQgaXMgaW4KICAqIGRpcjIuICBUaGUgaW5wdXQgZGlycyBtdXN0IGFscmVhZHkgYmUgc29ydGVkLCBidXQgc3ViZGlycyB3aWxsIGJlCi0gKiBzb3J0ZWQgYXMgbmVlZGVkLgorICogc29ydGVkIGFzIG5lZWRlZC4gIGZuIGlzIGNhbGxlZCBmb3IgYWxsIHJlZmVyZW5jZXMsIGluY2x1ZGluZworICogYnJva2VuIG9uZXMuCiAgKi8KLXN0YXRpYyBpbnQgZG9fZm9yX2VhY2hfcmVmX2luX2RpcnMoc3RydWN0IHJlZl9kaXIgKmRpcjEsCi0JCQkJICAgc3RydWN0IHJlZl9kaXIgKmRpcjIsCi0JCQkJICAgY29uc3QgY2hhciAqYmFzZSwgZWFjaF9yZWZfZm4gZm4sIGludCB0cmltLAotCQkJCSAgIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKK3N0YXRpYyBpbnQgZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlycyhzdHJ1Y3QgcmVmX2RpciAqZGlyMSwKKwkJCQkgICAgIHN0cnVjdCByZWZfZGlyICpkaXIyLAorCQkJCSAgICAgZWFjaF9yZWZfZW50cnlfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7CiAJaW50IHJldHZhbDsKIAlpbnQgaTEgPSAwLCBpMiA9IDA7CkBAIC01NzgsMTIgKzcwMiwxMCBAQAogCQlzdHJ1Y3QgcmVmX2VudHJ5ICplMSwgKmUyOwogCQlpbnQgY21wOwogCQlpZiAoaTEgPT0gZGlyMS0+bnIpIHsKLQkJCXJldHVybiBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpcjIsIGkyLAotCQkJCQkJICAgICAgYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJCXJldHVybiBkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIoZGlyMiwgaTIsIGZuLCBjYl9kYXRhKTsKIAkJfQogCQlpZiAoaTIgPT0gZGlyMi0+bnIpIHsKLQkJCXJldHVybiBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpcjEsIGkxLAotCQkJCQkJICAgICAgYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJCXJldHVybiBkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIoZGlyMSwgaTEsIGZuLCBjYl9kYXRhKTsKIAkJfQogCQllMSA9IGRpcjEtPmVudHJpZXNbaTFdOwogCQllMiA9IGRpcjItPmVudHJpZXNbaTJdOwpAQCAtNTk1LDE0ICs3MTcsMTMgQEAKIAkJCQlzdHJ1Y3QgcmVmX2RpciAqc3ViZGlyMiA9IGdldF9yZWZfZGlyKGUyKTsKIAkJCQlzb3J0X3JlZl9kaXIoc3ViZGlyMSk7CiAJCQkJc29ydF9yZWZfZGlyKHN1YmRpcjIpOwotCQkJCXJldHZhbCA9IGRvX2Zvcl9lYWNoX3JlZl9pbl9kaXJzKAotCQkJCQkJc3ViZGlyMSwgc3ViZGlyMiwKLQkJCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlycygKKwkJCQkJCXN1YmRpcjEsIHN1YmRpcjIsIGZuLCBjYl9kYXRhKTsKIAkJCQlpMSsrOwogCQkJCWkyKys7CiAJCQl9IGVsc2UgaWYgKCEoZTEtPmZsYWcgJiBSRUZfRElSKSAmJiAhKGUyLT5mbGFnICYgUkVGX0RJUikpIHsKIAkJCQkvKiBCb3RoIGFyZSByZWZlcmVuY2VzOyBpZ25vcmUgdGhlIG9uZSBmcm9tIGRpcjEuICovCi0JCQkJcmV0dmFsID0gZG9fb25lX3JlZihiYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEsIGUyKTsKKwkJCQlyZXR2YWwgPSBmbihlMiwgY2JfZGF0YSk7CiAJCQkJaTErKzsKIAkJCQlpMisrOwogCQkJfSBlbHNlIHsKQEAgLTYyMSwyNiArNzQyLDMzIEBACiAJCQlpZiAoZS0+ZmxhZyAmIFJFRl9ESVIpIHsKIAkJCQlzdHJ1Y3QgcmVmX2RpciAqc3ViZGlyID0gZ2V0X3JlZl9kaXIoZSk7CiAJCQkJc29ydF9yZWZfZGlyKHN1YmRpcik7Ci0JCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfcmVmX2luX2RpcigKLQkJCQkJCXN1YmRpciwgMCwKLQkJCQkJCWJhc2UsIGZuLCB0cmltLCBmbGFncywgY2JfZGF0YSk7CisJCQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKAorCQkJCQkJc3ViZGlyLCAwLCBmbiwgY2JfZGF0YSk7CiAJCQl9IGVsc2UgewotCQkJCXJldHZhbCA9IGRvX29uZV9yZWYoYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhLCBlKTsKKwkJCQlyZXR2YWwgPSBmbihlLCBjYl9kYXRhKTsKIAkJCX0KIAkJfQogCQlpZiAocmV0dmFsKQogCQkJcmV0dXJuIHJldHZhbDsKIAl9Ci0JaWYgKGkxIDwgZGlyMS0+bnIpCi0JCXJldHVybiBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpcjEsIGkxLAotCQkJCQkgICAgICBiYXNlLCBmbiwgdHJpbSwgZmxhZ3MsIGNiX2RhdGEpOwotCWlmIChpMiA8IGRpcjItPm5yKQotCQlyZXR1cm4gZG9fZm9yX2VhY2hfcmVmX2luX2RpcihkaXIyLCBpMiwKLQkJCQkJICAgICAgYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKLQlyZXR1cm4gMDsKIH0KIAogLyoKKyAqIExvYWQgYWxsIG9mIHRoZSByZWZzIGZyb20gdGhlIGRpciBpbnRvIG91ciBpbi1tZW1vcnkgY2FjaGUuIFRoZSBoYXJkIHdvcmsKKyAqIG9mIGxvYWRpbmcgbG9vc2UgcmVmcyBpcyBkb25lIGJ5IGdldF9yZWZfZGlyKCksIHNvIHdlIGp1c3QgbmVlZCB0byByZWN1cnNlCisgKiB0aHJvdWdoIGFsbCBvZiB0aGUgc3ViLWRpcmVjdG9yaWVzLiBXZSBkbyBub3QgZXZlbiBuZWVkIHRvIGNhcmUgYWJvdXQKKyAqIHNvcnRpbmcsIGFzIHRyYXZlcnNhbCBvcmRlciBkb2VzIG5vdCBtYXR0ZXIgdG8gdXMuCisgKi8KK3N0YXRpYyB2b2lkIHByaW1lX3JlZl9kaXIoc3RydWN0IHJlZl9kaXIgKmRpcikKK3sKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgZGlyLT5ucjsgaSsrKSB7CisJCXN0cnVjdCByZWZfZW50cnkgKmVudHJ5ID0gZGlyLT5lbnRyaWVzW2ldOworCQlpZiAoZW50cnktPmZsYWcgJiBSRUZfRElSKQorCQkJcHJpbWVfcmVmX2RpcihnZXRfcmVmX2RpcihlbnRyeSkpOworCX0KK30KKy8qCiAgKiBSZXR1cm4gdHJ1ZSBpZmYgcmVmbmFtZTEgYW5kIHJlZm5hbWUyIGNvbmZsaWN0IHdpdGggZWFjaCBvdGhlci4KICAqIFR3byByZWZlcmVuY2UgbmFtZXMgY29uZmxpY3QgaWYgb25lIG9mIHRoZW0gZXhhY3RseSBtYXRjaGVzIHRoZQogICogbGVhZGluZyBjb21wb25lbnRzIG9mIHRoZSBvdGhlcjsgZS5nLiwgImZvby9iYXIiIGNvbmZsaWN0cyB3aXRoCkBAIC02NjEsMTQgKzc4OSwxMyBAQAogCWNvbnN0IGNoYXIgKmNvbmZsaWN0aW5nX3JlZm5hbWU7CiB9OwogCi1zdGF0aWMgaW50IG5hbWVfY29uZmxpY3RfZm4oY29uc3QgY2hhciAqZXhpc3RpbmdyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAotCQkJICAgIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSkKK3N0YXRpYyBpbnQgbmFtZV9jb25mbGljdF9mbihzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSwgdm9pZCAqY2JfZGF0YSkKIHsKIAlzdHJ1Y3QgbmFtZV9jb25mbGljdF9jYiAqZGF0YSA9IChzdHJ1Y3QgbmFtZV9jb25mbGljdF9jYiAqKWNiX2RhdGE7Ci0JaWYgKGRhdGEtPm9sZHJlZm5hbWUgJiYgIXN0cmNtcChkYXRhLT5vbGRyZWZuYW1lLCBleGlzdGluZ3JlZm5hbWUpKQorCWlmIChkYXRhLT5vbGRyZWZuYW1lICYmICFzdHJjbXAoZGF0YS0+b2xkcmVmbmFtZSwgZW50cnktPm5hbWUpKQogCQlyZXR1cm4gMDsKLQlpZiAobmFtZXNfY29uZmxpY3QoZGF0YS0+cmVmbmFtZSwgZXhpc3RpbmdyZWZuYW1lKSkgewotCQlkYXRhLT5jb25mbGljdGluZ19yZWZuYW1lID0gZXhpc3RpbmdyZWZuYW1lOworCWlmIChuYW1lc19jb25mbGljdChkYXRhLT5yZWZuYW1lLCBlbnRyeS0+bmFtZSkpIHsKKwkJZGF0YS0+Y29uZmxpY3RpbmdfcmVmbmFtZSA9IGVudHJ5LT5uYW1lOwogCQlyZXR1cm4gMTsKIAl9CiAJcmV0dXJuIDA7CkBAIC02NzYsNyArODAzLDcgQEAKIAogLyoKICAqIFJldHVybiB0cnVlIGlmZiBhIHJlZmVyZW5jZSBuYW1lZCByZWZuYW1lIGNvdWxkIGJlIGNyZWF0ZWQgd2l0aG91dAotICogY29uZmxpY3Rpbmcgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyByZWZlcmVuY2UgaW4gYXJyYXkuICBJZgorICogY29uZmxpY3Rpbmcgd2l0aCB0aGUgbmFtZSBvZiBhbiBleGlzdGluZyByZWZlcmVuY2UgaW4gZGlyLiAgSWYKICAqIG9sZHJlZm5hbWUgaXMgbm9uLU5VTEwsIGlnbm9yZSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb2xkcmVmbmFtZQogICogKGUuZy4sIGJlY2F1c2Ugb2xkcmVmbmFtZSBpcyBzY2hlZHVsZWQgZm9yIGRlbGV0aW9uIGluIHRoZSBzYW1lCiAgKiBvcGVyYXRpb24pLgpAQCAtNjkwLDkgKzgxNyw3IEBACiAJZGF0YS5jb25mbGljdGluZ19yZWZuYW1lID0gTlVMTDsKIAogCXNvcnRfcmVmX2RpcihkaXIpOwotCWlmIChkb19mb3JfZWFjaF9yZWZfaW5fZGlyKGRpciwgMCwgIiIsIG5hbWVfY29uZmxpY3RfZm4sCi0JCQkJICAgMCwgRE9fRk9SX0VBQ0hfSU5DTFVERV9CUk9LRU4sCi0JCQkJICAgJmRhdGEpKSB7CisJaWYgKGRvX2Zvcl9lYWNoX2VudHJ5X2luX2RpcihkaXIsIDAsIG5hbWVfY29uZmxpY3RfZm4sICZkYXRhKSkgewogCQllcnJvcigiJyVzJyBleGlzdHM7IGNhbm5vdCBjcmVhdGUgJyVzJyIsCiAJCSAgICAgIGRhdGEuY29uZmxpY3RpbmdfcmVmbmFtZSwgcmVmbmFtZSk7CiAJCXJldHVybiAwOwpAQCAtNzAwLDYgKzgyNSwzMCBAQAogCXJldHVybiAxOwogfQogCitzdHJ1Y3QgcGFja2VkX3JlZl9jYWNoZSB7CisJc3RydWN0IHJlZl9lbnRyeSAqcm9vdDsKKworCS8qCisJICogQ291bnQgb2YgcmVmZXJlbmNlcyB0byB0aGUgZGF0YSBzdHJ1Y3R1cmUgaW4gdGhpcyBpbnN0YW5jZSwKKwkgKiBpbmNsdWRpbmcgdGhlIHBvaW50ZXIgZnJvbSByZWZfY2FjaGU6OnBhY2tlZCBpZiBhbnkuICBUaGUKKwkgKiBkYXRhIHdpbGwgbm90IGJlIGZyZWVkIGFzIGxvbmcgYXMgdGhlIHJlZmVyZW5jZSBjb3VudCBpcworCSAqIG5vbnplcm8uCisJICovCisJdW5zaWduZWQgaW50IHJlZmVycmVyczsKKworCS8qCisJICogSWZmIHRoZSBwYWNrZWQtcmVmcyBmaWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGluc3RhbmNlIGlzCisJICogY3VycmVudGx5IGxvY2tlZCBmb3Igd3JpdGluZywgdGhpcyBwb2ludHMgYXQgdGhlIGFzc29jaWF0ZWQKKwkgKiBsb2NrICh3aGljaCBpcyBvd25lZCBieSBzb21lYm9keSBlbHNlKS4gIFRoZSByZWZlcnJlciBjb3VudAorCSAqIGlzIGFsc28gaW5jcmVtZW50ZWQgd2hlbiB0aGUgZmlsZSBpcyBsb2NrZWQgYW5kIGRlY3JlbWVudGVkCisJICogd2hlbiBpdCBpcyB1bmxvY2tlZC4KKwkgKi8KKwlzdHJ1Y3QgbG9ja19maWxlICpsb2NrOworCisJLyogVGhlIG1ldGFkYXRhIGZyb20gd2hlbiB0aGlzIHBhY2tlZC1yZWZzIGNhY2hlIHdhcyByZWFkICovCisJc3RydWN0IHN0YXRfdmFsaWRpdHkgdmFsaWRpdHk7Cit9OworCiAvKgogICogRnV0dXJlOiBuZWVkIHRvIGJlIGluICJzdHJ1Y3QgcmVwb3NpdG9yeSIKICAqIHdoZW4gZG9pbmcgYSBmdWxsIGxpYmlmaWNhdGlvbi4KQEAgLTcwNywxNiArODU2LDUxIEBACiBzdGF0aWMgc3RydWN0IHJlZl9jYWNoZSB7CiAJc3RydWN0IHJlZl9jYWNoZSAqbmV4dDsKIAlzdHJ1Y3QgcmVmX2VudHJ5ICpsb29zZTsKLQlzdHJ1Y3QgcmVmX2VudHJ5ICpwYWNrZWQ7Ci0JLyogVGhlIHN1Ym1vZHVsZSBuYW1lLCBvciAiIiBmb3IgdGhlIG1haW4gcmVwby4gKi8KLQljaGFyIG5hbWVbRkxFWF9BUlJBWV07Ci19ICpyZWZfY2FjaGU7CisJc3RydWN0IHBhY2tlZF9yZWZfY2FjaGUgKnBhY2tlZDsKKwkvKgorCSAqIFRoZSBzdWJtb2R1bGUgbmFtZSwgb3IgIiIgZm9yIHRoZSBtYWluIHJlcG8uICBXZSBhbGxvY2F0ZQorCSAqIGxlbmd0aCAxIHJhdGhlciB0aGFuIEZMRVhfQVJSQVkgc28gdGhhdCB0aGUgbWFpbiByZWZfY2FjaGUKKwkgKiBpcyBpbml0aWFsaXplZCBjb3JyZWN0bHkuCisJICovCisJY2hhciBuYW1lWzFdOworfSByZWZfY2FjaGUsICpzdWJtb2R1bGVfcmVmX2NhY2hlczsKKworLyogTG9jayB1c2VkIGZvciB0aGUgbWFpbiBwYWNrZWQtcmVmcyBmaWxlOiAqLworc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgcGFja2xvY2s7CisKKy8qCisgKiBJbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiAqcGFja2VkX3JlZnMuCisgKi8KK3N0YXRpYyB2b2lkIGFjcXVpcmVfcGFja2VkX3JlZl9jYWNoZShzdHJ1Y3QgcGFja2VkX3JlZl9jYWNoZSAqcGFja2VkX3JlZnMpCit7CisJcGFja2VkX3JlZnMtPnJlZmVycmVycysrOworfQorCisvKgorICogRGVjcmVhc2UgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiAqcGFja2VkX3JlZnMuICBJZiBpdCBnb2VzIHRvIHplcm8sCisgKiBmcmVlICpwYWNrZWRfcmVmcyBhbmQgcmV0dXJuIHRydWU7IG90aGVyd2lzZSByZXR1cm4gZmFsc2UuCisgKi8KK3N0YXRpYyBpbnQgcmVsZWFzZV9wYWNrZWRfcmVmX2NhY2hlKHN0cnVjdCBwYWNrZWRfcmVmX2NhY2hlICpwYWNrZWRfcmVmcykKK3sKKwlpZiAoIS0tcGFja2VkX3JlZnMtPnJlZmVycmVycykgeworCQlmcmVlX3JlZl9lbnRyeShwYWNrZWRfcmVmcy0+cm9vdCk7CisJCXN0YXRfdmFsaWRpdHlfY2xlYXIoJnBhY2tlZF9yZWZzLT52YWxpZGl0eSk7CisJCWZyZWUocGFja2VkX3JlZnMpOworCQlyZXR1cm4gMTsKKwl9IGVsc2UgeworCQlyZXR1cm4gMDsKKwl9Cit9CiAKIHN0YXRpYyB2b2lkIGNsZWFyX3BhY2tlZF9yZWZfY2FjaGUoc3RydWN0IHJlZl9jYWNoZSAqcmVmcykKIHsKIAlpZiAocmVmcy0+cGFja2VkKSB7Ci0JCWZyZWVfcmVmX2VudHJ5KHJlZnMtPnBhY2tlZCk7CisJCXN0cnVjdCBwYWNrZWRfcmVmX2NhY2hlICpwYWNrZWRfcmVmcyA9IHJlZnMtPnBhY2tlZDsKKworCQlpZiAocGFja2VkX3JlZnMtPmxvY2spCisJCQlkaWUoImludGVybmFsIGVycm9yOiBwYWNrZWQtcmVmIGNhY2hlIGNsZWFyZWQgd2hpbGUgbG9ja2VkIik7CiAJCXJlZnMtPnBhY2tlZCA9IE5VTEw7CisJCXJlbGVhc2VfcGFja2VkX3JlZl9jYWNoZShwYWNrZWRfcmVmcyk7CiAJfQogfQogCkBAIC03NDgsMTggKzkzMiwxOCBAQAogICovCiBzdGF0aWMgc3RydWN0IHJlZl9jYWNoZSAqZ2V0X3JlZl9jYWNoZShjb25zdCBjaGFyICpzdWJtb2R1bGUpCiB7Ci0Jc3RydWN0IHJlZl9jYWNoZSAqcmVmcyA9IHJlZl9jYWNoZTsKLQlpZiAoIXN1Ym1vZHVsZSkKLQkJc3VibW9kdWxlID0gIiI7Ci0Jd2hpbGUgKHJlZnMpIHsKKwlzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzOworCisJaWYgKCFzdWJtb2R1bGUgfHwgISpzdWJtb2R1bGUpCisJCXJldHVybiAmcmVmX2NhY2hlOworCisJZm9yIChyZWZzID0gc3VibW9kdWxlX3JlZl9jYWNoZXM7IHJlZnM7IHJlZnMgPSByZWZzLT5uZXh0KQogCQlpZiAoIXN0cmNtcChzdWJtb2R1bGUsIHJlZnMtPm5hbWUpKQogCQkJcmV0dXJuIHJlZnM7Ci0JCXJlZnMgPSByZWZzLT5uZXh0OwotCX0KIAogCXJlZnMgPSBjcmVhdGVfcmVmX2NhY2hlKHN1Ym1vZHVsZSk7Ci0JcmVmcy0+bmV4dCA9IHJlZl9jYWNoZTsKLQlyZWZfY2FjaGUgPSByZWZzOworCXJlZnMtPm5leHQgPSBzdWJtb2R1bGVfcmVmX2NhY2hlczsKKwlzdWJtb2R1bGVfcmVmX2NhY2hlcyA9IHJlZnM7CiAJcmV0dXJuIHJlZnM7CiB9CiAKQEAgLTc3MCw2ICs5NTQsMTYgQEAKIAljbGVhcl9sb29zZV9yZWZfY2FjaGUocmVmcyk7CiB9CiAKKy8qIFRoZSBsZW5ndGggb2YgYSBwZWVsZWQgcmVmZXJlbmNlIGxpbmUgaW4gcGFja2VkLXJlZnMsIGluY2x1ZGluZyBFT0w6ICovCisjZGVmaW5lIFBFRUxFRF9MSU5FX0xFTkdUSCA0MgorCisvKgorICogVGhlIHBhY2tlZC1yZWZzIGhlYWRlciBsaW5lIHRoYXQgd2Ugd3JpdGUgb3V0LiAgUGVyaGFwcyBvdGhlcgorICogdHJhaXRzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuICBUaGUgdHJhaWxpbmcgc3BhY2UgaXMgcmVxdWlyZWQuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFyIFBBQ0tFRF9SRUZTX0hFQURFUltdID0KKwkiIyBwYWNrLXJlZnMgd2l0aDogcGVlbGVkIGZ1bGx5LXBlZWxlZCBcbiI7CisKIC8qCiAgKiBQYXJzZSBvbmUgbGluZSBmcm9tIGEgcGFja2VkLXJlZnMgZmlsZS4gIFdyaXRlIHRoZSBTSEExIHRvIHNoYTEuCiAgKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSByZWZuYW1lIHdpdGhpbiB0aGUgbGluZSAobnVsbC10ZXJtaW5hdGVkKSwKQEAgLTg2Miw4ICsxMDU2LDggQEAKIAkJfQogCQlpZiAobGFzdCAmJgogCQkgICAgcmVmbGluZVswXSA9PSAnXicgJiYKLQkJICAgIHN0cmxlbihyZWZsaW5lKSA9PSA0MiAmJgotCQkgICAgcmVmbGluZVs0MV0gPT0gJ1xuJyAmJgorCQkgICAgc3RybGVuKHJlZmxpbmUpID09IFBFRUxFRF9MSU5FX0xFTkdUSCAmJgorCQkgICAgcmVmbGluZVtQRUVMRURfTElORV9MRU5HVEggLSAxXSA9PSAnXG4nICYmCiAJCSAgICAhZ2V0X3NoYTFfaGV4KHJlZmxpbmUgKyAxLCBzaGExKSkgewogCQkJaGFzaGNweShsYXN0LT51LnZhbHVlLnBlZWxlZCwgc2hhMSk7CiAJCQkvKgpAQCAtODc2LDMwICsxMDcwLDU4IEBACiAJfQogfQogCi1zdGF0aWMgc3RydWN0IHJlZl9kaXIgKmdldF9wYWNrZWRfcmVmcyhzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzKQorLyoKKyAqIEdldCB0aGUgcGFja2VkX3JlZl9jYWNoZSBmb3IgdGhlIHNwZWNpZmllZCByZWZfY2FjaGUsIGNyZWF0aW5nIGl0CisgKiBpZiBuZWNlc3NhcnkuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgcGFja2VkX3JlZl9jYWNoZSAqZ2V0X3BhY2tlZF9yZWZfY2FjaGUoc3RydWN0IHJlZl9jYWNoZSAqcmVmcykKIHsKKwljb25zdCBjaGFyICpwYWNrZWRfcmVmc19maWxlOworCisJaWYgKCpyZWZzLT5uYW1lKQorCQlwYWNrZWRfcmVmc19maWxlID0gZ2l0X3BhdGhfc3VibW9kdWxlKHJlZnMtPm5hbWUsICJwYWNrZWQtcmVmcyIpOworCWVsc2UKKwkJcGFja2VkX3JlZnNfZmlsZSA9IGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpOworCisJaWYgKHJlZnMtPnBhY2tlZCAmJgorCSAgICAhc3RhdF92YWxpZGl0eV9jaGVjaygmcmVmcy0+cGFja2VkLT52YWxpZGl0eSwgcGFja2VkX3JlZnNfZmlsZSkpCisJCWNsZWFyX3BhY2tlZF9yZWZfY2FjaGUocmVmcyk7CisKIAlpZiAoIXJlZnMtPnBhY2tlZCkgewotCQljb25zdCBjaGFyICpwYWNrZWRfcmVmc19maWxlOwogCQlGSUxFICpmOwogCi0JCXJlZnMtPnBhY2tlZCA9IGNyZWF0ZV9kaXJfZW50cnkocmVmcywgIiIsIDAsIDApOwotCQlpZiAoKnJlZnMtPm5hbWUpCi0JCQlwYWNrZWRfcmVmc19maWxlID0gZ2l0X3BhdGhfc3VibW9kdWxlKHJlZnMtPm5hbWUsICJwYWNrZWQtcmVmcyIpOwotCQllbHNlCi0JCQlwYWNrZWRfcmVmc19maWxlID0gZ2l0X3BhdGgoInBhY2tlZC1yZWZzIik7CisJCXJlZnMtPnBhY2tlZCA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpyZWZzLT5wYWNrZWQpKTsKKwkJYWNxdWlyZV9wYWNrZWRfcmVmX2NhY2hlKHJlZnMtPnBhY2tlZCk7CisJCXJlZnMtPnBhY2tlZC0+cm9vdCA9IGNyZWF0ZV9kaXJfZW50cnkocmVmcywgIiIsIDAsIDApOwogCQlmID0gZm9wZW4ocGFja2VkX3JlZnNfZmlsZSwgInIiKTsKIAkJaWYgKGYpIHsKLQkJCXJlYWRfcGFja2VkX3JlZnMoZiwgZ2V0X3JlZl9kaXIocmVmcy0+cGFja2VkKSk7CisJCQlzdGF0X3ZhbGlkaXR5X3VwZGF0ZSgmcmVmcy0+cGFja2VkLT52YWxpZGl0eSwgZmlsZW5vKGYpKTsKKwkJCXJlYWRfcGFja2VkX3JlZnMoZiwgZ2V0X3JlZl9kaXIocmVmcy0+cGFja2VkLT5yb290KSk7CiAJCQlmY2xvc2UoZik7CiAJCX0KIAl9Ci0JcmV0dXJuIGdldF9yZWZfZGlyKHJlZnMtPnBhY2tlZCk7CisJcmV0dXJuIHJlZnMtPnBhY2tlZDsKK30KKworc3RhdGljIHN0cnVjdCByZWZfZGlyICpnZXRfcGFja2VkX3JlZl9kaXIoc3RydWN0IHBhY2tlZF9yZWZfY2FjaGUgKnBhY2tlZF9yZWZfY2FjaGUpCit7CisJcmV0dXJuIGdldF9yZWZfZGlyKHBhY2tlZF9yZWZfY2FjaGUtPnJvb3QpOworfQorCitzdGF0aWMgc3RydWN0IHJlZl9kaXIgKmdldF9wYWNrZWRfcmVmcyhzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzKQoreworCXJldHVybiBnZXRfcGFja2VkX3JlZl9kaXIoZ2V0X3BhY2tlZF9yZWZfY2FjaGUocmVmcykpOwogfQogCiB2b2lkIGFkZF9wYWNrZWRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7Ci0JYWRkX3JlZihnZXRfcGFja2VkX3JlZnMoZ2V0X3JlZl9jYWNoZShOVUxMKSksCi0JCQljcmVhdGVfcmVmX2VudHJ5KHJlZm5hbWUsIHNoYTEsIFJFRl9JU1BBQ0tFRCwgMSkpOworCXN0cnVjdCBwYWNrZWRfcmVmX2NhY2hlICpwYWNrZWRfcmVmX2NhY2hlID0KKwkJZ2V0X3BhY2tlZF9yZWZfY2FjaGUoJnJlZl9jYWNoZSk7CisKKwlpZiAoIXBhY2tlZF9yZWZfY2FjaGUtPmxvY2spCisJCWRpZSgiaW50ZXJuYWwgZXJyb3I6IHBhY2tlZCByZWZzIG5vdCBsb2NrZWQiKTsKKwlhZGRfcmVmKGdldF9wYWNrZWRfcmVmX2RpcihwYWNrZWRfcmVmX2NhY2hlKSwKKwkJY3JlYXRlX3JlZl9lbnRyeShyZWZuYW1lLCBzaGExLCBSRUZfSVNQQUNLRUQsIDEpKTsKIH0KIAogLyoKQEAgLTEwNjksMTggKzEyOTEsNDMgQEAKIH0KIAogLyoKLSAqIFRyeSB0byByZWFkIHJlZiBmcm9tIHRoZSBwYWNrZWQgcmVmZXJlbmNlcy4gIE9uIHN1Y2Nlc3MsIHNldCBzaGExCi0gKiBhbmQgcmV0dXJuIDA7IG90aGVyd2lzZSwgcmV0dXJuIC0xLgorICogUmV0dXJuIHRoZSByZWZfZW50cnkgZm9yIHRoZSBnaXZlbiByZWZuYW1lIGZyb20gdGhlIHBhY2tlZAorICogcmVmZXJlbmNlcy4gIElmIGl0IGRvZXMgbm90IGV4aXN0LCByZXR1cm4gTlVMTC4KICAqLwotc3RhdGljIGludCBnZXRfcGFja2VkX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQorc3RhdGljIHN0cnVjdCByZWZfZW50cnkgKmdldF9wYWNrZWRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUpCiB7Ci0Jc3RydWN0IHJlZl9kaXIgKnBhY2tlZCA9IGdldF9wYWNrZWRfcmVmcyhnZXRfcmVmX2NhY2hlKE5VTEwpKTsKLQlzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSA9IGZpbmRfcmVmKHBhY2tlZCwgcmVmbmFtZSk7CisJcmV0dXJuIGZpbmRfcmVmKGdldF9wYWNrZWRfcmVmcygmcmVmX2NhY2hlKSwgcmVmbmFtZSk7Cit9CisKKy8qCisgKiBBIGxvb3NlIHJlZiBmaWxlIGRvZXNuJ3QgZXhpc3Q7IGNoZWNrIGZvciBhIHBhY2tlZCByZWYuICBUaGUKKyAqIG9wdGlvbnMgYXJlIGZvcndhcmRlZCBmcm9tIHJlc29sdmVfc2FmZV91bnNhZmUoKS4KKyAqLworc3RhdGljIGNvbnN0IGNoYXIgKmhhbmRsZV9taXNzaW5nX2xvb3NlX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLAorCQkJCQkgICAgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJCQkJICAgIGludCByZWFkaW5nLAorCQkJCQkgICAgaW50ICpmbGFnKQoreworCXN0cnVjdCByZWZfZW50cnkgKmVudHJ5OworCisJLyoKKwkgKiBUaGUgbG9vc2UgcmVmZXJlbmNlIGZpbGUgZG9lcyBub3QgZXhpc3Q7IGNoZWNrIGZvciBhIHBhY2tlZAorCSAqIHJlZmVyZW5jZS4KKwkgKi8KKwllbnRyeSA9IGdldF9wYWNrZWRfcmVmKHJlZm5hbWUpOwogCWlmIChlbnRyeSkgewogCQloYXNoY3B5KHNoYTEsIGVudHJ5LT51LnZhbHVlLnNoYTEpOwotCQlyZXR1cm4gMDsKKwkJaWYgKGZsYWcpCisJCQkqZmxhZyB8PSBSRUZfSVNQQUNLRUQ7CisJCXJldHVybiByZWZuYW1lOwogCX0KLQlyZXR1cm4gLTE7CisJLyogVGhlIHJlZmVyZW5jZSBpcyBub3QgYSBwYWNrZWQgcmVmZXJlbmNlLCBlaXRoZXIuICovCisJaWYgKHJlYWRpbmcpIHsKKwkJcmV0dXJuIE5VTEw7CisJfSBlbHNlIHsKKwkJaGFzaGNscihzaGExKTsKKwkJcmV0dXJuIHJlZm5hbWU7CisJfQogfQogCiBjb25zdCBjaGFyICpyZXNvbHZlX3JlZl91bnNhZmUoY29uc3QgY2hhciAqcmVmbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IHJlYWRpbmcsIGludCAqZmxhZykKQEAgLTExMDcsMzIgKzEzNTQsMzQgQEAKIAogCQlnaXRfc25wYXRoKHBhdGgsIHNpemVvZihwYXRoKSwgIiVzIiwgcmVmbmFtZSk7CiAKKwkJLyoKKwkJICogV2UgbWlnaHQgaGF2ZSB0byBsb29wIGJhY2sgaGVyZSB0byBhdm9pZCBhIHJhY2UKKwkJICogY29uZGl0aW9uOiBmaXJzdCB3ZSBsc3RhdCgpIHRoZSBmaWxlLCB0aGVuIHdlIHRyeQorCQkgKiB0byByZWFkIGl0IGFzIGEgbGluayBvciBhcyBhIGZpbGUuICBCdXQgaWYgc29tZWJvZHkKKwkJICogY2hhbmdlcyB0aGUgdHlwZSBvZiB0aGUgZmlsZSAoZmlsZSA8LT4gZGlyZWN0b3J5CisJCSAqIDwtPiBzeW1saW5rKSBiZXR3ZWVuIHRoZSBsc3RhdCgpIGFuZCByZWFkaW5nLCB0aGVuCisJCSAqIHdlIGRvbid0IHdhbnQgdG8gcmVwb3J0IHRoYXQgYXMgYW4gZXJyb3IgYnV0IHJhdGhlcgorCQkgKiB0cnkgYWdhaW4gc3RhcnRpbmcgd2l0aCB0aGUgbHN0YXQoKS4KKwkJICovCisJc3RhdF9yZWY6CiAJCWlmIChsc3RhdChwYXRoLCAmc3QpIDwgMCkgewotCQkJaWYgKGVycm5vICE9IEVOT0VOVCkKKwkJCWlmIChlcnJubyA9PSBFTk9FTlQpCisJCQkJcmV0dXJuIGhhbmRsZV9taXNzaW5nX2xvb3NlX3JlZihyZWZuYW1lLCBzaGExLAorCQkJCQkJCQlyZWFkaW5nLCBmbGFnKTsKKwkJCWVsc2UKIAkJCQlyZXR1cm4gTlVMTDsKLQkJCS8qCi0JCQkgKiBUaGUgbG9vc2UgcmVmZXJlbmNlIGZpbGUgZG9lcyBub3QgZXhpc3Q7Ci0JCQkgKiBjaGVjayBmb3IgYSBwYWNrZWQgcmVmZXJlbmNlLgotCQkJICovCi0JCQlpZiAoIWdldF9wYWNrZWRfcmVmKHJlZm5hbWUsIHNoYTEpKSB7Ci0JCQkJaWYgKGZsYWcpCi0JCQkJCSpmbGFnIHw9IFJFRl9JU1BBQ0tFRDsKLQkJCQlyZXR1cm4gcmVmbmFtZTsKLQkJCX0KLQkJCS8qIFRoZSByZWZlcmVuY2UgaXMgbm90IGEgcGFja2VkIHJlZmVyZW5jZSwgZWl0aGVyLiAqLwotCQkJaWYgKHJlYWRpbmcpIHsKLQkJCQlyZXR1cm4gTlVMTDsKLQkJCX0gZWxzZSB7Ci0JCQkJaGFzaGNscihzaGExKTsKLQkJCQlyZXR1cm4gcmVmbmFtZTsKLQkJCX0KIAkJfQogCiAJCS8qIEZvbGxvdyAibm9ybWFsaXplZCIgLSBpZSAicmVmcy8uLiIgc3ltbGlua3MgYnkgaGFuZCAqLwogCQlpZiAoU19JU0xOSyhzdC5zdF9tb2RlKSkgewogCQkJbGVuID0gcmVhZGxpbmsocGF0aCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKS0xKTsKLQkJCWlmIChsZW4gPCAwKQotCQkJCXJldHVybiBOVUxMOworCQkJaWYgKGxlbiA8IDApIHsKKwkJCQlpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVJTlZBTCkKKwkJCQkJLyogaW5jb25zaXN0ZW50IHdpdGggbHN0YXQ7IHJldHJ5ICovCisJCQkJCWdvdG8gc3RhdF9yZWY7CisJCQkJZWxzZQorCQkJCQlyZXR1cm4gTlVMTDsKKwkJCX0KIAkJCWJ1ZmZlcltsZW5dID0gMDsKIAkJCWlmICghcHJlZml4Y21wKGJ1ZmZlciwgInJlZnMvIikgJiYKIAkJCQkJIWNoZWNrX3JlZm5hbWVfZm9ybWF0KGJ1ZmZlciwgMCkpIHsKQEAgLTExNTUsOCArMTQwNCwxMyBAQAogCQkgKiBhIHJlZgogCQkgKi8KIAkJZmQgPSBvcGVuKHBhdGgsIE9fUkRPTkxZKTsKLQkJaWYgKGZkIDwgMCkKLQkJCXJldHVybiBOVUxMOworCQlpZiAoZmQgPCAwKSB7CisJCQlpZiAoZXJybm8gPT0gRU5PRU5UKQorCQkJCS8qIGluY29uc2lzdGVudCB3aXRoIGxzdGF0OyByZXRyeSAqLworCQkJCWdvdG8gc3RhdF9yZWY7CisJCQllbHNlCisJCQkJcmV0dXJuIE5VTEw7CisJCX0KIAkJbGVuID0gcmVhZF9pbl9mdWxsKGZkLCBidWZmZXIsIHNpemVvZihidWZmZXIpLTEpOwogCQljbG9zZShmZCk7CiAJCWlmIChsZW4gPCAwKQpAQCAtMTE2OCw4ICsxNDIyLDE5IEBACiAJCS8qCiAJCSAqIElzIGl0IGEgc3ltYm9saWMgcmVmPwogCQkgKi8KLQkJaWYgKHByZWZpeGNtcChidWZmZXIsICJyZWY6IikpCi0JCQlicmVhazsKKwkJaWYgKHByZWZpeGNtcChidWZmZXIsICJyZWY6IikpIHsKKwkJCS8qCisJCQkgKiBQbGVhc2Ugbm90ZSB0aGF0IEZFVENIX0hFQUQgaGFzIGEgc2Vjb25kCisJCQkgKiBsaW5lIGNvbnRhaW5pbmcgb3RoZXIgZGF0YS4KKwkJCSAqLworCQkJaWYgKGdldF9zaGExX2hleChidWZmZXIsIHNoYTEpIHx8CisJCQkgICAgKGJ1ZmZlcls0MF0gIT0gJ1wwJyAmJiAhaXNzcGFjZShidWZmZXJbNDBdKSkpIHsKKwkJCQlpZiAoZmxhZykKKwkJCQkJKmZsYWcgfD0gUkVGX0lTQlJPS0VOOworCQkJCXJldHVybiBOVUxMOworCQkJfQorCQkJcmV0dXJuIHJlZm5hbWU7CisJCX0KIAkJaWYgKGZsYWcpCiAJCQkqZmxhZyB8PSBSRUZfSVNTWU1SRUY7CiAJCWJ1ZiA9IGJ1ZmZlciArIDQ7CkBAIC0xMTgyLDEzICsxNDQ3LDYgQEAKIAkJfQogCQlyZWZuYW1lID0gc3RyY3B5KHJlZm5hbWVfYnVmZmVyLCBidWYpOwogCX0KLQkvKiBQbGVhc2Ugbm90ZSB0aGF0IEZFVENIX0hFQUQgaGFzIGEgc2Vjb25kIGxpbmUgY29udGFpbmluZyBvdGhlciBkYXRhLiAqLwotCWlmIChnZXRfc2hhMV9oZXgoYnVmZmVyLCBzaGExKSB8fCAoYnVmZmVyWzQwXSAhPSAnXDAnICYmICFpc3NwYWNlKGJ1ZmZlcls0MF0pKSkgewotCQlpZiAoZmxhZykKLQkJCSpmbGFnIHw9IFJFRl9JU0JST0tFTjsKLQkJcmV0dXJuIE5VTEw7Ci0JfQotCXJldHVybiByZWZuYW1lOwogfQogCiBjaGFyICpyZXNvbHZlX3JlZmR1cChjb25zdCBjaGFyICpyZWYsIHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCByZWFkaW5nLCBpbnQgKmZsYWcpCkBAIC0xMjMxLDU0ICsxNDg5LDEzMCBAQAogCXJldHVybiBmaWx0ZXItPmZuKHJlZm5hbWUsIHNoYTEsIGZsYWdzLCBmaWx0ZXItPmNiX2RhdGEpOwogfQogCitlbnVtIHBlZWxfc3RhdHVzIHsKKwkvKiBvYmplY3Qgd2FzIHBlZWxlZCBzdWNjZXNzZnVsbHk6ICovCisJUEVFTF9QRUVMRUQgPSAwLAorCisJLyoKKwkgKiBvYmplY3QgY2Fubm90IGJlIHBlZWxlZCBiZWNhdXNlIHRoZSBuYW1lZCBvYmplY3QgKG9yIGFuCisJICogb2JqZWN0IHJlZmVycmVkIHRvIGJ5IGEgdGFnIGluIHRoZSBwZWVsIGNoYWluKSwgZG9lcyBub3QKKwkgKiBleGlzdC4KKwkgKi8KKwlQRUVMX0lOVkFMSUQgPSAtMSwKKworCS8qIG9iamVjdCBjYW5ub3QgYmUgcGVlbGVkIGJlY2F1c2UgaXQgaXMgbm90IGEgdGFnOiAqLworCVBFRUxfTk9OX1RBRyA9IC0yLAorCisJLyogcmVmX2VudHJ5IGNvbnRhaW5zIG5vIHBlZWxlZCB2YWx1ZSBiZWNhdXNlIGl0IGlzIGEgc3ltcmVmOiAqLworCVBFRUxfSVNfU1lNUkVGID0gLTMsCisKKwkvKgorCSAqIHJlZl9lbnRyeSBjYW5ub3QgYmUgcGVlbGVkIGJlY2F1c2UgaXQgaXMgYnJva2VuIChpLmUuLCB0aGUKKwkgKiBzeW1ib2xpYyByZWZlcmVuY2UgY2Fubm90IGV2ZW4gYmUgcmVzb2x2ZWQgdG8gYW4gb2JqZWN0CisJICogbmFtZSk6CisJICovCisJUEVFTF9CUk9LRU4gPSAtNAorfTsKKworLyoKKyAqIFBlZWwgdGhlIG5hbWVkIG9iamVjdDsgaS5lLiwgaWYgdGhlIG9iamVjdCBpcyBhIHRhZywgcmVzb2x2ZSB0aGUKKyAqIHRhZyByZWN1cnNpdmVseSB1bnRpbCBhIG5vbi10YWcgaXMgZm91bmQuICBJZiBzdWNjZXNzZnVsLCBzdG9yZSB0aGUKKyAqIHJlc3VsdCB0byBzaGExIGFuZCByZXR1cm4gUEVFTF9QRUVMRUQuICBJZiB0aGUgb2JqZWN0IGlzIG5vdCBhIHRhZworICogb3IgaXMgbm90IHZhbGlkLCByZXR1cm4gUEVFTF9OT05fVEFHIG9yIFBFRUxfSU5WQUxJRCwgcmVzcGVjdGl2ZWx5LAorICogYW5kIGxlYXZlIHNoYTEgdW5jaGFuZ2VkLgorICovCitzdGF0aWMgZW51bSBwZWVsX3N0YXR1cyBwZWVsX29iamVjdChjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKQoreworCXN0cnVjdCBvYmplY3QgKm8gPSBsb29rdXBfdW5rbm93bl9vYmplY3QobmFtZSk7CisKKwlpZiAoby0+dHlwZSA9PSBPQkpfTk9ORSkgeworCQlpbnQgdHlwZSA9IHNoYTFfb2JqZWN0X2luZm8obmFtZSwgTlVMTCk7CisJCWlmICh0eXBlIDwgMCkKKwkJCXJldHVybiBQRUVMX0lOVkFMSUQ7CisJCW8tPnR5cGUgPSB0eXBlOworCX0KKworCWlmIChvLT50eXBlICE9IE9CSl9UQUcpCisJCXJldHVybiBQRUVMX05PTl9UQUc7CisKKwlvID0gZGVyZWZfdGFnX25vdmVyaWZ5KG8pOworCWlmICghbykKKwkJcmV0dXJuIFBFRUxfSU5WQUxJRDsKKworCWhhc2hjcHkoc2hhMSwgby0+c2hhMSk7CisJcmV0dXJuIFBFRUxfUEVFTEVEOworfQorCisvKgorICogUGVlbCB0aGUgZW50cnkgKGlmIHBvc3NpYmxlKSBhbmQgcmV0dXJuIGl0cyBuZXcgcGVlbF9zdGF0dXMuICBJZgorICogcmVwZWVsIGlzIHRydWUsIHJlLXBlZWwgdGhlIGVudHJ5IGV2ZW4gaWYgdGhlcmUgaXMgYW4gb2xkIHBlZWxlZAorICogdmFsdWUgdGhhdCBpcyBhbHJlYWR5IHN0b3JlZCBpbiBpdC4KKyAqCisgKiBJdCBpcyBPSyB0byBjYWxsIHRoaXMgZnVuY3Rpb24gd2l0aCBhIHBhY2tlZCByZWZlcmVuY2UgZW50cnkgdGhhdAorICogbWlnaHQgYmUgc3RhbGUgYW5kIG1pZ2h0IGV2ZW4gcmVmZXIgdG8gYW4gb2JqZWN0IHRoYXQgaGFzIHNpbmNlCisgKiBiZWVuIGdhcmJhZ2UtY29sbGVjdGVkLiAgSW4gc3VjaCBhIGNhc2UsIGlmIHRoZSBlbnRyeSBoYXMKKyAqIFJFRl9LTk9XU19QRUVMRUQgdGhlbiBsZWF2ZSB0aGUgc3RhdHVzIHVuY2hhbmdlZCBhbmQgcmV0dXJuCisgKiBQRUVMX1BFRUxFRCBvciBQRUVMX05PTl9UQUc7IG90aGVyd2lzZSwgcmV0dXJuIFBFRUxfSU5WQUxJRC4KKyAqLworc3RhdGljIGVudW0gcGVlbF9zdGF0dXMgcGVlbF9lbnRyeShzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSwgaW50IHJlcGVlbCkKK3sKKwllbnVtIHBlZWxfc3RhdHVzIHN0YXR1czsKKworCWlmIChlbnRyeS0+ZmxhZyAmIFJFRl9LTk9XU19QRUVMRUQpIHsKKwkJaWYgKHJlcGVlbCkgeworCQkJZW50cnktPmZsYWcgJj0gflJFRl9LTk9XU19QRUVMRUQ7CisJCQloYXNoY2xyKGVudHJ5LT51LnZhbHVlLnBlZWxlZCk7CisJCX0gZWxzZSB7CisJCQlyZXR1cm4gaXNfbnVsbF9zaGExKGVudHJ5LT51LnZhbHVlLnBlZWxlZCkgPworCQkJCVBFRUxfTk9OX1RBRyA6IFBFRUxfUEVFTEVEOworCQl9CisJfQorCWlmIChlbnRyeS0+ZmxhZyAmIFJFRl9JU0JST0tFTikKKwkJcmV0dXJuIFBFRUxfQlJPS0VOOworCWlmIChlbnRyeS0+ZmxhZyAmIFJFRl9JU1NZTVJFRikKKwkJcmV0dXJuIFBFRUxfSVNfU1lNUkVGOworCisJc3RhdHVzID0gcGVlbF9vYmplY3QoZW50cnktPnUudmFsdWUuc2hhMSwgZW50cnktPnUudmFsdWUucGVlbGVkKTsKKwlpZiAoc3RhdHVzID09IFBFRUxfUEVFTEVEIHx8IHN0YXR1cyA9PSBQRUVMX05PTl9UQUcpCisJCWVudHJ5LT5mbGFnIHw9IFJFRl9LTk9XU19QRUVMRUQ7CisJcmV0dXJuIHN0YXR1czsKK30KKwogaW50IHBlZWxfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUsIHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJaW50IGZsYWc7CiAJdW5zaWduZWQgY2hhciBiYXNlWzIwXTsKLQlzdHJ1Y3Qgb2JqZWN0ICpvOwogCiAJaWYgKGN1cnJlbnRfcmVmICYmIChjdXJyZW50X3JlZi0+bmFtZSA9PSByZWZuYW1lCi0JCXx8ICFzdHJjbXAoY3VycmVudF9yZWYtPm5hbWUsIHJlZm5hbWUpKSkgewotCQlpZiAoY3VycmVudF9yZWYtPmZsYWcgJiBSRUZfS05PV1NfUEVFTEVEKSB7Ci0JCQlpZiAoaXNfbnVsbF9zaGExKGN1cnJlbnRfcmVmLT51LnZhbHVlLnBlZWxlZCkpCi0JCQkgICAgcmV0dXJuIC0xOwotCQkJaGFzaGNweShzaGExLCBjdXJyZW50X3JlZi0+dS52YWx1ZS5wZWVsZWQpOwotCQkJcmV0dXJuIDA7Ci0JCX0KLQkJaGFzaGNweShiYXNlLCBjdXJyZW50X3JlZi0+dS52YWx1ZS5zaGExKTsKLQkJZ290byBmYWxsYmFjazsKKwkJCSAgICB8fCAhc3RyY21wKGN1cnJlbnRfcmVmLT5uYW1lLCByZWZuYW1lKSkpIHsKKwkJaWYgKHBlZWxfZW50cnkoY3VycmVudF9yZWYsIDApKQorCQkJcmV0dXJuIC0xOworCQloYXNoY3B5KHNoYTEsIGN1cnJlbnRfcmVmLT51LnZhbHVlLnBlZWxlZCk7CisJCXJldHVybiAwOwogCX0KIAogCWlmIChyZWFkX3JlZl9mdWxsKHJlZm5hbWUsIGJhc2UsIDEsICZmbGFnKSkKIAkJcmV0dXJuIC0xOwogCi0JaWYgKChmbGFnICYgUkVGX0lTUEFDS0VEKSkgewotCQlzdHJ1Y3QgcmVmX2RpciAqZGlyID0gZ2V0X3BhY2tlZF9yZWZzKGdldF9yZWZfY2FjaGUoTlVMTCkpOwotCQlzdHJ1Y3QgcmVmX2VudHJ5ICpyID0gZmluZF9yZWYoZGlyLCByZWZuYW1lKTsKLQotCQlpZiAociAhPSBOVUxMICYmIHItPmZsYWcgJiBSRUZfS05PV1NfUEVFTEVEKSB7CisJLyoKKwkgKiBJZiB0aGUgcmVmZXJlbmNlIGlzIHBhY2tlZCwgcmVhZCBpdHMgcmVmX2VudHJ5IGZyb20gdGhlCisJICogY2FjaGUgaW4gdGhlIGhvcGUgdGhhdCB3ZSBhbHJlYWR5IGtub3cgaXRzIHBlZWxlZCB2YWx1ZS4KKwkgKiBXZSBvbmx5IHRyeSB0aGlzIG9wdGltaXphdGlvbiBvbiBwYWNrZWQgcmVmZXJlbmNlcyBiZWNhdXNlCisJICogKGEpIGZvcmNpbmcgdGhlIGZpbGxpbmcgb2YgdGhlIGxvb3NlIHJlZmVyZW5jZSBjYWNoZSBjb3VsZAorCSAqIGJlIGV4cGVuc2l2ZSBhbmQgKGIpIGxvb3NlIHJlZmVyZW5jZXMgYW55d2F5IHVzdWFsbHkgZG8gbm90CisJICogaGF2ZSBSRUZfS05PV1NfUEVFTEVELgorCSAqLworCWlmIChmbGFnICYgUkVGX0lTUEFDS0VEKSB7CisJCXN0cnVjdCByZWZfZW50cnkgKnIgPSBnZXRfcGFja2VkX3JlZihyZWZuYW1lKTsKKwkJaWYgKHIpIHsKKwkJCWlmIChwZWVsX2VudHJ5KHIsIDApKQorCQkJCXJldHVybiAtMTsKIAkJCWhhc2hjcHkoc2hhMSwgci0+dS52YWx1ZS5wZWVsZWQpOwogCQkJcmV0dXJuIDA7CiAJCX0KIAl9CiAKLWZhbGxiYWNrOgotCW8gPSBsb29rdXBfdW5rbm93bl9vYmplY3QoYmFzZSk7Ci0JaWYgKG8tPnR5cGUgPT0gT0JKX05PTkUpIHsKLQkJaW50IHR5cGUgPSBzaGExX29iamVjdF9pbmZvKGJhc2UsIE5VTEwpOwotCQlpZiAodHlwZSA8IDApCi0JCQlyZXR1cm4gLTE7Ci0JCW8tPnR5cGUgPSB0eXBlOwotCX0KLQotCWlmIChvLT50eXBlID09IE9CSl9UQUcpIHsKLQkJbyA9IGRlcmVmX3RhZ19ub3ZlcmlmeShvKTsKLQkJaWYgKG8pIHsKLQkJCWhhc2hjcHkoc2hhMSwgby0+c2hhMSk7Ci0JCQlyZXR1cm4gMDsKLQkJfQotCX0KLQlyZXR1cm4gLTE7CisJcmV0dXJuIHBlZWxfb2JqZWN0KGJhc2UsIHNoYTEpOwogfQogCiBzdHJ1Y3Qgd2Fybl9pZl9kYW5nbGluZ19kYXRhIHsKQEAgLTEzMTYsNDAgKzE2NTAsODQgQEAKIAlmb3JfZWFjaF9yYXdyZWYod2Fybl9pZl9kYW5nbGluZ19zeW1yZWYsICZkYXRhKTsKIH0KIAotc3RhdGljIGludCBkb19mb3JfZWFjaF9yZWYoY29uc3QgY2hhciAqc3VibW9kdWxlLCBjb25zdCBjaGFyICpiYXNlLCBlYWNoX3JlZl9mbiBmbiwKLQkJCSAgIGludCB0cmltLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCisvKgorICogQ2FsbCBmbiBmb3IgZWFjaCByZWZlcmVuY2UgaW4gdGhlIHNwZWNpZmllZCByZWZfY2FjaGUsIG9taXR0aW5nCisgKiByZWZlcmVuY2VzIG5vdCBpbiB0aGUgY29udGFpbmluZ19kaXIgb2YgYmFzZS4gIGZuIGlzIGNhbGxlZCBmb3IgYWxsCisgKiByZWZlcmVuY2VzLCBpbmNsdWRpbmcgYnJva2VuIG9uZXMuICBJZiBmbiBldmVyIHJldHVybnMgYSBub24temVybworICogdmFsdWUsIHN0b3AgdGhlIGl0ZXJhdGlvbiBhbmQgcmV0dXJuIHRoYXQgdmFsdWU7IG90aGVyd2lzZSwgcmV0dXJuCisgKiAwLgorICovCitzdGF0aWMgaW50IGRvX2Zvcl9lYWNoX2VudHJ5KHN0cnVjdCByZWZfY2FjaGUgKnJlZnMsIGNvbnN0IGNoYXIgKmJhc2UsCisJCQkgICAgIGVhY2hfcmVmX2VudHJ5X2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXN0cnVjdCByZWZfY2FjaGUgKnJlZnMgPSBnZXRfcmVmX2NhY2hlKHN1Ym1vZHVsZSk7Ci0Jc3RydWN0IHJlZl9kaXIgKnBhY2tlZF9kaXIgPSBnZXRfcGFja2VkX3JlZnMocmVmcyk7Ci0Jc3RydWN0IHJlZl9kaXIgKmxvb3NlX2RpciA9IGdldF9sb29zZV9yZWZzKHJlZnMpOworCXN0cnVjdCBwYWNrZWRfcmVmX2NhY2hlICpwYWNrZWRfcmVmX2NhY2hlOworCXN0cnVjdCByZWZfZGlyICpsb29zZV9kaXI7CisJc3RydWN0IHJlZl9kaXIgKnBhY2tlZF9kaXI7CiAJaW50IHJldHZhbCA9IDA7CiAKKwkvKgorCSAqIFdlIG11c3QgbWFrZSBzdXJlIHRoYXQgYWxsIGxvb3NlIHJlZnMgYXJlIHJlYWQgYmVmb3JlIGFjY2Vzc2luZyB0aGUKKwkgKiBwYWNrZWQtcmVmcyBmaWxlOyB0aGlzIGF2b2lkcyBhIHJhY2UgY29uZGl0aW9uIGluIHdoaWNoIGxvb3NlIHJlZnMKKwkgKiBhcmUgbWlncmF0ZWQgdG8gdGhlIHBhY2tlZC1yZWZzIGZpbGUgYnkgYSBzaW11bHRhbmVvdXMgcHJvY2VzcywgYnV0CisJICogb3VyIGluLW1lbW9yeSB2aWV3IGlzIGZyb20gYmVmb3JlIHRoZSBtaWdyYXRpb24uIGdldF9wYWNrZWRfcmVmX2NhY2hlKCkKKwkgKiB0YWtlcyBjYXJlIG9mIG1ha2luZyBzdXJlIG91ciB2aWV3IGlzIHVwIHRvIGRhdGUgd2l0aCB3aGF0IGlzIG9uCisJICogZGlzay4KKwkgKi8KKwlsb29zZV9kaXIgPSBnZXRfbG9vc2VfcmVmcyhyZWZzKTsKKwlpZiAoYmFzZSAmJiAqYmFzZSkgeworCQlsb29zZV9kaXIgPSBmaW5kX2NvbnRhaW5pbmdfZGlyKGxvb3NlX2RpciwgYmFzZSwgMCk7CisJfQorCWlmIChsb29zZV9kaXIpCisJCXByaW1lX3JlZl9kaXIobG9vc2VfZGlyKTsKKworCXBhY2tlZF9yZWZfY2FjaGUgPSBnZXRfcGFja2VkX3JlZl9jYWNoZShyZWZzKTsKKwlhY3F1aXJlX3BhY2tlZF9yZWZfY2FjaGUocGFja2VkX3JlZl9jYWNoZSk7CisJcGFja2VkX2RpciA9IGdldF9wYWNrZWRfcmVmX2RpcihwYWNrZWRfcmVmX2NhY2hlKTsKIAlpZiAoYmFzZSAmJiAqYmFzZSkgewogCQlwYWNrZWRfZGlyID0gZmluZF9jb250YWluaW5nX2RpcihwYWNrZWRfZGlyLCBiYXNlLCAwKTsKLQkJbG9vc2VfZGlyID0gZmluZF9jb250YWluaW5nX2Rpcihsb29zZV9kaXIsIGJhc2UsIDApOwogCX0KIAogCWlmIChwYWNrZWRfZGlyICYmIGxvb3NlX2RpcikgewogCQlzb3J0X3JlZl9kaXIocGFja2VkX2Rpcik7CiAJCXNvcnRfcmVmX2Rpcihsb29zZV9kaXIpOwotCQlyZXR2YWwgPSBkb19mb3JfZWFjaF9yZWZfaW5fZGlycygKLQkJCQlwYWNrZWRfZGlyLCBsb29zZV9kaXIsCi0JCQkJYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlycygKKwkJCQlwYWNrZWRfZGlyLCBsb29zZV9kaXIsIGZuLCBjYl9kYXRhKTsKIAl9IGVsc2UgaWYgKHBhY2tlZF9kaXIpIHsKIAkJc29ydF9yZWZfZGlyKHBhY2tlZF9kaXIpOwotCQlyZXR2YWwgPSBkb19mb3JfZWFjaF9yZWZfaW5fZGlyKAotCQkJCXBhY2tlZF9kaXIsIDAsCi0JCQkJYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKAorCQkJCXBhY2tlZF9kaXIsIDAsIGZuLCBjYl9kYXRhKTsKIAl9IGVsc2UgaWYgKGxvb3NlX2RpcikgewogCQlzb3J0X3JlZl9kaXIobG9vc2VfZGlyKTsKLQkJcmV0dmFsID0gZG9fZm9yX2VhY2hfcmVmX2luX2RpcigKLQkJCQlsb29zZV9kaXIsIDAsCi0JCQkJYmFzZSwgZm4sIHRyaW0sIGZsYWdzLCBjYl9kYXRhKTsKKwkJcmV0dmFsID0gZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKAorCQkJCWxvb3NlX2RpciwgMCwgZm4sIGNiX2RhdGEpOwogCX0KIAorCXJlbGVhc2VfcGFja2VkX3JlZl9jYWNoZShwYWNrZWRfcmVmX2NhY2hlKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCisvKgorICogQ2FsbCBmbiBmb3IgZWFjaCByZWZlcmVuY2UgaW4gdGhlIHNwZWNpZmllZCByZWZfY2FjaGUgZm9yIHdoaWNoIHRoZQorICogcmVmbmFtZSBiZWdpbnMgd2l0aCBiYXNlLiAgSWYgdHJpbSBpcyBub24temVybywgdGhlbiB0cmltIHRoYXQgbWFueQorICogY2hhcmFjdGVycyBvZmYgdGhlIGJlZ2lubmluZyBvZiBlYWNoIHJlZm5hbWUgYmVmb3JlIHBhc3NpbmcgdGhlCisgKiByZWZuYW1lIHRvIGZuLiAgZmxhZ3MgY2FuIGJlIERPX0ZPUl9FQUNIX0lOQ0xVREVfQlJPS0VOIHRvIGluY2x1ZGUKKyAqIGJyb2tlbiByZWZlcmVuY2VzIGluIHRoZSBpdGVyYXRpb24uICBJZiBmbiBldmVyIHJldHVybnMgYSBub24temVybworICogdmFsdWUsIHN0b3AgdGhlIGl0ZXJhdGlvbiBhbmQgcmV0dXJuIHRoYXQgdmFsdWU7IG90aGVyd2lzZSwgcmV0dXJuCisgKiAwLgorICovCitzdGF0aWMgaW50IGRvX2Zvcl9lYWNoX3JlZihzdHJ1Y3QgcmVmX2NhY2hlICpyZWZzLCBjb25zdCBjaGFyICpiYXNlLAorCQkJICAgZWFjaF9yZWZfZm4gZm4sIGludCB0cmltLCBpbnQgZmxhZ3MsIHZvaWQgKmNiX2RhdGEpCit7CisJc3RydWN0IHJlZl9lbnRyeV9jYiBkYXRhOworCWRhdGEuYmFzZSA9IGJhc2U7CisJZGF0YS50cmltID0gdHJpbTsKKwlkYXRhLmZsYWdzID0gZmxhZ3M7CisJZGF0YS5mbiA9IGZuOworCWRhdGEuY2JfZGF0YSA9IGNiX2RhdGE7CisKKwlyZXR1cm4gZG9fZm9yX2VhY2hfZW50cnkocmVmcywgYmFzZSwgZG9fb25lX3JlZiwgJmRhdGEpOworfQorCiBzdGF0aWMgaW50IGRvX2hlYWRfcmVmKGNvbnN0IGNoYXIgKnN1Ym1vZHVsZSwgZWFjaF9yZWZfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7CiAJdW5zaWduZWQgY2hhciBzaGExWzIwXTsKQEAgLTEzODAsMjMgKzE3NTgsMjMgQEAKIAogaW50IGZvcl9lYWNoX3JlZihlYWNoX3JlZl9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKIHsKLQlyZXR1cm4gZG9fZm9yX2VhY2hfcmVmKE5VTEwsICIiLCBmbiwgMCwgMCwgY2JfZGF0YSk7CisJcmV0dXJuIGRvX2Zvcl9lYWNoX3JlZigmcmVmX2NhY2hlLCAiIiwgZm4sIDAsIDAsIGNiX2RhdGEpOwogfQogCiBpbnQgZm9yX2VhY2hfcmVmX3N1Ym1vZHVsZShjb25zdCBjaGFyICpzdWJtb2R1bGUsIGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXJldHVybiBkb19mb3JfZWFjaF9yZWYoc3VibW9kdWxlLCAiIiwgZm4sIDAsIDAsIGNiX2RhdGEpOworCXJldHVybiBkb19mb3JfZWFjaF9yZWYoZ2V0X3JlZl9jYWNoZShzdWJtb2R1bGUpLCAiIiwgZm4sIDAsIDAsIGNiX2RhdGEpOwogfQogCiBpbnQgZm9yX2VhY2hfcmVmX2luKGNvbnN0IGNoYXIgKnByZWZpeCwgZWFjaF9yZWZfZm4gZm4sIHZvaWQgKmNiX2RhdGEpCiB7Ci0JcmV0dXJuIGRvX2Zvcl9lYWNoX3JlZihOVUxMLCBwcmVmaXgsIGZuLCBzdHJsZW4ocHJlZml4KSwgMCwgY2JfZGF0YSk7CisJcmV0dXJuIGRvX2Zvcl9lYWNoX3JlZigmcmVmX2NhY2hlLCBwcmVmaXgsIGZuLCBzdHJsZW4ocHJlZml4KSwgMCwgY2JfZGF0YSk7CiB9CiAKIGludCBmb3JfZWFjaF9yZWZfaW5fc3VibW9kdWxlKGNvbnN0IGNoYXIgKnN1Ym1vZHVsZSwgY29uc3QgY2hhciAqcHJlZml4LAogCQllYWNoX3JlZl9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKIHsKLQlyZXR1cm4gZG9fZm9yX2VhY2hfcmVmKHN1Ym1vZHVsZSwgcHJlZml4LCBmbiwgc3RybGVuKHByZWZpeCksIDAsIGNiX2RhdGEpOworCXJldHVybiBkb19mb3JfZWFjaF9yZWYoZ2V0X3JlZl9jYWNoZShzdWJtb2R1bGUpLCBwcmVmaXgsIGZuLCBzdHJsZW4ocHJlZml4KSwgMCwgY2JfZGF0YSk7CiB9CiAKIGludCBmb3JfZWFjaF90YWdfcmVmKGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQpAQCAtMTQzMSw3ICsxODA5LDcgQEAKIAogaW50IGZvcl9lYWNoX3JlcGxhY2VfcmVmKGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXJldHVybiBkb19mb3JfZWFjaF9yZWYoTlVMTCwgInJlZnMvcmVwbGFjZS8iLCBmbiwgMTMsIDAsIGNiX2RhdGEpOworCXJldHVybiBkb19mb3JfZWFjaF9yZWYoJnJlZl9jYWNoZSwgInJlZnMvcmVwbGFjZS8iLCBmbiwgMTMsIDAsIGNiX2RhdGEpOwogfQogCiBpbnQgaGVhZF9yZWZfbmFtZXNwYWNlZChlYWNoX3JlZl9mbiBmbiwgdm9pZCAqY2JfZGF0YSkKQEAgLTE0NTQsNyArMTgzMiw3IEBACiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKIAlpbnQgcmV0OwogCXN0cmJ1Zl9hZGRmKCZidWYsICIlc3JlZnMvIiwgZ2V0X2dpdF9uYW1lc3BhY2UoKSk7Ci0JcmV0ID0gZG9fZm9yX2VhY2hfcmVmKE5VTEwsIGJ1Zi5idWYsIGZuLCAwLCAwLCBjYl9kYXRhKTsKKwlyZXQgPSBkb19mb3JfZWFjaF9yZWYoJnJlZl9jYWNoZSwgYnVmLmJ1ZiwgZm4sIDAsIDAsIGNiX2RhdGEpOwogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xNDk2LDcgKzE4NzQsNyBAQAogCiBpbnQgZm9yX2VhY2hfcmF3cmVmKGVhY2hfcmVmX2ZuIGZuLCB2b2lkICpjYl9kYXRhKQogewotCXJldHVybiBkb19mb3JfZWFjaF9yZWYoTlVMTCwgIiIsIGZuLCAwLAorCXJldHVybiBkb19mb3JfZWFjaF9yZWYoJnJlZl9jYWNoZSwgIiIsIGZuLCAwLAogCQkJICAgICAgIERPX0ZPUl9FQUNIX0lOQ0xVREVfQlJPS0VOLCBjYl9kYXRhKTsKIH0KIApAQCAtMTcwMiw3ICsyMDgwLDcgQEAKIAkgKiBuYW1lIGlzIGEgcHJvcGVyIHByZWZpeCBvZiBvdXIgcmVmbmFtZS4KIAkgKi8KIAlpZiAobWlzc2luZyAmJgotCSAgICAgIWlzX3JlZm5hbWVfYXZhaWxhYmxlKHJlZm5hbWUsIE5VTEwsIGdldF9wYWNrZWRfcmVmcyhnZXRfcmVmX2NhY2hlKE5VTEwpKSkpIHsKKwkgICAgICFpc19yZWZuYW1lX2F2YWlsYWJsZShyZWZuYW1lLCBOVUxMLCBnZXRfcGFja2VkX3JlZnMoJnJlZl9jYWNoZSkpKSB7CiAJCWxhc3RfZXJybm8gPSBFTk9URElSOwogCQlnb3RvIGVycm9yX3JldHVybjsKIAl9CkBAIC0xNzU0LDQ4ICsyMTMyLDMyNSBAQAogCXJldHVybiBsb2NrX3JlZl9zaGExX2Jhc2ljKHJlZm5hbWUsIG9sZF9zaGExLCBmbGFncywgTlVMTCk7CiB9CiAKLXN0cnVjdCByZXBhY2tfd2l0aG91dF9yZWZfc2IgewotCWNvbnN0IGNoYXIgKnJlZm5hbWU7Ci0JaW50IGZkOwotfTsKLQotc3RhdGljIGludCByZXBhY2tfd2l0aG91dF9yZWZfZm4oY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKLQkJCQkgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKQorLyoKKyAqIFdyaXRlIGFuIGVudHJ5IHRvIHRoZSBwYWNrZWQtcmVmcyBmaWxlIGZvciB0aGUgc3BlY2lmaWVkIHJlZm5hbWUuCisgKiBJZiBwZWVsZWQgaXMgbm9uLU5VTEwsIHdyaXRlIGl0IGFzIHRoZSBlbnRyeSdzIHBlZWxlZCB2YWx1ZS4KKyAqLworc3RhdGljIHZvaWQgd3JpdGVfcGFja2VkX2VudHJ5KGludCBmZCwgY2hhciAqcmVmbmFtZSwgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJCSAgICAgICB1bnNpZ25lZCBjaGFyICpwZWVsZWQpCiB7Ci0Jc3RydWN0IHJlcGFja193aXRob3V0X3JlZl9zYiAqZGF0YSA9IGNiX2RhdGE7CiAJY2hhciBsaW5lW1BBVEhfTUFYICsgMTAwXTsKIAlpbnQgbGVuOwogCi0JaWYgKCFzdHJjbXAoZGF0YS0+cmVmbmFtZSwgcmVmbmFtZSkpCi0JCXJldHVybiAwOwogCWxlbiA9IHNucHJpbnRmKGxpbmUsIHNpemVvZihsaW5lKSwgIiVzICVzXG4iLAogCQkgICAgICAgc2hhMV90b19oZXgoc2hhMSksIHJlZm5hbWUpOwogCS8qIHRoaXMgc2hvdWxkIG5vdCBoYXBwZW4gYnV0IGp1c3QgYmVpbmcgZGVmZW5zaXZlICovCiAJaWYgKGxlbiA+IHNpemVvZihsaW5lKSkKIAkJZGllKCJ0b28gbG9uZyBhIHJlZm5hbWUgJyVzJyIsIHJlZm5hbWUpOwotCXdyaXRlX29yX2RpZShkYXRhLT5mZCwgbGluZSwgbGVuKTsKKwl3cml0ZV9vcl9kaWUoZmQsIGxpbmUsIGxlbik7CisKKwlpZiAocGVlbGVkKSB7CisJCWlmIChzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksICJeJXNcbiIsCisJCQkgICAgIHNoYTFfdG9faGV4KHBlZWxlZCkpICE9IFBFRUxFRF9MSU5FX0xFTkdUSCkKKwkJCWRpZSgiaW50ZXJuYWwgZXJyb3IiKTsKKwkJd3JpdGVfb3JfZGllKGZkLCBsaW5lLCBQRUVMRURfTElORV9MRU5HVEgpOworCX0KK30KKworLyoKKyAqIEFuIGVhY2hfcmVmX2VudHJ5X2ZuIHRoYXQgd3JpdGVzIHRoZSBlbnRyeSB0byBhIHBhY2tlZC1yZWZzIGZpbGUuCisgKi8KK3N0YXRpYyBpbnQgd3JpdGVfcGFja2VkX2VudHJ5X2ZuKHN0cnVjdCByZWZfZW50cnkgKmVudHJ5LCB2b2lkICpjYl9kYXRhKQoreworCWludCAqZmQgPSBjYl9kYXRhOworCWVudW0gcGVlbF9zdGF0dXMgcGVlbF9zdGF0dXMgPSBwZWVsX2VudHJ5KGVudHJ5LCAwKTsKKworCWlmIChwZWVsX3N0YXR1cyAhPSBQRUVMX1BFRUxFRCAmJiBwZWVsX3N0YXR1cyAhPSBQRUVMX05PTl9UQUcpCisJCWVycm9yKCJpbnRlcm5hbCBlcnJvcjogJXMgaXMgbm90IGEgdmFsaWQgcGFja2VkIHJlZmVyZW5jZSEiLAorCQkgICAgICBlbnRyeS0+bmFtZSk7CisJd3JpdGVfcGFja2VkX2VudHJ5KCpmZCwgZW50cnktPm5hbWUsIGVudHJ5LT51LnZhbHVlLnNoYTEsCisJCQkgICBwZWVsX3N0YXR1cyA9PSBQRUVMX1BFRUxFRCA/CisJCQkgICBlbnRyeS0+dS52YWx1ZS5wZWVsZWQgOiBOVUxMKTsKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIHN0cnVjdCBsb2NrX2ZpbGUgcGFja2xvY2s7CitpbnQgbG9ja19wYWNrZWRfcmVmcyhpbnQgZmxhZ3MpCit7CisJc3RydWN0IHBhY2tlZF9yZWZfY2FjaGUgKnBhY2tlZF9yZWZfY2FjaGU7CisKKwlpZiAoaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmcGFja2xvY2ssIGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLCBmbGFncykgPCAwKQorCQlyZXR1cm4gLTE7CisJLyoKKwkgKiBHZXQgdGhlIGN1cnJlbnQgcGFja2VkLXJlZnMgd2hpbGUgaG9sZGluZyB0aGUgbG9jay4gIElmIHRoZQorCSAqIHBhY2tlZC1yZWZzIGZpbGUgaGFzIGJlZW4gbW9kaWZpZWQgc2luY2Ugd2UgbGFzdCByZWFkIGl0LAorCSAqIHRoaXMgd2lsbCBhdXRvbWF0aWNhbGx5IGludmFsaWRhdGUgdGhlIGNhY2hlIGFuZCByZS1yZWFkCisJICogdGhlIHBhY2tlZC1yZWZzIGZpbGUuCisJICovCisJcGFja2VkX3JlZl9jYWNoZSA9IGdldF9wYWNrZWRfcmVmX2NhY2hlKCZyZWZfY2FjaGUpOworCXBhY2tlZF9yZWZfY2FjaGUtPmxvY2sgPSAmcGFja2xvY2s7CisJLyogSW5jcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgdG8gcHJldmVudCBpdCBmcm9tIGJlaW5nIGZyZWVkOiAqLworCWFjcXVpcmVfcGFja2VkX3JlZl9jYWNoZShwYWNrZWRfcmVmX2NhY2hlKTsKKwlyZXR1cm4gMDsKK30KKworaW50IGNvbW1pdF9wYWNrZWRfcmVmcyh2b2lkKQoreworCXN0cnVjdCBwYWNrZWRfcmVmX2NhY2hlICpwYWNrZWRfcmVmX2NhY2hlID0KKwkJZ2V0X3BhY2tlZF9yZWZfY2FjaGUoJnJlZl9jYWNoZSk7CisJaW50IGVycm9yID0gMDsKKworCWlmICghcGFja2VkX3JlZl9jYWNoZS0+bG9jaykKKwkJZGllKCJpbnRlcm5hbCBlcnJvcjogcGFja2VkLXJlZnMgbm90IGxvY2tlZCIpOworCXdyaXRlX29yX2RpZShwYWNrZWRfcmVmX2NhY2hlLT5sb2NrLT5mZCwKKwkJICAgICBQQUNLRURfUkVGU19IRUFERVIsIHN0cmxlbihQQUNLRURfUkVGU19IRUFERVIpKTsKKworCWRvX2Zvcl9lYWNoX2VudHJ5X2luX2RpcihnZXRfcGFja2VkX3JlZl9kaXIocGFja2VkX3JlZl9jYWNoZSksCisJCQkJIDAsIHdyaXRlX3BhY2tlZF9lbnRyeV9mbiwKKwkJCQkgJnBhY2tlZF9yZWZfY2FjaGUtPmxvY2stPmZkKTsKKwlpZiAoY29tbWl0X2xvY2tfZmlsZShwYWNrZWRfcmVmX2NhY2hlLT5sb2NrKSkKKwkJZXJyb3IgPSAtMTsKKwlwYWNrZWRfcmVmX2NhY2hlLT5sb2NrID0gTlVMTDsKKwlyZWxlYXNlX3BhY2tlZF9yZWZfY2FjaGUocGFja2VkX3JlZl9jYWNoZSk7CisJcmV0dXJuIGVycm9yOworfQorCit2b2lkIHJvbGxiYWNrX3BhY2tlZF9yZWZzKHZvaWQpCit7CisJc3RydWN0IHBhY2tlZF9yZWZfY2FjaGUgKnBhY2tlZF9yZWZfY2FjaGUgPQorCQlnZXRfcGFja2VkX3JlZl9jYWNoZSgmcmVmX2NhY2hlKTsKKworCWlmICghcGFja2VkX3JlZl9jYWNoZS0+bG9jaykKKwkJZGllKCJpbnRlcm5hbCBlcnJvcjogcGFja2VkLXJlZnMgbm90IGxvY2tlZCIpOworCXJvbGxiYWNrX2xvY2tfZmlsZShwYWNrZWRfcmVmX2NhY2hlLT5sb2NrKTsKKwlwYWNrZWRfcmVmX2NhY2hlLT5sb2NrID0gTlVMTDsKKwlyZWxlYXNlX3BhY2tlZF9yZWZfY2FjaGUocGFja2VkX3JlZl9jYWNoZSk7CisJY2xlYXJfcGFja2VkX3JlZl9jYWNoZSgmcmVmX2NhY2hlKTsKK30KKworc3RydWN0IHJlZl90b19wcnVuZSB7CisJc3RydWN0IHJlZl90b19wcnVuZSAqbmV4dDsKKwl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCWNoYXIgbmFtZVtGTEVYX0FSUkFZXTsKK307CisKK3N0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSB7CisJdW5zaWduZWQgaW50IGZsYWdzOworCXN0cnVjdCByZWZfZGlyICpwYWNrZWRfcmVmczsKKwlzdHJ1Y3QgcmVmX3RvX3BydW5lICpyZWZfdG9fcHJ1bmU7Cit9OworCisvKgorICogQW4gZWFjaF9yZWZfZW50cnlfZm4gdGhhdCBpcyBydW4gb3ZlciBsb29zZSByZWZlcmVuY2VzIG9ubHkuICBJZgorICogdGhlIGxvb3NlIHJlZmVyZW5jZSBjYW4gYmUgcGFja2VkLCBhZGQgYW4gZW50cnkgaW4gdGhlIHBhY2tlZCByZWYKKyAqIGNhY2hlLiAgSWYgdGhlIHJlZmVyZW5jZSBzaG91bGQgYmUgcHJ1bmVkLCBhbHNvIGFkZCBpdCB0bworICogcmVmX3RvX3BydW5lIGluIHRoZSBwYWNrX3JlZnNfY2JfZGF0YS4KKyAqLworc3RhdGljIGludCBwYWNrX2lmX3Bvc3NpYmxlX2ZuKHN0cnVjdCByZWZfZW50cnkgKmVudHJ5LCB2b2lkICpjYl9kYXRhKQoreworCXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSAqY2IgPSBjYl9kYXRhOworCWVudW0gcGVlbF9zdGF0dXMgcGVlbF9zdGF0dXM7CisJc3RydWN0IHJlZl9lbnRyeSAqcGFja2VkX2VudHJ5OworCWludCBpc190YWdfcmVmID0gIXByZWZpeGNtcChlbnRyeS0+bmFtZSwgInJlZnMvdGFncy8iKTsKKworCS8qIEFMV0FZUyBwYWNrIHRhZ3MgKi8KKwlpZiAoIShjYi0+ZmxhZ3MgJiBQQUNLX1JFRlNfQUxMKSAmJiAhaXNfdGFnX3JlZikKKwkJcmV0dXJuIDA7CisKKwkvKiBEbyBub3QgcGFjayBzeW1ib2xpYyBvciBicm9rZW4gcmVmczogKi8KKwlpZiAoKGVudHJ5LT5mbGFnICYgUkVGX0lTU1lNUkVGKSB8fCAhcmVmX3Jlc29sdmVzX3RvX29iamVjdChlbnRyeSkpCisJCXJldHVybiAwOworCisJLyogQWRkIGEgcGFja2VkIHJlZiBjYWNoZSBlbnRyeSBlcXVpdmFsZW50IHRvIHRoZSBsb29zZSBlbnRyeS4gKi8KKwlwZWVsX3N0YXR1cyA9IHBlZWxfZW50cnkoZW50cnksIDEpOworCWlmIChwZWVsX3N0YXR1cyAhPSBQRUVMX1BFRUxFRCAmJiBwZWVsX3N0YXR1cyAhPSBQRUVMX05PTl9UQUcpCisJCWRpZSgiaW50ZXJuYWwgZXJyb3IgcGVlbGluZyByZWZlcmVuY2UgJXMgKCVzKSIsCisJCSAgICBlbnRyeS0+bmFtZSwgc2hhMV90b19oZXgoZW50cnktPnUudmFsdWUuc2hhMSkpOworCXBhY2tlZF9lbnRyeSA9IGZpbmRfcmVmKGNiLT5wYWNrZWRfcmVmcywgZW50cnktPm5hbWUpOworCWlmIChwYWNrZWRfZW50cnkpIHsKKwkJLyogT3ZlcndyaXRlIGV4aXN0aW5nIHBhY2tlZCBlbnRyeSB3aXRoIGluZm8gZnJvbSBsb29zZSBlbnRyeSAqLworCQlwYWNrZWRfZW50cnktPmZsYWcgPSBSRUZfSVNQQUNLRUQgfCBSRUZfS05PV1NfUEVFTEVEOworCQloYXNoY3B5KHBhY2tlZF9lbnRyeS0+dS52YWx1ZS5zaGExLCBlbnRyeS0+dS52YWx1ZS5zaGExKTsKKwl9IGVsc2UgeworCQlwYWNrZWRfZW50cnkgPSBjcmVhdGVfcmVmX2VudHJ5KGVudHJ5LT5uYW1lLCBlbnRyeS0+dS52YWx1ZS5zaGExLAorCQkJCQkJUkVGX0lTUEFDS0VEIHwgUkVGX0tOT1dTX1BFRUxFRCwgMCk7CisJCWFkZF9yZWYoY2ItPnBhY2tlZF9yZWZzLCBwYWNrZWRfZW50cnkpOworCX0KKwloYXNoY3B5KHBhY2tlZF9lbnRyeS0+dS52YWx1ZS5wZWVsZWQsIGVudHJ5LT51LnZhbHVlLnBlZWxlZCk7CisKKwkvKiBTY2hlZHVsZSB0aGUgbG9vc2UgcmVmZXJlbmNlIGZvciBwcnVuaW5nIGlmIHJlcXVlc3RlZC4gKi8KKwlpZiAoKGNiLT5mbGFncyAmIFBBQ0tfUkVGU19QUlVORSkpIHsKKwkJaW50IG5hbWVsZW4gPSBzdHJsZW4oZW50cnktPm5hbWUpICsgMTsKKwkJc3RydWN0IHJlZl90b19wcnVuZSAqbiA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpuKSArIG5hbWVsZW4pOworCQloYXNoY3B5KG4tPnNoYTEsIGVudHJ5LT51LnZhbHVlLnNoYTEpOworCQlzdHJjcHkobi0+bmFtZSwgZW50cnktPm5hbWUpOworCQluLT5uZXh0ID0gY2ItPnJlZl90b19wcnVuZTsKKwkJY2ItPnJlZl90b19wcnVuZSA9IG47CisJfQorCXJldHVybiAwOworfQorCisvKgorICogUmVtb3ZlIGVtcHR5IHBhcmVudHMsIGJ1dCBzcGFyZSByZWZzLyBhbmQgaW1tZWRpYXRlIHN1YmRpcnMuCisgKiBOb3RlOiBtdW5nZXMgKm5hbWUuCisgKi8KK3N0YXRpYyB2b2lkIHRyeV9yZW1vdmVfZW1wdHlfcGFyZW50cyhjaGFyICpuYW1lKQoreworCWNoYXIgKnAsICpxOworCWludCBpOworCXAgPSBuYW1lOworCWZvciAoaSA9IDA7IGkgPCAyOyBpKyspIHsgLyogcmVmcy97aGVhZHMsdGFncywuLi59LyAqLworCQl3aGlsZSAoKnAgJiYgKnAgIT0gJy8nKQorCQkJcCsrOworCQkvKiB0b2xlcmF0ZSBkdXBsaWNhdGUgc2xhc2hlczsgc2VlIGNoZWNrX3JlZm5hbWVfZm9ybWF0KCkgKi8KKwkJd2hpbGUgKCpwID09ICcvJykKKwkJCXArKzsKKwl9CisJZm9yIChxID0gcDsgKnE7IHErKykKKwkJOworCXdoaWxlICgxKSB7CisJCXdoaWxlIChxID4gcCAmJiAqcSAhPSAnLycpCisJCQlxLS07CisJCXdoaWxlIChxID4gcCAmJiAqKHEtMSkgPT0gJy8nKQorCQkJcS0tOworCQlpZiAocSA9PSBwKQorCQkJYnJlYWs7CisJCSpxID0gJ1wwJzsKKwkJaWYgKHJtZGlyKGdpdF9wYXRoKCIlcyIsIG5hbWUpKSkKKwkJCWJyZWFrOworCX0KK30KKworLyogbWFrZSBzdXJlIG5vYm9keSB0b3VjaGVkIHRoZSByZWYsIGFuZCB1bmxpbmsgKi8KK3N0YXRpYyB2b2lkIHBydW5lX3JlZihzdHJ1Y3QgcmVmX3RvX3BydW5lICpyKQoreworCXN0cnVjdCByZWZfbG9jayAqbG9jayA9IGxvY2tfcmVmX3NoYTEoci0+bmFtZSArIDUsIHItPnNoYTEpOworCisJaWYgKGxvY2spIHsKKwkJdW5saW5rX29yX3dhcm4oZ2l0X3BhdGgoIiVzIiwgci0+bmFtZSkpOworCQl1bmxvY2tfcmVmKGxvY2spOworCQl0cnlfcmVtb3ZlX2VtcHR5X3BhcmVudHMoci0+bmFtZSk7CisJfQorfQorCitzdGF0aWMgdm9pZCBwcnVuZV9yZWZzKHN0cnVjdCByZWZfdG9fcHJ1bmUgKnIpCit7CisJd2hpbGUgKHIpIHsKKwkJcHJ1bmVfcmVmKHIpOworCQlyID0gci0+bmV4dDsKKwl9Cit9CisKK2ludCBwYWNrX3JlZnModW5zaWduZWQgaW50IGZsYWdzKQoreworCXN0cnVjdCBwYWNrX3JlZnNfY2JfZGF0YSBjYmRhdGE7CisKKwltZW1zZXQoJmNiZGF0YSwgMCwgc2l6ZW9mKGNiZGF0YSkpOworCWNiZGF0YS5mbGFncyA9IGZsYWdzOworCisJbG9ja19wYWNrZWRfcmVmcyhMT0NLX0RJRV9PTl9FUlJPUik7CisJY2JkYXRhLnBhY2tlZF9yZWZzID0gZ2V0X3BhY2tlZF9yZWZzKCZyZWZfY2FjaGUpOworCisJZG9fZm9yX2VhY2hfZW50cnlfaW5fZGlyKGdldF9sb29zZV9yZWZzKCZyZWZfY2FjaGUpLCAwLAorCQkJCSBwYWNrX2lmX3Bvc3NpYmxlX2ZuLCAmY2JkYXRhKTsKKworCWlmIChjb21taXRfcGFja2VkX3JlZnMoKSkKKwkJZGllX2Vycm5vKCJ1bmFibGUgdG8gb3ZlcndyaXRlIG9sZCByZWYtcGFjayBmaWxlIik7CisKKwlwcnVuZV9yZWZzKGNiZGF0YS5yZWZfdG9fcHJ1bmUpOworCXJldHVybiAwOworfQorCisvKgorICogSWYgZW50cnkgaXMgbm8gbG9uZ2VyIG5lZWRlZCBpbiBwYWNrZWQtcmVmcywgYWRkIGl0IHRvIHRoZSBzdHJpbmcKKyAqIGxpc3QgcG9pbnRlZCB0byBieSBjYl9kYXRhLiAgUmVhc29ucyBmb3IgZGVsZXRpbmcgZW50cmllczoKKyAqCisgKiAtIEVudHJ5IGlzIGJyb2tlbi4KKyAqIC0gRW50cnkgaXMgb3ZlcnJpZGRlbiBieSBhIGxvb3NlIHJlZi4KKyAqIC0gRW50cnkgZG9lcyBub3QgcG9pbnQgYXQgYSB2YWxpZCBvYmplY3QuCisgKgorICogSW4gdGhlIGZpcnN0IGFuZCB0aGlyZCBjYXNlcywgYWxzbyBlbWl0IGFuIGVycm9yIG1lc3NhZ2UgYmVjYXVzZSB0aGVzZQorICogYXJlIGluZGljYXRpb25zIG9mIHJlcG9zaXRvcnkgY29ycnVwdGlvbi4KKyAqLworc3RhdGljIGludCBjdXJhdGVfcGFja2VkX3JlZl9mbihzdHJ1Y3QgcmVmX2VudHJ5ICplbnRyeSwgdm9pZCAqY2JfZGF0YSkKK3sKKwlzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnJlZnNfdG9fZGVsZXRlID0gY2JfZGF0YTsKKworCWlmIChlbnRyeS0+ZmxhZyAmIFJFRl9JU0JST0tFTikgeworCQkvKiBUaGlzIHNob3VsZG4ndCBoYXBwZW4gdG8gcGFja2VkIHJlZnMuICovCisJCWVycm9yKCIlcyBpcyBicm9rZW4hIiwgZW50cnktPm5hbWUpOworCQlzdHJpbmdfbGlzdF9hcHBlbmQocmVmc190b19kZWxldGUsIGVudHJ5LT5uYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCWlmICghaGFzX3NoYTFfZmlsZShlbnRyeS0+dS52YWx1ZS5zaGExKSkgeworCQl1bnNpZ25lZCBjaGFyIHNoYTFbMjBdOworCQlpbnQgZmxhZ3M7CisKKwkJaWYgKHJlYWRfcmVmX2Z1bGwoZW50cnktPm5hbWUsIHNoYTEsIDAsICZmbGFncykpCisJCQkvKiBXZSBzaG91bGQgYXQgbGVhc3QgaGF2ZSBmb3VuZCB0aGUgcGFja2VkIHJlZi4gKi8KKwkJCWRpZSgiSW50ZXJuYWwgZXJyb3IiKTsKKwkJaWYgKChmbGFncyAmIFJFRl9JU1NZTVJFRikgfHwgIShmbGFncyAmIFJFRl9JU1BBQ0tFRCkpIHsKKwkJCS8qCisJCQkgKiBUaGlzIHBhY2tlZCByZWZlcmVuY2UgaXMgb3ZlcnJpZGRlbiBieSBhCisJCQkgKiBsb29zZSByZWZlcmVuY2UsIHNvIGl0IGlzIE9LIHRoYXQgaXRzIHZhbHVlCisJCQkgKiBpcyBubyBsb25nZXIgdmFsaWQ7IGZvciBleGFtcGxlLCBpdCBtaWdodAorCQkJICogcmVmZXIgdG8gYW4gb2JqZWN0IHRoYXQgaGFzIGJlZW4gZ2FyYmFnZQorCQkJICogY29sbGVjdGVkLiAgRm9yIHRoaXMgcHVycG9zZSB3ZSBkb24ndCBldmVuCisJCQkgKiBjYXJlIHdoZXRoZXIgdGhlIGxvb3NlIHJlZmVyZW5jZSBpdHNlbGYgaXMKKwkJCSAqIGludmFsaWQsIGJyb2tlbiwgc3ltYm9saWMsIGV0Yy4gIFNpbGVudGx5CisJCQkgKiByZW1vdmUgdGhlIHBhY2tlZCByZWZlcmVuY2UuCisJCQkgKi8KKwkJCXN0cmluZ19saXN0X2FwcGVuZChyZWZzX3RvX2RlbGV0ZSwgZW50cnktPm5hbWUpOworCQkJcmV0dXJuIDA7CisJCX0KKwkJLyoKKwkJICogVGhlcmUgaXMgbm8gb3ZlcnJpZGluZyBsb29zZSByZWZlcmVuY2UsIHNvIHRoZSBmYWN0CisJCSAqIHRoYXQgdGhpcyByZWZlcmVuY2UgZG9lc24ndCByZWZlciB0byBhIHZhbGlkIG9iamVjdAorCQkgKiBpbmRpY2F0ZXMgc29tZSBraW5kIG9mIHJlcG9zaXRvcnkgY29ycnVwdGlvbi4KKwkJICogUmVwb3J0IHRoZSBwcm9ibGVtLCB0aGVuIG9taXQgdGhlIHJlZmVyZW5jZSBmcm9tCisJCSAqIHRoZSBvdXRwdXQuCisJCSAqLworCQllcnJvcigiJXMgZG9lcyBub3QgcG9pbnQgdG8gYSB2YWxpZCBvYmplY3QhIiwgZW50cnktPm5hbWUpOworCQlzdHJpbmdfbGlzdF9hcHBlbmQocmVmc190b19kZWxldGUsIGVudHJ5LT5uYW1lKTsKKwkJcmV0dXJuIDA7CisJfQorCisJcmV0dXJuIDA7Cit9CiAKIHN0YXRpYyBpbnQgcmVwYWNrX3dpdGhvdXRfcmVmKGNvbnN0IGNoYXIgKnJlZm5hbWUpCiB7Ci0Jc3RydWN0IHJlcGFja193aXRob3V0X3JlZl9zYiBkYXRhOwotCXN0cnVjdCByZWZfY2FjaGUgKnJlZnMgPSBnZXRfcmVmX2NhY2hlKE5VTEwpOwotCXN0cnVjdCByZWZfZGlyICpwYWNrZWQgPSBnZXRfcGFja2VkX3JlZnMocmVmcyk7Ci0JaWYgKGZpbmRfcmVmKHBhY2tlZCwgcmVmbmFtZSkgPT0gTlVMTCkKLQkJcmV0dXJuIDA7Ci0JZGF0YS5yZWZuYW1lID0gcmVmbmFtZTsKLQlkYXRhLmZkID0gaG9sZF9sb2NrX2ZpbGVfZm9yX3VwZGF0ZSgmcGFja2xvY2ssIGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLCAwKTsKLQlpZiAoZGF0YS5mZCA8IDApIHsKKwlzdHJ1Y3QgcmVmX2RpciAqcGFja2VkOworCXN0cnVjdCBzdHJpbmdfbGlzdCByZWZzX3RvX2RlbGV0ZSA9IFNUUklOR19MSVNUX0lOSVRfRFVQOworCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICpyZWZfdG9fZGVsZXRlOworCisJaWYgKCFnZXRfcGFja2VkX3JlZihyZWZuYW1lKSkKKwkJcmV0dXJuIDA7IC8qIHJlZm5hbWUgZG9lcyBub3QgZXhpc3QgaW4gcGFja2VkIHJlZnMgKi8KKworCWlmIChsb2NrX3BhY2tlZF9yZWZzKDApKSB7CiAJCXVuYWJsZV90b19sb2NrX2Vycm9yKGdpdF9wYXRoKCJwYWNrZWQtcmVmcyIpLCBlcnJubyk7CiAJCXJldHVybiBlcnJvcigiY2Fubm90IGRlbGV0ZSAnJXMnIGZyb20gcGFja2VkIHJlZnMiLCByZWZuYW1lKTsKIAl9Ci0JY2xlYXJfcGFja2VkX3JlZl9jYWNoZShyZWZzKTsKLQlwYWNrZWQgPSBnZXRfcGFja2VkX3JlZnMocmVmcyk7Ci0JZG9fZm9yX2VhY2hfcmVmX2luX2RpcihwYWNrZWQsIDAsICIiLCByZXBhY2tfd2l0aG91dF9yZWZfZm4sIDAsIDAsICZkYXRhKTsKLQlyZXR1cm4gY29tbWl0X2xvY2tfZmlsZSgmcGFja2xvY2spOworCXBhY2tlZCA9IGdldF9wYWNrZWRfcmVmcygmcmVmX2NhY2hlKTsKKworCS8qIFJlbW92ZSByZWZuYW1lIGZyb20gdGhlIGNhY2hlOiAqLworCWlmIChyZW1vdmVfZW50cnkocGFja2VkLCByZWZuYW1lKSA9PSAtMSkgeworCQkvKgorCQkgKiBUaGUgcGFja2VkIGVudHJ5IGRpc2FwcGVhcmVkIHdoaWxlIHdlIHdlcmUKKwkJICogYWNxdWlyaW5nIHRoZSBsb2NrLgorCQkgKi8KKwkJcm9sbGJhY2tfcGFja2VkX3JlZnMoKTsKKwkJcmV0dXJuIDA7CisJfQorCisJLyogUmVtb3ZlIGFueSBvdGhlciBhY2N1bXVsYXRlZCBjcnVmdDogKi8KKwlkb19mb3JfZWFjaF9lbnRyeV9pbl9kaXIocGFja2VkLCAwLCBjdXJhdGVfcGFja2VkX3JlZl9mbiwgJnJlZnNfdG9fZGVsZXRlKTsKKwlmb3JfZWFjaF9zdHJpbmdfbGlzdF9pdGVtKHJlZl90b19kZWxldGUsICZyZWZzX3RvX2RlbGV0ZSkgeworCQlpZiAocmVtb3ZlX2VudHJ5KHBhY2tlZCwgcmVmX3RvX2RlbGV0ZS0+c3RyaW5nKSA9PSAtMSkKKwkJCWRpZSgiaW50ZXJuYWwgZXJyb3IiKTsKKwl9CisKKwkvKiBXcml0ZSB3aGF0IHJlbWFpbnM6ICovCisJcmV0dXJuIGNvbW1pdF9wYWNrZWRfcmVmcygpOwogfQogCiBpbnQgZGVsZXRlX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCBpbnQgZGVsb3B0KQpAQCAtMTgyMyw3ICsyNDc4LDcgQEAKIAlyZXQgfD0gcmVwYWNrX3dpdGhvdXRfcmVmKGxvY2stPnJlZl9uYW1lKTsKIAogCXVubGlua19vcl93YXJuKGdpdF9wYXRoKCJsb2dzLyVzIiwgbG9jay0+cmVmX25hbWUpKTsKLQlpbnZhbGlkYXRlX3JlZl9jYWNoZShOVUxMKTsKKwljbGVhcl9sb29zZV9yZWZfY2FjaGUoJnJlZl9jYWNoZSk7CiAJdW5sb2NrX3JlZihsb2NrKTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTg0NSw3ICsyNTAwLDYgQEAKIAlzdHJ1Y3Qgc3RhdCBsb2dpbmZvOwogCWludCBsb2cgPSAhbHN0YXQoZ2l0X3BhdGgoImxvZ3MvJXMiLCBvbGRyZWZuYW1lKSwgJmxvZ2luZm8pOwogCWNvbnN0IGNoYXIgKnN5bXJlZiA9IE5VTEw7Ci0Jc3RydWN0IHJlZl9jYWNoZSAqcmVmcyA9IGdldF9yZWZfY2FjaGUoTlVMTCk7CiAKIAlpZiAobG9nICYmIFNfSVNMTksobG9naW5mby5zdF9tb2RlKSkKIAkJcmV0dXJuIGVycm9yKCJyZWZsb2cgZm9yICVzIGlzIGEgc3ltbGluayIsIG9sZHJlZm5hbWUpOwpAQCAtMTg1NywxMCArMjUxMSwxMCBAQAogCWlmICghc3ltcmVmKQogCQlyZXR1cm4gZXJyb3IoInJlZm5hbWUgJXMgbm90IGZvdW5kIiwgb2xkcmVmbmFtZSk7CiAKLQlpZiAoIWlzX3JlZm5hbWVfYXZhaWxhYmxlKG5ld3JlZm5hbWUsIG9sZHJlZm5hbWUsIGdldF9wYWNrZWRfcmVmcyhyZWZzKSkpCisJaWYgKCFpc19yZWZuYW1lX2F2YWlsYWJsZShuZXdyZWZuYW1lLCBvbGRyZWZuYW1lLCBnZXRfcGFja2VkX3JlZnMoJnJlZl9jYWNoZSkpKQogCQlyZXR1cm4gMTsKIAotCWlmICghaXNfcmVmbmFtZV9hdmFpbGFibGUobmV3cmVmbmFtZSwgb2xkcmVmbmFtZSwgZ2V0X2xvb3NlX3JlZnMocmVmcykpKQorCWlmICghaXNfcmVmbmFtZV9hdmFpbGFibGUobmV3cmVmbmFtZSwgb2xkcmVmbmFtZSwgZ2V0X2xvb3NlX3JlZnMoJnJlZl9jYWNoZSkpKQogCQlyZXR1cm4gMTsKIAogCWlmIChsb2cgJiYgcmVuYW1lKGdpdF9wYXRoKCJsb2dzLyVzIiwgb2xkcmVmbmFtZSksIGdpdF9wYXRoKFRNUF9SRU5BTUVEX0xPRykpKQpAQCAtMjExNiw3ICsyNzcwLDcgQEAKIAkJdW5sb2NrX3JlZihsb2NrKTsKIAkJcmV0dXJuIC0xOwogCX0KLQljbGVhcl9sb29zZV9yZWZfY2FjaGUoZ2V0X3JlZl9jYWNoZShOVUxMKSk7CisJY2xlYXJfbG9vc2VfcmVmX2NhY2hlKCZyZWZfY2FjaGUpOwogCWlmIChsb2dfcmVmX3dyaXRlKGxvY2stPnJlZl9uYW1lLCBsb2NrLT5vbGRfc2hhMSwgc2hhMSwgbG9nbXNnKSA8IDAgfHwKIAkgICAgKHN0cmNtcChsb2NrLT5yZWZfbmFtZSwgbG9jay0+b3JpZ19yZWZfbmFtZSkgJiYKIAkgICAgIGxvZ19yZWZfd3JpdGUobG9jay0+b3JpZ19yZWZfbmFtZSwgbG9jay0+b2xkX3NoYTEsIHNoYTEsIGxvZ21zZykgPCAwKSkgewpkaWZmIC0tZ2l0IGEvcmVmcy5oIGIvcmVmcy5oCmluZGV4IGEzNWVhZmMuLjllNWRiM2EgMTAwNjQ0Ci0tLSBhL3JlZnMuaAorKysgYi9yZWZzLmgKQEAgLTEwLDE4ICsxMCw0MSBAQAogCWludCBmb3JjZV93cml0ZTsKIH07CiAKKy8qCisgKiBCaXQgdmFsdWVzIHNldCBpbiB0aGUgZmxhZ3MgYXJndW1lbnQgcGFzc2VkIHRvIGVhY2hfcmVmX2ZuKCk6CisgKi8KKworLyogUmVmZXJlbmNlIGlzIGEgc3ltYm9saWMgcmVmZXJlbmNlLiAqLwogI2RlZmluZSBSRUZfSVNTWU1SRUYgMHgwMQorCisvKiBSZWZlcmVuY2UgaXMgYSBwYWNrZWQgcmVmZXJlbmNlLiAqLwogI2RlZmluZSBSRUZfSVNQQUNLRUQgMHgwMgorCisvKgorICogUmVmZXJlbmNlIGNhbm5vdCBiZSByZXNvbHZlZCB0byBhbiBvYmplY3QgbmFtZTogZGFuZ2xpbmcgc3ltYm9saWMKKyAqIHJlZmVyZW5jZSAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSksIGNvcnJ1cHQgcmVmZXJlbmNlIGZpbGUsIG9yCisgKiBzeW1ib2xpYyByZWZlcmVuY2UgcmVmZXJzIHRvIGlsbC1mb3JtYXR0ZWQgcmVmZXJlbmNlIG5hbWUuCisgKi8KICNkZWZpbmUgUkVGX0lTQlJPS0VOIDB4MDQKIAogLyoKLSAqIENhbGxzIHRoZSBzcGVjaWZpZWQgZnVuY3Rpb24gZm9yIGVhY2ggcmVmIGZpbGUgdW50aWwgaXQgcmV0dXJucwotICogbm9uemVybywgYW5kIHJldHVybnMgdGhlIHZhbHVlLiAgUGxlYXNlIG5vdGUgdGhhdCBpdCBpcyBub3Qgc2FmZSB0bwotICogbW9kaWZ5IHJlZmVyZW5jZXMgd2hpbGUgYW4gaXRlcmF0aW9uIGlzIGluIHByb2dyZXNzLCB1bmxlc3MgdGhlCi0gKiBzYW1lIGNhbGxiYWNrIGZ1bmN0aW9uIGludm9jYXRpb24gdGhhdCBtb2RpZmllcyB0aGUgcmVmZXJlbmNlIGFsc28KLSAqIHJldHVybnMgYSBub256ZXJvIHZhbHVlIHRvIGltbWVkaWF0ZWx5IHN0b3AgdGhlIGl0ZXJhdGlvbi4KKyAqIFRoZSBzaWduYXR1cmUgZm9yIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGZvcl9lYWNoXyooKQorICogZnVuY3Rpb25zIGJlbG93LiAgVGhlIG1lbW9yeSBwb2ludGVkIHRvIGJ5IHRoZSByZWZuYW1lIGFuZCBzaGExCisgKiBhcmd1bWVudHMgaXMgb25seSBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIGZvciB0aGUgZHVyYXRpb24gb2YgYQorICogc2luZ2xlIGNhbGxiYWNrIGludm9jYXRpb24uCiAgKi8KLXR5cGVkZWYgaW50IGVhY2hfcmVmX2ZuKGNvbnN0IGNoYXIgKnJlZm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIGludCBmbGFncywgdm9pZCAqY2JfZGF0YSk7Cit0eXBlZGVmIGludCBlYWNoX3JlZl9mbihjb25zdCBjaGFyICpyZWZuYW1lLAorCQkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgaW50IGZsYWdzLCB2b2lkICpjYl9kYXRhKTsKKworLyoKKyAqIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGludm9rZSB0aGUgc3BlY2lmaWVkIGNhbGxiYWNrIGZ1bmN0aW9uIGZvcgorICogZWFjaCByZWZlcmVuY2UgaW5kaWNhdGVkLiAgSWYgdGhlIGZ1bmN0aW9uIGV2ZXIgcmV0dXJucyBhIG5vbnplcm8KKyAqIHZhbHVlLCBzdG9wIHRoZSBpdGVyYXRpb24gYW5kIHJldHVybiB0aGF0IHZhbHVlLiAgUGxlYXNlIG5vdGUgdGhhdAorICogaXQgaXMgbm90IHNhZmUgdG8gbW9kaWZ5IHJlZmVyZW5jZXMgd2hpbGUgYW4gaXRlcmF0aW9uIGlzIGluCisgKiBwcm9ncmVzcywgdW5sZXNzIHRoZSBzYW1lIGNhbGxiYWNrIGZ1bmN0aW9uIGludm9jYXRpb24gdGhhdAorICogbW9kaWZpZXMgdGhlIHJlZmVyZW5jZSBhbHNvIHJldHVybnMgYSBub256ZXJvIHZhbHVlIHRvIGltbWVkaWF0ZWx5CisgKiBzdG9wIHRoZSBpdGVyYXRpb24uCisgKi8KIGV4dGVybiBpbnQgaGVhZF9yZWYoZWFjaF9yZWZfZm4sIHZvaWQgKik7CiBleHRlcm4gaW50IGZvcl9lYWNoX3JlZihlYWNoX3JlZl9mbiwgdm9pZCAqKTsKIGV4dGVybiBpbnQgZm9yX2VhY2hfcmVmX2luKGNvbnN0IGNoYXIgKiwgZWFjaF9yZWZfZm4sIHZvaWQgKik7CkBAIC01NCwxMyArNzcsNTcgQEAKIGV4dGVybiB2b2lkIHdhcm5fZGFuZ2xpbmdfc3ltcmVmKEZJTEUgKmZwLCBjb25zdCBjaGFyICptc2dfZm10LCBjb25zdCBjaGFyICpyZWZuYW1lKTsKIAogLyoKLSAqIEFkZCBhIHJlZmVyZW5jZSB0byB0aGUgaW4tbWVtb3J5IHBhY2tlZCByZWZlcmVuY2UgY2FjaGUuICBUbyBhY3R1YWxseQotICogd3JpdGUgdGhlIHJlZmVyZW5jZSB0byB0aGUgcGFja2VkLXJlZnMgZmlsZSwgY2FsbCBwYWNrX3JlZnMoKS4KKyAqIExvY2sgdGhlIHBhY2tlZC1yZWZzIGZpbGUgZm9yIHdyaXRpbmcuICBGbGFncyBpcyBwYXNzZWQgdG8KKyAqIGhvbGRfbG9ja19maWxlX2Zvcl91cGRhdGUoKS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MuCisgKi8KK2V4dGVybiBpbnQgbG9ja19wYWNrZWRfcmVmcyhpbnQgZmxhZ3MpOworCisvKgorICogQWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBpbi1tZW1vcnkgcGFja2VkIHJlZmVyZW5jZSBjYWNoZS4gIFRoaXMgbWF5CisgKiBvbmx5IGJlIGNhbGxlZCB3aGlsZSB0aGUgcGFja2VkLXJlZnMgZmlsZSBpcyBsb2NrZWQgKHNlZQorICogbG9ja19wYWNrZWRfcmVmcygpKS4gIFRvIGFjdHVhbGx5IHdyaXRlIHRoZSBwYWNrZWQtcmVmcyBmaWxlLCBjYWxsCisgKiBjb21taXRfcGFja2VkX3JlZnMoKS4KICAqLwogZXh0ZXJuIHZvaWQgYWRkX3BhY2tlZF9yZWYoY29uc3QgY2hhciAqcmVmbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSk7CiAKKy8qCisgKiBXcml0ZSB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBwYWNrZWQgcmVmcyBjYWNoZSBmcm9tIG1lbW9yeSB0bworICogZGlzay4gIFRoZSBwYWNrZWQtcmVmcyBmaWxlIG11c3QgYWxyZWFkeSBiZSBsb2NrZWQgZm9yIHdyaXRpbmcgKHNlZQorICogbG9ja19wYWNrZWRfcmVmcygpKS4gIFJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MuCisgKi8KK2V4dGVybiBpbnQgY29tbWl0X3BhY2tlZF9yZWZzKHZvaWQpOworCisvKgorICogUm9sbGJhY2sgdGhlIGxvY2tmaWxlIGZvciB0aGUgcGFja2VkLXJlZnMgZmlsZSwgYW5kIGRpc2NhcmQgdGhlCisgKiBpbi1tZW1vcnkgcGFja2VkIHJlZmVyZW5jZSBjYWNoZS4gIChUaGUgcGFja2VkLXJlZnMgZmlsZSB3aWxsIGJlCisgKiByZWFkIGFuZXcgaWYgaXQgaXMgbmVlZGVkIGFnYWluIGFmdGVyIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLikKKyAqLworZXh0ZXJuIHZvaWQgcm9sbGJhY2tfcGFja2VkX3JlZnModm9pZCk7CisKKy8qCisgKiBGbGFncyBmb3IgY29udHJvbGxpbmcgYmVoYXZpb3VyIG9mIHBhY2tfcmVmcygpCisgKiBQQUNLX1JFRlNfUFJVTkU6IFBydW5lIGxvb3NlIHJlZnMgYWZ0ZXIgcGFja2luZworICogUEFDS19SRUZTX0FMTDogICBQYWNrIF9hbGxfIHJlZnMsIG5vdCBqdXN0IHRhZ3MgYW5kIGFscmVhZHkgcGFja2VkIHJlZnMKKyAqLworI2RlZmluZSBQQUNLX1JFRlNfUFJVTkUgMHgwMDAxCisjZGVmaW5lIFBBQ0tfUkVGU19BTEwgICAweDAwMDIKKworLyoKKyAqIFdyaXRlIGEgcGFja2VkLXJlZnMgZmlsZSBmb3IgdGhlIGN1cnJlbnQgcmVwb3NpdG9yeS4KKyAqIGZsYWdzOiBDb21iaW5hdGlvbiBvZiB0aGUgYWJvdmUgUEFDS19SRUZTXyogZmxhZ3MuCisgKi8KK2ludCBwYWNrX3JlZnModW5zaWduZWQgaW50IGZsYWdzKTsKKwogZXh0ZXJuIGludCByZWZfZXhpc3RzKGNvbnN0IGNoYXIgKik7CiAKKy8qCisgKiBJZiByZWZuYW1lIGlzIGEgbm9uLXN5bWJvbGljIHJlZmVyZW5jZSB0aGF0IHJlZmVycyB0byBhIHRhZyBvYmplY3QsCisgKiBhbmQgdGhlIHRhZyBjYW4gYmUgKHJlY3Vyc2l2ZWx5KSBkZXJlZmVyZW5jZWQgdG8gYSBub24tdGFnIG9iamVjdCwKKyAqIHN0b3JlIHRoZSBTSEExIG9mIHRoZSByZWZlcnJlZC10byBvYmplY3QgdG8gc2hhMSBhbmQgcmV0dXJuIDAuICBJZgorICogYW55IG9mIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQsIHJldHVybiBhIG5vbi16ZXJvIHZhbHVlLgorICogU3ltYm9saWMgcmVmZXJlbmNlcyBhcmUgY29uc2lkZXJlZCB1bnBlZWxhYmxlLCBldmVuIGlmIHRoZXkKKyAqIHVsdGltYXRlbHkgcmVzb2x2ZSB0byBhIHBlZWxhYmxlIHRhZy4KKyAqLwogZXh0ZXJuIGludCBwZWVsX3JlZihjb25zdCBjaGFyICpyZWZuYW1lLCB1bnNpZ25lZCBjaGFyICpzaGExKTsKIAogLyoqIExvY2tzIGEgInJlZnMvIiByZWYgcmV0dXJuaW5nIHRoZSBsb2NrIG9uIHN1Y2Nlc3MgYW5kIE5VTEwgb24gZmFpbHVyZS4gKiovCmRpZmYgLS1naXQgYS9yZW1vdGUtY3VybC5jIGIvcmVtb3RlLWN1cmwuYwppbmRleCA2MGVkYTYzLi41YjNjZTllIDEwMDY0NAotLS0gYS9yZW1vdGUtY3VybC5jCisrKyBiL3JlbW90ZS1jdXJsLmMKQEAgLTcsNiArNyw3IEBACiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKICNpbmNsdWRlICJwa3QtbGluZS5oIgogI2luY2x1ZGUgInNpZGViYW5kLmgiCisjaW5jbHVkZSAiYXJndi1hcnJheS5oIgogCiBzdGF0aWMgc3RydWN0IHJlbW90ZSAqcmVtb3RlOwogc3RhdGljIGNvbnN0IGNoYXIgKnVybDsgLyogYWx3YXlzIGVuZHMgd2l0aCBhIHRyYWlsaW5nIHNsYXNoICovCkBAIC03ODcsMzYgKzc4OCwzNSBAQAogc3RhdGljIGludCBwdXNoX2dpdChzdHJ1Y3QgZGlzY292ZXJ5ICpoZWFkcywgaW50IG5yX3NwZWMsIGNoYXIgKipzcGVjcykKIHsKIAlzdHJ1Y3QgcnBjX3N0YXRlIHJwYzsKLQljb25zdCBjaGFyICoqYXJndjsKLQlpbnQgYXJnYyA9IDAsIGksIGVycjsKKwlpbnQgaSwgZXJyOworCXN0cnVjdCBhcmd2X2FycmF5IGFyZ3M7CiAKLQlhcmd2ID0geG1hbGxvYygoMTAgKyBucl9zcGVjKSAqIHNpemVvZihjaGFyKikpOwotCWFyZ3ZbYXJnYysrXSA9ICJzZW5kLXBhY2siOwotCWFyZ3ZbYXJnYysrXSA9ICItLXN0YXRlbGVzcy1ycGMiOwotCWFyZ3ZbYXJnYysrXSA9ICItLWhlbHBlci1zdGF0dXMiOworCWFyZ3ZfYXJyYXlfaW5pdCgmYXJncyk7CisJYXJndl9hcnJheV9wdXNobCgmYXJncywgInNlbmQtcGFjayIsICItLXN0YXRlbGVzcy1ycGMiLCAiLS1oZWxwZXItc3RhdHVzIiwKKwkJCSBOVUxMKTsKKwogCWlmIChvcHRpb25zLnRoaW4pCi0JCWFyZ3ZbYXJnYysrXSA9ICItLXRoaW4iOworCQlhcmd2X2FycmF5X3B1c2goJmFyZ3MsICItLXRoaW4iKTsKIAlpZiAob3B0aW9ucy5kcnlfcnVuKQotCQlhcmd2W2FyZ2MrK10gPSAiLS1kcnktcnVuIjsKKwkJYXJndl9hcnJheV9wdXNoKCZhcmdzLCAiLS1kcnktcnVuIik7CiAJaWYgKG9wdGlvbnMudmVyYm9zaXR5ID09IDApCi0JCWFyZ3ZbYXJnYysrXSA9ICItLXF1aWV0IjsKKwkJYXJndl9hcnJheV9wdXNoKCZhcmdzLCAiLS1xdWlldCIpOwogCWVsc2UgaWYgKG9wdGlvbnMudmVyYm9zaXR5ID4gMSkKLQkJYXJndlthcmdjKytdID0gIi0tdmVyYm9zZSI7Ci0JYXJndlthcmdjKytdID0gb3B0aW9ucy5wcm9ncmVzcyA/ICItLXByb2dyZXNzIiA6ICItLW5vLXByb2dyZXNzIjsKLQlhcmd2W2FyZ2MrK10gPSB1cmw7CisJCWFyZ3ZfYXJyYXlfcHVzaCgmYXJncywgIi0tdmVyYm9zZSIpOworCWFyZ3ZfYXJyYXlfcHVzaCgmYXJncywgb3B0aW9ucy5wcm9ncmVzcyA/ICItLXByb2dyZXNzIiA6ICItLW5vLXByb2dyZXNzIik7CisJYXJndl9hcnJheV9wdXNoKCZhcmdzLCB1cmwpOwogCWZvciAoaSA9IDA7IGkgPCBucl9zcGVjOyBpKyspCi0JCWFyZ3ZbYXJnYysrXSA9IHNwZWNzW2ldOwotCWFyZ3ZbYXJnYysrXSA9IE5VTEw7CisJCWFyZ3ZfYXJyYXlfcHVzaCgmYXJncywgc3BlY3NbaV0pOwogCiAJbWVtc2V0KCZycGMsIDAsIHNpemVvZihycGMpKTsKIAlycGMuc2VydmljZV9uYW1lID0gImdpdC1yZWNlaXZlLXBhY2siLAotCXJwYy5hcmd2ID0gYXJndjsKKwlycGMuYXJndiA9IGFyZ3MuYXJndjsKIAogCWVyciA9IHJwY19zZXJ2aWNlKCZycGMsIGhlYWRzKTsKIAlpZiAocnBjLnJlc3VsdC5sZW4pCiAJCXdyaXRlX29yX2RpZSgxLCBycGMucmVzdWx0LmJ1ZiwgcnBjLnJlc3VsdC5sZW4pOwogCXN0cmJ1Zl9yZWxlYXNlKCZycGMucmVzdWx0KTsKLQlmcmVlKGFyZ3YpOworCWFyZ3ZfYXJyYXlfY2xlYXIoJmFyZ3MpOwogCXJldHVybiBlcnI7CiB9CiAKZGlmZiAtLWdpdCBhL3JlbW90ZS10ZXN0c3ZuLmMgYi9yZW1vdGUtdGVzdHN2bi5jCmluZGV4IDVkZGYxMWMuLmQ3Y2Q1ZDIgMTAwNjQ0Ci0tLSBhL3JlbW90ZS10ZXN0c3ZuLmMKKysrIGIvcmVtb3RlLXRlc3Rzdm4uYwpAQCAtMjg2LDcgKzI4Niw3IEBACiAJcmV0dXJuIDA7CiB9CiAKLWludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndikKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIHsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklULCB1cmxfc2IgPSBTVFJCVUZfSU5JVCwKIAkJCXByaXZhdGVfcmVmX3NiID0gU1RSQlVGX0lOSVQsIG1hcmtzZmlsZW5hbWVfc2IgPSBTVFJCVUZfSU5JVCwKZGlmZiAtLWdpdCBhL3JlbW90ZS5jIGIvcmVtb3RlLmMKaW5kZXggNjhlYjk5Yi4uZWZjYmE5MyAxMDA2NDQKLS0tIGEvcmVtb3RlLmMKKysrIGIvcmVtb3RlLmMKQEAgLTI3NiwxMCArMjc2LDkgQEAKIAogc3RhdGljIHZvaWQgcmVhZF9icmFuY2hlc19maWxlKHN0cnVjdCByZW1vdGUgKnJlbW90ZSkKIHsKLQljb25zdCBjaGFyICpzbGFzaCA9IHN0cmNocihyZW1vdGUtPm5hbWUsICcvJyk7CiAJY2hhciAqZnJhZzsKIAlzdHJ1Y3Qgc3RyYnVmIGJyYW5jaCA9IFNUUkJVRl9JTklUOwotCWludCBuID0gc2xhc2ggPyBzbGFzaCAtIHJlbW90ZS0+bmFtZSA6IDEwMDA7CisJaW50IG4gPSAxMDAwOwogCUZJTEUgKmYgPSBmb3BlbihnaXRfcGF0aCgiYnJhbmNoZXMvJS4qcyIsIG4sIHJlbW90ZS0+bmFtZSksICJyIik7CiAJY2hhciAqcywgKnA7CiAJaW50IGxlbjsKQEAgLTI5OSwyMSArMjk4LDExIEBACiAJd2hpbGUgKGlzc3BhY2UocFstMV0pKQogCQkqLS1wID0gMDsKIAlsZW4gPSBwIC0gczsKLQlpZiAoc2xhc2gpCi0JCWxlbiArPSBzdHJsZW4oc2xhc2gpOwogCXAgPSB4bWFsbG9jKGxlbiArIDEpOwogCXN0cmNweShwLCBzKTsKLQlpZiAoc2xhc2gpCi0JCXN0cmNhdChwLCBzbGFzaCk7CiAKIAkvKgotCSAqIFdpdGggInNsYXNoIiwgZS5nLiAiZ2l0IGZldGNoIGpnYXJ6aWsvbmV0ZGV2LTIuNiIgd2hlbgotCSAqIHJlYWRpbmcgZnJvbSAkR0lUX0RJUi9icmFuY2hlcy9qZ2FyemlrIGZldGNoZXMgIkhFQUQiIGZyb20KLQkgKiB0aGUgcGFydGlhbCBVUkwgb2J0YWluZWQgZnJvbSB0aGUgYnJhbmNoZXMgZmlsZSBwbHVzCi0JICogIi9uZXRkZXYtMi42IiBhbmQgZG9lcyBub3Qgc3RvcmUgaXQgaW4gYW55IHRyYWNraW5nIHJlZi4KLQkgKiAjYnJhbmNoIHNwZWNpZmllciBpbiB0aGUgZmlsZSBpcyBpZ25vcmVkLgotCSAqCi0JICogT3RoZXJ3aXNlLCB0aGUgYnJhbmNoZXMgZmlsZSB3b3VsZCBoYXZlIFVSTCBhbmQgb3B0aW9uYWxseQorCSAqIFRoZSBicmFuY2hlcyBmaWxlIHdvdWxkIGhhdmUgVVJMIGFuZCBvcHRpb25hbGx5CiAJICogI2JyYW5jaCBzcGVjaWZpZWQuICBUaGUgIm1hc3RlciIgKG9yIHNwZWNpZmllZCkgYnJhbmNoIGlzCiAJICogZmV0Y2hlZCBhbmQgc3RvcmVkIGluIHRoZSBsb2NhbCBicmFuY2ggb2YgdGhlIHNhbWUgbmFtZS4KIAkgKi8KQEAgLTMyMywxMiArMzEyLDggQEAKIAkJc3RyYnVmX2FkZGYoJmJyYW5jaCwgInJlZnMvaGVhZHMvJXMiLCBmcmFnKTsKIAl9IGVsc2UKIAkJc3RyYnVmX2FkZHN0cigmYnJhbmNoLCAicmVmcy9oZWFkcy9tYXN0ZXIiKTsKLQlpZiAoIXNsYXNoKSB7Ci0JCXN0cmJ1Zl9hZGRmKCZicmFuY2gsICI6cmVmcy9oZWFkcy8lcyIsIHJlbW90ZS0+bmFtZSk7Ci0JfSBlbHNlIHsKLQkJc3RyYnVmX3Jlc2V0KCZicmFuY2gpOwotCQlzdHJidWZfYWRkc3RyKCZicmFuY2gsICJIRUFEOiIpOwotCX0KKworCXN0cmJ1Zl9hZGRmKCZicmFuY2gsICI6cmVmcy9oZWFkcy8lcyIsIHJlbW90ZS0+bmFtZSk7CiAJYWRkX3VybF9hbGlhcyhyZW1vdGUsIHApOwogCWFkZF9mZXRjaF9yZWZzcGVjKHJlbW90ZSwgc3RyYnVmX2RldGFjaCgmYnJhbmNoLCBOVUxMKSk7CiAJLyoKQEAgLTEzMTcsNiArMTMwMiwxNCBAQAogCWZyZWUoc2VudF90aXBzLnRpcCk7CiB9CiAKK3N0YXRpYyB2b2lkIHByZXBhcmVfcmVmX2luZGV4KHN0cnVjdCBzdHJpbmdfbGlzdCAqcmVmX2luZGV4LCBzdHJ1Y3QgcmVmICpyZWYpCit7CisJZm9yICggOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkKKwkJc3RyaW5nX2xpc3RfYXBwZW5kX25vZHVwKHJlZl9pbmRleCwgcmVmLT5uYW1lKS0+dXRpbCA9IHJlZjsKKworCXNvcnRfc3RyaW5nX2xpc3QocmVmX2luZGV4KTsKK30KKwogLyoKICAqIEdpdmVuIHRoZSBzZXQgb2YgcmVmcyB0aGUgbG9jYWwgcmVwb3NpdG9yeSBoYXMsIHRoZSBzZXQgb2YgcmVmcyB0aGUKICAqIHJlbW90ZSByZXBvc2l0b3J5IGhhcywgYW5kIHRoZSByZWZzcGVjIHVzZWQgZm9yIHB1c2gsIGRldGVybWluZQpAQCAtMTMzNSw2ICsxMzI4LDcgQEAKIAlpbnQgZXJyczsKIAlzdGF0aWMgY29uc3QgY2hhciAqZGVmYXVsdF9yZWZzcGVjW10gPSB7ICI6IiwgTlVMTCB9OwogCXN0cnVjdCByZWYgKnJlZiwgKipkc3RfdGFpbCA9IHRhaWxfcmVmKGRzdCk7CisJc3RydWN0IHN0cmluZ19saXN0IGRzdF9yZWZfaW5kZXggPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogCiAJaWYgKCFucl9yZWZzcGVjKSB7CiAJCW5yX3JlZnNwZWMgPSAxOwpAQCAtMTM0NSw2ICsxMzM5LDcgQEAKIAogCS8qIHBpY2sgdGhlIHJlbWFpbmRlciAqLwogCWZvciAocmVmID0gc3JjOyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgeworCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqZHN0X2l0ZW07CiAJCXN0cnVjdCByZWYgKmRzdF9wZWVyOwogCQljb25zdCBzdHJ1Y3QgcmVmc3BlYyAqcGF0ID0gTlVMTDsKIAkJY2hhciAqZHN0X25hbWU7CkBAIC0xMzUzLDcgKzEzNDgsMTEgQEAKIAkJaWYgKCFkc3RfbmFtZSkKIAkJCWNvbnRpbnVlOwogCi0JCWRzdF9wZWVyID0gZmluZF9yZWZfYnlfbmFtZSgqZHN0LCBkc3RfbmFtZSk7CisJCWlmICghZHN0X3JlZl9pbmRleC5ucikKKwkJCXByZXBhcmVfcmVmX2luZGV4KCZkc3RfcmVmX2luZGV4LCAqZHN0KTsKKworCQlkc3RfaXRlbSA9IHN0cmluZ19saXN0X2xvb2t1cCgmZHN0X3JlZl9pbmRleCwgZHN0X25hbWUpOworCQlkc3RfcGVlciA9IGRzdF9pdGVtID8gZHN0X2l0ZW0tPnV0aWwgOiBOVUxMOwogCQlpZiAoZHN0X3BlZXIpIHsKIAkJCWlmIChkc3RfcGVlci0+cGVlcl9yZWYpCiAJCQkJLyogV2UncmUgYWxyZWFkeSBzZW5kaW5nIHNvbWV0aGluZyB0byB0aGlzIHJlZi4gKi8KQEAgLTEzNzAsNiArMTM2OSw4IEBACiAJCQkvKiBDcmVhdGUgYSBuZXcgb25lIGFuZCBsaW5rIGl0ICovCiAJCQlkc3RfcGVlciA9IG1ha2VfbGlua2VkX3JlZihkc3RfbmFtZSwgJmRzdF90YWlsKTsKIAkJCWhhc2hjcHkoZHN0X3BlZXItPm5ld19zaGExLCByZWYtPm5ld19zaGExKTsKKwkJCXN0cmluZ19saXN0X2luc2VydCgmZHN0X3JlZl9pbmRleCwKKwkJCQlkc3RfcGVlci0+bmFtZSktPnV0aWwgPSBkc3RfcGVlcjsKIAkJfQogCQlkc3RfcGVlci0+cGVlcl9yZWYgPSBjb3B5X3JlZihyZWYpOwogCQlkc3RfcGVlci0+Zm9yY2UgPSBwYXQtPmZvcmNlOwpAQCAtMTM3NywxMCArMTM3OCwxMyBAQAogCQlmcmVlKGRzdF9uYW1lKTsKIAl9CiAKKwlzdHJpbmdfbGlzdF9jbGVhcigmZHN0X3JlZl9pbmRleCwgMCk7CisKIAlpZiAoZmxhZ3MgJiBNQVRDSF9SRUZTX0ZPTExPV19UQUdTKQogCQlhZGRfbWlzc2luZ190YWdzKHNyYywgZHN0LCAmZHN0X3RhaWwpOwogCiAJaWYgKHNlbmRfcHJ1bmUpIHsKKwkJc3RydWN0IHN0cmluZ19saXN0IHNyY19yZWZfaW5kZXggPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOwogCQkvKiBjaGVjayBmb3IgbWlzc2luZyByZWZzIG9uIHRoZSByZW1vdGUgKi8KIAkJZm9yIChyZWYgPSAqZHN0OyByZWY7IHJlZiA9IHJlZi0+bmV4dCkgewogCQkJY2hhciAqc3JjX25hbWU7CkBAIC0xMzkxLDExICsxMzk1LDE1IEBACiAKIAkJCXNyY19uYW1lID0gZ2V0X3JlZl9tYXRjaChycywgbnJfcmVmc3BlYywgcmVmLCBzZW5kX21pcnJvciwgRlJPTV9EU1QsIE5VTEwpOwogCQkJaWYgKHNyY19uYW1lKSB7Ci0JCQkJaWYgKCFmaW5kX3JlZl9ieV9uYW1lKHNyYywgc3JjX25hbWUpKQorCQkJCWlmICghc3JjX3JlZl9pbmRleC5ucikKKwkJCQkJcHJlcGFyZV9yZWZfaW5kZXgoJnNyY19yZWZfaW5kZXgsIHNyYyk7CisJCQkJaWYgKCFzdHJpbmdfbGlzdF9oYXNfc3RyaW5nKCZzcmNfcmVmX2luZGV4LAorCQkJCQkgICAgc3JjX25hbWUpKQogCQkJCQlyZWYtPnBlZXJfcmVmID0gYWxsb2NfZGVsZXRlX3JlZigpOwogCQkJCWZyZWUoc3JjX25hbWUpOwogCQkJfQogCQl9CisJCXN0cmluZ19saXN0X2NsZWFyKCZzcmNfcmVmX2luZGV4LCAwKTsKIAl9CiAJaWYgKGVycnMpCiAJCXJldHVybiAtMTsKQEAgLTE0NzQsOCArMTQ4Miw3IEBACiAJCXJldC0+cmVtb3RlID0gcmVtb3RlX2dldChyZXQtPnJlbW90ZV9uYW1lKTsKIAkJaWYgKHJldC0+bWVyZ2VfbnIpIHsKIAkJCWludCBpOwotCQkJcmV0LT5tZXJnZSA9IHhjYWxsb2Moc2l6ZW9mKCpyZXQtPm1lcmdlKSwKLQkJCQkJICAgICByZXQtPm1lcmdlX25yKTsKKwkJCXJldC0+bWVyZ2UgPSB4Y2FsbG9jKHJldC0+bWVyZ2VfbnIsIHNpemVvZigqcmV0LT5tZXJnZSkpOwogCQkJZm9yIChpID0gMDsgaSA8IHJldC0+bWVyZ2VfbnI7IGkrKykgewogCQkJCXJldC0+bWVyZ2VbaV0gPSB4Y2FsbG9jKDEsIHNpemVvZigqKnJldC0+bWVyZ2UpKTsKIAkJCQlyZXQtPm1lcmdlW2ldLT5zcmMgPSB4c3RyZHVwKHJldC0+bWVyZ2VfbmFtZVtpXSk7CmRpZmYgLS1naXQgYS9yZXJlcmUuYyBiL3JlcmVyZS5jCmluZGV4IDk4ZTNlMjkuLjZmZGU4ZjkgMTAwNjQ0Ci0tLSBhL3JlcmVyZS5jCisrKyBiL3JlcmVyZS5jCkBAIC0yOTksNyArMjk5LDcgQEAKIHsKIAltbWZpbGVfdCBtbWZpbGVbM10gPSB7e05VTEx9fTsKIAltbWJ1ZmZlcl90IHJlc3VsdCA9IHtOVUxMLCAwfTsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CiAJaW50IHBvcywgbGVuLCBpLCBodW5rX25vOwogCXN0cnVjdCByZXJlcmVfaW9fbWVtIGlvOwogCWludCBtYXJrZXJfc2l6ZSA9IGxsX21lcmdlX21hcmtlcl9zaXplKHBhdGgpOwpAQCAtMzU5LDcgKzM1OSw3IEBACiAKIHN0YXRpYyBpbnQgY2hlY2tfb25lX2NvbmZsaWN0KGludCBpLCBpbnQgKnR5cGUpCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICplID0gYWN0aXZlX2NhY2hlW2ldOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAogCWlmICghY2Vfc3RhZ2UoZSkpIHsKIAkJKnR5cGUgPSBSRVNPTFZFRDsKQEAgLTM3NCw4ICszNzQsOCBAQAogCiAJLyogT25seSBoYW5kbGUgcmVndWxhciBmaWxlcyB3aXRoIGJvdGggc3RhZ2VzICMyIGFuZCAjMyAqLwogCWlmIChpICsgMSA8IGFjdGl2ZV9ucikgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmUyID0gYWN0aXZlX2NhY2hlW2ldOwotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmUzID0gYWN0aXZlX2NhY2hlW2kgKyAxXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICplMiA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICplMyA9IGFjdGl2ZV9jYWNoZVtpICsgMV07CiAJCWlmIChjZV9zdGFnZShlMikgPT0gMiAmJgogCQkgICAgY2Vfc3RhZ2UoZTMpID09IDMgJiYKIAkJICAgIGNlX3NhbWVfbmFtZShlLCBlMykgJiYKQEAgLTM5OCw3ICszOTgsNyBAQAogCiAJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjspIHsKIAkJaW50IGNvbmZsaWN0X3R5cGU7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICplID0gYWN0aXZlX2NhY2hlW2ldOwogCQlpID0gY2hlY2tfb25lX2NvbmZsaWN0KGksICZjb25mbGljdF90eXBlKTsKIAkJaWYgKGNvbmZsaWN0X3R5cGUgPT0gVEhSRUVfU1RBR0VEKQogCQkJc3RyaW5nX2xpc3RfaW5zZXJ0KGNvbmZsaWN0LCAoY29uc3QgY2hhciAqKWUtPm5hbWUpOwpAQCAtNDE0LDcgKzQxNCw3IEBACiAKIAlmb3IgKGkgPSAwOyBpIDwgYWN0aXZlX25yOykgewogCQlpbnQgY29uZmxpY3RfdHlwZTsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICplID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmUgPSBhY3RpdmVfY2FjaGVbaV07CiAJCWkgPSBjaGVja19vbmVfY29uZmxpY3QoaSwgJmNvbmZsaWN0X3R5cGUpOwogCQlpZiAoY29uZmxpY3RfdHlwZSA9PSBQVU5URUQpCiAJCQlzdHJpbmdfbGlzdF9pbnNlcnQobWVyZ2VfcnIsIChjb25zdCBjaGFyICopZS0+bmFtZSk7CmRpZmYgLS1naXQgYS9yZXNvbHZlLXVuZG8uYyBiL3Jlc29sdmUtdW5kby5jCmluZGV4IDYzOWViOWMuLjc3MTAxZjUgMTAwNjQ0Ci0tLSBhL3Jlc29sdmUtdW5kby5jCisrKyBiL3Jlc29sdmUtdW5kby5jCkBAIC0xMTUsNyArMTE1LDcgQEAKIAogaW50IHVubWVyZ2VfaW5kZXhfZW50cnlfYXQoc3RydWN0IGluZGV4X3N0YXRlICppc3RhdGUsIGludCBwb3MpCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlOwogCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCXN0cnVjdCByZXNvbHZlX3VuZG9faW5mbyAqcnU7CiAJaW50IGksIGVyciA9IDAsIG1hdGNoZWQ7CkBAIC0xNjcsNyArMTY3LDcgQEAKIAkJcmV0dXJuOwogCiAJZm9yIChpID0gMDsgaSA8IGlzdGF0ZS0+Y2FjaGVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gaXN0YXRlLT5jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGlzdGF0ZS0+Y2FjaGVbaV07CiAJCWlmIChjZS0+Y2VfZmxhZ3MgJiBDRV9NQVRDSEVEKQogCQkJaSA9IHVubWVyZ2VfaW5kZXhfZW50cnlfYXQoaXN0YXRlLCBpKTsKIAl9CkBAIC0xODEsNyArMTgxLDcgQEAKIAkJcmV0dXJuOwogCiAJZm9yIChpID0gMDsgaSA8IGlzdGF0ZS0+Y2FjaGVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gaXN0YXRlLT5jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGlzdGF0ZS0+Y2FjaGVbaV07CiAJCWlmICghbWF0Y2hfcGF0aHNwZWMocGF0aHNwZWMsIGNlLT5uYW1lLCBjZV9uYW1lbGVuKGNlKSwgMCwgTlVMTCkpCiAJCQljb250aW51ZTsKIAkJaSA9IHVubWVyZ2VfaW5kZXhfZW50cnlfYXQoaXN0YXRlLCBpKTsKZGlmZiAtLWdpdCBhL3JldmlzaW9uLmMgYi9yZXZpc2lvbi5jCmluZGV4IDdmN2E4YWIuLjg0Y2NjMDUgMTAwNjQ0Ci0tLSBhL3JldmlzaW9uLmMKKysrIGIvcmV2aXNpb24uYwpAQCAtMTMsNiArMTMsNyBAQAogI2luY2x1ZGUgImRlY29yYXRlLmgiCiAjaW5jbHVkZSAibG9nLXRyZWUuaCIKICNpbmNsdWRlICJzdHJpbmctbGlzdC5oIgorI2luY2x1ZGUgImxpbmUtbG9nLmgiCiAjaW5jbHVkZSAibWFpbG1hcC5oIgogCiB2b2xhdGlsZSBzaG93X2Vhcmx5X291dHB1dF9mbl90IHNob3dfZWFybHlfb3V0cHV0OwpAQCAtNzAsNyArNzEsOCBAQAogCXJldHVybiBvdXJzIHx8IGVtaXR0ZWQ7CiB9CiAKLXZvaWQgc2hvd19vYmplY3Rfd2l0aF9uYW1lKEZJTEUgKm91dCwgc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBzdHJ1Y3QgbmFtZV9wYXRoICpwYXRoLCBjb25zdCBjaGFyICpjb21wb25lbnQpCit2b2lkIHNob3dfb2JqZWN0X3dpdGhfbmFtZShGSUxFICpvdXQsIHN0cnVjdCBvYmplY3QgKm9iaiwKKwkJCSAgIGNvbnN0IHN0cnVjdCBuYW1lX3BhdGggKnBhdGgsIGNvbnN0IGNoYXIgKmNvbXBvbmVudCkKIHsKIAlzdHJ1Y3QgbmFtZV9wYXRoIGxlYWY7CiAJbGVhZi51cCA9IChzdHJ1Y3QgbmFtZV9wYXRoICopcGF0aDsKQEAgLTg3LDcgKzg5LDkgQEAKIAkJc3RydWN0IG5hbWVfcGF0aCAqcGF0aCwKIAkJY29uc3QgY2hhciAqbmFtZSkKIHsKLQlhZGRfb2JqZWN0X2FycmF5KG9iaiwgcGF0aF9uYW1lKHBhdGgsIG5hbWUpLCBwKTsKKwljaGFyICpwbiA9IHBhdGhfbmFtZShwYXRoLCBuYW1lKTsKKwlhZGRfb2JqZWN0X2FycmF5KG9iaiwgcG4sIHApOworCWZyZWUocG4pOwogfQogCiBzdGF0aWMgdm9pZCBtYXJrX2Jsb2JfdW5pbnRlcmVzdGluZyhzdHJ1Y3QgYmxvYiAqYmxvYikKQEAgLTE4Niw3ICsxOTAsOSBAQAogCX0KIH0KIAotc3RhdGljIHZvaWQgYWRkX3BlbmRpbmdfb2JqZWN0X3dpdGhfbW9kZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbW9kZSkKK3N0YXRpYyB2b2lkIGFkZF9wZW5kaW5nX29iamVjdF93aXRoX21vZGUoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCQkgc3RydWN0IG9iamVjdCAqb2JqLAorCQkJCQkgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgbW9kZSkKIHsKIAlpZiAoIW9iaikKIAkJcmV0dXJuOwpAQCAtMjA5LDcgKzIxNSw4IEBACiAJYWRkX29iamVjdF9hcnJheV93aXRoX21vZGUob2JqLCBuYW1lLCAmcmV2cy0+cGVuZGluZywgbW9kZSk7CiB9CiAKLXZvaWQgYWRkX3BlbmRpbmdfb2JqZWN0KHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lKQordm9pZCBhZGRfcGVuZGluZ19vYmplY3Qoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lKQogewogCWFkZF9wZW5kaW5nX29iamVjdF93aXRoX21vZGUocmV2cywgb2JqLCBuYW1lLCBTX0lGSU5WQUxJRCk7CiB9CkBAIC0yMjYsNyArMjMzLDkgQEAKIAlhZGRfcGVuZGluZ19vYmplY3QocmV2cywgb2JqLCAiSEVBRCIpOwogfQogCi1zdGF0aWMgc3RydWN0IG9iamVjdCAqZ2V0X3JlZmVyZW5jZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkIGludCBmbGFncykKK3N0YXRpYyBzdHJ1Y3Qgb2JqZWN0ICpnZXRfcmVmZXJlbmNlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgY29uc3QgY2hhciAqbmFtZSwKKwkJCQkgICAgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwKKwkJCQkgICAgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXN0cnVjdCBvYmplY3QgKm9iamVjdDsKIApAQCAtMjQ3LDcgKzI1Niw4IEBACiAJYWRkX3BlbmRpbmdfb2JqZWN0KHJldnMsIG9iamVjdCwgbmFtZSk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgY29tbWl0ICpoYW5kbGVfY29tbWl0KHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IG9iamVjdCAqb2JqZWN0LCBjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIHN0cnVjdCBjb21taXQgKmhhbmRsZV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJCSAgICBzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QsIGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFncyA9IG9iamVjdC0+ZmxhZ3M7CiAKQEAgLTMzMyw2ICszNDMsODAgQEAKIH0KIAogLyoKKyAqIEEgZGVmaW5pdGlvbiBvZiAicmVsZXZhbnQiIGNvbW1pdCB0aGF0IHdlIGNhbiB1c2UgdG8gc2ltcGxpZnkgbGltaXRlZCBncmFwaHMKKyAqIGJ5IGVsaW1pbmF0aW5nIHNpZGUgYnJhbmNoZXMuCisgKgorICogQSAicmVsZXZhbnQiIGNvbW1pdCBpcyBvbmUgdGhhdCBpcyAhVU5JTlRFUkVTVElORyAoaWUgd2UgYXJlIGluY2x1ZGluZyBpdAorICogaW4gb3VyIGxpc3QpLCBvciB0aGF0IGlzIGEgc3BlY2lmaWVkIEJPVFRPTSBjb21taXQuIFRoZW4gYWZ0ZXIgY29tcHV0aW5nCisgKiBhIGxpbWl0ZWQgbGlzdCwgZHVyaW5nIHByb2Nlc3Npbmcgd2UgY2FuIGdlbmVyYWxseSBpZ25vcmUgYm91bmRhcnkgbWVyZ2VzCisgKiBjb21pbmcgZnJvbSBvdXRzaWRlIHRoZSBncmFwaCwgKGllIGZyb20gaXJyZWxldmFudCBwYXJlbnRzKSwgYW5kIHRyZWF0CisgKiB0aG9zZSBtZXJnZXMgYXMgaWYgdGhleSB3ZXJlIHNpbmdsZS1wYXJlbnQuIFRSRUVTQU1FIGlzIGRlZmluZWQgdG8gY29uc2lkZXIKKyAqIG9ubHkgcmVsZXZhbnQgcGFyZW50cywgaWYgYW55LiBJZiB3ZSBhcmUgVFJFRVNBTUUgdG8gb3VyIG9uLWdyYXBoIHBhcmVudHMsCisgKiB3ZSBkb24ndCBjYXJlIGlmIHdlIHdlcmUgIVRSRUVTQU1FIHRvIG5vbi1ncmFwaCBwYXJlbnRzLgorICoKKyAqIFRyZWF0aW5nIGJvdHRvbSBjb21taXRzIGFzIHJlbGV2YW50IGVuc3VyZXMgdGhhdCBhIGxpbWl0ZWQgZ3JhcGgncworICogY29ubmVjdGlvbiB0byB0aGUgYWN0dWFsIGJvdHRvbSBjb21taXQgaXMgbm90IHZpZXdlZCBhcyBhIHNpZGUgYnJhbmNoLCBidXQKKyAqIHRyZWF0ZWQgYXMgcGFydCBvZiB0aGUgZ3JhcGguIEZvciBleGFtcGxlOgorICoKKyAqICAgLi4uLlouLi5BLS0tWC0tLW8tLS1vLS0tQgorICogICAgICAgIC4gICAgIC8KKyAqICAgICAgICAgVy0tLVkKKyAqCisgKiBXaGVuIGNvbXB1dGluZyAiQS4uQiIsIHRoZSBBLVggY29ubmVjdGlvbiBpcyBhdCBsZWFzdCBhcyBpbXBvcnRhbnQgYXMKKyAqIFktWCwgZGVzcGl0ZSBBIGJlaW5nIGZsYWdnZWQgVU5JTlRFUkVTVElORy4KKyAqCisgKiBBbmQgd2hlbiBjb21wdXRpbmcgLS1hbmNlc3RyeS1wYXRoICJBLi5CIiwgdGhlIEEtWCBjb25uZWN0aW9uIGlzIG1vcmUKKyAqIGltcG9ydGFudCB0aGFuIFktWCwgZGVzcGl0ZSBib3RoIEEgYW5kIFkgYmVpbmcgZmxhZ2dlZCBVTklOVEVSRVNUSU5HLgorICovCitzdGF0aWMgaW5saW5lIGludCByZWxldmFudF9jb21taXQoc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXJldHVybiAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiAoVU5JTlRFUkVTVElORyB8IEJPVFRPTSkpICE9IFVOSU5URVJFU1RJTkc7Cit9CisKKy8qCisgKiBSZXR1cm4gYSBzaW5nbGUgcmVsZXZhbnQgY29tbWl0IGZyb20gYSBwYXJlbnQgbGlzdC4gSWYgd2UgYXJlIGEgVFJFRVNBTUUKKyAqIGNvbW1pdCwgYW5kIHRoaXMgc2VsZWN0cyBvbmUgb2Ygb3VyIHBhcmVudHMsIHRoZW4gd2UgY2FuIHNhZmVseSBzaW1wbGlmeSB0bworICogdGhhdCBwYXJlbnQuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgY29tbWl0ICpvbmVfcmVsZXZhbnRfcGFyZW50KGNvbnN0IHN0cnVjdCByZXZfaW5mbyAqcmV2cywKKwkJCQkJICBzdHJ1Y3QgY29tbWl0X2xpc3QgKm9yaWcpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICpsaXN0ID0gb3JpZzsKKwlzdHJ1Y3QgY29tbWl0ICpyZWxldmFudCA9IE5VTEw7CisKKwlpZiAoIW9yaWcpCisJCXJldHVybiBOVUxMOworCisJLyoKKwkgKiBGb3IgMS1wYXJlbnQgY29tbWl0cywgb3IgaWYgZmlyc3QtcGFyZW50LW9ubHksIHRoZW4gcmV0dXJuIHRoYXQKKwkgKiBmaXJzdCBwYXJlbnQgKGV2ZW4gaWYgbm90ICJyZWxldmFudCIgYnkgdGhlIGFib3ZlIGRlZmluaXRpb24pLgorCSAqIFRSRUVTQU1FIHdpbGwgaGF2ZSBiZWVuIHNldCBwdXJlbHkgb24gdGhhdCBwYXJlbnQuCisJICovCisJaWYgKHJldnMtPmZpcnN0X3BhcmVudF9vbmx5IHx8ICFvcmlnLT5uZXh0KQorCQlyZXR1cm4gb3JpZy0+aXRlbTsKKworCS8qCisJICogRm9yIG11bHRpLXBhcmVudCBjb21taXRzLCBpZGVudGlmeSBhIHNvbGUgcmVsZXZhbnQgcGFyZW50LCBpZiBhbnkuCisJICogSWYgd2UgaGF2ZSBvbmx5IG9uZSByZWxldmFudCBwYXJlbnQsIHRoZW4gVFJFRVNBTUUgd2lsbCBiZSBzZXQgcHVyZWx5CisJICogd2l0aCByZWdhcmQgdG8gdGhhdCBwYXJlbnQsIGFuZCB3ZSBjYW4gc2ltcGxpZnkgYWNjb3JkaW5nbHkuCisJICoKKwkgKiBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgcmVsZXZhbnQgcGFyZW50LCBvciBubyByZWxldmFudCBwYXJlbnRzCisJICogKGFuZCBtdWx0aXBsZSBpcnJlbGV2YW50IG9uZXMpLCB0aGVuIHdlIGNhbid0IHNlbGVjdCBhIHBhcmVudCBoZXJlCisJICogYW5kIHJldHVybiBOVUxMLgorCSAqLworCXdoaWxlIChsaXN0KSB7CisJCXN0cnVjdCBjb21taXQgKmNvbW1pdCA9IGxpc3QtPml0ZW07CisJCWxpc3QgPSBsaXN0LT5uZXh0OworCQlpZiAocmVsZXZhbnRfY29tbWl0KGNvbW1pdCkpIHsKKwkJCWlmIChyZWxldmFudCkKKwkJCQlyZXR1cm4gTlVMTDsKKwkJCXJlbGV2YW50ID0gY29tbWl0OworCQl9CisJfQorCXJldHVybiByZWxldmFudDsKK30KKworLyoKICAqIFRoZSBnb2FsIGlzIHRvIGdldCBSRVZfVFJFRV9ORVcgYXMgdGhlIHJlc3VsdCBvbmx5IGlmIHRoZQogICogZGlmZiBjb25zaXN0cyBvZiBhbGwgJysnIChhbmQgbm8gb3RoZXIgY2hhbmdlcyksIFJFVl9UUkVFX09MRAogICogaWYgdGhlIHdob2xlIGRpZmYgaXMgcmVtb3ZhbCBvZiBvbGQgZGF0YSwgYW5kIG90aGVyd2lzZQpAQCAtMzY4LDcgKzQ1Miw4IEBACiAJRElGRl9PUFRfU0VUKG9wdGlvbnMsIEhBU19DSEFOR0VTKTsKIH0KIAotc3RhdGljIGludCByZXZfY29tcGFyZV90cmVlKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqcGFyZW50LCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCitzdGF0aWMgaW50IHJldl9jb21wYXJlX3RyZWUoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJICAgIHN0cnVjdCBjb21taXQgKnBhcmVudCwgc3RydWN0IGNvbW1pdCAqY29tbWl0KQogewogCXN0cnVjdCB0cmVlICp0MSA9IHBhcmVudC0+dHJlZTsKIAlzdHJ1Y3QgdHJlZSAqdDIgPSBjb21taXQtPnRyZWU7CkBAIC00MjksMTAgKzUxNCwxMjUgQEAKIAlyZXR1cm4gcmV0dmFsID49IDAgJiYgKHRyZWVfZGlmZmVyZW5jZSA9PSBSRVZfVFJFRV9TQU1FKTsKIH0KIAorc3RydWN0IHRyZWVzYW1lX3N0YXRlIHsKKwl1bnNpZ25lZCBpbnQgbnBhcmVudHM7CisJdW5zaWduZWQgY2hhciB0cmVlc2FtZVtGTEVYX0FSUkFZXTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgdHJlZXNhbWVfc3RhdGUgKmluaXRpYWxpc2VfdHJlZXNhbWUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJdW5zaWduZWQgbiA9IGNvbW1pdF9saXN0X2NvdW50KGNvbW1pdC0+cGFyZW50cyk7CisJc3RydWN0IHRyZWVzYW1lX3N0YXRlICpzdCA9IHhjYWxsb2MoMSwgc2l6ZW9mKCpzdCkgKyBuKTsKKwlzdC0+bnBhcmVudHMgPSBuOworCWFkZF9kZWNvcmF0aW9uKCZyZXZzLT50cmVlc2FtZSwgJmNvbW1pdC0+b2JqZWN0LCBzdCk7CisJcmV0dXJuIHN0OworfQorCisvKgorICogTXVzdCBiZSBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgcmVtb3ZpbmcgdGhlIG50aF9wYXJlbnQgZnJvbSBhIGNvbW1pdCdzCisgKiBwYXJlbnQgbGlzdCwgaWYgd2UgYXJlIG1haW50YWluaW5nIHRoZSBwZXItcGFyZW50IHRyZWVzYW1lW10gZGVjb3JhdGlvbi4KKyAqIFRoaXMgZG9lcyBub3QgcmVjYWxjdWxhdGUgdGhlIG1hc3RlciBUUkVFU0FNRSBmbGFnIC0gdXBkYXRlX3RyZWVzYW1lKCkKKyAqIHNob3VsZCBiZSBjYWxsZWQgdG8gdXBkYXRlIGl0IGFmdGVyIGEgc2VxdWVuY2Ugb2YgdHJlZXNhbWVbXSBtb2RpZmljYXRpb25zCisgKiB0aGF0IG1heSBoYXZlIGFmZmVjdGVkIGl0LgorICovCitzdGF0aWMgaW50IGNvbXBhY3RfdHJlZXNhbWUoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQsIHVuc2lnbmVkIG50aF9wYXJlbnQpCit7CisJc3RydWN0IHRyZWVzYW1lX3N0YXRlICpzdDsKKwlpbnQgb2xkX3NhbWU7CisKKwlpZiAoIWNvbW1pdC0+cGFyZW50cykgeworCQkvKgorCQkgKiBIYXZlIGp1c3QgcmVtb3ZlZCB0aGUgb25seSBwYXJlbnQgZnJvbSBhIG5vbi1tZXJnZS4KKwkJICogRGlmZmVyZW50IGhhbmRsaW5nLCBhcyB3ZSBsYWNrIGRlY29yYXRpb24uCisJCSAqLworCQlpZiAobnRoX3BhcmVudCAhPSAwKQorCQkJZGllKCJjb21wYWN0X3RyZWVzYW1lICV1IiwgbnRoX3BhcmVudCk7CisJCW9sZF9zYW1lID0gISEoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSk7CisJCWlmIChyZXZfc2FtZV90cmVlX2FzX2VtcHR5KHJldnMsIGNvbW1pdCkpCisJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBUUkVFU0FNRTsKKwkJZWxzZQorCQkJY29tbWl0LT5vYmplY3QuZmxhZ3MgJj0gflRSRUVTQU1FOworCQlyZXR1cm4gb2xkX3NhbWU7CisJfQorCisJc3QgPSBsb29rdXBfZGVjb3JhdGlvbigmcmV2cy0+dHJlZXNhbWUsICZjb21taXQtPm9iamVjdCk7CisJaWYgKCFzdCB8fCBudGhfcGFyZW50ID49IHN0LT5ucGFyZW50cykKKwkJZGllKCJjb21wYWN0X3RyZWVzYW1lICV1IiwgbnRoX3BhcmVudCk7CisKKwlvbGRfc2FtZSA9IHN0LT50cmVlc2FtZVtudGhfcGFyZW50XTsKKwltZW1tb3ZlKHN0LT50cmVlc2FtZSArIG50aF9wYXJlbnQsCisJCXN0LT50cmVlc2FtZSArIG50aF9wYXJlbnQgKyAxLAorCQlzdC0+bnBhcmVudHMgLSBudGhfcGFyZW50IC0gMSk7CisKKwkvKgorCSAqIElmIHdlJ3ZlIGp1c3QgYmVjb21lIGEgbm9uLW1lcmdlIGNvbW1pdCwgdXBkYXRlIFRSRUVTQU1FCisJICogaW1tZWRpYXRlbHksIGFuZCByZW1vdmUgdGhlIG5vLWxvbmdlci1uZWVkZWQgZGVjb3JhdGlvbi4KKwkgKiBJZiBzdGlsbCBhIG1lcmdlLCBkZWZlciB1cGRhdGUgdW50aWwgdXBkYXRlX3RyZWVzYW1lKCkuCisJICovCisJaWYgKC0tc3QtPm5wYXJlbnRzID09IDEpIHsKKwkJaWYgKGNvbW1pdC0+cGFyZW50cy0+bmV4dCkKKwkJCWRpZSgiY29tcGFjdF90cmVlc2FtZSBwYXJlbnRzIG1pc21hdGNoIik7CisJCWlmIChzdC0+dHJlZXNhbWVbMF0gJiYgcmV2cy0+ZGVuc2UpCisJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBUUkVFU0FNRTsKKwkJZWxzZQorCQkJY29tbWl0LT5vYmplY3QuZmxhZ3MgJj0gflRSRUVTQU1FOworCQlmcmVlKGFkZF9kZWNvcmF0aW9uKCZyZXZzLT50cmVlc2FtZSwgJmNvbW1pdC0+b2JqZWN0LCBOVUxMKSk7CisJfQorCisJcmV0dXJuIG9sZF9zYW1lOworfQorCitzdGF0aWMgdW5zaWduZWQgdXBkYXRlX3RyZWVzYW1lKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCWlmIChjb21taXQtPnBhcmVudHMgJiYgY29tbWl0LT5wYXJlbnRzLT5uZXh0KSB7CisJCXVuc2lnbmVkIG47CisJCXN0cnVjdCB0cmVlc2FtZV9zdGF0ZSAqc3Q7CisJCXN0cnVjdCBjb21taXRfbGlzdCAqcDsKKwkJdW5zaWduZWQgcmVsZXZhbnRfcGFyZW50czsKKwkJdW5zaWduZWQgcmVsZXZhbnRfY2hhbmdlLCBpcnJlbGV2YW50X2NoYW5nZTsKKworCQlzdCA9IGxvb2t1cF9kZWNvcmF0aW9uKCZyZXZzLT50cmVlc2FtZSwgJmNvbW1pdC0+b2JqZWN0KTsKKwkJaWYgKCFzdCkKKwkJCWRpZSgidXBkYXRlX3RyZWVzYW1lICVzIiwgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOworCQlyZWxldmFudF9wYXJlbnRzID0gMDsKKwkJcmVsZXZhbnRfY2hhbmdlID0gaXJyZWxldmFudF9jaGFuZ2UgPSAwOworCQlmb3IgKHAgPSBjb21taXQtPnBhcmVudHMsIG4gPSAwOyBwOyBuKyssIHAgPSBwLT5uZXh0KSB7CisJCQlpZiAocmVsZXZhbnRfY29tbWl0KHAtPml0ZW0pKSB7CisJCQkJcmVsZXZhbnRfY2hhbmdlIHw9ICFzdC0+dHJlZXNhbWVbbl07CisJCQkJcmVsZXZhbnRfcGFyZW50cysrOworCQkJfSBlbHNlCisJCQkJaXJyZWxldmFudF9jaGFuZ2UgfD0gIXN0LT50cmVlc2FtZVtuXTsKKwkJfQorCQlpZiAocmVsZXZhbnRfcGFyZW50cyA/IHJlbGV2YW50X2NoYW5nZSA6IGlycmVsZXZhbnRfY2hhbmdlKQorCQkJY29tbWl0LT5vYmplY3QuZmxhZ3MgJj0gflRSRUVTQU1FOworCQllbHNlCisJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBUUkVFU0FNRTsKKwl9CisKKwlyZXR1cm4gY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRTsKK30KKworc3RhdGljIGlubGluZSBpbnQgbGltaXRpbmdfY2FuX2luY3JlYXNlX3RyZWVzYW1lKGNvbnN0IHN0cnVjdCByZXZfaW5mbyAqcmV2cykKK3sKKwkvKgorCSAqIFRSRUVTQU1FIGlzIGlycmVsZXZhbnQgdW5sZXNzIHBydW5lICYmIGRlbnNlOworCSAqIGlmIHNpbXBsaWZ5X2hpc3RvcnkgaXMgc2V0LCB3ZSBjYW4ndCBoYXZlIGEgbWl4dHVyZSBvZiBUUkVFU0FNRSBhbmQKKwkgKiAgICAhVFJFRVNBTUUgSU5URVJFU1RJTkcgcGFyZW50cyAoYW5kIHdlIGRvbid0IGhhdmUgdHJlZXNhbWVbXQorCSAqICAgIGRlY29yYXRpb24gYW55d2F5KTsKKwkgKiBpZiBmaXJzdF9wYXJlbnRfb25seSBpcyBzZXQsIHRoZW4gdGhlIFRSRUVTQU1FIGZsYWcgaXMgbG9ja2VkCisJICogICAgYWdhaW5zdCB0aGUgZmlyc3QgcGFyZW50IChhbmQgYWdhaW4gd2UgbGFjayB0cmVlc2FtZVtdIGRlY29yYXRpb24pLgorCSAqLworCXJldHVybiByZXZzLT5wcnVuZSAmJiByZXZzLT5kZW5zZSAmJgorCSAgICAgICAhcmV2cy0+c2ltcGxpZnlfaGlzdG9yeSAmJgorCSAgICAgICAhcmV2cy0+Zmlyc3RfcGFyZW50X29ubHk7Cit9CisKIHN0YXRpYyB2b2lkIHRyeV90b19zaW1wbGlmeV9jb21taXQoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICoqcHAsICpwYXJlbnQ7Ci0JaW50IHRyZWVfY2hhbmdlZCA9IDAsIHRyZWVfc2FtZSA9IDAsIG50aF9wYXJlbnQgPSAwOworCXN0cnVjdCB0cmVlc2FtZV9zdGF0ZSAqdHMgPSBOVUxMOworCWludCByZWxldmFudF9jaGFuZ2UgPSAwLCBpcnJlbGV2YW50X2NoYW5nZSA9IDA7CisJaW50IHJlbGV2YW50X3BhcmVudHMsIG50aF9wYXJlbnQ7CiAKIAkvKgogCSAqIElmIHdlIGRvbid0IGRvIHBydW5pbmcsIGV2ZXJ5dGhpbmcgaXMgaW50ZXJlc3RpbmcKQEAgLTQ1NiwzMyArNjU2LDU0IEBACiAJaWYgKCFyZXZzLT5kZW5zZSAmJiAhY29tbWl0LT5wYXJlbnRzLT5uZXh0KQogCQlyZXR1cm47CiAKLQlwcCA9ICZjb21taXQtPnBhcmVudHM7Ci0Jd2hpbGUgKChwYXJlbnQgPSAqcHApICE9IE5VTEwpIHsKKwlmb3IgKHBwID0gJmNvbW1pdC0+cGFyZW50cywgbnRoX3BhcmVudCA9IDAsIHJlbGV2YW50X3BhcmVudHMgPSAwOworCSAgICAgKHBhcmVudCA9ICpwcCkgIT0gTlVMTDsKKwkgICAgIHBwID0gJnBhcmVudC0+bmV4dCwgbnRoX3BhcmVudCsrKSB7CiAJCXN0cnVjdCBjb21taXQgKnAgPSBwYXJlbnQtPml0ZW07CisJCWlmIChyZWxldmFudF9jb21taXQocCkpCisJCQlyZWxldmFudF9wYXJlbnRzKys7CiAKLQkJLyoKLQkJICogRG8gbm90IGNvbXBhcmUgd2l0aCBsYXRlciBwYXJlbnRzIHdoZW4gd2UgY2FyZSBvbmx5IGFib3V0Ci0JCSAqIHRoZSBmaXJzdCBwYXJlbnQgY2hhaW4sIGluIG9yZGVyIHRvIGF2b2lkIGRlcmFpbGluZyB0aGUKLQkJICogdHJhdmVyc2FsIHRvIGZvbGxvdyBhIHNpZGUgYnJhbmNoIHRoYXQgYnJvdWdodCBldmVyeXRoaW5nCi0JCSAqIGluIHRoZSBwYXRoIHdlIGFyZSBsaW1pdGVkIHRvIGJ5IHRoZSBwYXRoc3BlYy4KLQkJICovCi0JCWlmIChyZXZzLT5maXJzdF9wYXJlbnRfb25seSAmJiBudGhfcGFyZW50KyspCi0JCQlicmVhazsKKwkJaWYgKG50aF9wYXJlbnQgPT0gMSkgeworCQkJLyoKKwkJCSAqIFRoaXMgb3VyIHNlY29uZCBsb29wIGl0ZXJhdGlvbiAtIHNvIHdlIG5vdyBrbm93CisJCQkgKiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBtZXJnZS4KKwkJCSAqCisJCQkgKiBEbyBub3QgY29tcGFyZSB3aXRoIGxhdGVyIHBhcmVudHMgd2hlbiB3ZSBjYXJlIG9ubHkgYWJvdXQKKwkJCSAqIHRoZSBmaXJzdCBwYXJlbnQgY2hhaW4sIGluIG9yZGVyIHRvIGF2b2lkIGRlcmFpbGluZyB0aGUKKwkJCSAqIHRyYXZlcnNhbCB0byBmb2xsb3cgYSBzaWRlIGJyYW5jaCB0aGF0IGJyb3VnaHQgZXZlcnl0aGluZworCQkJICogaW4gdGhlIHBhdGggd2UgYXJlIGxpbWl0ZWQgdG8gYnkgdGhlIHBhdGhzcGVjLgorCQkJICovCisJCQlpZiAocmV2cy0+Zmlyc3RfcGFyZW50X29ubHkpCisJCQkJYnJlYWs7CisJCQkvKgorCQkJICogSWYgdGhpcyB3aWxsIHJlbWFpbiBhIHBvdGVudGlhbGx5LXNpbXBsaWZpYWJsZQorCQkJICogbWVyZ2UsIHJlbWVtYmVyIHBlci1wYXJlbnQgdHJlZXNhbWUgaWYgbmVlZGVkLgorCQkJICogSW5pdGlhbGlzZSB0aGUgYXJyYXkgd2l0aCB0aGUgY29tcGFyaXNvbiBmcm9tIG91cgorCQkJICogZmlyc3QgaXRlcmF0aW9uLgorCQkJICovCisJCQlpZiAocmV2cy0+dHJlZXNhbWUubmFtZSAmJgorCQkJICAgICFyZXZzLT5zaW1wbGlmeV9oaXN0b3J5ICYmCisJCQkgICAgIShjb21taXQtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpKSB7CisJCQkJdHMgPSBpbml0aWFsaXNlX3RyZWVzYW1lKHJldnMsIGNvbW1pdCk7CisJCQkJaWYgKCEoaXJyZWxldmFudF9jaGFuZ2UgfHwgcmVsZXZhbnRfY2hhbmdlKSkKKwkJCQkJdHMtPnRyZWVzYW1lWzBdID0gMTsKKwkJCX0KKwkJfQogCQlpZiAocGFyc2VfY29tbWl0KHApIDwgMCkKIAkJCWRpZSgiY2Fubm90IHNpbXBsaWZ5IGNvbW1pdCAlcyAoYmVjYXVzZSBvZiAlcykiLAogCQkJICAgIHNoYTFfdG9faGV4KGNvbW1pdC0+b2JqZWN0LnNoYTEpLAogCQkJICAgIHNoYTFfdG9faGV4KHAtPm9iamVjdC5zaGExKSk7CiAJCXN3aXRjaCAocmV2X2NvbXBhcmVfdHJlZShyZXZzLCBwLCBjb21taXQpKSB7CiAJCWNhc2UgUkVWX1RSRUVfU0FNRToKLQkJCXRyZWVfc2FtZSA9IDE7Ci0JCQlpZiAoIXJldnMtPnNpbXBsaWZ5X2hpc3RvcnkgfHwgKHAtPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpKSB7CisJCQlpZiAoIXJldnMtPnNpbXBsaWZ5X2hpc3RvcnkgfHwgIXJlbGV2YW50X2NvbW1pdChwKSkgewogCQkJCS8qIEV2ZW4gaWYgYSBtZXJnZSB3aXRoIGFuIHVuaW50ZXJlc3RpbmcKIAkJCQkgKiBzaWRlIGJyYW5jaCBicm91Z2h0IHRoZSBlbnRpcmUgY2hhbmdlCiAJCQkJICogd2UgYXJlIGludGVyZXN0ZWQgaW4sIHdlIGRvIG5vdCB3YW50CiAJCQkJICogdG8gbG9zZSB0aGUgb3RoZXIgYnJhbmNoZXMgb2YgdGhpcwogCQkJCSAqIG1lcmdlLCBzbyB3ZSBqdXN0IGtlZXAgZ29pbmcuCiAJCQkJICovCi0JCQkJcHAgPSAmcGFyZW50LT5uZXh0OworCQkJCWlmICh0cykKKwkJCQkJdHMtPnRyZWVzYW1lW250aF9wYXJlbnRdID0gMTsKIAkJCQljb250aW51ZTsKIAkJCX0KIAkJCXBhcmVudC0+bmV4dCA9IE5VTEw7CkBAIC01MTAsMTUgKzczMSwyNyBAQAogCQkvKiBmYWxsdGhyb3VnaCAqLwogCQljYXNlIFJFVl9UUkVFX09MRDoKIAkJY2FzZSBSRVZfVFJFRV9ESUZGRVJFTlQ6Ci0JCQl0cmVlX2NoYW5nZWQgPSAxOwotCQkJcHAgPSAmcGFyZW50LT5uZXh0OworCQkJaWYgKHJlbGV2YW50X2NvbW1pdChwKSkKKwkJCQlyZWxldmFudF9jaGFuZ2UgPSAxOworCQkJZWxzZQorCQkJCWlycmVsZXZhbnRfY2hhbmdlID0gMTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJCWRpZSgiYmFkIHRyZWUgY29tcGFyZSBmb3IgY29tbWl0ICVzIiwgc2hhMV90b19oZXgoY29tbWl0LT5vYmplY3Quc2hhMSkpOwogCX0KLQlpZiAodHJlZV9jaGFuZ2VkICYmICF0cmVlX3NhbWUpCi0JCXJldHVybjsKLQljb21taXQtPm9iamVjdC5mbGFncyB8PSBUUkVFU0FNRTsKKworCS8qCisJICogVFJFRVNBTUUgaXMgc3RyYWlnaHRmb3J3YXJkIGZvciBzaW5nbGUtcGFyZW50IGNvbW1pdHMuIEZvciBtZXJnZQorCSAqIGNvbW1pdHMsIGl0IGlzIG1vc3QgdXNlZnVsIHRvIGRlZmluZSBpdCBzbyB0aGF0ICJpcnJlbGV2YW50IgorCSAqIHBhcmVudHMgY2Fubm90IG1ha2UgdXMgIVRSRUVTQU1FIC0gaWYgd2UgaGF2ZSBhbnkgcmVsZXZhbnQKKwkgKiBwYXJlbnRzLCB0aGVuIHdlIG9ubHkgY29uc2lkZXIgVFJFRVNBTUVuZXNzIHdpdGggcmVzcGVjdCB0byB0aGVtLAorCSAqIGFsbG93aW5nIGlycmVsZXZhbnQgbWVyZ2VzIGZyb20gdW5pbnRlcmVzdGluZyBicmFuY2hlcyB0byBiZQorCSAqIHNpbXBsaWZpZWQgYXdheS4gT25seSBpZiB3ZSBoYXZlIG9ubHkgaXJyZWxldmFudCBwYXJlbnRzIGRvIHdlCisJICogYmFzZSBUUkVFU0FNRSBvbiB0aGVtLiBOb3RlIHRoYXQgdGhpcyBsb2dpYyBpcyByZXBsaWNhdGVkIGluCisJICogdXBkYXRlX3RyZWVzYW1lLCB3aGljaCBzaG91bGQgYmUga2VwdCBpbiBzeW5jLgorCSAqLworCWlmIChyZWxldmFudF9wYXJlbnRzID8gIXJlbGV2YW50X2NoYW5nZSA6ICFpcnJlbGV2YW50X2NoYW5nZSkKKwkJY29tbWl0LT5vYmplY3QuZmxhZ3MgfD0gVFJFRVNBTUU7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbW1pdF9saXN0X2luc2VydF9ieV9kYXRlX2NhY2hlZChzdHJ1Y3QgY29tbWl0ICpwLCBzdHJ1Y3QgY29tbWl0X2xpc3QgKipoZWFkLApAQCAtODAxLDE2ICsxMDM0LDEyIEBACiAgKiB0byBmaWx0ZXIgdGhlIHJlc3VsdCBvZiAiQS4uQiIgZnVydGhlciB0byB0aGUgb25lcyB0aGF0IGNhbiBhY3R1YWxseQogICogcmVhY2ggQS4KICAqLwotc3RhdGljIHN0cnVjdCBjb21taXRfbGlzdCAqY29sbGVjdF9ib3R0b21fY29tbWl0cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMpCitzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICpjb2xsZWN0X2JvdHRvbV9jb21taXRzKHN0cnVjdCBjb21taXRfbGlzdCAqbGlzdCkKIHsKLQlzdHJ1Y3QgY29tbWl0X2xpc3QgKmJvdHRvbSA9IE5VTEw7Ci0JaW50IGk7Ci0JZm9yIChpID0gMDsgaSA8IHJldnMtPmNtZGxpbmUubnI7IGkrKykgewotCQlzdHJ1Y3QgcmV2X2NtZGxpbmVfZW50cnkgKmVsZW0gPSAmcmV2cy0+Y21kbGluZS5yZXZbaV07Ci0JCWlmICgoZWxlbS0+ZmxhZ3MgJiBVTklOVEVSRVNUSU5HKSAmJgotCQkgICAgZWxlbS0+aXRlbS0+dHlwZSA9PSBPQkpfQ09NTUlUKQotCQkJY29tbWl0X2xpc3RfaW5zZXJ0KChzdHJ1Y3QgY29tbWl0ICopZWxlbS0+aXRlbSwgJmJvdHRvbSk7Ci0JfQorCXN0cnVjdCBjb21taXRfbGlzdCAqZWxlbSwgKmJvdHRvbSA9IE5VTEw7CisJZm9yIChlbGVtID0gbGlzdDsgZWxlbTsgZWxlbSA9IGVsZW0tPm5leHQpCisJCWlmIChlbGVtLT5pdGVtLT5vYmplY3QuZmxhZ3MgJiBCT1RUT00pCisJCQljb21taXRfbGlzdF9pbnNlcnQoZWxlbS0+aXRlbSwgJmJvdHRvbSk7CiAJcmV0dXJuIGJvdHRvbTsKIH0KIApAQCAtODQxLDcgKzEwNzAsNyBAQAogCXN0cnVjdCBjb21taXRfbGlzdCAqYm90dG9tID0gTlVMTDsKIAogCWlmIChyZXZzLT5hbmNlc3RyeV9wYXRoKSB7Ci0JCWJvdHRvbSA9IGNvbGxlY3RfYm90dG9tX2NvbW1pdHMocmV2cyk7CisJCWJvdHRvbSA9IGNvbGxlY3RfYm90dG9tX2NvbW1pdHMobGlzdCk7CiAJCWlmICghYm90dG9tKQogCQkJZGllKCItLWFuY2VzdHJ5LXBhdGggZ2l2ZW4gYnV0IHRoZXJlIGFyZSBubyBib3R0b20gY29tbWl0cyIpOwogCX0KQEAgLTg5NCwxMCArMTEyMywyNiBAQAogCQlmcmVlX2NvbW1pdF9saXN0KGJvdHRvbSk7CiAJfQogCisJLyoKKwkgKiBDaGVjayBpZiBhbnkgY29tbWl0cyBoYXZlIGJlY29tZSBUUkVFU0FNRSBieSBzb21lIG9mIHRoZWlyIHBhcmVudHMKKwkgKiBiZWNvbWluZyBVTklOVEVSRVNUSU5HLgorCSAqLworCWlmIChsaW1pdGluZ19jYW5faW5jcmVhc2VfdHJlZXNhbWUocmV2cykpCisJCWZvciAobGlzdCA9IG5ld2xpc3Q7IGxpc3Q7IGxpc3QgPSBsaXN0LT5uZXh0KSB7CisJCQlzdHJ1Y3QgY29tbWl0ICpjID0gbGlzdC0+aXRlbTsKKwkJCWlmIChjLT5vYmplY3QuZmxhZ3MgJiAoVU5JTlRFUkVTVElORyB8IFRSRUVTQU1FKSkKKwkJCQljb250aW51ZTsKKwkJCXVwZGF0ZV90cmVlc2FtZShyZXZzLCBjKTsKKwkJfQorCiAJcmV2cy0+Y29tbWl0cyA9IG5ld2xpc3Q7CiAJcmV0dXJuIDA7CiB9CiAKKy8qCisgKiBBZGQgYW4gZW50cnkgdG8gcmVmcy0+Y21kbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgaW5mb3JtYXRpb24uCisgKiAqbmFtZSBpcyBjb3BpZWQuCisgKi8KIHN0YXRpYyB2b2lkIGFkZF9yZXZfY21kbGluZShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCiAJCQkgICAgc3RydWN0IG9iamVjdCAqaXRlbSwKIAkJCSAgICBjb25zdCBjaGFyICpuYW1lLApAQCAtOTA5LDcgKzExNTQsNyBAQAogCiAJQUxMT0NfR1JPVyhpbmZvLT5yZXYsIG5yICsgMSwgaW5mby0+YWxsb2MpOwogCWluZm8tPnJldltucl0uaXRlbSA9IGl0ZW07Ci0JaW5mby0+cmV2W25yXS5uYW1lID0gbmFtZTsKKwlpbmZvLT5yZXZbbnJdLm5hbWUgPSB4c3RyZHVwKG5hbWUpOwogCWluZm8tPnJldltucl0ud2hlbmNlID0gd2hlbmNlOwogCWluZm8tPnJldltucl0uZmxhZ3MgPSBmbGFnczsKIAlpbmZvLT5ucisrOwpAQCAtMTAxMyw3ICsxMjU4LDcgQEAKIAljb25zdCBjaGFyICphcmcgPSBhcmdfOwogCiAJaWYgKCphcmcgPT0gJ14nKSB7Ci0JCWZsYWdzIF49IFVOSU5URVJFU1RJTkc7CisJCWZsYWdzIF49IFVOSU5URVJFU1RJTkcgfCBCT1RUT007CiAJCWFyZysrOwogCX0KIAlpZiAoZ2V0X3NoYTFfY29tbWl0dGlzaChhcmcsIHNoYTEpKQpAQCAtMTA1MSw3ICsxMjk2LDcgQEAKIAlESUZGX09QVF9TRVQoJnJldnMtPnBydW5pbmcsIFFVSUNLKTsKIAlyZXZzLT5wcnVuaW5nLmFkZF9yZW1vdmUgPSBmaWxlX2FkZF9yZW1vdmU7CiAJcmV2cy0+cHJ1bmluZy5jaGFuZ2UgPSBmaWxlX2NoYW5nZTsKLQlyZXZzLT5saWZvID0gMTsKKwlyZXZzLT5zb3J0X29yZGVyID0gUkVWX1NPUlRfSU5fR1JBUEhfT1JERVI7CiAJcmV2cy0+ZGVuc2UgPSAxOwogCXJldnMtPnByZWZpeCA9IHByZWZpeDsKIAlyZXZzLT5tYXhfYWdlID0gLTE7CkBAIC0xMTA1LDE1ICsxMzUwLDE1IEBACiAJYWRkX3BlbmRpbmdfb2JqZWN0KHJldnMsICZoZWFkLT5vYmplY3QsICJIRUFEIik7CiAJYWRkX3BlbmRpbmdfb2JqZWN0KHJldnMsICZvdGhlci0+b2JqZWN0LCAiTUVSR0VfSEVBRCIpOwogCWJhc2VzID0gZ2V0X21lcmdlX2Jhc2VzKGhlYWQsIG90aGVyLCAxKTsKLQlhZGRfcmV2X2NtZGxpbmVfbGlzdChyZXZzLCBiYXNlcywgUkVWX0NNRF9NRVJHRV9CQVNFLCBVTklOVEVSRVNUSU5HKTsKLQlhZGRfcGVuZGluZ19jb21taXRfbGlzdChyZXZzLCBiYXNlcywgVU5JTlRFUkVTVElORyk7CisJYWRkX3Jldl9jbWRsaW5lX2xpc3QocmV2cywgYmFzZXMsIFJFVl9DTURfTUVSR0VfQkFTRSwgVU5JTlRFUkVTVElORyB8IEJPVFRPTSk7CisJYWRkX3BlbmRpbmdfY29tbWl0X2xpc3QocmV2cywgYmFzZXMsIFVOSU5URVJFU1RJTkcgfCBCT1RUT00pOwogCWZyZWVfY29tbWl0X2xpc3QoYmFzZXMpOwogCWhlYWQtPm9iamVjdC5mbGFncyB8PSBTWU1NRVRSSUNfTEVGVDsKIAogCWlmICghYWN0aXZlX25yKQogCQlyZWFkX2NhY2hlKCk7CiAJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7Ci0JCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CisJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBhY3RpdmVfY2FjaGVbaV07CiAJCWlmICghY2Vfc3RhZ2UoY2UpKQogCQkJY29udGludWU7CiAJCWlmIChjZV9wYXRoX21hdGNoKGNlLCAmcmV2cy0+cHJ1bmVfZGF0YSkpIHsKQEAgLTExNDIsMTMgKzEzODcsMTUgQEAKIAlpbnQgY2FudF9iZV9maWxlbmFtZSA9IHJldmFyZ19vcHQgJiBSRVZBUkdfQ0FOTk9UX0JFX0ZJTEVOQU1FOwogCXVuc2lnbmVkIGdldF9zaGExX2ZsYWdzID0gMDsKIAorCWZsYWdzID0gZmxhZ3MgJiBVTklOVEVSRVNUSU5HID8gZmxhZ3MgfCBCT1RUT00gOiBmbGFncyAmIH5CT1RUT007CisKIAlkb3Rkb3QgPSBzdHJzdHIoYXJnLCAiLi4iKTsKIAlpZiAoZG90ZG90KSB7CiAJCXVuc2lnbmVkIGNoYXIgZnJvbV9zaGExWzIwXTsKIAkJY29uc3QgY2hhciAqbmV4dCA9IGRvdGRvdCArIDI7CiAJCWNvbnN0IGNoYXIgKnRoaXMgPSBhcmc7CiAJCWludCBzeW1tZXRyaWMgPSAqbmV4dCA9PSAnLic7Ci0JCXVuc2lnbmVkIGludCBmbGFnc19leGNsdWRlID0gZmxhZ3MgXiBVTklOVEVSRVNUSU5HOworCQl1bnNpZ25lZCBpbnQgZmxhZ3NfZXhjbHVkZSA9IGZsYWdzIF4gKFVOSU5URVJFU1RJTkcgfCBCT1RUT00pOwogCQlzdGF0aWMgY29uc3QgY2hhciBoZWFkX2J5X2RlZmF1bHRbXSA9ICJIRUFEIjsKIAkJdW5zaWduZWQgaW50IGFfZmxhZ3M7CiAKQEAgLTEyMjQsMTMgKzE0NzEsMTMgQEAKIAlkb3Rkb3QgPSBzdHJzdHIoYXJnLCAiXiEiKTsKIAlpZiAoZG90ZG90ICYmICFkb3Rkb3RbMl0pIHsKIAkJKmRvdGRvdCA9IDA7Ci0JCWlmICghYWRkX3BhcmVudHNfb25seShyZXZzLCBhcmcsIGZsYWdzIF4gVU5JTlRFUkVTVElORykpCisJCWlmICghYWRkX3BhcmVudHNfb25seShyZXZzLCBhcmcsIGZsYWdzIF4gKFVOSU5URVJFU1RJTkcgfCBCT1RUT00pKSkKIAkJCSpkb3Rkb3QgPSAnXic7CiAJfQogCiAJbG9jYWxfZmxhZ3MgPSAwOwogCWlmICgqYXJnID09ICdeJykgewotCQlsb2NhbF9mbGFncyA9IFVOSU5URVJFU1RJTkc7CisJCWxvY2FsX2ZsYWdzID0gVU5JTlRFUkVTVElORyB8IEJPVFRPTTsKIAkJYXJnKys7CiAJfQogCkBAIC0xMjkzLDcgKzE1NDAsNyBAQAogCQkJfQogCQkJZGllKCJvcHRpb25zIG5vdCBzdXBwb3J0ZWQgaW4gLS1zdGRpbiBtb2RlIik7CiAJCX0KLQkJaWYgKGhhbmRsZV9yZXZpc2lvbl9hcmcoeHN0cmR1cChzYi5idWYpLCByZXZzLCAwLAorCQlpZiAoaGFuZGxlX3JldmlzaW9uX2FyZyhzYi5idWYsIHJldnMsIDAsCiAJCQkJCVJFVkFSR19DQU5OT1RfQkVfRklMRU5BTUUpKQogCQkJZGllKCJiYWQgcmV2aXNpb24gJyVzJyIsIHNiLmJ1Zik7CiAJfQpAQCAtMTM5MSw3ICsxNjM4LDcgQEAKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1tZXJnZSIpKSB7CiAJCXJldnMtPnNob3dfbWVyZ2UgPSAxOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXRvcG8tb3JkZXIiKSkgewotCQlyZXZzLT5saWZvID0gMTsKKwkJcmV2cy0+c29ydF9vcmRlciA9IFJFVl9TT1JUX0lOX0dSQVBIX09SREVSOwogCQlyZXZzLT50b3BvX29yZGVyID0gMTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1zaW1wbGlmeS1tZXJnZXMiKSkgewogCQlyZXZzLT5zaW1wbGlmeV9tZXJnZXMgPSAxOwpAQCAtMTQwOSw3ICsxNjU2LDEwIEBACiAJCXJldnMtPnBydW5lID0gMTsKIAkJbG9hZF9yZWZfZGVjb3JhdGlvbnMoREVDT1JBVEVfU0hPUlRfUkVGUyk7CiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tZGF0ZS1vcmRlciIpKSB7Ci0JCXJldnMtPmxpZm8gPSAwOworCQlyZXZzLT5zb3J0X29yZGVyID0gUkVWX1NPUlRfQllfQ09NTUlUX0RBVEU7CisJCXJldnMtPnRvcG9fb3JkZXIgPSAxOworCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWF1dGhvci1kYXRlLW9yZGVyIikpIHsKKwkJcmV2cy0+c29ydF9vcmRlciA9IFJFVl9TT1JUX0JZX0FVVEhPUl9EQVRFOwogCQlyZXZzLT50b3BvX29yZGVyID0gMTsKIAl9IGVsc2UgaWYgKCFwcmVmaXhjbXAoYXJnLCAiLS1lYXJseS1vdXRwdXQiKSkgewogCQlpbnQgY291bnQgPSAxMDA7CkBAIC0xNzA3LDcgKzE5NTcsNyBAQAogCQloYW5kbGVfcmVmcyhzdWJtb2R1bGUsIHJldnMsICpmbGFncywgZm9yX2VhY2hfYnJhbmNoX3JlZl9zdWJtb2R1bGUpOwogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLWJpc2VjdCIpKSB7CiAJCWhhbmRsZV9yZWZzKHN1Ym1vZHVsZSwgcmV2cywgKmZsYWdzLCBmb3JfZWFjaF9iYWRfYmlzZWN0X3JlZik7Ci0JCWhhbmRsZV9yZWZzKHN1Ym1vZHVsZSwgcmV2cywgKmZsYWdzIF4gVU5JTlRFUkVTVElORywgZm9yX2VhY2hfZ29vZF9iaXNlY3RfcmVmKTsKKwkJaGFuZGxlX3JlZnMoc3VibW9kdWxlLCByZXZzLCAqZmxhZ3MgXiAoVU5JTlRFUkVTVElORyB8IEJPVFRPTSksIGZvcl9lYWNoX2dvb2RfYmlzZWN0X3JlZik7CiAJCXJldnMtPmJpc2VjdCA9IDE7CiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tdGFncyIpKSB7CiAJCWhhbmRsZV9yZWZzKHN1Ym1vZHVsZSwgcmV2cywgKmZsYWdzLCBmb3JfZWFjaF90YWdfcmVmX3N1Ym1vZHVsZSk7CkBAIC0xNzMzLDcgKzE5ODMsNyBAQAogCX0gZWxzZSBpZiAoIXN0cmNtcChhcmcsICItLXJlZmxvZyIpKSB7CiAJCWhhbmRsZV9yZWZsb2cocmV2cywgKmZsYWdzKTsKIAl9IGVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiLS1ub3QiKSkgewotCQkqZmxhZ3MgXj0gVU5JTlRFUkVTVElORzsKKwkJKmZsYWdzIF49IFVOSU5URVJFU1RJTkcgfCBCT1RUT007CiAJfSBlbHNlIGlmICghc3RyY21wKGFyZywgIi0tbm8td2FsayIpKSB7CiAJCXJldnMtPm5vX3dhbGsgPSBSRVZJU0lPTl9XQUxLX05PX1dBTEtfU09SVEVEOwogCX0gZWxzZSBpZiAoIXByZWZpeGNtcChhcmcsICItLW5vLXdhbGs9IikpIHsKQEAgLTE5MTQsNiArMjE2NCwxMiBAQAogCWlmIChyZXZzLT5jb21iaW5lX21lcmdlcykKIAkJcmV2cy0+aWdub3JlX21lcmdlcyA9IDA7CiAJcmV2cy0+ZGlmZm9wdC5hYmJyZXYgPSByZXZzLT5hYmJyZXY7CisKKwlpZiAocmV2cy0+bGluZV9sZXZlbF90cmF2ZXJzZSkgeworCQlyZXZzLT5saW1pdGVkID0gMTsKKwkJcmV2cy0+dG9wb19vcmRlciA9IDE7CisJfQorCiAJZGlmZl9zZXR1cF9kb25lKCZyZXZzLT5kaWZmb3B0KTsKIAogCWdyZXBfY29tbWl0X3BhdHRlcm5fdHlwZShHUkVQX1BBVFRFUk5fVFlQRV9VTlNQRUNJRklFRCwKQEAgLTE5NDcsMjggKzIyMDMsMzIgQEAKIAlsLT5uZXh0ID0gYWRkX2RlY29yYXRpb24oJnJldnMtPmNoaWxkcmVuLCAmcGFyZW50LT5vYmplY3QsIGwpOwogfQogCi1zdGF0aWMgaW50IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhzdHJ1Y3QgY29tbWl0ICpjb21taXQpCitzdGF0aWMgaW50IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKIHsKKwlzdHJ1Y3QgdHJlZXNhbWVfc3RhdGUgKnRzID0gbG9va3VwX2RlY29yYXRpb24oJnJldnMtPnRyZWVzYW1lLCAmY29tbWl0LT5vYmplY3QpOwogCXN0cnVjdCBjb21taXRfbGlzdCAqKnBwLCAqcDsKIAlpbnQgc3Vydml2aW5nX3BhcmVudHM7CiAKIAkvKiBFeGFtaW5lIGV4aXN0aW5nIHBhcmVudHMgd2hpbGUgbWFya2luZyBvbmVzIHdlIGhhdmUgc2Vlbi4uLiAqLwogCXBwID0gJmNvbW1pdC0+cGFyZW50czsKKwlzdXJ2aXZpbmdfcGFyZW50cyA9IDA7CiAJd2hpbGUgKChwID0gKnBwKSAhPSBOVUxMKSB7CiAJCXN0cnVjdCBjb21taXQgKnBhcmVudCA9IHAtPml0ZW07CiAJCWlmIChwYXJlbnQtPm9iamVjdC5mbGFncyAmIFRNUF9NQVJLKSB7CiAJCQkqcHAgPSBwLT5uZXh0OworCQkJaWYgKHRzKQorCQkJCWNvbXBhY3RfdHJlZXNhbWUocmV2cywgY29tbWl0LCBzdXJ2aXZpbmdfcGFyZW50cyk7CiAJCQljb250aW51ZTsKIAkJfQogCQlwYXJlbnQtPm9iamVjdC5mbGFncyB8PSBUTVBfTUFSSzsKKwkJc3Vydml2aW5nX3BhcmVudHMrKzsKIAkJcHAgPSAmcC0+bmV4dDsKIAl9Ci0JLyogY291bnQgdGhlbSB3aGlsZSBjbGVhcmluZyB0aGUgdGVtcG9yYXJ5IG1hcmsgKi8KLQlzdXJ2aXZpbmdfcGFyZW50cyA9IDA7CisJLyogY2xlYXIgdGhlIHRlbXBvcmFyeSBtYXJrICovCiAJZm9yIChwID0gY29tbWl0LT5wYXJlbnRzOyBwOyBwID0gcC0+bmV4dCkgewogCQlwLT5pdGVtLT5vYmplY3QuZmxhZ3MgJj0gflRNUF9NQVJLOwotCQlzdXJ2aXZpbmdfcGFyZW50cysrOwogCX0KKwkvKiBubyB1cGRhdGVfdHJlZXNhbWUoKSAtIHJlbW92aW5nIGR1cGxpY2F0ZXMgY2FuJ3QgYWZmZWN0IFRSRUVTQU1FICovCiAJcmV0dXJuIHN1cnZpdmluZ19wYXJlbnRzOwogfQogCkBAIC0xOTg4LDkgKzIyNDgsMTU3IEBACiAJcmV0dXJuIHN0OwogfQogCitzdGF0aWMgaW50IG1hcmtfcmVkdW5kYW50X3BhcmVudHMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCit7CisJc3RydWN0IGNvbW1pdF9saXN0ICpoID0gcmVkdWNlX2hlYWRzKGNvbW1pdC0+cGFyZW50cyk7CisJaW50IGkgPSAwLCBtYXJrZWQgPSAwOworCXN0cnVjdCBjb21taXRfbGlzdCAqcG8sICpwbjsKKworCS8qIFdhbnQgdGhlc2UgZm9yIHNhbml0eS1jaGVja2luZyBvbmx5ICovCisJaW50IG9yaWdfY250ID0gY29tbWl0X2xpc3RfY291bnQoY29tbWl0LT5wYXJlbnRzKTsKKwlpbnQgY250ID0gY29tbWl0X2xpc3RfY291bnQoaCk7CisKKwkvKgorCSAqIE5vdCByZWFkeSB0byByZW1vdmUgaXRlbXMgeWV0LCBqdXN0IG1hcmsgdGhlbSBmb3Igbm93LCBiYXNlZAorCSAqIG9uIHRoZSBvdXRwdXQgb2YgcmVkdWNlX2hlYWRzKCkuIHJlZHVjZV9oZWFkcyBvdXRwdXRzIHRoZSByZWR1Y2VkCisJICogc2V0IGluIGl0cyBvcmlnaW5hbCBvcmRlciwgc28gdGhpcyBpc24ndCB0b28gaGFyZC4KKwkgKi8KKwlwbyA9IGNvbW1pdC0+cGFyZW50czsKKwlwbiA9IGg7CisJd2hpbGUgKHBvKSB7CisJCWlmIChwbiAmJiBwby0+aXRlbSA9PSBwbi0+aXRlbSkgeworCQkJcG4gPSBwbi0+bmV4dDsKKwkJCWkrKzsKKwkJfSBlbHNlIHsKKwkJCXBvLT5pdGVtLT5vYmplY3QuZmxhZ3MgfD0gVE1QX01BUks7CisJCQltYXJrZWQrKzsKKwkJfQorCQlwbz1wby0+bmV4dDsKKwl9CisKKwlpZiAoaSAhPSBjbnQgfHwgY250K21hcmtlZCAhPSBvcmlnX2NudCkKKwkJZGllKCJtYXJrX3JlZHVuZGFudF9wYXJlbnRzICVkICVkICVkICVkIiwgb3JpZ19jbnQsIGNudCwgaSwgbWFya2VkKTsKKworCWZyZWVfY29tbWl0X2xpc3QoaCk7CisKKwlyZXR1cm4gbWFya2VkOworfQorCitzdGF0aWMgaW50IG1hcmtfdHJlZXNhbWVfcm9vdF9wYXJlbnRzKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0KQoreworCXN0cnVjdCBjb21taXRfbGlzdCAqcDsKKwlpbnQgbWFya2VkID0gMDsKKworCWZvciAocCA9IGNvbW1pdC0+cGFyZW50czsgcDsgcCA9IHAtPm5leHQpIHsKKwkJc3RydWN0IGNvbW1pdCAqcGFyZW50ID0gcC0+aXRlbTsKKwkJaWYgKCFwYXJlbnQtPnBhcmVudHMgJiYgKHBhcmVudC0+b2JqZWN0LmZsYWdzICYgVFJFRVNBTUUpKSB7CisJCQlwYXJlbnQtPm9iamVjdC5mbGFncyB8PSBUTVBfTUFSSzsKKwkJCW1hcmtlZCsrOworCQl9CisJfQorCisJcmV0dXJuIG1hcmtlZDsKK30KKworLyoKKyAqIEF3a3dhcmQgbmFtaW5nIC0gdGhpcyBtZWFucyBvbmUgcGFyZW50IHdlIGFyZSBUUkVFU0FNRSB0by4KKyAqIGNmIG1hcmtfdHJlZXNhbWVfcm9vdF9wYXJlbnRzOiByb290IHBhcmVudHMgdGhhdCBhcmUgVFJFRVNBTUUgKHRvIGFuCisgKiBlbXB0eSB0cmVlKS4gQmV0dGVyIG5hbWUgc3VnZ2VzdGlvbnM/CisgKi8KK3N0YXRpYyBpbnQgbGVhdmVfb25lX3RyZWVzYW1lX3RvX3BhcmVudChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlzdHJ1Y3QgdHJlZXNhbWVfc3RhdGUgKnRzID0gbG9va3VwX2RlY29yYXRpb24oJnJldnMtPnRyZWVzYW1lLCAmY29tbWl0LT5vYmplY3QpOworCXN0cnVjdCBjb21taXQgKnVubWFya2VkID0gTlVMTCwgKm1hcmtlZCA9IE5VTEw7CisJc3RydWN0IGNvbW1pdF9saXN0ICpwOworCXVuc2lnbmVkIG47CisKKwlmb3IgKHAgPSBjb21taXQtPnBhcmVudHMsIG4gPSAwOyBwOyBwID0gcC0+bmV4dCwgbisrKSB7CisJCWlmICh0cy0+dHJlZXNhbWVbbl0pIHsKKwkJCWlmIChwLT5pdGVtLT5vYmplY3QuZmxhZ3MgJiBUTVBfTUFSSykgeworCQkJCWlmICghbWFya2VkKQorCQkJCQltYXJrZWQgPSBwLT5pdGVtOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIXVubWFya2VkKSB7CisJCQkJCXVubWFya2VkID0gcC0+aXRlbTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJLyoKKwkgKiBJZiB3ZSBhcmUgVFJFRVNBTUUgdG8gYSBtYXJrZWQtZm9yLWRlbGV0aW9uIHBhcmVudCwgYnV0IG5vdCB0byBhbnkKKwkgKiB1bm1hcmtlZCBwYXJlbnRzLCB1bm1hcmsgdGhlIGZpcnN0IFRSRUVTQU1FIHBhcmVudC4gVGhpcyBpcyB0aGUKKwkgKiBwYXJlbnQgdGhhdCB0aGUgZGVmYXVsdCBzaW1wbGlmeV9oaXN0b3J5PT0xIHNjYW4gd291bGQgaGF2ZSBmb2xsb3dlZCwKKwkgKiBhbmQgaXQgZG9lc24ndCBtYWtlIHNlbnNlIHRvIG9taXQgdGhhdCBwYXRoIHdoZW4gYXNraW5nIGZvciBhCisJICogc2ltcGxpZmllZCBmdWxsIGhpc3RvcnkuIFJldGFpbmluZyBpdCBpbXByb3ZlcyB0aGUgY2hhbmNlcyBvZgorCSAqIHVuZGVyc3RhbmRpbmcgb2RkIG1pc3NlZCBtZXJnZXMgdGhhdCB0b29rIGFuIG9sZCB2ZXJzaW9uIG9mIGEgZmlsZS4KKwkgKgorCSAqIEV4YW1wbGU6CisJICoKKwkgKiAgIEktLS0tLS0tLSpYICAgICAgIEEgbW9kaWZpZWQgdGhlIGZpbGUsIGJ1dCBtYWlubGluZSBtZXJnZSBYIHVzZWQKKwkgKiAgICBcICAgICAgIC8gICAgICAgICItcyBvdXJzIiwgc28gdG9vayB0aGUgdmVyc2lvbiBmcm9tIEkuIFggaXMKKwkgKiAgICAgYC0qQS0tJyAgICAgICAgIFRSRUVTQU1FIHRvIEkgYW5kICFUUkVFU0FNRSB0byBBLgorCSAqCisJICogRGVmYXVsdCBsb2cgZnJvbSBYIHdvdWxkIHByb2R1Y2UgIkkiLiBXaXRob3V0IHRoaXMgY2hlY2ssCisJICogLS1mdWxsLWhpc3RvcnkgLS1zaW1wbGlmeS1tZXJnZXMgd291bGQgcHJvZHVjZSAiSS1BLVgiLCBzaG93aW5nCisJICogdGhlIG1lcmdlIGNvbW1pdCBYIGFuZCB0aGF0IGl0IGNoYW5nZWQgQSwgYnV0IG5vdCBtYWtpbmcgY2xlYXIgdGhhdAorCSAqIGl0IGhhZCBqdXN0IHRha2VuIHRoZSBJIHZlcnNpb24uIFdpdGggdGhpcyBjaGVjaywgdGhlIHRvcG9sb2d5IGFib3ZlCisJICogaXMgcmV0YWluZWQuCisJICoKKwkgKiBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgdGhhdCB0aGUgc2ltcGxpZmljYXRpb24gY2hvb3NlcyBhIGRpZmZlcmVudAorCSAqIFRSRUVTQU1FIHBhcmVudCBmcm9tIHRoZSBkZWZhdWx0LCBpbiB3aGljaCBjYXNlIHRoaXMgdGVzdCBkb2Vzbid0CisJICogYWN0aXZhdGUsIGFuZCB3ZSBfZG9fIGRyb3AgdGhlIGRlZmF1bHQgcGFyZW50LiBFeGFtcGxlOgorCSAqCisJICogICBJLS0tLS0tWCAgICAgICAgIEEgbW9kaWZpZWQgdGhlIGZpbGUsIGJ1dCBpdCB3YXMgcmV2ZXJ0ZWQgaW4gQiwKKwkgKiAgICBcICAgIC8gICAgICAgICAgbWVhbmluZyBtYWlubGluZSBtZXJnZSBYIGlzIFRSRUVTQU1FIHRvIGJvdGgKKwkgKiAgICAqQS0qQiAgICAgICAgICAgcGFyZW50cy4KKwkgKgorCSAqIERlZmF1bHQgbG9nIHdvdWxkIHByb2R1Y2UgIkkiIGJ5IGZvbGxvd2luZyB0aGUgZmlyc3QgcGFyZW50OworCSAqIC0tZnVsbC1oaXN0b3J5IC0tc2ltcGxpZnktbWVyZ2VzIHdpbGwgcHJvZHVjZSAiSS1BLUIiLiBCdXQgdGhpcyBpcyBhCisJICogcmVhc29uYWJsZSByZXN1bHQgLSBpdCBwcmVzZW50cyBhIGxvZ2ljYWwgZnVsbCBoaXN0b3J5IGxlYWRpbmcgZnJvbQorCSAqIEkgdG8gWCwgYW5kIFggaXMgbm90IGFuIGltcG9ydGFudCBtZXJnZS4KKwkgKi8KKwlpZiAoIXVubWFya2VkICYmIG1hcmtlZCkgeworCQltYXJrZWQtPm9iamVjdC5mbGFncyAmPSB+VE1QX01BUks7CisJCXJldHVybiAxOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHJlbW92ZV9tYXJrZWRfcGFyZW50cyhzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCkKK3sKKwlzdHJ1Y3QgY29tbWl0X2xpc3QgKipwcCwgKnA7CisJaW50IG50aF9wYXJlbnQsIHJlbW92ZWQgPSAwOworCisJcHAgPSAmY29tbWl0LT5wYXJlbnRzOworCW50aF9wYXJlbnQgPSAwOworCXdoaWxlICgocCA9ICpwcCkgIT0gTlVMTCkgeworCQlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQgPSBwLT5pdGVtOworCQlpZiAocGFyZW50LT5vYmplY3QuZmxhZ3MgJiBUTVBfTUFSSykgeworCQkJcGFyZW50LT5vYmplY3QuZmxhZ3MgJj0gflRNUF9NQVJLOworCQkJKnBwID0gcC0+bmV4dDsKKwkJCWZyZWUocCk7CisJCQlyZW1vdmVkKys7CisJCQljb21wYWN0X3RyZWVzYW1lKHJldnMsIGNvbW1pdCwgbnRoX3BhcmVudCk7CisJCQljb250aW51ZTsKKwkJfQorCQlwcCA9ICZwLT5uZXh0OworCQludGhfcGFyZW50Kys7CisJfQorCisJLyogUmVtb3ZpbmcgcGFyZW50cyBjYW4gb25seSBpbmNyZWFzZSBUUkVFU0FNRW5lc3MgKi8KKwlpZiAocmVtb3ZlZCAmJiAhKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgVFJFRVNBTUUpKQorCQl1cGRhdGVfdHJlZXNhbWUocmV2cywgY29tbWl0KTsKKworCXJldHVybiBudGhfcGFyZW50OworfQorCiBzdGF0aWMgc3RydWN0IGNvbW1pdF9saXN0ICoqc2ltcGxpZnlfb25lKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0LCBzdHJ1Y3QgY29tbWl0X2xpc3QgKip0YWlsKQogewogCXN0cnVjdCBjb21taXRfbGlzdCAqcDsKKwlzdHJ1Y3QgY29tbWl0ICpwYXJlbnQ7CiAJc3RydWN0IG1lcmdlX3NpbXBsaWZ5X3N0YXRlICpzdCwgKnBzdDsKIAlpbnQgY250OwogCkBAIC0yMDMyLDcgKzI0NDAsOSBAQAogCX0KIAogCS8qCi0JICogUmV3cml0ZSBvdXIgbGlzdCBvZiBwYXJlbnRzLgorCSAqIFJld3JpdGUgb3VyIGxpc3Qgb2YgcGFyZW50cy4gTm90ZSB0aGF0IHRoaXMgY2Fubm90CisJICogYWZmZWN0IG91ciBUUkVFU0FNRSBmbGFncyBpbiBhbnkgd2F5IC0gYSBjb21taXQgaXMKKwkgKiBhbHdheXMgVFJFRVNBTUUgdG8gaXRzIHNpbXBsaWZpY2F0aW9uLgogCSAqLwogCWZvciAocCA9IGNvbW1pdC0+cGFyZW50czsgcDsgcCA9IHAtPm5leHQpIHsKIAkJcHN0ID0gbG9jYXRlX3NpbXBsaWZ5X3N0YXRlKHJldnMsIHAtPml0ZW0pOwpAQCAtMjA0NCw0MyArMjQ1NCw1MyBAQAogCWlmIChyZXZzLT5maXJzdF9wYXJlbnRfb25seSkKIAkJY250ID0gMTsKIAllbHNlCi0JCWNudCA9IHJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhjb21taXQpOworCQljbnQgPSByZW1vdmVfZHVwbGljYXRlX3BhcmVudHMocmV2cywgY29tbWl0KTsKIAogCS8qCiAJICogSXQgaXMgcG9zc2libGUgdGhhdCB3ZSBhcmUgYSBtZXJnZSBhbmQgb25lIHNpZGUgYnJhbmNoCiAJICogZG9lcyBub3QgaGF2ZSBhbnkgY29tbWl0IHRoYXQgdG91Y2hlcyB0aGUgZ2l2ZW4gcGF0aHM7Ci0JICogaW4gc3VjaCBhIGNhc2UsIHRoZSBpbW1lZGlhdGUgcGFyZW50cyB3aWxsIGJlIHJld3JpdHRlbgotCSAqIHRvIGRpZmZlcmVudCBjb21taXRzLgorCSAqIGluIHN1Y2ggYSBjYXNlLCB0aGUgaW1tZWRpYXRlIHBhcmVudCBmcm9tIHRoYXQgYnJhbmNoCisJICogd2lsbCBiZSByZXdyaXR0ZW4gdG8gYmUgdGhlIG1lcmdlIGJhc2UuCiAJICoKIAkgKiAgICAgIG8tLS0tWAkJWDogdGhlIGNvbW1pdCB3ZSBhcmUgbG9va2luZyBhdDsKIAkgKiAgICAgLyAgICAvCQlvOiBhIGNvbW1pdCB0aGF0IHRvdWNoZXMgdGhlIHBhdGhzOwogCSAqIC0tLW8tLS0tJwogCSAqCi0JICogRnVydGhlciByZWR1Y2UgdGhlIHBhcmVudHMgYnkgcmVtb3ZpbmcgcmVkdW5kYW50IHBhcmVudHMuCisJICogRnVydGhlciwgYSBtZXJnZSBvZiBhbiBpbmRlcGVuZGVudCBicmFuY2ggdGhhdCBkb2Vzbid0CisJICogdG91Y2ggdGhlIHBhdGggd2lsbCByZWR1Y2UgdG8gYSB0cmVlc2FtZSByb290IHBhcmVudDoKKwkgKgorCSAqICAtLS0tby0tLS1YCQlYOiB0aGUgY29tbWl0IHdlIGFyZSBsb29raW5nIGF0OworCSAqICAgICAgICAgIC8JCW86IGEgY29tbWl0IHRoYXQgdG91Y2hlcyB0aGUgcGF0aHM7CisJICogICAgICAgICByCQlyOiBhIHJvb3QgY29tbWl0IG5vdCB0b3VjaGluZyB0aGUgcGF0aHMKKwkgKgorCSAqIERldGVjdCBhbmQgc2ltcGxpZnkgYm90aCBjYXNlcy4KIAkgKi8KIAlpZiAoMSA8IGNudCkgewotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKmggPSByZWR1Y2VfaGVhZHMoY29tbWl0LT5wYXJlbnRzKTsKLQkJY250ID0gY29tbWl0X2xpc3RfY291bnQoaCk7Ci0JCWZyZWVfY29tbWl0X2xpc3QoY29tbWl0LT5wYXJlbnRzKTsKLQkJY29tbWl0LT5wYXJlbnRzID0gaDsKKwkJaW50IG1hcmtlZCA9IG1hcmtfcmVkdW5kYW50X3BhcmVudHMocmV2cywgY29tbWl0KTsKKwkJbWFya2VkICs9IG1hcmtfdHJlZXNhbWVfcm9vdF9wYXJlbnRzKHJldnMsIGNvbW1pdCk7CisJCWlmIChtYXJrZWQpCisJCQltYXJrZWQgLT0gbGVhdmVfb25lX3RyZWVzYW1lX3RvX3BhcmVudChyZXZzLCBjb21taXQpOworCQlpZiAobWFya2VkKQorCQkJY250ID0gcmVtb3ZlX21hcmtlZF9wYXJlbnRzKHJldnMsIGNvbW1pdCk7CiAJfQogCiAJLyoKIAkgKiBBIGNvbW1pdCBzaW1wbGlmaWVzIHRvIGl0c2VsZiBpZiBpdCBpcyBhIHJvb3QsIGlmIGl0IGlzCiAJICogVU5JTlRFUkVTVElORywgaWYgaXQgdG91Y2hlcyB0aGUgZ2l2ZW4gcGF0aHMsIG9yIGlmIGl0IGlzIGEKLQkgKiBtZXJnZSBhbmQgaXRzIHBhcmVudHMgc2ltcGxpZmllcyB0byBtb3JlIHRoYW4gb25lIGNvbW1pdHMKKwkgKiBtZXJnZSBhbmQgaXRzIHBhcmVudHMgZG9uJ3Qgc2ltcGxpZnkgdG8gb25lIHJlbGV2YW50IGNvbW1pdAogCSAqICh0aGUgZmlyc3QgdHdvIGNhc2VzIGFyZSBhbHJlYWR5IGhhbmRsZWQgYXQgdGhlIGJlZ2lubmluZyBvZgogCSAqIHRoaXMgZnVuY3Rpb24pLgogCSAqCi0JICogT3RoZXJ3aXNlLCBpdCBzaW1wbGlmaWVzIHRvIHdoYXQgaXRzIHNvbGUgcGFyZW50IHNpbXBsaWZpZXMgdG8uCisJICogT3RoZXJ3aXNlLCBpdCBzaW1wbGlmaWVzIHRvIHdoYXQgaXRzIHNvbGUgcmVsZXZhbnQgcGFyZW50CisJICogc2ltcGxpZmllcyB0by4KIAkgKi8KIAlpZiAoIWNudCB8fAogCSAgICAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBVTklOVEVSRVNUSU5HKSB8fAogCSAgICAhKGNvbW1pdC0+b2JqZWN0LmZsYWdzICYgVFJFRVNBTUUpIHx8Ci0JICAgICgxIDwgY250KSkKKwkgICAgKHBhcmVudCA9IG9uZV9yZWxldmFudF9wYXJlbnQocmV2cywgY29tbWl0LT5wYXJlbnRzKSkgPT0gTlVMTCkKIAkJc3QtPnNpbXBsaWZpZWQgPSBjb21taXQ7CiAJZWxzZSB7Ci0JCXBzdCA9IGxvY2F0ZV9zaW1wbGlmeV9zdGF0ZShyZXZzLCBjb21taXQtPnBhcmVudHMtPml0ZW0pOworCQlwc3QgPSBsb2NhdGVfc2ltcGxpZnlfc3RhdGUocmV2cywgcGFyZW50KTsKIAkJc3QtPnNpbXBsaWZpZWQgPSBwc3QtPnNpbXBsaWZpZWQ7CiAJfQogCXJldHVybiB0YWlsOwpAQCAtMjE3Niw2ICsyNTk2LDExIEBACiAJaWYgKCFyZXZzLT5sZWFrX3BlbmRpbmcpCiAJCWZyZWUobGlzdCk7CiAKKwkvKiBTaWduYWwgd2hldGhlciB3ZSBuZWVkIHBlci1wYXJlbnQgdHJlZXNhbWUgZGVjb3JhdGlvbiAqLworCWlmIChyZXZzLT5zaW1wbGlmeV9tZXJnZXMgfHwKKwkgICAgKHJldnMtPmxpbWl0ZWQgJiYgbGltaXRpbmdfY2FuX2luY3JlYXNlX3RyZWVzYW1lKHJldnMpKSkKKwkJcmV2cy0+dHJlZXNhbWUubmFtZSA9ICJ0cmVlc2FtZSI7CisKIAlpZiAocmV2cy0+bm9fd2FsayAhPSBSRVZJU0lPTl9XQUxLX05PX1dBTEtfVU5TT1JURUQpCiAJCWNvbW1pdF9saXN0X3NvcnRfYnlfZGF0ZSgmcmV2cy0+Y29tbWl0cyk7CiAJaWYgKHJldnMtPm5vX3dhbGspCkBAIC0yMTg0LDcgKzI2MDksOSBAQAogCQlpZiAobGltaXRfbGlzdChyZXZzKSA8IDApCiAJCQlyZXR1cm4gLTE7CiAJaWYgKHJldnMtPnRvcG9fb3JkZXIpCi0JCXNvcnRfaW5fdG9wb2xvZ2ljYWxfb3JkZXIoJnJldnMtPmNvbW1pdHMsIHJldnMtPmxpZm8pOworCQlzb3J0X2luX3RvcG9sb2dpY2FsX29yZGVyKCZyZXZzLT5jb21taXRzLCByZXZzLT5zb3J0X29yZGVyKTsKKwlpZiAocmV2cy0+bGluZV9sZXZlbF90cmF2ZXJzZSkKKwkJbGluZV9sb2dfZmlsdGVyKHJldnMpOwogCWlmIChyZXZzLT5zaW1wbGlmeV9tZXJnZXMpCiAJCXNpbXBsaWZ5X21lcmdlcyhyZXZzKTsKIAlpZiAocmV2cy0+Y2hpbGRyZW4ubmFtZSkKQEAgLTIxOTIsMTIgKzI2MTksNiBAQAogCXJldHVybiAwOwogfQogCi1lbnVtIHJld3JpdGVfcmVzdWx0IHsKLQlyZXdyaXRlX29uZV9vaywKLQlyZXdyaXRlX29uZV9ub3BhcmVudHMsCi0JcmV3cml0ZV9vbmVfZXJyb3IKLX07Ci0KIHN0YXRpYyBlbnVtIHJld3JpdGVfcmVzdWx0IHJld3JpdGVfb25lKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqKnBwKQogewogCXN0cnVjdCBjb21taXRfbGlzdCAqY2FjaGUgPSBOVUxMOwpAQCAtMjIwNywyNCArMjYyOCwyNSBAQAogCQlpZiAoIXJldnMtPmxpbWl0ZWQpCiAJCQlpZiAoYWRkX3BhcmVudHNfdG9fbGlzdChyZXZzLCBwLCAmcmV2cy0+Y29tbWl0cywgJmNhY2hlKSA8IDApCiAJCQkJcmV0dXJuIHJld3JpdGVfb25lX2Vycm9yOwotCQlpZiAocC0+cGFyZW50cyAmJiBwLT5wYXJlbnRzLT5uZXh0KQotCQkJcmV0dXJuIHJld3JpdGVfb25lX29rOwogCQlpZiAocC0+b2JqZWN0LmZsYWdzICYgVU5JTlRFUkVTVElORykKIAkJCXJldHVybiByZXdyaXRlX29uZV9vazsKIAkJaWYgKCEocC0+b2JqZWN0LmZsYWdzICYgVFJFRVNBTUUpKQogCQkJcmV0dXJuIHJld3JpdGVfb25lX29rOwogCQlpZiAoIXAtPnBhcmVudHMpCiAJCQlyZXR1cm4gcmV3cml0ZV9vbmVfbm9wYXJlbnRzOwotCQkqcHAgPSBwLT5wYXJlbnRzLT5pdGVtOworCQlpZiAoKHAgPSBvbmVfcmVsZXZhbnRfcGFyZW50KHJldnMsIHAtPnBhcmVudHMpKSA9PSBOVUxMKQorCQkJcmV0dXJuIHJld3JpdGVfb25lX29rOworCQkqcHAgPSBwOwogCX0KIH0KIAotc3RhdGljIGludCByZXdyaXRlX3BhcmVudHMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCitpbnQgcmV3cml0ZV9wYXJlbnRzKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCXJld3JpdGVfcGFyZW50X2ZuX3QgcmV3cml0ZV9wYXJlbnQpCiB7CiAJc3RydWN0IGNvbW1pdF9saXN0ICoqcHAgPSAmY29tbWl0LT5wYXJlbnRzOwogCXdoaWxlICgqcHApIHsKIAkJc3RydWN0IGNvbW1pdF9saXN0ICpwYXJlbnQgPSAqcHA7Ci0JCXN3aXRjaCAocmV3cml0ZV9vbmUocmV2cywgJnBhcmVudC0+aXRlbSkpIHsKKwkJc3dpdGNoIChyZXdyaXRlX3BhcmVudChyZXZzLCAmcGFyZW50LT5pdGVtKSkgewogCQljYXNlIHJld3JpdGVfb25lX29rOgogCQkJYnJlYWs7CiAJCWNhc2UgcmV3cml0ZV9vbmVfbm9wYXJlbnRzOgpAQCAtMjIzNSw3ICsyNjU3LDcgQEAKIAkJfQogCQlwcCA9ICZwYXJlbnQtPm5leHQ7CiAJfQotCXJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhjb21taXQpOworCXJlbW92ZV9kdXBsaWNhdGVfcGFyZW50cyhyZXZzLCBjb21taXQpOwogCXJldHVybiAwOwogfQogCkBAIC0yMzU5LDEwICsyNzgxLDcgQEAKIAlpZiAocmV2cy0+bWluX2FnZSAhPSAtMSAmJiAoY29tbWl0LT5kYXRlID4gcmV2cy0+bWluX2FnZSkpCiAJCXJldHVybiBjb21taXRfaWdub3JlOwogCWlmIChyZXZzLT5taW5fcGFyZW50cyB8fCAocmV2cy0+bWF4X3BhcmVudHMgPj0gMCkpIHsKLQkJaW50IG4gPSAwOwotCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7Ci0JCWZvciAocCA9IGNvbW1pdC0+cGFyZW50czsgcDsgcCA9IHAtPm5leHQpCi0JCQluKys7CisJCWludCBuID0gY29tbWl0X2xpc3RfY291bnQoY29tbWl0LT5wYXJlbnRzKTsKIAkJaWYgKChuIDwgcmV2cy0+bWluX3BhcmVudHMpIHx8CiAJCSAgICAoKHJldnMtPm1heF9wYXJlbnRzID49IDApICYmIChuID4gcmV2cy0+bWF4X3BhcmVudHMpKSkKIAkJCXJldHVybiBjb21taXRfaWdub3JlOwpAQCAtMjM3MiwxMiArMjc5MSwyMyBAQAogCWlmIChyZXZzLT5wcnVuZSAmJiByZXZzLT5kZW5zZSkgewogCQkvKiBDb21taXQgd2l0aG91dCBjaGFuZ2VzPyAqLwogCQlpZiAoY29tbWl0LT5vYmplY3QuZmxhZ3MgJiBUUkVFU0FNRSkgeworCQkJaW50IG47CisJCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnA7CiAJCQkvKiBkcm9wIG1lcmdlcyB1bmxlc3Mgd2Ugd2FudCBwYXJlbnRob29kICovCiAJCQlpZiAoIXdhbnRfYW5jZXN0cnkocmV2cykpCiAJCQkJcmV0dXJuIGNvbW1pdF9pZ25vcmU7Ci0JCQkvKiBub24tbWVyZ2UgLSBhbHdheXMgaWdub3JlIGl0ICovCi0JCQlpZiAoIWNvbW1pdC0+cGFyZW50cyB8fCAhY29tbWl0LT5wYXJlbnRzLT5uZXh0KQotCQkJCXJldHVybiBjb21taXRfaWdub3JlOworCQkJLyoKKwkJCSAqIElmIHdlIHdhbnQgYW5jZXN0cnksIHRoZW4gbmVlZCB0byBrZWVwIGFueSBtZXJnZXMKKwkJCSAqIGJldHdlZW4gcmVsZXZhbnQgY29tbWl0cyB0byB0aWUgdG9nZXRoZXIgdG9wb2xvZ3kuCisJCQkgKiBGb3IgY29uc2lzdGVuY3kgd2l0aCBUUkVFU0FNRSBhbmQgc2ltcGxpZmljYXRpb24KKwkJCSAqIHVzZSAicmVsZXZhbnQiIGhlcmUgcmF0aGVyIHRoYW4ganVzdCBJTlRFUkVTVElORywKKwkJCSAqIHRvIHRyZWF0IGJvdHRvbSBjb21taXQocykgYXMgcGFydCBvZiB0aGUgdG9wb2xvZ3kuCisJCQkgKi8KKwkJCWZvciAobiA9IDAsIHAgPSBjb21taXQtPnBhcmVudHM7IHA7IHAgPSBwLT5uZXh0KQorCQkJCWlmIChyZWxldmFudF9jb21taXQocC0+aXRlbSkpCisJCQkJCWlmICgrK24gPj0gMikKKwkJCQkJCXJldHVybiBjb21taXRfc2hvdzsKKwkJCXJldHVybiBjb21taXRfaWdub3JlOwogCQl9CiAJfQogCXJldHVybiBjb21taXRfc2hvdzsKQEAgLTIzOTAsNyArMjgyMCw3IEBACiAJaWYgKGFjdGlvbiA9PSBjb21taXRfc2hvdyAmJgogCSAgICAhcmV2cy0+c2hvd19hbGwgJiYKIAkgICAgcmV2cy0+cHJ1bmUgJiYgcmV2cy0+ZGVuc2UgJiYgd2FudF9hbmNlc3RyeShyZXZzKSkgewotCQlpZiAocmV3cml0ZV9wYXJlbnRzKHJldnMsIGNvbW1pdCkgPCAwKQorCQlpZiAocmV3cml0ZV9wYXJlbnRzKHJldnMsIGNvbW1pdCwgcmV3cml0ZV9vbmUpIDwgMCkKIAkJCXJldHVybiBjb21taXRfZXJyb3I7CiAJfQogCXJldHVybiBhY3Rpb247CkBAIC0yNDQwLDI1ICsyODcwLDIzIEBACiAJcmV0dXJuIE5VTEw7CiB9CiAKKy8qCisgKiBSZXR1cm4gdHJ1ZSBmb3IgZW50cmllcyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIHNob3duLiAgKFRoaXMgaXMgYW4KKyAqIG9iamVjdF9hcnJheV9lYWNoX2Z1bmNfdC4pCisgKi8KK3N0YXRpYyBpbnQgZW50cnlfdW5zaG93bihzdHJ1Y3Qgb2JqZWN0X2FycmF5X2VudHJ5ICplbnRyeSwgdm9pZCAqY2JfZGF0YV91bnVzZWQpCit7CisJcmV0dXJuICEoZW50cnktPml0ZW0tPmZsYWdzICYgU0hPV04pOworfQorCisvKgorICogSWYgYXJyYXkgaXMgb24gdGhlIHZlcmdlIG9mIGEgcmVhbGxvYywgZ2FyYmFnZS1jb2xsZWN0IGFueSBlbnRyaWVzCisgKiB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHNob3duIHRvIHRyeSB0byBmcmVlIHVwIHNvbWUgc3BhY2UuCisgKi8KIHN0YXRpYyB2b2lkIGdjX2JvdW5kYXJ5KHN0cnVjdCBvYmplY3RfYXJyYXkgKmFycmF5KQogewotCXVuc2lnbmVkIG5yID0gYXJyYXktPm5yOwotCXVuc2lnbmVkIGFsbG9jID0gYXJyYXktPmFsbG9jOwotCXN0cnVjdCBvYmplY3RfYXJyYXlfZW50cnkgKm9iamVjdHMgPSBhcnJheS0+b2JqZWN0czsKLQotCWlmIChhbGxvYyA8PSBucikgewotCQl1bnNpZ25lZCBpLCBqOwotCQlmb3IgKGkgPSBqID0gMDsgaSA8IG5yOyBpKyspIHsKLQkJCWlmIChvYmplY3RzW2ldLml0ZW0tPmZsYWdzICYgU0hPV04pCi0JCQkJY29udGludWU7Ci0JCQlpZiAoaSAhPSBqKQotCQkJCW9iamVjdHNbal0gPSBvYmplY3RzW2ldOwotCQkJaisrOwotCQl9Ci0JCWZvciAoaSA9IGo7IGkgPCBucjsgaSsrKQotCQkJb2JqZWN0c1tpXS5pdGVtID0gTlVMTDsKLQkJYXJyYXktPm5yID0gajsKLQl9CisJaWYgKGFycmF5LT5uciA9PSBhcnJheS0+YWxsb2MpCisJCW9iamVjdF9hcnJheV9maWx0ZXIoYXJyYXksIGVudHJ5X3Vuc2hvd24sIE5VTEwpOwogfQogCiBzdGF0aWMgdm9pZCBjcmVhdGVfYm91bmRhcnlfY29tbWl0X2xpc3Qoc3RydWN0IHJldl9pbmZvICpyZXZzKQpAQCAtMjQ5OSw3ICsyOTI3LDcgQEAKIAkgKiBJZiByZXZzLT50b3BvX29yZGVyIGlzIHNldCwgc29ydCB0aGUgYm91bmRhcnkgY29tbWl0cwogCSAqIGluIHRvcG9sb2dpY2FsIG9yZGVyCiAJICovCi0Jc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcigmcmV2cy0+Y29tbWl0cywgcmV2cy0+bGlmbyk7CisJc29ydF9pbl90b3BvbG9naWNhbF9vcmRlcigmcmV2cy0+Y29tbWl0cywgcmV2cy0+c29ydF9vcmRlcik7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgY29tbWl0ICpnZXRfcmV2aXNpb25faW50ZXJuYWwoc3RydWN0IHJldl9pbmZvICpyZXZzKQpkaWZmIC0tZ2l0IGEvcmV2aXNpb24uaCBiL3JldmlzaW9uLmgKaW5kZXggODc4YTU1NS4uOTU4NTliYSAxMDA2NDQKLS0tIGEvcmV2aXNpb24uaAorKysgYi9yZXZpc2lvbi5oCkBAIC00LDYgKzQsNyBAQAogI2luY2x1ZGUgInBhcnNlLW9wdGlvbnMuaCIKICNpbmNsdWRlICJncmVwLmgiCiAjaW5jbHVkZSAibm90ZXMuaCIKKyNpbmNsdWRlICJjb21taXQuaCIKIAogI2RlZmluZSBTRUVOCQkoMXU8PDApCiAjZGVmaW5lIFVOSU5URVJFU1RJTkcgICAoMXU8PDEpCkBAIC0xNSw3ICsxNiw4IEBACiAjZGVmaW5lIEFEREVECQkoMXU8PDcpCS8qIFBhcmVudHMgYWxyZWFkeSBwYXJzZWQgYW5kIGFkZGVkPyAqLwogI2RlZmluZSBTWU1NRVRSSUNfTEVGVAkoMXU8PDgpCiAjZGVmaW5lIFBBVENIU0FNRQkoMXU8PDkpCi0jZGVmaW5lIEFMTF9SRVZfRkxBR1MJKCgxdTw8MTApLTEpCisjZGVmaW5lIEJPVFRPTQkJKDF1PDwxMCkKKyNkZWZpbmUgQUxMX1JFVl9GTEFHUwkoKDF1PDwxMSktMSkKIAogI2RlZmluZSBERUNPUkFURV9TSE9SVF9SRUZTCTEKICNkZWZpbmUgREVDT1JBVEVfRlVMTF9SRUZTCTIKQEAgLTYxLDYgKzYzLDEwIEBACiAJY29uc3QgY2hhciAqcHJlZml4OwogCWNvbnN0IGNoYXIgKmRlZjsKIAlzdHJ1Y3QgcGF0aHNwZWMgcHJ1bmVfZGF0YTsKKworCS8qIHRvcG8tc29ydCAqLworCWVudW0gcmV2X3NvcnRfb3JkZXIgc29ydF9vcmRlcjsKKwogCXVuc2lnbmVkIGludAllYXJseV9vdXRwdXQ6MSwKIAkJCWlnbm9yZV9taXNzaW5nOjE7CiAKQEAgLTcxLDcgKzc3LDYgQEAKIAkJCXNob3dfYWxsOjEsCiAJCQlyZW1vdmVfZW1wdHlfdHJlZXM6MSwKIAkJCXNpbXBsaWZ5X2hpc3Rvcnk6MSwKLQkJCWxpZm86MSwKIAkJCXRvcG9fb3JkZXI6MSwKIAkJCXNpbXBsaWZ5X21lcmdlczoxLAogCQkJc2ltcGxpZnlfYnlfZGVjb3JhdGlvbjoxLApAQCAtOTcsNyArMTAyLDggQEAKIAkJCWNoZXJyeV9tYXJrOjEsCiAJCQliaXNlY3Q6MSwKIAkJCWFuY2VzdHJ5X3BhdGg6MSwKLQkJCWZpcnN0X3BhcmVudF9vbmx5OjE7CisJCQlmaXJzdF9wYXJlbnRfb25seToxLAorCQkJbGluZV9sZXZlbF90cmF2ZXJzZToxOwogCiAJLyogRGlmZiBmbGFncyAqLwogCXVuc2lnbmVkIGludAlkaWZmOjEsCkBAIC0xMzgsNiArMTQ0LDcgQEAKIAlpbnQJCW51bWJlcmVkX2ZpbGVzOwogCWludAkJcmVyb2xsX2NvdW50OwogCWNoYXIJCSptZXNzYWdlX2lkOworCXN0cnVjdCBpZGVudF9zcGxpdCBmcm9tX2lkZW50OwogCXN0cnVjdCBzdHJpbmdfbGlzdCAqcmVmX21lc3NhZ2VfaWRzOwogCWludAkJYWRkX3NpZ25vZmY7CiAJY29uc3QgY2hhcgkqZXh0cmFfaGVhZGVyczsKQEAgLTE2OCw2ICsxNzUsNyBAQAogCXN0cnVjdCByZWZsb2dfd2Fsa19pbmZvICpyZWZsb2dfaW5mbzsKIAlzdHJ1Y3QgZGVjb3JhdGlvbiBjaGlsZHJlbjsKIAlzdHJ1Y3QgZGVjb3JhdGlvbiBtZXJnZV9zaW1wbGlmaWNhdGlvbjsKKwlzdHJ1Y3QgZGVjb3JhdGlvbiB0cmVlc2FtZTsKIAogCS8qIG5vdGVzLXNwZWNpZmljIG9wdGlvbnM6IHdoaWNoIHJlZnMgdG8gc2hvdyAqLwogCXN0cnVjdCBkaXNwbGF5X25vdGVzX29wdCBub3Rlc19vcHQ7CkBAIC0xNzYsNiArMTg0LDkgQEAKIAlpbnQgY291bnRfbGVmdDsKIAlpbnQgY291bnRfcmlnaHQ7CiAJaW50IGNvdW50X3NhbWU7CisKKwkvKiBsaW5lIGxldmVsIHJhbmdlIHRoYXQgd2UgYXJlIGNoYXNpbmcgKi8KKwlzdHJ1Y3QgZGVjb3JhdGlvbiBsaW5lX2xvZ19kYXRhOwogfTsKIAogI2RlZmluZSBSRVZfVFJFRV9TQU1FCQkwCkBAIC0xOTYsMTkgKzIwNywyMyBAQAogfTsKIAogZXh0ZXJuIHZvaWQgaW5pdF9yZXZpc2lvbnMoc3RydWN0IHJldl9pbmZvICpyZXZzLCBjb25zdCBjaGFyICpwcmVmaXgpOwotZXh0ZXJuIGludCBzZXR1cF9yZXZpc2lvbnMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgKik7CitleHRlcm4gaW50IHNldHVwX3JldmlzaW9ucyhpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIHN0cnVjdCByZXZfaW5mbyAqcmV2cywKKwkJCSAgIHN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgKik7CiBleHRlcm4gdm9pZCBwYXJzZV9yZXZpc2lvbl9vcHQoc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgcGFyc2Vfb3B0X2N0eF90ICpjdHgsCi0JCQkJIGNvbnN0IHN0cnVjdCBvcHRpb24gKm9wdGlvbnMsCi0JCQkJIGNvbnN0IGNoYXIgKiBjb25zdCB1c2FnZXN0cltdKTsKKwkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgb3B0aW9uICpvcHRpb25zLAorCQkJICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCB1c2FnZXN0cltdKTsKICNkZWZpbmUgUkVWQVJHX0NBTk5PVF9CRV9GSUxFTkFNRSAwMQogI2RlZmluZSBSRVZBUkdfQ09NTUlUVElTSCAwMgotZXh0ZXJuIGludCBoYW5kbGVfcmV2aXNpb25fYXJnKGNvbnN0IGNoYXIgKmFyZywgc3RydWN0IHJldl9pbmZvICpyZXZzLCBpbnQgZmxhZ3MsIHVuc2lnbmVkIHJldmFyZ19vcHQpOworZXh0ZXJuIGludCBoYW5kbGVfcmV2aXNpb25fYXJnKGNvbnN0IGNoYXIgKmFyZywgc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJICAgICAgIGludCBmbGFncywgdW5zaWduZWQgcmV2YXJnX29wdCk7CiAKIGV4dGVybiB2b2lkIHJlc2V0X3JldmlzaW9uX3dhbGsodm9pZCk7CiBleHRlcm4gaW50IHByZXBhcmVfcmV2aXNpb25fd2FsayhzdHJ1Y3QgcmV2X2luZm8gKnJldnMpOwogZXh0ZXJuIHN0cnVjdCBjb21taXQgKmdldF9yZXZpc2lvbihzdHJ1Y3QgcmV2X2luZm8gKnJldnMpOwotZXh0ZXJuIGNoYXIgKmdldF9yZXZpc2lvbl9tYXJrKGNvbnN0IHN0cnVjdCByZXZfaW5mbyAqcmV2cywgY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0KTsKLWV4dGVybiB2b2lkIHB1dF9yZXZpc2lvbl9tYXJrKGNvbnN0IHN0cnVjdCByZXZfaW5mbyAqcmV2cywgY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0KTsKK2V4dGVybiBjaGFyICpnZXRfcmV2aXNpb25fbWFyayhjb25zdCBzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkgICAgICAgY29uc3Qgc3RydWN0IGNvbW1pdCAqY29tbWl0KTsKK2V4dGVybiB2b2lkIHB1dF9yZXZpc2lvbl9tYXJrKGNvbnN0IHN0cnVjdCByZXZfaW5mbyAqcmV2cywKKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiAKIGV4dGVybiB2b2lkIG1hcmtfcGFyZW50c191bmludGVyZXN0aW5nKHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CiBleHRlcm4gdm9pZCBtYXJrX3RyZWVfdW5pbnRlcmVzdGluZyhzdHJ1Y3QgdHJlZSAqdHJlZSk7CkBAIC0yMjEsMTUgKzIzNiwxOSBAQAogCiBjaGFyICpwYXRoX25hbWUoY29uc3Qgc3RydWN0IG5hbWVfcGF0aCAqcGF0aCwgY29uc3QgY2hhciAqbmFtZSk7CiAKLWV4dGVybiB2b2lkIHNob3dfb2JqZWN0X3dpdGhfbmFtZShGSUxFICosIHN0cnVjdCBvYmplY3QgKiwgY29uc3Qgc3RydWN0IG5hbWVfcGF0aCAqLCBjb25zdCBjaGFyICopOworZXh0ZXJuIHZvaWQgc2hvd19vYmplY3Rfd2l0aF9uYW1lKEZJTEUgKiwgc3RydWN0IG9iamVjdCAqLAorCQkJCSAgY29uc3Qgc3RydWN0IG5hbWVfcGF0aCAqLCBjb25zdCBjaGFyICopOwogCiBleHRlcm4gdm9pZCBhZGRfb2JqZWN0KHN0cnVjdCBvYmplY3QgKm9iaiwKIAkJICAgICAgIHN0cnVjdCBvYmplY3RfYXJyYXkgKnAsCiAJCSAgICAgICBzdHJ1Y3QgbmFtZV9wYXRoICpwYXRoLAogCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSk7CiAKLWV4dGVybiB2b2lkIGFkZF9wZW5kaW5nX29iamVjdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqbmFtZSk7Ci1leHRlcm4gdm9pZCBhZGRfcGVuZGluZ19zaGExKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdW5zaWduZWQgaW50IGZsYWdzKTsKK2V4dGVybiB2b2lkIGFkZF9wZW5kaW5nX29iamVjdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkgICAgICAgc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpuYW1lKTsKK2V4dGVybiB2b2lkIGFkZF9wZW5kaW5nX3NoYTEoc3RydWN0IHJldl9pbmZvICpyZXZzLAorCQkJICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJICAgICB1bnNpZ25lZCBpbnQgZmxhZ3MpOwogCiBleHRlcm4gdm9pZCBhZGRfaGVhZF90b19wZW5kaW5nKHN0cnVjdCByZXZfaW5mbyAqKTsKIApAQCAtMjM5LDcgKzI1OCwxOSBAQAogCWNvbW1pdF9lcnJvcgogfTsKIAotZXh0ZXJuIGVudW0gY29tbWl0X2FjdGlvbiBnZXRfY29tbWl0X2FjdGlvbihzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7Ci1leHRlcm4gZW51bSBjb21taXRfYWN0aW9uIHNpbXBsaWZ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CitleHRlcm4gZW51bSBjb21taXRfYWN0aW9uIGdldF9jb21taXRfYWN0aW9uKHN0cnVjdCByZXZfaW5mbyAqcmV2cywKKwkJCQkJICAgIHN0cnVjdCBjb21taXQgKmNvbW1pdCk7CitleHRlcm4gZW51bSBjb21taXRfYWN0aW9uIHNpbXBsaWZ5X2NvbW1pdChzdHJ1Y3QgcmV2X2luZm8gKnJldnMsCisJCQkJCSAgc3RydWN0IGNvbW1pdCAqY29tbWl0KTsKIAorZW51bSByZXdyaXRlX3Jlc3VsdCB7CisJcmV3cml0ZV9vbmVfb2ssCisJcmV3cml0ZV9vbmVfbm9wYXJlbnRzLAorCXJld3JpdGVfb25lX2Vycm9yCit9OworCit0eXBlZGVmIGVudW0gcmV3cml0ZV9yZXN1bHQgKCpyZXdyaXRlX3BhcmVudF9mbl90KShzdHJ1Y3QgcmV2X2luZm8gKnJldnMsIHN0cnVjdCBjb21taXQgKipwcCk7CisKK2V4dGVybiBpbnQgcmV3cml0ZV9wYXJlbnRzKHN0cnVjdCByZXZfaW5mbyAqcmV2cywgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCXJld3JpdGVfcGFyZW50X2ZuX3QgcmV3cml0ZV9wYXJlbnQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9ydW4tY29tbWFuZC5jIGIvcnVuLWNvbW1hbmQuYwppbmRleCAxYjMyYTEyLi4xYjdmODhlIDEwMDY0NAotLS0gYS9ydW4tY29tbWFuZC5jCisrKyBiL3J1bi1jb21tYW5kLmMKQEAgLTcyLDExICs3MiwxNCBAQAogCWNsb3NlKGZkWzFdKTsKIH0KIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHN0YXRpYyBpbmxpbmUgdm9pZCBkdXBfZGV2bnVsbChpbnQgdG8pCiB7CiAJaW50IGZkID0gb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKTsKLQlkdXAyKGZkLCB0byk7CisJaWYgKGZkIDwgMCkKKwkJZGllX2Vycm5vKF8oIm9wZW4gL2Rldi9udWxsIGZhaWxlZCIpKTsKKwlpZiAoZHVwMihmZCwgdG8pIDwgMCkKKwkJZGllX2Vycm5vKF8oImR1cDIoJWQsJWQpIGZhaWxlZCIpLCBmZCwgdG8pOwogCWNsb3NlKGZkKTsKIH0KICNlbmRpZgpAQCAtMTU5LDcgKzE2Miw3IEBACiAJCWRpZSgiQlVHOiBzaGVsbCBjb21tYW5kIGlzIGVtcHR5Iik7CiAKIAlpZiAoc3RyY3Nwbihhcmd2WzBdLCAifCY7PD4oKSRgXFxcIicgXHRcbio/WyN+PSUiKSAhPSBzdHJsZW4oYXJndlswXSkpIHsKLSNpZm5kZWYgV0lOMzIKKyNpZm5kZWYgR0lUX1dJTkRPV1NfTkFUSVZFCiAJCW5hcmd2W25hcmdjKytdID0gU0hFTExfUEFUSDsKICNlbHNlCiAJCW5hcmd2W25hcmdjKytdID0gInNoIjsKQEAgLTE4Miw3ICsxODUsNyBAQAogCXJldHVybiBuYXJndjsKIH0KIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHN0YXRpYyBpbnQgZXhlY3Zfc2hlbGxfY21kKGNvbnN0IGNoYXIgKiphcmd2KQogewogCWNvbnN0IGNoYXIgKipuYXJndiA9IHByZXBhcmVfc2hlbGxfY21kKGFyZ3YpOwpAQCAtMTkzLDcgKzE5Niw3IEBACiB9CiAjZW5kaWYKIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHN0YXRpYyBpbnQgY2hpbGRfZXJyID0gMjsKIHN0YXRpYyBpbnQgY2hpbGRfbm90aWZpZXIgPSAtMTsKIApAQCAtMzM0LDcgKzMzNyw3IEBACiAJdHJhY2VfYXJndl9wcmludGYoY21kLT5hcmd2LCAidHJhY2U6IHJ1bl9jb21tYW5kOiIpOwogCWZmbHVzaChOVUxMKTsKIAotI2lmbmRlZiBXSU4zMgorI2lmbmRlZiBHSVRfV0lORE9XU19OQVRJVkUKIHsKIAlpbnQgbm90aWZ5X3BpcGVbMl07CiAJaWYgKHBpcGUobm90aWZ5X3BpcGUpKQpkaWZmIC0tZ2l0IGEvcnVuLWNvbW1hbmQuaCBiL3J1bi1jb21tYW5kLmgKaW5kZXggMjIxY2UzMy4uNmI5ODVhZiAxMDA2NDQKLS0tIGEvcnVuLWNvbW1hbmQuaAorKysgYi9ydW4tY29tbWFuZC5oCkBAIC00Niw2ICs0Niw3IEBACiBpbnQgcnVuX2NvbW1hbmQoc3RydWN0IGNoaWxkX3Byb2Nlc3MgKik7CiAKIGV4dGVybiBjaGFyICpmaW5kX2hvb2soY29uc3QgY2hhciAqbmFtZSk7CitMQVNUX0FSR19NVVNUX0JFX05VTEwKIGV4dGVybiBpbnQgcnVuX2hvb2soY29uc3QgY2hhciAqaW5kZXhfZmlsZSwgY29uc3QgY2hhciAqbmFtZSwgLi4uKTsKIAogI2RlZmluZSBSVU5fQ09NTUFORF9OT19TVERJTiAxCmRpZmYgLS1naXQgYS9zZXF1ZW5jZXIuYyBiL3NlcXVlbmNlci5jCmluZGV4IGY3YmU3ZDguLjM1MTU0OGYgMTAwNjQ0Ci0tLSBhL3NlcXVlbmNlci5jCisrKyBiL3NlcXVlbmNlci5jCkBAIC0yNzAsMTUgKzI3MCwyMCBAQAogfQogCiBzdGF0aWMgaW50IGZhc3RfZm9yd2FyZF90byhjb25zdCB1bnNpZ25lZCBjaGFyICp0bywgY29uc3QgdW5zaWduZWQgY2hhciAqZnJvbSwKLQkJCSAgIGludCB1bmJvcm4pCisJCQlpbnQgdW5ib3JuLCBzdHJ1Y3QgcmVwbGF5X29wdHMgKm9wdHMpCiB7CiAJc3RydWN0IHJlZl9sb2NrICpyZWZfbG9jazsKKwlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CisJaW50IHJldDsKIAogCXJlYWRfY2FjaGUoKTsKIAlpZiAoY2hlY2tvdXRfZmFzdF9mb3J3YXJkKGZyb20sIHRvLCAxKSkKIAkJZXhpdCgxKTsgLyogdGhlIGNhbGxlZSBzaG91bGQgaGF2ZSBjb21wbGFpbmVkIGFscmVhZHkgKi8KIAlyZWZfbG9jayA9IGxvY2tfYW55X3JlZl9mb3JfdXBkYXRlKCJIRUFEIiwgdW5ib3JuID8gbnVsbF9zaGExIDogZnJvbSwgMCk7Ci0JcmV0dXJuIHdyaXRlX3JlZl9zaGExKHJlZl9sb2NrLCB0bywgImNoZXJyeS1waWNrIik7CisJc3RyYnVmX2FkZGYoJnNiLCAiJXM6IGZhc3QtZm9yd2FyZCIsIGFjdGlvbl9uYW1lKG9wdHMpKTsKKwlyZXQgPSB3cml0ZV9yZWZfc2hhMShyZWZfbG9jaywgdG8sIHNiLmJ1Zik7CisJc3RyYnVmX3JlbGVhc2UoJnNiKTsKKwlyZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgaW50IGRvX3JlY3Vyc2l2ZV9tZXJnZShzdHJ1Y3QgY29tbWl0ICpiYXNlLCBzdHJ1Y3QgY29tbWl0ICpuZXh0LApAQCAtMzI2LDcgKzMzMSw3IEBACiAJCWludCBpOwogCQlzdHJidWZfYWRkc3RyKG1zZ2J1ZiwgIlxuQ29uZmxpY3RzOlxuIik7CiAJCWZvciAoaSA9IDA7IGkgPCBhY3RpdmVfbnI7KSB7Ci0JCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2krK107CisJCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2krK107CiAJCQlpZiAoY2Vfc3RhZ2UoY2UpKSB7CiAJCQkJc3RyYnVmX2FkZGNoKG1zZ2J1ZiwgJ1x0Jyk7CiAJCQkJc3RyYnVmX2FkZHN0cihtc2didWYsIGNlLT5uYW1lKTsKQEAgLTM2Niw4ICszNzEsOSBAQAogCQlhY3RpdmVfY2FjaGVfdHJlZSA9IGNhY2hlX3RyZWUoKTsKIAogCWlmICghY2FjaGVfdHJlZV9mdWxseV92YWxpZChhY3RpdmVfY2FjaGVfdHJlZSkpCi0JCWlmIChjYWNoZV90cmVlX3VwZGF0ZShhY3RpdmVfY2FjaGVfdHJlZSwgYWN0aXZlX2NhY2hlLAotCQkJCSAgYWN0aXZlX25yLCAwKSkKKwkJaWYgKGNhY2hlX3RyZWVfdXBkYXRlKGFjdGl2ZV9jYWNoZV90cmVlLAorCQkJCSAgICAgIChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqKWFjdGl2ZV9jYWNoZSwKKwkJCQkgICAgICBhY3RpdmVfbnIsIDApKQogCQkJcmV0dXJuIGVycm9yKF8oIlVuYWJsZSB0byB1cGRhdGUgY2FjaGUgdHJlZVxuIikpOwogCiAJcmV0dXJuICFoYXNoY21wKGFjdGl2ZV9jYWNoZV90cmVlLT5zaGExLCBoZWFkX2NvbW1pdC0+dHJlZS0+b2JqZWN0LnNoYTEpOwpAQCAtNTIzLDcgKzUyOSw3IEBACiAJaWYgKG9wdHMtPmFsbG93X2ZmICYmCiAJICAgICgocGFyZW50ICYmICFoYXNoY21wKHBhcmVudC0+b2JqZWN0LnNoYTEsIGhlYWQpKSB8fAogCSAgICAgKCFwYXJlbnQgJiYgdW5ib3JuKSkpCi0JICAgICByZXR1cm4gZmFzdF9mb3J3YXJkX3RvKGNvbW1pdC0+b2JqZWN0LnNoYTEsIGhlYWQsIHVuYm9ybik7CisJCXJldHVybiBmYXN0X2ZvcndhcmRfdG8oY29tbWl0LT5vYmplY3Quc2hhMSwgaGVhZCwgdW5ib3JuLCBvcHRzKTsKIAogCWlmIChwYXJlbnQgJiYgcGFyc2VfY29tbWl0KHBhcmVudCkgPCAwKQogCQkvKiBUUkFOU0xBVE9SUzogVGhlIGZpcnN0ICVzIHdpbGwgYmUgInJldmVydCIgb3IKZGlmZiAtLWdpdCBhL3NldHVwLmMgYi9zZXR1cC5jCmluZGV4IDk0YzFlNjEuLjUyNjIzMTkgMTAwNjQ0Ci0tLSBhL3NldHVwLmMKKysrIGIvc2V0dXAuYwpAQCAtMzYwLDYgKzM2MCw3IEBACiAKIHZvaWQgc2V0dXBfd29ya190cmVlKHZvaWQpCiB7CisJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKndvcmtfdHJlZSwgKmdpdF9kaXI7CiAJc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAKQEAgLTM3OSw4ICszODAsMTAgQEAKIAlpZiAoZ2V0ZW52KEdJVF9XT1JLX1RSRUVfRU5WSVJPTk1FTlQpKQogCQlzZXRlbnYoR0lUX1dPUktfVFJFRV9FTlZJUk9OTUVOVCwgIi4iLCAxKTsKIAotCXNldF9naXRfZGlyKHJlbGF0aXZlX3BhdGgoZ2l0X2Rpciwgd29ya190cmVlKSk7CisJc2V0X2dpdF9kaXIocmVsYXRpdmVfcGF0aChnaXRfZGlyLCB3b3JrX3RyZWUsICZzYikpOwogCWluaXRpYWxpemVkID0gMTsKKworCXN0cmJ1Zl9yZWxlYXNlKCZzYik7CiB9CiAKIHN0YXRpYyBpbnQgY2hlY2tfcmVwb3NpdG9yeV9mb3JtYXRfZ2VudGx5KGNvbnN0IGNoYXIgKmdpdGRpciwgaW50ICpub25naXRfb2spCkBAIC05MDgsMyArOTExLDE1IEBACiAJCXJldHVybiBzdXNwZWN0OwogCXJldHVybiByZWFkX2dpdGZpbGUoc3VzcGVjdCk7CiB9CisKKy8qIGlmIGFueSBzdGFuZGFyZCBmaWxlIGRlc2NyaXB0b3IgaXMgbWlzc2luZyBvcGVuIGl0IHRvIC9kZXYvbnVsbCAqLwordm9pZCBzYW5pdGl6ZV9zdGRmZHModm9pZCkKK3sKKwlpbnQgZmQgPSBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IsIDApOworCXdoaWxlIChmZCAhPSAtMSAmJiBmZCA8IDIpCisJCWZkID0gZHVwKGZkKTsKKwlpZiAoZmQgPT0gLTEpCisJCWRpZV9lcnJubygib3BlbiAvZGV2L251bGwgb3IgZHVwIGZhaWxlZCIpOworCWlmIChmZCA+IDIpCisJCWNsb3NlKGZkKTsKK30KZGlmZiAtLWdpdCBhL3NoYTFfZmlsZS5jIGIvc2hhMV9maWxlLmMKaW5kZXggYjExNGNjOS4uOGUyN2RiMSAxMDA2NDQKLS0tIGEvc2hhMV9maWxlLmMKKysrIGIvc2hhMV9maWxlLmMKQEAgLTM2LDYgKzM2LDkgQEAKIAogY29uc3QgdW5zaWduZWQgY2hhciBudWxsX3NoYTFbMjBdOwogCitzdGF0aWMgY29uc3QgY2hhciAqbm9fbG9nX3BhY2tfYWNjZXNzID0gIm5vX2xvZ19wYWNrX2FjY2VzcyI7CitzdGF0aWMgY29uc3QgY2hhciAqbG9nX3BhY2tfYWNjZXNzOworCiAvKgogICogVGhpcyBpcyBtZWFudCB0byBob2xkIGEgKnNtYWxsKiBudW1iZXIgb2Ygb2JqZWN0cyB0aGF0IHlvdSB3b3VsZAogICogd2FudCByZWFkX3NoYTFfZmlsZSgpIHRvIGJlIGFibGUgdG8gcmV0dXJuLCBidXQgeWV0IHlvdSBkbyBub3Qgd2FudApAQCAtMTMwMyw2ICsxMzA2LDI2IEBACiAJfQogfQogCitzdGF0aWMgaW50IHN0YXRfc2hhMV9maWxlKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEsIHN0cnVjdCBzdGF0ICpzdCkKK3sKKwljaGFyICpuYW1lID0gc2hhMV9maWxlX25hbWUoc2hhMSk7CisJc3RydWN0IGFsdGVybmF0ZV9vYmplY3RfZGF0YWJhc2UgKmFsdDsKKworCWlmICghbHN0YXQobmFtZSwgc3QpKQorCQlyZXR1cm4gMDsKKworCXByZXBhcmVfYWx0X29kYigpOworCWVycm5vID0gRU5PRU5UOworCWZvciAoYWx0ID0gYWx0X29kYl9saXN0OyBhbHQ7IGFsdCA9IGFsdC0+bmV4dCkgeworCQluYW1lID0gYWx0LT5uYW1lOworCQlmaWxsX3NoYTFfcGF0aChuYW1lLCBzaGExKTsKKwkJaWYgKCFsc3RhdChhbHQtPmJhc2UsIHN0KSkKKwkJCXJldHVybiAwOworCX0KKworCXJldHVybiAtMTsKK30KKwogc3RhdGljIGludCBvcGVuX3NoYTFfZmlsZShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExKQogewogCWludCBmZDsKQEAgLTE2OTAsNDYgKzE3MTMsMjEgQEAKIAlyZXR1cm4gdHlwZTsKIH0KIAotCiAjZGVmaW5lIFBPSV9TVEFDS19QUkVBTExPQyA2NAogCi1zdGF0aWMgaW50IHBhY2tlZF9vYmplY3RfaW5mbyhzdHJ1Y3QgcGFja2VkX2dpdCAqcCwgb2ZmX3Qgb2JqX29mZnNldCwKLQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgKnNpemVwLCBpbnQgKnJ0eXBlKQorc3RhdGljIGVudW0gb2JqZWN0X3R5cGUgcGFja2VkX3RvX29iamVjdF90eXBlKHN0cnVjdCBwYWNrZWRfZ2l0ICpwLAorCQkJCQkgICAgICBvZmZfdCBvYmpfb2Zmc2V0LAorCQkJCQkgICAgICBlbnVtIG9iamVjdF90eXBlIHR5cGUsCisJCQkJCSAgICAgIHN0cnVjdCBwYWNrX3dpbmRvdyAqKndfY3VycywKKwkJCQkJICAgICAgb2ZmX3QgY3VycG9zKQogewotCXN0cnVjdCBwYWNrX3dpbmRvdyAqd19jdXJzID0gTlVMTDsKLQl1bnNpZ25lZCBsb25nIHNpemU7Ci0Jb2ZmX3QgY3VycG9zID0gb2JqX29mZnNldDsKLQllbnVtIG9iamVjdF90eXBlIHR5cGU7CiAJb2ZmX3Qgc21hbGxfcG9pX3N0YWNrW1BPSV9TVEFDS19QUkVBTExPQ107CiAJb2ZmX3QgKnBvaV9zdGFjayA9IHNtYWxsX3BvaV9zdGFjazsKIAlpbnQgcG9pX3N0YWNrX25yID0gMCwgcG9pX3N0YWNrX2FsbG9jID0gUE9JX1NUQUNLX1BSRUFMTE9DOwogCi0JdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsICZzaXplKTsKLQotCWlmIChydHlwZSkKLQkJKnJ0eXBlID0gdHlwZTsgLyogcmVwcmVzZW50YXRpb24gdHlwZSAqLwotCi0JaWYgKHNpemVwKSB7Ci0JCWlmICh0eXBlID09IE9CSl9PRlNfREVMVEEgfHwgdHlwZSA9PSBPQkpfUkVGX0RFTFRBKSB7Ci0JCQlvZmZfdCB0bXBfcG9zID0gY3VycG9zOwotCQkJb2ZmX3QgYmFzZV9vZmZzZXQgPSBnZXRfZGVsdGFfYmFzZShwLCAmd19jdXJzLCAmdG1wX3BvcywKLQkJCQkJCQkgICB0eXBlLCBvYmpfb2Zmc2V0KTsKLQkJCWlmICghYmFzZV9vZmZzZXQpIHsKLQkJCQl0eXBlID0gT0JKX0JBRDsKLQkJCQlnb3RvIG91dDsKLQkJCX0KLQkJCSpzaXplcCA9IGdldF9zaXplX2Zyb21fZGVsdGEocCwgJndfY3VycywgdG1wX3Bvcyk7Ci0JCQlpZiAoKnNpemVwID09IDApIHsKLQkJCQl0eXBlID0gT0JKX0JBRDsKLQkJCQlnb3RvIG91dDsKLQkJCX0KLQkJfSBlbHNlIHsKLQkJCSpzaXplcCA9IHNpemU7Ci0JCX0KLQl9Ci0KIAl3aGlsZSAodHlwZSA9PSBPQkpfT0ZTX0RFTFRBIHx8IHR5cGUgPT0gT0JKX1JFRl9ERUxUQSkgewogCQlvZmZfdCBiYXNlX29mZnNldDsKKwkJdW5zaWduZWQgbG9uZyBzaXplOwogCQkvKiBQdXNoIHRoZSBvYmplY3Qgd2UncmUgZ29pbmcgdG8gbGVhdmUgYmVoaW5kICovCiAJCWlmIChwb2lfc3RhY2tfbnIgPj0gcG9pX3N0YWNrX2FsbG9jICYmIHBvaV9zdGFjayA9PSBzbWFsbF9wb2lfc3RhY2spIHsKIAkJCXBvaV9zdGFja19hbGxvYyA9IGFsbG9jX25yKHBvaV9zdGFja19ucik7CkBAIC0xNzQwLDExICsxNzM4LDExIEBACiAJCX0KIAkJcG9pX3N0YWNrW3BvaV9zdGFja19ucisrXSA9IG9ial9vZmZzZXQ7CiAJCS8qIElmIHBhcnNpbmcgdGhlIGJhc2Ugb2Zmc2V0IGZhaWxzLCBqdXN0IHVud2luZCAqLwotCQliYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsICZ3X2N1cnMsICZjdXJwb3MsIHR5cGUsIG9ial9vZmZzZXQpOworCQliYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsIHdfY3VycywgJmN1cnBvcywgdHlwZSwgb2JqX29mZnNldCk7CiAJCWlmICghYmFzZV9vZmZzZXQpCiAJCQlnb3RvIHVud2luZDsKIAkJY3VycG9zID0gb2JqX29mZnNldCA9IGJhc2Vfb2Zmc2V0OwotCQl0eXBlID0gdW5wYWNrX29iamVjdF9oZWFkZXIocCwgJndfY3VycywgJmN1cnBvcywgJnNpemUpOworCQl0eXBlID0gdW5wYWNrX29iamVjdF9oZWFkZXIocCwgd19jdXJzLCAmY3VycG9zLCAmc2l6ZSk7CiAJCWlmICh0eXBlIDw9IE9CSl9OT05FKSB7CiAJCQkvKiBJZiBnZXR0aW5nIHRoZSBiYXNlIGl0c2VsZiBmYWlscywgd2UgZmlyc3QKIAkJCSAqIHJldHJ5IHRoZSBiYXNlLCBvdGhlcndpc2UgdW53aW5kICovCkBAIC0xNzcxLDcgKzE3NjksNiBAQAogb3V0OgogCWlmIChwb2lfc3RhY2sgIT0gc21hbGxfcG9pX3N0YWNrKQogCQlmcmVlKHBvaV9zdGFjayk7Ci0JdW51c2VfcGFjaygmd19jdXJzKTsKIAlyZXR1cm4gdHlwZTsKIAogdW53aW5kOgpAQCAtMTc4NSw2ICsxNzgyLDU3IEBACiAJZ290byBvdXQ7CiB9CiAKK3N0YXRpYyBpbnQgcGFja2VkX29iamVjdF9pbmZvKHN0cnVjdCBwYWNrZWRfZ2l0ICpwLCBvZmZfdCBvYmpfb2Zmc2V0LAorCQkJICAgICAgc3RydWN0IG9iamVjdF9pbmZvICpvaSkKK3sKKwlzdHJ1Y3QgcGFja193aW5kb3cgKndfY3VycyA9IE5VTEw7CisJdW5zaWduZWQgbG9uZyBzaXplOworCW9mZl90IGN1cnBvcyA9IG9ial9vZmZzZXQ7CisJZW51bSBvYmplY3RfdHlwZSB0eXBlOworCisJLyoKKwkgKiBXZSBhbHdheXMgZ2V0IHRoZSByZXByZXNlbnRhdGlvbiB0eXBlLCBidXQgb25seSBjb252ZXJ0IGl0IHRvCisJICogYSAicmVhbCIgdHlwZSBsYXRlciBpZiB0aGUgY2FsbGVyIGlzIGludGVyZXN0ZWQuCisJICovCisJdHlwZSA9IHVucGFja19vYmplY3RfaGVhZGVyKHAsICZ3X2N1cnMsICZjdXJwb3MsICZzaXplKTsKKworCWlmIChvaS0+c2l6ZXApIHsKKwkJaWYgKHR5cGUgPT0gT0JKX09GU19ERUxUQSB8fCB0eXBlID09IE9CSl9SRUZfREVMVEEpIHsKKwkJCW9mZl90IHRtcF9wb3MgPSBjdXJwb3M7CisJCQlvZmZfdCBiYXNlX29mZnNldCA9IGdldF9kZWx0YV9iYXNlKHAsICZ3X2N1cnMsICZ0bXBfcG9zLAorCQkJCQkJCSAgIHR5cGUsIG9ial9vZmZzZXQpOworCQkJaWYgKCFiYXNlX29mZnNldCkgeworCQkJCXR5cGUgPSBPQkpfQkFEOworCQkJCWdvdG8gb3V0OworCQkJfQorCQkJKm9pLT5zaXplcCA9IGdldF9zaXplX2Zyb21fZGVsdGEocCwgJndfY3VycywgdG1wX3Bvcyk7CisJCQlpZiAoKm9pLT5zaXplcCA9PSAwKSB7CisJCQkJdHlwZSA9IE9CSl9CQUQ7CisJCQkJZ290byBvdXQ7CisJCQl9CisJCX0gZWxzZSB7CisJCQkqb2ktPnNpemVwID0gc2l6ZTsKKwkJfQorCX0KKworCWlmIChvaS0+ZGlza19zaXplcCkgeworCQlzdHJ1Y3QgcmV2aW5kZXhfZW50cnkgKnJldmlkeCA9IGZpbmRfcGFja19yZXZpbmRleChwLCBvYmpfb2Zmc2V0KTsKKwkJKm9pLT5kaXNrX3NpemVwID0gcmV2aWR4WzFdLm9mZnNldCAtIG9ial9vZmZzZXQ7CisJfQorCisJaWYgKG9pLT50eXBlcCkgeworCQkqb2ktPnR5cGVwID0gcGFja2VkX3RvX29iamVjdF90eXBlKHAsIG9ial9vZmZzZXQsIHR5cGUsICZ3X2N1cnMsIGN1cnBvcyk7CisJCWlmICgqb2ktPnR5cGVwIDwgMCkgeworCQkJdHlwZSA9IE9CSl9CQUQ7CisJCQlnb3RvIG91dDsKKwkJfQorCX0KKworb3V0OgorCXVudXNlX3BhY2soJndfY3Vycyk7CisJcmV0dXJuIHR5cGU7Cit9CisKIHN0YXRpYyB2b2lkICp1bnBhY2tfY29tcHJlc3NlZF9lbnRyeShzdHJ1Y3QgcGFja2VkX2dpdCAqcCwKIAkJCQkgICAgc3RydWN0IHBhY2tfd2luZG93ICoqd19jdXJzLAogCQkJCSAgICBvZmZfdCBjdXJwb3MsCkBAIC0xOTU2LDEyICsyMDA0LDE5IEBACiB7CiAJc3RhdGljIEZJTEUgKmxvZ19maWxlOwogCisJaWYgKCFsb2dfcGFja19hY2Nlc3MpCisJCWxvZ19wYWNrX2FjY2VzcyA9IGdldGVudigiR0lUX1RSQUNFX1BBQ0tfQUNDRVNTIik7CisJaWYgKCFsb2dfcGFja19hY2Nlc3MpCisJCWxvZ19wYWNrX2FjY2VzcyA9IG5vX2xvZ19wYWNrX2FjY2VzczsKKwlpZiAobG9nX3BhY2tfYWNjZXNzID09IG5vX2xvZ19wYWNrX2FjY2VzcykKKwkJcmV0dXJuOworCiAJaWYgKCFsb2dfZmlsZSkgewogCQlsb2dfZmlsZSA9IGZvcGVuKGxvZ19wYWNrX2FjY2VzcywgInciKTsKIAkJaWYgKCFsb2dfZmlsZSkgewogCQkJZXJyb3IoImNhbm5vdCBvcGVuIHBhY2sgYWNjZXNzIGxvZyAnJXMnIGZvciB3cml0aW5nOiAlcyIsCiAJCQkgICAgICBsb2dfcGFja19hY2Nlc3MsIHN0cmVycm9yKGVycm5vKSk7Ci0JCQlsb2dfcGFja19hY2Nlc3MgPSBOVUxMOworCQkJbG9nX3BhY2tfYWNjZXNzID0gbm9fbG9nX3BhY2tfYWNjZXNzOwogCQkJcmV0dXJuOwogCQl9CiAJfQpAQCAtMTk5Miw3ICsyMDQ3LDcgQEAKIAlpbnQgZGVsdGFfc3RhY2tfbnIgPSAwLCBkZWx0YV9zdGFja19hbGxvYyA9IFVOUEFDS19FTlRSWV9TVEFDS19QUkVBTExPQzsKIAlpbnQgYmFzZV9mcm9tX2NhY2hlID0gMDsKIAotCWlmIChsb2dfcGFja19hY2Nlc3MpCisJaWYgKGxvZ19wYWNrX2FjY2VzcyAhPSBub19sb2dfcGFja19hY2Nlc3MpCiAJCXdyaXRlX3BhY2tfYWNjZXNzX2xvZyhwLCBvYmpfb2Zmc2V0KTsKIAogCS8qIFBIQVNFIDE6IGRyaWxsIGRvd24gdG8gdGhlIGlubmVybW9zdCBiYXNlIG9iamVjdCAqLwpAQCAtMjEzNSw4ICsyMTkwLDE3IEBACiAJCWRhdGEgPSBwYXRjaF9kZWx0YShiYXNlLCBiYXNlX3NpemUsCiAJCQkJICAgZGVsdGFfZGF0YSwgZGVsdGFfc2l6ZSwKIAkJCQkgICAmc2l6ZSk7CisKKwkJLyoKKwkJICogV2UgY291bGQgbm90IGFwcGx5IHRoZSBkZWx0YTsgd2FybiB0aGUgdXNlciwgYnV0IGtlZXAgZ29pbmcuCisJCSAqIE91ciBmYWlsdXJlIHdpbGwgYmUgbm90aWNlZCBlaXRoZXIgaW4gdGhlIG5leHQgaXRlcmF0aW9uIG9mCisJCSAqIHRoZSBsb29wLCBvciBpZiB0aGlzIGlzIHRoZSBmaW5hbCBkZWx0YSwgaW4gdGhlIGNhbGxlciB3aGVuCisJCSAqIHdlIHJldHVybiBOVUxMLiBUaG9zZSBjb2RlIHBhdGhzIHdpbGwgdGFrZSBjYXJlIG9mIG1ha2luZworCQkgKiBhIG1vcmUgZXhwbGljaXQgd2FybmluZyBhbmQgcmV0cnlpbmcgd2l0aCBhbm90aGVyIGNvcHkgb2YKKwkJICogdGhlIG9iamVjdC4KKwkJICovCiAJCWlmICghZGF0YSkKLQkJCWRpZSgiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIik7CisJCQllcnJvcigiZmFpbGVkIHRvIGFwcGx5IGRlbHRhIik7CiAKIAkJZnJlZShkZWx0YV9kYXRhKTsKIAl9CkBAIC0yMzM4LDcgKzI0MDIsOCBAQAogCiB9CiAKLXN0YXRpYyBpbnQgc2hhMV9sb29zZV9vYmplY3RfaW5mbyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLCB1bnNpZ25lZCBsb25nICpzaXplcCkKK3N0YXRpYyBpbnQgc2hhMV9sb29zZV9vYmplY3RfaW5mbyhjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLAorCQkJCSAgc3RydWN0IG9iamVjdF9pbmZvICpvaSkKIHsKIAlpbnQgc3RhdHVzOwogCXVuc2lnbmVkIGxvbmcgbWFwc2l6ZSwgc2l6ZTsKQEAgLTIzNDYsMTkgKzI0MTEsMzcgQEAKIAlnaXRfenN0cmVhbSBzdHJlYW07CiAJY2hhciBoZHJbMzJdOwogCisJLyoKKwkgKiBJZiB3ZSBkb24ndCBjYXJlIGFib3V0IHR5cGUgb3Igc2l6ZSwgdGhlbiB3ZSBkb24ndAorCSAqIG5lZWQgdG8gbG9vayBpbnNpZGUgdGhlIG9iamVjdCBhdCBhbGwuCisJICovCisJaWYgKCFvaS0+dHlwZXAgJiYgIW9pLT5zaXplcCkgeworCQlpZiAob2ktPmRpc2tfc2l6ZXApIHsKKwkJCXN0cnVjdCBzdGF0IHN0OworCQkJaWYgKHN0YXRfc2hhMV9maWxlKHNoYTEsICZzdCkgPCAwKQorCQkJCXJldHVybiAtMTsKKwkJCSpvaS0+ZGlza19zaXplcCA9IHN0LnN0X3NpemU7CisJCX0KKwkJcmV0dXJuIDA7CisJfQorCiAJbWFwID0gbWFwX3NoYTFfZmlsZShzaGExLCAmbWFwc2l6ZSk7CiAJaWYgKCFtYXApCi0JCXJldHVybiBlcnJvcigidW5hYmxlIHRvIGZpbmQgJXMiLCBzaGExX3RvX2hleChzaGExKSk7CisJCXJldHVybiAtMTsKKwlpZiAob2ktPmRpc2tfc2l6ZXApCisJCSpvaS0+ZGlza19zaXplcCA9IG1hcHNpemU7CiAJaWYgKHVucGFja19zaGExX2hlYWRlcigmc3RyZWFtLCBtYXAsIG1hcHNpemUsIGhkciwgc2l6ZW9mKGhkcikpIDwgMCkKIAkJc3RhdHVzID0gZXJyb3IoInVuYWJsZSB0byB1bnBhY2sgJXMgaGVhZGVyIiwKIAkJCSAgICAgICBzaGExX3RvX2hleChzaGExKSk7CiAJZWxzZSBpZiAoKHN0YXR1cyA9IHBhcnNlX3NoYTFfaGVhZGVyKGhkciwgJnNpemUpKSA8IDApCiAJCXN0YXR1cyA9IGVycm9yKCJ1bmFibGUgdG8gcGFyc2UgJXMgaGVhZGVyIiwgc2hhMV90b19oZXgoc2hhMSkpOwotCWVsc2UgaWYgKHNpemVwKQotCQkqc2l6ZXAgPSBzaXplOworCWVsc2UgaWYgKG9pLT5zaXplcCkKKwkJKm9pLT5zaXplcCA9IHNpemU7CiAJZ2l0X2luZmxhdGVfZW5kKCZzdHJlYW0pOwogCW11bm1hcChtYXAsIG1hcHNpemUpOwotCXJldHVybiBzdGF0dXM7CisJaWYgKG9pLT50eXBlcCkKKwkJKm9pLT50eXBlcCA9IHN0YXR1czsKKwlyZXR1cm4gMDsKIH0KIAogLyogcmV0dXJucyBlbnVtIG9iamVjdF90eXBlIG9yIG5lZ2F0aXZlICovCkBAIC0yMzY2LDM0ICsyNDQ5LDM3IEBACiB7CiAJc3RydWN0IGNhY2hlZF9vYmplY3QgKmNvOwogCXN0cnVjdCBwYWNrX2VudHJ5IGU7Ci0JaW50IHN0YXR1cywgcnR5cGU7CisJaW50IHJ0eXBlOwogCiAJY28gPSBmaW5kX2NhY2hlZF9vYmplY3Qoc2hhMSk7CiAJaWYgKGNvKSB7CisJCWlmIChvaS0+dHlwZXApCisJCQkqKG9pLT50eXBlcCkgPSBjby0+dHlwZTsKIAkJaWYgKG9pLT5zaXplcCkKIAkJCSoob2ktPnNpemVwKSA9IGNvLT5zaXplOworCQlpZiAob2ktPmRpc2tfc2l6ZXApCisJCQkqKG9pLT5kaXNrX3NpemVwKSA9IDA7CiAJCW9pLT53aGVuY2UgPSBPSV9DQUNIRUQ7Ci0JCXJldHVybiBjby0+dHlwZTsKKwkJcmV0dXJuIDA7CiAJfQogCiAJaWYgKCFmaW5kX3BhY2tfZW50cnkoc2hhMSwgJmUpKSB7CiAJCS8qIE1vc3QgbGlrZWx5IGl0J3MgYSBsb29zZSBvYmplY3QuICovCi0JCXN0YXR1cyA9IHNoYTFfbG9vc2Vfb2JqZWN0X2luZm8oc2hhMSwgb2ktPnNpemVwKTsKLQkJaWYgKHN0YXR1cyA+PSAwKSB7CisJCWlmICghc2hhMV9sb29zZV9vYmplY3RfaW5mbyhzaGExLCBvaSkpIHsKIAkJCW9pLT53aGVuY2UgPSBPSV9MT09TRTsKLQkJCXJldHVybiBzdGF0dXM7CisJCQlyZXR1cm4gMDsKIAkJfQogCiAJCS8qIE5vdCBhIGxvb3NlIG9iamVjdDsgc29tZW9uZSBlbHNlIG1heSBoYXZlIGp1c3QgcGFja2VkIGl0LiAqLwogCQlyZXByZXBhcmVfcGFja2VkX2dpdCgpOwogCQlpZiAoIWZpbmRfcGFja19lbnRyeShzaGExLCAmZSkpCi0JCQlyZXR1cm4gc3RhdHVzOworCQkJcmV0dXJuIC0xOwogCX0KIAotCXN0YXR1cyA9IHBhY2tlZF9vYmplY3RfaW5mbyhlLnAsIGUub2Zmc2V0LCBvaS0+c2l6ZXAsICZydHlwZSk7Ci0JaWYgKHN0YXR1cyA8IDApIHsKKwlydHlwZSA9IHBhY2tlZF9vYmplY3RfaW5mbyhlLnAsIGUub2Zmc2V0LCBvaSk7CisJaWYgKHJ0eXBlIDwgMCkgewogCQltYXJrX2JhZF9wYWNrZWRfb2JqZWN0KGUucCwgc2hhMSk7Ci0JCXN0YXR1cyA9IHNoYTFfb2JqZWN0X2luZm9fZXh0ZW5kZWQoc2hhMSwgb2kpOworCQlyZXR1cm4gc2hhMV9vYmplY3RfaW5mb19leHRlbmRlZChzaGExLCBvaSk7CiAJfSBlbHNlIGlmIChpbl9kZWx0YV9iYXNlX2NhY2hlKGUucCwgZS5vZmZzZXQpKSB7CiAJCW9pLT53aGVuY2UgPSBPSV9EQkNBQ0hFRDsKIAl9IGVsc2UgewpAQCAtMjQwNCwxNSArMjQ5MCwxOSBAQAogCQkJCQkgcnR5cGUgPT0gT0JKX09GU19ERUxUQSk7CiAJfQogCi0JcmV0dXJuIHN0YXR1czsKKwlyZXR1cm4gMDsKIH0KIAogaW50IHNoYTFfb2JqZWN0X2luZm8oY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSwgdW5zaWduZWQgbG9uZyAqc2l6ZXApCiB7Ci0Jc3RydWN0IG9iamVjdF9pbmZvIG9pOworCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKKwlzdHJ1Y3Qgb2JqZWN0X2luZm8gb2kgPSB7TlVMTH07CiAKKwlvaS50eXBlcCA9ICZ0eXBlOwogCW9pLnNpemVwID0gc2l6ZXA7Ci0JcmV0dXJuIHNoYTFfb2JqZWN0X2luZm9fZXh0ZW5kZWQoc2hhMSwgJm9pKTsKKwlpZiAoc2hhMV9vYmplY3RfaW5mb19leHRlbmRlZChzaGExLCAmb2kpIDwgMCkKKwkJcmV0dXJuIC0xOworCXJldHVybiB0eXBlOwogfQogCiBzdGF0aWMgdm9pZCAqcmVhZF9wYWNrZWRfc2hhMShjb25zdCB1bnNpZ25lZCBjaGFyICpzaGExLApkaWZmIC0tZ2l0IGEvc2hhMV9uYW1lLmMgYi9zaGExX25hbWUuYwppbmRleCAwMDc3ZGJkLi44NTJkZDk1IDEwMDY0NAotLS0gYS9zaGExX25hbWUuYworKysgYi9zaGExX25hbWUuYwpAQCAtNTIsNyArNTIsNyBAQAogCX0KIAogCWlmICghZHMtPmNhbmRpZGF0ZV9vaykgewotCQkvKiBkaXNjYXJkIHRoZSBjYW5kaWRhdGU7IHdlIGtub3cgaXQgZG9lcyBub3Qgc2F0aXNpZnkgZm4gKi8KKwkJLyogZGlzY2FyZCB0aGUgY2FuZGlkYXRlOyB3ZSBrbm93IGl0IGRvZXMgbm90IHNhdGlzZnkgZm4gKi8KIAkJaGFzaGNweShkcy0+Y2FuZGlkYXRlLCBjdXJyZW50KTsKIAkJZHMtPmNhbmRpZGF0ZV9jaGVja2VkID0gMDsKIAkJcmV0dXJuOwpAQCAtNDMxLDIyICs0MzEsNTEgQEAKIH0KIAogc3RhdGljIGludCBnZXRfc2hhMV8xKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEsIHVuc2lnbmVkIGxvb2t1cF9mbGFncyk7CitzdGF0aWMgaW50IGludGVycHJldF9udGhfcHJpb3JfY2hlY2tvdXQoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN0cmJ1ZiAqYnVmKTsKIAogc3RhdGljIGludCBnZXRfc2hhMV9iYXNpYyhjb25zdCBjaGFyICpzdHIsIGludCBsZW4sIHVuc2lnbmVkIGNoYXIgKnNoYTEpCiB7CiAJc3RhdGljIGNvbnN0IGNoYXIgKndhcm5fbXNnID0gInJlZm5hbWUgJyUuKnMnIGlzIGFtYmlndW91cy4iOworCXN0YXRpYyBjb25zdCBjaGFyICpvYmplY3RfbmFtZV9tc2cgPSBOXygKKwkiR2l0IG5vcm1hbGx5IG5ldmVyIGNyZWF0ZXMgYSByZWYgdGhhdCBlbmRzIHdpdGggNDAgaGV4IGNoYXJhY3RlcnNcbiIKKwkiYmVjYXVzZSBpdCB3aWxsIGJlIGlnbm9yZWQgd2hlbiB5b3UganVzdCBzcGVjaWZ5IDQwLWhleC4gVGhlc2UgcmVmc1xuIgorCSJtYXkgYmUgY3JlYXRlZCBieSBtaXN0YWtlLiBGb3IgZXhhbXBsZSxcbiIKKwkiXG4iCisJIiAgZ2l0IGNoZWNrb3V0IC1iICRiciAkKGdpdCByZXYtcGFyc2UgLi4uKVxuIgorCSJcbiIKKwkid2hlcmUgXCIkYnJcIiBpcyBzb21laG93IGVtcHR5IGFuZCBhIDQwLWhleCByZWYgaXMgY3JlYXRlZC4gUGxlYXNlXG4iCisJImV4YW1pbmUgdGhlc2UgcmVmcyBhbmQgbWF5YmUgZGVsZXRlIHRoZW0uIFR1cm4gdGhpcyBtZXNzYWdlIG9mZiBieVxuIgorCSJydW5uaW5nIFwiZ2l0IGNvbmZpZyBhZHZpY2Uub2JqZWN0TmFtZVdhcm5pbmcgZmFsc2VcIiIpOworCXVuc2lnbmVkIGNoYXIgdG1wX3NoYTFbMjBdOwogCWNoYXIgKnJlYWxfcmVmID0gTlVMTDsKIAlpbnQgcmVmc19mb3VuZCA9IDA7Ci0JaW50IGF0LCByZWZsb2dfbGVuOworCWludCBhdCwgcmVmbG9nX2xlbiwgbnRoX3ByaW9yID0gMDsKIAotCWlmIChsZW4gPT0gNDAgJiYgIWdldF9zaGExX2hleChzdHIsIHNoYTEpKQorCWlmIChsZW4gPT0gNDAgJiYgIWdldF9zaGExX2hleChzdHIsIHNoYTEpKSB7CisJCWlmICh3YXJuX29uX29iamVjdF9yZWZuYW1lX2FtYmlndWl0eSkgeworCQkJcmVmc19mb3VuZCA9IGR3aW1fcmVmKHN0ciwgbGVuLCB0bXBfc2hhMSwgJnJlYWxfcmVmKTsKKwkJCWlmIChyZWZzX2ZvdW5kID4gMCAmJiB3YXJuX2FtYmlndW91c19yZWZzKSB7CisJCQkJd2FybmluZyh3YXJuX21zZywgbGVuLCBzdHIpOworCQkJCWlmIChhZHZpY2Vfb2JqZWN0X25hbWVfd2FybmluZykKKwkJCQkJZnByaW50ZihzdGRlcnIsICIlc1xuIiwgXyhvYmplY3RfbmFtZV9tc2cpKTsKKwkJCX0KKwkJCWZyZWUocmVhbF9yZWYpOworCQl9CiAJCXJldHVybiAwOworCX0KIAogCS8qIGJhc2ljQHt0aW1lIG9yIG51bWJlciBvciAtbnVtYmVyfSBmb3JtYXQgdG8gcXVlcnkgcmVmLWxvZyAqLwogCXJlZmxvZ19sZW4gPSBhdCA9IDA7CiAJaWYgKGxlbiAmJiBzdHJbbGVuLTFdID09ICd9JykgewotCQlmb3IgKGF0ID0gbGVuLTI7IGF0ID49IDA7IGF0LS0pIHsKKwkJZm9yIChhdCA9IGxlbi00OyBhdCA+PSAwOyBhdC0tKSB7CiAJCQlpZiAoc3RyW2F0XSA9PSAnQCcgJiYgc3RyW2F0KzFdID09ICd7JykgeworCQkJCWlmIChzdHJbYXQrMl0gPT0gJy0nKSB7CisJCQkJCWlmIChhdCAhPSAwKQorCQkJCQkJLyogQHstTn0gbm90IGF0IHN0YXJ0ICovCisJCQkJCQlyZXR1cm4gLTE7CisJCQkJCW50aF9wcmlvciA9IDE7CisJCQkJCWNvbnRpbnVlOworCQkJCX0KIAkJCQlpZiAoIXVwc3RyZWFtX21hcmsoc3RyICsgYXQsIGxlbiAtIGF0KSkgewogCQkJCQlyZWZsb2dfbGVuID0gKGxlbi0xKSAtIChhdCsyKTsKIAkJCQkJbGVuID0gYXQ7CkBAIC00NjAsMjAgKzQ4OSwyMiBAQAogCWlmIChsZW4gJiYgYW1iaWd1b3VzX3BhdGgoc3RyLCBsZW4pKQogCQlyZXR1cm4gLTE7CiAKLQlpZiAoIWxlbiAmJiByZWZsb2dfbGVuKSB7CisJaWYgKG50aF9wcmlvcikgewogCQlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwotCQlpbnQgcmV0OwotCQkvKiB0cnkgdGhlIEB7LU59IHN5bnRheCBmb3Igbi10aCBjaGVja291dCAqLwotCQlyZXQgPSBpbnRlcnByZXRfYnJhbmNoX25hbWUoc3RyK2F0LCAmYnVmKTsKLQkJaWYgKHJldCA+IDApIHsKLQkJCS8qIHN1YnN0aXR1dGUgdGhpcyBicmFuY2ggbmFtZSBhbmQgcmVzdGFydCAqLwotCQkJcmV0dXJuIGdldF9zaGExXzEoYnVmLmJ1ZiwgYnVmLmxlbiwgc2hhMSwgMCk7Ci0JCX0gZWxzZSBpZiAocmV0ID09IDApIHsKLQkJCXJldHVybiAtMTsKKwkJaW50IGRldGFjaGVkOworCisJCWlmIChpbnRlcnByZXRfbnRoX3ByaW9yX2NoZWNrb3V0KHN0ciwgJmJ1ZikgPiAwKSB7CisJCQlkZXRhY2hlZCA9IChidWYubGVuID09IDQwICYmICFnZXRfc2hhMV9oZXgoYnVmLmJ1Ziwgc2hhMSkpOworCQkJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CisJCQlpZiAoZGV0YWNoZWQpCisJCQkJcmV0dXJuIDA7CiAJCX0KKwl9CisKKwlpZiAoIWxlbiAmJiByZWZsb2dfbGVuKQogCQkvKiBhbGxvdyAiQHsuLi59IiB0byBtZWFuIHRoZSBjdXJyZW50IGJyYW5jaCByZWZsb2cgKi8KIAkJcmVmc19mb3VuZCA9IGR3aW1fcmVmKCJIRUFEIiwgNCwgc2hhMSwgJnJlYWxfcmVmKTsKLQl9IGVsc2UgaWYgKHJlZmxvZ19sZW4pCisJZWxzZSBpZiAocmVmbG9nX2xlbikKIAkJcmVmc19mb3VuZCA9IGR3aW1fbG9nKHN0ciwgbGVuLCBzaGExLCAmcmVhbF9yZWYpOwogCWVsc2UKIAkJcmVmc19mb3VuZCA9IGR3aW1fcmVmKHN0ciwgbGVuLCBzaGExLCAmcmVhbF9yZWYpOwpAQCAtNDgxLDcgKzUxMiw5IEBACiAJaWYgKCFyZWZzX2ZvdW5kKQogCQlyZXR1cm4gLTE7CiAKLQlpZiAod2Fybl9hbWJpZ3VvdXNfcmVmcyAmJiByZWZzX2ZvdW5kID4gMSkKKwlpZiAod2Fybl9hbWJpZ3VvdXNfcmVmcyAmJgorCSAgICAocmVmc19mb3VuZCA+IDEgfHwKKwkgICAgICFnZXRfc2hvcnRfc2hhMShzdHIsIGxlbiwgdG1wX3NoYTEsIEdFVF9TSEExX1FVSUVUTFkpKSkKIAkJd2FybmluZyh3YXJuX21zZywgbGVuLCBzdHIpOwogCiAJaWYgKHJlZmxvZ19sZW4pIHsKQEAgLTQ5MCwxMCArNTIzLDYgQEAKIAkJdW5zaWduZWQgbG9uZyBjb190aW1lOwogCQlpbnQgY29fdHosIGNvX2NudDsKIAotCQkvKiBhIEB7LU59IHBsYWNlZCBhbnl3aGVyZSBleGNlcHQgdGhlIHN0YXJ0IGlzIGFuIGVycm9yICovCi0JCWlmIChzdHJbYXQrMl0gPT0gJy0nKQotCQkJcmV0dXJuIC0xOwotCiAJCS8qIElzIGl0IGFza2luZyBmb3IgTi10aCBlbnRyeSwgb3IgYXBwcm94aWRhdGU/ICovCiAJCWZvciAoaSA9IG50aCA9IDA7IDAgPD0gbnRoICYmIGkgPCByZWZsb2dfbGVuOyBpKyspIHsKIAkJCWNoYXIgY2ggPSBzdHJbYXQrMitpXTsKQEAgLTk3NSw2ICsxMDA0LDM4IEBACiAJcmV0dXJuIHN0OwogfQogCisvKiBwYXJzZSBAc29tZXRoaW5nIHN5bnRheCwgd2hlbiAnc29tZXRoaW5nJyBpcyBub3Qgey4qfSAqLworc3RhdGljIGludCBpbnRlcnByZXRfZW1wdHlfYXQoY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVsZW4sIGludCBsZW4sIHN0cnVjdCBzdHJidWYgKmJ1ZikKK3sKKwlpZiAobGVuIHx8IG5hbWVbMV0gPT0gJ3snKQorCQlyZXR1cm4gLTE7CisKKwlzdHJidWZfcmVzZXQoYnVmKTsKKwlzdHJidWZfYWRkKGJ1ZiwgIkhFQUQiLCA0KTsKKwlyZXR1cm4gMTsKK30KKworc3RhdGljIGludCByZWludGVycHJldChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZWxlbiwgaW50IGxlbiwgc3RydWN0IHN0cmJ1ZiAqYnVmKQoreworCS8qIHdlIGhhdmUgZXh0cmEgZGF0YSwgd2hpY2ggbWlnaHQgbmVlZCBmdXJ0aGVyIHByb2Nlc3NpbmcgKi8KKwlzdHJ1Y3Qgc3RyYnVmIHRtcCA9IFNUUkJVRl9JTklUOworCWludCB1c2VkID0gYnVmLT5sZW47CisJaW50IHJldDsKKworCXN0cmJ1Zl9hZGQoYnVmLCBuYW1lICsgbGVuLCBuYW1lbGVuIC0gbGVuKTsKKwlyZXQgPSBpbnRlcnByZXRfYnJhbmNoX25hbWUoYnVmLT5idWYsICZ0bXApOworCS8qIHRoYXQgZGF0YSB3YXMgbm90IGludGVycHJldGVkLCByZW1vdmUgb3VyIGNydWZ0ICovCisJaWYgKHJldCA8IDApIHsKKwkJc3RyYnVmX3NldGxlbihidWYsIHVzZWQpOworCQlyZXR1cm4gbGVuOworCX0KKwlzdHJidWZfcmVzZXQoYnVmKTsKKwlzdHJidWZfYWRkYnVmKGJ1ZiwgJnRtcCk7CisJc3RyYnVmX3JlbGVhc2UoJnRtcCk7CisJLyogdHdlYWsgZm9yIHNpemUgb2Ygey1OfSB2ZXJzdXMgZXhwYW5kZWQgcmVmIG5hbWUgKi8KKwlyZXR1cm4gcmV0IC0gdXNlZCArIGxlbjsKK30KKwogLyoKICAqIFRoaXMgcmVhZHMgc2hvcnQtaGFuZCBzeW50YXggdGhhdCBub3Qgb25seSBldmFsdWF0ZXMgdG8gYSBjb21taXQKICAqIG9iamVjdCBuYW1lLCBidXQgYWxzbyBjYW4gYWN0IGFzIGlmIHRoZSBlbmQgdXNlciBzcGVsbGVkIHRoZSBuYW1lCkBAIC0xMDA0LDM2ICsxMDY1LDI3IEBACiAJaW50IGxlbiA9IGludGVycHJldF9udGhfcHJpb3JfY2hlY2tvdXQobmFtZSwgYnVmKTsKIAlpbnQgdG1wX2xlbjsKIAotCWlmICghbGVuKQorCWlmICghbGVuKSB7CiAJCXJldHVybiBsZW47IC8qIHN5bnRheCBPaywgbm90IGVub3VnaCBzd2l0Y2hlcyAqLwotCWlmICgwIDwgbGVuICYmIGxlbiA9PSBuYW1lbGVuKQotCQlyZXR1cm4gbGVuOyAvKiBjb25zdW1lZCBhbGwgKi8KLQllbHNlIGlmICgwIDwgbGVuKSB7Ci0JCS8qIHdlIGhhdmUgZXh0cmEgZGF0YSwgd2hpY2ggbWlnaHQgbmVlZCBmdXJ0aGVyIHByb2Nlc3NpbmcgKi8KLQkJc3RydWN0IHN0cmJ1ZiB0bXAgPSBTVFJCVUZfSU5JVDsKLQkJaW50IHVzZWQgPSBidWYtPmxlbjsKLQkJaW50IHJldDsKLQotCQlzdHJidWZfYWRkKGJ1ZiwgbmFtZSArIGxlbiwgbmFtZWxlbiAtIGxlbik7Ci0JCXJldCA9IGludGVycHJldF9icmFuY2hfbmFtZShidWYtPmJ1ZiwgJnRtcCk7Ci0JCS8qIHRoYXQgZGF0YSB3YXMgbm90IGludGVycHJldGVkLCByZW1vdmUgb3VyIGNydWZ0ICovCi0JCWlmIChyZXQgPCAwKSB7Ci0JCQlzdHJidWZfc2V0bGVuKGJ1ZiwgdXNlZCk7Ci0JCQlyZXR1cm4gbGVuOwotCQl9Ci0JCXN0cmJ1Zl9yZXNldChidWYpOwotCQlzdHJidWZfYWRkYnVmKGJ1ZiwgJnRtcCk7Ci0JCXN0cmJ1Zl9yZWxlYXNlKCZ0bXApOwotCQkvKiB0d2VhayBmb3Igc2l6ZSBvZiB7LU59IHZlcnN1cyBleHBhbmRlZCByZWYgbmFtZSAqLwotCQlyZXR1cm4gcmV0IC0gdXNlZCArIGxlbjsKKwl9IGVsc2UgaWYgKGxlbiA+IDApIHsKKwkJaWYgKGxlbiA9PSBuYW1lbGVuKQorCQkJcmV0dXJuIGxlbjsgLyogY29uc3VtZWQgYWxsICovCisJCWVsc2UKKwkJCXJldHVybiByZWludGVycHJldChuYW1lLCBuYW1lbGVuLCBsZW4sIGJ1Zik7CiAJfQogCiAJY3AgPSBzdHJjaHIobmFtZSwgJ0AnKTsKIAlpZiAoIWNwKQogCQlyZXR1cm4gLTE7CisKKwlsZW4gPSBpbnRlcnByZXRfZW1wdHlfYXQobmFtZSwgbmFtZWxlbiwgY3AgLSBuYW1lLCBidWYpOworCWlmIChsZW4gPiAwKQorCQlyZXR1cm4gcmVpbnRlcnByZXQobmFtZSwgbmFtZWxlbiwgbGVuLCBidWYpOworCiAJdG1wX2xlbiA9IHVwc3RyZWFtX21hcmsoY3AsIG5hbWVsZW4gLSAoY3AgLSBuYW1lKSk7CiAJaWYgKCF0bXBfbGVuKQogCQlyZXR1cm4gLTE7CisKIAlsZW4gPSBjcCArIHRtcF9sZW4gLSBuYW1lOwogCWNwID0geHN0cm5kdXAobmFtZSwgY3AgLSBuYW1lKTsKIAl1cHN0cmVhbSA9IGJyYW5jaF9nZXQoKmNwID8gY3AgOiBOVUxMKTsKQEAgLTExODQsNyArMTIzNiw3IEBACiAJCQkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogCXN0cnVjdCBzdGF0IHN0OwotCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAlpbnQgcG9zOwogCXVuc2lnbmVkIG5hbWVsZW4gPSBzdHJsZW4oZmlsZW5hbWUpOwogCXVuc2lnbmVkIGZ1bGxuYW1lbGVuOwpAQCAtMTI3OCw3ICsxMzMwLDcgQEAKIAkgKi8KIAlpZiAobmFtZVswXSA9PSAnOicpIHsKIAkJaW50IHN0YWdlID0gMDsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAkJY2hhciAqbmV3X3BhdGggPSBOVUxMOwogCQlpbnQgcG9zOwogCQlpZiAoIW9ubHlfdG9fZGllICYmIG5hbWVsZW4gPiAyICYmIG5hbWVbMV0gPT0gJy8nKSB7CmRpZmYgLS1naXQgYS9zaGFsbG93LmMgYi9zaGFsbG93LmMKaW5kZXggY2JlMjUyNi4uOGE5Yzk2ZCAxMDA2NDQKLS0tIGEvc2hhbGxvdy5jCisrKyBiL3NoYWxsb3cuYwpAQCAtMTEwLDE3ICsxMTAsMTIgQEAKIAkJCQkJY29udGludWU7CiAJCQkJKnBvaW50ZXIgPSBjdXJfZGVwdGg7CiAJCQl9Ci0JCQlpZiAoY3VyX2RlcHRoIDwgZGVwdGgpIHsKLQkJCQlpZiAocC0+bmV4dCkKLQkJCQkJYWRkX29iamVjdF9hcnJheSgmcC0+aXRlbS0+b2JqZWN0LAotCQkJCQkJCU5VTEwsICZzdGFjayk7Ci0JCQkJZWxzZSB7Ci0JCQkJCWNvbW1pdCA9IHAtPml0ZW07Ci0JCQkJCWN1cl9kZXB0aCA9ICooaW50ICopY29tbWl0LT51dGlsOwotCQkJCX0KLQkJCX0gZWxzZSB7Ci0JCQkJY29tbWl0X2xpc3RfaW5zZXJ0KHAtPml0ZW0sICZyZXN1bHQpOwotCQkJCXAtPml0ZW0tPm9iamVjdC5mbGFncyB8PSBzaGFsbG93X2ZsYWc7CisJCQlpZiAocC0+bmV4dCkKKwkJCQlhZGRfb2JqZWN0X2FycmF5KCZwLT5pdGVtLT5vYmplY3QsCisJCQkJCQlOVUxMLCAmc3RhY2spOworCQkJZWxzZSB7CisJCQkJY29tbWl0ID0gcC0+aXRlbTsKKwkJCQljdXJfZGVwdGggPSAqKGludCAqKWNvbW1pdC0+dXRpbDsKIAkJCX0KIAkJfQogCX0KZGlmZiAtLWdpdCBhL3NoZWxsLmMgYi9zaGVsbC5jCmluZGV4IDE0Mjk4NzAuLjY2MzUwYjIgMTAwNjQ0Ci0tLSBhL3NoZWxsLmMKKysrIGIvc2hlbGwuYwpAQCAtMTQ3LDcgKzE0Nyw2IEBACiAJY2hhciAqcHJvZzsKIAljb25zdCBjaGFyICoqdXNlcl9hcmd2OwogCXN0cnVjdCBjb21tYW5kcyAqY21kOwotCWludCBkZXZudWxsX2ZkOwogCWludCBjb3VudDsKIAogCWdpdF9zZXR1cF9nZXR0ZXh0KCk7CkBAIC0xNTYsMTUgKzE1NSwxMCBAQAogCiAJLyoKIAkgKiBBbHdheXMgb3BlbiBmaWxlIGRlc2NyaXB0b3JzIDAvMS8yIHRvIGF2b2lkIGNsb2JiZXJpbmcgZmlsZXMKLQkgKiBpbiBkaWUoKS4gIEl0IGFsc28gYXZvaWRzIG5vdCBtZXNzaW5nIHVwIHdoZW4gdGhlIHBpcGVzIGFyZQotCSAqIGR1cCdlZCBvbnRvIHN0ZGluL3N0ZG91dC9zdGRlcnIgaW4gdGhlIGNoaWxkIHByb2Nlc3NlcyB3ZSBzcGF3bi4KKwkgKiBpbiBkaWUoKS4gIEl0IGFsc28gYXZvaWRzIG1lc3NpbmcgdXAgd2hlbiB0aGUgcGlwZXMgYXJlIGR1cCdlZAorCSAqIG9udG8gc3RkaW4vc3Rkb3V0L3N0ZGVyciBpbiB0aGUgY2hpbGQgcHJvY2Vzc2VzIHdlIHNwYXduLgogCSAqLwotCWRldm51bGxfZmQgPSBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpOwotCXdoaWxlIChkZXZudWxsX2ZkID49IDAgJiYgZGV2bnVsbF9mZCA8PSAyKQotCQlkZXZudWxsX2ZkID0gZHVwKGRldm51bGxfZmQpOwotCWlmIChkZXZudWxsX2ZkID09IC0xKQotCQlkaWVfZXJybm8oIm9wZW5pbmcgL2Rldi9udWxsIGZhaWxlZCIpOwotCWNsb3NlIChkZXZudWxsX2ZkKTsKKwlzYW5pdGl6ZV9zdGRmZHMoKTsKIAogCS8qCiAJICogU3BlY2lhbCBoYWNrIHRvIHByZXRlbmQgdG8gYmUgYSBDVlMgc2VydmVyCmRpZmYgLS1naXQgYS9zdHJlYW1pbmcuYyBiL3N0cmVhbWluZy5jCmluZGV4IGNhYmNkOWQuLmRlYmU5MDQgMTAwNjQ0Ci0tLSBhL3N0cmVhbWluZy5jCisrKyBiL3N0cmVhbWluZy5jCkBAIC0xMTEsMTEgKzExMSwxMSBAQAogCXVuc2lnbmVkIGxvbmcgc2l6ZTsKIAlpbnQgc3RhdHVzOwogCisJb2ktPnR5cGVwID0gdHlwZTsKIAlvaS0+c2l6ZXAgPSAmc2l6ZTsKIAlzdGF0dXMgPSBzaGExX29iamVjdF9pbmZvX2V4dGVuZGVkKHNoYTEsIG9pKTsKIAlpZiAoc3RhdHVzIDwgMCkKIAkJcmV0dXJuIHN0cmVhbV9lcnJvcjsKLQkqdHlwZSA9IHN0YXR1czsKIAogCXN3aXRjaCAob2ktPndoZW5jZSkgewogCWNhc2UgT0lfTE9PU0U6CkBAIC0xMzUsNyArMTM1LDcgQEAKIAkJCQkgc3RydWN0IHN0cmVhbV9maWx0ZXIgKmZpbHRlcikKIHsKIAlzdHJ1Y3QgZ2l0X2lzdHJlYW0gKnN0OwotCXN0cnVjdCBvYmplY3RfaW5mbyBvaTsKKwlzdHJ1Y3Qgb2JqZWN0X2luZm8gb2kgPSB7TlVMTH07CiAJY29uc3QgdW5zaWduZWQgY2hhciAqcmVhbCA9IGxvb2t1cF9yZXBsYWNlX29iamVjdChzaGExKTsKIAllbnVtIGlucHV0X3NvdXJjZSBzcmMgPSBpc3RyZWFtX3NvdXJjZShyZWFsLCB0eXBlLCAmb2kpOwogCkBAIC0xNDksNyArMTQ5LDcgQEAKIAkJCXJldHVybiBOVUxMOwogCQl9CiAJfQotCWlmIChzdCAmJiBmaWx0ZXIpIHsKKwlpZiAoZmlsdGVyKSB7CiAJCS8qIEFkZCAiJiYgIWlzX251bGxfc3RyZWFtX2ZpbHRlcihmaWx0ZXIpIiBmb3IgcGVyZm9ybWFuY2UgKi8KIAkJc3RydWN0IGdpdF9pc3RyZWFtICpuc3QgPSBhdHRhY2hfc3RyZWFtX2ZpbHRlcihzdCwgZmlsdGVyKTsKIAkJaWYgKCFuc3QpCmRpZmYgLS1naXQgYS9zdWJtb2R1bGUuYyBiL3N1Ym1vZHVsZS5jCmluZGV4IDE4MjFhNWIuLjNmMGEzZjkgMTAwNjQ0Ci0tLSBhL3N1Ym1vZHVsZS5jCisrKyBiL3N1Ym1vZHVsZS5jCkBAIC0yMjYsNiArMjI2LDcgQEAKIAl3aGlsZSAoKGNvbW1pdCA9IGdldF9yZXZpc2lvbihyZXYpKSkgewogCQlzdHJ1Y3QgcHJldHR5X3ByaW50X2NvbnRleHQgY3R4ID0gezB9OwogCQljdHguZGF0ZV9tb2RlID0gcmV2LT5kYXRlX21vZGU7CisJCWN0eC5vdXRwdXRfZW5jb2RpbmcgPSBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpOwogCQlzdHJidWZfc2V0bGVuKCZzYiwgMCk7CiAJCXN0cmJ1Zl9hZGRzdHIoJnNiLCBsaW5lX3ByZWZpeCk7CiAJCWlmIChjb21taXQtPm9iamVjdC5mbGFncyAmIFNZTU1FVFJJQ19MRUZUKSB7CkBAIC02MjMsNyArNjI0LDcgQEAKIAkJc3RydWN0IHN0cmJ1ZiBzdWJtb2R1bGVfcGF0aCA9IFNUUkJVRl9JTklUOwogCQlzdHJ1Y3Qgc3RyYnVmIHN1Ym1vZHVsZV9naXRfZGlyID0gU1RSQlVGX0lOSVQ7CiAJCXN0cnVjdCBzdHJidWYgc3VibW9kdWxlX3ByZWZpeCA9IFNUUkJVRl9JTklUOwotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQljb25zdCBjaGFyICpnaXRfZGlyLCAqbmFtZSwgKmRlZmF1bHRfYXJndjsKIAogCQlpZiAoIVNfSVNHSVRMSU5LKGNlLT5jZV9tb2RlKSkKQEAgLTg0NSw3ICs4NDYsNyBAQAogCQlzdHJ1Y3QgY29tbWl0ICphLCBzdHJ1Y3QgY29tbWl0ICpiKQogewogCWludCBpLCBqOwotCXN0cnVjdCBvYmplY3RfYXJyYXkgbWVyZ2VzOworCXN0cnVjdCBvYmplY3RfYXJyYXkgbWVyZ2VzID0gT0JKRUNUX0FSUkFZX0lOSVQ7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCWludCBjb250YWluc19hbm90aGVyOwogCkBAIC04NTUsNyArODU2LDYgQEAKIAlzdHJ1Y3QgcmV2X2luZm8gcmV2czsKIAlzdHJ1Y3Qgc2V0dXBfcmV2aXNpb25fb3B0IHJldl9vcHRzOwogCi0JbWVtc2V0KCZtZXJnZXMsIDAsIHNpemVvZihtZXJnZXMpKTsKIAltZW1zZXQocmVzdWx0LCAwLCBzaXplb2Yoc3RydWN0IG9iamVjdF9hcnJheSkpOwogCW1lbXNldCgmcmV2X29wdHMsIDAsIHNpemVvZihyZXZfb3B0cykpOwogCkBAIC04OTMsOCArODkzLDcgQEAKIAkJfQogCiAJCWlmICghY29udGFpbnNfYW5vdGhlcikKLQkJCWFkZF9vYmplY3RfYXJyYXkobWVyZ2VzLm9iamVjdHNbaV0uaXRlbSwKLQkJCQkJIG1lcmdlcy5vYmplY3RzW2ldLm5hbWUsIHJlc3VsdCk7CisJCQlhZGRfb2JqZWN0X2FycmF5KG1lcmdlcy5vYmplY3RzW2ldLml0ZW0sIE5VTEwsIHJlc3VsdCk7CiAJfQogCiAJZnJlZShtZXJnZXMub2JqZWN0cyk7CmRpZmYgLS1naXQgYS90L01ha2VmaWxlIGIvdC9NYWtlZmlsZQppbmRleCA0NGNhN2QzLi4yMzczYTA0IDEwMDY0NAotLS0gYS90L01ha2VmaWxlCisrKyBiL3QvTWFrZWZpbGUKQEAgLTE1LDkgKzE1LDE2IEBACiBERUZBVUxUX1RFU1RfVEFSR0VUID89IHRlc3QKIFRFU1RfTElOVCA/PSB0ZXN0LWxpbnQtZHVwbGljYXRlcyB0ZXN0LWxpbnQtZXhlY3V0YWJsZQogCitpZmRlZiBURVNUX09VVFBVVF9ESVJFQ1RPUlkKK1RFU1RfUkVTVUxUU19ESVJFQ1RPUlkgPSAkKFRFU1RfT1VUUFVUX0RJUkVDVE9SWSkvdGVzdC1yZXN1bHRzCitlbHNlCitURVNUX1JFU1VMVFNfRElSRUNUT1JZID0gdGVzdC1yZXN1bHRzCitlbmRpZgorCiAjIFNoZWxsIHF1b3RlOwogU0hFTExfUEFUSF9TUSA9ICQoc3Vic3QgJywnXCcnLCQoU0hFTExfUEFUSCkpCiBQRVJMX1BBVEhfU1EgPSAkKHN1YnN0ICcsJ1wnJywkKFBFUkxfUEFUSCkpCitURVNUX1JFU1VMVFNfRElSRUNUT1JZX1NRID0gJChzdWJzdCAnLCdcJycsJChURVNUX1JFU1VMVFNfRElSRUNUT1JZKSkKIAogVCA9ICQoc29ydCAkKHdpbGRjYXJkIHRbMC05XVswLTldWzAtOV1bMC05XS0qLnNoKSkKIFRTVk4gPSAkKHNvcnQgJCh3aWxkY2FyZCB0OTFbMC05XVswLTldLSouc2gpKQpAQCAtMzYsMTAgKzQzLDEwIEBACiAJQGVjaG8gIioqKiAkQCAqKioiOyBHSVRfQ09ORklHPS5naXQvY29uZmlnICckKFNIRUxMX1BBVEhfU1EpJyAkQCAkKEdJVF9URVNUX09QVFMpCiAKIHByZS1jbGVhbjoKLQkkKFJNKSAtciB0ZXN0LXJlc3VsdHMKKwkkKFJNKSAtciAnJChURVNUX1JFU1VMVFNfRElSRUNUT1JZX1NRKScKIAogY2xlYW4tZXhjZXB0LXByb3ZlLWNhY2hlOgotCSQoUk0pIC1yICd0cmFzaCBkaXJlY3RvcnknLiogdGVzdC1yZXN1bHRzCisJJChSTSkgLXIgJ3RyYXNoIGRpcmVjdG9yeScuKiAnJChURVNUX1JFU1VMVFNfRElSRUNUT1JZX1NRKScKIAkkKFJNKSAtciB2YWxncmluZC9iaW4KIAogY2xlYW46IGNsZWFuLWV4Y2VwdC1wcm92ZS1jYWNoZQpAQCAtNjUsNyArNzIsNyBAQAogCSQoTUFLRSkgY2xlYW4KIAogYWdncmVnYXRlLXJlc3VsdHM6Ci0JZm9yIGYgaW4gdGVzdC1yZXN1bHRzL3QqLSouY291bnRzOyBkbyBcCisJZm9yIGYgaW4gJyQoVEVTVF9SRVNVTFRTX0RJUkVDVE9SWV9TUSknL3QqLSouY291bnRzOyBkbyBcCiAJCWVjaG8gIiQkZiI7IFwKIAlkb25lIHwgJyQoU0hFTExfUEFUSF9TUSknIC4vYWdncmVnYXRlLXJlc3VsdHMuc2gKIApkaWZmIC0tZ2l0IGEvdC9SRUFETUUgYi90L1JFQURNRQppbmRleCBlYzUyNDY4Li4yMTY3MTI1IDEwMDY0NAotLS0gYS90L1JFQURNRQorKysgYi90L1JFQURNRQpAQCAtNzYsNiArNzYsMTEgQEAKIAljb21tYW5kIGJlaW5nIHJ1biBhbmQgdGhlaXIgb3V0cHV0IGlmIGFueSBhcmUgYWxzbwogCW91dHB1dC4KIAorLS12ZXJib3NlLW9ubHk9PHBhdHRlcm4+OjoKKwlMaWtlIC0tdmVyYm9zZSwgYnV0IHRoZSBlZmZlY3QgaXMgbGltaXRlZCB0byB0ZXN0cyB3aXRoCisJbnVtYmVycyBtYXRjaGluZyA8cGF0dGVybj4uICBUaGUgbnVtYmVyIG1hdGNoZWQgYWdhaW5zdCBpcworCXNpbXBseSB0aGUgcnVubmluZyBjb3VudCBvZiB0aGUgdGVzdCB3aXRoaW4gdGhlIGZpbGUuCisKIC0tZGVidWc6OgogCVRoaXMgbWF5IGhlbHAgdGhlIHBlcnNvbiB3aG8gaXMgZGV2ZWxvcGluZyBhIG5ldyB0ZXN0LgogCUl0IGNhdXNlcyB0aGUgY29tbWFuZCBkZWZpbmVkIHdpdGggdGVzdF9kZWJ1ZyB0byBydW4uCkBAIC0xMjEsNiArMTI2LDExIEBACiAJdGhlICd0L3ZhbGdyaW5kLycgZGlyZWN0b3J5IGFuZCB1c2UgdGhlIGNvbW1hbmRzIHVuZGVyCiAJJ3QvdmFsZ3JpbmQvYmluLycuCiAKKy0tdmFsZ3JpbmQtb25seT08cGF0dGVybj46OgorCUxpa2UgLS12YWxncmluZCwgYnV0IHRoZSBlZmZlY3QgaXMgbGltaXRlZCB0byB0ZXN0cyB3aXRoCisJbnVtYmVycyBtYXRjaGluZyA8cGF0dGVybj4uICBUaGUgbnVtYmVyIG1hdGNoZWQgYWdhaW5zdCBpcworCXNpbXBseSB0aGUgcnVubmluZyBjb3VudCBvZiB0aGUgdGVzdCB3aXRoaW4gdGhlIGZpbGUuCisKIC0tdGVlOjoKIAlJbiBhZGRpdGlvbiB0byBwcmludGluZyB0aGUgdGVzdCBvdXRwdXQgdG8gdGhlIHRlcm1pbmFsLAogCXdyaXRlIGl0IHRvIGZpbGVzIG5hbWVkICd0L3Rlc3QtcmVzdWx0cy8kVEVTVF9OQU1FLm91dCcuCmRpZmYgLS1naXQgYS90L2Fubm90YXRlLXRlc3RzLnNoIGIvdC9hbm5vdGF0ZS10ZXN0cy5zaAppbmRleCBjNTZhNzdkLi5kNGU3ZjQ3IDEwMDY0NAotLS0gYS90L2Fubm90YXRlLXRlc3RzLnNoCisrKyBiL3QvYW5ub3RhdGUtdGVzdHMuc2gKQEAgLTIsMTEgKzIsMjEgQEAKICMgc291cmNlZCBmcm9tIHQ4MDAxLWFubm90YXRlLnNoIGFuZCB0ODAwMi1ibGFtZS5zaC4KIAogY2hlY2tfY291bnQgKCkgewotCWhlYWQ9Ci0JY2FzZSAiJDEiIGluIC1oKSBoZWFkPSIkMiI7IHNoaWZ0OyBzaGlmdCA7OyBlc2FjCi0JZWNobyAiJFBST0cgZmlsZSAkaGVhZCIgPiY0Ci0JJFBST0cgZmlsZSAkaGVhZCA+LnJlc3VsdCB8fCByZXR1cm4gMQotCWNhdCAucmVzdWx0IHwgcGVybCAtZSAnCisJaGVhZD0gJiYKKwlmaWxlPSdmaWxlJyAmJgorCW9wdGlvbnM9ICYmCisJd2hpbGUgOgorCWRvCisJCWNhc2UgIiQxIiBpbgorCQktaCkgaGVhZD0iJDIiOyBzaGlmdDsgc2hpZnQgOzsKKwkJLWYpIGZpbGU9IiQyIjsgc2hpZnQ7IHNoaWZ0IDs7CisJCS0qKSBvcHRpb25zPSIkb3B0aW9ucyAkMSI7IHNoaWZ0IDs7CisJCSopIGJyZWFrIDs7CisJCWVzYWMKKwlkb25lICYmCisJZWNobyAiJFBST0cgJG9wdGlvbnMgJGZpbGUgJGhlYWQiID4mNCAmJgorCSRQUk9HICRvcHRpb25zICRmaWxlICRoZWFkID5hY3R1YWwgJiYKKwlwZXJsIC1lICcKIAkJbXkgJWV4cGVjdCA9IChAQVJHVik7CiAJCW15ICVjb3VudCA9IG1hcCB7ICRfID0+IDAgfSBrZXlzICVleHBlY3Q7CiAJCXdoaWxlICg8U1RESU4+KSB7CkBAIC0zMSwxMDcgKzQxLDI0NiBAQAogCQkJcHJpbnQgU1RERVJSICJBdXRob3IgJGF1dGhvciAoZXhwZWN0ZWQgJHZhbHVlLCBhdHRyaWJ1dGVkICRjb3VudCkgJG9rXG4iOwogCQl9CiAJCWV4aXQoJGJhZCk7Ci0JJyAiJEAiCisJJyAiJEAiIDxhY3R1YWwKIH0KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3ByZXBhcmUgcmVmZXJlbmNlIHRyZWUnIFwKLSAgICAnZWNobyAiMUEgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIiA+ZmlsZSAmJgotICAgICBlY2hvICJsYXp5IGRvZyIgPj5maWxlICYmCi0gICAgIGdpdCBhZGQgZmlsZSAmJgotICAgICBHSVRfQVVUSE9SX05BTUU9IkEiIEdJVF9BVVRIT1JfRU1BSUw9IkFAdGVzdC5naXQiIGdpdCBjb21taXQgLWEgLW0gIkluaXRpYWwuIicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIEEgbGluZXMnICcKKwllY2hvICIxQSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUiID5maWxlICYmCisJZWNobyAibGF6eSBkb2ciID4+ZmlsZSAmJgorCWdpdCBhZGQgZmlsZSAmJgorCUdJVF9BVVRIT1JfTkFNRT0iQSIgR0lUX0FVVEhPUl9FTUFJTD0iQUB0ZXN0LmdpdCIgXAorCWdpdCBjb21taXQgLWEgLW0gIkluaXRpYWwuIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnY2hlY2sgYWxsIGxpbmVzIGJsYW1lZCBvbiBBJyBcCi0gICAgJ2NoZWNrX2NvdW50IEEgMicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIDEgYXV0aG9yJyAnCisJY2hlY2tfY291bnQgQSAyCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdTZXR1cCBuZXcgbGluZXMgYmxhbWVkIG9uIEInIFwKLSAgICAnZWNobyAiMkEgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIiA+PmZpbGUgJiYKLSAgICAgZWNobyAibGF6eSBkb2ciID4+IGZpbGUgJiYKLSAgICAgR0lUX0FVVEhPUl9OQU1FPSJCIiBHSVRfQVVUSE9SX0VNQUlMPSJCQHRlc3QuZ2l0IiBnaXQgY29tbWl0IC1hIC1tICJTZWNvbmQuIicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIEIgbGluZXMnICcKKwllY2hvICIyQSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUiID4+ZmlsZSAmJgorCWVjaG8gImxhenkgZG9nIiA+PmZpbGUgJiYKKwlHSVRfQVVUSE9SX05BTUU9IkIiIEdJVF9BVVRIT1JfRU1BSUw9IkJAdGVzdC5naXQiIFwKKwlnaXQgY29tbWl0IC1hIC1tICJTZWNvbmQuIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnVHdvIGxpbmVzIGJsYW1lZCBvbiBBLCB0d28gb24gQicgXAotICAgICdjaGVja19jb3VudCBBIDIgQiAyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgMiBhdXRob3JzJyAnCisJY2hlY2tfY291bnQgQSAyIEIgMgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnbWVyZ2Utc2V0dXAgcGFydCAxJyBcCi0gICAgJ2dpdCBjaGVja291dCAtYiBicmFuY2gxIG1hc3RlciAmJgotICAgICBlY2hvICIzQSBzbG93IGdyZWVuIGZveCBqdW1wcyBpbnRvIHRoZSIgPj4gZmlsZSAmJgotICAgICBlY2hvICJ3ZWxsLiIgPj4gZmlsZSAmJgotICAgICBHSVRfQVVUSE9SX05BTUU9IkIxIiBHSVRfQVVUSE9SX0VNQUlMPSJCMUB0ZXN0LmdpdCIgZ2l0IGNvbW1pdCAtYSAtbSAiQnJhbmNoMS0xIicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIEIxIGxpbmVzIChicmFuY2gxKScgJworCWdpdCBjaGVja291dCAtYiBicmFuY2gxIG1hc3RlciAmJgorCWVjaG8gIjNBIHNsb3cgZ3JlZW4gZm94IGp1bXBzIGludG8gdGhlIiA+PmZpbGUgJiYKKwllY2hvICJ3ZWxsLiIgPj5maWxlICYmCisJR0lUX0FVVEhPUl9OQU1FPSJCMSIgR0lUX0FVVEhPUl9FTUFJTD0iQjFAdGVzdC5naXQiIFwKKwlnaXQgY29tbWl0IC1hIC1tICJCcmFuY2gxLTEiCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdUd28gbGluZXMgYmxhbWVkIG9uIEEsIHR3byBvbiBCLCB0d28gb24gQjEnIFwKLSAgICAnY2hlY2tfY291bnQgQSAyIEIgMiBCMSAyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgMiBhdXRob3JzICsgMSBicmFuY2gxIGF1dGhvcicgJworCWNoZWNrX2NvdW50IEEgMiBCIDIgQjEgMgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnbWVyZ2Utc2V0dXAgcGFydCAyJyBcCi0gICAgJ2dpdCBjaGVja291dCAtYiBicmFuY2gyIG1hc3RlciAmJgotICAgICBzZWQgLWUgInMvMkEgcXVpY2sgYnJvd24vNEEgcXVpY2sgYnJvd24gbGF6eSBkb2cvIiA8IGZpbGUgPiBmaWxlLm5ldyAmJgotICAgICBtdiBmaWxlLm5ldyBmaWxlICYmCi0gICAgIEdJVF9BVVRIT1JfTkFNRT0iQjIiIEdJVF9BVVRIT1JfRU1BSUw9IkIyQHRlc3QuZ2l0IiBnaXQgY29tbWl0IC1hIC1tICJCcmFuY2gyLTEiJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgQjIgbGluZXMgKGJyYW5jaDIpJyAnCisJZ2l0IGNoZWNrb3V0IC1iIGJyYW5jaDIgbWFzdGVyICYmCisJc2VkIC1lICJzLzJBIHF1aWNrIGJyb3duLzRBIHF1aWNrIGJyb3duIGxhenkgZG9nLyIgPGZpbGUgPmZpbGUubmV3ICYmCisJbXYgZmlsZS5uZXcgZmlsZSAmJgorCUdJVF9BVVRIT1JfTkFNRT0iQjIiIEdJVF9BVVRIT1JfRU1BSUw9IkIyQHRlc3QuZ2l0IiBcCisJZ2l0IGNvbW1pdCAtYSAtbSAiQnJhbmNoMi0xIgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnVHdvIGxpbmVzIGJsYW1lZCBvbiBBLCBvbmUgb24gQiwgb25lIG9uIEIyJyBcCi0gICAgJ2NoZWNrX2NvdW50IEEgMiBCIDEgQjIgMScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIDIgYXV0aG9ycyArIDEgYnJhbmNoMiBhdXRob3InICcKKwljaGVja19jb3VudCBBIDIgQiAxIEIyIDEKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ21lcmdlLXNldHVwIHBhcnQgMycgXAotICAgICdnaXQgcHVsbCAuIGJyYW5jaDEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBicmFuY2gxICYgYnJhbmNoMicgJworCWdpdCBwdWxsIC4gYnJhbmNoMQorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnVHdvIGxpbmVzIGJsYW1lZCBvbiBBLCBvbmUgb24gQiwgdHdvIG9uIEIxLCBvbmUgb24gQjInIFwKLSAgICAnY2hlY2tfY291bnQgQSAyIEIgMSBCMSAyIEIyIDEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAyIGF1dGhvcnMgKyAyIG1lcmdlZC1pbiBhdXRob3JzJyAnCisJY2hlY2tfY291bnQgQSAyIEIgMSBCMSAyIEIyIDEKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ0Fubm90YXRpbmcgYW4gb2xkIHJldmlzaW9uIHdvcmtzJyBcCi0gICAgJ2NoZWNrX2NvdW50IC1oIG1hc3RlciBBIDIgQiAyJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgYW5jZXN0b3InICcKKwljaGVja19jb3VudCAtaCBtYXN0ZXIgQSAyIEIgMgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnQW5ub3RhdGluZyBhbiBvbGQgcmV2aXNpb24gd29ya3MnIFwKLSAgICAnY2hlY2tfY291bnQgLWggbWFzdGVyXiBBIDInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSBncmVhdC1hbmNlc3RvcicgJworCWNoZWNrX2NvdW50IC1oIG1hc3Rlcl4gQSAyCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdtZXJnZS1zZXR1cCBwYXJ0IDQnIFwKLSAgICAnZWNobyAiZXZpbCBtZXJnZS4iID4+ZmlsZSAmJgotICAgICBnaXQgY29tbWl0IC1hIC0tYW1lbmQnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBldmlsIG1lcmdlJyAnCisJZWNobyAiZXZpbCBtZXJnZS4iID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLS1hbWVuZAorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnVHdvIGxpbmVzIGJsYW1lZCBvbiBBLCBvbmUgb24gQiwgdHdvIG9uIEIxLCBvbmUgb24gQjIsIG9uZSBvbiBBIFUgVGhvcicgXAotICAgICdjaGVja19jb3VudCBBIDIgQiAxIEIxIDIgQjIgMSAiQSBVIFRob3IiIDEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSBldmlsIG1lcmdlJyAnCisJY2hlY2tfY291bnQgQSAyIEIgMSBCMSAyIEIyIDEgIkEgVSBUaG9yIiAxCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdhbiBpbmNvbXBsZXRlIGxpbmUgYWRkZWQnIFwKLSAgICAnZWNobyAiaW5jb21wbGV0ZSIgfCB0ciAtZCAiXFwwMTIiID4+ZmlsZSAmJgotICAgIEdJVF9BVVRIT1JfTkFNRT0iQyIgR0lUX0FVVEhPUl9FTUFJTD0iQ0B0ZXN0LmdpdCIgZ2l0IGNvbW1pdCAtYSAtbSAiSW5jb21wbGV0ZSInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBpbmNvbXBsZXRlIGxpbmUnICcKKwllY2hvICJpbmNvbXBsZXRlIiB8IHRyIC1kICJcXDAxMiIgPj5maWxlICYmCisJR0lUX0FVVEhPUl9OQU1FPSJDIiBHSVRfQVVUSE9SX0VNQUlMPSJDQHRlc3QuZ2l0IiBcCisJZ2l0IGNvbW1pdCAtYSAtbSAiSW5jb21wbGV0ZSIKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ1dpdGggaW5jb21wbGV0ZSBsaW5lcy4nIFwKLSAgICAnY2hlY2tfY291bnQgQSAyIEIgMSBCMSAyIEIyIDEgIkEgVSBUaG9yIiAxIEMgMScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIGluY29tcGxldGUgbGluZScgJworCWNoZWNrX2NvdW50IEEgMiBCIDEgQjEgMiBCMiAxICJBIFUgVGhvciIgMSBDIDEKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3NvbWUgZWRpdCcgXAotICAgICdtdiBmaWxlIGZpbGUub3JpZyAmJgotICAgIHsKLQljYXQgZmlsZS5vcmlnICYmCi0JZWNobwotICAgIH0gfCBzZWQgLWUgInMvXjNBLzk5LyIgLWUgIi9eMUEvZCIgLWUgIi9eaW5jb21wbGV0ZS9kIiA+IGZpbGUgJiYKLSAgICBlY2hvICJpbmNvbXBsZXRlIiB8IHRyIC1kICJcXDAxMiIgPj5maWxlICYmCi0gICAgR0lUX0FVVEhPUl9OQU1FPSJEIiBHSVRfQVVUSE9SX0VNQUlMPSJEQHRlc3QuZ2l0IiBnaXQgY29tbWl0IC1hIC1tICJlZGl0IicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGVkaXRzJyAnCisJbXYgZmlsZSBmaWxlLm9yaWcgJiYKKwl7CisJCWNhdCBmaWxlLm9yaWcgJiYKKwkJZWNobworCX0gfCBzZWQgLWUgInMvXjNBLzk5LyIgLWUgIi9eMUEvZCIgLWUgIi9eaW5jb21wbGV0ZS9kIiA+ZmlsZSAmJgorCWVjaG8gImluY29tcGxldGUiIHwgdHIgLWQgIlxcMDEyIiA+PmZpbGUgJiYKKwlHSVRfQVVUSE9SX05BTUU9IkQiIEdJVF9BVVRIT1JfRU1BSUw9IkRAdGVzdC5naXQiIFwKKwlnaXQgY29tbWl0IC1hIC1tICJlZGl0IgorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnc29tZSBlZGl0JyBcCi0gICAgJ2NoZWNrX2NvdW50IEEgMSBCIDEgQjEgMSBCMiAxICJBIFUgVGhvciIgMSBDIDEgRCAxJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgZWRpdHMnICcKKwljaGVja19jb3VudCBBIDEgQiAxIEIxIDEgQjIgMSAiQSBVIFRob3IiIDEgQyAxIEQgMQorJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFwKLSAgICAnYW4gb2JmdXNjYXRlZCBlbWFpbCBhZGRlZCcgXAotICAgICdlY2hvICJObyByb2JvdHMgYWxsb3dlZCIgPiBmaWxlLm5ldyAmJgotICAgICBjYXQgZmlsZSA+PiBmaWxlLm5ldyAmJgotICAgICBtdiBmaWxlLm5ldyBmaWxlICYmCi0gICAgIEdJVF9BVVRIT1JfTkFNRT0iRSIgR0lUX0FVVEhPUl9FTUFJTD0iRSBhdCB0ZXN0IGRvdCBnaXQiIGdpdCBjb21taXQgLWEgLW0gIm5vcm9ib3RzIicKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9iZnVzY2F0ZWQgZW1haWwnICcKKwllY2hvICJObyByb2JvdHMgYWxsb3dlZCIgPmZpbGUubmV3ICYmCisJY2F0IGZpbGUgPj5maWxlLm5ldyAmJgorCW12IGZpbGUubmV3IGZpbGUgJiYKKwlHSVRfQVVUSE9SX05BTUU9IkUiIEdJVF9BVVRIT1JfRU1BSUw9IkUgYXQgdGVzdCBkb3QgZ2l0IiBcCisJZ2l0IGNvbW1pdCAtYSAtbSAibm9yb2JvdHMiCisnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdvYmZ1c2NhdGVkIGVtYWlsIHBhcnNlZCcgXAotICAgICdjaGVja19jb3VudCBBIDEgQiAxIEIxIDEgQjIgMSAiQSBVIFRob3IiIDEgQyAxIEQgMSBFIDEnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSBvYmZ1c2NhdGVkIGVtYWlsJyAnCisJY2hlY2tfY291bnQgQSAxIEIgMSBCMSAxIEIyIDEgIkEgVSBUaG9yIiAxIEMgMSBEIDEgRSAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIDEgKGFsbCknICcKKwljaGVja19jb3VudCAtTDEgQSAxIEIgMSBCMSAxIEIyIDEgIkEgVSBUaG9yIiAxIEMgMSBEIDEgRSAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MICwgKGFsbCknICcKKwljaGVja19jb3VudCAtTCwgQSAxIEIgMSBCMSAxIEIyIDEgIkEgVSBUaG9yIiAxIEMgMSBEIDEgRSAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIFggKFggdG8gZW5kKScgJworCWNoZWNrX2NvdW50IC1MNSBCMSAxIEMgMSBEIDEgIkEgVSBUaG9yIiAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIFgsIChYIHRvIGVuZCknICcKKwljaGVja19jb3VudCAtTDUsIEIxIDEgQyAxIEQgMSAiQSBVIFRob3IiIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgLFkgKHVwIHRvIFkpJyAnCisJY2hlY2tfY291bnQgLUwsMyBBIDEgQjIgMSBFIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgWCxYJyAnCisJY2hlY2tfY291bnQgLUwzLDMgQjIgMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtTCBYLFknICcKKwljaGVja19jb3VudCAtTDMsNiBCIDEgQjEgMSBCMiAxIEQgMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtTCBZLFggKHVuZG9jdW1lbnRlZCknICcKKwljaGVja19jb3VudCAtTDYsMyBCIDEgQjEgMSBCMiAxIEQgMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtTCBYLCsxJyAnCisJY2hlY2tfY291bnQgLUwzLCsxIEIyIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgWCwrTicgJworCWNoZWNrX2NvdW50IC1MMywrNCBCIDEgQjEgMSBCMiAxIEQgMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtTCBYLC0xJyAnCisJY2hlY2tfY291bnQgLUwzLC0xIEIyIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgWCwtTicgJworCWNoZWNrX2NvdW50IC1MNiwtNCBCIDEgQjEgMSBCMiAxIEQgMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtTCAvUkUvIChSRSB0byBlbmQpJyAnCisJY2hlY2tfY291bnQgLUwvZXZpbC8gQyAxICJBIFUgVGhvciIgMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtTCAvUkUvLC9SRTIvJyAnCisJY2hlY2tfY291bnQgLUwvcm9ib3QvLC9ncmVlbi8gQSAxIEIgMSBCMiAxIEQgMSBFIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgWCwvUkUvJyAnCisJY2hlY2tfY291bnQgLUw1LC9ldmlsLyBCMSAxIEQgMSAiQSBVIFRob3IiIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgL1JFLyxZJyAnCisJY2hlY2tfY291bnQgLUwvOTkvLDcgQjEgMSBEIDEgIkEgVSBUaG9yIiAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIC9SRS8sK04nICcKKwljaGVja19jb3VudCAtTC85OS8sKzMgQjEgMSBEIDEgIkEgVSBUaG9yIiAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIC9SRS8sLU4nICcKKwljaGVja19jb3VudCAtTC85OS8sLTMgQiAxIEIyIDEgRCAxCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIFggKFggPiBubGluZXMpJyAnCisJdGVzdF9tdXN0X2ZhaWwgJFBST0cgLUwxMjM0NSBmaWxlCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MICxZIChZID4gbmxpbmVzKScgJworCXRlc3RfbXVzdF9mYWlsICRQUk9HIC1MLDEyMzQ1IGZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgLUwgOnJlZ2V4JyAnCisJdHIgUSAiXFx0IiA+aGVsbG8uYyA8PC1cRU9GICYmCisJaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKKwl7CisJUXB1dHMoImhlbGxvIik7CisJfQorCUVPRgorCWdpdCBhZGQgaGVsbG8uYyAmJgorCUdJVF9BVVRIT1JfTkFNRT0iRiIgR0lUX0FVVEhPUl9FTUFJTD0iRkB0ZXN0LmdpdCIgXAorCWdpdCBjb21taXQgLW0gImhlbGxvIiAmJgorCisJbXYgaGVsbG8uYyBoZWxsby5vcmlnICYmCisJc2VkIC1lICIvfS8ge3g7IHMvJC9RcHV0cyhcImdvb2RieWVcIik7LzsgRzt9IiA8aGVsbG8ub3JpZyB8CisJdHIgUSAiXFx0IiA+aGVsbG8uYyAmJgorCUdJVF9BVVRIT1JfTkFNRT0iRyIgR0lUX0FVVEhPUl9FTUFJTD0iR0B0ZXN0LmdpdCIgXAorCWdpdCBjb21taXQgLWEgLW0gImdvb2RieWUiICYmCisKKwltdiBoZWxsby5jIGhlbGxvLm9yaWcgJiYKKwllY2hvICIjaW5jbHVkZSA8c3RkaW8uaD4iID5oZWxsby5jICYmCisJY2F0IGhlbGxvLm9yaWcgPj5oZWxsby5jICYmCisJdHIgUSAiXFx0IiA+PmhlbGxvLmMgPDwtXEVPRgorCXZvaWQgbWFpbCgpCisJeworCVFwdXRzKCJtYWlsIik7CisJfQorCUVPRgorCUdJVF9BVVRIT1JfTkFNRT0iSCIgR0lUX0FVVEhPUl9FTUFJTD0iSEB0ZXN0LmdpdCIgXAorCWdpdCBjb21taXQgLWEgLW0gIm1haWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIC1MIDpsaXRlcmFsJyAnCisJY2hlY2tfY291bnQgLWYgaGVsbG8uYyAtTDptYWluIEYgNCBHIDEKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgOnJlZ2V4JyAnCisJY2hlY2tfY291bnQgLWYgaGVsbG8uYyAiLUw6bVthLXpdW2Etel1sIiBIIDQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgOm5vbWF0Y2gnICcKKwl0ZXN0X211c3RfZmFpbCAkUFJPRyAtTDpub21hdGNoIGhlbGxvLmMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYmxhbWUgLUwgYm9ndXMnICcKKwl0ZXN0X211c3RfZmFpbCAkUFJPRyAtTCBmaWxlICYmCisJdGVzdF9tdXN0X2ZhaWwgJFBST0cgLUwxLCsgZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsICRQUk9HIC1MMSwtIGZpbGUgJiYKKwl0ZXN0X211c3RfZmFpbCAkUFJPRyAtTFggZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsICRQUk9HIC1MMSxYIGZpbGUgJiYKKwl0ZXN0X211c3RfZmFpbCAkUFJPRyAtTDEsK04gZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsICRQUk9HIC1MMSwtTiBmaWxlCisnCmRpZmYgLS1naXQgYS90L2dpdHdlYi1saWIuc2ggYi90L2dpdHdlYi1saWIuc2gKaW5kZXggYWUyZGM0Ni4uOWUzODFlMCAxMDA2NDQKLS0tIGEvdC9naXR3ZWItbGliLnNoCisrKyBiL3QvZ2l0d2ViLWxpYi5zaApAQCAtMzYsNyArMzYsNyBAQAogCiAJIyBZb3UgY2FuIHNldCB0aGUgR0lUV0VCX1RFU1RfSU5TVEFMTEVEIGVudmlyb25tZW50IHZhcmlhYmxlIHRvCiAJIyB0aGUgZ2l0d2ViZGlyICh0aGUgZGlyZWN0b3J5IHdoZXJlIGdpdHdlYiBpcyBpbnN0YWxsZWQgLyBkZXBsb3llZCB0bykKLQkjIG9mIGFuIGV4aXN0aW5nIGdpdHdlYiBpbnN0YWxhdGlvbiB0byB0ZXN0IHRoYXQgaW5zdGFsbGF0aW9uLAorCSMgb2YgYW4gZXhpc3RpbmcgZ2l0d2ViIGluc3RhbGxhdGlvbiB0byB0ZXN0IHRoYXQgaW5zdGFsbGF0aW9uLAogCSMgb3Igc2ltcGx5IHRvIHBhdGhuYW1lIG9mIGluc3RhbGxlZCBnaXR3ZWIgc2NyaXB0LgogCWlmIHRlc3QgLW4gIiRHSVRXRUJfVEVTVF9JTlNUQUxMRUQiIDsgdGhlbgogCQlpZiB0ZXN0IC1kICRHSVRXRUJfVEVTVF9JTlNUQUxMRUQ7IHRoZW4KZGlmZiAtLWdpdCBhL3QvbGliLXJlYmFzZS5zaCBiL3QvbGliLXJlYmFzZS5zaAppbmRleCA4MDk4YTg4Li44ZmY4N2ZiIDEwMDY0NAotLS0gYS90L2xpYi1yZWJhc2Uuc2gKKysrIGIvdC9saWItcmViYXNlLnNoCkBAIC0yNCw0NiArMjQsOTEgQEAKICMgICAiPiIgLS0gQWRkIGEgYmxhbmsgbGluZS4KIAogc2V0X2Zha2VfZWRpdG9yICgpIHsKLQllY2hvICIjISRTSEVMTF9QQVRIIiA+ZmFrZS1lZGl0b3Iuc2gKLQljYXQgPj4gZmFrZS1lZGl0b3Iuc2ggPDxcRU9GCi1jYXNlICIkMSIgaW4KLSovQ09NTUlUX0VESVRNU0cpCi0JdGVzdCAteiAiJEVYUEVDVF9IRUFERVJfQ09VTlQiIHx8Ci0JCXRlc3QgIiRFWFBFQ1RfSEVBREVSX0NPVU5UIiA9ICIkKHNlZCAtbiAnMXMvXiMgVGhpcyBpcyBhIGNvbWJpbmF0aW9uIG9mIFwoLipcKSBjb21taXRzXC4vXDEvcCcgPCAiJDEiKSIgfHwKKwl3cml0ZV9zY3JpcHQgZmFrZS1lZGl0b3Iuc2ggPDwtXEVPRgorCWNhc2UgIiQxIiBpbgorCSovQ09NTUlUX0VESVRNU0cpCisJCXRlc3QgLXogIiRFWFBFQ1RfSEVBREVSX0NPVU5UIiB8fAorCQkJdGVzdCAiJEVYUEVDVF9IRUFERVJfQ09VTlQiID0gIiQoc2VkIC1uICcxcy9eIyBUaGlzIGlzIGEgY29tYmluYXRpb24gb2YgXCguKlwpIGNvbW1pdHNcLi9cMS9wJyA8ICIkMSIpIiB8fAorCQkJZXhpdAorCQl0ZXN0IC16ICIkRkFLRV9DT01NSVRfTUVTU0FHRSIgfHwgZWNobyAiJEZBS0VfQ09NTUlUX01FU1NBR0UiID4gIiQxIgorCQl0ZXN0IC16ICIkRkFLRV9DT01NSVRfQU1FTkQiIHx8IGVjaG8gIiRGQUtFX0NPTU1JVF9BTUVORCIgPj4gIiQxIgogCQlleGl0Ci0JdGVzdCAteiAiJEZBS0VfQ09NTUlUX01FU1NBR0UiIHx8IGVjaG8gIiRGQUtFX0NPTU1JVF9NRVNTQUdFIiA+ICIkMSIKLQl0ZXN0IC16ICIkRkFLRV9DT01NSVRfQU1FTkQiIHx8IGVjaG8gIiRGQUtFX0NPTU1JVF9BTUVORCIgPj4gIiQxIgotCWV4aXQKLQk7OwotZXNhYwotdGVzdCAteiAiJEVYUEVDVF9DT1VOVCIgfHwKLQl0ZXN0ICIkRVhQRUNUX0NPVU5UIiA9ICQoc2VkIC1lICcvXiMvZCcgLWUgJy9eJC9kJyA8ICIkMSIgfCB3YyAtbCkgfHwKLQlleGl0Ci10ZXN0IC16ICIkRkFLRV9MSU5FUyIgJiYgZXhpdAotZ3JlcCAtdiAnXiMnIDwgIiQxIiA+ICIkMSIudG1wCi1ybSAtZiAiJDEiCi1lY2hvICdyZWJhc2UgLWkgc2NyaXB0IGJlZm9yZSBlZGl0aW5nOicKLWNhdCAiJDEiLnRtcAotYWN0aW9uPXBpY2sKLWZvciBsaW5lIGluICRGQUtFX0xJTkVTOyBkbwotCWNhc2UgJGxpbmUgaW4KLQlzcXVhc2h8Zml4dXB8ZWRpdHxyZXdvcmQpCi0JCWFjdGlvbj0iJGxpbmUiOzsKLQlleGVjKikKLQkJZWNobyAiJGxpbmUiIHwgc2VkICdzL18vIC9nJyA+PiAiJDEiOzsKLQkiIyIpCi0JCWVjaG8gJyMgY29tbWVudCcgPj4gIiQxIjs7Ci0JIj4iKQotCQllY2hvID4+ICIkMSI7OwotCSopCi0JCXNlZCAtbiAiJHtsaW5lfXMvXnBpY2svJGFjdGlvbi9wIiA8ICIkMSIudG1wID4+ICIkMSIKLQkJYWN0aW9uPXBpY2s7OworCQk7OwogCWVzYWMKLWRvbmUKLWVjaG8gJ3JlYmFzZSAtaSBzY3JpcHQgYWZ0ZXIgZWRpdGluZzonCi1jYXQgIiQxIgotRU9GCisJdGVzdCAteiAiJEVYUEVDVF9DT1VOVCIgfHwKKwkJdGVzdCAiJEVYUEVDVF9DT1VOVCIgPSAkKHNlZCAtZSAnL14jL2QnIC1lICcvXiQvZCcgPCAiJDEiIHwgd2MgLWwpIHx8CisJCWV4aXQKKwl0ZXN0IC16ICIkRkFLRV9MSU5FUyIgJiYgZXhpdAorCWdyZXAgLXYgJ14jJyA8ICIkMSIgPiAiJDEiLnRtcAorCXJtIC1mICIkMSIKKwllY2hvICdyZWJhc2UgLWkgc2NyaXB0IGJlZm9yZSBlZGl0aW5nOicKKwljYXQgIiQxIi50bXAKKwlhY3Rpb249cGljaworCWZvciBsaW5lIGluICRGQUtFX0xJTkVTOyBkbworCQljYXNlICRsaW5lIGluCisJCXNxdWFzaHxmaXh1cHxlZGl0fHJld29yZCkKKwkJCWFjdGlvbj0iJGxpbmUiOzsKKwkJZXhlYyopCisJCQllY2hvICIkbGluZSIgfCBzZWQgJ3MvXy8gL2cnID4+ICIkMSI7OworCQkiIyIpCisJCQllY2hvICcjIGNvbW1lbnQnID4+ICIkMSI7OworCQkiPiIpCisJCQllY2hvID4+ICIkMSI7OworCQkqKQorCQkJc2VkIC1uICIke2xpbmV9cy9ecGljay8kYWN0aW9uL3AiIDwgIiQxIi50bXAgPj4gIiQxIgorCQkJYWN0aW9uPXBpY2s7OworCQllc2FjCisJZG9uZQorCWVjaG8gJ3JlYmFzZSAtaSBzY3JpcHQgYWZ0ZXIgZWRpdGluZzonCisJY2F0ICIkMSIKKwlFT0YKIAogCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2Zha2UtZWRpdG9yLnNoIgotCWNobW9kIGEreCBmYWtlLWVkaXRvci5zaAorfQorCisjIEFmdGVyIHNldF9jYXRfdG9kb19lZGl0b3IsIHJlYmFzZSAtaSB3aWxsIHdyaXRlIHRoZSB0b2RvIGxpc3QgKGlnbm9yaW5nCisjIGJsYW5rIGxpbmVzIGFuZCBjb21tZW50cykgdG8gc3Rkb3V0LCBhbmQgZXhpdCBmYWlsdXJlIChzbyB5b3Ugc2hvdWxkIHJ1bgorIyBpdCB3aXRoIHRlc3RfbXVzdF9mYWlsKS4gIFRoaXMgY2FuIGJlIHVzZWQgdG8gdmVyaWZ5IHRoZSBleHBlY3RlZCB1c2VyCisjIGV4cGVyaWVuY2UsIGZvciB0b2RvIGxpc3QgY2hhbmdlcyB0aGF0IGRvIG5vdCBhZmZlY3QgdGhlIG91dGNvbWUgb2YKKyMgcmViYXNlOyBvciBhcyBhbiBleHRyYSBjaGVjayBpbiBhZGRpdGlvbiB0byBjaGVja2luZyB0aGUgb3V0Y29tZS4KKworc2V0X2NhdF90b2RvX2VkaXRvciAoKSB7CisJd3JpdGVfc2NyaXB0IGZha2UtZWRpdG9yLnNoIDw8LVxFT0YKKwlncmVwICJeW14jXSIgIiQxIgorCWV4aXQgMQorCUVPRgorCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2Zha2UtZWRpdG9yLnNoIgorfQorCisjIGNoZWNrcyB0aGF0IHRoZSByZXZpc2lvbnMgaW4gIiQyIiByZXByZXNlbnQgYSBsaW5lYXIgcmFuZ2Ugd2l0aCB0aGUKKyMgc3ViamVjdHMgaW4gIiQxIgordGVzdF9saW5lYXJfcmFuZ2UgKCkgeworCXJldmxpc3RfbWVyZ2VzPSQoZ2l0IHJldi1saXN0IC0tbWVyZ2VzICIkMiIpICYmCisJdGVzdCAteiAiJHJldmxpc3RfbWVyZ2VzIiAmJgorCWV4cGVjdGVkPSQxCisJc2V0IC0tICQoZ2l0IGxvZyAtLXJldmVyc2UgLS1mb3JtYXQ9JXMgIiQyIikKKwl0ZXN0ICIkZXhwZWN0ZWQiID0gIiQqIgorfQorCityZXNldF9yZWJhc2UgKCkgeworCXRlc3RfbWlnaHRfZmFpbCBnaXQgcmViYXNlIC0tYWJvcnQgJiYKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZ2l0IGNsZWFuIC1mCit9CisKK2NoZXJyeV9waWNrICgpIHsKKwlnaXQgY2hlcnJ5LXBpY2sgLW4gIiQyIiAmJgorCWdpdCBjb21taXQgLW0gIiQxIiAmJgorCWdpdCB0YWcgIiQxIgorfQorCityZXZlcnQgKCkgeworCWdpdCByZXZlcnQgLW4gIiQyIiAmJgorCWdpdCBjb21taXQgLW0gIiQxIiAmJgorCWdpdCB0YWcgIiQxIgorfQorCittYWtlX2VtcHR5ICgpIHsKKwlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gIiQxIiAmJgorCWdpdCB0YWcgIiQxIgogfQpkaWZmIC0tZ2l0IGEvdC9saWItdDYwMDAuc2ggYi90L2xpYi10NjAwMC5zaAppbmRleCBlYTI1ZGQ4Li4zZjJkODczIDEwMDY0NAotLS0gYS90L2xpYi10NjAwMC5zaAorKysgYi90L2xpYi10NjAwMC5zaApAQCAtMSw1NSArMSw1MCBAQAogOiBpbmNsdWRlZCBmcm9tIDYwMDIgYW5kIG90aGVycwogCi1bIC1kIC5naXQvcmVmcy90YWdzIF0gfHwgbWtkaXIgLXAgLmdpdC9yZWZzL3RhZ3MKK21rZGlyIC1wIC5naXQvcmVmcy90YWdzCiAKLTo+IHNlZC5zY3JpcHQKKz5zZWQuc2NyaXB0CiAKLSMgQW5zd2VyIHRoZSBzaGExIGhhcyBhc3NvY2lhdGVkIHdpdGggdGhlIHRhZy4gVGhlIHRhZyBtdXN0IGV4aXN0IGluIC5naXQgb3IgLmdpdC9yZWZzL3RhZ3MKLXRhZygpCi17CisjIEFuc3dlciB0aGUgc2hhMSBoYXMgYXNzb2NpYXRlZCB3aXRoIHRoZSB0YWcuIFRoZSB0YWcgbXVzdCBleGlzdCBpbiAuZ2l0L3JlZnMvdGFncwordGFnICgpIHsKIAlfdGFnPSQxCi0JWyAtZiAuZ2l0L3JlZnMvdGFncy8kX3RhZyBdIHx8IGVycm9yICJ0YWc6IFwiJF90YWdcIiBkb2VzIG5vdCBleGlzdCIKLQljYXQgLmdpdC9yZWZzL3RhZ3MvJF90YWcKKwl0ZXN0IC1mICIuZ2l0L3JlZnMvdGFncy8kX3RhZyIgfHwgZXJyb3IgInRhZzogXCIkX3RhZ1wiIGRvZXMgbm90IGV4aXN0IgorCWNhdCAiLmdpdC9yZWZzL3RhZ3MvJF90YWciCiB9CiAKICMgR2VuZXJhdGUgYSBjb21taXQgdXNpbmcgdGhlIHRleHQgc3BlY2lmaWVkIHRvIG1ha2UgaXQgdW5pcXVlIGFuZCB0aGUgdHJlZQogIyBuYW1lZCBieSB0aGUgdGFnIHNwZWNpZmllZC4KLXVuaXF1ZV9jb21taXQoKQotewordW5pcXVlX2NvbW1pdCAoKSB7CiAJX3RleHQ9JDEKLSAgICAgICAgX3RyZWU9JDIKKwlfdHJlZT0kMgogCXNoaWZ0IDIKLQllY2hvICRfdGV4dCB8IGdpdCBjb21taXQtdHJlZSAkKHRhZyAkX3RyZWUpICIkQCIKKwllY2hvICIkX3RleHQiIHwgZ2l0IGNvbW1pdC10cmVlICQodGFnICIkX3RyZWUiKSAiJEAiCiB9CiAKICMgU2F2ZSB0aGUgb3V0cHV0IG9mIGEgY29tbWFuZCBpbnRvIHRoZSB0YWcgc3BlY2lmaWVkLiBQcmVwZW5kCiAjIGEgc3Vic3RpdHV0aW9uIHNjcmlwdCBmb3IgdGhlIHRhZyBvbnRvIHRoZSBmcm9udCBvZiBzZWQuc2NyaXB0Ci1zYXZlX3RhZygpCi17CitzYXZlX3RhZyAoKSB7CiAJX3RhZz0kMQotCVsgLW4gIiRfdGFnIiBdIHx8IGVycm9yICJ1c2FnZTogc2F2ZV90YWcgdGFnIGNvbW1pdC1hcmdzIC4uLiIKKwl0ZXN0IC1uICIkX3RhZyIgfHwgZXJyb3IgInVzYWdlOiBzYXZlX3RhZyB0YWcgY29tbWl0LWFyZ3MgLi4uIgogCXNoaWZ0IDEKLQkiJEAiID4uZ2l0L3JlZnMvdGFncy8kX3RhZworCSIkQCIgPiIuZ2l0L3JlZnMvdGFncy8kX3RhZyIKIAotICAgICAgICBlY2hvICJzLyQodGFnICRfdGFnKS8kX3RhZy9nIiA+IHNlZC5zY3JpcHQudG1wCi0JY2F0IHNlZC5zY3JpcHQgPj4gc2VkLnNjcmlwdC50bXAKKwllY2hvICJzLyQodGFnICRfdGFnKS8kX3RhZy9nIiA+c2VkLnNjcmlwdC50bXAKKwljYXQgc2VkLnNjcmlwdCA+PnNlZC5zY3JpcHQudG1wCiAJcm0gc2VkLnNjcmlwdAogCW12IHNlZC5zY3JpcHQudG1wIHNlZC5zY3JpcHQKIH0KIAotIyBSZXBsYWNlIHVuaGVscGZ1bCBzaGExIGhhc2hzZXMgd2l0aCB0aGVpciBzeW1ib2xpYyBlcXVpdmFsZW50cwotZW50YWcoKQoteworIyBSZXBsYWNlIHVuaGVscGZ1bCBzaGExIGhhc2hlcyB3aXRoIHRoZWlyIHN5bWJvbGljIGVxdWl2YWxlbnRzCitlbnRhZyAoKSB7CiAJc2VkIC1mIHNlZC5zY3JpcHQKIH0KIAogIyBFeGVjdXRlIGEgY29tbWFuZCBhZnRlciBmaXJzdCBzYXZpbmcsIHRoZW4gc2V0dGluZyB0aGUgR0lUX0FVVEhPUl9FTUFJTAogIyB0YWcgdG8gYSBzcGVjaWZpZWQgdmFsdWUuIFJlc3RvcmUgdGhlIG9yaWdpbmFsIHZhbHVlIG9uIHJldHVybi4KLWFzX2F1dGhvcigpCi17Cithc19hdXRob3IgKCkgewogCV9hdXRob3I9JDEKIAlzaGlmdCAxCi0gICAgICAgIF9zYXZlPSRHSVRfQVVUSE9SX0VNQUlMCisJX3NhdmU9JEdJVF9BVVRIT1JfRU1BSUwKIAogCUdJVF9BVVRIT1JfRU1BSUw9IiRfYXV0aG9yIgogCWV4cG9ydCBHSVRfQVVUSE9SX0VNQUlMCkBAIC02Myw0NSArNTgsNTggQEAKIAlmaQogfQogCi1jb21taXRfZGF0ZSgpCi17Ci0gICAgICAgIF9jb21taXQ9JDEKLQlnaXQgY2F0LWZpbGUgY29tbWl0ICRfY29tbWl0IHwgc2VkIC1uICJzL15jb21taXR0ZXIgLio+IFwoWzAtOV0qXCkgLiovXDEvcCIKK2NvbW1pdF9kYXRlICgpIHsKKwlfY29tbWl0PSQxCisJZ2l0IGNhdC1maWxlIGNvbW1pdCAkX2NvbW1pdCB8CisJc2VkIC1uICJzL15jb21taXR0ZXIgLio+IFwoWzAtOV0qXCkgLiovXDEvcCIKIH0KIAotb25fY29tbWl0dGVyX2RhdGUoKQotewotICAgIF9kYXRlPSQxCi0gICAgc2hpZnQgMQotICAgIEdJVF9DT01NSVRURVJfREFURT0iJF9kYXRlIgotICAgIGV4cG9ydCBHSVRfQ09NTUlUVEVSX0RBVEUKLSAgICAiJEAiCi0gICAgdW5zZXQgR0lUX0NPTU1JVFRFUl9EQVRFCisjIEFzc2lnbiB0aGUgdmFsdWUgb2YgZmFrZSBkYXRlIHRvIGEgdmFyaWFibGUsIGJ1dAorIyBhbGxvdyBmYWlybHkgY29tbW9uICIxOTcxLTA4LTE2IDAwOjAwIiB0byBiZSBvbWl0dGQKK2Fzc2lnbl9mYWtlX2RhdGUgKCkgeworCWNhc2UgIiQyIiBpbgorCT8/Oj8/Oj8/KQlldmFsICIkMT0nMTk3MS0wOC0xNiAkMiciIDs7CisJPz86Pz8pCQlldmFsICIkMT0nMTk3MS0wOC0xNiAwMDokMiciIDs7CisJPz8pCQlldmFsICIkMT0nMTk3MS0wOC0xNiAwMDowMDokMiciIDs7CisJKikJCWV2YWwgIiQxPSckMiciIDs7CisJZXNhYworfQorCitvbl9jb21taXR0ZXJfZGF0ZSAoKSB7CisJYXNzaWduX2Zha2VfZGF0ZSBHSVRfQ09NTUlUVEVSX0RBVEUgIiQxIgorCWV4cG9ydCBHSVRfQ09NTUlUVEVSX0RBVEUKKwlzaGlmdCAxCisJIiRAIgorfQorCitvbl9kYXRlcyAoKSB7CisJYXNzaWduX2Zha2VfZGF0ZSBHSVRfQ09NTUlUVEVSX0RBVEUgIiQxIgorCWFzc2lnbl9mYWtlX2RhdGUgR0lUX0FVVEhPUl9EQVRFICIkMiIKKwlleHBvcnQgR0lUX0NPTU1JVFRFUl9EQVRFIEdJVF9BVVRIT1JfREFURQorCXNoaWZ0IDIKKwkiJEAiCiB9CiAKICMgRXhlY3V0ZSBhIGNvbW1hbmQgYW5kIHN1cHByZXNzIGFueSBlcnJvciBvdXRwdXQuCi1oaWRlX2Vycm9yKCkKLXsKK2hpZGVfZXJyb3IgKCkgewogCSIkQCIgMj4vZGV2L251bGwKIH0KIAotY2hlY2tfb3V0cHV0KCkKLXsKK2NoZWNrX291dHB1dCAoKSB7CiAJX25hbWU9JDEKIAlzaGlmdCAxCi0JaWYgZXZhbCAiJCoiIHwgZW50YWcgPiAkX25hbWUuYWN0dWFsCisJaWYgZXZhbCAiJCoiIHwgZW50YWcgPiIkX25hbWUuYWN0dWFsIgogCXRoZW4KLQkJdGVzdF9jbXAgJF9uYW1lLmV4cGVjdGVkICRfbmFtZS5hY3R1YWwKKwkJdGVzdF9jbXAgIiRfbmFtZS5leHBlY3RlZCIgIiRfbmFtZS5hY3R1YWwiCiAJZWxzZQotCQlyZXR1cm4gMTsKKwkJcmV0dXJuIDEKIAlmaQogfQogCiAjIFR1cm4gYSByZWFzb25hYmxlIHRlc3QgZGVzY3JpcHRpb24gaW50byBhIHJlYXNvbmFibGUgdGVzdCBuYW1lLgogIyBBbGwgYWxwaGFudW1zIHRyYW5zbGF0ZWQgaW50byAtJ3Mgd2hpY2ggYXJlIHRoZW4gY29tcHJlc3NlZCBhbmQgc3RyaXBwZWQKICMgZnJvbSBmcm9udCBhbmQgYmFjay4KLW5hbWVfZnJvbV9kZXNjcmlwdGlvbigpCi17CituYW1lX2Zyb21fZGVzY3JpcHRpb24gKCkgewogCXBlcmwgLXBlICcKIAkJcy9bXkEtWmEtejAtOS5dLy0vZzsKIAkJcy8tKy8tL2c7CkBAIC0xMTksOSArMTI3LDExIEBACiB0ZXN0X291dHB1dF9leHBlY3Rfc3VjY2VzcygpCiB7CiAJX2Rlc2NyaXB0aW9uPSQxCi0gICAgICAgIF90ZXN0PSQyCi0gICAgICAgIFsgJCMgLWVxIDIgXSB8fCBlcnJvciAidXNhZ2U6IHRlc3Rfb3V0cHV0X2V4cGVjdF9zdWNjZXNzIGRlc2NyaXB0aW9uIHRlc3QgPDxFT0YgLi4uIEVPRiIKLSAgICAgICAgX25hbWU9JChlY2hvICRfZGVzY3JpcHRpb24gfCBuYW1lX2Zyb21fZGVzY3JpcHRpb24pCi0JY2F0ID4gJF9uYW1lLmV4cGVjdGVkCisJX3Rlc3Q9JDIKKwl0ZXN0ICQjIC1lcSAyIHx8CisJZXJyb3IgInVzYWdlOiB0ZXN0X291dHB1dF9leHBlY3Rfc3VjY2VzcyBkZXNjcmlwdGlvbiB0ZXN0IDw8RU9GIC4uLiBFT0YiCisKKwlfbmFtZT0kKGVjaG8gJF9kZXNjcmlwdGlvbiB8IG5hbWVfZnJvbV9kZXNjcmlwdGlvbikKKwljYXQgPiIkX25hbWUuZXhwZWN0ZWQiCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiJF9kZXNjcmlwdGlvbiIgImNoZWNrX291dHB1dCAkX25hbWUgXCIkX3Rlc3RcIiIKIH0KZGlmZiAtLWdpdCBhL3QvcGVyZi9SRUFETUUgYi90L3BlcmYvUkVBRE1FCmluZGV4IGM1NTJmNTYuLjg4NDhjMTQgMTAwNjQ0Ci0tLSBhL3QvcGVyZi9SRUFETUUKKysrIGIvdC9wZXJmL1JFQURNRQpAQCAtNjYsNyArNjYsNyBAQAogICAgIEdJVF9QRVJGX0xBUkdFX1JFUE8KIAlSZXBvc2l0b3JpZXMgdG8gY29weSBmb3IgdGhlIHBlcmZvcm1hbmNlIHRlc3RzLiAgVGhlIG5vcm1hbAogCXJlcG8gc2hvdWxkIGJlIGF0IGxlYXN0IGdpdC5naXQgc2l6ZS4gIFRoZSBsYXJnZSByZXBvIHNob3VsZAotCXByb2JhYmx5IGJlIGFib3V0IGxpbnV4LTIuNi5naXQgc2l6ZSBmb3Igb3B0aW1hbCByZXN1bHRzLgorCXByb2JhYmx5IGJlIGFib3V0IGxpbnV4LmdpdCBzaXplIGZvciBvcHRpbWFsIHJlc3VsdHMuCiAJQm90aCBkZWZhdWx0IHRvIHRoZSBnaXQuZ2l0IHlvdSBhcmUgcnVubmluZyBmcm9tLgogCiBZb3UgY2FuIGFsc28gcGFzcyB0aGUgb3B0aW9ucyB0YWtlbiBieSBvcmRpbmFyeSBnaXQgdGVzdHM7IHRoZSBtb3N0CmRpZmYgLS1naXQgYS90L3BlcmYvcDQyMTEtbGluZS1sb2cuc2ggYi90L3BlcmYvcDQyMTEtbGluZS1sb2cuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2QwNzRiMAotLS0gL2Rldi9udWxsCisrKyBiL3QvcGVyZi9wNDIxMS1saW5lLWxvZy5zaApAQCAtMCwwICsxLDM0IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nVGVzdHMgbG9nIC1MIHBlcmZvcm1hbmNlJworLiAuL3BlcmYtbGliLnNoCisKK3Rlc3RfcGVyZl9kZWZhdWx0X3JlcG8KKworIyBQaWNrIGEgZmlsZSB0byBsb2cgcHNldWRvLXJhbmRvbWx5LiAgVGhlIHNvcnQga2V5IGlzIHRoZSBibG9iIGhhc2gsCisjIHNvIGl0IGlzIHN0YWJsZS4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NlbGVjdCBhIGZpbGUnICcKKwlnaXQgbHMtdHJlZSBIRUFEIHwgZ3JlcCBeMTAwNjQ0IHwKKwlzb3J0IC1rIDMgfCBoZWFkIC0xIHwgY3V0IC1mIDIgPmZpbGVsaXN0CisnCisKK2ZpbGU9JChjYXQgZmlsZWxpc3QpCitleHBvcnQgZmlsZQorCit0ZXN0X3BlcmYgJ2dpdCByZXYtbGlzdCAtLXRvcG8tb3JkZXIgKGJhc2VsaW5lKScgJworCWdpdCByZXYtbGlzdCAtLXRvcG8tb3JkZXIgSEVBRCA+L2Rldi9udWxsCisnCisKK3Rlc3RfcGVyZiAnZ2l0IGxvZyAtLWZvbGxvdyAoYmFzZWxpbmUgZm9yIC1NKScgJworCWdpdCBsb2cgLS1vbmVsaW5lIC0tZm9sbG93IC0tICIkZmlsZSIgPi9kZXYvbnVsbAorJworCit0ZXN0X3BlcmYgJ2dpdCBsb2cgLUwnICcKKwlnaXQgbG9nIC1MIDE6IiRmaWxlIiA+L2Rldi9udWxsCisnCisKK3Rlc3RfcGVyZiAnZ2l0IGxvZyAtTSAtTCcgJworCWdpdCBsb2cgLU0gLUwgMToiJGZpbGUiID4vZGV2L251bGwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3BlcmYvcGVyZi1saWIuc2ggYi90L3BlcmYvcGVyZi1saWIuc2gKaW5kZXggYTgxNmZiYy4uZjRlZWNhYSAxMDA2NDQKLS0tIGEvdC9wZXJmL3BlcmYtbGliLnNoCisrKyBiL3QvcGVyZi9wZXJmLWxpYi5zaApAQCAtMTUwLDYgKzE1MCw3IEBACiAKIAogdGVzdF9wZXJmICgpIHsKKwl0ZXN0X3N0YXJ0XwogCXRlc3QgIiQjIiA9IDMgJiYgeyB0ZXN0X3ByZXJlcT0kMTsgc2hpZnQ7IH0gfHwgdGVzdF9wcmVyZXE9CiAJdGVzdCAiJCMiID0gMiB8fAogCWVycm9yICJidWcgaW4gdGhlIHRlc3Qgc2NyaXB0OiBub3QgMiBvciAzIHBhcmFtZXRlcnMgdG8gdGVzdC1leHBlY3Qtc3VjY2VzcyIKQEAgLTE2MCw3ICsxNjEsNyBAQAogCQllY2hvICIkdGVzdF9jb3VudCIgPj4iJHBlcmZfcmVzdWx0c19kaXIiLyRiYXNlLnN1YnRlc3RzCiAJCWVjaG8gIiQxIiA+IiRwZXJmX3Jlc3VsdHNfZGlyIi8kYmFzZS4kdGVzdF9jb3VudC5kZXNjcgogCQlpZiB0ZXN0IC16ICIkdmVyYm9zZSI7IHRoZW4KLQkJCWVjaG8gLW4gInBlcmYgJHRlc3RfY291bnQgLSAkMToiCisJCQlwcmludGYgIiVzIiAicGVyZiAkdGVzdF9jb3VudCAtICQxOiIKIAkJZWxzZQogCQkJZWNobyAicGVyZiAkdGVzdF9jb3VudCAtICQxOiIKIAkJZmkKQEAgLTE2OSw3ICsxNzAsNyBAQAogCQkJaWYgdGVzdF9ydW5fcGVyZl8gIiQyIgogCQkJdGhlbgogCQkJCWlmIHRlc3QgLXogIiR2ZXJib3NlIjsgdGhlbgotCQkJCQllY2hvIC1uICIgJGkiCisJCQkJCXByaW50ZiAiICVzIiAiJGkiCiAJCQkJZWxzZQogCQkJCQllY2hvICIqIHRpbWluZyBydW4gJGkvJEdJVF9QRVJGX1JFUEVBVF9DT1VOVDoiCiAJCQkJZmkKQEAgLTE4Nyw3ICsxODgsNyBAQAogCQliYXNlPSIkcGVyZl9yZXN1bHRzX2RpciIvIiRwZXJmX3Jlc3VsdHNfcHJlZml4JChiYXNlbmFtZSAiJDAiIC5zaCkiLiIkdGVzdF9jb3VudCIKIAkJIiRURVNUX0RJUkVDVE9SWSIvcGVyZi9taW5fdGltZS5wZXJsIHRlc3RfdGltZS4qID4iJGJhc2UiLnRpbWVzCiAJZmkKLQllY2hvID4mMyAiIgorCXRlc3RfZmluaXNoXwogfQogCiAjIFdlIGV4dGVuZCB0ZXN0X2RvbmUgdG8gcHJpbnQgdGltaW5ncyBhdCB0aGUgZW5kICguL3J1biBkaXNhYmxlcyB0aGlzCmRpZmYgLS1naXQgYS90L3QwMDAwLWJhc2ljLnNoIGIvdC90MDAwMC1iYXNpYy5zaAppbmRleCAwZjEzMTgwLi4xMGJlNTJiIDEwMDc1NQotLS0gYS90L3QwMDAwLWJhc2ljLnNoCisrKyBiL3QvdDAwMDAtYmFzaWMuc2gKQEAgLTQ3LDggKzQ3LDE0IEBACiAKIHJ1bl9zdWJfdGVzdF9saWJfdGVzdCAoKSB7CiAJbmFtZT0iJDEiIGRlc2NyPSIkMiIgIyBzdGRpbiBpcyB0aGUgYm9keSBvZiB0aGUgdGVzdCBjb2RlCisJc2hpZnQgMgogCW1rZGlyICIkbmFtZSIgJiYKIAkoCisJCSMgUHJldGVuZCB3ZSdyZSBhIHRlc3QgaGFybmVzcy4gIFRoaXMgcHJldmVudHMKKwkJIyB0ZXN0LWxpYiBmcm9tIHdyaXRpbmcgdGhlIGNvdW50cyB0byBhIGZpbGUgdGhhdCB3aWxsCisJCSMgbGF0ZXIgYmUgc3VtbWFyaXplZCwgc2hvd2luZyBzcHVyaW91cyAiZmFpbGVkIiB0ZXN0cworCQlIQVJORVNTX0FDVElWRT10ICYmCisJCWV4cG9ydCBIQVJORVNTX0FDVElWRSAmJgogCQljZCAiJG5hbWUiICYmCiAJCWNhdCA+IiRuYW1lLnNoIiA8PC1FT0YgJiYKIAkJIyEkU0hFTExfUEFUSApAQCAtNjUsNyArNzEsNyBAQAogCQljYXQgPj4iJG5hbWUuc2giICYmCiAJCWNobW9kICt4ICIkbmFtZS5zaCIgJiYKIAkJZXhwb3J0IFRFU1RfRElSRUNUT1JZICYmCi0JCS4vIiRuYW1lLnNoIiA+b3V0IDI+ZXJyCisJCS4vIiRuYW1lLnNoIiAiJEAiID5vdXQgMj5lcnIKIAkpCiB9CiAKQEAgLTIxNSw2ICsyMjEsNjAgQEAKIAlFT0YKICIKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLXZlcmJvc2UnICcKKwl0ZXN0X211c3RfZmFpbCBydW5fc3ViX3Rlc3RfbGliX3Rlc3QgXAorCQl0ZXN0LXZlcmJvc2UgInRlc3QgdmVyYm9zZSIgLS12ZXJib3NlIDw8LVxFT0YgJiYKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJwYXNzaW5nIHRlc3QiIHRydWUKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJ0ZXN0IHdpdGggb3V0cHV0IiAiZWNobyBmb28iCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAiZmFpbGluZyB0ZXN0IiBmYWxzZQorCXRlc3RfZG9uZQorCUVPRgorCW12IHRlc3QtdmVyYm9zZS9vdXQgdGVzdC12ZXJib3NlL291dCsKKwlncmVwIC12ICJeSW5pdGlhbGl6ZWQgZW1wdHkiIHRlc3QtdmVyYm9zZS9vdXQrID50ZXN0LXZlcmJvc2Uvb3V0ICYmCisJY2hlY2tfc3ViX3Rlc3RfbGliX3Rlc3QgdGVzdC12ZXJib3NlIDw8LVxFT0YKKwk+IGV4cGVjdGluZyBzdWNjZXNzOiB0cnVlCisJPiBaCisJPiBvayAxIC0gcGFzc2luZyB0ZXN0CisJPiBaCisJPiBleHBlY3Rpbmcgc3VjY2VzczogZWNobyBmb28KKwk+IGZvbworCT4gWgorCT4gb2sgMiAtIHRlc3Qgd2l0aCBvdXRwdXQKKwk+IFoKKwk+IGV4cGVjdGluZyBzdWNjZXNzOiBmYWxzZQorCT4gWgorCT4gbm90IG9rIDMgLSBmYWlsaW5nIHRlc3QKKwk+ICMJZmFsc2UKKwk+IFoKKwk+ICMgZmFpbGVkIDEgYW1vbmcgMyB0ZXN0KHMpCisJPiAxLi4zCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgLS12ZXJib3NlLW9ubHknICcKKwl0ZXN0X211c3RfZmFpbCBydW5fc3ViX3Rlc3RfbGliX3Rlc3QgXAorCQl0ZXN0LXZlcmJvc2Utb25seS0yICJ0ZXN0IHZlcmJvc2Utb25seT0yIiBcCisJCS0tdmVyYm9zZS1vbmx5PTIgPDwtXEVPRiAmJgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInBhc3NpbmcgdGVzdCIgdHJ1ZQorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInRlc3Qgd2l0aCBvdXRwdXQiICJlY2hvIGZvbyIKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJmYWlsaW5nIHRlc3QiIGZhbHNlCisJdGVzdF9kb25lCisJRU9GCisJY2hlY2tfc3ViX3Rlc3RfbGliX3Rlc3QgdGVzdC12ZXJib3NlLW9ubHktMiA8PC1cRU9GCisJPiBvayAxIC0gcGFzc2luZyB0ZXN0CisJPiBaCisJPiBleHBlY3Rpbmcgc3VjY2VzczogZWNobyBmb28KKwk+IGZvbworCT4gWgorCT4gb2sgMiAtIHRlc3Qgd2l0aCBvdXRwdXQKKwk+IFoKKwk+IG5vdCBvayAzIC0gZmFpbGluZyB0ZXN0CisJPiAjCWZhbHNlCisJPiAjIGZhaWxlZCAxIGFtb25nIDMgdGVzdChzKQorCT4gMS4uMworCUVPRgorJworCiB0ZXN0X3NldF9wcmVyZXEgSEFWRUlUCiBoYXZlaXQ9bm8KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgSEFWRUlUICd0ZXN0IHJ1bnMgaWYgcHJlcmVxdWlzaXRlIGlzIHNhdGlzZmllZCcgJwpkaWZmIC0tZ2l0IGEvdC90MDAwNS1zaWduYWxzLnNoIGIvdC90MDAwNS1zaWduYWxzLnNoCmluZGV4IDkzZTU4YzAuLjk4MTQzN2IgMTAwNzU1Ci0tLSBhL3QvdDAwMDUtc2lnbmFscy5zaAorKysgYi90L3QwMDA1LXNpZ25hbHMuc2gKQEAgLTIwLDQgKzIwLDExIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICFNSU5HVyAnc2lnbmFscyBhcmUgcHJvcGFnYXRlZCB1c2luZyBzaGVsbCBjb252ZW50aW9uJyAnCisJIyB3ZSB1c2UgZXhlYyBoZXJlIHRvIGF2b2lkIGFueSBzdWItc2hlbGwgaW50ZXJwcmV0YXRpb24KKwkjIG9mIHRoZSBleGl0IGNvZGUKKwlnaXQgY29uZmlnIGFsaWFzLnNpZ3Rlcm0gIiFleGVjIHRlc3Qtc2lnY2hhaW4iICYmCisJdGVzdF9leHBlY3RfY29kZSAxNDMgZ2l0IHNpZ3Rlcm0KKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QwMDA4LWlnbm9yZXMuc2ggYi90L3QwMDA4LWlnbm9yZXMuc2gKaW5kZXggOWMxYmRlMS4uYzI5MzQyZCAxMDA3NTUKLS0tIGEvdC90MDAwOC1pZ25vcmVzLnNoCisrKyBiL3QvdDAwMDgtaWdub3Jlcy5zaApAQCAtNjYsMTYgKzY2LDIzIEBACiAKIAlpbml0X3ZhcnMgJiYKIAlybSAtZiAiJEhPTUUvc3Rkb3V0IiAiJEhPTUUvc3RkZXJyIiAiJEhPTUUvY21kIiAmJgotCWVjaG8gZ2l0ICRnbG9iYWxfYXJncyBjaGVjay1pZ25vcmUgJHF1aWV0X29wdCAkdmVyYm9zZV9vcHQgJGFyZ3MgXAorCWVjaG8gZ2l0ICRnbG9iYWxfYXJncyBjaGVjay1pZ25vcmUgJHF1aWV0X29wdCAkdmVyYm9zZV9vcHQgJG5vbl9tYXRjaGluZ19vcHQgJGFyZ3MgXAogCQk+IiRIT01FL2NtZCIgJiYKKwllY2hvICIkZXhwZWN0X2NvZGUiID4iJEhPTUUvZXhwZWN0ZWQtZXhpdC1jb2RlIiAmJgogCXRlc3RfZXhwZWN0X2NvZGUgIiRleHBlY3RfY29kZSIgXAotCQlnaXQgJGdsb2JhbF9hcmdzIGNoZWNrLWlnbm9yZSAkcXVpZXRfb3B0ICR2ZXJib3NlX29wdCAkYXJncyBcCisJCWdpdCAkZ2xvYmFsX2FyZ3MgY2hlY2staWdub3JlICRxdWlldF9vcHQgJHZlcmJvc2Vfb3B0ICRub25fbWF0Y2hpbmdfb3B0ICRhcmdzIFwKIAkJPiIkSE9NRS9zdGRvdXQiIDI+IiRIT01FL3N0ZGVyciIgJiYKIAl0ZXN0X2NtcCAiJEhPTUUvZXhwZWN0ZWQtc3Rkb3V0IiAiJEhPTUUvc3Rkb3V0IiAmJgogCXN0ZGVycl9lbXB0eV9vbl9zdWNjZXNzICIkZXhwZWN0X2NvZGUiCiB9CiAKLSMgUnVucyB0aGUgc2FtZSBjb2RlIHdpdGggMyBkaWZmZXJlbnQgbGV2ZWxzIG9mIG91dHB1dCB2ZXJib3NpdHksCisjIFJ1bnMgdGhlIHNhbWUgY29kZSB3aXRoIDQgZGlmZmVyZW50IGxldmVscyBvZiBvdXRwdXQgdmVyYm9zaXR5OgorIworIyAgIDEuIHdpdGggLXEgLyAtLXF1aWV0CisjICAgMi4gd2l0aCBkZWZhdWx0IHZlcmJvc2l0eQorIyAgIDMuIHdpdGggLXYgLyAtLXZlcmJvc2UKKyMgICA0LiB3aXRoIC12IC8gLS12ZXJib3NlLCAqYW5kKiAtbiAvIC0tbm9uLW1hdGNoaW5nCisjCiAjIGV4cGVjdGluZyBzdWNjZXNzIGVhY2ggdGltZS4gIFRha2VzIGFkdmFudGFnZSBvZiB0aGUgZmFjdCB0aGF0CiAjIGNoZWNrLWlnbm9yZSAtLXZlcmJvc2Ugb3V0cHV0IGlzIHRoZSBzYW1lIGFzIG5vcm1hbCBvdXRwdXQgZXhjZXB0CiAjIGZvciB0aGUgZXh0cmEgZmlyc3QgY29sdW1uLgpAQCAtODMsNyArOTAsOSBAQAogIyBBcmd1bWVudHM6CiAjICAgLSAob3B0aW9uYWwpIHByZXJlcXMgZm9yIHRoaXMgdGVzdCwgZS5nLiAnU1lNTElOS1MnCiAjICAgLSB0ZXN0IG5hbWUKLSMgICAtIG91dHB1dCB0byBleHBlY3QgZnJvbSAtdiAvIC0tdmVyYm9zZSBtb2RlCisjICAgLSBvdXRwdXQgdG8gZXhwZWN0IGZyb20gdGhlIGZvdXJ0aCB2ZXJib3NpdHkgbW9kZSAodGhlIG91dHB1dAorIyAgICAgZnJvbSB0aGUgb3RoZXIgdmVyYm9zaXR5IG1vZGVzIGlzIGF1dG9tYXRpY2FsbHkgaW5mZXJyZWQKKyMgICAgIGZyb20gdGhpcyB2YWx1ZSkKICMgICAtIGNvZGUgdG8gcnVuIChzaG91bGQgaW52b2tlIHRlc3RfY2hlY2tfaWdub3JlKQogdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAoKSB7CiAJcHJlcmVxPQpAQCAtOTIsOCArMTAxLDkgQEAKIAkJcHJlcmVxPSQxCiAJCXNoaWZ0CiAJZmkKLQl0ZXN0bmFtZT0iJDEiIGV4cGVjdF92ZXJib3NlPSIkMiIgY29kZT0iJDMiCisJdGVzdG5hbWU9IiQxIiBleHBlY3RfYWxsPSIkMiIgY29kZT0iJDMiCiAKKwlleHBlY3RfdmVyYm9zZT0kKCBlY2hvICIkZXhwZWN0X2FsbCIgfCBncmVwIC12ICdeOjoJJyApCiAJZXhwZWN0PSQoIGVjaG8gIiRleHBlY3RfdmVyYm9zZSIgfCBzZWQgLWUgJ3MvLioJLy8nICkKIAogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJHByZXJlcSAiJHRlc3RuYW1lIiAnCkBAIC0xMDEsMjMgKzExMSw0MCBAQAogCQlldmFsICIkY29kZSIKIAknCiAKLQlmb3IgcXVpZXRfb3B0IGluICctcScgJy0tcXVpZXQnCi0JZG8KLQkJdGVzdF9leHBlY3Rfc3VjY2VzcyAkcHJlcmVxICIkdGVzdG5hbWUke3F1aWV0X29wdDorIHdpdGggJHF1aWV0X29wdH0iICIKKwkjIC0tcXVpZXQgaXMgb25seSB2YWxpZCB3aGVuIGEgc2luZ2xlIHBhdHRlcm4gaXMgcGFzc2VkCisJaWYgdGVzdCAkKCBlY2hvICIkZXhwZWN0X2FsbCIgfCB3YyAtbCApID0gMQorCXRoZW4KKwkJZm9yIHF1aWV0X29wdCBpbiAnLXEnICctLXF1aWV0JworCQlkbworCQkJdGVzdF9leHBlY3Rfc3VjY2VzcyAkcHJlcmVxICIkdGVzdG5hbWUke3F1aWV0X29wdDorIHdpdGggJHF1aWV0X29wdH0iICIKIAkJCWV4cGVjdCAnJyAmJgogCQkJJGNvZGUKIAkJIgotCWRvbmUKLQlxdWlldF9vcHQ9CisJCWRvbmUKKwkJcXVpZXRfb3B0PQorCWZpCiAKIAlmb3IgdmVyYm9zZV9vcHQgaW4gJy12JyAnLS12ZXJib3NlJwogCWRvCi0JCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJHByZXJlcSAiJHRlc3RuYW1lJHt2ZXJib3NlX29wdDorIHdpdGggJHZlcmJvc2Vfb3B0fSIgIgotCQkJZXhwZWN0ICckZXhwZWN0X3ZlcmJvc2UnICYmCi0JCQkkY29kZQotCQkiCisJCWZvciBub25fbWF0Y2hpbmdfb3B0IGluICcnICcgLW4nICcgLS1ub24tbWF0Y2hpbmcnCisJCWRvCisJCQlpZiB0ZXN0IC1uICIkbm9uX21hdGNoaW5nX29wdCIKKwkJCXRoZW4KKwkJCQlteV9leHBlY3Q9IiRleHBlY3RfYWxsIgorCQkJZWxzZQorCQkJCW15X2V4cGVjdD0iJGV4cGVjdF92ZXJib3NlIgorCQkJZmkKKworCQkJdGVzdF9jb2RlPSIKKwkJCQlleHBlY3QgJyRteV9leHBlY3QnICYmCisJCQkJJGNvZGUKKwkJCSIKKwkJCW9wdHM9IiR2ZXJib3NlX29wdCRub25fbWF0Y2hpbmdfb3B0IgorCQkJdGVzdF9leHBlY3Rfc3VjY2VzcyAkcHJlcmVxICIkdGVzdG5hbWUke29wdHM6KyB3aXRoICRvcHRzfSIgIiR0ZXN0X2NvZGUiCisJCWRvbmUKIAlkb25lCiAJdmVyYm9zZV9vcHQ9CisJbm9uX21hdGNoaW5nX29wdD0KIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKQEAgLTE3OCw3ICsyMDUsNyBAQAogIwogIyB0ZXN0IGludmFsaWQgaW5wdXRzCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJy4gY29ybmVyLWNhc2UnICcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgJy4gY29ybmVyLWNhc2UnICc6OgkuJyAnCiAJdGVzdF9jaGVja19pZ25vcmUgLiAxCiAnCiAKQEAgLTE4OSwxMSArMjE2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAnLS1zdGRpbiB3aXRoIGVtcHR5IFNURElOJyAnJyAnCiAJdGVzdF9jaGVja19pZ25vcmUgIi0tc3RkaW4iIDEgPC9kZXYvbnVsbCAmJgotCWlmIHRlc3QgLW4gIiRxdWlldF9vcHQiOyB0aGVuCi0JCXRlc3Rfc3RkZXJyICIiCi0JZWxzZQotCQl0ZXN0X3N0ZGVyciAibm8gcGF0aHNwZWMgZ2l2ZW4uIgotCWZpCisJdGVzdF9zdGRlcnIgIiIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLXEgd2l0aCBtdWx0aXBsZSBhcmdzJyAnCkBAIC0yNzYsMjcgKzI5OSwzOSBAQAogCQl3aGVyZT0iaW4gc3ViZGlyICRzdWJkaXIiCiAJZmkKIAotCXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgIm5vbi1leGlzdGVudCBmaWxlICR3aGVyZSBub3QgaWdub3JlZCIgJycgIgotCQl0ZXN0X2NoZWNrX2lnbm9yZSAnJHtzdWJkaXJ9bm9uLWV4aXN0ZW50JyAxCi0JIgorCXRlc3RfZXhwZWN0X3N1Y2Nlc3NfbXVsdGkgIm5vbi1leGlzdGVudCBmaWxlICR3aGVyZSBub3QgaWdub3JlZCIgXAorCQkiOjoJJHtzdWJkaXJ9bm9uLWV4aXN0ZW50IiBcCisJCSJ0ZXN0X2NoZWNrX2lnbm9yZSAnJHtzdWJkaXJ9bm9uLWV4aXN0ZW50JyAxIgogCiAJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAibm9uLWV4aXN0ZW50IGZpbGUgJHdoZXJlIGlnbm9yZWQiIFwKLQkJIi5naXRpZ25vcmU6MTpvbmUJJHtzdWJkaXJ9b25lIiAiCi0JCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1vbmUnCi0JIgorCQkiLmdpdGlnbm9yZToxOm9uZQkke3N1YmRpcn1vbmUiIFwKKwkJInRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1vbmUnIgogCi0JdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAiZXhpc3RpbmcgdW50cmFja2VkIGZpbGUgJHdoZXJlIG5vdCBpZ25vcmVkIiAnJyAiCi0JCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1ub3QtaWdub3JlZCcgMQotCSIKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICJleGlzdGluZyB1bnRyYWNrZWQgZmlsZSAkd2hlcmUgbm90IGlnbm9yZWQiIFwKKwkJIjo6CSR7c3ViZGlyfW5vdC1pZ25vcmVkIiBcCisJCSJ0ZXN0X2NoZWNrX2lnbm9yZSAnJHtzdWJkaXJ9bm90LWlnbm9yZWQnIDEiCiAKLQl0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICJleGlzdGluZyB0cmFja2VkIGZpbGUgJHdoZXJlIG5vdCBpZ25vcmVkIiAnJyAiCi0JCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1pZ25vcmVkLWJ1dC1pbi1pbmRleCcgMQotCSIKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzX211bHRpICJleGlzdGluZyB0cmFja2VkIGZpbGUgJHdoZXJlIG5vdCBpZ25vcmVkIiBcCisJCSI6Ogkke3N1YmRpcn1pZ25vcmVkLWJ1dC1pbi1pbmRleCIgXAorCQkidGVzdF9jaGVja19pZ25vcmUgJyR7c3ViZGlyfWlnbm9yZWQtYnV0LWluLWluZGV4JyAxIgogCiAJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAiZXhpc3RpbmcgdW50cmFja2VkIGZpbGUgJHdoZXJlIGlnbm9yZWQiIFwKLQkJIi5naXRpZ25vcmU6MjppZ25vcmVkLSoJJHtzdWJkaXJ9aWdub3JlZC1hbmQtdW50cmFja2VkIiAiCi0JCXRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1pZ25vcmVkLWFuZC11bnRyYWNrZWQnCi0JIgorCQkiLmdpdGlnbm9yZToyOmlnbm9yZWQtKgkke3N1YmRpcn1pZ25vcmVkLWFuZC11bnRyYWNrZWQiIFwKKwkJInRlc3RfY2hlY2tfaWdub3JlICcke3N1YmRpcn1pZ25vcmVkLWFuZC11bnRyYWNrZWQnIgorCisJdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSAibWl4IG9mIGZpbGUgdHlwZXMgJHdoZXJlIiBcCisiOjoJJHtzdWJkaXJ9bm9uLWV4aXN0ZW50CisuZ2l0aWdub3JlOjE6b25lCSR7c3ViZGlyfW9uZQorOjoJJHtzdWJkaXJ9bm90LWlnbm9yZWQKKzo6CSR7c3ViZGlyfWlnbm9yZWQtYnV0LWluLWluZGV4CisuZ2l0aWdub3JlOjI6aWdub3JlZC0qCSR7c3ViZGlyfWlnbm9yZWQtYW5kLXVudHJhY2tlZCIgXAorCQkidGVzdF9jaGVja19pZ25vcmUgJworCQkJJHtzdWJkaXJ9bm9uLWV4aXN0ZW50CisJCQkke3N1YmRpcn1vbmUKKwkJCSR7c3ViZGlyfW5vdC1pZ25vcmVkCisJCQkke3N1YmRpcn1pZ25vcmVkLWJ1dC1pbi1pbmRleAorCQkJJHtzdWJkaXJ9aWdub3JlZC1hbmQtdW50cmFja2VkJworCQkiCiBkb25lCiAKICMgSGF2aW5nIGVzdGFibGlzaGVkIHRoZSBhYm92ZSwgZnJvbSBub3cgb24gd2UgbW9zdGx5IHRlc3QgYWdhaW5zdApAQCAtMzkxLDcgKzQyNiw3IEBACiAjCiAjIHRlc3QgaGFuZGxpbmcgb2Ygc3ltbGlua3MKIAotdGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSBTWU1MSU5LUyAnc3ltbGluaycgJycgJwordGVzdF9leHBlY3Rfc3VjY2Vzc19tdWx0aSBTWU1MSU5LUyAnc3ltbGluaycgJzo6CWEvc3ltbGluaycgJwogCXRlc3RfY2hlY2tfaWdub3JlICJhL3N5bWxpbmsiIDEKICcKIApAQCAtNTc0LDM3ICs2MDksMzQgQEAKIAlnbG9iYWx0d28KIAliL2dsb2JhbHR3bwogCS4uL2IvZ2xvYmFsdHdvCisJYy9ub3QtaWdub3JlZAogRU9GCi1jYXQgPDwtXEVPRiA+ZXhwZWN0ZWQtZGVmYXVsdAotCS4uL29uZQotCW9uZQotCWIvb24KLQliL29uZQotCWIvb25lIG9uZQotCWIvb25lIHR3bwotCSJiL29uZVwidGhyZWUiCi0JYi90d28KLQliL3R3b29vCi0JLi4vZ2xvYmFsdHdvCi0JZ2xvYmFsdHdvCi0JYi9nbG9iYWx0d28KLQkuLi9iL2dsb2JhbHR3bwotRU9GCi1jYXQgPDwtRU9GID5leHBlY3RlZC12ZXJib3NlCisjIE4uQi4gd2UgZGVsaWJlcmF0ZWx5IGVuZCBTVERJTiB3aXRoIGEgbm9uLW1hdGNoaW5nIHBhdHRlcm4gaW4gb3JkZXIKKyMgdG8gdGVzdCB0aGF0IHRoZSBleGl0IGNvZGUgaW5kaWNhdGVzIHRoYXQgb25lIG9yIG1vcmUgb2YgdGhlCisjIHByb3ZpZGVkIHBhdGhzIGlzIGlnbm9yZWQgLSBpbiBvdGhlciB3b3JkcywgdGhhdCBpdCByZXByZXNlbnRzIGFuCisjIGFnZ3JlZ2F0aW9uIG9mIGFsbCB0aGUgcmVzdWx0cywgbm90IGp1c3QgdGhlIGZpbmFsIHJlc3VsdC4KKworY2F0IDw8LUVPRiA+ZXhwZWN0ZWQtYWxsCiAJLmdpdGlnbm9yZToxOm9uZQkuLi9vbmUKKwk6OgkuLi9ub3QtaWdub3JlZAogCS5naXRpZ25vcmU6MTpvbmUJb25lCisJOjoJbm90LWlnbm9yZWQKIAlhL2IvLmdpdGlnbm9yZTo4OiFvbioJYi9vbgogCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgliL29uZQogCWEvYi8uZ2l0aWdub3JlOjg6IW9uKgliL29uZSBvbmUKIAlhL2IvLmdpdGlnbm9yZTo4OiFvbioJYi9vbmUgdHdvCiAJYS9iLy5naXRpZ25vcmU6ODohb24qCSJiL29uZVwidGhyZWUiCiAJYS9iLy5naXRpZ25vcmU6OTohdHdvCWIvdHdvCisJOjoJYi9ub3QtaWdub3JlZAogCWEvLmdpdGlnbm9yZToxOnR3byoJYi90d29vbwogCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCS4uL2dsb2JhbHR3bwogCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWdsb2JhbHR3bwogCSRnbG9iYWxfZXhjbHVkZXM6MjohZ2xvYmFsdHdvCWIvZ2xvYmFsdHdvCiAJJGdsb2JhbF9leGNsdWRlczoyOiFnbG9iYWx0d28JLi4vYi9nbG9iYWx0d28KKwk6OgljL25vdC1pZ25vcmVkCiBFT0YKK2dyZXAgLXYgJ146OgknIGV4cGVjdGVkLWFsbCA+ZXhwZWN0ZWQtdmVyYm9zZQorc2VkIC1lICdzLy4qCS8vJyBleHBlY3RlZC12ZXJib3NlID5leHBlY3RlZC1kZWZhdWx0CiAKIHNlZCAtZSAncy9eIi8vJyAtZSAncy9cXC8vJyAtZSAncy8iJC8vJyBzdGRpbiB8IFwKIAl0ciAiXG4iICJcMCIgPnN0ZGluMApAQCAtNjI5LDYgKzY2MSwxNCBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1zdGRpbiBmcm9tIHN1YmRpcmVjdG9yeSB3aXRoIC12IC1uJyAnCisJZXhwZWN0X2Zyb21fc3RkaW4gPGV4cGVjdGVkLWFsbCAmJgorCSgKKwkJY2QgYSAmJgorCQl0ZXN0X2NoZWNrX2lnbm9yZSAiLS1zdGRpbiAtdiAtbiIgPC4uL3N0ZGluCisJKQorJworCiBmb3Igb3B0cyBpbiAnLS1zdGRpbiAteicgJy16IC0tc3RkaW4nCiBkbwogCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgIiRvcHRzIGZyb20gc3ViZGlyZWN0b3J5IiAnCkBAIC02NDgsNSArNjg4LDMxIEBACiAJJwogZG9uZQogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFBJUEUgJ3N0cmVhbWluZyBzdXBwb3J0IGZvciAtLXN0ZGluJyAnCisJbWtmaWZvIGluIG91dCAmJgorCShnaXQgY2hlY2staWdub3JlIC1uIC12IC0tc3RkaW4gPGluID5vdXQgJikgJiYKKworCSMgV2UgY2Fubm90IGp1c3QgImVjaG8gPmluIiBiZWNhdXNlIGNoZWNrLWlnbm9yZSB3b3VsZCBnZXQgRU9GCisJIyBhZnRlciBlY2hvIGV4aXRlZDsgaW5zdGVhZCB3ZSBvcGVuIHRoZSBkZXNjcmlwdG9yIGluIG91cgorCSMgc2hlbGwsIGFuZCB0aGVuIGVjaG8gdG8gdGhlIGZkLiBXZSBtYWtlIHN1cmUgdG8gY2xvc2UgaXQgYXQKKwkjIHRoZSBlbmQsIHNvIHRoYXQgdGhlIHN1YnByb2Nlc3MgZG9lcyBnZXQgRU9GIGFuZCBkaWVzCisJIyBwcm9wZXJseS4KKwkjCisJIyBTaW1pbGFybHksIHdlIG11c3Qga2VlcCAib3V0IiBvcGVuIHNvIHRoYXQgY2hlY2staWdub3JlIGRvZXMKKwkjIG5vdCBldmVyIGdldCBTSUdQSVBFIHRyeWluZyB0byB3cml0ZSB0byB1cy4gTm90IG9ubHkgd291bGQgdGhhdAorCSMgcHJvZHVjZSBpbmNvcnJlY3QgcmVzdWx0cywgYnV0IHRoZW4gdGhlcmUgd291bGQgYmUgbm8gd3JpdGVyIG9uIHRoZQorCSMgb3RoZXIgZW5kIG9mIHRoZSBwaXBlLCBhbmQgd2Ugd291bGQgcG90ZW50aWFsbHkgYmxvY2sgZm9yZXZlciB0cnlpbmcKKwkjIHRvIG9wZW4gaXQuCisJZXhlYyA5PmluICYmCisJZXhlYyA4PG91dCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZXhlYyA5PiYtIiAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZXhlYyA4PCYtIiAmJgorCWVjaG8gPiY5IG9uZSAmJgorCXJlYWQgcmVzcG9uc2UgPCY4ICYmCisJZWNobyAiJHJlc3BvbnNlIiB8IGdyZXAgIl5cLmdpdGlnbm9yZToxOm9uZQlvbmUiICYmCisJZWNobyA+JjkgdHdvICYmCisJcmVhZCByZXNwb25zZSA8JjggJiYKKwllY2hvICIkcmVzcG9uc2UiIHwgZ3JlcCAiXjo6CXR3byIKKycKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QwMDA5LXByaW8tcXVldWUuc2ggYi90L3QwMDA5LXByaW8tcXVldWUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTQwNDVjMwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDAwMDktcHJpby1xdWV1ZS5zaApAQCAtMCwwICsxLDUwIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nYmFzaWMgdGVzdHMgZm9yIHByaW9yaXR5IHF1ZXVlIGltcGxlbWVudGF0aW9uJworLiAuL3Rlc3QtbGliLnNoCisKK2NhdCA+ZXhwZWN0IDw8J0VPRicKKzEKKzIKKzMKKzQKKzUKKzUKKzYKKzcKKzgKKzkKKzEwCitFT0YKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Jhc2ljIG9yZGVyaW5nJyAnCisJdGVzdC1wcmlvLXF1ZXVlIDIgNiAzIDEwIDkgNSA3IDQgNSA4IDEgZHVtcCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCitjYXQgPmV4cGVjdCA8PCdFT0YnCisyCiszCis0CisxCis1Cis2CitFT0YKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21peGVkIHB1dCBhbmQgZ2V0JyAnCisJdGVzdC1wcmlvLXF1ZXVlIDYgMiA0IGdldCA1IDMgZ2V0IGdldCAxIGR1bXAgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKworY2F0ID5leHBlY3QgPDwnRU9GJworMQorMgorTlVMTAorMQorMgorTlVMTAorRU9GCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdub3RpY2UgZW1wdHkgcXVldWUnICcKKwl0ZXN0LXByaW8tcXVldWUgMSAyIGdldCBnZXQgZ2V0IDEgMiBnZXQgZ2V0IGdldCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDAwNDAtcGFyc2Utb3B0aW9ucy5zaCBiL3QvdDAwNDAtcGFyc2Utb3B0aW9ucy5zaAppbmRleCAyNDRhNDNjLi42NTYwNmRmIDEwMDc1NQotLS0gYS90L3QwMDQwLXBhcnNlLW9wdGlvbnMuc2gKKysrIGIvdC90MDA0MC1wYXJzZS1vcHRpb25zLnNoCkBAIC01MCw3ICs1MCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgaGVscCcgJwogCXRlc3RfbXVzdF9mYWlsIHRlc3QtcGFyc2Utb3B0aW9ucyAtaCA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTc1LDcgKzc1LDcgQEAKIAlzaGlmdCAmJgogCXNlZCAicy9eJHdoYXQgLiovJHdoYXQgJGV4cGVjdC8iIDxleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgogCXRlc3QtcGFyc2Utb3B0aW9ucyAkKiA+b3V0cHV0IDI+b3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiB9CiAKQEAgLTg2LDcgKzg2LDcgQEAKIAlzaGlmdCAmJgogCXNlZCAicy9eJHdoYXQgLiovJHdoYXQgJGV4cGVjdC8iIDxleHBlY3QudGVtcGxhdGUgPmV4cGVjdCAmJgogCXRlc3QtcGFyc2Utb3B0aW9ucyAkKiA+b3V0cHV0IDI+b3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dAogfQogCkBAIC05OSw3ICs5OSw3IEBACiAJZXNhYyAmJgogCWNhdCBleHBlY3QuZXJyID4+ZXhwZWN0ICYmCiAJdGVzdF9tdXN0X2ZhaWwgdGVzdC1wYXJzZS1vcHRpb25zICQqID5vdXRwdXQgMj5vdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0LmVycgogfQogCkBAIC0xMTIsNyArMTEyLDcgQEAKIAllc2FjICYmCiAJY2F0IGV4cGVjdC5lcnIgPj5leHBlY3QgJiYKIAl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhcnNlLW9wdGlvbnMgJCogPm91dHB1dCAyPm91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0ICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0LmVycgogfQogCkBAIC0xNDksNyArMTQ5LDcgQEAKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLXMxMjMgLWIgLWkgMTcyOSAtYiAtdnYgLW4gLUYgbXkuZmlsZSBcCiAJPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVycgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyCiAnCiAKIGNhdCA+IGV4cGVjdCA8PCBFT0YKQEAgLTE2OCw3ICsxNjgsNyBAQAogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLWJvb2xlYW4gLS1pbnRlZ2VyIDE3MjkgLS1ib29sZWFuIC0tc3RyaW5nMj0zMjEgXAogCQktLXZlcmJvc2UgLS12ZXJib3NlIC0tbm8tZHJ5LXJ1biAtLWFiYnJldj0xMCAtLWZpbGUgZmkubGVcCiAJCS0tb2Jzb2xldGUgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTE5OSw3ICsxOTksNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW50ZXJtaW5nbGVkIGFyZ3VtZW50cycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyBhMSAtLXN0cmluZyAxMjMgYjEgLS1ib29sZWFuIC1qIDEzIC0tIC0tYm9vbGVhbiBcCiAJCT4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0yMTcsMTMgKzIxNywxMyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1bmFtYmlndW91c2x5IGFiYnJldmlhdGVkIG9wdGlvbicgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLWludCAyIC0tYm9vbGVhbiAtLW5vLWJvID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1bmFtYmlndW91c2x5IGFiYnJldmlhdGVkIG9wdGlvbiB3aXRoICI9IicgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLWludD0yID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0yNDYsNyArMjQ2LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbm9uIGFtYmlndW91cyBvcHRpb24gKGFmdGVyIHR3byBvcHRpb25zIGl0IGFiYnJldmlhdGVzKScgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLXN0IDEyMyA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIApAQCAtMjU2LDcgKzI1Niw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RldGVjdCBwb3NzaWJsZSB0eXBvcycgJwogCXRlc3RfbXVzdF9mYWlsIHRlc3QtcGFyc2Utb3B0aW9ucyAtYm9vbGVhbiA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQgJiYKIAl0ZXN0X2NtcCB0eXBvLmVyciBvdXRwdXQuZXJyCiAnCiAKQEAgLTI2Niw3ICsyNjYsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZXRlY3QgcG9zc2libGUgdHlwb3MnICcKIAl0ZXN0X211c3RfZmFpbCB0ZXN0LXBhcnNlLW9wdGlvbnMgLWFtYmlndW91cyA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQgJiYKIAl0ZXN0X2NtcCB0eXBvLmVyciBvdXRwdXQuZXJyCiAnCiAKQEAgLTI4NSw3ICsyODUsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdrZWVwIHNvbWUgb3B0aW9ucyBhcyBhcmd1bWVudHMnICcKIAl0ZXN0LXBhcnNlLW9wdGlvbnMgLS1xdXV4ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLSAgICAgICAgdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogICAgICAgICB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTMwNSw3ICszMDUsNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX0RBVEUoKSBhbmQgT1BUX1NFVF9QVFIoKSB3b3JrJyAnCiAJdGVzdC1wYXJzZS1vcHRpb25zIC10ICIxOTcwLTAxLTAxIDAwOjAwOjAxICswMDAwIiAtLWRlZmF1bHQtc3RyaW5nIFwKIAkJZm9vIC1xID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCkBAIC0zMjQsNyArMzI0LDcgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnT1BUX0NBTExCQUNLKCkgYW5kIE9QVF9CSVQoKSB3b3JrJyAnCiAJdGVzdC1wYXJzZS1vcHRpb25zIC0tbGVuZ3RoPWZvdXIgLWIgLTQgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTM1MiwxMyArMzUyLDEzIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CSVQoKSBhbmQgT1BUX1NFVF9JTlQoKSB3b3JrJyAnCiAJdGVzdC1wYXJzZS1vcHRpb25zIC0tc2V0MjMgLWJiYmJiIC0tbm8tb3I0ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfTkVHQklUKCkgYW5kIE9QVF9TRVRfSU5UKCkgd29yaycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLXNldDIzIC1iYmJiYiAtLW5lZy1vcjQgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTM3NiwxOSArMzc2LDE5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9CSVQoKSB3b3JrcycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtYmIgLS1vcjQgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9ORUdCSVQoKSB3b3JrcycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtYmIgLS1uby1uZWctb3I0ID4gb3V0cHV0IDI+IG91dHB1dC5lcnIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0LmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQuZXJyICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdPUFRfQ09VTlRVUCgpIHdpdGggUEFSU0VfT1BUX05PREFTSCB3b3JrcycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyArICsgKyArICsgKyA+IG91dHB1dCAyPiBvdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIApAQCAtNDA2LDcgKzQwNiw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ09QVF9OVU1CRVJfQ0FMTEJBQ0soKSB3b3JrcycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtMTIzNDUgPiBvdXRwdXQgMj4gb3V0cHV0LmVyciAmJgotCXRlc3QgISAtcyBvdXRwdXQuZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5lcnIgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0CiAnCiAKQEAgLTQyNCw3ICs0MjQsNyBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICduZWdhdGlvbiBvZiBPUFRfTk9ORUcgZmxhZ3MgaXMgbm90IGFtYmlndW91cycgJwogCXRlc3QtcGFyc2Utb3B0aW9ucyAtLW5vLWFtYmlnID5vdXRwdXQgMj5vdXRwdXQuZXJyICYmCi0JdGVzdCAhIC1zIG91dHB1dC5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0LmVyciAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKICcKIApkaWZmIC0tZ2l0IGEvdC90MDA2MC1wYXRoLXV0aWxzLnNoIGIvdC90MDA2MC1wYXRoLXV0aWxzLnNoCmluZGV4IDA5YTQyYTQuLjNhNDhkZTIgMTAwNzU1Ci0tLSBhL3QvdDAwNjAtcGF0aC11dGlscy5zaAorKysgYi90L3QwMDYwLXBhdGgtdXRpbHMuc2gKQEAgLTgsOCArOCwxNSBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIG5vcm1fcGF0aCgpIHsKKwlleHBlY3RlZD0kKHRlc3QtcGF0aC11dGlscyBtaW5nd19wYXRoICIkMiIpCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAkMyAibm9ybWFsaXplIHBhdGg6ICQxID0+ICQyIiBcCi0JInRlc3QgXCJcJCh0ZXN0LXBhdGgtdXRpbHMgbm9ybWFsaXplX3BhdGhfY29weSAnJDEnKVwiID0gJyQyJyIKKwkidGVzdCBcIlwkKHRlc3QtcGF0aC11dGlscyBub3JtYWxpemVfcGF0aF9jb3B5ICckMScpXCIgPSAnJGV4cGVjdGVkJyIKK30KKworcmVsYXRpdmVfcGF0aCgpIHsKKwlleHBlY3RlZD0kKHRlc3QtcGF0aC11dGlscyBtaW5nd19wYXRoICIkMyIpCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAkNCAicmVsYXRpdmUgcGF0aDogJDEgJDIgPT4gJDMiIFwKKwkidGVzdCBcIlwkKHRlc3QtcGF0aC11dGlscyByZWxhdGl2ZV9wYXRoICckMScgJyQyJylcIiA9ICckZXhwZWN0ZWQnIgogfQogCiAjIE9uIFdpbmRvd3MsIHdlIGFyZSB1c2luZyBNU1lTJ3MgYmFzaCwgd2hpY2ggbWFuZ2xlcyB0aGUgcGF0aHMuCkBAIC0zNCw4ICs0MSw4IEBACiAJIHRlc3QgXCJcJGFjdHVhbFwiID0gJyRleHBlY3RlZCciCiB9CiAKLSMgQWJzb2x1dGUgcGF0aCB0ZXN0cyBtdXN0IGJlIHNraXBwZWQgb24gV2luZG93cyBiZWNhdXNlIGR1ZSB0byBwYXRoIG1hbmdsaW5nCi0jIHRoZSB0ZXN0IHByb2dyYW0gbmV2ZXIgc2VlcyBhIFBPU0lYLXN0eWxlIGFic29sdXRlIHBhdGgKKyMgU29tZSBhYnNvbHV0ZSBwYXRoIHRlc3RzIHNob3VsZCBiZSBza2lwcGVkIG9uIFdpbmRvd3MgZHVlIHRvIHBhdGggbWFuZ2xpbmcKKyMgb24gUE9TSVgtc3R5bGUgYWJzb2x1dGUgcGF0aHMKIGNhc2UgJCh1bmFtZSAtcykgaW4KICpNSU5HVyopCiAJOzsKQEAgLTY4LDMwICs3NSwzMCBAQAogbm9ybV9wYXRoIGQxLy4uLi9kMiBkMS8uLi4vZDIKIG5vcm1fcGF0aCBkMS8uLi4vLi8uLi9kMiBkMS9kMgogCi1ub3JtX3BhdGggLyAvIFBPU0lYCitub3JtX3BhdGggLyAvCiBub3JtX3BhdGggLy8gLyBQT1NJWAogbm9ybV9wYXRoIC8vLyAvIFBPU0lYCi1ub3JtX3BhdGggLy4gLyBQT1NJWAorbm9ybV9wYXRoIC8uIC8KIG5vcm1fcGF0aCAvLi8gLyBQT1NJWAogbm9ybV9wYXRoIC8uLy4uICsrZmFpbGVkKysgUE9TSVgKLW5vcm1fcGF0aCAvLi4vLiArK2ZhaWxlZCsrIFBPU0lYCitub3JtX3BhdGggLy4uLy4gKytmYWlsZWQrKwogbm9ybV9wYXRoIC8uLy4uLy4vLyArK2ZhaWxlZCsrIFBPU0lYCiBub3JtX3BhdGggL2Rpci8uLiAvIFBPU0lYCiBub3JtX3BhdGggL2Rpci9zdWIvLi4vLi4gLyBQT1NJWAogbm9ybV9wYXRoIC9kaXIvc3ViLy4uLy4uLy4uICsrZmFpbGVkKysgUE9TSVgKLW5vcm1fcGF0aCAvZGlyIC9kaXIgUE9TSVgKLW5vcm1fcGF0aCAvZGlyLy8gL2Rpci8gUE9TSVgKLW5vcm1fcGF0aCAvLi9kaXIgL2RpciBQT1NJWAotbm9ybV9wYXRoIC9kaXIvLiAvZGlyLyBQT1NJWAotbm9ybV9wYXRoIC9kaXIvLy8uLyAvZGlyLyBQT1NJWAotbm9ybV9wYXRoIC9kaXIvL3N1Yi8uLiAvZGlyLyBQT1NJWAotbm9ybV9wYXRoIC9kaXIvc3ViLy4uLyAvZGlyLyBQT1NJWAorbm9ybV9wYXRoIC9kaXIgL2Rpcgorbm9ybV9wYXRoIC9kaXIvLyAvZGlyLworbm9ybV9wYXRoIC8uL2RpciAvZGlyCitub3JtX3BhdGggL2Rpci8uIC9kaXIvCitub3JtX3BhdGggL2Rpci8vLy4vIC9kaXIvCitub3JtX3BhdGggL2Rpci8vc3ViLy4uIC9kaXIvCitub3JtX3BhdGggL2Rpci9zdWIvLi4vIC9kaXIvCiBub3JtX3BhdGggLy9kaXIvc3ViLy4uLy4gL2Rpci8gUE9TSVgKLW5vcm1fcGF0aCAvZGlyL3MxLy4uL3MyLyAvZGlyL3MyLyBQT1NJWAotbm9ybV9wYXRoIC9kMS9zMS8vL3MyLy4uLy8uLi9zMy8gL2QxL3MzLyBQT1NJWAotbm9ybV9wYXRoIC9kMS9zMS8vLi4vczIvLi4vLi4vZDIgL2QyIFBPU0lYCi1ub3JtX3BhdGggL2QxLy4uLi9kMiAvZDEvLi4uL2QyIFBPU0lYCi1ub3JtX3BhdGggL2QxLy4uLi8uLy4uL2QyIC9kMS9kMiBQT1NJWAorbm9ybV9wYXRoIC9kaXIvczEvLi4vczIvIC9kaXIvczIvCitub3JtX3BhdGggL2QxL3MxLy8vczIvLi4vLy4uL3MzLyAvZDEvczMvCitub3JtX3BhdGggL2QxL3MxLy8uLi9zMi8uLi8uLi9kMiAvZDIKK25vcm1fcGF0aCAvZDEvLi4uL2QyIC9kMS8uLi4vZDIKK25vcm1fcGF0aCAvZDEvLi4uLy4vLi4vZDIgL2QxL2QyCiAKIGFuY2VzdG9yIC8gLyAtMQogYW5jZXN0b3IgL2ZvbyAvIDAKQEAgLTE4Myw0ICsxOTAsMzMgQEAKIAl0ZXN0ICIkc3ltIiA9ICIkKHRlc3QtcGF0aC11dGlscyByZWFsX3BhdGggIiRkaXIyL3N5bWwiKSIKICcKIAorcmVsYXRpdmVfcGF0aCAvYS9iL2MvCS9hL2IvCQljLworcmVsYXRpdmVfcGF0aCAvYS9iL2MvCS9hL2IJCWMvCityZWxhdGl2ZV9wYXRoIC9hLy9iLy9jLwkvL2EvYi8vCQljLwlQT1NJWAorcmVsYXRpdmVfcGF0aCAvYS9iCS9hL2IJCS4vCityZWxhdGl2ZV9wYXRoIC9hL2IvCS9hL2IJCS4vCityZWxhdGl2ZV9wYXRoIC9hCS9hL2IJCS4uLworcmVsYXRpdmVfcGF0aCAvCQkvYS9iLwkJLi4vLi4vCityZWxhdGl2ZV9wYXRoIC9hL2MJL2EvYi8JCS4uL2MKK3JlbGF0aXZlX3BhdGggL2EvYwkvYS9iCQkuLi9jCityZWxhdGl2ZV9wYXRoIC94L3kJL2EvYi8JCS4uLy4uL3gveQorcmVsYXRpdmVfcGF0aCAvYS9iCSI8ZW1wdHk+IgkvYS9iCityZWxhdGl2ZV9wYXRoIC9hL2IgCSI8bnVsbD4iCS9hL2IKK3JlbGF0aXZlX3BhdGggYS9iL2MvCWEvYi8JCWMvCityZWxhdGl2ZV9wYXRoIGEvYi9jLwlhL2IJCWMvCityZWxhdGl2ZV9wYXRoIGEvYi8vYwlhLy9iCQljCityZWxhdGl2ZV9wYXRoIGEvYi8JYS9iLwkJLi8KK3JlbGF0aXZlX3BhdGggYS9iLwlhL2IJCS4vCityZWxhdGl2ZV9wYXRoIGEJCWEvYgkJLi4vCityZWxhdGl2ZV9wYXRoIHgveQlhL2IJCS4uLy4uL3gveQorcmVsYXRpdmVfcGF0aCBhL2MJYS9iCQkuLi9jCityZWxhdGl2ZV9wYXRoIGEvYgkiPGVtcHR5PiIJYS9iCityZWxhdGl2ZV9wYXRoIGEvYiAJIjxudWxsPiIJYS9iCityZWxhdGl2ZV9wYXRoICI8ZW1wdHk+IgkvYS9iCQkuLworcmVsYXRpdmVfcGF0aCAiPGVtcHR5PiIJIjxlbXB0eT4iCS4vCityZWxhdGl2ZV9wYXRoICI8ZW1wdHk+IgkiPG51bGw+IgkuLworcmVsYXRpdmVfcGF0aCAiPG51bGw+IgkiPGVtcHR5PiIJLi8KK3JlbGF0aXZlX3BhdGggIjxudWxsPiIJIjxudWxsPiIJLi8KK3JlbGF0aXZlX3BhdGggIjxudWxsPiIJL2EvYgkJLi8KKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxMDA2LWNhdC1maWxlLnNoIGIvdC90MTAwNi1jYXQtZmlsZS5zaAppbmRleCA5Y2M1YzZiLi40ZTkxMWZiIDEwMDc1NQotLS0gYS90L3QxMDA2LWNhdC1maWxlLnNoCisrKyBiL3QvdDEwMDYtY2F0LWZpbGUuc2gKQEAgLTM2LDY2ICszNiw0NyBAQAogICAgICcKIAogICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIlR5cGUgb2YgJHR5cGUgaXMgY29ycmVjdCIgJwotICAgICAgICB0ZXN0ICR0eXBlID0gIiQoZ2l0IGNhdC1maWxlIC10ICRzaGExKSIKKwllY2hvICR0eXBlID5leHBlY3QgJiYKKwlnaXQgY2F0LWZpbGUgLXQgJHNoYTEgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICAgICAnCiAKICAgICB0ZXN0X2V4cGVjdF9zdWNjZXNzICJTaXplIG9mICR0eXBlIGlzIGNvcnJlY3QiICcKLSAgICAgICAgdGVzdCAkc2l6ZSA9ICIkKGdpdCBjYXQtZmlsZSAtcyAkc2hhMSkiCisJZWNobyAkc2l6ZSA+ZXhwZWN0ICYmCisJZ2l0IGNhdC1maWxlIC1zICRzaGExID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAgICAgJwogCiAgICAgdGVzdCAteiAiJGNvbnRlbnQiIHx8CiAgICAgdGVzdF9leHBlY3Rfc3VjY2VzcyAiQ29udGVudCBvZiAkdHlwZSBpcyBjb3JyZWN0IiAnCi0JZXhwZWN0PSIkKG1heWJlX3JlbW92ZV90aW1lc3RhbXAgIiRjb250ZW50IiAkbm9fdHMpIgotCWFjdHVhbD0iJChtYXliZV9yZW1vdmVfdGltZXN0YW1wICIkKGdpdCBjYXQtZmlsZSAkdHlwZSAkc2hhMSkiICRub190cykiCi0KLSAgICAgICAgaWYgdGVzdCAieiRleHBlY3QiID0gInokYWN0dWFsIgotCXRoZW4KLQkJOiBoYXBweQotCWVsc2UKLQkJZWNobyAiT29wczogZXhwZWN0ZWQgJGV4cGVjdCIKLQkJZWNobyAiYnV0IGdvdCAkYWN0dWFsIgotCQlmYWxzZQotICAgICAgICBmaQorCW1heWJlX3JlbW92ZV90aW1lc3RhbXAgIiRjb250ZW50IiAkbm9fdHMgPmV4cGVjdCAmJgorCW1heWJlX3JlbW92ZV90aW1lc3RhbXAgIiQoZ2l0IGNhdC1maWxlICR0eXBlICRzaGExKSIgJG5vX3RzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAgICAgJwogCiAgICAgdGVzdF9leHBlY3Rfc3VjY2VzcyAiUHJldHR5IGNvbnRlbnQgb2YgJHR5cGUgaXMgY29ycmVjdCIgJwotCWV4cGVjdD0iJChtYXliZV9yZW1vdmVfdGltZXN0YW1wICIkcHJldHR5X2NvbnRlbnQiICRub190cykiCi0JYWN0dWFsPSIkKG1heWJlX3JlbW92ZV90aW1lc3RhbXAgIiQoZ2l0IGNhdC1maWxlIC1wICRzaGExKSIgJG5vX3RzKSIKLSAgICAgICAgaWYgdGVzdCAieiRleHBlY3QiID0gInokYWN0dWFsIgotCXRoZW4KLQkJOiBoYXBweQotCWVsc2UKLQkJZWNobyAiT29wczogZXhwZWN0ZWQgJGV4cGVjdCIKLQkJZWNobyAiYnV0IGdvdCAkYWN0dWFsIgotCQlmYWxzZQotICAgICAgICBmaQorCW1heWJlX3JlbW92ZV90aW1lc3RhbXAgIiRwcmV0dHlfY29udGVudCIgJG5vX3RzID5leHBlY3QgJiYKKwltYXliZV9yZW1vdmVfdGltZXN0YW1wICIkKGdpdCBjYXQtZmlsZSAtcCAkc2hhMSkiICRub190cyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogICAgICcKIAogICAgIHRlc3QgLXogIiRjb250ZW50IiB8fAogICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIi0tYmF0Y2ggb3V0cHV0IG9mICR0eXBlIGlzIGNvcnJlY3QiICcKLQlleHBlY3Q9IiQobWF5YmVfcmVtb3ZlX3RpbWVzdGFtcCAiJGJhdGNoX291dHB1dCIgJG5vX3RzKSIKLQlhY3R1YWw9IiQobWF5YmVfcmVtb3ZlX3RpbWVzdGFtcCAiJChlY2hvICRzaGExIHwgZ2l0IGNhdC1maWxlIC0tYmF0Y2gpIiAkbm9fdHMpIgotICAgICAgICBpZiB0ZXN0ICJ6JGV4cGVjdCIgPSAieiRhY3R1YWwiCi0JdGhlbgotCQk6IGhhcHB5Ci0JZWxzZQotCQllY2hvICJPb3BzOiBleHBlY3RlZCAkZXhwZWN0IgotCQllY2hvICJidXQgZ290ICRhY3R1YWwiCi0JCWZhbHNlCi0gICAgICAgIGZpCisJbWF5YmVfcmVtb3ZlX3RpbWVzdGFtcCAiJGJhdGNoX291dHB1dCIgJG5vX3RzID5leHBlY3QgJiYKKwltYXliZV9yZW1vdmVfdGltZXN0YW1wICIkKGVjaG8gJHNoYTEgfCBnaXQgY2F0LWZpbGUgLS1iYXRjaCkiICRub190cyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogICAgICcKIAogICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgIi0tYmF0Y2gtY2hlY2sgb3V0cHV0IG9mICR0eXBlIGlzIGNvcnJlY3QiICcKLQlleHBlY3Q9IiRzaGExICR0eXBlICRzaXplIgotCWFjdHVhbD0iJChlY2hvX3dpdGhvdXRfbmV3bGluZSAkc2hhMSB8IGdpdCBjYXQtZmlsZSAtLWJhdGNoLWNoZWNrKSIKLSAgICAgICAgaWYgdGVzdCAieiRleHBlY3QiID0gInokYWN0dWFsIgotCXRoZW4KLQkJOiBoYXBweQotCWVsc2UKLQkJZWNobyAiT29wczogZXhwZWN0ZWQgJGV4cGVjdCIKLQkJZWNobyAiYnV0IGdvdCAkYWN0dWFsIgotCQlmYWxzZQotICAgICAgICBmaQorCWVjaG8gIiRzaGExICR0eXBlICRzaXplIiA+ZXhwZWN0ICYmCisJZWNob193aXRob3V0X25ld2xpbmUgJHNoYTEgfCBnaXQgY2F0LWZpbGUgLS1iYXRjaC1jaGVjayA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorICAgICcKKworICAgIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgImN1c3RvbSAtLWJhdGNoLWNoZWNrIGZvcm1hdCIgJworCWVjaG8gIiR0eXBlICRzaGExIiA+ZXhwZWN0ICYmCisJZWNobyAkc2hhMSB8IGdpdCBjYXQtZmlsZSAtLWJhdGNoLWNoZWNrPSIlKG9iamVjdHR5cGUpICUob2JqZWN0bmFtZSkiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAgICAgJwogfQogCmRpZmYgLS1naXQgYS90L3QxMzA3LWNvbmZpZy1ibG9iLnNoIGIvdC90MTMwNy1jb25maWctYmxvYi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mZGMyNTdlCi0tLSAvZGV2L251bGwKKysrIGIvdC90MTMwNy1jb25maWctYmxvYi5zaApAQCAtMCwwICsxLDcwIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nc3VwcG9ydCBmb3IgcmVhZGluZyBjb25maWcgZnJvbSBhIGJsb2InCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY3JlYXRlIGNvbmZpZyBibG9iJyAnCisJY2F0ID5jb25maWcgPDwtXEVPRiAmJgorCVtzb21lXQorCQl2YWx1ZSA9IDEKKwlFT0YKKwlnaXQgYWRkIGNvbmZpZyAmJgorCWdpdCBjb21taXQgLW0gZm9vCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xpc3QgY29uZmlnIGJsb2IgY29udGVudHMnICcKKwllY2hvIHNvbWUudmFsdWU9MSA+ZXhwZWN0ICYmCisJZ2l0IGNvbmZpZyAtLWJsb2I9SEVBRDpjb25maWcgLS1saXN0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIHZhbHVlIGZyb20gYmxvYicgJworCWVjaG8gdHJ1ZSA+ZXhwZWN0ICYmCisJZ2l0IGNvbmZpZyAtLWJsb2I9SEVBRDpjb25maWcgLS1ib29sIHNvbWUudmFsdWUgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVhZGluZyBub24tZXhpc3RpbmcgdmFsdWUgZnJvbSBibG9iIGlzIGFuIGVycm9yJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLWJsb2I9SEVBRDpjb25maWcgbm9uLmV4aXN0aW5nCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWRpbmcgZnJvbSBibG9iIGFuZCBmaWxlIGlzIGFuIGVycm9yJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLWJsb2I9SEVBRDpjb25maWcgLS1zeXN0ZW0gLS1saXN0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYWRpbmcgZnJvbSBtaXNzaW5nIHJlZiBpcyBhbiBlcnJvcicgJworCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgLS1ibG9iPUhFQUQ6ZG9lc25vdGV4aXN0IC0tbGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWFkaW5nIGZyb20gbm9uLWJsb2IgaXMgYW4gZXJyb3InICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIC0tYmxvYj1IRUFEIC0tbGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR0aW5nIGEgdmFsdWUgaW4gYSBibG9iIGlzIGFuIGVycm9yJyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyAtLWJsb2I9SEVBRDpjb25maWcgc29tZS52YWx1ZSBmb28KKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGVsZXRpbmcgYSB2YWx1ZSBpbiBhIGJsb2IgaXMgYW4gZXJyb3InICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIC0tYmxvYj1IRUFEOmNvbmZpZyAtLXVuc2V0IHNvbWUudmFsdWUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZWRpdGluZyBhIGJsb2IgaXMgYW4gZXJyb3InICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIC0tYmxvYj1IRUFEOmNvbmZpZyAtLWVkaXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncGFyc2UgZXJyb3JzIGluIGJsb2JzIGFyZSBwcm9wZXJseSBhdHRyaWJ1dGVkJyAnCisJY2F0ID5jb25maWcgPDwtXEVPRiAmJgorCVtzb21lXQorCQl2YWx1ZSA9ICIKKwlFT0YKKwlnaXQgYWRkIGNvbmZpZyAmJgorCWdpdCBjb21taXQgLW0gYnJva2VuICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgY29uZmlnIC0tYmxvYj1IRUFEOmNvbmZpZyBzb21lLnZhbHVlIDI+ZXJyICYmCisKKwkjIGp1c3QgZ3JlcCBmb3Igb3VyIHRva2VuIGFzIHRoZSBleGFjdCBlcnJvciBtZXNzYWdlIGlzIGxpa2VseSB0bworCSMgY2hhbmdlIG9yIGJlIGludGVybmF0aW9uYWxpemVkCisJZ3JlcCAiSEVBRDpjb25maWciIGVycgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDE0MDMtc2hvdy1yZWYuc2ggYi90L3QxNDAzLXNob3ctcmVmLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNlNTAwZWQKLS0tIC9kZXYvbnVsbAorKysgYi90L3QxNDAzLXNob3ctcmVmLnNoCkBAIC0wLDAgKzEsMTY3IEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nc2hvdy1yZWYnCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJdGVzdF9jb21taXQgQSAmJgorCWdpdCB0YWcgLWYgLWEgLW0gImFubm90YXRlZCBBIiBBICYmCisJZ2l0IGNoZWNrb3V0IC1iIHNpZGUgJiYKKwl0ZXN0X2NvbW1pdCBCICYmCisJZ2l0IHRhZyAtZiAtYSAtbSAiYW5ub3RhdGVkIEIiIEIgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJdGVzdF9jb21taXQgQyAmJgorCWdpdCBicmFuY2ggQiBBXjAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdy1yZWYnICcKKwllY2hvICQoZ2l0IHJldi1wYXJzZSByZWZzL3RhZ3MvQSkgcmVmcy90YWdzL0EgPmV4cGVjdCAmJgorCisJZ2l0IHNob3ctcmVmIEEgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCWdpdCBzaG93LXJlZiB0YWdzL0EgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCWdpdCBzaG93LXJlZiByZWZzL3RhZ3MvQSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJPmV4cGVjdCAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3ctcmVmIEQgPmFjdHVhbAorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdy1yZWYgLXEnICcKKwk+ZXhwZWN0ICYmCisKKwlnaXQgc2hvdy1yZWYgLXEgQSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJZ2l0IHNob3ctcmVmIC1xIHRhZ3MvQSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJZ2l0IHNob3ctcmVmIC1xIHJlZnMvdGFncy9BID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdy1yZWYgLXEgRCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93LXJlZiAtLXZlcmlmeScgJworCWVjaG8gJChnaXQgcmV2LXBhcnNlIHJlZnMvdGFncy9BKSByZWZzL3RhZ3MvQSA+ZXhwZWN0ICYmCisKKwlnaXQgc2hvdy1yZWYgLS12ZXJpZnkgcmVmcy90YWdzL0EgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCT5leHBlY3QgJiYKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG93LXJlZiAtLXZlcmlmeSBBID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdy1yZWYgLS12ZXJpZnkgdGFncy9BID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdy1yZWYgLS12ZXJpZnkgRCA+YWN0dWFsCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzaG93LXJlZiAtLXZlcmlmeSAtcScgJworCT5leHBlY3QgJiYKKworCWdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSByZWZzL3RhZ3MvQSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHNob3ctcmVmIC0tdmVyaWZ5IC1xIEEgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSB0YWdzL0EgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCXRlc3RfbXVzdF9mYWlsIGdpdCBzaG93LXJlZiAtLXZlcmlmeSAtcSBEID5hY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3ctcmVmIC1kJyAnCisJeworCQllY2hvICQoZ2l0IHJldi1wYXJzZSByZWZzL3RhZ3MvQSkgcmVmcy90YWdzL0EgJiYKKwkJZWNobyAkKGdpdCByZXYtcGFyc2UgcmVmcy90YWdzL0FeMCkgInJlZnMvdGFncy9BXnt9IgorCQllY2hvICQoZ2l0IHJldi1wYXJzZSByZWZzL3RhZ3MvQykgcmVmcy90YWdzL0MKKwl9ID5leHBlY3QgJiYKKwlnaXQgc2hvdy1yZWYgLWQgQSBDID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwlnaXQgc2hvdy1yZWYgLWQgdGFncy9BIHRhZ3MvQyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJZ2l0IHNob3ctcmVmIC1kIHJlZnMvdGFncy9BIHJlZnMvdGFncy9DID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwllY2hvICQoZ2l0IHJldi1wYXJzZSByZWZzL2hlYWRzL21hc3RlcikgcmVmcy9oZWFkcy9tYXN0ZXIgPmV4cGVjdCAmJgorCWdpdCBzaG93LXJlZiAtZCBtYXN0ZXIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCWdpdCBzaG93LXJlZiAtZCBoZWFkcy9tYXN0ZXIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCWdpdCBzaG93LXJlZiAtZCByZWZzL2hlYWRzL21hc3RlciA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCisJZ2l0IHNob3ctcmVmIC1kIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisKKwk+ZXhwZWN0ICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdy1yZWYgLWQgLS12ZXJpZnkgbWFzdGVyID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwl0ZXN0X211c3RfZmFpbCBnaXQgc2hvdy1yZWYgLWQgLS12ZXJpZnkgaGVhZHMvbWFzdGVyID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdy1yZWYgLS1oZWFkcywgLS10YWdzLCAtLWhlYWQsIHBhdHRlcm4nICcKKwlmb3IgYnJhbmNoIGluIEIgbWFzdGVyIHNpZGUKKwlkbworCQllY2hvICQoZ2l0IHJldi1wYXJzZSByZWZzL2hlYWRzLyRicmFuY2gpIHJlZnMvaGVhZHMvJGJyYW5jaAorCWRvbmUgPmV4cGVjdC5oZWFkcyAmJgorCWdpdCBzaG93LXJlZiAtLWhlYWRzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QuaGVhZHMgYWN0dWFsICYmCisKKwlmb3IgdGFnIGluIEEgQiBDCisJZG8KKwkJZWNobyAkKGdpdCByZXYtcGFyc2UgcmVmcy90YWdzLyR0YWcpIHJlZnMvdGFncy8kdGFnCisJZG9uZSA+ZXhwZWN0LnRhZ3MgJiYKKwlnaXQgc2hvdy1yZWYgLS10YWdzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QudGFncyBhY3R1YWwgJiYKKworCWNhdCBleHBlY3QuaGVhZHMgZXhwZWN0LnRhZ3MgPmV4cGVjdCAmJgorCWdpdCBzaG93LXJlZiAtLWhlYWRzIC0tdGFncyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJeworCQllY2hvICQoZ2l0IHJldi1wYXJzZSBIRUFEKSBIRUFEICYmCisJCWNhdCBleHBlY3QuaGVhZHMgZXhwZWN0LnRhZ3MKKwl9ID5leHBlY3QgJiYKKwlnaXQgc2hvdy1yZWYgLS1oZWFkcyAtLXRhZ3MgLS1oZWFkID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwl7CisJCWVjaG8gJChnaXQgcmV2LXBhcnNlIEhFQUQpIEhFQUQgJiYKKwkJZWNobyAkKGdpdCByZXYtcGFyc2UgcmVmcy9oZWFkcy9CKSByZWZzL2hlYWRzL0IKKwkJZWNobyAkKGdpdCByZXYtcGFyc2UgcmVmcy90YWdzL0IpIHJlZnMvdGFncy9CCisJfSA+ZXhwZWN0ICYmCisJZ2l0IHNob3ctcmVmIC0taGVhZCBCID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwl7CisJCWVjaG8gJChnaXQgcmV2LXBhcnNlIEhFQUQpIEhFQUQgJiYKKwkJZWNobyAkKGdpdCByZXYtcGFyc2UgcmVmcy9oZWFkcy9CKSByZWZzL2hlYWRzL0IKKwkJZWNobyAkKGdpdCByZXYtcGFyc2UgcmVmcy90YWdzL0IpIHJlZnMvdGFncy9CCisJCWVjaG8gJChnaXQgcmV2LXBhcnNlIHJlZnMvdGFncy9CXjApICJyZWZzL3RhZ3MvQl57fSIKKwl9ID5leHBlY3QgJiYKKwlnaXQgc2hvdy1yZWYgLS1oZWFkIC1kIEIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QxNTA4LWF0LWNvbWJpbmF0aW9ucy5zaCBiL3QvdDE1MDgtYXQtY29tYmluYXRpb25zLnNoCmluZGV4IGQ1ZDYyNDQuLjRkYjE2MTMgMTAwNzU1Ci0tLSBhL3QvdDE1MDgtYXQtY29tYmluYXRpb25zLnNoCisrKyBiL3QvdDE1MDgtYXQtY29tYmluYXRpb25zLnNoCkBAIC00LDE3ICs0LDI0IEBACiAuIC4vdGVzdC1saWIuc2gKIAogY2hlY2soKSB7Ci10ZXN0X2V4cGVjdF8kezM6LXN1Y2Nlc3N9ICIkMSA9ICQyIiAiCi0JZWNobyAnJDInID5leHBlY3QgJiYKLQlnaXQgbG9nIC0xIC0tZm9ybWF0PSVzICckMScgPmFjdHVhbCAmJgotCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKLSIKKwl0ZXN0X2V4cGVjdF8kezQ6LXN1Y2Nlc3N9ICIkMSA9ICQzIiAiCisJCWVjaG8gJyQzJyA+ZXhwZWN0ICYmCisJCWlmIHRlc3QgJyQyJyA9ICdjb21taXQnCisJCXRoZW4KKwkJCWdpdCBsb2cgLTEgLS1mb3JtYXQ9JXMgJyQxJyA+YWN0dWFsCisJCWVsc2UKKwkJCWdpdCByZXYtcGFyc2UgLS1zeW1ib2xpYy1mdWxsLW5hbWUgJyQxJyA+YWN0dWFsCisJCWZpICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKwkiCiB9CisKIG5vbnNlbnNlKCkgewotdGVzdF9leHBlY3RfJHsyOi1zdWNjZXNzfSAiJDEgaXMgbm9uc2Vuc2ljYWwiICIKLQl0ZXN0X211c3RfZmFpbCBnaXQgbG9nIC0xICckMScKLSIKKwl0ZXN0X2V4cGVjdF8kezI6LXN1Y2Nlc3N9ICIkMSBpcyBub25zZW5zaWNhbCIgIgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICckMScKKwkiCiB9CisKIGZhaWwoKSB7CiAJIiRAIiBmYWlsdXJlCiB9CkBAIC0zMSwyMSArMzgsNDIgQEAKIAlnaXQgY2hlY2tvdXQgLWIgbmV3LWJyYW5jaCAmJgogCXRlc3RfY29tbWl0IG5ldy1vbmUgJiYKIAl0ZXN0X2NvbW1pdCBuZXctdHdvICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gub2xkLWJyYW5jaC5yZW1vdGUgLiAmJgotCWdpdCBjb25maWcgYnJhbmNoLm9sZC1icmFuY2gubWVyZ2UgcmVmcy9oZWFkcy9tYXN0ZXIgJiYKLQlnaXQgY29uZmlnIGJyYW5jaC5uZXctYnJhbmNoLnJlbW90ZSAuICYmCi0JZ2l0IGNvbmZpZyBicmFuY2gubmV3LWJyYW5jaC5tZXJnZSByZWZzL2hlYWRzL3Vwc3RyZWFtLWJyYW5jaAorCWdpdCBicmFuY2ggLXUgbWFzdGVyIG9sZC1icmFuY2ggJiYKKwlnaXQgYnJhbmNoIC11IHVwc3RyZWFtLWJyYW5jaCBuZXctYnJhbmNoCiAnCiAKLWNoZWNrIEhFQUQgbmV3LXR3bwotY2hlY2sgIkB7MX0iIG5ldy1vbmUKLWNoZWNrICJAey0xfSIgb2xkLXR3bwotY2hlY2sgIkB7LTF9QHsxfSIgb2xkLW9uZQotY2hlY2sgIkB7dX0iIHVwc3RyZWFtLXR3bwotY2hlY2sgIkB7dX1AezF9IiB1cHN0cmVhbS1vbmUKLWNoZWNrICJAey0xfUB7dX0iIG1hc3Rlci10d28KLWNoZWNrICJAey0xfUB7dX1AezF9IiBtYXN0ZXItb25lCitjaGVjayBIRUFEIHJlZiByZWZzL2hlYWRzL25ldy1icmFuY2gKK2NoZWNrICJAezF9IiBjb21taXQgbmV3LW9uZQorY2hlY2sgIkhFQURAezF9IiBjb21taXQgbmV3LW9uZQorY2hlY2sgIkB7bm93fSIgY29tbWl0IG5ldy10d28KK2NoZWNrICJIRUFEQHtub3d9IiBjb21taXQgbmV3LXR3bworY2hlY2sgIkB7LTF9IiByZWYgcmVmcy9oZWFkcy9vbGQtYnJhbmNoCitjaGVjayAiQHstMX1AezB9IiBjb21taXQgb2xkLXR3bworY2hlY2sgIkB7LTF9QHsxfSIgY29tbWl0IG9sZC1vbmUKK2NoZWNrICJAe3V9IiByZWYgcmVmcy9oZWFkcy91cHN0cmVhbS1icmFuY2gKK2NoZWNrICJIRUFEQHt1fSIgcmVmIHJlZnMvaGVhZHMvdXBzdHJlYW0tYnJhbmNoCitjaGVjayAiQHt1fUB7MX0iIGNvbW1pdCB1cHN0cmVhbS1vbmUKK2NoZWNrICJAey0xfUB7dX0iIHJlZiByZWZzL2hlYWRzL21hc3RlcgorY2hlY2sgIkB7LTF9QHt1fUB7MX0iIGNvbW1pdCBtYXN0ZXItb25lCitjaGVjayAiQCIgY29tbWl0IG5ldy10d28KK2NoZWNrICJAQHt1fSIgcmVmIHJlZnMvaGVhZHMvdXBzdHJlYW0tYnJhbmNoCiBub25zZW5zZSAiQHt1fUB7LTF9Igorbm9uc2Vuc2UgIkB7MH1AezB9Igogbm9uc2Vuc2UgIkB7MX1Ae3V9Igorbm9uc2Vuc2UgIkhFQURAey0xfSIKK25vbnNlbnNlICJAey0xfUB7LTF9IgorCisjIEB7Tn0gdmVyc3VzIEhFQURAe059CisKK2NoZWNrICJIRUFEQHszfSIgY29tbWl0IG9sZC10d28KK25vbnNlbnNlICJAezN9IgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzd2l0Y2ggdG8gb2xkLWJyYW5jaCcgJworCWdpdCBjaGVja291dCBvbGQtYnJhbmNoCisnCisKK2NoZWNrIEhFQUQgcmVmIHJlZnMvaGVhZHMvb2xkLWJyYW5jaAorY2hlY2sgIkhFQURAezF9IiBjb21taXQgbmV3LXR3bworY2hlY2sgIkB7MX0iIGNvbW1pdCBvbGQtb25lCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2ggYi90L3QxNTEyLXJldi1wYXJzZS1kaXNhbWJpZ3VhdGlvbi5zaAppbmRleCA1YjU4ZTRmLi40YTE1NWM4IDEwMDc1NQotLS0gYS90L3QxNTEyLXJldi1wYXJzZS1kaXNhbWJpZ3VhdGlvbi5zaAorKysgYi90L3QxNTEyLXJldi1wYXJzZS1kaXNhbWJpZ3VhdGlvbi5zaApAQCAtMjczLDQgKzI3MywyMiBAQAogCXRlc3QgIiQoc2VkIC1lICJzL15cKC4uLi4uLi4uLlwpLiovXDEvIiBhY3R1YWwgfCBzb3J0IC11KSIgPSAwMDAwMDAwMDAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW1iaWd1b3VzIDQwLWhleCByZWYnICcKKwlUUkVFPSQoZ2l0IG1rdHJlZSA8L2Rldi9udWxsKSAmJgorCVJFRj1gZ2l0IHJldi1wYXJzZSBIRUFEYCAmJgorCVZBTD0kKGdpdCBjb21taXQtdHJlZSAkVFJFRSA8L2Rldi9udWxsKSAmJgorCWdpdCB1cGRhdGUtcmVmIHJlZnMvaGVhZHMvJFJFRiAkVkFMICYmCisJdGVzdCBgZ2l0IHJldi1wYXJzZSAkUkVGIDI+ZXJyYCA9ICRSRUYgJiYKKwlncmVwICJyZWZuYW1lLioke1JFRn0uKmFtYmlndW91cyIgZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtYmlndW91cyBzaG9ydCBzaGExIHJlZicgJworCVRSRUU9JChnaXQgbWt0cmVlIDwvZGV2L251bGwpICYmCisJUkVGPWBnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRGAgJiYKKwlWQUw9JChnaXQgY29tbWl0LXRyZWUgJFRSRUUgPC9kZXYvbnVsbCkgJiYKKwlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzLyRSRUYgJFZBTCAmJgorCXRlc3QgYGdpdCByZXYtcGFyc2UgJFJFRiAyPmVycmAgPSAkVkFMICYmCisJZ3JlcCAicmVmbmFtZS4qJHtSRUZ9LiphbWJpZ3VvdXMiIGVycgorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDE1MTMtcmV2LXBhcnNlLXByZWZpeC5zaCBiL3QvdDE1MTMtcmV2LXBhcnNlLXByZWZpeC5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44N2VjM2FlCi0tLSAvZGV2L251bGwKKysrIGIvdC90MTUxMy1yZXYtcGFyc2UtcHJlZml4LnNoCkBAIC0wLDAgKzEsOTYgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0cyBmb3IgcmV2LXBhcnNlIC0tcHJlZml4JworCisuIC4vdGVzdC1saWIuc2gKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAnICcKKwlta2RpciAtcCBzdWIxL3N1YjIgJiYKKwllY2hvIHRvcCA+dG9wICYmCisJZWNobyBmaWxlMSA+c3ViMS9maWxlMSAmJgorCWVjaG8gZmlsZTIgPnN1YjEvc3ViMi9maWxlMiAmJgorCWdpdCBhZGQgdG9wIHN1YjEvZmlsZTEgc3ViMS9zdWIyL2ZpbGUyICYmCisJZ2l0IGNvbW1pdCAtbSBjb21taXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZW1wdHkgcHJlZml4IC0tIGZpbGUnICcKKwlnaXQgcmV2LXBhcnNlIC0tcHJlZml4ICIiIC0tIHRvcCBzdWIxL2ZpbGUxID5hY3R1YWwgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktLQorCXRvcAorCXN1YjEvZmlsZTEKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWQgcHJlZml4IC0tIGZpbGUnICcKKwlnaXQgcmV2LXBhcnNlIC0tcHJlZml4IHN1YjEvIC0tIGZpbGUxIHN1YjIvZmlsZTIgPmFjdHVhbCAmJgorCWNhdCA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0tCisJc3ViMS9maWxlMQorCXN1YjEvc3ViMi9maWxlMgorCUVPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZCBwcmVmaXggLS0gLi4vZmlsZScgJworCWdpdCByZXYtcGFyc2UgLS1wcmVmaXggc3ViMS8gLS0gLi4vdG9wIHN1YjIvZmlsZTIgPmFjdHVhbCAmJgorCWNhdCA8PC1cRU9GID5leHBlY3RlZCAmJgorCS0tCisJc3ViMS8uLi90b3AKKwlzdWIxL3N1YjIvZmlsZTIKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZW1wdHkgcHJlZml4IEhFQUQ6Li9wYXRoJyAnCisJZ2l0IHJldi1wYXJzZSAtLXByZWZpeCAiIiBIRUFEOi4vdG9wID5hY3R1YWwgJiYKKwlnaXQgcmV2LXBhcnNlIEhFQUQ6dG9wID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZCBwcmVmaXggSEVBRDouL3BhdGgnICcKKwlnaXQgcmV2LXBhcnNlIC0tcHJlZml4IHN1YjEvIEhFQUQ6Li9maWxlMSA+YWN0dWFsICYmCisJZ2l0IHJldi1wYXJzZSBIRUFEOnN1YjEvZmlsZTEgPmV4cGVjdGVkICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkIHByZWZpeCBIRUFEOi4uL3BhdGgnICcKKwlnaXQgcmV2LXBhcnNlIC0tcHJlZml4IHN1YjEvIEhFQUQ6Li4vdG9wID5hY3R1YWwgJiYKKwlnaXQgcmV2LXBhcnNlIEhFQUQ6dG9wID5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcmVmaXggaWdub3JlZCB3aXRoIEhFQUQ6dG9wJyAnCisJZ2l0IHJldi1wYXJzZSAtLXByZWZpeCBzdWIxLyBIRUFEOnRvcCA+YWN0dWFsICYmCisJZ2l0IHJldi1wYXJzZSBIRUFEOnRvcCA+ZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlzYW1iaWd1YXRlIHBhdGggd2l0aCB2YWxpZCBwcmVmaXgnICcKKwlnaXQgcmV2LXBhcnNlIC0tcHJlZml4IHN1YjEvIGZpbGUxID5hY3R1YWwgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwlzdWIxL2ZpbGUxCisJRU9GCisJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZpbGUgYW5kIHJlZnMgd2l0aCBwcmVmaXgnICcKKwlnaXQgcmV2LXBhcnNlIC0tcHJlZml4IHN1YjEvIG1hc3RlciBmaWxlMSA+YWN0dWFsICYmCisJY2F0IDw8LUVPRiA+ZXhwZWN0ZWQgJiYKKwkkKGdpdCByZXYtcGFyc2UgbWFzdGVyKQorCXN1YjEvZmlsZTEKKwlFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndHdvLWxldmVscyBkZWVwJyAnCisJZ2l0IHJldi1wYXJzZSAtLXByZWZpeCBzdWIxL3N1YjIvIC0tIGZpbGUyID5hY3R1YWwgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwktLQorCXN1YjEvc3ViMi9maWxlMgorCUVPRgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDIwMTItY2hlY2tvdXQtbGFzdC5zaCBiL3QvdDIwMTItY2hlY2tvdXQtbGFzdC5zaAppbmRleCBiNDRkZTlkLi5lN2JhOGM1IDEwMDc1NQotLS0gYS90L3QyMDEyLWNoZWNrb3V0LWxhc3Quc2gKKysrIGIvdC90MjAxMi1jaGVja291dC1sYXN0LnNoCkBAIC0xMTYsNCArMTE2LDM4IEBACiAJdGVzdCAieiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEKSIgPSAieiQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBtYXN0ZXJeKSIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnImNoZWNrb3V0IC0iIHdvcmtzIGFmdGVyIGEgcmViYXNlIEEnICcKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IG90aGVyICYmCisJZ2l0IHJlYmFzZSBtYXN0ZXIgJiYKKwlnaXQgY2hlY2tvdXQgLSAmJgorCXRlc3QgInokKGdpdCBzeW1ib2xpYy1yZWYgSEVBRCkiID0gInpyZWZzL2hlYWRzL21hc3RlciIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImNoZWNrb3V0IC0iIHdvcmtzIGFmdGVyIGEgcmViYXNlIEEgQicgJworCWdpdCBicmFuY2ggbW9vZGxlIG1hc3Rlcn4xICYmCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCWdpdCBjaGVja291dCBvdGhlciAmJgorCWdpdCByZWJhc2UgbWFzdGVyIG1vb2RsZSAmJgorCWdpdCBjaGVja291dCAtICYmCisJdGVzdCAieiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSIgPSAienJlZnMvaGVhZHMvbWFzdGVyIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciY2hlY2tvdXQgLSIgd29ya3MgYWZ0ZXIgYSByZWJhc2UgLWkgQScgJworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgY2hlY2tvdXQgb3RoZXIgJiYKKwlnaXQgcmViYXNlIC1pIG1hc3RlciAmJgorCWdpdCBjaGVja291dCAtICYmCisJdGVzdCAieiQoZ2l0IHN5bWJvbGljLXJlZiBIRUFEKSIgPSAienJlZnMvaGVhZHMvbWFzdGVyIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciY2hlY2tvdXQgLSIgd29ya3MgYWZ0ZXIgYSByZWJhc2UgLWkgQSBCJyAnCisJZ2l0IGJyYW5jaCBmb29kbGUgbWFzdGVyfjEgJiYKKwlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IGNoZWNrb3V0IG90aGVyICYmCisJZ2l0IHJlYmFzZSBtYXN0ZXIgZm9vZGxlICYmCisJZ2l0IGNoZWNrb3V0IC0gJiYKKwl0ZXN0ICJ6JChnaXQgc3ltYm9saWMtcmVmIEhFQUQpIiA9ICJ6cmVmcy9oZWFkcy9tYXN0ZXIiCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MjIwMi1hZGQtYWRkcmVtb3ZlLnNoIGIvdC90MjIwMi1hZGQtYWRkcmVtb3ZlLnNoCmluZGV4IDZhODE1MTAuLmZjOGI1OWUgMTAwNzU1Ci0tLSBhL3QvdDIyMDItYWRkLWFkZHJlbW92ZS5zaAorKysgYi90L3QyMjAyLWFkZC1hZGRyZW1vdmUuc2gKQEAgLTQxLDQgKzQxLDE0IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdKdXN0ICJnaXQgYWRkIiBpcyBhIG5vLW9wJyAnCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWVjaG8gPndpbGwtcmVtb3ZlICYmCisJPndpbGwtbm90LWJlLWFkZGVkICYmCisJZ2l0IGFkZCAmJgorCWdpdCBkaWZmLWluZGV4IC0tbmFtZS1zdGF0dXMgLS1jYWNoZWQgSEVBRCA+YWN0dWFsICYmCisJPmV4cGVjdCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzMDEwLWxzLWZpbGVzLWtpbGxlZC1tb2RpZmllZC5zaCBiL3QvdDMwMTAtbHMtZmlsZXMta2lsbGVkLW1vZGlmaWVkLnNoCmluZGV4IDI2MmU2MTcuLmY2MTFkNzkgMTAwNzU1Ci0tLSBhL3QvdDMwMTAtbHMtZmlsZXMta2lsbGVkLW1vZGlmaWVkLnNoCisrKyBiL3QvdDMwMTAtbHMtZmlsZXMta2lsbGVkLW1vZGlmaWVkLnNoCkBAIC0xMSw2ICsxMSw4IEBACiAgICAgcGF0aDEgICAgICAgLSBhIHN5bWxpbmsKICAgICBwYXRoMi9maWxlMiAtIGEgZmlsZSBpbiBhIGRpcmVjdG9yeQogICAgIHBhdGgzL2ZpbGUzIC0gYSBmaWxlIGluIGEgZGlyZWN0b3J5CisgICAgc3VibW9kMS8JLSBhIHN1Ym1vZHVsZQorICAgIHN1Ym1vZDIvCS0gYW5vdGhlciBzdWJtb2R1bGUKIAogYW5kIHRoZSBmb2xsb3dpbmcgb24gdGhlIGZpbGVzeXN0ZW06CiAKQEAgLTIxLDkgKzIzLDExIEBACiAgICAgcGF0aDQJLSBhIGZpbGUKICAgICBwYXRoNQktIGEgc3ltbGluawogICAgIHBhdGg2L2ZpbGU2IC0gYSBmaWxlIGluIGEgZGlyZWN0b3J5CisgICAgc3VibW9kMS8JLSBhIHN1Ym1vZHVsZSAobW9kaWZpZWQgZnJvbSB0aGUgY2FjaGUpCisgICAgc3VibW9kMi8JLSBhIHN1Ym1vZHVsZSAobWF0Y2hlcyB0aGUgY2FjaGUpCiAKLWdpdCBscy1maWxlcyAtayBzaG91bGQgcmVwb3J0IHRoYXQgZXhpc3RpbmcgZmlsZXN5c3RlbQotb2JqZWN0cyBleGNlcHQgcGF0aDQsIHBhdGg1IGFuZCBwYXRoNi9maWxlNiB0byBiZSBraWxsZWQuCitnaXQgbHMtZmlsZXMgLWsgc2hvdWxkIHJlcG9ydCB0aGF0IGV4aXN0aW5nIGZpbGVzeXN0ZW0gb2JqZWN0cworcGF0aDAvKiwgcGF0aDEvKiwgcGF0aDIgYW5kIHBhdGgzIHRvIGJlIGtpbGxlZC4KIAogQWxzbyBmb3IgbW9kaWZpY2F0aW9uIHRlc3QsIHRoZSBjYWNoZSBhbmQgd29ya2luZyB0cmVlIGhhdmU6CiAKQEAgLTMzLDcgKzM3LDcgQEAKICAgICBwYXRoMTAJLSBhIG5vbi1lbXB0eSBmaWxlLCBjYWNoZSBkaXJ0aWVkLgogCiBXZSBzaG91bGQgcmVwb3J0IHBhdGgwLCBwYXRoMSwgcGF0aDIvZmlsZTIsIHBhdGgzL2ZpbGUzLCBwYXRoNyBhbmQgcGF0aDgKLW1vZGlmaWVkIHdpdGhvdXQgcmVwb3J0aW5nIHBhdGg5IGFuZCBwYXRoMTAuCittb2RpZmllZCB3aXRob3V0IHJlcG9ydGluZyBwYXRoOSBhbmQgcGF0aDEwLiAgc3VibW9kMSBpcyBhbHNvIG1vZGlmaWVkLgogJwogLiAuL3Rlc3QtbGliLnNoCiAKQEAgLTQ4LDYgKzUyLDE4IEBACiAJOiA+cGF0aDkgJiYKIAlkYXRlID5wYXRoMTAgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIC0tIHBhdGgwIHBhdGg/L2ZpbGU/IHBhdGg3IHBhdGg4IHBhdGg5IHBhdGgxMCAmJgorCWZvciBpIGluIDEgMgorCWRvCisJCWdpdCBpbml0IHN1Ym1vZCRpICYmCisJCSgKKwkJCWNkIHN1Ym1vZCRpICYmIGdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAiZW1wdHkgJGkiCisJCSkgfHwgYnJlYWsKKwlkb25lICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBzdWJtb2RbMTJdCisJKAorCQljZCBzdWJtb2QxICYmCisJCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAiZW1wdHkgMSAodXBkYXRlZCkiCisJKSAmJgogCXJtIC1mciBwYXRoPwkjIGxlYXZlIHBhdGgxMCBhbG9uZQogJwogCkBAIC05NCw2ICsxMTAsNyBAQAogCXBhdGgzL2ZpbGUzCiAJcGF0aDcKIAlwYXRoOAorCXN1Ym1vZDEKIAlFT0YKIAl0ZXN0X2NtcCAuZXhwZWN0ZWQgLm91dHB1dAogJwpkaWZmIC0tZ2l0IGEvdC90MzAzMi1tZXJnZS1yZWN1cnNpdmUtb3B0aW9ucy5zaCBiL3QvdDMwMzItbWVyZ2UtcmVjdXJzaXZlLW9wdGlvbnMuc2gKaW5kZXggMmIxNzMxMS4uNWZkN2JiYiAxMDA3NTUKLS0tIGEvdC90MzAzMi1tZXJnZS1yZWN1cnNpdmUtb3B0aW9ucy5zaAorKysgYi90L3QzMDMyLW1lcmdlLXJlY3Vyc2l2ZS1vcHRpb25zLnNoCkBAIC0xNCw3ICsxNCw3IEBACiAuIC4vdGVzdC1saWIuc2gKIAogdGVzdF9oYXZlX3ByZXJlcSBTRURfU1RSSVBTX0NSICYmIFNFRF9PUFRJT05TPS1iCi10ZXN0X2hhdmVfcHJlcmVxIE1JTkdXICYmIGV4cG9ydCBHUkVQX09QVElPTlM9LVUKK3Rlc3RfaGF2ZV9wcmVyZXEgR1JFUF9TVFJJUFNfQ1IgJiYgZXhwb3J0IEdSRVBfT1BUSU9OUz0tVQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJwogCWNvbmZsaWN0X2h1bmtzICgpIHsKZGlmZiAtLWdpdCBhL3QvdDMyMTAtcGFjay1yZWZzLnNoIGIvdC90MzIxMC1wYWNrLXJlZnMuc2gKaW5kZXggY2QwNDM2MS4uMWEyMDgwZSAxMDA3NTUKLS0tIGEvdC90MzIxMC1wYWNrLXJlZnMuc2gKKysrIGIvdC90MzIxMC1wYWNrLXJlZnMuc2gKQEAgLTExOCw0ICsxMTgsMzcgQEAKIAl0ZXN0X2NtcCBhbGwtb2YtdGhlbSBhZ2FpbgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleHBsaWNpdCBwYWNrLXJlZnMgd2l0aCBkYW5nbGluZyBwYWNrZWQgcmVmZXJlbmNlJyAnCisJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tICJzb29uIHRvIGJlIGdhcmJhZ2UtY29sbGVjdGVkIiAmJgorCWdpdCBwYWNrLXJlZnMgLS1hbGwgJiYKKwlnaXQgcmVzZXQgLS1oYXJkIEhFQUReICYmCisJZ2l0IHJlZmxvZyBleHBpcmUgLS1leHBpcmU9YWxsIC0tYWxsICYmCisJZ2l0IHBydW5lIC0tZXhwaXJlPWFsbCAmJgorCWdpdCBwYWNrLXJlZnMgLS1hbGwgMj5yZXN1bHQgJiYKKwl0ZXN0X2NtcCAvZGV2L251bGwgcmVzdWx0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RlbGV0ZSByZWYgd2l0aCBkYW5nbGluZyBwYWNrZWQgdmVyc2lvbicgJworCWdpdCBjaGVja291dCAtYiBsYW1iICYmCisJZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tICJmdXR1cmUgZ2FyYmFnZSIgJiYKKwlnaXQgcGFjay1yZWZzIC0tYWxsICYmCisJZ2l0IHJlc2V0IC0taGFyZCBIRUFEXiAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlnaXQgcmVmbG9nIGV4cGlyZSAtLWV4cGlyZT1hbGwgLS1hbGwgJiYKKwlnaXQgcHJ1bmUgLS1leHBpcmU9YWxsICYmCisJZ2l0IGJyYW5jaCAtZCBsYW1iIDI+cmVzdWx0ICYmCisJdGVzdF9jbXAgL2Rldi9udWxsIHJlc3VsdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGUgcmVmIHdoaWxlIGFub3RoZXIgZGFuZ2xpbmcgcGFja2VkIHJlZicgJworCWdpdCBicmFuY2ggbGFtYiAmJgorCWdpdCBjb21taXQgLS1hbGxvdy1lbXB0eSAtbSAiZnV0dXJlIGdhcmJhZ2UiICYmCisJZ2l0IHBhY2stcmVmcyAtLWFsbCAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwlnaXQgcmVmbG9nIGV4cGlyZSAtLWV4cGlyZT1hbGwgLS1hbGwgJiYKKwlnaXQgcHJ1bmUgLS1leHBpcmU9YWxsICYmCisJZ2l0IGJyYW5jaCAtZCBsYW1iIDI+cmVzdWx0ICYmCisJdGVzdF9jbXAgL2Rldi9udWxsIHJlc3VsdAorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDMyMTEtcGVlbC1yZWYuc2ggYi90L3QzMjExLXBlZWwtcmVmLnNoCmluZGV4IGQ0ZDc3OTIuLjNiN2NhY2EgMTAwNzU1Ci0tLSBhL3QvdDMyMTEtcGVlbC1yZWYuc2gKKysrIGIvdC90MzIxMS1wZWVsLXJlZi5zaApAQCAtNjEsNCArNjEsMTMgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BlZWxlZCByZWZzIHN1cnZpdmUgZGVsZXRpb24gb2YgcGFja2VkIHJlZicgJworCWdpdCBwYWNrLXJlZnMgLS1hbGwgJiYKKwljcCAuZ2l0L3BhY2tlZC1yZWZzIGZ1bGx5LXBlZWxlZCAmJgorCWdpdCBicmFuY2ggeWFkZGEgJiYKKwlnaXQgcGFjay1yZWZzIC0tYWxsICYmCisJZ2l0IGJyYW5jaCAtZCB5YWRkYSAmJgorCXRlc3RfY21wIGZ1bGx5LXBlZWxlZCAuZ2l0L3BhY2tlZC1yZWZzCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQwMC1yZWJhc2Uuc2ggYi90L3QzNDAwLXJlYmFzZS5zaAppbmRleCBiNThmYTFhLi5lYmY5M2IwIDEwMDc1NQotLS0gYS90L3QzNDAwLXJlYmFzZS5zaAorKysgYi90L3QzNDAwLXJlYmFzZS5zaApAQCAtNDAsMTMgKzQwLDYgQEAKIAllY2hvIFNpZGUgPj5DICYmCiAJZ2l0IGFkZCBDICYmCiAJZ2l0IGNvbW1pdCAtbSAiQWRkIEMiICYmCi0JZ2l0IGNoZWNrb3V0IC1iIG5vbmxpbmVhciBteS10b3BpYy1icmFuY2ggJiYKLQllY2hvIEVkaXQgPj5CICYmCi0JZ2l0IGFkZCBCICYmCi0JZ2l0IGNvbW1pdCAtbSAiTW9kaWZ5IEIiICYmCi0JZ2l0IG1lcmdlIHNpZGUgJiYKLQlnaXQgY2hlY2tvdXQgLWIgdXBzdHJlYW0tbWVyZ2VkLW5vbmxpbmVhciAmJgotCWdpdCBtZXJnZSBtYXN0ZXIgJiYKIAlnaXQgY2hlY2tvdXQgLWYgbXktdG9waWMtYnJhbmNoICYmCiAJZ2l0IHRhZyB0b3BpYwogJwpAQCAtNjYsMjYgKzU5LDE1IEBACiAJZ2l0IHJlYmFzZSBtYXN0ZXIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlJyAnCi0JZ2l0IHJlYmFzZSBtYXN0ZXIgPm91dCAmJgotCXRlc3RfaTE4bmdyZXAgIkN1cnJlbnQgYnJhbmNoIG15LXRvcGljLWJyYW5jaCBpcyB1cCB0byBkYXRlIiBvdXQKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlIHdpdGggLS1mb3JjZScgJwotCWdpdCByZWJhc2UgLS1mb3JjZS1yZWJhc2UgbWFzdGVyID5vdXQgJiYKLQl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCBteS10b3BpYy1icmFuY2ggaXMgdXAgdG8gZGF0ZSwgcmViYXNlIGZvcmNlZCIgb3V0Ci0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZ2FpbnN0IG1hc3RlciB0d2ljZSBmcm9tIGFub3RoZXIgYnJhbmNoJyAnCi0JZ2l0IGNoZWNrb3V0IG15LXRvcGljLWJyYW5jaF4gJiYKLQlnaXQgcmViYXNlIG1hc3RlciBteS10b3BpYy1icmFuY2ggPm91dCAmJgotCXRlc3RfaTE4bmdyZXAgIkN1cnJlbnQgYnJhbmNoIG15LXRvcGljLWJyYW5jaCBpcyB1cCB0byBkYXRlIiBvdXQKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGZhc3QtZm9yd2FyZCB0byBtYXN0ZXInICcKLQlnaXQgY2hlY2tvdXQgbXktdG9waWMtYnJhbmNoXiAmJgotCWdpdCByZWJhc2UgbXktdG9waWMtYnJhbmNoID5vdXQgJiYKLQl0ZXN0X2kxOG5ncmVwICJGYXN0LWZvcndhcmRlZCBIRUFEIHRvIG15LXRvcGljLWJyYW5jaCIgb3V0Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UsIHdpdGggPG9udG8+IGFuZCA8dXBzdHJlYW0+IHNwZWNpZmllZCBhcyA6L3F1dXhlcnknICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBicmFuY2ggLUQgdG9yZWJhc2UiICYmCisJZ2l0IGNoZWNrb3V0IC1iIHRvcmViYXNlIG15LXRvcGljLWJyYW5jaF4gJiYKKwl1cHN0cmVhbT0kKGdpdCByZXYtcGFyc2UgIjovQWRkIEIiKSAmJgorCW9udG89JChnaXQgcmV2LXBhcnNlICI6L0FkZCBBIikgJiYKKwlnaXQgcmViYXNlIC0tb250byAkb250byAkdXBzdHJlYW0gJiYKKwlnaXQgcmVzZXQgLS1oYXJkIG15LXRvcGljLWJyYW5jaF4gJiYKKwlnaXQgcmViYXNlIC0tb250byAiOi9BZGQgQSIgIjovQWRkIEIiICYmCisJZ2l0IGNoZWNrb3V0IG15LXRvcGljLWJyYW5jaAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0aGUgcmViYXNlIG9wZXJhdGlvbiBzaG91bGQgbm90IGhhdmUgZGVzdHJveWVkIGF1dGhvciBpbmZvcm1hdGlvbicgJwpAQCAtMTA2LDMxICs4OCw5IEBACiAJZ2l0IHJlYmFzZSBtYXN0ZXIKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFmdGVyIG1lcmdlIG1hc3RlcicgJwotCWdpdCBjaGVja291dCAtLWRldGFjaCByZWZzL3RhZ3MvdG9waWMgJiYKLQlnaXQgYnJhbmNoIC1EIHRvcGljICYmCi0JZ2l0IHJlc2V0IC0taGFyZCB0b3BpYyAmJgotCWdpdCBtZXJnZSBtYXN0ZXIgJiYKLQlnaXQgcmViYXNlIG1hc3RlciAmJgotCSEgKGdpdCBzaG93IHwgZ3JlcCAiXk1lcmdlOiIpCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBvZiBoaXN0b3J5IHdpdGggbWVyZ2VzIGlzIGxpbmVhcml6ZWQnICcKLQlnaXQgY2hlY2tvdXQgbm9ubGluZWFyICYmCi0JdGVzdCA0ID0gJChnaXQgcmV2LWxpc3QgbWFzdGVyLi4gfCB3YyAtbCkgJiYKLQlnaXQgcmViYXNlIG1hc3RlciAmJgotCXRlc3QgMyA9ICQoZ2l0IHJldi1saXN0IG1hc3Rlci4uIHwgd2MgLWwpCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBvZiBoaXN0b3J5IHdpdGggbWVyZ2VzIGFmdGVyIHVwc3RyZWFtIG1lcmdlIGlzIGxpbmVhcml6ZWQnICcKLQlnaXQgY2hlY2tvdXQgdXBzdHJlYW0tbWVyZ2VkLW5vbmxpbmVhciAmJgotCXRlc3QgNSA9ICQoZ2l0IHJldi1saXN0IG1hc3Rlci4uIHwgd2MgLWwpICYmCi0JZ2l0IHJlYmFzZSBtYXN0ZXIgJiYKLQl0ZXN0IDMgPSAkKGdpdCByZXYtbGlzdCBtYXN0ZXIuLiB8IHdjIC1sKQotJwotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgYSBzaW5nbGUgbW9kZSBjaGFuZ2UnICcKIAlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJZ2l0IGJyYW5jaCAtRCB0b3BpYyAmJgogCWVjaG8gMSA+WCAmJgogCWdpdCBhZGQgWCAmJgogCXRlc3RfdGljayAmJgpAQCAtMTg1LDcgKzE0NSw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLXEgaXMgcXVpZXQnICcKIAlnaXQgY2hlY2tvdXQgLWIgcXVpZXQgdG9waWMgJiYKIAlnaXQgcmViYXNlIC1xIG1hc3RlciA+b3V0cHV0Lm91dCAyPiYxICYmCi0JdGVzdCAhIC1zIG91dHB1dC5vdXQKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0Lm91dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdSZWJhc2UgYSBjb21taXQgdGhhdCBzcHJpbmtsZXMgQ1JzIGluJyAnCmRpZmYgLS1naXQgYS90L3QzNDAxLXJlYmFzZS1wYXJ0aWFsLnNoIGIvdC90MzQwMS1yZWJhc2UtcGFydGlhbC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNThmNDgyMy4uMDAwMDAwMAotLS0gYS90L3QzNDAxLXJlYmFzZS1wYXJ0aWFsLnNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotIyEvYmluL3NoCi0jCi0jIENvcHlyaWdodCAoYykgMjAwNiBZYW5uIERpcnNvbiwgYmFzZWQgb24gdDM0MDAgYnkgQW1vcyBXYXRlcmxhbmQKLSMKLQotdGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJlYmFzZSBzaG91bGQgZGV0ZWN0IHBhdGNoZXMgaW50ZWdyYXRlZCB1cHN0cmVhbQotCi1UaGlzIHRlc3QgY2hlcnJ5LXBpY2tzIG9uZSBsb2NhbCBjaGFuZ2Ugb2YgdHdvIGludG8gbWFzdGVyIGJyYW5jaCwgYW5kCi1jaGVja3MgdGhhdCBnaXQgcmViYXNlIHN1Y2NlZWRzIHdpdGggb25seSB0aGUgc2Vjb25kIHBhdGNoIGluIHRoZQotbG9jYWwgYnJhbmNoLgotJwotLiAuL3Rlc3QtbGliLnNoCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgcmVwb3NpdG9yeSB3aXRoIHRvcGljIGJyYW5jaCcgJwotCXRlc3RfY29tbWl0IEEgJiYKLQlnaXQgY2hlY2tvdXQgLWIgbXktdG9waWMtYnJhbmNoICYmCi0JdGVzdF9jb21taXQgQiAmJgotCXRlc3RfY29tbWl0IEMgJiYKLQlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyICYmCi0JdGVzdF9jb21taXQgQTIgQS50Ci0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BpY2sgdG9wIHBhdGNoIGZyb20gdG9waWMgYnJhbmNoIGludG8gbWFzdGVyJyAnCi0JZ2l0IGNoZXJyeS1waWNrIEMgJiYKLQlnaXQgY2hlY2tvdXQgLWYgbXktdG9waWMtYnJhbmNoCi0nCi0KLXRlc3RfZGVidWcgJwotCWdpdCBjaGVycnkgbWFzdGVyICYmCi0JZ2l0IGZvcm1hdC1wYXRjaCAtayAtLXN0ZG91dCAtLWZ1bGwtaW5kZXggbWFzdGVyID4vZGV2L251bGwgJiYKLQlnaXRrIC0tYWxsICYgc2xlZXAgMQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgdG9waWMgYnJhbmNoIGFnYWluc3QgbmV3IG1hc3RlciBhbmQgY2hlY2sgZ2l0IGFtIGRpZCBub3QgZ2V0IGhhbHRlZCcgJwotCWdpdCByZWJhc2UgbWFzdGVyICYmCi0JdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0tbWVyZ2UgdG9waWMgYnJhbmNoIHRoYXQgd2FzIHBhcnRpYWxseSBtZXJnZWQgdXBzdHJlYW0nICcKLQlnaXQgcmVzZXQgLS1oYXJkIEMgJiYKLQlnaXQgcmViYXNlIC0tbWVyZ2UgbWFzdGVyICYmCi0JdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtbWVyZ2UKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGlnbm9yZXMgZW1wdHkgY29tbWl0JyAnCi0JZ2l0IHJlc2V0IC0taGFyZCBBICYmCi0JZ2l0IGNvbW1pdCAtLWFsbG93LWVtcHR5IC1tIGVtcHR5ICYmCi0JdGVzdF9jb21taXQgRCAmJgotCWdpdCByZWJhc2UgQyAmJgotCXRlc3QgIiQoZ2l0IGxvZyAtLWZvcm1hdD0lcyBDLi4pIiA9ICJEIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLS1rZWVwLWVtcHR5JyAnCi0JZ2l0IHJlc2V0IC0taGFyZCBEICYmCi0JZ2l0IHJlYmFzZSAtLWtlZXAtZW1wdHkgQyAmJgotCXRlc3QgIiQoZ2l0IGxvZyAtLWZvcm1hdD0lcyBDLi4pIiA9ICJECi1lbXB0eSIKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0ta2VlcC1lbXB0eSBrZWVwcyBlbXB0eSBldmVuIGlmIGFscmVhZHkgaW4gdXBzdHJlYW0nICcKLQlnaXQgcmVzZXQgLS1oYXJkIEEgJiYKLQlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gYWxzby1lbXB0eSAmJgotCWdpdCByZWJhc2UgLS1rZWVwLWVtcHR5IEQgJiYKLQl0ZXN0ICIkKGdpdCBsb2cgLS1mb3JtYXQ9JXMgQS4uKSIgPSAiYWxzby1lbXB0eQotRAotZW1wdHkiCi0nCi0KLXRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQwMy1yZWJhc2Utc2tpcC5zaCBiL3QvdDM0MDMtcmViYXNlLXNraXAuc2gKaW5kZXggODI2NTAwYi4uMzk2ODAyMCAxMDA3NTUKLS0tIGEvdC90MzQwMy1yZWJhc2Utc2tpcC5zaAorKysgYi90L3QzNDAzLXJlYmFzZS1za2lwLnNoCkBAIC02NCwxMCArNjQsMTEgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0tc2tpcCB3aXRoIC0tbWVyZ2UnICcKIAlnaXQgcmViYXNlIC0tc2tpcAotCScKKycKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgYW5kIHJlZmVyZW5jZSB0cmVlcyBlcXVhbCcgXAotCSd0ZXN0IC16ICJgZ2l0IGRpZmYtdHJlZSBza2lwLW1lcmdlIHNraXAtcmVmZXJlbmNlYCInCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBhbmQgcmVmZXJlbmNlIHRyZWVzIGVxdWFsJyAnCisJdGVzdCAteiAiYGdpdCBkaWZmLXRyZWUgc2tpcC1tZXJnZSBza2lwLXJlZmVyZW5jZWAiCisnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vdmVkIGJhY2sgdG8gYnJhbmNoIGNvcnJlY3RseScgJwogCXRlc3QgcmVmcy9oZWFkcy9za2lwLW1lcmdlID0gJChnaXQgc3ltYm9saWMtcmVmIEhFQUQpCmRpZmYgLS1naXQgYS90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaCBiL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCmluZGV4IGE1ODQwNmQuLjQ5Y2NiMzggMTAwNzU1Ci0tLSBhL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCisrKyBiL3QvdDM0MDQtcmViYXNlLWludGVyYWN0aXZlLnNoCkBAIC00NzcsMTkgKzQ3NywxMSBAQAogCXRlc3QgJG9uZSA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2lnbm9yZSBwYXRjaCBpZiBpbiB1cHN0cmVhbScgJwotCUhFQUQ9JChnaXQgcmV2LXBhcnNlIEhFQUQpICYmCi0JZ2l0IGNoZWNrb3V0IC1iIGhhcy1jaGVycnktcGlja2VkIEhFQUReICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWNvbnRpbnVlIHRyaWVzIHRvIGNvbW1pdCwgZXZlbiBmb3IgImVkaXQiJyAnCiAJZWNobyB1bnJlbGF0ZWQgPiBmaWxlNyAmJgogCWdpdCBhZGQgZmlsZTcgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgY29tbWl0IC1tICJ1bnJlbGF0ZWQgY2hhbmdlIiAmJgotCWdpdCBjaGVycnktcGljayAkSEVBRCAmJgotCUVYUEVDVF9DT1VOVD0xIGdpdCByZWJhc2UgLWkgJEhFQUQgJiYKLQl0ZXN0ICRIRUFEID0gJChnaXQgcmV2LXBhcnNlIEhFQUReKQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICctLWNvbnRpbnVlIHRyaWVzIHRvIGNvbW1pdCwgZXZlbiBmb3IgImVkaXQiJyAnCiAJcGFyZW50PSQoZ2l0IHJldi1wYXJzZSBIRUFEXikgJiYKIAl0ZXN0X3RpY2sgJiYKIAlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgSEVBRF4gJiYKQEAgLTY5Miw3ICs2ODQsNyBAQAogCXRlc3RfY29tbWl0IG4yICYmCiAJdGVzdF9jb21taXQgbjMgJiYKIAlnaXQgbm90ZXMgYWRkIC1tImEgbm90ZSIgbjMgJiYKLQlnaXQgcmViYXNlIC0tb250byBuMSBuMiAmJgorCWdpdCByZWJhc2UgLWkgLS1vbnRvIG4xIG4yICYmCiAJdGVzdCAiYSBub3RlIiA9ICIkKGdpdCBub3RlcyBzaG93IEhFQUQpIgogJwogCkBAIC05MzQsNiArOTI2LDIxIEBACiAJdGVzdCBMID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lIFwkcCkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIHByb2R1Y2VzIHJlYWRhYmxlIHJlZmxvZycgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgYnJhbmNoIC1mIGJyYW5jaC1yZWZsb2ctdGVzdCBIICYmCisJZ2l0IHJlYmFzZSAtaSAtLW9udG8gSSBGIGJyYW5jaC1yZWZsb2ctdGVzdCAmJgorCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlyZWJhc2UgLWkgKHN0YXJ0KTogY2hlY2tvdXQgSQorCXJlYmFzZSAtaSAocGljayk6IEcKKwlyZWJhc2UgLWkgKHBpY2spOiBICisJcmViYXNlIC1pIChmaW5pc2gpOiByZXR1cm5pbmcgdG8gcmVmcy9oZWFkcy9icmFuY2gtcmVmbG9nLXRlc3QKKwlFT0YKKwl0YWlsIC1uIDQgLmdpdC9sb2dzL0hFQUQgfAorCXNlZCAtZSAicy8uKgkvLyIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIHJlc3BlY3RzIGNvcmUuY29tbWVudGNoYXInICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IEVeMCAmJgpAQCAtOTQ3LDQgKzk1NCwyNiBAQAogCXRlc3QgQiA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IHNlZCAtbmUgXCRwKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWksIHdpdGggPG9udG8+IGFuZCA8dXBzdHJlYW0+IHNwZWNpZmllZCBhcyA6L3F1dXhlcnknICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBicmFuY2ggLUQgdG9yZWJhc2UiICYmCisJZ2l0IGNoZWNrb3V0IC1iIHRvcmViYXNlIGJyYW5jaDEgJiYKKwl1cHN0cmVhbT0kKGdpdCByZXYtcGFyc2UgIjovSiIpICYmCisJb250bz0kKGdpdCByZXYtcGFyc2UgIjovQSIpICYmCisJZ2l0IHJlYmFzZSAtLW9udG8gJG9udG8gJHVwc3RyZWFtICYmCisJZ2l0IHJlc2V0IC0taGFyZCBicmFuY2gxICYmCisJZ2l0IHJlYmFzZSAtLW9udG8gIjovQSIgIjovSiIgJiYKKwlnaXQgY2hlY2tvdXQgYnJhbmNoMQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgd2l0aCAtLXN0cmF0ZWd5IGFuZCAtWCcgJworCWdpdCBjaGVja291dCAtYiBjb25mbGljdC1tZXJnZS11c2UtdGhlaXJzIGNvbmZsaWN0LWJyYW5jaCAmJgorCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwllY2hvIGZpdmUgPmNvbmZsaWN0ICYmCisJZWNobyBaID5maWxlMSAmJgorCWdpdCBjb21taXQgLWEgLW0gIm9uZSBmaWxlIGNvbmZsaWN0IiAmJgorCUVESVRPUj10cnVlIGdpdCByZWJhc2UgLWkgLS1zdHJhdGVneT1yZWN1cnNpdmUgLVhvdXJzIGNvbmZsaWN0LWJyYW5jaCAmJgorCXRlc3QgJChnaXQgc2hvdyBjb25mbGljdC1icmFuY2g6Y29uZmxpY3QpID0gJChjYXQgY29uZmxpY3QpICYmCisJdGVzdCAkKGNhdCBmaWxlMSkgPSBaCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQwNi1yZWJhc2UtbWVzc2FnZS5zaCBiL3QvdDM0MDYtcmViYXNlLW1lc3NhZ2Uuc2gKaW5kZXggZTZhOWEwZC4uMDM5MmUzNiAxMDA3NTUKLS0tIGEvdC90MzQwNi1yZWJhc2UtbWVzc2FnZS5zaAorKysgYi90L3QzNDA2LXJlYmFzZS1tZXNzYWdlLnNoCkBAIC00LDI3ICs0LDE3IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi1xdWlja19vbmUgKCkgewotCWVjaG8gIiQxIiA+ImZpbGUkMSIgJiYKLQlnaXQgYWRkICJmaWxlJDEiICYmCi0JdGVzdF90aWNrICYmCi0JZ2l0IGNvbW1pdCAtbSAiJDEiCi19Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCXRlc3RfY29tbWl0IE8gZmlsZU8gJiYKKwl0ZXN0X2NvbW1pdCBYIGZpbGVYICYmCisJdGVzdF9jb21taXQgQSBmaWxlQSAmJgorCXRlc3RfY29tbWl0IEIgZmlsZUIgJiYKKwl0ZXN0X2NvbW1pdCBZIGZpbGVZICYmCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwotCXF1aWNrX29uZSBPICYmCi0JZ2l0IGJyYW5jaCB0b3BpYyAmJgotCXF1aWNrX29uZSBYICYmCi0JcXVpY2tfb25lIEEgJiYKLQlxdWlja19vbmUgQiAmJgotCXF1aWNrX29uZSBZICYmCi0KLQlnaXQgY2hlY2tvdXQgdG9waWMgJiYKLQlxdWlja19vbmUgQSAmJgotCXF1aWNrX29uZSBCICYmCi0JcXVpY2tfb25lIFogJiYKKwlnaXQgY2hlY2tvdXQgLWIgdG9waWMgTyAmJgorCWdpdCBjaGVycnktcGljayBBIEIgJiYKKwl0ZXN0X2NvbW1pdCBaIGZpbGVaICYmCiAJZ2l0IHRhZyBzdGFydAotCiAnCiAKIGNhdCA+ZXhwZWN0IDw8XEVPRgpAQCAtMzQsMTIgKzI0LDMyIEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1tJyAnCi0KIAlnaXQgcmViYXNlIC1tIG1hc3RlciA+cmVwb3J0ICYmCiAJc2VkIC1uIC1lICIvXkFscmVhZHkgYXBwbGllZDogL3AiIFwKIAkJLWUgIi9eQ29tbWl0dGVkOiAvcCIgcmVwb3J0ID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSBhZ2FpbnN0IG1hc3RlciB0d2ljZScgJworCWdpdCByZWJhc2UgbWFzdGVyID5vdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCB0b3BpYyBpcyB1cCB0byBkYXRlIiBvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlIHdpdGggLS1mb3JjZScgJworCWdpdCByZWJhc2UgLS1mb3JjZS1yZWJhc2UgbWFzdGVyID5vdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJDdXJyZW50IGJyYW5jaCB0b3BpYyBpcyB1cCB0byBkYXRlLCByZWJhc2UgZm9yY2VkIiBvdXQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIGFnYWluc3QgbWFzdGVyIHR3aWNlIGZyb20gYW5vdGhlciBicmFuY2gnICcKKwlnaXQgY2hlY2tvdXQgdG9waWNeICYmCisJZ2l0IHJlYmFzZSBtYXN0ZXIgdG9waWMgPm91dCAmJgorCXRlc3RfaTE4bmdyZXAgIkN1cnJlbnQgYnJhbmNoIHRvcGljIGlzIHVwIHRvIGRhdGUiIG91dAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgZmFzdC1mb3J3YXJkIHRvIG1hc3RlcicgJworCWdpdCBjaGVja291dCB0b3BpY14gJiYKKwlnaXQgcmViYXNlIHRvcGljID5vdXQgJiYKKwl0ZXN0X2kxOG5ncmVwICJGYXN0LWZvcndhcmRlZCBIRUFEIHRvIHRvcGljIiBvdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0tc3RhdCcgJwpkaWZmIC0tZ2l0IGEvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoIGIvdC90MzQwOS1yZWJhc2UtcHJlc2VydmUtbWVyZ2VzLnNoCmluZGV4IDZkZTRlMjIuLjJlMGMzNjQgMTAwNzU1Ci0tLSBhL3QvdDM0MDktcmViYXNlLXByZXNlcnZlLW1lcmdlcy5zaAorKysgYi90L3QzNDA5LXJlYmFzZS1wcmVzZXJ2ZS1tZXJnZXMuc2gKQEAgLTExLDE0ICsxMSw2IEBACiBHSVRfQVVUSE9SX0VNQUlMPWJvZ3VzX2VtYWlsX2FkZHJlc3MKIGV4cG9ydCBHSVRfQVVUSE9SX0VNQUlMCiAKLSMgQ2xvbmUgMSAodHJpdmlhbCBtZXJnZSk6Ci0jCi0jIEExLS1BMiAgPC0tIG9yaWdpbi9tYXN0ZXIKLSMgIFwgICBcCi0jICAgQjEtLU0gIDwtLSB0b3BpYwotIyAgICBcCi0jICAgICBCMiAgPC0tIG9yaWdpbi90b3BpYwotIwogIyBDbG9uZSAyIChjb25mbGljdGluZyBtZXJnZSk6CiAjCiAjIEExLS1BMi0tQjMgICA8LS0gb3JpZ2luL21hc3RlcgpAQCAtMzYsMTYgKzI4LDYgQEAKICMgICAgIFwtLUEzICAgIDwtLSB0b3BpYzIKICMgICAgICBcCiAjICAgICAgIEIyICAgICA8LS0gb3JpZ2luL3RvcGljCi0jCi0jIENsb25lIDQgKG1lcmdlIHVzaW5nIHNlY29uZCBwYXJlbnQgYXMgYmFzZSk6Ci0jCi0jIEExLS1BMi0tQjMgICA8LS0gb3JpZ2luL21hc3RlcgotIyAgXAotIyAgIEIxLS1BMy0tTSAgPC0tIHRvcGljCi0jICAgIFwgICAgIC8KLSMgICAgIFwtLUE0ICAgIDwtLSB0b3BpYzIKLSMgICAgICBcCi0jICAgICAgIEIyICAgICA8LS0gb3JpZ2luL3RvcGljCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGZvciBtZXJnZS1wcmVzZXJ2aW5nIHJlYmFzZScgXAogCSdlY2hvIEZpcnN0ID4gQSAmJgpAQCAtNTgsMjAgKzQwLDYgQEAKIAlnaXQgY2hlY2tvdXQgLWYgbWFzdGVyICYmCiAJZWNobyBUaGlyZCA+PiBBICYmCiAJZ2l0IGNvbW1pdCAtYSAtbSAiTW9kaWZ5IEEyIiAmJgotCi0JZ2l0IGNsb25lIC4vLiBjbG9uZTEgJiYKLQkoY2QgY2xvbmUxICYmCi0JZ2l0IGNoZWNrb3V0IC1iIHRvcGljIG9yaWdpbi90b3BpYyAmJgotCWdpdCBtZXJnZSBvcmlnaW4vbWFzdGVyCi0JKSAmJgotCi0JZ2l0IGNsb25lIC4vLiBjbG9uZTQgJiYKLQkoCi0JCWNkIGNsb25lNCAmJgotCQlnaXQgY2hlY2tvdXQgLWIgdG9waWMgb3JpZ2luL3RvcGljICYmCi0JCWdpdCBtZXJnZSBvcmlnaW4vbWFzdGVyCi0JKSAmJgotCiAJZWNobyBGaWZ0aCA+IEIgJiYKIAlnaXQgYWRkIEIgJiYKIAlnaXQgY29tbWl0IC1tICJBZGQgZGlmZmVyZW50IEIiICYmCkBAIC0xMDEsMTYgKzY5LDYgQEAKIAlnaXQgY29tbWl0IC1hIC1tICJNb2RpZnkgQjIiCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtcCBmYWtlcyBpbnRlcmFjdGl2ZSByZWJhc2UnICcKLQkoCi0JY2QgY2xvbmUxICYmCi0JZ2l0IGZldGNoICYmCi0JZ2l0IHJlYmFzZSAtcCBvcmlnaW4vdG9waWMgJiYKLQl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTW9kaWZ5IEEiIHwgd2MgLWwpICYmCi0JdGVzdCAxID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgLS1wcmV0dHk9b25lbGluZSB8IGdyZXAgIk1lcmdlIHJlbW90ZS10cmFja2luZyBicmFuY2ggIiB8IHdjIC1sKQotCSkKLScKLQogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb250aW51ZSB3b3JrcyBhZnRlciBhIGNvbmZsaWN0JyAnCiAJKAogCWNkIGNsb25lMiAmJgpAQCAtMTM4LDE1ICs5Niw0IEBACiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLXAgd29ya3Mgd2hlbiBiYXNlIGluc2lkZSBzZWNvbmQgcGFyZW50JyAnCi0JKAotCWNkIGNsb25lNCAmJgotCWdpdCBmZXRjaCAmJgotCWdpdCByZWJhc2UgLXAgSEVBRF4yICYmCi0JdGVzdCAxID0gJChnaXQgcmV2LWxpc3QgLS1hbGwgLS1wcmV0dHk9b25lbGluZSB8IGdyZXAgIk1vZGlmeSBBIiB8IHdjIC1sKSAmJgotCXRlc3QgMSA9ICQoZ2l0IHJldi1saXN0IC0tYWxsIC0tcHJldHR5PW9uZWxpbmUgfCBncmVwICJNb2RpZnkgQiIgfCB3YyAtbCkgJiYKLQl0ZXN0IDEgPSAkKGdpdCByZXYtbGlzdCAtLWFsbCAtLXByZXR0eT1vbmVsaW5lIHwgZ3JlcCAiTWVyZ2UgcmVtb3RlLXRyYWNraW5nIGJyYW5jaCAiIHwgd2MgLWwpCi0JKQotJwotCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MTUtcmViYXNlLWF1dG9zcXVhc2guc2ggYi90L3QzNDE1LXJlYmFzZS1hdXRvc3F1YXNoLnNoCmluZGV4IGExZTg2YzQuLjQxMzcwYWIgMTAwNzU1Ci0tLSBhL3QvdDM0MTUtcmViYXNlLWF1dG9zcXVhc2guc2gKKysrIGIvdC90MzQxNS1yZWJhc2UtYXV0b3NxdWFzaC5zaApAQCAtNCw2ICs0LDggQEAKIAogLiAuL3Rlc3QtbGliLnNoCiAKKy4gIiRURVNUX0RJUkVDVE9SWSIvbGliLXJlYmFzZS5zaAorCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKIAllY2hvIDAgPmZpbGUwICYmCiAJZ2l0IGFkZCAuICYmCkBAIC0xOTMsNCArMTk1LDU5IEBACiAJdGVzdF9hdXRvX2NvbW1pdF9mbGFncyBzcXVhc2ggMgogJwogCit0ZXN0X2F1dG9fZml4dXBfZml4dXAgKCkgeworCWdpdCByZXNldCAtLWhhcmQgYmFzZSAmJgorCWVjaG8gMSA+ZmlsZTEgJiYKKwlnaXQgYWRkIC11ICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAiJDEhIGZpcnN0IiAmJgorCWVjaG8gMiA+ZmlsZTEgJiYKKwlnaXQgYWRkIC11ICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAiJDEhICQyISBmaXJzdCIgJiYKKwlnaXQgdGFnICJmaW5hbC0kMS0kMiIgJiYKKwl0ZXN0X3RpY2sgJiYKKwkoCisJCXNldF9jYXRfdG9kb19lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLWF1dG9zcXVhc2ggLWkgSEVBRF5eXl4gPmFjdHVhbCAmJgorCQljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCQlwaWNrICQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUReXl4pIGZpcnN0IGNvbW1pdAorCQkkMSAkKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEXikgJDEhIGZpcnN0CisJCSQxICQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQpICQxISAkMiEgZmlyc3QKKwkJcGljayAkKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEXl4pIHNlY29uZCBjb21taXQKKwkJRU9GCisJCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCSkgJiYKKwlnaXQgcmViYXNlIC0tYXV0b3NxdWFzaCAtaSBIRUFEXl5eXiAmJgorCWdpdCBsb2cgLS1vbmVsaW5lID5hY3R1YWwgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAzIGFjdHVhbAorCWdpdCBkaWZmIC0tZXhpdC1jb2RlICJmaW5hbC0kMS0kMiIgJiYKKwl0ZXN0IDIgPSAiJChnaXQgY2F0LWZpbGUgYmxvYiBIRUFEXjpmaWxlMSkiICYmCisJaWYgdGVzdCAiJDEiID0gImZpeHVwIgorCXRoZW4KKwkJdGVzdCAxID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReIHwgZ3JlcCBmaXJzdCB8IHdjIC1sKQorCWVsaWYgdGVzdCAiJDEiID0gInNxdWFzaCIKKwl0aGVuCisJCXRlc3QgMyA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IGdyZXAgZmlyc3QgfCB3YyAtbCkKKwllbHNlCisJCWZhbHNlCisJZmkKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZml4dXAhIGZpeHVwIScgJworCXRlc3RfYXV0b19maXh1cF9maXh1cCBmaXh1cCBmaXh1cAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdmaXh1cCEgc3F1YXNoIScgJworCXRlc3RfYXV0b19maXh1cF9maXh1cCBmaXh1cCBzcXVhc2gKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3F1YXNoISBzcXVhc2ghJyAnCisJdGVzdF9hdXRvX2ZpeHVwX2ZpeHVwIHNxdWFzaCBzcXVhc2gKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3F1YXNoISBmaXh1cCEnICcKKwl0ZXN0X2F1dG9fZml4dXBfZml4dXAgc3F1YXNoIGZpeHVwCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQyMC1yZWJhc2UtYXV0b3N0YXNoLnNoIGIvdC90MzQyMC1yZWJhc2UtYXV0b3N0YXNoLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkwZWIyNjQKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNDIwLXJlYmFzZS1hdXRvc3Rhc2guc2gKQEAgLTAsMCArMSwxNzAgQEAKKyMhL2Jpbi9zaAorIworIyBDb3B5cmlnaHQgKGMpIDIwMTMgUmFta3VtYXIgUmFtYWNoYW5kcmEKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJlYmFzZSAtLWF1dG9zdGFzaCB0ZXN0cycKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwllY2hvIGhlbGxvLXdvcmxkID5maWxlMCAmJgorCWdpdCBhZGQgLiAmJgorCXRlc3RfdGljayAmJgorCWdpdCBjb21taXQgLW0gImluaXRpYWwgY29tbWl0IiAmJgorCWdpdCBjaGVja291dCAtYiBmZWF0dXJlLWJyYW5jaCAmJgorCWVjaG8gYW5vdGhlci1oZWxsbyA+ZmlsZTEgJiYKKwllY2hvIGdvb2RieWUgPmZpbGUyICYmCisJZ2l0IGFkZCAuICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAic2Vjb25kIGNvbW1pdCIgJiYKKwllY2hvIGZpbmFsLWdvb2RieWUgPmZpbGUzICYmCisJZ2l0IGFkZCAuICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAidGhpcmQgY29tbWl0IiAmJgorCWdpdCBjaGVja291dCAtYiB1bnJlbGF0ZWQtb250by1icmFuY2ggbWFzdGVyICYmCisJZWNobyB1bnJlbGF0ZWQgPmZpbGU0ICYmCisJZ2l0IGFkZCAuICYmCisJdGVzdF90aWNrICYmCisJZ2l0IGNvbW1pdCAtbSAidW5yZWxhdGVkIGNvbW1pdCIgJiYKKwlnaXQgY2hlY2tvdXQgLWIgcmVsYXRlZC1vbnRvLWJyYW5jaCBtYXN0ZXIgJiYKKwllY2hvIGNvbmZsaWN0aW5nLWNoYW5nZSA+ZmlsZTIgJiYKKwlnaXQgYWRkIC4gJiYKKwl0ZXN0X3RpY2sgJiYKKwlnaXQgY29tbWl0IC1tICJyZWxhdGVkIGNvbW1pdCIKKycKKwordGVzdHJlYmFzZSgpIHsKKwl0eXBlPSQxCisJZG90ZXN0PSQyCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UkdHlwZTogZGlydHkgd29ya3RyZWUsIG5vbi1jb25mbGljdGluZyByZWJhc2UiICcKKwkJdGVzdF9jb25maWcgcmViYXNlLmF1dG9zdGFzaCB0cnVlICYmCisJCWdpdCByZXNldCAtLWhhcmQgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggZmVhdHVyZS1icmFuY2ggJiYKKwkJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCAmJgorCQllY2hvIGRpcnR5ID4+ZmlsZTMgJiYKKwkJZ2l0IHJlYmFzZSR0eXBlIHVucmVsYXRlZC1vbnRvLWJyYW5jaCAmJgorCQlncmVwIHVucmVsYXRlZCBmaWxlNCAmJgorCQlncmVwIGRpcnR5IGZpbGUzICYmCisJCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSR0eXBlOiBkaXJ0eSBpbmRleCwgbm9uLWNvbmZsaWN0aW5nIHJlYmFzZSIgJworCQl0ZXN0X2NvbmZpZyByZWJhc2UuYXV0b3N0YXNoIHRydWUgJiYKKwkJZ2l0IHJlc2V0IC0taGFyZCAmJgorCQlnaXQgY2hlY2tvdXQgLWIgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCBmZWF0dXJlLWJyYW5jaCAmJgorCQl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IGJyYW5jaCAtRCByZWJhc2VkLWZlYXR1cmUtYnJhbmNoICYmCisJCWVjaG8gZGlydHkgPj5maWxlMyAmJgorCQlnaXQgYWRkIGZpbGUzICYmCisJCWdpdCByZWJhc2UkdHlwZSB1bnJlbGF0ZWQtb250by1icmFuY2ggJiYKKwkJZ3JlcCB1bnJlbGF0ZWQgZmlsZTQgJiYKKwkJZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlnaXQgY2hlY2tvdXQgZmVhdHVyZS1icmFuY2gKKwknCisKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UkdHlwZTogY29uZmxpY3RpbmcgcmViYXNlIiAnCisJCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdpdCBjaGVja291dCAtYiByZWJhc2VkLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNoICYmCisJCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1EIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggJiYKKwkJZWNobyBkaXJ0eSA+PmZpbGUzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UkdHlwZSByZWxhdGVkLW9udG8tYnJhbmNoICYmCisJCXRlc3RfcGF0aF9pc19maWxlICRkb3Rlc3QvYXV0b3N0YXNoICYmCisJCSEgZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQlybSAtcmYgJGRvdGVzdCAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSR0eXBlOiAtLWNvbnRpbnVlIiAnCisJCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCQlnaXQgcmVzZXQgLS1oYXJkICYmCisJCWdpdCBjaGVja291dCAtYiByZWJhc2VkLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNoICYmCisJCXRlc3Rfd2hlbl9maW5pc2hlZCBnaXQgYnJhbmNoIC1EIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggJiYKKwkJZWNobyBkaXJ0eSA+PmZpbGUzICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UkdHlwZSByZWxhdGVkLW9udG8tYnJhbmNoICYmCisJCXRlc3RfcGF0aF9pc19maWxlICRkb3Rlc3QvYXV0b3N0YXNoICYmCisJCSEgZ3JlcCBkaXJ0eSBmaWxlMyAmJgorCQllY2hvICJjb25mbGljdGluZy1wbHVzLWdvb2RieWUiID5maWxlMiAmJgorCQlnaXQgYWRkIGZpbGUyICYmCisJCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAkZG90ZXN0L2F1dG9zdGFzaCAmJgorCQlncmVwIGRpcnR5IGZpbGUzICYmCisJCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSR0eXBlOiAtLXNraXAiICcKKwkJdGVzdF9jb25maWcgcmViYXNlLmF1dG9zdGFzaCB0cnVlICYmCisJCWdpdCByZXNldCAtLWhhcmQgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggZmVhdHVyZS1icmFuY2ggJiYKKwkJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCAmJgorCQllY2hvIGRpcnR5ID4+ZmlsZTMgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSR0eXBlIHJlbGF0ZWQtb250by1icmFuY2ggJiYKKwkJdGVzdF9wYXRoX2lzX2ZpbGUgJGRvdGVzdC9hdXRvc3Rhc2ggJiYKKwkJISBncmVwIGRpcnR5IGZpbGUzICYmCisJCWdpdCByZWJhc2UgLS1za2lwICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nICRkb3Rlc3QvYXV0b3N0YXNoICYmCisJCWdyZXAgZGlydHkgZmlsZTMgJiYKKwkJZ2l0IGNoZWNrb3V0IGZlYXR1cmUtYnJhbmNoCisJJworCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlJHR5cGU6IC0tYWJvcnQiICcKKwkJdGVzdF9jb25maWcgcmViYXNlLmF1dG9zdGFzaCB0cnVlICYmCisJCWdpdCByZXNldCAtLWhhcmQgJiYKKwkJZ2l0IGNoZWNrb3V0IC1iIHJlYmFzZWQtZmVhdHVyZS1icmFuY2ggZmVhdHVyZS1icmFuY2ggJiYKKwkJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCAmJgorCQllY2hvIGRpcnR5ID4+ZmlsZTMgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSR0eXBlIHJlbGF0ZWQtb250by1icmFuY2ggJiYKKwkJdGVzdF9wYXRoX2lzX2ZpbGUgJGRvdGVzdC9hdXRvc3Rhc2ggJiYKKwkJISBncmVwIGRpcnR5IGZpbGUzICYmCisJCWdpdCByZWJhc2UgLS1hYm9ydCAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAkZG90ZXN0L2F1dG9zdGFzaCAmJgorCQlncmVwIGRpcnR5IGZpbGUzICYmCisJCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorCScKKworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSR0eXBlOiBub24tY29uZmxpY3RpbmcgcmViYXNlLCBjb25mbGljdGluZyBzdGFzaCIgJworCQl0ZXN0X2NvbmZpZyByZWJhc2UuYXV0b3N0YXNoIHRydWUgJiYKKwkJZ2l0IHJlc2V0IC0taGFyZCAmJgorCQlnaXQgY2hlY2tvdXQgLWIgcmViYXNlZC1mZWF0dXJlLWJyYW5jaCBmZWF0dXJlLWJyYW5jaCAmJgorCQl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IGJyYW5jaCAtRCByZWJhc2VkLWZlYXR1cmUtYnJhbmNoICYmCisJCWVjaG8gZGlydHkgPmZpbGU0ICYmCisJCWdpdCBhZGQgZmlsZTQgJiYKKwkJZ2l0IHJlYmFzZSR0eXBlIHVucmVsYXRlZC1vbnRvLWJyYW5jaCAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAkZG90ZXN0ICYmCisJCWdpdCByZXNldCAtLWhhcmQgJiYKKwkJZ3JlcCB1bnJlbGF0ZWQgZmlsZTQgJiYKKwkJISBncmVwIGRpcnR5IGZpbGU0ICYmCisJCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaCAmJgorCQlnaXQgc3Rhc2ggcG9wICYmCisJCWdyZXAgZGlydHkgZmlsZTQKKwknCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZTogZmFzdC1mb3J3YXJkIHJlYmFzZSIgJworCXRlc3RfY29uZmlnIHJlYmFzZS5hdXRvc3Rhc2ggdHJ1ZSAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwlnaXQgY2hlY2tvdXQgLWIgYmVoaW5kLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNofjEgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgZ2l0IGJyYW5jaCAtRCBiZWhpbmQtZmVhdHVyZS1icmFuY2ggJiYKKwllY2hvIGRpcnR5ID4+ZmlsZTEgJiYKKwlnaXQgcmViYXNlIGZlYXR1cmUtYnJhbmNoICYmCisJZ3JlcCBkaXJ0eSBmaWxlMSAmJgorCWdpdCBjaGVja291dCBmZWF0dXJlLWJyYW5jaAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2U6IG5vb3AgcmViYXNlIiAnCisJdGVzdF9jb25maWcgcmViYXNlLmF1dG9zdGFzaCB0cnVlICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjaGVja291dCAtYiBzYW1lLWZlYXR1cmUtYnJhbmNoIGZlYXR1cmUtYnJhbmNoICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkIGdpdCBicmFuY2ggLUQgc2FtZS1mZWF0dXJlLWJyYW5jaCAmJgorCWVjaG8gZGlydHkgPj5maWxlMSAmJgorCWdpdCByZWJhc2UgZmVhdHVyZS1icmFuY2ggJiYKKwlncmVwIGRpcnR5IGZpbGUxICYmCisJZ2l0IGNoZWNrb3V0IGZlYXR1cmUtYnJhbmNoCisnCisKK3Rlc3RyZWJhc2UgIiIgLmdpdC9yZWJhc2UtYXBwbHkKK3Rlc3RyZWJhc2UgIiAtLW1lcmdlIiAuZ2l0L3JlYmFzZS1tZXJnZQordGVzdHJlYmFzZSAiIC0taW50ZXJhY3RpdmUiIC5naXQvcmViYXNlLW1lcmdlCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQyMS1yZWJhc2UtdG9wb2xvZ3ktbGluZWFyLnNoIGIvdC90MzQyMS1yZWJhc2UtdG9wb2xvZ3ktbGluZWFyLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjljNTVjYmEKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNDIxLXJlYmFzZS10b3BvbG9neS1saW5lYXIuc2gKQEAgLTAsMCArMSwzNTAgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdiYXNpYyByZWJhc2UgdG9wb2xvZ3kgdGVzdHMnCisuIC4vdGVzdC1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvbGliLXJlYmFzZS5zaAorCisjIGEtLS1iLS0tYworIyAgICAgIFwKKyMgICAgICAgZC0tLWUKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJdGVzdF9jb21taXQgYSAmJgorCXRlc3RfY29tbWl0IGIgJiYKKwl0ZXN0X2NvbW1pdCBjICYmCisJZ2l0IGNoZWNrb3V0IGIgJiYKKwl0ZXN0X2NvbW1pdCBkICYmCisJdGVzdF9jb21taXQgZQorJworCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAic2ltcGxlIHJlYmFzZSAkKiIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiBjIGUgJiYKKwkJdGVzdF9jbXBfcmV2IGMgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdkIGUnIGMuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogaXMgbm8tb3AgaWYgdXBzdHJlYW0gaXMgYW4gYW5jZXN0b3IiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogYiBlICYmCisJCXRlc3RfY21wX3JldiBlIEhFQUQKKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIC1mIHJld3JpdGVzIGV2ZW4gaWYgdXBzdHJlYW0gaXMgYW4gYW5jZXN0b3IiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLWYgYiBlICYmCisJCSEgdGVzdF9jbXBfcmV2IGUgSEVBRCAmJgorCQl0ZXN0X2NtcF9yZXYgYiBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgZScgYi4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiBmYXN0LWZvcndhcmRzIGZyb20gYW5jZXN0b3Igb2YgdXBzdHJlYW0iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogZSBiICYmCisJCXRlc3RfY21wX3JldiBlIEhFQUQKKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCisjICAgICAgIGYKKyMgICAgICAvCisjIGEtLS1iLS0tYy0tLWctLS1oCisjICAgICAgXAorIyAgICAgICBkLS0tZ3AtLWkKKyMKKyMgZ3AgPSBjaGVycnktcGlja2VkIGcKKyMgaCA9IHJldmVydGVkIGcKKyMKKyMgUmV2ZXJ0ZWQgcGF0Y2hlcyBhcmUgdGhlcmUgZm9yIHRlc3RzIHRvIGJlIGFibGUgdG8gY2hlY2sgaWYgYSBjb21taXQKKyMgdGhhdCBpbnRyb2R1Y2VkIHRoZSBzYW1lIGNoYW5nZSBhcyBhbm90aGVyIGNvbW1pdCBpcworIyBkcm9wcGVkLiBXaXRob3V0IHJldmVydGVkIGNvbW1pdHMsIHdlIGNvdWxkIGdldCBmYWxzZSBwb3NpdGl2ZXMKKyMgYmVjYXVzZSBhcHBseWluZyB0aGUgcGF0Y2ggc3VjY2VlZHMsIGJ1dCBzaW1wbHkgcmVzdWx0cyBpbiBubworIyBjaGFuZ2VzLgordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgb2YgbGluZWFyIGhpc3RvcnkgZm9yIHJhbmdlIHNlbGVjdGlvbiB0ZXN0cycgJworCWdpdCBjaGVja291dCBjICYmCisJdGVzdF9jb21taXQgZyAmJgorCXJldmVydCBoIGcgJiYKKwlnaXQgY2hlY2tvdXQgZCAmJgorCWNoZXJyeV9waWNrIGdwIGcgJiYKKwl0ZXN0X2NvbW1pdCBpICYmCisJZ2l0IGNoZWNrb3V0IGIgJiYKKwl0ZXN0X2NvbW1pdCBmCisnCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogZHJvcHMgcGF0Y2hlcyBpbiB1cHN0cmVhbSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiBoIGkgJiYKKwkJdGVzdF9jbXBfcmV2IGggSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdkIGknIGguLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogY2FuIGRyb3AgbGFzdCBwYXRjaCBpZiBpbiB1cHN0cmVhbSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiBoIGdwICYmCisJCXRlc3RfY21wX3JldiBoIEhFQUReICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdkJyBoLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIC0tb250byBkcm9wcyBwYXRjaGVzIGluIHVwc3RyZWFtIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIC0tb250byBmIGggaSAmJgorCQl0ZXN0X2NtcF9yZXYgZiBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ2QgaScgZi4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtLW9udG8gZG9lcyBub3QgZHJvcCBwYXRjaGVzIGluIG9udG8iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1vbnRvIGggZiBpICYmCisJCXRlc3RfY21wX3JldiBoIEhFQUR+MyAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBncCBpJyBoLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCisjIGEtLS1iLS0tYy0tLWohCisjICAgICAgXAorIyAgICAgICBkLS0tayEtLWwKKyMKKyMgISA9IGVtcHR5Cit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBvZiBsaW5lYXIgaGlzdG9yeSBmb3IgZW1wdHkgY29tbWl0IHRlc3RzJyAnCisJZ2l0IGNoZWNrb3V0IGMgJiYKKwltYWtlX2VtcHR5IGogJiYKKwlnaXQgY2hlY2tvdXQgZCAmJgorCW1ha2VfZW1wdHkgayAmJgorCXRlc3RfY29tbWl0IGwKKycKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiBkcm9wcyBlbXB0eSBjb21taXQiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogYyBsICYmCisJCXRlc3RfY21wX3JldiBjIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBsJyBjLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIC0ta2VlcC1lbXB0eSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiAtLWtlZXAtZW1wdHkgYyBsICYmCisJCXRlc3RfY21wX3JldiBjIEhFQUR+MyAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBrIGwnIGMuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogLS1rZWVwLWVtcHR5IGtlZXBzIGVtcHR5IGV2ZW4gaWYgYWxyZWFkeSBpbiB1cHN0cmVhbSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiAtLWtlZXAtZW1wdHkgaiBsICYmCisJCXRlc3RfY21wX3JldiBqIEhFQUR+MyAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBrIGwnIGouLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtbQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLWkKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1wCisKKyMgICAgICAgbQorIyAgICAgIC8KKyMgYS0tLWItLS1jLS0tZworIworIyB4LS0teS0tLWJwCisjCisjIGJwID0gY2hlcnJ5LXBpY2tlZCBiCisjIG0gPSByZXZlcnRlZCBiCisjCisjIFJldmVydGVkIHBhdGNoZXMgYXJlIHRoZXJlIGZvciB0ZXN0cyB0byBiZSBhYmxlIHRvIGNoZWNrIGlmIGEgY29tbWl0CisjIHRoYXQgaW50cm9kdWNlZCB0aGUgc2FtZSBjaGFuZ2UgYXMgYW5vdGhlciBjb21taXQgaXMKKyMgZHJvcHBlZC4gV2l0aG91dCByZXZlcnRlZCBjb21taXRzLCB3ZSBjb3VsZCBnZXQgZmFsc2UgcG9zaXRpdmVzCisjIGJlY2F1c2UgYXBwbHlpbmcgdGhlIHBhdGNoIHN1Y2NlZWRzLCBidXQgc2ltcGx5IHJlc3VsdHMgaW4gbm8KKyMgY2hhbmdlcy4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIGxpbmVhciBoaXN0b3J5IGZvciB0ZXN0IGludm9sdmluZyByb290JyAnCisJZ2l0IGNoZWNrb3V0IGIgJiYKKwlyZXZlcnQgbSBiICYmCisJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIGRpc2pvaW50ICYmCisJZ2l0IHJtIC1yZiAuICYmCisJdGVzdF9jb21taXQgeCAmJgorCXRlc3RfY29tbWl0IHkgJiYKKwljaGVycnlfcGljayBicCBiCisnCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogLS1vbnRvIC0tcm9vdCIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiAtLW9udG8gYyAtLXJvb3QgeSAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ3ggeScgYy4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiB3aXRob3V0IC0tb250byAtLXJvb3Qgd2l0aCBkaXNqb2ludCBoaXN0b3J5IiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIGMgeSAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ3ggeScgYy4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtLW9udG8gLS1yb290IGRyb3BzIHBhdGNoIGluIG9udG8iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1vbnRvIG0gLS1yb290IGJwICYmCisJCXRlc3RfY21wX3JldiBtIEhFQUR+MiAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAneCB5JyBtLi4KKwkiCit9Cit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnJwordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1pCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtcAorCit0ZXN0X3J1bl9yZWJhc2UgKCkgeworCXJlc3VsdD0kMQorCXNoaWZ0CisJdGVzdF9leHBlY3RfJHJlc3VsdCAicmViYXNlICQqIC0tb250byAtLXJvb3Qgd2l0aCBtZXJnZS1iYXNlIGRvZXMgbm90IGdvIHRvIHJvb3QiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogLS1vbnRvIG0gLS1yb290IGcgJiYKKwkJdGVzdF9jbXBfcmV2IG0gSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdjIGcnIG0uLgorCSIKK30KKwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiB3aXRob3V0IC0tb250byAtLXJvb3Qgd2l0aCBkaXNqb2ludCBoaXN0b3J5IGRyb3BzIHBhdGNoIGluIG9udG8iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogbSBicCAmJgorCQl0ZXN0X2NtcF9yZXYgbSBIRUFEfjIgJiYKKwkJdGVzdF9saW5lYXJfcmFuZ2UgJ3ggeScgbS4uCisJIgorfQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtaQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtLXJvb3Qgb24gbGluZWFyIGhpc3RvcnkgaXMgYSBuby1vcCIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiAtLXJvb3QgYyAmJgorCQl0ZXN0X2NtcF9yZXYgYyBIRUFECisJIgorfQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgJycKK3Rlc3RfcnVuX3JlYmFzZSBmYWlsdXJlIC1tCit0ZXN0X3J1bl9yZWJhc2UgZmFpbHVyZSAtaQordGVzdF9ydW5fcmViYXNlIGZhaWx1cmUgLXAKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCXRlc3RfZXhwZWN0XyRyZXN1bHQgInJlYmFzZSAkKiAtZiAtLXJvb3Qgb24gbGluZWFyIGhpc3RvcnkgY2F1c2VzIHJlLXdyaXRlIiAiCisJCXJlc2V0X3JlYmFzZSAmJgorCQlnaXQgcmViYXNlICQqIC1mIC0tcm9vdCBjICYmCisJCSEgdGVzdF9jbXBfcmV2IGEgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICdhIGIgYycgSEVBRAorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzIC1wCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzQyNS1yZWJhc2UtdG9wb2xvZ3ktbWVyZ2VzLnNoIGIvdC90MzQyNS1yZWJhc2UtdG9wb2xvZ3ktbWVyZ2VzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFkMTk1ZmIKLS0tIC9kZXYvbnVsbAorKysgYi90L3QzNDI1LXJlYmFzZS10b3BvbG9neS1tZXJnZXMuc2gKQEAgLTAsMCArMSwyNTggQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdyZWJhc2UgdG9wb2xvZ3kgdGVzdHMgd2l0aCBtZXJnZXMnCisuIC4vdGVzdC1saWIuc2gKKy4gIiRURVNUX0RJUkVDVE9SWSIvbGliLXJlYmFzZS5zaAorCit0ZXN0X3JldmlzaW9uX3N1YmplY3RzICgpIHsKKwlleHBlY3RlZD0iJDEiCisJc2hpZnQKKwlzZXQgLS0gJChnaXQgbG9nIC0tZm9ybWF0PSVzIC0tbm8td2Fsaz11bnNvcnRlZCAiJEAiKQorCXRlc3QgIiRleHBlY3RlZCIgPSAiJCoiCit9CisKKyMgYS0tLWItLS0tLS0tLS0tLWMKKyMgICAgICBcICAgICAgICAgICBcCisjICAgICAgIGQtLS0tLS0tZSAgIFwKKyMgICAgICAgIFwgICAgICAgXCAgIFwKKyMgICAgICAgICBuLS0tby0tLXctLS12CisjICAgICAgICAgICAgICBcCisjICAgICAgICAgICAgICAgegordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgb2Ygbm9uLWxpbmVhci1oaXN0b3J5JyAnCisJdGVzdF9jb21taXQgYSAmJgorCXRlc3RfY29tbWl0IGIgJiYKKwl0ZXN0X2NvbW1pdCBjICYmCisJZ2l0IGNoZWNrb3V0IGIgJiYKKwl0ZXN0X2NvbW1pdCBkICYmCisJdGVzdF9jb21taXQgZQorCisJZ2l0IGNoZWNrb3V0IGMgJiYKKwl0ZXN0X2NvbW1pdCBnICYmCisJcmV2ZXJ0IGggZyAmJgorCWdpdCBjaGVja291dCBkICYmCisJY2hlcnJ5X3BpY2sgZ3AgZyAmJgorCXRlc3RfY29tbWl0IGkgJiYKKwlnaXQgY2hlY2tvdXQgYiAmJgorCXRlc3RfY29tbWl0IGYKKworCWdpdCBjaGVja291dCBkICYmCisJdGVzdF9jb21taXQgbiAmJgorCXRlc3RfY29tbWl0IG8gJiYKKwl0ZXN0X21lcmdlIHcgZSAmJgorCXRlc3RfbWVyZ2UgdiBjICYmCisJZ2l0IGNoZWNrb3V0IG8gJiYKKwl0ZXN0X2NvbW1pdCB6CisnCisKK3Rlc3RfcnVuX3JlYmFzZSAoKSB7CisJcmVzdWx0PSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogYWZ0ZXIgbWVyZ2UgZnJvbSB1cHN0cmVhbSIgIgorCQlyZXNldF9yZWJhc2UgJiYKKwkJZ2l0IHJlYmFzZSAkKiBlIHcgJiYKKwkJdGVzdF9jbXBfcmV2IGUgSEVBRH4yICYmCisJCXRlc3RfbGluZWFyX3JhbmdlICduIG8nIGUuLgorCSIKK30KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICcnCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAtbQordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgLWkKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCWV4cGVjdGVkPSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogb2Ygbm9uLWxpbmVhciBoaXN0b3J5IGlzIGxpbmVhcml6ZWQgaW4gcGxhY2UiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogZCB3ICYmCisJCXRlc3RfY21wX3JldiBkIEhFQUR+MyAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAiXCciJGV4cGVjdGVkIlwnIiBkLi4KKwkiCit9CisjVE9ETzogbWFrZSBvcmRlciBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZmxhdm9ycyBvZiByZWJhc2UKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICdlIG4gbycgJycKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICdlIG4gbycgLW0KK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICduIG8gZScgLWkKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCWV4cGVjdGVkPSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogb2Ygbm9uLWxpbmVhciBoaXN0b3J5IGlzIGxpbmVhcml6ZWQgdXBzdHJlYW0iICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogYyB3ICYmCisJCXRlc3RfY21wX3JldiBjIEhFQUR+NCAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAiXCciJGV4cGVjdGVkIlwnIiBjLi4KKwkiCit9CisjVE9ETzogbWFrZSBvcmRlciBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZmxhdm9ycyBvZiByZWJhc2UKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICdkIGUgbiBvJyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJ2QgZSBuIG8nIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnZCBuIG8gZScgLWkKKwordGVzdF9ydW5fcmViYXNlICgpIHsKKwlyZXN1bHQ9JDEKKwlzaGlmdAorCWV4cGVjdGVkPSQxCisJc2hpZnQKKwl0ZXN0X2V4cGVjdF8kcmVzdWx0ICJyZWJhc2UgJCogb2Ygbm9uLWxpbmVhciBoaXN0b3J5IHdpdGggbWVyZ2VzIGFmdGVyIHVwc3RyZWFtIG1lcmdlIGlzIGxpbmVhcml6ZWQiICIKKwkJcmVzZXRfcmViYXNlICYmCisJCWdpdCByZWJhc2UgJCogYyB2ICYmCisJCXRlc3RfY21wX3JldiBjIEhFQUR+NCAmJgorCQl0ZXN0X2xpbmVhcl9yYW5nZSAiXCciJGV4cGVjdGVkIlwnIiBjLi4KKwkiCit9CisjVE9ETzogbWFrZSBvcmRlciBjb25zaXN0ZW50IGFjcm9zcyBhbGwgZmxhdm9ycyBvZiByZWJhc2UKK3Rlc3RfcnVuX3JlYmFzZSBzdWNjZXNzICdkIGUgbiBvJyAnJwordGVzdF9ydW5fcmViYXNlIHN1Y2Nlc3MgJ2QgZSBuIG8nIC1tCit0ZXN0X3J1bl9yZWJhc2Ugc3VjY2VzcyAnZCBuIG8gZScgLWkKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIGlzIG5vLW9wIGluIG5vbi1saW5lYXIgaGlzdG9yeSIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgZCB3ICYmCisJdGVzdF9jbXBfcmV2IHcgSEVBRAorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgaXMgbm8tb3Agd2hlbiBiYXNlIGluc2lkZSBzZWNvbmQgcGFyZW50IiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBlIHcgJiYKKwl0ZXN0X2NtcF9yZXYgdyBIRUFECisiCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgInJlYmFzZSAtcCAtLXJvb3Qgb24gbm9uLWxpbmVhciBoaXN0b3J5IGlzIGEgbm8tb3AiICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIC0tcm9vdCB3ICYmCisJdGVzdF9jbXBfcmV2IHcgSEVBRAorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgcmUtY3JlYXRlcyBtZXJnZSBmcm9tIHNpZGUgYnJhbmNoIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCB6IHcgJiYKKwl0ZXN0X2NtcF9yZXYgeiBIRUFEXiAmJgorCXRlc3RfY21wX3JldiB3XjIgSEVBRF4yCisiCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSAtcCByZS1jcmVhdGVzIGludGVybmFsIG1lcmdlIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBjIHcgJiYKKwl0ZXN0X2NtcF9yZXYgYyBIRUFEfjQgJiYKKwl0ZXN0X2NtcF9yZXYgSEVBRF4yXiBIRUFEfjMgJiYKKwl0ZXN0X3JldmlzaW9uX3N1YmplY3RzICdkIG4gZSBvIHcnIEhFQUR+MyBIRUFEfjIgSEVBRF4yIEhFQUReIEhFQUQKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIGNhbiByZS1jcmVhdGUgdHdvIGJyYW5jaGVzIG9uIG9udG8iICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIC0tb250byBjIGQgdyAmJgorCXRlc3RfY21wX3JldiBjIEhFQUR+MyAmJgorCXRlc3RfY21wX3JldiBjIEhFQUReMl4gJiYKKwl0ZXN0X3JldmlzaW9uX3N1YmplY3RzICduIGUgbyB3JyBIRUFEfjIgSEVBRF4yIEhFQUReIEhFQUQKKyIKKworIyAgICAgICBmCisjICAgICAgLworIyBhLS0tYi0tLWMtLS1nLS0taAorIyAgICAgIFwKKyMgICAgICAgZC0tLWdwLS1pCisjICAgICAgICBcICAgICAgIFwKKyMgICAgICAgICBlLS0tLS0tLXUKKyMKKyMgZ3AgPSBjaGVycnktcGlja2VkIGcKKyMgaCA9IHJldmVydGVkIGcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIG5vbi1saW5lYXItaGlzdG9yeSBmb3IgcGF0Y2gtZXF1aXZhbGVuY2UgdGVzdHMnICcKKwlnaXQgY2hlY2tvdXQgZSAmJgorCXRlc3RfbWVyZ2UgdSBpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlYmFzZSAtcCByZS1jcmVhdGVzIGhpc3RvcnkgYXJvdW5kIGRyb3BwZWQgY29tbWl0IG1hdGNoaW5nIHVwc3RyZWFtIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBoIHUgJiYKKwl0ZXN0X2NtcF9yZXYgaCBIRUFEfjMgJiYKKwl0ZXN0X2NtcF9yZXYgSEVBRF4yXiBIRUFEfjIgJiYKKwl0ZXN0X3JldmlzaW9uX3N1YmplY3RzICdkIGkgZSB1JyBIRUFEfjIgSEVBRF4yIEhFQUReIEhFQUQKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIC0tb250byBpbiBtZXJnZWQgaGlzdG9yeSBkcm9wcyBwYXRjaGVzIGluIHVwc3RyZWFtIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCAtLW9udG8gZiBoIHUgJiYKKwl0ZXN0X2NtcF9yZXYgZiBIRUFEfjMgJiYKKwl0ZXN0X2NtcF9yZXYgSEVBRF4yXiBIRUFEfjIgJiYKKwl0ZXN0X3JldmlzaW9uX3N1YmplY3RzICdkIGkgZSB1JyBIRUFEfjIgSEVBRF4yIEhFQUReIEhFQUQKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAicmViYXNlIC1wIC0tb250byBpbiBtZXJnZWQgaGlzdG9yeSBkb2VzIG5vdCBkcm9wIHBhdGNoZXMgaW4gb250byIgIgorCXJlc2V0X3JlYmFzZSAmJgorCWdpdCByZWJhc2UgLXAgLS1vbnRvIGggZiB1ICYmCisJdGVzdF9jbXBfcmV2IGggSEVBRH4zICYmCisJdGVzdF9jbXBfcmV2IEhFQUReMn4yIEhFQUR+MiAmJgorCXRlc3RfcmV2aXNpb25fc3ViamVjdHMgJ2QgZ3AgaSBlIHUnIEhFQUR+MiBIRUFEXjJeIEhFQUReMiBIRUFEXiBIRUFECisiCisKKyMgYS0tLWItLS1jLS0tZy0tLWgKKyMgICAgICBcCisjICAgICAgIGQtLS1ncC0tcworIyAgICAgICAgXCAgIFwgLworIyAgICAgICAgIFwgICBYCisjICAgICAgICAgIFwgLyBcCisjICAgICAgICAgICBlLS0tdAorIworIyBncCA9IGNoZXJyeS1waWNrZWQgZworIyBoID0gcmV2ZXJ0ZWQgZwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgb2Ygbm9uLWxpbmVhci1oaXN0b3J5IGZvciBkcm9wcGluZyB3aG9sZSBzaWRlJyAnCisJZ2l0IGNoZWNrb3V0IGdwICYmCisJdGVzdF9tZXJnZSBzIGUgJiYKKwlnaXQgY2hlY2tvdXQgZSAmJgorCXRlc3RfbWVyZ2UgdCBncAorJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICJyZWJhc2UgLXAgZHJvcHMgbWVyZ2UgY29tbWl0IHdoZW4gZW50aXJlIGZpcnN0LXBhcmVudCBzaWRlIGlzIGRyb3BwZWQiICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIGggcyAmJgorCXRlc3RfY21wX3JldiBoIEhFQUR+MiAmJgorCXRlc3RfbGluZWFyX3JhbmdlICdkIGUnIGguLgorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgZHJvcHMgbWVyZ2UgY29tbWl0IHdoZW4gZW50aXJlIHNlY29uZC1wYXJlbnQgc2lkZSBpcyBkcm9wcGVkIiAiCisJcmVzZXRfcmViYXNlICYmCisJZ2l0IHJlYmFzZSAtcCBoIHQgJiYKKwl0ZXN0X2NtcF9yZXYgaCBIRUFEfjIgJiYKKwl0ZXN0X2xpbmVhcl9yYW5nZSAnZCBlJyBoLi4KKyIKKworIyBhLS0tYi0tLWMKKyMgICAgICBcCisjICAgICAgIGQtLS1lCisjICAgICAgICBcICAgXAorIyAgICAgICAgIG4tLS1yCisjICAgICAgICAgIFwKKyMgICAgICAgICAgIG8KKyMKKyMgciA9IHRyZWUtc2FtZSB3aXRoIG4KK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIG5vbi1saW5lYXItaGlzdG9yeSBmb3IgZW1wdHkgY29tbWl0cycgJworCWdpdCBjaGVja291dCBuICYmCisJZ2l0IG1lcmdlIC0tbm8tY29tbWl0IGUgJiYKKwlnaXQgcmVzZXQgbiAuICYmCisJZ2l0IGNvbW1pdCAtbSByICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWdpdCBjbGVhbiAtZiAmJgorCWdpdCB0YWcgcgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgcmUtY3JlYXRlcyBlbXB0eSBpbnRlcm5hbCBtZXJnZSBjb21taXQiICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIGMgciAmJgorCXRlc3RfY21wX3JldiBjIEhFQUR+MyAmJgorCXRlc3RfY21wX3JldiBIRUFEXjJeIEhFQUR+MiAmJgorCXRlc3RfcmV2aXNpb25fc3ViamVjdHMgJ2QgZSBuIHInIEhFQUR+MiBIRUFEXjIgSEVBRF4gSEVBRAorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLXAgcmUtY3JlYXRlcyBlbXB0eSBtZXJnZSBjb21taXQiICIKKwlyZXNldF9yZWJhc2UgJiYKKwlnaXQgcmViYXNlIC1wIG8gciAmJgorCXRlc3RfY21wX3JldiBlIEhFQUReMiAmJgorCXRlc3RfY21wX3JldiBvIEhFQUReICYmCisJdGVzdF9yZXZpc2lvbl9zdWJqZWN0cyAncicgSEVBRAorIgorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM1MDUtY2hlcnJ5LXBpY2stZW1wdHkuc2ggYi90L3QzNTA1LWNoZXJyeS1waWNrLWVtcHR5LnNoCmluZGV4IGEwYzZlMzAuLmZiZGM0N2MgMTAwNzU1Ci0tLSBhL3QvdDM1MDUtY2hlcnJ5LXBpY2stZW1wdHkuc2gKKysrIGIvdC90MzUwNS1jaGVycnktcGljay1lbXB0eS5zaApAQCAtMjgsMjkgKzI4LDIxIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIGFuIGVtcHR5IGNvbW1pdCcgJwotCWdpdCBjaGVja291dCBtYXN0ZXIgJiYgewotCQlnaXQgY2hlcnJ5LXBpY2sgZW1wdHktYnJhbmNoXgotCQl0ZXN0ICIkPyIgPSAxCi0JfQorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGNoZXJyeS1waWNrIGVtcHR5LWJyYW5jaF4KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaW5kZXggbG9ja2ZpbGUgd2FzIHJlbW92ZWQnICcKLQogCXRlc3QgISAtZiAuZ2l0L2luZGV4LmxvY2sKLQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVycnktcGljayBhIGNvbW1pdCB3aXRoIGFuIGVtcHR5IG1lc3NhZ2UnICcKLQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmIHsKLQkJZ2l0IGNoZXJyeS1waWNrIGVtcHR5LWJyYW5jaAotCQl0ZXN0ICIkPyIgPSAxCi0JfQorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X2V4cGVjdF9jb2RlIDEgZ2l0IGNoZXJyeS1waWNrIGVtcHR5LWJyYW5jaAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbmRleCBsb2NrZmlsZSB3YXMgcmVtb3ZlZCcgJwotCiAJdGVzdCAhIC1mIC5naXQvaW5kZXgubG9jawotCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZXJyeS1waWNrIGEgY29tbWl0IHdpdGggYW4gZW1wdHkgbWVzc2FnZSB3aXRoIC0tYWxsb3ctZW1wdHktbWVzc2FnZScgJwpAQCAtMTAxLDcgKzkzLDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGZvcmteMCAmJgogCWdpdCBjaGVycnktcGljayAtLWtlZXAtcmVkdW5kYW50LWNvbW1pdHMgbWFzdGVyICYmCi0JZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JyVzJyA+YWN0dWFsICYmCisJZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JXMgPmFjdHVhbCAmJgogCWVjaG8gImFkZCBmaWxlMiBvbiBtYXN0ZXIiID5leHBlY3QgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCmRpZmYgLS1naXQgYS90L3QzNjAwLXJtLnNoIGIvdC90MzYwMC1ybS5zaAppbmRleCAwYzQ0ZTlmLi41Yzg3YjU1IDEwMDc1NQotLS0gYS90L3QzNjAwLXJtLnNoCisrKyBiL3QvdDM2MDAtcm0uc2gKQEAgLTY4Nyw0ICs2ODcsMTAwIEBACiAJdGVzdF9wYXRoX2lzX2ZpbGUgZS9mCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGZvciB0ZXN0aW5nIHJtIG1lc3NhZ2VzJyAnCisJPmJhci50eHQgJiYKKwk+Zm9vLnR4dCAmJgorCWdpdCBhZGQgYmFyLnR4dCBmb28udHh0CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIGZpbGVzIHdpdGggZGlmZmVyZW50IHN0YWdlZCBjb250ZW50JyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGVzIGhhdmUgc3RhZ2VkIGNvbnRlbnQgZGlmZmVyZW50IGZyb20gYm90aCB0aGUKKwlmaWxlIGFuZCB0aGUgSEVBRDoKKwkgICAgYmFyLnR4dAorCSAgICBmb28udHh0CisJKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKQorCUVPRgorCWVjaG8gY29udGVudDEgPmZvby50eHQgJiYKKwllY2hvIGNvbnRlbnQxID5iYXIudHh0ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJtIGZvby50eHQgYmFyLnR4dCAyPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIGZpbGVzIHdpdGggZGlmZmVyZW50IHN0YWdlZCBjb250ZW50IHdpdGhvdXQgaGludHMnICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJZXJyb3I6IHRoZSBmb2xsb3dpbmcgZmlsZXMgaGF2ZSBzdGFnZWQgY29udGVudCBkaWZmZXJlbnQgZnJvbSBib3RoIHRoZQorCWZpbGUgYW5kIHRoZSBIRUFEOgorCSAgICBiYXIudHh0CisJICAgIGZvby50eHQKKwlFT0YKKwllY2hvIGNvbnRlbnQyID5mb28udHh0ICYmCisJZWNobyBjb250ZW50MiA+YmFyLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBhZHZpY2Uucm1oaW50cz1mYWxzZSBybSBmb28udHh0IGJhci50eHQgMj5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBmaWxlIHdpdGggbG9jYWwgbW9kaWZpY2F0aW9uJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGxvY2FsIG1vZGlmaWNhdGlvbnM6CisJICAgIGZvby50eHQKKwkodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpCisJRU9GCisJZ2l0IGNvbW1pdCAtbSAidGVzdGluZyBybSAzIiAmJgorCWVjaG8gY29udGVudDMgPmZvby50eHQgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcm0gZm9vLnR4dCAyPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JtIGZpbGUgd2l0aCBsb2NhbCBtb2RpZmljYXRpb24gd2l0aG91dCBoaW50cycgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwllcnJvcjogdGhlIGZvbGxvd2luZyBmaWxlIGhhcyBsb2NhbCBtb2RpZmljYXRpb25zOgorCSAgICBiYXIudHh0CisJRU9GCisJZWNobyBjb250ZW50NCA+YmFyLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCAtYyBhZHZpY2Uucm1oaW50cz1mYWxzZSBybSBiYXIudHh0IDI+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gZmlsZSB3aXRoIGNoYW5nZXMgaW4gdGhlIGluZGV4JyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleDoKKwkgICAgZm9vLnR4dAorCSh1c2UgLS1jYWNoZWQgdG8ga2VlcCB0aGUgZmlsZSwgb3IgLWYgdG8gZm9yY2UgcmVtb3ZhbCkKKwlFT0YKKwlnaXQgcmVzZXQgLS1oYXJkICYmCisJZWNobyBjb250ZW50NSA+Zm9vLnR4dCAmJgorCWdpdCBhZGQgZm9vLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBybSBmb28udHh0IDI+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncm0gZmlsZSB3aXRoIGNoYW5nZXMgaW4gdGhlIGluZGV4IHdpdGhvdXQgaGludHMnICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJZXJyb3I6IHRoZSBmb2xsb3dpbmcgZmlsZSBoYXMgY2hhbmdlcyBzdGFnZWQgaW4gdGhlIGluZGV4OgorCSAgICBmb28udHh0CisJRU9GCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IC1jIGFkdmljZS5ybWhpbnRzPWZhbHNlIHJtIGZvby50eHQgMj5hY3R1YWwgJiYKKwl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdybSBmaWxlcyB3aXRoIHR3byBkaWZmZXJlbnQgZXJyb3JzJyAnCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGUgaGFzIHN0YWdlZCBjb250ZW50IGRpZmZlcmVudCBmcm9tIGJvdGggdGhlCisJZmlsZSBhbmQgdGhlIEhFQUQ6CisJICAgIGZvbzEudHh0CisJKHVzZSAtZiB0byBmb3JjZSByZW1vdmFsKQorCWVycm9yOiB0aGUgZm9sbG93aW5nIGZpbGUgaGFzIGNoYW5nZXMgc3RhZ2VkIGluIHRoZSBpbmRleDoKKwkgICAgYmFyMS50eHQKKwkodXNlIC0tY2FjaGVkIHRvIGtlZXAgdGhlIGZpbGUsIG9yIC1mIHRvIGZvcmNlIHJlbW92YWwpCisJRU9GCisJZWNobyBjb250ZW50ID5mb28xLnR4dCAmJgorCWdpdCBhZGQgZm9vMS50eHQgJiYKKwllY2hvIGNvbnRlbnQ2ID5mb28xLnR4dCAmJgorCWVjaG8gY29udGVudDYgPmJhcjEudHh0ICYmCisJZ2l0IGFkZCBiYXIxLnR4dCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBybSBiYXIxLnR4dCBmb28xLnR4dCAyPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzkwMC1pMThuLWNvbW1pdC5zaCBiL3QvdDM5MDAtaTE4bi1jb21taXQuc2gKaW5kZXggMzdkZGFiYi4uNGJmMWRiZSAxMDA3NTUKLS0tIGEvdC90MzkwMC1pMThuLWNvbW1pdC5zaAorKysgYi90L3QzOTAwLWkxOG4tY29tbWl0LnNoCkBAIC0zNCwxMSArMzQsNDcgQEAKIAl0ZXN0IHogPSAieiRFIgogJwogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdVVEYtMTYgcmVmdXNlZCBiZWNhdXNlIG9mIE5VTHMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1VURi0xNiByZWZ1c2VkIGJlY2F1c2Ugb2YgTlVMcycgJwogCWVjaG8gVVRGLTE2ID5GICYmCi0JZ2l0IGNvbW1pdCAtYSAtRiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC9VVEYtMTYudHh0CisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbW1pdCAtYSAtRiAiJFRFU1RfRElSRUNUT1JZIi90MzkwMC9VVEYtMTYudHh0CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1VURi04IGludmFsaWQgY2hhcmFjdGVycyByZWZ1c2VkJyAnCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZiAkSE9NRS9zdGRlcnIgJEhPTUUvaW52YWxpZCIgJiYKKwllY2hvICJVVEYtOCBjaGFyYWN0ZXJzIiA+RiAmJgorCXByaW50ZiAiQ29tbWl0IG1lc3NhZ2VcblxuSW52YWxpZCBzdXJyb2dhdGU6XDM1NVwyNDBcMjAwXG4iIFwKKwkJPiIkSE9NRS9pbnZhbGlkIiAmJgorCWdpdCBjb21taXQgLWEgLUYgIiRIT01FL2ludmFsaWQiIDI+IiRIT01FIi9zdGRlcnIgJiYKKwlncmVwICJkaWQgbm90IGNvbmZvcm0iICIkSE9NRSIvc3RkZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1VURi04IG92ZXJsb25nIHNlcXVlbmNlcyByZWplY3RlZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWYgJEhPTUUvc3RkZXJyICRIT01FL2ludmFsaWQiICYmCisJcm0gLWYgIiRIT01FL3N0ZGVyciIgIiRIT01FL2ludmFsaWQiICYmCisJZWNobyAiVVRGLTggb3ZlcmxvbmciID5GICYmCisJcHJpbnRmICJcMzQwXDIwMlwyNTFvbW1pdCBtZXNzYWdlXG5cblRoaXMgaXMgbm90IGEgc3BhY2U6XDMwMFwyNDBcbiIgXAorCQk+IiRIT01FL2ludmFsaWQiICYmCisJZ2l0IGNvbW1pdCAtYSAtRiAiJEhPTUUvaW52YWxpZCIgMj4iJEhPTUUiL3N0ZGVyciAmJgorCWdyZXAgImRpZCBub3QgY29uZm9ybSIgIiRIT01FIi9zdGRlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnVVRGLTggbm9uLWNoYXJhY3RlcnMgcmVmdXNlZCcgJworCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWYgJEhPTUUvc3RkZXJyICRIT01FL2ludmFsaWQiICYmCisJZWNobyAiVVRGLTggbm9uLWNoYXJhY3RlciAxIiA+RiAmJgorCXByaW50ZiAiQ29tbWl0IG1lc3NhZ2VcblxuTm9uLWNoYXJhY3RlcjpcMzY0XDIxN1wyNzdcMjc2XG4iIFwKKwkJPiIkSE9NRS9pbnZhbGlkIiAmJgorCWdpdCBjb21taXQgLWEgLUYgIiRIT01FL2ludmFsaWQiIDI+IiRIT01FIi9zdGRlcnIgJiYKKwlncmVwICJkaWQgbm90IGNvbmZvcm0iICIkSE9NRSIvc3RkZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ1VURi04IG5vbi1jaGFyYWN0ZXJzIHJlZnVzZWQnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mICRIT01FL3N0ZGVyciAkSE9NRS9pbnZhbGlkIiAmJgorCWVjaG8gIlVURi04IG5vbi1jaGFyYWN0ZXIgMi4iID5GICYmCisJcHJpbnRmICJDb21taXQgbWVzc2FnZVxuXG5Ob24tY2hhcmFjdGVyOlwzNTdcMjY3XDIyMFxuIiBcCisJCT4iJEhPTUUvaW52YWxpZCIgJiYKKwlnaXQgY29tbWl0IC1hIC1GICIkSE9NRS9pbnZhbGlkIiAyPiIkSE9NRSIvc3RkZXJyICYmCisJZ3JlcCAiZGlkIG5vdCBjb25mb3JtIiAiJEhPTUUiL3N0ZGVycgorJwogCiBmb3IgSCBpbiBJU084ODU5LTEgZXVjSlAgSVNPLTIwMjItSlAKIGRvCmRpZmYgLS1naXQgYS90L3QzOTAwL1VURi0xNi50eHQgYi90L3QzOTAwL1VURi0xNi50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI1N2YwNQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDM5MDAvVVRGLTE2LnR4dApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90L3QzOTAzLXN0YXNoLnNoIGIvdC90MzkwMy1zdGFzaC5zaAppbmRleCA4ZmYwMzliLi41ZDIyZjE3IDEwMDc1NQotLS0gYS90L3QzOTAzLXN0YXNoLnNoCisrKyBiL3QvdDM5MDMtc3Rhc2guc2gKQEAgLTIwMCwxNyArMjAwLDE3IEBACiAJZWNobyBmb28gPiBmaWxlICYmCiAJZ2l0IHN0YXNoICYmCiAJZ2l0IHN0YXNoIGFwcGx5IC1xID4gb3V0cHV0Lm91dCAyPiYxICYmCi0JdGVzdCAhIC1zIG91dHB1dC5vdXQKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0Lm91dAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzYXZlIC1xIGlzIHF1aWV0JyAnCiAJZ2l0IHN0YXNoIHNhdmUgLS1xdWlldCA+IG91dHB1dC5vdXQgMj4mMSAmJgotCXRlc3QgISAtcyBvdXRwdXQub3V0CisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5vdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncG9wIC1xIGlzIHF1aWV0JyAnCiAJZ2l0IHN0YXNoIHBvcCAtcSA+IG91dHB1dC5vdXQgMj4mMSAmJgotCXRlc3QgISAtcyBvdXRwdXQub3V0CisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5vdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncG9wIC1xIC0taW5kZXggd29ya3MgYW5kIGlzIHF1aWV0JyAnCkBAIC0yMTksMTMgKzIxOSwxMyBAQAogCWdpdCBzdGFzaCBzYXZlIC0tcXVpZXQgJiYKIAlnaXQgc3Rhc2ggcG9wIC1xIC0taW5kZXggPiBvdXRwdXQub3V0IDI+JjEgJiYKIAl0ZXN0IGZvbyA9ICIkKGdpdCBzaG93IDpmaWxlKSIgJiYKLQl0ZXN0ICEgLXMgb3V0cHV0Lm91dAorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQub3V0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Ryb3AgLXEgaXMgcXVpZXQnICcKIAlnaXQgc3Rhc2ggJiYKIAlnaXQgc3Rhc2ggZHJvcCAtcSA+IG91dHB1dC5vdXQgMj4mMSAmJgotCXRlc3QgISAtcyBvdXRwdXQub3V0CisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dHB1dC5vdXQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3Rhc2ggLWsnICcKQEAgLTY1NCw0ICs2NTQsNDEgQEAKIAl0ZXN0X2NtcCBvdXRwdXQgZXhwZWN0CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0b3JlIGNhbGxlZCB3aXRoIGludmFsaWQgY29tbWl0JyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN0YXNoIHN0b3JlIGZvbworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdG9yZSB1cGRhdGVzIHN0YXNoIHJlZiBhbmQgcmVmbG9nJyAnCisJZ2l0IHN0YXNoIGNsZWFyICYmCisJZ2l0IHJlc2V0IC0taGFyZCAmJgorCWVjaG8gcXV1eCA+YmF6enkgJiYKKwlnaXQgYWRkIGJhenp5ICYmCisJU1RBU0hfSUQ9JChnaXQgc3Rhc2ggY3JlYXRlKSAmJgorCWdpdCByZXNldCAtLWhhcmQgJiYKKwkhIGdyZXAgcXV1eCBiYXp6eSAmJgorCWdpdCBzdGFzaCBzdG9yZSAtbSBxdXV4ZXJ5ICRTVEFTSF9JRCAmJgorCXRlc3QgJChjYXQgLmdpdC9yZWZzL3N0YXNoKSA9ICRTVEFTSF9JRCAmJgorCWdyZXAgJFNUQVNIX0lEIC5naXQvbG9ncy9yZWZzL3N0YXNoICYmCisJZ2l0IHN0YXNoIHBvcCAmJgorCWdyZXAgcXV1eCBiYXp6eQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGFzaCBhIGNoYW5nZSB0byB0dXJuIGEgbm9uLWRpcmVjdG9yeSB0byBhIGRpcmVjdG9yeScgJworCWdpdCByZXNldCAtLWhhcmQgJiYKKwk+dGVzdGZpbGUgJiYKKwlnaXQgYWRkIHRlc3RmaWxlICYmCisJZ2l0IGNvbW1pdCAtbSAiYWRkIHRlc3RmaWxlIGFzIGEgcmVndWxhciBmaWxlIiAmJgorCXJtIHRlc3RmaWxlICYmCisJbWtkaXIgdGVzdGZpbGUgJiYKKwk+dGVzdGZpbGUvZmlsZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdGFzaCBzYXZlICJyZWNvdmVyIHJlZ3VsYXIgZmlsZSIgJiYKKwl0ZXN0IC1mIHRlc3RmaWxlL2ZpbGUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3Rhc2ggYSBjaGFuZ2UgdG8gdHVybiBhIG5vbi1kaXJlY3RvcnkgdG8gYSBkaXJlY3RvcnkgKGZvcmNlZCknICcKKwlnaXQgc3Rhc2ggc2F2ZSAtLWZvcmNlICJyZWNvdmVyIHJlZ3VsYXIgZmlsZSAoZm9yY2VkKSIgJiYKKwkhIHRlc3QgLWYgdGVzdGZpbGUvZmlsZSAmJgorCXRlc3QgLWYgdGVzdGZpbGUKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q0MDAwLWRpZmYtZm9ybWF0LnNoIGIvdC90NDAwMC1kaWZmLWZvcm1hdC5zaAppbmRleCA2ZGRkNDY5Li44ZGUzNmI3IDEwMDc1NQotLS0gYS90L3Q0MDAwLWRpZmYtZm9ybWF0LnNoCisrKyBiL3QvdDQwMDAtZGlmZi1mb3JtYXQuc2gKQEAgLTE1LDE3ICsxNSwxNyBAQAogY2F0IHBhdGgwID5wYXRoMQogY2htb2QgK3ggcGF0aDEKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3VwZGF0ZS1pbmRleCAtLWFkZCB0d28gZmlsZXMgd2l0aCBhbmQgd2l0aG91dCAreC4nIFwKLSAgICAnZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBwYXRoMCBwYXRoMScKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VwZGF0ZS1pbmRleCAtLWFkZCB0d28gZmlsZXMgd2l0aCBhbmQgd2l0aG91dCAreC4nICcKKwlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIHBhdGgwIHBhdGgxCisnCiAKIG12IHBhdGgwIHBhdGgwLQogc2VkIC1lICdzL2xpbmUvTGluZS8nIDxwYXRoMC0gPnBhdGgwCiBjaG1vZCAreCBwYXRoMAogcm0gLWYgcGF0aDEKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgZGlmZi1maWxlcyAtcCBhZnRlciBlZGl0aW5nIHdvcmsgdHJlZS4nIFwKLSAgICAnZ2l0IGRpZmYtZmlsZXMgLXAgPmN1cnJlbnQnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZi1maWxlcyAtcCBhZnRlciBlZGl0aW5nIHdvcmsgdHJlZS4nICcKKwlnaXQgZGlmZi1maWxlcyAtcCA+YWN0dWFsCisnCiAKICMgdGhhdCdzIGFzIGZhciBhcyBpdCBjb21lcwogaWYgWyAiJChnaXQgY29uZmlnIC0tZ2V0IGNvcmUuZmlsZW1vZGUpIiA9IGZhbHNlIF0KQEAgLTU1LDggKzU1LDM4IEBACiAtbGluZSAzCiBFT0YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBcCi0gICAgJ3ZhbGlkYXRlIGdpdCBkaWZmLWZpbGVzIC1wIG91dHB1dC4nIFwKLSAgICAnY29tcGFyZV9kaWZmX3BhdGNoIGN1cnJlbnQgZXhwZWN0ZWQnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZGF0ZSBnaXQgZGlmZi1maWxlcyAtcCBvdXRwdXQuJyAnCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZi1maWxlcyAtcyBhZnRlciBlZGl0aW5nIHdvcmsgdHJlZScgJworCWdpdCBkaWZmLWZpbGVzIC1zID5hY3R1YWwgMj5lcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgYWN0dWFsICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGVycgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZi1maWxlcyAtLW5vLXBhdGNoIGFzIHN5bm9ueW0gZm9yIC1zJyAnCisJZ2l0IGRpZmYtZmlsZXMgLS1uby1wYXRjaCA+YWN0dWFsIDI+ZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGFjdHVhbCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGRpZmYtZmlsZXMgLS1uby1wYXRjaCAtLXBhdGNoIHNob3dzIHRoZSBwYXRjaCcgJworCWdpdCBkaWZmLWZpbGVzIC0tbm8tcGF0Y2ggLS1wYXRjaCA+YWN0dWFsICYmCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZi1maWxlcyAtLW5vLXBhdGNoIC0tcGF0Y2gtd2l0aC1yYXcgc2hvd3MgdGhlIHBhdGNoIGFuZCByYXcgZGF0YScgJworCWdpdCBkaWZmLWZpbGVzIC0tbm8tcGF0Y2ggLS1wYXRjaC13aXRoLXJhdyA+YWN0dWFsICYmCisJZ3JlcCAtcSAiXjoxMDA2NDQgMTAwNzU1IC4qIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgTQlwYXRoMFwkIiBhY3R1YWwgJiYKKwl0YWlsIC1uICs0IGFjdHVhbCA+YWN0dWFsLXBhdGNoICYmCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIGFjdHVhbC1wYXRjaAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgZGlmZi1maWxlcyAtLXBhdGNoIC0tbm8tcGF0Y2ggZG9lcyBub3Qgc2hvdyB0aGUgcGF0Y2gnICcKKwlnaXQgZGlmZi1maWxlcyAtLXBhdGNoIC0tbm8tcGF0Y2ggPmFjdHVhbCAyPmVyciAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBhY3R1YWwgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgZXJyCisnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NDAxNC1mb3JtYXQtcGF0Y2guc2ggYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAppbmRleCA1OGQ0MTgwLi42Njg5MzNiIDEwMDc1NQotLS0gYS90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAorKysgYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaApAQCAtOTcyLDYgKzk3Miw0OSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1mcm9tPWlkZW50IG5vdGljZXMgYm9ndXMgaWRlbnQnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgZm9ybWF0LXBhdGNoIC0xIC0tc3Rkb3V0IC0tZnJvbT1mb28gPnBhdGNoCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tZnJvbT1pZGVudCByZXBsYWNlcyBhdXRob3InICcKKwlnaXQgZm9ybWF0LXBhdGNoIC0xIC0tc3Rkb3V0IC0tZnJvbT0iTWUgPG1lQGV4YW1wbGUuY29tPiIgPnBhdGNoICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCUZyb206IE1lIDxtZUBleGFtcGxlLmNvbT4KKworCUZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisKKwlFT0YKKwlzZWQgLW5lICIvXkZyb206L3A7IC9eJC9wOyAvXi0tLSQvcSIgPHBhdGNoID5wYXRjaC5oZWFkICYmCisJdGVzdF9jbXAgZXhwZWN0IHBhdGNoLmhlYWQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1mcm9tIHVzZXMgY29tbWl0dGVyIGlkZW50JyAnCisJZ2l0IGZvcm1hdC1wYXRjaCAtMSAtLXN0ZG91dCAtLWZyb20gPnBhdGNoICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCUZyb206IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KKworCUZyb206IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisKKwlFT0YKKwlzZWQgLW5lICIvXkZyb206L3A7IC9eJC9wOyAvXi0tLSQvcSIgPHBhdGNoID5wYXRjaC5oZWFkICYmCisJdGVzdF9jbXAgZXhwZWN0IHBhdGNoLmhlYWQKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaW4tYm9keSBoZWFkZXJzIHRyaWdnZXIgY29udGVudCBlbmNvZGluZycgJworCUdJVF9BVVRIT1JfTkFNRT0iw6l4w7Z0w6xjIiB0ZXN0X2NvbW1pdCBleG90aWMgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQgSEVBRF4iICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtMSAtLXN0ZG91dCAtLWZyb20gPnBhdGNoICYmCisJY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCUZyb206IEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KKwlDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKKworCUZyb206IMOpeMO2dMOsYyA8YXV0aG9yQGV4YW1wbGUuY29tPgorCisJRU9GCisJc2VkIC1uZSAiL15Gcm9tOi9wOyAvXiQvcDsgL15Db250ZW50LVR5cGUvcDsgL14tLS0kL3EiIDxwYXRjaCA+cGF0Y2guaGVhZCAmJgorCXRlc3RfY21wIGV4cGVjdCBwYXRjaC5oZWFkCisnCisKIGFwcGVuZF9zaWdub2ZmKCkKIHsKIAlDPSQoZ2l0IGNvbW1pdC10cmVlIEhFQUReXnt0cmVlfSAtcCBIRUFEKSAmJgpkaWZmIC0tZ2l0IGEvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2ggYi90L3Q0MDE1LWRpZmYtd2hpdGVzcGFjZS5zaAppbmRleCBjYzNkYjEzLi4zZmI0Yjk3IDEwMDc1NQotLS0gYS90L3Q0MDE1LWRpZmYtd2hpdGVzcGFjZS5zaAorKysgYi90L3Q0MDE1LWRpZmYtd2hpdGVzcGFjZS5zaApAQCAtMTQyLDYgKzE0MiwzNTEgQEAKIGdpdCBkaWZmIC0taWdub3JlLXNwYWNlLWF0LWVvbCA+IG91dAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYW5vdGhlciB0ZXN0LCB3aXRoIC0taWdub3JlLXNwYWNlLWF0LWVvbCcgJ3Rlc3RfY21wIGV4cGVjdCBvdXQnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2lnbm9yZS1ibGFuay1saW5lczogb25seSBuZXcgbGluZXMnICcKKwl0ZXN0X3NlcSA1ID54ICYmCisJZ2l0IHVwZGF0ZS1pbmRleCB4ICYmCisJdGVzdF9zZXEgNSB8IHNlZCAiLzMvaSBcXAorIiA+eCAmJgorCWdpdCBkaWZmIC0taWdub3JlLWJsYW5rLWxpbmVzID5vdXQgJiYKKwk+ZXhwZWN0ICYmCisJdGVzdF9jbXAgb3V0IGV4cGVjdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpZ25vcmUtYmxhbmstbGluZXM6IG9ubHkgbmV3IGxpbmVzIHdpdGggc3BhY2UnICcKKwl0ZXN0X3NlcSA1ID54ICYmCisJZ2l0IHVwZGF0ZS1pbmRleCB4ICYmCisJdGVzdF9zZXEgNSB8IHNlZCAiLzMvaSBcICIgPnggJiYKKwlnaXQgZGlmZiAtdyAtLWlnbm9yZS1ibGFuay1saW5lcyA+b3V0ICYmCisJPmV4cGVjdCAmJgorCXRlc3RfY21wIG91dCBleHBlY3QKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaWdub3JlLWJsYW5rLWxpbmVzOiBhZnRlciBjaGFuZ2UnICcKKwljYXQgPDwtXEVPRiA+eCAmJgorCTEKKwkyCisKKwkzCisJNAorCTUKKworCTYKKwk3CisJRU9GCisJZ2l0IHVwZGF0ZS1pbmRleCB4ICYmCisJY2F0IDw8LVxFT0YgPnggJiYKKwljaGFuZ2UKKworCTEKKwkyCisJMworCTQKKwk1CisJNgorCisJNworCUVPRgorCWdpdCBkaWZmIC0taW50ZXItaHVuay1jb250ZXh0PTEwMCAtLWlnbm9yZS1ibGFuay1saW5lcyA+b3V0LnRtcCAmJgorCWNhdCA8PC1cRU9GID5leHBlY3RlZCAmJgorCWRpZmYgLS1naXQgYS94IGIveAorCS0tLSBhL3gKKwkrKysgYi94CisJQEAgLTEsNiArMSw3IEBACisJK2NoYW5nZQorCSsKKwkgMQorCSAyCisJLQorCSAzCisJIDQKKwkgNQorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBvdXQudG1wCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2lnbm9yZS1ibGFuay1saW5lczogYmVmb3JlIGNoYW5nZScgJworCWNhdCA8PC1cRU9GID54ICYmCisJMQorCTIKKworCTMKKwk0CisJNQorCTYKKwk3CisJRU9GCisJZ2l0IHVwZGF0ZS1pbmRleCB4ICYmCisJY2F0IDw8LVxFT0YgPnggJiYKKworCTEKKwkyCisJMworCTQKKwk1CisKKwk2CisJNworCWNoYW5nZQorCUVPRgorCWdpdCBkaWZmIC0taW50ZXItaHVuay1jb250ZXh0PTEwMCAtLWlnbm9yZS1ibGFuay1saW5lcyA+b3V0LnRtcCAmJgorCWNhdCA8PC1cRU9GID5leHBlY3RlZCAmJgorCWRpZmYgLS1naXQgYS94IGIveAorCS0tLSBhL3gKKwkrKysgYi94CisJQEAgLTQsNSArNCw3IEBACisJIDMKKwkgNAorCSA1CisJKworCSA2CisJIDcKKwkrY2hhbmdlCisJRU9GCisJY29tcGFyZV9kaWZmX3BhdGNoIGV4cGVjdGVkIG91dC50bXAKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnaWdub3JlLWJsYW5rLWxpbmVzOiBiZXR3ZWVuIGNoYW5nZXMnICcKKwljYXQgPDwtXEVPRiA+eCAmJgorCTEKKwkyCisJMworCTQKKwk1CisKKworCTYKKwk3CisJOAorCTkKKwkxMAorCUVPRgorCWdpdCB1cGRhdGUtaW5kZXggeCAmJgorCWNhdCA8PC1cRU9GID54ICYmCisJY2hhbmdlCisJMQorCTIKKworCTMKKwk0CisJNQorCTYKKwk3CisJOAorCisJOQorCTEwCisJY2hhbmdlCisJRU9GCisJZ2l0IGRpZmYgLS1pZ25vcmUtYmxhbmstbGluZXMgPm91dC50bXAgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwlkaWZmIC0tZ2l0IGEveCBiL3gKKwktLS0gYS94CisJKysrIGIveAorCUBAIC0xLDUgKzEsNyBAQAorCStjaGFuZ2UKKwkgMQorCSAyCisJKworCSAzCisJIDQKKwkgNQorCUBAIC04LDUgKzgsNyBAQAorCSA2CisJIDcKKwkgOAorCSsKKwkgOQorCSAxMAorCStjaGFuZ2UKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgb3V0LnRtcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpZ25vcmUtYmxhbmstbGluZXM6IGJldHdlZW4gY2hhbmdlcyAod2l0aCBpbnRlcmh1bmtjdHgpJyAnCisJdGVzdF9zZXEgMTAgPnggJiYKKwlnaXQgdXBkYXRlLWluZGV4IHggJiYKKwljYXQgPDwtXEVPRiA+eCAmJgorCWNoYW5nZQorCTEKKwkyCisKKwkzCisJNAorCTUKKworCTYKKwk3CisJOAorCTkKKworCTEwCisJY2hhbmdlCisJRU9GCisJZ2l0IGRpZmYgLS1pbnRlci1odW5rLWNvbnRleHQ9MiAtLWlnbm9yZS1ibGFuay1saW5lcyA+b3V0LnRtcCAmJgorCWNhdCA8PC1cRU9GID5leHBlY3RlZCAmJgorCWRpZmYgLS1naXQgYS94IGIveAorCS0tLSBhL3gKKwkrKysgYi94CisJQEAgLTEsMTAgKzEsMTUgQEAKKwkrY2hhbmdlCisJIDEKKwkgMgorCSsKKwkgMworCSA0CisJIDUKKwkrCisJIDYKKwkgNworCSA4CisJIDkKKwkrCisJIDEwCisJK2NoYW5nZQorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBvdXQudG1wCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2lnbm9yZS1ibGFuay1saW5lczogc2NhdHRlcmVkIHNwYWNlcycgJworCXRlc3Rfc2VxIDEwID54ICYmCisJZ2l0IHVwZGF0ZS1pbmRleCB4ICYmCisJY2F0IDw8LVxFT0YgPnggJiYKKwljaGFuZ2UKKwkxCisJMgorCTMKKworCTQKKworCTUKKworCTYKKworCisJNworCisJOAorCTkKKwkxMAorCWNoYW5nZQorCUVPRgorCWdpdCBkaWZmIC0taW50ZXItaHVuay1jb250ZXh0PTQgLS1pZ25vcmUtYmxhbmstbGluZXMgPm91dC50bXAgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwlkaWZmIC0tZ2l0IGEveCBiL3gKKwktLS0gYS94CisJKysrIGIveAorCUBAIC0xLDMgKzEsNCBAQAorCStjaGFuZ2UKKwkgMQorCSAyCisJIDMKKwlAQCAtOCwzICsxNSw0IEBACisJIDgKKwkgOQorCSAxMAorCStjaGFuZ2UKKwlFT0YKKwljb21wYXJlX2RpZmZfcGF0Y2ggZXhwZWN0ZWQgb3V0LnRtcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpZ25vcmUtYmxhbmstbGluZXM6IHNwYWNlcyBjb2FsZXNjZScgJworCXRlc3Rfc2VxIDYgPnggJiYKKwlnaXQgdXBkYXRlLWluZGV4IHggJiYKKwljYXQgPDwtXEVPRiA+eCAmJgorCWNoYW5nZQorCTEKKwkyCisJMworCisJNAorCisJNQorCisJNgorCWNoYW5nZQorCUVPRgorCWdpdCBkaWZmIC0taW50ZXItaHVuay1jb250ZXh0PTQgLS1pZ25vcmUtYmxhbmstbGluZXMgPm91dC50bXAgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwlkaWZmIC0tZ2l0IGEveCBiL3gKKwktLS0gYS94CisJKysrIGIveAorCUBAIC0xLDYgKzEsMTEgQEAKKwkrY2hhbmdlCisJIDEKKwkgMgorCSAzCisJKworCSA0CisJKworCSA1CisJKworCSA2CisJK2NoYW5nZQorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBvdXQudG1wCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2lnbm9yZS1ibGFuay1saW5lczogbWl4IGNoYW5nZXMgYW5kIGJsYW5rIGxpbmVzJyAnCisJdGVzdF9zZXEgMTYgPnggJiYKKwlnaXQgdXBkYXRlLWluZGV4IHggJiYKKwljYXQgPDwtXEVPRiA+eCAmJgorCWNoYW5nZQorCTEKKwkyCisKKwkzCisJNAorCTUKKwljaGFuZ2UKKwk2CisJNworCTgKKworCTkKKwkxMAorCTExCisJY2hhbmdlCisJMTIKKwkxMworCTE0CisKKwkxNQorCTE2CisJY2hhbmdlCisJRU9GCisJZ2l0IGRpZmYgLS1pZ25vcmUtYmxhbmstbGluZXMgPm91dC50bXAgJiYKKwljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwlkaWZmIC0tZ2l0IGEveCBiL3gKKwktLS0gYS94CisJKysrIGIveAorCUBAIC0xLDggKzEsMTEgQEAKKwkrY2hhbmdlCisJIDEKKwkgMgorCSsKKwkgMworCSA0CisJIDUKKwkrY2hhbmdlCisJIDYKKwkgNworCSA4CisJQEAgLTksOCArMTMsMTEgQEAKKwkgOQorCSAxMAorCSAxMQorCStjaGFuZ2UKKwkgMTIKKwkgMTMKKwkgMTQKKwkrCisJIDE1CisJIDE2CisJK2NoYW5nZQorCUVPRgorCWNvbXBhcmVfZGlmZl9wYXRjaCBleHBlY3RlZCBvdXQudG1wCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIG1peGVkIHNwYWNlcyBhbmQgdGFicyBpbiBpbmRlbnQnICcKIAogCSMgVGhpcyBpcyBpbmRlbnRlZCB3aXRoIFNQIEhUIFNQLgpkaWZmIC0tZ2l0IGEvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2ggYi90L3Q0MDQxLWRpZmYtc3VibW9kdWxlLW9wdGlvbi5zaAppbmRleCAzMmQ0YTYwLi4xNzUxYzgzIDEwMDc1NQotLS0gYS90L3Q0MDQxLWRpZmYtc3VibW9kdWxlLW9wdGlvbi5zaAorKysgYi90L3Q0MDQxLWRpZmYtc3VibW9kdWxlLW9wdGlvbi5zaApAQCAtMSw2ICsxLDcgQEAKICMhL2Jpbi9zaAogIwogIyBDb3B5cmlnaHQgKGMpIDIwMDkgSmVucyBMZWhtYW5uLCBiYXNlZCBvbiB0NzQwMSBieSBQaW5nIFlpbgorIyBDb3B5cmlnaHQgKGMpIDIwMTEgQWxleGV5IFNodW1raW4gKCsgbm9uLVVURi04IGNvbW1pdCBlbmNvZGluZyB0ZXN0cykKICMKIAogdGVzdF9kZXNjcmlwdGlvbj0nU3VwcG9ydCBmb3IgdmVyYm9zZSBzdWJtb2R1bGUgZGlmZmVyZW5jZXMgaW4gZ2l0IGRpZmYKQEAgLTEwLDYgKzExLDkgQEAKIAogLiAuL3Rlc3QtbGliLnNoCiAKKyMgU3RyaW5nICJhZGRlZCIgaW4gR2VybWFuICh0cmFuc2xhdGVkIHdpdGggR29vZ2xlIFRyYW5zbGF0ZSksIGVuY29kZWQgaW4gVVRGLTgsCisjIHVzZWQgaW4gc2FtcGxlIGNvbW1pdCBsb2cgbWVzc2FnZXMgaW4gYWRkX2ZpbGUoKSBmdW5jdGlvbiBiZWxvdy4KK2FkZGVkPSQocHJpbnRmICJoaW56dWdlZlwzMDNcMjc0Z3QiKQogYWRkX2ZpbGUgKCkgewogCSgKIAkJY2QgIiQxIiAmJgpAQCAtMTksNyArMjMsOCBAQAogCQkJZWNobyAiJG5hbWUiID4iJG5hbWUiICYmCiAJCQlnaXQgYWRkICIkbmFtZSIgJiYKIAkJCXRlc3RfdGljayAmJgotCQkJZ2l0IGNvbW1pdCAtbSAiQWRkICRuYW1lIiB8fCBleGl0CisJCQltc2dfYWRkZWRfaXNvODg1OTE9JChlY2hvICJBZGQgJG5hbWUgKCRhZGRlZCAkbmFtZSkiIHwgaWNvbnYgLWYgdXRmLTggLXQgaXNvODg1OS0xKSAmJgorCQkJZ2l0IC1jICdpMThuLmNvbW1pdEVuY29kaW5nPWlzbzg4NTktMScgY29tbWl0IC1tICIkbXNnX2FkZGVkX2lzbzg4NTkxIgogCQlkb25lID4vZGV2L251bGwgJiYKIAkJZ2l0IHJldi1wYXJzZSAtLXNob3J0IC0tdmVyaWZ5IEhFQUQKIAkpCkBAIC05Myw3ICs5OCw3IEBACiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAJU3VibW9kdWxlIHNtMSAkaGVhZDEuLiRoZWFkMjoKLQkgID4gQWRkIGZvbzMKKwkgID4gQWRkIGZvbzMgKCRhZGRlZCBmb28zKQogCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMTAyLDcgKzEwNyw3IEBACiAJZ2l0IGRpZmYgLS1zdWJtb2R1bGU9bG9nID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogCVN1Ym1vZHVsZSBzbTEgJGhlYWQxLi4kaGVhZDI6Ci0JICA+IEFkZCBmb28zCisJICA+IEFkZCBmb28zICgkYWRkZWQgZm9vMykKIAlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKQEAgLTExMSw3ICsxMTYsNyBAQAogCWdpdCBkaWZmIC0tc3VibW9kdWxlID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogCVN1Ym1vZHVsZSBzbTEgJGhlYWQxLi4kaGVhZDI6Ci0JICA+IEFkZCBmb28zCisJICA+IEFkZCBmb28zICgkYWRkZWQgZm9vMykKIAlFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKQEAgLTE0Miw4ICsxNDcsOCBAQAogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogCVN1Ym1vZHVsZSBzbTEgJGhlYWQyLi4kaGVhZDMgKHJld2luZCk6Ci0JICA8IEFkZCBmb28zCi0JICA8IEFkZCBmb28yCisJICA8IEFkZCBmb28zICgkYWRkZWQgZm9vMykKKwkgIDwgQWRkIGZvbzIgKCRhZGRlZCBmb28yKQogCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMTUzLDEwICsxNTgsMTAgQEAKIAlnaXQgZGlmZi1pbmRleCAtcCAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKIAlTdWJtb2R1bGUgc20xICRoZWFkMi4uLiRoZWFkNDoKLQkgID4gQWRkIGZvbzUKLQkgID4gQWRkIGZvbzQKLQkgIDwgQWRkIGZvbzMKLQkgIDwgQWRkIGZvbzIKKwkgID4gQWRkIGZvbzUgKCRhZGRlZCBmb281KQorCSAgPiBBZGQgZm9vNCAoJGFkZGVkIGZvbzQpCisJICA8IEFkZCBmb28zICgkYWRkZWQgZm9vMykKKwkgIDwgQWRkIGZvbzIgKCRhZGRlZCBmb28yKQogCUVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpkaWZmIC0tZ2l0IGEvdC90NDE1MC1hbS5zaCBiL3QvdDQxNTAtYW0uc2gKaW5kZXggMTJmNmIwMi4uNWVkYjc5YSAxMDA3NTUKLS0tIGEvdC90NDE1MC1hbS5zaAorKysgYi90L3Q0MTUwLWFtLnNoCkBAIC0xNDcsNyArMTQ3LDcgQEAKIAlnaXQgY2hlY2tvdXQgZmlyc3QgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgYW0gPHBhdGNoMSAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgc2Vjb25kICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHNlY29uZCkiID0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEKSIgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2Ugc2Vjb25kXikiID0gIiQoZ2l0IHJldi1wYXJzZSBIRUFEXikiCkBAIC0xNTgsNyArMTU4LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGZpcnN0ICYmCiAJZ2l0IGFtIHBhdGNoMS5lbWwgJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIHNlY29uZCAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBzZWNvbmQpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHNlY29uZF4pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4pIgpAQCAtMTY5LDcgKzE2OSw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBmaXJzdCAmJgogCWdpdCBhbSBwYXRjaDEtY3JsZi5lbWwgJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIHNlY29uZCAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBzZWNvbmQpIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRCkiICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHNlY29uZF4pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF4pIgpAQCAtMTgwLDcgKzE4MCw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBmaXJzdCAmJgogCWdpdCBhbSBwYXRjaDEtd3MuZW1sICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSBzZWNvbmQgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2Ugc2Vjb25kKSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQUQpIiAmJgogCXRlc3QgIiQoZ2l0IHJldi1wYXJzZSBzZWNvbmReKSIgPSAiJChnaXQgcmV2LXBhcnNlIEhFQUReKSIKQEAgLTIwNiw3ICsyMDYsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgZmlyc3QgJiYKIAlnaXQgYW0gcGF0Y2gyICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgbWFzdGVyXl4pIiA9ICIkKGdpdCByZXYtcGFyc2UgSEVBRF5eKSIgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSBtYXN0ZXIuLkhFQUQgJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSBtYXN0ZXJeLi5IRUFEXiAmJgpAQCAtMjU4LDcgKzI1OCw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBIRUFEXiAmJgogCWdpdCBhbSAtLWtlZXAgcGF0Y2g0ICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgPmFjdHVhbCAmJgogCWdyZXAgIlJlOiBSZTogUmU6IFxbUEFUQ0ggMS81IHYyXF0gXFtmb29cXSB0aGlyZCIgYWN0dWFsCiAnCkBAIC0yNjgsNyArMjY4LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IEhFQUReICYmCiAJZ2l0IGFtIC0ta2VlcC1ub24tcGF0Y2ggcGF0Y2g0ICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgPmFjdHVhbCAmJgogCWdyZXAgIl5cW2Zvb1xdIHRoaXJkIiBhY3R1YWwKICcKQEAgLTI4Myw3ICsyODMsNyBAQAogCXRlc3RfdGljayAmJgogCWdpdCBjb21taXQgLW0gImNvcGllZCBzdHVmZiIgJiYKIAlnaXQgYW0gLTMgbG9yZW0tbW92ZS5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbG9yZW0KICcKIApAQCAtMjk3LDcgKzI5Nyw3IEBACiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSAiY29waWVkIHN0dWZmIiAmJgogCWdpdCBhbSAtMyAtcDAgbG9yZW0temVyby5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbG9yZW0KICcKIApAQCAtMzA3LDcgKzMwNyw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBsb3JlbV4wICYmCiAJZ2l0IGFtIHJlbmFtZS5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSByZW5hbWUKICcKQEAgLTMxOCw3ICszMTgsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgbG9yZW1eMCAmJgogCWdpdCBhbSAtMyByZW5hbWUucGF0Y2ggJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCB1cGRhdGUtaW5kZXggLS1yZWZyZXNoICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgcmVuYW1lCiAnCkBAIC0zMjksNyArMzI5LDcgQEAKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGxvcmVtXjAgJiYKIAlnaXQgYW0gLTMgcmVuYW1lLWFkZC5wYXRjaCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZiAtLWV4aXQtY29kZSByZW5hbWUKICcKQEAgLTM1OCwxMSArMzU4LDE3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbSAtLXNraXAgd29ya3MnICcKIAllY2hvIGdvb2RieWUgPmV4cGVjdGVkICYmCiAJZ2l0IGFtIC0tc2tpcCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseSAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5ICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgbG9yZW0yXl4gLS0gZmlsZSAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFub3RoZXIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnYW0gLS1hYm9ydCByZW1vdmVzIGEgc3RyYXkgZGlyZWN0b3J5JyAnCisJbWtkaXIgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwlnaXQgYW0gLS1hYm9ydCAmJgorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5CisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIC0tcmVzb2x2ZWQgd29ya3MnICcKIAllY2hvIGdvb2RieWUgPmV4cGVjdGVkICYmCiAJcm0gLWZyIC5naXQvcmViYXNlLWFwcGx5ICYmCkBAIC0zNzMsNyArMzc5LDcgQEAKIAllY2hvIHJlc29sdmVkID4+ZmlsZSAmJgogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBhbSAtLXJlc29sdmVkICYmCi0JISB0ZXN0IC1kIC5naXQvcmViYXNlLWFwcGx5ICYmCisJdGVzdF9wYXRoX2lzX21pc3NpbmcgLmdpdC9yZWJhc2UtYXBwbHkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhbm90aGVyCiAnCiAKQEAgLTM4Miw3ICszODgsNyBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgZmlyc3QgJiYKIAljYXQgcGluZSBwYXRjaDEgfCBnaXQgYW0gJiYKLQkhIHRlc3QgLWQgLmdpdC9yZWJhc2UtYXBwbHkgJiYKKwl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlYmFzZS1hcHBseSAmJgogCWdpdCBkaWZmIC0tZXhpdC1jb2RlIG1hc3Rlcl4uLkhFQUQKICcKIApAQCAtMzkxLDcgKzM5Nyw3IEBACiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBhbSA8ZmFpbG1haWwgJiYKIAlnaXQgYW0gLS1hYm9ydCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseQorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIGZhaWxzIG9uIGVtcHR5IHBhdGNoJyAnCkBAIC00MDAsNyArNDA2LDcgQEAKIAllY2hvICItLS0iID4+ZmFpbG1haWwgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYW0gPGZhaWxtYWlsICYmCiAJZ2l0IGFtIC0tc2tpcCAmJgotCSEgdGVzdCAtZCAuZ2l0L3JlYmFzZS1hcHBseQorCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvcmViYXNlLWFwcGx5CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FtIHdvcmtzIGZyb20gc3RkaW4gaW4gc3ViZGlyZWN0b3J5JyAnCmRpZmYgLS1naXQgYS90L3Q0MjAzLW1haWxtYXAuc2ggYi90L3Q0MjAzLW1haWxtYXAuc2gKaW5kZXggODQyYjc1NC4uYmFhNDY4NSAxMDA3NTUKLS0tIGEvdC90NDIwMy1tYWlsbWFwLnNoCisrKyBiL3QvdDQyMDMtbWFpbG1hcC5zaApAQCAtMTMsNiArMTMsMTEgQEAKIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJY2F0ID5jb250YWN0cyA8PC1cRU9GICYmCisJQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KKwluaWNrMSA8YnVnc0Bjb21wYW55Lnh4PgorCUVPRgorCiAJZWNobyBvbmUgPm9uZSAmJgogCWdpdCBhZGQgb25lICYmCiAJdGVzdF90aWNrICYmCkBAIC0yMyw2ICsyOCw0NCBAQAogCWdpdCBjb21taXQgLS1hdXRob3IgIm5pY2sxIDxidWdzQGNvbXBhbnkueHg+IiAtbSBzZWNvbmQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2stbWFpbG1hcCBubyBhcmd1bWVudHMnICcKKwl0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2stbWFpbG1hcAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjay1tYWlsbWFwIGFyZ3VtZW50cycgJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorCW5pY2sxIDxidWdzQGNvbXBhbnkueHg+CisJRU9GCisJZ2l0IGNoZWNrLW1haWxtYXAgXAorCQkiQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4iIFwKKwkJIm5pY2sxIDxidWdzQGNvbXBhbnkueHg+IiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjay1tYWlsbWFwIC0tc3RkaW4nICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KKwluaWNrMSA8YnVnc0Bjb21wYW55Lnh4PgorCUVPRgorCWdpdCBjaGVjay1tYWlsbWFwIC0tc3RkaW4gPGNvbnRhY3RzID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrLW1haWxtYXAgLS1zdGRpbiBhcmd1bWVudHMnICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJSW50ZXJuYWwgR3V5IDxidWdzQGNvbXBhbnkueHk+CisJRU9GCisJY2F0IDxjb250YWN0cyA+PmV4cGVjdCAmJgorCWdpdCBjaGVjay1tYWlsbWFwIC0tc3RkaW4gIkludGVybmFsIEd1eSA8YnVnc0Bjb21wYW55Lnh5PiIgXAorCQk8Y29udGFjdHMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY2hlY2stbWFpbG1hcCBib2d1cyBjb250YWN0JyAnCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZWNrLW1haWxtYXAgYm9ndXMKKycKKwogY2F0ID5leHBlY3QgPDxcRU9GCiBBIFUgVGhvciAoMSk6CiAgICAgICBpbml0aWFsCkBAIC0yNDcsNiArMjkwLDI0IEBACiAJcm0gLWYgLm1haWxtYXAKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2luZ2xlLWNoYXJhY3RlciBuYW1lJyAnCisJZWNobyAiICAgICAxCUEgPGF1dGhvckBleGFtcGxlLmNvbT4iID5leHBlY3QgJiYKKwllY2hvICIgICAgIDEJbmljazEgPGJ1Z3NAY29tcGFueS54eD4iID4+ZXhwZWN0ICYmCisJZWNobyAiQSA8YXV0aG9yQGV4YW1wbGUuY29tPiIgPi5tYWlsbWFwICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAubWFpbG1hcCIgJiYKKwlnaXQgc2hvcnRsb2cgLWVzIEhFQUQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJlc2VydmUgY2Fub25pY2FsIGVtYWlsIGNhc2UnICcKKwllY2hvICIgICAgIDEJQSBVIFRob3IgPEFVVEhPUkBleGFtcGxlLmNvbT4iID5leHBlY3QgJiYKKwllY2hvICIgICAgIDEJbmljazEgPGJ1Z3NAY29tcGFueS54eD4iID4+ZXhwZWN0ICYmCisJZWNobyAiPEFVVEhPUkBleGFtcGxlLmNvbT4gPGF1dGhvckBleGFtcGxlLmNvbT4iID4ubWFpbG1hcCAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLm1haWxtYXAiICYmCisJZ2l0IHNob3J0bG9nIC1lcyBIRUFEID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKICMgRXh0ZW5kZWQgbWFpbG1hcCBjb25maWd1cmF0aW9ucyBzaG91bGQgZ2l2ZSB1cyB0aGUgZm9sbG93aW5nIG91dHB1dCBmb3Igc2hvcnRsb2cKIGNhdCA+ZXhwZWN0IDw8XEVPRgogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4gKDEpOgpkaWZmIC0tZ2l0IGEvdC90NDIwNS1sb2ctcHJldHR5LWZvcm1hdHMuc2ggYi90L3Q0MjA1LWxvZy1wcmV0dHktZm9ybWF0cy5zaAppbmRleCAyNmZiZmRlLi5mYjAwMDQxIDEwMDc1NQotLS0gYS90L3Q0MjA1LWxvZy1wcmV0dHktZm9ybWF0cy5zaAorKysgYi90L3Q0MjA1LWxvZy1wcmV0dHktZm9ybWF0cy5zaApAQCAtMSwyMCArMSwzOCBAQAogIyEvYmluL3NoCiAjCiAjIENvcHlyaWdodCAoYykgMjAxMCwgV2lsbCBQYWxtZXIKKyMgQ29weXJpZ2h0IChjKSAyMDExLCBBbGV4ZXkgU2h1bWtpbiAoKyBub24tVVRGLTggY29tbWl0IGVuY29kaW5nIHRlc3RzKQogIwogCiB0ZXN0X2Rlc2NyaXB0aW9uPSdUZXN0IHByZXR0eSBmb3JtYXRzJwogLiAuL3Rlc3QtbGliLnNoCiAKK3NhbXBsZV91dGY4X3BhcnQ9JChwcmludGYgImZcMzAzXDI0NG5nIikKKworY29tbWl0X21zZyAoKSB7CisJIyBTdHJpbmcgImluaXRpYWwuIGluaXRpYWwiIHBhcnRseSBpbiBHZXJtYW4KKwkjICh0cmFuc2xhdGVkIHdpdGggR29vZ2xlIFRyYW5zbGF0ZSksCisJIyBlbmNvZGVkIGluIFVURi04LCB1c2VkIGFzIGEgY29tbWl0IGxvZyBtZXNzYWdlIGJlbG93LgorCW1zZz0iaW5pdGlhbC4gYW4ke3NhbXBsZV91dGY4X3BhcnR9bGljaFxuIgorCWlmIHRlc3QgLW4gIiQxIgorCXRoZW4KKwkJcHJpbnRmICIkbXNnIiB8IGljb252IC1mIHV0Zi04IC10ICIkMSIKKwllbHNlCisJCXByaW50ZiAiJG1zZyIKKwlmaQorfQorCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQgdXAgYmFzaWMgcmVwb3MnICcKIAk+Zm9vICYmCiAJPmJhciAmJgogCWdpdCBhZGQgZm9vICYmCiAJdGVzdF90aWNrICYmCi0JZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCisJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdEVuY29kaW5nIGlzbzg4NTktMSAmJgorCWdpdCBjb21taXQgLW0gIiQoY29tbWl0X21zZyBpc284ODU5LTEpIiAmJgogCWdpdCBhZGQgYmFyICYmCiAJdGVzdF90aWNrICYmCi0JZ2l0IGNvbW1pdCAtbSAiYWRkIGJhciIKKwlnaXQgY29tbWl0IC1tICJhZGQgYmFyIiAmJgorCWdpdCBjb25maWcgLS11bnNldCBpMThuLmNvbW1pdEVuY29kaW5nCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsaWFzIGJ1aWx0aW4gZm9ybWF0JyAnCkBAIC0zOCw2ICs1NiwyMCBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGlhcyB1c2VyLWRlZmluZWQgdGZvcm1hdCB3aXRoICVzIChpc284ODU5LTEgZW5jb2RpbmcpJyAnCisJZ2l0IGNvbmZpZyBpMThuLmxvZ091dHB1dEVuY29kaW5nIGlzbzg4NTktMSAmJgorCWdpdCBsb2cgLS1vbmVsaW5lID5leHBlY3RlZC1zICYmCisJZ2l0IGxvZyAtLXByZXR0eT0idGZvcm1hdDolaCAlcyIgPmFjdHVhbC1zICYmCisJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4ubG9nT3V0cHV0RW5jb2RpbmcgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZC1zIGFjdHVhbC1zCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FsaWFzIHVzZXItZGVmaW5lZCB0Zm9ybWF0IHdpdGggJXMgKHV0Zi04IGVuY29kaW5nKScgJworCWdpdCBsb2cgLS1vbmVsaW5lID5leHBlY3RlZC1zICYmCisJZ2l0IGxvZyAtLXByZXR0eT0idGZvcm1hdDolaCAlcyIgPmFjdHVhbC1zICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQtcyBhY3R1YWwtcworJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGlhcyB1c2VyLWRlZmluZWQgdGZvcm1hdCcgJwogCWdpdCBsb2cgLS1wcmV0dHk9InRmb3JtYXQ6JWgiID5leHBlY3RlZCAmJgogCWdpdCBjb25maWcgcHJldHR5LnRlc3QtYWxpYXMgInRmb3JtYXQ6JWgiICYmCkBAIC03MiwxMyArMTA0LDEzIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ05VTCBzZXBhcmF0aW9uJyAnCi0JcHJpbnRmICJhZGQgYmFyXDBpbml0aWFsIiA+ZXhwZWN0ZWQgJiYKKwlwcmludGYgImFkZCBiYXJcMCQoY29tbWl0X21zZykiID5leHBlY3RlZCAmJgogCWdpdCBsb2cgLXogLS1wcmV0dHk9ImZvcm1hdDolcyIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdOVUwgdGVybWluYXRpb24nICcKLQlwcmludGYgImFkZCBiYXJcMGluaXRpYWxcMCIgPmV4cGVjdGVkICYmCisJcHJpbnRmICJhZGQgYmFyXDAkKGNvbW1pdF9tc2cpXDAiID5leHBlY3RlZCAmJgogCWdpdCBsb2cgLXogLS1wcmV0dHk9InRmb3JtYXQ6JXMiID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKQEAgLTg2LDcgKzExOCw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdOVUwgc2VwYXJhdGlvbiB3aXRoIC0tc3RhdCcgJwogCXN0YXQwX3BhcnQ9JChnaXQgZGlmZiAtLXN0YXQgSEVBRF4gSEVBRCkgJiYKIAlzdGF0MV9wYXJ0PSQoZ2l0IGRpZmYtdHJlZSAtLW5vLWNvbW1pdC1pZCAtLXN0YXQgLS1yb290IEhFQUReKSAmJgotCXByaW50ZiAiYWRkIGJhclxuJHN0YXQwX3BhcnRcblwwaW5pdGlhbFxuJHN0YXQxX3BhcnRcbiIgPmV4cGVjdGVkICYmCisJcHJpbnRmICJhZGQgYmFyXG4kc3RhdDBfcGFydFxuXDAkKGNvbW1pdF9tc2cpXG4kc3RhdDFfcGFydFxuIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgbG9nIC16IC0tc3RhdCAtLXByZXR0eT0iZm9ybWF0OiVzIiA+YWN0dWFsICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtOTQsMjUgKzEyNiwyOSBAQAogdGVzdF9leHBlY3RfZmFpbHVyZSAnTlVMIHRlcm1pbmF0aW9uIHdpdGggLS1zdGF0JyAnCiAJc3RhdDBfcGFydD0kKGdpdCBkaWZmIC0tc3RhdCBIRUFEXiBIRUFEKSAmJgogCXN0YXQxX3BhcnQ9JChnaXQgZGlmZi10cmVlIC0tbm8tY29tbWl0LWlkIC0tc3RhdCAtLXJvb3QgSEVBRF4pICYmCi0JcHJpbnRmICJhZGQgYmFyXG4kc3RhdDBfcGFydFxuXDBpbml0aWFsXG4kc3RhdDFfcGFydFxuXDAiID5leHBlY3RlZCAmJgorCXByaW50ZiAiYWRkIGJhclxuJHN0YXQwX3BhcnRcblwwJChjb21taXRfbXNnKVxuJHN0YXQxX3BhcnRcbjAiID5leHBlY3RlZCAmJgogCWdpdCBsb2cgLXogLS1zdGF0IC0tcHJldHR5PSJ0Zm9ybWF0OiVzIiA+YWN0dWFsICYmCiAJdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCBtb3JlIGNvbW1pdHMnICcKIAl0ZXN0X2NvbW1pdCAibWVzc2FnZSBvbmUiIG9uZSBvbmUgbWVzc2FnZS1vbmUgJiYKLQl0ZXN0X2NvbW1pdCAibWVzc2FnZSB0d28iIHR3byB0d28gbWVzc2FnZS10d28KKwl0ZXN0X2NvbW1pdCAibWVzc2FnZSB0d28iIHR3byB0d28gbWVzc2FnZS10d28gJiYKKwloZWFkMT0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1zaG9ydCBIRUFEfjApICYmCisJaGVhZDI9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC0tc2hvcnQgSEVBRH4xKSAmJgorCWhlYWQzPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAtLXNob3J0IEhFQUR+MikgJiYKKwloZWFkND0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1zaG9ydCBIRUFEfjMpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xlZnQgYWxpZ25tZW50IGZvcm1hdHRpbmcnICcKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoNDApJXMiID5hY3R1YWwgJiYKIAkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAogCWVjaG8gPj5hY3R1YWwgJiYKLQlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PEVPRiA+ZXhwZWN0ZWQgJiYKIG1lc3NhZ2UgdHdvICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKIG1lc3NhZ2Ugb25lICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKIGFkZCBiYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKLWluaXRpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFoKKyQoY29tbWl0X21zZykgICAgICAgICAgICAgICAgICAgIFoKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMTIxLDExICsxNTcsMTEgQEAKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JWggJTx8KDQwKSVzIiA+YWN0dWFsICYmCiAJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKIAllY2hvID4+YWN0dWFsICYmCi0JcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKLWZhMzNhYjEgbWVzc2FnZSB0d28gICAgICAgICAgICAgICAgICAgIFoKLTdjZDZjNjMgbWVzc2FnZSBvbmUgICAgICAgICAgICAgICAgICAgIFoKLTE3MTFiZjkgYWRkIGJhciAgICAgICAgICAgICAgICAgICAgICAgIFoKLWFmMjBjMDYgaW5pdGlhbCAgICAgICAgICAgICAgICAgICAgICAgIFoKKwlxel90b190YWJfc3BhY2UgPDxFT0YgPmV4cGVjdGVkICYmCiskaGVhZDEgbWVzc2FnZSB0d28gICAgICAgICAgICAgICAgICAgIFoKKyRoZWFkMiBtZXNzYWdlIG9uZSAgICAgICAgICAgICAgICAgICAgWgorJGhlYWQzIGFkZCBiYXIgICAgICAgICAgICAgICAgICAgICAgICBaCiskaGVhZDQgJChjb21taXRfbXNnKSAgICAgICAgICAgIFoKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMTM0LDExICsxNzAsMTEgQEAKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JTwoMSklcyIgPmFjdHVhbCAmJgogCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCiAJZWNobyA+PmFjdHVhbCAmJgotCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCisJY2F0IDw8RU9GID5leHBlY3RlZCAmJgogbWVzc2FnZSB0d28KIG1lc3NhZ2Ugb25lCiBhZGQgYmFyCi1pbml0aWFsCiskKGNvbW1pdF9tc2cpCiBFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKQEAgLTE0NywxMSArMTgzLDExIEBACiAJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU8KDEwLHRydW5jKSVzIiA+YWN0dWFsICYmCiAJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKIAllY2hvID4+YWN0dWFsICYmCi0JcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKKwlxel90b190YWJfc3BhY2UgPDxFT0YgPmV4cGVjdGVkICYmCiBtZXNzYWdlIC4uCiBtZXNzYWdlIC4uCiBhZGQgYmFyICBaCi1pbml0aWFsICBaCitpbml0aWFsLi4uCiBFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKQEAgLTE2MCwxMSArMTk2LDExIEBACiAJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU8KDEwLGx0cnVuYyklcyIgPmFjdHVhbCAmJgogCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCiAJZWNobyA+PmFjdHVhbCAmJgotCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCisJcXpfdG9fdGFiX3NwYWNlIDw8RU9GID5leHBlY3RlZCAmJgogLi5zYWdlIHR3bwogLi5zYWdlIG9uZQogYWRkIGJhciAgWgotaW5pdGlhbCAgWgorLi4ke3NhbXBsZV91dGY4X3BhcnR9bGljaAogRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCkBAIC0xNzMsMTEgKzIwOSwxMSBAQAogCWdpdCBsb2cgLS1wcmV0dHk9ImZvcm1hdDolPCgxMCxtdHJ1bmMpJXMiID5hY3R1YWwgJiYKIAkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAogCWVjaG8gPj5hY3R1YWwgJiYKLQlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PEVPRiA+ZXhwZWN0ZWQgJiYKIG1lc3MuLiB0d28KIG1lc3MuLiBvbmUKIGFkZCBiYXIgIFoKLWluaXRpYWwgIFoKK2luaXQuLmxpY2gKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMTg2LDExICsyMjIsMTEgQEAKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT4oNDApJXMiID5hY3R1YWwgJiYKIAkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAogCWVjaG8gPj5hY3R1YWwgJiYKLQlxel90b190YWJfc3BhY2UgPDxcRU9GID5leHBlY3RlZCAmJgorCXF6X3RvX3RhYl9zcGFjZSA8PEVPRiA+ZXhwZWN0ZWQgJiYKIFogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSB0d28KIFogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSBvbmUKIFogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBiYXIKLVogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwKK1ogICAgICAgICAgICAgICAgICAgICQoY29tbWl0X21zZykKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMTk5LDExICsyMzUsMTEgQEAKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JWggJT58KDQwKSVzIiA+YWN0dWFsICYmCiAJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKIAllY2hvID4+YWN0dWFsICYmCi0JcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKLWZhMzNhYjEgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSB0d28KLTdjZDZjNjMgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSBvbmUKLTE3MTFiZjkgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZCBiYXIKLWFmMjBjMDYgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRpYWwKKwlxel90b190YWJfc3BhY2UgPDxFT0YgPmV4cGVjdGVkICYmCiskaGVhZDEgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSB0d28KKyRoZWFkMiAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlIG9uZQorJGhlYWQzICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgYmFyCiskaGVhZDQgICAgICAgICAgICAgICQoY29tbWl0X21zZykKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMjEyLDExICsyNDgsMTEgQEAKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT4oMSklcyIgPmFjdHVhbCAmJgogCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCiAJZWNobyA+PmFjdHVhbCAmJgotCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCisJY2F0IDw8RU9GID5leHBlY3RlZCAmJgogbWVzc2FnZSB0d28KIG1lc3NhZ2Ugb25lCiBhZGQgYmFyCi1pbml0aWFsCiskKGNvbW1pdF9tc2cpCiBFT0YKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKQEAgLTIyNSwxMSArMjYxLDExIEBACiAJZ2l0IGxvZyAtLXByZXR0eT0iZm9ybWF0OiU+PCg0MCklcyIgPmFjdHVhbCAmJgogCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCiAJZWNobyA+PmFjdHVhbCAmJgotCXF6X3RvX3RhYl9zcGFjZSA8PFxFT0YgPmV4cGVjdGVkICYmCisJcXpfdG9fdGFiX3NwYWNlIDw8RU9GID5leHBlY3RlZCAmJgogWiAgICAgICAgICAgICBtZXNzYWdlIHR3byAgICAgICAgICAgICAgWgogWiAgICAgICAgICAgICBtZXNzYWdlIG9uZSAgICAgICAgICAgICAgWgogWiAgICAgICAgICAgICAgIGFkZCBiYXIgICAgICAgICAgICAgICAgWgotWiAgICAgICAgICAgICAgIGluaXRpYWwgICAgICAgICAgICAgICAgWgorWiAgICAgICAgICQoY29tbWl0X21zZykgICAgICAgICAgWgogRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCkBAIC0yMzgsMTEgKzI3NCwxMSBAQAogCWdpdCBsb2cgLS1wcmV0dHk9ImZvcm1hdDolaCAlPjx8KDQwKSVzIiA+YWN0dWFsICYmCiAJIyBjb21wbGV0ZSB0aGUgaW5jb21wbGV0ZSBsaW5lIGF0IHRoZSBlbmQKIAllY2hvID4+YWN0dWFsICYmCi0JcXpfdG9fdGFiX3NwYWNlIDw8XEVPRiA+ZXhwZWN0ZWQgJiYKLWZhMzNhYjEgICAgICAgICAgIG1lc3NhZ2UgdHdvICAgICAgICAgIFoKLTdjZDZjNjMgICAgICAgICAgIG1lc3NhZ2Ugb25lICAgICAgICAgIFoKLTE3MTFiZjkgICAgICAgICAgICAgYWRkIGJhciAgICAgICAgICAgIFoKLWFmMjBjMDYgICAgICAgICAgICAgaW5pdGlhbCAgICAgICAgICAgIFoKKwlxel90b190YWJfc3BhY2UgPDxFT0YgPmV4cGVjdGVkICYmCiskaGVhZDEgICAgICAgICAgIG1lc3NhZ2UgdHdvICAgICAgICAgIFoKKyRoZWFkMiAgICAgICAgICAgbWVzc2FnZSBvbmUgICAgICAgICAgWgorJGhlYWQzICAgICAgICAgICAgIGFkZCBiYXIgICAgICAgICAgICBaCiskaGVhZDQgICAgICAgJChjb21taXRfbXNnKSAgICAgIFoKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpAQCAtMjUxLDExICsyODcsMTEgQEAKIAlnaXQgbG9nIC0tcHJldHR5PSJmb3JtYXQ6JT48KDEpJXMiID5hY3R1YWwgJiYKIAkjIGNvbXBsZXRlIHRoZSBpbmNvbXBsZXRlIGxpbmUgYXQgdGhlIGVuZAogCWVjaG8gPj5hY3R1YWwgJiYKLQljYXQgPDxcRU9GID5leHBlY3RlZCAmJgorCWNhdCA8PEVPRiA+ZXhwZWN0ZWQgJiYKIG1lc3NhZ2UgdHdvCiBtZXNzYWdlIG9uZQogYWRkIGJhcgotaW5pdGlhbAorJChjb21taXRfbXNnKQogRU9GCiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCkBAIC0yNjUsMTEgKzMwMSwxMSBAQAogCWdpdCBsb2cgLS1wcmV0dHk9ImZvcm1hdDolPCgxMCx0cnVuYyklcyU+PigxMCxsdHJ1bmMpJSBhbiIgPmFjdHVhbCAmJgogCSMgY29tcGxldGUgdGhlIGluY29tcGxldGUgbGluZSBhdCB0aGUgZW5kCiAJZWNobyA+PmFjdHVhbCAmJgotCWNhdCA8PFxFT0YgPmV4cGVjdGVkICYmCisJY2F0IDw8RU9GID5leHBlY3RlZCAmJgogc2hvcnQgbG9uZyAgbG9uZyBsb25nCiBtZXNzYWdlIC4uICAgQSBVIFRob3IKIGFkZCBiYXIgICAgICBBIFUgVGhvcgotaW5pdGlhbCAgICAgIEEgVSBUaG9yCitpbml0aWFsLi4uICAgQSBVIFRob3IKIEVPRgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwpkaWZmIC0tZ2l0IGEvdC90NDIxMS1saW5lLWxvZy5zaCBiL3QvdDQyMTEtbGluZS1sb2cuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzY2NWQ2NwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEtbGluZS1sb2cuc2gKQEAgLTAsMCArMSw4MCBAQAorIyEvYmluL3NoCisKK3Rlc3RfZGVzY3JpcHRpb249J3Rlc3QgbG9nIC1MJworLiAuL3Rlc3QtbGliLnNoCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIChpbXBvcnQgaGlzdG9yeSknICcKKwlnaXQgZmFzdC1pbXBvcnQgPCAiJFRFU1RfRElSRUNUT1JZIi90NDIxMS9oaXN0b3J5LmV4cG9ydCAmJgorCWdpdCByZXNldCAtLWhhcmQKKycKKworY2FubmVkX3Rlc3RfMSAoKSB7CisJdGVzdF9leHBlY3RfJDEgIiQyIiAiCisJCWdpdCBsb2cgJDIgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBcIlwkVEVTVF9ESVJFQ1RPUllcIi90NDIxMS9leHBlY3QuJDMgYWN0dWFsCisJIgorfQorCitjYW5uZWRfdGVzdCAoKSB7CisJY2FubmVkX3Rlc3RfMSBzdWNjZXNzICIkQCIKK30KK2Nhbm5lZF90ZXN0X2ZhaWx1cmUgKCkgeworCWNhbm5lZF90ZXN0XzEgZmFpbHVyZSAiJEAiCit9CisKK3Rlc3RfYmFkX29wdHMgKCkgeworCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImludmFsaWQgYXJnczogJDEiICIKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGxvZyAkMSAyPmVycm9ycyAmJgorCQlncmVwICckMicgZXJyb3JzCisJIgorfQorCitjYW5uZWRfdGVzdCAiLUwgNCwxMjphLmMgc2ltcGxlIiBzaW1wbGUtZgorY2FubmVkX3Rlc3QgIi1MIDQsKzk6YS5jIHNpbXBsZSIgc2ltcGxlLWYKK2Nhbm5lZF90ZXN0ICItTCAnL2xvbmcgZi8sL159LzphLmMnIHNpbXBsZSIgc2ltcGxlLWYKK2Nhbm5lZF90ZXN0ICItTCA6ZjphLmMgc2ltcGxlIiBzaW1wbGUtZi10by1tYWluCisKK2Nhbm5lZF90ZXN0ICItTCAnL21haW4vLC9efS86YS5jJyBzaW1wbGUiIHNpbXBsZS1tYWluCitjYW5uZWRfdGVzdCAiLUwgOm1haW46YS5jIHNpbXBsZSIgc2ltcGxlLW1haW4tdG8tZW5kCisKK2Nhbm5lZF90ZXN0ICItTCAxLCs0OmEuYyBzaW1wbGUiIGJlZ2lubmluZy1vZi1maWxlCisKK2Nhbm5lZF90ZXN0ICItTCAyMDphLmMgc2ltcGxlIiBlbmQtb2YtZmlsZQorCitjYW5uZWRfdGVzdCAiLUwgJy9sb25nIGYvJywvXn0vOmEuYyAtTCAvbWFpbi8sL159LzphLmMgc2ltcGxlIiB0d28tcmFuZ2VzCitjYW5uZWRfdGVzdCAiLUwgMjQsKzE6YS5jIHNpbXBsZSIgdmFuaXNoZXMtZWFybHkKKworY2FubmVkX3Rlc3QgIi1NIC1MICcvbG9uZyBmLywvXn0vOmIuYycgbW92ZS1zdXBwb3J0IiBtb3ZlLXN1cHBvcnQtZgorY2FubmVkX3Rlc3QgIi1NIC1MICc6ZjpiLmMnIHBhcmFsbGVsLWNoYW5nZSIgcGFyYWxsZWwtY2hhbmdlLWYtdG8tbWFpbgorCitjYW5uZWRfdGVzdCAiLUwgNCwxMjphLmMgLUwgOm1haW46YS5jIHNpbXBsZSIgbXVsdGlwbGUKK2Nhbm5lZF90ZXN0ICItTCA0LDE4OmEuYyAtTCA6bWFpbjphLmMgc2ltcGxlIiBtdWx0aXBsZS1vdmVybGFwcGluZworY2FubmVkX3Rlc3QgIi1MIDptYWluOmEuYyAtTCA0LDE4OmEuYyBzaW1wbGUiIG11bHRpcGxlLW92ZXJsYXBwaW5nCitjYW5uZWRfdGVzdCAiLUwgNDphLmMgLUwgOCwxMjphLmMgc2ltcGxlIiBtdWx0aXBsZS1zdXBlcnNldAorY2FubmVkX3Rlc3QgIi1MIDgsMTI6YS5jIC1MIDQ6YS5jIHNpbXBsZSIgbXVsdGlwbGUtc3VwZXJzZXQKKwordGVzdF9iYWRfb3B0cyAiLUwiICJzd2l0Y2guKnJlcXVpcmVzIGEgdmFsdWUiCit0ZXN0X2JhZF9vcHRzICItTCBiLmMiICJhcmd1bWVudC4qbm90IG9mIHRoZSBmb3JtIgordGVzdF9iYWRfb3B0cyAiLUwgMToiICJhcmd1bWVudC4qbm90IG9mIHRoZSBmb3JtIgordGVzdF9iYWRfb3B0cyAiLUwgMTpub25leGlzdGVudCIgIlRoZXJlIGlzIG5vIHBhdGgiCit0ZXN0X2JhZF9vcHRzICItTCAxOnNpbXBsZSIgIlRoZXJlIGlzIG5vIHBhdGgiCit0ZXN0X2JhZF9vcHRzICItTCAnL2ZvbzpiLmMnIiAiYXJndW1lbnQuKm5vdCBvZiB0aGUgZm9ybSIKK3Rlc3RfYmFkX29wdHMgIi1MIDEwMDA6Yi5jIiAiaGFzIG9ubHkuKmxpbmVzIgordGVzdF9iYWRfb3B0cyAiLUwgMSwxMDAwOmIuYyIgImhhcyBvbmx5LipsaW5lcyIKK3Rlc3RfYmFkX29wdHMgIi1MIDpiLmMiICJhcmd1bWVudC4qbm90IG9mIHRoZSBmb3JtIgordGVzdF9iYWRfb3B0cyAiLUwgOmZvbzpiLmMiICJubyBtYXRjaCIKKworIyBUaGVyZSBpcyBhIHNlcGFyYXRlIGJ1ZyB3aGVuIGFuIGVtcHR5IC1MIHJhbmdlIGlzIHRoZSBmaXJzdCAtTCBlbmNvdW50ZXJlZCwKKyMgdGh1cyB0byBkZW1vbnN0cmF0ZSB0aGlzIHBhcnRpY3VsYXIgYnVnLCB0aGUgZW1wdHkgLUwgcmFuZ2UgbXVzdCBmb2xsb3cgYQorIyBub24tZW1wdHkgLUwgcmFuZ2UuCit0ZXN0X2V4cGVjdF9zdWNjZXNzICctTCB7ZW1wdHktcmFuZ2V9IChhbnkgLUwpJyAnCisJbj0kKGV4cHIgJCh3YyAtbCA8Yi5jKSArIDEpICYmCisJZ2l0IGxvZyAtTDEsMTpiLmMgLUwkbjpiLmMKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnLUwge2VtcHR5LXJhbmdlfSAoZmlyc3QgLUwpJyAnCisJbj0kKGV4cHIgJCh3YyAtbCA8Yi5jKSArIDEpICYmCisJZ2l0IGxvZyAtTCRuOmIuYworJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LmJlZ2lubmluZy1vZi1maWxlIGIvdC90NDIxMS9leHBlY3QuYmVnaW5uaW5nLW9mLWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFiNDA1NAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LmJlZ2lubmluZy1vZi1maWxlCkBAIC0wLDAgKzEsNDMgQEAKK2NvbW1pdCA0YTIzYWU1Yzk4ZDU5YTU4YzZkYTAzNjE1Njk1OWYyZGM5ZjQ3MmFkCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDc6NDAgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGF0IHZlcnkgYmVnaW5uaW5nCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMSwzICsxLDQgQEAKKysjaW5jbHVkZSA8dW5pc3RkLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCisgbG9uZyBmKGxvbmcgeCkKKworY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTEsMyArMSwzIEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgCistaW50IGYoaW50IHgpCisrbG9uZyBmKGxvbmcgeCkKKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMSwzIEBACisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrCisraW50IGYoaW50IHgpCmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5lbmQtb2YtZmlsZSBiL3QvdDQyMTEvZXhwZWN0LmVuZC1vZi1maWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMjViYjIKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5lbmQtb2YtZmlsZQpAQCAtMCwwICsxLDYyIEBACitjb21taXQgNDY1OTUzODg0NGRhYTI4NDliMWE5ZTdkNmZhZGI5NmZjZDI2ZmM4MworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjQzIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBiYWNrIHRvIGNvbXBsZXRlIGxpbmUKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0yMCwzICsyMCw1IEBACisgCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworLX0KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK30KKysKKysvKiBpbmNvbXBsZXRlIGxpbmVzIGFyZSBiYWQhICovCisKK2NvbW1pdCAxMDBiNjFhNmYyZjcyMGY4MTI2MjBhOWQxMGFmYjNhOTYwY2NiNzNjCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6MTAgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIHRvIGFuIGluY29tcGxldGUgbGluZSBhdCBlbmQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0yMCwzICsyMCwzIEBACisgCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworLX0KKyt9CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKworY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE5LDMgKzE5LDMgQEAKKy0JcHJpbnRmKCIlZFxuIiwgZigxNSkpOworKwlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzE4LDMgQEAKKysJcHJpbnRmKCIlZFxuIiwgZigxNSkpOworKwlyZXR1cm4gMDsKKyt9CmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5tb3ZlLXN1cHBvcnQtZiBiL3QvdDQyMTEvZXhwZWN0Lm1vdmUtc3VwcG9ydC1mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5MDVlMDEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5tb3ZlLXN1cHBvcnQtZgpAQCAtMCwwICsxLDgwIEBACitjb21taXQgNmNlM2M0ZmY2OTAxMzYwOTliYjE3ZTFhODc2NmI3NTc2NDcyNmVhNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ5OjUwIDIwMTMgKzAxMDAKKworICAgIGFub3RoZXIgc2ltcGxlIGNoYW5nZQorCitkaWZmIC0tZ2l0IGEvYi5jIGIvYi5jCistLS0gYS9iLmMKKysrKyBiL2IuYworQEAgLTQsOSArNCw5IEBACisgbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKy0JCXggPj49IDE7CisrCQl4IC89IDI7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorCitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw5ICszLDkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBmMDRmYjIwZjJjNzc4NTA5OTZjYmE3Mzk3MDlhY2M2ZmFlY2M1OGY3CitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NTUgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGYoKQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsOCArMyw5IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMyw4IEBACisraW50IGYoaW50IHgpCisreworKwlpbnQgcyA9IDA7CisrCXdoaWxlICh4KSB7CisrCQl4ID4+PSAxOworKwkJcysrOworKwl9CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3QubXVsdGlwbGUgYi90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmFkNWI1Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDIxMS9leHBlY3QubXVsdGlwbGUKQEAgLTAsMCArMSwxMDQgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDcgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorKworKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IDEwMGI2MWE2ZjJmNzIwZjgxMjYyMGE5ZDEwYWZiM2E5NjBjY2I3M2MKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODoxMCAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgdG8gYW4gaW5jb21wbGV0ZSBsaW5lIGF0IGVuZAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDUgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorCitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw5ICszLDkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CitAQCAtMTcsNSArMTcsNSBAQAorIGludCBtYWluICgpCisgeworLQlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisrCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworIH0KKworY29tbWl0IGYwNGZiMjBmMmM3Nzg1MDk5NmNiYTczOTcwOWFjYzZmYWVjYzU4ZjcKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo1NSAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgZigpCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw4ICszLDkgQEAKKyBpbnQgZihpbnQgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKysJcmV0dXJuIHM7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICszLDggQEAKKytpbnQgZihpbnQgeCkKKyt7CisrCWludCBzID0gMDsKKysJd2hpbGUgKHgpIHsKKysJCXggPj49IDE7CisrCQlzKys7CisrCX0KKyt9CmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZS1vdmVybGFwcGluZyBiL3QvdDQyMTEvZXhwZWN0Lm11bHRpcGxlLW92ZXJsYXBwaW5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MzBiNmUKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZS1vdmVybGFwcGluZwpAQCAtMCwwICsxLDE4NyBAQAorY29tbWl0IDQ2NTk1Mzg4NDRkYWEyODQ5YjFhOWU3ZDZmYWRiOTZmY2QyNmZjODMKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODo0MyAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgYmFjayB0byBjb21wbGV0ZSBsaW5lCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtNCwxOSArNCwyMSBAQAorIGxvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyt9CisrCisrLyogaW5jb21wbGV0ZSBsaW5lcyBhcmUgYmFkISAqLworCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtNCwxOSArNCwxOSBAQAorIGxvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCAzOWI2ZWIyZDViNzA2ZDMzMjIxODRhMTY5ZjY2NmYyNWVkM2ZiZDAwCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6NDEgMjAxMyArMDEwMAorCisgICAgdG91Y2ggY29tbWVudAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsMTkgKzMsMTkgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKy0gKiBBIGNvbW1lbnQuCisrICogVGhpcyBpcyBvbmx5IGFuIGV4YW1wbGUhCisgICovCisgCisgaW50IG1haW4gKCkKKyB7CisgCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworIH0KKworY29tbWl0IGE2ZWI4MjY0N2Q1ZDY3Zjg5M2RhNDQyZjhmOTM3NWZkODlhM2IxZTIKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NToxNiAyMDEzICswMTAwCisKKyAgICB0b3VjaCBib3RoIGZ1bmN0aW9ucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsMTkgKzMsMTkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBBIGNvbW1lbnQuCisgICovCisgCisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE4ICszLDE5IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIEEgY29tbWVudC4KKyAgKi8KKyAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsMTggQEAKKytpbnQgZihpbnQgeCkKKyt7CisrCWludCBzID0gMDsKKysJd2hpbGUgKHgpIHsKKysJCXggPj49IDE7CisrCQlzKys7CisrCX0KKyt9CisrCisrLyoKKysgKiBBIGNvbW1lbnQuCisrICovCisrCisraW50IG1haW4gKCkKKyt7CisrCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcmV0dXJuIDA7CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3QubXVsdGlwbGUtc3VwZXJzZXQgYi90L3Q0MjExL2V4cGVjdC5tdWx0aXBsZS1zdXBlcnNldApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTMwYjZlCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDIxMS9leHBlY3QubXVsdGlwbGUtc3VwZXJzZXQKQEAgLTAsMCArMSwxODcgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTQsMTkgKzQsMjEgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAgKi8KKyAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorKworKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IDEwMGI2MWE2ZjJmNzIwZjgxMjYyMGE5ZDEwYWZiM2E5NjBjY2I3M2MKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODoxMCAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgdG8gYW4gaW5jb21wbGV0ZSBsaW5lIGF0IGVuZAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTQsMTkgKzQsMTkgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAgKi8KKyAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorCitjb21taXQgMzliNmViMmQ1YjcwNmQzMzIyMTg0YTE2OWY2NjZmMjVlZDNmYmQwMAorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjQxIDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGNvbW1lbnQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE5ICszLDE5IEBACisgbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorIAorIC8qCistICogQSBjb21tZW50LgorKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKyB9CisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE5ICszLDE5IEBACistaW50IGYoaW50IHgpCisrbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorIAorIC8qCisgICogQSBjb21tZW50LgorICAqLworIAorIGludCBtYWluICgpCisgeworLQlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisrCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisgCXJldHVybiAwOworIH0KKworY29tbWl0IGYwNGZiMjBmMmM3Nzg1MDk5NmNiYTczOTcwOWFjYzZmYWVjYzU4ZjcKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo1NSAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgZigpCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMywxOCArMywxOSBAQAorIGludCBmKGludCB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorKwlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBBIGNvbW1lbnQuCisgICovCisgCisgaW50IG1haW4gKCkKKyB7CisgCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICszLDE4IEBACisraW50IGYoaW50IHgpCisreworKwlpbnQgcyA9IDA7CisrCXdoaWxlICh4KSB7CisrCQl4ID4+PSAxOworKwkJcysrOworKwl9CisrfQorKworKy8qCisrICogQSBjb21tZW50LgorKyAqLworKworK2ludCBtYWluICgpCisreworKwlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisrCXJldHVybiAwOworK30KZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LnBhcmFsbGVsLWNoYW5nZS1mLXRvLW1haW4gYi90L3Q0MjExL2V4cGVjdC5wYXJhbGxlbC1jaGFuZ2UtZi10by1tYWluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MmRlZjgKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5wYXJhbGxlbC1jaGFuZ2UtZi10by1tYWluCkBAIC0wLDAgKzEsMTYwIEBACitjb21taXQgMDQ2OWM2MGJjNDgzN2Q1MmQ5N2IxZjA4MWRlYzVmOThkZWEyMGZlZAorTWVyZ2U6IGJhMjI3YzYgNmNlM2M0ZgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAaW5mLmV0aHouY2g+CitEYXRlOiAgIEZyaSBBcHIgMTIgMTY6MTY6MjQgMjAxMyArMDIwMAorCisgICAgTWVyZ2UgYWNyb3NzIHRoZSByZW5hbWUKKworCitjb21taXQgNmNlM2M0ZmY2OTAxMzYwOTliYjE3ZTFhODc2NmI3NTc2NDcyNmVhNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ5OjUwIDIwMTMgKzAxMDAKKworICAgIGFub3RoZXIgc2ltcGxlIGNoYW5nZQorCitkaWZmIC0tZ2l0IGEvYi5jIGIvYi5jCistLS0gYS9iLmMKKysrKyBiL2IuYworQEAgLTQsMTQgKzQsMTQgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworLQkJeCA+Pj0gMTsKKysJCXggLz0gMjsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAgKi8KKyAKKworY29tbWl0IGJhMjI3YzY2MzIzNDk3MDBmYmI5NTdkZWMyYjUwZjVlMjM1OGJlM2YKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QGluZi5ldGh6LmNoPgorRGF0ZTogICBGcmkgQXByIDEyIDE2OjE1OjU3IDIwMTMgKzAyMDAKKworICAgIGNoYW5nZSBvbiBhbm90aGVyIGxpbmUgb2YgaGlzdG9yeSB3aGlsZSByZW5hbWUgaGFwcGVucworCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTQsMTQgKzQsMTQgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKy0gKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKysgKiBUaGlzIGlzIG9ubHkgYSBzaG9ydCBleGFtcGxlIQorICAqLworIAorCitjb21taXQgMzliNmViMmQ1YjcwNmQzMzIyMTg0YTE2OWY2NjZmMjVlZDNmYmQwMAorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjQxIDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGNvbW1lbnQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE0ICszLDE0IEBACisgbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorIAorIC8qCistICogQSBjb21tZW50LgorKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICAqLworIAorCitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMywxNCArMywxNCBAQAorLWludCBmKGludCB4KQorK2xvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIEEgY29tbWVudC4KKyAgKi8KKyAKKworY29tbWl0IGYwNGZiMjBmMmM3Nzg1MDk5NmNiYTczOTcwOWFjYzZmYWVjYzU4ZjcKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo1NSAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgZigpCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMywxMyArMywxNCBAQAorIGludCBmKGludCB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorKwlyZXR1cm4gczsKKyB9CisgCisgLyoKKyAgKiBBIGNvbW1lbnQuCisgICovCisgCisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsMTMgQEAKKytpbnQgZihpbnQgeCkKKyt7CisrCWludCBzID0gMDsKKysJd2hpbGUgKHgpIHsKKysJCXggPj49IDE7CisrCQlzKys7CisrCX0KKyt9CisrCisrLyoKKysgKiBBIGNvbW1lbnQuCisrICovCisrCmRpZmYgLS1naXQgYS90L3Q0MjExL2V4cGVjdC5zaW1wbGUtZiBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZjViYzQKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5zaW1wbGUtZgpAQCAtMCwwICsxLDU5IEBACitjb21taXQgYTZlYjgyNjQ3ZDVkNjdmODkzZGE0NDJmOGY5Mzc1ZmQ4OWEzYjFlMgorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ1OjE2IDIwMTMgKzAxMDAKKworICAgIHRvdWNoIGJvdGggZnVuY3Rpb25zCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMyw5ICszLDkgQEAKKy1pbnQgZihpbnQgeCkKKytsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBmMDRmYjIwZjJjNzc4NTA5OTZjYmE3Mzk3MDlhY2M2ZmFlY2M1OGY3CitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NTUgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGYoKQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsOCArMyw5IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMyw4IEBACisraW50IGYoaW50IHgpCisreworKwlpbnQgcyA9IDA7CisrCXdoaWxlICh4KSB7CisrCQl4ID4+PSAxOworKwkJcysrOworKwl9CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3Quc2ltcGxlLWYtdG8tbWFpbiBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1mLXRvLW1haW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ3NTc2OAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1mLXRvLW1haW4KQEAgLTAsMCArMSwxMDAgQEAKK2NvbW1pdCAzOWI2ZWIyZDViNzA2ZDMzMjIxODRhMTY5ZjY2NmYyNWVkM2ZiZDAwCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6NDEgMjAxMyArMDEwMAorCisgICAgdG91Y2ggY29tbWVudAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTMsMTQgKzMsMTQgQEAKKyBsb25nIGYobG9uZyB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorIAlyZXR1cm4gczsKKyB9CisgCisgLyoKKy0gKiBBIGNvbW1lbnQuCisrICogVGhpcyBpcyBvbmx5IGFuIGV4YW1wbGUhCisgICovCisgCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDE0ICszLDE0IEBACistaW50IGYoaW50IHgpCisrbG9uZyBmKGxvbmcgeCkKKyB7CisgCWludCBzID0gMDsKKyAJd2hpbGUgKHgpIHsKKyAJCXggPj49IDE7CisgCQlzKys7CisgCX0KKyAJcmV0dXJuIHM7CisgfQorIAorIC8qCisgICogQSBjb21tZW50LgorICAqLworIAorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDEzICszLDE0IEBACisgaW50IGYoaW50IHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisrCXJldHVybiBzOworIH0KKyAKKyAvKgorICAqIEEgY29tbWVudC4KKyAgKi8KKyAKKworY29tbWl0IGRlNGM0OGFlODE0NzkyYzAyYTQ5YzRjM2MwYzc1N2FlNjljNTVmNmEKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0NDo0OCAyMDEzICswMTAwCisKKyAgICBpbml0aWFsCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSAvZGV2L251bGwKKysrKyBiL2EuYworQEAgLTAsMCArMywxMyBAQAorK2ludCBmKGludCB4KQorK3sKKysJaW50IHMgPSAwOworKwl3aGlsZSAoeCkgeworKwkJeCA+Pj0gMTsKKysJCXMrKzsKKysJfQorK30KKysKKysvKgorKyAqIEEgY29tbWVudC4KKysgKi8KKysKZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1tYWluIGIvdC90NDIxMS9leHBlY3Quc2ltcGxlLW1haW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzljZTM5YgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnNpbXBsZS1tYWluCkBAIC0wLDAgKzEsNjggQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDUgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNSBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0xNyw1ICsxNyw1IEBACisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICsxNiw1IEBACisraW50IG1haW4gKCkKKyt7CisrCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcmV0dXJuIDA7CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3Quc2ltcGxlLW1haW4tdG8tZW5kIGIvdC90NDIxMS9leHBlY3Quc2ltcGxlLW1haW4tdG8tZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0ODBiZDkKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjExL2V4cGVjdC5zaW1wbGUtbWFpbi10by1lbmQKQEAgLTAsMCArMSw3MCBAQAorY29tbWl0IDQ2NTk1Mzg4NDRkYWEyODQ5YjFhOWU3ZDZmYWRiOTZmY2QyNmZjODMKK0F1dGhvcjogVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4KK0RhdGU6ICAgVGh1IEZlYiAyOCAxMDo0ODo0MyAyMDEzICswMTAwCisKKyAgICBjaGFuZ2UgYmFjayB0byBjb21wbGV0ZSBsaW5lCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNyBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKyt9CisrCisrLyogaW5jb21wbGV0ZSBsaW5lcyBhcmUgYmFkISAqLworCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNSBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0xNyw1ICsxNyw1IEBACisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICsxNiw1IEBACisraW50IG1haW4gKCkKKyt7CisrCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcmV0dXJuIDA7CisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9leHBlY3QudHdvLXJhbmdlcyBiL3QvdDQyMTEvZXhwZWN0LnR3by1yYW5nZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjEwOWFhMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnR3by1yYW5nZXMKQEAgLTAsMCArMSwxMDIgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTE4LDUgKzE4LDUgQEAKKyBpbnQgbWFpbiAoKQorIHsKKyAJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorCitjb21taXQgMTAwYjYxYTZmMmY3MjBmODEyNjIwYTlkMTBhZmIzYTk2MGNjYjczYworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ4OjEwIDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSB0byBhbiBpbmNvbXBsZXRlIGxpbmUgYXQgZW5kCisKK2RpZmYgLS1naXQgYS9hLmMgYi9hLmMKKy0tLSBhL2EuYworKysrIGIvYS5jCitAQCAtMTgsNSArMTgsNSBAQAorIGludCBtYWluICgpCisgeworIAlwcmludGYoIiVsZFxuIiwgZigxNSkpOworIAlyZXR1cm4gMDsKKy19CisrfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisKK2NvbW1pdCBhNmViODI2NDdkNWQ2N2Y4OTNkYTQ0MmY4ZjkzNzVmZDg5YTNiMWUyCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDU6MTYgMjAxMyArMDEwMAorCisgICAgdG91Y2ggYm90aCBmdW5jdGlvbnMKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDkgKzMsOSBAQAorLWludCBmKGludCB4KQorK2xvbmcgZihsb25nIHgpCisgeworIAlpbnQgcyA9IDA7CisgCXdoaWxlICh4KSB7CisgCQl4ID4+PSAxOworIAkJcysrOworIAl9CisgCXJldHVybiBzOworIH0KK0BAIC0xNyw1ICsxNyw1IEBACisgaW50IG1haW4gKCkKKyB7CistCXByaW50ZigiJWRcbiIsIGYoMTUpKTsKKysJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKyAJcmV0dXJuIDA7CisgfQorCitjb21taXQgZjA0ZmIyMGYyYzc3ODUwOTk2Y2JhNzM5NzA5YWNjNmZhZWNjNThmNworQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjU1IDIwMTMgKzAxMDAKKworICAgIGNoYW5nZSBmKCkKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0zLDggKzMsOSBAQAorIGludCBmKGludCB4KQorIHsKKyAJaW50IHMgPSAwOworIAl3aGlsZSAoeCkgeworIAkJeCA+Pj0gMTsKKyAJCXMrKzsKKyAJfQorKwlyZXR1cm4gczsKKyB9CisKK2NvbW1pdCBkZTRjNDhhZTgxNDc5MmMwMmE0OWM0YzNjMGM3NTdhZTY5YzU1ZjZhCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDQ6NDggMjAxMyArMDEwMAorCisgICAgaW5pdGlhbAorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gL2Rldi9udWxsCisrKysgYi9hLmMKK0BAIC0wLDAgKzMsOCBAQAorK2ludCBmKGludCB4KQorK3sKKysJaW50IHMgPSAwOworKwl3aGlsZSAoeCkgeworKwkJeCA+Pj0gMTsKKysJCXMrKzsKKysJfQorK30KZGlmZiAtLWdpdCBhL3QvdDQyMTEvZXhwZWN0LnZhbmlzaGVzLWVhcmx5IGIvdC90NDIxMS9leHBlY3QudmFuaXNoZXMtZWFybHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY3Y2QwNgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvZXhwZWN0LnZhbmlzaGVzLWVhcmx5CkBAIC0wLDAgKzEsMzkgQEAKK2NvbW1pdCA0NjU5NTM4ODQ0ZGFhMjg0OWIxYTllN2Q2ZmFkYjk2ZmNkMjZmYzgzCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6NDMgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIGJhY2sgdG8gY29tcGxldGUgbGluZQorCitkaWZmIC0tZ2l0IGEvYS5jIGIvYS5jCistLS0gYS9hLmMKKysrKyBiL2EuYworQEAgLTIyLDEgKzI0LDEgQEAKKy19CitcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKysvKiBpbmNvbXBsZXRlIGxpbmVzIGFyZSBiYWQhICovCisKK2NvbW1pdCAxMDBiNjFhNmYyZjcyMGY4MTI2MjBhOWQxMGFmYjNhOTYwY2NiNzNjCitBdXRob3I6IFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+CitEYXRlOiAgIFRodSBGZWIgMjggMTA6NDg6MTAgMjAxMyArMDEwMAorCisgICAgY2hhbmdlIHRvIGFuIGluY29tcGxldGUgbGluZSBhdCBlbmQKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIGEvYS5jCisrKysgYi9hLmMKK0BAIC0yMiwxICsyMiwxIEBACistfQorK30KK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorCitjb21taXQgZGU0YzQ4YWU4MTQ3OTJjMDJhNDljNGMzYzBjNzU3YWU2OWM1NWY2YQorQXV0aG9yOiBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPgorRGF0ZTogICBUaHUgRmViIDI4IDEwOjQ0OjQ4IDIwMTMgKzAxMDAKKworICAgIGluaXRpYWwKKworZGlmZiAtLWdpdCBhL2EuYyBiL2EuYworLS0tIC9kZXYvbnVsbAorKysrIGIvYS5jCitAQCAtMCwwICsyMCwxIEBACisrfQpkaWZmIC0tZ2l0IGEvdC90NDIxMS9oaXN0b3J5LmV4cG9ydCBiL3QvdDQyMTEvaGlzdG9yeS5leHBvcnQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlmNDFlMgotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQyMTEvaGlzdG9yeS5leHBvcnQKQEAgLTAsMCArMSw0MDYgQEAKK2Jsb2IKK21hcmsgOjEKK2RhdGEgMTU3CisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IGYoaW50IHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9Cit9CisKKy8qCisgKiBBIGNvbW1lbnQuCisgKi8KKworaW50IG1haW4gKCkKK3sKKwlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKK3Jlc2V0IHJlZnMvdGFncy9zaW1wbGUKK2NvbW1pdCByZWZzL3RhZ3Mvc2ltcGxlCittYXJrIDoyCithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDY4OCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ2ODggKzAxMDAKK2RhdGEgOAoraW5pdGlhbAorTSAxMDA2NDQgOjEgYS5jCisKK2Jsb2IKK21hcmsgOjMKK2RhdGEgMTY4CisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IGYoaW50IHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBBIGNvbW1lbnQuCisgKi8KKworaW50IG1haW4gKCkKK3sKKwlwcmludGYoIiVkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKK2NvbW1pdCByZWZzL3RhZ3Mvc2ltcGxlCittYXJrIDo0CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDY5NSArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ2OTUgKzAxMDAKK2RhdGEgMTEKK2NoYW5nZSBmKCkKK2Zyb20gOjIKK00gMTAwNjQ0IDozIGEuYworCitibG9iCittYXJrIDo1CitkYXRhIDE3MQorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2xvbmcgZihsb25nIHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBBIGNvbW1lbnQuCisgKi8KKworaW50IG1haW4gKCkKK3sKKwlwcmludGYoIiVsZFxuIiwgZigxNSkpOworCXJldHVybiAwOworfQorCitjb21taXQgcmVmcy90YWdzL3NpbXBsZQorbWFyayA6NgorYXV0aG9yIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ3MTYgKzAxMDAKK2NvbW1pdHRlciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0NzE2ICswMTAwCitkYXRhIDIxCit0b3VjaCBib3RoIGZ1bmN0aW9ucworZnJvbSA6NAorTSAxMDA2NDQgOjUgYS5jCisKK2Jsb2IKK21hcmsgOjcKK2RhdGEgMTg1CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbG9uZyBmKGxvbmcgeCkKK3sKKwlpbnQgcyA9IDA7CisJd2hpbGUgKHgpIHsKKwkJeCA+Pj0gMTsKKwkJcysrOworCX0KKwlyZXR1cm4gczsKK30KKworLyoKKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICovCisKK2ludCBtYWluICgpCit7CisJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKwlyZXR1cm4gMDsKK30KKworY29tbWl0IHJlZnMvdGFncy9zaW1wbGUKK21hcmsgOjgKK2F1dGhvciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0NzQxICswMTAwCitjb21taXR0ZXIgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDc0MSArMDEwMAorZGF0YSAxNAordG91Y2ggY29tbWVudAorZnJvbSA6NgorTSAxMDA2NDQgOjcgYS5jCisKK2Jsb2IKK21hcmsgOjkKK2RhdGEgMjA1CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbG9uZyBmKGxvbmcgeCkKK3sKKwlpbnQgcyA9IDA7CisJd2hpbGUgKHgpIHsKKwkJeCA+Pj0gMTsKKwkJcysrOworCX0KKwlyZXR1cm4gczsKK30KKworLyoKKyAqIFRoaXMgaXMgb25seSBhbiBleGFtcGxlIQorICovCisKK2ludCBtYWluICgpCit7CisJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKwlyZXR1cm4gMDsKK30KKworY29tbWl0IHJlZnMvdGFncy9zaW1wbGUKK21hcmsgOjEwCithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDg2MCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ4NjAgKzAxMDAKK2RhdGEgMjUKK2NoYW5nZSBhdCB2ZXJ5IGJlZ2lubmluZworZnJvbSA6OAorTSAxMDA2NDQgOjkgYS5jCisKK2Jsb2IKK21hcmsgOjExCitkYXRhIDIwNAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2xvbmcgZihsb25nIHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9Citjb21taXQgcmVmcy90YWdzL3NpbXBsZQorbWFyayA6MTIKK2F1dGhvciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0ODkwICswMTAwCitjb21taXR0ZXIgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDg5MCArMDEwMAorZGF0YSAzNgorY2hhbmdlIHRvIGFuIGluY29tcGxldGUgbGluZSBhdCBlbmQKK2Zyb20gOjEwCitNIDEwMDY0NCA6MTEgYS5jCisKK2Jsb2IKK21hcmsgOjEzCitkYXRhIDIzOAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKK2xvbmcgZihsb25nIHgpCit7CisJaW50IHMgPSAwOworCXdoaWxlICh4KSB7CisJCXggPj49IDE7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IHJlZnMvdGFncy9zaW1wbGUKK21hcmsgOjE0CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDkyMyArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ5MjMgKzAxMDAKK2RhdGEgMjkKK2NoYW5nZSBiYWNrIHRvIGNvbXBsZXRlIGxpbmUKK2Zyb20gOjEyCitNIDEwMDY0NCA6MTMgYS5jCisKK2NvbW1pdCByZWZzL3RhZ3MvbW92ZS1zdXBwb3J0CittYXJrIDoxNQorYXV0aG9yIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ5NjggKzAxMDAKK2NvbW1pdHRlciBUaG9tYXMgUmFzdCA8dHJhc3RAc3R1ZGVudC5ldGh6LmNoPiAxMzYyMDQ0OTY4ICswMTAwCitkYXRhIDEwCittb3ZlIGZpbGUKK2Zyb20gOjE0CitEIGEuYworTSAxMDA2NDQgOjEzIGIuYworCitibG9iCittYXJrIDoxNgorZGF0YSAyMzcKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitsb25nIGYobG9uZyB4KQoreworCWludCBzID0gMDsKKwl3aGlsZSAoeCkgeworCQl4IC89IDI7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IHJlZnMvdGFncy9tb3ZlLXN1cHBvcnQKK21hcmsgOjE3CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NDk5MCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDQ5OTAgKzAxMDAKK2RhdGEgMjIKK2Fub3RoZXIgc2ltcGxlIGNoYW5nZQorZnJvbSA6MTUKK00gMTAwNjQ0IDoxNiBiLmMKKworYmxvYgorbWFyayA6MTgKK2RhdGEgMjU0CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbG9uZyBmKGxvbmcgeCk7CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYW4gZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworbG9uZyBmKGxvbmcgeCkKK3sKKwlpbnQgcyA9IDA7CisJd2hpbGUgKHgpIHsKKwkJeCAvPSAyOworCQlzKys7CisJfQorCXJldHVybiBzOworfQorCitjb21taXQgcmVmcy9oZWFkcy9tYXN0ZXIKK21hcmsgOjE5CithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QHN0dWRlbnQuZXRoei5jaD4gMTM2MjA0NTAyNCArMDEwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBzdHVkZW50LmV0aHouY2g+IDEzNjIwNDUwMjQgKzAxMDAKK2RhdGEgMjEKK21vdmUgd2l0aGluIHRoZSBmaWxlCitmcm9tIDoxNworTSAxMDA2NDQgOjE4IGIuYworCitibG9iCittYXJrIDoyMAorZGF0YSAyNDMKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitsb25nIGYobG9uZyB4KQoreworCWludCBzID0gMDsKKwl3aGlsZSAoeCkgeworCQl4ID4+PSAxOworCQlzKys7CisJfQorCXJldHVybiBzOworfQorCisvKgorICogVGhpcyBpcyBvbmx5IGEgc2hvcnQgZXhhbXBsZSEKKyAqLworCitpbnQgbWFpbiAoKQoreworCXByaW50ZigiJWxkXG4iLCBmKDE1KSk7CisJcmV0dXJuIDA7Cit9CisKKy8qIGluY29tcGxldGUgbGluZXMgYXJlIGJhZCEgKi8KKworY29tbWl0IHJlZnMvaGVhZHMvcGFyYWxsZWwtY2hhbmdlCittYXJrIDoyMQorYXV0aG9yIFRob21hcyBSYXN0IDx0cmFzdEBpbmYuZXRoei5jaD4gMTM2NTc3NjE1NyArMDIwMAorY29tbWl0dGVyIFRob21hcyBSYXN0IDx0cmFzdEBpbmYuZXRoei5jaD4gMTM2NTc3NjE1NyArMDIwMAorZGF0YSA1NQorY2hhbmdlIG9uIGFub3RoZXIgbGluZSBvZiBoaXN0b3J5IHdoaWxlIHJlbmFtZSBoYXBwZW5zCitmcm9tIDoxNAorTSAxMDA2NDQgOjIwIGEuYworCitibG9iCittYXJrIDoyMgorZGF0YSAyNDIKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorCitsb25nIGYobG9uZyB4KQoreworCWludCBzID0gMDsKKwl3aGlsZSAoeCkgeworCQl4IC89IDI7CisJCXMrKzsKKwl9CisJcmV0dXJuIHM7Cit9CisKKy8qCisgKiBUaGlzIGlzIG9ubHkgYSBzaG9ydCBleGFtcGxlIQorICovCisKK2ludCBtYWluICgpCit7CisJcHJpbnRmKCIlbGRcbiIsIGYoMTUpKTsKKwlyZXR1cm4gMDsKK30KKworLyogaW5jb21wbGV0ZSBsaW5lcyBhcmUgYmFkISAqLworCitjb21taXQgcmVmcy9oZWFkcy9wYXJhbGxlbC1jaGFuZ2UKK21hcmsgOjIzCithdXRob3IgVGhvbWFzIFJhc3QgPHRyYXN0QGluZi5ldGh6LmNoPiAxMzY1Nzc2MTg0ICswMjAwCitjb21taXR0ZXIgVGhvbWFzIFJhc3QgPHRyYXN0QGluZi5ldGh6LmNoPiAxMzY1Nzc2MTkxICswMjAwCitkYXRhIDI0CitNZXJnZSBhY3Jvc3MgdGhlIHJlbmFtZQorZnJvbSA6MjEKK21lcmdlIDoxNworRCBhLmMKK00gMTAwNjQ0IDoyMiBiLmMKKworcmVzZXQgcmVmcy9oZWFkcy9wYXJhbGxlbC1jaGFuZ2UKK2Zyb20gOjIzCisKZGlmZiAtLWdpdCBhL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2ggYi90L3Q1MzAzLXBhY2stY29ycnVwdGlvbi1yZXNpbGllbmNlLnNoCmluZGV4IDViMTI1MGYuLjM1OTI2ZGUgMTAwNzU1Ci0tLSBhL3QvdDUzMDMtcGFjay1jb3JydXB0aW9uLXJlc2lsaWVuY2Uuc2gKKysrIGIvdC90NTMwMy1wYWNrLWNvcnJ1cHRpb24tcmVzaWxpZW5jZS5zaApAQCAtNTEsNyArNTEsNyBAQAogICAgIG9mcz1gZ2l0IHNob3ctaW5kZXggPCAke3BhY2t9LmlkeCB8IGdyZXAgJDEgfCBjdXQgLWYxIC1kIiAiYCAmJgogICAgIG9mcz0kKCgkb2ZzICsgJDIpKSAmJgogICAgIGNobW9kICt3ICR7cGFja30ucGFjayAmJgotICAgIGRkIG9mPSR7cGFja30ucGFjayBjb3VudD0xIGJzPTEgY29udj1ub3RydW5jIHNlZWs9JG9mcyAmJgorICAgIGRkIG9mPSR7cGFja30ucGFjayBicz0xIGNvbnY9bm90cnVuYyBzZWVrPSRvZnMgJiYKICAgICB0ZXN0X211c3RfZmFpbCBnaXQgdmVyaWZ5LXBhY2sgJHtwYWNrfS5wYWNrCiB9CiAKQEAgLTI3Niw2ICsyNzYsMzMgQEAKICAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMyA+IC9kZXYvbnVsbCcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCisgICAgJ2NvcnJ1cHRpb24gb2YgZGVsdGEgYmFzZSByZWZlcmVuY2UgcG9pbnRpbmcgdG8gd3Jvbmcgb2JqZWN0JyBcCisgICAgJ2NyZWF0ZV9uZXdfcGFjayAtLWRlbHRhLWJhc2Utb2Zmc2V0ICYmCisgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKKyAgICAgcHJpbnRmICJcMjIwXDAzMyIgfCBkb19jb3JydXB0X29iamVjdCAkYmxvYl8zIDIgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMSA+L2Rldi9udWxsICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzIgPi9kZXYvbnVsbCAmJgorICAgICB0ZXN0X211c3RfZmFpbCBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4vZGV2L251bGwnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgXAorICAgICcuLi4gYnV0IGhhdmluZyBhIGxvb3NlIGNvcHkgYWxsb3dzIGZvciBmdWxsIHJlY292ZXJ5JyBcCisgICAgJ212ICR7cGFja30uaWR4IHRtcCAmJgorICAgICBnaXQgaGFzaC1vYmplY3QgLXQgYmxvYiAtdyBmaWxlXzMgJiYKKyAgICAgbXYgdG1wICR7cGFja30uaWR4ICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKKyAgICAnLi4uIGFuZCB0aGVuIGEgcmVwYWNrICJjbGVhcnMiIHRoZSBjb3JydXB0aW9uJyBcCisgICAgJ2RvX3JlcGFjayAtLWRlbHRhLWJhc2Utb2Zmc2V0IC0tbm8tcmV1c2UtZGVsdGEgJiYKKyAgICAgZ2l0IHBydW5lLXBhY2tlZCAmJgorICAgICBnaXQgdmVyaWZ5LXBhY2sgJHtwYWNrfS5wYWNrICYmCisgICAgIGdpdCBjYXQtZmlsZSBibG9iICRibG9iXzEgPiAvZGV2L251bGwgJiYKKyAgICAgZ2l0IGNhdC1maWxlIGJsb2IgJGJsb2JfMiA+IC9kZXYvbnVsbCAmJgorICAgICBnaXQgY2F0LWZpbGUgYmxvYiAkYmxvYl8zID4gL2Rldi9udWxsJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnY29ycnVwdGluZyBoZWFkZXIgdG8gaGF2ZSB0b28gc21hbGwgb3V0cHV0IGJ1ZmZlciBmYWlscyB1bnBhY2snIFwKICAgICAnY3JlYXRlX25ld19wYWNrICYmCiAgICAgIGdpdCBwcnVuZS1wYWNrZWQgJiYKZGlmZiAtLWdpdCBhL3QvdDU0MDctcG9zdC1yZXdyaXRlLWhvb2suc2ggYi90L3Q1NDA3LXBvc3QtcmV3cml0ZS1ob29rLnNoCmluZGV4IGJhYTY3MGMuLmVhMmUwZDQgMTAwNzU1Ci0tLSBhL3QvdDU0MDctcG9zdC1yZXdyaXRlLWhvb2suc2gKKysrIGIvdC90NTQwNy1wb3N0LXJld3JpdGUtaG9vay5zaApAQCAtMzEsOCArMzEsOCBAQAogfQogCiB2ZXJpZnlfaG9va19pbnB1dCAoKSB7Ci0JdGVzdF9jbXAgIiRUUkFTSF9ESVJFQ1RPUlkiL3Bvc3QtcmV3cml0ZS5hcmdzIGV4cGVjdGVkLmFyZ3MgJiYKLQl0ZXN0X2NtcCAiJFRSQVNIX0RJUkVDVE9SWSIvcG9zdC1yZXdyaXRlLmRhdGEgZXhwZWN0ZWQuZGF0YQorCXRlc3RfY21wIGV4cGVjdGVkLmFyZ3MgIiRUUkFTSF9ESVJFQ1RPUlkiL3Bvc3QtcmV3cml0ZS5hcmdzICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQuZGF0YSAiJFRSQVNIX0RJUkVDVE9SWSIvcG9zdC1yZXdyaXRlLmRhdGEKIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNvbW1pdCAtLWFtZW5kJyAnCmRpZmYgLS1naXQgYS90L3Q1NTA1LXJlbW90ZS5zaCBiL3QvdDU1MDUtcmVtb3RlLnNoCmluZGV4IGRkMTBmZjAuLjhmNmUzOTIgMTAwNzU1Ci0tLSBhL3QvdDU1MDUtcmVtb3RlLnNoCisrKyBiL3QvdDU1MDUtcmVtb3RlLnNoCkBAIC00MiwxMDcgKzQyLDEwNCBAQAogfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKLQogCXNldHVwX3JlcG9zaXRvcnkgb25lICYmCiAJc2V0dXBfcmVwb3NpdG9yeSB0d28gJiYKIAkoCi0JCWNkIHR3byAmJiBnaXQgYnJhbmNoIGFub3RoZXIKKwkJY2QgdHdvICYmCisJCWdpdCBicmFuY2ggYW5vdGhlcgogCSkgJiYKIAlnaXQgY2xvbmUgb25lIHRlc3QKLQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIENfTE9DQUxFX09VVFBVVCAncmVtb3RlIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luJyAnCi0oCi0JY2QgdGVzdCAmJgotCXRva2Vuc19tYXRjaCBvcmlnaW4gIiQoZ2l0IHJlbW90ZSkiICYmCi0JY2hlY2tfcmVtb3RlX3RyYWNrIG9yaWdpbiBtYXN0ZXIgc2lkZSAmJgotCWNoZWNrX3RyYWNraW5nX2JyYW5jaCBvcmlnaW4gSEVBRCBtYXN0ZXIgc2lkZQotKQorCSgKKwkJY2QgdGVzdCAmJgorCQl0b2tlbnNfbWF0Y2ggb3JpZ2luICIkKGdpdCByZW1vdGUpIiAmJgorCQljaGVja19yZW1vdGVfdHJhY2sgb3JpZ2luIG1hc3RlciBzaWRlICYmCisJCWNoZWNrX3RyYWNraW5nX2JyYW5jaCBvcmlnaW4gSEVBRCBtYXN0ZXIgc2lkZQorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIGFub3RoZXIgcmVtb3RlJyAnCi0oCi0JY2QgdGVzdCAmJgotCWdpdCByZW1vdGUgYWRkIC1mIHNlY29uZCAuLi90d28gJiYKLQl0b2tlbnNfbWF0Y2ggIm9yaWdpbiBzZWNvbmQiICIkKGdpdCByZW1vdGUpIiAmJgotCWNoZWNrX3RyYWNraW5nX2JyYW5jaCBzZWNvbmQgbWFzdGVyIHNpZGUgYW5vdGhlciAmJgotCWdpdCBmb3ItZWFjaC1yZWYgIi0tZm9ybWF0PSUocmVmbmFtZSkiIHJlZnMvcmVtb3RlcyB8Ci0Jc2VkIC1lICIvXnJlZnNcL3JlbW90ZXNcL29yaWdpblwvL2QiIFwKLQkgICAgLWUgIi9ecmVmc1wvcmVtb3Rlc1wvc2Vjb25kXC8vZCIgPmFjdHVhbCAmJgotCT5leHBlY3QgJiYKLQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCi0pCisJKAorCQljZCB0ZXN0ICYmCisJCWdpdCByZW1vdGUgYWRkIC1mIHNlY29uZCAuLi90d28gJiYKKwkJdG9rZW5zX21hdGNoICJvcmlnaW4gc2Vjb25kIiAiJChnaXQgcmVtb3RlKSIgJiYKKwkJY2hlY2tfdHJhY2tpbmdfYnJhbmNoIHNlY29uZCBtYXN0ZXIgc2lkZSBhbm90aGVyICYmCisJCWdpdCBmb3ItZWFjaC1yZWYgIi0tZm9ybWF0PSUocmVmbmFtZSkiIHJlZnMvcmVtb3RlcyB8CisJCXNlZCAtZSAiL15yZWZzXC9yZW1vdGVzXC9vcmlnaW5cLy9kIiBcCisJCSAgICAtZSAiL15yZWZzXC9yZW1vdGVzXC9zZWNvbmRcLy9kIiA+YWN0dWFsICYmCisJCT5leHBlY3QgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJ2NoZWNrIHJlbW90ZSB0cmFja2luZycgJwotKAotCWNkIHRlc3QgJiYKLQljaGVja19yZW1vdGVfdHJhY2sgb3JpZ2luIG1hc3RlciBzaWRlICYmCi0JY2hlY2tfcmVtb3RlX3RyYWNrIHNlY29uZCBtYXN0ZXIgc2lkZSBhbm90aGVyCi0pCit0ZXN0X2V4cGVjdF9zdWNjZXNzIENfTE9DQUxFX09VVFBVVCAnY2hlY2sgcmVtb3RlLXRyYWNraW5nJyAnCisJKAorCQljZCB0ZXN0ICYmCisJCWNoZWNrX3JlbW90ZV90cmFjayBvcmlnaW4gbWFzdGVyIHNpZGUgJiYKKwkJY2hlY2tfcmVtb3RlX3RyYWNrIHNlY29uZCBtYXN0ZXIgc2lkZSBhbm90aGVyCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgZm9yY2VzIHRyYWNraW5nIGJyYW5jaGVzJyAnCi0oCi0JY2QgdGVzdCAmJgotCWNhc2UgYGdpdCBjb25maWcgcmVtb3RlLnNlY29uZC5mZXRjaGAgaW4KLQkrKikgdHJ1ZSA7OwotCSAqKSBmYWxzZSA7OwotCWVzYWMKLSkKKwkoCisJCWNkIHRlc3QgJiYKKwkJY2FzZSBgZ2l0IGNvbmZpZyByZW1vdGUuc2Vjb25kLmZldGNoYCBpbgorCQkrKikgdHJ1ZSA7OworCQkgKikgZmFsc2UgOzsKKwkJZXNhYworCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVtb3ZlIHJlbW90ZScgJwotKAotCWNkIHRlc3QgJiYKLQlnaXQgc3ltYm9saWMtcmVmIHJlZnMvcmVtb3Rlcy9zZWNvbmQvSEVBRCByZWZzL3JlbW90ZXMvc2Vjb25kL21hc3RlciAmJgotCWdpdCByZW1vdGUgcm0gc2Vjb25kCi0pCisJKAorCQljZCB0ZXN0ICYmCisJCWdpdCBzeW1ib2xpYy1yZWYgcmVmcy9yZW1vdGVzL3NlY29uZC9IRUFEIHJlZnMvcmVtb3Rlcy9zZWNvbmQvbWFzdGVyICYmCisJCWdpdCByZW1vdGUgcm0gc2Vjb25kCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIENfTE9DQUxFX09VVFBVVCAncmVtb3ZlIHJlbW90ZScgJwotKAotCWNkIHRlc3QgJiYKLQl0b2tlbnNfbWF0Y2ggb3JpZ2luICIkKGdpdCByZW1vdGUpIiAmJgotCWNoZWNrX3JlbW90ZV90cmFjayBvcmlnaW4gbWFzdGVyIHNpZGUgJiYKLQlnaXQgZm9yLWVhY2gtcmVmICItLWZvcm1hdD0lKHJlZm5hbWUpIiByZWZzL3JlbW90ZXMgfAotCXNlZCAtZSAiL15yZWZzXC9yZW1vdGVzXC9vcmlnaW5cLy9kIiA+YWN0dWFsICYmCi0JPmV4cGVjdCAmJgotCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKLSkKKwkoCisJCWNkIHRlc3QgJiYKKwkJdG9rZW5zX21hdGNoIG9yaWdpbiAiJChnaXQgcmVtb3RlKSIgJiYKKwkJY2hlY2tfcmVtb3RlX3RyYWNrIG9yaWdpbiBtYXN0ZXIgc2lkZSAmJgorCQlnaXQgZm9yLWVhY2gtcmVmICItLWZvcm1hdD0lKHJlZm5hbWUpIiByZWZzL3JlbW90ZXMgfAorCQlzZWQgLWUgIi9ecmVmc1wvcmVtb3Rlc1wvb3JpZ2luXC8vZCIgPmFjdHVhbCAmJgorCQk+ZXhwZWN0ICYmCisJCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbW92ZSByZW1vdGUgcHJvdGVjdHMgbG9jYWwgYnJhbmNoZXMnICcKLSgKLQljZCB0ZXN0ICYmCi0JeyBjYXQgPmV4cGVjdDEgPDxFT0YKLU5vdGU6IEEgYnJhbmNoIG91dHNpZGUgdGhlIHJlZnMvcmVtb3Rlcy8gaGllcmFyY2h5IHdhcyBub3QgcmVtb3ZlZDsKLXRvIGRlbGV0ZSBpdCwgdXNlOgotICBnaXQgYnJhbmNoIC1kIG1hc3RlcgotRU9GCi0JfSAmJgotCXsgY2F0ID5leHBlY3QyIDw8RU9GCi1Ob3RlOiBTb21lIGJyYW5jaGVzIG91dHNpZGUgdGhlIHJlZnMvcmVtb3Rlcy8gaGllcmFyY2h5IHdlcmUgbm90IHJlbW92ZWQ7Ci10byBkZWxldGUgdGhlbSwgdXNlOgotICBnaXQgYnJhbmNoIC1kIGZvb2JyYW5jaAotICBnaXQgYnJhbmNoIC1kIG1hc3RlcgotRU9GCi0JfSAmJgotCWdpdCB0YWcgZm9vdGFnICYmCi0JZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub29wcy5mZXRjaCAiK3JlZnMvKjpyZWZzLyoiICYmCi0JZ2l0IHJlbW90ZSByZW1vdmUgb29wcyAyPmFjdHVhbDEgJiYKLQlnaXQgYnJhbmNoIGZvb2JyYW5jaCAmJgotCWdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9vcHMuZmV0Y2ggIityZWZzLyo6cmVmcy8qIiAmJgotCWdpdCByZW1vdGUgcm0gb29wcyAyPmFjdHVhbDIgJiYKLQlnaXQgYnJhbmNoIC1kIGZvb2JyYW5jaCAmJgotCWdpdCB0YWcgLWQgZm9vdGFnICYmCi0JdGVzdF9pMThuY21wIGV4cGVjdDEgYWN0dWFsMSAmJgotCXRlc3RfaTE4bmNtcCBleHBlY3QyIGFjdHVhbDIKLSkKKwkoCisJCWNkIHRlc3QgJiYKKwkJY2F0ID5leHBlY3QxIDw8LVxFT0YgJiYKKwkJTm90ZTogQSBicmFuY2ggb3V0c2lkZSB0aGUgcmVmcy9yZW1vdGVzLyBoaWVyYXJjaHkgd2FzIG5vdCByZW1vdmVkOworCQl0byBkZWxldGUgaXQsIHVzZToKKwkJICBnaXQgYnJhbmNoIC1kIG1hc3RlcgorCQlFT0YKKwkJY2F0ID5leHBlY3QyIDw8LVxFT0YgJiYKKwkJTm90ZTogU29tZSBicmFuY2hlcyBvdXRzaWRlIHRoZSByZWZzL3JlbW90ZXMvIGhpZXJhcmNoeSB3ZXJlIG5vdCByZW1vdmVkOworCQl0byBkZWxldGUgdGhlbSwgdXNlOgorCQkgIGdpdCBicmFuY2ggLWQgZm9vYnJhbmNoCisJCSAgZ2l0IGJyYW5jaCAtZCBtYXN0ZXIKKwkJRU9GCisJCWdpdCB0YWcgZm9vdGFnICYmCisJCWdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9vcHMuZmV0Y2ggIityZWZzLyo6cmVmcy8qIiAmJgorCQlnaXQgcmVtb3RlIHJlbW92ZSBvb3BzIDI+YWN0dWFsMSAmJgorCQlnaXQgYnJhbmNoIGZvb2JyYW5jaCAmJgorCQlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS5vb3BzLmZldGNoICIrcmVmcy8qOnJlZnMvKiIgJiYKKwkJZ2l0IHJlbW90ZSBybSBvb3BzIDI+YWN0dWFsMiAmJgorCQlnaXQgYnJhbmNoIC1kIGZvb2JyYW5jaCAmJgorCQlnaXQgdGFnIC1kIGZvb3RhZyAmJgorCQl0ZXN0X2kxOG5jbXAgZXhwZWN0MSBhY3R1YWwxICYmCisJCXRlc3RfaTE4bmNtcCBleHBlY3QyIGFjdHVhbDIKKwkpCiAnCiAKLWNhdCA+IHRlc3QvZXhwZWN0IDw8IEVPRgorY2F0ID50ZXN0L2V4cGVjdCA8PEVPRgogKiByZW1vdGUgb3JpZ2luCiAgIEZldGNoIFVSTDogJChwd2QpL29uZQogICBQdXNoICBVUkw6ICQocHdkKS9vbmUKQEAgLTE3MiwzNiArMTY5LDQwIEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdycgJwotCShjZCB0ZXN0ICYmCi0JIGdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5mZXRjaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtICYmCi0JIGdpdCBmZXRjaCAmJgotCSBnaXQgY2hlY2tvdXQgLWIgYWhlYWQgb3JpZ2luL21hc3RlciAmJgotCSBlY2hvIDEgPj4gZmlsZSAmJgotCSB0ZXN0X3RpY2sgJiYKLQkgZ2l0IGNvbW1pdCAtbSB1cGRhdGUgZmlsZSAmJgotCSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmCi0JIGdpdCBicmFuY2ggLS10cmFjayBvY3RvcHVzIG9yaWdpbi9tYXN0ZXIgJiYKLQkgZ2l0IGJyYW5jaCAtLXRyYWNrIHJlYmFzZSBvcmlnaW4vbWFzdGVyICYmCi0JIGdpdCBicmFuY2ggLWQgLXIgb3JpZ2luL21hc3RlciAmJgotCSBnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28udXJsIC4uL3R3byAmJgotCSBnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28ucHVzaHVybCAuLi90aHJlZSAmJgotCSBnaXQgY29uZmlnIGJyYW5jaC5yZWJhc2UucmViYXNlIHRydWUgJiYKLQkgZ2l0IGNvbmZpZyBicmFuY2gub2N0b3B1cy5tZXJnZSAidG9waWMtYSB0b3BpYy1iIHRvcGljLWMiICYmCi0JIChjZCAuLi9vbmUgJiYKLQkgIGVjaG8gMSA+IGZpbGUgJiYKLQkgIHRlc3RfdGljayAmJgotCSAgZ2l0IGNvbW1pdCAtbSB1cGRhdGUgZmlsZSkgJiYKLQkgZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLnB1c2ggOiAmJgotCSBnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS5vcmlnaW4ucHVzaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtICYmCi0JIGdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5wdXNoICtyZWZzL3RhZ3MvbGFzdGJhY2t1cCAmJgotCSBnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28ucHVzaCArcmVmcy9oZWFkcy9haGVhZDpyZWZzL2hlYWRzL21hc3RlciAmJgotCSBnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28ucHVzaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL2Fub3RoZXIgJiYKLQkgZ2l0IHJlbW90ZSBzaG93IG9yaWdpbiB0d28gPiBvdXRwdXQgJiYKLQkgZ2l0IGJyYW5jaCAtZCByZWJhc2Ugb2N0b3B1cyAmJgotCSB0ZXN0X2kxOG5jbXAgZXhwZWN0IG91dHB1dCkKKwkoCisJCWNkIHRlc3QgJiYKKwkJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLmZldGNoIHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvdXBzdHJlYW0gJiYKKwkJZ2l0IGZldGNoICYmCisJCWdpdCBjaGVja291dCAtYiBhaGVhZCBvcmlnaW4vbWFzdGVyICYmCisJCWVjaG8gMSA+PmZpbGUgJiYKKwkJdGVzdF90aWNrICYmCisJCWdpdCBjb21taXQgLW0gdXBkYXRlIGZpbGUgJiYKKwkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCQlnaXQgYnJhbmNoIC0tdHJhY2sgb2N0b3B1cyBvcmlnaW4vbWFzdGVyICYmCisJCWdpdCBicmFuY2ggLS10cmFjayByZWJhc2Ugb3JpZ2luL21hc3RlciAmJgorCQlnaXQgYnJhbmNoIC1kIC1yIG9yaWdpbi9tYXN0ZXIgJiYKKwkJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUudHdvLnVybCAuLi90d28gJiYKKwkJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUudHdvLnB1c2h1cmwgLi4vdGhyZWUgJiYKKwkJZ2l0IGNvbmZpZyBicmFuY2gucmViYXNlLnJlYmFzZSB0cnVlICYmCisJCWdpdCBjb25maWcgYnJhbmNoLm9jdG9wdXMubWVyZ2UgInRvcGljLWEgdG9waWMtYiB0b3BpYy1jIiAmJgorCQkoCisJCQljZCAuLi9vbmUgJiYKKwkJCWVjaG8gMSA+ZmlsZSAmJgorCQkJdGVzdF90aWNrICYmCisJCQlnaXQgY29tbWl0IC1tIHVwZGF0ZSBmaWxlCisJCSkgJiYKKwkJZ2l0IGNvbmZpZyAtLWFkZCByZW1vdGUub3JpZ2luLnB1c2ggOiAmJgorCQlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS5vcmlnaW4ucHVzaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtICYmCisJCWdpdCBjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi5wdXNoICtyZWZzL3RhZ3MvbGFzdGJhY2t1cCAmJgorCQlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28ucHVzaCArcmVmcy9oZWFkcy9haGVhZDpyZWZzL2hlYWRzL21hc3RlciAmJgorCQlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS50d28ucHVzaCByZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL2Fub3RoZXIgJiYKKwkJZ2l0IHJlbW90ZSBzaG93IG9yaWdpbiB0d28gPm91dHB1dCAmJgorCQlnaXQgYnJhbmNoIC1kIHJlYmFzZSBvY3RvcHVzICYmCisJCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CisJKQogJwogCi1jYXQgPiB0ZXN0L2V4cGVjdCA8PCBFT0YKK2NhdCA+dGVzdC9leHBlY3QgPDxFT0YKICogcmVtb3RlIG9yaWdpbgogICBGZXRjaCBVUkw6ICQocHdkKS9vbmUKICAgUHVzaCAgVVJMOiAkKHB3ZCkvb25lCkBAIC0yMTksMTUyICsyMjAsMTg3IEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvdyAtbicgJwotCShtdiBvbmUgb25lLnVucmVhY2hhYmxlICYmCi0JIGNkIHRlc3QgJiYKLQkgZ2l0IHJlbW90ZSBzaG93IC1uIG9yaWdpbiA+IG91dHB1dCAmJgotCSBtdiAuLi9vbmUudW5yZWFjaGFibGUgLi4vb25lICYmCi0JIHRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0KQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdwcnVuZScgJwotCShjZCBvbmUgJiYKLQkgZ2l0IGJyYW5jaCAtbSBzaWRlIHNpZGUyKSAmJgotCShjZCB0ZXN0ICYmCi0JIGdpdCBmZXRjaCBvcmlnaW4gJiYKLQkgZ2l0IHJlbW90ZSBwcnVuZSBvcmlnaW4gJiYKLQkgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUyICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlKQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQtaGVhZCAtLWRlbGV0ZScgJwotCShjZCB0ZXN0ICYmCi0JIGdpdCBzeW1ib2xpYy1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEICYmCi0JIGdpdCByZW1vdGUgc2V0LWhlYWQgLS1kZWxldGUgb3JpZ2luICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCBzeW1ib2xpYy1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEKQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQtaGVhZCAtLWF1dG8nICcKLQkoY2QgdGVzdCAmJgotCSBnaXQgcmVtb3RlIHNldC1oZWFkIC0tYXV0byBvcmlnaW4gJiYKLQkgZWNobyByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciA+ZXhwZWN0ICYmCi0JIGdpdCBzeW1ib2xpYy1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEID5vdXRwdXQgJiYKLQkgdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCW12IG9uZSBvbmUudW5yZWFjaGFibGUgJiYKKwkoCisJCWNkIHRlc3QgJiYKKwkJZ2l0IHJlbW90ZSBzaG93IC1uIG9yaWdpbiA+b3V0cHV0ICYmCisJCW12IC4uL29uZS51bnJlYWNoYWJsZSAuLi9vbmUgJiYKKwkJdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQKIAkpCiAnCiAKLWNhdCA+dGVzdC9leHBlY3QgPDxFT0YKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BydW5lJyAnCisJKAorCQljZCBvbmUgJiYKKwkJZ2l0IGJyYW5jaCAtbSBzaWRlIHNpZGUyCisJKSAmJgorCSgKKwkJY2QgdGVzdCAmJgorCQlnaXQgZmV0Y2ggb3JpZ2luICYmCisJCWdpdCByZW1vdGUgcHJ1bmUgb3JpZ2luICYmCisJCWdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlMiAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9vcmlnaW4vc2lkZQorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0LWhlYWQgLS1kZWxldGUnICcKKwkoCisJCWNkIHRlc3QgJiYKKwkJZ2l0IHN5bWJvbGljLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtaGVhZCAtLWRlbGV0ZSBvcmlnaW4gJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN5bWJvbGljLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldC1oZWFkIC0tYXV0bycgJworCSgKKwkJY2QgdGVzdCAmJgorCQlnaXQgcmVtb3RlIHNldC1oZWFkIC0tYXV0byBvcmlnaW4gJiYKKwkJZWNobyByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciA+ZXhwZWN0ICYmCisJCWdpdCBzeW1ib2xpYy1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9IRUFEID5vdXRwdXQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCSkKKycKKworY2F0ID50ZXN0L2V4cGVjdCA8PFxFT0YKIGVycm9yOiBNdWx0aXBsZSByZW1vdGUgSEVBRCBicmFuY2hlcy4gUGxlYXNlIGNob29zZSBvbmUgZXhwbGljaXRseSB3aXRoOgogICBnaXQgcmVtb3RlIHNldC1oZWFkIHR3byBhbm90aGVyCiAgIGdpdCByZW1vdGUgc2V0LWhlYWQgdHdvIG1hc3RlcgogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldC1oZWFkIC0tYXV0byBmYWlscyB3L211bHRpcGxlIEhFQURzJyAnCi0JKGNkIHRlc3QgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlbW90ZSBzZXQtaGVhZCAtLWF1dG8gdHdvID5vdXRwdXQgMj4mMSAmJgotCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0KQorCSgKKwkJY2QgdGVzdCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmVtb3RlIHNldC1oZWFkIC0tYXV0byB0d28gPm91dHB1dCAyPiYxICYmCisJCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CisJKQogJwogCi1jYXQgPnRlc3QvZXhwZWN0IDw8RU9GCitjYXQgPnRlc3QvZXhwZWN0IDw8XEVPRgogcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlMgogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldC1oZWFkIGV4cGxpY2l0JyAnCi0JKGNkIHRlc3QgJiYKLQkgZ2l0IHJlbW90ZSBzZXQtaGVhZCBvcmlnaW4gc2lkZTIgJiYKLQkgZ2l0IHN5bWJvbGljLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgPm91dHB1dCAmJgotCSBnaXQgcmVtb3RlIHNldC1oZWFkIG9yaWdpbiBtYXN0ZXIgJiYKLQkgdGVzdF9jbXAgZXhwZWN0IG91dHB1dCkKKwkoCisJCWNkIHRlc3QgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtaGVhZCBvcmlnaW4gc2lkZTIgJiYKKwkJZ2l0IHN5bWJvbGljLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL0hFQUQgPm91dHB1dCAmJgorCQlnaXQgcmVtb3RlIHNldC1oZWFkIG9yaWdpbiBtYXN0ZXIgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCSkKICcKIAotY2F0ID4gdGVzdC9leHBlY3QgPDwgRU9GCitjYXQgPnRlc3QvZXhwZWN0IDw8RU9GCiBQcnVuaW5nIG9yaWdpbgogVVJMOiAkKHB3ZCkvb25lCiAgKiBbd291bGQgcHJ1bmVdIG9yaWdpbi9zaWRlMgogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BydW5lIC0tZHJ5LXJ1bicgJwotCShjZCBvbmUgJiYKLQkgZ2l0IGJyYW5jaCAtbSBzaWRlMiBzaWRlKSAmJgotCShjZCB0ZXN0ICYmCi0JIGdpdCByZW1vdGUgcHJ1bmUgLS1kcnktcnVuIG9yaWdpbiA+IG91dHB1dCAmJgotCSBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9vcmlnaW4vc2lkZTIgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUgJiYKLQkoY2QgLi4vb25lICYmCi0JIGdpdCBicmFuY2ggLW0gc2lkZSBzaWRlMikgJiYKLQkgdGVzdF9pMThuY21wIGV4cGVjdCBvdXRwdXQpCisJKAorCQljZCBvbmUgJiYKKwkJZ2l0IGJyYW5jaCAtbSBzaWRlMiBzaWRlKSAmJgorCSgKKwkJY2QgdGVzdCAmJgorCQlnaXQgcmVtb3RlIHBydW5lIC0tZHJ5LXJ1biBvcmlnaW4gPm91dHB1dCAmJgorCQlnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9vcmlnaW4vc2lkZTIgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUgJiYKKwkoCisJCWNkIC4uL29uZSAmJgorCQlnaXQgYnJhbmNoIC1tIHNpZGUgc2lkZTIpICYmCisJCXRlc3RfaTE4bmNtcCBleHBlY3Qgb3V0cHV0CisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgLS1taXJyb3IgJiYgcHJ1bmUnICcKLQkobWtkaXIgbWlycm9yICYmCi0JIGNkIG1pcnJvciAmJgotCSBnaXQgaW5pdCAtLWJhcmUgJiYKLQkgZ2l0IHJlbW90ZSBhZGQgLS1taXJyb3IgLWYgb3JpZ2luIC4uL29uZSkgJiYKLQkoY2Qgb25lICYmCi0JIGdpdCBicmFuY2ggLW0gc2lkZTIgc2lkZSkgJiYKLQkoY2QgbWlycm9yICYmCi0JIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9zaWRlMiAmJgotCSB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvc2lkZSAmJgotCSBnaXQgZmV0Y2ggb3JpZ2luICYmCi0JIGdpdCByZW1vdGUgcHJ1bmUgb3JpZ2luICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9zaWRlMiAmJgotCSBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvc2lkZSkKKwlta2RpciBtaXJyb3IgJiYKKwkoCisJCWNkIG1pcnJvciAmJgorCQlnaXQgaW5pdCAtLWJhcmUgJiYKKwkJZ2l0IHJlbW90ZSBhZGQgLS1taXJyb3IgLWYgb3JpZ2luIC4uL29uZQorCSkgJiYKKwkoCisJCWNkIG9uZSAmJgorCQlnaXQgYnJhbmNoIC1tIHNpZGUyIHNpZGUKKwkpICYmCisJKAorCQljZCBtaXJyb3IgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL3NpZGUyICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9zaWRlICYmCisJCWdpdCBmZXRjaCBvcmlnaW4gJiYKKwkJZ2l0IHJlbW90ZSBwcnVuZSBvcmlnaW4gJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL3NpZGUyICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9zaWRlCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgLS1taXJyb3I9ZmV0Y2gnICcKIAlta2RpciBtaXJyb3ItZmV0Y2ggJiYKIAlnaXQgaW5pdCBtaXJyb3ItZmV0Y2gvcGFyZW50ICYmCi0JKGNkIG1pcnJvci1mZXRjaC9wYXJlbnQgJiYKLQkgdGVzdF9jb21taXQgb25lKSAmJgorCSgKKwkJY2QgbWlycm9yLWZldGNoL3BhcmVudCAmJgorCQl0ZXN0X2NvbW1pdCBvbmUKKwkpICYmCiAJZ2l0IGluaXQgLS1iYXJlIG1pcnJvci1mZXRjaC9jaGlsZCAmJgotCShjZCBtaXJyb3ItZmV0Y2gvY2hpbGQgJiYKLQkgZ2l0IHJlbW90ZSBhZGQgLS1taXJyb3I9ZmV0Y2ggLWYgcGFyZW50IC4uL3BhcmVudCkKKwkoCisJCWNkIG1pcnJvci1mZXRjaC9jaGlsZCAmJgorCQlnaXQgcmVtb3RlIGFkZCAtLW1pcnJvcj1mZXRjaCAtZiBwYXJlbnQgLi4vcGFyZW50CisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBtaXJyb3JzIGFjdCBhcyBtaXJyb3JzIGR1cmluZyBmZXRjaCcgJwotCShjZCBtaXJyb3ItZmV0Y2gvcGFyZW50ICYmCi0JIGdpdCBicmFuY2ggbmV3ICYmCi0JIGdpdCBicmFuY2ggLW0gbWFzdGVyIHJlbmFtZWQKKwkoCisJCWNkIG1pcnJvci1mZXRjaC9wYXJlbnQgJiYKKwkJZ2l0IGJyYW5jaCBuZXcgJiYKKwkJZ2l0IGJyYW5jaCAtbSBtYXN0ZXIgcmVuYW1lZAogCSkgJiYKLQkoY2QgbWlycm9yLWZldGNoL2NoaWxkICYmCi0JIGdpdCBmZXRjaCBwYXJlbnQgJiYKLQkgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL25ldyAmJgotCSBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZAorCSgKKwkJY2QgbWlycm9yLWZldGNoL2NoaWxkICYmCisJCWdpdCBmZXRjaCBwYXJlbnQgJiYKKwkJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL25ldyAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZAogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2ggbWlycm9ycyBjYW4gcHJ1bmUnICcKLQkoY2QgbWlycm9yLWZldGNoL2NoaWxkICYmCi0JIGdpdCByZW1vdGUgcHJ1bmUgcGFyZW50ICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIKKwkoCisJCWNkIG1pcnJvci1mZXRjaC9jaGlsZCAmJgorCQlnaXQgcmVtb3RlIHBydW5lIHBhcmVudCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbWFzdGVyCiAJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdmZXRjaCBtaXJyb3JzIGRvIG5vdCBhY3QgYXMgbWlycm9ycyBkdXJpbmcgcHVzaCcgJwotCShjZCBtaXJyb3ItZmV0Y2gvcGFyZW50ICYmCi0JIGdpdCBjaGVja291dCBIRUFEXjAKKwkoCisJCWNkIG1pcnJvci1mZXRjaC9wYXJlbnQgJiYKKwkJZ2l0IGNoZWNrb3V0IEhFQUReMAogCSkgJiYKLQkoY2QgbWlycm9yLWZldGNoL2NoaWxkICYmCi0JIGdpdCBicmFuY2ggLW0gcmVuYW1lZCByZW5hbWVkMiAmJgotCSBnaXQgcHVzaCBwYXJlbnQgOgorCSgKKwkJY2QgbWlycm9yLWZldGNoL2NoaWxkICYmCisJCWdpdCBicmFuY2ggLW0gcmVuYW1lZCByZW5hbWVkMiAmJgorCQlnaXQgcHVzaCBwYXJlbnQgOgogCSkgJiYKLQkoY2QgbWlycm9yLWZldGNoL3BhcmVudCAmJgotCSBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlbmFtZWQgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL3JlbmFtZWQyCisJKAorCQljZCBtaXJyb3ItZmV0Y2gvcGFyZW50ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVuYW1lZCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZDIKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBmZXRjaCBtaXJyb3Igd2l0aCBzcGVjaWZpYyBicmFuY2hlcycgJwogCWdpdCBpbml0IC0tYmFyZSBtaXJyb3ItZmV0Y2gvdHJhY2sgJiYKLQkoY2QgbWlycm9yLWZldGNoL3RyYWNrICYmCi0JIGdpdCByZW1vdGUgYWRkIC0tbWlycm9yPWZldGNoIC10IGhlYWRzL25ldyBwYXJlbnQgLi4vcGFyZW50CisJKAorCQljZCBtaXJyb3ItZmV0Y2gvdHJhY2sgJiYKKwkJZ2l0IHJlbW90ZSBhZGQgLS1taXJyb3I9ZmV0Y2ggLXQgaGVhZHMvbmV3IHBhcmVudCAuLi9wYXJlbnQKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZldGNoIG1pcnJvciByZXNwZWN0cyBzcGVjaWZpYyBicmFuY2hlcycgJwotCShjZCBtaXJyb3ItZmV0Y2gvdHJhY2sgJiYKLQkgZ2l0IGZldGNoIHBhcmVudCAmJgotCSBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbmV3ICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9yZW5hbWVkCisJKAorCQljZCBtaXJyb3ItZmV0Y2gvdHJhY2sgJiYKKwkJZ2l0IGZldGNoIHBhcmVudCAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbmV3ICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9yZW5hbWVkCiAJKQogJwogCkBAIC0zNzIsNjAgKzQwOCw3MiBAQAogCW1rZGlyIG1pcnJvci1wdXNoICYmCiAJZ2l0IGluaXQgLS1iYXJlIG1pcnJvci1wdXNoL3B1YmxpYyAmJgogCWdpdCBpbml0IG1pcnJvci1wdXNoL3ByaXZhdGUgJiYKLQkoY2QgbWlycm9yLXB1c2gvcHJpdmF0ZSAmJgotCSB0ZXN0X2NvbW1pdCBvbmUgJiYKLQkgZ2l0IHJlbW90ZSBhZGQgLS1taXJyb3I9cHVzaCBwdWJsaWMgLi4vcHVibGljCisJKAorCQljZCBtaXJyb3ItcHVzaC9wcml2YXRlICYmCisJCXRlc3RfY29tbWl0IG9uZSAmJgorCQlnaXQgcmVtb3RlIGFkZCAtLW1pcnJvcj1wdXNoIHB1YmxpYyAuLi9wdWJsaWMKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggbWlycm9ycyBhY3QgYXMgbWlycm9ycyBkdXJpbmcgcHVzaCcgJwotCShjZCBtaXJyb3ItcHVzaC9wcml2YXRlICYmCi0JIGdpdCBicmFuY2ggbmV3ICYmCi0JIGdpdCBicmFuY2ggLW0gbWFzdGVyIHJlbmFtZWQgJiYKLQkgZ2l0IHB1c2ggcHVibGljCisJKAorCQljZCBtaXJyb3ItcHVzaC9wcml2YXRlICYmCisJCWdpdCBicmFuY2ggbmV3ICYmCisJCWdpdCBicmFuY2ggLW0gbWFzdGVyIHJlbmFtZWQgJiYKKwkJZ2l0IHB1c2ggcHVibGljCiAJKSAmJgotCShjZCBtaXJyb3ItcHVzaC9wcml2YXRlICYmCi0JIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9uZXcgJiYKLQkgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL3JlbmFtZWQgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL2hlYWRzL21hc3RlcgorCSgKKwkJY2QgbWlycm9yLXB1c2gvcHJpdmF0ZSAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvbmV3ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9yZW5hbWVkICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9oZWFkcy9tYXN0ZXIKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggbWlycm9ycyBkbyBub3QgYWN0IGFzIG1pcnJvcnMgZHVyaW5nIGZldGNoJyAnCi0JKGNkIG1pcnJvci1wdXNoL3B1YmxpYyAmJgotCSBnaXQgYnJhbmNoIC1tIHJlbmFtZWQgcmVuYW1lZDIgJiYKLQkgZ2l0IHN5bWJvbGljLXJlZiBIRUFEIHJlZnMvaGVhZHMvcmVuYW1lZDIKKwkoCisJCWNkIG1pcnJvci1wdXNoL3B1YmxpYyAmJgorCQlnaXQgYnJhbmNoIC1tIHJlbmFtZWQgcmVuYW1lZDIgJiYKKwkJZ2l0IHN5bWJvbGljLXJlZiBIRUFEIHJlZnMvaGVhZHMvcmVuYW1lZDIKIAkpICYmCi0JKGNkIG1pcnJvci1wdXNoL3ByaXZhdGUgJiYKLQkgZ2l0IGZldGNoIHB1YmxpYyAmJgotCSBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZCAmJgotCSB0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZDIKKwkoCisJCWNkIG1pcnJvci1wdXNoL3ByaXZhdGUgJiYKKwkJZ2l0IGZldGNoIHB1YmxpYyAmJgorCQlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvaGVhZHMvcmVuYW1lZDIKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggbWlycm9ycyBkbyBub3QgYWxsb3cgeW91IHRvIHNwZWNpZnkgcmVmcycgJwogCWdpdCBpbml0IG1pcnJvci1wdXNoL3RyYWNrICYmCi0JKGNkIG1pcnJvci1wdXNoL3RyYWNrICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCByZW1vdGUgYWRkIC0tbWlycm9yPXB1c2ggLXQgbmV3IHB1YmxpYyAuLi9wdWJsaWMKKwkoCisJCWNkIG1pcnJvci1wdXNoL3RyYWNrICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZW1vdGUgYWRkIC0tbWlycm9yPXB1c2ggLXQgbmV3IHB1YmxpYyAuLi9wdWJsaWMKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBhbHQgJiYgcHJ1bmUnICcKLQkobWtkaXIgYWx0dHN0ICYmCi0JIGNkIGFsdHRzdCAmJgotCSBnaXQgaW5pdCAmJgotCSBnaXQgcmVtb3RlIGFkZCAtZiBvcmlnaW4gLi4vb25lICYmCi0JIGdpdCBjb25maWcgcmVtb3RlLmFsdC51cmwgLi4vb25lICYmCi0JIGdpdCBjb25maWcgcmVtb3RlLmFsdC5mZXRjaCAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiKSAmJgotCShjZCBvbmUgJiYKLQkgZ2l0IGJyYW5jaCAtbSBzaWRlIHNpZGUyKSAmJgotCShjZCBhbHR0c3QgJiYKLQkgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUyICYmCi0JIGdpdCBmZXRjaCBhbHQgJiYKLQkgZ2l0IHJlbW90ZSBwcnVuZSBhbHQgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUgJiYKLQkgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUyKQorCW1rZGlyIGFsdHRzdCAmJgorCSgKKwkJY2QgYWx0dHN0ICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCByZW1vdGUgYWRkIC1mIG9yaWdpbiAuLi9vbmUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUuYWx0LnVybCAuLi9vbmUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUuYWx0LmZldGNoICIrcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9vcmlnaW4vKiIKKwkpICYmCisJKAorCQljZCBvbmUgJiYKKwkJZ2l0IGJyYW5jaCAtbSBzaWRlIHNpZGUyCisJKSAmJgorCSgKKwkJY2QgYWx0dHN0ICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlMiAmJgorCQlnaXQgZmV0Y2ggYWx0ICYmCisJCWdpdCByZW1vdGUgcHJ1bmUgYWx0ICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlICYmCisJCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlMgorCSkKICcKIAogY2F0ID50ZXN0L2V4cGVjdCA8PFxFT0YKQEAgLTQzMywyMCArNDgxLDI0IEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIHdpdGggcmVhY2hhYmxlIHRhZ3MgKGRlZmF1bHQpJyAnCi0JKGNkIG9uZSAmJgotCSA+Zm9vYmFyICYmCi0JIGdpdCBhZGQgZm9vYmFyICYmCi0JIGdpdCBjb21taXQgLW0gIkZvb2JhciIgJiYKLQkgZ2l0IHRhZyAtYSAtbSAiRm9vYmFyIHRhZyIgZm9vYmFyLXRhZyAmJgotCSBnaXQgcmVzZXQgLS1oYXJkIEhFQUR+MSAmJgotCSBnaXQgdGFnIC1hIC1tICJTb21lIHRhZyIgc29tZS10YWcpICYmCi0JKG1rZGlyIGFkZC10YWdzICYmCi0JIGNkIGFkZC10YWdzICYmCi0JIGdpdCBpbml0ICYmCi0JIGdpdCByZW1vdGUgYWRkIC1mIG9yaWdpbiAuLi9vbmUgJiYKLQkgZ2l0IHRhZyAtbCBzb21lLXRhZyA+Li4vdGVzdC9vdXRwdXQgJiYKLQkgZ2l0IHRhZyAtbCBmb29iYXItdGFnID4+Li4vdGVzdC9vdXRwdXQgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnRhZ29wdCkgJiYKKwkoCisJCWNkIG9uZSAmJgorCQk+Zm9vYmFyICYmCisJCWdpdCBhZGQgZm9vYmFyICYmCisJCWdpdCBjb21taXQgLW0gIkZvb2JhciIgJiYKKwkJZ2l0IHRhZyAtYSAtbSAiRm9vYmFyIHRhZyIgZm9vYmFyLXRhZyAmJgorCQlnaXQgcmVzZXQgLS1oYXJkIEhFQUR+MSAmJgorCQlnaXQgdGFnIC1hIC1tICJTb21lIHRhZyIgc29tZS10YWcKKwkpICYmCisJbWtkaXIgYWRkLXRhZ3MgJiYKKwkoCisJCWNkIGFkZC10YWdzICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCByZW1vdGUgYWRkIC1mIG9yaWdpbiAuLi9vbmUgJiYKKwkJZ2l0IHRhZyAtbCBzb21lLXRhZyA+Li4vdGVzdC9vdXRwdXQgJiYKKwkJZ2l0IHRhZyAtbCBmb29iYXItdGFnID4+Li4vdGVzdC9vdXRwdXQgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnRhZ29wdAorCSkgJiYKIAl0ZXN0X2NtcCB0ZXN0L2V4cGVjdCB0ZXN0L291dHB1dAogJwogCkBAIC00NTcsMTQgKzUwOSwxNiBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCAtLXRhZ3MnICcKLQkocm0gLXJmIGFkZC10YWdzICYmCi0JIG1rZGlyIGFkZC10YWdzICYmCi0JIGNkIGFkZC10YWdzICYmCi0JIGdpdCBpbml0ICYmCi0JIGdpdCByZW1vdGUgYWRkIC1mIC0tdGFncyBvcmlnaW4gLi4vb25lICYmCi0JIGdpdCB0YWcgLWwgc29tZS10YWcgPi4uL3Rlc3Qvb3V0cHV0ICYmCi0JIGdpdCB0YWcgLWwgZm9vYmFyLXRhZyA+Pi4uL3Rlc3Qvb3V0cHV0ICYmCi0JIGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi50YWdvcHQgPj4uLi90ZXN0L291dHB1dCkgJiYKKwlybSAtcmYgYWRkLXRhZ3MgJiYKKwkoCisJCW1rZGlyIGFkZC10YWdzICYmCisJCWNkIGFkZC10YWdzICYmCisJCWdpdCBpbml0ICYmCisJCWdpdCByZW1vdGUgYWRkIC1mIC0tdGFncyBvcmlnaW4gLi4vb25lICYmCisJCWdpdCB0YWcgLWwgc29tZS10YWcgPi4uL3Rlc3Qvb3V0cHV0ICYmCisJCWdpdCB0YWcgLWwgZm9vYmFyLXRhZyA+Pi4uL3Rlc3Qvb3V0cHV0ICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi50YWdvcHQgPj4uLi90ZXN0L291dHB1dAorCSkgJiYKIAl0ZXN0X2NtcCB0ZXN0L2V4cGVjdCB0ZXN0L291dHB1dAogJwogCkBAIC00NzMsMjUgKzUyNywzMSBAQAogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCAtLW5vLXRhZ3MnICcKLQkocm0gLXJmIGFkZC10YWdzICYmCi0JIG1rZGlyIGFkZC1uby10YWdzICYmCi0JIGNkIGFkZC1uby10YWdzICYmCi0JIGdpdCBpbml0ICYmCi0JIGdpdCByZW1vdGUgYWRkIC1mIC0tbm8tdGFncyBvcmlnaW4gLi4vb25lICYmCi0JIGdpdCB0YWcgLWwgc29tZS10YWcgPi4uL3Rlc3Qvb3V0cHV0ICYmCi0JIGdpdCB0YWcgLWwgZm9vYmFyLXRhZyA+Li4vdGVzdC9vdXRwdXQgJiYKLQkgZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnRhZ29wdCA+Pi4uL3Rlc3Qvb3V0cHV0KSAmJgotCShjZCBvbmUgJiYKLQkgZ2l0IHRhZyAtZCBzb21lLXRhZyBmb29iYXItdGFnKSAmJgorCXJtIC1yZiBhZGQtdGFncyAmJgorCSgKKwkJbWtkaXIgYWRkLW5vLXRhZ3MgJiYKKwkJY2QgYWRkLW5vLXRhZ3MgJiYKKwkJZ2l0IGluaXQgJiYKKwkJZ2l0IHJlbW90ZSBhZGQgLWYgLS1uby10YWdzIG9yaWdpbiAuLi9vbmUgJiYKKwkJZ2l0IHRhZyAtbCBzb21lLXRhZyA+Li4vdGVzdC9vdXRwdXQgJiYKKwkJZ2l0IHRhZyAtbCBmb29iYXItdGFnID4uLi90ZXN0L291dHB1dCAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udGFnb3B0ID4+Li4vdGVzdC9vdXRwdXQKKwkpICYmCisJKAorCQljZCBvbmUgJiYKKwkJZ2l0IHRhZyAtZCBzb21lLXRhZyBmb29iYXItdGFnCisJKSAmJgogCXRlc3RfY21wIHRlc3QvZXhwZWN0IHRlc3Qvb3V0cHV0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlamVjdCAtLW5vLW5vLXRhZ3MnICcKLQkoY2QgYWRkLW5vLXRhZ3MgJiYKLQkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlbW90ZSBhZGQgLWYgLS1uby1uby10YWdzIG5ld29yaWdpbiAuLi9vbmUpCisJKAorCQljZCBhZGQtbm8tdGFncyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmVtb3RlIGFkZCAtZiAtLW5vLW5vLXRhZ3MgbmV3b3JpZ2luIC4uL29uZQorCSkKICcKIAotY2F0ID4gb25lL2V4cGVjdCA8PCBFT0YKK2NhdCA+b25lL2V4cGVjdCA8PFxFT0YKICAgYXBpcy9tYXN0ZXIKICAgYXBpcy9zaWRlCiAgIGRyb3NvcGhpbGEvYW5vdGhlcgpAQCAtNTAwLDE3ICs1NjAsMTcgQEAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUnICcKLQotCShjZCBvbmUgJiYKLQkgZ2l0IHJlbW90ZSBhZGQgZHJvc29waGlsYSAuLi90d28gJiYKLQkgZ2l0IHJlbW90ZSBhZGQgYXBpcyAuLi9taXJyb3IgJiYKLQkgZ2l0IHJlbW90ZSB1cGRhdGUgJiYKLQkgZ2l0IGJyYW5jaCAtciA+IG91dHB1dCAmJgotCSB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0KQotCisJKAorCQljZCBvbmUgJiYKKwkJZ2l0IHJlbW90ZSBhZGQgZHJvc29waGlsYSAuLi90d28gJiYKKwkJZ2l0IHJlbW90ZSBhZGQgYXBpcyAuLi9taXJyb3IgJiYKKwkJZ2l0IHJlbW90ZSB1cGRhdGUgJiYKKwkJZ2l0IGJyYW5jaCAtciA+b3V0cHV0ICYmCisJCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKwkpCiAnCiAKLWNhdCA+IG9uZS9leHBlY3QgPDwgRU9GCitjYXQgPm9uZS9leHBlY3QgPDxcRU9GCiAgIGRyb3NvcGhpbGEvYW5vdGhlcgogICBkcm9zb3BoaWxhL21hc3RlcgogICBkcm9zb3BoaWxhL3NpZGUKQEAgLTUyMSwzNCArNTgxLDQwIEBACiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIHdpdGggYXJndW1lbnRzJyAnCi0KLQkoY2Qgb25lICYmCi0JIGZvciBiIGluICQoZ2l0IGJyYW5jaCAtcikKLQkgZG8KKwkoCisJCWNkIG9uZSAmJgorCQlmb3IgYiBpbiAkKGdpdCBicmFuY2ggLXIpCisJCWRvCiAJCWdpdCBicmFuY2ggLXIgLWQgJGIgfHwgYnJlYWsKLQkgZG9uZSAmJgotCSBnaXQgcmVtb3RlIGFkZCBtYW5kdWNhIC4uL21pcnJvciAmJgotCSBnaXQgcmVtb3RlIGFkZCBtZWdhbG9wcmVwdXMgLi4vbWlycm9yICYmCi0JIGdpdCBjb25maWcgcmVtb3Rlcy5waG9iYWV0aWN1cyAiZHJvc29waGlsYSBtZWdhbG9wcmVwdXMiICYmCi0JIGdpdCBjb25maWcgcmVtb3Rlcy50aXRhbnVzIG1hbmR1Y2EgJiYKLQkgZ2l0IHJlbW90ZSB1cGRhdGUgcGhvYmFldGljdXMgdGl0YW51cyAmJgotCSBnaXQgYnJhbmNoIC1yID4gb3V0cHV0ICYmCi0JIHRlc3RfY21wIGV4cGVjdCBvdXRwdXQpCi0KKwkJZG9uZSAmJgorCQlnaXQgcmVtb3RlIGFkZCBtYW5kdWNhIC4uL21pcnJvciAmJgorCQlnaXQgcmVtb3RlIGFkZCBtZWdhbG9wcmVwdXMgLi4vbWlycm9yICYmCisJCWdpdCBjb25maWcgcmVtb3Rlcy5waG9iYWV0aWN1cyAiZHJvc29waGlsYSBtZWdhbG9wcmVwdXMiICYmCisJCWdpdCBjb25maWcgcmVtb3Rlcy50aXRhbnVzIG1hbmR1Y2EgJiYKKwkJZ2l0IHJlbW90ZSB1cGRhdGUgcGhvYmFldGljdXMgdGl0YW51cyAmJgorCQlnaXQgYnJhbmNoIC1yID5vdXRwdXQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIC0tcHJ1bmUnICcKLQotCShjZCBvbmUgJiYKLQkgZ2l0IGJyYW5jaCAtbSBzaWRlMiBzaWRlMykgJiYKLQkoY2QgdGVzdCAmJgotCSBnaXQgcmVtb3RlIHVwZGF0ZSAtLXBydW5lICYmCi0JIChjZCAuLi9vbmUgJiYgZ2l0IGJyYW5jaCAtbSBzaWRlMyBzaWRlMikgJiYKLQkgZ2l0IHJldi1wYXJzZSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUzICYmCi0JIHRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlMikKKwkoCisJCWNkIG9uZSAmJgorCQlnaXQgYnJhbmNoIC1tIHNpZGUyIHNpZGUzCisJKSAmJgorCSgKKwkJY2QgdGVzdCAmJgorCQlnaXQgcmVtb3RlIHVwZGF0ZSAtLXBydW5lICYmCisJCSgKKwkJCWNkIC4uL29uZSAmJgorCQkJZ2l0IGJyYW5jaCAtbSBzaWRlMyBzaWRlMgorCQkpICYmCisJCWdpdCByZXYtcGFyc2UgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlMyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIHJlZnMvcmVtb3Rlcy9vcmlnaW4vc2lkZTIKKwkpCiAnCiAKLWNhdCA+IG9uZS9leHBlY3QgPDwgRU9GCitjYXQgPm9uZS9leHBlY3QgPDwtXEVPRgogICBhcGlzL21hc3RlcgogICBhcGlzL3NpZGUKICAgbWFuZHVjYS9tYXN0ZXIKQEAgLTU1OCwxNzYgKzYyNCwyMDQgQEAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgZGVmYXVsdCcgJwotCi0JKGNkIG9uZSAmJgotCSBmb3IgYiBpbiAkKGdpdCBicmFuY2ggLXIpCi0JIGRvCisJKAorCQljZCBvbmUgJiYKKwkJZm9yIGIgaW4gJChnaXQgYnJhbmNoIC1yKQorCQlkbwogCQlnaXQgYnJhbmNoIC1yIC1kICRiIHx8IGJyZWFrCi0JIGRvbmUgJiYKLQkgZ2l0IGNvbmZpZyByZW1vdGUuZHJvc29waGlsYS5za2lwRGVmYXVsdFVwZGF0ZSB0cnVlICYmCi0JIGdpdCByZW1vdGUgdXBkYXRlIGRlZmF1bHQgJiYKLQkgZ2l0IGJyYW5jaCAtciA+IG91dHB1dCAmJgotCSB0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0KQotCisJCWRvbmUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUuZHJvc29waGlsYS5za2lwRGVmYXVsdFVwZGF0ZSB0cnVlICYmCisJCWdpdCByZW1vdGUgdXBkYXRlIGRlZmF1bHQgJiYKKwkJZ2l0IGJyYW5jaCAtciA+b3V0cHV0ICYmCisJCXRlc3RfY21wIGV4cGVjdCBvdXRwdXQKKwkpCiAnCiAKLWNhdCA+IG9uZS9leHBlY3QgPDwgRU9GCitjYXQgPm9uZS9leHBlY3QgPDxcRU9GCiAgIGRyb3NvcGhpbGEvYW5vdGhlcgogICBkcm9zb3BoaWxhL21hc3RlcgogICBkcm9zb3BoaWxhL3NpZGUKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd1cGRhdGUgZGVmYXVsdCAob3ZlcnJpZGRlbiwgd2l0aCBmdW5ueSB3aGl0ZXNwYWNlKScgJwotCi0JKGNkIG9uZSAmJgotCSBmb3IgYiBpbiAkKGdpdCBicmFuY2ggLXIpCi0JIGRvCisJKAorCQljZCBvbmUgJiYKKwkJZm9yIGIgaW4gJChnaXQgYnJhbmNoIC1yKQorCQlkbwogCQlnaXQgYnJhbmNoIC1yIC1kICRiIHx8IGJyZWFrCi0JIGRvbmUgJiYKLQkgZ2l0IGNvbmZpZyByZW1vdGVzLmRlZmF1bHQgIiQocHJpbnRmICJcdCBkcm9zb3BoaWxhICBcbiIpIiAmJgotCSBnaXQgcmVtb3RlIHVwZGF0ZSBkZWZhdWx0ICYmCi0JIGdpdCBicmFuY2ggLXIgPiBvdXRwdXQgJiYKLQkgdGVzdF9jbXAgZXhwZWN0IG91dHB1dCkKLQorCQlkb25lICYmCisJCWdpdCBjb25maWcgcmVtb3Rlcy5kZWZhdWx0ICIkKHByaW50ZiAiXHQgZHJvc29waGlsYSAgXG4iKSIgJiYKKwkJZ2l0IHJlbW90ZSB1cGRhdGUgZGVmYXVsdCAmJgorCQlnaXQgYnJhbmNoIC1yID5vdXRwdXQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlICh3aXRoIHJlbW90ZXMuZGVmYXVsdCBkZWZpbmVkKScgJwotCi0JKGNkIG9uZSAmJgotCSBmb3IgYiBpbiAkKGdpdCBicmFuY2ggLXIpCi0JIGRvCisJKAorCQljZCBvbmUgJiYKKwkJZm9yIGIgaW4gJChnaXQgYnJhbmNoIC1yKQorCQlkbwogCQlnaXQgYnJhbmNoIC1yIC1kICRiIHx8IGJyZWFrCi0JIGRvbmUgJiYKLQkgZ2l0IGNvbmZpZyByZW1vdGVzLmRlZmF1bHQgImRyb3NvcGhpbGEiICYmCi0JIGdpdCByZW1vdGUgdXBkYXRlICYmCi0JIGdpdCBicmFuY2ggLXIgPiBvdXRwdXQgJiYKLQkgdGVzdF9jbXAgZXhwZWN0IG91dHB1dCkKLQorCQlkb25lICYmCisJCWdpdCBjb25maWcgcmVtb3Rlcy5kZWZhdWx0ICJkcm9zb3BoaWxhIiAmJgorCQlnaXQgcmVtb3RlIHVwZGF0ZSAmJgorCQlnaXQgYnJhbmNoIC1yID5vdXRwdXQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnInJlbW90ZSBzaG93IiBkb2VzIG5vdCBzaG93IHN5bWJvbGljIHJlZnMnICcKLQogCWdpdCBjbG9uZSBvbmUgdGhyZWUgJiYKLQkoY2QgdGhyZWUgJiYKLQkgZ2l0IHJlbW90ZSBzaG93IG9yaWdpbiA+IG91dHB1dCAmJgotCSAhIGdyZXAgIl4gKkhFQUQkIiA8IG91dHB1dCAmJgotCSAhIGdyZXAgLWkgc3RhbGUgPCBvdXRwdXQpCi0KKwkoCisJCWNkIHRocmVlICYmCisJCWdpdCByZW1vdGUgc2hvdyBvcmlnaW4gPm91dHB1dCAmJgorCQkhIGdyZXAgIl4gKkhFQUQkIiA8IG91dHB1dCAmJgorCQkhIGdyZXAgLWkgc3RhbGUgPCBvdXRwdXQKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlamVjdCBhZGRpbmcgcmVtb3RlIHdpdGggYW4gaW52YWxpZCBuYW1lJyAnCi0KIAl0ZXN0X211c3RfZmFpbCBnaXQgcmVtb3RlIGFkZCBzb21lOnVybCBkZXNpcmVkLW5hbWUKLQogJwogCiAjIFRoZSBmaXJzdCB0aHJlZSB0ZXN0IGlmIHRoZSB0cmFja2luZyBicmFuY2hlcyBhcmUgcHJvcGVybHkgcmVuYW1lZCwKICMgdGhlIGxhc3QgdHdvIG9uZXMgY2hlY2sgaWYgdGhlIGNvbmZpZyBpcyB1cGRhdGVkLgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWUgYSByZW1vdGUnICcKLQogCWdpdCBjbG9uZSBvbmUgZm91ciAmJgotCShjZCBmb3VyICYmCi0JIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiB1cHN0cmVhbSAmJgotCSBybWRpciAuZ2l0L3JlZnMvcmVtb3Rlcy9vcmlnaW4gJiYKLQkgdGVzdCAiJChnaXQgc3ltYm9saWMtcmVmIHJlZnMvcmVtb3Rlcy91cHN0cmVhbS9IRUFEKSIgPSAicmVmcy9yZW1vdGVzL3Vwc3RyZWFtL21hc3RlciIgJiYKLQkgdGVzdCAiJChnaXQgcmV2LXBhcnNlIHVwc3RyZWFtL21hc3RlcikiID0gIiQoZ2l0IHJldi1wYXJzZSBtYXN0ZXIpIiAmJgotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLnVwc3RyZWFtLmZldGNoKSIgPSAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvdXBzdHJlYW0vKiIgJiYKLQkgdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlKSIgPSAidXBzdHJlYW0iKQotCisJKAorCQljZCBmb3VyICYmCisJCWdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiB1cHN0cmVhbSAmJgorCQlybWRpciAuZ2l0L3JlZnMvcmVtb3Rlcy9vcmlnaW4gJiYKKwkJdGVzdCAiJChnaXQgc3ltYm9saWMtcmVmIHJlZnMvcmVtb3Rlcy91cHN0cmVhbS9IRUFEKSIgPSAicmVmcy9yZW1vdGVzL3Vwc3RyZWFtL21hc3RlciIgJiYKKwkJdGVzdCAiJChnaXQgcmV2LXBhcnNlIHVwc3RyZWFtL21hc3RlcikiID0gIiQoZ2l0IHJldi1wYXJzZSBtYXN0ZXIpIiAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLnVwc3RyZWFtLmZldGNoKSIgPSAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvdXBzdHJlYW0vKiIgJiYKKwkJdGVzdCAiJChnaXQgY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlKSIgPSAidXBzdHJlYW0iCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWUgZG9lcyBub3QgdXBkYXRlIGEgbm9uLWRlZmF1bHQgZmV0Y2ggcmVmc3BlYycgJwotCiAJZ2l0IGNsb25lIG9uZSBmb3VyLm9uZSAmJgotCShjZCBmb3VyLm9uZSAmJgotCSBnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4uZmV0Y2ggK3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzL29yaWdpbi8qICYmCi0JIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiB1cHN0cmVhbSAmJgotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLnVwc3RyZWFtLmZldGNoKSIgPSAiK3JlZnMvaGVhZHMvKjpyZWZzL2hlYWRzL29yaWdpbi8qIiAmJgotCSBnaXQgcmV2LXBhcnNlIC1xIG9yaWdpbi9tYXN0ZXIpCi0KKwkoCisJCWNkIGZvdXIub25lICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5mZXRjaCArcmVmcy9oZWFkcy8qOnJlZnMvaGVhZHMvb3JpZ2luLyogJiYKKwkJZ2l0IHJlbW90ZSByZW5hbWUgb3JpZ2luIHVwc3RyZWFtICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUudXBzdHJlYW0uZmV0Y2gpIiA9ICIrcmVmcy9oZWFkcy8qOnJlZnMvaGVhZHMvb3JpZ2luLyoiICYmCisJCWdpdCByZXYtcGFyc2UgLXEgb3JpZ2luL21hc3RlcgorCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVuYW1lIGEgcmVtb3RlIHdpdGggbmFtZSBwYXJ0IG9mIGZldGNoIHNwZWMnICcKLQogCWdpdCBjbG9uZSBvbmUgZm91ci50d28gJiYKLQkoY2QgZm91ci50d28gJiYKLQkgZ2l0IHJlbW90ZSByZW5hbWUgb3JpZ2luIHJlbW90ZSAmJgotCSBnaXQgcmVtb3RlIHJlbmFtZSByZW1vdGUgdXBzdHJlYW0gJiYKLQkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS51cHN0cmVhbS5mZXRjaCkiID0gIityZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL3Vwc3RyZWFtLyoiKQotCisJKAorCQljZCBmb3VyLnR3byAmJgorCQlnaXQgcmVtb3RlIHJlbmFtZSBvcmlnaW4gcmVtb3RlICYmCisJCWdpdCByZW1vdGUgcmVuYW1lIHJlbW90ZSB1cHN0cmVhbSAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLnVwc3RyZWFtLmZldGNoKSIgPSAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvdXBzdHJlYW0vKiIKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZSBhIHJlbW90ZSB3aXRoIG5hbWUgcHJlZml4IG9mIG90aGVyIHJlbW90ZScgJwotCiAJZ2l0IGNsb25lIG9uZSBmb3VyLnRocmVlICYmCi0JKGNkIGZvdXIudGhyZWUgJiYKLQkgZ2l0IHJlbW90ZSBhZGQgbyBnaXQ6Ly9leGFtcGxlLmNvbS9yZXBvLmdpdCAmJgotCSBnaXQgcmVtb3RlIHJlbmFtZSBvIHVwc3RyZWFtICYmCi0JIHRlc3QgIiQoZ2l0IHJldi1wYXJzZSBvcmlnaW4vbWFzdGVyKSIgPSAiJChnaXQgcmV2LXBhcnNlIG1hc3RlcikiKQotCisJKAorCQljZCBmb3VyLnRocmVlICYmCisJCWdpdCByZW1vdGUgYWRkIG8gZ2l0Oi8vZXhhbXBsZS5jb20vcmVwby5naXQgJiYKKwkJZ2l0IHJlbW90ZSByZW5hbWUgbyB1cHN0cmVhbSAmJgorCQl0ZXN0ICIkKGdpdCByZXYtcGFyc2Ugb3JpZ2luL21hc3RlcikiID0gIiQoZ2l0IHJldi1wYXJzZSBtYXN0ZXIpIgorCSkKICcKIAotY2F0ID4gcmVtb3Rlc19vcmlnaW4gPDwgRU9GCitjYXQgPnJlbW90ZXNfb3JpZ2luIDw8RU9GCiBVUkw6ICQocHdkKS9vbmUKIFB1c2g6IHJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvdXBzdHJlYW0KK1B1c2g6IHJlZnMvaGVhZHMvbmV4dDpyZWZzL2hlYWRzL3Vwc3RyZWFtMgogUHVsbDogcmVmcy9oZWFkcy9tYXN0ZXI6cmVmcy9oZWFkcy9vcmlnaW4KK1B1bGw6IHJlZnMvaGVhZHMvbmV4dDpyZWZzL2hlYWRzL29yaWdpbjIKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtaWdyYXRlIGEgcmVtb3RlIGZyb20gbmFtZWQgZmlsZSBpbiAkR0lUX0RJUi9yZW1vdGVzJyAnCiAJZ2l0IGNsb25lIG9uZSBmaXZlICYmCiAJb3JpZ2luX3VybD0kKHB3ZCkvb25lICYmCi0JKGNkIGZpdmUgJiYKLQkgZ2l0IHJlbW90ZSByZW1vdmUgb3JpZ2luICYmCi0JIG1rZGlyIC1wIC5naXQvcmVtb3RlcyAmJgotCSBjYXQgLi4vcmVtb3Rlc19vcmlnaW4gPiAuZ2l0L3JlbW90ZXMvb3JpZ2luICYmCi0JIGdpdCByZW1vdGUgcmVuYW1lIG9yaWdpbiBvcmlnaW4gJiYKLQkgISB0ZXN0IC1mIC5naXQvcmVtb3Rlcy9vcmlnaW4gJiYKLQkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiJG9yaWdpbl91cmwiICYmCi0JIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnB1c2gpIiA9ICJyZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtIiAmJgotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5mZXRjaCkiID0gInJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luIikKKwkoCisJCWNkIGZpdmUgJiYKKwkJZ2l0IHJlbW90ZSByZW1vdmUgb3JpZ2luICYmCisJCW1rZGlyIC1wIC5naXQvcmVtb3RlcyAmJgorCQljYXQgLi4vcmVtb3Rlc19vcmlnaW4gPi5naXQvcmVtb3Rlcy9vcmlnaW4gJiYKKwkJZ2l0IHJlbW90ZSByZW5hbWUgb3JpZ2luIG9yaWdpbiAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyAuZ2l0L3JlbW90ZXMvb3JpZ2luICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIiRvcmlnaW5fdXJsIiAmJgorCQljYXQgPnB1c2hfZXhwZWN0ZWQgPDwtXEVPRiAmJgorCQlyZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL3Vwc3RyZWFtCisJCXJlZnMvaGVhZHMvbmV4dDpyZWZzL2hlYWRzL3Vwc3RyZWFtMgorCQlFT0YKKwkJY2F0ID5mZXRjaF9leHBlY3RlZCA8PC1cRU9GICYmCisJCXJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luCisJCXJlZnMvaGVhZHMvbmV4dDpyZWZzL2hlYWRzL29yaWdpbjIKKwkJRU9GCisJCWdpdCBjb25maWcgLS1nZXQtYWxsIHJlbW90ZS5vcmlnaW4ucHVzaCA+cHVzaF9hY3R1YWwgJiYKKwkJZ2l0IGNvbmZpZyAtLWdldC1hbGwgcmVtb3RlLm9yaWdpbi5mZXRjaCA+ZmV0Y2hfYWN0dWFsICYmCisJCXRlc3RfY21wIHB1c2hfZXhwZWN0ZWQgcHVzaF9hY3R1YWwgJiYKKwkJdGVzdF9jbXAgZmV0Y2hfZXhwZWN0ZWQgZmV0Y2hfYWN0dWFsCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtaWdyYXRlIGEgcmVtb3RlIGZyb20gbmFtZWQgZmlsZSBpbiAkR0lUX0RJUi9icmFuY2hlcycgJwogCWdpdCBjbG9uZSBvbmUgc2l4ICYmCiAJb3JpZ2luX3VybD0kKHB3ZCkvb25lICYmCi0JKGNkIHNpeCAmJgotCSBnaXQgcmVtb3RlIHJtIG9yaWdpbiAmJgotCSBlY2hvICIkb3JpZ2luX3VybCIgPiAuZ2l0L2JyYW5jaGVzL29yaWdpbiAmJgotCSBnaXQgcmVtb3RlIHJlbmFtZSBvcmlnaW4gb3JpZ2luICYmCi0JICEgdGVzdCAtZiAuZ2l0L2JyYW5jaGVzL29yaWdpbiAmJgotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIkb3JpZ2luX3VybCIgJiYKLQkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4uZmV0Y2gpIiA9ICJyZWZzL2hlYWRzL21hc3RlcjpyZWZzL2hlYWRzL29yaWdpbiIpCisJKAorCQljZCBzaXggJiYKKwkJZ2l0IHJlbW90ZSBybSBvcmlnaW4gJiYKKwkJZWNobyAiJG9yaWdpbl91cmwiID4uZ2l0L2JyYW5jaGVzL29yaWdpbiAmJgorCQlnaXQgcmVtb3RlIHJlbmFtZSBvcmlnaW4gb3JpZ2luICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvYnJhbmNoZXMvb3JpZ2luICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIiRvcmlnaW5fdXJsIiAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5mZXRjaCkiID0gInJlZnMvaGVhZHMvbWFzdGVyOnJlZnMvaGVhZHMvb3JpZ2luIiAmJgorCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5wdXNoKSIgPSAiSEVBRDpyZWZzL2hlYWRzL21hc3RlciIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21pZ3JhdGUgYSByZW1vdGUgZnJvbSBuYW1lZCBmaWxlIGluICRHSVRfRElSL2JyYW5jaGVzICgyKScgJworCWdpdCBjbG9uZSBvbmUgc2V2ZW4gJiYKKwkoCisJCWNkIHNldmVuICYmCisJCWdpdCByZW1vdGUgcm0gb3JpZ2luICYmCisJCWVjaG8gInF1dXgjZm9vbSIgPiAuZ2l0L2JyYW5jaGVzL29yaWdpbiAmJgorCQlnaXQgcmVtb3RlIHJlbmFtZSBvcmlnaW4gb3JpZ2luICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIC5naXQvYnJhbmNoZXMvb3JpZ2luICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gInF1dXgiICYmCisJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLmZldGNoKSIgPSAicmVmcy9oZWFkcy9mb29tOnJlZnMvaGVhZHMvb3JpZ2luIgorCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi5wdXNoKSIgPSAiSEVBRDpyZWZzL2hlYWRzL2Zvb20iCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW1vdGUgcHJ1bmUgdG8gY2F1c2UgYSBkYW5nbGluZyBzeW1yZWYnICcKLQlnaXQgY2xvbmUgb25lIHNldmVuICYmCisJZ2l0IGNsb25lIG9uZSBlaWdodCAmJgogCSgKIAkJY2Qgb25lICYmCiAJCWdpdCBjaGVja291dCBzaWRlMiAmJgogCQlnaXQgYnJhbmNoIC1EIG1hc3RlcgogCSkgJiYKIAkoCi0JCWNkIHNldmVuICYmCisJCWNkIGVpZ2h0ICYmCiAJCWdpdCByZW1vdGUgcHJ1bmUgb3JpZ2luCiAJKSA+ZXJyIDI+JjEgJiYKIAl0ZXN0X2kxOG5ncmVwICJoYXMgYmVjb21lIGRhbmdsaW5nIiBlcnIgJiYKIAogCTogQW5kIHRoZSBkYW5nbGluZyBzeW1yZWYgd2lsbCBub3QgY2F1c2Ugb3RoZXIgYW5ub3lpbmcgZXJyb3JzICYmCiAJKAotCQljZCBzZXZlbiAmJgorCQljZCBlaWdodCAmJgogCQlnaXQgYnJhbmNoIC1hCiAJKSAyPmVyciAmJgogCSEgZ3JlcCAicG9pbnRzIG5vd2hlcmUiIGVyciAmJgogCSgKLQkJY2Qgc2V2ZW4gJiYKKwkJY2QgZWlnaHQgJiYKIAkJdGVzdF9tdXN0X2ZhaWwgZ2l0IGJyYW5jaCBub21vcmUgb3JpZ2luCiAJKSAyPmVyciAmJgogCWdyZXAgImRhbmdsaW5nIHN5bXJlZiIgZXJyCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3cgZW1wdHkgcmVtb3RlJyAnCi0KIAl0ZXN0X2NyZWF0ZV9yZXBvIGVtcHR5ICYmCiAJZ2l0IGNsb25lIGVtcHR5IGVtcHR5LWNsb25lICYmCiAJKApkaWZmIC0tZ2l0IGEvdC90NTUxMC1mZXRjaC5zaCBiL3QvdDU1MTAtZmV0Y2guc2gKaW5kZXggZDdhMTlhMS4uZmRlNjg5MSAxMDA3NTUKLS0tIGEvdC90NTUxMC1mZXRjaC5zaAorKysgYi90L3Q1NTEwLWZldGNoLnNoCkBAIC0zNzAsMzAgKzM3MCwzOSBAQAogCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IGZldGNoIHNob3VsZCBub3QgdXBkYXRlIHRyYWNraW5nJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtYXJrIGluaXRpYWwgc3RhdGUgb2Ygb3JpZ2luL21hc3RlcicgJworCSgKKwkJY2QgdGhyZWUgJiYKKwkJZ2l0IHRhZyBiYXNlLW9yaWdpbi1tYXN0ZXIgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IGZldGNoIHNob3VsZCB1cGRhdGUgdHJhY2tpbmcnICcKIAogCWNkICIkRCIgJiYKIAlnaXQgYnJhbmNoIC1mIHNpZGUgJiYKIAkoCiAJCWNkIHRocmVlICYmCisJCWdpdCB1cGRhdGUtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIGJhc2Utb3JpZ2luLW1hc3RlciAmJgogCQlvPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlcikgJiYKIAkJZ2l0IGZldGNoIG9yaWdpbiBtYXN0ZXIgJiYKIAkJbj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCi0JCXRlc3QgIiRvIiA9ICIkbiIgJiYKKwkJdGVzdCAiJG8iICE9ICIkbiIgJiYKIAkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSByZWZzL3JlbW90ZXMvb3JpZ2luL3NpZGUKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IHB1bGwgc2hvdWxkIG5vdCB1cGRhdGUgdHJhY2tpbmcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGxpY2l0IHB1bGwgc2hvdWxkIHVwZGF0ZSB0cmFja2luZycgJwogCiAJY2QgIiREIiAmJgogCWdpdCBicmFuY2ggLWYgc2lkZSAmJgogCSgKIAkJY2QgdGhyZWUgJiYKKwkJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIgYmFzZS1vcmlnaW4tbWFzdGVyICYmCiAJCW89JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgogCQlnaXQgcHVsbCBvcmlnaW4gbWFzdGVyICYmCiAJCW49JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgotCQl0ZXN0ICIkbyIgPSAiJG4iICYmCisJCXRlc3QgIiRvIiAhPSAiJG4iICYmCiAJCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9zaWRlCiAJKQogJwpAQCAtNDA0LDYgKzQxMyw3IEBACiAJZ2l0IGJyYW5jaCAtZiBzaWRlICYmCiAJKAogCQljZCB0aHJlZSAmJgorCQlnaXQgdXBkYXRlLXJlZiByZWZzL3JlbW90ZXMvb3JpZ2luL21hc3RlciBiYXNlLW9yaWdpbi1tYXN0ZXIgJiYKIAkJbz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCiAJCWdpdCBmZXRjaCBvcmlnaW4gJiYKIAkJbj0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCkBAIC00MTIsNiArNDIyLDIyIEBACiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdub24tbWF0Y2hpbmcgcmVmc3BlY3MgZG8gbm90IGNvbmZ1c2UgdHJhY2tpbmcgdXBkYXRlJyAnCisJY2QgIiREIiAmJgorCWdpdCB1cGRhdGUtcmVmIHJlZnMvb2RkL2xvY2F0aW9uIEhFQUQgJiYKKwkoCisJCWNkIHRocmVlICYmCisJCWdpdCB1cGRhdGUtcmVmIHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyIGJhc2Utb3JpZ2luLW1hc3RlciAmJgorCQlnaXQgY29uZmlnIC0tYWRkIHJlbW90ZS5vcmlnaW4uZmV0Y2ggXAorCQkJcmVmcy9vZGQvbG9jYXRpb246cmVmcy9yZW1vdGVzL29yaWdpbi9vZGQgJiYKKwkJbz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVmcy9yZW1vdGVzL29yaWdpbi9tYXN0ZXIpICYmCisJCWdpdCBmZXRjaCBvcmlnaW4gbWFzdGVyICYmCisJCW49JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vbWFzdGVyKSAmJgorCQl0ZXN0ICIkbyIgIT0gIiRuIiAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvcmVtb3Rlcy9vcmlnaW4vb2RkCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoaW5nIG5vbmV4aXN0ZW50IGJyYW5jaCBieSBtaXN0YWtlIHNob3VsZCBub3Qgc2VndicgJwogCiAJY2QgIiREIiAmJgpkaWZmIC0tZ2l0IGEvdC90NTUyMS1wdWxsLW9wdGlvbnMuc2ggYi90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaAppbmRleCBhYTMxYWJlLi40NTNhYmE1IDEwMDc1NQotLS0gYS90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaAorKysgYi90L3Q1NTIxLXB1bGwtb3B0aW9ucy5zaApAQCAtMTUsMTkgKzE1LDE5IEBACiAJbWtkaXIgY2xvbmVkcSAmJgogCShjZCBjbG9uZWRxICYmIGdpdCBpbml0ICYmCiAJZ2l0IHB1bGwgLXEgIi4uL3BhcmVudCIgPm91dCAyPmVyciAmJgotCXRlc3QgISAtcyBlcnIgJiYKLQl0ZXN0ICEgLXMgb3V0KQorCXRlc3RfbXVzdF9iZV9lbXB0eSBlcnIgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0KQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtcSAtLXJlYmFzZScgJwogCW1rZGlyIGNsb25lZHFyYiAmJgogCShjZCBjbG9uZWRxcmIgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtcSAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCi0JdGVzdCAhIC1zIGVyciAmJgotCXRlc3QgISAtcyBvdXQgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dCAmJgogCWdpdCBwdWxsIC1xIC0tcmViYXNlICIuLi9wYXJlbnQiID5vdXQgMj5lcnIgJiYKLQl0ZXN0ICEgLXMgZXJyICYmCi0JdGVzdCAhIC1zIG91dCkKKwl0ZXN0X211c3RfYmVfZW1wdHkgZXJyICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dCkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwnICcKQEAgLTM1LDcgKzM1LDcgQEAKIAkoY2QgY2xvbmVkICYmIGdpdCBpbml0ICYmCiAJZ2l0IHB1bGwgIi4uL3BhcmVudCIgPm91dCAyPmVyciAmJgogCXRlc3QgLXMgZXJyICYmCi0JdGVzdCAhIC1zIG91dCkKKwl0ZXN0X211c3RfYmVfZW1wdHkgb3V0KQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgcHVsbCAtLXJlYmFzZScgJwpAQCAtNDMsNyArNDMsNyBAQAogCShjZCBjbG9uZWRyYiAmJiBnaXQgaW5pdCAmJgogCWdpdCBwdWxsIC0tcmViYXNlICIuLi9wYXJlbnQiID5vdXQgMj5lcnIgJiYKIAl0ZXN0IC1zIGVyciAmJgotCXRlc3QgISAtcyBvdXQpCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dCkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXYnICcKQEAgLTUxLDcgKzUxLDcgQEAKIAkoY2QgY2xvbmVkdiAmJiBnaXQgaW5pdCAmJgogCWdpdCBwdWxsIC12ICIuLi9wYXJlbnQiID5vdXQgMj5lcnIgJiYKIAl0ZXN0IC1zIGVyciAmJgotCXRlc3QgISAtcyBvdXQpCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dCkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IHB1bGwgLXYgLS1yZWJhc2UnICcKQEAgLTU5LDIyICs1OSwyMiBAQAogCShjZCBjbG9uZWR2cmIgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtdiAtLXJlYmFzZSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCiAJdGVzdCAtcyBlcnIgJiYKLQl0ZXN0ICEgLXMgb3V0KQorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC12IC1xJyAnCiAJbWtkaXIgY2xvbmVkdnEgJiYKIAkoY2QgY2xvbmVkdnEgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtdiAtcSAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCi0JdGVzdCAhIC1zIG91dCAmJgotCXRlc3QgISAtcyBlcnIpCisJdGVzdF9tdXN0X2JlX2VtcHR5IG91dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBlcnIpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBwdWxsIC1xIC12JyAnCiAJbWtkaXIgY2xvbmVkcXYgJiYKIAkoY2QgY2xvbmVkcXYgJiYgZ2l0IGluaXQgJiYKIAlnaXQgcHVsbCAtcSAtdiAiLi4vcGFyZW50IiA+b3V0IDI+ZXJyICYmCi0JdGVzdCAhIC1zIG91dCAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQgJiYKIAl0ZXN0IC1zIGVycikKICcKIApkaWZmIC0tZ2l0IGEvdC90NTUyOC1wdXNoLWRlZmF1bHQuc2ggYi90L3Q1NTI4LXB1c2gtZGVmYXVsdC5zaAppbmRleCA0NzM2ZGE4Li42YTVhYzNhIDEwMDc1NQotLS0gYS90L3Q1NTI4LXB1c2gtZGVmYXVsdC5zaAorKysgYi90L3Q1NTI4LXB1c2gtZGVmYXVsdC5zaApAQCAtMTUsMTcgKzE1LDE5IEBACiAKICMgJDEgPSBsb2NhbCByZXZpc2lvbgogIyAkMiA9IHJlbW90ZSByZXZpc2lvbiAodGVzdGVkIHRvIGJlIGVxdWFsIHRvIHRoZSBsb2NhbCBvbmUpCisjICQzID0gW29wdGlvbmFsXSByZXBvIHRvIGNoZWNrIGZvciBhY3R1YWwgb3V0cHV0IChyZXBvMSBieSBkZWZhdWx0KQogY2hlY2tfcHVzaGVkX2NvbW1pdCAoKSB7CiAJZ2l0IGxvZyAtMSAtLWZvcm1hdD0nJWggJXMnICIkMSIgPmV4cGVjdCAmJgotCWdpdCAtLWdpdC1kaXI9cmVwbzEgbG9nIC0xIC0tZm9ybWF0PSclaCAlcycgIiQyIiA+YWN0dWFsICYmCisJZ2l0IC0tZ2l0LWRpcj0iJHszOi1yZXBvMX0iIGxvZyAtMSAtLWZvcm1hdD0nJWggJXMnICIkMiIgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKIH0KIAogIyAkMSA9IHB1c2guZGVmYXVsdCB2YWx1ZQogIyAkMiA9IGV4cGVjdGVkIHRhcmdldCBicmFuY2ggZm9yIHRoZSBwdXNoCisjICQzID0gW29wdGlvbmFsXSByZXBvIHRvIGNoZWNrIGZvciBhY3R1YWwgb3V0cHV0IChyZXBvMSBieSBkZWZhdWx0KQogdGVzdF9wdXNoX3N1Y2Nlc3MgKCkgewogCWdpdCAtYyBwdXNoLmRlZmF1bHQ9IiQxIiBwdXNoICYmCi0JY2hlY2tfcHVzaGVkX2NvbW1pdCBIRUFEICIkMiIKKwljaGVja19wdXNoZWRfY29tbWl0IEhFQUQgIiQyIiAiJDMiCiB9CiAKICMgJDEgPSBwdXNoLmRlZmF1bHQgdmFsdWUKQEAgLTM3LDYgKzM5LDI2IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogfQogCisjICQxID0gc3VjY2VzcyBvciBmYWlsdXJlCisjICQyID0gcHVzaC5kZWZhdWx0IHZhbHVlCisjICQzID0gYnJhbmNoIHRvIGNoZWNrIGZvciBhY3R1YWwgb3V0cHV0IChtYXN0ZXIgb3IgZm9vKQorIyAkNCA9IFtvcHRpb25hbF0gc3dpdGNoIHRvIHRyaWFuZ3VsYXIgd29ya2Zsb3cKK3Rlc3RfcHVzaGRlZmF1bHRfd29ya2Zsb3cgKCkgeworCXdvcmtmbG93PWNlbnRyYWwKKwlwdXNoZGVmYXVsdD1wYXJlbnQxCisJaWYgdGVzdCAtbiAiJHs0LX0iOyB0aGVuCisJCXdvcmtmbG93PXRyaWFuZ3VsYXIKKwkJcHVzaGRlZmF1bHQ9cGFyZW50MgorCWZpCisJdGVzdF9leHBlY3Rfc3VjY2VzcyAicHVzaC5kZWZhdWx0ID0gJDIgJDEgaW4gJHdvcmtmbG93IHdvcmtmbG93cyIgIgorCQl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSBwYXJlbnQxICYmCisJCXRlc3RfY29uZmlnIGJyYW5jaC5tYXN0ZXIubWVyZ2UgcmVmcy9oZWFkcy9mb28gJiYKKwkJdGVzdF9jb25maWcgcmVtb3RlLnB1c2hkZWZhdWx0ICRwdXNoZGVmYXVsdCAmJgorCQl0ZXN0X2NvbW1pdCBjb21taXQtZm9yLSQyJHs0Ky10cmlhbmd1bGFyfSAmJgorCQl0ZXN0X3B1c2hfJDEgJDIgJDMgJHs0K3JlcG8yfQorCSIKK30KKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnInVwc3RyZWFtIiBwdXNoZXMgdG8gY29uZmlndXJlZCB1cHN0cmVhbScgJwogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSBwYXJlbnQxICYmCkBAIC00OCw3ICs3MCw2IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICcidXBzdHJlYW0iIGRvZXMgbm90IHB1c2ggb24gdW5jb25maWd1cmVkIHJlbW90ZScgJwogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X3VuY29uZmlnIGJyYW5jaC5tYXN0ZXIucmVtb3RlICYmCi0JdGVzdF9jb25maWcgcHVzaC5kZWZhdWx0IHVwc3RyZWFtICYmCiAJdGVzdF9jb21taXQgdGhyZWUgJiYKIAl0ZXN0X3B1c2hfZmFpbHVyZSB1cHN0cmVhbQogJwpAQCAtNTcsNyArNzgsNiBAQAogCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKIAl0ZXN0X2NvbmZpZyBicmFuY2gubWFzdGVyLnJlbW90ZSBwYXJlbnQxICYmCiAJdGVzdF91bmNvbmZpZyBicmFuY2gubWFzdGVyLm1lcmdlICYmCi0JdGVzdF9jb25maWcgcHVzaC5kZWZhdWx0IHVwc3RyZWFtCiAJdGVzdF9jb21taXQgZm91ciAmJgogCXRlc3RfcHVzaF9mYWlsdXJlIHVwc3RyZWFtCiAnCkBAIC0xMTUsNCArMTM1LDQxIEBACiAJdGVzdF9jbXAgZXhwZWN0LW90aGVyLW5hbWUgYWN0dWFsLW90aGVyLW5hbWUKICcKIAorIyBXZSBhcmUgb24gJ21hc3RlcicsIHdoaWNoIGludGVncmF0ZXMgd2l0aCAnZm9vJyBmcm9tIHBhcmVudDEKKyMgcmVtb3RlIChzZXQgaW4gdGVzdF9wdXNoZGVmYXVsdF93b3JrZmxvdyBoZWxwZXIpLiAgUHVzaCB0bworIyBwYXJlbnQxIGluIGNlbnRyYWxpemVkLCBhbmQgcHVzaCB0byBwYXJlbnQyIGluIHRyaWFuZ3VsYXIgd29ya2Zsb3cuCisjIFRoZSBwYXJlbnQxIHJlcG9zaXRvcnkgaGFzICdtYXN0ZXInIGFuZCAnZm9vJyBicmFuY2hlcywgd2hpbGUKKyMgdGhlIHBhcmVudDIgcmVwb3NpdG9yeSBoYXMgb25seSAnbWFzdGVyJyBicmFuY2guCisjCisjIHRlc3RfcHVzaGRlZmF1bHRfd29ya2Zsb3coKSBhcmd1bWVudHM6CisjICQxID0gc3VjY2VzcyBvciBmYWlsdXJlCisjICQyID0gcHVzaC5kZWZhdWx0IHZhbHVlCisjICQzID0gYnJhbmNoIHRvIGNoZWNrIGZvciBhY3R1YWwgb3V0cHV0IChtYXN0ZXIgb3IgZm9vKQorIyAkNCA9IFtvcHRpb25hbF0gc3dpdGNoIHRvIHRyaWFuZ3VsYXIgd29ya2Zsb3cKKworIyB1cGRhdGUgcGFyZW50MSdzIG1hc3RlciAod2hpY2ggaXMgbm90IG91ciB1cHN0cmVhbSkKK3Rlc3RfcHVzaGRlZmF1bHRfd29ya2Zsb3cgc3VjY2VzcyBjdXJyZW50IG1hc3RlcgorCisjIHVwZGF0ZSBwYXJlbnQxJ3MgZm9vICh3aGljaCBpcyBvdXIgdXBzdHJlYW0pCit0ZXN0X3B1c2hkZWZhdWx0X3dvcmtmbG93IHN1Y2Nlc3MgdXBzdHJlYW0gZm9vCisKKyMgdXBzcmVhbSBpcyBmb28gd2hpY2ggaXMgbm90IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGJyYW5jaAordGVzdF9wdXNoZGVmYXVsdF93b3JrZmxvdyBmYWlsdXJlIHNpbXBsZSBtYXN0ZXIKKworIyBtYXN0ZXIgYW5kIGZvbyBhcmUgdXBkYXRlZAordGVzdF9wdXNoZGVmYXVsdF93b3JrZmxvdyBzdWNjZXNzIG1hdGNoaW5nIG1hc3RlcgorCisjIG1hc3RlciBpcyB1cGRhdGVkCit0ZXN0X3B1c2hkZWZhdWx0X3dvcmtmbG93IHN1Y2Nlc3MgY3VycmVudCBtYXN0ZXIgdHJpYW5ndWxhcgorCisjIHVwc3RyZWFtIG1vZGUgY2Fubm90IGJlIHVzZWQgaW4gdHJpYW5ndWxhcgordGVzdF9wdXNoZGVmYXVsdF93b3JrZmxvdyBmYWlsdXJlIHVwc3RyZWFtIGZvbyB0cmlhbmd1bGFyCisKKyMgaW4gdHJpYW5ndWxhciwgJ3NpbXBsZScgd29ya3MgYXMgJ2N1cnJlbnQnIGFuZCB1cGRhdGUgdGhlIGJyYW5jaAorIyB3aXRoIHRoZSBzYW1lIG5hbWUuCit0ZXN0X3B1c2hkZWZhdWx0X3dvcmtmbG93IHN1Y2Nlc3Mgc2ltcGxlIG1hc3RlciB0cmlhbmd1bGFyCisKKyMgbWFzdGVyIGlzIHVwZGF0ZWQgKHBhcmVudDIgZG9lcyBub3QgaGF2ZSBmb28pCit0ZXN0X3B1c2hkZWZhdWx0X3dvcmtmbG93IHN1Y2Nlc3MgbWF0Y2hpbmcgbWFzdGVyIHRyaWFuZ3VsYXIKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q1NTYwLWh0dHAtYmFja2VuZC1ub3NlcnZlci5zaCBiL3QvdDU1NjAtaHR0cC1iYWNrZW5kLW5vc2VydmVyLnNoCmluZGV4IGVmOThkOTUuLjliZTlhZTMgMTAwNzU1Ci0tLSBhL3QvdDU1NjAtaHR0cC1iYWNrZW5kLW5vc2VydmVyLnNoCisrKyBiL3QvdDU1NjAtaHR0cC1iYWNrZW5kLW5vc2VydmVyLnNoCkBAIC01LDcgKzUsNyBAQAogCiBIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEg9IiRUUkFTSF9ESVJFQ1RPUlkiCiAKLXRlc3RfaGF2ZV9wcmVyZXEgTUlOR1cgJiYgZXhwb3J0IEdSRVBfT1BUSU9OUz0tVQordGVzdF9oYXZlX3ByZXJlcSBHUkVQX1NUUklQU19DUiAmJiBleHBvcnQgR1JFUF9PUFRJT05TPS1VCiAKIHJ1bl9iYWNrZW5kKCkgewogCWVjaG8gIiQyIiB8CmRpZmYgLS1naXQgYS90L3Q1NjAxLWNsb25lLnNoIGIvdC90NTYwMS1jbG9uZS5zaAppbmRleCA2Nzg2OWI0Li4wNjI5MTQ5IDEwMDc1NQotLS0gYS90L3Q1NjAxLWNsb25lLnNoCisrKyBiL3QvdDU2MDEtY2xvbmUuc2gKQEAgLTI4MCw0ICsyODAsOSBAQAogCXRlc3RfY21wIGZldGNoLmV4cGVjdGVkIGZldGNoLmFjdHVhbAogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzIE5PVF9NSU5HVyxOT1RfQ1lHV0lOICdjbG9uZSBsb2NhbCBwYXRoIGZvbzpiYXInICcKKwljcCAtUiBzcmMgImZvbzpiYXIiICYmCisJZ2l0IGNsb25lICIuL2ZvbzpiYXIiIGZvb2JhcgorJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDU3MDItY2xvbmUtb3B0aW9ucy5zaCBiL3QvdDU3MDItY2xvbmUtb3B0aW9ucy5zaAppbmRleCAwMmNiMDI0Li44NWNhZGZhIDEwMDc1NQotLS0gYS90L3Q1NzAyLWNsb25lLW9wdGlvbnMuc2gKKysrIGIvdC90NTcwMi1jbG9uZS1vcHRpb25zLnNoCkBAIC0yMiw3ICsyMiw3IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWRpcmVjdGVkIGNsb25lJyAnCiAKIAlnaXQgY2xvbmUgImZpbGU6Ly8kKHB3ZCkvcGFyZW50IiBjbG9uZS1yZWRpcmVjdGVkID5vdXQgMj5lcnIgJiYKLQl0ZXN0ICEgLXMgZXJyCisJdGVzdF9tdXN0X2JlX2VtcHR5IGVycgogCiAnCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWRpcmVjdGVkIGNsb25lIC12JyAnCmRpZmYgLS1naXQgYS90L3Q1NzEwLWluZm8tYWx0ZXJuYXRlLnNoIGIvdC90NTcxMC1pbmZvLWFsdGVybmF0ZS5zaAppbmRleCA4OTU2YzIxLi41YTZlNDlkIDEwMDc1NQotLS0gYS90L3Q1NzEwLWluZm8tYWx0ZXJuYXRlLnNoCisrKyBiL3QvdDU3MTAtaW5mby1hbHRlcm5hdGUuc2gKQEAgLTU4LDcgKzU4LDEzIEBACiBnaXQgY2xvbmUgLWwgLXMgRCBFICYmCiBnaXQgY2xvbmUgLWwgLXMgRSBGICYmCiBnaXQgY2xvbmUgLWwgLXMgRiBHICYmCi10ZXN0X211c3RfZmFpbCBnaXQgY2xvbmUgLS1iYXJlIC1sIC1zIEcgSCcKK2dpdCBjbG9uZSAtLWJhcmUgLWwgLXMgRyBIJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnZhbGlkaXR5IG9mIGRlZXBlc3QgcmVwb3NpdG9yeScgXAorJ2NkIEggJiYgeworCXRlc3RfdmFsaWRfcmVwbworCXRlc3QgJD8gLW5lIDAKK30nCiAKIGNkICIkYmFzZV9kaXIiCiAKZGlmZiAtLWdpdCBhL3QvdDU4MDEtcmVtb3RlLWhlbHBlcnMuc2ggYi90L3Q1ODAxLXJlbW90ZS1oZWxwZXJzLnNoCmluZGV4IGRiYjAyZTIuLjhjNGM1MzkgMTAwNzU1Ci0tLSBhL3QvdDU4MDEtcmVtb3RlLWhlbHBlcnMuc2gKKysrIGIvdC90NTgwMS1yZW1vdGUtaGVscGVycy5zaApAQCAtOCwxMSArOCw2IEBACiAuIC4vdGVzdC1saWIuc2gKIC4gIiRURVNUX0RJUkVDVE9SWSIvbGliLWdwZy5zaAogCi1pZiAhIHR5cGUgIiR7QkFTSC1iYXNofSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0Jc2tpcF9hbGw9J3NraXBwaW5nIHJlbW90ZS10ZXN0Z2l0IHRlc3RzLCBiYXNoIG5vdCBhdmFpbGFibGUnCi0JdGVzdF9kb25lCi1maQotCiBjb21wYXJlX3JlZnMoKSB7CiAJZ2l0IC0tZ2l0LWRpcj0iJDEvLmdpdCIgcmV2LXBhcnNlIC0tdmVyaWZ5ICQyID5leHBlY3QgJiYKIAlnaXQgLS1naXQtZGlyPSIkMy8uZ2l0IiByZXYtcGFyc2UgLS12ZXJpZnkgJDQgPmFjdHVhbCAmJgpAQCAtMTAxLDM5ICs5NiwyOCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjbG9uaW5nIHdpdGhvdXQgcmVmc3BlYycgJwogCUdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDPSIiIFwKLQlnaXQgY2xvbmUgInRlc3RnaXQ6OiR7UFdEfS9zZXJ2ZXIiIGxvY2FsMiAmJgorCWdpdCBjbG9uZSAidGVzdGdpdDo6JHtQV0R9L3NlcnZlciIgbG9jYWwyIDI+ZXJyb3IgJiYKKwlncmVwICJUaGlzIHJlbW90ZSBoZWxwZXIgc2hvdWxkIGltcGxlbWVudCByZWZzcGVjIGNhcGFiaWxpdHkiIGVycm9yICYmCiAJY29tcGFyZV9yZWZzIGxvY2FsMiBIRUFEIHNlcnZlciBIRUFECiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcgd2l0aG91dCByZWZzcGVjcycgJwogCShjZCBsb2NhbDIgJiYKIAlnaXQgcmVzZXQgLS1oYXJkICYmCi0JR0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUM9IiIgZ2l0IHB1bGwpICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUM9IiIgZ2l0IHB1bGwgMj4uLi9lcnJvcikgJiYKKwlncmVwICJUaGlzIHJlbW90ZSBoZWxwZXIgc2hvdWxkIGltcGxlbWVudCByZWZzcGVjIGNhcGFiaWxpdHkiIGVycm9yICYmCiAJY29tcGFyZV9yZWZzIGxvY2FsMiBIRUFEIHNlcnZlciBIRUFECiAnCiAKLXRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3B1c2hpbmcgd2l0aG91dCByZWZzcGVjcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaGluZyB3aXRob3V0IHJlZnNwZWNzJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkICIoY2QgbG9jYWwyICYmIGdpdCByZXNldCAtLWhhcmQgb3JpZ2luKSIgJiYKIAkoY2QgbG9jYWwyICYmCiAJZWNobyBjb250ZW50ID4+ZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLW0gdGVuICYmCi0JR0lUX1JFTU9URV9URVNUR0lUX1JFRlNQRUM9IiIgZ2l0IHB1c2gpICYmCi0JY29tcGFyZV9yZWZzIGxvY2FsMiBIRUFEIHNlcnZlciBIRUFECi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1bGxpbmcgd2l0aCBzdHJhaWdodCByZWZzcGVjJyAnCi0JKGNkIGxvY2FsMiAmJgotCUdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDPSIqOioiIGdpdCBwdWxsKSAmJgotCWNvbXBhcmVfcmVmcyBsb2NhbDIgSEVBRCBzZXJ2ZXIgSEVBRAotJwotCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdwdXNoaW5nIHdpdGggc3RyYWlnaHQgcmVmc3BlYycgJwotCXRlc3Rfd2hlbl9maW5pc2hlZCAiKGNkIGxvY2FsMiAmJiBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbikiICYmCi0JKGNkIGxvY2FsMiAmJgotCWVjaG8gY29udGVudCA+PmZpbGUgJiYKLQlnaXQgY29tbWl0IC1hIC1tIGVsZXZlbiAmJgotCUdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDPSIqOioiIGdpdCBwdXNoKSAmJgotCWNvbXBhcmVfcmVmcyBsb2NhbDIgSEVBRCBzZXJ2ZXIgSEVBRAorCUdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDPSIiICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9SRUZTUEVDICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IHB1c2ggMj4uLi9lcnJvcikgJiYKKwlncmVwICJyZW1vdGUtaGVscGVyIGRvZXNuLnQgc3VwcG9ydCBwdXNoOyByZWZzcGVjIG5lZWRlZCIgZXJyb3IKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHVsbGluZyB3aXRob3V0IG1hcmtzJyAnCkBAIC0xODYsNiArMTcwLDUwIEBACiAJY29tcGFyZV9yZWZzIGxvY2FsIHNpZ25lZC10YWctMiBzZXJ2ZXIgc2lnbmVkLXRhZy0yCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3B1c2ggdXBkYXRlIHJlZnMnICcKKwkoY2QgbG9jYWwgJiYKKwlnaXQgY2hlY2tvdXQgLWIgdXBkYXRlIG1hc3RlciAmJgorCWVjaG8gdXBkYXRlID4+ZmlsZSAmJgorCWdpdCBjb21taXQgLWEgLW0gdXBkYXRlICYmCisJZ2l0IHB1c2ggb3JpZ2luIHVwZGF0ZSAmJgorCWdpdCByZXYtcGFyc2UgLS12ZXJpZnkgcmVtb3Rlcy9vcmlnaW4vdXBkYXRlID5leHBlY3QgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRlc3RnaXQvb3JpZ2luL2hlYWRzL3VwZGF0ZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHVzaCB1cGRhdGUgcmVmcyBmYWlsdXJlJyAnCisJKGNkIGxvY2FsICYmCisJZ2l0IGNoZWNrb3V0IHVwZGF0ZSAmJgorCWVjaG8gInVwZGF0ZSBmYWlsIiA+PmZpbGUgJiYKKwlnaXQgY29tbWl0IC1hIC1tICJ1cGRhdGUgZmFpbCIgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRlc3RnaXQvb3JpZ2luL2hlYWRzL3VwZGF0ZSA+ZXhwZWN0ICYmCisJR0lUX1JFTU9URV9URVNUR0lUX1BVU0hfRVJST1I9Im5vbi1mYXN0IGZvcndhcmQiICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9QVVNIX0VSUk9SICYmCisJdGVzdF9leHBlY3RfY29kZSAxIGdpdCBwdXNoIG9yaWdpbiB1cGRhdGUgJiYKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHRlc3RnaXQvb3JpZ2luL2hlYWRzL3VwZGF0ZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvcGVyIGZhaWx1cmUgY2hlY2tzIGZvciBmZXRjaGluZycgJworCShHSVRfUkVNT1RFX1RFU1RHSVRfRkFJTFVSRT0xICYmCisJZXhwb3J0IEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFICYmCisJY2QgbG9jYWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgZmV0Y2ggMj4gZXJyb3IgJiYKKwljYXQgZXJyb3IgJiYKKwlncmVwIC1xICJFcnJvciB3aGlsZSBydW5uaW5nIGZhc3QtaW1wb3J0IiBlcnJvcgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvcGVyIGZhaWx1cmUgY2hlY2tzIGZvciBwdXNoaW5nJyAnCisJKEdJVF9SRU1PVEVfVEVTVEdJVF9GQUlMVVJFPTEgJiYKKwlleHBvcnQgR0lUX1JFTU9URV9URVNUR0lUX0ZBSUxVUkUgJiYKKwljZCBsb2NhbCAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBwdXNoIC0tYWxsCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwdXNoIG1lc3NhZ2VzJyAnCiAJKGNkIGxvY2FsICYmCiAJZ2l0IGNoZWNrb3V0IC1iIG5ld19icmFuY2ggbWFzdGVyICYmCmRpZmYgLS1naXQgYS90L3Q2MDAyLXJldi1saXN0LWJpc2VjdC5zaCBiL3QvdDYwMDItcmV2LWxpc3QtYmlzZWN0LnNoCmluZGV4IGZiMDc1MzYuLjQzYWQ3NzIgMTAwNzU1Ci0tLSBhL3QvdDYwMDItcmV2LWxpc3QtYmlzZWN0LnNoCisrKyBiL3QvdDYwMDItcmV2LWxpc3QtYmlzZWN0LnNoCkBAIC0zOSwyNSArMzksMjUgQEAKIGRhdGUgPnBhdGgwCiBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIHBhdGgwCiBzYXZlX3RhZyB0cmVlIGdpdCB3cml0ZS10cmVlCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMCIgaGlkZV9lcnJvciBzYXZlX3RhZyByb290IHVuaXF1ZV9jb21taXQgcm9vdCB0cmVlCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMSIgc2F2ZV90YWcgbDAgdW5pcXVlX2NvbW1pdCBsMCB0cmVlIC1wIHJvb3QKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjAyIiBzYXZlX3RhZyBsMSB1bmlxdWVfY29tbWl0IGwxIHRyZWUgLXAgbDAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjAzIiBzYXZlX3RhZyBsMiB1bmlxdWVfY29tbWl0IGwyIHRyZWUgLXAgbDEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA0IiBzYXZlX3RhZyBhMCB1bmlxdWVfY29tbWl0IGEwIHRyZWUgLXAgbDIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA1IiBzYXZlX3RhZyBhMSB1bmlxdWVfY29tbWl0IGExIHRyZWUgLXAgYTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA2IiBzYXZlX3RhZyBiMSB1bmlxdWVfY29tbWl0IGIxIHRyZWUgLXAgYTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA3IiBzYXZlX3RhZyBjMSB1bmlxdWVfY29tbWl0IGMxIHRyZWUgLXAgYjEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA4IiBzYXZlX3RhZyBiMiB1bmlxdWVfY29tbWl0IGIyIHRyZWUgLXAgYjEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA5IiBzYXZlX3RhZyBiMyB1bmlxdWVfY29tbWl0IGIyIHRyZWUgLXAgYjIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEwIiBzYXZlX3RhZyBjMiB1bmlxdWVfY29tbWl0IGMyIHRyZWUgLXAgYzEgLXAgYjIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjExIiBzYXZlX3RhZyBjMyB1bmlxdWVfY29tbWl0IGMzIHRyZWUgLXAgYzIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEyIiBzYXZlX3RhZyBhMiB1bmlxdWVfY29tbWl0IGEyIHRyZWUgLXAgYTEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEzIiBzYXZlX3RhZyBhMyB1bmlxdWVfY29tbWl0IGEzIHRyZWUgLXAgYTIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE0IiBzYXZlX3RhZyBiNCB1bmlxdWVfY29tbWl0IGI0IHRyZWUgLXAgYjMgLXAgYTMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE1IiBzYXZlX3RhZyBhNCB1bmlxdWVfY29tbWl0IGE0IHRyZWUgLXAgYTMgLXAgYjQgLXAgYzMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE2IiBzYXZlX3RhZyBsMyB1bmlxdWVfY29tbWl0IGwzIHRyZWUgLXAgYTQKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE3IiBzYXZlX3RhZyBsNCB1bmlxdWVfY29tbWl0IGw0IHRyZWUgLXAgbDMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE4IiBzYXZlX3RhZyBsNSB1bmlxdWVfY29tbWl0IGw1IHRyZWUgLXAgbDQKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowMCIgaGlkZV9lcnJvciBzYXZlX3RhZyByb290IHVuaXF1ZV9jb21taXQgcm9vdCB0cmVlCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDEiIHNhdmVfdGFnIGwwIHVuaXF1ZV9jb21taXQgbDAgdHJlZSAtcCByb290Citvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDIiIHNhdmVfdGFnIGwxIHVuaXF1ZV9jb21taXQgbDEgdHJlZSAtcCBsMAorb25fY29tbWl0dGVyX2RhdGUgIjAwOjAzIiBzYXZlX3RhZyBsMiB1bmlxdWVfY29tbWl0IGwyIHRyZWUgLXAgbDEKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowNCIgc2F2ZV90YWcgYTAgdW5pcXVlX2NvbW1pdCBhMCB0cmVlIC1wIGwyCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDUiIHNhdmVfdGFnIGExIHVuaXF1ZV9jb21taXQgYTEgdHJlZSAtcCBhMAorb25fY29tbWl0dGVyX2RhdGUgIjAwOjA2IiBzYXZlX3RhZyBiMSB1bmlxdWVfY29tbWl0IGIxIHRyZWUgLXAgYTAKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowNyIgc2F2ZV90YWcgYzEgdW5pcXVlX2NvbW1pdCBjMSB0cmVlIC1wIGIxCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDgiIHNhdmVfdGFnIGIyIHVuaXF1ZV9jb21taXQgYjIgdHJlZSAtcCBiMQorb25fY29tbWl0dGVyX2RhdGUgIjAwOjA5IiBzYXZlX3RhZyBiMyB1bmlxdWVfY29tbWl0IGIyIHRyZWUgLXAgYjIKK29uX2NvbW1pdHRlcl9kYXRlICIwMDoxMCIgc2F2ZV90YWcgYzIgdW5pcXVlX2NvbW1pdCBjMiB0cmVlIC1wIGMxIC1wIGIyCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MTEiIHNhdmVfdGFnIGMzIHVuaXF1ZV9jb21taXQgYzMgdHJlZSAtcCBjMgorb25fY29tbWl0dGVyX2RhdGUgIjAwOjEyIiBzYXZlX3RhZyBhMiB1bmlxdWVfY29tbWl0IGEyIHRyZWUgLXAgYTEKK29uX2NvbW1pdHRlcl9kYXRlICIwMDoxMyIgc2F2ZV90YWcgYTMgdW5pcXVlX2NvbW1pdCBhMyB0cmVlIC1wIGEyCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MTQiIHNhdmVfdGFnIGI0IHVuaXF1ZV9jb21taXQgYjQgdHJlZSAtcCBiMyAtcCBhMworb25fY29tbWl0dGVyX2RhdGUgIjAwOjE1IiBzYXZlX3RhZyBhNCB1bmlxdWVfY29tbWl0IGE0IHRyZWUgLXAgYTMgLXAgYjQgLXAgYzMKK29uX2NvbW1pdHRlcl9kYXRlICIwMDoxNiIgc2F2ZV90YWcgbDMgdW5pcXVlX2NvbW1pdCBsMyB0cmVlIC1wIGE0Citvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MTciIHNhdmVfdGFnIGw0IHVuaXF1ZV9jb21taXQgbDQgdHJlZSAtcCBsMworb25fY29tbWl0dGVyX2RhdGUgIjAwOjE4IiBzYXZlX3RhZyBsNSB1bmlxdWVfY29tbWl0IGw1IHRyZWUgLXAgbDQKIGdpdCB1cGRhdGUtcmVmIEhFQUQgJCh0YWcgbDUpCiAKIApAQCAtOTAsMjkgKzkwLDI5IEBACiAjICAgICBGCiAKIAotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MDAiIGhpZGVfZXJyb3Igc2F2ZV90YWcgRiB1bmlxdWVfY29tbWl0IEYgdHJlZQotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MDEiIHNhdmVfdGFnIGU4IHVuaXF1ZV9jb21taXQgZTggdHJlZSAtcCBGCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMiIgc2F2ZV90YWcgZTcgdW5pcXVlX2NvbW1pdCBlNyB0cmVlIC1wIGU4Ci1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMyIgc2F2ZV90YWcgZTYgdW5pcXVlX2NvbW1pdCBlNiB0cmVlIC1wIGU3Ci1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowNCIgc2F2ZV90YWcgZTUgdW5pcXVlX2NvbW1pdCBlNSB0cmVlIC1wIGU2Ci1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowNSIgc2F2ZV90YWcgZjQgdW5pcXVlX2NvbW1pdCBmNCB0cmVlIC1wIEYKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA2IiBzYXZlX3RhZyBmMyB1bmlxdWVfY29tbWl0IGYzIHRyZWUgLXAgZjQKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA3IiBzYXZlX3RhZyBmMiB1bmlxdWVfY29tbWl0IGYyIHRyZWUgLXAgZjMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA4IiBzYXZlX3RhZyBmMSB1bmlxdWVfY29tbWl0IGYxIHRyZWUgLXAgZjIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA5IiBzYXZlX3RhZyBlNCB1bmlxdWVfY29tbWl0IGU0IHRyZWUgLXAgZTUKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEwIiBzYXZlX3RhZyBlMyB1bmlxdWVfY29tbWl0IGUzIHRyZWUgLXAgZTQKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjExIiBzYXZlX3RhZyBlMiB1bmlxdWVfY29tbWl0IGUyIHRyZWUgLXAgZTMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEyIiBzYXZlX3RhZyBlMSB1bmlxdWVfY29tbWl0IGUxIHRyZWUgLXAgZTIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEzIiBzYXZlX3RhZyBFIHVuaXF1ZV9jb21taXQgRSB0cmVlIC1wIGUxIC1wIGYxCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDAiIGhpZGVfZXJyb3Igc2F2ZV90YWcgRiB1bmlxdWVfY29tbWl0IEYgdHJlZQorb25fY29tbWl0dGVyX2RhdGUgIjAwOjAxIiBzYXZlX3RhZyBlOCB1bmlxdWVfY29tbWl0IGU4IHRyZWUgLXAgRgorb25fY29tbWl0dGVyX2RhdGUgIjAwOjAyIiBzYXZlX3RhZyBlNyB1bmlxdWVfY29tbWl0IGU3IHRyZWUgLXAgZTgKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowMyIgc2F2ZV90YWcgZTYgdW5pcXVlX2NvbW1pdCBlNiB0cmVlIC1wIGU3Citvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDQiIHNhdmVfdGFnIGU1IHVuaXF1ZV9jb21taXQgZTUgdHJlZSAtcCBlNgorb25fY29tbWl0dGVyX2RhdGUgIjAwOjA1IiBzYXZlX3RhZyBmNCB1bmlxdWVfY29tbWl0IGY0IHRyZWUgLXAgRgorb25fY29tbWl0dGVyX2RhdGUgIjAwOjA2IiBzYXZlX3RhZyBmMyB1bmlxdWVfY29tbWl0IGYzIHRyZWUgLXAgZjQKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowNyIgc2F2ZV90YWcgZjIgdW5pcXVlX2NvbW1pdCBmMiB0cmVlIC1wIGYzCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDgiIHNhdmVfdGFnIGYxIHVuaXF1ZV9jb21taXQgZjEgdHJlZSAtcCBmMgorb25fY29tbWl0dGVyX2RhdGUgIjAwOjA5IiBzYXZlX3RhZyBlNCB1bmlxdWVfY29tbWl0IGU0IHRyZWUgLXAgZTUKK29uX2NvbW1pdHRlcl9kYXRlICIwMDoxMCIgc2F2ZV90YWcgZTMgdW5pcXVlX2NvbW1pdCBlMyB0cmVlIC1wIGU0Citvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MTEiIHNhdmVfdGFnIGUyIHVuaXF1ZV9jb21taXQgZTIgdHJlZSAtcCBlMworb25fY29tbWl0dGVyX2RhdGUgIjAwOjEyIiBzYXZlX3RhZyBlMSB1bmlxdWVfY29tbWl0IGUxIHRyZWUgLXAgZTIKK29uX2NvbW1pdHRlcl9kYXRlICIwMDoxMyIgc2F2ZV90YWcgRSB1bmlxdWVfY29tbWl0IEUgdHJlZSAtcCBlMSAtcCBmMQogCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMCIgaGlkZV9lcnJvciBzYXZlX3RhZyBVIHVuaXF1ZV9jb21taXQgVSB0cmVlCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMSIgc2F2ZV90YWcgdTAgdW5pcXVlX2NvbW1pdCB1MCB0cmVlIC1wIFUKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjAxIiBzYXZlX3RhZyB1MSB1bmlxdWVfY29tbWl0IHUxIHRyZWUgLXAgdTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjAyIiBzYXZlX3RhZyB1MiB1bmlxdWVfY29tbWl0IHUyIHRyZWUgLXAgdTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjAzIiBzYXZlX3RhZyB1MyB1bmlxdWVfY29tbWl0IHUzIHRyZWUgLXAgdTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA0IiBzYXZlX3RhZyB1NCB1bmlxdWVfY29tbWl0IHU0IHRyZWUgLXAgdTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA1IiBzYXZlX3RhZyB1NSB1bmlxdWVfY29tbWl0IHU1IHRyZWUgLXAgdTAKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA2IiBzYXZlX3RhZyBWIHVuaXF1ZV9jb21taXQgViB0cmVlIC1wIHUxIC1wIHUyIC1wIHUzIC1wIHU0IC1wIHU1Citvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDAiIGhpZGVfZXJyb3Igc2F2ZV90YWcgVSB1bmlxdWVfY29tbWl0IFUgdHJlZQorb25fY29tbWl0dGVyX2RhdGUgIjAwOjAxIiBzYXZlX3RhZyB1MCB1bmlxdWVfY29tbWl0IHUwIHRyZWUgLXAgVQorb25fY29tbWl0dGVyX2RhdGUgIjAwOjAxIiBzYXZlX3RhZyB1MSB1bmlxdWVfY29tbWl0IHUxIHRyZWUgLXAgdTAKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowMiIgc2F2ZV90YWcgdTIgdW5pcXVlX2NvbW1pdCB1MiB0cmVlIC1wIHUwCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDMiIHNhdmVfdGFnIHUzIHVuaXF1ZV9jb21taXQgdTMgdHJlZSAtcCB1MAorb25fY29tbWl0dGVyX2RhdGUgIjAwOjA0IiBzYXZlX3RhZyB1NCB1bmlxdWVfY29tbWl0IHU0IHRyZWUgLXAgdTAKK29uX2NvbW1pdHRlcl9kYXRlICIwMDowNSIgc2F2ZV90YWcgdTUgdW5pcXVlX2NvbW1pdCB1NSB0cmVlIC1wIHUwCitvbl9jb21taXR0ZXJfZGF0ZSAiMDA6MDYiIHNhdmVfdGFnIFYgdW5pcXVlX2NvbW1pdCBWIHRyZWUgLXAgdTEgLXAgdTIgLXAgdTMgLXAgdTQgLXAgdTUKIAogdGVzdF9zZXF1ZW5jZSgpCiB7CmRpZmYgLS1naXQgYS90L3Q2MDAzLXJldi1saXN0LXRvcG8tb3JkZXIuc2ggYi90L3Q2MDAzLXJldi1saXN0LXRvcG8tb3JkZXIuc2gKaW5kZXggZTRjNTJiMC4uMjRkMTgzNiAxMDA3NTUKLS0tIGEvdC90NjAwMy1yZXYtbGlzdC10b3BvLW9yZGVyLnNoCisrKyBiL3QvdDYwMDMtcmV2LWxpc3QtdG9wby1vcmRlci5zaApAQCAtMTYsMzkgKzE2LDM0IEBACiBkYXRlID5wYXRoMAogZ2l0IHVwZGF0ZS1pbmRleCAtLWFkZCBwYXRoMAogc2F2ZV90YWcgdHJlZSBnaXQgd3JpdGUtdHJlZQotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MDAiIGhpZGVfZXJyb3Igc2F2ZV90YWcgcm9vdCB1bmlxdWVfY29tbWl0IHJvb3QgdHJlZQotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MDEiIHNhdmVfdGFnIGwwIHVuaXF1ZV9jb21taXQgbDAgdHJlZSAtcCByb290Ci1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMiIgc2F2ZV90YWcgbDEgdW5pcXVlX2NvbW1pdCBsMSB0cmVlIC1wIGwwCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowMyIgc2F2ZV90YWcgbDIgdW5pcXVlX2NvbW1pdCBsMiB0cmVlIC1wIGwxCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowNCIgc2F2ZV90YWcgYTAgdW5pcXVlX2NvbW1pdCBhMCB0cmVlIC1wIGwyCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowNSIgc2F2ZV90YWcgYTEgdW5pcXVlX2NvbW1pdCBhMSB0cmVlIC1wIGEwCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowNiIgc2F2ZV90YWcgYjEgdW5pcXVlX2NvbW1pdCBiMSB0cmVlIC1wIGEwCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowNyIgc2F2ZV90YWcgYzEgdW5pcXVlX2NvbW1pdCBjMSB0cmVlIC1wIGIxCi1vbl9jb21taXR0ZXJfZGF0ZSAiMTk3MS0wOC0xNiAwMDowMDowOCIgYXNfYXV0aG9yIGZvb2JhckBleGFtcGxlLmNvbSBzYXZlX3RhZyBiMiB1bmlxdWVfY29tbWl0IGIyIHRyZWUgLXAgYjEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjA5IiBzYXZlX3RhZyBiMyB1bmlxdWVfY29tbWl0IGIzIHRyZWUgLXAgYjIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEwIiBzYXZlX3RhZyBjMiB1bmlxdWVfY29tbWl0IGMyIHRyZWUgLXAgYzEgLXAgYjIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjExIiBzYXZlX3RhZyBjMyB1bmlxdWVfY29tbWl0IGMzIHRyZWUgLXAgYzIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEyIiBzYXZlX3RhZyBhMiB1bmlxdWVfY29tbWl0IGEyIHRyZWUgLXAgYTEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjEzIiBzYXZlX3RhZyBhMyB1bmlxdWVfY29tbWl0IGEzIHRyZWUgLXAgYTIKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE0IiBzYXZlX3RhZyBiNCB1bmlxdWVfY29tbWl0IGI0IHRyZWUgLXAgYjMgLXAgYTMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE1IiBzYXZlX3RhZyBhNCB1bmlxdWVfY29tbWl0IGE0IHRyZWUgLXAgYTMgLXAgYjQgLXAgYzMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE2IiBzYXZlX3RhZyBsMyB1bmlxdWVfY29tbWl0IGwzIHRyZWUgLXAgYTQKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE3IiBzYXZlX3RhZyBsNCB1bmlxdWVfY29tbWl0IGw0IHRyZWUgLXAgbDMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE4IiBzYXZlX3RhZyBsNSB1bmlxdWVfY29tbWl0IGw1IHRyZWUgLXAgbDQKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjE5IiBzYXZlX3RhZyBtMSB1bmlxdWVfY29tbWl0IG0xIHRyZWUgLXAgYTQgLXAgYzMKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjIwIiBzYXZlX3RhZyBtMiB1bmlxdWVfY29tbWl0IG0yIHRyZWUgLXAgYzMgLXAgYTQKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjIxIiBoaWRlX2Vycm9yIHNhdmVfdGFnIGFsdF9yb290IHVuaXF1ZV9jb21taXQgYWx0X3Jvb3QgdHJlZQotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MjIiIHNhdmVfdGFnIHIwIHVuaXF1ZV9jb21taXQgcjAgdHJlZSAtcCBhbHRfcm9vdAotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MjMiIHNhdmVfdGFnIHIxIHVuaXF1ZV9jb21taXQgcjEgdHJlZSAtcCByMAotb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MjQiIHNhdmVfdGFnIGw1cjEgdW5pcXVlX2NvbW1pdCBsNXIxIHRyZWUgLXAgbDUgLXAgcjEKLW9uX2NvbW1pdHRlcl9kYXRlICIxOTcxLTA4LTE2IDAwOjAwOjI1IiBzYXZlX3RhZyByMWw1IHVuaXF1ZV9jb21taXQgcjFsNSB0cmVlIC1wIHIxIC1wIGw1Citvbl9kYXRlcyAiMDA6MDAiICIwMDowMCIgaGlkZV9lcnJvciBzYXZlX3RhZyByb290IHVuaXF1ZV9jb21taXQgcm9vdCB0cmVlCitvbl9kYXRlcyAiMDA6MDEiICIwMDowMSIgc2F2ZV90YWcgbDAgdW5pcXVlX2NvbW1pdCBsMCB0cmVlIC1wIHJvb3QKK29uX2RhdGVzICIwMDowMiIgIjAwOjAyIiBzYXZlX3RhZyBsMSB1bmlxdWVfY29tbWl0IGwxIHRyZWUgLXAgbDAKK29uX2RhdGVzICIwMDowMyIgIjAwOjAzIiBzYXZlX3RhZyBsMiB1bmlxdWVfY29tbWl0IGwyIHRyZWUgLXAgbDEKK29uX2RhdGVzICIwMDowNCIgIjAwOjA0IiBzYXZlX3RhZyBhMCB1bmlxdWVfY29tbWl0IGEwIHRyZWUgLXAgbDIKK29uX2RhdGVzICIwMDowNSIgIjAwOjA1IiBzYXZlX3RhZyBhMSB1bmlxdWVfY29tbWl0IGExIHRyZWUgLXAgYTAKK29uX2RhdGVzICIwMDowNiIgIjAwOjA2IiBzYXZlX3RhZyBiMSB1bmlxdWVfY29tbWl0IGIxIHRyZWUgLXAgYTAKK29uX2RhdGVzICIwMDowNyIgIjAwOjA3IiBzYXZlX3RhZyBjMSB1bmlxdWVfY29tbWl0IGMxIHRyZWUgLXAgYjEKK29uX2RhdGVzICIwMDowOCIgIjAwOjA4IiBhc19hdXRob3IgZm9vYmFyQGV4YW1wbGUuY29tIHNhdmVfdGFnIGIyIHVuaXF1ZV9jb21taXQgYjIgdHJlZSAtcCBiMQorb25fZGF0ZXMgIjAwOjA5IiAiMDA6MDkiIHNhdmVfdGFnIGIzIHVuaXF1ZV9jb21taXQgYjMgdHJlZSAtcCBiMgorb25fZGF0ZXMgIjAwOjEwIiAiMDA6MTAiIHNhdmVfdGFnIGMyIHVuaXF1ZV9jb21taXQgYzIgdHJlZSAtcCBjMSAtcCBiMgorb25fZGF0ZXMgIjAwOjExIiAiMDA6MTEiIHNhdmVfdGFnIGMzIHVuaXF1ZV9jb21taXQgYzMgdHJlZSAtcCBjMgorb25fZGF0ZXMgIjAwOjEyIiAiMDA6MDAiIHNhdmVfdGFnIGEyIHVuaXF1ZV9jb21taXQgYTIgdHJlZSAtcCBhMQorb25fZGF0ZXMgIjAwOjEzIiAiMDA6MDEiIHNhdmVfdGFnIGEzIHVuaXF1ZV9jb21taXQgYTMgdHJlZSAtcCBhMgorb25fZGF0ZXMgIjAwOjE0IiAiMDA6MTQiIHNhdmVfdGFnIGI0IHVuaXF1ZV9jb21taXQgYjQgdHJlZSAtcCBiMyAtcCBhMworb25fZGF0ZXMgIjAwOjE1IiAiMDA6MTUiIHNhdmVfdGFnIGE0IHVuaXF1ZV9jb21taXQgYTQgdHJlZSAtcCBhMyAtcCBiNCAtcCBjMworb25fZGF0ZXMgIjAwOjE2IiAiMDA6MTYiIHNhdmVfdGFnIGwzIHVuaXF1ZV9jb21taXQgbDMgdHJlZSAtcCBhNAorb25fZGF0ZXMgIjAwOjE3IiAiMDA6MTciIHNhdmVfdGFnIGw0IHVuaXF1ZV9jb21taXQgbDQgdHJlZSAtcCBsMworb25fZGF0ZXMgIjAwOjE4IiAiMDA6MTgiIHNhdmVfdGFnIGw1IHVuaXF1ZV9jb21taXQgbDUgdHJlZSAtcCBsNAorb25fZGF0ZXMgIjAwOjE5IiAiMDA6MTkiIHNhdmVfdGFnIG0xIHVuaXF1ZV9jb21taXQgbTEgdHJlZSAtcCBhNCAtcCBjMworb25fZGF0ZXMgIjAwOjIwIiAiMDA6MjAiIHNhdmVfdGFnIG0yIHVuaXF1ZV9jb21taXQgbTIgdHJlZSAtcCBjMyAtcCBhNAorb25fZGF0ZXMgIjAwOjIxIiAiMDA6MjEiIGhpZGVfZXJyb3Igc2F2ZV90YWcgYWx0X3Jvb3QgdW5pcXVlX2NvbW1pdCBhbHRfcm9vdCB0cmVlCitvbl9kYXRlcyAiMDA6MjIiICIwMDoyMiIgc2F2ZV90YWcgcjAgdW5pcXVlX2NvbW1pdCByMCB0cmVlIC1wIGFsdF9yb290Citvbl9kYXRlcyAiMDA6MjMiICIwMDoyMyIgc2F2ZV90YWcgcjEgdW5pcXVlX2NvbW1pdCByMSB0cmVlIC1wIHIwCitvbl9kYXRlcyAiMDA6MjQiICIwMDoyNCIgc2F2ZV90YWcgbDVyMSB1bmlxdWVfY29tbWl0IGw1cjEgdHJlZSAtcCBsNSAtcCByMQorb25fZGF0ZXMgIjAwOjI1IiAiMDA6MjUiIHNhdmVfdGFnIHIxbDUgdW5pcXVlX2NvbW1pdCByMWw1IHRyZWUgLXAgcjEgLXAgbDUKIAogCi0jCi0jIG5vdGU6IGFzIG9mIDIwLzYsIGl0IGlzbid0IHBvc3NpYmxlIHRvIGNyZWF0ZSBkdXBsaWNhdGUgcGFyZW50cywgc28gdGhpcwotIyBjYW4ndCBiZSB0ZXN0ZWQuCi0jCi0jb25fY29tbWl0dGVyX2RhdGUgIjE5NzEtMDgtMTYgMDA6MDA6MjAiIHNhdmVfdGFnIG0zIHVuaXF1ZV9jb21taXQgbTMgdHJlZSAtcCBjMyAtcCBhNCAtcCBjMwogaGlkZV9lcnJvciBzYXZlX3RhZyBlMSBhc19hdXRob3IgZUBleGFtcGxlLmNvbSB1bmlxdWVfY29tbWl0IGUxIHRyZWUKIHNhdmVfdGFnIGUyIGFzX2F1dGhvciBlQGV4YW1wbGUuY29tIHVuaXF1ZV9jb21taXQgZTIgdHJlZSAtcCBlMQogc2F2ZV90YWcgZjEgYXNfYXV0aG9yIGZAZXhhbXBsZS5jb20gdW5pcXVlX2NvbW1pdCBmMSB0cmVlIC1wIGUxCkBAIC0xMDUsNiArMTAwLDUwIEBACiByb290CiBFT0YKIAordGVzdF9vdXRwdXRfZXhwZWN0X3N1Y2Nlc3MgJ3NpbXBsZSBkYXRlIG9yZGVyJyAnZ2l0IHJldi1saXN0IC0tZGF0ZS1vcmRlciAgSEVBRCcgPDxFT0YKK2w1CitsNAorbDMKK2E0CitiNAorYTMKK2EyCitjMworYzIKK2IzCitiMgorYzEKK2IxCithMQorYTAKK2wyCitsMQorbDAKK3Jvb3QKK0VPRgorCit0ZXN0X291dHB1dF9leHBlY3Rfc3VjY2VzcyAnc2ltcGxlIGF1dGhvci1kYXRlIG9yZGVyJyAnZ2l0IHJldi1saXN0IC0tYXV0aG9yLWRhdGUtb3JkZXIgIEhFQUQnIDw8RU9GCitsNQorbDQKK2wzCithNAorYjQKK2MzCitjMgorYjMKK2IyCitjMQorYjEKK2EzCithMgorYTEKK2EwCitsMgorbDEKK2wwCityb290CitFT0YKKwogdGVzdF9vdXRwdXRfZXhwZWN0X3N1Y2Nlc3MgJ3R3byBkaWFtb25kcyB0b3BvIG9yZGVyIChnNiknICdnaXQgcmV2LWxpc3QgLS10b3BvLW9yZGVyICBnNCcgPDxFT0YKIGc0CiBoMgpkaWZmIC0tZ2l0IGEvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2ggYi90L3Q2MDA2LXJldi1saXN0LWZvcm1hdC5zaAppbmRleCAwMzkzYzlmLi45ODc0NDAzIDEwMDc1NQotLS0gYS90L3Q2MDA2LXJldi1saXN0LWZvcm1hdC5zaAorKysgYi90L3Q2MDA2LXJldi1saXN0LWZvcm1hdC5zaApAQCAtMSwyMCArMSw0NSBAQAogIyEvYmluL3NoCiAKKyMgQ29weXJpZ2h0IChjKSAyMDA5IEplbnMgTGVobWFubgorIyBDb3B5cmlnaHQgKGMpIDIwMTEgQWxleGV5IFNodW1raW4gKCsgbm9uLVVURi04IGNvbW1pdCBlbmNvZGluZyB0ZXN0cykKKwogdGVzdF9kZXNjcmlwdGlvbj0nZ2l0IHJldi1saXN0IC0tcHJldHR5PWZvcm1hdCB0ZXN0JwogCiAuIC4vdGVzdC1saWIuc2gKIC4gIiRURVNUX0RJUkVDVE9SWSIvbGliLXRlcm1pbmFsLnNoCiAKIHRlc3RfdGljaworIyBTdHJpbmcgImFkZGVkIiBpbiBHZXJtYW4KKyMgKHRyYW5zbGF0ZWQgd2l0aCBHb29nbGUgVHJhbnNsYXRlKSwKKyMgZW5jb2RlZCBpbiBVVEYtOCwgdXNlZCBhcyBhIGNvbW1pdCBsb2cgbWVzc2FnZSBiZWxvdy4KK2FkZGVkPSQocHJpbnRmICJhZGRlZCAoaGluenVnZWZcMzAzXDI3NGd0KSBmb28iKQorYWRkZWRfaXNvODg1OTE9JChlY2hvICIkYWRkZWQiIHwgaWNvbnYgLWYgdXRmLTggLXQgaXNvODg1OS0xKQorIyBzYW1lIGJ1dCAiY2hhbmdlZCIKK2NoYW5nZWQ9JChwcmludGYgImNoYW5nZWQgKGdlXDMwM1wyNDRuZGVydCkgZm9vIikKK2NoYW5nZWRfaXNvODg1OTE9JChlY2hvICIkY2hhbmdlZCIgfCBpY29udiAtZiB1dGYtOCAtdCBpc284ODU5LTEpCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCi10b3VjaCBmb28gJiYgZ2l0IGFkZCBmb28gJiYgZ2l0IGNvbW1pdCAtbSAiYWRkZWQgZm9vIiAmJgotICBlY2hvIGNoYW5nZWQgPmZvbyAmJiBnaXQgY29tbWl0IC1hIC1tICJjaGFuZ2VkIGZvbyIKKwk6ID5mb28gJiYKKwlnaXQgYWRkIGZvbyAmJgorCWdpdCBjb25maWcgaTE4bi5jb21taXRFbmNvZGluZyBpc284ODU5LTEgJiYKKwlnaXQgY29tbWl0IC1tICIkYWRkZWRfaXNvODg1OTEiICYmCisJaGVhZDE9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJaGVhZDFfc2hvcnQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC0tc2hvcnQgJGhlYWQxKSAmJgorCXRyZWUxPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEOikgJiYKKwl0cmVlMV9zaG9ydD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1zaG9ydCAkdHJlZTEpICYmCisJZWNobyAiJGNoYW5nZWQiID4gZm9vICYmCisJZ2l0IGNvbW1pdCAtYSAtbSAiJGNoYW5nZWRfaXNvODg1OTEiICYmCisJaGVhZDI9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJaGVhZDJfc2hvcnQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IC0tc2hvcnQgJGhlYWQyKSAmJgorCXRyZWUyPSQoZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBIRUFEOikgJiYKKwl0cmVlMl9zaG9ydD0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgLS1zaG9ydCAkdHJlZTIpCisJZ2l0IGNvbmZpZyAtLXVuc2V0IGkxOG4uY29tbWl0RW5jb2RpbmcKICcKIAotIyB1c2FnZTogdGVzdF9mb3JtYXQgbmFtZSBmb3JtYXRfc3RyaW5nIDxleHBlY3RlZF9vdXRwdXQKKyMgdXNhZ2U6IHRlc3RfZm9ybWF0IG5hbWUgZm9ybWF0X3N0cmluZyBbZmFpbHVyZV0gPGV4cGVjdGVkX291dHB1dAogdGVzdF9mb3JtYXQgKCkgewogCWNhdCA+ZXhwZWN0LiQxCi0JdGVzdF9leHBlY3Rfc3VjY2VzcyAiZm9ybWF0ICQxIiAiCisJdGVzdF9leHBlY3RfJHszOi1zdWNjZXNzfSAiZm9ybWF0ICQxIiAiCiAJCWdpdCByZXYtbGlzdCAtLXByZXR0eT1mb3JtYXQ6JyQyJyBtYXN0ZXIgPm91dHB1dC4kMSAmJgogCQl0ZXN0X2NtcCBleHBlY3QuJDEgb3V0cHV0LiQxCiAJIgpAQCAtMzIsNDkgKzU3LDQ5IEBACiAJdGVzdF9jbXAgZXhwZWN0ICIkMSIKIH0KIAotdGVzdF9mb3JtYXQgcGVyY2VudCAlJWggPDwnRU9GJwotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKK3Rlc3RfZm9ybWF0IHBlcmNlbnQgJSVoIDw8RU9GCitjb21taXQgJGhlYWQyCiAlaAotY29tbWl0IDg2Yzc1Y2ZkNzA4YTBlNTg2OGRjODc2ZWQ1YjhiYjY2YzgwYjQ4NzMKK2NvbW1pdCAkaGVhZDEKICVoCiBFT0YKIAotdGVzdF9mb3JtYXQgaGFzaCAlSCVuJWggPDwnRU9GJwotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKLTEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKLTEzMWEzMTAKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCi04NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCi04NmM3NWNmCit0ZXN0X2Zvcm1hdCBoYXNoICVIJW4laCA8PEVPRgorY29tbWl0ICRoZWFkMgorJGhlYWQyCiskaGVhZDJfc2hvcnQKK2NvbW1pdCAkaGVhZDEKKyRoZWFkMQorJGhlYWQxX3Nob3J0CiBFT0YKIAotdGVzdF9mb3JtYXQgdHJlZSAlVCVuJXQgPDwnRU9GJwotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKLWZlNzIyNjEyZjI2ZGE1MDY0YzMyY2EzODQzYWExNTRiZGIwYjA4YTAKLWZlNzIyNjEKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCi00ZDVmY2FkYzI5M2EzNDhlODhmNzc3ZGMwOTIwZjExZTdkNzE0NDFjCi00ZDVmY2FkCit0ZXN0X2Zvcm1hdCB0cmVlICVUJW4ldCA8PEVPRgorY29tbWl0ICRoZWFkMgorJHRyZWUyCiskdHJlZTJfc2hvcnQKK2NvbW1pdCAkaGVhZDEKKyR0cmVlMQorJHRyZWUxX3Nob3J0CiBFT0YKIAotdGVzdF9mb3JtYXQgcGFyZW50cyAlUCVuJXAgPDwnRU9GJwotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKLTg2Yzc1Y2ZkNzA4YTBlNTg2OGRjODc2ZWQ1YjhiYjY2YzgwYjQ4NzMKLTg2Yzc1Y2YKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCit0ZXN0X2Zvcm1hdCBwYXJlbnRzICVQJW4lcCA8PEVPRgorY29tbWl0ICRoZWFkMgorJGhlYWQxCiskaGVhZDFfc2hvcnQKK2NvbW1pdCAkaGVhZDEKIAogCiBFT0YKIAogIyB3ZSBkb24ndCB0ZXN0IHJlbGF0aXZlIGhlcmUKLXRlc3RfZm9ybWF0IGF1dGhvciAlYW4lbiVhZSVuJWFkJW4lYUQlbiVhdCA8PCdFT0YnCi1jb21taXQgMTMxYTMxMGViOTEzZDEwN2RkM2MwOWE2NWQxNjUxMTc1ODk4NzM1ZAordGVzdF9mb3JtYXQgYXV0aG9yICVhbiVuJWFlJW4lYWQlbiVhRCVuJWF0IDw8RU9GCitjb21taXQgJGhlYWQyCiBBIFUgVGhvcgogYXV0aG9yQGV4YW1wbGUuY29tCiBUaHUgQXByIDcgMTU6MTM6MTMgMjAwNSAtMDcwMAogVGh1LCA3IEFwciAyMDA1IDE1OjEzOjEzIC0wNzAwCiAxMTEyOTExOTkzCi1jb21taXQgODZjNzVjZmQ3MDhhMGU1ODY4ZGM4NzZlZDViOGJiNjZjODBiNDg3MworY29tbWl0ICRoZWFkMQogQSBVIFRob3IKIGF1dGhvckBleGFtcGxlLmNvbQogVGh1IEFwciA3IDE1OjEzOjEzIDIwMDUgLTA3MDAKQEAgLTgyLDE0ICsxMDcsMTQgQEAKIDExMTI5MTE5OTMKIEVPRgogCi10ZXN0X2Zvcm1hdCBjb21taXR0ZXIgJWNuJW4lY2UlbiVjZCVuJWNEJW4lY3QgPDwnRU9GJwotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKK3Rlc3RfZm9ybWF0IGNvbW1pdHRlciAlY24lbiVjZSVuJWNkJW4lY0QlbiVjdCA8PEVPRgorY29tbWl0ICRoZWFkMgogQyBPIE1pdHRlcgogY29tbWl0dGVyQGV4YW1wbGUuY29tCiBUaHUgQXByIDcgMTU6MTM6MTMgMjAwNSAtMDcwMAogVGh1LCA3IEFwciAyMDA1IDE1OjEzOjEzIC0wNzAwCiAxMTEyOTExOTkzCi1jb21taXQgODZjNzVjZmQ3MDhhMGU1ODY4ZGM4NzZlZDViOGJiNjZjODBiNDg3MworY29tbWl0ICRoZWFkMQogQyBPIE1pdHRlcgogY29tbWl0dGVyQGV4YW1wbGUuY29tCiBUaHUgQXByIDcgMTU6MTM6MTMgMjAwNSAtMDcwMApAQCAtOTcsNDMgKzEyMiw0NSBAQAogMTExMjkxMTk5MwogRU9GCiAKLXRlc3RfZm9ybWF0IGVuY29kaW5nICVlIDw8J0VPRicKLWNvbW1pdCAxMzFhMzEwZWI5MTNkMTA3ZGQzYzA5YTY1ZDE2NTExNzU4OTg3MzVkCi1jb21taXQgODZjNzVjZmQ3MDhhMGU1ODY4ZGM4NzZlZDViOGJiNjZjODBiNDg3MwordGVzdF9mb3JtYXQgZW5jb2RpbmcgJWUgPDxFT0YKK2NvbW1pdCAkaGVhZDIKK2lzbzg4NTktMQorY29tbWl0ICRoZWFkMQoraXNvODg1OS0xCiBFT0YKIAotdGVzdF9mb3JtYXQgc3ViamVjdCAlcyA8PCdFT0YnCi1jb21taXQgMTMxYTMxMGViOTEzZDEwN2RkM2MwOWE2NWQxNjUxMTc1ODk4NzM1ZAotY2hhbmdlZCBmb28KLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCi1hZGRlZCBmb28KK3Rlc3RfZm9ybWF0IHN1YmplY3QgJXMgPDxFT0YKK2NvbW1pdCAkaGVhZDIKKyRjaGFuZ2VkCitjb21taXQgJGhlYWQxCiskYWRkZWQKIEVPRgogCi10ZXN0X2Zvcm1hdCBib2R5ICViIDw8J0VPRicKLWNvbW1pdCAxMzFhMzEwZWI5MTNkMTA3ZGQzYzA5YTY1ZDE2NTExNzU4OTg3MzVkCi1jb21taXQgODZjNzVjZmQ3MDhhMGU1ODY4ZGM4NzZlZDViOGJiNjZjODBiNDg3MwordGVzdF9mb3JtYXQgYm9keSAlYiA8PEVPRgorY29tbWl0ICRoZWFkMgorY29tbWl0ICRoZWFkMQogRU9GCiAKLXRlc3RfZm9ybWF0IHJhdy1ib2R5ICVCIDw8J0VPRicKLWNvbW1pdCAxMzFhMzEwZWI5MTNkMTA3ZGQzYzA5YTY1ZDE2NTExNzU4OTg3MzVkCi1jaGFuZ2VkIGZvbwordGVzdF9mb3JtYXQgcmF3LWJvZHkgJUIgPDxFT0YKK2NvbW1pdCAkaGVhZDIKKyRjaGFuZ2VkCiAKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCi1hZGRlZCBmb28KK2NvbW1pdCAkaGVhZDEKKyRhZGRlZAogCiBFT0YKIAotdGVzdF9mb3JtYXQgY29sb3JzICVDcmVkZm9vJUNncmVlbmJhciVDYmx1ZWJheiVDcmVzZXR4eXp6eSA8PCdFT0YnCi1jb21taXQgMTMxYTMxMGViOTEzZDEwN2RkM2MwOWE2NWQxNjUxMTc1ODk4NzM1ZAordGVzdF9mb3JtYXQgY29sb3JzICVDcmVkZm9vJUNncmVlbmJhciVDYmx1ZWJheiVDcmVzZXR4eXp6eSA8PEVPRgorY29tbWl0ICRoZWFkMgogG1szMW1mb28bWzMybWJhchtbMzRtYmF6G1tteHl6enkKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCitjb21taXQgJGhlYWQxCiAbWzMxbWZvbxtbMzJtYmFyG1szNG1iYXobW214eXp6eQogRU9GCiAKLXRlc3RfZm9ybWF0IGFkdmFuY2VkLWNvbG9ycyAnJUMocmVkIHllbGxvdyBib2xkKWZvbyVDKHJlc2V0KScgPDwnRU9GJwotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKK3Rlc3RfZm9ybWF0IGFkdmFuY2VkLWNvbG9ycyAnJUMocmVkIHllbGxvdyBib2xkKWZvbyVDKHJlc2V0KScgPDxFT0YKK2NvbW1pdCAkaGVhZDIKIBtbMTszMTs0M21mb28bW20KLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCitjb21taXQgJGhlYWQxCiAbWzE7MzE7NDNtZm9vG1ttCiBFT0YKIApAQCAtMTc5LDQ2ICsyMDYsNzEgQEAKIAkpCiAnCiAKLWNhdCA+Y29tbWl0LW1zZyA8PCdFT0YnCitpY29udiAtZiB1dGYtOCAtdCBpc284ODU5LTEgPiBjb21taXQtbXNnIDw8RU9GCiBUZXN0IHByaW50aW5nIG9mIGNvbXBsZXggYm9kaWVzCiAKIFRoaXMgY29tbWl0IG1lc3NhZ2UgaXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgb3RoZXJzLAogYW5kIGl0IHdpbGwgYmUgZW5jb2RlZCBpbiBpc284ODU5LTEuIFdlIHNob3VsZCB0aGVyZWZvcmUKLWluY2x1ZGUgYW4gaXNvODg1OSBjaGFyYWN0ZXI6IKFidWVubyEKK2luY2x1ZGUgYW4gaXNvODg1OSBjaGFyYWN0ZXI6IMKhYnVlbm8hCiBFT0YKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgY29tcGxleCBib2R5JyAnCi1naXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgaXNvODg1OS0xICYmCi0gIGVjaG8gY2hhbmdlMiA+Zm9vICYmIGdpdCBjb21taXQgLWEgLUYgY29tbWl0LW1zZworCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBpc284ODU5LTEgJiYKKwllY2hvIGNoYW5nZTIgPmZvbyAmJiBnaXQgY29tbWl0IC1hIC1GIGNvbW1pdC1tc2cgJiYKKwloZWFkMz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgJiYKKwloZWFkM19zaG9ydD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkaGVhZDMpCiAnCiAKLXRlc3RfZm9ybWF0IGNvbXBsZXgtZW5jb2RpbmcgJWUgPDwnRU9GJwotY29tbWl0IDFlZDg4ZGE0YTViNWVkOGM0NDkxMTRhYzEzMWVmYzYyMTc4NzM0YzMKK3Rlc3RfZm9ybWF0IGNvbXBsZXgtZW5jb2RpbmcgJWUgPDxFT0YKK2NvbW1pdCAkaGVhZDMKIGlzbzg4NTktMQotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCitjb21taXQgJGhlYWQyCitpc284ODU5LTEKK2NvbW1pdCAkaGVhZDEKK2lzbzg4NTktMQogRU9GCiAKLXRlc3RfZm9ybWF0IGNvbXBsZXgtc3ViamVjdCAlcyA8PCdFT0YnCi1jb21taXQgMWVkODhkYTRhNWI1ZWQ4YzQ0OTExNGFjMTMxZWZjNjIxNzg3MzRjMwordGVzdF9mb3JtYXQgY29tcGxleC1zdWJqZWN0ICVzIDw8RU9GCitjb21taXQgJGhlYWQzCiBUZXN0IHByaW50aW5nIG9mIGNvbXBsZXggYm9kaWVzCi1jb21taXQgMTMxYTMxMGViOTEzZDEwN2RkM2MwOWE2NWQxNjUxMTc1ODk4NzM1ZAotY2hhbmdlZCBmb28KLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCi1hZGRlZCBmb28KK2NvbW1pdCAkaGVhZDIKKyRjaGFuZ2VkX2lzbzg4NTkxCitjb21taXQgJGhlYWQxCiskYWRkZWRfaXNvODg1OTEKIEVPRgogCi10ZXN0X2Zvcm1hdCBjb21wbGV4LWJvZHkgJWIgPDwnRU9GJwotY29tbWl0IDFlZDg4ZGE0YTViNWVkOGM0NDkxMTRhYzEzMWVmYzYyMTc4NzM0YzMKLVRoaXMgY29tbWl0IG1lc3NhZ2UgaXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgb3RoZXJzLAotYW5kIGl0IHdpbGwgYmUgZW5jb2RlZCBpbiBpc284ODU5LTEuIFdlIHNob3VsZCB0aGVyZWZvcmUKLWluY2x1ZGUgYW4gaXNvODg1OSBjaGFyYWN0ZXI6IKFidWVubyEKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXBhcmUgZXhwZWN0ZWQgbWVzc2FnZXMgKGZvciB0ZXN0ICViKScgJworCWNhdCA8PC1FT0YgPmV4cGVjdGVkLnV0Zi04ICYmCisJY29tbWl0ICRoZWFkMworCVRoaXMgY29tbWl0IG1lc3NhZ2UgaXMgbXVjaCBsb25nZXIgdGhhbiB0aGUgb3RoZXJzLAorCWFuZCBpdCB3aWxsIGJlIGVuY29kZWQgaW4gaXNvODg1OS0xLiBXZSBzaG91bGQgdGhlcmVmb3JlCisJaW5jbHVkZSBhbiBpc284ODU5IGNoYXJhY3RlcjogwqFidWVubyEKIAotY29tbWl0IDEzMWEzMTBlYjkxM2QxMDdkZDNjMDlhNjVkMTY1MTE3NTg5ODczNWQKLWNvbW1pdCA4NmM3NWNmZDcwOGEwZTU4NjhkYzg3NmVkNWI4YmI2NmM4MGI0ODczCisJY29tbWl0ICRoZWFkMgorCWNvbW1pdCAkaGVhZDEKKwlFT0YKKwlpY29udiAtZiB1dGYtOCAtdCBpc284ODU5LTEgZXhwZWN0ZWQudXRmLTggPmV4cGVjdGVkLmlzbzg4NTktMQorJworCit0ZXN0X2Zvcm1hdCBjb21wbGV4LWJvZHkgJWIgPGV4cGVjdGVkLmlzbzg4NTktMQorCisjIEdpdCB1c2VzIGkxOG4uY29tbWl0RW5jb2RpbmcgaWYgbm8gaTE4bi5sb2dPdXRwdXRFbmNvZGluZyBzZXQKKyMgc28gdW5zZXQgaTE4bi5jb21taXRFbmNvZGluZyB0byB0ZXN0IGVuY29kaW5nIGNvbnZlcnNpb24KK2dpdCBjb25maWcgLS11bnNldCBpMThuLmNvbW1pdEVuY29kaW5nCisKK3Rlc3RfZm9ybWF0IGNvbXBsZXgtc3ViamVjdC1jb21taXRlbmNvZGluZy11bnNldCAlcyA8PEVPRgorY29tbWl0ICRoZWFkMworVGVzdCBwcmludGluZyBvZiBjb21wbGV4IGJvZGllcworY29tbWl0ICRoZWFkMgorJGNoYW5nZWQKK2NvbW1pdCAkaGVhZDEKKyRhZGRlZAogRU9GCiAKK3Rlc3RfZm9ybWF0IGNvbXBsZXgtYm9keS1jb21taXRlbmNvZGluZy11bnNldCAlYiA8ZXhwZWN0ZWQudXRmLTgKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnJXgwMCBzaG93cyBOVUwnICcKLQllY2hvICA+ZXhwZWN0IGNvbW1pdCAxZWQ4OGRhNGE1YjVlZDhjNDQ5MTE0YWMxMzFlZmM2MjE3ODczNGMzICYmCisJZWNobyAgPmV4cGVjdCBjb21taXQgJGhlYWQzICYmCiAJZWNobyA+PmV4cGVjdCBmb29RYmFyICYmCiAJZ2l0IHJldi1saXN0IC0xIC0tZm9ybWF0PWZvbyV4MDBiYXIgSEVBRCA+YWN0dWFsLm51bCAmJgogCW51bF90b19xIDxhY3R1YWwubnVsID5hY3R1YWwgJiYKQEAgLTI2NSwxMiArMzE3LDEyIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZCBTUCBiZWZvcmUgbm9uLWVtcHR5ICgxKScgJwogCWdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDoiJXMlIGJUaGFua3MiIEhFQUReXiA+YWN0dWFsICYmCi0JdGVzdCAkKHdjIC13IDxhY3R1YWwpID0gMgorCXRlc3QgJCh3YyAtdyA8YWN0dWFsKSA9IDMKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIFNQIGJlZm9yZSBub24tZW1wdHkgKDIpJyAnCiAJZ2l0IHNob3cgLXMgLS1wcmV0dHk9Zm9ybWF0OiIlcyUgc1RoYW5rcyIgSEVBRF5eID5hY3R1YWwgJiYKLQl0ZXN0ICQod2MgLXcgPGFjdHVhbCkgPSA0CisJdGVzdCAkKHdjIC13IDxhY3R1YWwpID0gNgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLWFiYnJldicgJwpkaWZmIC0tZ2l0IGEvdC90NjAxMi1yZXYtbGlzdC1zaW1wbGlmeS5zaCBiL3QvdDYwMTItcmV2LWxpc3Qtc2ltcGxpZnkuc2gKaW5kZXggZGQ2ZGM4NC4uNTdjZTIzOSAxMDA3NTUKLS0tIGEvdC90NjAxMi1yZXYtbGlzdC1zaW1wbGlmeS5zaAorKysgYi90L3Q2MDEyLXJldi1saXN0LXNpbXBsaWZ5LnNoCkBAIC0xNCwyMSArMTQsMjQgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAJZWNobyAiSGkgdGhlcmUiID5maWxlICYmCi0JZ2l0IGFkZCBmaWxlICYmCi0JdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIkluaXRpYWwgZmlsZSIgJiYKKwllY2hvICJpbml0aWFsIiA+bG9zdCAmJgorCWdpdCBhZGQgZmlsZSBsb3N0ICYmCisJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gIkluaXRpYWwgZmlsZSBhbmQgbG9zdCIgJiYKIAlub3RlIEEgJiYKIAogCWdpdCBicmFuY2ggb3RoZXItYnJhbmNoICYmCiAKIAllY2hvICJIZWxsbyIgPmZpbGUgJiYKLQlnaXQgYWRkIGZpbGUgJiYKLQl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTW9kaWZpZWQgZmlsZSIgJiYKKwllY2hvICJzZWNvbmQiID5sb3N0ICYmCisJZ2l0IGFkZCBmaWxlIGxvc3QgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTW9kaWZpZWQgZmlsZSBhbmQgbG9zdCIgJiYKIAlub3RlIEIgJiYKIAogCWdpdCBjaGVja291dCBvdGhlci1icmFuY2ggJiYKIAogCWVjaG8gIkhlbGxvIiA+ZmlsZSAmJgotCWdpdCBhZGQgZmlsZSAmJgorCT5sb3N0ICYmCisJZ2l0IGFkZCBmaWxlIGxvc3QgJiYKIAl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiTW9kaWZpZWQgdGhlIGZpbGUgaWRlbnRpY2FsbHkiICYmCiAJbm90ZSBDICYmCiAKQEAgLTM3LDcgKzQwLDkgQEAKIAl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAiQWRkIGFub3RoZXIgZmlsZSIgJiYKIAlub3RlIEQgJiYKIAotCXRlc3RfdGljayAmJiBnaXQgbWVyZ2UgLW0gIm1lcmdlIiBtYXN0ZXIgJiYKKwl0ZXN0X3RpY2sgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLW0gIm1lcmdlIiBtYXN0ZXIgJiYKKwk+bG9zdCAmJiBnaXQgY29tbWl0IC1hIC1tICJtZXJnZSIgJiYKIAlub3RlIEUgJiYKIAogCWVjaG8gIllldCBhbm90aGVyIiA+ZWxpZiAmJgpAQCAtMTA1LDkgKzExMCwyMSBAQAogY2hlY2tfcmVzdWx0ICdLIEkgSCBFIEMgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCiBjaGVja19yZXN1bHQgJ0sgSSBIIEUgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IC0tdG9wby1vcmRlciAtLSBmaWxlCiBjaGVja19yZXN1bHQgJ0sgSSBIIEUgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IC0tZGF0ZS1vcmRlciAtLSBmaWxlCi1jaGVja19vdXRjb21lIGZhaWx1cmUgJ0kgRSBDIEIgQScgLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdJIEUgQyBCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKIGNoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tIGZpbGUKIGNoZWNrX3Jlc3VsdCAnSSBCIEEnIC0tdG9wby1vcmRlciAtLSBmaWxlCiBjaGVja19yZXN1bHQgJ0gnIC0tZmlyc3QtcGFyZW50IC0tIGFub3RoZXItZmlsZQogCitjaGVja19yZXN1bHQgJ0UgQyBCIEEnIC0tZnVsbC1oaXN0b3J5IEUgLS0gbG9zdAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZnVsbCBoaXN0b3J5IHNpbXBsaWZpY2F0aW9uIHdpdGhvdXQgcGFyZW50JyAnCisJcHJpbnRmICIlc1xuIiBFIEMgQiBBID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tcHJldHR5PSIkRk1UIiAtLWZ1bGwtaGlzdG9yeSBFIC0tIGxvc3QgfAorCXVubm90ZSA+YWN0dWFsICYmCisJc2VkIC1lICJzL14uKglcKFteIF0qXCkgLiovXDEvIiA+Y2hlY2sgPGFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBjaGVjayB8fCB7CisJCWNhdCBhY3R1YWwKKwkJZmFsc2UKKwl9CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAxOS1yZXYtbGlzdC1hbmNlc3RyeS1wYXRoLnNoIGIvdC90NjAxOS1yZXYtbGlzdC1hbmNlc3RyeS1wYXRoLnNoCmluZGV4IGRkNWIwZTUuLmRhYmViYWUgMTAwNzU1Ci0tLSBhL3QvdDYwMTktcmV2LWxpc3QtYW5jZXN0cnktcGF0aC5zaAorKysgYi90L3Q2MDE5LXJldi1saXN0LWFuY2VzdHJ5LXBhdGguc2gKQEAgLTE2LDYgKzE2LDEwIEBACiAjCiAjICBGLi4uSSAgICAgICAgICAgICAgICAgPT0gRiBHIEggSQogIyAgLS1hbmNlc3RyeS1wYXRoIEYuLi5JID09IEYgSCBJCisjCisjICBHLi5NIC0tIEcudCAgICAgICAgICAgICAgICAgPT0gW25vdGhpbmcgLSB3YXMgZHJvcHBlZCBpbiAiLXMgb3VycyIgbWVyZ2UgTF0KKyMgIC0tYW5jZXN0cnktcGF0aCBHLi5NIC0tIEcudCA9PSBMCisjICAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgR14uLk0gLS0gRy50ID09IEcgTAogCiAuIC4vdGVzdC1saWIuc2gKIApAQCAtODksNiArOTMsMjkgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKKyMgRy50IGlzIGRyb3BwZWQgaW4gYW4gIi1zIG91cnMiIG1lcmdlCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXYtbGlzdCBHLi5NIC0tIEcudCcgJworCT5leHBlY3QgJiYKKwlnaXQgcmV2LWxpc3QgLS1mb3JtYXQ9JXMgRy4uTSAtLSBHLnQgfAorCXNlZCAtZSAiL15jb21taXQgL2QiID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1saXN0IC0tYW5jZXN0cnktcGF0aCBHLi5NIC0tIEcudCcgJworCWVjaG8gTCA+ZXhwZWN0ICYmCisJZ2l0IHJldi1saXN0IC0tYW5jZXN0cnktcGF0aCAtLWZvcm1hdD0lcyBHLi5NIC0tIEcudCB8CisJc2VkIC1lICIvXmNvbW1pdCAvZCIgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmV2LWxpc3QgLS1hbmNlc3RyeS1wYXRoIC0tc2ltcGxpZnktbWVyZ2VzIEdeLi5NIC0tIEcudCcgJworCWZvciBjIGluIEcgTDsgZG8gZWNobyAkYzsgZG9uZSA+ZXhwZWN0ICYmCisJZ2l0IHJldi1saXN0IC0tYW5jZXN0cnktcGF0aCAtLXNpbXBsaWZ5LW1lcmdlcyAtLWZvcm1hdD0lcyBHXi4uTSAtLSBHLnQgfAorCXNlZCAtZSAiL15jb21taXQgL2QiIHwKKwlzb3J0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKICMgICBiLS0tYmMKICMgIC8gXCAvCiAjIGEgICBYCmRpZmYgLS1naXQgYS90L3Q2MTExLXJldi1saXN0LXRyZWVzYW1lLnNoIGIvdC90NjExMS1yZXYtbGlzdC10cmVlc2FtZS5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44OGI4NGRmCi0tLSAvZGV2L251bGwKKysrIGIvdC90NjExMS1yZXYtbGlzdC10cmVlc2FtZS5zaApAQCAtMCwwICsxLDE5NiBAQAorIyEvYmluL3NoCisjCisjICAgICAgICAsLS0tRS0tLiAgICpILS0tLS0tLS0tLS4gICAgICAgICAgICAgKiBtYXJrcyAhVFJFRVNBTUUgcGFyZW50IHBhdGhzCisjICAgICAgIC8gICAgICAgIFwgLyAgICAgICAgICAgICBcKgorIyAqQS0tKkItLS1ELS0qRi0qRy0tLS0tLS0tLUstKkwtKk0KKyMgICBcICAgICAvKiAgICAgICBcICAgICAgIC8KKyMgICAgYC1DLScgICAgICAgICAgYC0qSS0qSgorIworIyBBIGNyZWF0ZXMgImZpbGUiLCBCIGFuZCBGIGNoYW5nZSBpdC4KKyMgT2RkIG1lcmdlIEcgdGFrZXMgdGhlIG9sZCB2ZXJzaW9uIGZyb20gQi4KKyMgSSBjaGFuZ2VzIGl0LCBidXQgSiByZXZlcnRzIGl0LCBzbyBLIGlzIFRSRUVTQU1FIHRvIGJvdGggcGFyZW50cy4KKyMgSCBhbmQgTCBib3RoIGNoYW5nZSAiZmlsZSIsIGFuZCBNIG1lcmdlcyB0aG9zZSBjaGFuZ2VzLgorCit0ZXN0X2Rlc2NyaXB0aW9uPSdUUkVFU0FNRSBhbmQgbGltaXRpbmcnCisKKy4gLi90ZXN0LWxpYi5zaAorCitub3RlICgpIHsKKwlnaXQgdGFnICIkMSIKK30KKwordW5ub3RlICgpIHsKKwlnaXQgbmFtZS1yZXYgLS10YWdzIC0tc3RkaW4gfCBzZWQgLWUgInN8JF94NDAgKHRhZ3MvXChbXildKlwpKVwoWyAJXVwpfFwxXDJ8ZyIKK30KKwordGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCisJdGVzdF9jb21taXQgIkluaXRpYWwgZmlsZSIgZmlsZSAiSGkgdGhlcmUiIEEgJiYKKwlnaXQgYnJhbmNoIG90aGVyLWJyYW5jaCAmJgorCisJdGVzdF9jb21taXQgImZpbGU9SGVsbG8iIGZpbGUgIkhlbGxvIiBCICYmCisJZ2l0IGJyYW5jaCB0aGlyZC1icmFuY2ggJiYKKworCWdpdCBjaGVja291dCBvdGhlci1icmFuY2ggJiYKKwl0ZXN0X2NvbW1pdCAiQWRkZWQgb3RoZXIiIG90aGVyICJIZWxsbyIgQyAmJgorCisJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCXRlc3RfbWVyZ2UgRCBvdGhlci1icmFuY2ggJiYKKworCWdpdCBjaGVja291dCB0aGlyZC1icmFuY2ggJiYKKwl0ZXN0X2NvbW1pdCAiVGhpcmQgZmlsZSIgdGhpcmQgIk5vdGhpbmciIEUgJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X2NvbW1pdCAiZmlsZT1CbGFoIiBmaWxlICJCbGFoIiBGICYmCisKKwl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC0tbm8tY29tbWl0IHRoaXJkLWJyYW5jaCAmJgorCWdpdCBjaGVja291dCB0aGlyZC1icmFuY2ggZmlsZSAmJgorCWdpdCBjb21taXQgJiYKKwlub3RlIEcgJiYKKwlnaXQgYnJhbmNoIGZpZGRsZXItYnJhbmNoICYmCisKKwlnaXQgY2hlY2tvdXQgLWIgcGFydDItYnJhbmNoICYmCisJdGVzdF9jb21taXQgImZpbGU9UGFydCAyIiBmaWxlICJQYXJ0IDIiIEggJiYKKworCWdpdCBjaGVja291dCBmaWRkbGVyLWJyYW5jaCAmJgorCXRlc3RfY29tbWl0ICJCYWQgY29tbWl0IiBmaWxlICJTaWxseSIgSSAmJgorCisJdGVzdF90aWNrICYmIGdpdCByZXZlcnQgSSAmJiBub3RlIEogJiYKKworCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwl0ZXN0X3RpY2sgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgZmlkZGxlci1icmFuY2ggJiYKKwlub3RlIEsKKworCXRlc3RfY29tbWl0ICJmaWxlPVBhcnQgMSIgZmlsZSAiUGFydCAxIiBMICYmCisKKwl0ZXN0X3RpY2sgJiYgdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIHBhcnQyLWJyYW5jaCAmJgorCXRlc3RfY29tbWl0IE0gZmlsZSAiUGFydHMgMSsyIgorJworCitjaGVja19vdXRjb21lICgpIHsKKwlvdXRjb21lPSQxCisJc2hpZnQKKworCWNhc2UgIiQxIiBpbgorCSoiKCIqKQorCQlGTVQ9IiVQCSVIIHwgJXMiCisJCW11bmdlX2FjdHVhbD0iCisJCQlzL15cKFteCV0qXCkJXChbXiBdKlwpIC4qLyhcMSlcMi8KKwkJCXMvIC8vZworCQkJcy8oKS8vCisJCSIKKwkJOzsKKwkqKQorCQlGTVQ9IiVIIHwgJXMiCisJCW11bmdlX2FjdHVhbD0icy9eXChbXiBdKlwpIC4qL1wxLyIKKwkJOzsKKwllc2FjICYmCisJcHJpbnRmICIlc1xuIiAkMSA+ZXhwZWN0ICYmCisJc2hpZnQKKworCXBhcmFtPSIkKiIgJiYKKwl0ZXN0X2V4cGVjdF8kb3V0Y29tZSAibG9nICRwYXJhbSIgJworCQlnaXQgbG9nIC0tZm9ybWF0PSIkRk1UIiAkcGFyYW0gfAorCQl1bm5vdGUgPmFjdHVhbCAmJgorCQlzZWQgLWUgIiRtdW5nZV9hY3R1YWwiIDxhY3R1YWwgPmNoZWNrICYmCisJCXRlc3RfY21wIGV4cGVjdCBjaGVjayB8fCB7CisJCQljYXQgYWN0dWFsCisJCQlmYWxzZQorCQl9CisJJworfQorCitjaGVja19yZXN1bHQgKCkgeworCWNoZWNrX291dGNvbWUgc3VjY2VzcyAiJEAiCit9CisKKyMgT2RkIG1lcmdlIEcgZHJvcHMgYSBjaGFuZ2UgaW4gRi4gSW1wb3J0YW50IHRoYXQgRyBpcyBsaXN0ZWQgaW4gYWxsCisjIGV4Y2VwdCB0aGUgbW9zdCBiYXNpYyBsaXN0LiBBY2hpZXZpbmcgdGhpcyBtZWFucyBub3JtYWwgbWVyZ2UgRCB3aWxsIGFsc28gYmUKKyMgc2hvd24gaW4gbm9ybWFsIGZ1bGwtaGlzdG9yeSwgYXMgd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdW5sZXNzIHdlIGRvIGEKKyMgc2ltcGxpZmljYXRpb24gcGFzcy4gQWZ0ZXIgc2ltcGxpZmljYXRpb24sIEQgaXMgZHJvcHBlZCBidXQgRyByZW1haW5zLgorIyBBbHNvLCBtZXJnZSBzaW1wbGlmaWNhdGlvbiBvZiBHIHNob3VsZCBub3QgZHJvcCB0aGUgcGFyZW50IEIgdGhhdCB0aGUgZGVmYXVsdAorIyBzaW1wbGUgaGlzdG9yeSBmb2xsb3dzLgorY2hlY2tfcmVzdWx0ICdNIEwgSyBKIEkgSCBHIEYgRSBEIEMgQiBBJworY2hlY2tfcmVzdWx0ICcoTEgpTSAoSylMIChHSilLIChJKUogKEcpSSAoRylIIChGRSlHIChEKUYgKEIpRSAoQkMpRCAoQSlDIChBKUIgQScKK2NoZWNrX3Jlc3VsdCAnTSBIIEwgSyBKIEkgRyBFIEYgRCBDIEIgQScgLS10b3BvLW9yZGVyCitjaGVja19yZXN1bHQgJ00gTCBIIEIgQScgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoQilMIChCKUggKEEpQiBBJyAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEggRyBGIEQgQiBBJyAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhMSClNIChLKUwgKEdKKUsgKEkpSiAoRylJIChHKUggKEZCKUcgKEQpRiAoQkEpRCAoQSlCIEEnIC0tZnVsbC1oaXN0b3J5IC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhMSClNIChHKUggKEopTCAoSSlKIChHKUkgKEZCKUcgKEIpRiAoQSlCIEEnIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnTSBMIEsgRyBGIEQgQiBBJyAtLWZpcnN0LXBhcmVudAorY2hlY2tfcmVzdWx0ICdNIEwgRyBGIEIgQScgLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisjIENoZWNrIHRoYXQgb2RkIG1lcmdlIEcgcmVtYWlucyBzaG93biB3aGVuIEYgaXMgdGhlIGJvdHRvbS4KK2NoZWNrX3Jlc3VsdCAnTSBMIEsgSiBJIEggRyBFJyBGLi5NCitjaGVja19yZXN1bHQgJ00gSCBMIEsgSiBJIEcgRScgRi4uTSAtLXRvcG8tb3JkZXIKK2NoZWNrX3Jlc3VsdCAnTSBMIEgnIEYuLk0gLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoQilMIChCKUgnIC0tcGFyZW50cyBGLi5NIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnTSBMIEogSSBIIEcnIEYuLk0gLS1mdWxsLWhpc3RvcnkgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoSylMIChHSilLIChJKUogKEcpSSAoRylIIChGQilHJyBGLi5NIC0tZnVsbC1oaXN0b3J5IC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhMSClNIChHKUggKEopTCAoSSlKIChHKUkgKEZCKUcnIEYuLk0gLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdNIEwgSyBKIEkgSCBHJyBGLi5NIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEggRycgRi4uTSAtLWFuY2VzdHJ5LXBhdGggLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoSylMIChHSilLIChJKUogKEcpSSAoRylIIChGRSlHJyBGLi5NIC0tYW5jZXN0cnktcGF0aCAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoTEgpTSAoRylIIChKKUwgKEkpSiAoRylJIChGRSlHJyBGLi5NIC0tYW5jZXN0cnktcGF0aCAtLXNpbXBsaWZ5LW1lcmdlcyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBLIEcnIEYuLk0gLS1maXJzdC1wYXJlbnQKK2NoZWNrX3Jlc3VsdCAnTSBMIEcnIEYuLk0gLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisjIE5vdGUgdGhhdCBHIGlzIHBydW5lZCB3aGVuIEUgaXMgdGhlIGJvdHRvbSwgZXZlbiBpZiBpdCdzIHRoZSBzYW1lIGNvbW1pdCBsaXN0CisjIElmIHdlIHdhbnQgaGlzdG9yeSBzaW5jZSBFLCB0aGVuIHdlJ3JlIHF1aXRlIGhhcHB5IHRvIGlnbm9yZSBHIHRoYXQgdG9vayBFLgorY2hlY2tfcmVzdWx0ICdNIEwgSyBKIEkgSCBHJyBFLi5NIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEgnIEUuLk0gLS1hbmNlc3RyeS1wYXRoIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKExIKU0gKEspTCAoRUopSyAoSSlKIChFKUkgKEUpSCcgRS4uTSAtLWFuY2VzdHJ5LXBhdGggLS1wYXJlbnRzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKExIKU0gKEUpSCAoSilMIChJKUogKEUpSScgRS4uTSAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorCisjIFNob3VsZCBzdGlsbCBiZSBhYmxlIHRvIGlnbm9yZSBJLUogYnJhbmNoIGluIHNpbXBsZSBsb2csIGRlc3BpdGUgbGltaXRpbmcKKyMgdG8gRy4KK2NoZWNrX3Jlc3VsdCAnTSBMIEsgSiBJIEgnIEcuLk0KK2NoZWNrX3Jlc3VsdCAnTSBIIEwgSyBKIEknIEcuLk0gLS10b3BvLW9yZGVyCitjaGVja19yZXN1bHQgJ00gTCBIJyBHLi5NIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKExIKU0gKEcpTCAoRylIJyBHLi5NIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBKIEkgSCcgRy4uTSAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBLIEogSSBIJyBHLi5NIC0tZnVsbC1oaXN0b3J5IC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gSCBMIEogSScgRy4uTSAtLXNpbXBsaWZ5LW1lcmdlcyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gTCBLIEogSSBIJyBHLi5NIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdNIEwgSiBJIEgnIEcuLk0gLS1hbmNlc3RyeS1wYXRoIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnTSBMIEsgSiBJIEgnIEcuLk0gLS1hbmNlc3RyeS1wYXRoIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ00gSCBMIEogSScgRy4uTSAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorCisjIEIuLkYgc2hvdWxkIGJlIGFibGUgdG8gc2ltcGxpZnkgdGhlIG1lcmdlIEQgZnJvbSBpcnJlbGV2YW50IHNpZGUgYnJhbmNoIEMuCisjIERlZmF1bHQgbG9nIHNob3VsZCBhbHNvIGJlIGZyZWUgdG8gZm9sbG93IEItRCwgYW5kIGlnbm9yZSBDLgorIyBCdXQgLS1mdWxsLWhpc3Rvcnkgc2hvdWxkbid0IGRyb3AgRCBvbiBpdHMgb3duIC0gd2l0aG91dCBzaW1wbGlmaWNhdGlvbiwKKyMgd2UgY2FuJ3QgZGVjaWRlIGlmIHRoZSBtZXJnZSBmcm9tIElOVEVSRVNUSU5HIGNvbW1pdCBDIHdhcyBzZW5zaWJsZS4KK2NoZWNrX3Jlc3VsdCAnRiBEIEMnIEIuLkYKK2NoZWNrX3Jlc3VsdCAnRicgQi4uRiAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhCKUYnIEIuLkYgLS1wYXJlbnRzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnRiBEJyBCLi5GIC0tZnVsbC1oaXN0b3J5IC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnKEQpRiAoQkEpRCcgQi4uRiAtLWZ1bGwtaGlzdG9yeSAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoQilGJyBCLi5GIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnRiBEJyBCLi5GIC0tYW5jZXN0cnktcGF0aAorY2hlY2tfcmVzdWx0ICdGJyBCLi5GIC0tYW5jZXN0cnktcGF0aCAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0YnIEIuLkYgLS1hbmNlc3RyeS1wYXRoIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0YnIEIuLkYgLS1hbmNlc3RyeS1wYXRoIC0tc2ltcGxpZnktbWVyZ2VzIC0tIGZpbGUKK2NoZWNrX3Jlc3VsdCAnRiBEJyBCLi5GIC0tZmlyc3QtcGFyZW50CitjaGVja19yZXN1bHQgJ0YnIEIuLkYgLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisjIEUuLi5GIHNob3VsZCBiZSBlcXVpdmFsZW50IHRvIEUgRiBeQiwgYW5kIGJlIGFibGUgdG8gZHJvcCBEIGFzIGFib3ZlLgorY2hlY2tfcmVzdWx0ICdGJyBFIEYgXkIgLS0gZmlsZSAjIGluY2x1ZGVzIEQKK2NoZWNrX3Jlc3VsdCAnRicgRS4uLkYgLS0gZmlsZSAjIGluY2x1ZGVzIEQKKworIyBBbnkgc29ydCBvZiBmdWxsIGhpc3Rvcnkgb2YgQy4uRiBzaG91bGQgc2hvdyBELCBhcyBpdCdzIHRoZSBjb25uZWN0aW9uIHRvIEMsCisjIGFuZCBpdCBkaWZmZXJzIGZyb20gaXQuCitjaGVja19yZXN1bHQgJ0YgRCBCJyBDLi5GCitjaGVja19yZXN1bHQgJ0YgQicgQy4uRiAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhCKUYgKEEpQicgQy4uRiAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQgQicgQy4uRiAtLWZ1bGwtaGlzdG9yeSAtLSBmaWxlCitjaGVja19yZXN1bHQgJyhEKUYgKEJDKUQgKEEpQicgQy4uRiAtLWZ1bGwtaGlzdG9yeSAtLXBhcmVudHMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICcoRClGIChCQylEIChBKUInIEMuLkYgLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQnIEMuLkYgLS1hbmNlc3RyeS1wYXRoCitjaGVja19yZXN1bHQgJ0YgRCcgQy4uRiAtLWFuY2VzdHJ5LXBhdGggLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQnIEMuLkYgLS1hbmNlc3RyeS1wYXRoIC0tcGFyZW50cyAtLSBmaWxlCitjaGVja19yZXN1bHQgJ0YgRCcgQy4uRiAtLWFuY2VzdHJ5LXBhdGggLS1zaW1wbGlmeS1tZXJnZXMgLS0gZmlsZQorY2hlY2tfcmVzdWx0ICdGIEQgQicgQy4uRiAtLWZpcnN0LXBhcmVudAorY2hlY2tfcmVzdWx0ICdGIEInIEMuLkYgLS1maXJzdC1wYXJlbnQgLS0gZmlsZQorCisKK3Rlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjEyMC1kZXNjcmliZS5zaCBiL3QvdDYxMjAtZGVzY3JpYmUuc2gKaW5kZXggZjY3YWE2Zi4uYzBlNWIyYSAxMDA3NTUKLS0tIGEvdC90NjEyMC1kZXNjcmliZS5zaAorKysgYi90L3Q2MTIwLWRlc2NyaWJlLnNoCkBAIC0xMTAsNiArMTEwLDkgQEAKIGNoZWNrX2Rlc2NyaWJlIEItMC0qIC0tbG9uZyBIRUFEXl4yXgogY2hlY2tfZGVzY3JpYmUgQS0zLSogLS1sb25nIEhFQUReXjIKIAorY2hlY2tfZGVzY3JpYmUgYy03LSogLS10YWdzCitjaGVja19kZXNjcmliZSBlLTMtKiAtLWZpcnN0LXBhcmVudCAtLXRhZ3MKKwogOiA+ZXJyLmV4cGVjdAogY2hlY2tfZGVzY3JpYmUgQSAtLWFsbCBBXjAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIHdhcm5pbmcgd2FzIGRpc3BsYXllZCBmb3IgQScgJwpAQCAtMTcxLDQgKzE3NCwyOCBAQAogCiBjaGVja19kZXNjcmliZSAidGVzdDItbGlnaHR3ZWlnaHQtKiIgLS1sb25nIC0tdGFncyAtLW1hdGNoPSJ0ZXN0Mi0qIiBIRUFEXgogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICduYW1lLXJldiB3aXRoIGV4YWN0IHRhZ3MnICcKKwllY2hvIEEgPmV4cGVjdCAmJgorCXRhZ19vYmplY3Q9JChnaXQgcmV2LXBhcnNlIHJlZnMvdGFncy9BKSAmJgorCWdpdCBuYW1lLXJldiAtLXRhZ3MgLS1uYW1lLW9ubHkgJHRhZ19vYmplY3QgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKworCWVjaG8gIkFeMCIgPmV4cGVjdCAmJgorCXRhZ2dlZF9jb21taXQ9JChnaXQgcmV2LXBhcnNlICJyZWZzL3RhZ3MvQV4wIikgJiYKKwlnaXQgbmFtZS1yZXYgLS10YWdzIC0tbmFtZS1vbmx5ICR0YWdnZWRfY29tbWl0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rlc2NyaWJlIC0tY29udGFpbnMgd2l0aCB0aGUgZXhhY3QgdGFncycgJworCWVjaG8gIkFeMCIgPmV4cGVjdCAmJgorCXRhZ19vYmplY3Q9JChnaXQgcmV2LXBhcnNlIHJlZnMvdGFncy9BKSAmJgorCWdpdCBkZXNjcmliZSAtLWNvbnRhaW5zICR0YWdfb2JqZWN0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwllY2hvICJBXjAiID5leHBlY3QgJiYKKwl0YWdnZWRfY29tbWl0PSQoZ2l0IHJldi1wYXJzZSAicmVmcy90YWdzL0FeMCIpICYmCisJZ2l0IGRlc2NyaWJlIC0tY29udGFpbnMgJHRhZ2dlZF9jb21taXQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3MTAyLXJlc2V0LnNoIGIvdC90NzEwMi1yZXNldC5zaAppbmRleCBkZjgyZWM5Li44ZDRiNTBkIDEwMDc1NQotLS0gYS90L3Q3MTAyLXJlc2V0LnNoCisrKyBiL3QvdDcxMDItcmVzZXQuc2gKQEAgLTksNiArOSwxOSBAQAogCiAuIC4vdGVzdC1saWIuc2gKIAorY29tbWl0X21zZyAoKSB7CisJIyBTdHJpbmcgIm1vZGlmeSAybmQgZmlsZSAoY2hhbmdlZCkiIHBhcnRseSBpbiBHZXJtYW4KKwkjICh0cmFuc2xhdGVkIHdpdGggR29vZ2xlIFRyYW5zbGF0ZSksCisJIyBlbmNvZGVkIGluIFVURi04LCB1c2VkIGFzIGEgY29tbWl0IGxvZyBtZXNzYWdlIGJlbG93LgorCW1zZz0ibW9kaWZ5IDJuZCBmaWxlIChnZVwzMDNcMjQ0bmRlcnQpXG4iCisJaWYgdGVzdCAtbiAiJDEiCisJdGhlbgorCQlwcmludGYgIiRtc2ciIHwgaWNvbnYgLWYgdXRmLTggLXQgIiQxIgorCWVsc2UKKwkJcHJpbnRmICIkbXNnIgorCWZpCit9CisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NyZWF0aW5nIGluaXRpYWwgZmlsZXMgYW5kIGNvbW1pdHMnICcKIAl0ZXN0X3RpY2sgJiYKIAllY2hvICIxc3QgZmlsZSIgPmZpcnN0ICYmCkBAIC0yOCw3ICs0MSw3IEBACiAKIAllY2hvICIxc3QgbGluZSAybmQgZmlsZSIgPnNlY29uZGZpbGUgJiYKIAllY2hvICIybmQgbGluZSAybmQgZmlsZSIgPj5zZWNvbmRmaWxlICYmCi0JZ2l0IGNvbW1pdCAtYSAtbSAibW9kaWZ5IDJuZCBmaWxlIiAmJgorCWdpdCAtYyAiaTE4bi5jb21taXRFbmNvZGluZz1pc284ODU5LTEiIGNvbW1pdCAtYSAtbSAiJChjb21taXRfbXNnIGlzbzg4NTktMSkiICYmCiAJaGVhZDU9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpCiAnCiAjIGdpdCBsb2cgLS1wcmV0dHk9b25lbGluZSAjIHRvIHNlZSB0aG9zZSBTSEExIGludm9sdmVkCkBAIC00NCw2ICs1NywyMCBAQAogCWRvbmUgfCB0ZXN0X2NtcCAuY2F0X2V4cGVjdCAtCiB9CiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IC0taGFyZCBtZXNzYWdlJyAnCisJaGV4PSQoZ2l0IGxvZyAtMSAtLWZvcm1hdD0iJWgiKSAmJgorCWdpdCByZXNldCAtLWhhcmQgPiAuYWN0dWFsICYmCisJZWNobyBIRUFEIGlzIG5vdyBhdCAkaGV4ICQoY29tbWl0X21zZykgPiAuZXhwZWN0ZWQgJiYKKwl0ZXN0X2NtcCAuZXhwZWN0ZWQgLmFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXNldCAtLWhhcmQgbWVzc2FnZSAoaXNvODg1OS0xIGxvZ291dHB1dGVuY29kaW5nKScgJworCWhleD0kKGdpdCBsb2cgLTEgLS1mb3JtYXQ9IiVoIikgJiYKKwlnaXQgLWMgImkxOG4ubG9nT3V0cHV0RW5jb2Rpbmc9aXNvODg1OS0xIiByZXNldCAtLWhhcmQgPiAuYWN0dWFsICYmCisJZWNobyBIRUFEIGlzIG5vdyBhdCAkaGV4ICQoY29tbWl0X21zZyBpc284ODU5LTEpID4gLmV4cGVjdGVkICYmCisJdGVzdF9jbXAgLmV4cGVjdGVkIC5hY3R1YWwKKycKKwogPi5kaWZmX2V4cGVjdAogPi5jYWNoZWRfZXhwZWN0CiBjYXQgPi5jYXRfZXhwZWN0IDw8RU9GCkBAIC0xOTIsNyArMjE5LDggQEAKIAknY2hhbmdpbmcgZmlsZXMgYW5kIHJlZG8gdGhlIGxhc3QgY29tbWl0IHNob3VsZCBzdWNjZWVkJyAnCiAJZWNobyAiM3JkIGxpbmUgMm5kIGZpbGUiID4+c2Vjb25kZmlsZSAmJgogCWdpdCBjb21taXQgLWEgLUMgT1JJR19IRUFEICYmCi0JY2hlY2tfY2hhbmdlcyAzZDNiN2JlMDExYTU4Y2EwYzE3OWFlNDVkOTRlNmM4M2MwYjBjZDBkICYmCisJaGVhZDQ9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IEhFQUQpICYmCisJY2hlY2tfY2hhbmdlcyAkaGVhZDQgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgT1JJR19IRUFEKSIgPSBcCiAJCQkkaGVhZDUKICcKQEAgLTIxMSw3ICsyMzksNyBAQAogCWdpdCByZXNldCAtLWhhcmQgSEVBRH4yICYmCiAJY2hlY2tfY2hhbmdlcyBkZGFlZmUwMGYxZGExNjg2NDU5MWM2MWZkYzdhZGI1ZDdjZDZiNzRlICYmCiAJdGVzdCAiJChnaXQgcmV2LXBhcnNlIE9SSUdfSEVBRCkiID0gXAotCQkJM2QzYjdiZTAxMWE1OGNhMGMxNzlhZTQ1ZDk0ZTZjODNjMGIwY2QwZAorCQkJJGhlYWQ0CiAnCiAKID4uZGlmZl9leHBlY3QKQEAgLTMwMyw3ICszMzEsNyBAQAogCiAJZWNobyAiMXN0IGxpbmUgMm5kIGZpbGUiID5zZWNvbmRmaWxlICYmCiAJZWNobyAiMm5kIGxpbmUgMm5kIGZpbGUiID4+c2Vjb25kZmlsZSAmJgotCWdpdCBjb21taXQgLWEgLW0gIm1vZGlmeSAybmQgZmlsZSIgJiYKKwlnaXQgLWMgImkxOG4uY29tbWl0RW5jb2Rpbmc9aXNvODg1OS0xIiBjb21taXQgLWEgLW0gIiQoY29tbWl0X21zZyBpc284ODU5LTEpIiAmJgogCWNoZWNrX2NoYW5nZXMgJGhlYWQ1CiAnCiAKQEAgLTMyNiwxMCArMzU0LDExIEBACiAJZ2l0IGNoZWNrb3V0IGJyYW5jaDIgJiYKIAllY2hvICIzcmQgbGluZSBpbiBicmFuY2gyIiA+PnNlY29uZGZpbGUgJiYKIAlnaXQgY29tbWl0IC1hIC1tICJjaGFuZ2UgaW4gYnJhbmNoMiIgJiYKKwloZWFkMz0kKGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkgJiYKIAogCXRlc3RfbXVzdF9mYWlsIGdpdCBwdWxsIC4gYnJhbmNoMSAmJgogCWdpdCByZXNldCAtLWhhcmQgJiYKLQljaGVja19jaGFuZ2VzIDc3YWJiMzM3MDczZmI0MzY5YTdhZDY5ZmY2ZjVlYzBlNGQ2YjU0YmIKKwljaGVja19jaGFuZ2VzICRoZWFkMwogJwogCiA+LmRpZmZfZXhwZWN0CkBAIC00NTcsNyArNDg2LDcgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLXF1aWV0IC0tIHNlY29uZGZpbGUgJiYKIAl0ZXN0IC16ICIkKGdpdCBkaWZmIC0tY2FjaGVkIC0tbmFtZS1vbmx5KSIgJiYKIAl0ZXN0IC1mIHNlY29uZGZpbGUgJiYKLQl0ZXN0ICEgLXMgc2Vjb25kZmlsZQorCXRlc3RfbXVzdF9iZV9lbXB0eSBzZWNvbmRmaWxlCiAKICcKIApkaWZmIC0tZ2l0IGEvdC90NzMwMS1jbGVhbi1pbnRlcmFjdGl2ZS5zaCBiL3QvdDczMDEtY2xlYW4taW50ZXJhY3RpdmUuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2FlMzk0ZQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDczMDEtY2xlYW4taW50ZXJhY3RpdmUuc2gKQEAgLTAsMCArMSw0NzUgQEAKKyMhL2Jpbi9zaAorCit0ZXN0X2Rlc2NyaXB0aW9uPSdnaXQgY2xlYW4gLWkgYmFzaWMgdGVzdHMnCisKKy4gLi90ZXN0LWxpYi5zaAorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCcgJworCisJbWtkaXIgLXAgc3JjICYmCisJdG91Y2ggc3JjL3BhcnQxLmMgTWFrZWZpbGUgJiYKKwllY2hvIGJ1aWxkID4uZ2l0aWdub3JlICYmCisJZWNobyBcKi5vID4+LmdpdGlnbm9yZSAmJgorCWdpdCBhZGQgLiAmJgorCWdpdCBjb21taXQgLW0gc2V0dXAgJiYKKwl0b3VjaCBzcmMvcGFydDIuYyBSRUFETUUgJiYKKwlnaXQgYWRkIC4KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWkgKGM6IGNsZWFuIGhvdGtleSknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBzcmMvcGFydDMuaCBzcmMvcGFydDQuYyBzcmMvcGFydDQuaCBcCisJZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCWVjaG8gYyB8IGdpdCBjbGVhbiAtaSAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAhIC1mIGEub3V0ICYmCisJdGVzdCAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWkgKGNsOiBjbGVhbiBwcmVmaXgpJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgc3JjL3BhcnQzLmggc3JjL3BhcnQ0LmMgc3JjL3BhcnQ0LmggXAorCWRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwllY2hvIGNsIHwgZ2l0IGNsZWFuIC1pICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0ICEgLWYgYS5vdXQgJiYKKwl0ZXN0IC1mIGRvY3MvbWFudWFsLnR4dCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuaCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgISAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaSAocXVpdCknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBzcmMvcGFydDMuaCBzcmMvcGFydDQuYyBzcmMvcGFydDQuaCBcCisJZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCWVjaG8gcXVpdCB8IGdpdCBjbGVhbiAtaSAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAtZiBhLm91dCAmJgorCXRlc3QgLWYgZG9jcy9tYW51YWwudHh0ICYmCisJdGVzdCAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5jICYmCisJdGVzdCAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaSAoQ3RybCtEKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJZWNobyAiXDA0IiB8IGdpdCBjbGVhbiAtaSAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAtZiBhLm91dCAmJgorCXRlc3QgLWYgZG9jcy9tYW51YWwudHh0ICYmCisJdGVzdCAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5jICYmCisJdGVzdCAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaWQgKGZpbHRlciBhbGwpJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgc3JjL3BhcnQzLmggc3JjL3BhcnQ0LmMgc3JjL3BhcnQ0LmggXAorCWRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwkoZWNobyBmOyBlY2hvICIqIjsgZWNobzsgZWNobyBjKSB8IFwKKwlnaXQgY2xlYW4gLWlkICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0IC1mIGEub3V0ICYmCisJdGVzdCAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAtZiBzcmMvcGFydDMuaCAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5oICYmCisJdGVzdCAtZiBvYmoubyAmJgorCXRlc3QgLWYgYnVpbGQvbGliLnNvCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1pZCAoZmlsdGVyIHBhdHRlcm5zKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGVjaG8gZjsgZWNobyAicGFydDMuKiAqLm91dCI7IGVjaG87IGVjaG8gYykgfCBcCisJZ2l0IGNsZWFuIC1pZCAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAtZiBhLm91dCAmJgorCXRlc3QgISAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAtZiBzcmMvcGFydDMuaCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgISAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaWQgKGZpbHRlciBwYXR0ZXJucyAyKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGVjaG8gZjsgZWNobyAiKiAhKi5vdXQiOyBlY2hvOyBlY2hvIGMpIHwgXAorCWdpdCBjbGVhbiAtaWQgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgISAtZiBhLm91dCAmJgorCXRlc3QgLWYgZG9jcy9tYW51YWwudHh0ICYmCisJdGVzdCAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5jICYmCisJdGVzdCAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaWQgKHNlbGVjdCAtIGFsbCknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBzcmMvcGFydDMuaCBzcmMvcGFydDQuYyBzcmMvcGFydDQuaCBcCisJZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCShlY2hvIHM7IGVjaG8gIioiOyBlY2hvOyBlY2hvIGMpIHwgXAorCWdpdCBjbGVhbiAtaWQgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgISAtZiBhLm91dCAmJgorCXRlc3QgISAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWlkIChzZWxlY3QgLSBub25lKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGVjaG8gczsgZWNobzsgZWNobyBjKSB8IFwKKwlnaXQgY2xlYW4gLWlkICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0IC1mIGEub3V0ICYmCisJdGVzdCAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAtZiBzcmMvcGFydDMuaCAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5oICYmCisJdGVzdCAtZiBvYmoubyAmJgorCXRlc3QgLWYgYnVpbGQvbGliLnNvCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1pZCAoc2VsZWN0IC0gbnVtYmVyKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGVjaG8gczsgZWNobyAzOyBlY2hvOyBlY2hvIGMpIHwgXAorCWdpdCBjbGVhbiAtaWQgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgLWYgYS5vdXQgJiYKKwl0ZXN0IC1mIGRvY3MvbWFudWFsLnR4dCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5jICYmCisJdGVzdCAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaWQgKHNlbGVjdCAtIG51bWJlciAyKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGVjaG8gczsgZWNobyAyIDM7IGVjaG8gNTsgZWNobzsgZWNobyBjKSB8IFwKKwlnaXQgY2xlYW4gLWlkICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0IC1mIGEub3V0ICYmCisJdGVzdCAhIC1mIGRvY3MvbWFudWFsLnR4dCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5oICYmCisJdGVzdCAtZiBvYmoubyAmJgorCXRlc3QgLWYgYnVpbGQvbGliLnNvCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1pZCAoc2VsZWN0IC0gbnVtYmVyIDMpJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgc3JjL3BhcnQzLmggc3JjL3BhcnQ0LmMgc3JjL3BhcnQ0LmggXAorCWRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwkoZWNobyBzOyBlY2hvIDMsNCA1OyBlY2hvOyBlY2hvIGMpIHwgXAorCWdpdCBjbGVhbiAtaWQgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgLWYgYS5vdXQgJiYKKwl0ZXN0IC1mIGRvY3MvbWFudWFsLnR4dCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuaCAmJgorCXRlc3QgISAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWlkIChzZWxlY3QgLSBmaWxlbmFtZXMpJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgZm9vLnR4dCBiYXIudHh0IGJhei50eHQgJiYKKwkoZWNobyBzOyBlY2hvIGEub3V0IGZvIGJhIGJhcjsgZWNobzsgZWNobyBjKSB8IFwKKwlnaXQgY2xlYW4gLWlkICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgISAtZiBhLm91dCAmJgorCXRlc3QgISAtZiBmb28udHh0ICYmCisJdGVzdCAhIC1mIGJhci50eHQgJiYKKwl0ZXN0IC1mIGJhei50eHQgJiYKKwlybSBiYXoudHh0CisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1pZCAoc2VsZWN0IC0gcmFuZ2UpJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgc3JjL3BhcnQzLmggc3JjL3BhcnQ0LmMgc3JjL3BhcnQ0LmggXAorCWRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwkoZWNobyBzOyBlY2hvIDEsMy00OyBlY2hvIDI7IGVjaG87IGVjaG8gYykgfCBcCisJZ2l0IGNsZWFuIC1pZCAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAhIC1mIGEub3V0ICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0My5oICYmCisJdGVzdCAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0ICEgLWYgZG9jcy9tYW51YWwudHh0ICYmCisJdGVzdCAtZiBvYmoubyAmJgorCXRlc3QgLWYgYnVpbGQvbGliLnNvCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1pZCAoc2VsZWN0IC0gcmFuZ2UgMiknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBzcmMvcGFydDMuaCBzcmMvcGFydDQuYyBzcmMvcGFydDQuaCBcCisJZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCShlY2hvIHM7IGVjaG8gNC0gMTsgZWNobzsgZWNobyBjKSB8IFwKKwlnaXQgY2xlYW4gLWlkICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0ICEgLWYgYS5vdXQgJiYKKwl0ZXN0IC1mIGRvY3MvbWFudWFsLnR4dCAmJgorCXRlc3QgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmggJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWlkIChpbnZlcnNlIHNlbGVjdCknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBzcmMvcGFydDMuaCBzcmMvcGFydDQuYyBzcmMvcGFydDQuaCBcCisJZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCShlY2hvIHM7IGVjaG8gIioiOyBlY2hvIC01LSAxIC0yOyBlY2hvOyBlY2hvIGMpIHwgXAorCWdpdCBjbGVhbiAtaWQgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgISAtZiBhLm91dCAmJgorCXRlc3QgLWYgZG9jcy9tYW51YWwudHh0ICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0My5oICYmCisJdGVzdCAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWlkIChhc2spJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgc3JjL3BhcnQzLmggc3JjL3BhcnQ0LmMgc3JjL3BhcnQ0LmggXAorCWRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwkoZWNobyBhOyBlY2hvIFk7IGVjaG8geTsgZWNobyBubzsgZWNobyB5ZXM7IGVjaG8gYmFkOyBlY2hvKSB8IFwKKwlnaXQgY2xlYW4gLWlkICYmCisJdGVzdCAtZiBNYWtlZmlsZSAmJgorCXRlc3QgLWYgUkVBRE1FICYmCisJdGVzdCAtZiBzcmMvcGFydDEuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQyLmMgJiYKKwl0ZXN0ICEgLWYgYS5vdXQgJiYKKwl0ZXN0ICEgLWYgZG9jcy9tYW51YWwudHh0ICYmCisJdGVzdCAtZiBzcmMvcGFydDMuYyAmJgorCXRlc3QgISAtZiBzcmMvcGFydDMuaCAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0NC5oICYmCisJdGVzdCAtZiBvYmoubyAmJgorCXRlc3QgLWYgYnVpbGQvbGliLnNvCisKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0IGNsZWFuIC1pZCAoYXNrIC0gQ3RybCtEKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGVjaG8gYTsgZWNobyBZOyBlY2hvIG5vOyBlY2hvIHllczsgZWNobyAiXDA0IikgfCBcCisJZ2l0IGNsZWFuIC1pZCAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAhIC1mIGEub3V0ICYmCisJdGVzdCAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5oICYmCisJdGVzdCAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgY2xlYW4gLWlkIHdpdGggcHJlZml4IGFuZCBwYXRoIChmaWx0ZXIpJyAnCisKKwlta2RpciAtcCBidWlsZCBkb2NzICYmCisJdG91Y2ggYS5vdXQgc3JjL3BhcnQzLmMgc3JjL3BhcnQzLmggc3JjL3BhcnQ0LmMgc3JjL3BhcnQ0LmggXAorCWRvY3MvbWFudWFsLnR4dCBvYmoubyBidWlsZC9saWIuc28gJiYKKwkoY2QgYnVpbGQvICYmIFwKKwkgKGVjaG8gZjsgZWNobyAiZG9jcyI7IGVjaG8gIiouaCI7IGVjaG8gOyBlY2hvIGMpIHwgXAorCSBnaXQgY2xlYW4gLWlkIC4uKSAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAhIC1mIGEub3V0ICYmCisJdGVzdCAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5oICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0NC5jICYmCisJdGVzdCAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaWQgd2l0aCBwcmVmaXggYW5kIHBhdGggKHNlbGVjdCBieSBuYW1lKScgJworCisJbWtkaXIgLXAgYnVpbGQgZG9jcyAmJgorCXRvdWNoIGEub3V0IHNyYy9wYXJ0My5jIHNyYy9wYXJ0My5oIHNyYy9wYXJ0NC5jIHNyYy9wYXJ0NC5oIFwKKwlkb2NzL21hbnVhbC50eHQgb2JqLm8gYnVpbGQvbGliLnNvICYmCisJKGNkIGJ1aWxkLyAmJiBcCisJIChlY2hvIHM7IGVjaG8gIi4uL2RvY3MvIjsgZWNobyAiLi4vc3JjL3BhcnQzLmMiOyBcCisJICBlY2hvICIuLi9zcmMvcGFydDQuYyI7ICBlY2hvOyBlY2hvIGMpIHwgXAorCSBnaXQgY2xlYW4gLWlkIC4uKSAmJgorCXRlc3QgLWYgTWFrZWZpbGUgJiYKKwl0ZXN0IC1mIFJFQURNRSAmJgorCXRlc3QgLWYgc3JjL3BhcnQxLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0Mi5jICYmCisJdGVzdCAtZiBhLm91dCAmJgorCXRlc3QgISAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0ICEgLWYgc3JjL3BhcnQzLmMgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5oICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0NC5jICYmCisJdGVzdCAtZiBzcmMvcGFydDQuaCAmJgorCXRlc3QgLWYgb2JqLm8gJiYKKwl0ZXN0IC1mIGJ1aWxkL2xpYi5zbworCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBjbGVhbiAtaWQgd2l0aCBwcmVmaXggYW5kIHBhdGggKGFzayknICcKKworCW1rZGlyIC1wIGJ1aWxkIGRvY3MgJiYKKwl0b3VjaCBhLm91dCBzcmMvcGFydDMuYyBzcmMvcGFydDMuaCBzcmMvcGFydDQuYyBzcmMvcGFydDQuaCBcCisJZG9jcy9tYW51YWwudHh0IG9iai5vIGJ1aWxkL2xpYi5zbyAmJgorCShjZCBidWlsZC8gJiYgXAorCSAoZWNobyBhOyBlY2hvIFk7IGVjaG8geTsgZWNobyBubzsgZWNobyB5ZXM7IGVjaG8gYmFkOyBlY2hvKSB8IFwKKwkgZ2l0IGNsZWFuIC1pZCAuLikgJiYKKwl0ZXN0IC1mIE1ha2VmaWxlICYmCisJdGVzdCAtZiBSRUFETUUgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0MS5jICYmCisJdGVzdCAtZiBzcmMvcGFydDIuYyAmJgorCXRlc3QgISAtZiBhLm91dCAmJgorCXRlc3QgISAtZiBkb2NzL21hbnVhbC50eHQgJiYKKwl0ZXN0IC1mIHNyYy9wYXJ0My5jICYmCisJdGVzdCAhIC1mIHNyYy9wYXJ0My5oICYmCisJdGVzdCAtZiBzcmMvcGFydDQuYyAmJgorCXRlc3QgLWYgc3JjL3BhcnQ0LmggJiYKKwl0ZXN0IC1mIG9iai5vICYmCisJdGVzdCAtZiBidWlsZC9saWIuc28KKworJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc0MDAtc3VibW9kdWxlLWJhc2ljLnNoIGIvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2gKaW5kZXggN2UyMzQyMS4uNWVlOTdiMCAxMDA3NTUKLS0tIGEvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2gKKysrIGIvdC90NzQwMC1zdWJtb2R1bGUtYmFzaWMuc2gKQEAgLTc4LDcgKzc4LDcgQEAKIAkoCiAJCWNkIGFkZHRlc3QgJiYKIAkJZ2l0IHN1Ym1vZHVsZSBhZGQgLXEgIiRzdWJtb2R1cmwiIHN1Ym1vZCA+YWN0dWFsICYmCi0JCXRlc3QgISAtcyBhY3R1YWwgJiYKKwkJdGVzdF9tdXN0X2JlX2VtcHR5IGFjdHVhbCAmJgogCQllY2hvICJnaXRkaXI6IC4uLy5naXQvbW9kdWxlcy9zdWJtb2QiID5leHBlY3QgJiYKIAkJdGVzdF9jbXAgZXhwZWN0IHN1Ym1vZC8uZ2l0ICYmCiAJCSgKQEAgLTIxMiw2ICsyMTIsMzIgQEAKIAl0ZXN0X2NtcCBlbXB0eSB1bnRyYWNrZWQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGFkZCBpbiBzdWJkaXJlY3RvcnknICcKKwllY2hvICJyZWZzL2hlYWRzL21hc3RlciIgPmV4cGVjdCAmJgorCT5lbXB0eSAmJgorCisJbWtkaXIgYWRkdGVzdC9zdWIgJiYKKwkoCisJCWNkIGFkZHRlc3Qvc3ViICYmCisJCWdpdCBzdWJtb2R1bGUgYWRkICIkc3VibW9kdXJsIiAuLi9yZWFsc3VibW9kMyAmJgorCQlnaXQgc3VibW9kdWxlIGluaXQKKwkpICYmCisKKwlybSAtZiBoZWFkcyBoZWFkIHVudHJhY2tlZCAmJgorCWluc3BlY3QgYWRkdGVzdC9yZWFsc3VibW9kMyAuLi8uLiAmJgorCXRlc3RfY21wIGV4cGVjdCBoZWFkcyAmJgorCXRlc3RfY21wIGV4cGVjdCBoZWFkICYmCisJdGVzdF9jbXAgZW1wdHkgdW50cmFja2VkCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBhZGQgaW4gc3ViZGlyZWN0b3J5IHdpdGggcmVsYXRpdmUgcGF0aCBzaG91bGQgZmFpbCcgJworCSgKKwkJY2QgYWRkdGVzdC9zdWIgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSBhZGQgLi4vLi4vIHN1Ym1vZDMgMj4uLi8uLi9vdXRwdXQuZXJyCisJKSAmJgorCXRlc3RfaTE4bmdyZXAgdG9wbGV2ZWwgb3V0cHV0LmVycgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCAtIGFkZCBhbiBleGFtcGxlIGVudHJ5IHRvIC5naXRtb2R1bGVzJyAnCiAJR0lUX0NPTkZJRz0uZ2l0bW9kdWxlcyBcCiAJZ2l0IGNvbmZpZyBzdWJtb2R1bGUuZXhhbXBsZS51cmwgZ2l0Oi8vZXhhbXBsZS5jb20vaW5pdC5naXQKQEAgLTMwOCw3ICszMzQsNyBAQAogCiAJbWtkaXIgaW5pdCAmJgogCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC1xID51cGRhdGUub3V0ICYmCi0JdGVzdCAhIC1zIHVwZGF0ZS5vdXQgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgdXBkYXRlLm91dCAmJgogCiAJaW5zcGVjdCBpbml0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IGhlYWQtc2hhMQpAQCAtMzE5LDYgKzM0NSwyNiBAQAogCWdyZXAgIl4gJHJldjEiIGxpc3QKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdHVzICJ1cC10by1kYXRlIiBmcm9tIHN1YmRpcmVjdG9yeScgJworCW1rZGlyIC1wIHN1YiAmJgorCSgKKwkJY2Qgc3ViICYmCisJCWdpdCBzdWJtb2R1bGUgc3RhdHVzID4uLi9saXN0CisJKSAmJgorCWdyZXAgIl4gJHJldjEiIGxpc3QgJiYKKwlncmVwICJcXC5cXC4vaW5pdCIgbGlzdAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0dXMgInVwLXRvLWRhdGUiIGZyb20gc3ViZGlyZWN0b3J5IHdpdGggcGF0aCcgJworCW1rZGlyIC1wIHN1YiAmJgorCSgKKwkJY2Qgc3ViICYmCisJCWdpdCBzdWJtb2R1bGUgc3RhdHVzIC4uL2luaXQgPi4uL2xpc3QKKwkpICYmCisJZ3JlcCAiXiAkcmV2MSIgbGlzdCAmJgorCWdyZXAgIlxcLlxcLi9pbml0IiBsaXN0CisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBzaG91bGQgYmUgIm1vZGlmaWVkIiBhZnRlciBzdWJtb2R1bGUgY29tbWl0JyAnCiAJKAogCQljZCBpbml0ICYmCkBAIC0zOTksNiArNDQ1LDI1IEBACiAJZ2l0IHJldi1wYXJzZSAtLXJlc29sdmUtZ2l0LWRpciBpbml0Ly5naXQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndXBkYXRlIC0taW5pdCBmcm9tIHN1YmRpcmVjdG9yeScgJworCW12IGluaXQgaW5pdDIgJiYKKwlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5leGFtcGxlLnVybCAiJChwd2QpL2luaXQyIiAmJgorCWdpdCBjb25maWcgLS1yZW1vdmUtc2VjdGlvbiBzdWJtb2R1bGUuZXhhbXBsZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBjb25maWcgc3VibW9kdWxlLmV4YW1wbGUudXJsICYmCisKKwlta2RpciAtcCBzdWIgJiYKKwkoCisJCWNkIHN1YiAmJgorCQlnaXQgc3VibW9kdWxlIHVwZGF0ZSAuLi9pbml0ID51cGRhdGUub3V0ICYmCisJCWNhdCB1cGRhdGUub3V0ICYmCisJCXRlc3RfaTE4bmdyZXAgIm5vdCBpbml0aWFsaXplZCIgdXBkYXRlLm91dCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tcmVzb2x2ZS1naXQtZGlyIC4uL2luaXQvLmdpdCAmJgorCisJCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAuLi9pbml0CisJKSAmJgorCWdpdCByZXYtcGFyc2UgLS1yZXNvbHZlLWdpdC1kaXIgaW5pdC8uZ2l0CisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RvIG5vdCBhZGQgZmlsZXMgZnJvbSBhIHN1Ym1vZHVsZScgJwogCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgpAQCAtNjk2LDcgKzc2MSw3IEBACiAJCXJtIC1yZiByZXBvICYmCiAJCWdpdCBybSByZXBvICYmCiAJCWdpdCBzdWJtb2R1bGUgYWRkIC1xIC0tbmFtZSByZXBvX25ldyAiJHN1Ym1vZHVybC9iYXJlLmdpdCIgcmVwbyA+YWN0dWFsICYmCi0JCXRlc3QgISAtcyBhY3R1YWwgJiYKKwkJdGVzdF9tdXN0X2JlX2VtcHR5IGFjdHVhbCAmJgogCQllY2hvICJnaXRkaXI6IC4uLy5naXQvbW9kdWxlcy9zdWJtb2QiID5leHBlY3QgJiYKIAkJdGVzdF9jbXAgZXhwZWN0IHN1Ym1vZC8uZ2l0ICYmCiAJCSgKQEAgLTc3Miw2ICs4MzcsMjEgQEAKIAlybWRpciBpbml0CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBkZWluaXQgZnJvbSBzdWJkaXJlY3RvcnknICcKKwlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgJiYKKwlnaXQgY29uZmlnIHN1Ym1vZHVsZS5leGFtcGxlLmZvbyBiYXIgJiYKKwlta2RpciAtcCBzdWIgJiYKKwkoCisJCWNkIHN1YiAmJgorCQlnaXQgc3VibW9kdWxlIGRlaW5pdCAuLi9pbml0ID4uLi9vdXRwdXQKKwkpICYmCisJZ3JlcCAiXFwuXFwuL2luaXQiIG91dHB1dCAmJgorCXRlc3QgLXogIiQoZ2l0IGNvbmZpZyAtLWdldC1yZWdleHAgInN1Ym1vZHVsZVwuZXhhbXBsZVwuIikiICYmCisJdGVzdCAtbiAiJChnaXQgY29uZmlnIC0tZ2V0LXJlZ2V4cCAic3VibW9kdWxlXC5leGFtcGxlMlwuIikiICYmCisJdGVzdCAtZiBleGFtcGxlMi8uZ2l0ICYmCisJcm1kaXIgaW5pdAorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgZGVpbml0IC4gZGVpbml0cyBhbGwgaW5pdGlhbGl6ZWQgc3VibW9kdWxlcycgJwogCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAmJgogCWdpdCBjb25maWcgc3VibW9kdWxlLmV4YW1wbGUuZm9vIGJhciAmJgpAQCAtODgzLDQgKzk2MywyMCBAQAogCWdpdCBzdWJtb2R1bGUgPiYyICYmCiAJdGVzdCAtbiAiJChnaXQgc3VibW9kdWxlIHwgZ3JlcCAiJHN2bmFtZSIpIgogJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgYWRkIGNsb25lIHNoYWxsb3cgc3VibW9kdWxlJyAnCisJbWtkaXIgc3VwZXIgJiYKKwlwd2Q9JChwd2QpCisJKAorCQljZCBzdXBlciAmJgorCQlnaXQgaW5pdCAmJgorCQlnaXQgc3VibW9kdWxlIGFkZCAtLWRlcHRoPTEgZmlsZTovLyIkcHdkIi9leGFtcGxlMiBzdWJtb2R1bGUgJiYKKwkJKAorCQkJY2Qgc3VibW9kdWxlICYmCisJCQl0ZXN0IDEgPSAkKGdpdCBsb2cgLS1vbmVsaW5lIHwgd2MgLWwpCisJCSkKKwkpCisnCisKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NDAxLXN1Ym1vZHVsZS1zdW1tYXJ5LnNoIGIvdC90NzQwMS1zdWJtb2R1bGUtc3VtbWFyeS5zaAppbmRleCAzMGI0MjllLi5hYzI0MzRjIDEwMDc1NQotLS0gYS90L3Q3NDAxLXN1Ym1vZHVsZS1zdW1tYXJ5LnNoCisrKyBiL3QvdDc0MDEtc3VibW9kdWxlLXN1bW1hcnkuc2gKQEAgLTQ1LDYgKzQ1LDQyIEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAiCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FkZGVkIHN1Ym1vZHVsZSAoc3ViZGlyZWN0b3J5KScgIgorCW1rZGlyIHN1YiAmJgorCSgKKwkJY2Qgc3ViICYmCisJCWdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+Li4vYWN0dWFsCisJKSAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisqIC4uL3NtMSAwMDAwMDAwLi4uJGhlYWQxICgyKToKKyAgPiBBZGQgZm9vMgorCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKyIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkZWQgc3VibW9kdWxlIChzdWJkaXJlY3Rvcnkgb25seSknICIKKwkoCisJCWNkIHN1YiAmJgorCQlnaXQgc3VibW9kdWxlIHN1bW1hcnkgLiA+Li4vYWN0dWFsCisJKSAmJgorCT5leHBlY3RlZCAmJgorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorIgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGRlZCBzdWJtb2R1bGUgKHN1YmRpcmVjdG9yeSB3aXRoIGV4cGxpY2l0IHBhdGgpJyAiCisJKAorCQljZCBzdWIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IC4uL3NtMSA+Li4vYWN0dWFsCisJKSAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisqIC4uL3NtMSAwMDAwMDAwLi4uJGhlYWQxICgyKToKKyAgPiBBZGQgZm9vMgorCitFT0YKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKyIKKwogY29tbWl0X2ZpbGUgc20xICYmCiBoZWFkMj0kKGFkZF9maWxlIHNtMSBmb28zKQogCkBAIC03Niw4ICsxMTIsOCBAQAogKQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUoYmFja3dhcmQpJyAiCi0gICAgZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5ID5hY3R1YWwgJiYKLSAgICBjYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCWdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKICogc20xICRoZWFkMi4uLiRoZWFkMyAoMik6CiAgIDwgQWRkIGZvbzMKICAgPCBBZGQgZm9vMgpAQCAtODksOCArMTI1LDggQEAKIGhlYWQ0PSQoYWRkX2ZpbGUgc20xIGZvbzQgZm9vNSkgJiYKIGhlYWQ0X2Z1bGw9JChHSVRfRElSPXNtMS8uZ2l0IGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgSEVBRCkKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZShiYWNrd2FyZCBhbmQgZm9yd2FyZCknICIKLSAgICBnaXQgc3VibW9kdWxlIHN1bW1hcnkgPmFjdHVhbCAmJgotICAgIGNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5ID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogKiBzbTEgJGhlYWQyLi4uJGhlYWQ0ICg0KToKICAgPiBBZGQgZm9vNQogICA+IEFkZCBmb280CkBAIC0xMDIsMTUgKzEzOCwxNSBAQAogIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICctLXN1bW1hcnktbGltaXQnICIKLSAgICBnaXQgc3VibW9kdWxlIHN1bW1hcnkgLW4gMyA+YWN0dWFsICYmCi0gICAgY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwlnaXQgc3VibW9kdWxlIHN1bW1hcnkgLW4gMyA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKICogc20xICRoZWFkMi4uLiRoZWFkNCAoNCk6CiAgID4gQWRkIGZvbzUKICAgPiBBZGQgZm9vNAogICA8IEFkZCBmb28zCiAKIEVPRgotICAgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogIgogCiBjb21taXRfZmlsZSBzbTEgJiYKQEAgLTEyMiw4ICsxNTgsOCBAQAogbXYgc20xLWJhayBzbTEKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndHlwZWNoYW5nZWQgc3VibW9kdWxlKHN1Ym1vZHVsZS0+YmxvYiksIC0tY2FjaGVkJyAiCi0gICAgZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IC0tY2FjaGVkID5hY3R1YWwgJiYKLSAgICBjYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCWdpdCBzdWJtb2R1bGUgc3VtbWFyeSAtLWNhY2hlZCA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKICogc20xICRoZWFkNChzdWJtb2R1bGUpLT4kaGVhZDUoYmxvYikgKDMpOgogICA8IEFkZCBmb281CiAKQEAgLTEzMiw1OSArMTY4LDU5IEBACiAiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3R5cGVjaGFuZ2VkIHN1Ym1vZHVsZShzdWJtb2R1bGUtPmJsb2IpLCAtLWZpbGVzJyAiCi0gICAgZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IC0tZmlsZXMgPmFjdHVhbCAmJgotICAgIGNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IC0tZmlsZXMgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAqIHNtMSAkaGVhZDUoYmxvYiktPiRoZWFkNChzdWJtb2R1bGUpICgzKToKICAgPiBBZGQgZm9vNQogCiBFT0YKLSAgICB0ZXN0X2kxOG5jbXAgYWN0dWFsIGV4cGVjdGVkCisJdGVzdF9pMThuY21wIGFjdHVhbCBleHBlY3RlZAogIgogCiBybSAtcmYgc20xICYmCiBnaXQgY2hlY2tvdXQtaW5kZXggc20xCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0eXBlY2hhbmdlZCBzdWJtb2R1bGUoc3VibW9kdWxlLT5ibG9iKScgIgotICAgIGdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+YWN0dWFsICYmCi0gICAgY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwlnaXQgc3VibW9kdWxlIHN1bW1hcnkgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAqIHNtMSAkaGVhZDQoc3VibW9kdWxlKS0+JGhlYWQ1KGJsb2IpOgogCiBFT0YKLSAgICB0ZXN0X2kxOG5jbXAgYWN0dWFsIGV4cGVjdGVkCisJdGVzdF9pMThuY21wIGFjdHVhbCBleHBlY3RlZAogIgogCiBybSAtZiBzbTEgJiYKIHRlc3RfY3JlYXRlX3JlcG8gc20xICYmCiBoZWFkNj0kKGFkZF9maWxlIHNtMSBmb282IGZvbzcpCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdub25leGlzdGVudCBjb21taXQnICIKLSAgICBnaXQgc3VibW9kdWxlIHN1bW1hcnkgPmFjdHVhbCAmJgotICAgIGNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5ID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogKiBzbTEgJGhlYWQ0Li4uJGhlYWQ2OgogICBXYXJuOiBzbTEgZG9lc24ndCBjb250YWluIGNvbW1pdCAkaGVhZDRfZnVsbAogCiBFT0YKLSAgICB0ZXN0X2kxOG5jbXAgYWN0dWFsIGV4cGVjdGVkCisJdGVzdF9pMThuY21wIGFjdHVhbCBleHBlY3RlZAogIgogCiBjb21taXRfZmlsZQogdGVzdF9leHBlY3Rfc3VjY2VzcyAndHlwZWNoYW5nZWQgc3VibW9kdWxlKGJsb2ItPnN1Ym1vZHVsZSknICIKLSAgICBnaXQgc3VibW9kdWxlIHN1bW1hcnkgPmFjdHVhbCAmJgotICAgIGNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5ID5hY3R1YWwgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogKiBzbTEgJGhlYWQ1KGJsb2IpLT4kaGVhZDYoc3VibW9kdWxlKSAoMik6CiAgID4gQWRkIGZvbzcKIAogRU9GCi0gICAgdGVzdF9pMThuY21wIGV4cGVjdGVkIGFjdHVhbAorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwKICIKIAogY29tbWl0X2ZpbGUgc20xICYmCiBybSAtcmYgc20xCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWxldGVkIHN1Ym1vZHVsZScgIgotICAgIGdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+YWN0dWFsICYmCi0gICAgY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwlnaXQgc3VibW9kdWxlIHN1bW1hcnkgPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAqIHNtMSAkaGVhZDYuLi4wMDAwMDAwOgogCiBFT0YKLSAgICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICIKIAogdGVzdF9jcmVhdGVfcmVwbyBzbTIgJiYKQEAgLTE5Miw0MyArMjI4LDQzIEBACiBnaXQgYWRkIHNtMgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtdWx0aXBsZSBzdWJtb2R1bGVzJyAiCi0gICAgZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5ID5hY3R1YWwgJiYKLSAgICBjYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgorCWdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKICogc20xICRoZWFkNi4uLjAwMDAwMDA6CiAKICogc20yIDAwMDAwMDAuLi4kaGVhZDcgKDIpOgogICA+IEFkZCBmb285CiAKIEVPRgotICAgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogIgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwYXRoIGZpbHRlcicgIgotICAgIGdpdCBzdWJtb2R1bGUgc3VtbWFyeSBzbTIgPmFjdHVhbCAmJgotICAgIGNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCisJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IHNtMiA+YWN0dWFsICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKICogc20yIDAwMDAwMDAuLi4kaGVhZDcgKDIpOgogICA+IEFkZCBmb285CiAKIEVPRgotICAgIHRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAorCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogIgogCiBjb21taXRfZmlsZSBzbTIKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdmVuIGNvbW1pdCcgIgotICAgIGdpdCBzdWJtb2R1bGUgc3VtbWFyeSBIRUFEXiA+YWN0dWFsICYmCi0gICAgY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKKwlnaXQgc3VibW9kdWxlIHN1bW1hcnkgSEVBRF4gPmFjdHVhbCAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAqIHNtMSAkaGVhZDYuLi4wMDAwMDAwOgogCiAqIHNtMiAwMDAwMDAwLi4uJGhlYWQ3ICgyKToKICAgPiBBZGQgZm9vOQogCiBFT0YKLSAgICB0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKKwl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICIKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1mb3Itc3RhdHVzJyAiCi0gICAgZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IC0tZm9yLXN0YXR1cyBIRUFEXiA+YWN0dWFsICYmCi0gICAgdGVzdF9pMThuY21wIGFjdHVhbCAtIDw8RU9GCisJZ2l0IHN1Ym1vZHVsZSBzdW1tYXJ5IC0tZm9yLXN0YXR1cyBIRUFEXiA+YWN0dWFsICYmCisJdGVzdF9pMThuY21wIGFjdHVhbCAtIDw8RU9GCiAjIFN1Ym1vZHVsZSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoKICMKICMgKiBzbTEgJGhlYWQ2Li4uMDAwMDAwMDoKQEAgLTI0MCwxNCArMjc2LDE0IEBACiAiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ZhaWwgd2hlbiB1c2luZyAtLWZpbGVzIHRvZ2V0aGVyIHdpdGggLS1jYWNoZWQnICIKLSAgICB0ZXN0X211c3RfZmFpbCBnaXQgc3VibW9kdWxlIHN1bW1hcnkgLS1maWxlcyAtLWNhY2hlZAorCXRlc3RfbXVzdF9mYWlsIGdpdCBzdWJtb2R1bGUgc3VtbWFyeSAtLWZpbGVzIC0tY2FjaGVkCiAiCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Nob3VsZCBub3QgZmFpbCBpbiBhbiBlbXB0eSByZXBvJyAiCi0gICAgZ2l0IGluaXQgeHl6enkgJiYKLSAgICBjZCB4eXp6eSAmJgotICAgIGdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+b3V0cHV0IDI+JjEgJiYKLSAgICB0ZXN0X2NtcCBvdXRwdXQgL2Rldi9udWxsCisJZ2l0IGluaXQgeHl6enkgJiYKKwljZCB4eXp6eSAmJgorCWdpdCBzdWJtb2R1bGUgc3VtbWFyeSA+b3V0cHV0IDI+JjEgJiYKKwl0ZXN0X2NtcCBvdXRwdXQgL2Rldi9udWxsCiAiCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NzQwMy1zdWJtb2R1bGUtc3luYy5zaCBiL3QvdDc0MDMtc3VibW9kdWxlLXN5bmMuc2gKaW5kZXggOTRlMjZjNC4uNzliYzEzNSAxMDA3NTUKLS0tIGEvdC90NzQwMy1zdWJtb2R1bGUtc3luYy5zaAorKysgYi90L3Q3NDAzLXN1Ym1vZHVsZS1zeW5jLnNoCkBAIC0xMSwyMTYgKzExLDMzOCBAQAogLiAuL3Rlc3QtbGliLnNoCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwotCWVjaG8gZmlsZSA+IGZpbGUgJiYKKwllY2hvIGZpbGUgPmZpbGUgJiYKIAlnaXQgYWRkIGZpbGUgJiYKIAl0ZXN0X3RpY2sgJiYKIAlnaXQgY29tbWl0IC1tIHVwc3RyZWFtICYmCiAJZ2l0IGNsb25lIC4gc3VwZXIgJiYKIAlnaXQgY2xvbmUgc3VwZXIgc3VibW9kdWxlICYmCi0JKGNkIHN1Ym1vZHVsZSAmJgotCSBnaXQgc3VibW9kdWxlIGFkZCAuLi9zdWJtb2R1bGUgc3ViLXN1Ym1vZHVsZSAmJgotCSB0ZXN0X3RpY2sgJiYKLQkgZ2l0IGNvbW1pdCAtbSAic3ViLXN1Ym1vZHVsZSIKKwkoCisJCWNkIHN1Ym1vZHVsZSAmJgorCQlnaXQgc3VibW9kdWxlIGFkZCAuLi9zdWJtb2R1bGUgc3ViLXN1Ym1vZHVsZSAmJgorCQl0ZXN0X3RpY2sgJiYKKwkJZ2l0IGNvbW1pdCAtbSAic3ViLXN1Ym1vZHVsZSIKIAkpICYmCi0JKGNkIHN1cGVyICYmCi0JIGdpdCBzdWJtb2R1bGUgYWRkIC4uL3N1Ym1vZHVsZSBzdWJtb2R1bGUgJiYKLQkgdGVzdF90aWNrICYmCi0JIGdpdCBjb21taXQgLW0gInN1Ym1vZHVsZSIKKwkoCisJCWNkIHN1cGVyICYmCisJCWdpdCBzdWJtb2R1bGUgYWRkIC4uL3N1Ym1vZHVsZSBzdWJtb2R1bGUgJiYKKwkJdGVzdF90aWNrICYmCisJCWdpdCBjb21taXQgLW0gInN1Ym1vZHVsZSIKIAkpICYmCiAJZ2l0IGNsb25lIHN1cGVyIHN1cGVyLWNsb25lICYmCi0JKGNkIHN1cGVyLWNsb25lICYmIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSkgJiYKKwkoCisJCWNkIHN1cGVyLWNsb25lICYmCisJCWdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZQorCSkgJiYKIAlnaXQgY2xvbmUgc3VwZXIgZW1wdHktY2xvbmUgJiYKLQkoY2QgZW1wdHktY2xvbmUgJiYgZ2l0IHN1Ym1vZHVsZSBpbml0KSAmJgorCSgKKwkJY2QgZW1wdHktY2xvbmUgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBpbml0CisJKSAmJgogCWdpdCBjbG9uZSBzdXBlciB0b3Atb25seS1jbG9uZSAmJgogCWdpdCBjbG9uZSBzdXBlciByZWxhdGl2ZS1jbG9uZSAmJgotCShjZCByZWxhdGl2ZS1jbG9uZSAmJiBnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUpICYmCisJKAorCQljZCByZWxhdGl2ZS1jbG9uZSAmJgorCQlnaXQgc3VibW9kdWxlIHVwZGF0ZSAtLWluaXQgLS1yZWN1cnNpdmUKKwkpICYmCiAJZ2l0IGNsb25lIHN1cGVyIHJlY3Vyc2l2ZS1jbG9uZSAmJgotCShjZCByZWN1cnNpdmUtY2xvbmUgJiYgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlKQotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGFuZ2Ugc3VibW9kdWxlJyAnCi0JKGNkIHN1Ym1vZHVsZSAmJgotCSBlY2hvIHNlY29uZCBsaW5lID4+IGZpbGUgJiYKLQkgdGVzdF90aWNrICYmCi0JIGdpdCBjb21taXQgLWEgLW0gImNoYW5nZSBzdWJtb2R1bGUiCisJKAorCQljZCByZWN1cnNpdmUtY2xvbmUgJiYKKwkJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlCiAJKQogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGFuZ2Ugc3VibW9kdWxlJyAnCisJKAorCQljZCBzdWJtb2R1bGUgJiYKKwkJZWNobyBzZWNvbmQgbGluZSA+PmZpbGUgJiYKKwkJdGVzdF90aWNrICYmCisJCWdpdCBjb21taXQgLWEgLW0gImNoYW5nZSBzdWJtb2R1bGUiCisJKQorJworCityZXNldF9zdWJtb2R1bGVfdXJscyAoKSB7CisJbG9jYWwgcm9vdAorCXJvb3Q9JChwd2QpICYmCisJKAorCQljZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCAiJHJvb3Qvc3VibW9kdWxlIgorCSkgJiYKKwkoCisJCWNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS9zdWItc3VibW9kdWxlICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwgIiRyb290L3N1Ym1vZHVsZSIKKwkpCit9CisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoYW5nZSBzdWJtb2R1bGUgdXJsJyAnCi0JKGNkIHN1cGVyICYmCi0JIGNkIHN1Ym1vZHVsZSAmJgotCSBnaXQgY2hlY2tvdXQgbWFzdGVyICYmCi0JIGdpdCBwdWxsCisJKAorCQljZCBzdXBlciAmJgorCQljZCBzdWJtb2R1bGUgJiYKKwkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCQlnaXQgcHVsbAogCSkgJiYKIAltdiBzdWJtb2R1bGUgbW92ZWQtc3VibW9kdWxlICYmCi0JKGNkIG1vdmVkLXN1Ym1vZHVsZSAmJgotCSBnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWItc3VibW9kdWxlLnVybCAuLi9tb3ZlZC1zdWJtb2R1bGUgJiYKLQkgdGVzdF90aWNrICYmCi0JIGdpdCBjb21taXQgLWEgLW0gbW92ZWQtc3ViLXN1Ym1vZHVsZQorCSgKKwkJY2QgbW92ZWQtc3VibW9kdWxlICYmCisJCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Yi1zdWJtb2R1bGUudXJsIC4uL21vdmVkLXN1Ym1vZHVsZSAmJgorCQl0ZXN0X3RpY2sgJiYKKwkJZ2l0IGNvbW1pdCAtYSAtbSBtb3ZlZC1zdWItc3VibW9kdWxlCiAJKSAmJgotCShjZCBzdXBlciAmJgotCSBnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzIHN1Ym1vZHVsZS5zdWJtb2R1bGUudXJsIC4uL21vdmVkLXN1Ym1vZHVsZSAmJgotCSB0ZXN0X3RpY2sgJiYKLQkgZ2l0IGNvbW1pdCAtYSAtbSBtb3ZlZC1zdWJtb2R1bGUKKwkoCisJCWNkIHN1cGVyICYmCisJCWdpdCBjb25maWcgLWYgLmdpdG1vZHVsZXMgc3VibW9kdWxlLnN1Ym1vZHVsZS51cmwgLi4vbW92ZWQtc3VibW9kdWxlICYmCisJCXRlc3RfdGljayAmJgorCQlnaXQgY29tbWl0IC1hIC1tIG1vdmVkLXN1Ym1vZHVsZQogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgc2hvdWxkIHVwZGF0ZSBzdWJtb2R1bGUgVVJMcycgJwotCShjZCBzdXBlci1jbG9uZSAmJgotCSBnaXQgcHVsbCAtLW5vLXJlY3Vyc2Utc3VibW9kdWxlcyAmJgotCSBnaXQgc3VibW9kdWxlIHN5bmMKKwkoCisJCWNkIHN1cGVyLWNsb25lICYmCisJCWdpdCBwdWxsIC0tbm8tcmVjdXJzZS1zdWJtb2R1bGVzICYmCisJCWdpdCBzdWJtb2R1bGUgc3luYwogCSkgJiYKLQl0ZXN0IC1kICIkKGNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZSAmJgotCSBnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCisJdGVzdCAtZCAiJCgKKwkJY2Qgc3VwZXItY2xvbmUvc3VibW9kdWxlICYmCisJCWdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwKIAkpIiAmJgotCXRlc3QgISAtZCAiJChjZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgotCSBnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCisJdGVzdCAhIC1kICIkKAorCQljZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCiAJKSIgJiYKLQkoY2Qgc3VwZXItY2xvbmUvc3VibW9kdWxlICYmCi0JIGdpdCBjaGVja291dCBtYXN0ZXIgJiYKLQkgZ2l0IHB1bGwKKwkoCisJCWNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZSAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBwdWxsCiAJKSAmJgotCShjZCBzdXBlci1jbG9uZSAmJgotCSB0ZXN0IC1kICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Ym1vZHVsZS51cmwpIgorCSgKKwkJY2Qgc3VwZXItY2xvbmUgJiYKKwkJdGVzdCAtZCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWJtb2R1bGUudXJsKSIKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMgLS1yZWN1cnNpdmUiIHNob3VsZCB1cGRhdGUgYWxsIHN1Ym1vZHVsZSBVUkxzJyAnCi0JKGNkIHN1cGVyLWNsb25lICYmCi0JIChjZCBzdWJtb2R1bGUgJiYKLQkgIGdpdCBwdWxsIC0tbm8tcmVjdXJzZS1zdWJtb2R1bGVzCi0JICkgJiYKLQkgZ2l0IHN1Ym1vZHVsZSBzeW5jIC0tcmVjdXJzaXZlCisJKAorCQljZCBzdXBlci1jbG9uZSAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUgJiYKKwkJCWdpdCBwdWxsIC0tbm8tcmVjdXJzZS1zdWJtb2R1bGVzCisJCSkgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBzeW5jIC0tcmVjdXJzaXZlCiAJKSAmJgotCXRlc3QgLWQgIiQoY2Qgc3VwZXItY2xvbmUvc3VibW9kdWxlICYmCi0JIGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwKKwl0ZXN0IC1kICIkKAorCQljZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybAogCSkiICYmCi0JdGVzdCAtZCAiJChjZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgotCSBnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCisJdGVzdCAtZCAiJCgKKwkJY2Qgc3VwZXItY2xvbmUvc3VibW9kdWxlL3N1Yi1zdWJtb2R1bGUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybAogCSkiICYmCi0JKGNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS9zdWItc3VibW9kdWxlICYmCi0JIGdpdCBjaGVja291dCBtYXN0ZXIgJiYKLQkgZ2l0IHB1bGwKKwkoCisJCWNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS9zdWItc3VibW9kdWxlICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IHB1bGwKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc2V0IHN1Ym1vZHVsZSBVUkxzJyAnCisJcmVzZXRfc3VibW9kdWxlX3VybHMgc3VwZXItY2xvbmUKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgc2hvdWxkIHVwZGF0ZSBzdWJtb2R1bGUgVVJMcyAtIHN1YmRpcmVjdG9yeScgJworCSgKKwkJY2Qgc3VwZXItY2xvbmUgJiYKKwkJZ2l0IHB1bGwgLS1uby1yZWN1cnNlLXN1Ym1vZHVsZXMgJiYKKwkJbWtkaXIgLXAgc3ViICYmCisJCWNkIHN1YiAmJgorCQlnaXQgc3VibW9kdWxlIHN5bmMgPi4uLy4uL291dHB1dAorCSkgJiYKKwlncmVwICJcXC5cXC4vc3VibW9kdWxlIiBvdXRwdXQgJiYKKwl0ZXN0IC1kICIkKAorCQljZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUgJiYKKwkJZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybAorCSkiICYmCisJdGVzdCAhIC1kICIkKAorCQljZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCisJKSIgJiYKKwkoCisJCWNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZSAmJgorCQlnaXQgY2hlY2tvdXQgbWFzdGVyICYmCisJCWdpdCBwdWxsCisJKSAmJgorCSgKKwkJY2Qgc3VwZXItY2xvbmUgJiYKKwkJdGVzdCAtZCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWJtb2R1bGUudXJsKSIKKwkpCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMgLS1yZWN1cnNpdmUiIHNob3VsZCB1cGRhdGUgYWxsIHN1Ym1vZHVsZSBVUkxzIC0gc3ViZGlyZWN0b3J5JyAnCisJKAorCQljZCBzdXBlci1jbG9uZSAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUgJiYKKwkJCWdpdCBwdWxsIC0tbm8tcmVjdXJzZS1zdWJtb2R1bGVzCisJCSkgJiYKKwkJbWtkaXIgLXAgc3ViICYmCisJCWNkIHN1YiAmJgorCQlnaXQgc3VibW9kdWxlIHN5bmMgLS1yZWN1cnNpdmUgPi4uLy4uL291dHB1dAorCSkgJiYKKwlncmVwICJcXC5cXC4vc3VibW9kdWxlL3N1Yi1zdWJtb2R1bGUiIG91dHB1dCAmJgorCXRlc3QgLWQgIiQoCisJCWNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZSAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCisJKSIgJiYKKwl0ZXN0IC1kICIkKAorCQljZCBzdXBlci1jbG9uZS9zdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgorCQlnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsCisJKSIgJiYKKwkoCisJCWNkIHN1cGVyLWNsb25lL3N1Ym1vZHVsZS9zdWItc3VibW9kdWxlICYmCisJCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwkJZ2l0IHB1bGwKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIHNob3VsZCB1cGRhdGUga25vd24gc3VibW9kdWxlIFVSTHMnICcKLQkoY2QgZW1wdHktY2xvbmUgJiYKLQkgZ2l0IHB1bGwgJiYKLQkgZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCi0JIHRlc3QgLWQgIiQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3VibW9kdWxlLnVybCkiCisJKAorCQljZCBlbXB0eS1jbG9uZSAmJgorCQlnaXQgcHVsbCAmJgorCQlnaXQgc3VibW9kdWxlIHN5bmMgJiYKKwkJdGVzdCAtZCAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWJtb2R1bGUudXJsKSIKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIHNob3VsZCBub3Qgdml2aWZ5IHVuaW50ZXJlc3Rpbmcgc3VibW9kdWxlJyAnCi0JKGNkIHRvcC1vbmx5LWNsb25lICYmCi0JIGdpdCBwdWxsICYmCi0JIGdpdCBzdWJtb2R1bGUgc3luYyAmJgotCSB0ZXN0IC16ICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Ym1vZHVsZS51cmwpIiAmJgotCSBnaXQgc3VibW9kdWxlIHN5bmMgc3VibW9kdWxlICYmCi0JIHRlc3QgLXogIiQoZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3VibW9kdWxlLnVybCkiCisJKAorCQljZCB0b3Atb25seS1jbG9uZSAmJgorCQlnaXQgcHVsbCAmJgorCQlnaXQgc3VibW9kdWxlIHN5bmMgJiYKKwkJdGVzdCAteiAiJChnaXQgY29uZmlnIHN1Ym1vZHVsZS5zdWJtb2R1bGUudXJsKSIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBzeW5jIHN1Ym1vZHVsZSAmJgorCQl0ZXN0IC16ICIkKGdpdCBjb25maWcgc3VibW9kdWxlLnN1Ym1vZHVsZS51cmwpIgogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIGZvbycgJwotCShjZCByZWxhdGl2ZS1jbG9uZSAmJgotCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIGZvbyAmJgotCSBnaXQgc3VibW9kdWxlIHN5bmMgJiYKLQkoY2Qgc3VibW9kdWxlICYmCi0JICNhY3R1YWwgZmFpbHMgd2l0aDogImNhbm5vdCBzdHJpcCBvZmYgdXJsIGZvbwotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi9zdWJtb2R1bGUiCi0JKQorCSgKKwkJY2QgcmVsYXRpdmUtY2xvbmUgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiBmb28gJiYKKwkJZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCisJCSgKKwkJCWNkIHN1Ym1vZHVsZSAmJgorCQkJI2FjdHVhbCBmYWlscyB3aXRoOiAiY2Fubm90IHN0cmlwIG9mZiB1cmwgZm9vCisJCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi9zdWJtb2R1bGUiCisJCSkKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIGhhbmRsZXMgb3JpZ2luIFVSTCBvZiB0aGUgZm9ybSBmb28vYmFyJyAnCi0JKGNkIHJlbGF0aXZlLWNsb25lICYmCi0JIGdpdCByZW1vdGUgc2V0LXVybCBvcmlnaW4gZm9vL2JhciAmJgotCSBnaXQgc3VibW9kdWxlIHN5bmMgJiYKLQkoY2Qgc3VibW9kdWxlICYmCi0JICNhY3R1YWwgZm9vL3N1Ym1vZHVsZQotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi9mb28vc3VibW9kdWxlIgotCSkKLQkoY2Qgc3VibW9kdWxlL3N1Yi1zdWJtb2R1bGUgJiYKLQkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgIT0gIi4uLy4uL2Zvby9zdWJtb2R1bGUiCi0JKQorCSgKKwkJY2QgcmVsYXRpdmUtY2xvbmUgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiBmb28vYmFyICYmCisJCWdpdCBzdWJtb2R1bGUgc3luYyAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUgJiYKKwkJCSNhY3R1YWwgZm9vL3N1Ym1vZHVsZQorCQkJdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vZm9vL3N1Ym1vZHVsZSIKKwkJKSAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgorCQkJdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgIT0gIi4uLy4uL2Zvby9zdWJtb2R1bGUiCisJCSkKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMgLS1yZWN1cnNpdmUiIHByb3BhZ2F0ZXMgY2hhbmdlcyBpbiBvcmlnaW4nICcKLQkoY2QgcmVjdXJzaXZlLWNsb25lICYmCi0JIGdpdCByZW1vdGUgc2V0LXVybCBvcmlnaW4gZm9vL2JhciAmJgotCSBnaXQgc3VibW9kdWxlIHN5bmMgLS1yZWN1cnNpdmUgJiYKLQkoY2Qgc3VibW9kdWxlICYmCi0JICNhY3R1YWwgZm9vL3N1Ym1vZHVsZQotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi9mb28vc3VibW9kdWxlIgotCSkKLQkoY2Qgc3VibW9kdWxlL3N1Yi1zdWJtb2R1bGUgJiYKLQkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vLi4vZm9vL3N1Ym1vZHVsZSIKLQkpCisJKAorCQljZCByZWN1cnNpdmUtY2xvbmUgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiBmb28vYmFyICYmCisJCWdpdCBzdWJtb2R1bGUgc3luYyAtLXJlY3Vyc2l2ZSAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUgJiYKKwkJCSNhY3R1YWwgZm9vL3N1Ym1vZHVsZQorCQkJdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vZm9vL3N1Ym1vZHVsZSIKKwkJKSAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUvc3ViLXN1Ym1vZHVsZSAmJgorCQkJdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vLi4vZm9vL3N1Ym1vZHVsZSIKKwkJKQogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIC4vZm9vJyAnCi0JKGNkIHJlbGF0aXZlLWNsb25lICYmCi0JIGdpdCByZW1vdGUgc2V0LXVybCBvcmlnaW4gLi9mb28gJiYKLQkgZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCi0JKGNkIHN1Ym1vZHVsZSAmJgotCSAjYWN0dWFsIC4vc3VibW9kdWxlCi0JIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uL3N1Ym1vZHVsZSIKLQkpCisJKAorCQljZCByZWxhdGl2ZS1jbG9uZSAmJgorCQlnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4vZm9vICYmCisJCWdpdCBzdWJtb2R1bGUgc3luYyAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUgJiYKKwkJCSNhY3R1YWwgLi9zdWJtb2R1bGUKKwkJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uL3N1Ym1vZHVsZSIKKwkJKQogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIC4vZm9vL2JhcicgJwotCShjZCByZWxhdGl2ZS1jbG9uZSAmJgotCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4vZm9vL2JhciAmJgotCSBnaXQgc3VibW9kdWxlIHN5bmMgJiYKLQkoY2Qgc3VibW9kdWxlICYmCi0JICNhY3R1YWwgLi9mb28vc3VibW9kdWxlCi0JIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uL2Zvby9zdWJtb2R1bGUiCi0JKQorCSgKKwkJY2QgcmVsYXRpdmUtY2xvbmUgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiAuL2Zvby9iYXIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCisJCSgKKwkJCWNkIHN1Ym1vZHVsZSAmJgorCQkJI2FjdHVhbCAuL2Zvby9zdWJtb2R1bGUKKwkJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uL2Zvby9zdWJtb2R1bGUiCisJCSkKIAkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJnaXQgc3VibW9kdWxlIHN5bmMiIGhhbmRsZXMgb3JpZ2luIFVSTCBvZiB0aGUgZm9ybSAuLi9mb28nICcKLQkoY2QgcmVsYXRpdmUtY2xvbmUgJiYKLQkgZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiAuLi9mb28gJiYKLQkgZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCi0JKGNkIHN1Ym1vZHVsZSAmJgotCSAjYWN0dWFsIC4uL3N1Ym1vZHVsZQotCSB0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi8uLi9zdWJtb2R1bGUiCi0JKQorCSgKKwkJY2QgcmVsYXRpdmUtY2xvbmUgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiAuLi9mb28gJiYKKwkJZ2l0IHN1Ym1vZHVsZSBzeW5jICYmCisJCSgKKwkJCWNkIHN1Ym1vZHVsZSAmJgorCQkJI2FjdHVhbCAuLi9zdWJtb2R1bGUKKwkJCXRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uLy4uL3N1Ym1vZHVsZSIKKwkJKQogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIC4uL2Zvby9iYXInICcKLQkoY2QgcmVsYXRpdmUtY2xvbmUgJiYKLQkgZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiAuLi9mb28vYmFyICYmCi0JIGdpdCBzdWJtb2R1bGUgc3luYyAmJgotCShjZCBzdWJtb2R1bGUgJiYKLQkgI2FjdHVhbCAuLi9mb28vc3VibW9kdWxlCi0JIHRlc3QgIiQoZ2l0IGNvbmZpZyByZW1vdGUub3JpZ2luLnVybCkiID0gIi4uLy4uL2Zvby9zdWJtb2R1bGUiCi0JKQorCSgKKwkJY2QgcmVsYXRpdmUtY2xvbmUgJiYKKwkJZ2l0IHJlbW90ZSBzZXQtdXJsIG9yaWdpbiAuLi9mb28vYmFyICYmCisJCWdpdCBzdWJtb2R1bGUgc3luYyAmJgorCQkoCisJCQljZCBzdWJtb2R1bGUgJiYKKwkJCSNhY3R1YWwgLi4vZm9vL3N1Ym1vZHVsZQorCQkJdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vLi4vZm9vL3N1Ym1vZHVsZSIKKwkJKQogCSkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnImdpdCBzdWJtb2R1bGUgc3luYyIgaGFuZGxlcyBvcmlnaW4gVVJMIG9mIHRoZSBmb3JtIC4uL2Zvby9iYXIgd2l0aCBkZWVwbHkgbmVzdGVkIHN1Ym1vZHVsZScgJwotCShjZCByZWxhdGl2ZS1jbG9uZSAmJgotCSBnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4uL2Zvby9iYXIgJiYKLQkgbWtkaXIgLXAgYS9iL2MgJiYKLQkgKCBjZCBhL2IvYyAmJgotCSAgIGdpdCBpbml0ICYmCi0JICAgOj4gLmdpdGlnbm9yZSAmJgotCSAgIGdpdCBhZGQgLmdpdGlnbm9yZSAmJgotCSAgIHRlc3RfdGljayAmJgotCSAgIGdpdCBjb21taXQgLW0gImluaXRpYWwgY29tbWl0IiApICYmCi0JIGdpdCBzdWJtb2R1bGUgYWRkIC4uL2Jhci9hL2IvYyAuL2EvYi9jICYmCi0JIGdpdCBzdWJtb2R1bGUgc3luYyAmJgotCShjZCBhL2IvYyAmJgotCSAjYWN0dWFsIC4uL2Zvby9iYXIvYS9iL2MKLQkgdGVzdCAiJChnaXQgY29uZmlnIHJlbW90ZS5vcmlnaW4udXJsKSIgPSAiLi4vLi4vLi4vLi4vZm9vL2Jhci9hL2IvYyIKLQkpCisJKAorCQljZCByZWxhdGl2ZS1jbG9uZSAmJgorCQlnaXQgcmVtb3RlIHNldC11cmwgb3JpZ2luIC4uL2Zvby9iYXIgJiYKKwkJbWtkaXIgLXAgYS9iL2MgJiYKKwkJKAorCQkJY2QgYS9iL2MgJiYKKwkJCWdpdCBpbml0ICYmCisJCQk+LmdpdGlnbm9yZSAmJgorCQkJZ2l0IGFkZCAuZ2l0aWdub3JlICYmCisJCQl0ZXN0X3RpY2sgJiYKKwkJCWdpdCBjb21taXQgLW0gImluaXRpYWwgY29tbWl0IgorCQkpICYmCisJCWdpdCBzdWJtb2R1bGUgYWRkIC4uL2Jhci9hL2IvYyAuL2EvYi9jICYmCisJCWdpdCBzdWJtb2R1bGUgc3luYyAmJgorCQkoCisJCQljZCBhL2IvYyAmJgorCQkJI2FjdHVhbCAuLi9mb28vYmFyL2EvYi9jCisJCQl0ZXN0ICIkKGdpdCBjb25maWcgcmVtb3RlLm9yaWdpbi51cmwpIiA9ICIuLi8uLi8uLi8uLi9mb28vYmFyL2EvYi9jIgorCQkpCiAJKQogJwogCmRpZmYgLS1naXQgYS90L3Q3NDA2LXN1Ym1vZHVsZS11cGRhdGUuc2ggYi90L3Q3NDA2LXN1Ym1vZHVsZS11cGRhdGUuc2gKaW5kZXggYTRmZmVhMC4uYjE5MmY5MyAxMDA3NTUKLS0tIGEvdC90NzQwNi1zdWJtb2R1bGUtdXBkYXRlLnNoCisrKyBiL3QvdDc0MDYtc3VibW9kdWxlLXVwZGF0ZS5zaApAQCAtODAsNiArODAsMjEgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSB1cGRhdGUgZnJvbSBzdWJkaXJlY3RvcnknICcKKwkoY2Qgc3VwZXIvc3VibW9kdWxlICYmCisJIGdpdCByZXNldCAtLWhhcmQgSEVBRH4xCisJKSAmJgorCW1rZGlyIHN1cGVyL3N1YiAmJgorCShjZCBzdXBlci9zdWIgJiYKKwkgKGNkIC4uL3N1Ym1vZHVsZSAmJgorCSAgY29tcGFyZV9oZWFkCisJICkgJiYKKwkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLi4vc3VibW9kdWxlICYmCisJIGNkIC4uL3N1Ym1vZHVsZSAmJgorCSAhIGNvbXBhcmVfaGVhZAorCSkKKycKKwogYXBvcz0iJyI7CiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgdXBkYXRlIGRvZXMgbm90IGZldGNoIGFscmVhZHkgcHJlc2VudCBjb21taXRzJyAnCiAJKGNkIHN1Ym1vZHVsZSAmJgpAQCAtMjc5LDYgKzI5NCwzNSBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHVwZGF0ZSAtIGNvbW1hbmQgaW4gLmdpdC9jb25maWcnICcKKwkoY2Qgc3VwZXIgJiYKKwkgZ2l0IGNvbmZpZyBzdWJtb2R1bGUuc3VibW9kdWxlLnVwZGF0ZSAiIWdpdCBjaGVja291dCIKKwkpICYmCisJKGNkIHN1cGVyL3N1Ym1vZHVsZSAmJgorCSAgZ2l0IHJlc2V0IC0taGFyZCBIRUFEXgorCSkgJiYKKwkoY2Qgc3VwZXIgJiYKKwkgKGNkIHN1Ym1vZHVsZSAmJgorCSAgY29tcGFyZV9oZWFkCisJICkgJiYKKwkgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgc3VibW9kdWxlICYmCisJIGNkIHN1Ym1vZHVsZSAmJgorCSAhIGNvbXBhcmVfaGVhZAorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHVwZGF0ZSAtIGNvbW1hbmQgaW4gLmdpdC9jb25maWcgY2F0Y2hlcyBmYWlsdXJlJyAnCisJKGNkIHN1cGVyICYmCisJIGdpdCBjb25maWcgc3VibW9kdWxlLnN1Ym1vZHVsZS51cGRhdGUgIiFmYWxzZSIKKwkpICYmCisJKGNkIHN1cGVyL3N1Ym1vZHVsZSAmJgorCSAgZ2l0IHJlc2V0IC0taGFyZCBIRUFEXgorCSkgJiYKKwkoY2Qgc3VwZXIgJiYKKwkgdGVzdF9tdXN0X2ZhaWwgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgc3VibW9kdWxlCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgaW5pdCBwaWNrcyB1cCByZWJhc2UnICcKIAkoY2Qgc3VwZXIgJiYKIAkgZ2l0IGNvbmZpZyAtZiAuZ2l0bW9kdWxlcyBzdWJtb2R1bGUucmViYXNpbmcudXBkYXRlIHJlYmFzZSAmJgpAQCAtNjg1LDE0ICs3MjksMjQgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3N1Ym1vZHVsZSB1cGRhdGUgY2FuIGhhbmRsZSBzeW1ib2xpYyBsaW5rcyBpbiBwd2QnICcKIAlta2RpciAtcCBsaW5rZWQvZGlyICYmCiAJbG4gLXMgbGlua2VkL2RpciBsaW5rdG8gJiYKLQkoCi0JCWNkIGxpbmt0byAmJgotCQlnaXQgY2xvbmUgIiRUUkFTSF9ESVJFQ1RPUlkiL3N1cGVyX3VwZGF0ZV9yMiBzdXBlciAmJgotCQkoCi0JCQljZCBzdXBlciAmJgotCQkJZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlCi0JCSkKKwkoY2QgbGlua3RvICYmCisJIGdpdCBjbG9uZSAiJFRSQVNIX0RJUkVDVE9SWSIvc3VwZXJfdXBkYXRlX3IyIHN1cGVyICYmCisJIChjZCBzdXBlciAmJgorCSAgZ2l0IHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0IC0tcmVjdXJzaXZlCisJICkKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSB1cGRhdGUgY2xvbmUgc2hhbGxvdyBzdWJtb2R1bGUnICcKKwlnaXQgY2xvbmUgY2xvbmVkIHN1cGVyMyAmJgorCXB3ZD0kKHB3ZCkKKwkoY2Qgc3VwZXIzICYmCisJIHNlZCAtZSAicyN1cmwgPSAuLi8jdXJsID0gZmlsZTovLyRwd2QvIyIgPC5naXRtb2R1bGVzID4uZ2l0bW9kdWxlcy50bXAgJiYKKwkgbXYgLWYgLmdpdG1vZHVsZXMudG1wIC5naXRtb2R1bGVzICYmCisJIGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLWRlcHRoPTMKKwkgKGNkIHN1Ym1vZHVsZSAmJgorCSAgdGVzdCAxID0gJChnaXQgbG9nIC0tb25lbGluZSB8IHdjIC1sKQorCSApCisJKQorJwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q3NDA3LXN1Ym1vZHVsZS1mb3JlYWNoLnNoIGIvdC90NzQwNy1zdWJtb2R1bGUtZm9yZWFjaC5zaAppbmRleCAxMDdiNGI3Li45MWQ0ZmQxIDEwMDc1NQotLS0gYS90L3Q3NDA3LXN1Ym1vZHVsZS1mb3JlYWNoLnNoCisrKyBiL3QvdDc0MDctc3VibW9kdWxlLWZvcmVhY2guc2gKQEAgLTgwLDYgKzgwLDIyIEBACiAJdGVzdF9pMThuY21wIGV4cGVjdCBhY3R1YWwKICcKIAorY2F0ID5leHBlY3QgPDxFT0YKK0VudGVyaW5nICcuLi9zdWIxJworJHB3ZC9jbG9uZS1mb28xLS4uL3N1YjEtJHN1YjFzaGExCitFbnRlcmluZyAnLi4vc3ViMycKKyRwd2QvY2xvbmUtZm9vMy0uLi9zdWIzLSRzdWIzc2hhMQorRU9GCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3QgInN1Ym1vZHVsZSBmb3JlYWNoIiBmcm9tIHN1YmRpcmVjdG9yeScgJworCW1rZGlyIGNsb25lL3N1YiAmJgorCSgKKwkJY2QgY2xvbmUvc3ViICYmCisJCWdpdCBzdWJtb2R1bGUgZm9yZWFjaCAiZWNobyBcJHRvcGxldmVsLVwkbmFtZS1cJHNtX3BhdGgtXCRzaGExIiA+Li4vLi4vYWN0dWFsCisJKSAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG5lc3RlZCBzdWJtb2R1bGVzJyAnCiAJZ2l0IGNsb25lIHN1Ym1vZHVsZSBuZXN0ZWQxICYmCiAJZ2l0IGNsb25lIHN1Ym1vZHVsZSBuZXN0ZWQyICYmCmRpZmYgLS1naXQgYS90L3Q3NTA4LXN0YXR1cy5zaCBiL3QvdDc1MDgtc3RhdHVzLnNoCmluZGV4IGUyZmZkYWMuLmFjM2QwZmUgMTAwNzU1Ci0tLSBhL3QvdDc1MDgtc3RhdHVzLnNoCisrKyBiL3QvdDc1MDgtc3RhdHVzLnNoCkBAIC0xMzM1LDQgKzEzMzUsNjYgQEAKIAlnaXQgY29uZmlnIC1mIC5naXRtb2R1bGVzICAtLXJlbW92ZS1zZWN0aW9uIHN1Ym1vZHVsZS5zdWJuYW1lCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG9mIHRlc3QgZW52aXJvbm1lbnQnICcKKwlnaXQgY29uZmlnIHN0YXR1cy5zaG93VW50cmFja2VkRmlsZXMgbm8gJiYKKwlnaXQgc3RhdHVzIC1zID5leHBlY3RlZF9zaG9ydCAmJgorCWdpdCBzdGF0dXMgLS1uby1zaG9ydCA+ZXhwZWN0ZWRfbm9zaG9ydAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcic3RhdHVzLnNob3J0PXRydWUiIHNhbWUgYXMgIi1zIicgJworCWdpdCAtYyBzdGF0dXMuc2hvcnQ9dHJ1ZSBzdGF0dXMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkX3Nob3J0IGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcic3RhdHVzLnNob3J0PXRydWUiIHdlYWtlciB0aGFuICItLW5vLXNob3J0IicgJworCWdpdCAtYyBzdGF0dXMuc2hvcnQ9dHJ1ZSBzdGF0dXMgLS1uby1zaG9ydCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWRfbm9zaG9ydCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnInN0YXR1cy5zaG9ydD1mYWxzZSIgc2FtZSBhcyAiLS1uby1zaG9ydCInICcKKwlnaXQgLWMgc3RhdHVzLnNob3J0PWZhbHNlIHN0YXR1cyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWRfbm9zaG9ydCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnInN0YXR1cy5zaG9ydD1mYWxzZSIgd2Vha2VyIHRoYW4gIi1zIicgJworCWdpdCAtYyBzdGF0dXMuc2hvcnQ9ZmFsc2Ugc3RhdHVzIC1zID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZF9zaG9ydCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnInN0YXR1cy5icmFuY2g9dHJ1ZSIgc2FtZSBhcyAiLWIiJyAnCisJZ2l0IHN0YXR1cyAtc2IgPmV4cGVjdGVkX2JyYW5jaCAmJgorCWdpdCAtYyBzdGF0dXMuYnJhbmNoPXRydWUgc3RhdHVzIC1zID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZF9icmFuY2ggYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJzdGF0dXMuYnJhbmNoPXRydWUiIGRpZmZlcmVudCBmcm9tICItLW5vLWJyYW5jaCInICcKKwlnaXQgc3RhdHVzIC1zIC0tbm8tYnJhbmNoICA+ZXhwZWN0ZWRfbm9icmFuY2ggJiYKKwlnaXQgLWMgc3RhdHVzLmJyYW5jaD10cnVlIHN0YXR1cyAtcyA+YWN0dWFsICYmCisJdGVzdF9tdXN0X2ZhaWwgdGVzdF9jbXAgZXhwZWN0ZWRfbm9icmFuY2ggYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJzdGF0dXMuYnJhbmNoPXRydWUiIHdlYWtlciB0aGFuICItLW5vLWJyYW5jaCInICcKKwlnaXQgLWMgc3RhdHVzLmJyYW5jaD10cnVlIHN0YXR1cyAtcyAtLW5vLWJyYW5jaCA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0ZWRfbm9icmFuY2ggYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJzdGF0dXMuYnJhbmNoPXRydWUiIHdlYWtlciB0aGFuICItLXBvcmNlbGFpbiInICcKKyAgICAgICBnaXQgLWMgc3RhdHVzLmJyYW5jaD10cnVlIHN0YXR1cyAtLXBvcmNlbGFpbiA+YWN0dWFsICYmCisgICAgICAgdGVzdF9jbXAgZXhwZWN0ZWRfbm9icmFuY2ggYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJzdGF0dXMuYnJhbmNoPWZhbHNlIiBzYW1lIGFzICItLW5vLWJyYW5jaCInICcKKwlnaXQgLWMgc3RhdHVzLmJyYW5jaD1mYWxzZSBzdGF0dXMgLXMgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkX25vYnJhbmNoIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcic3RhdHVzLmJyYW5jaD1mYWxzZSIgd2Vha2VyIHRoYW4gIi1iIicgJworCWdpdCAtYyBzdGF0dXMuYnJhbmNoPWZhbHNlIHN0YXR1cyAtc2IgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdGVkX2JyYW5jaCBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnUmVzdG9yZSBkZWZhdWx0IHRlc3QgZW52aXJvbm1lbnQnICcKKwlnaXQgY29uZmlnIC0tdW5zZXQgc3RhdHVzLnNob3dVbnRyYWNrZWRGaWxlcworJworCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDc1MTItc3RhdHVzLWhlbHAuc2ggYi90L3Q3NTEyLXN0YXR1cy1oZWxwLnNoCmluZGV4IGJmMDhkNGUuLjMxYTc5OGYgMTAwNzU1Ci0tLSBhL3QvdDc1MTItc3RhdHVzLWhlbHAuc2gKKysrIGIvdC90NzUxMi1zdGF0dXMtaGVscC5zaApAQCAtNzcsNyArNzcsNyBAQAogCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRF5eKSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgSEVBRF4gLS1vbnRvIEhFQUReXiAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi0JIyBIRUFEIGRldGFjaGVkIGF0ICRPTlRPCisJIyByZWJhc2UgaW4gcHJvZ3Jlc3M7IG9udG8gJE9OVE8KIAkjIFlvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2NvbmZsaWN0cydcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tc2tpcCIgdG8gc2tpcCB0aGlzIHBhdGNoKQpAQCAtMTA0LDcgKzEwNCw3IEBACiAJZWNobyB0aHJlZSA+bWFpbi50eHQgJiYKIAlnaXQgYWRkIG1haW4udHh0ICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgYXQgJE9OVE8KKwkjIHJlYmFzZSBpbiBwcm9ncmVzczsgb250byAkT05UTwogCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICdcJydyZWJhc2VfY29uZmxpY3RzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuICJnaXQgcmViYXNlIC0tY29udGludWUiKQogCSMKQEAgLTEzNiw3ICsxMzYsNyBAQAogCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgcmViYXNlX2lfY29uZmxpY3RzKSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgcmViYXNlX2lfY29uZmxpY3RzICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgYXQgJE9OVE8KKwkjIHJlYmFzZSBpbiBwcm9ncmVzczsgb250byAkT05UTwogCSMgWW91IGFyZSBjdXJyZW50bHkgcmViYXNpbmcgYnJhbmNoICdcJydyZWJhc2VfaV9jb25mbGljdHNfc2Vjb25kJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCiAJIyAgICh1c2UgImdpdCByZWJhc2UgLS1za2lwIiB0byBza2lwIHRoaXMgcGF0Y2gpCkBAIC0xNjIsNyArMTYyLDcgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1pIHJlYmFzZV9pX2NvbmZsaWN0cyAmJgogCWdpdCBhZGQgbWFpbi50eHQgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotCSMgSEVBRCBkZXRhY2hlZCBhdCAkT05UTworCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSByZWJhc2luZyBicmFuY2ggJ1wnJ3JlYmFzZV9pX2NvbmZsaWN0c19zZWNvbmQnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCiAJIwpAQCAtMTg4LDEwICsxODgsOSBAQAogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCiAJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjIpICYmCi0JVEdUPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IHR3b19yZWJhc2VfaSkgJiYKIAlnaXQgcmViYXNlIC1pIEhFQUR+MiAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi0JIyBIRUFEIGRldGFjaGVkIGZyb20gJFRHVAorCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnXCcncmViYXNlX2lfZWRpdCdcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKHVzZSAiZ2l0IGNvbW1pdCAtLWFtZW5kIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpCiAJIyAgICh1c2UgImdpdCByZWJhc2UgLS1jb250aW51ZSIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykKQEAgLTIxNiw5ICsyMTUsOCBAQAogCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRH4zKSAmJgogCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCiAJZ2l0IHJlc2V0IEhFQUReICYmCi0JVEdUPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQpICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgYXQgJFRHVAorCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzcGxpdF9jb21taXQnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKIAkjCkBAIC0yNDYsMTEgKzI0NCwxMCBAQAogCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCiAJT05UTz0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEfjMpICYmCi0JVEdUPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IHRocmVlX2FtZW5kKSAmJgogCWdpdCByZWJhc2UgLWkgSEVBRH4zICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJmb28iICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkVEdUCisJIyByZWJhc2UgaW4gcHJvZ3Jlc3M7IG9udG8gJE9OVE8KIAkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydhbWVuZF9sYXN0J1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQpAQCAtMjgwLDcgKzI3Nyw3IEBACiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRPTlRPCisJIyByZWJhc2UgaW4gcHJvZ3Jlc3M7IG9udG8gJE9OVE8KIAkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQpAQCAtMzAyLDcgKzI5OSw3IEBACiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IHJlc2V0IEhFQUReICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCiAJIwpAQCAtMzI5LDcgKzMyNiw3IEBACiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJmb28iICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnXCcnc2V2ZXJhbF9lZGl0cydcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKHVzZSAiZ2l0IGNvbW1pdCAtLWFtZW5kIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpCiAJIyAgICh1c2UgImdpdCByZWJhc2UgLS1jb250aW51ZSIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykKQEAgLTM1MSw3ICszNDgsNyBAQAogCWdpdCBjb21taXQgLS1hbWVuZCAtbSAiYSIgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRPTlRPCisJIyByZWJhc2UgaW4gcHJvZ3Jlc3M7IG9udG8gJE9OVE8KIAkjIFlvdSBhcmUgY3VycmVudGx5IGVkaXRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAodXNlICJnaXQgY29tbWl0IC0tYW1lbmQiIHRvIGFtZW5kIHRoZSBjdXJyZW50IGNvbW1pdCkKIAkjICAgKHVzZSAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIiBvbmNlIHlvdSBhcmUgc2F0aXNmaWVkIHdpdGggeW91ciBjaGFuZ2VzKQpAQCAtMzc0LDcgKzM3MSw3IEBACiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IHJlc2V0IEhFQUReICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBzcGxpdHRpbmcgYSBjb21taXQgd2hpbGUgcmViYXNpbmcgYnJhbmNoICdcJydzZXZlcmFsX2VkaXRzJ1wnJyBvbiAnXCcnJE9OVE8nXCcnLgogCSMgICAoT25jZSB5b3VyIHdvcmtpbmcgZGlyZWN0b3J5IGlzIGNsZWFuLCBydW4gImdpdCByZWJhc2UgLS1jb250aW51ZSIpCiAJIwpAQCAtNDAyLDcgKzM5OSw3IEBACiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IGNvbW1pdCAtLWFtZW5kIC1tICJkIiAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi0JIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIHJlYmFzZSBpbiBwcm9ncmVzczsgb250byAkT05UTwogCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCkBAIC00MjYsNyArNDIzLDcgQEAKIAlnaXQgY29tbWl0IC1tICJlIiAmJgogCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi0JIyBIRUFEIGRldGFjaGVkIGZyb20gJE9OVE8KKwkjIHJlYmFzZSBpbiBwcm9ncmVzczsgb250byAkT05UTwogCSMgWW91IGFyZSBjdXJyZW50bHkgZWRpdGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgICh1c2UgImdpdCBjb21taXQgLS1hbWVuZCIgdG8gYW1lbmQgdGhlIGN1cnJlbnQgY29tbWl0KQogCSMgICAodXNlICJnaXQgcmViYXNlIC0tY29udGludWUiIG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQgd2l0aCB5b3VyIGNoYW5nZXMpCkBAIC00NTEsNyArNDQ4LDcgQEAKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAlnaXQgcmVzZXQgSEVBRF4gJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgotCSMgSEVBRCBkZXRhY2hlZCBmcm9tICRPTlRPCisJIyByZWJhc2UgaW4gcHJvZ3Jlc3M7IG9udG8gJE9OVE8KIAkjIFlvdSBhcmUgY3VycmVudGx5IHNwbGl0dGluZyBhIGNvbW1pdCB3aGlsZSByZWJhc2luZyBicmFuY2ggJ1wnJ3NldmVyYWxfZWRpdHMnXCcnIG9uICdcJyckT05UTydcJycuCiAJIyAgIChPbmNlIHlvdXIgd29ya2luZyBkaXJlY3RvcnkgaXMgY2xlYW4sIHJ1biAiZ2l0IHJlYmFzZSAtLWNvbnRpbnVlIikKIAkjCkBAIC00ODEsNyArNDc4LDcgQEAKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgLW0gImgiICYmCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKLQkjIEhFQUQgZGV0YWNoZWQgZnJvbSAkT05UTworCSMgcmViYXNlIGluIHByb2dyZXNzOyBvbnRvICRPTlRPCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBlZGl0aW5nIGEgY29tbWl0IHdoaWxlIHJlYmFzaW5nIGJyYW5jaCAnXCcnc2V2ZXJhbF9lZGl0cydcJycgb24gJ1wnJyRPTlRPJ1wnJy4KIAkjICAgKHVzZSAiZ2l0IGNvbW1pdCAtLWFtZW5kIiB0byBhbWVuZCB0aGUgY3VycmVudCBjb21taXQpCiAJIyAgICh1c2UgImdpdCByZWJhc2UgLS1jb250aW51ZSIgb25jZSB5b3UgYXJlIHNhdGlzZmllZCB3aXRoIHlvdXIgY2hhbmdlcykKQEAgLTUxMCw3ICs1MDcsNyBAQAogCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgogCSMgT24gYnJhbmNoIGFtX2FscmVhZHlfZXhpc3RzCiAJIyBZb3UgYXJlIGluIHRoZSBtaWRkbGUgb2YgYW4gYW0gc2Vzc2lvbi4KLQkjICAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuICJnaXQgYW0gLS1yZXNvbHZlZCIpCisJIyAgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biAiZ2l0IGFtIC0tY29udGludWUiKQogCSMgICAodXNlICJnaXQgYW0gLS1za2lwIiB0byBza2lwIHRoaXMgcGF0Y2gpCiAJIyAgICh1c2UgImdpdCBhbSAtLWFib3J0IiB0byByZXN0b3JlIHRoZSBvcmlnaW5hbCBicmFuY2gpCiAJIwpAQCAtNTMyLDcgKzUyOSw3IEBACiAJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCiAJIyBPbiBicmFuY2ggYW1fbm90X2V4aXN0cwogCSMgWW91IGFyZSBpbiB0aGUgbWlkZGxlIG9mIGFuIGFtIHNlc3Npb24uCi0JIyAgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biAiZ2l0IGFtIC0tcmVzb2x2ZWQiKQorCSMgICAoZml4IGNvbmZsaWN0cyBhbmQgdGhlbiBydW4gImdpdCBhbSAtLWNvbnRpbnVlIikKIAkjICAgKHVzZSAiZ2l0IGFtIC0tc2tpcCIgdG8gc2tpcCB0aGlzIHBhdGNoKQogCSMgICAodXNlICJnaXQgYW0gLS1hYm9ydCIgdG8gcmVzdG9yZSB0aGUgb3JpZ2luYWwgYnJhbmNoKQogCSMKQEAgLTYwMSw3ICs1OTgsNyBAQAogCU9OVE89JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRF5eKSAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgSEVBRF4gLS1vbnRvIEhFQUReXiAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCi0JIyBIRUFEIGRldGFjaGVkIGF0ICRPTlRPCisJIyByZWJhc2UgaW4gcHJvZ3Jlc3M7IG9udG8gJE9OVE8KIAkjIFlvdSBhcmUgY3VycmVudGx5IHJlYmFzaW5nIGJyYW5jaCAnXCcnc3RhdHVzaGludHNfZGlzYWJsZWQnXCcnIG9uICdcJyckT05UTydcJycuCiAJIwogCSMgVW5tZXJnZWQgcGF0aHM6CkBAIC02MzIsNyArNjI5LDggQEAKIAljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKIAkjIE9uIGJyYW5jaCBjaGVycnlfYnJhbmNoCiAJIyBZb3UgYXJlIGN1cnJlbnRseSBjaGVycnktcGlja2luZy4KLQkjICAgKGZpeCBjb25mbGljdHMgYW5kIHJ1biAiZ2l0IGNvbW1pdCIpCisJIyAgIChmaXggY29uZmxpY3RzIGFuZCBydW4gImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlIikKKwkjICAgKHVzZSAiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnQiIHRvIGNhbmNlbCB0aGUgY2hlcnJ5LXBpY2sgb3BlcmF0aW9uKQogCSMKIAkjIFVubWVyZ2VkIHBhdGhzOgogCSMgICAodXNlICJnaXQgYWRkIDxmaWxlPi4uLiIgdG8gbWFyayByZXNvbHV0aW9uKQpAQCAtNjU1LDcgKzY1Myw4IEBACiAJY2F0ID5leHBlY3RlZCA8PC1cRU9GICYmCiAJIyBPbiBicmFuY2ggY2hlcnJ5X2JyYW5jaAogCSMgWW91IGFyZSBjdXJyZW50bHkgY2hlcnJ5LXBpY2tpbmcuCi0JIyAgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gImdpdCBjb21taXQiKQorCSMgICAoYWxsIGNvbmZsaWN0cyBmaXhlZDogcnVuICJnaXQgY2hlcnJ5LXBpY2sgLS1jb250aW51ZSIpCisJIyAgICh1c2UgImdpdCBjaGVycnktcGljayAtLWFib3J0IiB0byBjYW5jZWwgdGhlIGNoZXJyeS1waWNrIG9wZXJhdGlvbikKIAkjCiAJIyBDaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZDoKIAkjCkBAIC02NjcsNyArNjY2LDcgQEAKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBzaG93aW5nIGRldGFjaGVkIGZyb20gYSB0YWcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXR1cyBzaG93aW5nIGRldGFjaGVkIGF0IGFuZCBmcm9tIGEgdGFnJyAnCiAJdGVzdF9jb21taXQgYXRhZyB0YWdnaW5nICYmCiAJZ2l0IGNoZWNrb3V0IGF0YWcgJiYKIAljYXQgPmV4cGVjdGVkIDw8LVxFT0YKQEAgLTY3NSw2ICs2NzQsMTQgQEAKIAlub3RoaW5nIHRvIGNvbW1pdCAodXNlIC11IHRvIHNob3cgdW50cmFja2VkIGZpbGVzKQogCUVPRgogCWdpdCBzdGF0dXMgLS11bnRyYWNrZWQtZmlsZXM9bm8gPmFjdHVhbCAmJgorCXRlc3RfaTE4bmNtcCBleHBlY3RlZCBhY3R1YWwgJiYKKworCWdpdCByZXNldCAtLWhhcmQgSEVBRF4gJiYKKwljYXQgPmV4cGVjdGVkIDw8LVxFT0YKKwkjIEhFQUQgZGV0YWNoZWQgZnJvbSBhdGFnCisJbm90aGluZyB0byBjb21taXQgKHVzZSAtdSB0byBzaG93IHVudHJhY2tlZCBmaWxlcykKKwlFT0YKKwlnaXQgc3RhdHVzIC0tdW50cmFja2VkLWZpbGVzPW5vID5hY3R1YWwgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDc2MDAtbWVyZ2Uuc2ggYi90L3Q3NjAwLW1lcmdlLnNoCmluZGV4IDQ2MGQ4ZWIuLjEwYWEwMjggMTAwNzU1Ci0tLSBhL3QvdDc2MDAtbWVyZ2Uuc2gKKysrIGIvdC90NzYwMC1tZXJnZS5zaApAQCAtNDk3LDkgKzQ5NywxNSBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtLW5vLWZmIC0tc3F1YXNoIGMxCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbWJpbmluZyAtLWZmLW9ubHkgYW5kIC0tbm8tZmYgaXMgcmVmdXNlZCcgJwotCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtLWZmLW9ubHkgLS1uby1mZiBjMSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtLW5vLWZmIC0tZmYtb25seSBjMQordGVzdF9leHBlY3Rfc3VjY2VzcyAnb3B0aW9uIC0tZmYtb25seSBvdmVyd3JpdGVzIC0tbm8tZmYnICcKKwlnaXQgbWVyZ2UgLS1uby1mZiAtLWZmLW9ubHkgYzEgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLS1uby1mZiAtLWZmLW9ubHkgYzIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnb3B0aW9uIC0tbm8tZmYgb3ZlcnJpZGVzIG1lcmdlLmZmPW9ubHkgY29uZmlnJyAnCisJZ2l0IHJlc2V0IC0taGFyZCBjMCAmJgorCXRlc3RfY29uZmlnIG1lcmdlLmZmIG9ubHkgJiYKKwlnaXQgbWVyZ2UgLS1uby1mZiBjMQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBjMCB3aXRoIGMxIChmZiBvdmVycmlkZXMgbm8tZmYpJyAnCmRpZmYgLS1naXQgYS90L3Q3NjAxLW1lcmdlLXB1bGwtY29uZmlnLnNoIGIvdC90NzYwMS1tZXJnZS1wdWxsLWNvbmZpZy5zaAppbmRleCAyNWRhYzc5Li44MzBhNGMzIDEwMDc1NQotLS0gYS90L3Q3NjAxLW1lcmdlLXB1bGwtY29uZmlnLnNoCisrKyBiL3QvdDc2MDEtbWVyZ2UtcHVsbC1jb25maWcuc2gKQEAgLTEwOSw3ICsxMDksNyBAQAogJwogCiAjIEZpcnN0IGRvIHRoZSBtZXJnZSB3aXRoIHJlc29sdmUgYW5kIHJlY3Vyc2l2ZSB0aGVuIHZlcmlmeSB0aGF0Ci0jIHJlY3VzaXZlIGlzIGNob3Nlbi4KKyMgcmVjdXJzaXZlIGlzIGNob3Nlbi4KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWVyZ2UgcGlja3MgdXAgdGhlIGJlc3QgcmVzdWx0JyAnCiAJZ2l0IGNvbmZpZyAtLXVuc2V0LWFsbCBwdWxsLnR3b2hlYWQgJiYKZGlmZiAtLWdpdCBhL3QvdDgwMDEtYW5ub3RhdGUuc2ggYi90L3Q4MDAxLWFubm90YXRlLnNoCmluZGV4IDQxOTYyZjAuLjcyMTc2ZTQgMTAwNzU1Ci0tLSBhL3QvdDgwMDEtYW5ub3RhdGUuc2gKKysrIGIvdC90ODAwMS1hbm5vdGF0ZS5zaApAQCAtNiw5ICs2LDkgQEAKIFBST0c9J2dpdCBhbm5vdGF0ZScKIC4gIiRURVNUX0RJUkVDVE9SWSIvYW5ub3RhdGUtdGVzdHMuc2gKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnQW5ub3RhdGluZyBhbiBvbGQgcmV2aXNpb24gd29ya3MnICcKLQlnaXQgYW5ub3RhdGUgZmlsZSBtYXN0ZXIgPnJlc3VsdCAmJgotCWF3ayAieyBwcmludCBcJDM7IH0iIDxyZXN1bHQgPmF1dGhvcnMgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fubm90YXRlIG9sZCByZXZpc2lvbicgJworCWdpdCBhbm5vdGF0ZSBmaWxlIG1hc3RlciA+YWN0dWFsICYmCisJYXdrICJ7IHByaW50IFwkMzsgfSIgPGFjdHVhbCA+YXV0aG9ycyAmJgogCXRlc3QgMiA9ICQoZ3JlcCBBIDxhdXRob3JzIHwgd2MgLWwpICYmCiAJdGVzdCAyID0gJChncmVwIEIgPGF1dGhvcnMgfCB3YyAtbCkKICcKZGlmZiAtLWdpdCBhL3QvdDgwMDItYmxhbWUuc2ggYi90L3Q4MDAyLWJsYW1lLnNoCmluZGV4IGUyODk2Y2YuLjVjZGYzZjEgMTAwNzU1Ci0tLSBhL3QvdDgwMDItYmxhbWUuc2gKKysrIGIvdC90ODAwMi1ibGFtZS5zaApAQCAtNyw4ICs3LDE2IEBACiAuICIkVEVTVF9ESVJFQ1RPUlkiL2Fubm90YXRlLXRlc3RzLnNoCiAKIFBST0c9J2dpdCBibGFtZSAtYyAtZScKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0JsYW1lIC0tc2hvdy1lbWFpbCB3b3JrcycgJwotICAgIGNoZWNrX2NvdW50ICI8QUB0ZXN0LmdpdD4iIDEgIjxCQHRlc3QuZ2l0PiIgMSAiPEIxQHRlc3QuZ2l0PiIgMSAiPEIyQHRlc3QuZ2l0PiIgMSAiPGF1dGhvckBleGFtcGxlLmNvbT4iIDEgIjxDQHRlc3QuZ2l0PiIgMSAiPERAdGVzdC5naXQ+IiAxICI8RSBhdCB0ZXN0IGRvdCBnaXQ+IiAxCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdibGFtZSAtLXNob3ctZW1haWwnICcKKwljaGVja19jb3VudCBcCisJCSI8QUB0ZXN0LmdpdD4iIDEgXAorCQkiPEJAdGVzdC5naXQ+IiAxIFwKKwkJIjxCMUB0ZXN0LmdpdD4iIDEgXAorCQkiPEIyQHRlc3QuZ2l0PiIgMSBcCisJCSI8YXV0aG9yQGV4YW1wbGUuY29tPiIgMSBcCisJCSI8Q0B0ZXN0LmdpdD4iIDEgXAorCQkiPERAdGVzdC5naXQ+IiAxIFwKKwkJIjxFIGF0IHRlc3QgZG90IGdpdD4iIDEKICcKIAogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q4MDAzLWJsYW1lLWNvcm5lci1jYXNlcy5zaCBiL3QvdDgwMDMtYmxhbWUtY29ybmVyLWNhc2VzLnNoCmluZGV4IDIzMDE0M2MuLmU3Y2FjMWQgMTAwNzU1Ci0tLSBhL3QvdDgwMDMtYmxhbWUtY29ybmVyLWNhc2VzLnNoCisrKyBiL3QvdDgwMDMtYmxhbWUtY29ybmVyLWNhc2VzLnNoCkBAIC0xNzUsNiArMTc1LDEyIEBACiAJZ3JlcCAiaGFzIG9ubHkgMiBsaW5lcyIgZXJyb3JzCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2JsYW1lIHBhcnNlcyA8ZW5kPiBwYXJ0IG9mIC1MJyAnCisJZ2l0IGJsYW1lIC1MMSwxIHRyZXMgPm91dCAmJgorCWNhdCBvdXQgJiYKKwl0ZXN0ICQod2MgLWwgPCBvdXQpIC1lcSAxCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2luZGVudCBvZiBsaW5lIG51bWJlcnMsIG5pbmUgbGluZXMnICcKIAlnaXQgYmxhbWUgbmluZV9saW5lcyA+YWN0dWFsICYmCiAJdGVzdCAkKGdyZXAgLWMgIiAgIiBhY3R1YWwpID0gMApkaWZmIC0tZ2l0IGEvdC90OTAwMS1zZW5kLWVtYWlsLnNoIGIvdC90OTAwMS1zZW5kLWVtYWlsLnNoCmluZGV4IGQ2ZjAyNzEuLjI4MTNhYTkgMTAwNzU1Ci0tLSBhL3QvdDkwMDEtc2VuZC1lbWFpbC5zaAorKysgYi90L3Q5MDAxLXNlbmQtZW1haWwuc2gKQEAgLTEwOTIsNTUgKzEwOTIsNiBAQAogCWdyZXAgIkluLVJlcGx5LVRvOiAiIHN0ZG91dAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ3dhcm5pbmcgd2l0aCBhbiBpbXBsaWNpdCAtLWNoYWluLXJlcGx5LXRvJyAnCi0JZ2l0IHNlbmQtZW1haWwgXAotCS0tZHJ5LXJ1biBcCi0JLS1mcm9tPSJFeGFtcGxlIDxub2JvZHlAZXhhbXBsZS5jb20+IiBcCi0JLS10bz1ub2JvZHlAZXhhbXBsZS5jb20gXAotCW91dGRpci8wMDA/LSoucGF0Y2ggMj5lcnJvcnMgPm91dCAmJgotCWdyZXAgIm5vLWNoYWluLXJlcGx5LXRvIiBlcnJvcnMKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdubyB3YXJuaW5nIHdpdGggYW4gZXhwbGljaXQgLS1jaGFpbi1yZXBseS10bycgJwotCWdpdCBzZW5kLWVtYWlsIFwKLQktLWRyeS1ydW4gXAotCS0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAotCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKLQktLWNoYWluLXJlcGx5LXRvIFwKLQlvdXRkaXIvMDAwPy0qLnBhdGNoIDI+ZXJyb3JzID5vdXQgJiYKLQkhIGdyZXAgIm5vLWNoYWluLXJlcGx5LXRvIiBlcnJvcnMKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdubyB3YXJuaW5nIHdpdGggYW4gZXhwbGljaXQgLS1uby1jaGFpbi1yZXBseS10bycgJwotCWdpdCBzZW5kLWVtYWlsIFwKLQktLWRyeS1ydW4gXAotCS0tZnJvbT0iRXhhbXBsZSA8bm9ib2R5QGV4YW1wbGUuY29tPiIgXAotCS0tdG89bm9ib2R5QGV4YW1wbGUuY29tIFwKLQktLW5vY2hhaW4tcmVwbHktdG8gXAotCW91dGRpci8wMDA/LSoucGF0Y2ggMj5lcnJvcnMgPm91dCAmJgotCSEgZ3JlcCAibm8tY2hhaW4tcmVwbHktdG8iIGVycm9ycwotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICRQUkVSRVEgJ25vIHdhcm5pbmcgd2l0aCBzZW5kZW1haWwuY2hhaW5yZXBseXRvID0gZmFsc2UnICcKLQlnaXQgY29uZmlnIHNlbmRlbWFpbC5jaGFpbnJlcGx5dG8gZmFsc2UgJiYKLQlnaXQgc2VuZC1lbWFpbCBcCi0JLS1kcnktcnVuIFwKLQktLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIFwKLQktLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCi0Jb3V0ZGlyLzAwMD8tKi5wYXRjaCAyPmVycm9ycyA+b3V0ICYmCi0JISBncmVwICJuby1jaGFpbi1yZXBseS10byIgZXJyb3JzCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnbm8gd2FybmluZyB3aXRoIHNlbmRlbWFpbC5jaGFpbnJlcGx5dG8gPSB0cnVlJyAnCi0JZ2l0IGNvbmZpZyBzZW5kZW1haWwuY2hhaW5yZXBseXRvIHRydWUgJiYKLQlnaXQgc2VuZC1lbWFpbCBcCi0JLS1kcnktcnVuIFwKLQktLWZyb209IkV4YW1wbGUgPG5vYm9keUBleGFtcGxlLmNvbT4iIFwKLQktLXRvPW5vYm9keUBleGFtcGxlLmNvbSBcCi0Jb3V0ZGlyLzAwMD8tKi5wYXRjaCAyPmVycm9ycyA+b3V0ICYmCi0JISBncmVwICJuby1jaGFpbi1yZXBseS10byIgZXJyb3JzCi0nCi0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJFBSRVJFUSAnc2VuZGVtYWlsLnRvIHdvcmtzJyAnCiAJZ2l0IGNvbmZpZyAtLXJlcGxhY2UtYWxsIHNlbmRlbWFpbC50byAiU29tZWJvZHkgPHNvbWVib2R5QGV4LmNvbT4iICYmCiAJZ2l0IHNlbmQtZW1haWwgXApkaWZmIC0tZ2l0IGEvdC90OTAyMC1yZW1vdGUtc3ZuLnNoIGIvdC90OTAyMC1yZW1vdGUtc3ZuLnNoCmluZGV4IGQ5ZjZiNzMuLjRkODFiYTEgMTAwNzU1Ci0tLSBhL3QvdDkwMjAtcmVtb3RlLXN2bi5zaAorKysgYi90L3Q5MDIwLXJlbW90ZS1zdm4uc2gKQEAgLTI0LDcgKzI0LDcgQEAKIAlybSAtZnIgLmdpdCAmJgogCWdpdCBpbml0ICYmCiAJI2dpdCByZW1vdGUgYWRkIHN2bnNpbSB0ZXN0c3ZuOjpzaW06Ly8vJFRFU1RfRElSRUNUT1JZL3Q5MDIwL2V4YW1wbGUuc3ZucmR1bXAKLQkjIGxldCdzIHJldXNlIGFuIGV4aXNpdGluZyBkdW1wIGZpbGUhPworCSMgbGV0J3MgcmV1c2UgYW4gZXhpc3RpbmcgZHVtcCBmaWxlIT8KIAlnaXQgcmVtb3RlIGFkZCBzdm5zaW0gdGVzdHN2bjo6c2ltOi8vJFRFU1RfRElSRUNUT1JZL3Q5MTU0L3N2bi5kdW1wCiAJZ2l0IHJlbW90ZSBhZGQgc3ZuZmlsZSB0ZXN0c3ZuOjpmaWxlOi8vJFRFU1RfRElSRUNUT1JZL3Q5MTU0L3N2bi5kdW1wCiB9CmRpZmYgLS1naXQgYS90L3Q5MTEyLWdpdC1zdm4tbWQ1bGVzcy1maWxlLnNoIGIvdC90OTExMi1naXQtc3ZuLW1kNWxlc3MtZmlsZS5zaAppbmRleCBhNjFkNjcxLi45ODYxYzcxIDEwMDc1NQotLS0gYS90L3Q5MTEyLWdpdC1zdm4tbWQ1bGVzcy1maWxlLnNoCisrKyBiL3QvdDkxMTItZ2l0LXN2bi1tZDVsZXNzLWZpbGUuc2gKQEAgLTcsNyArNyw3IEBACiAjIExvYWRpbmcgYSBub2RlIGZyb20gYSBzdm4gZHVtcGZpbGUgd2l0aG91dCBhIFRleHQtQ29udGVudC1MZW5ndGgKICMgZmllbGQgY2F1c2VzIHN2biB0byBuZWdsZWN0IHRvIHN0b3JlIG9yIHJlcG9ydCBhbiBtZDVzdW0uICAoaXQgd2lsbAogIyBjYWxjdWxhdGUgb25lIGlmIHlvdSBoYWQgcHV0IFRleHQtQ29udGVudC1MZW5ndGg6IDApLiAgVGhpcyBzaG93ZWQKLSMgdXAgaW4gYSByZXBvc2l0b3J5IGNyZXRlZCB3aXRoIGN2czJzdm4uCisjIHVwIGluIGEgcmVwb3NpdG9yeSBjcmVhdGVkIHdpdGggY3ZzMnN2bi4KIAogY2F0ID4gZHVtcGZpbGUuc3ZuIDw8RU9GCiBTVk4tZnMtZHVtcC1mb3JtYXQtdmVyc2lvbjogMQpkaWZmIC0tZ2l0IGEvdC90OTQwMi1naXQtY3Zzc2VydmVyLXJlZnMuc2ggYi90L3Q5NDAyLWdpdC1jdnNzZXJ2ZXItcmVmcy5zaAppbmRleCA3MzVhMDE4Li5kYjY5YWYyIDEwMDc1NQotLS0gYS90L3Q5NDAyLWdpdC1jdnNzZXJ2ZXItcmVmcy5zaAorKysgYi90L3Q5NDAyLWdpdC1jdnNzZXJ2ZXItcmVmcy5zaApAQCAtMzMwLDcgKzMzMCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ZhbGlkYXRlIGJhc2ljIGRpZmZzIHNhdmVkIGR1cmluZyBhYm92ZSBjdnN3b3JrMiBlZGl0cycgJwogCXRlc3QgJChncmVwIEluZGV4OiBjdnNFZGl0MS5kaWZmIHwgd2MgLWwpID0gMSAmJgotCXRlc3QgISAtcyBjdnNFZGl0Mi1lbXB0eS5kaWZmICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGN2c0VkaXQyLWVtcHR5LmRpZmYgJiYKIAl0ZXN0ICQoZ3JlcCBJbmRleDogY3ZzRWRpdDItTi5kaWZmIHwgd2MgLWwpID0gMSAmJgogCXRlc3QgJChncmVwIEluZGV4OiBjdnNFZGl0My5kaWZmIHwgd2MgLWwpID0gMyAmJgogCXJtIC1yZiBkaWZmU2FuZGJveCAmJgpAQCAtNDU2LDIwICs0NTYsMjAgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY3ZzIGRpZmYgLXIgdjEgLXUnICcKIAkoIGNkIGN2c3dvcmsgJiYgY3ZzIC1mIGRpZmYgLXIgdjEgLXUgKSA+Y3ZzRGlmZi5vdXQgMj5jdnMubG9nICYmCi0JdGVzdCAhIC1zIGN2c0RpZmYub3V0ICYmCi0JdGVzdCAhIC1zIGN2cy5sb2cKKwl0ZXN0X211c3RfYmVfZW1wdHkgY3ZzRGlmZi5vdXQgJiYKKwl0ZXN0X211c3RfYmVfZW1wdHkgY3ZzLmxvZwogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgZGlmZiAtTiAtciB2MiAtdScgJwogCSggY2QgY3Zzd29yayAmJiAhIGN2cyAtZiBkaWZmIC1OIC1yIHYyIC11ICkgPmN2c0RpZmYub3V0IDI+Y3ZzLmxvZyAmJgotCXRlc3QgISAtcyBjdnMubG9nICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGN2cy5sb2cgJiYKIAl0ZXN0IC1zIGN2c0RpZmYub3V0ICYmCiAJY2hlY2tfZGlmZiBjdnNEaWZmLm91dCB2MiB2MSA+Y2hlY2tfZGlmZi5vdXQgMj4mMQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjdnMgZGlmZiAtTiAtciB2MiAtciB2MS4yJyAnCiAJKCBjZCBjdnN3b3JrICYmICEgY3ZzIC1mIGRpZmYgLU4gLXIgdjIgLXIgdjEuMiAtdSApID5jdnNEaWZmLm91dCAyPmN2cy5sb2cgJiYKLQl0ZXN0ICEgLXMgY3ZzLmxvZyAmJgorCXRlc3RfbXVzdF9iZV9lbXB0eSBjdnMubG9nICYmCiAJdGVzdCAtcyBjdnNEaWZmLm91dCAmJgogCWNoZWNrX2RpZmYgY3ZzRGlmZi5vdXQgdjIgdjEuMiA+Y2hlY2tfZGlmZi5vdXQgMj4mMQogJwpAQCAtNDg4LDcgKzQ4OCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrIFtjdnN3b3JrM10gZGlmZicgJwogCSggY2QgY3Zzd29yazMgJiYgISBjdnMgLWYgZGlmZiAtTiAtdSApID4iJFdPUktESVIvY3ZzRGlmZi5vdXQiIDI+Y3ZzLmxvZyAmJgotCXRlc3QgISAtcyBjdnMubG9nICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGN2cy5sb2cgJiYKIAl0ZXN0IC1zIGN2c0RpZmYub3V0ICYmCiAJdGVzdCAkKGdyZXAgSW5kZXg6IGN2c0RpZmYub3V0IHwgd2MgLWwpID0gMyAmJgogCXRlc3RfY21wIGN2c0RpZmYub3V0IGN2c3dvcmszZWRpdC5kaWZmICYmCmRpZmYgLS1naXQgYS90L3Q5ODAyLWdpdC1wNC1maWxldHlwZS5zaCBiL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoCmluZGV4IGVlZWZhNjcuLmE4Mjc0NGIgMTAwNzU1Ci0tLSBhL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoCisrKyBiL3QvdDk4MDItZ2l0LXA0LWZpbGV0eXBlLnNoCkBAIC0yOCw3ICsyOCw3IEBACiAJCXRlc3RfY21wIGYtdW5peC1vcmlnIGYtdW5peCAmJgogCiAJCSMgbWFrZSBzdXJlIHN0b3JlZCBpbiByZXBvIGFzIHVuaXggbmV3bGluZXMKLQkJIyB1c2Ugc2VkIHRvIGVhdCBweXRob24tYXBwZW5lZCBuZXdsaW5lCisJCSMgdXNlIHNlZCB0byBlYXQgcHl0aG9uLWFwcGVuZGVkIG5ld2xpbmUKIAkJcDQgLUcgcHJpbnQgLy9kZXBvdC9mLXVuaXggfCBtYXJzaGFsX2R1bXAgZGF0YSAyIHxcCiAJCSAgICBzZWQgXCRkID5mLXVuaXgtcDQtcHJpbnQgJiYKIAkJdGVzdF9jbXAgZi11bml4LW9yaWcgZi11bml4LXA0LXByaW50ICYmCkBAIC05NSw3ICs5NSw3IEBACiAJCWdpdCBpbml0ICYmCiAJCWVjaG8gIiogZW9sPWxmIiA+LmdpdGF0dHJpYnV0ZXMgJiYKIAkJZ2l0IHA0IHN5bmMgLy9kZXBvdEBhbGwgJiYKLQkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCQlnaXQgY2hlY2tvdXQgLWIgbWFzdGVyIHA0L21hc3RlciAmJgogCQl0ZXN0X2NtcCAiJGNsaSIvZi11bml4LW9yaWcgZi11bml4ICYmCiAJCXRlc3RfY21wICIkY2xpIi9mLXdpbi1hcy1sZiBmLXdpbgogCSkKQEAgLTEwOSw3ICsxMDksNyBAQAogCQlnaXQgaW5pdCAmJgogCQllY2hvICIqIGVvbD1jcmxmIiA+LmdpdGF0dHJpYnV0ZXMgJiYKIAkJZ2l0IHA0IHN5bmMgLy9kZXBvdEBhbGwgJiYKLQkJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgorCQlnaXQgY2hlY2tvdXQgLWIgbWFzdGVyIHA0L21hc3RlciAmJgogCQl0ZXN0X2NtcCAiJGNsaSIvZi11bml4LWFzLWNybGYgZi11bml4ICYmCiAJCXRlc3RfY21wICIkY2xpIi9mLXdpbi1vcmlnIGYtd2luCiAJKQpkaWZmIC0tZ2l0IGEvdC90OTkwMi1jb21wbGV0aW9uLnNoIGIvdC90OTkwMi1jb21wbGV0aW9uLnNoCmluZGV4IGE3MWQ4YjQuLjI3MmEwNzEgMTAwNzU1Ci0tLSBhL3QvdDk5MDItY29tcGxldGlvbi5zaAorKysgYi90L3Q5OTAyLWNvbXBsZXRpb24uc2gKQEAgLTEyMiw2ICsxMjIsMTQwIEBACiAKIGludmFsaWRfdmFyaWFibGVfbmFtZT0nJHtmb28uYmFyfScKIAorYWN0dWFsPSIkVFJBU0hfRElSRUNUT1JZL2FjdHVhbCIKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgZm9yIF9fZ2l0ZGlyIHRlc3RzJyAnCisJbWtkaXIgLXAgc3ViZGlyL3N1YnN1YmRpciAmJgorCWdpdCBpbml0IG90aGVycmVwbworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGRpciAtIGZyb20gY29tbWFuZCBsaW5lICh0aHJvdWdoICRfX2dpdF9kaXIpJyAnCisJZWNobyAiJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPmV4cGVjdGVkICYmCisJKAorCQlfX2dpdF9kaXI9IiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiICYmCisJCV9fZ2l0ZGlyID4iJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0ZGlyIC0gcmVwbyBhcyBhcmd1bWVudCcgJworCWVjaG8gIm90aGVycmVwby8uZ2l0IiA+ZXhwZWN0ZWQgJiYKKwlfX2dpdGRpciAib3RoZXJyZXBvIiA+IiRhY3R1YWwiICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0ZGlyIC0gcmVtb3RlIGFzIGFyZ3VtZW50JyAnCisJZWNobyAicmVtb3RlIiA+ZXhwZWN0ZWQgJiYKKwlfX2dpdGRpciAicmVtb3RlIiA+IiRhY3R1YWwiICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0ZGlyIC0gLmdpdCBkaXJlY3RvcnkgaW4gY3dkJyAnCisJZWNobyAiLmdpdCIgPmV4cGVjdGVkICYmCisJX19naXRkaXIgPiIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGRpciAtIC5naXQgZGlyZWN0b3J5IGluIHBhcmVudCcgJworCWVjaG8gIiQocHdkIC1QKS8uZ2l0IiA+ZXhwZWN0ZWQgJiYKKwkoCisJCWNkIHN1YmRpci9zdWJzdWJkaXIgJiYKKwkJX19naXRkaXIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRkaXIgLSBjd2QgaXMgYSAuZ2l0IGRpcmVjdG9yeScgJworCWVjaG8gIi4iID5leHBlY3RlZCAmJgorCSgKKwkJY2QgLmdpdCAmJgorCQlfX2dpdGRpciA+IiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGRpciAtIHBhcmVudCBpcyBhIC5naXQgZGlyZWN0b3J5JyAnCisJZWNobyAiJChwd2QgLVApLy5naXQiID5leHBlY3RlZCAmJgorCSgKKwkJY2QgLmdpdC9yZWZzL2hlYWRzICYmCisJCV9fZ2l0ZGlyID4iJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0ZGlyIC0gJEdJVF9ESVIgc2V0IHdoaWxlIC5naXQgZGlyZWN0b3J5IGluIGN3ZCcgJworCWVjaG8gIiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID5leHBlY3RlZCAmJgorCSgKKwkJR0lUX0RJUj0iJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgJiYKKwkJZXhwb3J0IEdJVF9ESVIgJiYKKwkJX19naXRkaXIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRkaXIgLSAkR0lUX0RJUiBzZXQgd2hpbGUgLmdpdCBkaXJlY3RvcnkgaW4gcGFyZW50JyAnCisJZWNobyAiJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPmV4cGVjdGVkICYmCisJKAorCQlHSVRfRElSPSIkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiAmJgorCQlleHBvcnQgR0lUX0RJUiAmJgorCQljZCBzdWJkaXIgJiYKKwkJX19naXRkaXIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRkaXIgLSBub24tZXhpc3RpbmcgJEdJVF9ESVInICcKKwkoCisJCUdJVF9ESVI9IiRUUkFTSF9ESVJFQ1RPUlkvbm9uLWV4aXN0aW5nIiAmJgorCQlleHBvcnQgR0lUX0RJUiAmJgorCQl0ZXN0X211c3RfZmFpbCBfX2dpdGRpcgorCSkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRkaXIgLSBnaXRmaWxlIGluIGN3ZCcgJworCWVjaG8gIiQocHdkIC1QKS9vdGhlcnJlcG8vLmdpdCIgPmV4cGVjdGVkICYmCisJZWNobyAiZ2l0ZGlyOiAkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiA+c3ViZGlyLy5naXQgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIHN1YmRpci8uZ2l0IiAmJgorCSgKKwkJY2Qgc3ViZGlyICYmCisJCV9fZ2l0ZGlyID4iJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0ZGlyIC0gZ2l0ZmlsZSBpbiBwYXJlbnQnICcKKwllY2hvICIkKHB3ZCAtUCkvb3RoZXJyZXBvLy5naXQiID5leHBlY3RlZCAmJgorCWVjaG8gImdpdGRpcjogJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPnN1YmRpci8uZ2l0ICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZiBzdWJkaXIvLmdpdCIgJiYKKwkoCisJCWNkIHN1YmRpci9zdWJzdWJkaXIgJiYKKwkJX19naXRkaXIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyBTWU1MSU5LUyAnX19naXRkaXIgLSByZXN1bHRpbmcgcGF0aCBhdm9pZHMgc3ltbGlua3MnICcKKwllY2hvICIkKHB3ZCAtUCkvb3RoZXJyZXBvLy5naXQiID5leHBlY3RlZCAmJgorCW1rZGlyIG90aGVycmVwby9kaXIgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBvdGhlcnJlcG8vZGlyIiAmJgorCWxuIC1zIG90aGVycmVwby9kaXIgbGluayAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWYgbGluayIgJiYKKwkoCisJCWNkIGxpbmsgJiYKKwkJX19naXRkaXIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnX19naXRkaXIgLSBub3QgYSBnaXQgcmVwb3NpdG9yeScgJworCSgKKwkJY2Qgc3ViZGlyL3N1YnN1YmRpciAmJgorCQlHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iJFRSQVNIX0RJUkVDVE9SWSIgJiYKKwkJZXhwb3J0IEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTICYmCisJCXRlc3RfbXVzdF9mYWlsIF9fZ2l0ZGlyCisJKQorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGNvbXAgLSB0cmFpbGluZyBzcGFjZSAtIG9wdGlvbnMnICcKIAl0ZXN0X2dpdGNvbXAgIi0tcmUiICItLWRyeS1ydW4gLS1yZXVzZS1tZXNzYWdlPSAtLXJlZWRpdC1tZXNzYWdlPQogCQktLXJlc2V0LWF1dGhvciIgPDwtRU9GCkBAIC0yMzEsNiArMzY1LDcgQEAKIAktLWV4ZWMtcGF0aCBaCiAJLS1leGVjLXBhdGg9CiAJLS1odG1sLXBhdGggWgorCS0tbWFuLXBhdGggWgogCS0taW5mby1wYXRoIFoKIAktLXdvcmstdHJlZT0KIAktLW5hbWVzcGFjZT0KQEAgLTM0Nyw0ICs0ODIsODEgQEAKIAl0ZXN0X2NvbXBsZXRpb24gImdpdCBzZW5kLWVtYWlsIG1hIiAibWFzdGVyICIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY29tcGxldGUgZmlsZXMnICcKKwlnaXQgaW5pdCB0bXAgJiYgY2QgdG1wICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJjZCAuLiAmJiBybSAtcmYgdG1wIiAmJgorCisJZWNobyAiZXhwZWN0ZWQiID4gLmdpdGlnbm9yZSAmJgorCWVjaG8gIm91dCIgPj4gLmdpdGlnbm9yZSAmJgorCisJZ2l0IGFkZCAuZ2l0aWdub3JlICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgY29tbWl0ICIgIi5naXRpZ25vcmUiICYmCisKKwlnaXQgY29tbWl0IC1tIGlnbm9yZSAmJgorCisJdG91Y2ggbmV3ICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgYWRkICIgIm5ldyIgJiYKKworCWdpdCBhZGQgbmV3ICYmCisJZ2l0IGNvbW1pdCAtYSAtbSBuZXcgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBhZGQgIiAiIiAmJgorCisJZ2l0IG12IG5ldyBtb2RpZmllZCAmJgorCWVjaG8gbW9kaWZ5ID4gbW9kaWZpZWQgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBhZGQgIiAibW9kaWZpZWQiICYmCisKKwl0b3VjaCB1bnRyYWNrZWQgJiYKKworCTogVE9ETyAuZ2l0aWdub3JlIHNob3VsZCBub3QgYmUgaGVyZSAmJgorCXRlc3RfY29tcGxldGlvbiAiZ2l0IHJtICIgPDwtXEVPRiAmJgorCS5naXRpZ25vcmUKKwltb2RpZmllZAorCUVPRgorCisJdGVzdF9jb21wbGV0aW9uICJnaXQgY2xlYW4gIiAidW50cmFja2VkIiAmJgorCisJOiBUT0RPIC5naXRpZ25vcmUgc2hvdWxkIG5vdCBiZSBoZXJlICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgbXYgIiA8PC1cRU9GICYmCisJLmdpdGlnbm9yZQorCW1vZGlmaWVkCisJRU9GCisKKwlta2RpciBkaXIgJiYKKwl0b3VjaCBkaXIvZmlsZS1pbi1kaXIgJiYKKwlnaXQgYWRkIGRpci9maWxlLWluLWRpciAmJgorCWdpdCBjb21taXQgLW0gZGlyICYmCisKKwlta2RpciB1bnRyYWNrZWQtZGlyICYmCisKKwk6IFRPRE8gLmdpdGlnbm9yZSBzaG91bGQgbm90IGJlIGhlcmUgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBtdiBtb2RpZmllZCAiIDw8LVxFT0YgJiYKKwkuZ2l0aWdub3JlCisJZGlyCisJbW9kaWZpZWQKKwl1bnRyYWNrZWQKKwl1bnRyYWNrZWQtZGlyCisJRU9GCisKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBjb21taXQgIiAibW9kaWZpZWQiICYmCisKKwk6IFRPRE8gLmdpdGlnbm9yZSBzaG91bGQgbm90IGJlIGhlcmUgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBscy1maWxlcyAiIDw8LVxFT0YKKwkuZ2l0aWdub3JlCisJZGlyCisJbW9kaWZpZWQKKwlFT0YKKworCXRvdWNoIG1vbWlmaWVkICYmCisJdGVzdF9jb21wbGV0aW9uICJnaXQgYWRkIG1vbSIgIm1vbWlmaWVkIgorJworCit0ZXN0X2V4cGVjdF9mYWlsdXJlICdjb21wbGV0ZSB3aXRoIHRpbGRlIGV4cGFuc2lvbicgJworCWdpdCBpbml0IHRtcCAmJiBjZCB0bXAgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImNkIC4uICYmIHJtIC1yZiB0bXAiICYmCisKKwl0b3VjaCB+L3RtcC9maWxlICYmCisKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBhZGQgfi90bXAvIiAifi90bXAvZmlsZSIKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3Q5OTAzLWJhc2gtcHJvbXB0LnNoIGIvdC90OTkwMy1iYXNoLXByb21wdC5zaAppbmRleCAxNTUyMWNjLi4zYzNlNGU4IDEwMDc1NQotLS0gYS90L3Q5OTAzLWJhc2gtcHJvbXB0LnNoCisrKyBiL3QvdDk5MDMtYmFzaC1wcm9tcHQuc2gKQEAgLTEwLDUyOCArMTAsNTU4IEBACiAuICIkR0lUX0JVSUxEX0RJUi9jb250cmliL2NvbXBsZXRpb24vZ2l0LXByb21wdC5zaCIKIAogYWN0dWFsPSIkVFJBU0hfRElSRUNUT1JZL2FjdHVhbCIKK2NfcmVkPSdcXFtcXGVbMzFtXFxdJworY19ncmVlbj0nXFxbXFxlWzMybVxcXScKK2NfbGJsdWU9J1xcW1xcZVsxOzM0bVxcXScKK2NfY2xlYXI9J1xcW1xcZVswbVxcXScKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgZm9yIHByb21wdCB0ZXN0cycgJwotCW1rZGlyIC1wIHN1YmRpci9zdWJzdWJkaXIgJiYKIAlnaXQgaW5pdCBvdGhlcnJlcG8gJiYKLQllY2hvIDEgPiBmaWxlICYmCisJZWNobyAxID5maWxlICYmCiAJZ2l0IGFkZCBmaWxlICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSBpbml0aWFsICYmCiAJZ2l0IHRhZyAtYSAtbSBtc2cxIHQxICYmCiAJZ2l0IGNoZWNrb3V0IC1iIGIxICYmCi0JZWNobyAyID4gZmlsZSAmJgorCWVjaG8gMiA+ZmlsZSAmJgogCWdpdCBjb21taXQgLW0gInNlY29uZCBiMSIgZmlsZSAmJgotCWVjaG8gMyA+IGZpbGUgJiYKKwllY2hvIDMgPmZpbGUgJiYKIAlnaXQgY29tbWl0IC1tICJ0aGlyZCBiMSIgZmlsZSAmJgogCWdpdCB0YWcgLWEgLW0gbXNnMiB0MiAmJgogCWdpdCBjaGVja291dCAtYiBiMiBtYXN0ZXIgJiYKLQllY2hvIDAgPiBmaWxlICYmCisJZWNobyAwID5maWxlICYmCiAJZ2l0IGNvbW1pdCAtbSAic2Vjb25kIGIyIiBmaWxlICYmCi0JZWNobyAwMCA+IGZpbGUgJiYKKwllY2hvIDAwID5maWxlICYmCiAJZ2l0IGNvbW1pdCAtbSAiYW5vdGhlciBiMiIgZmlsZSAmJgotCWVjaG8gMDAwID4gZmlsZSAmJgorCWVjaG8gMDAwID5maWxlICYmCiAJZ2l0IGNvbW1pdCAtbSAieWV0IGFub3RoZXIgYjIiIGZpbGUgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIGZyb20gY29tbWFuZCBsaW5lICh0aHJvdWdoICRfX2dpdF9kaXIpJyAnCi0JZWNobyAiJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPiBleHBlY3RlZCAmJgotCSgKLQkJX19naXRfZGlyPSIkVFJBU0hfRElSRUNUT1JZL290aGVycmVwby8uZ2l0IiAmJgotCQlfX2dpdGRpciA+ICIkYWN0dWFsIgotCSkgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gcmVwbyBhcyBhcmd1bWVudCcgJwotCWVjaG8gIm90aGVycmVwby8uZ2l0IiA+IGV4cGVjdGVkICYmCi0JX19naXRkaXIgIm90aGVycmVwbyIgPiAiJGFjdHVhbCIgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gcmVtb3RlIGFzIGFyZ3VtZW50JyAnCi0JZWNobyAicmVtb3RlIiA+IGV4cGVjdGVkICYmCi0JX19naXRkaXIgInJlbW90ZSIgPiAiJGFjdHVhbCIgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gLmdpdCBkaXJlY3RvcnkgaW4gY3dkJyAnCi0JZWNobyAiLmdpdCIgPiBleHBlY3RlZCAmJgotCV9fZ2l0ZGlyID4gIiRhY3R1YWwiICYmCi0JdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIC5naXQgZGlyZWN0b3J5IGluIHBhcmVudCcgJwotCWVjaG8gIiQocHdkIC1QKS8uZ2l0IiA+IGV4cGVjdGVkICYmCi0JKAotCQljZCBzdWJkaXIvc3Vic3ViZGlyICYmCi0JCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCi0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBjd2QgaXMgYSAuZ2l0IGRpcmVjdG9yeScgJwotCWVjaG8gIi4iID4gZXhwZWN0ZWQgJiYKLQkoCi0JCWNkIC5naXQgJiYKLQkJX19naXRkaXIgPiAiJGFjdHVhbCIKLQkpICYmCi0JdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCi0nCi0KLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdGRpciAtIHBhcmVudCBpcyBhIC5naXQgZGlyZWN0b3J5JyAnCi0JZWNobyAiJChwd2QgLVApLy5naXQiID4gZXhwZWN0ZWQgJiYKLQkoCi0JCWNkIC5naXQvcmVmcy9oZWFkcyAmJgotCQlfX2dpdGRpciA+ICIkYWN0dWFsIgotCSkgJiYKLQl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gJEdJVF9ESVIgc2V0IHdoaWxlIC5naXQgZGlyZWN0b3J5IGluIGN3ZCcgJwotCWVjaG8gIiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKLQkoCi0JCUdJVF9ESVI9IiRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiICYmCi0JCWV4cG9ydCBHSVRfRElSICYmCi0JCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCi0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSAkR0lUX0RJUiBzZXQgd2hpbGUgLmdpdCBkaXJlY3RvcnkgaW4gcGFyZW50JyAnCi0JZWNobyAiJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPiBleHBlY3RlZCAmJgotCSgKLQkJR0lUX0RJUj0iJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgJiYKLQkJZXhwb3J0IEdJVF9ESVIgJiYKLQkJY2Qgc3ViZGlyICYmCi0JCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCi0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBub24tZXhpc3RpbmcgJEdJVF9ESVInICcKLQkoCi0JCUdJVF9ESVI9IiRUUkFTSF9ESVJFQ1RPUlkvbm9uLWV4aXN0aW5nIiAmJgotCQlleHBvcnQgR0lUX0RJUiAmJgotCQl0ZXN0X211c3RfZmFpbCBfX2dpdGRpcgotCSkKLScKLQotdGVzdF9leHBlY3Rfc3VjY2VzcyAnZ2l0ZGlyIC0gZ2l0ZmlsZSBpbiBjd2QnICcKLQllY2hvICIkKHB3ZCAtUCkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKLQllY2hvICJnaXRkaXI6ICRUUkFTSF9ESVJFQ1RPUlkvb3RoZXJyZXBvLy5naXQiID4gc3ViZGlyLy5naXQgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIHN1YmRpci8uZ2l0IiAmJgotCSgKLQkJY2Qgc3ViZGlyICYmCi0JCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCi0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBnaXRmaWxlIGluIHBhcmVudCcgJwotCWVjaG8gIiQocHdkIC1QKS9vdGhlcnJlcG8vLmdpdCIgPiBleHBlY3RlZCAmJgotCWVjaG8gImdpdGRpcjogJFRSQVNIX0RJUkVDVE9SWS9vdGhlcnJlcG8vLmdpdCIgPiBzdWJkaXIvLmdpdCAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLWYgc3ViZGlyLy5naXQiICYmCi0JKAotCQljZCBzdWJkaXIvc3Vic3ViZGlyICYmCi0JCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCi0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdnaXRkaXIgLSByZXN1bHRpbmcgcGF0aCBhdm9pZHMgc3ltbGlua3MnICcKLQllY2hvICIkKHB3ZCAtUCkvb3RoZXJyZXBvLy5naXQiID4gZXhwZWN0ZWQgJiYKLQlta2RpciBvdGhlcnJlcG8vZGlyICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtcmYgb3RoZXJyZXBvL2RpciIgJiYKLQlsbiAtcyBvdGhlcnJlcG8vZGlyIGxpbmsgJiYKLQl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIGxpbmsiICYmCi0JKAotCQljZCBsaW5rICYmCi0JCV9fZ2l0ZGlyID4gIiRhY3R1YWwiCi0JKSAmJgotCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgotJwotCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXRkaXIgLSBub3QgYSBnaXQgcmVwb3NpdG9yeScgJwotCSgKLQkJY2Qgc3ViZGlyL3N1YnN1YmRpciAmJgotCQlHSVRfQ0VJTElOR19ESVJFQ1RPUklFUz0iJFRSQVNIX0RJUkVDVE9SWSIgJiYKLQkJZXhwb3J0IEdJVF9DRUlMSU5HX0RJUkVDVE9SSUVTICYmCi0JCXRlc3RfbXVzdF9mYWlsIF9fZ2l0ZGlyCi0JKQotJwotCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBicmFuY2ggbmFtZScgJwotCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCi0JX19naXRfcHMxID4gIiRhY3R1YWwiICYmCisJcHJpbnRmICIgKG1hc3RlcikiID5leHBlY3RlZCAmJgorCV9fZ2l0X3BzMSA+IiRhY3R1YWwiICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3Byb21wdCAtIGJyYW5jaCBuYW1lIC0gc3ltbGluayBzeW1yZWYnICcKKwlwcmludGYgIiAobWFzdGVyKSIgPmV4cGVjdGVkICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgorCXRlc3RfY29uZmlnIGNvcmUucHJlZmVyU3ltbGlua1JlZnMgdHJ1ZSAmJgorCWdpdCBjaGVja291dCBtYXN0ZXIgJiYKKwlfX2dpdF9wczEgPiIkYWN0dWFsIiAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bmJvcm4gYnJhbmNoJyAnCisJcHJpbnRmICIgKHVuYm9ybikiID5leHBlY3RlZCAmJgorCWdpdCBjaGVja291dCAtLW9ycGhhbiB1bmJvcm4gJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCisJX19naXRfcHMxID4iJGFjdHVhbCIgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGV0YWNoZWQgaGVhZCcgJwotCXByaW50ZiAiICgoJXMuLi4pKSIgJChnaXQgbG9nIC0xIC0tZm9ybWF0PSIlaCIgYjFeKSA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKCglcy4uLikpIiAkKGdpdCBsb2cgLTEgLS1mb3JtYXQ9IiVoIiAtLWFiYnJldj0xMyBiMV4pID5leHBlY3RlZCAmJgorCXRlc3RfY29uZmlnIGNvcmUuYWJicmV2IDEzICYmCiAJZ2l0IGNoZWNrb3V0IGIxXiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGNoZWNrb3V0IG1hc3RlciIgJiYKLQlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwlfX2dpdF9wczEgPiIkYWN0dWFsIiAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkZXNjcmliZSBkZXRhY2hlZCBoZWFkIC0gY29udGFpbnMnICcKLQlwcmludGYgIiAoKHQyfjEpKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiICgodDJ+MSkpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgYjFeICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgogCSgKIAkJR0lUX1BTMV9ERVNDUklCRV9TVFlMRT1jb250YWlucyAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRlc2NyaWJlIGRldGFjaGVkIGhlYWQgLSBicmFuY2gnICcKLQlwcmludGYgIiAoKGIxfjEpKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiICgoYjF+MSkpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgYjFeICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgogCSgKIAkJR0lUX1BTMV9ERVNDUklCRV9TVFlMRT1icmFuY2ggJiYKLQkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJCV9fZ2l0X3BzMSA+IiRhY3R1YWwiCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkZXNjcmliZSBkZXRhY2hlZCBoZWFkIC0gZGVzY3JpYmUnICcKLQlwcmludGYgIiAoKHQxLTEtZyVzKSkiICQoZ2l0IGxvZyAtMSAtLWZvcm1hdD0iJWgiIGIxXikgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiICgodDEtMS1nJXMpKSIgJChnaXQgbG9nIC0xIC0tZm9ybWF0PSIlaCIgYjFeKSA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgYjFeICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgogCSgKIAkJR0lUX1BTMV9ERVNDUklCRV9TVFlMRT1kZXNjcmliZSAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRlc2NyaWJlIGRldGFjaGVkIGhlYWQgLSBkZWZhdWx0JyAnCi0JcHJpbnRmICIgKCh0MikpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKCh0MikpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgLS1kZXRhY2ggYjEgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCi0JX19naXRfcHMxID4gIiRhY3R1YWwiICYmCisJX19naXRfcHMxID4iJGFjdHVhbCIgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gaW5zaWRlIC5naXQgZGlyZWN0b3J5JyAnCi0JcHJpbnRmICIgKEdJVF9ESVIhKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChHSVRfRElSISkiID5leHBlY3RlZCAmJgogCSgKIAkJY2QgLmdpdCAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRlZXAgaW5zaWRlIC5naXQgZGlyZWN0b3J5JyAnCi0JcHJpbnRmICIgKEdJVF9ESVIhKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChHSVRfRElSISkiID5leHBlY3RlZCAmJgogCSgKIAkJY2QgLmdpdC9yZWZzL2hlYWRzICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gaW5zaWRlIGJhcmUgcmVwb3NpdG9yeScgJwotCXByaW50ZiAiIChCQVJFOm1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwlwcmludGYgIiAoQkFSRTptYXN0ZXIpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgaW5pdCAtLWJhcmUgYmFyZS5naXQgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1yZiBiYXJlLmdpdCIgJiYKIAkoCiAJCWNkIGJhcmUuZ2l0ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gaW50ZXJhY3RpdmUgcmViYXNlJyAnCi0JcHJpbnRmICIgKGIxfFJFQkFTRS1pIDIvMykiID4gZXhwZWN0ZWQKLQllY2hvICIjISRTSEVMTF9QQVRIIiA+ZmFrZV9lZGl0b3Iuc2ggJiYKLQljYXQgPj5mYWtlX2VkaXRvci5zaCA8PFxFT0YgJiYKLWVjaG8gImV4ZWMgZWNobyIgPiAiJDEiCi1lY2hvICJlZGl0ICQoZ2l0IGxvZyAtMSAtLWZvcm1hdD0iJWgiKSIgPj4gIiQxIgotZWNobyAiZXhlYyBlY2hvIiA+PiAiJDEiCi1FT0YKKwlwcmludGYgIiAoYjF8UkVCQVNFLWkgMi8zKSIgPmV4cGVjdGVkCisJd3JpdGVfc2NyaXB0IGZha2VfZWRpdG9yLnNoIDw8LVxFT0YgJiYKKwkJZWNobyAiZXhlYyBlY2hvIiA+IiQxIgorCQllY2hvICJlZGl0ICQoZ2l0IGxvZyAtMSAtLWZvcm1hdD0iJWgiKSIgPj4iJDEiCisJCWVjaG8gImV4ZWMgZWNobyIgPj4iJDEiCisJRU9GCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZiBmYWtlX2VkaXRvci5zaCIgJiYKLQljaG1vZCBhK3ggZmFrZV9lZGl0b3Iuc2ggJiYKIAl0ZXN0X3NldF9lZGl0b3IgIiRUUkFTSF9ESVJFQ1RPUlkvZmFrZV9lZGl0b3Iuc2giICYmCiAJZ2l0IGNoZWNrb3V0IGIxICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgogCWdpdCByZWJhc2UgLWkgSEVBRF4gJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCIKLQlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwlfX2dpdF9wczEgPiIkYWN0dWFsIiAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSByZWJhc2UgbWVyZ2UnICcKLQlwcmludGYgIiAoYjJ8UkVCQVNFLW0gMS8zKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChiMnxSRUJBU0UtbSAxLzMpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgYjIgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLW1lcmdlIGIxIGIyICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQiICYmCi0JX19naXRfcHMxID4gIiRhY3R1YWwiICYmCisJX19naXRfcHMxID4iJGFjdHVhbCIgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gcmViYXNlJyAnCi0JcHJpbnRmICIgKGIyfFJFQkFTRSAxLzMpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKGIyfFJFQkFTRSAxLzMpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgYjIgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSBiMSBiMiAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgotCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCV9fZ2l0X3BzMSA+IiRhY3R1YWwiICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIG1lcmdlJyAnCi0JcHJpbnRmICIgKGIxfE1FUkdJTkcpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKGIxfE1FUkdJTkcpIiA+ZXhwZWN0ZWQgJiYKIAlnaXQgY2hlY2tvdXQgYjEgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIGIyICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgotCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCV9fZ2l0X3BzMSA+IiRhY3R1YWwiICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGNoZXJyeS1waWNrJyAnCi0JcHJpbnRmICIgKG1hc3RlcnxDSEVSUlktUElDS0lORykiID4gZXhwZWN0ZWQgJiYKKwlwcmludGYgIiAobWFzdGVyfENIRVJSWS1QSUNLSU5HKSIgPmV4cGVjdGVkICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGNoZXJyeS1waWNrIGIxICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgotCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIiAmJgorCV9fZ2l0X3BzMSA+IiRhY3R1YWwiICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGJpc2VjdCcgJwotCXByaW50ZiAiIChtYXN0ZXJ8QklTRUNUSU5HKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXJ8QklTRUNUSU5HKSIgPmV4cGVjdGVkICYmCiAJZ2l0IGJpc2VjdCBzdGFydCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IGJpc2VjdCByZXNldCIgJiYKLQlfX2dpdF9wczEgPiAiJGFjdHVhbCIgJiYKKwlfX2dpdF9wczEgPiIkYWN0dWFsIiAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gY2xlYW4nICcKLQlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIpIiA+ZXhwZWN0ZWQgJiYKIAkoCiAJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBkaXJ0eSB3b3JrdHJlZScgJwotCXByaW50ZiAiIChtYXN0ZXIgKikiID4gZXhwZWN0ZWQgJiYKLQllY2hvICJkaXJ0eSIgPiBmaWxlICYmCisJcHJpbnRmICIgKG1hc3RlciAqKSIgPmV4cGVjdGVkICYmCisJZWNobyAiZGlydHkiID5maWxlICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmVzZXQgLS1oYXJkIiAmJgogCSgKIAkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIGRpcnR5IGluZGV4JyAnCi0JcHJpbnRmICIgKG1hc3RlciArKSIgPiBleHBlY3RlZCAmJgotCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwlwcmludGYgIiAobWFzdGVyICspIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSIgPmZpbGUgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCiAJZ2l0IGFkZCAtdSAmJgogCSgKIAkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIGRpcnR5IGluZGV4IGFuZCB3b3JrdHJlZScgJwotCXByaW50ZiAiIChtYXN0ZXIgKispIiA+IGV4cGVjdGVkICYmCi0JZWNobyAiZGlydHkgaW5kZXgiID4gZmlsZSAmJgorCXByaW50ZiAiIChtYXN0ZXIgKispIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSBpbmRleCIgPmZpbGUgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCiAJZ2l0IGFkZCAtdSAmJgotCWVjaG8gImRpcnR5IHdvcmt0cmVlIiA+IGZpbGUgJiYKKwllY2hvICJkaXJ0eSB3b3JrdHJlZSIgPmZpbGUgJiYKIAkoCiAJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBiZWZvcmUgcm9vdCBjb21taXQnICcKLQlwcmludGYgIiAobWFzdGVyICMpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKG1hc3RlciAjKSIgPmV4cGVjdGVkICYmCiAJKAogCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKIAkJY2Qgb3RoZXJyZXBvICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHVuc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCi0JcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKLQllY2hvICJkaXJ0eSIgPiBmaWxlICYmCisJcHJpbnRmICIgKG1hc3RlcikiID5leHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+ZmlsZSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIGZhbHNlICYmCiAJKAogCQlzYW5lX3Vuc2V0IEdJVF9QUzFfU0hPV0RJUlRZU1RBVEUgJiYKLQkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJCV9fZ2l0X3BzMSA+IiRhY3R1YWwiCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgdW5zZXQgd2l0aCBjb25maWcgZW5hYmxlZCcgJwotCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCi0JZWNobyAiZGlydHkiID4gZmlsZSAmJgorCXByaW50ZiAiIChtYXN0ZXIpIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSIgPmZpbGUgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCiAJdGVzdF9jb25maWcgYmFzaC5zaG93RGlydHlTdGF0ZSB0cnVlICYmCiAJKAogCQlzYW5lX3Vuc2V0IEdJVF9QUzFfU0hPV0RJUlRZU1RBVEUgJiYKLQkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJCV9fZ2l0X3BzMSA+IiRhY3R1YWwiCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCi0JcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKLQllY2hvICJkaXJ0eSIgPiBmaWxlICYmCisJcHJpbnRmICIgKG1hc3RlcikiID5leHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+ZmlsZSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIGZhbHNlICYmCiAJKAogCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKLQkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJCV9fZ2l0X3BzMSA+IiRhY3R1YWwiCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGVuYWJsZWQnICcKLQlwcmludGYgIiAobWFzdGVyICopIiA+IGV4cGVjdGVkICYmCi0JZWNobyAiZGlydHkiID4gZmlsZSAmJgorCXByaW50ZiAiIChtYXN0ZXIgKikiID5leHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+ZmlsZSAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dEaXJ0eVN0YXRlIHRydWUgJiYKIAkoCiAJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBub3Qgc2hvd24gaW5zaWRlIC5naXQgZGlyZWN0b3J5JyAnCi0JcHJpbnRmICIgKEdJVF9ESVIhKSIgPiBleHBlY3RlZCAmJgotCWVjaG8gImRpcnR5IiA+IGZpbGUgJiYKKwlwcmludGYgIiAoR0lUX0RJUiEpIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSIgPmZpbGUgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCiAJKAogCQlHSVRfUFMxX1NIT1dESVJUWVNUQVRFPXkgJiYKIAkJY2QgLmdpdCAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHN0YXNoIHN0YXR1cyBpbmRpY2F0b3IgLSBubyBzdGFzaCcgJwotCXByaW50ZiAiIChtYXN0ZXIpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKG1hc3RlcikiID5leHBlY3RlZCAmJgogCSgKIAkJR0lUX1BTMV9TSE9XU1RBU0hTVEFURT15ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gc3Rhc2ggc3RhdHVzIGluZGljYXRvciAtIHN0YXNoJyAnCi0JcHJpbnRmICIgKG1hc3RlciAkKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIgJCkiID5leHBlY3RlZCAmJgogCWVjaG8gMiA+ZmlsZSAmJgogCWdpdCBzdGFzaCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHN0YXNoIGRyb3AiICYmCisJZ2l0IHBhY2stcmVmcyAtLWFsbCAmJgogCSgKIAkJR0lUX1BTMV9TSE9XU1RBU0hTVEFURT15ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gc3Rhc2ggc3RhdHVzIGluZGljYXRvciAtIG5vdCBzaG93biBpbnNpZGUgLmdpdCBkaXJlY3RvcnknICcKLQlwcmludGYgIiAoR0lUX0RJUiEpIiA+IGV4cGVjdGVkICYmCisJcHJpbnRmICIgKEdJVF9ESVIhKSIgPmV4cGVjdGVkICYmCiAJZWNobyAyID5maWxlICYmCiAJZ2l0IHN0YXNoICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgc3Rhc2ggZHJvcCIgJiYKIAkoCiAJCUdJVF9QUzFfU0hPV1NUQVNIU1RBVEU9eSAmJgogCQljZCAuZ2l0ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gdW50cmFja2VkIGZpbGVzIHN0YXR1cyBpbmRpY2F0b3IgLSBubyB1bnRyYWNrZWQgZmlsZXMnICcKLQlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIpIiA+ZXhwZWN0ZWQgJiYKIAkoCiAJCUdJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTPXkgJiYKIAkJY2Qgb3RoZXJyZXBvICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gdW50cmFja2VkIGZpbGVzIHN0YXR1cyBpbmRpY2F0b3IgLSB1bnRyYWNrZWQgZmlsZXMnICcKLQlwcmludGYgIiAobWFzdGVyICUlKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIgJSUpIiA+ZXhwZWN0ZWQgJiYKIAkoCiAJCUdJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTPXkgJiYKLQkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJCV9fZ2l0X3BzMSA+IiRhY3R1YWwiCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHVuc2V0IHdpdGggY29uZmlnIGRpc2FibGVkJyAnCi0JcHJpbnRmICIgKG1hc3RlcikiID4gZXhwZWN0ZWQgJiYKKwlwcmludGYgIiAobWFzdGVyKSIgPmV4cGVjdGVkICYmCiAJdGVzdF9jb25maWcgYmFzaC5zaG93VW50cmFja2VkRmlsZXMgZmFsc2UgJiYKIAkoCiAJCXNhbmVfdW5zZXQgR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVMgJiYKLQkJX19naXRfcHMxID4gIiRhY3R1YWwiCisJCV9fZ2l0X3BzMSA+IiRhY3R1YWwiCiAJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB1bnRyYWNrZWQgZmlsZXMgc3RhdHVzIGluZGljYXRvciAtIHNoZWxsIHZhcmlhYmxlIHVuc2V0IHdpdGggY29uZmlnIGVuYWJsZWQnICcKLQlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIpIiA+ZXhwZWN0ZWQgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyB0cnVlICYmCiAJKAogCQlzYW5lX3Vuc2V0IEdJVF9QUzFfU0hPV1VOVFJBQ0tFREZJTEVTICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gdW50cmFja2VkIGZpbGVzIHN0YXR1cyBpbmRpY2F0b3IgLSBzaGVsbCB2YXJpYWJsZSBzZXQgd2l0aCBjb25maWcgZGlzYWJsZWQnICcKLQlwcmludGYgIiAobWFzdGVyKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIpIiA+ZXhwZWN0ZWQgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyBmYWxzZSAmJgogCSgKIAkJR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVM9eSAmJgotCQlfX2dpdF9wczEgPiAiJGFjdHVhbCIKKwkJX19naXRfcHMxID4iJGFjdHVhbCIKIAkpICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHVudHJhY2tlZCBmaWxlcyBzdGF0dXMgaW5kaWNhdG9yIC0gc2hlbGwgdmFyaWFibGUgc2V0IHdpdGggY29uZmlnIGVuYWJsZWQnICcKLQlwcmludGYgIiAobWFzdGVyICUlKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChtYXN0ZXIgJSUpIiA+ZXhwZWN0ZWQgJiYKIAl0ZXN0X2NvbmZpZyBiYXNoLnNob3dVbnRyYWNrZWRGaWxlcyB0cnVlICYmCiAJKAogCQlHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUz15ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gdW50cmFja2VkIGZpbGVzIHN0YXR1cyBpbmRpY2F0b3IgLSBub3Qgc2hvd24gaW5zaWRlIC5naXQgZGlyZWN0b3J5JyAnCi0JcHJpbnRmICIgKEdJVF9ESVIhKSIgPiBleHBlY3RlZCAmJgorCXByaW50ZiAiIChHSVRfRElSISkiID5leHBlY3RlZCAmJgogCSgKIAkJR0lUX1BTMV9TSE9XVU5UUkFDS0VERklMRVM9eSAmJgogCQljZCAuZ2l0ICYmCi0JCV9fZ2l0X3BzMSA+ICIkYWN0dWFsIgorCQlfX2dpdF9wczEgPiIkYWN0dWFsIgogCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gZm9ybWF0IHN0cmluZyBzdGFydGluZyB3aXRoIGRhc2gnICcKLQlwcmludGYgLS0gIi1tYXN0ZXIiID4gZXhwZWN0ZWQgJiYKLQlfX2dpdF9wczEgIi0lcyIgPiAiJGFjdHVhbCIgJiYKKwlwcmludGYgLS0gIi1tYXN0ZXIiID5leHBlY3RlZCAmJgorCV9fZ2l0X3BzMSAiLSVzIiA+IiRhY3R1YWwiICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIHBjIG1vZGUnICcKKwlwcmludGYgIkJFRk9SRTogKG1hc3Rlcik6QUZURVIiID5leHBlY3RlZCAmJgorCXByaW50ZiAiIiA+ZXhwZWN0ZWRfb3V0cHV0ICYmCisJKAorCQlfX2dpdF9wczEgIkJFRk9SRToiICI6QUZURVIiID4iJGFjdHVhbCIgJiYKKwkJdGVzdF9jbXAgZXhwZWN0ZWRfb3V0cHV0ICIkYWN0dWFsIiAmJgorCQlwcmludGYgIiVzIiAiJFBTMSIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gYmFzaCBjb2xvciBwYyBtb2RlIC0gYnJhbmNoIG5hbWUnICcKKwlwcmludGYgIkJFRk9SRTogKCR7Y19ncmVlbn1tYXN0ZXIke2NfY2xlYXJ9KTpBRlRFUiIgPmV4cGVjdGVkICYmCisJKAorCQlHSVRfUFMxX1NIT1dDT0xPUkhJTlRTPXkgJiYKKwkJX19naXRfcHMxICJCRUZPUkU6IiAiOkFGVEVSIiA+IiRhY3R1YWwiCisJCXByaW50ZiAiJXMiICIkUFMxIiA+IiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBiYXNoIGNvbG9yIHBjIG1vZGUgLSBkZXRhY2hlZCBoZWFkJyAnCisJcHJpbnRmICJCRUZPUkU6ICgke2NfcmVkfSglcy4uLikke2NfY2xlYXJ9KTpBRlRFUiIgJChnaXQgbG9nIC0xIC0tZm9ybWF0PSIlaCIgYjFeKSA+ZXhwZWN0ZWQgJiYKKwlnaXQgY2hlY2tvdXQgYjFeICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgY2hlY2tvdXQgbWFzdGVyIiAmJgorCSgKKwkJR0lUX1BTMV9TSE9XQ09MT1JISU5UUz15ICYmCisJCV9fZ2l0X3BzMSAiQkVGT1JFOiIgIjpBRlRFUiIgJiYKKwkJcHJpbnRmICIlcyIgIiRQUzEiID4iJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGJhc2ggY29sb3IgcGMgbW9kZSAtIGRpcnR5IHN0YXR1cyBpbmRpY2F0b3IgLSBkaXJ0eSB3b3JrdHJlZScgJworCXByaW50ZiAiQkVGT1JFOiAoJHtjX2dyZWVufW1hc3RlciR7Y19jbGVhcn0gJHtjX3JlZH0qJHtjX2NsZWFyfSk6QUZURVIiID5leHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+ZmlsZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKKwkoCisJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgorCQlHSVRfUFMxX1NIT1dDT0xPUkhJTlRTPXkgJiYKKwkJX19naXRfcHMxICJCRUZPUkU6IiAiOkFGVEVSIiAmJgorCQlwcmludGYgIiVzIiAiJFBTMSIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gYmFzaCBjb2xvciBwYyBtb2RlIC0gZGlydHkgc3RhdHVzIGluZGljYXRvciAtIGRpcnR5IGluZGV4JyAnCisJcHJpbnRmICJCRUZPUkU6ICgke2NfZ3JlZW59bWFzdGVyJHtjX2NsZWFyfSAke2NfZ3JlZW59KyR7Y19jbGVhcn0pOkFGVEVSIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSIgPmZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJZ2l0IGFkZCAtdSAmJgorCSgKKwkJR0lUX1BTMV9TSE9XRElSVFlTVEFURT15ICYmCisJCUdJVF9QUzFfU0hPV0NPTE9SSElOVFM9eSAmJgorCQlfX2dpdF9wczEgIkJFRk9SRToiICI6QUZURVIiICYmCisJCXByaW50ZiAiJXMiICIkUFMxIiA+IiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBiYXNoIGNvbG9yIHBjIG1vZGUgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gZGlydHkgaW5kZXggYW5kIHdvcmt0cmVlJyAnCisJcHJpbnRmICJCRUZPUkU6ICgke2NfZ3JlZW59bWFzdGVyJHtjX2NsZWFyfSAke2NfcmVkfSoke2NfZ3JlZW59KyR7Y19jbGVhcn0pOkFGVEVSIiA+ZXhwZWN0ZWQgJiYKKwllY2hvICJkaXJ0eSBpbmRleCIgPmZpbGUgJiYKKwl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZXNldCAtLWhhcmQiICYmCisJZ2l0IGFkZCAtdSAmJgorCWVjaG8gImRpcnR5IHdvcmt0cmVlIiA+ZmlsZSAmJgorCSgKKwkJR0lUX1BTMV9TSE9XQ09MT1JISU5UUz15ICYmCisJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgorCQlfX2dpdF9wczEgIkJFRk9SRToiICI6QUZURVIiICYmCisJCXByaW50ZiAiJXMiICIkUFMxIiA+IiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBiYXNoIGNvbG9yIHBjIG1vZGUgLSBkaXJ0eSBzdGF0dXMgaW5kaWNhdG9yIC0gYmVmb3JlIHJvb3QgY29tbWl0JyAnCisJcHJpbnRmICJCRUZPUkU6ICgke2NfZ3JlZW59bWFzdGVyJHtjX2NsZWFyfSAke2NfZ3JlZW59IyR7Y19jbGVhcn0pOkFGVEVSIiA+ZXhwZWN0ZWQgJiYKKwkoCisJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgorCQlHSVRfUFMxX1NIT1dDT0xPUkhJTlRTPXkgJiYKKwkJY2Qgb3RoZXJyZXBvICYmCisJCV9fZ2l0X3BzMSAiQkVGT1JFOiIgIjpBRlRFUiIgJiYKKwkJcHJpbnRmICIlcyIgIiRQUzEiID4iJGFjdHVhbCIKKwkpICYmCisJdGVzdF9jbXAgZXhwZWN0ZWQgIiRhY3R1YWwiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb21wdCAtIGJhc2ggY29sb3IgcGMgbW9kZSAtIGluc2lkZSAuZ2l0IGRpcmVjdG9yeScgJworCXByaW50ZiAiQkVGT1JFOiAoJHtjX2dyZWVufUdJVF9ESVIhJHtjX2NsZWFyfSk6QUZURVIiID5leHBlY3RlZCAmJgorCWVjaG8gImRpcnR5IiA+ZmlsZSAmJgorCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlc2V0IC0taGFyZCIgJiYKKwkoCisJCUdJVF9QUzFfU0hPV0RJUlRZU1RBVEU9eSAmJgorCQlHSVRfUFMxX1NIT1dDT0xPUkhJTlRTPXkgJiYKKwkJY2QgLmdpdCAmJgorCQlfX2dpdF9wczEgIkJFRk9SRToiICI6QUZURVIiICYmCisJCXByaW50ZiAiJXMiICIkUFMxIiA+IiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSBiYXNoIGNvbG9yIHBjIG1vZGUgLSBzdGFzaCBzdGF0dXMgaW5kaWNhdG9yJyAnCisJcHJpbnRmICJCRUZPUkU6ICgke2NfZ3JlZW59bWFzdGVyJHtjX2NsZWFyfSAke2NfbGJsdWV9XCQke2NfY2xlYXJ9KTpBRlRFUiIgPmV4cGVjdGVkICYmCisJZWNobyAyID5maWxlICYmCisJZ2l0IHN0YXNoICYmCisJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgc3Rhc2ggZHJvcCIgJiYKKwkoCisJCUdJVF9QUzFfU0hPV1NUQVNIU1RBVEU9eSAmJgorCQlHSVRfUFMxX1NIT1dDT0xPUkhJTlRTPXkgJiYKKwkJX19naXRfcHMxICJCRUZPUkU6IiAiOkFGVEVSIiAmJgorCQlwcmludGYgIiVzIiAiJFBTMSIgPiIkYWN0dWFsIgorCSkgJiYKKwl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvbXB0IC0gYmFzaCBjb2xvciBwYyBtb2RlIC0gdW50cmFja2VkIGZpbGVzIHN0YXR1cyBpbmRpY2F0b3InICcKKwlwcmludGYgIkJFRk9SRTogKCR7Y19ncmVlbn1tYXN0ZXIke2NfY2xlYXJ9ICR7Y19yZWR9JSUke2NfY2xlYXJ9KTpBRlRFUiIgPmV4cGVjdGVkICYmCisJKAorCQlHSVRfUFMxX1NIT1dVTlRSQUNLRURGSUxFUz15ICYmCisJCUdJVF9QUzFfU0hPV0NPTE9SSElOVFM9eSAmJgorCQlfX2dpdF9wczEgIkJFRk9SRToiICI6QUZURVIiICYmCisJCXByaW50ZiAiJXMiICIkUFMxIiA+IiRhY3R1YWwiCisJKSAmJgorCXRlc3RfY21wIGV4cGVjdGVkICIkYWN0dWFsIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdwcm9tcHQgLSB6c2ggY29sb3IgcGMgbW9kZScgJworCXByaW50ZiAiQkVGT1JFOiAoJSVGe2dyZWVufW1hc3RlciUlZik6QUZURVIiID5leHBlY3RlZCAmJgorCSgKKwkJWlNIX1ZFUlNJT049NS4wLjAgJiYKKwkJR0lUX1BTMV9TSE9XQ09MT1JISU5UUz15ICYmCisJCV9fZ2l0X3BzMSAiQkVGT1JFOiIgIjpBRlRFUiIgPiIkYWN0dWFsIgorCQlwcmludGYgIiVzIiAiJFBTMSIgPiIkYWN0dWFsIgorCSkgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCAiJGFjdHVhbCIKICcKIApkaWZmIC0tZ2l0IGEvdC90ZXN0LWxpYi1mdW5jdGlvbnMuc2ggYi90L3Rlc3QtbGliLWZ1bmN0aW9ucy5zaAppbmRleCBmYWM5MjM0Li5hN2U5YWFjIDEwMDY0NAotLS0gYS90L3Rlc3QtbGliLWZ1bmN0aW9ucy5zaAorKysgYi90L3Rlc3QtbGliLWZ1bmN0aW9ucy5zaApAQCAtMzQzLDYgKzM0Myw3IEBACiB9CiAKIHRlc3RfZXhwZWN0X2ZhaWx1cmUgKCkgeworCXRlc3Rfc3RhcnRfCiAJdGVzdCAiJCMiID0gMyAmJiB7IHRlc3RfcHJlcmVxPSQxOyBzaGlmdDsgfSB8fCB0ZXN0X3ByZXJlcT0KIAl0ZXN0ICIkIyIgPSAyIHx8CiAJZXJyb3IgImJ1ZyBpbiB0aGUgdGVzdCBzY3JpcHQ6IG5vdCAyIG9yIDMgcGFyYW1ldGVycyB0byB0ZXN0LWV4cGVjdC1mYWlsdXJlIgpAQCAtMzU3LDEwICszNTgsMTEgQEAKIAkJCXRlc3Rfa25vd25fYnJva2VuX2ZhaWx1cmVfICIkMSIKIAkJZmkKIAlmaQotCWVjaG8gPiYzICIiCisJdGVzdF9maW5pc2hfCiB9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgKCkgeworCXRlc3Rfc3RhcnRfCiAJdGVzdCAiJCMiID0gMyAmJiB7IHRlc3RfcHJlcmVxPSQxOyBzaGlmdDsgfSB8fCB0ZXN0X3ByZXJlcT0KIAl0ZXN0ICIkIyIgPSAyIHx8CiAJZXJyb3IgImJ1ZyBpbiB0aGUgdGVzdCBzY3JpcHQ6IG5vdCAyIG9yIDMgcGFyYW1ldGVycyB0byB0ZXN0LWV4cGVjdC1zdWNjZXNzIgpAQCAtMzc1LDcgKzM3Nyw3IEBACiAJCQl0ZXN0X2ZhaWx1cmVfICIkQCIKIAkJZmkKIAlmaQotCWVjaG8gPiYzICIiCisJdGVzdF9maW5pc2hfCiB9CiAKICMgdGVzdF9leHRlcm5hbCBydW5zIGV4dGVybmFsIHRlc3Qgc2NyaXB0cyB0aGF0IHByb3ZpZGUgY29udGludW91cwpAQCAtNjA5LDYgKzYxMSwxOCBAQAogCSRHSVRfVEVTVF9DTVAgIiRAIgogfQogCisjIENoZWNrIGlmIHRoZSBmaWxlIGV4cGVjdGVkIHRvIGJlIGVtcHR5IGlzIGluZGVlZCBlbXB0eSwgYW5kIGJhcmZzCisjIG90aGVyd2lzZS4KKwordGVzdF9tdXN0X2JlX2VtcHR5ICgpIHsKKwlpZiB0ZXN0IC1zICIkMSIKKwl0aGVuCisJCWVjaG8gIickMScgaXMgbm90IGVtcHR5LCBpdCBjb250YWluczoiCisJCWNhdCAiJDEiCisJCXJldHVybiAxCisJZmkKK30KKwogIyBUZXN0cyB0aGF0IGl0cyB0d28gcGFyYW1ldGVycyByZWZlciB0byB0aGUgc2FtZSByZXZpc2lvbgogdGVzdF9jbXBfcmV2ICgpIHsKIAlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5ICIkMSIgPmV4cGVjdC5yZXYgJiYKZGlmZiAtLWdpdCBhL3QvdGVzdC1saWIuc2ggYi90L3Rlc3QtbGliLnNoCmluZGV4IGNhNmJkZWYuLjFhYTI3YmQgMTAwNjQ0Ci0tLSBhL3QvdGVzdC1saWIuc2gKKysrIGIvdC90ZXN0LWxpYi5zaApAQCAtNTQsOCArNTQsOCBAQAogCSMgZG8gbm90IHJlZGlyZWN0IGFnYWluCiAJOzsKIConIC0tdGVlICcqfConIC0tdmEnKikKLQlta2RpciAtcCB0ZXN0LXJlc3VsdHMKLQlCQVNFPXRlc3QtcmVzdWx0cy8kKGJhc2VuYW1lICIkMCIgLnNoKQorCW1rZGlyIC1wICIkVEVTVF9PVVRQVVRfRElSRUNUT1JZL3Rlc3QtcmVzdWx0cyIKKwlCQVNFPSIkVEVTVF9PVVRQVVRfRElSRUNUT1JZL3Rlc3QtcmVzdWx0cy8kKGJhc2VuYW1lICIkMCIgLnNoKSIKIAkoR0lUX1RFU1RfVEVFX1NUQVJURUQ9ZG9uZSAke1NIRUxMX1BBVEh9ICIkMCIgIiRAIiAyPiYxOwogCSBlY2hvICQ/ID4gJEJBU0UuZXhpdCkgfCB0ZWUgJEJBU0Uub3V0CiAJdGVzdCAiJChjYXQgJEJBU0UuZXhpdCkiID0gMApAQCAtOTIsNiArOTIsNyBAQAogCXByaW50IGpvaW4oIlxuIiwgQHZhcnMpOwogJykKIHVuc2V0IFhER19DT05GSUdfSE9NRQordW5zZXQgR0lUUEVSTExJQgogR0lUX0FVVEhPUl9FTUFJTD1hdXRob3JAZXhhbXBsZS5jb20KIEdJVF9BVVRIT1JfTkFNRT0nQSBVIFRob3InCiBHSVRfQ09NTUlUVEVSX0VNQUlMPWNvbW1pdHRlckBleGFtcGxlLmNvbQpAQCAtMTg0LDYgKzE4NSw5IEBACiAJCWhlbHA9dDsgc2hpZnQgOzsKIAktdnwtLXZ8LS12ZXwtLXZlcnwtLXZlcmJ8LS12ZXJib3wtLXZlcmJvc3wtLXZlcmJvc2UpCiAJCXZlcmJvc2U9dDsgc2hpZnQgOzsKKwktLXZlcmJvc2Utb25seT0qKQorCQl2ZXJib3NlX29ubHk9JChleHByICJ6JDEiIDogJ3pbXj1dKj1cKC4qXCknKQorCQlzaGlmdCA7OwogCS1xfC0tcXwtLXF1fC0tcXVpfC0tcXVpZXwtLXF1aWV0KQogCQkjIElnbm9yZSAtLXF1aWV0IHVuZGVyIGEgVEFQOjpIYXJuZXNzLiBTYXlpbmcgaG93IG1hbnkgdGVzdHMKIAkJIyBwYXNzZWQgd2l0aG91dCB0aGUgb2svbm90IG9rIGRldGFpbHMgaXMgYWx3YXlzIGFuIGVycm9yLgpAQCAtMTk4LDE3ICsyMDIsMzkgQEAKIAktLXZhbGdyaW5kPSopCiAJCXZhbGdyaW5kPSQoZXhwciAieiQxIiA6ICd6W149XSo9XCguKlwpJykKIAkJc2hpZnQgOzsKKwktLXZhbGdyaW5kLW9ubHk9KikKKwkJdmFsZ3JpbmRfb25seT0kKGV4cHIgInokMSIgOiAneltePV0qPVwoLipcKScpCisJCXNoaWZ0IDs7CisJLS12YWxncmluZC1wYXJhbGxlbD0qKQorCQl2YWxncmluZF9wYXJhbGxlbD0kKGV4cHIgInokMSIgOiAneltePV0qPVwoLipcKScpCisJCXNoaWZ0IDs7CisJLS12YWxncmluZC1vbmx5LXN0cmlkZT0qKQorCQl2YWxncmluZF9vbmx5X3N0cmlkZT0kKGV4cHIgInokMSIgOiAneltePV0qPVwoLipcKScpCisJCXNoaWZ0IDs7CisJLS12YWxncmluZC1vbmx5LW9mZnNldD0qKQorCQl2YWxncmluZF9vbmx5X29mZnNldD0kKGV4cHIgInokMSIgOiAneltePV0qPVwoLipcKScpCisJCXNoaWZ0IDs7CiAJLS10ZWUpCiAJCXNoaWZ0IDs7ICMgd2FzIGhhbmRsZWQgYWxyZWFkeQogCS0tcm9vdD0qKQogCQlyb290PSQoZXhwciAieiQxIiA6ICd6W149XSo9XCguKlwpJykKIAkJc2hpZnQgOzsKKwktLXN0YXR1c3ByZWZpeD0qKQorCQlzdGF0dXNwcmVmaXg9JChleHByICJ6JDEiIDogJ3pbXj1dKj1cKC4qXCknKQorCQlzaGlmdCA7OwogCSopCiAJCWVjaG8gImVycm9yOiB1bmtub3duIHRlc3Qgb3B0aW9uICckMSciID4mMjsgZXhpdCAxIDs7CiAJZXNhYwogZG9uZQogCi10ZXN0IC1uICIkdmFsZ3JpbmQiICYmIHZlcmJvc2U9dAoraWYgdGVzdCAtbiAiJHZhbGdyaW5kX29ubHkiIHx8IHRlc3QgLW4gIiR2YWxncmluZF9vbmx5X3N0cmlkZSIKK3RoZW4KKwl0ZXN0IC16ICIkdmFsZ3JpbmQiICYmIHZhbGdyaW5kPW1lbWNoZWNrCisJdGVzdCAteiAiJHZlcmJvc2UiICYmIHZlcmJvc2Vfb25seT0iJHZhbGdyaW5kX29ubHkiCitlbGlmIHRlc3QgLW4gIiR2YWxncmluZCIKK3RoZW4KKwl2ZXJib3NlPXQKK2ZpCiAKIGlmIHRlc3QgLW4gIiRjb2xvciIKIHRoZW4KQEAgLTMwMywxMiArMzI5LDEyIEBACiAKIHRlc3Rfb2tfICgpIHsKIAl0ZXN0X3N1Y2Nlc3M9JCgoJHRlc3Rfc3VjY2VzcyArIDEpKQotCXNheV9jb2xvciAiIiAib2sgJHRlc3RfY291bnQgLSAkQCIKKwlzYXlfY29sb3IgIiIgIiR7c3RhdHVzcHJlZml4fW9rICR0ZXN0X2NvdW50IC0gJEAiCiB9CiAKIHRlc3RfZmFpbHVyZV8gKCkgewogCXRlc3RfZmFpbHVyZT0kKCgkdGVzdF9mYWlsdXJlICsgMSkpCi0Jc2F5X2NvbG9yIGVycm9yICJub3Qgb2sgJHRlc3RfY291bnQgLSAkMSIKKwlzYXlfY29sb3IgZXJyb3IgIiR7c3RhdHVzcHJlZml4fW5vdCBvayAkdGVzdF9jb3VudCAtICQxIgogCXNoaWZ0CiAJZWNobyAiJEAiIHwgc2VkIC1lICdzL14vIwkvJwogCXRlc3QgIiRpbW1lZGlhdGUiID0gIiIgfHwgeyBHSVRfRVhJVF9PSz10OyBleGl0IDE7IH0KQEAgLTMxNiwxOCArMzQyLDgzIEBACiAKIHRlc3Rfa25vd25fYnJva2VuX29rXyAoKSB7CiAJdGVzdF9maXhlZD0kKCgkdGVzdF9maXhlZCsxKSkKLQlzYXlfY29sb3IgZXJyb3IgIm9rICR0ZXN0X2NvdW50IC0gJEAgIyBUT0RPIGtub3duIGJyZWFrYWdlIHZhbmlzaGVkIgorCXNheV9jb2xvciBlcnJvciAiJHtzdGF0dXNwcmVmaXh9b2sgJHRlc3RfY291bnQgLSAkQCAjIFRPRE8ga25vd24gYnJlYWthZ2UgdmFuaXNoZWQiCiB9CiAKIHRlc3Rfa25vd25fYnJva2VuX2ZhaWx1cmVfICgpIHsKIAl0ZXN0X2Jyb2tlbj0kKCgkdGVzdF9icm9rZW4rMSkpCi0Jc2F5X2NvbG9yIHdhcm4gIm5vdCBvayAkdGVzdF9jb3VudCAtICRAICMgVE9ETyBrbm93biBicmVha2FnZSIKKwlzYXlfY29sb3Igd2FybiAiJHtzdGF0dXNwcmVmaXh9bm90IG9rICR0ZXN0X2NvdW50IC0gJEAgIyBUT0RPIGtub3duIGJyZWFrYWdlIgogfQogCiB0ZXN0X2RlYnVnICgpIHsKIAl0ZXN0ICIkZGVidWciID0gIiIgfHwgZXZhbCAiJDEiCiB9CiAKK21hdGNoX3BhdHRlcm5fbGlzdCAoKSB7CisJYXJnPSIkMSIKKwlzaGlmdAorCXRlc3QgLXogIiQqIiAmJiByZXR1cm4gMQorCWZvciBwYXR0ZXJuXworCWRvCisJCWNhc2UgIiRhcmciIGluCisJCSRwYXR0ZXJuXykKKwkJCXJldHVybiAwCisJCWVzYWMKKwlkb25lCisJcmV0dXJuIDEKK30KKworbWF5YmVfdGVhcmRvd25fdmVyYm9zZSAoKSB7CisJdGVzdCAteiAiJHZlcmJvc2Vfb25seSIgJiYgcmV0dXJuCisJZXhlYyA0Pi9kZXYvbnVsbCAzPi9kZXYvbnVsbAorCXZlcmJvc2U9Cit9CisKK2xhc3RfdmVyYm9zZT10CittYXliZV9zZXR1cF92ZXJib3NlICgpIHsKKwl0ZXN0IC16ICIkdmVyYm9zZV9vbmx5IiAmJiByZXR1cm4KKwlpZiBtYXRjaF9wYXR0ZXJuX2xpc3QgJHRlc3RfY291bnQgJHZlcmJvc2Vfb25seSB8fAorCQl7IHRlc3QgLW4gIiR2YWxncmluZF9vbmx5X3N0cmlkZSIgJiYKKwkJZXhwciAkdGVzdF9jb3VudCAiJSIgJHZhbGdyaW5kX29ubHlfc3RyaWRlIC0gJHZhbGdyaW5kX29ubHlfb2Zmc2V0ID0gMCA+L2Rldi9udWxsOyB9CisJdGhlbgorCQlleGVjIDQ+JjIgMz4mMQorCQkjIEVtaXQgYSBkZWxpbWl0aW5nIGJsYW5rIGxpbmUgd2hlbiBnb2luZyBmcm9tCisJCSMgbm9uLXZlcmJvc2UgdG8gdmVyYm9zZS4gIFdpdGhpbiB2ZXJib3NlIG1vZGUgdGhlCisJCSMgZGVsaW1pdGVyIGlzIHByaW50ZWQgYnkgdGVzdF9leHBlY3RfKi4gIFRoZSBjaG9pY2UKKwkJIyBvZiB0aGUgaW5pdGlhbCAkbGFzdF92ZXJib3NlIGlzIHN1Y2ggdGhhdCBiZWZvcmUKKwkJIyB0ZXN0IDEsIHdlIGRvIG5vdCBwcmludCBpdC4KKwkJdGVzdCAteiAiJGxhc3RfdmVyYm9zZSIgJiYgZWNobyA+JjMgIiIKKwkJdmVyYm9zZT10CisJZWxzZQorCQlleGVjIDQ+L2Rldi9udWxsIDM+L2Rldi9udWxsCisJCXZlcmJvc2U9CisJZmkKKwlsYXN0X3ZlcmJvc2U9JHZlcmJvc2UKK30KKworbWF5YmVfdGVhcmRvd25fdmFsZ3JpbmQgKCkgeworCXRlc3QgLXogIiRHSVRfVkFMR1JJTkQiICYmIHJldHVybgorCUdJVF9WQUxHUklORF9FTkFCTEVEPQorfQorCittYXliZV9zZXR1cF92YWxncmluZCAoKSB7CisJdGVzdCAteiAiJEdJVF9WQUxHUklORCIgJiYgcmV0dXJuCisJaWYgdGVzdCAteiAiJHZhbGdyaW5kX29ubHkiICYmIHRlc3QgLXogIiR2YWxncmluZF9vbmx5X3N0cmlkZSIKKwl0aGVuCisJCUdJVF9WQUxHUklORF9FTkFCTEVEPXQKKwkJcmV0dXJuCisJZmkKKwlHSVRfVkFMR1JJTkRfRU5BQkxFRD0KKwlpZiBtYXRjaF9wYXR0ZXJuX2xpc3QgJHRlc3RfY291bnQgJHZhbGdyaW5kX29ubHkKKwl0aGVuCisJCUdJVF9WQUxHUklORF9FTkFCTEVEPXQKKwllbGlmIHRlc3QgLW4gIiR2YWxncmluZF9vbmx5X3N0cmlkZSIgJiYKKwkJZXhwciAkdGVzdF9jb3VudCAiJSIgJHZhbGdyaW5kX29ubHlfc3RyaWRlIC0gJHZhbGdyaW5kX29ubHlfb2Zmc2V0ID0gMCA+L2Rldi9udWxsCisJdGhlbgorCQlHSVRfVkFMR1JJTkRfRU5BQkxFRD10CisJZmkKK30KKwogdGVzdF9ldmFsXyAoKSB7CiAJIyBUaGlzIGlzIGEgc2VwYXJhdGUgZnVuY3Rpb24gYmVjYXVzZSBzb21lIHRlc3RzIHVzZQogCSMgInJldHVybiIgdG8gZW5kIGEgdGVzdF9leHBlY3Rfc3VjY2VzcyBibG9jayBlYXJseS4KQEAgLTMzNyw4ICs0MjgsMTAgQEAKIHRlc3RfcnVuXyAoKSB7CiAJdGVzdF9jbGVhbnVwPToKIAlleHBlY3RpbmdfZmFpbHVyZT0kMgorCXNldHVwX21hbGxvY19jaGVjawogCXRlc3RfZXZhbF8gIiQxIgogCWV2YWxfcmV0PSQ/CisJdGVhcmRvd25fbWFsbG9jX2NoZWNrCiAKIAlpZiB0ZXN0IC16ICIkaW1tZWRpYXRlIiB8fCB0ZXN0ICRldmFsX3JldCA9IDAgfHwgdGVzdCAtbiAiJGV4cGVjdGluZ19mYWlsdXJlIgogCXRoZW4KQEAgLTM1MywxNyArNDQ2LDI0IEBACiAJcmV0dXJuICIkZXZhbF9yZXQiCiB9CiAKLXRlc3Rfc2tpcCAoKSB7Cit0ZXN0X3N0YXJ0XyAoKSB7CiAJdGVzdF9jb3VudD0kKCgkdGVzdF9jb3VudCsxKSkKKwltYXliZV9zZXR1cF92ZXJib3NlCisJbWF5YmVfc2V0dXBfdmFsZ3JpbmQKK30KKwordGVzdF9maW5pc2hfICgpIHsKKwllY2hvID4mMyAiIgorCW1heWJlX3RlYXJkb3duX3ZhbGdyaW5kCisJbWF5YmVfdGVhcmRvd25fdmVyYm9zZQorfQorCit0ZXN0X3NraXAgKCkgewogCXRvX3NraXA9Ci0JZm9yIHNrcCBpbiAkR0lUX1NLSVBfVEVTVFMKLQlkbwotCQljYXNlICR0aGlzX3Rlc3QuJHRlc3RfY291bnQgaW4KLQkJJHNrcCkKLQkJCXRvX3NraXA9dAotCQkJYnJlYWsKLQkJZXNhYwotCWRvbmUKKwlpZiBtYXRjaF9wYXR0ZXJuX2xpc3QgJHRoaXNfdGVzdC4kdGVzdF9jb3VudCAkR0lUX1NLSVBfVEVTVFMKKwl0aGVuCisJCXRvX3NraXA9dAorCWZpCiAJaWYgdGVzdCAteiAiJHRvX3NraXAiICYmIHRlc3QgLW4gIiR0ZXN0X3ByZXJlcSIgJiYKIAkgICAhIHRlc3RfaGF2ZV9wcmVyZXEgIiR0ZXN0X3ByZXJlcSIKIAl0aGVuCkBAIC0zNzcsOCArNDc3LDggQEAKIAkJCW9mX3ByZXJlcT0iIG9mICR0ZXN0X3ByZXJlcSIKIAkJZmkKIAotCQlzYXlfY29sb3Igc2tpcCA+JjMgInNraXBwaW5nIHRlc3Q6ICRAIgotCQlzYXlfY29sb3Igc2tpcCAib2sgJHRlc3RfY291bnQgIyBza2lwICQxIChtaXNzaW5nICRtaXNzaW5nX3ByZXJlcSR7b2ZfcHJlcmVxfSkiCisJCXNheV9jb2xvciBza2lwID4mMyAiJHtzdGF0dXNwcmVmaXh9c2tpcHBpbmcgdGVzdDogJEAiCisJCXNheV9jb2xvciBza2lwICIke3N0YXR1c3ByZWZpeH1vayAkdGVzdF9jb3VudCAjIHNraXAgJDEgKG1pc3NpbmcgJG1pc3NpbmdfcHJlcmVxJHtvZl9wcmVyZXF9KSIKIAkJOiB0cnVlCiAJCTs7CiAJKikKQEAgLTM5NSw2ICs0OTUsOCBAQAogdGVzdF9kb25lICgpIHsKIAlHSVRfRVhJVF9PSz10CiAKKwkjIE5vdGU6IHQwMDAwIHJlbGllcyBvbiAkSEFSTkVTU19BQ1RJVkUgZGlzYWJsaW5nIHRoZSAuY291bnRzCisJIyBvdXRwdXQgZmlsZQogCWlmIHRlc3QgLXogIiRIQVJORVNTX0FDVElWRSIKIAl0aGVuCiAJCXRlc3RfcmVzdWx0c19kaXI9IiRURVNUX09VVFBVVF9ESVJFQ1RPUlkvdGVzdC1yZXN1bHRzIgpAQCAtNDE0LDExICs1MTYsMTEgQEAKIAogCWlmIHRlc3QgIiR0ZXN0X2ZpeGVkIiAhPSAwCiAJdGhlbgotCQlzYXlfY29sb3IgZXJyb3IgIiMgJHRlc3RfZml4ZWQga25vd24gYnJlYWthZ2UocykgdmFuaXNoZWQ7IHBsZWFzZSB1cGRhdGUgdGVzdChzKSIKKwkJc2F5X2NvbG9yIGVycm9yICIke3N0YXR1c3ByZWZpeH0jICR0ZXN0X2ZpeGVkIGtub3duIGJyZWFrYWdlKHMpIHZhbmlzaGVkOyBwbGVhc2UgdXBkYXRlIHRlc3QocykiCiAJZmkKIAlpZiB0ZXN0ICIkdGVzdF9icm9rZW4iICE9IDAKIAl0aGVuCi0JCXNheV9jb2xvciB3YXJuICIjIHN0aWxsIGhhdmUgJHRlc3RfYnJva2VuIGtub3duIGJyZWFrYWdlKHMpIgorCQlzYXlfY29sb3Igd2FybiAiJHtzdGF0dXNwcmVmaXh9IyBzdGlsbCBoYXZlICR0ZXN0X2Jyb2tlbiBrbm93biBicmVha2FnZShzKSIKIAlmaQogCWlmIHRlc3QgIiR0ZXN0X2Jyb2tlbiIgIT0gMCB8fCB0ZXN0ICIkdGVzdF9maXhlZCIgIT0gMAogCXRoZW4KQEAgLTQ0MSw5ICs1NDMsOSBAQAogCQl0aGVuCiAJCQlpZiB0ZXN0ICR0ZXN0X3JlbWFpbmluZyAtZ3QgMAogCQkJdGhlbgotCQkJCXNheV9jb2xvciBwYXNzICIjIHBhc3NlZCBhbGwgJG1zZyIKKwkJCQlzYXlfY29sb3IgcGFzcyAiJHtzdGF0dXNwcmVmaXh9IyBwYXNzZWQgYWxsICRtc2ciCiAJCQlmaQotCQkJc2F5ICIxLi4kdGVzdF9jb3VudCRza2lwX2FsbCIKKwkJCXNheSAiJHtzdGF0dXNwcmVmaXh9MS4uJHRlc3RfY291bnQkc2tpcF9hbGwiCiAJCWZpCiAKIAkJdGVzdCAtZCAiJHJlbW92ZV90cmFzaCIgJiYKQEAgLTQ1Nyw4ICs1NTksOCBAQAogCSopCiAJCWlmIHRlc3QgJHRlc3RfZXh0ZXJuYWxfaGFzX3RhcCAtZXEgMAogCQl0aGVuCi0JCQlzYXlfY29sb3IgZXJyb3IgIiMgZmFpbGVkICR0ZXN0X2ZhaWx1cmUgYW1vbmcgJG1zZyIKLQkJCXNheSAiMS4uJHRlc3RfY291bnQiCisJCQlzYXlfY29sb3IgZXJyb3IgIiR7c3RhdHVzcHJlZml4fSMgZmFpbGVkICR0ZXN0X2ZhaWx1cmUgYW1vbmcgJG1zZyIKKwkJCXNheSAiJHtzdGF0dXNwcmVmaXh9MS4uJHRlc3RfY291bnQiCiAJCWZpCiAKIAkJZXhpdCAxIDs7CkBAIC00NjYsNiArNTY4LDkgQEAKIAllc2FjCiB9CiAKKworIyBTZXQgdXAgYSBkaXJlY3RvcnkgdGhhdCB3ZSBjYW4gcHV0IGluIFBBVEggd2hpY2ggcmVkaXJlY3RzIGFsbCBnaXQKKyMgY2FsbHMgdG8gJ3ZhbGdyaW5kIGdpdCAuLi4nLgogaWYgdGVzdCAtbiAiJHZhbGdyaW5kIgogdGhlbgogCW1ha2Vfc3ltbGluayAoKSB7CkBAIC01MTMsMzEgKzYxOCw0MyBAQAogCQltYWtlX3N5bWxpbmsgIiRzeW1saW5rX3RhcmdldCIgIiRHSVRfVkFMR1JJTkQvYmluLyRiYXNlIiB8fCBleGl0CiAJfQogCi0JIyBvdmVycmlkZSBhbGwgZ2l0IGV4ZWN1dGFibGVzIGluIFRFU1RfRElSRUNUT1JZLy4uCi0JR0lUX1ZBTEdSSU5EPSRURVNUX0RJUkVDVE9SWS92YWxncmluZAotCW1rZGlyIC1wICIkR0lUX1ZBTEdSSU5EIi9iaW4KLQlmb3IgZmlsZSBpbiAkR0lUX0JVSUxEX0RJUi9naXQqICRHSVRfQlVJTERfRElSL3Rlc3QtKgotCWRvCi0JCW1ha2VfdmFsZ3JpbmRfc3ltbGluayAkZmlsZQotCWRvbmUKLQkjIHNwZWNpYWwtY2FzZSB0aGUgbWVyZ2V0b29scyBsb2FkYWJsZXMKLQltYWtlX3N5bWxpbmsgIiRHSVRfQlVJTERfRElSIi9tZXJnZXRvb2xzICIkR0lUX1ZBTEdSSU5EL2Jpbi9tZXJnZXRvb2xzIgotCU9MRElGUz0kSUZTCi0JSUZTPToKLQlmb3IgcGF0aCBpbiAkUEFUSAotCWRvCi0JCWxzICIkcGF0aCIvZ2l0LSogMj4gL2Rldi9udWxsIHwKLQkJd2hpbGUgcmVhZCBmaWxlCisJIyBJbiB0aGUgY2FzZSBvZiAtLXZhbGdyaW5kLXBhcmFsbGVsLCB3ZSBvbmx5IG5lZWQgdG8gZG8gdGhlCisJIyB3cmFwcGluZyBvbmNlLCBpbiB0aGUgbWFpbiBzY3JpcHQuICBUaGUgd29ya2VyIGNoaWxkcmVuIGFsbAorCSMgaGF2ZSAkdmFsZ3JpbmRfb25seV9zdHJpZGUgc2V0LCBzbyB3ZSBjYW4gc2tpcCBiYXNlZCBvbiB0aGF0LgorCWlmIHRlc3QgLXogIiR2YWxncmluZF9vbmx5X3N0cmlkZSIKKwl0aGVuCisJCSMgb3ZlcnJpZGUgYWxsIGdpdCBleGVjdXRhYmxlcyBpbiBURVNUX0RJUkVDVE9SWS8uLgorCQlHSVRfVkFMR1JJTkQ9JFRFU1RfRElSRUNUT1JZL3ZhbGdyaW5kCisJCW1rZGlyIC1wICIkR0lUX1ZBTEdSSU5EIi9iaW4KKwkJZm9yIGZpbGUgaW4gJEdJVF9CVUlMRF9ESVIvZ2l0KiAkR0lUX0JVSUxEX0RJUi90ZXN0LSoKIAkJZG8KLQkJCW1ha2VfdmFsZ3JpbmRfc3ltbGluayAiJGZpbGUiCisJCQltYWtlX3ZhbGdyaW5kX3N5bWxpbmsgJGZpbGUKIAkJZG9uZQotCWRvbmUKLQlJRlM9JE9MRElGUworCQkjIHNwZWNpYWwtY2FzZSB0aGUgbWVyZ2V0b29scyBsb2FkYWJsZXMKKwkJbWFrZV9zeW1saW5rICIkR0lUX0JVSUxEX0RJUiIvbWVyZ2V0b29scyAiJEdJVF9WQUxHUklORC9iaW4vbWVyZ2V0b29scyIKKwkJT0xESUZTPSRJRlMKKwkJSUZTPToKKwkJZm9yIHBhdGggaW4gJFBBVEgKKwkJZG8KKwkJCWxzICIkcGF0aCIvZ2l0LSogMj4gL2Rldi9udWxsIHwKKwkJCXdoaWxlIHJlYWQgZmlsZQorCQkJZG8KKwkJCQltYWtlX3ZhbGdyaW5kX3N5bWxpbmsgIiRmaWxlIgorCQkJZG9uZQorCQlkb25lCisJCUlGUz0kT0xESUZTCisJZmkKIAlQQVRIPSRHSVRfVkFMR1JJTkQvYmluOiRQQVRICiAJR0lUX0VYRUNfUEFUSD0kR0lUX1ZBTEdSSU5EL2JpbgogCWV4cG9ydCBHSVRfVkFMR1JJTkQKIAlHSVRfVkFMR1JJTkRfTU9ERT0iJHZhbGdyaW5kIgogCWV4cG9ydCBHSVRfVkFMR1JJTkRfTU9ERQorCUdJVF9WQUxHUklORF9FTkFCTEVEPXQKKwlpZiB0ZXN0IC1uICIkdmFsZ3JpbmRfb25seSIgfHwgdGVzdCAtbiAiJHZhbGdyaW5kX29ubHlfc3RyaWRlIgorCXRoZW4KKwkJR0lUX1ZBTEdSSU5EX0VOQUJMRUQ9CisJZmkKKwlleHBvcnQgR0lUX1ZBTEdSSU5EX0VOQUJMRUQKIGVsaWYgdGVzdCAtbiAiJEdJVF9URVNUX0lOU1RBTExFRCIKIHRoZW4KIAlHSVRfRVhFQ19QQVRIPSQoJEdJVF9URVNUX0lOU1RBTExFRC9naXQgLS1leGVjLXBhdGgpICB8fApAQCAtNjIyLDIxICs3MzksNTMgQEAKIGVsc2UKIAlta2RpciAtcCAiJFRSQVNIX0RJUkVDVE9SWSIKIGZpCisKKyMgR3Jvc3MgaGFjayB0byBzcGF3biBOIHN1Yi1pbnN0YW5jZXMgb2YgdGhlIHRlc3RzIGluIHBhcmFsbGVsLCBhbmQKKyMgc3VtbWFyaXplIHRoZSByZXN1bHRzLiAgTm90ZSB0aGF0IGlmIHRoaXMgaXMgZW5hYmxlZCwgdGhlIHNjcmlwdAorIyB0ZXJtaW5hdGVzIGF0IHRoZSBlbmQgb2YgdGhpcyAnaWYnIGJsb2NrLgoraWYgdGVzdCAtbiAiJHZhbGdyaW5kX3BhcmFsbGVsIgordGhlbgorCWZvciBpIGluICQodGVzdF9zZXEgMSAkdmFsZ3JpbmRfcGFyYWxsZWwpCisJZG8KKwkJcm9vdD0iJFRSQVNIX0RJUkVDVE9SWS92Z3BhcmFsbGVsLSRpIgorCQlta2RpciAiJHJvb3QiCisJCVRFU1RfT1VUUFVUX0RJUkVDVE9SWT0iJHJvb3QiIFwKKwkJCSR7U0hFTExfUEFUSH0gIiQwIiBcCisJCQktLXJvb3Q9IiRyb290IiAtLXN0YXR1c3ByZWZpeD0iWyRpXSAiIFwKKwkJCS0tdmFsZ3JpbmQ9IiR2YWxncmluZCIgXAorCQkJLS12YWxncmluZC1vbmx5LXN0cmlkZT0iJHZhbGdyaW5kX3BhcmFsbGVsIiBcCisJCQktLXZhbGdyaW5kLW9ubHktb2Zmc2V0PSIkaSIgJgorCQlwaWRzPSIkcGlkcyAkISIKKwlkb25lCisJdHJhcCAia2lsbCAkcGlkcyIgSU5UIFRFUk0gSFVQCisJd2FpdCAkcGlkcworCXRyYXAgLSBJTlQgVEVSTSBIVVAKKwlmb3IgaSBpbiAkKHRlc3Rfc2VxIDEgJHZhbGdyaW5kX3BhcmFsbGVsKQorCWRvCisJCXJvb3Q9IiRUUkFTSF9ESVJFQ1RPUlkvdmdwYXJhbGxlbC0kaSIKKwkJZXZhbCAiJChjYXQgIiRyb290L3Rlc3QtcmVzdWx0cy8kKGJhc2VuYW1lICIkMCIgLnNoKSItKi5jb3VudHMgfAorCQkJc2VkICdzL15cKFthLXpdW2Etel0qXCkgXChbMC05XVswLTldKlwpL2lubmVyX1wxPVwyLycpIgorCQl0ZXN0X2NvdW50PSQoZXhwciAkdGVzdF9jb3VudCArICRpbm5lcl90b3RhbCkKKwkJdGVzdF9zdWNjZXNzPSQoZXhwciAkdGVzdF9zdWNjZXNzICsgJGlubmVyX3N1Y2Nlc3MpCisJCXRlc3RfZml4ZWQ9JChleHByICR0ZXN0X2ZpeGVkICsgJGlubmVyX2ZpeGVkKQorCQl0ZXN0X2Jyb2tlbj0kKGV4cHIgJHRlc3RfYnJva2VuICsgJGlubmVyX2Jyb2tlbikKKwkJdGVzdF9mYWlsdXJlPSQoZXhwciAkdGVzdF9mYWlsdXJlICsgJGlubmVyX2ZhaWxlZCkKKwlkb25lCisJdGVzdF9kb25lCitmaQorCiAjIFVzZSAtUCB0byByZXNvbHZlIHN5bWxpbmtzIGluIG91ciB3b3JraW5nIGRpcmVjdG9yeSBzbyB0aGF0IHRoZSBjd2QKICMgaW4gc3VicHJvY2Vzc2VzIGxpa2UgZ2l0IGVxdWFscyBvdXIgJFBXRCAoZm9yIHBhdGhuYW1lIGNvbXBhcmlzb25zKS4KIGNkIC1QICIkVFJBU0hfRElSRUNUT1JZIiB8fCBleGl0IDEKIAogdGhpc190ZXN0PSR7MCMjKi99CiB0aGlzX3Rlc3Q9JHt0aGlzX3Rlc3QlJS0qfQotZm9yIHNrcCBpbiAkR0lUX1NLSVBfVEVTVFMKLWRvCi0JY2FzZSAiJHRoaXNfdGVzdCIgaW4KLQkkc2twKQotCQlzYXlfY29sb3IgaW5mbyA+JjMgInNraXBwaW5nIHRlc3QgJHRoaXNfdGVzdCBhbHRvZ2V0aGVyIgotCQlza2lwX2FsbD0ic2tpcCBhbGwgdGVzdHMgaW4gJHRoaXNfdGVzdCIKLQkJdGVzdF9kb25lCi0JZXNhYwotZG9uZQoraWYgbWF0Y2hfcGF0dGVybl9saXN0ICIkdGhpc190ZXN0IiAkR0lUX1NLSVBfVEVTVFMKK3RoZW4KKwlzYXlfY29sb3IgaW5mbyA+JjMgInNraXBwaW5nIHRlc3QgJHRoaXNfdGVzdCBhbHRvZ2V0aGVyIgorCXNraXBfYWxsPSJza2lwIGFsbCB0ZXN0cyBpbiAkdGhpc190ZXN0IgorCXRlc3RfZG9uZQorZmkKIAogIyBQcm92aWRlIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSAneWVzJyB1dGlsaXR5CiB5ZXMgKCkgewpAQCAtNjc2LDYgKzgyNSw3IEBACiAJdGVzdF9zZXRfcHJlcmVxIE1JTkdXCiAJdGVzdF9zZXRfcHJlcmVxIE5PVF9DWUdXSU4KIAl0ZXN0X3NldF9wcmVyZXEgU0VEX1NUUklQU19DUgorCXRlc3Rfc2V0X3ByZXJlcSBHUkVQX1NUUklQU19DUgogCTs7CiAqQ1lHV0lOKikKIAl0ZXN0X3NldF9wcmVyZXEgUE9TSVhQRVJNCkBAIC02ODMsNiArODMzLDcgQEAKIAl0ZXN0X3NldF9wcmVyZXEgTk9UX01JTkdXCiAJdGVzdF9zZXRfcHJlcmVxIENZR1dJTgogCXRlc3Rfc2V0X3ByZXJlcSBTRURfU1RSSVBTX0NSCisJdGVzdF9zZXRfcHJlcmVxIEdSRVBfU1RSSVBTX0NSCiAJOzsKICopCiAJdGVzdF9zZXRfcHJlcmVxIFBPU0lYUEVSTQpAQCAtNzM3LDcgKzg4OCwxNCBAQAogCiB0ZXN0X2xhenlfcHJlcmVxIFBJUEUgJwogCSMgdGVzdCB3aGV0aGVyIHRoZSBmaWxlc3lzdGVtIHN1cHBvcnRzIEZJRk9zCi0Jcm0gLWYgdGVzdGZpZm8gJiYgbWtmaWZvIHRlc3RmaWZvCisJY2FzZSAkKHVuYW1lIC1zKSBpbgorCUNZR1dJTiopCisJCWZhbHNlCisJCTs7CisJKikKKwkJcm0gLWYgdGVzdGZpZm8gJiYgbWtmaWZvIHRlc3RmaWZvCisJCTs7CisJZXNhYwogJwogCiB0ZXN0X2xhenlfcHJlcmVxIFNZTUxJTktTICcKZGlmZiAtLWdpdCBhL3QvdmFsZ3JpbmQvYW5hbHl6ZS5zaCBiL3QvdmFsZ3JpbmQvYW5hbHl6ZS5zaAppbmRleCBkODEwNWQ5Li4yZmZjODBmIDEwMDc1NQotLS0gYS90L3ZhbGdyaW5kL2FuYWx5emUuc2gKKysrIGIvdC92YWxncmluZC9hbmFseXplLnNoCkBAIC0xLDYgKzEsMTAgQEAKICMhL2Jpbi9zaAogCi1vdXRfcHJlZml4PSQoZGlybmFtZSAiJDAiKS8uLi90ZXN0LXJlc3VsdHMvdmFsZ3JpbmQub3V0CisjIEdldCBURVNUX09VVFBVVF9ESVJFQ1RPUlkgZnJvbSBHSVQtQlVJTEQtT1BUSU9OUyBpZiBpdCdzIHRoZXJlLi4uCisuICIkKGRpcm5hbWUgIiQwIikvLi4vLi4vR0lULUJVSUxELU9QVElPTlMiCisjIC4uLiBvdGhlcndpc2Ugc2V0IGl0IHRvIHRoZSBkZWZhdWx0IHZhbHVlLgorOiAke1RFU1RfT1VUUFVUX0RJUkVDVE9SWT0kKGRpcm5hbWUgIiQwIikvLi59CisKIG91dHB1dD0KIGNvdW50PTAKIHRvdGFsX2NvdW50PTAKQEAgLTExNSw3ICsxMTksNyBAQAogCWZpbmlzaF9vdXRwdXQKIH0KIAotZm9yIHRlc3Rfc2NyaXB0IGluICIkKGRpcm5hbWUgIiQwIikiLy4uL3Rlc3QtcmVzdWx0cy8qLm91dAorZm9yIHRlc3Rfc2NyaXB0IGluICIkVEVTVF9PVVRQVVRfRElSRUNUT1JZIi90ZXN0LXJlc3VsdHMvKi5vdXQKIGRvCiAJaGFuZGxlX29uZSAkdGVzdF9zY3JpcHQKIGRvbmUKZGlmZiAtLWdpdCBhL3QvdmFsZ3JpbmQvdmFsZ3JpbmQuc2ggYi90L3ZhbGdyaW5kL3ZhbGdyaW5kLnNoCmluZGV4IDZiODdjOTEuLjQyMTUzMDMgMTAwNzU1Ci0tLSBhL3QvdmFsZ3JpbmQvdmFsZ3JpbmQuc2gKKysrIGIvdC92YWxncmluZC92YWxncmluZC5zaApAQCAtNCw2ICs0LDkgQEAKIAogVE9PTF9PUFRJT05TPSctLWxlYWstY2hlY2s9bm8nCiAKK3Rlc3QgLXogIiRHSVRfVkFMR1JJTkRfRU5BQkxFRCIgJiYKK2V4ZWMgIiRHSVRfVkFMR1JJTkQiLy4uLy4uLyIkYmFzZSIgIiRAIgorCiBjYXNlICIkR0lUX1ZBTEdSSU5EX01PREUiIGluCiBtZW1jaGVjay1mYXN0KQogCTs7CmRpZmYgLS1naXQgYS90ZW1wbGF0ZXMvaG9va3MtLXByZS1jb21taXQuc2FtcGxlIGIvdGVtcGxhdGVzL2hvb2tzLS1wcmUtY29tbWl0LnNhbXBsZQppbmRleCAxOGM0ODI5Li41ODZlM2JmIDEwMDc1NQotLS0gYS90ZW1wbGF0ZXMvaG9va3MtLXByZS1jb21taXQuc2FtcGxlCisrKyBiL3RlbXBsYXRlcy9ob29rcy0tcHJlLWNvbW1pdC5zYW1wbGUKQEAgLTE1LDEzICsxNSwxMyBAQAogCWFnYWluc3Q9NGI4MjVkYzY0MmNiNmViOWEwNjBlNTRiZjhkNjkyODhmYmVlNDkwNAogZmkKIAotIyBJZiB5b3Ugd2FudCB0byBhbGxvdyBub24tYXNjaWkgZmlsZW5hbWVzIHNldCB0aGlzIHZhcmlhYmxlIHRvIHRydWUuCisjIElmIHlvdSB3YW50IHRvIGFsbG93IG5vbi1BU0NJSSBmaWxlbmFtZXMgc2V0IHRoaXMgdmFyaWFibGUgdG8gdHJ1ZS4KIGFsbG93bm9uYXNjaWk9JChnaXQgY29uZmlnIGhvb2tzLmFsbG93bm9uYXNjaWkpCiAKICMgUmVkaXJlY3Qgb3V0cHV0IHRvIHN0ZGVyci4KIGV4ZWMgMT4mMgogCi0jIENyb3NzIHBsYXRmb3JtIHByb2plY3RzIHRlbmQgdG8gYXZvaWQgbm9uLWFzY2lpIGZpbGVuYW1lczsgcHJldmVudAorIyBDcm9zcyBwbGF0Zm9ybSBwcm9qZWN0cyB0ZW5kIHRvIGF2b2lkIG5vbi1BU0NJSSBmaWxlbmFtZXM7IHByZXZlbnQKICMgdGhlbSBmcm9tIGJlaW5nIGFkZGVkIHRvIHRoZSByZXBvc2l0b3J5LiBXZSBleHBsb2l0IHRoZSBmYWN0IHRoYXQgdGhlCiAjIHByaW50YWJsZSByYW5nZSBzdGFydHMgYXQgdGhlIHNwYWNlIGNoYXJhY3RlciBhbmQgZW5kcyB3aXRoIHRpbGRlLgogaWYgWyAiJGFsbG93bm9uYXNjaWkiICE9ICJ0cnVlIiBdICYmCkBAIC0zMSwxOCArMzEsMTcgQEAKIAl0ZXN0ICQoZ2l0IGRpZmYgLS1jYWNoZWQgLS1uYW1lLW9ubHkgLS1kaWZmLWZpbHRlcj1BIC16ICRhZ2FpbnN0IHwKIAkgIExDX0FMTD1DIHRyIC1kICdbIC1+XVwwJyB8IHdjIC1jKSAhPSAwCiB0aGVuCi0JZWNobyAiRXJyb3I6IEF0dGVtcHQgdG8gYWRkIGEgbm9uLWFzY2lpIGZpbGUgbmFtZS4iCi0JZWNobwotCWVjaG8gIlRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIGlmIHlvdSB3YW50IHRvIHdvcmsiCi0JZWNobyAid2l0aCBwZW9wbGUgb24gb3RoZXIgcGxhdGZvcm1zLiIKLQllY2hvCi0JZWNobyAiVG8gYmUgcG9ydGFibGUgaXQgaXMgYWR2aXNhYmxlIHRvIHJlbmFtZSB0aGUgZmlsZSAuLi4iCi0JZWNobwotCWVjaG8gIklmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyB5b3UgY2FuIGRpc2FibGUgdGhpcyIKLQllY2hvICJjaGVjayB1c2luZzoiCi0JZWNobwotCWVjaG8gIiAgZ2l0IGNvbmZpZyBob29rcy5hbGxvd25vbmFzY2lpIHRydWUiCi0JZWNobworCWNhdCA8PFxFT0YKK0Vycm9yOiBBdHRlbXB0IHRvIGFkZCBhIG5vbi1BU0NJSSBmaWxlIG5hbWUuCisKK1RoaXMgY2FuIGNhdXNlIHByb2JsZW1zIGlmIHlvdSB3YW50IHRvIHdvcmsgd2l0aCBwZW9wbGUgb24gb3RoZXIgcGxhdGZvcm1zLgorCitUbyBiZSBwb3J0YWJsZSBpdCBpcyBhZHZpc2FibGUgdG8gcmVuYW1lIHRoZSBmaWxlLgorCitJZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgeW91IGNhbiBkaXNhYmxlIHRoaXMgY2hlY2sgdXNpbmc6CisKKyAgZ2l0IGNvbmZpZyBob29rcy5hbGxvd25vbmFzY2lpIHRydWUKK0VPRgogCWV4aXQgMQogZmkKIApkaWZmIC0tZ2l0IGEvdGVzdC1jaG10aW1lLmMgYi90ZXN0LWNobXRpbWUuYwppbmRleCAyZTYwMWE4Li4wZGY3NDg3IDEwMDY0NAotLS0gYS90ZXN0LWNobXRpbWUuYworKysgYi90ZXN0LWNobXRpbWUuYwpAQCAtNTYsNyArNTYsNyBAQAogCXJldHVybiAxOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKIAlzdGF0aWMgaW50IHZlcmJvc2U7CiAKQEAgLTg3LDcgKzg3LDcgQEAKIAkJCXJldHVybiAxOwogCQl9CiAKLSNpZmRlZiBXSU4zMgorI2lmZGVmIEdJVF9XSU5ET1dTX05BVElWRQogCQlpZiAoIShzYi5zdF9tb2RlICYgU19JV1VTUikgJiYKIAkJCQljaG1vZChhcmd2W2ldLCBzYi5zdF9tb2RlIHwgU19JV1VTUikpIHsKIAkJCWZwcmludGYoc3RkZXJyLCAiQ291bGQgbm90IG1ha2UgdXNlci13cml0YWJsZSAlczogJXMiLApkaWZmIC0tZ2l0IGEvdGVzdC1kdW1wLWNhY2hlLXRyZWUuYyBiL3Rlc3QtZHVtcC1jYWNoZS10cmVlLmMKaW5kZXggYTZmZmRmMy4uNDdlYWI5NyAxMDA2NDQKLS0tIGEvdGVzdC1kdW1wLWNhY2hlLXRyZWUuYworKysgYi90ZXN0LWR1bXAtY2FjaGUtdHJlZS5jCkBAIC01OSw2ICs1OSw4IEBACiAJc3RydWN0IGNhY2hlX3RyZWUgKmFub3RoZXIgPSBjYWNoZV90cmVlKCk7CiAJaWYgKHJlYWRfY2FjaGUoKSA8IDApCiAJCWRpZSgidW5hYmxlIHRvIHJlYWQgaW5kZXggZmlsZSIpOwotCWNhY2hlX3RyZWVfdXBkYXRlKGFub3RoZXIsIGFjdGl2ZV9jYWNoZSwgYWN0aXZlX25yLCBXUklURV9UUkVFX0RSWV9SVU4pOworCWNhY2hlX3RyZWVfdXBkYXRlKGFub3RoZXIsCisJCQkgIChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiBjb25zdCAqKWFjdGl2ZV9jYWNoZSwKKwkJCSAgYWN0aXZlX25yLCBXUklURV9UUkVFX0RSWV9SVU4pOwogCXJldHVybiBkdW1wX2NhY2hlX3RyZWUoYWN0aXZlX2NhY2hlX3RyZWUsIGFub3RoZXIsICIiKTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3QtaW5kZXgtdmVyc2lvbi5jIGIvdGVzdC1pbmRleC12ZXJzaW9uLmMKaW5kZXggYmZhYWQ5ZS4uMDVkNDY5OSAxMDA2NDQKLS0tIGEvdGVzdC1pbmRleC12ZXJzaW9uLmMKKysrIGIvdGVzdC1pbmRleC12ZXJzaW9uLmMKQEAgLTEsNiArMSw2IEBACiAjaW5jbHVkZSAiY2FjaGUuaCIKIAotaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0cnVjdCBjYWNoZV9oZWFkZXIgaGRyOwogCWludCB2ZXJzaW9uOwpkaWZmIC0tZ2l0IGEvdGVzdC1tZXJnZXNvcnQuYyBiL3Rlc3QtbWVyZ2Vzb3J0LmMKaW5kZXggM2YzODhiNC4uZWEzYjk1OSAxMDA2NDQKLS0tIGEvdGVzdC1tZXJnZXNvcnQuYworKysgYi90ZXN0LW1lcmdlc29ydC5jCkBAIC0yMiw3ICsyMiw3IEBACiAJcmV0dXJuIHN0cmNtcCh4LT50ZXh0LCB5LT50ZXh0KTsKIH0KIAotaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0cnVjdCBsaW5lICpsaW5lLCAqcCA9IE5VTEwsICpsaW5lcyA9IE5VTEw7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwpkaWZmIC0tZ2l0IGEvdGVzdC1wYXJzZS1vcHRpb25zLmMgYi90ZXN0LXBhcnNlLW9wdGlvbnMuYwppbmRleCAzYzk1MTBhLi40MzRlOGI4IDEwMDY0NAotLS0gYS90ZXN0LXBhcnNlLW9wdGlvbnMuYworKysgYi90ZXN0LXBhcnNlLW9wdGlvbnMuYwpAQCAtMjksNyArMjksNyBAQAogCXJldHVybiAwOwogfQogCi1pbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CiAJY29uc3QgY2hhciAqcHJlZml4ID0gInByZWZpeC8iOwogCWNvbnN0IGNoYXIgKnVzYWdlW10gPSB7CkBAIC04MSw3ICs4MSw3IEBACiAJfTsKIAlpbnQgaTsKIAotCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwgb3B0aW9ucywgdXNhZ2UsIDApOworCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIChjb25zdCBjaGFyICoqKWFyZ3YsIHByZWZpeCwgb3B0aW9ucywgdXNhZ2UsIDApOwogCiAJcHJpbnRmKCJib29sZWFuOiAlZFxuIiwgYm9vbGVhbik7CiAJcHJpbnRmKCJpbnRlZ2VyOiAldVxuIiwgaW50ZWdlcik7CmRpZmYgLS1naXQgYS90ZXN0LXBhdGgtdXRpbHMuYyBiL3Rlc3QtcGF0aC11dGlscy5jCmluZGV4IDAwOTJjYmYuLmJiOTc1ZTQgMTAwNjQ0Ci0tLSBhL3Rlc3QtcGF0aC11dGlscy5jCisrKyBiL3Rlc3QtcGF0aC11dGlscy5jCkBAIC0yOCw2ICsyOCwxOSBAQAogCXJldHVybiAxOwogfQogCitzdGF0aWMgdm9pZCBub3JtYWxpemVfYXJndl9zdHJpbmcoY29uc3QgY2hhciAqKnZhciwgY29uc3QgY2hhciAqaW5wdXQpCit7CisJaWYgKCFzdHJjbXAoaW5wdXQsICI8bnVsbD4iKSkKKwkJKnZhciA9IE5VTEw7CisJZWxzZSBpZiAoIXN0cmNtcChpbnB1dCwgIjxlbXB0eT4iKSkKKwkJKnZhciA9ICIiOworCWVsc2UKKwkJKnZhciA9IGlucHV0OworCisJaWYgKCp2YXIgJiYgKCoqdmFyID09ICc8JyB8fCAqKnZhciA9PSAnKCcpKQorCQlkaWUoIkJhZCB2YWx1ZTogJXNcbiIsIGlucHV0KTsKK30KKwogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCWlmIChhcmdjID09IDMgJiYgIXN0cmNtcChhcmd2WzFdLCAibm9ybWFsaXplX3BhdGhfY29weSIpKSB7CkBAIC0xMDMsNiArMTE2LDI1IEBACiAJCXJldHVybiAwOwogCX0KIAorCWlmIChhcmdjID09IDMgJiYgIXN0cmNtcChhcmd2WzFdLCAibWluZ3dfcGF0aCIpKSB7CisJCXB1dHMoYXJndlsyXSk7CisJCXJldHVybiAwOworCX0KKworCWlmIChhcmdjID09IDQgJiYgIXN0cmNtcChhcmd2WzFdLCAicmVsYXRpdmVfcGF0aCIpKSB7CisJCXN0cnVjdCBzdHJidWYgc2IgPSBTVFJCVUZfSU5JVDsKKwkJY29uc3QgY2hhciAqaW4sICpwcmVmaXgsICpyZWw7CisJCW5vcm1hbGl6ZV9hcmd2X3N0cmluZygmaW4sIGFyZ3ZbMl0pOworCQlub3JtYWxpemVfYXJndl9zdHJpbmcoJnByZWZpeCwgYXJndlszXSk7CisJCXJlbCA9IHJlbGF0aXZlX3BhdGgoaW4sIHByZWZpeCwgJnNiKTsKKwkJaWYgKCFyZWwpCisJCQlwdXRzKCIobnVsbCkiKTsKKwkJZWxzZQorCQkJcHV0cyhzdHJsZW4ocmVsKSA+IDAgPyByZWwgOiAiKGVtcHR5KSIpOworCQlzdHJidWZfcmVsZWFzZSgmc2IpOworCQlyZXR1cm4gMDsKKwl9CisKIAlmcHJpbnRmKHN0ZGVyciwgIiVzOiB1bmtub3duIGZ1bmN0aW9uIG5hbWU6ICVzXG4iLCBhcmd2WzBdLAogCQlhcmd2WzFdID8gYXJndlsxXSA6ICIodGhlcmUgd2FzIG5vbmUpIik7CiAJcmV0dXJuIDE7CmRpZmYgLS1naXQgYS90ZXN0LXByaW8tcXVldWUuYyBiL3Rlc3QtcHJpby1xdWV1ZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZTcyZjAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0LXByaW8tcXVldWUuYwpAQCAtMCwwICsxLDM5IEBACisjaW5jbHVkZSAiY2FjaGUuaCIKKyNpbmNsdWRlICJwcmlvLXF1ZXVlLmgiCisKK3N0YXRpYyBpbnQgaW50Y21wKGNvbnN0IHZvaWQgKnZhLCBjb25zdCB2b2lkICp2Yiwgdm9pZCAqZGF0YSkKK3sKKwljb25zdCBpbnQgKmEgPSB2YSwgKmIgPSB2YjsKKwlyZXR1cm4gKmEgLSAqYjsKK30KKworc3RhdGljIHZvaWQgc2hvdyhpbnQgKnYpCit7CisJaWYgKCF2KQorCQlwcmludGYoIk5VTExcbiIpOworCWVsc2UKKwkJcHJpbnRmKCIlZFxuIiwgKnYpOworCWZyZWUodik7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKwlzdHJ1Y3QgcHJpb19xdWV1ZSBwcSA9IHsgaW50Y21wIH07CisKKwl3aGlsZSAoKisrYXJndikgeworCQlpZiAoIXN0cmNtcCgqYXJndiwgImdldCIpKQorCQkJc2hvdyhwcmlvX3F1ZXVlX2dldCgmcHEpKTsKKwkJZWxzZSBpZiAoIXN0cmNtcCgqYXJndiwgImR1bXAiKSkgeworCQkJaW50ICp2OworCQkJd2hpbGUgKCh2ID0gcHJpb19xdWV1ZV9nZXQoJnBxKSkpCisJCQkgICAgICAgc2hvdyh2KTsKKwkJfQorCQllbHNlIHsKKwkJCWludCAqdiA9IG1hbGxvYyhzaXplb2YoKnYpKTsKKwkJCSp2ID0gYXRvaSgqYXJndik7CisJCQlwcmlvX3F1ZXVlX3B1dCgmcHEsIHYpOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90ZXN0LXN1YnByb2Nlc3MuYyBiL3Rlc3Qtc3VicHJvY2Vzcy5jCmluZGV4IGYyZDRjMGQuLjkzNTI1ZWIgMTAwNjQ0Ci0tLSBhL3Rlc3Qtc3VicHJvY2Vzcy5jCisrKyBiL3Rlc3Qtc3VicHJvY2Vzcy5jCkBAIC0xLDcgKzEsNyBAQAogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAicnVuLWNvbW1hbmQuaCIKIAotaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogewogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIGNwOwogCWludCBub2dpdCA9IDA7CkBAIC0xNSw2ICsxNSw2IEBACiAJfQogCW1lbXNldCgmY3AsIDAsIHNpemVvZihjcCkpOwogCWNwLmdpdF9jbWQgPSAxOwotCWNwLmFyZ3YgPSBhcmd2ICsgMTsKKwljcC5hcmd2ID0gKGNvbnN0IGNoYXIgKiopYXJndiArIDE7CiAJcmV0dXJuIHJ1bl9jb21tYW5kKCZjcCk7CiB9CmRpZmYgLS1naXQgYS90aHJlYWQtdXRpbHMuYyBiL3RocmVhZC11dGlscy5jCmluZGV4IDdmNGI3NmEuLjk3Mzk2YTcgMTAwNjQ0Ci0tLSBhL3RocmVhZC11dGlscy5jCisrKyBiL3RocmVhZC11dGlscy5jCkBAIC0yNCw3ICsyNCw3IEBACiAJbG9uZyBuY3B1czsKICNlbmRpZgogCi0jaWZkZWYgX1dJTjMyCisjaWZkZWYgR0lUX1dJTkRPV1NfTkFUSVZFCiAJU1lTVEVNX0lORk8gaW5mbzsKIAlHZXRTeXN0ZW1JbmZvKCZpbmZvKTsKIApkaWZmIC0tZ2l0IGEvdHJhY2UuYyBiL3RyYWNlLmMKaW5kZXggNWVjMGUzYi4uM2Q3NDRkMSAxMDA2NDQKLS0tIGEvdHJhY2UuYworKysgYi90cmFjZS5jCkBAIC03NSw2ICs3NSw3IEBACiAJc3RyYnVmX3JlbGVhc2UoJmJ1Zik7CiB9CiAKK19fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAyLCAzKSkpCiBzdGF0aWMgdm9pZCB0cmFjZV9wcmludGZfa2V5KGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcDsKZGlmZiAtLWdpdCBhL3RyYW5zcG9ydC1oZWxwZXIuYyBiL3RyYW5zcG9ydC1oZWxwZXIuYwppbmRleCA1MjJkNzkxLi42M2NhYmMzIDEwMDY0NAotLS0gYS90cmFuc3BvcnQtaGVscGVyLmMKKysrIGIvdHJhbnNwb3J0LWhlbHBlci5jCkBAIC0xMSw2ICsxMSw3IEBACiAjaW5jbHVkZSAidGhyZWFkLXV0aWxzLmgiCiAjaW5jbHVkZSAic2lnY2hhaW4uaCIKICNpbmNsdWRlICJhcmd2LWFycmF5LmgiCisjaW5jbHVkZSAicmVmcy5oIgogCiBzdGF0aWMgaW50IGRlYnVnOwogCkBAIC00Nyw3ICs0OCw3IEBACiAJCWRpZV9lcnJubygiRnVsbCB3cml0ZSB0byByZW1vdGUgaGVscGVyIGZhaWxlZCIpOwogfQogCi1zdGF0aWMgaW50IHJlY3ZsaW5lX2ZoKEZJTEUgKmhlbHBlciwgc3RydWN0IHN0cmJ1ZiAqYnVmZmVyKQorc3RhdGljIGludCByZWN2bGluZV9maChGSUxFICpoZWxwZXIsIHN0cnVjdCBzdHJidWYgKmJ1ZmZlciwgY29uc3QgY2hhciAqbmFtZSkKIHsKIAlzdHJidWZfcmVzZXQoYnVmZmVyKTsKIAlpZiAoZGVidWcpCkBAIC02NSw3ICs2Niw3IEBACiAKIHN0YXRpYyBpbnQgcmVjdmxpbmUoc3RydWN0IGhlbHBlcl9kYXRhICpoZWxwZXIsIHN0cnVjdCBzdHJidWYgKmJ1ZmZlcikKIHsKLQlyZXR1cm4gcmVjdmxpbmVfZmgoaGVscGVyLT5vdXQsIGJ1ZmZlcik7CisJcmV0dXJuIHJlY3ZsaW5lX2ZoKGhlbHBlci0+b3V0LCBidWZmZXIsIGhlbHBlci0+bmFtZSk7CiB9CiAKIHN0YXRpYyB2b2lkIHhjaGdsaW5lKHN0cnVjdCBoZWxwZXJfZGF0YSAqaGVscGVyLCBzdHJ1Y3Qgc3RyYnVmICpidWZmZXIpCkBAIC0yMTcsNiArMjE4LDggQEAKIAkJZm9yIChpID0gMDsgaSA8IHJlZnNwZWNfbnI7IGkrKykKIAkJCWZyZWUoKGNoYXIgKilyZWZzcGVjc1tpXSk7CiAJCWZyZWUocmVmc3BlY3MpOworCX0gZWxzZSBpZiAoZGF0YS0+aW1wb3J0IHx8IGRhdGEtPmJpZGlfaW1wb3J0IHx8IGRhdGEtPmV4cG9ydCkgeworCQl3YXJuaW5nKCJUaGlzIHJlbW90ZSBoZWxwZXIgc2hvdWxkIGltcGxlbWVudCByZWZzcGVjIGNhcGFiaWxpdHkuIik7CiAJfQogCXN0cmJ1Zl9yZWxlYXNlKCZidWYpOwogCWlmIChkZWJ1ZykKQEAgLTQ3Myw3ICs0NzYsNyBAQAogCSAqIHdlcmUgZmV0Y2hpbmcuCiAJICoKIAkgKiAoSWYgbm8gInJlZnNwZWMiIGNhcGFiaWxpdHkgd2FzIHNwZWNpZmllZCwgZm9yIGhpc3RvcmljYWwKLQkgKiByZWFzb25zIHdlIGRlZmF1bHQgdG8gKjoqLikKKwkgKiByZWFzb25zIHdlIGRlZmF1bHQgdG8gdGhlIGVxdWl2YWxlbnQgb2YgKjoqLikKIAkgKgogCSAqIFN0b3JlIHRoZSByZXN1bHQgaW4gdG9fZmV0Y2hbaV0ub2xkX3NoYTEuICBDYWxsZXJzIHN1Y2gKIAkgKiBhcyAiZ2l0IGZldGNoIiBjYW4gdXNlIHRoZSB2YWx1ZSB0byB3cml0ZSBmZWVkYmFjayB0byB0aGUKQEAgLTU0MCw3ICs1NDMsNyBAQAogCQlnb3RvIGV4aXQ7CiAKIAlzZW5kbGluZShkYXRhLCAmY21kYnVmKTsKLQlyZWN2bGluZV9maChpbnB1dCwgJmNtZGJ1Zik7CisJcmVjdmxpbmVfZmgoaW5wdXQsICZjbWRidWYsIG5hbWUpOwogCWlmICghc3RyY21wKGNtZGJ1Zi5idWYsICIiKSkgewogCQlkYXRhLT5ub19kaXNjb25uZWN0X3JlcSA9IDE7CiAJCWlmIChkZWJ1ZykKQEAgLTYyMiw3ICs2MjUsNyBAQAogCXJldHVybiAtMTsKIH0KIAotc3RhdGljIHZvaWQgcHVzaF91cGRhdGVfcmVmX3N0YXR1cyhzdHJ1Y3Qgc3RyYnVmICpidWYsCitzdGF0aWMgaW50IHB1c2hfdXBkYXRlX3JlZl9zdGF0dXMoc3RydWN0IHN0cmJ1ZiAqYnVmLAogCQkJCSAgIHN0cnVjdCByZWYgKipyZWYsCiAJCQkJICAgc3RydWN0IHJlZiAqcmVtb3RlX3JlZnMpCiB7CkBAIC02ODgsNyArNjkxLDcgQEAKIAkJKnJlZiA9IGZpbmRfcmVmX2J5X25hbWUocmVtb3RlX3JlZnMsIHJlZm5hbWUpOwogCWlmICghKnJlZikgewogCQl3YXJuaW5nKCJoZWxwZXIgcmVwb3J0ZWQgdW5leHBlY3RlZCBzdGF0dXMgb2YgJXMiLCByZWZuYW1lKTsKLQkJcmV0dXJuOworCQlyZXR1cm4gMTsKIAl9CiAKIAlpZiAoKCpyZWYpLT5zdGF0dXMgIT0gUkVGX1NUQVRVU19OT05FKSB7CkBAIC02OTcsMTEgKzcwMCwxMiBAQAogCQkgKiBzdGF0dXMgcmVwb3J0ZWQgYnkgdGhlIHJlbW90ZSBoZWxwZXIgaWYgdGhlIGxhdHRlciBpcyAnbm8gbWF0Y2gnLgogCQkgKi8KIAkJaWYgKHN0YXR1cyA9PSBSRUZfU1RBVFVTX05PTkUpCi0JCQlyZXR1cm47CisJCQlyZXR1cm4gMTsKIAl9CiAKIAkoKnJlZiktPnN0YXR1cyA9IHN0YXR1czsKIAkoKnJlZiktPnJlbW90ZV9zdGF0dXMgPSBtc2c7CisJcmV0dXJuICEoc3RhdHVzID09IFJFRl9TVEFUVVNfT0spOwogfQogCiBzdGF0aWMgdm9pZCBwdXNoX3VwZGF0ZV9yZWZzX3N0YXR1cyhzdHJ1Y3QgaGVscGVyX2RhdGEgKmRhdGEsCkBAIC03MTAsMTEgKzcxNCwyNCBAQAogCXN0cnVjdCBzdHJidWYgYnVmID0gU1RSQlVGX0lOSVQ7CiAJc3RydWN0IHJlZiAqcmVmID0gcmVtb3RlX3JlZnM7CiAJZm9yICg7OykgeworCQljaGFyICpwcml2YXRlOworCiAJCXJlY3ZsaW5lKGRhdGEsICZidWYpOwogCQlpZiAoIWJ1Zi5sZW4pCiAJCQlicmVhazsKIAotCQlwdXNoX3VwZGF0ZV9yZWZfc3RhdHVzKCZidWYsICZyZWYsIHJlbW90ZV9yZWZzKTsKKwkJaWYgKHB1c2hfdXBkYXRlX3JlZl9zdGF0dXMoJmJ1ZiwgJnJlZiwgcmVtb3RlX3JlZnMpKQorCQkJY29udGludWU7CisKKwkJaWYgKCFkYXRhLT5yZWZzcGVjcykKKwkJCWNvbnRpbnVlOworCisJCS8qIHByb3BhZ2F0ZSBiYWNrIHRoZSB1cGRhdGUgdG8gdGhlIHJlbW90ZSBuYW1lc3BhY2UgKi8KKwkJcHJpdmF0ZSA9IGFwcGx5X3JlZnNwZWNzKGRhdGEtPnJlZnNwZWNzLCBkYXRhLT5yZWZzcGVjX25yLCByZWYtPm5hbWUpOworCQlpZiAoIXByaXZhdGUpCisJCQljb250aW51ZTsKKwkJdXBkYXRlX3JlZigidXBkYXRlIGJ5IGhlbHBlciIsIHByaXZhdGUsIHJlZi0+bmV3X3NoYTEsIE5VTEwsIDAsIDApOworCQlmcmVlKHByaXZhdGUpOwogCX0KIAlzdHJidWZfcmVsZWFzZSgmYnVmKTsKIH0KQEAgLTc4OSw2ICs4MDYsMTQgQEAKIAlzdHJ1Y3Qgc3RyaW5nX2xpc3QgcmV2bGlzdF9hcmdzID0gU1RSSU5HX0xJU1RfSU5JVF9OT0RVUDsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCisJaWYgKCFkYXRhLT5yZWZzcGVjcykKKwkJZGllKCJyZW1vdGUtaGVscGVyIGRvZXNuJ3Qgc3VwcG9ydCBwdXNoOyByZWZzcGVjIG5lZWRlZCIpOworCisJaWYgKGZsYWdzICYgVFJBTlNQT1JUX1BVU0hfRFJZX1JVTikgeworCQlpZiAoc2V0X2hlbHBlcl9vcHRpb24odHJhbnNwb3J0LCAiZHJ5LXJ1biIsICJ0cnVlIikgIT0gMCkKKwkJCWRpZSgiaGVscGVyICVzIGRvZXMgbm90IHN1cHBvcnQgZHJ5LXJ1biIsIGRhdGEtPm5hbWUpOworCX0KKwogCWhlbHBlciA9IGdldF9oZWxwZXIodHJhbnNwb3J0KTsKIAogCXdyaXRlX2NvbnN0YW50KGhlbHBlci0+aW4sICJleHBvcnRcbiIpOwpAQCAtNzk5LDggKzgyNCw5IEBACiAJCWNoYXIgKnByaXZhdGU7CiAJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAKLQkJaWYgKCFkYXRhLT5yZWZzcGVjcykKLQkJCWNvbnRpbnVlOworCQlpZiAocmVmLT5kZWxldGlvbikKKwkJCWRpZSgicmVtb3RlLWhlbHBlcnMgZG8gbm90IHN1cHBvcnQgcmVmIGRlbGV0aW9uIik7CisKIAkJcHJpdmF0ZSA9IGFwcGx5X3JlZnNwZWNzKGRhdGEtPnJlZnNwZWNzLCBkYXRhLT5yZWZzcGVjX25yLCByZWYtPm5hbWUpOwogCQlpZiAocHJpdmF0ZSAmJiAhZ2V0X3NoYTEocHJpdmF0ZSwgc2hhMSkpIHsKIAkJCXN0cmJ1Zl9hZGRmKCZidWYsICJeJXMiLCBwcml2YXRlKTsKQEAgLTgwOSwxMyArODM1LDE0IEBACiAJCX0KIAkJZnJlZShwcml2YXRlKTsKIAotCQlpZiAocmVmLT5kZWxldGlvbikgeworCQlpZiAocmVmLT5kZWxldGlvbikKIAkJCWRpZSgicmVtb3RlLWhlbHBlcnMgZG8gbm90IHN1cHBvcnQgcmVmIGRlbGV0aW9uIik7Ci0JCX0KIAotCQlpZiAocmVmLT5wZWVyX3JlZikKKwkJaWYgKHJlZi0+cGVlcl9yZWYpIHsKKwkJCWlmIChzdHJjbXAocmVmLT5wZWVyX3JlZi0+bmFtZSwgcmVmLT5uYW1lKSkKKwkJCQlkaWUoInJlbW90ZS1oZWxwZXJzIGRvIG5vdCBzdXBwb3J0IG9sZDpuZXcgc3ludGF4Iik7CiAJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJnJldmxpc3RfYXJncywgcmVmLT5wZWVyX3JlZi0+bmFtZSk7Ci0KKwkJfQogCX0KIAogCWlmIChnZXRfZXhwb3J0ZXIodHJhbnNwb3J0LCAmZXhwb3J0ZXIsICZyZXZsaXN0X2FyZ3MpKQpAQCAtOTU1LDYgKzk4Miw3IEBACiAjZGVmaW5lIFBCVUZGRVJTSVpFIDgxOTIKIAogLyogUHJpbnQgYmlkaXJlY3Rpb25hbCB0cmFuc2ZlciBsb29wIGRlYnVnIG1lc3NhZ2UuICovCitfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMSwgMikpKQogc3RhdGljIHZvaWQgdHJhbnNmZXJfZGVidWcoY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcmdzOwpAQCAtMTA0MCw3ICsxMDY4LDcgQEAKIAkJcmV0dXJuIC0xOwogCX0gZWxzZSBpZiAoYnl0ZXMgPT0gMCkgewogCQl0cmFuc2Zlcl9kZWJ1ZygiJXMgRU9GICh3aXRoICVpIGJ5dGVzIGluIGJ1ZmZlcikiLAotCQkJdC0+c3JjX25hbWUsIHQtPmJ1ZnVzZSk7CisJCQl0LT5zcmNfbmFtZSwgKGludCl0LT5idWZ1c2UpOwogCQl0LT5zdGF0ZSA9IFNTVEFURV9GTFVTSElORzsKIAl9IGVsc2UgaWYgKGJ5dGVzID4gMCkgewogCQl0LT5idWZ1c2UgKz0gYnl0ZXM7CkBAIC0xMTA0LDcgKzExMzIsNyBAQAogI2lmbmRlZiBOT19QVEhSRUFEUwogCiAvKgotICogSm9pbiB0aHJlYWQsIHdpdGggYXBwb3JpYXRlIGVycm9ycyBvbiBmYWlsdXJlLiBOYW1lIGlzIG5hbWUgZm9yIHRoZQorICogSm9pbiB0aHJlYWQsIHdpdGggYXBwcm9wcmlhdGUgZXJyb3JzIG9uIGZhaWx1cmUuIE5hbWUgaXMgbmFtZSBmb3IgdGhlCiAgKiB0aHJlYWQgKGZvciBlcnJvciBtZXNzYWdlcykuIFJldHVybnMgMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUuCiAgKi8KIHN0YXRpYyBpbnQgdGxvb3Bfam9pbihwdGhyZWFkX3QgdGhyZWFkLCBjb25zdCBjaGFyICpuYW1lKQpAQCAtMTE3MCw3ICsxMTk4LDcgQEAKIH0KIAogLyoKLSAqIEpvaW4gcHJvY2Vzcywgd2l0aCBhcHBvcmlhdGUgZXJyb3JzIG9uIGZhaWx1cmUuIE5hbWUgaXMgbmFtZSBmb3IgdGhlCisgKiBKb2luIHByb2Nlc3MsIHdpdGggYXBwcm9wcmlhdGUgZXJyb3JzIG9uIGZhaWx1cmUuIE5hbWUgaXMgbmFtZSBmb3IgdGhlCiAgKiBwcm9jZXNzIChmb3IgZXJyb3IgbWVzc2FnZXMpLiBSZXR1cm5zIDAgb24gc3VjY2VzcywgMSBvbiBmYWlsdXJlLgogICovCiBzdGF0aWMgaW50IHRsb29wX2pvaW4ocGlkX3QgcGlkLCBjb25zdCBjaGFyICpuYW1lKQpkaWZmIC0tZ2l0IGEvdHJhbnNwb3J0LmMgYi90cmFuc3BvcnQuYwppbmRleCA0MGJjNTQwLi5lMTVkYjk4IDEwMDY0NAotLS0gYS90cmFuc3BvcnQuYworKysgYi90cmFuc3BvcnQuYwpAQCAtNTM0LDYgKzUzNCw4IEBACiAJYXJncy5xdWlldCA9ICh0cmFuc3BvcnQtPnZlcmJvc2UgPCAwKTsKIAlhcmdzLm5vX3Byb2dyZXNzID0gIXRyYW5zcG9ydC0+cHJvZ3Jlc3M7CiAJYXJncy5kZXB0aCA9IGRhdGEtPm9wdGlvbnMuZGVwdGg7CisJYXJncy5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkID0KKwkJZGF0YS0+b3B0aW9ucy5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkOwogCiAJaWYgKCFkYXRhLT5nb3RfcmVtb3RlX2hlYWRzKSB7CiAJCWNvbm5lY3Rfc2V0dXAodHJhbnNwb3J0LCAwLCAwKTsKQEAgLTU1MSw2ICs1NTMsOCBAQAogCQlyZWZzID0gTlVMTDsKIAlkYXRhLT5jb25uID0gTlVMTDsKIAlkYXRhLT5nb3RfcmVtb3RlX2hlYWRzID0gMDsKKwlkYXRhLT5vcHRpb25zLnNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgPQorCQlhcmdzLnNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQ7CiAKIAlmcmVlX3JlZnMocmVmc190bXApOwogCmRpZmYgLS1naXQgYS90cmFuc3BvcnQuaCBiL3RyYW5zcG9ydC5oCmluZGV4IDE1ZjZmNmUuLmVhNzBlYTcgMTAwNjQ0Ci0tLSBhL3RyYW5zcG9ydC5oCisrKyBiL3RyYW5zcG9ydC5oCkBAIC04LDYgKzgsOCBAQAogCXVuc2lnbmVkIHRoaW4gOiAxOwogCXVuc2lnbmVkIGtlZXAgOiAxOwogCXVuc2lnbmVkIGZvbGxvd3RhZ3MgOiAxOworCXVuc2lnbmVkIGNoZWNrX3NlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgOiAxOworCXVuc2lnbmVkIHNlbGZfY29udGFpbmVkX2FuZF9jb25uZWN0ZWQgOiAxOwogCWludCBkZXB0aDsKIAljb25zdCBjaGFyICp1cGxvYWRwYWNrOwogCWNvbnN0IGNoYXIgKnJlY2VpdmVwYWNrOwpkaWZmIC0tZ2l0IGEvdHJlZS13YWxrLmMgYi90cmVlLXdhbGsuYwppbmRleCA2ZTMwZWY5Li5jNjI2MTM1IDEwMDY0NAotLS0gYS90cmVlLXdhbGsuYworKysgYi90cmVlLXdhbGsuYwpAQCAtMzIzLDcgKzMyMyw2IEBACiAKIGludCB0cmF2ZXJzZV90cmVlcyhpbnQgbiwgc3RydWN0IHRyZWVfZGVzYyAqdCwgc3RydWN0IHRyYXZlcnNlX2luZm8gKmluZm8pCiB7Ci0JaW50IHJldCA9IDA7CiAJaW50IGVycm9yID0gMDsKIAlzdHJ1Y3QgbmFtZV9lbnRyeSAqZW50cnkgPSB4bWFsbG9jKG4qc2l6ZW9mKCplbnRyeSkpOwogCWludCBpOwpAQCAtMzQxLDYgKzM0MCw3IEBACiAJCXN0cmJ1Zl9zZXRsZW4oJmJhc2UsIGluZm8tPnBhdGhsZW4pOwogCX0KIAlmb3IgKDs7KSB7CisJCWludCB0cmVlc191c2VkOwogCQl1bnNpZ25lZCBsb25nIG1hc2ssIGRpcm1hc2s7CiAJCWNvbnN0IGNoYXIgKmZpcnN0ID0gTlVMTDsKIAkJaW50IGZpcnN0X2xlbiA9IDA7CkBAIC00MDQsMTUgKzQwNCwxNCBAQAogCQlpZiAoaW50ZXJlc3RpbmcgPCAwKQogCQkJYnJlYWs7CiAJCWlmIChpbnRlcmVzdGluZykgewotCQkJcmV0ID0gaW5mby0+Zm4obiwgbWFzaywgZGlybWFzaywgZW50cnksIGluZm8pOwotCQkJaWYgKHJldCA8IDApIHsKLQkJCQllcnJvciA9IHJldDsKKwkJCXRyZWVzX3VzZWQgPSBpbmZvLT5mbihuLCBtYXNrLCBkaXJtYXNrLCBlbnRyeSwgaW5mbyk7CisJCQlpZiAodHJlZXNfdXNlZCA8IDApIHsKKwkJCQllcnJvciA9IHRyZWVzX3VzZWQ7CiAJCQkJaWYgKCFpbmZvLT5zaG93X2FsbF9lcnJvcnMpCiAJCQkJCWJyZWFrOwogCQkJfQotCQkJbWFzayAmPSByZXQ7CisJCQltYXNrICY9IHRyZWVzX3VzZWQ7CiAJCX0KLQkJcmV0ID0gMDsKIAkJZm9yIChpID0gMDsgaSA8IG47IGkrKykKIAkJCWlmIChtYXNrICYgKDF1bCA8PCBpKSkKIAkJCQl1cGRhdGVfZXh0ZW5kZWRfZW50cnkodHggKyBpLCBlbnRyeSArIGkpOwpkaWZmIC0tZ2l0IGEvdHJlZS13YWxrLmggYi90cmVlLXdhbGsuaAppbmRleCAyYmYwZGI5Li5hZTA0YjY0IDEwMDY0NAotLS0gYS90cmVlLXdhbGsuaAorKysgYi90cmVlLXdhbGsuaApAQCAtNDYsNyArNDYsNyBAQAogCWludCBwYXRobGVuOwogCXN0cnVjdCBwYXRoc3BlYyAqcGF0aHNwZWM7CiAKLQl1bnNpZ25lZCBsb25nIGNvbmZsaWN0czsKKwl1bnNpZ25lZCBsb25nIGRmX2NvbmZsaWN0czsKIAl0cmF2ZXJzZV9jYWxsYmFja190IGZuOwogCXZvaWQgKmRhdGE7CiAJaW50IHNob3dfYWxsX2Vycm9yczsKZGlmZiAtLWdpdCBhL3RyZWUuYyBiL3RyZWUuYwppbmRleCA2MmZlZDYzLi5jMGU1NjhjIDEwMDY0NAotLS0gYS90cmVlLmMKKysrIGIvdHJlZS5jCkBAIC0xNTksNyArMTU5LDcgQEAKIAkgKiBzb3J0IGF0IHRoZSBlbmQuCiAJICovCiAJZm9yIChpID0gMDsgIWZuICYmIGkgPCBhY3RpdmVfbnI7IGkrKykgewotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gYWN0aXZlX2NhY2hlW2ldOwogCQlpZiAoY2Vfc3RhZ2UoY2UpID09IHN0YWdlKQogCQkJZm4gPSByZWFkX29uZV9lbnRyeTsKIAl9CmRpZmYgLS1naXQgYS91bnBhY2stdHJlZXMuYyBiL3VucGFjay10cmVlcy5jCmluZGV4IGVkZTQyOTkuLmJmMDE3MTcgMTAwNjQ0Ci0tLSBhL3VucGFjay10cmVlcy5jCisrKyBiL3VucGFjay10cmVlcy5jCkBAIC0xMTYsMTQgKzExNiwyMCBAQAogCQkJQUREX0NBQ0hFX09LX1RPX0FERCB8IEFERF9DQUNIRV9PS19UT19SRVBMQUNFKTsKIH0KIAotc3RhdGljIHZvaWQgYWRkX2VudHJ5KHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbywgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKLQl1bnNpZ25lZCBpbnQgc2V0LCB1bnNpZ25lZCBpbnQgY2xlYXIpCitzdGF0aWMgc3RydWN0IGNhY2hlX2VudHJ5ICpkdXBfZW50cnkoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAl1bnNpZ25lZCBpbnQgc2l6ZSA9IGNlX3NpemUoY2UpOwogCXN0cnVjdCBjYWNoZV9lbnRyeSAqbmV3ID0geG1hbGxvYyhzaXplKTsKIAogCW1lbWNweShuZXcsIGNlLCBzaXplKTsKLQlkb19hZGRfZW50cnkobywgbmV3LCBzZXQsIGNsZWFyKTsKKwlyZXR1cm4gbmV3OworfQorCitzdGF0aWMgdm9pZCBhZGRfZW50cnkoc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvLAorCQkgICAgICBjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkgICAgICB1bnNpZ25lZCBpbnQgc2V0LCB1bnNpZ25lZCBpbnQgY2xlYXIpCit7CisJZG9fYWRkX2VudHJ5KG8sIGR1cF9lbnRyeShjZSksIHNldCwgY2xlYXIpOwogfQogCiAvKgpAQCAtMTczLDcgKzE3OSw3IEBACiAgKiBVbmxpbmsgdGhlIGxhc3QgY29tcG9uZW50IGFuZCBzY2hlZHVsZSB0aGUgbGVhZGluZyBkaXJlY3RvcmllcyBmb3IKICAqIHJlbW92YWwsIHN1Y2ggdGhhdCBlbXB0eSBkaXJlY3RvcmllcyBnZXQgcmVtb3ZlZC4KICAqLwotc3RhdGljIHZvaWQgdW5saW5rX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UpCitzdGF0aWMgdm9pZCB1bmxpbmtfZW50cnkoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSkKIHsKIAlpZiAoIWNoZWNrX2xlYWRpbmdfcGF0aChjZS0+bmFtZSwgY2VfbmFtZWxlbihjZSkpKQogCQlyZXR1cm47CkBAIC0xOTMsNyArMTk5LDcgQEAKIAogCWlmIChvLT51cGRhdGUgJiYgby0+dmVyYm9zZV91cGRhdGUpIHsKIAkJZm9yICh0b3RhbCA9IGNudCA9IDA7IGNudCA8IGluZGV4LT5jYWNoZV9ucjsgY250KyspIHsKLQkJCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBpbmRleC0+Y2FjaGVbY250XTsKKwkJCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UgPSBpbmRleC0+Y2FjaGVbY250XTsKIAkJCWlmIChjZS0+Y2VfZmxhZ3MgJiAoQ0VfVVBEQVRFIHwgQ0VfV1RfUkVNT1ZFKSkKIAkJCQl0b3RhbCsrOwogCQl9CkBAIC0yMDYsNyArMjEyLDcgQEAKIAlpZiAoby0+dXBkYXRlKQogCQlnaXRfYXR0cl9zZXRfZGlyZWN0aW9uKEdJVF9BVFRSX0NIRUNLT1VULCAmby0+cmVzdWx0KTsKIAlmb3IgKGkgPSAwOyBpIDwgaW5kZXgtPmNhY2hlX25yOyBpKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGluZGV4LT5jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGluZGV4LT5jYWNoZVtpXTsKIAogCQlpZiAoY2UtPmNlX2ZsYWdzICYgQ0VfV1RfUkVNT1ZFKSB7CiAJCQlkaXNwbGF5X3Byb2dyZXNzKHByb2dyZXNzLCArK2NudCk7CkBAIC0yMzUsOCArMjQxLDExIEBACiAJcmV0dXJuIGVycnMgIT0gMDsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfc3BhcnNlKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7Ci1zdGF0aWMgaW50IHZlcmlmeV9hYnNlbnRfc3BhcnNlKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfc3BhcnNlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworc3RhdGljIGludCB2ZXJpZnlfYWJzZW50X3NwYXJzZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJCWVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzLAorCQkJCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7CiAKIHN0YXRpYyBpbnQgYXBwbHlfc3BhcnNlX2NoZWNrb3V0KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKQEAgLTI5MSw3ICszMDAsOCBAQAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBjYWxsX3VucGFja19mbihzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyBpbmxpbmUgaW50IGNhbGxfdW5wYWNrX2ZuKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJCQkJIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlpbnQgcmV0ID0gby0+Zm4oc3JjLCBvKTsKIAlpZiAocmV0ID4gMCkKQEAgLTMyMCw3ICszMzAsNyBAQAogCQlpbmRleC0+Y2FjaGVbaV0tPmNlX2ZsYWdzICY9IH4oQ0VfVU5QQUNLRUQgfCBDRV9BRERFRCB8IENFX05FV19TS0lQX1dPUktUUkVFKTsKIH0KIAotc3RhdGljIGludCBsb2NhdGVfaW5fc3JjX2luZGV4KHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCitzdGF0aWMgaW50IGxvY2F0ZV9pbl9zcmNfaW5kZXgoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKIAkJCSAgICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJc3RydWN0IGluZGV4X3N0YXRlICppbmRleCA9IG8tPnNyY19pbmRleDsKQEAgLTM2Niw3ICszNzYsNyBAQAogCXJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgdm9pZCBhZGRfc2FtZV91bm1lcmdlZChzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIHZvaWQgYWRkX3NhbWVfdW5tZXJnZWQoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKIAkJCSAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlzdHJ1Y3QgaW5kZXhfc3RhdGUgKmluZGV4ID0gby0+c3JjX2luZGV4OwpAQCAtMzg4LDcgKzM5OCw3IEBACiBzdGF0aWMgaW50IHVucGFja19pbmRleF9lbnRyeShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAogCQkJICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewotCXN0cnVjdCBjYWNoZV9lbnRyeSAqc3JjW01BWF9VTlBBQ0tfVFJFRVMgKyAxXSA9IHsgTlVMTCwgfTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnNyY1tNQVhfVU5QQUNLX1RSRUVTICsgMV0gPSB7IE5VTEwsIH07CiAJaW50IHJldDsKIAogCXNyY1swXSA9IGNlOwpAQCAtNDU0LDcgKzQ2NCw3IEBACiAJbmV3aW5mby5wYXRoc3BlYyA9IGluZm8tPnBhdGhzcGVjOwogCW5ld2luZm8ubmFtZSA9ICpwOwogCW5ld2luZm8ucGF0aGxlbiArPSB0cmVlX2VudHJ5X2xlbihwKSArIDE7Ci0JbmV3aW5mby5jb25mbGljdHMgfD0gZGZfY29uZmxpY3RzOworCW5ld2luZm8uZGZfY29uZmxpY3RzIHw9IGRmX2NvbmZsaWN0czsKIAogCWZvciAoaSA9IDA7IGkgPCBuOyBpKyssIGRpcm1hc2sgPj49IDEpIHsKIAkJY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSA9IE5VTEw7CkBAIC01NTUsMTcgKzU2NSwxMiBAQAogewogCWludCBpOwogCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyA9IGluZm8tPmRhdGE7Ci0JdW5zaWduZWQgbG9uZyBjb25mbGljdHM7CisJdW5zaWduZWQgbG9uZyBjb25mbGljdHMgPSBpbmZvLT5kZl9jb25mbGljdHMgfCBkaXJtYXNrOwogCiAJLyogRG8gd2UgaGF2ZSAqb25seSogZGlyZWN0b3JpZXM/IE5vdGhpbmcgdG8gZG8gKi8KIAlpZiAobWFzayA9PSBkaXJtYXNrICYmICFzcmNbMF0pCiAJCXJldHVybiAwOwogCi0JY29uZmxpY3RzID0gaW5mby0+Y29uZmxpY3RzOwotCWlmIChvLT5tZXJnZSkKLQkJY29uZmxpY3RzID4+PSAxOwotCWNvbmZsaWN0cyB8PSBkaXJtYXNrOwotCiAJLyoKIAkgKiBPaywgd2UndmUgZmlsbGVkIGluIHVwIHRvIGFueSBwb3RlbnRpYWwgaW5kZXggZW50cnkgaW4gc3JjWzBdLAogCSAqIG5vdyBkbyB0aGUgcmVzdC4KQEAgLTU5MCw4ICs1OTUsMTYgQEAKIAkJc3JjW2kgKyBvLT5tZXJnZV0gPSBjcmVhdGVfY2VfZW50cnkoaW5mbywgbmFtZXMgKyBpLCBzdGFnZSk7CiAJfQogCi0JaWYgKG8tPm1lcmdlKQotCQlyZXR1cm4gY2FsbF91bnBhY2tfZm4oc3JjLCBvKTsKKwlpZiAoby0+bWVyZ2UpIHsKKwkJaW50IHJjID0gY2FsbF91bnBhY2tfZm4oKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICopc3JjLAorCQkJCQlvKTsKKwkJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IHNyY1tpICsgby0+bWVyZ2VdOworCQkJaWYgKGNlICE9IG8tPmRmX2NvbmZsaWN0X2VudHJ5KQorCQkJCWZyZWUoY2UpOworCQl9CisJCXJldHVybiByYzsKKwl9CiAKIAlmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogCQlpZiAoc3JjW2ldICYmIHNyY1tpXSAhPSBvLT5kZl9jb25mbGljdF9lbnRyeSkKQEAgLTYzNyw3ICs2NTAsNyBAQAogCWludCBwX2xlbiA9IHRyZWVfZW50cnlfbGVuKHApOwogCiAJZm9yIChwb3MgPSBvLT5jYWNoZV9ib3R0b207IHBvcyA8IGluZGV4LT5jYWNoZV9ucjsgcG9zKyspIHsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGluZGV4LT5jYWNoZVtwb3NdOworCQljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gaW5kZXgtPmNhY2hlW3Bvc107CiAJCWNvbnN0IGNoYXIgKmNlX25hbWUsICpjZV9zbGFzaDsKIAkJaW50IGNtcCwgY2VfbGVuOwogCkBAIC03ODksMTMgKzgwMiw2IEBACiAKIAkvKiBOb3cgaGFuZGxlIGFueSBkaXJlY3Rvcmllcy4uICovCiAJaWYgKGRpcm1hc2spIHsKLQkJdW5zaWduZWQgbG9uZyBjb25mbGljdHMgPSBtYXNrICYgfmRpcm1hc2s7Ci0JCWlmIChvLT5tZXJnZSkgewotCQkJY29uZmxpY3RzIDw8PSAxOwotCQkJaWYgKHNyY1swXSkKLQkJCQljb25mbGljdHMgfD0gMTsKLQkJfQotCiAJCS8qIHNwZWNpYWwgY2FzZTogImRpZmYtaW5kZXggLS1jYWNoZWQiIGxvb2tpbmcgYXQgYSB0cmVlICovCiAJCWlmIChvLT5kaWZmX2luZGV4X2NhY2hlZCAmJgogCQkgICAgbiA9PSAxICYmIGRpcm1hc2sgPT0gMSAmJiBTX0lTRElSKG5hbWVzLT5tb2RlKSkgewpAQCAtODE0LDcgKzgyMCw3IEBACiAJCQl9CiAJCX0KIAotCQlpZiAodHJhdmVyc2VfdHJlZXNfcmVjdXJzaXZlKG4sIGRpcm1hc2ssIGNvbmZsaWN0cywKKwkJaWYgKHRyYXZlcnNlX3RyZWVzX3JlY3Vyc2l2ZShuLCBkaXJtYXNrLCBtYXNrICYgfmRpcm1hc2ssCiAJCQkJCSAgICAgbmFtZXMsIGluZm8pIDwgMCkKIAkJCXJldHVybiAtMTsKIAkJcmV0dXJuIG1hc2s7CkBAIC05OTUsNyArMTAwMSw5IEBACiAJCSAgICAgICBzZWxlY3RfZmxhZywgc2tpcF93dF9mbGFnLCBlbCk7CiB9CiAKLXN0YXRpYyBpbnQgdmVyaWZ5X2Fic2VudChzdHJ1Y3QgY2FjaGVfZW50cnkgKiwgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqKTsKK3N0YXRpYyBpbnQgdmVyaWZ5X2Fic2VudChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKiwKKwkJCSBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcywKKwkJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKik7CiAvKgogICogTi13YXkgbWVyZ2UgImxlbiIgdHJlZXMuICBSZXR1cm5zIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZSB0byBtYW5pcHVsYXRlIHRoZQogICogcmVzdWx0aW5nIGluZGV4LCAtMiBvbiBmYWlsdXJlIHRvIHJlZmxlY3QgdGhlIGNoYW5nZXMgdG8gdGhlIHdvcmsgdHJlZS4KQEAgLTExNjUsMTIgKzExNzMsMTMgQEAKIAogLyogSGVyZSBjb21lIHRoZSBtZXJnZSBmdW5jdGlvbnMgKi8KIAotc3RhdGljIGludCByZWplY3RfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCByZWplY3RfbWVyZ2UoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKKwkJCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlyZXR1cm4gYWRkX3JlamVjdGVkX3BhdGgobywgRVJST1JfV09VTERfT1ZFUldSSVRFLCBjZS0+bmFtZSk7CiB9CiAKLXN0YXRpYyBpbnQgc2FtZShzdHJ1Y3QgY2FjaGVfZW50cnkgKmEsIHN0cnVjdCBjYWNoZV9lbnRyeSAqYikKK3N0YXRpYyBpbnQgc2FtZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmEsIGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqYikKIHsKIAlpZiAoISFhICE9ICEhYikKIAkJcmV0dXJuIDA7CkBAIC0xMTg3LDkgKzExOTYsOSBAQAogICogV2hlbiBhIENFIGdldHMgdHVybmVkIGludG8gYW4gdW5tZXJnZWQgZW50cnksIHdlCiAgKiB3YW50IGl0IHRvIGJlIHVwLXRvLWRhdGUKICAqLwotc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfMShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAotCQkJCSAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbywKLQkJCQkgICBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcyBlcnJvcl90eXBlKQorc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGVfMShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8sCisJCQkgICAgIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUpCiB7CiAJc3RydWN0IHN0YXQgc3Q7CiAKQEAgLTEyMjgsNyArMTIzNyw3IEBACiAJCWFkZF9yZWplY3RlZF9wYXRoKG8sIGVycm9yX3R5cGUsIGNlLT5uYW1lKTsKIH0KIAotc3RhdGljIGludCB2ZXJpZnlfdXB0b2RhdGUoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKK3N0YXRpYyBpbnQgdmVyaWZ5X3VwdG9kYXRlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQkgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJaWYgKCFvLT5za2lwX3NwYXJzZV9jaGVja291dCAmJiAoY2UtPmNlX2ZsYWdzICYgQ0VfTkVXX1NLSVBfV09SS1RSRUUpKQpAQCAtMTIzNiwxMyArMTI0NSwxNCBAQAogCXJldHVybiB2ZXJpZnlfdXB0b2RhdGVfMShjZSwgbywgRVJST1JfTk9UX1VQVE9EQVRFX0ZJTEUpOwogfQogCi1zdGF0aWMgaW50IHZlcmlmeV91cHRvZGF0ZV9zcGFyc2Uoc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKK3N0YXRpYyBpbnQgdmVyaWZ5X3VwdG9kYXRlX3NwYXJzZShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAogCQkJCSAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCXJldHVybiB2ZXJpZnlfdXB0b2RhdGVfMShjZSwgbywgRVJST1JfU1BBUlNFX05PVF9VUFRPREFURV9GSUxFKTsKIH0KIAotc3RhdGljIHZvaWQgaW52YWxpZGF0ZV9jZV9wYXRoKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK3N0YXRpYyB2b2lkIGludmFsaWRhdGVfY2VfcGF0aChjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJICAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlpZiAoY2UpCiAJCWNhY2hlX3RyZWVfaW52YWxpZGF0ZV9wYXRoKG8tPnNyY19pbmRleC0+Y2FjaGVfdHJlZSwgY2UtPm5hbWUpOwpAQCAtMTI1NSwxNiArMTI2NSwxNiBAQAogICogQ3VycmVudGx5LCBnaXQgZG9lcyBub3QgY2hlY2tvdXQgc3VicHJvamVjdHMgZHVyaW5nIGEgc3VwZXJwcm9qZWN0CiAgKiBjaGVja291dCwgc28gaXQgaXMgbm90IGdvaW5nIHRvIG92ZXJ3cml0ZSBhbnl0aGluZy4KICAqLwotc3RhdGljIGludCB2ZXJpZnlfY2xlYW5fc3VibW9kdWxlKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCi0JCQkJICAgICAgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKLQkJCQkgICAgICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IHZlcmlmeV9jbGVhbl9zdWJtb2R1bGUoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKKwkJCQkgIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCisJCQkJICBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgdmVyaWZ5X2NsZWFuX3N1YmRpcmVjdG9yeShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAotCQkJCSAgICAgIGVudW0gdW5wYWNrX3RyZWVzX2Vycm9yX3R5cGVzIGVycm9yX3R5cGUsCi0JCQkJICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCB2ZXJpZnlfY2xlYW5fc3ViZGlyZWN0b3J5KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJICAgICBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcyBlcnJvcl90eXBlLAorCQkJCSAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCS8qCiAJICogd2UgYXJlIGFib3V0IHRvIGV4dHJhY3QgImNlLT5uYW1lIjsgd2Ugd291bGQgbm90IHdhbnQgdG8gbG9zZQpAQCAtMTM0MywxOCArMTM1MywxOCBAQAogICovCiBzdGF0aWMgaW50IGljYXNlX2V4aXN0cyhzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8sIGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sIHN0cnVjdCBzdGF0ICpzdCkKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnNyYzsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnNyYzsKIAogCXNyYyA9IGluZGV4X25hbWVfZXhpc3RzKG8tPnNyY19pbmRleCwgbmFtZSwgbGVuLCAxKTsKIAlyZXR1cm4gc3JjICYmICFpZV9tYXRjaF9zdGF0KG8tPnNyY19pbmRleCwgc3JjLCBzdCwgQ0VfTUFUQ0hfSUdOT1JFX1ZBTElEfENFX01BVENIX0lHTk9SRV9TS0lQX1dPUktUUkVFKTsKIH0KIAogc3RhdGljIGludCBjaGVja19va190b19yZW1vdmUoY29uc3QgY2hhciAqbmFtZSwgaW50IGxlbiwgaW50IGR0eXBlLAotCQkJICAgICAgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0LAorCQkJICAgICAgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwgc3RydWN0IHN0YXQgKnN0LAogCQkJICAgICAgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKIAkJCSAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnJlc3VsdDsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKnJlc3VsdDsKIAogCS8qCiAJICogSXQgbWF5IGJlIHRoYXQgdGhlICdsc3RhdCgpJyBzdWNjZWVkZWQgZXZlbiB0aG91Z2gKQEAgLTE0MDUsOSArMTQxNSw5IEBACiAgKiBXZSBkbyBub3Qgd2FudCB0byByZW1vdmUgb3Igb3ZlcndyaXRlIGEgd29ya2luZyB0cmVlIGZpbGUgdGhhdAogICogaXMgbm90IHRyYWNrZWQsIHVubGVzcyBpdCBpcyBpZ25vcmVkLgogICovCi1zdGF0aWMgaW50IHZlcmlmeV9hYnNlbnRfMShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAotCQkJCSBlbnVtIHVucGFja190cmVlc19lcnJvcl90eXBlcyBlcnJvcl90eXBlLAotCQkJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IHZlcmlmeV9hYnNlbnRfMShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJICAgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKKwkJCSAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKIAlpbnQgbGVuOwogCXN0cnVjdCBzdGF0IHN0OwpAQCAtMTQ0MCw3ICsxNDUwLDcgQEAKIAl9CiB9CiAKLXN0YXRpYyBpbnQgdmVyaWZ5X2Fic2VudChzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorc3RhdGljIGludCB2ZXJpZnlfYWJzZW50KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCiAJCQkgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKIAkJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CkBAIC0xNDQ5LDkgKzE0NTksOSBAQAogCXJldHVybiB2ZXJpZnlfYWJzZW50XzEoY2UsIGVycm9yX3R5cGUsIG8pOwogfQogCi1zdGF0aWMgaW50IHZlcmlmeV9hYnNlbnRfc3BhcnNlKHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCi0JCQkgZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKLQkJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IHZlcmlmeV9hYnNlbnRfc3BhcnNlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkJZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgZXJyb3JfdHlwZSwKKwkJCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgb3JwaGFuZWRfZXJyb3IgPSBlcnJvcl90eXBlOwogCWlmIChvcnBoYW5lZF9lcnJvciA9PSBFUlJPUl9XT1VMRF9MT1NFX1VOVFJBQ0tFRF9PVkVSV1JJVFRFTikKQEAgLTE0NjAsMTAgKzE0NzAsMTIgQEAKIAlyZXR1cm4gdmVyaWZ5X2Fic2VudF8xKGNlLCBvcnBoYW5lZF9lcnJvciwgbyk7CiB9CiAKLXN0YXRpYyBpbnQgbWVyZ2VkX2VudHJ5KHN0cnVjdCBjYWNoZV9lbnRyeSAqbWVyZ2UsIHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkLAotCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IG1lcmdlZF9lbnRyeShjb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLAorCQkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQsCisJCQlzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7CiAJaW50IHVwZGF0ZSA9IENFX1VQREFURTsKKwlzdHJ1Y3QgY2FjaGVfZW50cnkgKm1lcmdlID0gZHVwX2VudHJ5KGNlKTsKIAogCWlmICghb2xkKSB7CiAJCS8qCkBAIC0xNDgxLDggKzE0OTMsMTEgQEAKIAkJdXBkYXRlIHw9IENFX0FEREVEOwogCQltZXJnZS0+Y2VfZmxhZ3MgfD0gQ0VfTkVXX1NLSVBfV09SS1RSRUU7CiAKLQkJaWYgKHZlcmlmeV9hYnNlbnQobWVyZ2UsIEVSUk9SX1dPVUxEX0xPU0VfVU5UUkFDS0VEX09WRVJXUklUVEVOLCBvKSkKKwkJaWYgKHZlcmlmeV9hYnNlbnQobWVyZ2UsCisJCQkJICBFUlJPUl9XT1VMRF9MT1NFX1VOVFJBQ0tFRF9PVkVSV1JJVFRFTiwgbykpIHsKKwkJCWZyZWUobWVyZ2UpOwogCQkJcmV0dXJuIC0xOworCQl9CiAJCWludmFsaWRhdGVfY2VfcGF0aChtZXJnZSwgbyk7CiAJfSBlbHNlIGlmICghKG9sZC0+Y2VfZmxhZ3MgJiBDRV9DT05GTElDVEVEKSkgewogCQkvKgpAQCAtMTQ5Niw4ICsxNTExLDEwIEBACiAJCQljb3B5X2NhY2hlX2VudHJ5KG1lcmdlLCBvbGQpOwogCQkJdXBkYXRlID0gMDsKIAkJfSBlbHNlIHsKLQkJCWlmICh2ZXJpZnlfdXB0b2RhdGUob2xkLCBvKSkKKwkJCWlmICh2ZXJpZnlfdXB0b2RhdGUob2xkLCBvKSkgeworCQkJCWZyZWUobWVyZ2UpOwogCQkJCXJldHVybiAtMTsKKwkJCX0KIAkJCS8qIE1pZ3JhdGUgb2xkIGZsYWdzIG92ZXIgKi8KIAkJCXVwZGF0ZSB8PSBvbGQtPmNlX2ZsYWdzICYgKENFX1NLSVBfV09SS1RSRUUgfCBDRV9ORVdfU0tJUF9XT1JLVFJFRSk7CiAJCQlpbnZhbGlkYXRlX2NlX3BhdGgob2xkLCBvKTsKQEAgLTE1MTAsMTIgKzE1MjcsMTMgQEAKIAkJaW52YWxpZGF0ZV9jZV9wYXRoKG9sZCwgbyk7CiAJfQogCi0JYWRkX2VudHJ5KG8sIG1lcmdlLCB1cGRhdGUsIENFX1NUQUdFTUFTSyk7CisJZG9fYWRkX2VudHJ5KG8sIG1lcmdlLCB1cGRhdGUsIENFX1NUQUdFTUFTSyk7CiAJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBpbnQgZGVsZXRlZF9lbnRyeShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZCwKLQkJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQorc3RhdGljIGludCBkZWxldGVkX2VudHJ5KGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqY2UsCisJCQkgY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQsCisJCQkgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCS8qIERpZCBpdCBleGlzdCBpbiB0aGUgaW5kZXg/ICovCiAJaWYgKCFvbGQpIHsKQEAgLTE1MzAsNyArMTU0OCw4IEBACiAJcmV0dXJuIDE7CiB9CiAKLXN0YXRpYyBpbnQga2VlcF9lbnRyeShzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitzdGF0aWMgaW50IGtlZXBfZW50cnkoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSwKKwkJICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQogewogCWFkZF9lbnRyeShvLCBjZSwgMCwgMCk7CiAJcmV0dXJuIDE7CkBAIC0xNTUyLDExICsxNTcxLDEyIEBACiB9CiAjZW5kaWYKIAotaW50IHRocmVld2F5X21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnN0YWdlcywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKQoraW50IHRocmVld2F5X21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzdGFnZXMsCisJCSAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmluZGV4OwotCXN0cnVjdCBjYWNoZV9lbnRyeSAqaGVhZDsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKnJlbW90ZSA9IHN0YWdlc1tvLT5oZWFkX2lkeCArIDFdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqaW5kZXg7CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpoZWFkOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqcmVtb3RlID0gc3RhZ2VzW28tPmhlYWRfaWR4ICsgMV07CiAJaW50IGNvdW50OwogCWludCBoZWFkX21hdGNoID0gMDsKIAlpbnQgcmVtb3RlX21hdGNoID0gMDsKQEAgLTE2NDEsNyArMTY2MSw3IEBACiAJaWYgKG8tPmFnZ3Jlc3NpdmUpIHsKIAkJaW50IGhlYWRfZGVsZXRlZCA9ICFoZWFkOwogCQlpbnQgcmVtb3RlX2RlbGV0ZWQgPSAhcmVtb3RlOwotCQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmNlID0gTlVMTDsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IE5VTEw7CiAKIAkJaWYgKGluZGV4KQogCQkJY2UgPSBpbmRleDsKQEAgLTE3MjQsMTEgKzE3NDQsMTIgQEAKICAqICJjYXJyeSBmb3J3YXJkIiBydWxlLCBwbGVhc2Ugc2VlIDxEb2N1bWVudGF0aW9uL2dpdC1yZWFkLXRyZWUudHh0Pi4KICAqCiAgKi8KLWludCB0d293YXlfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3JjLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitpbnQgdHdvd2F5X21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpjdXJyZW50ID0gc3JjWzBdOwotCXN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkdHJlZSA9IHNyY1sxXTsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKm5ld3RyZWUgPSBzcmNbMl07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjdXJyZW50ID0gc3JjWzBdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkdHJlZSA9IHNyY1sxXTsKKwljb25zdCBzdHJ1Y3QgY2FjaGVfZW50cnkgKm5ld3RyZWUgPSBzcmNbMl07CiAKIAlpZiAoby0+bWVyZ2Vfc2l6ZSAhPSAyKQogCQlyZXR1cm4gZXJyb3IoIkNhbm5vdCBkbyBhIHR3b3dheSBtZXJnZSBvZiAlZCB0cmVlcyIsCkBAIC0xNzkwLDExICsxODExLDExIEBACiAgKiBLZWVwIHRoZSBpbmRleCBlbnRyaWVzIGF0IHN0YWdlMCwgY29sbGFwc2Ugc3RhZ2UxIGJ1dCBtYWtlIHN1cmUKICAqIHN0YWdlMCBkb2VzIG5vdCBoYXZlIGFueXRoaW5nIHRoZXJlLgogICovCi1pbnQgYmluZF9tZXJnZShzdHJ1Y3QgY2FjaGVfZW50cnkgKipzcmMsCi0JCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKK2ludCBiaW5kX21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJICAgICAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbykKIHsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKm9sZCA9IHNyY1swXTsKLQlzdHJ1Y3QgY2FjaGVfZW50cnkgKmEgPSBzcmNbMV07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQgPSBzcmNbMF07CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICphID0gc3JjWzFdOwogCiAJaWYgKG8tPm1lcmdlX3NpemUgIT0gMSkKIAkJcmV0dXJuIGVycm9yKCJDYW5ub3QgZG8gYSBiaW5kIG1lcmdlIG9mICVkIHRyZWVzIiwKQEAgLTE4MTQsMTAgKzE4MzUsMTEgQEAKICAqIFRoZSBydWxlIGlzOgogICogLSB0YWtlIHRoZSBzdGF0IGluZm9ybWF0aW9uIGZyb20gc3RhZ2UwLCB0YWtlIHRoZSBkYXRhIGZyb20gc3RhZ2UxCiAgKi8KLWludCBvbmV3YXlfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3JjLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCitpbnQgb25ld2F5X21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pCiB7Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICpvbGQgPSBzcmNbMF07Ci0Jc3RydWN0IGNhY2hlX2VudHJ5ICphID0gc3JjWzFdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqb2xkID0gc3JjWzBdOworCWNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqYSA9IHNyY1sxXTsKIAogCWlmIChvLT5tZXJnZV9zaXplICE9IDEpCiAJCXJldHVybiBlcnJvcigiQ2Fubm90IGRvIGEgb25ld2F5IG1lcmdlIG9mICVkIHRyZWVzIiwKZGlmZiAtLWdpdCBhL3VucGFjay10cmVlcy5oIGIvdW5wYWNrLXRyZWVzLmgKaW5kZXggNWU0MzJmNS4uMzZhNzNhNiAxMDA2NDQKLS0tIGEvdW5wYWNrLXRyZWVzLmgKKysrIGIvdW5wYWNrLXRyZWVzLmgKQEAgLTgsNyArOCw3IEBACiBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnM7CiBzdHJ1Y3QgZXhjbHVkZV9saXN0OwogCi10eXBlZGVmIGludCAoKm1lcmdlX2ZuX3QpKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnNyYywKK3R5cGVkZWYgaW50ICgqbWVyZ2VfZm5fdCkoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKnNyYywKIAkJc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvcHRpb25zKTsKIAogZW51bSB1bnBhY2tfdHJlZXNfZXJyb3JfdHlwZXMgewpAQCAtNzcsOSArNzcsMTMgQEAKIGV4dGVybiBpbnQgdW5wYWNrX3RyZWVzKHVuc2lnbmVkIG4sIHN0cnVjdCB0cmVlX2Rlc2MgKnQsCiAJCXN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqb3B0aW9ucyk7CiAKLWludCB0aHJlZXdheV9tZXJnZShzdHJ1Y3QgY2FjaGVfZW50cnkgKipzdGFnZXMsIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7Ci1pbnQgdHdvd2F5X21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnNyYywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKTsKLWludCBiaW5kX21lcmdlKHN0cnVjdCBjYWNoZV9lbnRyeSAqKnNyYywgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKTsKLWludCBvbmV3YXlfbWVyZ2Uoc3RydWN0IGNhY2hlX2VudHJ5ICoqc3JjLCBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworaW50IHRocmVld2F5X21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzdGFnZXMsCisJCSAgIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7CitpbnQgdHdvd2F5X21lcmdlKGNvbnN0IHN0cnVjdCBjYWNoZV9lbnRyeSAqIGNvbnN0ICpzcmMsCisJCSBzdHJ1Y3QgdW5wYWNrX3RyZWVzX29wdGlvbnMgKm8pOworaW50IGJpbmRfbWVyZ2UoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKnNyYywKKwkgICAgICAgc3RydWN0IHVucGFja190cmVlc19vcHRpb25zICpvKTsKK2ludCBvbmV3YXlfbWVyZ2UoY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICogY29uc3QgKnNyYywKKwkJIHN0cnVjdCB1bnBhY2tfdHJlZXNfb3B0aW9ucyAqbyk7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvdXRmOC5oIGIvdXRmOC5oCmluZGV4IDMyYTdiZmIuLjY1ZDBlNDIgMTAwNjQ0Ci0tLSBhL3V0ZjguaAorKysgYi91dGY4LmgKQEAgLTEwLDYgKzEwLDcgQEAKIGludCBpc191dGY4KGNvbnN0IGNoYXIgKnRleHQpOwogaW50IGlzX2VuY29kaW5nX3V0ZjgoY29uc3QgY2hhciAqbmFtZSk7CiBpbnQgc2FtZV9lbmNvZGluZyhjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CitfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgMiwgMykpKQogaW50IHV0ZjhfZnByaW50ZihGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKTsKIAogdm9pZCBzdHJidWZfYWRkX3dyYXBwZWRfdGV4dChzdHJ1Y3Qgc3RyYnVmICpidWYsCmRpZmYgLS1naXQgYS93cmFwLWZvci1iaW4uc2ggYi93cmFwLWZvci1iaW4uc2gKaW5kZXggNTNhOGRkMC4uNzAxZDIzMyAxMDA2NDQKLS0tIGEvd3JhcC1mb3ItYmluLnNoCisrKyBiL3dyYXAtZm9yLWJpbi5zaApAQCAtMTQsNyArMTQsNyBAQAogCUdJVF9URU1QTEFURV9ESVI9J0BAQlVJTERfRElSQEAvdGVtcGxhdGVzL2JsdCcKIAlleHBvcnQgR0lUX1RFTVBMQVRFX0RJUgogZmkKLUdJVFBFUkxMSUI9J0BAQlVJTERfRElSQEAvcGVybC9ibGliL2xpYicKK0dJVFBFUkxMSUI9J0BAQlVJTERfRElSQEAvcGVybC9ibGliL2xpYiciJHtHSVRQRVJMTElCOis6JEdJVFBFUkxMSUJ9IgogR0lUX1RFWFRET01BSU5ESVI9J0BAQlVJTERfRElSQEAvcG8vYnVpbGQvbG9jYWxlJwogUEFUSD0nQEBCVUlMRF9ESVJAQC9iaW4td3JhcHBlcnM6JyIkUEFUSCIKIGV4cG9ydCBHSVRfRVhFQ19QQVRIIEdJVFBFUkxMSUIgUEFUSCBHSVRfVEVYVERPTUFJTkRJUgpkaWZmIC0tZ2l0IGEvd3JhcHBlci5jIGIvd3JhcHBlci5jCmluZGV4IGRkN2VjYmIuLjZhMDE1ZGUgMTAwNjQ0Ci0tLSBhL3dyYXBwZXIuYworKysgYi93cmFwcGVyLmMKQEAgLTMyMiw3ICszMjIsNyBAQAogCQl0ZW1wbGF0ZVs1XSA9IGxldHRlcnNbdiAlIG51bV9sZXR0ZXJzXTsgdiAvPSBudW1fbGV0dGVyczsKIAogCQlmZCA9IG9wZW4ocGF0dGVybiwgT19DUkVBVCB8IE9fRVhDTCB8IE9fUkRXUiwgbW9kZSk7Ci0JCWlmIChmZCA+IDApCisJCWlmIChmZCA+PSAwKQogCQkJcmV0dXJuIGZkOwogCQkvKgogCQkgKiBGYXRhbCBlcnJvciAoRVBFUk0sIEVOT1NQQyBldGMpLgpkaWZmIC0tZ2l0IGEvd3Qtc3RhdHVzLmMgYi93dC1zdGF0dXMuYwppbmRleCBiZjg0YTg2Li5jYjI0ZjFmIDEwMDY0NAotLS0gYS93dC1zdGF0dXMuYworKysgYi93dC1zdGF0dXMuYwpAQCAtMTI3LDYgKzEyNyw3IEBACiAJcy0+Y2hhbmdlLnN0cmR1cF9zdHJpbmdzID0gMTsKIAlzLT51bnRyYWNrZWQuc3RyZHVwX3N0cmluZ3MgPSAxOwogCXMtPmlnbm9yZWQuc3RyZHVwX3N0cmluZ3MgPSAxOworCXMtPnNob3dfYnJhbmNoID0gLTE7ICAvKiB1bnNwZWNpZmllZCAqLwogfQogCiBzdGF0aWMgdm9pZCB3dF9zdGF0dXNfcHJpbnRfdW5tZXJnZWRfaGVhZGVyKHN0cnVjdCB3dF9zdGF0dXMgKnMpCkBAIC0yNDMsNyArMjQ0LDcgQEAKIAlzdHJ1Y3Qgc3RyYnVmIG9uZWJ1ZiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKm9uZSwgKmhvdyA9IF8oImJ1ZyIpOwogCi0Jb25lID0gcXVvdGVfcGF0aChpdC0+c3RyaW5nLCAtMSwgJm9uZWJ1Ziwgcy0+cHJlZml4KTsKKwlvbmUgPSBxdW90ZV9wYXRoKGl0LT5zdHJpbmcsIHMtPnByZWZpeCwgJm9uZWJ1Zik7CiAJc3RhdHVzX3ByaW50ZihzLCBjb2xvcihXVF9TVEFUVVNfSEVBREVSLCBzKSwgIlx0Iik7CiAJc3dpdGNoIChkLT5zdGFnZW1hc2spIHsKIAljYXNlIDE6IGhvdyA9IF8oImJvdGggZGVsZXRlZDoiKTsgYnJlYWs7CkBAIC0yOTcsOCArMjk4LDggQEAKIAkJICAgIGNoYW5nZV90eXBlKTsKIAl9CiAKLQlvbmUgPSBxdW90ZV9wYXRoKG9uZV9uYW1lLCAtMSwgJm9uZWJ1Ziwgcy0+cHJlZml4KTsKLQl0d28gPSBxdW90ZV9wYXRoKHR3b19uYW1lLCAtMSwgJnR3b2J1Ziwgcy0+cHJlZml4KTsKKwlvbmUgPSBxdW90ZV9wYXRoKG9uZV9uYW1lLCBzLT5wcmVmaXgsICZvbmVidWYpOworCXR3byA9IHF1b3RlX3BhdGgodHdvX25hbWUsIHMtPnByZWZpeCwgJnR3b2J1Zik7CiAKIAlzdGF0dXNfcHJpbnRmKHMsIGNvbG9yKFdUX1NUQVRVU19IRUFERVIsIHMpLCAiXHQiKTsKIAlzd2l0Y2ggKHN0YXR1cykgewpAQCAtMzcxLDcgKzM3Miw3IEBACiBzdGF0aWMgaW50IHVubWVyZ2VkX21hc2soY29uc3QgY2hhciAqcGF0aCkKIHsKIAlpbnQgcG9zLCBtYXNrOwotCXN0cnVjdCBjYWNoZV9lbnRyeSAqY2U7CisJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZTsKIAogCXBvcyA9IGNhY2hlX25hbWVfcG9zKHBhdGgsIHN0cmxlbihwYXRoKSk7CiAJaWYgKDAgPD0gcG9zKQpAQCAtNDc1LDcgKzQ3Niw3IEBACiAJZm9yIChpID0gMDsgaSA8IGFjdGl2ZV9ucjsgaSsrKSB7CiAJCXN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdDsKIAkJc3RydWN0IHd0X3N0YXR1c19jaGFuZ2VfZGF0YSAqZDsKLQkJc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKKwkJY29uc3Qgc3RydWN0IGNhY2hlX2VudHJ5ICpjZSA9IGFjdGl2ZV9jYWNoZVtpXTsKIAogCQlpZiAoIWNlX3BhdGhfbWF0Y2goY2UsICZwYXRoc3BlYykpCiAJCQljb250aW51ZTsKQEAgLTcwNiw4ICs3MDcsNyBAQAogCQlzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqaXQ7CiAJCWNvbnN0IGNoYXIgKnBhdGg7CiAJCWl0ID0gJihsLT5pdGVtc1tpXSk7Ci0JCXBhdGggPSBxdW90ZV9wYXRoKGl0LT5zdHJpbmcsIHN0cmxlbihpdC0+c3RyaW5nKSwKLQkJCQkgICZidWYsIHMtPnByZWZpeCk7CisJCXBhdGggPSBxdW90ZV9wYXRoKGl0LT5zdHJpbmcsIHMtPnByZWZpeCwgJmJ1Zik7CiAJCWlmIChjb2x1bW5fYWN0aXZlKHMtPmNvbG9wdHMpKSB7CiAJCQlzdHJpbmdfbGlzdF9hcHBlbmQoJm91dHB1dCwgcGF0aCk7CiAJCQljb250aW51ZTsKQEAgLTgyNiw3ICs4MjYsNyBAQAogCWlmIChhZHZpY2Vfc3RhdHVzX2hpbnRzKSB7CiAJCWlmICghc3RhdGUtPmFtX2VtcHR5X3BhdGNoKQogCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKLQkJCQlfKCIgIChmaXggY29uZmxpY3RzIGFuZCB0aGVuIHJ1biBcImdpdCBhbSAtLXJlc29sdmVkXCIpIikpOworCQkJCV8oIiAgKGZpeCBjb25mbGljdHMgYW5kIHRoZW4gcnVuIFwiZ2l0IGFtIC0tY29udGludWVcIikiKSk7CiAJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCiAJCQlfKCIgICh1c2UgXCJnaXQgYW0gLS1za2lwXCIgdG8gc2tpcCB0aGlzIHBhdGNoKSIpKTsKIAkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKQEAgLTk1NSwxMCArOTU1LDEyIEBACiAJaWYgKGFkdmljZV9zdGF0dXNfaGludHMpIHsKIAkJaWYgKGhhc191bm1lcmdlZChzKSkKIAkJCXN0YXR1c19wcmludGZfbG4ocywgY29sb3IsCi0JCQkJXygiICAoZml4IGNvbmZsaWN0cyBhbmQgcnVuIFwiZ2l0IGNvbW1pdFwiKSIpKTsKKwkJCQlfKCIgIChmaXggY29uZmxpY3RzIGFuZCBydW4gXCJnaXQgY2hlcnJ5LXBpY2sgLS1jb250aW51ZVwiKSIpKTsKIAkJZWxzZQogCQkJc3RhdHVzX3ByaW50Zl9sbihzLCBjb2xvciwKLQkJCQlfKCIgIChhbGwgY29uZmxpY3RzIGZpeGVkOiBydW4gXCJnaXQgY29tbWl0XCIpIikpOworCQkJCV8oIiAgKGFsbCBjb25mbGljdHMgZml4ZWQ6IHJ1biBcImdpdCBjaGVycnktcGljayAtLWNvbnRpbnVlXCIpIikpOworCQlzdGF0dXNfcHJpbnRmX2xuKHMsIGNvbG9yLAorCQkJXygiICAodXNlIFwiZ2l0IGNoZXJyeS1waWNrIC0tYWJvcnRcIiB0byBjYW5jZWwgdGhlIGNoZXJyeS1waWNrIG9wZXJhdGlvbikiKSk7CiAJfQogCXd0X3N0YXR1c19wcmludF90cmFpbGVyKHMpOwogfQpAQCAtMTAzNSw3ICsxMDM3LDYgQEAKIH0KIAogc3RydWN0IGdyYWJfMXN0X3N3aXRjaF9jYmRhdGEgewotCWludCBmb3VuZDsKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZjsKIAl1bnNpZ25lZCBjaGFyIG5zaGExWzIwXTsKIH07CkBAIC0xMDU5LDcgKzEwNjAsNiBAQAogCWZvciAoZW5kID0gdGFyZ2V0OyAqZW5kICYmICplbmQgIT0gJ1xuJzsgZW5kKyspCiAJCTsKIAlzdHJidWZfYWRkKCZjYi0+YnVmLCB0YXJnZXQsIGVuZCAtIHRhcmdldCk7Ci0JY2ItPmZvdW5kID0gMTsKIAlyZXR1cm4gMTsKIH0KIApAQCAtMTE3Niw3ICsxMTc2LDEwIEBACiAJCQlicmFuY2hfbmFtZSArPSAxMTsKIAkJZWxzZSBpZiAoIXN0cmNtcChicmFuY2hfbmFtZSwgIkhFQUQiKSkgewogCQkJYnJhbmNoX3N0YXR1c19jb2xvciA9IGNvbG9yKFdUX1NUQVRVU19OT0JSQU5DSCwgcyk7Ci0JCQlpZiAoc3RhdGUuZGV0YWNoZWRfZnJvbSkgeworCQkJaWYgKHN0YXRlLnJlYmFzZV9pbl9wcm9ncmVzcyB8fCBzdGF0ZS5yZWJhc2VfaW50ZXJhY3RpdmVfaW5fcHJvZ3Jlc3MpIHsKKwkJCQlvbl93aGF0ID0gXygicmViYXNlIGluIHByb2dyZXNzOyBvbnRvICIpOworCQkJCWJyYW5jaF9uYW1lID0gc3RhdGUub250bzsKKwkJCX0gZWxzZSBpZiAoc3RhdGUuZGV0YWNoZWRfZnJvbSkgewogCQkJCXVuc2lnbmVkIGNoYXIgc2hhMVsyMF07CiAJCQkJYnJhbmNoX25hbWUgPSBzdGF0ZS5kZXRhY2hlZF9mcm9tOwogCQkJCWlmICghZ2V0X3NoYTEoIkhFQUQiLCBzaGExKSAmJgpAQCAtMTI4OSw3ICsxMjkyLDcgQEAKIAl9IGVsc2UgewogCQlzdHJ1Y3Qgc3RyYnVmIG9uZWJ1ZiA9IFNUUkJVRl9JTklUOwogCQljb25zdCBjaGFyICpvbmU7Ci0JCW9uZSA9IHF1b3RlX3BhdGgoaXQtPnN0cmluZywgLTEsICZvbmVidWYsIHMtPnByZWZpeCk7CisJCW9uZSA9IHF1b3RlX3BhdGgoaXQtPnN0cmluZywgcy0+cHJlZml4LCAmb25lYnVmKTsKIAkJcHJpbnRmKCIgJXNcbiIsIG9uZSk7CiAJCXN0cmJ1Zl9yZWxlYXNlKCZvbmVidWYpOwogCX0KQEAgLTEzMTcsNyArMTMyMCw3IEBACiAJCXN0cnVjdCBzdHJidWYgb25lYnVmID0gU1RSQlVGX0lOSVQ7CiAJCWNvbnN0IGNoYXIgKm9uZTsKIAkJaWYgKGQtPmhlYWRfcGF0aCkgewotCQkJb25lID0gcXVvdGVfcGF0aChkLT5oZWFkX3BhdGgsIC0xLCAmb25lYnVmLCBzLT5wcmVmaXgpOworCQkJb25lID0gcXVvdGVfcGF0aChkLT5oZWFkX3BhdGgsIHMtPnByZWZpeCwgJm9uZWJ1Zik7CiAJCQlpZiAoKm9uZSAhPSAnIicgJiYgc3RyY2hyKG9uZSwgJyAnKSAhPSBOVUxMKSB7CiAJCQkJcHV0Y2hhcignIicpOwogCQkJCXN0cmJ1Zl9hZGRjaCgmb25lYnVmLCAnIicpOwpAQCAtMTMyNiw3ICsxMzI5LDcgQEAKIAkJCXByaW50ZigiJXMgLT4gIiwgb25lKTsKIAkJCXN0cmJ1Zl9yZWxlYXNlKCZvbmVidWYpOwogCQl9Ci0JCW9uZSA9IHF1b3RlX3BhdGgoaXQtPnN0cmluZywgLTEsICZvbmVidWYsIHMtPnByZWZpeCk7CisJCW9uZSA9IHF1b3RlX3BhdGgoaXQtPnN0cmluZywgcy0+cHJlZml4LCAmb25lYnVmKTsKIAkJaWYgKCpvbmUgIT0gJyInICYmIHN0cmNocihvbmUsICcgJykgIT0gTlVMTCkgewogCQkJcHV0Y2hhcignIicpOwogCQkJc3RyYnVmX2FkZGNoKCZvbmVidWYsICciJyk7CkBAIC0xMzQ1LDcgKzEzNDgsNyBAQAogCX0gZWxzZSB7CiAJCXN0cnVjdCBzdHJidWYgb25lYnVmID0gU1RSQlVGX0lOSVQ7CiAJCWNvbnN0IGNoYXIgKm9uZTsKLQkJb25lID0gcXVvdGVfcGF0aChpdC0+c3RyaW5nLCAtMSwgJm9uZWJ1Ziwgcy0+cHJlZml4KTsKKwkJb25lID0gcXVvdGVfcGF0aChpdC0+c3RyaW5nLCBzLT5wcmVmaXgsICZvbmVidWYpOwogCQljb2xvcl9mcHJpbnRmKHMtPmZwLCBjb2xvcihXVF9TVEFUVVNfVU5UUkFDS0VELCBzKSwgIiVzIiwgc2lnbik7CiAJCXByaW50ZigiICVzXG4iLCBvbmUpOwogCQlzdHJidWZfcmVsZWFzZSgmb25lYnVmKTsKZGlmZiAtLWdpdCBhL3d0LXN0YXR1cy5oIGIvd3Qtc3RhdHVzLmgKaW5kZXggNDEyMWJjMi4uZmI3MTUyZSAxMDA2NDQKLS0tIGEvd3Qtc3RhdHVzLmgKKysrIGIvd3Qtc3RhdHVzLmgKQEAgLTk2LDkgKzk2LDkgQEAKIHZvaWQgd3Rfc2hvcnRzdGF0dXNfcHJpbnQoc3RydWN0IHd0X3N0YXR1cyAqcyk7CiB2b2lkIHd0X3BvcmNlbGFpbl9wcmludChzdHJ1Y3Qgd3Rfc3RhdHVzICpzKTsKIAotdm9pZCBzdGF0dXNfcHJpbnRmX2xuKHN0cnVjdCB3dF9zdGF0dXMgKnMsIGNvbnN0IGNoYXIgKmNvbG9yLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLQk7Ci12b2lkIHN0YXR1c19wcmludGYoc3RydWN0IHd0X3N0YXR1cyAqcywgY29uc3QgY2hhciAqY29sb3IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotCTsKK19fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpCit2b2lkIHN0YXR1c19wcmludGZfbG4oc3RydWN0IHd0X3N0YXR1cyAqcywgY29uc3QgY2hhciAqY29sb3IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKK19fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCAzLCA0KSkpCit2b2lkIHN0YXR1c19wcmludGYoc3RydWN0IHd0X3N0YXR1cyAqcywgY29uc3QgY2hhciAqY29sb3IsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKIAogI2VuZGlmIC8qIFNUQVRVU19IICovCmRpZmYgLS1naXQgYS94ZGlmZi94ZGlmZi5oIGIveGRpZmYveGRpZmYuaAppbmRleCAyMTlhM2JiLi5jMDMzOTkxIDEwMDY0NAotLS0gYS94ZGlmZi94ZGlmZi5oCisrKyBiL3hkaWZmL3hkaWZmLmgKQEAgLTM5LDYgKzM5LDggQEAKICNkZWZpbmUgWERGX0RJRkZfQUxHT1JJVEhNX01BU0sgKFhERl9QQVRJRU5DRV9ESUZGIHwgWERGX0hJU1RPR1JBTV9ESUZGKQogI2RlZmluZSBYREZfRElGRl9BTEcoeCkgKCh4KSAmIFhERl9ESUZGX0FMR09SSVRITV9NQVNLKQogCisjZGVmaW5lIFhERl9JR05PUkVfQkxBTktfTElORVMgKDEgPDwgNykKKwogI2RlZmluZSBYRExfRU1JVF9GVU5DTkFNRVMgKDEgPDwgMCkKICNkZWZpbmUgWERMX0VNSVRfQ09NTU9OICgxIDw8IDEpCiAjZGVmaW5lIFhETF9FTUlUX0ZVTkNDT05URVhUICgxIDw8IDIpCmRpZmYgLS1naXQgYS94ZGlmZi94ZGlmZmkuYyBiL3hkaWZmL3hkaWZmaS5jCmluZGV4IGIyZWI2ZGIuLjIzNThhMmQgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hkaWZmaS5jCisrKyBiL3hkaWZmL3hkaWZmaS5jCkBAIC0zOTQsNiArMzk0LDcgQEAKIAl4Y2gtPmkyID0gaTI7CiAJeGNoLT5jaGcxID0gY2hnMTsKIAl4Y2gtPmNoZzIgPSBjaGcyOworCXhjaC0+aWdub3JlID0gMDsKIAogCXJldHVybiB4Y2g7CiB9CkBAIC01NDQsNyArNTQ1LDkgQEAKIAl4ZGNoYW5nZV90ICp4Y2gsICp4Y2hlOwogCiAJZm9yICh4Y2ggPSB4c2NyOyB4Y2g7IHhjaCA9IHhjaGUtPm5leHQpIHsKLQkJeGNoZSA9IHhkbF9nZXRfaHVuayh4Y2gsIHhlY2ZnKTsKKwkJeGNoZSA9IHhkbF9nZXRfaHVuaygmeGNoLCB4ZWNmZyk7CisJCWlmICgheGNoKQorCQkJYnJlYWs7CiAJCWlmICh4ZWNmZy0+aHVua19mdW5jKHhjaC0+aTEsIHhjaGUtPmkxICsgeGNoZS0+Y2hnMSAtIHhjaC0+aTEsCiAJCQkJICAgICB4Y2gtPmkyLCB4Y2hlLT5pMiArIHhjaGUtPmNoZzIgLSB4Y2gtPmkyLAogCQkJCSAgICAgZWNiLT5wcml2KSA8IDApCkBAIC01NTMsNiArNTU2LDI3IEBACiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyB2b2lkIHhkbF9tYXJrX2lnbm9yYWJsZSh4ZGNoYW5nZV90ICp4c2NyLCB4ZGZlbnZfdCAqeGUsIGxvbmcgZmxhZ3MpCit7CisJeGRjaGFuZ2VfdCAqeGNoOworCisJZm9yICh4Y2ggPSB4c2NyOyB4Y2g7IHhjaCA9IHhjaC0+bmV4dCkgeworCQlpbnQgaWdub3JlID0gMTsKKwkJeHJlY29yZF90ICoqcmVjOworCQlsb25nIGk7CisKKwkJcmVjID0gJnhlLT54ZGYxLnJlY3NbeGNoLT5pMV07CisJCWZvciAoaSA9IDA7IGkgPCB4Y2gtPmNoZzEgJiYgaWdub3JlOyBpKyspCisJCQlpZ25vcmUgPSB4ZGxfYmxhbmtsaW5lKHJlY1tpXS0+cHRyLCByZWNbaV0tPnNpemUsIGZsYWdzKTsKKworCQlyZWMgPSAmeGUtPnhkZjIucmVjc1t4Y2gtPmkyXTsKKwkJZm9yIChpID0gMDsgaSA8IHhjaC0+Y2hnMiAmJiBpZ25vcmU7IGkrKykKKwkJCWlnbm9yZSA9IHhkbF9ibGFua2xpbmUocmVjW2ldLT5wdHIsIHJlY1tpXS0+c2l6ZSwgZmxhZ3MpOworCisJCXhjaC0+aWdub3JlID0gaWdub3JlOworCX0KK30KKwogaW50IHhkbF9kaWZmKG1tZmlsZV90ICptZjEsIG1tZmlsZV90ICptZjIsIHhwcGFyYW1fdCBjb25zdCAqeHBwLAogCSAgICAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZywgeGRlbWl0Y2JfdCAqZWNiKSB7CiAJeGRjaGFuZ2VfdCAqeHNjcjsKQEAgLTU3MSw2ICs1OTUsOSBAQAogCQlyZXR1cm4gLTE7CiAJfQogCWlmICh4c2NyKSB7CisJCWlmICh4cHAtPmZsYWdzICYgWERGX0lHTk9SRV9CTEFOS19MSU5FUykKKwkJCXhkbF9tYXJrX2lnbm9yYWJsZSh4c2NyLCAmeGUsIHhwcC0+ZmxhZ3MpOworCiAJCWlmIChlZigmeGUsIHhzY3IsIGVjYiwgeGVjZmcpIDwgMCkgewogCiAJCQl4ZGxfZnJlZV9zY3JpcHQoeHNjcik7CmRpZmYgLS1naXQgYS94ZGlmZi94ZGlmZmkuaCBiL3hkaWZmL3hkaWZmaS5oCmluZGV4IDdhOTJlYTkuLjhiODEyMDYgMTAwNjQ0Ci0tLSBhL3hkaWZmL3hkaWZmaS5oCisrKyBiL3hkaWZmL3hkaWZmaS5oCkBAIC00MSw2ICs0MSw3IEBACiAJc3RydWN0IHNfeGRjaGFuZ2UgKm5leHQ7CiAJbG9uZyBpMSwgaTI7CiAJbG9uZyBjaGcxLCBjaGcyOworCWludCBpZ25vcmU7CiB9IHhkY2hhbmdlX3Q7CiAKIApkaWZmIC0tZ2l0IGEveGRpZmYveGVtaXQuYyBiL3hkaWZmL3hlbWl0LmMKaW5kZXggZDExZGJmOS4uNGQ4NjQ1OCAxMDA2NDQKLS0tIGEveGRpZmYveGVtaXQuYworKysgYi94ZGlmZi94ZW1pdC5jCkBAIC01NiwxNiArNTYsNTEgQEAKIC8qCiAgKiBTdGFydGluZyBhdCB0aGUgcGFzc2VkIGNoYW5nZSBhdG9tLCBmaW5kIHRoZSBsYXRlc3QgY2hhbmdlIGF0b20gdG8gYmUgaW5jbHVkZWQKICAqIGluc2lkZSB0aGUgZGlmZmVyZW50aWFsIGh1bmsgYWNjb3JkaW5nIHRvIHRoZSBzcGVjaWZpZWQgY29uZmlndXJhdGlvbi4KKyAqIEFsc28gYWR2YW5jZSB4c2NyIGlmIHRoZSBmaXJzdCBjaGFuZ2VzIG11c3QgYmUgZGlzY2FyZGVkLgogICovCi14ZGNoYW5nZV90ICp4ZGxfZ2V0X2h1bmsoeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZykgewotCXhkY2hhbmdlX3QgKnhjaCwgKnhjaHA7Cit4ZGNoYW5nZV90ICp4ZGxfZ2V0X2h1bmsoeGRjaGFuZ2VfdCAqKnhzY3IsIHhkZW1pdGNvbmZfdCBjb25zdCAqeGVjZmcpCit7CisJeGRjaGFuZ2VfdCAqeGNoLCAqeGNocCwgKmx4Y2g7CiAJbG9uZyBtYXhfY29tbW9uID0gMiAqIHhlY2ZnLT5jdHhsZW4gKyB4ZWNmZy0+aW50ZXJodW5rY3R4bGVuOworCWxvbmcgbWF4X2lnbm9yYWJsZSA9IHhlY2ZnLT5jdHhsZW47CisJdW5zaWduZWQgbG9uZyBpZ25vcmVkID0gMDsgLyogbnVtYmVyIG9mIGlnbm9yZWQgYmxhbmsgbGluZXMgKi8KIAotCWZvciAoeGNocCA9IHhzY3IsIHhjaCA9IHhzY3ItPm5leHQ7IHhjaDsgeGNocCA9IHhjaCwgeGNoID0geGNoLT5uZXh0KQotCQlpZiAoeGNoLT5pMSAtICh4Y2hwLT5pMSArIHhjaHAtPmNoZzEpID4gbWF4X2NvbW1vbikKKwkvKiByZW1vdmUgaWdub3JhYmxlIGNoYW5nZXMgdGhhdCBhcmUgdG9vIGZhciBiZWZvcmUgb3RoZXIgY2hhbmdlcyAqLworCWZvciAoeGNocCA9ICp4c2NyOyB4Y2hwICYmIHhjaHAtPmlnbm9yZTsgeGNocCA9IHhjaHAtPm5leHQpIHsKKwkJeGNoID0geGNocC0+bmV4dDsKKworCQlpZiAoeGNoID09IE5VTEwgfHwKKwkJICAgIHhjaC0+aTEgLSAoeGNocC0+aTEgKyB4Y2hwLT5jaGcxKSA+PSBtYXhfaWdub3JhYmxlKQorCQkJKnhzY3IgPSB4Y2g7CisJfQorCisJaWYgKCp4c2NyID09IE5VTEwpCisJCXJldHVybiBOVUxMOworCisJbHhjaCA9ICp4c2NyOworCisJZm9yICh4Y2hwID0gKnhzY3IsIHhjaCA9IHhjaHAtPm5leHQ7IHhjaDsgeGNocCA9IHhjaCwgeGNoID0geGNoLT5uZXh0KSB7CisJCWxvbmcgZGlzdGFuY2UgPSB4Y2gtPmkxIC0gKHhjaHAtPmkxICsgeGNocC0+Y2hnMSk7CisJCWlmIChkaXN0YW5jZSA+IG1heF9jb21tb24pCiAJCQlicmVhazsKIAotCXJldHVybiB4Y2hwOworCQlpZiAoZGlzdGFuY2UgPCBtYXhfaWdub3JhYmxlICYmICgheGNoLT5pZ25vcmUgfHwgbHhjaCA9PSB4Y2hwKSkgeworCQkJbHhjaCA9IHhjaDsKKwkJCWlnbm9yZWQgPSAwOworCQl9IGVsc2UgaWYgKGRpc3RhbmNlIDwgbWF4X2lnbm9yYWJsZSAmJiB4Y2gtPmlnbm9yZSkgeworCQkJaWdub3JlZCArPSB4Y2gtPmNoZzI7CisJCX0gZWxzZSBpZiAobHhjaCAhPSB4Y2hwICYmCisJCQkgICB4Y2gtPmkxICsgaWdub3JlZCAtIChseGNoLT5pMSArIGx4Y2gtPmNoZzEpID4gbWF4X2NvbW1vbikgeworCQkJYnJlYWs7CisJCX0gZWxzZSBpZiAoIXhjaC0+aWdub3JlKSB7CisJCQlseGNoID0geGNoOworCQkJaWdub3JlZCA9IDA7CisJCX0gZWxzZSB7CisJCQlpZ25vcmVkICs9IHhjaC0+Y2hnMjsKKwkJfQorCX0KKworCXJldHVybiBseGNoOwogfQogCiAKQEAgLTEzOSw3ICsxNzQsOSBAQAogCQlyZXR1cm4geGRsX2VtaXRfY29tbW9uKHhlLCB4c2NyLCBlY2IsIHhlY2ZnKTsKIAogCWZvciAoeGNoID0geHNjcjsgeGNoOyB4Y2ggPSB4Y2hlLT5uZXh0KSB7Ci0JCXhjaGUgPSB4ZGxfZ2V0X2h1bmsoeGNoLCB4ZWNmZyk7CisJCXhjaGUgPSB4ZGxfZ2V0X2h1bmsoJnhjaCwgeGVjZmcpOworCQlpZiAoIXhjaCkKKwkJCWJyZWFrOwogCiAJCXMxID0gWERMX01BWCh4Y2gtPmkxIC0geGVjZmctPmN0eGxlbiwgMCk7CiAJCXMyID0gWERMX01BWCh4Y2gtPmkyIC0geGVjZmctPmN0eGxlbiwgMCk7CmRpZmYgLS1naXQgYS94ZGlmZi94ZW1pdC5oIGIveGRpZmYveGVtaXQuaAppbmRleCBjMmUyZTgzLi5kMjk3MTA3IDEwMDY0NAotLS0gYS94ZGlmZi94ZW1pdC5oCisrKyBiL3hkaWZmL3hlbWl0LmgKQEAgLTI3LDcgKzI3LDcgQEAKIHR5cGVkZWYgaW50ICgqZW1pdF9mdW5jX3QpKHhkZmVudl90ICp4ZSwgeGRjaGFuZ2VfdCAqeHNjciwgeGRlbWl0Y2JfdCAqZWNiLAogCQkJICAgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZyk7CiAKLXhkY2hhbmdlX3QgKnhkbF9nZXRfaHVuayh4ZGNoYW5nZV90ICp4c2NyLCB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKTsKK3hkY2hhbmdlX3QgKnhkbF9nZXRfaHVuayh4ZGNoYW5nZV90ICoqeHNjciwgeGRlbWl0Y29uZl90IGNvbnN0ICp4ZWNmZyk7CiBpbnQgeGRsX2VtaXRfZGlmZih4ZGZlbnZfdCAqeGUsIHhkY2hhbmdlX3QgKnhzY3IsIHhkZW1pdGNiX3QgKmVjYiwKIAkJICB4ZGVtaXRjb25mX3QgY29uc3QgKnhlY2ZnKTsKIApkaWZmIC0tZ2l0IGEveGRpZmYveHV0aWxzLmMgYi94ZGlmZi94dXRpbHMuYwppbmRleCA5NTA0ZWFlLi42MmNiMjNkIDEwMDY0NAotLS0gYS94ZGlmZi94dXRpbHMuYworKysgYi94ZGlmZi94dXRpbHMuYwpAQCAtMTQzLDYgKzE0MywxOSBAQAogCXJldHVybiBubCArIDE7CiB9CiAKK2ludCB4ZGxfYmxhbmtsaW5lKGNvbnN0IGNoYXIgKmxpbmUsIGxvbmcgc2l6ZSwgbG9uZyBmbGFncykKK3sKKwlsb25nIGk7CisKKwlpZiAoIShmbGFncyAmIFhERl9XSElURVNQQUNFX0ZMQUdTKSkKKwkJcmV0dXJuIChzaXplIDw9IDEpOworCisJZm9yIChpID0gMDsgaSA8IHNpemUgJiYgWERMX0lTU1BBQ0UobGluZVtpXSk7IGkrKykKKwkJOworCisJcmV0dXJuIChpID09IHNpemUpOworfQorCiBpbnQgeGRsX3JlY21hdGNoKGNvbnN0IGNoYXIgKmwxLCBsb25nIHMxLCBjb25zdCBjaGFyICpsMiwgbG9uZyBzMiwgbG9uZyBmbGFncykKIHsKIAlpbnQgaTEsIGkyOwpkaWZmIC0tZ2l0IGEveGRpZmYveHV0aWxzLmggYi94ZGlmZi94dXRpbHMuaAppbmRleCBhZDE0MjhlLi40NjQ2Y2U1IDEwMDY0NAotLS0gYS94ZGlmZi94dXRpbHMuaAorKysgYi94ZGlmZi94dXRpbHMuaApAQCAtMzIsNiArMzIsNyBAQAogdm9pZCB4ZGxfY2hhX2ZyZWUoY2hhc3RvcmVfdCAqY2hhKTsKIHZvaWQgKnhkbF9jaGFfYWxsb2MoY2hhc3RvcmVfdCAqY2hhKTsKIGxvbmcgeGRsX2d1ZXNzX2xpbmVzKG1tZmlsZV90ICptZiwgbG9uZyBzYW1wbGUpOworaW50IHhkbF9ibGFua2xpbmUoY29uc3QgY2hhciAqbGluZSwgbG9uZyBzaXplLCBsb25nIGZsYWdzKTsKIGludCB4ZGxfcmVjbWF0Y2goY29uc3QgY2hhciAqbDEsIGxvbmcgczEsIGNvbnN0IGNoYXIgKmwyLCBsb25nIHMyLCBsb25nIGZsYWdzKTsKIHVuc2lnbmVkIGxvbmcgeGRsX2hhc2hfcmVjb3JkKGNoYXIgY29uc3QgKipkYXRhLCBjaGFyIGNvbnN0ICp0b3AsIGxvbmcgZmxhZ3MpOwogdW5zaWduZWQgaW50IHhkbF9oYXNoYml0cyh1bnNpZ25lZCBpbnQgc2l6ZSk7Cg==