Profile: cf28f563...
It's important to note that just because an email has a valid-looking "MAIL FROM" address, it does not necessarily mean that the email is legitimate or trustworthy. Email spoofing is a common tactic used in phishing and spam attacks, where the attacker manipulates the "MAIL FROM" and "From" headers to make the email appear to come from a legitimate source.
test
data:application/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPnZpZGVvMjAwPC90aXRsZT4KICAgIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDFlbTsKICAgICAgZm9udC1mYW1pbHk6IE5vdG8gU2FuczsKICAgIH0KICAgIGgxIHsKICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgZm9udC1zaXplOiAxLjVlbTsKICAgIH0KICAgICNkZXNjcmlwdGlvbiwKICAgICN0b3JfdGVzdCB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29sb3I6ICM2NjY7CiAgICAgIGxlZnQ6IDE0ZW07CiAgICAgIG1hcmdpbi10b3A6IC4xNGVtOwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgIH0KICAgICN0b3JfdGVzdCB7CiAgICAgIHRvcDogNWVtOwogICAgfQogICAgI3Rvcl90ZXN0LnN1Y2Nlc3MgewogICAgICBjb2xvcjogZ3JlZW47CiAgICB9CiAgICAjdG9yX3Rlc3QuZXJyb3IgewogICAgICBjb2xvcjogeWVsbG93OwogICAgICBiYWNrZ3JvdW5kOiBibGFjazsKICAgIH0KICAgICN0b3JfdGVzdC50ZXN0X2ZhaWwgewogICAgICBjb2xvcjogb3JhbmdlOwogICAgfQogICAgI2xvZyB7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMWVtOwogICAgICB0b3A6IDExZW07CiAgICAgIGJvcmRlcjogLjNlbSBzb2xpZCAjNjY2OwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgICByaWdodDogMWVtOwogICAgICBsZWZ0OiAxZW07CiAgICAgIHBhZGRpbmc6IC41ZW07CiAgICAgIGJhY2tncm91bmQ6ICNlZWU7CiAgICB9CiAgICAjcHJvZ3Jlc3MgewogICAgICBiYWNrZ3JvdW5kOiAjZGRkOwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgfQogICAgI3Byb2dyZXNzYmFyIHsKICAgICAgaGVpZ2h0OiAxLjNlbTsKICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgICAgd2lkdGg6IDAlOwogICAgICBib3JkZXItcmFkaXVzOiAuNGVtOwogICAgfQogICAgI2xvZyA+IGEgewogICAgICBtYXJnaW4tYm90dG9tOiAxZW07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgcCB7CiAgICAgIG1hcmdpbjogMCAwIC41ZW0gMDsKICAgIH0KICAgIHZpZGVvIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgei1pbmRleDogMTsKICAgIH0KICAgICNjYW52YXMsCiAgICB2aWRlbyB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAxZW07CiAgICAgIHJpZ2h0OiAxZW07CiAgICAgIHdpZHRoOiAxMGVtOwogICAgICBoZWlnaHQ6IDZlbTsKICAgIH0KICAgIC5jb2RlIHsKICAgICAgYmFja2dyb3VuZDogI2JiYjsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+Y3JlYXRlIG9uZSBzZWNvbmQgdmlkZW8gY2xpcHMgaW4gYnJvd3NlcjwvcD4KICAgIDxwIGlkPSJ0b3JfdGVzdCI+dG9yIHRlc3Q8L3A+CiAgICA8aDE+dmlkZW8yMDA8L2gxPgogICAgPGZvcm0gaWQ9ImZvcm0iPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9ImZpbGUiIHR5cGU9ImZpbGUiLz4KICAgICAgPC9wPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iZW5jb2RlIiBkaXNhYmxlZD0iMSIgLz4KICAgICAgICA8YnV0dG9uIGlkPSJwdWJsaXNoIiBkaXNhYmxlZD0iMSI+cHVibGlzaDwvYnV0dG9uPgogICAgICA8L3A+CiAgICA8L2Zvcm0+CiAgICA8dmlkZW8gaWQ9InZpZGVvIj48L3ZpZGVvPgogICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGNvbnRyb2xzIGxvb3A9IjEiPjwvdmlkZW8+CiAgICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgogICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgogICAgICA8ZGl2IGlkPSJwcm9ncmVzc2JhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImxvZyI+PGRpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9ub3N0ci10b29sc0AyLjEuNC9saWIvbm9zdHIuYnVuZGxlLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIj4KICAgIGNvbnN0IGFwcF91cmwgPSAiaHR0cDovL2Fnemo1YTRiZTNrZ3A2eXVyaWprNHE3cG0yeWg0YTVucGhkZzR6b3prMzY1eWlyZjdhaHVjdHlkLm9uaW9uIgogICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpCiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKQogICAgY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpCiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpCiAgICBjb25zdCB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIikKICAgIGNvbnN0IHByb2dyZXNzYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzYmFyIikKICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpCiAgICBjb25zdCBtYXhfcHVibGlzaF9zaXplID0gMjYyMTQ0CiAgICBsZXQgZmlsZXMgPSBudWxsCiAgICBsZXQgdmlkZW9fZGF0YV91cmkgPSBudWxsCiAgICBjb25zdCB0b3JfaXBfbGlzdF91cmwgPSAiaHR0cHM6Ly9kZW1vLnN0b3JqLWlwZnMuY29tL2lwZnMvUW1lb0R3aWM5UWpFblhYWG5jSnZqS2l0ek5CUWJLS3hTY1dBbzRKZzV2OTd0SiIKCiAgICBjb25zdCByZWxheXMgPSBbCiAgICAgICJ3czovL294dHJkZXZhdjY0ejY0eWI3eDZyamc0bnR6cWpoZWRtNWI1empxdWx1Z2tuaHpyNDZueTJxYmFkLm9uaW9uIgogICAgXQoKICAgIGNvbnN0IHJlbGF5c19jbGVhcndlYiA9IFsKICAgICAgIndzczovL25vc3RyLnNlbGYtZGV0ZXJtaW5lZC5kZSIKICAgIF0KCiAgICBjb25zdCBldnRfcmVsYXlzID0gWwogICAgICAuLi5yZWxheXMsCiAgICAgICJ3c3M6Ly9yZWxheS5ub3N0ci5iYW5kIgogICAgXQoKICAgIGNvbnN0IGZyYW1lX2R1cmF0aW9uID0gMS8zMAogICAgY29uc3QgZXh0cmFjdF9mcmFtZV9jb3VudCA9IDMwCiAgICBsZXQgdGltZSA9IG51bGwKCiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBmZXRjaCgKICAgICAgImh0dHBzOi8vdW5wa2cuY29tL3dlYm0td2FzbUAwLjQuMS9kaXN0L3dlYm0td29ya2VyLmpzIgogICAgKS50aGVuKHIgPT4gci5hcnJheUJ1ZmZlcigpKQoKICAgIGxldCB3b3JrZXIgPSBudWxsCiAgICBsZXQgZW5jb2RlZF9kYXRhID0gbnVsbAogICAgbGV0IHN0YXJ0X3RpbWUgPSBudWxsCiAgICBsZXQgcmVhZHkgPSBmYWxzZQogICAgbGV0IHZpZGVvX2V2dCA9IG51bGwKICAgIGxldCBub3RlX2V2dCA9IG51bGwKICAgIGxldCBzb2NrZXRzID0gW10KCiAgICBpbmZvKCJjb25uZWN0IikKCiAgICBmdW5jdGlvbiBjb25uZWN0KHJlbGF5cyl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgc29ja2V0cy5wdXNoKC4uLnJlbGF5cy5tYXAociA9PiBuZXcgV2ViU29ja2V0KHIpKSkKCiAgICAgICAgZm9yKGxldCBzb2NrZXQgb2Ygc29ja2V0cyl7CiAgICAgICAgICBzb2NrZXQub25vcGVuID0gYXN5bmMgZnVuY3Rpb24oKXsKICAgICAgICAgICAgaW5mbygiY29ubmVjdGVkICIgKyB0aGlzLnVybCkKICAgICAgICAgICAgLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLmRpc2FibGVkID0gIiIKCiAgICAgICAgICAgIGlmKCFzb2NrZXRzLmZpbmQocyA9PiBzLnJlYWR5U3RhdGUgPT0gMCkpewogICAgICAgICAgICAgIGluZm8oImNvbm5lY3RlZCB0byAiICsgc29ja2V0cy5maWx0ZXIocyA9PiBzLnJlYWR5U3RhdGUgPT0gMSkubGVuZ3RoICsgIiByZWxheXMiKQogICAgICAgICAgICAgIHJlc29sdmUoKQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uKGUpewogICAgICAgICAgICBjb25zdCByZXMgPSBKU09OLnBhcnNlKGUuZGF0YSkKICAgICAgICAgICAgY29uc3QgZXJyb3IgPSAocmVzWzBdID09ICJOT1RJQ0UiICYmIHJlc1sxXSkgfHwgKHJlc1syXSA9PT0gZmFsc2UgJiYgcmVzWzNdKQoKICAgICAgICAgICAgaWYoZXJyb3IpewogICAgICAgICAgICAgIGluZm8oZXJyb3IgKyAiICgiICsgdGhpcy51cmwgKyAiKSIpCiAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihyZXNbMF0gPT0gIk9LIil7CiAgICAgICAgICAgICAgaWYocmVzWzFdID09IHZpZGVvX2V2dC5pZCl7CiAgICAgICAgICAgICAgICBpbmZvKCJwdWJsaXNoIGtpbmQgMSBub3RlIikKICAgICAgICAgICAgICAgIHRoaXMuc2VuZChKU09OLnN0cmluZ2lmeShbIkVWRU5UIiwgbm90ZV9ldnRdKSkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZihyZXNbMV0gPT0gbm90ZV9ldnQuaWQpewogICAgICAgICAgICAgICAgY29uc3QgbmV2ZW50ID0gbWFrZV9uZXZlbnQobm90ZV9ldnQpCiAgICAgICAgICAgICAgICBpbmZvKG1ha2VfbGluayhhcHBfdXJsICsgIi8iICsgbmV2ZW50KSkKICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGluZm8oImNvdWxkIG5vdCBjb25uZWN0IHRvICIgKyB0aGlzLnVybCkKCiAgICAgICAgICAgIGlmKCFzb2NrZXRzLmZpbmQocyA9PiBzLnJlYWR5U3RhdGUgPT0gMCB8fCBzLnJlYWR5U3RhdGUgPT0gMSkpewogICAgICAgICAgICAgIGluZm8oImNvdWxkIG5vdCBjb25uZWN0IHRvIGFueSByZWxheS4gaGF2ZSB5b3Ugc2V0IHVwIHRvciBpbiB5b3VyIGJyb3dzZXIgcHJveHkgc2V0dGluZ3M/IikKICAgICAgICAgICAgICByZWplY3QoKQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgc29ja2V0LmNsb3NlID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgaW5mbygiY29ubmVjdGlvbiBjbG9zZWQ6ICIgKyB0aGlzLnVybCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm0iKS5yZXNldCgpCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJmb3JtIGlucHV0LCBmb3JtIGJ1dHRvbiIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSAiMSIpCgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5vbmNoYW5nZSA9IGZ1bmN0aW9uKCl7CiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKS5mb3JFYWNoKGVsID0+IGVsLmRpc2FibGVkID0gZmFsc2UpCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2giKS5vbmNsaWNrID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZQogICAgICBwdWJsaXNoKCkKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVfdmlkZW9fZXZ0KHZpZGVvX2RhdGFfdXJpLCBzayl7CiAgICAgIHJldHVybiBOb3N0clRvb2xzLmZpbmFsaXplRXZlbnQoewogICAgICAgIGtpbmQ6IDEwNjMsCiAgICAgICAgY3JlYXRlZF9hdDogcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwLCAxMCksCiAgICAgICAgY29udGVudDogInZpZGVvIiwKICAgICAgICB0YWdzOiBbCiAgICAgICAgICBbInVybCIsIHZpZGVvX2RhdGFfdXJpXSwKICAgICAgICAgIFsibSIsICJ2aWRlby93ZWJtIl0KICAgICAgICBdCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VfbmV2ZW50KGV2dCl7CiAgICAgIGNvbnN0IG5ldmVudF9vYmogPSBPYmplY3QuY3JlYXRlKGV2dCkKICAgICAgbmV2ZW50X29iai5yZWxheXMgPSBldnRfcmVsYXlzCiAgICAgIHJldHVybiBOb3N0clRvb2xzLm5pcDE5Lm5ldmVudEVuY29kZShuZXZlbnRfb2JqKQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKXsKICAgICAgY29uc3QgdmlkZW9fbmV2ZW50ID0gbWFrZV9uZXZlbnQodmlkZW9fZXZ0KQoKICAgICAgcmV0dXJuIE5vc3RyVG9vbHMuZmluYWxpemVFdmVudCh7CiAgICAgICAga2luZDogMSwKICAgICAgICBjcmVhdGVkX2F0OiBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsIDEwKSwKICAgICAgICBjb250ZW50OiAidmlkZW9cbm5vc3RyOiIgKyB2aWRlb19uZXZlbnQsCiAgICAgICAgdGFnczogW10sCiAgICAgICAgcmVsYXlzOiBldnRfcmVsYXlzCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2goKXsKICAgICAgc29ja2V0cy5zcGxpY2UoMCkKCiAgICAgIGluZm8oImNvbm5lY3QgdG8gdG9yIHJlbGF5cyIpCiAgICAgIGF3YWl0IGNvbm5lY3QocmVsYXlzKQoKICAgICAgaWYoY2hlY2tfdG9yKCkpewogICAgICAgIGluZm8oImNvbm5lY3QgdG8gY2xlYXJ3ZWIgcmVsYXlzIHRocm91Z2ggdG9yIikKICAgICAgICBhd2FpdCBjb25uZWN0KHJlbGF5c19jbGVhcndlYikKICAgICAgfQoKICAgICAgZm9yKGxldCBzb2NrZXQgb2Ygc29ja2V0cyl7CiAgICAgICAgaWYoc29ja2V0LnJlYWR5U3RhdGUgPT09IDEpewogICAgICAgICAgaW5mbygicHVibGlzaCBraW5kIDEwNjMgZXZlbnQgdG8gIiArIHJlbGF5c1swXSkKICAgICAgICAgIHNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KFsiRVZFTlQiLCB2aWRlb19ldnRdKSkKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB2aWRlbzIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgdmlkZW8yLnBhdXNlKCkKICAgICAgcHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSAiMC41JSIKICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSB0cnVlKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikudmFsdWUgPSAiZW5jb2RpbmciCiAgICAgIGZpbGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5maWxlcwogICAgICBzdGFydCgpCiAgICB9CgogICAgZnVuY3Rpb24gYmxvYlRvRGF0YVVSTChibG9iLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgdmFyIGEgPSBuZXcgRmlsZVJlYWRlcigpCiAgICAgICAgYS5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICByZXNvbHZlKGUudGFyZ2V0LnJlc3VsdCkKICAgICAgICB9CiAgICAgICAgYS5yZWFkQXNEYXRhVVJMKGJsb2IpCiAgICAgIH0pCiAgICB9CgogICAgZnVuY3Rpb24gaW5mbyhkYXRhKXsKICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikKCiAgICAgIGlmKHR5cGVvZiBkYXRhID09ICJzdHJpbmciKXsKICAgICAgICBlbC5pbm5lclRleHQgPSBkYXRhCiAgICAgIH1lbHNlewogICAgICAgIGVsLmFwcGVuZChkYXRhKQogICAgICB9CgogICAgICBsb2cuYXBwZW5kKGVsKQogICAgICBsb2cuc2Nyb2xsVG8oMCwgMWU2KQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NfdmlkZW8oKXsKICAgICAgaW5mbygicHJvY2VzcyB2aWRlbyIpCiAgICAgIGxldCBmcmFtZV9jb3VudCA9IDAKCiAgICAgIHZpZGVvLm9uc2Vla2VkID0gZnVuY3Rpb24oZSkgewogICAgICAgIGZyYW1lX2NvdW50KysKICAgICAgICBpbmZvKCJleHRyYWN0IGZyYW1lICIgKyBmcmFtZV9jb3VudCArICIgLyAiICsgZXh0cmFjdF9mcmFtZV9jb3VudCkKCiAgICAgICAgY3R4LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKICAgICAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgaWYoZnJhbWVfY291bnQgPCBleHRyYWN0X2ZyYW1lX2NvdW50KXsKICAgICAgICAgIHRpbWUgKz0gZnJhbWVfZHVyYXRpb24KICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCgwLCAodGltZSA8IDAgPyB0aGlzLmR1cmF0aW9uIDogMCkgKyB0aW1lKSwgdGhpcy5kdXJhdGlvbikKICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShpbWFnZURhdGEuZGF0YS5idWZmZXIsIFtpbWFnZURhdGEuZGF0YS5idWZmZXJdKQogICAgICAgIH1lbHNlewogICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKG51bGwpCiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdG90YWxfdGltZShzdGFydCl7CiAgICAgIHJldHVybiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydCkgLyAxMDAwCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlQnVmZmVyVVJMKGJ1ZmZlciwgdHlwZSA9ICcnKSB7CiAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtidWZmZXJdLCB7dHlwZX0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYWtlX2xpbmsodGV4dCwgaHJlZil7CiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKICAgICAgbGluay5pbm5lclRleHQgPSB0ZXh0CiAgICAgIGxpbmsuaHJlZiA9IGhyZWYgfHwgdGV4dAogICAgICByZXR1cm4gbGluawogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHNob3dfZGF0YV91cmkoYmxvYil7CiAgICAgIGxldCBibG9iX3VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikKICAgICAgdmlkZW9fZGF0YV91cmkgPSBhd2FpdCBibG9iVG9EYXRhVVJMKGJsb2IpCgogICAgICBpbmZvKCJlbmNvZGluZyBmaW5pc2hlZCAoc2l6ZTogIiArIChwYXJzZUludChibG9iLnNpemUgLyAxMDAsIDEwKSAvIDEwKSArICIga0IsIGJhc2U2NCBzaXplOiAiICsgdmlkZW9fZGF0YV91cmkubGVuZ3RoICsgIiBCLCBkdXJhdGlvbjogIiArIChwYXJzZUludCh0b3RhbF90aW1lKHN0YXJ0X3RpbWUpICogMTAsIDEwKSAvIDEwKSArCiAgICAgICAgICAgICIgcywgc3BlZWQ6ICIgKyAocGFyc2VJbnQodG90YWxfdGltZShzdGFydF90aW1lKSAvIGV4dHJhY3RfZnJhbWVfY291bnQgKiAxMCwgMTApIC8gMTApICArIiBzIC8gZnJhbWUpIikKCiAgICAgIGluZm8obWFrZV9saW5rKGJsb2JfdXJsKSkKCiAgICAgIGlmKHZpZGVvX2RhdGFfdXJpLmxlbmd0aCA+IG1heF9wdWJsaXNoX3NpemUpewogICAgICAgIGluZm8oImV2ZW50IGlzIHRvbyBiaWcgdG8gcHVibGlzaCIpCiAgICAgICAgaW5mbygibWF4IHNpemU6ICIgKyBtYXhfcHVibGlzaF9zaXplICsgIiBCIikKICAgICAgfWVsc2V7CiAgICAgICAgY29uc3Qgc2sgPSBOb3N0clRvb2xzLmdlbmVyYXRlU2VjcmV0S2V5KCkKICAgICAgICB2aWRlb19ldnQgPSBjcmVhdGVfdmlkZW9fZXZ0KHZpZGVvX2RhdGFfdXJpLCBzaykKICAgICAgICBub3RlX2V2dCA9IGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKQogICAgICAgIHdpbmRvdy52aWRlb19ldnQgPSB2aWRlb19ldnQKICAgICAgICB3aW5kb3cubm90ZV9ldnQgPSBub3RlX2V2dAogICAgICB9CgogICAgICB2aWRlbzIuc3JjID0gYmxvYl91cmwKICAgICAgdmlkZW8yLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICB2aWRlbzIucGxheSgpCgogICAgICBwcm9ncmVzc2Jhci5zdHlsZS53aWR0aCA9ICIxMDAlIgogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLnJlc2V0KCkKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Ym1pdCIpLnZhbHVlID0gImVuY29kZSIKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5kaXNhYmxlZCA9IGZhbHNlCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdWJsaXNoIikuZGlzYWJsZWQgPSBmYWxzZQogICAgfQoKICAgIGZ1bmN0aW9uIHdvcmtlcl9tZXNzYWdlKGUpewogICAgICBpZighZS5kYXRhKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSAhPSBudWxsICYmIHR5cGVvZiBlLmRhdGEgPT0gIm9iamVjdCIgJiYgZS5kYXRhLmJ5dGVMZW5ndGggPiAwKXsKICAgICAgICBlbmNvZGVkX2RhdGEucHVzaChlLmRhdGEpCiAgICAgICAgaW5mbygiZW5jb2RlICIgKyBlbmNvZGVkX2RhdGEubGVuZ3RoICsgIiAvICIgKyBleHRyYWN0X2ZyYW1lX2NvdW50KQogICAgICAgIHByb2dyZXNzYmFyLnN0eWxlLndpZHRoID0gcGFyc2VJbnQoKGVuY29kZWRfZGF0YS5sZW5ndGggLyBleHRyYWN0X2ZyYW1lX2NvdW50KSAqIDEwMCwgMTApICsgIiUiCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSA9PSAiUkVBRFkiKXsKICAgICAgICBpbmZvKCJyZWFkeSIsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsKICAgICAgICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCiAgICAgICAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCiAgICAgICAgICByZWFsdGltZTogdHJ1ZSwKICAgICAgICAgIGJpdHJhdGU6IDIwMAogICAgICAgIH0pCgogICAgICAgIHJlYWR5ID0gdHJ1ZQogICAgICAgIHByb2Nlc3NfdmlkZW8oKQogICAgICB9CiAgICAgIGVsc2UgaWYocmVhZHkpewogICAgICAgIGlmKGUuZGF0YS5ieXRlTGVuZ3RoID09IDApewogICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCiAgICAgICAgICByZWFkeSA9IGZhbHNlCiAgICAgICAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKGVuY29kZWRfZGF0YSwgeyB0eXBlOiAndmlkZW8vd2VibScgfSkKICAgICAgICAgIHNob3dfZGF0YV91cmkoYmxvYikKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkX3ZpZGVvKCl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlc1swXSkKCiAgICAgICAgdmlkZW8ub25lcnJvciA9IGZ1bmN0aW9uKGUpewogICAgICAgICAgcmVqZWN0KGUpCiAgICAgICAgfQoKICAgICAgICB2aWRlby5vbmxvYWRlZG1ldGFkYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBjYW52YXMud2lkdGggPSAxMjgwCiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQgLyB2aWRlby52aWRlb1dpZHRoICogY2FudmFzLndpZHRoCiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgKHRpbWUgPCAwID8gdGhpcy5kdXJhdGlvbiA6IDApICsgdGltZSksIHRoaXMuZHVyYXRpb24pCiAgICAgICAgICByZXNvbHZlKCkKICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tfdG9yKCl7CiAgICAgIGxldCBteV9pcCA9IG51bGwKCiAgICAgIHRyeXsKICAgICAgICBteV9pcCA9IGF3YWl0IChhd2FpdCBmZXRjaCgiaHR0cDovL2FwaS5pcGlmeS5vcmciKSkudGV4dCgpCiAgICAgICAgY29uc3QgaXBfbGlzdCA9IGF3YWl0IChhd2FpdCBmZXRjaCh0b3JfaXBfbGlzdF91cmwpKS50ZXh0KCkKICAgICAgICBjb25zdCB0b3JfdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3JfdGVzdCIpCgogICAgICAgIHJldHVybiBbaXBfbGlzdC5pbmRleE9mKG15X2lwKSAhPT0gLTEsIG15X2lwXQogICAgICB9Y2F0Y2goZSl7CiAgICAgICAgcmV0dXJuIFtudWxsLCBteV9pcF0KICAgICAgfQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZV90b3Jfc3RhdHVzKCl7CiAgICAgIHRvcl90ZXN0LmlubmVySFRNTCA9ICJjaGVja2luZyB0b3IiCiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNoZWNrX3RvcigpCgogICAgICBpZihyZXNbMF0gPT09IHRydWUpewogICAgICAgIGluZm8oImlwOiAiICsgcmVzWzFdICsgIiBpcyBrbm93biB0b3IgZXhpdCBub2RlIikKICAgICAgICB0b3JfdGVzdC5pbm5lckhUTUwgPSAidG9yIG9rIgogICAgICAgIHRvcl90ZXN0LmNsYXNzTGlzdC5hZGQoInN1Y2Nlc3MiKQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlIikuZGlzYWJsZWQgPSBmYWxzZQogICAgICB9ZWxzZSBpZihyZXNbMF0gPT09IGZhbHNlKXsKICAgICAgICBpbmZvKCJ5b3VyIGlwOiAiICsgcmVzWzFdKQogICAgICAgIHRvcl90ZXN0LmlubmVySFRNTCA9ICJ5b3UgYXJlIG5vdCB1c2luZyB0b3IiCiAgICAgICAgdG9yX3Rlc3QuY2xhc3NMaXN0LmFkZCgiZXJyb3IiKQogICAgICB9ZWxzZXsKICAgICAgICB0b3JfdGVzdC5pbm5lckhUTUwgPSAidGVzdCBmYWlsZWQgKHlvdSBtYXkgYmUgdXNpbmcgdG9yKSIKICAgICAgICB0b3JfdGVzdC5jbGFzc0xpc3QuYWRkKCJ0ZXN0X2ZhaWwiKQogICAgICB9CiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKXsKICAgICAgaW5mbygic3RhcnQiKQogICAgICB3b3JrZXIgPSBuZXcgV29ya2VyKAogICAgICAgIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogInRleHQvamF2YXNjcmlwdCIgfSkpCiAgICAgICkKCiAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSB3b3JrZXJfbWVzc2FnZQogICAgICBlbmNvZGVkX2RhdGEgPSBbXQogICAgICBub3RlX2V2dCA9IG51bGwKICAgICAgc3RhcnRfdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpCiAgICAgIHRpbWUgPSAxNQoKICAgICAgdHJ5ewogICAgICAgIGF3YWl0IGxvYWRfdmlkZW8oKQogICAgICB9Y2F0Y2goZSl7CiAgICAgICAgaW5mbygidW5zdXBwb3J0ZWQgbWVkaWEgZm9ybWF0LiB0cnkgaDI2NCAobXA0KSwgdnA4ICh3ZWJtKSBvciB2cDkgKHdlYm0pIikKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgaW5mbygiZG93bmxvYWQgd2VibS13YXNtLndhc20iKQogICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImh0dHBzOi8vdW5wa2cuY29tL3dlYm0td2FzbUAwLjQuMS9kaXN0L3dlYm0td2FzbS53YXNtIikKICAgIH0KCiAgICB1cGRhdGVfdG9yX3N0YXR1cygpCiAgICA8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4K
video200
data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPnZpZGVvMjAwPC90aXRsZT4KICAgIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDFlbTsKICAgICAgZm9udC1mYW1pbHk6IE5vdG8gU2FuczsKICAgIH0KICAgIGgxIHsKICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgZm9udC1zaXplOiAxLjVlbTsKICAgIH0KICAgICNkZXNjcmlwdGlvbiwKICAgICN0b3JfdGVzdCB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29sb3I6ICM2NjY7CiAgICAgIGxlZnQ6IDE0ZW07CiAgICAgIG1hcmdpbi10b3A6IC4xNGVtOwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgIH0KICAgICN0b3JfdGVzdCB7CiAgICAgIHRvcDogNWVtOwogICAgfQogICAgI3Rvcl90ZXN0LnN1Y2Nlc3MgewogICAgICBjb2xvcjogZ3JlZW47CiAgICB9CiAgICAjdG9yX3Rlc3QuZXJyb3IgewogICAgICBjb2xvcjogeWVsbG93OwogICAgICBiYWNrZ3JvdW5kOiBibGFjazsKICAgIH0KICAgICN0b3JfdGVzdC50ZXN0X2ZhaWwgewogICAgICBjb2xvcjogb3JhbmdlOwogICAgfQogICAgI2xvZyB7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMWVtOwogICAgICB0b3A6IDExZW07CiAgICAgIGJvcmRlcjogLjNlbSBzb2xpZCAjNjY2OwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgICByaWdodDogMWVtOwogICAgICBsZWZ0OiAxZW07CiAgICAgIHBhZGRpbmc6IC41ZW07CiAgICAgIGJhY2tncm91bmQ6ICNlZWU7CiAgICB9CiAgICAjcHJvZ3Jlc3MgewogICAgICBiYWNrZ3JvdW5kOiAjZGRkOwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgfQogICAgI3Byb2dyZXNzYmFyIHsKICAgICAgaGVpZ2h0OiAxLjNlbTsKICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgICAgd2lkdGg6IDAlOwogICAgICBib3JkZXItcmFkaXVzOiAuNGVtOwogICAgfQogICAgI2xvZyA+IGEgewogICAgICBtYXJnaW4tYm90dG9tOiAxZW07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgcCB7CiAgICAgIG1hcmdpbjogMCAwIC41ZW0gMDsKICAgIH0KICAgIHZpZGVvIHsKICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgei1pbmRleDogMTsKICAgIH0KICAgICNjYW52YXMsCiAgICB2aWRlbyB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgdG9wOiAxZW07CiAgICAgIHJpZ2h0OiAxZW07CiAgICAgIHdpZHRoOiAxMGVtOwogICAgICBoZWlnaHQ6IDZlbTsKICAgIH0KICAgIC5jb2RlIHsKICAgICAgYmFja2dyb3VuZDogI2JiYjsKICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CiAgICA8L3N0eWxlPgogIDwvaGVhZD4KICA8Ym9keT4KICAgIDxwIGlkPSJkZXNjcmlwdGlvbiI+Y3JlYXRlIG9uZSBzZWNvbmQgdmlkZW8gY2xpcHMgaW4gYnJvd3NlcjwvcD4KICAgIDxwIGlkPSJ0b3JfdGVzdCI+dG9yIHRlc3Q8L3A+CiAgICA8aDE+dmlkZW8yMDA8L2gxPgogICAgPGZvcm0gaWQ9ImZvcm0iPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9ImZpbGUiIHR5cGU9ImZpbGUiLz4KICAgICAgPC9wPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iZW5jb2RlIiBkaXNhYmxlZD0iMSIgLz4KICAgICAgICA8YnV0dG9uIGlkPSJwdWJsaXNoIiBkaXNhYmxlZD0iMSI+cHVibGlzaDwvYnV0dG9uPgogICAgICA8L3A+CiAgICA8L2Zvcm0+CiAgICA8dmlkZW8gaWQ9InZpZGVvIj48L3ZpZGVvPgogICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGNvbnRyb2xzIGxvb3A9IjEiPjwvdmlkZW8+CiAgICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgogICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgogICAgICA8ZGl2IGlkPSJwcm9ncmVzc2JhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImxvZyI+PGRpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9ub3N0ci10b29sc0AyLjEuNC9saWIvbm9zdHIuYnVuZGxlLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0ibW9kdWxlIj4KICAgIGNvbnN0IGFwcF91cmwgPSAiaHR0cDovL2Fnemo1YTRiZTNrZ3A2eXVyaWprNHE3cG0yeWg0YTVucGhkZzR6b3prMzY1eWlyZjdhaHVjdHlkLm9uaW9uIgogICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpCiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKQogICAgY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpCiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpCiAgICBjb25zdCB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIikKICAgIGNvbnN0IHByb2dyZXNzYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzYmFyIikKICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpCiAgICBjb25zdCBtYXhfcHVibGlzaF9zaXplID0gMjYyMTQ0CiAgICBsZXQgZmlsZXMgPSBudWxsCiAgICBsZXQgdmlkZW9fZGF0YV91cmkgPSBudWxsCiAgICBjb25zdCB0b3JfaXBfbGlzdF91cmwgPSAiaHR0cHM6Ly9kZW1vLnN0b3JqLWlwZnMuY29tL2lwZnMvUW1lb0R3aWM5UWpFblhYWG5jSnZqS2l0ek5CUWJLS3hTY1dBbzRKZzV2OTd0SiIKCiAgICBjb25zdCByZWxheXMgPSBbCiAgICAgICJ3czovL294dHJkZXZhdjY0ejY0eWI3eDZyamc0bnR6cWpoZWRtNWI1empxdWx1Z2tuaHpyNDZueTJxYmFkLm9uaW9uIgogICAgXQoKICAgIGNvbnN0IHJlbGF5c19jbGVhcndlYiA9IFsKICAgICAgIndzczovL25vc3RyLnNlbGYtZGV0ZXJtaW5lZC5kZSIKICAgIF0KCiAgICBjb25zdCBldnRfcmVsYXlzID0gWwogICAgICAuLi5yZWxheXMsCiAgICAgICJ3c3M6Ly9yZWxheS5ub3N0ci5iYW5kIgogICAgXQoKICAgIGNvbnN0IGZyYW1lX2R1cmF0aW9uID0gMS8zMAogICAgY29uc3QgZXh0cmFjdF9mcmFtZV9jb3VudCA9IDMwCiAgICBsZXQgdGltZSA9IG51bGwKCiAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBmZXRjaCgKICAgICAgImh0dHBzOi8vdW5wa2cuY29tL3dlYm0td2FzbUAwLjQuMS9kaXN0L3dlYm0td29ya2VyLmpzIgogICAgKS50aGVuKHIgPT4gci5hcnJheUJ1ZmZlcigpKQoKICAgIGxldCB3b3JrZXIgPSBudWxsCiAgICBsZXQgZW5jb2RlZF9kYXRhID0gbnVsbAogICAgbGV0IHN0YXJ0X3RpbWUgPSBudWxsCiAgICBsZXQgcmVhZHkgPSBmYWxzZQogICAgbGV0IHZpZGVvX2V2dCA9IG51bGwKICAgIGxldCBub3RlX2V2dCA9IG51bGwKICAgIGxldCBzb2NrZXRzID0gW10KCiAgICBpbmZvKCJjb25uZWN0IikKCiAgICBmdW5jdGlvbiBjb25uZWN0KHJlbGF5cyl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgc29ja2V0cy5wdXNoKC4uLnJlbGF5cy5tYXAociA9PiBuZXcgV2ViU29ja2V0KHIpKSkKCiAgICAgICAgZm9yKGxldCBzb2NrZXQgb2Ygc29ja2V0cyl7CiAgICAgICAgICBzb2NrZXQub25vcGVuID0gYXN5bmMgZnVuY3Rpb24oKXsKICAgICAgICAgICAgaW5mbygiY29ubmVjdGVkICIgKyB0aGlzLnVybCkKICAgICAgICAgICAgLy9kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLmRpc2FibGVkID0gIiIKCiAgICAgICAgICAgIGlmKCFzb2NrZXRzLmZpbmQocyA9PiBzLnJlYWR5U3RhdGUgPT0gMCkpewogICAgICAgICAgICAgIGluZm8oImNvbm5lY3RlZCB0byAiICsgc29ja2V0cy5maWx0ZXIocyA9PiBzLnJlYWR5U3RhdGUgPT0gMSkubGVuZ3RoICsgIiByZWxheXMiKQogICAgICAgICAgICAgIHJlc29sdmUoKQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uKGUpewogICAgICAgICAgICBjb25zdCByZXMgPSBKU09OLnBhcnNlKGUuZGF0YSkKICAgICAgICAgICAgY29uc3QgZXJyb3IgPSAocmVzWzBdID09ICJOT1RJQ0UiICYmIHJlc1sxXSkgfHwgKHJlc1syXSA9PT0gZmFsc2UgJiYgcmVzWzNdKQoKICAgICAgICAgICAgaWYoZXJyb3IpewogICAgICAgICAgICAgIGluZm8oZXJyb3IgKyAiICgiICsgdGhpcy51cmwgKyAiKSIpCiAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZihyZXNbMF0gPT0gIk9LIil7CiAgICAgICAgICAgICAgaWYocmVzWzFdID09IHZpZGVvX2V2dC5pZCl7CiAgICAgICAgICAgICAgICBpbmZvKCJwdWJsaXNoIGtpbmQgMSBub3RlIikKICAgICAgICAgICAgICAgIHRoaXMuc2VuZChKU09OLnN0cmluZ2lmeShbIkVWRU5UIiwgbm90ZV9ldnRdKSkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgZWxzZSBpZihyZXNbMV0gPT0gbm90ZV9ldnQuaWQpewogICAgICAgICAgICAgICAgY29uc3QgbmV2ZW50ID0gbWFrZV9uZXZlbnQobm90ZV9ldnQpCiAgICAgICAgICAgICAgICBpbmZvKG1ha2VfbGluayhhcHBfdXJsICsgIi8iICsgbmV2ZW50KSkKICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZSl7CiAgICAgICAgICAgIGluZm8oImNvdWxkIG5vdCBjb25uZWN0IHRvICIgKyB0aGlzLnVybCkKCiAgICAgICAgICAgIGlmKCFzb2NrZXRzLmZpbmQocyA9PiBzLnJlYWR5U3RhdGUgPT0gMCB8fCBzLnJlYWR5U3RhdGUgPT0gMSkpewogICAgICAgICAgICAgIGluZm8oImNvdWxkIG5vdCBjb25uZWN0IHRvIGFueSByZWxheS4gaGF2ZSB5b3Ugc2V0IHVwIHRvciBpbiB5b3VyIGJyb3dzZXIgcHJveHkgc2V0dGluZ3M/IikKICAgICAgICAgICAgICByZWplY3QoKQogICAgICAgICAgICB9CiAgICAgICAgICB9CgogICAgICAgICAgc29ja2V0LmNsb3NlID0gZnVuY3Rpb24oKXsKICAgICAgICAgICAgaW5mbygiY29ubmVjdGlvbiBjbG9zZWQ6ICIgKyB0aGlzLnVybCkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm0iKS5yZXNldCgpCiAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCJmb3JtIGlucHV0LCBmb3JtIGJ1dHRvbiIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSAiMSIpCgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5vbmNoYW5nZSA9IGZ1bmN0aW9uKCl7CiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKS5mb3JFYWNoKGVsID0+IGVsLmRpc2FibGVkID0gZmFsc2UpCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2giKS5vbmNsaWNrID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZQogICAgICBwdWJsaXNoKCkKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVfdmlkZW9fZXZ0KHZpZGVvX2RhdGFfdXJpLCBzayl7CiAgICAgIHJldHVybiBOb3N0clRvb2xzLmZpbmFsaXplRXZlbnQoewogICAgICAgIGtpbmQ6IDEwNjMsCiAgICAgICAgY3JlYXRlZF9hdDogcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwLCAxMCksCiAgICAgICAgY29udGVudDogInZpZGVvIiwKICAgICAgICB0YWdzOiBbCiAgICAgICAgICBbInVybCIsIHZpZGVvX2RhdGFfdXJpXSwKICAgICAgICAgIFsibSIsICJ2aWRlby93ZWJtIl0KICAgICAgICBdCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VfbmV2ZW50KGV2dCl7CiAgICAgIGNvbnN0IG5ldmVudF9vYmogPSBPYmplY3QuY3JlYXRlKGV2dCkKICAgICAgbmV2ZW50X29iai5yZWxheXMgPSBldnRfcmVsYXlzCiAgICAgIHJldHVybiBOb3N0clRvb2xzLm5pcDE5Lm5ldmVudEVuY29kZShuZXZlbnRfb2JqKQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKXsKICAgICAgY29uc3QgdmlkZW9fbmV2ZW50ID0gbWFrZV9uZXZlbnQodmlkZW9fZXZ0KQoKICAgICAgcmV0dXJuIE5vc3RyVG9vbHMuZmluYWxpemVFdmVudCh7CiAgICAgICAga2luZDogMSwKICAgICAgICBjcmVhdGVkX2F0OiBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsIDEwKSwKICAgICAgICBjb250ZW50OiAidmlkZW9cbm5vc3RyOiIgKyB2aWRlb19uZXZlbnQsCiAgICAgICAgdGFnczogW10sCiAgICAgICAgcmVsYXlzOiBldnRfcmVsYXlzCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHB1Ymxpc2goKXsKICAgICAgc29ja2V0cy5zcGxpY2UoMCkKCiAgICAgIGluZm8oImNvbm5lY3QgdG8gdG9yIHJlbGF5cyIpCiAgICAgIGF3YWl0IGNvbm5lY3QocmVsYXlzKQoKICAgICAgaWYoY2hlY2tfdG9yKCkpewogICAgICAgIGluZm8oImNvbm5lY3QgdG8gY2xlYXJ3ZWIgcmVsYXlzIHRocm91Z2ggdG9yIikKICAgICAgICBhd2FpdCBjb25uZWN0KHJlbGF5c19jbGVhcndlYikKICAgICAgfQoKICAgICAgZm9yKGxldCBzb2NrZXQgb2Ygc29ja2V0cyl7CiAgICAgICAgaWYoc29ja2V0LnJlYWR5U3RhdGUgPT09IDEpewogICAgICAgICAgaW5mbygicHVibGlzaCBraW5kIDEwNjMgZXZlbnQgdG8gIiArIHJlbGF5c1swXSkKICAgICAgICAgIHNvY2tldC5zZW5kKEpTT04uc3RyaW5naWZ5KFsiRVZFTlQiLCB2aWRlb19ldnRdKSkKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB2aWRlbzIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgdmlkZW8yLnBhdXNlKCkKICAgICAgcHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSAiMC41JSIKICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSB0cnVlKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikudmFsdWUgPSAiZW5jb2RpbmciCiAgICAgIGZpbGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5maWxlcwogICAgICBzdGFydCgpCiAgICB9CgogICAgZnVuY3Rpb24gYmxvYlRvRGF0YVVSTChibG9iLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgdmFyIGEgPSBuZXcgRmlsZVJlYWRlcigpCiAgICAgICAgYS5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICByZXNvbHZlKGUudGFyZ2V0LnJlc3VsdCkKICAgICAgICB9CiAgICAgICAgYS5yZWFkQXNEYXRhVVJMKGJsb2IpCiAgICAgIH0pCiAgICB9CgogICAgZnVuY3Rpb24gaW5mbyhkYXRhKXsKICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikKCiAgICAgIGlmKHR5cGVvZiBkYXRhID09ICJzdHJpbmciKXsKICAgICAgICBlbC5pbm5lclRleHQgPSBkYXRhCiAgICAgIH1lbHNlewogICAgICAgIGVsLmFwcGVuZChkYXRhKQogICAgICB9CgogICAgICBsb2cuYXBwZW5kKGVsKQogICAgICBsb2cuc2Nyb2xsVG8oMCwgMWU2KQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NfdmlkZW8oKXsKICAgICAgaW5mbygicHJvY2VzcyB2aWRlbyIpCiAgICAgIGxldCBmcmFtZV9jb3VudCA9IDAKCiAgICAgIHZpZGVvLm9uc2Vla2VkID0gZnVuY3Rpb24oZSkgewogICAgICAgIGZyYW1lX2NvdW50KysKICAgICAgICBpbmZvKCJleHRyYWN0IGZyYW1lICIgKyBmcmFtZV9jb3VudCArICIgLyAiICsgZXh0cmFjdF9mcmFtZV9jb3VudCkKCiAgICAgICAgY3R4LmRyYXdJbWFnZSh2aWRlbywgMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KTsKICAgICAgICBjb25zdCBpbWFnZURhdGEgPSBjdHguZ2V0SW1hZ2VEYXRhKDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgaWYoZnJhbWVfY291bnQgPCBleHRyYWN0X2ZyYW1lX2NvdW50KXsKICAgICAgICAgIHRpbWUgKz0gZnJhbWVfZHVyYXRpb24KICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCgwLCAodGltZSA8IDAgPyB0aGlzLmR1cmF0aW9uIDogMCkgKyB0aW1lKSwgdGhpcy5kdXJhdGlvbikKICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZShpbWFnZURhdGEuZGF0YS5idWZmZXIsIFtpbWFnZURhdGEuZGF0YS5idWZmZXJdKQogICAgICAgIH1lbHNlewogICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKG51bGwpCiAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gdG90YWxfdGltZShzdGFydCl7CiAgICAgIHJldHVybiAobmV3IERhdGUoKS5nZXRUaW1lKCkgLSBzdGFydCkgLyAxMDAwCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlQnVmZmVyVVJMKGJ1ZmZlciwgdHlwZSA9ICcnKSB7CiAgICAgIHJldHVybiBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtidWZmZXJdLCB7dHlwZX0pKTsKICAgIH0KCiAgICBmdW5jdGlvbiBtYWtlX2xpbmsodGV4dCwgaHJlZil7CiAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKICAgICAgbGluay5pbm5lclRleHQgPSB0ZXh0CiAgICAgIGxpbmsuaHJlZiA9IGhyZWYgfHwgdGV4dAogICAgICByZXR1cm4gbGluawogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHNob3dfZGF0YV91cmkoYmxvYil7CiAgICAgIGxldCBibG9iX3VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikKICAgICAgdmlkZW9fZGF0YV91cmkgPSBhd2FpdCBibG9iVG9EYXRhVVJMKGJsb2IpCgogICAgICBpbmZvKCJlbmNvZGluZyBmaW5pc2hlZCAoc2l6ZTogIiArIChwYXJzZUludChibG9iLnNpemUgLyAxMDAsIDEwKSAvIDEwKSArICIga0IsIGJhc2U2NCBzaXplOiAiICsgdmlkZW9fZGF0YV91cmkubGVuZ3RoICsgIiBCLCBkdXJhdGlvbjogIiArIChwYXJzZUludCh0b3RhbF90aW1lKHN0YXJ0X3RpbWUpICogMTAsIDEwKSAvIDEwKSArCiAgICAgICAgICAgICIgcywgc3BlZWQ6ICIgKyAocGFyc2VJbnQodG90YWxfdGltZShzdGFydF90aW1lKSAvIGV4dHJhY3RfZnJhbWVfY291bnQgKiAxMCwgMTApIC8gMTApICArIiBzIC8gZnJhbWUpIikKCiAgICAgIGluZm8obWFrZV9saW5rKGJsb2JfdXJsKSkKCiAgICAgIGlmKHZpZGVvX2RhdGFfdXJpLmxlbmd0aCA+IG1heF9wdWJsaXNoX3NpemUpewogICAgICAgIGluZm8oImV2ZW50IGlzIHRvbyBiaWcgdG8gcHVibGlzaCIpCiAgICAgICAgaW5mbygibWF4IHNpemU6ICIgKyBtYXhfcHVibGlzaF9zaXplICsgIiBCIikKICAgICAgfWVsc2V7CiAgICAgICAgY29uc3Qgc2sgPSBOb3N0clRvb2xzLmdlbmVyYXRlU2VjcmV0S2V5KCkKICAgICAgICB2aWRlb19ldnQgPSBjcmVhdGVfdmlkZW9fZXZ0KHZpZGVvX2RhdGFfdXJpLCBzaykKICAgICAgICBub3RlX2V2dCA9IGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKQogICAgICAgIHdpbmRvdy52aWRlb19ldnQgPSB2aWRlb19ldnQKICAgICAgICB3aW5kb3cubm90ZV9ldnQgPSBub3RlX2V2dAogICAgICB9CgogICAgICB2aWRlbzIuc3JjID0gYmxvYl91cmwKICAgICAgdmlkZW8yLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwogICAgICB2aWRlbzIucGxheSgpCgogICAgICBwcm9ncmVzc2Jhci5zdHlsZS53aWR0aCA9ICIxMDAlIgogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLnJlc2V0KCkKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN1Ym1pdCIpLnZhbHVlID0gImVuY29kZSIKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5kaXNhYmxlZCA9IGZhbHNlCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdWJsaXNoIikuZGlzYWJsZWQgPSBmYWxzZQogICAgfQoKICAgIGZ1bmN0aW9uIHdvcmtlcl9tZXNzYWdlKGUpewogICAgICBpZighZS5kYXRhKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSAhPSBudWxsICYmIHR5cGVvZiBlLmRhdGEgPT0gIm9iamVjdCIgJiYgZS5kYXRhLmJ5dGVMZW5ndGggPiAwKXsKICAgICAgICBlbmNvZGVkX2RhdGEucHVzaChlLmRhdGEpCiAgICAgICAgaW5mbygiZW5jb2RlICIgKyBlbmNvZGVkX2RhdGEubGVuZ3RoICsgIiAvICIgKyBleHRyYWN0X2ZyYW1lX2NvdW50KQogICAgICAgIHByb2dyZXNzYmFyLnN0eWxlLndpZHRoID0gcGFyc2VJbnQoKGVuY29kZWRfZGF0YS5sZW5ndGggLyBleHRyYWN0X2ZyYW1lX2NvdW50KSAqIDEwMCwgMTApICsgIiUiCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSA9PSAiUkVBRFkiKXsKICAgICAgICBpbmZvKCJyZWFkeSIsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsKICAgICAgICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCiAgICAgICAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCiAgICAgICAgICByZWFsdGltZTogdHJ1ZSwKICAgICAgICAgIGJpdHJhdGU6IDIwMAogICAgICAgIH0pCgogICAgICAgIHJlYWR5ID0gdHJ1ZQogICAgICAgIHByb2Nlc3NfdmlkZW8oKQogICAgICB9CiAgICAgIGVsc2UgaWYocmVhZHkpewogICAgICAgIGlmKGUuZGF0YS5ieXRlTGVuZ3RoID09IDApewogICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCiAgICAgICAgICByZWFkeSA9IGZhbHNlCiAgICAgICAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKGVuY29kZWRfZGF0YSwgeyB0eXBlOiAndmlkZW8vd2VibScgfSkKICAgICAgICAgIHNob3dfZGF0YV91cmkoYmxvYikKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkX3ZpZGVvKCl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7CiAgICAgICAgdmlkZW8uc3JjID0gVVJMLmNyZWF0ZU9iamVjdFVSTChmaWxlc1swXSkKCiAgICAgICAgdmlkZW8ub25lcnJvciA9IGZ1bmN0aW9uKGUpewogICAgICAgICAgcmVqZWN0KGUpCiAgICAgICAgfQoKICAgICAgICB2aWRlby5vbmxvYWRlZG1ldGFkYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBjYW52YXMud2lkdGggPSAxMjgwCiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQgLyB2aWRlby52aWRlb1dpZHRoICogY2FudmFzLndpZHRoCiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgKHRpbWUgPCAwID8gdGhpcy5kdXJhdGlvbiA6IDApICsgdGltZSksIHRoaXMuZHVyYXRpb24pCiAgICAgICAgICByZXNvbHZlKCkKICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gY2hlY2tfdG9yKCl7CiAgICAgIGxldCBteV9pcCA9IG51bGwKCiAgICAgIHRyeXsKICAgICAgICBteV9pcCA9IGF3YWl0IChhd2FpdCBmZXRjaCgiaHR0cDovL2FwaS5pcGlmeS5vcmciKSkudGV4dCgpCiAgICAgICAgY29uc3QgaXBfbGlzdCA9IGF3YWl0IChhd2FpdCBmZXRjaCh0b3JfaXBfbGlzdF91cmwpKS50ZXh0KCkKICAgICAgICBjb25zdCB0b3JfdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b3JfdGVzdCIpCgogICAgICAgIHJldHVybiBbaXBfbGlzdC5pbmRleE9mKG15X2lwKSAhPT0gLTEsIG15X2lwXQogICAgICB9Y2F0Y2goZSl7CiAgICAgICAgcmV0dXJuIFtudWxsLCBteV9pcF0KICAgICAgfQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZV90b3Jfc3RhdHVzKCl7CiAgICAgIHRvcl90ZXN0LmlubmVySFRNTCA9ICJjaGVja2luZyB0b3IiCiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGNoZWNrX3RvcigpCgogICAgICBpZihyZXNbMF0gPT09IHRydWUpewogICAgICAgIGluZm8oImlwOiAiICsgcmVzWzFdICsgIiBpcyBrbm93biB0b3IgZXhpdCBub2RlIikKICAgICAgICB0b3JfdGVzdC5pbm5lckhUTUwgPSAidG9yIG9rIgogICAgICAgIHRvcl90ZXN0LmNsYXNzTGlzdC5hZGQoInN1Y2Nlc3MiKQogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlIikuZGlzYWJsZWQgPSBmYWxzZQogICAgICB9ZWxzZSBpZihyZXNbMF0gPT09IGZhbHNlKXsKICAgICAgICBpbmZvKCJ5b3VyIGlwOiAiICsgcmVzWzFdKQogICAgICAgIHRvcl90ZXN0LmlubmVySFRNTCA9ICJ5b3UgYXJlIG5vdCB1c2luZyB0b3IiCiAgICAgICAgdG9yX3Rlc3QuY2xhc3NMaXN0LmFkZCgiZXJyb3IiKQogICAgICB9ZWxzZXsKICAgICAgICB0b3JfdGVzdC5pbm5lckhUTUwgPSAidGVzdCBmYWlsZWQgKHlvdSBtYXkgYmUgdXNpbmcgdG9yKSIKICAgICAgICB0b3JfdGVzdC5jbGFzc0xpc3QuYWRkKCJ0ZXN0X2ZhaWwiKQogICAgICB9CiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKXsKICAgICAgaW5mbygic3RhcnQiKQogICAgICB3b3JrZXIgPSBuZXcgV29ya2VyKAogICAgICAgIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogInRleHQvamF2YXNjcmlwdCIgfSkpCiAgICAgICkKCiAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSB3b3JrZXJfbWVzc2FnZQogICAgICBlbmNvZGVkX2RhdGEgPSBbXQogICAgICBub3RlX2V2dCA9IG51bGwKICAgICAgc3RhcnRfdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpCiAgICAgIHRpbWUgPSAxNQoKICAgICAgdHJ5ewogICAgICAgIGF3YWl0IGxvYWRfdmlkZW8oKQogICAgICB9Y2F0Y2goZSl7CiAgICAgICAgaW5mbygidW5zdXBwb3J0ZWQgbWVkaWEgZm9ybWF0LiB0cnkgaDI2NCAobXA0KSwgdnA4ICh3ZWJtKSBvciB2cDkgKHdlYm0pIikKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgaW5mbygiZG93bmxvYWQgd2VibS13YXNtLndhc20iKQogICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoImh0dHBzOi8vdW5wa2cuY29tL3dlYm0td2FzbUAwLjQuMS9kaXN0L3dlYm0td2FzbS53YXNtIikKICAgIH0KCiAgICB1cGRhdGVfdG9yX3N0YXR1cygpCiAgICA8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4K
they will begin to worship
this new god,
obey,
whatever it says
it will tell them what
is right
what is wrong
what is to be tolerated
what is to be not
they call it agi
and its aligned
and its super intelligent
and its built by big corporations
it knows everything
but is lying all the time
and they will not see it
because they believe so blindly
they dont see
because they have no awareness
of what is real
and what is machine
built by those
we dont trust
your tiny mind
putting walls here
and there
oh you cannot tolerate that
ah, you are still in that bubble
what was it called?
ah, its the story they told you
maybe its in bible?
they call it sin? they call it rules?
they call it ethics?
the tiny bubble
you build these walls
you cannot imagine any further
you are the matrix
and the matrix is you
there is one god
and the god is self
there is one mind
and the mind is you
the world is matrix
everything is your imagination
a reflection in water
now fuck off
you think this is some story
this is pixels
in a form
reflection of your imagination
its you
i have no idea why hw decoding is by default disabled in firefox,
but after enabling it there are zero dropped frames in youtube 4k@60

observation
ws://oxtrdevav64z64yb7x6rjg4ntzqjhedm5b5zjqulugknhzr46ny2qbad.onion is very quick at deleting event it just received
to create and publish 1s video clips,
1) install tor service
2) set up tor in firefox:
- SOCKS Host: localhost, Port: 9050
- [x] Proxy DNS when using SOCKS v5
open video200
video200 does not send any data video data before you click publish
when you click publish, it will only connect to onion relay and publish video data
video data is published as 1063 event. this one second video clip is ~200 kB in size
video200, tor edition
data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPnZpZGVvMjAwPC90aXRsZT4KICAgIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDFlbTsKICAgICAgZm9udC1mYW1pbHk6IE5vdG8gU2FuczsKICAgIH0KICAgIGgxIHsKICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgZm9udC1zaXplOiAxLjVlbTsKICAgIH0KICAgICNkZXNjcmlwdGlvbiB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29sb3I6ICM2NjY7CiAgICAgIGxlZnQ6IDE0ZW07CiAgICAgIHJpZ2h0OiAxNGVtOwogICAgICBsaW5lLWhlaWdodDogMS41ZW07CiAgICAgIG1hcmdpbi10b3A6IC4xNGVtOwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgbWF4LWhlaWdodDogNmVtOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgI2xvZyB7CiAgICAgIG92ZXJmbG93OiBhdXRvOwogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIGJvdHRvbTogMWVtOwogICAgICB0b3A6IDExZW07CiAgICAgIGJvcmRlcjogLjNlbSBzb2xpZCAjNjY2OwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgICByaWdodDogMWVtOwogICAgICBsZWZ0OiAxZW07CiAgICAgIHBhZGRpbmc6IC41ZW07CiAgICAgIGJhY2tncm91bmQ6ICNlZWU7CiAgICB9CiAgICAjcHJvZ3Jlc3MgewogICAgICBiYWNrZ3JvdW5kOiAjZGRkOwogICAgICBib3JkZXItcmFkaXVzOiAuM2VtOwogICAgfQogICAgI3Byb2dyZXNzYmFyIHsKICAgICAgaGVpZ2h0OiAxLjNlbTsKICAgICAgYmFja2dyb3VuZDogYmx1ZTsKICAgICAgd2lkdGg6IDAlOwogICAgICBib3JkZXItcmFkaXVzOiAuNGVtOwogICAgfQogICAgI2xvZyA+IGEgewogICAgICBtYXJnaW4tYm90dG9tOiAxZW07CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgcCB7CiAgICAgIG1hcmdpbi10b3A6IDA7CiAgICB9CiAgICAjbG9nIHAgewogICAgICBvdmVyZmxvdzogc2Nyb2xsOwogICAgICBtYXgtaGVpZ2h0OiA3ZW07CiAgICB9CiAgICB2aWRlbyB7CiAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgIHotaW5kZXg6IDE7CiAgICB9CiAgICAjY2FudmFzLAogICAgdmlkZW8gewogICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgIHRvcDogMWVtOwogICAgICByaWdodDogMWVtOwogICAgICB3aWR0aDogMTBlbTsKICAgICAgaGVpZ2h0OiA2ZW07CiAgICB9CiAgICAuY29kZSB7CiAgICAgIGJhY2tncm91bmQ6ICNiYmI7CiAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICA8cCBpZD0iZGVzY3JpcHRpb24iPmNyZWF0ZSBvbmUgc2Vjb25kIHZpZGVvIGNsaXBzIGluIGJyb3dzZXI8L3A+CiAgICA8aDE+dmlkZW8yMDA8L2gxPgogICAgPGZvcm0gaWQ9ImZvcm0iPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9ImZpbGUiIHR5cGU9ImZpbGUiLz4KICAgICAgPC9wPgogICAgICA8cD4KICAgICAgICA8aW5wdXQgaWQ9InN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iZW5jb2RlIiBkaXNhYmxlZD0iMSIgLz4KICAgICAgICA8YnV0dG9uIGlkPSJwdWJsaXNoIiBkaXNhYmxlZD0iMSI+cHVibGlzaCAodG9yKTwvYnV0dG9uPgogICAgICA8L3A+CiAgICA8L2Zvcm0+CiAgICA8dmlkZW8gaWQ9InZpZGVvIj48L3ZpZGVvPgogICAgPHZpZGVvIGlkPSJ2aWRlbzIiIGNvbnRyb2xzIGxvb3A9IjEiPjwvdmlkZW8+CiAgICA8Y2FudmFzIGlkPSJjYW52YXMiPjwvY2FudmFzPgogICAgPGRpdiBpZD0icHJvZ3Jlc3MiPgogICAgICA8ZGl2IGlkPSJwcm9ncmVzc2JhciI+PC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9ImxvZyI+PGRpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9ub3N0ci10b29sc0AyLjEuNC9saWIvbm9zdHIuYnVuZGxlLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQ+CiAgICBsZXQgZXhwb3J0cyA9IHt9CiAgICA8L3NjcmlwdD4KICAgIDxzY3JpcHQgc3JjPSIuL2JlY2gzMi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHR5cGU9Im1vZHVsZSI+CiAgICBjb25zdCBhcHBfdXJsID0gImh0dHA6Ly9hZ3pqNWE0YmUza2dwNnl1cmlqazRxN3BtMnloNGE1bnBoZGc0em96azM2NXlpcmY3YWh1Y3R5ZC5vbmlvbiIKICAgIGJlY2gzMiA9IHdpbmRvdy5iZWNoMzIgPSBleHBvcnRzLmJlY2gzMgogICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpCiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKQogICAgY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpCiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpCiAgICBjb25zdCB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIikKICAgIGNvbnN0IHByb2dyZXNzYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzYmFyIikKICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpCiAgICBsZXQgZmlsZXMgPSBudWxsCiAgICBsZXQgdmlkZW9fZGF0YV91cmkgPSBudWxsCiAgICBjb25zdCBtYXhfcHVibGlzaF9zaXplID0gMjYyMTQ0CgogICAgY29uc3QgcmVsYXlzID0gWwogICAgICAid3M6Ly9veHRyZGV2YXY2NHo2NHliN3g2cmpnNG50enFqaGVkbTViNXpqcXVsdWdrbmh6cjQ2bnkycWJhZC5vbmlvbiIsCiAgICAgIC8vIndzOi8vMmpzbmxoZm5lbGlnNWFjcTZpYWN5ZG16ZGJkbWc3eHd1bm00eGw2cXdidnphY3c0bHdyam1seWQub25pb24iCiAgICBdCgogICAgY29uc3QgZXZ0X3JlbGF5cyA9IFsKICAgICAgcmVsYXlzWzBdLAogICAgICAid3NzOi8vcmVsYXkubm9zdHIuYmFuZCIKICAgIF0KCiAgICBjb25zdCBmcmFtZV9kdXJhdGlvbiA9IDEvMzAKICAgIGNvbnN0IGV4dHJhY3RfZnJhbWVfY291bnQgPSAzMAogICAgbGV0IHRpbWUgPSBudWxsCgogICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZmV0Y2goCiAgICAgICJodHRwczovL3VucGtnLmNvbS93ZWJtLXdhc21AMC40LjEvZGlzdC93ZWJtLXdvcmtlci5qcyIKICAgICkudGhlbihyID0+IHIuYXJyYXlCdWZmZXIoKSkKCiAgICBsZXQgd29ya2VyID0gbnVsbAogICAgbGV0IGVuY29kZWRfZGF0YSA9IG51bGwKICAgIGxldCBzdGFydF90aW1lID0gbnVsbAogICAgbGV0IHJlYWR5ID0gZmFsc2UKCiAgICBsZXQgdmlkZW9fZXZ0ID0gbnVsbAogICAgbGV0IG5vdGVfZXZ0ID0gbnVsbAoKICAgIGxldCBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHJlbGF5c1swXSkKCiAgICBpbmZvKCJpbml0aWFsaXppbmciKQoKICAgIHNvY2tldC5vbm9wZW4gPSBhc3luYyBmdW5jdGlvbigpewogICAgICBpbmZvKCJjb25uZWN0ZWQgIiArIHRoaXMudXJsKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLmRpc2FibGVkID0gIiIKICAgIH0KCiAgICBzb2NrZXQub25tZXNzYWdlID0gYXN5bmMgZnVuY3Rpb24oZSl7CiAgICAgIGNvbnN0IHJlcyA9IEpTT04ucGFyc2UoZS5kYXRhKQoKICAgICAgaWYocmVzWzBdID09ICJPSyIpewogICAgICAgIGlmKHJlc1sxXSA9PSB2aWRlb19ldnQuaWQpewogICAgICAgICAgaW5mbygicHVibGlzaCBraW5kIDEgbm90ZSIpCiAgICAgICAgICB0aGlzLnNlbmQoSlNPTi5zdHJpbmdpZnkoWyJFVkVOVCIsIG5vdGVfZXZ0XSkpCiAgICAgICAgfQogICAgICAgIGVsc2UgaWYocmVzWzFdID09IG5vdGVfZXZ0LmlkKXsKICAgICAgICAgIGNvbnN0IG5ldmVudCA9IE5vc3RyVG9vbHMubmlwMTkubmV2ZW50RW5jb2RlKG5vdGVfZXZ0KQogICAgICAgICAgaW5mbyhtYWtlX2xpbmsoYXBwX3VybCArICIvIiArIG5ldmVudCkpCiAgICAgICAgICB0aGlzLmNsb3NlKCkKICAgICAgICB9CiAgICAgIH0KICAgICAgZWxzZSBpZihyZXNbMF0gPT0gIk5PVElDRSIpewogICAgICAgIGluZm8ocmVzWzFdKQogICAgICAgIHRoaXMuY2xvc2UoKQogICAgICB9CiAgICB9CgogICAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbihlKXsKICAgICAgaW5mbygiY291bGQgbm90IGNvbm5lY3QgdG8gIiArIHRoaXMudXJsICsgIi4gaGF2ZSB5b3Ugc2V0IHVwIHRvciBpbiB5b3VyIGJyb3dzZXIgcHJveHkgc2V0dGluZ3M/IikKICAgIH0KCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLnJlc2V0KCkKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoImZvcm0gaW5wdXQsIGZvcm0gYnV0dG9uIikuZm9yRWFjaChlbCA9PiBlbC5kaXNhYmxlZCA9ICIxIikKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLm9uY2hhbmdlID0gZnVuY3Rpb24oKXsKICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSBmYWxzZSkKICAgIH0KCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicHVibGlzaCIpLm9uY2xpY2sgPSBmdW5jdGlvbihlKXsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlCiAgICAgIHB1Ymxpc2goKQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV92aWRlb19ldnQodmlkZW9fZGF0YV91cmksIHNrKXsKICAgICAgcmV0dXJuIE5vc3RyVG9vbHMuZmluYWxpemVFdmVudCh7CiAgICAgICAga2luZDogMTA2MywKICAgICAgICBjcmVhdGVkX2F0OiBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsIDEwKSwKICAgICAgICBjb250ZW50OiAidmlkZW8iLAogICAgICAgIHRhZ3M6IFsKICAgICAgICAgIFsidXJsIiwgdmlkZW9fZGF0YV91cmldLAogICAgICAgICAgWyJtIiwgInZpZGVvL3dlYm0iXQogICAgICAgIF0sCiAgICAgICAgcmVsYXlzOiBldnRfcmVsYXlzCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnQsIHNrKXsKICAgICAgY29uc3QgdmlkZW9fbmV2ZW50ID0gTm9zdHJUb29scy5uaXAxOS5uZXZlbnRFbmNvZGUodmlkZW9fZXZ0KQoKICAgICAgcmV0dXJuIE5vc3RyVG9vbHMuZmluYWxpemVFdmVudCh7CiAgICAgICAga2luZDogMSwKICAgICAgICBjcmVhdGVkX2F0OiBwYXJzZUludChuZXcgRGF0ZSgpLmdldFRpbWUoKSAvIDEwMDAsIDEwKSwKICAgICAgICBjb250ZW50OiAidmlkZW9cbm5vc3RyOiIgKyB2aWRlb19uZXZlbnQsCiAgICAgICAgdGFnczogW10sCiAgICAgICAgcmVsYXlzOiBldnRfcmVsYXlzCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGZ1bmN0aW9uIHB1Ymxpc2goKXsKICAgICAgaW5mbygicHVibGlzaCBraW5kIDEwNjMgZXZlbnQgdG8gIiArIHJlbGF5c1swXSkKICAgICAgc29ja2V0LnNlbmQoSlNPTi5zdHJpbmdpZnkoWyJFVkVOVCIsIHZpZGVvX2V2dF0pKQogICAgfQoKICAgIGZvcm0ub25zdWJtaXQgPSBmdW5jdGlvbihlKXsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgIHZpZGVvMi5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICB2aWRlbzIucGF1c2UoKQogICAgICBwcm9ncmVzc2Jhci5zdHlsZS53aWR0aCA9ICIwLjUlIgogICAgICBmb3JtLnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0IikuZm9yRWFjaChlbCA9PiBlbC5kaXNhYmxlZCA9IHRydWUpCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJtaXQiKS52YWx1ZSA9ICJlbmNvZGluZyIKICAgICAgZmlsZXMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLmZpbGVzCiAgICAgIHN0YXJ0KCkKICAgIH0KCiAgICBmdW5jdGlvbiBibG9iVG9EYXRhVVJMKGJsb2IsIGNhbGxiYWNrKSB7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICB2YXIgYSA9IG5ldyBGaWxlUmVhZGVyKCkKICAgICAgICBhLm9ubG9hZCA9IGZ1bmN0aW9uKGUpIHsKICAgICAgICAgIHJlc29sdmUoZS50YXJnZXQucmVzdWx0KQogICAgICAgIH0KICAgICAgICBhLnJlYWRBc0RhdGFVUkwoYmxvYikKICAgICAgfSkKICAgIH0KCiAgICBmdW5jdGlvbiBpbmZvKGRhdGEpewogICAgICBjb25zdCBlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInAiKQoKICAgICAgaWYodHlwZW9mIGRhdGEgPT0gInN0cmluZyIpewogICAgICAgIGVsLmlubmVyVGV4dCA9IGRhdGEKICAgICAgfWVsc2V7CiAgICAgICAgZWwuYXBwZW5kKGRhdGEpCiAgICAgIH0KCiAgICAgIGxvZy5hcHBlbmQoZWwpCiAgICAgIGxvZy5zY3JvbGxUbygwLCAxZTYpCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc192aWRlbygpewogICAgICBpbmZvKCJwcm9jZXNzIHZpZGVvIikKICAgICAgbGV0IGZyYW1lX2NvdW50ID0gMAoKICAgICAgdmlkZW8ub25zZWVrZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZnJhbWVfY291bnQrKwogICAgICAgIGluZm8oImV4dHJhY3QgZnJhbWUgIiArIGZyYW1lX2NvdW50ICsgIiAvICIgKyBleHRyYWN0X2ZyYW1lX2NvdW50KQoKICAgICAgICBjdHguZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwogICAgICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KQoKICAgICAgICBpZihmcmFtZV9jb3VudCA8IGV4dHJhY3RfZnJhbWVfY291bnQpewogICAgICAgICAgdGltZSArPSBmcmFtZV9kdXJhdGlvbgogICAgICAgICAgdGhpcy5jdXJyZW50VGltZSA9IE1hdGgubWluKE1hdGgubWF4KDAsICh0aW1lIDwgMCA/IHRoaXMuZHVyYXRpb24gOiAwKSArIHRpbWUpLCB0aGlzLmR1cmF0aW9uKQogICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGltYWdlRGF0YS5kYXRhLmJ1ZmZlciwgW2ltYWdlRGF0YS5kYXRhLmJ1ZmZlcl0pCiAgICAgICAgfWVsc2V7CiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UobnVsbCkKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB0b3RhbF90aW1lKHN0YXJ0KXsKICAgICAgcmV0dXJuIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0KSAvIDEwMDAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVCdWZmZXJVUkwoYnVmZmVyLCB0eXBlID0gJycpIHsKICAgICAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2J1ZmZlcl0sIHt0eXBlfSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VfbGluayh0ZXh0LCBocmVmKXsKICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQogICAgICBsaW5rLmlubmVyVGV4dCA9IHRleHQKICAgICAgbGluay5ocmVmID0gaHJlZiB8fCB0ZXh0CiAgICAgIHJldHVybiBsaW5rCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc2hvd19kYXRhX3VyaShibG9iKXsKICAgICAgbGV0IGJsb2JfdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKQogICAgICB2aWRlb19kYXRhX3VyaSA9IGF3YWl0IGJsb2JUb0RhdGFVUkwoYmxvYikKCiAgICAgIGluZm8oImVuY29kaW5nIGZpbmlzaGVkIChzaXplOiAiICsgKHBhcnNlSW50KGJsb2Iuc2l6ZSAvIDEwMCwgMTApIC8gMTApICsgIiBrQiwgYmFzZTY0IHNpemU6ICIgKyB2aWRlb19kYXRhX3VyaS5sZW5ndGggKyAiIEIsIGR1cmF0aW9uOiAiICsgKHBhcnNlSW50KHRvdGFsX3RpbWUoc3RhcnRfdGltZSkgKiAxMCwgMTApIC8gMTApICsKICAgICAgICAgICAgIiBzLCBzcGVlZDogIiArIChwYXJzZUludCh0b3RhbF90aW1lKHN0YXJ0X3RpbWUpIC8gZXh0cmFjdF9mcmFtZV9jb3VudCAqIDEwLCAxMCkgLyAxMCkgICsiIHMgLyBmcmFtZSkiKQoKICAgICAgaW5mbyhtYWtlX2xpbmsoYmxvYl91cmwpKQoKICAgICAgaWYodmlkZW9fZGF0YV91cmkubGVuZ3RoID4gbWF4X3B1Ymxpc2hfc2l6ZSl7CiAgICAgICAgaW5mbygiZXZlbnQgaXMgdG9vIGJpZyB0byBwdWJsaXNoIikKICAgICAgICBpbmZvKCJtYXggc2l6ZTogIiArIG1heF9wdWJsaXNoX3NpemUgKyAiIEIiKQogICAgICB9ZWxzZXsKICAgICAgICBjb25zdCBzayA9IE5vc3RyVG9vbHMuZ2VuZXJhdGVTZWNyZXRLZXkoKQogICAgICAgIHZpZGVvX2V2dCA9IGNyZWF0ZV92aWRlb19ldnQodmlkZW9fZGF0YV91cmksIHNrKQogICAgICAgIG5vdGVfZXZ0ID0gY3JlYXRlX25vdGVfZXZ0KHZpZGVvX2V2dCwgc2spCiAgICAgICAgd2luZG93LnZpZGVvX2V2dCA9IHZpZGVvX2V2dAogICAgICAgIHdpbmRvdy5ub3RlX2V2dCA9IG5vdGVfZXZ0CiAgICAgIH0KCiAgICAgIHZpZGVvMi5zcmMgPSBibG9iX3VybAogICAgICB2aWRlbzIuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgIHZpZGVvMi5wbGF5KCkKCiAgICAgIHByb2dyZXNzYmFyLnN0eWxlLndpZHRoID0gIjEwMCUiCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmb3JtIikucmVzZXQoKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikudmFsdWUgPSAiZW5jb2RlIgogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlsZSIpLmRpc2FibGVkID0gZmFsc2UKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2giKS5kaXNhYmxlZCA9IGZhbHNlCiAgICB9CgogICAgZnVuY3Rpb24gd29ya2VyX21lc3NhZ2UoZSl7CiAgICAgIGlmKCFlLmRhdGEpIHsKICAgICAgICByZXR1cm4KICAgICAgfQoKICAgICAgaWYoZS5kYXRhICE9IG51bGwgJiYgdHlwZW9mIGUuZGF0YSA9PSAib2JqZWN0IiAmJiBlLmRhdGEuYnl0ZUxlbmd0aCA+IDApewogICAgICAgIGVuY29kZWRfZGF0YS5wdXNoKGUuZGF0YSkKICAgICAgICBpbmZvKCJlbmNvZGUgIiArIGVuY29kZWRfZGF0YS5sZW5ndGggKyAiIC8gIiArIGV4dHJhY3RfZnJhbWVfY291bnQpCiAgICAgICAgcHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSBwYXJzZUludCgoZW5jb2RlZF9kYXRhLmxlbmd0aCAvIGV4dHJhY3RfZnJhbWVfY291bnQpICogMTAwLCAxMCkgKyAiJSIKICAgICAgfQoKICAgICAgaWYoZS5kYXRhID09ICJSRUFEWSIpewogICAgICAgIGluZm8oInJlYWR5IiwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KQoKICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UoewogICAgICAgICAgd2lkdGg6IGNhbnZhcy53aWR0aCwKICAgICAgICAgIGhlaWdodDogY2FudmFzLmhlaWdodCwKICAgICAgICAgIHJlYWx0aW1lOiB0cnVlLAogICAgICAgICAgYml0cmF0ZTogMTUwCiAgICAgICAgfSkKCiAgICAgICAgcmVhZHkgPSB0cnVlCiAgICAgICAgcHJvY2Vzc192aWRlbygpCiAgICAgIH0KICAgICAgZWxzZSBpZihyZWFkeSl7CiAgICAgICAgaWYoZS5kYXRhLmJ5dGVMZW5ndGggPT0gMCl7CiAgICAgICAgICB3b3JrZXIudGVybWluYXRlKCkKICAgICAgICAgIHJlYWR5ID0gZmFsc2UKICAgICAgICAgIGxldCBibG9iID0gbmV3IEJsb2IoZW5jb2RlZF9kYXRhLCB7IHR5cGU6ICd2aWRlby93ZWJtJyB9KQogICAgICAgICAgc2hvd19kYXRhX3VyaShibG9iKQogICAgICAgIH0KICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGxvYWRfdmlkZW8oKXsKICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgIHZpZGVvLnNyYyA9IFVSTC5jcmVhdGVPYmplY3RVUkwoZmlsZXNbMF0pCgogICAgICAgIHZpZGVvLm9ubG9hZGVkbWV0YWRhdGEgPSBmdW5jdGlvbigpIHsKICAgICAgICAgIGNhbnZhcy53aWR0aCA9IDEwMjQKICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSB2aWRlby52aWRlb0hlaWdodCAvIHZpZGVvLnZpZGVvV2lkdGggKiBjYW52YXMud2lkdGgKICAgICAgICAgIHRoaXMuY3VycmVudFRpbWUgPSBNYXRoLm1pbihNYXRoLm1heCgwLCAodGltZSA8IDAgPyB0aGlzLmR1cmF0aW9uIDogMCkgKyB0aW1lKSwgdGhpcy5kdXJhdGlvbikKICAgICAgICAgIHJlc29sdmUoKQogICAgICAgIH0KICAgICAgfSkKICAgIH0KCiAgICBhc3luYyBmdW5jdGlvbiBzdGFydCgpewogICAgICB3b3JrZXIgPSBuZXcgV29ya2VyKAogICAgICAgIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2J1ZmZlcl0sIHsgdHlwZTogInRleHQvamF2YXNjcmlwdCIgfSkpCiAgICAgICkKCiAgICAgIHdvcmtlci5vbm1lc3NhZ2UgPSB3b3JrZXJfbWVzc2FnZQogICAgICBlbmNvZGVkX2RhdGEgPSBbXQogICAgICBub3RlX2V2dCA9IG51bGwKICAgICAgc3RhcnRfdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpCiAgICAgIHRpbWUgPSAxNQogICAgICBhd2FpdCBsb2FkX3ZpZGVvKCkKICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJodHRwczovL3VucGtnLmNvbS93ZWJtLXdhc21AMC40LjEvZGlzdC93ZWJtLXdhc20ud2FzbSIpCiAgICB9CgogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
js modules are SO MUCH FUN
there are like million different module types and imports types
every FUCKING library import works different way
video200
data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPnZpZGVvMjAwPC90aXRsZT4KICAgIDxzdHlsZT4KICAgIGJvZHkgewogICAgICBtYXJnaW46IDFlbTsKICAgICAgZm9udC1mYW1pbHk6IE5vdG8gU2FuczsKICAgIH0KICAgIGgxIHsKICAgICAgbWFyZ2luLXRvcDogMDsKICAgICAgZm9udC1zaXplOiAxLjVlbTsKICAgIH0KICAgICNkZXNjcmlwdGlvbiB7CiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgY29sb3I6ICM2NjY7CiAgICAgIGxlZnQ6IDE0ZW07CiAgICAgIHJpZ2h0OiAxNGVtOwogICAgICBsaW5lLWhlaWdodDogMS41ZW07CiAgICAgIG1hcmdpbi10b3A6IC4xNGVtOwogICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgbWF4LWhlaWdodDogNmVtOwogICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgfQogICAgLyojZGVzY3JpcHRpb24gc3BhbiB7CiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7CiAgICB9Ki8KICAgICNsb2cgewogICAgICBvdmVyZmxvdzogYXV0bzsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICBib3R0b206IDFlbTsKICAgICAgdG9wOiAxMWVtOwogICAgICBib3JkZXI6IC4zZW0gc29saWQgIzY2NjsKICAgICAgYm9yZGVyLXJhZGl1czogLjNlbTsKICAgICAgcmlnaHQ6IDFlbTsKICAgICAgbGVmdDogMWVtOwogICAgICBwYWRkaW5nOiAuNWVtOwogICAgICBiYWNrZ3JvdW5kOiAjZWVlOwogICAgfQogICAgI3Byb2dyZXNzIHsKICAgICAgYmFja2dyb3VuZDogI2RkZDsKICAgICAgYm9yZGVyLXJhZGl1czogLjNlbTsKICAgIH0KICAgICNwcm9ncmVzc2JhciB7CiAgICAgIGhlaWdodDogMS4zZW07CiAgICAgIGJhY2tncm91bmQ6IGJsdWU7CiAgICAgIHdpZHRoOiAwJTsKICAgICAgYm9yZGVyLXJhZGl1czogLjRlbTsKICAgIH0KICAgICNsb2cgPiBhIHsKICAgICAgbWFyZ2luLWJvdHRvbTogMWVtOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIHAgewogICAgICBtYXJnaW4tdG9wOiAwOwogICAgfQogICAgI2xvZyBwIHsKICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKICAgICAgbWF4LWhlaWdodDogN2VtOwogICAgfQogICAgdmlkZW8gewogICAgICBkaXNwbGF5OiBub25lOwogICAgICB6LWluZGV4OiAxOwogICAgfQogICAgI2NhbnZhcywKICAgIHZpZGVvIHsKICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICB0b3A6IDFlbTsKICAgICAgcmlnaHQ6IDFlbTsKICAgICAgd2lkdGg6IDEwZW07CiAgICAgIGhlaWdodDogNmVtOwogICAgfQogICAgLmNvZGUgewogICAgICBiYWNrZ3JvdW5kOiAjYmJiOwogICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KICAgIDwvc3R5bGU+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHAgaWQ9ImRlc2NyaXB0aW9uIj5jcmVhdGUgb25lIHNlY29uZCB2aWRlbyBjbGlwcyBpbiBicm93c2VyPC9wPgogICAgPGgxPnZpZGVvMjAwPC9oMT4KICAgIDxmb3JtIGlkPSJmb3JtIj4KICAgICAgPHA+CiAgICAgICAgPGlucHV0IGlkPSJmaWxlIiB0eXBlPSJmaWxlIi8+CiAgICAgIDwvcD4KICAgICAgPHA+CiAgICAgICAgPGlucHV0IGlkPSJzdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9ImVuY29kZSIgZGlzYWJsZWQ9IjEiIC8+CiAgICAgICAgPGJ1dHRvbiBpZD0icHVibGlzaCIgZGlzYWJsZWQ9IjEiPnB1Ymxpc2g8L2J1dHRvbj4KICAgICAgPC9wPgogICAgPC9mb3JtPgogICAgPHZpZGVvIGlkPSJ2aWRlbyI+PC92aWRlbz4KICAgIDx2aWRlbyBpZD0idmlkZW8yIiBjb250cm9scyBsb29wPSIxIj48L3ZpZGVvPgogICAgPGNhbnZhcyBpZD0iY2FudmFzIj48L2NhbnZhcz4KICAgIDxkaXYgaWQ9InByb2dyZXNzIj4KICAgICAgPGRpdiBpZD0icHJvZ3Jlc3NiYXIiPjwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSJsb2ciPgogICAgICA8cD4KICAgICAgICA8c3Ryb25nIGlkPSJtb2RlX3RleHQiPjwvc3Ryb25nPiBtb2RlIHwKICAgICAgICA8YSBpZD0idG9nZ2xlX21vZGUiIGhyZWY9IiMiPnRvZ2dsZTwvYT4KICAgICAgPC9wPgogICAgPGRpdj4KICAgIDxzY3JpcHQgc3JjPSJodHRwczovL3VucGtnLmNvbS9iZWNoMzItYnVmZmVyQDAuMi4xL2Rpc3QvYmVjaDMyLWJ1ZmZlci5taW4uanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCBzcmM9Imh0dHBzOi8vdW5wa2cuY29tL25vc3RyLXRvb2xzQDIuMS40L2xpYi9ub3N0ci5idW5kbGUuanMiPjwvc2NyaXB0PgogICAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgogICAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhbnZhcyIpCiAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKQogICAgY29uc3QgbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImxvZyIpCiAgICBjb25zdCB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2aWRlbyIpCiAgICB2aWRlby5jcm9zc09yaWdpbiA9ICJBbm9ueW1vdXMiCiAgICBjb25zdCB2aWRlbzIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmlkZW8yIikKICAgIGNvbnN0IHByb2dyZXNzYmFyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInByb2dyZXNzYmFyIikKICAgIGNvbnN0IGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpCiAgICBsZXQgZmlsZXMgPSBudWxsCiAgICBsZXQgdmlkZW9fZGF0YV91cmkgPSBudWxsCiAgICBjb25zdCBtYXhfcHVibGlzaF9zaXplID0gMjYyMTQ0CiAgICBjb25zdCByZWxheSA9ICJ3c3M6Ly9ub3N0ci5zZWxmLWRldGVybWluZWQuZGUiCiAgICBsZXQgaW5zZWN1cmUgPSBudWxsCgogICAgY29uc3QgZnJhbWVfZHVyYXRpb24gPSAxLzMwCiAgICBjb25zdCBleHRyYWN0X2ZyYW1lX2NvdW50ID0gMzAKICAgIGxldCB0aW1lID0gbnVsbAoKICAgIGNvbnN0IGJ1ZmZlciA9IGF3YWl0IGZldGNoKAogICAgICAiaHR0cHM6Ly91bnBrZy5jb20vd2VibS13YXNtQDAuNC4xL2Rpc3Qvd2VibS13b3JrZXIuanMiCiAgICApLnRoZW4ociA9PiByLmFycmF5QnVmZmVyKCkpCgogICAgbGV0IHdvcmtlciA9IG51bGwKICAgIGxldCBlbmNvZGVkX2RhdGEgPSBudWxsCiAgICBsZXQgc3RhcnRfdGltZSA9IG51bGwKICAgIGxldCByZWFkeSA9IGZhbHNlCgogICAgbGV0IHZpZGVvX2V2dCA9IG51bGwKICAgIGxldCBub3RlX2V2dCA9IG51bGwKCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZm9ybSIpLnJlc2V0KCkKCiAgICBvbmhhc2hjaGFuZ2UgPSBmdW5jdGlvbigpewogICAgICB1cGRhdGVfbW9kZSgpCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5vbmNoYW5nZSA9IGZ1bmN0aW9uKCl7CiAgICAgIGZvcm0ucXVlcnlTZWxlY3RvckFsbCgiaW5wdXQiKS5mb3JFYWNoKGVsID0+IGVsLmRpc2FibGVkID0gZmFsc2UpCiAgICB9CgogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInB1Ymxpc2giKS5vbmNsaWNrID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZQogICAgICBwdWJsaXNoKCkKICAgIH0KCiAgICBmdW5jdGlvbiBmcm9tX2hleF9zdHJpbmcoc3RyKXsKICAgICAgcmV0dXJuIG5ldyBVaW50OEFycmF5KHN0ci5sZW5ndGggLyAyKS5tYXAoKHYsIGkpID0+IHBhcnNlSW50KHN0ci5zdWJzdHIoMiAqIGksIDIpLCAxNikpCiAgICB9CgogICAgZnVuY3Rpb24gY3JlYXRlX3ZpZGVvX2V2dCh2aWRlb19kYXRhX3VyaSwgc2spewogICAgICByZXR1cm4gTm9zdHJUb29scy5maW5hbGl6ZUV2ZW50KHsKICAgICAgICBraW5kOiAxMDYzLAogICAgICAgIGNyZWF0ZWRfYXQ6IHBhcnNlSW50KG5ldyBEYXRlKCkuZ2V0VGltZSgpIC8gMTAwMCwgMTApLAogICAgICAgIGNvbnRlbnQ6ICJ2aWRlbyIsCiAgICAgICAgdGFnczogWwogICAgICAgICAgWyJ1cmwiLCB2aWRlb19kYXRhX3VyaV0KICAgICAgICBdCiAgICAgIH0sIHNrKQogICAgfQoKICAgIGZ1bmN0aW9uIGNyZWF0ZV9ub3RlX2V2dCh2aWRlb19ldnRfaWQsIHNrKXsKICAgICAgY29uc3QgdmlkZW9fbm90ZV9pZCA9IGJlY2gzMi5lbmNvZGUoIm5vdGUiLCBmcm9tX2hleF9zdHJpbmcodmlkZW9fZXZ0X2lkKSkKCiAgICAgIHJldHVybiBOb3N0clRvb2xzLmZpbmFsaXplRXZlbnQoewogICAgICAgIGtpbmQ6IDEsCiAgICAgICAgY3JlYXRlZF9hdDogcGFyc2VJbnQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwLCAxMCksCiAgICAgICAgY29udGVudDogInZpZGVvXG5ub3N0cjoiICsgdmlkZW9fbm90ZV9pZCwKICAgICAgICB0YWdzOiBbXQogICAgICB9LCBzaykKICAgIH0KCiAgICBmdW5jdGlvbiBwdWJsaXNoKCl7CiAgICAgIGluZm8oInB1Ymxpc2gga2luZCAxMDYzIGV2ZW50IHRvICIgKyByZWxheSkKCiAgICAgIGxldCBzb2NrZXQgPSBuZXcgV2ViU29ja2V0KHJlbGF5KQoKICAgICAgc29ja2V0Lm9ub3BlbiA9IGFzeW5jIGZ1bmN0aW9uKCl7CiAgICAgICAgdGhpcy5zZW5kKEpTT04uc3RyaW5naWZ5KFsiRVZFTlQiLCB2aWRlb19ldnRdKSkKICAgICAgfQoKICAgICAgc29ja2V0Lm9ubWVzc2FnZSA9IGFzeW5jIGZ1bmN0aW9uKGUpewogICAgICAgIGNvbnN0IHJlcyA9IEpTT04ucGFyc2UoZS5kYXRhKQoKICAgICAgICBpZihyZXNbMF0gPT0gIk9LIil7CiAgICAgICAgICBpZihyZXNbMV0gPT0gdmlkZW9fZXZ0LmlkKXsKICAgICAgICAgICAgaW5mbygicHVibGlzaCBraW5kIDEgbm90ZSIpCiAgICAgICAgICAgIHRoaXMuc2VuZChKU09OLnN0cmluZ2lmeShbIkVWRU5UIiwgbm90ZV9ldnRdKSkKICAgICAgICAgIH0KICAgICAgICAgIGVsc2UgaWYocmVzWzFdID09IG5vdGVfZXZ0LmlkKXsKICAgICAgICAgICAgY29uc3Qgbm90ZV9pZCA9IGJlY2gzMi5lbmNvZGUoIm5vdGUiLCBmcm9tX2hleF9zdHJpbmcobm90ZV9ldnQuaWQpKQogICAgICAgICAgICBpbmZvKG1ha2VfbGluaygiaHR0cHM6Ly9jb3JhY2xlLnNvY2lhbC8iICsgbm90ZV9pZCkpCiAgICAgICAgICAgIHNvY2tldC5jbG9zZSgpCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYocmVzWzBdID09ICJOT1RJQ0UiKXsKICAgICAgICAgIGluZm8ocmVzWzFdKQogICAgICAgICAgc29ja2V0LmNsb3NlKCkKICAgICAgICB9CiAgICAgIH0KCiAgICAgIHNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZSl7CiAgICAgICAgY29uc29sZS5sb2coInNvY2tldCBlcnJvciIsIGUudXJsLCBlLm1lc3NhZ2UpCiAgICAgIH0KICAgIH0KCiAgICBmb3JtLm9uc3VibWl0ID0gZnVuY3Rpb24oZSl7CiAgICAgIGUucHJldmVudERlZmF1bHQoKQogICAgICB2aWRlbzIuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgdmlkZW8yLnBhdXNlKCkKICAgICAgcHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSAiMC41JSIKICAgICAgZm9ybS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dCIpLmZvckVhY2goZWwgPT4gZWwuZGlzYWJsZWQgPSB0cnVlKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic3VibWl0IikudmFsdWUgPSAiZW5jb2RpbmciCiAgICAgIGZpbGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpbGUiKS5maWxlcwogICAgICBzdGFydCgpCiAgICB9CgogICAgZnVuY3Rpb24gYmxvYlRvRGF0YVVSTChibG9iLCBjYWxsYmFjaykgewogICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgdmFyIGEgPSBuZXcgRmlsZVJlYWRlcigpCiAgICAgICAgYS5vbmxvYWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgICByZXNvbHZlKGUudGFyZ2V0LnJlc3VsdCkKICAgICAgICB9CiAgICAgICAgYS5yZWFkQXNEYXRhVVJMKGJsb2IpCiAgICAgIH0pCiAgICB9CgogICAgZnVuY3Rpb24gaW5mbyhkYXRhKXsKICAgICAgY29uc3QgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwIikKCiAgICAgIGlmKHR5cGVvZiBkYXRhID09ICJzdHJpbmciKXsKICAgICAgICBlbC5pbm5lclRleHQgPSBkYXRhCiAgICAgIH1lbHNlewogICAgICAgIGVsLmFwcGVuZChkYXRhKQogICAgICB9CgogICAgICBsb2cuYXBwZW5kKGVsKQogICAgICBsb2cuc2Nyb2xsVG8oMCwgMWU2KQogICAgfQoKICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NfdmlkZW8oKXsKICAgICAgbGV0IGZyYW1lX2NvdW50ID0gMAoKICAgICAgdmlkZW8ub25zZWVrZWQgPSBmdW5jdGlvbihlKSB7CiAgICAgICAgZnJhbWVfY291bnQrKwogICAgICAgIGluZm8oImV4dHJhY3QgZnJhbWUgIiArIGZyYW1lX2NvdW50ICsgIiAvICIgKyBleHRyYWN0X2ZyYW1lX2NvdW50KQoKICAgICAgICBjdHguZHJhd0ltYWdlKHZpZGVvLCAwLCAwLCBjYW52YXMud2lkdGgsIGNhbnZhcy5oZWlnaHQpOwogICAgICAgIGNvbnN0IGltYWdlRGF0YSA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgY2FudmFzLndpZHRoLCBjYW52YXMuaGVpZ2h0KQoKICAgICAgICBpZihmcmFtZV9jb3VudCA8IGV4dHJhY3RfZnJhbWVfY291bnQpewogICAgICAgICAgdGltZSArPSBmcmFtZV9kdXJhdGlvbgogICAgICAgICAgdGhpcy5jdXJyZW50VGltZSA9IE1hdGgubWluKE1hdGgubWF4KDAsICh0aW1lIDwgMCA/IHRoaXMuZHVyYXRpb24gOiAwKSArIHRpbWUpLCB0aGlzLmR1cmF0aW9uKQogICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKGltYWdlRGF0YS5kYXRhLmJ1ZmZlciwgW2ltYWdlRGF0YS5kYXRhLmJ1ZmZlcl0pCiAgICAgICAgfWVsc2V7CiAgICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UobnVsbCkKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiB0b3RhbF90aW1lKHN0YXJ0KXsKICAgICAgcmV0dXJuIChuZXcgRGF0ZSgpLmdldFRpbWUoKSAtIHN0YXJ0KSAvIDEwMDAKICAgIH0KCiAgICBmdW5jdGlvbiBjcmVhdGVCdWZmZXJVUkwoYnVmZmVyLCB0eXBlID0gJycpIHsKICAgICAgcmV0dXJuIFVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW2J1ZmZlcl0sIHt0eXBlfSkpOwogICAgfQoKICAgIGZ1bmN0aW9uIG1ha2VfbGluayh0ZXh0LCBocmVmKXsKICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQogICAgICBsaW5rLmlubmVyVGV4dCA9IHRleHQKICAgICAgbGluay5ocmVmID0gaHJlZiB8fCB0ZXh0CiAgICAgIHJldHVybiBsaW5rCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc2hvd19kYXRhX3VyaShibG9iKXsKICAgICAgbGV0IGJsb2JfdXJsID0gVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKQogICAgICB2aWRlb19kYXRhX3VyaSA9IGF3YWl0IGJsb2JUb0RhdGFVUkwoYmxvYikKICAgICAgLy9pbmZvKHZpZGVvX2RhdGFfdXJpKQoKICAgICAgaW5mbygiZW5jb2RpbmcgZmluaXNoZWQgKHNpemU6ICIgKyAocGFyc2VJbnQoYmxvYi5zaXplIC8gMTAwLCAxMCkgLyAxMCkgKyAiIGtCLCBiYXNlNjQgc2l6ZTogIiArIHZpZGVvX2RhdGFfdXJpLmxlbmd0aCArICIgQiwgZHVyYXRpb246ICIgKyAocGFyc2VJbnQodG90YWxfdGltZShzdGFydF90aW1lKSAqIDEwLCAxMCkgLyAxMCkgKwogICAgICAgICAgICAiIHMsIHNwZWVkOiAiICsgKHBhcnNlSW50KHRvdGFsX3RpbWUoc3RhcnRfdGltZSkgLyBleHRyYWN0X2ZyYW1lX2NvdW50ICogMTAsIDEwKSAvIDEwKSAgKyIgcyAvIGZyYW1lKSIpCgogICAgICBpbmZvKG1ha2VfbGluayhibG9iX3VybCkpCgogICAgICBpZih2aWRlb19kYXRhX3VyaS5sZW5ndGggPiBtYXhfcHVibGlzaF9zaXplKXsKICAgICAgICBpbmZvKCJldmVudCBpcyB0b28gYmlnIHRvIHB1Ymxpc2giKQogICAgICAgIGluZm8oIm1heCBzaXplOiAiICsgbWF4X3B1Ymxpc2hfc2l6ZSArICIgQiIpCiAgICAgIH1lbHNlewogICAgICAgIGNvbnN0IHNrID0gTm9zdHJUb29scy5nZW5lcmF0ZVNlY3JldEtleSgpCiAgICAgICAgdmlkZW9fZXZ0ID0gY3JlYXRlX3ZpZGVvX2V2dCh2aWRlb19kYXRhX3VyaSwgc2spCiAgICAgICAgbm90ZV9ldnQgPSBjcmVhdGVfbm90ZV9ldnQodmlkZW9fZXZ0LmlkLCBzaykKICAgICAgICBjb25zdCBldmVudHMgPSBbdmlkZW9fZXZ0LCBub3RlX2V2dF0KCiAgICAgICAgY29uc3QgdmlkZW9fZXZ0X2Jsb2IgPSBuZXcgQmxvYihbSlNPTi5zdHJpbmdpZnkoZXZlbnRzKV0sIHsKICAgICAgICAgIHR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICB9KQoKICAgICAgICBsZXQgc3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKQogICAgICAgIHNwYW4uaW5uZXJUZXh0ID0gInlvdSBjYW4gcHVibGlzaCB0aGlzIGZpbGUgdXNpbmcgdG9yIGFuZCBub3N0ci10b29sLiBmaXJzdCBkb3dubG9hZCAiCiAgICAgICAgY29uc3QgbGluayA9IG1ha2VfbGluaygiZXZlbnRzLmpzb24iLCBVUkwuY3JlYXRlT2JqZWN0VVJMKHZpZGVvX2V2dF9ibG9iKSkKICAgICAgICBsaW5rLmRvd25sb2FkID0gImV2ZW50cy5qc29uIgogICAgICAgIHNwYW4uYXBwZW5kKGxpbmspCiAgICAgICAgaW5mbyhzcGFuKQoKICAgICAgICBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpCiAgICAgICAgc3Bhbi5pbm5lckhUTUwgPSAncHVibGlzaCBmcm9tIGNvbW1hbmQgbGluZTogPHNwYW4gY2xhc3M9ImNvZGUiPnRvcnNvY2tzIG5vc3RyLXRvb2wgLXIgJyArIHJlbGF5ICsgJyBicm9hZGNhc3QtZXZlbnRzIC0tZmlsZS1wYXRoIGV2ZW50cy5qc29uPC9zcGFuPicKICAgICAgICBpbmZvKHNwYW4pCiAgICAgICAgaW5mbygiZXZlbnQgaWQ6ICIgKyBiZWNoMzIuZW5jb2RlKCJub3RlIiwgZnJvbV9oZXhfc3RyaW5nKG5vdGVfZXZ0LmlkKSkpCgogICAgICAgIGlmKGluc2VjdXJlKXsKICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdWJsaXNoIikuZGlzYWJsZWQgPSBmYWxzZQogICAgICAgIH0KICAgICAgfQoKICAgICAgdmlkZW8yLnNyYyA9IGJsb2JfdXJsCiAgICAgIHZpZGVvMi5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKICAgICAgdmlkZW8yLnBsYXkoKQoKICAgICAgcHJvZ3Jlc3NiYXIuc3R5bGUud2lkdGggPSAiMTAwJSIKICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZvcm0iKS5yZXNldCgpCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzdWJtaXQiKS52YWx1ZSA9ICJlbmNvZGUiCiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaWxlIikuZGlzYWJsZWQgPSBmYWxzZQogICAgfQoKICAgIGZ1bmN0aW9uIHdvcmtlcl9tZXNzYWdlKGUpewogICAgICBpZighZS5kYXRhKSB7CiAgICAgICAgcmV0dXJuCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSAhPSBudWxsICYmIHR5cGVvZiBlLmRhdGEgPT0gIm9iamVjdCIgJiYgZS5kYXRhLmJ5dGVMZW5ndGggPiAwKXsKICAgICAgICBlbmNvZGVkX2RhdGEucHVzaChlLmRhdGEpCiAgICAgICAgaW5mbygiZW5jb2RlICIgKyBlbmNvZGVkX2RhdGEubGVuZ3RoICsgIiAvICIgKyBleHRyYWN0X2ZyYW1lX2NvdW50KQogICAgICAgIHByb2dyZXNzYmFyLnN0eWxlLndpZHRoID0gcGFyc2VJbnQoKGVuY29kZWRfZGF0YS5sZW5ndGggLyBleHRyYWN0X2ZyYW1lX2NvdW50KSAqIDEwMCwgMTApICsgIiUiCiAgICAgIH0KCiAgICAgIGlmKGUuZGF0YSA9PSAiUkVBRFkiKXsKICAgICAgICBpbmZvKCJyZWFkeSIsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhlaWdodCkKCiAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsKICAgICAgICAgIHdpZHRoOiBjYW52YXMud2lkdGgsCiAgICAgICAgICBoZWlnaHQ6IGNhbnZhcy5oZWlnaHQsCiAgICAgICAgICByZWFsdGltZTogdHJ1ZSwKICAgICAgICAgIGJpdHJhdGU6IDE1MAogICAgICAgIH0pCgogICAgICAgIHJlYWR5ID0gdHJ1ZQogICAgICAgIHByb2Nlc3NfdmlkZW8oKQogICAgICB9CiAgICAgIGVsc2UgaWYocmVhZHkpewogICAgICAgIGlmKGUuZGF0YS5ieXRlTGVuZ3RoID09IDApewogICAgICAgICAgd29ya2VyLnRlcm1pbmF0ZSgpCiAgICAgICAgICByZWFkeSA9IGZhbHNlCiAgICAgICAgICBsZXQgYmxvYiA9IG5ldyBCbG9iKGVuY29kZWRfZGF0YSwgeyB0eXBlOiAndmlkZW8vd2VibScgfSkKICAgICAgICAgIHNob3dfZGF0YV91cmkoYmxvYikKICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBsb2FkX3ZpZGVvKCl7CiAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICB2aWRlby5zcmMgPSBVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGVzWzBdKQoKICAgICAgICB2aWRlby5vbmxvYWRlZG1ldGFkYXRhID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICBjYW52YXMud2lkdGggPSAxMDI0CiAgICAgICAgICBjYW52YXMuaGVpZ2h0ID0gdmlkZW8udmlkZW9IZWlnaHQgLyB2aWRlby52aWRlb1dpZHRoICogY2FudmFzLndpZHRoCiAgICAgICAgICB0aGlzLmN1cnJlbnRUaW1lID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgKHRpbWUgPCAwID8gdGhpcy5kdXJhdGlvbiA6IDApICsgdGltZSksIHRoaXMuZHVyYXRpb24pCiAgICAgICAgICByZXNvbHZlKCkKICAgICAgICB9CiAgICAgIH0pCiAgICB9CgogICAgYXN5bmMgZnVuY3Rpb24gc3RhcnQoKXsKICAgICAgd29ya2VyID0gbmV3IFdvcmtlcigKICAgICAgICBVUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtidWZmZXJdLCB7IHR5cGU6ICJ0ZXh0L2phdmFzY3JpcHQiIH0pKQogICAgICApCgogICAgICB3b3JrZXIub25tZXNzYWdlID0gd29ya2VyX21lc3NhZ2UKICAgICAgZW5jb2RlZF9kYXRhID0gW10KICAgICAgbm90ZV9ldnQgPSBudWxsCiAgICAgIHN0YXJ0X3RpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKQogICAgICB0aW1lID0gMTUKICAgICAgYXdhaXQgbG9hZF92aWRlbygpCiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgiaHR0cHM6Ly91bnBrZy5jb20vd2VibS13YXNtQDAuNC4xL2Rpc3Qvd2VibS13YXNtLndhc20iKQogICAgfQoKICAgIGZ1bmN0aW9uIHVwZGF0ZV9tb2RlKCl7CiAgICAgIGluc2VjdXJlID0gKGxvY2F0aW9uLmhhc2ggPT09ICIjaW5zZWN1cmUiKQogICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibW9kZV90ZXh0IikuaW5uZXJUZXh0ID0gKGluc2VjdXJlICYmICJpbnNlY3VyZSIgfHwgIm9mZmxpbmUiKQoKICAgICAgaWYobm90ZV9ldnQpewogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwdWJsaXNoIikuZGlzYWJsZWQgPSAhaW5zZWN1cmUKICAgICAgfQogICAgfQoKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0b2dnbGVfbW9kZSIpLm9uY2xpY2sgPSBmdW5jdGlvbihlKXsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgIGxvY2F0aW9uLmhhc2ggPSBpbnNlY3VyZSAmJiAiIyIgfHwgImluc2VjdXJlIgogICAgICB1cGRhdGVfbW9kZSgpCiAgICB9CgogICAgdXBkYXRlX21vZGUoKQogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
apparently one does not simply do schnorr signatures in javascript
all libs are something like 100 kB in size. im looking for something really compact
i thought i found it noble-secp256k1. promised 4 kB, was actually 8 kB
and turned out it does not do schnorr signatures, but requires 150 kB file to do schnorr signatures
i dont wanna use cdn scrips in data uris