Files
EAU/dist/js/index.js
2019-05-26 17:32:19 +02:00

2 lines
34 KiB
JavaScript

!function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=6)}([function(e,t,n){"use strict";n.d(t,"a",function(){return r}),n.d(t,"b",function(){return a});var a,r=function(){return function(e,t,n,a,r,o,i){this.name=e,this.appid=t,this.thumbnail=n,this.launcher=a,this.launcherID=r,this.isInstalled=o,this.localPath=i}}();!function(e){e[e.LocalOnly=0]="LocalOnly",e[e.Steam=1]="Steam"}(a||(a={}))},function(e,t,n){"use strict";n.r(t),n.d(t,"setup",function(){return u});var a,r,o=n(0),i=n(2),s=n(4).ipcRenderer,c=5,l=0;function u(){c=5,a=null,l=0,[],r=null,c=0,a=document.querySelector(".carousel"),$.getJSON("http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v0001/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+Object(i.a)()+"&format=json",JSON,function(e){if(0!=e.response.total_count)for(var t=[],n=0;n<e.response.total_count;n++){var a=e.response.games[n];t[n]=new f(a.appid,a.name,a.img_logo_url),n+1==e.response.total_count&&d(t)}else console.log("no recent played games")})}function d(e){for(var t=document.getElementsByClassName("carousel__cell"),n=0;n<t.length;n++)n<e.length?(t[n].src="https://steamcdn-a.akamaihd.net/steam/apps/"+e[n].AppId+"/header.jpg",t[n].dataset.game=JSON.stringify(new o.a(null,e[n].AppId,t[n].srcn,o.b.Steam,null,null,null)),t[n].id=n.toString(),t[n].addEventListener("click",function(){p(event.target,!1)})):t[n].classList.add("disabled");var a=document.createElement("Useless-div");a.id=Math.round(e.length/2).toString(),p(a,!1),a.remove}function p(e,t){null==r&&(r=e),r!=e&&r.classList.remove("higlight"),l=40*(c-e.id)+l,c!=e.id||0!=t?(e.classList.add("higlight"),a.style.transform="translateZ(-1000px) rotateY("+l+"deg)",c=e.id,r=e):s.send("LaunchGame",e.dataset.game)}var f=function(){return function(e,t,n){this.AppId=e,this.name=t,this.thumb=n}}()},function(e,t,n){"use strict";function a(){var e=navigator.userAgent.toLowerCase();if(console.log("Agent: "+e),e.indexOf(" electron/")>-1){var t=new(n(3))("config").get("steam");return null!=t?t:"76561198196430655"}return console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),"76561198196430655"}n.d(t,"a",function(){return a})},function(e,t,n){const a=n(4),r=n(8),o=n(9);e.exports=class{constructor(e){this.path=r.join((a.app||a.remote.app).getPath("userData"),e+".json"),this.data=function(e){try{return JSON.parse(o.readFileSync(e))}catch{return{}}}(this.path)}get(e){return this.data[e]}set(e,t){this.data[e]=t,o.writeFileSync(this.path,JSON.stringify(this.data))}}},function(e,t){e.exports=require("electron")},function(e,t,n){"use strict";n.r(t);var a=n(2),r=n(0),o=n(3);function i(){var e;e=a.a(),$.get("https://api.steampowered.com/IPlayerService/GetOwnedGames/v1/?key=7C218E8D1347C3CD6CB8117E5ED533BC&steamid="+e+"&include_appinfo=1&include_played_free_games=1&appids_filter=&format=json",function(e){for(var t=[],n=0;n<e.response.game_count;n++){var a=e.response.games[n],i="https://steamcdn-a.akamaihd.net/steam/apps/"+a.appid+"/header.jpg";t[n]=new r.a(a.name,a.appid,i,r.b.Steam,null,!0,null)}var s=new o("Games");s.set("games",t)})}n.d(t,"populateGrid",function(){return c});var s=n(4).ipcRenderer;function c(){var e=navigator.userAgent.toLowerCase().indexOf(" electron/")>-1?new o("Games").get("games"):(console.log("AGENT IS NOT ELECTRON, NO HANDLING FOR NOW"),null);i();for(var t=document.getElementById("library"),n=function(){var n=e[a],r="<img src='"+n.thumbnail+"'/> <p>"+n.name+"</p>",o=document.createElement("div");o.className="game",o.onclick=function(){var e;e=n,s.send("LaunchGame",e)},n.isInstalled&&(r+='<img src="../../dist/drawables/installed.svg" style="position: absolute; top: 0; right: 0; padding: 5px;"/>'),o.innerHTML=r,null!=t&&t.appendChild(o)},a=0;a<e.length;a++)n()}},function(e,t,n){n(7),e.exports=n(1)},function(e,t,n){"use strict";n.r(t);var a=n(1),r=n(5),o=n(3);function i(){$("#content").load("fragments/home.html",function(){Object(a.setup)(),Object(r.populateGrid)()}),document.getElementById("title").innerHTML="EAU"}$(function(){new o("config").get("dark-mode")&&$("#body").addClass("dark-mode"),i(),document.getElementById("title").onclick=function(){i()},document.getElementById("searchBtn").onclick=function(){var e;(e=document.getElementById("searchInput")).value="",e.focus()},document.getElementById("settingsBtn").onclick=function(){$("#content").load("fragments/settings.html",function(){$(".switch").find("input[type=checkbox]").on("change",function(){var e=$(this).prop("checked");e?$("#body").addClass("dark-mode"):$("#body").removeClass("dark-mode");var t=new o("config");t.set("dark-mode",e)}),$("#body").hasClass("dark-mode")&&$(".switch").find("input[type=checkbox]").prop("checked",!0)}),document.getElementById("title").innerHTML="<i class='icon fas fa-arrow-left'></i> Settings"}}),n(5),n(1)},function(e,t){e.exports=require("path")},function(e,t){e.exports=require("fs")}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0dhbWUudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0Nhcm91c2VsLnRzIiwid2VicGFjazovLy8uL3NyYy90cy9Ub2tlbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2pzL3N0b3JlLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcImVsZWN0cm9uXCIiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0dhbWVMb2FkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL0xpYnJhcnkudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3RzL2luZGV4LnRzIiwid2VicGFjazovLy9leHRlcm5hbCBcInBhdGhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJmc1wiIl0sIm5hbWVzIjpbImluc3RhbGxlZE1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJleHBvcnRzIiwibW9kdWxlIiwiaSIsImwiLCJtb2R1bGVzIiwiY2FsbCIsIm0iLCJjIiwiZCIsIm5hbWUiLCJnZXR0ZXIiLCJvIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJlbnVtZXJhYmxlIiwiZ2V0IiwiciIsIlN5bWJvbCIsInRvU3RyaW5nVGFnIiwidmFsdWUiLCJ0IiwibW9kZSIsIl9fZXNNb2R1bGUiLCJucyIsImNyZWF0ZSIsImtleSIsImJpbmQiLCJuIiwib2JqZWN0IiwicHJvcGVydHkiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsInAiLCJzIiwiX193ZWJwYWNrX2V4cG9ydHNfXyIsIkdhbWUiLCJsYXVuY2hlciIsImFwcGlkIiwidGh1bWJuYWlsIiwibGF1bmNoZXJJRCIsImlzSW5zdGFsbGVkIiwibG9jYWxQYXRoIiwidGhpcyIsInNldHVwIiwiY2Fyb3VzZWwiLCJsYXN0c2VsZWN0ZWQiLCJfR2FtZV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX1Rva2VuTWFuYWdlcl9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiaXBjUmVuZGVyZXIiLCJzZWxlY3RlZEluZGV4IiwiYW5nbGUiLCJkb2N1bWVudCIsInF1ZXJ5U2VsZWN0b3IiLCIkIiwiZ2V0SlNPTiIsIkpTT04iLCJkYXRhIiwicmVzcG9uc2UiLCJ0b3RhbF9jb3VudCIsIlNlbGVjdGVkUmVjZW50R2FtZXMiLCJnYW1lIiwiZ2FtZXMiLCJHYW1lTWV0YSIsImltZ19sb2dvX3VybCIsImluaUNhbGxiYWNrIiwiY29uc29sZSIsImxvZyIsImxpc3QiLCJnZXRFbGVtZW50c0J5Q2xhc3NOYW1lIiwibGVuZ3RoIiwic3JjIiwiQXBwSWQiLCJkYXRhc2V0Iiwic3RyaW5naWZ5Iiwic3JjbiIsIlN0ZWFtIiwiaWQiLCJ0b1N0cmluZyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyb3RhdGVDYXJvdXNlbCIsImV2ZW50IiwidGFyZ2V0IiwiY2xhc3NMaXN0IiwiYWRkIiwiZWwiLCJjcmVhdGVFbGVtZW50IiwiTWF0aCIsInJvdW5kIiwicmVtb3ZlIiwiYnlwYXNzIiwic3R5bGUiLCJ0cmFuc2Zvcm0iLCJzZW5kIiwidGh1bWIiLCJnZXRTdGVhbVRva2VuIiwidXNlckFnZW50IiwibmF2aWdhdG9yIiwidG9Mb3dlckNhc2UiLCJpbmRleE9mIiwidGtuIiwiZWxlY3Ryb24iLCJwYXRoIiwiZnMiLCJbb2JqZWN0IE9iamVjdF0iLCJqb2luIiwiYXBwIiwicmVtb3RlIiwiZ2V0UGF0aCIsInBhcnNlIiwicmVhZEZpbGVTeW5jIiwicmVhZEZpbGUiLCJ3cml0ZUZpbGVTeW5jIiwicmVxdWlyZSIsIlN0b3JlIiwiVXBkYXRlR2FtZXNKU09OIiwic3RlYW1Ub2tlbiIsIlRva2VuTWFuYWdlciIsImdhbWVfY291bnQiLCJnYW1lRGF0YSIsInN0b3JlIiwic2V0IiwicG9wdWxhdGVHcmlkIiwiZ3JpZCIsImdldEVsZW1lbnRCeUlkIiwiX2xvb3BfMSIsImdyaWRIdG1sIiwiZWxlbWVudCIsImNsYXNzTmFtZSIsIm9uY2xpY2siLCJnYW1lQ2xpY2tlZCIsImlubmVySFRNTCIsImFwcGVuZENoaWxkIiwiX0Nhcm91c2VsX19XRUJQQUNLX0lNUE9SVEVEX01PRFVMRV8wX18iLCJfTGlicmFyeV9fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMV9fIiwiaG9tZSIsImxvYWQiLCJhZGRDbGFzcyIsImlucHV0IiwiZm9jdXMiLCJmaW5kIiwib24iLCJjaGVja2VkIiwicHJvcCIsInJlbW92ZUNsYXNzIiwiaGFzQ2xhc3MiXSwibWFwcGluZ3MiOiJhQUNBLElBQUFBLEVBQUEsR0FHQSxTQUFBQyxFQUFBQyxHQUdBLEdBQUFGLEVBQUFFLEdBQ0EsT0FBQUYsRUFBQUUsR0FBQUMsUUFHQSxJQUFBQyxFQUFBSixFQUFBRSxHQUFBLENBQ0FHLEVBQUFILEVBQ0FJLEdBQUEsRUFDQUgsUUFBQSxJQVVBLE9BTkFJLEVBQUFMLEdBQUFNLEtBQUFKLEVBQUFELFFBQUFDLElBQUFELFFBQUFGLEdBR0FHLEVBQUFFLEdBQUEsRUFHQUYsRUFBQUQsUUFLQUYsRUFBQVEsRUFBQUYsRUFHQU4sRUFBQVMsRUFBQVYsRUFHQUMsRUFBQVUsRUFBQSxTQUFBUixFQUFBUyxFQUFBQyxHQUNBWixFQUFBYSxFQUFBWCxFQUFBUyxJQUNBRyxPQUFBQyxlQUFBYixFQUFBUyxFQUFBLENBQTBDSyxZQUFBLEVBQUFDLElBQUFMLEtBSzFDWixFQUFBa0IsRUFBQSxTQUFBaEIsR0FDQSxvQkFBQWlCLGVBQUFDLGFBQ0FOLE9BQUFDLGVBQUFiLEVBQUFpQixPQUFBQyxZQUFBLENBQXdEQyxNQUFBLFdBRXhEUCxPQUFBQyxlQUFBYixFQUFBLGNBQWlEbUIsT0FBQSxLQVFqRHJCLEVBQUFzQixFQUFBLFNBQUFELEVBQUFFLEdBRUEsR0FEQSxFQUFBQSxJQUFBRixFQUFBckIsRUFBQXFCLElBQ0EsRUFBQUUsRUFBQSxPQUFBRixFQUNBLEtBQUFFLEdBQUEsaUJBQUFGLFFBQUFHLFdBQUEsT0FBQUgsRUFDQSxJQUFBSSxFQUFBWCxPQUFBWSxPQUFBLE1BR0EsR0FGQTFCLEVBQUFr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Q1JBLEVBQVEsa0JDN0NSRyxFQUFBRCxRQUFBZ0gsUUFBQSx1QkNBQS9HLEVBQUFELFFBQUFnSCxRQUFBIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCJcIjtcblxuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKF9fd2VicGFja19yZXF1aXJlX18ucyA9IDYpO1xuIiwidmFyIEdhbWUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBHYW1lKG5hbWUsIGFwcGlkLCB0aHVtYm5haWwsIGxhdW5jaGVyLCBsYXVuY2hlcklELCBpc0luc3RhbGxlZCwgbG9jYWxQYXRoKSB7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLmFwcGlkID0gYXBwaWQ7XHJcbiAgICAgICAgdGhpcy50aHVtYm5haWwgPSB0aHVtYm5haWw7XHJcbiAgICAgICAgdGhpcy5sYXVuY2hlciA9IGxhdW5jaGVyO1xyXG4gICAgICAgIHRoaXMubGF1bmNoZXJJRCA9IGxhdW5jaGVySUQ7XHJcbiAgICAgICAgdGhpcy5pc0luc3RhbGxlZCA9IGlzSW5zdGFsbGVkO1xyXG4gICAgICAgIHRoaXMubG9jYWxQYXRoID0gbG9jYWxQYXRoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEdhbWU7XHJcbn0oKSk7XHJcbmV4cG9ydCB7IEdhbWUgfTtcclxuZXhwb3J0IHZhciBsYXVuY2hlcjtcclxuKGZ1bmN0aW9uIChsYXVuY2hlcikge1xyXG4gICAgbGF1bmNoZXJbbGF1bmNoZXJbXCJMb2NhbE9ubHlcIl0gPSAwXSA9IFwiTG9jYWxPbmx5XCI7XHJcbiAgICBsYXVuY2hlcltsYXVuY2hlcltcIlN0ZWFtXCJdID0gMV0gPSBcIlN0ZWFtXCI7XHJcbn0pKGxhdW5jaGVyIHx8IChsYXVuY2hlciA9IHt9KSk7XHJcbiIsIi8vaW1wb3J0IHtHYW1lfSBmcm9tIFwiLi9MaWJyYXJ5XCJcclxuaW1wb3J0IHsgR2FtZSwgbGF1bmNoZXIgfSBmcm9tIFwiLi9HYW1lXCI7XHJcbmltcG9ydCB7IGdldFN0ZWFtVG9rZW4gfSBmcm9tIFwiLi9Ub2tlbk1hbmFnZXJcIjtcclxudmFyIGlwY1JlbmRlcmVyID0gcmVxdWlyZSgnZWxlY3Ryb24nKS5pcGNSZW5kZXJlcjtcclxudmFyIHNlbGVjdGVkSW5kZXggPSA1O1xyXG52YXIgY2Fyb3VzZWw7XHJcbnZhciBhbmdsZSA9IDA7XHJcbnZhciBTZWxlY3RlZFJlY2VudEdhbWVzID0gW107XHJcbnZhciBsYXN0c2VsZWN0ZWQ7XHJcbmV4cG9ydCBmdW5jdGlvbiBzZXR1cCgpIHtcclxuICAgIHNlbGVjdGVkSW5kZXggPSA1O1xyXG4gICAgY2Fyb3VzZWwgPSBudWxsO1xyXG4gICAgYW5nbGUgPSAwO1xyXG4gICAgU2VsZWN0ZWRSZWNlbnRHYW1lcyA9IFtdO1xyXG4gICAgbGFzdHNlbGVjdGVkID0gbnVsbDtcclxuICAgIHNlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgLy9HZXQgcmVjZW50IHBsYXllZCBnYW1lIGZyb20gc3RlYW0vL1xyXG4gICAgY2Fyb3VzZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLmNhcm91c2VsXCIpO1xyXG4gICAgJC5nZXRKU09OKFwiaHR0cDovL2FwaS5zdGVhbXBvd2VyZWQuY29tL0lQbGF5ZXJTZXJ2aWNlL0dldFJlY2VudGx5UGxheWVkR2FtZXMvdjAwMDEvP2tleT03QzIxOEU4RDEzNDdDM0NENkNCODExN0U1RUQ1MzNCQyZzdGVhbWlkPVwiICsgZ2V0U3RlYW1Ub2tlbigpICsgXCImZm9ybWF0PWpzb25cIiwgSlNPTiwgZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICBpZiAoZGF0YS5yZXNwb25zZS50b3RhbF9jb3VudCA9PSAwKSB7IC8vIG51bGwgY2hlY2sgdG8gcHJldmVudCBlcnJvciB0aGVyZSBpcyBubyByZWNlbnQgZ2FtZVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIm5vIHJlY2VudCBwbGF5ZWQgZ2FtZXNcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIFNlbGVjdGVkUmVjZW50R2FtZXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEucmVzcG9uc2UudG90YWxfY291bnQ7IGkrKykgLy9PYmplY3Qua2V5cyhkYXRhLnJlc3BvbnNlLmdhbWVzWzBdKSBjb21wdGUgbGUgbm9tYnJlIGRlIGNsw6kgYSBwYXJ0aXIgZGUgMFxyXG4gICAgICAgICB7XHJcbiAgICAgICAgICAgIHZhciBnYW1lID0gZGF0YS5yZXNwb25zZS5nYW1lc1tpXTtcclxuICAgICAgICAgICAgU2VsZWN0ZWRSZWNlbnRHYW1lc1tpXSA9IG5ldyBHYW1lTWV0YShnYW1lLmFwcGlkLCBnYW1lLm5hbWUsIGdhbWUuaW1nX2xvZ29fdXJsKTtcclxuICAgICAgICAgICAgaWYgKGkgKyAxID09IGRhdGEucmVzcG9uc2UudG90YWxfY291bnQpIHtcclxuICAgICAgICAgICAgICAgIGluaUNhbGxiYWNrKFNlbGVjdGVkUmVjZW50R2FtZXMpO1xyXG4gICAgICAgICAgICB9IC8vbGF1bmNoIHNjcmlwdCB1c2VyIHZhcmlhYmxlIGFmdGVyIGFsbCBjYWxsYmFja3MgYXJlIGZpbmlzaGVkXHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gaW5pQ2FsbGJhY2soU2VsZWN0ZWRSZWNlbnRHYW1lcykge1xyXG4gICAgLy9BZGQgcmVjZW50IHBsYXllZCBnYW1lIHRvIGNhcm91c2VsLy9cclxuICAgIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShcImNhcm91c2VsX19jZWxsXCIpOyAvL2FzIGFueSBiZWNhdXNlIHdlIHdhbnQgYSBIVE1MaW1hZ2UgY29sbGVjdGlvbiBhbmQgaHRtbGVsZW1lbnQgaXMgbm90IGdlbmVyaWNcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykgLy9sb29wIGludG8gY2Fyb3VzZWxfY2VsbCB0byBhZGQgZXZlbnQgbGlzdGVuZXIgKyB0aHVtYlxyXG4gICAgIHtcclxuICAgICAgICBpZiAoaSA8IFNlbGVjdGVkUmVjZW50R2FtZXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGxpc3RbaV0uc3JjID0gXCJodHRwczovL3N0ZWFtY2RuLWEuYWthbWFpaGQubmV0L3N0ZWFtL2FwcHMvXCIgKyBTZWxlY3RlZFJlY2VudEdhbWVzW2ldLkFwcElkICsgXCIvaGVhZGVyLmpwZ1wiO1xyXG4gICAgICAgICAgICBsaXN0W2ldLmRhdGFzZXQuZ2FtZSA9IEpTT04uc3RyaW5naWZ5KG5ldyBHYW1lKG51bGwsIFNlbGVjdGVkUmVjZW50R2FtZXNbaV0uQXBwSWQsIGxpc3RbaV0uc3JjbiwgbGF1bmNoZXIuU3RlYW0sIG51bGwsIG51bGwsIG51bGwpKTtcclxuICAgICAgICAgICAgbGlzdFtpXS5pZCA9IGkudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgbGlzdFtpXS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGV2ID0gZXZlbnQudGFyZ2V0O1xyXG4gICAgICAgICAgICAgICAgcm90YXRlQ2Fyb3VzZWwoZXYsIGZhbHNlKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBsaXN0W2ldLmNsYXNzTGlzdC5hZGQoXCJkaXNhYmxlZFwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXIgZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdVc2VsZXNzLWRpdicpO1xyXG4gICAgZWwuaWQgPSBNYXRoLnJvdW5kKFNlbGVjdGVkUmVjZW50R2FtZXMubGVuZ3RoIC8gMikudG9TdHJpbmcoKTsgLy8gdHJpY2sgdGhlIGNhcm91c2Vscm9hdGUgdG8gd29yayBldmVuIHdpaG91dCBhIFRhcmdldEV2ZW50IHJlZmVyZW5jZVxyXG4gICAgcm90YXRlQ2Fyb3VzZWwoZWwsIGZhbHNlKTtcclxuICAgIGVsLnJlbW92ZTtcclxufVxyXG5mdW5jdGlvbiByb3RhdGVDYXJvdXNlbCh0YXJnZXQsIGJ5cGFzcykge1xyXG4gICAgaWYgKGxhc3RzZWxlY3RlZCA9PSBudWxsKSB7XHJcbiAgICAgICAgbGFzdHNlbGVjdGVkID0gdGFyZ2V0O1xyXG4gICAgfVxyXG4gICAgaWYgKGxhc3RzZWxlY3RlZCAhPSB0YXJnZXQpIHtcclxuICAgICAgICBsYXN0c2VsZWN0ZWQuY2xhc3NMaXN0LnJlbW92ZShcImhpZ2xpZ2h0XCIpO1xyXG4gICAgfVxyXG4gICAgYW5nbGUgPSAoc2VsZWN0ZWRJbmRleCAtIHRhcmdldC5pZCkgKiA0MCArIGFuZ2xlOyAvLyo0MCB0byBjb252ZXJ0IGluIGFuZ2xlIHN0ZXBcclxuICAgIC8vTGF1bmNoIHRoZSBnYW1lIG9uIHRoZSBmcm9udCBvZiB0aGUgY2Fyb3VzZWxcclxuICAgIGlmIChzZWxlY3RlZEluZGV4ID09IHRhcmdldC5pZCAmJiBieXBhc3MgPT0gZmFsc2UpIC8vIHRoZSBieXBhc3MgaXMgZm9yIGluaVxyXG4gICAgIHtcclxuICAgICAgICBpcGNSZW5kZXJlci5zZW5kKCdMYXVuY2hHYW1lJywgdGFyZ2V0LmRhdGFzZXQuZ2FtZSk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGFyZ2V0LmNsYXNzTGlzdC5hZGQoXCJoaWdsaWdodFwiKTsgLy8gbWFrZSB0aGUgY2VudHJhbCBjZWxsIGJpZ2dlclxyXG4gICAgY2Fyb3VzZWwuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGVaKC0xMDAwcHgpIHJvdGF0ZVkoXCIgKyBhbmdsZSArIFwiZGVnKVwiO1xyXG4gICAgc2VsZWN0ZWRJbmRleCA9IHRhcmdldC5pZDtcclxuICAgIGxhc3RzZWxlY3RlZCA9IHRhcmdldDtcclxufVxyXG52YXIgR2FtZU1ldGEgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XHJcbiAgICBmdW5jdGlvbiBHYW1lTWV0YShBcHBJZCwgbmFtZSwgdGh1bWIpIHtcclxuICAgICAgICB0aGlzLkFwcElkID0gQXBwSWQ7XHJcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLnRodW1iID0gdGh1bWI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gR2FtZU1ldGE7XHJcbn0oKSk7XHJcbiIsIi8vV2lsbCByZXR1cm4gdGhlIHN0ZWFtIHRva2VuIG9mIHRoZSB1c2VyIGlmIGhlIGlzIGxvZ2dlZCBpbi4gRWxzZSwgaXQgd2lsbCByZXR1cm4gYSBkZWZhdWx0IHN0ZWFtIHRva2VuIChmb3IgZGViYnVnKVxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RlYW1Ub2tlbigpIHtcclxuICAgIHZhciB1c2VyQWdlbnQgPSBuYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zb2xlLmxvZyhcIkFnZW50OiBcIiArIHVzZXJBZ2VudCk7XHJcbiAgICB2YXIgaXNFbGVjdHJvbiA9IHVzZXJBZ2VudC5pbmRleE9mKFwiIGVsZWN0cm9uL1wiKSA+IC0xO1xyXG4gICAgaWYgKGlzRWxlY3Ryb24pIHtcclxuICAgICAgICB2YXIgU3RvcmUgPSByZXF1aXJlKFwiLi4vanMvc3RvcmVcIik7XHJcbiAgICAgICAgdmFyIHRrblN0b3JlID0gbmV3IFN0b3JlKFwiY29uZmlnXCIpO1xyXG4gICAgICAgIHZhciB0a24gPSB0a25TdG9yZS5nZXQoXCJzdGVhbVwiKTtcclxuICAgICAgICByZXR1cm4gdGtuICE9IG51bGwgPyB0a24gOiBcIjc2NTYxMTk4MTk2NDMwNjU1XCI7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhcIkFHRU5UIElTIE5PVCBFTEVDVFJPTiwgTk8gSEFORExJTkcgRk9SIE5PV1wiKTtcclxuICAgICAgICByZXR1cm4gXCI3NjU2MTE5ODE5NjQzMDY1NVwiOyAvL0EgZGVmYXVsdCBzdGVhbSBjbGllbnQgaWQgKGZvciB0ZXN0aW5nIG9ubHkpXHJcbiAgICB9XHJcbn1cclxuIiwiY29uc3QgZWxlY3Ryb24gPSByZXF1aXJlKFwiZWxlY3Ryb25cIik7XHJcbmNvbnN0IHBhdGggPSByZXF1aXJlKFwicGF0aFwiKTtcclxuY29uc3QgZnMgPSByZXF1aXJlKFwiZnNcIik7XHJcblxyXG5jbGFzcyBTdG9yZVxyXG57ICAgXHJcbiAgICAvL0NyZWF0ZSBhIFN0b3JlIGNsYXNzLCBzZXQgdGhlIGZpbGUgcGF0aCBhbmQgcmVhZCB0aGUgZmlsZSBpbiBvcmRlciB0byByZWR1Y2UgZGlzayBhY2Nlc3MuXHJcbiAgICBjb25zdHJ1Y3RvcihuYW1lKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMucGF0aCA9IHBhdGguam9pbigoZWxlY3Ryb24uYXBwIHx8IGVsZWN0cm9uLnJlbW90ZS5hcHApLmdldFBhdGgoXCJ1c2VyRGF0YVwiKSwgbmFtZSArIFwiLmpzb25cIik7XHJcbiAgICAgICAgdGhpcy5kYXRhID0gcmVhZEZpbGUodGhpcy5wYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQoa2V5KVxyXG4gICAge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRhdGFba2V5XTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQoa2V5LCB2YWx1ZSlcclxuICAgIHtcclxuICAgICAgICB0aGlzLmRhdGFba2V5XSA9IHZhbHVlO1xyXG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmModGhpcy5wYXRoLCBKU09OLnN0cmluZ2lmeSh0aGlzLmRhdGEpKTtcclxuICAgIH1cclxuXHJcbiAgICAvL1dhcyB0cnlpbmcgdG8gY3JlYXRlIGEgcHJvcGVyIG1ldGhvZCBmb3Igc2F2aW5nIHRoZSBnYW1lcyBidXQgSSBkb24ndCBoYXZlIHRpbWUuXHJcbiAgICAvLyBzZXRHYW1lcyhnYW1lcylcclxuICAgIC8vIHtcclxuICAgIC8vICAgICBmb3IoaSA9IDA7IGkgPCBnYW1lcy5MZW5ndGg7IGkrKylcclxuICAgIC8vICAgICB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMuZGF0YVtcImdhbWVzXCJdLlxyXG4gICAgLy8gICAgIH1cclxuICAgIC8vIH1cclxufVxyXG5cclxuZnVuY3Rpb24gcmVhZEZpbGUocGF0aClcclxue1xyXG4gICAgdHJ5XHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKHBhdGgpKTtcclxuICAgIH1cclxuICAgIGNhdGNoXHJcbiAgICB7XHJcbiAgICAgICAgcmV0dXJuIHt9O1xyXG4gICAgfVxyXG59XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IFN0b3JlOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImVsZWN0cm9uXCIpOyIsInZhciBTdG9yZSA9IHJlcXVpcmUoXCIuLi9qcy9zdG9yZVwiKTtcclxuaW1wb3J0ICogYXMgVG9rZW5NYW5hZ2VyIGZyb20gXCIuL1Rva2VuTWFuYWdlclwiO1xyXG5pbXBvcnQgeyBHYW1lLCBsYXVuY2hlciB9IGZyb20gXCIuL0dhbWVcIjtcclxuLy9SZWFkIHRoZSBnYW1lLmpzb24gZmlsZSBhbmQgcmV0dXJuIHRoZSBsaXN0IG9mIGRldGVjdGVkIGdhbWVzLlxyXG5leHBvcnQgZnVuY3Rpb24gTG9hZEdhbWVzKCkge1xyXG4gICAgdmFyIHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtcclxuICAgIHZhciBpc0VsZWN0cm9uID0gdXNlckFnZW50LmluZGV4T2YoXCIgZWxlY3Ryb24vXCIpID4gLTE7XHJcbiAgICBpZiAoaXNFbGVjdHJvbikge1xyXG4gICAgICAgIHZhciBzdG9yZSA9IG5ldyBTdG9yZShcIkdhbWVzXCIpO1xyXG4gICAgICAgIHJldHVybiBzdG9yZS5nZXQoXCJnYW1lc1wiKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwiQUdFTlQgSVMgTk9UIEVMRUNUUk9OLCBOTyBIQU5ETElORyBGT1IgTk9XXCIpO1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG59XHJcbi8vUmVmcmVzaCB0aGUgZ2FtZS5qc29uIGZpbGUgd2l0aCBjb250ZW50IGZyb20gdGhlIGxvZ2dlZCBpbiBhY2NvdW50c1xyXG5leHBvcnQgZnVuY3Rpb24gVXBkYXRlR2FtZXNKU09OKCkge1xyXG4gICAgQWRkU3RlYW1HYW1lcygpO1xyXG59XHJcbi8vQWRkIGFsbCBzdGVhbSBnYW1lcyB0byB0aGUgZGF0YWJhc2UuXHJcbmZ1bmN0aW9uIEFkZFN0ZWFtR2FtZXMoKSB7XHJcbiAgICB2YXIgc3RlYW1Ub2tlbiA9IFRva2VuTWFuYWdlci5nZXRTdGVhbVRva2VuKCk7XHJcbiAgICAkLmdldChcImh0dHBzOi8vYXBpLnN0ZWFtcG93ZXJlZC5jb20vSVBsYXllclNlcnZpY2UvR2V0T3duZWRHYW1lcy92MS9cIiArXHJcbiAgICAgICAgXCI/a2V5PTdDMjE4RThEMTM0N0MzQ0Q2Q0I4MTE3RTVFRDUzM0JDXCIgK1xyXG4gICAgICAgIFwiJnN0ZWFtaWQ9XCIgKyBzdGVhbVRva2VuICtcclxuICAgICAgICBcIiZpbmNsdWRlX2FwcGluZm89MVwiICtcclxuICAgICAgICBcIiZpbmNsdWRlX3BsYXllZF9mcmVlX2dhbWVzPTFcIiArXHJcbiAgICAgICAgXCImYXBwaWRzX2ZpbHRlcj0mZm9ybWF0PWpzb25cIiwgZnVuY3Rpb24gKGRhdGEpIHtcclxuICAgICAgICB2YXIgZ2FtZXMgPSBbXTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRhdGEucmVzcG9uc2UuZ2FtZV9jb3VudDsgaSsrKSB7XHJcbiAgICAgICAgICAgIHZhciBnYW1lRGF0YSA9IGRhdGEucmVzcG9uc2UuZ2FtZXNbaV07XHJcbiAgICAgICAgICAgIHZhciB0aHVtYm5haWwgPSBcImh0dHBzOi8vc3RlYW1jZG4tYS5ha2FtYWloZC5uZXQvc3RlYW0vYXBwcy9cIiArIGdhbWVEYXRhLmFwcGlkICsgXCIvaGVhZGVyLmpwZ1wiO1xyXG4gICAgICAgICAgICBnYW1lc1tpXSA9IG5ldyBHYW1lKGdhbWVEYXRhLm5hbWUsIGdhbWVEYXRhLmFwcGlkLCB0aHVtYm5haWwsIGxhdW5jaGVyLlN0ZWFtLCBudWxsLCB0cnVlLCBudWxsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy9TaG91bGQgdXNlIGEgY29va2llIGlmIHRoZSB1c2VyIGlzIGluIHRoZSBicm93c2VyXHJcbiAgICAgICAgdmFyIHN0b3JlID0gbmV3IFN0b3JlKFwiR2FtZXNcIik7XHJcbiAgICAgICAgc3RvcmUuc2V0KFwiZ2FtZXNcIiwgZ2FtZXMpOyAvL1NIT1VMRE4nVCBETyBJVCBMSUtFIFRIQVQsIEl0IG92ZXJyaWRlIGV2ZXJ5IGdhbWVzIGluIHRoZSBqc29uLlxyXG4gICAgfSk7XHJcbn1cclxuIiwiaW1wb3J0IHsgTG9hZEdhbWVzLCBVcGRhdGVHYW1lc0pTT04gfSBmcm9tIFwiLi9HYW1lTG9hZGVyXCI7XHJcbnZhciBpcGNSZW5kZXJlciA9IHJlcXVpcmUoJ2VsZWN0cm9uJykuaXBjUmVuZGVyZXI7XHJcbi8vV2lsbCBnZXQgdGhlIGdhbWVzIGluIHRoZSBnYW1lLmpzb24gZmlsZSBhbmQgZGlzcGxheSB0aGVtIGluIGEgZ3JpZCB2aWV3LiBXaWxsIGFsc28gcmVmcmVzaCB0aGUgZ2FtZS5qc29uLlxyXG5leHBvcnQgZnVuY3Rpb24gcG9wdWxhdGVHcmlkKCkge1xyXG4gICAgdmFyIGdhbWVzID0gTG9hZEdhbWVzKCk7XHJcbiAgICBVcGRhdGVHYW1lc0pTT04oKTtcclxuICAgIHZhciBncmlkID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJsaWJyYXJ5XCIpO1xyXG4gICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdmFyIGdhbWUgPSBnYW1lc1tpXTtcclxuICAgICAgICB2YXIgZ3JpZEh0bWwgPSBcIjxpbWcgc3JjPSdcIiArIGdhbWUudGh1bWJuYWlsICsgXCInLz4gPHA+XCIgKyBnYW1lLm5hbWUgKyBcIjwvcD5cIjtcclxuICAgICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XHJcbiAgICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBcImdhbWVcIjtcclxuICAgICAgICBlbGVtZW50Lm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7IG9uR2FtZUNsaWNrKGdhbWUpOyB9O1xyXG4gICAgICAgIGlmIChnYW1lLmlzSW5zdGFsbGVkKVxyXG4gICAgICAgICAgICBncmlkSHRtbCArPSAnPGltZyBzcmM9XCIuLi8uLi9kaXN0L2RyYXdhYmxlcy9pbnN0YWxsZWQuc3ZnXCIgc3R5bGU9XCJwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgcmlnaHQ6IDA7IHBhZGRpbmc6IDVweDtcIi8+JztcclxuICAgICAgICBlbGVtZW50LmlubmVySFRNTCA9IGdyaWRIdG1sO1xyXG4gICAgICAgIGlmIChncmlkICE9IG51bGwpXHJcbiAgICAgICAgICAgIGdyaWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XHJcbiAgICB9O1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBnYW1lcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIF9sb29wXzEoKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBvbkdhbWVDbGljayhnYW1lQ2xpY2tlZCkge1xyXG4gICAgLy9TZW5kIHRoZSBjbGljayBldmVudCB0byB0aGUgbm9kZUpTIHByb2Nlc3MgdG8gaGFuZGxlIGdhbWUgbGF1bmNoLlxyXG4gICAgaXBjUmVuZGVyZXIuc2VuZChcIkxhdW5jaEdhbWVcIiwgZ2FtZUNsaWNrZWQpO1xyXG59XHJcbiIsImltcG9ydCB7IHNldHVwIH0gZnJvbSBcIi4vQ2Fyb3VzZWxcIjtcclxuaW1wb3J0IHsgcG9wdWxhdGVHcmlkIH0gZnJvbSBcIi4vTGlicmFyeVwiO1xyXG52YXIgU3RvcmUgPSByZXF1aXJlKFwiLi4vanMvc3RvcmVcIik7XHJcbi8vSW5pdGlhbGl6YXRpb24gb2YgdGhlIGFwcCAobG9hZCB0aGUgaG9tZSBwYWdlLCBjaGVjayBpZiB0aGUgdXNlciB3YW50cyB0byB1c2UgdGhlIGRhcmsgbW9kZSBhbmQgYWRkIGJ1dHRvbnMgY2xpY2tzKVxyXG4kKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBjb25maWcgPSBuZXcgU3RvcmUoXCJjb25maWdcIik7XHJcbiAgICBpZiAoY29uZmlnLmdldChcImRhcmstbW9kZVwiKSkge1xyXG4gICAgICAgICQoXCIjYm9keVwiKS5hZGRDbGFzcyhcImRhcmstbW9kZVwiKTtcclxuICAgIH1cclxuICAgIGhvbWUoKTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgaG9tZSgpOyB9O1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hCdG5cIikub25jbGljayA9IGZ1bmN0aW9uICgpIHsgb3BlblNlYXJjaCgpOyB9O1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZXR0aW5nc0J0blwiKS5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeyBvcGVuU2V0dGluZ3MoKTsgfTtcclxufSk7XHJcbi8vTG9hZCB0aGUgaG9tZSBwYWdlIChjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGljayB0aGUgaG9tZSBidXR0b24pXHJcbmZ1bmN0aW9uIGhvbWUoKSB7XHJcbiAgICAkKFwiI2NvbnRlbnRcIikubG9hZChcImZyYWdtZW50cy9ob21lLmh0bWxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNldHVwKCk7XHJcbiAgICAgICAgcG9wdWxhdGVHcmlkKCk7XHJcbiAgICB9KTtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwidGl0bGVcIikuaW5uZXJIVE1MID0gXCJFQVVcIjtcclxufVxyXG5mdW5jdGlvbiBvcGVuU2VhcmNoKCkge1xyXG4gICAgdmFyIGlucHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzZWFyY2hJbnB1dFwiKTtcclxuICAgIGlucHV0LnZhbHVlID0gXCJcIjtcclxuICAgIGlucHV0LmZvY3VzKCk7XHJcbn1cclxuLy9Mb2FkIHRoZSBzZXR0aW5ncyBtZW51IGFuZCBzZXQgdGhlIHNldHRpbmdzIHRvIHRoZWlyIGdvb2Qgc3RhdGUuXHJcbmZ1bmN0aW9uIG9wZW5TZXR0aW5ncygpIHtcclxuICAgICQoXCIjY29udGVudFwiKS5sb2FkKFwiZnJhZ21lbnRzL3NldHRpbmdzLmh0bWxcIiwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICQoXCIuc3dpdGNoXCIpLmZpbmQoXCJpbnB1dFt0eXBlPWNoZWNrYm94XVwiKS5vbihcImNoYW5nZVwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIHZhciBjaGVja2VkID0gJCh0aGlzKS5wcm9wKFwiY2hlY2tlZFwiKTtcclxuICAgICAgICAgICAgaWYgKGNoZWNrZWQpXHJcbiAgICAgICAgICAgICAgICAkKFwiI2JvZHlcIikuYWRkQ2xhc3MoXCJkYXJrLW1vZGVcIik7XHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgICQoXCIjYm9keVwiKS5yZW1vdmVDbGFzcyhcImRhcmstbW9kZVwiKTtcclxuICAgICAgICAgICAgdmFyIHN0b3JlID0gbmV3IFN0b3JlKFwiY29uZmlnXCIpO1xyXG4gICAgICAgICAgICBzdG9yZS5zZXQoXCJkYXJrLW1vZGVcIiwgY2hlY2tlZCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCQoXCIjYm9keVwiKS5oYXNDbGFzcyhcImRhcmstbW9kZVwiKSlcclxuICAgICAgICAgICAgJChcIi5zd2l0Y2hcIikuZmluZChcImlucHV0W3R5cGU9Y2hlY2tib3hdXCIpLnByb3AoXCJjaGVja2VkXCIsIHRydWUpO1xyXG4gICAgfSk7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcInRpdGxlXCIpLmlubmVySFRNTCA9IFwiPGkgY2xhc3M9J2ljb24gZmFzIGZhLWFycm93LWxlZnQnPjwvaT4gIFNldHRpbmdzXCI7XHJcbn1cclxucmVxdWlyZShcIi4vTGlicmFyeVwiKTtcclxucmVxdWlyZShcIi4vQ2Fyb3VzZWxcIik7XHJcbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInBhdGhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZnNcIik7Il0sInNvdXJjZVJvb3QiOiIifQ==