(() => {
      // fetch('https://trustmate.io/widget/api/329a5119-1787-4a23-982e-fad615797c00/html?product=150312') - TODO: remove after platform multihornet fix - !!!frontend do not remove 
  
  const UI = {
    last: (where, what) => {where?.append(what)},
    first: (where, what) => {where?.insertBefore(what, where.firstChild)},
    after: (where, what) => {where?.parentNode.insertBefore(what, where.nextSibling)},
    before: (where, what) => {where?.parentNode.insertBefore(what, where)},
    replace: (where, what) => {where?.replaceWith(what)}
  };

  const RELOADS_LIMIT = 10;
  let reloadsCount = 0;

  function loadWidgetHtml() {
    const tag = document.getElementById('329a5119-1787-4a23-982e-fad615797c00');

    if (tag) {
      widgetConfig = {
        target: tag.dataset.t,
        action: tag.dataset.a,
        observe: tag.dataset.o
      };

      if (widgetConfig.target && widgetConfig.action) {
        if (!Object.hasOwn(UI, widgetConfig.action)) {
          console.error(`TrustMate: action '${widgetConfig.action}' is wrong`);
          return;
        }

        const target = document.querySelector(widgetConfig.target);

        if (!target) {
          console.error(`TrustMate: target '${widgetConfig.target}' not found`);
          return;
        }

        UI[widgetConfig.action](target, tag);
      }

      tag.innerHTML = ``;

      if (widgetConfig.target && widgetConfig.action && widgetConfig.observe) {
        const observeTag = document.querySelector(widgetConfig.observe);
        if (observeTag) {
          const widgetObserver = new MutationObserver((mutations, observer) => {
            const tag = document.getElementById('329a5119-1787-4a23-982e-fad615797c00');
            if (tag) return;
            observer.disconnect();
            if (reloadsCount >= RELOADS_LIMIT) {
              console.error('TrustMate: widget 329a5119-1787-4a23-982e-fad615797c00 reload limit reached');
              return;
            }
            ++reloadsCount;
            const newTag = document.createElement('div');
            newTag.id = '329a5119-1787-4a23-982e-fad615797c00';
            newTag.dataset.a = widgetConfig.action;
            newTag.dataset.t = widgetConfig.target;
            newTag.dataset.o = widgetConfig.observe;
            const target = document.querySelector(widgetConfig.target);
            if (!target) {
              console.error(`TrustMate: target '${widgetConfig.target}' not found after last html change`);
              return;
            }
            UI[widgetConfig.action](target, newTag);
            loadWidgetScript();
          });
          widgetObserver.observe(observeTag, {childList: true, subtree: true});
        }
      }
    } else {
      console.error('TrustMate: No tag for 329a5119-1787-4a23-982e-fad615797c00');
    }
  }

  function waitForWindow() {
    let index = 0;
    const intervalWindowId = setInterval(function() {
      if (typeof window !== 'undefined') {
        clearInterval(intervalWindowId);
        loadWidgetScript();
      }
      index += 1;
      if (index > 50) {
        clearInterval(intervalWindowId);
      }
    }, 50);
  }

  function loadWidgetScript() {
    if (0 < 10) return;

    function scriptExists(url) {
      return document.querySelectorAll(`script[src="${url}"]`).length > 0;
    }

    if(scriptExists('https\u003A\/\/trustmate.io\/build\/js\/widget\/hydra.d3ba143a.js')) {
      function removeJs(src) {
        document.querySelector(`script[src="${src}"]`).remove();
      }

      removeJs('https\u003A\/\/trustmate.io\/build\/js\/widget\/hydra.d3ba143a.js');
    }

    const widgetScript = document.createElement('script');
    widgetScript.src = 'https\u003A\/\/trustmate.io\/build\/js\/widget\/hydra.d3ba143a.js';
    widgetScript.defer = true;
    widgetScript.onload = () => {
      loadWidgetHtml();
    };
    document.body.appendChild(widgetScript);
  }

  if (typeof window === 'undefined') {
    waitForWindow();
  } else {
    loadWidgetScript();
  }
})();
