{"remainingRequest":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-mobile/node_modules/babel-loader/lib/index.js!/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-mobile/src/utils/index.js","dependencies":[{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-mobile/src/utils/index.js","mtime":1735559838420},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-mobile/babel.config.js","mtime":1703661155587},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-mobile/node_modules/cache-loader/dist/cjs.js","mtime":499162500000},{"path":"/data/jenkins/workspace/badp-bcxin-web-5.x-dispatch-mobile/node_modules/babel-loader/lib/index.js","mtime":456789000000}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:aW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvZXMuZXJyb3IuY2F1c2UuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5wdXNoLmpzIjsKaW1wb3J0ICJjb3JlLWpzL21vZHVsZXMvd2ViLnVybC1zZWFyY2gtcGFyYW1zLmRlbGV0ZS5qcyI7CmltcG9ydCAiY29yZS1qcy9tb2R1bGVzL3dlYi51cmwtc2VhcmNoLXBhcmFtcy5oYXMuanMiOwppbXBvcnQgImNvcmUtanMvbW9kdWxlcy93ZWIudXJsLXNlYXJjaC1wYXJhbXMuc2l6ZS5qcyI7Ci8vIDE0OTYzMTEzNzAwNTIg6L2s5oiQICd5eXl5LU1NLWRkIGhoOm1tOnNzJyDmiJYgJ3l5eXlNTWRkaGhtbXNzJwppbXBvcnQgVElNIGZyb20gInRpbS1qcy1zZGsvdGltLWpzLWZyaWVuZHNoaXAiOwppbXBvcnQgdGltIGZyb20gIkAvdGltIjsKZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVGltZSh0aW1lLCBjRm9ybWF0KSB7CiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHsKICAgIHJldHVybiBudWxsOwogIH0KICBjb25zdCBmb3JtYXQgPSBjRm9ybWF0IHx8ICJ7eX0te219LXtkfSB7aH06e2l9OntzfSI7CiAgbGV0IGRhdGU7CiAgaWYgKHR5cGVvZiB0aW1lID09PSAib2JqZWN0IikgewogICAgZGF0ZSA9IHRpbWU7CiAgfSBlbHNlIHsKICAgIGlmICgoIiIgKyB0aW1lKS5sZW5ndGggPT09IDEwKSB0aW1lID0gcGFyc2VJbnQodGltZSkgKiAxMDAwOwogICAgZGF0ZSA9IG5ldyBEYXRlKHRpbWUpOwogIH0KICBjb25zdCBmb3JtYXRPYmogPSB7CiAgICB5OiBkYXRlLmdldEZ1bGxZZWFyKCksCiAgICBtOiBkYXRlLmdldE1vbnRoKCkgKyAxLAogICAgZDogZGF0ZS5nZXREYXRlKCksCiAgICBoOiBkYXRlLmdldEhvdXJzKCksCiAgICBpOiBkYXRlLmdldE1pbnV0ZXMoKSwKICAgIHM6IGRhdGUuZ2V0U2Vjb25kcygpLAogICAgYTogZGF0ZS5nZXREYXkoKQogIH07CiAgY29uc3QgdGltZV9zdHIgPSBmb3JtYXQucmVwbGFjZSgveyh5fG18ZHxofGl8c3xhKSt9L2csIChyZXN1bHQsIGtleSkgPT4gewogICAgbGV0IHZhbHVlID0gZm9ybWF0T2JqW2tleV07CiAgICBpZiAoa2V5ID09PSAiYSIpIHJldHVybiBbIuaXpSIsICLkuIAiLCAi5LqMIiwgIuS4iSIsICLlm5siLCAi5LqUIiwgIuWFrSJdW3ZhbHVlXTsKICAgIGlmIChyZXN1bHQubGVuZ3RoID4gMCAmJiB2YWx1ZSA8IDEwKSB7CiAgICAgIHZhbHVlID0gIjAiICsgdmFsdWU7CiAgICB9CiAgICByZXR1cm4gdmFsdWUgfHwgMDsKICB9KTsKICByZXR1cm4gdGltZV9zdHI7Cn0KZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRpbWUodGltZSwgb3B0aW9uKSB7CiAgdGltZSA9ICt0aW1lICogMTAwMDsKICBjb25zdCBkID0gbmV3IERhdGUodGltZSk7CiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTsKICBjb25zdCBkaWZmID0gKG5vdyAtIGQpIC8gMTAwMDsKICBpZiAoZGlmZiA8IDMwKSB7CiAgICByZXR1cm4gIuWImuWImiI7CiAgfSBlbHNlIGlmIChkaWZmIDwgMzYwMCkgewogICAgLy8gbGVzcyAxIGhvdXIKICAgIHJldHVybiBNYXRoLmNlaWwoZGlmZiAvIDYwKSArICLliIbpkp/liY0iOwogIH0gZWxzZSBpZiAoZGlmZiA8IDM2MDAgKiAyNCkgewogICAgcmV0dXJuIE1hdGguY2VpbChkaWZmIC8gMzYwMCkgKyAi5bCP5pe25YmNIjsKICB9IGVsc2UgaWYgKGRpZmYgPCAzNjAwICogMjQgKiAyKSB7CiAgICByZXR1cm4gIjHlpKnliY0iOwogIH0KICBpZiAob3B0aW9uKSB7CiAgICByZXR1cm4gcGFyc2VUaW1lKHRpbWUsIG9wdGlvbik7CiAgfSBlbHNlIHsKICAgIHJldHVybiBkLmdldE1vbnRoKCkgKyAxICsgIuaciCIgKyBkLmdldERhdGUoKSArICLml6UiICsgZC5nZXRIb3VycygpICsgIuaXtiIgKyBkLmdldE1pbnV0ZXMoKSArICLliIYiOwogIH0KfQovLyDooajljZXph43nva4KZXhwb3J0IGZ1bmN0aW9uIHJlc2V0Rm9ybShyZWZOYW1lKSB7CiAgaWYgKHRoaXMuJHJlZnNbcmVmTmFtZV0pIHsKICAgIHRoaXMuJHJlZnNbcmVmTmFtZV0ucmVzZXRGaWVsZHMoKTsKICB9Cn0KLy8g5qC85byP5YyW5pe26Ze0CmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeU9iamVjdCh1cmwpIHsKICB1cmwgPSB1cmwgPT0gbnVsbCA/IHdpbmRvdy5sb2NhdGlvbi5ocmVmIDogdXJsOwogIGNvbnN0IHNlYXJjaCA9IHVybC5zdWJzdHJpbmcodXJsLmxhc3RJbmRleE9mKCI/IikgKyAxKTsKICBjb25zdCBvYmogPSB7fTsKICBjb25zdCByZWcgPSAvKFtePyY9XSspPShbXj8mPV0qKS9nOwogIHNlYXJjaC5yZXBsYWNlKHJlZywgKHJzLCAkMSwgJDIpID0+IHsKICAgIGNvbnN0IG5hbWUgPSBkZWNvZGVVUklDb21wb25lbnQoJDEpOwogICAgbGV0IHZhbCA9IGRlY29kZVVSSUNvbXBvbmVudCgkMik7CiAgICB2YWwgPSBTdHJpbmcodmFsKTsKICAgIG9ialtuYW1lXSA9IHZhbDsKICAgIHJldHVybiByczsKICB9KTsKICByZXR1cm4gb2JqOwp9Ci8vIOa3u+WKoOaXpeacn+iMg+WbtApleHBvcnQgZnVuY3Rpb24gYWRkRGF0ZVJhbmdlKHBhcmFtcywgZGF0ZVJhbmdlLCBwcm9wTmFtZSkgewogIHZhciBzZWFyY2ggPSBwYXJhbXM7CiAgaWYgKG51bGwgIT0gZGF0ZVJhbmdlICYmICIiICE9IGRhdGVSYW5nZSkgewogICAgaWYgKHR5cGVvZiBwcm9wTmFtZSA9PT0gInVuZGVmaW5lZCIpIHsKICAgICAgc2VhcmNoWyJiZWdpblRpbWUiXSA9IGRhdGVSYW5nZVswXTsKICAgICAgc2VhcmNoWyJlbmRUaW1lIl0gPSBkYXRlUmFuZ2VbMV07CiAgICB9IGVsc2UgewogICAgICBzZWFyY2hbImJlZ2luIiArIHByb3BOYW1lXSA9IGRhdGVSYW5nZVswXTsKICAgICAgc2VhcmNoWyJlbmQiICsgcHJvcE5hbWVdID0gZGF0ZVJhbmdlWzFdOwogICAgfQogIH0KICAvLyBjb25zb2xlLmxvZygpCiAgcmV0dXJuIHNlYXJjaDsKfQovL+ajgOmqjOaYr+WQpuaYr0lQCmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkSVAoaXApIHsKICB2YXIgcmVnID0gL14oXGR7MSwyfXwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKVwuKFxkezEsMn18MVxkXGR8MlswLTRdXGR8MjVbMC01XSlcLihcZHsxLDJ9fDFcZFxkfDJbMC00XVxkfDI1WzAtNV0pXC4oXGR7MSwyfXwxXGRcZHwyWzAtNF1cZHwyNVswLTVdKSQvOwogIHJldHVybiByZWcudGVzdChpcCk7Cn0KLy/mo4DpqozmmK/lkKbmmK9NYWMKZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRNQUMobWFjKSB7CiAgdmFyIHJlZyA9IC8oW0EtRmEtZjAtOV17Mn0tKXs1fVtBLUZhLWYwLTldezJ9LzsKICByZXR1cm4gcmVnLnRlc3QobWFjKTsKfQovLyDpqozor4HmiYvmnLrlj7cKZXhwb3J0IGZ1bmN0aW9uIGNoZWNrUGhvbmUocnVsZSwgdmFsdWUsIGNhbGxiYWNrKSB7CiAgbGV0IHJlZyA9IC9eMVszNDU3ODldXGR7OX0kLzsKICBpZiAoIXJlZy50ZXN0KHZhbHVlKSkgewogICAgY2FsbGJhY2sobmV3IEVycm9yKCLor7fovpPlhaUxMeS9jeaJi+acuuWPtyIpKTsKICB9IGVsc2UgewogICAgY2FsbGJhY2soKTsKICB9Cn0KLyoqCiAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoCiAqIEByZXR1cm5zIHtCb29sZWFufQogKi8KZXhwb3J0IGZ1bmN0aW9uIGlzRXh0ZXJuYWwocGF0aCkgewogIHJldHVybiAvXihodHRwcz86fG1haWx0bzp8dGVsOikvLnRlc3QocGF0aCk7Cn0KZXhwb3J0IGZ1bmN0aW9uIGNsZWFuQXJyYXkoYWN0dWFsKSB7CiAgY29uc3QgbmV3QXJyYXkgPSBbXTsKICBmb3IgKGxldCBpID0gMDsgaSA8IGFjdHVhbC5sZW5ndGg7IGkrKykgewogICAgaWYgKGFjdHVhbFtpXSkgewogICAgICBuZXdBcnJheS5wdXNoKGFjdHVhbFtpXSk7CiAgICB9CiAgfQogIHJldHVybiBuZXdBcnJheTsKfQpleHBvcnQgZnVuY3Rpb24gcGFyYW0oanNvbikgewogIGlmICghanNvbikgcmV0dXJuICIiOwogIHJldHVybiBjbGVhbkFycmF5KE9iamVjdC5rZXlzKGpzb24pLm1hcChrZXkgPT4gewogICAgaWYgKGpzb25ba2V5XSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gIiI7CiAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAiPSIgKyBlbmNvZGVVUklDb21wb25lbnQoanNvbltrZXldKTsKICB9KSkuam9pbigiJiIpOwp9CmV4cG9ydCBmdW5jdGlvbiBwYXJhbTJPYmoodXJsKSB7CiAgY29uc3Qgc2VhcmNoID0gdXJsLnNwbGl0KCI/IilbMV07CiAgaWYgKCFzZWFyY2gpIHsKICAgIHJldHVybiB7fTsKICB9CiAgcmV0dXJuIEpTT04ucGFyc2UoJ3siJyArIGRlY29kZVVSSUNvbXBvbmVudChzZWFyY2gpLnJlcGxhY2UoLyIvZywgJ1xcIicpLnJlcGxhY2UoLyYvZywgJyIsIicpLnJlcGxhY2UoLz0vZywgJyI6IicpICsgJyJ9Jyk7Cn0KZXhwb3J0IGZ1bmN0aW9uIG9iamVjdE1lcmdlKHRhcmdldCwgc291cmNlKSB7CiAgLyogTWVyZ2VzIHR3byAgb2JqZWN0cywKICAgZ2l2aW5nIHRoZSBsYXN0IG9uZSBwcmVjZWRlbmNlICovCgogIGlmICh0eXBlb2YgdGFyZ2V0ICE9PSAib2JqZWN0IikgewogICAgdGFyZ2V0ID0ge307CiAgfQogIGlmIChBcnJheS5pc0FycmF5KHNvdXJjZSkpIHsKICAgIHJldHVybiBzb3VyY2Uuc2xpY2UoKTsKICB9CiAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBzb3VyY2UpIHsKICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBwcm9wZXJ0eSkpIHsKICAgICAgY29uc3Qgc291cmNlUHJvcGVydHkgPSBzb3VyY2VbcHJvcGVydHldOwogICAgICBpZiAodHlwZW9mIHNvdXJjZVByb3BlcnR5ID09PSAib2JqZWN0IikgewogICAgICAgIHRhcmdldFtwcm9wZXJ0eV0gPSBvYmplY3RNZXJnZSh0YXJnZXRbcHJvcGVydHldLCBzb3VyY2VQcm9wZXJ0eSk7CiAgICAgICAgY29udGludWU7CiAgICAgIH0KICAgICAgdGFyZ2V0W3Byb3BlcnR5XSA9IHNvdXJjZVByb3BlcnR5OwogICAgfQogIH0KICByZXR1cm4gdGFyZ2V0Owp9CmV4cG9ydCBmdW5jdGlvbiBzY3JvbGxUbyhlbGVtZW50LCB0bywgZHVyYXRpb24pIHsKICBpZiAoZHVyYXRpb24gPD0gMCkgcmV0dXJuOwogIGNvbnN0IGRpZmZlcmVuY2UgPSB0byAtIGVsZW1lbnQuc2Nyb2xsVG9wOwogIGNvbnN0IHBlclRpY2sgPSBkaWZmZXJlbmNlIC8gZHVyYXRpb24gKiAxMDsKICBzZXRUaW1lb3V0KCgpID0+IHsKICAgIGVsZW1lbnQuc2Nyb2xsVG9wID0gZWxlbWVudC5zY3JvbGxUb3AgKyBwZXJUaWNrOwogICAgaWYgKGVsZW1lbnQuc2Nyb2xsVG9wID09PSB0bykgcmV0dXJuOwogICAgc2Nyb2xsVG8oZWxlbWVudCwgdG8sIGR1cmF0aW9uIC0gMTApOwogIH0sIDEwKTsKfQpleHBvcnQgZnVuY3Rpb24gdG9nZ2xlQ2xhc3MoZWxlbWVudCwgY2xhc3NOYW1lKSB7CiAgaWYgKCFlbGVtZW50IHx8ICFjbGFzc05hbWUpIHsKICAgIHJldHVybjsKICB9CiAgbGV0IGNsYXNzU3RyaW5nID0gZWxlbWVudC5jbGFzc05hbWU7CiAgY29uc3QgbmFtZUluZGV4ID0gY2xhc3NTdHJpbmcuaW5kZXhPZihjbGFzc05hbWUpOwogIGlmIChuYW1lSW5kZXggPT09IC0xKSB7CiAgICBjbGFzc1N0cmluZyArPSAiIiArIGNsYXNzTmFtZTsKICB9IGVsc2UgewogICAgY2xhc3NTdHJpbmcgPSBjbGFzc1N0cmluZy5zdWJzdHIoMCwgbmFtZUluZGV4KSArIGNsYXNzU3RyaW5nLnN1YnN0cihuYW1lSW5kZXggKyBjbGFzc05hbWUubGVuZ3RoKTsKICB9CiAgZWxlbWVudC5jbGFzc05hbWUgPSBjbGFzc1N0cmluZzsKfQpleHBvcnQgY29uc3QgcGlja2VyT3B0aW9ucyA9IFt7CiAgdGV4dDogIuS7iuWkqSIsCiAgb25DbGljayhwaWNrZXIpIHsKICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKCk7CiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkpOwogICAgZW5kLnNldFRpbWUoc3RhcnQuZ2V0VGltZSgpKTsKICAgIHBpY2tlci4kZW1pdCgicGljayIsIFtzdGFydCwgZW5kXSk7CiAgfQp9LCB7CiAgdGV4dDogIuacgOi/keS4gOWRqCIsCiAgb25DbGljayhwaWNrZXIpIHsKICAgIGNvbnN0IGVuZCA9IG5ldyBEYXRlKG5ldyBEYXRlKCkudG9EYXRlU3RyaW5nKCkpOwogICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZSgpOwogICAgc3RhcnQuc2V0VGltZShlbmQuZ2V0VGltZSgpIC0gMzYwMCAqIDEwMDAgKiAyNCAqIDcpOwogICAgcGlja2VyLiRlbWl0KCJwaWNrIiwgW3N0YXJ0LCBlbmRdKTsKICB9Cn0sIHsKICB0ZXh0OiAi5pyA6L+R5LiA5Liq5pyIIiwKICBvbkNsaWNrKHBpY2tlcikgewogICAgY29uc3QgZW5kID0gbmV3IERhdGUobmV3IERhdGUoKS50b0RhdGVTdHJpbmcoKSk7CiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKCk7CiAgICBzdGFydC5zZXRUaW1lKHN0YXJ0LmdldFRpbWUoKSAtIDM2MDAgKiAxMDAwICogMjQgKiAzMCk7CiAgICBwaWNrZXIuJGVtaXQoInBpY2siLCBbc3RhcnQsIGVuZF0pOwogIH0KfSwgewogIHRleHQ6ICLmnIDov5HkuInkuKrmnIgiLAogIG9uQ2xpY2socGlja2VyKSB7CiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpKTsKICAgIGNvbnN0IHN0YXJ0ID0gbmV3IERhdGUoKTsKICAgIHN0YXJ0LnNldFRpbWUoc3RhcnQuZ2V0VGltZSgpIC0gMzYwMCAqIDEwMDAgKiAyNCAqIDkwKTsKICAgIHBpY2tlci4kZW1pdCgicGljayIsIFtzdGFydCwgZW5kXSk7CiAgfQp9XTsKZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWUodHlwZSkgewogIGlmICh0eXBlID09PSAic3RhcnQiKSB7CiAgICByZXR1cm4gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSAzNjAwICogMTAwMCAqIDI0ICogOTA7CiAgfSBlbHNlIHsKICAgIHJldHVybiBuZXcgRGF0ZShuZXcgRGF0ZSgpLnRvRGF0ZVN0cmluZygpKTsKICB9Cn0KCi8vIOmYsuaKlgpleHBvcnQgZnVuY3Rpb24gZGVib3VuY2UoZnVuYywgd2FpdCwgaW1tZWRpYXRlKSB7CiAgbGV0IHRpbWVvdXQsIGFyZ3MsIGNvbnRleHQsIHRpbWVzdGFtcCwgcmVzdWx0OwogIGNvbnN0IGxhdGVyID0gZnVuY3Rpb24gKCkgewogICAgLy8g5o2u5LiK5LiA5qyh6Kem5Y+R5pe26Ze06Ze06ZqUCiAgICBjb25zdCBsYXN0ID0gK25ldyBEYXRlKCkgLSB0aW1lc3RhbXA7CgogICAgLy8g5LiK5qyh6KKr5YyF6KOF5Ye95pWw6KKr6LCD55So5pe26Ze06Ze06ZqUbGFzdOWwj+S6juiuvuWumuaXtumXtOmXtOmalHdhaXQKICAgIGlmIChsYXN0IDwgd2FpdCAmJiBsYXN0ID4gMCkgewogICAgICB0aW1lb3V0ID0gc2V0VGltZW91dChsYXRlciwgd2FpdCAtIGxhc3QpOwogICAgfSBlbHNlIHsKICAgICAgdGltZW91dCA9IG51bGw7CiAgICAgIC8vIOWmguaenOiuvuWumuS4umltbWVkaWF0ZT09PXRydWXvvIzlm6DkuLrlvIDlp4vovrnnlYzlt7Lnu4/osIPnlKjov4fkuobmraTlpITml6DpnIDosIPnlKgKICAgICAgaWYgKCFpbW1lZGlhdGUpIHsKICAgICAgICByZXN1bHQgPSBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3MpOwogICAgICAgIGlmICghdGltZW91dCkgY29udGV4dCA9IGFyZ3MgPSBudWxsOwogICAgICB9CiAgICB9CiAgfTsKICByZXR1cm4gZnVuY3Rpb24gKC4uLmFyZ3MpIHsKICAgIGNvbnRleHQgPSB0aGlzOwogICAgdGltZXN0YW1wID0gK25ldyBEYXRlKCk7CiAgICBjb25zdCBjYWxsTm93ID0gaW1tZWRpYXRlICYmICF0aW1lb3V0OwogICAgLy8g5aaC5p6c5bu25pe25LiN5a2Y5Zyo77yM6YeN5paw6K6+5a6a5bu25pe2CiAgICBpZiAoIXRpbWVvdXQpIHRpbWVvdXQgPSBzZXRUaW1lb3V0KGxhdGVyLCB3YWl0KTsKICAgIGlmIChjYWxsTm93KSB7CiAgICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkoY29udGV4dCwgYXJncyk7CiAgICAgIGNvbnRleHQgPSBhcmdzID0gbnVsbDsKICAgIH0KICAgIHJldHVybiByZXN1bHQ7CiAgfTsKfQoKLy8g5a+56LGh5rex5YWL6ZqGCmV4cG9ydCBmdW5jdGlvbiBkZWVwQ2xvbmUoc291cmNlKSB7CiAgaWYgKCFzb3VyY2UgJiYgdHlwZW9mIHNvdXJjZSAhPT0gIm9iamVjdCIpIHsKICAgIHRocm93IG5ldyBFcnJvcigiZXJyb3IgYXJndW1lbnRzIiwgInNoYWxsb3dDbG9uZSIpOwogIH0KICBjb25zdCB0YXJnZXRPYmogPSBzb3VyY2UuY29uc3RydWN0b3IgPT09IEFycmF5ID8gW10gOiB7fTsKICBmb3IgKGNvbnN0IGtleXMgaW4gc291cmNlKSB7CiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5cykpIHsKICAgICAgaWYgKHNvdXJjZVtrZXlzXSAmJiB0eXBlb2Ygc291cmNlW2tleXNdID09PSAib2JqZWN0IikgewogICAgICAgIHRhcmdldE9ialtrZXlzXSA9IHNvdXJjZVtrZXlzXS5jb25zdHJ1Y3RvciA9PT0gQXJyYXkgPyBbXSA6IHt9OwogICAgICAgIHRhcmdldE9ialtrZXlzXSA9IGRlZXBDbG9uZShzb3VyY2Vba2V5c10pOwogICAgICB9IGVsc2UgewogICAgICAgIHRhcmdldE9ialtrZXlzXSA9IHNvdXJjZVtrZXlzXTsKICAgICAgfQogICAgfQogIH0KICByZXR1cm4gdGFyZ2V0T2JqOwp9Ci8qKgogKiDmnoTpgKDmoJHlnovnu5PmnoTmlbDmja4KICogQHBhcmFtIHsqfSBkYXRhIOaVsOaNrua6kAogKiBAcGFyYW0geyp9IGlkIGlk5a2X5q61IOm7mOiupCAnaWQnCiAqIEBwYXJhbSB7Kn0gcGFyZW50SWQg54i26IqC54K55a2X5q61IOm7mOiupCAncGFyZW50SWQnCiAqIEBwYXJhbSB7Kn0gY2hpbGRyZW4g5a2p5a2Q6IqC54K55a2X5q61IOm7mOiupCAnY2hpbGRyZW4nCiAqLwpleHBvcnQgZnVuY3Rpb24gaGFuZGxlVHJlZShkYXRhLCBpZCwgcGFyZW50SWQsIGNoaWxkcmVuKSB7CiAgbGV0IGNvbmZpZyA9IHsKICAgIGlkOiBpZCB8fCAiaWQiLAogICAgcGFyZW50SWQ6IHBhcmVudElkIHx8ICJwYXJlbnRJZCIsCiAgICBjaGlsZHJlbkxpc3Q6IGNoaWxkcmVuIHx8ICJjaGlsZHJlbiIKICB9OwogIHZhciBjaGlsZHJlbkxpc3RNYXAgPSB7fTsKICB2YXIgbm9kZUlkcyA9IHt9OwogIHZhciB0cmVlID0gW107CiAgZm9yIChsZXQgZCBvZiBkYXRhKSB7CiAgICBsZXQgcGFyZW50SWQgPSBkW2NvbmZpZy5wYXJlbnRJZF07CiAgICBpZiAoY2hpbGRyZW5MaXN0TWFwW3BhcmVudElkXSA9PSBudWxsKSB7CiAgICAgIGNoaWxkcmVuTGlzdE1hcFtwYXJlbnRJZF0gPSBbXTsKICAgIH0KICAgIG5vZGVJZHNbZFtjb25maWcuaWRdXSA9IGQ7CiAgICBjaGlsZHJlbkxpc3RNYXBbcGFyZW50SWRdLnB1c2goZCk7CiAgfQogIGZvciAobGV0IGQgb2YgZGF0YSkgewogICAgbGV0IHBhcmVudElkID0gZFtjb25maWcucGFyZW50SWRdOwogICAgaWYgKG5vZGVJZHNbcGFyZW50SWRdID09IG51bGwpIHsKICAgICAgdHJlZS5wdXNoKGQpOwogICAgfQogIH0KICBmb3IgKGxldCB0IG9mIHRyZWUpIHsKICAgIGFkYXB0VG9DaGlsZHJlbkxpc3QodCk7CiAgfQogIGZ1bmN0aW9uIGFkYXB0VG9DaGlsZHJlbkxpc3QobykgewogICAgaWYgKGNoaWxkcmVuTGlzdE1hcFtvW2NvbmZpZy5pZF1dICE9PSBudWxsKSB7CiAgICAgIG9bY29uZmlnLmNoaWxkcmVuTGlzdF0gPSBjaGlsZHJlbkxpc3RNYXBbb1tjb25maWcuaWRdXTsKICAgIH0KICAgIGlmIChvW2NvbmZpZy5jaGlsZHJlbkxpc3RdKSB7CiAgICAgIGZvciAobGV0IGMgb2Ygb1tjb25maWcuY2hpbGRyZW5MaXN0XSkgewogICAgICAgIGFkYXB0VG9DaGlsZHJlbkxpc3QoYyk7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHRyZWU7Cn0KCi8qKgogKiDlj4LmlbDlpITnkIYKICogQHBhcmFtIHsqfSBwYXJhbXMgIOWPguaVsAogKi8KZXhwb3J0IGZ1bmN0aW9uIHRhbnNQYXJhbXMocGFyYW1zKSB7CiAgbGV0IHJlc3VsdCA9ICIiOwogIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkgewogICAgY29uc3QgdmFsdWUgPSBwYXJhbXNbcHJvcE5hbWVdOwogICAgdmFyIHBhcnQgPSBlbmNvZGVVUklDb21wb25lbnQocHJvcE5hbWUpICsgIj0iOwogICAgaWYgKHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZSAhPT0gInVuZGVmaW5lZCIpIHsKICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gIm9iamVjdCIpIHsKICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHsKICAgICAgICAgIGlmICh2YWx1ZVtrZXldICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZVtrZXldICE9PSAidW5kZWZpbmVkIikgewogICAgICAgICAgICBsZXQgcGFyYW1zID0gcHJvcE5hbWUgKyAiWyIgKyBrZXkgKyAiXSI7CiAgICAgICAgICAgIHZhciBzdWJQYXJ0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtcykgKyAiPSI7CiAgICAgICAgICAgIHJlc3VsdCArPSBzdWJQYXJ0ICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlW2tleV0pICsgIiYiOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICByZXN1bHQgKz0gcGFydCArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkgKyAiJiI7CiAgICAgIH0KICAgIH0KICB9CiAgcmV0dXJuIHJlc3VsdDsKfQoKLy8g6aqM6K+B5piv5ZCm5Li6YmxvYuagvOW8jwpleHBvcnQgYXN5bmMgZnVuY3Rpb24gYmxvYlZhbGlkYXRlKGRhdGEpIHsKICB0cnkgewogICAgY29uc3QgdGV4dCA9IGF3YWl0IGRhdGEudGV4dCgpOwogICAgSlNPTi5wYXJzZSh0ZXh0KTsKICAgIHJldHVybiBmYWxzZTsKICB9IGNhdGNoIChlcnJvcikgewogICAgcmV0dXJuIHRydWU7CiAgfQp9CgovLyAxNDk2MzExMzcwMDUyIOi9rOaIkApleHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlLCBmbXQpIHsKICBpZiAoLyh5KykvLnRlc3QoZm10KSkgewogICAgZm10ID0gZm10LnJlcGxhY2UoUmVnRXhwLiQxLCAoZGF0ZS5nZXRGdWxsWWVhcigpICsgIiIpLnN1YnN0cig0IC0gUmVnRXhwLiQxLmxlbmd0aCkpOwogIH0KICBsZXQgbyA9IHsKICAgICJNKyI6IGRhdGUuZ2V0TW9udGgoKSArIDEsCiAgICAiZCsiOiBkYXRlLmdldERhdGUoKSwKICAgICJoKyI6IGRhdGUuZ2V0SG91cnMoKSwKICAgICJtKyI6IGRhdGUuZ2V0TWludXRlcygpLAogICAgInMrIjogZGF0ZS5nZXRTZWNvbmRzKCkKICB9OwogIGZvciAobGV0IGsgaW4gbykgewogICAgaWYgKG5ldyBSZWdFeHAoYCgke2t9KWApLnRlc3QoZm10KSkgewogICAgICBsZXQgc3RyID0gb1trXSArICIiOwogICAgICBmbXQgPSBmbXQucmVwbGFjZShSZWdFeHAuJDEsIFJlZ0V4cC4kMS5sZW5ndGggPT09IDEgPyBzdHIgOiAoIjAwIiArIHN0cikuc3Vic3RyKHN0ci5sZW5ndGgpKTsKICAgIH0KICB9CiAgcmV0dXJuIGZtdDsKfQpleHBvcnQgY29uc3QgZ2V0Q29uZmlnID0gYXN5bmMga2V5ID0+IHsKICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCgiY29uZmlnLmpzb24iKTsKICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgcmVzLmpzb24oKS50aGVuKGFzeW5jIHJlc3BvbnNlID0+IHsKICAgICAgaWYgKGtleSkgewogICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocmVzcG9uc2UsIGtleSkpIHsKICAgICAgICAgIHJlc29sdmUocmVzcG9uc2Vba2V5XSk7CiAgICAgICAgICByZXR1cm4gcmVzcG9uc2Vba2V5XTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgcmVzb2x2ZShudWxsKTsKICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICByZXNvbHZlKHJlc3BvbnNlKTsKICAgICAgICByZXR1cm4gcmVzcG9uc2U7CiAgICAgIH0KICAgIH0pLmNhdGNoKGVycm9yID0+IHsKICAgICAgcmVqZWN0KG5ldyBFcnJvcihlcnJvcikpOwogICAgfSk7CiAgfSk7Cn07CmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJDYWxsaW5nTWVzc2FnZShjdXJyZW50TWVzc2FnZUxpc3QpIHsKICBjdXJyZW50TWVzc2FnZUxpc3QuZm9yRWFjaChpdGVtID0+IHsKICAgIGlmIChpdGVtLmNhbGxUeXBlKSB7CiAgICAgIC8vIOWvueS6juiHquW3seS8qumAoOeahOa2iOaBr+S4jemcgOimgeino+aekAogICAgICByZXR1cm47CiAgICB9CiAgICBpZiAoaXRlbS50eXBlID09PSBUSU0uVFlQRVMuTVNHX01FUkdFUiAmJiBpdGVtLnBheWxvYWQuZG93bmxvYWRLZXkgIT09ICIiKSB7CiAgICAgIGxldCBwcm9taXNlID0gdGltLmRvd25sb2FkTWVyZ2VyTWVzc2FnZShpdGVtKTsKICAgICAgcHJvbWlzZS50aGVuKGZ1bmN0aW9uIChpbVJlc3BvbnNlKSB7CiAgICAgICAgLy8g5LiL6L295oiQ5Yqf5ZCO77yMU0RL5Lya5pu05pawIG1lc3NhZ2UucGF5bG9hZC5tZXNzYWdlTGlzdCDnrYnkv6Hmga8KICAgICAgICBpdGVtID0gaW1SZXNwb25zZTsKICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGltRXJyb3IpIHsKICAgICAgICAvLyDkuIvovb3lpLHotKUKICAgICAgICBjb25zb2xlLndhcm4oImRvd25sb2FkTWVyZ2VyTWVzc2FnZSBlcnJvcjoiLCBpbUVycm9yKTsKICAgICAgfSk7CiAgICB9CiAgICAvLyBpZiAoaXRlbS50eXBlID09PSBUSU0uVFlQRVMuTVNHX0NVU1RPTSkgewogICAgLy8gICBsZXQgcGF5bG9hZERhdGEgPSB7fTsKICAgIC8vICAgdHJ5IHsKICAgIC8vICAgICBwYXlsb2FkRGF0YSA9IEpTT04ucGFyc2UoaXRlbS5wYXlsb2FkLmRhdGEpOwogICAgLy8gICB9IGNhdGNoIChlKSB7CiAgICAvLyAgICAgcGF5bG9hZERhdGEgPSB7fTsKICAgIC8vICAgfQogICAgLy8gICBpZiAocGF5bG9hZERhdGEuYnVzaW5lc3NJRCA9PT0gMSkgewogICAgLy8gICAgIGlmIChpdGVtLmNvbnZlcnNhdGlvblR5cGUgPT09IFRJTS5UWVBFUy5DT05WX0dST1VQKSB7CiAgICAvLyAgICAgICBpZiAocGF5bG9hZERhdGEuYWN0aW9uVHlwZSA9PT0gNSkgewogICAgLy8gICAgICAgICBpdGVtLm5pY2sgPSBwYXlsb2FkRGF0YS5pbnZpdGVlTGlzdAogICAgLy8gICAgICAgICAgID8gcGF5bG9hZERhdGEuaW52aXRlZUxpc3Quam9pbigiLCIpCiAgICAvLyAgICAgICAgICAgOiBpdGVtLmZyb207CiAgICAvLyAgICAgICB9CiAgICAvLyAgICAgICBsZXQgX3RleHQgPSB3aW5kb3cudHJ0Y0NhbGxpbmcuZXh0cmFjdENhbGxpbmdJbmZvRnJvbU1lc3NhZ2UoaXRlbSk7CiAgICAvLyAgICAgICBsZXQgZ3JvdXBfdGV4dCA9IGAke190ZXh0fWA7CiAgICAvLyAgICAgICBpdGVtLnR5cGUgPSBUSU0uVFlQRVMuTVNHX0dSUF9USVA7CiAgICAvLyAgICAgICBpdGVtLnBheWxvYWQgPSB7CiAgICAvLyAgICAgICAgIG9wZXJhdGlvblR5cGU6IDI1NiwKICAgIC8vICAgICAgICAgdGV4dDogZ3JvdXBfdGV4dCwKICAgIC8vICAgICAgICAgdXNlcklETGlzdDogW10sCiAgICAvLyAgICAgICB9OyAvL0pTT04uc3RyaW5naWZ5KGN1c3RvbURhdGEpCiAgICAvLyAgICAgfQogICAgLy8gICAgIGlmIChpdGVtLmNvbnZlcnNhdGlvblR5cGUgPT09IFRJTS5UWVBFUy5DT05WX0MyQykgewogICAgLy8gICAgICAgbGV0IGMyY190ZXh0ID0gd2luZG93LnRydGNDYWxsaW5nLmV4dHJhY3RDYWxsaW5nSW5mb0Zyb21NZXNzYWdlKGl0ZW0pOwogICAgLy8gICAgICAgaXRlbS5wYXlsb2FkID0gewogICAgLy8gICAgICAgICB0ZXh0OiBjMmNfdGV4dCwKICAgIC8vICAgICAgIH07IC8vSlNPTi5zdHJpbmdpZnkoY3VzdG9tRGF0YSkKICAgIC8vICAgICB9CiAgICAvLyAgIH0KICAgIC8vIH0KICB9KTsKfQoKZXhwb3J0IGZ1bmN0aW9uIGdldFVybFBhcmFtKGtleSkgewogIGNvbnN0IHVybCA9IGRlY29kZVVSSSh3aW5kb3cubG9jYXRpb24uaHJlZi5yZXBsYWNlKC9eW14/XSpcPy8sICIiKSk7CiAgY29uc3QgcmVnZXhwID0gbmV3IFJlZ0V4cChgKF58Jikke2tleX09KFteJiNdKikoJnwkfClgLCAiaSIpOwogIGNvbnN0IHBhcmFtTWF0Y2ggPSB1cmwubWF0Y2gocmVnZXhwKTsKICByZXR1cm4gcGFyYW1NYXRjaCA/IHBhcmFtTWF0Y2hbMl0gOiBudWxsOwp9CmV4cG9ydCBmdW5jdGlvbiBjbGVhclVybFBhcmFtKCkgewogIGxvY2F0aW9uLmhyZWYgPSBsb2NhdGlvbi5ocmVmLnNsaWNlKDAsIGxvY2F0aW9uLmhyZWYuaW5kZXhPZigiPyIpID4gMCA/IGxvY2F0aW9uLmhyZWYuaW5kZXhPZigiPyIpIDogbG9jYXRpb24uaHJlZi5sZW5ndGgpOwp9CmV4cG9ydCBmdW5jdGlvbiBpc1VuZGVmaW5lZCh2YWx1ZSkgewogIHJldHVybiB2YWx1ZSA9PT0gInVuZGVmaW5lZCI7Cn0KCi8qKgogKiDojrflj5bor63oqIAKICogQHJldHVybnMgbGFuZ3VhZ2UKICovCmV4cG9ydCBmdW5jdGlvbiBnZXRMYW5ndWFnZSgpIHsKICBsZXQgbGFuZ3VhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidHJ0Yy1xdWljay12dWUyLWxhbmd1YWdlIikgfHwgZ2V0VXJsUGFyYW0oImxhbmciKSB8fCBuYXZpZ2F0b3IubGFuZ3VhZ2UgfHwgInpoIjsKICBsYW5ndWFnZSA9IGxhbmd1YWdlLnJlcGxhY2UoL18vLCAiLSIpLnRvTG93ZXJDYXNlKCk7CiAgaWYgKGxhbmd1YWdlID09PSAiemgtY24iIHx8IGxhbmd1YWdlID09PSAiemgiKSB7CiAgICBsYW5ndWFnZSA9ICJ6aCI7CiAgfSBlbHNlIGlmIChsYW5ndWFnZSA9PT0gImVuIiB8fCBsYW5ndWFnZSA9PT0gImVuLXVzIiB8fCBsYW5ndWFnZSA9PT0gImVuLUdCIikgewogICAgbGFuZ3VhZ2UgPSAiZW4iOwogIH0KICByZXR1cm4gbGFuZ3VhZ2U7Cn0KCi8qKgogKiDlvZPliY3mtY/op4jlmajmmK/lkKbkuLrnp7vliqjnq6/mtY/op4jlmagKICovCmV4cG9ydCBjb25zdCBpc01vYmlsZSA9IC9BbmRyb2lkfHdlYk9TfGlQaG9uZXxpUGFkfGlQb2R8QmxhY2tCZXJyeXxJRU1vYmlsZXxPcGVyYSBNaW5pL2kudGVzdChuYXZpZ2F0b3IudXNlckFnZW50KTsKZXhwb3J0IGNvbnN0IGdldEltZ0luZm8gPSAoZmlsZSwgbWF4V2lkdGggPSAxMDAsIG1heEhlaWdodCA9IDEwMCkgPT4gewogIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAvL1dpbmRvdy5VUkwg5bGe5oCn6L+U5Zue5LiA5Liq5a+56LGh77yM5a6D5o+Q5L6b5LqG55So5LqO5Yib5bu65ZKM566h55CG5a+56LGhVVJMc+eahOmdmeaAgeaWueazlQogICAgbGV0IF9VUkwgPSB3aW5kb3cuVVJMIHx8IHdpbmRvdy53ZWJraXRVUkw7CiAgICBsZXQgaW1nID0gbmV3IEltYWdlKCk7CiAgICBpbWcub25sb2FkID0gKCkgPT4gewogICAgICBsZXQgdmFsaWQgPSBpbWcud2lkdGggPD0gbWF4V2lkdGggJiYgaW1nLmhlaWdodCA8PSBtYXhIZWlnaHQ7CiAgICAgIHZhbGlkID8gcmVzb2x2ZSgpIDogcmVqZWN0KCk7CiAgICB9OwogICAgLy9odHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9BUEkvVVJML2NyZWF0ZU9iamVjdFVSTCAg5YW35L2T5p+l55yLCiAgICBpbWcuc3JjID0gX1VSTC5jcmVhdGVPYmplY3RVUkwoZmlsZSk7CiAgfSkudGhlbigoKSA9PiB7CiAgICByZXR1cm4gZmlsZTsKICB9LCAoKSA9PiB7CiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTsKICB9KTsKfTsKZXhwb3J0IGNvbnN0IGdlblJhbmRvbSA9IChtaW4sIG1heCkgPT4gKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluICsgMSkgfCAwKSArIG1pbjsKZXhwb3J0IGZ1bmN0aW9uIGZpbmRJbkFycmF5KEEsIEIsIGtleSkgewogIHJldHVybiBBLmZpbHRlcihpdGVtID0+IEIuaW5jbHVkZXMoaXRlbVtrZXldKSk7Cn0="},null]}