您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
百应直播助手:扫码添加商品、Excel导入、扫码记录导出,支持授权验证
// ==UserScript== // @name 百应直播助手 // @version 3.0 // @description 百应直播助手:扫码添加商品、Excel导入、扫码记录导出,支持授权验证 // @match https://buyin.jinritemai.com/* // @grant GM_setValue // @grant GM_getValue // @require https://cdn.jsdelivr.net/npm/[email protected]/dist/xlsx.full.min.js // @namespace https://greasyfork.org/users/1495331 // ==/UserScript== function productLiveStreamingAssistant(str) { const binaryString = atob(str); const bytes = Uint8Array.from(binaryString, c => c.charCodeAt(0)); return new TextDecoder('utf-8').decode(bytes); } const encoded = "KGZ1bmN0aW9uICgpIHsKICAndXNlIHN0cmljdCc7CgogIGxldCBiYXJjb2RlID0gJyc7CgoKICBmdW5jdGlvbiBjcmVhdGVBdXRoRGlhbG9nKCkgewogICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgT2JqZWN0LmFzc2lnbihtYXNrLnN0eWxlLCB7CiAgICAgIHBvc2l0aW9uOiAnZml4ZWQnLAogICAgICB0b3A6IDAsIGxlZnQ6IDAsIHJpZ2h0OiAwLCBib3R0b206IDAsCiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3JnYmEoMCwwLDAsMC41KScsCiAgICAgIGRpc3BsYXk6ICdmbGV4JywKICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsCiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJywKICAgICAgekluZGV4OiA5OTk5OTk5LAogICAgfSk7CgogICAgY29uc3QgZGlhbG9nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBPYmplY3QuYXNzaWduKGRpYWxvZy5zdHlsZSwgewogICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjZmZmJywKICAgICAgcGFkZGluZzogJzIwcHggMzBweCcsCiAgICAgIGJvcmRlclJhZGl1czogJzhweCcsCiAgICAgIGJveFNoYWRvdzogJzAgNHB4IDE1cHggcmdiYSgwLDAsMCwwLjMpJywKICAgICAgd2lkdGg6ICczMjBweCcsCiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsCiAgICB9KTsKCiAgICBjb25zdCB0aXRsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2gyJyk7CiAgICB0aXRsZS50ZXh0Q29udGVudCA9ICfor7fovpPlhaXmjojmnYPnoIEnOwogICAgT2JqZWN0LmFzc2lnbih0aXRsZS5zdHlsZSwgewogICAgICBjb2xvcjogJyMxODkwZmYnLAogICAgICBtYXJnaW5Cb3R0b206ICcxNnB4JywKICAgICAgZm9udFNpemU6ICcyMHB4JywKICAgIH0pOwoKICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKTsKICAgIGlucHV0LnR5cGUgPSAncGFzc3dvcmQnOwogICAgaW5wdXQucGxhY2Vob2xkZXIgPSAn6K+36L6T5YWl5o6I5p2D56CBJzsKICAgIE9iamVjdC5hc3NpZ24oaW5wdXQuc3R5bGUsIHsKICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgcGFkZGluZzogJzEwcHgnLAogICAgICBmb250U2l6ZTogJzE2cHgnLAogICAgICBib3JkZXI6ICcxcHggc29saWQgI2NjYycsCiAgICAgIGJvcmRlclJhZGl1czogJzRweCcsCiAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLAogICAgICBtYXJnaW5Cb3R0b206ICcxMnB4JywKICAgIH0pOwoKICAgIGNvbnN0IGJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpOwogICAgYnV0dG9uLnRleHRDb250ZW50ID0gJ+ehruiupCc7CiAgICBPYmplY3QuYXNzaWduKGJ1dHRvbi5zdHlsZSwgewogICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMTg5MGZmJywKICAgICAgY29sb3I6ICcjZmZmJywKICAgICAgYm9yZGVyOiAnbm9uZScsCiAgICAgIHBhZGRpbmc6ICcxMHB4JywKICAgICAgd2lkdGg6ICcxMDAlJywKICAgICAgZm9udFNpemU6ICcxNnB4JywKICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JywKICAgICAgY3Vyc29yOiAncG9pbnRlcicsCiAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJywKICAgIH0pOwoKICAgIGNvbnN0IGVycm9yTXNnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBlcnJvck1zZy50ZXh0Q29udGVudCA9ICcnOwogICAgT2JqZWN0LmFzc2lnbihlcnJvck1zZy5zdHlsZSwgewogICAgICBjb2xvcjogJ3JlZCcsCiAgICAgIGZvbnRTaXplOiAnMTRweCcsCiAgICAgIG1hcmdpblRvcDogJzhweCcsCiAgICAgIGhlaWdodDogJzE4cHgnLAogICAgICB2aXNpYmlsaXR5OiAnaGlkZGVuJywKICAgIH0pOwoKYnV0dG9uLm9uY2xpY2sgPSAoKSA9PiB7CiAgICBjb25zdCBpbnB1dFZhbCA9IGlucHV0LnZhbHVlLnRyaW0oKTsKCiAgIAogICAgZnVuY3Rpb24gZGVjb2RlQmFzZTY0KHN0cikgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHJldHVybiBhdG9iKHN0cik7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9CgoKICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7CiAgICBjb25zdCB5eXl5ID0gbm93LmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKTsKICAgIGNvbnN0IE1NID0gKG5vdy5nZXRNb250aCgpICsgMSkudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpOwogICAgY29uc3QgZHluYW1pY0NvZGUgPSBgRkxZJHt5eXl5fSR7TU19YDsKCiAgCiAgICBjb25zdCBkZWNvZGVkSW5wdXQgPSBkZWNvZGVCYXNlNjQoaW5wdXRWYWwpOwoKCiAgICBpZiAoZGVjb2RlZElucHV0ID09PSBkeW5hbWljQ29kZSkgewogICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFzayk7CiAgICAgICAgc2V0VGltZW91dCgoKSA9PiBzdGFydFNjcmlwdCgpLCAwKTsKICAgIH0gZWxzZSB7CiAgICAgICAgZXJyb3JNc2cudGV4dENvbnRlbnQgPSAn5o6I5p2D56CB6ZSZ6K+v77yM6K+36YeN6K+VJzsKICAgICAgICBlcnJvck1zZy5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnOwogICAgfQp9OwoKCiAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGUgPT4gewogICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicpIGJ1dHRvbi5jbGljaygpOwogICAgfSk7CgogICAgZGlhbG9nLmFwcGVuZENoaWxkKHRpdGxlKTsKICAgIGRpYWxvZy5hcHBlbmRDaGlsZChpbnB1dCk7CiAgICBkaWFsb2cuYXBwZW5kQ2hpbGQoYnV0dG9uKTsKICAgIGRpYWxvZy5hcHBlbmRDaGlsZChlcnJvck1zZyk7CiAgICBtYXNrLmFwcGVuZENoaWxkKGRpYWxvZyk7CiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hc2spOwogICAgaW5wdXQuZm9jdXMoKTsKICB9CgoKICBmdW5jdGlvbiBzdGFydFNjcmlwdCgpIHsKICAgbWFpbigpOwogIH0KCiAgZnVuY3Rpb24gbWFpbigpIHsKICAgbGV0IGVuYWJsZUV4cGxhaW5DbGljayA9IHRydWU7CiAgICBsZXQgZW5hYmxlRGVsZXRlTWF4U2VxID0gdHJ1ZTsKICAgIGxldCBzY2FubmVkQmFyY29kZXMgPSBbXTsKCiAgICBhZGRVbmlmaWVkUGFuZWwoKTsKCiAgICBsZXQgYmFyY29kZSA9ICcnOwogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZSkgewogICAgICAgIGlmIChlLnRhcmdldCA9PT0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Zpc2libGUtYmFyY29kZS1pbnB1dCcpKSByZXR1cm47CiAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmIGJhcmNvZGUpIHsKICAgICAgICAgICAgcHJvY2Vzc0JhcmNvZGUoYmFyY29kZSk7CiAgICAgICAgICAgIGJhcmNvZGUgPSAnJzsKICAgICAgICB9IGVsc2UgaWYgKGUua2V5Lmxlbmd0aCA9PT0gMSkgewogICAgICAgICAgICBiYXJjb2RlICs9IGUua2V5OwogICAgICAgIH0KICAgIH0pOwoKICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NCYXJjb2RlKGJhcmNvZGUpIHsKICAgICAgICBjb25zdCBwcm9kdWN0TWFwID0gR01fZ2V0VmFsdWUoJ3Byb2R1Y3RNYXAnLCB7fSk7CiAgICAgICAgY29uc3QgcHJvZHVjdFVybCA9IHByb2R1Y3RNYXBbYmFyY29kZV07CiAgICAgICAgaWYgKCFwcm9kdWN0VXJsKSByZXR1cm4gc2hvd1RvcE1lc3NhZ2UoYOacquaJvuWIsOadoeeggSAke2JhcmNvZGV9IOWvueW6lOeahOWVhuWTgemTvuaOpWAsICdlcnJvcicpOwoKICAgICAgICB0cnkgewogICAgICAgICAgICBsZXQgYWRkQnV0dG9uID0gYXdhaXQgd2FpdEZvckVsZW1lbnRCeVRleHQoJ2J1dHRvbi5hdXhvLWJ0bicsICfmt7vliqDnm7Tmkq3llYblk4EnLCAzMDAwKQogICAgICAgICAgICAgICAgfHwgYXdhaXQgd2FpdEZvckVsZW1lbnRCeVRleHQoJ2J1dHRvbi5hdXhvLWJ0bicsICfmt7vliqDllYblk4EnLCAzMDAwKTsKICAgICAgICAgICAgaWYgKCFhZGRCdXR0b24pIHRocm93IG5ldyBFcnJvcign5om+5LiN5Yiw5re75Yqg5ZWG5ZOB5oyJ6ZKuJyk7CiAgICAgICAgICAgIGFkZEJ1dHRvbi5jbGljaygpOwoKICAgICAgICAgICAgY29uc3QgbGlua1RhYiA9IGF3YWl0IHdhaXRGb3JFbGVtZW50QnlUZXh0KCcuYXV4by10YWJzLXRhYi1idG4nLCAn5ZWG5ZOB6ZO+5o6lJywgNTAwMCk7CiAgICAgICAgICAgIGlmICghbGlua1RhYikgdGhyb3cgbmV3IEVycm9yKCfmib7kuI3liLDigJzllYblk4Hpk77mjqXigJ3pobXnrb4nKTsKICAgICAgICAgICAgbGlua1RhYi5jbGljaygpOwoKICAgICAgICAgICAgY29uc3QgdXJsRGl2ID0gYXdhaXQgd2FpdEZvckVsZW1lbnQoJyNzaG9wLXdpbmRvdy11cmwtZWRpdCcsIDUwMDApOwogICAgICAgICAgICBpZiAoIXVybERpdikgdGhyb3cgbmV3IEVycm9yKCfmib7kuI3liLDllYblk4Hpk77mjqXovpPlhaXmoYYnKTsKCiAgICAgICAgICAgIHVybERpdi5mb2N1cygpOwogICAgICAgICAgICBjb25zdCBkYXRhID0gbmV3IERhdGFUcmFuc2ZlcigpOwogICAgICAgICAgICBkYXRhLnNldERhdGEoJ3RleHQvcGxhaW4nLCBwcm9kdWN0VXJsKTsKICAgICAgICAgICAgY29uc3QgcGFzdGVFdmVudCA9IG5ldyBDbGlwYm9hcmRFdmVudCgncGFzdGUnLCB7IGNsaXBib2FyZERhdGE6IGRhdGEsIGJ1YmJsZXM6IHRydWUgfSk7CiAgICAgICAgICAgIHVybERpdi5kaXNwYXRjaEV2ZW50KHBhc3RlRXZlbnQpOwoKICAgICAgICAgICAgY29uc3QgcGFyc2VCdG4gPSBhd2FpdCB3YWl0Rm9yRW5hYmxlZEJ1dHRvbignLmxpbmtCdG4tV0M3N0h1JywgMTAwMDApOwogICAgICAgICAgICBpZiAoIXBhcnNlQnRuKSB0aHJvdyBuZXcgRXJyb3IoJ+ivhuWIq+mTvuaOpeaMiemSruacquWQr+eUqCcpOwogICAgICAgICAgICBwYXJzZUJ0bi5jbGljaygpOwoKICAgICAgICAgICAgY29uc3QgY29uZmlybUJ0biA9IGF3YWl0IHdhaXRGb3JFbmFibGVkQnV0dG9uKCcuc3VibWl0LVpDSGhjaicsIDEwMDAwKTsKICAgICAgICAgICAgaWYgKCFjb25maXJtQnRuKSB0aHJvdyBuZXcgRXJyb3IoJ+ehruiupOa3u+WKoOaMiemSruacquWQr+eUqCcpOwogICAgICAgICAgICBjb25maXJtQnRuLmNsaWNrKCk7CgogICAgICAgICAgICBpZiAoZW5hYmxlRXhwbGFpbkNsaWNrKSB7CiAgICAgICAgICAgICAgICBjb25zdCBleHBsYWluQnRuID0gYXdhaXQgd2FpdEZvckVsZW1lbnRCeVRleHQoJ2J1dHRvbi5sdmMyLWdyZXktYnRuJywgJ+iusuinoycsIDMwMDApOwogICAgICAgICAgICAgICAgaWYgKGV4cGxhaW5CdG4pIGV4cGxhaW5CdG4uY2xpY2soKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGVuYWJsZURlbGV0ZU1heFNlcSkgYXdhaXQgZGVsZXRlTWF4U2VxdWVuY2VQcm9kdWN0KCk7CgogICAgICAgICAgICBpZiAoIXNjYW5uZWRCYXJjb2Rlcy5pbmNsdWRlcyhiYXJjb2RlKSkgc2Nhbm5lZEJhcmNvZGVzLnB1c2goYmFyY29kZSk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIHNob3dUb3BNZXNzYWdlKGDmk43kvZzlpLHotKXvvJoke2Vyci5tZXNzYWdlfWAsICdlcnJvcicpOwogICAgICAgICAgICBjb25zb2xlLndhcm4oJ+aJq+eggeWkhOeQhuWksei0pTonLCBlcnIpOwogICAgICAgIH0KICAgIH0KCmFzeW5jIGZ1bmN0aW9uIGRlbGV0ZU1heFNlcXVlbmNlUHJvZHVjdCgpIHsKICAgIHRyeSB7CiAgICAgICAgY29uc3QgdGhyZXNob2xkSW5wdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVsZXRlLXRocmVzaG9sZCcpOyAvLyDpmIjlgLwgWAogICAgICAgIGNvbnN0IHJldGFpbklucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JldGFpbi1jb3VudCcpOyAvLyDkv53nlZkgWQogICAgICAgIGNvbnN0IHRocmVzaG9sZFZhbCA9IHBhcnNlSW50KHRocmVzaG9sZElucHV0Py52YWx1ZSB8fCAnNycsIDEwKTsgLy8g6buY6K6kNwogICAgICAgIGNvbnN0IHJldGFpblZhbCA9IHBhcnNlSW50KHJldGFpbklucHV0Py52YWx1ZSB8fCAnMScsIDEwKTsgLy8g6buY6K6kMQoKICAgICAgICBpZiAoaXNOYU4odGhyZXNob2xkVmFsKSB8fCBpc05hTihyZXRhaW5WYWwpIHx8IHRocmVzaG9sZFZhbCA8IHJldGFpblZhbCB8fCByZXRhaW5WYWwgPD0gMCkgewogICAgICAgICAgICBjb25zb2xlLmxvZygn6ZiI5YC85ZKM5L+d55WZ5YC85peg5pWI77yM6Lez6L+H5Yig6ZmkJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IGVmZmVjdGl2ZVRocmVzaG9sZCA9IHRocmVzaG9sZFZhbCArIDE7IAogICAgICAgIGNvbnN0IGlucHV0cyA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQuYXV4by1pbnB1dCcpKTsgCiAgICAgICAgY29uc3QgcHJvZHVjdENvdW50ID0gaW5wdXRzLmxlbmd0aDsKCiAgICAgICAgaWYgKHByb2R1Y3RDb3VudCA8IGVmZmVjdGl2ZVRocmVzaG9sZCkgewogICAgICAgICAgICBjb25zb2xlLmxvZyhg5b2T5YmN5ZWG5ZOB5pWw6YeP5Li6ICR7cHJvZHVjdENvdW50fe+8jOacqui+vuWIsOWIoOmZpOmYiOWAvCAke2VmZmVjdGl2ZVRocmVzaG9sZH3vvIzkuI3miafooYzliKDpmaRgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgIAogICAgICAgIGNvbnN0IHNlcmlhbE5vTGlzdCA9IGlucHV0cy5tYXAoKGVsLCBpZHgpID0+IHsKICAgICAgICAgICAgY29uc3QgdmFsID0gcGFyc2VJbnQoZWwudmFsdWUsIDEwKTsKICAgICAgICAgICAgcmV0dXJuIHsgdmFsLCBpZHggfTsKICAgICAgICB9KS5maWx0ZXIoaXRlbSA9PiAhaXNOYU4oaXRlbS52YWwpKTsKCiAgICAgICAgaWYgKHNlcmlhbE5vTGlzdC5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ+WVhuWTgeW6j+WPt+WIl+ihqOS4uuepuu+8jOi3s+i/h+WIoOmZpCcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAKICAgICAgICBzZXJpYWxOb0xpc3Quc29ydCgoYSwgYikgPT4gYS52YWwgLSBiLnZhbCk7CgogICAgCiAgICAgICAgY29uc3QgdGFyZ2V0RGVsZXRlSW5kZXggPSB0aHJlc2hvbGRWYWwgLSByZXRhaW5WYWw7IAoKICAgICAgICBpZiAodGFyZ2V0RGVsZXRlSW5kZXggPCAwIHx8IHRhcmdldERlbGV0ZUluZGV4ID49IHNlcmlhbE5vTGlzdC5sZW5ndGgpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coYOimgeWIoOmZpOeahOW6j+WPt+e0ouW8lSAke3RhcmdldERlbGV0ZUluZGV4fSDkuI3lkIjms5XvvIzot7Pov4fliKDpmaRgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uc3QgdGFyZ2V0ID0gc2VyaWFsTm9MaXN0W3RhcmdldERlbGV0ZUluZGV4XTsgCgogIAogICAgICAgIGNvbnN0IGNoZWNrYm94ZXMgPSBBcnJheS5mcm9tKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0sIGlucHV0LmF1eG8tcmFkaW8taW5wdXQnKSk7CiAgICAgICAgY29uc3QgY2hlY2tib3ggPSBjaGVja2JveGVzW3RhcmdldC5pZHhdOwogICAgICAgIGlmICghY2hlY2tib3gpIHsKICAgICAgICAgICAgY29uc29sZS5sb2coJ+acquaJvuWIsOWvueW6lOWkjemAieahhu+8jOi3s+i/h+WIoOmZpCcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICghY2hlY2tib3guY2hlY2tlZCkgY2hlY2tib3guY2xpY2soKTsKCiAgICAgIAogICAgICAgIGNvbnN0IGRlbGV0ZUJ0biA9IEFycmF5LmZyb20oZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYnV0dG9uLmF1eG8tYnRuLCBidXR0b24nKSkKICAgICAgICAgICAgLmZpbmQoYnRuID0+IGJ0bi50ZXh0Q29udGVudC50cmltKCkgPT09ICfliKDpmaQnICYmICFidG4uZGlzYWJsZWQpOwogICAgICAgIGlmIChkZWxldGVCdG4pIHsKICAgICAgICAgICAgZGVsZXRlQnRuLmNsaWNrKCk7CiAgICAgICAgICAgIGF3YWl0IHdhaXRGb3JEZWxldGVDb25maXJtQW5kQ2xpY2soKTsKICAgICAgICAgICAgY29uc29sZS5sb2coYOWIoOmZpOW6j+WPt+S4uiAke3RhcmdldC52YWx9IOeahOWVhuWTgeaIkOWKn2ApOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmnKrmib7liLDliKDpmaTmjInpkq4nKTsKICAgICAgICB9CiAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgY29uc29sZS53YXJuKCfliKDpmaTllYblk4HlpLHotKU6JywgZSk7CiAgICB9Cn0KCgoKICAgIGFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JEZWxldGVDb25maXJtQW5kQ2xpY2sodGltZW91dCA9IDUwMDApIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7CiAgICAgICAgICAgIGNvbnN0IHN0YXJ0ID0gRGF0ZS5ub3coKTsKICAgICAgICAgICAgY29uc3QgdGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBidG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuYXV4by1tb2RhbC1jb25maXJtLWJ0bnMgYnV0dG9uLmF1eG8tYnRuLXByaW1hcnknKTsKICAgICAgICAgICAgICAgIGlmIChidG4pIHsKICAgICAgICAgICAgICAgICAgICBidG4uY2xpY2soKTsKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsKICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKERhdGUubm93KCkgLSBzdGFydCA+IHRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKHRpbWVyKTsKICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sIDIwMCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gd2FpdEZvckVsZW1lbnQoc2VsZWN0b3IsIHRpbWVvdXQgPSA1MDAwKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7CiAgICAgICAgICAgIChmdW5jdGlvbiBjaGVjaygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICAgICAgICAgICAgICBpZiAoZWwpIHJldHVybiByZXNvbHZlKGVsKTsKICAgICAgICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnQgPiB0aW1lb3V0KSByZXR1cm4gcmVzb2x2ZShudWxsKTsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2ssIDIwMCk7CiAgICAgICAgICAgIH0pKCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gd2FpdEZvckVuYWJsZWRCdXR0b24oc2VsZWN0b3IsIHRpbWVvdXQgPSA1MDAwKSB7CiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4gewogICAgICAgICAgICBjb25zdCBzdGFydCA9IERhdGUubm93KCk7CiAgICAgICAgICAgIChmdW5jdGlvbiBjaGVjaygpIHsKICAgICAgICAgICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7CiAgICAgICAgICAgICAgICBpZiAoZWwgJiYgIWVsLmRpc2FibGVkKSByZXR1cm4gcmVzb2x2ZShlbCk7CiAgICAgICAgICAgICAgICBpZiAoRGF0ZS5ub3coKSAtIHN0YXJ0ID4gdGltZW91dCkgcmV0dXJuIHJlc29sdmUobnVsbCk7CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGNoZWNrLCAyMDApOwogICAgICAgICAgICB9KSgpOwogICAgICAgIH0pOwogICAgfQoKICAgIGZ1bmN0aW9uIHdhaXRGb3JFbGVtZW50QnlUZXh0KHNlbGVjdG9yLCB0ZXh0LCB0aW1lb3V0ID0gNTAwMCkgewogICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHsKICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBEYXRlLm5vdygpOwogICAgICAgICAgICAoZnVuY3Rpb24gY2hlY2soKSB7CiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpOwogICAgICAgICAgICAgICAgZm9yIChsZXQgZWwgb2YgZWxlbWVudHMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZWwudGV4dENvbnRlbnQuaW5jbHVkZXModGV4dCkpIHJldHVybiByZXNvbHZlKGVsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChEYXRlLm5vdygpIC0gc3RhcnQgPiB0aW1lb3V0KSByZXR1cm4gcmVzb2x2ZShudWxsKTsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2hlY2ssIDIwMCk7CiAgICAgICAgICAgIH0pKCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gc2hvd1RvcE1lc3NhZ2UobWVzc2FnZSwgdHlwZSA9ICdpbmZvJykgewogICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxpdmUtdG9wLW1lc3NhZ2UnKTsKICAgICAgICBpZiAoZXhpc3RpbmcpIGV4aXN0aW5nLnJlbW92ZSgpOwogICAgICAgIGNvbnN0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGRpdi5jbGFzc05hbWUgPSAnbGl2ZS10b3AtbWVzc2FnZSc7CiAgICAgICAgZGl2LnRleHRDb250ZW50ID0gbWVzc2FnZTsKICAgICAgICBPYmplY3QuYXNzaWduKGRpdi5zdHlsZSwgewogICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJywKICAgICAgICAgICAgdG9wOiAnODBweCcsCiAgICAgICAgICAgIGxlZnQ6ICc1MCUnLAogICAgICAgICAgICB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKC01MCUpJywKICAgICAgICAgICAgYmFja2dyb3VuZDogdHlwZSA9PT0gJ2Vycm9yJyA/ICcjZmZmMWYwJyA6ICcjZjZmZmVkJywKICAgICAgICAgICAgY29sb3I6IHR5cGUgPT09ICdlcnJvcicgPyAnI2NmMTMyMicgOiAnIzM4OWUwZCcsCiAgICAgICAgICAgIHBhZGRpbmc6ICcxMHB4IDIwcHgnLAogICAgICAgICAgICBmb250U2l6ZTogJzE1cHgnLAogICAgICAgICAgICBib3JkZXI6IGAxcHggc29saWQgJHt0eXBlID09PSAnZXJyb3InID8gJyNmZmEzOWUnIDogJyNiN2ViOGYnfWAsCiAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzZweCcsCiAgICAgICAgICAgIGJveFNoYWRvdzogJzAgMnB4IDEwcHggcmdiYSgwLDAsMCwwLjEpJywKICAgICAgICAgICAgekluZGV4OiA5OTk5OTksCiAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJwogICAgICAgIH0pOwogICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGl2KTsKICAgICAgICBzZXRUaW1lb3V0KCgpID0+IGRpdi5yZW1vdmUoKSwgMzAwMCk7CiAgICB9CgoKICBmdW5jdGlvbiBhZGRVbmlmaWVkUGFuZWwoKSB7CiAgICAgICAgY29uc3Qgc3R5bGUgPSBgCiAgICAgICAgPHN0eWxlPgogICAgICAgICAgICAjdW5pZmllZC1wYW5lbCB7CiAgICAgICAgICAgICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgICAgICAgICAgICBib3R0b206IDYwcHg7CiAgICAgICAgICAgICAgICBsZWZ0OiAyMHB4OwogICAgICAgICAgICAgICAgd2lkdGg6IDI4MHB4OwogICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI2ZmZjsKICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgICAgICBib3gtc2hhZG93OiAwIDJweCAxMHB4IHJnYmEoMCwwLDAsMC4yKTsKICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbDsKICAgICAgICAgICAgICAgIHotaW5kZXg6IDk5OTk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgI3VuaWZpZWQtcGFuZWwgaDMgewogICAgICAgICAgICAgICAgbWFyZ2luOiAwOwogICAgICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICMxNjc3ZmY7CiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxMHB4OwogICAgICAgICAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDEwcHg7CiAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICAgICAgICAgIGN1cnNvcjogbW92ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAjcGFuZWwtY29udGVudCB7IHBhZGRpbmc6IDEycHg7IH0KICAgICAgICAgICAgI3BhbmVsLWNvbnRlbnQuY29sbGFwc2VkIHsgZGlzcGxheTogbm9uZTsgfQogICAgICAgICAgICAuc2VjdGlvbi10aXRsZSB7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDsKICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDEycHg7CiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7CiAgICAgICAgICAgICAgICBjb2xvcjogYmxhY2s7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFiZWwgc3BhbiB7CiAgICAgICAgICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgICAgICAgICBmb250LXdlaWdodDogNTAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxhYmVsIHsgZm9udC1zaXplOiAxM3B4OyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IG1hcmdpbi1ib3R0b206IDhweDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgfQogICAgICAgICAgICBpbnB1dFt0eXBlPSJ0ZXh0Il0sIGlucHV0W3R5cGU9ImZpbGUiXSB7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIHBhZGRpbmc6IDZweDsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7CiAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjOwogICAgICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwogICAgICAgICAgICB9CiAgICAgICAgICAgICNleHBvcnQtYnRuIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICM1MmM0MWE7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgICAgICAgICAgfQogICAgICAgICAgICAjcmVzZXQtYnRuIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZjRkNGY7CiAgICAgICAgICAgICAgICBib3JkZXI6IG5vbmU7CiAgICAgICAgICAgICAgICBjb2xvcjogd2hpdGU7CiAgICAgICAgICAgICAgICBwYWRkaW5nOiA4cHg7CiAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsKICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDZweDsKICAgICAgICAgICAgfQogICAgICAgIDwvc3R5bGU+YDsKICAgICAgICBkb2N1bWVudC5oZWFkLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgc3R5bGUpOwoKICAgICAgICBjb25zdCBodG1sID0gYAogICAgICAgIDxkaXYgaWQ9InVuaWZpZWQtcGFuZWwiPgogICAgICAgICAgICA8aDMgaWQ9InBhbmVsLWhlYWRlciI+5ZWG5ZOB55u05pKt5Yqp5omLCiAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJtaW5pbWl6ZS1idG4iIHN0eWxlPSJiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOm5vbmU7Y29sb3I6d2hpdGU7Zm9udC1zaXplOjEzcHg7Y3Vyc29yOnBvaW50ZXI7Ij7mnIDlsI/ljJY8L2J1dHRvbj4KICAgICAgICAgICAgPC9oMz4KICAgICAgICAgICAgPGRpdiBpZD0icGFuZWwtY29udGVudCI+CiAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXRpdGxlIj7llYblk4HmlbDmja7lr7zlhaU8L2Rpdj4KICAgICAgICAgICAgICAgPGlucHV0IGlkPSJleGNlbC1maWxlIiB0eXBlPSJmaWxlIiBhY2NlcHQ9Ii54bHN4LC5jc3YiIG11bHRpcGxlIC8+CiAgICAgICAgICAgICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEycHg7IG1hcmdpbi10b3A6LTZweDsiPuaUr+aMgUV4Y2Vs5ZKMQ3N25paH5Lu277yM5qC85byP77ya56ys5LiA5YiX5p2h56CB77yM56ys5LqM5YiX6ZO+5o6lPC9wPgogICAgICA8YnV0dG9uIGlkPSJjbGVhci1pbXBvcnRlZC1kYXRhLWJ0biIKICAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZDkzNjNlOyBjb2xvcjojZmZmOyBwYWRkaW5nOjhweDsgd2lkdGg6MTAwJTsgZm9udC1zaXplOjE0cHg7IGJvcmRlcjpub25lOyBib3JkZXItcmFkaXVzOjZweDsgY3Vyc29yOnBvaW50ZXI7IG1hcmdpbi10b3A6NnB4OyI+CiAgICDmuIXnqbrlr7zlhaXmlbDmja4KPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+5omr56CBL+i+k+WFpeadoeeggTwvZGl2PgogICAgICAgICAgICAgICAgPGlucHV0IGlkPSJ2aXNpYmxlLWJhcmNvZGUtaW5wdXQiIHR5cGU9InRleHQiIHBsYWNlaG9sZGVyPSLor7fovpPlhaXmiJbmiavnoIHmnaHnoIHvvIzlm57ovabmj5DkuqQiIC8+CiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InNlY3Rpb24tdGl0bGUiPuWKn+iDveaOp+WItjwvZGl2PgogICAgICAgICAgICAgICAgPGxhYmVsPjxzcGFuPuiHquWKqOiusuinozwvc3Bhbj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ0b2dnbGUtZXhwbGFpbiIgY2hlY2tlZD48L2xhYmVsPgogICAgICAgICAgICAgICAgPGxhYmVsPjxzcGFuPuiHquWKqOWIoOmZpDwvc3Bhbj48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJ0b2dnbGUtZGVsZXRlIiBjaGVja2VkPjwvbGFiZWw+CiAgICAgICAgICAgIAo8IS0tIOWIoOmZpOmYiOWAvCAtLT4KPGRpdiBzdHlsZT0iZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA2cHg7IG1hcmdpbi10b3A6IDZweDtmb250LXNpemU6IDE0cHg7Ij4KICA8bGFiZWwgZm9yPSJkZWxldGUtdGhyZXNob2xkIiBzdHlsZT0ibWFyZ2luOiAwOyI+5Yig6Zmk6ZiI5YC8OjwvbGFiZWw+CiAgPGlucHV0IGlkPSJkZWxldGUtdGhyZXNob2xkIiB0eXBlPSJudW1iZXIiIG1pbj0iMSIgdmFsdWU9IjciCiAgICAgICAgIHN0eWxlPSJ3aWR0aDogNjBweDsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgYm9yZGVyLXJhZGl1czogNHB4OyI+CiAgPHNwYW4+5Lu25ZWG5ZOBPC9zcGFuPgo8L2Rpdj4KCjwhLS0g5L+d55WZ5ZCO5ZWG5ZOB5pWw6YePIC0tPgo8ZGl2IHN0eWxlPSJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDZweDsgbWFyZ2luLXRvcDogNnB4O2ZvbnQtc2l6ZTogMTRweDsiPgogIDxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyBtYXJnaW4tdG9wOiA0cHg7Ij4KICAgPGxhYmVsIGZvcj0icmV0YWluLWNvdW50IiBzdHlsZT0ibWFyZ2luOiAwOyI+5L+d55WZ5ZCOOjwvbGFiZWw+CiAgICAgIDxpbnB1dCBpZD0icmV0YWluLWNvdW50IiB0eXBlPSJudW1iZXIiIG1pbj0iMSIgdmFsdWU9IjEiCiAgICAgICAgIHN0eWxlPSJ3aWR0aDogNjBweDsgcGFkZGluZzogMnB4IDZweDsgYm9yZGVyOiAxcHggc29saWQgI2NjYzsgYm9yZGVyLXJhZGl1czogNHB4OyI+CiAgICA8c3Bhbj7ku7bllYblk4E8L3NwYW4+CiAgPC9kaXY+CjwvZGl2PgoKCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ic2VjdGlvbi10aXRsZSI+5o6S5ZOB5a+85Ye6PC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0icGFuZWwtc2VjdGlvbiI+CjxkaXYgc3R5bGU9ImRpc3BsYXk6IGZsZXg7IGdhcDogOHB4OyBtYXJnaW4tdG9wOiA2cHg7Ij4KICA8YnV0dG9uIGlkPSJleHBvcnQtYnRuIiBjbGFzcz0iYWN0aW9uLWJ0biBncmVlbi1idG4iPgogICAgIOS4i+i9veiusOW9lQogIDwvYnV0dG9uPgogIDxidXR0b24gaWQ9InJlc2V0LWJ0biIgY2xhc3M9ImFjdGlvbi1idG4gcmVkLWJ0biI+CiAgICAg6YeN572u6K6w5b2VCiAgPC9idXR0b24+CjwvZGl2Pgo8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+YDsKICAgICAgICBkb2N1bWVudC5ib2R5Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlZW5kJywgaHRtbCk7CgogICAgICAgIG1ha2VFbGVtZW50RHJhZ2dhYmxlKCd1bmlmaWVkLXBhbmVsJywgJyNwYW5lbC1oZWFkZXInKTsKCiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4Y2VsLWZpbGUnKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZSkgewogICAgY29uc3QgZmlsZSA9IGUudGFyZ2V0LmZpbGVzWzBdOwogICAgaWYgKCFmaWxlKSByZXR1cm47CgogICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTsKICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbiAoZXZ0KSB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBVaW50OEFycmF5KGV2dC50YXJnZXQucmVzdWx0KTsKICAgICAgICAgICAgY29uc3Qgd2IgPSBYTFNYLnJlYWQoZGF0YSwgeyB0eXBlOiAnYXJyYXknIH0pOwoKICAgICAgIAogICAgICAgICAgICBjb25zdCBleGlzdGluZ01hcCA9IEdNX2dldFZhbHVlKCdwcm9kdWN0TWFwJywge30pOwogICAgICAgICAgICBsZXQgbmV3Q291bnQgPSAwOwoKICAgICAgICAgICAgd2IuU2hlZXROYW1lcy5mb3JFYWNoKHNoZWV0TmFtZSA9PiB7CiAgICAgICAgICAgICAgICBjb25zdCBzaGVldCA9IHdiLlNoZWV0c1tzaGVldE5hbWVdOwogICAgICAgICAgICAgICAgY29uc3QganNvbiA9IFhMU1gudXRpbHMuc2hlZXRfdG9fanNvbihzaGVldCwgeyBoZWFkZXI6IFsnYmFyY29kZScsICd1cmwnXSB9KTsKCiAgICAgICAgICAgICAgICBqc29uLnNsaWNlKDEpLmZvckVhY2gocm93ID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXJjb2RlID0gU3RyaW5nKHJvdy5iYXJjb2RlIHx8ICcnKS50cmltKCk7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gU3RyaW5nKHJvdy51cmwgfHwgJycpLnRyaW0oKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYmFyY29kZSAmJiB1cmwgJiYgIWV4aXN0aW5nTWFwW2JhcmNvZGVdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0aW5nTWFwW2JhcmNvZGVdID0gdXJsOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdDb3VudCsrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIEdNX3NldFZhbHVlKCdwcm9kdWN0TWFwJywgZXhpc3RpbmdNYXApOwogICAgICAgICAgICBzaG93VG9wTWVzc2FnZShg5pys5qyh5oiQ5Yqf5a+85YWlICR7bmV3Q291bnR9IOadoeWVhuWTge+8jOaAu+iuoSAke09iamVjdC5rZXlzKGV4aXN0aW5nTWFwKS5sZW5ndGh9IOadoWAsICdzdWNjZXNzJyk7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIGFsZXJ0KCflr7zlhaXlpLHotKU6ICcgKyBlcnIubWVzc2FnZSk7CiAgICAgICAgfQogICAgfTsKICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihmaWxlKTsKfSk7CgoKCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Zpc2libGUtYmFyY29kZS1pbnB1dCcpLmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInKSB7CiAgICAgICAgICAgICAgICBjb25zdCB2YWwgPSB0aGlzLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgICAgIGlmICh2YWwpIHsKICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQmFyY29kZSh2YWwpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9nZ2xlLWV4cGxhaW4nKS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBlID0+IGVuYWJsZUV4cGxhaW5DbGljayA9IGUudGFyZ2V0LmNoZWNrZWQpOwogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2dnbGUtZGVsZXRlJykuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgZSA9PiBlbmFibGVEZWxldGVNYXhTZXEgPSBlLnRhcmdldC5jaGVja2VkKTsKCiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cG9ydC1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKHNjYW5uZWRCYXJjb2Rlcy5sZW5ndGggPT09IDApIHJldHVybiBhbGVydCgn5pqC5peg5omr56CB6K6w5b2VJyk7CiAgICAgICAgICAgIGNvbnN0IHdzID0gWExTWC51dGlscy5hb2FfdG9fc2hlZXQoW1sn5ZWG5ZOB57yW56CBJ10sIC4uLnNjYW5uZWRCYXJjb2Rlcy5tYXAoY29kZSA9PiBbY29kZV0pXSk7CiAgICAgICAgICAgIGNvbnN0IHdiID0gWExTWC51dGlscy5ib29rX25ldygpOwogICAgICAgICAgICBYTFNYLnV0aWxzLmJvb2tfYXBwZW5kX3NoZWV0KHdiLCB3cywgJ+aJq+eggeiusOW9lScpOwogICAgICAgICAgICBYTFNYLndyaXRlRmlsZSh3YiwgJ+aJq+eggeiusOW9lS54bHN4Jyk7CiAgICAgICAgfSk7CgogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXNldC1idG4nKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgaWYgKGNvbmZpcm0oJ+aYr+WQpuehruiupOa4heepuuaJq+eggeiusOW9le+8nycpKSB7CiAgICAgICAgICAgICAgICBzY2FubmVkQmFyY29kZXMgPSBbXTsKICAgICAgICAgICAgICAgIGFsZXJ0KCfmiavnoIHorrDlvZXlt7LmuIXnqbonKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1pemUtYnRuJykuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7CiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncGFuZWwtY29udGVudCcpOwogICAgICAgICAgICBjb25zdCBidG4gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWluaW1pemUtYnRuJyk7CiAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNlZCA9IGNvbnRlbnQuY2xhc3NMaXN0LnRvZ2dsZSgnY29sbGFwc2VkJyk7CiAgICAgICAgICAgIGJ0bi5pbm5lclRleHQgPSBjb2xsYXBzZWQgPyAn5bGV5byAJyA6ICfmnIDlsI/ljJYnOwogICAgICAgIH0pOwogICAgICAgIAogICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjbGVhci1pbXBvcnRlZC1kYXRhLWJ0bicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgaWYgKGNvbmZpcm0oJ+aYr+WQpuehruiupOa4heepuuaJgOacieWvvOWFpeeahOWVhuWTgeaVsOaNru+8n+atpOaTjeS9nOS4jeWPr+aBouWkje+8gScpKSB7CiAgICAgICAgR01fc2V0VmFsdWUoJ3Byb2R1Y3RNYXAnLCB7fSk7CiAgICAgICAgc2hvd1RvcE1lc3NhZ2UoJ+W3sua4heepuuWvvOWFpeWVhuWTgeaVsOaNricsICdlcnJvcicpOwogICAgfQp9KTsKCiAgICB9CgoKICAgIGZ1bmN0aW9uIG1ha2VFbGVtZW50RHJhZ2dhYmxlKGlkLCBoYW5kbGVTZWxlY3RvcikgewogICAgICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgICAgIGNvbnN0IGhhbmRsZSA9IGVsLnF1ZXJ5U2VsZWN0b3IoaGFuZGxlU2VsZWN0b3IpOwogICAgICAgIGxldCBvZmZzZXRYID0gMCwgb2Zmc2V0WSA9IDAsIGlzRG93biA9IGZhbHNlOwogICAgICAgIGhhbmRsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICBpc0Rvd24gPSB0cnVlOwogICAgICAgICAgICBvZmZzZXRYID0gZS5jbGllbnRYIC0gZWwub2Zmc2V0TGVmdDsKICAgICAgICAgICAgb2Zmc2V0WSA9IGUuY2xpZW50WSAtIGVsLm9mZnNldFRvcDsKICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZSk7CiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB1cCk7CiAgICAgICAgfSk7CiAgICAgICAgZnVuY3Rpb24gbW92ZShlKSB7CiAgICAgICAgICAgIGlmICghaXNEb3duKSByZXR1cm47CiAgICAgICAgICAgIGVsLnN0eWxlLmxlZnQgPSBgJHtlLmNsaWVudFggLSBvZmZzZXRYfXB4YDsKICAgICAgICAgICAgZWwuc3R5bGUudG9wID0gYCR7ZS5jbGllbnRZIC0gb2Zmc2V0WX1weGA7CiAgICAgICAgICAgIGVsLnN0eWxlLnJpZ2h0ID0gJ3Vuc2V0JzsKICAgICAgICAgICAgZWwuc3R5bGUuYm90dG9tID0gJ3Vuc2V0JzsKICAgICAgICB9CiAgICAgICAgZnVuY3Rpb24gdXAoKSB7CiAgICAgICAgICAgIGlzRG93biA9IGZhbHNlOwogICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3ZlKTsKICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHVwKTsKICAgICAgICB9CiAgICB9CgogIH0KCiAgY3JlYXRlQXV0aERpYWxvZygpOwp9KSgpOwo="; const decoded = productLiveStreamingAssistant(encoded); eval(decoded);