#llama running locally in browser #wasm
data:text/html;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICA8dGl0bGU+UnVuIExsYW1hIDIgbW9kZWxzIGluIHRoZSBicm93c2VyIHdpdGggV2ViQXNzZW1ibHk8L3RpdGxlPgo8L2hlYWQ+Cjxib2R5PgogIDxidXR0b24gY2xhc3M9ImJ1dHRvbiIgaWQ9InRvZ2dsZS1pbmZlcmVuY2UiPlJ1biBpbmZlcmVuY2U8L2J1dHRvbj4KICA8cCBpZD0ib3V0cHV0Ij48L3A+CiAgPHNjcmlwdCB0eXBlPSJtb2R1bGUiPgogIGNvbnN0IHdvcmtlcl9zdHIgPSBgCiAgaW1wb3J0IHsgV0FTSSwgV0FTSUNvbnRleHQgfSBmcm9tICJodHRwczovL2Nkbi5za3lwYWNrLmRldi9AcnVubm8vd2FzaSI7CiAgCiAgLy8gSGFuZGxlIGluY29taW5nIG1lc3NhZ2VzCiAgc2VsZi5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICBjb25zdCB7IGV2ZW50VHlwZSwgZXZlbnREYXRhLCBldmVudElkIH0gPSBldmVudC5kYXRhOwoKICAgIC8vIFB1bGxpbmcgdGhlIG1vZGVsCiAgICBQcm9taXNlLmFsbCgKICAgICAgWwogICAgICAgIGZldGNoKCJodHRwczovL2h1Z2dpbmdmYWNlLmNvL2thcnBhdGh5L3RpbnlsbGFtYXMvcmVzb2x2ZS9tYWluL3N0b3JpZXMyNjBLL3N0b3JpZXMyNjBLLmJpbj9kb3dubG9hZD10cnVlIikudGhlbihyZXMgPT4gcmVzLmFycmF5QnVmZmVyKCkpLAogICAgICAgIGZldGNoKCJodHRwczovL2h1Z2dpbmdmYWNlLmNvL2thcnBhdGh5L3RpbnlsbGFtYXMvcmVzb2x2ZS9tYWluL3N0b3JpZXMyNjBLL3RvazUxMi5iaW4iKS50aGVuKHJlcyA9PiByZXMuYXJyYXlCdWZmZXIoKSkKICAgICAgXSwKICAgICkudGhlbihhc3luYyBkYXRhID0+IHsKICAgICAgbGV0IG1vZGVsID0gZGF0YVswXTsKICAgICAgbGV0IHRva2VuaXplciA9IGRhdGFbMV07CgogICAgICBjb25zdCBjb250ZXh0ID0gbmV3IFdBU0lDb250ZXh0KHsKICAgICAgICBhcmdzOiBbIiIsICJtb2RlbC5iaW4iLCAiLXQiLCAiMC45Il0sCiAgICAgICAgc3Rkb3V0OiAoZGF0YSkgPT4gc2VsZi5wb3N0TWVzc2FnZSh7IGRhdGEgfSksCiAgICAgICAgc3RkZXJyOiAoZXJyKSA9PiBjb25zb2xlLmVycm9yKCJzdGRlcnIiLCBlcnIpLAogICAgICAgIGZzOiB7CiAgICAgICAgICAiL21vZGVsLmJpbiI6IHsKICAgICAgICAgICAgcGF0aDogIi9tb2RlbC5iaW4iLAogICAgICAgICAgICB0aW1lc3RhbXBzOiB7CiAgICAgICAgICAgICAgYWNjZXNzOiBuZXcgRGF0ZSgpLAogICAgICAgICAgICAgIGNoYW5nZTogbmV3IERhdGUoKSwKICAgICAgICAgICAgICBtb2RpZmljYXRpb246IG5ldyBEYXRlKCksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1vZGU6ICJiaW5hcnkiLAogICAgICAgICAgICBjb250ZW50OiBuZXcgVWludDhBcnJheShtb2RlbCksCiAgICAgICAgICB9LAogICAgICAgICAgIi90b2tlbml6ZXIuYmluIjogewogICAgICAgICAgICBwYXRoOiAiL3Rva2VuaXplci5iaW4iLAogICAgICAgICAgICB0aW1lc3RhbXBzOiB7CiAgICAgICAgICAgICAgYWNjZXNzOiBuZXcgRGF0ZSgpLAogICAgICAgICAgICAgIGNoYW5nZTogbmV3IERhdGUoKSwKICAgICAgICAgICAgICBtb2RpZmljYXRpb246IG5ldyBEYXRlKCksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIG1vZGU6ICJiaW5hcnkiLAogICAgICAgICAgICBjb250ZW50OiBuZXcgVWludDhBcnJheSh0b2tlbml6ZXIpLAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICB9KTsKCiAgICAgIFdBU0kuc3RhcnQoZmV0Y2goImh0dHBzOi8vaW5mZXJlbmNlLndhc21sYWJzLmRldi9sbGFtYTItYy53YXNtIiksIGNvbnRleHQpOwogICAgfSk7CgogIH0sIGZhbHNlKTsKICBgCiAgY29uc3Qgd29ya2VyX2Jsb2IgPSBuZXcgQmxvYihbd29ya2VyX3N0cl0pOwogIGNvbnN0IHdvcmtlcl9ibG9iX3VybCA9IFVSTC5jcmVhdGVPYmplY3RVUkwod29ya2VyX2Jsb2IpOwoKICBjb25zb2xlLmxvZygid29ya2VyX2Jsb2JfdXJsIiwgd29ya2VyX2Jsb2JfdXJsKQogIAogIGxldCB3b3JrZXI7CiAgbGV0IHJ1bm5pbmcgPSBmYWxzZTsKICBsZXQgYnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRvZ2dsZS1pbmZlcmVuY2UiKTsKICBsZXQgc3RvcFRpbWVvdXQgPSBudWxsOwoKICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoKSA9PiB7CiAgICBjb25zdCBvdXRwdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgib3V0cHV0Iik7CgogICAgaWYgKCFydW5uaW5nKSB7CiAgICAgIG91dHB1dC50ZXh0Q29udGVudCA9ICIiOwoKICAgICAgd29ya2VyID0gbmV3IFdvcmtlcih3b3JrZXJfYmxvYl91cmwsIHsgdHlwZTogIm1vZHVsZSIgfSk7CiAgICAgIC8vd29ya2VyID0gbmV3IFdvcmtlcigiL3dvcmtlci5qcyIsIHsgdHlwZTogIm1vZHVsZSIgfSk7CiAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7fSk7CiAgICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdtZXNzYWdlJywgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgaWYgKHN0b3BUaW1lb3V0ICE9IG51bGwpIHsKICAgICAgICAgIGNsZWFyVGltZW91dChzdG9wVGltZW91dCk7CiAgICAgICAgfQoKICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGV2ZW50LmRhdGE7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gYCR7b3V0cHV0LnRleHRDb250ZW50fSR7ZGF0YX1gOwoKICAgICAgICBzdG9wVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gewogICAgICAgICAgcnVubmluZyA9IGZhbHNlOwogICAgICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIlJ1biBpbmZlcmVuY2UiOwogICAgICAgIH0sIDUwMCk7CiAgICAgIH0pOwoKICAgICAgd29ya2VyLmFkZEV2ZW50TGlzdGVuZXIoImVycm9yIiwgZnVuY3Rpb24gKGVycm9yKSB7CiAgICAgICAgY29uc29sZS5sb2coIkVSUk9SOiAiLCBlcnJvcik7CiAgICAgIH0pOwoKICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIlN0b3AgaW5mZXJlbmNlIjsKICAgICAgcnVubmluZyA9IHRydWU7CiAgICB9IGVsc2UgewogICAgICBpZiAod29ya2VyICE9IG51bGwpIHsKICAgICAgICB3b3JrZXIudGVybWluYXRlKCk7CiAgICAgICAgd29ya2VyID0gbnVsbDsKICAgICAgfQoKICAgICAgYnV0dG9uLnRleHRDb250ZW50ID0gIlJ1biBpbmZlcmVuY2UiOwogICAgICBydW5uaW5nID0gZmFsc2U7CiAgICB9CiAgfSk7CiAgPC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=