El código JavaScript desofuscado es el siguiente:

```javascript
const header = document.getElementById("header");
let lastPos = document.documentElement.scrollTop;
window.addEventListener("scroll", () => {
  const scrollPos = document.documentElement.scrollTop;
  if (scrollPos > lastPos) {
    if (scrollPos > header.offsetHeight) {
      header.classList.add("-translate-y-full");
      header.classList.remove("shadow-md");
    }
  } else {
    header.classList.remove("-translate-y-full");
    header.classList.add("shadow-md");
  }
  lastPos = scrollPos;
}, false);

const menu = document.getElementById("menu");
const searchBox = document.getElementById("search");
const menuToggle = document.getElementById("menu-toggle");
menuToggle.addEventListener("click", () => {
  menu.classList.toggle("hidden");
  searchBox.classList.toggle("hidden");
}, false);

const lazyImages = document.getElementsByClassName("lazy");
document.addEventListener("DOMContentLoaded", () => {
  [...lazyImages].forEach((img) => {
    const src = img.dataset.src;
    img.setAttribute("src", src);
    img.removeAttribute("data-src");
  });
}, false);

class SearchPosts {
  async init() {
    const params = new URL(location.href).searchParams;
    this.start = Number(params.get("start")) || 1;
    this.size = Number(params.get("size")) || 12;
    this.posts = await fetch("../index.json").then((response) => response.json());
    this.render(params.get("q"));
  }

  render(q) {
    const wrapper = document.getElementById("wrapper");
    const searchBox = document.getElementById("searchbox");
    const info = document.getElementById("info");
    if (typeof q === "string") {
      q = q.toLowerCase();
    } else {
      q = "";
    }
    history.replaceState(null, null, `?q=${q}&start=${this.start}&size=${this.size}`);
    searchBox.value = q;
    wrapper.innerHTML = "";
    if (q === "") {
      info.textContent = "Enter keywords in the search box above";
      return;
    }
    const filteredPosts = this.posts.filter((post) => post.title.toLowerCase().indexOf(q) !== -1);
    if (filteredPosts.length === 0) {
      info.textContent = `No results were found for "${q}"`;
      return;
    }
    const end = this.start - 1 + this.size;
    const displayed = this.start < end || this.start !== 1 ? `${this.start} to ${end}` : this.start;
    const plural = filteredPosts.length > 1 ? "s" : "";
    info.textContent = `Showing ${displayed} of ${filteredPosts.length} result${plural} found for "${q}"`;
    const slicedPosts = filteredPosts.slice(this.start - 1, end);
    slicedPosts.forEach((post) => {
      const { url, title, date } = post;
      wrapper.innerHTML += `
        <div class="w-full sm:w-1/2 md:w-1/3 self-stretch p-2 mb-2">
          <a href="${url}">
            <div class="rounded shadow-md h-full px-6 py-5">
              <div class="font-semibold text-lg mb-2">${title}</div>
              <p class="text-gray-700 mb-1" title="Published date">${date}</p>
            </div>
          </a>
        </div>
      `;
    });
  }
}
if ("/search/" === location.pathname) {
  const e = document.getElementById("searchbox"),
    t = new SearchPosts();
  t.init();
  e.addEventListener(
    "keyup",
    debounce(function () {
      t.render(this.value);
    }, 400)
  );
}

function debounce(e, t) {
  let s, n = [];
  return function (...o) {
    return new Promise((a) => {
      clearTimeout(s);
      s = setTimeout(() => {
        s = null;
        const t = e.apply(this, o);
        for (a of n) a(t);
        n = [];
      }, t);
      n.push(a);
    });
  }
}
```
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence